
pluto:     file format elf32-tradbigmips

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .interp       0000002a  004000f4  004000f4  000000f4  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .reginfo      00000018  00400120  00400120  00000120  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA, LINK_ONCE_SAME_SIZE
  2 .dynamic      000000f0  00400138  00400138  00000138  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .hash         000014b4  00400228  00400228  00000228  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .dynsym       00003220  004016dc  004016dc  000016dc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .dynstr       00002b67  004048fc  004048fc  000048fc  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .text         000cc1c0  00407470  00407470  00007470  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  7 .rodata       00023980  004d3630  004d3630  000d3630  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  8 .data         00004970  10000000  10000000  000f7000  2**4
                  CONTENTS, ALLOC, LOAD, DATA
  9 .rld_map      00000004  10004970  10004970  000fb970  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 10 .got          00000c64  10004980  10004980  000fb980  2**4
                  CONTENTS, ALLOC, LOAD, DATA
 11 .sbss         0000000a  100055e8  100055e8  000fc5e8  2**3
                  ALLOC
 12 .bss          00013e84  10005600  10005600  000fc5f6  2**4
                  ALLOC
 13 .stab         00068dd8  00000000  00000000  000fc5f8  2**2
                  CONTENTS, READONLY, DEBUGGING
 14 .stabstr      0003ee2f  00000000  00000000  001653d0  2**0
                  CONTENTS, READONLY, DEBUGGING
 15 .comment      00000630  00000000  00000000  001a41ff  2**0
                  CONTENTS, READONLY
 16 .pdr          000064a0  00000000  00000000  001a4830  2**2
                  CONTENTS, READONLY
Disassembly of section .text:

00407470 <__start>:
  407470:	04100001 	bltzal	zero,407478 <__start+0x8>
  407474:	00000000 	nop
  407478:	3c1c0fc0 	lui	gp,0xfc0
  40747c:	279c54f8 	addiu	gp,gp,21752
  407480:	039fe021 	addu	gp,gp,ra
  407484:	0000f821 	move	ra,zero
  407488:	8fa40000 	lw	a0,0(sp)
  40748c:	27a50004 	addiu	a1,sp,4
  407490:	24860001 	addiu	a2,a0,1
  407494:	00063080 	sll	a2,a2,0x2
  407498:	00c53020 	add	a2,a2,a1
  40749c:	8f878868 	lw	a3,-30616(gp)
  4074a0:	27bdffe8 	addiu	sp,sp,-24
  4074a4:	8f8283e4 	lw	v0,-31772(gp)
  4074a8:	00000000 	nop
  4074ac:	afa20010 	sw	v0,16(sp)
  4074b0:	8f998180 	lw	t9,-32384(gp)
  4074b4:	00000000 	nop
  4074b8:	0320f809 	jalr	t9
  4074bc:	00000000 	nop
  4074c0:	27bd0018 	addiu	sp,sp,24
  4074c4:	1000ffff 	b	4074c4 <__start+0x54>
  4074c8:	00000000 	nop
  4074cc:	00000000 	nop
  4074d0:	8f998010 	lw	t9,-32752(gp)
  4074d4:	03e07821 	move	t7,ra
  4074d8:	0320f809 	jalr	t9
  4074dc:	2418031b 	li	t8,795
  4074e0:	8f998010 	lw	t9,-32752(gp)
  4074e4:	03e07821 	move	t7,ra
  4074e8:	0320f809 	jalr	t9
  4074ec:	24180315 	li	t8,789
  4074f0:	8f998010 	lw	t9,-32752(gp)
  4074f4:	03e07821 	move	t7,ra
  4074f8:	0320f809 	jalr	t9
  4074fc:	24180311 	li	t8,785
  407500:	8f998010 	lw	t9,-32752(gp)
  407504:	03e07821 	move	t7,ra
  407508:	0320f809 	jalr	t9
  40750c:	2418030d 	li	t8,781
  407510:	8f998010 	lw	t9,-32752(gp)
  407514:	03e07821 	move	t7,ra
  407518:	0320f809 	jalr	t9
  40751c:	2418030b 	li	t8,779
  407520:	8f998010 	lw	t9,-32752(gp)
  407524:	03e07821 	move	t7,ra
  407528:	0320f809 	jalr	t9
  40752c:	24180301 	li	t8,769
  407530:	8f998010 	lw	t9,-32752(gp)
  407534:	03e07821 	move	t7,ra
  407538:	0320f809 	jalr	t9
  40753c:	24180300 	li	t8,768
  407540:	8f998010 	lw	t9,-32752(gp)
  407544:	03e07821 	move	t7,ra
  407548:	0320f809 	jalr	t9
  40754c:	241802fd 	li	t8,765
  407550:	8f998010 	lw	t9,-32752(gp)
  407554:	03e07821 	move	t7,ra
  407558:	0320f809 	jalr	t9
  40755c:	241802fb 	li	t8,763
  407560:	8f998010 	lw	t9,-32752(gp)
  407564:	03e07821 	move	t7,ra
  407568:	0320f809 	jalr	t9
  40756c:	241802fa 	li	t8,762
  407570:	8f998010 	lw	t9,-32752(gp)
  407574:	03e07821 	move	t7,ra
  407578:	0320f809 	jalr	t9
  40757c:	241802f2 	li	t8,754
  407580:	8f998010 	lw	t9,-32752(gp)
  407584:	03e07821 	move	t7,ra
  407588:	0320f809 	jalr	t9
  40758c:	241802f1 	li	t8,753
  407590:	8f998010 	lw	t9,-32752(gp)
  407594:	03e07821 	move	t7,ra
  407598:	0320f809 	jalr	t9
  40759c:	241802ee 	li	t8,750
  4075a0:	8f998010 	lw	t9,-32752(gp)
  4075a4:	03e07821 	move	t7,ra
  4075a8:	0320f809 	jalr	t9
  4075ac:	241802ec 	li	t8,748
  4075b0:	8f998010 	lw	t9,-32752(gp)
  4075b4:	03e07821 	move	t7,ra
  4075b8:	0320f809 	jalr	t9
  4075bc:	241802e8 	li	t8,744
  4075c0:	8f998010 	lw	t9,-32752(gp)
  4075c4:	03e07821 	move	t7,ra
  4075c8:	0320f809 	jalr	t9
  4075cc:	241802dc 	li	t8,732
  4075d0:	8f998010 	lw	t9,-32752(gp)
  4075d4:	03e07821 	move	t7,ra
  4075d8:	0320f809 	jalr	t9
  4075dc:	241802da 	li	t8,730
  4075e0:	8f998010 	lw	t9,-32752(gp)
  4075e4:	03e07821 	move	t7,ra
  4075e8:	0320f809 	jalr	t9
  4075ec:	241802d7 	li	t8,727
  4075f0:	8f998010 	lw	t9,-32752(gp)
  4075f4:	03e07821 	move	t7,ra
  4075f8:	0320f809 	jalr	t9
  4075fc:	241802d6 	li	t8,726
  407600:	8f998010 	lw	t9,-32752(gp)
  407604:	03e07821 	move	t7,ra
  407608:	0320f809 	jalr	t9
  40760c:	241802d3 	li	t8,723
  407610:	8f998010 	lw	t9,-32752(gp)
  407614:	03e07821 	move	t7,ra
  407618:	0320f809 	jalr	t9
  40761c:	241802c3 	li	t8,707
  407620:	8f998010 	lw	t9,-32752(gp)
  407624:	03e07821 	move	t7,ra
  407628:	0320f809 	jalr	t9
  40762c:	241802be 	li	t8,702
  407630:	8f998010 	lw	t9,-32752(gp)
  407634:	03e07821 	move	t7,ra
  407638:	0320f809 	jalr	t9
  40763c:	241802a9 	li	t8,681
  407640:	8f998010 	lw	t9,-32752(gp)
  407644:	03e07821 	move	t7,ra
  407648:	0320f809 	jalr	t9
  40764c:	241802a3 	li	t8,675
  407650:	8f998010 	lw	t9,-32752(gp)
  407654:	03e07821 	move	t7,ra
  407658:	0320f809 	jalr	t9
  40765c:	241802a1 	li	t8,673
  407660:	8f998010 	lw	t9,-32752(gp)
  407664:	03e07821 	move	t7,ra
  407668:	0320f809 	jalr	t9
  40766c:	24180291 	li	t8,657
  407670:	8f998010 	lw	t9,-32752(gp)
  407674:	03e07821 	move	t7,ra
  407678:	0320f809 	jalr	t9
  40767c:	2418028b 	li	t8,651
  407680:	8f998010 	lw	t9,-32752(gp)
  407684:	03e07821 	move	t7,ra
  407688:	0320f809 	jalr	t9
  40768c:	24180289 	li	t8,649
  407690:	8f998010 	lw	t9,-32752(gp)
  407694:	03e07821 	move	t7,ra
  407698:	0320f809 	jalr	t9
  40769c:	24180287 	li	t8,647
  4076a0:	8f998010 	lw	t9,-32752(gp)
  4076a4:	03e07821 	move	t7,ra
  4076a8:	0320f809 	jalr	t9
  4076ac:	24180286 	li	t8,646
  4076b0:	8f998010 	lw	t9,-32752(gp)
  4076b4:	03e07821 	move	t7,ra
  4076b8:	0320f809 	jalr	t9
  4076bc:	24180281 	li	t8,641
  4076c0:	8f998010 	lw	t9,-32752(gp)
  4076c4:	03e07821 	move	t7,ra
  4076c8:	0320f809 	jalr	t9
  4076cc:	2418027e 	li	t8,638
  4076d0:	8f998010 	lw	t9,-32752(gp)
  4076d4:	03e07821 	move	t7,ra
  4076d8:	0320f809 	jalr	t9
  4076dc:	24180279 	li	t8,633
  4076e0:	8f998010 	lw	t9,-32752(gp)
  4076e4:	03e07821 	move	t7,ra
  4076e8:	0320f809 	jalr	t9
  4076ec:	24180271 	li	t8,625
  4076f0:	8f998010 	lw	t9,-32752(gp)
  4076f4:	03e07821 	move	t7,ra
  4076f8:	0320f809 	jalr	t9
  4076fc:	24180269 	li	t8,617
  407700:	8f998010 	lw	t9,-32752(gp)
  407704:	03e07821 	move	t7,ra
  407708:	0320f809 	jalr	t9
  40770c:	24180264 	li	t8,612
  407710:	8f998010 	lw	t9,-32752(gp)
  407714:	03e07821 	move	t7,ra
  407718:	0320f809 	jalr	t9
  40771c:	2418025b 	li	t8,603
  407720:	8f998010 	lw	t9,-32752(gp)
  407724:	03e07821 	move	t7,ra
  407728:	0320f809 	jalr	t9
  40772c:	24180259 	li	t8,601
  407730:	8f998010 	lw	t9,-32752(gp)
  407734:	03e07821 	move	t7,ra
  407738:	0320f809 	jalr	t9
  40773c:	24180251 	li	t8,593
  407740:	8f998010 	lw	t9,-32752(gp)
  407744:	03e07821 	move	t7,ra
  407748:	0320f809 	jalr	t9
  40774c:	24180250 	li	t8,592
  407750:	8f998010 	lw	t9,-32752(gp)
  407754:	03e07821 	move	t7,ra
  407758:	0320f809 	jalr	t9
  40775c:	2418024a 	li	t8,586
  407760:	8f998010 	lw	t9,-32752(gp)
  407764:	03e07821 	move	t7,ra
  407768:	0320f809 	jalr	t9
  40776c:	24180243 	li	t8,579
  407770:	8f998010 	lw	t9,-32752(gp)
  407774:	03e07821 	move	t7,ra
  407778:	0320f809 	jalr	t9
  40777c:	2418022f 	li	t8,559
  407780:	8f998010 	lw	t9,-32752(gp)
  407784:	03e07821 	move	t7,ra
  407788:	0320f809 	jalr	t9
  40778c:	2418022a 	li	t8,554
  407790:	8f998010 	lw	t9,-32752(gp)
  407794:	03e07821 	move	t7,ra
  407798:	0320f809 	jalr	t9
  40779c:	24180229 	li	t8,553
  4077a0:	8f998010 	lw	t9,-32752(gp)
  4077a4:	03e07821 	move	t7,ra
  4077a8:	0320f809 	jalr	t9
  4077ac:	24180224 	li	t8,548
  4077b0:	8f998010 	lw	t9,-32752(gp)
  4077b4:	03e07821 	move	t7,ra
  4077b8:	0320f809 	jalr	t9
  4077bc:	24180221 	li	t8,545
  4077c0:	8f998010 	lw	t9,-32752(gp)
  4077c4:	03e07821 	move	t7,ra
  4077c8:	0320f809 	jalr	t9
  4077cc:	24180220 	li	t8,544
  4077d0:	8f998010 	lw	t9,-32752(gp)
  4077d4:	03e07821 	move	t7,ra
  4077d8:	0320f809 	jalr	t9
  4077dc:	24180218 	li	t8,536
  4077e0:	8f998010 	lw	t9,-32752(gp)
  4077e4:	03e07821 	move	t7,ra
  4077e8:	0320f809 	jalr	t9
  4077ec:	24180215 	li	t8,533
  4077f0:	8f998010 	lw	t9,-32752(gp)
  4077f4:	03e07821 	move	t7,ra
  4077f8:	0320f809 	jalr	t9
  4077fc:	2418020b 	li	t8,523
  407800:	8f998010 	lw	t9,-32752(gp)
  407804:	03e07821 	move	t7,ra
  407808:	0320f809 	jalr	t9
  40780c:	241801ff 	li	t8,511
  407810:	8f998010 	lw	t9,-32752(gp)
  407814:	03e07821 	move	t7,ra
  407818:	0320f809 	jalr	t9
  40781c:	241801f8 	li	t8,504
  407820:	8f998010 	lw	t9,-32752(gp)
  407824:	03e07821 	move	t7,ra
  407828:	0320f809 	jalr	t9
  40782c:	241801f6 	li	t8,502
  407830:	8f998010 	lw	t9,-32752(gp)
  407834:	03e07821 	move	t7,ra
  407838:	0320f809 	jalr	t9
  40783c:	241801f1 	li	t8,497
  407840:	8f998010 	lw	t9,-32752(gp)
  407844:	03e07821 	move	t7,ra
  407848:	0320f809 	jalr	t9
  40784c:	241801e9 	li	t8,489
  407850:	8f998010 	lw	t9,-32752(gp)
  407854:	03e07821 	move	t7,ra
  407858:	0320f809 	jalr	t9
  40785c:	241801e8 	li	t8,488
  407860:	8f998010 	lw	t9,-32752(gp)
  407864:	03e07821 	move	t7,ra
  407868:	0320f809 	jalr	t9
  40786c:	241801e7 	li	t8,487
  407870:	8f998010 	lw	t9,-32752(gp)
  407874:	03e07821 	move	t7,ra
  407878:	0320f809 	jalr	t9
  40787c:	241801e3 	li	t8,483
  407880:	8f998010 	lw	t9,-32752(gp)
  407884:	03e07821 	move	t7,ra
  407888:	0320f809 	jalr	t9
  40788c:	241801e1 	li	t8,481
  407890:	8f998010 	lw	t9,-32752(gp)
  407894:	03e07821 	move	t7,ra
  407898:	0320f809 	jalr	t9
  40789c:	241801d2 	li	t8,466
  4078a0:	8f998010 	lw	t9,-32752(gp)
  4078a4:	03e07821 	move	t7,ra
  4078a8:	0320f809 	jalr	t9
  4078ac:	241801d1 	li	t8,465
  4078b0:	8f998010 	lw	t9,-32752(gp)
  4078b4:	03e07821 	move	t7,ra
  4078b8:	0320f809 	jalr	t9
  4078bc:	241801cc 	li	t8,460
  4078c0:	8f998010 	lw	t9,-32752(gp)
  4078c4:	03e07821 	move	t7,ra
  4078c8:	0320f809 	jalr	t9
  4078cc:	241801c9 	li	t8,457
  4078d0:	8f998010 	lw	t9,-32752(gp)
  4078d4:	03e07821 	move	t7,ra
  4078d8:	0320f809 	jalr	t9
  4078dc:	241801bd 	li	t8,445
  4078e0:	8f998010 	lw	t9,-32752(gp)
  4078e4:	03e07821 	move	t7,ra
  4078e8:	0320f809 	jalr	t9
  4078ec:	241801b6 	li	t8,438
  4078f0:	8f998010 	lw	t9,-32752(gp)
  4078f4:	03e07821 	move	t7,ra
  4078f8:	0320f809 	jalr	t9
  4078fc:	241801b5 	li	t8,437
  407900:	8f998010 	lw	t9,-32752(gp)
  407904:	03e07821 	move	t7,ra
  407908:	0320f809 	jalr	t9
  40790c:	241801af 	li	t8,431
  407910:	8f998010 	lw	t9,-32752(gp)
  407914:	03e07821 	move	t7,ra
  407918:	0320f809 	jalr	t9
  40791c:	241801ab 	li	t8,427
  407920:	8f998010 	lw	t9,-32752(gp)
  407924:	03e07821 	move	t7,ra
  407928:	0320f809 	jalr	t9
  40792c:	241801aa 	li	t8,426
  407930:	8f998010 	lw	t9,-32752(gp)
  407934:	03e07821 	move	t7,ra
  407938:	0320f809 	jalr	t9
  40793c:	241801a2 	li	t8,418
  407940:	8f998010 	lw	t9,-32752(gp)
  407944:	03e07821 	move	t7,ra
  407948:	0320f809 	jalr	t9
  40794c:	2418019e 	li	t8,414
  407950:	8f998010 	lw	t9,-32752(gp)
  407954:	03e07821 	move	t7,ra
  407958:	0320f809 	jalr	t9
  40795c:	2418019b 	li	t8,411
  407960:	8f998010 	lw	t9,-32752(gp)
  407964:	03e07821 	move	t7,ra
  407968:	0320f809 	jalr	t9
  40796c:	24180199 	li	t8,409
  407970:	8f998010 	lw	t9,-32752(gp)
  407974:	03e07821 	move	t7,ra
  407978:	0320f809 	jalr	t9
  40797c:	24180198 	li	t8,408
  407980:	8f998010 	lw	t9,-32752(gp)
  407984:	03e07821 	move	t7,ra
  407988:	0320f809 	jalr	t9
  40798c:	24180192 	li	t8,402
  407990:	8f998010 	lw	t9,-32752(gp)
  407994:	03e07821 	move	t7,ra
  407998:	0320f809 	jalr	t9
  40799c:	2418018c 	li	t8,396
  4079a0:	8f998010 	lw	t9,-32752(gp)
  4079a4:	03e07821 	move	t7,ra
  4079a8:	0320f809 	jalr	t9
  4079ac:	2418018b 	li	t8,395
  4079b0:	8f998010 	lw	t9,-32752(gp)
  4079b4:	03e07821 	move	t7,ra
  4079b8:	0320f809 	jalr	t9
  4079bc:	2418018a 	li	t8,394
  4079c0:	8f998010 	lw	t9,-32752(gp)
  4079c4:	03e07821 	move	t7,ra
  4079c8:	0320f809 	jalr	t9
  4079cc:	24180189 	li	t8,393
  4079d0:	8f998010 	lw	t9,-32752(gp)
  4079d4:	03e07821 	move	t7,ra
  4079d8:	0320f809 	jalr	t9
  4079dc:	24180184 	li	t8,388
  4079e0:	8f998010 	lw	t9,-32752(gp)
  4079e4:	03e07821 	move	t7,ra
  4079e8:	0320f809 	jalr	t9
  4079ec:	24180177 	li	t8,375
  4079f0:	8f998010 	lw	t9,-32752(gp)
  4079f4:	03e07821 	move	t7,ra
  4079f8:	0320f809 	jalr	t9
  4079fc:	24180176 	li	t8,374
  407a00:	8f998010 	lw	t9,-32752(gp)
  407a04:	03e07821 	move	t7,ra
  407a08:	0320f809 	jalr	t9
  407a0c:	2418016d 	li	t8,365
  407a10:	8f998010 	lw	t9,-32752(gp)
  407a14:	03e07821 	move	t7,ra
  407a18:	0320f809 	jalr	t9
  407a1c:	2418016c 	li	t8,364
  407a20:	8f998010 	lw	t9,-32752(gp)
  407a24:	03e07821 	move	t7,ra
  407a28:	0320f809 	jalr	t9
  407a2c:	24180169 	li	t8,361
  407a30:	8f998010 	lw	t9,-32752(gp)
  407a34:	03e07821 	move	t7,ra
  407a38:	0320f809 	jalr	t9
  407a3c:	24180165 	li	t8,357
  407a40:	8f998010 	lw	t9,-32752(gp)
  407a44:	03e07821 	move	t7,ra
  407a48:	0320f809 	jalr	t9
  407a4c:	24180164 	li	t8,356
  407a50:	8f998010 	lw	t9,-32752(gp)
  407a54:	03e07821 	move	t7,ra
  407a58:	0320f809 	jalr	t9
  407a5c:	24180161 	li	t8,353
  407a60:	8f998010 	lw	t9,-32752(gp)
  407a64:	03e07821 	move	t7,ra
  407a68:	0320f809 	jalr	t9
  407a6c:	2418015b 	li	t8,347
  407a70:	8f998010 	lw	t9,-32752(gp)
  407a74:	03e07821 	move	t7,ra
  407a78:	0320f809 	jalr	t9
  407a7c:	24180159 	li	t8,345
  407a80:	8f998010 	lw	t9,-32752(gp)
  407a84:	03e07821 	move	t7,ra
  407a88:	0320f809 	jalr	t9
  407a8c:	24180153 	li	t8,339
  407a90:	8f998010 	lw	t9,-32752(gp)
  407a94:	03e07821 	move	t7,ra
  407a98:	0320f809 	jalr	t9
  407a9c:	2418014d 	li	t8,333
  407aa0:	8f998010 	lw	t9,-32752(gp)
  407aa4:	03e07821 	move	t7,ra
  407aa8:	0320f809 	jalr	t9
  407aac:	2418014b 	li	t8,331
  407ab0:	8f998010 	lw	t9,-32752(gp)
  407ab4:	03e07821 	move	t7,ra
  407ab8:	0320f809 	jalr	t9
  407abc:	24180149 	li	t8,329
  407ac0:	8f998010 	lw	t9,-32752(gp)
  407ac4:	03e07821 	move	t7,ra
  407ac8:	0320f809 	jalr	t9
  407acc:	24180148 	li	t8,328
  407ad0:	8f998010 	lw	t9,-32752(gp)
  407ad4:	03e07821 	move	t7,ra
  407ad8:	0320f809 	jalr	t9
  407adc:	24180146 	li	t8,326
  407ae0:	8f998010 	lw	t9,-32752(gp)
  407ae4:	03e07821 	move	t7,ra
  407ae8:	0320f809 	jalr	t9
  407aec:	24180145 	li	t8,325
  407af0:	8f998010 	lw	t9,-32752(gp)
  407af4:	03e07821 	move	t7,ra
  407af8:	0320f809 	jalr	t9
  407afc:	2418013c 	li	t8,316
  407b00:	8f998010 	lw	t9,-32752(gp)
  407b04:	03e07821 	move	t7,ra
  407b08:	0320f809 	jalr	t9
  407b0c:	2418013b 	li	t8,315
  407b10:	8f998010 	lw	t9,-32752(gp)
  407b14:	03e07821 	move	t7,ra
  407b18:	0320f809 	jalr	t9
  407b1c:	24180135 	li	t8,309
  407b20:	8f998010 	lw	t9,-32752(gp)
  407b24:	03e07821 	move	t7,ra
  407b28:	0320f809 	jalr	t9
  407b2c:	24180132 	li	t8,306
  407b30:	8f998010 	lw	t9,-32752(gp)
  407b34:	03e07821 	move	t7,ra
  407b38:	0320f809 	jalr	t9
  407b3c:	2418012c 	li	t8,300
  407b40:	8f998010 	lw	t9,-32752(gp)
  407b44:	03e07821 	move	t7,ra
  407b48:	0320f809 	jalr	t9
  407b4c:	24180126 	li	t8,294
  407b50:	8f998010 	lw	t9,-32752(gp)
  407b54:	03e07821 	move	t7,ra
  407b58:	0320f809 	jalr	t9
  407b5c:	24180125 	li	t8,293
  407b60:	8f998010 	lw	t9,-32752(gp)
  407b64:	03e07821 	move	t7,ra
  407b68:	0320f809 	jalr	t9
  407b6c:	24180120 	li	t8,288
  407b70:	8f998010 	lw	t9,-32752(gp)
  407b74:	03e07821 	move	t7,ra
  407b78:	0320f809 	jalr	t9
  407b7c:	2418010f 	li	t8,271
  407b80:	8f998010 	lw	t9,-32752(gp)
  407b84:	03e07821 	move	t7,ra
  407b88:	0320f809 	jalr	t9
  407b8c:	2418010b 	li	t8,267
  407b90:	8f998010 	lw	t9,-32752(gp)
  407b94:	03e07821 	move	t7,ra
  407b98:	0320f809 	jalr	t9
  407b9c:	24180108 	li	t8,264
  407ba0:	8f998010 	lw	t9,-32752(gp)
  407ba4:	03e07821 	move	t7,ra
  407ba8:	0320f809 	jalr	t9
  407bac:	24180101 	li	t8,257
  407bb0:	8f998010 	lw	t9,-32752(gp)
  407bb4:	03e07821 	move	t7,ra
  407bb8:	0320f809 	jalr	t9
  407bbc:	241800f9 	li	t8,249
  407bc0:	8f998010 	lw	t9,-32752(gp)
  407bc4:	03e07821 	move	t7,ra
  407bc8:	0320f809 	jalr	t9
  407bcc:	241800ef 	li	t8,239
  407bd0:	8f998010 	lw	t9,-32752(gp)
  407bd4:	03e07821 	move	t7,ra
  407bd8:	0320f809 	jalr	t9
  407bdc:	241800c6 	li	t8,198
  407be0:	8f998010 	lw	t9,-32752(gp)
  407be4:	03e07821 	move	t7,ra
  407be8:	0320f809 	jalr	t9
  407bec:	241800c0 	li	t8,192
  407bf0:	8f998010 	lw	t9,-32752(gp)
  407bf4:	03e07821 	move	t7,ra
  407bf8:	0320f809 	jalr	t9
  407bfc:	241800bf 	li	t8,191
  407c00:	8f998010 	lw	t9,-32752(gp)
  407c04:	03e07821 	move	t7,ra
  407c08:	0320f809 	jalr	t9
  407c0c:	241800b5 	li	t8,181
  407c10:	8f998010 	lw	t9,-32752(gp)
  407c14:	03e07821 	move	t7,ra
  407c18:	0320f809 	jalr	t9
  407c1c:	241800ae 	li	t8,174
  407c20:	8f998010 	lw	t9,-32752(gp)
  407c24:	03e07821 	move	t7,ra
  407c28:	0320f809 	jalr	t9
  407c2c:	2418009f 	li	t8,159
  407c30:	8f998010 	lw	t9,-32752(gp)
  407c34:	03e07821 	move	t7,ra
  407c38:	0320f809 	jalr	t9
  407c3c:	2418009c 	li	t8,156
  407c40:	8f998010 	lw	t9,-32752(gp)
  407c44:	03e07821 	move	t7,ra
  407c48:	0320f809 	jalr	t9
  407c4c:	24180093 	li	t8,147
  407c50:	8f998010 	lw	t9,-32752(gp)
  407c54:	03e07821 	move	t7,ra
  407c58:	0320f809 	jalr	t9
  407c5c:	24180092 	li	t8,146
  407c60:	8f998010 	lw	t9,-32752(gp)
  407c64:	03e07821 	move	t7,ra
  407c68:	0320f809 	jalr	t9
  407c6c:	2418008e 	li	t8,142
  407c70:	8f998010 	lw	t9,-32752(gp)
  407c74:	03e07821 	move	t7,ra
  407c78:	0320f809 	jalr	t9
  407c7c:	24180085 	li	t8,133
  407c80:	8f998010 	lw	t9,-32752(gp)
  407c84:	03e07821 	move	t7,ra
  407c88:	0320f809 	jalr	t9
  407c8c:	24180084 	li	t8,132
  407c90:	8f998010 	lw	t9,-32752(gp)
  407c94:	03e07821 	move	t7,ra
  407c98:	0320f809 	jalr	t9
  407c9c:	24180081 	li	t8,129
  407ca0:	8f998010 	lw	t9,-32752(gp)
  407ca4:	03e07821 	move	t7,ra
  407ca8:	0320f809 	jalr	t9
  407cac:	2418007d 	li	t8,125
  407cb0:	8f998010 	lw	t9,-32752(gp)
  407cb4:	03e07821 	move	t7,ra
  407cb8:	0320f809 	jalr	t9
  407cbc:	24180075 	li	t8,117
  407cc0:	8f998010 	lw	t9,-32752(gp)
  407cc4:	03e07821 	move	t7,ra
  407cc8:	0320f809 	jalr	t9
  407ccc:	24180074 	li	t8,116
  407cd0:	8f998010 	lw	t9,-32752(gp)
  407cd4:	03e07821 	move	t7,ra
  407cd8:	0320f809 	jalr	t9
  407cdc:	2418006c 	li	t8,108
  407ce0:	8f998010 	lw	t9,-32752(gp)
  407ce4:	03e07821 	move	t7,ra
  407ce8:	0320f809 	jalr	t9
  407cec:	2418006b 	li	t8,107
  407cf0:	8f998010 	lw	t9,-32752(gp)
  407cf4:	03e07821 	move	t7,ra
  407cf8:	0320f809 	jalr	t9
  407cfc:	24180067 	li	t8,103
  407d00:	8f998010 	lw	t9,-32752(gp)
  407d04:	03e07821 	move	t7,ra
  407d08:	0320f809 	jalr	t9
  407d0c:	24180065 	li	t8,101
  407d10:	8f998010 	lw	t9,-32752(gp)
  407d14:	03e07821 	move	t7,ra
  407d18:	0320f809 	jalr	t9
  407d1c:	24180062 	li	t8,98
  407d20:	8f998010 	lw	t9,-32752(gp)
  407d24:	03e07821 	move	t7,ra
  407d28:	0320f809 	jalr	t9
  407d2c:	2418005f 	li	t8,95
  407d30:	8f998010 	lw	t9,-32752(gp)
  407d34:	03e07821 	move	t7,ra
  407d38:	0320f809 	jalr	t9
  407d3c:	24180057 	li	t8,87
  407d40:	8f998010 	lw	t9,-32752(gp)
  407d44:	03e07821 	move	t7,ra
  407d48:	0320f809 	jalr	t9
  407d4c:	24180054 	li	t8,84
  407d50:	8f998010 	lw	t9,-32752(gp)
  407d54:	03e07821 	move	t7,ra
  407d58:	0320f809 	jalr	t9
  407d5c:	2418004e 	li	t8,78
  407d60:	8f998010 	lw	t9,-32752(gp)
  407d64:	03e07821 	move	t7,ra
  407d68:	0320f809 	jalr	t9
  407d6c:	2418004d 	li	t8,77
  407d70:	8f998010 	lw	t9,-32752(gp)
  407d74:	03e07821 	move	t7,ra
  407d78:	0320f809 	jalr	t9
  407d7c:	24180043 	li	t8,67
  407d80:	8f998010 	lw	t9,-32752(gp)
  407d84:	03e07821 	move	t7,ra
  407d88:	0320f809 	jalr	t9
  407d8c:	2418003f 	li	t8,63
  407d90:	8f998010 	lw	t9,-32752(gp)
  407d94:	03e07821 	move	t7,ra
  407d98:	0320f809 	jalr	t9
  407d9c:	2418003d 	li	t8,61
  407da0:	8f998010 	lw	t9,-32752(gp)
  407da4:	03e07821 	move	t7,ra
  407da8:	0320f809 	jalr	t9
  407dac:	24180037 	li	t8,55
  407db0:	8f998010 	lw	t9,-32752(gp)
  407db4:	03e07821 	move	t7,ra
  407db8:	0320f809 	jalr	t9
  407dbc:	2418002a 	li	t8,42
  407dc0:	8f998010 	lw	t9,-32752(gp)
  407dc4:	03e07821 	move	t7,ra
  407dc8:	0320f809 	jalr	t9
  407dcc:	24180027 	li	t8,39
	...

00407de0 <sadb_alg_ptr>:
  407de0:	3c1c0fc0 	lui	gp,0xfc0
  407de4:	279c4b90 	addiu	gp,gp,19344
  407de8:	0399e021 	addu	gp,gp,t9
  407dec:	27bdffe0 	addiu	sp,sp,-32
  407df0:	afbc0000 	sw	gp,0(sp)
  407df4:	afbe001c 	sw	s8,28(sp)
  407df8:	afbc0018 	sw	gp,24(sp)
  407dfc:	03a0f021 	move	s8,sp
  407e00:	afc40020 	sw	a0,32(s8)
  407e04:	afc50024 	sw	a1,36(s8)
  407e08:	afc60028 	sw	a2,40(s8)
  407e0c:	afc7002c 	sw	a3,44(s8)

static struct sadb_alg *
sadb_alg_ptr (int satype, int exttype, int alg_id, int rw)
{
	struct sadb_alg *alg_p=NULL;
  407e10:	afc00008 	sw	zero,8(s8)
	switch(exttype) {
  407e14:	8fc20024 	lw	v0,36(s8)
  407e18:	00000000 	nop
  407e1c:	afc2000c 	sw	v0,12(s8)
  407e20:	2402000e 	li	v0,14
  407e24:	8fc3000c 	lw	v1,12(s8)
  407e28:	00000000 	nop
  407e2c:	10620008 	beq	v1,v0,407e50 <sadb_alg_ptr+0x70>
  407e30:	00000000 	nop
  407e34:	2402000f 	li	v0,15
  407e38:	8fc3000c 	lw	v1,12(s8)
  407e3c:	00000000 	nop
  407e40:	1062000a 	beq	v1,v0,407e6c <sadb_alg_ptr+0x8c>
  407e44:	00000000 	nop
  407e48:	10000053 	b	407f98 <sadb_alg_ptr+0x1b8>
  407e4c:	00000000 	nop
		case SADB_EXT_SUPPORTED_AUTH:
			if (alg_id<=SADB_AALG_MAX)
  407e50:	8fc20028 	lw	v0,40(s8)
  407e54:	00000000 	nop
  407e58:	28420010 	slti	v0,v0,16
  407e5c:	1040004e 	beqz	v0,407f98 <sadb_alg_ptr+0x1b8>
  407e60:	00000000 	nop
				break;
  407e64:	10000006 	b	407e80 <sadb_alg_ptr+0xa0>
  407e68:	00000000 	nop
			goto fail;		
		case SADB_EXT_SUPPORTED_ENCRYPT:
			if (alg_id<=SADB_EALG_MAX)
  407e6c:	8fc20028 	lw	v0,40(s8)
  407e70:	00000000 	nop
  407e74:	28420100 	slti	v0,v0,256
  407e78:	10400047 	beqz	v0,407f98 <sadb_alg_ptr+0x1b8>
  407e7c:	00000000 	nop
				break;
			goto fail;		
		default:
			goto fail;
	}
	switch(satype) {
  407e80:	8fc20020 	lw	v0,32(s8)
  407e84:	00000000 	nop
  407e88:	afc20014 	sw	v0,20(s8)
  407e8c:	24020002 	li	v0,2
  407e90:	8fc30014 	lw	v1,20(s8)
  407e94:	00000000 	nop
  407e98:	1062003f 	beq	v1,v0,407f98 <sadb_alg_ptr+0x1b8>
  407e9c:	00000000 	nop
  407ea0:	24020003 	li	v0,3
  407ea4:	8fc30014 	lw	v1,20(s8)
  407ea8:	00000000 	nop
  407eac:	10620003 	beq	v1,v0,407ebc <sadb_alg_ptr+0xdc>
  407eb0:	00000000 	nop
  407eb4:	10000038 	b	407f98 <sadb_alg_ptr+0x1b8>
  407eb8:	00000000 	nop
		case SADB_SATYPE_ESP:
			alg_p=(exttype == SADB_EXT_SUPPORTED_ENCRYPT)? 
  407ebc:	8fc30024 	lw	v1,36(s8)
  407ec0:	2402000f 	li	v0,15
  407ec4:	1462000b 	bne	v1,v0,407ef4 <sadb_alg_ptr+0x114>
  407ec8:	00000000 	nop
  407ecc:	8fc20028 	lw	v0,40(s8)
  407ed0:	00000000 	nop
  407ed4:	000210c0 	sll	v0,v0,0x3
  407ed8:	8f818018 	lw	at,-32744(gp)
  407edc:	00000000 	nop
  407ee0:	24215690 	addiu	at,at,22160
  407ee4:	00221021 	addu	v0,at,v0
  407ee8:	afc20010 	sw	v0,16(s8)
  407eec:	10000009 	b	407f14 <sadb_alg_ptr+0x134>
  407ef0:	00000000 	nop
  407ef4:	8fc20028 	lw	v0,40(s8)
  407ef8:	00000000 	nop
  407efc:	000210c0 	sll	v0,v0,0x3
  407f00:	8f818018 	lw	at,-32744(gp)
  407f04:	00000000 	nop
  407f08:	24215610 	addiu	at,at,22032
  407f0c:	00221021 	addu	v0,at,v0
  407f10:	afc20010 	sw	v0,16(s8)
  407f14:	8fc20010 	lw	v0,16(s8)
  407f18:	00000000 	nop
  407f1c:	afc20008 	sw	v0,8(s8)
				&esp_ealg[alg_id] : &esp_aalg[alg_id];
			/* get for write: increment elem count */
			if (rw) {
  407f20:	8fc2002c 	lw	v0,44(s8)
  407f24:	00000000 	nop
  407f28:	1040001b 	beqz	v0,407f98 <sadb_alg_ptr+0x1b8>
  407f2c:	00000000 	nop
				(exttype == SADB_EXT_SUPPORTED_ENCRYPT)?
  407f30:	8fc30024 	lw	v1,36(s8)
  407f34:	2402000f 	li	v0,15
  407f38:	1462000d 	bne	v1,v0,407f70 <sadb_alg_ptr+0x190>
  407f3c:	00000000 	nop
  407f40:	8f828018 	lw	v0,-32744(gp)
  407f44:	00000000 	nop
  407f48:	24420000 	addiu	v0,v0,0
  407f4c:	8c420000 	lw	v0,0(v0)
  407f50:	00000000 	nop
  407f54:	24420001 	addiu	v0,v0,1
  407f58:	8f818018 	lw	at,-32744(gp)
  407f5c:	00000000 	nop
  407f60:	24210000 	addiu	at,at,0
  407f64:	ac220000 	sw	v0,0(at)
  407f68:	1000000b 	b	407f98 <sadb_alg_ptr+0x1b8>
  407f6c:	00000000 	nop
  407f70:	8f828018 	lw	v0,-32744(gp)
  407f74:	00000000 	nop
  407f78:	24420004 	addiu	v0,v0,4
  407f7c:	8c420000 	lw	v0,0(v0)
  407f80:	00000000 	nop
  407f84:	24420001 	addiu	v0,v0,1
  407f88:	8f818018 	lw	at,-32744(gp)
  407f8c:	00000000 	nop
  407f90:	24210004 	addiu	at,at,4
  407f94:	ac220000 	sw	v0,0(at)
					esp_ealg_num++ : esp_aalg_num++;
			}
			break;
		case SADB_SATYPE_AH:
			goto fail;
		default:
			goto fail;
	}
fail:
	return alg_p;
  407f98:	8fc20008 	lw	v0,8(s8)
  407f9c:	00000000 	nop
}
  407fa0:	03c0e821 	move	sp,s8
  407fa4:	8fbe001c 	lw	s8,28(sp)
  407fa8:	27bd0020 	addiu	sp,sp,32
  407fac:	03e00008 	jr	ra
  407fb0:	00000000 	nop

00407fb4 <kernel_alg_sadb_alg_get>:
  407fb4:	3c1c0fc0 	lui	gp,0xfc0
  407fb8:	279c49bc 	addiu	gp,gp,18876
  407fbc:	0399e021 	addu	gp,gp,t9
  407fc0:	27bdffd8 	addiu	sp,sp,-40
  407fc4:	afbc0010 	sw	gp,16(sp)
  407fc8:	afbf0020 	sw	ra,32(sp)
  407fcc:	afbe001c 	sw	s8,28(sp)
  407fd0:	afbc0018 	sw	gp,24(sp)
  407fd4:	03a0f021 	move	s8,sp
  407fd8:	afc40028 	sw	a0,40(s8)
  407fdc:	afc5002c 	sw	a1,44(s8)
  407fe0:	afc60030 	sw	a2,48(s8)

const struct sadb_alg *
kernel_alg_sadb_alg_get(int satype, int exttype, int alg_id)
{
	return sadb_alg_ptr(satype, exttype, alg_id, 0);
  407fe4:	8fc40028 	lw	a0,40(s8)
  407fe8:	8fc5002c 	lw	a1,44(s8)
  407fec:	8fc60030 	lw	a2,48(s8)
  407ff0:	00003821 	move	a3,zero
  407ff4:	8f99801c 	lw	t9,-32740(gp)
  407ff8:	00000000 	nop
  407ffc:	27397de0 	addiu	t9,t9,32224
  408000:	00000000 	nop
  408004:	0320f809 	jalr	t9
  408008:	00000000 	nop
  40800c:	8fdc0010 	lw	gp,16(s8)
  408010:	00000000 	nop
}
  408014:	03c0e821 	move	sp,s8
  408018:	8fbf0020 	lw	ra,32(sp)
  40801c:	8fbe001c 	lw	s8,28(sp)
  408020:	27bd0028 	addiu	sp,sp,40
  408024:	03e00008 	jr	ra
  408028:	00000000 	nop

0040802c <kernel_alg_init>:
  40802c:	3c1c0fc0 	lui	gp,0xfc0
  408030:	279c4944 	addiu	gp,gp,18756
  408034:	0399e021 	addu	gp,gp,t9
  408038:	27bdffd0 	addiu	sp,sp,-48
  40803c:	afbc0018 	sw	gp,24(sp)
  408040:	afbf0028 	sw	ra,40(sp)
  408044:	afbe0024 	sw	s8,36(sp)
  408048:	afbc0020 	sw	gp,32(sp)
  40804c:	03a0f021 	move	s8,sp
/*
 * 	Forget previous registration
 */
static void 
kernel_alg_init(void)
{
	DBG(DBG_KLIPS, DBG_log("alg_init():"
  408050:	8f8284f8 	lw	v0,-31496(gp)
  408054:	00000000 	nop
  408058:	8c420000 	lw	v0,0(v0)
  40805c:	00000000 	nop
  408060:	30420040 	andi	v0,v0,0x40
  408064:	10400013 	beqz	v0,4080b4 <kernel_alg_init+0x88>
  408068:	00000000 	nop
  40806c:	24020800 	li	v0,2048
  408070:	afa20010 	sw	v0,16(sp)
  408074:	8f848020 	lw	a0,-32736(gp)
  408078:	00000000 	nop
  40807c:	24843630 	addiu	a0,a0,13872
  408080:	8f858018 	lw	a1,-32744(gp)
  408084:	00000000 	nop
  408088:	24a55610 	addiu	a1,a1,22032
  40808c:	24060080 	li	a2,128
  408090:	8f878018 	lw	a3,-32744(gp)
  408094:	00000000 	nop
  408098:	24e75690 	addiu	a3,a3,22160
  40809c:	8f9983b8 	lw	t9,-31816(gp)
  4080a0:	00000000 	nop
  4080a4:	0320f809 	jalr	t9
  4080a8:	00000000 	nop
  4080ac:	8fdc0018 	lw	gp,24(s8)
  4080b0:	00000000 	nop
		"memset(%p, 0, %d) "
		"memset(%p, 0, %d) ",
		&esp_aalg,  (int)sizeof (esp_aalg),
		&esp_ealg,  (int)sizeof (esp_ealg)));
	memset (&esp_aalg, 0, sizeof (esp_aalg));
  4080b4:	8f848018 	lw	a0,-32744(gp)
  4080b8:	00000000 	nop
  4080bc:	24845610 	addiu	a0,a0,22032
  4080c0:	00002821 	move	a1,zero
  4080c4:	24060080 	li	a2,128
  4080c8:	8f998500 	lw	t9,-31488(gp)
  4080cc:	00000000 	nop
  4080d0:	0320f809 	jalr	t9
  4080d4:	00000000 	nop
  4080d8:	8fdc0018 	lw	gp,24(s8)
  4080dc:	00000000 	nop
	memset (&esp_ealg, 0, sizeof (esp_ealg));
  4080e0:	8f848018 	lw	a0,-32744(gp)
  4080e4:	00000000 	nop
  4080e8:	24845690 	addiu	a0,a0,22160
  4080ec:	00002821 	move	a1,zero
  4080f0:	24060800 	li	a2,2048
  4080f4:	8f998500 	lw	t9,-31488(gp)
  4080f8:	00000000 	nop
  4080fc:	0320f809 	jalr	t9
  408100:	00000000 	nop
  408104:	8fdc0018 	lw	gp,24(s8)
  408108:	00000000 	nop
	esp_ealg_num=esp_aalg_num=0;
  40810c:	8f818018 	lw	at,-32744(gp)
  408110:	00000000 	nop
  408114:	24210004 	addiu	at,at,4
  408118:	ac200000 	sw	zero,0(at)
  40811c:	8f818018 	lw	at,-32744(gp)
  408120:	00000000 	nop
  408124:	24210000 	addiu	at,at,0
  408128:	ac200000 	sw	zero,0(at)
}
  40812c:	03c0e821 	move	sp,s8
  408130:	8fbf0028 	lw	ra,40(sp)
  408134:	8fbe0024 	lw	s8,36(sp)
  408138:	27bd0030 	addiu	sp,sp,48
  40813c:	03e00008 	jr	ra
  408140:	00000000 	nop

00408144 <kernel_alg_add>:
  408144:	3c1c0fc0 	lui	gp,0xfc0
  408148:	279c482c 	addiu	gp,gp,18476
  40814c:	0399e021 	addu	gp,gp,t9
  408150:	27bdffd0 	addiu	sp,sp,-48
  408154:	afbc0010 	sw	gp,16(sp)
  408158:	afbf0028 	sw	ra,40(sp)
  40815c:	afbe0024 	sw	s8,36(sp)
  408160:	afbc0020 	sw	gp,32(sp)
  408164:	03a0f021 	move	s8,sp
  408168:	afc40030 	sw	a0,48(s8)
  40816c:	afc50034 	sw	a1,52(s8)
  408170:	afc60038 	sw	a2,56(s8)

static int
kernel_alg_add(int satype, int exttype, const struct sadb_alg *sadb_alg)
{
	struct sadb_alg *alg_p=NULL;
  408174:	afc00018 	sw	zero,24(s8)
	int alg_id=sadb_alg->sadb_alg_id;
  408178:	8fc20038 	lw	v0,56(s8)
  40817c:	00000000 	nop
  408180:	90420000 	lbu	v0,0(v0)
  408184:	00000000 	nop
  408188:	afc2001c 	sw	v0,28(s8)
	DBG(DBG_KLIPS, DBG_log("kernel_alg_add():"
  40818c:	8f8284f8 	lw	v0,-31496(gp)
  408190:	00000000 	nop
  408194:	8c420000 	lw	v0,0(v0)
  408198:	00000000 	nop
  40819c:	30420040 	andi	v0,v0,0x40
  4081a0:	10400010 	beqz	v0,4081e4 <kernel_alg_add+0xa0>
  4081a4:	00000000 	nop
  4081a8:	8fc20038 	lw	v0,56(s8)
  4081ac:	00000000 	nop
  4081b0:	90420000 	lbu	v0,0(v0)
  4081b4:	8f848020 	lw	a0,-32736(gp)
  4081b8:	00000000 	nop
  4081bc:	24843660 	addiu	a0,a0,13920
  4081c0:	8fc50030 	lw	a1,48(s8)
  4081c4:	8fc60034 	lw	a2,52(s8)
  4081c8:	00403821 	move	a3,v0
  4081cc:	8f9983b8 	lw	t9,-31816(gp)
  4081d0:	00000000 	nop
  4081d4:	0320f809 	jalr	t9
  4081d8:	00000000 	nop
  4081dc:	8fdc0010 	lw	gp,16(s8)
  4081e0:	00000000 	nop
		"satype=%d, exttype=%d, alg_id=%d",
		satype, exttype, sadb_alg->sadb_alg_id));
	if (!(alg_p=sadb_alg_ptr(satype, exttype, alg_id, 1)))
  4081e4:	8fc40030 	lw	a0,48(s8)
  4081e8:	8fc50034 	lw	a1,52(s8)
  4081ec:	8fc6001c 	lw	a2,28(s8)
  4081f0:	24070001 	li	a3,1
  4081f4:	8f99801c 	lw	t9,-32740(gp)
  4081f8:	00000000 	nop
  4081fc:	27397de0 	addiu	t9,t9,32224
  408200:	00000000 	nop
  408204:	0320f809 	jalr	t9
  408208:	00000000 	nop
  40820c:	8fdc0010 	lw	gp,16(s8)
  408210:	afc20018 	sw	v0,24(s8)
  408214:	8fc20018 	lw	v0,24(s8)
  408218:	00000000 	nop
  40821c:	14400004 	bnez	v0,408230 <kernel_alg_add+0xec>
  408220:	00000000 	nop
		return -1;
  408224:	2402ffff 	li	v0,-1
  408228:	1000002c 	b	4082dc <kernel_alg_add+0x198>
  40822c:	00000000 	nop

	/*
	DBG(DBG_KLIPS, DBG_log("kernel_alg_add(): assign *%p=*%p",
			alg_p, sadb_alg));
	*/

	/* 	This logic "mimics" KLIPS: first algo implementation will be used */
	if (alg_p->sadb_alg_id) {
  408230:	8fc20018 	lw	v0,24(s8)
  408234:	00000000 	nop
  408238:	90420000 	lbu	v0,0(v0)
  40823c:	00000000 	nop
  408240:	1040001a 	beqz	v0,4082ac <kernel_alg_add+0x168>
  408244:	00000000 	nop
		DBG(DBG_KLIPS, DBG_log("kernel_alg_add(): discarding already setup "
  408248:	8f8284f8 	lw	v0,-31496(gp)
  40824c:	00000000 	nop
  408250:	8c420000 	lw	v0,0(v0)
  408254:	00000000 	nop
  408258:	30420040 	andi	v0,v0,0x40
  40825c:	10400010 	beqz	v0,4082a0 <kernel_alg_add+0x15c>
  408260:	00000000 	nop
  408264:	8fc20038 	lw	v0,56(s8)
  408268:	00000000 	nop
  40826c:	90420000 	lbu	v0,0(v0)
  408270:	8f848020 	lw	a0,-32736(gp)
  408274:	00000000 	nop
  408278:	24843694 	addiu	a0,a0,13972
  40827c:	8fc50030 	lw	a1,48(s8)
  408280:	8fc60034 	lw	a2,52(s8)
  408284:	00403821 	move	a3,v0
  408288:	8f9983b8 	lw	t9,-31816(gp)
  40828c:	00000000 	nop
  408290:	0320f809 	jalr	t9
  408294:	00000000 	nop
  408298:	8fdc0010 	lw	gp,16(s8)
  40829c:	00000000 	nop
					"satype=%d, exttype=%d, alg_id=%d",
					satype, exttype, sadb_alg->sadb_alg_id));
		return 0;
  4082a0:	00001021 	move	v0,zero
  4082a4:	1000000d 	b	4082dc <kernel_alg_add+0x198>
  4082a8:	00000000 	nop
	}
	*alg_p=*sadb_alg;
  4082ac:	8fc30018 	lw	v1,24(s8)
  4082b0:	8fc20038 	lw	v0,56(s8)
  4082b4:	00000000 	nop
  4082b8:	84440000 	lh	a0,0(v0)
  4082bc:	84450002 	lh	a1,2(v0)
  4082c0:	84460004 	lh	a2,4(v0)
  4082c4:	84470006 	lh	a3,6(v0)
  4082c8:	a4640000 	sh	a0,0(v1)
  4082cc:	a4650002 	sh	a1,2(v1)
  4082d0:	a4660004 	sh	a2,4(v1)
  4082d4:	a4670006 	sh	a3,6(v1)
	return 1;
  4082d8:	24020001 	li	v0,1
}
  4082dc:	03c0e821 	move	sp,s8
  4082e0:	8fbf0028 	lw	ra,40(sp)
  4082e4:	8fbe0024 	lw	s8,36(sp)
  4082e8:	27bd0030 	addiu	sp,sp,48
  4082ec:	03e00008 	jr	ra
  4082f0:	00000000 	nop

004082f4 <kernel_alg_esp_enc_ok>:
  4082f4:	3c1c0fc0 	lui	gp,0xfc0
  4082f8:	279c467c 	addiu	gp,gp,18044
  4082fc:	0399e021 	addu	gp,gp,t9
  408300:	27bdffb0 	addiu	sp,sp,-80
  408304:	afbc0028 	sw	gp,40(sp)
  408308:	afbf0048 	sw	ra,72(sp)
  40830c:	afbe0044 	sw	s8,68(sp)
  408310:	afbc0040 	sw	gp,64(sp)
  408314:	03a0f021 	move	s8,sp
  408318:	afc40050 	sw	a0,80(s8)
  40831c:	afc50054 	sw	a1,84(s8)
  408320:	afc60058 	sw	a2,88(s8)

bool
kernel_alg_esp_enc_ok(int alg_id, unsigned int key_len, 
		struct alg_info_esp *alg_info __attribute__((unused)))
{
	struct sadb_alg *alg_p=NULL;
  408324:	afc00030 	sw	zero,48(s8)
	/* 
	 * test #1: encrypt algo must be present 
	 */
	int ret=ESP_EALG_PRESENT(alg_id);
  408328:	afc00038 	sw	zero,56(s8)
  40832c:	8fc20050 	lw	v0,80(s8)
  408330:	00000000 	nop
  408334:	28420100 	slti	v0,v0,256
  408338:	1040000f 	beqz	v0,408378 <kernel_alg_esp_enc_ok+0x84>
  40833c:	00000000 	nop
  408340:	8fc20050 	lw	v0,80(s8)
  408344:	00000000 	nop
  408348:	000210c0 	sll	v0,v0,0x3
  40834c:	8f818018 	lw	at,-32744(gp)
  408350:	00000000 	nop
  408354:	24215690 	addiu	at,at,22160
  408358:	00221021 	addu	v0,at,v0
  40835c:	90430000 	lbu	v1,0(v0)
  408360:	8fc20050 	lw	v0,80(s8)
  408364:	00000000 	nop
  408368:	14620003 	bne	v1,v0,408378 <kernel_alg_esp_enc_ok+0x84>
  40836c:	00000000 	nop
  408370:	24020001 	li	v0,1
  408374:	afc20038 	sw	v0,56(s8)
  408378:	8fc20038 	lw	v0,56(s8)
  40837c:	00000000 	nop
  408380:	afc20034 	sw	v0,52(s8)
	if (!ret) goto out;
  408384:	8fc20034 	lw	v0,52(s8)
  408388:	00000000 	nop
  40838c:	14400003 	bnez	v0,40839c <kernel_alg_esp_enc_ok+0xa8>
  408390:	00000000 	nop
  408394:	10000034 	b	408468 <kernel_alg_esp_enc_ok+0x174>
  408398:	00000000 	nop

	alg_p=&esp_ealg[alg_id];
  40839c:	8fc20050 	lw	v0,80(s8)
  4083a0:	00000000 	nop
  4083a4:	000210c0 	sll	v0,v0,0x3
  4083a8:	8f818018 	lw	at,-32744(gp)
  4083ac:	00000000 	nop
  4083b0:	24215690 	addiu	at,at,22160
  4083b4:	00221021 	addu	v0,at,v0
  4083b8:	afc20030 	sw	v0,48(s8)
	/* 
	 * test #2: if key_len specified, it must be in range 
	 */
	if ((key_len) && ((key_len < alg_p->sadb_alg_minbits) ||
			 (key_len > alg_p->sadb_alg_maxbits))) {
  4083bc:	8fc20054 	lw	v0,84(s8)
  4083c0:	00000000 	nop
  4083c4:	10400028 	beqz	v0,408468 <kernel_alg_esp_enc_ok+0x174>
  4083c8:	00000000 	nop
  4083cc:	8fc20030 	lw	v0,48(s8)
  4083d0:	00000000 	nop
  4083d4:	94430002 	lhu	v1,2(v0)
  4083d8:	8fc20054 	lw	v0,84(s8)
  4083dc:	00000000 	nop
  4083e0:	0043102b 	sltu	v0,v0,v1
  4083e4:	1440000b 	bnez	v0,408414 <kernel_alg_esp_enc_ok+0x120>
  4083e8:	00000000 	nop
  4083ec:	8fc20030 	lw	v0,48(s8)
  4083f0:	00000000 	nop
  4083f4:	94430004 	lhu	v1,4(v0)
  4083f8:	8fc20054 	lw	v0,84(s8)
  4083fc:	00000000 	nop
  408400:	0062102b 	sltu	v0,v1,v0
  408404:	14400003 	bnez	v0,408414 <kernel_alg_esp_enc_ok+0x120>
  408408:	00000000 	nop
  40840c:	10000016 	b	408468 <kernel_alg_esp_enc_ok+0x174>
  408410:	00000000 	nop
		plog("kernel_alg_db_add() key_len not in range: alg_id=%d, "
  408414:	8fc20030 	lw	v0,48(s8)
  408418:	00000000 	nop
  40841c:	94430002 	lhu	v1,2(v0)
  408420:	8fc20030 	lw	v0,48(s8)
  408424:	00000000 	nop
  408428:	94420004 	lhu	v0,4(v0)
  40842c:	00000000 	nop
  408430:	afa20010 	sw	v0,16(sp)
  408434:	8f848020 	lw	a0,-32736(gp)
  408438:	00000000 	nop
  40843c:	248436e0 	addiu	a0,a0,14048
  408440:	8fc50050 	lw	a1,80(s8)
  408444:	8fc60054 	lw	a2,84(s8)
  408448:	00603821 	move	a3,v1
  40844c:	8f998abc 	lw	t9,-30020(gp)
  408450:	00000000 	nop
  408454:	0320f809 	jalr	t9
  408458:	00000000 	nop
  40845c:	8fdc0028 	lw	gp,40(s8)
  408460:	00000000 	nop
				"key_len=%d, alg_minbits=%d, alg_maxbits=%d",
				alg_id, key_len,
				alg_p->sadb_alg_minbits,
				alg_p->sadb_alg_maxbits
		       );
		ret = FALSE;
  408464:	afc00034 	sw	zero,52(s8)
	} 
#if 0 /* ML: logic moved to kernel_alg_esp_ok_final() */
	/* 
	 * test #3: if alg_info specified AND strict flag, only
	 * only allow algo iff listed in st->alg_info_esp
	 */
	else if (alg_info && (alg_info->alg_info_flags & ALG_INFO_F_STRICT) ) {
		int i;
		struct esp_info *esp_info;
		ALG_INFO_ESP_FOREACH(alg_info, esp_info, i) {
			if ((esp_info->esp_ealg_id == alg_id) &&
				((esp_info->esp_ealg_keylen==0) || (key_len==0) ||
				 (esp_info->esp_ealg_keylen==key_len))) {
				ret = TRUE;
				goto out;
			}
		}
		plog("kernel_alg_db_add() strict flag and algo not in alg_info: "
				"alg_id=%d, "
				"key_len=%d, alg_minbits=%d, alg_maxbits=%d",
				alg_id, key_len,
				alg_p->sadb_alg_minbits,
				alg_p->sadb_alg_maxbits
		   );
		ret = FALSE;
	}
#endif
out:
	if (ret) {
  408468:	8fc20034 	lw	v0,52(s8)
  40846c:	00000000 	nop
  408470:	1040002f 	beqz	v0,408530 <kernel_alg_esp_enc_ok+0x23c>
  408474:	00000000 	nop
		DBG(DBG_KLIPS, 
  408478:	8f8284f8 	lw	v0,-31496(gp)
  40847c:	00000000 	nop
  408480:	8c420000 	lw	v0,0(v0)
  408484:	00000000 	nop
  408488:	30420040 	andi	v0,v0,0x40
  40848c:	1040003a 	beqz	v0,408578 <kernel_alg_esp_enc_ok+0x284>
  408490:	00000000 	nop
  408494:	8fc20030 	lw	v0,48(s8)
  408498:	00000000 	nop
  40849c:	90430000 	lbu	v1,0(v0)
  4084a0:	8fc20030 	lw	v0,48(s8)
  4084a4:	00000000 	nop
  4084a8:	90420001 	lbu	v0,1(v0)
  4084ac:	00000000 	nop
  4084b0:	afa20010 	sw	v0,16(sp)
  4084b4:	8fc20030 	lw	v0,48(s8)
  4084b8:	00000000 	nop
  4084bc:	94420002 	lhu	v0,2(v0)
  4084c0:	00000000 	nop
  4084c4:	afa20014 	sw	v0,20(sp)
  4084c8:	8fc20030 	lw	v0,48(s8)
  4084cc:	00000000 	nop
  4084d0:	94420004 	lhu	v0,4(v0)
  4084d4:	00000000 	nop
  4084d8:	afa20018 	sw	v0,24(sp)
  4084dc:	8fc20030 	lw	v0,48(s8)
  4084e0:	00000000 	nop
  4084e4:	94420006 	lhu	v0,6(v0)
  4084e8:	00000000 	nop
  4084ec:	afa2001c 	sw	v0,28(sp)
  4084f0:	8fc20034 	lw	v0,52(s8)
  4084f4:	00000000 	nop
  4084f8:	afa20020 	sw	v0,32(sp)
  4084fc:	8f848020 	lw	a0,-32736(gp)
  408500:	00000000 	nop
  408504:	24843740 	addiu	a0,a0,14144
  408508:	8fc50050 	lw	a1,80(s8)
  40850c:	8fc60054 	lw	a2,84(s8)
  408510:	00603821 	move	a3,v1
  408514:	8f9983b8 	lw	t9,-31816(gp)
  408518:	00000000 	nop
  40851c:	0320f809 	jalr	t9
  408520:	00000000 	nop
  408524:	8fdc0028 	lw	gp,40(s8)
  408528:	10000013 	b	408578 <kernel_alg_esp_enc_ok+0x284>
  40852c:	00000000 	nop
			DBG_log("kernel_alg_esp_enc_ok(%d,%d): "
				"alg_id=%d, "
				"alg_ivlen=%d, alg_minbits=%d, alg_maxbits=%d, "
				"res=%d, ret=%d",
				alg_id, key_len,
				alg_p->sadb_alg_id,
				alg_p->sadb_alg_ivlen,
				alg_p->sadb_alg_minbits,
				alg_p->sadb_alg_maxbits,
				alg_p->sadb_alg_reserved,
				ret);
		   );
	} else {
		DBG(DBG_KLIPS, 
  408530:	8f8284f8 	lw	v0,-31496(gp)
  408534:	00000000 	nop
  408538:	8c420000 	lw	v0,0(v0)
  40853c:	00000000 	nop
  408540:	30420040 	andi	v0,v0,0x40
  408544:	1040000c 	beqz	v0,408578 <kernel_alg_esp_enc_ok+0x284>
  408548:	00000000 	nop
  40854c:	8f848020 	lw	a0,-32736(gp)
  408550:	00000000 	nop
  408554:	248437a8 	addiu	a0,a0,14248
  408558:	8fc50050 	lw	a1,80(s8)
  40855c:	8fc60054 	lw	a2,84(s8)
  408560:	8f9983b8 	lw	t9,-31816(gp)
  408564:	00000000 	nop
  408568:	0320f809 	jalr	t9
  40856c:	00000000 	nop
  408570:	8fdc0028 	lw	gp,40(s8)
  408574:	00000000 	nop
			DBG_log("kernel_alg_esp_enc_ok(%d,%d): NO",
				alg_id, key_len);
		);
	}
	return ret;
  408578:	8fc20034 	lw	v0,52(s8)
  40857c:	00000000 	nop
}
  408580:	03c0e821 	move	sp,s8
  408584:	8fbf0048 	lw	ra,72(sp)
  408588:	8fbe0044 	lw	s8,68(sp)
  40858c:	27bd0050 	addiu	sp,sp,80
  408590:	03e00008 	jr	ra
  408594:	00000000 	nop

00408598 <kernel_alg_esp_ok_final>:
  408598:	3c1c0fc0 	lui	gp,0xfc0
  40859c:	279c43d8 	addiu	gp,gp,17368
  4085a0:	0399e021 	addu	gp,gp,t9
  4085a4:	27bdffb8 	addiu	sp,sp,-72
  4085a8:	afbc0018 	sw	gp,24(sp)
  4085ac:	afbf0040 	sw	ra,64(sp)
  4085b0:	afbe003c 	sw	s8,60(sp)
  4085b4:	afbc0038 	sw	gp,56(sp)
  4085b8:	03a0f021 	move	s8,sp
  4085bc:	afc40048 	sw	a0,72(s8)
  4085c0:	afc5004c 	sw	a1,76(s8)
  4085c4:	afc60050 	sw	a2,80(s8)
  4085c8:	afc70054 	sw	a3,84(s8)

/* 
 * ML: make F_STRICT logic consider enc,auth algorithms 
 */
#ifndef NO_PLUTO
bool
kernel_alg_esp_ok_final(int ealg, unsigned int key_len, int aalg, struct alg_info_esp *alg_info)
{
	int ealg_insecure;
	/*
	 * key_len passed comes from esp_attrs read from peer
	 * For many older algoritms (eg 3DES) this key_len is fixed
	 * and get passed as 0.
	 * ... then get default key_len
	 */
	if (key_len == 0) key_len = kernel_alg_esp_enc_keylen(ealg) * BITS_PER_BYTE;
  4085cc:	8fc2004c 	lw	v0,76(s8)
  4085d0:	00000000 	nop
  4085d4:	14400009 	bnez	v0,4085fc <kernel_alg_esp_ok_final+0x64>
  4085d8:	00000000 	nop
  4085dc:	8fc40048 	lw	a0,72(s8)
  4085e0:	8f9984f4 	lw	t9,-31500(gp)
  4085e4:	00000000 	nop
  4085e8:	0320f809 	jalr	t9
  4085ec:	00000000 	nop
  4085f0:	8fdc0018 	lw	gp,24(s8)
  4085f4:	000210c0 	sll	v0,v0,0x3
  4085f8:	afc2004c 	sw	v0,76(s8)

	/* 
	 * simple test to toss low key_len, will accept it only
	 * if specified in "esp" string
	 */
	ealg_insecure=(key_len < 128) ;
  4085fc:	8fc2004c 	lw	v0,76(s8)
  408600:	00000000 	nop
  408604:	2c420080 	sltiu	v0,v0,128
  408608:	afc20020 	sw	v0,32(s8)
	if (ealg_insecure || 
		(alg_info && alg_info->alg_info_flags & ALG_INFO_F_STRICT))
  40860c:	8fc20020 	lw	v0,32(s8)
  408610:	00000000 	nop
  408614:	1440000e 	bnez	v0,408650 <kernel_alg_esp_ok_final+0xb8>
  408618:	00000000 	nop
  40861c:	8fc20054 	lw	v0,84(s8)
  408620:	00000000 	nop
  408624:	10400091 	beqz	v0,40886c <kernel_alg_esp_ok_final+0x2d4>
  408628:	00000000 	nop
  40862c:	8fc20054 	lw	v0,84(s8)
  408630:	00000000 	nop
  408634:	8c420008 	lw	v0,8(v0)
  408638:	00000000 	nop
  40863c:	30420001 	andi	v0,v0,0x1
  408640:	14400003 	bnez	v0,408650 <kernel_alg_esp_ok_final+0xb8>
  408644:	00000000 	nop
  408648:	10000088 	b	40886c <kernel_alg_esp_ok_final+0x2d4>
  40864c:	00000000 	nop
	{
		int i;
		struct esp_info *esp_info;
		if (alg_info) {
  408650:	8fc20054 	lw	v0,84(s8)
  408654:	00000000 	nop
  408658:	10400055 	beqz	v0,4087b0 <kernel_alg_esp_ok_final+0x218>
  40865c:	00000000 	nop
			ALG_INFO_ESP_FOREACH(alg_info, esp_info, i) {
  408660:	8fc20054 	lw	v0,84(s8)
  408664:	00000000 	nop
  408668:	8c420000 	lw	v0,0(v0)
  40866c:	00000000 	nop
  408670:	afc20024 	sw	v0,36(s8)
  408674:	8fc20054 	lw	v0,84(s8)
  408678:	00000000 	nop
  40867c:	24420010 	addiu	v0,v0,16
  408680:	afc20028 	sw	v0,40(s8)
  408684:	8fc20024 	lw	v0,36(s8)
  408688:	00000000 	nop
  40868c:	2442ffff 	addiu	v0,v0,-1
  408690:	00401821 	move	v1,v0
  408694:	afc30024 	sw	v1,36(s8)
  408698:	2402ffff 	li	v0,-1
  40869c:	14620003 	bne	v1,v0,4086ac <kernel_alg_esp_ok_final+0x114>
  4086a0:	00000000 	nop
  4086a4:	10000042 	b	4087b0 <kernel_alg_esp_ok_final+0x218>
  4086a8:	00000000 	nop
				if ((esp_info->esp_ealg_id == ealg) &&
						((esp_info->esp_ealg_keylen==0) || (key_len==0) ||
						 (esp_info->esp_ealg_keylen==key_len)) &&
						(esp_info->esp_aalg_id == aalg)) {
  4086ac:	8fc20028 	lw	v0,40(s8)
  4086b0:	00000000 	nop
  4086b4:	90430000 	lbu	v1,0(v0)
  4086b8:	8fc20048 	lw	v0,72(s8)
  4086bc:	00000000 	nop
  4086c0:	14620035 	bne	v1,v0,408798 <kernel_alg_esp_ok_final+0x200>
  4086c4:	00000000 	nop
  4086c8:	8fc20028 	lw	v0,40(s8)
  4086cc:	00000000 	nop
  4086d0:	8c420004 	lw	v0,4(v0)
  4086d4:	00000000 	nop
  4086d8:	1040000e 	beqz	v0,408714 <kernel_alg_esp_ok_final+0x17c>
  4086dc:	00000000 	nop
  4086e0:	8fc2004c 	lw	v0,76(s8)
  4086e4:	00000000 	nop
  4086e8:	1040000a 	beqz	v0,408714 <kernel_alg_esp_ok_final+0x17c>
  4086ec:	00000000 	nop
  4086f0:	8fc20028 	lw	v0,40(s8)
  4086f4:	00000000 	nop
  4086f8:	8c430004 	lw	v1,4(v0)
  4086fc:	8fc2004c 	lw	v0,76(s8)
  408700:	00000000 	nop
  408704:	10620003 	beq	v1,v0,408714 <kernel_alg_esp_ok_final+0x17c>
  408708:	00000000 	nop
  40870c:	10000022 	b	408798 <kernel_alg_esp_ok_final+0x200>
  408710:	00000000 	nop
  408714:	8fc20028 	lw	v0,40(s8)
  408718:	00000000 	nop
  40871c:	94430002 	lhu	v1,2(v0)
  408720:	8fc20050 	lw	v0,80(s8)
  408724:	00000000 	nop
  408728:	1462001b 	bne	v1,v0,408798 <kernel_alg_esp_ok_final+0x200>
  40872c:	00000000 	nop
					if (ealg_insecure) 
  408730:	8fc20020 	lw	v0,32(s8)
  408734:	00000000 	nop
  408738:	10400014 	beqz	v0,40878c <kernel_alg_esp_ok_final+0x1f4>
  40873c:	00000000 	nop
						loglog(RC_LOG_SERIOUS, "You should NOT use insecure ESP algorithms [%s (%d)]!"
  408740:	8f848bf8 	lw	a0,-29704(gp)
  408744:	8fc50048 	lw	a1,72(s8)
  408748:	8f9984bc 	lw	t9,-31556(gp)
  40874c:	00000000 	nop
  408750:	0320f809 	jalr	t9
  408754:	00000000 	nop
  408758:	8fdc0018 	lw	gp,24(s8)
  40875c:	24040003 	li	a0,3
  408760:	8f858020 	lw	a1,-32736(gp)
  408764:	00000000 	nop
  408768:	24a537cc 	addiu	a1,a1,14284
  40876c:	00403021 	move	a2,v0
  408770:	8fc7004c 	lw	a3,76(s8)
  408774:	8f998c48 	lw	t9,-29624(gp)
  408778:	00000000 	nop
  40877c:	0320f809 	jalr	t9
  408780:	00000000 	nop
  408784:	8fdc0018 	lw	gp,24(s8)
  408788:	00000000 	nop
								, enum_name(&esp_transformid_names, ealg), key_len);
					return TRUE;
  40878c:	24020001 	li	v0,1
  408790:	10000037 	b	408870 <kernel_alg_esp_ok_final+0x2d8>
  408794:	00000000 	nop
  408798:	8fc20028 	lw	v0,40(s8)
  40879c:	00000000 	nop
  4087a0:	24420010 	addiu	v0,v0,16
  4087a4:	afc20028 	sw	v0,40(s8)
  4087a8:	1000ffb6 	b	408684 <kernel_alg_esp_ok_final+0xec>
  4087ac:	00000000 	nop
				}
			}
		}
		plog("IPsec Transform [%s (%d), %s] refused due to %s", 
  4087b0:	8f848bf8 	lw	a0,-29704(gp)
  4087b4:	8fc50048 	lw	a1,72(s8)
  4087b8:	8f9984bc 	lw	t9,-31556(gp)
  4087bc:	00000000 	nop
  4087c0:	0320f809 	jalr	t9
  4087c4:	00000000 	nop
  4087c8:	8fdc0018 	lw	gp,24(s8)
  4087cc:	afc2002c 	sw	v0,44(s8)
  4087d0:	8f848424 	lw	a0,-31708(gp)
  4087d4:	8fc50050 	lw	a1,80(s8)
  4087d8:	8f9984bc 	lw	t9,-31556(gp)
  4087dc:	00000000 	nop
  4087e0:	0320f809 	jalr	t9
  4087e4:	00000000 	nop
  4087e8:	8fdc0018 	lw	gp,24(s8)
  4087ec:	afc20030 	sw	v0,48(s8)
  4087f0:	8fc20020 	lw	v0,32(s8)
  4087f4:	00000000 	nop
  4087f8:	10400008 	beqz	v0,40881c <kernel_alg_esp_ok_final+0x284>
  4087fc:	00000000 	nop
  408800:	8f828020 	lw	v0,-32736(gp)
  408804:	00000000 	nop
  408808:	24423804 	addiu	v0,v0,14340
  40880c:	00000000 	nop
  408810:	afa20010 	sw	v0,16(sp)
  408814:	10000006 	b	408830 <kernel_alg_esp_ok_final+0x298>
  408818:	00000000 	nop
  40881c:	8f828020 	lw	v0,-32736(gp)
  408820:	00000000 	nop
  408824:	24423840 	addiu	v0,v0,14400
  408828:	00000000 	nop
  40882c:	afa20010 	sw	v0,16(sp)
  408830:	8f848020 	lw	a0,-32736(gp)
  408834:	00000000 	nop
  408838:	2484384c 	addiu	a0,a0,14412
  40883c:	8fc5002c 	lw	a1,44(s8)
  408840:	8fc6004c 	lw	a2,76(s8)
  408844:	8fc70030 	lw	a3,48(s8)
  408848:	8f998abc 	lw	t9,-30020(gp)
  40884c:	00000000 	nop
  408850:	0320f809 	jalr	t9
  408854:	00000000 	nop
  408858:	8fdc0018 	lw	gp,24(s8)
  40885c:	00000000 	nop
			enum_name(&esp_transformid_names, ealg), key_len,
			enum_name(&auth_alg_names, aalg),
			ealg_insecure ? "insecure key_len and enc. alg. not listed in \"esp\" string" : "strict flag");
		return FALSE;
  408860:	00001021 	move	v0,zero
  408864:	10000002 	b	408870 <kernel_alg_esp_ok_final+0x2d8>
  408868:	00000000 	nop
	}
	return TRUE;
  40886c:	24020001 	li	v0,1
}
  408870:	03c0e821 	move	sp,s8
  408874:	8fbf0040 	lw	ra,64(sp)
  408878:	8fbe003c 	lw	s8,60(sp)
  40887c:	27bd0048 	addiu	sp,sp,72
  408880:	03e00008 	jr	ra
  408884:	00000000 	nop

00408888 <kernel_alg_proc_read>:
  408888:	3c1c0fc0 	lui	gp,0xfc0
  40888c:	279c40e8 	addiu	gp,gp,16616
  408890:	0399e021 	addu	gp,gp,t9
  408894:	27bdff18 	addiu	sp,sp,-232
  408898:	afbc0020 	sw	gp,32(sp)
  40889c:	afbf00e0 	sw	ra,224(sp)
  4088a0:	afbe00dc 	sw	s8,220(sp)
  4088a4:	afbc00d8 	sw	gp,216(sp)
  4088a8:	03a0f021 	move	s8,sp
#endif /* NO_PLUTO */

/*	
 *	Load kernel_alg arrays from /proc
 * 	used in manual mode from klips/utils/spi.c
 */
int
kernel_alg_proc_read(void) {
	int satype;
	int supp_exttype;
	int alg_id, ivlen, minbits, maxbits;
	struct sadb_alg sadb_alg;
	int ret;
	char buf[128];
	FILE *fp=fopen("/proc/net/pf_key_supported", "r");
  4088ac:	8f848020 	lw	a0,-32736(gp)
  4088b0:	00000000 	nop
  4088b4:	2484387c 	addiu	a0,a0,14460
  4088b8:	8f858020 	lw	a1,-32736(gp)
  4088bc:	00000000 	nop
  4088c0:	24a53898 	addiu	a1,a1,14488
  4088c4:	8f99850c 	lw	t9,-31476(gp)
  4088c8:	00000000 	nop
  4088cc:	0320f809 	jalr	t9
  4088d0:	00000000 	nop
  4088d4:	8fdc0020 	lw	gp,32(s8)
  4088d8:	afc200d0 	sw	v0,208(s8)
	if (!fp)
  4088dc:	8fc200d0 	lw	v0,208(s8)
  4088e0:	00000000 	nop
  4088e4:	14400004 	bnez	v0,4088f8 <kernel_alg_proc_read+0x70>
  4088e8:	00000000 	nop
		return -1;
  4088ec:	2402ffff 	li	v0,-1
  4088f0:	1000007d 	b	408ae8 <kernel_alg_proc_read+0x260>
  4088f4:	00000000 	nop
	kernel_alg_init();
  4088f8:	8f998024 	lw	t9,-32732(gp)
  4088fc:	00000000 	nop
  408900:	2739802c 	addiu	t9,t9,-32724
  408904:	00000000 	nop
  408908:	0320f809 	jalr	t9
  40890c:	00000000 	nop
  408910:	8fdc0020 	lw	gp,32(s8)
  408914:	00000000 	nop
	while (fgets(buf, sizeof(buf), fp)) {
  408918:	27c40050 	addiu	a0,s8,80
  40891c:	24050080 	li	a1,128
  408920:	8fc600d0 	lw	a2,208(s8)
  408924:	8f998a70 	lw	t9,-30096(gp)
  408928:	00000000 	nop
  40892c:	0320f809 	jalr	t9
  408930:	00000000 	nop
  408934:	8fdc0020 	lw	gp,32(s8)
  408938:	14400003 	bnez	v0,408948 <kernel_alg_proc_read+0xc0>
  40893c:	00000000 	nop
  408940:	10000061 	b	408ac8 <kernel_alg_proc_read+0x240>
  408944:	00000000 	nop
		if (buf[0] != ' ') /* skip titles */
  408948:	83c30050 	lb	v1,80(s8)
  40894c:	24020020 	li	v0,32
  408950:	10620003 	beq	v1,v0,408960 <kernel_alg_proc_read+0xd8>
  408954:	00000000 	nop
			continue;
  408958:	1000ffef 	b	408918 <kernel_alg_proc_read+0x90>
  40895c:	00000000 	nop
		sscanf(buf, "%d %d %d %d %d %d",
  408960:	27c20030 	addiu	v0,s8,48
  408964:	afa20010 	sw	v0,16(sp)
  408968:	27c20034 	addiu	v0,s8,52
  40896c:	afa20014 	sw	v0,20(sp)
  408970:	27c20038 	addiu	v0,s8,56
  408974:	afa20018 	sw	v0,24(sp)
  408978:	27c2003c 	addiu	v0,s8,60
  40897c:	afa2001c 	sw	v0,28(sp)
  408980:	27c40050 	addiu	a0,s8,80
  408984:	8f858020 	lw	a1,-32736(gp)
  408988:	00000000 	nop
  40898c:	24a5389c 	addiu	a1,a1,14492
  408990:	27c60028 	addiu	a2,s8,40
  408994:	27c7002c 	addiu	a3,s8,44
  408998:	8f99859c 	lw	t9,-31332(gp)
  40899c:	00000000 	nop
  4089a0:	0320f809 	jalr	t9
  4089a4:	00000000 	nop
  4089a8:	8fdc0020 	lw	gp,32(s8)
  4089ac:	00000000 	nop
				&satype, &supp_exttype,
				&alg_id, &ivlen,
				&minbits, &maxbits
				);
		switch (satype) {
  4089b0:	8fc30028 	lw	v1,40(s8)
  4089b4:	24020003 	li	v0,3
  4089b8:	10620003 	beq	v1,v0,4089c8 <kernel_alg_proc_read+0x140>
  4089bc:	00000000 	nop
  4089c0:	1000ffd5 	b	408918 <kernel_alg_proc_read+0x90>
  4089c4:	00000000 	nop
			case SADB_SATYPE_ESP:
				switch(supp_exttype) {
  4089c8:	8fc2002c 	lw	v0,44(s8)
  4089cc:	00000000 	nop
  4089d0:	afc200d4 	sw	v0,212(s8)
  4089d4:	8fc300d4 	lw	v1,212(s8)
  4089d8:	00000000 	nop
  4089dc:	28620010 	slti	v0,v1,16
  4089e0:	1040ffcd 	beqz	v0,408918 <kernel_alg_proc_read+0x90>
  4089e4:	00000000 	nop
  4089e8:	8fc300d4 	lw	v1,212(s8)
  4089ec:	00000000 	nop
  4089f0:	2862000e 	slti	v0,v1,14
  4089f4:	1440ffc8 	bnez	v0,408918 <kernel_alg_proc_read+0x90>
  4089f8:	00000000 	nop
					case SADB_EXT_SUPPORTED_AUTH:
					case SADB_EXT_SUPPORTED_ENCRYPT:
						sadb_alg.sadb_alg_id=alg_id;
  4089fc:	93c20033 	lbu	v0,51(s8)
  408a00:	00000000 	nop
  408a04:	a3c20040 	sb	v0,64(s8)
						sadb_alg.sadb_alg_ivlen=ivlen;
  408a08:	93c20037 	lbu	v0,55(s8)
  408a0c:	00000000 	nop
  408a10:	a3c20041 	sb	v0,65(s8)
						sadb_alg.sadb_alg_minbits=minbits;
  408a14:	97c2003a 	lhu	v0,58(s8)
  408a18:	00000000 	nop
  408a1c:	a7c20042 	sh	v0,66(s8)
						sadb_alg.sadb_alg_maxbits=maxbits;
  408a20:	97c2003e 	lhu	v0,62(s8)
  408a24:	00000000 	nop
  408a28:	a7c20044 	sh	v0,68(s8)
						ret=kernel_alg_add(satype, supp_exttype, &sadb_alg);
  408a2c:	8fc40028 	lw	a0,40(s8)
  408a30:	8fc5002c 	lw	a1,44(s8)
  408a34:	27c60040 	addiu	a2,s8,64
  408a38:	8f998024 	lw	t9,-32732(gp)
  408a3c:	00000000 	nop
  408a40:	27398144 	addiu	t9,t9,-32444
  408a44:	00000000 	nop
  408a48:	0320f809 	jalr	t9
  408a4c:	00000000 	nop
  408a50:	8fdc0020 	lw	gp,32(s8)
  408a54:	afc20048 	sw	v0,72(s8)
						DBG(DBG_CRYPT, DBG_log("kernel_alg_proc_read() alg_id=%d, "
  408a58:	8f8284f8 	lw	v0,-31496(gp)
  408a5c:	00000000 	nop
  408a60:	8c420000 	lw	v0,0(v0)
  408a64:	00000000 	nop
  408a68:	30420002 	andi	v0,v0,0x2
  408a6c:	1040ffaa 	beqz	v0,408918 <kernel_alg_proc_read+0x90>
  408a70:	00000000 	nop
  408a74:	93c30040 	lbu	v1,64(s8)
  408a78:	93c60041 	lbu	a2,65(s8)
  408a7c:	97c70042 	lhu	a3,66(s8)
  408a80:	97c20044 	lhu	v0,68(s8)
  408a84:	00000000 	nop
  408a88:	afa20010 	sw	v0,16(sp)
  408a8c:	8fc20048 	lw	v0,72(s8)
  408a90:	00000000 	nop
  408a94:	afa20014 	sw	v0,20(sp)
  408a98:	8f848020 	lw	a0,-32736(gp)
  408a9c:	00000000 	nop
  408aa0:	248438b0 	addiu	a0,a0,14512
  408aa4:	00602821 	move	a1,v1
  408aa8:	8f9983b8 	lw	t9,-31816(gp)
  408aac:	00000000 	nop
  408ab0:	0320f809 	jalr	t9
  408ab4:	00000000 	nop
  408ab8:	8fdc0020 	lw	gp,32(s8)
  408abc:	00000000 	nop
							"alg_ivlen=%d, alg_minbits=%d, alg_maxbits=%d, "
							"ret=%d",
							sadb_alg.sadb_alg_id,
							sadb_alg.sadb_alg_ivlen,
							sadb_alg.sadb_alg_minbits,
							sadb_alg.sadb_alg_maxbits,
							ret));
				}
			default: 
				continue;
  408ac0:	1000ff95 	b	408918 <kernel_alg_proc_read+0x90>
  408ac4:	00000000 	nop
		}
	}
	fclose(fp);
  408ac8:	8fc400d0 	lw	a0,208(s8)
  408acc:	8f9984c0 	lw	t9,-31552(gp)
  408ad0:	00000000 	nop
  408ad4:	0320f809 	jalr	t9
  408ad8:	00000000 	nop
  408adc:	8fdc0020 	lw	gp,32(s8)
  408ae0:	00000000 	nop
	return 0;
  408ae4:	00001021 	move	v0,zero
}
  408ae8:	03c0e821 	move	sp,s8
  408aec:	8fbf00e0 	lw	ra,224(sp)
  408af0:	8fbe00dc 	lw	s8,220(sp)
  408af4:	27bd00e8 	addiu	sp,sp,232
  408af8:	03e00008 	jr	ra
  408afc:	00000000 	nop

00408b00 <kernel_alg_register_pfkey>:
  408b00:	3c1c0fc0 	lui	gp,0xfc0
  408b04:	279c3e70 	addiu	gp,gp,15984
  408b08:	0399e021 	addu	gp,gp,t9
  408b0c:	27bdff90 	addiu	sp,sp,-112
  408b10:	afbc0030 	sw	gp,48(sp)
  408b14:	afbf0068 	sw	ra,104(sp)
  408b18:	afbe0064 	sw	s8,100(sp)
  408b1c:	afbc0060 	sw	gp,96(sp)
  408b20:	03a0f021 	move	s8,sp
  408b24:	afc40070 	sw	a0,112(s8)
  408b28:	afc50074 	sw	a1,116(s8)

/*	
 *	Load kernel_alg arrays pluto's SADB_REGISTER	
 * 	user by pluto/kernel.c
 */

void
kernel_alg_register_pfkey(void *buf, int buflen)
{
	/*	
	 *	Trick: one 'type-mangle-able' pointer to
	 *	ease offset/assign 
	 */
	union {
		const struct sadb_msg *msg;
		const struct sadb_supported *supported;
		const struct sadb_ext *ext;
		const struct sadb_alg *alg;
		const char *ch;
	} sadb;
	const struct sadb_msg *msg_buf=buf;
  408b2c:	8fc20070 	lw	v0,112(s8)
  408b30:	00000000 	nop
  408b34:	afc2003c 	sw	v0,60(s8)
	int satype;
	int msglen;
	int i=0;
  408b38:	afc00048 	sw	zero,72(s8)
	/*	Initialize alg arrays 	*/
	kernel_alg_init();
  408b3c:	8f998024 	lw	t9,-32732(gp)
  408b40:	00000000 	nop
  408b44:	2739802c 	addiu	t9,t9,-32724
  408b48:	00000000 	nop
  408b4c:	0320f809 	jalr	t9
  408b50:	00000000 	nop
  408b54:	8fdc0030 	lw	gp,48(s8)
  408b58:	00000000 	nop
	satype=msg_buf->sadb_msg_satype;
  408b5c:	8fc2003c 	lw	v0,60(s8)
  408b60:	00000000 	nop
  408b64:	90420003 	lbu	v0,3(v0)
  408b68:	00000000 	nop
  408b6c:	afc20040 	sw	v0,64(s8)
	sadb.msg=msg_buf;
  408b70:	8fc2003c 	lw	v0,60(s8)
  408b74:	00000000 	nop
  408b78:	afc20038 	sw	v0,56(s8)
	msglen=sadb.msg->sadb_msg_len*IPSEC_PFKEYv2_ALIGN;
  408b7c:	8fc20038 	lw	v0,56(s8)
  408b80:	00000000 	nop
  408b84:	94420004 	lhu	v0,4(v0)
  408b88:	00000000 	nop
  408b8c:	000210c0 	sll	v0,v0,0x3
  408b90:	afc20044 	sw	v0,68(s8)
	msglen-=sizeof(struct sadb_msg);
  408b94:	8fc20044 	lw	v0,68(s8)
  408b98:	00000000 	nop
  408b9c:	2442fff0 	addiu	v0,v0,-16
  408ba0:	afc20044 	sw	v0,68(s8)
	buflen-=sizeof(struct sadb_msg);
  408ba4:	8fc20074 	lw	v0,116(s8)
  408ba8:	00000000 	nop
  408bac:	2442fff0 	addiu	v0,v0,-16
  408bb0:	afc20074 	sw	v0,116(s8)
	passert(buflen>0);
  408bb4:	8fc20074 	lw	v0,116(s8)
  408bb8:	00000000 	nop
  408bbc:	1c40000e 	bgtz	v0,408bf8 <kernel_alg_register_pfkey+0xf8>
  408bc0:	00000000 	nop
  408bc4:	8f848020 	lw	a0,-32736(gp)
  408bc8:	00000000 	nop
  408bcc:	24843908 	addiu	a0,a0,14600
  408bd0:	8f858020 	lw	a1,-32736(gp)
  408bd4:	00000000 	nop
  408bd8:	24a53914 	addiu	a1,a1,14612
  408bdc:	24060174 	li	a2,372
  408be0:	8f998bb8 	lw	t9,-29768(gp)
  408be4:	00000000 	nop
  408be8:	0320f809 	jalr	t9
  408bec:	00000000 	nop
  408bf0:	8fdc0030 	lw	gp,48(s8)
  408bf4:	00000000 	nop
	sadb.msg++;
  408bf8:	8fc20038 	lw	v0,56(s8)
  408bfc:	00000000 	nop
  408c00:	24420010 	addiu	v0,v0,16
  408c04:	afc20038 	sw	v0,56(s8)
	while(msglen) {
  408c08:	8fc20044 	lw	v0,68(s8)
  408c0c:	00000000 	nop
  408c10:	14400003 	bnez	v0,408c20 <kernel_alg_register_pfkey+0x120>
  408c14:	00000000 	nop
  408c18:	100000b6 	b	408ef4 <kernel_alg_register_pfkey+0x3f4>
  408c1c:	00000000 	nop
		int supp_exttype=sadb.supported->sadb_supported_exttype;
  408c20:	8fc20038 	lw	v0,56(s8)
  408c24:	00000000 	nop
  408c28:	94420002 	lhu	v0,2(v0)
  408c2c:	00000000 	nop
  408c30:	afc2004c 	sw	v0,76(s8)
		int supp_len;
		supp_len=sadb.supported->sadb_supported_len*IPSEC_PFKEYv2_ALIGN;
  408c34:	8fc20038 	lw	v0,56(s8)
  408c38:	00000000 	nop
  408c3c:	94420000 	lhu	v0,0(v0)
  408c40:	00000000 	nop
  408c44:	000210c0 	sll	v0,v0,0x3
  408c48:	afc20050 	sw	v0,80(s8)
		DBG(DBG_KLIPS, DBG_log("kernel_alg_register_pfkey(): SADB_SATYPE_%s: "
  408c4c:	8f8284f8 	lw	v0,-31496(gp)
  408c50:	00000000 	nop
  408c54:	8c420000 	lw	v0,0(v0)
  408c58:	00000000 	nop
  408c5c:	30420040 	andi	v0,v0,0x40
  408c60:	10400020 	beqz	v0,408ce4 <kernel_alg_register_pfkey+0x1e4>
  408c64:	00000000 	nop
  408c68:	8fc30040 	lw	v1,64(s8)
  408c6c:	24020003 	li	v0,3
  408c70:	14620008 	bne	v1,v0,408c94 <kernel_alg_register_pfkey+0x194>
  408c74:	00000000 	nop
  408c78:	8f828020 	lw	v0,-32736(gp)
  408c7c:	00000000 	nop
  408c80:	24423924 	addiu	v0,v0,14628
  408c84:	00000000 	nop
  408c88:	afc20058 	sw	v0,88(s8)
  408c8c:	10000006 	b	408ca8 <kernel_alg_register_pfkey+0x1a8>
  408c90:	00000000 	nop
  408c94:	8f828020 	lw	v0,-32736(gp)
  408c98:	00000000 	nop
  408c9c:	24423928 	addiu	v0,v0,14632
  408ca0:	00000000 	nop
  408ca4:	afc20058 	sw	v0,88(s8)
  408ca8:	8fc2003c 	lw	v0,60(s8)
  408cac:	00000000 	nop
  408cb0:	94420004 	lhu	v0,4(v0)
  408cb4:	8f848020 	lw	a0,-32736(gp)
  408cb8:	00000000 	nop
  408cbc:	2484392c 	addiu	a0,a0,14636
  408cc0:	8fc50058 	lw	a1,88(s8)
  408cc4:	00403021 	move	a2,v0
  408cc8:	8fc70050 	lw	a3,80(s8)
  408ccc:	8f9983b8 	lw	t9,-31816(gp)
  408cd0:	00000000 	nop
  408cd4:	0320f809 	jalr	t9
  408cd8:	00000000 	nop
  408cdc:	8fdc0030 	lw	gp,48(s8)
  408ce0:	00000000 	nop
			"sadb_msg_len=%d sadb_supported_len=%d",
			satype==SADB_SATYPE_ESP? "ESP" : "AH",
			msg_buf->sadb_msg_len, 
			supp_len));
		sadb.supported++;
  408ce4:	8fc20038 	lw	v0,56(s8)
  408ce8:	00000000 	nop
  408cec:	24420008 	addiu	v0,v0,8
  408cf0:	afc20038 	sw	v0,56(s8)
		msglen-=supp_len;
  408cf4:	8fc30044 	lw	v1,68(s8)
  408cf8:	8fc20050 	lw	v0,80(s8)
  408cfc:	00000000 	nop
  408d00:	00621023 	subu	v0,v1,v0
  408d04:	afc20044 	sw	v0,68(s8)
		buflen-=supp_len;
  408d08:	8fc30074 	lw	v1,116(s8)
  408d0c:	8fc20050 	lw	v0,80(s8)
  408d10:	00000000 	nop
  408d14:	00621023 	subu	v0,v1,v0
  408d18:	afc20074 	sw	v0,116(s8)
		passert(buflen>=0);
  408d1c:	8fc20074 	lw	v0,116(s8)
  408d20:	00000000 	nop
  408d24:	0441000e 	bgez	v0,408d60 <kernel_alg_register_pfkey+0x260>
  408d28:	00000000 	nop
  408d2c:	8f848020 	lw	a0,-32736(gp)
  408d30:	00000000 	nop
  408d34:	24843980 	addiu	a0,a0,14720
  408d38:	8f858020 	lw	a1,-32736(gp)
  408d3c:	00000000 	nop
  408d40:	24a53914 	addiu	a1,a1,14612
  408d44:	24060182 	li	a2,386
  408d48:	8f998bb8 	lw	t9,-29768(gp)
  408d4c:	00000000 	nop
  408d50:	0320f809 	jalr	t9
  408d54:	00000000 	nop
  408d58:	8fdc0030 	lw	gp,48(s8)
  408d5c:	00000000 	nop
		for (supp_len-=sizeof(struct sadb_supported);
  408d60:	8fc20050 	lw	v0,80(s8)
  408d64:	00000000 	nop
  408d68:	2442fff8 	addiu	v0,v0,-8
  408d6c:	afc20050 	sw	v0,80(s8)
  408d70:	8fc20050 	lw	v0,80(s8)
  408d74:	00000000 	nop
  408d78:	14400003 	bnez	v0,408d88 <kernel_alg_register_pfkey+0x288>
  408d7c:	00000000 	nop
  408d80:	1000ffa1 	b	408c08 <kernel_alg_register_pfkey+0x108>
  408d84:	00000000 	nop
			supp_len;
			supp_len-=sizeof(struct sadb_alg), sadb.alg++,i++) {
			int ret;
			ret=kernel_alg_add(satype, supp_exttype, sadb.alg);
  408d88:	8fc40040 	lw	a0,64(s8)
  408d8c:	8fc5004c 	lw	a1,76(s8)
  408d90:	8fc60038 	lw	a2,56(s8)
  408d94:	8f998024 	lw	t9,-32732(gp)
  408d98:	00000000 	nop
  408d9c:	27398144 	addiu	t9,t9,-32444
  408da0:	00000000 	nop
  408da4:	0320f809 	jalr	t9
  408da8:	00000000 	nop
  408dac:	8fdc0030 	lw	gp,48(s8)
  408db0:	afc20054 	sw	v0,84(s8)
			DBG(DBG_KLIPS, DBG_log("kernel_alg_register_pfkey(): SADB_SATYPE_%s: "
  408db4:	8f8284f8 	lw	v0,-31496(gp)
  408db8:	00000000 	nop
  408dbc:	8c420000 	lw	v0,0(v0)
  408dc0:	00000000 	nop
  408dc4:	30420040 	andi	v0,v0,0x40
  408dc8:	1040003c 	beqz	v0,408ebc <kernel_alg_register_pfkey+0x3bc>
  408dcc:	00000000 	nop
  408dd0:	8fc30040 	lw	v1,64(s8)
  408dd4:	24020003 	li	v0,3
  408dd8:	14620008 	bne	v1,v0,408dfc <kernel_alg_register_pfkey+0x2fc>
  408ddc:	00000000 	nop
  408de0:	8f828020 	lw	v0,-32736(gp)
  408de4:	00000000 	nop
  408de8:	24423924 	addiu	v0,v0,14628
  408dec:	00000000 	nop
  408df0:	afc2005c 	sw	v0,92(s8)
  408df4:	10000006 	b	408e10 <kernel_alg_register_pfkey+0x310>
  408df8:	00000000 	nop
  408dfc:	8f828020 	lw	v0,-32736(gp)
  408e00:	00000000 	nop
  408e04:	24423928 	addiu	v0,v0,14632
  408e08:	00000000 	nop
  408e0c:	afc2005c 	sw	v0,92(s8)
  408e10:	8fc20040 	lw	v0,64(s8)
  408e14:	00000000 	nop
  408e18:	afa20010 	sw	v0,16(sp)
  408e1c:	8fc20038 	lw	v0,56(s8)
  408e20:	00000000 	nop
  408e24:	90420000 	lbu	v0,0(v0)
  408e28:	00000000 	nop
  408e2c:	afa20014 	sw	v0,20(sp)
  408e30:	8fc20038 	lw	v0,56(s8)
  408e34:	00000000 	nop
  408e38:	90420001 	lbu	v0,1(v0)
  408e3c:	00000000 	nop
  408e40:	afa20018 	sw	v0,24(sp)
  408e44:	8fc20038 	lw	v0,56(s8)
  408e48:	00000000 	nop
  408e4c:	94420002 	lhu	v0,2(v0)
  408e50:	00000000 	nop
  408e54:	afa2001c 	sw	v0,28(sp)
  408e58:	8fc20038 	lw	v0,56(s8)
  408e5c:	00000000 	nop
  408e60:	94420004 	lhu	v0,4(v0)
  408e64:	00000000 	nop
  408e68:	afa20020 	sw	v0,32(sp)
  408e6c:	8fc20038 	lw	v0,56(s8)
  408e70:	00000000 	nop
  408e74:	94420006 	lhu	v0,6(v0)
  408e78:	00000000 	nop
  408e7c:	afa20024 	sw	v0,36(sp)
  408e80:	8fc20054 	lw	v0,84(s8)
  408e84:	00000000 	nop
  408e88:	afa20028 	sw	v0,40(sp)
  408e8c:	8f848020 	lw	a0,-32736(gp)
  408e90:	00000000 	nop
  408e94:	2484398c 	addiu	a0,a0,14732
  408e98:	8fc5005c 	lw	a1,92(s8)
  408e9c:	8fc60048 	lw	a2,72(s8)
  408ea0:	8fc7004c 	lw	a3,76(s8)
  408ea4:	8f9983b8 	lw	t9,-31816(gp)
  408ea8:	00000000 	nop
  408eac:	0320f809 	jalr	t9
  408eb0:	00000000 	nop
  408eb4:	8fdc0030 	lw	gp,48(s8)
  408eb8:	00000000 	nop
  408ebc:	8fc20050 	lw	v0,80(s8)
  408ec0:	00000000 	nop
  408ec4:	2442fff8 	addiu	v0,v0,-8
  408ec8:	afc20050 	sw	v0,80(s8)
  408ecc:	8fc20038 	lw	v0,56(s8)
  408ed0:	00000000 	nop
  408ed4:	24420008 	addiu	v0,v0,8
  408ed8:	afc20038 	sw	v0,56(s8)
  408edc:	8fc20048 	lw	v0,72(s8)
  408ee0:	00000000 	nop
  408ee4:	24420001 	addiu	v0,v0,1
  408ee8:	afc20048 	sw	v0,72(s8)
  408eec:	1000ffa0 	b	408d70 <kernel_alg_register_pfkey+0x270>
  408ef0:	00000000 	nop
				"alg[%d], exttype=%d, satype=%d, alg_id=%d, "
				"alg_ivlen=%d, alg_minbits=%d, alg_maxbits=%d, "
				"res=%d, ret=%d",
				satype==SADB_SATYPE_ESP? "ESP" : "AH",
				i,
				supp_exttype,
				satype,
				sadb.alg->sadb_alg_id,
				sadb.alg->sadb_alg_ivlen,
				sadb.alg->sadb_alg_minbits,
				sadb.alg->sadb_alg_maxbits,
				sadb.alg->sadb_alg_reserved,
				ret));
		}
	}
}
  408ef4:	03c0e821 	move	sp,s8
  408ef8:	8fbf0068 	lw	ra,104(sp)
  408efc:	8fbe0064 	lw	s8,100(sp)
  408f00:	27bd0070 	addiu	sp,sp,112
  408f04:	03e00008 	jr	ra
  408f08:	00000000 	nop

00408f0c <kernel_alg_esp_enc_keylen>:
  408f0c:	3c1c0fc0 	lui	gp,0xfc0
  408f10:	279c3a64 	addiu	gp,gp,14948
  408f14:	0399e021 	addu	gp,gp,t9
  408f18:	27bdffd0 	addiu	sp,sp,-48
  408f1c:	afbc0010 	sw	gp,16(sp)
  408f20:	afbf0028 	sw	ra,40(sp)
  408f24:	afbe0024 	sw	s8,36(sp)
  408f28:	afbc0020 	sw	gp,32(sp)
  408f2c:	03a0f021 	move	s8,sp
  408f30:	afc40030 	sw	a0,48(s8)

int
kernel_alg_esp_enc_keylen(int alg_id)
{
	int keylen=0;
  408f34:	afc00018 	sw	zero,24(s8)
	if (!ESP_EALG_PRESENT(alg_id))
  408f38:	8fc20030 	lw	v0,48(s8)
  408f3c:	00000000 	nop
  408f40:	28420100 	slti	v0,v0,256
  408f44:	10400021 	beqz	v0,408fcc <kernel_alg_esp_enc_keylen+0xc0>
  408f48:	00000000 	nop
  408f4c:	8fc20030 	lw	v0,48(s8)
  408f50:	00000000 	nop
  408f54:	000210c0 	sll	v0,v0,0x3
  408f58:	8f818018 	lw	at,-32744(gp)
  408f5c:	00000000 	nop
  408f60:	24215690 	addiu	at,at,22160
  408f64:	00221021 	addu	v0,at,v0
  408f68:	90430000 	lbu	v1,0(v0)
  408f6c:	8fc20030 	lw	v0,48(s8)
  408f70:	00000000 	nop
  408f74:	14620015 	bne	v1,v0,408fcc <kernel_alg_esp_enc_keylen+0xc0>
  408f78:	00000000 	nop
		goto none;
	keylen=esp_ealg[alg_id].sadb_alg_maxbits/BITS_PER_BYTE;
  408f7c:	8fc20030 	lw	v0,48(s8)
  408f80:	00000000 	nop
  408f84:	000210c0 	sll	v0,v0,0x3
  408f88:	8f818018 	lw	at,-32744(gp)
  408f8c:	00000000 	nop
  408f90:	24215694 	addiu	at,at,22164
  408f94:	00221021 	addu	v0,at,v0
  408f98:	94420000 	lhu	v0,0(v0)
  408f9c:	00000000 	nop
  408fa0:	000210c2 	srl	v0,v0,0x3
  408fa4:	3042ffff 	andi	v0,v0,0xffff
  408fa8:	afc20018 	sw	v0,24(s8)
	switch (alg_id) {
  408fac:	8fc30030 	lw	v1,48(s8)
  408fb0:	2402000c 	li	v0,12
  408fb4:	10620003 	beq	v1,v0,408fc4 <kernel_alg_esp_enc_keylen+0xb8>
  408fb8:	00000000 	nop
  408fbc:	10000003 	b	408fcc <kernel_alg_esp_enc_keylen+0xc0>
  408fc0:	00000000 	nop
		/* 
		 * this is veryUgly[TM]
		 * Peer should have sent KEY_LENGTH attribute for ESP_AES
		 * but if not do force it to 128 instead of using sadb_alg_maxbits
		 * from kernel.
		 * That's the case for alg-0.7.x and earlier versions.
		 *
		 * --jjo 01-Oct-02
		 */
		case ESP_AES:
			keylen=128/BITS_PER_BYTE;
  408fc4:	24020010 	li	v0,16
  408fc8:	afc20018 	sw	v0,24(s8)
			break;
	}
none:	
	DBG(DBG_KLIPS, DBG_log("kernel_alg_esp_enc_keylen():"
  408fcc:	8f8284f8 	lw	v0,-31496(gp)
  408fd0:	00000000 	nop
  408fd4:	8c420000 	lw	v0,0(v0)
  408fd8:	00000000 	nop
  408fdc:	30420040 	andi	v0,v0,0x40
  408fe0:	1040000c 	beqz	v0,409014 <kernel_alg_esp_enc_keylen+0x108>
  408fe4:	00000000 	nop
  408fe8:	8f848020 	lw	a0,-32736(gp)
  408fec:	00000000 	nop
  408ff0:	24843a24 	addiu	a0,a0,14884
  408ff4:	8fc50030 	lw	a1,48(s8)
  408ff8:	8fc60018 	lw	a2,24(s8)
  408ffc:	8f9983b8 	lw	t9,-31816(gp)
  409000:	00000000 	nop
  409004:	0320f809 	jalr	t9
  409008:	00000000 	nop
  40900c:	8fdc0010 	lw	gp,16(s8)
  409010:	00000000 	nop
		"alg_id=%d, keylen=%d",
		alg_id, keylen));
	
	return keylen;
  409014:	8fc20018 	lw	v0,24(s8)
  409018:	00000000 	nop
}
  40901c:	03c0e821 	move	sp,s8
  409020:	8fbf0028 	lw	ra,40(sp)
  409024:	8fbe0024 	lw	s8,36(sp)
  409028:	27bd0030 	addiu	sp,sp,48
  40902c:	03e00008 	jr	ra
  409030:	00000000 	nop

00409034 <kernel_alg_esp_sadb_alg>:
  409034:	3c1c0fc0 	lui	gp,0xfc0
  409038:	279c393c 	addiu	gp,gp,14652
  40903c:	0399e021 	addu	gp,gp,t9
  409040:	27bdffd0 	addiu	sp,sp,-48
  409044:	afbc0010 	sw	gp,16(sp)
  409048:	afbf0028 	sw	ra,40(sp)
  40904c:	afbe0024 	sw	s8,36(sp)
  409050:	afbc0020 	sw	gp,32(sp)
  409054:	03a0f021 	move	s8,sp
  409058:	afc40030 	sw	a0,48(s8)

struct sadb_alg *
kernel_alg_esp_sadb_alg(int alg_id)
{
	struct sadb_alg *sadb_alg=NULL;
  40905c:	afc00018 	sw	zero,24(s8)
	if (!ESP_EALG_PRESENT(alg_id))
  409060:	8fc20030 	lw	v0,48(s8)
  409064:	00000000 	nop
  409068:	28420100 	slti	v0,v0,256
  40906c:	10400015 	beqz	v0,4090c4 <kernel_alg_esp_sadb_alg+0x90>
  409070:	00000000 	nop
  409074:	8fc20030 	lw	v0,48(s8)
  409078:	00000000 	nop
  40907c:	000210c0 	sll	v0,v0,0x3
  409080:	8f818018 	lw	at,-32744(gp)
  409084:	00000000 	nop
  409088:	24215690 	addiu	at,at,22160
  40908c:	00221021 	addu	v0,at,v0
  409090:	90430000 	lbu	v1,0(v0)
  409094:	8fc20030 	lw	v0,48(s8)
  409098:	00000000 	nop
  40909c:	14620009 	bne	v1,v0,4090c4 <kernel_alg_esp_sadb_alg+0x90>
  4090a0:	00000000 	nop
		goto none;
	sadb_alg=&esp_ealg[alg_id];
  4090a4:	8fc20030 	lw	v0,48(s8)
  4090a8:	00000000 	nop
  4090ac:	000210c0 	sll	v0,v0,0x3
  4090b0:	8f818018 	lw	at,-32744(gp)
  4090b4:	00000000 	nop
  4090b8:	24215690 	addiu	at,at,22160
  4090bc:	00221021 	addu	v0,at,v0
  4090c0:	afc20018 	sw	v0,24(s8)
none:
	DBG(DBG_KLIPS, DBG_log("kernel_alg_esp_sadb_alg():"
  4090c4:	8f8284f8 	lw	v0,-31496(gp)
  4090c8:	00000000 	nop
  4090cc:	8c420000 	lw	v0,0(v0)
  4090d0:	00000000 	nop
  4090d4:	30420040 	andi	v0,v0,0x40
  4090d8:	1040000c 	beqz	v0,40910c <kernel_alg_esp_sadb_alg+0xd8>
  4090dc:	00000000 	nop
  4090e0:	8f848020 	lw	a0,-32736(gp)
  4090e4:	00000000 	nop
  4090e8:	24843a58 	addiu	a0,a0,14936
  4090ec:	8fc50030 	lw	a1,48(s8)
  4090f0:	8fc60018 	lw	a2,24(s8)
  4090f4:	8f9983b8 	lw	t9,-31816(gp)
  4090f8:	00000000 	nop
  4090fc:	0320f809 	jalr	t9
  409100:	00000000 	nop
  409104:	8fdc0010 	lw	gp,16(s8)
  409108:	00000000 	nop
		"alg_id=%d, sadb_alg=%p",
		alg_id, sadb_alg));
	return sadb_alg;
  40910c:	8fc20018 	lw	v0,24(s8)
  409110:	00000000 	nop
}
  409114:	03c0e821 	move	sp,s8
  409118:	8fbf0028 	lw	ra,40(sp)
  40911c:	8fbe0024 	lw	s8,36(sp)
  409120:	27bd0030 	addiu	sp,sp,48
  409124:	03e00008 	jr	ra
  409128:	00000000 	nop

0040912c <kernel_alg_show_status>:
  40912c:	3c1c0fc0 	lui	gp,0xfc0
  409130:	279c3844 	addiu	gp,gp,14404
  409134:	0399e021 	addu	gp,gp,t9
  409138:	27bdffb8 	addiu	sp,sp,-72
  40913c:	afbc0020 	sw	gp,32(sp)
  409140:	afbf0040 	sw	ra,64(sp)
  409144:	afbe003c 	sw	s8,60(sp)
  409148:	afbc0038 	sw	gp,56(sp)
  40914c:	03a0f021 	move	s8,sp

#ifndef NO_PLUTO
void kernel_alg_show_status(void)
{
	unsigned sadb_id,id;
	struct sadb_alg *alg_p;
	ESP_EALG_FOR_EACH(sadb_id) {
  409150:	24020001 	li	v0,1
  409154:	afc20028 	sw	v0,40(s8)
  409158:	8fc20028 	lw	v0,40(s8)
  40915c:	00000000 	nop
  409160:	2c420100 	sltiu	v0,v0,256
  409164:	14400003 	bnez	v0,409174 <kernel_alg_show_status+0x48>
  409168:	00000000 	nop
  40916c:	10000046 	b	409288 <kernel_alg_show_status+0x15c>
  409170:	00000000 	nop
  409174:	8fc20028 	lw	v0,40(s8)
  409178:	00000000 	nop
  40917c:	2c420100 	sltiu	v0,v0,256
  409180:	1040003b 	beqz	v0,409270 <kernel_alg_show_status+0x144>
  409184:	00000000 	nop
  409188:	8fc20028 	lw	v0,40(s8)
  40918c:	00000000 	nop
  409190:	000210c0 	sll	v0,v0,0x3
  409194:	8f818018 	lw	at,-32744(gp)
  409198:	00000000 	nop
  40919c:	24215690 	addiu	at,at,22160
  4091a0:	00221021 	addu	v0,at,v0
  4091a4:	90430000 	lbu	v1,0(v0)
  4091a8:	8fc20028 	lw	v0,40(s8)
  4091ac:	00000000 	nop
  4091b0:	1462002f 	bne	v1,v0,409270 <kernel_alg_show_status+0x144>
  4091b4:	00000000 	nop
		id=sadb_id;
  4091b8:	8fc20028 	lw	v0,40(s8)
  4091bc:	00000000 	nop
  4091c0:	afc2002c 	sw	v0,44(s8)
		alg_p=&esp_ealg[sadb_id];
  4091c4:	8fc20028 	lw	v0,40(s8)
  4091c8:	00000000 	nop
  4091cc:	000210c0 	sll	v0,v0,0x3
  4091d0:	8f818018 	lw	at,-32744(gp)
  4091d4:	00000000 	nop
  4091d8:	24215690 	addiu	at,at,22160
  4091dc:	00221021 	addu	v0,at,v0
  4091e0:	afc20030 	sw	v0,48(s8)
		whack_log(RC_COMMENT, "algorithm ESP encrypt: id=%d, name=%s, "
  4091e4:	8f848bf8 	lw	a0,-29704(gp)
  4091e8:	8fc5002c 	lw	a1,44(s8)
  4091ec:	8f9984bc 	lw	t9,-31556(gp)
  4091f0:	00000000 	nop
  4091f4:	0320f809 	jalr	t9
  4091f8:	00000000 	nop
  4091fc:	8fdc0020 	lw	gp,32(s8)
  409200:	00401821 	move	v1,v0
  409204:	8fc20030 	lw	v0,48(s8)
  409208:	00000000 	nop
  40920c:	90420001 	lbu	v0,1(v0)
  409210:	00000000 	nop
  409214:	afa20010 	sw	v0,16(sp)
  409218:	8fc20030 	lw	v0,48(s8)
  40921c:	00000000 	nop
  409220:	94420002 	lhu	v0,2(v0)
  409224:	00000000 	nop
  409228:	afa20014 	sw	v0,20(sp)
  40922c:	8fc20030 	lw	v0,48(s8)
  409230:	00000000 	nop
  409234:	94420004 	lhu	v0,4(v0)
  409238:	00000000 	nop
  40923c:	afa20018 	sw	v0,24(sp)
  409240:	00002021 	move	a0,zero
  409244:	8f858020 	lw	a1,-32736(gp)
  409248:	00000000 	nop
  40924c:	24a53a8c 	addiu	a1,a1,14988
  409250:	8fc6002c 	lw	a2,44(s8)
  409254:	00603821 	move	a3,v1
  409258:	8f9982a8 	lw	t9,-32088(gp)
  40925c:	00000000 	nop
  409260:	0320f809 	jalr	t9
  409264:	00000000 	nop
  409268:	8fdc0020 	lw	gp,32(s8)
  40926c:	00000000 	nop
  409270:	8fc20028 	lw	v0,40(s8)
  409274:	00000000 	nop
  409278:	24420001 	addiu	v0,v0,1
  40927c:	afc20028 	sw	v0,40(s8)
  409280:	1000ffb5 	b	409158 <kernel_alg_show_status+0x2c>
  409284:	00000000 	nop
				"ivlen=%d, keysizemin=%d, keysizemax=%d"
			, id
			, enum_name(&esp_transformid_names, id)
			, alg_p->sadb_alg_ivlen
			, alg_p->sadb_alg_minbits
			, alg_p->sadb_alg_maxbits
		 );
		
	}
	ESP_AALG_FOR_EACH(sadb_id) {
  409288:	24020001 	li	v0,1
  40928c:	afc20028 	sw	v0,40(s8)
  409290:	8fc20028 	lw	v0,40(s8)
  409294:	00000000 	nop
  409298:	2c420010 	sltiu	v0,v0,16
  40929c:	14400003 	bnez	v0,4092ac <kernel_alg_show_status+0x180>
  4092a0:	00000000 	nop
  4092a4:	10000045 	b	4093bc <kernel_alg_show_status+0x290>
  4092a8:	00000000 	nop
  4092ac:	8fc20028 	lw	v0,40(s8)
  4092b0:	00000000 	nop
  4092b4:	2c420010 	sltiu	v0,v0,16
  4092b8:	1040003a 	beqz	v0,4093a4 <kernel_alg_show_status+0x278>
  4092bc:	00000000 	nop
  4092c0:	8fc20028 	lw	v0,40(s8)
  4092c4:	00000000 	nop
  4092c8:	000210c0 	sll	v0,v0,0x3
  4092cc:	8f818018 	lw	at,-32744(gp)
  4092d0:	00000000 	nop
  4092d4:	24215610 	addiu	at,at,22032
  4092d8:	00221021 	addu	v0,at,v0
  4092dc:	90430000 	lbu	v1,0(v0)
  4092e0:	8fc20028 	lw	v0,40(s8)
  4092e4:	00000000 	nop
  4092e8:	1462002e 	bne	v1,v0,4093a4 <kernel_alg_show_status+0x278>
  4092ec:	00000000 	nop
		id=alg_info_esp_sadb2aa(sadb_id);
  4092f0:	8fc40028 	lw	a0,40(s8)
  4092f4:	8f998278 	lw	t9,-32136(gp)
  4092f8:	00000000 	nop
  4092fc:	0320f809 	jalr	t9
  409300:	00000000 	nop
  409304:	8fdc0020 	lw	gp,32(s8)
  409308:	afc2002c 	sw	v0,44(s8)
		alg_p=&esp_aalg[sadb_id];
  40930c:	8fc20028 	lw	v0,40(s8)
  409310:	00000000 	nop
  409314:	000210c0 	sll	v0,v0,0x3
  409318:	8f818018 	lw	at,-32744(gp)
  40931c:	00000000 	nop
  409320:	24215610 	addiu	at,at,22032
  409324:	00221021 	addu	v0,at,v0
  409328:	afc20030 	sw	v0,48(s8)
		whack_log(RC_COMMENT, "algorithm ESP auth attr: id=%d, name=%s, "
  40932c:	8f848424 	lw	a0,-31708(gp)
  409330:	8fc5002c 	lw	a1,44(s8)
  409334:	8f9984bc 	lw	t9,-31556(gp)
  409338:	00000000 	nop
  40933c:	0320f809 	jalr	t9
  409340:	00000000 	nop
  409344:	8fdc0020 	lw	gp,32(s8)
  409348:	00401821 	move	v1,v0
  40934c:	8fc20030 	lw	v0,48(s8)
  409350:	00000000 	nop
  409354:	94420002 	lhu	v0,2(v0)
  409358:	00000000 	nop
  40935c:	afa20010 	sw	v0,16(sp)
  409360:	8fc20030 	lw	v0,48(s8)
  409364:	00000000 	nop
  409368:	94420004 	lhu	v0,4(v0)
  40936c:	00000000 	nop
  409370:	afa20014 	sw	v0,20(sp)
  409374:	00002021 	move	a0,zero
  409378:	8f858020 	lw	a1,-32736(gp)
  40937c:	00000000 	nop
  409380:	24a53adc 	addiu	a1,a1,15068
  409384:	8fc6002c 	lw	a2,44(s8)
  409388:	00603821 	move	a3,v1
  40938c:	8f9982a8 	lw	t9,-32088(gp)
  409390:	00000000 	nop
  409394:	0320f809 	jalr	t9
  409398:	00000000 	nop
  40939c:	8fdc0020 	lw	gp,32(s8)
  4093a0:	00000000 	nop
  4093a4:	8fc20028 	lw	v0,40(s8)
  4093a8:	00000000 	nop
  4093ac:	24420001 	addiu	v0,v0,1
  4093b0:	afc20028 	sw	v0,40(s8)
  4093b4:	1000ffb6 	b	409290 <kernel_alg_show_status+0x164>
  4093b8:	00000000 	nop
				"keysizemin=%d, keysizemax=%d"
			, id
			, enum_name(&auth_alg_names, id)
			, alg_p->sadb_alg_minbits
			, alg_p->sadb_alg_maxbits
		 );
	}
}
  4093bc:	03c0e821 	move	sp,s8
  4093c0:	8fbf0040 	lw	ra,64(sp)
  4093c4:	8fbe003c 	lw	s8,60(sp)
  4093c8:	27bd0048 	addiu	sp,sp,72
  4093cc:	03e00008 	jr	ra
  4093d0:	00000000 	nop

004093d4 <kernel_alg_show_connection>:
  4093d4:	3c1c0fc0 	lui	gp,0xfc0
  4093d8:	279c359c 	addiu	gp,gp,13724
  4093dc:	0399e021 	addu	gp,gp,t9
  4093e0:	27bdfeb8 	addiu	sp,sp,-328
  4093e4:	afbc0020 	sw	gp,32(sp)
  4093e8:	afbf0140 	sw	ra,320(sp)
  4093ec:	afbe013c 	sw	s8,316(sp)
  4093f0:	afbc0138 	sw	gp,312(sp)
  4093f4:	03a0f021 	move	s8,sp
  4093f8:	afc40148 	sw	a0,328(s8)
  4093fc:	afc5014c 	sw	a1,332(s8)
void
kernel_alg_show_connection(struct connection *c, const char *instance)
{
	char buf[256];
	struct state *st;
	if (c->alg_info_esp) {
  409400:	8fc20148 	lw	v0,328(s8)
  409404:	00000000 	nop
  409408:	8c4201bc 	lw	v0,444(v0)
  40940c:	00000000 	nop
  409410:	1040001c 	beqz	v0,409484 <kernel_alg_show_connection+0xb0>
  409414:	00000000 	nop
		alg_info_snprint(buf, sizeof(buf), (struct alg_info *)c->alg_info_esp);
  409418:	27c40028 	addiu	a0,s8,40
  40941c:	24050100 	li	a1,256
  409420:	8fc20148 	lw	v0,328(s8)
  409424:	00000000 	nop
  409428:	8c4601bc 	lw	a2,444(v0)
  40942c:	8f998068 	lw	t9,-32664(gp)
  409430:	00000000 	nop
  409434:	0320f809 	jalr	t9
  409438:	00000000 	nop
  40943c:	8fdc0020 	lw	gp,32(s8)
  409440:	00000000 	nop
		whack_log(RC_COMMENT
  409444:	27c20028 	addiu	v0,s8,40
  409448:	afa20010 	sw	v0,16(sp)
  40944c:	00002021 	move	a0,zero
  409450:	8f858020 	lw	a1,-32736(gp)
  409454:	00000000 	nop
  409458:	24a53b24 	addiu	a1,a1,15140
  40945c:	8fc20148 	lw	v0,328(s8)
  409460:	00000000 	nop
  409464:	8c460000 	lw	a2,0(v0)
  409468:	8fc7014c 	lw	a3,332(s8)
  40946c:	8f9982a8 	lw	t9,-32088(gp)
  409470:	00000000 	nop
  409474:	0320f809 	jalr	t9
  409478:	00000000 	nop
  40947c:	8fdc0020 	lw	gp,32(s8)
  409480:	00000000 	nop
		    , "\"%s\"%s:   ESP algorithms wanted: %s"
		    , c->name
		    , instance
		    , buf);
	}
	if (c->alg_info_esp) {
  409484:	8fc20148 	lw	v0,328(s8)
  409488:	00000000 	nop
  40948c:	8c4201bc 	lw	v0,444(v0)
  409490:	00000000 	nop
  409494:	1040001c 	beqz	v0,409508 <kernel_alg_show_connection+0x134>
  409498:	00000000 	nop
		alg_info_snprint_esp(buf, sizeof(buf), c->alg_info_esp);
  40949c:	27c40028 	addiu	a0,s8,40
  4094a0:	24050100 	li	a1,256
  4094a4:	8fc20148 	lw	v0,328(s8)
  4094a8:	00000000 	nop
  4094ac:	8c4601bc 	lw	a2,444(v0)
  4094b0:	8f998458 	lw	t9,-31656(gp)
  4094b4:	00000000 	nop
  4094b8:	0320f809 	jalr	t9
  4094bc:	00000000 	nop
  4094c0:	8fdc0020 	lw	gp,32(s8)
  4094c4:	00000000 	nop
		whack_log(RC_COMMENT
  4094c8:	27c20028 	addiu	v0,s8,40
  4094cc:	afa20010 	sw	v0,16(sp)
  4094d0:	00002021 	move	a0,zero
  4094d4:	8f858020 	lw	a1,-32736(gp)
  4094d8:	00000000 	nop
  4094dc:	24a53b48 	addiu	a1,a1,15176
  4094e0:	8fc20148 	lw	v0,328(s8)
  4094e4:	00000000 	nop
  4094e8:	8c460000 	lw	a2,0(v0)
  4094ec:	8fc7014c 	lw	a3,332(s8)
  4094f0:	8f9982a8 	lw	t9,-32088(gp)
  4094f4:	00000000 	nop
  4094f8:	0320f809 	jalr	t9
  4094fc:	00000000 	nop
  409500:	8fdc0020 	lw	gp,32(s8)
  409504:	00000000 	nop
		    , "\"%s\"%s:   ESP algorithms loaded: %s"
		    , c->name
		    , instance
		    , buf);
	}
	st = state_with_serialno(c->newest_ipsec_sa);
  409508:	8fc20148 	lw	v0,328(s8)
  40950c:	00000000 	nop
  409510:	8c4401a8 	lw	a0,424(v0)
  409514:	8f99873c 	lw	t9,-30916(gp)
  409518:	00000000 	nop
  40951c:	0320f809 	jalr	t9
  409520:	00000000 	nop
  409524:	8fdc0020 	lw	gp,32(s8)
  409528:	afc20128 	sw	v0,296(s8)
	if (st && st->st_esp.present)
  40952c:	8fc20128 	lw	v0,296(s8)
  409530:	00000000 	nop
  409534:	1040006c 	beqz	v0,4096e8 <kernel_alg_show_connection+0x314>
  409538:	00000000 	nop
  40953c:	8fc20128 	lw	v0,296(s8)
  409540:	00000000 	nop
  409544:	8c420068 	lw	v0,104(v0)
  409548:	00000000 	nop
  40954c:	10400066 	beqz	v0,4096e8 <kernel_alg_show_connection+0x314>
  409550:	00000000 	nop
		whack_log(RC_COMMENT
  409554:	8fc20128 	lw	v0,296(s8)
  409558:	00000000 	nop
  40955c:	9042006c 	lbu	v0,108(v0)
  409560:	8f848bf8 	lw	a0,-29704(gp)
  409564:	00402821 	move	a1,v0
  409568:	8f9987fc 	lw	t9,-30724(gp)
  40956c:	00000000 	nop
  409570:	0320f809 	jalr	t9
  409574:	00000000 	nop
  409578:	8fdc0020 	lw	gp,32(s8)
  40957c:	24420004 	addiu	v0,v0,4
  409580:	afc2012c 	sw	v0,300(s8)
  409584:	8fc20128 	lw	v0,296(s8)
  409588:	00000000 	nop
  40958c:	9442007e 	lhu	v0,126(v0)
  409590:	8f848424 	lw	a0,-31708(gp)
  409594:	00402821 	move	a1,v0
  409598:	8f9987fc 	lw	t9,-30724(gp)
  40959c:	00000000 	nop
  4095a0:	0320f809 	jalr	t9
  4095a4:	00000000 	nop
  4095a8:	8fdc0020 	lw	gp,32(s8)
  4095ac:	2442000f 	addiu	v0,v0,15
  4095b0:	afc20130 	sw	v0,304(s8)
  4095b4:	8fc20148 	lw	v0,328(s8)
  4095b8:	00000000 	nop
  4095bc:	8c440008 	lw	a0,8(v0)
  4095c0:	8c45000c 	lw	a1,12(v0)
  4095c4:	24020000 	li	v0,0
  4095c8:	24030040 	li	v1,64
  4095cc:	00822024 	and	a0,a0,v0
  4095d0:	00a32824 	and	a1,a1,v1
  4095d4:	00801021 	move	v0,a0
  4095d8:	00451025 	or	v0,v0,a1
  4095dc:	10400021 	beqz	v0,409664 <kernel_alg_show_connection+0x290>
  4095e0:	00000000 	nop
  4095e4:	8fc20148 	lw	v0,328(s8)
  4095e8:	00000000 	nop
  4095ec:	8c4201bc 	lw	v0,444(v0)
  4095f0:	00000000 	nop
  4095f4:	8c420410 	lw	v0,1040(v0)
  4095f8:	00000000 	nop
  4095fc:	10400012 	beqz	v0,409648 <kernel_alg_show_connection+0x274>
  409600:	00000000 	nop
  409604:	8fc20148 	lw	v0,328(s8)
  409608:	00000000 	nop
  40960c:	8c4201bc 	lw	v0,444(v0)
  409610:	8f848080 	lw	a0,-32640(gp)
  409614:	8c450410 	lw	a1,1040(v0)
  409618:	8f9987fc 	lw	t9,-30724(gp)
  40961c:	00000000 	nop
  409620:	0320f809 	jalr	t9
  409624:	00000000 	nop
  409628:	8fdc0020 	lw	gp,32(s8)
  40962c:	afc20134 	sw	v0,308(s8)
  409630:	8fc20134 	lw	v0,308(s8)
  409634:	00000000 	nop
  409638:	2442000d 	addiu	v0,v0,13
  40963c:	afc20134 	sw	v0,308(s8)
  409640:	1000000d 	b	409678 <kernel_alg_show_connection+0x2a4>
  409644:	00000000 	nop
  409648:	8f828020 	lw	v0,-32736(gp)
  40964c:	00000000 	nop
  409650:	24423b6c 	addiu	v0,v0,15212
  409654:	00000000 	nop
  409658:	afc20134 	sw	v0,308(s8)
  40965c:	10000006 	b	409678 <kernel_alg_show_connection+0x2a4>
  409660:	00000000 	nop
  409664:	8f828020 	lw	v0,-32736(gp)
  409668:	00000000 	nop
  40966c:	24423b78 	addiu	v0,v0,15224
  409670:	00000000 	nop
  409674:	afc20134 	sw	v0,308(s8)
  409678:	8fc2012c 	lw	v0,300(s8)
  40967c:	00000000 	nop
  409680:	afa20010 	sw	v0,16(sp)
  409684:	8fc20128 	lw	v0,296(s8)
  409688:	00000000 	nop
  40968c:	94420080 	lhu	v0,128(v0)
  409690:	00000000 	nop
  409694:	afa20014 	sw	v0,20(sp)
  409698:	8fc20130 	lw	v0,304(s8)
  40969c:	00000000 	nop
  4096a0:	afa20018 	sw	v0,24(sp)
  4096a4:	8fc20134 	lw	v0,308(s8)
  4096a8:	00000000 	nop
  4096ac:	afa2001c 	sw	v0,28(sp)
  4096b0:	00002021 	move	a0,zero
  4096b4:	8f858020 	lw	a1,-32736(gp)
  4096b8:	00000000 	nop
  4096bc:	24a53b80 	addiu	a1,a1,15232
  4096c0:	8fc20148 	lw	v0,328(s8)
  4096c4:	00000000 	nop
  4096c8:	8c460000 	lw	a2,0(v0)
  4096cc:	8fc7014c 	lw	a3,332(s8)
  4096d0:	8f9982a8 	lw	t9,-32088(gp)
  4096d4:	00000000 	nop
  4096d8:	0320f809 	jalr	t9
  4096dc:	00000000 	nop
  4096e0:	8fdc0020 	lw	gp,32(s8)
  4096e4:	00000000 	nop
		, "\"%s\"%s:   ESP algorithm newest: %s_%d-%s; pfsgroup=%s"
		, c->name
		, instance
		, enum_show(&esp_transformid_names, st->st_esp.attrs.transid)
		+4 /* strlen("ESP_") */
		, st->st_esp.attrs.key_len
		, enum_show(&auth_alg_names, st->st_esp.attrs.auth)+
		+15 /* strlen("AUTH_ALGORITHM_") */
		, c->policy & POLICY_PFS ?
			c->alg_info_esp->esp_pfsgroup ?
					enum_show(&oakley_group_names, 
						c->alg_info_esp->esp_pfsgroup)
						+13 /*strlen("OAKLEY_GROUP_")*/
				: "<Phase1>"
			: "<N/A>"
	);
}
  4096e8:	03c0e821 	move	sp,s8
  4096ec:	8fbf0140 	lw	ra,320(sp)
  4096f0:	8fbe013c 	lw	s8,316(sp)
  4096f4:	27bd0148 	addiu	sp,sp,328
  4096f8:	03e00008 	jr	ra
  4096fc:	00000000 	nop

00409700 <kernel_alg_esp_auth_ok>:
  409700:	3c1c0fc0 	lui	gp,0xfc0
  409704:	279c3270 	addiu	gp,gp,12912
  409708:	0399e021 	addu	gp,gp,t9
  40970c:	27bdffd0 	addiu	sp,sp,-48
  409710:	afbc0010 	sw	gp,16(sp)
  409714:	afbf002c 	sw	ra,44(sp)
  409718:	afbe0028 	sw	s8,40(sp)
  40971c:	afbc0024 	sw	gp,36(sp)
  409720:	afb00020 	sw	s0,32(sp)
  409724:	03a0f021 	move	s8,sp
  409728:	afc40030 	sw	a0,48(s8)
  40972c:	afc50034 	sw	a1,52(s8)
#endif /* NO_PLUTO */

bool
kernel_alg_esp_auth_ok(int auth, 
		struct alg_info_esp *alg_info __attribute__((unused)))
{
	int ret=(ESP_AALG_PRESENT(alg_info_esp_aa2sadb(auth)));
  409730:	afc0001c 	sw	zero,28(s8)
  409734:	8fc40030 	lw	a0,48(s8)
  409738:	8f998724 	lw	t9,-30940(gp)
  40973c:	00000000 	nop
  409740:	0320f809 	jalr	t9
  409744:	00000000 	nop
  409748:	8fdc0010 	lw	gp,16(s8)
  40974c:	28420010 	slti	v0,v0,16
  409750:	10400017 	beqz	v0,4097b0 <kernel_alg_esp_auth_ok+0xb0>
  409754:	00000000 	nop
  409758:	8fc40030 	lw	a0,48(s8)
  40975c:	8f998724 	lw	t9,-30940(gp)
  409760:	00000000 	nop
  409764:	0320f809 	jalr	t9
  409768:	00000000 	nop
  40976c:	8fdc0010 	lw	gp,16(s8)
  409770:	000210c0 	sll	v0,v0,0x3
  409774:	8f818018 	lw	at,-32744(gp)
  409778:	00000000 	nop
  40977c:	24215610 	addiu	at,at,22032
  409780:	00221021 	addu	v0,at,v0
  409784:	90500000 	lbu	s0,0(v0)
  409788:	8fc40030 	lw	a0,48(s8)
  40978c:	8f998724 	lw	t9,-30940(gp)
  409790:	00000000 	nop
  409794:	0320f809 	jalr	t9
  409798:	00000000 	nop
  40979c:	8fdc0010 	lw	gp,16(s8)
  4097a0:	16020003 	bne	s0,v0,4097b0 <kernel_alg_esp_auth_ok+0xb0>
  4097a4:	00000000 	nop
  4097a8:	24020001 	li	v0,1
  4097ac:	afc2001c 	sw	v0,28(s8)
  4097b0:	8fc2001c 	lw	v0,28(s8)
  4097b4:	00000000 	nop
  4097b8:	afc20018 	sw	v0,24(s8)
#if 0 /* ML: logic moved to kernel_alg_esp_ok_final() */
	if (ret && alg_info && 
		(alg_info->alg_info_flags & ALG_INFO_F_STRICT)) {
		int i;
		struct esp_info *esp_info;
		ALG_INFO_ESP_FOREACH(alg_info, esp_info, i) {
			if (esp_info->esp_aalg_id == auth) 
				goto out;
		}
		ret = FALSE;
	}
	DBG(DBG_CONTROL | DBG_CRYPT | DBG_PARSING
		    , DBG_log("kernel_alg_esp_auth_ok(auth=%d): ret=%d",
			    auth, ret));
out:
#endif
	return ret;
  4097bc:	8fc20018 	lw	v0,24(s8)
  4097c0:	00000000 	nop
}
  4097c4:	03c0e821 	move	sp,s8
  4097c8:	8fbf002c 	lw	ra,44(sp)
  4097cc:	8fbe0028 	lw	s8,40(sp)
  4097d0:	8fb00020 	lw	s0,32(sp)
  4097d4:	27bd0030 	addiu	sp,sp,48
  4097d8:	03e00008 	jr	ra
  4097dc:	00000000 	nop

004097e0 <kernel_alg_esp_auth_keylen>:
  4097e0:	3c1c0fc0 	lui	gp,0xfc0
  4097e4:	279c3190 	addiu	gp,gp,12688
  4097e8:	0399e021 	addu	gp,gp,t9
  4097ec:	27bdffd0 	addiu	sp,sp,-48
  4097f0:	afbc0010 	sw	gp,16(sp)
  4097f4:	afbf0028 	sw	ra,40(sp)
  4097f8:	afbe0024 	sw	s8,36(sp)
  4097fc:	afbc0020 	sw	gp,32(sp)
  409800:	03a0f021 	move	s8,sp
  409804:	afc40030 	sw	a0,48(s8)

int
kernel_alg_esp_auth_keylen(int auth)
{
	int sadb_aalg=alg_info_esp_aa2sadb(auth);
  409808:	8fc40030 	lw	a0,48(s8)
  40980c:	8f998724 	lw	t9,-30940(gp)
  409810:	00000000 	nop
  409814:	0320f809 	jalr	t9
  409818:	00000000 	nop
  40981c:	8fdc0010 	lw	gp,16(s8)
  409820:	afc20018 	sw	v0,24(s8)
	int a_keylen=0;
  409824:	afc0001c 	sw	zero,28(s8)
	if (sadb_aalg)
  409828:	8fc20018 	lw	v0,24(s8)
  40982c:	00000000 	nop
  409830:	1040000d 	beqz	v0,409868 <kernel_alg_esp_auth_keylen+0x88>
  409834:	00000000 	nop
		a_keylen=esp_aalg[sadb_aalg].sadb_alg_maxbits/BITS_PER_BYTE;
  409838:	8fc20018 	lw	v0,24(s8)
  40983c:	00000000 	nop
  409840:	000210c0 	sll	v0,v0,0x3
  409844:	8f818018 	lw	at,-32744(gp)
  409848:	00000000 	nop
  40984c:	24215614 	addiu	at,at,22036
  409850:	00221021 	addu	v0,at,v0
  409854:	94420000 	lhu	v0,0(v0)
  409858:	00000000 	nop
  40985c:	000210c2 	srl	v0,v0,0x3
  409860:	3042ffff 	andi	v0,v0,0xffff
  409864:	afc2001c 	sw	v0,28(s8)

	DBG(DBG_CONTROL | DBG_CRYPT | DBG_PARSING
  409868:	8f8284f8 	lw	v0,-31496(gp)
  40986c:	00000000 	nop
  409870:	8c420000 	lw	v0,0(v0)
  409874:	00000000 	nop
  409878:	30420016 	andi	v0,v0,0x16
  40987c:	1040000d 	beqz	v0,4098b4 <kernel_alg_esp_auth_keylen+0xd4>
  409880:	00000000 	nop
  409884:	8f848020 	lw	a0,-32736(gp)
  409888:	00000000 	nop
  40988c:	24843bb8 	addiu	a0,a0,15288
  409890:	8fc50030 	lw	a1,48(s8)
  409894:	8fc60018 	lw	a2,24(s8)
  409898:	8fc7001c 	lw	a3,28(s8)
  40989c:	8f9983b8 	lw	t9,-31816(gp)
  4098a0:	00000000 	nop
  4098a4:	0320f809 	jalr	t9
  4098a8:	00000000 	nop
  4098ac:	8fdc0010 	lw	gp,16(s8)
  4098b0:	00000000 	nop
		    , DBG_log("kernel_alg_esp_auth_keylen(auth=%d, sadb_aalg=%d): "
		    "a_keylen=%d", auth, sadb_aalg, a_keylen));
	return a_keylen;
  4098b4:	8fc2001c 	lw	v0,28(s8)
  4098b8:	00000000 	nop
}
  4098bc:	03c0e821 	move	sp,s8
  4098c0:	8fbf0028 	lw	ra,40(sp)
  4098c4:	8fbe0024 	lw	s8,36(sp)
  4098c8:	27bd0030 	addiu	sp,sp,48
  4098cc:	03e00008 	jr	ra
  4098d0:	00000000 	nop

004098d4 <kernel_alg_esp_info>:
  4098d4:	3c1c0fc0 	lui	gp,0xfc0
  4098d8:	279c309c 	addiu	gp,gp,12444
  4098dc:	0399e021 	addu	gp,gp,t9
  4098e0:	27bdffc0 	addiu	sp,sp,-64
  4098e4:	afbc0020 	sw	gp,32(sp)
  4098e8:	afbf0038 	sw	ra,56(sp)
  4098ec:	afbe0034 	sw	s8,52(sp)
  4098f0:	afbc0030 	sw	gp,48(sp)
  4098f4:	03a0f021 	move	s8,sp
  4098f8:	afc40040 	sw	a0,64(s8)
  4098fc:	afc50044 	sw	a1,68(s8)

struct esp_info *
kernel_alg_esp_info(int transid, int auth)
{
	int sadb_aalg, sadb_ealg;
	static struct esp_info ei_buf;
	sadb_ealg=transid;
  409900:	8fc20040 	lw	v0,64(s8)
  409904:	00000000 	nop
  409908:	afc2002c 	sw	v0,44(s8)
	sadb_aalg=alg_info_esp_aa2sadb(auth);
  40990c:	8fc40044 	lw	a0,68(s8)
  409910:	8f998724 	lw	t9,-30940(gp)
  409914:	00000000 	nop
  409918:	0320f809 	jalr	t9
  40991c:	00000000 	nop
  409920:	8fdc0020 	lw	gp,32(s8)
  409924:	afc20028 	sw	v0,40(s8)

	if (!ESP_EALG_PRESENT(sadb_ealg))
  409928:	8fc2002c 	lw	v0,44(s8)
  40992c:	00000000 	nop
  409930:	28420100 	slti	v0,v0,256
  409934:	1040008d 	beqz	v0,409b6c <kernel_alg_esp_info+0x298>
  409938:	00000000 	nop
  40993c:	8fc2002c 	lw	v0,44(s8)
  409940:	00000000 	nop
  409944:	000210c0 	sll	v0,v0,0x3
  409948:	8f818018 	lw	at,-32744(gp)
  40994c:	00000000 	nop
  409950:	24215690 	addiu	at,at,22160
  409954:	00221021 	addu	v0,at,v0
  409958:	90430000 	lbu	v1,0(v0)
  40995c:	8fc2002c 	lw	v0,44(s8)
  409960:	00000000 	nop
  409964:	14620081 	bne	v1,v0,409b6c <kernel_alg_esp_info+0x298>
  409968:	00000000 	nop
		goto none;
	if (!ESP_AALG_PRESENT(sadb_aalg))
  40996c:	8fc20028 	lw	v0,40(s8)
  409970:	00000000 	nop
  409974:	28420010 	slti	v0,v0,16
  409978:	1040007c 	beqz	v0,409b6c <kernel_alg_esp_info+0x298>
  40997c:	00000000 	nop
  409980:	8fc20028 	lw	v0,40(s8)
  409984:	00000000 	nop
  409988:	000210c0 	sll	v0,v0,0x3
  40998c:	8f818018 	lw	at,-32744(gp)
  409990:	00000000 	nop
  409994:	24215610 	addiu	at,at,22032
  409998:	00221021 	addu	v0,at,v0
  40999c:	90430000 	lbu	v1,0(v0)
  4099a0:	8fc20028 	lw	v0,40(s8)
  4099a4:	00000000 	nop
  4099a8:	14620070 	bne	v1,v0,409b6c <kernel_alg_esp_info+0x298>
  4099ac:	00000000 	nop
		goto none;
	memset(&ei_buf, 0, sizeof (ei_buf));
  4099b0:	8f848018 	lw	a0,-32744(gp)
  4099b4:	00000000 	nop
  4099b8:	24845600 	addiu	a0,a0,22016
  4099bc:	00002821 	move	a1,zero
  4099c0:	24060010 	li	a2,16
  4099c4:	8f998500 	lw	t9,-31488(gp)
  4099c8:	00000000 	nop
  4099cc:	0320f809 	jalr	t9
  4099d0:	00000000 	nop
  4099d4:	8fdc0020 	lw	gp,32(s8)
  4099d8:	00000000 	nop
	ei_buf.transid=transid;
  4099dc:	93c20043 	lbu	v0,67(s8)
  4099e0:	8f818018 	lw	at,-32744(gp)
  4099e4:	00000000 	nop
  4099e8:	24215600 	addiu	at,at,22016
  4099ec:	a0220000 	sb	v0,0(at)
	ei_buf.auth=auth;
  4099f0:	97c20046 	lhu	v0,70(s8)
  4099f4:	8f818018 	lw	at,-32744(gp)
  4099f8:	00000000 	nop
  4099fc:	24215600 	addiu	at,at,22016
  409a00:	a4220002 	sh	v0,2(at)
	/* don't return "default" keylen because this value is used from
	 * setup_half_ipsec_sa() to "validate" keylen
	 * In effect,  enckeylen will be used as "max" value
	 */
	ei_buf.enckeylen=esp_ealg[sadb_ealg].sadb_alg_maxbits/BITS_PER_BYTE;
  409a04:	8fc2002c 	lw	v0,44(s8)
  409a08:	00000000 	nop
  409a0c:	000210c0 	sll	v0,v0,0x3
  409a10:	8f818018 	lw	at,-32744(gp)
  409a14:	00000000 	nop
  409a18:	24215694 	addiu	at,at,22164
  409a1c:	00221021 	addu	v0,at,v0
  409a20:	94420000 	lhu	v0,0(v0)
  409a24:	00000000 	nop
  409a28:	000210c2 	srl	v0,v0,0x3
  409a2c:	3042ffff 	andi	v0,v0,0xffff
  409a30:	8f818018 	lw	at,-32744(gp)
  409a34:	00000000 	nop
  409a38:	24215600 	addiu	at,at,22016
  409a3c:	ac220004 	sw	v0,4(at)
	ei_buf.authkeylen=esp_aalg[sadb_aalg].sadb_alg_maxbits/BITS_PER_BYTE;
  409a40:	8fc20028 	lw	v0,40(s8)
  409a44:	00000000 	nop
  409a48:	000210c0 	sll	v0,v0,0x3
  409a4c:	8f818018 	lw	at,-32744(gp)
  409a50:	00000000 	nop
  409a54:	24215614 	addiu	at,at,22036
  409a58:	00221021 	addu	v0,at,v0
  409a5c:	94420000 	lhu	v0,0(v0)
  409a60:	00000000 	nop
  409a64:	000210c2 	srl	v0,v0,0x3
  409a68:	3042ffff 	andi	v0,v0,0xffff
  409a6c:	8f818018 	lw	at,-32744(gp)
  409a70:	00000000 	nop
  409a74:	24215600 	addiu	at,at,22016
  409a78:	ac220008 	sw	v0,8(at)
	ei_buf.encryptalg=sadb_ealg;
  409a7c:	93c2002f 	lbu	v0,47(s8)
  409a80:	8f818018 	lw	at,-32744(gp)
  409a84:	00000000 	nop
  409a88:	24215600 	addiu	at,at,22016
  409a8c:	a022000c 	sb	v0,12(at)
	ei_buf.authalg=sadb_aalg;
  409a90:	93c2002b 	lbu	v0,43(s8)
  409a94:	8f818018 	lw	at,-32744(gp)
  409a98:	00000000 	nop
  409a9c:	24215600 	addiu	at,at,22016
  409aa0:	a022000d 	sb	v0,13(at)
	DBG(DBG_PARSING, DBG_log("kernel_alg_esp_info():"
  409aa4:	8f8284f8 	lw	v0,-31496(gp)
  409aa8:	00000000 	nop
  409aac:	8c420000 	lw	v0,0(v0)
  409ab0:	00000000 	nop
  409ab4:	30420004 	andi	v0,v0,0x4
  409ab8:	10400027 	beqz	v0,409b58 <kernel_alg_esp_info+0x284>
  409abc:	00000000 	nop
  409ac0:	8f828018 	lw	v0,-32744(gp)
  409ac4:	00000000 	nop
  409ac8:	24425600 	addiu	v0,v0,22016
  409acc:	8c420004 	lw	v0,4(v0)
  409ad0:	00000000 	nop
  409ad4:	afa20010 	sw	v0,16(sp)
  409ad8:	8f828018 	lw	v0,-32744(gp)
  409adc:	00000000 	nop
  409ae0:	24425600 	addiu	v0,v0,22016
  409ae4:	8c420008 	lw	v0,8(v0)
  409ae8:	00000000 	nop
  409aec:	afa20014 	sw	v0,20(sp)
  409af0:	8f828018 	lw	v0,-32744(gp)
  409af4:	00000000 	nop
  409af8:	24425600 	addiu	v0,v0,22016
  409afc:	9042000c 	lbu	v0,12(v0)
  409b00:	00000000 	nop
  409b04:	afa20018 	sw	v0,24(sp)
  409b08:	8f828018 	lw	v0,-32744(gp)
  409b0c:	00000000 	nop
  409b10:	24425600 	addiu	v0,v0,22016
  409b14:	9042000d 	lbu	v0,13(v0)
  409b18:	00000000 	nop
  409b1c:	afa2001c 	sw	v0,28(sp)
  409b20:	8f848020 	lw	a0,-32736(gp)
  409b24:	00000000 	nop
  409b28:	24843bf8 	addiu	a0,a0,15352
  409b2c:	8fc50040 	lw	a1,64(s8)
  409b30:	8fc60044 	lw	a2,68(s8)
  409b34:	8f878018 	lw	a3,-32744(gp)
  409b38:	00000000 	nop
  409b3c:	24e75600 	addiu	a3,a3,22016
  409b40:	8f9983b8 	lw	t9,-31816(gp)
  409b44:	00000000 	nop
  409b48:	0320f809 	jalr	t9
  409b4c:	00000000 	nop
  409b50:	8fdc0020 	lw	gp,32(s8)
  409b54:	00000000 	nop
		"transid=%d, auth=%d, ei=%p, "
		"enckeylen=%d, authkeylen=%d, encryptalg=%d, authalg=%d",
		transid, auth, &ei_buf,
		(int)ei_buf.enckeylen, (int)ei_buf.authkeylen,
		ei_buf.encryptalg, ei_buf.authalg
	       ));
	return &ei_buf;		
  409b58:	8f828018 	lw	v0,-32744(gp)
  409b5c:	00000000 	nop
  409b60:	24425600 	addiu	v0,v0,22016
  409b64:	10000014 	b	409bb8 <kernel_alg_esp_info+0x2e4>
  409b68:	00000000 	nop
none:
	DBG(DBG_PARSING, DBG_log("kernel_alg_esp_info():"
  409b6c:	8f8284f8 	lw	v0,-31496(gp)
  409b70:	00000000 	nop
  409b74:	8c420000 	lw	v0,0(v0)
  409b78:	00000000 	nop
  409b7c:	30420004 	andi	v0,v0,0x4
  409b80:	1040000c 	beqz	v0,409bb4 <kernel_alg_esp_info+0x2e0>
  409b84:	00000000 	nop
  409b88:	8f848020 	lw	a0,-32736(gp)
  409b8c:	00000000 	nop
  409b90:	24843c64 	addiu	a0,a0,15460
  409b94:	8fc50040 	lw	a1,64(s8)
  409b98:	8fc60044 	lw	a2,68(s8)
  409b9c:	8f9983b8 	lw	t9,-31816(gp)
  409ba0:	00000000 	nop
  409ba4:	0320f809 	jalr	t9
  409ba8:	00000000 	nop
  409bac:	8fdc0020 	lw	gp,32(s8)
  409bb0:	00000000 	nop
		"transid=%d, auth=%d, ei=NULL",
		transid, auth));
	return NULL;
  409bb4:	00001021 	move	v0,zero
}
  409bb8:	03c0e821 	move	sp,s8
  409bbc:	8fbf0038 	lw	ra,56(sp)
  409bc0:	8fbe0034 	lw	s8,52(sp)
  409bc4:	27bd0040 	addiu	sp,sp,64
  409bc8:	03e00008 	jr	ra
  409bcc:	00000000 	nop

00409bd0 <kernel_alg_policy_algorithms>:
  409bd0:	3c1c0fc0 	lui	gp,0xfc0
  409bd4:	279c2da0 	addiu	gp,gp,11680
  409bd8:	0399e021 	addu	gp,gp,t9
  409bdc:	27bdffe8 	addiu	sp,sp,-24
  409be0:	afbc0000 	sw	gp,0(sp)
  409be4:	afbe0014 	sw	s8,20(sp)
  409be8:	afbc0010 	sw	gp,16(sp)
  409bec:	03a0f021 	move	s8,sp
  409bf0:	afc40018 	sw	a0,24(s8)

#ifndef NO_PLUTO
static void
kernel_alg_policy_algorithms(struct esp_info *esp_info)
{
    int ealg_i=esp_info->esp_ealg_id;
  409bf4:	8fc20018 	lw	v0,24(s8)
  409bf8:	00000000 	nop
  409bfc:	90420000 	lbu	v0,0(v0)
  409c00:	00000000 	nop
  409c04:	afc20008 	sw	v0,8(s8)
    switch(ealg_i) {
  409c08:	8fc20008 	lw	v0,8(s8)
  409c0c:	00000000 	nop
  409c10:	2c42000c 	sltiu	v0,v0,12
  409c14:	1040000d 	beqz	v0,409c4c <kernel_alg_policy_algorithms+0x7c>
  409c18:	00000000 	nop
  409c1c:	8fc20008 	lw	v0,8(s8)
  409c20:	00000000 	nop
  409c24:	00021080 	sll	v0,v0,0x2
  409c28:	8f818020 	lw	at,-32736(gp)
  409c2c:	00000000 	nop
  409c30:	24213c98 	addiu	at,at,15512
  409c34:	00221021 	addu	v0,at,v0
  409c38:	8c420000 	lw	v0,0(v0)
  409c3c:	00000000 	nop
  409c40:	005c1021 	addu	v0,v0,gp
  409c44:	00400008 	jr	v0
  409c48:	00000000 	nop
        case 0:
        case ESP_DES:
        case ESP_3DES:
        case ESP_NULL:
        case ESP_CAST:
            break;
        default:
            if (!esp_info->esp_ealg_keylen) {
  409c4c:	8fc20018 	lw	v0,24(s8)
  409c50:	00000000 	nop
  409c54:	8c420004 	lw	v0,4(v0)
  409c58:	00000000 	nop
  409c5c:	1440000c 	bnez	v0,409c90 <kernel_alg_policy_algorithms+0xc0>
  409c60:	00000000 	nop
                /**
                 * algos that need  KEY_LENGTH
                 *
                 * Note: this is a very dirty hack ;-)
                 *
                 * XXX:jjo
                 * Idea: Add a key_length_needed attribute to 
                 * esp_ealg ??
                 */
                esp_info->esp_ealg_keylen=
  409c64:	8fc20008 	lw	v0,8(s8)
  409c68:	00000000 	nop
  409c6c:	000210c0 	sll	v0,v0,0x3
  409c70:	8f818018 	lw	at,-32744(gp)
  409c74:	00000000 	nop
  409c78:	24215694 	addiu	at,at,22164
  409c7c:	00221021 	addu	v0,at,v0
  409c80:	94430000 	lhu	v1,0(v0)
  409c84:	8fc20018 	lw	v0,24(s8)
  409c88:	00000000 	nop
  409c8c:	ac430004 	sw	v1,4(v0)
                    esp_ealg[ealg_i].sadb_alg_maxbits;

            }
    }
}
  409c90:	03c0e821 	move	sp,s8
  409c94:	8fbe0014 	lw	s8,20(sp)
  409c98:	27bd0018 	addiu	sp,sp,24
  409c9c:	03e00008 	jr	ra
  409ca0:	00000000 	nop

00409ca4 <kernel_alg_db_add>:
  409ca4:	3c1c0fc0 	lui	gp,0xfc0
  409ca8:	279c2ccc 	addiu	gp,gp,11468
  409cac:	0399e021 	addu	gp,gp,t9
  409cb0:	27bdffd0 	addiu	sp,sp,-48
  409cb4:	afbc0010 	sw	gp,16(sp)
  409cb8:	afbf0028 	sw	ra,40(sp)
  409cbc:	afbe0024 	sw	s8,36(sp)
  409cc0:	afbc0020 	sw	gp,32(sp)
  409cc4:	03a0f021 	move	s8,sp
  409cc8:	afc40030 	sw	a0,48(s8)
  409ccc:	afc50034 	sw	a1,52(s8)
  409cd0:	afc60038 	sw	a2,56(s8)
  409cd4:	afc7003c 	sw	a3,60(s8)
static bool 
kernel_alg_db_add(struct db_context *db_ctx, struct esp_info *esp_info, lset_t policy)
{
	int ealg_i, aalg_i;
	ealg_i=esp_info->esp_ealg_id;
  409cd8:	8fc20034 	lw	v0,52(s8)
  409cdc:	00000000 	nop
  409ce0:	90420000 	lbu	v0,0(v0)
  409ce4:	00000000 	nop
  409ce8:	afc20018 	sw	v0,24(s8)
	if (!ESP_EALG_PRESENT(ealg_i)) {
  409cec:	8fc20018 	lw	v0,24(s8)
  409cf0:	00000000 	nop
  409cf4:	28420100 	slti	v0,v0,256
  409cf8:	1040000f 	beqz	v0,409d38 <kernel_alg_db_add+0x94>
  409cfc:	00000000 	nop
  409d00:	8fc20018 	lw	v0,24(s8)
  409d04:	00000000 	nop
  409d08:	000210c0 	sll	v0,v0,0x3
  409d0c:	8f818018 	lw	at,-32744(gp)
  409d10:	00000000 	nop
  409d14:	24215690 	addiu	at,at,22160
  409d18:	00221021 	addu	v0,at,v0
  409d1c:	90430000 	lbu	v1,0(v0)
  409d20:	8fc20018 	lw	v0,24(s8)
  409d24:	00000000 	nop
  409d28:	14620003 	bne	v1,v0,409d38 <kernel_alg_db_add+0x94>
  409d2c:	00000000 	nop
  409d30:	1000000e 	b	409d6c <kernel_alg_db_add+0xc8>
  409d34:	00000000 	nop
		DBG_log("kernel_alg_db_add() "
  409d38:	8f848020 	lw	a0,-32736(gp)
  409d3c:	00000000 	nop
  409d40:	24843cc8 	addiu	a0,a0,15560
  409d44:	8fc50018 	lw	a1,24(s8)
  409d48:	8f9983b8 	lw	t9,-31816(gp)
  409d4c:	00000000 	nop
  409d50:	0320f809 	jalr	t9
  409d54:	00000000 	nop
  409d58:	8fdc0010 	lw	gp,16(s8)
  409d5c:	00000000 	nop
				"kernel enc ealg_id=%d not present",
				ealg_i);
		return FALSE;
  409d60:	00001021 	move	v0,zero
  409d64:	10000071 	b	409f2c <kernel_alg_db_add+0x288>
  409d68:	00000000 	nop
	}
	if (!(policy & POLICY_AUTHENTICATE)) {	/* skip ESP auth attrs for AH */
  409d6c:	8fc40038 	lw	a0,56(s8)
  409d70:	8fc5003c 	lw	a1,60(s8)
  409d74:	24020000 	li	v0,0
  409d78:	24030008 	li	v1,8
  409d7c:	00822024 	and	a0,a0,v0
  409d80:	00a32824 	and	a1,a1,v1
  409d84:	00801021 	move	v0,a0
  409d88:	00451025 	or	v0,v0,a1
  409d8c:	1440002c 	bnez	v0,409e40 <kernel_alg_db_add+0x19c>
  409d90:	00000000 	nop
		aalg_i=alg_info_esp_aa2sadb(esp_info->esp_aalg_id);
  409d94:	8fc20034 	lw	v0,52(s8)
  409d98:	00000000 	nop
  409d9c:	94420002 	lhu	v0,2(v0)
  409da0:	00000000 	nop
  409da4:	00402021 	move	a0,v0
  409da8:	8f998724 	lw	t9,-30940(gp)
  409dac:	00000000 	nop
  409db0:	0320f809 	jalr	t9
  409db4:	00000000 	nop
  409db8:	8fdc0010 	lw	gp,16(s8)
  409dbc:	afc2001c 	sw	v0,28(s8)
		if (!ESP_AALG_PRESENT(aalg_i)) {
  409dc0:	8fc2001c 	lw	v0,28(s8)
  409dc4:	00000000 	nop
  409dc8:	28420010 	slti	v0,v0,16
  409dcc:	1040000f 	beqz	v0,409e0c <kernel_alg_db_add+0x168>
  409dd0:	00000000 	nop
  409dd4:	8fc2001c 	lw	v0,28(s8)
  409dd8:	00000000 	nop
  409ddc:	000210c0 	sll	v0,v0,0x3
  409de0:	8f818018 	lw	at,-32744(gp)
  409de4:	00000000 	nop
  409de8:	24215610 	addiu	at,at,22032
  409dec:	00221021 	addu	v0,at,v0
  409df0:	90430000 	lbu	v1,0(v0)
  409df4:	8fc2001c 	lw	v0,28(s8)
  409df8:	00000000 	nop
  409dfc:	14620003 	bne	v1,v0,409e0c <kernel_alg_db_add+0x168>
  409e00:	00000000 	nop
  409e04:	1000000e 	b	409e40 <kernel_alg_db_add+0x19c>
  409e08:	00000000 	nop
			DBG_log("kernel_alg_db_add() kernel auth "
  409e0c:	8f848020 	lw	a0,-32736(gp)
  409e10:	00000000 	nop
  409e14:	24843d00 	addiu	a0,a0,15616
  409e18:	8fc5001c 	lw	a1,28(s8)
  409e1c:	8f9983b8 	lw	t9,-31816(gp)
  409e20:	00000000 	nop
  409e24:	0320f809 	jalr	t9
  409e28:	00000000 	nop
  409e2c:	8fdc0010 	lw	gp,16(s8)
  409e30:	00000000 	nop
					"aalg_id=%d not present",
					aalg_i);
			return FALSE;
  409e34:	00001021 	move	v0,zero
  409e38:	1000003c 	b	409f2c <kernel_alg_db_add+0x288>
  409e3c:	00000000 	nop
		}
	}
	/* 	do algo policy */
	kernel_alg_policy_algorithms(esp_info);
  409e40:	8fc40034 	lw	a0,52(s8)
  409e44:	8f998024 	lw	t9,-32732(gp)
  409e48:	00000000 	nop
  409e4c:	27399bd0 	addiu	t9,t9,-25648
  409e50:	00000000 	nop
  409e54:	0320f809 	jalr	t9
  409e58:	00000000 	nop
  409e5c:	8fdc0010 	lw	gp,16(s8)
  409e60:	00000000 	nop

	/*	open new transformation */
	db_trans_add(db_ctx, ealg_i);
  409e64:	93c2001b 	lbu	v0,27(s8)
  409e68:	8fc40030 	lw	a0,48(s8)
  409e6c:	00402821 	move	a1,v0
  409e70:	8f9986f4 	lw	t9,-30988(gp)
  409e74:	00000000 	nop
  409e78:	0320f809 	jalr	t9
  409e7c:	00000000 	nop
  409e80:	8fdc0010 	lw	gp,16(s8)
  409e84:	00000000 	nop
	/* add ESP auth attr */
	if (!(policy & POLICY_AUTHENTICATE)) 
  409e88:	8fc40038 	lw	a0,56(s8)
  409e8c:	8fc5003c 	lw	a1,60(s8)
  409e90:	24020000 	li	v0,0
  409e94:	24030008 	li	v1,8
  409e98:	00822024 	and	a0,a0,v0
  409e9c:	00a32824 	and	a1,a1,v1
  409ea0:	00801021 	move	v0,a0
  409ea4:	00451025 	or	v0,v0,a1
  409ea8:	1440000d 	bnez	v0,409ee0 <kernel_alg_db_add+0x23c>
  409eac:	00000000 	nop
		db_attr_add_values(db_ctx, 
  409eb0:	8fc20034 	lw	v0,52(s8)
  409eb4:	00000000 	nop
  409eb8:	94420002 	lhu	v0,2(v0)
  409ebc:	8fc40030 	lw	a0,48(s8)
  409ec0:	24050005 	li	a1,5
  409ec4:	00403021 	move	a2,v0
  409ec8:	8f998a54 	lw	t9,-30124(gp)
  409ecc:	00000000 	nop
  409ed0:	0320f809 	jalr	t9
  409ed4:	00000000 	nop
  409ed8:	8fdc0010 	lw	gp,16(s8)
  409edc:	00000000 	nop
				AUTH_ALGORITHM, esp_info->esp_aalg_id);
	/*	add keylegth if specified in esp= string */
	if (esp_info->esp_ealg_keylen) {
  409ee0:	8fc20034 	lw	v0,52(s8)
  409ee4:	00000000 	nop
  409ee8:	8c420004 	lw	v0,4(v0)
  409eec:	00000000 	nop
  409ef0:	1040000d 	beqz	v0,409f28 <kernel_alg_db_add+0x284>
  409ef4:	00000000 	nop
		db_attr_add_values(db_ctx, 
  409ef8:	8fc20034 	lw	v0,52(s8)
  409efc:	00000000 	nop
  409f00:	94420006 	lhu	v0,6(v0)
  409f04:	8fc40030 	lw	a0,48(s8)
  409f08:	24050006 	li	a1,6
  409f0c:	00403021 	move	a2,v0
  409f10:	8f998a54 	lw	t9,-30124(gp)
  409f14:	00000000 	nop
  409f18:	0320f809 	jalr	t9
  409f1c:	00000000 	nop
  409f20:	8fdc0010 	lw	gp,16(s8)
  409f24:	00000000 	nop
				KEY_LENGTH, esp_info->esp_ealg_keylen);
	}
	return TRUE;
  409f28:	24020001 	li	v0,1
}
  409f2c:	03c0e821 	move	sp,s8
  409f30:	8fbf0028 	lw	ra,40(sp)
  409f34:	8fbe0024 	lw	s8,36(sp)
  409f38:	27bd0030 	addiu	sp,sp,48
  409f3c:	03e00008 	jr	ra
  409f40:	00000000 	nop

00409f44 <kernel_alg_db_new>:
  409f44:	3c1c0fc0 	lui	gp,0xfc0
  409f48:	279c2a2c 	addiu	gp,gp,10796
  409f4c:	0399e021 	addu	gp,gp,t9
  409f50:	27bdff90 	addiu	sp,sp,-112
  409f54:	afbc0018 	sw	gp,24(sp)
  409f58:	afbf0068 	sw	ra,104(sp)
  409f5c:	afbe0064 	sw	s8,100(sp)
  409f60:	afbc0060 	sw	gp,96(sp)
  409f64:	03a0f021 	move	s8,sp
  409f68:	afc40070 	sw	a0,112(s8)
  409f6c:	afc60078 	sw	a2,120(s8)
  409f70:	afc7007c 	sw	a3,124(s8)
/*	
 *	Create proposal with runtime kernel algos, merging
 *	with passed proposal if not NULL
 *
 *	for now this function does free() previous returned
 *	malloced pointer (this quirk allows easier spdb.c change)
 */
struct db_context * 
kernel_alg_db_new(struct alg_info_esp *alg_info, lset_t policy )
{
	int ealg_i, aalg_i, tn=0;
  409f74:	afc00028 	sw	zero,40(s8)
	int i;
	const struct esp_info *esp_info;
	struct esp_info tmp_esp_info;
	struct db_context *ctx_new=NULL;
  409f78:	afc00048 	sw	zero,72(s8)
	struct db_trans *t;
	struct db_prop  *prop;
	int trans_cnt;

	if (!(policy & POLICY_ENCRYPT))	{ /* not possible, I think  */
  409f7c:	8fc40078 	lw	a0,120(s8)
  409f80:	8fc5007c 	lw	a1,124(s8)
  409f84:	24020000 	li	v0,0
  409f88:	24030004 	li	v1,4
  409f8c:	00822024 	and	a0,a0,v0
  409f90:	00a32824 	and	a1,a1,v1
  409f94:	00801021 	move	v0,a0
  409f98:	00451025 	or	v0,v0,a1
  409f9c:	14400004 	bnez	v0,409fb0 <kernel_alg_db_new+0x6c>
  409fa0:	00000000 	nop
		return NULL;
  409fa4:	00001021 	move	v0,zero
  409fa8:	10000132 	b	40a474 <kernel_alg_db_new+0x530>
  409fac:	00000000 	nop
	}
	trans_cnt=(esp_ealg_num*esp_aalg_num);
  409fb0:	8f838018 	lw	v1,-32744(gp)
  409fb4:	00000000 	nop
  409fb8:	24630000 	addiu	v1,v1,0
  409fbc:	8c630000 	lw	v1,0(v1)
  409fc0:	8f828018 	lw	v0,-32744(gp)
  409fc4:	00000000 	nop
  409fc8:	24420004 	addiu	v0,v0,4
  409fcc:	8c420000 	lw	v0,0(v0)
  409fd0:	00000000 	nop
  409fd4:	00620018 	mult	v1,v0
  409fd8:	00001012 	mflo	v0
  409fdc:	afc20054 	sw	v0,84(s8)
  409fe0:	00000000 	nop
	DBG(DBG_EMITTING, DBG_log("kernel_alg_db_prop_new() "
  409fe4:	8f8284f8 	lw	v0,-31496(gp)
  409fe8:	00000000 	nop
  409fec:	8c420000 	lw	v0,0(v0)
  409ff0:	00000000 	nop
  409ff4:	30420008 	andi	v0,v0,0x8
  409ff8:	1040000b 	beqz	v0,40a028 <kernel_alg_db_new+0xe4>
  409ffc:	00000000 	nop
  40a000:	8f848020 	lw	a0,-32736(gp)
  40a004:	00000000 	nop
  40a008:	24843d38 	addiu	a0,a0,15672
  40a00c:	8fc50054 	lw	a1,84(s8)
  40a010:	8f9983b8 	lw	t9,-31816(gp)
  40a014:	00000000 	nop
  40a018:	0320f809 	jalr	t9
  40a01c:	00000000 	nop
  40a020:	8fdc0018 	lw	gp,24(s8)
  40a024:	00000000 	nop
		"initial trans_cnt=%d",
		trans_cnt));
	/*	pass aprox. number of transforms and attributes */
	ctx_new = db_prop_new(PROTO_IPSEC_ESP, trans_cnt, trans_cnt * 2);
  40a028:	8fc20054 	lw	v0,84(s8)
  40a02c:	00000000 	nop
  40a030:	00021040 	sll	v0,v0,0x1
  40a034:	24040003 	li	a0,3
  40a038:	8fc50054 	lw	a1,84(s8)
  40a03c:	00403021 	move	a2,v0
  40a040:	8f998880 	lw	t9,-30592(gp)
  40a044:	00000000 	nop
  40a048:	0320f809 	jalr	t9
  40a04c:	00000000 	nop
  40a050:	8fdc0018 	lw	gp,24(s8)
  40a054:	afc20048 	sw	v0,72(s8)

	/*
	 * 	Loop: for each element (struct esp_info) of
	 * 	alg_info, if kernel support is present then
	 * 	build the transform (and attrs)
	 *
	 * 	if NULL alg_info, propose everything ...
	 */

	/* passert(alg_info!=0); */
	if (alg_info) {
  40a058:	8fc20070 	lw	v0,112(s8)
  40a05c:	00000000 	nop
  40a060:	10400034 	beqz	v0,40a134 <kernel_alg_db_new+0x1f0>
  40a064:	00000000 	nop
		ALG_INFO_ESP_FOREACH(alg_info, esp_info, i) {
  40a068:	8fc20070 	lw	v0,112(s8)
  40a06c:	00000000 	nop
  40a070:	8c420000 	lw	v0,0(v0)
  40a074:	00000000 	nop
  40a078:	afc2002c 	sw	v0,44(s8)
  40a07c:	8fc20070 	lw	v0,112(s8)
  40a080:	00000000 	nop
  40a084:	24420010 	addiu	v0,v0,16
  40a088:	afc20030 	sw	v0,48(s8)
  40a08c:	8fc2002c 	lw	v0,44(s8)
  40a090:	00000000 	nop
  40a094:	2442ffff 	addiu	v0,v0,-1
  40a098:	00401821 	move	v1,v0
  40a09c:	afc3002c 	sw	v1,44(s8)
  40a0a0:	2402ffff 	li	v0,-1
  40a0a4:	14620003 	bne	v1,v0,40a0b4 <kernel_alg_db_new+0x170>
  40a0a8:	00000000 	nop
  40a0ac:	10000078 	b	40a290 <kernel_alg_db_new+0x34c>
  40a0b0:	00000000 	nop
			tmp_esp_info = *esp_info;
  40a0b4:	8fc30030 	lw	v1,48(s8)
  40a0b8:	00000000 	nop
  40a0bc:	8c620000 	lw	v0,0(v1)
  40a0c0:	00000000 	nop
  40a0c4:	afc20038 	sw	v0,56(s8)
  40a0c8:	8c620004 	lw	v0,4(v1)
  40a0cc:	00000000 	nop
  40a0d0:	afc2003c 	sw	v0,60(s8)
  40a0d4:	8c620008 	lw	v0,8(v1)
  40a0d8:	00000000 	nop
  40a0dc:	afc20040 	sw	v0,64(s8)
  40a0e0:	8c62000c 	lw	v0,12(v1)
  40a0e4:	00000000 	nop
  40a0e8:	afc20044 	sw	v0,68(s8)
			kernel_alg_db_add(ctx_new, &tmp_esp_info, policy);
  40a0ec:	8fc40048 	lw	a0,72(s8)
  40a0f0:	27c50038 	addiu	a1,s8,56
  40a0f4:	8fc60078 	lw	a2,120(s8)
  40a0f8:	8fc7007c 	lw	a3,124(s8)
  40a0fc:	8f998024 	lw	t9,-32732(gp)
  40a100:	00000000 	nop
  40a104:	27399ca4 	addiu	t9,t9,-25436
  40a108:	00000000 	nop
  40a10c:	0320f809 	jalr	t9
  40a110:	00000000 	nop
  40a114:	8fdc0018 	lw	gp,24(s8)
  40a118:	00000000 	nop
  40a11c:	8fc20030 	lw	v0,48(s8)
  40a120:	00000000 	nop
  40a124:	24420010 	addiu	v0,v0,16
  40a128:	afc20030 	sw	v0,48(s8)
  40a12c:	1000ffd7 	b	40a08c <kernel_alg_db_new+0x148>
  40a130:	00000000 	nop
		}
	} else {
		ESP_EALG_FOR_EACH_UPDOWN(ealg_i) {
  40a134:	240200ff 	li	v0,255
  40a138:	afc20020 	sw	v0,32(s8)
  40a13c:	8fc20020 	lw	v0,32(s8)
  40a140:	00000000 	nop
  40a144:	1c400003 	bgtz	v0,40a154 <kernel_alg_db_new+0x210>
  40a148:	00000000 	nop
  40a14c:	10000050 	b	40a290 <kernel_alg_db_new+0x34c>
  40a150:	00000000 	nop
  40a154:	8fc20020 	lw	v0,32(s8)
  40a158:	00000000 	nop
  40a15c:	28420100 	slti	v0,v0,256
  40a160:	10400045 	beqz	v0,40a278 <kernel_alg_db_new+0x334>
  40a164:	00000000 	nop
  40a168:	8fc20020 	lw	v0,32(s8)
  40a16c:	00000000 	nop
  40a170:	000210c0 	sll	v0,v0,0x3
  40a174:	8f818018 	lw	at,-32744(gp)
  40a178:	00000000 	nop
  40a17c:	24215690 	addiu	at,at,22160
  40a180:	00221021 	addu	v0,at,v0
  40a184:	90430000 	lbu	v1,0(v0)
  40a188:	8fc20020 	lw	v0,32(s8)
  40a18c:	00000000 	nop
  40a190:	14620039 	bne	v1,v0,40a278 <kernel_alg_db_new+0x334>
  40a194:	00000000 	nop
			tmp_esp_info.esp_ealg_id=ealg_i;
  40a198:	93c20023 	lbu	v0,35(s8)
  40a19c:	00000000 	nop
  40a1a0:	a3c20038 	sb	v0,56(s8)
			tmp_esp_info.esp_ealg_keylen=0;
  40a1a4:	afc0003c 	sw	zero,60(s8)
			ESP_AALG_FOR_EACH(aalg_i) {
  40a1a8:	24020001 	li	v0,1
  40a1ac:	afc20024 	sw	v0,36(s8)
  40a1b0:	8fc20024 	lw	v0,36(s8)
  40a1b4:	00000000 	nop
  40a1b8:	28420010 	slti	v0,v0,16
  40a1bc:	14400003 	bnez	v0,40a1cc <kernel_alg_db_new+0x288>
  40a1c0:	00000000 	nop
  40a1c4:	1000002c 	b	40a278 <kernel_alg_db_new+0x334>
  40a1c8:	00000000 	nop
  40a1cc:	8fc20024 	lw	v0,36(s8)
  40a1d0:	00000000 	nop
  40a1d4:	28420010 	slti	v0,v0,16
  40a1d8:	10400021 	beqz	v0,40a260 <kernel_alg_db_new+0x31c>
  40a1dc:	00000000 	nop
  40a1e0:	8fc20024 	lw	v0,36(s8)
  40a1e4:	00000000 	nop
  40a1e8:	000210c0 	sll	v0,v0,0x3
  40a1ec:	8f818018 	lw	at,-32744(gp)
  40a1f0:	00000000 	nop
  40a1f4:	24215610 	addiu	at,at,22032
  40a1f8:	00221021 	addu	v0,at,v0
  40a1fc:	90430000 	lbu	v1,0(v0)
  40a200:	8fc20024 	lw	v0,36(s8)
  40a204:	00000000 	nop
  40a208:	14620015 	bne	v1,v0,40a260 <kernel_alg_db_new+0x31c>
  40a20c:	00000000 	nop
				tmp_esp_info.esp_aalg_id=alg_info_esp_sadb2aa(aalg_i);
  40a210:	8fc40024 	lw	a0,36(s8)
  40a214:	8f998278 	lw	t9,-32136(gp)
  40a218:	00000000 	nop
  40a21c:	0320f809 	jalr	t9
  40a220:	00000000 	nop
  40a224:	8fdc0018 	lw	gp,24(s8)
  40a228:	a7c2003a 	sh	v0,58(s8)
				tmp_esp_info.esp_aalg_keylen=0;
  40a22c:	afc00040 	sw	zero,64(s8)
				kernel_alg_db_add(ctx_new, &tmp_esp_info, policy);
  40a230:	8fc40048 	lw	a0,72(s8)
  40a234:	27c50038 	addiu	a1,s8,56
  40a238:	8fc60078 	lw	a2,120(s8)
  40a23c:	8fc7007c 	lw	a3,124(s8)
  40a240:	8f998024 	lw	t9,-32732(gp)
  40a244:	00000000 	nop
  40a248:	27399ca4 	addiu	t9,t9,-25436
  40a24c:	00000000 	nop
  40a250:	0320f809 	jalr	t9
  40a254:	00000000 	nop
  40a258:	8fdc0018 	lw	gp,24(s8)
  40a25c:	00000000 	nop
  40a260:	8fc20024 	lw	v0,36(s8)
  40a264:	00000000 	nop
  40a268:	24420001 	addiu	v0,v0,1
  40a26c:	afc20024 	sw	v0,36(s8)
  40a270:	1000ffcf 	b	40a1b0 <kernel_alg_db_new+0x26c>
  40a274:	00000000 	nop
  40a278:	8fc20020 	lw	v0,32(s8)
  40a27c:	00000000 	nop
  40a280:	2442ffff 	addiu	v0,v0,-1
  40a284:	afc20020 	sw	v0,32(s8)
  40a288:	1000ffac 	b	40a13c <kernel_alg_db_new+0x1f8>
  40a28c:	00000000 	nop
			}
		}
	}

	prop=db_prop_get(ctx_new);
  40a290:	8fc40048 	lw	a0,72(s8)
  40a294:	8f998024 	lw	t9,-32732(gp)
  40a298:	00000000 	nop
  40a29c:	2739a48c 	addiu	t9,t9,-23412
  40a2a0:	00000000 	nop
  40a2a4:	0320f809 	jalr	t9
  40a2a8:	00000000 	nop
  40a2ac:	8fdc0018 	lw	gp,24(s8)
  40a2b0:	afc20050 	sw	v0,80(s8)

	DBG(DBG_CONTROL|DBG_EMITTING, DBG_log("kernel_alg_db_prop_new() "
  40a2b4:	8f8284f8 	lw	v0,-31496(gp)
  40a2b8:	00000000 	nop
  40a2bc:	8c420000 	lw	v0,0(v0)
  40a2c0:	00000000 	nop
  40a2c4:	30420018 	andi	v0,v0,0x18
  40a2c8:	10400011 	beqz	v0,40a310 <kernel_alg_db_new+0x3cc>
  40a2cc:	00000000 	nop
  40a2d0:	8fc20050 	lw	v0,80(s8)
  40a2d4:	00000000 	nop
  40a2d8:	90420000 	lbu	v0,0(v0)
  40a2dc:	8f848020 	lw	a0,-32736(gp)
  40a2e0:	00000000 	nop
  40a2e4:	24843d68 	addiu	a0,a0,15720
  40a2e8:	00402821 	move	a1,v0
  40a2ec:	8fc20050 	lw	v0,80(s8)
  40a2f0:	00000000 	nop
  40a2f4:	8c460008 	lw	a2,8(v0)
  40a2f8:	8f9983b8 	lw	t9,-31816(gp)
  40a2fc:	00000000 	nop
  40a300:	0320f809 	jalr	t9
  40a304:	00000000 	nop
  40a308:	8fdc0018 	lw	gp,24(s8)
  40a30c:	00000000 	nop
		"will return p_new->protoid=%d, p_new->trans_cnt=%d",
		prop->protoid, prop->trans_cnt));
	for(t=prop->trans,tn=0; tn<prop->trans_cnt; tn++) {
  40a310:	8fc20050 	lw	v0,80(s8)
  40a314:	00000000 	nop
  40a318:	8c420004 	lw	v0,4(v0)
  40a31c:	00000000 	nop
  40a320:	afc2004c 	sw	v0,76(s8)
  40a324:	afc00028 	sw	zero,40(s8)
  40a328:	8fc20050 	lw	v0,80(s8)
  40a32c:	00000000 	nop
  40a330:	8c430008 	lw	v1,8(v0)
  40a334:	8fc20028 	lw	v0,40(s8)
  40a338:	00000000 	nop
  40a33c:	0043102a 	slt	v0,v0,v1
  40a340:	14400003 	bnez	v0,40a350 <kernel_alg_db_new+0x40c>
  40a344:	00000000 	nop
  40a348:	10000048 	b	40a46c <kernel_alg_db_new+0x528>
  40a34c:	00000000 	nop
		DBG(DBG_CONTROL|DBG_EMITTING, DBG_log("kernel_alg_db_prop_new() "
  40a350:	8f8284f8 	lw	v0,-31496(gp)
  40a354:	00000000 	nop
  40a358:	8c420000 	lw	v0,0(v0)
  40a35c:	00000000 	nop
  40a360:	30420018 	andi	v0,v0,0x18
  40a364:	1040003b 	beqz	v0,40a454 <kernel_alg_db_new+0x510>
  40a368:	00000000 	nop
  40a36c:	8fc30028 	lw	v1,40(s8)
  40a370:	00000000 	nop
  40a374:	00601021 	move	v0,v1
  40a378:	00021040 	sll	v0,v0,0x1
  40a37c:	00431021 	addu	v0,v0,v1
  40a380:	00021880 	sll	v1,v0,0x2
  40a384:	8fc2004c 	lw	v0,76(s8)
  40a388:	00000000 	nop
  40a38c:	00621021 	addu	v0,v1,v0
  40a390:	90460000 	lbu	a2,0(v0)
  40a394:	8fc30028 	lw	v1,40(s8)
  40a398:	00000000 	nop
  40a39c:	00601021 	move	v0,v1
  40a3a0:	00021040 	sll	v0,v0,0x1
  40a3a4:	00431021 	addu	v0,v0,v1
  40a3a8:	00021880 	sll	v1,v0,0x2
  40a3ac:	8fc2004c 	lw	v0,76(s8)
  40a3b0:	00000000 	nop
  40a3b4:	00623821 	addu	a3,v1,v0
  40a3b8:	8fc30028 	lw	v1,40(s8)
  40a3bc:	00000000 	nop
  40a3c0:	00601021 	move	v0,v1
  40a3c4:	00021040 	sll	v0,v0,0x1
  40a3c8:	00431021 	addu	v0,v0,v1
  40a3cc:	00021880 	sll	v1,v0,0x2
  40a3d0:	8fc2004c 	lw	v0,76(s8)
  40a3d4:	00000000 	nop
  40a3d8:	00621021 	addu	v0,v1,v0
  40a3dc:	8c420004 	lw	v0,4(v0)
  40a3e0:	00000000 	nop
  40a3e4:	94420000 	lhu	v0,0(v0)
  40a3e8:	00000000 	nop
  40a3ec:	afa20010 	sw	v0,16(sp)
  40a3f0:	8fc30028 	lw	v1,40(s8)
  40a3f4:	00000000 	nop
  40a3f8:	00601021 	move	v0,v1
  40a3fc:	00021040 	sll	v0,v0,0x1
  40a400:	00431021 	addu	v0,v0,v1
  40a404:	00021880 	sll	v1,v0,0x2
  40a408:	8fc2004c 	lw	v0,76(s8)
  40a40c:	00000000 	nop
  40a410:	00621021 	addu	v0,v1,v0
  40a414:	8c420004 	lw	v0,4(v0)
  40a418:	00000000 	nop
  40a41c:	94420002 	lhu	v0,2(v0)
  40a420:	00000000 	nop
  40a424:	afa20014 	sw	v0,20(sp)
  40a428:	8f848020 	lw	a0,-32736(gp)
  40a42c:	00000000 	nop
  40a430:	24843db4 	addiu	a0,a0,15796
  40a434:	8fc50028 	lw	a1,40(s8)
  40a438:	8ce70008 	lw	a3,8(a3)
  40a43c:	8f9983b8 	lw	t9,-31816(gp)
  40a440:	00000000 	nop
  40a444:	0320f809 	jalr	t9
  40a448:	00000000 	nop
  40a44c:	8fdc0018 	lw	gp,24(s8)
  40a450:	00000000 	nop
  40a454:	8fc20028 	lw	v0,40(s8)
  40a458:	00000000 	nop
  40a45c:	24420001 	addiu	v0,v0,1
  40a460:	afc20028 	sw	v0,40(s8)
  40a464:	1000ffb0 	b	40a328 <kernel_alg_db_new+0x3e4>
  40a468:	00000000 	nop
			"    trans[%d]: transid=%d, attr_cnt=%d, "
			"attrs[0].type=%d, attrs[0].val=%d",
			tn,
			t[tn].transid, t[tn].attr_cnt,
			t[tn].attrs[0].type, t[tn].attrs[0].val
			));
	}
	return ctx_new;
  40a46c:	8fc20048 	lw	v0,72(s8)
  40a470:	00000000 	nop
}
  40a474:	03c0e821 	move	sp,s8
  40a478:	8fbf0068 	lw	ra,104(sp)
  40a47c:	8fbe0064 	lw	s8,100(sp)
  40a480:	27bd0070 	addiu	sp,sp,112
  40a484:	03e00008 	jr	ra
  40a488:	00000000 	nop

0040a48c <db_prop_get>:
  40a48c:	3c1c0fc0 	lui	gp,0xfc0
  40a490:	279c24e4 	addiu	gp,gp,9444
  40a494:	0399e021 	addu	gp,gp,t9
  40a498:	27bdfff0 	addiu	sp,sp,-16
  40a49c:	afbc0000 	sw	gp,0(sp)
  40a4a0:	afbe000c 	sw	s8,12(sp)
  40a4a4:	afbc0008 	sw	gp,8(sp)
  40a4a8:	03a0f021 	move	s8,sp
  40a4ac:	00801021 	move	v0,a0

/*	Get proposal from db object */
static __inline__ struct db_prop *db_prop_get(struct db_context *ctx) {
	return &ctx->prop;
}
  40a4b0:	03c0e821 	move	sp,s8
  40a4b4:	8fbe000c 	lw	s8,12(sp)
  40a4b8:	27bd0010 	addiu	sp,sp,16
  40a4bc:	03e00008 	jr	ra
  40a4c0:	00000000 	nop
	...

0040a4d0 <ike_alg_db_new>:
  40a4d0:	3c1c0fc0 	lui	gp,0xfc0
  40a4d4:	279c24a0 	addiu	gp,gp,9376
  40a4d8:	0399e021 	addu	gp,gp,t9
  40a4dc:	27bdffb0 	addiu	sp,sp,-80
  40a4e0:	afbc0018 	sw	gp,24(sp)
  40a4e4:	afbf0048 	sw	ra,72(sp)
  40a4e8:	afbe0044 	sw	s8,68(sp)
  40a4ec:	afbc0040 	sw	gp,64(sp)
  40a4f0:	03a0f021 	move	s8,sp
  40a4f4:	afc40050 	sw	a0,80(s8)
  40a4f8:	afc60058 	sw	a2,88(s8)
  40a4fc:	afc7005c 	sw	a3,92(s8)
 */
struct db_context *
ike_alg_db_new(struct alg_info_ike *ai , lset_t policy)
{
	struct db_context *db_ctx = NULL;
  40a500:	afc00020 	sw	zero,32(s8)
	struct ike_info *ike_info;
	unsigned ealg, halg, modp, eklen=0;
  40a504:	afc00034 	sw	zero,52(s8)
	struct encrypt_desc *enc_desc;
	int i;

	if (!ai) {
  40a508:	8fc20050 	lw	v0,80(s8)
  40a50c:	00000000 	nop
  40a510:	1440000d 	bnez	v0,40a548 <ike_alg_db_new+0x78>
  40a514:	00000000 	nop
		whack_log(RC_LOG_SERIOUS, "no IKE algorithms "
  40a518:	24040003 	li	a0,3
  40a51c:	8f858020 	lw	a1,-32736(gp)
  40a520:	00000000 	nop
  40a524:	24a53e20 	addiu	a1,a1,15904
  40a528:	8f9982a8 	lw	t9,-32088(gp)
  40a52c:	00000000 	nop
  40a530:	0320f809 	jalr	t9
  40a534:	00000000 	nop
  40a538:	8fdc0018 	lw	gp,24(s8)
  40a53c:	00000000 	nop
				"for this connection "
				"(check ike algorithm string)");
		goto fail;
  40a540:	1000013c 	b	40aa34 <ike_alg_db_new+0x564>
  40a544:	00000000 	nop
	}
	policy &= POLICY_ID_AUTH_MASK;
  40a548:	8fc40058 	lw	a0,88(s8)
  40a54c:	8fc5005c 	lw	a1,92(s8)
  40a550:	24020000 	li	v0,0
  40a554:	24032003 	li	v1,8195
  40a558:	00821024 	and	v0,a0,v0
  40a55c:	00a31824 	and	v1,a1,v1
  40a560:	afc20058 	sw	v0,88(s8)
  40a564:	afc3005c 	sw	v1,92(s8)
	db_ctx = db_prop_new(PROTO_ISAKMP, 8, 8 * 5);
  40a568:	24040001 	li	a0,1
  40a56c:	24050008 	li	a1,8
  40a570:	24060028 	li	a2,40
  40a574:	8f998880 	lw	t9,-30592(gp)
  40a578:	00000000 	nop
  40a57c:	0320f809 	jalr	t9
  40a580:	00000000 	nop
  40a584:	8fdc0018 	lw	gp,24(s8)
  40a588:	afc20020 	sw	v0,32(s8)
	/* for each group */
	ALG_INFO_IKE_FOREACH(ai, ike_info, i) {
  40a58c:	8fc20050 	lw	v0,80(s8)
  40a590:	00000000 	nop
  40a594:	8c420000 	lw	v0,0(v0)
  40a598:	00000000 	nop
  40a59c:	afc2003c 	sw	v0,60(s8)
  40a5a0:	8fc20050 	lw	v0,80(s8)
  40a5a4:	00000000 	nop
  40a5a8:	24420010 	addiu	v0,v0,16
  40a5ac:	afc20024 	sw	v0,36(s8)
  40a5b0:	8fc2003c 	lw	v0,60(s8)
  40a5b4:	00000000 	nop
  40a5b8:	2442ffff 	addiu	v0,v0,-1
  40a5bc:	00401821 	move	v1,v0
  40a5c0:	afc3003c 	sw	v1,60(s8)
  40a5c4:	2402ffff 	li	v0,-1
  40a5c8:	14620003 	bne	v1,v0,40a5d8 <ike_alg_db_new+0x108>
  40a5cc:	00000000 	nop
  40a5d0:	10000118 	b	40aa34 <ike_alg_db_new+0x564>
  40a5d4:	00000000 	nop
		ealg = ike_info->ike_ealg;
  40a5d8:	8fc20024 	lw	v0,36(s8)
  40a5dc:	00000000 	nop
  40a5e0:	94420000 	lhu	v0,0(v0)
  40a5e4:	00000000 	nop
  40a5e8:	afc20028 	sw	v0,40(s8)
		halg = ike_info->ike_halg;
  40a5ec:	8fc20024 	lw	v0,36(s8)
  40a5f0:	00000000 	nop
  40a5f4:	90420002 	lbu	v0,2(v0)
  40a5f8:	00000000 	nop
  40a5fc:	afc2002c 	sw	v0,44(s8)
		modp = ike_info->ike_modp;
  40a600:	8fc20024 	lw	v0,36(s8)
  40a604:	00000000 	nop
  40a608:	9442000c 	lhu	v0,12(v0)
  40a60c:	00000000 	nop
  40a610:	afc20030 	sw	v0,48(s8)
		eklen= ike_info->ike_eklen;
  40a614:	8fc20024 	lw	v0,36(s8)
  40a618:	00000000 	nop
  40a61c:	8c420004 	lw	v0,4(v0)
  40a620:	00000000 	nop
  40a624:	afc20034 	sw	v0,52(s8)
		if (!ike_alg_enc_present(ealg)) {
  40a628:	8fc40028 	lw	a0,40(s8)
  40a62c:	8f9986c8 	lw	t9,-31032(gp)
  40a630:	00000000 	nop
  40a634:	0320f809 	jalr	t9
  40a638:	00000000 	nop
  40a63c:	8fdc0018 	lw	gp,24(s8)
  40a640:	1440000d 	bnez	v0,40a678 <ike_alg_db_new+0x1a8>
  40a644:	00000000 	nop
			DBG_log("ike_alg_db_new() "
  40a648:	8f848020 	lw	a0,-32736(gp)
  40a64c:	00000000 	nop
  40a650:	24843e64 	addiu	a0,a0,15972
  40a654:	8fc50028 	lw	a1,40(s8)
  40a658:	8f9983b8 	lw	t9,-31816(gp)
  40a65c:	00000000 	nop
  40a660:	0320f809 	jalr	t9
  40a664:	00000000 	nop
  40a668:	8fdc0018 	lw	gp,24(s8)
  40a66c:	00000000 	nop
					"ike enc ealg=%d not present",
					ealg);
			continue;
  40a670:	100000ea 	b	40aa1c <ike_alg_db_new+0x54c>
  40a674:	00000000 	nop
		}
		if (!ike_alg_hash_present(halg)) {
  40a678:	8fc4002c 	lw	a0,44(s8)
  40a67c:	8f9980cc 	lw	t9,-32564(gp)
  40a680:	00000000 	nop
  40a684:	0320f809 	jalr	t9
  40a688:	00000000 	nop
  40a68c:	8fdc0018 	lw	gp,24(s8)
  40a690:	1440000d 	bnez	v0,40a6c8 <ike_alg_db_new+0x1f8>
  40a694:	00000000 	nop
			DBG_log("ike_alg_db_new() "
  40a698:	8f848020 	lw	a0,-32736(gp)
  40a69c:	00000000 	nop
  40a6a0:	24843e94 	addiu	a0,a0,16020
  40a6a4:	8fc5002c 	lw	a1,44(s8)
  40a6a8:	8f9983b8 	lw	t9,-31816(gp)
  40a6ac:	00000000 	nop
  40a6b0:	0320f809 	jalr	t9
  40a6b4:	00000000 	nop
  40a6b8:	8fdc0018 	lw	gp,24(s8)
  40a6bc:	00000000 	nop
					"ike hash halg=%d not present",
					halg);
			continue;
  40a6c0:	100000d6 	b	40aa1c <ike_alg_db_new+0x54c>
  40a6c4:	00000000 	nop
		}
		enc_desc = ike_alg_get_encrypter(ealg);
  40a6c8:	8fc40028 	lw	a0,40(s8)
  40a6cc:	8f998024 	lw	t9,-32732(gp)
  40a6d0:	00000000 	nop
  40a6d4:	2739bfb8 	addiu	t9,t9,-16456
  40a6d8:	00000000 	nop
  40a6dc:	0320f809 	jalr	t9
  40a6e0:	00000000 	nop
  40a6e4:	8fdc0018 	lw	gp,24(s8)
  40a6e8:	afc20038 	sw	v0,56(s8)
		passert(enc_desc != NULL);
  40a6ec:	8fc20038 	lw	v0,56(s8)
  40a6f0:	00000000 	nop
  40a6f4:	1440000e 	bnez	v0,40a730 <ike_alg_db_new+0x260>
  40a6f8:	00000000 	nop
  40a6fc:	8f848020 	lw	a0,-32736(gp)
  40a700:	00000000 	nop
  40a704:	24843ec4 	addiu	a0,a0,16068
  40a708:	8f858020 	lw	a1,-32736(gp)
  40a70c:	00000000 	nop
  40a710:	24a53ed8 	addiu	a1,a1,16088
  40a714:	2406005a 	li	a2,90
  40a718:	8f998bb8 	lw	t9,-29768(gp)
  40a71c:	00000000 	nop
  40a720:	0320f809 	jalr	t9
  40a724:	00000000 	nop
  40a728:	8fdc0018 	lw	gp,24(s8)
  40a72c:	00000000 	nop
		if (eklen 
		/*
			&& eklen != enc_desc->keydeflen)
		*/
			&& (eklen < enc_desc->keyminlen
				|| eklen >  enc_desc->keymaxlen))
  40a730:	8fc20034 	lw	v0,52(s8)
  40a734:	00000000 	nop
  40a738:	10400028 	beqz	v0,40a7dc <ike_alg_db_new+0x30c>
  40a73c:	00000000 	nop
  40a740:	8fc20038 	lw	v0,56(s8)
  40a744:	00000000 	nop
  40a748:	8c430018 	lw	v1,24(v0)
  40a74c:	8fc20034 	lw	v0,52(s8)
  40a750:	00000000 	nop
  40a754:	0043102b 	sltu	v0,v0,v1
  40a758:	1440000b 	bnez	v0,40a788 <ike_alg_db_new+0x2b8>
  40a75c:	00000000 	nop
  40a760:	8fc20038 	lw	v0,56(s8)
  40a764:	00000000 	nop
  40a768:	8c430014 	lw	v1,20(v0)
  40a76c:	8fc20034 	lw	v0,52(s8)
  40a770:	00000000 	nop
  40a774:	0062102b 	sltu	v0,v1,v0
  40a778:	14400003 	bnez	v0,40a788 <ike_alg_db_new+0x2b8>
  40a77c:	00000000 	nop
  40a780:	10000016 	b	40a7dc <ike_alg_db_new+0x30c>
  40a784:	00000000 	nop
				
		{
			DBG_log("ike_alg_db_new() "
  40a788:	8fc20038 	lw	v0,56(s8)
  40a78c:	00000000 	nop
  40a790:	8c420014 	lw	v0,20(v0)
  40a794:	00000000 	nop
  40a798:	afa20010 	sw	v0,16(sp)
  40a79c:	8f848020 	lw	a0,-32736(gp)
  40a7a0:	00000000 	nop
  40a7a4:	24843ee4 	addiu	a0,a0,16100
  40a7a8:	8fc50028 	lw	a1,40(s8)
  40a7ac:	8fc60034 	lw	a2,52(s8)
  40a7b0:	8fc20038 	lw	v0,56(s8)
  40a7b4:	00000000 	nop
  40a7b8:	8c470018 	lw	a3,24(v0)
  40a7bc:	8f9983b8 	lw	t9,-31816(gp)
  40a7c0:	00000000 	nop
  40a7c4:	0320f809 	jalr	t9
  40a7c8:	00000000 	nop
  40a7cc:	8fdc0018 	lw	gp,24(s8)
  40a7d0:	00000000 	nop
					"ealg=%d (specified) keylen:%d, "
					"not valid "
					/*
					 "keylen != %d"
					 */
					"min=%d, max=%d"
					, ealg
					, eklen
					/*
					, enc_desc->keydeflen
					*/
					, enc_desc->keyminlen
					, enc_desc->keymaxlen
					);
			continue;
  40a7d4:	10000091 	b	40aa1c <ike_alg_db_new+0x54c>
  40a7d8:	00000000 	nop
		}
		if (policy & POLICY_RSASIG) {
  40a7dc:	8fc40058 	lw	a0,88(s8)
  40a7e0:	8fc5005c 	lw	a1,92(s8)
  40a7e4:	24020000 	li	v0,0
  40a7e8:	24030002 	li	v1,2
  40a7ec:	00822024 	and	a0,a0,v0
  40a7f0:	00a32824 	and	a1,a1,v1
  40a7f4:	00801021 	move	v0,a0
  40a7f8:	00451025 	or	v0,v0,a1
  40a7fc:	1040003e 	beqz	v0,40a8f8 <ike_alg_db_new+0x428>
  40a800:	00000000 	nop
			db_trans_add(db_ctx, KEY_IKE);
  40a804:	8fc40020 	lw	a0,32(s8)
  40a808:	24050001 	li	a1,1
  40a80c:	8f9986f4 	lw	t9,-30988(gp)
  40a810:	00000000 	nop
  40a814:	0320f809 	jalr	t9
  40a818:	00000000 	nop
  40a81c:	8fdc0018 	lw	gp,24(s8)
  40a820:	00000000 	nop
			db_attr_add_values(db_ctx, 
  40a824:	97c2002a 	lhu	v0,42(s8)
  40a828:	8fc40020 	lw	a0,32(s8)
  40a82c:	24050001 	li	a1,1
  40a830:	00403021 	move	a2,v0
  40a834:	8f998a54 	lw	t9,-30124(gp)
  40a838:	00000000 	nop
  40a83c:	0320f809 	jalr	t9
  40a840:	00000000 	nop
  40a844:	8fdc0018 	lw	gp,24(s8)
  40a848:	00000000 	nop
					OAKLEY_ENCRYPTION_ALGORITHM, ealg);
			db_attr_add_values(db_ctx, 
  40a84c:	97c2002e 	lhu	v0,46(s8)
  40a850:	8fc40020 	lw	a0,32(s8)
  40a854:	24050002 	li	a1,2
  40a858:	00403021 	move	a2,v0
  40a85c:	8f998a54 	lw	t9,-30124(gp)
  40a860:	00000000 	nop
  40a864:	0320f809 	jalr	t9
  40a868:	00000000 	nop
  40a86c:	8fdc0018 	lw	gp,24(s8)
  40a870:	00000000 	nop
					OAKLEY_HASH_ALGORITHM, halg);
			if (eklen)
  40a874:	8fc20034 	lw	v0,52(s8)
  40a878:	00000000 	nop
  40a87c:	1040000b 	beqz	v0,40a8ac <ike_alg_db_new+0x3dc>
  40a880:	00000000 	nop
				db_attr_add_values(db_ctx, 
  40a884:	97c20036 	lhu	v0,54(s8)
  40a888:	8fc40020 	lw	a0,32(s8)
  40a88c:	2405000e 	li	a1,14
  40a890:	00403021 	move	a2,v0
  40a894:	8f998a54 	lw	t9,-30124(gp)
  40a898:	00000000 	nop
  40a89c:	0320f809 	jalr	t9
  40a8a0:	00000000 	nop
  40a8a4:	8fdc0018 	lw	gp,24(s8)
  40a8a8:	00000000 	nop
						OAKLEY_KEY_LENGTH, eklen);
			db_attr_add_values(db_ctx, 
  40a8ac:	8fc40020 	lw	a0,32(s8)
  40a8b0:	24050003 	li	a1,3
  40a8b4:	24060003 	li	a2,3
  40a8b8:	8f998a54 	lw	t9,-30124(gp)
  40a8bc:	00000000 	nop
  40a8c0:	0320f809 	jalr	t9
  40a8c4:	00000000 	nop
  40a8c8:	8fdc0018 	lw	gp,24(s8)
  40a8cc:	00000000 	nop
					OAKLEY_AUTHENTICATION_METHOD, OAKLEY_RSA_SIG);
			db_attr_add_values(db_ctx, 
  40a8d0:	97c20032 	lhu	v0,50(s8)
  40a8d4:	8fc40020 	lw	a0,32(s8)
  40a8d8:	24050004 	li	a1,4
  40a8dc:	00403021 	move	a2,v0
  40a8e0:	8f998a54 	lw	t9,-30124(gp)
  40a8e4:	00000000 	nop
  40a8e8:	0320f809 	jalr	t9
  40a8ec:	00000000 	nop
  40a8f0:	8fdc0018 	lw	gp,24(s8)
  40a8f4:	00000000 	nop
					OAKLEY_GROUP_DESCRIPTION, modp);
		}
		if (policy & POLICY_PSK) {
  40a8f8:	8fc20058 	lw	v0,88(s8)
  40a8fc:	8fc3005c 	lw	v1,92(s8)
  40a900:	24040000 	li	a0,0
  40a904:	24050001 	li	a1,1
  40a908:	00441024 	and	v0,v0,a0
  40a90c:	00651824 	and	v1,v1,a1
  40a910:	10600042 	beqz	v1,40aa1c <ike_alg_db_new+0x54c>
  40a914:	00000000 	nop
			db_trans_add(db_ctx, KEY_IKE);
  40a918:	8fc40020 	lw	a0,32(s8)
  40a91c:	24050001 	li	a1,1
  40a920:	8f9986f4 	lw	t9,-30988(gp)
  40a924:	00000000 	nop
  40a928:	0320f809 	jalr	t9
  40a92c:	00000000 	nop
  40a930:	8fdc0018 	lw	gp,24(s8)
  40a934:	00000000 	nop
			db_attr_add_values(db_ctx, 
  40a938:	97c2002a 	lhu	v0,42(s8)
  40a93c:	8fc40020 	lw	a0,32(s8)
  40a940:	24050001 	li	a1,1
  40a944:	00403021 	move	a2,v0
  40a948:	8f998a54 	lw	t9,-30124(gp)
  40a94c:	00000000 	nop
  40a950:	0320f809 	jalr	t9
  40a954:	00000000 	nop
  40a958:	8fdc0018 	lw	gp,24(s8)
  40a95c:	00000000 	nop
					OAKLEY_ENCRYPTION_ALGORITHM, ealg);
			db_attr_add_values(db_ctx, 
  40a960:	97c2002e 	lhu	v0,46(s8)
  40a964:	8fc40020 	lw	a0,32(s8)
  40a968:	24050002 	li	a1,2
  40a96c:	00403021 	move	a2,v0
  40a970:	8f998a54 	lw	t9,-30124(gp)
  40a974:	00000000 	nop
  40a978:	0320f809 	jalr	t9
  40a97c:	00000000 	nop
  40a980:	8fdc0018 	lw	gp,24(s8)
  40a984:	00000000 	nop
					OAKLEY_HASH_ALGORITHM, halg);
			if (ike_info->ike_eklen) 
  40a988:	8fc20024 	lw	v0,36(s8)
  40a98c:	00000000 	nop
  40a990:	8c420004 	lw	v0,4(v0)
  40a994:	00000000 	nop
  40a998:	1040000d 	beqz	v0,40a9d0 <ike_alg_db_new+0x500>
  40a99c:	00000000 	nop
				db_attr_add_values(db_ctx, 
  40a9a0:	8fc20024 	lw	v0,36(s8)
  40a9a4:	00000000 	nop
  40a9a8:	94420006 	lhu	v0,6(v0)
  40a9ac:	8fc40020 	lw	a0,32(s8)
  40a9b0:	2405000e 	li	a1,14
  40a9b4:	00403021 	move	a2,v0
  40a9b8:	8f998a54 	lw	t9,-30124(gp)
  40a9bc:	00000000 	nop
  40a9c0:	0320f809 	jalr	t9
  40a9c4:	00000000 	nop
  40a9c8:	8fdc0018 	lw	gp,24(s8)
  40a9cc:	00000000 	nop
						OAKLEY_KEY_LENGTH, ike_info->ike_eklen);
			db_attr_add_values(db_ctx, 
  40a9d0:	8fc40020 	lw	a0,32(s8)
  40a9d4:	24050003 	li	a1,3
  40a9d8:	24060001 	li	a2,1
  40a9dc:	8f998a54 	lw	t9,-30124(gp)
  40a9e0:	00000000 	nop
  40a9e4:	0320f809 	jalr	t9
  40a9e8:	00000000 	nop
  40a9ec:	8fdc0018 	lw	gp,24(s8)
  40a9f0:	00000000 	nop
					OAKLEY_AUTHENTICATION_METHOD, OAKLEY_PRESHARED_KEY);
			db_attr_add_values(db_ctx, 
  40a9f4:	97c20032 	lhu	v0,50(s8)
  40a9f8:	8fc40020 	lw	a0,32(s8)
  40a9fc:	24050004 	li	a1,4
  40aa00:	00403021 	move	a2,v0
  40aa04:	8f998a54 	lw	t9,-30124(gp)
  40aa08:	00000000 	nop
  40aa0c:	0320f809 	jalr	t9
  40aa10:	00000000 	nop
  40aa14:	8fdc0018 	lw	gp,24(s8)
  40aa18:	00000000 	nop
  40aa1c:	8fc20024 	lw	v0,36(s8)
  40aa20:	00000000 	nop
  40aa24:	24420010 	addiu	v0,v0,16
  40aa28:	afc20024 	sw	v0,36(s8)
  40aa2c:	1000fee0 	b	40a5b0 <ike_alg_db_new+0xe0>
  40aa30:	00000000 	nop
					OAKLEY_GROUP_DESCRIPTION, modp);
		}
	}
fail:
	return db_ctx;
  40aa34:	8fc20020 	lw	v0,32(s8)
  40aa38:	00000000 	nop
}
  40aa3c:	03c0e821 	move	sp,s8
  40aa40:	8fbf0048 	lw	ra,72(sp)
  40aa44:	8fbe0044 	lw	s8,68(sp)
  40aa48:	27bd0050 	addiu	sp,sp,80
  40aa4c:	03e00008 	jr	ra
  40aa50:	00000000 	nop

0040aa54 <ike_alg_show_status>:
  40aa54:	3c1c0fc0 	lui	gp,0xfc0
  40aa58:	279c1f1c 	addiu	gp,gp,7964
  40aa5c:	0399e021 	addu	gp,gp,t9
  40aa60:	27bdffc0 	addiu	sp,sp,-64
  40aa64:	afbc0018 	sw	gp,24(sp)
  40aa68:	afbf0038 	sw	ra,56(sp)
  40aa6c:	afbe0034 	sw	s8,52(sp)
  40aa70:	afbc0030 	sw	gp,48(sp)
  40aa74:	03a0f021 	move	s8,sp
/*
 * 	Show registered IKE algorithms
 */
void
ike_alg_show_status(void)
{
	unsigned alg, i;
	struct ike_alg *algo;
	IKE_EALG_FOR_EACH(algo) {
  40aa78:	8f828a40 	lw	v0,-30144(gp)
  40aa7c:	00000000 	nop
  40aa80:	8c420000 	lw	v0,0(v0)
  40aa84:	00000000 	nop
  40aa88:	afc20028 	sw	v0,40(s8)
  40aa8c:	8fc20028 	lw	v0,40(s8)
  40aa90:	00000000 	nop
  40aa94:	14400003 	bnez	v0,40aaa4 <ike_alg_show_status+0x50>
  40aa98:	00000000 	nop
  40aa9c:	1000003c 	b	40ab90 <ike_alg_show_status+0x13c>
  40aaa0:	00000000 	nop
		passert(algo != NULL);
  40aaa4:	8fc20028 	lw	v0,40(s8)
  40aaa8:	00000000 	nop
  40aaac:	1440000e 	bnez	v0,40aae8 <ike_alg_show_status+0x94>
  40aab0:	00000000 	nop
  40aab4:	8f848020 	lw	a0,-32736(gp)
  40aab8:	00000000 	nop
  40aabc:	24843f30 	addiu	a0,a0,16176
  40aac0:	8f858020 	lw	a1,-32736(gp)
  40aac4:	00000000 	nop
  40aac8:	24a53ed8 	addiu	a1,a1,16088
  40aacc:	2406009d 	li	a2,157
  40aad0:	8f998bb8 	lw	t9,-29768(gp)
  40aad4:	00000000 	nop
  40aad8:	0320f809 	jalr	t9
  40aadc:	00000000 	nop
  40aae0:	8fdc0018 	lw	gp,24(s8)
  40aae4:	00000000 	nop
		alg=algo->algo_id;
  40aae8:	8fc20028 	lw	v0,40(s8)
  40aaec:	00000000 	nop
  40aaf0:	94420002 	lhu	v0,2(v0)
  40aaf4:	00000000 	nop
  40aaf8:	afc20020 	sw	v0,32(s8)
		whack_log(RC_COMMENT, "algorithm IKE encrypt: id=%d, name=%s, blocksize=%d, keydeflen=%d"
  40aafc:	8f848a50 	lw	a0,-30128(gp)
  40ab00:	8fc50020 	lw	a1,32(s8)
  40ab04:	8f9984bc 	lw	t9,-31556(gp)
  40ab08:	00000000 	nop
  40ab0c:	0320f809 	jalr	t9
  40ab10:	00000000 	nop
  40ab14:	8fdc0018 	lw	gp,24(s8)
  40ab18:	00401821 	move	v1,v0
  40ab1c:	8fc20028 	lw	v0,40(s8)
  40ab20:	00000000 	nop
  40ab24:	8c42000c 	lw	v0,12(v0)
  40ab28:	00000000 	nop
  40ab2c:	afa20010 	sw	v0,16(sp)
  40ab30:	8fc20028 	lw	v0,40(s8)
  40ab34:	00000000 	nop
  40ab38:	8c420010 	lw	v0,16(v0)
  40ab3c:	00000000 	nop
  40ab40:	afa20014 	sw	v0,20(sp)
  40ab44:	00002021 	move	a0,zero
  40ab48:	8f858020 	lw	a1,-32736(gp)
  40ab4c:	00000000 	nop
  40ab50:	24a53f40 	addiu	a1,a1,16192
  40ab54:	8fc60020 	lw	a2,32(s8)
  40ab58:	00603821 	move	a3,v1
  40ab5c:	8f9982a8 	lw	t9,-32088(gp)
  40ab60:	00000000 	nop
  40ab64:	0320f809 	jalr	t9
  40ab68:	00000000 	nop
  40ab6c:	8fdc0018 	lw	gp,24(s8)
  40ab70:	00000000 	nop
  40ab74:	8fc20028 	lw	v0,40(s8)
  40ab78:	00000000 	nop
  40ab7c:	8c420004 	lw	v0,4(v0)
  40ab80:	00000000 	nop
  40ab84:	afc20028 	sw	v0,40(s8)
  40ab88:	1000ffc0 	b	40aa8c <ike_alg_show_status+0x38>
  40ab8c:	00000000 	nop
			, alg
			, enum_name(&oakley_enc_names, alg)
			, (int)((struct encrypt_desc *)algo)->enc_blocksize
			, ((struct encrypt_desc *)algo)->keydeflen
			);
		
	}
	IKE_HALG_FOR_EACH(algo) {
  40ab90:	8f828a40 	lw	v0,-30144(gp)
  40ab94:	00000000 	nop
  40ab98:	8c420004 	lw	v0,4(v0)
  40ab9c:	00000000 	nop
  40aba0:	afc20028 	sw	v0,40(s8)
  40aba4:	8fc20028 	lw	v0,40(s8)
  40aba8:	00000000 	nop
  40abac:	14400003 	bnez	v0,40abbc <ike_alg_show_status+0x168>
  40abb0:	00000000 	nop
  40abb4:	10000026 	b	40ac50 <ike_alg_show_status+0x1fc>
  40abb8:	00000000 	nop
		whack_log(RC_COMMENT, "algorithm IKE hash: id=%d, name=%s, hashsize=%d"
  40abbc:	8fc20028 	lw	v0,40(s8)
  40abc0:	00000000 	nop
  40abc4:	94420002 	lhu	v0,2(v0)
  40abc8:	8f8489a0 	lw	a0,-30304(gp)
  40abcc:	00402821 	move	a1,v0
  40abd0:	8f9984bc 	lw	t9,-31556(gp)
  40abd4:	00000000 	nop
  40abd8:	0320f809 	jalr	t9
  40abdc:	00000000 	nop
  40abe0:	8fdc0018 	lw	gp,24(s8)
  40abe4:	00403821 	move	a3,v0
  40abe8:	8fc20028 	lw	v0,40(s8)
  40abec:	00000000 	nop
  40abf0:	94430002 	lhu	v1,2(v0)
  40abf4:	8fc20028 	lw	v0,40(s8)
  40abf8:	00000000 	nop
  40abfc:	8c42000c 	lw	v0,12(v0)
  40ac00:	00000000 	nop
  40ac04:	afa20010 	sw	v0,16(sp)
  40ac08:	00002021 	move	a0,zero
  40ac0c:	8f858020 	lw	a1,-32736(gp)
  40ac10:	00000000 	nop
  40ac14:	24a53f84 	addiu	a1,a1,16260
  40ac18:	00603021 	move	a2,v1
  40ac1c:	8f9982a8 	lw	t9,-32088(gp)
  40ac20:	00000000 	nop
  40ac24:	0320f809 	jalr	t9
  40ac28:	00000000 	nop
  40ac2c:	8fdc0018 	lw	gp,24(s8)
  40ac30:	00000000 	nop
  40ac34:	8fc20028 	lw	v0,40(s8)
  40ac38:	00000000 	nop
  40ac3c:	8c420004 	lw	v0,4(v0)
  40ac40:	00000000 	nop
  40ac44:	afc20028 	sw	v0,40(s8)
  40ac48:	1000ffd6 	b	40aba4 <ike_alg_show_status+0x150>
  40ac4c:	00000000 	nop
			, algo->algo_id
			, enum_name(&oakley_hash_names, algo->algo_id)
			, (int)((struct hash_desc *)algo)->hash_digest_size
			);
	}
#define IKE_DH_ALG_FOR_EACH(idx) for(idx = 0; idx != elemsof(oakley_group); idx++)
	IKE_DH_ALG_FOR_EACH(i) {
  40ac50:	afc00024 	sw	zero,36(s8)
  40ac54:	8fc30024 	lw	v1,36(s8)
  40ac58:	24020008 	li	v0,8
  40ac5c:	14620003 	bne	v1,v0,40ac6c <ike_alg_show_status+0x218>
  40ac60:	00000000 	nop
  40ac64:	10000030 	b	40ad28 <ike_alg_show_status+0x2d4>
  40ac68:	00000000 	nop
		const struct oakley_group_desc *gdesc=oakley_group+i;
  40ac6c:	8fc30024 	lw	v1,36(s8)
  40ac70:	00000000 	nop
  40ac74:	00601021 	move	v0,v1
  40ac78:	00021040 	sll	v0,v0,0x1
  40ac7c:	00431021 	addu	v0,v0,v1
  40ac80:	00021080 	sll	v0,v0,0x2
  40ac84:	8f818a7c 	lw	at,-30084(gp)
  40ac88:	00000000 	nop
  40ac8c:	00221021 	addu	v0,at,v0
  40ac90:	afc2002c 	sw	v0,44(s8)
		whack_log(RC_COMMENT, "algorithm IKE dh group: id=%d, name=%s, bits=%d"
  40ac94:	8fc2002c 	lw	v0,44(s8)
  40ac98:	00000000 	nop
  40ac9c:	94420000 	lhu	v0,0(v0)
  40aca0:	8f848080 	lw	a0,-32640(gp)
  40aca4:	00402821 	move	a1,v0
  40aca8:	8f9984bc 	lw	t9,-31556(gp)
  40acac:	00000000 	nop
  40acb0:	0320f809 	jalr	t9
  40acb4:	00000000 	nop
  40acb8:	8fdc0018 	lw	gp,24(s8)
  40acbc:	00403821 	move	a3,v0
  40acc0:	8fc2002c 	lw	v0,44(s8)
  40acc4:	00000000 	nop
  40acc8:	94430000 	lhu	v1,0(v0)
  40accc:	8fc2002c 	lw	v0,44(s8)
  40acd0:	00000000 	nop
  40acd4:	8c420008 	lw	v0,8(v0)
  40acd8:	00000000 	nop
  40acdc:	000210c0 	sll	v0,v0,0x3
  40ace0:	afa20010 	sw	v0,16(sp)
  40ace4:	00002021 	move	a0,zero
  40ace8:	8f858020 	lw	a1,-32736(gp)
  40acec:	00000000 	nop
  40acf0:	24a53fb4 	addiu	a1,a1,16308
  40acf4:	00603021 	move	a2,v1
  40acf8:	8f9982a8 	lw	t9,-32088(gp)
  40acfc:	00000000 	nop
  40ad00:	0320f809 	jalr	t9
  40ad04:	00000000 	nop
  40ad08:	8fdc0018 	lw	gp,24(s8)
  40ad0c:	00000000 	nop
  40ad10:	8fc20024 	lw	v0,36(s8)
  40ad14:	00000000 	nop
  40ad18:	24420001 	addiu	v0,v0,1
  40ad1c:	afc20024 	sw	v0,36(s8)
  40ad20:	1000ffcc 	b	40ac54 <ike_alg_show_status+0x200>
  40ad24:	00000000 	nop
			, gdesc->group
			, enum_name(&oakley_group_names, gdesc->group)
			, (int)gdesc->bytes*BITS_PER_BYTE
			);
	}
}
  40ad28:	03c0e821 	move	sp,s8
  40ad2c:	8fbf0038 	lw	ra,56(sp)
  40ad30:	8fbe0034 	lw	s8,52(sp)
  40ad34:	27bd0040 	addiu	sp,sp,64
  40ad38:	03e00008 	jr	ra
  40ad3c:	00000000 	nop

0040ad40 <ike_alg_show_connection>:
  40ad40:	3c1c0fc0 	lui	gp,0xfc0
  40ad44:	279c1c30 	addiu	gp,gp,7216
  40ad48:	0399e021 	addu	gp,gp,t9
  40ad4c:	27bdfeb8 	addiu	sp,sp,-328
  40ad50:	afbc0020 	sw	gp,32(sp)
  40ad54:	afbf0140 	sw	ra,320(sp)
  40ad58:	afbe013c 	sw	s8,316(sp)
  40ad5c:	afbc0138 	sw	gp,312(sp)
  40ad60:	afb10134 	sw	s1,308(sp)
  40ad64:	afb00130 	sw	s0,304(sp)
  40ad68:	03a0f021 	move	s8,sp
  40ad6c:	afc40148 	sw	a0,328(s8)
  40ad70:	afc5014c 	sw	a1,332(s8)
/*
 * 	Show IKE algorithms for 
 * 	- this connection (result from ike= string)
 * 	- newest SA
 */
void
ike_alg_show_connection(struct connection *c, const char *instance)
{
	char buf[256];
	struct state *st;
	if (c->alg_info_ike) {
  40ad74:	8fc20148 	lw	v0,328(s8)
  40ad78:	00000000 	nop
  40ad7c:	8c4201c0 	lw	v0,448(v0)
  40ad80:	00000000 	nop
  40ad84:	1040001c 	beqz	v0,40adf8 <ike_alg_show_connection+0xb8>
  40ad88:	00000000 	nop
		alg_info_snprint(buf, sizeof(buf)-1, 
  40ad8c:	27c40028 	addiu	a0,s8,40
  40ad90:	240500ff 	li	a1,255
  40ad94:	8fc20148 	lw	v0,328(s8)
  40ad98:	00000000 	nop
  40ad9c:	8c4601c0 	lw	a2,448(v0)
  40ada0:	8f998068 	lw	t9,-32664(gp)
  40ada4:	00000000 	nop
  40ada8:	0320f809 	jalr	t9
  40adac:	00000000 	nop
  40adb0:	8fdc0020 	lw	gp,32(s8)
  40adb4:	00000000 	nop
				(struct alg_info *)c->alg_info_ike);
		whack_log(RC_COMMENT
  40adb8:	27c20028 	addiu	v0,s8,40
  40adbc:	afa20010 	sw	v0,16(sp)
  40adc0:	00002021 	move	a0,zero
  40adc4:	8f858020 	lw	a1,-32736(gp)
  40adc8:	00000000 	nop
  40adcc:	24a53fe4 	addiu	a1,a1,16356
  40add0:	8fc20148 	lw	v0,328(s8)
  40add4:	00000000 	nop
  40add8:	8c460000 	lw	a2,0(v0)
  40addc:	8fc7014c 	lw	a3,332(s8)
  40ade0:	8f9982a8 	lw	t9,-32088(gp)
  40ade4:	00000000 	nop
  40ade8:	0320f809 	jalr	t9
  40adec:	00000000 	nop
  40adf0:	8fdc0020 	lw	gp,32(s8)
  40adf4:	00000000 	nop
		    , "\"%s\"%s:   IKE algorithms wanted: %s"
		    , c->name
		    , instance
		    , buf);
	}
	if (c->alg_info_ike) {
  40adf8:	8fc20148 	lw	v0,328(s8)
  40adfc:	00000000 	nop
  40ae00:	8c4201c0 	lw	v0,448(v0)
  40ae04:	00000000 	nop
  40ae08:	1040001c 	beqz	v0,40ae7c <ike_alg_show_connection+0x13c>
  40ae0c:	00000000 	nop
		alg_info_snprint_ike(buf, sizeof(buf)-1, c->alg_info_ike);
  40ae10:	27c40028 	addiu	a0,s8,40
  40ae14:	240500ff 	li	a1,255
  40ae18:	8fc20148 	lw	v0,328(s8)
  40ae1c:	00000000 	nop
  40ae20:	8c4601c0 	lw	a2,448(v0)
  40ae24:	8f998668 	lw	t9,-31128(gp)
  40ae28:	00000000 	nop
  40ae2c:	0320f809 	jalr	t9
  40ae30:	00000000 	nop
  40ae34:	8fdc0020 	lw	gp,32(s8)
  40ae38:	00000000 	nop
		whack_log(RC_COMMENT
  40ae3c:	27c20028 	addiu	v0,s8,40
  40ae40:	afa20010 	sw	v0,16(sp)
  40ae44:	00002021 	move	a0,zero
  40ae48:	8f858020 	lw	a1,-32736(gp)
  40ae4c:	00000000 	nop
  40ae50:	24a54008 	addiu	a1,a1,16392
  40ae54:	8fc20148 	lw	v0,328(s8)
  40ae58:	00000000 	nop
  40ae5c:	8c460000 	lw	a2,0(v0)
  40ae60:	8fc7014c 	lw	a3,332(s8)
  40ae64:	8f9982a8 	lw	t9,-32088(gp)
  40ae68:	00000000 	nop
  40ae6c:	0320f809 	jalr	t9
  40ae70:	00000000 	nop
  40ae74:	8fdc0020 	lw	gp,32(s8)
  40ae78:	00000000 	nop
		    , "\"%s\"%s:   IKE algorithms found:  %s"
		    , c->name
		    , instance
		    , buf);
	}
	st = state_with_serialno(c->newest_isakmp_sa);
  40ae7c:	8fc20148 	lw	v0,328(s8)
  40ae80:	00000000 	nop
  40ae84:	8c4401a4 	lw	a0,420(v0)
  40ae88:	8f99873c 	lw	t9,-30916(gp)
  40ae8c:	00000000 	nop
  40ae90:	0320f809 	jalr	t9
  40ae94:	00000000 	nop
  40ae98:	8fdc0020 	lw	gp,32(s8)
  40ae9c:	afc20128 	sw	v0,296(s8)
	if (st)
  40aea0:	8fc20128 	lw	v0,296(s8)
  40aea4:	00000000 	nop
  40aea8:	1040003a 	beqz	v0,40af94 <ike_alg_show_connection+0x254>
  40aeac:	00000000 	nop
		whack_log(RC_COMMENT
  40aeb0:	8fc20128 	lw	v0,296(s8)
  40aeb4:	00000000 	nop
  40aeb8:	9442001c 	lhu	v0,28(v0)
  40aebc:	8f848a50 	lw	a0,-30128(gp)
  40aec0:	00402821 	move	a1,v0
  40aec4:	8f9987fc 	lw	t9,-30724(gp)
  40aec8:	00000000 	nop
  40aecc:	0320f809 	jalr	t9
  40aed0:	00000000 	nop
  40aed4:	8fdc0020 	lw	gp,32(s8)
  40aed8:	24510007 	addiu	s1,v0,7
  40aedc:	8fc20128 	lw	v0,296(s8)
  40aee0:	00000000 	nop
  40aee4:	94420024 	lhu	v0,36(v0)
  40aee8:	8f8489a0 	lw	a0,-30304(gp)
  40aeec:	00402821 	move	a1,v0
  40aef0:	8f9987fc 	lw	t9,-30724(gp)
  40aef4:	00000000 	nop
  40aef8:	0320f809 	jalr	t9
  40aefc:	00000000 	nop
  40af00:	8fdc0020 	lw	gp,32(s8)
  40af04:	24500007 	addiu	s0,v0,7
  40af08:	8fc20128 	lw	v0,296(s8)
  40af0c:	00000000 	nop
  40af10:	8c420030 	lw	v0,48(v0)
  40af14:	00000000 	nop
  40af18:	94420000 	lhu	v0,0(v0)
  40af1c:	8f848080 	lw	a0,-32640(gp)
  40af20:	00402821 	move	a1,v0
  40af24:	8f9987fc 	lw	t9,-30724(gp)
  40af28:	00000000 	nop
  40af2c:	0320f809 	jalr	t9
  40af30:	00000000 	nop
  40af34:	8fdc0020 	lw	gp,32(s8)
  40af38:	2443000d 	addiu	v1,v0,13
  40af3c:	afb10010 	sw	s1,16(sp)
  40af40:	8fc20128 	lw	v0,296(s8)
  40af44:	00000000 	nop
  40af48:	9442001e 	lhu	v0,30(v0)
  40af4c:	00000000 	nop
  40af50:	afa20014 	sw	v0,20(sp)
  40af54:	afb00018 	sw	s0,24(sp)
  40af58:	afa3001c 	sw	v1,28(sp)
  40af5c:	00002021 	move	a0,zero
  40af60:	8f858020 	lw	a1,-32736(gp)
  40af64:	00000000 	nop
  40af68:	24a5402c 	addiu	a1,a1,16428
  40af6c:	8fc20148 	lw	v0,328(s8)
  40af70:	00000000 	nop
  40af74:	8c460000 	lw	a2,0(v0)
  40af78:	8fc7014c 	lw	a3,332(s8)
  40af7c:	8f9982a8 	lw	t9,-32088(gp)
  40af80:	00000000 	nop
  40af84:	0320f809 	jalr	t9
  40af88:	00000000 	nop
  40af8c:	8fdc0020 	lw	gp,32(s8)
  40af90:	00000000 	nop
		, "\"%s\"%s:   IKE algorithm newest: %s_%d-%s-%s"
		, c->name
		, instance
		, enum_show(&oakley_enc_names, st->st_oakley.encrypt)
		+7 /* strlen("OAKLEY_") */
		/* , st->st_oakley.encrypter->keydeflen */
		, st->st_oakley.enckeylen
		, enum_show(&oakley_hash_names, st->st_oakley.hash)
		+7 /* strlen("OAKLEY_") */
		, enum_show(&oakley_group_names, st->st_oakley.group->group)
		+13 /* strlen("OAKLEY_GROUP_") */
	 );
}
  40af94:	03c0e821 	move	sp,s8
  40af98:	8fbf0140 	lw	ra,320(sp)
  40af9c:	8fbe013c 	lw	s8,316(sp)
  40afa0:	8fb10134 	lw	s1,308(sp)
  40afa4:	8fb00130 	lw	s0,304(sp)
  40afa8:	27bd0148 	addiu	sp,sp,328
  40afac:	03e00008 	jr	ra
  40afb0:	00000000 	nop

0040afb4 <ike_alg_enc_present>:
  40afb4:	3c1c0fc0 	lui	gp,0xfc0
  40afb8:	279c19bc 	addiu	gp,gp,6588
  40afbc:	0399e021 	addu	gp,gp,t9
  40afc0:	27bdffd0 	addiu	sp,sp,-48
  40afc4:	afbc0010 	sw	gp,16(sp)
  40afc8:	afbf0028 	sw	ra,40(sp)
  40afcc:	afbe0024 	sw	s8,36(sp)
  40afd0:	afbc0020 	sw	gp,32(sp)
  40afd4:	03a0f021 	move	s8,sp
  40afd8:	afc40030 	sw	a0,48(s8)
/*==========================================================
 *
 * 	IKE algo list handling
 *
 * 	- registration
 * 	- lookup
 *=========================================================*/
struct ike_alg *ike_alg_base[IKE_ALG_MAX+1] = {NULL, NULL};
/*	check if IKE encrypt algo is present */
bool ike_alg_enc_present(int ealg)
{
	struct encrypt_desc *enc_desc = ike_alg_get_encrypter(ealg);
  40afdc:	8fc40030 	lw	a0,48(s8)
  40afe0:	8f998024 	lw	t9,-32732(gp)
  40afe4:	00000000 	nop
  40afe8:	2739bfb8 	addiu	t9,t9,-16456
  40afec:	00000000 	nop
  40aff0:	0320f809 	jalr	t9
  40aff4:	00000000 	nop
  40aff8:	8fdc0010 	lw	gp,16(s8)
  40affc:	afc20018 	sw	v0,24(s8)
	return enc_desc ? enc_desc->enc_blocksize : 0;
  40b000:	8fc20018 	lw	v0,24(s8)
  40b004:	00000000 	nop
  40b008:	10400008 	beqz	v0,40b02c <ike_alg_enc_present+0x78>
  40b00c:	00000000 	nop
  40b010:	8fc20018 	lw	v0,24(s8)
  40b014:	00000000 	nop
  40b018:	8c42000c 	lw	v0,12(v0)
  40b01c:	00000000 	nop
  40b020:	afc2001c 	sw	v0,28(s8)
  40b024:	10000002 	b	40b030 <ike_alg_enc_present+0x7c>
  40b028:	00000000 	nop
  40b02c:	afc0001c 	sw	zero,28(s8)
  40b030:	8fc2001c 	lw	v0,28(s8)
  40b034:	00000000 	nop
}
  40b038:	03c0e821 	move	sp,s8
  40b03c:	8fbf0028 	lw	ra,40(sp)
  40b040:	8fbe0024 	lw	s8,36(sp)
  40b044:	27bd0030 	addiu	sp,sp,48
  40b048:	03e00008 	jr	ra
  40b04c:	00000000 	nop

0040b050 <ike_alg_hash_present>:
  40b050:	3c1c0fc0 	lui	gp,0xfc0
  40b054:	279c1920 	addiu	gp,gp,6432
  40b058:	0399e021 	addu	gp,gp,t9
  40b05c:	27bdffd0 	addiu	sp,sp,-48
  40b060:	afbc0010 	sw	gp,16(sp)
  40b064:	afbf0028 	sw	ra,40(sp)
  40b068:	afbe0024 	sw	s8,36(sp)
  40b06c:	afbc0020 	sw	gp,32(sp)
  40b070:	03a0f021 	move	s8,sp
  40b074:	afc40030 	sw	a0,48(s8)
/*	check if IKE hash algo is present */
bool ike_alg_hash_present(int halg)
{
	struct hash_desc *hash_desc = ike_alg_get_hasher(halg);
  40b078:	8fc40030 	lw	a0,48(s8)
  40b07c:	8f998024 	lw	t9,-32732(gp)
  40b080:	00000000 	nop
  40b084:	2739bf54 	addiu	t9,t9,-16556
  40b088:	00000000 	nop
  40b08c:	0320f809 	jalr	t9
  40b090:	00000000 	nop
  40b094:	8fdc0010 	lw	gp,16(s8)
  40b098:	afc20018 	sw	v0,24(s8)
	return hash_desc ? hash_desc->hash_digest_size : 0;
  40b09c:	8fc20018 	lw	v0,24(s8)
  40b0a0:	00000000 	nop
  40b0a4:	10400008 	beqz	v0,40b0c8 <ike_alg_hash_present+0x78>
  40b0a8:	00000000 	nop
  40b0ac:	8fc20018 	lw	v0,24(s8)
  40b0b0:	00000000 	nop
  40b0b4:	8c42000c 	lw	v0,12(v0)
  40b0b8:	00000000 	nop
  40b0bc:	afc2001c 	sw	v0,28(s8)
  40b0c0:	10000002 	b	40b0cc <ike_alg_hash_present+0x7c>
  40b0c4:	00000000 	nop
  40b0c8:	afc0001c 	sw	zero,28(s8)
  40b0cc:	8fc2001c 	lw	v0,28(s8)
  40b0d0:	00000000 	nop
}
  40b0d4:	03c0e821 	move	sp,s8
  40b0d8:	8fbf0028 	lw	ra,40(sp)
  40b0dc:	8fbe0024 	lw	s8,36(sp)
  40b0e0:	27bd0030 	addiu	sp,sp,48
  40b0e4:	03e00008 	jr	ra
  40b0e8:	00000000 	nop

0040b0ec <ike_alg_enc_ok>:
  40b0ec:	3c1c0fc0 	lui	gp,0xfc0
  40b0f0:	279c1884 	addiu	gp,gp,6276
  40b0f4:	0399e021 	addu	gp,gp,t9
  40b0f8:	27bdfeb8 	addiu	sp,sp,-328
  40b0fc:	afbc0020 	sw	gp,32(sp)
  40b100:	afbf0140 	sw	ra,320(sp)
  40b104:	afbe013c 	sw	s8,316(sp)
  40b108:	afbc0138 	sw	gp,312(sp)
  40b10c:	03a0f021 	move	s8,sp
  40b110:	afc40148 	sw	a0,328(s8)
  40b114:	afc5014c 	sw	a1,332(s8)
  40b118:	afc60150 	sw	a2,336(s8)
  40b11c:	afc70154 	sw	a3,340(s8)
bool ike_alg_enc_ok(int ealg, unsigned key_len, 
		struct alg_info_ike *alg_info_ike __attribute__((unused)), 
		const char **errp)
{
	int ret=TRUE;
  40b120:	24020001 	li	v0,1
  40b124:	afc20028 	sw	v0,40(s8)
	struct encrypt_desc *enc_desc;
	char errbuf[256]="encrypt algo not found";
  40b128:	8f858020 	lw	a1,-32736(gp)
  40b12c:	00000000 	nop
  40b130:	24a54058 	addiu	a1,a1,16472
  40b134:	00000000 	nop
  40b138:	80a20000 	lb	v0,0(a1)
  40b13c:	80a30001 	lb	v1,1(a1)
  40b140:	80a40002 	lb	a0,2(a1)
  40b144:	a3c20030 	sb	v0,48(s8)
  40b148:	a3c30031 	sb	v1,49(s8)
  40b14c:	a3c40032 	sb	a0,50(s8)
  40b150:	80a20003 	lb	v0,3(a1)
  40b154:	80a30004 	lb	v1,4(a1)
  40b158:	80a40005 	lb	a0,5(a1)
  40b15c:	a3c20033 	sb	v0,51(s8)
  40b160:	a3c30034 	sb	v1,52(s8)
  40b164:	a3c40035 	sb	a0,53(s8)
  40b168:	80a20006 	lb	v0,6(a1)
  40b16c:	80a30007 	lb	v1,7(a1)
  40b170:	80a40008 	lb	a0,8(a1)
  40b174:	a3c20036 	sb	v0,54(s8)
  40b178:	a3c30037 	sb	v1,55(s8)
  40b17c:	a3c40038 	sb	a0,56(s8)
  40b180:	80a20009 	lb	v0,9(a1)
  40b184:	80a3000a 	lb	v1,10(a1)
  40b188:	80a4000b 	lb	a0,11(a1)
  40b18c:	a3c20039 	sb	v0,57(s8)
  40b190:	a3c3003a 	sb	v1,58(s8)
  40b194:	a3c4003b 	sb	a0,59(s8)
  40b198:	80a2000c 	lb	v0,12(a1)
  40b19c:	80a3000d 	lb	v1,13(a1)
  40b1a0:	80a4000e 	lb	a0,14(a1)
  40b1a4:	a3c2003c 	sb	v0,60(s8)
  40b1a8:	a3c3003d 	sb	v1,61(s8)
  40b1ac:	a3c4003e 	sb	a0,62(s8)
  40b1b0:	80a2000f 	lb	v0,15(a1)
  40b1b4:	80a30010 	lb	v1,16(a1)
  40b1b8:	80a40011 	lb	a0,17(a1)
  40b1bc:	a3c2003f 	sb	v0,63(s8)
  40b1c0:	a3c30040 	sb	v1,64(s8)
  40b1c4:	a3c40041 	sb	a0,65(s8)
  40b1c8:	80a20012 	lb	v0,18(a1)
  40b1cc:	80a30013 	lb	v1,19(a1)
  40b1d0:	80a40014 	lb	a0,20(a1)
  40b1d4:	a3c20042 	sb	v0,66(s8)
  40b1d8:	a3c30043 	sb	v1,67(s8)
  40b1dc:	a3c40044 	sb	a0,68(s8)
  40b1e0:	80a20015 	lb	v0,21(a1)
  40b1e4:	80a30016 	lb	v1,22(a1)
  40b1e8:	a3c20045 	sb	v0,69(s8)
  40b1ec:	a3c30046 	sb	v1,70(s8)
  40b1f0:	27c40047 	addiu	a0,s8,71
  40b1f4:	00002821 	move	a1,zero
  40b1f8:	240600e9 	li	a2,233
  40b1fc:	8f998500 	lw	t9,-31488(gp)
  40b200:	00000000 	nop
  40b204:	0320f809 	jalr	t9
  40b208:	00000000 	nop
  40b20c:	8fdc0020 	lw	gp,32(s8)
  40b210:	00000000 	nop
	/* 
	 * test #1: encrypt algo must be present 
	 */
	enc_desc = ike_alg_get_encrypter(ealg);
  40b214:	8fc40148 	lw	a0,328(s8)
  40b218:	8f998024 	lw	t9,-32732(gp)
  40b21c:	00000000 	nop
  40b220:	2739bfb8 	addiu	t9,t9,-16456
  40b224:	00000000 	nop
  40b228:	0320f809 	jalr	t9
  40b22c:	00000000 	nop
  40b230:	8fdc0020 	lw	gp,32(s8)
  40b234:	afc2002c 	sw	v0,44(s8)
	if (!enc_desc) return_on(ret, FALSE);
  40b238:	8fc2002c 	lw	v0,44(s8)
  40b23c:	00000000 	nop
  40b240:	14400004 	bnez	v0,40b254 <ike_alg_enc_ok+0x168>
  40b244:	00000000 	nop
  40b248:	afc00028 	sw	zero,40(s8)
  40b24c:	1000003b 	b	40b33c <ike_alg_enc_ok+0x250>
  40b250:	00000000 	nop
	/* 
	 * test #2: if key_len specified, it must be in range 
	 */
	if ((key_len) && ((key_len < enc_desc->keyminlen) ||
			 (key_len > enc_desc->keymaxlen))) {
  40b254:	8fc2014c 	lw	v0,332(s8)
  40b258:	00000000 	nop
  40b25c:	10400037 	beqz	v0,40b33c <ike_alg_enc_ok+0x250>
  40b260:	00000000 	nop
  40b264:	8fc2002c 	lw	v0,44(s8)
  40b268:	00000000 	nop
  40b26c:	8c430018 	lw	v1,24(v0)
  40b270:	8fc2014c 	lw	v0,332(s8)
  40b274:	00000000 	nop
  40b278:	0043102b 	sltu	v0,v0,v1
  40b27c:	1440000b 	bnez	v0,40b2ac <ike_alg_enc_ok+0x1c0>
  40b280:	00000000 	nop
  40b284:	8fc2002c 	lw	v0,44(s8)
  40b288:	00000000 	nop
  40b28c:	8c430014 	lw	v1,20(v0)
  40b290:	8fc2014c 	lw	v0,332(s8)
  40b294:	00000000 	nop
  40b298:	0062102b 	sltu	v0,v1,v0
  40b29c:	14400003 	bnez	v0,40b2ac <ike_alg_enc_ok+0x1c0>
  40b2a0:	00000000 	nop
  40b2a4:	10000025 	b	40b33c <ike_alg_enc_ok+0x250>
  40b2a8:	00000000 	nop
		snprintf(errbuf, sizeof(errbuf)-1,
  40b2ac:	8fc2014c 	lw	v0,332(s8)
  40b2b0:	00000000 	nop
  40b2b4:	afa20010 	sw	v0,16(sp)
  40b2b8:	8fc2002c 	lw	v0,44(s8)
  40b2bc:	00000000 	nop
  40b2c0:	8c420018 	lw	v0,24(v0)
  40b2c4:	00000000 	nop
  40b2c8:	afa20014 	sw	v0,20(sp)
  40b2cc:	8fc2002c 	lw	v0,44(s8)
  40b2d0:	00000000 	nop
  40b2d4:	8c420014 	lw	v0,20(v0)
  40b2d8:	00000000 	nop
  40b2dc:	afa20018 	sw	v0,24(sp)
  40b2e0:	27c40030 	addiu	a0,s8,48
  40b2e4:	240500ff 	li	a1,255
  40b2e8:	8f868020 	lw	a2,-32736(gp)
  40b2ec:	00000000 	nop
  40b2f0:	24c64158 	addiu	a2,a2,16728
  40b2f4:	8fc70148 	lw	a3,328(s8)
  40b2f8:	8f998b38 	lw	t9,-29896(gp)
  40b2fc:	00000000 	nop
  40b300:	0320f809 	jalr	t9
  40b304:	00000000 	nop
  40b308:	8fdc0020 	lw	gp,32(s8)
  40b30c:	00000000 	nop
				"key_len not in range: encalg=%d, "
				"key_len=%d, keyminlen=%d, keymaxlen=%d",
				ealg, key_len,
				enc_desc->keyminlen,
				enc_desc->keymaxlen
		       );
		plog("ike_alg_enc_ok(): %s", errbuf);
  40b310:	8f848020 	lw	a0,-32736(gp)
  40b314:	00000000 	nop
  40b318:	248441a0 	addiu	a0,a0,16800
  40b31c:	27c50030 	addiu	a1,s8,48
  40b320:	8f998abc 	lw	t9,-30020(gp)
  40b324:	00000000 	nop
  40b328:	0320f809 	jalr	t9
  40b32c:	00000000 	nop
  40b330:	8fdc0020 	lw	gp,32(s8)
  40b334:	00000000 	nop
		return_on(ret, FALSE);
  40b338:	afc00028 	sw	zero,40(s8)
	} 
#if 0 /* ML: logic moved to ike_alg_ok_final() */
	/* 
	 * test #3: if alg_info specified AND strict flag, only
	 * only allow algo iff listed in st->alg_info_esp
	 */
	else if (alg_info_ike && (alg_info_ike->alg_info_flags & ALG_INFO_F_STRICT) ) {
		int i;
		struct ike_info *ike_info;
		ALG_INFO_IKE_FOREACH(alg_info_ike, ike_info, i) {
			if ((ike_info->ike_ealg == ealg) &&
				((ike_info->ike_eklen==0) || (key_len==0) ||
				 (ike_info->ike_eklen==key_len))) {
				return_on(ret, TRUE);
			}
		}
		snprintf(errbuf, sizeof(errbuf),
				"strict flag and encrypt algorithm "
				"not in transform string list: "
				"ealg=%d, "
				"key_len=%d, keyminbits=%d, keymaxbits=%d",
				ealg, key_len,
				enc_desc->keyminlen,
				enc_desc->keymaxlen
		   );
		plog("ike_alg_enc_ok(): %s", errbuf);
		return_on(ret, FALSE);
	}
#endif
return_out:
	DBG(DBG_KLIPS, 
  40b33c:	8f8284f8 	lw	v0,-31496(gp)
  40b340:	00000000 	nop
  40b344:	8c420000 	lw	v0,0(v0)
  40b348:	00000000 	nop
  40b34c:	30420040 	andi	v0,v0,0x40
  40b350:	10400031 	beqz	v0,40b418 <ike_alg_enc_ok+0x32c>
  40b354:	00000000 	nop
  40b358:	8fc20028 	lw	v0,40(s8)
  40b35c:	00000000 	nop
  40b360:	10400022 	beqz	v0,40b3ec <ike_alg_enc_ok+0x300>
  40b364:	00000000 	nop
  40b368:	8fc2002c 	lw	v0,44(s8)
  40b36c:	00000000 	nop
  40b370:	8c420018 	lw	v0,24(v0)
  40b374:	00000000 	nop
  40b378:	afa20010 	sw	v0,16(sp)
  40b37c:	8fc2002c 	lw	v0,44(s8)
  40b380:	00000000 	nop
  40b384:	8c420010 	lw	v0,16(v0)
  40b388:	00000000 	nop
  40b38c:	afa20014 	sw	v0,20(sp)
  40b390:	8fc2002c 	lw	v0,44(s8)
  40b394:	00000000 	nop
  40b398:	8c420014 	lw	v0,20(v0)
  40b39c:	00000000 	nop
  40b3a0:	afa20018 	sw	v0,24(sp)
  40b3a4:	8fc20028 	lw	v0,40(s8)
  40b3a8:	00000000 	nop
  40b3ac:	afa2001c 	sw	v0,28(sp)
  40b3b0:	8f848020 	lw	a0,-32736(gp)
  40b3b4:	00000000 	nop
  40b3b8:	248441b8 	addiu	a0,a0,16824
  40b3bc:	8fc50148 	lw	a1,328(s8)
  40b3c0:	8fc6014c 	lw	a2,332(s8)
  40b3c4:	8fc2002c 	lw	v0,44(s8)
  40b3c8:	00000000 	nop
  40b3cc:	8c47000c 	lw	a3,12(v0)
  40b3d0:	8f9983b8 	lw	t9,-31816(gp)
  40b3d4:	00000000 	nop
  40b3d8:	0320f809 	jalr	t9
  40b3dc:	00000000 	nop
  40b3e0:	8fdc0020 	lw	gp,32(s8)
  40b3e4:	1000000c 	b	40b418 <ike_alg_enc_ok+0x32c>
  40b3e8:	00000000 	nop
  40b3ec:	8f848020 	lw	a0,-32736(gp)
  40b3f0:	00000000 	nop
  40b3f4:	2484421c 	addiu	a0,a0,16924
  40b3f8:	8fc50148 	lw	a1,328(s8)
  40b3fc:	8fc6014c 	lw	a2,332(s8)
  40b400:	8f9983b8 	lw	t9,-31816(gp)
  40b404:	00000000 	nop
  40b408:	0320f809 	jalr	t9
  40b40c:	00000000 	nop
  40b410:	8fdc0020 	lw	gp,32(s8)
  40b414:	00000000 	nop
		if (ret) 
			DBG_log("ike_alg_enc_ok(ealg=%d,key_len=%d): "
				"blocksize=%d, keyminlen=%d, "
				"keydeflen=%d, keymaxlen=%d, "
				"ret=%d",
				ealg, key_len,
				(int)enc_desc->enc_blocksize,
				enc_desc->keyminlen,
				enc_desc->keydeflen,
				enc_desc->keymaxlen,
				ret);
		else 
			DBG_log("ike_alg_enc_ok(ealg=%d,key_len=%d): NO",
				ealg, key_len);
	);
	if (!ret && *errp)
  40b418:	8fc20028 	lw	v0,40(s8)
  40b41c:	00000000 	nop
  40b420:	1440000b 	bnez	v0,40b450 <ike_alg_enc_ok+0x364>
  40b424:	00000000 	nop
  40b428:	8fc20154 	lw	v0,340(s8)
  40b42c:	00000000 	nop
  40b430:	8c420000 	lw	v0,0(v0)
  40b434:	00000000 	nop
  40b438:	10400005 	beqz	v0,40b450 <ike_alg_enc_ok+0x364>
  40b43c:	00000000 	nop
		*errp=errbuf;
  40b440:	27c30030 	addiu	v1,s8,48
  40b444:	8fc20154 	lw	v0,340(s8)
  40b448:	00000000 	nop
  40b44c:	ac430000 	sw	v1,0(v0)
	return ret;
  40b450:	8fc20028 	lw	v0,40(s8)
  40b454:	00000000 	nop
}
  40b458:	03c0e821 	move	sp,s8
  40b45c:	8fbf0140 	lw	ra,320(sp)
  40b460:	8fbe013c 	lw	s8,316(sp)
  40b464:	27bd0148 	addiu	sp,sp,328
  40b468:	03e00008 	jr	ra
  40b46c:	00000000 	nop

0040b470 <ike_alg_ok_final>:
  40b470:	3c1c0fc0 	lui	gp,0xfc0
  40b474:	279c1500 	addiu	gp,gp,5376
  40b478:	0399e021 	addu	gp,gp,t9
  40b47c:	27bdffb8 	addiu	sp,sp,-72
  40b480:	afbc0018 	sw	gp,24(sp)
  40b484:	afbf0040 	sw	ra,64(sp)
  40b488:	afbe003c 	sw	s8,60(sp)
  40b48c:	afbc0038 	sw	gp,56(sp)
  40b490:	03a0f021 	move	s8,sp
  40b494:	afc40048 	sw	a0,72(s8)
  40b498:	afc5004c 	sw	a1,76(s8)
  40b49c:	afc60050 	sw	a2,80(s8)
  40b4a0:	afc70054 	sw	a3,84(s8)
/* 
 * ML: make F_STRICT logic consider enc,hash/auth,modp algorithms 
 */
bool ike_alg_ok_final(int ealg, unsigned key_len, int aalg, int group, struct alg_info_ike *alg_info_ike)
{
	/* 
	 * simple test to toss low key_len, will accept it only
	 * if specified in "esp" string
	 */
	int ealg_insecure=(key_len < 128) ;
  40b4a4:	8fc2004c 	lw	v0,76(s8)
  40b4a8:	00000000 	nop
  40b4ac:	2c420080 	sltiu	v0,v0,128
  40b4b0:	afc20020 	sw	v0,32(s8)

	if (ealg_insecure || 
		(alg_info_ike && alg_info_ike->alg_info_flags & ALG_INFO_F_STRICT))
  40b4b4:	8fc20020 	lw	v0,32(s8)
  40b4b8:	00000000 	nop
  40b4bc:	1440000e 	bnez	v0,40b4f8 <ike_alg_ok_final+0x88>
  40b4c0:	00000000 	nop
  40b4c4:	8fc20058 	lw	v0,88(s8)
  40b4c8:	00000000 	nop
  40b4cc:	1040009f 	beqz	v0,40b74c <ike_alg_ok_final+0x2dc>
  40b4d0:	00000000 	nop
  40b4d4:	8fc20058 	lw	v0,88(s8)
  40b4d8:	00000000 	nop
  40b4dc:	8c420008 	lw	v0,8(v0)
  40b4e0:	00000000 	nop
  40b4e4:	30420001 	andi	v0,v0,0x1
  40b4e8:	14400003 	bnez	v0,40b4f8 <ike_alg_ok_final+0x88>
  40b4ec:	00000000 	nop
  40b4f0:	10000096 	b	40b74c <ike_alg_ok_final+0x2dc>
  40b4f4:	00000000 	nop
	{
		int i;
		struct ike_info *ike_info;
		if (alg_info_ike) {
  40b4f8:	8fc20058 	lw	v0,88(s8)
  40b4fc:	00000000 	nop
  40b500:	1040005b 	beqz	v0,40b670 <ike_alg_ok_final+0x200>
  40b504:	00000000 	nop
			ALG_INFO_IKE_FOREACH(alg_info_ike, ike_info, i) {
  40b508:	8fc20058 	lw	v0,88(s8)
  40b50c:	00000000 	nop
  40b510:	8c420000 	lw	v0,0(v0)
  40b514:	00000000 	nop
  40b518:	afc20024 	sw	v0,36(s8)
  40b51c:	8fc20058 	lw	v0,88(s8)
  40b520:	00000000 	nop
  40b524:	24420010 	addiu	v0,v0,16
  40b528:	afc20028 	sw	v0,40(s8)
  40b52c:	8fc20024 	lw	v0,36(s8)
  40b530:	00000000 	nop
  40b534:	2442ffff 	addiu	v0,v0,-1
  40b538:	00401821 	move	v1,v0
  40b53c:	afc30024 	sw	v1,36(s8)
  40b540:	2402ffff 	li	v0,-1
  40b544:	14620003 	bne	v1,v0,40b554 <ike_alg_ok_final+0xe4>
  40b548:	00000000 	nop
  40b54c:	10000048 	b	40b670 <ike_alg_ok_final+0x200>
  40b550:	00000000 	nop
				if ((ike_info->ike_ealg == ealg) &&
						((ike_info->ike_eklen==0) || (key_len==0) ||
						 (ike_info->ike_eklen==key_len)) &&
						(ike_info->ike_halg == aalg) &&
						(ike_info->ike_modp == group)) {
  40b554:	8fc20028 	lw	v0,40(s8)
  40b558:	00000000 	nop
  40b55c:	94430000 	lhu	v1,0(v0)
  40b560:	8fc20048 	lw	v0,72(s8)
  40b564:	00000000 	nop
  40b568:	1462003b 	bne	v1,v0,40b658 <ike_alg_ok_final+0x1e8>
  40b56c:	00000000 	nop
  40b570:	8fc20028 	lw	v0,40(s8)
  40b574:	00000000 	nop
  40b578:	8c420004 	lw	v0,4(v0)
  40b57c:	00000000 	nop
  40b580:	1040000e 	beqz	v0,40b5bc <ike_alg_ok_final+0x14c>
  40b584:	00000000 	nop
  40b588:	8fc2004c 	lw	v0,76(s8)
  40b58c:	00000000 	nop
  40b590:	1040000a 	beqz	v0,40b5bc <ike_alg_ok_final+0x14c>
  40b594:	00000000 	nop
  40b598:	8fc20028 	lw	v0,40(s8)
  40b59c:	00000000 	nop
  40b5a0:	8c430004 	lw	v1,4(v0)
  40b5a4:	8fc2004c 	lw	v0,76(s8)
  40b5a8:	00000000 	nop
  40b5ac:	10620003 	beq	v1,v0,40b5bc <ike_alg_ok_final+0x14c>
  40b5b0:	00000000 	nop
  40b5b4:	10000028 	b	40b658 <ike_alg_ok_final+0x1e8>
  40b5b8:	00000000 	nop
  40b5bc:	8fc20028 	lw	v0,40(s8)
  40b5c0:	00000000 	nop
  40b5c4:	90430002 	lbu	v1,2(v0)
  40b5c8:	8fc20050 	lw	v0,80(s8)
  40b5cc:	00000000 	nop
  40b5d0:	14620021 	bne	v1,v0,40b658 <ike_alg_ok_final+0x1e8>
  40b5d4:	00000000 	nop
  40b5d8:	8fc20028 	lw	v0,40(s8)
  40b5dc:	00000000 	nop
  40b5e0:	9443000c 	lhu	v1,12(v0)
  40b5e4:	8fc20054 	lw	v0,84(s8)
  40b5e8:	00000000 	nop
  40b5ec:	1462001a 	bne	v1,v0,40b658 <ike_alg_ok_final+0x1e8>
  40b5f0:	00000000 	nop
					if (ealg_insecure) 
  40b5f4:	8fc20020 	lw	v0,32(s8)
  40b5f8:	00000000 	nop
  40b5fc:	10400013 	beqz	v0,40b64c <ike_alg_ok_final+0x1dc>
  40b600:	00000000 	nop
						loglog(RC_LOG_SERIOUS, "You should NOT use insecure IKE algorithms (%s)!"
  40b604:	8f848a50 	lw	a0,-30128(gp)
  40b608:	8fc50048 	lw	a1,72(s8)
  40b60c:	8f9984bc 	lw	t9,-31556(gp)
  40b610:	00000000 	nop
  40b614:	0320f809 	jalr	t9
  40b618:	00000000 	nop
  40b61c:	8fdc0018 	lw	gp,24(s8)
  40b620:	24040003 	li	a0,3
  40b624:	8f858020 	lw	a1,-32736(gp)
  40b628:	00000000 	nop
  40b62c:	24a54244 	addiu	a1,a1,16964
  40b630:	00403021 	move	a2,v0
  40b634:	8f998c48 	lw	t9,-29624(gp)
  40b638:	00000000 	nop
  40b63c:	0320f809 	jalr	t9
  40b640:	00000000 	nop
  40b644:	8fdc0018 	lw	gp,24(s8)
  40b648:	00000000 	nop
								, enum_name(&oakley_enc_names, ealg));
					return TRUE;
  40b64c:	24020001 	li	v0,1
  40b650:	1000003f 	b	40b750 <ike_alg_ok_final+0x2e0>
  40b654:	00000000 	nop
  40b658:	8fc20028 	lw	v0,40(s8)
  40b65c:	00000000 	nop
  40b660:	24420010 	addiu	v0,v0,16
  40b664:	afc20028 	sw	v0,40(s8)
  40b668:	1000ffb0 	b	40b52c <ike_alg_ok_final+0xbc>
  40b66c:	00000000 	nop
				}
			}
		}
		plog("Oakley Transform [%s (%d), %s, %s] refused due to %s",
  40b670:	8f848a50 	lw	a0,-30128(gp)
  40b674:	8fc50048 	lw	a1,72(s8)
  40b678:	8f9984bc 	lw	t9,-31556(gp)
  40b67c:	00000000 	nop
  40b680:	0320f809 	jalr	t9
  40b684:	00000000 	nop
  40b688:	8fdc0018 	lw	gp,24(s8)
  40b68c:	afc2002c 	sw	v0,44(s8)
  40b690:	8f8489a0 	lw	a0,-30304(gp)
  40b694:	8fc50050 	lw	a1,80(s8)
  40b698:	8f9984bc 	lw	t9,-31556(gp)
  40b69c:	00000000 	nop
  40b6a0:	0320f809 	jalr	t9
  40b6a4:	00000000 	nop
  40b6a8:	8fdc0018 	lw	gp,24(s8)
  40b6ac:	afc20030 	sw	v0,48(s8)
  40b6b0:	8f848080 	lw	a0,-32640(gp)
  40b6b4:	8fc50054 	lw	a1,84(s8)
  40b6b8:	8f9984bc 	lw	t9,-31556(gp)
  40b6bc:	00000000 	nop
  40b6c0:	0320f809 	jalr	t9
  40b6c4:	00000000 	nop
  40b6c8:	8fdc0018 	lw	gp,24(s8)
  40b6cc:	afa20010 	sw	v0,16(sp)
  40b6d0:	8fc20020 	lw	v0,32(s8)
  40b6d4:	00000000 	nop
  40b6d8:	10400008 	beqz	v0,40b6fc <ike_alg_ok_final+0x28c>
  40b6dc:	00000000 	nop
  40b6e0:	8f828020 	lw	v0,-32736(gp)
  40b6e4:	00000000 	nop
  40b6e8:	24424278 	addiu	v0,v0,17016
  40b6ec:	00000000 	nop
  40b6f0:	afa20014 	sw	v0,20(sp)
  40b6f4:	10000006 	b	40b710 <ike_alg_ok_final+0x2a0>
  40b6f8:	00000000 	nop
  40b6fc:	8f828020 	lw	v0,-32736(gp)
  40b700:	00000000 	nop
  40b704:	244242b4 	addiu	v0,v0,17076
  40b708:	00000000 	nop
  40b70c:	afa20014 	sw	v0,20(sp)
  40b710:	8f848020 	lw	a0,-32736(gp)
  40b714:	00000000 	nop
  40b718:	248442c0 	addiu	a0,a0,17088
  40b71c:	8fc5002c 	lw	a1,44(s8)
  40b720:	8fc6004c 	lw	a2,76(s8)
  40b724:	8fc70030 	lw	a3,48(s8)
  40b728:	8f998abc 	lw	t9,-30020(gp)
  40b72c:	00000000 	nop
  40b730:	0320f809 	jalr	t9
  40b734:	00000000 	nop
  40b738:	8fdc0018 	lw	gp,24(s8)
  40b73c:	00000000 	nop
			enum_name(&oakley_enc_names, ealg), key_len,
			enum_name(&oakley_hash_names, aalg),
			enum_name(&oakley_group_names, group),
			ealg_insecure ? "insecure key_len and enc. alg. not listed in \"ike\" string" : "strict flag"
			);
		return FALSE;
  40b740:	00001021 	move	v0,zero
  40b744:	10000002 	b	40b750 <ike_alg_ok_final+0x2e0>
  40b748:	00000000 	nop
	}
	return TRUE;
  40b74c:	24020001 	li	v0,1
}
  40b750:	03c0e821 	move	sp,s8
  40b754:	8fbf0040 	lw	ra,64(sp)
  40b758:	8fbe003c 	lw	s8,60(sp)
  40b75c:	27bd0048 	addiu	sp,sp,72
  40b760:	03e00008 	jr	ra
  40b764:	00000000 	nop

0040b768 <ike_alg_find>:
  40b768:	3c1c0fc0 	lui	gp,0xfc0
  40b76c:	279c1208 	addiu	gp,gp,4616
  40b770:	0399e021 	addu	gp,gp,t9
  40b774:	27bdffe8 	addiu	sp,sp,-24
  40b778:	afbc0000 	sw	gp,0(sp)
  40b77c:	afbe0014 	sw	s8,20(sp)
  40b780:	afbc0010 	sw	gp,16(sp)
  40b784:	03a0f021 	move	s8,sp
  40b788:	afc40018 	sw	a0,24(s8)
  40b78c:	afc5001c 	sw	a1,28(s8)
  40b790:	afc60020 	sw	a2,32(s8)
/*
 * 	return ike_algo object by {type, id}
 */
/* XXX:jjo use keysize */
struct ike_alg *
ike_alg_find(unsigned algo_type, unsigned algo_id, unsigned keysize __attribute__((unused)))
{
	struct ike_alg *e=ike_alg_base[algo_type];
  40b794:	8fc20018 	lw	v0,24(s8)
  40b798:	00000000 	nop
  40b79c:	00021080 	sll	v0,v0,0x2
  40b7a0:	8f818a40 	lw	at,-30144(gp)
  40b7a4:	00000000 	nop
  40b7a8:	00221021 	addu	v0,at,v0
  40b7ac:	8c420000 	lw	v0,0(v0)
  40b7b0:	00000000 	nop
  40b7b4:	afc20008 	sw	v0,8(s8)
	for(;e!=NULL;e=e->algo_next) {
  40b7b8:	8fc20008 	lw	v0,8(s8)
  40b7bc:	00000000 	nop
  40b7c0:	14400003 	bnez	v0,40b7d0 <ike_alg_find+0x68>
  40b7c4:	00000000 	nop
  40b7c8:	10000011 	b	40b810 <ike_alg_find+0xa8>
  40b7cc:	00000000 	nop
		if (e->algo_id==algo_id)
  40b7d0:	8fc20008 	lw	v0,8(s8)
  40b7d4:	00000000 	nop
  40b7d8:	94430002 	lhu	v1,2(v0)
  40b7dc:	8fc2001c 	lw	v0,28(s8)
  40b7e0:	00000000 	nop
  40b7e4:	14620003 	bne	v1,v0,40b7f4 <ike_alg_find+0x8c>
  40b7e8:	00000000 	nop
			break;
  40b7ec:	10000008 	b	40b810 <ike_alg_find+0xa8>
  40b7f0:	00000000 	nop
  40b7f4:	8fc20008 	lw	v0,8(s8)
  40b7f8:	00000000 	nop
  40b7fc:	8c420004 	lw	v0,4(v0)
  40b800:	00000000 	nop
  40b804:	afc20008 	sw	v0,8(s8)
  40b808:	1000ffeb 	b	40b7b8 <ike_alg_find+0x50>
  40b80c:	00000000 	nop
	}
	return e;
  40b810:	8fc20008 	lw	v0,8(s8)
  40b814:	00000000 	nop
}
  40b818:	03c0e821 	move	sp,s8
  40b81c:	8fbe0014 	lw	s8,20(sp)
  40b820:	27bd0018 	addiu	sp,sp,24
  40b824:	03e00008 	jr	ra
  40b828:	00000000 	nop

0040b82c <ike_alg_add>:
  40b82c:	3c1c0fc0 	lui	gp,0xfc0
  40b830:	279c1144 	addiu	gp,gp,4420
  40b834:	0399e021 	addu	gp,gp,t9
  40b838:	27bdffd0 	addiu	sp,sp,-48
  40b83c:	afbc0010 	sw	gp,16(sp)
  40b840:	afbf0028 	sw	ra,40(sp)
  40b844:	afbe0024 	sw	s8,36(sp)
  40b848:	afbc0020 	sw	gp,32(sp)
  40b84c:	03a0f021 	move	s8,sp
  40b850:	afc40030 	sw	a0,48(s8)

/*
 * 	Main "raw" ike_alg list adding function
 */
int
ike_alg_add(struct ike_alg* a)
{
	int ret=0;
  40b854:	afc00018 	sw	zero,24(s8)
	const char *ugh="No error";
  40b858:	8f828020 	lw	v0,-32736(gp)
  40b85c:	00000000 	nop
  40b860:	244242f8 	addiu	v0,v0,17144
  40b864:	00000000 	nop
  40b868:	afc2001c 	sw	v0,28(s8)
	if (a->algo_type > IKE_ALG_MAX)
  40b86c:	8fc20030 	lw	v0,48(s8)
  40b870:	00000000 	nop
  40b874:	94420000 	lhu	v0,0(v0)
  40b878:	00000000 	nop
  40b87c:	2c420002 	sltiu	v0,v0,2
  40b880:	1440000a 	bnez	v0,40b8ac <ike_alg_add+0x80>
  40b884:	00000000 	nop
	{
		ugh="Invalid algo_type";
  40b888:	8f828020 	lw	v0,-32736(gp)
  40b88c:	00000000 	nop
  40b890:	24424304 	addiu	v0,v0,17156
  40b894:	00000000 	nop
  40b898:	afc2001c 	sw	v0,28(s8)
		return_on(ret,-EINVAL);
  40b89c:	2402ffea 	li	v0,-22
  40b8a0:	afc20018 	sw	v0,24(s8)
  40b8a4:	10000035 	b	40b97c <ike_alg_add+0x150>
  40b8a8:	00000000 	nop
	}
	if (ike_alg_find(a->algo_type, a->algo_id, 0))
  40b8ac:	8fc20030 	lw	v0,48(s8)
  40b8b0:	00000000 	nop
  40b8b4:	94430000 	lhu	v1,0(v0)
  40b8b8:	8fc20030 	lw	v0,48(s8)
  40b8bc:	00000000 	nop
  40b8c0:	94420002 	lhu	v0,2(v0)
  40b8c4:	00602021 	move	a0,v1
  40b8c8:	00402821 	move	a1,v0
  40b8cc:	00003021 	move	a2,zero
  40b8d0:	8f998c08 	lw	t9,-29688(gp)
  40b8d4:	00000000 	nop
  40b8d8:	0320f809 	jalr	t9
  40b8dc:	00000000 	nop
  40b8e0:	8fdc0010 	lw	gp,16(s8)
  40b8e4:	1040000a 	beqz	v0,40b910 <ike_alg_add+0xe4>
  40b8e8:	00000000 	nop
	{
		ugh="Algorithm already exists";
  40b8ec:	8f828020 	lw	v0,-32736(gp)
  40b8f0:	00000000 	nop
  40b8f4:	24424318 	addiu	v0,v0,17176
  40b8f8:	00000000 	nop
  40b8fc:	afc2001c 	sw	v0,28(s8)
		return_on(ret,-EEXIST);
  40b900:	2402ffef 	li	v0,-17
  40b904:	afc20018 	sw	v0,24(s8)
  40b908:	1000001c 	b	40b97c <ike_alg_add+0x150>
  40b90c:	00000000 	nop
	}
	if (ret==0) {
  40b910:	8fc20018 	lw	v0,24(s8)
  40b914:	00000000 	nop
  40b918:	14400018 	bnez	v0,40b97c <ike_alg_add+0x150>
  40b91c:	00000000 	nop
		a->algo_next=ike_alg_base[a->algo_type];
  40b920:	8fc20030 	lw	v0,48(s8)
  40b924:	00000000 	nop
  40b928:	94420000 	lhu	v0,0(v0)
  40b92c:	00000000 	nop
  40b930:	00021080 	sll	v0,v0,0x2
  40b934:	8f818a40 	lw	at,-30144(gp)
  40b938:	00000000 	nop
  40b93c:	00221021 	addu	v0,at,v0
  40b940:	8c430000 	lw	v1,0(v0)
  40b944:	8fc20030 	lw	v0,48(s8)
  40b948:	00000000 	nop
  40b94c:	ac430004 	sw	v1,4(v0)
		ike_alg_base[a->algo_type]=a;
  40b950:	8fc20030 	lw	v0,48(s8)
  40b954:	00000000 	nop
  40b958:	94420000 	lhu	v0,0(v0)
  40b95c:	00000000 	nop
  40b960:	00021080 	sll	v0,v0,0x2
  40b964:	8f838a40 	lw	v1,-30144(gp)
  40b968:	00000000 	nop
  40b96c:	00621821 	addu	v1,v1,v0
  40b970:	8fc20030 	lw	v0,48(s8)
  40b974:	00000000 	nop
  40b978:	ac620000 	sw	v0,0(v1)
	}
return_out:
	if (ret) 
  40b97c:	8fc20018 	lw	v0,24(s8)
  40b980:	00000000 	nop
  40b984:	1040000b 	beqz	v0,40b9b4 <ike_alg_add+0x188>
  40b988:	00000000 	nop
		plog("ike_alg_add(): ERROR: %s", ugh);
  40b98c:	8f848020 	lw	a0,-32736(gp)
  40b990:	00000000 	nop
  40b994:	24844334 	addiu	a0,a0,17204
  40b998:	8fc5001c 	lw	a1,28(s8)
  40b99c:	8f998abc 	lw	t9,-30020(gp)
  40b9a0:	00000000 	nop
  40b9a4:	0320f809 	jalr	t9
  40b9a8:	00000000 	nop
  40b9ac:	8fdc0010 	lw	gp,16(s8)
  40b9b0:	00000000 	nop
	return ret;
  40b9b4:	8fc20018 	lw	v0,24(s8)
  40b9b8:	00000000 	nop
}
  40b9bc:	03c0e821 	move	sp,s8
  40b9c0:	8fbf0028 	lw	ra,40(sp)
  40b9c4:	8fbe0024 	lw	s8,36(sp)
  40b9c8:	27bd0030 	addiu	sp,sp,48
  40b9cc:	03e00008 	jr	ra
  40b9d0:	00000000 	nop

0040b9d4 <ike_alg_register_hash>:
  40b9d4:	3c1c0fc0 	lui	gp,0xfc0
  40b9d8:	279c0f9c 	addiu	gp,gp,3996
  40b9dc:	0399e021 	addu	gp,gp,t9
  40b9e0:	27bdffc8 	addiu	sp,sp,-56
  40b9e4:	afbc0010 	sw	gp,16(sp)
  40b9e8:	afbf0030 	sw	ra,48(sp)
  40b9ec:	afbe002c 	sw	s8,44(sp)
  40b9f0:	afbc0028 	sw	gp,40(sp)
  40b9f4:	03a0f021 	move	s8,sp
  40b9f8:	afc40038 	sw	a0,56(s8)

/*
 * 	Validate and register IKE hash algorithm object
 */
int
ike_alg_register_hash(struct hash_desc *hash_desc)
{
	const char *alg_name;
	int ret=0;
  40b9fc:	afc0001c 	sw	zero,28(s8)
	if (hash_desc->algo_id > OAKLEY_HASH_MAX) {
  40ba00:	8fc20038 	lw	v0,56(s8)
  40ba04:	00000000 	nop
  40ba08:	94420002 	lhu	v0,2(v0)
  40ba0c:	00000000 	nop
  40ba10:	2c420008 	sltiu	v0,v0,8
  40ba14:	14400013 	bnez	v0,40ba64 <ike_alg_register_hash+0x90>
  40ba18:	00000000 	nop
		plog("ike_alg_register_hash(): hash alg=%d < max=%d",
  40ba1c:	8fc20038 	lw	v0,56(s8)
  40ba20:	00000000 	nop
  40ba24:	94420002 	lhu	v0,2(v0)
  40ba28:	8f848020 	lw	a0,-32736(gp)
  40ba2c:	00000000 	nop
  40ba30:	24844350 	addiu	a0,a0,17232
  40ba34:	00402821 	move	a1,v0
  40ba38:	24060007 	li	a2,7
  40ba3c:	8f998abc 	lw	t9,-30020(gp)
  40ba40:	00000000 	nop
  40ba44:	0320f809 	jalr	t9
  40ba48:	00000000 	nop
  40ba4c:	8fdc0010 	lw	gp,16(s8)
  40ba50:	00000000 	nop
				hash_desc->algo_id, OAKLEY_HASH_MAX);
		return_on(ret,-EINVAL);
  40ba54:	2402ffea 	li	v0,-22
  40ba58:	afc2001c 	sw	v0,28(s8)
  40ba5c:	10000061 	b	40bbe4 <ike_alg_register_hash+0x210>
  40ba60:	00000000 	nop
	}
	if (hash_desc->hash_ctx_size > sizeof (union hash_ctx)) {
  40ba64:	8fc20038 	lw	v0,56(s8)
  40ba68:	00000000 	nop
  40ba6c:	8c420008 	lw	v0,8(v0)
  40ba70:	00000000 	nop
  40ba74:	2c4200d5 	sltiu	v0,v0,213
  40ba78:	14400016 	bnez	v0,40bad4 <ike_alg_register_hash+0x100>
  40ba7c:	00000000 	nop
		plog("ike_alg_register_hash(): hash alg=%d has "
  40ba80:	8fc20038 	lw	v0,56(s8)
  40ba84:	00000000 	nop
  40ba88:	94420002 	lhu	v0,2(v0)
  40ba8c:	8f848020 	lw	a0,-32736(gp)
  40ba90:	00000000 	nop
  40ba94:	24844380 	addiu	a0,a0,17280
  40ba98:	00402821 	move	a1,v0
  40ba9c:	8fc20038 	lw	v0,56(s8)
  40baa0:	00000000 	nop
  40baa4:	8c460008 	lw	a2,8(v0)
  40baa8:	240700d4 	li	a3,212
  40baac:	8f998abc 	lw	t9,-30020(gp)
  40bab0:	00000000 	nop
  40bab4:	0320f809 	jalr	t9
  40bab8:	00000000 	nop
  40babc:	8fdc0010 	lw	gp,16(s8)
  40bac0:	00000000 	nop
				"ctx_size=%d > hash_ctx=%d",
				hash_desc->algo_id, 
				(int)hash_desc->hash_ctx_size,
				(int)sizeof (union hash_ctx));
		return_on(ret,-EOVERFLOW);
  40bac4:	2402ffb1 	li	v0,-79
  40bac8:	afc2001c 	sw	v0,28(s8)
  40bacc:	10000045 	b	40bbe4 <ike_alg_register_hash+0x210>
  40bad0:	00000000 	nop
	}
	if (!(hash_desc->hash_init&&hash_desc->hash_update&&hash_desc->hash_final)) {
  40bad4:	8fc20038 	lw	v0,56(s8)
  40bad8:	00000000 	nop
  40badc:	8c420010 	lw	v0,16(v0)
  40bae0:	00000000 	nop
  40bae4:	1040000d 	beqz	v0,40bb1c <ike_alg_register_hash+0x148>
  40bae8:	00000000 	nop
  40baec:	8fc20038 	lw	v0,56(s8)
  40baf0:	00000000 	nop
  40baf4:	8c420014 	lw	v0,20(v0)
  40baf8:	00000000 	nop
  40bafc:	10400007 	beqz	v0,40bb1c <ike_alg_register_hash+0x148>
  40bb00:	00000000 	nop
  40bb04:	8fc20038 	lw	v0,56(s8)
  40bb08:	00000000 	nop
  40bb0c:	8c420018 	lw	v0,24(v0)
  40bb10:	00000000 	nop
  40bb14:	14400012 	bnez	v0,40bb60 <ike_alg_register_hash+0x18c>
  40bb18:	00000000 	nop
		plog("ike_alg_register_hash(): hash alg=%d needs  "
  40bb1c:	8fc20038 	lw	v0,56(s8)
  40bb20:	00000000 	nop
  40bb24:	94420002 	lhu	v0,2(v0)
  40bb28:	8f848020 	lw	a0,-32736(gp)
  40bb2c:	00000000 	nop
  40bb30:	248443c4 	addiu	a0,a0,17348
  40bb34:	00402821 	move	a1,v0
  40bb38:	8f998abc 	lw	t9,-30020(gp)
  40bb3c:	00000000 	nop
  40bb40:	0320f809 	jalr	t9
  40bb44:	00000000 	nop
  40bb48:	8fdc0010 	lw	gp,16(s8)
  40bb4c:	00000000 	nop
				"hash_init(), hash_update() and hash_final()",
				hash_desc->algo_id);
		return_on(ret,-EINVAL);
  40bb50:	2402ffea 	li	v0,-22
  40bb54:	afc2001c 	sw	v0,28(s8)
  40bb58:	10000022 	b	40bbe4 <ike_alg_register_hash+0x210>
  40bb5c:	00000000 	nop
	}
	alg_name=enum_name(&oakley_hash_names, hash_desc->algo_id);
  40bb60:	8fc20038 	lw	v0,56(s8)
  40bb64:	00000000 	nop
  40bb68:	94420002 	lhu	v0,2(v0)
  40bb6c:	8f8489a0 	lw	a0,-30304(gp)
  40bb70:	00402821 	move	a1,v0
  40bb74:	8f9984bc 	lw	t9,-31556(gp)
  40bb78:	00000000 	nop
  40bb7c:	0320f809 	jalr	t9
  40bb80:	00000000 	nop
  40bb84:	8fdc0010 	lw	gp,16(s8)
  40bb88:	afc20018 	sw	v0,24(s8)
	if (!alg_name) {
  40bb8c:	8fc20018 	lw	v0,24(s8)
  40bb90:	00000000 	nop
  40bb94:	14400013 	bnez	v0,40bbe4 <ike_alg_register_hash+0x210>
  40bb98:	00000000 	nop
		plog("ike_alg_register_hash(): WARNING: hash alg=%d not found in "
  40bb9c:	8fc20038 	lw	v0,56(s8)
  40bba0:	00000000 	nop
  40bba4:	94420002 	lhu	v0,2(v0)
  40bba8:	8f848020 	lw	a0,-32736(gp)
  40bbac:	00000000 	nop
  40bbb0:	2484441c 	addiu	a0,a0,17436
  40bbb4:	00402821 	move	a1,v0
  40bbb8:	8f998abc 	lw	t9,-30020(gp)
  40bbbc:	00000000 	nop
  40bbc0:	0320f809 	jalr	t9
  40bbc4:	00000000 	nop
  40bbc8:	8fdc0010 	lw	gp,16(s8)
  40bbcc:	00000000 	nop
				"constants.c:oakley_hash_names  ",
				hash_desc->algo_id);
		alg_name="<NULL>";
  40bbd0:	8f828020 	lw	v0,-32736(gp)
  40bbd4:	00000000 	nop
  40bbd8:	24424478 	addiu	v0,v0,17528
  40bbdc:	00000000 	nop
  40bbe0:	afc20018 	sw	v0,24(s8)
	}

return_out:
	if (ret==0)
  40bbe4:	8fc2001c 	lw	v0,28(s8)
  40bbe8:	00000000 	nop
  40bbec:	14400008 	bnez	v0,40bc10 <ike_alg_register_hash+0x23c>
  40bbf0:	00000000 	nop
		ret=ike_alg_add((struct ike_alg *)hash_desc);
  40bbf4:	8fc40038 	lw	a0,56(s8)
  40bbf8:	8f99882c 	lw	t9,-30676(gp)
  40bbfc:	00000000 	nop
  40bc00:	0320f809 	jalr	t9
  40bc04:	00000000 	nop
  40bc08:	8fdc0010 	lw	gp,16(s8)
  40bc0c:	afc2001c 	sw	v0,28(s8)
	plog("ike_alg_register_hash(): Activating %s: %s (ret=%d)", 
  40bc10:	8fc2001c 	lw	v0,28(s8)
  40bc14:	00000000 	nop
  40bc18:	14400008 	bnez	v0,40bc3c <ike_alg_register_hash+0x268>
  40bc1c:	00000000 	nop
  40bc20:	8f828020 	lw	v0,-32736(gp)
  40bc24:	00000000 	nop
  40bc28:	24424480 	addiu	v0,v0,17536
  40bc2c:	00000000 	nop
  40bc30:	afc20020 	sw	v0,32(s8)
  40bc34:	10000006 	b	40bc50 <ike_alg_register_hash+0x27c>
  40bc38:	00000000 	nop
  40bc3c:	8f828020 	lw	v0,-32736(gp)
  40bc40:	00000000 	nop
  40bc44:	24424484 	addiu	v0,v0,17540
  40bc48:	00000000 	nop
  40bc4c:	afc20020 	sw	v0,32(s8)
  40bc50:	8f848020 	lw	a0,-32736(gp)
  40bc54:	00000000 	nop
  40bc58:	2484448c 	addiu	a0,a0,17548
  40bc5c:	8fc50018 	lw	a1,24(s8)
  40bc60:	8fc60020 	lw	a2,32(s8)
  40bc64:	8fc7001c 	lw	a3,28(s8)
  40bc68:	8f998abc 	lw	t9,-30020(gp)
  40bc6c:	00000000 	nop
  40bc70:	0320f809 	jalr	t9
  40bc74:	00000000 	nop
  40bc78:	8fdc0010 	lw	gp,16(s8)
  40bc7c:	00000000 	nop
			alg_name, ret==0? "Ok" : "FAILED", ret);
	return ret;
  40bc80:	8fc2001c 	lw	v0,28(s8)
  40bc84:	00000000 	nop
}
  40bc88:	03c0e821 	move	sp,s8
  40bc8c:	8fbf0030 	lw	ra,48(sp)
  40bc90:	8fbe002c 	lw	s8,44(sp)
  40bc94:	27bd0038 	addiu	sp,sp,56
  40bc98:	03e00008 	jr	ra
  40bc9c:	00000000 	nop

0040bca0 <ike_alg_register_enc>:
  40bca0:	3c1c0fc0 	lui	gp,0xfc0
  40bca4:	279c0cd0 	addiu	gp,gp,3280
  40bca8:	0399e021 	addu	gp,gp,t9
  40bcac:	27bdffc8 	addiu	sp,sp,-56
  40bcb0:	afbc0010 	sw	gp,16(sp)
  40bcb4:	afbf0030 	sw	ra,48(sp)
  40bcb8:	afbe002c 	sw	s8,44(sp)
  40bcbc:	afbc0028 	sw	gp,40(sp)
  40bcc0:	03a0f021 	move	s8,sp
  40bcc4:	afc40038 	sw	a0,56(s8)

/*
 * 	Validate and register IKE encryption algorithm object
 */
int
ike_alg_register_enc(struct encrypt_desc *enc_desc)
{
	const char *alg_name;
	int ret=0;
  40bcc8:	afc0001c 	sw	zero,28(s8)
	if (enc_desc->algo_id > OAKLEY_ENCRYPT_MAX) {
  40bccc:	8fc20038 	lw	v0,56(s8)
  40bcd0:	00000000 	nop
  40bcd4:	94430002 	lhu	v1,2(v0)
  40bcd8:	3402fffe 	li	v0,0xfffe
  40bcdc:	0043102b 	sltu	v0,v0,v1
  40bce0:	10400013 	beqz	v0,40bd30 <ike_alg_register_enc+0x90>
  40bce4:	00000000 	nop
		plog("ike_alg_register_enc(): enc alg=%d < max=%d\n",
  40bce8:	8fc20038 	lw	v0,56(s8)
  40bcec:	00000000 	nop
  40bcf0:	94420002 	lhu	v0,2(v0)
  40bcf4:	8f848020 	lw	a0,-32736(gp)
  40bcf8:	00000000 	nop
  40bcfc:	248444c0 	addiu	a0,a0,17600
  40bd00:	00402821 	move	a1,v0
  40bd04:	3406fffe 	li	a2,0xfffe
  40bd08:	8f998abc 	lw	t9,-30020(gp)
  40bd0c:	00000000 	nop
  40bd10:	0320f809 	jalr	t9
  40bd14:	00000000 	nop
  40bd18:	8fdc0010 	lw	gp,16(s8)
  40bd1c:	00000000 	nop
				enc_desc->algo_id, OAKLEY_ENCRYPT_MAX);
		return_on(ret, -EINVAL);
  40bd20:	2402ffea 	li	v0,-22
  40bd24:	afc2001c 	sw	v0,28(s8)
  40bd28:	10000022 	b	40bdb4 <ike_alg_register_enc+0x114>
  40bd2c:	00000000 	nop
	}
	alg_name=enum_name(&oakley_enc_names, enc_desc->algo_id);
  40bd30:	8fc20038 	lw	v0,56(s8)
  40bd34:	00000000 	nop
  40bd38:	94420002 	lhu	v0,2(v0)
  40bd3c:	8f848a50 	lw	a0,-30128(gp)
  40bd40:	00402821 	move	a1,v0
  40bd44:	8f9984bc 	lw	t9,-31556(gp)
  40bd48:	00000000 	nop
  40bd4c:	0320f809 	jalr	t9
  40bd50:	00000000 	nop
  40bd54:	8fdc0010 	lw	gp,16(s8)
  40bd58:	afc20018 	sw	v0,24(s8)
	if (!alg_name) {
  40bd5c:	8fc20018 	lw	v0,24(s8)
  40bd60:	00000000 	nop
  40bd64:	14400013 	bnez	v0,40bdb4 <ike_alg_register_enc+0x114>
  40bd68:	00000000 	nop
		plog("ike_alg_register_enc(): WARNING: enc alg=%d not found in "
  40bd6c:	8fc20038 	lw	v0,56(s8)
  40bd70:	00000000 	nop
  40bd74:	94420002 	lhu	v0,2(v0)
  40bd78:	8f848020 	lw	a0,-32736(gp)
  40bd7c:	00000000 	nop
  40bd80:	248444f0 	addiu	a0,a0,17648
  40bd84:	00402821 	move	a1,v0
  40bd88:	8f998abc 	lw	t9,-30020(gp)
  40bd8c:	00000000 	nop
  40bd90:	0320f809 	jalr	t9
  40bd94:	00000000 	nop
  40bd98:	8fdc0010 	lw	gp,16(s8)
  40bd9c:	00000000 	nop
				"constants.c:oakley_enc_names  ",
				enc_desc->algo_id);
		alg_name="<NULL>";
  40bda0:	8f828020 	lw	v0,-32736(gp)
  40bda4:	00000000 	nop
  40bda8:	24424478 	addiu	v0,v0,17528
  40bdac:	00000000 	nop
  40bdb0:	afc20018 	sw	v0,24(s8)
	}
return_out:
	if (ret==0)
  40bdb4:	8fc2001c 	lw	v0,28(s8)
  40bdb8:	00000000 	nop
  40bdbc:	14400008 	bnez	v0,40bde0 <ike_alg_register_enc+0x140>
  40bdc0:	00000000 	nop
		ret=ike_alg_add((struct ike_alg *)enc_desc);
  40bdc4:	8fc40038 	lw	a0,56(s8)
  40bdc8:	8f99882c 	lw	t9,-30676(gp)
  40bdcc:	00000000 	nop
  40bdd0:	0320f809 	jalr	t9
  40bdd4:	00000000 	nop
  40bdd8:	8fdc0010 	lw	gp,16(s8)
  40bddc:	afc2001c 	sw	v0,28(s8)
	plog("ike_alg_register_enc(): Activating %s: %s (ret=%d)", 
  40bde0:	8fc2001c 	lw	v0,28(s8)
  40bde4:	00000000 	nop
  40bde8:	14400008 	bnez	v0,40be0c <ike_alg_register_enc+0x16c>
  40bdec:	00000000 	nop
  40bdf0:	8f828020 	lw	v0,-32736(gp)
  40bdf4:	00000000 	nop
  40bdf8:	24424480 	addiu	v0,v0,17536
  40bdfc:	00000000 	nop
  40be00:	afc20020 	sw	v0,32(s8)
  40be04:	10000006 	b	40be20 <ike_alg_register_enc+0x180>
  40be08:	00000000 	nop
  40be0c:	8f828020 	lw	v0,-32736(gp)
  40be10:	00000000 	nop
  40be14:	24424484 	addiu	v0,v0,17540
  40be18:	00000000 	nop
  40be1c:	afc20020 	sw	v0,32(s8)
  40be20:	8f848020 	lw	a0,-32736(gp)
  40be24:	00000000 	nop
  40be28:	24844548 	addiu	a0,a0,17736
  40be2c:	8fc50018 	lw	a1,24(s8)
  40be30:	8fc60020 	lw	a2,32(s8)
  40be34:	8fc7001c 	lw	a3,28(s8)
  40be38:	8f998abc 	lw	t9,-30020(gp)
  40be3c:	00000000 	nop
  40be40:	0320f809 	jalr	t9
  40be44:	00000000 	nop
  40be48:	8fdc0010 	lw	gp,16(s8)
  40be4c:	00000000 	nop
			alg_name, ret==0? "Ok" : "FAILED", ret);
	return 0;
  40be50:	00001021 	move	v0,zero
}
  40be54:	03c0e821 	move	sp,s8
  40be58:	8fbf0030 	lw	ra,48(sp)
  40be5c:	8fbe002c 	lw	s8,44(sp)
  40be60:	27bd0038 	addiu	sp,sp,56
  40be64:	03e00008 	jr	ra
  40be68:	00000000 	nop

0040be6c <ike_alg_pfsgroup>:
  40be6c:	3c1c0fc0 	lui	gp,0xfc0
  40be70:	279c0b04 	addiu	gp,gp,2820
  40be74:	0399e021 	addu	gp,gp,t9
  40be78:	27bdffd0 	addiu	sp,sp,-48
  40be7c:	afbc0010 	sw	gp,16(sp)
  40be80:	afbf0028 	sw	ra,40(sp)
  40be84:	afbe0024 	sw	s8,36(sp)
  40be88:	afbc0020 	sw	gp,32(sp)
  40be8c:	03a0f021 	move	s8,sp
  40be90:	afc40030 	sw	a0,48(s8)
  40be94:	afc60038 	sw	a2,56(s8)
  40be98:	afc7003c 	sw	a3,60(s8)
/* Get pfsgroup for this connection */
const struct oakley_group_desc *
ike_alg_pfsgroup(struct connection *c, lset_t policy)
{
	const struct oakley_group_desc * ret = NULL;
  40be9c:	afc00018 	sw	zero,24(s8)
	if ( (policy & POLICY_PFS) && 
			c->alg_info_esp && c->alg_info_esp->esp_pfsgroup)
  40bea0:	8fc40038 	lw	a0,56(s8)
  40bea4:	8fc5003c 	lw	a1,60(s8)
  40bea8:	24020000 	li	v0,0
  40beac:	24030040 	li	v1,64
  40beb0:	00822024 	and	a0,a0,v0
  40beb4:	00a32824 	and	a1,a1,v1
  40beb8:	00801021 	move	v0,a0
  40bebc:	00451025 	or	v0,v0,a1
  40bec0:	1040001c 	beqz	v0,40bf34 <ike_alg_pfsgroup+0xc8>
  40bec4:	00000000 	nop
  40bec8:	8fc20030 	lw	v0,48(s8)
  40becc:	00000000 	nop
  40bed0:	8c4201bc 	lw	v0,444(v0)
  40bed4:	00000000 	nop
  40bed8:	10400016 	beqz	v0,40bf34 <ike_alg_pfsgroup+0xc8>
  40bedc:	00000000 	nop
  40bee0:	8fc20030 	lw	v0,48(s8)
  40bee4:	00000000 	nop
  40bee8:	8c4201bc 	lw	v0,444(v0)
  40beec:	00000000 	nop
  40bef0:	8c420410 	lw	v0,1040(v0)
  40bef4:	00000000 	nop
  40bef8:	1040000e 	beqz	v0,40bf34 <ike_alg_pfsgroup+0xc8>
  40befc:	00000000 	nop
		ret = lookup_group(c->alg_info_esp->esp_pfsgroup);
  40bf00:	8fc20030 	lw	v0,48(s8)
  40bf04:	00000000 	nop
  40bf08:	8c4201bc 	lw	v0,444(v0)
  40bf0c:	00000000 	nop
  40bf10:	94420412 	lhu	v0,1042(v0)
  40bf14:	00000000 	nop
  40bf18:	00402021 	move	a0,v0
  40bf1c:	8f998b88 	lw	t9,-29816(gp)
  40bf20:	00000000 	nop
  40bf24:	0320f809 	jalr	t9
  40bf28:	00000000 	nop
  40bf2c:	8fdc0010 	lw	gp,16(s8)
  40bf30:	afc20018 	sw	v0,24(s8)
	return ret;
  40bf34:	8fc20018 	lw	v0,24(s8)
  40bf38:	00000000 	nop
}
  40bf3c:	03c0e821 	move	sp,s8
  40bf40:	8fbf0028 	lw	ra,40(sp)
  40bf44:	8fbe0024 	lw	s8,36(sp)
  40bf48:	27bd0030 	addiu	sp,sp,48
  40bf4c:	03e00008 	jr	ra
  40bf50:	00000000 	nop

0040bf54 <ike_alg_get_hasher>:
  40bf54:	3c1c0fc0 	lui	gp,0xfc0
  40bf58:	279c0a1c 	addiu	gp,gp,2588
  40bf5c:	0399e021 	addu	gp,gp,t9
  40bf60:	27bdffd8 	addiu	sp,sp,-40
  40bf64:	afbc0010 	sw	gp,16(sp)
  40bf68:	afbf0020 	sw	ra,32(sp)
  40bf6c:	afbe001c 	sw	s8,28(sp)
  40bf70:	afbc0018 	sw	gp,24(sp)
  40bf74:	03a0f021 	move	s8,sp
  40bf78:	00801021 	move	v0,a0
int ike_alg_register_hash(struct hash_desc *a);
struct ike_alg *ike_alg_find(unsigned algo_type, unsigned algo_id, unsigned keysize);
static __inline__ struct hash_desc *ike_alg_get_hasher(int alg)
{
	return (struct hash_desc *) ike_alg_find(IKE_ALG_HASH, alg, 0);
  40bf7c:	24040001 	li	a0,1
  40bf80:	00402821 	move	a1,v0
  40bf84:	00003021 	move	a2,zero
  40bf88:	8f998c08 	lw	t9,-29688(gp)
  40bf8c:	00000000 	nop
  40bf90:	0320f809 	jalr	t9
  40bf94:	00000000 	nop
  40bf98:	8fdc0010 	lw	gp,16(s8)
  40bf9c:	00000000 	nop
}
  40bfa0:	03c0e821 	move	sp,s8
  40bfa4:	8fbf0020 	lw	ra,32(sp)
  40bfa8:	8fbe001c 	lw	s8,28(sp)
  40bfac:	27bd0028 	addiu	sp,sp,40
  40bfb0:	03e00008 	jr	ra
  40bfb4:	00000000 	nop

0040bfb8 <ike_alg_get_encrypter>:
  40bfb8:	3c1c0fc0 	lui	gp,0xfc0
  40bfbc:	279c09b8 	addiu	gp,gp,2488
  40bfc0:	0399e021 	addu	gp,gp,t9
  40bfc4:	27bdffd8 	addiu	sp,sp,-40
  40bfc8:	afbc0010 	sw	gp,16(sp)
  40bfcc:	afbf0020 	sw	ra,32(sp)
  40bfd0:	afbe001c 	sw	s8,28(sp)
  40bfd4:	afbc0018 	sw	gp,24(sp)
  40bfd8:	03a0f021 	move	s8,sp
  40bfdc:	00801021 	move	v0,a0
static __inline__ struct encrypt_desc *ike_alg_get_encrypter(int alg)
{
	return (struct encrypt_desc *) ike_alg_find(IKE_ALG_ENCRYPT, alg, 0);
  40bfe0:	00002021 	move	a0,zero
  40bfe4:	00402821 	move	a1,v0
  40bfe8:	00003021 	move	a2,zero
  40bfec:	8f998c08 	lw	t9,-29688(gp)
  40bff0:	00000000 	nop
  40bff4:	0320f809 	jalr	t9
  40bff8:	00000000 	nop
  40bffc:	8fdc0010 	lw	gp,16(s8)
  40c000:	00000000 	nop
}
  40c004:	03c0e821 	move	sp,s8
  40c008:	8fbf0020 	lw	ra,32(sp)
  40c00c:	8fbe001c 	lw	s8,28(sp)
  40c010:	27bd0028 	addiu	sp,sp,40
  40c014:	03e00008 	jr	ra
  40c018:	00000000 	nop
  40c01c:	00000000 	nop

0040c020 <alg_info_esp_aa2sadb>:
  40c020:	3c1c0fc0 	lui	gp,0xfc0
  40c024:	279c0950 	addiu	gp,gp,2384
  40c028:	0399e021 	addu	gp,gp,t9
  40c02c:	27bdffe8 	addiu	sp,sp,-24
  40c030:	afbc0000 	sw	gp,0(sp)
  40c034:	afbe0014 	sw	s8,20(sp)
  40c038:	afbc0010 	sw	gp,16(sp)
  40c03c:	03a0f021 	move	s8,sp
  40c040:	afc40018 	sw	a0,24(s8)
/* sadb/ESP aa attrib converters */
int
alg_info_esp_aa2sadb(int auth)
{
	int sadb_aalg=0;
  40c044:	afc00008 	sw	zero,8(s8)
	switch(auth) {
  40c048:	8fc20018 	lw	v0,24(s8)
  40c04c:	00000000 	nop
  40c050:	afc2000c 	sw	v0,12(s8)
  40c054:	8fc3000c 	lw	v1,12(s8)
  40c058:	00000000 	nop
  40c05c:	28620001 	slti	v0,v1,1
  40c060:	1440001b 	bnez	v0,40c0d0 <alg_info_esp_aa2sadb+0xb0>
  40c064:	00000000 	nop
  40c068:	8fc3000c 	lw	v1,12(s8)
  40c06c:	00000000 	nop
  40c070:	28620003 	slti	v0,v1,3
  40c074:	14400010 	bnez	v0,40c0b8 <alg_info_esp_aa2sadb+0x98>
  40c078:	00000000 	nop
  40c07c:	8fc3000c 	lw	v1,12(s8)
  40c080:	00000000 	nop
  40c084:	28620009 	slti	v0,v1,9
  40c088:	10400011 	beqz	v0,40c0d0 <alg_info_esp_aa2sadb+0xb0>
  40c08c:	00000000 	nop
  40c090:	8fc3000c 	lw	v1,12(s8)
  40c094:	00000000 	nop
  40c098:	28620005 	slti	v0,v1,5
  40c09c:	1440000c 	bnez	v0,40c0d0 <alg_info_esp_aa2sadb+0xb0>
  40c0a0:	00000000 	nop
		case AUTH_ALGORITHM_HMAC_MD5:
		case AUTH_ALGORITHM_HMAC_SHA1:
			sadb_aalg=auth+1;
			break;
		case AUTH_ALGORITHM_HMAC_SHA2_256:
		case AUTH_ALGORITHM_HMAC_SHA2_384:
		case AUTH_ALGORITHM_HMAC_SHA2_512:
		case AUTH_ALGORITHM_HMAC_RIPEMD:
			sadb_aalg=auth;
  40c0a4:	8fc20018 	lw	v0,24(s8)
  40c0a8:	00000000 	nop
  40c0ac:	afc20008 	sw	v0,8(s8)
			break;
  40c0b0:	1000000a 	b	40c0dc <alg_info_esp_aa2sadb+0xbc>
  40c0b4:	00000000 	nop
  40c0b8:	8fc20018 	lw	v0,24(s8)
  40c0bc:	00000000 	nop
  40c0c0:	24420001 	addiu	v0,v0,1
  40c0c4:	afc20008 	sw	v0,8(s8)
  40c0c8:	10000004 	b	40c0dc <alg_info_esp_aa2sadb+0xbc>
  40c0cc:	00000000 	nop
		default:
			/* loose ... */
			sadb_aalg=auth;
  40c0d0:	8fc20018 	lw	v0,24(s8)
  40c0d4:	00000000 	nop
  40c0d8:	afc20008 	sw	v0,8(s8)
	}
	return sadb_aalg;
  40c0dc:	8fc20008 	lw	v0,8(s8)
  40c0e0:	00000000 	nop
}
  40c0e4:	03c0e821 	move	sp,s8
  40c0e8:	8fbe0014 	lw	s8,20(sp)
  40c0ec:	27bd0018 	addiu	sp,sp,24
  40c0f0:	03e00008 	jr	ra
  40c0f4:	00000000 	nop

0040c0f8 <alg_info_esp_sadb2aa>:
  40c0f8:	3c1c0fc0 	lui	gp,0xfc0
  40c0fc:	279c0878 	addiu	gp,gp,2168
  40c100:	0399e021 	addu	gp,gp,t9
  40c104:	27bdffe8 	addiu	sp,sp,-24
  40c108:	afbc0000 	sw	gp,0(sp)
  40c10c:	afbe0014 	sw	s8,20(sp)
  40c110:	afbc0010 	sw	gp,16(sp)
  40c114:	03a0f021 	move	s8,sp
  40c118:	afc40018 	sw	a0,24(s8)

int /* __attribute__ ((unused)) */
alg_info_esp_sadb2aa(int sadb_aalg)
{
	int auth=0;
  40c11c:	afc00008 	sw	zero,8(s8)
	switch(sadb_aalg) {
  40c120:	8fc20018 	lw	v0,24(s8)
  40c124:	00000000 	nop
  40c128:	afc2000c 	sw	v0,12(s8)
  40c12c:	8fc3000c 	lw	v1,12(s8)
  40c130:	00000000 	nop
  40c134:	28620002 	slti	v0,v1,2
  40c138:	1440001b 	bnez	v0,40c1a8 <alg_info_esp_sadb2aa+0xb0>
  40c13c:	00000000 	nop
  40c140:	8fc3000c 	lw	v1,12(s8)
  40c144:	00000000 	nop
  40c148:	28620004 	slti	v0,v1,4
  40c14c:	14400010 	bnez	v0,40c190 <alg_info_esp_sadb2aa+0x98>
  40c150:	00000000 	nop
  40c154:	8fc3000c 	lw	v1,12(s8)
  40c158:	00000000 	nop
  40c15c:	28620009 	slti	v0,v1,9
  40c160:	10400011 	beqz	v0,40c1a8 <alg_info_esp_sadb2aa+0xb0>
  40c164:	00000000 	nop
  40c168:	8fc3000c 	lw	v1,12(s8)
  40c16c:	00000000 	nop
  40c170:	28620005 	slti	v0,v1,5
  40c174:	1440000c 	bnez	v0,40c1a8 <alg_info_esp_sadb2aa+0xb0>
  40c178:	00000000 	nop
		case SADB_AALG_MD5HMAC:
		case SADB_AALG_SHA1HMAC:
			auth=sadb_aalg-1;
			break;
			/* since they are the same ...  :)  */
		case AUTH_ALGORITHM_HMAC_SHA2_256:
		case AUTH_ALGORITHM_HMAC_SHA2_384:
		case AUTH_ALGORITHM_HMAC_SHA2_512:
		case AUTH_ALGORITHM_HMAC_RIPEMD:
			auth=sadb_aalg;
  40c17c:	8fc20018 	lw	v0,24(s8)
  40c180:	00000000 	nop
  40c184:	afc20008 	sw	v0,8(s8)
			break;
  40c188:	1000000a 	b	40c1b4 <alg_info_esp_sadb2aa+0xbc>
  40c18c:	00000000 	nop
  40c190:	8fc20018 	lw	v0,24(s8)
  40c194:	00000000 	nop
  40c198:	2442ffff 	addiu	v0,v0,-1
  40c19c:	afc20008 	sw	v0,8(s8)
  40c1a0:	10000004 	b	40c1b4 <alg_info_esp_sadb2aa+0xbc>
  40c1a4:	00000000 	nop
		default:
			/* loose ... */
			auth=sadb_aalg;
  40c1a8:	8fc20018 	lw	v0,24(s8)
  40c1ac:	00000000 	nop
  40c1b0:	afc20008 	sw	v0,8(s8)
	}
	return auth;
  40c1b4:	8fc20008 	lw	v0,8(s8)
  40c1b8:	00000000 	nop
}
  40c1bc:	03c0e821 	move	sp,s8
  40c1c0:	8fbe0014 	lw	s8,20(sp)
  40c1c4:	27bd0018 	addiu	sp,sp,24
  40c1c8:	03e00008 	jr	ra
  40c1cc:	00000000 	nop

0040c1d0 <enum_search_prefix>:
  40c1d0:	3c1c0fc0 	lui	gp,0xfc0
  40c1d4:	279c07a0 	addiu	gp,gp,1952
  40c1d8:	0399e021 	addu	gp,gp,t9
  40c1dc:	27bdff88 	addiu	sp,sp,-120
  40c1e0:	afbc0010 	sw	gp,16(sp)
  40c1e4:	afbf0074 	sw	ra,116(sp)
  40c1e8:	afbe0070 	sw	s8,112(sp)
  40c1ec:	afbc006c 	sw	gp,108(sp)
  40c1f0:	afb00068 	sw	s0,104(sp)
  40c1f4:	03a0f021 	move	s8,sp
  40c1f8:	afc40078 	sw	a0,120(s8)
  40c1fc:	afc5007c 	sw	a1,124(s8)
  40c200:	afc60080 	sw	a2,128(s8)
  40c204:	afc70084 	sw	a3,132(s8)

/*
 * 	Search enum_name array with in prefixed uppercase
 */
static int
enum_search_prefix (enum_names *ed, const char *prefix, const char *str, int strlen)
{
	char buf[64];
	char *ptr;
	int ret;
	int len=sizeof(buf)-1;	/* reserve space for final \0 */
  40c208:	2402003f 	li	v0,63
  40c20c:	afc20060 	sw	v0,96(s8)
	for (ptr=buf; *prefix; *ptr++=*prefix++, len--);
  40c210:	27c20018 	addiu	v0,s8,24
  40c214:	afc20058 	sw	v0,88(s8)
  40c218:	8fc2007c 	lw	v0,124(s8)
  40c21c:	00000000 	nop
  40c220:	80420000 	lb	v0,0(v0)
  40c224:	00000000 	nop
  40c228:	14400003 	bnez	v0,40c238 <enum_search_prefix+0x68>
  40c22c:	00000000 	nop
  40c230:	10000014 	b	40c284 <enum_search_prefix+0xb4>
  40c234:	00000000 	nop
  40c238:	27c70058 	addiu	a3,s8,88
  40c23c:	8ce40000 	lw	a0,0(a3)
  40c240:	27c6007c 	addiu	a2,s8,124
  40c244:	8cc30000 	lw	v1,0(a2)
  40c248:	00802821 	move	a1,a0
  40c24c:	00601021 	move	v0,v1
  40c250:	90420000 	lbu	v0,0(v0)
  40c254:	00000000 	nop
  40c258:	a0a20000 	sb	v0,0(a1)
  40c25c:	24630001 	addiu	v1,v1,1
  40c260:	acc30000 	sw	v1,0(a2)
  40c264:	24840001 	addiu	a0,a0,1
  40c268:	ace40000 	sw	a0,0(a3)
  40c26c:	8fc20060 	lw	v0,96(s8)
  40c270:	00000000 	nop
  40c274:	2442ffff 	addiu	v0,v0,-1
  40c278:	afc20060 	sw	v0,96(s8)
  40c27c:	1000ffe6 	b	40c218 <enum_search_prefix+0x48>
  40c280:	00000000 	nop
  40c284:	00000000 	nop
	while (strlen--&&len--&&*str) *ptr++=toupper(*str++);
  40c288:	8fc20084 	lw	v0,132(s8)
  40c28c:	00000000 	nop
  40c290:	2442ffff 	addiu	v0,v0,-1
  40c294:	00401821 	move	v1,v0
  40c298:	afc30084 	sw	v1,132(s8)
  40c29c:	2402ffff 	li	v0,-1
  40c2a0:	10620026 	beq	v1,v0,40c33c <enum_search_prefix+0x16c>
  40c2a4:	00000000 	nop
  40c2a8:	8fc20060 	lw	v0,96(s8)
  40c2ac:	00000000 	nop
  40c2b0:	2442ffff 	addiu	v0,v0,-1
  40c2b4:	00401821 	move	v1,v0
  40c2b8:	afc30060 	sw	v1,96(s8)
  40c2bc:	2402ffff 	li	v0,-1
  40c2c0:	1062001e 	beq	v1,v0,40c33c <enum_search_prefix+0x16c>
  40c2c4:	00000000 	nop
  40c2c8:	8fc20080 	lw	v0,128(s8)
  40c2cc:	00000000 	nop
  40c2d0:	80420000 	lb	v0,0(v0)
  40c2d4:	00000000 	nop
  40c2d8:	14400003 	bnez	v0,40c2e8 <enum_search_prefix+0x118>
  40c2dc:	00000000 	nop
  40c2e0:	10000016 	b	40c33c <enum_search_prefix+0x16c>
  40c2e4:	00000000 	nop
  40c2e8:	27c60058 	addiu	a2,s8,88
  40c2ec:	8cc40000 	lw	a0,0(a2)
  40c2f0:	27c50080 	addiu	a1,s8,128
  40c2f4:	8ca20000 	lw	v0,0(a1)
  40c2f8:	00000000 	nop
  40c2fc:	00401821 	move	v1,v0
  40c300:	80630000 	lb	v1,0(v1)
  40c304:	24420001 	addiu	v0,v0,1
  40c308:	aca20000 	sw	v0,0(a1)
  40c30c:	00808021 	move	s0,a0
  40c310:	24840001 	addiu	a0,a0,1
  40c314:	acc40000 	sw	a0,0(a2)
  40c318:	00602021 	move	a0,v1
  40c31c:	8f998168 	lw	t9,-32408(gp)
  40c320:	00000000 	nop
  40c324:	0320f809 	jalr	t9
  40c328:	00000000 	nop
  40c32c:	8fdc0010 	lw	gp,16(s8)
  40c330:	a2020000 	sb	v0,0(s0)
  40c334:	1000ffd4 	b	40c288 <enum_search_prefix+0xb8>
  40c338:	00000000 	nop
	*ptr=0;
  40c33c:	8fc20058 	lw	v0,88(s8)
  40c340:	00000000 	nop
  40c344:	a0400000 	sb	zero,0(v0)
	DBG(DBG_CRYPT, DBG_log("enum_search_prefix () "
  40c348:	8f8284f8 	lw	v0,-31496(gp)
  40c34c:	00000000 	nop
  40c350:	8c420000 	lw	v0,0(v0)
  40c354:	00000000 	nop
  40c358:	30420002 	andi	v0,v0,0x2
  40c35c:	1040000c 	beqz	v0,40c390 <enum_search_prefix+0x1c0>
  40c360:	00000000 	nop
  40c364:	8f848020 	lw	a0,-32736(gp)
  40c368:	00000000 	nop
  40c36c:	24844580 	addiu	a0,a0,17792
  40c370:	8fc50078 	lw	a1,120(s8)
  40c374:	27c60018 	addiu	a2,s8,24
  40c378:	8f9983b8 	lw	t9,-31816(gp)
  40c37c:	00000000 	nop
  40c380:	0320f809 	jalr	t9
  40c384:	00000000 	nop
  40c388:	8fdc0010 	lw	gp,16(s8)
  40c38c:	00000000 	nop
				"calling enum_search(%p, \"%s\")", ed, buf));
	ret=enum_search(ed, buf);
  40c390:	8fc40078 	lw	a0,120(s8)
  40c394:	27c50018 	addiu	a1,s8,24
  40c398:	8f998560 	lw	t9,-31392(gp)
  40c39c:	00000000 	nop
  40c3a0:	0320f809 	jalr	t9
  40c3a4:	00000000 	nop
  40c3a8:	8fdc0010 	lw	gp,16(s8)
  40c3ac:	afc2005c 	sw	v0,92(s8)
	return ret;
  40c3b0:	8fc2005c 	lw	v0,92(s8)
  40c3b4:	00000000 	nop
}
  40c3b8:	03c0e821 	move	sp,s8
  40c3bc:	8fbf0074 	lw	ra,116(sp)
  40c3c0:	8fbe0070 	lw	s8,112(sp)
  40c3c4:	8fb00068 	lw	s0,104(sp)
  40c3c8:	27bd0078 	addiu	sp,sp,120
  40c3cc:	03e00008 	jr	ra
  40c3d0:	00000000 	nop

0040c3d4 <enum_search_ppfix>:
  40c3d4:	3c1c0fc0 	lui	gp,0xfc0
  40c3d8:	279c059c 	addiu	gp,gp,1436
  40c3dc:	0399e021 	addu	gp,gp,t9
  40c3e0:	27bdff88 	addiu	sp,sp,-120
  40c3e4:	afbc0010 	sw	gp,16(sp)
  40c3e8:	afbf0074 	sw	ra,116(sp)
  40c3ec:	afbe0070 	sw	s8,112(sp)
  40c3f0:	afbc006c 	sw	gp,108(sp)
  40c3f4:	afb00068 	sw	s0,104(sp)
  40c3f8:	03a0f021 	move	s8,sp
  40c3fc:	afc40078 	sw	a0,120(s8)
  40c400:	afc5007c 	sw	a1,124(s8)
  40c404:	afc60080 	sw	a2,128(s8)
  40c408:	afc70084 	sw	a3,132(s8)
/*
 * 	Search enum_name array with in prefixed and postfixed uppercase
 */
static int
enum_search_ppfix (enum_names *ed, const char *prefix, const char *postfix, const char *str, int strlen)
{
	char buf[64];
	char *ptr;
	int ret;
	int len=sizeof(buf)-1;	/* reserve space for final \0 */
  40c40c:	2402003f 	li	v0,63
  40c410:	afc20060 	sw	v0,96(s8)
	for (ptr=buf; *prefix; *ptr++=*prefix++, len--);
  40c414:	27c20018 	addiu	v0,s8,24
  40c418:	afc20058 	sw	v0,88(s8)
  40c41c:	8fc2007c 	lw	v0,124(s8)
  40c420:	00000000 	nop
  40c424:	80420000 	lb	v0,0(v0)
  40c428:	00000000 	nop
  40c42c:	14400003 	bnez	v0,40c43c <enum_search_ppfix+0x68>
  40c430:	00000000 	nop
  40c434:	10000014 	b	40c488 <enum_search_ppfix+0xb4>
  40c438:	00000000 	nop
  40c43c:	27c70058 	addiu	a3,s8,88
  40c440:	8ce40000 	lw	a0,0(a3)
  40c444:	27c6007c 	addiu	a2,s8,124
  40c448:	8cc30000 	lw	v1,0(a2)
  40c44c:	00802821 	move	a1,a0
  40c450:	00601021 	move	v0,v1
  40c454:	90420000 	lbu	v0,0(v0)
  40c458:	00000000 	nop
  40c45c:	a0a20000 	sb	v0,0(a1)
  40c460:	24630001 	addiu	v1,v1,1
  40c464:	acc30000 	sw	v1,0(a2)
  40c468:	24840001 	addiu	a0,a0,1
  40c46c:	ace40000 	sw	a0,0(a3)
  40c470:	8fc20060 	lw	v0,96(s8)
  40c474:	00000000 	nop
  40c478:	2442ffff 	addiu	v0,v0,-1
  40c47c:	afc20060 	sw	v0,96(s8)
  40c480:	1000ffe6 	b	40c41c <enum_search_ppfix+0x48>
  40c484:	00000000 	nop
  40c488:	00000000 	nop
	while (strlen--&&len--&&*str) *ptr++=toupper(*str++);
  40c48c:	8fc20088 	lw	v0,136(s8)
  40c490:	00000000 	nop
  40c494:	2442ffff 	addiu	v0,v0,-1
  40c498:	00401821 	move	v1,v0
  40c49c:	afc30088 	sw	v1,136(s8)
  40c4a0:	2402ffff 	li	v0,-1
  40c4a4:	10620026 	beq	v1,v0,40c540 <enum_search_ppfix+0x16c>
  40c4a8:	00000000 	nop
  40c4ac:	8fc20060 	lw	v0,96(s8)
  40c4b0:	00000000 	nop
  40c4b4:	2442ffff 	addiu	v0,v0,-1
  40c4b8:	00401821 	move	v1,v0
  40c4bc:	afc30060 	sw	v1,96(s8)
  40c4c0:	2402ffff 	li	v0,-1
  40c4c4:	1062001e 	beq	v1,v0,40c540 <enum_search_ppfix+0x16c>
  40c4c8:	00000000 	nop
  40c4cc:	8fc20084 	lw	v0,132(s8)
  40c4d0:	00000000 	nop
  40c4d4:	80420000 	lb	v0,0(v0)
  40c4d8:	00000000 	nop
  40c4dc:	14400003 	bnez	v0,40c4ec <enum_search_ppfix+0x118>
  40c4e0:	00000000 	nop
  40c4e4:	10000016 	b	40c540 <enum_search_ppfix+0x16c>
  40c4e8:	00000000 	nop
  40c4ec:	27c60058 	addiu	a2,s8,88
  40c4f0:	8cc40000 	lw	a0,0(a2)
  40c4f4:	27c50084 	addiu	a1,s8,132
  40c4f8:	8ca20000 	lw	v0,0(a1)
  40c4fc:	00000000 	nop
  40c500:	00401821 	move	v1,v0
  40c504:	80630000 	lb	v1,0(v1)
  40c508:	24420001 	addiu	v0,v0,1
  40c50c:	aca20000 	sw	v0,0(a1)
  40c510:	00808021 	move	s0,a0
  40c514:	24840001 	addiu	a0,a0,1
  40c518:	acc40000 	sw	a0,0(a2)
  40c51c:	00602021 	move	a0,v1
  40c520:	8f998168 	lw	t9,-32408(gp)
  40c524:	00000000 	nop
  40c528:	0320f809 	jalr	t9
  40c52c:	00000000 	nop
  40c530:	8fdc0010 	lw	gp,16(s8)
  40c534:	a2020000 	sb	v0,0(s0)
  40c538:	1000ffd4 	b	40c48c <enum_search_ppfix+0xb8>
  40c53c:	00000000 	nop
  40c540:	00000000 	nop
	while (len--&&*postfix) *ptr++=*postfix++;
  40c544:	8fc20060 	lw	v0,96(s8)
  40c548:	00000000 	nop
  40c54c:	2442ffff 	addiu	v0,v0,-1
  40c550:	00401821 	move	v1,v0
  40c554:	afc30060 	sw	v1,96(s8)
  40c558:	2402ffff 	li	v0,-1
  40c55c:	10620018 	beq	v1,v0,40c5c0 <enum_search_ppfix+0x1ec>
  40c560:	00000000 	nop
  40c564:	8fc20080 	lw	v0,128(s8)
  40c568:	00000000 	nop
  40c56c:	80420000 	lb	v0,0(v0)
  40c570:	00000000 	nop
  40c574:	14400003 	bnez	v0,40c584 <enum_search_ppfix+0x1b0>
  40c578:	00000000 	nop
  40c57c:	10000010 	b	40c5c0 <enum_search_ppfix+0x1ec>
  40c580:	00000000 	nop
  40c584:	27c70058 	addiu	a3,s8,88
  40c588:	8ce40000 	lw	a0,0(a3)
  40c58c:	27c60080 	addiu	a2,s8,128
  40c590:	8cc30000 	lw	v1,0(a2)
  40c594:	00802821 	move	a1,a0
  40c598:	00601021 	move	v0,v1
  40c59c:	90420000 	lbu	v0,0(v0)
  40c5a0:	00000000 	nop
  40c5a4:	a0a20000 	sb	v0,0(a1)
  40c5a8:	24630001 	addiu	v1,v1,1
  40c5ac:	acc30000 	sw	v1,0(a2)
  40c5b0:	24840001 	addiu	a0,a0,1
  40c5b4:	ace40000 	sw	a0,0(a3)
  40c5b8:	1000ffe2 	b	40c544 <enum_search_ppfix+0x170>
  40c5bc:	00000000 	nop
	*ptr=0;
  40c5c0:	8fc20058 	lw	v0,88(s8)
  40c5c4:	00000000 	nop
  40c5c8:	a0400000 	sb	zero,0(v0)
	DBG(DBG_CRYPT, DBG_log("enum_search_ppfixi () "
  40c5cc:	8f8284f8 	lw	v0,-31496(gp)
  40c5d0:	00000000 	nop
  40c5d4:	8c420000 	lw	v0,0(v0)
  40c5d8:	00000000 	nop
  40c5dc:	30420002 	andi	v0,v0,0x2
  40c5e0:	1040000c 	beqz	v0,40c614 <enum_search_ppfix+0x240>
  40c5e4:	00000000 	nop
  40c5e8:	8f848020 	lw	a0,-32736(gp)
  40c5ec:	00000000 	nop
  40c5f0:	248445b4 	addiu	a0,a0,17844
  40c5f4:	8fc50078 	lw	a1,120(s8)
  40c5f8:	27c60018 	addiu	a2,s8,24
  40c5fc:	8f9983b8 	lw	t9,-31816(gp)
  40c600:	00000000 	nop
  40c604:	0320f809 	jalr	t9
  40c608:	00000000 	nop
  40c60c:	8fdc0010 	lw	gp,16(s8)
  40c610:	00000000 	nop
				"calling enum_search(%p, \"%s\")", ed, buf));
	ret=enum_search(ed, buf);
  40c614:	8fc40078 	lw	a0,120(s8)
  40c618:	27c50018 	addiu	a1,s8,24
  40c61c:	8f998560 	lw	t9,-31392(gp)
  40c620:	00000000 	nop
  40c624:	0320f809 	jalr	t9
  40c628:	00000000 	nop
  40c62c:	8fdc0010 	lw	gp,16(s8)
  40c630:	afc2005c 	sw	v0,92(s8)
	return ret;
  40c634:	8fc2005c 	lw	v0,92(s8)
  40c638:	00000000 	nop
}
  40c63c:	03c0e821 	move	sp,s8
  40c640:	8fbf0074 	lw	ra,116(sp)
  40c644:	8fbe0070 	lw	s8,112(sp)
  40c648:	8fb00068 	lw	s0,104(sp)
  40c64c:	27bd0078 	addiu	sp,sp,120
  40c650:	03e00008 	jr	ra
  40c654:	00000000 	nop

0040c658 <ealg_getbyname_esp>:
  40c658:	3c1c0fc0 	lui	gp,0xfc0
  40c65c:	279c0318 	addiu	gp,gp,792
  40c660:	0399e021 	addu	gp,gp,t9
  40c664:	27bdffd0 	addiu	sp,sp,-48
  40c668:	afbc0010 	sw	gp,16(sp)
  40c66c:	afbf0028 	sw	ra,40(sp)
  40c670:	afbe0024 	sw	s8,36(sp)
  40c674:	afbc0020 	sw	gp,32(sp)
  40c678:	03a0f021 	move	s8,sp
  40c67c:	afc40030 	sw	a0,48(s8)
  40c680:	afc50034 	sw	a1,52(s8)
/*
 * 	Search esp_transformid_names for a match, eg:
 * 		"3des" <=> "ESP_3DES"
 */
#define ESP_MAGIC_ID 0x00ffff01
static int
ealg_getbyname_esp(const char *const str, int len)
{
	int ret=-1;
  40c684:	2402ffff 	li	v0,-1
  40c688:	afc20018 	sw	v0,24(s8)
	if (!str||!*str)
  40c68c:	8fc20030 	lw	v0,48(s8)
  40c690:	00000000 	nop
  40c694:	10400026 	beqz	v0,40c730 <ealg_getbyname_esp+0xd8>
  40c698:	00000000 	nop
  40c69c:	8fc20030 	lw	v0,48(s8)
  40c6a0:	00000000 	nop
  40c6a4:	80420000 	lb	v0,0(v0)
  40c6a8:	00000000 	nop
  40c6ac:	14400003 	bnez	v0,40c6bc <ealg_getbyname_esp+0x64>
  40c6b0:	00000000 	nop
  40c6b4:	1000001e 	b	40c730 <ealg_getbyname_esp+0xd8>
  40c6b8:	00000000 	nop
		goto out;
	/* leave special case for eg:  "id248" string */
	if (strcmp("id", str)==0)
  40c6bc:	8f848020 	lw	a0,-32736(gp)
  40c6c0:	00000000 	nop
  40c6c4:	248445e8 	addiu	a0,a0,17896
  40c6c8:	8fc50030 	lw	a1,48(s8)
  40c6cc:	8f998428 	lw	t9,-31704(gp)
  40c6d0:	00000000 	nop
  40c6d4:	0320f809 	jalr	t9
  40c6d8:	00000000 	nop
  40c6dc:	8fdc0010 	lw	gp,16(s8)
  40c6e0:	14400005 	bnez	v0,40c6f8 <ealg_getbyname_esp+0xa0>
  40c6e4:	00000000 	nop
		return ESP_MAGIC_ID;
  40c6e8:	3c0200ff 	lui	v0,0xff
  40c6ec:	3442ff01 	ori	v0,v0,0xff01
  40c6f0:	10000011 	b	40c738 <ealg_getbyname_esp+0xe0>
  40c6f4:	00000000 	nop
	ret=enum_search_prefix(&esp_transformid_names, "ESP_", str, len);
  40c6f8:	8f848bf8 	lw	a0,-29704(gp)
  40c6fc:	8f858020 	lw	a1,-32736(gp)
  40c700:	00000000 	nop
  40c704:	24a545ec 	addiu	a1,a1,17900
  40c708:	8fc60030 	lw	a2,48(s8)
  40c70c:	8fc70034 	lw	a3,52(s8)
  40c710:	8f998024 	lw	t9,-32732(gp)
  40c714:	00000000 	nop
  40c718:	2739c1d0 	addiu	t9,t9,-15920
  40c71c:	00000000 	nop
  40c720:	0320f809 	jalr	t9
  40c724:	00000000 	nop
  40c728:	8fdc0010 	lw	gp,16(s8)
  40c72c:	afc20018 	sw	v0,24(s8)
out:
	return ret;
  40c730:	8fc20018 	lw	v0,24(s8)
  40c734:	00000000 	nop
}
  40c738:	03c0e821 	move	sp,s8
  40c73c:	8fbf0028 	lw	ra,40(sp)
  40c740:	8fbe0024 	lw	s8,36(sp)
  40c744:	27bd0030 	addiu	sp,sp,48
  40c748:	03e00008 	jr	ra
  40c74c:	00000000 	nop

0040c750 <aalg_getbyname_esp>:
  40c750:	3c1c0fc0 	lui	gp,0xfc0
  40c754:	279c0220 	addiu	gp,gp,544
  40c758:	0399e021 	addu	gp,gp,t9
  40c75c:	27bdffd0 	addiu	sp,sp,-48
  40c760:	afbc0010 	sw	gp,16(sp)
  40c764:	afbf0028 	sw	ra,40(sp)
  40c768:	afbe0024 	sw	s8,36(sp)
  40c76c:	afbc0020 	sw	gp,32(sp)
  40c770:	03a0f021 	move	s8,sp
  40c774:	afc40030 	sw	a0,48(s8)
  40c778:	afc50034 	sw	a1,52(s8)
/*
 * 	Search auth_alg_names for a match, eg:
 * 		"md5" <=> "AUTH_ALGORITHM_HMAC_MD5"
 */
static int
aalg_getbyname_esp(const char *const str, int len)
{
	int ret=-1;
  40c77c:	2402ffff 	li	v0,-1
  40c780:	afc20018 	sw	v0,24(s8)
	unsigned num;
	if (!str||!*str)
  40c784:	8fc20030 	lw	v0,48(s8)
  40c788:	00000000 	nop
  40c78c:	1040004e 	beqz	v0,40c8c8 <aalg_getbyname_esp+0x178>
  40c790:	00000000 	nop
  40c794:	8fc20030 	lw	v0,48(s8)
  40c798:	00000000 	nop
  40c79c:	80420000 	lb	v0,0(v0)
  40c7a0:	00000000 	nop
  40c7a4:	14400003 	bnez	v0,40c7b4 <aalg_getbyname_esp+0x64>
  40c7a8:	00000000 	nop
  40c7ac:	10000046 	b	40c8c8 <aalg_getbyname_esp+0x178>
  40c7b0:	00000000 	nop
		goto out;
	ret=enum_search_prefix(&auth_alg_names,"AUTH_ALGORITHM_HMAC_",str,len);
  40c7b4:	8f848424 	lw	a0,-31708(gp)
  40c7b8:	8f858020 	lw	a1,-32736(gp)
  40c7bc:	00000000 	nop
  40c7c0:	24a545f4 	addiu	a1,a1,17908
  40c7c4:	8fc60030 	lw	a2,48(s8)
  40c7c8:	8fc70034 	lw	a3,52(s8)
  40c7cc:	8f998024 	lw	t9,-32732(gp)
  40c7d0:	00000000 	nop
  40c7d4:	2739c1d0 	addiu	t9,t9,-15920
  40c7d8:	00000000 	nop
  40c7dc:	0320f809 	jalr	t9
  40c7e0:	00000000 	nop
  40c7e4:	8fdc0010 	lw	gp,16(s8)
  40c7e8:	afc20018 	sw	v0,24(s8)
	if (ret>=0) goto out;
  40c7ec:	8fc20018 	lw	v0,24(s8)
  40c7f0:	00000000 	nop
  40c7f4:	04400003 	bltz	v0,40c804 <aalg_getbyname_esp+0xb4>
  40c7f8:	00000000 	nop
  40c7fc:	10000032 	b	40c8c8 <aalg_getbyname_esp+0x178>
  40c800:	00000000 	nop
	ret=enum_search_prefix(&auth_alg_names,"AUTH_ALGORITHM_",str,len);
  40c804:	8f848424 	lw	a0,-31708(gp)
  40c808:	8f858020 	lw	a1,-32736(gp)
  40c80c:	00000000 	nop
  40c810:	24a5460c 	addiu	a1,a1,17932
  40c814:	8fc60030 	lw	a2,48(s8)
  40c818:	8fc70034 	lw	a3,52(s8)
  40c81c:	8f998024 	lw	t9,-32732(gp)
  40c820:	00000000 	nop
  40c824:	2739c1d0 	addiu	t9,t9,-15920
  40c828:	00000000 	nop
  40c82c:	0320f809 	jalr	t9
  40c830:	00000000 	nop
  40c834:	8fdc0010 	lw	gp,16(s8)
  40c838:	afc20018 	sw	v0,24(s8)
	if (ret>=0) goto out;
  40c83c:	8fc20018 	lw	v0,24(s8)
  40c840:	00000000 	nop
  40c844:	04400003 	bltz	v0,40c854 <aalg_getbyname_esp+0x104>
  40c848:	00000000 	nop
  40c84c:	1000001e 	b	40c8c8 <aalg_getbyname_esp+0x178>
  40c850:	00000000 	nop
	sscanf(str, "id%d%n", &ret, &num);
  40c854:	8fc40030 	lw	a0,48(s8)
  40c858:	8f858020 	lw	a1,-32736(gp)
  40c85c:	00000000 	nop
  40c860:	24a5461c 	addiu	a1,a1,17948
  40c864:	27c60018 	addiu	a2,s8,24
  40c868:	27c7001c 	addiu	a3,s8,28
  40c86c:	8f99859c 	lw	t9,-31332(gp)
  40c870:	00000000 	nop
  40c874:	0320f809 	jalr	t9
  40c878:	00000000 	nop
  40c87c:	8fdc0010 	lw	gp,16(s8)
  40c880:	00000000 	nop
	if (ret >=0 && num!=strlen(str))
  40c884:	8fc20018 	lw	v0,24(s8)
  40c888:	00000000 	nop
  40c88c:	0440000e 	bltz	v0,40c8c8 <aalg_getbyname_esp+0x178>
  40c890:	00000000 	nop
  40c894:	8fc40030 	lw	a0,48(s8)
  40c898:	8f998188 	lw	t9,-32376(gp)
  40c89c:	00000000 	nop
  40c8a0:	0320f809 	jalr	t9
  40c8a4:	00000000 	nop
  40c8a8:	8fdc0010 	lw	gp,16(s8)
  40c8ac:	00401821 	move	v1,v0
  40c8b0:	8fc2001c 	lw	v0,28(s8)
  40c8b4:	00000000 	nop
  40c8b8:	10430003 	beq	v0,v1,40c8c8 <aalg_getbyname_esp+0x178>
  40c8bc:	00000000 	nop
		ret=-1;
  40c8c0:	2402ffff 	li	v0,-1
  40c8c4:	afc20018 	sw	v0,24(s8)
out:
	return ret;
  40c8c8:	8fc20018 	lw	v0,24(s8)
  40c8cc:	00000000 	nop
}
  40c8d0:	03c0e821 	move	sp,s8
  40c8d4:	8fbf0028 	lw	ra,40(sp)
  40c8d8:	8fbe0024 	lw	s8,36(sp)
  40c8dc:	27bd0030 	addiu	sp,sp,48
  40c8e0:	03e00008 	jr	ra
  40c8e4:	00000000 	nop

0040c8e8 <modp_getbyname_esp>:
  40c8e8:	3c1c0fc0 	lui	gp,0xfc0
  40c8ec:	279c0088 	addiu	gp,gp,136
  40c8f0:	0399e021 	addu	gp,gp,t9
  40c8f4:	27bdffc8 	addiu	sp,sp,-56
  40c8f8:	afbc0018 	sw	gp,24(sp)
  40c8fc:	afbf0030 	sw	ra,48(sp)
  40c900:	afbe002c 	sw	s8,44(sp)
  40c904:	afbc0028 	sw	gp,40(sp)
  40c908:	03a0f021 	move	s8,sp
  40c90c:	afc40038 	sw	a0,56(s8)
  40c910:	afc5003c 	sw	a1,60(s8)
static int
modp_getbyname_esp(const char *const str, int len)
{
	int ret=-1;
  40c914:	2402ffff 	li	v0,-1
  40c918:	afc20020 	sw	v0,32(s8)
	if (!str||!*str)
  40c91c:	8fc20038 	lw	v0,56(s8)
  40c920:	00000000 	nop
  40c924:	10400030 	beqz	v0,40c9e8 <modp_getbyname_esp+0x100>
  40c928:	00000000 	nop
  40c92c:	8fc20038 	lw	v0,56(s8)
  40c930:	00000000 	nop
  40c934:	80420000 	lb	v0,0(v0)
  40c938:	00000000 	nop
  40c93c:	14400003 	bnez	v0,40c94c <modp_getbyname_esp+0x64>
  40c940:	00000000 	nop
  40c944:	10000028 	b	40c9e8 <modp_getbyname_esp+0x100>
  40c948:	00000000 	nop
		goto out;
	ret=enum_search_prefix(&oakley_group_names,"OAKLEY_GROUP_",str,len);
  40c94c:	8f848080 	lw	a0,-32640(gp)
  40c950:	8f858020 	lw	a1,-32736(gp)
  40c954:	00000000 	nop
  40c958:	24a54624 	addiu	a1,a1,17956
  40c95c:	8fc60038 	lw	a2,56(s8)
  40c960:	8fc7003c 	lw	a3,60(s8)
  40c964:	8f998024 	lw	t9,-32732(gp)
  40c968:	00000000 	nop
  40c96c:	2739c1d0 	addiu	t9,t9,-15920
  40c970:	00000000 	nop
  40c974:	0320f809 	jalr	t9
  40c978:	00000000 	nop
  40c97c:	8fdc0018 	lw	gp,24(s8)
  40c980:	afc20020 	sw	v0,32(s8)
	if (ret>=0) goto out;
  40c984:	8fc20020 	lw	v0,32(s8)
  40c988:	00000000 	nop
  40c98c:	04400003 	bltz	v0,40c99c <modp_getbyname_esp+0xb4>
  40c990:	00000000 	nop
  40c994:	10000014 	b	40c9e8 <modp_getbyname_esp+0x100>
  40c998:	00000000 	nop
	ret=enum_search_ppfix(&oakley_group_names, "OAKLEY_GROUP_", " (extension)", str, len);
  40c99c:	8fc2003c 	lw	v0,60(s8)
  40c9a0:	00000000 	nop
  40c9a4:	afa20010 	sw	v0,16(sp)
  40c9a8:	8f848080 	lw	a0,-32640(gp)
  40c9ac:	8f858020 	lw	a1,-32736(gp)
  40c9b0:	00000000 	nop
  40c9b4:	24a54624 	addiu	a1,a1,17956
  40c9b8:	8f868020 	lw	a2,-32736(gp)
  40c9bc:	00000000 	nop
  40c9c0:	24c64634 	addiu	a2,a2,17972
  40c9c4:	8fc70038 	lw	a3,56(s8)
  40c9c8:	8f998024 	lw	t9,-32732(gp)
  40c9cc:	00000000 	nop
  40c9d0:	2739c3d4 	addiu	t9,t9,-15404
  40c9d4:	00000000 	nop
  40c9d8:	0320f809 	jalr	t9
  40c9dc:	00000000 	nop
  40c9e0:	8fdc0018 	lw	gp,24(s8)
  40c9e4:	afc20020 	sw	v0,32(s8)
out:
	return ret;
  40c9e8:	8fc20020 	lw	v0,32(s8)
  40c9ec:	00000000 	nop
}
  40c9f0:	03c0e821 	move	sp,s8
  40c9f4:	8fbf0030 	lw	ra,48(sp)
  40c9f8:	8fbe002c 	lw	s8,44(sp)
  40c9fc:	27bd0038 	addiu	sp,sp,56
  40ca00:	03e00008 	jr	ra
  40ca04:	00000000 	nop

0040ca08 <alg_info_free>:
  40ca08:	3c1c0fc0 	lui	gp,0xfc0
  40ca0c:	279cff68 	addiu	gp,gp,-152
  40ca10:	0399e021 	addu	gp,gp,t9
  40ca14:	27bdffd8 	addiu	sp,sp,-40
  40ca18:	afbc0010 	sw	gp,16(sp)
  40ca1c:	afbf0020 	sw	ra,32(sp)
  40ca20:	afbe001c 	sw	s8,28(sp)
  40ca24:	afbc0018 	sw	gp,24(sp)
  40ca28:	03a0f021 	move	s8,sp
  40ca2c:	afc40028 	sw	a0,40(s8)
void 
alg_info_free(struct alg_info *alg_info) {
	pfreeany(alg_info);
  40ca30:	8fc20028 	lw	v0,40(s8)
  40ca34:	00000000 	nop
  40ca38:	10400008 	beqz	v0,40ca5c <alg_info_free+0x54>
  40ca3c:	00000000 	nop
  40ca40:	8fc40028 	lw	a0,40(s8)
  40ca44:	8f998094 	lw	t9,-32620(gp)
  40ca48:	00000000 	nop
  40ca4c:	0320f809 	jalr	t9
  40ca50:	00000000 	nop
  40ca54:	8fdc0010 	lw	gp,16(s8)
  40ca58:	00000000 	nop
}
  40ca5c:	03c0e821 	move	sp,s8
  40ca60:	8fbf0020 	lw	ra,32(sp)
  40ca64:	8fbe001c 	lw	s8,28(sp)
  40ca68:	27bd0028 	addiu	sp,sp,40
  40ca6c:	03e00008 	jr	ra
  40ca70:	00000000 	nop

0040ca74 <__alg_info_esp_add>:
  40ca74:	3c1c0fc0 	lui	gp,0xfc0
  40ca78:	279cfefc 	addiu	gp,gp,-260
  40ca7c:	0399e021 	addu	gp,gp,t9
  40ca80:	27bdffc8 	addiu	sp,sp,-56
  40ca84:	afbc0010 	sw	gp,16(sp)
  40ca88:	afbf0034 	sw	ra,52(sp)
  40ca8c:	afbe0030 	sw	s8,48(sp)
  40ca90:	afbc002c 	sw	gp,44(sp)
  40ca94:	afb00028 	sw	s0,40(sp)
  40ca98:	03a0f021 	move	s8,sp
  40ca9c:	afc40038 	sw	a0,56(s8)
  40caa0:	afc5003c 	sw	a1,60(s8)
  40caa4:	afc60040 	sw	a2,64(s8)
  40caa8:	afc70044 	sw	a3,68(s8)
/*	
 *	Raw add routine: only checks for no duplicates		
 */
static void
__alg_info_esp_add (struct alg_info_esp *alg_info, int ealg_id, unsigned ek_bits, int aalg_id, unsigned ak_bits)
{
	struct esp_info *esp_info=alg_info->esp;
  40caac:	8fc20038 	lw	v0,56(s8)
  40cab0:	00000000 	nop
  40cab4:	24420010 	addiu	v0,v0,16
  40cab8:	afc20018 	sw	v0,24(s8)
	unsigned cnt=alg_info->alg_info_cnt, i;
  40cabc:	8fc20038 	lw	v0,56(s8)
  40cac0:	00000000 	nop
  40cac4:	8c420000 	lw	v0,0(v0)
  40cac8:	00000000 	nop
  40cacc:	afc2001c 	sw	v0,28(s8)
	/* 	check for overflows 	*/
	passert(cnt < elemsof(alg_info->esp));
  40cad0:	8fc2001c 	lw	v0,28(s8)
  40cad4:	00000000 	nop
  40cad8:	2c420040 	sltiu	v0,v0,64
  40cadc:	1440000e 	bnez	v0,40cb18 <__alg_info_esp_add+0xa4>
  40cae0:	00000000 	nop
  40cae4:	8f848020 	lw	a0,-32736(gp)
  40cae8:	00000000 	nop
  40caec:	24844644 	addiu	a0,a0,17988
  40caf0:	8f858020 	lw	a1,-32736(gp)
  40caf4:	00000000 	nop
  40caf8:	24a54664 	addiu	a1,a1,18020
  40cafc:	240600d4 	li	a2,212
  40cb00:	8f998bb8 	lw	t9,-29768(gp)
  40cb04:	00000000 	nop
  40cb08:	0320f809 	jalr	t9
  40cb0c:	00000000 	nop
  40cb10:	8fdc0010 	lw	gp,16(s8)
  40cb14:	00000000 	nop
	/*	dont add duplicates	*/
	for (i=0;i<cnt;i++)
  40cb18:	afc00020 	sw	zero,32(s8)
  40cb1c:	8fc20020 	lw	v0,32(s8)
  40cb20:	8fc3001c 	lw	v1,28(s8)
  40cb24:	00000000 	nop
  40cb28:	0043102b 	sltu	v0,v0,v1
  40cb2c:	14400003 	bnez	v0,40cb3c <__alg_info_esp_add+0xc8>
  40cb30:	00000000 	nop
  40cb34:	1000003d 	b	40cc2c <__alg_info_esp_add+0x1b8>
  40cb38:	00000000 	nop
		if (	esp_info[i].esp_ealg_id==ealg_id &&
			(!ek_bits || esp_info[i].esp_ealg_keylen==ek_bits) &&
			esp_info[i].esp_aalg_id==aalg_id &&
			(!ak_bits || esp_info[i].esp_aalg_keylen==ak_bits))
  40cb3c:	8fc20020 	lw	v0,32(s8)
  40cb40:	00000000 	nop
  40cb44:	00021900 	sll	v1,v0,0x4
  40cb48:	8fc20018 	lw	v0,24(s8)
  40cb4c:	00000000 	nop
  40cb50:	00621021 	addu	v0,v1,v0
  40cb54:	90430000 	lbu	v1,0(v0)
  40cb58:	8fc2003c 	lw	v0,60(s8)
  40cb5c:	00000000 	nop
  40cb60:	1462002c 	bne	v1,v0,40cc14 <__alg_info_esp_add+0x1a0>
  40cb64:	00000000 	nop
  40cb68:	8fc20040 	lw	v0,64(s8)
  40cb6c:	00000000 	nop
  40cb70:	1040000e 	beqz	v0,40cbac <__alg_info_esp_add+0x138>
  40cb74:	00000000 	nop
  40cb78:	8fc20020 	lw	v0,32(s8)
  40cb7c:	00000000 	nop
  40cb80:	00021900 	sll	v1,v0,0x4
  40cb84:	8fc20018 	lw	v0,24(s8)
  40cb88:	00000000 	nop
  40cb8c:	00621021 	addu	v0,v1,v0
  40cb90:	8c430004 	lw	v1,4(v0)
  40cb94:	8fc20040 	lw	v0,64(s8)
  40cb98:	00000000 	nop
  40cb9c:	10620003 	beq	v1,v0,40cbac <__alg_info_esp_add+0x138>
  40cba0:	00000000 	nop
  40cba4:	1000001b 	b	40cc14 <__alg_info_esp_add+0x1a0>
  40cba8:	00000000 	nop
  40cbac:	8fc20020 	lw	v0,32(s8)
  40cbb0:	00000000 	nop
  40cbb4:	00021900 	sll	v1,v0,0x4
  40cbb8:	8fc20018 	lw	v0,24(s8)
  40cbbc:	00000000 	nop
  40cbc0:	00621021 	addu	v0,v1,v0
  40cbc4:	94430002 	lhu	v1,2(v0)
  40cbc8:	8fc20044 	lw	v0,68(s8)
  40cbcc:	00000000 	nop
  40cbd0:	14620010 	bne	v1,v0,40cc14 <__alg_info_esp_add+0x1a0>
  40cbd4:	00000000 	nop
  40cbd8:	8fc20048 	lw	v0,72(s8)
  40cbdc:	00000000 	nop
  40cbe0:	10400069 	beqz	v0,40cd88 <__alg_info_esp_add+0x314>
  40cbe4:	00000000 	nop
  40cbe8:	8fc20020 	lw	v0,32(s8)
  40cbec:	00000000 	nop
  40cbf0:	00021900 	sll	v1,v0,0x4
  40cbf4:	8fc20018 	lw	v0,24(s8)
  40cbf8:	00000000 	nop
  40cbfc:	00621021 	addu	v0,v1,v0
  40cc00:	8c430008 	lw	v1,8(v0)
  40cc04:	8fc20048 	lw	v0,72(s8)
  40cc08:	00000000 	nop
  40cc0c:	1062005e 	beq	v1,v0,40cd88 <__alg_info_esp_add+0x314>
  40cc10:	00000000 	nop
  40cc14:	8fc20020 	lw	v0,32(s8)
  40cc18:	00000000 	nop
  40cc1c:	24420001 	addiu	v0,v0,1
  40cc20:	afc20020 	sw	v0,32(s8)
  40cc24:	1000ffbd 	b	40cb1c <__alg_info_esp_add+0xa8>
  40cc28:	00000000 	nop
			return;
	esp_info[cnt].esp_ealg_id=ealg_id;
  40cc2c:	8fc2001c 	lw	v0,28(s8)
  40cc30:	00000000 	nop
  40cc34:	00021900 	sll	v1,v0,0x4
  40cc38:	8fc20018 	lw	v0,24(s8)
  40cc3c:	00000000 	nop
  40cc40:	00621821 	addu	v1,v1,v0
  40cc44:	93c2003f 	lbu	v0,63(s8)
  40cc48:	00000000 	nop
  40cc4c:	a0620000 	sb	v0,0(v1)
	esp_info[cnt].esp_ealg_keylen=ek_bits;
  40cc50:	8fc2001c 	lw	v0,28(s8)
  40cc54:	00000000 	nop
  40cc58:	00021900 	sll	v1,v0,0x4
  40cc5c:	8fc20018 	lw	v0,24(s8)
  40cc60:	00000000 	nop
  40cc64:	00621821 	addu	v1,v1,v0
  40cc68:	8fc20040 	lw	v0,64(s8)
  40cc6c:	00000000 	nop
  40cc70:	ac620004 	sw	v0,4(v1)
	esp_info[cnt].esp_aalg_id=aalg_id;
  40cc74:	8fc2001c 	lw	v0,28(s8)
  40cc78:	00000000 	nop
  40cc7c:	00021900 	sll	v1,v0,0x4
  40cc80:	8fc20018 	lw	v0,24(s8)
  40cc84:	00000000 	nop
  40cc88:	00621821 	addu	v1,v1,v0
  40cc8c:	97c20046 	lhu	v0,70(s8)
  40cc90:	00000000 	nop
  40cc94:	a4620002 	sh	v0,2(v1)
	esp_info[cnt].esp_aalg_keylen=ak_bits;
  40cc98:	8fc2001c 	lw	v0,28(s8)
  40cc9c:	00000000 	nop
  40cca0:	00021900 	sll	v1,v0,0x4
  40cca4:	8fc20018 	lw	v0,24(s8)
  40cca8:	00000000 	nop
  40ccac:	00621821 	addu	v1,v1,v0
  40ccb0:	8fc20048 	lw	v0,72(s8)
  40ccb4:	00000000 	nop
  40ccb8:	ac620008 	sw	v0,8(v1)
	/* sadb values */
	esp_info[cnt].encryptalg=ealg_id;
  40ccbc:	8fc2001c 	lw	v0,28(s8)
  40ccc0:	00000000 	nop
  40ccc4:	00021900 	sll	v1,v0,0x4
  40ccc8:	8fc20018 	lw	v0,24(s8)
  40cccc:	00000000 	nop
  40ccd0:	00621821 	addu	v1,v1,v0
  40ccd4:	93c2003f 	lbu	v0,63(s8)
  40ccd8:	00000000 	nop
  40ccdc:	a062000c 	sb	v0,12(v1)
	esp_info[cnt].authalg=alg_info_esp_aa2sadb(aalg_id);
  40cce0:	8fc2001c 	lw	v0,28(s8)
  40cce4:	00000000 	nop
  40cce8:	00021900 	sll	v1,v0,0x4
  40ccec:	8fc20018 	lw	v0,24(s8)
  40ccf0:	00000000 	nop
  40ccf4:	00628021 	addu	s0,v1,v0
  40ccf8:	8fc40044 	lw	a0,68(s8)
  40ccfc:	8f998724 	lw	t9,-30940(gp)
  40cd00:	00000000 	nop
  40cd04:	0320f809 	jalr	t9
  40cd08:	00000000 	nop
  40cd0c:	8fdc0010 	lw	gp,16(s8)
  40cd10:	a202000d 	sb	v0,13(s0)
	alg_info->alg_info_cnt++;
  40cd14:	8fc20038 	lw	v0,56(s8)
  40cd18:	00000000 	nop
  40cd1c:	8c420000 	lw	v0,0(v0)
  40cd20:	00000000 	nop
  40cd24:	24430001 	addiu	v1,v0,1
  40cd28:	8fc20038 	lw	v0,56(s8)
  40cd2c:	00000000 	nop
  40cd30:	ac430000 	sw	v1,0(v0)
	DBG(DBG_CRYPT, DBG_log("__alg_info_esp_add() "
  40cd34:	8f8284f8 	lw	v0,-31496(gp)
  40cd38:	00000000 	nop
  40cd3c:	8c420000 	lw	v0,0(v0)
  40cd40:	00000000 	nop
  40cd44:	30420002 	andi	v0,v0,0x2
  40cd48:	1040000f 	beqz	v0,40cd88 <__alg_info_esp_add+0x314>
  40cd4c:	00000000 	nop
  40cd50:	8f848020 	lw	a0,-32736(gp)
  40cd54:	00000000 	nop
  40cd58:	24844670 	addiu	a0,a0,18032
  40cd5c:	8fc5003c 	lw	a1,60(s8)
  40cd60:	8fc60044 	lw	a2,68(s8)
  40cd64:	8fc20038 	lw	v0,56(s8)
  40cd68:	00000000 	nop
  40cd6c:	8c470000 	lw	a3,0(v0)
  40cd70:	8f9983b8 	lw	t9,-31816(gp)
  40cd74:	00000000 	nop
  40cd78:	0320f809 	jalr	t9
  40cd7c:	00000000 	nop
  40cd80:	8fdc0010 	lw	gp,16(s8)
  40cd84:	00000000 	nop
				"ealg=%d aalg=%d cnt=%d",
				ealg_id, aalg_id, alg_info->alg_info_cnt));
}
  40cd88:	03c0e821 	move	sp,s8
  40cd8c:	8fbf0034 	lw	ra,52(sp)
  40cd90:	8fbe0030 	lw	s8,48(sp)
  40cd94:	8fb00028 	lw	s0,40(sp)
  40cd98:	27bd0038 	addiu	sp,sp,56
  40cd9c:	03e00008 	jr	ra
  40cda0:	00000000 	nop

0040cda4 <alg_info_esp_add>:
  40cda4:	3c1c0fc0 	lui	gp,0xfc0
  40cda8:	279cfbcc 	addiu	gp,gp,-1076
  40cdac:	0399e021 	addu	gp,gp,t9
  40cdb0:	27bdffd0 	addiu	sp,sp,-48
  40cdb4:	afbc0018 	sw	gp,24(sp)
  40cdb8:	afbf0028 	sw	ra,40(sp)
  40cdbc:	afbe0024 	sw	s8,36(sp)
  40cdc0:	afbc0020 	sw	gp,32(sp)
  40cdc4:	03a0f021 	move	s8,sp
  40cdc8:	afc40030 	sw	a0,48(s8)
  40cdcc:	afc50034 	sw	a1,52(s8)
  40cdd0:	afc60038 	sw	a2,56(s8)
  40cdd4:	afc7003c 	sw	a3,60(s8)

/*	
 *	Add ESP alg info _with_ logic (policy):
 */
static void
alg_info_esp_add (struct alg_info *alg_info, int ealg_id, int ek_bits, int aalg_id, int ak_bits)
{
	/*	Policy: default to 3DES */
	if (ealg_id==0)
  40cdd8:	8fc20034 	lw	v0,52(s8)
  40cddc:	00000000 	nop
  40cde0:	14400003 	bnez	v0,40cdf0 <alg_info_esp_add+0x4c>
  40cde4:	00000000 	nop
		ealg_id=ESP_3DES;
  40cde8:	24020003 	li	v0,3
  40cdec:	afc20034 	sw	v0,52(s8)
	if (ealg_id>0) {
  40cdf0:	8fc20034 	lw	v0,52(s8)
  40cdf4:	00000000 	nop
  40cdf8:	18400033 	blez	v0,40cec8 <alg_info_esp_add+0x124>
  40cdfc:	00000000 	nop
#ifndef NO_PLUTO
		if (aalg_id>0)
  40ce00:	8fc2003c 	lw	v0,60(s8)
  40ce04:	00000000 	nop
  40ce08:	18400011 	blez	v0,40ce50 <alg_info_esp_add+0xac>
  40ce0c:	00000000 	nop
#else
		/* Allow no auth for manual conns (from spi.c) */
		if (aalg_id>=0)
#endif
			__alg_info_esp_add((struct alg_info_esp *)alg_info,
  40ce10:	8fc20040 	lw	v0,64(s8)
  40ce14:	00000000 	nop
  40ce18:	afa20010 	sw	v0,16(sp)
  40ce1c:	8fc40030 	lw	a0,48(s8)
  40ce20:	8fc50034 	lw	a1,52(s8)
  40ce24:	8fc60038 	lw	a2,56(s8)
  40ce28:	8fc7003c 	lw	a3,60(s8)
  40ce2c:	8f998024 	lw	t9,-32732(gp)
  40ce30:	00000000 	nop
  40ce34:	2739ca74 	addiu	t9,t9,-13708
  40ce38:	00000000 	nop
  40ce3c:	0320f809 	jalr	t9
  40ce40:	00000000 	nop
  40ce44:	8fdc0018 	lw	gp,24(s8)
  40ce48:	1000001f 	b	40cec8 <alg_info_esp_add+0x124>
  40ce4c:	00000000 	nop
					ealg_id, ek_bits,
					aalg_id, ak_bits);
		else {
			/*	Policy: default to MD5 and SHA1 */
			__alg_info_esp_add((struct alg_info_esp *)alg_info,
  40ce50:	8fc20040 	lw	v0,64(s8)
  40ce54:	00000000 	nop
  40ce58:	afa20010 	sw	v0,16(sp)
  40ce5c:	8fc40030 	lw	a0,48(s8)
  40ce60:	8fc50034 	lw	a1,52(s8)
  40ce64:	8fc60038 	lw	a2,56(s8)
  40ce68:	24070001 	li	a3,1
  40ce6c:	8f998024 	lw	t9,-32732(gp)
  40ce70:	00000000 	nop
  40ce74:	2739ca74 	addiu	t9,t9,-13708
  40ce78:	00000000 	nop
  40ce7c:	0320f809 	jalr	t9
  40ce80:	00000000 	nop
  40ce84:	8fdc0018 	lw	gp,24(s8)
  40ce88:	00000000 	nop
					ealg_id, ek_bits, \
					AUTH_ALGORITHM_HMAC_MD5, ak_bits);
			__alg_info_esp_add((struct alg_info_esp *)alg_info,
  40ce8c:	8fc20040 	lw	v0,64(s8)
  40ce90:	00000000 	nop
  40ce94:	afa20010 	sw	v0,16(sp)
  40ce98:	8fc40030 	lw	a0,48(s8)
  40ce9c:	8fc50034 	lw	a1,52(s8)
  40cea0:	8fc60038 	lw	a2,56(s8)
  40cea4:	24070002 	li	a3,2
  40cea8:	8f998024 	lw	t9,-32732(gp)
  40ceac:	00000000 	nop
  40ceb0:	2739ca74 	addiu	t9,t9,-13708
  40ceb4:	00000000 	nop
  40ceb8:	0320f809 	jalr	t9
  40cebc:	00000000 	nop
  40cec0:	8fdc0018 	lw	gp,24(s8)
  40cec4:	00000000 	nop
					ealg_id, ek_bits, \
					AUTH_ALGORITHM_HMAC_SHA1, ak_bits);
		}
	}
}
  40cec8:	03c0e821 	move	sp,s8
  40cecc:	8fbf0028 	lw	ra,40(sp)
  40ced0:	8fbe0024 	lw	s8,36(sp)
  40ced4:	27bd0030 	addiu	sp,sp,48
  40ced8:	03e00008 	jr	ra
  40cedc:	00000000 	nop

0040cee0 <ealg_getbyname_ike>:
  40cee0:	3c1c0fc0 	lui	gp,0xfc0
  40cee4:	279cfa90 	addiu	gp,gp,-1392
  40cee8:	0399e021 	addu	gp,gp,t9
  40ceec:	27bdffc8 	addiu	sp,sp,-56
  40cef0:	afbc0018 	sw	gp,24(sp)
  40cef4:	afbf0030 	sw	ra,48(sp)
  40cef8:	afbe002c 	sw	s8,44(sp)
  40cefc:	afbc0028 	sw	gp,40(sp)
  40cf00:	03a0f021 	move	s8,sp
  40cf04:	afc40038 	sw	a0,56(s8)
  40cf08:	afc5003c 	sw	a1,60(s8)

#ifndef NO_PLUTO
/**************************************
 *
 *	IKE alg
 *
 *************************************/
/*
 * 	Search oakley_enc_names for a match, eg:
 * 		"3des_cbc" <=> "OAKLEY_3DES_CBC"
 */
static int
ealg_getbyname_ike(const char *const str, int len)
{
	int ret=-1;
  40cf0c:	2402ffff 	li	v0,-1
  40cf10:	afc20020 	sw	v0,32(s8)
	if (!str||!*str)
  40cf14:	8fc20038 	lw	v0,56(s8)
  40cf18:	00000000 	nop
  40cf1c:	10400030 	beqz	v0,40cfe0 <ealg_getbyname_ike+0x100>
  40cf20:	00000000 	nop
  40cf24:	8fc20038 	lw	v0,56(s8)
  40cf28:	00000000 	nop
  40cf2c:	80420000 	lb	v0,0(v0)
  40cf30:	00000000 	nop
  40cf34:	14400003 	bnez	v0,40cf44 <ealg_getbyname_ike+0x64>
  40cf38:	00000000 	nop
  40cf3c:	10000028 	b	40cfe0 <ealg_getbyname_ike+0x100>
  40cf40:	00000000 	nop
		goto out;
	ret=enum_search_prefix(&oakley_enc_names,"OAKLEY_",str,len);
  40cf44:	8f848a50 	lw	a0,-30128(gp)
  40cf48:	8f858020 	lw	a1,-32736(gp)
  40cf4c:	00000000 	nop
  40cf50:	24a5469c 	addiu	a1,a1,18076
  40cf54:	8fc60038 	lw	a2,56(s8)
  40cf58:	8fc7003c 	lw	a3,60(s8)
  40cf5c:	8f998024 	lw	t9,-32732(gp)
  40cf60:	00000000 	nop
  40cf64:	2739c1d0 	addiu	t9,t9,-15920
  40cf68:	00000000 	nop
  40cf6c:	0320f809 	jalr	t9
  40cf70:	00000000 	nop
  40cf74:	8fdc0018 	lw	gp,24(s8)
  40cf78:	afc20020 	sw	v0,32(s8)
	if (ret>=0) goto out;
  40cf7c:	8fc20020 	lw	v0,32(s8)
  40cf80:	00000000 	nop
  40cf84:	04400003 	bltz	v0,40cf94 <ealg_getbyname_ike+0xb4>
  40cf88:	00000000 	nop
  40cf8c:	10000014 	b	40cfe0 <ealg_getbyname_ike+0x100>
  40cf90:	00000000 	nop
	ret=enum_search_ppfix(&oakley_enc_names, "OAKLEY_", "_CBC", str, len);
  40cf94:	8fc2003c 	lw	v0,60(s8)
  40cf98:	00000000 	nop
  40cf9c:	afa20010 	sw	v0,16(sp)
  40cfa0:	8f848a50 	lw	a0,-30128(gp)
  40cfa4:	8f858020 	lw	a1,-32736(gp)
  40cfa8:	00000000 	nop
  40cfac:	24a5469c 	addiu	a1,a1,18076
  40cfb0:	8f868020 	lw	a2,-32736(gp)
  40cfb4:	00000000 	nop
  40cfb8:	24c646a4 	addiu	a2,a2,18084
  40cfbc:	8fc70038 	lw	a3,56(s8)
  40cfc0:	8f998024 	lw	t9,-32732(gp)
  40cfc4:	00000000 	nop
  40cfc8:	2739c3d4 	addiu	t9,t9,-15404
  40cfcc:	00000000 	nop
  40cfd0:	0320f809 	jalr	t9
  40cfd4:	00000000 	nop
  40cfd8:	8fdc0018 	lw	gp,24(s8)
  40cfdc:	afc20020 	sw	v0,32(s8)
out:
	return ret;
  40cfe0:	8fc20020 	lw	v0,32(s8)
  40cfe4:	00000000 	nop
}
  40cfe8:	03c0e821 	move	sp,s8
  40cfec:	8fbf0030 	lw	ra,48(sp)
  40cff0:	8fbe002c 	lw	s8,44(sp)
  40cff4:	27bd0038 	addiu	sp,sp,56
  40cff8:	03e00008 	jr	ra
  40cffc:	00000000 	nop

0040d000 <aalg_getbyname_ike>:
  40d000:	3c1c0fc0 	lui	gp,0xfc0
  40d004:	279cf970 	addiu	gp,gp,-1680
  40d008:	0399e021 	addu	gp,gp,t9
  40d00c:	27bdffd0 	addiu	sp,sp,-48
  40d010:	afbc0010 	sw	gp,16(sp)
  40d014:	afbf0028 	sw	ra,40(sp)
  40d018:	afbe0024 	sw	s8,36(sp)
  40d01c:	afbc0020 	sw	gp,32(sp)
  40d020:	03a0f021 	move	s8,sp
  40d024:	afc40030 	sw	a0,48(s8)
  40d028:	afc50034 	sw	a1,52(s8)
/*
 * 	Search  oakley_hash_names for a match, eg:
 * 		"md5" <=> "OAKLEY_MD5"
 */
static int
aalg_getbyname_ike(const char *const str, int len)
{
	int ret=-1;
  40d02c:	2402ffff 	li	v0,-1
  40d030:	afc20018 	sw	v0,24(s8)
	unsigned num;
	if (!str||!*str)
  40d034:	8fc20030 	lw	v0,48(s8)
  40d038:	00000000 	nop
  40d03c:	1040003a 	beqz	v0,40d128 <aalg_getbyname_ike+0x128>
  40d040:	00000000 	nop
  40d044:	8fc20030 	lw	v0,48(s8)
  40d048:	00000000 	nop
  40d04c:	80420000 	lb	v0,0(v0)
  40d050:	00000000 	nop
  40d054:	14400003 	bnez	v0,40d064 <aalg_getbyname_ike+0x64>
  40d058:	00000000 	nop
  40d05c:	10000032 	b	40d128 <aalg_getbyname_ike+0x128>
  40d060:	00000000 	nop
		goto out;
	ret=enum_search_prefix(&oakley_hash_names,"OAKLEY_",str,len);
  40d064:	8f8489a0 	lw	a0,-30304(gp)
  40d068:	8f858020 	lw	a1,-32736(gp)
  40d06c:	00000000 	nop
  40d070:	24a5469c 	addiu	a1,a1,18076
  40d074:	8fc60030 	lw	a2,48(s8)
  40d078:	8fc70034 	lw	a3,52(s8)
  40d07c:	8f998024 	lw	t9,-32732(gp)
  40d080:	00000000 	nop
  40d084:	2739c1d0 	addiu	t9,t9,-15920
  40d088:	00000000 	nop
  40d08c:	0320f809 	jalr	t9
  40d090:	00000000 	nop
  40d094:	8fdc0010 	lw	gp,16(s8)
  40d098:	afc20018 	sw	v0,24(s8)
	if (ret>=0) goto out;
  40d09c:	8fc20018 	lw	v0,24(s8)
  40d0a0:	00000000 	nop
  40d0a4:	04400003 	bltz	v0,40d0b4 <aalg_getbyname_ike+0xb4>
  40d0a8:	00000000 	nop
  40d0ac:	1000001e 	b	40d128 <aalg_getbyname_ike+0x128>
  40d0b0:	00000000 	nop
	sscanf(str, "id%d%n", &ret, &num);
  40d0b4:	8fc40030 	lw	a0,48(s8)
  40d0b8:	8f858020 	lw	a1,-32736(gp)
  40d0bc:	00000000 	nop
  40d0c0:	24a5461c 	addiu	a1,a1,17948
  40d0c4:	27c60018 	addiu	a2,s8,24
  40d0c8:	27c7001c 	addiu	a3,s8,28
  40d0cc:	8f99859c 	lw	t9,-31332(gp)
  40d0d0:	00000000 	nop
  40d0d4:	0320f809 	jalr	t9
  40d0d8:	00000000 	nop
  40d0dc:	8fdc0010 	lw	gp,16(s8)
  40d0e0:	00000000 	nop
	if (ret >=0 && num!=strlen(str))
  40d0e4:	8fc20018 	lw	v0,24(s8)
  40d0e8:	00000000 	nop
  40d0ec:	0440000e 	bltz	v0,40d128 <aalg_getbyname_ike+0x128>
  40d0f0:	00000000 	nop
  40d0f4:	8fc40030 	lw	a0,48(s8)
  40d0f8:	8f998188 	lw	t9,-32376(gp)
  40d0fc:	00000000 	nop
  40d100:	0320f809 	jalr	t9
  40d104:	00000000 	nop
  40d108:	8fdc0010 	lw	gp,16(s8)
  40d10c:	00401821 	move	v1,v0
  40d110:	8fc2001c 	lw	v0,28(s8)
  40d114:	00000000 	nop
  40d118:	10430003 	beq	v0,v1,40d128 <aalg_getbyname_ike+0x128>
  40d11c:	00000000 	nop
		ret=-1;
  40d120:	2402ffff 	li	v0,-1
  40d124:	afc20018 	sw	v0,24(s8)
out:
	return ret;
  40d128:	8fc20018 	lw	v0,24(s8)
  40d12c:	00000000 	nop
}
  40d130:	03c0e821 	move	sp,s8
  40d134:	8fbf0028 	lw	ra,40(sp)
  40d138:	8fbe0024 	lw	s8,36(sp)
  40d13c:	27bd0030 	addiu	sp,sp,48
  40d140:	03e00008 	jr	ra
  40d144:	00000000 	nop

0040d148 <modp_getbyname_ike>:
  40d148:	3c1c0fc0 	lui	gp,0xfc0
  40d14c:	279cf828 	addiu	gp,gp,-2008
  40d150:	0399e021 	addu	gp,gp,t9
  40d154:	27bdffc8 	addiu	sp,sp,-56
  40d158:	afbc0018 	sw	gp,24(sp)
  40d15c:	afbf0030 	sw	ra,48(sp)
  40d160:	afbe002c 	sw	s8,44(sp)
  40d164:	afbc0028 	sw	gp,40(sp)
  40d168:	03a0f021 	move	s8,sp
  40d16c:	afc40038 	sw	a0,56(s8)
  40d170:	afc5003c 	sw	a1,60(s8)
/*
 * 	Search oakley_group_names for a match, eg:
 * 		"modp1024" <=> "OAKLEY_GROUP_MODP1024"
 */
static int
modp_getbyname_ike(const char *const str, int len)
{
	int ret=-1;
  40d174:	2402ffff 	li	v0,-1
  40d178:	afc20020 	sw	v0,32(s8)
	if (!str||!*str)
  40d17c:	8fc20038 	lw	v0,56(s8)
  40d180:	00000000 	nop
  40d184:	10400030 	beqz	v0,40d248 <modp_getbyname_ike+0x100>
  40d188:	00000000 	nop
  40d18c:	8fc20038 	lw	v0,56(s8)
  40d190:	00000000 	nop
  40d194:	80420000 	lb	v0,0(v0)
  40d198:	00000000 	nop
  40d19c:	14400003 	bnez	v0,40d1ac <modp_getbyname_ike+0x64>
  40d1a0:	00000000 	nop
  40d1a4:	10000028 	b	40d248 <modp_getbyname_ike+0x100>
  40d1a8:	00000000 	nop
		goto out;
	ret=enum_search_prefix(&oakley_group_names,"OAKLEY_GROUP_",str,len);
  40d1ac:	8f848080 	lw	a0,-32640(gp)
  40d1b0:	8f858020 	lw	a1,-32736(gp)
  40d1b4:	00000000 	nop
  40d1b8:	24a54624 	addiu	a1,a1,17956
  40d1bc:	8fc60038 	lw	a2,56(s8)
  40d1c0:	8fc7003c 	lw	a3,60(s8)
  40d1c4:	8f998024 	lw	t9,-32732(gp)
  40d1c8:	00000000 	nop
  40d1cc:	2739c1d0 	addiu	t9,t9,-15920
  40d1d0:	00000000 	nop
  40d1d4:	0320f809 	jalr	t9
  40d1d8:	00000000 	nop
  40d1dc:	8fdc0018 	lw	gp,24(s8)
  40d1e0:	afc20020 	sw	v0,32(s8)
	if (ret>=0) goto out;
  40d1e4:	8fc20020 	lw	v0,32(s8)
  40d1e8:	00000000 	nop
  40d1ec:	04400003 	bltz	v0,40d1fc <modp_getbyname_ike+0xb4>
  40d1f0:	00000000 	nop
  40d1f4:	10000014 	b	40d248 <modp_getbyname_ike+0x100>
  40d1f8:	00000000 	nop
	ret=enum_search_ppfix(&oakley_group_names, "OAKLEY_GROUP_", " (extension)", str, len);
  40d1fc:	8fc2003c 	lw	v0,60(s8)
  40d200:	00000000 	nop
  40d204:	afa20010 	sw	v0,16(sp)
  40d208:	8f848080 	lw	a0,-32640(gp)
  40d20c:	8f858020 	lw	a1,-32736(gp)
  40d210:	00000000 	nop
  40d214:	24a54624 	addiu	a1,a1,17956
  40d218:	8f868020 	lw	a2,-32736(gp)
  40d21c:	00000000 	nop
  40d220:	24c64634 	addiu	a2,a2,17972
  40d224:	8fc70038 	lw	a3,56(s8)
  40d228:	8f998024 	lw	t9,-32732(gp)
  40d22c:	00000000 	nop
  40d230:	2739c3d4 	addiu	t9,t9,-15404
  40d234:	00000000 	nop
  40d238:	0320f809 	jalr	t9
  40d23c:	00000000 	nop
  40d240:	8fdc0018 	lw	gp,24(s8)
  40d244:	afc20020 	sw	v0,32(s8)
out:
	return ret;
  40d248:	8fc20020 	lw	v0,32(s8)
  40d24c:	00000000 	nop
}
  40d250:	03c0e821 	move	sp,s8
  40d254:	8fbf0030 	lw	ra,48(sp)
  40d258:	8fbe002c 	lw	s8,44(sp)
  40d25c:	27bd0038 	addiu	sp,sp,56
  40d260:	03e00008 	jr	ra
  40d264:	00000000 	nop

0040d268 <__alg_info_ike_add>:
  40d268:	3c1c0fc0 	lui	gp,0xfc0
  40d26c:	279cf708 	addiu	gp,gp,-2296
  40d270:	0399e021 	addu	gp,gp,t9
  40d274:	27bdffc0 	addiu	sp,sp,-64
  40d278:	afbc0018 	sw	gp,24(sp)
  40d27c:	afbf0038 	sw	ra,56(sp)
  40d280:	afbe0034 	sw	s8,52(sp)
  40d284:	afbc0030 	sw	gp,48(sp)
  40d288:	03a0f021 	move	s8,sp
  40d28c:	afc40040 	sw	a0,64(s8)
  40d290:	afc50044 	sw	a1,68(s8)
  40d294:	afc60048 	sw	a2,72(s8)
  40d298:	afc7004c 	sw	a3,76(s8)
static void
__alg_info_ike_add (struct alg_info_ike *alg_info, int ealg_id, unsigned ek_bits, int aalg_id, unsigned ak_bits, int modp_id)
{
	struct ike_info *ike_info=alg_info->ike;
  40d29c:	8fc20040 	lw	v0,64(s8)
  40d2a0:	00000000 	nop
  40d2a4:	24420010 	addiu	v0,v0,16
  40d2a8:	afc20020 	sw	v0,32(s8)
	unsigned cnt=alg_info->alg_info_cnt, i;
  40d2ac:	8fc20040 	lw	v0,64(s8)
  40d2b0:	00000000 	nop
  40d2b4:	8c420000 	lw	v0,0(v0)
  40d2b8:	00000000 	nop
  40d2bc:	afc20024 	sw	v0,36(s8)
	/* 	check for overflows 	*/
	passert(cnt < elemsof(alg_info->ike));
  40d2c0:	8fc20024 	lw	v0,36(s8)
  40d2c4:	00000000 	nop
  40d2c8:	2c420040 	sltiu	v0,v0,64
  40d2cc:	1440000e 	bnez	v0,40d308 <__alg_info_ike_add+0xa0>
  40d2d0:	00000000 	nop
  40d2d4:	8f848020 	lw	a0,-32736(gp)
  40d2d8:	00000000 	nop
  40d2dc:	248446ac 	addiu	a0,a0,18092
  40d2e0:	8f858020 	lw	a1,-32736(gp)
  40d2e4:	00000000 	nop
  40d2e8:	24a54664 	addiu	a1,a1,18020
  40d2ec:	24060147 	li	a2,327
  40d2f0:	8f998bb8 	lw	t9,-29768(gp)
  40d2f4:	00000000 	nop
  40d2f8:	0320f809 	jalr	t9
  40d2fc:	00000000 	nop
  40d300:	8fdc0018 	lw	gp,24(s8)
  40d304:	00000000 	nop
	/*	dont add duplicates	*/
	for (i=0;i<cnt;i++)
  40d308:	afc00028 	sw	zero,40(s8)
  40d30c:	8fc20028 	lw	v0,40(s8)
  40d310:	8fc30024 	lw	v1,36(s8)
  40d314:	00000000 	nop
  40d318:	0043102b 	sltu	v0,v0,v1
  40d31c:	14400003 	bnez	v0,40d32c <__alg_info_ike_add+0xc4>
  40d320:	00000000 	nop
  40d324:	1000004c 	b	40d458 <__alg_info_ike_add+0x1f0>
  40d328:	00000000 	nop
		if (	ike_info[i].ike_ealg==ealg_id &&
			(!ek_bits || ike_info[i].ike_eklen==ek_bits) &&
			ike_info[i].ike_halg==aalg_id &&
			(!ak_bits || ike_info[i].ike_hklen==ak_bits) &&
			ike_info[i].ike_modp==modp_id
		   )
  40d32c:	8fc20028 	lw	v0,40(s8)
  40d330:	00000000 	nop
  40d334:	00021900 	sll	v1,v0,0x4
  40d338:	8fc20020 	lw	v0,32(s8)
  40d33c:	00000000 	nop
  40d340:	00621021 	addu	v0,v1,v0
  40d344:	94430000 	lhu	v1,0(v0)
  40d348:	8fc20044 	lw	v0,68(s8)
  40d34c:	00000000 	nop
  40d350:	1462003b 	bne	v1,v0,40d440 <__alg_info_ike_add+0x1d8>
  40d354:	00000000 	nop
  40d358:	8fc20048 	lw	v0,72(s8)
  40d35c:	00000000 	nop
  40d360:	1040000e 	beqz	v0,40d39c <__alg_info_ike_add+0x134>
  40d364:	00000000 	nop
  40d368:	8fc20028 	lw	v0,40(s8)
  40d36c:	00000000 	nop
  40d370:	00021900 	sll	v1,v0,0x4
  40d374:	8fc20020 	lw	v0,32(s8)
  40d378:	00000000 	nop
  40d37c:	00621021 	addu	v0,v1,v0
  40d380:	8c430004 	lw	v1,4(v0)
  40d384:	8fc20048 	lw	v0,72(s8)
  40d388:	00000000 	nop
  40d38c:	10620003 	beq	v1,v0,40d39c <__alg_info_ike_add+0x134>
  40d390:	00000000 	nop
  40d394:	1000002a 	b	40d440 <__alg_info_ike_add+0x1d8>
  40d398:	00000000 	nop
  40d39c:	8fc20028 	lw	v0,40(s8)
  40d3a0:	00000000 	nop
  40d3a4:	00021900 	sll	v1,v0,0x4
  40d3a8:	8fc20020 	lw	v0,32(s8)
  40d3ac:	00000000 	nop
  40d3b0:	00621021 	addu	v0,v1,v0
  40d3b4:	90430002 	lbu	v1,2(v0)
  40d3b8:	8fc2004c 	lw	v0,76(s8)
  40d3bc:	00000000 	nop
  40d3c0:	1462001f 	bne	v1,v0,40d440 <__alg_info_ike_add+0x1d8>
  40d3c4:	00000000 	nop
  40d3c8:	8fc20050 	lw	v0,80(s8)
  40d3cc:	00000000 	nop
  40d3d0:	1040000e 	beqz	v0,40d40c <__alg_info_ike_add+0x1a4>
  40d3d4:	00000000 	nop
  40d3d8:	8fc20028 	lw	v0,40(s8)
  40d3dc:	00000000 	nop
  40d3e0:	00021900 	sll	v1,v0,0x4
  40d3e4:	8fc20020 	lw	v0,32(s8)
  40d3e8:	00000000 	nop
  40d3ec:	00621021 	addu	v0,v1,v0
  40d3f0:	8c430008 	lw	v1,8(v0)
  40d3f4:	8fc20050 	lw	v0,80(s8)
  40d3f8:	00000000 	nop
  40d3fc:	10620003 	beq	v1,v0,40d40c <__alg_info_ike_add+0x1a4>
  40d400:	00000000 	nop
  40d404:	1000000e 	b	40d440 <__alg_info_ike_add+0x1d8>
  40d408:	00000000 	nop
  40d40c:	8fc20028 	lw	v0,40(s8)
  40d410:	00000000 	nop
  40d414:	00021900 	sll	v1,v0,0x4
  40d418:	8fc20020 	lw	v0,32(s8)
  40d41c:	00000000 	nop
  40d420:	00621021 	addu	v0,v1,v0
  40d424:	9443000c 	lhu	v1,12(v0)
  40d428:	8fc20054 	lw	v0,84(s8)
  40d42c:	00000000 	nop
  40d430:	14620003 	bne	v1,v0,40d440 <__alg_info_ike_add+0x1d8>
  40d434:	00000000 	nop
			return;
  40d438:	10000054 	b	40d58c <__alg_info_ike_add+0x324>
  40d43c:	00000000 	nop
  40d440:	8fc20028 	lw	v0,40(s8)
  40d444:	00000000 	nop
  40d448:	24420001 	addiu	v0,v0,1
  40d44c:	afc20028 	sw	v0,40(s8)
  40d450:	1000ffae 	b	40d30c <__alg_info_ike_add+0xa4>
  40d454:	00000000 	nop
	ike_info[cnt].ike_ealg=ealg_id;
  40d458:	8fc20024 	lw	v0,36(s8)
  40d45c:	00000000 	nop
  40d460:	00021900 	sll	v1,v0,0x4
  40d464:	8fc20020 	lw	v0,32(s8)
  40d468:	00000000 	nop
  40d46c:	00621821 	addu	v1,v1,v0
  40d470:	97c20046 	lhu	v0,70(s8)
  40d474:	00000000 	nop
  40d478:	a4620000 	sh	v0,0(v1)
	ike_info[cnt].ike_eklen=ek_bits;
  40d47c:	8fc20024 	lw	v0,36(s8)
  40d480:	00000000 	nop
  40d484:	00021900 	sll	v1,v0,0x4
  40d488:	8fc20020 	lw	v0,32(s8)
  40d48c:	00000000 	nop
  40d490:	00621821 	addu	v1,v1,v0
  40d494:	8fc20048 	lw	v0,72(s8)
  40d498:	00000000 	nop
  40d49c:	ac620004 	sw	v0,4(v1)
	ike_info[cnt].ike_halg=aalg_id;
  40d4a0:	8fc20024 	lw	v0,36(s8)
  40d4a4:	00000000 	nop
  40d4a8:	00021900 	sll	v1,v0,0x4
  40d4ac:	8fc20020 	lw	v0,32(s8)
  40d4b0:	00000000 	nop
  40d4b4:	00621821 	addu	v1,v1,v0
  40d4b8:	93c2004f 	lbu	v0,79(s8)
  40d4bc:	00000000 	nop
  40d4c0:	a0620002 	sb	v0,2(v1)
	ike_info[cnt].ike_hklen=ak_bits;
  40d4c4:	8fc20024 	lw	v0,36(s8)
  40d4c8:	00000000 	nop
  40d4cc:	00021900 	sll	v1,v0,0x4
  40d4d0:	8fc20020 	lw	v0,32(s8)
  40d4d4:	00000000 	nop
  40d4d8:	00621821 	addu	v1,v1,v0
  40d4dc:	8fc20050 	lw	v0,80(s8)
  40d4e0:	00000000 	nop
  40d4e4:	ac620008 	sw	v0,8(v1)
	ike_info[cnt].ike_modp=modp_id;
  40d4e8:	8fc20024 	lw	v0,36(s8)
  40d4ec:	00000000 	nop
  40d4f0:	00021900 	sll	v1,v0,0x4
  40d4f4:	8fc20020 	lw	v0,32(s8)
  40d4f8:	00000000 	nop
  40d4fc:	00621821 	addu	v1,v1,v0
  40d500:	97c20056 	lhu	v0,86(s8)
  40d504:	00000000 	nop
  40d508:	a462000c 	sh	v0,12(v1)
	alg_info->alg_info_cnt++;
  40d50c:	8fc20040 	lw	v0,64(s8)
  40d510:	00000000 	nop
  40d514:	8c420000 	lw	v0,0(v0)
  40d518:	00000000 	nop
  40d51c:	24430001 	addiu	v1,v0,1
  40d520:	8fc20040 	lw	v0,64(s8)
  40d524:	00000000 	nop
  40d528:	ac430000 	sw	v1,0(v0)
	DBG(DBG_CRYPT, DBG_log("__alg_info_ike_add() "
  40d52c:	8f8284f8 	lw	v0,-31496(gp)
  40d530:	00000000 	nop
  40d534:	8c420000 	lw	v0,0(v0)
  40d538:	00000000 	nop
  40d53c:	30420002 	andi	v0,v0,0x2
  40d540:	10400012 	beqz	v0,40d58c <__alg_info_ike_add+0x324>
  40d544:	00000000 	nop
  40d548:	8fc20040 	lw	v0,64(s8)
  40d54c:	00000000 	nop
  40d550:	8c420000 	lw	v0,0(v0)
  40d554:	00000000 	nop
  40d558:	afa20010 	sw	v0,16(sp)
  40d55c:	8f848020 	lw	a0,-32736(gp)
  40d560:	00000000 	nop
  40d564:	248446cc 	addiu	a0,a0,18124
  40d568:	8fc50044 	lw	a1,68(s8)
  40d56c:	8fc6004c 	lw	a2,76(s8)
  40d570:	8fc70054 	lw	a3,84(s8)
  40d574:	8f9983b8 	lw	t9,-31816(gp)
  40d578:	00000000 	nop
  40d57c:	0320f809 	jalr	t9
  40d580:	00000000 	nop
  40d584:	8fdc0018 	lw	gp,24(s8)
  40d588:	00000000 	nop
				"ealg=%d aalg=%d modp_id=%d, cnt=%d",
				ealg_id, aalg_id, modp_id,
				alg_info->alg_info_cnt));
}
  40d58c:	03c0e821 	move	sp,s8
  40d590:	8fbf0038 	lw	ra,56(sp)
  40d594:	8fbe0034 	lw	s8,52(sp)
  40d598:	27bd0040 	addiu	sp,sp,64
  40d59c:	03e00008 	jr	ra
  40d5a0:	00000000 	nop

0040d5a4 <alg_info_ike_add>:
  40d5a4:	3c1c0fc0 	lui	gp,0xfc0
  40d5a8:	279cf3cc 	addiu	gp,gp,-3124
  40d5ac:	0399e021 	addu	gp,gp,t9
  40d5b0:	27bdffc8 	addiu	sp,sp,-56
  40d5b4:	afbc0018 	sw	gp,24(sp)
  40d5b8:	afbf0030 	sw	ra,48(sp)
  40d5bc:	afbe002c 	sw	s8,44(sp)
  40d5c0:	afbc0028 	sw	gp,40(sp)
  40d5c4:	03a0f021 	move	s8,sp
  40d5c8:	afc40038 	sw	a0,56(s8)
  40d5cc:	afc5003c 	sw	a1,60(s8)
  40d5d0:	afc60040 	sw	a2,64(s8)
  40d5d4:	afc70044 	sw	a3,68(s8)

/*	
 * 	Proposals will be built by looping over default_ike_groups array and
 * 	merging alg_info (ike_info) contents
 */

static int default_ike_groups[] = { 
	OAKLEY_GROUP_MODP1536,
	OAKLEY_GROUP_MODP1024,
	OAKLEY_GROUP_MODP768
};

/*	
 *	Add IKE alg info _with_ logic (policy):
 */
static void
alg_info_ike_add (struct alg_info *alg_info, int ealg_id, int ek_bits, int aalg_id, int ak_bits, int modp_id)
{
	int i=0, n_groups;
  40d5d8:	afc00020 	sw	zero,32(s8)
	n_groups=elemsof(default_ike_groups);
  40d5dc:	24020003 	li	v0,3
  40d5e0:	afc20024 	sw	v0,36(s8)
	/* if specified modp_id avoid loop over default_ike_groups */
	if (modp_id) {
  40d5e4:	8fc2004c 	lw	v0,76(s8)
  40d5e8:	00000000 	nop
  40d5ec:	10400004 	beqz	v0,40d600 <alg_info_ike_add+0x5c>
  40d5f0:	00000000 	nop
		n_groups=0;
  40d5f4:	afc00024 	sw	zero,36(s8)
		goto in_loop;
  40d5f8:	10000016 	b	40d654 <alg_info_ike_add+0xb0>
  40d5fc:	00000000 	nop
  40d600:	00000000 	nop
	}
	
	for (;n_groups--;i++) {
  40d604:	8fc20024 	lw	v0,36(s8)
  40d608:	00000000 	nop
  40d60c:	2442ffff 	addiu	v0,v0,-1
  40d610:	00401821 	move	v1,v0
  40d614:	afc30024 	sw	v1,36(s8)
  40d618:	2402ffff 	li	v0,-1
  40d61c:	14620003 	bne	v1,v0,40d62c <alg_info_ike_add+0x88>
  40d620:	00000000 	nop
  40d624:	10000056 	b	40d780 <alg_info_ike_add+0x1dc>
  40d628:	00000000 	nop
		modp_id=default_ike_groups[i];
  40d62c:	8fc20020 	lw	v0,32(s8)
  40d630:	00000000 	nop
  40d634:	00021080 	sll	v0,v0,0x2
  40d638:	8f818018 	lw	at,-32744(gp)
  40d63c:	00000000 	nop
  40d640:	24210020 	addiu	at,at,32
  40d644:	00221021 	addu	v0,at,v0
  40d648:	8c420000 	lw	v0,0(v0)
  40d64c:	00000000 	nop
  40d650:	afc2004c 	sw	v0,76(s8)
in_loop:
		/*	Policy: default to 3DES */
		if (ealg_id==0)
  40d654:	8fc2003c 	lw	v0,60(s8)
  40d658:	00000000 	nop
  40d65c:	14400003 	bnez	v0,40d66c <alg_info_ike_add+0xc8>
  40d660:	00000000 	nop
			ealg_id=OAKLEY_3DES_CBC;
  40d664:	24020005 	li	v0,5
  40d668:	afc2003c 	sw	v0,60(s8)
		if (ealg_id>0) {
  40d66c:	8fc2003c 	lw	v0,60(s8)
  40d670:	00000000 	nop
  40d674:	1840003c 	blez	v0,40d768 <alg_info_ike_add+0x1c4>
  40d678:	00000000 	nop
			if (aalg_id>0)
  40d67c:	8fc20044 	lw	v0,68(s8)
  40d680:	00000000 	nop
  40d684:	18400014 	blez	v0,40d6d8 <alg_info_ike_add+0x134>
  40d688:	00000000 	nop
				__alg_info_ike_add((struct alg_info_ike *)alg_info,
  40d68c:	8fc20048 	lw	v0,72(s8)
  40d690:	00000000 	nop
  40d694:	afa20010 	sw	v0,16(sp)
  40d698:	8fc2004c 	lw	v0,76(s8)
  40d69c:	00000000 	nop
  40d6a0:	afa20014 	sw	v0,20(sp)
  40d6a4:	8fc40038 	lw	a0,56(s8)
  40d6a8:	8fc5003c 	lw	a1,60(s8)
  40d6ac:	8fc60040 	lw	a2,64(s8)
  40d6b0:	8fc70044 	lw	a3,68(s8)
  40d6b4:	8f998024 	lw	t9,-32732(gp)
  40d6b8:	00000000 	nop
  40d6bc:	2739d268 	addiu	t9,t9,-11672
  40d6c0:	00000000 	nop
  40d6c4:	0320f809 	jalr	t9
  40d6c8:	00000000 	nop
  40d6cc:	8fdc0018 	lw	gp,24(s8)
  40d6d0:	10000025 	b	40d768 <alg_info_ike_add+0x1c4>
  40d6d4:	00000000 	nop
						ealg_id, ek_bits,
						aalg_id, ak_bits,
						modp_id);
			else {
				/*	Policy: default to MD5 and SHA */
				__alg_info_ike_add((struct alg_info_ike *)alg_info,
  40d6d8:	8fc20048 	lw	v0,72(s8)
  40d6dc:	00000000 	nop
  40d6e0:	afa20010 	sw	v0,16(sp)
  40d6e4:	8fc2004c 	lw	v0,76(s8)
  40d6e8:	00000000 	nop
  40d6ec:	afa20014 	sw	v0,20(sp)
  40d6f0:	8fc40038 	lw	a0,56(s8)
  40d6f4:	8fc5003c 	lw	a1,60(s8)
  40d6f8:	8fc60040 	lw	a2,64(s8)
  40d6fc:	24070001 	li	a3,1
  40d700:	8f998024 	lw	t9,-32732(gp)
  40d704:	00000000 	nop
  40d708:	2739d268 	addiu	t9,t9,-11672
  40d70c:	00000000 	nop
  40d710:	0320f809 	jalr	t9
  40d714:	00000000 	nop
  40d718:	8fdc0018 	lw	gp,24(s8)
  40d71c:	00000000 	nop
						ealg_id, ek_bits, \
						OAKLEY_MD5, ak_bits, modp_id);
				__alg_info_ike_add((struct alg_info_ike *)alg_info,
  40d720:	8fc20048 	lw	v0,72(s8)
  40d724:	00000000 	nop
  40d728:	afa20010 	sw	v0,16(sp)
  40d72c:	8fc2004c 	lw	v0,76(s8)
  40d730:	00000000 	nop
  40d734:	afa20014 	sw	v0,20(sp)
  40d738:	8fc40038 	lw	a0,56(s8)
  40d73c:	8fc5003c 	lw	a1,60(s8)
  40d740:	8fc60040 	lw	a2,64(s8)
  40d744:	24070002 	li	a3,2
  40d748:	8f998024 	lw	t9,-32732(gp)
  40d74c:	00000000 	nop
  40d750:	2739d268 	addiu	t9,t9,-11672
  40d754:	00000000 	nop
  40d758:	0320f809 	jalr	t9
  40d75c:	00000000 	nop
  40d760:	8fdc0018 	lw	gp,24(s8)
  40d764:	00000000 	nop
  40d768:	8fc20020 	lw	v0,32(s8)
  40d76c:	00000000 	nop
  40d770:	24420001 	addiu	v0,v0,1
  40d774:	afc20020 	sw	v0,32(s8)
  40d778:	1000ffa2 	b	40d604 <alg_info_ike_add+0x60>
  40d77c:	00000000 	nop
						ealg_id, ek_bits, \
						OAKLEY_SHA, ak_bits, modp_id);
			}
		}
	}
}
  40d780:	03c0e821 	move	sp,s8
  40d784:	8fbf0030 	lw	ra,48(sp)
  40d788:	8fbe002c 	lw	s8,44(sp)
  40d78c:	27bd0038 	addiu	sp,sp,56
  40d790:	03e00008 	jr	ra
  40d794:	00000000 	nop

0040d798 <parser_state_name_esp>:
  40d798:	3c1c0fc0 	lui	gp,0xfc0
  40d79c:	279cf1d8 	addiu	gp,gp,-3624
  40d7a0:	0399e021 	addu	gp,gp,t9
  40d7a4:	27bdfff0 	addiu	sp,sp,-16
  40d7a8:	afbc0000 	sw	gp,0(sp)
  40d7ac:	afbe000c 	sw	s8,12(sp)
  40d7b0:	afbc0008 	sw	gp,8(sp)
  40d7b4:	03a0f021 	move	s8,sp
  40d7b8:	afc40010 	sw	a0,16(s8)
#endif /* NO_PLUTO */

/*	
 *	Creates a new alg_info by parsing passed string		
 */
enum parser_state_esp {
	ST_INI,
	ST_EA,		/* encrypt algo   */
	ST_EA_END,	
	ST_EK,		/* enc. key length */
	ST_EK_END,
	ST_AA,		/* auth algo */
	ST_AA_END,
	ST_AK,		/* auth. key length */
	ST_AK_END,
	ST_MODP,	/* modp spec */
	ST_FLAG_STRICT,
	ST_END,
	ST_EOF,
	ST_ERR
};
static const char *parser_state_esp_names[] = {
	"ST_INI",
	"ST_EA",
	"ST_EA_END",	
	"ST_EK",
	"ST_EK_END",
	"ST_AA",
	"ST_AA_END",
	"ST_AK",
	"ST_AK_END",
	"ST_MOPD",
	"ST_FLAG_STRICT",
	"ST_END",
	"ST_EOF",
	"ST_ERR"
};
static const char *parser_state_name_esp(enum parser_state_esp state) {
	return parser_state_esp_names[state];
  40d7bc:	8fc20010 	lw	v0,16(s8)
  40d7c0:	00000000 	nop
  40d7c4:	00021080 	sll	v0,v0,0x2
  40d7c8:	8f818018 	lw	at,-32744(gp)
  40d7cc:	00000000 	nop
  40d7d0:	2421002c 	addiu	at,at,44
  40d7d4:	00221021 	addu	v0,at,v0
  40d7d8:	8c420000 	lw	v0,0(v0)
  40d7dc:	00000000 	nop
}
  40d7e0:	03c0e821 	move	sp,s8
  40d7e4:	8fbe000c 	lw	s8,12(sp)
  40d7e8:	27bd0010 	addiu	sp,sp,16
  40d7ec:	03e00008 	jr	ra
  40d7f0:	00000000 	nop

0040d7f4 <parser_machine>:
  40d7f4:	3c1c0fc0 	lui	gp,0xfc0
  40d7f8:	279cf17c 	addiu	gp,gp,-3716
  40d7fc:	0399e021 	addu	gp,gp,t9
  40d800:	27bdffc0 	addiu	sp,sp,-64
  40d804:	afbc0010 	sw	gp,16(sp)
  40d808:	afbf0038 	sw	ra,56(sp)
  40d80c:	afbe0034 	sw	s8,52(sp)
  40d810:	afbc0030 	sw	gp,48(sp)
  40d814:	03a0f021 	move	s8,sp
  40d818:	afc40040 	sw	a0,64(s8)
/* XXX:jjo to implement different parser for ESP and IKE */
struct parser_context {
	unsigned state, old_state;
	unsigned protoid;
	char ealg_buf[16];
	char aalg_buf[16];
	char modp_buf[16];
	int (*ealg_getbyname)(const char *const str, int len);
	int (*aalg_getbyname)(const char *const str, int len);
	int (*modp_getbyname)(const char *const str, int len);
	char *ealg_str;
	char *aalg_str;
	char *modp_str;
	int eklen;
	int aklen;
	int ch;
	const char *err;
};
static inline void parser_set_state(struct parser_context *p_ctx, enum parser_state_esp state) {
	if (state!=p_ctx->state) {
		p_ctx->old_state=p_ctx->state;
		p_ctx->state=state;
	}
	
}
static int 
parser_machine(struct parser_context *p_ctx)
{
	int ch=p_ctx->ch;
  40d81c:	8fc20040 	lw	v0,64(s8)
  40d820:	00000000 	nop
  40d824:	8c42005c 	lw	v0,92(v0)
  40d828:	00000000 	nop
  40d82c:	afc20018 	sw	v0,24(s8)
	/* special 'absolute' cases */
	p_ctx->err="No error.";
  40d830:	8f838020 	lw	v1,-32736(gp)
  40d834:	00000000 	nop
  40d838:	2463478c 	addiu	v1,v1,18316
  40d83c:	8fc20040 	lw	v0,64(s8)
  40d840:	00000000 	nop
  40d844:	ac430060 	sw	v1,96(v0)

	/* chars that end algo strings */
	switch(ch){
  40d848:	8fc20018 	lw	v0,24(s8)
  40d84c:	00000000 	nop
  40d850:	afc20028 	sw	v0,40(s8)
  40d854:	24020021 	li	v0,33
  40d858:	8fc30028 	lw	v1,40(s8)
  40d85c:	00000000 	nop
  40d860:	10620013 	beq	v1,v0,40d8b0 <parser_machine+0xbc>
  40d864:	00000000 	nop
  40d868:	8fc30028 	lw	v1,40(s8)
  40d86c:	00000000 	nop
  40d870:	28620022 	slti	v0,v1,34
  40d874:	10400007 	beqz	v0,40d894 <parser_machine+0xa0>
  40d878:	00000000 	nop
  40d87c:	8fc20028 	lw	v0,40(s8)
  40d880:	00000000 	nop
  40d884:	1040000a 	beqz	v0,40d8b0 <parser_machine+0xbc>
  40d888:	00000000 	nop
  40d88c:	10000058 	b	40d9f0 <parser_machine+0x1fc>
  40d890:	00000000 	nop
  40d894:	2402002c 	li	v0,44
  40d898:	8fc30028 	lw	v1,40(s8)
  40d89c:	00000000 	nop
  40d8a0:	10620003 	beq	v1,v0,40d8b0 <parser_machine+0xbc>
  40d8a4:	00000000 	nop
  40d8a8:	10000051 	b	40d9f0 <parser_machine+0x1fc>
  40d8ac:	00000000 	nop
		case 0:		/* end-of-string */
		case '!':	/* flag as strict algo list */
		case ',':	/* algo string separator */
			switch(p_ctx->state) {
  40d8b0:	8fc20040 	lw	v0,64(s8)
  40d8b4:	00000000 	nop
  40d8b8:	8c420000 	lw	v0,0(v0)
  40d8bc:	00000000 	nop
  40d8c0:	2442ffff 	addiu	v0,v0,-1
  40d8c4:	afc20024 	sw	v0,36(s8)
  40d8c8:	8fc30024 	lw	v1,36(s8)
  40d8cc:	00000000 	nop
  40d8d0:	2c62000a 	sltiu	v0,v1,10
  40d8d4:	1040003e 	beqz	v0,40d9d0 <parser_machine+0x1dc>
  40d8d8:	00000000 	nop
  40d8dc:	8fc20024 	lw	v0,36(s8)
  40d8e0:	00000000 	nop
  40d8e4:	00021080 	sll	v0,v0,0x2
  40d8e8:	8f818020 	lw	at,-32736(gp)
  40d8ec:	00000000 	nop
  40d8f0:	242149b8 	addiu	at,at,18872
  40d8f4:	00221021 	addu	v0,at,v0
  40d8f8:	8c420000 	lw	v0,0(v0)
  40d8fc:	00000000 	nop
  40d900:	005c1021 	addu	v0,v0,gp
  40d904:	00400008 	jr	v0
  40d908:	00000000 	nop
				case ST_EA:
				case ST_EK:
				case ST_AA:
				case ST_AK: 
				case ST_MODP:
				case ST_FLAG_STRICT:
					{
					enum parser_state_esp next_state=0;
  40d90c:	afc0001c 	sw	zero,28(s8)
					switch(ch) {
  40d910:	8fc20018 	lw	v0,24(s8)
  40d914:	00000000 	nop
  40d918:	afc20020 	sw	v0,32(s8)
  40d91c:	24020021 	li	v0,33
  40d920:	8fc30020 	lw	v1,32(s8)
  40d924:	00000000 	nop
  40d928:	1062001b 	beq	v1,v0,40d998 <parser_machine+0x1a4>
  40d92c:	00000000 	nop
  40d930:	8fc30020 	lw	v1,32(s8)
  40d934:	00000000 	nop
  40d938:	28620022 	slti	v0,v1,34
  40d93c:	10400007 	beqz	v0,40d95c <parser_machine+0x168>
  40d940:	00000000 	nop
  40d944:	8fc20020 	lw	v0,32(s8)
  40d948:	00000000 	nop
  40d94c:	1040000a 	beqz	v0,40d978 <parser_machine+0x184>
  40d950:	00000000 	nop
  40d954:	10000012 	b	40d9a0 <parser_machine+0x1ac>
  40d958:	00000000 	nop
  40d95c:	2402002c 	li	v0,44
  40d960:	8fc30020 	lw	v1,32(s8)
  40d964:	00000000 	nop
  40d968:	10620007 	beq	v1,v0,40d988 <parser_machine+0x194>
  40d96c:	00000000 	nop
  40d970:	1000000b 	b	40d9a0 <parser_machine+0x1ac>
  40d974:	00000000 	nop
						case 0:   next_state=ST_EOF;break;
  40d978:	2402000c 	li	v0,12
  40d97c:	afc2001c 	sw	v0,28(s8)
  40d980:	10000007 	b	40d9a0 <parser_machine+0x1ac>
  40d984:	00000000 	nop
						case ',': next_state=ST_END;break;
  40d988:	2402000b 	li	v0,11
  40d98c:	afc2001c 	sw	v0,28(s8)
  40d990:	10000003 	b	40d9a0 <parser_machine+0x1ac>
  40d994:	00000000 	nop
						case '!': next_state=ST_FLAG_STRICT;break;
  40d998:	2402000a 	li	v0,10
  40d99c:	afc2001c 	sw	v0,28(s8)
					}
					/* ch? parser_set_state(p_ctx, ST_END) : parser_set_state(p_ctx, ST_EOF) ; */
					parser_set_state(p_ctx, next_state);
  40d9a0:	8fc40040 	lw	a0,64(s8)
  40d9a4:	8fc5001c 	lw	a1,28(s8)
  40d9a8:	8f998024 	lw	t9,-32732(gp)
  40d9ac:	00000000 	nop
  40d9b0:	2739ff94 	addiu	t9,t9,-108
  40d9b4:	00000000 	nop
  40d9b8:	0320f809 	jalr	t9
  40d9bc:	00000000 	nop
  40d9c0:	8fdc0010 	lw	gp,16(s8)
  40d9c4:	00000000 	nop
					goto out;
  40d9c8:	10000216 	b	40e224 <parser_machine+0xa30>
  40d9cc:	00000000 	nop
				}
				default:
					p_ctx->err="String ended with invalid char";
  40d9d0:	8f838020 	lw	v1,-32736(gp)
  40d9d4:	00000000 	nop
  40d9d8:	24634798 	addiu	v1,v1,18328
  40d9dc:	8fc20040 	lw	v0,64(s8)
  40d9e0:	00000000 	nop
  40d9e4:	ac430060 	sw	v1,96(v0)
					goto err;
  40d9e8:	10000213 	b	40e238 <parser_machine+0xa44>
  40d9ec:	00000000 	nop
			}
	}
re_eval:
	switch(p_ctx->state) {
  40d9f0:	8fc20040 	lw	v0,64(s8)
  40d9f4:	00000000 	nop
  40d9f8:	afc2002c 	sw	v0,44(s8)
  40d9fc:	8fc3002c 	lw	v1,44(s8)
  40da00:	00000000 	nop
  40da04:	8c620000 	lw	v0,0(v1)
  40da08:	00000000 	nop
  40da0c:	2c42000e 	sltiu	v0,v0,14
  40da10:	10400204 	beqz	v0,40e224 <parser_machine+0xa30>
  40da14:	00000000 	nop
  40da18:	8fc3002c 	lw	v1,44(s8)
  40da1c:	00000000 	nop
  40da20:	8c620000 	lw	v0,0(v1)
  40da24:	00000000 	nop
  40da28:	00021080 	sll	v0,v0,0x2
  40da2c:	8f818020 	lw	at,-32736(gp)
  40da30:	00000000 	nop
  40da34:	242149e0 	addiu	at,at,18912
  40da38:	00221021 	addu	v0,at,v0
  40da3c:	8c420000 	lw	v0,0(v0)
  40da40:	00000000 	nop
  40da44:	005c1021 	addu	v0,v0,gp
  40da48:	00400008 	jr	v0
  40da4c:	00000000 	nop
		case ST_INI:
			if (isspace(ch))
  40da50:	8fc40018 	lw	a0,24(s8)
  40da54:	8f998914 	lw	t9,-30444(gp)
  40da58:	00000000 	nop
  40da5c:	0320f809 	jalr	t9
  40da60:	00000000 	nop
  40da64:	8fdc0010 	lw	gp,16(s8)
  40da68:	10400003 	beqz	v0,40da78 <parser_machine+0x284>
  40da6c:	00000000 	nop
				break;
  40da70:	100001ec 	b	40e224 <parser_machine+0xa30>
  40da74:	00000000 	nop
			if (isalnum(ch)) {
  40da78:	8fc40018 	lw	a0,24(s8)
  40da7c:	8f998480 	lw	t9,-31616(gp)
  40da80:	00000000 	nop
  40da84:	0320f809 	jalr	t9
  40da88:	00000000 	nop
  40da8c:	8fdc0010 	lw	gp,16(s8)
  40da90:	10400018 	beqz	v0,40daf4 <parser_machine+0x300>
  40da94:	00000000 	nop
				*(p_ctx->ealg_str++)=ch;
  40da98:	8fc20040 	lw	v0,64(s8)
  40da9c:	00000000 	nop
  40daa0:	24450048 	addiu	a1,v0,72
  40daa4:	8ca20000 	lw	v0,0(a1)
  40daa8:	00000000 	nop
  40daac:	00402021 	move	a0,v0
  40dab0:	93c3001b 	lbu	v1,27(s8)
  40dab4:	00000000 	nop
  40dab8:	a0830000 	sb	v1,0(a0)
  40dabc:	24420001 	addiu	v0,v0,1
  40dac0:	aca20000 	sw	v0,0(a1)
				parser_set_state(p_ctx, ST_EA);
  40dac4:	8fc40040 	lw	a0,64(s8)
  40dac8:	24050001 	li	a1,1
  40dacc:	8f998024 	lw	t9,-32732(gp)
  40dad0:	00000000 	nop
  40dad4:	2739ff94 	addiu	t9,t9,-108
  40dad8:	00000000 	nop
  40dadc:	0320f809 	jalr	t9
  40dae0:	00000000 	nop
  40dae4:	8fdc0010 	lw	gp,16(s8)
  40dae8:	00000000 	nop
				break;
  40daec:	100001cd 	b	40e224 <parser_machine+0xa30>
  40daf0:	00000000 	nop
			}
			p_ctx->err="No alphanum. char initially found";
  40daf4:	8f838020 	lw	v1,-32736(gp)
  40daf8:	00000000 	nop
  40dafc:	246347b8 	addiu	v1,v1,18360
  40db00:	8fc20040 	lw	v0,64(s8)
  40db04:	00000000 	nop
  40db08:	ac430060 	sw	v1,96(v0)
			goto err;
  40db0c:	100001ca 	b	40e238 <parser_machine+0xa44>
  40db10:	00000000 	nop
		case ST_EA:
			if (isalpha(ch) || ch == '_') {
  40db14:	8fc40018 	lw	a0,24(s8)
  40db18:	8f998590 	lw	t9,-31344(gp)
  40db1c:	00000000 	nop
  40db20:	0320f809 	jalr	t9
  40db24:	00000000 	nop
  40db28:	8fdc0010 	lw	gp,16(s8)
  40db2c:	14400007 	bnez	v0,40db4c <parser_machine+0x358>
  40db30:	00000000 	nop
  40db34:	8fc30018 	lw	v1,24(s8)
  40db38:	2402005f 	li	v0,95
  40db3c:	10620003 	beq	v1,v0,40db4c <parser_machine+0x358>
  40db40:	00000000 	nop
  40db44:	1000000e 	b	40db80 <parser_machine+0x38c>
  40db48:	00000000 	nop
				*(p_ctx->ealg_str++)=ch;
  40db4c:	8fc20040 	lw	v0,64(s8)
  40db50:	00000000 	nop
  40db54:	24450048 	addiu	a1,v0,72
  40db58:	8ca20000 	lw	v0,0(a1)
  40db5c:	00000000 	nop
  40db60:	00402021 	move	a0,v0
  40db64:	93c3001b 	lbu	v1,27(s8)
  40db68:	00000000 	nop
  40db6c:	a0830000 	sb	v1,0(a0)
  40db70:	24420001 	addiu	v0,v0,1
  40db74:	aca20000 	sw	v0,0(a1)
				break;
  40db78:	100001aa 	b	40e224 <parser_machine+0xa30>
  40db7c:	00000000 	nop
			}
			if (isdigit(ch)) {
  40db80:	8fc40018 	lw	a0,24(s8)
  40db84:	8f9982c0 	lw	t9,-32064(gp)
  40db88:	00000000 	nop
  40db8c:	0320f809 	jalr	t9
  40db90:	00000000 	nop
  40db94:	8fdc0010 	lw	gp,16(s8)
  40db98:	10400012 	beqz	v0,40dbe4 <parser_machine+0x3f0>
  40db9c:	00000000 	nop
				/* bravely switch to enc keylen */
				*(p_ctx->ealg_str)=0;
  40dba0:	8fc20040 	lw	v0,64(s8)
  40dba4:	00000000 	nop
  40dba8:	8c420048 	lw	v0,72(v0)
  40dbac:	00000000 	nop
  40dbb0:	a0400000 	sb	zero,0(v0)
				parser_set_state(p_ctx, ST_EK);
  40dbb4:	8fc40040 	lw	a0,64(s8)
  40dbb8:	24050003 	li	a1,3
  40dbbc:	8f998024 	lw	t9,-32732(gp)
  40dbc0:	00000000 	nop
  40dbc4:	2739ff94 	addiu	t9,t9,-108
  40dbc8:	00000000 	nop
  40dbcc:	0320f809 	jalr	t9
  40dbd0:	00000000 	nop
  40dbd4:	8fdc0010 	lw	gp,16(s8)
  40dbd8:	00000000 	nop
				goto re_eval;
  40dbdc:	1000ff84 	b	40d9f0 <parser_machine+0x1fc>
  40dbe0:	00000000 	nop
			}
			if (ch=='-') {
  40dbe4:	8fc30018 	lw	v1,24(s8)
  40dbe8:	2402002d 	li	v0,45
  40dbec:	14620012 	bne	v1,v0,40dc38 <parser_machine+0x444>
  40dbf0:	00000000 	nop
				*(p_ctx->ealg_str)=0;
  40dbf4:	8fc20040 	lw	v0,64(s8)
  40dbf8:	00000000 	nop
  40dbfc:	8c420048 	lw	v0,72(v0)
  40dc00:	00000000 	nop
  40dc04:	a0400000 	sb	zero,0(v0)
				parser_set_state(p_ctx, ST_EA_END);
  40dc08:	8fc40040 	lw	a0,64(s8)
  40dc0c:	24050002 	li	a1,2
  40dc10:	8f998024 	lw	t9,-32732(gp)
  40dc14:	00000000 	nop
  40dc18:	2739ff94 	addiu	t9,t9,-108
  40dc1c:	00000000 	nop
  40dc20:	0320f809 	jalr	t9
  40dc24:	00000000 	nop
  40dc28:	8fdc0010 	lw	gp,16(s8)
  40dc2c:	00000000 	nop
				break;
  40dc30:	1000017c 	b	40e224 <parser_machine+0xa30>
  40dc34:	00000000 	nop
			}
			p_ctx->err="No valid char found after enc alg string";
  40dc38:	8f838020 	lw	v1,-32736(gp)
  40dc3c:	00000000 	nop
  40dc40:	246347dc 	addiu	v1,v1,18396
  40dc44:	8fc20040 	lw	v0,64(s8)
  40dc48:	00000000 	nop
  40dc4c:	ac430060 	sw	v1,96(v0)
			goto err;
  40dc50:	10000179 	b	40e238 <parser_machine+0xa44>
  40dc54:	00000000 	nop
		case ST_EA_END:
			if (isdigit(ch)) {
  40dc58:	8fc40018 	lw	a0,24(s8)
  40dc5c:	8f9982c0 	lw	t9,-32064(gp)
  40dc60:	00000000 	nop
  40dc64:	0320f809 	jalr	t9
  40dc68:	00000000 	nop
  40dc6c:	8fdc0010 	lw	gp,16(s8)
  40dc70:	1040000d 	beqz	v0,40dca8 <parser_machine+0x4b4>
  40dc74:	00000000 	nop
				/* bravely switch to enc keylen */
				parser_set_state(p_ctx, ST_EK);
  40dc78:	8fc40040 	lw	a0,64(s8)
  40dc7c:	24050003 	li	a1,3
  40dc80:	8f998024 	lw	t9,-32732(gp)
  40dc84:	00000000 	nop
  40dc88:	2739ff94 	addiu	t9,t9,-108
  40dc8c:	00000000 	nop
  40dc90:	0320f809 	jalr	t9
  40dc94:	00000000 	nop
  40dc98:	8fdc0010 	lw	gp,16(s8)
  40dc9c:	00000000 	nop
				goto re_eval;
  40dca0:	1000ff53 	b	40d9f0 <parser_machine+0x1fc>
  40dca4:	00000000 	nop
			}
			if (isalpha(ch)) {
  40dca8:	8fc40018 	lw	a0,24(s8)
  40dcac:	8f998590 	lw	t9,-31344(gp)
  40dcb0:	00000000 	nop
  40dcb4:	0320f809 	jalr	t9
  40dcb8:	00000000 	nop
  40dcbc:	8fdc0010 	lw	gp,16(s8)
  40dcc0:	1040000d 	beqz	v0,40dcf8 <parser_machine+0x504>
  40dcc4:	00000000 	nop
				parser_set_state(p_ctx, ST_AA);
  40dcc8:	8fc40040 	lw	a0,64(s8)
  40dccc:	24050005 	li	a1,5
  40dcd0:	8f998024 	lw	t9,-32732(gp)
  40dcd4:	00000000 	nop
  40dcd8:	2739ff94 	addiu	t9,t9,-108
  40dcdc:	00000000 	nop
  40dce0:	0320f809 	jalr	t9
  40dce4:	00000000 	nop
  40dce8:	8fdc0010 	lw	gp,16(s8)
  40dcec:	00000000 	nop
				goto re_eval;
  40dcf0:	1000ff3f 	b	40d9f0 <parser_machine+0x1fc>
  40dcf4:	00000000 	nop
			}
			p_ctx->err="No alphanum char found after enc alg separator";
  40dcf8:	8f838020 	lw	v1,-32736(gp)
  40dcfc:	00000000 	nop
  40dd00:	24634808 	addiu	v1,v1,18440
  40dd04:	8fc20040 	lw	v0,64(s8)
  40dd08:	00000000 	nop
  40dd0c:	ac430060 	sw	v1,96(v0)
			goto err;
  40dd10:	10000149 	b	40e238 <parser_machine+0xa44>
  40dd14:	00000000 	nop
		case ST_EK:
			if (ch=='-') {
  40dd18:	8fc30018 	lw	v1,24(s8)
  40dd1c:	2402002d 	li	v0,45
  40dd20:	1462000d 	bne	v1,v0,40dd58 <parser_machine+0x564>
  40dd24:	00000000 	nop
				parser_set_state(p_ctx, ST_EK_END);
  40dd28:	8fc40040 	lw	a0,64(s8)
  40dd2c:	24050004 	li	a1,4
  40dd30:	8f998024 	lw	t9,-32732(gp)
  40dd34:	00000000 	nop
  40dd38:	2739ff94 	addiu	t9,t9,-108
  40dd3c:	00000000 	nop
  40dd40:	0320f809 	jalr	t9
  40dd44:	00000000 	nop
  40dd48:	8fdc0010 	lw	gp,16(s8)
  40dd4c:	00000000 	nop
				break;
  40dd50:	10000134 	b	40e224 <parser_machine+0xa30>
  40dd54:	00000000 	nop
			}
			if (isdigit(ch)) {
  40dd58:	8fc40018 	lw	a0,24(s8)
  40dd5c:	8f9982c0 	lw	t9,-32064(gp)
  40dd60:	00000000 	nop
  40dd64:	0320f809 	jalr	t9
  40dd68:	00000000 	nop
  40dd6c:	8fdc0010 	lw	gp,16(s8)
  40dd70:	10400012 	beqz	v0,40ddbc <parser_machine+0x5c8>
  40dd74:	00000000 	nop
				p_ctx->eklen=p_ctx->eklen*10+ch-'0';
  40dd78:	8fc20040 	lw	v0,64(s8)
  40dd7c:	00000000 	nop
  40dd80:	8c430054 	lw	v1,84(v0)
  40dd84:	00000000 	nop
  40dd88:	00601021 	move	v0,v1
  40dd8c:	00021080 	sll	v0,v0,0x2
  40dd90:	00431021 	addu	v0,v0,v1
  40dd94:	00021840 	sll	v1,v0,0x1
  40dd98:	8fc20018 	lw	v0,24(s8)
  40dd9c:	00000000 	nop
  40dda0:	00621021 	addu	v0,v1,v0
  40dda4:	2443ffd0 	addiu	v1,v0,-48
  40dda8:	8fc20040 	lw	v0,64(s8)
  40ddac:	00000000 	nop
  40ddb0:	ac430054 	sw	v1,84(v0)
				break;
  40ddb4:	1000011b 	b	40e224 <parser_machine+0xa30>
  40ddb8:	00000000 	nop
			}
			p_ctx->err="Non digit or valid separator found while reading enc keylen";
  40ddbc:	8f838020 	lw	v1,-32736(gp)
  40ddc0:	00000000 	nop
  40ddc4:	24634838 	addiu	v1,v1,18488
  40ddc8:	8fc20040 	lw	v0,64(s8)
  40ddcc:	00000000 	nop
  40ddd0:	ac430060 	sw	v1,96(v0)
			goto err;
  40ddd4:	10000118 	b	40e238 <parser_machine+0xa44>
  40ddd8:	00000000 	nop
		case ST_EK_END:
			if (isalpha(ch)) {
  40dddc:	8fc40018 	lw	a0,24(s8)
  40dde0:	8f998590 	lw	t9,-31344(gp)
  40dde4:	00000000 	nop
  40dde8:	0320f809 	jalr	t9
  40ddec:	00000000 	nop
  40ddf0:	8fdc0010 	lw	gp,16(s8)
  40ddf4:	1040000d 	beqz	v0,40de2c <parser_machine+0x638>
  40ddf8:	00000000 	nop
				parser_set_state(p_ctx, ST_AA);
  40ddfc:	8fc40040 	lw	a0,64(s8)
  40de00:	24050005 	li	a1,5
  40de04:	8f998024 	lw	t9,-32732(gp)
  40de08:	00000000 	nop
  40de0c:	2739ff94 	addiu	t9,t9,-108
  40de10:	00000000 	nop
  40de14:	0320f809 	jalr	t9
  40de18:	00000000 	nop
  40de1c:	8fdc0010 	lw	gp,16(s8)
  40de20:	00000000 	nop
				goto re_eval;
  40de24:	1000fef2 	b	40d9f0 <parser_machine+0x1fc>
  40de28:	00000000 	nop
			}
			p_ctx->err="Non alpha char found after enc keylen end separator";
  40de2c:	8f838020 	lw	v1,-32736(gp)
  40de30:	00000000 	nop
  40de34:	24634874 	addiu	v1,v1,18548
  40de38:	8fc20040 	lw	v0,64(s8)
  40de3c:	00000000 	nop
  40de40:	ac430060 	sw	v1,96(v0)
			goto err;
  40de44:	100000fc 	b	40e238 <parser_machine+0xa44>
  40de48:	00000000 	nop
		case ST_AA:
			if (ch=='-') {
  40de4c:	8fc30018 	lw	v1,24(s8)
  40de50:	2402002d 	li	v0,45
  40de54:	14620016 	bne	v1,v0,40deb0 <parser_machine+0x6bc>
  40de58:	00000000 	nop
				*(p_ctx->aalg_str++)=0;
  40de5c:	8fc20040 	lw	v0,64(s8)
  40de60:	00000000 	nop
  40de64:	2444004c 	addiu	a0,v0,76
  40de68:	8c820000 	lw	v0,0(a0)
  40de6c:	00000000 	nop
  40de70:	00401821 	move	v1,v0
  40de74:	a0600000 	sb	zero,0(v1)
  40de78:	24420001 	addiu	v0,v0,1
  40de7c:	ac820000 	sw	v0,0(a0)
				parser_set_state(p_ctx, ST_AA_END);
  40de80:	8fc40040 	lw	a0,64(s8)
  40de84:	24050006 	li	a1,6
  40de88:	8f998024 	lw	t9,-32732(gp)
  40de8c:	00000000 	nop
  40de90:	2739ff94 	addiu	t9,t9,-108
  40de94:	00000000 	nop
  40de98:	0320f809 	jalr	t9
  40de9c:	00000000 	nop
  40dea0:	8fdc0010 	lw	gp,16(s8)
  40dea4:	00000000 	nop
				break;
  40dea8:	100000de 	b	40e224 <parser_machine+0xa30>
  40deac:	00000000 	nop
			}
			if (isalnum(ch) || ch=='_') {
  40deb0:	8fc40018 	lw	a0,24(s8)
  40deb4:	8f998480 	lw	t9,-31616(gp)
  40deb8:	00000000 	nop
  40debc:	0320f809 	jalr	t9
  40dec0:	00000000 	nop
  40dec4:	8fdc0010 	lw	gp,16(s8)
  40dec8:	1440000d 	bnez	v0,40df00 <parser_machine+0x70c>
  40decc:	00000000 	nop
  40ded0:	8fc30018 	lw	v1,24(s8)
  40ded4:	2402005f 	li	v0,95
  40ded8:	10620009 	beq	v1,v0,40df00 <parser_machine+0x70c>
  40dedc:	00000000 	nop
				*(p_ctx->aalg_str++)=ch;
				break;
			}
			p_ctx->err="Non alphanum or valid separator found in auth string";
  40dee0:	8f838020 	lw	v1,-32736(gp)
  40dee4:	00000000 	nop
  40dee8:	246348a8 	addiu	v1,v1,18600
  40deec:	8fc20040 	lw	v0,64(s8)
  40def0:	00000000 	nop
  40def4:	ac430060 	sw	v1,96(v0)
			goto err;
  40def8:	100000cf 	b	40e238 <parser_machine+0xa44>
  40defc:	00000000 	nop
  40df00:	8fc20040 	lw	v0,64(s8)
  40df04:	00000000 	nop
  40df08:	2445004c 	addiu	a1,v0,76
  40df0c:	8ca20000 	lw	v0,0(a1)
  40df10:	00000000 	nop
  40df14:	00402021 	move	a0,v0
  40df18:	93c3001b 	lbu	v1,27(s8)
  40df1c:	00000000 	nop
  40df20:	a0830000 	sb	v1,0(a0)
  40df24:	24420001 	addiu	v0,v0,1
  40df28:	aca20000 	sw	v0,0(a1)
  40df2c:	100000bd 	b	40e224 <parser_machine+0xa30>
  40df30:	00000000 	nop
		case ST_AA_END:
			if (isdigit(ch)) {
  40df34:	8fc40018 	lw	a0,24(s8)
  40df38:	8f9982c0 	lw	t9,-32064(gp)
  40df3c:	00000000 	nop
  40df40:	0320f809 	jalr	t9
  40df44:	00000000 	nop
  40df48:	8fdc0010 	lw	gp,16(s8)
  40df4c:	1040000d 	beqz	v0,40df84 <parser_machine+0x790>
  40df50:	00000000 	nop
				parser_set_state(p_ctx, ST_AK);
  40df54:	8fc40040 	lw	a0,64(s8)
  40df58:	24050007 	li	a1,7
  40df5c:	8f998024 	lw	t9,-32732(gp)
  40df60:	00000000 	nop
  40df64:	2739ff94 	addiu	t9,t9,-108
  40df68:	00000000 	nop
  40df6c:	0320f809 	jalr	t9
  40df70:	00000000 	nop
  40df74:	8fdc0010 	lw	gp,16(s8)
  40df78:	00000000 	nop
				goto re_eval;
  40df7c:	1000fe9c 	b	40d9f0 <parser_machine+0x1fc>
  40df80:	00000000 	nop
			}
			/* Only allow modpXXXX string if we have
			 * a modp_getbyname method
			 */
			if ((p_ctx->modp_getbyname) && isalpha(ch)) {
  40df84:	8fc20040 	lw	v0,64(s8)
  40df88:	00000000 	nop
  40df8c:	8c420044 	lw	v0,68(v0)
  40df90:	00000000 	nop
  40df94:	10400015 	beqz	v0,40dfec <parser_machine+0x7f8>
  40df98:	00000000 	nop
  40df9c:	8fc40018 	lw	a0,24(s8)
  40dfa0:	8f998590 	lw	t9,-31344(gp)
  40dfa4:	00000000 	nop
  40dfa8:	0320f809 	jalr	t9
  40dfac:	00000000 	nop
  40dfb0:	8fdc0010 	lw	gp,16(s8)
  40dfb4:	1040000d 	beqz	v0,40dfec <parser_machine+0x7f8>
  40dfb8:	00000000 	nop
				parser_set_state(p_ctx, ST_MODP);
  40dfbc:	8fc40040 	lw	a0,64(s8)
  40dfc0:	24050009 	li	a1,9
  40dfc4:	8f998024 	lw	t9,-32732(gp)
  40dfc8:	00000000 	nop
  40dfcc:	2739ff94 	addiu	t9,t9,-108
  40dfd0:	00000000 	nop
  40dfd4:	0320f809 	jalr	t9
  40dfd8:	00000000 	nop
  40dfdc:	8fdc0010 	lw	gp,16(s8)
  40dfe0:	00000000 	nop
				goto re_eval;
  40dfe4:	1000fe82 	b	40d9f0 <parser_machine+0x1fc>
  40dfe8:	00000000 	nop
			}
			p_ctx->err="Non initial digit found for auth keylen";
  40dfec:	8f838020 	lw	v1,-32736(gp)
  40dff0:	00000000 	nop
  40dff4:	246348e0 	addiu	v1,v1,18656
  40dff8:	8fc20040 	lw	v0,64(s8)
  40dffc:	00000000 	nop
  40e000:	ac430060 	sw	v1,96(v0)
			goto err;
  40e004:	1000008c 	b	40e238 <parser_machine+0xa44>
  40e008:	00000000 	nop
		case ST_AK:
			if (ch=='-') {
  40e00c:	8fc30018 	lw	v1,24(s8)
  40e010:	2402002d 	li	v0,45
  40e014:	1462000d 	bne	v1,v0,40e04c <parser_machine+0x858>
  40e018:	00000000 	nop
				parser_set_state(p_ctx, ST_AK_END);
  40e01c:	8fc40040 	lw	a0,64(s8)
  40e020:	24050008 	li	a1,8
  40e024:	8f998024 	lw	t9,-32732(gp)
  40e028:	00000000 	nop
  40e02c:	2739ff94 	addiu	t9,t9,-108
  40e030:	00000000 	nop
  40e034:	0320f809 	jalr	t9
  40e038:	00000000 	nop
  40e03c:	8fdc0010 	lw	gp,16(s8)
  40e040:	00000000 	nop
				break;
  40e044:	10000077 	b	40e224 <parser_machine+0xa30>
  40e048:	00000000 	nop
			}
			if (isdigit(ch)) {
  40e04c:	8fc40018 	lw	a0,24(s8)
  40e050:	8f9982c0 	lw	t9,-32064(gp)
  40e054:	00000000 	nop
  40e058:	0320f809 	jalr	t9
  40e05c:	00000000 	nop
  40e060:	8fdc0010 	lw	gp,16(s8)
  40e064:	10400012 	beqz	v0,40e0b0 <parser_machine+0x8bc>
  40e068:	00000000 	nop
				p_ctx->aklen=p_ctx->aklen*10+ch-'0';
  40e06c:	8fc20040 	lw	v0,64(s8)
  40e070:	00000000 	nop
  40e074:	8c430058 	lw	v1,88(v0)
  40e078:	00000000 	nop
  40e07c:	00601021 	move	v0,v1
  40e080:	00021080 	sll	v0,v0,0x2
  40e084:	00431021 	addu	v0,v0,v1
  40e088:	00021840 	sll	v1,v0,0x1
  40e08c:	8fc20018 	lw	v0,24(s8)
  40e090:	00000000 	nop
  40e094:	00621021 	addu	v0,v1,v0
  40e098:	2443ffd0 	addiu	v1,v0,-48
  40e09c:	8fc20040 	lw	v0,64(s8)
  40e0a0:	00000000 	nop
  40e0a4:	ac430058 	sw	v1,88(v0)
				break;
  40e0a8:	1000005e 	b	40e224 <parser_machine+0xa30>
  40e0ac:	00000000 	nop
			}
			p_ctx->err="Non digit found for auth keylen";
  40e0b0:	8f838020 	lw	v1,-32736(gp)
  40e0b4:	00000000 	nop
  40e0b8:	24634908 	addiu	v1,v1,18696
  40e0bc:	8fc20040 	lw	v0,64(s8)
  40e0c0:	00000000 	nop
  40e0c4:	ac430060 	sw	v1,96(v0)
			goto err;
  40e0c8:	1000005b 	b	40e238 <parser_machine+0xa44>
  40e0cc:	00000000 	nop
		case ST_AK_END:
			/* Only allow modpXXXX string if we have
			 * a modp_getbyname method
			 */
			if ((p_ctx->modp_getbyname) && isalpha(ch)) {
  40e0d0:	8fc20040 	lw	v0,64(s8)
  40e0d4:	00000000 	nop
  40e0d8:	8c420044 	lw	v0,68(v0)
  40e0dc:	00000000 	nop
  40e0e0:	10400015 	beqz	v0,40e138 <parser_machine+0x944>
  40e0e4:	00000000 	nop
  40e0e8:	8fc40018 	lw	a0,24(s8)
  40e0ec:	8f998590 	lw	t9,-31344(gp)
  40e0f0:	00000000 	nop
  40e0f4:	0320f809 	jalr	t9
  40e0f8:	00000000 	nop
  40e0fc:	8fdc0010 	lw	gp,16(s8)
  40e100:	1040000d 	beqz	v0,40e138 <parser_machine+0x944>
  40e104:	00000000 	nop
				parser_set_state(p_ctx, ST_MODP);
  40e108:	8fc40040 	lw	a0,64(s8)
  40e10c:	24050009 	li	a1,9
  40e110:	8f998024 	lw	t9,-32732(gp)
  40e114:	00000000 	nop
  40e118:	2739ff94 	addiu	t9,t9,-108
  40e11c:	00000000 	nop
  40e120:	0320f809 	jalr	t9
  40e124:	00000000 	nop
  40e128:	8fdc0010 	lw	gp,16(s8)
  40e12c:	00000000 	nop
				goto re_eval;
  40e130:	1000fe2f 	b	40d9f0 <parser_machine+0x1fc>
  40e134:	00000000 	nop
			}
			p_ctx->err="Non alpha char found after auth keylen";
  40e138:	8f838020 	lw	v1,-32736(gp)
  40e13c:	00000000 	nop
  40e140:	24634928 	addiu	v1,v1,18728
  40e144:	8fc20040 	lw	v0,64(s8)
  40e148:	00000000 	nop
  40e14c:	ac430060 	sw	v1,96(v0)
			goto err;
  40e150:	10000039 	b	40e238 <parser_machine+0xa44>
  40e154:	00000000 	nop
		case ST_MODP:
			if (isalnum(ch)) {
  40e158:	8fc40018 	lw	a0,24(s8)
  40e15c:	8f998480 	lw	t9,-31616(gp)
  40e160:	00000000 	nop
  40e164:	0320f809 	jalr	t9
  40e168:	00000000 	nop
  40e16c:	8fdc0010 	lw	gp,16(s8)
  40e170:	1040000e 	beqz	v0,40e1ac <parser_machine+0x9b8>
  40e174:	00000000 	nop
				*(p_ctx->modp_str++)=ch;
  40e178:	8fc20040 	lw	v0,64(s8)
  40e17c:	00000000 	nop
  40e180:	24450050 	addiu	a1,v0,80
  40e184:	8ca20000 	lw	v0,0(a1)
  40e188:	00000000 	nop
  40e18c:	00402021 	move	a0,v0
  40e190:	93c3001b 	lbu	v1,27(s8)
  40e194:	00000000 	nop
  40e198:	a0830000 	sb	v1,0(a0)
  40e19c:	24420001 	addiu	v0,v0,1
  40e1a0:	aca20000 	sw	v0,0(a1)
				break;
  40e1a4:	1000001f 	b	40e224 <parser_machine+0xa30>
  40e1a8:	00000000 	nop
			}
			p_ctx->err="Non alphanum char found after in modp string";
  40e1ac:	8f838020 	lw	v1,-32736(gp)
  40e1b0:	00000000 	nop
  40e1b4:	24634950 	addiu	v1,v1,18768
  40e1b8:	8fc20040 	lw	v0,64(s8)
  40e1bc:	00000000 	nop
  40e1c0:	ac430060 	sw	v1,96(v0)
			goto err;
  40e1c4:	1000001c 	b	40e238 <parser_machine+0xa44>
  40e1c8:	00000000 	nop
		case ST_FLAG_STRICT:
			if (ch == 0) {
  40e1cc:	8fc20018 	lw	v0,24(s8)
  40e1d0:	00000000 	nop
  40e1d4:	1440000b 	bnez	v0,40e204 <parser_machine+0xa10>
  40e1d8:	00000000 	nop
				parser_set_state(p_ctx, ST_END);
  40e1dc:	8fc40040 	lw	a0,64(s8)
  40e1e0:	2405000b 	li	a1,11
  40e1e4:	8f998024 	lw	t9,-32732(gp)
  40e1e8:	00000000 	nop
  40e1ec:	2739ff94 	addiu	t9,t9,-108
  40e1f0:	00000000 	nop
  40e1f4:	0320f809 	jalr	t9
  40e1f8:	00000000 	nop
  40e1fc:	8fdc0010 	lw	gp,16(s8)
  40e200:	00000000 	nop
			}
			p_ctx->err="Flags character(s) must be at end of whole string";
  40e204:	8f838020 	lw	v1,-32736(gp)
  40e208:	00000000 	nop
  40e20c:	24634980 	addiu	v1,v1,18816
  40e210:	8fc20040 	lw	v0,64(s8)
  40e214:	00000000 	nop
  40e218:	ac430060 	sw	v1,96(v0)
			goto err;
  40e21c:	10000006 	b	40e238 <parser_machine+0xa44>
  40e220:	00000000 	nop

		/* XXX */
		case ST_END:
		case ST_EOF:
		case ST_ERR:
			break;
		/* XXX */
	}
out:
	return p_ctx->state;
  40e224:	8fc20040 	lw	v0,64(s8)
  40e228:	00000000 	nop
  40e22c:	8c420000 	lw	v0,0(v0)
  40e230:	1000000c 	b	40e264 <parser_machine+0xa70>
  40e234:	00000000 	nop
err:
	parser_set_state(p_ctx, ST_ERR);
  40e238:	8fc40040 	lw	a0,64(s8)
  40e23c:	2405000d 	li	a1,13
  40e240:	8f998024 	lw	t9,-32732(gp)
  40e244:	00000000 	nop
  40e248:	2739ff94 	addiu	t9,t9,-108
  40e24c:	00000000 	nop
  40e250:	0320f809 	jalr	t9
  40e254:	00000000 	nop
  40e258:	8fdc0010 	lw	gp,16(s8)
  40e25c:	00000000 	nop
	return ST_ERR;
  40e260:	2402000d 	li	v0,13
}
  40e264:	03c0e821 	move	sp,s8
  40e268:	8fbf0038 	lw	ra,56(sp)
  40e26c:	8fbe0034 	lw	s8,52(sp)
  40e270:	27bd0040 	addiu	sp,sp,64
  40e274:	03e00008 	jr	ra
  40e278:	00000000 	nop

0040e27c <parser_init>:
  40e27c:	3c1c0fc0 	lui	gp,0xfc0
  40e280:	279ce6f4 	addiu	gp,gp,-6412
  40e284:	0399e021 	addu	gp,gp,t9
  40e288:	27bdffd0 	addiu	sp,sp,-48
  40e28c:	afbc0010 	sw	gp,16(sp)
  40e290:	afbf0028 	sw	ra,40(sp)
  40e294:	afbe0024 	sw	s8,36(sp)
  40e298:	afbc0020 	sw	gp,32(sp)
  40e29c:	03a0f021 	move	s8,sp
  40e2a0:	afc40030 	sw	a0,48(s8)
  40e2a4:	afc50034 	sw	a1,52(s8)
/*	
 *	Must be called for each "new" char, with new
 *	character in ctx.ch
 */
static void
parser_init(struct parser_context *p_ctx, unsigned protoid)
{
	memset(p_ctx, 0, sizeof (*p_ctx));
  40e2a8:	8fc40030 	lw	a0,48(s8)
  40e2ac:	00002821 	move	a1,zero
  40e2b0:	24060064 	li	a2,100
  40e2b4:	8f998500 	lw	t9,-31488(gp)
  40e2b8:	00000000 	nop
  40e2bc:	0320f809 	jalr	t9
  40e2c0:	00000000 	nop
  40e2c4:	8fdc0010 	lw	gp,16(s8)
  40e2c8:	00000000 	nop
	p_ctx->protoid=protoid; /* XXX: jjo */
  40e2cc:	8fc30034 	lw	v1,52(s8)
  40e2d0:	8fc20030 	lw	v0,48(s8)
  40e2d4:	00000000 	nop
  40e2d8:	ac430008 	sw	v1,8(v0)
	p_ctx->protoid=PROTO_IPSEC_ESP;
  40e2dc:	24030003 	li	v1,3
  40e2e0:	8fc20030 	lw	v0,48(s8)
  40e2e4:	00000000 	nop
  40e2e8:	ac430008 	sw	v1,8(v0)
	p_ctx->ealg_str=p_ctx->ealg_buf;
  40e2ec:	8fc20030 	lw	v0,48(s8)
  40e2f0:	00000000 	nop
  40e2f4:	2443000c 	addiu	v1,v0,12
  40e2f8:	8fc20030 	lw	v0,48(s8)
  40e2fc:	00000000 	nop
  40e300:	ac430048 	sw	v1,72(v0)
	p_ctx->aalg_str=p_ctx->aalg_buf;
  40e304:	8fc20030 	lw	v0,48(s8)
  40e308:	00000000 	nop
  40e30c:	2443001c 	addiu	v1,v0,28
  40e310:	8fc20030 	lw	v0,48(s8)
  40e314:	00000000 	nop
  40e318:	ac43004c 	sw	v1,76(v0)
	p_ctx->modp_str=p_ctx->modp_buf;
  40e31c:	8fc20030 	lw	v0,48(s8)
  40e320:	00000000 	nop
  40e324:	2443002c 	addiu	v1,v0,44
  40e328:	8fc20030 	lw	v0,48(s8)
  40e32c:	00000000 	nop
  40e330:	ac430050 	sw	v1,80(v0)
	p_ctx->state=ST_INI;
  40e334:	8fc20030 	lw	v0,48(s8)
  40e338:	00000000 	nop
  40e33c:	ac400000 	sw	zero,0(v0)
	switch(protoid) {
  40e340:	8fc20034 	lw	v0,52(s8)
  40e344:	00000000 	nop
  40e348:	afc20018 	sw	v0,24(s8)
  40e34c:	24020001 	li	v0,1
  40e350:	8fc30018 	lw	v1,24(s8)
  40e354:	00000000 	nop
  40e358:	10620008 	beq	v1,v0,40e37c <parser_init+0x100>
  40e35c:	00000000 	nop
  40e360:	24020003 	li	v0,3
  40e364:	8fc30018 	lw	v1,24(s8)
  40e368:	00000000 	nop
  40e36c:	10620017 	beq	v1,v0,40e3cc <parser_init+0x150>
  40e370:	00000000 	nop
  40e374:	10000021 	b	40e3fc <parser_init+0x180>
  40e378:	00000000 	nop
#ifndef NO_PLUTO
		case PROTO_ISAKMP:
			p_ctx->ealg_getbyname=ealg_getbyname_ike;
  40e37c:	8f838024 	lw	v1,-32732(gp)
  40e380:	00000000 	nop
  40e384:	2463cee0 	addiu	v1,v1,-12576
  40e388:	8fc20030 	lw	v0,48(s8)
  40e38c:	00000000 	nop
  40e390:	ac43003c 	sw	v1,60(v0)
			p_ctx->aalg_getbyname=aalg_getbyname_ike;
  40e394:	8f838024 	lw	v1,-32732(gp)
  40e398:	00000000 	nop
  40e39c:	2463d000 	addiu	v1,v1,-12288
  40e3a0:	8fc20030 	lw	v0,48(s8)
  40e3a4:	00000000 	nop
  40e3a8:	ac430040 	sw	v1,64(v0)
			p_ctx->modp_getbyname=modp_getbyname_ike;
  40e3ac:	8f838024 	lw	v1,-32732(gp)
  40e3b0:	00000000 	nop
  40e3b4:	2463d148 	addiu	v1,v1,-11960
  40e3b8:	8fc20030 	lw	v0,48(s8)
  40e3bc:	00000000 	nop
  40e3c0:	ac430044 	sw	v1,68(v0)
			break;
  40e3c4:	1000000d 	b	40e3fc <parser_init+0x180>
  40e3c8:	00000000 	nop
#endif
		case PROTO_IPSEC_ESP:
			p_ctx->ealg_getbyname=ealg_getbyname_esp;
  40e3cc:	8f838024 	lw	v1,-32732(gp)
  40e3d0:	00000000 	nop
  40e3d4:	2463c658 	addiu	v1,v1,-14760
  40e3d8:	8fc20030 	lw	v0,48(s8)
  40e3dc:	00000000 	nop
  40e3e0:	ac43003c 	sw	v1,60(v0)
			p_ctx->aalg_getbyname=aalg_getbyname_esp;
  40e3e4:	8f838024 	lw	v1,-32732(gp)
  40e3e8:	00000000 	nop
  40e3ec:	2463c750 	addiu	v1,v1,-14512
  40e3f0:	8fc20030 	lw	v0,48(s8)
  40e3f4:	00000000 	nop
  40e3f8:	ac430040 	sw	v1,64(v0)
			break;
	}
}
  40e3fc:	03c0e821 	move	sp,s8
  40e400:	8fbf0028 	lw	ra,40(sp)
  40e404:	8fbe0024 	lw	s8,36(sp)
  40e408:	27bd0030 	addiu	sp,sp,48
  40e40c:	03e00008 	jr	ra
  40e410:	00000000 	nop

0040e414 <parser_alg_info_add>:
  40e414:	3c1c0fc0 	lui	gp,0xfc0
  40e418:	279ce55c 	addiu	gp,gp,-6820
  40e41c:	0399e021 	addu	gp,gp,t9
  40e420:	27bdffb8 	addiu	sp,sp,-72
  40e424:	afbc0018 	sw	gp,24(sp)
  40e428:	afbf0040 	sw	ra,64(sp)
  40e42c:	afbe003c 	sw	s8,60(sp)
  40e430:	afbc0038 	sw	gp,56(sp)
  40e434:	03a0f021 	move	s8,sp
  40e438:	afc40048 	sw	a0,72(s8)
  40e43c:	afc5004c 	sw	a1,76(s8)
static int
parser_alg_info_add(struct parser_context *p_ctx, struct alg_info *alg_info)
{
	int ealg_id, aalg_id;
	int modp_id = 0;
  40e440:	afc00028 	sw	zero,40(s8)
#ifndef NO_PLUTO
	const struct oakley_group_desc *gd;
#endif
	ealg_id=aalg_id=0;
  40e444:	afc00024 	sw	zero,36(s8)
  40e448:	afc00020 	sw	zero,32(s8)
	if (*p_ctx->ealg_buf) {
  40e44c:	8fc20048 	lw	v0,72(s8)
  40e450:	00000000 	nop
  40e454:	2442000c 	addiu	v0,v0,12
  40e458:	80420000 	lb	v0,0(v0)
  40e45c:	00000000 	nop
  40e460:	10400045 	beqz	v0,40e578 <parser_alg_info_add+0x164>
  40e464:	00000000 	nop
		ealg_id=p_ctx->ealg_getbyname(p_ctx->ealg_buf, strlen(p_ctx->ealg_buf));
  40e468:	8fc20048 	lw	v0,72(s8)
  40e46c:	00000000 	nop
  40e470:	2442000c 	addiu	v0,v0,12
  40e474:	00402021 	move	a0,v0
  40e478:	8f998188 	lw	t9,-32376(gp)
  40e47c:	00000000 	nop
  40e480:	0320f809 	jalr	t9
  40e484:	00000000 	nop
  40e488:	8fdc0018 	lw	gp,24(s8)
  40e48c:	00402821 	move	a1,v0
  40e490:	8fc20048 	lw	v0,72(s8)
  40e494:	00000000 	nop
  40e498:	2443000c 	addiu	v1,v0,12
  40e49c:	8fc20048 	lw	v0,72(s8)
  40e4a0:	00000000 	nop
  40e4a4:	8c42003c 	lw	v0,60(v0)
  40e4a8:	00602021 	move	a0,v1
  40e4ac:	0040c821 	move	t9,v0
  40e4b0:	0320f809 	jalr	t9
  40e4b4:	00000000 	nop
  40e4b8:	8fdc0018 	lw	gp,24(s8)
  40e4bc:	afc20020 	sw	v0,32(s8)
		if (ealg_id==ESP_MAGIC_ID) {
  40e4c0:	8fc30020 	lw	v1,32(s8)
  40e4c4:	3c0200ff 	lui	v0,0xff
  40e4c8:	3442ff01 	ori	v0,v0,0xff01
  40e4cc:	14620009 	bne	v1,v0,40e4f4 <parser_alg_info_add+0xe0>
  40e4d0:	00000000 	nop
			ealg_id=p_ctx->eklen;
  40e4d4:	8fc20048 	lw	v0,72(s8)
  40e4d8:	00000000 	nop
  40e4dc:	8c420054 	lw	v0,84(v0)
  40e4e0:	00000000 	nop
  40e4e4:	afc20020 	sw	v0,32(s8)
			p_ctx->eklen=0;
  40e4e8:	8fc20048 	lw	v0,72(s8)
  40e4ec:	00000000 	nop
  40e4f0:	ac400054 	sw	zero,84(v0)
		}
		if (ealg_id<0) {
  40e4f4:	8fc20020 	lw	v0,32(s8)
  40e4f8:	00000000 	nop
  40e4fc:	04410009 	bgez	v0,40e524 <parser_alg_info_add+0x110>
  40e500:	00000000 	nop
			p_ctx->err="enc_alg not found";
  40e504:	8f838020 	lw	v1,-32736(gp)
  40e508:	00000000 	nop
  40e50c:	24634a18 	addiu	v1,v1,18968
  40e510:	8fc20048 	lw	v0,72(s8)
  40e514:	00000000 	nop
  40e518:	ac430060 	sw	v1,96(v0)
			goto out;
  40e51c:	100000f0 	b	40e8e0 <parser_alg_info_add+0x4cc>
  40e520:	00000000 	nop
		}
		DBG(DBG_CRYPT, DBG_log("parser_alg_info_add() "
  40e524:	8f8284f8 	lw	v0,-31496(gp)
  40e528:	00000000 	nop
  40e52c:	8c420000 	lw	v0,0(v0)
  40e530:	00000000 	nop
  40e534:	30420002 	andi	v0,v0,0x2
  40e538:	1040000f 	beqz	v0,40e578 <parser_alg_info_add+0x164>
  40e53c:	00000000 	nop
  40e540:	8fc20048 	lw	v0,72(s8)
  40e544:	00000000 	nop
  40e548:	2442000c 	addiu	v0,v0,12
  40e54c:	8f848020 	lw	a0,-32736(gp)
  40e550:	00000000 	nop
  40e554:	24844a2c 	addiu	a0,a0,18988
  40e558:	00402821 	move	a1,v0
  40e55c:	8fc60020 	lw	a2,32(s8)
  40e560:	8f9983b8 	lw	t9,-31816(gp)
  40e564:	00000000 	nop
  40e568:	0320f809 	jalr	t9
  40e56c:	00000000 	nop
  40e570:	8fdc0018 	lw	gp,24(s8)
  40e574:	00000000 	nop
				"ealg_getbyname(\"%s\")=%d",
				p_ctx->ealg_buf,
				ealg_id));
	}
	if (*p_ctx->aalg_buf) {
  40e578:	8fc20048 	lw	v0,72(s8)
  40e57c:	00000000 	nop
  40e580:	2442001c 	addiu	v0,v0,28
  40e584:	80420000 	lb	v0,0(v0)
  40e588:	00000000 	nop
  40e58c:	10400038 	beqz	v0,40e670 <parser_alg_info_add+0x25c>
  40e590:	00000000 	nop
		aalg_id=p_ctx->aalg_getbyname(p_ctx->aalg_buf, strlen(p_ctx->aalg_buf));
  40e594:	8fc20048 	lw	v0,72(s8)
  40e598:	00000000 	nop
  40e59c:	2442001c 	addiu	v0,v0,28
  40e5a0:	00402021 	move	a0,v0
  40e5a4:	8f998188 	lw	t9,-32376(gp)
  40e5a8:	00000000 	nop
  40e5ac:	0320f809 	jalr	t9
  40e5b0:	00000000 	nop
  40e5b4:	8fdc0018 	lw	gp,24(s8)
  40e5b8:	00402821 	move	a1,v0
  40e5bc:	8fc20048 	lw	v0,72(s8)
  40e5c0:	00000000 	nop
  40e5c4:	2443001c 	addiu	v1,v0,28
  40e5c8:	8fc20048 	lw	v0,72(s8)
  40e5cc:	00000000 	nop
  40e5d0:	8c420040 	lw	v0,64(v0)
  40e5d4:	00602021 	move	a0,v1
  40e5d8:	0040c821 	move	t9,v0
  40e5dc:	0320f809 	jalr	t9
  40e5e0:	00000000 	nop
  40e5e4:	8fdc0018 	lw	gp,24(s8)
  40e5e8:	afc20024 	sw	v0,36(s8)
		if (aalg_id<0) {
  40e5ec:	8fc20024 	lw	v0,36(s8)
  40e5f0:	00000000 	nop
  40e5f4:	04410009 	bgez	v0,40e61c <parser_alg_info_add+0x208>
  40e5f8:	00000000 	nop
			p_ctx->err="hash_alg not found";
  40e5fc:	8f838020 	lw	v1,-32736(gp)
  40e600:	00000000 	nop
  40e604:	24634a5c 	addiu	v1,v1,19036
  40e608:	8fc20048 	lw	v0,72(s8)
  40e60c:	00000000 	nop
  40e610:	ac430060 	sw	v1,96(v0)
			goto out;
  40e614:	100000b2 	b	40e8e0 <parser_alg_info_add+0x4cc>
  40e618:	00000000 	nop
		}
		DBG(DBG_CRYPT, DBG_log("parser_alg_info_add() "
  40e61c:	8f8284f8 	lw	v0,-31496(gp)
  40e620:	00000000 	nop
  40e624:	8c420000 	lw	v0,0(v0)
  40e628:	00000000 	nop
  40e62c:	30420002 	andi	v0,v0,0x2
  40e630:	1040000f 	beqz	v0,40e670 <parser_alg_info_add+0x25c>
  40e634:	00000000 	nop
  40e638:	8fc20048 	lw	v0,72(s8)
  40e63c:	00000000 	nop
  40e640:	2442001c 	addiu	v0,v0,28
  40e644:	8f848020 	lw	a0,-32736(gp)
  40e648:	00000000 	nop
  40e64c:	24844a70 	addiu	a0,a0,19056
  40e650:	00402821 	move	a1,v0
  40e654:	8fc60024 	lw	a2,36(s8)
  40e658:	8f9983b8 	lw	t9,-31816(gp)
  40e65c:	00000000 	nop
  40e660:	0320f809 	jalr	t9
  40e664:	00000000 	nop
  40e668:	8fdc0018 	lw	gp,24(s8)
  40e66c:	00000000 	nop
				"aalg_getbyname(\"%s\")=%d",
				p_ctx->aalg_buf,
				aalg_id));
	}
	if (p_ctx->modp_getbyname && *p_ctx->modp_buf) {
  40e670:	8fc20048 	lw	v0,72(s8)
  40e674:	00000000 	nop
  40e678:	8c420044 	lw	v0,68(v0)
  40e67c:	00000000 	nop
  40e680:	1040003f 	beqz	v0,40e780 <parser_alg_info_add+0x36c>
  40e684:	00000000 	nop
  40e688:	8fc20048 	lw	v0,72(s8)
  40e68c:	00000000 	nop
  40e690:	2442002c 	addiu	v0,v0,44
  40e694:	80420000 	lb	v0,0(v0)
  40e698:	00000000 	nop
  40e69c:	10400038 	beqz	v0,40e780 <parser_alg_info_add+0x36c>
  40e6a0:	00000000 	nop
		modp_id=p_ctx->modp_getbyname(p_ctx->modp_buf, strlen(p_ctx->modp_buf));
  40e6a4:	8fc20048 	lw	v0,72(s8)
  40e6a8:	00000000 	nop
  40e6ac:	2442002c 	addiu	v0,v0,44
  40e6b0:	00402021 	move	a0,v0
  40e6b4:	8f998188 	lw	t9,-32376(gp)
  40e6b8:	00000000 	nop
  40e6bc:	0320f809 	jalr	t9
  40e6c0:	00000000 	nop
  40e6c4:	8fdc0018 	lw	gp,24(s8)
  40e6c8:	00402821 	move	a1,v0
  40e6cc:	8fc20048 	lw	v0,72(s8)
  40e6d0:	00000000 	nop
  40e6d4:	2443002c 	addiu	v1,v0,44
  40e6d8:	8fc20048 	lw	v0,72(s8)
  40e6dc:	00000000 	nop
  40e6e0:	8c420044 	lw	v0,68(v0)
  40e6e4:	00602021 	move	a0,v1
  40e6e8:	0040c821 	move	t9,v0
  40e6ec:	0320f809 	jalr	t9
  40e6f0:	00000000 	nop
  40e6f4:	8fdc0018 	lw	gp,24(s8)
  40e6f8:	afc20028 	sw	v0,40(s8)
		if (modp_id<0) {
  40e6fc:	8fc20028 	lw	v0,40(s8)
  40e700:	00000000 	nop
  40e704:	04410009 	bgez	v0,40e72c <parser_alg_info_add+0x318>
  40e708:	00000000 	nop
			p_ctx->err="modp group not found";
  40e70c:	8f838020 	lw	v1,-32736(gp)
  40e710:	00000000 	nop
  40e714:	24634aa0 	addiu	v1,v1,19104
  40e718:	8fc20048 	lw	v0,72(s8)
  40e71c:	00000000 	nop
  40e720:	ac430060 	sw	v1,96(v0)
			goto out;
  40e724:	1000006e 	b	40e8e0 <parser_alg_info_add+0x4cc>
  40e728:	00000000 	nop
		}
		DBG(DBG_CRYPT, DBG_log("parser_alg_info_add() "
  40e72c:	8f8284f8 	lw	v0,-31496(gp)
  40e730:	00000000 	nop
  40e734:	8c420000 	lw	v0,0(v0)
  40e738:	00000000 	nop
  40e73c:	30420002 	andi	v0,v0,0x2
  40e740:	1040000f 	beqz	v0,40e780 <parser_alg_info_add+0x36c>
  40e744:	00000000 	nop
  40e748:	8fc20048 	lw	v0,72(s8)
  40e74c:	00000000 	nop
  40e750:	2442002c 	addiu	v0,v0,44
  40e754:	8f848020 	lw	a0,-32736(gp)
  40e758:	00000000 	nop
  40e75c:	24844ab8 	addiu	a0,a0,19128
  40e760:	00402821 	move	a1,v0
  40e764:	8fc60028 	lw	a2,40(s8)
  40e768:	8f9983b8 	lw	t9,-31816(gp)
  40e76c:	00000000 	nop
  40e770:	0320f809 	jalr	t9
  40e774:	00000000 	nop
  40e778:	8fdc0018 	lw	gp,24(s8)
  40e77c:	00000000 	nop
				"modp_getbyname(\"%s\")=%d",
				p_ctx->modp_buf,
				modp_id));
	}
	switch(alg_info->alg_info_protoid) {
  40e780:	8fc2004c 	lw	v0,76(s8)
  40e784:	00000000 	nop
  40e788:	8c42000c 	lw	v0,12(v0)
  40e78c:	00000000 	nop
  40e790:	afc20030 	sw	v0,48(s8)
  40e794:	24020001 	li	v0,1
  40e798:	8fc30030 	lw	v1,48(s8)
  40e79c:	00000000 	nop
  40e7a0:	1062001d 	beq	v1,v0,40e818 <parser_alg_info_add+0x404>
  40e7a4:	00000000 	nop
  40e7a8:	24020003 	li	v0,3
  40e7ac:	8fc30030 	lw	v1,48(s8)
  40e7b0:	00000000 	nop
  40e7b4:	10620003 	beq	v1,v0,40e7c4 <parser_alg_info_add+0x3b0>
  40e7b8:	00000000 	nop
  40e7bc:	10000048 	b	40e8e0 <parser_alg_info_add+0x4cc>
  40e7c0:	00000000 	nop
		case PROTO_IPSEC_ESP:
			alg_info_esp_add(alg_info,
  40e7c4:	8fc20048 	lw	v0,72(s8)
  40e7c8:	00000000 	nop
  40e7cc:	8c420058 	lw	v0,88(v0)
  40e7d0:	00000000 	nop
  40e7d4:	afa20010 	sw	v0,16(sp)
  40e7d8:	8fc4004c 	lw	a0,76(s8)
  40e7dc:	8fc50020 	lw	a1,32(s8)
  40e7e0:	8fc20048 	lw	v0,72(s8)
  40e7e4:	00000000 	nop
  40e7e8:	8c460054 	lw	a2,84(v0)
  40e7ec:	8fc70024 	lw	a3,36(s8)
  40e7f0:	8f998024 	lw	t9,-32732(gp)
  40e7f4:	00000000 	nop
  40e7f8:	2739cda4 	addiu	t9,t9,-12892
  40e7fc:	00000000 	nop
  40e800:	0320f809 	jalr	t9
  40e804:	00000000 	nop
  40e808:	8fdc0018 	lw	gp,24(s8)
  40e80c:	00000000 	nop
					ealg_id, p_ctx->eklen,
					aalg_id, p_ctx->aklen);
			break;
  40e810:	10000030 	b	40e8d4 <parser_alg_info_add+0x4c0>
  40e814:	00000000 	nop
#ifndef NO_PLUTO
		case PROTO_ISAKMP:
			if (modp_id && !(gd=lookup_group(modp_id))) {
  40e818:	8fc20028 	lw	v0,40(s8)
  40e81c:	00000000 	nop
  40e820:	10400016 	beqz	v0,40e87c <parser_alg_info_add+0x468>
  40e824:	00000000 	nop
  40e828:	97c2002a 	lhu	v0,42(s8)
  40e82c:	00000000 	nop
  40e830:	00402021 	move	a0,v0
  40e834:	8f998b88 	lw	t9,-29816(gp)
  40e838:	00000000 	nop
  40e83c:	0320f809 	jalr	t9
  40e840:	00000000 	nop
  40e844:	8fdc0018 	lw	gp,24(s8)
  40e848:	afc2002c 	sw	v0,44(s8)
  40e84c:	8fc2002c 	lw	v0,44(s8)
  40e850:	00000000 	nop
  40e854:	14400009 	bnez	v0,40e87c <parser_alg_info_add+0x468>
  40e858:	00000000 	nop
				p_ctx->err="found modp group id, but not supported";
  40e85c:	8f838020 	lw	v1,-32736(gp)
  40e860:	00000000 	nop
  40e864:	24634ae8 	addiu	v1,v1,19176
  40e868:	8fc20048 	lw	v0,72(s8)
  40e86c:	00000000 	nop
  40e870:	ac430060 	sw	v1,96(v0)
				goto out;
  40e874:	1000001a 	b	40e8e0 <parser_alg_info_add+0x4cc>
  40e878:	00000000 	nop
			}
			alg_info_ike_add(alg_info,
  40e87c:	8fc20048 	lw	v0,72(s8)
  40e880:	00000000 	nop
  40e884:	8c420058 	lw	v0,88(v0)
  40e888:	00000000 	nop
  40e88c:	afa20010 	sw	v0,16(sp)
  40e890:	8fc20028 	lw	v0,40(s8)
  40e894:	00000000 	nop
  40e898:	afa20014 	sw	v0,20(sp)
  40e89c:	8fc4004c 	lw	a0,76(s8)
  40e8a0:	8fc50020 	lw	a1,32(s8)
  40e8a4:	8fc20048 	lw	v0,72(s8)
  40e8a8:	00000000 	nop
  40e8ac:	8c460054 	lw	a2,84(v0)
  40e8b0:	8fc70024 	lw	a3,36(s8)
  40e8b4:	8f998024 	lw	t9,-32732(gp)
  40e8b8:	00000000 	nop
  40e8bc:	2739d5a4 	addiu	t9,t9,-10844
  40e8c0:	00000000 	nop
  40e8c4:	0320f809 	jalr	t9
  40e8c8:	00000000 	nop
  40e8cc:	8fdc0018 	lw	gp,24(s8)
  40e8d0:	00000000 	nop
					ealg_id, p_ctx->eklen,
					aalg_id, p_ctx->aklen,
					modp_id);
			break;
#endif
		default:
			goto out;
	}
	return 0;
  40e8d4:	00001021 	move	v0,zero
  40e8d8:	10000002 	b	40e8e4 <parser_alg_info_add+0x4d0>
  40e8dc:	00000000 	nop
out:
	return -1;
  40e8e0:	2402ffff 	li	v0,-1
}
  40e8e4:	03c0e821 	move	sp,s8
  40e8e8:	8fbf0040 	lw	ra,64(sp)
  40e8ec:	8fbe003c 	lw	s8,60(sp)
  40e8f0:	27bd0048 	addiu	sp,sp,72
  40e8f4:	03e00008 	jr	ra
  40e8f8:	00000000 	nop

0040e8fc <alg_info_parse_str>:
  40e8fc:	3c1c0fc0 	lui	gp,0xfc0
  40e900:	279ce074 	addiu	gp,gp,-8076
  40e904:	0399e021 	addu	gp,gp,t9
  40e908:	27bdff50 	addiu	sp,sp,-176
  40e90c:	afbc0020 	sw	gp,32(sp)
  40e910:	afbf00a8 	sw	ra,168(sp)
  40e914:	afbe00a4 	sw	s8,164(sp)
  40e918:	afbc00a0 	sw	gp,160(sp)
  40e91c:	03a0f021 	move	s8,sp
  40e920:	afc400b0 	sw	a0,176(s8)
  40e924:	afc500b4 	sw	a1,180(s8)
  40e928:	afc600b8 	sw	a2,184(s8)
static int
alg_info_parse_str (struct alg_info *alg_info, const char *alg_str, const char **err_p)
{
	struct parser_context ctx;
	int ret;
	const char *ptr;
	static char err_buf[256];
	*err_buf=0;
  40e92c:	8f818018 	lw	at,-32744(gp)
  40e930:	00000000 	nop
  40e934:	24215e90 	addiu	at,at,24208
  40e938:	a0200000 	sb	zero,0(at)
	parser_init(&ctx, alg_info->alg_info_protoid);
  40e93c:	27c40028 	addiu	a0,s8,40
  40e940:	8fc200b0 	lw	v0,176(s8)
  40e944:	00000000 	nop
  40e948:	8c45000c 	lw	a1,12(v0)
  40e94c:	8f998024 	lw	t9,-32732(gp)
  40e950:	00000000 	nop
  40e954:	2739e27c 	addiu	t9,t9,-7556
  40e958:	00000000 	nop
  40e95c:	0320f809 	jalr	t9
  40e960:	00000000 	nop
  40e964:	8fdc0020 	lw	gp,32(s8)
  40e968:	00000000 	nop
	if (err_p) *err_p=NULL;
  40e96c:	8fc200b8 	lw	v0,184(s8)
  40e970:	00000000 	nop
  40e974:	10400004 	beqz	v0,40e988 <alg_info_parse_str+0x8c>
  40e978:	00000000 	nop
  40e97c:	8fc200b8 	lw	v0,184(s8)
  40e980:	00000000 	nop
  40e984:	ac400000 	sw	zero,0(v0)
	/* use default if nul esp string */
	if (!*alg_str) {
  40e988:	8fc200b4 	lw	v0,180(s8)
  40e98c:	00000000 	nop
  40e990:	80420000 	lb	v0,0(v0)
  40e994:	00000000 	nop
  40e998:	14400046 	bnez	v0,40eab4 <alg_info_parse_str+0x1b8>
  40e99c:	00000000 	nop
		switch (alg_info->alg_info_protoid) {
  40e9a0:	8fc200b0 	lw	v0,176(s8)
  40e9a4:	00000000 	nop
  40e9a8:	8c42000c 	lw	v0,12(v0)
  40e9ac:	00000000 	nop
  40e9b0:	afc20098 	sw	v0,152(s8)
  40e9b4:	24020001 	li	v0,1
  40e9b8:	8fc30098 	lw	v1,152(s8)
  40e9bc:	00000000 	nop
  40e9c0:	10620008 	beq	v1,v0,40e9e4 <alg_info_parse_str+0xe8>
  40e9c4:	00000000 	nop
  40e9c8:	24020003 	li	v0,3
  40e9cc:	8fc30098 	lw	v1,152(s8)
  40e9d0:	00000000 	nop
  40e9d4:	10620014 	beq	v1,v0,40ea28 <alg_info_parse_str+0x12c>
  40e9d8:	00000000 	nop
  40e9dc:	10000022 	b	40ea68 <alg_info_parse_str+0x16c>
  40e9e0:	00000000 	nop
#ifndef NO_PLUTO
			case PROTO_ISAKMP:
				alg_info_ike_add(alg_info, 0, 0, 0, 0, 0);
  40e9e4:	afa00010 	sw	zero,16(sp)
  40e9e8:	afa00014 	sw	zero,20(sp)
  40e9ec:	8fc400b0 	lw	a0,176(s8)
  40e9f0:	00002821 	move	a1,zero
  40e9f4:	00003021 	move	a2,zero
  40e9f8:	00003821 	move	a3,zero
  40e9fc:	8f998024 	lw	t9,-32732(gp)
  40ea00:	00000000 	nop
  40ea04:	2739d5a4 	addiu	t9,t9,-10844
  40ea08:	00000000 	nop
  40ea0c:	0320f809 	jalr	t9
  40ea10:	00000000 	nop
  40ea14:	8fdc0020 	lw	gp,32(s8)
  40ea18:	00000000 	nop
				return 0;
  40ea1c:	00001021 	move	v0,zero
  40ea20:	100000e0 	b	40eda4 <alg_info_parse_str+0x4a8>
  40ea24:	00000000 	nop
#endif
			case PROTO_IPSEC_ESP:
				alg_info_esp_add(alg_info, 0, 0, 0, 0);
  40ea28:	afa00010 	sw	zero,16(sp)
  40ea2c:	8fc400b0 	lw	a0,176(s8)
  40ea30:	00002821 	move	a1,zero
  40ea34:	00003021 	move	a2,zero
  40ea38:	00003821 	move	a3,zero
  40ea3c:	8f998024 	lw	t9,-32732(gp)
  40ea40:	00000000 	nop
  40ea44:	2739cda4 	addiu	t9,t9,-12892
  40ea48:	00000000 	nop
  40ea4c:	0320f809 	jalr	t9
  40ea50:	00000000 	nop
  40ea54:	8fdc0020 	lw	gp,32(s8)
  40ea58:	00000000 	nop
				return 0;
  40ea5c:	00001021 	move	v0,zero
  40ea60:	100000d0 	b	40eda4 <alg_info_parse_str+0x4a8>
  40ea64:	00000000 	nop
			default:
				/* IMPOSSIBLE */
				passert(alg_info->alg_info_protoid);
  40ea68:	8fc200b0 	lw	v0,176(s8)
  40ea6c:	00000000 	nop
  40ea70:	8c42000c 	lw	v0,12(v0)
  40ea74:	00000000 	nop
  40ea78:	1440000e 	bnez	v0,40eab4 <alg_info_parse_str+0x1b8>
  40ea7c:	00000000 	nop
  40ea80:	8f848020 	lw	a0,-32736(gp)
  40ea84:	00000000 	nop
  40ea88:	24844b10 	addiu	a0,a0,19216
  40ea8c:	8f858020 	lw	a1,-32736(gp)
  40ea90:	00000000 	nop
  40ea94:	24a54664 	addiu	a1,a1,18020
  40ea98:	240602f2 	li	a2,754
  40ea9c:	8f998bb8 	lw	t9,-29768(gp)
  40eaa0:	00000000 	nop
  40eaa4:	0320f809 	jalr	t9
  40eaa8:	00000000 	nop
  40eaac:	8fdc0020 	lw	gp,32(s8)
  40eab0:	00000000 	nop
		}
	}

	for(ret=0,ptr=alg_str;ret<ST_EOF;) {
  40eab4:	afc00090 	sw	zero,144(s8)
  40eab8:	8fc200b4 	lw	v0,180(s8)
  40eabc:	00000000 	nop
  40eac0:	afc20094 	sw	v0,148(s8)
  40eac4:	8fc20090 	lw	v0,144(s8)
  40eac8:	00000000 	nop
  40eacc:	2842000c 	slti	v0,v0,12
  40ead0:	14400004 	bnez	v0,40eae4 <alg_info_parse_str+0x1e8>
  40ead4:	00000000 	nop
		ctx.ch=*ptr++;
		ret= parser_machine(&ctx);
		switch(ret) {
			case ST_FLAG_STRICT:
				alg_info->alg_info_flags |= ALG_INFO_F_STRICT;
				break;
			case ST_END:
			case ST_EOF:
				DBG(DBG_CRYPT, DBG_log("alg_info_parse_str() "
				"ealg_buf=%s aalg_buf=%s"
				"eklen=%d  aklen=%d",
				ctx.ealg_buf, ctx.aalg_buf,
				ctx.eklen, ctx.aklen));
				if (parser_alg_info_add(&ctx, alg_info)<0) {
					snprintf(err_buf, sizeof(err_buf),
					"%s, enc_alg=\"%s\", auth_alg=\"%s\", "
					"modp=\"%s\"",
					ctx.err,
					ctx.ealg_buf,
					ctx.aalg_buf,
					ctx.modp_buf);
					goto err;
				}
				/* zero out for next run (ST_END) */
				parser_init(&ctx, alg_info->alg_info_protoid);
				break;
			case ST_ERR:
				snprintf(err_buf, sizeof(err_buf),
					"%s, "
					"just after \"%.*s\""
					" (old_state=%s)",
					ctx.err,
					(int)(ptr-alg_str-1), alg_str ,
					parser_state_name_esp(ctx.old_state) );

				goto err;
			default:
				if (!ctx.ch) break;
		}
	}
	return 0;
  40ead8:	00001021 	move	v0,zero
  40eadc:	100000b1 	b	40eda4 <alg_info_parse_str+0x4a8>
  40eae0:	00000000 	nop
  40eae4:	27c40094 	addiu	a0,s8,148
  40eae8:	8c820000 	lw	v0,0(a0)
  40eaec:	00000000 	nop
  40eaf0:	00401821 	move	v1,v0
  40eaf4:	80630000 	lb	v1,0(v1)
  40eaf8:	00000000 	nop
  40eafc:	afc30084 	sw	v1,132(s8)
  40eb00:	24420001 	addiu	v0,v0,1
  40eb04:	ac820000 	sw	v0,0(a0)
  40eb08:	27c40028 	addiu	a0,s8,40
  40eb0c:	8f998024 	lw	t9,-32732(gp)
  40eb10:	00000000 	nop
  40eb14:	2739d7f4 	addiu	t9,t9,-10252
  40eb18:	00000000 	nop
  40eb1c:	0320f809 	jalr	t9
  40eb20:	00000000 	nop
  40eb24:	8fdc0020 	lw	gp,32(s8)
  40eb28:	afc20090 	sw	v0,144(s8)
  40eb2c:	8fc20090 	lw	v0,144(s8)
  40eb30:	00000000 	nop
  40eb34:	afc2009c 	sw	v0,156(s8)
  40eb38:	8fc3009c 	lw	v1,156(s8)
  40eb3c:	00000000 	nop
  40eb40:	2862000d 	slti	v0,v1,13
  40eb44:	1040000d 	beqz	v0,40eb7c <alg_info_parse_str+0x280>
  40eb48:	00000000 	nop
  40eb4c:	8fc3009c 	lw	v1,156(s8)
  40eb50:	00000000 	nop
  40eb54:	2862000b 	slti	v0,v1,11
  40eb58:	10400019 	beqz	v0,40ebc0 <alg_info_parse_str+0x2c4>
  40eb5c:	00000000 	nop
  40eb60:	2402000a 	li	v0,10
  40eb64:	8fc3009c 	lw	v1,156(s8)
  40eb68:	00000000 	nop
  40eb6c:	1062000a 	beq	v1,v0,40eb98 <alg_info_parse_str+0x29c>
  40eb70:	00000000 	nop
  40eb74:	1000007a 	b	40ed60 <alg_info_parse_str+0x464>
  40eb78:	00000000 	nop
  40eb7c:	2402000d 	li	v0,13
  40eb80:	8fc3009c 	lw	v1,156(s8)
  40eb84:	00000000 	nop
  40eb88:	10620052 	beq	v1,v0,40ecd4 <alg_info_parse_str+0x3d8>
  40eb8c:	00000000 	nop
  40eb90:	10000073 	b	40ed60 <alg_info_parse_str+0x464>
  40eb94:	00000000 	nop
  40eb98:	8fc200b0 	lw	v0,176(s8)
  40eb9c:	00000000 	nop
  40eba0:	8c420008 	lw	v0,8(v0)
  40eba4:	00000000 	nop
  40eba8:	34430001 	ori	v1,v0,0x1
  40ebac:	8fc200b0 	lw	v0,176(s8)
  40ebb0:	00000000 	nop
  40ebb4:	ac430008 	sw	v1,8(v0)
  40ebb8:	1000ffc2 	b	40eac4 <alg_info_parse_str+0x1c8>
  40ebbc:	00000000 	nop
  40ebc0:	8f8284f8 	lw	v0,-31496(gp)
  40ebc4:	00000000 	nop
  40ebc8:	8c420000 	lw	v0,0(v0)
  40ebcc:	00000000 	nop
  40ebd0:	30420002 	andi	v0,v0,0x2
  40ebd4:	10400010 	beqz	v0,40ec18 <alg_info_parse_str+0x31c>
  40ebd8:	00000000 	nop
  40ebdc:	8fc20080 	lw	v0,128(s8)
  40ebe0:	00000000 	nop
  40ebe4:	afa20010 	sw	v0,16(sp)
  40ebe8:	8f848020 	lw	a0,-32736(gp)
  40ebec:	00000000 	nop
  40ebf0:	24844b2c 	addiu	a0,a0,19244
  40ebf4:	27c50034 	addiu	a1,s8,52
  40ebf8:	27c60044 	addiu	a2,s8,68
  40ebfc:	8fc7007c 	lw	a3,124(s8)
  40ec00:	8f9983b8 	lw	t9,-31816(gp)
  40ec04:	00000000 	nop
  40ec08:	0320f809 	jalr	t9
  40ec0c:	00000000 	nop
  40ec10:	8fdc0020 	lw	gp,32(s8)
  40ec14:	00000000 	nop
  40ec18:	27c40028 	addiu	a0,s8,40
  40ec1c:	8fc500b0 	lw	a1,176(s8)
  40ec20:	8f998024 	lw	t9,-32732(gp)
  40ec24:	00000000 	nop
  40ec28:	2739e414 	addiu	t9,t9,-7148
  40ec2c:	00000000 	nop
  40ec30:	0320f809 	jalr	t9
  40ec34:	00000000 	nop
  40ec38:	8fdc0020 	lw	gp,32(s8)
  40ec3c:	04410017 	bgez	v0,40ec9c <alg_info_parse_str+0x3a0>
  40ec40:	00000000 	nop
  40ec44:	27c20034 	addiu	v0,s8,52
  40ec48:	afa20010 	sw	v0,16(sp)
  40ec4c:	27c20044 	addiu	v0,s8,68
  40ec50:	afa20014 	sw	v0,20(sp)
  40ec54:	27c20054 	addiu	v0,s8,84
  40ec58:	afa20018 	sw	v0,24(sp)
  40ec5c:	8f848018 	lw	a0,-32744(gp)
  40ec60:	00000000 	nop
  40ec64:	24845e90 	addiu	a0,a0,24208
  40ec68:	24050100 	li	a1,256
  40ec6c:	8f868020 	lw	a2,-32736(gp)
  40ec70:	00000000 	nop
  40ec74:	24c64b6c 	addiu	a2,a2,19308
  40ec78:	8fc70088 	lw	a3,136(s8)
  40ec7c:	8f998b38 	lw	t9,-29896(gp)
  40ec80:	00000000 	nop
  40ec84:	0320f809 	jalr	t9
  40ec88:	00000000 	nop
  40ec8c:	8fdc0020 	lw	gp,32(s8)
  40ec90:	00000000 	nop
  40ec94:	10000038 	b	40ed78 <alg_info_parse_str+0x47c>
  40ec98:	00000000 	nop
  40ec9c:	27c40028 	addiu	a0,s8,40
  40eca0:	8fc200b0 	lw	v0,176(s8)
  40eca4:	00000000 	nop
  40eca8:	8c45000c 	lw	a1,12(v0)
  40ecac:	8f998024 	lw	t9,-32732(gp)
  40ecb0:	00000000 	nop
  40ecb4:	2739e27c 	addiu	t9,t9,-7556
  40ecb8:	00000000 	nop
  40ecbc:	0320f809 	jalr	t9
  40ecc0:	00000000 	nop
  40ecc4:	8fdc0020 	lw	gp,32(s8)
  40ecc8:	00000000 	nop
  40eccc:	1000ff7d 	b	40eac4 <alg_info_parse_str+0x1c8>
  40ecd0:	00000000 	nop
  40ecd4:	8fc4002c 	lw	a0,44(s8)
  40ecd8:	8f998024 	lw	t9,-32732(gp)
  40ecdc:	00000000 	nop
  40ece0:	2739d798 	addiu	t9,t9,-10344
  40ece4:	00000000 	nop
  40ece8:	0320f809 	jalr	t9
  40ecec:	00000000 	nop
  40ecf0:	8fdc0020 	lw	gp,32(s8)
  40ecf4:	00402021 	move	a0,v0
  40ecf8:	8fc30094 	lw	v1,148(s8)
  40ecfc:	8fc200b4 	lw	v0,180(s8)
  40ed00:	00000000 	nop
  40ed04:	00621023 	subu	v0,v1,v0
  40ed08:	2442ffff 	addiu	v0,v0,-1
  40ed0c:	afa20010 	sw	v0,16(sp)
  40ed10:	8fc200b4 	lw	v0,180(s8)
  40ed14:	00000000 	nop
  40ed18:	afa20014 	sw	v0,20(sp)
  40ed1c:	afa40018 	sw	a0,24(sp)
  40ed20:	8f848018 	lw	a0,-32744(gp)
  40ed24:	00000000 	nop
  40ed28:	24845e90 	addiu	a0,a0,24208
  40ed2c:	24050100 	li	a1,256
  40ed30:	8f868020 	lw	a2,-32736(gp)
  40ed34:	00000000 	nop
  40ed38:	24c64b98 	addiu	a2,a2,19352
  40ed3c:	8fc70088 	lw	a3,136(s8)
  40ed40:	8f998b38 	lw	t9,-29896(gp)
  40ed44:	00000000 	nop
  40ed48:	0320f809 	jalr	t9
  40ed4c:	00000000 	nop
  40ed50:	8fdc0020 	lw	gp,32(s8)
  40ed54:	00000000 	nop
  40ed58:	10000007 	b	40ed78 <alg_info_parse_str+0x47c>
  40ed5c:	00000000 	nop
  40ed60:	8fc20084 	lw	v0,132(s8)
  40ed64:	00000000 	nop
  40ed68:	1440ff56 	bnez	v0,40eac4 <alg_info_parse_str+0x1c8>
  40ed6c:	00000000 	nop
  40ed70:	1000ff54 	b	40eac4 <alg_info_parse_str+0x1c8>
  40ed74:	00000000 	nop
err:
	if (err_p) {
  40ed78:	8fc200b8 	lw	v0,184(s8)
  40ed7c:	00000000 	nop
  40ed80:	10400007 	beqz	v0,40eda0 <alg_info_parse_str+0x4a4>
  40ed84:	00000000 	nop
		*err_p=err_buf;
  40ed88:	8f838018 	lw	v1,-32744(gp)
  40ed8c:	00000000 	nop
  40ed90:	24635e90 	addiu	v1,v1,24208
  40ed94:	8fc200b8 	lw	v0,184(s8)
  40ed98:	00000000 	nop
  40ed9c:	ac430000 	sw	v1,0(v0)
	}
	return -1;
  40eda0:	2402ffff 	li	v0,-1
}
  40eda4:	03c0e821 	move	sp,s8
  40eda8:	8fbf00a8 	lw	ra,168(sp)
  40edac:	8fbe00a4 	lw	s8,164(sp)
  40edb0:	27bd00b0 	addiu	sp,sp,176
  40edb4:	03e00008 	jr	ra
  40edb8:	00000000 	nop

0040edbc <alg_info_esp_create_from_str>:
  40edbc:	3c1c0fc0 	lui	gp,0xfc0
  40edc0:	279cdbb4 	addiu	gp,gp,-9292
  40edc4:	0399e021 	addu	gp,gp,t9
  40edc8:	27bdfec8 	addiu	sp,sp,-312
  40edcc:	afbc0010 	sw	gp,16(sp)
  40edd0:	afbf0130 	sw	ra,304(sp)
  40edd4:	afbe012c 	sw	s8,300(sp)
  40edd8:	afbc0128 	sw	gp,296(sp)
  40eddc:	03a0f021 	move	s8,sp
  40ede0:	afc40138 	sw	a0,312(s8)
  40ede4:	afc5013c 	sw	a1,316(s8)
struct alg_info_esp *
alg_info_esp_create_from_str (const char *alg_str, const char **err_p)
{
	struct alg_info_esp *alg_info_esp;
	char esp_buf[256];
	static char err_buf[256];
	char *pfs_name;
	int ret =0;
  40ede8:	afc00124 	sw	zero,292(s8)
	/*
	 * 	alg_info storage should be sized dynamically
	 * 	but this may require 2passes to know
	 * 	transform count in advance.
	 */
	alg_info_esp=alloc_thing (struct alg_info_esp, "alg_info_esp");
  40edec:	24040414 	li	a0,1044
  40edf0:	8f858020 	lw	a1,-32736(gp)
  40edf4:	00000000 	nop
  40edf8:	24a54bc0 	addiu	a1,a1,19392
  40edfc:	8f998084 	lw	t9,-32636(gp)
  40ee00:	00000000 	nop
  40ee04:	0320f809 	jalr	t9
  40ee08:	00000000 	nop
  40ee0c:	8fdc0010 	lw	gp,16(s8)
  40ee10:	afc20018 	sw	v0,24(s8)
	if (!alg_info_esp) goto out;
  40ee14:	8fc20018 	lw	v0,24(s8)
  40ee18:	00000000 	nop
  40ee1c:	14400003 	bnez	v0,40ee2c <alg_info_esp_create_from_str+0x70>
  40ee20:	00000000 	nop
  40ee24:	1000008c 	b	40f058 <alg_info_esp_create_from_str+0x29c>
  40ee28:	00000000 	nop
	pfs_name=index (alg_str, ';');
  40ee2c:	8fc40138 	lw	a0,312(s8)
  40ee30:	2405003b 	li	a1,59
  40ee34:	8f998518 	lw	t9,-31464(gp)
  40ee38:	00000000 	nop
  40ee3c:	0320f809 	jalr	t9
  40ee40:	00000000 	nop
  40ee44:	8fdc0010 	lw	gp,16(s8)
  40ee48:	afc20120 	sw	v0,288(s8)
	if (pfs_name) {
  40ee4c:	8fc20120 	lw	v0,288(s8)
  40ee50:	00000000 	nop
  40ee54:	1040006e 	beqz	v0,40f010 <alg_info_esp_create_from_str+0x254>
  40ee58:	00000000 	nop
		memcpy(esp_buf, alg_str, pfs_name-alg_str);
  40ee5c:	8fc30120 	lw	v1,288(s8)
  40ee60:	8fc20138 	lw	v0,312(s8)
  40ee64:	00000000 	nop
  40ee68:	00621023 	subu	v0,v1,v0
  40ee6c:	27c40020 	addiu	a0,s8,32
  40ee70:	8fc50138 	lw	a1,312(s8)
  40ee74:	00403021 	move	a2,v0
  40ee78:	8f998a30 	lw	t9,-30160(gp)
  40ee7c:	00000000 	nop
  40ee80:	0320f809 	jalr	t9
  40ee84:	00000000 	nop
  40ee88:	8fdc0010 	lw	gp,16(s8)
  40ee8c:	00000000 	nop
		esp_buf[pfs_name-alg_str] = 0;
  40ee90:	8fc30120 	lw	v1,288(s8)
  40ee94:	8fc20138 	lw	v0,312(s8)
  40ee98:	00000000 	nop
  40ee9c:	00621823 	subu	v1,v1,v0
  40eea0:	27c20020 	addiu	v0,s8,32
  40eea4:	00431021 	addu	v0,v0,v1
  40eea8:	a0400000 	sb	zero,0(v0)
		alg_str=esp_buf;
  40eeac:	27c20020 	addiu	v0,s8,32
  40eeb0:	afc20138 	sw	v0,312(s8)
		pfs_name++;
  40eeb4:	8fc20120 	lw	v0,288(s8)
  40eeb8:	00000000 	nop
  40eebc:	24420001 	addiu	v0,v0,1
  40eec0:	afc20120 	sw	v0,288(s8)
		/* if pfs strings AND first char is not '0' */
		if (*pfs_name && pfs_name[0]!='0') {
  40eec4:	8fc20120 	lw	v0,288(s8)
  40eec8:	00000000 	nop
  40eecc:	80420000 	lb	v0,0(v0)
  40eed0:	00000000 	nop
  40eed4:	10400051 	beqz	v0,40f01c <alg_info_esp_create_from_str+0x260>
  40eed8:	00000000 	nop
  40eedc:	8fc20120 	lw	v0,288(s8)
  40eee0:	00000000 	nop
  40eee4:	80430000 	lb	v1,0(v0)
  40eee8:	24020030 	li	v0,48
  40eeec:	1062004b 	beq	v1,v0,40f01c <alg_info_esp_create_from_str+0x260>
  40eef0:	00000000 	nop
			ret=modp_getbyname_esp(pfs_name, strlen(pfs_name));
  40eef4:	8fc40120 	lw	a0,288(s8)
  40eef8:	8f998188 	lw	t9,-32376(gp)
  40eefc:	00000000 	nop
  40ef00:	0320f809 	jalr	t9
  40ef04:	00000000 	nop
  40ef08:	8fdc0010 	lw	gp,16(s8)
  40ef0c:	8fc40120 	lw	a0,288(s8)
  40ef10:	00402821 	move	a1,v0
  40ef14:	8f998024 	lw	t9,-32732(gp)
  40ef18:	00000000 	nop
  40ef1c:	2739c8e8 	addiu	t9,t9,-14104
  40ef20:	00000000 	nop
  40ef24:	0320f809 	jalr	t9
  40ef28:	00000000 	nop
  40ef2c:	8fdc0010 	lw	gp,16(s8)
  40ef30:	afc20124 	sw	v0,292(s8)
			if (ret<0) {
  40ef34:	8fc20124 	lw	v0,292(s8)
  40ef38:	00000000 	nop
  40ef3c:	0441002e 	bgez	v0,40eff8 <alg_info_esp_create_from_str+0x23c>
  40ef40:	00000000 	nop
				/* Bomb if pfsgroup not found */
				DBG(DBG_CRYPT, DBG_log("alg_info_esp_create_from_str(): "
  40ef44:	8f8284f8 	lw	v0,-31496(gp)
  40ef48:	00000000 	nop
  40ef4c:	8c420000 	lw	v0,0(v0)
  40ef50:	00000000 	nop
  40ef54:	30420002 	andi	v0,v0,0x2
  40ef58:	1040000b 	beqz	v0,40ef88 <alg_info_esp_create_from_str+0x1cc>
  40ef5c:	00000000 	nop
  40ef60:	8f848020 	lw	a0,-32736(gp)
  40ef64:	00000000 	nop
  40ef68:	24844bd0 	addiu	a0,a0,19408
  40ef6c:	8fc50120 	lw	a1,288(s8)
  40ef70:	8f9983b8 	lw	t9,-31816(gp)
  40ef74:	00000000 	nop
  40ef78:	0320f809 	jalr	t9
  40ef7c:	00000000 	nop
  40ef80:	8fdc0010 	lw	gp,16(s8)
  40ef84:	00000000 	nop
					"pfsgroup \"%s\" not found",
					pfs_name));
				if (*err_p) {
  40ef88:	8fc2013c 	lw	v0,316(s8)
  40ef8c:	00000000 	nop
  40ef90:	8c420000 	lw	v0,0(v0)
  40ef94:	00000000 	nop
  40ef98:	1040002f 	beqz	v0,40f058 <alg_info_esp_create_from_str+0x29c>
  40ef9c:	00000000 	nop
					snprintf(err_buf, sizeof(err_buf),
  40efa0:	8f848018 	lw	a0,-32744(gp)
  40efa4:	00000000 	nop
  40efa8:	24845f90 	addiu	a0,a0,24464
  40efac:	24050100 	li	a1,256
  40efb0:	8f868020 	lw	a2,-32736(gp)
  40efb4:	00000000 	nop
  40efb8:	24c64c08 	addiu	a2,a2,19464
  40efbc:	8fc70120 	lw	a3,288(s8)
  40efc0:	8f998b38 	lw	t9,-29896(gp)
  40efc4:	00000000 	nop
  40efc8:	0320f809 	jalr	t9
  40efcc:	00000000 	nop
  40efd0:	8fdc0010 	lw	gp,16(s8)
  40efd4:	00000000 	nop
						"pfsgroup \"%s\" not found",
						pfs_name);
					*err_p=err_buf;
  40efd8:	8f838018 	lw	v1,-32744(gp)
  40efdc:	00000000 	nop
  40efe0:	24635f90 	addiu	v1,v1,24464
  40efe4:	8fc2013c 	lw	v0,316(s8)
  40efe8:	00000000 	nop
  40efec:	ac430000 	sw	v1,0(v0)
				}
				goto out;
  40eff0:	10000019 	b	40f058 <alg_info_esp_create_from_str+0x29c>
  40eff4:	00000000 	nop
			}
			alg_info_esp->esp_pfsgroup=ret;
  40eff8:	8fc30124 	lw	v1,292(s8)
  40effc:	8fc20018 	lw	v0,24(s8)
  40f000:	00000000 	nop
  40f004:	ac430410 	sw	v1,1040(v0)
  40f008:	10000004 	b	40f01c <alg_info_esp_create_from_str+0x260>
  40f00c:	00000000 	nop
		}
	} else
		alg_info_esp->esp_pfsgroup = 0;
  40f010:	8fc20018 	lw	v0,24(s8)
  40f014:	00000000 	nop
  40f018:	ac400410 	sw	zero,1040(v0)
		
	alg_info_esp->alg_info_protoid=PROTO_IPSEC_ESP;
  40f01c:	24020003 	li	v0,3
  40f020:	8fc30018 	lw	v1,24(s8)
  40f024:	00000000 	nop
  40f028:	ac62000c 	sw	v0,12(v1)
	ret=alg_info_parse_str((struct alg_info *)alg_info_esp, alg_str, err_p) ;
  40f02c:	8fc40018 	lw	a0,24(s8)
  40f030:	8fc50138 	lw	a1,312(s8)
  40f034:	8fc6013c 	lw	a2,316(s8)
  40f038:	8f998024 	lw	t9,-32732(gp)
  40f03c:	00000000 	nop
  40f040:	2739e8fc 	addiu	t9,t9,-5892
  40f044:	00000000 	nop
  40f048:	0320f809 	jalr	t9
  40f04c:	00000000 	nop
  40f050:	8fdc0010 	lw	gp,16(s8)
  40f054:	afc20124 	sw	v0,292(s8)
out:
	if (ret<0)
  40f058:	8fc20124 	lw	v0,292(s8)
  40f05c:	00000000 	nop
  40f060:	0441000d 	bgez	v0,40f098 <alg_info_esp_create_from_str+0x2dc>
  40f064:	00000000 	nop
	{
		pfreeany(alg_info_esp);
  40f068:	8fc20018 	lw	v0,24(s8)
  40f06c:	00000000 	nop
  40f070:	10400008 	beqz	v0,40f094 <alg_info_esp_create_from_str+0x2d8>
  40f074:	00000000 	nop
  40f078:	8fc40018 	lw	a0,24(s8)
  40f07c:	8f998094 	lw	t9,-32620(gp)
  40f080:	00000000 	nop
  40f084:	0320f809 	jalr	t9
  40f088:	00000000 	nop
  40f08c:	8fdc0010 	lw	gp,16(s8)
  40f090:	00000000 	nop
		alg_info_esp=NULL;
  40f094:	afc00018 	sw	zero,24(s8)
	}
	return alg_info_esp;
  40f098:	8fc20018 	lw	v0,24(s8)
  40f09c:	00000000 	nop

}
  40f0a0:	03c0e821 	move	sp,s8
  40f0a4:	8fbf0130 	lw	ra,304(sp)
  40f0a8:	8fbe012c 	lw	s8,300(sp)
  40f0ac:	27bd0138 	addiu	sp,sp,312
  40f0b0:	03e00008 	jr	ra
  40f0b4:	00000000 	nop

0040f0b8 <alg_info_ike_create_from_str>:
  40f0b8:	3c1c0fc0 	lui	gp,0xfc0
  40f0bc:	279cd8b8 	addiu	gp,gp,-10056
  40f0c0:	0399e021 	addu	gp,gp,t9
  40f0c4:	27bdffd0 	addiu	sp,sp,-48
  40f0c8:	afbc0010 	sw	gp,16(sp)
  40f0cc:	afbf0028 	sw	ra,40(sp)
  40f0d0:	afbe0024 	sw	s8,36(sp)
  40f0d4:	afbc0020 	sw	gp,32(sp)
  40f0d8:	03a0f021 	move	s8,sp
  40f0dc:	afc40030 	sw	a0,48(s8)
  40f0e0:	afc50034 	sw	a1,52(s8)
#ifndef NO_PLUTO
struct alg_info_ike *
alg_info_ike_create_from_str (const char *alg_str, const char **err_p)
{
	struct alg_info_ike *alg_info_ike;
	/*
	 * 	alg_info storage should be sized dynamically
	 * 	but this may require 2passes to know
	 * 	transform count in advance.
	 */
	alg_info_ike=alloc_thing (struct alg_info_ike, "alg_info_ike");
  40f0e4:	24040410 	li	a0,1040
  40f0e8:	8f858020 	lw	a1,-32736(gp)
  40f0ec:	00000000 	nop
  40f0f0:	24a54c20 	addiu	a1,a1,19488
  40f0f4:	8f998084 	lw	t9,-32636(gp)
  40f0f8:	00000000 	nop
  40f0fc:	0320f809 	jalr	t9
  40f100:	00000000 	nop
  40f104:	8fdc0010 	lw	gp,16(s8)
  40f108:	afc20018 	sw	v0,24(s8)
	if (!alg_info_ike) goto out;
  40f10c:	8fc20018 	lw	v0,24(s8)
  40f110:	00000000 	nop
  40f114:	14400003 	bnez	v0,40f124 <alg_info_ike_create_from_str+0x6c>
  40f118:	00000000 	nop
  40f11c:	1000001d 	b	40f194 <alg_info_ike_create_from_str+0xdc>
  40f120:	00000000 	nop
	alg_info_ike->alg_info_protoid=PROTO_ISAKMP;
  40f124:	24020001 	li	v0,1
  40f128:	8fc30018 	lw	v1,24(s8)
  40f12c:	00000000 	nop
  40f130:	ac62000c 	sw	v0,12(v1)
	if (alg_info_parse_str((struct alg_info *)alg_info_ike,
					alg_str, err_p) < 0)
  40f134:	8fc40018 	lw	a0,24(s8)
  40f138:	8fc50030 	lw	a1,48(s8)
  40f13c:	8fc60034 	lw	a2,52(s8)
  40f140:	8f998024 	lw	t9,-32732(gp)
  40f144:	00000000 	nop
  40f148:	2739e8fc 	addiu	t9,t9,-5892
  40f14c:	00000000 	nop
  40f150:	0320f809 	jalr	t9
  40f154:	00000000 	nop
  40f158:	8fdc0010 	lw	gp,16(s8)
  40f15c:	0441000d 	bgez	v0,40f194 <alg_info_ike_create_from_str+0xdc>
  40f160:	00000000 	nop
	{
		pfreeany(alg_info_ike);
  40f164:	8fc20018 	lw	v0,24(s8)
  40f168:	00000000 	nop
  40f16c:	10400008 	beqz	v0,40f190 <alg_info_ike_create_from_str+0xd8>
  40f170:	00000000 	nop
  40f174:	8fc40018 	lw	a0,24(s8)
  40f178:	8f998094 	lw	t9,-32620(gp)
  40f17c:	00000000 	nop
  40f180:	0320f809 	jalr	t9
  40f184:	00000000 	nop
  40f188:	8fdc0010 	lw	gp,16(s8)
  40f18c:	00000000 	nop
		alg_info_ike=NULL;
  40f190:	afc00018 	sw	zero,24(s8)
	}
out:
	return alg_info_ike;
  40f194:	8fc20018 	lw	v0,24(s8)
  40f198:	00000000 	nop
}
  40f19c:	03c0e821 	move	sp,s8
  40f1a0:	8fbf0028 	lw	ra,40(sp)
  40f1a4:	8fbe0024 	lw	s8,36(sp)
  40f1a8:	27bd0030 	addiu	sp,sp,48
  40f1ac:	03e00008 	jr	ra
  40f1b0:	00000000 	nop

0040f1b4 <alg_info_addref>:
  40f1b4:	3c1c0fc0 	lui	gp,0xfc0
  40f1b8:	279cd7bc 	addiu	gp,gp,-10308
  40f1bc:	0399e021 	addu	gp,gp,t9
  40f1c0:	27bdffd0 	addiu	sp,sp,-48
  40f1c4:	afbc0010 	sw	gp,16(sp)
  40f1c8:	afbf0028 	sw	ra,40(sp)
  40f1cc:	afbe0024 	sw	s8,36(sp)
  40f1d0:	afbc0020 	sw	gp,32(sp)
  40f1d4:	03a0f021 	move	s8,sp
  40f1d8:	afc40030 	sw	a0,48(s8)
#endif
/*
 * 	alg_info struct can be shared by
 * 	several connections instances,
 * 	handle free() with ref_cnts
 */
void 
alg_info_addref(struct alg_info *alg_info)
{
	if (alg_info != NULL) {
  40f1dc:	8fc20030 	lw	v0,48(s8)
  40f1e0:	00000000 	nop
  40f1e4:	1040001c 	beqz	v0,40f258 <alg_info_addref+0xa4>
  40f1e8:	00000000 	nop
		alg_info->ref_cnt++;
  40f1ec:	8fc20030 	lw	v0,48(s8)
  40f1f0:	00000000 	nop
  40f1f4:	8c420004 	lw	v0,4(v0)
  40f1f8:	00000000 	nop
  40f1fc:	24430001 	addiu	v1,v0,1
  40f200:	8fc20030 	lw	v0,48(s8)
  40f204:	00000000 	nop
  40f208:	ac430004 	sw	v1,4(v0)
		DBG(DBG_CRYPT, DBG_log("alg_info_addref() "
  40f20c:	8f8284f8 	lw	v0,-31496(gp)
  40f210:	00000000 	nop
  40f214:	8c420000 	lw	v0,0(v0)
  40f218:	00000000 	nop
  40f21c:	30420002 	andi	v0,v0,0x2
  40f220:	1040000d 	beqz	v0,40f258 <alg_info_addref+0xa4>
  40f224:	00000000 	nop
  40f228:	8f848020 	lw	a0,-32736(gp)
  40f22c:	00000000 	nop
  40f230:	24844c30 	addiu	a0,a0,19504
  40f234:	8fc20030 	lw	v0,48(s8)
  40f238:	00000000 	nop
  40f23c:	8c450004 	lw	a1,4(v0)
  40f240:	8f9983b8 	lw	t9,-31816(gp)
  40f244:	00000000 	nop
  40f248:	0320f809 	jalr	t9
  40f24c:	00000000 	nop
  40f250:	8fdc0010 	lw	gp,16(s8)
  40f254:	00000000 	nop
				"alg_info->ref_cnt=%d", alg_info->ref_cnt));
	}
}
  40f258:	03c0e821 	move	sp,s8
  40f25c:	8fbf0028 	lw	ra,40(sp)
  40f260:	8fbe0024 	lw	s8,36(sp)
  40f264:	27bd0030 	addiu	sp,sp,48
  40f268:	03e00008 	jr	ra
  40f26c:	00000000 	nop

0040f270 <alg_info_delref>:
  40f270:	3c1c0fc0 	lui	gp,0xfc0
  40f274:	279cd700 	addiu	gp,gp,-10496
  40f278:	0399e021 	addu	gp,gp,t9
  40f27c:	27bdffd0 	addiu	sp,sp,-48
  40f280:	afbc0010 	sw	gp,16(sp)
  40f284:	afbf0028 	sw	ra,40(sp)
  40f288:	afbe0024 	sw	s8,36(sp)
  40f28c:	afbc0020 	sw	gp,32(sp)
  40f290:	03a0f021 	move	s8,sp
  40f294:	afc40030 	sw	a0,48(s8)
void
alg_info_delref(struct alg_info **alg_info_p)
{
	struct alg_info *alg_info=*alg_info_p;
  40f298:	8fc20030 	lw	v0,48(s8)
  40f29c:	00000000 	nop
  40f2a0:	8c420000 	lw	v0,0(v0)
  40f2a4:	00000000 	nop
  40f2a8:	afc20018 	sw	v0,24(s8)
	if (alg_info != NULL) {
  40f2ac:	8fc20018 	lw	v0,24(s8)
  40f2b0:	00000000 	nop
  40f2b4:	1040004f 	beqz	v0,40f3f4 <alg_info_delref+0x184>
  40f2b8:	00000000 	nop
		passert(alg_info->ref_cnt != 0);
  40f2bc:	8fc20018 	lw	v0,24(s8)
  40f2c0:	00000000 	nop
  40f2c4:	8c420004 	lw	v0,4(v0)
  40f2c8:	00000000 	nop
  40f2cc:	1440000e 	bnez	v0,40f308 <alg_info_delref+0x98>
  40f2d0:	00000000 	nop
  40f2d4:	8f848020 	lw	a0,-32736(gp)
  40f2d8:	00000000 	nop
  40f2dc:	24844c58 	addiu	a0,a0,19544
  40f2e0:	8f858020 	lw	a1,-32736(gp)
  40f2e4:	00000000 	nop
  40f2e8:	24a54664 	addiu	a1,a1,18020
  40f2ec:	24060385 	li	a2,901
  40f2f0:	8f998bb8 	lw	t9,-29768(gp)
  40f2f4:	00000000 	nop
  40f2f8:	0320f809 	jalr	t9
  40f2fc:	00000000 	nop
  40f300:	8fdc0010 	lw	gp,16(s8)
  40f304:	00000000 	nop
		alg_info->ref_cnt--;
  40f308:	8fc20018 	lw	v0,24(s8)
  40f30c:	00000000 	nop
  40f310:	8c420004 	lw	v0,4(v0)
  40f314:	00000000 	nop
  40f318:	2443ffff 	addiu	v1,v0,-1
  40f31c:	8fc20018 	lw	v0,24(s8)
  40f320:	00000000 	nop
  40f324:	ac430004 	sw	v1,4(v0)
		DBG(DBG_CRYPT, DBG_log("alg_info_delref() "
  40f328:	8f8284f8 	lw	v0,-31496(gp)
  40f32c:	00000000 	nop
  40f330:	8c420000 	lw	v0,0(v0)
  40f334:	00000000 	nop
  40f338:	30420002 	andi	v0,v0,0x2
  40f33c:	1040000d 	beqz	v0,40f374 <alg_info_delref+0x104>
  40f340:	00000000 	nop
  40f344:	8f848020 	lw	a0,-32736(gp)
  40f348:	00000000 	nop
  40f34c:	24844c70 	addiu	a0,a0,19568
  40f350:	8fc20018 	lw	v0,24(s8)
  40f354:	00000000 	nop
  40f358:	8c450004 	lw	a1,4(v0)
  40f35c:	8f9983b8 	lw	t9,-31816(gp)
  40f360:	00000000 	nop
  40f364:	0320f809 	jalr	t9
  40f368:	00000000 	nop
  40f36c:	8fdc0010 	lw	gp,16(s8)
  40f370:	00000000 	nop
				"alg_info->ref_cnt=%d", alg_info->ref_cnt));
		if (alg_info->ref_cnt==0) {
  40f374:	8fc20018 	lw	v0,24(s8)
  40f378:	00000000 	nop
  40f37c:	8c420004 	lw	v0,4(v0)
  40f380:	00000000 	nop
  40f384:	14400018 	bnez	v0,40f3e8 <alg_info_delref+0x178>
  40f388:	00000000 	nop
			DBG(DBG_CRYPT, DBG_log("alg_info_delref() "
  40f38c:	8f8284f8 	lw	v0,-31496(gp)
  40f390:	00000000 	nop
  40f394:	8c420000 	lw	v0,0(v0)
  40f398:	00000000 	nop
  40f39c:	30420002 	andi	v0,v0,0x2
  40f3a0:	1040000a 	beqz	v0,40f3cc <alg_info_delref+0x15c>
  40f3a4:	00000000 	nop
  40f3a8:	8f848020 	lw	a0,-32736(gp)
  40f3ac:	00000000 	nop
  40f3b0:	24844c98 	addiu	a0,a0,19608
  40f3b4:	8f9983b8 	lw	t9,-31816(gp)
  40f3b8:	00000000 	nop
  40f3bc:	0320f809 	jalr	t9
  40f3c0:	00000000 	nop
  40f3c4:	8fdc0010 	lw	gp,16(s8)
  40f3c8:	00000000 	nop
				"freeing alg_info"));
			alg_info_free(alg_info);
  40f3cc:	8fc40018 	lw	a0,24(s8)
  40f3d0:	8f998450 	lw	t9,-31664(gp)
  40f3d4:	00000000 	nop
  40f3d8:	0320f809 	jalr	t9
  40f3dc:	00000000 	nop
  40f3e0:	8fdc0010 	lw	gp,16(s8)
  40f3e4:	00000000 	nop
		}
		*alg_info_p=NULL;
  40f3e8:	8fc20030 	lw	v0,48(s8)
  40f3ec:	00000000 	nop
  40f3f0:	ac400000 	sw	zero,0(v0)
	}
}
  40f3f4:	03c0e821 	move	sp,s8
  40f3f8:	8fbf0028 	lw	ra,40(sp)
  40f3fc:	8fbe0024 	lw	s8,36(sp)
  40f400:	27bd0030 	addiu	sp,sp,48
  40f404:	03e00008 	jr	ra
  40f408:	00000000 	nop

0040f40c <alg_info_snprint>:
  40f40c:	3c1c0fc0 	lui	gp,0xfc0
  40f410:	279cd564 	addiu	gp,gp,-10908
  40f414:	0399e021 	addu	gp,gp,t9
  40f418:	27bdffa8 	addiu	sp,sp,-88
  40f41c:	afbc0020 	sw	gp,32(sp)
  40f420:	afbf0050 	sw	ra,80(sp)
  40f424:	afbe004c 	sw	s8,76(sp)
  40f428:	afbc0048 	sw	gp,72(sp)
  40f42c:	03a0f021 	move	s8,sp
  40f430:	afc40058 	sw	a0,88(s8)
  40f434:	afc5005c 	sw	a1,92(s8)
  40f438:	afc60060 	sw	a2,96(s8)

/*	snprint already parsed transform list (alg_info)	*/
int
alg_info_snprint(char *buf, int buflen, struct alg_info *alg_info)
{
	char *ptr=buf;
  40f43c:	8fc20058 	lw	v0,88(s8)
  40f440:	00000000 	nop
  40f444:	afc20028 	sw	v0,40(s8)
	int np=0;
  40f448:	afc0002c 	sw	zero,44(s8)
	struct esp_info *esp_info;
#ifndef NO_PLUTO
	struct ike_info *ike_info;
#endif
	int cnt;
	ptr=buf;
  40f44c:	8fc20058 	lw	v0,88(s8)
  40f450:	00000000 	nop
  40f454:	afc20028 	sw	v0,40(s8)
	switch(alg_info->alg_info_protoid) {
  40f458:	8fc20060 	lw	v0,96(s8)
  40f45c:	00000000 	nop
  40f460:	8c42000c 	lw	v0,12(v0)
  40f464:	00000000 	nop
  40f468:	afc20040 	sw	v0,64(s8)
  40f46c:	24020001 	li	v0,1
  40f470:	8fc30040 	lw	v1,64(s8)
  40f474:	00000000 	nop
  40f478:	10620089 	beq	v1,v0,40f6a0 <alg_info_snprint+0x294>
  40f47c:	00000000 	nop
  40f480:	24020003 	li	v0,3
  40f484:	8fc30040 	lw	v1,64(s8)
  40f488:	00000000 	nop
  40f48c:	1062001b 	beq	v1,v0,40f4fc <alg_info_snprint+0xf0>
  40f490:	00000000 	nop
		case PROTO_IPSEC_ESP: 
		{
			struct alg_info_esp *alg_info_esp=(struct alg_info_esp *)alg_info;
			ALG_INFO_ESP_FOREACH(alg_info_esp, esp_info, cnt) {
				np=snprintf(ptr, buflen, "%d_%03d-%d, "
						, esp_info->esp_ealg_id
						, (int)esp_info->esp_ealg_keylen
						, esp_info->esp_aalg_id);
				ptr+=np;
				buflen-=np;
				if(buflen<0) goto out;
			}
			if (alg_info_esp->esp_pfsgroup) {
				np=snprintf(ptr, buflen, "; pfsgroup=%d; "
					, alg_info_esp->esp_pfsgroup);
				ptr+=np;
				buflen-=np;
				if(buflen<0) goto out;
			}
			break;
	        }
#ifndef NO_PLUTO
		case PROTO_ISAKMP:
			ALG_INFO_IKE_FOREACH((struct alg_info_ike *)alg_info, ike_info, cnt) {
				np=snprintf(ptr, buflen, "%d_%03d-%d-%d, ",
						ike_info->ike_ealg,
						(int)ike_info->ike_eklen,
						ike_info->ike_halg,
						ike_info->ike_modp);
				ptr+=np;
				buflen-=np;
				if(buflen<0) goto out;
			}
			break;
#endif
		default:
			np=snprintf(buf, buflen, "INVALID protoid=%d\n",
  40f494:	8fc40058 	lw	a0,88(s8)
  40f498:	8fc5005c 	lw	a1,92(s8)
  40f49c:	8f868020 	lw	a2,-32736(gp)
  40f4a0:	00000000 	nop
  40f4a4:	24c64cbc 	addiu	a2,a2,19644
  40f4a8:	8fc20060 	lw	v0,96(s8)
  40f4ac:	00000000 	nop
  40f4b0:	8c47000c 	lw	a3,12(v0)
  40f4b4:	8f998b38 	lw	t9,-29896(gp)
  40f4b8:	00000000 	nop
  40f4bc:	0320f809 	jalr	t9
  40f4c0:	00000000 	nop
  40f4c4:	8fdc0020 	lw	gp,32(s8)
  40f4c8:	afc2002c 	sw	v0,44(s8)
					alg_info->alg_info_protoid);
			ptr+=np;
  40f4cc:	8fc30028 	lw	v1,40(s8)
  40f4d0:	8fc2002c 	lw	v0,44(s8)
  40f4d4:	00000000 	nop
  40f4d8:	00621021 	addu	v0,v1,v0
  40f4dc:	afc20028 	sw	v0,40(s8)
			buflen-=np;
  40f4e0:	8fc3005c 	lw	v1,92(s8)
  40f4e4:	8fc2002c 	lw	v0,44(s8)
  40f4e8:	00000000 	nop
  40f4ec:	00621023 	subu	v0,v1,v0
  40f4f0:	afc2005c 	sw	v0,92(s8)
			goto out;
  40f4f4:	100000da 	b	40f860 <alg_info_snprint+0x454>
  40f4f8:	00000000 	nop
  40f4fc:	8fc20060 	lw	v0,96(s8)
  40f500:	00000000 	nop
  40f504:	afc2003c 	sw	v0,60(s8)
  40f508:	8fc2003c 	lw	v0,60(s8)
  40f50c:	00000000 	nop
  40f510:	8c420000 	lw	v0,0(v0)
  40f514:	00000000 	nop
  40f518:	afc20038 	sw	v0,56(s8)
  40f51c:	8fc2003c 	lw	v0,60(s8)
  40f520:	00000000 	nop
  40f524:	24420010 	addiu	v0,v0,16
  40f528:	afc20030 	sw	v0,48(s8)
  40f52c:	8fc20038 	lw	v0,56(s8)
  40f530:	00000000 	nop
  40f534:	2442ffff 	addiu	v0,v0,-1
  40f538:	00401821 	move	v1,v0
  40f53c:	afc30038 	sw	v1,56(s8)
  40f540:	2402ffff 	li	v0,-1
  40f544:	14620003 	bne	v1,v0,40f554 <alg_info_snprint+0x148>
  40f548:	00000000 	nop
  40f54c:	10000030 	b	40f610 <alg_info_snprint+0x204>
  40f550:	00000000 	nop
  40f554:	8fc20030 	lw	v0,48(s8)
  40f558:	00000000 	nop
  40f55c:	90430000 	lbu	v1,0(v0)
  40f560:	8fc20030 	lw	v0,48(s8)
  40f564:	00000000 	nop
  40f568:	8c420004 	lw	v0,4(v0)
  40f56c:	00000000 	nop
  40f570:	afa20010 	sw	v0,16(sp)
  40f574:	8fc20030 	lw	v0,48(s8)
  40f578:	00000000 	nop
  40f57c:	94420002 	lhu	v0,2(v0)
  40f580:	00000000 	nop
  40f584:	afa20014 	sw	v0,20(sp)
  40f588:	8fc40028 	lw	a0,40(s8)
  40f58c:	8fc5005c 	lw	a1,92(s8)
  40f590:	8f868020 	lw	a2,-32736(gp)
  40f594:	00000000 	nop
  40f598:	24c64cd0 	addiu	a2,a2,19664
  40f59c:	00603821 	move	a3,v1
  40f5a0:	8f998b38 	lw	t9,-29896(gp)
  40f5a4:	00000000 	nop
  40f5a8:	0320f809 	jalr	t9
  40f5ac:	00000000 	nop
  40f5b0:	8fdc0020 	lw	gp,32(s8)
  40f5b4:	afc2002c 	sw	v0,44(s8)
  40f5b8:	8fc30028 	lw	v1,40(s8)
  40f5bc:	8fc2002c 	lw	v0,44(s8)
  40f5c0:	00000000 	nop
  40f5c4:	00621021 	addu	v0,v1,v0
  40f5c8:	afc20028 	sw	v0,40(s8)
  40f5cc:	8fc3005c 	lw	v1,92(s8)
  40f5d0:	8fc2002c 	lw	v0,44(s8)
  40f5d4:	00000000 	nop
  40f5d8:	00621023 	subu	v0,v1,v0
  40f5dc:	afc2005c 	sw	v0,92(s8)
  40f5e0:	8fc2005c 	lw	v0,92(s8)
  40f5e4:	00000000 	nop
  40f5e8:	04410003 	bgez	v0,40f5f8 <alg_info_snprint+0x1ec>
  40f5ec:	00000000 	nop
  40f5f0:	1000009b 	b	40f860 <alg_info_snprint+0x454>
  40f5f4:	00000000 	nop
  40f5f8:	8fc20030 	lw	v0,48(s8)
  40f5fc:	00000000 	nop
  40f600:	24420010 	addiu	v0,v0,16
  40f604:	afc20030 	sw	v0,48(s8)
  40f608:	1000ffc8 	b	40f52c <alg_info_snprint+0x120>
  40f60c:	00000000 	nop
  40f610:	8fc2003c 	lw	v0,60(s8)
  40f614:	00000000 	nop
  40f618:	8c420410 	lw	v0,1040(v0)
  40f61c:	00000000 	nop
  40f620:	10400066 	beqz	v0,40f7bc <alg_info_snprint+0x3b0>
  40f624:	00000000 	nop
  40f628:	8fc40028 	lw	a0,40(s8)
  40f62c:	8fc5005c 	lw	a1,92(s8)
  40f630:	8f868020 	lw	a2,-32736(gp)
  40f634:	00000000 	nop
  40f638:	24c64ce0 	addiu	a2,a2,19680
  40f63c:	8fc2003c 	lw	v0,60(s8)
  40f640:	00000000 	nop
  40f644:	8c470410 	lw	a3,1040(v0)
  40f648:	8f998b38 	lw	t9,-29896(gp)
  40f64c:	00000000 	nop
  40f650:	0320f809 	jalr	t9
  40f654:	00000000 	nop
  40f658:	8fdc0020 	lw	gp,32(s8)
  40f65c:	afc2002c 	sw	v0,44(s8)
  40f660:	8fc30028 	lw	v1,40(s8)
  40f664:	8fc2002c 	lw	v0,44(s8)
  40f668:	00000000 	nop
  40f66c:	00621021 	addu	v0,v1,v0
  40f670:	afc20028 	sw	v0,40(s8)
  40f674:	8fc3005c 	lw	v1,92(s8)
  40f678:	8fc2002c 	lw	v0,44(s8)
  40f67c:	00000000 	nop
  40f680:	00621023 	subu	v0,v1,v0
  40f684:	afc2005c 	sw	v0,92(s8)
  40f688:	8fc2005c 	lw	v0,92(s8)
  40f68c:	00000000 	nop
  40f690:	0441004a 	bgez	v0,40f7bc <alg_info_snprint+0x3b0>
  40f694:	00000000 	nop
  40f698:	10000071 	b	40f860 <alg_info_snprint+0x454>
  40f69c:	00000000 	nop
  40f6a0:	8fc20060 	lw	v0,96(s8)
  40f6a4:	00000000 	nop
  40f6a8:	8c420000 	lw	v0,0(v0)
  40f6ac:	00000000 	nop
  40f6b0:	afc20038 	sw	v0,56(s8)
  40f6b4:	8fc20060 	lw	v0,96(s8)
  40f6b8:	00000000 	nop
  40f6bc:	24420010 	addiu	v0,v0,16
  40f6c0:	afc20034 	sw	v0,52(s8)
  40f6c4:	8fc20038 	lw	v0,56(s8)
  40f6c8:	00000000 	nop
  40f6cc:	2442ffff 	addiu	v0,v0,-1
  40f6d0:	00401821 	move	v1,v0
  40f6d4:	afc30038 	sw	v1,56(s8)
  40f6d8:	2402ffff 	li	v0,-1
  40f6dc:	14620003 	bne	v1,v0,40f6ec <alg_info_snprint+0x2e0>
  40f6e0:	00000000 	nop
  40f6e4:	10000035 	b	40f7bc <alg_info_snprint+0x3b0>
  40f6e8:	00000000 	nop
  40f6ec:	8fc20034 	lw	v0,52(s8)
  40f6f0:	00000000 	nop
  40f6f4:	94430000 	lhu	v1,0(v0)
  40f6f8:	8fc20034 	lw	v0,52(s8)
  40f6fc:	00000000 	nop
  40f700:	8c420004 	lw	v0,4(v0)
  40f704:	00000000 	nop
  40f708:	afa20010 	sw	v0,16(sp)
  40f70c:	8fc20034 	lw	v0,52(s8)
  40f710:	00000000 	nop
  40f714:	90420002 	lbu	v0,2(v0)
  40f718:	00000000 	nop
  40f71c:	afa20014 	sw	v0,20(sp)
  40f720:	8fc20034 	lw	v0,52(s8)
  40f724:	00000000 	nop
  40f728:	9442000c 	lhu	v0,12(v0)
  40f72c:	00000000 	nop
  40f730:	afa20018 	sw	v0,24(sp)
  40f734:	8fc40028 	lw	a0,40(s8)
  40f738:	8fc5005c 	lw	a1,92(s8)
  40f73c:	8f868020 	lw	a2,-32736(gp)
  40f740:	00000000 	nop
  40f744:	24c64cf0 	addiu	a2,a2,19696
  40f748:	00603821 	move	a3,v1
  40f74c:	8f998b38 	lw	t9,-29896(gp)
  40f750:	00000000 	nop
  40f754:	0320f809 	jalr	t9
  40f758:	00000000 	nop
  40f75c:	8fdc0020 	lw	gp,32(s8)
  40f760:	afc2002c 	sw	v0,44(s8)
  40f764:	8fc30028 	lw	v1,40(s8)
  40f768:	8fc2002c 	lw	v0,44(s8)
  40f76c:	00000000 	nop
  40f770:	00621021 	addu	v0,v1,v0
  40f774:	afc20028 	sw	v0,40(s8)
  40f778:	8fc3005c 	lw	v1,92(s8)
  40f77c:	8fc2002c 	lw	v0,44(s8)
  40f780:	00000000 	nop
  40f784:	00621023 	subu	v0,v1,v0
  40f788:	afc2005c 	sw	v0,92(s8)
  40f78c:	8fc2005c 	lw	v0,92(s8)
  40f790:	00000000 	nop
  40f794:	04410003 	bgez	v0,40f7a4 <alg_info_snprint+0x398>
  40f798:	00000000 	nop
  40f79c:	10000030 	b	40f860 <alg_info_snprint+0x454>
  40f7a0:	00000000 	nop
  40f7a4:	8fc20034 	lw	v0,52(s8)
  40f7a8:	00000000 	nop
  40f7ac:	24420010 	addiu	v0,v0,16
  40f7b0:	afc20034 	sw	v0,52(s8)
  40f7b4:	1000ffc3 	b	40f6c4 <alg_info_snprint+0x2b8>
  40f7b8:	00000000 	nop
	}
	np=snprintf(ptr, buflen, "flags=%s",
  40f7bc:	8fc20060 	lw	v0,96(s8)
  40f7c0:	00000000 	nop
  40f7c4:	8c420008 	lw	v0,8(v0)
  40f7c8:	00000000 	nop
  40f7cc:	30420001 	andi	v0,v0,0x1
  40f7d0:	10400008 	beqz	v0,40f7f4 <alg_info_snprint+0x3e8>
  40f7d4:	00000000 	nop
  40f7d8:	8f828020 	lw	v0,-32736(gp)
  40f7dc:	00000000 	nop
  40f7e0:	24424d00 	addiu	v0,v0,19712
  40f7e4:	00000000 	nop
  40f7e8:	afc20044 	sw	v0,68(s8)
  40f7ec:	10000006 	b	40f808 <alg_info_snprint+0x3fc>
  40f7f0:	00000000 	nop
  40f7f4:	8f838020 	lw	v1,-32736(gp)
  40f7f8:	00000000 	nop
  40f7fc:	24634d08 	addiu	v1,v1,19720
  40f800:	00000000 	nop
  40f804:	afc30044 	sw	v1,68(s8)
  40f808:	8fc40028 	lw	a0,40(s8)
  40f80c:	8fc5005c 	lw	a1,92(s8)
  40f810:	8f868020 	lw	a2,-32736(gp)
  40f814:	00000000 	nop
  40f818:	24c64d10 	addiu	a2,a2,19728
  40f81c:	8fc70044 	lw	a3,68(s8)
  40f820:	8f998b38 	lw	t9,-29896(gp)
  40f824:	00000000 	nop
  40f828:	0320f809 	jalr	t9
  40f82c:	00000000 	nop
  40f830:	8fdc0020 	lw	gp,32(s8)
  40f834:	afc2002c 	sw	v0,44(s8)
			alg_info->alg_info_flags&ALG_INFO_F_STRICT?
			"strict":"-strict");
	ptr+=np;
  40f838:	8fc30028 	lw	v1,40(s8)
  40f83c:	8fc2002c 	lw	v0,44(s8)
  40f840:	00000000 	nop
  40f844:	00621021 	addu	v0,v1,v0
  40f848:	afc20028 	sw	v0,40(s8)
	buflen-=np;
  40f84c:	8fc3005c 	lw	v1,92(s8)
  40f850:	8fc2002c 	lw	v0,44(s8)
  40f854:	00000000 	nop
  40f858:	00621023 	subu	v0,v1,v0
  40f85c:	afc2005c 	sw	v0,92(s8)
out:
	if (buflen<0) { 
  40f860:	8fc2005c 	lw	v0,92(s8)
  40f864:	00000000 	nop
  40f868:	0441000c 	bgez	v0,40f89c <alg_info_snprint+0x490>
  40f86c:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "buffer space exhausted in alg_info_snprint_ike(), buflen=%d", buflen);
  40f870:	24040003 	li	a0,3
  40f874:	8f858020 	lw	a1,-32736(gp)
  40f878:	00000000 	nop
  40f87c:	24a54d1c 	addiu	a1,a1,19740
  40f880:	8fc6005c 	lw	a2,92(s8)
  40f884:	8f998c48 	lw	t9,-29624(gp)
  40f888:	00000000 	nop
  40f88c:	0320f809 	jalr	t9
  40f890:	00000000 	nop
  40f894:	8fdc0020 	lw	gp,32(s8)
  40f898:	00000000 	nop
	}
	
	return ptr-buf;
  40f89c:	8fc20028 	lw	v0,40(s8)
  40f8a0:	8fc30058 	lw	v1,88(s8)
  40f8a4:	00000000 	nop
  40f8a8:	00431023 	subu	v0,v0,v1
}
  40f8ac:	03c0e821 	move	sp,s8
  40f8b0:	8fbf0050 	lw	ra,80(sp)
  40f8b4:	8fbe004c 	lw	s8,76(sp)
  40f8b8:	27bd0058 	addiu	sp,sp,88
  40f8bc:	03e00008 	jr	ra
  40f8c0:	00000000 	nop

0040f8c4 <alg_info_snprint_esp>:
  40f8c4:	3c1c0fc0 	lui	gp,0xfc0
  40f8c8:	279cd0ac 	addiu	gp,gp,-12116
  40f8cc:	0399e021 	addu	gp,gp,t9
  40f8d0:	27bdffb0 	addiu	sp,sp,-80
  40f8d4:	afbc0020 	sw	gp,32(sp)
  40f8d8:	afbf0048 	sw	ra,72(sp)
  40f8dc:	afbe0044 	sw	s8,68(sp)
  40f8e0:	afbc0040 	sw	gp,64(sp)
  40f8e4:	03a0f021 	move	s8,sp
  40f8e8:	afc40050 	sw	a0,80(s8)
  40f8ec:	afc50054 	sw	a1,84(s8)
  40f8f0:	afc60058 	sw	a2,88(s8)

#ifndef NO_PLUTO
int
alg_info_snprint_esp(char *buf, int buflen, struct alg_info_esp *alg_info)
{
	char *ptr=buf;
  40f8f4:	8fc20050 	lw	v0,80(s8)
  40f8f8:	00000000 	nop
  40f8fc:	afc20028 	sw	v0,40(s8)
	int ret;
	struct esp_info *esp_info;
	int cnt;
	int eklen, aklen;
	ptr=buf;
  40f900:	8fc20050 	lw	v0,80(s8)
  40f904:	00000000 	nop
  40f908:	afc20028 	sw	v0,40(s8)
	ALG_INFO_ESP_FOREACH(alg_info, esp_info, cnt) {
  40f90c:	8fc20058 	lw	v0,88(s8)
  40f910:	00000000 	nop
  40f914:	8c420000 	lw	v0,0(v0)
  40f918:	00000000 	nop
  40f91c:	afc20034 	sw	v0,52(s8)
  40f920:	8fc20058 	lw	v0,88(s8)
  40f924:	00000000 	nop
  40f928:	24420010 	addiu	v0,v0,16
  40f92c:	afc20030 	sw	v0,48(s8)
  40f930:	8fc20034 	lw	v0,52(s8)
  40f934:	00000000 	nop
  40f938:	2442ffff 	addiu	v0,v0,-1
  40f93c:	00401821 	move	v1,v0
  40f940:	afc30034 	sw	v1,52(s8)
  40f944:	2402ffff 	li	v0,-1
  40f948:	14620003 	bne	v1,v0,40f958 <alg_info_snprint_esp+0x94>
  40f94c:	00000000 	nop
  40f950:	10000076 	b	40fb2c <alg_info_snprint_esp+0x268>
  40f954:	00000000 	nop
		if (kernel_alg_esp_enc_ok(esp_info->esp_ealg_id, 0, NULL) &&
			(kernel_alg_esp_auth_ok(esp_info->esp_aalg_id, NULL))) {
  40f958:	8fc20030 	lw	v0,48(s8)
  40f95c:	00000000 	nop
  40f960:	90420000 	lbu	v0,0(v0)
  40f964:	00000000 	nop
  40f968:	00402021 	move	a0,v0
  40f96c:	00002821 	move	a1,zero
  40f970:	00003021 	move	a2,zero
  40f974:	8f998310 	lw	t9,-31984(gp)
  40f978:	00000000 	nop
  40f97c:	0320f809 	jalr	t9
  40f980:	00000000 	nop
  40f984:	8fdc0020 	lw	gp,32(s8)
  40f988:	10400062 	beqz	v0,40fb14 <alg_info_snprint_esp+0x250>
  40f98c:	00000000 	nop
  40f990:	8fc20030 	lw	v0,48(s8)
  40f994:	00000000 	nop
  40f998:	94420002 	lhu	v0,2(v0)
  40f99c:	00000000 	nop
  40f9a0:	00402021 	move	a0,v0
  40f9a4:	00002821 	move	a1,zero
  40f9a8:	8f9988f4 	lw	t9,-30476(gp)
  40f9ac:	00000000 	nop
  40f9b0:	0320f809 	jalr	t9
  40f9b4:	00000000 	nop
  40f9b8:	8fdc0020 	lw	gp,32(s8)
  40f9bc:	10400055 	beqz	v0,40fb14 <alg_info_snprint_esp+0x250>
  40f9c0:	00000000 	nop
		eklen=esp_info->esp_ealg_keylen;
  40f9c4:	8fc20030 	lw	v0,48(s8)
  40f9c8:	00000000 	nop
  40f9cc:	8c420004 	lw	v0,4(v0)
  40f9d0:	00000000 	nop
  40f9d4:	afc20038 	sw	v0,56(s8)
		if (!eklen) 
  40f9d8:	8fc20038 	lw	v0,56(s8)
  40f9dc:	00000000 	nop
  40f9e0:	1440000d 	bnez	v0,40fa18 <alg_info_snprint_esp+0x154>
  40f9e4:	00000000 	nop
			eklen=kernel_alg_esp_enc_keylen(esp_info->esp_ealg_id)*BITS_PER_BYTE;
  40f9e8:	8fc20030 	lw	v0,48(s8)
  40f9ec:	00000000 	nop
  40f9f0:	90420000 	lbu	v0,0(v0)
  40f9f4:	00000000 	nop
  40f9f8:	00402021 	move	a0,v0
  40f9fc:	8f9984f4 	lw	t9,-31500(gp)
  40fa00:	00000000 	nop
  40fa04:	0320f809 	jalr	t9
  40fa08:	00000000 	nop
  40fa0c:	8fdc0020 	lw	gp,32(s8)
  40fa10:	000210c0 	sll	v0,v0,0x3
  40fa14:	afc20038 	sw	v0,56(s8)
		aklen=esp_info->esp_aalg_keylen;
  40fa18:	8fc20030 	lw	v0,48(s8)
  40fa1c:	00000000 	nop
  40fa20:	8c420008 	lw	v0,8(v0)
  40fa24:	00000000 	nop
  40fa28:	afc2003c 	sw	v0,60(s8)
		if (!aklen) 
  40fa2c:	8fc2003c 	lw	v0,60(s8)
  40fa30:	00000000 	nop
  40fa34:	1440000d 	bnez	v0,40fa6c <alg_info_snprint_esp+0x1a8>
  40fa38:	00000000 	nop
			aklen=kernel_alg_esp_auth_keylen(esp_info->esp_aalg_id)*BITS_PER_BYTE;
  40fa3c:	8fc20030 	lw	v0,48(s8)
  40fa40:	00000000 	nop
  40fa44:	94420002 	lhu	v0,2(v0)
  40fa48:	00000000 	nop
  40fa4c:	00402021 	move	a0,v0
  40fa50:	8f99869c 	lw	t9,-31076(gp)
  40fa54:	00000000 	nop
  40fa58:	0320f809 	jalr	t9
  40fa5c:	00000000 	nop
  40fa60:	8fdc0020 	lw	gp,32(s8)
  40fa64:	000210c0 	sll	v0,v0,0x3
  40fa68:	afc2003c 	sw	v0,60(s8)
		ret=snprintf(ptr, buflen, "%d_%03d-%d_%03d, ",
  40fa6c:	8fc20030 	lw	v0,48(s8)
  40fa70:	00000000 	nop
  40fa74:	90430000 	lbu	v1,0(v0)
  40fa78:	8fc20038 	lw	v0,56(s8)
  40fa7c:	00000000 	nop
  40fa80:	afa20010 	sw	v0,16(sp)
  40fa84:	8fc20030 	lw	v0,48(s8)
  40fa88:	00000000 	nop
  40fa8c:	94420002 	lhu	v0,2(v0)
  40fa90:	00000000 	nop
  40fa94:	afa20014 	sw	v0,20(sp)
  40fa98:	8fc2003c 	lw	v0,60(s8)
  40fa9c:	00000000 	nop
  40faa0:	afa20018 	sw	v0,24(sp)
  40faa4:	8fc40028 	lw	a0,40(s8)
  40faa8:	8fc50054 	lw	a1,84(s8)
  40faac:	8f868020 	lw	a2,-32736(gp)
  40fab0:	00000000 	nop
  40fab4:	24c64d58 	addiu	a2,a2,19800
  40fab8:	00603821 	move	a3,v1
  40fabc:	8f998b38 	lw	t9,-29896(gp)
  40fac0:	00000000 	nop
  40fac4:	0320f809 	jalr	t9
  40fac8:	00000000 	nop
  40facc:	8fdc0020 	lw	gp,32(s8)
  40fad0:	afc2002c 	sw	v0,44(s8)
				esp_info->esp_ealg_id,
				eklen,
				esp_info->esp_aalg_id,
				aklen);
		ptr+=ret;
  40fad4:	8fc30028 	lw	v1,40(s8)
  40fad8:	8fc2002c 	lw	v0,44(s8)
  40fadc:	00000000 	nop
  40fae0:	00621021 	addu	v0,v1,v0
  40fae4:	afc20028 	sw	v0,40(s8)
		buflen-=ret;
  40fae8:	8fc30054 	lw	v1,84(s8)
  40faec:	8fc2002c 	lw	v0,44(s8)
  40faf0:	00000000 	nop
  40faf4:	00621023 	subu	v0,v1,v0
  40faf8:	afc20054 	sw	v0,84(s8)
		if (buflen<0) break;
  40fafc:	8fc20054 	lw	v0,84(s8)
  40fb00:	00000000 	nop
  40fb04:	04410003 	bgez	v0,40fb14 <alg_info_snprint_esp+0x250>
  40fb08:	00000000 	nop
  40fb0c:	10000007 	b	40fb2c <alg_info_snprint_esp+0x268>
  40fb10:	00000000 	nop
  40fb14:	8fc20030 	lw	v0,48(s8)
  40fb18:	00000000 	nop
  40fb1c:	24420010 	addiu	v0,v0,16
  40fb20:	afc20030 	sw	v0,48(s8)
  40fb24:	1000ff82 	b	40f930 <alg_info_snprint_esp+0x6c>
  40fb28:	00000000 	nop
		}
	}
	return ptr-buf;
  40fb2c:	8fc20028 	lw	v0,40(s8)
  40fb30:	8fc30050 	lw	v1,80(s8)
  40fb34:	00000000 	nop
  40fb38:	00431023 	subu	v0,v0,v1
}
  40fb3c:	03c0e821 	move	sp,s8
  40fb40:	8fbf0048 	lw	ra,72(sp)
  40fb44:	8fbe0044 	lw	s8,68(sp)
  40fb48:	27bd0050 	addiu	sp,sp,80
  40fb4c:	03e00008 	jr	ra
  40fb50:	00000000 	nop

0040fb54 <alg_info_snprint_ike>:
  40fb54:	3c1c0fc0 	lui	gp,0xfc0
  40fb58:	279cce1c 	addiu	gp,gp,-12772
  40fb5c:	0399e021 	addu	gp,gp,t9
  40fb60:	27bdffa8 	addiu	sp,sp,-88
  40fb64:	afbc0020 	sw	gp,32(sp)
  40fb68:	afbf0050 	sw	ra,80(sp)
  40fb6c:	afbe004c 	sw	s8,76(sp)
  40fb70:	afbc0048 	sw	gp,72(sp)
  40fb74:	03a0f021 	move	s8,sp
  40fb78:	afc40058 	sw	a0,88(s8)
  40fb7c:	afc5005c 	sw	a1,92(s8)
  40fb80:	afc60060 	sw	a2,96(s8)

int
alg_info_snprint_ike(char *buf, int buflen, struct alg_info_ike *alg_info)
{
	char *ptr=buf;
  40fb84:	8fc20058 	lw	v0,88(s8)
  40fb88:	00000000 	nop
  40fb8c:	afc20028 	sw	v0,40(s8)
	int ret;
	struct ike_info *ike_info;
	int cnt;
	int eklen, aklen;
	struct encrypt_desc *enc_desc;
	struct hash_desc *hash_desc;
	ALG_INFO_IKE_FOREACH(alg_info, ike_info, cnt) {
  40fb90:	8fc20060 	lw	v0,96(s8)
  40fb94:	00000000 	nop
  40fb98:	8c420000 	lw	v0,0(v0)
  40fb9c:	00000000 	nop
  40fba0:	afc20034 	sw	v0,52(s8)
  40fba4:	8fc20060 	lw	v0,96(s8)
  40fba8:	00000000 	nop
  40fbac:	24420010 	addiu	v0,v0,16
  40fbb0:	afc20030 	sw	v0,48(s8)
  40fbb4:	8fc20034 	lw	v0,52(s8)
  40fbb8:	00000000 	nop
  40fbbc:	2442ffff 	addiu	v0,v0,-1
  40fbc0:	00401821 	move	v1,v0
  40fbc4:	afc30034 	sw	v1,52(s8)
  40fbc8:	2402ffff 	li	v0,-1
  40fbcc:	14620003 	bne	v1,v0,40fbdc <alg_info_snprint_ike+0x88>
  40fbd0:	00000000 	nop
  40fbd4:	100000b3 	b	40fea4 <alg_info_snprint_ike+0x350>
  40fbd8:	00000000 	nop
		if (ike_alg_enc_present(ike_info->ike_ealg) 
			&& (ike_alg_hash_present(ike_info->ike_halg)) 
			&& (lookup_group(ike_info->ike_modp))
			) {
  40fbdc:	8fc20030 	lw	v0,48(s8)
  40fbe0:	00000000 	nop
  40fbe4:	94420000 	lhu	v0,0(v0)
  40fbe8:	00000000 	nop
  40fbec:	00402021 	move	a0,v0
  40fbf0:	8f9986c8 	lw	t9,-31032(gp)
  40fbf4:	00000000 	nop
  40fbf8:	0320f809 	jalr	t9
  40fbfc:	00000000 	nop
  40fc00:	8fdc0020 	lw	gp,32(s8)
  40fc04:	104000a1 	beqz	v0,40fe8c <alg_info_snprint_ike+0x338>
  40fc08:	00000000 	nop
  40fc0c:	8fc20030 	lw	v0,48(s8)
  40fc10:	00000000 	nop
  40fc14:	90420002 	lbu	v0,2(v0)
  40fc18:	00000000 	nop
  40fc1c:	00402021 	move	a0,v0
  40fc20:	8f9980cc 	lw	t9,-32564(gp)
  40fc24:	00000000 	nop
  40fc28:	0320f809 	jalr	t9
  40fc2c:	00000000 	nop
  40fc30:	8fdc0020 	lw	gp,32(s8)
  40fc34:	10400095 	beqz	v0,40fe8c <alg_info_snprint_ike+0x338>
  40fc38:	00000000 	nop
  40fc3c:	8fc20030 	lw	v0,48(s8)
  40fc40:	00000000 	nop
  40fc44:	9442000c 	lhu	v0,12(v0)
  40fc48:	00000000 	nop
  40fc4c:	00402021 	move	a0,v0
  40fc50:	8f998b88 	lw	t9,-29816(gp)
  40fc54:	00000000 	nop
  40fc58:	0320f809 	jalr	t9
  40fc5c:	00000000 	nop
  40fc60:	8fdc0020 	lw	gp,32(s8)
  40fc64:	10400089 	beqz	v0,40fe8c <alg_info_snprint_ike+0x338>
  40fc68:	00000000 	nop
		enc_desc=ike_alg_get_encrypter(ike_info->ike_ealg);
  40fc6c:	8fc20030 	lw	v0,48(s8)
  40fc70:	00000000 	nop
  40fc74:	94420000 	lhu	v0,0(v0)
  40fc78:	00000000 	nop
  40fc7c:	00402021 	move	a0,v0
  40fc80:	8f998024 	lw	t9,-32732(gp)
  40fc84:	00000000 	nop
  40fc88:	2739ff30 	addiu	t9,t9,-208
  40fc8c:	00000000 	nop
  40fc90:	0320f809 	jalr	t9
  40fc94:	00000000 	nop
  40fc98:	8fdc0020 	lw	gp,32(s8)
  40fc9c:	afc20040 	sw	v0,64(s8)
		passert(enc_desc != NULL);
  40fca0:	8fc20040 	lw	v0,64(s8)
  40fca4:	00000000 	nop
  40fca8:	1440000e 	bnez	v0,40fce4 <alg_info_snprint_ike+0x190>
  40fcac:	00000000 	nop
  40fcb0:	8f848020 	lw	a0,-32736(gp)
  40fcb4:	00000000 	nop
  40fcb8:	24844d6c 	addiu	a0,a0,19820
  40fcbc:	8f858020 	lw	a1,-32736(gp)
  40fcc0:	00000000 	nop
  40fcc4:	24a54664 	addiu	a1,a1,18020
  40fcc8:	24060406 	li	a2,1030
  40fccc:	8f998bb8 	lw	t9,-29768(gp)
  40fcd0:	00000000 	nop
  40fcd4:	0320f809 	jalr	t9
  40fcd8:	00000000 	nop
  40fcdc:	8fdc0020 	lw	gp,32(s8)
  40fce0:	00000000 	nop
		hash_desc=ike_alg_get_hasher(ike_info->ike_halg);
  40fce4:	8fc20030 	lw	v0,48(s8)
  40fce8:	00000000 	nop
  40fcec:	90420002 	lbu	v0,2(v0)
  40fcf0:	00000000 	nop
  40fcf4:	00402021 	move	a0,v0
  40fcf8:	8f998024 	lw	t9,-32732(gp)
  40fcfc:	00000000 	nop
  40fd00:	2739fecc 	addiu	t9,t9,-308
  40fd04:	00000000 	nop
  40fd08:	0320f809 	jalr	t9
  40fd0c:	00000000 	nop
  40fd10:	8fdc0020 	lw	gp,32(s8)
  40fd14:	afc20044 	sw	v0,68(s8)
		passert(hash_desc != NULL);
  40fd18:	8fc20044 	lw	v0,68(s8)
  40fd1c:	00000000 	nop
  40fd20:	1440000e 	bnez	v0,40fd5c <alg_info_snprint_ike+0x208>
  40fd24:	00000000 	nop
  40fd28:	8f848020 	lw	a0,-32736(gp)
  40fd2c:	00000000 	nop
  40fd30:	24844d80 	addiu	a0,a0,19840
  40fd34:	8f858020 	lw	a1,-32736(gp)
  40fd38:	00000000 	nop
  40fd3c:	24a54664 	addiu	a1,a1,18020
  40fd40:	24060408 	li	a2,1032
  40fd44:	8f998bb8 	lw	t9,-29768(gp)
  40fd48:	00000000 	nop
  40fd4c:	0320f809 	jalr	t9
  40fd50:	00000000 	nop
  40fd54:	8fdc0020 	lw	gp,32(s8)
  40fd58:	00000000 	nop

		eklen=ike_info->ike_eklen;
  40fd5c:	8fc20030 	lw	v0,48(s8)
  40fd60:	00000000 	nop
  40fd64:	8c420004 	lw	v0,4(v0)
  40fd68:	00000000 	nop
  40fd6c:	afc20038 	sw	v0,56(s8)
		if (!eklen) 
  40fd70:	8fc20038 	lw	v0,56(s8)
  40fd74:	00000000 	nop
  40fd78:	14400006 	bnez	v0,40fd94 <alg_info_snprint_ike+0x240>
  40fd7c:	00000000 	nop
			eklen=enc_desc->keydeflen;
  40fd80:	8fc20040 	lw	v0,64(s8)
  40fd84:	00000000 	nop
  40fd88:	8c420010 	lw	v0,16(v0)
  40fd8c:	00000000 	nop
  40fd90:	afc20038 	sw	v0,56(s8)
		aklen=ike_info->ike_hklen;
  40fd94:	8fc20030 	lw	v0,48(s8)
  40fd98:	00000000 	nop
  40fd9c:	8c420008 	lw	v0,8(v0)
  40fda0:	00000000 	nop
  40fda4:	afc2003c 	sw	v0,60(s8)
		if (!aklen) 
  40fda8:	8fc2003c 	lw	v0,60(s8)
  40fdac:	00000000 	nop
  40fdb0:	14400007 	bnez	v0,40fdd0 <alg_info_snprint_ike+0x27c>
  40fdb4:	00000000 	nop
			aklen=hash_desc->hash_digest_size * BITS_PER_BYTE;
  40fdb8:	8fc20044 	lw	v0,68(s8)
  40fdbc:	00000000 	nop
  40fdc0:	8c42000c 	lw	v0,12(v0)
  40fdc4:	00000000 	nop
  40fdc8:	000210c0 	sll	v0,v0,0x3
  40fdcc:	afc2003c 	sw	v0,60(s8)
		ret=snprintf(ptr, buflen, "%d_%03d-%d_%03d-%d, ",
  40fdd0:	8fc20030 	lw	v0,48(s8)
  40fdd4:	00000000 	nop
  40fdd8:	94430000 	lhu	v1,0(v0)
  40fddc:	8fc20038 	lw	v0,56(s8)
  40fde0:	00000000 	nop
  40fde4:	afa20010 	sw	v0,16(sp)
  40fde8:	8fc20030 	lw	v0,48(s8)
  40fdec:	00000000 	nop
  40fdf0:	90420002 	lbu	v0,2(v0)
  40fdf4:	00000000 	nop
  40fdf8:	afa20014 	sw	v0,20(sp)
  40fdfc:	8fc2003c 	lw	v0,60(s8)
  40fe00:	00000000 	nop
  40fe04:	afa20018 	sw	v0,24(sp)
  40fe08:	8fc20030 	lw	v0,48(s8)
  40fe0c:	00000000 	nop
  40fe10:	9442000c 	lhu	v0,12(v0)
  40fe14:	00000000 	nop
  40fe18:	afa2001c 	sw	v0,28(sp)
  40fe1c:	8fc40028 	lw	a0,40(s8)
  40fe20:	8fc5005c 	lw	a1,92(s8)
  40fe24:	8f868020 	lw	a2,-32736(gp)
  40fe28:	00000000 	nop
  40fe2c:	24c64d94 	addiu	a2,a2,19860
  40fe30:	00603821 	move	a3,v1
  40fe34:	8f998b38 	lw	t9,-29896(gp)
  40fe38:	00000000 	nop
  40fe3c:	0320f809 	jalr	t9
  40fe40:	00000000 	nop
  40fe44:	8fdc0020 	lw	gp,32(s8)
  40fe48:	afc2002c 	sw	v0,44(s8)
				ike_info->ike_ealg,
				eklen,
				ike_info->ike_halg,
				aklen,
				ike_info->ike_modp);
		ptr+=ret;
  40fe4c:	8fc30028 	lw	v1,40(s8)
  40fe50:	8fc2002c 	lw	v0,44(s8)
  40fe54:	00000000 	nop
  40fe58:	00621021 	addu	v0,v1,v0
  40fe5c:	afc20028 	sw	v0,40(s8)
		buflen-=ret;
  40fe60:	8fc3005c 	lw	v1,92(s8)
  40fe64:	8fc2002c 	lw	v0,44(s8)
  40fe68:	00000000 	nop
  40fe6c:	00621023 	subu	v0,v1,v0
  40fe70:	afc2005c 	sw	v0,92(s8)
		if (buflen<0) break;
  40fe74:	8fc2005c 	lw	v0,92(s8)
  40fe78:	00000000 	nop
  40fe7c:	04410003 	bgez	v0,40fe8c <alg_info_snprint_ike+0x338>
  40fe80:	00000000 	nop
  40fe84:	10000007 	b	40fea4 <alg_info_snprint_ike+0x350>
  40fe88:	00000000 	nop
  40fe8c:	8fc20030 	lw	v0,48(s8)
  40fe90:	00000000 	nop
  40fe94:	24420010 	addiu	v0,v0,16
  40fe98:	afc20030 	sw	v0,48(s8)
  40fe9c:	1000ff45 	b	40fbb4 <alg_info_snprint_ike+0x60>
  40fea0:	00000000 	nop
		}
	}
	return ptr-buf;
  40fea4:	8fc20028 	lw	v0,40(s8)
  40fea8:	8fc30058 	lw	v1,88(s8)
  40feac:	00000000 	nop
  40feb0:	00431023 	subu	v0,v0,v1
}
  40feb4:	03c0e821 	move	sp,s8
  40feb8:	8fbf0050 	lw	ra,80(sp)
  40febc:	8fbe004c 	lw	s8,76(sp)
  40fec0:	27bd0058 	addiu	sp,sp,88
  40fec4:	03e00008 	jr	ra
  40fec8:	00000000 	nop

0040fecc <ike_alg_get_hasher>:
  40fecc:	3c1c0fc0 	lui	gp,0xfc0
  40fed0:	279ccaa4 	addiu	gp,gp,-13660
  40fed4:	0399e021 	addu	gp,gp,t9
  40fed8:	27bdffd8 	addiu	sp,sp,-40
  40fedc:	afbc0010 	sw	gp,16(sp)
  40fee0:	afbf0020 	sw	ra,32(sp)
  40fee4:	afbe001c 	sw	s8,28(sp)
  40fee8:	afbc0018 	sw	gp,24(sp)
  40feec:	03a0f021 	move	s8,sp
  40fef0:	00801021 	move	v0,a0
int ike_alg_register_hash(struct hash_desc *a);
struct ike_alg *ike_alg_find(unsigned algo_type, unsigned algo_id, unsigned keysize);
static __inline__ struct hash_desc *ike_alg_get_hasher(int alg)
{
	return (struct hash_desc *) ike_alg_find(IKE_ALG_HASH, alg, 0);
  40fef4:	24040001 	li	a0,1
  40fef8:	00402821 	move	a1,v0
  40fefc:	00003021 	move	a2,zero
  40ff00:	8f998c08 	lw	t9,-29688(gp)
  40ff04:	00000000 	nop
  40ff08:	0320f809 	jalr	t9
  40ff0c:	00000000 	nop
  40ff10:	8fdc0010 	lw	gp,16(s8)
  40ff14:	00000000 	nop
}
  40ff18:	03c0e821 	move	sp,s8
  40ff1c:	8fbf0020 	lw	ra,32(sp)
  40ff20:	8fbe001c 	lw	s8,28(sp)
  40ff24:	27bd0028 	addiu	sp,sp,40
  40ff28:	03e00008 	jr	ra
  40ff2c:	00000000 	nop

0040ff30 <ike_alg_get_encrypter>:
  40ff30:	3c1c0fc0 	lui	gp,0xfc0
  40ff34:	279cca40 	addiu	gp,gp,-13760
  40ff38:	0399e021 	addu	gp,gp,t9
  40ff3c:	27bdffd8 	addiu	sp,sp,-40
  40ff40:	afbc0010 	sw	gp,16(sp)
  40ff44:	afbf0020 	sw	ra,32(sp)
  40ff48:	afbe001c 	sw	s8,28(sp)
  40ff4c:	afbc0018 	sw	gp,24(sp)
  40ff50:	03a0f021 	move	s8,sp
  40ff54:	00801021 	move	v0,a0
static __inline__ struct encrypt_desc *ike_alg_get_encrypter(int alg)
{
	return (struct encrypt_desc *) ike_alg_find(IKE_ALG_ENCRYPT, alg, 0);
  40ff58:	00002021 	move	a0,zero
  40ff5c:	00402821 	move	a1,v0
  40ff60:	00003021 	move	a2,zero
  40ff64:	8f998c08 	lw	t9,-29688(gp)
  40ff68:	00000000 	nop
  40ff6c:	0320f809 	jalr	t9
  40ff70:	00000000 	nop
  40ff74:	8fdc0010 	lw	gp,16(s8)
  40ff78:	00000000 	nop
}
  40ff7c:	03c0e821 	move	sp,s8
  40ff80:	8fbf0020 	lw	ra,32(sp)
  40ff84:	8fbe001c 	lw	s8,28(sp)
  40ff88:	27bd0028 	addiu	sp,sp,40
  40ff8c:	03e00008 	jr	ra
  40ff90:	00000000 	nop

0040ff94 <parser_set_state>:
  40ff94:	3c1c0fc0 	lui	gp,0xfc0
  40ff98:	279cc9dc 	addiu	gp,gp,-13860
  40ff9c:	0399e021 	addu	gp,gp,t9
  40ffa0:	27bdfff0 	addiu	sp,sp,-16
  40ffa4:	afbc0000 	sw	gp,0(sp)
  40ffa8:	afbe000c 	sw	s8,12(sp)
  40ffac:	afbc0008 	sw	gp,8(sp)
  40ffb0:	03a0f021 	move	s8,sp
  40ffb4:	afc40010 	sw	a0,16(s8)
  40ffb8:	afc50014 	sw	a1,20(s8)
  40ffbc:	8fc30010 	lw	v1,16(s8)
  40ffc0:	00000000 	nop
  40ffc4:	8c620000 	lw	v0,0(v1)
  40ffc8:	8fc30014 	lw	v1,20(s8)
  40ffcc:	00000000 	nop
  40ffd0:	1062000b 	beq	v1,v0,410000 <parser_set_state+0x6c>
  40ffd4:	00000000 	nop
  40ffd8:	8fc30010 	lw	v1,16(s8)
  40ffdc:	00000000 	nop
  40ffe0:	8c620000 	lw	v0,0(v1)
  40ffe4:	8fc30010 	lw	v1,16(s8)
  40ffe8:	00000000 	nop
  40ffec:	ac620004 	sw	v0,4(v1)
  40fff0:	8fc30014 	lw	v1,20(s8)
  40fff4:	8fc20010 	lw	v0,16(s8)
  40fff8:	00000000 	nop
  40fffc:	ac430000 	sw	v1,0(v0)
  410000:	03c0e821 	move	sp,s8
  410004:	8fbe000c 	lw	s8,12(sp)
  410008:	27bd0010 	addiu	sp,sp,16
  41000c:	03e00008 	jr	ra
  410010:	00000000 	nop
	...

00410020 <db_prop_init>:
  410020:	3c1c0fc0 	lui	gp,0xfc0
  410024:	279cc950 	addiu	gp,gp,-14000
  410028:	0399e021 	addu	gp,gp,t9
  41002c:	27bdffd0 	addiu	sp,sp,-48
  410030:	afbc0010 	sw	gp,16(sp)
  410034:	afbf002c 	sw	ra,44(sp)
  410038:	afbe0028 	sw	s8,40(sp)
  41003c:	afbc0024 	sw	gp,36(sp)
  410040:	afb00020 	sw	s0,32(sp)
  410044:	03a0f021 	move	s8,sp
  410048:	afc40030 	sw	a0,48(s8)
  41004c:	00a01021 	move	v0,a1
  410050:	afc60038 	sw	a2,56(s8)
  410054:	afc7003c 	sw	a3,60(s8)
  410058:	a3c20018 	sb	v0,24(s8)
 */
int
db_prop_init(struct db_context *ctx, u_int8_t protoid, int max_trans, int max_attrs) 
{
	int ret=-1;
  41005c:	2402ffff 	li	v0,-1
  410060:	afc2001c 	sw	v0,28(s8)

	ctx->trans0 = NULL;
  410064:	8fc20030 	lw	v0,48(s8)
  410068:	00000000 	nop
  41006c:	ac40000c 	sw	zero,12(v0)
	ctx->attrs0 = NULL;
  410070:	8fc20030 	lw	v0,48(s8)
  410074:	00000000 	nop
  410078:	ac400014 	sw	zero,20(v0)

	if (max_trans > 0) { /* quite silly if not */
  41007c:	8fc20038 	lw	v0,56(s8)
  410080:	00000000 	nop
  410084:	1840001f 	blez	v0,410104 <db_prop_init+0xe4>
  410088:	00000000 	nop
		ctx->trans0 = ALLOC_BYTES_ST ( sizeof (struct db_trans) * max_trans, 
  41008c:	8fd00030 	lw	s0,48(s8)
  410090:	8fc30038 	lw	v1,56(s8)
  410094:	00000000 	nop
  410098:	00601021 	move	v0,v1
  41009c:	00021040 	sll	v0,v0,0x1
  4100a0:	00431021 	addu	v0,v0,v1
  4100a4:	00021080 	sll	v0,v0,0x2
  4100a8:	00402021 	move	a0,v0
  4100ac:	8f858020 	lw	a1,-32736(gp)
  4100b0:	00000000 	nop
  4100b4:	24a54db0 	addiu	a1,a1,19888
  4100b8:	8f868018 	lw	a2,-32744(gp)
  4100bc:	00000000 	nop
  4100c0:	24c6007c 	addiu	a2,a2,124
  4100c4:	8f998024 	lw	t9,-32732(gp)
  4100c8:	00000000 	nop
  4100cc:	27390e2c 	addiu	t9,t9,3628
  4100d0:	00000000 	nop
  4100d4:	0320f809 	jalr	t9
  4100d8:	00000000 	nop
  4100dc:	8fdc0010 	lw	gp,16(s8)
  4100e0:	ae02000c 	sw	v0,12(s0)
			"db_context->trans", db_trans_st);
		if (!ctx->trans0) goto out;
  4100e4:	8fc20030 	lw	v0,48(s8)
  4100e8:	00000000 	nop
  4100ec:	8c42000c 	lw	v0,12(v0)
  4100f0:	00000000 	nop
  4100f4:	14400003 	bnez	v0,410104 <db_prop_init+0xe4>
  4100f8:	00000000 	nop
  4100fc:	10000021 	b	410184 <db_prop_init+0x164>
  410100:	00000000 	nop
	}

	if (max_attrs > 0) { /* quite silly if not */
  410104:	8fc2003c 	lw	v0,60(s8)
  410108:	00000000 	nop
  41010c:	1840001c 	blez	v0,410180 <db_prop_init+0x160>
  410110:	00000000 	nop
		ctx->attrs0 = ALLOC_BYTES_ST (sizeof (struct db_attr) * max_attrs,
  410114:	8fd00030 	lw	s0,48(s8)
  410118:	8fc2003c 	lw	v0,60(s8)
  41011c:	00000000 	nop
  410120:	00021080 	sll	v0,v0,0x2
  410124:	00402021 	move	a0,v0
  410128:	8f858020 	lw	a1,-32736(gp)
  41012c:	00000000 	nop
  410130:	24a54dc4 	addiu	a1,a1,19908
  410134:	8f868018 	lw	a2,-32744(gp)
  410138:	00000000 	nop
  41013c:	24c60088 	addiu	a2,a2,136
  410140:	8f998024 	lw	t9,-32732(gp)
  410144:	00000000 	nop
  410148:	27390e2c 	addiu	t9,t9,3628
  41014c:	00000000 	nop
  410150:	0320f809 	jalr	t9
  410154:	00000000 	nop
  410158:	8fdc0010 	lw	gp,16(s8)
  41015c:	ae020014 	sw	v0,20(s0)
				"db_context->attrs", db_attrs_st);
		if (!ctx->attrs0) goto out;
  410160:	8fc20030 	lw	v0,48(s8)
  410164:	00000000 	nop
  410168:	8c420014 	lw	v0,20(v0)
  41016c:	00000000 	nop
  410170:	14400003 	bnez	v0,410180 <db_prop_init+0x160>
  410174:	00000000 	nop
  410178:	10000002 	b	410184 <db_prop_init+0x164>
  41017c:	00000000 	nop
	}
	ret = 0;
  410180:	afc0001c 	sw	zero,28(s8)
out:
	if (ret < 0 && ctx->trans0) {
  410184:	8fc2001c 	lw	v0,28(s8)
  410188:	00000000 	nop
  41018c:	0441001d 	bgez	v0,410204 <db_prop_init+0x1e4>
  410190:	00000000 	nop
  410194:	8fc20030 	lw	v0,48(s8)
  410198:	00000000 	nop
  41019c:	8c42000c 	lw	v0,12(v0)
  4101a0:	00000000 	nop
  4101a4:	10400017 	beqz	v0,410204 <db_prop_init+0x1e4>
  4101a8:	00000000 	nop
		PFREE_ST(ctx->trans0, db_trans_st);
  4101ac:	8f828018 	lw	v0,-32744(gp)
  4101b0:	00000000 	nop
  4101b4:	2442007c 	addiu	v0,v0,124
  4101b8:	8c420000 	lw	v0,0(v0)
  4101bc:	00000000 	nop
  4101c0:	2442ffff 	addiu	v0,v0,-1
  4101c4:	8f818018 	lw	at,-32744(gp)
  4101c8:	00000000 	nop
  4101cc:	2421007c 	addiu	at,at,124
  4101d0:	ac220000 	sw	v0,0(at)
  4101d4:	8fc20030 	lw	v0,48(s8)
  4101d8:	00000000 	nop
  4101dc:	8c44000c 	lw	a0,12(v0)
  4101e0:	8f998094 	lw	t9,-32620(gp)
  4101e4:	00000000 	nop
  4101e8:	0320f809 	jalr	t9
  4101ec:	00000000 	nop
  4101f0:	8fdc0010 	lw	gp,16(s8)
  4101f4:	00000000 	nop
		ctx->trans0 = NULL;
  4101f8:	8fc20030 	lw	v0,48(s8)
  4101fc:	00000000 	nop
  410200:	ac40000c 	sw	zero,12(v0)
	}
	ctx->max_trans = max_trans;
  410204:	8fc30038 	lw	v1,56(s8)
  410208:	8fc20030 	lw	v0,48(s8)
  41020c:	00000000 	nop
  410210:	ac43001c 	sw	v1,28(v0)
	ctx->max_attrs = max_attrs;
  410214:	8fc3003c 	lw	v1,60(s8)
  410218:	8fc20030 	lw	v0,48(s8)
  41021c:	00000000 	nop
  410220:	ac430020 	sw	v1,32(v0)
	ctx->trans_cur = ctx->trans0;
  410224:	8fc20030 	lw	v0,48(s8)
  410228:	00000000 	nop
  41022c:	8c43000c 	lw	v1,12(v0)
  410230:	8fc20030 	lw	v0,48(s8)
  410234:	00000000 	nop
  410238:	ac430010 	sw	v1,16(v0)
	ctx->attrs_cur = ctx->attrs0;
  41023c:	8fc20030 	lw	v0,48(s8)
  410240:	00000000 	nop
  410244:	8c430014 	lw	v1,20(v0)
  410248:	8fc20030 	lw	v0,48(s8)
  41024c:	00000000 	nop
  410250:	ac430018 	sw	v1,24(v0)
	ctx->prop.protoid = protoid;
  410254:	93c30018 	lbu	v1,24(s8)
  410258:	8fc20030 	lw	v0,48(s8)
  41025c:	00000000 	nop
  410260:	a0430000 	sb	v1,0(v0)
	ctx->prop.trans = ctx->trans0;
  410264:	8fc20030 	lw	v0,48(s8)
  410268:	00000000 	nop
  41026c:	8c43000c 	lw	v1,12(v0)
  410270:	8fc20030 	lw	v0,48(s8)
  410274:	00000000 	nop
  410278:	ac430004 	sw	v1,4(v0)
	ctx->prop.trans_cnt = 0;
  41027c:	8fc20030 	lw	v0,48(s8)
  410280:	00000000 	nop
  410284:	ac400008 	sw	zero,8(v0)
	return ret;
  410288:	8fc2001c 	lw	v0,28(s8)
  41028c:	00000000 	nop
}
  410290:	03c0e821 	move	sp,s8
  410294:	8fbf002c 	lw	ra,44(sp)
  410298:	8fbe0028 	lw	s8,40(sp)
  41029c:	8fb00020 	lw	s0,32(sp)
  4102a0:	27bd0030 	addiu	sp,sp,48
  4102a4:	03e00008 	jr	ra
  4102a8:	00000000 	nop

004102ac <db_trans_expand>:
  4102ac:	3c1c0fc0 	lui	gp,0xfc0
  4102b0:	279cc6c4 	addiu	gp,gp,-14652
  4102b4:	0399e021 	addu	gp,gp,t9
  4102b8:	27bdffc0 	addiu	sp,sp,-64
  4102bc:	afbc0010 	sw	gp,16(sp)
  4102c0:	afbf0038 	sw	ra,56(sp)
  4102c4:	afbe0034 	sw	s8,52(sp)
  4102c8:	afbc0030 	sw	gp,48(sp)
  4102cc:	03a0f021 	move	s8,sp
  4102d0:	afc40040 	sw	a0,64(s8)
  4102d4:	afc50044 	sw	a1,68(s8)

/*	Expand storage for transforms by number delta_trans */
static int
db_trans_expand(struct db_context *ctx, int delta_trans)
{
	int ret = -1;
  4102d8:	2402ffff 	li	v0,-1
  4102dc:	afc20018 	sw	v0,24(s8)
	struct db_trans *new_trans, *old_trans;
	int max_trans = ctx->max_trans + delta_trans;
  4102e0:	8fc20040 	lw	v0,64(s8)
  4102e4:	00000000 	nop
  4102e8:	8c43001c 	lw	v1,28(v0)
  4102ec:	8fc20044 	lw	v0,68(s8)
  4102f0:	00000000 	nop
  4102f4:	00621021 	addu	v0,v1,v0
  4102f8:	afc20024 	sw	v0,36(s8)
	int offset;

	old_trans = ctx->trans0;
  4102fc:	8fc20040 	lw	v0,64(s8)
  410300:	00000000 	nop
  410304:	8c42000c 	lw	v0,12(v0)
  410308:	00000000 	nop
  41030c:	afc20020 	sw	v0,32(s8)
	new_trans = ALLOC_BYTES_ST ( sizeof (struct db_trans) * max_trans, 
  410310:	8fc30024 	lw	v1,36(s8)
  410314:	00000000 	nop
  410318:	00601021 	move	v0,v1
  41031c:	00021040 	sll	v0,v0,0x1
  410320:	00431021 	addu	v0,v0,v1
  410324:	00021080 	sll	v0,v0,0x2
  410328:	00402021 	move	a0,v0
  41032c:	8f858020 	lw	a1,-32736(gp)
  410330:	00000000 	nop
  410334:	24a54dd8 	addiu	a1,a1,19928
  410338:	8f868018 	lw	a2,-32744(gp)
  41033c:	00000000 	nop
  410340:	24c6007c 	addiu	a2,a2,124
  410344:	8f998024 	lw	t9,-32732(gp)
  410348:	00000000 	nop
  41034c:	27390e2c 	addiu	t9,t9,3628
  410350:	00000000 	nop
  410354:	0320f809 	jalr	t9
  410358:	00000000 	nop
  41035c:	8fdc0010 	lw	gp,16(s8)
  410360:	afc2001c 	sw	v0,28(s8)
			"db_context->trans (expand)", db_trans_st);
	if (!new_trans)
  410364:	8fc2001c 	lw	v0,28(s8)
  410368:	00000000 	nop
  41036c:	14400003 	bnez	v0,41037c <db_trans_expand+0xd0>
  410370:	00000000 	nop
		goto out;
  410374:	1000003c 	b	410468 <db_trans_expand+0x1bc>
  410378:	00000000 	nop
	memcpy(new_trans, old_trans, ctx->max_trans * sizeof(struct db_trans));
  41037c:	8fc20040 	lw	v0,64(s8)
  410380:	00000000 	nop
  410384:	8c43001c 	lw	v1,28(v0)
  410388:	00000000 	nop
  41038c:	00601021 	move	v0,v1
  410390:	00021040 	sll	v0,v0,0x1
  410394:	00431021 	addu	v0,v0,v1
  410398:	00021080 	sll	v0,v0,0x2
  41039c:	8fc4001c 	lw	a0,28(s8)
  4103a0:	8fc50020 	lw	a1,32(s8)
  4103a4:	00403021 	move	a2,v0
  4103a8:	8f998a30 	lw	t9,-30160(gp)
  4103ac:	00000000 	nop
  4103b0:	0320f809 	jalr	t9
  4103b4:	00000000 	nop
  4103b8:	8fdc0010 	lw	gp,16(s8)
  4103bc:	00000000 	nop
	
	/* update trans0 (obviously) */
	ctx->trans0 = ctx->prop.trans = new_trans;
  4103c0:	8fc40040 	lw	a0,64(s8)
  4103c4:	8fc3001c 	lw	v1,28(s8)
  4103c8:	8fc20040 	lw	v0,64(s8)
  4103cc:	00000000 	nop
  4103d0:	ac430004 	sw	v1,4(v0)
  4103d4:	ac83000c 	sw	v1,12(a0)
	/* update trans_cur (by offset) */
	offset = (char *)(new_trans) - (char *)(old_trans);
  4103d8:	8fc3001c 	lw	v1,28(s8)
  4103dc:	8fc20020 	lw	v0,32(s8)
  4103e0:	00000000 	nop
  4103e4:	00621023 	subu	v0,v1,v0
  4103e8:	afc20028 	sw	v0,40(s8)
	(char *)(ctx->trans_cur) += offset;
  4103ec:	8fc20040 	lw	v0,64(s8)
  4103f0:	00000000 	nop
  4103f4:	8c430010 	lw	v1,16(v0)
  4103f8:	8fc20028 	lw	v0,40(s8)
  4103fc:	00000000 	nop
  410400:	00621821 	addu	v1,v1,v0
  410404:	8fc20040 	lw	v0,64(s8)
  410408:	00000000 	nop
  41040c:	ac430010 	sw	v1,16(v0)
	/* update elem count */
	ctx->max_trans = max_trans;
  410410:	8fc30024 	lw	v1,36(s8)
  410414:	8fc20040 	lw	v0,64(s8)
  410418:	00000000 	nop
  41041c:	ac43001c 	sw	v1,28(v0)
	PFREE_ST(old_trans, db_trans_st);
  410420:	8f828018 	lw	v0,-32744(gp)
  410424:	00000000 	nop
  410428:	2442007c 	addiu	v0,v0,124
  41042c:	8c420000 	lw	v0,0(v0)
  410430:	00000000 	nop
  410434:	2442ffff 	addiu	v0,v0,-1
  410438:	8f818018 	lw	at,-32744(gp)
  41043c:	00000000 	nop
  410440:	2421007c 	addiu	at,at,124
  410444:	ac220000 	sw	v0,0(at)
  410448:	8fc40020 	lw	a0,32(s8)
  41044c:	8f998094 	lw	t9,-32620(gp)
  410450:	00000000 	nop
  410454:	0320f809 	jalr	t9
  410458:	00000000 	nop
  41045c:	8fdc0010 	lw	gp,16(s8)
  410460:	00000000 	nop
	ret = 0;
  410464:	afc00018 	sw	zero,24(s8)
out:
	return ret;
  410468:	8fc20018 	lw	v0,24(s8)
  41046c:	00000000 	nop
}
  410470:	03c0e821 	move	sp,s8
  410474:	8fbf0038 	lw	ra,56(sp)
  410478:	8fbe0034 	lw	s8,52(sp)
  41047c:	27bd0040 	addiu	sp,sp,64
  410480:	03e00008 	jr	ra
  410484:	00000000 	nop

00410488 <db_attrs_expand>:
  410488:	3c1c0fc0 	lui	gp,0xfc0
  41048c:	279cc4e8 	addiu	gp,gp,-15128
  410490:	0399e021 	addu	gp,gp,t9
  410494:	27bdffb8 	addiu	sp,sp,-72
  410498:	afbc0010 	sw	gp,16(sp)
  41049c:	afbf0040 	sw	ra,64(sp)
  4104a0:	afbe003c 	sw	s8,60(sp)
  4104a4:	afbc0038 	sw	gp,56(sp)
  4104a8:	03a0f021 	move	s8,sp
  4104ac:	afc40048 	sw	a0,72(s8)
  4104b0:	afc5004c 	sw	a1,76(s8)
/*	
 *	Expand storage for attributes by delta_attrs number AND
 *	rewrite trans->attr pointers
 */
static int
db_attrs_expand(struct db_context *ctx, int delta_attrs)
{
	int ret = -1;
  4104b4:	2402ffff 	li	v0,-1
  4104b8:	afc20018 	sw	v0,24(s8)
	struct db_attr *new_attrs, *old_attrs;
	struct db_trans *t;
	int ti;
	int max_attrs = ctx->max_attrs + delta_attrs;
  4104bc:	8fc20048 	lw	v0,72(s8)
  4104c0:	00000000 	nop
  4104c4:	8c430020 	lw	v1,32(v0)
  4104c8:	8fc2004c 	lw	v0,76(s8)
  4104cc:	00000000 	nop
  4104d0:	00621021 	addu	v0,v1,v0
  4104d4:	afc2002c 	sw	v0,44(s8)
	int offset;

	old_attrs = ctx->attrs0;
  4104d8:	8fc20048 	lw	v0,72(s8)
  4104dc:	00000000 	nop
  4104e0:	8c420014 	lw	v0,20(v0)
  4104e4:	00000000 	nop
  4104e8:	afc20020 	sw	v0,32(s8)
	new_attrs = ALLOC_BYTES_ST ( sizeof (struct db_attr) * max_attrs, 
  4104ec:	8fc2002c 	lw	v0,44(s8)
  4104f0:	00000000 	nop
  4104f4:	00021080 	sll	v0,v0,0x2
  4104f8:	00402021 	move	a0,v0
  4104fc:	8f858020 	lw	a1,-32736(gp)
  410500:	00000000 	nop
  410504:	24a54df4 	addiu	a1,a1,19956
  410508:	8f868018 	lw	a2,-32744(gp)
  41050c:	00000000 	nop
  410510:	24c60088 	addiu	a2,a2,136
  410514:	8f998024 	lw	t9,-32732(gp)
  410518:	00000000 	nop
  41051c:	27390e2c 	addiu	t9,t9,3628
  410520:	00000000 	nop
  410524:	0320f809 	jalr	t9
  410528:	00000000 	nop
  41052c:	8fdc0010 	lw	gp,16(s8)
  410530:	afc2001c 	sw	v0,28(s8)
			"db_context->attrs (expand)", db_attrs_st);
	if (!new_attrs)
  410534:	8fc2001c 	lw	v0,28(s8)
  410538:	00000000 	nop
  41053c:	14400003 	bnez	v0,41054c <db_attrs_expand+0xc4>
  410540:	00000000 	nop
		goto out;
  410544:	1000005f 	b	4106c4 <db_attrs_expand+0x23c>
  410548:	00000000 	nop

	memcpy(new_attrs, old_attrs, ctx->max_attrs * sizeof(struct db_attr));
  41054c:	8fc20048 	lw	v0,72(s8)
  410550:	00000000 	nop
  410554:	8c420020 	lw	v0,32(v0)
  410558:	00000000 	nop
  41055c:	00021080 	sll	v0,v0,0x2
  410560:	8fc4001c 	lw	a0,28(s8)
  410564:	8fc50020 	lw	a1,32(s8)
  410568:	00403021 	move	a2,v0
  41056c:	8f998a30 	lw	t9,-30160(gp)
  410570:	00000000 	nop
  410574:	0320f809 	jalr	t9
  410578:	00000000 	nop
  41057c:	8fdc0010 	lw	gp,16(s8)
  410580:	00000000 	nop
	
	/* update attrs0 and attrs_cur (obviously) */
	offset = (char *)(new_attrs) - (char *)(old_attrs);
  410584:	8fc3001c 	lw	v1,28(s8)
  410588:	8fc20020 	lw	v0,32(s8)
  41058c:	00000000 	nop
  410590:	00621023 	subu	v0,v1,v0
  410594:	afc20030 	sw	v0,48(s8)
	(char *)ctx->attrs0 += offset;
  410598:	8fc20048 	lw	v0,72(s8)
  41059c:	00000000 	nop
  4105a0:	8c430014 	lw	v1,20(v0)
  4105a4:	8fc20030 	lw	v0,48(s8)
  4105a8:	00000000 	nop
  4105ac:	00621821 	addu	v1,v1,v0
  4105b0:	8fc20048 	lw	v0,72(s8)
  4105b4:	00000000 	nop
  4105b8:	ac430014 	sw	v1,20(v0)
	(char *)ctx->attrs_cur += offset;
  4105bc:	8fc20048 	lw	v0,72(s8)
  4105c0:	00000000 	nop
  4105c4:	8c430018 	lw	v1,24(v0)
  4105c8:	8fc20030 	lw	v0,48(s8)
  4105cc:	00000000 	nop
  4105d0:	00621821 	addu	v1,v1,v0
  4105d4:	8fc20048 	lw	v0,72(s8)
  4105d8:	00000000 	nop
  4105dc:	ac430018 	sw	v1,24(v0)
	/* for each transform, rewrite attrs pointer by offsetting it */
	for (t=ctx->prop.trans, ti=0; ti < ctx->prop.trans_cnt; t++, ti++) {
  4105e0:	8fc20048 	lw	v0,72(s8)
  4105e4:	00000000 	nop
  4105e8:	8c420004 	lw	v0,4(v0)
  4105ec:	00000000 	nop
  4105f0:	afc20024 	sw	v0,36(s8)
  4105f4:	afc00028 	sw	zero,40(s8)
  4105f8:	8fc20048 	lw	v0,72(s8)
  4105fc:	00000000 	nop
  410600:	8c430008 	lw	v1,8(v0)
  410604:	8fc20028 	lw	v0,40(s8)
  410608:	00000000 	nop
  41060c:	0043102a 	slt	v0,v0,v1
  410610:	14400003 	bnez	v0,410620 <db_attrs_expand+0x198>
  410614:	00000000 	nop
  410618:	10000014 	b	41066c <db_attrs_expand+0x1e4>
  41061c:	00000000 	nop
		(char *)(t->attrs) += offset;
  410620:	8fc20024 	lw	v0,36(s8)
  410624:	00000000 	nop
  410628:	8c430004 	lw	v1,4(v0)
  41062c:	8fc20030 	lw	v0,48(s8)
  410630:	00000000 	nop
  410634:	00621821 	addu	v1,v1,v0
  410638:	8fc20024 	lw	v0,36(s8)
  41063c:	00000000 	nop
  410640:	ac430004 	sw	v1,4(v0)
  410644:	8fc20024 	lw	v0,36(s8)
  410648:	00000000 	nop
  41064c:	2442000c 	addiu	v0,v0,12
  410650:	afc20024 	sw	v0,36(s8)
  410654:	8fc20028 	lw	v0,40(s8)
  410658:	00000000 	nop
  41065c:	24420001 	addiu	v0,v0,1
  410660:	afc20028 	sw	v0,40(s8)
  410664:	1000ffe4 	b	4105f8 <db_attrs_expand+0x170>
  410668:	00000000 	nop
	}
	/* update elem count */
	ctx->max_attrs = max_attrs;
  41066c:	8fc3002c 	lw	v1,44(s8)
  410670:	8fc20048 	lw	v0,72(s8)
  410674:	00000000 	nop
  410678:	ac430020 	sw	v1,32(v0)
	PFREE_ST(old_attrs, db_attrs_st);
  41067c:	8f828018 	lw	v0,-32744(gp)
  410680:	00000000 	nop
  410684:	24420088 	addiu	v0,v0,136
  410688:	8c420000 	lw	v0,0(v0)
  41068c:	00000000 	nop
  410690:	2442ffff 	addiu	v0,v0,-1
  410694:	8f818018 	lw	at,-32744(gp)
  410698:	00000000 	nop
  41069c:	24210088 	addiu	at,at,136
  4106a0:	ac220000 	sw	v0,0(at)
  4106a4:	8fc40020 	lw	a0,32(s8)
  4106a8:	8f998094 	lw	t9,-32620(gp)
  4106ac:	00000000 	nop
  4106b0:	0320f809 	jalr	t9
  4106b4:	00000000 	nop
  4106b8:	8fdc0010 	lw	gp,16(s8)
  4106bc:	00000000 	nop
	ret = 0;
  4106c0:	afc00018 	sw	zero,24(s8)
out:
	return ret;
  4106c4:	8fc20018 	lw	v0,24(s8)
  4106c8:	00000000 	nop
}
  4106cc:	03c0e821 	move	sp,s8
  4106d0:	8fbf0040 	lw	ra,64(sp)
  4106d4:	8fbe003c 	lw	s8,60(sp)
  4106d8:	27bd0048 	addiu	sp,sp,72
  4106dc:	03e00008 	jr	ra
  4106e0:	00000000 	nop

004106e4 <db_prop_new>:
  4106e4:	3c1c0fc0 	lui	gp,0xfc0
  4106e8:	279cc28c 	addiu	gp,gp,-15732
  4106ec:	0399e021 	addu	gp,gp,t9
  4106f0:	27bdffd0 	addiu	sp,sp,-48
  4106f4:	afbc0010 	sw	gp,16(sp)
  4106f8:	afbf0028 	sw	ra,40(sp)
  4106fc:	afbe0024 	sw	s8,36(sp)
  410700:	afbc0020 	sw	gp,32(sp)
  410704:	03a0f021 	move	s8,sp
  410708:	00801021 	move	v0,a0
  41070c:	afc50034 	sw	a1,52(s8)
  410710:	afc60038 	sw	a2,56(s8)
  410714:	a3c20018 	sb	v0,24(s8)
/*	Allocate a new db object */
struct db_context * 
db_prop_new(u_int8_t protoid, int max_trans, int max_attrs) 
{
	struct db_context *ctx;
	ctx = ALLOC_BYTES_ST ( sizeof (struct db_context), "db_context", db_context_st);
  410718:	24040024 	li	a0,36
  41071c:	8f858020 	lw	a1,-32736(gp)
  410720:	00000000 	nop
  410724:	24a54e10 	addiu	a1,a1,19984
  410728:	8f868018 	lw	a2,-32744(gp)
  41072c:	00000000 	nop
  410730:	24c60070 	addiu	a2,a2,112
  410734:	8f998024 	lw	t9,-32732(gp)
  410738:	00000000 	nop
  41073c:	27390e2c 	addiu	t9,t9,3628
  410740:	00000000 	nop
  410744:	0320f809 	jalr	t9
  410748:	00000000 	nop
  41074c:	8fdc0010 	lw	gp,16(s8)
  410750:	afc2001c 	sw	v0,28(s8)
	if (!ctx) goto out;
  410754:	8fc2001c 	lw	v0,28(s8)
  410758:	00000000 	nop
  41075c:	14400003 	bnez	v0,41076c <db_prop_new+0x88>
  410760:	00000000 	nop
  410764:	1000001f 	b	4107e4 <db_prop_new+0x100>
  410768:	00000000 	nop
	
	if (db_prop_init(ctx, protoid, max_trans, max_attrs) < 0) {
  41076c:	93c20018 	lbu	v0,24(s8)
  410770:	8fc4001c 	lw	a0,28(s8)
  410774:	00402821 	move	a1,v0
  410778:	8fc60034 	lw	a2,52(s8)
  41077c:	8fc70038 	lw	a3,56(s8)
  410780:	8f998760 	lw	t9,-30880(gp)
  410784:	00000000 	nop
  410788:	0320f809 	jalr	t9
  41078c:	00000000 	nop
  410790:	8fdc0010 	lw	gp,16(s8)
  410794:	04410013 	bgez	v0,4107e4 <db_prop_new+0x100>
  410798:	00000000 	nop
		PFREE_ST(ctx, db_context_st);
  41079c:	8f828018 	lw	v0,-32744(gp)
  4107a0:	00000000 	nop
  4107a4:	24420070 	addiu	v0,v0,112
  4107a8:	8c420000 	lw	v0,0(v0)
  4107ac:	00000000 	nop
  4107b0:	2442ffff 	addiu	v0,v0,-1
  4107b4:	8f818018 	lw	at,-32744(gp)
  4107b8:	00000000 	nop
  4107bc:	24210070 	addiu	at,at,112
  4107c0:	ac220000 	sw	v0,0(at)
  4107c4:	8fc4001c 	lw	a0,28(s8)
  4107c8:	8f998094 	lw	t9,-32620(gp)
  4107cc:	00000000 	nop
  4107d0:	0320f809 	jalr	t9
  4107d4:	00000000 	nop
  4107d8:	8fdc0010 	lw	gp,16(s8)
  4107dc:	00000000 	nop
		ctx=NULL;
  4107e0:	afc0001c 	sw	zero,28(s8)
	}
out:
	return ctx;
  4107e4:	8fc2001c 	lw	v0,28(s8)
  4107e8:	00000000 	nop
}
  4107ec:	03c0e821 	move	sp,s8
  4107f0:	8fbf0028 	lw	ra,40(sp)
  4107f4:	8fbe0024 	lw	s8,36(sp)
  4107f8:	27bd0030 	addiu	sp,sp,48
  4107fc:	03e00008 	jr	ra
  410800:	00000000 	nop

00410804 <db_destroy>:
  410804:	3c1c0fc0 	lui	gp,0xfc0
  410808:	279cc16c 	addiu	gp,gp,-16020
  41080c:	0399e021 	addu	gp,gp,t9
  410810:	27bdffd8 	addiu	sp,sp,-40
  410814:	afbc0010 	sw	gp,16(sp)
  410818:	afbf0020 	sw	ra,32(sp)
  41081c:	afbe001c 	sw	s8,28(sp)
  410820:	afbc0018 	sw	gp,24(sp)
  410824:	03a0f021 	move	s8,sp
  410828:	afc40028 	sw	a0,40(s8)
/*	Free a db object */
void
db_destroy(struct db_context *ctx)
{
	if (ctx->trans0) PFREE_ST(ctx->trans0, db_trans_st);
  41082c:	8fc20028 	lw	v0,40(s8)
  410830:	00000000 	nop
  410834:	8c42000c 	lw	v0,12(v0)
  410838:	00000000 	nop
  41083c:	10400014 	beqz	v0,410890 <db_destroy+0x8c>
  410840:	00000000 	nop
  410844:	8f828018 	lw	v0,-32744(gp)
  410848:	00000000 	nop
  41084c:	2442007c 	addiu	v0,v0,124
  410850:	8c420000 	lw	v0,0(v0)
  410854:	00000000 	nop
  410858:	2442ffff 	addiu	v0,v0,-1
  41085c:	8f818018 	lw	at,-32744(gp)
  410860:	00000000 	nop
  410864:	2421007c 	addiu	at,at,124
  410868:	ac220000 	sw	v0,0(at)
  41086c:	8fc20028 	lw	v0,40(s8)
  410870:	00000000 	nop
  410874:	8c44000c 	lw	a0,12(v0)
  410878:	8f998094 	lw	t9,-32620(gp)
  41087c:	00000000 	nop
  410880:	0320f809 	jalr	t9
  410884:	00000000 	nop
  410888:	8fdc0010 	lw	gp,16(s8)
  41088c:	00000000 	nop
	if (ctx->attrs0) PFREE_ST(ctx->attrs0, db_attrs_st);
  410890:	8fc20028 	lw	v0,40(s8)
  410894:	00000000 	nop
  410898:	8c420014 	lw	v0,20(v0)
  41089c:	00000000 	nop
  4108a0:	10400014 	beqz	v0,4108f4 <db_destroy+0xf0>
  4108a4:	00000000 	nop
  4108a8:	8f828018 	lw	v0,-32744(gp)
  4108ac:	00000000 	nop
  4108b0:	24420088 	addiu	v0,v0,136
  4108b4:	8c420000 	lw	v0,0(v0)
  4108b8:	00000000 	nop
  4108bc:	2442ffff 	addiu	v0,v0,-1
  4108c0:	8f818018 	lw	at,-32744(gp)
  4108c4:	00000000 	nop
  4108c8:	24210088 	addiu	at,at,136
  4108cc:	ac220000 	sw	v0,0(at)
  4108d0:	8fc20028 	lw	v0,40(s8)
  4108d4:	00000000 	nop
  4108d8:	8c440014 	lw	a0,20(v0)
  4108dc:	8f998094 	lw	t9,-32620(gp)
  4108e0:	00000000 	nop
  4108e4:	0320f809 	jalr	t9
  4108e8:	00000000 	nop
  4108ec:	8fdc0010 	lw	gp,16(s8)
  4108f0:	00000000 	nop
	PFREE_ST(ctx, db_context_st);
  4108f4:	8f828018 	lw	v0,-32744(gp)
  4108f8:	00000000 	nop
  4108fc:	24420070 	addiu	v0,v0,112
  410900:	8c420000 	lw	v0,0(v0)
  410904:	00000000 	nop
  410908:	2442ffff 	addiu	v0,v0,-1
  41090c:	8f818018 	lw	at,-32744(gp)
  410910:	00000000 	nop
  410914:	24210070 	addiu	at,at,112
  410918:	ac220000 	sw	v0,0(at)
  41091c:	8fc40028 	lw	a0,40(s8)
  410920:	8f998094 	lw	t9,-32620(gp)
  410924:	00000000 	nop
  410928:	0320f809 	jalr	t9
  41092c:	00000000 	nop
  410930:	8fdc0010 	lw	gp,16(s8)
  410934:	00000000 	nop
}
  410938:	03c0e821 	move	sp,s8
  41093c:	8fbf0020 	lw	ra,32(sp)
  410940:	8fbe001c 	lw	s8,28(sp)
  410944:	27bd0028 	addiu	sp,sp,40
  410948:	03e00008 	jr	ra
  41094c:	00000000 	nop

00410950 <db_trans_add>:
  410950:	3c1c0fc0 	lui	gp,0xfc0
  410954:	279cc020 	addiu	gp,gp,-16352
  410958:	0399e021 	addu	gp,gp,t9
  41095c:	27bdffc8 	addiu	sp,sp,-56
  410960:	afbc0010 	sw	gp,16(sp)
  410964:	afbf0030 	sw	ra,48(sp)
  410968:	afbe002c 	sw	s8,44(sp)
  41096c:	afbc0028 	sw	gp,40(sp)
  410970:	03a0f021 	move	s8,sp
  410974:	afc40038 	sw	a0,56(s8)
  410978:	00a01021 	move	v0,a1
  41097c:	a3c20018 	sb	v0,24(s8)
/*	Start a new transform, expand trans0 is needed */
int
db_trans_add(struct db_context *ctx, u_int8_t transid)
{
	/*	skip incrementing current trans pointer the 1st time*/
	if (ctx->trans_cur && ctx->trans_cur->attr_cnt)
  410980:	8fc20038 	lw	v0,56(s8)
  410984:	00000000 	nop
  410988:	8c420010 	lw	v0,16(v0)
  41098c:	00000000 	nop
  410990:	10400011 	beqz	v0,4109d8 <db_trans_add+0x88>
  410994:	00000000 	nop
  410998:	8fc20038 	lw	v0,56(s8)
  41099c:	00000000 	nop
  4109a0:	8c420010 	lw	v0,16(v0)
  4109a4:	00000000 	nop
  4109a8:	8c420008 	lw	v0,8(v0)
  4109ac:	00000000 	nop
  4109b0:	10400009 	beqz	v0,4109d8 <db_trans_add+0x88>
  4109b4:	00000000 	nop
		ctx->trans_cur++;
  4109b8:	8fc20038 	lw	v0,56(s8)
  4109bc:	00000000 	nop
  4109c0:	8c420010 	lw	v0,16(v0)
  4109c4:	00000000 	nop
  4109c8:	2443000c 	addiu	v1,v0,12
  4109cc:	8fc20038 	lw	v0,56(s8)
  4109d0:	00000000 	nop
  4109d4:	ac430010 	sw	v1,16(v0)
	/*	
	 *	Strategy: if more space is needed, expand by 
	 *	          <current_size>/2 + 1
	 *
	 *	This happens to produce a "reasonable" sequence
	 *	after few allocations, eg.:
	 *	0,1,2,4,8,13,20,31,47
	 */
	if ((ctx->trans_cur - ctx->trans0) >= ctx->max_trans) {
  4109d8:	8fc20038 	lw	v0,56(s8)
  4109dc:	00000000 	nop
  4109e0:	8c430010 	lw	v1,16(v0)
  4109e4:	8fc20038 	lw	v0,56(s8)
  4109e8:	00000000 	nop
  4109ec:	8c42000c 	lw	v0,12(v0)
  4109f0:	00000000 	nop
  4109f4:	00621023 	subu	v0,v1,v0
  4109f8:	00021883 	sra	v1,v0,0x2
  4109fc:	00601021 	move	v0,v1
  410a00:	00021080 	sll	v0,v0,0x2
  410a04:	00431021 	addu	v0,v0,v1
  410a08:	00021900 	sll	v1,v0,0x4
  410a0c:	00431021 	addu	v0,v0,v1
  410a10:	00021a00 	sll	v1,v0,0x8
  410a14:	00431021 	addu	v0,v0,v1
  410a18:	00021c00 	sll	v1,v0,0x10
  410a1c:	00431021 	addu	v0,v0,v1
  410a20:	00021823 	negu	v1,v0
  410a24:	8fc20038 	lw	v0,56(s8)
  410a28:	00000000 	nop
  410a2c:	8c42001c 	lw	v0,28(v0)
  410a30:	00000000 	nop
  410a34:	0062102a 	slt	v0,v1,v0
  410a38:	14400018 	bnez	v0,410a9c <db_trans_add+0x14c>
  410a3c:	00000000 	nop
		/* XXX:jjo if fails should shout and flag it */
		if (db_trans_expand(ctx, ctx->max_trans/2 + 1)<0)
  410a40:	8fc20038 	lw	v0,56(s8)
  410a44:	00000000 	nop
  410a48:	8c43001c 	lw	v1,28(v0)
  410a4c:	00000000 	nop
  410a50:	000317c3 	sra	v0,v1,0x1f
  410a54:	000217c2 	srl	v0,v0,0x1f
  410a58:	00621021 	addu	v0,v1,v0
  410a5c:	00021043 	sra	v0,v0,0x1
  410a60:	24420001 	addiu	v0,v0,1
  410a64:	8fc40038 	lw	a0,56(s8)
  410a68:	00402821 	move	a1,v0
  410a6c:	8f998024 	lw	t9,-32732(gp)
  410a70:	00000000 	nop
  410a74:	273902ac 	addiu	t9,t9,684
  410a78:	00000000 	nop
  410a7c:	0320f809 	jalr	t9
  410a80:	00000000 	nop
  410a84:	8fdc0010 	lw	gp,16(s8)
  410a88:	04410004 	bgez	v0,410a9c <db_trans_add+0x14c>
  410a8c:	00000000 	nop
			return -1;
  410a90:	2402ffff 	li	v0,-1
  410a94:	1000001d 	b	410b0c <db_trans_add+0x1bc>
  410a98:	00000000 	nop
	}
	ctx->trans_cur->transid = transid;
  410a9c:	8fc20038 	lw	v0,56(s8)
  410aa0:	00000000 	nop
  410aa4:	8c430010 	lw	v1,16(v0)
  410aa8:	93c20018 	lbu	v0,24(s8)
  410aac:	00000000 	nop
  410ab0:	a0620000 	sb	v0,0(v1)
	ctx->trans_cur->attrs=ctx->attrs_cur;
  410ab4:	8fc20038 	lw	v0,56(s8)
  410ab8:	00000000 	nop
  410abc:	8c430010 	lw	v1,16(v0)
  410ac0:	8fc20038 	lw	v0,56(s8)
  410ac4:	00000000 	nop
  410ac8:	8c420018 	lw	v0,24(v0)
  410acc:	00000000 	nop
  410ad0:	ac620004 	sw	v0,4(v1)
	ctx->trans_cur->attr_cnt = 0;
  410ad4:	8fc20038 	lw	v0,56(s8)
  410ad8:	00000000 	nop
  410adc:	8c420010 	lw	v0,16(v0)
  410ae0:	00000000 	nop
  410ae4:	ac400008 	sw	zero,8(v0)
	ctx->prop.trans_cnt++;
  410ae8:	8fc20038 	lw	v0,56(s8)
  410aec:	00000000 	nop
  410af0:	8c420008 	lw	v0,8(v0)
  410af4:	00000000 	nop
  410af8:	24430001 	addiu	v1,v0,1
  410afc:	8fc20038 	lw	v0,56(s8)
  410b00:	00000000 	nop
  410b04:	ac430008 	sw	v1,8(v0)
	return 0;
  410b08:	00001021 	move	v0,zero
}
  410b0c:	03c0e821 	move	sp,s8
  410b10:	8fbf0030 	lw	ra,48(sp)
  410b14:	8fbe002c 	lw	s8,44(sp)
  410b18:	27bd0038 	addiu	sp,sp,56
  410b1c:	03e00008 	jr	ra
  410b20:	00000000 	nop

00410b24 <db_attr_add>:
  410b24:	3c1c0fc0 	lui	gp,0xfc0
  410b28:	279cbe4c 	addiu	gp,gp,-16820
  410b2c:	0399e021 	addu	gp,gp,t9
  410b30:	27bdffd0 	addiu	sp,sp,-48
  410b34:	afbc0010 	sw	gp,16(sp)
  410b38:	afbf0028 	sw	ra,40(sp)
  410b3c:	afbe0024 	sw	s8,36(sp)
  410b40:	afbc0020 	sw	gp,32(sp)
  410b44:	03a0f021 	move	s8,sp
  410b48:	afc40030 	sw	a0,48(s8)
  410b4c:	afc50034 	sw	a1,52(s8)
/*	Add attr copy to current transform, expanding attrs0 if needed */
int
db_attr_add(struct db_context *ctx, const struct db_attr *a) 
{
	/*	
	 *	Strategy: if more space is needed, expand by 
	 *	          <current_size>/2 + 1
	 */
	if ((ctx->attrs_cur - ctx->attrs0) >= ctx->max_attrs) {
  410b50:	8fc20030 	lw	v0,48(s8)
  410b54:	00000000 	nop
  410b58:	8c430018 	lw	v1,24(v0)
  410b5c:	8fc20030 	lw	v0,48(s8)
  410b60:	00000000 	nop
  410b64:	8c420014 	lw	v0,20(v0)
  410b68:	00000000 	nop
  410b6c:	00621023 	subu	v0,v1,v0
  410b70:	00021083 	sra	v0,v0,0x2
  410b74:	00401821 	move	v1,v0
  410b78:	8fc20030 	lw	v0,48(s8)
  410b7c:	00000000 	nop
  410b80:	8c420020 	lw	v0,32(v0)
  410b84:	00000000 	nop
  410b88:	0062102a 	slt	v0,v1,v0
  410b8c:	14400018 	bnez	v0,410bf0 <db_attr_add+0xcc>
  410b90:	00000000 	nop
		/* XXX:jjo if fails should shout and flag it */
		if (db_attrs_expand(ctx, ctx->max_attrs/2 + 1) < 0)
  410b94:	8fc20030 	lw	v0,48(s8)
  410b98:	00000000 	nop
  410b9c:	8c430020 	lw	v1,32(v0)
  410ba0:	00000000 	nop
  410ba4:	000317c3 	sra	v0,v1,0x1f
  410ba8:	000217c2 	srl	v0,v0,0x1f
  410bac:	00621021 	addu	v0,v1,v0
  410bb0:	00021043 	sra	v0,v0,0x1
  410bb4:	24420001 	addiu	v0,v0,1
  410bb8:	8fc40030 	lw	a0,48(s8)
  410bbc:	00402821 	move	a1,v0
  410bc0:	8f998024 	lw	t9,-32732(gp)
  410bc4:	00000000 	nop
  410bc8:	27390488 	addiu	t9,t9,1160
  410bcc:	00000000 	nop
  410bd0:	0320f809 	jalr	t9
  410bd4:	00000000 	nop
  410bd8:	8fdc0010 	lw	gp,16(s8)
  410bdc:	04410004 	bgez	v0,410bf0 <db_attr_add+0xcc>
  410be0:	00000000 	nop
			return -1;
  410be4:	2402ffff 	li	v0,-1
  410be8:	1000001c 	b	410c5c <db_attr_add+0x138>
  410bec:	00000000 	nop
	}
	*ctx->attrs_cur++=*a;
  410bf0:	8fc20030 	lw	v0,48(s8)
  410bf4:	00000000 	nop
  410bf8:	24450018 	addiu	a1,v0,24
  410bfc:	8ca30000 	lw	v1,0(a1)
  410c00:	00000000 	nop
  410c04:	00601021 	move	v0,v1
  410c08:	00402021 	move	a0,v0
  410c0c:	8fc20034 	lw	v0,52(s8)
  410c10:	00000000 	nop
  410c14:	84460000 	lh	a2,0(v0)
  410c18:	84470002 	lh	a3,2(v0)
  410c1c:	a4860000 	sh	a2,0(a0)
  410c20:	a4870002 	sh	a3,2(a0)
  410c24:	24630004 	addiu	v1,v1,4
  410c28:	aca30000 	sw	v1,0(a1)
	ctx->trans_cur->attr_cnt++;
  410c2c:	8fc20030 	lw	v0,48(s8)
  410c30:	00000000 	nop
  410c34:	8c430010 	lw	v1,16(v0)
  410c38:	8fc20030 	lw	v0,48(s8)
  410c3c:	00000000 	nop
  410c40:	8c420010 	lw	v0,16(v0)
  410c44:	00000000 	nop
  410c48:	8c420008 	lw	v0,8(v0)
  410c4c:	00000000 	nop
  410c50:	24420001 	addiu	v0,v0,1
  410c54:	ac620008 	sw	v0,8(v1)
	return 0;
  410c58:	00001021 	move	v0,zero
}
  410c5c:	03c0e821 	move	sp,s8
  410c60:	8fbf0028 	lw	ra,40(sp)
  410c64:	8fbe0024 	lw	s8,36(sp)
  410c68:	27bd0030 	addiu	sp,sp,48
  410c6c:	03e00008 	jr	ra
  410c70:	00000000 	nop

00410c74 <db_attr_add_values>:
  410c74:	3c1c0fc0 	lui	gp,0xfc0
  410c78:	279cbcfc 	addiu	gp,gp,-17156
  410c7c:	0399e021 	addu	gp,gp,t9
  410c80:	27bdffc8 	addiu	sp,sp,-56
  410c84:	afbc0010 	sw	gp,16(sp)
  410c88:	afbf0030 	sw	ra,48(sp)
  410c8c:	afbe002c 	sw	s8,44(sp)
  410c90:	afbc0028 	sw	gp,40(sp)
  410c94:	03a0f021 	move	s8,sp
  410c98:	afc40038 	sw	a0,56(s8)
  410c9c:	00a01021 	move	v0,a1
  410ca0:	00c01821 	move	v1,a2
  410ca4:	a7c20018 	sh	v0,24(s8)
  410ca8:	a7c3001a 	sh	v1,26(s8)
/*	Add attr copy (by value) to current transform, 
 *	expanding attrs0 if needed, just calls db_attr_add().
 */
int
db_attr_add_values(struct db_context *ctx,  u_int16_t type, u_int16_t val)
{
	struct db_attr attr;
	attr.type = type;
  410cac:	97c20018 	lhu	v0,24(s8)
  410cb0:	00000000 	nop
  410cb4:	a7c20020 	sh	v0,32(s8)
	attr.val = val;
  410cb8:	97c2001a 	lhu	v0,26(s8)
  410cbc:	00000000 	nop
  410cc0:	a7c20022 	sh	v0,34(s8)
	return db_attr_add (ctx, &attr);
  410cc4:	8fc40038 	lw	a0,56(s8)
  410cc8:	27c50020 	addiu	a1,s8,32
  410ccc:	8f998aec 	lw	t9,-29972(gp)
  410cd0:	00000000 	nop
  410cd4:	0320f809 	jalr	t9
  410cd8:	00000000 	nop
  410cdc:	8fdc0010 	lw	gp,16(s8)
  410ce0:	00000000 	nop
}
  410ce4:	03c0e821 	move	sp,s8
  410ce8:	8fbf0030 	lw	ra,48(sp)
  410cec:	8fbe002c 	lw	s8,44(sp)
  410cf0:	27bd0038 	addiu	sp,sp,56
  410cf4:	03e00008 	jr	ra
  410cf8:	00000000 	nop

00410cfc <db_ops_show_status>:
  410cfc:	3c1c0fc0 	lui	gp,0xfc0
  410d00:	279cbc74 	addiu	gp,gp,-17292
  410d04:	0399e021 	addu	gp,gp,t9
  410d08:	27bdffb8 	addiu	sp,sp,-72
  410d0c:	afbc0030 	sw	gp,48(sp)
  410d10:	afbf0040 	sw	ra,64(sp)
  410d14:	afbe003c 	sw	s8,60(sp)
  410d18:	afbc0038 	sw	gp,56(sp)
  410d1c:	03a0f021 	move	s8,sp
#ifndef NO_DB_OPS_STATS
int
db_ops_show_status(void)
{
	whack_log(RC_COMMENT, "stats " __FILE__ ": " 
  410d20:	8f828018 	lw	v0,-32744(gp)
  410d24:	00000000 	nop
  410d28:	24420070 	addiu	v0,v0,112
  410d2c:	8c420008 	lw	v0,8(v0)
  410d30:	00000000 	nop
  410d34:	afa20010 	sw	v0,16(sp)
  410d38:	8f828018 	lw	v0,-32744(gp)
  410d3c:	00000000 	nop
  410d40:	2442007c 	addiu	v0,v0,124
  410d44:	8c420000 	lw	v0,0(v0)
  410d48:	00000000 	nop
  410d4c:	afa20014 	sw	v0,20(sp)
  410d50:	8f828018 	lw	v0,-32744(gp)
  410d54:	00000000 	nop
  410d58:	2442007c 	addiu	v0,v0,124
  410d5c:	8c420004 	lw	v0,4(v0)
  410d60:	00000000 	nop
  410d64:	afa20018 	sw	v0,24(sp)
  410d68:	8f828018 	lw	v0,-32744(gp)
  410d6c:	00000000 	nop
  410d70:	2442007c 	addiu	v0,v0,124
  410d74:	8c420008 	lw	v0,8(v0)
  410d78:	00000000 	nop
  410d7c:	afa2001c 	sw	v0,28(sp)
  410d80:	8f828018 	lw	v0,-32744(gp)
  410d84:	00000000 	nop
  410d88:	24420088 	addiu	v0,v0,136
  410d8c:	8c420000 	lw	v0,0(v0)
  410d90:	00000000 	nop
  410d94:	afa20020 	sw	v0,32(sp)
  410d98:	8f828018 	lw	v0,-32744(gp)
  410d9c:	00000000 	nop
  410da0:	24420088 	addiu	v0,v0,136
  410da4:	8c420004 	lw	v0,4(v0)
  410da8:	00000000 	nop
  410dac:	afa20024 	sw	v0,36(sp)
  410db0:	8f828018 	lw	v0,-32744(gp)
  410db4:	00000000 	nop
  410db8:	24420088 	addiu	v0,v0,136
  410dbc:	8c420008 	lw	v0,8(v0)
  410dc0:	00000000 	nop
  410dc4:	afa20028 	sw	v0,40(sp)
  410dc8:	00002021 	move	a0,zero
  410dcc:	8f858020 	lw	a1,-32736(gp)
  410dd0:	00000000 	nop
  410dd4:	24a54e1c 	addiu	a1,a1,19996
  410dd8:	8f868018 	lw	a2,-32744(gp)
  410ddc:	00000000 	nop
  410de0:	24c60070 	addiu	a2,a2,112
  410de4:	8cc60000 	lw	a2,0(a2)
  410de8:	8f878018 	lw	a3,-32744(gp)
  410dec:	00000000 	nop
  410df0:	24e70070 	addiu	a3,a3,112
  410df4:	8ce70004 	lw	a3,4(a3)
  410df8:	8f9982a8 	lw	t9,-32088(gp)
  410dfc:	00000000 	nop
  410e00:	0320f809 	jalr	t9
  410e04:	00000000 	nop
  410e08:	8fdc0030 	lw	gp,48(s8)
  410e0c:	00000000 	nop
			DB_OPS_STATS_DESC " :"
			DB_OPS_STATS_STR("context")
			DB_OPS_STATS_STR("trans")
			DB_OPS_STATS_STR("attrs"),
			DB_OPS_STATS_F(db_context_st),
			DB_OPS_STATS_F(db_trans_st),
			DB_OPS_STATS_F(db_attrs_st)
			);
	return 0;
  410e10:	00001021 	move	v0,zero
}
  410e14:	03c0e821 	move	sp,s8
  410e18:	8fbf0040 	lw	ra,64(sp)
  410e1c:	8fbe003c 	lw	s8,60(sp)
  410e20:	27bd0048 	addiu	sp,sp,72
  410e24:	03e00008 	jr	ra
  410e28:	00000000 	nop

00410e2c <alloc_bytes_st>:
  410e2c:	3c1c0fc0 	lui	gp,0xfc0
  410e30:	279cbb44 	addiu	gp,gp,-17596
  410e34:	0399e021 	addu	gp,gp,t9
  410e38:	27bdffd0 	addiu	sp,sp,-48
  410e3c:	afbc0010 	sw	gp,16(sp)
  410e40:	afbf0028 	sw	ra,40(sp)
  410e44:	afbe0024 	sw	s8,36(sp)
  410e48:	afbc0020 	sw	gp,32(sp)
  410e4c:	03a0f021 	move	s8,sp
  410e50:	afc40030 	sw	a0,48(s8)
  410e54:	00a01021 	move	v0,a1
  410e58:	afc60038 	sw	a2,56(s8)
  410e5c:	8fc40030 	lw	a0,48(s8)
  410e60:	8f998084 	lw	t9,-32636(gp)
  410e64:	00000000 	nop
  410e68:	0320f809 	jalr	t9
  410e6c:	00000000 	nop
  410e70:	8fdc0010 	lw	gp,16(s8)
  410e74:	afc20018 	sw	v0,24(s8)
  410e78:	8fc20018 	lw	v0,24(s8)
  410e7c:	00000000 	nop
  410e80:	1040001d 	beqz	v0,410ef8 <alloc_bytes_st+0xcc>
  410e84:	00000000 	nop
  410e88:	8fc30038 	lw	v1,56(s8)
  410e8c:	00000000 	nop
  410e90:	8c620000 	lw	v0,0(v1)
  410e94:	00000000 	nop
  410e98:	24420001 	addiu	v0,v0,1
  410e9c:	8fc30038 	lw	v1,56(s8)
  410ea0:	00000000 	nop
  410ea4:	ac620000 	sw	v0,0(v1)
  410ea8:	8fc30038 	lw	v1,56(s8)
  410eac:	00000000 	nop
  410eb0:	8c620004 	lw	v0,4(v1)
  410eb4:	00000000 	nop
  410eb8:	24420001 	addiu	v0,v0,1
  410ebc:	8fc30038 	lw	v1,56(s8)
  410ec0:	00000000 	nop
  410ec4:	ac620004 	sw	v0,4(v1)
  410ec8:	8fc30038 	lw	v1,56(s8)
  410ecc:	00000000 	nop
  410ed0:	8c620008 	lw	v0,8(v1)
  410ed4:	8fc30030 	lw	v1,48(s8)
  410ed8:	00000000 	nop
  410edc:	0043102b 	sltu	v0,v0,v1
  410ee0:	10400005 	beqz	v0,410ef8 <alloc_bytes_st+0xcc>
  410ee4:	00000000 	nop
  410ee8:	8fc30030 	lw	v1,48(s8)
  410eec:	8fc20038 	lw	v0,56(s8)
  410ef0:	00000000 	nop
  410ef4:	ac430008 	sw	v1,8(v0)
  410ef8:	8fc20018 	lw	v0,24(s8)
  410efc:	00000000 	nop
  410f00:	03c0e821 	move	sp,s8
  410f04:	8fbf0028 	lw	ra,40(sp)
  410f08:	8fbe0024 	lw	s8,36(sp)
  410f0c:	27bd0030 	addiu	sp,sp,48
  410f10:	03e00008 	jr	ra
  410f14:	00000000 	nop
	...

00410f20 <known_oid>:
  410f20:	3c1c0fc0 	lui	gp,0xfc0
  410f24:	279cba50 	addiu	gp,gp,-17840
  410f28:	0399e021 	addu	gp,gp,t9
  410f2c:	27bdffe8 	addiu	sp,sp,-24
  410f30:	afbc0000 	sw	gp,0(sp)
  410f34:	afbe0014 	sw	s8,20(sp)
  410f38:	afbc0010 	sw	gp,16(sp)
  410f3c:	03a0f021 	move	s8,sp
  410f40:	afc40018 	sw	a0,24(s8)
  410f44:	afc5001c 	sw	a1,28(s8)
 */
int
known_oid(chunk_t object)
{
    int oid = 0;
  410f48:	afc00008 	sw	zero,8(s8)

    while (object.len)
  410f4c:	8fc2001c 	lw	v0,28(s8)
  410f50:	00000000 	nop
  410f54:	14400003 	bnez	v0,410f64 <known_oid+0x44>
  410f58:	00000000 	nop
  410f5c:	10000046 	b	411078 <known_oid+0x158>
  410f60:	00000000 	nop
    {
	if (oid_names[oid].octet == *object.ptr)
  410f64:	8fc20008 	lw	v0,8(s8)
  410f68:	00000000 	nop
  410f6c:	00021100 	sll	v0,v0,0x4
  410f70:	8f81865c 	lw	at,-31140(gp)
  410f74:	00000000 	nop
  410f78:	00221021 	addu	v0,at,v0
  410f7c:	90430000 	lbu	v1,0(v0)
  410f80:	8fc20018 	lw	v0,24(s8)
  410f84:	00000000 	nop
  410f88:	90420000 	lbu	v0,0(v0)
  410f8c:	00000000 	nop
  410f90:	1462001f 	bne	v1,v0,411010 <known_oid+0xf0>
  410f94:	00000000 	nop
	{
	    if (--object.len == 0 || oid_names[oid].down == 0)
  410f98:	8fc2001c 	lw	v0,28(s8)
  410f9c:	00000000 	nop
  410fa0:	2442ffff 	addiu	v0,v0,-1
  410fa4:	afc2001c 	sw	v0,28(s8)
  410fa8:	1040000c 	beqz	v0,410fdc <known_oid+0xbc>
  410fac:	00000000 	nop
  410fb0:	8fc20008 	lw	v0,8(s8)
  410fb4:	00000000 	nop
  410fb8:	00021100 	sll	v0,v0,0x4
  410fbc:	24420008 	addiu	v0,v0,8
  410fc0:	8f81865c 	lw	at,-31140(gp)
  410fc4:	00000000 	nop
  410fc8:	00221021 	addu	v0,at,v0
  410fcc:	8c420000 	lw	v0,0(v0)
  410fd0:	00000000 	nop
  410fd4:	14400004 	bnez	v0,410fe8 <known_oid+0xc8>
  410fd8:	00000000 	nop
	    {
		return oid;          /* found terminal symbol */
  410fdc:	8fc20008 	lw	v0,8(s8)
  410fe0:	10000026 	b	41107c <known_oid+0x15c>
  410fe4:	00000000 	nop
	    }
	    else
	    {
		object.ptr++; oid++; /* advance to next hex octet */
  410fe8:	8fc20018 	lw	v0,24(s8)
  410fec:	00000000 	nop
  410ff0:	24420001 	addiu	v0,v0,1
  410ff4:	afc20018 	sw	v0,24(s8)
  410ff8:	8fc20008 	lw	v0,8(s8)
  410ffc:	00000000 	nop
  411000:	24420001 	addiu	v0,v0,1
  411004:	afc20008 	sw	v0,8(s8)
  411008:	1000ffd0 	b	410f4c <known_oid+0x2c>
  41100c:	00000000 	nop
	    }
	}
	else
	{
	    if (oid_names[oid].next)
  411010:	8fc20008 	lw	v0,8(s8)
  411014:	00000000 	nop
  411018:	00021100 	sll	v0,v0,0x4
  41101c:	8f81865c 	lw	at,-31140(gp)
  411020:	00000000 	nop
  411024:	24210004 	addiu	at,at,4
  411028:	00221021 	addu	v0,at,v0
  41102c:	8c420000 	lw	v0,0(v0)
  411030:	00000000 	nop
  411034:	1040000d 	beqz	v0,41106c <known_oid+0x14c>
  411038:	00000000 	nop
		oid = oid_names[oid].next;
  41103c:	8fc20008 	lw	v0,8(s8)
  411040:	00000000 	nop
  411044:	00021100 	sll	v0,v0,0x4
  411048:	8f81865c 	lw	at,-31140(gp)
  41104c:	00000000 	nop
  411050:	24210004 	addiu	at,at,4
  411054:	00221021 	addu	v0,at,v0
  411058:	8c420000 	lw	v0,0(v0)
  41105c:	00000000 	nop
  411060:	afc20008 	sw	v0,8(s8)
  411064:	1000ffb9 	b	410f4c <known_oid+0x2c>
  411068:	00000000 	nop
	    else
		return -1;
  41106c:	2402ffff 	li	v0,-1
  411070:	10000002 	b	41107c <known_oid+0x15c>
  411074:	00000000 	nop
	}
    }
    return -1;
  411078:	2402ffff 	li	v0,-1
}
  41107c:	03c0e821 	move	sp,s8
  411080:	8fbe0014 	lw	s8,20(sp)
  411084:	27bd0018 	addiu	sp,sp,24
  411088:	03e00008 	jr	ra
  41108c:	00000000 	nop

00411090 <asn1_length>:
  411090:	3c1c0fc0 	lui	gp,0xfc0
  411094:	279cb8e0 	addiu	gp,gp,-18208
  411098:	0399e021 	addu	gp,gp,t9
  41109c:	27bdffd8 	addiu	sp,sp,-40
  4110a0:	afbc0000 	sw	gp,0(sp)
  4110a4:	afbe0024 	sw	s8,36(sp)
  4110a8:	afbc0020 	sw	gp,32(sp)
  4110ac:	03a0f021 	move	s8,sp
  4110b0:	afc40028 	sw	a0,40(s8)

/*
 *  Decodes the length in bytes of an ASN.1 object
 */
u_int
asn1_length(chunk_t *blob)
{
    u_int n, len;

    len = 0;
  4110b4:	afc0000c 	sw	zero,12(s8)
    blob->ptr++;  blob->len--;
  4110b8:	8fc20028 	lw	v0,40(s8)
  4110bc:	00000000 	nop
  4110c0:	8c420000 	lw	v0,0(v0)
  4110c4:	00000000 	nop
  4110c8:	24430001 	addiu	v1,v0,1
  4110cc:	8fc20028 	lw	v0,40(s8)
  4110d0:	00000000 	nop
  4110d4:	ac430000 	sw	v1,0(v0)
  4110d8:	8fc20028 	lw	v0,40(s8)
  4110dc:	00000000 	nop
  4110e0:	8c420004 	lw	v0,4(v0)
  4110e4:	00000000 	nop
  4110e8:	2443ffff 	addiu	v1,v0,-1
  4110ec:	8fc20028 	lw	v0,40(s8)
  4110f0:	00000000 	nop
  4110f4:	ac430004 	sw	v1,4(v0)

    if ((*blob->ptr & 0x80) == 0x80)  /* composite length */
  4110f8:	8fc20028 	lw	v0,40(s8)
  4110fc:	00000000 	nop
  411100:	8c420000 	lw	v0,0(v0)
  411104:	00000000 	nop
  411108:	90420000 	lbu	v0,0(v0)
  41110c:	00000000 	nop
  411110:	30420080 	andi	v0,v0,0x80
  411114:	304200ff 	andi	v0,v0,0xff
  411118:	1040002f 	beqz	v0,4111d8 <asn1_length+0x148>
  41111c:	00000000 	nop
    {
	for (n = *blob->ptr++ & 0x7f; n > 0; n--)
  411120:	8fc40028 	lw	a0,40(s8)
  411124:	00000000 	nop
  411128:	8c830000 	lw	v1,0(a0)
  41112c:	00000000 	nop
  411130:	00601021 	move	v0,v1
  411134:	90420000 	lbu	v0,0(v0)
  411138:	00000000 	nop
  41113c:	3042007f 	andi	v0,v0,0x7f
  411140:	304200ff 	andi	v0,v0,0xff
  411144:	afc20008 	sw	v0,8(s8)
  411148:	24630001 	addiu	v1,v1,1
  41114c:	ac830000 	sw	v1,0(a0)
  411150:	8fc20008 	lw	v0,8(s8)
  411154:	00000000 	nop
  411158:	14400003 	bnez	v0,411168 <asn1_length+0xd8>
  41115c:	00000000 	nop
  411160:	10000027 	b	411200 <asn1_length+0x170>
  411164:	00000000 	nop
	{
	    len = 256*len + *blob->ptr++;
  411168:	8fc2000c 	lw	v0,12(s8)
  41116c:	00000000 	nop
  411170:	00022a00 	sll	a1,v0,0x8
  411174:	8fc40028 	lw	a0,40(s8)
  411178:	00000000 	nop
  41117c:	8c830000 	lw	v1,0(a0)
  411180:	00000000 	nop
  411184:	00601021 	move	v0,v1
  411188:	90420000 	lbu	v0,0(v0)
  41118c:	00000000 	nop
  411190:	00a21021 	addu	v0,a1,v0
  411194:	afc2000c 	sw	v0,12(s8)
  411198:	24630001 	addiu	v1,v1,1
  41119c:	ac830000 	sw	v1,0(a0)
	    blob->len--;
  4111a0:	8fc20028 	lw	v0,40(s8)
  4111a4:	00000000 	nop
  4111a8:	8c420004 	lw	v0,4(v0)
  4111ac:	00000000 	nop
  4111b0:	2443ffff 	addiu	v1,v0,-1
  4111b4:	8fc20028 	lw	v0,40(s8)
  4111b8:	00000000 	nop
  4111bc:	ac430004 	sw	v1,4(v0)
  4111c0:	8fc20008 	lw	v0,8(s8)
  4111c4:	00000000 	nop
  4111c8:	2442ffff 	addiu	v0,v0,-1
  4111cc:	afc20008 	sw	v0,8(s8)
  4111d0:	1000ffdf 	b	411150 <asn1_length+0xc0>
  4111d4:	00000000 	nop
	}
    }
    else
    {
	len = *blob->ptr++;
  4111d8:	8fc40028 	lw	a0,40(s8)
  4111dc:	00000000 	nop
  4111e0:	8c820000 	lw	v0,0(a0)
  4111e4:	00000000 	nop
  4111e8:	00401821 	move	v1,v0
  4111ec:	90630000 	lbu	v1,0(v1)
  4111f0:	00000000 	nop
  4111f4:	afc3000c 	sw	v1,12(s8)
  4111f8:	24420001 	addiu	v0,v0,1
  4111fc:	ac820000 	sw	v0,0(a0)
    }
    blob->len--;
  411200:	8fc20028 	lw	v0,40(s8)
  411204:	00000000 	nop
  411208:	8c420004 	lw	v0,4(v0)
  41120c:	00000000 	nop
  411210:	2443ffff 	addiu	v1,v0,-1
  411214:	8fc20028 	lw	v0,40(s8)
  411218:	00000000 	nop
  41121c:	ac430004 	sw	v1,4(v0)
    return len;
  411220:	8fc2000c 	lw	v0,12(s8)
  411224:	00000000 	nop
}
  411228:	03c0e821 	move	sp,s8
  41122c:	8fbe0024 	lw	s8,36(sp)
  411230:	27bd0028 	addiu	sp,sp,40
  411234:	03e00008 	jr	ra
  411238:	00000000 	nop

0041123c <is_printablestring>:
  41123c:	3c1c0fc0 	lui	gp,0xfc0
  411240:	279cb734 	addiu	gp,gp,-18636
  411244:	0399e021 	addu	gp,gp,t9
  411248:	27bdff80 	addiu	sp,sp,-128
  41124c:	afbc0010 	sw	gp,16(sp)
  411250:	afbf0078 	sw	ra,120(sp)
  411254:	afbe0074 	sw	s8,116(sp)
  411258:	afbc0070 	sw	gp,112(sp)
  41125c:	03a0f021 	move	s8,sp
  411260:	afc40080 	sw	a0,128(s8)
  411264:	afc50084 	sw	a1,132(s8)

/*
 *  determines if a character string is of type ASN.1 printableString
 */
bool
is_printablestring(chunk_t str)
{
    const char printablestring_charset[] =
  411268:	27c40018 	addiu	a0,s8,24
  41126c:	8f858020 	lw	a1,-32736(gp)
  411270:	00000000 	nop
  411274:	24a54e80 	addiu	a1,a1,20096
  411278:	2406004b 	li	a2,75
  41127c:	8f998a30 	lw	t9,-30160(gp)
  411280:	00000000 	nop
  411284:	0320f809 	jalr	t9
  411288:	00000000 	nop
  41128c:	8fdc0010 	lw	gp,16(s8)
  411290:	00000000 	nop
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?";
    u_int i;

    for (i = 0; i < str.len; i++)
  411294:	afc00068 	sw	zero,104(s8)
  411298:	8fc20068 	lw	v0,104(s8)
  41129c:	8fc30084 	lw	v1,132(s8)
  4112a0:	00000000 	nop
  4112a4:	0043102b 	sltu	v0,v0,v1
  4112a8:	14400003 	bnez	v0,4112b8 <is_printablestring+0x7c>
  4112ac:	00000000 	nop
  4112b0:	10000018 	b	411314 <is_printablestring+0xd8>
  4112b4:	00000000 	nop
    {
	if (strchr(printablestring_charset, str.ptr[i]) == NULL)
  4112b8:	8fc30080 	lw	v1,128(s8)
  4112bc:	8fc20068 	lw	v0,104(s8)
  4112c0:	00000000 	nop
  4112c4:	00621021 	addu	v0,v1,v0
  4112c8:	90420000 	lbu	v0,0(v0)
  4112cc:	27c40018 	addiu	a0,s8,24
  4112d0:	00402821 	move	a1,v0
  4112d4:	8f99813c 	lw	t9,-32452(gp)
  4112d8:	00000000 	nop
  4112dc:	0320f809 	jalr	t9
  4112e0:	00000000 	nop
  4112e4:	8fdc0010 	lw	gp,16(s8)
  4112e8:	14400004 	bnez	v0,4112fc <is_printablestring+0xc0>
  4112ec:	00000000 	nop
	    return FALSE;
  4112f0:	00001021 	move	v0,zero
  4112f4:	10000008 	b	411318 <is_printablestring+0xdc>
  4112f8:	00000000 	nop
  4112fc:	8fc20068 	lw	v0,104(s8)
  411300:	00000000 	nop
  411304:	24420001 	addiu	v0,v0,1
  411308:	afc20068 	sw	v0,104(s8)
  41130c:	1000ffe2 	b	411298 <is_printablestring+0x5c>
  411310:	00000000 	nop
    }
    return TRUE;
  411314:	24020001 	li	v0,1
}
  411318:	03c0e821 	move	sp,s8
  41131c:	8fbf0078 	lw	ra,120(sp)
  411320:	8fbe0074 	lw	s8,116(sp)
  411324:	27bd0080 	addiu	sp,sp,128
  411328:	03e00008 	jr	ra
  41132c:	00000000 	nop

00411330 <asn1totime>:
  411330:	3c1c0fc0 	lui	gp,0xfc0
  411334:	279cb640 	addiu	gp,gp,-18880
  411338:	0399e021 	addu	gp,gp,t9
  41133c:	27bdff70 	addiu	sp,sp,-144
  411340:	afbc0020 	sw	gp,32(sp)
  411344:	afbf0088 	sw	ra,136(sp)
  411348:	afbe0084 	sw	s8,132(sp)
  41134c:	afbc0080 	sw	gp,128(sp)
  411350:	03a0f021 	move	s8,sp
  411354:	afc40090 	sw	a0,144(s8)
  411358:	afc50094 	sw	a1,148(s8)

/*
 *  Converts ASN.1 UTCTIME or GENERALIZEDTIME into calender time
 */
time_t
asn1totime(const chunk_t *utctime, asn1_t type)
{
    struct tm t;
    time_t tz_offset;
    u_char *eot = NULL;
  41135c:	afc0005c 	sw	zero,92(s8)

    if ((eot = memchr(utctime->ptr, 'Z', utctime->len)) != NULL)
  411360:	8fc20090 	lw	v0,144(s8)
  411364:	00000000 	nop
  411368:	8c440000 	lw	a0,0(v0)
  41136c:	2405005a 	li	a1,90
  411370:	8fc20090 	lw	v0,144(s8)
  411374:	00000000 	nop
  411378:	8c460004 	lw	a2,4(v0)
  41137c:	8f9986e0 	lw	t9,-31008(gp)
  411380:	00000000 	nop
  411384:	0320f809 	jalr	t9
  411388:	00000000 	nop
  41138c:	8fdc0020 	lw	gp,32(s8)
  411390:	afc2005c 	sw	v0,92(s8)
  411394:	8fc2005c 	lw	v0,92(s8)
  411398:	00000000 	nop
  41139c:	afc2005c 	sw	v0,92(s8)
  4113a0:	10400004 	beqz	v0,4113b4 <asn1totime+0x84>
  4113a4:	00000000 	nop
    {
	tz_offset = 0; /* Zulu time with a zero time zone offset */
  4113a8:	afc00058 	sw	zero,88(s8)
  4113ac:	1000006b 	b	41155c <asn1totime+0x22c>
  4113b0:	00000000 	nop
    }
    else if ((eot = memchr(utctime->ptr, '+', utctime->len)) != NULL)
  4113b4:	8fc20090 	lw	v0,144(s8)
  4113b8:	00000000 	nop
  4113bc:	8c440000 	lw	a0,0(v0)
  4113c0:	2405002b 	li	a1,43
  4113c4:	8fc20090 	lw	v0,144(s8)
  4113c8:	00000000 	nop
  4113cc:	8c460004 	lw	a2,4(v0)
  4113d0:	8f9986e0 	lw	t9,-31008(gp)
  4113d4:	00000000 	nop
  4113d8:	0320f809 	jalr	t9
  4113dc:	00000000 	nop
  4113e0:	8fdc0020 	lw	gp,32(s8)
  4113e4:	afc2005c 	sw	v0,92(s8)
  4113e8:	8fc2005c 	lw	v0,92(s8)
  4113ec:	00000000 	nop
  4113f0:	afc2005c 	sw	v0,92(s8)
  4113f4:	10400022 	beqz	v0,411480 <asn1totime+0x150>
  4113f8:	00000000 	nop
    {
	int tz_hour, tz_min;

	sscanf(eot+1, "%2d%2d", &tz_hour, &tz_min);
  4113fc:	8fc2005c 	lw	v0,92(s8)
  411400:	00000000 	nop
  411404:	24420001 	addiu	v0,v0,1
  411408:	00402021 	move	a0,v0
  41140c:	8f858020 	lw	a1,-32736(gp)
  411410:	00000000 	nop
  411414:	24a54ecc 	addiu	a1,a1,20172
  411418:	27c60060 	addiu	a2,s8,96
  41141c:	27c70064 	addiu	a3,s8,100
  411420:	8f99859c 	lw	t9,-31332(gp)
  411424:	00000000 	nop
  411428:	0320f809 	jalr	t9
  41142c:	00000000 	nop
  411430:	8fdc0020 	lw	gp,32(s8)
  411434:	00000000 	nop
	tz_offset = 3600*tz_hour + 60*tz_min;  /* positive time zone offset */
  411438:	8fc30060 	lw	v1,96(s8)
  41143c:	00000000 	nop
  411440:	00601021 	move	v0,v1
  411444:	000210c0 	sll	v0,v0,0x3
  411448:	00431023 	subu	v0,v0,v1
  41144c:	00021140 	sll	v0,v0,0x5
  411450:	00431021 	addu	v0,v0,v1
  411454:	00022100 	sll	a0,v0,0x4
  411458:	8fc30064 	lw	v1,100(s8)
  41145c:	00000000 	nop
  411460:	00601021 	move	v0,v1
  411464:	00021100 	sll	v0,v0,0x4
  411468:	00431023 	subu	v0,v0,v1
  41146c:	00021080 	sll	v0,v0,0x2
  411470:	00821021 	addu	v0,a0,v0
  411474:	afc20058 	sw	v0,88(s8)
  411478:	10000038 	b	41155c <asn1totime+0x22c>
  41147c:	00000000 	nop
    }
    else if ((eot = memchr(utctime->ptr, '-', utctime->len)) != NULL)
  411480:	8fc20090 	lw	v0,144(s8)
  411484:	00000000 	nop
  411488:	8c440000 	lw	a0,0(v0)
  41148c:	2405002d 	li	a1,45
  411490:	8fc20090 	lw	v0,144(s8)
  411494:	00000000 	nop
  411498:	8c460004 	lw	a2,4(v0)
  41149c:	8f9986e0 	lw	t9,-31008(gp)
  4114a0:	00000000 	nop
  4114a4:	0320f809 	jalr	t9
  4114a8:	00000000 	nop
  4114ac:	8fdc0020 	lw	gp,32(s8)
  4114b0:	afc2005c 	sw	v0,92(s8)
  4114b4:	8fc2005c 	lw	v0,92(s8)
  4114b8:	00000000 	nop
  4114bc:	afc2005c 	sw	v0,92(s8)
  4114c0:	10400023 	beqz	v0,411550 <asn1totime+0x220>
  4114c4:	00000000 	nop
    {
	int tz_hour, tz_min;

	sscanf(eot+1, "%2d%2d", &tz_hour, &tz_min);
  4114c8:	8fc2005c 	lw	v0,92(s8)
  4114cc:	00000000 	nop
  4114d0:	24420001 	addiu	v0,v0,1
  4114d4:	00402021 	move	a0,v0
  4114d8:	8f858020 	lw	a1,-32736(gp)
  4114dc:	00000000 	nop
  4114e0:	24a54ecc 	addiu	a1,a1,20172
  4114e4:	27c60068 	addiu	a2,s8,104
  4114e8:	27c7006c 	addiu	a3,s8,108
  4114ec:	8f99859c 	lw	t9,-31332(gp)
  4114f0:	00000000 	nop
  4114f4:	0320f809 	jalr	t9
  4114f8:	00000000 	nop
  4114fc:	8fdc0020 	lw	gp,32(s8)
  411500:	00000000 	nop
	tz_offset = -3600*tz_hour - 60*tz_min;  /* negative time zone offset */
  411504:	8fc30068 	lw	v1,104(s8)
  411508:	00000000 	nop
  41150c:	00601021 	move	v0,v1
  411510:	000210c0 	sll	v0,v0,0x3
  411514:	00431023 	subu	v0,v0,v1
  411518:	00021140 	sll	v0,v0,0x5
  41151c:	00431021 	addu	v0,v0,v1
  411520:	00021100 	sll	v0,v0,0x4
  411524:	00022023 	negu	a0,v0
  411528:	8fc3006c 	lw	v1,108(s8)
  41152c:	00000000 	nop
  411530:	00601021 	move	v0,v1
  411534:	00021100 	sll	v0,v0,0x4
  411538:	00431023 	subu	v0,v0,v1
  41153c:	00021080 	sll	v0,v0,0x2
  411540:	00821023 	subu	v0,a0,v0
  411544:	afc20058 	sw	v0,88(s8)
  411548:	10000004 	b	41155c <asn1totime+0x22c>
  41154c:	00000000 	nop
    }
    else
    {
	return 0; /* error in time format */
  411550:	00001021 	move	v0,zero
  411554:	1000007f 	b	411754 <asn1totime+0x424>
  411558:	00000000 	nop
    }

    {
	const char* format = (type == ASN1_UTCTIME)? "%2d%2d%2d%2d%2d":
  41155c:	8fc30094 	lw	v1,148(s8)
  411560:	24020017 	li	v0,23
  411564:	14620008 	bne	v1,v0,411588 <asn1totime+0x258>
  411568:	00000000 	nop
  41156c:	8f828020 	lw	v0,-32736(gp)
  411570:	00000000 	nop
  411574:	24424ed4 	addiu	v0,v0,20180
  411578:	00000000 	nop
  41157c:	afc20074 	sw	v0,116(s8)
  411580:	10000006 	b	41159c <asn1totime+0x26c>
  411584:	00000000 	nop
  411588:	8f838020 	lw	v1,-32736(gp)
  41158c:	00000000 	nop
  411590:	24634ee4 	addiu	v1,v1,20196
  411594:	00000000 	nop
  411598:	afc30074 	sw	v1,116(s8)
  41159c:	8fc20074 	lw	v0,116(s8)
  4115a0:	00000000 	nop
  4115a4:	afc20070 	sw	v0,112(s8)
						     "%4d%2d%2d%2d%2d";

	sscanf(utctime->ptr, format, &t.tm_year, &t.tm_mon, &t.tm_mday,
  4115a8:	27c20034 	addiu	v0,s8,52
  4115ac:	afa20010 	sw	v0,16(sp)
  4115b0:	27c20030 	addiu	v0,s8,48
  4115b4:	afa20014 	sw	v0,20(sp)
  4115b8:	27c2002c 	addiu	v0,s8,44
  4115bc:	afa20018 	sw	v0,24(sp)
  4115c0:	8fc20090 	lw	v0,144(s8)
  4115c4:	00000000 	nop
  4115c8:	8c440000 	lw	a0,0(v0)
  4115cc:	8fc50070 	lw	a1,112(s8)
  4115d0:	27c6003c 	addiu	a2,s8,60
  4115d4:	27c70038 	addiu	a3,s8,56
  4115d8:	8f99859c 	lw	t9,-31332(gp)
  4115dc:	00000000 	nop
  4115e0:	0320f809 	jalr	t9
  4115e4:	00000000 	nop
  4115e8:	8fdc0020 	lw	gp,32(s8)
  4115ec:	00000000 	nop
				     &t.tm_hour, &t.tm_min);
    }

    /* is there a seconds field? */
    if ((eot - utctime->ptr) == ((type == ASN1_UTCTIME)?12:14))
  4115f0:	8fc20090 	lw	v0,144(s8)
  4115f4:	00000000 	nop
  4115f8:	8c430000 	lw	v1,0(v0)
  4115fc:	8fc2005c 	lw	v0,92(s8)
  411600:	00000000 	nop
  411604:	00431023 	subu	v0,v0,v1
  411608:	afc20078 	sw	v0,120(s8)
  41160c:	8fc30094 	lw	v1,148(s8)
  411610:	24020017 	li	v0,23
  411614:	14620008 	bne	v1,v0,411638 <asn1totime+0x308>
  411618:	00000000 	nop
  41161c:	2402000c 	li	v0,12
  411620:	8fc30078 	lw	v1,120(s8)
  411624:	00000000 	nop
  411628:	1062000a 	beq	v1,v0,411654 <asn1totime+0x324>
  41162c:	00000000 	nop
  411630:	10000017 	b	411690 <asn1totime+0x360>
  411634:	00000000 	nop
  411638:	2402000e 	li	v0,14
  41163c:	8fc30078 	lw	v1,120(s8)
  411640:	00000000 	nop
  411644:	10620003 	beq	v1,v0,411654 <asn1totime+0x324>
  411648:	00000000 	nop
  41164c:	10000010 	b	411690 <asn1totime+0x360>
  411650:	00000000 	nop
    {
	sscanf(eot-2, "%2d", &t.tm_sec);
  411654:	8fc2005c 	lw	v0,92(s8)
  411658:	00000000 	nop
  41165c:	2442fffe 	addiu	v0,v0,-2
  411660:	00402021 	move	a0,v0
  411664:	8f858020 	lw	a1,-32736(gp)
  411668:	00000000 	nop
  41166c:	24a54ef4 	addiu	a1,a1,20212
  411670:	27c60028 	addiu	a2,s8,40
  411674:	8f99859c 	lw	t9,-31332(gp)
  411678:	00000000 	nop
  41167c:	0320f809 	jalr	t9
  411680:	00000000 	nop
  411684:	8fdc0020 	lw	gp,32(s8)
  411688:	10000002 	b	411694 <asn1totime+0x364>
  41168c:	00000000 	nop
    }
    else
    {
	t.tm_sec = 0;
  411690:	afc00028 	sw	zero,40(s8)
    }

    /* representation of year */
    if (t.tm_year >= 1900)
  411694:	8fc2003c 	lw	v0,60(s8)
  411698:	00000000 	nop
  41169c:	2842076c 	slti	v0,v0,1900
  4116a0:	14400007 	bnez	v0,4116c0 <asn1totime+0x390>
  4116a4:	00000000 	nop
    {
	t.tm_year -= 1900;
  4116a8:	8fc2003c 	lw	v0,60(s8)
  4116ac:	00000000 	nop
  4116b0:	2442f894 	addiu	v0,v0,-1900
  4116b4:	afc2003c 	sw	v0,60(s8)
  4116b8:	10000012 	b	411704 <asn1totime+0x3d4>
  4116bc:	00000000 	nop
    }
    else if (t.tm_year >= 100)
  4116c0:	8fc2003c 	lw	v0,60(s8)
  4116c4:	00000000 	nop
  4116c8:	28420064 	slti	v0,v0,100
  4116cc:	14400004 	bnez	v0,4116e0 <asn1totime+0x3b0>
  4116d0:	00000000 	nop
    {
	return 0;
  4116d4:	00001021 	move	v0,zero
  4116d8:	1000001e 	b	411754 <asn1totime+0x424>
  4116dc:	00000000 	nop
    }
    else if (t.tm_year < 50)
  4116e0:	8fc2003c 	lw	v0,60(s8)
  4116e4:	00000000 	nop
  4116e8:	28420032 	slti	v0,v0,50
  4116ec:	10400005 	beqz	v0,411704 <asn1totime+0x3d4>
  4116f0:	00000000 	nop
    {
	t.tm_year += 100;
  4116f4:	8fc2003c 	lw	v0,60(s8)
  4116f8:	00000000 	nop
  4116fc:	24420064 	addiu	v0,v0,100
  411700:	afc2003c 	sw	v0,60(s8)
    }

    /* representation of month 0..11*/
    t.tm_mon--;
  411704:	8fc20038 	lw	v0,56(s8)
  411708:	00000000 	nop
  41170c:	2442ffff 	addiu	v0,v0,-1
  411710:	afc20038 	sw	v0,56(s8)

    /* set daylight saving time to off */
    t.tm_isdst = 0;
  411714:	afc00048 	sw	zero,72(s8)

    /* compensate timezone */

    return mktime(&t) - timezone - tz_offset;
  411718:	27c40028 	addiu	a0,s8,40
  41171c:	8f9986a8 	lw	t9,-31064(gp)
  411720:	00000000 	nop
  411724:	0320f809 	jalr	t9
  411728:	00000000 	nop
  41172c:	8fdc0020 	lw	gp,32(s8)
  411730:	00000000 	nop
  411734:	8f8386a0 	lw	v1,-31072(gp)
  411738:	00000000 	nop
  41173c:	8c630000 	lw	v1,0(v1)
  411740:	00000000 	nop
  411744:	00431023 	subu	v0,v0,v1
  411748:	8fc30058 	lw	v1,88(s8)
  41174c:	00000000 	nop
  411750:	00431023 	subu	v0,v0,v1
}
  411754:	03c0e821 	move	sp,s8
  411758:	8fbf0088 	lw	ra,136(sp)
  41175c:	8fbe0084 	lw	s8,132(sp)
  411760:	27bd0090 	addiu	sp,sp,144
  411764:	03e00008 	jr	ra
  411768:	00000000 	nop

0041176c <asn1_init>:
  41176c:	3c1c0fc0 	lui	gp,0xfc0
  411770:	279cb204 	addiu	gp,gp,-19964
  411774:	0399e021 	addu	gp,gp,t9
  411778:	27bdffd0 	addiu	sp,sp,-48
  41177c:	afbc0010 	sw	gp,16(sp)
  411780:	afbf0028 	sw	ra,40(sp)
  411784:	afbe0024 	sw	s8,36(sp)
  411788:	afbc0020 	sw	gp,32(sp)
  41178c:	03a0f021 	move	s8,sp
  411790:	afc40030 	sw	a0,48(s8)
  411794:	afc50034 	sw	a1,52(s8)
  411798:	afc60038 	sw	a2,56(s8)
  41179c:	afc7003c 	sw	a3,60(s8)

/*
 * Initializes the internal context of the ASN.1 parser
 */
void
asn1_init(asn1_ctx_t *ctx, chunk_t blob, u_int level0,
	bool implicit, u_int cond)
{
    ctx->blobs[0] = blob;
  4117a0:	8fc30030 	lw	v1,48(s8)
  4117a4:	8fc20034 	lw	v0,52(s8)
  4117a8:	00000000 	nop
  4117ac:	ac620024 	sw	v0,36(v1)
  4117b0:	8fc20038 	lw	v0,56(s8)
  4117b4:	00000000 	nop
  4117b8:	ac620028 	sw	v0,40(v1)
    ctx->level0   = level0;
  4117bc:	8fc3003c 	lw	v1,60(s8)
  4117c0:	8fc20030 	lw	v0,48(s8)
  4117c4:	00000000 	nop
  4117c8:	ac430008 	sw	v1,8(v0)
    ctx->implicit = implicit;
  4117cc:	8fc30040 	lw	v1,64(s8)
  4117d0:	8fc20030 	lw	v0,48(s8)
  4117d4:	00000000 	nop
  4117d8:	ac430000 	sw	v1,0(v0)
    ctx->cond     = cond;
  4117dc:	8fc30044 	lw	v1,68(s8)
  4117e0:	8fc20030 	lw	v0,48(s8)
  4117e4:	00000000 	nop
  4117e8:	ac430004 	sw	v1,4(v0)
    memset(ctx->loopAddr, '\0', sizeof(ctx->loopAddr));
  4117ec:	8fc20030 	lw	v0,48(s8)
  4117f0:	00000000 	nop
  4117f4:	2442000c 	addiu	v0,v0,12
  4117f8:	00402021 	move	a0,v0
  4117fc:	00002821 	move	a1,zero
  411800:	24060018 	li	a2,24
  411804:	8f998500 	lw	t9,-31488(gp)
  411808:	00000000 	nop
  41180c:	0320f809 	jalr	t9
  411810:	00000000 	nop
  411814:	8fdc0010 	lw	gp,16(s8)
  411818:	00000000 	nop
}
  41181c:	03c0e821 	move	sp,s8
  411820:	8fbf0028 	lw	ra,40(sp)
  411824:	8fbe0024 	lw	s8,36(sp)
  411828:	27bd0030 	addiu	sp,sp,48
  41182c:	03e00008 	jr	ra
  411830:	00000000 	nop

00411834 <extract_object>:
  411834:	3c1c0fc0 	lui	gp,0xfc0
  411838:	279cb13c 	addiu	gp,gp,-20164
  41183c:	0399e021 	addu	gp,gp,t9
  411840:	27bdff80 	addiu	sp,sp,-128
  411844:	afbc0018 	sw	gp,24(sp)
  411848:	afbf007c 	sw	ra,124(sp)
  41184c:	afbe0078 	sw	s8,120(sp)
  411850:	afbc0074 	sw	gp,116(sp)
  411854:	afb00070 	sw	s0,112(sp)
  411858:	03a0f021 	move	s8,sp
  41185c:	afc40080 	sw	a0,128(s8)
  411860:	afc50084 	sw	a1,132(s8)
  411864:	afc60088 	sw	a2,136(s8)
  411868:	afc7008c 	sw	a3,140(s8)

/*
 * Parses and extracts the next ASN.1 object
 */
bool
extract_object(asn1Object_t const *objects,
	u_int *objectID, chunk_t *object, asn1_ctx_t *ctx)
{
    asn1Object_t obj = objects[*objectID];
  41186c:	8fc20084 	lw	v0,132(s8)
  411870:	00000000 	nop
  411874:	8c420000 	lw	v0,0(v0)
  411878:	00000000 	nop
  41187c:	00021900 	sll	v1,v0,0x4
  411880:	8fc20080 	lw	v0,128(s8)
  411884:	00000000 	nop
  411888:	00621821 	addu	v1,v1,v0
  41188c:	8c620000 	lw	v0,0(v1)
  411890:	00000000 	nop
  411894:	afc20020 	sw	v0,32(s8)
  411898:	8c620004 	lw	v0,4(v1)
  41189c:	00000000 	nop
  4118a0:	afc20024 	sw	v0,36(s8)
  4118a4:	8c620008 	lw	v0,8(v1)
  4118a8:	00000000 	nop
  4118ac:	afc20028 	sw	v0,40(s8)
  4118b0:	8c62000c 	lw	v0,12(v1)
  4118b4:	00000000 	nop
  4118b8:	afc2002c 	sw	v0,44(s8)
    chunk_t *blob;
    chunk_t *blob1;
    u_char *start_ptr;

    *object = empty_chunk;
  4118bc:	8fc30088 	lw	v1,136(s8)
  4118c0:	8f828708 	lw	v0,-30968(gp)
  4118c4:	00000000 	nop
  4118c8:	8c420000 	lw	v0,0(v0)
  4118cc:	00000000 	nop
  4118d0:	ac620000 	sw	v0,0(v1)
  4118d4:	8f828708 	lw	v0,-30968(gp)
  4118d8:	00000000 	nop
  4118dc:	8c420004 	lw	v0,4(v0)
  4118e0:	00000000 	nop
  4118e4:	ac620004 	sw	v0,4(v1)

    if (obj.flags & ASN1_END)  /* end of loop or option found */
  4118e8:	93c2002c 	lbu	v0,44(s8)
  4118ec:	00000000 	nop
  4118f0:	30420008 	andi	v0,v0,0x8
  4118f4:	304200ff 	andi	v0,v0,0xff
  4118f8:	10400047 	beqz	v0,411a18 <extract_object+0x1e4>
  4118fc:	00000000 	nop
    {
	if (ctx->loopAddr[obj.level] && ctx->blobs[obj.level+1].len > 0)
  411900:	8fc20020 	lw	v0,32(s8)
  411904:	00000000 	nop
  411908:	00021080 	sll	v0,v0,0x2
  41190c:	24430008 	addiu	v1,v0,8
  411910:	8fc2008c 	lw	v0,140(s8)
  411914:	00000000 	nop
  411918:	24420004 	addiu	v0,v0,4
  41191c:	00431021 	addu	v0,v0,v1
  411920:	8c420000 	lw	v0,0(v0)
  411924:	00000000 	nop
  411928:	1040002f 	beqz	v0,4119e8 <extract_object+0x1b4>
  41192c:	00000000 	nop
  411930:	8fc20020 	lw	v0,32(s8)
  411934:	00000000 	nop
  411938:	000210c0 	sll	v0,v0,0x3
  41193c:	24430028 	addiu	v1,v0,40
  411940:	8fc2008c 	lw	v0,140(s8)
  411944:	00000000 	nop
  411948:	24420008 	addiu	v0,v0,8
  41194c:	00431021 	addu	v0,v0,v1
  411950:	8c420000 	lw	v0,0(v0)
  411954:	00000000 	nop
  411958:	10400023 	beqz	v0,4119e8 <extract_object+0x1b4>
  41195c:	00000000 	nop
	{
	    *objectID = ctx->loopAddr[obj.level]; /* another iteration */
  411960:	8fc20020 	lw	v0,32(s8)
  411964:	00000000 	nop
  411968:	00021080 	sll	v0,v0,0x2
  41196c:	24430008 	addiu	v1,v0,8
  411970:	8fc2008c 	lw	v0,140(s8)
  411974:	00000000 	nop
  411978:	24420004 	addiu	v0,v0,4
  41197c:	00431021 	addu	v0,v0,v1
  411980:	8c430000 	lw	v1,0(v0)
  411984:	8fc20084 	lw	v0,132(s8)
  411988:	00000000 	nop
  41198c:	ac430000 	sw	v1,0(v0)
	    obj = objects[*objectID];
  411990:	8fc20084 	lw	v0,132(s8)
  411994:	00000000 	nop
  411998:	8c420000 	lw	v0,0(v0)
  41199c:	00000000 	nop
  4119a0:	00021900 	sll	v1,v0,0x4
  4119a4:	8fc20080 	lw	v0,128(s8)
  4119a8:	00000000 	nop
  4119ac:	00621821 	addu	v1,v1,v0
  4119b0:	8c620000 	lw	v0,0(v1)
  4119b4:	00000000 	nop
  4119b8:	afc20020 	sw	v0,32(s8)
  4119bc:	8c620004 	lw	v0,4(v1)
  4119c0:	00000000 	nop
  4119c4:	afc20024 	sw	v0,36(s8)
  4119c8:	8c620008 	lw	v0,8(v1)
  4119cc:	00000000 	nop
  4119d0:	afc20028 	sw	v0,40(s8)
  4119d4:	8c62000c 	lw	v0,12(v1)
  4119d8:	00000000 	nop
  4119dc:	afc2002c 	sw	v0,44(s8)
  4119e0:	1000000d 	b	411a18 <extract_object+0x1e4>
  4119e4:	00000000 	nop
	}
	else
	{
	    ctx->loopAddr[obj.level] = 0;         /* exit loop or option*/
  4119e8:	8fc20020 	lw	v0,32(s8)
  4119ec:	00000000 	nop
  4119f0:	00021080 	sll	v0,v0,0x2
  4119f4:	24430008 	addiu	v1,v0,8
  4119f8:	8fc2008c 	lw	v0,140(s8)
  4119fc:	00000000 	nop
  411a00:	24420004 	addiu	v0,v0,4
  411a04:	00431021 	addu	v0,v0,v1
  411a08:	ac400000 	sw	zero,0(v0)
	    return TRUE;
  411a0c:	24020001 	li	v0,1
  411a10:	1000020f 	b	412250 <extract_object+0xa1c>
  411a14:	00000000 	nop
	}
    }

    blob = ctx->blobs + obj.level;
  411a18:	8fc20020 	lw	v0,32(s8)
  411a1c:	00000000 	nop
  411a20:	000218c0 	sll	v1,v0,0x3
  411a24:	8fc2008c 	lw	v0,140(s8)
  411a28:	00000000 	nop
  411a2c:	00621021 	addu	v0,v1,v0
  411a30:	24420024 	addiu	v0,v0,36
  411a34:	afc20030 	sw	v0,48(s8)
    blob1 = blob + 1;
  411a38:	8fc20030 	lw	v0,48(s8)
  411a3c:	00000000 	nop
  411a40:	24420008 	addiu	v0,v0,8
  411a44:	afc20034 	sw	v0,52(s8)
    start_ptr = blob->ptr;
  411a48:	8fc20030 	lw	v0,48(s8)
  411a4c:	00000000 	nop
  411a50:	8c420000 	lw	v0,0(v0)
  411a54:	00000000 	nop
  411a58:	afc20038 	sw	v0,56(s8)

    /* handle ASN.1 defaults values */

    if ( (obj.flags & ASN1_DEF) && (*start_ptr != obj.type) )
  411a5c:	93c2002c 	lbu	v0,44(s8)
  411a60:	00000000 	nop
  411a64:	30420001 	andi	v0,v0,0x1
  411a68:	304200ff 	andi	v0,v0,0xff
  411a6c:	10400030 	beqz	v0,411b30 <extract_object+0x2fc>
  411a70:	00000000 	nop
  411a74:	8fc20038 	lw	v0,56(s8)
  411a78:	00000000 	nop
  411a7c:	90430000 	lbu	v1,0(v0)
  411a80:	8fc20028 	lw	v0,40(s8)
  411a84:	00000000 	nop
  411a88:	10620029 	beq	v1,v0,411b30 <extract_object+0x2fc>
  411a8c:	00000000 	nop
    {
	/* field is missing */

	DBG(DBG_PARSING,
  411a90:	8f8284f8 	lw	v0,-31496(gp)
  411a94:	00000000 	nop
  411a98:	8c420000 	lw	v0,0(v0)
  411a9c:	00000000 	nop
  411aa0:	30420004 	andi	v0,v0,0x4
  411aa4:	10400012 	beqz	v0,411af0 <extract_object+0x2bc>
  411aa8:	00000000 	nop
  411aac:	8fc2008c 	lw	v0,140(s8)
  411ab0:	00000000 	nop
  411ab4:	8c430008 	lw	v1,8(v0)
  411ab8:	8fc20020 	lw	v0,32(s8)
  411abc:	00000000 	nop
  411ac0:	00621021 	addu	v0,v1,v0
  411ac4:	8f848020 	lw	a0,-32736(gp)
  411ac8:	00000000 	nop
  411acc:	24844ef8 	addiu	a0,a0,20216
  411ad0:	00402821 	move	a1,v0
  411ad4:	8fc60024 	lw	a2,36(s8)
  411ad8:	8f9983b8 	lw	t9,-31816(gp)
  411adc:	00000000 	nop
  411ae0:	0320f809 	jalr	t9
  411ae4:	00000000 	nop
  411ae8:	8fdc0018 	lw	gp,24(s8)
  411aec:	00000000 	nop
	    DBG_log("L%d - %s:", ctx->level0+obj.level, obj.name);
	)
	if (obj.type & ASN1_CONSTRUCTED)
  411af0:	8fc20028 	lw	v0,40(s8)
  411af4:	00000000 	nop
  411af8:	30420020 	andi	v0,v0,0x20
  411afc:	10400009 	beqz	v0,411b24 <extract_object+0x2f0>
  411b00:	00000000 	nop
	{
	    (*objectID)++ ;  /* skip context-specific tag */
  411b04:	8fc20084 	lw	v0,132(s8)
  411b08:	00000000 	nop
  411b0c:	8c420000 	lw	v0,0(v0)
  411b10:	00000000 	nop
  411b14:	24430001 	addiu	v1,v0,1
  411b18:	8fc20084 	lw	v0,132(s8)
  411b1c:	00000000 	nop
  411b20:	ac430000 	sw	v1,0(v0)
	}
	return TRUE;
  411b24:	24020001 	li	v0,1
  411b28:	100001c9 	b	412250 <extract_object+0xa1c>
  411b2c:	00000000 	nop
    }

    /* handle ASN.1 options */

    if ( (obj.flags & ASN1_OPT) &&
	 ( blob->len == 0 || *start_ptr != obj.type) )
  411b30:	93c2002c 	lbu	v0,44(s8)
  411b34:	00000000 	nop
  411b38:	30420002 	andi	v0,v0,0x2
  411b3c:	304200ff 	andi	v0,v0,0xff
  411b40:	10400036 	beqz	v0,411c1c <extract_object+0x3e8>
  411b44:	00000000 	nop
  411b48:	8fc20030 	lw	v0,48(s8)
  411b4c:	00000000 	nop
  411b50:	8c420004 	lw	v0,4(v0)
  411b54:	00000000 	nop
  411b58:	1040000a 	beqz	v0,411b84 <extract_object+0x350>
  411b5c:	00000000 	nop
  411b60:	8fc20038 	lw	v0,56(s8)
  411b64:	00000000 	nop
  411b68:	90430000 	lbu	v1,0(v0)
  411b6c:	8fc20028 	lw	v0,40(s8)
  411b70:	00000000 	nop
  411b74:	14620003 	bne	v1,v0,411b84 <extract_object+0x350>
  411b78:	00000000 	nop
  411b7c:	10000027 	b	411c1c <extract_object+0x3e8>
  411b80:	00000000 	nop
    {
        /* advance to end of missing option field */
	do
        {
	    (*objectID)++;
  411b84:	8fc20084 	lw	v0,132(s8)
  411b88:	00000000 	nop
  411b8c:	8c420000 	lw	v0,0(v0)
  411b90:	00000000 	nop
  411b94:	24430001 	addiu	v1,v0,1
  411b98:	8fc20084 	lw	v0,132(s8)
  411b9c:	00000000 	nop
  411ba0:	ac430000 	sw	v1,0(v0)
	}  while (!((objects[*objectID].flags & ASN1_END) &&
  411ba4:	8fc20084 	lw	v0,132(s8)
  411ba8:	00000000 	nop
  411bac:	8c420000 	lw	v0,0(v0)
  411bb0:	00000000 	nop
  411bb4:	00021900 	sll	v1,v0,0x4
  411bb8:	8fc20080 	lw	v0,128(s8)
  411bbc:	00000000 	nop
  411bc0:	00621021 	addu	v0,v1,v0
  411bc4:	9042000c 	lbu	v0,12(v0)
  411bc8:	00000000 	nop
  411bcc:	30420008 	andi	v0,v0,0x8
  411bd0:	304200ff 	andi	v0,v0,0xff
  411bd4:	1040ffeb 	beqz	v0,411b84 <extract_object+0x350>
  411bd8:	00000000 	nop
  411bdc:	8fc20084 	lw	v0,132(s8)
  411be0:	00000000 	nop
  411be4:	8c420000 	lw	v0,0(v0)
  411be8:	00000000 	nop
  411bec:	00021900 	sll	v1,v0,0x4
  411bf0:	8fc20080 	lw	v0,128(s8)
  411bf4:	00000000 	nop
  411bf8:	00621021 	addu	v0,v1,v0
  411bfc:	8c430000 	lw	v1,0(v0)
  411c00:	8fc20020 	lw	v0,32(s8)
  411c04:	00000000 	nop
  411c08:	1462ffde 	bne	v1,v0,411b84 <extract_object+0x350>
  411c0c:	00000000 	nop
		      (objects[*objectID].level == obj.level )));
	return TRUE;
  411c10:	24020001 	li	v0,1
  411c14:	1000018e 	b	412250 <extract_object+0xa1c>
  411c18:	00000000 	nop
    }

    blob1->len = asn1_length(blob);
  411c1c:	8fd00034 	lw	s0,52(s8)
  411c20:	8fc40030 	lw	a0,48(s8)
  411c24:	8f99852c 	lw	t9,-31444(gp)
  411c28:	00000000 	nop
  411c2c:	0320f809 	jalr	t9
  411c30:	00000000 	nop
  411c34:	8fdc0018 	lw	gp,24(s8)
  411c38:	ae020004 	sw	v0,4(s0)

    if (blob->len < blob1->len)
  411c3c:	8fc20030 	lw	v0,48(s8)
  411c40:	00000000 	nop
  411c44:	8c430004 	lw	v1,4(v0)
  411c48:	8fc20034 	lw	v0,52(s8)
  411c4c:	00000000 	nop
  411c50:	8c420004 	lw	v0,4(v0)
  411c54:	00000000 	nop
  411c58:	0062102b 	sltu	v0,v1,v0
  411c5c:	1040001c 	beqz	v0,411cd0 <extract_object+0x49c>
  411c60:	00000000 	nop
    {
	DBG(DBG_PARSING,
  411c64:	8f8284f8 	lw	v0,-31496(gp)
  411c68:	00000000 	nop
  411c6c:	8c420000 	lw	v0,0(v0)
  411c70:	00000000 	nop
  411c74:	30420004 	andi	v0,v0,0x4
  411c78:	10400012 	beqz	v0,411cc4 <extract_object+0x490>
  411c7c:	00000000 	nop
  411c80:	8fc2008c 	lw	v0,140(s8)
  411c84:	00000000 	nop
  411c88:	8c430008 	lw	v1,8(v0)
  411c8c:	8fc20020 	lw	v0,32(s8)
  411c90:	00000000 	nop
  411c94:	00621021 	addu	v0,v1,v0
  411c98:	8f848020 	lw	a0,-32736(gp)
  411c9c:	00000000 	nop
  411ca0:	24844f04 	addiu	a0,a0,20228
  411ca4:	00402821 	move	a1,v0
  411ca8:	8fc60024 	lw	a2,36(s8)
  411cac:	8f9983b8 	lw	t9,-31816(gp)
  411cb0:	00000000 	nop
  411cb4:	0320f809 	jalr	t9
  411cb8:	00000000 	nop
  411cbc:	8fdc0018 	lw	gp,24(s8)
  411cc0:	00000000 	nop
	    DBG_log("L%d - %s:  length of ASN1 object too large",
		    ctx->level0+obj.level, obj.name);
	)
	return FALSE;
  411cc4:	00001021 	move	v0,zero
  411cc8:	10000161 	b	412250 <extract_object+0xa1c>
  411ccc:	00000000 	nop
    }

    blob1->ptr = blob->ptr;
  411cd0:	8fc20030 	lw	v0,48(s8)
  411cd4:	00000000 	nop
  411cd8:	8c430000 	lw	v1,0(v0)
  411cdc:	8fc20034 	lw	v0,52(s8)
  411ce0:	00000000 	nop
  411ce4:	ac430000 	sw	v1,0(v0)
    blob->ptr += blob1->len;
  411ce8:	8fc20030 	lw	v0,48(s8)
  411cec:	00000000 	nop
  411cf0:	8c430000 	lw	v1,0(v0)
  411cf4:	8fc20034 	lw	v0,52(s8)
  411cf8:	00000000 	nop
  411cfc:	8c420004 	lw	v0,4(v0)
  411d00:	00000000 	nop
  411d04:	00621821 	addu	v1,v1,v0
  411d08:	8fc20030 	lw	v0,48(s8)
  411d0c:	00000000 	nop
  411d10:	ac430000 	sw	v1,0(v0)
    blob->len -= blob1->len;
  411d14:	8fc20030 	lw	v0,48(s8)
  411d18:	00000000 	nop
  411d1c:	8c430004 	lw	v1,4(v0)
  411d20:	8fc20034 	lw	v0,52(s8)
  411d24:	00000000 	nop
  411d28:	8c420004 	lw	v0,4(v0)
  411d2c:	00000000 	nop
  411d30:	00621823 	subu	v1,v1,v0
  411d34:	8fc20030 	lw	v0,48(s8)
  411d38:	00000000 	nop
  411d3c:	ac430004 	sw	v1,4(v0)

    if (*start_ptr != obj.type && !(ctx->implicit && *objectID == 0))
  411d40:	8fc20038 	lw	v0,56(s8)
  411d44:	00000000 	nop
  411d48:	90430000 	lbu	v1,0(v0)
  411d4c:	8fc20028 	lw	v0,40(s8)
  411d50:	00000000 	nop
  411d54:	10620040 	beq	v1,v0,411e58 <extract_object+0x624>
  411d58:	00000000 	nop
  411d5c:	8fc2008c 	lw	v0,140(s8)
  411d60:	00000000 	nop
  411d64:	8c420000 	lw	v0,0(v0)
  411d68:	00000000 	nop
  411d6c:	10400009 	beqz	v0,411d94 <extract_object+0x560>
  411d70:	00000000 	nop
  411d74:	8fc20084 	lw	v0,132(s8)
  411d78:	00000000 	nop
  411d7c:	8c420000 	lw	v0,0(v0)
  411d80:	00000000 	nop
  411d84:	14400003 	bnez	v0,411d94 <extract_object+0x560>
  411d88:	00000000 	nop
  411d8c:	10000032 	b	411e58 <extract_object+0x624>
  411d90:	00000000 	nop
    {
	DBG(DBG_PARSING,
  411d94:	8f8284f8 	lw	v0,-31496(gp)
  411d98:	00000000 	nop
  411d9c:	8c420000 	lw	v0,0(v0)
  411da0:	00000000 	nop
  411da4:	30420004 	andi	v0,v0,0x4
  411da8:	10400028 	beqz	v0,411e4c <extract_object+0x618>
  411dac:	00000000 	nop
  411db0:	8fc2008c 	lw	v0,140(s8)
  411db4:	00000000 	nop
  411db8:	8c430008 	lw	v1,8(v0)
  411dbc:	8fc20020 	lw	v0,32(s8)
  411dc0:	00000000 	nop
  411dc4:	00621821 	addu	v1,v1,v0
  411dc8:	8fc20038 	lw	v0,56(s8)
  411dcc:	00000000 	nop
  411dd0:	90420000 	lbu	v0,0(v0)
  411dd4:	00000000 	nop
  411dd8:	afa20010 	sw	v0,16(sp)
  411ddc:	8f848020 	lw	a0,-32736(gp)
  411de0:	00000000 	nop
  411de4:	24844f30 	addiu	a0,a0,20272
  411de8:	00602821 	move	a1,v1
  411dec:	8fc60024 	lw	a2,36(s8)
  411df0:	8fc70028 	lw	a3,40(s8)
  411df4:	8f9983b8 	lw	t9,-31816(gp)
  411df8:	00000000 	nop
  411dfc:	0320f809 	jalr	t9
  411e00:	00000000 	nop
  411e04:	8fdc0018 	lw	gp,24(s8)
  411e08:	8fc20030 	lw	v0,48(s8)
  411e0c:	00000000 	nop
  411e10:	8c430000 	lw	v1,0(v0)
  411e14:	8fc20038 	lw	v0,56(s8)
  411e18:	00000000 	nop
  411e1c:	00621023 	subu	v0,v1,v0
  411e20:	8f848020 	lw	a0,-32736(gp)
  411e24:	00000000 	nop
  411e28:	24844f64 	addiu	a0,a0,20324
  411e2c:	8fc50038 	lw	a1,56(s8)
  411e30:	00403021 	move	a2,v0
  411e34:	8f9984ec 	lw	t9,-31508(gp)
  411e38:	00000000 	nop
  411e3c:	0320f809 	jalr	t9
  411e40:	00000000 	nop
  411e44:	8fdc0018 	lw	gp,24(s8)
  411e48:	00000000 	nop
	    DBG_log("L%d - %s: ASN1 tag 0x%02x expected, but is 0x%02x",
		ctx->level0+obj.level, obj.name, obj.type, *start_ptr);
	    DBG_dump("", start_ptr, (u_int)(blob->ptr - start_ptr));
	)
	return FALSE;
  411e4c:	00001021 	move	v0,zero
  411e50:	100000ff 	b	412250 <extract_object+0xa1c>
  411e54:	00000000 	nop
    }

    DBG(DBG_PARSING,
  411e58:	8f8284f8 	lw	v0,-31496(gp)
  411e5c:	00000000 	nop
  411e60:	8c420000 	lw	v0,0(v0)
  411e64:	00000000 	nop
  411e68:	30420004 	andi	v0,v0,0x4
  411e6c:	10400012 	beqz	v0,411eb8 <extract_object+0x684>
  411e70:	00000000 	nop
  411e74:	8fc2008c 	lw	v0,140(s8)
  411e78:	00000000 	nop
  411e7c:	8c430008 	lw	v1,8(v0)
  411e80:	8fc20020 	lw	v0,32(s8)
  411e84:	00000000 	nop
  411e88:	00621021 	addu	v0,v1,v0
  411e8c:	8f848020 	lw	a0,-32736(gp)
  411e90:	00000000 	nop
  411e94:	24844ef8 	addiu	a0,a0,20216
  411e98:	00402821 	move	a1,v0
  411e9c:	8fc60024 	lw	a2,36(s8)
  411ea0:	8f9983b8 	lw	t9,-31816(gp)
  411ea4:	00000000 	nop
  411ea8:	0320f809 	jalr	t9
  411eac:	00000000 	nop
  411eb0:	8fdc0018 	lw	gp,24(s8)
  411eb4:	00000000 	nop
	DBG_log("L%d - %s:", ctx->level0+obj.level, obj.name);
    )

    /* In case of "SEQUENCE OF" or "SET OF" start a loop */

    if (obj.flags & ASN1_LOOP) ctx->loopAddr[obj.level] = *objectID + 1;
  411eb8:	93c2002c 	lbu	v0,44(s8)
  411ebc:	00000000 	nop
  411ec0:	30420004 	andi	v0,v0,0x4
  411ec4:	304200ff 	andi	v0,v0,0xff
  411ec8:	1040000f 	beqz	v0,411f08 <extract_object+0x6d4>
  411ecc:	00000000 	nop
  411ed0:	8fc20020 	lw	v0,32(s8)
  411ed4:	00000000 	nop
  411ed8:	00021080 	sll	v0,v0,0x2
  411edc:	24430008 	addiu	v1,v0,8
  411ee0:	8fc2008c 	lw	v0,140(s8)
  411ee4:	00000000 	nop
  411ee8:	24420004 	addiu	v0,v0,4
  411eec:	00431821 	addu	v1,v0,v1
  411ef0:	8fc20084 	lw	v0,132(s8)
  411ef4:	00000000 	nop
  411ef8:	8c420000 	lw	v0,0(v0)
  411efc:	00000000 	nop
  411f00:	24420001 	addiu	v0,v0,1
  411f04:	ac620000 	sw	v0,0(v1)

    if (obj.flags & ASN1_OBJ)
  411f08:	93c2002c 	lbu	v0,44(s8)
  411f0c:	00000000 	nop
  411f10:	30420010 	andi	v0,v0,0x10
  411f14:	304200ff 	andi	v0,v0,0xff
  411f18:	10400028 	beqz	v0,411fbc <extract_object+0x788>
  411f1c:	00000000 	nop
    {
	object->ptr = start_ptr;
  411f20:	8fc30038 	lw	v1,56(s8)
  411f24:	8fc20088 	lw	v0,136(s8)
  411f28:	00000000 	nop
  411f2c:	ac430000 	sw	v1,0(v0)
	object->len = (u_int)(blob->ptr - start_ptr);
  411f30:	8fc20030 	lw	v0,48(s8)
  411f34:	00000000 	nop
  411f38:	8c430000 	lw	v1,0(v0)
  411f3c:	8fc20038 	lw	v0,56(s8)
  411f40:	00000000 	nop
  411f44:	00621823 	subu	v1,v1,v0
  411f48:	8fc20088 	lw	v0,136(s8)
  411f4c:	00000000 	nop
  411f50:	ac430004 	sw	v1,4(v0)
	DBG(ctx->cond,
  411f54:	8fc2008c 	lw	v0,140(s8)
  411f58:	00000000 	nop
  411f5c:	8c430004 	lw	v1,4(v0)
  411f60:	8f8284f8 	lw	v0,-31496(gp)
  411f64:	00000000 	nop
  411f68:	8c420000 	lw	v0,0(v0)
  411f6c:	00000000 	nop
  411f70:	00431024 	and	v0,v0,v1
  411f74:	104000b5 	beqz	v0,41224c <extract_object+0xa18>
  411f78:	00000000 	nop
  411f7c:	8f848020 	lw	a0,-32736(gp)
  411f80:	00000000 	nop
  411f84:	24844f64 	addiu	a0,a0,20324
  411f88:	8fc20088 	lw	v0,136(s8)
  411f8c:	00000000 	nop
  411f90:	8c450000 	lw	a1,0(v0)
  411f94:	8fc20088 	lw	v0,136(s8)
  411f98:	00000000 	nop
  411f9c:	8c460004 	lw	a2,4(v0)
  411fa0:	8f9984ec 	lw	t9,-31508(gp)
  411fa4:	00000000 	nop
  411fa8:	0320f809 	jalr	t9
  411fac:	00000000 	nop
  411fb0:	8fdc0018 	lw	gp,24(s8)
  411fb4:	100000a5 	b	41224c <extract_object+0xa18>
  411fb8:	00000000 	nop
	    DBG_dump_chunk("", *object);
	)
    }
    else if (obj.flags & ASN1_BODY)
  411fbc:	93c2002c 	lbu	v0,44(s8)
  411fc0:	00000000 	nop
  411fc4:	30420020 	andi	v0,v0,0x20
  411fc8:	304200ff 	andi	v0,v0,0xff
  411fcc:	1040009f 	beqz	v0,41224c <extract_object+0xa18>
  411fd0:	00000000 	nop
    {
	int oid;
	*object = *blob1;
  411fd4:	8fc40088 	lw	a0,136(s8)
  411fd8:	8fc30034 	lw	v1,52(s8)
  411fdc:	00000000 	nop
  411fe0:	8c620000 	lw	v0,0(v1)
  411fe4:	00000000 	nop
  411fe8:	ac820000 	sw	v0,0(a0)
  411fec:	8c620004 	lw	v0,4(v1)
  411ff0:	00000000 	nop
  411ff4:	ac820004 	sw	v0,4(a0)

	switch (obj.type)
  411ff8:	8fc20028 	lw	v0,40(s8)
  411ffc:	00000000 	nop
  412000:	2442fffa 	addiu	v0,v0,-6
  412004:	afc2006c 	sw	v0,108(s8)
  412008:	8fc3006c 	lw	v1,108(s8)
  41200c:	00000000 	nop
  412010:	2c620015 	sltiu	v0,v1,21
  412014:	10400074 	beqz	v0,4121e8 <extract_object+0x9b4>
  412018:	00000000 	nop
  41201c:	8fc2006c 	lw	v0,108(s8)
  412020:	00000000 	nop
  412024:	00021080 	sll	v0,v0,0x2
  412028:	8f818020 	lw	at,-32736(gp)
  41202c:	00000000 	nop
  412030:	24214f80 	addiu	at,at,20352
  412034:	00221021 	addu	v0,at,v0
  412038:	8c420000 	lw	v0,0(v0)
  41203c:	00000000 	nop
  412040:	005c1021 	addu	v0,v0,gp
  412044:	00400008 	jr	v0
  412048:	00000000 	nop
	{
	case ASN1_OID:
	    oid = known_oid(*object);
  41204c:	8fc20088 	lw	v0,136(s8)
  412050:	00000000 	nop
  412054:	8c440000 	lw	a0,0(v0)
  412058:	8c450004 	lw	a1,4(v0)
  41205c:	8f9982f8 	lw	t9,-32008(gp)
  412060:	00000000 	nop
  412064:	0320f809 	jalr	t9
  412068:	00000000 	nop
  41206c:	8fdc0018 	lw	gp,24(s8)
  412070:	afc2003c 	sw	v0,60(s8)
	    if (oid != -1)
  412074:	8fc3003c 	lw	v1,60(s8)
  412078:	2402ffff 	li	v0,-1
  41207c:	1062005a 	beq	v1,v0,4121e8 <extract_object+0x9b4>
  412080:	00000000 	nop
	    {
		DBG(DBG_PARSING,
  412084:	8f8284f8 	lw	v0,-31496(gp)
  412088:	00000000 	nop
  41208c:	8c420000 	lw	v0,0(v0)
  412090:	00000000 	nop
  412094:	30420004 	andi	v0,v0,0x4
  412098:	10400013 	beqz	v0,4120e8 <extract_object+0x8b4>
  41209c:	00000000 	nop
  4120a0:	8fc2003c 	lw	v0,60(s8)
  4120a4:	00000000 	nop
  4120a8:	00021100 	sll	v0,v0,0x4
  4120ac:	24420008 	addiu	v0,v0,8
  4120b0:	8f81865c 	lw	at,-31140(gp)
  4120b4:	00000000 	nop
  4120b8:	24210004 	addiu	at,at,4
  4120bc:	00221021 	addu	v0,at,v0
  4120c0:	8f848020 	lw	a0,-32736(gp)
  4120c4:	00000000 	nop
  4120c8:	24844f68 	addiu	a0,a0,20328
  4120cc:	8c450000 	lw	a1,0(v0)
  4120d0:	8f9983b8 	lw	t9,-31816(gp)
  4120d4:	00000000 	nop
  4120d8:	0320f809 	jalr	t9
  4120dc:	00000000 	nop
  4120e0:	8fdc0018 	lw	gp,24(s8)
  4120e4:	00000000 	nop
		   DBG_log("  '%s'",oid_names[oid].name);
		)
		return TRUE;
  4120e8:	24020001 	li	v0,1
  4120ec:	10000058 	b	412250 <extract_object+0xa1c>
  4120f0:	00000000 	nop
	    }
	    break;
	case ASN1_IA5STRING:
	case ASN1_T61STRING:
	case ASN1_PRINTABLESTRING:
	case ASN1_VISIBLESTRING:
	    DBG(DBG_PARSING,
  4120f4:	8f8284f8 	lw	v0,-31496(gp)
  4120f8:	00000000 	nop
  4120fc:	8c420000 	lw	v0,0(v0)
  412100:	00000000 	nop
  412104:	30420004 	andi	v0,v0,0x4
  412108:	10400010 	beqz	v0,41214c <extract_object+0x918>
  41210c:	00000000 	nop
  412110:	8f848020 	lw	a0,-32736(gp)
  412114:	00000000 	nop
  412118:	24844f70 	addiu	a0,a0,20336
  41211c:	8fc20088 	lw	v0,136(s8)
  412120:	00000000 	nop
  412124:	8c450004 	lw	a1,4(v0)
  412128:	8fc20088 	lw	v0,136(s8)
  41212c:	00000000 	nop
  412130:	8c460000 	lw	a2,0(v0)
  412134:	8f9983b8 	lw	t9,-31816(gp)
  412138:	00000000 	nop
  41213c:	0320f809 	jalr	t9
  412140:	00000000 	nop
  412144:	8fdc0018 	lw	gp,24(s8)
  412148:	00000000 	nop
		DBG_log("  '%.*s'", (int)object->len, object->ptr);
	    )
	    return TRUE;
  41214c:	24020001 	li	v0,1
  412150:	1000003f 	b	412250 <extract_object+0xa1c>
  412154:	00000000 	nop
	case ASN1_UTCTIME:
	case ASN1_GENERALIZEDTIME:
	    DBG(DBG_PARSING,
  412158:	8f8284f8 	lw	v0,-31496(gp)
  41215c:	00000000 	nop
  412160:	8c420000 	lw	v0,0(v0)
  412164:	00000000 	nop
  412168:	30420004 	andi	v0,v0,0x4
  41216c:	1040001b 	beqz	v0,4121dc <extract_object+0x9a8>
  412170:	00000000 	nop
  412174:	8fc40088 	lw	a0,136(s8)
  412178:	8fc50028 	lw	a1,40(s8)
  41217c:	8f998384 	lw	t9,-31868(gp)
  412180:	00000000 	nop
  412184:	0320f809 	jalr	t9
  412188:	00000000 	nop
  41218c:	8fdc0018 	lw	gp,24(s8)
  412190:	afc20040 	sw	v0,64(s8)
  412194:	27c40040 	addiu	a0,s8,64
  412198:	24050001 	li	a1,1
  41219c:	8f998b80 	lw	t9,-29824(gp)
  4121a0:	00000000 	nop
  4121a4:	0320f809 	jalr	t9
  4121a8:	00000000 	nop
  4121ac:	8fdc0018 	lw	gp,24(s8)
  4121b0:	00000000 	nop
  4121b4:	8f848020 	lw	a0,-32736(gp)
  4121b8:	00000000 	nop
  4121bc:	24844f68 	addiu	a0,a0,20328
  4121c0:	00402821 	move	a1,v0
  4121c4:	8f9983b8 	lw	t9,-31816(gp)
  4121c8:	00000000 	nop
  4121cc:	0320f809 	jalr	t9
  4121d0:	00000000 	nop
  4121d4:	8fdc0018 	lw	gp,24(s8)
  4121d8:	00000000 	nop
		time_t time = asn1totime(object, obj.type);
		DBG_log("  '%s'", timetoa(&time, TRUE));
	    )
	    return TRUE;
  4121dc:	24020001 	li	v0,1
  4121e0:	1000001b 	b	412250 <extract_object+0xa1c>
  4121e4:	00000000 	nop

	default: 
		break;
	}
	DBG(ctx->cond,
  4121e8:	8fc2008c 	lw	v0,140(s8)
  4121ec:	00000000 	nop
  4121f0:	8c430004 	lw	v1,4(v0)
  4121f4:	8f8284f8 	lw	v0,-31496(gp)
  4121f8:	00000000 	nop
  4121fc:	8c420000 	lw	v0,0(v0)
  412200:	00000000 	nop
  412204:	00431024 	and	v0,v0,v1
  412208:	10400010 	beqz	v0,41224c <extract_object+0xa18>
  41220c:	00000000 	nop
  412210:	8f848020 	lw	a0,-32736(gp)
  412214:	00000000 	nop
  412218:	24844f64 	addiu	a0,a0,20324
  41221c:	8fc20088 	lw	v0,136(s8)
  412220:	00000000 	nop
  412224:	8c450000 	lw	a1,0(v0)
  412228:	8fc20088 	lw	v0,136(s8)
  41222c:	00000000 	nop
  412230:	8c460004 	lw	a2,4(v0)
  412234:	8f9984ec 	lw	t9,-31508(gp)
  412238:	00000000 	nop
  41223c:	0320f809 	jalr	t9
  412240:	00000000 	nop
  412244:	8fdc0018 	lw	gp,24(s8)
  412248:	00000000 	nop
	    DBG_dump_chunk("", *object);
	)
    }
    return TRUE;
  41224c:	24020001 	li	v0,1
}
  412250:	03c0e821 	move	sp,s8
  412254:	8fbf007c 	lw	ra,124(sp)
  412258:	8fbe0078 	lw	s8,120(sp)
  41225c:	8fb00070 	lw	s0,112(sp)
  412260:	27bd0080 	addiu	sp,sp,128
  412264:	03e00008 	jr	ra
  412268:	00000000 	nop

0041226c <is_asn1>:
  41226c:	3c1c0fc0 	lui	gp,0xfc0
  412270:	279ca704 	addiu	gp,gp,-22780
  412274:	0399e021 	addu	gp,gp,t9
  412278:	27bdffd0 	addiu	sp,sp,-48
  41227c:	afbc0010 	sw	gp,16(sp)
  412280:	afbf0028 	sw	ra,40(sp)
  412284:	afbe0024 	sw	s8,36(sp)
  412288:	afbc0020 	sw	gp,32(sp)
  41228c:	03a0f021 	move	s8,sp
  412290:	afc40030 	sw	a0,48(s8)
  412294:	afc50034 	sw	a1,52(s8)

/*
 *  tests if a blob contains a valid ASN.1 set or sequence
 */
bool
is_asn1(chunk_t blob)
{
    u_int len;
    u_char tag = *blob.ptr;
  412298:	8fc20030 	lw	v0,48(s8)
  41229c:	00000000 	nop
  4122a0:	90420000 	lbu	v0,0(v0)
  4122a4:	00000000 	nop
  4122a8:	a3c2001c 	sb	v0,28(s8)

    if (tag != ASN1_SEQUENCE && tag != ASN1_SET)
  4122ac:	93c3001c 	lbu	v1,28(s8)
  4122b0:	24020030 	li	v0,48
  4122b4:	10620018 	beq	v1,v0,412318 <is_asn1+0xac>
  4122b8:	00000000 	nop
  4122bc:	93c3001c 	lbu	v1,28(s8)
  4122c0:	24020031 	li	v0,49
  4122c4:	10620014 	beq	v1,v0,412318 <is_asn1+0xac>
  4122c8:	00000000 	nop
    {
	DBG(DBG_PARSING,
  4122cc:	8f8284f8 	lw	v0,-31496(gp)
  4122d0:	00000000 	nop
  4122d4:	8c420000 	lw	v0,0(v0)
  4122d8:	00000000 	nop
  4122dc:	30420004 	andi	v0,v0,0x4
  4122e0:	1040000a 	beqz	v0,41230c <is_asn1+0xa0>
  4122e4:	00000000 	nop
  4122e8:	8f848020 	lw	a0,-32736(gp)
  4122ec:	00000000 	nop
  4122f0:	24844fd4 	addiu	a0,a0,20436
  4122f4:	8f9983b8 	lw	t9,-31816(gp)
  4122f8:	00000000 	nop
  4122fc:	0320f809 	jalr	t9
  412300:	00000000 	nop
  412304:	8fdc0010 	lw	gp,16(s8)
  412308:	00000000 	nop
	    DBG_log("  file content is not binary ASN.1");
	)
	return FALSE;
  41230c:	00001021 	move	v0,zero
  412310:	10000022 	b	41239c <is_asn1+0x130>
  412314:	00000000 	nop
    }
    len = asn1_length(&blob);
  412318:	27c20030 	addiu	v0,s8,48
  41231c:	00402021 	move	a0,v0
  412320:	8f99852c 	lw	t9,-31444(gp)
  412324:	00000000 	nop
  412328:	0320f809 	jalr	t9
  41232c:	00000000 	nop
  412330:	8fdc0010 	lw	gp,16(s8)
  412334:	afc20018 	sw	v0,24(s8)
    if (len != blob.len)
  412338:	8fc30018 	lw	v1,24(s8)
  41233c:	8fc20034 	lw	v0,52(s8)
  412340:	00000000 	nop
  412344:	10620014 	beq	v1,v0,412398 <is_asn1+0x12c>
  412348:	00000000 	nop
    {
	DBG(DBG_PARSING,
  41234c:	8f8284f8 	lw	v0,-31496(gp)
  412350:	00000000 	nop
  412354:	8c420000 	lw	v0,0(v0)
  412358:	00000000 	nop
  41235c:	30420004 	andi	v0,v0,0x4
  412360:	1040000a 	beqz	v0,41238c <is_asn1+0x120>
  412364:	00000000 	nop
  412368:	8f848020 	lw	a0,-32736(gp)
  41236c:	00000000 	nop
  412370:	24844ff8 	addiu	a0,a0,20472
  412374:	8f9983b8 	lw	t9,-31816(gp)
  412378:	00000000 	nop
  41237c:	0320f809 	jalr	t9
  412380:	00000000 	nop
  412384:	8fdc0010 	lw	gp,16(s8)
  412388:	00000000 	nop
	    DBG_log("  file size does not match ASN.1 coded length");
	)
	return FALSE;
  41238c:	00001021 	move	v0,zero
  412390:	10000002 	b	41239c <is_asn1+0x130>
  412394:	00000000 	nop
    }
    return TRUE;
  412398:	24020001 	li	v0,1
}
  41239c:	03c0e821 	move	sp,s8
  4123a0:	8fbf0028 	lw	ra,40(sp)
  4123a4:	8fbe0024 	lw	s8,36(sp)
  4123a8:	27bd0030 	addiu	sp,sp,48
  4123ac:	03e00008 	jr	ra
  4123b0:	00000000 	nop

004123b4 <load_asn1_file>:
  4123b4:	3c1c0fc0 	lui	gp,0xfc0
  4123b8:	279ca5bc 	addiu	gp,gp,-23108
  4123bc:	0399e021 	addu	gp,gp,t9
  4123c0:	27bdffc0 	addiu	sp,sp,-64
  4123c4:	afbc0010 	sw	gp,16(sp)
  4123c8:	afbf003c 	sw	ra,60(sp)
  4123cc:	afbe0038 	sw	s8,56(sp)
  4123d0:	afbc0034 	sw	gp,52(sp)
  4123d4:	afb00030 	sw	s0,48(sp)
  4123d8:	03a0f021 	move	s8,sp
  4123dc:	afc40040 	sw	a0,64(s8)
  4123e0:	afc50044 	sw	a1,68(s8)
  4123e4:	afc60048 	sw	a2,72(s8)
  4123e8:	afc7004c 	sw	a3,76(s8)

/*  load an ASN.1 coded file with autodetection
 *  of binary DER and base64 PEM formats
 */
bool
load_asn1_file(const char* filename, const char* passphrase,
	       const char* type, chunk_t *blob)
{
    err_t ugh = NULL;
  4123ec:	afc00018 	sw	zero,24(s8)
    FILE *fd;

    fd = fopen(filename, "r");
  4123f0:	8fc40040 	lw	a0,64(s8)
  4123f4:	8f858020 	lw	a1,-32736(gp)
  4123f8:	00000000 	nop
  4123fc:	24a55028 	addiu	a1,a1,20520
  412400:	8f99850c 	lw	t9,-31476(gp)
  412404:	00000000 	nop
  412408:	0320f809 	jalr	t9
  41240c:	00000000 	nop
  412410:	8fdc0010 	lw	gp,16(s8)
  412414:	afc2001c 	sw	v0,28(s8)
    if (fd)
  412418:	8fc2001c 	lw	v0,28(s8)
  41241c:	00000000 	nop
  412420:	104000b2 	beqz	v0,4126ec <load_asn1_file+0x338>
  412424:	00000000 	nop
    {
	int bytes;
	fseek(fd, 0, SEEK_END );
  412428:	8fc4001c 	lw	a0,28(s8)
  41242c:	00002821 	move	a1,zero
  412430:	24060002 	li	a2,2
  412434:	8f998710 	lw	t9,-30960(gp)
  412438:	00000000 	nop
  41243c:	0320f809 	jalr	t9
  412440:	00000000 	nop
  412444:	8fdc0010 	lw	gp,16(s8)
  412448:	00000000 	nop
	blob->len = ftell(fd);
  41244c:	8fd0004c 	lw	s0,76(s8)
  412450:	8fc4001c 	lw	a0,28(s8)
  412454:	8f9984dc 	lw	t9,-31524(gp)
  412458:	00000000 	nop
  41245c:	0320f809 	jalr	t9
  412460:	00000000 	nop
  412464:	8fdc0010 	lw	gp,16(s8)
  412468:	ae020004 	sw	v0,4(s0)
	rewind(fd);
  41246c:	8fc4001c 	lw	a0,28(s8)
  412470:	8f998268 	lw	t9,-32152(gp)
  412474:	00000000 	nop
  412478:	0320f809 	jalr	t9
  41247c:	00000000 	nop
  412480:	8fdc0010 	lw	gp,16(s8)
  412484:	00000000 	nop
	blob->ptr = alloc_bytes(blob->len, type);
  412488:	8fd0004c 	lw	s0,76(s8)
  41248c:	8fc2004c 	lw	v0,76(s8)
  412490:	00000000 	nop
  412494:	8c440004 	lw	a0,4(v0)
  412498:	8fc50048 	lw	a1,72(s8)
  41249c:	8f998084 	lw	t9,-32636(gp)
  4124a0:	00000000 	nop
  4124a4:	0320f809 	jalr	t9
  4124a8:	00000000 	nop
  4124ac:	8fdc0010 	lw	gp,16(s8)
  4124b0:	ae020000 	sw	v0,0(s0)
	bytes = fread(blob->ptr, 1, blob->len, fd);
  4124b4:	8fc2004c 	lw	v0,76(s8)
  4124b8:	00000000 	nop
  4124bc:	8c440000 	lw	a0,0(v0)
  4124c0:	24050001 	li	a1,1
  4124c4:	8fc2004c 	lw	v0,76(s8)
  4124c8:	00000000 	nop
  4124cc:	8c460004 	lw	a2,4(v0)
  4124d0:	8fc7001c 	lw	a3,28(s8)
  4124d4:	8f998558 	lw	t9,-31400(gp)
  4124d8:	00000000 	nop
  4124dc:	0320f809 	jalr	t9
  4124e0:	00000000 	nop
  4124e4:	8fdc0010 	lw	gp,16(s8)
  4124e8:	afc20020 	sw	v0,32(s8)
	fclose(fd);
  4124ec:	8fc4001c 	lw	a0,28(s8)
  4124f0:	8f9984c0 	lw	t9,-31552(gp)
  4124f4:	00000000 	nop
  4124f8:	0320f809 	jalr	t9
  4124fc:	00000000 	nop
  412500:	8fdc0010 	lw	gp,16(s8)
  412504:	00000000 	nop
	plog("  loaded %s file '%s' (%d bytes)", type, filename, bytes);
  412508:	8f848020 	lw	a0,-32736(gp)
  41250c:	00000000 	nop
  412510:	2484502c 	addiu	a0,a0,20524
  412514:	8fc50048 	lw	a1,72(s8)
  412518:	8fc60040 	lw	a2,64(s8)
  41251c:	8fc70020 	lw	a3,32(s8)
  412520:	8f998abc 	lw	t9,-30020(gp)
  412524:	00000000 	nop
  412528:	0320f809 	jalr	t9
  41252c:	00000000 	nop
  412530:	8fdc0010 	lw	gp,16(s8)
  412534:	00000000 	nop

	/* try DER format */

	if (is_asn1(*blob))
  412538:	8fc2004c 	lw	v0,76(s8)
  41253c:	00000000 	nop
  412540:	8c440000 	lw	a0,0(v0)
  412544:	8c450004 	lw	a1,4(v0)
  412548:	8f998494 	lw	t9,-31596(gp)
  41254c:	00000000 	nop
  412550:	0320f809 	jalr	t9
  412554:	00000000 	nop
  412558:	8fdc0010 	lw	gp,16(s8)
  41255c:	10400014 	beqz	v0,4125b0 <load_asn1_file+0x1fc>
  412560:	00000000 	nop
	{
	    DBG(DBG_PARSING,
  412564:	8f8284f8 	lw	v0,-31496(gp)
  412568:	00000000 	nop
  41256c:	8c420000 	lw	v0,0(v0)
  412570:	00000000 	nop
  412574:	30420004 	andi	v0,v0,0x4
  412578:	1040000a 	beqz	v0,4125a4 <load_asn1_file+0x1f0>
  41257c:	00000000 	nop
  412580:	8f848020 	lw	a0,-32736(gp)
  412584:	00000000 	nop
  412588:	24845050 	addiu	a0,a0,20560
  41258c:	8f9983b8 	lw	t9,-31816(gp)
  412590:	00000000 	nop
  412594:	0320f809 	jalr	t9
  412598:	00000000 	nop
  41259c:	8fdc0010 	lw	gp,16(s8)
  4125a0:	00000000 	nop
		DBG_log("  file coded in DER format");
	    )
	    return TRUE;
  4125a4:	24020001 	li	v0,1
  4125a8:	1000005c 	b	41271c <load_asn1_file+0x368>
  4125ac:	00000000 	nop
	}

	/* try PEM format */
	ugh = pemtobin(blob, passphrase);
  4125b0:	8fc4004c 	lw	a0,76(s8)
  4125b4:	8fc50044 	lw	a1,68(s8)
  4125b8:	8f998370 	lw	t9,-31888(gp)
  4125bc:	00000000 	nop
  4125c0:	0320f809 	jalr	t9
  4125c4:	00000000 	nop
  4125c8:	8fdc0010 	lw	gp,16(s8)
  4125cc:	afc20018 	sw	v0,24(s8)

	if (ugh == NULL)
  4125d0:	8fc20018 	lw	v0,24(s8)
  4125d4:	00000000 	nop
  4125d8:	14400024 	bnez	v0,41266c <load_asn1_file+0x2b8>
  4125dc:	00000000 	nop
	{
	    if (is_asn1(*blob))
  4125e0:	8fc2004c 	lw	v0,76(s8)
  4125e4:	00000000 	nop
  4125e8:	8c440000 	lw	a0,0(v0)
  4125ec:	8c450004 	lw	a1,4(v0)
  4125f0:	8f998494 	lw	t9,-31596(gp)
  4125f4:	00000000 	nop
  4125f8:	0320f809 	jalr	t9
  4125fc:	00000000 	nop
  412600:	8fdc0010 	lw	gp,16(s8)
  412604:	10400014 	beqz	v0,412658 <load_asn1_file+0x2a4>
  412608:	00000000 	nop
	    {
		DBG(DBG_PARSING,
  41260c:	8f8284f8 	lw	v0,-31496(gp)
  412610:	00000000 	nop
  412614:	8c420000 	lw	v0,0(v0)
  412618:	00000000 	nop
  41261c:	30420004 	andi	v0,v0,0x4
  412620:	1040000a 	beqz	v0,41264c <load_asn1_file+0x298>
  412624:	00000000 	nop
  412628:	8f848020 	lw	a0,-32736(gp)
  41262c:	00000000 	nop
  412630:	2484506c 	addiu	a0,a0,20588
  412634:	8f9983b8 	lw	t9,-31816(gp)
  412638:	00000000 	nop
  41263c:	0320f809 	jalr	t9
  412640:	00000000 	nop
  412644:	8fdc0010 	lw	gp,16(s8)
  412648:	00000000 	nop
		    DBG_log("  file coded in PEM format");
		)
		return TRUE;
  41264c:	24020001 	li	v0,1
  412650:	10000032 	b	41271c <load_asn1_file+0x368>
  412654:	00000000 	nop
	    }
	    ugh = "file coded in unknown format, discarded";
  412658:	8f828020 	lw	v0,-32736(gp)
  41265c:	00000000 	nop
  412660:	24425088 	addiu	v0,v0,20616
  412664:	00000000 	nop
  412668:	afc20018 	sw	v0,24(s8)
	}

	/* a conversion error has occured */
	plog("  %s", ugh);
  41266c:	8f848020 	lw	a0,-32736(gp)
  412670:	00000000 	nop
  412674:	248450b0 	addiu	a0,a0,20656
  412678:	8fc50018 	lw	a1,24(s8)
  41267c:	8f998abc 	lw	t9,-30020(gp)
  412680:	00000000 	nop
  412684:	0320f809 	jalr	t9
  412688:	00000000 	nop
  41268c:	8fdc0010 	lw	gp,16(s8)
  412690:	00000000 	nop
	pfree(blob->ptr);
  412694:	8fc2004c 	lw	v0,76(s8)
  412698:	00000000 	nop
  41269c:	8c440000 	lw	a0,0(v0)
  4126a0:	8f998094 	lw	t9,-32620(gp)
  4126a4:	00000000 	nop
  4126a8:	0320f809 	jalr	t9
  4126ac:	00000000 	nop
  4126b0:	8fdc0010 	lw	gp,16(s8)
  4126b4:	00000000 	nop
	*blob = empty_chunk;
  4126b8:	8fc3004c 	lw	v1,76(s8)
  4126bc:	8f828708 	lw	v0,-30968(gp)
  4126c0:	00000000 	nop
  4126c4:	8c420000 	lw	v0,0(v0)
  4126c8:	00000000 	nop
  4126cc:	ac620000 	sw	v0,0(v1)
  4126d0:	8f828708 	lw	v0,-30968(gp)
  4126d4:	00000000 	nop
  4126d8:	8c420004 	lw	v0,4(v0)
  4126dc:	00000000 	nop
  4126e0:	ac620004 	sw	v0,4(v1)
  4126e4:	1000000c 	b	412718 <load_asn1_file+0x364>
  4126e8:	00000000 	nop
    }
    else
    {
	plog("  could not open %s file '%s'", type, filename);
  4126ec:	8f848020 	lw	a0,-32736(gp)
  4126f0:	00000000 	nop
  4126f4:	248450b8 	addiu	a0,a0,20664
  4126f8:	8fc50048 	lw	a1,72(s8)
  4126fc:	8fc60040 	lw	a2,64(s8)
  412700:	8f998abc 	lw	t9,-30020(gp)
  412704:	00000000 	nop
  412708:	0320f809 	jalr	t9
  41270c:	00000000 	nop
  412710:	8fdc0010 	lw	gp,16(s8)
  412714:	00000000 	nop
    }
    return FALSE;
  412718:	00001021 	move	v0,zero
}
  41271c:	03c0e821 	move	sp,s8
  412720:	8fbf003c 	lw	ra,60(sp)
  412724:	8fbe0038 	lw	s8,56(sp)
  412728:	8fb00030 	lw	s0,48(sp)
  41272c:	27bd0040 	addiu	sp,sp,64
  412730:	03e00008 	jr	ra
  412734:	00000000 	nop
	...

00412740 <same_peer_ids>:
  412740:	3c1c0fc0 	lui	gp,0xfc0
  412744:	279ca230 	addiu	gp,gp,-24016
  412748:	0399e021 	addu	gp,gp,t9
  41274c:	27bdffd0 	addiu	sp,sp,-48
  412750:	afbc0010 	sw	gp,16(sp)
  412754:	afbf0028 	sw	ra,40(sp)
  412758:	afbe0024 	sw	s8,36(sp)
  41275c:	afbc0020 	sw	gp,32(sp)
  412760:	03a0f021 	move	s8,sp
  412764:	afc40030 	sw	a0,48(s8)
  412768:	afc50034 	sw	a1,52(s8)
  41276c:	afc60038 	sw	a2,56(s8)
bool
same_peer_ids(const struct connection *c, const struct connection *d
, const struct id *his_id)
{
    return same_id(&c->this.id, &d->this.id)
  412770:	afc00018 	sw	zero,24(s8)
  412774:	8fc20030 	lw	v0,48(s8)
  412778:	00000000 	nop
  41277c:	24430030 	addiu	v1,v0,48
  412780:	8fc20034 	lw	v0,52(s8)
  412784:	00000000 	nop
  412788:	24420030 	addiu	v0,v0,48
  41278c:	00602021 	move	a0,v1
  412790:	00402821 	move	a1,v0
  412794:	8f9980e4 	lw	t9,-32540(gp)
  412798:	00000000 	nop
  41279c:	0320f809 	jalr	t9
  4127a0:	00000000 	nop
  4127a4:	8fdc0010 	lw	gp,16(s8)
  4127a8:	1040001a 	beqz	v0,412814 <same_peer_ids+0xd4>
  4127ac:	00000000 	nop
  4127b0:	8fc20038 	lw	v0,56(s8)
  4127b4:	00000000 	nop
  4127b8:	afc2001c 	sw	v0,28(s8)
  4127bc:	8fc20038 	lw	v0,56(s8)
  4127c0:	00000000 	nop
  4127c4:	14400005 	bnez	v0,4127dc <same_peer_ids+0x9c>
  4127c8:	00000000 	nop
  4127cc:	8fc20030 	lw	v0,48(s8)
  4127d0:	00000000 	nop
  4127d4:	244200e0 	addiu	v0,v0,224
  4127d8:	afc2001c 	sw	v0,28(s8)
  4127dc:	8fc20034 	lw	v0,52(s8)
  4127e0:	00000000 	nop
  4127e4:	244200e0 	addiu	v0,v0,224
  4127e8:	8fc4001c 	lw	a0,28(s8)
  4127ec:	00402821 	move	a1,v0
  4127f0:	8f9980e4 	lw	t9,-32540(gp)
  4127f4:	00000000 	nop
  4127f8:	0320f809 	jalr	t9
  4127fc:	00000000 	nop
  412800:	8fdc0010 	lw	gp,16(s8)
  412804:	10400003 	beqz	v0,412814 <same_peer_ids+0xd4>
  412808:	00000000 	nop
  41280c:	24020001 	li	v0,1
  412810:	afc20018 	sw	v0,24(s8)
  412814:	8fc20018 	lw	v0,24(s8)
  412818:	00000000 	nop
	&& same_id(his_id == NULL? &c->that.id : his_id, &d->that.id);
}
  41281c:	03c0e821 	move	sp,s8
  412820:	8fbf0028 	lw	ra,40(sp)
  412824:	8fbe0024 	lw	s8,36(sp)
  412828:	27bd0030 	addiu	sp,sp,48
  41282c:	03e00008 	jr	ra
  412830:	00000000 	nop

00412834 <find_host_pair>:
  412834:	3c1c0fc0 	lui	gp,0xfc0
  412838:	279ca13c 	addiu	gp,gp,-24260
  41283c:	0399e021 	addu	gp,gp,t9
  412840:	27bdffc8 	addiu	sp,sp,-56
  412844:	afbc0010 	sw	gp,16(sp)
  412848:	afbf0030 	sw	ra,48(sp)
  41284c:	afbe002c 	sw	s8,44(sp)
  412850:	afbc0028 	sw	gp,40(sp)
  412854:	03a0f021 	move	s8,sp
  412858:	afc40038 	sw	a0,56(s8)
  41285c:	00a01821 	move	v1,a1
  412860:	afc60040 	sw	a2,64(s8)
  412864:	00e01021 	move	v0,a3
  412868:	a7c30018 	sh	v1,24(s8)
  41286c:	a7c2001a 	sh	v0,26(s8)

static struct host_pair *
find_host_pair(const ip_address *myaddr, u_int16_t myport
, const ip_address *hisaddr, u_int16_t hisport)
{
    struct host_pair *p, *prev;

    /* default hisaddr to an appropriate any */
    if (hisaddr == NULL)
  412870:	8fc20040 	lw	v0,64(s8)
  412874:	00000000 	nop
  412878:	14400010 	bnez	v0,4128bc <find_host_pair+0x88>
  41287c:	00000000 	nop
	hisaddr = aftoinfo(addrtypeof(myaddr))->any;
  412880:	8fc40038 	lw	a0,56(s8)
  412884:	8f9985d4 	lw	t9,-31276(gp)
  412888:	00000000 	nop
  41288c:	0320f809 	jalr	t9
  412890:	00000000 	nop
  412894:	8fdc0010 	lw	gp,16(s8)
  412898:	00402021 	move	a0,v0
  41289c:	8f998b94 	lw	t9,-29804(gp)
  4128a0:	00000000 	nop
  4128a4:	0320f809 	jalr	t9
  4128a8:	00000000 	nop
  4128ac:	8fdc0010 	lw	gp,16(s8)
  4128b0:	8c420018 	lw	v0,24(v0)
  4128b4:	00000000 	nop
  4128b8:	afc20040 	sw	v0,64(s8)

#ifdef NAT_TRAVERSAL
    if (nat_traversal_enabled) {
  4128bc:	8f82837c 	lw	v0,-31876(gp)
  4128c0:	00000000 	nop
  4128c4:	8c420000 	lw	v0,0(v0)
  4128c8:	00000000 	nop
  4128cc:	1040000b 	beqz	v0,4128fc <find_host_pair+0xc8>
  4128d0:	00000000 	nop
	/**
	 * port is not relevant in host_pair. with nat_traversal we
	 * always use pluto_port (500)
	 */
	myport = pluto_port;
  4128d4:	8f8284b0 	lw	v0,-31568(gp)
  4128d8:	00000000 	nop
  4128dc:	94420000 	lhu	v0,0(v0)
  4128e0:	00000000 	nop
  4128e4:	a7c20018 	sh	v0,24(s8)
	hisport = pluto_port;
  4128e8:	8f8284b0 	lw	v0,-31568(gp)
  4128ec:	00000000 	nop
  4128f0:	94420000 	lhu	v0,0(v0)
  4128f4:	00000000 	nop
  4128f8:	a7c2001a 	sh	v0,26(s8)
    }
#endif

    for (prev = NULL, p = host_pairs; p != NULL; prev = p, p = p->next)
  4128fc:	afc00020 	sw	zero,32(s8)
  412900:	8f828018 	lw	v0,-32744(gp)
  412904:	00000000 	nop
  412908:	244206f4 	addiu	v0,v0,1780
  41290c:	8c420000 	lw	v0,0(v0)
  412910:	00000000 	nop
  412914:	afc2001c 	sw	v0,28(s8)
  412918:	8fc2001c 	lw	v0,28(s8)
  41291c:	00000000 	nop
  412920:	14400003 	bnez	v0,412930 <find_host_pair+0xfc>
  412924:	00000000 	nop
  412928:	10000046 	b	412a44 <find_host_pair+0x210>
  41292c:	00000000 	nop
    {
	if (sameaddr(&p->me.addr, myaddr) && p->me.port == myport
	&& sameaddr(&p->him.addr, hisaddr) && p->him.port == hisport)
  412930:	8fc4001c 	lw	a0,28(s8)
  412934:	8fc50038 	lw	a1,56(s8)
  412938:	8f998928 	lw	t9,-30424(gp)
  41293c:	00000000 	nop
  412940:	0320f809 	jalr	t9
  412944:	00000000 	nop
  412948:	8fdc0010 	lw	gp,16(s8)
  41294c:	10400033 	beqz	v0,412a1c <find_host_pair+0x1e8>
  412950:	00000000 	nop
  412954:	8fc2001c 	lw	v0,28(s8)
  412958:	00000000 	nop
  41295c:	9443001c 	lhu	v1,28(v0)
  412960:	97c20018 	lhu	v0,24(s8)
  412964:	00000000 	nop
  412968:	1462002c 	bne	v1,v0,412a1c <find_host_pair+0x1e8>
  41296c:	00000000 	nop
  412970:	8fc2001c 	lw	v0,28(s8)
  412974:	00000000 	nop
  412978:	24420020 	addiu	v0,v0,32
  41297c:	00402021 	move	a0,v0
  412980:	8fc50040 	lw	a1,64(s8)
  412984:	8f998928 	lw	t9,-30424(gp)
  412988:	00000000 	nop
  41298c:	0320f809 	jalr	t9
  412990:	00000000 	nop
  412994:	8fdc0010 	lw	gp,16(s8)
  412998:	10400020 	beqz	v0,412a1c <find_host_pair+0x1e8>
  41299c:	00000000 	nop
  4129a0:	8fc2001c 	lw	v0,28(s8)
  4129a4:	00000000 	nop
  4129a8:	9443003c 	lhu	v1,60(v0)
  4129ac:	97c2001a 	lhu	v0,26(s8)
  4129b0:	00000000 	nop
  4129b4:	14620019 	bne	v1,v0,412a1c <find_host_pair+0x1e8>
  4129b8:	00000000 	nop
	{
	    if (prev != NULL)
  4129bc:	8fc20020 	lw	v0,32(s8)
  4129c0:	00000000 	nop
  4129c4:	1040001f 	beqz	v0,412a44 <find_host_pair+0x210>
  4129c8:	00000000 	nop
	    {
		prev->next = p->next;	/* remove p from list */
  4129cc:	8fc2001c 	lw	v0,28(s8)
  4129d0:	00000000 	nop
  4129d4:	8c43004c 	lw	v1,76(v0)
  4129d8:	8fc20020 	lw	v0,32(s8)
  4129dc:	00000000 	nop
  4129e0:	ac43004c 	sw	v1,76(v0)
		p->next = host_pairs;	/* and stick it on front */
  4129e4:	8f838018 	lw	v1,-32744(gp)
  4129e8:	00000000 	nop
  4129ec:	246306f4 	addiu	v1,v1,1780
  4129f0:	8c630000 	lw	v1,0(v1)
  4129f4:	8fc2001c 	lw	v0,28(s8)
  4129f8:	00000000 	nop
  4129fc:	ac43004c 	sw	v1,76(v0)
		host_pairs = p;
  412a00:	8fc2001c 	lw	v0,28(s8)
  412a04:	8f818018 	lw	at,-32744(gp)
  412a08:	00000000 	nop
  412a0c:	242106f4 	addiu	at,at,1780
  412a10:	ac220000 	sw	v0,0(at)
	    }
	    break;
  412a14:	1000000b 	b	412a44 <find_host_pair+0x210>
  412a18:	00000000 	nop
  412a1c:	8fc2001c 	lw	v0,28(s8)
  412a20:	00000000 	nop
  412a24:	afc20020 	sw	v0,32(s8)
  412a28:	8fc2001c 	lw	v0,28(s8)
  412a2c:	00000000 	nop
  412a30:	8c42004c 	lw	v0,76(v0)
  412a34:	00000000 	nop
  412a38:	afc2001c 	sw	v0,28(s8)
  412a3c:	1000ffb6 	b	412918 <find_host_pair+0xe4>
  412a40:	00000000 	nop
	}
    }
    return p;
  412a44:	8fc2001c 	lw	v0,28(s8)
  412a48:	00000000 	nop
}
  412a4c:	03c0e821 	move	sp,s8
  412a50:	8fbf0030 	lw	ra,48(sp)
  412a54:	8fbe002c 	lw	s8,44(sp)
  412a58:	27bd0038 	addiu	sp,sp,56
  412a5c:	03e00008 	jr	ra
  412a60:	00000000 	nop

00412a64 <find_host_pair_connections>:
  412a64:	3c1c0fc0 	lui	gp,0xfc0
  412a68:	279c9f0c 	addiu	gp,gp,-24820
  412a6c:	0399e021 	addu	gp,gp,t9
  412a70:	27bdffc8 	addiu	sp,sp,-56
  412a74:	afbc0010 	sw	gp,16(sp)
  412a78:	afbf0030 	sw	ra,48(sp)
  412a7c:	afbe002c 	sw	s8,44(sp)
  412a80:	afbc0028 	sw	gp,40(sp)
  412a84:	03a0f021 	move	s8,sp
  412a88:	afc40038 	sw	a0,56(s8)
  412a8c:	00a01821 	move	v1,a1
  412a90:	afc60040 	sw	a2,64(s8)
  412a94:	00e01021 	move	v0,a3
  412a98:	a7c30018 	sh	v1,24(s8)
  412a9c:	a7c2001a 	sh	v0,26(s8)

/* find head of list of connections with this pair of hosts */
static struct connection *
find_host_pair_connections(const ip_address *myaddr, u_int16_t myport
, const ip_address *hisaddr, u_int16_t hisport)
{
    struct host_pair *hp = find_host_pair(myaddr, myport, hisaddr, hisport);
  412aa0:	97c20018 	lhu	v0,24(s8)
  412aa4:	97c3001a 	lhu	v1,26(s8)
  412aa8:	8fc40038 	lw	a0,56(s8)
  412aac:	00402821 	move	a1,v0
  412ab0:	8fc60040 	lw	a2,64(s8)
  412ab4:	00603821 	move	a3,v1
  412ab8:	8f998024 	lw	t9,-32732(gp)
  412abc:	00000000 	nop
  412ac0:	27392834 	addiu	t9,t9,10292
  412ac4:	00000000 	nop
  412ac8:	0320f809 	jalr	t9
  412acc:	00000000 	nop
  412ad0:	8fdc0010 	lw	gp,16(s8)
  412ad4:	afc2001c 	sw	v0,28(s8)

#ifdef NAT_TRAVERSAL
    if (nat_traversal_enabled && hp && hisaddr) {
  412ad8:	8f82837c 	lw	v0,-31876(gp)
  412adc:	00000000 	nop
  412ae0:	8c420000 	lw	v0,0(v0)
  412ae4:	00000000 	nop
  412ae8:	1040002d 	beqz	v0,412ba0 <find_host_pair_connections+0x13c>
  412aec:	00000000 	nop
  412af0:	8fc2001c 	lw	v0,28(s8)
  412af4:	00000000 	nop
  412af8:	10400029 	beqz	v0,412ba0 <find_host_pair_connections+0x13c>
  412afc:	00000000 	nop
  412b00:	8fc20040 	lw	v0,64(s8)
  412b04:	00000000 	nop
  412b08:	10400025 	beqz	v0,412ba0 <find_host_pair_connections+0x13c>
  412b0c:	00000000 	nop
	struct connection *c;
	for (c = hp->connections; c != NULL; c = c->hp_next) {
  412b10:	8fc2001c 	lw	v0,28(s8)
  412b14:	00000000 	nop
  412b18:	8c420044 	lw	v0,68(v0)
  412b1c:	00000000 	nop
  412b20:	afc20020 	sw	v0,32(s8)
  412b24:	8fc20020 	lw	v0,32(s8)
  412b28:	00000000 	nop
  412b2c:	14400004 	bnez	v0,412b40 <find_host_pair_connections+0xdc>
  412b30:	00000000 	nop
	    if ((c->this.host_port==myport) && (c->that.host_port==hisport))
		return c;
	}
	return NULL;
  412b34:	00001021 	move	v0,zero
  412b38:	10000027 	b	412bd8 <find_host_pair_connections+0x174>
  412b3c:	00000000 	nop
  412b40:	8fc20020 	lw	v0,32(s8)
  412b44:	00000000 	nop
  412b48:	944300c8 	lhu	v1,200(v0)
  412b4c:	97c20018 	lhu	v0,24(s8)
  412b50:	00000000 	nop
  412b54:	1462000b 	bne	v1,v0,412b84 <find_host_pair_connections+0x120>
  412b58:	00000000 	nop
  412b5c:	8fc20020 	lw	v0,32(s8)
  412b60:	00000000 	nop
  412b64:	94430178 	lhu	v1,376(v0)
  412b68:	97c2001a 	lhu	v0,26(s8)
  412b6c:	00000000 	nop
  412b70:	14620004 	bne	v1,v0,412b84 <find_host_pair_connections+0x120>
  412b74:	00000000 	nop
  412b78:	8fc20020 	lw	v0,32(s8)
  412b7c:	10000016 	b	412bd8 <find_host_pair_connections+0x174>
  412b80:	00000000 	nop
  412b84:	8fc20020 	lw	v0,32(s8)
  412b88:	00000000 	nop
  412b8c:	8c4201c8 	lw	v0,456(v0)
  412b90:	00000000 	nop
  412b94:	afc20020 	sw	v0,32(s8)
  412b98:	1000ffe2 	b	412b24 <find_host_pair_connections+0xc0>
  412b9c:	00000000 	nop
    }
#endif

    return hp == NULL? NULL : hp->connections;
  412ba0:	8fc2001c 	lw	v0,28(s8)
  412ba4:	00000000 	nop
  412ba8:	10400008 	beqz	v0,412bcc <find_host_pair_connections+0x168>
  412bac:	00000000 	nop
  412bb0:	8fc2001c 	lw	v0,28(s8)
  412bb4:	00000000 	nop
  412bb8:	8c420044 	lw	v0,68(v0)
  412bbc:	00000000 	nop
  412bc0:	afc20024 	sw	v0,36(s8)
  412bc4:	10000002 	b	412bd0 <find_host_pair_connections+0x16c>
  412bc8:	00000000 	nop
  412bcc:	afc00024 	sw	zero,36(s8)
  412bd0:	8fc20024 	lw	v0,36(s8)
  412bd4:	00000000 	nop
}
  412bd8:	03c0e821 	move	sp,s8
  412bdc:	8fbf0030 	lw	ra,48(sp)
  412be0:	8fbe002c 	lw	s8,44(sp)
  412be4:	27bd0038 	addiu	sp,sp,56
  412be8:	03e00008 	jr	ra
  412bec:	00000000 	nop

00412bf0 <connect_to_host_pair>:
  412bf0:	3c1c0fc0 	lui	gp,0xfc0
  412bf4:	279c9d80 	addiu	gp,gp,-25216
  412bf8:	0399e021 	addu	gp,gp,t9
  412bfc:	27bdffb0 	addiu	sp,sp,-80
  412c00:	afbc0010 	sw	gp,16(sp)
  412c04:	afbf0048 	sw	ra,72(sp)
  412c08:	afbe0044 	sw	s8,68(sp)
  412c0c:	afbc0040 	sw	gp,64(sp)
  412c10:	03a0f021 	move	s8,sp
  412c14:	afc40050 	sw	a0,80(s8)

static void
connect_to_host_pair(struct connection *c)
{
    if (oriented(*c))
  412c18:	8fc20050 	lw	v0,80(s8)
  412c1c:	00000000 	nop
  412c20:	8c420198 	lw	v0,408(v0)
  412c24:	00000000 	nop
  412c28:	104000ac 	beqz	v0,412edc <connect_to_host_pair+0x2ec>
  412c2c:	00000000 	nop
    {
	struct host_pair *hp = find_host_pair(&c->this.host_addr, c->this.host_port
  412c30:	8fc20050 	lw	v0,80(s8)
  412c34:	00000000 	nop
  412c38:	24440058 	addiu	a0,v0,88
  412c3c:	8fc20050 	lw	v0,80(s8)
  412c40:	00000000 	nop
  412c44:	944500c8 	lhu	a1,200(v0)
  412c48:	8fc20050 	lw	v0,80(s8)
  412c4c:	00000000 	nop
  412c50:	24430108 	addiu	v1,v0,264
  412c54:	8fc20050 	lw	v0,80(s8)
  412c58:	00000000 	nop
  412c5c:	94420178 	lhu	v0,376(v0)
  412c60:	00603021 	move	a2,v1
  412c64:	00403821 	move	a3,v0
  412c68:	8f998024 	lw	t9,-32732(gp)
  412c6c:	00000000 	nop
  412c70:	27392834 	addiu	t9,t9,10292
  412c74:	00000000 	nop
  412c78:	0320f809 	jalr	t9
  412c7c:	00000000 	nop
  412c80:	8fdc0010 	lw	gp,16(s8)
  412c84:	afc20018 	sw	v0,24(s8)
	    , &c->that.host_addr, c->that.host_port);

	if (hp == NULL)
  412c88:	8fc20018 	lw	v0,24(s8)
  412c8c:	00000000 	nop
  412c90:	14400082 	bnez	v0,412e9c <connect_to_host_pair+0x2ac>
  412c94:	00000000 	nop
	{
	    /* no suitable host_pair -- build one */
	    hp = alloc_thing(struct host_pair, "host_pair");
  412c98:	24040050 	li	a0,80
  412c9c:	8f858020 	lw	a1,-32736(gp)
  412ca0:	00000000 	nop
  412ca4:	24a55460 	addiu	a1,a1,21600
  412ca8:	8f998084 	lw	t9,-32636(gp)
  412cac:	00000000 	nop
  412cb0:	0320f809 	jalr	t9
  412cb4:	00000000 	nop
  412cb8:	8fdc0010 	lw	gp,16(s8)
  412cbc:	afc20018 	sw	v0,24(s8)
	    hp->me.addr = c->this.host_addr;
  412cc0:	8fc40018 	lw	a0,24(s8)
  412cc4:	8fc30050 	lw	v1,80(s8)
  412cc8:	00000000 	nop
  412ccc:	8c620058 	lw	v0,88(v1)
  412cd0:	00000000 	nop
  412cd4:	ac820000 	sw	v0,0(a0)
  412cd8:	8c62005c 	lw	v0,92(v1)
  412cdc:	00000000 	nop
  412ce0:	ac820004 	sw	v0,4(a0)
  412ce4:	8c620060 	lw	v0,96(v1)
  412ce8:	00000000 	nop
  412cec:	ac820008 	sw	v0,8(a0)
  412cf0:	8c620064 	lw	v0,100(v1)
  412cf4:	00000000 	nop
  412cf8:	ac82000c 	sw	v0,12(a0)
  412cfc:	8c620068 	lw	v0,104(v1)
  412d00:	00000000 	nop
  412d04:	ac820010 	sw	v0,16(a0)
  412d08:	8c62006c 	lw	v0,108(v1)
  412d0c:	00000000 	nop
  412d10:	ac820014 	sw	v0,20(a0)
  412d14:	8c620070 	lw	v0,112(v1)
  412d18:	00000000 	nop
  412d1c:	ac820018 	sw	v0,24(a0)
	    hp->him.addr = c->that.host_addr;
  412d20:	8fc40018 	lw	a0,24(s8)
  412d24:	8fc30050 	lw	v1,80(s8)
  412d28:	00000000 	nop
  412d2c:	8c620108 	lw	v0,264(v1)
  412d30:	00000000 	nop
  412d34:	ac820020 	sw	v0,32(a0)
  412d38:	8c62010c 	lw	v0,268(v1)
  412d3c:	00000000 	nop
  412d40:	ac820024 	sw	v0,36(a0)
  412d44:	8c620110 	lw	v0,272(v1)
  412d48:	00000000 	nop
  412d4c:	ac820028 	sw	v0,40(a0)
  412d50:	8c620114 	lw	v0,276(v1)
  412d54:	00000000 	nop
  412d58:	ac82002c 	sw	v0,44(a0)
  412d5c:	8c620118 	lw	v0,280(v1)
  412d60:	00000000 	nop
  412d64:	ac820030 	sw	v0,48(a0)
  412d68:	8c62011c 	lw	v0,284(v1)
  412d6c:	00000000 	nop
  412d70:	ac820034 	sw	v0,52(a0)
  412d74:	8c620120 	lw	v0,288(v1)
  412d78:	00000000 	nop
  412d7c:	ac820038 	sw	v0,56(a0)
#ifdef NAT_TRAVERSAL
	    hp->me.port = nat_traversal_enabled ? pluto_port : c->this.host_port;
  412d80:	8fc20018 	lw	v0,24(s8)
  412d84:	00000000 	nop
  412d88:	afc2002c 	sw	v0,44(s8)
  412d8c:	8f82837c 	lw	v0,-31876(gp)
  412d90:	00000000 	nop
  412d94:	8c420000 	lw	v0,0(v0)
  412d98:	00000000 	nop
  412d9c:	14400008 	bnez	v0,412dc0 <connect_to_host_pair+0x1d0>
  412da0:	00000000 	nop
  412da4:	8fc20050 	lw	v0,80(s8)
  412da8:	00000000 	nop
  412dac:	944200c8 	lhu	v0,200(v0)
  412db0:	00000000 	nop
  412db4:	a7c20030 	sh	v0,48(s8)
  412db8:	10000006 	b	412dd4 <connect_to_host_pair+0x1e4>
  412dbc:	00000000 	nop
  412dc0:	8f8384b0 	lw	v1,-31568(gp)
  412dc4:	00000000 	nop
  412dc8:	94630000 	lhu	v1,0(v1)
  412dcc:	00000000 	nop
  412dd0:	a7c30030 	sh	v1,48(s8)
  412dd4:	97c30030 	lhu	v1,48(s8)
  412dd8:	8fc2002c 	lw	v0,44(s8)
  412ddc:	00000000 	nop
  412de0:	a443001c 	sh	v1,28(v0)
	    hp->him.port = nat_traversal_enabled ? pluto_port : c->that.host_port;
  412de4:	8fc20018 	lw	v0,24(s8)
  412de8:	00000000 	nop
  412dec:	afc20034 	sw	v0,52(s8)
  412df0:	8f82837c 	lw	v0,-31876(gp)
  412df4:	00000000 	nop
  412df8:	8c420000 	lw	v0,0(v0)
  412dfc:	00000000 	nop
  412e00:	14400008 	bnez	v0,412e24 <connect_to_host_pair+0x234>
  412e04:	00000000 	nop
  412e08:	8fc20050 	lw	v0,80(s8)
  412e0c:	00000000 	nop
  412e10:	94420178 	lhu	v0,376(v0)
  412e14:	00000000 	nop
  412e18:	a7c20038 	sh	v0,56(s8)
  412e1c:	10000006 	b	412e38 <connect_to_host_pair+0x248>
  412e20:	00000000 	nop
  412e24:	8f8384b0 	lw	v1,-31568(gp)
  412e28:	00000000 	nop
  412e2c:	94630000 	lhu	v1,0(v1)
  412e30:	00000000 	nop
  412e34:	a7c30038 	sh	v1,56(s8)
  412e38:	97c30038 	lhu	v1,56(s8)
  412e3c:	8fc20034 	lw	v0,52(s8)
  412e40:	00000000 	nop
  412e44:	a443003c 	sh	v1,60(v0)
#else
	    hp->me.port = c->this.host_port;
	    hp->him.port = c->that.host_port;
#endif
	    hp->initial_connection_sent = FALSE;
  412e48:	8fc20018 	lw	v0,24(s8)
  412e4c:	00000000 	nop
  412e50:	ac400040 	sw	zero,64(v0)
	    hp->connections = NULL;
  412e54:	8fc20018 	lw	v0,24(s8)
  412e58:	00000000 	nop
  412e5c:	ac400044 	sw	zero,68(v0)
	    hp->pending = NULL;
  412e60:	8fc20018 	lw	v0,24(s8)
  412e64:	00000000 	nop
  412e68:	ac400048 	sw	zero,72(v0)
	    hp->next = host_pairs;
  412e6c:	8f838018 	lw	v1,-32744(gp)
  412e70:	00000000 	nop
  412e74:	246306f4 	addiu	v1,v1,1780
  412e78:	8c630000 	lw	v1,0(v1)
  412e7c:	8fc20018 	lw	v0,24(s8)
  412e80:	00000000 	nop
  412e84:	ac43004c 	sw	v1,76(v0)
	    host_pairs = hp;
  412e88:	8fc20018 	lw	v0,24(s8)
  412e8c:	8f818018 	lw	at,-32744(gp)
  412e90:	00000000 	nop
  412e94:	242106f4 	addiu	at,at,1780
  412e98:	ac220000 	sw	v0,0(at)
	}
	c->host_pair = hp;
  412e9c:	8fc30018 	lw	v1,24(s8)
  412ea0:	8fc20050 	lw	v0,80(s8)
  412ea4:	00000000 	nop
  412ea8:	ac4301c4 	sw	v1,452(v0)
	c->hp_next = hp->connections;
  412eac:	8fc20018 	lw	v0,24(s8)
  412eb0:	00000000 	nop
  412eb4:	8c430044 	lw	v1,68(v0)
  412eb8:	8fc20050 	lw	v0,80(s8)
  412ebc:	00000000 	nop
  412ec0:	ac4301c8 	sw	v1,456(v0)
	hp->connections = c;
  412ec4:	8fc30050 	lw	v1,80(s8)
  412ec8:	8fc20018 	lw	v0,24(s8)
  412ecc:	00000000 	nop
  412ed0:	ac430044 	sw	v1,68(v0)
  412ed4:	10000010 	b	412f18 <connect_to_host_pair+0x328>
  412ed8:	00000000 	nop
    }
    else
    {
	/* since this connection isn't oriented, we place it
	 * in the unoriented_connections list instead.
	 */
	c->host_pair = NULL;
  412edc:	8fc20050 	lw	v0,80(s8)
  412ee0:	00000000 	nop
  412ee4:	ac4001c4 	sw	zero,452(v0)
	c->hp_next = unoriented_connections;
  412ee8:	8f838018 	lw	v1,-32744(gp)
  412eec:	00000000 	nop
  412ef0:	246306f8 	addiu	v1,v1,1784
  412ef4:	8c630000 	lw	v1,0(v1)
  412ef8:	8fc20050 	lw	v0,80(s8)
  412efc:	00000000 	nop
  412f00:	ac4301c8 	sw	v1,456(v0)
	unoriented_connections = c;
  412f04:	8fc20050 	lw	v0,80(s8)
  412f08:	8f818018 	lw	at,-32744(gp)
  412f0c:	00000000 	nop
  412f10:	242106f8 	addiu	at,at,1784
  412f14:	ac220000 	sw	v0,0(at)
    }
}
  412f18:	03c0e821 	move	sp,s8
  412f1c:	8fbf0048 	lw	ra,72(sp)
  412f20:	8fbe0044 	lw	s8,68(sp)
  412f24:	27bd0050 	addiu	sp,sp,80
  412f28:	03e00008 	jr	ra
  412f2c:	00000000 	nop

00412f30 <con_by_name>:
  412f30:	3c1c0fc0 	lui	gp,0xfc0
  412f34:	279c9a40 	addiu	gp,gp,-26048
  412f38:	0399e021 	addu	gp,gp,t9
  412f3c:	27bdffd0 	addiu	sp,sp,-48
  412f40:	afbc0010 	sw	gp,16(sp)
  412f44:	afbf0028 	sw	ra,40(sp)
  412f48:	afbe0024 	sw	s8,36(sp)
  412f4c:	afbc0020 	sw	gp,32(sp)
  412f50:	03a0f021 	move	s8,sp
  412f54:	afc40030 	sw	a0,48(s8)
  412f58:	afc50034 	sw	a1,52(s8)

/* find a connection by name.
 * If strict, don't accept a CK_INSTANCE.
 * Move the winner (if any) to the front.
 * If none is found, and strict, a diagnostic is logged to whack.
 */
struct connection *
con_by_name(const char *nm, bool strict)
{
    struct connection *p, *prev;

    for (prev = NULL, p = connections; ; prev = p, p = p->ac_next)
  412f5c:	afc0001c 	sw	zero,28(s8)
  412f60:	8f828018 	lw	v0,-32744(gp)
  412f64:	00000000 	nop
  412f68:	244206f0 	addiu	v0,v0,1776
  412f6c:	8c420000 	lw	v0,0(v0)
  412f70:	00000000 	nop
  412f74:	afc20018 	sw	v0,24(s8)
    {
	if (p == NULL)
  412f78:	8fc20018 	lw	v0,24(s8)
  412f7c:	00000000 	nop
  412f80:	14400012 	bnez	v0,412fcc <con_by_name+0x9c>
  412f84:	00000000 	nop
	{
	    if (strict)
  412f88:	8fc20034 	lw	v0,52(s8)
  412f8c:	00000000 	nop
  412f90:	10400047 	beqz	v0,4130b0 <con_by_name+0x180>
  412f94:	00000000 	nop
		whack_log(RC_UNKNOWN_NAME
  412f98:	24040015 	li	a0,21
  412f9c:	8f858020 	lw	a1,-32736(gp)
  412fa0:	00000000 	nop
  412fa4:	24a5546c 	addiu	a1,a1,21612
  412fa8:	8fc60030 	lw	a2,48(s8)
  412fac:	8f9982a8 	lw	t9,-32088(gp)
  412fb0:	00000000 	nop
  412fb4:	0320f809 	jalr	t9
  412fb8:	00000000 	nop
  412fbc:	8fdc0010 	lw	gp,16(s8)
  412fc0:	00000000 	nop
		    , "no connection named \"%s\"", nm);
	    break;
  412fc4:	1000003a 	b	4130b0 <con_by_name+0x180>
  412fc8:	00000000 	nop
	}
	if (streq(p->name, nm)
	&& (!strict || p->kind != CK_INSTANCE))
  412fcc:	8fc20018 	lw	v0,24(s8)
  412fd0:	00000000 	nop
  412fd4:	8c440000 	lw	a0,0(v0)
  412fd8:	8fc50030 	lw	a1,48(s8)
  412fdc:	8f998428 	lw	t9,-31704(gp)
  412fe0:	00000000 	nop
  412fe4:	0320f809 	jalr	t9
  412fe8:	00000000 	nop
  412fec:	8fdc0010 	lw	gp,16(s8)
  412ff0:	14400025 	bnez	v0,413088 <con_by_name+0x158>
  412ff4:	00000000 	nop
  412ff8:	8fc20034 	lw	v0,52(s8)
  412ffc:	00000000 	nop
  413000:	10400009 	beqz	v0,413028 <con_by_name+0xf8>
  413004:	00000000 	nop
  413008:	8fc20018 	lw	v0,24(s8)
  41300c:	00000000 	nop
  413010:	8c430194 	lw	v1,404(v0)
  413014:	24020002 	li	v0,2
  413018:	14620003 	bne	v1,v0,413028 <con_by_name+0xf8>
  41301c:	00000000 	nop
  413020:	10000019 	b	413088 <con_by_name+0x158>
  413024:	00000000 	nop
	{
	    if (prev != NULL)
  413028:	8fc2001c 	lw	v0,28(s8)
  41302c:	00000000 	nop
  413030:	1040001f 	beqz	v0,4130b0 <con_by_name+0x180>
  413034:	00000000 	nop
	    {
		prev->ac_next = p->ac_next;	/* remove p from list */
  413038:	8fc20018 	lw	v0,24(s8)
  41303c:	00000000 	nop
  413040:	8c4301cc 	lw	v1,460(v0)
  413044:	8fc2001c 	lw	v0,28(s8)
  413048:	00000000 	nop
  41304c:	ac4301cc 	sw	v1,460(v0)
		p->ac_next = connections;	/* and stick it on front */
  413050:	8f838018 	lw	v1,-32744(gp)
  413054:	00000000 	nop
  413058:	246306f0 	addiu	v1,v1,1776
  41305c:	8c630000 	lw	v1,0(v1)
  413060:	8fc20018 	lw	v0,24(s8)
  413064:	00000000 	nop
  413068:	ac4301cc 	sw	v1,460(v0)
		connections = p;
  41306c:	8fc20018 	lw	v0,24(s8)
  413070:	8f818018 	lw	at,-32744(gp)
  413074:	00000000 	nop
  413078:	242106f0 	addiu	at,at,1776
  41307c:	ac220000 	sw	v0,0(at)
	    }
	    break;
  413080:	1000000b 	b	4130b0 <con_by_name+0x180>
  413084:	00000000 	nop
  413088:	8fc20018 	lw	v0,24(s8)
  41308c:	00000000 	nop
  413090:	afc2001c 	sw	v0,28(s8)
  413094:	8fc20018 	lw	v0,24(s8)
  413098:	00000000 	nop
  41309c:	8c4201cc 	lw	v0,460(v0)
  4130a0:	00000000 	nop
  4130a4:	afc20018 	sw	v0,24(s8)
  4130a8:	1000ffb3 	b	412f78 <con_by_name+0x48>
  4130ac:	00000000 	nop
	}
    }
    return p;
  4130b0:	8fc20018 	lw	v0,24(s8)
  4130b4:	00000000 	nop
}
  4130b8:	03c0e821 	move	sp,s8
  4130bc:	8fbf0028 	lw	ra,40(sp)
  4130c0:	8fbe0024 	lw	s8,36(sp)
  4130c4:	27bd0030 	addiu	sp,sp,48
  4130c8:	03e00008 	jr	ra
  4130cc:	00000000 	nop

004130d0 <release_connection>:
  4130d0:	3c1c0fc0 	lui	gp,0xfc0
  4130d4:	279c98a0 	addiu	gp,gp,-26464
  4130d8:	0399e021 	addu	gp,gp,t9
  4130dc:	27bdffd8 	addiu	sp,sp,-40
  4130e0:	afbc0010 	sw	gp,16(sp)
  4130e4:	afbf0020 	sw	ra,32(sp)
  4130e8:	afbe001c 	sw	s8,28(sp)
  4130ec:	afbc0018 	sw	gp,24(sp)
  4130f0:	03a0f021 	move	s8,sp
  4130f4:	afc40028 	sw	a0,40(s8)
  4130f8:	afc5002c 	sw	a1,44(s8)

void
release_connection(struct connection *c, bool relations)
{
    if (c->kind == CK_INSTANCE)
  4130fc:	8fc20028 	lw	v0,40(s8)
  413100:	00000000 	nop
  413104:	8c430194 	lw	v1,404(v0)
  413108:	24020002 	li	v0,2
  41310c:	1462000a 	bne	v1,v0,413138 <release_connection+0x68>
  413110:	00000000 	nop
    {
	/* This does everything we need.
	 * Note that we will be called recursively by delete_connection,
	 * but kind will be CK_GOING_AWAY.
	 */
	delete_connection(c, relations);
  413114:	8fc40028 	lw	a0,40(s8)
  413118:	8fc5002c 	lw	a1,44(s8)
  41311c:	8f998b28 	lw	t9,-29912(gp)
  413120:	00000000 	nop
  413124:	0320f809 	jalr	t9
  413128:	00000000 	nop
  41312c:	8fdc0010 	lw	gp,16(s8)
  413130:	10000019 	b	413198 <release_connection+0xc8>
  413134:	00000000 	nop
    }
    else
    {
	flush_pending_by_connection(c);
  413138:	8fc40028 	lw	a0,40(s8)
  41313c:	8f998028 	lw	t9,-32728(gp)
  413140:	00000000 	nop
  413144:	2739c988 	addiu	t9,t9,-13944
  413148:	00000000 	nop
  41314c:	0320f809 	jalr	t9
  413150:	00000000 	nop
  413154:	8fdc0010 	lw	gp,16(s8)
  413158:	00000000 	nop
	delete_states_by_connection(c, relations);
  41315c:	8fc40028 	lw	a0,40(s8)
  413160:	8fc5002c 	lw	a1,44(s8)
  413164:	8f998608 	lw	t9,-31224(gp)
  413168:	00000000 	nop
  41316c:	0320f809 	jalr	t9
  413170:	00000000 	nop
  413174:	8fdc0010 	lw	gp,16(s8)
  413178:	00000000 	nop
	unroute_connection(c);
  41317c:	8fc40028 	lw	a0,40(s8)
  413180:	8f9983a0 	lw	t9,-31840(gp)
  413184:	00000000 	nop
  413188:	0320f809 	jalr	t9
  41318c:	00000000 	nop
  413190:	8fdc0010 	lw	gp,16(s8)
  413194:	00000000 	nop
    }
}
  413198:	03c0e821 	move	sp,s8
  41319c:	8fbf0020 	lw	ra,32(sp)
  4131a0:	8fbe001c 	lw	s8,28(sp)
  4131a4:	27bd0028 	addiu	sp,sp,40
  4131a8:	03e00008 	jr	ra
  4131ac:	00000000 	nop

004131b0 <delete_connection>:
  4131b0:	3c1c0fc0 	lui	gp,0xfc0
  4131b4:	279c97c0 	addiu	gp,gp,-26688
  4131b8:	0399e021 	addu	gp,gp,t9
  4131bc:	27bdffc0 	addiu	sp,sp,-64
  4131c0:	afbc0010 	sw	gp,16(sp)
  4131c4:	afbf0038 	sw	ra,56(sp)
  4131c8:	afbe0034 	sw	s8,52(sp)
  4131cc:	afbc0030 	sw	gp,48(sp)
  4131d0:	03a0f021 	move	s8,sp
  4131d4:	afc40040 	sw	a0,64(s8)
  4131d8:	afc50044 	sw	a1,68(s8)

/* Delete a connection */

#define list_rm(etype, enext, e, ehead) { \
	etype **ep; \
	for (ep = &(ehead); *ep != (e); ep = &(*ep)->enext) \
	    passert(*ep != NULL);    /* we must not come up empty-handed */ \
	*ep = (e)->enext; \
    }


void
delete_connection(struct connection *c, bool relations)
{
    struct connection *old_cur_connection
	= cur_connection == c? NULL : cur_connection;
  4131dc:	8f8388c8 	lw	v1,-30520(gp)
  4131e0:	00000000 	nop
  4131e4:	8c630000 	lw	v1,0(v1)
  4131e8:	8fc20040 	lw	v0,64(s8)
  4131ec:	00000000 	nop
  4131f0:	10620008 	beq	v1,v0,413214 <delete_connection+0x64>
  4131f4:	00000000 	nop
  4131f8:	8f8288c8 	lw	v0,-30520(gp)
  4131fc:	00000000 	nop
  413200:	8c420000 	lw	v0,0(v0)
  413204:	00000000 	nop
  413208:	afc20028 	sw	v0,40(s8)
  41320c:	10000002 	b	413218 <delete_connection+0x68>
  413210:	00000000 	nop
  413214:	afc00028 	sw	zero,40(s8)
  413218:	8fc20028 	lw	v0,40(s8)
  41321c:	00000000 	nop
  413220:	afc20018 	sw	v0,24(s8)
#ifdef DEBUG
    unsigned int old_cur_debugging = cur_debugging;
  413224:	8f8284f8 	lw	v0,-31496(gp)
  413228:	00000000 	nop
  41322c:	8c420000 	lw	v0,0(v0)
  413230:	00000000 	nop
  413234:	afc2001c 	sw	v0,28(s8)
#endif

    set_cur_connection(c);
  413238:	8fc20040 	lw	v0,64(s8)
  41323c:	8f8188c8 	lw	at,-30520(gp)
  413240:	00000000 	nop
  413244:	ac220000 	sw	v0,0(at)
  413248:	8fc40040 	lw	a0,64(s8)
  41324c:	8f998be4 	lw	t9,-29724(gp)
  413250:	00000000 	nop
  413254:	0320f809 	jalr	t9
  413258:	00000000 	nop
  41325c:	8fdc0010 	lw	gp,16(s8)
  413260:	00000000 	nop

    /* Must be careful to avoid circularity:
     * we mark c as going away so it won't get deleted recursively.
     */
    passert(c->kind != CK_GOING_AWAY);
  413264:	8fc20040 	lw	v0,64(s8)
  413268:	00000000 	nop
  41326c:	8c430194 	lw	v1,404(v0)
  413270:	24020003 	li	v0,3
  413274:	1462000e 	bne	v1,v0,4132b0 <delete_connection+0x100>
  413278:	00000000 	nop
  41327c:	8f848020 	lw	a0,-32736(gp)
  413280:	00000000 	nop
  413284:	24845488 	addiu	a0,a0,21640
  413288:	8f858020 	lw	a1,-32736(gp)
  41328c:	00000000 	nop
  413290:	24a554a4 	addiu	a1,a1,21668
  413294:	24060117 	li	a2,279
  413298:	8f998bb8 	lw	t9,-29768(gp)
  41329c:	00000000 	nop
  4132a0:	0320f809 	jalr	t9
  4132a4:	00000000 	nop
  4132a8:	8fdc0010 	lw	gp,16(s8)
  4132ac:	00000000 	nop
    if (c->kind == CK_INSTANCE)
  4132b0:	8fc20040 	lw	v0,64(s8)
  4132b4:	00000000 	nop
  4132b8:	8c430194 	lw	v1,404(v0)
  4132bc:	24020002 	li	v0,2
  4132c0:	1462001e 	bne	v1,v0,41333c <delete_connection+0x18c>
  4132c4:	00000000 	nop
    {
	plog("deleting connection \"%s\" instance with peer %s"
  4132c8:	8fc20040 	lw	v0,64(s8)
  4132cc:	00000000 	nop
  4132d0:	24420108 	addiu	v0,v0,264
  4132d4:	00402021 	move	a0,v0
  4132d8:	8f998100 	lw	t9,-32512(gp)
  4132dc:	00000000 	nop
  4132e0:	0320f809 	jalr	t9
  4132e4:	00000000 	nop
  4132e8:	8fdc0010 	lw	gp,16(s8)
  4132ec:	00401821 	move	v1,v0
  4132f0:	8f848020 	lw	a0,-32736(gp)
  4132f4:	00000000 	nop
  4132f8:	248454b4 	addiu	a0,a0,21684
  4132fc:	8fc20040 	lw	v0,64(s8)
  413300:	00000000 	nop
  413304:	8c450000 	lw	a1,0(v0)
  413308:	00603021 	move	a2,v1
  41330c:	8f998abc 	lw	t9,-30020(gp)
  413310:	00000000 	nop
  413314:	0320f809 	jalr	t9
  413318:	00000000 	nop
  41331c:	8fdc0010 	lw	gp,16(s8)
  413320:	00000000 	nop
	    , c->name, ip_str(&c->that.host_addr));
	c->kind = CK_GOING_AWAY;
  413324:	24030003 	li	v1,3
  413328:	8fc20040 	lw	v0,64(s8)
  41332c:	00000000 	nop
  413330:	ac430194 	sw	v1,404(v0)
  413334:	1000000a 	b	413360 <delete_connection+0x1b0>
  413338:	00000000 	nop
    }
    else
    {
	plog("deleting connection");
  41333c:	8f848020 	lw	a0,-32736(gp)
  413340:	00000000 	nop
  413344:	248454e4 	addiu	a0,a0,21732
  413348:	8f998abc 	lw	t9,-30020(gp)
  41334c:	00000000 	nop
  413350:	0320f809 	jalr	t9
  413354:	00000000 	nop
  413358:	8fdc0010 	lw	gp,16(s8)
  41335c:	00000000 	nop
    }
    release_connection(c, relations);	/* won't delete c */
  413360:	8fc40040 	lw	a0,64(s8)
  413364:	8fc50044 	lw	a1,68(s8)
  413368:	8f9989c4 	lw	t9,-30268(gp)
  41336c:	00000000 	nop
  413370:	0320f809 	jalr	t9
  413374:	00000000 	nop
  413378:	8fdc0010 	lw	gp,16(s8)
  41337c:	00000000 	nop

    /* find and delete c from connections list */
    list_rm(struct connection, ac_next, c, connections);
  413380:	8f828018 	lw	v0,-32744(gp)
  413384:	00000000 	nop
  413388:	244206f0 	addiu	v0,v0,1776
  41338c:	00000000 	nop
  413390:	afc20020 	sw	v0,32(s8)
  413394:	8fc20020 	lw	v0,32(s8)
  413398:	00000000 	nop
  41339c:	8c430000 	lw	v1,0(v0)
  4133a0:	8fc20040 	lw	v0,64(s8)
  4133a4:	00000000 	nop
  4133a8:	14620003 	bne	v1,v0,4133b8 <delete_connection+0x208>
  4133ac:	00000000 	nop
  4133b0:	1000001b 	b	413420 <delete_connection+0x270>
  4133b4:	00000000 	nop
  4133b8:	8fc20020 	lw	v0,32(s8)
  4133bc:	00000000 	nop
  4133c0:	8c420000 	lw	v0,0(v0)
  4133c4:	00000000 	nop
  4133c8:	1440000d 	bnez	v0,413400 <delete_connection+0x250>
  4133cc:	00000000 	nop
  4133d0:	8f848020 	lw	a0,-32736(gp)
  4133d4:	00000000 	nop
  4133d8:	248454f8 	addiu	a0,a0,21752
  4133dc:	8f858020 	lw	a1,-32736(gp)
  4133e0:	00000000 	nop
  4133e4:	24a554a4 	addiu	a1,a1,21668
  4133e8:	24060125 	li	a2,293
  4133ec:	8f998bb8 	lw	t9,-29768(gp)
  4133f0:	00000000 	nop
  4133f4:	0320f809 	jalr	t9
  4133f8:	00000000 	nop
  4133fc:	8fdc0010 	lw	gp,16(s8)
  413400:	8fc20020 	lw	v0,32(s8)
  413404:	00000000 	nop
  413408:	8c420000 	lw	v0,0(v0)
  41340c:	00000000 	nop
  413410:	244201cc 	addiu	v0,v0,460
  413414:	afc20020 	sw	v0,32(s8)
  413418:	1000ffde 	b	413394 <delete_connection+0x1e4>
  41341c:	00000000 	nop
  413420:	8fc20040 	lw	v0,64(s8)
  413424:	00000000 	nop
  413428:	8c4301cc 	lw	v1,460(v0)
  41342c:	8fc20020 	lw	v0,32(s8)
  413430:	00000000 	nop
  413434:	ac430000 	sw	v1,0(v0)
    cur_connection = old_cur_connection;
  413438:	8fc20018 	lw	v0,24(s8)
  41343c:	8f8188c8 	lw	at,-30520(gp)
  413440:	00000000 	nop
  413444:	ac220000 	sw	v0,0(at)

    /* find and delete c from the host pair list */
    if (c->host_pair == NULL)
  413448:	8fc20040 	lw	v0,64(s8)
  41344c:	00000000 	nop
  413450:	8c4201c4 	lw	v0,452(v0)
  413454:	00000000 	nop
  413458:	1440002f 	bnez	v0,413518 <delete_connection+0x368>
  41345c:	00000000 	nop
    {
	list_rm(struct connection, hp_next, c, unoriented_connections);
  413460:	8f828018 	lw	v0,-32744(gp)
  413464:	00000000 	nop
  413468:	244206f8 	addiu	v0,v0,1784
  41346c:	00000000 	nop
  413470:	afc20020 	sw	v0,32(s8)
  413474:	8fc20020 	lw	v0,32(s8)
  413478:	00000000 	nop
  41347c:	8c430000 	lw	v1,0(v0)
  413480:	8fc20040 	lw	v0,64(s8)
  413484:	00000000 	nop
  413488:	14620009 	bne	v1,v0,4134b0 <delete_connection+0x300>
  41348c:	00000000 	nop
  413490:	8fc20040 	lw	v0,64(s8)
  413494:	00000000 	nop
  413498:	8c4301c8 	lw	v1,456(v0)
  41349c:	8fc20020 	lw	v0,32(s8)
  4134a0:	00000000 	nop
  4134a4:	ac430000 	sw	v1,0(v0)
  4134a8:	100000a4 	b	41373c <delete_connection+0x58c>
  4134ac:	00000000 	nop
  4134b0:	8fc20020 	lw	v0,32(s8)
  4134b4:	00000000 	nop
  4134b8:	8c420000 	lw	v0,0(v0)
  4134bc:	00000000 	nop
  4134c0:	1440000d 	bnez	v0,4134f8 <delete_connection+0x348>
  4134c4:	00000000 	nop
  4134c8:	8f848020 	lw	a0,-32736(gp)
  4134cc:	00000000 	nop
  4134d0:	248454f8 	addiu	a0,a0,21752
  4134d4:	8f858020 	lw	a1,-32736(gp)
  4134d8:	00000000 	nop
  4134dc:	24a554a4 	addiu	a1,a1,21668
  4134e0:	2406012b 	li	a2,299
  4134e4:	8f998bb8 	lw	t9,-29768(gp)
  4134e8:	00000000 	nop
  4134ec:	0320f809 	jalr	t9
  4134f0:	00000000 	nop
  4134f4:	8fdc0010 	lw	gp,16(s8)
  4134f8:	8fc20020 	lw	v0,32(s8)
  4134fc:	00000000 	nop
  413500:	8c420000 	lw	v0,0(v0)
  413504:	00000000 	nop
  413508:	244201c8 	addiu	v0,v0,456
  41350c:	afc20020 	sw	v0,32(s8)
  413510:	1000ffd8 	b	413474 <delete_connection+0x2c4>
  413514:	00000000 	nop
    }
    else
    {
	struct host_pair *hp = c->host_pair;
  413518:	8fc20040 	lw	v0,64(s8)
  41351c:	00000000 	nop
  413520:	8c4201c4 	lw	v0,452(v0)
  413524:	00000000 	nop
  413528:	afc20020 	sw	v0,32(s8)

	list_rm(struct connection, hp_next, c, hp->connections);
  41352c:	8fc20020 	lw	v0,32(s8)
  413530:	00000000 	nop
  413534:	24420044 	addiu	v0,v0,68
  413538:	afc20024 	sw	v0,36(s8)
  41353c:	8fc20024 	lw	v0,36(s8)
  413540:	00000000 	nop
  413544:	8c430000 	lw	v1,0(v0)
  413548:	8fc20040 	lw	v0,64(s8)
  41354c:	00000000 	nop
  413550:	14620003 	bne	v1,v0,413560 <delete_connection+0x3b0>
  413554:	00000000 	nop
  413558:	1000001b 	b	4135c8 <delete_connection+0x418>
  41355c:	00000000 	nop
  413560:	8fc20024 	lw	v0,36(s8)
  413564:	00000000 	nop
  413568:	8c420000 	lw	v0,0(v0)
  41356c:	00000000 	nop
  413570:	1440000d 	bnez	v0,4135a8 <delete_connection+0x3f8>
  413574:	00000000 	nop
  413578:	8f848020 	lw	a0,-32736(gp)
  41357c:	00000000 	nop
  413580:	248454f8 	addiu	a0,a0,21752
  413584:	8f858020 	lw	a1,-32736(gp)
  413588:	00000000 	nop
  41358c:	24a554a4 	addiu	a1,a1,21668
  413590:	24060131 	li	a2,305
  413594:	8f998bb8 	lw	t9,-29768(gp)
  413598:	00000000 	nop
  41359c:	0320f809 	jalr	t9
  4135a0:	00000000 	nop
  4135a4:	8fdc0010 	lw	gp,16(s8)
  4135a8:	8fc20024 	lw	v0,36(s8)
  4135ac:	00000000 	nop
  4135b0:	8c420000 	lw	v0,0(v0)
  4135b4:	00000000 	nop
  4135b8:	244201c8 	addiu	v0,v0,456
  4135bc:	afc20024 	sw	v0,36(s8)
  4135c0:	1000ffde 	b	41353c <delete_connection+0x38c>
  4135c4:	00000000 	nop
  4135c8:	8fc20040 	lw	v0,64(s8)
  4135cc:	00000000 	nop
  4135d0:	8c4301c8 	lw	v1,456(v0)
  4135d4:	8fc20024 	lw	v0,36(s8)
  4135d8:	00000000 	nop
  4135dc:	ac430000 	sw	v1,0(v0)
	c->host_pair = NULL;	/* redundant, but safe */
  4135e0:	8fc20040 	lw	v0,64(s8)
  4135e4:	00000000 	nop
  4135e8:	ac4001c4 	sw	zero,452(v0)

	/* if there are no more connections with this host_pair
	 * and we haven't even made an initial contact, let's delete
	 * this guy in case we were created by an attempted DOS attack.
	 */
	if (hp->connections == NULL
	&& !hp->initial_connection_sent)
  4135ec:	8fc20020 	lw	v0,32(s8)
  4135f0:	00000000 	nop
  4135f4:	8c420044 	lw	v0,68(v0)
  4135f8:	00000000 	nop
  4135fc:	1440004f 	bnez	v0,41373c <delete_connection+0x58c>
  413600:	00000000 	nop
  413604:	8fc20020 	lw	v0,32(s8)
  413608:	00000000 	nop
  41360c:	8c420040 	lw	v0,64(v0)
  413610:	00000000 	nop
  413614:	14400049 	bnez	v0,41373c <delete_connection+0x58c>
  413618:	00000000 	nop
	{
	    passert(hp->pending == NULL);	/* ??? must deal with this! */
  41361c:	8fc20020 	lw	v0,32(s8)
  413620:	00000000 	nop
  413624:	8c420048 	lw	v0,72(v0)
  413628:	00000000 	nop
  41362c:	1040000e 	beqz	v0,413668 <delete_connection+0x4b8>
  413630:	00000000 	nop
  413634:	8f848020 	lw	a0,-32736(gp)
  413638:	00000000 	nop
  41363c:	24845504 	addiu	a0,a0,21764
  413640:	8f858020 	lw	a1,-32736(gp)
  413644:	00000000 	nop
  413648:	24a554a4 	addiu	a1,a1,21668
  41364c:	2406013b 	li	a2,315
  413650:	8f998bb8 	lw	t9,-29768(gp)
  413654:	00000000 	nop
  413658:	0320f809 	jalr	t9
  41365c:	00000000 	nop
  413660:	8fdc0010 	lw	gp,16(s8)
  413664:	00000000 	nop
	    list_rm(struct host_pair, next, hp, host_pairs);
  413668:	8f828018 	lw	v0,-32744(gp)
  41366c:	00000000 	nop
  413670:	244206f4 	addiu	v0,v0,1780
  413674:	00000000 	nop
  413678:	afc20024 	sw	v0,36(s8)
  41367c:	8fc20024 	lw	v0,36(s8)
  413680:	00000000 	nop
  413684:	8c430000 	lw	v1,0(v0)
  413688:	8fc20020 	lw	v0,32(s8)
  41368c:	00000000 	nop
  413690:	14620003 	bne	v1,v0,4136a0 <delete_connection+0x4f0>
  413694:	00000000 	nop
  413698:	1000001b 	b	413708 <delete_connection+0x558>
  41369c:	00000000 	nop
  4136a0:	8fc20024 	lw	v0,36(s8)
  4136a4:	00000000 	nop
  4136a8:	8c420000 	lw	v0,0(v0)
  4136ac:	00000000 	nop
  4136b0:	1440000d 	bnez	v0,4136e8 <delete_connection+0x538>
  4136b4:	00000000 	nop
  4136b8:	8f848020 	lw	a0,-32736(gp)
  4136bc:	00000000 	nop
  4136c0:	248454f8 	addiu	a0,a0,21752
  4136c4:	8f858020 	lw	a1,-32736(gp)
  4136c8:	00000000 	nop
  4136cc:	24a554a4 	addiu	a1,a1,21668
  4136d0:	2406013c 	li	a2,316
  4136d4:	8f998bb8 	lw	t9,-29768(gp)
  4136d8:	00000000 	nop
  4136dc:	0320f809 	jalr	t9
  4136e0:	00000000 	nop
  4136e4:	8fdc0010 	lw	gp,16(s8)
  4136e8:	8fc20024 	lw	v0,36(s8)
  4136ec:	00000000 	nop
  4136f0:	8c420000 	lw	v0,0(v0)
  4136f4:	00000000 	nop
  4136f8:	2442004c 	addiu	v0,v0,76
  4136fc:	afc20024 	sw	v0,36(s8)
  413700:	1000ffde 	b	41367c <delete_connection+0x4cc>
  413704:	00000000 	nop
  413708:	8fc20020 	lw	v0,32(s8)
  41370c:	00000000 	nop
  413710:	8c43004c 	lw	v1,76(v0)
  413714:	8fc20024 	lw	v0,36(s8)
  413718:	00000000 	nop
  41371c:	ac430000 	sw	v1,0(v0)
	    pfree(hp);
  413720:	8fc40020 	lw	a0,32(s8)
  413724:	8f998094 	lw	t9,-32620(gp)
  413728:	00000000 	nop
  41372c:	0320f809 	jalr	t9
  413730:	00000000 	nop
  413734:	8fdc0010 	lw	gp,16(s8)
  413738:	00000000 	nop
	}
    }

#ifdef VIRTUAL_IP
    if (c->kind != CK_GOING_AWAY) pfreeany(c->that.virt);
  41373c:	8fc20040 	lw	v0,64(s8)
  413740:	00000000 	nop
  413744:	8c430194 	lw	v1,404(v0)
  413748:	24020003 	li	v0,3
  41374c:	10620010 	beq	v1,v0,413790 <delete_connection+0x5e0>
  413750:	00000000 	nop
  413754:	8fc20040 	lw	v0,64(s8)
  413758:	00000000 	nop
  41375c:	8c42018c 	lw	v0,396(v0)
  413760:	00000000 	nop
  413764:	1040000a 	beqz	v0,413790 <delete_connection+0x5e0>
  413768:	00000000 	nop
  41376c:	8fc20040 	lw	v0,64(s8)
  413770:	00000000 	nop
  413774:	8c44018c 	lw	a0,396(v0)
  413778:	8f998094 	lw	t9,-32620(gp)
  41377c:	00000000 	nop
  413780:	0320f809 	jalr	t9
  413784:	00000000 	nop
  413788:	8fdc0010 	lw	gp,16(s8)
  41378c:	00000000 	nop
#endif

    if (c->kind == CK_TEMPLATE && (c->policy & POLICY_OPPO))
  413790:	8fc20040 	lw	v0,64(s8)
  413794:	00000000 	nop
  413798:	8c420194 	lw	v0,404(v0)
  41379c:	00000000 	nop
  4137a0:	14400017 	bnez	v0,413800 <delete_connection+0x650>
  4137a4:	00000000 	nop
  4137a8:	8fc20040 	lw	v0,64(s8)
  4137ac:	00000000 	nop
  4137b0:	8c440008 	lw	a0,8(v0)
  4137b4:	8c45000c 	lw	a1,12(v0)
  4137b8:	24020000 	li	v0,0
  4137bc:	24030800 	li	v1,2048
  4137c0:	00822024 	and	a0,a0,v0
  4137c4:	00a32824 	and	a1,a1,v1
  4137c8:	00801021 	move	v0,a0
  4137cc:	00451025 	or	v0,v0,a1
  4137d0:	1040000b 	beqz	v0,413800 <delete_connection+0x650>
  4137d4:	00000000 	nop
	oppo_templates--;
  4137d8:	8f828018 	lw	v0,-32744(gp)
  4137dc:	00000000 	nop
  4137e0:	244206fc 	addiu	v0,v0,1788
  4137e4:	8c420000 	lw	v0,0(v0)
  4137e8:	00000000 	nop
  4137ec:	2442ffff 	addiu	v0,v0,-1
  4137f0:	8f818018 	lw	at,-32744(gp)
  4137f4:	00000000 	nop
  4137f8:	242106fc 	addiu	at,at,1788
  4137fc:	ac220000 	sw	v0,0(at)

#ifdef DEBUG
    cur_debugging = old_cur_debugging;
  413800:	8fc2001c 	lw	v0,28(s8)
  413804:	8f8184f8 	lw	at,-31496(gp)
  413808:	00000000 	nop
  41380c:	ac220000 	sw	v0,0(at)
#endif
    pfreeany(c->name);
  413810:	8fc20040 	lw	v0,64(s8)
  413814:	00000000 	nop
  413818:	8c420000 	lw	v0,0(v0)
  41381c:	00000000 	nop
  413820:	1040000a 	beqz	v0,41384c <delete_connection+0x69c>
  413824:	00000000 	nop
  413828:	8fc20040 	lw	v0,64(s8)
  41382c:	00000000 	nop
  413830:	8c440000 	lw	a0,0(v0)
  413834:	8f998094 	lw	t9,-32620(gp)
  413838:	00000000 	nop
  41383c:	0320f809 	jalr	t9
  413840:	00000000 	nop
  413844:	8fdc0010 	lw	gp,16(s8)
  413848:	00000000 	nop
    free_id_content(&c->this.id);
  41384c:	8fc20040 	lw	v0,64(s8)
  413850:	00000000 	nop
  413854:	24420030 	addiu	v0,v0,48
  413858:	00402021 	move	a0,v0
  41385c:	8f9982f0 	lw	t9,-32016(gp)
  413860:	00000000 	nop
  413864:	0320f809 	jalr	t9
  413868:	00000000 	nop
  41386c:	8fdc0010 	lw	gp,16(s8)
  413870:	00000000 	nop
    pfreeany(c->this.updown);
  413874:	8fc20040 	lw	v0,64(s8)
  413878:	00000000 	nop
  41387c:	8c4200c4 	lw	v0,196(v0)
  413880:	00000000 	nop
  413884:	1040000a 	beqz	v0,4138b0 <delete_connection+0x700>
  413888:	00000000 	nop
  41388c:	8fc20040 	lw	v0,64(s8)
  413890:	00000000 	nop
  413894:	8c4400c4 	lw	a0,196(v0)
  413898:	8f998094 	lw	t9,-32620(gp)
  41389c:	00000000 	nop
  4138a0:	0320f809 	jalr	t9
  4138a4:	00000000 	nop
  4138a8:	8fdc0010 	lw	gp,16(s8)
  4138ac:	00000000 	nop
    freeanychunk(c->this.ca);
  4138b0:	8fc20040 	lw	v0,64(s8)
  4138b4:	00000000 	nop
  4138b8:	8c4200d4 	lw	v0,212(v0)
  4138bc:	00000000 	nop
  4138c0:	10400009 	beqz	v0,4138e8 <delete_connection+0x738>
  4138c4:	00000000 	nop
  4138c8:	8fc20040 	lw	v0,64(s8)
  4138cc:	00000000 	nop
  4138d0:	8c4400d4 	lw	a0,212(v0)
  4138d4:	8f998094 	lw	t9,-32620(gp)
  4138d8:	00000000 	nop
  4138dc:	0320f809 	jalr	t9
  4138e0:	00000000 	nop
  4138e4:	8fdc0010 	lw	gp,16(s8)
  4138e8:	8fc20040 	lw	v0,64(s8)
  4138ec:	00000000 	nop
  4138f0:	ac4000d4 	sw	zero,212(v0)
    release_x509cert(c->this.cert);
  4138f4:	8fc20040 	lw	v0,64(s8)
  4138f8:	00000000 	nop
  4138fc:	8c4400d0 	lw	a0,208(v0)
  413900:	8f9981c4 	lw	t9,-32316(gp)
  413904:	00000000 	nop
  413908:	0320f809 	jalr	t9
  41390c:	00000000 	nop
  413910:	8fdc0010 	lw	gp,16(s8)
  413914:	00000000 	nop
    free_id_content(&c->that.id);
  413918:	8fc20040 	lw	v0,64(s8)
  41391c:	00000000 	nop
  413920:	244200e0 	addiu	v0,v0,224
  413924:	00402021 	move	a0,v0
  413928:	8f9982f0 	lw	t9,-32016(gp)
  41392c:	00000000 	nop
  413930:	0320f809 	jalr	t9
  413934:	00000000 	nop
  413938:	8fdc0010 	lw	gp,16(s8)
  41393c:	00000000 	nop
    pfreeany(c->that.updown);
  413940:	8fc20040 	lw	v0,64(s8)
  413944:	00000000 	nop
  413948:	8c420174 	lw	v0,372(v0)
  41394c:	00000000 	nop
  413950:	1040000a 	beqz	v0,41397c <delete_connection+0x7cc>
  413954:	00000000 	nop
  413958:	8fc20040 	lw	v0,64(s8)
  41395c:	00000000 	nop
  413960:	8c440174 	lw	a0,372(v0)
  413964:	8f998094 	lw	t9,-32620(gp)
  413968:	00000000 	nop
  41396c:	0320f809 	jalr	t9
  413970:	00000000 	nop
  413974:	8fdc0010 	lw	gp,16(s8)
  413978:	00000000 	nop
    freeanychunk(c->that.ca);
  41397c:	8fc20040 	lw	v0,64(s8)
  413980:	00000000 	nop
  413984:	8c420184 	lw	v0,388(v0)
  413988:	00000000 	nop
  41398c:	10400009 	beqz	v0,4139b4 <delete_connection+0x804>
  413990:	00000000 	nop
  413994:	8fc20040 	lw	v0,64(s8)
  413998:	00000000 	nop
  41399c:	8c440184 	lw	a0,388(v0)
  4139a0:	8f998094 	lw	t9,-32620(gp)
  4139a4:	00000000 	nop
  4139a8:	0320f809 	jalr	t9
  4139ac:	00000000 	nop
  4139b0:	8fdc0010 	lw	gp,16(s8)
  4139b4:	8fc20040 	lw	v0,64(s8)
  4139b8:	00000000 	nop
  4139bc:	ac400184 	sw	zero,388(v0)
    release_x509cert(c->that.cert);
  4139c0:	8fc20040 	lw	v0,64(s8)
  4139c4:	00000000 	nop
  4139c8:	8c440180 	lw	a0,384(v0)
  4139cc:	8f9981c4 	lw	t9,-32316(gp)
  4139d0:	00000000 	nop
  4139d4:	0320f809 	jalr	t9
  4139d8:	00000000 	nop
  4139dc:	8fdc0010 	lw	gp,16(s8)
  4139e0:	00000000 	nop
    free_generalNames(c->requested_ca, TRUE);
  4139e4:	8fc20040 	lw	v0,64(s8)
  4139e8:	00000000 	nop
  4139ec:	8c4401d0 	lw	a0,464(v0)
  4139f0:	24050001 	li	a1,1
  4139f4:	8f9987ac 	lw	t9,-30804(gp)
  4139f8:	00000000 	nop
  4139fc:	0320f809 	jalr	t9
  413a00:	00000000 	nop
  413a04:	8fdc0010 	lw	gp,16(s8)
  413a08:	00000000 	nop
    gw_delref(&c->gw_info);
  413a0c:	8fc20040 	lw	v0,64(s8)
  413a10:	00000000 	nop
  413a14:	244201b8 	addiu	v0,v0,440
  413a18:	00402021 	move	a0,v0
  413a1c:	8f9983d8 	lw	t9,-31784(gp)
  413a20:	00000000 	nop
  413a24:	0320f809 	jalr	t9
  413a28:	00000000 	nop
  413a2c:	8fdc0010 	lw	gp,16(s8)
  413a30:	00000000 	nop
#ifndef NO_KERNEL_ALG
    alg_info_delref((struct alg_info **)&c->alg_info_esp);
  413a34:	8fc20040 	lw	v0,64(s8)
  413a38:	00000000 	nop
  413a3c:	244201bc 	addiu	v0,v0,444
  413a40:	00402021 	move	a0,v0
  413a44:	8f998338 	lw	t9,-31944(gp)
  413a48:	00000000 	nop
  413a4c:	0320f809 	jalr	t9
  413a50:	00000000 	nop
  413a54:	8fdc0010 	lw	gp,16(s8)
  413a58:	00000000 	nop
#endif
#ifndef NO_IKE_ALG
    alg_info_delref((struct alg_info **)&c->alg_info_ike);
  413a5c:	8fc20040 	lw	v0,64(s8)
  413a60:	00000000 	nop
  413a64:	244201c0 	addiu	v0,v0,448
  413a68:	00402021 	move	a0,v0
  413a6c:	8f998338 	lw	t9,-31944(gp)
  413a70:	00000000 	nop
  413a74:	0320f809 	jalr	t9
  413a78:	00000000 	nop
  413a7c:	8fdc0010 	lw	gp,16(s8)
  413a80:	00000000 	nop
#endif
    pfree(c);
  413a84:	8fc40040 	lw	a0,64(s8)
  413a88:	8f998094 	lw	t9,-32620(gp)
  413a8c:	00000000 	nop
  413a90:	0320f809 	jalr	t9
  413a94:	00000000 	nop
  413a98:	8fdc0010 	lw	gp,16(s8)
  413a9c:	00000000 	nop
}
  413aa0:	03c0e821 	move	sp,s8
  413aa4:	8fbf0038 	lw	ra,56(sp)
  413aa8:	8fbe0034 	lw	s8,52(sp)
  413aac:	27bd0040 	addiu	sp,sp,64
  413ab0:	03e00008 	jr	ra
  413ab4:	00000000 	nop

00413ab8 <delete_every_connection>:
  413ab8:	3c1c0fc0 	lui	gp,0xfc0
  413abc:	279c8eb8 	addiu	gp,gp,-29000
  413ac0:	0399e021 	addu	gp,gp,t9
  413ac4:	27bdffd8 	addiu	sp,sp,-40
  413ac8:	afbc0010 	sw	gp,16(sp)
  413acc:	afbf0020 	sw	ra,32(sp)
  413ad0:	afbe001c 	sw	s8,28(sp)
  413ad4:	afbc0018 	sw	gp,24(sp)
  413ad8:	03a0f021 	move	s8,sp
  413adc:	00000000 	nop

void
delete_every_connection(void)
{
    while (connections != NULL)
  413ae0:	8f828018 	lw	v0,-32744(gp)
  413ae4:	00000000 	nop
  413ae8:	244206f0 	addiu	v0,v0,1776
  413aec:	8c420000 	lw	v0,0(v0)
  413af0:	00000000 	nop
  413af4:	14400003 	bnez	v0,413b04 <delete_every_connection+0x4c>
  413af8:	00000000 	nop
  413afc:	1000000d 	b	413b34 <delete_every_connection+0x7c>
  413b00:	00000000 	nop
	delete_connection(connections, TRUE);
  413b04:	8f848018 	lw	a0,-32744(gp)
  413b08:	00000000 	nop
  413b0c:	248406f0 	addiu	a0,a0,1776
  413b10:	8c840000 	lw	a0,0(a0)
  413b14:	24050001 	li	a1,1
  413b18:	8f998b28 	lw	t9,-29912(gp)
  413b1c:	00000000 	nop
  413b20:	0320f809 	jalr	t9
  413b24:	00000000 	nop
  413b28:	8fdc0010 	lw	gp,16(s8)
  413b2c:	1000ffec 	b	413ae0 <delete_every_connection+0x28>
  413b30:	00000000 	nop
}
  413b34:	03c0e821 	move	sp,s8
  413b38:	8fbf0020 	lw	ra,32(sp)
  413b3c:	8fbe001c 	lw	s8,28(sp)
  413b40:	27bd0028 	addiu	sp,sp,40
  413b44:	03e00008 	jr	ra
  413b48:	00000000 	nop

00413b4c <release_dead_interfaces>:
  413b4c:	3c1c0fc0 	lui	gp,0xfc0
  413b50:	279c8e24 	addiu	gp,gp,-29148
  413b54:	0399e021 	addu	gp,gp,t9
  413b58:	27bdffc8 	addiu	sp,sp,-56
  413b5c:	afbc0010 	sw	gp,16(sp)
  413b60:	afbf0030 	sw	ra,48(sp)
  413b64:	afbe002c 	sw	s8,44(sp)
  413b68:	afbc0028 	sw	gp,40(sp)
  413b6c:	03a0f021 	move	s8,sp

void
release_dead_interfaces(void)
{
    struct host_pair *hp;

    for (hp = host_pairs; hp != NULL; hp = hp->next)
  413b70:	8f828018 	lw	v0,-32744(gp)
  413b74:	00000000 	nop
  413b78:	244206f4 	addiu	v0,v0,1780
  413b7c:	8c420000 	lw	v0,0(v0)
  413b80:	00000000 	nop
  413b84:	afc20018 	sw	v0,24(s8)
  413b88:	8fc20018 	lw	v0,24(s8)
  413b8c:	00000000 	nop
  413b90:	14400003 	bnez	v0,413ba0 <release_dead_interfaces+0x54>
  413b94:	00000000 	nop
  413b98:	10000078 	b	413d7c <release_dead_interfaces+0x230>
  413b9c:	00000000 	nop
    {
	struct connection **pp
	    , *p;

	for (pp = &hp->connections; (p = *pp) != NULL; )
  413ba0:	8fc20018 	lw	v0,24(s8)
  413ba4:	00000000 	nop
  413ba8:	24420044 	addiu	v0,v0,68
  413bac:	afc2001c 	sw	v0,28(s8)
  413bb0:	8fc2001c 	lw	v0,28(s8)
  413bb4:	00000000 	nop
  413bb8:	8c420000 	lw	v0,0(v0)
  413bbc:	00000000 	nop
  413bc0:	afc20020 	sw	v0,32(s8)
  413bc4:	14400008 	bnez	v0,413be8 <release_dead_interfaces+0x9c>
  413bc8:	00000000 	nop
  413bcc:	8fc20018 	lw	v0,24(s8)
  413bd0:	00000000 	nop
  413bd4:	8c42004c 	lw	v0,76(v0)
  413bd8:	00000000 	nop
  413bdc:	afc20018 	sw	v0,24(s8)
  413be0:	1000ffe9 	b	413b88 <release_dead_interfaces+0x3c>
  413be4:	00000000 	nop
	{
	    if (p->interface->change == IFN_DELETE)
  413be8:	8fc20020 	lw	v0,32(s8)
  413bec:	00000000 	nop
  413bf0:	8c420198 	lw	v0,408(v0)
  413bf4:	00000000 	nop
  413bf8:	8c430030 	lw	v1,48(v0)
  413bfc:	24020002 	li	v0,2
  413c00:	14620058 	bne	v1,v0,413d64 <release_dead_interfaces+0x218>
  413c04:	00000000 	nop
	    {
		/* this connection's interface is going away */
		enum connection_kind k = p->kind;
  413c08:	8fc20020 	lw	v0,32(s8)
  413c0c:	00000000 	nop
  413c10:	8c420194 	lw	v0,404(v0)
  413c14:	00000000 	nop
  413c18:	afc20024 	sw	v0,36(s8)

		release_connection(p, TRUE);
  413c1c:	8fc40020 	lw	a0,32(s8)
  413c20:	24050001 	li	a1,1
  413c24:	8f9989c4 	lw	t9,-30268(gp)
  413c28:	00000000 	nop
  413c2c:	0320f809 	jalr	t9
  413c30:	00000000 	nop
  413c34:	8fdc0010 	lw	gp,16(s8)
  413c38:	00000000 	nop

		if (k == CK_PERMANENT || k == CK_TEMPLATE)
  413c3c:	8fc30024 	lw	v1,36(s8)
  413c40:	24020001 	li	v0,1
  413c44:	10620005 	beq	v1,v0,413c5c <release_dead_interfaces+0x110>
  413c48:	00000000 	nop
  413c4c:	8fc20024 	lw	v0,36(s8)
  413c50:	00000000 	nop
  413c54:	1440002f 	bnez	v0,413d14 <release_dead_interfaces+0x1c8>
  413c58:	00000000 	nop
		{
		    /* The connection should have survived release:
		     * move it to the unoriented_connections list.
		     */
		    passert(p == *pp);
  413c5c:	8fc2001c 	lw	v0,28(s8)
  413c60:	00000000 	nop
  413c64:	8c430000 	lw	v1,0(v0)
  413c68:	8fc20020 	lw	v0,32(s8)
  413c6c:	00000000 	nop
  413c70:	1043000e 	beq	v0,v1,413cac <release_dead_interfaces+0x160>
  413c74:	00000000 	nop
  413c78:	8f848020 	lw	a0,-32736(gp)
  413c7c:	00000000 	nop
  413c80:	24845518 	addiu	a0,a0,21784
  413c84:	8f858020 	lw	a1,-32736(gp)
  413c88:	00000000 	nop
  413c8c:	24a554a4 	addiu	a1,a1,21668
  413c90:	2406017e 	li	a2,382
  413c94:	8f998bb8 	lw	t9,-29768(gp)
  413c98:	00000000 	nop
  413c9c:	0320f809 	jalr	t9
  413ca0:	00000000 	nop
  413ca4:	8fdc0010 	lw	gp,16(s8)
  413ca8:	00000000 	nop

		    p->interface = NULL;
  413cac:	8fc20020 	lw	v0,32(s8)
  413cb0:	00000000 	nop
  413cb4:	ac400198 	sw	zero,408(v0)

		    *pp = p->hp_next;	/* advance *pp */
  413cb8:	8fc20020 	lw	v0,32(s8)
  413cbc:	00000000 	nop
  413cc0:	8c4301c8 	lw	v1,456(v0)
  413cc4:	8fc2001c 	lw	v0,28(s8)
  413cc8:	00000000 	nop
  413ccc:	ac430000 	sw	v1,0(v0)
		    p->host_pair = NULL;
  413cd0:	8fc20020 	lw	v0,32(s8)
  413cd4:	00000000 	nop
  413cd8:	ac4001c4 	sw	zero,452(v0)
		    p->hp_next = unoriented_connections;
  413cdc:	8f838018 	lw	v1,-32744(gp)
  413ce0:	00000000 	nop
  413ce4:	246306f8 	addiu	v1,v1,1784
  413ce8:	8c630000 	lw	v1,0(v1)
  413cec:	8fc20020 	lw	v0,32(s8)
  413cf0:	00000000 	nop
  413cf4:	ac4301c8 	sw	v1,456(v0)
		    unoriented_connections = p;
  413cf8:	8fc20020 	lw	v0,32(s8)
  413cfc:	8f818018 	lw	at,-32744(gp)
  413d00:	00000000 	nop
  413d04:	242106f8 	addiu	at,at,1784
  413d08:	ac220000 	sw	v0,0(at)
  413d0c:	1000ffa8 	b	413bb0 <release_dead_interfaces+0x64>
  413d10:	00000000 	nop
		}
		else
		{
		    /* The connection should have vanished,
		     * but the previous connection remains.
		     */
		    passert(p != *pp);
  413d14:	8fc2001c 	lw	v0,28(s8)
  413d18:	00000000 	nop
  413d1c:	8c430000 	lw	v1,0(v0)
  413d20:	8fc20020 	lw	v0,32(s8)
  413d24:	00000000 	nop
  413d28:	1443ffa1 	bne	v0,v1,413bb0 <release_dead_interfaces+0x64>
  413d2c:	00000000 	nop
  413d30:	8f848020 	lw	a0,-32736(gp)
  413d34:	00000000 	nop
  413d38:	24845524 	addiu	a0,a0,21796
  413d3c:	8f858020 	lw	a1,-32736(gp)
  413d40:	00000000 	nop
  413d44:	24a554a4 	addiu	a1,a1,21668
  413d48:	2406018c 	li	a2,396
  413d4c:	8f998bb8 	lw	t9,-29768(gp)
  413d50:	00000000 	nop
  413d54:	0320f809 	jalr	t9
  413d58:	00000000 	nop
  413d5c:	8fdc0010 	lw	gp,16(s8)
  413d60:	00000000 	nop
		}
	    }
	    else
	    {
		pp = &p->hp_next;	/* advance pp */
  413d64:	8fc20020 	lw	v0,32(s8)
  413d68:	00000000 	nop
  413d6c:	244201c8 	addiu	v0,v0,456
  413d70:	afc2001c 	sw	v0,28(s8)
  413d74:	1000ff8e 	b	413bb0 <release_dead_interfaces+0x64>
  413d78:	00000000 	nop
	    }
	}
    }
}
  413d7c:	03c0e821 	move	sp,s8
  413d80:	8fbf0030 	lw	ra,48(sp)
  413d84:	8fbe002c 	lw	s8,44(sp)
  413d88:	27bd0038 	addiu	sp,sp,56
  413d8c:	03e00008 	jr	ra
  413d90:	00000000 	nop

00413d94 <check_orientations>:
  413d94:	3c1c0fc0 	lui	gp,0xfc0
  413d98:	279c8bdc 	addiu	gp,gp,-29732
  413d9c:	0399e021 	addu	gp,gp,t9
  413da0:	27bdffc8 	addiu	sp,sp,-56
  413da4:	afbc0010 	sw	gp,16(sp)
  413da8:	afbf0030 	sw	ra,48(sp)
  413dac:	afbe002c 	sw	s8,44(sp)
  413db0:	afbc0028 	sw	gp,40(sp)
  413db4:	03a0f021 	move	s8,sp

/* adjust orientations of connections to reflect newly added interfaces */
void
check_orientations(void)
{
    /* try to orient all the unoriented connections */
    {
	struct connection *c = unoriented_connections;
  413db8:	8f828018 	lw	v0,-32744(gp)
  413dbc:	00000000 	nop
  413dc0:	244206f8 	addiu	v0,v0,1784
  413dc4:	8c420000 	lw	v0,0(v0)
  413dc8:	00000000 	nop
  413dcc:	afc20018 	sw	v0,24(s8)

	unoriented_connections = NULL;
  413dd0:	8f818018 	lw	at,-32744(gp)
  413dd4:	00000000 	nop
  413dd8:	242106f8 	addiu	at,at,1784
  413ddc:	ac200000 	sw	zero,0(at)

	while (c != NULL)
  413de0:	8fc20018 	lw	v0,24(s8)
  413de4:	00000000 	nop
  413de8:	14400003 	bnez	v0,413df8 <check_orientations+0x64>
  413dec:	00000000 	nop
  413df0:	1000001b 	b	413e60 <check_orientations+0xcc>
  413df4:	00000000 	nop
	{
	    struct connection *nxt = c->hp_next;
  413df8:	8fc20018 	lw	v0,24(s8)
  413dfc:	00000000 	nop
  413e00:	8c4201c8 	lw	v0,456(v0)
  413e04:	00000000 	nop
  413e08:	afc2001c 	sw	v0,28(s8)

	    (void)orient(c);
  413e0c:	8fc40018 	lw	a0,24(s8)
  413e10:	8f998780 	lw	t9,-30848(gp)
  413e14:	00000000 	nop
  413e18:	0320f809 	jalr	t9
  413e1c:	00000000 	nop
  413e20:	8fdc0010 	lw	gp,16(s8)
  413e24:	00000000 	nop
	    connect_to_host_pair(c);
  413e28:	8fc40018 	lw	a0,24(s8)
  413e2c:	8f998024 	lw	t9,-32732(gp)
  413e30:	00000000 	nop
  413e34:	27392bf0 	addiu	t9,t9,11248
  413e38:	00000000 	nop
  413e3c:	0320f809 	jalr	t9
  413e40:	00000000 	nop
  413e44:	8fdc0010 	lw	gp,16(s8)
  413e48:	00000000 	nop
	    c = nxt;
  413e4c:	8fc2001c 	lw	v0,28(s8)
  413e50:	00000000 	nop
  413e54:	afc20018 	sw	v0,24(s8)
  413e58:	1000ffe1 	b	413de0 <check_orientations+0x4c>
  413e5c:	00000000 	nop
	}
    }

    /* Check that no oriented connection has become double-oriented.
     * In other words, the far side must not match one of our new interfaces.
     */
    {
	struct iface *i;

	for (i = interfaces; i != NULL; i = i->next)
  413e60:	8f828c10 	lw	v0,-29680(gp)
  413e64:	00000000 	nop
  413e68:	8c420000 	lw	v0,0(v0)
  413e6c:	00000000 	nop
  413e70:	afc2001c 	sw	v0,28(s8)
  413e74:	8fc2001c 	lw	v0,28(s8)
  413e78:	00000000 	nop
  413e7c:	14400003 	bnez	v0,413e8c <check_orientations+0xf8>
  413e80:	00000000 	nop
  413e84:	1000006c 	b	414038 <check_orientations+0x2a4>
  413e88:	00000000 	nop
	{
	    if (i->change == IFN_ADD)
  413e8c:	8fc2001c 	lw	v0,28(s8)
  413e90:	00000000 	nop
  413e94:	8c420030 	lw	v0,48(v0)
  413e98:	00000000 	nop
  413e9c:	1440005f 	bnez	v0,41401c <check_orientations+0x288>
  413ea0:	00000000 	nop
	    {
		struct host_pair *hp;

		for (hp = host_pairs; hp != NULL; hp = hp->next)
  413ea4:	8f828018 	lw	v0,-32744(gp)
  413ea8:	00000000 	nop
  413eac:	244206f4 	addiu	v0,v0,1780
  413eb0:	8c420000 	lw	v0,0(v0)
  413eb4:	00000000 	nop
  413eb8:	afc20018 	sw	v0,24(s8)
  413ebc:	8fc20018 	lw	v0,24(s8)
  413ec0:	00000000 	nop
  413ec4:	14400003 	bnez	v0,413ed4 <check_orientations+0x140>
  413ec8:	00000000 	nop
  413ecc:	10000053 	b	41401c <check_orientations+0x288>
  413ed0:	00000000 	nop
		{
		    if (sameaddr(&hp->him.addr, &i->addr)
		    && (!no_klips || hp->him.port == pluto_port))
  413ed4:	8fc20018 	lw	v0,24(s8)
  413ed8:	00000000 	nop
  413edc:	24430020 	addiu	v1,v0,32
  413ee0:	8fc2001c 	lw	v0,28(s8)
  413ee4:	00000000 	nop
  413ee8:	24420008 	addiu	v0,v0,8
  413eec:	00602021 	move	a0,v1
  413ef0:	00402821 	move	a1,v0
  413ef4:	8f998928 	lw	t9,-30424(gp)
  413ef8:	00000000 	nop
  413efc:	0320f809 	jalr	t9
  413f00:	00000000 	nop
  413f04:	8fdc0010 	lw	gp,16(s8)
  413f08:	1040003d 	beqz	v0,414000 <check_orientations+0x26c>
  413f0c:	00000000 	nop
  413f10:	8f8286ec 	lw	v0,-30996(gp)
  413f14:	00000000 	nop
  413f18:	8c420000 	lw	v0,0(v0)
  413f1c:	00000000 	nop
  413f20:	1040000c 	beqz	v0,413f54 <check_orientations+0x1c0>
  413f24:	00000000 	nop
  413f28:	8fc20018 	lw	v0,24(s8)
  413f2c:	00000000 	nop
  413f30:	9443003c 	lhu	v1,60(v0)
  413f34:	8f8284b0 	lw	v0,-31568(gp)
  413f38:	00000000 	nop
  413f3c:	94420000 	lhu	v0,0(v0)
  413f40:	00000000 	nop
  413f44:	10620003 	beq	v1,v0,413f54 <check_orientations+0x1c0>
  413f48:	00000000 	nop
  413f4c:	1000002c 	b	414000 <check_orientations+0x26c>
  413f50:	00000000 	nop
		    {
			/* bad news: the whole chain of connections
			 * hanging off this host pair has both sides
			 * matching an interface.
			 * We'll get rid of them, using orient and
			 * connect_to_host_pair.  But we'll be lazy
			 * and not ditch the host_pair itself (the
			 * cost of leaving it is slight and cannot
			 * be induced by a foe).
			 */
			struct connection *c = hp->connections;
  413f54:	8fc20018 	lw	v0,24(s8)
  413f58:	00000000 	nop
  413f5c:	8c420044 	lw	v0,68(v0)
  413f60:	00000000 	nop
  413f64:	afc20020 	sw	v0,32(s8)

			hp->connections = NULL;
  413f68:	8fc20018 	lw	v0,24(s8)
  413f6c:	00000000 	nop
  413f70:	ac400044 	sw	zero,68(v0)
			while (c != NULL)
  413f74:	8fc20020 	lw	v0,32(s8)
  413f78:	00000000 	nop
  413f7c:	14400003 	bnez	v0,413f8c <check_orientations+0x1f8>
  413f80:	00000000 	nop
  413f84:	1000001e 	b	414000 <check_orientations+0x26c>
  413f88:	00000000 	nop
			{
			    struct connection *nxt = c->hp_next;
  413f8c:	8fc20020 	lw	v0,32(s8)
  413f90:	00000000 	nop
  413f94:	8c4201c8 	lw	v0,456(v0)
  413f98:	00000000 	nop
  413f9c:	afc20024 	sw	v0,36(s8)

			    c->interface = NULL;
  413fa0:	8fc20020 	lw	v0,32(s8)
  413fa4:	00000000 	nop
  413fa8:	ac400198 	sw	zero,408(v0)
			    (void)orient(c);
  413fac:	8fc40020 	lw	a0,32(s8)
  413fb0:	8f998780 	lw	t9,-30848(gp)
  413fb4:	00000000 	nop
  413fb8:	0320f809 	jalr	t9
  413fbc:	00000000 	nop
  413fc0:	8fdc0010 	lw	gp,16(s8)
  413fc4:	00000000 	nop
			    connect_to_host_pair(c);
  413fc8:	8fc40020 	lw	a0,32(s8)
  413fcc:	8f998024 	lw	t9,-32732(gp)
  413fd0:	00000000 	nop
  413fd4:	27392bf0 	addiu	t9,t9,11248
  413fd8:	00000000 	nop
  413fdc:	0320f809 	jalr	t9
  413fe0:	00000000 	nop
  413fe4:	8fdc0010 	lw	gp,16(s8)
  413fe8:	00000000 	nop
			    c = nxt;
  413fec:	8fc20024 	lw	v0,36(s8)
  413ff0:	00000000 	nop
  413ff4:	afc20020 	sw	v0,32(s8)
  413ff8:	1000ffde 	b	413f74 <check_orientations+0x1e0>
  413ffc:	00000000 	nop
  414000:	8fc20018 	lw	v0,24(s8)
  414004:	00000000 	nop
  414008:	8c42004c 	lw	v0,76(v0)
  41400c:	00000000 	nop
  414010:	afc20018 	sw	v0,24(s8)
  414014:	1000ffa9 	b	413ebc <check_orientations+0x128>
  414018:	00000000 	nop
  41401c:	8fc2001c 	lw	v0,28(s8)
  414020:	00000000 	nop
  414024:	8c420028 	lw	v0,40(v0)
  414028:	00000000 	nop
  41402c:	afc2001c 	sw	v0,28(s8)
  414030:	1000ff90 	b	413e74 <check_orientations+0xe0>
  414034:	00000000 	nop
			}
		    }
		}
	    }
	}
    }
}
  414038:	03c0e821 	move	sp,s8
  41403c:	8fbf0030 	lw	ra,48(sp)
  414040:	8fbe002c 	lw	s8,44(sp)
  414044:	27bd0038 	addiu	sp,sp,56
  414048:	03e00008 	jr	ra
  41404c:	00000000 	nop

00414050 <default_end>:
  414050:	3c1c0fc0 	lui	gp,0xfc0
  414054:	279c8920 	addiu	gp,gp,-30432
  414058:	0399e021 	addu	gp,gp,t9
  41405c:	27bdffc0 	addiu	sp,sp,-64
  414060:	afbc0010 	sw	gp,16(sp)
  414064:	afbf0038 	sw	ra,56(sp)
  414068:	afbe0034 	sw	s8,52(sp)
  41406c:	afbc0030 	sw	gp,48(sp)
  414070:	03a0f021 	move	s8,sp
  414074:	afc40040 	sw	a0,64(s8)
  414078:	afc50044 	sw	a1,68(s8)

static err_t
default_end(struct end *e, ip_address *dflt_nexthop)
{
    err_t ugh = NULL;
  41407c:	afc00018 	sw	zero,24(s8)
    const struct af_info *afi = aftoinfo(addrtypeof(&e->host_addr));
  414080:	8fc20040 	lw	v0,64(s8)
  414084:	00000000 	nop
  414088:	24420028 	addiu	v0,v0,40
  41408c:	00402021 	move	a0,v0
  414090:	8f9985d4 	lw	t9,-31276(gp)
  414094:	00000000 	nop
  414098:	0320f809 	jalr	t9
  41409c:	00000000 	nop
  4140a0:	8fdc0010 	lw	gp,16(s8)
  4140a4:	00402021 	move	a0,v0
  4140a8:	8f998b94 	lw	t9,-29804(gp)
  4140ac:	00000000 	nop
  4140b0:	0320f809 	jalr	t9
  4140b4:	00000000 	nop
  4140b8:	8fdc0010 	lw	gp,16(s8)
  4140bc:	afc2001c 	sw	v0,28(s8)

    if (afi == NULL)
  4140c0:	8fc2001c 	lw	v0,28(s8)
  4140c4:	00000000 	nop
  4140c8:	14400006 	bnez	v0,4140e4 <default_end+0x94>
  4140cc:	00000000 	nop
	return "unknown address family in default_end";
  4140d0:	8f828020 	lw	v0,-32736(gp)
  4140d4:	00000000 	nop
  4140d8:	24425530 	addiu	v0,v0,21808
  4140dc:	1000006f 	b	41429c <default_end+0x24c>
  4140e0:	00000000 	nop

    /* default ID to IP (but only if not NO_IP -- WildCard) */
    if (e->id.kind == ID_NONE && !isanyaddr(&e->host_addr))
  4140e4:	8fc20040 	lw	v0,64(s8)
  4140e8:	00000000 	nop
  4140ec:	8c420000 	lw	v0,0(v0)
  4140f0:	00000000 	nop
  4140f4:	1440002d 	bnez	v0,4141ac <default_end+0x15c>
  4140f8:	00000000 	nop
  4140fc:	8fc20040 	lw	v0,64(s8)
  414100:	00000000 	nop
  414104:	24420028 	addiu	v0,v0,40
  414108:	00402021 	move	a0,v0
  41410c:	8f998628 	lw	t9,-31192(gp)
  414110:	00000000 	nop
  414114:	0320f809 	jalr	t9
  414118:	00000000 	nop
  41411c:	8fdc0010 	lw	gp,16(s8)
  414120:	14400022 	bnez	v0,4141ac <default_end+0x15c>
  414124:	00000000 	nop
    {
	e->id.kind = afi->id_addr;
  414128:	8fc2001c 	lw	v0,28(s8)
  41412c:	00000000 	nop
  414130:	90430014 	lbu	v1,20(v0)
  414134:	8fc20040 	lw	v0,64(s8)
  414138:	00000000 	nop
  41413c:	ac430000 	sw	v1,0(v0)
	e->id.ip_addr = e->host_addr;
  414140:	8fc40040 	lw	a0,64(s8)
  414144:	8fc30040 	lw	v1,64(s8)
  414148:	00000000 	nop
  41414c:	8c620028 	lw	v0,40(v1)
  414150:	00000000 	nop
  414154:	ac820004 	sw	v0,4(a0)
  414158:	8c62002c 	lw	v0,44(v1)
  41415c:	00000000 	nop
  414160:	ac820008 	sw	v0,8(a0)
  414164:	8c620030 	lw	v0,48(v1)
  414168:	00000000 	nop
  41416c:	ac82000c 	sw	v0,12(a0)
  414170:	8c620034 	lw	v0,52(v1)
  414174:	00000000 	nop
  414178:	ac820010 	sw	v0,16(a0)
  41417c:	8c620038 	lw	v0,56(v1)
  414180:	00000000 	nop
  414184:	ac820014 	sw	v0,20(a0)
  414188:	8c62003c 	lw	v0,60(v1)
  41418c:	00000000 	nop
  414190:	ac820018 	sw	v0,24(a0)
  414194:	8c620040 	lw	v0,64(v1)
  414198:	00000000 	nop
  41419c:	ac82001c 	sw	v0,28(a0)
	e->has_id_wildcards = FALSE;
  4141a0:	8fc20040 	lw	v0,64(s8)
  4141a4:	00000000 	nop
  4141a8:	ac40008c 	sw	zero,140(v0)
    }

    /* default nexthop to other side */
    if (isanyaddr(&e->host_nexthop))
  4141ac:	8fc20040 	lw	v0,64(s8)
  4141b0:	00000000 	nop
  4141b4:	24420044 	addiu	v0,v0,68
  4141b8:	00402021 	move	a0,v0
  4141bc:	8f998628 	lw	t9,-31192(gp)
  4141c0:	00000000 	nop
  4141c4:	0320f809 	jalr	t9
  4141c8:	00000000 	nop
  4141cc:	8fdc0010 	lw	gp,16(s8)
  4141d0:	10400019 	beqz	v0,414238 <default_end+0x1e8>
  4141d4:	00000000 	nop
	e->host_nexthop = *dflt_nexthop;
  4141d8:	8fc40040 	lw	a0,64(s8)
  4141dc:	8fc30044 	lw	v1,68(s8)
  4141e0:	00000000 	nop
  4141e4:	8c620000 	lw	v0,0(v1)
  4141e8:	00000000 	nop
  4141ec:	ac820044 	sw	v0,68(a0)
  4141f0:	8c620004 	lw	v0,4(v1)
  4141f4:	00000000 	nop
  4141f8:	ac820048 	sw	v0,72(a0)
  4141fc:	8c620008 	lw	v0,8(v1)
  414200:	00000000 	nop
  414204:	ac82004c 	sw	v0,76(a0)
  414208:	8c62000c 	lw	v0,12(v1)
  41420c:	00000000 	nop
  414210:	ac820050 	sw	v0,80(a0)
  414214:	8c620010 	lw	v0,16(v1)
  414218:	00000000 	nop
  41421c:	ac820054 	sw	v0,84(a0)
  414220:	8c620014 	lw	v0,20(v1)
  414224:	00000000 	nop
  414228:	ac820058 	sw	v0,88(a0)
  41422c:	8c620018 	lw	v0,24(v1)
  414230:	00000000 	nop
  414234:	ac82005c 	sw	v0,92(a0)

    /* default client to subnet containing only self
     * XXX This may mean that the client's address family doesn't match
     * tunnel_addr_family.
     */
    if (!e->has_client)
  414238:	8fc20040 	lw	v0,64(s8)
  41423c:	00000000 	nop
  414240:	8c420084 	lw	v0,132(v0)
  414244:	00000000 	nop
  414248:	14400012 	bnez	v0,414294 <default_end+0x244>
  41424c:	00000000 	nop
	ugh = initsubnet(&e->host_addr, afi->mask_cnt, '0', &e->client);
  414250:	8fc20040 	lw	v0,64(s8)
  414254:	00000000 	nop
  414258:	24430028 	addiu	v1,v0,40
  41425c:	8fc20040 	lw	v0,64(s8)
  414260:	00000000 	nop
  414264:	24470060 	addiu	a3,v0,96
  414268:	00602021 	move	a0,v1
  41426c:	8fc2001c 	lw	v0,28(s8)
  414270:	00000000 	nop
  414274:	8c450010 	lw	a1,16(v0)
  414278:	24060030 	li	a2,48
  41427c:	8f998844 	lw	t9,-30652(gp)
  414280:	00000000 	nop
  414284:	0320f809 	jalr	t9
  414288:	00000000 	nop
  41428c:	8fdc0010 	lw	gp,16(s8)
  414290:	afc20018 	sw	v0,24(s8)

    return ugh;
  414294:	8fc20018 	lw	v0,24(s8)
  414298:	00000000 	nop
}
  41429c:	03c0e821 	move	sp,s8
  4142a0:	8fbf0038 	lw	ra,56(sp)
  4142a4:	8fbe0034 	lw	s8,52(sp)
  4142a8:	27bd0040 	addiu	sp,sp,64
  4142ac:	03e00008 	jr	ra
  4142b0:	00000000 	nop

004142b4 <format_end>:
  4142b4:	3c1c0fc0 	lui	gp,0xfc0
  4142b8:	279c86bc 	addiu	gp,gp,-31044
  4142bc:	0399e021 	addu	gp,gp,t9
  4142c0:	27bdfc58 	addiu	sp,sp,-936
  4142c4:	afbc0038 	sw	gp,56(sp)
  4142c8:	afbf03a0 	sw	ra,928(sp)
  4142cc:	afbe039c 	sw	s8,924(sp)
  4142d0:	afbc0398 	sw	gp,920(sp)
  4142d4:	03a0f021 	move	s8,sp
  4142d8:	afc403a8 	sw	a0,936(s8)
  4142dc:	afc503ac 	sw	a1,940(s8)
  4142e0:	afc603b0 	sw	a2,944(s8)
  4142e4:	afc703b4 	sw	a3,948(s8)

/* format the topology of an end, leaving out defaults
 * Note: if that==NULL, skip nexthop
 */
size_t
format_end(char *buf, size_t buf_len
, const struct end *this, const struct end *that, bool is_left)
{
    char client[SUBNETTOT_BUF];
    const char *client_sep = "";
  4142e8:	8f828020 	lw	v0,-32736(gp)
  4142ec:	00000000 	nop
  4142f0:	24425558 	addiu	v0,v0,21848
  4142f4:	00000000 	nop
  4142f8:	afc20090 	sw	v0,144(s8)
    char protoport[sizeof(":255/65535")];
    char host[ADDRTOT_BUF];
    char host_port[sizeof(":65535")];
    char host_id[IDTOA_BUF + 2];
    char hop[ADDRTOT_BUF];
    const char *hop_sep = "";
  4142fc:	afc20358 	sw	v0,856(s8)
    const char *open_brackets  = "";
  414300:	afc2035c 	sw	v0,860(s8)
    const char *close_brackets = "";
  414304:	afc20360 	sw	v0,864(s8)
    ip_address net;
    bool wc_client = this->has_client
  414308:	afc00390 	sw	zero,912(s8)
  41430c:	8fc203b0 	lw	v0,944(s8)
  414310:	00000000 	nop
  414314:	8c420084 	lw	v0,132(v0)
  414318:	00000000 	nop
  41431c:	10400020 	beqz	v0,4143a0 <format_end+0xec>
  414320:	00000000 	nop
  414324:	8fc203b0 	lw	v0,944(s8)
  414328:	00000000 	nop
  41432c:	24420060 	addiu	v0,v0,96
  414330:	00402021 	move	a0,v0
  414334:	8f99851c 	lw	t9,-31460(gp)
  414338:	00000000 	nop
  41433c:	0320f809 	jalr	t9
  414340:	00000000 	nop
  414344:	8fdc0038 	lw	gp,56(s8)
  414348:	10400015 	beqz	v0,4143a0 <format_end+0xec>
  41434c:	00000000 	nop
  414350:	8fc203b0 	lw	v0,944(s8)
  414354:	00000000 	nop
  414358:	24420060 	addiu	v0,v0,96
  41435c:	00402021 	move	a0,v0
  414360:	27c50368 	addiu	a1,s8,872
  414364:	8f9985bc 	lw	t9,-31300(gp)
  414368:	00000000 	nop
  41436c:	0320f809 	jalr	t9
  414370:	00000000 	nop
  414374:	8fdc0038 	lw	gp,56(s8)
  414378:	27c40368 	addiu	a0,s8,872
  41437c:	8f998628 	lw	t9,-31192(gp)
  414380:	00000000 	nop
  414384:	0320f809 	jalr	t9
  414388:	00000000 	nop
  41438c:	8fdc0038 	lw	gp,56(s8)
  414390:	10400003 	beqz	v0,4143a0 <format_end+0xec>
  414394:	00000000 	nop
  414398:	24020001 	li	v0,1
  41439c:	afc20390 	sw	v0,912(s8)
  4143a0:	8fc30390 	lw	v1,912(s8)
  4143a4:	00000000 	nop
  4143a8:	afc30388 	sw	v1,904(s8)
	&& subnetishost(&this->client)
	&& (networkof(&this->client, &net), isanyaddr(&net));

    client[0] = '\0';
  4143ac:	a3c00040 	sb	zero,64(s8)

#ifdef VIRTUAL_IP
    if (is_virtual_end(this) && isanyaddr(&this->host_addr)) {
  4143b0:	8fc403b0 	lw	a0,944(s8)
  4143b4:	8f998a8c 	lw	t9,-30068(gp)
  4143b8:	00000000 	nop
  4143bc:	0320f809 	jalr	t9
  4143c0:	00000000 	nop
  4143c4:	8fdc0038 	lw	gp,56(s8)
  4143c8:	10400018 	beqz	v0,41442c <format_end+0x178>
  4143cc:	00000000 	nop
  4143d0:	8fc203b0 	lw	v0,944(s8)
  4143d4:	00000000 	nop
  4143d8:	24420028 	addiu	v0,v0,40
  4143dc:	00402021 	move	a0,v0
  4143e0:	8f998628 	lw	t9,-31192(gp)
  4143e4:	00000000 	nop
  4143e8:	0320f809 	jalr	t9
  4143ec:	00000000 	nop
  4143f0:	8fdc0038 	lw	gp,56(s8)
  4143f4:	1040000d 	beqz	v0,41442c <format_end+0x178>
  4143f8:	00000000 	nop
	snprintf(host, sizeof(host), "%%virtual");
  4143fc:	27c400a8 	addiu	a0,s8,168
  414400:	24050049 	li	a1,73
  414404:	8f868020 	lw	a2,-32736(gp)
  414408:	00000000 	nop
  41440c:	24c6555c 	addiu	a2,a2,21852
  414410:	8f998b38 	lw	t9,-29896(gp)
  414414:	00000000 	nop
  414418:	0320f809 	jalr	t9
  41441c:	00000000 	nop
  414420:	8fdc0038 	lw	gp,56(s8)
  414424:	10000077 	b	414604 <format_end+0x350>
  414428:	00000000 	nop
    }
    else
#endif
    if (isanyaddr(&this->host_addr) && wc_client)
  41442c:	8fc203b0 	lw	v0,944(s8)
  414430:	00000000 	nop
  414434:	24420028 	addiu	v0,v0,40
  414438:	00402021 	move	a0,v0
  41443c:	8f998628 	lw	t9,-31192(gp)
  414440:	00000000 	nop
  414444:	0320f809 	jalr	t9
  414448:	00000000 	nop
  41444c:	8fdc0038 	lw	gp,56(s8)
  414450:	10400011 	beqz	v0,414498 <format_end+0x1e4>
  414454:	00000000 	nop
  414458:	8fc20388 	lw	v0,904(s8)
  41445c:	00000000 	nop
  414460:	1040000d 	beqz	v0,414498 <format_end+0x1e4>
  414464:	00000000 	nop
    {
	/* %opportunistic subsumes client and host */
	snprintf(host, sizeof(host), "%%opportunistic");
  414468:	27c400a8 	addiu	a0,s8,168
  41446c:	24050049 	li	a1,73
  414470:	8f868020 	lw	a2,-32736(gp)
  414474:	00000000 	nop
  414478:	24c65568 	addiu	a2,a2,21864
  41447c:	8f998b38 	lw	t9,-29896(gp)
  414480:	00000000 	nop
  414484:	0320f809 	jalr	t9
  414488:	00000000 	nop
  41448c:	8fdc0038 	lw	gp,56(s8)
  414490:	1000005c 	b	414604 <format_end+0x350>
  414494:	00000000 	nop
    }
    else
    {
	/* [client===] */
	if (this->has_client)
  414498:	8fc203b0 	lw	v0,944(s8)
  41449c:	00000000 	nop
  4144a0:	8c420084 	lw	v0,132(v0)
  4144a4:	00000000 	nop
  4144a8:	10400022 	beqz	v0,414534 <format_end+0x280>
  4144ac:	00000000 	nop
	{
	    if (wc_client)
  4144b0:	8fc20388 	lw	v0,904(s8)
  4144b4:	00000000 	nop
  4144b8:	1040000c 	beqz	v0,4144ec <format_end+0x238>
  4144bc:	00000000 	nop
		strcpy(client, "?");
  4144c0:	27c40040 	addiu	a0,s8,64
  4144c4:	8f858020 	lw	a1,-32736(gp)
  4144c8:	00000000 	nop
  4144cc:	24a55578 	addiu	a1,a1,21880
  4144d0:	8f998c58 	lw	t9,-29608(gp)
  4144d4:	00000000 	nop
  4144d8:	0320f809 	jalr	t9
  4144dc:	00000000 	nop
  4144e0:	8fdc0038 	lw	gp,56(s8)
  4144e4:	1000000e 	b	414520 <format_end+0x26c>
  4144e8:	00000000 	nop
	    else
		subnettot(&this->client, 0, client, sizeof(client));
  4144ec:	8fc203b0 	lw	v0,944(s8)
  4144f0:	00000000 	nop
  4144f4:	24420060 	addiu	v0,v0,96
  4144f8:	00402021 	move	a0,v0
  4144fc:	00002821 	move	a1,zero
  414500:	27c60040 	addiu	a2,s8,64
  414504:	2407004d 	li	a3,77
  414508:	8f998bbc 	lw	t9,-29764(gp)
  41450c:	00000000 	nop
  414510:	0320f809 	jalr	t9
  414514:	00000000 	nop
  414518:	8fdc0038 	lw	gp,56(s8)
  41451c:	00000000 	nop
	    client_sep = "===";
  414520:	8f828020 	lw	v0,-32736(gp)
  414524:	00000000 	nop
  414528:	2442557c 	addiu	v0,v0,21884
  41452c:	00000000 	nop
  414530:	afc20090 	sw	v0,144(s8)
	}

	/* {client_subnet_wildcard} */
	if (this->has_client_wildcard)
  414534:	8fc203b0 	lw	v0,944(s8)
  414538:	00000000 	nop
  41453c:	8c420088 	lw	v0,136(v0)
  414540:	00000000 	nop
  414544:	1040000b 	beqz	v0,414574 <format_end+0x2c0>
  414548:	00000000 	nop
	{
	    open_brackets  = "{";
  41454c:	8f828020 	lw	v0,-32736(gp)
  414550:	00000000 	nop
  414554:	24425580 	addiu	v0,v0,21888
  414558:	00000000 	nop
  41455c:	afc2035c 	sw	v0,860(s8)
	    close_brackets = "}";
  414560:	8f828020 	lw	v0,-32736(gp)
  414564:	00000000 	nop
  414568:	24425584 	addiu	v0,v0,21892
  41456c:	00000000 	nop
  414570:	afc20360 	sw	v0,864(s8)
	}

	/* host */
	if (isanyaddr(&this->host_addr))
  414574:	8fc203b0 	lw	v0,944(s8)
  414578:	00000000 	nop
  41457c:	24420028 	addiu	v0,v0,40
  414580:	00402021 	move	a0,v0
  414584:	8f998628 	lw	t9,-31192(gp)
  414588:	00000000 	nop
  41458c:	0320f809 	jalr	t9
  414590:	00000000 	nop
  414594:	8fdc0038 	lw	gp,56(s8)
  414598:	1040000d 	beqz	v0,4145d0 <format_end+0x31c>
  41459c:	00000000 	nop
	    snprintf(host, sizeof(host), "%%any");
  4145a0:	27c400a8 	addiu	a0,s8,168
  4145a4:	24050049 	li	a1,73
  4145a8:	8f868020 	lw	a2,-32736(gp)
  4145ac:	00000000 	nop
  4145b0:	24c65588 	addiu	a2,a2,21896
  4145b4:	8f998b38 	lw	t9,-29896(gp)
  4145b8:	00000000 	nop
  4145bc:	0320f809 	jalr	t9
  4145c0:	00000000 	nop
  4145c4:	8fdc0038 	lw	gp,56(s8)
  4145c8:	1000000e 	b	414604 <format_end+0x350>
  4145cc:	00000000 	nop
	else
	    addrtot(&this->host_addr, 0, host, sizeof(host));
  4145d0:	8fc203b0 	lw	v0,944(s8)
  4145d4:	00000000 	nop
  4145d8:	24420028 	addiu	v0,v0,40
  4145dc:	00402021 	move	a0,v0
  4145e0:	00002821 	move	a1,zero
  4145e4:	27c600a8 	addiu	a2,s8,168
  4145e8:	24070049 	li	a3,73
  4145ec:	8f998b50 	lw	t9,-29872(gp)
  4145f0:	00000000 	nop
  4145f4:	0320f809 	jalr	t9
  4145f8:	00000000 	nop
  4145fc:	8fdc0038 	lw	gp,56(s8)
  414600:	00000000 	nop
    }
    host_port[0] = '\0';
  414604:	a3c000f8 	sb	zero,248(s8)
    if (this->host_port != IKE_UDP_PORT)
  414608:	8fc203b0 	lw	v0,944(s8)
  41460c:	00000000 	nop
  414610:	94430098 	lhu	v1,152(v0)
  414614:	240201f4 	li	v0,500
  414618:	10620010 	beq	v1,v0,41465c <format_end+0x3a8>
  41461c:	00000000 	nop
	snprintf(host_port, sizeof(host_port), ":%u"
  414620:	8fc203b0 	lw	v0,944(s8)
  414624:	00000000 	nop
  414628:	94420098 	lhu	v0,152(v0)
  41462c:	27c400f8 	addiu	a0,s8,248
  414630:	24050007 	li	a1,7
  414634:	8f868020 	lw	a2,-32736(gp)
  414638:	00000000 	nop
  41463c:	24c65590 	addiu	a2,a2,21904
  414640:	00403821 	move	a3,v0
  414644:	8f998b38 	lw	t9,-29896(gp)
  414648:	00000000 	nop
  41464c:	0320f809 	jalr	t9
  414650:	00000000 	nop
  414654:	8fdc0038 	lw	gp,56(s8)
  414658:	00000000 	nop
	    , this->host_port);

    /* payload portocol and port */
    protoport[0] = '\0';
  41465c:	a3c00098 	sb	zero,152(s8)
    if (this->port || this->protocol)
  414660:	8fc203b0 	lw	v0,944(s8)
  414664:	00000000 	nop
  414668:	9442009a 	lhu	v0,154(v0)
  41466c:	00000000 	nop
  414670:	14400009 	bnez	v0,414698 <format_end+0x3e4>
  414674:	00000000 	nop
  414678:	8fc203b0 	lw	v0,944(s8)
  41467c:	00000000 	nop
  414680:	9042009c 	lbu	v0,156(v0)
  414684:	00000000 	nop
  414688:	14400003 	bnez	v0,414698 <format_end+0x3e4>
  41468c:	00000000 	nop
  414690:	10000015 	b	4146e8 <format_end+0x434>
  414694:	00000000 	nop
	snprintf(protoport, sizeof(protoport), ":%u/%u",
  414698:	8fc203b0 	lw	v0,944(s8)
  41469c:	00000000 	nop
  4146a0:	9043009c 	lbu	v1,156(v0)
  4146a4:	8fc203b0 	lw	v0,944(s8)
  4146a8:	00000000 	nop
  4146ac:	9442009a 	lhu	v0,154(v0)
  4146b0:	00000000 	nop
  4146b4:	afa20010 	sw	v0,16(sp)
  4146b8:	27c40098 	addiu	a0,s8,152
  4146bc:	2405000b 	li	a1,11
  4146c0:	8f868020 	lw	a2,-32736(gp)
  4146c4:	00000000 	nop
  4146c8:	24c65594 	addiu	a2,a2,21908
  4146cc:	00603821 	move	a3,v1
  4146d0:	8f998b38 	lw	t9,-29896(gp)
  4146d4:	00000000 	nop
  4146d8:	0320f809 	jalr	t9
  4146dc:	00000000 	nop
  4146e0:	8fdc0038 	lw	gp,56(s8)
  4146e4:	00000000 	nop
	    this->protocol, this->port);

    /* id, if different from host */
    host_id[0] = '\0';
  4146e8:	a3c00100 	sb	zero,256(s8)
    if (!(this->id.kind == ID_NONE
    || (id_is_ipaddr(&this->id) && sameaddr(&this->id.ip_addr, &this->host_addr))))
  4146ec:	8fc203b0 	lw	v0,944(s8)
  4146f0:	00000000 	nop
  4146f4:	8c420000 	lw	v0,0(v0)
  4146f8:	00000000 	nop
  4146fc:	10400044 	beqz	v0,414810 <format_end+0x55c>
  414700:	00000000 	nop
  414704:	8fc203b0 	lw	v0,944(s8)
  414708:	00000000 	nop
  41470c:	8c430000 	lw	v1,0(v0)
  414710:	24020001 	li	v0,1
  414714:	10620007 	beq	v1,v0,414734 <format_end+0x480>
  414718:	00000000 	nop
  41471c:	8fc203b0 	lw	v0,944(s8)
  414720:	00000000 	nop
  414724:	8c430000 	lw	v1,0(v0)
  414728:	24020005 	li	v0,5
  41472c:	14620010 	bne	v1,v0,414770 <format_end+0x4bc>
  414730:	00000000 	nop
  414734:	8fc203b0 	lw	v0,944(s8)
  414738:	00000000 	nop
  41473c:	24430004 	addiu	v1,v0,4
  414740:	8fc203b0 	lw	v0,944(s8)
  414744:	00000000 	nop
  414748:	24420028 	addiu	v0,v0,40
  41474c:	00602021 	move	a0,v1
  414750:	00402821 	move	a1,v0
  414754:	8f998928 	lw	t9,-30424(gp)
  414758:	00000000 	nop
  41475c:	0320f809 	jalr	t9
  414760:	00000000 	nop
  414764:	8fdc0038 	lw	gp,56(s8)
  414768:	14400029 	bnez	v0,414810 <format_end+0x55c>
  41476c:	00000000 	nop
    {
	int len = idtoa(&this->id, host_id+1, sizeof(host_id)-2);
  414770:	27c20100 	addiu	v0,s8,256
  414774:	24420001 	addiu	v0,v0,1
  414778:	8fc403b0 	lw	a0,944(s8)
  41477c:	00402821 	move	a1,v0
  414780:	24060200 	li	a2,512
  414784:	8f998798 	lw	t9,-30824(gp)
  414788:	00000000 	nop
  41478c:	0320f809 	jalr	t9
  414790:	00000000 	nop
  414794:	8fdc0038 	lw	gp,56(s8)
  414798:	afc2038c 	sw	v0,908(s8)

	host_id[0] = '[';
  41479c:	2402005b 	li	v0,91
  4147a0:	a3c20100 	sb	v0,256(s8)
	strcpy(&host_id[len < 0? (ptrdiff_t)sizeof(host_id)-2 : 1 + len], "]");
  4147a4:	8fc2038c 	lw	v0,908(s8)
  4147a8:	00000000 	nop
  4147ac:	0440000b 	bltz	v0,4147dc <format_end+0x528>
  4147b0:	00000000 	nop
  4147b4:	8fc2038c 	lw	v0,908(s8)
  4147b8:	27c30100 	addiu	v1,s8,256
  4147bc:	00621821 	addu	v1,v1,v0
  4147c0:	afc30394 	sw	v1,916(s8)
  4147c4:	8fc20394 	lw	v0,916(s8)
  4147c8:	00000000 	nop
  4147cc:	24420001 	addiu	v0,v0,1
  4147d0:	afc20394 	sw	v0,916(s8)
  4147d4:	10000004 	b	4147e8 <format_end+0x534>
  4147d8:	00000000 	nop
  4147dc:	27c30100 	addiu	v1,s8,256
  4147e0:	24630200 	addiu	v1,v1,512
  4147e4:	afc30394 	sw	v1,916(s8)
  4147e8:	8fc40394 	lw	a0,916(s8)
  4147ec:	8f858020 	lw	a1,-32736(gp)
  4147f0:	00000000 	nop
  4147f4:	24a5559c 	addiu	a1,a1,21916
  4147f8:	8f998c58 	lw	t9,-29608(gp)
  4147fc:	00000000 	nop
  414800:	0320f809 	jalr	t9
  414804:	00000000 	nop
  414808:	8fdc0038 	lw	gp,56(s8)
  41480c:	00000000 	nop
    }

    /* [---hop] */
    hop[0] = '\0';
  414810:	a3c00308 	sb	zero,776(s8)
    hop_sep = "";
  414814:	8f828020 	lw	v0,-32736(gp)
  414818:	00000000 	nop
  41481c:	24425558 	addiu	v0,v0,21848
  414820:	00000000 	nop
  414824:	afc20358 	sw	v0,856(s8)
    if (that != NULL && !sameaddr(&this->host_nexthop, &that->host_addr))
  414828:	8fc203b4 	lw	v0,948(s8)
  41482c:	00000000 	nop
  414830:	10400022 	beqz	v0,4148bc <format_end+0x608>
  414834:	00000000 	nop
  414838:	8fc203b0 	lw	v0,944(s8)
  41483c:	00000000 	nop
  414840:	24430044 	addiu	v1,v0,68
  414844:	8fc203b4 	lw	v0,948(s8)
  414848:	00000000 	nop
  41484c:	24420028 	addiu	v0,v0,40
  414850:	00602021 	move	a0,v1
  414854:	00402821 	move	a1,v0
  414858:	8f998928 	lw	t9,-30424(gp)
  41485c:	00000000 	nop
  414860:	0320f809 	jalr	t9
  414864:	00000000 	nop
  414868:	8fdc0038 	lw	gp,56(s8)
  41486c:	14400013 	bnez	v0,4148bc <format_end+0x608>
  414870:	00000000 	nop
    {
	addrtot(&this->host_nexthop, 0, hop, sizeof(hop));
  414874:	8fc203b0 	lw	v0,944(s8)
  414878:	00000000 	nop
  41487c:	24420044 	addiu	v0,v0,68
  414880:	00402021 	move	a0,v0
  414884:	00002821 	move	a1,zero
  414888:	27c60308 	addiu	a2,s8,776
  41488c:	24070049 	li	a3,73
  414890:	8f998b50 	lw	t9,-29872(gp)
  414894:	00000000 	nop
  414898:	0320f809 	jalr	t9
  41489c:	00000000 	nop
  4148a0:	8fdc0038 	lw	gp,56(s8)
  4148a4:	00000000 	nop
	hop_sep = "---";
  4148a8:	8f828020 	lw	v0,-32736(gp)
  4148ac:	00000000 	nop
  4148b0:	244255a0 	addiu	v0,v0,21920
  4148b4:	00000000 	nop
  4148b8:	afc20358 	sw	v0,856(s8)
    }

    if (is_left)
  4148bc:	8fc203b8 	lw	v0,952(s8)
  4148c0:	00000000 	nop
  4148c4:	10400023 	beqz	v0,414954 <format_end+0x6a0>
  4148c8:	00000000 	nop
	snprintf(buf, buf_len, "%s%s%s%s%s%s%s%s%s%s"
  4148cc:	27c20040 	addiu	v0,s8,64
  4148d0:	afa20010 	sw	v0,16(sp)
  4148d4:	8fc20360 	lw	v0,864(s8)
  4148d8:	00000000 	nop
  4148dc:	afa20014 	sw	v0,20(sp)
  4148e0:	8fc20090 	lw	v0,144(s8)
  4148e4:	00000000 	nop
  4148e8:	afa20018 	sw	v0,24(sp)
  4148ec:	27c200a8 	addiu	v0,s8,168
  4148f0:	afa2001c 	sw	v0,28(sp)
  4148f4:	27c200f8 	addiu	v0,s8,248
  4148f8:	afa20020 	sw	v0,32(sp)
  4148fc:	27c20100 	addiu	v0,s8,256
  414900:	afa20024 	sw	v0,36(sp)
  414904:	27c20098 	addiu	v0,s8,152
  414908:	afa20028 	sw	v0,40(sp)
  41490c:	8fc20358 	lw	v0,856(s8)
  414910:	00000000 	nop
  414914:	afa2002c 	sw	v0,44(sp)
  414918:	27c20308 	addiu	v0,s8,776
  41491c:	afa20030 	sw	v0,48(sp)
  414920:	8fc403a8 	lw	a0,936(s8)
  414924:	8fc503ac 	lw	a1,940(s8)
  414928:	8f868020 	lw	a2,-32736(gp)
  41492c:	00000000 	nop
  414930:	24c655a4 	addiu	a2,a2,21924
  414934:	8fc7035c 	lw	a3,860(s8)
  414938:	8f998b38 	lw	t9,-29896(gp)
  41493c:	00000000 	nop
  414940:	0320f809 	jalr	t9
  414944:	00000000 	nop
  414948:	8fdc0038 	lw	gp,56(s8)
  41494c:	10000023 	b	4149dc <format_end+0x728>
  414950:	00000000 	nop
	    , open_brackets, client, close_brackets
	    , client_sep, host, host_port, host_id
	    , protoport, hop_sep, hop);
    else
	snprintf(buf, buf_len, "%s%s%s%s%s%s%s%s%s%s"
  414954:	8fc20358 	lw	v0,856(s8)
  414958:	00000000 	nop
  41495c:	afa20010 	sw	v0,16(sp)
  414960:	27c200a8 	addiu	v0,s8,168
  414964:	afa20014 	sw	v0,20(sp)
  414968:	27c200f8 	addiu	v0,s8,248
  41496c:	afa20018 	sw	v0,24(sp)
  414970:	27c20100 	addiu	v0,s8,256
  414974:	afa2001c 	sw	v0,28(sp)
  414978:	27c20098 	addiu	v0,s8,152
  41497c:	afa20020 	sw	v0,32(sp)
  414980:	8fc20090 	lw	v0,144(s8)
  414984:	00000000 	nop
  414988:	afa20024 	sw	v0,36(sp)
  41498c:	8fc2035c 	lw	v0,860(s8)
  414990:	00000000 	nop
  414994:	afa20028 	sw	v0,40(sp)
  414998:	27c20040 	addiu	v0,s8,64
  41499c:	afa2002c 	sw	v0,44(sp)
  4149a0:	8fc20360 	lw	v0,864(s8)
  4149a4:	00000000 	nop
  4149a8:	afa20030 	sw	v0,48(sp)
  4149ac:	8fc403a8 	lw	a0,936(s8)
  4149b0:	8fc503ac 	lw	a1,940(s8)
  4149b4:	8f868020 	lw	a2,-32736(gp)
  4149b8:	00000000 	nop
  4149bc:	24c655a4 	addiu	a2,a2,21924
  4149c0:	27c70308 	addiu	a3,s8,776
  4149c4:	8f998b38 	lw	t9,-29896(gp)
  4149c8:	00000000 	nop
  4149cc:	0320f809 	jalr	t9
  4149d0:	00000000 	nop
  4149d4:	8fdc0038 	lw	gp,56(s8)
  4149d8:	00000000 	nop
	    , hop, hop_sep, host, host_port, host_id
	    , protoport, client_sep
	    , open_brackets, client, close_brackets);
    return strlen(buf);
  4149dc:	8fc403a8 	lw	a0,936(s8)
  4149e0:	8f998188 	lw	t9,-32376(gp)
  4149e4:	00000000 	nop
  4149e8:	0320f809 	jalr	t9
  4149ec:	00000000 	nop
  4149f0:	8fdc0038 	lw	gp,56(s8)
  4149f4:	00000000 	nop
}
  4149f8:	03c0e821 	move	sp,s8
  4149fc:	8fbf03a0 	lw	ra,928(sp)
  414a00:	8fbe039c 	lw	s8,924(sp)
  414a04:	27bd03a8 	addiu	sp,sp,936
  414a08:	03e00008 	jr	ra
  414a0c:	00000000 	nop

00414a10 <unshare_connection_strings>:
  414a10:	3c1c0fbf 	lui	gp,0xfbf
  414a14:	279c7f60 	addiu	gp,gp,32608
  414a18:	0399e021 	addu	gp,gp,t9
  414a1c:	27bdffc0 	addiu	sp,sp,-64
  414a20:	afbc0010 	sw	gp,16(sp)
  414a24:	afbf003c 	sw	ra,60(sp)
  414a28:	afbe0038 	sw	s8,56(sp)
  414a2c:	afbc0034 	sw	gp,52(sp)
  414a30:	afb00030 	sw	s0,48(sp)
  414a34:	03a0f021 	move	s8,sp
  414a38:	afc40040 	sw	a0,64(s8)

static void
unshare_connection_strings(struct connection *c)
{
    c->name = clone_str(c->name, "connection name");
  414a3c:	8fc20040 	lw	v0,64(s8)
  414a40:	00000000 	nop
  414a44:	afc20018 	sw	v0,24(s8)
  414a48:	8fc20040 	lw	v0,64(s8)
  414a4c:	00000000 	nop
  414a50:	8c420000 	lw	v0,0(v0)
  414a54:	00000000 	nop
  414a58:	10400019 	beqz	v0,414ac0 <unshare_connection_strings+0xb0>
  414a5c:	00000000 	nop
  414a60:	8fc20040 	lw	v0,64(s8)
  414a64:	00000000 	nop
  414a68:	8c440000 	lw	a0,0(v0)
  414a6c:	8f998188 	lw	t9,-32376(gp)
  414a70:	00000000 	nop
  414a74:	0320f809 	jalr	t9
  414a78:	00000000 	nop
  414a7c:	8fdc0010 	lw	gp,16(s8)
  414a80:	24430001 	addiu	v1,v0,1
  414a84:	8fc20040 	lw	v0,64(s8)
  414a88:	00000000 	nop
  414a8c:	8c440000 	lw	a0,0(v0)
  414a90:	00602821 	move	a1,v1
  414a94:	8f868020 	lw	a2,-32736(gp)
  414a98:	00000000 	nop
  414a9c:	24c655bc 	addiu	a2,a2,21948
  414aa0:	8f998c04 	lw	t9,-29692(gp)
  414aa4:	00000000 	nop
  414aa8:	0320f809 	jalr	t9
  414aac:	00000000 	nop
  414ab0:	8fdc0010 	lw	gp,16(s8)
  414ab4:	afc2001c 	sw	v0,28(s8)
  414ab8:	10000002 	b	414ac4 <unshare_connection_strings+0xb4>
  414abc:	00000000 	nop
  414ac0:	afc0001c 	sw	zero,28(s8)
  414ac4:	8fc2001c 	lw	v0,28(s8)
  414ac8:	8fc30018 	lw	v1,24(s8)
  414acc:	00000000 	nop
  414ad0:	ac620000 	sw	v0,0(v1)

    unshare_id_content(&c->this.id);
  414ad4:	8fc20040 	lw	v0,64(s8)
  414ad8:	00000000 	nop
  414adc:	24420030 	addiu	v0,v0,48
  414ae0:	00402021 	move	a0,v0
  414ae4:	8f99847c 	lw	t9,-31620(gp)
  414ae8:	00000000 	nop
  414aec:	0320f809 	jalr	t9
  414af0:	00000000 	nop
  414af4:	8fdc0010 	lw	gp,16(s8)
  414af8:	00000000 	nop
    c->this.updown = clone_str(c->this.updown, "updown");
  414afc:	8fc30040 	lw	v1,64(s8)
  414b00:	00000000 	nop
  414b04:	afc30020 	sw	v1,32(s8)
  414b08:	8fc20040 	lw	v0,64(s8)
  414b0c:	00000000 	nop
  414b10:	8c4200c4 	lw	v0,196(v0)
  414b14:	00000000 	nop
  414b18:	10400019 	beqz	v0,414b80 <unshare_connection_strings+0x170>
  414b1c:	00000000 	nop
  414b20:	8fc20040 	lw	v0,64(s8)
  414b24:	00000000 	nop
  414b28:	8c4400c4 	lw	a0,196(v0)
  414b2c:	8f998188 	lw	t9,-32376(gp)
  414b30:	00000000 	nop
  414b34:	0320f809 	jalr	t9
  414b38:	00000000 	nop
  414b3c:	8fdc0010 	lw	gp,16(s8)
  414b40:	24430001 	addiu	v1,v0,1
  414b44:	8fc20040 	lw	v0,64(s8)
  414b48:	00000000 	nop
  414b4c:	8c4400c4 	lw	a0,196(v0)
  414b50:	00602821 	move	a1,v1
  414b54:	8f868020 	lw	a2,-32736(gp)
  414b58:	00000000 	nop
  414b5c:	24c655cc 	addiu	a2,a2,21964
  414b60:	8f998c04 	lw	t9,-29692(gp)
  414b64:	00000000 	nop
  414b68:	0320f809 	jalr	t9
  414b6c:	00000000 	nop
  414b70:	8fdc0010 	lw	gp,16(s8)
  414b74:	afc20024 	sw	v0,36(s8)
  414b78:	10000002 	b	414b84 <unshare_connection_strings+0x174>
  414b7c:	00000000 	nop
  414b80:	afc00024 	sw	zero,36(s8)
  414b84:	8fc30024 	lw	v1,36(s8)
  414b88:	8fc20020 	lw	v0,32(s8)
  414b8c:	00000000 	nop
  414b90:	ac4300c4 	sw	v1,196(v0)
    share_x509cert(c->this.cert);
  414b94:	8fc20040 	lw	v0,64(s8)
  414b98:	00000000 	nop
  414b9c:	8c4400d0 	lw	a0,208(v0)
  414ba0:	8f9986b0 	lw	t9,-31056(gp)
  414ba4:	00000000 	nop
  414ba8:	0320f809 	jalr	t9
  414bac:	00000000 	nop
  414bb0:	8fdc0010 	lw	gp,16(s8)
  414bb4:	00000000 	nop
    if (c->this.ca.ptr != NULL)
  414bb8:	8fc20040 	lw	v0,64(s8)
  414bbc:	00000000 	nop
  414bc0:	8c4200d4 	lw	v0,212(v0)
  414bc4:	00000000 	nop
  414bc8:	10400014 	beqz	v0,414c1c <unshare_connection_strings+0x20c>
  414bcc:	00000000 	nop
	clonetochunk(c->this.ca, c->this.ca.ptr, c->this.ca.len, "ca string");
  414bd0:	8fd00040 	lw	s0,64(s8)
  414bd4:	8fc40040 	lw	a0,64(s8)
  414bd8:	8fc20040 	lw	v0,64(s8)
  414bdc:	00000000 	nop
  414be0:	8c4300d8 	lw	v1,216(v0)
  414be4:	8fc20040 	lw	v0,64(s8)
  414be8:	00000000 	nop
  414bec:	ac4300d8 	sw	v1,216(v0)
  414bf0:	8c8400d4 	lw	a0,212(a0)
  414bf4:	00602821 	move	a1,v1
  414bf8:	8f868020 	lw	a2,-32736(gp)
  414bfc:	00000000 	nop
  414c00:	24c655d4 	addiu	a2,a2,21972
  414c04:	8f998c04 	lw	t9,-29692(gp)
  414c08:	00000000 	nop
  414c0c:	0320f809 	jalr	t9
  414c10:	00000000 	nop
  414c14:	8fdc0010 	lw	gp,16(s8)
  414c18:	ae0200d4 	sw	v0,212(s0)

    unshare_id_content(&c->that.id);
  414c1c:	8fc20040 	lw	v0,64(s8)
  414c20:	00000000 	nop
  414c24:	244200e0 	addiu	v0,v0,224
  414c28:	00402021 	move	a0,v0
  414c2c:	8f99847c 	lw	t9,-31620(gp)
  414c30:	00000000 	nop
  414c34:	0320f809 	jalr	t9
  414c38:	00000000 	nop
  414c3c:	8fdc0010 	lw	gp,16(s8)
  414c40:	00000000 	nop
    c->that.updown = clone_str(c->that.updown, "updown");
  414c44:	8fc20040 	lw	v0,64(s8)
  414c48:	00000000 	nop
  414c4c:	afc20028 	sw	v0,40(s8)
  414c50:	8fc20040 	lw	v0,64(s8)
  414c54:	00000000 	nop
  414c58:	8c420174 	lw	v0,372(v0)
  414c5c:	00000000 	nop
  414c60:	10400019 	beqz	v0,414cc8 <unshare_connection_strings+0x2b8>
  414c64:	00000000 	nop
  414c68:	8fc20040 	lw	v0,64(s8)
  414c6c:	00000000 	nop
  414c70:	8c440174 	lw	a0,372(v0)
  414c74:	8f998188 	lw	t9,-32376(gp)
  414c78:	00000000 	nop
  414c7c:	0320f809 	jalr	t9
  414c80:	00000000 	nop
  414c84:	8fdc0010 	lw	gp,16(s8)
  414c88:	24430001 	addiu	v1,v0,1
  414c8c:	8fc20040 	lw	v0,64(s8)
  414c90:	00000000 	nop
  414c94:	8c440174 	lw	a0,372(v0)
  414c98:	00602821 	move	a1,v1
  414c9c:	8f868020 	lw	a2,-32736(gp)
  414ca0:	00000000 	nop
  414ca4:	24c655cc 	addiu	a2,a2,21964
  414ca8:	8f998c04 	lw	t9,-29692(gp)
  414cac:	00000000 	nop
  414cb0:	0320f809 	jalr	t9
  414cb4:	00000000 	nop
  414cb8:	8fdc0010 	lw	gp,16(s8)
  414cbc:	afc2002c 	sw	v0,44(s8)
  414cc0:	10000002 	b	414ccc <unshare_connection_strings+0x2bc>
  414cc4:	00000000 	nop
  414cc8:	afc0002c 	sw	zero,44(s8)
  414ccc:	8fc2002c 	lw	v0,44(s8)
  414cd0:	8fc30028 	lw	v1,40(s8)
  414cd4:	00000000 	nop
  414cd8:	ac620174 	sw	v0,372(v1)
    share_x509cert(c->that.cert);
  414cdc:	8fc20040 	lw	v0,64(s8)
  414ce0:	00000000 	nop
  414ce4:	8c440180 	lw	a0,384(v0)
  414ce8:	8f9986b0 	lw	t9,-31056(gp)
  414cec:	00000000 	nop
  414cf0:	0320f809 	jalr	t9
  414cf4:	00000000 	nop
  414cf8:	8fdc0010 	lw	gp,16(s8)
  414cfc:	00000000 	nop
    if (c->that.ca.ptr != NULL)
  414d00:	8fc20040 	lw	v0,64(s8)
  414d04:	00000000 	nop
  414d08:	8c420184 	lw	v0,388(v0)
  414d0c:	00000000 	nop
  414d10:	10400014 	beqz	v0,414d64 <unshare_connection_strings+0x354>
  414d14:	00000000 	nop
	clonetochunk(c->that.ca, c->that.ca.ptr, c->that.ca.len, "ca string");
  414d18:	8fd00040 	lw	s0,64(s8)
  414d1c:	8fc40040 	lw	a0,64(s8)
  414d20:	8fc20040 	lw	v0,64(s8)
  414d24:	00000000 	nop
  414d28:	8c430188 	lw	v1,392(v0)
  414d2c:	8fc20040 	lw	v0,64(s8)
  414d30:	00000000 	nop
  414d34:	ac430188 	sw	v1,392(v0)
  414d38:	8c840184 	lw	a0,388(a0)
  414d3c:	00602821 	move	a1,v1
  414d40:	8f868020 	lw	a2,-32736(gp)
  414d44:	00000000 	nop
  414d48:	24c655d4 	addiu	a2,a2,21972
  414d4c:	8f998c04 	lw	t9,-29692(gp)
  414d50:	00000000 	nop
  414d54:	0320f809 	jalr	t9
  414d58:	00000000 	nop
  414d5c:	8fdc0010 	lw	gp,16(s8)
  414d60:	ae020184 	sw	v0,388(s0)
}
  414d64:	03c0e821 	move	sp,s8
  414d68:	8fbf003c 	lw	ra,60(sp)
  414d6c:	8fbe0038 	lw	s8,56(sp)
  414d70:	8fb00030 	lw	s0,48(sp)
  414d74:	27bd0040 	addiu	sp,sp,64
  414d78:	03e00008 	jr	ra
  414d7c:	00000000 	nop

00414d80 <extract_end>:
  414d80:	3c1c0fbf 	lui	gp,0xfbf
  414d84:	279c7bf0 	addiu	gp,gp,31728
  414d88:	0399e021 	addu	gp,gp,t9
  414d8c:	27bdfd68 	addiu	sp,sp,-664
  414d90:	afbc0010 	sw	gp,16(sp)
  414d94:	afbf0294 	sw	ra,660(sp)
  414d98:	afbe0290 	sw	s8,656(sp)
  414d9c:	afbc028c 	sw	gp,652(sp)
  414da0:	afb00288 	sw	s0,648(sp)
  414da4:	03a0f021 	move	s8,sp
  414da8:	afc40298 	sw	a0,664(s8)
  414dac:	afc5029c 	sw	a1,668(s8)
  414db0:	afc602a0 	sw	a2,672(s8)

static bool
extract_end(struct end *dst, const struct whack_end *src, const char *which)
{
    bool same_ca = FALSE;
  414db4:	afc00018 	sw	zero,24(s8)

    /* decode id, if any */
    if (src->id == NULL)
  414db8:	8fc2029c 	lw	v0,668(s8)
  414dbc:	00000000 	nop
  414dc0:	8c420000 	lw	v0,0(v0)
  414dc4:	00000000 	nop
  414dc8:	14400006 	bnez	v0,414de4 <extract_end+0x64>
  414dcc:	00000000 	nop
    {
	dst->id.kind = ID_NONE;
  414dd0:	8fc20298 	lw	v0,664(s8)
  414dd4:	00000000 	nop
  414dd8:	ac400000 	sw	zero,0(v0)
  414ddc:	10000026 	b	414e78 <extract_end+0xf8>
  414de0:	00000000 	nop
    }
    else
    {
	err_t ugh = atoid(src->id, &dst->id);
  414de4:	8fc2029c 	lw	v0,668(s8)
  414de8:	00000000 	nop
  414dec:	8c440000 	lw	a0,0(v0)
  414df0:	8fc50298 	lw	a1,664(s8)
  414df4:	8f998adc 	lw	t9,-29988(gp)
  414df8:	00000000 	nop
  414dfc:	0320f809 	jalr	t9
  414e00:	00000000 	nop
  414e04:	8fdc0010 	lw	gp,16(s8)
  414e08:	afc2001c 	sw	v0,28(s8)

	if (ugh != NULL)
  414e0c:	8fc2001c 	lw	v0,28(s8)
  414e10:	00000000 	nop
  414e14:	10400018 	beqz	v0,414e78 <extract_end+0xf8>
  414e18:	00000000 	nop
	{
	    loglog(RC_BADID, "bad %s --id: %s (ignored)", which, ugh);
  414e1c:	2404001b 	li	a0,27
  414e20:	8f858020 	lw	a1,-32736(gp)
  414e24:	00000000 	nop
  414e28:	24a555e0 	addiu	a1,a1,21984
  414e2c:	8fc602a0 	lw	a2,672(s8)
  414e30:	8fc7001c 	lw	a3,28(s8)
  414e34:	8f998c48 	lw	t9,-29624(gp)
  414e38:	00000000 	nop
  414e3c:	0320f809 	jalr	t9
  414e40:	00000000 	nop
  414e44:	8fdc0010 	lw	gp,16(s8)
  414e48:	00000000 	nop
	    dst->id = empty_id;	/* ignore bad one */
  414e4c:	8fc20298 	lw	v0,664(s8)
  414e50:	00000000 	nop
  414e54:	00402021 	move	a0,v0
  414e58:	8f8582d8 	lw	a1,-32040(gp)
  414e5c:	24060028 	li	a2,40
  414e60:	8f998a30 	lw	t9,-30160(gp)
  414e64:	00000000 	nop
  414e68:	0320f809 	jalr	t9
  414e6c:	00000000 	nop
  414e70:	8fdc0010 	lw	gp,16(s8)
  414e74:	00000000 	nop
	}
    }

   dst->ca = empty_chunk;
  414e78:	8fc30298 	lw	v1,664(s8)
  414e7c:	8f828708 	lw	v0,-30968(gp)
  414e80:	00000000 	nop
  414e84:	8c420000 	lw	v0,0(v0)
  414e88:	00000000 	nop
  414e8c:	ac6200a4 	sw	v0,164(v1)
  414e90:	8f828708 	lw	v0,-30968(gp)
  414e94:	00000000 	nop
  414e98:	8c420004 	lw	v0,4(v0)
  414e9c:	00000000 	nop
  414ea0:	ac6200a8 	sw	v0,168(v1)

    /* decode CA distinguished name, if any */
    if (src->ca != NULL)
  414ea4:	8fc2029c 	lw	v0,668(s8)
  414ea8:	00000000 	nop
  414eac:	8c420008 	lw	v0,8(v0)
  414eb0:	00000000 	nop
  414eb4:	1040004f 	beqz	v0,414ff4 <extract_end+0x274>
  414eb8:	00000000 	nop
    {
	if streq(src->ca, "%same")
  414ebc:	8fc2029c 	lw	v0,668(s8)
  414ec0:	00000000 	nop
  414ec4:	8c440008 	lw	a0,8(v0)
  414ec8:	8f858020 	lw	a1,-32736(gp)
  414ecc:	00000000 	nop
  414ed0:	24a555fc 	addiu	a1,a1,22012
  414ed4:	8f998428 	lw	t9,-31704(gp)
  414ed8:	00000000 	nop
  414edc:	0320f809 	jalr	t9
  414ee0:	00000000 	nop
  414ee4:	8fdc0010 	lw	gp,16(s8)
  414ee8:	14400005 	bnez	v0,414f00 <extract_end+0x180>
  414eec:	00000000 	nop
	    same_ca = TRUE;
  414ef0:	24020001 	li	v0,1
  414ef4:	afc20018 	sw	v0,24(s8)
  414ef8:	1000003e 	b	414ff4 <extract_end+0x274>
  414efc:	00000000 	nop
	else if (!streq(src->ca, "%any"))
  414f00:	8fc2029c 	lw	v0,668(s8)
  414f04:	00000000 	nop
  414f08:	8c440008 	lw	a0,8(v0)
  414f0c:	8f858020 	lw	a1,-32736(gp)
  414f10:	00000000 	nop
  414f14:	24a55604 	addiu	a1,a1,22020
  414f18:	8f998428 	lw	t9,-31704(gp)
  414f1c:	00000000 	nop
  414f20:	0320f809 	jalr	t9
  414f24:	00000000 	nop
  414f28:	8fdc0010 	lw	gp,16(s8)
  414f2c:	10400031 	beqz	v0,414ff4 <extract_end+0x274>
  414f30:	00000000 	nop
	{
	    err_t ugh;

	    dst->ca.ptr = temporary_cyclic_buffer();
  414f34:	8fd00298 	lw	s0,664(s8)
  414f38:	8f998b00 	lw	t9,-29952(gp)
  414f3c:	00000000 	nop
  414f40:	0320f809 	jalr	t9
  414f44:	00000000 	nop
  414f48:	8fdc0010 	lw	gp,16(s8)
  414f4c:	ae0200a4 	sw	v0,164(s0)
	    ugh = atodn(src->ca, &dst->ca);
  414f50:	8fc20298 	lw	v0,664(s8)
  414f54:	00000000 	nop
  414f58:	244300a4 	addiu	v1,v0,164
  414f5c:	8fc2029c 	lw	v0,668(s8)
  414f60:	00000000 	nop
  414f64:	8c440008 	lw	a0,8(v0)
  414f68:	00602821 	move	a1,v1
  414f6c:	8f9987a0 	lw	t9,-30816(gp)
  414f70:	00000000 	nop
  414f74:	0320f809 	jalr	t9
  414f78:	00000000 	nop
  414f7c:	8fdc0010 	lw	gp,16(s8)
  414f80:	afc2001c 	sw	v0,28(s8)
	    if (ugh != NULL)
  414f84:	8fc2001c 	lw	v0,28(s8)
  414f88:	00000000 	nop
  414f8c:	10400019 	beqz	v0,414ff4 <extract_end+0x274>
  414f90:	00000000 	nop
	    {
		plog("bad CA string '%s': %s (ignored)", src->ca, ugh);
  414f94:	8f848020 	lw	a0,-32736(gp)
  414f98:	00000000 	nop
  414f9c:	2484560c 	addiu	a0,a0,22028
  414fa0:	8fc2029c 	lw	v0,668(s8)
  414fa4:	00000000 	nop
  414fa8:	8c450008 	lw	a1,8(v0)
  414fac:	8fc6001c 	lw	a2,28(s8)
  414fb0:	8f998abc 	lw	t9,-30020(gp)
  414fb4:	00000000 	nop
  414fb8:	0320f809 	jalr	t9
  414fbc:	00000000 	nop
  414fc0:	8fdc0010 	lw	gp,16(s8)
  414fc4:	00000000 	nop
		dst->ca = empty_chunk;
  414fc8:	8fc30298 	lw	v1,664(s8)
  414fcc:	8f828708 	lw	v0,-30968(gp)
  414fd0:	00000000 	nop
  414fd4:	8c420000 	lw	v0,0(v0)
  414fd8:	00000000 	nop
  414fdc:	ac6200a4 	sw	v0,164(v1)
  414fe0:	8f828708 	lw	v0,-30968(gp)
  414fe4:	00000000 	nop
  414fe8:	8c420004 	lw	v0,4(v0)
  414fec:	00000000 	nop
  414ff0:	ac6200a8 	sw	v0,168(v1)
	    }
	}
    }

    dst->cert = NULL;
  414ff4:	8fc20298 	lw	v0,664(s8)
  414ff8:	00000000 	nop
  414ffc:	ac4000a0 	sw	zero,160(v0)

    /* load local X.509 certificate, if any */
    if (src->cert != NULL)
  415000:	8fc2029c 	lw	v0,668(s8)
  415004:	00000000 	nop
  415008:	8c420004 	lw	v0,4(v0)
  41500c:	00000000 	nop
  415010:	104000ca 	beqz	v0,41533c <extract_end+0x5bc>
  415014:	00000000 	nop
    {
	x509cert_t *cert = load_host_cert(src->cert);
  415018:	8fc2029c 	lw	v0,668(s8)
  41501c:	00000000 	nop
  415020:	8c440004 	lw	a0,4(v0)
  415024:	8f9984e4 	lw	t9,-31516(gp)
  415028:	00000000 	nop
  41502c:	0320f809 	jalr	t9
  415030:	00000000 	nop
  415034:	8fdc0010 	lw	gp,16(s8)
  415038:	afc2001c 	sw	v0,28(s8)

	if (cert != NULL)
  41503c:	8fc2001c 	lw	v0,28(s8)
  415040:	00000000 	nop
  415044:	104000bd 	beqz	v0,41533c <extract_end+0x5bc>
  415048:	00000000 	nop
	{
	    time_t valid_until = cert->notAfter; /* validity of cert */
  41504c:	8fc2001c 	lw	v0,28(s8)
  415050:	00000000 	nop
  415054:	8c42003c 	lw	v0,60(v0)
  415058:	00000000 	nop
  41505c:	afc20020 	sw	v0,32(s8)
	    bool copy_subject_dn = TRUE;	 /* ID is subject DN */
  415060:	24020001 	li	v0,1
  415064:	afc20024 	sw	v0,36(s8)

	    if (dst->id.kind != ID_NONE) /* check for matching subjectAltName */
  415068:	8fc20298 	lw	v0,664(s8)
  41506c:	00000000 	nop
  415070:	8c420000 	lw	v0,0(v0)
  415074:	00000000 	nop
  415078:	10400030 	beqz	v0,41513c <extract_end+0x3bc>
  41507c:	00000000 	nop
	    {
		generalName_t *gn = cert->subjectAltName;
  415080:	8fc2001c 	lw	v0,28(s8)
  415084:	00000000 	nop
  415088:	8c420078 	lw	v0,120(v0)
  41508c:	00000000 	nop
  415090:	afc20028 	sw	v0,40(s8)

		 while (gn != NULL)
  415094:	8fc20028 	lw	v0,40(s8)
  415098:	00000000 	nop
  41509c:	14400003 	bnez	v0,4150ac <extract_end+0x32c>
  4150a0:	00000000 	nop
  4150a4:	10000025 	b	41513c <extract_end+0x3bc>
  4150a8:	00000000 	nop
		{
		    struct id id = empty_id;
  4150ac:	27c40030 	addiu	a0,s8,48
  4150b0:	8f8582d8 	lw	a1,-32040(gp)
  4150b4:	24060028 	li	a2,40
  4150b8:	8f998a30 	lw	t9,-30160(gp)
  4150bc:	00000000 	nop
  4150c0:	0320f809 	jalr	t9
  4150c4:	00000000 	nop
  4150c8:	8fdc0010 	lw	gp,16(s8)
  4150cc:	00000000 	nop

		    gntoid(&id, gn);
  4150d0:	27c40030 	addiu	a0,s8,48
  4150d4:	8fc50028 	lw	a1,40(s8)
  4150d8:	8f998af0 	lw	t9,-29968(gp)
  4150dc:	00000000 	nop
  4150e0:	0320f809 	jalr	t9
  4150e4:	00000000 	nop
  4150e8:	8fdc0010 	lw	gp,16(s8)
  4150ec:	00000000 	nop
		    if (same_id(&id, &dst->id))
  4150f0:	27c40030 	addiu	a0,s8,48
  4150f4:	8fc50298 	lw	a1,664(s8)
  4150f8:	8f9980e4 	lw	t9,-32540(gp)
  4150fc:	00000000 	nop
  415100:	0320f809 	jalr	t9
  415104:	00000000 	nop
  415108:	8fdc0010 	lw	gp,16(s8)
  41510c:	10400004 	beqz	v0,415120 <extract_end+0x3a0>
  415110:	00000000 	nop
		    {
			copy_subject_dn = FALSE; /* take subjectAltName instead */
  415114:	afc00024 	sw	zero,36(s8)
			break;
  415118:	10000008 	b	41513c <extract_end+0x3bc>
  41511c:	00000000 	nop
		    }
		    gn = gn->next;
  415120:	8fc20028 	lw	v0,40(s8)
  415124:	00000000 	nop
  415128:	8c420000 	lw	v0,0(v0)
  41512c:	00000000 	nop
  415130:	afc20028 	sw	v0,40(s8)
  415134:	1000ffd7 	b	415094 <extract_end+0x314>
  415138:	00000000 	nop
		}
	    }

	    if (copy_subject_dn)
  41513c:	8fc20024 	lw	v0,36(s8)
  415140:	00000000 	nop
  415144:	10400040 	beqz	v0,415248 <extract_end+0x4c8>
  415148:	00000000 	nop
	    {
		if (dst->id.kind != ID_NONE && dst->id.kind != ID_DER_ASN1_DN)
  41514c:	8fc20298 	lw	v0,664(s8)
  415150:	00000000 	nop
  415154:	8c420000 	lw	v0,0(v0)
  415158:	00000000 	nop
  41515c:	1040001a 	beqz	v0,4151c8 <extract_end+0x448>
  415160:	00000000 	nop
  415164:	8fc20298 	lw	v0,664(s8)
  415168:	00000000 	nop
  41516c:	8c430000 	lw	v1,0(v0)
  415170:	24020009 	li	v0,9
  415174:	10620014 	beq	v1,v0,4151c8 <extract_end+0x448>
  415178:	00000000 	nop
		{
		     char buf[IDTOA_BUF];

		     idtoa(&dst->id, buf, IDTOA_BUF);
  41517c:	8fc40298 	lw	a0,664(s8)
  415180:	27c50058 	addiu	a1,s8,88
  415184:	24060200 	li	a2,512
  415188:	8f998798 	lw	t9,-30824(gp)
  41518c:	00000000 	nop
  415190:	0320f809 	jalr	t9
  415194:	00000000 	nop
  415198:	8fdc0010 	lw	gp,16(s8)
  41519c:	00000000 	nop
		     plog("  no subjectAltName matches ID '%s', replaced by subject DN", buf);
  4151a0:	8f848020 	lw	a0,-32736(gp)
  4151a4:	00000000 	nop
  4151a8:	24845630 	addiu	a0,a0,22064
  4151ac:	27c50058 	addiu	a1,s8,88
  4151b0:	8f998abc 	lw	t9,-30020(gp)
  4151b4:	00000000 	nop
  4151b8:	0320f809 	jalr	t9
  4151bc:	00000000 	nop
  4151c0:	8fdc0010 	lw	gp,16(s8)
  4151c4:	00000000 	nop
		}
		dst->id.kind = ID_DER_ASN1_DN;
  4151c8:	24030009 	li	v1,9
  4151cc:	8fc20298 	lw	v0,664(s8)
  4151d0:	00000000 	nop
  4151d4:	ac430000 	sw	v1,0(v0)
		dst->id.name.len = cert->subject.len;
  4151d8:	8fc2001c 	lw	v0,28(s8)
  4151dc:	00000000 	nop
  4151e0:	8c430044 	lw	v1,68(v0)
  4151e4:	8fc20298 	lw	v0,664(s8)
  4151e8:	00000000 	nop
  4151ec:	ac430024 	sw	v1,36(v0)
		dst->id.name.ptr = temporary_cyclic_buffer();
  4151f0:	8fd00298 	lw	s0,664(s8)
  4151f4:	8f998b00 	lw	t9,-29952(gp)
  4151f8:	00000000 	nop
  4151fc:	0320f809 	jalr	t9
  415200:	00000000 	nop
  415204:	8fdc0010 	lw	gp,16(s8)
  415208:	ae020020 	sw	v0,32(s0)
		memcpy(dst->id.name.ptr, cert->subject.ptr, cert->subject.len);
  41520c:	8fc20298 	lw	v0,664(s8)
  415210:	00000000 	nop
  415214:	8c440020 	lw	a0,32(v0)
  415218:	8fc2001c 	lw	v0,28(s8)
  41521c:	00000000 	nop
  415220:	8c450040 	lw	a1,64(v0)
  415224:	8fc2001c 	lw	v0,28(s8)
  415228:	00000000 	nop
  41522c:	8c460044 	lw	a2,68(v0)
  415230:	8f998a30 	lw	t9,-30160(gp)
  415234:	00000000 	nop
  415238:	0320f809 	jalr	t9
  41523c:	00000000 	nop
  415240:	8fdc0010 	lw	gp,16(s8)
  415244:	00000000 	nop
	    }

	    if (check_validity(cert, &valid_until))
  415248:	8fc4001c 	lw	a0,28(s8)
  41524c:	27c50020 	addiu	a1,s8,32
  415250:	8f998a14 	lw	t9,-30188(gp)
  415254:	00000000 	nop
  415258:	0320f809 	jalr	t9
  41525c:	00000000 	nop
  415260:	8fdc0010 	lw	gp,16(s8)
  415264:	10400025 	beqz	v0,4152fc <extract_end+0x57c>
  415268:	00000000 	nop
	    {
		add_x509_public_key(cert, valid_until, DAL_LOCAL);
  41526c:	8fc4001c 	lw	a0,28(s8)
  415270:	8fc50020 	lw	a1,32(s8)
  415274:	24060003 	li	a2,3
  415278:	8f998980 	lw	t9,-30336(gp)
  41527c:	00000000 	nop
  415280:	0320f809 	jalr	t9
  415284:	00000000 	nop
  415288:	8fdc0010 	lw	gp,16(s8)
  41528c:	00000000 	nop
		dst->cert = add_x509cert(cert);
  415290:	8fd00298 	lw	s0,664(s8)
  415294:	8fc4001c 	lw	a0,28(s8)
  415298:	8f99870c 	lw	t9,-30964(gp)
  41529c:	00000000 	nop
  4152a0:	0320f809 	jalr	t9
  4152a4:	00000000 	nop
  4152a8:	8fdc0010 	lw	gp,16(s8)
  4152ac:	ae0200a0 	sw	v0,160(s0)

		/* if no CA is defined, use issuer as default */
		if (dst->ca.ptr == NULL)
  4152b0:	8fc20298 	lw	v0,664(s8)
  4152b4:	00000000 	nop
  4152b8:	8c4200a4 	lw	v0,164(v0)
  4152bc:	00000000 	nop
  4152c0:	1440001e 	bnez	v0,41533c <extract_end+0x5bc>
  4152c4:	00000000 	nop
		    dst->ca = dst->cert->issuer;
  4152c8:	8fc40298 	lw	a0,664(s8)
  4152cc:	8fc20298 	lw	v0,664(s8)
  4152d0:	00000000 	nop
  4152d4:	8c4300a0 	lw	v1,160(v0)
  4152d8:	00000000 	nop
  4152dc:	8c620030 	lw	v0,48(v1)
  4152e0:	00000000 	nop
  4152e4:	ac8200a4 	sw	v0,164(a0)
  4152e8:	8c620034 	lw	v0,52(v1)
  4152ec:	00000000 	nop
  4152f0:	ac8200a8 	sw	v0,168(a0)
  4152f4:	10000011 	b	41533c <extract_end+0x5bc>
  4152f8:	00000000 	nop
 	    }
	    else
	    {
		plog("  host certificate is invalid");
  4152fc:	8f848020 	lw	a0,-32736(gp)
  415300:	00000000 	nop
  415304:	2484566c 	addiu	a0,a0,22124
  415308:	8f998abc 	lw	t9,-30020(gp)
  41530c:	00000000 	nop
  415310:	0320f809 	jalr	t9
  415314:	00000000 	nop
  415318:	8fdc0010 	lw	gp,16(s8)
  41531c:	00000000 	nop
		free_x509cert(cert);
  415320:	8fc4001c 	lw	a0,28(s8)
  415324:	8f998714 	lw	t9,-30956(gp)
  415328:	00000000 	nop
  41532c:	0320f809 	jalr	t9
  415330:	00000000 	nop
  415334:	8fdc0010 	lw	gp,16(s8)
  415338:	00000000 	nop
	    }
	}
    }

    /* does id has wildcards? */
    dst->has_id_wildcards = id_count_wildcards(&dst->id) > 0;
  41533c:	8fd00298 	lw	s0,664(s8)
  415340:	8fc40298 	lw	a0,664(s8)
  415344:	8f998588 	lw	t9,-31352(gp)
  415348:	00000000 	nop
  41534c:	0320f809 	jalr	t9
  415350:	00000000 	nop
  415354:	8fdc0010 	lw	gp,16(s8)
  415358:	28420001 	slti	v0,v0,1
  41535c:	38420001 	xori	v0,v0,0x1
  415360:	ae02008c 	sw	v0,140(s0)

    /* the rest is simple copying of corresponding fields */
    dst->host_addr = src->host_addr;
  415364:	8fc40298 	lw	a0,664(s8)
  415368:	8fc3029c 	lw	v1,668(s8)
  41536c:	00000000 	nop
  415370:	8c62000c 	lw	v0,12(v1)
  415374:	00000000 	nop
  415378:	ac820028 	sw	v0,40(a0)
  41537c:	8c620010 	lw	v0,16(v1)
  415380:	00000000 	nop
  415384:	ac82002c 	sw	v0,44(a0)
  415388:	8c620014 	lw	v0,20(v1)
  41538c:	00000000 	nop
  415390:	ac820030 	sw	v0,48(a0)
  415394:	8c620018 	lw	v0,24(v1)
  415398:	00000000 	nop
  41539c:	ac820034 	sw	v0,52(a0)
  4153a0:	8c62001c 	lw	v0,28(v1)
  4153a4:	00000000 	nop
  4153a8:	ac820038 	sw	v0,56(a0)
  4153ac:	8c620020 	lw	v0,32(v1)
  4153b0:	00000000 	nop
  4153b4:	ac82003c 	sw	v0,60(a0)
  4153b8:	8c620024 	lw	v0,36(v1)
  4153bc:	00000000 	nop
  4153c0:	ac820040 	sw	v0,64(a0)
    dst->host_nexthop = src->host_nexthop;
  4153c4:	8fc40298 	lw	a0,664(s8)
  4153c8:	8fc3029c 	lw	v1,668(s8)
  4153cc:	00000000 	nop
  4153d0:	8c620028 	lw	v0,40(v1)
  4153d4:	00000000 	nop
  4153d8:	ac820044 	sw	v0,68(a0)
  4153dc:	8c62002c 	lw	v0,44(v1)
  4153e0:	00000000 	nop
  4153e4:	ac820048 	sw	v0,72(a0)
  4153e8:	8c620030 	lw	v0,48(v1)
  4153ec:	00000000 	nop
  4153f0:	ac82004c 	sw	v0,76(a0)
  4153f4:	8c620034 	lw	v0,52(v1)
  4153f8:	00000000 	nop
  4153fc:	ac820050 	sw	v0,80(a0)
  415400:	8c620038 	lw	v0,56(v1)
  415404:	00000000 	nop
  415408:	ac820054 	sw	v0,84(a0)
  41540c:	8c62003c 	lw	v0,60(v1)
  415410:	00000000 	nop
  415414:	ac820058 	sw	v0,88(a0)
  415418:	8c620040 	lw	v0,64(v1)
  41541c:	00000000 	nop
  415420:	ac82005c 	sw	v0,92(a0)
    dst->client = src->client;
  415424:	8fc40298 	lw	a0,664(s8)
  415428:	8fc3029c 	lw	v1,668(s8)
  41542c:	00000000 	nop
  415430:	8c620044 	lw	v0,68(v1)
  415434:	00000000 	nop
  415438:	ac820060 	sw	v0,96(a0)
  41543c:	8c620048 	lw	v0,72(v1)
  415440:	00000000 	nop
  415444:	ac820064 	sw	v0,100(a0)
  415448:	8c62004c 	lw	v0,76(v1)
  41544c:	00000000 	nop
  415450:	ac820068 	sw	v0,104(a0)
  415454:	8c620050 	lw	v0,80(v1)
  415458:	00000000 	nop
  41545c:	ac82006c 	sw	v0,108(a0)
  415460:	8c620054 	lw	v0,84(v1)
  415464:	00000000 	nop
  415468:	ac820070 	sw	v0,112(a0)
  41546c:	8c620058 	lw	v0,88(v1)
  415470:	00000000 	nop
  415474:	ac820074 	sw	v0,116(a0)
  415478:	8c62005c 	lw	v0,92(v1)
  41547c:	00000000 	nop
  415480:	ac820078 	sw	v0,120(a0)
  415484:	8c620060 	lw	v0,96(v1)
  415488:	00000000 	nop
  41548c:	ac82007c 	sw	v0,124(a0)
    dst->use_mode_config = src->mode_config;
  415490:	8fc2029c 	lw	v0,668(s8)
  415494:	00000000 	nop
  415498:	8c430070 	lw	v1,112(v0)
  41549c:	8fc20298 	lw	v0,664(s8)
  4154a0:	00000000 	nop
  4154a4:	ac430090 	sw	v1,144(v0)
    if(src->mode_config) {
  4154a8:	8fc2029c 	lw	v0,668(s8)
  4154ac:	00000000 	nop
  4154b0:	8c420070 	lw	v0,112(v0)
  4154b4:	00000000 	nop
  4154b8:	1040000a 	beqz	v0,4154e4 <extract_end+0x764>
  4154bc:	00000000 	nop
	plog("IKE-MODE-CONFIG: Remote Request for Configuration");
  4154c0:	8f848020 	lw	a0,-32736(gp)
  4154c4:	00000000 	nop
  4154c8:	2484568c 	addiu	a0,a0,22156
  4154cc:	8f998abc 	lw	t9,-30020(gp)
  4154d0:	00000000 	nop
  4154d4:	0320f809 	jalr	t9
  4154d8:	00000000 	nop
  4154dc:	8fdc0010 	lw	gp,16(s8)
  4154e0:	00000000 	nop
    }
    dst->port = src->port;
  4154e4:	8fc2029c 	lw	v0,668(s8)
  4154e8:	00000000 	nop
  4154ec:	9443007a 	lhu	v1,122(v0)
  4154f0:	8fc20298 	lw	v0,664(s8)
  4154f4:	00000000 	nop
  4154f8:	a443009a 	sh	v1,154(v0)
    dst->protocol = src->protocol;
  4154fc:	8fc2029c 	lw	v0,668(s8)
  415500:	00000000 	nop
  415504:	9043007c 	lbu	v1,124(v0)
  415508:	8fc20298 	lw	v0,664(s8)
  41550c:	00000000 	nop
  415510:	a043009c 	sb	v1,156(v0)
    dst->key_from_DNS_on_demand = src->key_from_DNS_on_demand;
  415514:	8fc2029c 	lw	v0,668(s8)
  415518:	00000000 	nop
  41551c:	8c430064 	lw	v1,100(v0)
  415520:	8fc20298 	lw	v0,664(s8)
  415524:	00000000 	nop
  415528:	ac430080 	sw	v1,128(v0)
    dst->has_client = src->has_client;
  41552c:	8fc2029c 	lw	v0,668(s8)
  415530:	00000000 	nop
  415534:	8c430068 	lw	v1,104(v0)
  415538:	8fc20298 	lw	v0,664(s8)
  41553c:	00000000 	nop
  415540:	ac430084 	sw	v1,132(v0)
    dst->has_client_wildcard = src->has_client_wildcard;
  415544:	8fc2029c 	lw	v0,668(s8)
  415548:	00000000 	nop
  41554c:	8c43006c 	lw	v1,108(v0)
  415550:	8fc20298 	lw	v0,664(s8)
  415554:	00000000 	nop
  415558:	ac430088 	sw	v1,136(v0)
    dst->updown = src->updown;
  41555c:	8fc2029c 	lw	v0,668(s8)
  415560:	00000000 	nop
  415564:	8c430074 	lw	v1,116(v0)
  415568:	8fc20298 	lw	v0,664(s8)
  41556c:	00000000 	nop
  415570:	ac430094 	sw	v1,148(v0)
    dst->host_port = src->host_port;
  415574:	8fc2029c 	lw	v0,668(s8)
  415578:	00000000 	nop
  41557c:	94430078 	lhu	v1,120(v0)
  415580:	8fc20298 	lw	v0,664(s8)
  415584:	00000000 	nop
  415588:	a4430098 	sh	v1,152(v0)

    return same_ca;
  41558c:	8fc20018 	lw	v0,24(s8)
  415590:	00000000 	nop
}
  415594:	03c0e821 	move	sp,s8
  415598:	8fbf0294 	lw	ra,660(sp)
  41559c:	8fbe0290 	lw	s8,656(sp)
  4155a0:	8fb00288 	lw	s0,648(sp)
  4155a4:	27bd0298 	addiu	sp,sp,664
  4155a8:	03e00008 	jr	ra
  4155ac:	00000000 	nop

004155b0 <check_connection_end>:
  4155b0:	3c1c0fbf 	lui	gp,0xfbf
  4155b4:	279c73c0 	addiu	gp,gp,29632
  4155b8:	0399e021 	addu	gp,gp,t9
  4155bc:	27bdffd0 	addiu	sp,sp,-48
  4155c0:	afbc0010 	sw	gp,16(sp)
  4155c4:	afbf002c 	sw	ra,44(sp)
  4155c8:	afbe0028 	sw	s8,40(sp)
  4155cc:	afbc0024 	sw	gp,36(sp)
  4155d0:	afb00020 	sw	s0,32(sp)
  4155d4:	03a0f021 	move	s8,sp
  4155d8:	afc40030 	sw	a0,48(s8)
  4155dc:	afc50034 	sw	a1,52(s8)
  4155e0:	afc60038 	sw	a2,56(s8)

static bool
check_connection_end(const struct whack_end *this, const struct whack_end *that
, const struct whack_message *wm)
{
    if (wm->addr_family != addrtypeof(&this->host_addr)
    || wm->addr_family != addrtypeof(&this->host_nexthop)
    || (this->has_client? wm->tunnel_addr_family : wm->addr_family)
      != subnettypeof(&this->client)
    || subnettypeof(&this->client) != subnettypeof(&that->client))
  4155e4:	8fc20038 	lw	v0,56(s8)
  4155e8:	00000000 	nop
  4155ec:	94500154 	lhu	s0,340(v0)
  4155f0:	8fc20030 	lw	v0,48(s8)
  4155f4:	00000000 	nop
  4155f8:	2442000c 	addiu	v0,v0,12
  4155fc:	00402021 	move	a0,v0
  415600:	8f9985d4 	lw	t9,-31276(gp)
  415604:	00000000 	nop
  415608:	0320f809 	jalr	t9
  41560c:	00000000 	nop
  415610:	8fdc0010 	lw	gp,16(s8)
  415614:	16020046 	bne	s0,v0,415730 <check_connection_end+0x180>
  415618:	00000000 	nop
  41561c:	8fc20038 	lw	v0,56(s8)
  415620:	00000000 	nop
  415624:	94500154 	lhu	s0,340(v0)
  415628:	8fc20030 	lw	v0,48(s8)
  41562c:	00000000 	nop
  415630:	24420028 	addiu	v0,v0,40
  415634:	00402021 	move	a0,v0
  415638:	8f9985d4 	lw	t9,-31276(gp)
  41563c:	00000000 	nop
  415640:	0320f809 	jalr	t9
  415644:	00000000 	nop
  415648:	8fdc0010 	lw	gp,16(s8)
  41564c:	16020038 	bne	s0,v0,415730 <check_connection_end+0x180>
  415650:	00000000 	nop
  415654:	8fc20030 	lw	v0,48(s8)
  415658:	00000000 	nop
  41565c:	24420044 	addiu	v0,v0,68
  415660:	00402021 	move	a0,v0
  415664:	8f998248 	lw	t9,-32184(gp)
  415668:	00000000 	nop
  41566c:	0320f809 	jalr	t9
  415670:	00000000 	nop
  415674:	8fdc0010 	lw	gp,16(s8)
  415678:	afc2001c 	sw	v0,28(s8)
  41567c:	8fc20030 	lw	v0,48(s8)
  415680:	00000000 	nop
  415684:	8c420068 	lw	v0,104(v0)
  415688:	00000000 	nop
  41568c:	1040000a 	beqz	v0,4156b8 <check_connection_end+0x108>
  415690:	00000000 	nop
  415694:	8fc20038 	lw	v0,56(s8)
  415698:	00000000 	nop
  41569c:	94420156 	lhu	v0,342(v0)
  4156a0:	8fc3001c 	lw	v1,28(s8)
  4156a4:	00000000 	nop
  4156a8:	14430021 	bne	v0,v1,415730 <check_connection_end+0x180>
  4156ac:	00000000 	nop
  4156b0:	10000008 	b	4156d4 <check_connection_end+0x124>
  4156b4:	00000000 	nop
  4156b8:	8fc20038 	lw	v0,56(s8)
  4156bc:	00000000 	nop
  4156c0:	94420154 	lhu	v0,340(v0)
  4156c4:	8fc3001c 	lw	v1,28(s8)
  4156c8:	00000000 	nop
  4156cc:	14430018 	bne	v0,v1,415730 <check_connection_end+0x180>
  4156d0:	00000000 	nop
  4156d4:	8fc20030 	lw	v0,48(s8)
  4156d8:	00000000 	nop
  4156dc:	24420044 	addiu	v0,v0,68
  4156e0:	00402021 	move	a0,v0
  4156e4:	8f998248 	lw	t9,-32184(gp)
  4156e8:	00000000 	nop
  4156ec:	0320f809 	jalr	t9
  4156f0:	00000000 	nop
  4156f4:	8fdc0010 	lw	gp,16(s8)
  4156f8:	00408021 	move	s0,v0
  4156fc:	8fc20034 	lw	v0,52(s8)
  415700:	00000000 	nop
  415704:	24420044 	addiu	v0,v0,68
  415708:	00402021 	move	a0,v0
  41570c:	8f998248 	lw	t9,-32184(gp)
  415710:	00000000 	nop
  415714:	0320f809 	jalr	t9
  415718:	00000000 	nop
  41571c:	8fdc0010 	lw	gp,16(s8)
  415720:	16020003 	bne	s0,v0,415730 <check_connection_end+0x180>
  415724:	00000000 	nop
  415728:	1000000e 	b	415764 <check_connection_end+0x1b4>
  41572c:	00000000 	nop
    {
	/* this should have been diagnosed by whack, so we need not be clear
	 * !!! overloaded use of RC_CLASH
	 */
	loglog(RC_CLASH, "address family inconsistency in connection");
  415730:	24040017 	li	a0,23
  415734:	8f858020 	lw	a1,-32736(gp)
  415738:	00000000 	nop
  41573c:	24a556c0 	addiu	a1,a1,22208
  415740:	8f998c48 	lw	t9,-29624(gp)
  415744:	00000000 	nop
  415748:	0320f809 	jalr	t9
  41574c:	00000000 	nop
  415750:	8fdc0010 	lw	gp,16(s8)
  415754:	00000000 	nop
	return FALSE;
  415758:	00001021 	move	v0,zero
  41575c:	100000aa 	b	415a08 <check_connection_end+0x458>
  415760:	00000000 	nop
    }

    if (isanyaddr(&that->host_addr))
  415764:	8fc20034 	lw	v0,52(s8)
  415768:	00000000 	nop
  41576c:	2442000c 	addiu	v0,v0,12
  415770:	00402021 	move	a0,v0
  415774:	8f998628 	lw	t9,-31192(gp)
  415778:	00000000 	nop
  41577c:	0320f809 	jalr	t9
  415780:	00000000 	nop
  415784:	8fdc0010 	lw	gp,16(s8)
  415788:	10400078 	beqz	v0,41596c <check_connection_end+0x3bc>
  41578c:	00000000 	nop
    {
	/* other side is wildcard: we must check if other conditions met */
	if (isanyaddr(&this->host_addr))
  415790:	8fc20030 	lw	v0,48(s8)
  415794:	00000000 	nop
  415798:	2442000c 	addiu	v0,v0,12
  41579c:	00402021 	move	a0,v0
  4157a0:	8f998628 	lw	t9,-31192(gp)
  4157a4:	00000000 	nop
  4157a8:	0320f809 	jalr	t9
  4157ac:	00000000 	nop
  4157b0:	8fdc0010 	lw	gp,16(s8)
  4157b4:	1040000e 	beqz	v0,4157f0 <check_connection_end+0x240>
  4157b8:	00000000 	nop
	{
	    loglog(RC_ORIENT, "connection must specify host IP address for our side");
  4157bc:	24040016 	li	a0,22
  4157c0:	8f858020 	lw	a1,-32736(gp)
  4157c4:	00000000 	nop
  4157c8:	24a556ec 	addiu	a1,a1,22252
  4157cc:	8f998c48 	lw	t9,-29624(gp)
  4157d0:	00000000 	nop
  4157d4:	0320f809 	jalr	t9
  4157d8:	00000000 	nop
  4157dc:	8fdc0010 	lw	gp,16(s8)
  4157e0:	00000000 	nop
	    return FALSE;
  4157e4:	00001021 	move	v0,zero
  4157e8:	10000087 	b	415a08 <check_connection_end+0x458>
  4157ec:	00000000 	nop
	}
	else if ((wm->policy & POLICY_AGGRESSIVE) == 0)
  4157f0:	8fc20038 	lw	v0,56(s8)
  4157f4:	00000000 	nop
  4157f8:	8c440020 	lw	a0,32(v0)
  4157fc:	8c450024 	lw	a1,36(v0)
  415800:	24020000 	li	v0,0
  415804:	24031000 	li	v1,4096
  415808:	00822024 	and	a0,a0,v0
  41580c:	00a32824 	and	a1,a1,v1
  415810:	00801021 	move	v0,a0
  415814:	00451025 	or	v0,v0,a1
  415818:	14400054 	bnez	v0,41596c <check_connection_end+0x3bc>
  41581c:	00000000 	nop
	{
	    /* check that all main mode RW IKE policies agree because we must
	     * implement them before the correct connection is known.
	     * We cannot enforce this for other non-RW connections because
	     * differentiation is possible when a command specifies which
	     * to initiate.
	     * aggressive mode IKE policies do not have to agree amongst
	     * themselves as the ID is known from the outset.
	     */
	    const struct connection *c = NULL;
  415820:	afc00018 	sw	zero,24(s8)

	    c = find_host_pair_connections(&this->host_addr
  415824:	8fc20030 	lw	v0,48(s8)
  415828:	00000000 	nop
  41582c:	2444000c 	addiu	a0,v0,12
  415830:	8fc20030 	lw	v0,48(s8)
  415834:	00000000 	nop
  415838:	94430078 	lhu	v1,120(v0)
  41583c:	8fc20034 	lw	v0,52(s8)
  415840:	00000000 	nop
  415844:	94420078 	lhu	v0,120(v0)
  415848:	00602821 	move	a1,v1
  41584c:	00003021 	move	a2,zero
  415850:	00403821 	move	a3,v0
  415854:	8f998024 	lw	t9,-32732(gp)
  415858:	00000000 	nop
  41585c:	27392a64 	addiu	t9,t9,10852
  415860:	00000000 	nop
  415864:	0320f809 	jalr	t9
  415868:	00000000 	nop
  41586c:	8fdc0010 	lw	gp,16(s8)
  415870:	afc20018 	sw	v0,24(s8)
		, this->host_port, (const ip_address *)NULL, that->host_port);

	    for (; c != NULL; c = c->hp_next)
  415874:	8fc20018 	lw	v0,24(s8)
  415878:	00000000 	nop
  41587c:	14400003 	bnez	v0,41588c <check_connection_end+0x2dc>
  415880:	00000000 	nop
  415884:	10000039 	b	41596c <check_connection_end+0x3bc>
  415888:	00000000 	nop
	    {
		if (c->policy & POLICY_AGGRESSIVE)
  41588c:	8fc20018 	lw	v0,24(s8)
  415890:	00000000 	nop
  415894:	8c440008 	lw	a0,8(v0)
  415898:	8c45000c 	lw	a1,12(v0)
  41589c:	24020000 	li	v0,0
  4158a0:	24031000 	li	v1,4096
  4158a4:	00822024 	and	a0,a0,v0
  4158a8:	00a32824 	and	a1,a1,v1
  4158ac:	00801021 	move	v0,a0
  4158b0:	00451025 	or	v0,v0,a1
  4158b4:	10400003 	beqz	v0,4158c4 <check_connection_end+0x314>
  4158b8:	00000000 	nop
		    continue;
  4158bc:	10000024 	b	415950 <check_connection_end+0x3a0>
  4158c0:	00000000 	nop
		if ((c->policy ^ wm->policy) & (POLICY_PSK | POLICY_RSASIG))
  4158c4:	8fc20018 	lw	v0,24(s8)
  4158c8:	00000000 	nop
  4158cc:	8c440008 	lw	a0,8(v0)
  4158d0:	8c45000c 	lw	a1,12(v0)
  4158d4:	8fc20038 	lw	v0,56(s8)
  4158d8:	00000000 	nop
  4158dc:	8c430024 	lw	v1,36(v0)
  4158e0:	8c420020 	lw	v0,32(v0)
  4158e4:	00000000 	nop
  4158e8:	00822026 	xor	a0,a0,v0
  4158ec:	00a32826 	xor	a1,a1,v1
  4158f0:	24020000 	li	v0,0
  4158f4:	24030003 	li	v1,3
  4158f8:	00822024 	and	a0,a0,v0
  4158fc:	00a32824 	and	a1,a1,v1
  415900:	00801021 	move	v0,a0
  415904:	00451025 	or	v0,v0,a1
  415908:	10400011 	beqz	v0,415950 <check_connection_end+0x3a0>
  41590c:	00000000 	nop
		{
		    loglog(RC_CLASH
  415910:	24040017 	li	a0,23
  415914:	8f858020 	lw	a1,-32736(gp)
  415918:	00000000 	nop
  41591c:	24a55724 	addiu	a1,a1,22308
  415920:	8fc20018 	lw	v0,24(s8)
  415924:	00000000 	nop
  415928:	8c460000 	lw	a2,0(v0)
  41592c:	8f998c48 	lw	t9,-29624(gp)
  415930:	00000000 	nop
  415934:	0320f809 	jalr	t9
  415938:	00000000 	nop
  41593c:	8fdc0010 	lw	gp,16(s8)
  415940:	00000000 	nop
			, "authentication method disagrees with \"%s\", which is also for an unspecified peer"
			, c->name);
		    return FALSE;
  415944:	00001021 	move	v0,zero
  415948:	1000002f 	b	415a08 <check_connection_end+0x458>
  41594c:	00000000 	nop
  415950:	8fc20018 	lw	v0,24(s8)
  415954:	00000000 	nop
  415958:	8c4201c8 	lw	v0,456(v0)
  41595c:	00000000 	nop
  415960:	afc20018 	sw	v0,24(s8)
  415964:	1000ffc3 	b	415874 <check_connection_end+0x2c4>
  415968:	00000000 	nop
		}
	    }
	}
    }
#ifdef VIRTUAL_IP
    if ((this->virt) && (!isanyaddr(&this->host_addr) || this->has_client)) {
  41596c:	8fc20030 	lw	v0,48(s8)
  415970:	00000000 	nop
  415974:	8c420080 	lw	v0,128(v0)
  415978:	00000000 	nop
  41597c:	10400021 	beqz	v0,415a04 <check_connection_end+0x454>
  415980:	00000000 	nop
  415984:	8fc20030 	lw	v0,48(s8)
  415988:	00000000 	nop
  41598c:	2442000c 	addiu	v0,v0,12
  415990:	00402021 	move	a0,v0
  415994:	8f998628 	lw	t9,-31192(gp)
  415998:	00000000 	nop
  41599c:	0320f809 	jalr	t9
  4159a0:	00000000 	nop
  4159a4:	8fdc0010 	lw	gp,16(s8)
  4159a8:	10400009 	beqz	v0,4159d0 <check_connection_end+0x420>
  4159ac:	00000000 	nop
  4159b0:	8fc20030 	lw	v0,48(s8)
  4159b4:	00000000 	nop
  4159b8:	8c420068 	lw	v0,104(v0)
  4159bc:	00000000 	nop
  4159c0:	14400003 	bnez	v0,4159d0 <check_connection_end+0x420>
  4159c4:	00000000 	nop
  4159c8:	1000000e 	b	415a04 <check_connection_end+0x454>
  4159cc:	00000000 	nop
	loglog(RC_CLASH,
  4159d0:	24040017 	li	a0,23
  4159d4:	8f858020 	lw	a1,-32736(gp)
  4159d8:	00000000 	nop
  4159dc:	24a55778 	addiu	a1,a1,22392
  4159e0:	8f998c48 	lw	t9,-29624(gp)
  4159e4:	00000000 	nop
  4159e8:	0320f809 	jalr	t9
  4159ec:	00000000 	nop
  4159f0:	8fdc0010 	lw	gp,16(s8)
  4159f4:	00000000 	nop
	    "virtual IP must only be used with %%any and without client");
	return FALSE;
  4159f8:	00001021 	move	v0,zero
  4159fc:	10000002 	b	415a08 <check_connection_end+0x458>
  415a00:	00000000 	nop
    }
#endif
    return TRUE;	/* happy */
  415a04:	24020001 	li	v0,1
}
  415a08:	03c0e821 	move	sp,s8
  415a0c:	8fbf002c 	lw	ra,44(sp)
  415a10:	8fbe0028 	lw	s8,40(sp)
  415a14:	8fb00020 	lw	s0,32(sp)
  415a18:	27bd0030 	addiu	sp,sp,48
  415a1c:	03e00008 	jr	ra
  415a20:	00000000 	nop

00415a24 <add_connection>:
  415a24:	3c1c0fbf 	lui	gp,0xfbf
  415a28:	279c6f4c 	addiu	gp,gp,28492
  415a2c:	0399e021 	addu	gp,gp,t9
  415a30:	27bdf8f8 	addiu	sp,sp,-1800
  415a34:	afbc0020 	sw	gp,32(sp)
  415a38:	afbf0704 	sw	ra,1796(sp)
  415a3c:	afbe0700 	sw	s8,1792(sp)
  415a40:	afbc06fc 	sw	gp,1788(sp)
  415a44:	afb006f8 	sw	s0,1784(sp)
  415a48:	03a0f021 	move	s8,sp
  415a4c:	afc40708 	sw	a0,1800(s8)

void
add_connection(const struct whack_message *wm)
{
    if (con_by_name(wm->name, FALSE) != NULL)
  415a50:	8fc20708 	lw	v0,1800(s8)
  415a54:	00000000 	nop
  415a58:	8c440008 	lw	a0,8(v0)
  415a5c:	00002821 	move	a1,zero
  415a60:	8f998be8 	lw	t9,-29720(gp)
  415a64:	00000000 	nop
  415a68:	0320f809 	jalr	t9
  415a6c:	00000000 	nop
  415a70:	8fdc0020 	lw	gp,32(s8)
  415a74:	1040000f 	beqz	v0,415ab4 <add_connection+0x90>
  415a78:	00000000 	nop
    {
	loglog(RC_DUPNAME, "attempt to redefine connection \"%s\"", wm->name);
  415a7c:	24040014 	li	a0,20
  415a80:	8f858020 	lw	a1,-32736(gp)
  415a84:	00000000 	nop
  415a88:	24a557b4 	addiu	a1,a1,22452
  415a8c:	8fc20708 	lw	v0,1800(s8)
  415a90:	00000000 	nop
  415a94:	8c460008 	lw	a2,8(v0)
  415a98:	8f998c48 	lw	t9,-29624(gp)
  415a9c:	00000000 	nop
  415aa0:	0320f809 	jalr	t9
  415aa4:	00000000 	nop
  415aa8:	8fdc0020 	lw	gp,32(s8)
  415aac:	1000046d 	b	416c64 <add_connection+0x1240>
  415ab0:	00000000 	nop
    }
    else if ((wm->policy & POLICY_ID_AUTH_MASK) == LEMPTY)
  415ab4:	8fc20708 	lw	v0,1800(s8)
  415ab8:	00000000 	nop
  415abc:	8c440020 	lw	a0,32(v0)
  415ac0:	8c450024 	lw	a1,36(v0)
  415ac4:	24020000 	li	v0,0
  415ac8:	24032003 	li	v1,8195
  415acc:	00822024 	and	a0,a0,v0
  415ad0:	00a32824 	and	a1,a1,v1
  415ad4:	00801021 	move	v0,a0
  415ad8:	00451025 	or	v0,v0,a1
  415adc:	1440000c 	bnez	v0,415b10 <add_connection+0xec>
  415ae0:	00000000 	nop
    {
	/* this should have been diagnosed by whack, so we need not be clear
	 * !!! overloaded use of RC_CLASH
	 */
	loglog(RC_CLASH, "must specify --rsasig or --psk for a connection");
  415ae4:	24040017 	li	a0,23
  415ae8:	8f858020 	lw	a1,-32736(gp)
  415aec:	00000000 	nop
  415af0:	24a557d8 	addiu	a1,a1,22488
  415af4:	8f998c48 	lw	t9,-29624(gp)
  415af8:	00000000 	nop
  415afc:	0320f809 	jalr	t9
  415b00:	00000000 	nop
  415b04:	8fdc0020 	lw	gp,32(s8)
  415b08:	10000456 	b	416c64 <add_connection+0x1240>
  415b0c:	00000000 	nop
    }
    else if (wm->right.protocol != wm->left.protocol)
  415b10:	8fc20708 	lw	v0,1800(s8)
  415b14:	00000000 	nop
  415b18:	9043014c 	lbu	v1,332(v0)
  415b1c:	8fc20708 	lw	v0,1800(s8)
  415b20:	00000000 	nop
  415b24:	904200c8 	lbu	v0,200(v0)
  415b28:	00000000 	nop
  415b2c:	1062000c 	beq	v1,v0,415b60 <add_connection+0x13c>
  415b30:	00000000 	nop
    {
	/* this should haven been diagnosed by whack
	 * !!! overloaded use of RC_CLASH
	 */
	loglog(RC_CLASH, "the protocol must be the same for leftport and rightport");
  415b34:	24040017 	li	a0,23
  415b38:	8f858020 	lw	a1,-32736(gp)
  415b3c:	00000000 	nop
  415b40:	24a55808 	addiu	a1,a1,22536
  415b44:	8f998c48 	lw	t9,-29624(gp)
  415b48:	00000000 	nop
  415b4c:	0320f809 	jalr	t9
  415b50:	00000000 	nop
  415b54:	8fdc0020 	lw	gp,32(s8)
  415b58:	10000442 	b	416c64 <add_connection+0x1240>
  415b5c:	00000000 	nop
    }
    else if (check_connection_end(&wm->right, &wm->left, wm)
    && check_connection_end(&wm->left, &wm->right, wm))
  415b60:	8fc20708 	lw	v0,1800(s8)
  415b64:	00000000 	nop
  415b68:	244300d0 	addiu	v1,v0,208
  415b6c:	8fc20708 	lw	v0,1800(s8)
  415b70:	00000000 	nop
  415b74:	2442004c 	addiu	v0,v0,76
  415b78:	00602021 	move	a0,v1
  415b7c:	00402821 	move	a1,v0
  415b80:	8fc60708 	lw	a2,1800(s8)
  415b84:	8f998024 	lw	t9,-32732(gp)
  415b88:	00000000 	nop
  415b8c:	273955b0 	addiu	t9,t9,21936
  415b90:	00000000 	nop
  415b94:	0320f809 	jalr	t9
  415b98:	00000000 	nop
  415b9c:	8fdc0020 	lw	gp,32(s8)
  415ba0:	10400430 	beqz	v0,416c64 <add_connection+0x1240>
  415ba4:	00000000 	nop
  415ba8:	8fc20708 	lw	v0,1800(s8)
  415bac:	00000000 	nop
  415bb0:	2443004c 	addiu	v1,v0,76
  415bb4:	8fc20708 	lw	v0,1800(s8)
  415bb8:	00000000 	nop
  415bbc:	244200d0 	addiu	v0,v0,208
  415bc0:	00602021 	move	a0,v1
  415bc4:	00402821 	move	a1,v0
  415bc8:	8fc60708 	lw	a2,1800(s8)
  415bcc:	8f998024 	lw	t9,-32732(gp)
  415bd0:	00000000 	nop
  415bd4:	273955b0 	addiu	t9,t9,21936
  415bd8:	00000000 	nop
  415bdc:	0320f809 	jalr	t9
  415be0:	00000000 	nop
  415be4:	8fdc0020 	lw	gp,32(s8)
  415be8:	1040041e 	beqz	v0,416c64 <add_connection+0x1240>
  415bec:	00000000 	nop
    {
	bool same_rightca, same_leftca;
	struct connection *c = alloc_thing(struct connection, "struct connection");
  415bf0:	240401d8 	li	a0,472
  415bf4:	8f858020 	lw	a1,-32736(gp)
  415bf8:	00000000 	nop
  415bfc:	24a55844 	addiu	a1,a1,22596
  415c00:	8f998084 	lw	t9,-32636(gp)
  415c04:	00000000 	nop
  415c08:	0320f809 	jalr	t9
  415c0c:	00000000 	nop
  415c10:	8fdc0020 	lw	gp,32(s8)
  415c14:	afc20030 	sw	v0,48(s8)

	c->name = wm->name;
  415c18:	8fc20708 	lw	v0,1800(s8)
  415c1c:	00000000 	nop
  415c20:	8c430008 	lw	v1,8(v0)
  415c24:	8fc20030 	lw	v0,48(s8)
  415c28:	00000000 	nop
  415c2c:	ac430000 	sw	v1,0(v0)

	c->policy = wm->policy;
  415c30:	8fc20708 	lw	v0,1800(s8)
  415c34:	00000000 	nop
  415c38:	8c430024 	lw	v1,36(v0)
  415c3c:	8c420020 	lw	v0,32(v0)
  415c40:	8fc40030 	lw	a0,48(s8)
  415c44:	00000000 	nop
  415c48:	ac820008 	sw	v0,8(a0)
  415c4c:	ac83000c 	sw	v1,12(a0)

	if ((c->policy & POLICY_COMPRESS) && !can_do_IPcomp)
  415c50:	8fc20030 	lw	v0,48(s8)
  415c54:	00000000 	nop
  415c58:	8c440008 	lw	a0,8(v0)
  415c5c:	8c45000c 	lw	a1,12(v0)
  415c60:	24020000 	li	v0,0
  415c64:	24030010 	li	v1,16
  415c68:	00822024 	and	a0,a0,v0
  415c6c:	00a32824 	and	a1,a1,v1
  415c70:	00801021 	move	v0,a0
  415c74:	00451025 	or	v0,v0,a1
  415c78:	10400014 	beqz	v0,415ccc <add_connection+0x2a8>
  415c7c:	00000000 	nop
  415c80:	8f828774 	lw	v0,-30860(gp)
  415c84:	00000000 	nop
  415c88:	8c420000 	lw	v0,0(v0)
  415c8c:	00000000 	nop
  415c90:	1440000e 	bnez	v0,415ccc <add_connection+0x2a8>
  415c94:	00000000 	nop
	    loglog(RC_COMMENT
  415c98:	00002021 	move	a0,zero
  415c9c:	8f858020 	lw	a1,-32736(gp)
  415ca0:	00000000 	nop
  415ca4:	24a55858 	addiu	a1,a1,22616
  415ca8:	8fc20030 	lw	v0,48(s8)
  415cac:	00000000 	nop
  415cb0:	8c460000 	lw	a2,0(v0)
  415cb4:	8f998c48 	lw	t9,-29624(gp)
  415cb8:	00000000 	nop
  415cbc:	0320f809 	jalr	t9
  415cc0:	00000000 	nop
  415cc4:	8fdc0020 	lw	gp,32(s8)
  415cc8:	00000000 	nop
		, "ignoring --compress in \"%s\" because KLIPS is not configured to do IPCOMP"
		, c->name);

#ifndef NO_KERNEL_ALG
	/* if (wm->esp)  */
	{
		const char *ugh;
		DBG_log("from whack: got --esp=%s", wm->esp ? wm->esp: "NULL");
  415ccc:	8fc20708 	lw	v0,1800(s8)
  415cd0:	00000000 	nop
  415cd4:	8c420160 	lw	v0,352(v0)
  415cd8:	00000000 	nop
  415cdc:	afc206b0 	sw	v0,1712(s8)
  415ce0:	8fc20708 	lw	v0,1800(s8)
  415ce4:	00000000 	nop
  415ce8:	8c420160 	lw	v0,352(v0)
  415cec:	00000000 	nop
  415cf0:	14400006 	bnez	v0,415d0c <add_connection+0x2e8>
  415cf4:	00000000 	nop
  415cf8:	8f828020 	lw	v0,-32736(gp)
  415cfc:	00000000 	nop
  415d00:	244258a4 	addiu	v0,v0,22692
  415d04:	00000000 	nop
  415d08:	afc206b0 	sw	v0,1712(s8)
  415d0c:	8f848020 	lw	a0,-32736(gp)
  415d10:	00000000 	nop
  415d14:	248458ac 	addiu	a0,a0,22700
  415d18:	8fc506b0 	lw	a1,1712(s8)
  415d1c:	8f9983b8 	lw	t9,-31816(gp)
  415d20:	00000000 	nop
  415d24:	0320f809 	jalr	t9
  415d28:	00000000 	nop
  415d2c:	8fdc0020 	lw	gp,32(s8)
  415d30:	00000000 	nop
		c->alg_info_esp= alg_info_esp_create_from_str(wm->esp? wm->esp : "", &ugh);
  415d34:	8fc30030 	lw	v1,48(s8)
  415d38:	00000000 	nop
  415d3c:	afc306b4 	sw	v1,1716(s8)
  415d40:	8fc20708 	lw	v0,1800(s8)
  415d44:	00000000 	nop
  415d48:	8c420160 	lw	v0,352(v0)
  415d4c:	00000000 	nop
  415d50:	afc206b8 	sw	v0,1720(s8)
  415d54:	8fc20708 	lw	v0,1800(s8)
  415d58:	00000000 	nop
  415d5c:	8c420160 	lw	v0,352(v0)
  415d60:	00000000 	nop
  415d64:	14400006 	bnez	v0,415d80 <add_connection+0x35c>
  415d68:	00000000 	nop
  415d6c:	8f828020 	lw	v0,-32736(gp)
  415d70:	00000000 	nop
  415d74:	24425558 	addiu	v0,v0,21848
  415d78:	00000000 	nop
  415d7c:	afc206b8 	sw	v0,1720(s8)
  415d80:	8fc406b8 	lw	a0,1720(s8)
  415d84:	27c50034 	addiu	a1,s8,52
  415d88:	8f99824c 	lw	t9,-32180(gp)
  415d8c:	00000000 	nop
  415d90:	0320f809 	jalr	t9
  415d94:	00000000 	nop
  415d98:	8fdc0020 	lw	gp,32(s8)
  415d9c:	8fc306b4 	lw	v1,1716(s8)
  415da0:	00000000 	nop
  415da4:	ac6201bc 	sw	v0,444(v1)
		DBG(DBG_CRYPT|DBG_CONTROL, 
  415da8:	8f8284f8 	lw	v0,-31496(gp)
  415dac:	00000000 	nop
  415db0:	8c420000 	lw	v0,0(v0)
  415db4:	00000000 	nop
  415db8:	30420012 	andi	v0,v0,0x12
  415dbc:	10400020 	beqz	v0,415e40 <add_connection+0x41c>
  415dc0:	00000000 	nop
  415dc4:	8fc20030 	lw	v0,48(s8)
  415dc8:	00000000 	nop
  415dcc:	8c4201bc 	lw	v0,444(v0)
  415dd0:	00000000 	nop
  415dd4:	1040000e 	beqz	v0,415e10 <add_connection+0x3ec>
  415dd8:	00000000 	nop
  415ddc:	8f848018 	lw	a0,-32744(gp)
  415de0:	00000000 	nop
  415de4:	24840700 	addiu	a0,a0,1792
  415de8:	24050100 	li	a1,256
  415dec:	8fc20030 	lw	v0,48(s8)
  415df0:	00000000 	nop
  415df4:	8c4601bc 	lw	a2,444(v0)
  415df8:	8f998068 	lw	t9,-32664(gp)
  415dfc:	00000000 	nop
  415e00:	0320f809 	jalr	t9
  415e04:	00000000 	nop
  415e08:	8fdc0020 	lw	gp,32(s8)
  415e0c:	00000000 	nop
  415e10:	8f848020 	lw	a0,-32736(gp)
  415e14:	00000000 	nop
  415e18:	248458c8 	addiu	a0,a0,22728
  415e1c:	8f858018 	lw	a1,-32744(gp)
  415e20:	00000000 	nop
  415e24:	24a50700 	addiu	a1,a1,1792
  415e28:	8f9983b8 	lw	t9,-31816(gp)
  415e2c:	00000000 	nop
  415e30:	0320f809 	jalr	t9
  415e34:	00000000 	nop
  415e38:	8fdc0020 	lw	gp,32(s8)
  415e3c:	00000000 	nop
			static char buf[256]="<NULL>";
			if (c->alg_info_esp)
				alg_info_snprint(buf, sizeof(buf), 
					(struct alg_info *)c->alg_info_esp);
			DBG_log("esp string values: %s", buf);
		);
		if (c->alg_info_esp) {
  415e40:	8fc20030 	lw	v0,48(s8)
  415e44:	00000000 	nop
  415e48:	8c4201bc 	lw	v0,444(v0)
  415e4c:	00000000 	nop
  415e50:	10400017 	beqz	v0,415eb0 <add_connection+0x48c>
  415e54:	00000000 	nop
			if (c->alg_info_esp->alg_info_cnt==0) {
  415e58:	8fc20030 	lw	v0,48(s8)
  415e5c:	00000000 	nop
  415e60:	8c4201bc 	lw	v0,444(v0)
  415e64:	00000000 	nop
  415e68:	8c420000 	lw	v0,0(v0)
  415e6c:	00000000 	nop
  415e70:	14400026 	bnez	v0,415f0c <add_connection+0x4e8>
  415e74:	00000000 	nop
				loglog(RC_LOG_SERIOUS
  415e78:	24040003 	li	a0,3
  415e7c:	8f858020 	lw	a1,-32736(gp)
  415e80:	00000000 	nop
  415e84:	24a558e0 	addiu	a1,a1,22752
  415e88:	8fc20708 	lw	v0,1800(s8)
  415e8c:	00000000 	nop
  415e90:	8c460160 	lw	a2,352(v0)
  415e94:	8f998c48 	lw	t9,-29624(gp)
  415e98:	00000000 	nop
  415e9c:	0320f809 	jalr	t9
  415ea0:	00000000 	nop
  415ea4:	8fdc0020 	lw	gp,32(s8)
  415ea8:	10000018 	b	415f0c <add_connection+0x4e8>
  415eac:	00000000 	nop
					, "got 0 transforms for esp=\"%s\""
					, wm->esp);
			}
		} else {
			loglog(RC_LOG_SERIOUS
  415eb0:	8fc20034 	lw	v0,52(s8)
  415eb4:	00000000 	nop
  415eb8:	afc206bc 	sw	v0,1724(s8)
  415ebc:	8fc20034 	lw	v0,52(s8)
  415ec0:	00000000 	nop
  415ec4:	14400006 	bnez	v0,415ee0 <add_connection+0x4bc>
  415ec8:	00000000 	nop
  415ecc:	8f838020 	lw	v1,-32736(gp)
  415ed0:	00000000 	nop
  415ed4:	24635900 	addiu	v1,v1,22784
  415ed8:	00000000 	nop
  415edc:	afc306bc 	sw	v1,1724(s8)
  415ee0:	24040003 	li	a0,3
  415ee4:	8f858020 	lw	a1,-32736(gp)
  415ee8:	00000000 	nop
  415eec:	24a55908 	addiu	a1,a1,22792
  415ef0:	8fc606bc 	lw	a2,1724(s8)
  415ef4:	8f998c48 	lw	t9,-29624(gp)
  415ef8:	00000000 	nop
  415efc:	0320f809 	jalr	t9
  415f00:	00000000 	nop
  415f04:	8fdc0020 	lw	gp,32(s8)
  415f08:	00000000 	nop
				, "esp string error: %s"
				, ugh? ugh : "Unknown");
		}
	}
#endif	
#ifndef NO_IKE_ALG
	/* if (wm->ike) */
	{
		const char *ugh;
		DBG_log("from whack: got --ike=%s", wm->ike ? wm->ike: "NULL");
  415f0c:	8fc20708 	lw	v0,1800(s8)
  415f10:	00000000 	nop
  415f14:	8c420158 	lw	v0,344(v0)
  415f18:	00000000 	nop
  415f1c:	afc206c0 	sw	v0,1728(s8)
  415f20:	8fc20708 	lw	v0,1800(s8)
  415f24:	00000000 	nop
  415f28:	8c420158 	lw	v0,344(v0)
  415f2c:	00000000 	nop
  415f30:	14400006 	bnez	v0,415f4c <add_connection+0x528>
  415f34:	00000000 	nop
  415f38:	8f828020 	lw	v0,-32736(gp)
  415f3c:	00000000 	nop
  415f40:	244258a4 	addiu	v0,v0,22692
  415f44:	00000000 	nop
  415f48:	afc206c0 	sw	v0,1728(s8)
  415f4c:	8f848020 	lw	a0,-32736(gp)
  415f50:	00000000 	nop
  415f54:	24845920 	addiu	a0,a0,22816
  415f58:	8fc506c0 	lw	a1,1728(s8)
  415f5c:	8f9983b8 	lw	t9,-31816(gp)
  415f60:	00000000 	nop
  415f64:	0320f809 	jalr	t9
  415f68:	00000000 	nop
  415f6c:	8fdc0020 	lw	gp,32(s8)
  415f70:	00000000 	nop
		c->alg_info_ike= alg_info_ike_create_from_str(wm->ike? wm->ike : "", &ugh);
  415f74:	8fc30030 	lw	v1,48(s8)
  415f78:	00000000 	nop
  415f7c:	afc306c4 	sw	v1,1732(s8)
  415f80:	8fc20708 	lw	v0,1800(s8)
  415f84:	00000000 	nop
  415f88:	8c420158 	lw	v0,344(v0)
  415f8c:	00000000 	nop
  415f90:	afc206c8 	sw	v0,1736(s8)
  415f94:	8fc20708 	lw	v0,1800(s8)
  415f98:	00000000 	nop
  415f9c:	8c420158 	lw	v0,344(v0)
  415fa0:	00000000 	nop
  415fa4:	14400006 	bnez	v0,415fc0 <add_connection+0x59c>
  415fa8:	00000000 	nop
  415fac:	8f828020 	lw	v0,-32736(gp)
  415fb0:	00000000 	nop
  415fb4:	24425558 	addiu	v0,v0,21848
  415fb8:	00000000 	nop
  415fbc:	afc206c8 	sw	v0,1736(s8)
  415fc0:	8fc406c8 	lw	a0,1736(s8)
  415fc4:	27c50038 	addiu	a1,s8,56
  415fc8:	8f9989bc 	lw	t9,-30276(gp)
  415fcc:	00000000 	nop
  415fd0:	0320f809 	jalr	t9
  415fd4:	00000000 	nop
  415fd8:	8fdc0020 	lw	gp,32(s8)
  415fdc:	8fc306c4 	lw	v1,1732(s8)
  415fe0:	00000000 	nop
  415fe4:	ac6201c0 	sw	v0,448(v1)
		DBG(DBG_CRYPT|DBG_CONTROL, 
  415fe8:	8f8284f8 	lw	v0,-31496(gp)
  415fec:	00000000 	nop
  415ff0:	8c420000 	lw	v0,0(v0)
  415ff4:	00000000 	nop
  415ff8:	30420012 	andi	v0,v0,0x12
  415ffc:	10400020 	beqz	v0,416080 <add_connection+0x65c>
  416000:	00000000 	nop
  416004:	8fc20030 	lw	v0,48(s8)
  416008:	00000000 	nop
  41600c:	8c4201c0 	lw	v0,448(v0)
  416010:	00000000 	nop
  416014:	1040000e 	beqz	v0,416050 <add_connection+0x62c>
  416018:	00000000 	nop
  41601c:	8f848018 	lw	a0,-32744(gp)
  416020:	00000000 	nop
  416024:	24840800 	addiu	a0,a0,2048
  416028:	24050100 	li	a1,256
  41602c:	8fc20030 	lw	v0,48(s8)
  416030:	00000000 	nop
  416034:	8c4601c0 	lw	a2,448(v0)
  416038:	8f998068 	lw	t9,-32664(gp)
  41603c:	00000000 	nop
  416040:	0320f809 	jalr	t9
  416044:	00000000 	nop
  416048:	8fdc0020 	lw	gp,32(s8)
  41604c:	00000000 	nop
  416050:	8f848020 	lw	a0,-32736(gp)
  416054:	00000000 	nop
  416058:	2484593c 	addiu	a0,a0,22844
  41605c:	8f858018 	lw	a1,-32744(gp)
  416060:	00000000 	nop
  416064:	24a50800 	addiu	a1,a1,2048
  416068:	8f9983b8 	lw	t9,-31816(gp)
  41606c:	00000000 	nop
  416070:	0320f809 	jalr	t9
  416074:	00000000 	nop
  416078:	8fdc0020 	lw	gp,32(s8)
  41607c:	00000000 	nop
				static char buf[256]="<NULL>";
				if (c->alg_info_ike)
					alg_info_snprint(buf, sizeof(buf),
						(struct alg_info *)c->alg_info_ike);
				DBG_log("ike string values: %s", buf);
				);
		if (c->alg_info_ike) {
  416080:	8fc20030 	lw	v0,48(s8)
  416084:	00000000 	nop
  416088:	8c4201c0 	lw	v0,448(v0)
  41608c:	00000000 	nop
  416090:	10400017 	beqz	v0,4160f0 <add_connection+0x6cc>
  416094:	00000000 	nop
			if (c->alg_info_ike->alg_info_cnt==0) {
  416098:	8fc20030 	lw	v0,48(s8)
  41609c:	00000000 	nop
  4160a0:	8c4201c0 	lw	v0,448(v0)
  4160a4:	00000000 	nop
  4160a8:	8c420000 	lw	v0,0(v0)
  4160ac:	00000000 	nop
  4160b0:	14400026 	bnez	v0,41614c <add_connection+0x728>
  4160b4:	00000000 	nop
				loglog(RC_LOG_SERIOUS
  4160b8:	24040003 	li	a0,3
  4160bc:	8f858020 	lw	a1,-32736(gp)
  4160c0:	00000000 	nop
  4160c4:	24a55954 	addiu	a1,a1,22868
  4160c8:	8fc20708 	lw	v0,1800(s8)
  4160cc:	00000000 	nop
  4160d0:	8c460158 	lw	a2,344(v0)
  4160d4:	8f998c48 	lw	t9,-29624(gp)
  4160d8:	00000000 	nop
  4160dc:	0320f809 	jalr	t9
  4160e0:	00000000 	nop
  4160e4:	8fdc0020 	lw	gp,32(s8)
  4160e8:	10000018 	b	41614c <add_connection+0x728>
  4160ec:	00000000 	nop
					, "got 0 transforms for ike=\"%s\""
					, wm->ike);
			}
		} else {
			loglog(RC_LOG_SERIOUS
  4160f0:	8fc20038 	lw	v0,56(s8)
  4160f4:	00000000 	nop
  4160f8:	afc206cc 	sw	v0,1740(s8)
  4160fc:	8fc20038 	lw	v0,56(s8)
  416100:	00000000 	nop
  416104:	14400006 	bnez	v0,416120 <add_connection+0x6fc>
  416108:	00000000 	nop
  41610c:	8f838020 	lw	v1,-32736(gp)
  416110:	00000000 	nop
  416114:	24635900 	addiu	v1,v1,22784
  416118:	00000000 	nop
  41611c:	afc306cc 	sw	v1,1740(s8)
  416120:	24040003 	li	a0,3
  416124:	8f858020 	lw	a1,-32736(gp)
  416128:	00000000 	nop
  41612c:	24a55974 	addiu	a1,a1,22900
  416130:	8fc606cc 	lw	a2,1740(s8)
  416134:	8f998c48 	lw	t9,-29624(gp)
  416138:	00000000 	nop
  41613c:	0320f809 	jalr	t9
  416140:	00000000 	nop
  416144:	8fdc0020 	lw	gp,32(s8)
  416148:	00000000 	nop
				, "ike string error: %s"
				, ugh? ugh : "Unknown");
		}
	}
#endif
	c->sa_ike_life_seconds = wm->sa_ike_life_seconds;
  41614c:	8fc20708 	lw	v0,1800(s8)
  416150:	00000000 	nop
  416154:	8c430028 	lw	v1,40(v0)
  416158:	8fc20030 	lw	v0,48(s8)
  41615c:	00000000 	nop
  416160:	ac430010 	sw	v1,16(v0)
	c->sa_ipsec_life_seconds = wm->sa_ipsec_life_seconds;
  416164:	8fc20708 	lw	v0,1800(s8)
  416168:	00000000 	nop
  41616c:	8c43002c 	lw	v1,44(v0)
  416170:	8fc20030 	lw	v0,48(s8)
  416174:	00000000 	nop
  416178:	ac430014 	sw	v1,20(v0)
	c->sa_rekey_margin = wm->sa_rekey_margin;
  41617c:	8fc20708 	lw	v0,1800(s8)
  416180:	00000000 	nop
  416184:	8c430030 	lw	v1,48(v0)
  416188:	8fc20030 	lw	v0,48(s8)
  41618c:	00000000 	nop
  416190:	ac430018 	sw	v1,24(v0)
	c->sa_rekey_fuzz = wm->sa_rekey_fuzz;
  416194:	8fc20708 	lw	v0,1800(s8)
  416198:	00000000 	nop
  41619c:	8c430034 	lw	v1,52(v0)
  4161a0:	8fc20030 	lw	v0,48(s8)
  4161a4:	00000000 	nop
  4161a8:	ac43001c 	sw	v1,28(v0)
	c->sa_keying_tries = wm->sa_keying_tries;
  4161ac:	8fc20708 	lw	v0,1800(s8)
  4161b0:	00000000 	nop
  4161b4:	8c430038 	lw	v1,56(v0)
  4161b8:	8fc20030 	lw	v0,48(s8)
  4161bc:	00000000 	nop
  4161c0:	ac430020 	sw	v1,32(v0)
#ifdef DPD
	c->dpd_delay = wm->dpd_delay;
  4161c4:	8fc20708 	lw	v0,1800(s8)
  4161c8:	00000000 	nop
  4161cc:	8c43003c 	lw	v1,60(v0)
  4161d0:	8fc20030 	lw	v0,48(s8)
  4161d4:	00000000 	nop
  4161d8:	ac430024 	sw	v1,36(v0)
	c->dpd_timeout = wm->dpd_timeout;
  4161dc:	8fc20708 	lw	v0,1800(s8)
  4161e0:	00000000 	nop
  4161e4:	8c430040 	lw	v1,64(v0)
  4161e8:	8fc20030 	lw	v0,48(s8)
  4161ec:	00000000 	nop
  4161f0:	ac430028 	sw	v1,40(v0)
	c->dpd_action = wm->dpd_action;
  4161f4:	8fc20708 	lw	v0,1800(s8)
  4161f8:	00000000 	nop
  4161fc:	8c430044 	lw	v1,68(v0)
  416200:	8fc20030 	lw	v0,48(s8)
  416204:	00000000 	nop
  416208:	ac43002c 	sw	v1,44(v0)
#endif
	c->addr_family = wm->addr_family;
  41620c:	8fc20708 	lw	v0,1800(s8)
  416210:	00000000 	nop
  416214:	94430154 	lhu	v1,340(v0)
  416218:	8fc20030 	lw	v0,48(s8)
  41621c:	00000000 	nop
  416220:	a44301b4 	sh	v1,436(v0)
	c->tunnel_addr_family = wm->tunnel_addr_family;
  416224:	8fc20708 	lw	v0,1800(s8)
  416228:	00000000 	nop
  41622c:	94430156 	lhu	v1,342(v0)
  416230:	8fc20030 	lw	v0,48(s8)
  416234:	00000000 	nop
  416238:	a44301b6 	sh	v1,438(v0)

	c->requested_ca = NULL;
  41623c:	8fc20030 	lw	v0,48(s8)
  416240:	00000000 	nop
  416244:	ac4001d0 	sw	zero,464(v0)
	
	same_leftca = extract_end(&c->this, &wm->left, "left");
  416248:	8fc20030 	lw	v0,48(s8)
  41624c:	00000000 	nop
  416250:	24430030 	addiu	v1,v0,48
  416254:	8fc20708 	lw	v0,1800(s8)
  416258:	00000000 	nop
  41625c:	2442004c 	addiu	v0,v0,76
  416260:	00602021 	move	a0,v1
  416264:	00402821 	move	a1,v0
  416268:	8f868020 	lw	a2,-32736(gp)
  41626c:	00000000 	nop
  416270:	24c6598c 	addiu	a2,a2,22924
  416274:	8f998024 	lw	t9,-32732(gp)
  416278:	00000000 	nop
  41627c:	27394d80 	addiu	t9,t9,19840
  416280:	00000000 	nop
  416284:	0320f809 	jalr	t9
  416288:	00000000 	nop
  41628c:	8fdc0020 	lw	gp,32(s8)
  416290:	afc2002c 	sw	v0,44(s8)
	same_rightca = extract_end(&c->that, &wm->right, "right");
  416294:	8fc20030 	lw	v0,48(s8)
  416298:	00000000 	nop
  41629c:	244300e0 	addiu	v1,v0,224
  4162a0:	8fc20708 	lw	v0,1800(s8)
  4162a4:	00000000 	nop
  4162a8:	244200d0 	addiu	v0,v0,208
  4162ac:	00602021 	move	a0,v1
  4162b0:	00402821 	move	a1,v0
  4162b4:	8f868020 	lw	a2,-32736(gp)
  4162b8:	00000000 	nop
  4162bc:	24c65994 	addiu	a2,a2,22932
  4162c0:	8f998024 	lw	t9,-32732(gp)
  4162c4:	00000000 	nop
  4162c8:	27394d80 	addiu	t9,t9,19840
  4162cc:	00000000 	nop
  4162d0:	0320f809 	jalr	t9
  4162d4:	00000000 	nop
  4162d8:	8fdc0020 	lw	gp,32(s8)
  4162dc:	afc20028 	sw	v0,40(s8)

	if (same_rightca)
  4162e0:	8fc20028 	lw	v0,40(s8)
  4162e4:	00000000 	nop
  4162e8:	1040000c 	beqz	v0,41631c <add_connection+0x8f8>
  4162ec:	00000000 	nop
	    c->that.ca = c->this.ca;
  4162f0:	8fc40030 	lw	a0,48(s8)
  4162f4:	8fc30030 	lw	v1,48(s8)
  4162f8:	00000000 	nop
  4162fc:	8c6200d4 	lw	v0,212(v1)
  416300:	00000000 	nop
  416304:	ac820184 	sw	v0,388(a0)
  416308:	8c6200d8 	lw	v0,216(v1)
  41630c:	00000000 	nop
  416310:	ac820188 	sw	v0,392(a0)
  416314:	1000000e 	b	416350 <add_connection+0x92c>
  416318:	00000000 	nop
	else if (same_leftca)
  41631c:	8fc2002c 	lw	v0,44(s8)
  416320:	00000000 	nop
  416324:	1040000a 	beqz	v0,416350 <add_connection+0x92c>
  416328:	00000000 	nop
	    c->this.ca = c->that.ca;
  41632c:	8fc40030 	lw	a0,48(s8)
  416330:	8fc30030 	lw	v1,48(s8)
  416334:	00000000 	nop
  416338:	8c620184 	lw	v0,388(v1)
  41633c:	00000000 	nop
  416340:	ac8200d4 	sw	v0,212(a0)
  416344:	8c620188 	lw	v0,392(v1)
  416348:	00000000 	nop
  41634c:	ac8200d8 	sw	v0,216(a0)

	default_end(&c->this, &c->that.host_addr);
  416350:	8fc20030 	lw	v0,48(s8)
  416354:	00000000 	nop
  416358:	24430030 	addiu	v1,v0,48
  41635c:	8fc20030 	lw	v0,48(s8)
  416360:	00000000 	nop
  416364:	24420108 	addiu	v0,v0,264
  416368:	00602021 	move	a0,v1
  41636c:	00402821 	move	a1,v0
  416370:	8f998024 	lw	t9,-32732(gp)
  416374:	00000000 	nop
  416378:	27394050 	addiu	t9,t9,16464
  41637c:	00000000 	nop
  416380:	0320f809 	jalr	t9
  416384:	00000000 	nop
  416388:	8fdc0020 	lw	gp,32(s8)
  41638c:	00000000 	nop
	default_end(&c->that, &c->this.host_addr);
  416390:	8fc20030 	lw	v0,48(s8)
  416394:	00000000 	nop
  416398:	244300e0 	addiu	v1,v0,224
  41639c:	8fc20030 	lw	v0,48(s8)
  4163a0:	00000000 	nop
  4163a4:	24420058 	addiu	v0,v0,88
  4163a8:	00602021 	move	a0,v1
  4163ac:	00402821 	move	a1,v0
  4163b0:	8f998024 	lw	t9,-32732(gp)
  4163b4:	00000000 	nop
  4163b8:	27394050 	addiu	t9,t9,16464
  4163bc:	00000000 	nop
  4163c0:	0320f809 	jalr	t9
  4163c4:	00000000 	nop
  4163c8:	8fdc0020 	lw	gp,32(s8)
  4163cc:	00000000 	nop

	/* force any wildcard host IP address, any wildcard subnet
	 * or any wildcard ID to that end
	 */
	if (isanyaddr(&c->this.host_addr) || c->this.has_client_wildcard
	|| c->this.has_id_wildcards)
  4163d0:	8fc20030 	lw	v0,48(s8)
  4163d4:	00000000 	nop
  4163d8:	24420058 	addiu	v0,v0,88
  4163dc:	00402021 	move	a0,v0
  4163e0:	8f998628 	lw	t9,-31192(gp)
  4163e4:	00000000 	nop
  4163e8:	0320f809 	jalr	t9
  4163ec:	00000000 	nop
  4163f0:	8fdc0020 	lw	gp,32(s8)
  4163f4:	1440000f 	bnez	v0,416434 <add_connection+0xa10>
  4163f8:	00000000 	nop
  4163fc:	8fc20030 	lw	v0,48(s8)
  416400:	00000000 	nop
  416404:	8c4200b8 	lw	v0,184(v0)
  416408:	00000000 	nop
  41640c:	14400009 	bnez	v0,416434 <add_connection+0xa10>
  416410:	00000000 	nop
  416414:	8fc20030 	lw	v0,48(s8)
  416418:	00000000 	nop
  41641c:	8c4200bc 	lw	v0,188(v0)
  416420:	00000000 	nop
  416424:	14400003 	bnez	v0,416434 <add_connection+0xa10>
  416428:	00000000 	nop
  41642c:	10000028 	b	4164d0 <add_connection+0xaac>
  416430:	00000000 	nop
	{
	    struct end t = c->this;
  416434:	8fc20030 	lw	v0,48(s8)
  416438:	00000000 	nop
  41643c:	24420030 	addiu	v0,v0,48
  416440:	27c40040 	addiu	a0,s8,64
  416444:	00402821 	move	a1,v0
  416448:	240600b0 	li	a2,176
  41644c:	8f998a30 	lw	t9,-30160(gp)
  416450:	00000000 	nop
  416454:	0320f809 	jalr	t9
  416458:	00000000 	nop
  41645c:	8fdc0020 	lw	gp,32(s8)
  416460:	00000000 	nop

	    c->this = c->that;
  416464:	8fc20030 	lw	v0,48(s8)
  416468:	00000000 	nop
  41646c:	24430030 	addiu	v1,v0,48
  416470:	8fc20030 	lw	v0,48(s8)
  416474:	00000000 	nop
  416478:	244200e0 	addiu	v0,v0,224
  41647c:	00602021 	move	a0,v1
  416480:	00402821 	move	a1,v0
  416484:	240600b0 	li	a2,176
  416488:	8f998a30 	lw	t9,-30160(gp)
  41648c:	00000000 	nop
  416490:	0320f809 	jalr	t9
  416494:	00000000 	nop
  416498:	8fdc0020 	lw	gp,32(s8)
  41649c:	00000000 	nop
	    c->that = t;
  4164a0:	8fc20030 	lw	v0,48(s8)
  4164a4:	00000000 	nop
  4164a8:	244200e0 	addiu	v0,v0,224
  4164ac:	00402021 	move	a0,v0
  4164b0:	27c50040 	addiu	a1,s8,64
  4164b4:	240600b0 	li	a2,176
  4164b8:	8f998a30 	lw	t9,-30160(gp)
  4164bc:	00000000 	nop
  4164c0:	0320f809 	jalr	t9
  4164c4:	00000000 	nop
  4164c8:	8fdc0020 	lw	gp,32(s8)
  4164cc:	00000000 	nop
	}

	/* set internal fields */
	c->initiated = FALSE;
  4164d0:	8fc20030 	lw	v0,48(s8)
  4164d4:	00000000 	nop
  4164d8:	ac4001a0 	sw	zero,416(v0)
	c->instance_serial = 0;
  4164dc:	8fc20030 	lw	v0,48(s8)
  4164e0:	00000000 	nop
  4164e4:	ac400190 	sw	zero,400(v0)
	c->ac_next = connections;
  4164e8:	8f838018 	lw	v1,-32744(gp)
  4164ec:	00000000 	nop
  4164f0:	246306f0 	addiu	v1,v1,1776
  4164f4:	8c630000 	lw	v1,0(v1)
  4164f8:	8fc20030 	lw	v0,48(s8)
  4164fc:	00000000 	nop
  416500:	ac4301cc 	sw	v1,460(v0)
	connections = c;
  416504:	8fc20030 	lw	v0,48(s8)
  416508:	8f818018 	lw	at,-32744(gp)
  41650c:	00000000 	nop
  416510:	242106f0 	addiu	at,at,1776
  416514:	ac220000 	sw	v0,0(at)
	c->interface = NULL;
  416518:	8fc20030 	lw	v0,48(s8)
  41651c:	00000000 	nop
  416520:	ac400198 	sw	zero,408(v0)
	c->routing = RT_UNROUTED;
  416524:	8fc20030 	lw	v0,48(s8)
  416528:	00000000 	nop
  41652c:	ac40019c 	sw	zero,412(v0)
	c->newest_isakmp_sa = SOS_NOBODY;
  416530:	8fc20030 	lw	v0,48(s8)
  416534:	00000000 	nop
  416538:	ac4001a4 	sw	zero,420(v0)
	c->newest_ipsec_sa = SOS_NOBODY;
  41653c:	8fc20030 	lw	v0,48(s8)
  416540:	00000000 	nop
  416544:	ac4001a8 	sw	zero,424(v0)
	c->eroute_owner = SOS_NOBODY;
  416548:	8fc20030 	lw	v0,48(s8)
  41654c:	00000000 	nop
  416550:	ac4001ac 	sw	zero,428(v0)

	c->kind = (isanyaddr(&c->that.host_addr) || c->that.has_client_wildcard
  416554:	8fc20030 	lw	v0,48(s8)
  416558:	00000000 	nop
  41655c:	afc206e0 	sw	v0,1760(s8)
  416560:	afc006e4 	sw	zero,1764(s8)
  416564:	8fc20030 	lw	v0,48(s8)
  416568:	00000000 	nop
  41656c:	24420108 	addiu	v0,v0,264
  416570:	00402021 	move	a0,v0
  416574:	8f998628 	lw	t9,-31192(gp)
  416578:	00000000 	nop
  41657c:	0320f809 	jalr	t9
  416580:	00000000 	nop
  416584:	8fdc0020 	lw	gp,32(s8)
  416588:	1440000f 	bnez	v0,4165c8 <add_connection+0xba4>
  41658c:	00000000 	nop
  416590:	8fc20030 	lw	v0,48(s8)
  416594:	00000000 	nop
  416598:	8c420168 	lw	v0,360(v0)
  41659c:	00000000 	nop
  4165a0:	14400009 	bnez	v0,4165c8 <add_connection+0xba4>
  4165a4:	00000000 	nop
  4165a8:	8fc20030 	lw	v0,48(s8)
  4165ac:	00000000 	nop
  4165b0:	8c42016c 	lw	v0,364(v0)
  4165b4:	00000000 	nop
  4165b8:	14400003 	bnez	v0,4165c8 <add_connection+0xba4>
  4165bc:	00000000 	nop
  4165c0:	24030001 	li	v1,1
  4165c4:	afc306e4 	sw	v1,1764(s8)
  4165c8:	8fc306e4 	lw	v1,1764(s8)
  4165cc:	8fc206e0 	lw	v0,1760(s8)
  4165d0:	00000000 	nop
  4165d4:	ac430194 	sw	v1,404(v0)
		  || c->that.has_id_wildcards) ? CK_TEMPLATE : CK_PERMANENT;

#ifdef DEBUG
	c->extra_debugging = wm->debugging;
  4165d8:	8fc20708 	lw	v0,1800(s8)
  4165dc:	00000000 	nop
  4165e0:	8c430010 	lw	v1,16(v0)
  4165e4:	8fc20030 	lw	v0,48(s8)
  4165e8:	00000000 	nop
  4165ec:	ac4301b0 	sw	v1,432(v0)
#endif

	c->gw_info = NULL;
  4165f0:	8fc20030 	lw	v0,48(s8)
  4165f4:	00000000 	nop
  4165f8:	ac4001b8 	sw	zero,440(v0)

#ifdef VIRTUAL_IP
	passert(!(wm->left.virt && wm->right.virt));
  4165fc:	8fc20708 	lw	v0,1800(s8)
  416600:	00000000 	nop
  416604:	8c4200cc 	lw	v0,204(v0)
  416608:	00000000 	nop
  41660c:	10400014 	beqz	v0,416660 <add_connection+0xc3c>
  416610:	00000000 	nop
  416614:	8fc20708 	lw	v0,1800(s8)
  416618:	00000000 	nop
  41661c:	8c420150 	lw	v0,336(v0)
  416620:	00000000 	nop
  416624:	1040000e 	beqz	v0,416660 <add_connection+0xc3c>
  416628:	00000000 	nop
  41662c:	8f848020 	lw	a0,-32736(gp)
  416630:	00000000 	nop
  416634:	2484599c 	addiu	a0,a0,22940
  416638:	8f858020 	lw	a1,-32736(gp)
  41663c:	00000000 	nop
  416640:	24a554a4 	addiu	a1,a1,21668
  416644:	240603c2 	li	a2,962
  416648:	8f998bb8 	lw	t9,-29768(gp)
  41664c:	00000000 	nop
  416650:	0320f809 	jalr	t9
  416654:	00000000 	nop
  416658:	8fdc0020 	lw	gp,32(s8)
  41665c:	00000000 	nop
	if (wm->left.virt || wm->right.virt) {
  416660:	8fc20708 	lw	v0,1800(s8)
  416664:	00000000 	nop
  416668:	8c4200cc 	lw	v0,204(v0)
  41666c:	00000000 	nop
  416670:	14400009 	bnez	v0,416698 <add_connection+0xc74>
  416674:	00000000 	nop
  416678:	8fc20708 	lw	v0,1800(s8)
  41667c:	00000000 	nop
  416680:	8c420150 	lw	v0,336(v0)
  416684:	00000000 	nop
  416688:	14400003 	bnez	v0,416698 <add_connection+0xc74>
  41668c:	00000000 	nop
  416690:	10000040 	b	416794 <add_connection+0xd70>
  416694:	00000000 	nop
	    passert(isanyaddr(&c->that.host_addr));
  416698:	8fc20030 	lw	v0,48(s8)
  41669c:	00000000 	nop
  4166a0:	24420108 	addiu	v0,v0,264
  4166a4:	00402021 	move	a0,v0
  4166a8:	8f998628 	lw	t9,-31192(gp)
  4166ac:	00000000 	nop
  4166b0:	0320f809 	jalr	t9
  4166b4:	00000000 	nop
  4166b8:	8fdc0020 	lw	gp,32(s8)
  4166bc:	1440000e 	bnez	v0,4166f8 <add_connection+0xcd4>
  4166c0:	00000000 	nop
  4166c4:	8f848020 	lw	a0,-32736(gp)
  4166c8:	00000000 	nop
  4166cc:	248459c0 	addiu	a0,a0,22976
  4166d0:	8f858020 	lw	a1,-32736(gp)
  4166d4:	00000000 	nop
  4166d8:	24a554a4 	addiu	a1,a1,21668
  4166dc:	240603c4 	li	a2,964
  4166e0:	8f998bb8 	lw	t9,-29768(gp)
  4166e4:	00000000 	nop
  4166e8:	0320f809 	jalr	t9
  4166ec:	00000000 	nop
  4166f0:	8fdc0020 	lw	gp,32(s8)
  4166f4:	00000000 	nop
	    c->that.virt = create_virtual(c,
  4166f8:	8fc20030 	lw	v0,48(s8)
  4166fc:	00000000 	nop
  416700:	afc206e8 	sw	v0,1768(s8)
  416704:	8fc20708 	lw	v0,1800(s8)
  416708:	00000000 	nop
  41670c:	8c4200cc 	lw	v0,204(v0)
  416710:	00000000 	nop
  416714:	afc206ec 	sw	v0,1772(s8)
  416718:	8fc20708 	lw	v0,1800(s8)
  41671c:	00000000 	nop
  416720:	8c4200cc 	lw	v0,204(v0)
  416724:	00000000 	nop
  416728:	14400006 	bnez	v0,416744 <add_connection+0xd20>
  41672c:	00000000 	nop
  416730:	8fc20708 	lw	v0,1800(s8)
  416734:	00000000 	nop
  416738:	8c420150 	lw	v0,336(v0)
  41673c:	00000000 	nop
  416740:	afc206ec 	sw	v0,1772(s8)
  416744:	8fc40030 	lw	a0,48(s8)
  416748:	8fc506ec 	lw	a1,1772(s8)
  41674c:	8f998864 	lw	t9,-30620(gp)
  416750:	00000000 	nop
  416754:	0320f809 	jalr	t9
  416758:	00000000 	nop
  41675c:	8fdc0020 	lw	gp,32(s8)
  416760:	8fc306e8 	lw	v1,1768(s8)
  416764:	00000000 	nop
  416768:	ac62018c 	sw	v0,396(v1)
		wm->left.virt ? wm->left.virt : wm->right.virt);
	    if (c->that.virt)
  41676c:	8fc20030 	lw	v0,48(s8)
  416770:	00000000 	nop
  416774:	8c42018c 	lw	v0,396(v0)
  416778:	00000000 	nop
  41677c:	10400005 	beqz	v0,416794 <add_connection+0xd70>
  416780:	00000000 	nop
		c->that.has_client = TRUE;
  416784:	24030001 	li	v1,1
  416788:	8fc20030 	lw	v0,48(s8)
  41678c:	00000000 	nop
  416790:	ac430164 	sw	v1,356(v0)
	}
#endif

	unshare_connection_strings(c);
  416794:	8fc40030 	lw	a0,48(s8)
  416798:	8f998024 	lw	t9,-32732(gp)
  41679c:	00000000 	nop
  4167a0:	27394a10 	addiu	t9,t9,18960
  4167a4:	00000000 	nop
  4167a8:	0320f809 	jalr	t9
  4167ac:	00000000 	nop
  4167b0:	8fdc0020 	lw	gp,32(s8)
  4167b4:	00000000 	nop
#ifndef NO_KERNEL_ALG
	alg_info_addref((struct alg_info *)c->alg_info_esp);
  4167b8:	8fc20030 	lw	v0,48(s8)
  4167bc:	00000000 	nop
  4167c0:	8c4401bc 	lw	a0,444(v0)
  4167c4:	8f99848c 	lw	t9,-31604(gp)
  4167c8:	00000000 	nop
  4167cc:	0320f809 	jalr	t9
  4167d0:	00000000 	nop
  4167d4:	8fdc0020 	lw	gp,32(s8)
  4167d8:	00000000 	nop
#endif
#ifndef NO_IKE_ALG
	alg_info_addref((struct alg_info *)c->alg_info_ike);
  4167dc:	8fc20030 	lw	v0,48(s8)
  4167e0:	00000000 	nop
  4167e4:	8c4401c0 	lw	a0,448(v0)
  4167e8:	8f99848c 	lw	t9,-31604(gp)
  4167ec:	00000000 	nop
  4167f0:	0320f809 	jalr	t9
  4167f4:	00000000 	nop
  4167f8:	8fdc0020 	lw	gp,32(s8)
  4167fc:	00000000 	nop
#endif

	(void)orient(c);
  416800:	8fc40030 	lw	a0,48(s8)
  416804:	8f998780 	lw	t9,-30848(gp)
  416808:	00000000 	nop
  41680c:	0320f809 	jalr	t9
  416810:	00000000 	nop
  416814:	8fdc0020 	lw	gp,32(s8)
  416818:	00000000 	nop
	connect_to_host_pair(c);
  41681c:	8fc40030 	lw	a0,48(s8)
  416820:	8f998024 	lw	t9,-32732(gp)
  416824:	00000000 	nop
  416828:	27392bf0 	addiu	t9,t9,11248
  41682c:	00000000 	nop
  416830:	0320f809 	jalr	t9
  416834:	00000000 	nop
  416838:	8fdc0020 	lw	gp,32(s8)
  41683c:	00000000 	nop

	if (c->kind == CK_TEMPLATE && (c->policy & POLICY_OPPO))
  416840:	8fc20030 	lw	v0,48(s8)
  416844:	00000000 	nop
  416848:	8c420194 	lw	v0,404(v0)
  41684c:	00000000 	nop
  416850:	14400017 	bnez	v0,4168b0 <add_connection+0xe8c>
  416854:	00000000 	nop
  416858:	8fc20030 	lw	v0,48(s8)
  41685c:	00000000 	nop
  416860:	8c440008 	lw	a0,8(v0)
  416864:	8c45000c 	lw	a1,12(v0)
  416868:	24020000 	li	v0,0
  41686c:	24030800 	li	v1,2048
  416870:	00822024 	and	a0,a0,v0
  416874:	00a32824 	and	a1,a1,v1
  416878:	00801021 	move	v0,a0
  41687c:	00451025 	or	v0,v0,a1
  416880:	1040000b 	beqz	v0,4168b0 <add_connection+0xe8c>
  416884:	00000000 	nop
	    oppo_templates++;
  416888:	8f828018 	lw	v0,-32744(gp)
  41688c:	00000000 	nop
  416890:	244206fc 	addiu	v0,v0,1788
  416894:	8c420000 	lw	v0,0(v0)
  416898:	00000000 	nop
  41689c:	24420001 	addiu	v0,v0,1
  4168a0:	8f818018 	lw	at,-32744(gp)
  4168a4:	00000000 	nop
  4168a8:	242106fc 	addiu	at,at,1788
  4168ac:	ac220000 	sw	v0,0(at)

	/* log all about this connection */
	plog("added connection description \"%s\"", c->name);
  4168b0:	8f848020 	lw	a0,-32736(gp)
  4168b4:	00000000 	nop
  4168b8:	248459e0 	addiu	a0,a0,23008
  4168bc:	8fc20030 	lw	v0,48(s8)
  4168c0:	00000000 	nop
  4168c4:	8c450000 	lw	a1,0(v0)
  4168c8:	8f998abc 	lw	t9,-30020(gp)
  4168cc:	00000000 	nop
  4168d0:	0320f809 	jalr	t9
  4168d4:	00000000 	nop
  4168d8:	8fdc0020 	lw	gp,32(s8)
  4168dc:	00000000 	nop
	DBG(DBG_CONTROL,
  4168e0:	8f8284f8 	lw	v0,-31496(gp)
  4168e4:	00000000 	nop
  4168e8:	8c420000 	lw	v0,0(v0)
  4168ec:	00000000 	nop
  4168f0:	30420010 	andi	v0,v0,0x10
  4168f4:	104000db 	beqz	v0,416c64 <add_connection+0x1240>
  4168f8:	00000000 	nop
  4168fc:	8fc20030 	lw	v0,48(s8)
  416900:	00000000 	nop
  416904:	24460030 	addiu	a2,v0,48
  416908:	8fc20030 	lw	v0,48(s8)
  41690c:	00000000 	nop
  416910:	244300e0 	addiu	v1,v0,224
  416914:	24020001 	li	v0,1
  416918:	afa20010 	sw	v0,16(sp)
  41691c:	27c400f0 	addiu	a0,s8,240
  416920:	240502df 	li	a1,735
  416924:	00603821 	move	a3,v1
  416928:	8f998464 	lw	t9,-31644(gp)
  41692c:	00000000 	nop
  416930:	0320f809 	jalr	t9
  416934:	00000000 	nop
  416938:	8fdc0020 	lw	gp,32(s8)
  41693c:	8fc20030 	lw	v0,48(s8)
  416940:	00000000 	nop
  416944:	244300e0 	addiu	v1,v0,224
  416948:	8fc20030 	lw	v0,48(s8)
  41694c:	00000000 	nop
  416950:	24420030 	addiu	v0,v0,48
  416954:	afa00010 	sw	zero,16(sp)
  416958:	27c403d0 	addiu	a0,s8,976
  41695c:	240502df 	li	a1,735
  416960:	00603021 	move	a2,v1
  416964:	00403821 	move	a3,v0
  416968:	8f998464 	lw	t9,-31644(gp)
  41696c:	00000000 	nop
  416970:	0320f809 	jalr	t9
  416974:	00000000 	nop
  416978:	8fdc0020 	lw	gp,32(s8)
  41697c:	00000000 	nop
  416980:	8f848020 	lw	a0,-32736(gp)
  416984:	00000000 	nop
  416988:	24845a04 	addiu	a0,a0,23044
  41698c:	27c500f0 	addiu	a1,s8,240
  416990:	27c603d0 	addiu	a2,s8,976
  416994:	8f9983b8 	lw	t9,-31816(gp)
  416998:	00000000 	nop
  41699c:	0320f809 	jalr	t9
  4169a0:	00000000 	nop
  4169a4:	8fdc0020 	lw	gp,32(s8)
  4169a8:	8fc20030 	lw	v0,48(s8)
  4169ac:	00000000 	nop
  4169b0:	945001b4 	lhu	s0,436(v0)
  4169b4:	8fc20030 	lw	v0,48(s8)
  4169b8:	00000000 	nop
  4169bc:	24420058 	addiu	v0,v0,88
  4169c0:	00402021 	move	a0,v0
  4169c4:	8f9985d4 	lw	t9,-31276(gp)
  4169c8:	00000000 	nop
  4169cc:	0320f809 	jalr	t9
  4169d0:	00000000 	nop
  4169d4:	8fdc0020 	lw	gp,32(s8)
  4169d8:	1602006d 	bne	s0,v0,416b90 <add_connection+0x116c>
  4169dc:	00000000 	nop
  4169e0:	8fc20030 	lw	v0,48(s8)
  4169e4:	00000000 	nop
  4169e8:	945001b4 	lhu	s0,436(v0)
  4169ec:	8fc20030 	lw	v0,48(s8)
  4169f0:	00000000 	nop
  4169f4:	24420074 	addiu	v0,v0,116
  4169f8:	00402021 	move	a0,v0
  4169fc:	8f9985d4 	lw	t9,-31276(gp)
  416a00:	00000000 	nop
  416a04:	0320f809 	jalr	t9
  416a08:	00000000 	nop
  416a0c:	8fdc0020 	lw	gp,32(s8)
  416a10:	1602005f 	bne	s0,v0,416b90 <add_connection+0x116c>
  416a14:	00000000 	nop
  416a18:	8fc20030 	lw	v0,48(s8)
  416a1c:	00000000 	nop
  416a20:	24420090 	addiu	v0,v0,144
  416a24:	00402021 	move	a0,v0
  416a28:	8f998248 	lw	t9,-32184(gp)
  416a2c:	00000000 	nop
  416a30:	0320f809 	jalr	t9
  416a34:	00000000 	nop
  416a38:	8fdc0020 	lw	gp,32(s8)
  416a3c:	afc206f0 	sw	v0,1776(s8)
  416a40:	8fc20030 	lw	v0,48(s8)
  416a44:	00000000 	nop
  416a48:	8c4200b4 	lw	v0,180(v0)
  416a4c:	00000000 	nop
  416a50:	1040000a 	beqz	v0,416a7c <add_connection+0x1058>
  416a54:	00000000 	nop
  416a58:	8fc20030 	lw	v0,48(s8)
  416a5c:	00000000 	nop
  416a60:	944201b6 	lhu	v0,438(v0)
  416a64:	8fc306f0 	lw	v1,1776(s8)
  416a68:	00000000 	nop
  416a6c:	14430048 	bne	v0,v1,416b90 <add_connection+0x116c>
  416a70:	00000000 	nop
  416a74:	10000008 	b	416a98 <add_connection+0x1074>
  416a78:	00000000 	nop
  416a7c:	8fc20030 	lw	v0,48(s8)
  416a80:	00000000 	nop
  416a84:	944201b4 	lhu	v0,436(v0)
  416a88:	8fc306f0 	lw	v1,1776(s8)
  416a8c:	00000000 	nop
  416a90:	1443003f 	bne	v0,v1,416b90 <add_connection+0x116c>
  416a94:	00000000 	nop
  416a98:	8fc20030 	lw	v0,48(s8)
  416a9c:	00000000 	nop
  416aa0:	945001b4 	lhu	s0,436(v0)
  416aa4:	8fc20030 	lw	v0,48(s8)
  416aa8:	00000000 	nop
  416aac:	24420108 	addiu	v0,v0,264
  416ab0:	00402021 	move	a0,v0
  416ab4:	8f9985d4 	lw	t9,-31276(gp)
  416ab8:	00000000 	nop
  416abc:	0320f809 	jalr	t9
  416ac0:	00000000 	nop
  416ac4:	8fdc0020 	lw	gp,32(s8)
  416ac8:	16020031 	bne	s0,v0,416b90 <add_connection+0x116c>
  416acc:	00000000 	nop
  416ad0:	8fc20030 	lw	v0,48(s8)
  416ad4:	00000000 	nop
  416ad8:	945001b4 	lhu	s0,436(v0)
  416adc:	8fc20030 	lw	v0,48(s8)
  416ae0:	00000000 	nop
  416ae4:	24420124 	addiu	v0,v0,292
  416ae8:	00402021 	move	a0,v0
  416aec:	8f9985d4 	lw	t9,-31276(gp)
  416af0:	00000000 	nop
  416af4:	0320f809 	jalr	t9
  416af8:	00000000 	nop
  416afc:	8fdc0020 	lw	gp,32(s8)
  416b00:	16020023 	bne	s0,v0,416b90 <add_connection+0x116c>
  416b04:	00000000 	nop
  416b08:	8fc20030 	lw	v0,48(s8)
  416b0c:	00000000 	nop
  416b10:	24420140 	addiu	v0,v0,320
  416b14:	00402021 	move	a0,v0
  416b18:	8f998248 	lw	t9,-32184(gp)
  416b1c:	00000000 	nop
  416b20:	0320f809 	jalr	t9
  416b24:	00000000 	nop
  416b28:	8fdc0020 	lw	gp,32(s8)
  416b2c:	afc206f4 	sw	v0,1780(s8)
  416b30:	8fc20030 	lw	v0,48(s8)
  416b34:	00000000 	nop
  416b38:	8c420164 	lw	v0,356(v0)
  416b3c:	00000000 	nop
  416b40:	1040000a 	beqz	v0,416b6c <add_connection+0x1148>
  416b44:	00000000 	nop
  416b48:	8fc20030 	lw	v0,48(s8)
  416b4c:	00000000 	nop
  416b50:	944201b6 	lhu	v0,438(v0)
  416b54:	8fc306f4 	lw	v1,1780(s8)
  416b58:	00000000 	nop
  416b5c:	1443000c 	bne	v0,v1,416b90 <add_connection+0x116c>
  416b60:	00000000 	nop
  416b64:	10000017 	b	416bc4 <add_connection+0x11a0>
  416b68:	00000000 	nop
  416b6c:	8fc20030 	lw	v0,48(s8)
  416b70:	00000000 	nop
  416b74:	944201b4 	lhu	v0,436(v0)
  416b78:	8fc306f4 	lw	v1,1780(s8)
  416b7c:	00000000 	nop
  416b80:	14430003 	bne	v0,v1,416b90 <add_connection+0x116c>
  416b84:	00000000 	nop
  416b88:	1000000e 	b	416bc4 <add_connection+0x11a0>
  416b8c:	00000000 	nop
  416b90:	8f848020 	lw	a0,-32736(gp)
  416b94:	00000000 	nop
  416b98:	24845a0c 	addiu	a0,a0,23052
  416b9c:	8f858020 	lw	a1,-32736(gp)
  416ba0:	00000000 	nop
  416ba4:	24a554a4 	addiu	a1,a1,21668
  416ba8:	240603dc 	li	a2,988
  416bac:	8f998bb8 	lw	t9,-29768(gp)
  416bb0:	00000000 	nop
  416bb4:	0320f809 	jalr	t9
  416bb8:	00000000 	nop
  416bbc:	8fdc0020 	lw	gp,32(s8)
  416bc0:	00000000 	nop
  416bc4:	8f848968 	lw	a0,-30360(gp)
  416bc8:	8fc20030 	lw	v0,48(s8)
  416bcc:	00000000 	nop
  416bd0:	8c460008 	lw	a2,8(v0)
  416bd4:	8c47000c 	lw	a3,12(v0)
  416bd8:	8f9988c4 	lw	t9,-30524(gp)
  416bdc:	00000000 	nop
  416be0:	0320f809 	jalr	t9
  416be4:	00000000 	nop
  416be8:	8fdc0020 	lw	gp,32(s8)
  416bec:	00401821 	move	v1,v0
  416bf0:	8fc20030 	lw	v0,48(s8)
  416bf4:	00000000 	nop
  416bf8:	8c42001c 	lw	v0,28(v0)
  416bfc:	00000000 	nop
  416c00:	afa20010 	sw	v0,16(sp)
  416c04:	8fc20030 	lw	v0,48(s8)
  416c08:	00000000 	nop
  416c0c:	8c420020 	lw	v0,32(v0)
  416c10:	00000000 	nop
  416c14:	afa20014 	sw	v0,20(sp)
  416c18:	afa30018 	sw	v1,24(sp)
  416c1c:	8f848020 	lw	a0,-32736(gp)
  416c20:	00000000 	nop
  416c24:	24845ba4 	addiu	a0,a0,23460
  416c28:	8fc20030 	lw	v0,48(s8)
  416c2c:	00000000 	nop
  416c30:	8c450010 	lw	a1,16(v0)
  416c34:	8fc20030 	lw	v0,48(s8)
  416c38:	00000000 	nop
  416c3c:	8c460014 	lw	a2,20(v0)
  416c40:	8fc20030 	lw	v0,48(s8)
  416c44:	00000000 	nop
  416c48:	8c470018 	lw	a3,24(v0)
  416c4c:	8f9983b8 	lw	t9,-31816(gp)
  416c50:	00000000 	nop
  416c54:	0320f809 	jalr	t9
  416c58:	00000000 	nop
  416c5c:	8fdc0020 	lw	gp,32(s8)
  416c60:	00000000 	nop
	    char lhs[SUBNETTOT_BUF + ADDRTOT_BUF + IDTOA_BUF + ADDRTOT_BUF];
	    char rhs[SUBNETTOT_BUF + ADDRTOT_BUF + IDTOA_BUF + ADDRTOT_BUF];

	    (void) format_end(lhs, sizeof(lhs), &c->this, &c->that, TRUE);
	    (void) format_end(rhs, sizeof(rhs), &c->that, &c->this, FALSE);

	    DBG_log("%s...%s", lhs, rhs);

	    /* Make sure that address families can be correctly inferred
	     * from printed ends.
	     */
	    passert(c->addr_family == addrtypeof(&c->this.host_addr)
		&& c->addr_family == addrtypeof(&c->this.host_nexthop)
		&& (c->this.has_client? c->tunnel_addr_family : c->addr_family)
		  == subnettypeof(&c->this.client)

		&& c->addr_family == addrtypeof(&c->that.host_addr)
		&& c->addr_family == addrtypeof(&c->that.host_nexthop)
		&& (c->that.has_client? c->tunnel_addr_family : c->addr_family)
		  == subnettypeof(&c->that.client));

	    DBG_log("ike_life: %lus; ipsec_life: %lus; rekey_margin: %lus;"
		" rekey_fuzz: %lu%%; keyingtries: %lu; policy: %s"
		, (unsigned long) c->sa_ike_life_seconds
		, (unsigned long) c->sa_ipsec_life_seconds
		, (unsigned long) c->sa_rekey_margin
		, (unsigned long) c->sa_rekey_fuzz
		, (unsigned long) c->sa_keying_tries
		, bitnamesof(sa_policy_bit_names, c->policy));
	);
    }
}
  416c64:	03c0e821 	move	sp,s8
  416c68:	8fbf0704 	lw	ra,1796(sp)
  416c6c:	8fbe0700 	lw	s8,1792(sp)
  416c70:	8fb006f8 	lw	s0,1784(sp)
  416c74:	27bd0708 	addiu	sp,sp,1800
  416c78:	03e00008 	jr	ra
  416c7c:	00000000 	nop

00416c80 <instantiate>:
  416c80:	3c1c0fbf 	lui	gp,0xfbf
  416c84:	279c5cf0 	addiu	gp,gp,23792
  416c88:	0399e021 	addu	gp,gp,t9
  416c8c:	27bdffc0 	addiu	sp,sp,-64
  416c90:	afbc0010 	sw	gp,16(sp)
  416c94:	afbf0038 	sw	ra,56(sp)
  416c98:	afbe0034 	sw	s8,52(sp)
  416c9c:	afbc0030 	sw	gp,48(sp)
  416ca0:	03a0f021 	move	s8,sp
  416ca4:	afc40040 	sw	a0,64(s8)
  416ca8:	afc50044 	sw	a1,68(s8)
  416cac:	00c01021 	move	v0,a2
  416cb0:	afc7004c 	sw	a3,76(s8)
  416cb4:	a7c20018 	sh	v0,24(s8)

/* Common part of instantiating a Road Warrior or Opportunistic connection.
 * his_id can be used to carry over an ID discovered in Phase 1.
 * It must not disagree with the one in c, but if that is unspecified,
 * the new connection will use his_id.
 * If his_id is NULL, and c.that.id is uninstantiated (ID_NONE), the
 * new connection will continue to have an uninstantiated that.id.
 * Note: instantiation does not affect port numbers.
 */
static struct connection *
instantiate(struct connection *c, const ip_address *him
#ifdef NAT_TRAVERSAL
, u_int16_t his_port
#endif
, const struct id *his_id)
{
    struct connection *d;
    int wildcards;

    passert(c->kind == CK_TEMPLATE);
  416cb8:	8fc20040 	lw	v0,64(s8)
  416cbc:	00000000 	nop
  416cc0:	8c420194 	lw	v0,404(v0)
  416cc4:	00000000 	nop
  416cc8:	1040000e 	beqz	v0,416d04 <instantiate+0x84>
  416ccc:	00000000 	nop
  416cd0:	8f848020 	lw	a0,-32736(gp)
  416cd4:	00000000 	nop
  416cd8:	24845c0c 	addiu	a0,a0,23564
  416cdc:	8f858020 	lw	a1,-32736(gp)
  416ce0:	00000000 	nop
  416ce4:	24a554a4 	addiu	a1,a1,21668
  416ce8:	24060410 	li	a2,1040
  416cec:	8f998bb8 	lw	t9,-29768(gp)
  416cf0:	00000000 	nop
  416cf4:	0320f809 	jalr	t9
  416cf8:	00000000 	nop
  416cfc:	8fdc0010 	lw	gp,16(s8)
  416d00:	00000000 	nop
    c->instance_serial++;
  416d04:	8fc20040 	lw	v0,64(s8)
  416d08:	00000000 	nop
  416d0c:	8c420190 	lw	v0,400(v0)
  416d10:	00000000 	nop
  416d14:	24430001 	addiu	v1,v0,1
  416d18:	8fc20040 	lw	v0,64(s8)
  416d1c:	00000000 	nop
  416d20:	ac430190 	sw	v1,400(v0)
    d = clone_thing(*c, "temporary connection");
  416d24:	8fc40040 	lw	a0,64(s8)
  416d28:	240501d8 	li	a1,472
  416d2c:	8f868020 	lw	a2,-32736(gp)
  416d30:	00000000 	nop
  416d34:	24c65c24 	addiu	a2,a2,23588
  416d38:	8f998c04 	lw	t9,-29692(gp)
  416d3c:	00000000 	nop
  416d40:	0320f809 	jalr	t9
  416d44:	00000000 	nop
  416d48:	8fdc0010 	lw	gp,16(s8)
  416d4c:	afc2001c 	sw	v0,28(s8)
    if (his_id != NULL)
  416d50:	8fc2004c 	lw	v0,76(s8)
  416d54:	00000000 	nop
  416d58:	1040002b 	beqz	v0,416e08 <instantiate+0x188>
  416d5c:	00000000 	nop
    {
	passert(match_id(his_id, &d->that.id, &wildcards));
  416d60:	8fc2001c 	lw	v0,28(s8)
  416d64:	00000000 	nop
  416d68:	244200e0 	addiu	v0,v0,224
  416d6c:	8fc4004c 	lw	a0,76(s8)
  416d70:	00402821 	move	a1,v0
  416d74:	27c60020 	addiu	a2,s8,32
  416d78:	8f998540 	lw	t9,-31424(gp)
  416d7c:	00000000 	nop
  416d80:	0320f809 	jalr	t9
  416d84:	00000000 	nop
  416d88:	8fdc0010 	lw	gp,16(s8)
  416d8c:	1440000e 	bnez	v0,416dc8 <instantiate+0x148>
  416d90:	00000000 	nop
  416d94:	8f848020 	lw	a0,-32736(gp)
  416d98:	00000000 	nop
  416d9c:	24845c3c 	addiu	a0,a0,23612
  416da0:	8f858020 	lw	a1,-32736(gp)
  416da4:	00000000 	nop
  416da8:	24a554a4 	addiu	a1,a1,21668
  416dac:	24060415 	li	a2,1045
  416db0:	8f998bb8 	lw	t9,-29768(gp)
  416db4:	00000000 	nop
  416db8:	0320f809 	jalr	t9
  416dbc:	00000000 	nop
  416dc0:	8fdc0010 	lw	gp,16(s8)
  416dc4:	00000000 	nop
	d->that.id = *his_id;
  416dc8:	8fc2001c 	lw	v0,28(s8)
  416dcc:	00000000 	nop
  416dd0:	244200e0 	addiu	v0,v0,224
  416dd4:	8fc3004c 	lw	v1,76(s8)
  416dd8:	00402021 	move	a0,v0
  416ddc:	00602821 	move	a1,v1
  416de0:	24060028 	li	a2,40
  416de4:	8f998a30 	lw	t9,-30160(gp)
  416de8:	00000000 	nop
  416dec:	0320f809 	jalr	t9
  416df0:	00000000 	nop
  416df4:	8fdc0010 	lw	gp,16(s8)
  416df8:	00000000 	nop
	d->that.has_id_wildcards = FALSE;
  416dfc:	8fc2001c 	lw	v0,28(s8)
  416e00:	00000000 	nop
  416e04:	ac40016c 	sw	zero,364(v0)
   }
    unshare_connection_strings(d);
  416e08:	8fc4001c 	lw	a0,28(s8)
  416e0c:	8f998024 	lw	t9,-32732(gp)
  416e10:	00000000 	nop
  416e14:	27394a10 	addiu	t9,t9,18960
  416e18:	00000000 	nop
  416e1c:	0320f809 	jalr	t9
  416e20:	00000000 	nop
  416e24:	8fdc0010 	lw	gp,16(s8)
  416e28:	00000000 	nop
#ifndef NO_KERNEL_ALG
    alg_info_addref((struct alg_info *)d->alg_info_esp);
  416e2c:	8fc2001c 	lw	v0,28(s8)
  416e30:	00000000 	nop
  416e34:	8c4401bc 	lw	a0,444(v0)
  416e38:	8f99848c 	lw	t9,-31604(gp)
  416e3c:	00000000 	nop
  416e40:	0320f809 	jalr	t9
  416e44:	00000000 	nop
  416e48:	8fdc0010 	lw	gp,16(s8)
  416e4c:	00000000 	nop
#endif
#ifndef NO_IKE_ALG
    alg_info_addref((struct alg_info *)d->alg_info_ike);
  416e50:	8fc2001c 	lw	v0,28(s8)
  416e54:	00000000 	nop
  416e58:	8c4401c0 	lw	a0,448(v0)
  416e5c:	8f99848c 	lw	t9,-31604(gp)
  416e60:	00000000 	nop
  416e64:	0320f809 	jalr	t9
  416e68:	00000000 	nop
  416e6c:	8fdc0010 	lw	gp,16(s8)
  416e70:	00000000 	nop
#endif

    d->kind = CK_INSTANCE;
  416e74:	24030002 	li	v1,2
  416e78:	8fc2001c 	lw	v0,28(s8)
  416e7c:	00000000 	nop
  416e80:	ac430194 	sw	v1,404(v0)

    passert(oriented(*d));
  416e84:	8fc2001c 	lw	v0,28(s8)
  416e88:	00000000 	nop
  416e8c:	8c420198 	lw	v0,408(v0)
  416e90:	00000000 	nop
  416e94:	1440000e 	bnez	v0,416ed0 <instantiate+0x250>
  416e98:	00000000 	nop
  416e9c:	8f848020 	lw	a0,-32736(gp)
  416ea0:	00000000 	nop
  416ea4:	24845c68 	addiu	a0,a0,23656
  416ea8:	8f858020 	lw	a1,-32736(gp)
  416eac:	00000000 	nop
  416eb0:	24a554a4 	addiu	a1,a1,21668
  416eb4:	24060423 	li	a2,1059
  416eb8:	8f998bb8 	lw	t9,-29768(gp)
  416ebc:	00000000 	nop
  416ec0:	0320f809 	jalr	t9
  416ec4:	00000000 	nop
  416ec8:	8fdc0010 	lw	gp,16(s8)
  416ecc:	00000000 	nop
    d->that.host_addr = *him;
  416ed0:	8fc4001c 	lw	a0,28(s8)
  416ed4:	8fc30044 	lw	v1,68(s8)
  416ed8:	00000000 	nop
  416edc:	8c620000 	lw	v0,0(v1)
  416ee0:	00000000 	nop
  416ee4:	ac820108 	sw	v0,264(a0)
  416ee8:	8c620004 	lw	v0,4(v1)
  416eec:	00000000 	nop
  416ef0:	ac82010c 	sw	v0,268(a0)
  416ef4:	8c620008 	lw	v0,8(v1)
  416ef8:	00000000 	nop
  416efc:	ac820110 	sw	v0,272(a0)
  416f00:	8c62000c 	lw	v0,12(v1)
  416f04:	00000000 	nop
  416f08:	ac820114 	sw	v0,276(a0)
  416f0c:	8c620010 	lw	v0,16(v1)
  416f10:	00000000 	nop
  416f14:	ac820118 	sw	v0,280(a0)
  416f18:	8c620014 	lw	v0,20(v1)
  416f1c:	00000000 	nop
  416f20:	ac82011c 	sw	v0,284(a0)
  416f24:	8c620018 	lw	v0,24(v1)
  416f28:	00000000 	nop
  416f2c:	ac820120 	sw	v0,288(a0)
    setportof(htons(c->that.port), &d->that.host_addr);
  416f30:	8fc20040 	lw	v0,64(s8)
  416f34:	00000000 	nop
  416f38:	9443017a 	lhu	v1,378(v0)
  416f3c:	8fc2001c 	lw	v0,28(s8)
  416f40:	00000000 	nop
  416f44:	24420108 	addiu	v0,v0,264
  416f48:	00602021 	move	a0,v1
  416f4c:	00402821 	move	a1,v0
  416f50:	8f9988e0 	lw	t9,-30496(gp)
  416f54:	00000000 	nop
  416f58:	0320f809 	jalr	t9
  416f5c:	00000000 	nop
  416f60:	8fdc0010 	lw	gp,16(s8)
  416f64:	00000000 	nop
#ifdef NAT_TRAVERSAL
    if (his_port) d->that.host_port = his_port;
  416f68:	97c20018 	lhu	v0,24(s8)
  416f6c:	00000000 	nop
  416f70:	10400005 	beqz	v0,416f88 <instantiate+0x308>
  416f74:	00000000 	nop
  416f78:	97c30018 	lhu	v1,24(s8)
  416f7c:	8fc2001c 	lw	v0,28(s8)
  416f80:	00000000 	nop
  416f84:	a4430178 	sh	v1,376(v0)
#endif
    default_end(&d->that, &d->this.host_addr);
  416f88:	8fc2001c 	lw	v0,28(s8)
  416f8c:	00000000 	nop
  416f90:	244300e0 	addiu	v1,v0,224
  416f94:	8fc2001c 	lw	v0,28(s8)
  416f98:	00000000 	nop
  416f9c:	24420058 	addiu	v0,v0,88
  416fa0:	00602021 	move	a0,v1
  416fa4:	00402821 	move	a1,v0
  416fa8:	8f998024 	lw	t9,-32732(gp)
  416fac:	00000000 	nop
  416fb0:	27394050 	addiu	t9,t9,16464
  416fb4:	00000000 	nop
  416fb8:	0320f809 	jalr	t9
  416fbc:	00000000 	nop
  416fc0:	8fdc0010 	lw	gp,16(s8)
  416fc4:	00000000 	nop

    /* We cannot guess what our next_hop should be, but if it was
     * explicitly specified as 0.0.0.0, we set it to be him.
     * (whack will not allow nexthop to be elided in RW case.)
     */
    default_end(&d->this, &d->that.host_addr);
  416fc8:	8fc2001c 	lw	v0,28(s8)
  416fcc:	00000000 	nop
  416fd0:	24430030 	addiu	v1,v0,48
  416fd4:	8fc2001c 	lw	v0,28(s8)
  416fd8:	00000000 	nop
  416fdc:	24420108 	addiu	v0,v0,264
  416fe0:	00602021 	move	a0,v1
  416fe4:	00402821 	move	a1,v0
  416fe8:	8f998024 	lw	t9,-32732(gp)
  416fec:	00000000 	nop
  416ff0:	27394050 	addiu	t9,t9,16464
  416ff4:	00000000 	nop
  416ff8:	0320f809 	jalr	t9
  416ffc:	00000000 	nop
  417000:	8fdc0010 	lw	gp,16(s8)
  417004:	00000000 	nop

    /* set internal fields */
    d->ac_next = connections;
  417008:	8f838018 	lw	v1,-32744(gp)
  41700c:	00000000 	nop
  417010:	246306f0 	addiu	v1,v1,1776
  417014:	8c630000 	lw	v1,0(v1)
  417018:	8fc2001c 	lw	v0,28(s8)
  41701c:	00000000 	nop
  417020:	ac4301cc 	sw	v1,460(v0)
    connections = d;
  417024:	8fc2001c 	lw	v0,28(s8)
  417028:	8f818018 	lw	at,-32744(gp)
  41702c:	00000000 	nop
  417030:	242106f0 	addiu	at,at,1776
  417034:	ac220000 	sw	v0,0(at)
    d->routing = RT_UNROUTED;
  417038:	8fc2001c 	lw	v0,28(s8)
  41703c:	00000000 	nop
  417040:	ac40019c 	sw	zero,412(v0)
    d->newest_isakmp_sa = SOS_NOBODY;
  417044:	8fc2001c 	lw	v0,28(s8)
  417048:	00000000 	nop
  41704c:	ac4001a4 	sw	zero,420(v0)
    d->newest_ipsec_sa = SOS_NOBODY;
  417050:	8fc2001c 	lw	v0,28(s8)
  417054:	00000000 	nop
  417058:	ac4001a8 	sw	zero,424(v0)
    d->eroute_owner = SOS_NOBODY;
  41705c:	8fc2001c 	lw	v0,28(s8)
  417060:	00000000 	nop
  417064:	ac4001ac 	sw	zero,428(v0)

    connect_to_host_pair(d);
  417068:	8fc4001c 	lw	a0,28(s8)
  41706c:	8f998024 	lw	t9,-32732(gp)
  417070:	00000000 	nop
  417074:	27392bf0 	addiu	t9,t9,11248
  417078:	00000000 	nop
  41707c:	0320f809 	jalr	t9
  417080:	00000000 	nop
  417084:	8fdc0010 	lw	gp,16(s8)
  417088:	00000000 	nop

    return d;
  41708c:	8fc2001c 	lw	v0,28(s8)
  417090:	00000000 	nop
}
  417094:	03c0e821 	move	sp,s8
  417098:	8fbf0038 	lw	ra,56(sp)
  41709c:	8fbe0034 	lw	s8,52(sp)
  4170a0:	27bd0040 	addiu	sp,sp,64
  4170a4:	03e00008 	jr	ra
  4170a8:	00000000 	nop

004170ac <rw_instantiate>:
  4170ac:	3c1c0fbf 	lui	gp,0xfbf
  4170b0:	279c58c4 	addiu	gp,gp,22724
  4170b4:	0399e021 	addu	gp,gp,t9
  4170b8:	27bdffc8 	addiu	sp,sp,-56
  4170bc:	afbc0010 	sw	gp,16(sp)
  4170c0:	afbf0030 	sw	ra,48(sp)
  4170c4:	afbe002c 	sw	s8,44(sp)
  4170c8:	afbc0028 	sw	gp,40(sp)
  4170cc:	03a0f021 	move	s8,sp
  4170d0:	afc40038 	sw	a0,56(s8)
  4170d4:	afc5003c 	sw	a1,60(s8)
  4170d8:	00c01021 	move	v0,a2
  4170dc:	afc70044 	sw	a3,68(s8)
  4170e0:	a7c20018 	sh	v0,24(s8)

struct connection *
rw_instantiate(struct connection *c
, const ip_address *him
#ifdef NAT_TRAVERSAL
, u_int16_t his_port
#endif
#ifdef VIRTUAL_IP
, const ip_subnet *his_net
#endif
, const struct id *his_id)
{
#ifdef NAT_TRAVERSAL
    struct connection *d = instantiate(c, him, his_port, his_id);
  4170e4:	97c20018 	lhu	v0,24(s8)
  4170e8:	8fc40038 	lw	a0,56(s8)
  4170ec:	8fc5003c 	lw	a1,60(s8)
  4170f0:	00403021 	move	a2,v0
  4170f4:	8fc70048 	lw	a3,72(s8)
  4170f8:	8f998024 	lw	t9,-32732(gp)
  4170fc:	00000000 	nop
  417100:	27396c80 	addiu	t9,t9,27776
  417104:	00000000 	nop
  417108:	0320f809 	jalr	t9
  41710c:	00000000 	nop
  417110:	8fdc0010 	lw	gp,16(s8)
  417114:	afc2001c 	sw	v0,28(s8)
#else
    struct connection *d = instantiate(c, him, his_id);
#endif

#ifdef VIRTUAL_IP
    if (d && his_net && is_virtual_connection(c)) {
  417118:	8fc2001c 	lw	v0,28(s8)
  41711c:	00000000 	nop
  417120:	1040003f 	beqz	v0,417220 <rw_instantiate+0x174>
  417124:	00000000 	nop
  417128:	8fc20044 	lw	v0,68(s8)
  41712c:	00000000 	nop
  417130:	1040003b 	beqz	v0,417220 <rw_instantiate+0x174>
  417134:	00000000 	nop
  417138:	8fc40038 	lw	a0,56(s8)
  41713c:	8f998654 	lw	t9,-31148(gp)
  417140:	00000000 	nop
  417144:	0320f809 	jalr	t9
  417148:	00000000 	nop
  41714c:	8fdc0010 	lw	gp,16(s8)
  417150:	10400033 	beqz	v0,417220 <rw_instantiate+0x174>
  417154:	00000000 	nop
	d->that.client = *his_net;
  417158:	8fc4001c 	lw	a0,28(s8)
  41715c:	8fc30044 	lw	v1,68(s8)
  417160:	00000000 	nop
  417164:	8c620000 	lw	v0,0(v1)
  417168:	00000000 	nop
  41716c:	ac820140 	sw	v0,320(a0)
  417170:	8c620004 	lw	v0,4(v1)
  417174:	00000000 	nop
  417178:	ac820144 	sw	v0,324(a0)
  41717c:	8c620008 	lw	v0,8(v1)
  417180:	00000000 	nop
  417184:	ac820148 	sw	v0,328(a0)
  417188:	8c62000c 	lw	v0,12(v1)
  41718c:	00000000 	nop
  417190:	ac82014c 	sw	v0,332(a0)
  417194:	8c620010 	lw	v0,16(v1)
  417198:	00000000 	nop
  41719c:	ac820150 	sw	v0,336(a0)
  4171a0:	8c620014 	lw	v0,20(v1)
  4171a4:	00000000 	nop
  4171a8:	ac820154 	sw	v0,340(a0)
  4171ac:	8c620018 	lw	v0,24(v1)
  4171b0:	00000000 	nop
  4171b4:	ac820158 	sw	v0,344(a0)
  4171b8:	8c62001c 	lw	v0,28(v1)
  4171bc:	00000000 	nop
  4171c0:	ac82015c 	sw	v0,348(a0)
	d->that.virt = NULL;
  4171c4:	8fc2001c 	lw	v0,28(s8)
  4171c8:	00000000 	nop
  4171cc:	ac40018c 	sw	zero,396(v0)
	if (subnetishost(his_net) && addrinsubnet(him, his_net))
  4171d0:	8fc40044 	lw	a0,68(s8)
  4171d4:	8f99851c 	lw	t9,-31460(gp)
  4171d8:	00000000 	nop
  4171dc:	0320f809 	jalr	t9
  4171e0:	00000000 	nop
  4171e4:	8fdc0010 	lw	gp,16(s8)
  4171e8:	1040000d 	beqz	v0,417220 <rw_instantiate+0x174>
  4171ec:	00000000 	nop
  4171f0:	8fc4003c 	lw	a0,60(s8)
  4171f4:	8fc50044 	lw	a1,68(s8)
  4171f8:	8f998acc 	lw	t9,-30004(gp)
  4171fc:	00000000 	nop
  417200:	0320f809 	jalr	t9
  417204:	00000000 	nop
  417208:	8fdc0010 	lw	gp,16(s8)
  41720c:	10400004 	beqz	v0,417220 <rw_instantiate+0x174>
  417210:	00000000 	nop
	    d->that.has_client = FALSE;
  417214:	8fc2001c 	lw	v0,28(s8)
  417218:	00000000 	nop
  41721c:	ac400164 	sw	zero,356(v0)
    }
#endif

    DBG(DBG_CONTROL
  417220:	8f8284f8 	lw	v0,-31496(gp)
  417224:	00000000 	nop
  417228:	8c420000 	lw	v0,0(v0)
  41722c:	00000000 	nop
  417230:	30420010 	andi	v0,v0,0x10
  417234:	10400015 	beqz	v0,41728c <rw_instantiate+0x1e0>
  417238:	00000000 	nop
  41723c:	8fc4003c 	lw	a0,60(s8)
  417240:	8f998100 	lw	t9,-32512(gp)
  417244:	00000000 	nop
  417248:	0320f809 	jalr	t9
  41724c:	00000000 	nop
  417250:	8fdc0010 	lw	gp,16(s8)
  417254:	00401821 	move	v1,v0
  417258:	8f848020 	lw	a0,-32736(gp)
  41725c:	00000000 	nop
  417260:	24845c78 	addiu	a0,a0,23672
  417264:	8fc2001c 	lw	v0,28(s8)
  417268:	00000000 	nop
  41726c:	8c450000 	lw	a1,0(v0)
  417270:	00603021 	move	a2,v1
  417274:	8f9983b8 	lw	t9,-31816(gp)
  417278:	00000000 	nop
  41727c:	0320f809 	jalr	t9
  417280:	00000000 	nop
  417284:	8fdc0010 	lw	gp,16(s8)
  417288:	00000000 	nop
	, DBG_log("instantiated \"%s\" for %s" , d->name, ip_str(him)));
    return d;
  41728c:	8fc2001c 	lw	v0,28(s8)
  417290:	00000000 	nop
}
  417294:	03c0e821 	move	sp,s8
  417298:	8fbf0030 	lw	ra,48(sp)
  41729c:	8fbe002c 	lw	s8,44(sp)
  4172a0:	27bd0038 	addiu	sp,sp,56
  4172a4:	03e00008 	jr	ra
  4172a8:	00000000 	nop

004172ac <oppo_instantiate>:
  4172ac:	3c1c0fbf 	lui	gp,0xfbf
  4172b0:	279c56c4 	addiu	gp,gp,22212
  4172b4:	0399e021 	addu	gp,gp,t9
  4172b8:	27bdfa08 	addiu	sp,sp,-1528
  4172bc:	afbc0018 	sw	gp,24(sp)
  4172c0:	afbf05f0 	sw	ra,1520(sp)
  4172c4:	afbe05ec 	sw	s8,1516(sp)
  4172c8:	afbc05e8 	sw	gp,1512(sp)
  4172cc:	03a0f021 	move	s8,sp
  4172d0:	afc405f8 	sw	a0,1528(s8)
  4172d4:	afc505fc 	sw	a1,1532(s8)
  4172d8:	afc60600 	sw	a2,1536(s8)
  4172dc:	afc70604 	sw	a3,1540(s8)

struct connection *
oppo_instantiate(struct connection *c
, const ip_address *him
, const struct id *his_id
, struct gw_info *gw
, const ip_address *our_client USED_BY_DEBUG
, const ip_address *peer_client)
{
#ifdef NAT_TRAVERSAL
    struct connection *d = instantiate(c, him, 0, his_id);
  4172e0:	8fc405f8 	lw	a0,1528(s8)
  4172e4:	8fc505fc 	lw	a1,1532(s8)
  4172e8:	00003021 	move	a2,zero
  4172ec:	8fc70600 	lw	a3,1536(s8)
  4172f0:	8f998024 	lw	t9,-32732(gp)
  4172f4:	00000000 	nop
  4172f8:	27396c80 	addiu	t9,t9,27776
  4172fc:	00000000 	nop
  417300:	0320f809 	jalr	t9
  417304:	00000000 	nop
  417308:	8fdc0018 	lw	gp,24(s8)
  41730c:	afc20020 	sw	v0,32(s8)
#else
    struct connection *d = instantiate(c, him, his_id);
#endif

    /* fill in our client side */
    if (d->this.has_client)
  417310:	8fc20020 	lw	v0,32(s8)
  417314:	00000000 	nop
  417318:	8c4200b4 	lw	v0,180(v0)
  41731c:	00000000 	nop
  417320:	10400040 	beqz	v0,417424 <oppo_instantiate+0x178>
  417324:	00000000 	nop
    {
	/* there was a client in the abstract connection
	 * so we demand that the required client is within that subnet.
	 */
	passert(addrinsubnet(our_client, &d->this.client));
  417328:	8fc20020 	lw	v0,32(s8)
  41732c:	00000000 	nop
  417330:	24420090 	addiu	v0,v0,144
  417334:	8fc40608 	lw	a0,1544(s8)
  417338:	00402821 	move	a1,v0
  41733c:	8f998acc 	lw	t9,-30004(gp)
  417340:	00000000 	nop
  417344:	0320f809 	jalr	t9
  417348:	00000000 	nop
  41734c:	8fdc0018 	lw	gp,24(s8)
  417350:	1440000e 	bnez	v0,41738c <oppo_instantiate+0xe0>
  417354:	00000000 	nop
  417358:	8f848020 	lw	a0,-32736(gp)
  41735c:	00000000 	nop
  417360:	24845c94 	addiu	a0,a0,23700
  417364:	8f858020 	lw	a1,-32736(gp)
  417368:	00000000 	nop
  41736c:	24a554a4 	addiu	a1,a1,21668
  417370:	24060471 	li	a2,1137
  417374:	8f998bb8 	lw	t9,-29768(gp)
  417378:	00000000 	nop
  41737c:	0320f809 	jalr	t9
  417380:	00000000 	nop
  417384:	8fdc0018 	lw	gp,24(s8)
  417388:	00000000 	nop
	happy(addrtosubnet(our_client, &d->this.client));
  41738c:	8fc20020 	lw	v0,32(s8)
  417390:	00000000 	nop
  417394:	24420090 	addiu	v0,v0,144
  417398:	8fc40608 	lw	a0,1544(s8)
  41739c:	00402821 	move	a1,v0
  4173a0:	8f998afc 	lw	t9,-29956(gp)
  4173a4:	00000000 	nop
  4173a8:	0320f809 	jalr	t9
  4173ac:	00000000 	nop
  4173b0:	8fdc0018 	lw	gp,24(s8)
  4173b4:	afc20024 	sw	v0,36(s8)
  4173b8:	8fc20024 	lw	v0,36(s8)
  4173bc:	00000000 	nop
  4173c0:	1040000c 	beqz	v0,4173f4 <oppo_instantiate+0x148>
  4173c4:	00000000 	nop
  4173c8:	8fc40024 	lw	a0,36(s8)
  4173cc:	8f858020 	lw	a1,-32736(gp)
  4173d0:	00000000 	nop
  4173d4:	24a554a4 	addiu	a1,a1,21668
  4173d8:	24060472 	li	a2,1138
  4173dc:	8f998bb8 	lw	t9,-29768(gp)
  4173e0:	00000000 	nop
  4173e4:	0320f809 	jalr	t9
  4173e8:	00000000 	nop
  4173ec:	8fdc0018 	lw	gp,24(s8)
  4173f0:	00000000 	nop
	/* opportunistic connections do not use port selectors */
	setportof(0, &d->this.client.addr);
  4173f4:	8fc20020 	lw	v0,32(s8)
  4173f8:	00000000 	nop
  4173fc:	24420090 	addiu	v0,v0,144
  417400:	00002021 	move	a0,zero
  417404:	00402821 	move	a1,v0
  417408:	8f9988e0 	lw	t9,-30496(gp)
  41740c:	00000000 	nop
  417410:	0320f809 	jalr	t9
  417414:	00000000 	nop
  417418:	8fdc0018 	lw	gp,24(s8)
  41741c:	1000001a 	b	417488 <oppo_instantiate+0x1dc>
  417420:	00000000 	nop
    }
    else
    {
	/* there was no client in the abstract connection
	 * so we demand that the required client be the host
	 */
	passert(sameaddr(our_client, &d->this.host_addr));
  417424:	8fc20020 	lw	v0,32(s8)
  417428:	00000000 	nop
  41742c:	24420058 	addiu	v0,v0,88
  417430:	8fc40608 	lw	a0,1544(s8)
  417434:	00402821 	move	a1,v0
  417438:	8f998928 	lw	t9,-30424(gp)
  41743c:	00000000 	nop
  417440:	0320f809 	jalr	t9
  417444:	00000000 	nop
  417448:	8fdc0018 	lw	gp,24(s8)
  41744c:	1440000e 	bnez	v0,417488 <oppo_instantiate+0x1dc>
  417450:	00000000 	nop
  417454:	8f848020 	lw	a0,-32736(gp)
  417458:	00000000 	nop
  41745c:	24845cc0 	addiu	a0,a0,23744
  417460:	8f858020 	lw	a1,-32736(gp)
  417464:	00000000 	nop
  417468:	24a554a4 	addiu	a1,a1,21668
  41746c:	2406047b 	li	a2,1147
  417470:	8f998bb8 	lw	t9,-29768(gp)
  417474:	00000000 	nop
  417478:	0320f809 	jalr	t9
  41747c:	00000000 	nop
  417480:	8fdc0018 	lw	gp,24(s8)
  417484:	00000000 	nop
    }

    /* fill in peer's client side.
     * If the client is the peer, excise the client from the connection.
     */
    passert((d->policy & POLICY_OPPO) && HasWildcardClient(d));
  417488:	8fc20020 	lw	v0,32(s8)
  41748c:	00000000 	nop
  417490:	8c440008 	lw	a0,8(v0)
  417494:	8c45000c 	lw	a1,12(v0)
  417498:	24020000 	li	v0,0
  41749c:	24030800 	li	v1,2048
  4174a0:	00822024 	and	a0,a0,v0
  4174a4:	00a32824 	and	a1,a1,v1
  4174a8:	00801021 	move	v0,a0
  4174ac:	00451025 	or	v0,v0,a1
  4174b0:	10400009 	beqz	v0,4174d8 <oppo_instantiate+0x22c>
  4174b4:	00000000 	nop
  4174b8:	8fc40020 	lw	a0,32(s8)
  4174bc:	8f998118 	lw	t9,-32488(gp)
  4174c0:	00000000 	nop
  4174c4:	0320f809 	jalr	t9
  4174c8:	00000000 	nop
  4174cc:	8fdc0018 	lw	gp,24(s8)
  4174d0:	1440000e 	bnez	v0,41750c <oppo_instantiate+0x260>
  4174d4:	00000000 	nop
  4174d8:	8f848020 	lw	a0,-32736(gp)
  4174dc:	00000000 	nop
  4174e0:	24845cec 	addiu	a0,a0,23788
  4174e4:	8f858020 	lw	a1,-32736(gp)
  4174e8:	00000000 	nop
  4174ec:	24a554a4 	addiu	a1,a1,21668
  4174f0:	24060481 	li	a2,1153
  4174f4:	8f998bb8 	lw	t9,-29768(gp)
  4174f8:	00000000 	nop
  4174fc:	0320f809 	jalr	t9
  417500:	00000000 	nop
  417504:	8fdc0018 	lw	gp,24(s8)
  417508:	00000000 	nop
    happy(addrtosubnet(peer_client, &d->that.client));
  41750c:	8fc20020 	lw	v0,32(s8)
  417510:	00000000 	nop
  417514:	24420140 	addiu	v0,v0,320
  417518:	8fc4060c 	lw	a0,1548(s8)
  41751c:	00402821 	move	a1,v0
  417520:	8f998afc 	lw	t9,-29956(gp)
  417524:	00000000 	nop
  417528:	0320f809 	jalr	t9
  41752c:	00000000 	nop
  417530:	8fdc0018 	lw	gp,24(s8)
  417534:	afc20024 	sw	v0,36(s8)
  417538:	8fc20024 	lw	v0,36(s8)
  41753c:	00000000 	nop
  417540:	1040000c 	beqz	v0,417574 <oppo_instantiate+0x2c8>
  417544:	00000000 	nop
  417548:	8fc40024 	lw	a0,36(s8)
  41754c:	8f858020 	lw	a1,-32736(gp)
  417550:	00000000 	nop
  417554:	24a554a4 	addiu	a1,a1,21668
  417558:	24060482 	li	a2,1154
  41755c:	8f998bb8 	lw	t9,-29768(gp)
  417560:	00000000 	nop
  417564:	0320f809 	jalr	t9
  417568:	00000000 	nop
  41756c:	8fdc0018 	lw	gp,24(s8)
  417570:	00000000 	nop
    /* opportunistic connections do not use port selectors */
    setportof(0, &d->that.client.addr);
  417574:	8fc20020 	lw	v0,32(s8)
  417578:	00000000 	nop
  41757c:	24420140 	addiu	v0,v0,320
  417580:	00002021 	move	a0,zero
  417584:	00402821 	move	a1,v0
  417588:	8f9988e0 	lw	t9,-30496(gp)
  41758c:	00000000 	nop
  417590:	0320f809 	jalr	t9
  417594:	00000000 	nop
  417598:	8fdc0018 	lw	gp,24(s8)
  41759c:	00000000 	nop

    if (sameaddr(peer_client, &d->that.host_addr))
  4175a0:	8fc20020 	lw	v0,32(s8)
  4175a4:	00000000 	nop
  4175a8:	24420108 	addiu	v0,v0,264
  4175ac:	8fc4060c 	lw	a0,1548(s8)
  4175b0:	00402821 	move	a1,v0
  4175b4:	8f998928 	lw	t9,-30424(gp)
  4175b8:	00000000 	nop
  4175bc:	0320f809 	jalr	t9
  4175c0:	00000000 	nop
  4175c4:	8fdc0018 	lw	gp,24(s8)
  4175c8:	10400004 	beqz	v0,4175dc <oppo_instantiate+0x330>
  4175cc:	00000000 	nop
	d->that.has_client = FALSE;
  4175d0:	8fc20020 	lw	v0,32(s8)
  4175d4:	00000000 	nop
  4175d8:	ac400164 	sw	zero,356(v0)

    passert(d->gw_info == NULL);
  4175dc:	8fc20020 	lw	v0,32(s8)
  4175e0:	00000000 	nop
  4175e4:	8c4201b8 	lw	v0,440(v0)
  4175e8:	00000000 	nop
  4175ec:	1040000e 	beqz	v0,417628 <oppo_instantiate+0x37c>
  4175f0:	00000000 	nop
  4175f4:	8f848020 	lw	a0,-32736(gp)
  4175f8:	00000000 	nop
  4175fc:	24845d20 	addiu	a0,a0,23840
  417600:	8f858020 	lw	a1,-32736(gp)
  417604:	00000000 	nop
  417608:	24a554a4 	addiu	a1,a1,21668
  41760c:	24060489 	li	a2,1161
  417610:	8f998bb8 	lw	t9,-29768(gp)
  417614:	00000000 	nop
  417618:	0320f809 	jalr	t9
  41761c:	00000000 	nop
  417620:	8fdc0018 	lw	gp,24(s8)
  417624:	00000000 	nop
    gw_addref(gw);
  417628:	8fc40604 	lw	a0,1540(s8)
  41762c:	8f998784 	lw	t9,-30844(gp)
  417630:	00000000 	nop
  417634:	0320f809 	jalr	t9
  417638:	00000000 	nop
  41763c:	8fdc0018 	lw	gp,24(s8)
  417640:	00000000 	nop
    d->gw_info = gw;
  417644:	8fc30604 	lw	v1,1540(s8)
  417648:	8fc20020 	lw	v0,32(s8)
  41764c:	00000000 	nop
  417650:	ac4301b8 	sw	v1,440(v0)

    DBG(DBG_CONTROL,
  417654:	8f8284f8 	lw	v0,-31496(gp)
  417658:	00000000 	nop
  41765c:	8c420000 	lw	v0,0(v0)
  417660:	00000000 	nop
  417664:	30420010 	andi	v0,v0,0x10
  417668:	10400030 	beqz	v0,41772c <oppo_instantiate+0x480>
  41766c:	00000000 	nop
  417670:	8fc20020 	lw	v0,32(s8)
  417674:	00000000 	nop
  417678:	24460030 	addiu	a2,v0,48
  41767c:	8fc20020 	lw	v0,32(s8)
  417680:	00000000 	nop
  417684:	244300e0 	addiu	v1,v0,224
  417688:	24020001 	li	v0,1
  41768c:	afa20010 	sw	v0,16(sp)
  417690:	27c40028 	addiu	a0,s8,40
  417694:	240502df 	li	a1,735
  417698:	00603821 	move	a3,v1
  41769c:	8f998464 	lw	t9,-31644(gp)
  4176a0:	00000000 	nop
  4176a4:	0320f809 	jalr	t9
  4176a8:	00000000 	nop
  4176ac:	8fdc0018 	lw	gp,24(s8)
  4176b0:	8fc20020 	lw	v0,32(s8)
  4176b4:	00000000 	nop
  4176b8:	244300e0 	addiu	v1,v0,224
  4176bc:	8fc20020 	lw	v0,32(s8)
  4176c0:	00000000 	nop
  4176c4:	24420030 	addiu	v0,v0,48
  4176c8:	afa00010 	sw	zero,16(sp)
  4176cc:	27c40308 	addiu	a0,s8,776
  4176d0:	240502df 	li	a1,735
  4176d4:	00603021 	move	a2,v1
  4176d8:	00403821 	move	a3,v0
  4176dc:	8f998464 	lw	t9,-31644(gp)
  4176e0:	00000000 	nop
  4176e4:	0320f809 	jalr	t9
  4176e8:	00000000 	nop
  4176ec:	8fdc0018 	lw	gp,24(s8)
  4176f0:	00000000 	nop
  4176f4:	8f848020 	lw	a0,-32736(gp)
  4176f8:	00000000 	nop
  4176fc:	24845d34 	addiu	a0,a0,23860
  417700:	8fc20020 	lw	v0,32(s8)
  417704:	00000000 	nop
  417708:	8c450000 	lw	a1,0(v0)
  41770c:	27c60028 	addiu	a2,s8,40
  417710:	27c70308 	addiu	a3,s8,776
  417714:	8f9983b8 	lw	t9,-31816(gp)
  417718:	00000000 	nop
  41771c:	0320f809 	jalr	t9
  417720:	00000000 	nop
  417724:	8fdc0018 	lw	gp,24(s8)
  417728:	00000000 	nop
	char lhs[SUBNETTOT_BUF + ADDRTOT_BUF + IDTOA_BUF + ADDRTOT_BUF];
	char rhs[SUBNETTOT_BUF + ADDRTOT_BUF + IDTOA_BUF + ADDRTOT_BUF];

	(void) format_end(lhs, sizeof(lhs), &d->this, &d->that, TRUE);
	(void) format_end(rhs, sizeof(rhs), &d->that, &d->this, FALSE);

	DBG_log("instantiated \"%s\": %s...%s", d->name, lhs, rhs);
    );
    return d;
  41772c:	8fc20020 	lw	v0,32(s8)
  417730:	00000000 	nop
}
  417734:	03c0e821 	move	sp,s8
  417738:	8fbf05f0 	lw	ra,1520(sp)
  41773c:	8fbe05ec 	lw	s8,1516(sp)
  417740:	27bd05f8 	addiu	sp,sp,1528
  417744:	03e00008 	jr	ra
  417748:	00000000 	nop

0041774c <fmt_client>:
  41774c:	3c1c0fbf 	lui	gp,0xfbf
  417750:	279c5224 	addiu	gp,gp,21028
  417754:	0399e021 	addu	gp,gp,t9
  417758:	27bdffb0 	addiu	sp,sp,-80
  41775c:	afbc0010 	sw	gp,16(sp)
  417760:	afbf0048 	sw	ra,72(sp)
  417764:	afbe0044 	sw	s8,68(sp)
  417768:	afbc0040 	sw	gp,64(sp)
  41776c:	03a0f021 	move	s8,sp
  417770:	afc40050 	sw	a0,80(s8)
  417774:	afc50054 	sw	a1,84(s8)
  417778:	afc60058 	sw	a2,88(s8)
  41777c:	afc7005c 	sw	a3,92(s8)

/* Format any information needed to identify an instance of a connection.
 * Fills any needed information into buf which MUST be big enough.
 * Road Warrior: peer's IP address
 * Opportunistic: [" " myclient "==="] " ..." peer ["===" hisclient] '\0'
 */
static size_t
fmt_client(const ip_subnet *client, const ip_address *gw, const char *prefix, char buf[ADDRTOT_BUF])
{
    ip_address client_net;

    networkof(client, &client_net);
  417780:	8fc40050 	lw	a0,80(s8)
  417784:	27c50018 	addiu	a1,s8,24
  417788:	8f9985bc 	lw	t9,-31300(gp)
  41778c:	00000000 	nop
  417790:	0320f809 	jalr	t9
  417794:	00000000 	nop
  417798:	8fdc0010 	lw	gp,16(s8)
  41779c:	00000000 	nop
    if (subnetishost(client) && sameaddr(gw, &client_net))
  4177a0:	8fc40050 	lw	a0,80(s8)
  4177a4:	8f99851c 	lw	t9,-31460(gp)
  4177a8:	00000000 	nop
  4177ac:	0320f809 	jalr	t9
  4177b0:	00000000 	nop
  4177b4:	8fdc0010 	lw	gp,16(s8)
  4177b8:	1040000f 	beqz	v0,4177f8 <fmt_client+0xac>
  4177bc:	00000000 	nop
  4177c0:	8fc40054 	lw	a0,84(s8)
  4177c4:	27c50018 	addiu	a1,s8,24
  4177c8:	8f998928 	lw	t9,-30424(gp)
  4177cc:	00000000 	nop
  4177d0:	0320f809 	jalr	t9
  4177d4:	00000000 	nop
  4177d8:	8fdc0010 	lw	gp,16(s8)
  4177dc:	10400006 	beqz	v0,4177f8 <fmt_client+0xac>
  4177e0:	00000000 	nop
	buf[0] = '\0';	/* compact denotation for "self" */
  4177e4:	8fc2005c 	lw	v0,92(s8)
  4177e8:	00000000 	nop
  4177ec:	a0400000 	sb	zero,0(v0)
  4177f0:	10000039 	b	4178d8 <fmt_client+0x18c>
  4177f4:	00000000 	nop
    else {
	char *ap;

	strcpy(buf, prefix);
  4177f8:	8fc4005c 	lw	a0,92(s8)
  4177fc:	8fc50058 	lw	a1,88(s8)
  417800:	8f998c58 	lw	t9,-29608(gp)
  417804:	00000000 	nop
  417808:	0320f809 	jalr	t9
  41780c:	00000000 	nop
  417810:	8fdc0010 	lw	gp,16(s8)
  417814:	00000000 	nop
	ap = buf + strlen(prefix);
  417818:	8fc40058 	lw	a0,88(s8)
  41781c:	8f998188 	lw	t9,-32376(gp)
  417820:	00000000 	nop
  417824:	0320f809 	jalr	t9
  417828:	00000000 	nop
  41782c:	8fdc0010 	lw	gp,16(s8)
  417830:	00401821 	move	v1,v0
  417834:	8fc2005c 	lw	v0,92(s8)
  417838:	00000000 	nop
  41783c:	00431021 	addu	v0,v0,v1
  417840:	afc20038 	sw	v0,56(s8)
	if (subnetishost(client) && isanyaddr(&client_net))
  417844:	8fc40050 	lw	a0,80(s8)
  417848:	8f99851c 	lw	t9,-31460(gp)
  41784c:	00000000 	nop
  417850:	0320f809 	jalr	t9
  417854:	00000000 	nop
  417858:	8fdc0010 	lw	gp,16(s8)
  41785c:	10400014 	beqz	v0,4178b0 <fmt_client+0x164>
  417860:	00000000 	nop
  417864:	27c40018 	addiu	a0,s8,24
  417868:	8f998628 	lw	t9,-31192(gp)
  41786c:	00000000 	nop
  417870:	0320f809 	jalr	t9
  417874:	00000000 	nop
  417878:	8fdc0010 	lw	gp,16(s8)
  41787c:	1040000c 	beqz	v0,4178b0 <fmt_client+0x164>
  417880:	00000000 	nop
	    strcpy(ap, "?");	/* unknown */
  417884:	8fc40038 	lw	a0,56(s8)
  417888:	8f858020 	lw	a1,-32736(gp)
  41788c:	00000000 	nop
  417890:	24a55578 	addiu	a1,a1,21880
  417894:	8f998c58 	lw	t9,-29608(gp)
  417898:	00000000 	nop
  41789c:	0320f809 	jalr	t9
  4178a0:	00000000 	nop
  4178a4:	8fdc0010 	lw	gp,16(s8)
  4178a8:	1000000b 	b	4178d8 <fmt_client+0x18c>
  4178ac:	00000000 	nop
	else
	    subnettot(client, 0, ap, SUBNETTOT_BUF);
  4178b0:	8fc40050 	lw	a0,80(s8)
  4178b4:	00002821 	move	a1,zero
  4178b8:	8fc60038 	lw	a2,56(s8)
  4178bc:	2407004d 	li	a3,77
  4178c0:	8f998bbc 	lw	t9,-29764(gp)
  4178c4:	00000000 	nop
  4178c8:	0320f809 	jalr	t9
  4178cc:	00000000 	nop
  4178d0:	8fdc0010 	lw	gp,16(s8)
  4178d4:	00000000 	nop
    }
    return strlen(buf);
  4178d8:	8fc4005c 	lw	a0,92(s8)
  4178dc:	8f998188 	lw	t9,-32376(gp)
  4178e0:	00000000 	nop
  4178e4:	0320f809 	jalr	t9
  4178e8:	00000000 	nop
  4178ec:	8fdc0010 	lw	gp,16(s8)
  4178f0:	00000000 	nop
}
  4178f4:	03c0e821 	move	sp,s8
  4178f8:	8fbf0048 	lw	ra,72(sp)
  4178fc:	8fbe0044 	lw	s8,68(sp)
  417900:	27bd0050 	addiu	sp,sp,80
  417904:	03e00008 	jr	ra
  417908:	00000000 	nop

0041790c <fmt_conn_instance>:
  41790c:	3c1c0fbf 	lui	gp,0xfbf
  417910:	279c5064 	addiu	gp,gp,20580
  417914:	0399e021 	addu	gp,gp,t9
  417918:	27bdffc8 	addiu	sp,sp,-56
  41791c:	afbc0010 	sw	gp,16(sp)
  417920:	afbf0030 	sw	ra,48(sp)
  417924:	afbe002c 	sw	s8,44(sp)
  417928:	afbc0028 	sw	gp,40(sp)
  41792c:	03a0f021 	move	s8,sp
  417930:	afc40038 	sw	a0,56(s8)
  417934:	afc5003c 	sw	a1,60(s8)

void
fmt_conn_instance(const struct connection *c, char buf[CONN_INST_BUF])
{
    char *p = buf;
  417938:	8fc2003c 	lw	v0,60(s8)
  41793c:	00000000 	nop
  417940:	afc20018 	sw	v0,24(s8)

    *p = '\0';
  417944:	8fc20018 	lw	v0,24(s8)
  417948:	00000000 	nop
  41794c:	a0400000 	sb	zero,0(v0)

    if (c->kind == CK_INSTANCE)
  417950:	8fc20038 	lw	v0,56(s8)
  417954:	00000000 	nop
  417958:	8c430194 	lw	v1,404(v0)
  41795c:	24020002 	li	v0,2
  417960:	146200c5 	bne	v1,v0,417c78 <fmt_conn_instance+0x36c>
  417964:	00000000 	nop
    {
	snprintf(p, CONN_INST_BUF, "[%lu]", c->instance_serial);
  417968:	8fc40018 	lw	a0,24(s8)
  41796c:	240500fb 	li	a1,251
  417970:	8f868020 	lw	a2,-32736(gp)
  417974:	00000000 	nop
  417978:	24c65d50 	addiu	a2,a2,23888
  41797c:	8fc20038 	lw	v0,56(s8)
  417980:	00000000 	nop
  417984:	8c470190 	lw	a3,400(v0)
  417988:	8f998b38 	lw	t9,-29896(gp)
  41798c:	00000000 	nop
  417990:	0320f809 	jalr	t9
  417994:	00000000 	nop
  417998:	8fdc0010 	lw	gp,16(s8)
  41799c:	00000000 	nop
	p += strlen(p);
  4179a0:	8fc40018 	lw	a0,24(s8)
  4179a4:	8f998188 	lw	t9,-32376(gp)
  4179a8:	00000000 	nop
  4179ac:	0320f809 	jalr	t9
  4179b0:	00000000 	nop
  4179b4:	8fdc0010 	lw	gp,16(s8)
  4179b8:	00401821 	move	v1,v0
  4179bc:	8fc20018 	lw	v0,24(s8)
  4179c0:	00000000 	nop
  4179c4:	00431021 	addu	v0,v0,v1
  4179c8:	afc20018 	sw	v0,24(s8)

	if (c->policy & POLICY_OPPO)
  4179cc:	8fc20038 	lw	v0,56(s8)
  4179d0:	00000000 	nop
  4179d4:	8c440008 	lw	a0,8(v0)
  4179d8:	8c45000c 	lw	a1,12(v0)
  4179dc:	24020000 	li	v0,0
  4179e0:	24030800 	li	v1,2048
  4179e4:	00822024 	and	a0,a0,v0
  4179e8:	00a32824 	and	a1,a1,v1
  4179ec:	00801021 	move	v0,a0
  4179f0:	00451025 	or	v0,v0,a1
  4179f4:	1040006a 	beqz	v0,417ba0 <fmt_conn_instance+0x294>
  4179f8:	00000000 	nop
	{
	    size_t w = fmt_client(&c->this.client, &c->this.host_addr, " ", p);
  4179fc:	8fc20038 	lw	v0,56(s8)
  417a00:	00000000 	nop
  417a04:	24430090 	addiu	v1,v0,144
  417a08:	8fc20038 	lw	v0,56(s8)
  417a0c:	00000000 	nop
  417a10:	24420058 	addiu	v0,v0,88
  417a14:	00602021 	move	a0,v1
  417a18:	00402821 	move	a1,v0
  417a1c:	8f868020 	lw	a2,-32736(gp)
  417a20:	00000000 	nop
  417a24:	24c65d58 	addiu	a2,a2,23896
  417a28:	8fc70018 	lw	a3,24(s8)
  417a2c:	8f998024 	lw	t9,-32732(gp)
  417a30:	00000000 	nop
  417a34:	2739774c 	addiu	t9,t9,30540
  417a38:	00000000 	nop
  417a3c:	0320f809 	jalr	t9
  417a40:	00000000 	nop
  417a44:	8fdc0010 	lw	gp,16(s8)
  417a48:	afc2001c 	sw	v0,28(s8)

	    p += w;
  417a4c:	8fc30018 	lw	v1,24(s8)
  417a50:	8fc2001c 	lw	v0,28(s8)
  417a54:	00000000 	nop
  417a58:	00621021 	addu	v0,v1,v0
  417a5c:	afc20018 	sw	v0,24(s8)

	    strcpy(p, w == 0? " ..." : "=== ...");
  417a60:	8fc2001c 	lw	v0,28(s8)
  417a64:	00000000 	nop
  417a68:	14400008 	bnez	v0,417a8c <fmt_conn_instance+0x180>
  417a6c:	00000000 	nop
  417a70:	8f828020 	lw	v0,-32736(gp)
  417a74:	00000000 	nop
  417a78:	24425d5c 	addiu	v0,v0,23900
  417a7c:	00000000 	nop
  417a80:	afc20020 	sw	v0,32(s8)
  417a84:	10000006 	b	417aa0 <fmt_conn_instance+0x194>
  417a88:	00000000 	nop
  417a8c:	8f828020 	lw	v0,-32736(gp)
  417a90:	00000000 	nop
  417a94:	24425d64 	addiu	v0,v0,23908
  417a98:	00000000 	nop
  417a9c:	afc20020 	sw	v0,32(s8)
  417aa0:	8fc40018 	lw	a0,24(s8)
  417aa4:	8fc50020 	lw	a1,32(s8)
  417aa8:	8f998c58 	lw	t9,-29608(gp)
  417aac:	00000000 	nop
  417ab0:	0320f809 	jalr	t9
  417ab4:	00000000 	nop
  417ab8:	8fdc0010 	lw	gp,16(s8)
  417abc:	00000000 	nop
	    p += strlen(p);
  417ac0:	8fc40018 	lw	a0,24(s8)
  417ac4:	8f998188 	lw	t9,-32376(gp)
  417ac8:	00000000 	nop
  417acc:	0320f809 	jalr	t9
  417ad0:	00000000 	nop
  417ad4:	8fdc0010 	lw	gp,16(s8)
  417ad8:	00401821 	move	v1,v0
  417adc:	8fc20018 	lw	v0,24(s8)
  417ae0:	00000000 	nop
  417ae4:	00431021 	addu	v0,v0,v1
  417ae8:	afc20018 	sw	v0,24(s8)

	    addrtot(&c->that.host_addr, 0, p, ADDRTOT_BUF);
  417aec:	8fc20038 	lw	v0,56(s8)
  417af0:	00000000 	nop
  417af4:	24420108 	addiu	v0,v0,264
  417af8:	00402021 	move	a0,v0
  417afc:	00002821 	move	a1,zero
  417b00:	8fc60018 	lw	a2,24(s8)
  417b04:	24070049 	li	a3,73
  417b08:	8f998b50 	lw	t9,-29872(gp)
  417b0c:	00000000 	nop
  417b10:	0320f809 	jalr	t9
  417b14:	00000000 	nop
  417b18:	8fdc0010 	lw	gp,16(s8)
  417b1c:	00000000 	nop
	    p += strlen(p);
  417b20:	8fc40018 	lw	a0,24(s8)
  417b24:	8f998188 	lw	t9,-32376(gp)
  417b28:	00000000 	nop
  417b2c:	0320f809 	jalr	t9
  417b30:	00000000 	nop
  417b34:	8fdc0010 	lw	gp,16(s8)
  417b38:	00401821 	move	v1,v0
  417b3c:	8fc20018 	lw	v0,24(s8)
  417b40:	00000000 	nop
  417b44:	00431021 	addu	v0,v0,v1
  417b48:	afc20018 	sw	v0,24(s8)

	    (void) fmt_client(&c->that.client, &c->that.host_addr, "===", p);
  417b4c:	8fc20038 	lw	v0,56(s8)
  417b50:	00000000 	nop
  417b54:	24430140 	addiu	v1,v0,320
  417b58:	8fc20038 	lw	v0,56(s8)
  417b5c:	00000000 	nop
  417b60:	24420108 	addiu	v0,v0,264
  417b64:	00602021 	move	a0,v1
  417b68:	00402821 	move	a1,v0
  417b6c:	8f868020 	lw	a2,-32736(gp)
  417b70:	00000000 	nop
  417b74:	24c6557c 	addiu	a2,a2,21884
  417b78:	8fc70018 	lw	a3,24(s8)
  417b7c:	8f998024 	lw	t9,-32732(gp)
  417b80:	00000000 	nop
  417b84:	2739774c 	addiu	t9,t9,30540
  417b88:	00000000 	nop
  417b8c:	0320f809 	jalr	t9
  417b90:	00000000 	nop
  417b94:	8fdc0010 	lw	gp,16(s8)
  417b98:	10000037 	b	417c78 <fmt_conn_instance+0x36c>
  417b9c:	00000000 	nop
	}
	else
	{
	    *p++ = ' ';
  417ba0:	8fc20018 	lw	v0,24(s8)
  417ba4:	00000000 	nop
  417ba8:	00402021 	move	a0,v0
  417bac:	24030020 	li	v1,32
  417bb0:	a0830000 	sb	v1,0(a0)
  417bb4:	24420001 	addiu	v0,v0,1
  417bb8:	afc20018 	sw	v0,24(s8)
	    addrtot(&c->that.host_addr, 0, p, ADDRTOT_BUF);
  417bbc:	8fc20038 	lw	v0,56(s8)
  417bc0:	00000000 	nop
  417bc4:	24420108 	addiu	v0,v0,264
  417bc8:	00402021 	move	a0,v0
  417bcc:	00002821 	move	a1,zero
  417bd0:	8fc60018 	lw	a2,24(s8)
  417bd4:	24070049 	li	a3,73
  417bd8:	8f998b50 	lw	t9,-29872(gp)
  417bdc:	00000000 	nop
  417be0:	0320f809 	jalr	t9
  417be4:	00000000 	nop
  417be8:	8fdc0010 	lw	gp,16(s8)
  417bec:	00000000 	nop
#ifdef NAT_TRAVERSAL
	    if (c->that.host_port != pluto_port) {
  417bf0:	8fc20038 	lw	v0,56(s8)
  417bf4:	00000000 	nop
  417bf8:	94430178 	lhu	v1,376(v0)
  417bfc:	8f8284b0 	lw	v0,-31568(gp)
  417c00:	00000000 	nop
  417c04:	94420000 	lhu	v0,0(v0)
  417c08:	00000000 	nop
  417c0c:	1062001a 	beq	v1,v0,417c78 <fmt_conn_instance+0x36c>
  417c10:	00000000 	nop
		p += strlen(p);
  417c14:	8fc40018 	lw	a0,24(s8)
  417c18:	8f998188 	lw	t9,-32376(gp)
  417c1c:	00000000 	nop
  417c20:	0320f809 	jalr	t9
  417c24:	00000000 	nop
  417c28:	8fdc0010 	lw	gp,16(s8)
  417c2c:	00401821 	move	v1,v0
  417c30:	8fc20018 	lw	v0,24(s8)
  417c34:	00000000 	nop
  417c38:	00431021 	addu	v0,v0,v1
  417c3c:	afc20018 	sw	v0,24(s8)
		sprintf(p, ":%d", c->that.host_port);
  417c40:	8fc20038 	lw	v0,56(s8)
  417c44:	00000000 	nop
  417c48:	94420178 	lhu	v0,376(v0)
  417c4c:	8fc40018 	lw	a0,24(s8)
  417c50:	8f858020 	lw	a1,-32736(gp)
  417c54:	00000000 	nop
  417c58:	24a55d6c 	addiu	a1,a1,23916
  417c5c:	00403021 	move	a2,v0
  417c60:	8f9983d0 	lw	t9,-31792(gp)
  417c64:	00000000 	nop
  417c68:	0320f809 	jalr	t9
  417c6c:	00000000 	nop
  417c70:	8fdc0010 	lw	gp,16(s8)
  417c74:	00000000 	nop
	    }
#endif
	}
    }
}
  417c78:	03c0e821 	move	sp,s8
  417c7c:	8fbf0030 	lw	ra,48(sp)
  417c80:	8fbe002c 	lw	s8,44(sp)
  417c84:	27bd0038 	addiu	sp,sp,56
  417c88:	03e00008 	jr	ra
  417c8c:	00000000 	nop

00417c90 <find_connection_for_clients>:
  417c90:	3c1c0fbf 	lui	gp,0xfbf
  417c94:	279c4ce0 	addiu	gp,gp,19680
  417c98:	0399e021 	addu	gp,gp,t9
  417c9c:	27bdffb0 	addiu	sp,sp,-80
  417ca0:	afbc0010 	sw	gp,16(sp)
  417ca4:	afbf0048 	sw	ra,72(sp)
  417ca8:	afbe0044 	sw	s8,68(sp)
  417cac:	afbc0040 	sw	gp,64(sp)
  417cb0:	03a0f021 	move	s8,sp
  417cb4:	afc40050 	sw	a0,80(s8)
  417cb8:	afc50054 	sw	a1,84(s8)
  417cbc:	afc60058 	sw	a2,88(s8)

/* Find an existing connection for a trapped outbound packet.
 * This is attempted before we bother with gateway discovery.
 *   + this connection is routed (i.e. approved for on-demand)
 *   + this subnet contains our_client (or we are our_client)
 *   + that subnet contains peer_client (or peer is peer_client)
 *   + don't care about Phase 1 IDs (we don't know)
 *   + require that the connection HAS_IPSEC_POLICY (duh: to serve clients)
 * Give preference to the first one that has an SA (either phase).
 * Otherwise, give preference to one with highest routing.
 */
static struct connection *
find_connection_for_clients(const ip_address *our_client, const ip_address *peer_client
	, int transport_proto)
{
    struct connection *c = connections, *best = NULL;
  417cc0:	8f828018 	lw	v0,-32744(gp)
  417cc4:	00000000 	nop
  417cc8:	244206f0 	addiu	v0,v0,1776
  417ccc:	8c420000 	lw	v0,0(v0)
  417cd0:	00000000 	nop
  417cd4:	afc20018 	sw	v0,24(s8)
  417cd8:	afc0001c 	sw	zero,28(s8)

    int our_port = ntohs(portof(our_client));
  417cdc:	8fc40050 	lw	a0,80(s8)
  417ce0:	8f998a60 	lw	t9,-30112(gp)
  417ce4:	00000000 	nop
  417ce8:	0320f809 	jalr	t9
  417cec:	00000000 	nop
  417cf0:	8fdc0010 	lw	gp,16(s8)
  417cf4:	afc20020 	sw	v0,32(s8)
    int peer_port = ntohs(portof(peer_client));
  417cf8:	8fc40054 	lw	a0,84(s8)
  417cfc:	8f998a60 	lw	t9,-30112(gp)
  417d00:	00000000 	nop
  417d04:	0320f809 	jalr	t9
  417d08:	00000000 	nop
  417d0c:	8fdc0010 	lw	gp,16(s8)
  417d10:	afc20024 	sw	v0,36(s8)
    int best_metric = 5;
  417d14:	24020005 	li	v0,5
  417d18:	afc20028 	sw	v0,40(s8)

    passert(!isanyaddr(our_client) && !isanyaddr(peer_client));
  417d1c:	8fc40050 	lw	a0,80(s8)
  417d20:	8f998628 	lw	t9,-31192(gp)
  417d24:	00000000 	nop
  417d28:	0320f809 	jalr	t9
  417d2c:	00000000 	nop
  417d30:	8fdc0010 	lw	gp,16(s8)
  417d34:	1440000b 	bnez	v0,417d64 <find_connection_for_clients+0xd4>
  417d38:	00000000 	nop
  417d3c:	8fc40054 	lw	a0,84(s8)
  417d40:	8f998628 	lw	t9,-31192(gp)
  417d44:	00000000 	nop
  417d48:	0320f809 	jalr	t9
  417d4c:	00000000 	nop
  417d50:	8fdc0010 	lw	gp,16(s8)
  417d54:	14400003 	bnez	v0,417d64 <find_connection_for_clients+0xd4>
  417d58:	00000000 	nop
  417d5c:	1000000e 	b	417d98 <find_connection_for_clients+0x108>
  417d60:	00000000 	nop
  417d64:	8f848020 	lw	a0,-32736(gp)
  417d68:	00000000 	nop
  417d6c:	24845d70 	addiu	a0,a0,23920
  417d70:	8f858020 	lw	a1,-32736(gp)
  417d74:	00000000 	nop
  417d78:	24a554a4 	addiu	a1,a1,21668
  417d7c:	240604ef 	li	a2,1263
  417d80:	8f998bb8 	lw	t9,-29768(gp)
  417d84:	00000000 	nop
  417d88:	0320f809 	jalr	t9
  417d8c:	00000000 	nop
  417d90:	8fdc0010 	lw	gp,16(s8)
  417d94:	00000000 	nop

    for (c = connections; c != NULL; c = c->ac_next)
  417d98:	8f828018 	lw	v0,-32744(gp)
  417d9c:	00000000 	nop
  417da0:	244206f0 	addiu	v0,v0,1776
  417da4:	8c420000 	lw	v0,0(v0)
  417da8:	00000000 	nop
  417dac:	afc20018 	sw	v0,24(s8)
  417db0:	8fc20018 	lw	v0,24(s8)
  417db4:	00000000 	nop
  417db8:	14400003 	bnez	v0,417dc8 <find_connection_for_clients+0x138>
  417dbc:	00000000 	nop
  417dc0:	10000113 	b	418210 <find_connection_for_clients+0x580>
  417dc4:	00000000 	nop
    {
	if (HAS_IPSEC_POLICY(c->policy)
	&& routed(c->routing)
	&& addrinsubnet(our_client, &c->this.client)
	&& addrinsubnet(peer_client, &c->that.client)
	&& (!c->this.protocol || transport_proto == c->this.protocol)
	&& (!c->this.port || our_port == c->this.port)
	&& (!c->that.port || peer_port == c->that.port))
  417dc8:	8fc20018 	lw	v0,24(s8)
  417dcc:	00000000 	nop
  417dd0:	8c440008 	lw	a0,8(v0)
  417dd4:	8c45000c 	lw	a1,12(v0)
  417dd8:	24020000 	li	v0,0
  417ddc:	240300fc 	li	v1,252
  417de0:	00822024 	and	a0,a0,v0
  417de4:	00a32824 	and	a1,a1,v1
  417de8:	00801021 	move	v0,a0
  417dec:	00451025 	or	v0,v0,a1
  417df0:	10400100 	beqz	v0,4181f4 <find_connection_for_clients+0x564>
  417df4:	00000000 	nop
  417df8:	8fc20018 	lw	v0,24(s8)
  417dfc:	00000000 	nop
  417e00:	8c42019c 	lw	v0,412(v0)
  417e04:	00000000 	nop
  417e08:	2c420002 	sltiu	v0,v0,2
  417e0c:	144000f9 	bnez	v0,4181f4 <find_connection_for_clients+0x564>
  417e10:	00000000 	nop
  417e14:	8fc20018 	lw	v0,24(s8)
  417e18:	00000000 	nop
  417e1c:	24420090 	addiu	v0,v0,144
  417e20:	8fc40050 	lw	a0,80(s8)
  417e24:	00402821 	move	a1,v0
  417e28:	8f998acc 	lw	t9,-30004(gp)
  417e2c:	00000000 	nop
  417e30:	0320f809 	jalr	t9
  417e34:	00000000 	nop
  417e38:	8fdc0010 	lw	gp,16(s8)
  417e3c:	104000ed 	beqz	v0,4181f4 <find_connection_for_clients+0x564>
  417e40:	00000000 	nop
  417e44:	8fc20018 	lw	v0,24(s8)
  417e48:	00000000 	nop
  417e4c:	24420140 	addiu	v0,v0,320
  417e50:	8fc40054 	lw	a0,84(s8)
  417e54:	00402821 	move	a1,v0
  417e58:	8f998acc 	lw	t9,-30004(gp)
  417e5c:	00000000 	nop
  417e60:	0320f809 	jalr	t9
  417e64:	00000000 	nop
  417e68:	8fdc0010 	lw	gp,16(s8)
  417e6c:	104000e1 	beqz	v0,4181f4 <find_connection_for_clients+0x564>
  417e70:	00000000 	nop
  417e74:	8fc20018 	lw	v0,24(s8)
  417e78:	00000000 	nop
  417e7c:	904200cc 	lbu	v0,204(v0)
  417e80:	00000000 	nop
  417e84:	1040000a 	beqz	v0,417eb0 <find_connection_for_clients+0x220>
  417e88:	00000000 	nop
  417e8c:	8fc20018 	lw	v0,24(s8)
  417e90:	00000000 	nop
  417e94:	904300cc 	lbu	v1,204(v0)
  417e98:	8fc20058 	lw	v0,88(s8)
  417e9c:	00000000 	nop
  417ea0:	10430003 	beq	v0,v1,417eb0 <find_connection_for_clients+0x220>
  417ea4:	00000000 	nop
  417ea8:	100000d2 	b	4181f4 <find_connection_for_clients+0x564>
  417eac:	00000000 	nop
  417eb0:	8fc20018 	lw	v0,24(s8)
  417eb4:	00000000 	nop
  417eb8:	944200ca 	lhu	v0,202(v0)
  417ebc:	00000000 	nop
  417ec0:	1040000a 	beqz	v0,417eec <find_connection_for_clients+0x25c>
  417ec4:	00000000 	nop
  417ec8:	8fc20018 	lw	v0,24(s8)
  417ecc:	00000000 	nop
  417ed0:	944300ca 	lhu	v1,202(v0)
  417ed4:	8fc20020 	lw	v0,32(s8)
  417ed8:	00000000 	nop
  417edc:	10430003 	beq	v0,v1,417eec <find_connection_for_clients+0x25c>
  417ee0:	00000000 	nop
  417ee4:	100000c3 	b	4181f4 <find_connection_for_clients+0x564>
  417ee8:	00000000 	nop
  417eec:	8fc20018 	lw	v0,24(s8)
  417ef0:	00000000 	nop
  417ef4:	9442017a 	lhu	v0,378(v0)
  417ef8:	00000000 	nop
  417efc:	1040000a 	beqz	v0,417f28 <find_connection_for_clients+0x298>
  417f00:	00000000 	nop
  417f04:	8fc20018 	lw	v0,24(s8)
  417f08:	00000000 	nop
  417f0c:	9443017a 	lhu	v1,378(v0)
  417f10:	8fc20024 	lw	v0,36(s8)
  417f14:	00000000 	nop
  417f18:	10430003 	beq	v0,v1,417f28 <find_connection_for_clients+0x298>
  417f1c:	00000000 	nop
  417f20:	100000b4 	b	4181f4 <find_connection_for_clients+0x564>
  417f24:	00000000 	nop
 	{
	    int metric = 2 * (c->this.port != our_port) +
  417f28:	8fc20018 	lw	v0,24(s8)
  417f2c:	00000000 	nop
  417f30:	944300ca 	lhu	v1,202(v0)
  417f34:	8fc20020 	lw	v0,32(s8)
  417f38:	00000000 	nop
  417f3c:	10620005 	beq	v1,v0,417f54 <find_connection_for_clients+0x2c4>
  417f40:	00000000 	nop
  417f44:	24020002 	li	v0,2
  417f48:	afc20034 	sw	v0,52(s8)
  417f4c:	10000002 	b	417f58 <find_connection_for_clients+0x2c8>
  417f50:	00000000 	nop
  417f54:	afc00034 	sw	zero,52(s8)
  417f58:	8fc30034 	lw	v1,52(s8)
  417f5c:	00000000 	nop
  417f60:	afc30030 	sw	v1,48(s8)
  417f64:	8fc20018 	lw	v0,24(s8)
  417f68:	00000000 	nop
  417f6c:	9443017a 	lhu	v1,378(v0)
  417f70:	8fc20024 	lw	v0,36(s8)
  417f74:	00000000 	nop
  417f78:	10620005 	beq	v1,v0,417f90 <find_connection_for_clients+0x300>
  417f7c:	00000000 	nop
  417f80:	8fc20030 	lw	v0,48(s8)
  417f84:	00000000 	nop
  417f88:	24420002 	addiu	v0,v0,2
  417f8c:	afc20030 	sw	v0,48(s8)
  417f90:	8fc20018 	lw	v0,24(s8)
  417f94:	00000000 	nop
  417f98:	904200cc 	lbu	v0,204(v0)
  417f9c:	00000000 	nop
  417fa0:	afc20038 	sw	v0,56(s8)
  417fa4:	8fc20058 	lw	v0,88(s8)
  417fa8:	8fc30038 	lw	v1,56(s8)
  417fac:	00000000 	nop
  417fb0:	00621026 	xor	v0,v1,v0
  417fb4:	0002102b 	sltu	v0,zero,v0
  417fb8:	afc20038 	sw	v0,56(s8)
  417fbc:	8fc20038 	lw	v0,56(s8)
  417fc0:	8fc30030 	lw	v1,48(s8)
  417fc4:	00000000 	nop
  417fc8:	00431021 	addu	v0,v0,v1
  417fcc:	afc20038 	sw	v0,56(s8)
  417fd0:	8fc20038 	lw	v0,56(s8)
  417fd4:	00000000 	nop
  417fd8:	afc2002c 	sw	v0,44(s8)
			 2 * (c->that.port != peer_port) +
			     (c->this.protocol != transport_proto);

	    if (best == NULL || best->routing < c->routing)
  417fdc:	8fc2001c 	lw	v0,28(s8)
  417fe0:	00000000 	nop
  417fe4:	1040000d 	beqz	v0,41801c <find_connection_for_clients+0x38c>
  417fe8:	00000000 	nop
  417fec:	8fc2001c 	lw	v0,28(s8)
  417ff0:	00000000 	nop
  417ff4:	8c43019c 	lw	v1,412(v0)
  417ff8:	8fc20018 	lw	v0,24(s8)
  417ffc:	00000000 	nop
  418000:	8c42019c 	lw	v0,412(v0)
  418004:	00000000 	nop
  418008:	0062102b 	sltu	v0,v1,v0
  41800c:	14400003 	bnez	v0,41801c <find_connection_for_clients+0x38c>
  418010:	00000000 	nop
  418014:	10000006 	b	418030 <find_connection_for_clients+0x3a0>
  418018:	00000000 	nop
		best = c;
  41801c:	8fc20018 	lw	v0,24(s8)
  418020:	00000000 	nop
  418024:	afc2001c 	sw	v0,28(s8)
  418028:	10000059 	b	418190 <find_connection_for_clients+0x500>
  41802c:	00000000 	nop
	    else if (best->routing == c->routing)
  418030:	8fc2001c 	lw	v0,28(s8)
  418034:	00000000 	nop
  418038:	8c43019c 	lw	v1,412(v0)
  41803c:	8fc20018 	lw	v0,24(s8)
  418040:	00000000 	nop
  418044:	8c42019c 	lw	v0,412(v0)
  418048:	00000000 	nop
  41804c:	14620050 	bne	v1,v0,418190 <find_connection_for_clients+0x500>
  418050:	00000000 	nop
	    {
		if (!subnetinsubnet(&best->this.client, &c->this.client))
  418054:	8fc2001c 	lw	v0,28(s8)
  418058:	00000000 	nop
  41805c:	24430090 	addiu	v1,v0,144
  418060:	8fc20018 	lw	v0,24(s8)
  418064:	00000000 	nop
  418068:	24420090 	addiu	v0,v0,144
  41806c:	00602021 	move	a0,v1
  418070:	00402821 	move	a1,v0
  418074:	8f99827c 	lw	t9,-32132(gp)
  418078:	00000000 	nop
  41807c:	0320f809 	jalr	t9
  418080:	00000000 	nop
  418084:	8fdc0010 	lw	gp,16(s8)
  418088:	14400006 	bnez	v0,4180a4 <find_connection_for_clients+0x414>
  41808c:	00000000 	nop
		    best = c;
  418090:	8fc20018 	lw	v0,24(s8)
  418094:	00000000 	nop
  418098:	afc2001c 	sw	v0,28(s8)
  41809c:	1000003c 	b	418190 <find_connection_for_clients+0x500>
  4180a0:	00000000 	nop
		else if (samesubnet(&best->this.client, &c->this.client))
  4180a4:	8fc2001c 	lw	v0,28(s8)
  4180a8:	00000000 	nop
  4180ac:	24430090 	addiu	v1,v0,144
  4180b0:	8fc20018 	lw	v0,24(s8)
  4180b4:	00000000 	nop
  4180b8:	24420090 	addiu	v0,v0,144
  4180bc:	00602021 	move	a0,v1
  4180c0:	00402821 	move	a1,v0
  4180c4:	8f9983e8 	lw	t9,-31768(gp)
  4180c8:	00000000 	nop
  4180cc:	0320f809 	jalr	t9
  4180d0:	00000000 	nop
  4180d4:	8fdc0010 	lw	gp,16(s8)
  4180d8:	1040002d 	beqz	v0,418190 <find_connection_for_clients+0x500>
  4180dc:	00000000 	nop
		{
		    if (!subnetinsubnet(&best->that.client, &c->that.client))
  4180e0:	8fc2001c 	lw	v0,28(s8)
  4180e4:	00000000 	nop
  4180e8:	24430140 	addiu	v1,v0,320
  4180ec:	8fc20018 	lw	v0,24(s8)
  4180f0:	00000000 	nop
  4180f4:	24420140 	addiu	v0,v0,320
  4180f8:	00602021 	move	a0,v1
  4180fc:	00402821 	move	a1,v0
  418100:	8f99827c 	lw	t9,-32132(gp)
  418104:	00000000 	nop
  418108:	0320f809 	jalr	t9
  41810c:	00000000 	nop
  418110:	8fdc0010 	lw	gp,16(s8)
  418114:	14400006 	bnez	v0,418130 <find_connection_for_clients+0x4a0>
  418118:	00000000 	nop
			best = c;
  41811c:	8fc20018 	lw	v0,24(s8)
  418120:	00000000 	nop
  418124:	afc2001c 	sw	v0,28(s8)
  418128:	10000019 	b	418190 <find_connection_for_clients+0x500>
  41812c:	00000000 	nop
		    else if (samesubnet(&best->that.client, &c->that.client)
		    && metric < best_metric)
  418130:	8fc2001c 	lw	v0,28(s8)
  418134:	00000000 	nop
  418138:	24430140 	addiu	v1,v0,320
  41813c:	8fc20018 	lw	v0,24(s8)
  418140:	00000000 	nop
  418144:	24420140 	addiu	v0,v0,320
  418148:	00602021 	move	a0,v1
  41814c:	00402821 	move	a1,v0
  418150:	8f9983e8 	lw	t9,-31768(gp)
  418154:	00000000 	nop
  418158:	0320f809 	jalr	t9
  41815c:	00000000 	nop
  418160:	8fdc0010 	lw	gp,16(s8)
  418164:	1040000a 	beqz	v0,418190 <find_connection_for_clients+0x500>
  418168:	00000000 	nop
  41816c:	8fc2002c 	lw	v0,44(s8)
  418170:	8fc30028 	lw	v1,40(s8)
  418174:	00000000 	nop
  418178:	0043102a 	slt	v0,v0,v1
  41817c:	10400004 	beqz	v0,418190 <find_connection_for_clients+0x500>
  418180:	00000000 	nop
			best = c;
  418184:	8fc20018 	lw	v0,24(s8)
  418188:	00000000 	nop
  41818c:	afc2001c 	sw	v0,28(s8)
		}
	    }

	    if (best == c)
  418190:	8fc3001c 	lw	v1,28(s8)
  418194:	8fc20018 	lw	v0,24(s8)
  418198:	00000000 	nop
  41819c:	14620004 	bne	v1,v0,4181b0 <find_connection_for_clients+0x520>
  4181a0:	00000000 	nop
		best_metric = metric;
  4181a4:	8fc2002c 	lw	v0,44(s8)
  4181a8:	00000000 	nop
  4181ac:	afc20028 	sw	v0,40(s8)
		
	    if (c->newest_isakmp_sa != SOS_NOBODY
	    || c->newest_ipsec_sa != SOS_NOBODY)
  4181b0:	8fc20018 	lw	v0,24(s8)
  4181b4:	00000000 	nop
  4181b8:	8c4201a4 	lw	v0,420(v0)
  4181bc:	00000000 	nop
  4181c0:	14400009 	bnez	v0,4181e8 <find_connection_for_clients+0x558>
  4181c4:	00000000 	nop
  4181c8:	8fc20018 	lw	v0,24(s8)
  4181cc:	00000000 	nop
  4181d0:	8c4201a8 	lw	v0,424(v0)
  4181d4:	00000000 	nop
  4181d8:	14400003 	bnez	v0,4181e8 <find_connection_for_clients+0x558>
  4181dc:	00000000 	nop
  4181e0:	10000004 	b	4181f4 <find_connection_for_clients+0x564>
  4181e4:	00000000 	nop
		return c;
  4181e8:	8fc20018 	lw	v0,24(s8)
  4181ec:	1000000a 	b	418218 <find_connection_for_clients+0x588>
  4181f0:	00000000 	nop
  4181f4:	8fc20018 	lw	v0,24(s8)
  4181f8:	00000000 	nop
  4181fc:	8c4201cc 	lw	v0,460(v0)
  418200:	00000000 	nop
  418204:	afc20018 	sw	v0,24(s8)
  418208:	1000fee9 	b	417db0 <find_connection_for_clients+0x120>
  41820c:	00000000 	nop
	}
    }
    return best;
  418210:	8fc2001c 	lw	v0,28(s8)
  418214:	00000000 	nop
}
  418218:	03c0e821 	move	sp,s8
  41821c:	8fbf0048 	lw	ra,72(sp)
  418220:	8fbe0044 	lw	s8,68(sp)
  418224:	27bd0050 	addiu	sp,sp,80
  418228:	03e00008 	jr	ra
  41822c:	00000000 	nop

00418230 <build_outgoing_opportunistic_connection>:
  418230:	3c1c0fbf 	lui	gp,0xfbf
  418234:	279c4740 	addiu	gp,gp,18240
  418238:	0399e021 	addu	gp,gp,t9
  41823c:	27bdffc0 	addiu	sp,sp,-64
  418240:	afbc0018 	sw	gp,24(sp)
  418244:	afbf0038 	sw	ra,56(sp)
  418248:	afbe0034 	sw	s8,52(sp)
  41824c:	afbc0030 	sw	gp,48(sp)
  418250:	03a0f021 	move	s8,sp
  418254:	afc40040 	sw	a0,64(s8)
  418258:	afc50044 	sw	a1,68(s8)
  41825c:	afc60048 	sw	a2,72(s8)

/* Find and instantiate a connection for an outgoing Opportunistic connection.
 * We've already discovered its gateway.
 * We look for a the connection such that:
 *   + this is one of our interfaces
 *   + this subnet contains our_client (or we are our_client)
 *     (we will specialize the client).  We prefer the smallest such subnet.
 *   + is opportunistic
 *   + that peer is NO_IP
 *   + don't care about Phase 1 IDs (probably should be default)
 * We could look for a connection that already had the desired peer
 * (rather than NO_IP) specified, but it doesn't seem worth the
 * bother.
 */
struct connection *
build_outgoing_opportunistic_connection(struct gw_info *gw
, const ip_address *our_client, const ip_address *peer_client)
{
    struct iface *p;
    struct connection *best = NULL;
  418260:	afc00024 	sw	zero,36(s8)

    passert(!isanyaddr(our_client) && !isanyaddr(peer_client));
  418264:	8fc40044 	lw	a0,68(s8)
  418268:	8f998628 	lw	t9,-31192(gp)
  41826c:	00000000 	nop
  418270:	0320f809 	jalr	t9
  418274:	00000000 	nop
  418278:	8fdc0018 	lw	gp,24(s8)
  41827c:	1440000b 	bnez	v0,4182ac <build_outgoing_opportunistic_connection+0x7c>
  418280:	00000000 	nop
  418284:	8fc40048 	lw	a0,72(s8)
  418288:	8f998628 	lw	t9,-31192(gp)
  41828c:	00000000 	nop
  418290:	0320f809 	jalr	t9
  418294:	00000000 	nop
  418298:	8fdc0018 	lw	gp,24(s8)
  41829c:	14400003 	bnez	v0,4182ac <build_outgoing_opportunistic_connection+0x7c>
  4182a0:	00000000 	nop
  4182a4:	1000000e 	b	4182e0 <build_outgoing_opportunistic_connection+0xb0>
  4182a8:	00000000 	nop
  4182ac:	8f848020 	lw	a0,-32736(gp)
  4182b0:	00000000 	nop
  4182b4:	24845d70 	addiu	a0,a0,23920
  4182b8:	8f858020 	lw	a1,-32736(gp)
  4182bc:	00000000 	nop
  4182c0:	24a554a4 	addiu	a1,a1,21668
  4182c4:	2406052e 	li	a2,1326
  4182c8:	8f998bb8 	lw	t9,-29768(gp)
  4182cc:	00000000 	nop
  4182d0:	0320f809 	jalr	t9
  4182d4:	00000000 	nop
  4182d8:	8fdc0018 	lw	gp,24(s8)
  4182dc:	00000000 	nop

    /* We don't know his ID yet, so gw id must be an ipaddr */
    passert(id_is_ipaddr(&gw->gw_id));
  4182e0:	8fc20040 	lw	v0,64(s8)
  4182e4:	00000000 	nop
  4182e8:	24420040 	addiu	v0,v0,64
  4182ec:	8c430000 	lw	v1,0(v0)
  4182f0:	24020001 	li	v0,1
  4182f4:	10620015 	beq	v1,v0,41834c <build_outgoing_opportunistic_connection+0x11c>
  4182f8:	00000000 	nop
  4182fc:	8fc20040 	lw	v0,64(s8)
  418300:	00000000 	nop
  418304:	24420040 	addiu	v0,v0,64
  418308:	8c430000 	lw	v1,0(v0)
  41830c:	24020005 	li	v0,5
  418310:	1062000e 	beq	v1,v0,41834c <build_outgoing_opportunistic_connection+0x11c>
  418314:	00000000 	nop
  418318:	8f848020 	lw	a0,-32736(gp)
  41831c:	00000000 	nop
  418320:	24845da4 	addiu	a0,a0,23972
  418324:	8f858020 	lw	a1,-32736(gp)
  418328:	00000000 	nop
  41832c:	24a554a4 	addiu	a1,a1,21668
  418330:	24060531 	li	a2,1329
  418334:	8f998bb8 	lw	t9,-29768(gp)
  418338:	00000000 	nop
  41833c:	0320f809 	jalr	t9
  418340:	00000000 	nop
  418344:	8fdc0018 	lw	gp,24(s8)
  418348:	00000000 	nop

    /* for each of our addresses... */
    for (p = interfaces; p != NULL; p = p->next)
  41834c:	8f828c10 	lw	v0,-29680(gp)
  418350:	00000000 	nop
  418354:	8c420000 	lw	v0,0(v0)
  418358:	00000000 	nop
  41835c:	afc20020 	sw	v0,32(s8)
  418360:	8fc20020 	lw	v0,32(s8)
  418364:	00000000 	nop
  418368:	14400003 	bnez	v0,418378 <build_outgoing_opportunistic_connection+0x148>
  41836c:	00000000 	nop
  418370:	10000067 	b	418510 <build_outgoing_opportunistic_connection+0x2e0>
  418374:	00000000 	nop
    {
	/* go through those connections with our address and NO_IP as hosts
	 * We cannot know what port the peer would use, so we assume
	 * that it is pluto_port (makes debugging easier).
	 */
	struct connection *c = find_host_pair_connections(&p->addr
  418378:	8fc20020 	lw	v0,32(s8)
  41837c:	00000000 	nop
  418380:	24420008 	addiu	v0,v0,8
  418384:	8f8384b0 	lw	v1,-31568(gp)
  418388:	00000000 	nop
  41838c:	94630000 	lhu	v1,0(v1)
  418390:	8f8784b0 	lw	a3,-31568(gp)
  418394:	00000000 	nop
  418398:	94e70000 	lhu	a3,0(a3)
  41839c:	00402021 	move	a0,v0
  4183a0:	00602821 	move	a1,v1
  4183a4:	00003021 	move	a2,zero
  4183a8:	8f998024 	lw	t9,-32732(gp)
  4183ac:	00000000 	nop
  4183b0:	27392a64 	addiu	t9,t9,10852
  4183b4:	00000000 	nop
  4183b8:	0320f809 	jalr	t9
  4183bc:	00000000 	nop
  4183c0:	8fdc0018 	lw	gp,24(s8)
  4183c4:	afc20028 	sw	v0,40(s8)
	    , pluto_port, (ip_address *)NULL, pluto_port);

	for (; c != NULL; c = c->hp_next)
  4183c8:	8fc20028 	lw	v0,40(s8)
  4183cc:	00000000 	nop
  4183d0:	14400008 	bnez	v0,4183f4 <build_outgoing_opportunistic_connection+0x1c4>
  4183d4:	00000000 	nop
  4183d8:	8fc20020 	lw	v0,32(s8)
  4183dc:	00000000 	nop
  4183e0:	8c420028 	lw	v0,40(v0)
  4183e4:	00000000 	nop
  4183e8:	afc20020 	sw	v0,32(s8)
  4183ec:	1000ffdc 	b	418360 <build_outgoing_opportunistic_connection+0x130>
  4183f0:	00000000 	nop
	    if (c->kind == CK_TEMPLATE
	    && addrinsubnet(our_client, &c->this.client)
	    && (c->policy & POLICY_OPPO)
	    && HAS_IPSEC_POLICY(c->policy)
	    && (best == NULL || !subnetinsubnet(&best->this.client, &c->this.client)))
  4183f4:	8fc20028 	lw	v0,40(s8)
  4183f8:	00000000 	nop
  4183fc:	8c420194 	lw	v0,404(v0)
  418400:	00000000 	nop
  418404:	1440003b 	bnez	v0,4184f4 <build_outgoing_opportunistic_connection+0x2c4>
  418408:	00000000 	nop
  41840c:	8fc20028 	lw	v0,40(s8)
  418410:	00000000 	nop
  418414:	24420090 	addiu	v0,v0,144
  418418:	8fc40044 	lw	a0,68(s8)
  41841c:	00402821 	move	a1,v0
  418420:	8f998acc 	lw	t9,-30004(gp)
  418424:	00000000 	nop
  418428:	0320f809 	jalr	t9
  41842c:	00000000 	nop
  418430:	8fdc0018 	lw	gp,24(s8)
  418434:	1040002f 	beqz	v0,4184f4 <build_outgoing_opportunistic_connection+0x2c4>
  418438:	00000000 	nop
  41843c:	8fc20028 	lw	v0,40(s8)
  418440:	00000000 	nop
  418444:	8c440008 	lw	a0,8(v0)
  418448:	8c45000c 	lw	a1,12(v0)
  41844c:	24020000 	li	v0,0
  418450:	24030800 	li	v1,2048
  418454:	00822024 	and	a0,a0,v0
  418458:	00a32824 	and	a1,a1,v1
  41845c:	00801021 	move	v0,a0
  418460:	00451025 	or	v0,v0,a1
  418464:	10400023 	beqz	v0,4184f4 <build_outgoing_opportunistic_connection+0x2c4>
  418468:	00000000 	nop
  41846c:	8fc20028 	lw	v0,40(s8)
  418470:	00000000 	nop
  418474:	8c440008 	lw	a0,8(v0)
  418478:	8c45000c 	lw	a1,12(v0)
  41847c:	24020000 	li	v0,0
  418480:	240300fc 	li	v1,252
  418484:	00822024 	and	a0,a0,v0
  418488:	00a32824 	and	a1,a1,v1
  41848c:	00801021 	move	v0,a0
  418490:	00451025 	or	v0,v0,a1
  418494:	10400017 	beqz	v0,4184f4 <build_outgoing_opportunistic_connection+0x2c4>
  418498:	00000000 	nop
  41849c:	8fc20024 	lw	v0,36(s8)
  4184a0:	00000000 	nop
  4184a4:	10400010 	beqz	v0,4184e8 <build_outgoing_opportunistic_connection+0x2b8>
  4184a8:	00000000 	nop
  4184ac:	8fc20024 	lw	v0,36(s8)
  4184b0:	00000000 	nop
  4184b4:	24430090 	addiu	v1,v0,144
  4184b8:	8fc20028 	lw	v0,40(s8)
  4184bc:	00000000 	nop
  4184c0:	24420090 	addiu	v0,v0,144
  4184c4:	00602021 	move	a0,v1
  4184c8:	00402821 	move	a1,v0
  4184cc:	8f99827c 	lw	t9,-32132(gp)
  4184d0:	00000000 	nop
  4184d4:	0320f809 	jalr	t9
  4184d8:	00000000 	nop
  4184dc:	8fdc0018 	lw	gp,24(s8)
  4184e0:	14400004 	bnez	v0,4184f4 <build_outgoing_opportunistic_connection+0x2c4>
  4184e4:	00000000 	nop
		best = c;
  4184e8:	8fc20028 	lw	v0,40(s8)
  4184ec:	00000000 	nop
  4184f0:	afc20024 	sw	v0,36(s8)
  4184f4:	8fc20028 	lw	v0,40(s8)
  4184f8:	00000000 	nop
  4184fc:	8c4201c8 	lw	v0,456(v0)
  418500:	00000000 	nop
  418504:	afc20028 	sw	v0,40(s8)
  418508:	1000ffaf 	b	4183c8 <build_outgoing_opportunistic_connection+0x198>
  41850c:	00000000 	nop
    }
    return best == NULL? NULL
  418510:	8fc20024 	lw	v0,36(s8)
  418514:	00000000 	nop
  418518:	10400016 	beqz	v0,418574 <build_outgoing_opportunistic_connection+0x344>
  41851c:	00000000 	nop
  418520:	8fc20040 	lw	v0,64(s8)
  418524:	00000000 	nop
  418528:	24430044 	addiu	v1,v0,68
  41852c:	8fc20044 	lw	v0,68(s8)
  418530:	00000000 	nop
  418534:	afa20010 	sw	v0,16(sp)
  418538:	8fc20048 	lw	v0,72(s8)
  41853c:	00000000 	nop
  418540:	afa20014 	sw	v0,20(sp)
  418544:	8fc40024 	lw	a0,36(s8)
  418548:	00602821 	move	a1,v1
  41854c:	00003021 	move	a2,zero
  418550:	8fc70040 	lw	a3,64(s8)
  418554:	8f998454 	lw	t9,-31660(gp)
  418558:	00000000 	nop
  41855c:	0320f809 	jalr	t9
  418560:	00000000 	nop
  418564:	8fdc0018 	lw	gp,24(s8)
  418568:	afc2002c 	sw	v0,44(s8)
  41856c:	10000002 	b	418578 <build_outgoing_opportunistic_connection+0x348>
  418570:	00000000 	nop
  418574:	afc0002c 	sw	zero,44(s8)
  418578:	8fc2002c 	lw	v0,44(s8)
  41857c:	00000000 	nop
	: oppo_instantiate(best, &gw->gw_id.ip_addr, NULL, gw
	    , our_client, peer_client);
}
  418580:	03c0e821 	move	sp,s8
  418584:	8fbf0038 	lw	ra,56(sp)
  418588:	8fbe0034 	lw	s8,52(sp)
  41858c:	27bd0040 	addiu	sp,sp,64
  418590:	03e00008 	jr	ra
  418594:	00000000 	nop

00418598 <orient>:
  418598:	3c1c0fbf 	lui	gp,0xfbf
  41859c:	279c43d8 	addiu	gp,gp,17368
  4185a0:	0399e021 	addu	gp,gp,t9
  4185a4:	27bdff18 	addiu	sp,sp,-232
  4185a8:	afbc0018 	sw	gp,24(sp)
  4185ac:	afbf00e0 	sw	ra,224(sp)
  4185b0:	afbe00dc 	sw	s8,220(sp)
  4185b4:	afbc00d8 	sw	gp,216(sp)
  4185b8:	03a0f021 	move	s8,sp
  4185bc:	afc400e8 	sw	a0,232(s8)


bool
orient(struct connection *c)
{
    if (!oriented(*c))
  4185c0:	8fc200e8 	lw	v0,232(s8)
  4185c4:	00000000 	nop
  4185c8:	8c420198 	lw	v0,408(v0)
  4185cc:	00000000 	nop
  4185d0:	144000c1 	bnez	v0,4188d8 <orient+0x340>
  4185d4:	00000000 	nop
    {
	struct iface *p;

	/* Note: this loop does not stop when it finds a match:
	 * it continues checking to catch any ambiguity.
	 */
	for (p = interfaces; p != NULL; p = p->next)
  4185d8:	8f828c10 	lw	v0,-29680(gp)
  4185dc:	00000000 	nop
  4185e0:	8c420000 	lw	v0,0(v0)
  4185e4:	00000000 	nop
  4185e8:	afc20020 	sw	v0,32(s8)
  4185ec:	8fc20020 	lw	v0,32(s8)
  4185f0:	00000000 	nop
  4185f4:	14400003 	bnez	v0,418604 <orient+0x6c>
  4185f8:	00000000 	nop
  4185fc:	100000b6 	b	4188d8 <orient+0x340>
  418600:	00000000 	nop
	{
#ifdef NAT_TRAVERSAL
	    if (p->ike_float) continue;
  418604:	8fc20020 	lw	v0,32(s8)
  418608:	00000000 	nop
  41860c:	8c42002c 	lw	v0,44(v0)
  418610:	00000000 	nop
  418614:	10400003 	beqz	v0,418624 <orient+0x8c>
  418618:	00000000 	nop
  41861c:	100000a7 	b	4188bc <orient+0x324>
  418620:	00000000 	nop
  418624:	00000000 	nop
#endif
	    for (;;)
	    {
		/* check if this interface matches this end */
		if (sameaddr(&c->this.host_addr, &p->addr)
		&& (!no_klips || c->this.host_port == pluto_port))
  418628:	8fc200e8 	lw	v0,232(s8)
  41862c:	00000000 	nop
  418630:	24430058 	addiu	v1,v0,88
  418634:	8fc20020 	lw	v0,32(s8)
  418638:	00000000 	nop
  41863c:	24420008 	addiu	v0,v0,8
  418640:	00602021 	move	a0,v1
  418644:	00402821 	move	a1,v0
  418648:	8f998928 	lw	t9,-30424(gp)
  41864c:	00000000 	nop
  418650:	0320f809 	jalr	t9
  418654:	00000000 	nop
  418658:	8fdc0018 	lw	gp,24(s8)
  41865c:	10400050 	beqz	v0,4187a0 <orient+0x208>
  418660:	00000000 	nop
  418664:	8f8286ec 	lw	v0,-30996(gp)
  418668:	00000000 	nop
  41866c:	8c420000 	lw	v0,0(v0)
  418670:	00000000 	nop
  418674:	1040000c 	beqz	v0,4186a8 <orient+0x110>
  418678:	00000000 	nop
  41867c:	8fc200e8 	lw	v0,232(s8)
  418680:	00000000 	nop
  418684:	944300c8 	lhu	v1,200(v0)
  418688:	8f8284b0 	lw	v0,-31568(gp)
  41868c:	00000000 	nop
  418690:	94420000 	lhu	v0,0(v0)
  418694:	00000000 	nop
  418698:	10620003 	beq	v1,v0,4186a8 <orient+0x110>
  41869c:	00000000 	nop
  4186a0:	1000003f 	b	4187a0 <orient+0x208>
  4186a4:	00000000 	nop
		{
		    if (oriented(*c))
  4186a8:	8fc200e8 	lw	v0,232(s8)
  4186ac:	00000000 	nop
  4186b0:	8c420198 	lw	v0,408(v0)
  4186b4:	00000000 	nop
  4186b8:	10400035 	beqz	v0,418790 <orient+0x1f8>
  4186bc:	00000000 	nop
		    {
			if (c->interface == p)
  4186c0:	8fc200e8 	lw	v0,232(s8)
  4186c4:	00000000 	nop
  4186c8:	8c430198 	lw	v1,408(v0)
  4186cc:	8fc20020 	lw	v0,32(s8)
  4186d0:	00000000 	nop
  4186d4:	14620012 	bne	v1,v0,418720 <orient+0x188>
  4186d8:	00000000 	nop
			    loglog(RC_LOG_SERIOUS
  4186dc:	24040003 	li	a0,3
  4186e0:	8f858020 	lw	a1,-32736(gp)
  4186e4:	00000000 	nop
  4186e8:	24a55dc0 	addiu	a1,a1,24000
  4186ec:	8fc200e8 	lw	v0,232(s8)
  4186f0:	00000000 	nop
  4186f4:	8c460000 	lw	a2,0(v0)
  4186f8:	8fc20020 	lw	v0,32(s8)
  4186fc:	00000000 	nop
  418700:	8c470004 	lw	a3,4(v0)
  418704:	8f998c48 	lw	t9,-29624(gp)
  418708:	00000000 	nop
  41870c:	0320f809 	jalr	t9
  418710:	00000000 	nop
  418714:	8fdc0018 	lw	gp,24(s8)
  418718:	10000017 	b	418778 <orient+0x1e0>
  41871c:	00000000 	nop
				, "both sides of \"%s\" are our interface %s!"
				, c->name, p->rname);
			else
			    loglog(RC_LOG_SERIOUS, "two interfaces match \"%s\" (%s, %s)"
  418720:	8fc200e8 	lw	v0,232(s8)
  418724:	00000000 	nop
  418728:	8c430198 	lw	v1,408(v0)
  41872c:	8fc20020 	lw	v0,32(s8)
  418730:	00000000 	nop
  418734:	8c420004 	lw	v0,4(v0)
  418738:	00000000 	nop
  41873c:	afa20010 	sw	v0,16(sp)
  418740:	24040003 	li	a0,3
  418744:	8f858020 	lw	a1,-32736(gp)
  418748:	00000000 	nop
  41874c:	24a55dec 	addiu	a1,a1,24044
  418750:	8fc200e8 	lw	v0,232(s8)
  418754:	00000000 	nop
  418758:	8c460000 	lw	a2,0(v0)
  41875c:	8c670004 	lw	a3,4(v1)
  418760:	8f998c48 	lw	t9,-29624(gp)
  418764:	00000000 	nop
  418768:	0320f809 	jalr	t9
  41876c:	00000000 	nop
  418770:	8fdc0018 	lw	gp,24(s8)
  418774:	00000000 	nop
				, c->name, c->interface->rname, p->rname);
			c->interface = NULL;	/* withdraw orientation */
  418778:	8fc200e8 	lw	v0,232(s8)
  41877c:	00000000 	nop
  418780:	ac400198 	sw	zero,408(v0)
			return FALSE;
  418784:	00001021 	move	v0,zero
  418788:	10000058 	b	4188ec <orient+0x354>
  41878c:	00000000 	nop
		    }
		    c->interface = p;
  418790:	8fc30020 	lw	v1,32(s8)
  418794:	8fc200e8 	lw	v0,232(s8)
  418798:	00000000 	nop
  41879c:	ac430198 	sw	v1,408(v0)
		}

		/* done with this interface if it doesn't match that end */
		if (!(sameaddr(&c->that.host_addr, &p->addr)
		&& (!no_klips || c->that.host_port == pluto_port)))
  4187a0:	8fc200e8 	lw	v0,232(s8)
  4187a4:	00000000 	nop
  4187a8:	24430108 	addiu	v1,v0,264
  4187ac:	8fc20020 	lw	v0,32(s8)
  4187b0:	00000000 	nop
  4187b4:	24420008 	addiu	v0,v0,8
  4187b8:	00602021 	move	a0,v1
  4187bc:	00402821 	move	a1,v0
  4187c0:	8f998928 	lw	t9,-30424(gp)
  4187c4:	00000000 	nop
  4187c8:	0320f809 	jalr	t9
  4187cc:	00000000 	nop
  4187d0:	8fdc0018 	lw	gp,24(s8)
  4187d4:	10400039 	beqz	v0,4188bc <orient+0x324>
  4187d8:	00000000 	nop
  4187dc:	8f8286ec 	lw	v0,-30996(gp)
  4187e0:	00000000 	nop
  4187e4:	8c420000 	lw	v0,0(v0)
  4187e8:	00000000 	nop
  4187ec:	1040000a 	beqz	v0,418818 <orient+0x280>
  4187f0:	00000000 	nop
  4187f4:	8fc200e8 	lw	v0,232(s8)
  4187f8:	00000000 	nop
  4187fc:	94430178 	lhu	v1,376(v0)
  418800:	8f8284b0 	lw	v0,-31568(gp)
  418804:	00000000 	nop
  418808:	94420000 	lhu	v0,0(v0)
  41880c:	00000000 	nop
  418810:	1462002a 	bne	v1,v0,4188bc <orient+0x324>
  418814:	00000000 	nop
		    break;

		/* swap ends and try again.
		 * It is a little tricky to see that this loop will stop.
		 * Only continue if the far side matches.
		 * If both sides match, there is an error-out.
		 */
		{
		    struct end t = c->this;
  418818:	8fc200e8 	lw	v0,232(s8)
  41881c:	00000000 	nop
  418820:	24420030 	addiu	v0,v0,48
  418824:	27c40028 	addiu	a0,s8,40
  418828:	00402821 	move	a1,v0
  41882c:	240600b0 	li	a2,176
  418830:	8f998a30 	lw	t9,-30160(gp)
  418834:	00000000 	nop
  418838:	0320f809 	jalr	t9
  41883c:	00000000 	nop
  418840:	8fdc0018 	lw	gp,24(s8)
  418844:	00000000 	nop

		    c->this = c->that;
  418848:	8fc200e8 	lw	v0,232(s8)
  41884c:	00000000 	nop
  418850:	24430030 	addiu	v1,v0,48
  418854:	8fc200e8 	lw	v0,232(s8)
  418858:	00000000 	nop
  41885c:	244200e0 	addiu	v0,v0,224
  418860:	00602021 	move	a0,v1
  418864:	00402821 	move	a1,v0
  418868:	240600b0 	li	a2,176
  41886c:	8f998a30 	lw	t9,-30160(gp)
  418870:	00000000 	nop
  418874:	0320f809 	jalr	t9
  418878:	00000000 	nop
  41887c:	8fdc0018 	lw	gp,24(s8)
  418880:	00000000 	nop
		    c->that = t;
  418884:	8fc200e8 	lw	v0,232(s8)
  418888:	00000000 	nop
  41888c:	244200e0 	addiu	v0,v0,224
  418890:	00402021 	move	a0,v0
  418894:	27c50028 	addiu	a1,s8,40
  418898:	240600b0 	li	a2,176
  41889c:	8f998a30 	lw	t9,-30160(gp)
  4188a0:	00000000 	nop
  4188a4:	0320f809 	jalr	t9
  4188a8:	00000000 	nop
  4188ac:	8fdc0018 	lw	gp,24(s8)
  4188b0:	00000000 	nop
  4188b4:	1000ff5c 	b	418628 <orient+0x90>
  4188b8:	00000000 	nop
  4188bc:	8fc20020 	lw	v0,32(s8)
  4188c0:	00000000 	nop
  4188c4:	8c420028 	lw	v0,40(v0)
  4188c8:	00000000 	nop
  4188cc:	afc20020 	sw	v0,32(s8)
  4188d0:	1000ff46 	b	4185ec <orient+0x54>
  4188d4:	00000000 	nop
		}
	    }
	}
    }
    return oriented(*c);
  4188d8:	8fc200e8 	lw	v0,232(s8)
  4188dc:	00000000 	nop
  4188e0:	8c420198 	lw	v0,408(v0)
  4188e4:	00000000 	nop
  4188e8:	0002102b 	sltu	v0,zero,v0
}
  4188ec:	03c0e821 	move	sp,s8
  4188f0:	8fbf00e0 	lw	ra,224(sp)
  4188f4:	8fbe00dc 	lw	s8,220(sp)
  4188f8:	27bd00e8 	addiu	sp,sp,232
  4188fc:	03e00008 	jr	ra
  418900:	00000000 	nop

00418904 <initiate_connection>:
  418904:	3c1c0fbf 	lui	gp,0xfbf
  418908:	279c406c 	addiu	gp,gp,16492
  41890c:	0399e021 	addu	gp,gp,t9
  418910:	27bdffc8 	addiu	sp,sp,-56
  418914:	afbc0018 	sw	gp,24(sp)
  418918:	afbf0030 	sw	ra,48(sp)
  41891c:	afbe002c 	sw	s8,44(sp)
  418920:	afbc0028 	sw	gp,40(sp)
  418924:	03a0f021 	move	s8,sp
  418928:	afc40038 	sw	a0,56(s8)
  41892c:	afc5003c 	sw	a1,60(s8)

void
initiate_connection(const char *name, int whackfd)
{
    struct connection *c = con_by_name(name, TRUE);
  418930:	8fc40038 	lw	a0,56(s8)
  418934:	24050001 	li	a1,1
  418938:	8f998be8 	lw	t9,-29720(gp)
  41893c:	00000000 	nop
  418940:	0320f809 	jalr	t9
  418944:	00000000 	nop
  418948:	8fdc0018 	lw	gp,24(s8)
  41894c:	afc20020 	sw	v0,32(s8)

    if (c != NULL)
  418950:	8fc20020 	lw	v0,32(s8)
  418954:	00000000 	nop
  418958:	1040004c 	beqz	v0,418a8c <initiate_connection+0x188>
  41895c:	00000000 	nop
    {
	set_cur_connection(c);
  418960:	8fc20020 	lw	v0,32(s8)
  418964:	8f8188c8 	lw	at,-30520(gp)
  418968:	00000000 	nop
  41896c:	ac220000 	sw	v0,0(at)
  418970:	8fc40020 	lw	a0,32(s8)
  418974:	8f998be4 	lw	t9,-29724(gp)
  418978:	00000000 	nop
  41897c:	0320f809 	jalr	t9
  418980:	00000000 	nop
  418984:	8fdc0018 	lw	gp,24(s8)
  418988:	00000000 	nop
	if (!oriented(*c))
  41898c:	8fc20020 	lw	v0,32(s8)
  418990:	00000000 	nop
  418994:	8c420198 	lw	v0,408(v0)
  418998:	00000000 	nop
  41899c:	1440000c 	bnez	v0,4189d0 <initiate_connection+0xcc>
  4189a0:	00000000 	nop
	{
	    loglog(RC_ORIENT, "we have no ipsecN interface for either end of this connection");
  4189a4:	24040016 	li	a0,22
  4189a8:	8f858020 	lw	a1,-32736(gp)
  4189ac:	00000000 	nop
  4189b0:	24a55e10 	addiu	a1,a1,24080
  4189b4:	8f998c48 	lw	t9,-29624(gp)
  4189b8:	00000000 	nop
  4189bc:	0320f809 	jalr	t9
  4189c0:	00000000 	nop
  4189c4:	8fdc0018 	lw	gp,24(s8)
  4189c8:	10000027 	b	418a68 <initiate_connection+0x164>
  4189cc:	00000000 	nop
	}
	else if (c->kind != CK_PERMANENT)
  4189d0:	8fc20020 	lw	v0,32(s8)
  4189d4:	00000000 	nop
  4189d8:	8c430194 	lw	v1,404(v0)
  4189dc:	24020001 	li	v0,1
  4189e0:	1062000c 	beq	v1,v0,418a14 <initiate_connection+0x110>
  4189e4:	00000000 	nop
	{
	    loglog(RC_NOPEERIP, "cannot initiate connection without knowing peer IP address");
  4189e8:	2404001d 	li	a0,29
  4189ec:	8f858020 	lw	a1,-32736(gp)
  4189f0:	00000000 	nop
  4189f4:	24a55e50 	addiu	a1,a1,24144
  4189f8:	8f998c48 	lw	t9,-29624(gp)
  4189fc:	00000000 	nop
  418a00:	0320f809 	jalr	t9
  418a04:	00000000 	nop
  418a08:	8fdc0018 	lw	gp,24(s8)
  418a0c:	10000016 	b	418a68 <initiate_connection+0x164>
  418a10:	00000000 	nop
	}
	else
	{
	    /* We will only request an IPsec SA if policy isn't empty
	     * (ignoring Main Mode items).
	     * This is a fudge, but not yet important.
	     * If we are to proceed asynchronously, whackfd will be NULL_FD.
	     */
	    c->initiated = TRUE;
  418a14:	24030001 	li	v1,1
  418a18:	8fc20020 	lw	v0,32(s8)
  418a1c:	00000000 	nop
  418a20:	ac4301a0 	sw	v1,416(v0)
	    ipsecdoi_initiate(whackfd, c, c->policy, 1, SOS_NOBODY);
  418a24:	24020001 	li	v0,1
  418a28:	afa20010 	sw	v0,16(sp)
  418a2c:	afa00014 	sw	zero,20(sp)
  418a30:	8fc4003c 	lw	a0,60(s8)
  418a34:	8fc50020 	lw	a1,32(s8)
  418a38:	8fc20020 	lw	v0,32(s8)
  418a3c:	00000000 	nop
  418a40:	8c460008 	lw	a2,8(v0)
  418a44:	8c47000c 	lw	a3,12(v0)
  418a48:	8f99815c 	lw	t9,-32420(gp)
  418a4c:	00000000 	nop
  418a50:	0320f809 	jalr	t9
  418a54:	00000000 	nop
  418a58:	8fdc0018 	lw	gp,24(s8)
  418a5c:	00000000 	nop
	    whackfd = NULL_FD;	/* protect from close */
  418a60:	2402ffff 	li	v0,-1
  418a64:	afc2003c 	sw	v0,60(s8)
	}
	reset_cur_connection();
  418a68:	8f8188c8 	lw	at,-30520(gp)
  418a6c:	00000000 	nop
  418a70:	ac200000 	sw	zero,0(at)
  418a74:	8f82830c 	lw	v0,-31988(gp)
  418a78:	00000000 	nop
  418a7c:	8c420000 	lw	v0,0(v0)
  418a80:	8f8184f8 	lw	at,-31496(gp)
  418a84:	00000000 	nop
  418a88:	ac220000 	sw	v0,0(at)
    }
    close_any(whackfd);
  418a8c:	8fc3003c 	lw	v1,60(s8)
  418a90:	2402ffff 	li	v0,-1
  418a94:	10620009 	beq	v1,v0,418abc <initiate_connection+0x1b8>
  418a98:	00000000 	nop
  418a9c:	8fc4003c 	lw	a0,60(s8)
  418aa0:	8f9980c8 	lw	t9,-32568(gp)
  418aa4:	00000000 	nop
  418aa8:	0320f809 	jalr	t9
  418aac:	00000000 	nop
  418ab0:	8fdc0018 	lw	gp,24(s8)
  418ab4:	2402ffff 	li	v0,-1
  418ab8:	afc2003c 	sw	v0,60(s8)
}
  418abc:	03c0e821 	move	sp,s8
  418ac0:	8fbf0030 	lw	ra,48(sp)
  418ac4:	8fbe002c 	lw	s8,44(sp)
  418ac8:	27bd0038 	addiu	sp,sp,56
  418acc:	03e00008 	jr	ra
  418ad0:	00000000 	nop

00418ad4 <cannot_oppo>:
  418ad4:	3c1c0fbf 	lui	gp,0xfbf
  418ad8:	279c3e9c 	addiu	gp,gp,16028
  418adc:	0399e021 	addu	gp,gp,t9
  418ae0:	27bdff30 	addiu	sp,sp,-208
  418ae4:	afbc0018 	sw	gp,24(sp)
  418ae8:	afbf00c8 	sw	ra,200(sp)
  418aec:	afbe00c4 	sw	s8,196(sp)
  418af0:	afbc00c0 	sw	gp,192(sp)
  418af4:	03a0f021 	move	s8,sp
  418af8:	afc400d0 	sw	a0,208(s8)
  418afc:	afc500d4 	sw	a1,212(s8)
  418b00:	afc600d8 	sw	a2,216(s8)
  418b04:	afc700dc 	sw	a3,220(s8)

/* (Possibly) Opportunistic Initiation:
 * Knowing clients (single IP addresses), try to build an tunnel.
 * This may involve discovering a gateway and instantiating an
 * Opportunistic connection.  Called when a packet is caught by
 * a %trap, or when whack --oppohere --oppothere is used.
 * It may turn out that an existing or non-opporunistic connnection
 * can handle the traffic.
 *
 * Most of the code will be restarted if an ADNS request is made
 * to discover the gateway.  The only difference between the first
 * and second entry is whether gateways_from_dns is NULL or not.
 *	initiate_opportunistic: initial entrypoint
 *	continue_oppo: where we pickup when ADNS result arrives
 *	initiate_opportunistic_body: main body shared by above routines
 *	cannot_oppo: a helper function to log a diagnostic
 * This structure repeats a lot of code when the ADNS result arrives.
 * This seems like a waste, but anything learned the first time through
 * may no longer be true!
 *
 * After the first IKE message is sent, the regular state machinery
 * carries negotiation forward.
 */

struct oppo_continuation {
    struct adns_continuation ac;	/* common prefix */
    ip_address our_client;	/* not pointer! */
    ip_address peer_client;
    int transport_proto;
    bool held;
    int whackfd;
};

static void
cannot_oppo(const ip_address *our_client
, const ip_address *peer_client
, int transport_proto
, bool held USED_BY_KLIPS
, err_t ugh)
{
    char pcb[ADDRTOT_BUF];
    char ocb[ADDRTOT_BUF];

    addrtot(peer_client, 0, pcb, sizeof(pcb));
  418b08:	8fc400d4 	lw	a0,212(s8)
  418b0c:	00002821 	move	a1,zero
  418b10:	27c60020 	addiu	a2,s8,32
  418b14:	24070049 	li	a3,73
  418b18:	8f998b50 	lw	t9,-29872(gp)
  418b1c:	00000000 	nop
  418b20:	0320f809 	jalr	t9
  418b24:	00000000 	nop
  418b28:	8fdc0018 	lw	gp,24(s8)
  418b2c:	00000000 	nop
    addrtot(our_client, 0, ocb, sizeof(ocb));
  418b30:	8fc400d0 	lw	a0,208(s8)
  418b34:	00002821 	move	a1,zero
  418b38:	27c60070 	addiu	a2,s8,112
  418b3c:	24070049 	li	a3,73
  418b40:	8f998b50 	lw	t9,-29872(gp)
  418b44:	00000000 	nop
  418b48:	0320f809 	jalr	t9
  418b4c:	00000000 	nop
  418b50:	8fdc0018 	lw	gp,24(s8)
  418b54:	00000000 	nop

    loglog(RC_OPPOFAILURE
  418b58:	8fc200e0 	lw	v0,224(s8)
  418b5c:	00000000 	nop
  418b60:	afa20010 	sw	v0,16(sp)
  418b64:	24040021 	li	a0,33
  418b68:	8f858020 	lw	a1,-32736(gp)
  418b6c:	00000000 	nop
  418b70:	24a55e8c 	addiu	a1,a1,24204
  418b74:	27c60070 	addiu	a2,s8,112
  418b78:	27c70020 	addiu	a3,s8,32
  418b7c:	8f998c48 	lw	t9,-29624(gp)
  418b80:	00000000 	nop
  418b84:	0320f809 	jalr	t9
  418b88:	00000000 	nop
  418b8c:	8fdc0018 	lw	gp,24(s8)
  418b90:	00000000 	nop
	, "Can't Opportunistically initiate for %s to %s: %s"
	, ocb, pcb, ugh);

#ifdef KLIPS
    if (held)
  418b94:	8fc200dc 	lw	v0,220(s8)
  418b98:	00000000 	nop
  418b9c:	10400013 	beqz	v0,418bec <cannot_oppo+0x118>
  418ba0:	00000000 	nop
    {
	/* Replace HOLD with PASS.
	 * The type of replacement *ought* to be
	 * specified by policy.
	 */
	(void) replace_bare_shunt(our_client, peer_client
  418ba4:	8fc200d8 	lw	v0,216(s8)
  418ba8:	00000000 	nop
  418bac:	afa20010 	sw	v0,16(sp)
  418bb0:	8f828020 	lw	v0,-32736(gp)
  418bb4:	00000000 	nop
  418bb8:	24425ec0 	addiu	v0,v0,24256
  418bbc:	00000000 	nop
  418bc0:	afa20014 	sw	v0,20(sp)
  418bc4:	8fc400d0 	lw	a0,208(s8)
  418bc8:	8fc500d4 	lw	a1,212(s8)
  418bcc:	24060100 	li	a2,256
  418bd0:	24070001 	li	a3,1
  418bd4:	8f998718 	lw	t9,-30952(gp)
  418bd8:	00000000 	nop
  418bdc:	0320f809 	jalr	t9
  418be0:	00000000 	nop
  418be4:	8fdc0018 	lw	gp,24(s8)
  418be8:	00000000 	nop
	    , SPI_PASS	/* fail into PASS */
	    , TRUE, transport_proto, "replace HOLD with PASS [no SG discovered]");
    }
#endif
}
  418bec:	03c0e821 	move	sp,s8
  418bf0:	8fbf00c8 	lw	ra,200(sp)
  418bf4:	8fbe00c4 	lw	s8,196(sp)
  418bf8:	27bd00d0 	addiu	sp,sp,208
  418bfc:	03e00008 	jr	ra
  418c00:	00000000 	nop

00418c04 <initiate_opportunistic>:
  418c04:	3c1c0fbf 	lui	gp,0xfbf
  418c08:	279c3d6c 	addiu	gp,gp,15724
  418c0c:	0399e021 	addu	gp,gp,t9
  418c10:	27bdffd0 	addiu	sp,sp,-48
  418c14:	afbc0018 	sw	gp,24(sp)
  418c18:	afbf0028 	sw	ra,40(sp)
  418c1c:	afbe0024 	sw	s8,36(sp)
  418c20:	afbc0020 	sw	gp,32(sp)
  418c24:	03a0f021 	move	s8,sp
  418c28:	afc40030 	sw	a0,48(s8)
  418c2c:	afc50034 	sw	a1,52(s8)
  418c30:	afc60038 	sw	a2,56(s8)
  418c34:	afc7003c 	sw	a3,60(s8)

static void initiate_opportunistic_body(const ip_address *our_client
    , const ip_address *peer_client, int transport_proto
    , bool held, int whackfd);	/* forward */

void
initiate_opportunistic(const ip_address *our_client
, const ip_address *peer_client
, int transport_proto
, bool held
, int whackfd)
{
    passert(gateways_from_dns == NULL);
  418c38:	8f828204 	lw	v0,-32252(gp)
  418c3c:	00000000 	nop
  418c40:	8c420000 	lw	v0,0(v0)
  418c44:	00000000 	nop
  418c48:	1040000e 	beqz	v0,418c84 <initiate_opportunistic+0x80>
  418c4c:	00000000 	nop
  418c50:	8f848020 	lw	a0,-32736(gp)
  418c54:	00000000 	nop
  418c58:	24845eec 	addiu	a0,a0,24300
  418c5c:	8f858020 	lw	a1,-32736(gp)
  418c60:	00000000 	nop
  418c64:	24a554a4 	addiu	a1,a1,21668
  418c68:	240605ef 	li	a2,1519
  418c6c:	8f998bb8 	lw	t9,-29768(gp)
  418c70:	00000000 	nop
  418c74:	0320f809 	jalr	t9
  418c78:	00000000 	nop
  418c7c:	8fdc0018 	lw	gp,24(s8)
  418c80:	00000000 	nop
    initiate_opportunistic_body(our_client, peer_client, transport_proto
  418c84:	8fc20040 	lw	v0,64(s8)
  418c88:	00000000 	nop
  418c8c:	afa20010 	sw	v0,16(sp)
  418c90:	8fc40030 	lw	a0,48(s8)
  418c94:	8fc50034 	lw	a1,52(s8)
  418c98:	8fc60038 	lw	a2,56(s8)
  418c9c:	8fc7003c 	lw	a3,60(s8)
  418ca0:	8f998028 	lw	t9,-32728(gp)
  418ca4:	00000000 	nop
  418ca8:	27398f9c 	addiu	t9,t9,-28772
  418cac:	00000000 	nop
  418cb0:	0320f809 	jalr	t9
  418cb4:	00000000 	nop
  418cb8:	8fdc0018 	lw	gp,24(s8)
  418cbc:	00000000 	nop
	, held, whackfd);
}
  418cc0:	03c0e821 	move	sp,s8
  418cc4:	8fbf0028 	lw	ra,40(sp)
  418cc8:	8fbe0024 	lw	s8,36(sp)
  418ccc:	27bd0030 	addiu	sp,sp,48
  418cd0:	03e00008 	jr	ra
  418cd4:	00000000 	nop

00418cd8 <continue_oppo>:
  418cd8:	3c1c0fbf 	lui	gp,0xfbf
  418cdc:	279c3c98 	addiu	gp,gp,15512
  418ce0:	0399e021 	addu	gp,gp,t9
  418ce4:	27bdff18 	addiu	sp,sp,-232
  418ce8:	afbc0018 	sw	gp,24(sp)
  418cec:	afbf00e0 	sw	ra,224(sp)
  418cf0:	afbe00dc 	sw	s8,220(sp)
  418cf4:	afbc00d8 	sw	gp,216(sp)
  418cf8:	03a0f021 	move	s8,sp
  418cfc:	afc400e8 	sw	a0,232(s8)
  418d00:	afc500ec 	sw	a1,236(s8)

static void
continue_oppo(struct adns_continuation *acr, err_t ugh)
{
    struct oppo_continuation *cr = (void *)acr;	/* inherit, damn you! */
  418d04:	8fc200e8 	lw	v0,232(s8)
  418d08:	00000000 	nop
  418d0c:	afc20020 	sw	v0,32(s8)
    const ip_address *our_client = &cr->our_client
  418d10:	8fc20020 	lw	v0,32(s8)
  418d14:	00000000 	nop
  418d18:	24420480 	addiu	v0,v0,1152
  418d1c:	afc20024 	sw	v0,36(s8)
	, *peer_client = &cr->peer_client;
  418d20:	8fc20020 	lw	v0,32(s8)
  418d24:	00000000 	nop
  418d28:	2442049c 	addiu	v0,v0,1180
  418d2c:	afc20028 	sw	v0,40(s8)
    bool was_held = cr->held
  418d30:	8fc20020 	lw	v0,32(s8)
  418d34:	00000000 	nop
  418d38:	8c4204bc 	lw	v0,1212(v0)
  418d3c:	00000000 	nop
  418d40:	afc2002c 	sw	v0,44(s8)
	, is_held =
  418d44:	8fc40024 	lw	a0,36(s8)
  418d48:	8fc50028 	lw	a1,40(s8)
  418d4c:	8fc20020 	lw	v0,32(s8)
  418d50:	00000000 	nop
  418d54:	8c4604b8 	lw	a2,1208(v0)
  418d58:	8f998178 	lw	t9,-32392(gp)
  418d5c:	00000000 	nop
  418d60:	0320f809 	jalr	t9
  418d64:	00000000 	nop
  418d68:	8fdc0018 	lw	gp,24(s8)
  418d6c:	afc20030 	sw	v0,48(s8)
#ifdef KLIPS
	    has_bare_hold(our_client, peer_client, cr->transport_proto);
#else
	    bool is_held =  was_held;
#endif
    int whackfd = cr->whackfd;
  418d70:	8fc20020 	lw	v0,32(s8)
  418d74:	00000000 	nop
  418d78:	8c4204c0 	lw	v0,1216(v0)
  418d7c:	00000000 	nop
  418d80:	afc20034 	sw	v0,52(s8)

    /* note: cr->id has no resources; cr->sgw_id is id_none:
     * neither need freeing.
     */
    whack_log_fd = whackfd;
  418d84:	8fc20034 	lw	v0,52(s8)
  418d88:	8f818994 	lw	at,-30316(gp)
  418d8c:	00000000 	nop
  418d90:	ac220000 	sw	v0,0(at)

    if (ugh != NULL)
  418d94:	8fc200ec 	lw	v0,236(s8)
  418d98:	00000000 	nop
  418d9c:	10400013 	beqz	v0,418dec <continue_oppo+0x114>
  418da0:	00000000 	nop
    {
	cannot_oppo(our_client, peer_client, cr->transport_proto, is_held, ugh);
  418da4:	8fc200ec 	lw	v0,236(s8)
  418da8:	00000000 	nop
  418dac:	afa20010 	sw	v0,16(sp)
  418db0:	8fc40024 	lw	a0,36(s8)
  418db4:	8fc50028 	lw	a1,40(s8)
  418db8:	8fc20020 	lw	v0,32(s8)
  418dbc:	00000000 	nop
  418dc0:	8c4604b8 	lw	a2,1208(v0)
  418dc4:	8fc70030 	lw	a3,48(s8)
  418dc8:	8f998028 	lw	t9,-32728(gp)
  418dcc:	00000000 	nop
  418dd0:	27398ad4 	addiu	t9,t9,-29996
  418dd4:	00000000 	nop
  418dd8:	0320f809 	jalr	t9
  418ddc:	00000000 	nop
  418de0:	8fdc0018 	lw	gp,24(s8)
  418de4:	10000050 	b	418f28 <continue_oppo+0x250>
  418de8:	00000000 	nop
    }
    else if (was_held && !is_held)
  418dec:	8fc2002c 	lw	v0,44(s8)
  418df0:	00000000 	nop
  418df4:	10400026 	beqz	v0,418e90 <continue_oppo+0x1b8>
  418df8:	00000000 	nop
  418dfc:	8fc20030 	lw	v0,48(s8)
  418e00:	00000000 	nop
  418e04:	14400022 	bnez	v0,418e90 <continue_oppo+0x1b8>
  418e08:	00000000 	nop
    {
	/* was_held indicates we were started due to a %trap firing
	 * (as opposed to a "whack --oppohere --oppothere").
	 * Since the %hold has gone, we can assume that somebody else
	 * has beaten us to the punch.  We can go home.  But lets log it.
	 */
	char pcb[ADDRTOT_BUF];
	char ocb[ADDRTOT_BUF];

	addrtot(peer_client, 0, pcb, sizeof(pcb));
  418e0c:	8fc40028 	lw	a0,40(s8)
  418e10:	00002821 	move	a1,zero
  418e14:	27c60038 	addiu	a2,s8,56
  418e18:	24070049 	li	a3,73
  418e1c:	8f998b50 	lw	t9,-29872(gp)
  418e20:	00000000 	nop
  418e24:	0320f809 	jalr	t9
  418e28:	00000000 	nop
  418e2c:	8fdc0018 	lw	gp,24(s8)
  418e30:	00000000 	nop
	addrtot(our_client, 0, ocb, sizeof(ocb));
  418e34:	8fc40024 	lw	a0,36(s8)
  418e38:	00002821 	move	a1,zero
  418e3c:	27c60088 	addiu	a2,s8,136
  418e40:	24070049 	li	a3,73
  418e44:	8f998b50 	lw	t9,-29872(gp)
  418e48:	00000000 	nop
  418e4c:	0320f809 	jalr	t9
  418e50:	00000000 	nop
  418e54:	8fdc0018 	lw	gp,24(s8)
  418e58:	00000000 	nop

	loglog(RC_COMMENT
  418e5c:	00002021 	move	a0,zero
  418e60:	8f858020 	lw	a1,-32736(gp)
  418e64:	00000000 	nop
  418e68:	24a55f08 	addiu	a1,a1,24328
  418e6c:	27c60088 	addiu	a2,s8,136
  418e70:	27c70038 	addiu	a3,s8,56
  418e74:	8f998c48 	lw	t9,-29624(gp)
  418e78:	00000000 	nop
  418e7c:	0320f809 	jalr	t9
  418e80:	00000000 	nop
  418e84:	8fdc0018 	lw	gp,24(s8)
  418e88:	10000027 	b	418f28 <continue_oppo+0x250>
  418e8c:	00000000 	nop
	    , "%%hold otherwise handled during DNS lookup for Opportunistic Initiation for %s to %s"
	    , ocb, pcb);
    }
    else
    {
	passert(gateways_from_dns != NULL);
  418e90:	8f828204 	lw	v0,-32252(gp)
  418e94:	00000000 	nop
  418e98:	8c420000 	lw	v0,0(v0)
  418e9c:	00000000 	nop
  418ea0:	1440000e 	bnez	v0,418edc <continue_oppo+0x204>
  418ea4:	00000000 	nop
  418ea8:	8f848020 	lw	a0,-32736(gp)
  418eac:	00000000 	nop
  418eb0:	24845f60 	addiu	a0,a0,24416
  418eb4:	8f858020 	lw	a1,-32736(gp)
  418eb8:	00000000 	nop
  418ebc:	24a554a4 	addiu	a1,a1,21668
  418ec0:	2406061f 	li	a2,1567
  418ec4:	8f998bb8 	lw	t9,-29768(gp)
  418ec8:	00000000 	nop
  418ecc:	0320f809 	jalr	t9
  418ed0:	00000000 	nop
  418ed4:	8fdc0018 	lw	gp,24(s8)
  418ed8:	00000000 	nop
	initiate_opportunistic_body(our_client, peer_client, cr->transport_proto, is_held, whackfd);
  418edc:	8fc20034 	lw	v0,52(s8)
  418ee0:	00000000 	nop
  418ee4:	afa20010 	sw	v0,16(sp)
  418ee8:	8fc40024 	lw	a0,36(s8)
  418eec:	8fc50028 	lw	a1,40(s8)
  418ef0:	8fc20020 	lw	v0,32(s8)
  418ef4:	00000000 	nop
  418ef8:	8c4604b8 	lw	a2,1208(v0)
  418efc:	8fc70030 	lw	a3,48(s8)
  418f00:	8f998028 	lw	t9,-32728(gp)
  418f04:	00000000 	nop
  418f08:	27398f9c 	addiu	t9,t9,-28772
  418f0c:	00000000 	nop
  418f10:	0320f809 	jalr	t9
  418f14:	00000000 	nop
  418f18:	8fdc0018 	lw	gp,24(s8)
  418f1c:	00000000 	nop
	whackfd = NULL_FD;	/* was handed off */
  418f20:	2402ffff 	li	v0,-1
  418f24:	afc20034 	sw	v0,52(s8)
    }

    gw_delref(&gateways_from_dns);
  418f28:	8f848204 	lw	a0,-32252(gp)
  418f2c:	8f9983d8 	lw	t9,-31784(gp)
  418f30:	00000000 	nop
  418f34:	0320f809 	jalr	t9
  418f38:	00000000 	nop
  418f3c:	8fdc0018 	lw	gp,24(s8)
  418f40:	00000000 	nop
    whack_log_fd = NULL_FD;
  418f44:	2402ffff 	li	v0,-1
  418f48:	8f818994 	lw	at,-30316(gp)
  418f4c:	00000000 	nop
  418f50:	ac220000 	sw	v0,0(at)
    close_any(whackfd);
  418f54:	8fc30034 	lw	v1,52(s8)
  418f58:	00000000 	nop
  418f5c:	10620009 	beq	v1,v0,418f84 <continue_oppo+0x2ac>
  418f60:	00000000 	nop
  418f64:	8fc40034 	lw	a0,52(s8)
  418f68:	8f9980c8 	lw	t9,-32568(gp)
  418f6c:	00000000 	nop
  418f70:	0320f809 	jalr	t9
  418f74:	00000000 	nop
  418f78:	8fdc0018 	lw	gp,24(s8)
  418f7c:	2402ffff 	li	v0,-1
  418f80:	afc20034 	sw	v0,52(s8)
}
  418f84:	03c0e821 	move	sp,s8
  418f88:	8fbf00e0 	lw	ra,224(sp)
  418f8c:	8fbe00dc 	lw	s8,220(sp)
  418f90:	27bd00e8 	addiu	sp,sp,232
  418f94:	03e00008 	jr	ra
  418f98:	00000000 	nop

00418f9c <initiate_opportunistic_body>:
  418f9c:	3c1c0fbf 	lui	gp,0xfbf
  418fa0:	279c39d4 	addiu	gp,gp,14804
  418fa4:	0399e021 	addu	gp,gp,t9
  418fa8:	27bdfe70 	addiu	sp,sp,-400
  418fac:	afbc0018 	sw	gp,24(sp)
  418fb0:	afbf018c 	sw	ra,396(sp)
  418fb4:	afbe0188 	sw	s8,392(sp)
  418fb8:	afbc0184 	sw	gp,388(sp)
  418fbc:	afb00180 	sw	s0,384(sp)
  418fc0:	03a0f021 	move	s8,sp
  418fc4:	afc40190 	sw	a0,400(s8)
  418fc8:	afc50194 	sw	a1,404(s8)
  418fcc:	afc60198 	sw	a2,408(s8)
  418fd0:	afc7019c 	sw	a3,412(s8)

static void
initiate_opportunistic_body(const ip_address *our_client
, const ip_address *peer_client
, int transport_proto
, bool held
, int whackfd)
{
    struct connection *c;

    /* What connection shall we use?
     * First try for one that explicitly handles the clients.
     */
    DBG(DBG_CONTROL,
  418fd4:	8f8284f8 	lw	v0,-31496(gp)
  418fd8:	00000000 	nop
  418fdc:	8c420000 	lw	v0,0(v0)
  418fe0:	00000000 	nop
  418fe4:	30420010 	andi	v0,v0,0x10
  418fe8:	10400033 	beqz	v0,4190b8 <initiate_opportunistic_body+0x11c>
  418fec:	00000000 	nop
  418ff0:	8fc40190 	lw	a0,400(s8)
  418ff4:	00002821 	move	a1,zero
  418ff8:	27c60028 	addiu	a2,s8,40
  418ffc:	24070049 	li	a3,73
  419000:	8f998b50 	lw	t9,-29872(gp)
  419004:	00000000 	nop
  419008:	0320f809 	jalr	t9
  41900c:	00000000 	nop
  419010:	8fdc0018 	lw	gp,24(s8)
  419014:	8fc40190 	lw	a0,400(s8)
  419018:	8f998a60 	lw	t9,-30112(gp)
  41901c:	00000000 	nop
  419020:	0320f809 	jalr	t9
  419024:	00000000 	nop
  419028:	8fdc0018 	lw	gp,24(s8)
  41902c:	afc200c8 	sw	v0,200(s8)
  419030:	8fc40194 	lw	a0,404(s8)
  419034:	00002821 	move	a1,zero
  419038:	27c60078 	addiu	a2,s8,120
  41903c:	24070049 	li	a3,73
  419040:	8f998b50 	lw	t9,-29872(gp)
  419044:	00000000 	nop
  419048:	0320f809 	jalr	t9
  41904c:	00000000 	nop
  419050:	8fdc0018 	lw	gp,24(s8)
  419054:	8fc40194 	lw	a0,404(s8)
  419058:	8f998a60 	lw	t9,-30112(gp)
  41905c:	00000000 	nop
  419060:	0320f809 	jalr	t9
  419064:	00000000 	nop
  419068:	8fdc0018 	lw	gp,24(s8)
  41906c:	afc200cc 	sw	v0,204(s8)
  419070:	8fc200cc 	lw	v0,204(s8)
  419074:	00000000 	nop
  419078:	afa20010 	sw	v0,16(sp)
  41907c:	8fc20198 	lw	v0,408(s8)
  419080:	00000000 	nop
  419084:	afa20014 	sw	v0,20(sp)
  419088:	8f848020 	lw	a0,-32736(gp)
  41908c:	00000000 	nop
  419090:	24845f7c 	addiu	a0,a0,24444
  419094:	27c50028 	addiu	a1,s8,40
  419098:	8fc600c8 	lw	a2,200(s8)
  41909c:	27c70078 	addiu	a3,s8,120
  4190a0:	8f9983b8 	lw	t9,-31816(gp)
  4190a4:	00000000 	nop
  4190a8:	0320f809 	jalr	t9
  4190ac:	00000000 	nop
  4190b0:	8fdc0018 	lw	gp,24(s8)
  4190b4:	00000000 	nop
	{
	    char ours[ADDRTOT_BUF];
	    char his[ADDRTOT_BUF];
	    int ourport;
	    int hisport;

	    addrtot(our_client, 0, ours, sizeof(ours));
	    ourport = ntohs(portof(our_client));
	    addrtot(peer_client, 0, his, sizeof(his));
	    hisport = ntohs(portof(peer_client));
	    DBG_log("initiate on demand from %s:%d to %s:%d proto=%d"
		, ours, ourport, his, hisport, transport_proto);
	})

    c = find_connection_for_clients(our_client, peer_client, transport_proto);
  4190b8:	8fc40190 	lw	a0,400(s8)
  4190bc:	8fc50194 	lw	a1,404(s8)
  4190c0:	8fc60198 	lw	a2,408(s8)
  4190c4:	8f998024 	lw	t9,-32732(gp)
  4190c8:	00000000 	nop
  4190cc:	27397c90 	addiu	t9,t9,31888
  4190d0:	00000000 	nop
  4190d4:	0320f809 	jalr	t9
  4190d8:	00000000 	nop
  4190dc:	8fdc0018 	lw	gp,24(s8)
  4190e0:	afc20020 	sw	v0,32(s8)
    if (c != NULL)
  4190e4:	8fc20020 	lw	v0,32(s8)
  4190e8:	00000000 	nop
  4190ec:	1040003b 	beqz	v0,4191dc <initiate_opportunistic_body+0x240>
  4190f0:	00000000 	nop
    {
	/* We've found a connection that can serve.
	 * Do we have to initiate it?
	 * Not if there is currently an IPSEC SA.
	 * But if there is an IPSEC SA, then KLIPS would not
	 * have generated the acquire.  So we assume that there isn't one.
	 * This may be redundant if a non-opportunistic
	 * negotiation is already being attempted.
	 */

	/* We will only request an IPsec SA if policy isn't empty
	 * (ignoring Main Mode items).
	 * This is a fudge, but not yet important.
	 * If we are to proceed asynchronously, whackfd will be NULL_FD.
	 */

	passert(HAS_IPSEC_POLICY(c->policy));
  4190f4:	8fc20020 	lw	v0,32(s8)
  4190f8:	00000000 	nop
  4190fc:	8c440008 	lw	a0,8(v0)
  419100:	8c45000c 	lw	a1,12(v0)
  419104:	24020000 	li	v0,0
  419108:	240300fc 	li	v1,252
  41910c:	00822024 	and	a0,a0,v0
  419110:	00a32824 	and	a1,a1,v1
  419114:	00801021 	move	v0,a0
  419118:	00451025 	or	v0,v0,a1
  41911c:	1440000e 	bnez	v0,419158 <initiate_opportunistic_body+0x1bc>
  419120:	00000000 	nop
  419124:	8f848020 	lw	a0,-32736(gp)
  419128:	00000000 	nop
  41912c:	24845fac 	addiu	a0,a0,24492
  419130:	8f858020 	lw	a1,-32736(gp)
  419134:	00000000 	nop
  419138:	24a554a4 	addiu	a1,a1,21668
  41913c:	24060656 	li	a2,1622
  419140:	8f998bb8 	lw	t9,-29768(gp)
  419144:	00000000 	nop
  419148:	0320f809 	jalr	t9
  41914c:	00000000 	nop
  419150:	8fdc0018 	lw	gp,24(s8)
  419154:	00000000 	nop

#ifdef KLIPS
	if (held)
  419158:	8fc2019c 	lw	v0,412(s8)
  41915c:	00000000 	nop
  419160:	1040000b 	beqz	v0,419190 <initiate_opportunistic_body+0x1f4>
  419164:	00000000 	nop
	{
	    /* what should we do on failure? */
	    (void) assign_hold(c, transport_proto, our_client, peer_client);
  419168:	8fc40020 	lw	a0,32(s8)
  41916c:	8fc50198 	lw	a1,408(s8)
  419170:	8fc60190 	lw	a2,400(s8)
  419174:	8fc70194 	lw	a3,404(s8)
  419178:	8f9987e4 	lw	t9,-30748(gp)
  41917c:	00000000 	nop
  419180:	0320f809 	jalr	t9
  419184:	00000000 	nop
  419188:	8fdc0018 	lw	gp,24(s8)
  41918c:	00000000 	nop
	}
#endif
	ipsecdoi_initiate(whackfd, c, c->policy, 1, SOS_NOBODY);
  419190:	24020001 	li	v0,1
  419194:	afa20010 	sw	v0,16(sp)
  419198:	afa00014 	sw	zero,20(sp)
  41919c:	8fc401a0 	lw	a0,416(s8)
  4191a0:	8fc50020 	lw	a1,32(s8)
  4191a4:	8fc20020 	lw	v0,32(s8)
  4191a8:	00000000 	nop
  4191ac:	8c460008 	lw	a2,8(v0)
  4191b0:	8c47000c 	lw	a3,12(v0)
  4191b4:	8f99815c 	lw	t9,-32420(gp)
  4191b8:	00000000 	nop
  4191bc:	0320f809 	jalr	t9
  4191c0:	00000000 	nop
  4191c4:	8fdc0018 	lw	gp,24(s8)
  4191c8:	00000000 	nop
	whackfd = NULL_FD;	/* protect from close */
  4191cc:	2402ffff 	li	v0,-1
  4191d0:	afc201a0 	sw	v0,416(s8)
  4191d4:	10000172 	b	4197a0 <initiate_opportunistic_body+0x804>
  4191d8:	00000000 	nop
    }
    else if (oppo_templates == 0)
  4191dc:	8f828018 	lw	v0,-32744(gp)
  4191e0:	00000000 	nop
  4191e4:	244206fc 	addiu	v0,v0,1788
  4191e8:	8c420000 	lw	v0,0(v0)
  4191ec:	00000000 	nop
  4191f0:	14400013 	bnez	v0,419240 <initiate_opportunistic_body+0x2a4>
  4191f4:	00000000 	nop
    {
	/* No connection explicitly handles the clients and there
	 * are no Opportunistic connections -- whine and give up.
	 */
	cannot_oppo(our_client, peer_client, transport_proto, held
  4191f8:	8f828020 	lw	v0,-32736(gp)
  4191fc:	00000000 	nop
  419200:	24425fc8 	addiu	v0,v0,24520
  419204:	00000000 	nop
  419208:	afa20010 	sw	v0,16(sp)
  41920c:	8fc40190 	lw	a0,400(s8)
  419210:	8fc50194 	lw	a1,404(s8)
  419214:	8fc60198 	lw	a2,408(s8)
  419218:	8fc7019c 	lw	a3,412(s8)
  41921c:	8f998028 	lw	t9,-32728(gp)
  419220:	00000000 	nop
  419224:	27398ad4 	addiu	t9,t9,-29996
  419228:	00000000 	nop
  41922c:	0320f809 	jalr	t9
  419230:	00000000 	nop
  419234:	8fdc0018 	lw	gp,24(s8)
  419238:	10000159 	b	4197a0 <initiate_opportunistic_body+0x804>
  41923c:	00000000 	nop
	    , "no Opportunistic template");
    }
    else if (gateways_from_dns == NULL)
  419240:	8f828204 	lw	v0,-32252(gp)
  419244:	00000000 	nop
  419248:	8c420000 	lw	v0,0(v0)
  41924c:	00000000 	nop
  419250:	14400076 	bnez	v0,41942c <initiate_opportunistic_body+0x490>
  419254:	00000000 	nop
    {
	/* No connection explicitly handles the clients.
	 * We don't even know the peer:
	 * try to discover peer via Asynchronous DNS query.
	 */
	struct oppo_continuation *cr = alloc_thing(struct oppo_continuation
  419258:	240404c8 	li	a0,1224
  41925c:	8f858020 	lw	a1,-32736(gp)
  419260:	00000000 	nop
  419264:	24a55fe4 	addiu	a1,a1,24548
  419268:	8f998084 	lw	t9,-32636(gp)
  41926c:	00000000 	nop
  419270:	0320f809 	jalr	t9
  419274:	00000000 	nop
  419278:	8fdc0018 	lw	gp,24(s8)
  41927c:	afc200cc 	sw	v0,204(s8)
	    , "opportunistic continuation");
	struct id id;
	err_t ugh;

	cr->our_client = *our_client;
  419280:	8fc400cc 	lw	a0,204(s8)
  419284:	8fc30190 	lw	v1,400(s8)
  419288:	00000000 	nop
  41928c:	8c620000 	lw	v0,0(v1)
  419290:	00000000 	nop
  419294:	ac820480 	sw	v0,1152(a0)
  419298:	8c620004 	lw	v0,4(v1)
  41929c:	00000000 	nop
  4192a0:	ac820484 	sw	v0,1156(a0)
  4192a4:	8c620008 	lw	v0,8(v1)
  4192a8:	00000000 	nop
  4192ac:	ac820488 	sw	v0,1160(a0)
  4192b0:	8c62000c 	lw	v0,12(v1)
  4192b4:	00000000 	nop
  4192b8:	ac82048c 	sw	v0,1164(a0)
  4192bc:	8c620010 	lw	v0,16(v1)
  4192c0:	00000000 	nop
  4192c4:	ac820490 	sw	v0,1168(a0)
  4192c8:	8c620014 	lw	v0,20(v1)
  4192cc:	00000000 	nop
  4192d0:	ac820494 	sw	v0,1172(a0)
  4192d4:	8c620018 	lw	v0,24(v1)
  4192d8:	00000000 	nop
  4192dc:	ac820498 	sw	v0,1176(a0)
	cr->peer_client = *peer_client;
  4192e0:	8fc400cc 	lw	a0,204(s8)
  4192e4:	8fc30194 	lw	v1,404(s8)
  4192e8:	00000000 	nop
  4192ec:	8c620000 	lw	v0,0(v1)
  4192f0:	00000000 	nop
  4192f4:	ac82049c 	sw	v0,1180(a0)
  4192f8:	8c620004 	lw	v0,4(v1)
  4192fc:	00000000 	nop
  419300:	ac8204a0 	sw	v0,1184(a0)
  419304:	8c620008 	lw	v0,8(v1)
  419308:	00000000 	nop
  41930c:	ac8204a4 	sw	v0,1188(a0)
  419310:	8c62000c 	lw	v0,12(v1)
  419314:	00000000 	nop
  419318:	ac8204a8 	sw	v0,1192(a0)
  41931c:	8c620010 	lw	v0,16(v1)
  419320:	00000000 	nop
  419324:	ac8204ac 	sw	v0,1196(a0)
  419328:	8c620014 	lw	v0,20(v1)
  41932c:	00000000 	nop
  419330:	ac8204b0 	sw	v0,1200(a0)
  419334:	8c620018 	lw	v0,24(v1)
  419338:	00000000 	nop
  41933c:	ac8204b4 	sw	v0,1204(a0)
	cr->transport_proto = transport_proto;
  419340:	8fc30198 	lw	v1,408(s8)
  419344:	8fc200cc 	lw	v0,204(s8)
  419348:	00000000 	nop
  41934c:	ac4304b8 	sw	v1,1208(v0)
	cr->held = held;
  419350:	8fc3019c 	lw	v1,412(s8)
  419354:	8fc200cc 	lw	v0,204(s8)
  419358:	00000000 	nop
  41935c:	ac4304bc 	sw	v1,1212(v0)
	cr->whackfd = whackfd;	/* hand-off */
  419360:	8fc301a0 	lw	v1,416(s8)
  419364:	8fc200cc 	lw	v0,204(s8)
  419368:	00000000 	nop
  41936c:	ac4304c0 	sw	v1,1216(v0)

	/* note: {unshare|free}_id_content not needed for id */
	iptoid(peer_client, &id);
  419370:	8fc40194 	lw	a0,404(s8)
  419374:	27c50028 	addiu	a1,s8,40
  419378:	8f998a6c 	lw	t9,-30100(gp)
  41937c:	00000000 	nop
  419380:	0320f809 	jalr	t9
  419384:	00000000 	nop
  419388:	8fdc0018 	lw	gp,24(s8)
  41938c:	00000000 	nop

	ugh = start_adns_query(&id
  419390:	8fc200cc 	lw	v0,204(s8)
  419394:	00000000 	nop
  419398:	afa20010 	sw	v0,16(sp)
  41939c:	27c40028 	addiu	a0,s8,40
  4193a0:	00002821 	move	a1,zero
  4193a4:	24060010 	li	a2,16
  4193a8:	8f878028 	lw	a3,-32728(gp)
  4193ac:	00000000 	nop
  4193b0:	24e78cd8 	addiu	a3,a3,-29480
  4193b4:	8f998b34 	lw	t9,-29900(gp)
  4193b8:	00000000 	nop
  4193bc:	0320f809 	jalr	t9
  4193c0:	00000000 	nop
  4193c4:	8fdc0018 	lw	gp,24(s8)
  4193c8:	afc200c8 	sw	v0,200(s8)
	    , (const struct id *) NULL	/* security gateway unconstrained */
	    , T_TXT
	    , continue_oppo
	    , &cr->ac);
	if (ugh == NULL)
  4193cc:	8fc200c8 	lw	v0,200(s8)
  4193d0:	00000000 	nop
  4193d4:	14400005 	bnez	v0,4193ec <initiate_opportunistic_body+0x450>
  4193d8:	00000000 	nop
	    whackfd = NULL_FD;	/* complete hand-off */
  4193dc:	2402ffff 	li	v0,-1
  4193e0:	afc201a0 	sw	v0,416(s8)
  4193e4:	100000ee 	b	4197a0 <initiate_opportunistic_body+0x804>
  4193e8:	00000000 	nop
	else
	    cannot_oppo(our_client, peer_client, transport_proto, held, ugh);
  4193ec:	8fc200c8 	lw	v0,200(s8)
  4193f0:	00000000 	nop
  4193f4:	afa20010 	sw	v0,16(sp)
  4193f8:	8fc40190 	lw	a0,400(s8)
  4193fc:	8fc50194 	lw	a1,404(s8)
  419400:	8fc60198 	lw	a2,408(s8)
  419404:	8fc7019c 	lw	a3,412(s8)
  419408:	8f998028 	lw	t9,-32728(gp)
  41940c:	00000000 	nop
  419410:	27398ad4 	addiu	t9,t9,-29996
  419414:	00000000 	nop
  419418:	0320f809 	jalr	t9
  41941c:	00000000 	nop
  419420:	8fdc0018 	lw	gp,24(s8)
  419424:	100000de 	b	4197a0 <initiate_opportunistic_body+0x804>
  419428:	00000000 	nop
    }
    else
    {
	/* No connection explicitly handles the clients.
	 * We do know the peer because an Asynchronous DNS query has completed.
	 * !!! We need to randomize the entry in gw that we choose.
	 */
	c = build_outgoing_opportunistic_connection(
  41942c:	8f848204 	lw	a0,-32252(gp)
  419430:	00000000 	nop
  419434:	8c840000 	lw	a0,0(a0)
  419438:	8fc50190 	lw	a1,400(s8)
  41943c:	8fc60194 	lw	a2,404(s8)
  419440:	8f998348 	lw	t9,-31928(gp)
  419444:	00000000 	nop
  419448:	0320f809 	jalr	t9
  41944c:	00000000 	nop
  419450:	8fdc0018 	lw	gp,24(s8)
  419454:	afc20020 	sw	v0,32(s8)
	    gateways_from_dns, our_client
	    , peer_client);

	if (c == NULL)
  419458:	8fc20020 	lw	v0,32(s8)
  41945c:	00000000 	nop
  419460:	14400068 	bnez	v0,419604 <initiate_opportunistic_body+0x668>
  419464:	00000000 	nop
	{
	    /* We cannot seem to instantiate a suitable connection:
	     * complain clearly.
	     */
	    char ocb[ADDRTOT_BUF]
		, pcb[ADDRTOT_BUF]
		, pb[ADDRTOT_BUF];

	    addrtot(our_client, 0, ocb, sizeof(ocb));
  419468:	8fc40190 	lw	a0,400(s8)
  41946c:	00002821 	move	a1,zero
  419470:	27c60050 	addiu	a2,s8,80
  419474:	24070049 	li	a3,73
  419478:	8f998b50 	lw	t9,-29872(gp)
  41947c:	00000000 	nop
  419480:	0320f809 	jalr	t9
  419484:	00000000 	nop
  419488:	8fdc0018 	lw	gp,24(s8)
  41948c:	00000000 	nop
	    addrtot(peer_client, 0, pcb, sizeof(pcb));
  419490:	8fc40194 	lw	a0,404(s8)
  419494:	00002821 	move	a1,zero
  419498:	27c600d0 	addiu	a2,s8,208
  41949c:	24070049 	li	a3,73
  4194a0:	8f998b50 	lw	t9,-29872(gp)
  4194a4:	00000000 	nop
  4194a8:	0320f809 	jalr	t9
  4194ac:	00000000 	nop
  4194b0:	8fdc0018 	lw	gp,24(s8)
  4194b4:	00000000 	nop
	    passert(id_is_ipaddr(&gateways_from_dns->gw_id));
  4194b8:	8f828204 	lw	v0,-32252(gp)
  4194bc:	00000000 	nop
  4194c0:	8c420000 	lw	v0,0(v0)
  4194c4:	00000000 	nop
  4194c8:	24420040 	addiu	v0,v0,64
  4194cc:	8c430000 	lw	v1,0(v0)
  4194d0:	24020001 	li	v0,1
  4194d4:	10620017 	beq	v1,v0,419534 <initiate_opportunistic_body+0x598>
  4194d8:	00000000 	nop
  4194dc:	8f828204 	lw	v0,-32252(gp)
  4194e0:	00000000 	nop
  4194e4:	8c420000 	lw	v0,0(v0)
  4194e8:	00000000 	nop
  4194ec:	24420040 	addiu	v0,v0,64
  4194f0:	8c430000 	lw	v1,0(v0)
  4194f4:	24020005 	li	v0,5
  4194f8:	1062000e 	beq	v1,v0,419534 <initiate_opportunistic_body+0x598>
  4194fc:	00000000 	nop
  419500:	8f848020 	lw	a0,-32736(gp)
  419504:	00000000 	nop
  419508:	24846000 	addiu	a0,a0,24576
  41950c:	8f858020 	lw	a1,-32736(gp)
  419510:	00000000 	nop
  419514:	24a554a4 	addiu	a1,a1,21668
  419518:	2406069d 	li	a2,1693
  41951c:	8f998bb8 	lw	t9,-29768(gp)
  419520:	00000000 	nop
  419524:	0320f809 	jalr	t9
  419528:	00000000 	nop
  41952c:	8fdc0018 	lw	gp,24(s8)
  419530:	00000000 	nop
	    addrtot(&gateways_from_dns->gw_id.ip_addr, 0, pb, sizeof(pb));
  419534:	8f828204 	lw	v0,-32252(gp)
  419538:	00000000 	nop
  41953c:	8c420000 	lw	v0,0(v0)
  419540:	00000000 	nop
  419544:	24420044 	addiu	v0,v0,68
  419548:	00402021 	move	a0,v0
  41954c:	00002821 	move	a1,zero
  419550:	27c60120 	addiu	a2,s8,288
  419554:	24070049 	li	a3,73
  419558:	8f998b50 	lw	t9,-29872(gp)
  41955c:	00000000 	nop
  419560:	0320f809 	jalr	t9
  419564:	00000000 	nop
  419568:	8fdc0018 	lw	gp,24(s8)
  41956c:	00000000 	nop
	    loglog(RC_OPPOFAILURE
  419570:	27c20120 	addiu	v0,s8,288
  419574:	afa20010 	sw	v0,16(sp)
  419578:	24040021 	li	a0,33
  41957c:	8f858020 	lw	a1,-32736(gp)
  419580:	00000000 	nop
  419584:	24a56028 	addiu	a1,a1,24616
  419588:	27c60050 	addiu	a2,s8,80
  41958c:	27c700d0 	addiu	a3,s8,208
  419590:	8f998c48 	lw	t9,-29624(gp)
  419594:	00000000 	nop
  419598:	0320f809 	jalr	t9
  41959c:	00000000 	nop
  4195a0:	8fdc0018 	lw	gp,24(s8)
  4195a4:	00000000 	nop
		, "no suitable connection for opportunism"
		  " between %s and %s with %s as peer"
		, ocb, pcb, pb);

#ifdef KLIPS
	    if (held)
  4195a8:	8fc2019c 	lw	v0,412(s8)
  4195ac:	00000000 	nop
  4195b0:	1040007b 	beqz	v0,4197a0 <initiate_opportunistic_body+0x804>
  4195b4:	00000000 	nop
	    {
		/* Replace HOLD with PASS.
		 * The type of replacement *ought* to be
		 * specified by policy.
		 */
		(void) replace_bare_shunt(our_client, peer_client
  4195b8:	8fc20198 	lw	v0,408(s8)
  4195bc:	00000000 	nop
  4195c0:	afa20010 	sw	v0,16(sp)
  4195c4:	8f828020 	lw	v0,-32736(gp)
  4195c8:	00000000 	nop
  4195cc:	24426074 	addiu	v0,v0,24692
  4195d0:	00000000 	nop
  4195d4:	afa20014 	sw	v0,20(sp)
  4195d8:	8fc40190 	lw	a0,400(s8)
  4195dc:	8fc50194 	lw	a1,404(s8)
  4195e0:	24060100 	li	a2,256
  4195e4:	24070001 	li	a3,1
  4195e8:	8f998718 	lw	t9,-30952(gp)
  4195ec:	00000000 	nop
  4195f0:	0320f809 	jalr	t9
  4195f4:	00000000 	nop
  4195f8:	8fdc0018 	lw	gp,24(s8)
  4195fc:	10000068 	b	4197a0 <initiate_opportunistic_body+0x804>
  419600:	00000000 	nop
		    , SPI_PASS	/* fail into PASS */
		    , TRUE, transport_proto, "replace HOLD with PASS [no suitable connection]");
	    }
#endif
	}
	else
	{
	    /* If we are to proceed asynchronously, whackfd will be NULL_FD. */
	    passert(c->gw_info != NULL);
  419604:	8fc20020 	lw	v0,32(s8)
  419608:	00000000 	nop
  41960c:	8c4201b8 	lw	v0,440(v0)
  419610:	00000000 	nop
  419614:	1440000e 	bnez	v0,419650 <initiate_opportunistic_body+0x6b4>
  419618:	00000000 	nop
  41961c:	8f848020 	lw	a0,-32736(gp)
  419620:	00000000 	nop
  419624:	248460a4 	addiu	a0,a0,24740
  419628:	8f858020 	lw	a1,-32736(gp)
  41962c:	00000000 	nop
  419630:	24a554a4 	addiu	a1,a1,21668
  419634:	240606b4 	li	a2,1716
  419638:	8f998bb8 	lw	t9,-29768(gp)
  41963c:	00000000 	nop
  419640:	0320f809 	jalr	t9
  419644:	00000000 	nop
  419648:	8fdc0018 	lw	gp,24(s8)
  41964c:	00000000 	nop
	    passert(HAS_IPSEC_POLICY(c->policy));
  419650:	8fc20020 	lw	v0,32(s8)
  419654:	00000000 	nop
  419658:	8c440008 	lw	a0,8(v0)
  41965c:	8c45000c 	lw	a1,12(v0)
  419660:	24020000 	li	v0,0
  419664:	240300fc 	li	v1,252
  419668:	00822024 	and	a0,a0,v0
  41966c:	00a32824 	and	a1,a1,v1
  419670:	00801021 	move	v0,a0
  419674:	00451025 	or	v0,v0,a1
  419678:	1440000e 	bnez	v0,4196b4 <initiate_opportunistic_body+0x718>
  41967c:	00000000 	nop
  419680:	8f848020 	lw	a0,-32736(gp)
  419684:	00000000 	nop
  419688:	24845fac 	addiu	a0,a0,24492
  41968c:	8f858020 	lw	a1,-32736(gp)
  419690:	00000000 	nop
  419694:	24a554a4 	addiu	a1,a1,21668
  419698:	240606b5 	li	a2,1717
  41969c:	8f998bb8 	lw	t9,-29768(gp)
  4196a0:	00000000 	nop
  4196a4:	0320f809 	jalr	t9
  4196a8:	00000000 	nop
  4196ac:	8fdc0018 	lw	gp,24(s8)
  4196b0:	00000000 	nop
	    passert(c->routing == RT_UNROUTED);
  4196b4:	8fc20020 	lw	v0,32(s8)
  4196b8:	00000000 	nop
  4196bc:	8c42019c 	lw	v0,412(v0)
  4196c0:	00000000 	nop
  4196c4:	1040000e 	beqz	v0,419700 <initiate_opportunistic_body+0x764>
  4196c8:	00000000 	nop
  4196cc:	8f848020 	lw	a0,-32736(gp)
  4196d0:	00000000 	nop
  4196d4:	248460b8 	addiu	a0,a0,24760
  4196d8:	8f858020 	lw	a1,-32736(gp)
  4196dc:	00000000 	nop
  4196e0:	24a554a4 	addiu	a1,a1,21668
  4196e4:	240606b6 	li	a2,1718
  4196e8:	8f998bb8 	lw	t9,-29768(gp)
  4196ec:	00000000 	nop
  4196f0:	0320f809 	jalr	t9
  4196f4:	00000000 	nop
  4196f8:	8fdc0018 	lw	gp,24(s8)
  4196fc:	00000000 	nop
#ifdef KLIPS
	    if (held)
  419700:	8fc2019c 	lw	v0,412(s8)
  419704:	00000000 	nop
  419708:	1040000b 	beqz	v0,419738 <initiate_opportunistic_body+0x79c>
  41970c:	00000000 	nop
	    {
		/* what should we do on failure? */
		(void) assign_hold(c, transport_proto, our_client, peer_client);
  419710:	8fc40020 	lw	a0,32(s8)
  419714:	8fc50198 	lw	a1,408(s8)
  419718:	8fc60190 	lw	a2,400(s8)
  41971c:	8fc70194 	lw	a3,404(s8)
  419720:	8f9987e4 	lw	t9,-30748(gp)
  419724:	00000000 	nop
  419728:	0320f809 	jalr	t9
  41972c:	00000000 	nop
  419730:	8fdc0018 	lw	gp,24(s8)
  419734:	00000000 	nop
	    }
#endif
	    c->gw_info->last_tried_time = now();
  419738:	8fc20020 	lw	v0,32(s8)
  41973c:	00000000 	nop
  419740:	8c5001b8 	lw	s0,440(v0)
  419744:	8f998b58 	lw	t9,-29864(gp)
  419748:	00000000 	nop
  41974c:	0320f809 	jalr	t9
  419750:	00000000 	nop
  419754:	8fdc0018 	lw	gp,24(s8)
  419758:	ae020010 	sw	v0,16(s0)
	    ipsecdoi_initiate(whackfd, c, c->policy, 1, SOS_NOBODY);
  41975c:	24020001 	li	v0,1
  419760:	afa20010 	sw	v0,16(sp)
  419764:	afa00014 	sw	zero,20(sp)
  419768:	8fc401a0 	lw	a0,416(s8)
  41976c:	8fc50020 	lw	a1,32(s8)
  419770:	8fc20020 	lw	v0,32(s8)
  419774:	00000000 	nop
  419778:	8c460008 	lw	a2,8(v0)
  41977c:	8c47000c 	lw	a3,12(v0)
  419780:	8f99815c 	lw	t9,-32420(gp)
  419784:	00000000 	nop
  419788:	0320f809 	jalr	t9
  41978c:	00000000 	nop
  419790:	8fdc0018 	lw	gp,24(s8)
  419794:	00000000 	nop
	    whackfd = NULL_FD;	/* protect from close */
  419798:	2402ffff 	li	v0,-1
  41979c:	afc201a0 	sw	v0,416(s8)
	}
    }
    close_any(whackfd);
  4197a0:	8fc301a0 	lw	v1,416(s8)
  4197a4:	2402ffff 	li	v0,-1
  4197a8:	10620009 	beq	v1,v0,4197d0 <initiate_opportunistic_body+0x834>
  4197ac:	00000000 	nop
  4197b0:	8fc401a0 	lw	a0,416(s8)
  4197b4:	8f9980c8 	lw	t9,-32568(gp)
  4197b8:	00000000 	nop
  4197bc:	0320f809 	jalr	t9
  4197c0:	00000000 	nop
  4197c4:	8fdc0018 	lw	gp,24(s8)
  4197c8:	2402ffff 	li	v0,-1
  4197cc:	afc201a0 	sw	v0,416(s8)
}
  4197d0:	03c0e821 	move	sp,s8
  4197d4:	8fbf018c 	lw	ra,396(sp)
  4197d8:	8fbe0188 	lw	s8,392(sp)
  4197dc:	8fb00180 	lw	s0,384(sp)
  4197e0:	27bd0190 	addiu	sp,sp,400
  4197e4:	03e00008 	jr	ra
  4197e8:	00000000 	nop

004197ec <terminate_connection>:
  4197ec:	3c1c0fbf 	lui	gp,0xfbf
  4197f0:	279c3184 	addiu	gp,gp,12676
  4197f4:	0399e021 	addu	gp,gp,t9
  4197f8:	27bdffd0 	addiu	sp,sp,-48
  4197fc:	afbc0010 	sw	gp,16(sp)
  419800:	afbf0028 	sw	ra,40(sp)
  419804:	afbe0024 	sw	s8,36(sp)
  419808:	afbc0020 	sw	gp,32(sp)
  41980c:	03a0f021 	move	s8,sp
  419810:	afc40030 	sw	a0,48(s8)

void
terminate_connection(const char *nm)
{
    /* Loop because more than one may match (master and instances)
     * But at least one is required (enforced by con_by_name).
     */
    struct connection *c, *n;

    for (c = con_by_name(nm, TRUE); c != NULL; c = n)
  419814:	8fc40030 	lw	a0,48(s8)
  419818:	24050001 	li	a1,1
  41981c:	8f998be8 	lw	t9,-29720(gp)
  419820:	00000000 	nop
  419824:	0320f809 	jalr	t9
  419828:	00000000 	nop
  41982c:	8fdc0010 	lw	gp,16(s8)
  419830:	afc20018 	sw	v0,24(s8)
  419834:	8fc20018 	lw	v0,24(s8)
  419838:	00000000 	nop
  41983c:	14400003 	bnez	v0,41984c <terminate_connection+0x60>
  419840:	00000000 	nop
  419844:	1000003e 	b	419940 <terminate_connection+0x154>
  419848:	00000000 	nop
    {
	n = c->ac_next;	/* grab this before c might disappear */
  41984c:	8fc20018 	lw	v0,24(s8)
  419850:	00000000 	nop
  419854:	8c4201cc 	lw	v0,460(v0)
  419858:	00000000 	nop
  41985c:	afc2001c 	sw	v0,28(s8)
	if (streq(c->name, nm))
  419860:	8fc20018 	lw	v0,24(s8)
  419864:	00000000 	nop
  419868:	8c440000 	lw	a0,0(v0)
  41986c:	8fc50030 	lw	a1,48(s8)
  419870:	8f998428 	lw	t9,-31704(gp)
  419874:	00000000 	nop
  419878:	0320f809 	jalr	t9
  41987c:	00000000 	nop
  419880:	8fdc0010 	lw	gp,16(s8)
  419884:	14400029 	bnez	v0,41992c <terminate_connection+0x140>
  419888:	00000000 	nop
	{
	    set_cur_connection(c);
  41988c:	8fc20018 	lw	v0,24(s8)
  419890:	8f8188c8 	lw	at,-30520(gp)
  419894:	00000000 	nop
  419898:	ac220000 	sw	v0,0(at)
  41989c:	8fc40018 	lw	a0,24(s8)
  4198a0:	8f998be4 	lw	t9,-29724(gp)
  4198a4:	00000000 	nop
  4198a8:	0320f809 	jalr	t9
  4198ac:	00000000 	nop
  4198b0:	8fdc0010 	lw	gp,16(s8)
  4198b4:	00000000 	nop
	    plog("terminating SAs using this connection");
  4198b8:	8f848020 	lw	a0,-32736(gp)
  4198bc:	00000000 	nop
  4198c0:	248460d4 	addiu	a0,a0,24788
  4198c4:	8f998abc 	lw	t9,-30020(gp)
  4198c8:	00000000 	nop
  4198cc:	0320f809 	jalr	t9
  4198d0:	00000000 	nop
  4198d4:	8fdc0010 	lw	gp,16(s8)
  4198d8:	00000000 	nop
	    c->initiated = FALSE;
  4198dc:	8fc20018 	lw	v0,24(s8)
  4198e0:	00000000 	nop
  4198e4:	ac4001a0 	sw	zero,416(v0)
	    delete_states_by_connection(c, FALSE);
  4198e8:	8fc40018 	lw	a0,24(s8)
  4198ec:	00002821 	move	a1,zero
  4198f0:	8f998608 	lw	t9,-31224(gp)
  4198f4:	00000000 	nop
  4198f8:	0320f809 	jalr	t9
  4198fc:	00000000 	nop
  419900:	8fdc0010 	lw	gp,16(s8)
  419904:	00000000 	nop
	    reset_cur_connection();
  419908:	8f8188c8 	lw	at,-30520(gp)
  41990c:	00000000 	nop
  419910:	ac200000 	sw	zero,0(at)
  419914:	8f82830c 	lw	v0,-31988(gp)
  419918:	00000000 	nop
  41991c:	8c420000 	lw	v0,0(v0)
  419920:	8f8184f8 	lw	at,-31496(gp)
  419924:	00000000 	nop
  419928:	ac220000 	sw	v0,0(at)
  41992c:	8fc2001c 	lw	v0,28(s8)
  419930:	00000000 	nop
  419934:	afc20018 	sw	v0,24(s8)
  419938:	1000ffbe 	b	419834 <terminate_connection+0x48>
  41993c:	00000000 	nop
	}
    }
}
  419940:	03c0e821 	move	sp,s8
  419944:	8fbf0028 	lw	ra,40(sp)
  419948:	8fbe0024 	lw	s8,36(sp)
  41994c:	27bd0030 	addiu	sp,sp,48
  419950:	03e00008 	jr	ra
  419954:	00000000 	nop

00419958 <ISAKMP_SA_established>:
  419958:	3c1c0fbf 	lui	gp,0xfbf
  41995c:	279c3018 	addiu	gp,gp,12312
  419960:	0399e021 	addu	gp,gp,t9
  419964:	27bdffc0 	addiu	sp,sp,-64
  419968:	afbc0010 	sw	gp,16(sp)
  41996c:	afbf0038 	sw	ra,56(sp)
  419970:	afbe0034 	sw	s8,52(sp)
  419974:	afbc0030 	sw	gp,48(sp)
  419978:	03a0f021 	move	s8,sp
  41997c:	afc40040 	sw	a0,64(s8)
  419980:	afc50044 	sw	a1,68(s8)

/* check nexthop safety
 * Our nexthop must not be within a routed client subnet, and vice versa.
 * Note: we don't think this is true.  We think that KLIPS will
 * not process a packet output by an eroute.
 */
#ifdef NEVER
//bool
//check_nexthop(const struct connection *c)
//{
//    struct connection *d;
//
//    if (addrinsubnet(&c->this.host_nexthop, &c->that.client))
//    {
//	loglog(RC_LOG_SERIOUS, "cannot perform routing for connection \"%s\""
//	    " because nexthop is within peer's client network",
//	    c->name);
//	return FALSE;
//    }
//
//    for (d = connections; d != NULL; d = d->next)
//    {
//	if (d->routing != RT_UNROUTED)
//	{
//	    if (addrinsubnet(&c->this.host_nexthop, &d->that.client))
//	    {
//		loglog(RC_LOG_SERIOUS, "cannot do routing for connection \"%s\"
//		    " because nexthop is contained in"
//		    " existing routing for connection \"%s\"",
//		    c->name, d->name);
//		return FALSE;
//	    }
//	    if (addrinsubnet(&d->this.host_nexthop, &c->that.client))
//	    {
//		loglog(RC_LOG_SERIOUS, "cannot do routing for connection \"%s\"
//		    " because it contains nexthop of"
//		    " existing routing for connection \"%s\"",
//		    c->name, d->name);
//		return FALSE;
//	    }
//	}
//    }
//    return TRUE;
//}
#endif /* NEVER */

/* an ISAKMP SA has been established.
 * Note the serial number, and release any connections with
 * the same peer ID but different peer IP address.
 */
bool uniqueIDs = FALSE;	/* --uniqueids? */

void
ISAKMP_SA_established(struct connection *c, so_serial_t serial)
{
    c->newest_isakmp_sa = serial;
  419984:	8fc20044 	lw	v0,68(s8)
  419988:	8fc30040 	lw	v1,64(s8)
  41998c:	00000000 	nop
  419990:	ac6201a4 	sw	v0,420(v1)

    if (uniqueIDs
	&& ((c->policy & (POLICY_AGGRESSIVE|POLICY_XAUTH)) != (POLICY_AGGRESSIVE|POLICY_XAUTH)))
  419994:	8f8285b0 	lw	v0,-31312(gp)
  419998:	00000000 	nop
  41999c:	8c420000 	lw	v0,0(v0)
  4199a0:	00000000 	nop
  4199a4:	10400095 	beqz	v0,419bfc <ISAKMP_SA_established+0x2a4>
  4199a8:	00000000 	nop
  4199ac:	8fc20040 	lw	v0,64(s8)
  4199b0:	00000000 	nop
  4199b4:	8c440008 	lw	a0,8(v0)
  4199b8:	8c45000c 	lw	a1,12(v0)
  4199bc:	24020000 	li	v0,0
  4199c0:	24033000 	li	v1,12288
  4199c4:	00822024 	and	a0,a0,v0
  4199c8:	00a32824 	and	a1,a1,v1
  4199cc:	afc40020 	sw	a0,32(s8)
  4199d0:	afc50024 	sw	a1,36(s8)
  4199d4:	8fc20020 	lw	v0,32(s8)
  4199d8:	00000000 	nop
  4199dc:	14400008 	bnez	v0,419a00 <ISAKMP_SA_established+0xa8>
  4199e0:	00000000 	nop
  4199e4:	24023000 	li	v0,12288
  4199e8:	8fc30024 	lw	v1,36(s8)
  4199ec:	00000000 	nop
  4199f0:	14620003 	bne	v1,v0,419a00 <ISAKMP_SA_established+0xa8>
  4199f4:	00000000 	nop
  4199f8:	10000080 	b	419bfc <ISAKMP_SA_established+0x2a4>
  4199fc:	00000000 	nop
    {
	/* for all connections: if the same Phase 1 peer ID is used
	 * for a different IP address, unorient that connection.
	 */
	struct connection *d;

	for (d = connections; d != NULL; )
  419a00:	8f828018 	lw	v0,-32744(gp)
  419a04:	00000000 	nop
  419a08:	244206f0 	addiu	v0,v0,1776
  419a0c:	8c420000 	lw	v0,0(v0)
  419a10:	00000000 	nop
  419a14:	afc20018 	sw	v0,24(s8)
  419a18:	8fc20018 	lw	v0,24(s8)
  419a1c:	00000000 	nop
  419a20:	14400003 	bnez	v0,419a30 <ISAKMP_SA_established+0xd8>
  419a24:	00000000 	nop
  419a28:	10000074 	b	419bfc <ISAKMP_SA_established+0x2a4>
  419a2c:	00000000 	nop
	{
	    struct connection *next = d->ac_next;	/* might move underneath us */
  419a30:	8fc20018 	lw	v0,24(s8)
  419a34:	00000000 	nop
  419a38:	8c4201cc 	lw	v0,460(v0)
  419a3c:	00000000 	nop
  419a40:	afc2001c 	sw	v0,28(s8)

	    /* never nuke self! */
	    if(c == d) {
  419a44:	8fc30040 	lw	v1,64(s8)
  419a48:	8fc20018 	lw	v0,24(s8)
  419a4c:	00000000 	nop
  419a50:	14620006 	bne	v1,v0,419a6c <ISAKMP_SA_established+0x114>
  419a54:	00000000 	nop
	      d = next;
  419a58:	8fc2001c 	lw	v0,28(s8)
  419a5c:	00000000 	nop
  419a60:	afc20018 	sw	v0,24(s8)
	      continue;
  419a64:	1000ffec 	b	419a18 <ISAKMP_SA_established+0xc0>
  419a68:	00000000 	nop
	    }

#ifdef NAT_TRAVERSAL
	    if (d->kind != CK_TEMPLATE
		&& ((d->policy & (POLICY_AGGRESSIVE|POLICY_XAUTH)) != (POLICY_AGGRESSIVE|POLICY_XAUTH))
		&& same_id(&c->that.id, &d->that.id)
		&& (!sameaddr(&c->that.host_addr, &d->that.host_addr) ||
		    (c->that.host_port != d->that.host_port)))
  419a6c:	8fc20018 	lw	v0,24(s8)
  419a70:	00000000 	nop
  419a74:	8c420194 	lw	v0,404(v0)
  419a78:	00000000 	nop
  419a7c:	1040005a 	beqz	v0,419be8 <ISAKMP_SA_established+0x290>
  419a80:	00000000 	nop
  419a84:	8fc20018 	lw	v0,24(s8)
  419a88:	00000000 	nop
  419a8c:	8c440008 	lw	a0,8(v0)
  419a90:	8c45000c 	lw	a1,12(v0)
  419a94:	24020000 	li	v0,0
  419a98:	24033000 	li	v1,12288
  419a9c:	00822024 	and	a0,a0,v0
  419aa0:	00a32824 	and	a1,a1,v1
  419aa4:	afc40028 	sw	a0,40(s8)
  419aa8:	afc5002c 	sw	a1,44(s8)
  419aac:	8fc20028 	lw	v0,40(s8)
  419ab0:	00000000 	nop
  419ab4:	14400008 	bnez	v0,419ad8 <ISAKMP_SA_established+0x180>
  419ab8:	00000000 	nop
  419abc:	24023000 	li	v0,12288
  419ac0:	8fc3002c 	lw	v1,44(s8)
  419ac4:	00000000 	nop
  419ac8:	14620003 	bne	v1,v0,419ad8 <ISAKMP_SA_established+0x180>
  419acc:	00000000 	nop
  419ad0:	10000045 	b	419be8 <ISAKMP_SA_established+0x290>
  419ad4:	00000000 	nop
  419ad8:	8fc20040 	lw	v0,64(s8)
  419adc:	00000000 	nop
  419ae0:	244300e0 	addiu	v1,v0,224
  419ae4:	8fc20018 	lw	v0,24(s8)
  419ae8:	00000000 	nop
  419aec:	244200e0 	addiu	v0,v0,224
  419af0:	00602021 	move	a0,v1
  419af4:	00402821 	move	a1,v0
  419af8:	8f9980e4 	lw	t9,-32540(gp)
  419afc:	00000000 	nop
  419b00:	0320f809 	jalr	t9
  419b04:	00000000 	nop
  419b08:	8fdc0010 	lw	gp,16(s8)
  419b0c:	10400036 	beqz	v0,419be8 <ISAKMP_SA_established+0x290>
  419b10:	00000000 	nop
  419b14:	8fc20040 	lw	v0,64(s8)
  419b18:	00000000 	nop
  419b1c:	24430108 	addiu	v1,v0,264
  419b20:	8fc20018 	lw	v0,24(s8)
  419b24:	00000000 	nop
  419b28:	24420108 	addiu	v0,v0,264
  419b2c:	00602021 	move	a0,v1
  419b30:	00402821 	move	a1,v0
  419b34:	8f998928 	lw	t9,-30424(gp)
  419b38:	00000000 	nop
  419b3c:	0320f809 	jalr	t9
  419b40:	00000000 	nop
  419b44:	8fdc0010 	lw	gp,16(s8)
  419b48:	1040000c 	beqz	v0,419b7c <ISAKMP_SA_established+0x224>
  419b4c:	00000000 	nop
  419b50:	8fc20040 	lw	v0,64(s8)
  419b54:	00000000 	nop
  419b58:	94430178 	lhu	v1,376(v0)
  419b5c:	8fc20018 	lw	v0,24(s8)
  419b60:	00000000 	nop
  419b64:	94420178 	lhu	v0,376(v0)
  419b68:	00000000 	nop
  419b6c:	14620003 	bne	v1,v0,419b7c <ISAKMP_SA_established+0x224>
  419b70:	00000000 	nop
  419b74:	1000001c 	b	419be8 <ISAKMP_SA_established+0x290>
  419b78:	00000000 	nop
#else
	    if (d->kind != CK_TEMPLATE
		&& ((d->policy & (POLICY_AGGRESSIVE|POLICY_XAUTH)) != (POLICY_AGGRESSIVE|POLICY_XAUTH))
		&& same_id(&c->that.id, &d->that.id)
		&& !sameaddr(&c->that.host_addr, &d->that.host_addr))
#endif
	    {
	      DBG(DBG_CONTROL,
  419b7c:	8f8284f8 	lw	v0,-31496(gp)
  419b80:	00000000 	nop
  419b84:	8c420000 	lw	v0,0(v0)
  419b88:	00000000 	nop
  419b8c:	30420010 	andi	v0,v0,0x10
  419b90:	1040000d 	beqz	v0,419bc8 <ISAKMP_SA_established+0x270>
  419b94:	00000000 	nop
  419b98:	8f848020 	lw	a0,-32736(gp)
  419b9c:	00000000 	nop
  419ba0:	248460fc 	addiu	a0,a0,24828
  419ba4:	8fc20040 	lw	v0,64(s8)
  419ba8:	00000000 	nop
  419bac:	8c450000 	lw	a1,0(v0)
  419bb0:	8f9983b8 	lw	t9,-31816(gp)
  419bb4:	00000000 	nop
  419bb8:	0320f809 	jalr	t9
  419bbc:	00000000 	nop
  419bc0:	8fdc0010 	lw	gp,16(s8)
  419bc4:	00000000 	nop
		  DBG_log("established, duplicate conn %s deleted",
			  c->name));
	      release_connection(d, FALSE);
  419bc8:	8fc40018 	lw	a0,24(s8)
  419bcc:	00002821 	move	a1,zero
  419bd0:	8f9989c4 	lw	t9,-30268(gp)
  419bd4:	00000000 	nop
  419bd8:	0320f809 	jalr	t9
  419bdc:	00000000 	nop
  419be0:	8fdc0010 	lw	gp,16(s8)
  419be4:	00000000 	nop
	    }
	    d = next;
  419be8:	8fc2001c 	lw	v0,28(s8)
  419bec:	00000000 	nop
  419bf0:	afc20018 	sw	v0,24(s8)
  419bf4:	1000ff88 	b	419a18 <ISAKMP_SA_established+0xc0>
  419bf8:	00000000 	nop
	}
    }
}
  419bfc:	03c0e821 	move	sp,s8
  419c00:	8fbf0038 	lw	ra,56(sp)
  419c04:	8fbe0034 	lw	s8,52(sp)
  419c08:	27bd0040 	addiu	sp,sp,64
  419c0c:	03e00008 	jr	ra
  419c10:	00000000 	nop

00419c14 <route_owner>:
  419c14:	3c1c0fbf 	lui	gp,0xfbf
  419c18:	279c2d5c 	addiu	gp,gp,11612
  419c1c:	0399e021 	addu	gp,gp,t9
  419c20:	27bdffb0 	addiu	sp,sp,-80
  419c24:	afbc0018 	sw	gp,24(sp)
  419c28:	afbf004c 	sw	ra,76(sp)
  419c2c:	afbe0048 	sw	s8,72(sp)
  419c30:	afbc0044 	sw	gp,68(sp)
  419c34:	afb00040 	sw	s0,64(sp)
  419c38:	03a0f021 	move	s8,sp
  419c3c:	afc40050 	sw	a0,80(s8)
  419c40:	afc50054 	sw	a1,84(s8)

/* Find the connection to connection c's peer's client with the
 * largest value of .routing.  All other things being equal,
 * preference is given to c.  If none is routed, return NULL.
 *
 * If erop is non-null, set *erop to a connection sharing both
 * our client subnet and peer's client subnet with the largest value
 * of .routing.  If none is erouted, set *erop to NULL.
 *
 * The return value is used to find other connections sharing a route.
 * *erop is used to find other connections sharing an eroute.
 */
struct connection *
route_owner(struct connection *c, struct connection **erop)
{
    struct connection *d
	, *bestro = c
  419c44:	8fc20050 	lw	v0,80(s8)
  419c48:	00000000 	nop
  419c4c:	afc20024 	sw	v0,36(s8)
	, *bestero = c;
  419c50:	8fc20050 	lw	v0,80(s8)
  419c54:	00000000 	nop
  419c58:	afc20028 	sw	v0,40(s8)
    const ip_subnet *cc = EffectivePeerClient(c);
  419c5c:	8fc40050 	lw	a0,80(s8)
  419c60:	8f998648 	lw	t9,-31160(gp)
  419c64:	00000000 	nop
  419c68:	0320f809 	jalr	t9
  419c6c:	00000000 	nop
  419c70:	8fdc0018 	lw	gp,24(s8)
  419c74:	afc2002c 	sw	v0,44(s8)

    passert(oriented(*c));
  419c78:	8fc20050 	lw	v0,80(s8)
  419c7c:	00000000 	nop
  419c80:	8c420198 	lw	v0,408(v0)
  419c84:	00000000 	nop
  419c88:	1440000e 	bnez	v0,419cc4 <route_owner+0xb0>
  419c8c:	00000000 	nop
  419c90:	8f848020 	lw	a0,-32736(gp)
  419c94:	00000000 	nop
  419c98:	24846124 	addiu	a0,a0,24868
  419c9c:	8f858020 	lw	a1,-32736(gp)
  419ca0:	00000000 	nop
  419ca4:	24a554a4 	addiu	a1,a1,21668
  419ca8:	24060750 	li	a2,1872
  419cac:	8f998bb8 	lw	t9,-29768(gp)
  419cb0:	00000000 	nop
  419cb4:	0320f809 	jalr	t9
  419cb8:	00000000 	nop
  419cbc:	8fdc0018 	lw	gp,24(s8)
  419cc0:	00000000 	nop

    for (d = connections; d != NULL; d = d->ac_next)
  419cc4:	8f828018 	lw	v0,-32744(gp)
  419cc8:	00000000 	nop
  419ccc:	244206f0 	addiu	v0,v0,1776
  419cd0:	8c420000 	lw	v0,0(v0)
  419cd4:	00000000 	nop
  419cd8:	afc20020 	sw	v0,32(s8)
  419cdc:	8fc20020 	lw	v0,32(s8)
  419ce0:	00000000 	nop
  419ce4:	14400003 	bnez	v0,419cf4 <route_owner+0xe0>
  419ce8:	00000000 	nop
  419cec:	1000008e 	b	419f28 <route_owner+0x314>
  419cf0:	00000000 	nop
    {
	const ip_subnet * epc;
	if (d->routing == RT_UNROUTED)
  419cf4:	8fc20020 	lw	v0,32(s8)
  419cf8:	00000000 	nop
  419cfc:	8c42019c 	lw	v0,412(v0)
  419d00:	00000000 	nop
  419d04:	14400003 	bnez	v0,419d14 <route_owner+0x100>
  419d08:	00000000 	nop
	    continue;
  419d0c:	1000007f 	b	419f0c <route_owner+0x2f8>
  419d10:	00000000 	nop
	epc = EffectivePeerClient(d);
  419d14:	8fc40020 	lw	a0,32(s8)
  419d18:	8f998648 	lw	t9,-31160(gp)
  419d1c:	00000000 	nop
  419d20:	0320f809 	jalr	t9
  419d24:	00000000 	nop
  419d28:	8fdc0018 	lw	gp,24(s8)
  419d2c:	afc20030 	sw	v0,48(s8)
	if (!samesubnet(cc, epc))
  419d30:	8fc4002c 	lw	a0,44(s8)
  419d34:	8fc50030 	lw	a1,48(s8)
  419d38:	8f9983e8 	lw	t9,-31768(gp)
  419d3c:	00000000 	nop
  419d40:	0320f809 	jalr	t9
  419d44:	00000000 	nop
  419d48:	8fdc0018 	lw	gp,24(s8)
  419d4c:	14400003 	bnez	v0,419d5c <route_owner+0x148>
  419d50:	00000000 	nop
	    continue;
  419d54:	1000006d 	b	419f0c <route_owner+0x2f8>
  419d58:	00000000 	nop
	if (c->that.protocol != d->that.protocol)
  419d5c:	8fc20050 	lw	v0,80(s8)
  419d60:	00000000 	nop
  419d64:	9043017c 	lbu	v1,380(v0)
  419d68:	8fc20020 	lw	v0,32(s8)
  419d6c:	00000000 	nop
  419d70:	9042017c 	lbu	v0,380(v0)
  419d74:	00000000 	nop
  419d78:	10620003 	beq	v1,v0,419d88 <route_owner+0x174>
  419d7c:	00000000 	nop
	    continue;
  419d80:	10000062 	b	419f0c <route_owner+0x2f8>
  419d84:	00000000 	nop
	if (c->that.port != d->that.port)
  419d88:	8fc20050 	lw	v0,80(s8)
  419d8c:	00000000 	nop
  419d90:	9443017a 	lhu	v1,378(v0)
  419d94:	8fc20020 	lw	v0,32(s8)
  419d98:	00000000 	nop
  419d9c:	9442017a 	lhu	v0,378(v0)
  419da0:	00000000 	nop
  419da4:	10620003 	beq	v1,v0,419db4 <route_owner+0x1a0>
  419da8:	00000000 	nop
	    continue;
  419dac:	10000057 	b	419f0c <route_owner+0x2f8>
  419db0:	00000000 	nop
	passert(oriented(*d));
  419db4:	8fc20020 	lw	v0,32(s8)
  419db8:	00000000 	nop
  419dbc:	8c420198 	lw	v0,408(v0)
  419dc0:	00000000 	nop
  419dc4:	1440000e 	bnez	v0,419e00 <route_owner+0x1ec>
  419dc8:	00000000 	nop
  419dcc:	8f848020 	lw	a0,-32736(gp)
  419dd0:	00000000 	nop
  419dd4:	24845c68 	addiu	a0,a0,23656
  419dd8:	8f858020 	lw	a1,-32736(gp)
  419ddc:	00000000 	nop
  419de0:	24a554a4 	addiu	a1,a1,21668
  419de4:	2406075e 	li	a2,1886
  419de8:	8f998bb8 	lw	t9,-29768(gp)
  419dec:	00000000 	nop
  419df0:	0320f809 	jalr	t9
  419df4:	00000000 	nop
  419df8:	8fdc0018 	lw	gp,24(s8)
  419dfc:	00000000 	nop
	if (d->routing > bestro->routing)
  419e00:	8fc20020 	lw	v0,32(s8)
  419e04:	00000000 	nop
  419e08:	8c43019c 	lw	v1,412(v0)
  419e0c:	8fc20024 	lw	v0,36(s8)
  419e10:	00000000 	nop
  419e14:	8c42019c 	lw	v0,412(v0)
  419e18:	00000000 	nop
  419e1c:	0043102b 	sltu	v0,v0,v1
  419e20:	10400004 	beqz	v0,419e34 <route_owner+0x220>
  419e24:	00000000 	nop
	    bestro = d;
  419e28:	8fc20020 	lw	v0,32(s8)
  419e2c:	00000000 	nop
  419e30:	afc20024 	sw	v0,36(s8)
	if (d->routing < bestero->routing)
  419e34:	8fc20020 	lw	v0,32(s8)
  419e38:	00000000 	nop
  419e3c:	8c43019c 	lw	v1,412(v0)
  419e40:	8fc20028 	lw	v0,40(s8)
  419e44:	00000000 	nop
  419e48:	8c42019c 	lw	v0,412(v0)
  419e4c:	00000000 	nop
  419e50:	0062102b 	sltu	v0,v1,v0
  419e54:	10400003 	beqz	v0,419e64 <route_owner+0x250>
  419e58:	00000000 	nop
	    continue;
  419e5c:	1000002b 	b	419f0c <route_owner+0x2f8>
  419e60:	00000000 	nop
	if (!samesubnet(&c->this.client, &d->this.client))
  419e64:	8fc20050 	lw	v0,80(s8)
  419e68:	00000000 	nop
  419e6c:	24430090 	addiu	v1,v0,144
  419e70:	8fc20020 	lw	v0,32(s8)
  419e74:	00000000 	nop
  419e78:	24420090 	addiu	v0,v0,144
  419e7c:	00602021 	move	a0,v1
  419e80:	00402821 	move	a1,v0
  419e84:	8f9983e8 	lw	t9,-31768(gp)
  419e88:	00000000 	nop
  419e8c:	0320f809 	jalr	t9
  419e90:	00000000 	nop
  419e94:	8fdc0018 	lw	gp,24(s8)
  419e98:	14400003 	bnez	v0,419ea8 <route_owner+0x294>
  419e9c:	00000000 	nop
	    continue;
  419ea0:	1000001a 	b	419f0c <route_owner+0x2f8>
  419ea4:	00000000 	nop
	if (c->this.protocol != d->this.protocol)
  419ea8:	8fc20050 	lw	v0,80(s8)
  419eac:	00000000 	nop
  419eb0:	904300cc 	lbu	v1,204(v0)
  419eb4:	8fc20020 	lw	v0,32(s8)
  419eb8:	00000000 	nop
  419ebc:	904200cc 	lbu	v0,204(v0)
  419ec0:	00000000 	nop
  419ec4:	10620003 	beq	v1,v0,419ed4 <route_owner+0x2c0>
  419ec8:	00000000 	nop
	    continue;
  419ecc:	1000000f 	b	419f0c <route_owner+0x2f8>
  419ed0:	00000000 	nop
	if (c->this.port != d->this.port)
  419ed4:	8fc20050 	lw	v0,80(s8)
  419ed8:	00000000 	nop
  419edc:	944300ca 	lhu	v1,202(v0)
  419ee0:	8fc20020 	lw	v0,32(s8)
  419ee4:	00000000 	nop
  419ee8:	944200ca 	lhu	v0,202(v0)
  419eec:	00000000 	nop
  419ef0:	10620003 	beq	v1,v0,419f00 <route_owner+0x2ec>
  419ef4:	00000000 	nop
	    continue;
  419ef8:	10000004 	b	419f0c <route_owner+0x2f8>
  419efc:	00000000 	nop
	bestero = d;
  419f00:	8fc20020 	lw	v0,32(s8)
  419f04:	00000000 	nop
  419f08:	afc20028 	sw	v0,40(s8)
  419f0c:	8fc20020 	lw	v0,32(s8)
  419f10:	00000000 	nop
  419f14:	8c4201cc 	lw	v0,460(v0)
  419f18:	00000000 	nop
  419f1c:	afc20020 	sw	v0,32(s8)
  419f20:	1000ff6e 	b	419cdc <route_owner+0xc8>
  419f24:	00000000 	nop
   }

    DBG(DBG_CONTROL,
  419f28:	8f8284f8 	lw	v0,-31496(gp)
  419f2c:	00000000 	nop
  419f30:	8c420000 	lw	v0,0(v0)
  419f34:	00000000 	nop
  419f38:	30420010 	andi	v0,v0,0x10
  419f3c:	104000c6 	beqz	v0,41a258 <route_owner+0x644>
  419f40:	00000000 	nop
  419f44:	8f848678 	lw	a0,-31112(gp)
  419f48:	8fc20050 	lw	v0,80(s8)
  419f4c:	00000000 	nop
  419f50:	8c450194 	lw	a1,404(v0)
  419f54:	8f9984bc 	lw	t9,-31556(gp)
  419f58:	00000000 	nop
  419f5c:	0320f809 	jalr	t9
  419f60:	00000000 	nop
  419f64:	8fdc0018 	lw	gp,24(s8)
  419f68:	00408021 	move	s0,v0
  419f6c:	8f848564 	lw	a0,-31388(gp)
  419f70:	8fc20050 	lw	v0,80(s8)
  419f74:	00000000 	nop
  419f78:	8c45019c 	lw	a1,412(v0)
  419f7c:	8f9984bc 	lw	t9,-31556(gp)
  419f80:	00000000 	nop
  419f84:	0320f809 	jalr	t9
  419f88:	00000000 	nop
  419f8c:	8fdc0018 	lw	gp,24(s8)
  419f90:	00401821 	move	v1,v0
  419f94:	8f848020 	lw	a0,-32736(gp)
  419f98:	00000000 	nop
  419f9c:	24846134 	addiu	a0,a0,24884
  419fa0:	8fc20050 	lw	v0,80(s8)
  419fa4:	00000000 	nop
  419fa8:	8c450000 	lw	a1,0(v0)
  419fac:	02003021 	move	a2,s0
  419fb0:	00603821 	move	a3,v1
  419fb4:	8f9986dc 	lw	t9,-31012(gp)
  419fb8:	00000000 	nop
  419fbc:	0320f809 	jalr	t9
  419fc0:	00000000 	nop
  419fc4:	8fdc0018 	lw	gp,24(s8)
  419fc8:	afc20030 	sw	v0,48(s8)
  419fcc:	8fc20024 	lw	v0,36(s8)
  419fd0:	00000000 	nop
  419fd4:	8c42019c 	lw	v0,412(v0)
  419fd8:	00000000 	nop
  419fdc:	2c420002 	sltiu	v0,v0,2
  419fe0:	1040000d 	beqz	v0,41a018 <route_owner+0x404>
  419fe4:	00000000 	nop
  419fe8:	8f848020 	lw	a0,-32736(gp)
  419fec:	00000000 	nop
  419ff0:	24846150 	addiu	a0,a0,24912
  419ff4:	8fc50030 	lw	a1,48(s8)
  419ff8:	8f9986dc 	lw	t9,-31012(gp)
  419ffc:	00000000 	nop
  41a000:	0320f809 	jalr	t9
  41a004:	00000000 	nop
  41a008:	8fdc0018 	lw	gp,24(s8)
  41a00c:	afc20030 	sw	v0,48(s8)
  41a010:	10000034 	b	41a0e4 <route_owner+0x4d0>
  41a014:	00000000 	nop
  41a018:	8fc30024 	lw	v1,36(s8)
  41a01c:	8fc20050 	lw	v0,80(s8)
  41a020:	00000000 	nop
  41a024:	1462000d 	bne	v1,v0,41a05c <route_owner+0x448>
  41a028:	00000000 	nop
  41a02c:	8f848020 	lw	a0,-32736(gp)
  41a030:	00000000 	nop
  41a034:	24846158 	addiu	a0,a0,24920
  41a038:	8fc50030 	lw	a1,48(s8)
  41a03c:	8f9986dc 	lw	t9,-31012(gp)
  41a040:	00000000 	nop
  41a044:	0320f809 	jalr	t9
  41a048:	00000000 	nop
  41a04c:	8fdc0018 	lw	gp,24(s8)
  41a050:	afc20030 	sw	v0,48(s8)
  41a054:	10000023 	b	41a0e4 <route_owner+0x4d0>
  41a058:	00000000 	nop
  41a05c:	8f848678 	lw	a0,-31112(gp)
  41a060:	8fc20024 	lw	v0,36(s8)
  41a064:	00000000 	nop
  41a068:	8c450194 	lw	a1,404(v0)
  41a06c:	8f9984bc 	lw	t9,-31556(gp)
  41a070:	00000000 	nop
  41a074:	0320f809 	jalr	t9
  41a078:	00000000 	nop
  41a07c:	8fdc0018 	lw	gp,24(s8)
  41a080:	00408021 	move	s0,v0
  41a084:	8f848564 	lw	a0,-31388(gp)
  41a088:	8fc20024 	lw	v0,36(s8)
  41a08c:	00000000 	nop
  41a090:	8c45019c 	lw	a1,412(v0)
  41a094:	8f9984bc 	lw	t9,-31556(gp)
  41a098:	00000000 	nop
  41a09c:	0320f809 	jalr	t9
  41a0a0:	00000000 	nop
  41a0a4:	8fdc0018 	lw	gp,24(s8)
  41a0a8:	afa20010 	sw	v0,16(sp)
  41a0ac:	8f848020 	lw	a0,-32736(gp)
  41a0b0:	00000000 	nop
  41a0b4:	24846160 	addiu	a0,a0,24928
  41a0b8:	8fc50030 	lw	a1,48(s8)
  41a0bc:	8fc20024 	lw	v0,36(s8)
  41a0c0:	00000000 	nop
  41a0c4:	8c460000 	lw	a2,0(v0)
  41a0c8:	02003821 	move	a3,s0
  41a0cc:	8f9986dc 	lw	t9,-31012(gp)
  41a0d0:	00000000 	nop
  41a0d4:	0320f809 	jalr	t9
  41a0d8:	00000000 	nop
  41a0dc:	8fdc0018 	lw	gp,24(s8)
  41a0e0:	afc20030 	sw	v0,48(s8)
  41a0e4:	8fc20054 	lw	v0,84(s8)
  41a0e8:	00000000 	nop
  41a0ec:	10400050 	beqz	v0,41a230 <route_owner+0x61c>
  41a0f0:	00000000 	nop
  41a0f4:	8f848020 	lw	a0,-32736(gp)
  41a0f8:	00000000 	nop
  41a0fc:	24846170 	addiu	a0,a0,24944
  41a100:	8fc50030 	lw	a1,48(s8)
  41a104:	8f9986dc 	lw	t9,-31012(gp)
  41a108:	00000000 	nop
  41a10c:	0320f809 	jalr	t9
  41a110:	00000000 	nop
  41a114:	8fdc0018 	lw	gp,24(s8)
  41a118:	afc20030 	sw	v0,48(s8)
  41a11c:	8fc20028 	lw	v0,40(s8)
  41a120:	00000000 	nop
  41a124:	8c42019c 	lw	v0,412(v0)
  41a128:	00000000 	nop
  41a12c:	1440000d 	bnez	v0,41a164 <route_owner+0x550>
  41a130:	00000000 	nop
  41a134:	8f848020 	lw	a0,-32736(gp)
  41a138:	00000000 	nop
  41a13c:	24846150 	addiu	a0,a0,24912
  41a140:	8fc50030 	lw	a1,48(s8)
  41a144:	8f9986dc 	lw	t9,-31012(gp)
  41a148:	00000000 	nop
  41a14c:	0320f809 	jalr	t9
  41a150:	00000000 	nop
  41a154:	8fdc0018 	lw	gp,24(s8)
  41a158:	afc20030 	sw	v0,48(s8)
  41a15c:	10000034 	b	41a230 <route_owner+0x61c>
  41a160:	00000000 	nop
  41a164:	8fc30028 	lw	v1,40(s8)
  41a168:	8fc20050 	lw	v0,80(s8)
  41a16c:	00000000 	nop
  41a170:	1462000d 	bne	v1,v0,41a1a8 <route_owner+0x594>
  41a174:	00000000 	nop
  41a178:	8f848020 	lw	a0,-32736(gp)
  41a17c:	00000000 	nop
  41a180:	24846158 	addiu	a0,a0,24920
  41a184:	8fc50030 	lw	a1,48(s8)
  41a188:	8f9986dc 	lw	t9,-31012(gp)
  41a18c:	00000000 	nop
  41a190:	0320f809 	jalr	t9
  41a194:	00000000 	nop
  41a198:	8fdc0018 	lw	gp,24(s8)
  41a19c:	afc20030 	sw	v0,48(s8)
  41a1a0:	10000023 	b	41a230 <route_owner+0x61c>
  41a1a4:	00000000 	nop
  41a1a8:	8f848678 	lw	a0,-31112(gp)
  41a1ac:	8fc20028 	lw	v0,40(s8)
  41a1b0:	00000000 	nop
  41a1b4:	8c450194 	lw	a1,404(v0)
  41a1b8:	8f9984bc 	lw	t9,-31556(gp)
  41a1bc:	00000000 	nop
  41a1c0:	0320f809 	jalr	t9
  41a1c4:	00000000 	nop
  41a1c8:	8fdc0018 	lw	gp,24(s8)
  41a1cc:	00408021 	move	s0,v0
  41a1d0:	8f848564 	lw	a0,-31388(gp)
  41a1d4:	8fc20028 	lw	v0,40(s8)
  41a1d8:	00000000 	nop
  41a1dc:	8c45019c 	lw	a1,412(v0)
  41a1e0:	8f9984bc 	lw	t9,-31556(gp)
  41a1e4:	00000000 	nop
  41a1e8:	0320f809 	jalr	t9
  41a1ec:	00000000 	nop
  41a1f0:	8fdc0018 	lw	gp,24(s8)
  41a1f4:	afa20010 	sw	v0,16(sp)
  41a1f8:	8f848020 	lw	a0,-32736(gp)
  41a1fc:	00000000 	nop
  41a200:	24846160 	addiu	a0,a0,24928
  41a204:	8fc50030 	lw	a1,48(s8)
  41a208:	8fc20028 	lw	v0,40(s8)
  41a20c:	00000000 	nop
  41a210:	8c460000 	lw	a2,0(v0)
  41a214:	02003821 	move	a3,s0
  41a218:	8f9986dc 	lw	t9,-31012(gp)
  41a21c:	00000000 	nop
  41a220:	0320f809 	jalr	t9
  41a224:	00000000 	nop
  41a228:	8fdc0018 	lw	gp,24(s8)
  41a22c:	afc20030 	sw	v0,48(s8)
  41a230:	8f848020 	lw	a0,-32736(gp)
  41a234:	00000000 	nop
  41a238:	24846184 	addiu	a0,a0,24964
  41a23c:	8fc50030 	lw	a1,48(s8)
  41a240:	8f9983b8 	lw	t9,-31816(gp)
  41a244:	00000000 	nop
  41a248:	0320f809 	jalr	t9
  41a24c:	00000000 	nop
  41a250:	8fdc0018 	lw	gp,24(s8)
  41a254:	00000000 	nop
	{
	    err_t m = builddiag("route owner of \"%s\" %s %s:"
		, c->name
		, enum_name(&connection_kind_names, c->kind)
		, enum_name(&routing_story, c->routing));

	    if (!routed(bestro->routing))
		m = builddiag("%s NULL", m);
	    else if (bestro == c)
		m = builddiag("%s self", m);
	    else
		m = builddiag("%s \"%s\" %s %s", m
		    , bestro->name
		    , enum_name(&connection_kind_names, bestro->kind)
		    , enum_name(&routing_story, bestro->routing));

	    if (erop != NULL)
	    {
		m = builddiag("%s; eroute owner:", m);
		if (!erouted(bestero->routing))
		    m = builddiag("%s NULL", m);
		else if (bestero == c)
		    m = builddiag("%s self", m);
		else
		    m = builddiag("%s \"%s\" %s %s", m
			, bestero->name
			, enum_name(&connection_kind_names, bestero->kind)
			, enum_name(&routing_story, bestero->routing));
	    }

	    DBG_log("%s", m);
 	});
    if (erop != NULL)
  41a258:	8fc20054 	lw	v0,84(s8)
  41a25c:	00000000 	nop
  41a260:	10400014 	beqz	v0,41a2b4 <route_owner+0x6a0>
  41a264:	00000000 	nop
	*erop = erouted(bestero->routing)? bestero : NULL;
  41a268:	8fc20054 	lw	v0,84(s8)
  41a26c:	00000000 	nop
  41a270:	afc20034 	sw	v0,52(s8)
  41a274:	8fc20028 	lw	v0,40(s8)
  41a278:	00000000 	nop
  41a27c:	8c42019c 	lw	v0,412(v0)
  41a280:	00000000 	nop
  41a284:	10400006 	beqz	v0,41a2a0 <route_owner+0x68c>
  41a288:	00000000 	nop
  41a28c:	8fc30028 	lw	v1,40(s8)
  41a290:	00000000 	nop
  41a294:	afc30038 	sw	v1,56(s8)
  41a298:	10000002 	b	41a2a4 <route_owner+0x690>
  41a29c:	00000000 	nop
  41a2a0:	afc00038 	sw	zero,56(s8)
  41a2a4:	8fc30038 	lw	v1,56(s8)
  41a2a8:	8fc20034 	lw	v0,52(s8)
  41a2ac:	00000000 	nop
  41a2b0:	ac430000 	sw	v1,0(v0)
    return routed(bestro->routing)? bestro : NULL;
  41a2b4:	8fc20024 	lw	v0,36(s8)
  41a2b8:	00000000 	nop
  41a2bc:	8c42019c 	lw	v0,412(v0)
  41a2c0:	00000000 	nop
  41a2c4:	2c420002 	sltiu	v0,v0,2
  41a2c8:	14400006 	bnez	v0,41a2e4 <route_owner+0x6d0>
  41a2cc:	00000000 	nop
  41a2d0:	8fc20024 	lw	v0,36(s8)
  41a2d4:	00000000 	nop
  41a2d8:	afc2003c 	sw	v0,60(s8)
  41a2dc:	10000002 	b	41a2e8 <route_owner+0x6d4>
  41a2e0:	00000000 	nop
  41a2e4:	afc0003c 	sw	zero,60(s8)
  41a2e8:	8fc2003c 	lw	v0,60(s8)
  41a2ec:	00000000 	nop
}
  41a2f0:	03c0e821 	move	sp,s8
  41a2f4:	8fbf004c 	lw	ra,76(sp)
  41a2f8:	8fbe0048 	lw	s8,72(sp)
  41a2fc:	8fb00040 	lw	s0,64(sp)
  41a300:	27bd0050 	addiu	sp,sp,80
  41a304:	03e00008 	jr	ra
  41a308:	00000000 	nop

0041a30c <shunt_owner>:
  41a30c:	3c1c0fbf 	lui	gp,0xfbf
  41a310:	279c2664 	addiu	gp,gp,9828
  41a314:	0399e021 	addu	gp,gp,t9
  41a318:	27bdffd0 	addiu	sp,sp,-48
  41a31c:	afbc0010 	sw	gp,16(sp)
  41a320:	afbf0028 	sw	ra,40(sp)
  41a324:	afbe0024 	sw	s8,36(sp)
  41a328:	afbc0020 	sw	gp,32(sp)
  41a32c:	03a0f021 	move	s8,sp
  41a330:	afc40030 	sw	a0,48(s8)
  41a334:	afc50034 	sw	a1,52(s8)

/* Find a connection that owns the shunt eroute between subnets.
 * There ought to be only one.
 * This might get to be a bottleneck -- try hashing if it does.
 */
struct connection *
shunt_owner(const ip_subnet *ours, const ip_subnet *his)
{
    struct connection *c;

    for (c = connections; c != NULL; c = c->ac_next)
  41a338:	8f828018 	lw	v0,-32744(gp)
  41a33c:	00000000 	nop
  41a340:	244206f0 	addiu	v0,v0,1776
  41a344:	8c420000 	lw	v0,0(v0)
  41a348:	00000000 	nop
  41a34c:	afc20018 	sw	v0,24(s8)
  41a350:	8fc20018 	lw	v0,24(s8)
  41a354:	00000000 	nop
  41a358:	14400003 	bnez	v0,41a368 <shunt_owner+0x5c>
  41a35c:	00000000 	nop
  41a360:	1000002e 	b	41a41c <shunt_owner+0x110>
  41a364:	00000000 	nop
    {
	if (shunt_erouted(c->routing)
	&& samesubnet(ours, &c->this.client)
	&& samesubnet(his, &c->that.client))
  41a368:	8fc20018 	lw	v0,24(s8)
  41a36c:	00000000 	nop
  41a370:	8c42019c 	lw	v0,412(v0)
  41a374:	00000000 	nop
  41a378:	10400021 	beqz	v0,41a400 <shunt_owner+0xf4>
  41a37c:	00000000 	nop
  41a380:	8fc20018 	lw	v0,24(s8)
  41a384:	00000000 	nop
  41a388:	8c43019c 	lw	v1,412(v0)
  41a38c:	24020005 	li	v0,5
  41a390:	1062001b 	beq	v1,v0,41a400 <shunt_owner+0xf4>
  41a394:	00000000 	nop
  41a398:	8fc20018 	lw	v0,24(s8)
  41a39c:	00000000 	nop
  41a3a0:	24420090 	addiu	v0,v0,144
  41a3a4:	8fc40030 	lw	a0,48(s8)
  41a3a8:	00402821 	move	a1,v0
  41a3ac:	8f9983e8 	lw	t9,-31768(gp)
  41a3b0:	00000000 	nop
  41a3b4:	0320f809 	jalr	t9
  41a3b8:	00000000 	nop
  41a3bc:	8fdc0010 	lw	gp,16(s8)
  41a3c0:	1040000f 	beqz	v0,41a400 <shunt_owner+0xf4>
  41a3c4:	00000000 	nop
  41a3c8:	8fc20018 	lw	v0,24(s8)
  41a3cc:	00000000 	nop
  41a3d0:	24420140 	addiu	v0,v0,320
  41a3d4:	8fc40034 	lw	a0,52(s8)
  41a3d8:	00402821 	move	a1,v0
  41a3dc:	8f9983e8 	lw	t9,-31768(gp)
  41a3e0:	00000000 	nop
  41a3e4:	0320f809 	jalr	t9
  41a3e8:	00000000 	nop
  41a3ec:	8fdc0010 	lw	gp,16(s8)
  41a3f0:	10400003 	beqz	v0,41a400 <shunt_owner+0xf4>
  41a3f4:	00000000 	nop
	    break;
  41a3f8:	10000008 	b	41a41c <shunt_owner+0x110>
  41a3fc:	00000000 	nop
  41a400:	8fc20018 	lw	v0,24(s8)
  41a404:	00000000 	nop
  41a408:	8c4201cc 	lw	v0,460(v0)
  41a40c:	00000000 	nop
  41a410:	afc20018 	sw	v0,24(s8)
  41a414:	1000ffce 	b	41a350 <shunt_owner+0x44>
  41a418:	00000000 	nop
    }
    return c;
  41a41c:	8fc20018 	lw	v0,24(s8)
  41a420:	00000000 	nop
}
  41a424:	03c0e821 	move	sp,s8
  41a428:	8fbf0028 	lw	ra,40(sp)
  41a42c:	8fbe0024 	lw	s8,36(sp)
  41a430:	27bd0030 	addiu	sp,sp,48
  41a434:	03e00008 	jr	ra
  41a438:	00000000 	nop

0041a43c <find_host_connection>:
  41a43c:	3c1c0fbf 	lui	gp,0xfbf
  41a440:	279c2534 	addiu	gp,gp,9524
  41a444:	0399e021 	addu	gp,gp,t9
  41a448:	27bdffd0 	addiu	sp,sp,-48
  41a44c:	afbc0010 	sw	gp,16(sp)
  41a450:	afbf0028 	sw	ra,40(sp)
  41a454:	afbe0024 	sw	s8,36(sp)
  41a458:	afbc0020 	sw	gp,32(sp)
  41a45c:	03a0f021 	move	s8,sp
  41a460:	afc40030 	sw	a0,48(s8)
  41a464:	00a01821 	move	v1,a1
  41a468:	afc60038 	sw	a2,56(s8)
  41a46c:	00e01021 	move	v0,a3
  41a470:	a7c30018 	sh	v1,24(s8)
  41a474:	a7c2001a 	sh	v0,26(s8)

/* Find some connection with this pair of hosts.
 * We don't know enough to chose amongst those available.
 * ??? no longer usefully different from find_host_pair_connections
 */
struct connection *
find_host_connection(const ip_address *me, u_int16_t my_port
, const ip_address *him, u_int16_t his_port)
{
    return find_host_pair_connections(me, my_port, him, his_port);
  41a478:	97c20018 	lhu	v0,24(s8)
  41a47c:	97c3001a 	lhu	v1,26(s8)
  41a480:	8fc40030 	lw	a0,48(s8)
  41a484:	00402821 	move	a1,v0
  41a488:	8fc60038 	lw	a2,56(s8)
  41a48c:	00603821 	move	a3,v1
  41a490:	8f998024 	lw	t9,-32732(gp)
  41a494:	00000000 	nop
  41a498:	27392a64 	addiu	t9,t9,10852
  41a49c:	00000000 	nop
  41a4a0:	0320f809 	jalr	t9
  41a4a4:	00000000 	nop
  41a4a8:	8fdc0010 	lw	gp,16(s8)
  41a4ac:	00000000 	nop
}
  41a4b0:	03c0e821 	move	sp,s8
  41a4b4:	8fbf0028 	lw	ra,40(sp)
  41a4b8:	8fbe0024 	lw	s8,36(sp)
  41a4bc:	27bd0030 	addiu	sp,sp,48
  41a4c0:	03e00008 	jr	ra
  41a4c4:	00000000 	nop

0041a4c8 <refine_host_connection>:
  41a4c8:	3c1c0fbf 	lui	gp,0xfbf
  41a4cc:	279c24a8 	addiu	gp,gp,9384
  41a4d0:	0399e021 	addu	gp,gp,t9
  41a4d4:	27bdff48 	addiu	sp,sp,-184
  41a4d8:	afbc0018 	sw	gp,24(sp)
  41a4dc:	afbf00b0 	sw	ra,176(sp)
  41a4e0:	afbe00ac 	sw	s8,172(sp)
  41a4e4:	afbc00a8 	sw	gp,168(sp)
  41a4e8:	03a0f021 	move	s8,sp
  41a4ec:	afc400b8 	sw	a0,184(s8)
  41a4f0:	afc500bc 	sw	a1,188(s8)
  41a4f4:	afc600c0 	sw	a2,192(s8)
  41a4f8:	afc700c4 	sw	a3,196(s8)

/* given an up-until-now satisfactory connection, find the best connection
 * now that we just got the Phase 1 Id Payload from the peer.
 *
 * Comments in the code describe the (tricky!) matching criteria.
 * Although this routine could handle the initiator case,
 * it isn't currently called in this case.
 * If it were, it could "upgrade" an Opportunistic Connection
 * to a Road Warrior Connection if a suitable Peer ID were found.
 *
 * In RFC 2409 "The Internet Key Exchange (IKE)",
 * in 5.1 "IKE Phase 1 Authenticated With Signatures", describing Main
 * Mode:
 *
 *         Initiator                          Responder
 *        -----------                        -----------
 *         HDR, SA                     -->
 *                                     <--    HDR, SA
 *         HDR, KE, Ni                 -->
 *                                     <--    HDR, KE, Nr
 *         HDR*, IDii, [ CERT, ] SIG_I -->
 *                                     <--    HDR*, IDir, [ CERT, ] SIG_R
 *
 * In 5.4 "Phase 1 Authenticated With a Pre-Shared Key":
 *
 *               HDR, SA             -->
 *                                   <--    HDR, SA
 *               HDR, KE, Ni         -->
 *                                   <--    HDR, KE, Nr
 *               HDR*, IDii, HASH_I  -->
 *                                   <--    HDR*, IDir, HASH_R
 *
 * refine_host_connection could be called in two case:
 *
 * - the Responder receives the IDii payload:
 *   + [PSK] after using PSK to decode this message
 *   + before sending its IDir payload
 *   + before using its ID in HASH_R computation
 *   + [DSig] before using its private key to sign SIG_R
 *   + before using the Initiator's ID in HASH_I calculation
 *   + [DSig] before using the Initiator's public key to check SIG_I
 *
 * - the Initiator receives the IDir payload:
 *   + [PSK] after using PSK to encode previous message and decode this message
 *   + after sending its IDii payload
 *   + after using its ID in HASH_I computation
 *   + [DSig] after using its private key to sign SIG_I
 *   + before using the Responder's ID to compute HASH_R
 *   + [DSig] before using Responder's public key to check SIG_R
 *
 * refine_host_connection can choose a different connection, as long as
 * nothing already used is changed.
 *
 * In the Initiator case, the particular connection might have been
 * specified by whatever provoked Pluto to initiate.  For example:
 *	whack --initiate connection-name
 * The advantages of switching connections when we're the Initiator seem
 * less important than the disadvantages, so after FreeS/WAN 1.9, we
 * stopped doing this.
 */
struct connection *
refine_host_connection(const struct state *st, const struct id *peer_id
, bool initiator, bool aggrmode)
{
    struct connection *c = st->st_connection;
  41a4fc:	8fc200b8 	lw	v0,184(s8)
  41a500:	00000000 	nop
  41a504:	8c42000c 	lw	v0,12(v0)
  41a508:	00000000 	nop
  41a50c:	afc20020 	sw	v0,32(s8)
    u_int16_t auth = st->st_oakley.auth;
  41a510:	8fc200b8 	lw	v0,184(s8)
  41a514:	00000000 	nop
  41a518:	9442002c 	lhu	v0,44(v0)
  41a51c:	00000000 	nop
  41a520:	a7c20024 	sh	v0,36(s8)
    struct connection *d;
    struct connection *best_found = NULL;
  41a524:	afc0002c 	sw	zero,44(s8)
    lset_t auth_policy;
    lset_t p1mode_policy = aggrmode ? POLICY_AGGRESSIVE : LEMPTY;
  41a528:	8fc200c4 	lw	v0,196(s8)
  41a52c:	00000000 	nop
  41a530:	10400007 	beqz	v0,41a550 <refine_host_connection+0x88>
  41a534:	00000000 	nop
  41a538:	24020000 	li	v0,0
  41a53c:	24031000 	li	v1,4096
  41a540:	afc20078 	sw	v0,120(s8)
  41a544:	afc3007c 	sw	v1,124(s8)
  41a548:	10000005 	b	41a560 <refine_host_connection+0x98>
  41a54c:	00000000 	nop
  41a550:	00001021 	move	v0,zero
  41a554:	00001821 	move	v1,zero
  41a558:	afc20078 	sw	v0,120(s8)
  41a55c:	afc3007c 	sw	v1,124(s8)
  41a560:	8fc20078 	lw	v0,120(s8)
  41a564:	8fc3007c 	lw	v1,124(s8)
  41a568:	afc20038 	sw	v0,56(s8)
  41a56c:	afc3003c 	sw	v1,60(s8)
    const chunk_t *psk;
    struct pubkeyrec *p;
    const struct RSA_private_key *my_RSA_pri = NULL;
  41a570:	afc00048 	sw	zero,72(s8)
    bool wcpip;	/* wildcard Peer IP? */
    chunk_t peer_ca = empty_chunk;
  41a574:	8f828708 	lw	v0,-30968(gp)
  41a578:	00000000 	nop
  41a57c:	8c420000 	lw	v0,0(v0)
  41a580:	00000000 	nop
  41a584:	afc20050 	sw	v0,80(s8)
  41a588:	8f828708 	lw	v0,-30968(gp)
  41a58c:	00000000 	nop
  41a590:	8c420004 	lw	v0,4(v0)
  41a594:	00000000 	nop
  41a598:	afc20054 	sw	v0,84(s8)
    int wildcards, best_wildcards;
    int our_pathlen, best_our_pathlen, peer_pathlen, best_peer_pathlen;


    /* retrieve the peer's CA key */
    for (p = pubkeys; p != NULL; p = p->next)
  41a59c:	8f8287a8 	lw	v0,-30808(gp)
  41a5a0:	00000000 	nop
  41a5a4:	8c420000 	lw	v0,0(v0)
  41a5a8:	00000000 	nop
  41a5ac:	afc20044 	sw	v0,68(s8)
  41a5b0:	8fc20044 	lw	v0,68(s8)
  41a5b4:	00000000 	nop
  41a5b8:	14400003 	bnez	v0,41a5c8 <refine_host_connection+0x100>
  41a5bc:	00000000 	nop
  41a5c0:	10000021 	b	41a648 <refine_host_connection+0x180>
  41a5c4:	00000000 	nop
     {
       if (p->alg == PUBKEY_ALG_RSA && same_id(peer_id, &p->id))
  41a5c8:	8fc20044 	lw	v0,68(s8)
  41a5cc:	00000000 	nop
  41a5d0:	8c43003c 	lw	v1,60(v0)
  41a5d4:	24020001 	li	v0,1
  41a5d8:	14620014 	bne	v1,v0,41a62c <refine_host_connection+0x164>
  41a5dc:	00000000 	nop
  41a5e0:	8fc400bc 	lw	a0,188(s8)
  41a5e4:	8fc50044 	lw	a1,68(s8)
  41a5e8:	8f9980e4 	lw	t9,-32540(gp)
  41a5ec:	00000000 	nop
  41a5f0:	0320f809 	jalr	t9
  41a5f4:	00000000 	nop
  41a5f8:	8fdc0018 	lw	gp,24(s8)
  41a5fc:	1040000b 	beqz	v0,41a62c <refine_host_connection+0x164>
  41a600:	00000000 	nop
       {
           peer_ca = p->issuer;
  41a604:	8fc20044 	lw	v0,68(s8)
  41a608:	00000000 	nop
  41a60c:	8c430030 	lw	v1,48(v0)
  41a610:	00000000 	nop
  41a614:	afc30050 	sw	v1,80(s8)
  41a618:	8c420034 	lw	v0,52(v0)
  41a61c:	00000000 	nop
  41a620:	afc20054 	sw	v0,84(s8)
           break;
  41a624:	10000008 	b	41a648 <refine_host_connection+0x180>
  41a628:	00000000 	nop
  41a62c:	8fc20044 	lw	v0,68(s8)
  41a630:	00000000 	nop
  41a634:	8c420068 	lw	v0,104(v0)
  41a638:	00000000 	nop
  41a63c:	afc20044 	sw	v0,68(s8)
  41a640:	1000ffdb 	b	41a5b0 <refine_host_connection+0xe8>
  41a644:	00000000 	nop
       }
     }
 
     if (same_id(&c->that.id, peer_id)
     && trusted_ca(peer_ca, c->that.ca, &peer_pathlen)
	     && peer_pathlen == 0
	     && match_requested_ca(c->requested_ca, c->this.ca, &our_pathlen)
	     && our_pathlen == 0)
  41a648:	8fc20020 	lw	v0,32(s8)
  41a64c:	00000000 	nop
  41a650:	244200e0 	addiu	v0,v0,224
  41a654:	00402021 	move	a0,v0
  41a658:	8fc500bc 	lw	a1,188(s8)
  41a65c:	8f9980e4 	lw	t9,-32540(gp)
  41a660:	00000000 	nop
  41a664:	0320f809 	jalr	t9
  41a668:	00000000 	nop
  41a66c:	8fdc0018 	lw	gp,24(s8)
  41a670:	10400028 	beqz	v0,41a714 <refine_host_connection+0x24c>
  41a674:	00000000 	nop
  41a678:	8fc20020 	lw	v0,32(s8)
  41a67c:	27c30068 	addiu	v1,s8,104
  41a680:	afa30010 	sw	v1,16(sp)
  41a684:	8fc40050 	lw	a0,80(s8)
  41a688:	8fc50054 	lw	a1,84(s8)
  41a68c:	8c460184 	lw	a2,388(v0)
  41a690:	8c470188 	lw	a3,392(v0)
  41a694:	8f9989fc 	lw	t9,-30212(gp)
  41a698:	00000000 	nop
  41a69c:	0320f809 	jalr	t9
  41a6a0:	00000000 	nop
  41a6a4:	8fdc0018 	lw	gp,24(s8)
  41a6a8:	1040001a 	beqz	v0,41a714 <refine_host_connection+0x24c>
  41a6ac:	00000000 	nop
  41a6b0:	8fc20068 	lw	v0,104(s8)
  41a6b4:	00000000 	nop
  41a6b8:	14400016 	bnez	v0,41a714 <refine_host_connection+0x24c>
  41a6bc:	00000000 	nop
  41a6c0:	8fc20020 	lw	v0,32(s8)
  41a6c4:	8fc30020 	lw	v1,32(s8)
  41a6c8:	00000000 	nop
  41a6cc:	8c6401d0 	lw	a0,464(v1)
  41a6d0:	8c4500d4 	lw	a1,212(v0)
  41a6d4:	8c4600d8 	lw	a2,216(v0)
  41a6d8:	27c70060 	addiu	a3,s8,96
  41a6dc:	8f9989c0 	lw	t9,-30272(gp)
  41a6e0:	00000000 	nop
  41a6e4:	0320f809 	jalr	t9
  41a6e8:	00000000 	nop
  41a6ec:	8fdc0018 	lw	gp,24(s8)
  41a6f0:	10400008 	beqz	v0,41a714 <refine_host_connection+0x24c>
  41a6f4:	00000000 	nop
  41a6f8:	8fc20060 	lw	v0,96(s8)
  41a6fc:	00000000 	nop
  41a700:	14400004 	bnez	v0,41a714 <refine_host_connection+0x24c>
  41a704:	00000000 	nop
	
	return c;	/* peer ID matches current connection -- look no further */
  41a708:	8fc20020 	lw	v0,32(s8)
  41a70c:	100001b5 	b	41ade4 <refine_host_connection+0x91c>
  41a710:	00000000 	nop

    switch (auth)
  41a714:	97c30024 	lhu	v1,36(s8)
  41a718:	00000000 	nop
  41a71c:	afc30090 	sw	v1,144(s8)
  41a720:	24020001 	li	v0,1
  41a724:	8fc30090 	lw	v1,144(s8)
  41a728:	00000000 	nop
  41a72c:	10620013 	beq	v1,v0,41a77c <refine_host_connection+0x2b4>
  41a730:	00000000 	nop
  41a734:	24020003 	li	v0,3
  41a738:	8fc30090 	lw	v1,144(s8)
  41a73c:	00000000 	nop
  41a740:	10620026 	beq	v1,v0,41a7dc <refine_host_connection+0x314>
  41a744:	00000000 	nop
    {
    case OAKLEY_PRESHARED_KEY:
	auth_policy = POLICY_PSK;
	if (aggrmode) break;
	psk = get_preshared_secret(c);
	/* It should be virtually impossible to fail to find PSK:
	 * we just used it to decode the current message!
	 */
	if (psk == NULL)
	    return NULL;	/* cannot determine PSK! */
	break;

    case OAKLEY_RSA_SIG:
	auth_policy = POLICY_RSASIG;
	if (initiator)
	{
	    /* at this point, we've committed to our RSA private key:
	     * we used it in our previous message.
	     */
	    my_RSA_pri = get_RSA_private_key(c);
	    if (my_RSA_pri == NULL)
		return NULL;	/* cannot determine my RSA private key! */
	}
	break;

    default:
	impossible();
  41a748:	8f848020 	lw	a0,-32736(gp)
  41a74c:	00000000 	nop
  41a750:	24846188 	addiu	a0,a0,24968
  41a754:	8f858020 	lw	a1,-32736(gp)
  41a758:	00000000 	nop
  41a75c:	24a554a4 	addiu	a1,a1,21668
  41a760:	2406082b 	li	a2,2091
  41a764:	8f998bb8 	lw	t9,-29768(gp)
  41a768:	00000000 	nop
  41a76c:	0320f809 	jalr	t9
  41a770:	00000000 	nop
  41a774:	8fdc0018 	lw	gp,24(s8)
  41a778:	00000000 	nop
  41a77c:	24020000 	li	v0,0
  41a780:	24030001 	li	v1,1
  41a784:	afc20030 	sw	v0,48(s8)
  41a788:	afc30034 	sw	v1,52(s8)
  41a78c:	8fc200c4 	lw	v0,196(s8)
  41a790:	00000000 	nop
  41a794:	10400003 	beqz	v0,41a7a4 <refine_host_connection+0x2dc>
  41a798:	00000000 	nop
  41a79c:	10000025 	b	41a834 <refine_host_connection+0x36c>
  41a7a0:	00000000 	nop
  41a7a4:	8fc40020 	lw	a0,32(s8)
  41a7a8:	8f9985e0 	lw	t9,-31264(gp)
  41a7ac:	00000000 	nop
  41a7b0:	0320f809 	jalr	t9
  41a7b4:	00000000 	nop
  41a7b8:	8fdc0018 	lw	gp,24(s8)
  41a7bc:	afc20040 	sw	v0,64(s8)
  41a7c0:	8fc20040 	lw	v0,64(s8)
  41a7c4:	00000000 	nop
  41a7c8:	1440001a 	bnez	v0,41a834 <refine_host_connection+0x36c>
  41a7cc:	00000000 	nop
  41a7d0:	00001021 	move	v0,zero
  41a7d4:	10000183 	b	41ade4 <refine_host_connection+0x91c>
  41a7d8:	00000000 	nop
  41a7dc:	24020000 	li	v0,0
  41a7e0:	24030002 	li	v1,2
  41a7e4:	afc20030 	sw	v0,48(s8)
  41a7e8:	afc30034 	sw	v1,52(s8)
  41a7ec:	8fc200c0 	lw	v0,192(s8)
  41a7f0:	00000000 	nop
  41a7f4:	1040000f 	beqz	v0,41a834 <refine_host_connection+0x36c>
  41a7f8:	00000000 	nop
  41a7fc:	8fc40020 	lw	a0,32(s8)
  41a800:	8f998704 	lw	t9,-30972(gp)
  41a804:	00000000 	nop
  41a808:	0320f809 	jalr	t9
  41a80c:	00000000 	nop
  41a810:	8fdc0018 	lw	gp,24(s8)
  41a814:	afc20048 	sw	v0,72(s8)
  41a818:	8fc20048 	lw	v0,72(s8)
  41a81c:	00000000 	nop
  41a820:	14400004 	bnez	v0,41a834 <refine_host_connection+0x36c>
  41a824:	00000000 	nop
  41a828:	00001021 	move	v0,zero
  41a82c:	1000016d 	b	41ade4 <refine_host_connection+0x91c>
  41a830:	00000000 	nop
    }

    /* The current connection won't do: search for one that will.
     * First search for one with the same pair of hosts.
     * If that fails, search for a suitable Road Warrior or Opportunistic
     * connection (i.e. wildcard peer IP).
     * We need to match:
     * - peer_id (slightly complicated by instantiation)
     * - if PSK auth, the key must not change (we used it to decode message)
     * - policy-as-used must be acceptable to new connection
     * - if initiator, also:
     *   + our ID must not change (we sent it in previous message)
     *   + our RSA key must not change (we used in in previous message)
     */
    d = c->host_pair->connections;
  41a834:	8fc20020 	lw	v0,32(s8)
  41a838:	00000000 	nop
  41a83c:	8c4201c4 	lw	v0,452(v0)
  41a840:	00000000 	nop
  41a844:	8c420044 	lw	v0,68(v0)
  41a848:	00000000 	nop
  41a84c:	afc20028 	sw	v0,40(s8)
    for (wcpip = FALSE; ; wcpip = TRUE)
  41a850:	afc0004c 	sw	zero,76(s8)
    {
	for (; d != NULL; d = d->hp_next)
  41a854:	8fc20028 	lw	v0,40(s8)
  41a858:	00000000 	nop
  41a85c:	14400003 	bnez	v0,41a86c <refine_host_connection+0x3a4>
  41a860:	00000000 	nop
  41a864:	10000140 	b	41ad68 <refine_host_connection+0x8a0>
  41a868:	00000000 	nop
	{
	    bool match;
#ifdef NAT_TRAVERSAL
	    if ((c->that.host_port != d->that.host_port) &&
		(d->kind == CK_INSTANCE))
  41a86c:	8fc20020 	lw	v0,32(s8)
  41a870:	00000000 	nop
  41a874:	94430178 	lhu	v1,376(v0)
  41a878:	8fc20028 	lw	v0,40(s8)
  41a87c:	00000000 	nop
  41a880:	94420178 	lhu	v0,376(v0)
  41a884:	00000000 	nop
  41a888:	10620009 	beq	v1,v0,41a8b0 <refine_host_connection+0x3e8>
  41a88c:	00000000 	nop
  41a890:	8fc20028 	lw	v0,40(s8)
  41a894:	00000000 	nop
  41a898:	8c430194 	lw	v1,404(v0)
  41a89c:	24020002 	li	v0,2
  41a8a0:	14620003 	bne	v1,v0,41a8b0 <refine_host_connection+0x3e8>
  41a8a4:	00000000 	nop
		continue;
  41a8a8:	10000128 	b	41ad4c <refine_host_connection+0x884>
  41a8ac:	00000000 	nop
#endif

	    match = match_id(peer_id, &d->that.id, &wildcards)
  41a8b0:	afc00094 	sw	zero,148(s8)
  41a8b4:	8fc20028 	lw	v0,40(s8)
  41a8b8:	00000000 	nop
  41a8bc:	244200e0 	addiu	v0,v0,224
  41a8c0:	8fc400bc 	lw	a0,188(s8)
  41a8c4:	00402821 	move	a1,v0
  41a8c8:	27c60058 	addiu	a2,s8,88
  41a8cc:	8f998540 	lw	t9,-31424(gp)
  41a8d0:	00000000 	nop
  41a8d4:	0320f809 	jalr	t9
  41a8d8:	00000000 	nop
  41a8dc:	8fdc0018 	lw	gp,24(s8)
  41a8e0:	1040001f 	beqz	v0,41a960 <refine_host_connection+0x498>
  41a8e4:	00000000 	nop
  41a8e8:	8fc20028 	lw	v0,40(s8)
  41a8ec:	27c30068 	addiu	v1,s8,104
  41a8f0:	afa30010 	sw	v1,16(sp)
  41a8f4:	8fc40050 	lw	a0,80(s8)
  41a8f8:	8fc50054 	lw	a1,84(s8)
  41a8fc:	8c460184 	lw	a2,388(v0)
  41a900:	8c470188 	lw	a3,392(v0)
  41a904:	8f9989fc 	lw	t9,-30212(gp)
  41a908:	00000000 	nop
  41a90c:	0320f809 	jalr	t9
  41a910:	00000000 	nop
  41a914:	8fdc0018 	lw	gp,24(s8)
  41a918:	10400011 	beqz	v0,41a960 <refine_host_connection+0x498>
  41a91c:	00000000 	nop
  41a920:	8fc20028 	lw	v0,40(s8)
  41a924:	8fc30020 	lw	v1,32(s8)
  41a928:	00000000 	nop
  41a92c:	8c6401d0 	lw	a0,464(v1)
  41a930:	8c4500d4 	lw	a1,212(v0)
  41a934:	8c4600d8 	lw	a2,216(v0)
  41a938:	27c70060 	addiu	a3,s8,96
  41a93c:	8f9989c0 	lw	t9,-30272(gp)
  41a940:	00000000 	nop
  41a944:	0320f809 	jalr	t9
  41a948:	00000000 	nop
  41a94c:	8fdc0018 	lw	gp,24(s8)
  41a950:	10400003 	beqz	v0,41a960 <refine_host_connection+0x498>
  41a954:	00000000 	nop
  41a958:	24020001 	li	v0,1
  41a95c:	afc20094 	sw	v0,148(s8)
  41a960:	8fc30094 	lw	v1,148(s8)
  41a964:	00000000 	nop
  41a968:	afc30070 	sw	v1,112(s8)
               && trusted_ca(peer_ca, d->that.ca, &peer_pathlen)
		                      && match_requested_ca(c->requested_ca, d->this.ca, &our_pathlen);
	       

            /* check if peer_id matches, exactly or after instantiation */
            if (!match)
  41a96c:	8fc20070 	lw	v0,112(s8)
  41a970:	00000000 	nop
  41a974:	14400003 	bnez	v0,41a984 <refine_host_connection+0x4bc>
  41a978:	00000000 	nop
                continue;
  41a97c:	100000f3 	b	41ad4c <refine_host_connection+0x884>
  41a980:	00000000 	nop

	    /* if initiator, our ID must match exactly */
	    if (initiator && !same_id(&c->this.id, &d->this.id))
  41a984:	8fc200c0 	lw	v0,192(s8)
  41a988:	00000000 	nop
  41a98c:	10400012 	beqz	v0,41a9d8 <refine_host_connection+0x510>
  41a990:	00000000 	nop
  41a994:	8fc20020 	lw	v0,32(s8)
  41a998:	00000000 	nop
  41a99c:	24430030 	addiu	v1,v0,48
  41a9a0:	8fc20028 	lw	v0,40(s8)
  41a9a4:	00000000 	nop
  41a9a8:	24420030 	addiu	v0,v0,48
  41a9ac:	00602021 	move	a0,v1
  41a9b0:	00402821 	move	a1,v0
  41a9b4:	8f9980e4 	lw	t9,-32540(gp)
  41a9b8:	00000000 	nop
  41a9bc:	0320f809 	jalr	t9
  41a9c0:	00000000 	nop
  41a9c4:	8fdc0018 	lw	gp,24(s8)
  41a9c8:	14400003 	bnez	v0,41a9d8 <refine_host_connection+0x510>
  41a9cc:	00000000 	nop
		continue;
  41a9d0:	100000de 	b	41ad4c <refine_host_connection+0x884>
  41a9d4:	00000000 	nop

	    /* authentication used must fit policy of this connection */
	    if ((d->policy & auth_policy) == LEMPTY)
  41a9d8:	8fc20028 	lw	v0,40(s8)
  41a9dc:	00000000 	nop
  41a9e0:	8c440008 	lw	a0,8(v0)
  41a9e4:	8c45000c 	lw	a1,12(v0)
  41a9e8:	8fc20030 	lw	v0,48(s8)
  41a9ec:	8fc30034 	lw	v1,52(s8)
  41a9f0:	00822024 	and	a0,a0,v0
  41a9f4:	00a32824 	and	a1,a1,v1
  41a9f8:	00801021 	move	v0,a0
  41a9fc:	00451025 	or	v0,v0,a1
  41aa00:	14400003 	bnez	v0,41aa10 <refine_host_connection+0x548>
  41aa04:	00000000 	nop
		continue;	/* our auth isn't OK for this connection */
  41aa08:	100000d0 	b	41ad4c <refine_host_connection+0x884>
  41aa0c:	00000000 	nop

	    if ((d->policy & POLICY_AGGRESSIVE) ^ p1mode_policy)
  41aa10:	8fc20028 	lw	v0,40(s8)
  41aa14:	00000000 	nop
  41aa18:	8c440008 	lw	a0,8(v0)
  41aa1c:	8c45000c 	lw	a1,12(v0)
  41aa20:	24020000 	li	v0,0
  41aa24:	24031000 	li	v1,4096
  41aa28:	00822024 	and	a0,a0,v0
  41aa2c:	00a32824 	and	a1,a1,v1
  41aa30:	afc40098 	sw	a0,152(s8)
  41aa34:	afc5009c 	sw	a1,156(s8)
  41aa38:	8fc20038 	lw	v0,56(s8)
  41aa3c:	8fc30098 	lw	v1,152(s8)
  41aa40:	00000000 	nop
  41aa44:	146200c1 	bne	v1,v0,41ad4c <refine_host_connection+0x884>
  41aa48:	00000000 	nop
  41aa4c:	8fc2003c 	lw	v0,60(s8)
  41aa50:	8fc3009c 	lw	v1,156(s8)
  41aa54:	00000000 	nop
  41aa58:	146200bc 	bne	v1,v0,41ad4c <refine_host_connection+0x884>
  41aa5c:	00000000 	nop
		continue;   /* disallow phase1 main/aggressive mode mismatch */

	    if ((d->policy ^ c->policy) & POLICY_XAUTH)
  41aa60:	8fc20028 	lw	v0,40(s8)
  41aa64:	00000000 	nop
  41aa68:	8c440008 	lw	a0,8(v0)
  41aa6c:	8c45000c 	lw	a1,12(v0)
  41aa70:	8fc20020 	lw	v0,32(s8)
  41aa74:	00000000 	nop
  41aa78:	8c43000c 	lw	v1,12(v0)
  41aa7c:	8c420008 	lw	v0,8(v0)
  41aa80:	00000000 	nop
  41aa84:	00822026 	xor	a0,a0,v0
  41aa88:	00a32826 	xor	a1,a1,v1
  41aa8c:	24020000 	li	v0,0
  41aa90:	24032000 	li	v1,8192
  41aa94:	00822024 	and	a0,a0,v0
  41aa98:	00a32824 	and	a1,a1,v1
  41aa9c:	00801021 	move	v0,a0
  41aaa0:	00451025 	or	v0,v0,a1
  41aaa4:	10400003 	beqz	v0,41aab4 <refine_host_connection+0x5ec>
  41aaa8:	00000000 	nop
		continue;	/* disallow xauth/no xauth mismatch */
  41aaac:	100000a7 	b	41ad4c <refine_host_connection+0x884>
  41aab0:	00000000 	nop

	    switch (auth)
  41aab4:	97c20024 	lhu	v0,36(s8)
  41aab8:	00000000 	nop
  41aabc:	afc200a0 	sw	v0,160(s8)
  41aac0:	24020001 	li	v0,1
  41aac4:	8fc300a0 	lw	v1,160(s8)
  41aac8:	00000000 	nop
  41aacc:	10620013 	beq	v1,v0,41ab1c <refine_host_connection+0x654>
  41aad0:	00000000 	nop
  41aad4:	24020003 	li	v0,3
  41aad8:	8fc300a0 	lw	v1,160(s8)
  41aadc:	00000000 	nop
  41aae0:	1062003f 	beq	v1,v0,41abe0 <refine_host_connection+0x718>
  41aae4:	00000000 	nop
	    {
	    case OAKLEY_PRESHARED_KEY:
		/* secret must match the one we already used */
		if (!aggrmode) /* if we've used any... */
		{
		    const chunk_t *dpsk = get_preshared_secret(d);

		    if (dpsk == NULL)
			continue;	/* no secret */

		    if (psk != dpsk)
			if (psk->len != dpsk->len
			|| memcmp(psk->ptr, dpsk->ptr, psk->len) != 0)
			    continue;	/* different secret */
		}
		break;

	    case OAKLEY_RSA_SIG:
		/* We must at least be able to find our private key.
		 * If we initiated, it must match the one we
		 * used in the SIG_I payload that we sent previously.
		 */
		{
		    const struct RSA_private_key *pri
			= get_RSA_private_key(d);

		    if (pri == NULL
		    || (initiator
		        && !same_RSA_public_key(&my_RSA_pri->pub, &pri->pub)))
			continue;
		}
		break;

	    default:
		impossible();
  41aae8:	8f848020 	lw	a0,-32736(gp)
  41aaec:	00000000 	nop
  41aaf0:	24846188 	addiu	a0,a0,24968
  41aaf4:	8f858020 	lw	a1,-32736(gp)
  41aaf8:	00000000 	nop
  41aafc:	24a554a4 	addiu	a1,a1,21668
  41ab00:	24060880 	li	a2,2176
  41ab04:	8f998bb8 	lw	t9,-29768(gp)
  41ab08:	00000000 	nop
  41ab0c:	0320f809 	jalr	t9
  41ab10:	00000000 	nop
  41ab14:	8fdc0018 	lw	gp,24(s8)
  41ab18:	00000000 	nop
  41ab1c:	8fc200c4 	lw	v0,196(s8)
  41ab20:	00000000 	nop
  41ab24:	14400048 	bnez	v0,41ac48 <refine_host_connection+0x780>
  41ab28:	00000000 	nop
  41ab2c:	8fc40028 	lw	a0,40(s8)
  41ab30:	8f9985e0 	lw	t9,-31264(gp)
  41ab34:	00000000 	nop
  41ab38:	0320f809 	jalr	t9
  41ab3c:	00000000 	nop
  41ab40:	8fdc0018 	lw	gp,24(s8)
  41ab44:	afc20074 	sw	v0,116(s8)
  41ab48:	8fc20074 	lw	v0,116(s8)
  41ab4c:	00000000 	nop
  41ab50:	14400003 	bnez	v0,41ab60 <refine_host_connection+0x698>
  41ab54:	00000000 	nop
  41ab58:	1000007c 	b	41ad4c <refine_host_connection+0x884>
  41ab5c:	00000000 	nop
  41ab60:	8fc30040 	lw	v1,64(s8)
  41ab64:	8fc20074 	lw	v0,116(s8)
  41ab68:	00000000 	nop
  41ab6c:	10620036 	beq	v1,v0,41ac48 <refine_host_connection+0x780>
  41ab70:	00000000 	nop
  41ab74:	8fc20040 	lw	v0,64(s8)
  41ab78:	00000000 	nop
  41ab7c:	8c430004 	lw	v1,4(v0)
  41ab80:	8fc20074 	lw	v0,116(s8)
  41ab84:	00000000 	nop
  41ab88:	8c420004 	lw	v0,4(v0)
  41ab8c:	00000000 	nop
  41ab90:	1462006e 	bne	v1,v0,41ad4c <refine_host_connection+0x884>
  41ab94:	00000000 	nop
  41ab98:	8fc20040 	lw	v0,64(s8)
  41ab9c:	00000000 	nop
  41aba0:	8c440000 	lw	a0,0(v0)
  41aba4:	8fc20074 	lw	v0,116(s8)
  41aba8:	00000000 	nop
  41abac:	8c450000 	lw	a1,0(v0)
  41abb0:	8fc20040 	lw	v0,64(s8)
  41abb4:	00000000 	nop
  41abb8:	8c460004 	lw	a2,4(v0)
  41abbc:	8f9985c8 	lw	t9,-31288(gp)
  41abc0:	00000000 	nop
  41abc4:	0320f809 	jalr	t9
  41abc8:	00000000 	nop
  41abcc:	8fdc0018 	lw	gp,24(s8)
  41abd0:	1440005e 	bnez	v0,41ad4c <refine_host_connection+0x884>
  41abd4:	00000000 	nop
  41abd8:	1000001b 	b	41ac48 <refine_host_connection+0x780>
  41abdc:	00000000 	nop
  41abe0:	8fc40028 	lw	a0,40(s8)
  41abe4:	8f998704 	lw	t9,-30972(gp)
  41abe8:	00000000 	nop
  41abec:	0320f809 	jalr	t9
  41abf0:	00000000 	nop
  41abf4:	8fdc0018 	lw	gp,24(s8)
  41abf8:	afc20074 	sw	v0,116(s8)
  41abfc:	8fc20074 	lw	v0,116(s8)
  41ac00:	00000000 	nop
  41ac04:	10400051 	beqz	v0,41ad4c <refine_host_connection+0x884>
  41ac08:	00000000 	nop
  41ac0c:	8fc200c0 	lw	v0,192(s8)
  41ac10:	00000000 	nop
  41ac14:	1040000c 	beqz	v0,41ac48 <refine_host_connection+0x780>
  41ac18:	00000000 	nop
  41ac1c:	8fc40048 	lw	a0,72(s8)
  41ac20:	8fc50074 	lw	a1,116(s8)
  41ac24:	8f998c68 	lw	t9,-29592(gp)
  41ac28:	00000000 	nop
  41ac2c:	0320f809 	jalr	t9
  41ac30:	00000000 	nop
  41ac34:	8fdc0018 	lw	gp,24(s8)
  41ac38:	14400003 	bnez	v0,41ac48 <refine_host_connection+0x780>
  41ac3c:	00000000 	nop
  41ac40:	10000042 	b	41ad4c <refine_host_connection+0x884>
  41ac44:	00000000 	nop
	    }

	    /* d has passed all the tests.
	     * We'll go with it if the Peer ID was an exact match.
	     */
	    if (match && wildcards == 0 && peer_pathlen == 0 && our_pathlen == 0)
  41ac48:	8fc20070 	lw	v0,112(s8)
  41ac4c:	00000000 	nop
  41ac50:	10400010 	beqz	v0,41ac94 <refine_host_connection+0x7cc>
  41ac54:	00000000 	nop
  41ac58:	8fc20058 	lw	v0,88(s8)
  41ac5c:	00000000 	nop
  41ac60:	1440000c 	bnez	v0,41ac94 <refine_host_connection+0x7cc>
  41ac64:	00000000 	nop
  41ac68:	8fc20068 	lw	v0,104(s8)
  41ac6c:	00000000 	nop
  41ac70:	14400008 	bnez	v0,41ac94 <refine_host_connection+0x7cc>
  41ac74:	00000000 	nop
  41ac78:	8fc20060 	lw	v0,96(s8)
  41ac7c:	00000000 	nop
  41ac80:	14400004 	bnez	v0,41ac94 <refine_host_connection+0x7cc>
  41ac84:	00000000 	nop
		return d;
  41ac88:	8fc20028 	lw	v0,40(s8)
  41ac8c:	10000055 	b	41ade4 <refine_host_connection+0x91c>
  41ac90:	00000000 	nop

	    /* We'll remember it as best_found in case an exact
	     * match doesn't come along.
	     */
	    if (best_found == NULL || wildcards < best_wildcards
	    || ((wildcards == best_wildcards && peer_pathlen < best_peer_pathlen)
		|| (peer_pathlen == best_peer_pathlen && our_pathlen < best_our_pathlen)))
  41ac94:	8fc2002c 	lw	v0,44(s8)
  41ac98:	00000000 	nop
  41ac9c:	1040001f 	beqz	v0,41ad1c <refine_host_connection+0x854>
  41aca0:	00000000 	nop
  41aca4:	8fc20058 	lw	v0,88(s8)
  41aca8:	8fc3005c 	lw	v1,92(s8)
  41acac:	00000000 	nop
  41acb0:	0043102a 	slt	v0,v0,v1
  41acb4:	14400019 	bnez	v0,41ad1c <refine_host_connection+0x854>
  41acb8:	00000000 	nop
  41acbc:	8fc30058 	lw	v1,88(s8)
  41acc0:	8fc2005c 	lw	v0,92(s8)
  41acc4:	00000000 	nop
  41acc8:	14620007 	bne	v1,v0,41ace8 <refine_host_connection+0x820>
  41accc:	00000000 	nop
  41acd0:	8fc20068 	lw	v0,104(s8)
  41acd4:	8fc3006c 	lw	v1,108(s8)
  41acd8:	00000000 	nop
  41acdc:	0043102a 	slt	v0,v0,v1
  41ace0:	1440000e 	bnez	v0,41ad1c <refine_host_connection+0x854>
  41ace4:	00000000 	nop
  41ace8:	8fc30068 	lw	v1,104(s8)
  41acec:	8fc2006c 	lw	v0,108(s8)
  41acf0:	00000000 	nop
  41acf4:	14620015 	bne	v1,v0,41ad4c <refine_host_connection+0x884>
  41acf8:	00000000 	nop
  41acfc:	8fc20060 	lw	v0,96(s8)
  41ad00:	8fc30064 	lw	v1,100(s8)
  41ad04:	00000000 	nop
  41ad08:	0043102a 	slt	v0,v0,v1
  41ad0c:	14400003 	bnez	v0,41ad1c <refine_host_connection+0x854>
  41ad10:	00000000 	nop
  41ad14:	1000000d 	b	41ad4c <refine_host_connection+0x884>
  41ad18:	00000000 	nop
	    {
		best_found = d;
  41ad1c:	8fc20028 	lw	v0,40(s8)
  41ad20:	00000000 	nop
  41ad24:	afc2002c 	sw	v0,44(s8)
		best_wildcards = wildcards;
  41ad28:	8fc20058 	lw	v0,88(s8)
  41ad2c:	00000000 	nop
  41ad30:	afc2005c 	sw	v0,92(s8)
		best_peer_pathlen = peer_pathlen;
  41ad34:	8fc20068 	lw	v0,104(s8)
  41ad38:	00000000 	nop
  41ad3c:	afc2006c 	sw	v0,108(s8)
		best_our_pathlen = our_pathlen;
  41ad40:	8fc20060 	lw	v0,96(s8)
  41ad44:	00000000 	nop
  41ad48:	afc20064 	sw	v0,100(s8)
  41ad4c:	8fc20028 	lw	v0,40(s8)
  41ad50:	00000000 	nop
  41ad54:	8c4201c8 	lw	v0,456(v0)
  41ad58:	00000000 	nop
  41ad5c:	afc20028 	sw	v0,40(s8)
  41ad60:	1000febc 	b	41a854 <refine_host_connection+0x38c>
  41ad64:	00000000 	nop
	    }
	}
	if (wcpip)
  41ad68:	8fc2004c 	lw	v0,76(s8)
  41ad6c:	00000000 	nop
  41ad70:	10400004 	beqz	v0,41ad84 <refine_host_connection+0x8bc>
  41ad74:	00000000 	nop
	    return best_found;	/* been around twice already */
  41ad78:	8fc2002c 	lw	v0,44(s8)
  41ad7c:	10000019 	b	41ade4 <refine_host_connection+0x91c>
  41ad80:	00000000 	nop

	/* Starting second time around.
	 * We're willing to settle for a connection that needs Peer IP
	 * instantiated: Road Warrior or Opportunistic.
	 * Look on list of connections for host pair with wildcard Peer IP
	 */
	d = find_host_pair_connections(&c->this.host_addr, c->this.host_port
  41ad84:	8fc20020 	lw	v0,32(s8)
  41ad88:	00000000 	nop
  41ad8c:	24440058 	addiu	a0,v0,88
  41ad90:	8fc20020 	lw	v0,32(s8)
  41ad94:	00000000 	nop
  41ad98:	944300c8 	lhu	v1,200(v0)
  41ad9c:	8fc20020 	lw	v0,32(s8)
  41ada0:	00000000 	nop
  41ada4:	94420178 	lhu	v0,376(v0)
  41ada8:	00602821 	move	a1,v1
  41adac:	00003021 	move	a2,zero
  41adb0:	00403821 	move	a3,v0
  41adb4:	8f998024 	lw	t9,-32732(gp)
  41adb8:	00000000 	nop
  41adbc:	27392a64 	addiu	t9,t9,10852
  41adc0:	00000000 	nop
  41adc4:	0320f809 	jalr	t9
  41adc8:	00000000 	nop
  41adcc:	8fdc0018 	lw	gp,24(s8)
  41add0:	afc20028 	sw	v0,40(s8)
  41add4:	24020001 	li	v0,1
  41add8:	afc2004c 	sw	v0,76(s8)
  41addc:	1000fe9d 	b	41a854 <refine_host_connection+0x38c>
  41ade0:	00000000 	nop
	    , (ip_address *)NULL, c->that.host_port);
    }
}
  41ade4:	03c0e821 	move	sp,s8
  41ade8:	8fbf00b0 	lw	ra,176(sp)
  41adec:	8fbe00ac 	lw	s8,172(sp)
  41adf0:	27bd00b8 	addiu	sp,sp,184
  41adf4:	03e00008 	jr	ra
  41adf8:	00000000 	nop

0041adfc <is_virtual_net_used>:
  41adfc:	3c1c0fbf 	lui	gp,0xfbf
  41ae00:	279c1b74 	addiu	gp,gp,7028
  41ae04:	0399e021 	addu	gp,gp,t9
  41ae08:	27bdfd78 	addiu	sp,sp,-648
  41ae0c:	afbc0010 	sw	gp,16(sp)
  41ae10:	afbf0280 	sw	ra,640(sp)
  41ae14:	afbe027c 	sw	s8,636(sp)
  41ae18:	afbc0278 	sw	gp,632(sp)
  41ae1c:	03a0f021 	move	s8,sp
  41ae20:	afc40288 	sw	a0,648(s8)
  41ae24:	afc5028c 	sw	a1,652(s8)

#ifdef VIRTUAL_IP
/**
 * With virtual addressing, we must not allow someone to use an already
 * used (by another id) addr/net.
 */
static bool
is_virtual_net_used(const ip_subnet *peer_net, const struct id *peer_id)
{
    struct connection *d;
    for (d = connections; d != NULL; d = d->ac_next)
  41ae28:	8f828018 	lw	v0,-32744(gp)
  41ae2c:	00000000 	nop
  41ae30:	244206f0 	addiu	v0,v0,1776
  41ae34:	8c420000 	lw	v0,0(v0)
  41ae38:	00000000 	nop
  41ae3c:	afc20018 	sw	v0,24(s8)
  41ae40:	8fc20018 	lw	v0,24(s8)
  41ae44:	00000000 	nop
  41ae48:	14400003 	bnez	v0,41ae58 <is_virtual_net_used+0x5c>
  41ae4c:	00000000 	nop
  41ae50:	10000076 	b	41b02c <is_virtual_net_used+0x230>
  41ae54:	00000000 	nop
    {
	switch (d->kind) {
  41ae58:	8fc20018 	lw	v0,24(s8)
  41ae5c:	00000000 	nop
  41ae60:	8c420194 	lw	v0,404(v0)
  41ae64:	00000000 	nop
  41ae68:	afc20270 	sw	v0,624(s8)
  41ae6c:	8fc30270 	lw	v1,624(s8)
  41ae70:	00000000 	nop
  41ae74:	2c620003 	sltiu	v0,v1,3
  41ae78:	14400008 	bnez	v0,41ae9c <is_virtual_net_used+0xa0>
  41ae7c:	00000000 	nop
  41ae80:	24020003 	li	v0,3
  41ae84:	8fc30270 	lw	v1,624(s8)
  41ae88:	00000000 	nop
  41ae8c:	10620060 	beq	v1,v0,41b010 <is_virtual_net_used+0x214>
  41ae90:	00000000 	nop
  41ae94:	1000005e 	b	41b010 <is_virtual_net_used+0x214>
  41ae98:	00000000 	nop
	    case CK_PERMANENT:
	    case CK_TEMPLATE:
	    case CK_INSTANCE:
		if ((subnetinsubnet(peer_net,&d->that.client) ||
		     subnetinsubnet(&d->that.client,peer_net)) &&
		     !same_id(&d->that.id, peer_id)) {
  41ae9c:	8fc20018 	lw	v0,24(s8)
  41aea0:	00000000 	nop
  41aea4:	24420140 	addiu	v0,v0,320
  41aea8:	8fc40288 	lw	a0,648(s8)
  41aeac:	00402821 	move	a1,v0
  41aeb0:	8f99827c 	lw	t9,-32132(gp)
  41aeb4:	00000000 	nop
  41aeb8:	0320f809 	jalr	t9
  41aebc:	00000000 	nop
  41aec0:	8fdc0010 	lw	gp,16(s8)
  41aec4:	1440000f 	bnez	v0,41af04 <is_virtual_net_used+0x108>
  41aec8:	00000000 	nop
  41aecc:	8fc20018 	lw	v0,24(s8)
  41aed0:	00000000 	nop
  41aed4:	24420140 	addiu	v0,v0,320
  41aed8:	00402021 	move	a0,v0
  41aedc:	8fc50288 	lw	a1,648(s8)
  41aee0:	8f99827c 	lw	t9,-32132(gp)
  41aee4:	00000000 	nop
  41aee8:	0320f809 	jalr	t9
  41aeec:	00000000 	nop
  41aef0:	8fdc0010 	lw	gp,16(s8)
  41aef4:	14400003 	bnez	v0,41af04 <is_virtual_net_used+0x108>
  41aef8:	00000000 	nop
  41aefc:	10000044 	b	41b010 <is_virtual_net_used+0x214>
  41af00:	00000000 	nop
  41af04:	8fc20018 	lw	v0,24(s8)
  41af08:	00000000 	nop
  41af0c:	244200e0 	addiu	v0,v0,224
  41af10:	00402021 	move	a0,v0
  41af14:	8fc5028c 	lw	a1,652(s8)
  41af18:	8f9980e4 	lw	t9,-32540(gp)
  41af1c:	00000000 	nop
  41af20:	0320f809 	jalr	t9
  41af24:	00000000 	nop
  41af28:	8fdc0010 	lw	gp,16(s8)
  41af2c:	14400038 	bnez	v0,41b010 <is_virtual_net_used+0x214>
  41af30:	00000000 	nop
		    char buf[IDTOA_BUF];
		    char client[SUBNETTOT_BUF];
		    subnettot(peer_net, 0, client, sizeof(client));
  41af34:	8fc40288 	lw	a0,648(s8)
  41af38:	00002821 	move	a1,zero
  41af3c:	27c60220 	addiu	a2,s8,544
  41af40:	2407004d 	li	a3,77
  41af44:	8f998bbc 	lw	t9,-29764(gp)
  41af48:	00000000 	nop
  41af4c:	0320f809 	jalr	t9
  41af50:	00000000 	nop
  41af54:	8fdc0010 	lw	gp,16(s8)
  41af58:	00000000 	nop
		    idtoa(&d->that.id, buf, sizeof(buf));
  41af5c:	8fc20018 	lw	v0,24(s8)
  41af60:	00000000 	nop
  41af64:	244200e0 	addiu	v0,v0,224
  41af68:	00402021 	move	a0,v0
  41af6c:	27c50020 	addiu	a1,s8,32
  41af70:	24060200 	li	a2,512
  41af74:	8f998798 	lw	t9,-30824(gp)
  41af78:	00000000 	nop
  41af7c:	0320f809 	jalr	t9
  41af80:	00000000 	nop
  41af84:	8fdc0010 	lw	gp,16(s8)
  41af88:	00000000 	nop
		    plog("Virtual IP %s is already used by '%s'",
  41af8c:	8f848020 	lw	a0,-32736(gp)
  41af90:	00000000 	nop
  41af94:	24846194 	addiu	a0,a0,24980
  41af98:	27c50220 	addiu	a1,s8,544
  41af9c:	27c60020 	addiu	a2,s8,32
  41afa0:	8f998abc 	lw	t9,-30020(gp)
  41afa4:	00000000 	nop
  41afa8:	0320f809 	jalr	t9
  41afac:	00000000 	nop
  41afb0:	8fdc0010 	lw	gp,16(s8)
  41afb4:	00000000 	nop
			client, buf);
		    idtoa(peer_id, buf, sizeof(buf));
  41afb8:	8fc4028c 	lw	a0,652(s8)
  41afbc:	27c50020 	addiu	a1,s8,32
  41afc0:	24060200 	li	a2,512
  41afc4:	8f998798 	lw	t9,-30824(gp)
  41afc8:	00000000 	nop
  41afcc:	0320f809 	jalr	t9
  41afd0:	00000000 	nop
  41afd4:	8fdc0010 	lw	gp,16(s8)
  41afd8:	00000000 	nop
			plog("Your ID is '%s'", buf);
  41afdc:	8f848020 	lw	a0,-32736(gp)
  41afe0:	00000000 	nop
  41afe4:	248461bc 	addiu	a0,a0,25020
  41afe8:	27c50020 	addiu	a1,s8,32
  41afec:	8f998abc 	lw	t9,-30020(gp)
  41aff0:	00000000 	nop
  41aff4:	0320f809 	jalr	t9
  41aff8:	00000000 	nop
  41affc:	8fdc0010 	lw	gp,16(s8)
  41b000:	00000000 	nop
		    return TRUE; /* already used by another one */
  41b004:	24020001 	li	v0,1
  41b008:	10000009 	b	41b030 <is_virtual_net_used+0x234>
  41b00c:	00000000 	nop
  41b010:	8fc20018 	lw	v0,24(s8)
  41b014:	00000000 	nop
  41b018:	8c4201cc 	lw	v0,460(v0)
  41b01c:	00000000 	nop
  41b020:	afc20018 	sw	v0,24(s8)
  41b024:	1000ff86 	b	41ae40 <is_virtual_net_used+0x44>
  41b028:	00000000 	nop
		}
		break;
	    case CK_GOING_AWAY:
	    default:
		break;
	}
    }
    return FALSE; /* you can safely use it */
  41b02c:	00001021 	move	v0,zero
}
  41b030:	03c0e821 	move	sp,s8
  41b034:	8fbf0280 	lw	ra,640(sp)
  41b038:	8fbe027c 	lw	s8,636(sp)
  41b03c:	27bd0288 	addiu	sp,sp,648
  41b040:	03e00008 	jr	ra
  41b044:	00000000 	nop

0041b048 <fc_try>:
  41b048:	3c1c0fbf 	lui	gp,0xfbf
  41b04c:	279c1928 	addiu	gp,gp,6440
  41b050:	0399e021 	addu	gp,gp,t9
  41b054:	27bdffa0 	addiu	sp,sp,-96
  41b058:	afbc0018 	sw	gp,24(sp)
  41b05c:	afbf0058 	sw	ra,88(sp)
  41b060:	afbe0054 	sw	s8,84(sp)
  41b064:	afbc0050 	sw	gp,80(sp)
  41b068:	03a0f021 	move	s8,sp
  41b06c:	afc40060 	sw	a0,96(s8)
  41b070:	afc50064 	sw	a1,100(s8)
  41b074:	afc60068 	sw	a2,104(s8)
  41b078:	afc7006c 	sw	a3,108(s8)
  41b07c:	8fc20078 	lw	v0,120(s8)
  41b080:	00000000 	nop
  41b084:	a3c20020 	sb	v0,32(s8)
  41b088:	8fc2007c 	lw	v0,124(s8)
  41b08c:	00000000 	nop
  41b090:	a7c20022 	sh	v0,34(s8)
  41b094:	8fc20080 	lw	v0,128(s8)
  41b098:	00000000 	nop
  41b09c:	a3c20024 	sb	v0,36(s8)
  41b0a0:	8fc20084 	lw	v0,132(s8)
  41b0a4:	00000000 	nop
  41b0a8:	a7c20026 	sh	v0,38(s8)
#endif

/* find_client_connection: given a connection suitable for ISAKMP
 * (i.e. the hosts match), find a one suitable for IPSEC
 * (i.e. with matching clients).
 *
 * If we don't find an exact match (not even our current connection),
 * we try for one that still needs instantiation.  Try Road Warrior
 * abstract connections and the Opportunistic abstract connections.
 * This requires inverse instantiation: abstraction.
 *
 * After failing to find an exact match, we abstract the peer
 * to be NO_IP (the wildcard value).  This enables matches with
 * Road Warrior and Opportunistic abstract connections.
 *
 * After failing that search, we also abstract the Phase 1 peer ID
 * if possible.  If the peer's ID was the peer's IP address, we make
 * it NO_ID; instantiation will make it the peer's IP address again.
 *
 * If searching for a Road Warrior abstract connection fails,
 * and conditions are suitable, we search for an Opportunistic
 * abstract connection.
 *
 * Note: in the end, both Phase 1 IDs must be preserved, after any
 * instantiation.  They are the IDs that have been authenticated.
 */

/* fc_try: a helper function for find_client_connection */
static struct connection *
fc_try(bool oppo
, const struct connection *c
, struct host_pair *hp
, const struct id *peer_id
, const ip_subnet *our_net
, const ip_subnet *peer_net
, const u_int8_t our_protocol, const u_int16_t our_port
, const u_int8_t peer_protocol, const u_int16_t peer_port)
{
    struct connection *d;
    struct connection *best = NULL;
  41b0ac:	afc0002c 	sw	zero,44(s8)
    int wildcards, best_wildcards, pathlen, best_pathlen;
    const bool peer_net_is_host = subnetishost(peer_net)
  41b0b0:	afc00044 	sw	zero,68(s8)
  41b0b4:	8fc40074 	lw	a0,116(s8)
  41b0b8:	8f99851c 	lw	t9,-31460(gp)
  41b0bc:	00000000 	nop
  41b0c0:	0320f809 	jalr	t9
  41b0c4:	00000000 	nop
  41b0c8:	8fdc0018 	lw	gp,24(s8)
  41b0cc:	1040000f 	beqz	v0,41b10c <fc_try+0xc4>
  41b0d0:	00000000 	nop
  41b0d4:	8fc20064 	lw	v0,100(s8)
  41b0d8:	00000000 	nop
  41b0dc:	24420108 	addiu	v0,v0,264
  41b0e0:	00402021 	move	a0,v0
  41b0e4:	8fc50074 	lw	a1,116(s8)
  41b0e8:	8f998acc 	lw	t9,-30004(gp)
  41b0ec:	00000000 	nop
  41b0f0:	0320f809 	jalr	t9
  41b0f4:	00000000 	nop
  41b0f8:	8fdc0018 	lw	gp,24(s8)
  41b0fc:	10400003 	beqz	v0,41b10c <fc_try+0xc4>
  41b100:	00000000 	nop
  41b104:	24020001 	li	v0,1
  41b108:	afc20044 	sw	v0,68(s8)
  41b10c:	8fc20044 	lw	v0,68(s8)
  41b110:	00000000 	nop
  41b114:	afc20040 	sw	v0,64(s8)
	&& addrinsubnet(&c->that.host_addr, peer_net);

    for (d = hp->connections; d != NULL; d = d->hp_next)
  41b118:	8fc20068 	lw	v0,104(s8)
  41b11c:	00000000 	nop
  41b120:	8c420044 	lw	v0,68(v0)
  41b124:	00000000 	nop
  41b128:	afc20028 	sw	v0,40(s8)
  41b12c:	8fc20028 	lw	v0,40(s8)
  41b130:	00000000 	nop
  41b134:	14400003 	bnez	v0,41b144 <fc_try+0xfc>
  41b138:	00000000 	nop
  41b13c:	1000010b 	b	41b56c <fc_try+0x524>
  41b140:	00000000 	nop
    {
	if (!(same_id(&c->this.id, &d->this.id)
	&& match_id(&c->that.id, &d->that.id, &wildcards)
	&& trusted_ca(c->that.ca, d->that.ca, &pathlen)))
  41b144:	8fc20064 	lw	v0,100(s8)
  41b148:	00000000 	nop
  41b14c:	24430030 	addiu	v1,v0,48
  41b150:	8fc20028 	lw	v0,40(s8)
  41b154:	00000000 	nop
  41b158:	24420030 	addiu	v0,v0,48
  41b15c:	00602021 	move	a0,v1
  41b160:	00402821 	move	a1,v0
  41b164:	8f9980e4 	lw	t9,-32540(gp)
  41b168:	00000000 	nop
  41b16c:	0320f809 	jalr	t9
  41b170:	00000000 	nop
  41b174:	8fdc0018 	lw	gp,24(s8)
  41b178:	104000f5 	beqz	v0,41b550 <fc_try+0x508>
  41b17c:	00000000 	nop
  41b180:	8fc20064 	lw	v0,100(s8)
  41b184:	00000000 	nop
  41b188:	244300e0 	addiu	v1,v0,224
  41b18c:	8fc20028 	lw	v0,40(s8)
  41b190:	00000000 	nop
  41b194:	244200e0 	addiu	v0,v0,224
  41b198:	00602021 	move	a0,v1
  41b19c:	00402821 	move	a1,v0
  41b1a0:	27c60030 	addiu	a2,s8,48
  41b1a4:	8f998540 	lw	t9,-31424(gp)
  41b1a8:	00000000 	nop
  41b1ac:	0320f809 	jalr	t9
  41b1b0:	00000000 	nop
  41b1b4:	8fdc0018 	lw	gp,24(s8)
  41b1b8:	104000e5 	beqz	v0,41b550 <fc_try+0x508>
  41b1bc:	00000000 	nop
  41b1c0:	8fc30064 	lw	v1,100(s8)
  41b1c4:	8fc70028 	lw	a3,40(s8)
  41b1c8:	27c20038 	addiu	v0,s8,56
  41b1cc:	afa20010 	sw	v0,16(sp)
  41b1d0:	8c640184 	lw	a0,388(v1)
  41b1d4:	8c650188 	lw	a1,392(v1)
  41b1d8:	8ce60184 	lw	a2,388(a3)
  41b1dc:	8ce70188 	lw	a3,392(a3)
  41b1e0:	8f9989fc 	lw	t9,-30212(gp)
  41b1e4:	00000000 	nop
  41b1e8:	0320f809 	jalr	t9
  41b1ec:	00000000 	nop
  41b1f0:	8fdc0018 	lw	gp,24(s8)
  41b1f4:	14400003 	bnez	v0,41b204 <fc_try+0x1bc>
  41b1f8:	00000000 	nop
  41b1fc:	100000d4 	b	41b550 <fc_try+0x508>
  41b200:	00000000 	nop
	    continue;

	/* compare protocol and ports */
	if (d->this.protocol != our_protocol
	||  d->this.port != our_port
	||  d->that.protocol != peer_protocol
	||  d->that.port != peer_port)
  41b204:	8fc20028 	lw	v0,40(s8)
  41b208:	00000000 	nop
  41b20c:	904300cc 	lbu	v1,204(v0)
  41b210:	93c20020 	lbu	v0,32(s8)
  41b214:	00000000 	nop
  41b218:	146200cd 	bne	v1,v0,41b550 <fc_try+0x508>
  41b21c:	00000000 	nop
  41b220:	8fc20028 	lw	v0,40(s8)
  41b224:	00000000 	nop
  41b228:	944300ca 	lhu	v1,202(v0)
  41b22c:	97c20022 	lhu	v0,34(s8)
  41b230:	00000000 	nop
  41b234:	146200c6 	bne	v1,v0,41b550 <fc_try+0x508>
  41b238:	00000000 	nop
  41b23c:	8fc20028 	lw	v0,40(s8)
  41b240:	00000000 	nop
  41b244:	9043017c 	lbu	v1,380(v0)
  41b248:	93c20024 	lbu	v0,36(s8)
  41b24c:	00000000 	nop
  41b250:	146200bf 	bne	v1,v0,41b550 <fc_try+0x508>
  41b254:	00000000 	nop
  41b258:	8fc20028 	lw	v0,40(s8)
  41b25c:	00000000 	nop
  41b260:	9443017a 	lhu	v1,378(v0)
  41b264:	97c20026 	lhu	v0,38(s8)
  41b268:	00000000 	nop
  41b26c:	146200b8 	bne	v1,v0,41b550 <fc_try+0x508>
  41b270:	00000000 	nop
	    continue;

	if (oppo)
  41b274:	8fc20060 	lw	v0,96(s8)
  41b278:	00000000 	nop
  41b27c:	10400017 	beqz	v0,41b2dc <fc_try+0x294>
  41b280:	00000000 	nop
	{
	    /* Opportunistic case:
	     * our_net must be inside d->this.client
	     * and d must have a Wildcard that.client.
	     */
	    if (!subnetinsubnet(our_net, &d->this.client)
	    || !HasWildcardClient(d))
  41b284:	8fc20028 	lw	v0,40(s8)
  41b288:	00000000 	nop
  41b28c:	24420090 	addiu	v0,v0,144
  41b290:	8fc40070 	lw	a0,112(s8)
  41b294:	00402821 	move	a1,v0
  41b298:	8f99827c 	lw	t9,-32132(gp)
  41b29c:	00000000 	nop
  41b2a0:	0320f809 	jalr	t9
  41b2a4:	00000000 	nop
  41b2a8:	8fdc0018 	lw	gp,24(s8)
  41b2ac:	104000a8 	beqz	v0,41b550 <fc_try+0x508>
  41b2b0:	00000000 	nop
  41b2b4:	8fc40028 	lw	a0,40(s8)
  41b2b8:	8f998118 	lw	t9,-32488(gp)
  41b2bc:	00000000 	nop
  41b2c0:	0320f809 	jalr	t9
  41b2c4:	00000000 	nop
  41b2c8:	8fdc0018 	lw	gp,24(s8)
  41b2cc:	14400074 	bnez	v0,41b4a0 <fc_try+0x458>
  41b2d0:	00000000 	nop
  41b2d4:	1000009e 	b	41b550 <fc_try+0x508>
  41b2d8:	00000000 	nop
		continue;
	}
	else
	{
	    /* non-Opportunistic case:
	     * our_client must match.
	     *
	     * So must peer_client, but the testing is complicated
	     * by the fact that the peer might be a wildcard
	     * and if so, the default value of that.client
	     * won't match the default peer_net.  The appropriate test:
	     *
	     * If d has a peer client, it must match peer_net.
	     * If d has no peer client, peer_net must just have peer itself.
	     */
	    if (!samesubnet(&d->this.client, our_net))
  41b2dc:	8fc20028 	lw	v0,40(s8)
  41b2e0:	00000000 	nop
  41b2e4:	24420090 	addiu	v0,v0,144
  41b2e8:	00402021 	move	a0,v0
  41b2ec:	8fc50070 	lw	a1,112(s8)
  41b2f0:	8f9983e8 	lw	t9,-31768(gp)
  41b2f4:	00000000 	nop
  41b2f8:	0320f809 	jalr	t9
  41b2fc:	00000000 	nop
  41b300:	8fdc0018 	lw	gp,24(s8)
  41b304:	14400003 	bnez	v0,41b314 <fc_try+0x2cc>
  41b308:	00000000 	nop
		continue;
  41b30c:	10000090 	b	41b550 <fc_try+0x508>
  41b310:	00000000 	nop

	    if (d->that.has_client)
  41b314:	8fc20028 	lw	v0,40(s8)
  41b318:	00000000 	nop
  41b31c:	8c420164 	lw	v0,356(v0)
  41b320:	00000000 	nop
  41b324:	10400058 	beqz	v0,41b488 <fc_try+0x440>
  41b328:	00000000 	nop
	    {
		if (d->that.has_client_wildcard) {
  41b32c:	8fc20028 	lw	v0,40(s8)
  41b330:	00000000 	nop
  41b334:	8c420168 	lw	v0,360(v0)
  41b338:	00000000 	nop
  41b33c:	1040000f 	beqz	v0,41b37c <fc_try+0x334>
  41b340:	00000000 	nop
		    if (!subnetinsubnet(peer_net, &d->that.client))
  41b344:	8fc20028 	lw	v0,40(s8)
  41b348:	00000000 	nop
  41b34c:	24420140 	addiu	v0,v0,320
  41b350:	8fc40074 	lw	a0,116(s8)
  41b354:	00402821 	move	a1,v0
  41b358:	8f99827c 	lw	t9,-32132(gp)
  41b35c:	00000000 	nop
  41b360:	0320f809 	jalr	t9
  41b364:	00000000 	nop
  41b368:	8fdc0018 	lw	gp,24(s8)
  41b36c:	1440004c 	bnez	v0,41b4a0 <fc_try+0x458>
  41b370:	00000000 	nop
			continue;
  41b374:	10000076 	b	41b550 <fc_try+0x508>
  41b378:	00000000 	nop
		} else {
#ifdef VIRTUAL_IP
		    if ((!samesubnet(&d->that.client, peer_net)) && (!is_virtual_connection(d)))
  41b37c:	8fc20028 	lw	v0,40(s8)
  41b380:	00000000 	nop
  41b384:	24420140 	addiu	v0,v0,320
  41b388:	00402021 	move	a0,v0
  41b38c:	8fc50074 	lw	a1,116(s8)
  41b390:	8f9983e8 	lw	t9,-31768(gp)
  41b394:	00000000 	nop
  41b398:	0320f809 	jalr	t9
  41b39c:	00000000 	nop
  41b3a0:	8fdc0018 	lw	gp,24(s8)
  41b3a4:	1440000b 	bnez	v0,41b3d4 <fc_try+0x38c>
  41b3a8:	00000000 	nop
  41b3ac:	8fc40028 	lw	a0,40(s8)
  41b3b0:	8f998654 	lw	t9,-31148(gp)
  41b3b4:	00000000 	nop
  41b3b8:	0320f809 	jalr	t9
  41b3bc:	00000000 	nop
  41b3c0:	8fdc0018 	lw	gp,24(s8)
  41b3c4:	14400003 	bnez	v0,41b3d4 <fc_try+0x38c>
  41b3c8:	00000000 	nop
#else
		    if (!samesubnet(&d->that.client, peer_net))
#endif
			continue;
  41b3cc:	10000060 	b	41b550 <fc_try+0x508>
  41b3d0:	00000000 	nop
#ifdef VIRTUAL_IP
		    if ((is_virtual_connection(d)) &&
			( (!is_virtual_net_allowed(d, peer_net, &c->that.host_addr)) ||
			(is_virtual_net_used(peer_net, peer_id?peer_id:&c->that.id)) ))
  41b3d4:	8fc40028 	lw	a0,40(s8)
  41b3d8:	8f998654 	lw	t9,-31148(gp)
  41b3dc:	00000000 	nop
  41b3e0:	0320f809 	jalr	t9
  41b3e4:	00000000 	nop
  41b3e8:	8fdc0018 	lw	gp,24(s8)
  41b3ec:	1040002c 	beqz	v0,41b4a0 <fc_try+0x458>
  41b3f0:	00000000 	nop
  41b3f4:	8fc20064 	lw	v0,100(s8)
  41b3f8:	00000000 	nop
  41b3fc:	24420108 	addiu	v0,v0,264
  41b400:	8fc40028 	lw	a0,40(s8)
  41b404:	8fc50074 	lw	a1,116(s8)
  41b408:	00403021 	move	a2,v0
  41b40c:	8f998a4c 	lw	t9,-30132(gp)
  41b410:	00000000 	nop
  41b414:	0320f809 	jalr	t9
  41b418:	00000000 	nop
  41b41c:	8fdc0018 	lw	gp,24(s8)
  41b420:	1040004b 	beqz	v0,41b550 <fc_try+0x508>
  41b424:	00000000 	nop
  41b428:	8fc2006c 	lw	v0,108(s8)
  41b42c:	00000000 	nop
  41b430:	afc20048 	sw	v0,72(s8)
  41b434:	8fc2006c 	lw	v0,108(s8)
  41b438:	00000000 	nop
  41b43c:	14400005 	bnez	v0,41b454 <fc_try+0x40c>
  41b440:	00000000 	nop
  41b444:	8fc20064 	lw	v0,100(s8)
  41b448:	00000000 	nop
  41b44c:	244200e0 	addiu	v0,v0,224
  41b450:	afc20048 	sw	v0,72(s8)
  41b454:	8fc40074 	lw	a0,116(s8)
  41b458:	8fc50048 	lw	a1,72(s8)
  41b45c:	8f998028 	lw	t9,-32728(gp)
  41b460:	00000000 	nop
  41b464:	2739adfc 	addiu	t9,t9,-20996
  41b468:	00000000 	nop
  41b46c:	0320f809 	jalr	t9
  41b470:	00000000 	nop
  41b474:	8fdc0018 	lw	gp,24(s8)
  41b478:	14400035 	bnez	v0,41b550 <fc_try+0x508>
  41b47c:	00000000 	nop
  41b480:	10000007 	b	41b4a0 <fc_try+0x458>
  41b484:	00000000 	nop
			    continue;
#endif
		}
	    }
	    else
	    {
		if (!peer_net_is_host)
  41b488:	8fc20040 	lw	v0,64(s8)
  41b48c:	00000000 	nop
  41b490:	14400003 	bnez	v0,41b4a0 <fc_try+0x458>
  41b494:	00000000 	nop
		    continue;
  41b498:	1000002d 	b	41b550 <fc_try+0x508>
  41b49c:	00000000 	nop
	    }
	}

	/* we've run the gauntlet -- success */
	if (routed(d->routing))
  41b4a0:	8fc20028 	lw	v0,40(s8)
  41b4a4:	00000000 	nop
  41b4a8:	8c42019c 	lw	v0,412(v0)
  41b4ac:	00000000 	nop
  41b4b0:	2c420002 	sltiu	v0,v0,2
  41b4b4:	14400006 	bnez	v0,41b4d0 <fc_try+0x488>
  41b4b8:	00000000 	nop
	{
	    best = d;
  41b4bc:	8fc20028 	lw	v0,40(s8)
  41b4c0:	00000000 	nop
  41b4c4:	afc2002c 	sw	v0,44(s8)
	    break;
  41b4c8:	10000028 	b	41b56c <fc_try+0x524>
  41b4cc:	00000000 	nop
	}

	if (best == NULL || wildcards < best_wildcards
	    || (wildcards == best_wildcards && pathlen < best_pathlen))
  41b4d0:	8fc2002c 	lw	v0,44(s8)
  41b4d4:	00000000 	nop
  41b4d8:	10400014 	beqz	v0,41b52c <fc_try+0x4e4>
  41b4dc:	00000000 	nop
  41b4e0:	8fc20030 	lw	v0,48(s8)
  41b4e4:	8fc30034 	lw	v1,52(s8)
  41b4e8:	00000000 	nop
  41b4ec:	0043102a 	slt	v0,v0,v1
  41b4f0:	1440000e 	bnez	v0,41b52c <fc_try+0x4e4>
  41b4f4:	00000000 	nop
  41b4f8:	8fc30030 	lw	v1,48(s8)
  41b4fc:	8fc20034 	lw	v0,52(s8)
  41b500:	00000000 	nop
  41b504:	14620012 	bne	v1,v0,41b550 <fc_try+0x508>
  41b508:	00000000 	nop
  41b50c:	8fc20038 	lw	v0,56(s8)
  41b510:	8fc3003c 	lw	v1,60(s8)
  41b514:	00000000 	nop
  41b518:	0043102a 	slt	v0,v0,v1
  41b51c:	14400003 	bnez	v0,41b52c <fc_try+0x4e4>
  41b520:	00000000 	nop
  41b524:	1000000a 	b	41b550 <fc_try+0x508>
  41b528:	00000000 	nop
	{
	    best = d;
  41b52c:	8fc20028 	lw	v0,40(s8)
  41b530:	00000000 	nop
  41b534:	afc2002c 	sw	v0,44(s8)
	    best_wildcards = wildcards;
  41b538:	8fc20030 	lw	v0,48(s8)
  41b53c:	00000000 	nop
  41b540:	afc20034 	sw	v0,52(s8)
	    best_pathlen = pathlen;
  41b544:	8fc20038 	lw	v0,56(s8)
  41b548:	00000000 	nop
  41b54c:	afc2003c 	sw	v0,60(s8)
  41b550:	8fc20028 	lw	v0,40(s8)
  41b554:	00000000 	nop
  41b558:	8c4201c8 	lw	v0,456(v0)
  41b55c:	00000000 	nop
  41b560:	afc20028 	sw	v0,40(s8)
  41b564:	1000fef1 	b	41b12c <fc_try+0xe4>
  41b568:	00000000 	nop
	}
   }
    return best;
  41b56c:	8fc2002c 	lw	v0,44(s8)
  41b570:	00000000 	nop
}
  41b574:	03c0e821 	move	sp,s8
  41b578:	8fbf0058 	lw	ra,88(sp)
  41b57c:	8fbe0054 	lw	s8,84(sp)
  41b580:	27bd0060 	addiu	sp,sp,96
  41b584:	03e00008 	jr	ra
  41b588:	00000000 	nop

0041b58c <find_client_connection>:
  41b58c:	3c1c0fbf 	lui	gp,0xfbf
  41b590:	279c13e4 	addiu	gp,gp,5092
  41b594:	0399e021 	addu	gp,gp,t9
  41b598:	27bdff80 	addiu	sp,sp,-128
  41b59c:	afbc0028 	sw	gp,40(sp)
  41b5a0:	afbf0078 	sw	ra,120(sp)
  41b5a4:	afbe0074 	sw	s8,116(sp)
  41b5a8:	afbc0070 	sw	gp,112(sp)
  41b5ac:	03a0f021 	move	s8,sp
  41b5b0:	afc40080 	sw	a0,128(s8)
  41b5b4:	afc50084 	sw	a1,132(s8)
  41b5b8:	afc60088 	sw	a2,136(s8)
  41b5bc:	00e01021 	move	v0,a3
  41b5c0:	a3c20030 	sb	v0,48(s8)
  41b5c4:	8fc20090 	lw	v0,144(s8)
  41b5c8:	00000000 	nop
  41b5cc:	a7c20032 	sh	v0,50(s8)
  41b5d0:	8fc20094 	lw	v0,148(s8)
  41b5d4:	00000000 	nop
  41b5d8:	a3c20034 	sb	v0,52(s8)
  41b5dc:	8fc20098 	lw	v0,152(s8)
  41b5e0:	00000000 	nop
  41b5e4:	a7c20036 	sh	v0,54(s8)

struct connection *
find_client_connection(struct connection *c
, const ip_subnet *our_net, const ip_subnet *peer_net
, const u_int8_t our_protocol, const u_int16_t our_port
, const u_int8_t peer_protocol, const u_int16_t peer_port)
{
    struct connection *d;

    /* give priority to current connection
     * but even greater priority to a routed concrete connection
     */
    {
	struct connection *unrouted = NULL;
  41b5e8:	afc0003c 	sw	zero,60(s8)

	if (samesubnet(&c->this.client, our_net)
	&& samesubnet(&c->that.client, peer_net)
	&& (c->this.protocol == our_protocol)
	&& (c->this.port == our_port)
	&& (c->that.protocol == peer_protocol)
	&& (c->that.port == peer_port))
  41b5ec:	8fc20080 	lw	v0,128(s8)
  41b5f0:	00000000 	nop
  41b5f4:	24420090 	addiu	v0,v0,144
  41b5f8:	00402021 	move	a0,v0
  41b5fc:	8fc50084 	lw	a1,132(s8)
  41b600:	8f9983e8 	lw	t9,-31768(gp)
  41b604:	00000000 	nop
  41b608:	0320f809 	jalr	t9
  41b60c:	00000000 	nop
  41b610:	8fdc0028 	lw	gp,40(s8)
  41b614:	10400049 	beqz	v0,41b73c <find_client_connection+0x1b0>
  41b618:	00000000 	nop
  41b61c:	8fc20080 	lw	v0,128(s8)
  41b620:	00000000 	nop
  41b624:	24420140 	addiu	v0,v0,320
  41b628:	00402021 	move	a0,v0
  41b62c:	8fc50088 	lw	a1,136(s8)
  41b630:	8f9983e8 	lw	t9,-31768(gp)
  41b634:	00000000 	nop
  41b638:	0320f809 	jalr	t9
  41b63c:	00000000 	nop
  41b640:	8fdc0028 	lw	gp,40(s8)
  41b644:	1040003d 	beqz	v0,41b73c <find_client_connection+0x1b0>
  41b648:	00000000 	nop
  41b64c:	8fc20080 	lw	v0,128(s8)
  41b650:	00000000 	nop
  41b654:	904300cc 	lbu	v1,204(v0)
  41b658:	93c20030 	lbu	v0,48(s8)
  41b65c:	00000000 	nop
  41b660:	14620036 	bne	v1,v0,41b73c <find_client_connection+0x1b0>
  41b664:	00000000 	nop
  41b668:	8fc20080 	lw	v0,128(s8)
  41b66c:	00000000 	nop
  41b670:	944300ca 	lhu	v1,202(v0)
  41b674:	97c20032 	lhu	v0,50(s8)
  41b678:	00000000 	nop
  41b67c:	1462002f 	bne	v1,v0,41b73c <find_client_connection+0x1b0>
  41b680:	00000000 	nop
  41b684:	8fc20080 	lw	v0,128(s8)
  41b688:	00000000 	nop
  41b68c:	9043017c 	lbu	v1,380(v0)
  41b690:	93c20034 	lbu	v0,52(s8)
  41b694:	00000000 	nop
  41b698:	14620028 	bne	v1,v0,41b73c <find_client_connection+0x1b0>
  41b69c:	00000000 	nop
  41b6a0:	8fc20080 	lw	v0,128(s8)
  41b6a4:	00000000 	nop
  41b6a8:	9443017a 	lhu	v1,378(v0)
  41b6ac:	97c20036 	lhu	v0,54(s8)
  41b6b0:	00000000 	nop
  41b6b4:	14620021 	bne	v1,v0,41b73c <find_client_connection+0x1b0>
  41b6b8:	00000000 	nop
	{
	    passert(oriented(*c));
  41b6bc:	8fc20080 	lw	v0,128(s8)
  41b6c0:	00000000 	nop
  41b6c4:	8c420198 	lw	v0,408(v0)
  41b6c8:	00000000 	nop
  41b6cc:	1440000e 	bnez	v0,41b708 <find_client_connection+0x17c>
  41b6d0:	00000000 	nop
  41b6d4:	8f848020 	lw	a0,-32736(gp)
  41b6d8:	00000000 	nop
  41b6dc:	24846124 	addiu	a0,a0,24868
  41b6e0:	8f858020 	lw	a1,-32736(gp)
  41b6e4:	00000000 	nop
  41b6e8:	24a554a4 	addiu	a1,a1,21668
  41b6ec:	2406095d 	li	a2,2397
  41b6f0:	8f998bb8 	lw	t9,-29768(gp)
  41b6f4:	00000000 	nop
  41b6f8:	0320f809 	jalr	t9
  41b6fc:	00000000 	nop
  41b700:	8fdc0028 	lw	gp,40(s8)
  41b704:	00000000 	nop
	    if (routed(c->routing))
  41b708:	8fc20080 	lw	v0,128(s8)
  41b70c:	00000000 	nop
  41b710:	8c42019c 	lw	v0,412(v0)
  41b714:	00000000 	nop
  41b718:	2c420002 	sltiu	v0,v0,2
  41b71c:	14400004 	bnez	v0,41b730 <find_client_connection+0x1a4>
  41b720:	00000000 	nop
		return c;
  41b724:	8fc20080 	lw	v0,128(s8)
  41b728:	1000009a 	b	41b994 <find_client_connection+0x408>
  41b72c:	00000000 	nop

	    unrouted = c;
  41b730:	8fc20080 	lw	v0,128(s8)
  41b734:	00000000 	nop
  41b738:	afc2003c 	sw	v0,60(s8)
	}

	/* exact match? */
	d = fc_try(FALSE, c, c->host_pair, NULL, our_net, peer_net
  41b73c:	8fc20084 	lw	v0,132(s8)
  41b740:	00000000 	nop
  41b744:	afa20010 	sw	v0,16(sp)
  41b748:	8fc20088 	lw	v0,136(s8)
  41b74c:	00000000 	nop
  41b750:	afa20014 	sw	v0,20(sp)
  41b754:	93c20030 	lbu	v0,48(s8)
  41b758:	00000000 	nop
  41b75c:	afa20018 	sw	v0,24(sp)
  41b760:	97c20032 	lhu	v0,50(s8)
  41b764:	00000000 	nop
  41b768:	afa2001c 	sw	v0,28(sp)
  41b76c:	93c20034 	lbu	v0,52(s8)
  41b770:	00000000 	nop
  41b774:	afa20020 	sw	v0,32(sp)
  41b778:	97c20036 	lhu	v0,54(s8)
  41b77c:	00000000 	nop
  41b780:	afa20024 	sw	v0,36(sp)
  41b784:	00002021 	move	a0,zero
  41b788:	8fc50080 	lw	a1,128(s8)
  41b78c:	8fc20080 	lw	v0,128(s8)
  41b790:	00000000 	nop
  41b794:	8c4601c4 	lw	a2,452(v0)
  41b798:	00003821 	move	a3,zero
  41b79c:	8f998028 	lw	t9,-32728(gp)
  41b7a0:	00000000 	nop
  41b7a4:	2739b048 	addiu	t9,t9,-20408
  41b7a8:	00000000 	nop
  41b7ac:	0320f809 	jalr	t9
  41b7b0:	00000000 	nop
  41b7b4:	8fdc0028 	lw	gp,40(s8)
  41b7b8:	afc20038 	sw	v0,56(s8)
	    , our_protocol, our_port, peer_protocol, peer_port);
	if (d == NULL)
  41b7bc:	8fc20038 	lw	v0,56(s8)
  41b7c0:	00000000 	nop
  41b7c4:	14400004 	bnez	v0,41b7d8 <find_client_connection+0x24c>
  41b7c8:	00000000 	nop
	    d = unrouted;
  41b7cc:	8fc2003c 	lw	v0,60(s8)
  41b7d0:	00000000 	nop
  41b7d4:	afc20038 	sw	v0,56(s8)
    }

    if (d == NULL)
  41b7d8:	8fc20038 	lw	v0,56(s8)
  41b7dc:	00000000 	nop
  41b7e0:	1440006a 	bnez	v0,41b98c <find_client_connection+0x400>
  41b7e4:	00000000 	nop
    {
	/* look for an abstract connection to match */
	struct host_pair *const hp = find_host_pair(&c->this.host_addr
  41b7e8:	8fc20080 	lw	v0,128(s8)
  41b7ec:	00000000 	nop
  41b7f0:	24440058 	addiu	a0,v0,88
  41b7f4:	8fc20080 	lw	v0,128(s8)
  41b7f8:	00000000 	nop
  41b7fc:	944300c8 	lhu	v1,200(v0)
  41b800:	8fc20080 	lw	v0,128(s8)
  41b804:	00000000 	nop
  41b808:	94420178 	lhu	v0,376(v0)
  41b80c:	00602821 	move	a1,v1
  41b810:	00003021 	move	a2,zero
  41b814:	00403821 	move	a3,v0
  41b818:	8f998024 	lw	t9,-32732(gp)
  41b81c:	00000000 	nop
  41b820:	27392834 	addiu	t9,t9,10292
  41b824:	00000000 	nop
  41b828:	0320f809 	jalr	t9
  41b82c:	00000000 	nop
  41b830:	8fdc0028 	lw	gp,40(s8)
  41b834:	afc20040 	sw	v0,64(s8)
	    , c->this.host_port, NULL, c->that.host_port);

	if (hp != NULL)
  41b838:	8fc20040 	lw	v0,64(s8)
  41b83c:	00000000 	nop
  41b840:	10400052 	beqz	v0,41b98c <find_client_connection+0x400>
  41b844:	00000000 	nop
	{
	    struct id abstract_peer_id;

	    abstract_peer_id.kind = ID_NONE;
  41b848:	afc00048 	sw	zero,72(s8)

	    /* RW match with actual peer_id or abstract peer_id? */
	    d = fc_try(FALSE, c, hp, NULL, our_net, peer_net
  41b84c:	8fc20084 	lw	v0,132(s8)
  41b850:	00000000 	nop
  41b854:	afa20010 	sw	v0,16(sp)
  41b858:	8fc20088 	lw	v0,136(s8)
  41b85c:	00000000 	nop
  41b860:	afa20014 	sw	v0,20(sp)
  41b864:	93c20030 	lbu	v0,48(s8)
  41b868:	00000000 	nop
  41b86c:	afa20018 	sw	v0,24(sp)
  41b870:	97c20032 	lhu	v0,50(s8)
  41b874:	00000000 	nop
  41b878:	afa2001c 	sw	v0,28(sp)
  41b87c:	93c20034 	lbu	v0,52(s8)
  41b880:	00000000 	nop
  41b884:	afa20020 	sw	v0,32(sp)
  41b888:	97c20036 	lhu	v0,54(s8)
  41b88c:	00000000 	nop
  41b890:	afa20024 	sw	v0,36(sp)
  41b894:	00002021 	move	a0,zero
  41b898:	8fc50080 	lw	a1,128(s8)
  41b89c:	8fc60040 	lw	a2,64(s8)
  41b8a0:	00003821 	move	a3,zero
  41b8a4:	8f998028 	lw	t9,-32728(gp)
  41b8a8:	00000000 	nop
  41b8ac:	2739b048 	addiu	t9,t9,-20408
  41b8b0:	00000000 	nop
  41b8b4:	0320f809 	jalr	t9
  41b8b8:	00000000 	nop
  41b8bc:	8fdc0028 	lw	gp,40(s8)
  41b8c0:	afc20038 	sw	v0,56(s8)
		, our_protocol, our_port, peer_protocol, peer_port);

	    if (d == NULL
	    && subnetishost(our_net)
	    && subnetishost(peer_net))
  41b8c4:	8fc20038 	lw	v0,56(s8)
  41b8c8:	00000000 	nop
  41b8cc:	1440002f 	bnez	v0,41b98c <find_client_connection+0x400>
  41b8d0:	00000000 	nop
  41b8d4:	8fc40084 	lw	a0,132(s8)
  41b8d8:	8f99851c 	lw	t9,-31460(gp)
  41b8dc:	00000000 	nop
  41b8e0:	0320f809 	jalr	t9
  41b8e4:	00000000 	nop
  41b8e8:	8fdc0028 	lw	gp,40(s8)
  41b8ec:	10400027 	beqz	v0,41b98c <find_client_connection+0x400>
  41b8f0:	00000000 	nop
  41b8f4:	8fc40088 	lw	a0,136(s8)
  41b8f8:	8f99851c 	lw	t9,-31460(gp)
  41b8fc:	00000000 	nop
  41b900:	0320f809 	jalr	t9
  41b904:	00000000 	nop
  41b908:	8fdc0028 	lw	gp,40(s8)
  41b90c:	1040001f 	beqz	v0,41b98c <find_client_connection+0x400>
  41b910:	00000000 	nop
	    {
		/* Opportunistic match?
		 * Always use abstract peer_id.
		 * Note that later instantiation will result in the same peer_id.
		 */
		d = fc_try(TRUE, c, hp, &abstract_peer_id, our_net, peer_net
  41b914:	8fc20084 	lw	v0,132(s8)
  41b918:	00000000 	nop
  41b91c:	afa20010 	sw	v0,16(sp)
  41b920:	8fc20088 	lw	v0,136(s8)
  41b924:	00000000 	nop
  41b928:	afa20014 	sw	v0,20(sp)
  41b92c:	93c20030 	lbu	v0,48(s8)
  41b930:	00000000 	nop
  41b934:	afa20018 	sw	v0,24(sp)
  41b938:	97c20032 	lhu	v0,50(s8)
  41b93c:	00000000 	nop
  41b940:	afa2001c 	sw	v0,28(sp)
  41b944:	93c20034 	lbu	v0,52(s8)
  41b948:	00000000 	nop
  41b94c:	afa20020 	sw	v0,32(sp)
  41b950:	97c20036 	lhu	v0,54(s8)
  41b954:	00000000 	nop
  41b958:	afa20024 	sw	v0,36(sp)
  41b95c:	24040001 	li	a0,1
  41b960:	8fc50080 	lw	a1,128(s8)
  41b964:	8fc60040 	lw	a2,64(s8)
  41b968:	27c70048 	addiu	a3,s8,72
  41b96c:	8f998028 	lw	t9,-32728(gp)
  41b970:	00000000 	nop
  41b974:	2739b048 	addiu	t9,t9,-20408
  41b978:	00000000 	nop
  41b97c:	0320f809 	jalr	t9
  41b980:	00000000 	nop
  41b984:	8fdc0028 	lw	gp,40(s8)
  41b988:	afc20038 	sw	v0,56(s8)
		    , our_protocol, our_port, peer_protocol, peer_port);
	    }
	}
    }

    return d;
  41b98c:	8fc20038 	lw	v0,56(s8)
  41b990:	00000000 	nop
}
  41b994:	03c0e821 	move	sp,s8
  41b998:	8fbf0078 	lw	ra,120(sp)
  41b99c:	8fbe0074 	lw	s8,116(sp)
  41b9a0:	27bd0080 	addiu	sp,sp,128
  41b9a4:	03e00008 	jr	ra
  41b9a8:	00000000 	nop

0041b9ac <show_connections_status>:
  41b9ac:	3c1c0fbf 	lui	gp,0xfbf
  41b9b0:	279c0fc4 	addiu	gp,gp,4036
  41b9b4:	0399e021 	addu	gp,gp,t9
  41b9b8:	27bdf5e0 	addiu	sp,sp,-2592
  41b9bc:	afbc0028 	sw	gp,40(sp)
  41b9c0:	afbf0a1c 	sw	ra,2588(sp)
  41b9c4:	afbe0a18 	sw	s8,2584(sp)
  41b9c8:	afbc0a14 	sw	gp,2580(sp)
  41b9cc:	afb00a10 	sw	s0,2576(sp)
  41b9d0:	03a0f021 	move	s8,sp

void
show_connections_status(void)
{
    struct connection *c;

    for (c = connections; c != NULL; c = c->ac_next)
  41b9d4:	8f828018 	lw	v0,-32744(gp)
  41b9d8:	00000000 	nop
  41b9dc:	244206f0 	addiu	v0,v0,1776
  41b9e0:	8c420000 	lw	v0,0(v0)
  41b9e4:	00000000 	nop
  41b9e8:	afc20030 	sw	v0,48(s8)
  41b9ec:	8fc20030 	lw	v0,48(s8)
  41b9f0:	00000000 	nop
  41b9f4:	14400003 	bnez	v0,41ba04 <show_connections_status+0x58>
  41b9f8:	00000000 	nop
  41b9fc:	10000117 	b	41be5c <show_connections_status+0x4b0>
  41ba00:	00000000 	nop
    {
	const char *ifn = oriented(*c)? c->interface->rname : "";
  41ba04:	8fc20030 	lw	v0,48(s8)
  41ba08:	00000000 	nop
  41ba0c:	8c420198 	lw	v0,408(v0)
  41ba10:	00000000 	nop
  41ba14:	1040000a 	beqz	v0,41ba40 <show_connections_status+0x94>
  41ba18:	00000000 	nop
  41ba1c:	8fc20030 	lw	v0,48(s8)
  41ba20:	00000000 	nop
  41ba24:	8c420198 	lw	v0,408(v0)
  41ba28:	00000000 	nop
  41ba2c:	8c420004 	lw	v0,4(v0)
  41ba30:	00000000 	nop
  41ba34:	afc20a08 	sw	v0,2568(s8)
  41ba38:	10000006 	b	41ba54 <show_connections_status+0xa8>
  41ba3c:	00000000 	nop
  41ba40:	8f828020 	lw	v0,-32736(gp)
  41ba44:	00000000 	nop
  41ba48:	24425558 	addiu	v0,v0,21848
  41ba4c:	00000000 	nop
  41ba50:	afc20a08 	sw	v0,2568(s8)
  41ba54:	8fc20a08 	lw	v0,2568(s8)
  41ba58:	00000000 	nop
  41ba5c:	afc20034 	sw	v0,52(s8)
	char instance[1 + 10 + 1];

	if (c->kind == CK_INSTANCE)
  41ba60:	8fc20030 	lw	v0,48(s8)
  41ba64:	00000000 	nop
  41ba68:	8c430194 	lw	v1,404(v0)
  41ba6c:	24020002 	li	v0,2
  41ba70:	14620010 	bne	v1,v0,41bab4 <show_connections_status+0x108>
  41ba74:	00000000 	nop
	    snprintf(instance, sizeof(instance), "[%lu]", c->instance_serial);
  41ba78:	27c40038 	addiu	a0,s8,56
  41ba7c:	2405000c 	li	a1,12
  41ba80:	8f868020 	lw	a2,-32736(gp)
  41ba84:	00000000 	nop
  41ba88:	24c65d50 	addiu	a2,a2,23888
  41ba8c:	8fc20030 	lw	v0,48(s8)
  41ba90:	00000000 	nop
  41ba94:	8c470190 	lw	a3,400(v0)
  41ba98:	8f998b38 	lw	t9,-29896(gp)
  41ba9c:	00000000 	nop
  41baa0:	0320f809 	jalr	t9
  41baa4:	00000000 	nop
  41baa8:	8fdc0028 	lw	gp,40(s8)
  41baac:	10000002 	b	41bab8 <show_connections_status+0x10c>
  41bab0:	00000000 	nop
	else
	    instance[0] = '\0';
  41bab4:	a3c00038 	sb	zero,56(s8)

	/* show topology */
	{
	    char lhs[SUBNETTOT_BUF + ADDRTOT_BUF + IDTOA_BUF + ADDRTOT_BUF];
	    char rhs[SUBNETTOT_BUF + ADDRTOT_BUF + IDTOA_BUF + ADDRTOT_BUF];

	    (void) format_end(lhs, sizeof(lhs), &c->this, &c->that, TRUE);
  41bab8:	8fc20030 	lw	v0,48(s8)
  41babc:	00000000 	nop
  41bac0:	24460030 	addiu	a2,v0,48
  41bac4:	8fc20030 	lw	v0,48(s8)
  41bac8:	00000000 	nop
  41bacc:	244300e0 	addiu	v1,v0,224
  41bad0:	24020001 	li	v0,1
  41bad4:	afa20010 	sw	v0,16(sp)
  41bad8:	27c40048 	addiu	a0,s8,72
  41badc:	240502df 	li	a1,735
  41bae0:	00603821 	move	a3,v1
  41bae4:	8f998464 	lw	t9,-31644(gp)
  41bae8:	00000000 	nop
  41baec:	0320f809 	jalr	t9
  41baf0:	00000000 	nop
  41baf4:	8fdc0028 	lw	gp,40(s8)
  41baf8:	00000000 	nop
	    (void) format_end(rhs, sizeof(rhs), &c->that, &c->this, FALSE);
  41bafc:	8fc20030 	lw	v0,48(s8)
  41bb00:	00000000 	nop
  41bb04:	244300e0 	addiu	v1,v0,224
  41bb08:	8fc20030 	lw	v0,48(s8)
  41bb0c:	00000000 	nop
  41bb10:	24420030 	addiu	v0,v0,48
  41bb14:	afa00010 	sw	zero,16(sp)
  41bb18:	27c40328 	addiu	a0,s8,808
  41bb1c:	240502df 	li	a1,735
  41bb20:	00603021 	move	a2,v1
  41bb24:	00403821 	move	a3,v0
  41bb28:	8f998464 	lw	t9,-31644(gp)
  41bb2c:	00000000 	nop
  41bb30:	0320f809 	jalr	t9
  41bb34:	00000000 	nop
  41bb38:	8fdc0028 	lw	gp,40(s8)
  41bb3c:	00000000 	nop

	    /* Display on one line.
	     * We used to split the line if would be long, but that makes
	     * output less consistent.
	     */
	    whack_log(RC_COMMENT, "\"%s\"%s: %s...%s"
  41bb40:	27c20048 	addiu	v0,s8,72
  41bb44:	afa20010 	sw	v0,16(sp)
  41bb48:	27c20328 	addiu	v0,s8,808
  41bb4c:	afa20014 	sw	v0,20(sp)
  41bb50:	00002021 	move	a0,zero
  41bb54:	8f858020 	lw	a1,-32736(gp)
  41bb58:	00000000 	nop
  41bb5c:	24a561cc 	addiu	a1,a1,25036
  41bb60:	8fc20030 	lw	v0,48(s8)
  41bb64:	00000000 	nop
  41bb68:	8c460000 	lw	a2,0(v0)
  41bb6c:	27c70038 	addiu	a3,s8,56
  41bb70:	8f9982a8 	lw	t9,-32088(gp)
  41bb74:	00000000 	nop
  41bb78:	0320f809 	jalr	t9
  41bb7c:	00000000 	nop
  41bb80:	8fdc0028 	lw	gp,40(s8)
  41bb84:	00000000 	nop
		, c->name, instance, lhs, rhs);
	}

	/* show CAs */
	{
	    char this_ca[IDTOA_BUF], that_ca[IDTOA_BUF];

	    dntoa_or_null(this_ca, IDTOA_BUF, c->this.ca, "%any");
  41bb88:	8fc30030 	lw	v1,48(s8)
  41bb8c:	8f828020 	lw	v0,-32736(gp)
  41bb90:	00000000 	nop
  41bb94:	24425604 	addiu	v0,v0,22020
  41bb98:	00000000 	nop
  41bb9c:	afa20010 	sw	v0,16(sp)
  41bba0:	27c40608 	addiu	a0,s8,1544
  41bba4:	24050200 	li	a1,512
  41bba8:	8c6600d4 	lw	a2,212(v1)
  41bbac:	8c6700d8 	lw	a3,216(v1)
  41bbb0:	8f99876c 	lw	t9,-30868(gp)
  41bbb4:	00000000 	nop
  41bbb8:	0320f809 	jalr	t9
  41bbbc:	00000000 	nop
  41bbc0:	8fdc0028 	lw	gp,40(s8)
  41bbc4:	00000000 	nop
	    dntoa_or_null(that_ca, IDTOA_BUF, c->that.ca, "%any");
  41bbc8:	8fc30030 	lw	v1,48(s8)
  41bbcc:	8f828020 	lw	v0,-32736(gp)
  41bbd0:	00000000 	nop
  41bbd4:	24425604 	addiu	v0,v0,22020
  41bbd8:	00000000 	nop
  41bbdc:	afa20010 	sw	v0,16(sp)
  41bbe0:	27c40808 	addiu	a0,s8,2056
  41bbe4:	24050200 	li	a1,512
  41bbe8:	8c660184 	lw	a2,388(v1)
  41bbec:	8c670188 	lw	a3,392(v1)
  41bbf0:	8f99876c 	lw	t9,-30868(gp)
  41bbf4:	00000000 	nop
  41bbf8:	0320f809 	jalr	t9
  41bbfc:	00000000 	nop
  41bc00:	8fdc0028 	lw	gp,40(s8)
  41bc04:	00000000 	nop

	    whack_log(RC_COMMENT
  41bc08:	27c20608 	addiu	v0,s8,1544
  41bc0c:	afa20010 	sw	v0,16(sp)
  41bc10:	27c20808 	addiu	v0,s8,2056
  41bc14:	afa20014 	sw	v0,20(sp)
  41bc18:	00002021 	move	a0,zero
  41bc1c:	8f858020 	lw	a1,-32736(gp)
  41bc20:	00000000 	nop
  41bc24:	24a561dc 	addiu	a1,a1,25052
  41bc28:	8fc20030 	lw	v0,48(s8)
  41bc2c:	00000000 	nop
  41bc30:	8c460000 	lw	a2,0(v0)
  41bc34:	27c70038 	addiu	a3,s8,56
  41bc38:	8f9982a8 	lw	t9,-32088(gp)
  41bc3c:	00000000 	nop
  41bc40:	0320f809 	jalr	t9
  41bc44:	00000000 	nop
  41bc48:	8fdc0028 	lw	gp,40(s8)
  41bc4c:	00000000 	nop
		, "\"%s\"%s:   CAs: '%s'...'%s'"
		, c->name
		, instance
		, this_ca
		, that_ca);
	}

	whack_log(RC_COMMENT
  41bc50:	8fc20030 	lw	v0,48(s8)
  41bc54:	00000000 	nop
  41bc58:	8c420010 	lw	v0,16(v0)
  41bc5c:	00000000 	nop
  41bc60:	afa20010 	sw	v0,16(sp)
  41bc64:	8fc20030 	lw	v0,48(s8)
  41bc68:	00000000 	nop
  41bc6c:	8c420014 	lw	v0,20(v0)
  41bc70:	00000000 	nop
  41bc74:	afa20014 	sw	v0,20(sp)
  41bc78:	8fc20030 	lw	v0,48(s8)
  41bc7c:	00000000 	nop
  41bc80:	8c420018 	lw	v0,24(v0)
  41bc84:	00000000 	nop
  41bc88:	afa20018 	sw	v0,24(sp)
  41bc8c:	8fc20030 	lw	v0,48(s8)
  41bc90:	00000000 	nop
  41bc94:	8c42001c 	lw	v0,28(v0)
  41bc98:	00000000 	nop
  41bc9c:	afa2001c 	sw	v0,28(sp)
  41bca0:	8fc20030 	lw	v0,48(s8)
  41bca4:	00000000 	nop
  41bca8:	8c420020 	lw	v0,32(v0)
  41bcac:	00000000 	nop
  41bcb0:	afa20020 	sw	v0,32(sp)
  41bcb4:	00002021 	move	a0,zero
  41bcb8:	8f858020 	lw	a1,-32736(gp)
  41bcbc:	00000000 	nop
  41bcc0:	24a561f8 	addiu	a1,a1,25080
  41bcc4:	8fc20030 	lw	v0,48(s8)
  41bcc8:	00000000 	nop
  41bccc:	8c460000 	lw	a2,0(v0)
  41bcd0:	27c70038 	addiu	a3,s8,56
  41bcd4:	8f9982a8 	lw	t9,-32088(gp)
  41bcd8:	00000000 	nop
  41bcdc:	0320f809 	jalr	t9
  41bce0:	00000000 	nop
  41bce4:	8fdc0028 	lw	gp,40(s8)
  41bce8:	00000000 	nop
	    , "\"%s\"%s:   ike_life: %lus; ipsec_life: %lus;"
	    " rekey_margin: %lus; rekey_fuzz: %lu%%; keyingtries: %lu"
	    , c->name
	    , instance
	    , (unsigned long) c->sa_ike_life_seconds
	    , (unsigned long) c->sa_ipsec_life_seconds
	    , (unsigned long) c->sa_rekey_margin
	    , (unsigned long) c->sa_rekey_fuzz
	    , (unsigned long) c->sa_keying_tries);

	whack_log(RC_COMMENT
  41bcec:	8f848968 	lw	a0,-30360(gp)
  41bcf0:	8fc20030 	lw	v0,48(s8)
  41bcf4:	00000000 	nop
  41bcf8:	8c460008 	lw	a2,8(v0)
  41bcfc:	8c47000c 	lw	a3,12(v0)
  41bd00:	8f9988c4 	lw	t9,-30524(gp)
  41bd04:	00000000 	nop
  41bd08:	0320f809 	jalr	t9
  41bd0c:	00000000 	nop
  41bd10:	8fdc0028 	lw	gp,40(s8)
  41bd14:	00408021 	move	s0,v0
  41bd18:	8f848564 	lw	a0,-31388(gp)
  41bd1c:	8fc20030 	lw	v0,48(s8)
  41bd20:	00000000 	nop
  41bd24:	8c45019c 	lw	a1,412(v0)
  41bd28:	8f9984bc 	lw	t9,-31556(gp)
  41bd2c:	00000000 	nop
  41bd30:	0320f809 	jalr	t9
  41bd34:	00000000 	nop
  41bd38:	8fdc0028 	lw	gp,40(s8)
  41bd3c:	00401821 	move	v1,v0
  41bd40:	afb00010 	sw	s0,16(sp)
  41bd44:	8fc20034 	lw	v0,52(s8)
  41bd48:	00000000 	nop
  41bd4c:	afa20014 	sw	v0,20(sp)
  41bd50:	afa30018 	sw	v1,24(sp)
  41bd54:	00002021 	move	a0,zero
  41bd58:	8f858020 	lw	a1,-32736(gp)
  41bd5c:	00000000 	nop
  41bd60:	24a5625c 	addiu	a1,a1,25180
  41bd64:	8fc20030 	lw	v0,48(s8)
  41bd68:	00000000 	nop
  41bd6c:	8c460000 	lw	a2,0(v0)
  41bd70:	27c70038 	addiu	a3,s8,56
  41bd74:	8f9982a8 	lw	t9,-32088(gp)
  41bd78:	00000000 	nop
  41bd7c:	0320f809 	jalr	t9
  41bd80:	00000000 	nop
  41bd84:	8fdc0028 	lw	gp,40(s8)
  41bd88:	00000000 	nop
	    , "\"%s\"%s:   policy: %s; interface: %s; %s"
	    , c->name
	    , instance
	    , bitnamesof(sa_policy_bit_names, c->policy)
	    , ifn
	    , enum_name(&routing_story, c->routing));

	whack_log(RC_COMMENT
  41bd8c:	8fc20030 	lw	v0,48(s8)
  41bd90:	00000000 	nop
  41bd94:	8c4201a4 	lw	v0,420(v0)
  41bd98:	00000000 	nop
  41bd9c:	afa20010 	sw	v0,16(sp)
  41bda0:	8fc20030 	lw	v0,48(s8)
  41bda4:	00000000 	nop
  41bda8:	8c4201a8 	lw	v0,424(v0)
  41bdac:	00000000 	nop
  41bdb0:	afa20014 	sw	v0,20(sp)
  41bdb4:	8fc20030 	lw	v0,48(s8)
  41bdb8:	00000000 	nop
  41bdbc:	8c4201ac 	lw	v0,428(v0)
  41bdc0:	00000000 	nop
  41bdc4:	afa20018 	sw	v0,24(sp)
  41bdc8:	00002021 	move	a0,zero
  41bdcc:	8f858020 	lw	a1,-32736(gp)
  41bdd0:	00000000 	nop
  41bdd4:	24a56284 	addiu	a1,a1,25220
  41bdd8:	8fc20030 	lw	v0,48(s8)
  41bddc:	00000000 	nop
  41bde0:	8c460000 	lw	a2,0(v0)
  41bde4:	27c70038 	addiu	a3,s8,56
  41bde8:	8f9982a8 	lw	t9,-32088(gp)
  41bdec:	00000000 	nop
  41bdf0:	0320f809 	jalr	t9
  41bdf4:	00000000 	nop
  41bdf8:	8fdc0028 	lw	gp,40(s8)
  41bdfc:	00000000 	nop
	    , "\"%s\"%s:   newest ISAKMP SA: #%ld; newest IPsec SA: #%ld; eroute owner: #%lu"
	    , c->name
	    , instance
	    , c->newest_isakmp_sa
	    , c->newest_ipsec_sa
	    , c->eroute_owner);
#ifndef NO_IKE_ALG
	ike_alg_show_connection(c, instance);
  41be00:	8fc40030 	lw	a0,48(s8)
  41be04:	27c50038 	addiu	a1,s8,56
  41be08:	8f998490 	lw	t9,-31600(gp)
  41be0c:	00000000 	nop
  41be10:	0320f809 	jalr	t9
  41be14:	00000000 	nop
  41be18:	8fdc0028 	lw	gp,40(s8)
  41be1c:	00000000 	nop
#endif
#ifndef NO_KERNEL_ALG
	kernel_alg_show_connection(c, instance);
  41be20:	8fc40030 	lw	a0,48(s8)
  41be24:	27c50038 	addiu	a1,s8,56
  41be28:	8f998b64 	lw	t9,-29852(gp)
  41be2c:	00000000 	nop
  41be30:	0320f809 	jalr	t9
  41be34:	00000000 	nop
  41be38:	8fdc0028 	lw	gp,40(s8)
  41be3c:	00000000 	nop
  41be40:	8fc20030 	lw	v0,48(s8)
  41be44:	00000000 	nop
  41be48:	8c4201cc 	lw	v0,460(v0)
  41be4c:	00000000 	nop
  41be50:	afc20030 	sw	v0,48(s8)
  41be54:	1000fee5 	b	41b9ec <show_connections_status+0x40>
  41be58:	00000000 	nop
#endif
    }
}
  41be5c:	03c0e821 	move	sp,s8
  41be60:	8fbf0a1c 	lw	ra,2588(sp)
  41be64:	8fbe0a18 	lw	s8,2584(sp)
  41be68:	8fb00a10 	lw	s0,2576(sp)
  41be6c:	27bd0a20 	addiu	sp,sp,2592
  41be70:	03e00008 	jr	ra
  41be74:	00000000 	nop

0041be78 <HasWildcardClient>:
  41be78:	3c1c0fbf 	lui	gp,0xfbf
  41be7c:	279c0af8 	addiu	gp,gp,2808
  41be80:	0399e021 	addu	gp,gp,t9
  41be84:	27bdffb8 	addiu	sp,sp,-72
  41be88:	afbc0010 	sw	gp,16(sp)
  41be8c:	afbf0040 	sw	ra,64(sp)
  41be90:	afbe003c 	sw	s8,60(sp)
  41be94:	afbc0038 	sw	gp,56(sp)
  41be98:	03a0f021 	move	s8,sp
  41be9c:	afc40048 	sw	a0,72(s8)

/* Is c->that.client 0.0.0.0/32 (or IPV6 equivalent)?
 * This, along with c->that.host being 0.0.0.0 signifies Opportunism.
 */
bool
HasWildcardClient(const struct connection *c)
{
    if (c->that.has_client && subnetishost(&c->that.client))
  41bea0:	8fc20048 	lw	v0,72(s8)
  41bea4:	00000000 	nop
  41bea8:	8c420164 	lw	v0,356(v0)
  41beac:	00000000 	nop
  41beb0:	10400022 	beqz	v0,41bf3c <HasWildcardClient+0xc4>
  41beb4:	00000000 	nop
  41beb8:	8fc20048 	lw	v0,72(s8)
  41bebc:	00000000 	nop
  41bec0:	24420140 	addiu	v0,v0,320
  41bec4:	00402021 	move	a0,v0
  41bec8:	8f99851c 	lw	t9,-31460(gp)
  41becc:	00000000 	nop
  41bed0:	0320f809 	jalr	t9
  41bed4:	00000000 	nop
  41bed8:	8fdc0010 	lw	gp,16(s8)
  41bedc:	10400017 	beqz	v0,41bf3c <HasWildcardClient+0xc4>
  41bee0:	00000000 	nop
    {
	ip_address addr;

	networkof(&c->that.client, &addr);
  41bee4:	8fc20048 	lw	v0,72(s8)
  41bee8:	00000000 	nop
  41beec:	24420140 	addiu	v0,v0,320
  41bef0:	00402021 	move	a0,v0
  41bef4:	27c50018 	addiu	a1,s8,24
  41bef8:	8f9985bc 	lw	t9,-31300(gp)
  41befc:	00000000 	nop
  41bf00:	0320f809 	jalr	t9
  41bf04:	00000000 	nop
  41bf08:	8fdc0010 	lw	gp,16(s8)
  41bf0c:	00000000 	nop
	if (isanyaddr(&addr))
  41bf10:	27c40018 	addiu	a0,s8,24
  41bf14:	8f998628 	lw	t9,-31192(gp)
  41bf18:	00000000 	nop
  41bf1c:	0320f809 	jalr	t9
  41bf20:	00000000 	nop
  41bf24:	8fdc0010 	lw	gp,16(s8)
  41bf28:	10400004 	beqz	v0,41bf3c <HasWildcardClient+0xc4>
  41bf2c:	00000000 	nop
	    return TRUE;
  41bf30:	24020001 	li	v0,1
  41bf34:	10000002 	b	41bf40 <HasWildcardClient+0xc8>
  41bf38:	00000000 	nop
    }
    return FALSE;
  41bf3c:	00001021 	move	v0,zero
}
  41bf40:	03c0e821 	move	sp,s8
  41bf44:	8fbf0040 	lw	ra,64(sp)
  41bf48:	8fbe003c 	lw	s8,60(sp)
  41bf4c:	27bd0048 	addiu	sp,sp,72
  41bf50:	03e00008 	jr	ra
  41bf54:	00000000 	nop

0041bf58 <EffectivePeerClient>:
  41bf58:	3c1c0fbf 	lui	gp,0xfbf
  41bf5c:	279c0a18 	addiu	gp,gp,2584
  41bf60:	0399e021 	addu	gp,gp,t9
  41bf64:	27bdffd0 	addiu	sp,sp,-48
  41bf68:	afbc0010 	sw	gp,16(sp)
  41bf6c:	afbf0028 	sw	ra,40(sp)
  41bf70:	afbe0024 	sw	s8,36(sp)
  41bf74:	afbc0020 	sw	gp,32(sp)
  41bf78:	03a0f021 	move	s8,sp
  41bf7c:	afc40030 	sw	a0,48(s8)

/* peer client, but for wildcard, subrange containing all */
const ip_subnet *
EffectivePeerClient(const struct connection *c)
{
    return c->kind == CK_TEMPLATE && HasWildcardClient(c)
  41bf80:	8fc20030 	lw	v0,48(s8)
  41bf84:	00000000 	nop
  41bf88:	8c420194 	lw	v0,404(v0)
  41bf8c:	00000000 	nop
  41bf90:	1440001d 	bnez	v0,41c008 <EffectivePeerClient+0xb0>
  41bf94:	00000000 	nop
  41bf98:	8fc40030 	lw	a0,48(s8)
  41bf9c:	8f998118 	lw	t9,-32488(gp)
  41bfa0:	00000000 	nop
  41bfa4:	0320f809 	jalr	t9
  41bfa8:	00000000 	nop
  41bfac:	8fdc0010 	lw	gp,16(s8)
  41bfb0:	10400015 	beqz	v0,41c008 <EffectivePeerClient+0xb0>
  41bfb4:	00000000 	nop
  41bfb8:	8fc20030 	lw	v0,48(s8)
  41bfbc:	00000000 	nop
  41bfc0:	24420140 	addiu	v0,v0,320
  41bfc4:	00402021 	move	a0,v0
  41bfc8:	8f998248 	lw	t9,-32184(gp)
  41bfcc:	00000000 	nop
  41bfd0:	0320f809 	jalr	t9
  41bfd4:	00000000 	nop
  41bfd8:	8fdc0010 	lw	gp,16(s8)
  41bfdc:	00402021 	move	a0,v0
  41bfe0:	8f998b94 	lw	t9,-29804(gp)
  41bfe4:	00000000 	nop
  41bfe8:	0320f809 	jalr	t9
  41bfec:	00000000 	nop
  41bff0:	8fdc0010 	lw	gp,16(s8)
  41bff4:	8c420020 	lw	v0,32(v0)
  41bff8:	00000000 	nop
  41bffc:	afc20018 	sw	v0,24(s8)
  41c000:	10000005 	b	41c018 <EffectivePeerClient+0xc0>
  41c004:	00000000 	nop
  41c008:	8fc20030 	lw	v0,48(s8)
  41c00c:	00000000 	nop
  41c010:	24420140 	addiu	v0,v0,320
  41c014:	afc20018 	sw	v0,24(s8)
  41c018:	8fc20018 	lw	v0,24(s8)
  41c01c:	00000000 	nop
	? aftoinfo(subnettypeof(&c->that.client))->all
	: &c->that.client;
}
  41c020:	03c0e821 	move	sp,s8
  41c024:	8fbf0028 	lw	ra,40(sp)
  41c028:	8fbe0024 	lw	s8,36(sp)
  41c02c:	27bd0030 	addiu	sp,sp,48
  41c030:	03e00008 	jr	ra
  41c034:	00000000 	nop

0041c038 <add_pending>:
  41c038:	3c1c0fbf 	lui	gp,0xfbf
  41c03c:	279c0938 	addiu	gp,gp,2360
  41c040:	0399e021 	addu	gp,gp,t9
  41c044:	27bdffd0 	addiu	sp,sp,-48
  41c048:	afbc0010 	sw	gp,16(sp)
  41c04c:	afbf0028 	sw	ra,40(sp)
  41c050:	afbe0024 	sw	s8,36(sp)
  41c054:	afbc0020 	sw	gp,32(sp)
  41c058:	03a0f021 	move	s8,sp
  41c05c:	afc40030 	sw	a0,48(s8)
  41c060:	afc50034 	sw	a1,52(s8)
  41c064:	afc60038 	sw	a2,56(s8)

/* struct pending, the structure representing Quick Mode
 * negotiations delayed until a Keying Channel has been negotiated.
 * Essentially, a pending call to quick_outI1.
 */

struct pending {
    int whack_sock;
    struct state *isakmp_sa;
    struct connection *connection;
    lset_t policy;
    unsigned long try;
    so_serial_t replacing;

    struct pending *next;
};

/* queue a Quick Mode negotiation pending completion of a suitable Main Mode */
void
add_pending(int whack_sock
, struct state *isakmp_sa
, struct connection *c
, lset_t policy
, unsigned long try
, so_serial_t replacing)
{
    struct pending *p = alloc_thing(struct pending, "struct pending");
  41c068:	24040028 	li	a0,40
  41c06c:	8f858020 	lw	a1,-32736(gp)
  41c070:	00000000 	nop
  41c074:	24a562d0 	addiu	a1,a1,25296
  41c078:	8f998084 	lw	t9,-32636(gp)
  41c07c:	00000000 	nop
  41c080:	0320f809 	jalr	t9
  41c084:	00000000 	nop
  41c088:	8fdc0010 	lw	gp,16(s8)
  41c08c:	afc20018 	sw	v0,24(s8)

    DBG(DBG_CONTROL, DBG_log("Queuing pending Quick Mode with %s \"%s\""
  41c090:	8f8284f8 	lw	v0,-31496(gp)
  41c094:	00000000 	nop
  41c098:	8c420000 	lw	v0,0(v0)
  41c09c:	00000000 	nop
  41c0a0:	30420010 	andi	v0,v0,0x10
  41c0a4:	10400018 	beqz	v0,41c108 <add_pending+0xd0>
  41c0a8:	00000000 	nop
  41c0ac:	8fc20038 	lw	v0,56(s8)
  41c0b0:	00000000 	nop
  41c0b4:	24420108 	addiu	v0,v0,264
  41c0b8:	00402021 	move	a0,v0
  41c0bc:	8f998100 	lw	t9,-32512(gp)
  41c0c0:	00000000 	nop
  41c0c4:	0320f809 	jalr	t9
  41c0c8:	00000000 	nop
  41c0cc:	8fdc0010 	lw	gp,16(s8)
  41c0d0:	00000000 	nop
  41c0d4:	8f848020 	lw	a0,-32736(gp)
  41c0d8:	00000000 	nop
  41c0dc:	248462e0 	addiu	a0,a0,25312
  41c0e0:	00402821 	move	a1,v0
  41c0e4:	8fc20038 	lw	v0,56(s8)
  41c0e8:	00000000 	nop
  41c0ec:	8c460000 	lw	a2,0(v0)
  41c0f0:	8f9983b8 	lw	t9,-31816(gp)
  41c0f4:	00000000 	nop
  41c0f8:	0320f809 	jalr	t9
  41c0fc:	00000000 	nop
  41c100:	8fdc0010 	lw	gp,16(s8)
  41c104:	00000000 	nop
	, ip_str(&c->that.host_addr)
	, c->name));
    p->whack_sock = whack_sock;
  41c108:	8fc30030 	lw	v1,48(s8)
  41c10c:	8fc20018 	lw	v0,24(s8)
  41c110:	00000000 	nop
  41c114:	ac430000 	sw	v1,0(v0)
    p->isakmp_sa = isakmp_sa;
  41c118:	8fc30034 	lw	v1,52(s8)
  41c11c:	8fc20018 	lw	v0,24(s8)
  41c120:	00000000 	nop
  41c124:	ac430004 	sw	v1,4(v0)
    p->connection = c;
  41c128:	8fc30038 	lw	v1,56(s8)
  41c12c:	8fc20018 	lw	v0,24(s8)
  41c130:	00000000 	nop
  41c134:	ac430008 	sw	v1,8(v0)
    p->policy = policy;
  41c138:	8fc20040 	lw	v0,64(s8)
  41c13c:	8fc30044 	lw	v1,68(s8)
  41c140:	8fc40018 	lw	a0,24(s8)
  41c144:	00000000 	nop
  41c148:	ac820010 	sw	v0,16(a0)
  41c14c:	ac830014 	sw	v1,20(a0)
    p->try = try;
  41c150:	8fc30048 	lw	v1,72(s8)
  41c154:	8fc20018 	lw	v0,24(s8)
  41c158:	00000000 	nop
  41c15c:	ac430018 	sw	v1,24(v0)
    p->replacing = replacing;
  41c160:	8fc3004c 	lw	v1,76(s8)
  41c164:	8fc20018 	lw	v0,24(s8)
  41c168:	00000000 	nop
  41c16c:	ac43001c 	sw	v1,28(v0)
    p->next = c->host_pair->pending;
  41c170:	8fc20038 	lw	v0,56(s8)
  41c174:	00000000 	nop
  41c178:	8c4201c4 	lw	v0,452(v0)
  41c17c:	00000000 	nop
  41c180:	8c430048 	lw	v1,72(v0)
  41c184:	8fc20018 	lw	v0,24(s8)
  41c188:	00000000 	nop
  41c18c:	ac430020 	sw	v1,32(v0)
    c->host_pair->pending = p;
  41c190:	8fc20038 	lw	v0,56(s8)
  41c194:	00000000 	nop
  41c198:	8c4301c4 	lw	v1,452(v0)
  41c19c:	8fc20018 	lw	v0,24(s8)
  41c1a0:	00000000 	nop
  41c1a4:	ac620048 	sw	v0,72(v1)
}
  41c1a8:	03c0e821 	move	sp,s8
  41c1ac:	8fbf0028 	lw	ra,40(sp)
  41c1b0:	8fbe0024 	lw	s8,36(sp)
  41c1b4:	27bd0030 	addiu	sp,sp,48
  41c1b8:	03e00008 	jr	ra
  41c1bc:	00000000 	nop

0041c1c0 <release_pending_whacks>:
  41c1c0:	3c1c0fbf 	lui	gp,0xfbf
  41c1c4:	279c07b0 	addiu	gp,gp,1968
  41c1c8:	0399e021 	addu	gp,gp,t9
  41c1cc:	27bdfeb0 	addiu	sp,sp,-336
  41c1d0:	afbc0010 	sw	gp,16(sp)
  41c1d4:	afbf0148 	sw	ra,328(sp)
  41c1d8:	afbe0144 	sw	s8,324(sp)
  41c1dc:	afbc0140 	sw	gp,320(sp)
  41c1e0:	03a0f021 	move	s8,sp
  41c1e4:	afc40150 	sw	a0,336(s8)
  41c1e8:	afc50154 	sw	a1,340(s8)

/* Release all the whacks awaiting the completion of this state.
 * This is accomplished by closing all the whack socket file descriptors.
 * We go to a lot of trouble to tell each whack, but to not tell it twice.
 */
void
release_pending_whacks(struct state *st, err_t story)
{
    struct pending *p;
    struct stat stst;

    if (st->st_whack_sock == NULL_FD || fstat(st->st_whack_sock, &stst) != 0)
  41c1ec:	8fc20150 	lw	v0,336(s8)
  41c1f0:	00000000 	nop
  41c1f4:	8c430014 	lw	v1,20(v0)
  41c1f8:	2402ffff 	li	v0,-1
  41c1fc:	1062000e 	beq	v1,v0,41c238 <release_pending_whacks+0x78>
  41c200:	00000000 	nop
  41c204:	8fc20150 	lw	v0,336(s8)
  41c208:	00000000 	nop
  41c20c:	8c440014 	lw	a0,20(v0)
  41c210:	27c50020 	addiu	a1,s8,32
  41c214:	8f998790 	lw	t9,-30832(gp)
  41c218:	00000000 	nop
  41c21c:	0320f809 	jalr	t9
  41c220:	00000000 	nop
  41c224:	8fdc0010 	lw	gp,16(s8)
  41c228:	14400003 	bnez	v0,41c238 <release_pending_whacks+0x78>
  41c22c:	00000000 	nop
  41c230:	1000000a 	b	41c25c <release_pending_whacks+0x9c>
  41c234:	00000000 	nop
	zero(&stst);	/* resulting st_dev/st_ino ought to be distinct */
  41c238:	27c40020 	addiu	a0,s8,32
  41c23c:	00002821 	move	a1,zero
  41c240:	24060090 	li	a2,144
  41c244:	8f998500 	lw	t9,-31488(gp)
  41c248:	00000000 	nop
  41c24c:	0320f809 	jalr	t9
  41c250:	00000000 	nop
  41c254:	8fdc0010 	lw	gp,16(s8)
  41c258:	00000000 	nop

    release_whack(st);
  41c25c:	8fc40150 	lw	a0,336(s8)
  41c260:	8f998750 	lw	t9,-30896(gp)
  41c264:	00000000 	nop
  41c268:	0320f809 	jalr	t9
  41c26c:	00000000 	nop
  41c270:	8fdc0010 	lw	gp,16(s8)
  41c274:	00000000 	nop

    for (p = st->st_connection->host_pair->pending; p != NULL; p = p->next)
  41c278:	8fc20150 	lw	v0,336(s8)
  41c27c:	00000000 	nop
  41c280:	8c42000c 	lw	v0,12(v0)
  41c284:	00000000 	nop
  41c288:	8c4201c4 	lw	v0,452(v0)
  41c28c:	00000000 	nop
  41c290:	8c420048 	lw	v0,72(v0)
  41c294:	00000000 	nop
  41c298:	afc20018 	sw	v0,24(s8)
  41c29c:	8fc20018 	lw	v0,24(s8)
  41c2a0:	00000000 	nop
  41c2a4:	14400003 	bnez	v0,41c2b4 <release_pending_whacks+0xf4>
  41c2a8:	00000000 	nop
  41c2ac:	10000061 	b	41c434 <release_pending_whacks+0x274>
  41c2b0:	00000000 	nop
    {
	if (p->isakmp_sa == st && p->whack_sock != NULL_FD)
  41c2b4:	8fc20018 	lw	v0,24(s8)
  41c2b8:	00000000 	nop
  41c2bc:	8c430004 	lw	v1,4(v0)
  41c2c0:	8fc20150 	lw	v0,336(s8)
  41c2c4:	00000000 	nop
  41c2c8:	14620053 	bne	v1,v0,41c418 <release_pending_whacks+0x258>
  41c2cc:	00000000 	nop
  41c2d0:	8fc20018 	lw	v0,24(s8)
  41c2d4:	00000000 	nop
  41c2d8:	8c430000 	lw	v1,0(v0)
  41c2dc:	2402ffff 	li	v0,-1
  41c2e0:	1062004d 	beq	v1,v0,41c418 <release_pending_whacks+0x258>
  41c2e4:	00000000 	nop
	{
	    struct stat pst;

	    if (fstat(p->whack_sock, &pst) == 0
	    && (stst.st_dev != pst.st_dev || stst.st_ino != pst.st_ino))
  41c2e8:	8fc20018 	lw	v0,24(s8)
  41c2ec:	00000000 	nop
  41c2f0:	8c440000 	lw	a0,0(v0)
  41c2f4:	27c500b0 	addiu	a1,s8,176
  41c2f8:	8f998790 	lw	t9,-30832(gp)
  41c2fc:	00000000 	nop
  41c300:	0320f809 	jalr	t9
  41c304:	00000000 	nop
  41c308:	8fdc0010 	lw	gp,16(s8)
  41c30c:	14400035 	bnez	v0,41c3e4 <release_pending_whacks+0x224>
  41c310:	00000000 	nop
  41c314:	8fc30020 	lw	v1,32(s8)
  41c318:	8fc200b0 	lw	v0,176(s8)
  41c31c:	00000000 	nop
  41c320:	14620008 	bne	v1,v0,41c344 <release_pending_whacks+0x184>
  41c324:	00000000 	nop
  41c328:	8fc30030 	lw	v1,48(s8)
  41c32c:	8fc200c0 	lw	v0,192(s8)
  41c330:	00000000 	nop
  41c334:	14620003 	bne	v1,v0,41c344 <release_pending_whacks+0x184>
  41c338:	00000000 	nop
  41c33c:	10000029 	b	41c3e4 <release_pending_whacks+0x224>
  41c340:	00000000 	nop
	    {
		passert(whack_log_fd == NULL_FD);
  41c344:	8f838994 	lw	v1,-30316(gp)
  41c348:	00000000 	nop
  41c34c:	8c630000 	lw	v1,0(v1)
  41c350:	2402ffff 	li	v0,-1
  41c354:	1062000e 	beq	v1,v0,41c390 <release_pending_whacks+0x1d0>
  41c358:	00000000 	nop
  41c35c:	8f848020 	lw	a0,-32736(gp)
  41c360:	00000000 	nop
  41c364:	24846308 	addiu	a0,a0,25352
  41c368:	8f858020 	lw	a1,-32736(gp)
  41c36c:	00000000 	nop
  41c370:	24a554a4 	addiu	a1,a1,21668
  41c374:	24060a37 	li	a2,2615
  41c378:	8f998bb8 	lw	t9,-29768(gp)
  41c37c:	00000000 	nop
  41c380:	0320f809 	jalr	t9
  41c384:	00000000 	nop
  41c388:	8fdc0010 	lw	gp,16(s8)
  41c38c:	00000000 	nop
		whack_log_fd = p->whack_sock;
  41c390:	8fc20018 	lw	v0,24(s8)
  41c394:	00000000 	nop
  41c398:	8c420000 	lw	v0,0(v0)
  41c39c:	8f818994 	lw	at,-30316(gp)
  41c3a0:	00000000 	nop
  41c3a4:	ac220000 	sw	v0,0(at)
		whack_log(RC_COMMENT
  41c3a8:	00002021 	move	a0,zero
  41c3ac:	8f858020 	lw	a1,-32736(gp)
  41c3b0:	00000000 	nop
  41c3b4:	24a56320 	addiu	a1,a1,25376
  41c3b8:	8fc60154 	lw	a2,340(s8)
  41c3bc:	8f9982a8 	lw	t9,-32088(gp)
  41c3c0:	00000000 	nop
  41c3c4:	0320f809 	jalr	t9
  41c3c8:	00000000 	nop
  41c3cc:	8fdc0010 	lw	gp,16(s8)
  41c3d0:	00000000 	nop
		    , "%s for ISAKMP SA, but releasing whack for pending IPSEC SA"
		    , story);
		whack_log_fd = NULL_FD;
  41c3d4:	2402ffff 	li	v0,-1
  41c3d8:	8f818994 	lw	at,-30316(gp)
  41c3dc:	00000000 	nop
  41c3e0:	ac220000 	sw	v0,0(at)
	    }
	    close(p->whack_sock);
  41c3e4:	8fc20018 	lw	v0,24(s8)
  41c3e8:	00000000 	nop
  41c3ec:	8c440000 	lw	a0,0(v0)
  41c3f0:	8f9980c8 	lw	t9,-32568(gp)
  41c3f4:	00000000 	nop
  41c3f8:	0320f809 	jalr	t9
  41c3fc:	00000000 	nop
  41c400:	8fdc0010 	lw	gp,16(s8)
  41c404:	00000000 	nop
	    p->whack_sock = NULL_FD;
  41c408:	2403ffff 	li	v1,-1
  41c40c:	8fc20018 	lw	v0,24(s8)
  41c410:	00000000 	nop
  41c414:	ac430000 	sw	v1,0(v0)
  41c418:	8fc20018 	lw	v0,24(s8)
  41c41c:	00000000 	nop
  41c420:	8c420020 	lw	v0,32(v0)
  41c424:	00000000 	nop
  41c428:	afc20018 	sw	v0,24(s8)
  41c42c:	1000ff9b 	b	41c29c <release_pending_whacks+0xdc>
  41c430:	00000000 	nop
	}
    }
}
  41c434:	03c0e821 	move	sp,s8
  41c438:	8fbf0148 	lw	ra,328(sp)
  41c43c:	8fbe0144 	lw	s8,324(sp)
  41c440:	27bd0150 	addiu	sp,sp,336
  41c444:	03e00008 	jr	ra
  41c448:	00000000 	nop

0041c44c <delete_pending>:
  41c44c:	3c1c0fbf 	lui	gp,0xfbf
  41c450:	279c0524 	addiu	gp,gp,1316
  41c454:	0399e021 	addu	gp,gp,t9
  41c458:	27bdffd0 	addiu	sp,sp,-48
  41c45c:	afbc0010 	sw	gp,16(sp)
  41c460:	afbf0028 	sw	ra,40(sp)
  41c464:	afbe0024 	sw	s8,36(sp)
  41c468:	afbc0020 	sw	gp,32(sp)
  41c46c:	03a0f021 	move	s8,sp
  41c470:	afc40030 	sw	a0,48(s8)

static void
delete_pending(struct pending **pp)
{
    struct pending *p = *pp;
  41c474:	8fc20030 	lw	v0,48(s8)
  41c478:	00000000 	nop
  41c47c:	8c420000 	lw	v0,0(v0)
  41c480:	00000000 	nop
  41c484:	afc20018 	sw	v0,24(s8)

    *pp = p->next;
  41c488:	8fc20018 	lw	v0,24(s8)
  41c48c:	00000000 	nop
  41c490:	8c430020 	lw	v1,32(v0)
  41c494:	8fc20030 	lw	v0,48(s8)
  41c498:	00000000 	nop
  41c49c:	ac430000 	sw	v1,0(v0)
    if (p->connection != NULL)
  41c4a0:	8fc20018 	lw	v0,24(s8)
  41c4a4:	00000000 	nop
  41c4a8:	8c420008 	lw	v0,8(v0)
  41c4ac:	00000000 	nop
  41c4b0:	1040000a 	beqz	v0,41c4dc <delete_pending+0x90>
  41c4b4:	00000000 	nop
	connection_discard(p->connection);
  41c4b8:	8fc20018 	lw	v0,24(s8)
  41c4bc:	00000000 	nop
  41c4c0:	8c440008 	lw	a0,8(v0)
  41c4c4:	8f998a2c 	lw	t9,-30164(gp)
  41c4c8:	00000000 	nop
  41c4cc:	0320f809 	jalr	t9
  41c4d0:	00000000 	nop
  41c4d4:	8fdc0010 	lw	gp,16(s8)
  41c4d8:	00000000 	nop
    close_any(p->whack_sock);
  41c4dc:	8fc20018 	lw	v0,24(s8)
  41c4e0:	00000000 	nop
  41c4e4:	8c430000 	lw	v1,0(v0)
  41c4e8:	2402ffff 	li	v0,-1
  41c4ec:	1062000d 	beq	v1,v0,41c524 <delete_pending+0xd8>
  41c4f0:	00000000 	nop
  41c4f4:	8fc20018 	lw	v0,24(s8)
  41c4f8:	00000000 	nop
  41c4fc:	8c440000 	lw	a0,0(v0)
  41c500:	8f9980c8 	lw	t9,-32568(gp)
  41c504:	00000000 	nop
  41c508:	0320f809 	jalr	t9
  41c50c:	00000000 	nop
  41c510:	8fdc0010 	lw	gp,16(s8)
  41c514:	2403ffff 	li	v1,-1
  41c518:	8fc20018 	lw	v0,24(s8)
  41c51c:	00000000 	nop
  41c520:	ac430000 	sw	v1,0(v0)
    pfree(p);
  41c524:	8fc40018 	lw	a0,24(s8)
  41c528:	8f998094 	lw	t9,-32620(gp)
  41c52c:	00000000 	nop
  41c530:	0320f809 	jalr	t9
  41c534:	00000000 	nop
  41c538:	8fdc0010 	lw	gp,16(s8)
  41c53c:	00000000 	nop
}
  41c540:	03c0e821 	move	sp,s8
  41c544:	8fbf0028 	lw	ra,40(sp)
  41c548:	8fbe0024 	lw	s8,36(sp)
  41c54c:	27bd0030 	addiu	sp,sp,48
  41c550:	03e00008 	jr	ra
  41c554:	00000000 	nop

0041c558 <unpend>:
  41c558:	3c1c0fbf 	lui	gp,0xfbf
  41c55c:	279c0418 	addiu	gp,gp,1048
  41c560:	0399e021 	addu	gp,gp,t9
  41c564:	27bdffc0 	addiu	sp,sp,-64
  41c568:	afbc0020 	sw	gp,32(sp)
  41c56c:	afbf0038 	sw	ra,56(sp)
  41c570:	afbe0034 	sw	s8,52(sp)
  41c574:	afbc0030 	sw	gp,48(sp)
  41c578:	03a0f021 	move	s8,sp
  41c57c:	afc40040 	sw	a0,64(s8)

void
unpend(struct state *st)
{
    struct pending **pp
	, *p;

    for (pp = &st->st_connection->host_pair->pending; (p = *pp) != NULL; )
  41c580:	8fc20040 	lw	v0,64(s8)
  41c584:	00000000 	nop
  41c588:	8c42000c 	lw	v0,12(v0)
  41c58c:	00000000 	nop
  41c590:	8c4201c4 	lw	v0,452(v0)
  41c594:	00000000 	nop
  41c598:	24420048 	addiu	v0,v0,72
  41c59c:	afc20028 	sw	v0,40(s8)
  41c5a0:	8fc20028 	lw	v0,40(s8)
  41c5a4:	00000000 	nop
  41c5a8:	8c420000 	lw	v0,0(v0)
  41c5ac:	00000000 	nop
  41c5b0:	afc2002c 	sw	v0,44(s8)
  41c5b4:	14400003 	bnez	v0,41c5c4 <unpend+0x6c>
  41c5b8:	00000000 	nop
  41c5bc:	1000005e 	b	41c738 <unpend+0x1e0>
  41c5c0:	00000000 	nop
    {
	if (p->isakmp_sa == st)
  41c5c4:	8fc2002c 	lw	v0,44(s8)
  41c5c8:	00000000 	nop
  41c5cc:	8c430004 	lw	v1,4(v0)
  41c5d0:	8fc20040 	lw	v0,64(s8)
  41c5d4:	00000000 	nop
  41c5d8:	14620051 	bne	v1,v0,41c720 <unpend+0x1c8>
  41c5dc:	00000000 	nop
	{
	    DBG(DBG_CONTROL, DBG_log("unqueuing pending Quick Mode with %s \"%s\""
  41c5e0:	8f8284f8 	lw	v0,-31496(gp)
  41c5e4:	00000000 	nop
  41c5e8:	8c420000 	lw	v0,0(v0)
  41c5ec:	00000000 	nop
  41c5f0:	30420010 	andi	v0,v0,0x10
  41c5f4:	1040001b 	beqz	v0,41c664 <unpend+0x10c>
  41c5f8:	00000000 	nop
  41c5fc:	8fc2002c 	lw	v0,44(s8)
  41c600:	00000000 	nop
  41c604:	8c420008 	lw	v0,8(v0)
  41c608:	00000000 	nop
  41c60c:	24420108 	addiu	v0,v0,264
  41c610:	00402021 	move	a0,v0
  41c614:	8f998100 	lw	t9,-32512(gp)
  41c618:	00000000 	nop
  41c61c:	0320f809 	jalr	t9
  41c620:	00000000 	nop
  41c624:	8fdc0020 	lw	gp,32(s8)
  41c628:	00401821 	move	v1,v0
  41c62c:	8fc2002c 	lw	v0,44(s8)
  41c630:	00000000 	nop
  41c634:	8c420008 	lw	v0,8(v0)
  41c638:	8f848020 	lw	a0,-32736(gp)
  41c63c:	00000000 	nop
  41c640:	2484635c 	addiu	a0,a0,25436
  41c644:	00602821 	move	a1,v1
  41c648:	8c460000 	lw	a2,0(v0)
  41c64c:	8f9983b8 	lw	t9,-31816(gp)
  41c650:	00000000 	nop
  41c654:	0320f809 	jalr	t9
  41c658:	00000000 	nop
  41c65c:	8fdc0020 	lw	gp,32(s8)
  41c660:	00000000 	nop
		, ip_str(&p->connection->that.host_addr)
		, p->connection->name));
	    (void) quick_outI1(p->whack_sock, st, p->connection, p->policy
  41c664:	8fc2002c 	lw	v0,44(s8)
  41c668:	00000000 	nop
  41c66c:	8c430014 	lw	v1,20(v0)
  41c670:	8c420010 	lw	v0,16(v0)
  41c674:	00000000 	nop
  41c678:	afa20010 	sw	v0,16(sp)
  41c67c:	afa30014 	sw	v1,20(sp)
  41c680:	8fc2002c 	lw	v0,44(s8)
  41c684:	00000000 	nop
  41c688:	8c420018 	lw	v0,24(v0)
  41c68c:	00000000 	nop
  41c690:	afa20018 	sw	v0,24(sp)
  41c694:	8fc2002c 	lw	v0,44(s8)
  41c698:	00000000 	nop
  41c69c:	8c42001c 	lw	v0,28(v0)
  41c6a0:	00000000 	nop
  41c6a4:	afa2001c 	sw	v0,28(sp)
  41c6a8:	8fc2002c 	lw	v0,44(s8)
  41c6ac:	00000000 	nop
  41c6b0:	8c440000 	lw	a0,0(v0)
  41c6b4:	8fc50040 	lw	a1,64(s8)
  41c6b8:	8fc2002c 	lw	v0,44(s8)
  41c6bc:	00000000 	nop
  41c6c0:	8c460008 	lw	a2,8(v0)
  41c6c4:	8f99895c 	lw	t9,-30372(gp)
  41c6c8:	00000000 	nop
  41c6cc:	0320f809 	jalr	t9
  41c6d0:	00000000 	nop
  41c6d4:	8fdc0020 	lw	gp,32(s8)
  41c6d8:	00000000 	nop
		, p->try, p->replacing);
	    p->whack_sock = NULL_FD;	/* ownership transferred */
  41c6dc:	2403ffff 	li	v1,-1
  41c6e0:	8fc2002c 	lw	v0,44(s8)
  41c6e4:	00000000 	nop
  41c6e8:	ac430000 	sw	v1,0(v0)
	    p->connection = NULL;	/* ownership transferred */
  41c6ec:	8fc2002c 	lw	v0,44(s8)
  41c6f0:	00000000 	nop
  41c6f4:	ac400008 	sw	zero,8(v0)
	    delete_pending(pp);
  41c6f8:	8fc40028 	lw	a0,40(s8)
  41c6fc:	8f998028 	lw	t9,-32728(gp)
  41c700:	00000000 	nop
  41c704:	2739c44c 	addiu	t9,t9,-15284
  41c708:	00000000 	nop
  41c70c:	0320f809 	jalr	t9
  41c710:	00000000 	nop
  41c714:	8fdc0020 	lw	gp,32(s8)
  41c718:	1000ffa1 	b	41c5a0 <unpend+0x48>
  41c71c:	00000000 	nop
	}
	else
	{
	    pp = &p->next;
  41c720:	8fc2002c 	lw	v0,44(s8)
  41c724:	00000000 	nop
  41c728:	24420020 	addiu	v0,v0,32
  41c72c:	afc20028 	sw	v0,40(s8)
  41c730:	1000ff9b 	b	41c5a0 <unpend+0x48>
  41c734:	00000000 	nop
	}
    }
}
  41c738:	03c0e821 	move	sp,s8
  41c73c:	8fbf0038 	lw	ra,56(sp)
  41c740:	8fbe0034 	lw	s8,52(sp)
  41c744:	27bd0040 	addiu	sp,sp,64
  41c748:	03e00008 	jr	ra
  41c74c:	00000000 	nop

0041c750 <update_pending>:
  41c750:	3c1c0fbf 	lui	gp,0xfbf
  41c754:	279c0220 	addiu	gp,gp,544
  41c758:	0399e021 	addu	gp,gp,t9
  41c75c:	27bdffe8 	addiu	sp,sp,-24
  41c760:	afbc0000 	sw	gp,0(sp)
  41c764:	afbe0014 	sw	s8,20(sp)
  41c768:	afbc0010 	sw	gp,16(sp)
  41c76c:	03a0f021 	move	s8,sp
  41c770:	afc40018 	sw	a0,24(s8)
  41c774:	afc5001c 	sw	a1,28(s8)

/* a Main Mode negotiation has been replaced; update any pending */
void
update_pending(struct state *os, struct state *ns)
{
    struct pending *p;

    for (p = os->st_connection->host_pair->pending; p != NULL; p = p->next) {
  41c778:	8fc20018 	lw	v0,24(s8)
  41c77c:	00000000 	nop
  41c780:	8c42000c 	lw	v0,12(v0)
  41c784:	00000000 	nop
  41c788:	8c4201c4 	lw	v0,452(v0)
  41c78c:	00000000 	nop
  41c790:	8c420048 	lw	v0,72(v0)
  41c794:	00000000 	nop
  41c798:	afc20008 	sw	v0,8(s8)
  41c79c:	8fc20008 	lw	v0,8(s8)
  41c7a0:	00000000 	nop
  41c7a4:	14400003 	bnez	v0,41c7b4 <update_pending+0x64>
  41c7a8:	00000000 	nop
  41c7ac:	10000032 	b	41c878 <update_pending+0x128>
  41c7b0:	00000000 	nop
	if (p->isakmp_sa == os)
  41c7b4:	8fc20008 	lw	v0,8(s8)
  41c7b8:	00000000 	nop
  41c7bc:	8c430004 	lw	v1,4(v0)
  41c7c0:	8fc20018 	lw	v0,24(s8)
  41c7c4:	00000000 	nop
  41c7c8:	14620005 	bne	v1,v0,41c7e0 <update_pending+0x90>
  41c7cc:	00000000 	nop
	    p->isakmp_sa = ns;
  41c7d0:	8fc3001c 	lw	v1,28(s8)
  41c7d4:	8fc20008 	lw	v0,8(s8)
  41c7d8:	00000000 	nop
  41c7dc:	ac430004 	sw	v1,4(v0)
#ifdef NAT_TRAVERSAL
	if (p->connection->this.host_port != ns->st_connection->this.host_port) {
  41c7e0:	8fc20008 	lw	v0,8(s8)
  41c7e4:	00000000 	nop
  41c7e8:	8c430008 	lw	v1,8(v0)
  41c7ec:	8fc2001c 	lw	v0,28(s8)
  41c7f0:	00000000 	nop
  41c7f4:	8c42000c 	lw	v0,12(v0)
  41c7f8:	946300c8 	lhu	v1,200(v1)
  41c7fc:	944200c8 	lhu	v0,200(v0)
  41c800:	00000000 	nop
  41c804:	10620015 	beq	v1,v0,41c85c <update_pending+0x10c>
  41c808:	00000000 	nop
	    p->connection->this.host_port = ns->st_connection->this.host_port;
  41c80c:	8fc20008 	lw	v0,8(s8)
  41c810:	00000000 	nop
  41c814:	8c430008 	lw	v1,8(v0)
  41c818:	8fc2001c 	lw	v0,28(s8)
  41c81c:	00000000 	nop
  41c820:	8c42000c 	lw	v0,12(v0)
  41c824:	00000000 	nop
  41c828:	944200c8 	lhu	v0,200(v0)
  41c82c:	00000000 	nop
  41c830:	a46200c8 	sh	v0,200(v1)
	    p->connection->that.host_port = ns->st_connection->that.host_port;
  41c834:	8fc20008 	lw	v0,8(s8)
  41c838:	00000000 	nop
  41c83c:	8c430008 	lw	v1,8(v0)
  41c840:	8fc2001c 	lw	v0,28(s8)
  41c844:	00000000 	nop
  41c848:	8c42000c 	lw	v0,12(v0)
  41c84c:	00000000 	nop
  41c850:	94420178 	lhu	v0,376(v0)
  41c854:	00000000 	nop
  41c858:	a4620178 	sh	v0,376(v1)
  41c85c:	8fc20008 	lw	v0,8(s8)
  41c860:	00000000 	nop
  41c864:	8c420020 	lw	v0,32(v0)
  41c868:	00000000 	nop
  41c86c:	afc20008 	sw	v0,8(s8)
  41c870:	1000ffca 	b	41c79c <update_pending+0x4c>
  41c874:	00000000 	nop
	}
#endif
    }
}
  41c878:	03c0e821 	move	sp,s8
  41c87c:	8fbe0014 	lw	s8,20(sp)
  41c880:	27bd0018 	addiu	sp,sp,24
  41c884:	03e00008 	jr	ra
  41c888:	00000000 	nop

0041c88c <flush_pending_by_state>:
  41c88c:	3c1c0fbf 	lui	gp,0xfbf
  41c890:	279c00e4 	addiu	gp,gp,228
  41c894:	0399e021 	addu	gp,gp,t9
  41c898:	27bdffc8 	addiu	sp,sp,-56
  41c89c:	afbc0010 	sw	gp,16(sp)
  41c8a0:	afbf0030 	sw	ra,48(sp)
  41c8a4:	afbe002c 	sw	s8,44(sp)
  41c8a8:	afbc0028 	sw	gp,40(sp)
  41c8ac:	03a0f021 	move	s8,sp
  41c8b0:	afc40038 	sw	a0,56(s8)

/* a Main Mode negotiation has failed; discard any pending */
void
flush_pending_by_state(struct state *st)
{
    struct host_pair *hp = st->st_connection->host_pair;
  41c8b4:	8fc20038 	lw	v0,56(s8)
  41c8b8:	00000000 	nop
  41c8bc:	8c42000c 	lw	v0,12(v0)
  41c8c0:	00000000 	nop
  41c8c4:	8c4201c4 	lw	v0,452(v0)
  41c8c8:	00000000 	nop
  41c8cc:	afc20018 	sw	v0,24(s8)

    if (hp != NULL)
  41c8d0:	8fc20018 	lw	v0,24(s8)
  41c8d4:	00000000 	nop
  41c8d8:	10400025 	beqz	v0,41c970 <flush_pending_by_state+0xe4>
  41c8dc:	00000000 	nop
    {
	struct pending **pp
	    , *p;

	for (pp = &hp->pending; (p = *pp) != NULL; )
  41c8e0:	8fc20018 	lw	v0,24(s8)
  41c8e4:	00000000 	nop
  41c8e8:	24420048 	addiu	v0,v0,72
  41c8ec:	afc2001c 	sw	v0,28(s8)
  41c8f0:	8fc2001c 	lw	v0,28(s8)
  41c8f4:	00000000 	nop
  41c8f8:	8c420000 	lw	v0,0(v0)
  41c8fc:	00000000 	nop
  41c900:	afc20020 	sw	v0,32(s8)
  41c904:	14400003 	bnez	v0,41c914 <flush_pending_by_state+0x88>
  41c908:	00000000 	nop
  41c90c:	10000018 	b	41c970 <flush_pending_by_state+0xe4>
  41c910:	00000000 	nop
	{
	    if (p->isakmp_sa == st)
  41c914:	8fc20020 	lw	v0,32(s8)
  41c918:	00000000 	nop
  41c91c:	8c430004 	lw	v1,4(v0)
  41c920:	8fc20038 	lw	v0,56(s8)
  41c924:	00000000 	nop
  41c928:	1462000b 	bne	v1,v0,41c958 <flush_pending_by_state+0xcc>
  41c92c:	00000000 	nop
		delete_pending(pp);
  41c930:	8fc4001c 	lw	a0,28(s8)
  41c934:	8f998028 	lw	t9,-32728(gp)
  41c938:	00000000 	nop
  41c93c:	2739c44c 	addiu	t9,t9,-15284
  41c940:	00000000 	nop
  41c944:	0320f809 	jalr	t9
  41c948:	00000000 	nop
  41c94c:	8fdc0010 	lw	gp,16(s8)
  41c950:	1000ffe7 	b	41c8f0 <flush_pending_by_state+0x64>
  41c954:	00000000 	nop
	    else
		pp = &p->next;
  41c958:	8fc20020 	lw	v0,32(s8)
  41c95c:	00000000 	nop
  41c960:	24420020 	addiu	v0,v0,32
  41c964:	afc2001c 	sw	v0,28(s8)
  41c968:	1000ffe1 	b	41c8f0 <flush_pending_by_state+0x64>
  41c96c:	00000000 	nop
	}
    }
}
  41c970:	03c0e821 	move	sp,s8
  41c974:	8fbf0030 	lw	ra,48(sp)
  41c978:	8fbe002c 	lw	s8,44(sp)
  41c97c:	27bd0038 	addiu	sp,sp,56
  41c980:	03e00008 	jr	ra
  41c984:	00000000 	nop

0041c988 <flush_pending_by_connection>:
  41c988:	3c1c0fbf 	lui	gp,0xfbf
  41c98c:	279cffe8 	addiu	gp,gp,-24
  41c990:	0399e021 	addu	gp,gp,t9
  41c994:	27bdffd0 	addiu	sp,sp,-48
  41c998:	afbc0010 	sw	gp,16(sp)
  41c99c:	afbf0028 	sw	ra,40(sp)
  41c9a0:	afbe0024 	sw	s8,36(sp)
  41c9a4:	afbc0020 	sw	gp,32(sp)
  41c9a8:	03a0f021 	move	s8,sp
  41c9ac:	afc40030 	sw	a0,48(s8)

/* a connection has been deleted; discard any related pending */
static void
flush_pending_by_connection(struct connection *c)
{
    if (c->host_pair != NULL)
  41c9b0:	8fc20030 	lw	v0,48(s8)
  41c9b4:	00000000 	nop
  41c9b8:	8c4201c4 	lw	v0,452(v0)
  41c9bc:	00000000 	nop
  41c9c0:	1040002a 	beqz	v0,41ca6c <flush_pending_by_connection+0xe4>
  41c9c4:	00000000 	nop
    {
	struct pending **pp
	    , *p;

	for (pp = &c->host_pair->pending; (p = *pp) != NULL; )
  41c9c8:	8fc20030 	lw	v0,48(s8)
  41c9cc:	00000000 	nop
  41c9d0:	8c4201c4 	lw	v0,452(v0)
  41c9d4:	00000000 	nop
  41c9d8:	24420048 	addiu	v0,v0,72
  41c9dc:	afc20018 	sw	v0,24(s8)
  41c9e0:	8fc20018 	lw	v0,24(s8)
  41c9e4:	00000000 	nop
  41c9e8:	8c420000 	lw	v0,0(v0)
  41c9ec:	00000000 	nop
  41c9f0:	afc2001c 	sw	v0,28(s8)
  41c9f4:	14400003 	bnez	v0,41ca04 <flush_pending_by_connection+0x7c>
  41c9f8:	00000000 	nop
  41c9fc:	1000001b 	b	41ca6c <flush_pending_by_connection+0xe4>
  41ca00:	00000000 	nop
	{
	    if (p->connection == c)
  41ca04:	8fc2001c 	lw	v0,28(s8)
  41ca08:	00000000 	nop
  41ca0c:	8c430008 	lw	v1,8(v0)
  41ca10:	8fc20030 	lw	v0,48(s8)
  41ca14:	00000000 	nop
  41ca18:	1462000e 	bne	v1,v0,41ca54 <flush_pending_by_connection+0xcc>
  41ca1c:	00000000 	nop
	    {
		p->connection = NULL;	/* prevent delete_pending from releasing */
  41ca20:	8fc2001c 	lw	v0,28(s8)
  41ca24:	00000000 	nop
  41ca28:	ac400008 	sw	zero,8(v0)
		delete_pending(pp);
  41ca2c:	8fc40018 	lw	a0,24(s8)
  41ca30:	8f998028 	lw	t9,-32728(gp)
  41ca34:	00000000 	nop
  41ca38:	2739c44c 	addiu	t9,t9,-15284
  41ca3c:	00000000 	nop
  41ca40:	0320f809 	jalr	t9
  41ca44:	00000000 	nop
  41ca48:	8fdc0010 	lw	gp,16(s8)
  41ca4c:	1000ffe4 	b	41c9e0 <flush_pending_by_connection+0x58>
  41ca50:	00000000 	nop
	    }
	    else
	    {
		pp = &p->next;
  41ca54:	8fc2001c 	lw	v0,28(s8)
  41ca58:	00000000 	nop
  41ca5c:	24420020 	addiu	v0,v0,32
  41ca60:	afc20018 	sw	v0,24(s8)
  41ca64:	1000ffde 	b	41c9e0 <flush_pending_by_connection+0x58>
  41ca68:	00000000 	nop
	    }
	}
    }
}
  41ca6c:	03c0e821 	move	sp,s8
  41ca70:	8fbf0028 	lw	ra,40(sp)
  41ca74:	8fbe0024 	lw	s8,36(sp)
  41ca78:	27bd0030 	addiu	sp,sp,48
  41ca7c:	03e00008 	jr	ra
  41ca80:	00000000 	nop

0041ca84 <connection_discard>:
  41ca84:	3c1c0fbf 	lui	gp,0xfbf
  41ca88:	279cfeec 	addiu	gp,gp,-276
  41ca8c:	0399e021 	addu	gp,gp,t9
  41ca90:	27bdffd0 	addiu	sp,sp,-48
  41ca94:	afbc0010 	sw	gp,16(sp)
  41ca98:	afbf0028 	sw	ra,40(sp)
  41ca9c:	afbe0024 	sw	s8,36(sp)
  41caa0:	afbc0020 	sw	gp,32(sp)
  41caa4:	03a0f021 	move	s8,sp
  41caa8:	afc40030 	sw	a0,48(s8)

/* Delete a connection if it is an instance and it is no longer in use.
 * We must be careful to avoid circularity:
 * we don't touch it if it is CK_GOING_AWAY.
 */
void
connection_discard(struct connection *c)
{
    if (c->kind == CK_INSTANCE)
  41caac:	8fc20030 	lw	v0,48(s8)
  41cab0:	00000000 	nop
  41cab4:	8c430194 	lw	v1,404(v0)
  41cab8:	24020002 	li	v0,2
  41cabc:	1462002e 	bne	v1,v0,41cb78 <connection_discard+0xf4>
  41cac0:	00000000 	nop
    {
	/* see if it is being used by a pending */
	struct pending *p;

	for (p = c->host_pair->pending; p != NULL; p = p->next)
  41cac4:	8fc20030 	lw	v0,48(s8)
  41cac8:	00000000 	nop
  41cacc:	8c4201c4 	lw	v0,452(v0)
  41cad0:	00000000 	nop
  41cad4:	8c420048 	lw	v0,72(v0)
  41cad8:	00000000 	nop
  41cadc:	afc20018 	sw	v0,24(s8)
  41cae0:	8fc20018 	lw	v0,24(s8)
  41cae4:	00000000 	nop
  41cae8:	14400003 	bnez	v0,41caf8 <connection_discard+0x74>
  41caec:	00000000 	nop
  41caf0:	10000011 	b	41cb38 <connection_discard+0xb4>
  41caf4:	00000000 	nop
	    if (p->connection == c)
  41caf8:	8fc20018 	lw	v0,24(s8)
  41cafc:	00000000 	nop
  41cb00:	8c430008 	lw	v1,8(v0)
  41cb04:	8fc20030 	lw	v0,48(s8)
  41cb08:	00000000 	nop
  41cb0c:	14620003 	bne	v1,v0,41cb1c <connection_discard+0x98>
  41cb10:	00000000 	nop
		return;	/* in use, so we're done */
  41cb14:	10000018 	b	41cb78 <connection_discard+0xf4>
  41cb18:	00000000 	nop
  41cb1c:	8fc20018 	lw	v0,24(s8)
  41cb20:	00000000 	nop
  41cb24:	8c420020 	lw	v0,32(v0)
  41cb28:	00000000 	nop
  41cb2c:	afc20018 	sw	v0,24(s8)
  41cb30:	1000ffeb 	b	41cae0 <connection_discard+0x5c>
  41cb34:	00000000 	nop

	if (!states_use_connection(c))
  41cb38:	8fc40030 	lw	a0,48(s8)
  41cb3c:	8f998c0c 	lw	t9,-29684(gp)
  41cb40:	00000000 	nop
  41cb44:	0320f809 	jalr	t9
  41cb48:	00000000 	nop
  41cb4c:	8fdc0010 	lw	gp,16(s8)
  41cb50:	14400009 	bnez	v0,41cb78 <connection_discard+0xf4>
  41cb54:	00000000 	nop
	    delete_connection(c, FALSE);
  41cb58:	8fc40030 	lw	a0,48(s8)
  41cb5c:	00002821 	move	a1,zero
  41cb60:	8f998b28 	lw	t9,-29912(gp)
  41cb64:	00000000 	nop
  41cb68:	0320f809 	jalr	t9
  41cb6c:	00000000 	nop
  41cb70:	8fdc0010 	lw	gp,16(s8)
  41cb74:	00000000 	nop
    }
}
  41cb78:	03c0e821 	move	sp,s8
  41cb7c:	8fbf0028 	lw	ra,40(sp)
  41cb80:	8fbe0024 	lw	s8,36(sp)
  41cb84:	27bd0030 	addiu	sp,sp,48
  41cb88:	03e00008 	jr	ra
  41cb8c:	00000000 	nop

0041cb90 <aftoinfo>:
  41cb90:	3c1c0fbf 	lui	gp,0xfbf
  41cb94:	279cfde0 	addiu	gp,gp,-544
  41cb98:	0399e021 	addu	gp,gp,t9
  41cb9c:	27bdffe8 	addiu	sp,sp,-24
  41cba0:	afbc0000 	sw	gp,0(sp)
  41cba4:	afbe0014 	sw	s8,20(sp)
  41cba8:	afbc0010 	sw	gp,16(sp)
  41cbac:	03a0f021 	move	s8,sp
  41cbb0:	afc40018 	sw	a0,24(s8)

const struct af_info *
aftoinfo(int af)
{
    switch (af)
  41cbb4:	8fc20018 	lw	v0,24(s8)
  41cbb8:	00000000 	nop
  41cbbc:	afc20008 	sw	v0,8(s8)
  41cbc0:	24020002 	li	v0,2
  41cbc4:	8fc30008 	lw	v1,8(s8)
  41cbc8:	00000000 	nop
  41cbcc:	10620008 	beq	v1,v0,41cbf0 <aftoinfo+0x60>
  41cbd0:	00000000 	nop
  41cbd4:	2402000a 	li	v0,10
  41cbd8:	8fc30008 	lw	v1,8(s8)
  41cbdc:	00000000 	nop
  41cbe0:	10620006 	beq	v1,v0,41cbfc <aftoinfo+0x6c>
  41cbe4:	00000000 	nop
  41cbe8:	10000007 	b	41cc08 <aftoinfo+0x78>
  41cbec:	00000000 	nop
    {
	case AF_INET:
	    return &af_inet4_info;
  41cbf0:	8f8281dc 	lw	v0,-32292(gp)
  41cbf4:	10000005 	b	41cc0c <aftoinfo+0x7c>
  41cbf8:	00000000 	nop
	case AF_INET6:
	    return &af_inet6_info;
  41cbfc:	8f828b14 	lw	v0,-29932(gp)
  41cc00:	10000002 	b	41cc0c <aftoinfo+0x7c>
  41cc04:	00000000 	nop
	default:
	    return NULL;
  41cc08:	00001021 	move	v0,zero
    }
}
  41cc0c:	03c0e821 	move	sp,s8
  41cc10:	8fbe0014 	lw	s8,20(sp)
  41cc14:	27bd0018 	addiu	sp,sp,24
  41cc18:	03e00008 	jr	ra
  41cc1c:	00000000 	nop

0041cc20 <enum_name>:
  41cc20:	3c1c0fbf 	lui	gp,0xfbf
  41cc24:	279cfd50 	addiu	gp,gp,-688
  41cc28:	0399e021 	addu	gp,gp,t9
  41cc2c:	27bdffe8 	addiu	sp,sp,-24
  41cc30:	afbc0000 	sw	gp,0(sp)
  41cc34:	afbe0014 	sw	s8,20(sp)
  41cc38:	afbc0010 	sw	gp,16(sp)
  41cc3c:	03a0f021 	move	s8,sp
  41cc40:	afc40018 	sw	a0,24(s8)
  41cc44:	afc5001c 	sw	a1,28(s8)

/* BIND enumerated types */

#include <arpa/nameser.h>

static const char *const rr_type_name[] = {
	"T_A",	/* 1 host address */
	"T_NS",	/* 2 authoritative server */
	"T_MD",	/* 3 mail destination */
	"T_MF",	/* 4 mail forwarder */
	"T_CNAME",	/* 5 canonical name */
	"T_SOA",	/* 6 start of authority zone */
	"T_MB",	/* 7 mailbox domain name */
	"T_MG",	/* 8 mail group member */
	"T_MR",	/* 9 mail rename name */
	"T_NULL",	/* 10 null resource record */
	"T_WKS",	/* 11 well known service */
	"T_PTR",	/* 12 domain name pointer */
	"T_HINFO",	/* 13 host information */
	"T_MINFO",	/* 14 mailbox information */
	"T_MX",	/* 15 mail routing information */
	"T_TXT",	/* 16 text strings */
	"T_RP",	/* 17 responsible person */
	"T_AFSDB",	/* 18 AFS cell database */
	"T_X25",	/* 19 X_25 calling address */
	"T_ISDN",	/* 20 ISDN calling address */
	"T_RT",	/* 21 router */
	"T_NSAP",	/* 22 NSAP address */
	"T_NSAP_PTR",	/* 23 reverse NSAP lookup (deprecated) */
	"T_SIG",	/* 24 security signature */
	"T_KEY",	/* 25 security key */
	"T_PX",	/* 26 X.400 mail mapping */
	"T_GPOS",	/* 27 geographical position (withdrawn) */
	"T_AAAA",	/* 28 IP6 Address */
	"T_LOC",	/* 29 Location Information */
	"T_NXT",	/* 30 Next Valid Name in Zone */
	"T_EID",	/* 31 Endpoint identifier */
	"T_NIMLOC",	/* 32 Nimrod locator */
	"T_SRV",	/* 33 Server selection */
	"T_ATMA",	/* 34 ATM Address */
	"T_NAPTR",	/* 35 Naming Authority PoinTeR */
	NULL
    };

enum_names rr_type_names = { T_A, T_NAPTR, rr_type_name, NULL };

/* Query type values which do not appear in resource records */
static const char *const rr_qtype_name[] = {
	"T_IXFR",	/* 251 incremental zone transfer */
	"T_AXFR",	/* 252 transfer zone of authority */
	"T_MAILB",	/* 253 transfer mailbox records */
	"T_MAILA",	/* 254 transfer mail agent records */
	"T_ANY",	/* 255 wildcard match */
	NULL
    };

enum_names rr_qtype_names = { T_IXFR, T_ANY, rr_qtype_name, &rr_type_names };

static const char *const rr_class_name[] = {
	"C_IN",	/* 1 the arpa internet */
	NULL
    };

enum_names rr_class_names = { C_IN, C_IN, rr_class_name, NULL };


/* look up enum names in an enum_names */

const char *
enum_name(enum_names *ed, unsigned long val)
{
    enum_names	*p;

    for (p = ed; p != NULL; p = p->en_next_range)
  41cc48:	8fc20018 	lw	v0,24(s8)
  41cc4c:	00000000 	nop
  41cc50:	afc20008 	sw	v0,8(s8)
  41cc54:	8fc20008 	lw	v0,8(s8)
  41cc58:	00000000 	nop
  41cc5c:	14400003 	bnez	v0,41cc6c <enum_name+0x4c>
  41cc60:	00000000 	nop
  41cc64:	10000027 	b	41cd04 <enum_name+0xe4>
  41cc68:	00000000 	nop
	if (p->en_first <= val && val <= p->en_last)
  41cc6c:	8fc20008 	lw	v0,8(s8)
  41cc70:	00000000 	nop
  41cc74:	8c430000 	lw	v1,0(v0)
  41cc78:	8fc2001c 	lw	v0,28(s8)
  41cc7c:	00000000 	nop
  41cc80:	0043102b 	sltu	v0,v0,v1
  41cc84:	14400018 	bnez	v0,41cce8 <enum_name+0xc8>
  41cc88:	00000000 	nop
  41cc8c:	8fc20008 	lw	v0,8(s8)
  41cc90:	00000000 	nop
  41cc94:	8c430004 	lw	v1,4(v0)
  41cc98:	8fc2001c 	lw	v0,28(s8)
  41cc9c:	00000000 	nop
  41cca0:	0062102b 	sltu	v0,v1,v0
  41cca4:	14400010 	bnez	v0,41cce8 <enum_name+0xc8>
  41cca8:	00000000 	nop
	    return p->en_names[val - p->en_first];
  41ccac:	8fc20008 	lw	v0,8(s8)
  41ccb0:	00000000 	nop
  41ccb4:	8c430000 	lw	v1,0(v0)
  41ccb8:	8fc2001c 	lw	v0,28(s8)
  41ccbc:	00000000 	nop
  41ccc0:	00431023 	subu	v0,v0,v1
  41ccc4:	00021880 	sll	v1,v0,0x2
  41ccc8:	8fc20008 	lw	v0,8(s8)
  41cccc:	00000000 	nop
  41ccd0:	8c420008 	lw	v0,8(v0)
  41ccd4:	00000000 	nop
  41ccd8:	00621021 	addu	v0,v1,v0
  41ccdc:	8c420000 	lw	v0,0(v0)
  41cce0:	10000009 	b	41cd08 <enum_name+0xe8>
  41cce4:	00000000 	nop
  41cce8:	8fc20008 	lw	v0,8(s8)
  41ccec:	00000000 	nop
  41ccf0:	8c42000c 	lw	v0,12(v0)
  41ccf4:	00000000 	nop
  41ccf8:	afc20008 	sw	v0,8(s8)
  41ccfc:	1000ffd5 	b	41cc54 <enum_name+0x34>
  41cd00:	00000000 	nop
    return NULL;
  41cd04:	00001021 	move	v0,zero
}
  41cd08:	03c0e821 	move	sp,s8
  41cd0c:	8fbe0014 	lw	s8,20(sp)
  41cd10:	27bd0018 	addiu	sp,sp,24
  41cd14:	03e00008 	jr	ra
  41cd18:	00000000 	nop

0041cd1c <enum_show>:
  41cd1c:	3c1c0fbf 	lui	gp,0xfbf
  41cd20:	279cfc54 	addiu	gp,gp,-940
  41cd24:	0399e021 	addu	gp,gp,t9
  41cd28:	27bdffd0 	addiu	sp,sp,-48
  41cd2c:	afbc0010 	sw	gp,16(sp)
  41cd30:	afbf0028 	sw	ra,40(sp)
  41cd34:	afbe0024 	sw	s8,36(sp)
  41cd38:	afbc0020 	sw	gp,32(sp)
  41cd3c:	03a0f021 	move	s8,sp
  41cd40:	afc40030 	sw	a0,48(s8)
  41cd44:	afc50034 	sw	a1,52(s8)

/* find or construct a string to describe an enum value
 * Result may be in STATIC buffer!
 */
const char *
enum_show(enum_names *ed, unsigned long val)
{
    const char *p = enum_name(ed, val);
  41cd48:	8fc40030 	lw	a0,48(s8)
  41cd4c:	8fc50034 	lw	a1,52(s8)
  41cd50:	8f9984bc 	lw	t9,-31556(gp)
  41cd54:	00000000 	nop
  41cd58:	0320f809 	jalr	t9
  41cd5c:	00000000 	nop
  41cd60:	8fdc0010 	lw	gp,16(s8)
  41cd64:	afc20018 	sw	v0,24(s8)

    if (p == NULL)
  41cd68:	8fc20018 	lw	v0,24(s8)
  41cd6c:	00000000 	nop
  41cd70:	14400014 	bnez	v0,41cdc4 <enum_show+0xa8>
  41cd74:	00000000 	nop
    {
	static char buf[12];	/* only one!  I hope that it is big enough */

	snprintf(buf, sizeof(buf), "%lu??", val);
  41cd78:	8f848018 	lw	a0,-32744(gp)
  41cd7c:	00000000 	nop
  41cd80:	24846090 	addiu	a0,a0,24720
  41cd84:	2405000c 	li	a1,12
  41cd88:	8f86802c 	lw	a2,-32724(gp)
  41cd8c:	00000000 	nop
  41cd90:	24c68084 	addiu	a2,a2,-32636
  41cd94:	8fc70034 	lw	a3,52(s8)
  41cd98:	8f998b38 	lw	t9,-29896(gp)
  41cd9c:	00000000 	nop
  41cda0:	0320f809 	jalr	t9
  41cda4:	00000000 	nop
  41cda8:	8fdc0010 	lw	gp,16(s8)
  41cdac:	00000000 	nop
	p = buf;
  41cdb0:	8f828018 	lw	v0,-32744(gp)
  41cdb4:	00000000 	nop
  41cdb8:	24426090 	addiu	v0,v0,24720
  41cdbc:	00000000 	nop
  41cdc0:	afc20018 	sw	v0,24(s8)
    }
    return p;
  41cdc4:	8fc20018 	lw	v0,24(s8)
  41cdc8:	00000000 	nop
}
  41cdcc:	03c0e821 	move	sp,s8
  41cdd0:	8fbf0028 	lw	ra,40(sp)
  41cdd4:	8fbe0024 	lw	s8,36(sp)
  41cdd8:	27bd0030 	addiu	sp,sp,48
  41cddc:	03e00008 	jr	ra
  41cde0:	00000000 	nop

0041cde4 <enum_search>:
  41cde4:	3c1c0fbf 	lui	gp,0xfbf
  41cde8:	279cfb8c 	addiu	gp,gp,-1140
  41cdec:	0399e021 	addu	gp,gp,t9
  41cdf0:	27bdffc8 	addiu	sp,sp,-56
  41cdf4:	afbc0010 	sw	gp,16(sp)
  41cdf8:	afbf0030 	sw	ra,48(sp)
  41cdfc:	afbe002c 	sw	s8,44(sp)
  41ce00:	afbc0028 	sw	gp,40(sp)
  41ce04:	03a0f021 	move	s8,sp
  41ce08:	afc40038 	sw	a0,56(s8)
  41ce0c:	afc5003c 	sw	a1,60(s8)

int 
enum_search(enum_names *ed, const char *str) 
{
    enum_names	*p;
    const char *ptr;
    unsigned en;

    for (p = ed; p != NULL; p = p->en_next_range)
  41ce10:	8fc20038 	lw	v0,56(s8)
  41ce14:	00000000 	nop
  41ce18:	afc20018 	sw	v0,24(s8)
  41ce1c:	8fc20018 	lw	v0,24(s8)
  41ce20:	00000000 	nop
  41ce24:	14400003 	bnez	v0,41ce34 <enum_search+0x50>
  41ce28:	00000000 	nop
  41ce2c:	1000003c 	b	41cf20 <enum_search+0x13c>
  41ce30:	00000000 	nop
	for (en=p->en_first;en<=p->en_last;en++) {
  41ce34:	8fc20018 	lw	v0,24(s8)
  41ce38:	00000000 	nop
  41ce3c:	8c420000 	lw	v0,0(v0)
  41ce40:	00000000 	nop
  41ce44:	afc20020 	sw	v0,32(s8)
  41ce48:	8fc20018 	lw	v0,24(s8)
  41ce4c:	00000000 	nop
  41ce50:	8c430004 	lw	v1,4(v0)
  41ce54:	8fc20020 	lw	v0,32(s8)
  41ce58:	00000000 	nop
  41ce5c:	0062102b 	sltu	v0,v1,v0
  41ce60:	10400008 	beqz	v0,41ce84 <enum_search+0xa0>
  41ce64:	00000000 	nop
  41ce68:	8fc20018 	lw	v0,24(s8)
  41ce6c:	00000000 	nop
  41ce70:	8c42000c 	lw	v0,12(v0)
  41ce74:	00000000 	nop
  41ce78:	afc20018 	sw	v0,24(s8)
  41ce7c:	1000ffe7 	b	41ce1c <enum_search+0x38>
  41ce80:	00000000 	nop
	    ptr=p->en_names[en - p->en_first];
  41ce84:	8fc20018 	lw	v0,24(s8)
  41ce88:	00000000 	nop
  41ce8c:	8c430000 	lw	v1,0(v0)
  41ce90:	8fc20020 	lw	v0,32(s8)
  41ce94:	00000000 	nop
  41ce98:	00431023 	subu	v0,v0,v1
  41ce9c:	00021880 	sll	v1,v0,0x2
  41cea0:	8fc20018 	lw	v0,24(s8)
  41cea4:	00000000 	nop
  41cea8:	8c420008 	lw	v0,8(v0)
  41ceac:	00000000 	nop
  41ceb0:	00621021 	addu	v0,v1,v0
  41ceb4:	8c420000 	lw	v0,0(v0)
  41ceb8:	00000000 	nop
  41cebc:	afc2001c 	sw	v0,28(s8)
	    if (ptr==0) continue;
  41cec0:	8fc2001c 	lw	v0,28(s8)
  41cec4:	00000000 	nop
  41cec8:	14400003 	bnez	v0,41ced8 <enum_search+0xf4>
  41cecc:	00000000 	nop
  41ced0:	1000000d 	b	41cf08 <enum_search+0x124>
  41ced4:	00000000 	nop
	    /* if (strncmp(ptr, str, strlen(ptr))==0) */
	    if (strcmp(ptr, str)==0)
  41ced8:	8fc4001c 	lw	a0,28(s8)
  41cedc:	8fc5003c 	lw	a1,60(s8)
  41cee0:	8f998428 	lw	t9,-31704(gp)
  41cee4:	00000000 	nop
  41cee8:	0320f809 	jalr	t9
  41ceec:	00000000 	nop
  41cef0:	8fdc0010 	lw	gp,16(s8)
  41cef4:	14400004 	bnez	v0,41cf08 <enum_search+0x124>
  41cef8:	00000000 	nop
		    return en;
  41cefc:	8fc20020 	lw	v0,32(s8)
  41cf00:	10000008 	b	41cf24 <enum_search+0x140>
  41cf04:	00000000 	nop
  41cf08:	8fc20020 	lw	v0,32(s8)
  41cf0c:	00000000 	nop
  41cf10:	24420001 	addiu	v0,v0,1
  41cf14:	afc20020 	sw	v0,32(s8)
  41cf18:	1000ffcb 	b	41ce48 <enum_search+0x64>
  41cf1c:	00000000 	nop
	}
    return -1;
  41cf20:	2402ffff 	li	v0,-1
}
  41cf24:	03c0e821 	move	sp,s8
  41cf28:	8fbf0030 	lw	ra,48(sp)
  41cf2c:	8fbe002c 	lw	s8,44(sp)
  41cf30:	27bd0038 	addiu	sp,sp,56
  41cf34:	03e00008 	jr	ra
  41cf38:	00000000 	nop

0041cf3c <bitnamesof>:
  41cf3c:	3c1c0fbf 	lui	gp,0xfbf
  41cf40:	279cfa34 	addiu	gp,gp,-1484
  41cf44:	0399e021 	addu	gp,gp,t9
  41cf48:	27bdffb0 	addiu	sp,sp,-80
  41cf4c:	afbc0018 	sw	gp,24(sp)
  41cf50:	afbf0048 	sw	ra,72(sp)
  41cf54:	afbe0044 	sw	s8,68(sp)
  41cf58:	afbc0040 	sw	gp,64(sp)
  41cf5c:	03a0f021 	move	s8,sp
  41cf60:	afc40050 	sw	a0,80(s8)
  41cf64:	afc60058 	sw	a2,88(s8)
  41cf68:	afc7005c 	sw	a3,92(s8)
/* construct a string to name the bits on in a set
 * Result may be in STATIC buffer!
 */
const char *
bitnamesof(const char *const table[], lset_t val)
{
    static char buf[100];   /* only one!  I hope that it is big enough! */
    char *p = buf;
  41cf6c:	8f828018 	lw	v0,-32744(gp)
  41cf70:	00000000 	nop
  41cf74:	2442609c 	addiu	v0,v0,24732
  41cf78:	00000000 	nop
  41cf7c:	afc20020 	sw	v0,32(s8)
    lset_t bit;
    const char *const *tp;

    if (val == 0)
  41cf80:	8fc20058 	lw	v0,88(s8)
  41cf84:	8fc3005c 	lw	v1,92(s8)
  41cf88:	00000000 	nop
  41cf8c:	00431025 	or	v0,v0,v1
  41cf90:	14400006 	bnez	v0,41cfac <bitnamesof+0x70>
  41cf94:	00000000 	nop
	return "none";
  41cf98:	8f82802c 	lw	v0,-32724(gp)
  41cf9c:	00000000 	nop
  41cfa0:	2442808c 	addiu	v0,v0,-32628
  41cfa4:	10000099 	b	41d20c <bitnamesof+0x2d0>
  41cfa8:	00000000 	nop

    for (tp = table, bit = 01; val != 0; bit <<= 1) {
  41cfac:	8fc20050 	lw	v0,80(s8)
  41cfb0:	00000000 	nop
  41cfb4:	afc20030 	sw	v0,48(s8)
  41cfb8:	24020000 	li	v0,0
  41cfbc:	24030001 	li	v1,1
  41cfc0:	afc20028 	sw	v0,40(s8)
  41cfc4:	afc3002c 	sw	v1,44(s8)
  41cfc8:	8fc20058 	lw	v0,88(s8)
  41cfcc:	8fc3005c 	lw	v1,92(s8)
  41cfd0:	00000000 	nop
  41cfd4:	00431025 	or	v0,v0,v1
  41cfd8:	14400003 	bnez	v0,41cfe8 <bitnamesof+0xac>
  41cfdc:	00000000 	nop
  41cfe0:	10000083 	b	41d1f0 <bitnamesof+0x2b4>
  41cfe4:	00000000 	nop
	if (val & bit) {
  41cfe8:	8fc40058 	lw	a0,88(s8)
  41cfec:	8fc5005c 	lw	a1,92(s8)
  41cff0:	8fc20028 	lw	v0,40(s8)
  41cff4:	8fc3002c 	lw	v1,44(s8)
  41cff8:	00822024 	and	a0,a0,v0
  41cffc:	00a32824 	and	a1,a1,v1
  41d000:	00801021 	move	v0,a0
  41d004:	00451025 	or	v0,v0,a1
  41d008:	10400065 	beqz	v0,41d1a0 <bitnamesof+0x264>
  41d00c:	00000000 	nop
	    const char *n = *tp;
  41d010:	8fc20030 	lw	v0,48(s8)
  41d014:	00000000 	nop
  41d018:	8c420000 	lw	v0,0(v0)
  41d01c:	00000000 	nop
  41d020:	afc20034 	sw	v0,52(s8)
	    size_t nl;

	    if (n == NULL || *n == '\0')
  41d024:	8fc20034 	lw	v0,52(s8)
  41d028:	00000000 	nop
  41d02c:	10400007 	beqz	v0,41d04c <bitnamesof+0x110>
  41d030:	00000000 	nop
  41d034:	8fc20034 	lw	v0,52(s8)
  41d038:	00000000 	nop
  41d03c:	80420000 	lb	v0,0(v0)
  41d040:	00000000 	nop
  41d044:	14400017 	bnez	v0,41d0a4 <bitnamesof+0x168>
  41d048:	00000000 	nop
	    {
		/* no name for this bit, so use hex */
		/* 64bits lset_t */
		static char flagbuf[sizeof("0x80000000" "00000000")]; 

		snprintf(flagbuf, sizeof(flagbuf), "0x%llx", bit);
  41d04c:	8fc20028 	lw	v0,40(s8)
  41d050:	8fc3002c 	lw	v1,44(s8)
  41d054:	afa20010 	sw	v0,16(sp)
  41d058:	afa30014 	sw	v1,20(sp)
  41d05c:	8f848018 	lw	a0,-32744(gp)
  41d060:	00000000 	nop
  41d064:	24846100 	addiu	a0,a0,24832
  41d068:	24050013 	li	a1,19
  41d06c:	8f86802c 	lw	a2,-32724(gp)
  41d070:	00000000 	nop
  41d074:	24c68094 	addiu	a2,a2,-32620
  41d078:	8f998b38 	lw	t9,-29896(gp)
  41d07c:	00000000 	nop
  41d080:	0320f809 	jalr	t9
  41d084:	00000000 	nop
  41d088:	8fdc0018 	lw	gp,24(s8)
  41d08c:	00000000 	nop
		n = flagbuf;
  41d090:	8f828018 	lw	v0,-32744(gp)
  41d094:	00000000 	nop
  41d098:	24426100 	addiu	v0,v0,24832
  41d09c:	00000000 	nop
  41d0a0:	afc20034 	sw	v0,52(s8)
	    }

	    nl = strlen(n);
  41d0a4:	8fc40034 	lw	a0,52(s8)
  41d0a8:	8f998188 	lw	t9,-32376(gp)
  41d0ac:	00000000 	nop
  41d0b0:	0320f809 	jalr	t9
  41d0b4:	00000000 	nop
  41d0b8:	8fdc0018 	lw	gp,24(s8)
  41d0bc:	afc20038 	sw	v0,56(s8)

	    if (p != buf && p < buf+sizeof(buf) - 1)
  41d0c0:	8fc30020 	lw	v1,32(s8)
  41d0c4:	8f828018 	lw	v0,-32744(gp)
  41d0c8:	00000000 	nop
  41d0cc:	2442609c 	addiu	v0,v0,24732
  41d0d0:	00000000 	nop
  41d0d4:	1062000f 	beq	v1,v0,41d114 <bitnamesof+0x1d8>
  41d0d8:	00000000 	nop
  41d0dc:	8fc20020 	lw	v0,32(s8)
  41d0e0:	8f838018 	lw	v1,-32744(gp)
  41d0e4:	00000000 	nop
  41d0e8:	246360ff 	addiu	v1,v1,24831
  41d0ec:	0043102b 	sltu	v0,v0,v1
  41d0f0:	10400008 	beqz	v0,41d114 <bitnamesof+0x1d8>
  41d0f4:	00000000 	nop
		*p++ = '+';
  41d0f8:	8fc20020 	lw	v0,32(s8)
  41d0fc:	00000000 	nop
  41d100:	00402021 	move	a0,v0
  41d104:	2403002b 	li	v1,43
  41d108:	a0830000 	sb	v1,0(a0)
  41d10c:	24420001 	addiu	v0,v0,1
  41d110:	afc20020 	sw	v0,32(s8)

	    if (buf+sizeof(buf) - p > (ptrdiff_t)nl) {
  41d114:	8f838018 	lw	v1,-32744(gp)
  41d118:	00000000 	nop
  41d11c:	24636100 	addiu	v1,v1,24832
  41d120:	8fc20020 	lw	v0,32(s8)
  41d124:	00000000 	nop
  41d128:	00621823 	subu	v1,v1,v0
  41d12c:	8fc20038 	lw	v0,56(s8)
  41d130:	00000000 	nop
  41d134:	0043102a 	slt	v0,v0,v1
  41d138:	1040000e 	beqz	v0,41d174 <bitnamesof+0x238>
  41d13c:	00000000 	nop
		strcpy(p, n);
  41d140:	8fc40020 	lw	a0,32(s8)
  41d144:	8fc50034 	lw	a1,52(s8)
  41d148:	8f998c58 	lw	t9,-29608(gp)
  41d14c:	00000000 	nop
  41d150:	0320f809 	jalr	t9
  41d154:	00000000 	nop
  41d158:	8fdc0018 	lw	gp,24(s8)
  41d15c:	00000000 	nop
		p += nl;
  41d160:	8fc20020 	lw	v0,32(s8)
  41d164:	8fc30038 	lw	v1,56(s8)
  41d168:	00000000 	nop
  41d16c:	00431021 	addu	v0,v0,v1
  41d170:	afc20020 	sw	v0,32(s8)
	    }
	    val -= bit;
  41d174:	8fc40058 	lw	a0,88(s8)
  41d178:	8fc5005c 	lw	a1,92(s8)
  41d17c:	8fc20028 	lw	v0,40(s8)
  41d180:	8fc3002c 	lw	v1,44(s8)
  41d184:	00000000 	nop
  41d188:	00a3302b 	sltu	a2,a1,v1
  41d18c:	00a31823 	subu	v1,a1,v1
  41d190:	00821023 	subu	v0,a0,v0
  41d194:	00461023 	subu	v0,v0,a2
  41d198:	afc20058 	sw	v0,88(s8)
  41d19c:	afc3005c 	sw	v1,92(s8)
	}
	if (*tp != NULL)
  41d1a0:	8fc20030 	lw	v0,48(s8)
  41d1a4:	00000000 	nop
  41d1a8:	8c420000 	lw	v0,0(v0)
  41d1ac:	00000000 	nop
  41d1b0:	10400005 	beqz	v0,41d1c8 <bitnamesof+0x28c>
  41d1b4:	00000000 	nop
	    tp++;   /* move on, but not past end */
  41d1b8:	8fc20030 	lw	v0,48(s8)
  41d1bc:	00000000 	nop
  41d1c0:	24420004 	addiu	v0,v0,4
  41d1c4:	afc20030 	sw	v0,48(s8)
  41d1c8:	8fc20028 	lw	v0,40(s8)
  41d1cc:	8fc3002c 	lw	v1,44(s8)
  41d1d0:	00021040 	sll	v0,v0,0x1
  41d1d4:	000327c2 	srl	a0,v1,0x1f
  41d1d8:	00441025 	or	v0,v0,a0
  41d1dc:	00031840 	sll	v1,v1,0x1
  41d1e0:	afc20028 	sw	v0,40(s8)
  41d1e4:	afc3002c 	sw	v1,44(s8)
  41d1e8:	1000ff77 	b	41cfc8 <bitnamesof+0x8c>
  41d1ec:	00000000 	nop
    }
    *p = '\0';
  41d1f0:	8fc20020 	lw	v0,32(s8)
  41d1f4:	00000000 	nop
  41d1f8:	a0400000 	sb	zero,0(v0)
    return buf;
  41d1fc:	8f828018 	lw	v0,-32744(gp)
  41d200:	00000000 	nop
  41d204:	2442609c 	addiu	v0,v0,24732
  41d208:	00000000 	nop
}
  41d20c:	03c0e821 	move	sp,s8
  41d210:	8fbf0048 	lw	ra,72(sp)
  41d214:	8fbe0044 	lw	s8,68(sp)
  41d218:	27bd0050 	addiu	sp,sp,80
  41d21c:	03e00008 	jr	ra
  41d220:	00000000 	nop

0041d224 <testset>:
  41d224:	3c1c0fbf 	lui	gp,0xfbf
  41d228:	279cf74c 	addiu	gp,gp,-2228
  41d22c:	0399e021 	addu	gp,gp,t9
  41d230:	27bdffe0 	addiu	sp,sp,-32
  41d234:	afbc0000 	sw	gp,0(sp)
  41d238:	afbe001c 	sw	s8,28(sp)
  41d23c:	afbc0018 	sw	gp,24(sp)
  41d240:	03a0f021 	move	s8,sp
  41d244:	afc40020 	sw	a0,32(s8)
  41d248:	afc60028 	sw	a2,40(s8)
  41d24c:	afc7002c 	sw	a3,44(s8)

/* test a set by seeing if all bits have names */

bool
testset(const char *const table[], lset_t val)
{
    lset_t bit;
    const char *const *tp;

    for (tp = table, bit = 01; val != 0; bit <<= 1, tp++) {
  41d250:	8fc20020 	lw	v0,32(s8)
  41d254:	00000000 	nop
  41d258:	afc20010 	sw	v0,16(s8)
  41d25c:	24020000 	li	v0,0
  41d260:	24030001 	li	v1,1
  41d264:	afc20008 	sw	v0,8(s8)
  41d268:	afc3000c 	sw	v1,12(s8)
  41d26c:	8fc20028 	lw	v0,40(s8)
  41d270:	8fc3002c 	lw	v1,44(s8)
  41d274:	00000000 	nop
  41d278:	00431025 	or	v0,v0,v1
  41d27c:	14400003 	bnez	v0,41d28c <testset+0x68>
  41d280:	00000000 	nop
  41d284:	10000035 	b	41d35c <testset+0x138>
  41d288:	00000000 	nop
	const char *n = *tp;
  41d28c:	8fc20010 	lw	v0,16(s8)
  41d290:	00000000 	nop
  41d294:	8c420000 	lw	v0,0(v0)
  41d298:	00000000 	nop
  41d29c:	afc20014 	sw	v0,20(s8)

	if (n == NULL || ((val & bit) && *n == '\0'))
  41d2a0:	8fc20014 	lw	v0,20(s8)
  41d2a4:	00000000 	nop
  41d2a8:	10400011 	beqz	v0,41d2f0 <testset+0xcc>
  41d2ac:	00000000 	nop
  41d2b0:	8fc40028 	lw	a0,40(s8)
  41d2b4:	8fc5002c 	lw	a1,44(s8)
  41d2b8:	8fc20008 	lw	v0,8(s8)
  41d2bc:	8fc3000c 	lw	v1,12(s8)
  41d2c0:	00822024 	and	a0,a0,v0
  41d2c4:	00a32824 	and	a1,a1,v1
  41d2c8:	00801021 	move	v0,a0
  41d2cc:	00451025 	or	v0,v0,a1
  41d2d0:	1040000a 	beqz	v0,41d2fc <testset+0xd8>
  41d2d4:	00000000 	nop
  41d2d8:	8fc20014 	lw	v0,20(s8)
  41d2dc:	00000000 	nop
  41d2e0:	80420000 	lb	v0,0(v0)
  41d2e4:	00000000 	nop
  41d2e8:	14400004 	bnez	v0,41d2fc <testset+0xd8>
  41d2ec:	00000000 	nop
	    return FALSE;
  41d2f0:	00001021 	move	v0,zero
  41d2f4:	1000001a 	b	41d360 <testset+0x13c>
  41d2f8:	00000000 	nop
	val &= ~bit;
  41d2fc:	8fc20008 	lw	v0,8(s8)
  41d300:	8fc3000c 	lw	v1,12(s8)
  41d304:	00022027 	nor	a0,zero,v0
  41d308:	00032827 	nor	a1,zero,v1
  41d30c:	8fc20028 	lw	v0,40(s8)
  41d310:	8fc3002c 	lw	v1,44(s8)
  41d314:	00441024 	and	v0,v0,a0
  41d318:	00651824 	and	v1,v1,a1
  41d31c:	afc20028 	sw	v0,40(s8)
  41d320:	afc3002c 	sw	v1,44(s8)
  41d324:	8fc20008 	lw	v0,8(s8)
  41d328:	8fc3000c 	lw	v1,12(s8)
  41d32c:	00021040 	sll	v0,v0,0x1
  41d330:	000327c2 	srl	a0,v1,0x1f
  41d334:	00441025 	or	v0,v0,a0
  41d338:	00031840 	sll	v1,v1,0x1
  41d33c:	afc20008 	sw	v0,8(s8)
  41d340:	afc3000c 	sw	v1,12(s8)
  41d344:	8fc20010 	lw	v0,16(s8)
  41d348:	00000000 	nop
  41d34c:	24420004 	addiu	v0,v0,4
  41d350:	afc20010 	sw	v0,16(s8)
  41d354:	1000ffc5 	b	41d26c <testset+0x48>
  41d358:	00000000 	nop
    }
    return TRUE;
  41d35c:	24020001 	li	v0,1
}
  41d360:	03c0e821 	move	sp,s8
  41d364:	8fbe001c 	lw	s8,28(sp)
  41d368:	27bd0020 	addiu	sp,sp,32
  41d36c:	03e00008 	jr	ra
  41d370:	00000000 	nop

0041d374 <sparse_name>:
  41d374:	3c1c0fbf 	lui	gp,0xfbf
  41d378:	279cf5fc 	addiu	gp,gp,-2564
  41d37c:	0399e021 	addu	gp,gp,t9
  41d380:	27bdffe8 	addiu	sp,sp,-24
  41d384:	afbc0000 	sw	gp,0(sp)
  41d388:	afbe0014 	sw	s8,20(sp)
  41d38c:	afbc0010 	sw	gp,16(sp)
  41d390:	03a0f021 	move	s8,sp
  41d394:	afc40018 	sw	a0,24(s8)
  41d398:	afc5001c 	sw	a1,28(s8)


const char sparse_end[] = "end of sparse names";

/* look up enum names in a sparse_names */
const char *sparse_name(sparse_names sd, unsigned long val)
{
    const struct sparse_name *p;

    for (p = sd; p->name != sparse_end; p++)
  41d39c:	8fc20018 	lw	v0,24(s8)
  41d3a0:	00000000 	nop
  41d3a4:	afc20008 	sw	v0,8(s8)
  41d3a8:	8fc20008 	lw	v0,8(s8)
  41d3ac:	00000000 	nop
  41d3b0:	8c430004 	lw	v1,4(v0)
  41d3b4:	8f828b6c 	lw	v0,-29844(gp)
  41d3b8:	00000000 	nop
  41d3bc:	14620003 	bne	v1,v0,41d3cc <sparse_name+0x58>
  41d3c0:	00000000 	nop
  41d3c4:	10000013 	b	41d414 <sparse_name+0xa0>
  41d3c8:	00000000 	nop
	if (p->val == val)
  41d3cc:	8fc20008 	lw	v0,8(s8)
  41d3d0:	00000000 	nop
  41d3d4:	8c430000 	lw	v1,0(v0)
  41d3d8:	8fc2001c 	lw	v0,28(s8)
  41d3dc:	00000000 	nop
  41d3e0:	14620006 	bne	v1,v0,41d3fc <sparse_name+0x88>
  41d3e4:	00000000 	nop
	    return p->name;
  41d3e8:	8fc20008 	lw	v0,8(s8)
  41d3ec:	00000000 	nop
  41d3f0:	8c420004 	lw	v0,4(v0)
  41d3f4:	10000008 	b	41d418 <sparse_name+0xa4>
  41d3f8:	00000000 	nop
  41d3fc:	8fc20008 	lw	v0,8(s8)
  41d400:	00000000 	nop
  41d404:	24420008 	addiu	v0,v0,8
  41d408:	afc20008 	sw	v0,8(s8)
  41d40c:	1000ffe6 	b	41d3a8 <sparse_name+0x34>
  41d410:	00000000 	nop
    return NULL;
  41d414:	00001021 	move	v0,zero
}
  41d418:	03c0e821 	move	sp,s8
  41d41c:	8fbe0014 	lw	s8,20(sp)
  41d420:	27bd0018 	addiu	sp,sp,24
  41d424:	03e00008 	jr	ra
  41d428:	00000000 	nop

0041d42c <sparse_val_show>:
  41d42c:	3c1c0fbf 	lui	gp,0xfbf
  41d430:	279cf544 	addiu	gp,gp,-2748
  41d434:	0399e021 	addu	gp,gp,t9
  41d438:	27bdffd0 	addiu	sp,sp,-48
  41d43c:	afbc0010 	sw	gp,16(sp)
  41d440:	afbf0028 	sw	ra,40(sp)
  41d444:	afbe0024 	sw	s8,36(sp)
  41d448:	afbc0020 	sw	gp,32(sp)
  41d44c:	03a0f021 	move	s8,sp
  41d450:	afc40030 	sw	a0,48(s8)
  41d454:	afc50034 	sw	a1,52(s8)

/* find or construct a string to describe an sparse value
 * Result may be in STATIC buffer!
 */
const char *
sparse_val_show(sparse_names sd, unsigned long val)
{
    const char *p = sparse_name(sd, val);
  41d458:	8fc40030 	lw	a0,48(s8)
  41d45c:	8fc50034 	lw	a1,52(s8)
  41d460:	8f998b84 	lw	t9,-29820(gp)
  41d464:	00000000 	nop
  41d468:	0320f809 	jalr	t9
  41d46c:	00000000 	nop
  41d470:	8fdc0010 	lw	gp,16(s8)
  41d474:	afc20018 	sw	v0,24(s8)

    if (p == NULL)
  41d478:	8fc20018 	lw	v0,24(s8)
  41d47c:	00000000 	nop
  41d480:	14400014 	bnez	v0,41d4d4 <sparse_val_show+0xa8>
  41d484:	00000000 	nop
    {
	static char buf[12];	/* only one!  I hope that it is big enough */

	snprintf(buf, sizeof(buf), "%lu??", val);
  41d488:	8f848018 	lw	a0,-32744(gp)
  41d48c:	00000000 	nop
  41d490:	24846114 	addiu	a0,a0,24852
  41d494:	2405000c 	li	a1,12
  41d498:	8f86802c 	lw	a2,-32724(gp)
  41d49c:	00000000 	nop
  41d4a0:	24c68084 	addiu	a2,a2,-32636
  41d4a4:	8fc70034 	lw	a3,52(s8)
  41d4a8:	8f998b38 	lw	t9,-29896(gp)
  41d4ac:	00000000 	nop
  41d4b0:	0320f809 	jalr	t9
  41d4b4:	00000000 	nop
  41d4b8:	8fdc0010 	lw	gp,16(s8)
  41d4bc:	00000000 	nop
	p = buf;
  41d4c0:	8f828018 	lw	v0,-32744(gp)
  41d4c4:	00000000 	nop
  41d4c8:	24426114 	addiu	v0,v0,24852
  41d4cc:	00000000 	nop
  41d4d0:	afc20018 	sw	v0,24(s8)
    }
    return p;
  41d4d4:	8fc20018 	lw	v0,24(s8)
  41d4d8:	00000000 	nop
}
  41d4dc:	03c0e821 	move	sp,s8
  41d4e0:	8fbf0028 	lw	ra,40(sp)
  41d4e4:	8fbe0024 	lw	s8,36(sp)
  41d4e8:	27bd0030 	addiu	sp,sp,48
  41d4ec:	03e00008 	jr	ra
  41d4f0:	00000000 	nop

0041d4f4 <init_constants>:
  41d4f4:	3c1c0fbf 	lui	gp,0xfbf
  41d4f8:	279cf47c 	addiu	gp,gp,-2948
  41d4fc:	0399e021 	addu	gp,gp,t9
  41d500:	27bdffd0 	addiu	sp,sp,-48
  41d504:	afbc0010 	sw	gp,16(sp)
  41d508:	afbf0028 	sw	ra,40(sp)
  41d50c:	afbe0024 	sw	s8,36(sp)
  41d510:	afbc0020 	sw	gp,32(sp)
  41d514:	03a0f021 	move	s8,sp

void init_constants(void)
{
    happy(anyaddr(AF_INET, &ipv4_any));
  41d518:	24040002 	li	a0,2
  41d51c:	8f858018 	lw	a1,-32744(gp)
  41d520:	00000000 	nop
  41d524:	24a56120 	addiu	a1,a1,24864
  41d528:	8f998814 	lw	t9,-30700(gp)
  41d52c:	00000000 	nop
  41d530:	0320f809 	jalr	t9
  41d534:	00000000 	nop
  41d538:	8fdc0010 	lw	gp,16(s8)
  41d53c:	afc20018 	sw	v0,24(s8)
  41d540:	8fc20018 	lw	v0,24(s8)
  41d544:	00000000 	nop
  41d548:	1040000c 	beqz	v0,41d57c <init_constants+0x88>
  41d54c:	00000000 	nop
  41d550:	8fc40018 	lw	a0,24(s8)
  41d554:	8f85802c 	lw	a1,-32724(gp)
  41d558:	00000000 	nop
  41d55c:	24a580b0 	addiu	a1,a1,-32592
  41d560:	2406047e 	li	a2,1150
  41d564:	8f998bb8 	lw	t9,-29768(gp)
  41d568:	00000000 	nop
  41d56c:	0320f809 	jalr	t9
  41d570:	00000000 	nop
  41d574:	8fdc0010 	lw	gp,16(s8)
  41d578:	00000000 	nop
    happy(anyaddr(AF_INET, &ipv6_any));
  41d57c:	24040002 	li	a0,2
  41d580:	8f858018 	lw	a1,-32744(gp)
  41d584:	00000000 	nop
  41d588:	24a5613c 	addiu	a1,a1,24892
  41d58c:	8f998814 	lw	t9,-30700(gp)
  41d590:	00000000 	nop
  41d594:	0320f809 	jalr	t9
  41d598:	00000000 	nop
  41d59c:	8fdc0010 	lw	gp,16(s8)
  41d5a0:	afc20018 	sw	v0,24(s8)
  41d5a4:	8fc20018 	lw	v0,24(s8)
  41d5a8:	00000000 	nop
  41d5ac:	1040000c 	beqz	v0,41d5e0 <init_constants+0xec>
  41d5b0:	00000000 	nop
  41d5b4:	8fc40018 	lw	a0,24(s8)
  41d5b8:	8f85802c 	lw	a1,-32724(gp)
  41d5bc:	00000000 	nop
  41d5c0:	24a580b0 	addiu	a1,a1,-32592
  41d5c4:	2406047f 	li	a2,1151
  41d5c8:	8f998bb8 	lw	t9,-29768(gp)
  41d5cc:	00000000 	nop
  41d5d0:	0320f809 	jalr	t9
  41d5d4:	00000000 	nop
  41d5d8:	8fdc0010 	lw	gp,16(s8)
  41d5dc:	00000000 	nop

    happy(addrtosubnet(&ipv4_any, &ipv4_wildcard));
  41d5e0:	8f848018 	lw	a0,-32744(gp)
  41d5e4:	00000000 	nop
  41d5e8:	24846120 	addiu	a0,a0,24864
  41d5ec:	8f858018 	lw	a1,-32744(gp)
  41d5f0:	00000000 	nop
  41d5f4:	24a56158 	addiu	a1,a1,24920
  41d5f8:	8f998afc 	lw	t9,-29956(gp)
  41d5fc:	00000000 	nop
  41d600:	0320f809 	jalr	t9
  41d604:	00000000 	nop
  41d608:	8fdc0010 	lw	gp,16(s8)
  41d60c:	afc20018 	sw	v0,24(s8)
  41d610:	8fc20018 	lw	v0,24(s8)
  41d614:	00000000 	nop
  41d618:	1040000c 	beqz	v0,41d64c <init_constants+0x158>
  41d61c:	00000000 	nop
  41d620:	8fc40018 	lw	a0,24(s8)
  41d624:	8f85802c 	lw	a1,-32724(gp)
  41d628:	00000000 	nop
  41d62c:	24a580b0 	addiu	a1,a1,-32592
  41d630:	24060481 	li	a2,1153
  41d634:	8f998bb8 	lw	t9,-29768(gp)
  41d638:	00000000 	nop
  41d63c:	0320f809 	jalr	t9
  41d640:	00000000 	nop
  41d644:	8fdc0010 	lw	gp,16(s8)
  41d648:	00000000 	nop
    happy(addrtosubnet(&ipv6_any, &ipv6_wildcard));
  41d64c:	8f848018 	lw	a0,-32744(gp)
  41d650:	00000000 	nop
  41d654:	2484613c 	addiu	a0,a0,24892
  41d658:	8f858018 	lw	a1,-32744(gp)
  41d65c:	00000000 	nop
  41d660:	24a56178 	addiu	a1,a1,24952
  41d664:	8f998afc 	lw	t9,-29956(gp)
  41d668:	00000000 	nop
  41d66c:	0320f809 	jalr	t9
  41d670:	00000000 	nop
  41d674:	8fdc0010 	lw	gp,16(s8)
  41d678:	afc20018 	sw	v0,24(s8)
  41d67c:	8fc20018 	lw	v0,24(s8)
  41d680:	00000000 	nop
  41d684:	1040000c 	beqz	v0,41d6b8 <init_constants+0x1c4>
  41d688:	00000000 	nop
  41d68c:	8fc40018 	lw	a0,24(s8)
  41d690:	8f85802c 	lw	a1,-32724(gp)
  41d694:	00000000 	nop
  41d698:	24a580b0 	addiu	a1,a1,-32592
  41d69c:	24060482 	li	a2,1154
  41d6a0:	8f998bb8 	lw	t9,-29768(gp)
  41d6a4:	00000000 	nop
  41d6a8:	0320f809 	jalr	t9
  41d6ac:	00000000 	nop
  41d6b0:	8fdc0010 	lw	gp,16(s8)
  41d6b4:	00000000 	nop

    happy(initsubnet(&ipv4_any, 0, '0', &ipv4_all));
  41d6b8:	8f848018 	lw	a0,-32744(gp)
  41d6bc:	00000000 	nop
  41d6c0:	24846120 	addiu	a0,a0,24864
  41d6c4:	00002821 	move	a1,zero
  41d6c8:	24060030 	li	a2,48
  41d6cc:	8f878018 	lw	a3,-32744(gp)
  41d6d0:	00000000 	nop
  41d6d4:	24e76198 	addiu	a3,a3,24984
  41d6d8:	8f998844 	lw	t9,-30652(gp)
  41d6dc:	00000000 	nop
  41d6e0:	0320f809 	jalr	t9
  41d6e4:	00000000 	nop
  41d6e8:	8fdc0010 	lw	gp,16(s8)
  41d6ec:	afc20018 	sw	v0,24(s8)
  41d6f0:	8fc20018 	lw	v0,24(s8)
  41d6f4:	00000000 	nop
  41d6f8:	1040000c 	beqz	v0,41d72c <init_constants+0x238>
  41d6fc:	00000000 	nop
  41d700:	8fc40018 	lw	a0,24(s8)
  41d704:	8f85802c 	lw	a1,-32724(gp)
  41d708:	00000000 	nop
  41d70c:	24a580b0 	addiu	a1,a1,-32592
  41d710:	24060484 	li	a2,1156
  41d714:	8f998bb8 	lw	t9,-29768(gp)
  41d718:	00000000 	nop
  41d71c:	0320f809 	jalr	t9
  41d720:	00000000 	nop
  41d724:	8fdc0010 	lw	gp,16(s8)
  41d728:	00000000 	nop
    happy(initsubnet(&ipv6_any, 0, '0', &ipv6_all));
  41d72c:	8f848018 	lw	a0,-32744(gp)
  41d730:	00000000 	nop
  41d734:	2484613c 	addiu	a0,a0,24892
  41d738:	00002821 	move	a1,zero
  41d73c:	24060030 	li	a2,48
  41d740:	8f878018 	lw	a3,-32744(gp)
  41d744:	00000000 	nop
  41d748:	24e761b8 	addiu	a3,a3,25016
  41d74c:	8f998844 	lw	t9,-30652(gp)
  41d750:	00000000 	nop
  41d754:	0320f809 	jalr	t9
  41d758:	00000000 	nop
  41d75c:	8fdc0010 	lw	gp,16(s8)
  41d760:	afc20018 	sw	v0,24(s8)
  41d764:	8fc20018 	lw	v0,24(s8)
  41d768:	00000000 	nop
  41d76c:	1040000c 	beqz	v0,41d7a0 <init_constants+0x2ac>
  41d770:	00000000 	nop
  41d774:	8fc40018 	lw	a0,24(s8)
  41d778:	8f85802c 	lw	a1,-32724(gp)
  41d77c:	00000000 	nop
  41d780:	24a580b0 	addiu	a1,a1,-32592
  41d784:	24060485 	li	a2,1157
  41d788:	8f998bb8 	lw	t9,-29768(gp)
  41d78c:	00000000 	nop
  41d790:	0320f809 	jalr	t9
  41d794:	00000000 	nop
  41d798:	8fdc0010 	lw	gp,16(s8)
  41d79c:	00000000 	nop
}
  41d7a0:	03c0e821 	move	sp,s8
  41d7a4:	8fbf0028 	lw	ra,40(sp)
  41d7a8:	8fbe0024 	lw	s8,36(sp)
  41d7ac:	27bd0030 	addiu	sp,sp,48
  41d7b0:	03e00008 	jr	ra
  41d7b4:	00000000 	nop
	...

0041d7c0 <get_cookie>:
  41d7c0:	3c1c0fbf 	lui	gp,0xfbf
  41d7c4:	279cf1b0 	addiu	gp,gp,-3664
  41d7c8:	0399e021 	addu	gp,gp,t9
  41d7cc:	27bdff48 	addiu	sp,sp,-184
  41d7d0:	afbc0010 	sw	gp,16(sp)
  41d7d4:	afbf00b0 	sw	ra,176(sp)
  41d7d8:	afbe00ac 	sw	s8,172(sp)
  41d7dc:	afbc00a8 	sw	gp,168(sp)
  41d7e0:	03a0f021 	move	s8,sp
  41d7e4:	afc400b8 	sw	a0,184(s8)
  41d7e8:	afc500bc 	sw	a1,188(s8)
  41d7ec:	afc600c0 	sw	a2,192(s8)
  41d7f0:	afc700c4 	sw	a3,196(s8)
    u_char buffer[SHA1_DIGEST_SIZE];
    SHA1_CTX ctx;

    do {
	if (initiator)
  41d7f4:	8fc200b8 	lw	v0,184(s8)
  41d7f8:	00000000 	nop
  41d7fc:	1040000a 	beqz	v0,41d828 <get_cookie+0x68>
  41d800:	00000000 	nop
	{
	    get_rnd_bytes(cookie, length);
  41d804:	8fc400bc 	lw	a0,188(s8)
  41d808:	8fc500c0 	lw	a1,192(s8)
  41d80c:	8f9980bc 	lw	t9,-32580(gp)
  41d810:	00000000 	nop
  41d814:	0320f809 	jalr	t9
  41d818:	00000000 	nop
  41d81c:	8fdc0010 	lw	gp,16(s8)
  41d820:	10000049 	b	41d948 <get_cookie+0x188>
  41d824:	00000000 	nop
	}
	else  /* Responder cookie */
	{
	    /* This looks as good as any way */
	    size_t addr_length;
	    static u_int32_t counter = 0;
	    unsigned char addr_buff[
		sizeof(union {struct in_addr; struct in6_addr;})];

	    addr_length = addrbytesof(addr, addr_buff, sizeof(addr_buff));
  41d828:	8fc400c4 	lw	a0,196(s8)
  41d82c:	27c50098 	addiu	a1,s8,152
  41d830:	24060010 	li	a2,16
  41d834:	8f99839c 	lw	t9,-31844(gp)
  41d838:	00000000 	nop
  41d83c:	0320f809 	jalr	t9
  41d840:	00000000 	nop
  41d844:	8fdc0010 	lw	gp,16(s8)
  41d848:	afc20090 	sw	v0,144(s8)
	    SHA1Init(&ctx);
  41d84c:	27c40030 	addiu	a0,s8,48
  41d850:	8f998a84 	lw	t9,-30076(gp)
  41d854:	00000000 	nop
  41d858:	0320f809 	jalr	t9
  41d85c:	00000000 	nop
  41d860:	8fdc0010 	lw	gp,16(s8)
  41d864:	00000000 	nop
	    SHA1Update(&ctx, addr_buff, addr_length);
  41d868:	27c40030 	addiu	a0,s8,48
  41d86c:	27c50098 	addiu	a1,s8,152
  41d870:	8fc60090 	lw	a2,144(s8)
  41d874:	8f998ae0 	lw	t9,-29984(gp)
  41d878:	00000000 	nop
  41d87c:	0320f809 	jalr	t9
  41d880:	00000000 	nop
  41d884:	8fdc0010 	lw	gp,16(s8)
  41d888:	00000000 	nop
	    SHA1Update(&ctx, secret_of_the_day, sizeof(secret_of_the_day));
  41d88c:	27c40030 	addiu	a0,s8,48
  41d890:	8f8580dc 	lw	a1,-32548(gp)
  41d894:	24060014 	li	a2,20
  41d898:	8f998ae0 	lw	t9,-29984(gp)
  41d89c:	00000000 	nop
  41d8a0:	0320f809 	jalr	t9
  41d8a4:	00000000 	nop
  41d8a8:	8fdc0010 	lw	gp,16(s8)
  41d8ac:	00000000 	nop
	    counter++;
  41d8b0:	8f828018 	lw	v0,-32744(gp)
  41d8b4:	00000000 	nop
  41d8b8:	244213d0 	addiu	v0,v0,5072
  41d8bc:	8c420000 	lw	v0,0(v0)
  41d8c0:	00000000 	nop
  41d8c4:	24420001 	addiu	v0,v0,1
  41d8c8:	8f818018 	lw	at,-32744(gp)
  41d8cc:	00000000 	nop
  41d8d0:	242113d0 	addiu	at,at,5072
  41d8d4:	ac220000 	sw	v0,0(at)
	    SHA1Update(&ctx, (const void *) &counter, sizeof(counter));
  41d8d8:	27c40030 	addiu	a0,s8,48
  41d8dc:	8f858018 	lw	a1,-32744(gp)
  41d8e0:	00000000 	nop
  41d8e4:	24a513d0 	addiu	a1,a1,5072
  41d8e8:	24060004 	li	a2,4
  41d8ec:	8f998ae0 	lw	t9,-29984(gp)
  41d8f0:	00000000 	nop
  41d8f4:	0320f809 	jalr	t9
  41d8f8:	00000000 	nop
  41d8fc:	8fdc0010 	lw	gp,16(s8)
  41d900:	00000000 	nop
	    SHA1Final(buffer, &ctx);
  41d904:	27c40018 	addiu	a0,s8,24
  41d908:	27c50030 	addiu	a1,s8,48
  41d90c:	8f998298 	lw	t9,-32104(gp)
  41d910:	00000000 	nop
  41d914:	0320f809 	jalr	t9
  41d918:	00000000 	nop
  41d91c:	8fdc0010 	lw	gp,16(s8)
  41d920:	00000000 	nop
	    memcpy(cookie, buffer, length);
  41d924:	8fc400bc 	lw	a0,188(s8)
  41d928:	27c50018 	addiu	a1,s8,24
  41d92c:	8fc600c0 	lw	a2,192(s8)
  41d930:	8f998a30 	lw	t9,-30160(gp)
  41d934:	00000000 	nop
  41d938:	0320f809 	jalr	t9
  41d93c:	00000000 	nop
  41d940:	8fdc0010 	lw	gp,16(s8)
  41d944:	00000000 	nop
	}
    } while (is_zero_cookie(cookie));	/* probably never loops */
  41d948:	8fc400bc 	lw	a0,188(s8)
  41d94c:	24050008 	li	a1,8
  41d950:	8f99863c 	lw	t9,-31172(gp)
  41d954:	00000000 	nop
  41d958:	0320f809 	jalr	t9
  41d95c:	00000000 	nop
  41d960:	8fdc0010 	lw	gp,16(s8)
  41d964:	1440ffa3 	bnez	v0,41d7f4 <get_cookie+0x34>
  41d968:	00000000 	nop
}
  41d96c:	03c0e821 	move	sp,s8
  41d970:	8fbf00b0 	lw	ra,176(sp)
  41d974:	8fbe00ac 	lw	s8,172(sp)
  41d978:	27bd00b8 	addiu	sp,sp,184
  41d97c:	03e00008 	jr	ra
  41d980:	00000000 	nop
	...

0041d990 <init_crypto>:
  41d990:	3c1c0fbf 	lui	gp,0xfbf
  41d994:	279cefe0 	addiu	gp,gp,-4128
  41d998:	0399e021 	addu	gp,gp,t9
  41d99c:	27bdffd8 	addiu	sp,sp,-40
  41d9a0:	afbc0010 	sw	gp,16(sp)
  41d9a4:	afbf0020 	sw	ra,32(sp)
  41d9a8:	afbe001c 	sw	s8,28(sp)
  41d9ac:	afbc0018 	sw	gp,24(sp)
  41d9b0:	03a0f021 	move	s8,sp
    || mpz_init_set_str(&modp2048_modulus, MODP2048_MODULUS, 16) != 0
    || mpz_init_set_str(&modp3072_modulus, MODP3072_MODULUS, 16) != 0
    || mpz_init_set_str(&modp4096_modulus, MODP4096_MODULUS, 16) != 0
    || mpz_init_set_str(&modp6144_modulus, MODP6144_MODULUS, 16) != 0
    || mpz_init_set_str(&modp8192_modulus, MODP8192_MODULUS, 16) != 0)
  41d9b4:	8f848a48 	lw	a0,-30136(gp)
  41d9b8:	8f85802c 	lw	a1,-32724(gp)
  41d9bc:	00000000 	nop
  41d9c0:	24a580c0 	addiu	a1,a1,-32576
  41d9c4:	2406000a 	li	a2,10
  41d9c8:	8f998304 	lw	t9,-31996(gp)
  41d9cc:	00000000 	nop
  41d9d0:	0320f809 	jalr	t9
  41d9d4:	00000000 	nop
  41d9d8:	8fdc0010 	lw	gp,16(s8)
  41d9dc:	14400073 	bnez	v0,41dbac <init_crypto+0x21c>
  41d9e0:	00000000 	nop
  41d9e4:	8f848018 	lw	a0,-32744(gp)
  41d9e8:	00000000 	nop
  41d9ec:	248461e0 	addiu	a0,a0,25056
  41d9f0:	8f85802c 	lw	a1,-32724(gp)
  41d9f4:	00000000 	nop
  41d9f8:	24a580c4 	addiu	a1,a1,-32572
  41d9fc:	24060010 	li	a2,16
  41da00:	8f998304 	lw	t9,-31996(gp)
  41da04:	00000000 	nop
  41da08:	0320f809 	jalr	t9
  41da0c:	00000000 	nop
  41da10:	8fdc0010 	lw	gp,16(s8)
  41da14:	14400065 	bnez	v0,41dbac <init_crypto+0x21c>
  41da18:	00000000 	nop
  41da1c:	8f848018 	lw	a0,-32744(gp)
  41da20:	00000000 	nop
  41da24:	248461ec 	addiu	a0,a0,25068
  41da28:	8f85802c 	lw	a1,-32724(gp)
  41da2c:	00000000 	nop
  41da30:	24a5819c 	addiu	a1,a1,-32356
  41da34:	24060010 	li	a2,16
  41da38:	8f998304 	lw	t9,-31996(gp)
  41da3c:	00000000 	nop
  41da40:	0320f809 	jalr	t9
  41da44:	00000000 	nop
  41da48:	8fdc0010 	lw	gp,16(s8)
  41da4c:	14400057 	bnez	v0,41dbac <init_crypto+0x21c>
  41da50:	00000000 	nop
  41da54:	8f848018 	lw	a0,-32744(gp)
  41da58:	00000000 	nop
  41da5c:	248461f8 	addiu	a0,a0,25080
  41da60:	8f85802c 	lw	a1,-32724(gp)
  41da64:	00000000 	nop
  41da68:	24a582bc 	addiu	a1,a1,-32068
  41da6c:	24060010 	li	a2,16
  41da70:	8f998304 	lw	t9,-31996(gp)
  41da74:	00000000 	nop
  41da78:	0320f809 	jalr	t9
  41da7c:	00000000 	nop
  41da80:	8fdc0010 	lw	gp,16(s8)
  41da84:	14400049 	bnez	v0,41dbac <init_crypto+0x21c>
  41da88:	00000000 	nop
  41da8c:	8f848018 	lw	a0,-32744(gp)
  41da90:	00000000 	nop
  41da94:	24846204 	addiu	a0,a0,25092
  41da98:	8f85802c 	lw	a1,-32724(gp)
  41da9c:	00000000 	nop
  41daa0:	24a58470 	addiu	a1,a1,-31632
  41daa4:	24060010 	li	a2,16
  41daa8:	8f998304 	lw	t9,-31996(gp)
  41daac:	00000000 	nop
  41dab0:	0320f809 	jalr	t9
  41dab4:	00000000 	nop
  41dab8:	8fdc0010 	lw	gp,16(s8)
  41dabc:	1440003b 	bnez	v0,41dbac <init_crypto+0x21c>
  41dac0:	00000000 	nop
  41dac4:	8f848018 	lw	a0,-32744(gp)
  41dac8:	00000000 	nop
  41dacc:	24846210 	addiu	a0,a0,25104
  41dad0:	8f85802c 	lw	a1,-32724(gp)
  41dad4:	00000000 	nop
  41dad8:	24a586a8 	addiu	a1,a1,-31064
  41dadc:	24060010 	li	a2,16
  41dae0:	8f998304 	lw	t9,-31996(gp)
  41dae4:	00000000 	nop
  41dae8:	0320f809 	jalr	t9
  41daec:	00000000 	nop
  41daf0:	8fdc0010 	lw	gp,16(s8)
  41daf4:	1440002d 	bnez	v0,41dbac <init_crypto+0x21c>
  41daf8:	00000000 	nop
  41dafc:	8f848018 	lw	a0,-32744(gp)
  41db00:	00000000 	nop
  41db04:	2484621c 	addiu	a0,a0,25116
  41db08:	8f85802c 	lw	a1,-32724(gp)
  41db0c:	00000000 	nop
  41db10:	24a589fc 	addiu	a1,a1,-30212
  41db14:	24060010 	li	a2,16
  41db18:	8f998304 	lw	t9,-31996(gp)
  41db1c:	00000000 	nop
  41db20:	0320f809 	jalr	t9
  41db24:	00000000 	nop
  41db28:	8fdc0010 	lw	gp,16(s8)
  41db2c:	1440001f 	bnez	v0,41dbac <init_crypto+0x21c>
  41db30:	00000000 	nop
  41db34:	8f848018 	lw	a0,-32744(gp)
  41db38:	00000000 	nop
  41db3c:	24846228 	addiu	a0,a0,25128
  41db40:	8f85802c 	lw	a1,-32724(gp)
  41db44:	00000000 	nop
  41db48:	24a58e68 	addiu	a1,a1,-29080
  41db4c:	24060010 	li	a2,16
  41db50:	8f998304 	lw	t9,-31996(gp)
  41db54:	00000000 	nop
  41db58:	0320f809 	jalr	t9
  41db5c:	00000000 	nop
  41db60:	8fdc0010 	lw	gp,16(s8)
  41db64:	14400011 	bnez	v0,41dbac <init_crypto+0x21c>
  41db68:	00000000 	nop
  41db6c:	8f848018 	lw	a0,-32744(gp)
  41db70:	00000000 	nop
  41db74:	24846234 	addiu	a0,a0,25140
  41db78:	8f85802c 	lw	a1,-32724(gp)
  41db7c:	00000000 	nop
  41db80:	24a59510 	addiu	a1,a1,-27376
  41db84:	24060010 	li	a2,16
  41db88:	8f998304 	lw	t9,-31996(gp)
  41db8c:	00000000 	nop
  41db90:	0320f809 	jalr	t9
  41db94:	00000000 	nop
  41db98:	8fdc0010 	lw	gp,16(s8)
  41db9c:	14400003 	bnez	v0,41dbac <init_crypto+0x21c>
  41dba0:	00000000 	nop
  41dba4:	1000000a 	b	41dbd0 <init_crypto+0x240>
  41dba8:	00000000 	nop
	exit_log("mpz_init_set_str() failed in init_crypto()");
  41dbac:	8f84802c 	lw	a0,-32724(gp)
  41dbb0:	00000000 	nop
  41dbb4:	24849de8 	addiu	a0,a0,-25112
  41dbb8:	8f998854 	lw	t9,-30636(gp)
  41dbbc:	00000000 	nop
  41dbc0:	0320f809 	jalr	t9
  41dbc4:	00000000 	nop
  41dbc8:	8fdc0010 	lw	gp,16(s8)
  41dbcc:	00000000 	nop
#ifndef NO_IKE_ALG
	{ 
		extern int ike_alg_init(void);
		ike_alg_add((struct ike_alg *) &crypto_encrypter_3des);
  41dbd0:	8f848018 	lw	a0,-32744(gp)
  41dbd4:	00000000 	nop
  41dbd8:	248413e0 	addiu	a0,a0,5088
  41dbdc:	8f99882c 	lw	t9,-30676(gp)
  41dbe0:	00000000 	nop
  41dbe4:	0320f809 	jalr	t9
  41dbe8:	00000000 	nop
  41dbec:	8fdc0010 	lw	gp,16(s8)
  41dbf0:	00000000 	nop
		ike_alg_add((struct ike_alg *) &crypto_hasher_md5);
  41dbf4:	8f848018 	lw	a0,-32744(gp)
  41dbf8:	00000000 	nop
  41dbfc:	24841400 	addiu	a0,a0,5120
  41dc00:	8f99882c 	lw	t9,-30676(gp)
  41dc04:	00000000 	nop
  41dc08:	0320f809 	jalr	t9
  41dc0c:	00000000 	nop
  41dc10:	8fdc0010 	lw	gp,16(s8)
  41dc14:	00000000 	nop
		ike_alg_add((struct ike_alg *) &crypto_hasher_sha1);
  41dc18:	8f848018 	lw	a0,-32744(gp)
  41dc1c:	00000000 	nop
  41dc20:	2484141c 	addiu	a0,a0,5148
  41dc24:	8f99882c 	lw	t9,-30676(gp)
  41dc28:	00000000 	nop
  41dc2c:	0320f809 	jalr	t9
  41dc30:	00000000 	nop
  41dc34:	8fdc0010 	lw	gp,16(s8)
  41dc38:	00000000 	nop
		ike_alg_init();
  41dc3c:	8f998a58 	lw	t9,-30120(gp)
  41dc40:	00000000 	nop
  41dc44:	0320f809 	jalr	t9
  41dc48:	00000000 	nop
  41dc4c:	8fdc0010 	lw	gp,16(s8)
  41dc50:	00000000 	nop
	}
#endif
}
  41dc54:	03c0e821 	move	sp,s8
  41dc58:	8fbf0020 	lw	ra,32(sp)
  41dc5c:	8fbe001c 	lw	s8,28(sp)
  41dc60:	27bd0028 	addiu	sp,sp,40
  41dc64:	03e00008 	jr	ra
  41dc68:	00000000 	nop

0041dc6c <lookup_group>:
  41dc6c:	3c1c0fbf 	lui	gp,0xfbf
  41dc70:	279ced04 	addiu	gp,gp,-4860
  41dc74:	0399e021 	addu	gp,gp,t9
  41dc78:	27bdffe8 	addiu	sp,sp,-24
  41dc7c:	afbc0000 	sw	gp,0(sp)
  41dc80:	afbe0014 	sw	s8,20(sp)
  41dc84:	afbc0010 	sw	gp,16(sp)
  41dc88:	03a0f021 	move	s8,sp
  41dc8c:	00801021 	move	v0,a0
  41dc90:	a7c20008 	sh	v0,8(s8)

/* Oakley group description
 *
 * See RFC2409 "The Internet key exchange (IKE)" 6.
 */

const struct oakley_group_desc unset_group = {0, NULL, 0};	/* magic signifier */

const struct oakley_group_desc oakley_group[OAKLEY_GROUP_SIZE] = {
#   define BYTES(bits) (((bits) + BITS_PER_BYTE - 1) / BITS_PER_BYTE)
#if 1	/* modp768 not sufficiently strong */
    { OAKLEY_GROUP_MODP768, &modp768_modulus, BYTES(768) },
#endif
    { OAKLEY_GROUP_MODP1024, &modp1024_modulus, BYTES(1024) },
    { OAKLEY_GROUP_MODP1536, &modp1536_modulus, BYTES(1536) },
    { OAKLEY_GROUP_MODP2048, &modp2048_modulus, BYTES(2048) },
    { OAKLEY_GROUP_MODP3072, &modp3072_modulus, BYTES(3072) },
    { OAKLEY_GROUP_MODP4096, &modp4096_modulus, BYTES(4096) },
    { OAKLEY_GROUP_MODP6144, &modp6144_modulus, BYTES(6144) },
    { OAKLEY_GROUP_MODP8192, &modp8192_modulus, BYTES(8192) },
#   undef BYTES
};

const struct oakley_group_desc *
lookup_group(u_int16_t group)
{
    int i;

    for (i = 0; i != elemsof(oakley_group); i++)
  41dc94:	afc0000c 	sw	zero,12(s8)
  41dc98:	8fc3000c 	lw	v1,12(s8)
  41dc9c:	24020008 	li	v0,8
  41dca0:	14620003 	bne	v1,v0,41dcb0 <lookup_group+0x44>
  41dca4:	00000000 	nop
  41dca8:	10000020 	b	41dd2c <lookup_group+0xc0>
  41dcac:	00000000 	nop
	if (group == oakley_group[i].group)
  41dcb0:	8fc3000c 	lw	v1,12(s8)
  41dcb4:	00000000 	nop
  41dcb8:	00601021 	move	v0,v1
  41dcbc:	00021040 	sll	v0,v0,0x1
  41dcc0:	00431021 	addu	v0,v0,v1
  41dcc4:	00021080 	sll	v0,v0,0x2
  41dcc8:	8f818a7c 	lw	at,-30084(gp)
  41dccc:	00000000 	nop
  41dcd0:	00221021 	addu	v0,at,v0
  41dcd4:	97c30008 	lhu	v1,8(s8)
  41dcd8:	94420000 	lhu	v0,0(v0)
  41dcdc:	00000000 	nop
  41dce0:	1462000c 	bne	v1,v0,41dd14 <lookup_group+0xa8>
  41dce4:	00000000 	nop
	    return &oakley_group[i];
  41dce8:	8fc3000c 	lw	v1,12(s8)
  41dcec:	00000000 	nop
  41dcf0:	00601021 	move	v0,v1
  41dcf4:	00021040 	sll	v0,v0,0x1
  41dcf8:	00431021 	addu	v0,v0,v1
  41dcfc:	00021080 	sll	v0,v0,0x2
  41dd00:	8f818a7c 	lw	at,-30084(gp)
  41dd04:	00000000 	nop
  41dd08:	00221021 	addu	v0,at,v0
  41dd0c:	10000008 	b	41dd30 <lookup_group+0xc4>
  41dd10:	00000000 	nop
  41dd14:	8fc2000c 	lw	v0,12(s8)
  41dd18:	00000000 	nop
  41dd1c:	24420001 	addiu	v0,v0,1
  41dd20:	afc2000c 	sw	v0,12(s8)
  41dd24:	1000ffdc 	b	41dc98 <lookup_group+0x2c>
  41dd28:	00000000 	nop
    return NULL;
  41dd2c:	00001021 	move	v0,zero
}
  41dd30:	03c0e821 	move	sp,s8
  41dd34:	8fbe0014 	lw	s8,20(sp)
  41dd38:	27bd0018 	addiu	sp,sp,24
  41dd3c:	03e00008 	jr	ra
  41dd40:	00000000 	nop

0041dd44 <do_des>:
  41dd44:	3c1c0fbf 	lui	gp,0xfbf
  41dd48:	279cec2c 	addiu	gp,gp,-5076
  41dd4c:	0399e021 	addu	gp,gp,t9
  41dd50:	27bdff50 	addiu	sp,sp,-176
  41dd54:	afbc0018 	sw	gp,24(sp)
  41dd58:	afbf00a8 	sw	ra,168(sp)
  41dd5c:	afbe00a4 	sw	s8,164(sp)
  41dd60:	afbc00a0 	sw	gp,160(sp)
  41dd64:	03a0f021 	move	s8,sp
  41dd68:	afc400b0 	sw	a0,176(s8)
  41dd6c:	afc500b4 	sw	a1,180(s8)
  41dd70:	afc600b8 	sw	a2,184(s8)
  41dd74:	afc700bc 	sw	a3,188(s8)

/* Encryption Routines
 *
 * Each uses and updates the state object's st_new_iv.
 * This must already be initialized.
 */

/* encrypt or decrypt part of an IKE message using DES
 * See draft-ietf-ipsec-isakmp-oakley-07.txt Appendix B
 */
static void __attribute__ ((unused))
do_des(bool enc, void *buf, size_t buf_len, struct state *st)
{
    des_key_schedule ks;

    (void) des_set_key((des_cblock *)st->st_enc_key.ptr, ks);
  41dd78:	8fc200bc 	lw	v0,188(s8)
  41dd7c:	00000000 	nop
  41dd80:	8c440250 	lw	a0,592(v0)
  41dd84:	27c50020 	addiu	a1,s8,32
  41dd88:	8f9984e8 	lw	t9,-31512(gp)
  41dd8c:	00000000 	nop
  41dd90:	0320f809 	jalr	t9
  41dd94:	00000000 	nop
  41dd98:	8fdc0018 	lw	gp,24(s8)
  41dd9c:	00000000 	nop

    passert(st->st_new_iv_len >= DES_CBC_BLOCK_SIZE);
  41dda0:	8fc200bc 	lw	v0,188(s8)
  41dda4:	00000000 	nop
  41dda8:	8c420248 	lw	v0,584(v0)
  41ddac:	00000000 	nop
  41ddb0:	2c420008 	sltiu	v0,v0,8
  41ddb4:	1040000e 	beqz	v0,41ddf0 <do_des+0xac>
  41ddb8:	00000000 	nop
  41ddbc:	8f84802c 	lw	a0,-32724(gp)
  41ddc0:	00000000 	nop
  41ddc4:	24849e20 	addiu	a0,a0,-25056
  41ddc8:	8f85802c 	lw	a1,-32724(gp)
  41ddcc:	00000000 	nop
  41ddd0:	24a59e48 	addiu	a1,a1,-25016
  41ddd4:	240600a7 	li	a2,167
  41ddd8:	8f998bb8 	lw	t9,-29768(gp)
  41dddc:	00000000 	nop
  41dde0:	0320f809 	jalr	t9
  41dde4:	00000000 	nop
  41dde8:	8fdc0018 	lw	gp,24(s8)
  41ddec:	00000000 	nop
    st->st_new_iv_len = DES_CBC_BLOCK_SIZE;	/* truncate */
  41ddf0:	24030008 	li	v1,8
  41ddf4:	8fc200bc 	lw	v0,188(s8)
  41ddf8:	00000000 	nop
  41ddfc:	ac430248 	sw	v1,584(v0)

    des_ncbc_encrypt((des_cblock *)buf, (des_cblock *)buf, buf_len,
  41de00:	8fc200bc 	lw	v0,188(s8)
  41de04:	00000000 	nop
  41de08:	244201c4 	addiu	v0,v0,452
  41de0c:	afa20010 	sw	v0,16(sp)
  41de10:	8fc200b0 	lw	v0,176(s8)
  41de14:	00000000 	nop
  41de18:	afa20014 	sw	v0,20(sp)
  41de1c:	8fc400b4 	lw	a0,180(s8)
  41de20:	8fc500b4 	lw	a1,180(s8)
  41de24:	8fc600b8 	lw	a2,184(s8)
  41de28:	27c70020 	addiu	a3,s8,32
  41de2c:	8f9984a0 	lw	t9,-31584(gp)
  41de30:	00000000 	nop
  41de34:	0320f809 	jalr	t9
  41de38:	00000000 	nop
  41de3c:	8fdc0018 	lw	gp,24(s8)
  41de40:	00000000 	nop
	ks,
	(des_cblock *)st->st_new_iv, enc);
}
  41de44:	03c0e821 	move	sp,s8
  41de48:	8fbf00a8 	lw	ra,168(sp)
  41de4c:	8fbe00a4 	lw	s8,164(sp)
  41de50:	27bd00b0 	addiu	sp,sp,176
  41de54:	03e00008 	jr	ra
  41de58:	00000000 	nop

0041de5c <do_3des>:
  41de5c:	3c1c0fbf 	lui	gp,0xfbf
  41de60:	279ceb14 	addiu	gp,gp,-5356
  41de64:	0399e021 	addu	gp,gp,t9
  41de68:	27bdfe48 	addiu	sp,sp,-440
  41de6c:	afbc0020 	sw	gp,32(sp)
  41de70:	afbf01b0 	sw	ra,432(sp)
  41de74:	afbe01ac 	sw	s8,428(sp)
  41de78:	afbc01a8 	sw	gp,424(sp)
  41de7c:	03a0f021 	move	s8,sp
  41de80:	afc401b8 	sw	a0,440(s8)
  41de84:	afc501bc 	sw	a1,444(s8)
  41de88:	afc601c0 	sw	a2,448(s8)
  41de8c:	afc701c4 	sw	a3,452(s8)

/* encrypt or decrypt part of an IKE message using 3DES
 * See draft-ietf-ipsec-isakmp-oakley-07.txt Appendix B
 */
static void
do_3des(u_int8_t *buf, size_t buf_len, u_int8_t *key, size_t key_size, u_int8_t *iv, bool enc)
{
    des_key_schedule ks[3];

    passert (!key_size || (key_size==(DES_CBC_BLOCK_SIZE * 3)))
  41de90:	8fc201c4 	lw	v0,452(s8)
  41de94:	00000000 	nop
  41de98:	10400012 	beqz	v0,41dee4 <do_3des+0x88>
  41de9c:	00000000 	nop
  41dea0:	8fc301c4 	lw	v1,452(s8)
  41dea4:	24020018 	li	v0,24
  41dea8:	1062000e 	beq	v1,v0,41dee4 <do_3des+0x88>
  41deac:	00000000 	nop
  41deb0:	8f84802c 	lw	a0,-32724(gp)
  41deb4:	00000000 	nop
  41deb8:	24849e54 	addiu	a0,a0,-25004
  41debc:	8f85802c 	lw	a1,-32724(gp)
  41dec0:	00000000 	nop
  41dec4:	24a59e48 	addiu	a1,a1,-25016
  41dec8:	240600b7 	li	a2,183
  41decc:	8f998bb8 	lw	t9,-29768(gp)
  41ded0:	00000000 	nop
  41ded4:	0320f809 	jalr	t9
  41ded8:	00000000 	nop
  41dedc:	8fdc0020 	lw	gp,32(s8)
  41dee0:	00000000 	nop
    (void) des_set_key((des_cblock *)key + 0, ks[0]);
  41dee4:	8fc401c0 	lw	a0,448(s8)
  41dee8:	27c50028 	addiu	a1,s8,40
  41deec:	8f9984e8 	lw	t9,-31512(gp)
  41def0:	00000000 	nop
  41def4:	0320f809 	jalr	t9
  41def8:	00000000 	nop
  41defc:	8fdc0020 	lw	gp,32(s8)
  41df00:	00000000 	nop
    (void) des_set_key((des_cblock *)key + 1, ks[1]);
  41df04:	8fc201c0 	lw	v0,448(s8)
  41df08:	00000000 	nop
  41df0c:	24420008 	addiu	v0,v0,8
  41df10:	00402021 	move	a0,v0
  41df14:	27c500a8 	addiu	a1,s8,168
  41df18:	8f9984e8 	lw	t9,-31512(gp)
  41df1c:	00000000 	nop
  41df20:	0320f809 	jalr	t9
  41df24:	00000000 	nop
  41df28:	8fdc0020 	lw	gp,32(s8)
  41df2c:	00000000 	nop
    (void) des_set_key((des_cblock *)key + 2, ks[2]);
  41df30:	8fc201c0 	lw	v0,448(s8)
  41df34:	00000000 	nop
  41df38:	24420010 	addiu	v0,v0,16
  41df3c:	00402021 	move	a0,v0
  41df40:	27c50128 	addiu	a1,s8,296
  41df44:	8f9984e8 	lw	t9,-31512(gp)
  41df48:	00000000 	nop
  41df4c:	0320f809 	jalr	t9
  41df50:	00000000 	nop
  41df54:	8fdc0020 	lw	gp,32(s8)
  41df58:	00000000 	nop

    des_ede3_cbc_encrypt((des_cblock *)buf, (des_cblock *)buf, buf_len,
  41df5c:	27c200a8 	addiu	v0,s8,168
  41df60:	afa20010 	sw	v0,16(sp)
  41df64:	27c20128 	addiu	v0,s8,296
  41df68:	afa20014 	sw	v0,20(sp)
  41df6c:	8fc201c8 	lw	v0,456(s8)
  41df70:	00000000 	nop
  41df74:	afa20018 	sw	v0,24(sp)
  41df78:	8fc201cc 	lw	v0,460(s8)
  41df7c:	00000000 	nop
  41df80:	afa2001c 	sw	v0,28(sp)
  41df84:	8fc401b8 	lw	a0,440(s8)
  41df88:	8fc501b8 	lw	a1,440(s8)
  41df8c:	8fc601bc 	lw	a2,444(s8)
  41df90:	27c70028 	addiu	a3,s8,40
  41df94:	8f9984a4 	lw	t9,-31580(gp)
  41df98:	00000000 	nop
  41df9c:	0320f809 	jalr	t9
  41dfa0:	00000000 	nop
  41dfa4:	8fdc0020 	lw	gp,32(s8)
  41dfa8:	00000000 	nop
	ks[0], ks[1], ks[2],
	(des_cblock *)iv, enc);
}
  41dfac:	03c0e821 	move	sp,s8
  41dfb0:	8fbf01b0 	lw	ra,432(sp)
  41dfb4:	8fbe01ac 	lw	s8,428(sp)
  41dfb8:	27bd01b8 	addiu	sp,sp,440
  41dfbc:	03e00008 	jr	ra
  41dfc0:	00000000 	nop

0041dfc4 <crypto_get_hasher>:
  41dfc4:	3c1c0fbf 	lui	gp,0xfbf
  41dfc8:	279ce9ac 	addiu	gp,gp,-5716
  41dfcc:	0399e021 	addu	gp,gp,t9
  41dfd0:	27bdffd8 	addiu	sp,sp,-40
  41dfd4:	afbc0010 	sw	gp,16(sp)
  41dfd8:	afbf0020 	sw	ra,32(sp)
  41dfdc:	afbe001c 	sw	s8,28(sp)
  41dfe0:	afbc0018 	sw	gp,24(sp)
  41dfe4:	03a0f021 	move	s8,sp
  41dfe8:	afc40028 	sw	a0,40(s8)
/* hash and prf routines */
/*========================================================== 
 *
 *  ike_alg linked list
 *
 *==========================================================
 */
struct hash_desc *crypto_get_hasher(int alg)
{
	return (struct hash_desc *) ike_alg_find(IKE_ALG_HASH, alg, 0);
  41dfec:	24040001 	li	a0,1
  41dff0:	8fc50028 	lw	a1,40(s8)
  41dff4:	00003021 	move	a2,zero
  41dff8:	8f998c08 	lw	t9,-29688(gp)
  41dffc:	00000000 	nop
  41e000:	0320f809 	jalr	t9
  41e004:	00000000 	nop
  41e008:	8fdc0010 	lw	gp,16(s8)
  41e00c:	00000000 	nop
}
  41e010:	03c0e821 	move	sp,s8
  41e014:	8fbf0020 	lw	ra,32(sp)
  41e018:	8fbe001c 	lw	s8,28(sp)
  41e01c:	27bd0028 	addiu	sp,sp,40
  41e020:	03e00008 	jr	ra
  41e024:	00000000 	nop

0041e028 <crypto_get_encrypter>:
  41e028:	3c1c0fbf 	lui	gp,0xfbf
  41e02c:	279ce948 	addiu	gp,gp,-5816
  41e030:	0399e021 	addu	gp,gp,t9
  41e034:	27bdffd8 	addiu	sp,sp,-40
  41e038:	afbc0010 	sw	gp,16(sp)
  41e03c:	afbf0020 	sw	ra,32(sp)
  41e040:	afbe001c 	sw	s8,28(sp)
  41e044:	afbc0018 	sw	gp,24(sp)
  41e048:	03a0f021 	move	s8,sp
  41e04c:	afc40028 	sw	a0,40(s8)
struct encrypt_desc *crypto_get_encrypter(int alg)
{
	return (struct encrypt_desc *) ike_alg_find(IKE_ALG_ENCRYPT, alg, 0);
  41e050:	00002021 	move	a0,zero
  41e054:	8fc50028 	lw	a1,40(s8)
  41e058:	00003021 	move	a2,zero
  41e05c:	8f998c08 	lw	t9,-29688(gp)
  41e060:	00000000 	nop
  41e064:	0320f809 	jalr	t9
  41e068:	00000000 	nop
  41e06c:	8fdc0010 	lw	gp,16(s8)
  41e070:	00000000 	nop
}
  41e074:	03c0e821 	move	sp,s8
  41e078:	8fbf0020 	lw	ra,32(sp)
  41e07c:	8fbe001c 	lw	s8,28(sp)
  41e080:	27bd0028 	addiu	sp,sp,40
  41e084:	03e00008 	jr	ra
  41e088:	00000000 	nop

0041e08c <crypto_cbc_encrypt>:
  41e08c:	3c1c0fbf 	lui	gp,0xfbf
  41e090:	279ce8e4 	addiu	gp,gp,-5916
  41e094:	0399e021 	addu	gp,gp,t9
  41e098:	27bdffd0 	addiu	sp,sp,-48
  41e09c:	afbc0018 	sw	gp,24(sp)
  41e0a0:	afbf0028 	sw	ra,40(sp)
  41e0a4:	afbe0024 	sw	s8,36(sp)
  41e0a8:	afbc0020 	sw	gp,32(sp)
  41e0ac:	03a0f021 	move	s8,sp
  41e0b0:	afc40030 	sw	a0,48(s8)
  41e0b4:	afc50034 	sw	a1,52(s8)
  41e0b8:	afc60038 	sw	a2,56(s8)
  41e0bc:	afc7003c 	sw	a3,60(s8)
void 
crypto_cbc_encrypt(const struct encrypt_desc *e, bool enc, u_int8_t *buf, size_t size, struct state *st)
{
    passert(st->st_new_iv_len >= e->enc_blocksize);
  41e0c0:	8fc20040 	lw	v0,64(s8)
  41e0c4:	00000000 	nop
  41e0c8:	8c430248 	lw	v1,584(v0)
  41e0cc:	8fc20030 	lw	v0,48(s8)
  41e0d0:	00000000 	nop
  41e0d4:	8c42000c 	lw	v0,12(v0)
  41e0d8:	00000000 	nop
  41e0dc:	0062102b 	sltu	v0,v1,v0
  41e0e0:	1040000e 	beqz	v0,41e11c <crypto_cbc_encrypt+0x90>
  41e0e4:	00000000 	nop
  41e0e8:	8f84802c 	lw	a0,-32724(gp)
  41e0ec:	00000000 	nop
  41e0f0:	24849e88 	addiu	a0,a0,-24952
  41e0f4:	8f85802c 	lw	a1,-32724(gp)
  41e0f8:	00000000 	nop
  41e0fc:	24a59e48 	addiu	a1,a1,-25016
  41e100:	240600d2 	li	a2,210
  41e104:	8f998bb8 	lw	t9,-29768(gp)
  41e108:	00000000 	nop
  41e10c:	0320f809 	jalr	t9
  41e110:	00000000 	nop
  41e114:	8fdc0018 	lw	gp,24(s8)
  41e118:	00000000 	nop
    st->st_new_iv_len = e->enc_blocksize;	/* truncate */
  41e11c:	8fc20030 	lw	v0,48(s8)
  41e120:	00000000 	nop
  41e124:	8c43000c 	lw	v1,12(v0)
  41e128:	8fc20040 	lw	v0,64(s8)
  41e12c:	00000000 	nop
  41e130:	ac430248 	sw	v1,584(v0)

    e->do_crypt(buf, size, st->st_enc_key.ptr, st->st_enc_key.len, st->st_new_iv, enc);
  41e134:	8fc20040 	lw	v0,64(s8)
  41e138:	00000000 	nop
  41e13c:	244201c4 	addiu	v0,v0,452
  41e140:	afa20010 	sw	v0,16(sp)
  41e144:	8fc20034 	lw	v0,52(s8)
  41e148:	00000000 	nop
  41e14c:	afa20014 	sw	v0,20(sp)
  41e150:	8fc20030 	lw	v0,48(s8)
  41e154:	00000000 	nop
  41e158:	8c43001c 	lw	v1,28(v0)
  41e15c:	8fc40038 	lw	a0,56(s8)
  41e160:	8fc5003c 	lw	a1,60(s8)
  41e164:	8fc20040 	lw	v0,64(s8)
  41e168:	00000000 	nop
  41e16c:	8c460250 	lw	a2,592(v0)
  41e170:	8fc20040 	lw	v0,64(s8)
  41e174:	00000000 	nop
  41e178:	8c470254 	lw	a3,596(v0)
  41e17c:	0060c821 	move	t9,v1
  41e180:	0320f809 	jalr	t9
  41e184:	00000000 	nop
  41e188:	8fdc0018 	lw	gp,24(s8)
  41e18c:	00000000 	nop
    /*
    e->set_key(&ctx, st->st_enc_key.ptr, st->st_enc_key.len);
    e->cbc_crypt(&ctx, buf, size, st->st_new_iv, enc);
    */
}
  41e190:	03c0e821 	move	sp,s8
  41e194:	8fbf0028 	lw	ra,40(sp)
  41e198:	8fbe0024 	lw	s8,36(sp)
  41e19c:	27bd0030 	addiu	sp,sp,48
  41e1a0:	03e00008 	jr	ra
  41e1a4:	00000000 	nop

0041e1a8 <hmac_init>:
  41e1a8:	3c1c0fbf 	lui	gp,0xfbf
  41e1ac:	279ce7c8 	addiu	gp,gp,-6200
  41e1b0:	0399e021 	addu	gp,gp,t9
  41e1b4:	27bdffd0 	addiu	sp,sp,-48
  41e1b8:	afbc0010 	sw	gp,16(sp)
  41e1bc:	afbf0028 	sw	ra,40(sp)
  41e1c0:	afbe0024 	sw	s8,36(sp)
  41e1c4:	afbc0020 	sw	gp,32(sp)
  41e1c8:	03a0f021 	move	s8,sp
  41e1cc:	afc40030 	sw	a0,48(s8)
  41e1d0:	afc50034 	sw	a1,52(s8)
  41e1d4:	afc60038 	sw	a2,56(s8)
  41e1d8:	afc7003c 	sw	a3,60(s8)
/* HMAC package
 * rfc2104.txt specifies how HMAC works.
 */

void
hmac_init(struct hmac_ctx *ctx,
    const struct hash_desc *h,
    const u_char *key, size_t key_len)
{
    int k;

    ctx->h = h;
  41e1dc:	8fc30034 	lw	v1,52(s8)
  41e1e0:	8fc20030 	lw	v0,48(s8)
  41e1e4:	00000000 	nop
  41e1e8:	ac430000 	sw	v1,0(v0)
    ctx->hmac_digest_size = h->hash_digest_size;
  41e1ec:	8fc20034 	lw	v0,52(s8)
  41e1f0:	00000000 	nop
  41e1f4:	8c43000c 	lw	v1,12(v0)
  41e1f8:	8fc20030 	lw	v0,48(s8)
  41e1fc:	00000000 	nop
  41e200:	ac430004 	sw	v1,4(v0)

    /* Prepare the two pads for the HMAC */

    memset(ctx->buf1, '\0', HMAC_BUFSIZE);
  41e204:	8fc20030 	lw	v0,48(s8)
  41e208:	00000000 	nop
  41e20c:	244200dc 	addiu	v0,v0,220
  41e210:	00402021 	move	a0,v0
  41e214:	00002821 	move	a1,zero
  41e218:	24060040 	li	a2,64
  41e21c:	8f998500 	lw	t9,-31488(gp)
  41e220:	00000000 	nop
  41e224:	0320f809 	jalr	t9
  41e228:	00000000 	nop
  41e22c:	8fdc0010 	lw	gp,16(s8)
  41e230:	00000000 	nop

    if (key_len <= HMAC_BUFSIZE)
  41e234:	8fc2003c 	lw	v0,60(s8)
  41e238:	00000000 	nop
  41e23c:	2c420041 	sltiu	v0,v0,65
  41e240:	1040000e 	beqz	v0,41e27c <hmac_init+0xd4>
  41e244:	00000000 	nop
    {
	memcpy(ctx->buf1, key, key_len);
  41e248:	8fc20030 	lw	v0,48(s8)
  41e24c:	00000000 	nop
  41e250:	244200dc 	addiu	v0,v0,220
  41e254:	00402021 	move	a0,v0
  41e258:	8fc50038 	lw	a1,56(s8)
  41e25c:	8fc6003c 	lw	a2,60(s8)
  41e260:	8f998a30 	lw	t9,-30160(gp)
  41e264:	00000000 	nop
  41e268:	0320f809 	jalr	t9
  41e26c:	00000000 	nop
  41e270:	8fdc0010 	lw	gp,16(s8)
  41e274:	1000002a 	b	41e320 <hmac_init+0x178>
  41e278:	00000000 	nop
    }
    else
    {
	h->hash_init(&ctx->hash_ctx);
  41e27c:	8fc20030 	lw	v0,48(s8)
  41e280:	00000000 	nop
  41e284:	24430008 	addiu	v1,v0,8
  41e288:	8fc20034 	lw	v0,52(s8)
  41e28c:	00000000 	nop
  41e290:	8c420010 	lw	v0,16(v0)
  41e294:	00602021 	move	a0,v1
  41e298:	0040c821 	move	t9,v0
  41e29c:	0320f809 	jalr	t9
  41e2a0:	00000000 	nop
  41e2a4:	8fdc0010 	lw	gp,16(s8)
  41e2a8:	00000000 	nop
	h->hash_update(&ctx->hash_ctx, key, key_len);
  41e2ac:	8fc20030 	lw	v0,48(s8)
  41e2b0:	00000000 	nop
  41e2b4:	24430008 	addiu	v1,v0,8
  41e2b8:	8fc20034 	lw	v0,52(s8)
  41e2bc:	00000000 	nop
  41e2c0:	8c420014 	lw	v0,20(v0)
  41e2c4:	00602021 	move	a0,v1
  41e2c8:	8fc50038 	lw	a1,56(s8)
  41e2cc:	8fc6003c 	lw	a2,60(s8)
  41e2d0:	0040c821 	move	t9,v0
  41e2d4:	0320f809 	jalr	t9
  41e2d8:	00000000 	nop
  41e2dc:	8fdc0010 	lw	gp,16(s8)
  41e2e0:	00000000 	nop
	h->hash_final(ctx->buf1, &ctx->hash_ctx);
  41e2e4:	8fc20030 	lw	v0,48(s8)
  41e2e8:	00000000 	nop
  41e2ec:	244400dc 	addiu	a0,v0,220
  41e2f0:	8fc20030 	lw	v0,48(s8)
  41e2f4:	00000000 	nop
  41e2f8:	24430008 	addiu	v1,v0,8
  41e2fc:	8fc20034 	lw	v0,52(s8)
  41e300:	00000000 	nop
  41e304:	8c420018 	lw	v0,24(v0)
  41e308:	00602821 	move	a1,v1
  41e30c:	0040c821 	move	t9,v0
  41e310:	0320f809 	jalr	t9
  41e314:	00000000 	nop
  41e318:	8fdc0010 	lw	gp,16(s8)
  41e31c:	00000000 	nop
    }

    memcpy(ctx->buf2, ctx->buf1, HMAC_BUFSIZE);
  41e320:	8fc20030 	lw	v0,48(s8)
  41e324:	00000000 	nop
  41e328:	2443011c 	addiu	v1,v0,284
  41e32c:	8fc20030 	lw	v0,48(s8)
  41e330:	00000000 	nop
  41e334:	244200dc 	addiu	v0,v0,220
  41e338:	00602021 	move	a0,v1
  41e33c:	00402821 	move	a1,v0
  41e340:	24060040 	li	a2,64
  41e344:	8f998a30 	lw	t9,-30160(gp)
  41e348:	00000000 	nop
  41e34c:	0320f809 	jalr	t9
  41e350:	00000000 	nop
  41e354:	8fdc0010 	lw	gp,16(s8)
  41e358:	00000000 	nop

    for (k = 0; k < HMAC_BUFSIZE; k++)
  41e35c:	afc00018 	sw	zero,24(s8)
  41e360:	8fc20018 	lw	v0,24(s8)
  41e364:	00000000 	nop
  41e368:	28420040 	slti	v0,v0,64
  41e36c:	14400003 	bnez	v0,41e37c <hmac_init+0x1d4>
  41e370:	00000000 	nop
  41e374:	1000002b 	b	41e424 <hmac_init+0x27c>
  41e378:	00000000 	nop
    {
	ctx->buf1[k] ^= HMAC_IPAD;
  41e37c:	8fc20018 	lw	v0,24(s8)
  41e380:	00000000 	nop
  41e384:	244300d8 	addiu	v1,v0,216
  41e388:	8fc20030 	lw	v0,48(s8)
  41e38c:	00000000 	nop
  41e390:	24420004 	addiu	v0,v0,4
  41e394:	00432021 	addu	a0,v0,v1
  41e398:	8fc20018 	lw	v0,24(s8)
  41e39c:	00000000 	nop
  41e3a0:	244300d8 	addiu	v1,v0,216
  41e3a4:	8fc20030 	lw	v0,48(s8)
  41e3a8:	00000000 	nop
  41e3ac:	24420004 	addiu	v0,v0,4
  41e3b0:	00431021 	addu	v0,v0,v1
  41e3b4:	90420000 	lbu	v0,0(v0)
  41e3b8:	00000000 	nop
  41e3bc:	38420036 	xori	v0,v0,0x36
  41e3c0:	a0820000 	sb	v0,0(a0)
	ctx->buf2[k] ^= HMAC_OPAD;
  41e3c4:	8fc20018 	lw	v0,24(s8)
  41e3c8:	00000000 	nop
  41e3cc:	24430118 	addiu	v1,v0,280
  41e3d0:	8fc20030 	lw	v0,48(s8)
  41e3d4:	00000000 	nop
  41e3d8:	24420004 	addiu	v0,v0,4
  41e3dc:	00432021 	addu	a0,v0,v1
  41e3e0:	8fc20018 	lw	v0,24(s8)
  41e3e4:	00000000 	nop
  41e3e8:	24430118 	addiu	v1,v0,280
  41e3ec:	8fc20030 	lw	v0,48(s8)
  41e3f0:	00000000 	nop
  41e3f4:	24420004 	addiu	v0,v0,4
  41e3f8:	00431021 	addu	v0,v0,v1
  41e3fc:	90420000 	lbu	v0,0(v0)
  41e400:	00000000 	nop
  41e404:	3842005c 	xori	v0,v0,0x5c
  41e408:	a0820000 	sb	v0,0(a0)
  41e40c:	8fc20018 	lw	v0,24(s8)
  41e410:	00000000 	nop
  41e414:	24420001 	addiu	v0,v0,1
  41e418:	afc20018 	sw	v0,24(s8)
  41e41c:	1000ffd0 	b	41e360 <hmac_init+0x1b8>
  41e420:	00000000 	nop
    }

    hmac_reinit(ctx);
  41e424:	8fc40030 	lw	a0,48(s8)
  41e428:	8f9984f0 	lw	t9,-31504(gp)
  41e42c:	00000000 	nop
  41e430:	0320f809 	jalr	t9
  41e434:	00000000 	nop
  41e438:	8fdc0010 	lw	gp,16(s8)
  41e43c:	00000000 	nop
}
  41e440:	03c0e821 	move	sp,s8
  41e444:	8fbf0028 	lw	ra,40(sp)
  41e448:	8fbe0024 	lw	s8,36(sp)
  41e44c:	27bd0030 	addiu	sp,sp,48
  41e450:	03e00008 	jr	ra
  41e454:	00000000 	nop

0041e458 <hmac_reinit>:
  41e458:	3c1c0fbf 	lui	gp,0xfbf
  41e45c:	279ce518 	addiu	gp,gp,-6888
  41e460:	0399e021 	addu	gp,gp,t9
  41e464:	27bdffd8 	addiu	sp,sp,-40
  41e468:	afbc0010 	sw	gp,16(sp)
  41e46c:	afbf0020 	sw	ra,32(sp)
  41e470:	afbe001c 	sw	s8,28(sp)
  41e474:	afbc0018 	sw	gp,24(sp)
  41e478:	03a0f021 	move	s8,sp
  41e47c:	afc40028 	sw	a0,40(s8)

void
hmac_reinit(struct hmac_ctx *ctx)
{
    ctx->h->hash_init(&ctx->hash_ctx);
  41e480:	8fc20028 	lw	v0,40(s8)
  41e484:	00000000 	nop
  41e488:	8c430000 	lw	v1,0(v0)
  41e48c:	8fc20028 	lw	v0,40(s8)
  41e490:	00000000 	nop
  41e494:	24420008 	addiu	v0,v0,8
  41e498:	8c630010 	lw	v1,16(v1)
  41e49c:	00402021 	move	a0,v0
  41e4a0:	0060c821 	move	t9,v1
  41e4a4:	0320f809 	jalr	t9
  41e4a8:	00000000 	nop
  41e4ac:	8fdc0010 	lw	gp,16(s8)
  41e4b0:	00000000 	nop
    ctx->h->hash_update(&ctx->hash_ctx, ctx->buf1, HMAC_BUFSIZE);
  41e4b4:	8fc20028 	lw	v0,40(s8)
  41e4b8:	00000000 	nop
  41e4bc:	8c440000 	lw	a0,0(v0)
  41e4c0:	8fc20028 	lw	v0,40(s8)
  41e4c4:	00000000 	nop
  41e4c8:	24430008 	addiu	v1,v0,8
  41e4cc:	8fc20028 	lw	v0,40(s8)
  41e4d0:	00000000 	nop
  41e4d4:	244200dc 	addiu	v0,v0,220
  41e4d8:	8c870014 	lw	a3,20(a0)
  41e4dc:	00602021 	move	a0,v1
  41e4e0:	00402821 	move	a1,v0
  41e4e4:	24060040 	li	a2,64
  41e4e8:	00e0c821 	move	t9,a3
  41e4ec:	0320f809 	jalr	t9
  41e4f0:	00000000 	nop
  41e4f4:	8fdc0010 	lw	gp,16(s8)
  41e4f8:	00000000 	nop
}
  41e4fc:	03c0e821 	move	sp,s8
  41e500:	8fbf0020 	lw	ra,32(sp)
  41e504:	8fbe001c 	lw	s8,28(sp)
  41e508:	27bd0028 	addiu	sp,sp,40
  41e50c:	03e00008 	jr	ra
  41e510:	00000000 	nop

0041e514 <hmac_update>:
  41e514:	3c1c0fbf 	lui	gp,0xfbf
  41e518:	279ce45c 	addiu	gp,gp,-7076
  41e51c:	0399e021 	addu	gp,gp,t9
  41e520:	27bdffd8 	addiu	sp,sp,-40
  41e524:	afbc0010 	sw	gp,16(sp)
  41e528:	afbf0020 	sw	ra,32(sp)
  41e52c:	afbe001c 	sw	s8,28(sp)
  41e530:	afbc0018 	sw	gp,24(sp)
  41e534:	03a0f021 	move	s8,sp
  41e538:	afc40028 	sw	a0,40(s8)
  41e53c:	afc5002c 	sw	a1,44(s8)
  41e540:	afc60030 	sw	a2,48(s8)

void
hmac_update(struct hmac_ctx *ctx,
    const u_char *data, size_t data_len)
{
    ctx->h->hash_update(&ctx->hash_ctx, data, data_len);
  41e544:	8fc20028 	lw	v0,40(s8)
  41e548:	00000000 	nop
  41e54c:	8c430000 	lw	v1,0(v0)
  41e550:	8fc20028 	lw	v0,40(s8)
  41e554:	00000000 	nop
  41e558:	24420008 	addiu	v0,v0,8
  41e55c:	8c630014 	lw	v1,20(v1)
  41e560:	00402021 	move	a0,v0
  41e564:	8fc5002c 	lw	a1,44(s8)
  41e568:	8fc60030 	lw	a2,48(s8)
  41e56c:	0060c821 	move	t9,v1
  41e570:	0320f809 	jalr	t9
  41e574:	00000000 	nop
  41e578:	8fdc0010 	lw	gp,16(s8)
  41e57c:	00000000 	nop
}
  41e580:	03c0e821 	move	sp,s8
  41e584:	8fbf0020 	lw	ra,32(sp)
  41e588:	8fbe001c 	lw	s8,28(sp)
  41e58c:	27bd0028 	addiu	sp,sp,40
  41e590:	03e00008 	jr	ra
  41e594:	00000000 	nop

0041e598 <hmac_final>:
  41e598:	3c1c0fbf 	lui	gp,0xfbf
  41e59c:	279ce3d8 	addiu	gp,gp,-7208
  41e5a0:	0399e021 	addu	gp,gp,t9
  41e5a4:	27bdffd0 	addiu	sp,sp,-48
  41e5a8:	afbc0010 	sw	gp,16(sp)
  41e5ac:	afbf0028 	sw	ra,40(sp)
  41e5b0:	afbe0024 	sw	s8,36(sp)
  41e5b4:	afbc0020 	sw	gp,32(sp)
  41e5b8:	03a0f021 	move	s8,sp
  41e5bc:	afc40030 	sw	a0,48(s8)
  41e5c0:	afc50034 	sw	a1,52(s8)

void
hmac_final(u_char *output, struct hmac_ctx *ctx)
{
    const struct hash_desc *h = ctx->h;
  41e5c4:	8fc20034 	lw	v0,52(s8)
  41e5c8:	00000000 	nop
  41e5cc:	8c420000 	lw	v0,0(v0)
  41e5d0:	00000000 	nop
  41e5d4:	afc20018 	sw	v0,24(s8)

    h->hash_final(output, &ctx->hash_ctx);
  41e5d8:	8fc20034 	lw	v0,52(s8)
  41e5dc:	00000000 	nop
  41e5e0:	24430008 	addiu	v1,v0,8
  41e5e4:	8fc20018 	lw	v0,24(s8)
  41e5e8:	00000000 	nop
  41e5ec:	8c420018 	lw	v0,24(v0)
  41e5f0:	8fc40030 	lw	a0,48(s8)
  41e5f4:	00602821 	move	a1,v1
  41e5f8:	0040c821 	move	t9,v0
  41e5fc:	0320f809 	jalr	t9
  41e600:	00000000 	nop
  41e604:	8fdc0010 	lw	gp,16(s8)
  41e608:	00000000 	nop

    h->hash_init(&ctx->hash_ctx);
  41e60c:	8fc20034 	lw	v0,52(s8)
  41e610:	00000000 	nop
  41e614:	24430008 	addiu	v1,v0,8
  41e618:	8fc20018 	lw	v0,24(s8)
  41e61c:	00000000 	nop
  41e620:	8c420010 	lw	v0,16(v0)
  41e624:	00602021 	move	a0,v1
  41e628:	0040c821 	move	t9,v0
  41e62c:	0320f809 	jalr	t9
  41e630:	00000000 	nop
  41e634:	8fdc0010 	lw	gp,16(s8)
  41e638:	00000000 	nop
    h->hash_update(&ctx->hash_ctx, ctx->buf2, HMAC_BUFSIZE);
  41e63c:	8fc20034 	lw	v0,52(s8)
  41e640:	00000000 	nop
  41e644:	24440008 	addiu	a0,v0,8
  41e648:	8fc20034 	lw	v0,52(s8)
  41e64c:	00000000 	nop
  41e650:	2443011c 	addiu	v1,v0,284
  41e654:	8fc20018 	lw	v0,24(s8)
  41e658:	00000000 	nop
  41e65c:	8c420014 	lw	v0,20(v0)
  41e660:	00602821 	move	a1,v1
  41e664:	24060040 	li	a2,64
  41e668:	0040c821 	move	t9,v0
  41e66c:	0320f809 	jalr	t9
  41e670:	00000000 	nop
  41e674:	8fdc0010 	lw	gp,16(s8)
  41e678:	00000000 	nop
    h->hash_update(&ctx->hash_ctx, output, h->hash_digest_size);
  41e67c:	8fc20034 	lw	v0,52(s8)
  41e680:	00000000 	nop
  41e684:	24430008 	addiu	v1,v0,8
  41e688:	8fc20018 	lw	v0,24(s8)
  41e68c:	00000000 	nop
  41e690:	8c470014 	lw	a3,20(v0)
  41e694:	00602021 	move	a0,v1
  41e698:	8fc50030 	lw	a1,48(s8)
  41e69c:	8fc20018 	lw	v0,24(s8)
  41e6a0:	00000000 	nop
  41e6a4:	8c46000c 	lw	a2,12(v0)
  41e6a8:	00e0c821 	move	t9,a3
  41e6ac:	0320f809 	jalr	t9
  41e6b0:	00000000 	nop
  41e6b4:	8fdc0010 	lw	gp,16(s8)
  41e6b8:	00000000 	nop
    h->hash_final(output, &ctx->hash_ctx);
  41e6bc:	8fc20034 	lw	v0,52(s8)
  41e6c0:	00000000 	nop
  41e6c4:	24430008 	addiu	v1,v0,8
  41e6c8:	8fc20018 	lw	v0,24(s8)
  41e6cc:	00000000 	nop
  41e6d0:	8c420018 	lw	v0,24(v0)
  41e6d4:	8fc40030 	lw	a0,48(s8)
  41e6d8:	00602821 	move	a1,v1
  41e6dc:	0040c821 	move	t9,v0
  41e6e0:	0320f809 	jalr	t9
  41e6e4:	00000000 	nop
  41e6e8:	8fdc0010 	lw	gp,16(s8)
  41e6ec:	00000000 	nop
}
  41e6f0:	03c0e821 	move	sp,s8
  41e6f4:	8fbf0028 	lw	ra,40(sp)
  41e6f8:	8fbe0024 	lw	s8,36(sp)
  41e6fc:	27bd0030 	addiu	sp,sp,48
  41e700:	03e00008 	jr	ra
  41e704:	00000000 	nop
	...

0041e710 <all_zero>:
  41e710:	3c1c0fbf 	lui	gp,0xfbf
  41e714:	279ce260 	addiu	gp,gp,-7584
  41e718:	0399e021 	addu	gp,gp,t9
  41e71c:	27bdffe8 	addiu	sp,sp,-24
  41e720:	afbc0000 	sw	gp,0(sp)
  41e724:	afbe0014 	sw	s8,20(sp)
  41e728:	afbc0010 	sw	gp,16(sp)
  41e72c:	03a0f021 	move	s8,sp
  41e730:	afc40018 	sw	a0,24(s8)
  41e734:	afc5001c 	sw	a1,28(s8)
all_zero(const unsigned char *m, size_t len)
{
    size_t i;

    for (i = 0; i != len; i++)
  41e738:	afc00008 	sw	zero,8(s8)
  41e73c:	8fc30008 	lw	v1,8(s8)
  41e740:	8fc2001c 	lw	v0,28(s8)
  41e744:	00000000 	nop
  41e748:	14620003 	bne	v1,v0,41e758 <all_zero+0x48>
  41e74c:	00000000 	nop
  41e750:	10000012 	b	41e79c <all_zero+0x8c>
  41e754:	00000000 	nop
	if (m[i] != '\0')
  41e758:	8fc30018 	lw	v1,24(s8)
  41e75c:	8fc20008 	lw	v0,8(s8)
  41e760:	00000000 	nop
  41e764:	00621021 	addu	v0,v1,v0
  41e768:	90420000 	lbu	v0,0(v0)
  41e76c:	00000000 	nop
  41e770:	10400004 	beqz	v0,41e784 <all_zero+0x74>
  41e774:	00000000 	nop
	    return FALSE;
  41e778:	00001021 	move	v0,zero
  41e77c:	10000008 	b	41e7a0 <all_zero+0x90>
  41e780:	00000000 	nop
  41e784:	8fc20008 	lw	v0,8(s8)
  41e788:	00000000 	nop
  41e78c:	24420001 	addiu	v0,v0,1
  41e790:	afc20008 	sw	v0,8(s8)
  41e794:	1000ffe9 	b	41e73c <all_zero+0x2c>
  41e798:	00000000 	nop
    return TRUE;
  41e79c:	24020001 	li	v0,1
}
  41e7a0:	03c0e821 	move	sp,s8
  41e7a4:	8fbe0014 	lw	s8,20(sp)
  41e7a8:	27bd0018 	addiu	sp,sp,24
  41e7ac:	03e00008 	jr	ra
  41e7b0:	00000000 	nop

0041e7b4 <mpz_to_n>:
  41e7b4:	3c1c0fbf 	lui	gp,0xfbf
  41e7b8:	279ce1bc 	addiu	gp,gp,-7748
  41e7bc:	0399e021 	addu	gp,gp,t9
  41e7c0:	27bdffa0 	addiu	sp,sp,-96
  41e7c4:	afbc0010 	sw	gp,16(sp)
  41e7c8:	afbf005c 	sw	ra,92(sp)
  41e7cc:	afbe0058 	sw	s8,88(sp)
  41e7d0:	afbc0054 	sw	gp,84(sp)
  41e7d4:	afb00050 	sw	s0,80(sp)
  41e7d8:	03a0f021 	move	s8,sp
  41e7dc:	afc40060 	sw	a0,96(s8)
  41e7e0:	afc50064 	sw	a1,100(s8)
  41e7e4:	afc60068 	sw	a2,104(s8)

/* Convert MP_INT to network form (binary octets, big-endian).
 * We do the malloc; caller must eventually do free.
 */
chunk_t
mpz_to_n(const MP_INT *mp, size_t bytes)
{
    chunk_t r;
    MP_INT temp1, temp2;
    int i;

    r.len = bytes;
  41e7e8:	8fc20068 	lw	v0,104(s8)
  41e7ec:	00000000 	nop
  41e7f0:	afc2001c 	sw	v0,28(s8)
    r.ptr = alloc_bytes(r.len, "host representation of large integer");
  41e7f4:	8fc4001c 	lw	a0,28(s8)
  41e7f8:	8f85802c 	lw	a1,-32724(gp)
  41e7fc:	00000000 	nop
  41e800:	24a59eb8 	addiu	a1,a1,-24904
  41e804:	8f998084 	lw	t9,-32636(gp)
  41e808:	00000000 	nop
  41e80c:	0320f809 	jalr	t9
  41e810:	00000000 	nop
  41e814:	8fdc0010 	lw	gp,16(s8)
  41e818:	afc20018 	sw	v0,24(s8)

    mpz_init(&temp1);
  41e81c:	27c40020 	addiu	a0,s8,32
  41e820:	8f998734 	lw	t9,-30924(gp)
  41e824:	00000000 	nop
  41e828:	0320f809 	jalr	t9
  41e82c:	00000000 	nop
  41e830:	8fdc0010 	lw	gp,16(s8)
  41e834:	00000000 	nop
    mpz_init(&temp2);
  41e838:	27c40030 	addiu	a0,s8,48
  41e83c:	8f998734 	lw	t9,-30924(gp)
  41e840:	00000000 	nop
  41e844:	0320f809 	jalr	t9
  41e848:	00000000 	nop
  41e84c:	8fdc0010 	lw	gp,16(s8)
  41e850:	00000000 	nop

    mpz_set(&temp1, mp);
  41e854:	27c40020 	addiu	a0,s8,32
  41e858:	8fc50064 	lw	a1,100(s8)
  41e85c:	8f9989b0 	lw	t9,-30288(gp)
  41e860:	00000000 	nop
  41e864:	0320f809 	jalr	t9
  41e868:	00000000 	nop
  41e86c:	8fdc0010 	lw	gp,16(s8)
  41e870:	00000000 	nop

    for (i = r.len-1; i >= 0; i--)
  41e874:	8fc2001c 	lw	v0,28(s8)
  41e878:	00000000 	nop
  41e87c:	2442ffff 	addiu	v0,v0,-1
  41e880:	afc20040 	sw	v0,64(s8)
  41e884:	8fc20040 	lw	v0,64(s8)
  41e888:	00000000 	nop
  41e88c:	04410003 	bgez	v0,41e89c <mpz_to_n+0xe8>
  41e890:	00000000 	nop
  41e894:	1000001c 	b	41e908 <mpz_to_n+0x154>
  41e898:	00000000 	nop
    {
	r.ptr[i] = mpz_mdivmod_ui(&temp2, NULL, &temp1, 1 << BITS_PER_BYTE);
  41e89c:	8fc30018 	lw	v1,24(s8)
  41e8a0:	8fc20040 	lw	v0,64(s8)
  41e8a4:	00000000 	nop
  41e8a8:	00628021 	addu	s0,v1,v0
  41e8ac:	27c40030 	addiu	a0,s8,48
  41e8b0:	27c50020 	addiu	a1,s8,32
  41e8b4:	24060100 	li	a2,256
  41e8b8:	8f998bb0 	lw	t9,-29776(gp)
  41e8bc:	00000000 	nop
  41e8c0:	0320f809 	jalr	t9
  41e8c4:	00000000 	nop
  41e8c8:	8fdc0010 	lw	gp,16(s8)
  41e8cc:	a2020000 	sb	v0,0(s0)
	mpz_set(&temp1, &temp2);
  41e8d0:	27c40020 	addiu	a0,s8,32
  41e8d4:	27c50030 	addiu	a1,s8,48
  41e8d8:	8f9989b0 	lw	t9,-30288(gp)
  41e8dc:	00000000 	nop
  41e8e0:	0320f809 	jalr	t9
  41e8e4:	00000000 	nop
  41e8e8:	8fdc0010 	lw	gp,16(s8)
  41e8ec:	00000000 	nop
  41e8f0:	8fc20040 	lw	v0,64(s8)
  41e8f4:	00000000 	nop
  41e8f8:	2442ffff 	addiu	v0,v0,-1
  41e8fc:	afc20040 	sw	v0,64(s8)
  41e900:	1000ffe0 	b	41e884 <mpz_to_n+0xd0>
  41e904:	00000000 	nop
    }

    passert(mpz_sgn(&temp1) == 0);	/* we must have done all the bits */
  41e908:	8fc20024 	lw	v0,36(s8)
  41e90c:	00000000 	nop
  41e910:	04400007 	bltz	v0,41e930 <mpz_to_n+0x17c>
  41e914:	00000000 	nop
  41e918:	8fc20024 	lw	v0,36(s8)
  41e91c:	00000000 	nop
  41e920:	1c400003 	bgtz	v0,41e930 <mpz_to_n+0x17c>
  41e924:	00000000 	nop
  41e928:	1000000e 	b	41e964 <mpz_to_n+0x1b0>
  41e92c:	00000000 	nop
  41e930:	8f84802c 	lw	a0,-32724(gp)
  41e934:	00000000 	nop
  41e938:	24849ee0 	addiu	a0,a0,-24864
  41e93c:	8f85802c 	lw	a1,-32724(gp)
  41e940:	00000000 	nop
  41e944:	24a59ef8 	addiu	a1,a1,-24840
  41e948:	24060043 	li	a2,67
  41e94c:	8f998bb8 	lw	t9,-29768(gp)
  41e950:	00000000 	nop
  41e954:	0320f809 	jalr	t9
  41e958:	00000000 	nop
  41e95c:	8fdc0010 	lw	gp,16(s8)
  41e960:	00000000 	nop
    mpz_clear(&temp1);
  41e964:	27c40020 	addiu	a0,s8,32
  41e968:	8f998c40 	lw	t9,-29632(gp)
  41e96c:	00000000 	nop
  41e970:	0320f809 	jalr	t9
  41e974:	00000000 	nop
  41e978:	8fdc0010 	lw	gp,16(s8)
  41e97c:	00000000 	nop
    mpz_clear(&temp2);
  41e980:	27c40030 	addiu	a0,s8,48
  41e984:	8f998c40 	lw	t9,-29632(gp)
  41e988:	00000000 	nop
  41e98c:	0320f809 	jalr	t9
  41e990:	00000000 	nop
  41e994:	8fdc0010 	lw	gp,16(s8)
  41e998:	00000000 	nop

    return r;
  41e99c:	8fc20018 	lw	v0,24(s8)
  41e9a0:	8fc30060 	lw	v1,96(s8)
  41e9a4:	00000000 	nop
  41e9a8:	ac620000 	sw	v0,0(v1)
  41e9ac:	8fc2001c 	lw	v0,28(s8)
  41e9b0:	8fc30060 	lw	v1,96(s8)
  41e9b4:	00000000 	nop
  41e9b8:	ac620004 	sw	v0,4(v1)
}
  41e9bc:	8fc20060 	lw	v0,96(s8)
  41e9c0:	03c0e821 	move	sp,s8
  41e9c4:	8fbf005c 	lw	ra,92(sp)
  41e9c8:	8fbe0058 	lw	s8,88(sp)
  41e9cc:	8fb00050 	lw	s0,80(sp)
  41e9d0:	27bd0060 	addiu	sp,sp,96
  41e9d4:	03e00008 	jr	ra
  41e9d8:	00000000 	nop

0041e9dc <n_to_mpz>:
  41e9dc:	3c1c0fbf 	lui	gp,0xfbf
  41e9e0:	279cdf94 	addiu	gp,gp,-8300
  41e9e4:	0399e021 	addu	gp,gp,t9
  41e9e8:	27bdffd0 	addiu	sp,sp,-48
  41e9ec:	afbc0010 	sw	gp,16(sp)
  41e9f0:	afbf0028 	sw	ra,40(sp)
  41e9f4:	afbe0024 	sw	s8,36(sp)
  41e9f8:	afbc0020 	sw	gp,32(sp)
  41e9fc:	03a0f021 	move	s8,sp
  41ea00:	afc40030 	sw	a0,48(s8)
  41ea04:	afc50034 	sw	a1,52(s8)
  41ea08:	afc60038 	sw	a2,56(s8)

/* Convert network form (binary bytes, big-endian) to MP_INT.
 * The *mp must not be previously mpz_inited.
 */
void
n_to_mpz(MP_INT *mp, const u_char *nbytes, size_t nlen)
{
    size_t i;

    mpz_init_set_ui(mp, 0);
  41ea0c:	8fc40030 	lw	a0,48(s8)
  41ea10:	00002821 	move	a1,zero
  41ea14:	8f9981bc 	lw	t9,-32324(gp)
  41ea18:	00000000 	nop
  41ea1c:	0320f809 	jalr	t9
  41ea20:	00000000 	nop
  41ea24:	8fdc0010 	lw	gp,16(s8)
  41ea28:	00000000 	nop

    for (i = 0; i != nlen; i++)
  41ea2c:	afc00018 	sw	zero,24(s8)
  41ea30:	8fc30018 	lw	v1,24(s8)
  41ea34:	8fc20038 	lw	v0,56(s8)
  41ea38:	00000000 	nop
  41ea3c:	14620003 	bne	v1,v0,41ea4c <n_to_mpz+0x70>
  41ea40:	00000000 	nop
  41ea44:	1000001e 	b	41eac0 <n_to_mpz+0xe4>
  41ea48:	00000000 	nop
    {
	mpz_mul_ui(mp, mp, 1 << BITS_PER_BYTE);
  41ea4c:	8fc40030 	lw	a0,48(s8)
  41ea50:	8fc50030 	lw	a1,48(s8)
  41ea54:	24060100 	li	a2,256
  41ea58:	8f998bf0 	lw	t9,-29712(gp)
  41ea5c:	00000000 	nop
  41ea60:	0320f809 	jalr	t9
  41ea64:	00000000 	nop
  41ea68:	8fdc0010 	lw	gp,16(s8)
  41ea6c:	00000000 	nop
	mpz_add_ui(mp, mp, nbytes[i]);
  41ea70:	8fc30034 	lw	v1,52(s8)
  41ea74:	8fc20018 	lw	v0,24(s8)
  41ea78:	00000000 	nop
  41ea7c:	00621021 	addu	v0,v1,v0
  41ea80:	90420000 	lbu	v0,0(v0)
  41ea84:	8fc40030 	lw	a0,48(s8)
  41ea88:	8fc50030 	lw	a1,48(s8)
  41ea8c:	00403021 	move	a2,v0
  41ea90:	8f998bb4 	lw	t9,-29772(gp)
  41ea94:	00000000 	nop
  41ea98:	0320f809 	jalr	t9
  41ea9c:	00000000 	nop
  41eaa0:	8fdc0010 	lw	gp,16(s8)
  41eaa4:	00000000 	nop
  41eaa8:	8fc20018 	lw	v0,24(s8)
  41eaac:	00000000 	nop
  41eab0:	24420001 	addiu	v0,v0,1
  41eab4:	afc20018 	sw	v0,24(s8)
  41eab8:	1000ffdd 	b	41ea30 <n_to_mpz+0x54>
  41eabc:	00000000 	nop
    }
}
  41eac0:	03c0e821 	move	sp,s8
  41eac4:	8fbf0028 	lw	ra,40(sp)
  41eac8:	8fbe0024 	lw	s8,36(sp)
  41eacc:	27bd0030 	addiu	sp,sp,48
  41ead0:	03e00008 	jr	ra
  41ead4:	00000000 	nop

0041ead8 <alloc_bytes>:
  41ead8:	3c1c0fbf 	lui	gp,0xfbf
  41eadc:	279cde98 	addiu	gp,gp,-8552
  41eae0:	0399e021 	addu	gp,gp,t9
  41eae4:	27bdffd0 	addiu	sp,sp,-48
  41eae8:	afbc0010 	sw	gp,16(sp)
  41eaec:	afbf0028 	sw	ra,40(sp)
  41eaf0:	afbe0024 	sw	s8,36(sp)
  41eaf4:	afbc0020 	sw	gp,32(sp)
  41eaf8:	03a0f021 	move	s8,sp
  41eafc:	afc40030 	sw	a0,48(s8)
  41eb00:	afc50034 	sw	a1,52(s8)


/* memory allocation
 *
 * LEAK_DETECTIVE puts a wrapper around each allocation and maintains
 * a list of live ones.  If a dead one is freed, an assertion MIGHT fail.
 * If the live list is currupted, that will often be detected.
 * In the end, report_leaks() is called, and the names of remaining
 * live allocations are printed.  At the moment, it is hoped, not that
 * the list is empty, but that there will be no surprises.
 *
 * Accepted Leaks:
 * - "struct iface" and "device name" (for "discovered" net interfaces)
 * - "struct event in event_schedule()" (events not associated with states)
 * - "Pluto lock name" (one only, needed until end -- why bother?)
 */

#ifdef LEAK_DETECTIVE

/* this magic number is 3671129837 decimal (623837458 complemented) */
#define LEAK_MAGIC 0xDAD0FEEDul

union mhdr {
    struct {
	const char *name;
	union mhdr *older, *newer;
	unsigned long magic;
    } i;    /* info */
    unsigned long junk;	/* force maximal alignment */
};

static union mhdr *allocs = NULL;

void *alloc_bytes(size_t size, const char *name)
{
	union mhdr *p = malloc(sizeof(union mhdr) + size);

	if (p == NULL)
		exit_log("unable to malloc %lu bytes for %s",
			(unsigned long) size, name);
	p->i.name = name;
	p->i.older = allocs;
	if (allocs != NULL)
	    allocs->i.newer = p;
	allocs = p;
	p->i.newer = NULL;
	p->i.magic = LEAK_MAGIC;

	memset(p+1, '\0', size);
	return p+1;
}

void *
clone_bytes(const void *orig, size_t size, const char *name)
{
	void *p = alloc_bytes(size, name);

	memcpy(p, orig, size);
	return p;
}

void
pfree(void *ptr)
{
	union mhdr *p;

	passert(ptr != NULL);
	p = ((union mhdr *)ptr) - 1;
	passert(p->i.magic == LEAK_MAGIC);
	if (p->i.older != NULL)
	{
		passert(p->i.older->i.newer == p);
		p->i.older->i.newer = p->i.newer;
	}
	if (p->i.newer == NULL)
	{
		passert(p == allocs);
		allocs = p->i.older;
	}
	else
	{
		passert(p->i.newer->i.older == p);
		p->i.newer->i.older = p->i.older;
	}
	p->i.magic = ~LEAK_MAGIC;
	free(p);
}

void
report_leaks(void)
{
	union mhdr
		*p = allocs,
		*pprev = NULL;
	unsigned long n = 0;

	while (p != NULL)
	{
		passert(p->i.magic == LEAK_MAGIC);
		passert(pprev == p->i.newer);
		pprev = p;
		p = p->i.older;
		n++;
		if (p == NULL || pprev->i.name != p->i.name)
		{
			if (n != 1)
			    log("leak: %lu * %s", n, pprev->i.name);
			else
			    log("leak: %s", pprev->i.name);
			n = 0;
		}
	}
}

#else /* !LEAK_DETECTIVE */

void *alloc_bytes(size_t size, const char *name)
{
	void *p = malloc(size);
  41eb04:	8fc40030 	lw	a0,48(s8)
  41eb08:	8f9989d0 	lw	t9,-30256(gp)
  41eb0c:	00000000 	nop
  41eb10:	0320f809 	jalr	t9
  41eb14:	00000000 	nop
  41eb18:	8fdc0010 	lw	gp,16(s8)
  41eb1c:	afc20018 	sw	v0,24(s8)

	if (p == NULL)
  41eb20:	8fc20018 	lw	v0,24(s8)
  41eb24:	00000000 	nop
  41eb28:	1440000c 	bnez	v0,41eb5c <alloc_bytes+0x84>
  41eb2c:	00000000 	nop
		exit_log("unable to malloc %lu bytes for %s",
  41eb30:	8f84802c 	lw	a0,-32724(gp)
  41eb34:	00000000 	nop
  41eb38:	24849f00 	addiu	a0,a0,-24832
  41eb3c:	8fc50030 	lw	a1,48(s8)
  41eb40:	8fc60034 	lw	a2,52(s8)
  41eb44:	8f998854 	lw	t9,-30636(gp)
  41eb48:	00000000 	nop
  41eb4c:	0320f809 	jalr	t9
  41eb50:	00000000 	nop
  41eb54:	8fdc0010 	lw	gp,16(s8)
  41eb58:	00000000 	nop
			(unsigned long) size, name);
	memset(p, '\0', size);
  41eb5c:	8fc40018 	lw	a0,24(s8)
  41eb60:	00002821 	move	a1,zero
  41eb64:	8fc60030 	lw	a2,48(s8)
  41eb68:	8f998500 	lw	t9,-31488(gp)
  41eb6c:	00000000 	nop
  41eb70:	0320f809 	jalr	t9
  41eb74:	00000000 	nop
  41eb78:	8fdc0010 	lw	gp,16(s8)
  41eb7c:	00000000 	nop
	return p;
  41eb80:	8fc20018 	lw	v0,24(s8)
  41eb84:	00000000 	nop
}
  41eb88:	03c0e821 	move	sp,s8
  41eb8c:	8fbf0028 	lw	ra,40(sp)
  41eb90:	8fbe0024 	lw	s8,36(sp)
  41eb94:	27bd0030 	addiu	sp,sp,48
  41eb98:	03e00008 	jr	ra
  41eb9c:	00000000 	nop

0041eba0 <clone_bytes>:
  41eba0:	3c1c0fbf 	lui	gp,0xfbf
  41eba4:	279cddd0 	addiu	gp,gp,-8752
  41eba8:	0399e021 	addu	gp,gp,t9
  41ebac:	27bdffd0 	addiu	sp,sp,-48
  41ebb0:	afbc0010 	sw	gp,16(sp)
  41ebb4:	afbf0028 	sw	ra,40(sp)
  41ebb8:	afbe0024 	sw	s8,36(sp)
  41ebbc:	afbc0020 	sw	gp,32(sp)
  41ebc0:	03a0f021 	move	s8,sp
  41ebc4:	afc40030 	sw	a0,48(s8)
  41ebc8:	afc50034 	sw	a1,52(s8)
  41ebcc:	afc60038 	sw	a2,56(s8)

void *clone_bytes(const void *orig, size_t size, const char *name)
{
	void *p = malloc(size);
  41ebd0:	8fc40034 	lw	a0,52(s8)
  41ebd4:	8f9989d0 	lw	t9,-30256(gp)
  41ebd8:	00000000 	nop
  41ebdc:	0320f809 	jalr	t9
  41ebe0:	00000000 	nop
  41ebe4:	8fdc0010 	lw	gp,16(s8)
  41ebe8:	afc20018 	sw	v0,24(s8)

	if (p == NULL)
  41ebec:	8fc20018 	lw	v0,24(s8)
  41ebf0:	00000000 	nop
  41ebf4:	1440000c 	bnez	v0,41ec28 <clone_bytes+0x88>
  41ebf8:	00000000 	nop
		exit_log("unable to malloc %lu bytes for %s",
  41ebfc:	8f84802c 	lw	a0,-32724(gp)
  41ec00:	00000000 	nop
  41ec04:	24849f00 	addiu	a0,a0,-24832
  41ec08:	8fc50034 	lw	a1,52(s8)
  41ec0c:	8fc60038 	lw	a2,56(s8)
  41ec10:	8f998854 	lw	t9,-30636(gp)
  41ec14:	00000000 	nop
  41ec18:	0320f809 	jalr	t9
  41ec1c:	00000000 	nop
  41ec20:	8fdc0010 	lw	gp,16(s8)
  41ec24:	00000000 	nop
			(unsigned long) size, name);
	memcpy(p, orig, size);
  41ec28:	8fc40018 	lw	a0,24(s8)
  41ec2c:	8fc50030 	lw	a1,48(s8)
  41ec30:	8fc60034 	lw	a2,52(s8)
  41ec34:	8f998a30 	lw	t9,-30160(gp)
  41ec38:	00000000 	nop
  41ec3c:	0320f809 	jalr	t9
  41ec40:	00000000 	nop
  41ec44:	8fdc0010 	lw	gp,16(s8)
  41ec48:	00000000 	nop
	return p;
  41ec4c:	8fc20018 	lw	v0,24(s8)
  41ec50:	00000000 	nop
}
  41ec54:	03c0e821 	move	sp,s8
  41ec58:	8fbf0028 	lw	ra,40(sp)
  41ec5c:	8fbe0024 	lw	s8,36(sp)
  41ec60:	27bd0030 	addiu	sp,sp,48
  41ec64:	03e00008 	jr	ra
  41ec68:	00000000 	nop

0041ec6c <timetoa>:
  41ec6c:	3c1c0fbf 	lui	gp,0xfbf
  41ec70:	279cdd04 	addiu	gp,gp,-8956
  41ec74:	0399e021 	addu	gp,gp,t9
  41ec78:	27bdffa8 	addiu	sp,sp,-88
  41ec7c:	afbc0028 	sw	gp,40(sp)
  41ec80:	afbf0050 	sw	ra,80(sp)
  41ec84:	afbe004c 	sw	s8,76(sp)
  41ec88:	afbc0048 	sw	gp,72(sp)
  41ec8c:	03a0f021 	move	s8,sp
  41ec90:	afc40058 	sw	a0,88(s8)
  41ec94:	afc5005c 	sw	a1,92(s8)
#endif /* !LEAK_DETECTIVE */


/* Names of the months */

static const char* months[] = {
    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};


/*
 *  Display a date either in local or UTC time
 */
char*
timetoa(const time_t *time, bool utc)
{
    static char buf[TIMETOA_BUF];

    if (*time == UNDEFINED_TIME)
  41ec98:	8fc20058 	lw	v0,88(s8)
  41ec9c:	00000000 	nop
  41eca0:	8c420000 	lw	v0,0(v0)
  41eca4:	00000000 	nop
  41eca8:	1440001f 	bnez	v0,41ed28 <timetoa+0xbc>
  41ecac:	00000000 	nop
	sprintf(buf, "--- -- --:--:--%s----", (utc)?" UTC ":" ");
  41ecb0:	8fc2005c 	lw	v0,92(s8)
  41ecb4:	00000000 	nop
  41ecb8:	10400008 	beqz	v0,41ecdc <timetoa+0x70>
  41ecbc:	00000000 	nop
  41ecc0:	8f82802c 	lw	v0,-32724(gp)
  41ecc4:	00000000 	nop
  41ecc8:	24429f54 	addiu	v0,v0,-24748
  41eccc:	00000000 	nop
  41ecd0:	afc20034 	sw	v0,52(s8)
  41ecd4:	10000006 	b	41ecf0 <timetoa+0x84>
  41ecd8:	00000000 	nop
  41ecdc:	8f82802c 	lw	v0,-32724(gp)
  41ece0:	00000000 	nop
  41ece4:	24429f5c 	addiu	v0,v0,-24740
  41ece8:	00000000 	nop
  41ecec:	afc20034 	sw	v0,52(s8)
  41ecf0:	8f848018 	lw	a0,-32744(gp)
  41ecf4:	00000000 	nop
  41ecf8:	24846240 	addiu	a0,a0,25152
  41ecfc:	8f85802c 	lw	a1,-32724(gp)
  41ed00:	00000000 	nop
  41ed04:	24a59f60 	addiu	a1,a1,-24736
  41ed08:	8fc60034 	lw	a2,52(s8)
  41ed0c:	8f9983d0 	lw	t9,-31792(gp)
  41ed10:	00000000 	nop
  41ed14:	0320f809 	jalr	t9
  41ed18:	00000000 	nop
  41ed1c:	8fdc0028 	lw	gp,40(s8)
  41ed20:	1000005c 	b	41ee94 <timetoa+0x228>
  41ed24:	00000000 	nop
    else
    {
	struct tm *t = (utc)? gmtime(time) : localtime(time);
  41ed28:	8fc2005c 	lw	v0,92(s8)
  41ed2c:	00000000 	nop
  41ed30:	1040000a 	beqz	v0,41ed5c <timetoa+0xf0>
  41ed34:	00000000 	nop
  41ed38:	8fc40058 	lw	a0,88(s8)
  41ed3c:	8f99819c 	lw	t9,-32356(gp)
  41ed40:	00000000 	nop
  41ed44:	0320f809 	jalr	t9
  41ed48:	00000000 	nop
  41ed4c:	8fdc0028 	lw	gp,40(s8)
  41ed50:	afc20038 	sw	v0,56(s8)
  41ed54:	10000008 	b	41ed78 <timetoa+0x10c>
  41ed58:	00000000 	nop
  41ed5c:	8fc40058 	lw	a0,88(s8)
  41ed60:	8f998504 	lw	t9,-31484(gp)
  41ed64:	00000000 	nop
  41ed68:	0320f809 	jalr	t9
  41ed6c:	00000000 	nop
  41ed70:	8fdc0028 	lw	gp,40(s8)
  41ed74:	afc20038 	sw	v0,56(s8)
  41ed78:	8fc20038 	lw	v0,56(s8)
  41ed7c:	00000000 	nop
  41ed80:	afc20030 	sw	v0,48(s8)

	sprintf(buf, "%s %02d %02d:%02d:%02d%s%04d",
  41ed84:	8fc20030 	lw	v0,48(s8)
  41ed88:	00000000 	nop
  41ed8c:	8c420010 	lw	v0,16(v0)
  41ed90:	00000000 	nop
  41ed94:	00021080 	sll	v0,v0,0x2
  41ed98:	8f818018 	lw	at,-32744(gp)
  41ed9c:	00000000 	nop
  41eda0:	242114a0 	addiu	at,at,5280
  41eda4:	00221021 	addu	v0,at,v0
  41eda8:	afc2003c 	sw	v0,60(s8)
  41edac:	8fc20030 	lw	v0,48(s8)
  41edb0:	00000000 	nop
  41edb4:	afc20040 	sw	v0,64(s8)
  41edb8:	8fc20030 	lw	v0,48(s8)
  41edbc:	00000000 	nop
  41edc0:	8c420008 	lw	v0,8(v0)
  41edc4:	00000000 	nop
  41edc8:	afa20010 	sw	v0,16(sp)
  41edcc:	8fc20030 	lw	v0,48(s8)
  41edd0:	00000000 	nop
  41edd4:	8c420004 	lw	v0,4(v0)
  41edd8:	00000000 	nop
  41eddc:	afa20014 	sw	v0,20(sp)
  41ede0:	8fc20030 	lw	v0,48(s8)
  41ede4:	00000000 	nop
  41ede8:	8c420000 	lw	v0,0(v0)
  41edec:	00000000 	nop
  41edf0:	afa20018 	sw	v0,24(sp)
  41edf4:	8fc2005c 	lw	v0,92(s8)
  41edf8:	00000000 	nop
  41edfc:	10400008 	beqz	v0,41ee20 <timetoa+0x1b4>
  41ee00:	00000000 	nop
  41ee04:	8f82802c 	lw	v0,-32724(gp)
  41ee08:	00000000 	nop
  41ee0c:	24429f54 	addiu	v0,v0,-24748
  41ee10:	00000000 	nop
  41ee14:	afa2001c 	sw	v0,28(sp)
  41ee18:	10000006 	b	41ee34 <timetoa+0x1c8>
  41ee1c:	00000000 	nop
  41ee20:	8f82802c 	lw	v0,-32724(gp)
  41ee24:	00000000 	nop
  41ee28:	24429f5c 	addiu	v0,v0,-24740
  41ee2c:	00000000 	nop
  41ee30:	afa2001c 	sw	v0,28(sp)
  41ee34:	8fc20030 	lw	v0,48(s8)
  41ee38:	00000000 	nop
  41ee3c:	8c420014 	lw	v0,20(v0)
  41ee40:	00000000 	nop
  41ee44:	2442076c 	addiu	v0,v0,1900
  41ee48:	afa20020 	sw	v0,32(sp)
  41ee4c:	8f848018 	lw	a0,-32744(gp)
  41ee50:	00000000 	nop
  41ee54:	24846240 	addiu	a0,a0,25152
  41ee58:	8f85802c 	lw	a1,-32724(gp)
  41ee5c:	00000000 	nop
  41ee60:	24a59f78 	addiu	a1,a1,-24712
  41ee64:	8fc2003c 	lw	v0,60(s8)
  41ee68:	00000000 	nop
  41ee6c:	8c460000 	lw	a2,0(v0)
  41ee70:	8fc20040 	lw	v0,64(s8)
  41ee74:	00000000 	nop
  41ee78:	8c47000c 	lw	a3,12(v0)
  41ee7c:	8f9983d0 	lw	t9,-31792(gp)
  41ee80:	00000000 	nop
  41ee84:	0320f809 	jalr	t9
  41ee88:	00000000 	nop
  41ee8c:	8fdc0028 	lw	gp,40(s8)
  41ee90:	00000000 	nop
	    months[t->tm_mon], t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec,
	    (utc)?" UTC ":" ", t->tm_year + 1900
	);
    }
    return buf;
  41ee94:	8f828018 	lw	v0,-32744(gp)
  41ee98:	00000000 	nop
  41ee9c:	24426240 	addiu	v0,v0,25152
  41eea0:	00000000 	nop
}
  41eea4:	03c0e821 	move	sp,s8
  41eea8:	8fbf0050 	lw	ra,80(sp)
  41eeac:	8fbe004c 	lw	s8,76(sp)
  41eeb0:	27bd0058 	addiu	sp,sp,88
  41eeb4:	03e00008 	jr	ra
  41eeb8:	00000000 	nop

0041eebc <check_expiry>:
  41eebc:	3c1c0fbf 	lui	gp,0xfbf
  41eec0:	279cdab4 	addiu	gp,gp,-9548
  41eec4:	0399e021 	addu	gp,gp,t9
  41eec8:	27bdffc0 	addiu	sp,sp,-64
  41eecc:	afbc0018 	sw	gp,24(sp)
  41eed0:	afbf0038 	sw	ra,56(sp)
  41eed4:	afbe0034 	sw	s8,52(sp)
  41eed8:	afbc0030 	sw	gp,48(sp)
  41eedc:	03a0f021 	move	s8,sp
  41eee0:	afc40040 	sw	a0,64(s8)
  41eee4:	afc50044 	sw	a1,68(s8)
  41eee8:	afc60048 	sw	a2,72(s8)

/*  checks if the expiration date has been reached and
 *  warns during the warning_interval of the imminent
 *  expiry. strict=TRUE declares a fatal error,
 *  strict=FALSE issues a warning upon expiry.
 */
const char*
check_expiry(time_t expiration_date, int warning_interval, bool strict)
{
    time_t now;
    int time_left;

    if (expiration_date == UNDEFINED_TIME)
  41eeec:	8fc20040 	lw	v0,64(s8)
  41eef0:	00000000 	nop
  41eef4:	14400006 	bnez	v0,41ef10 <check_expiry+0x54>
  41eef8:	00000000 	nop
      return "ok (expires never)";
  41eefc:	8f82802c 	lw	v0,-32724(gp)
  41ef00:	00000000 	nop
  41ef04:	24429f98 	addiu	v0,v0,-24680
  41ef08:	100000a4 	b	41f19c <check_expiry+0x2e0>
  41ef0c:	00000000 	nop

    /* determine the current time */
    time(&now);
  41ef10:	27c40020 	addiu	a0,s8,32
  41ef14:	8f9984b4 	lw	t9,-31564(gp)
  41ef18:	00000000 	nop
  41ef1c:	0320f809 	jalr	t9
  41ef20:	00000000 	nop
  41ef24:	8fdc0018 	lw	gp,24(s8)
  41ef28:	00000000 	nop

    time_left = (expiration_date - now);
  41ef2c:	8fc30040 	lw	v1,64(s8)
  41ef30:	8fc20020 	lw	v0,32(s8)
  41ef34:	00000000 	nop
  41ef38:	00621023 	subu	v0,v1,v0
  41ef3c:	afc20024 	sw	v0,36(s8)
    if (time_left < 0)
  41ef40:	8fc20024 	lw	v0,36(s8)
  41ef44:	00000000 	nop
  41ef48:	04410014 	bgez	v0,41ef9c <check_expiry+0xe0>
  41ef4c:	00000000 	nop
	return strict? "fatal (expired)" : "warning (expired)";
  41ef50:	8fc20048 	lw	v0,72(s8)
  41ef54:	00000000 	nop
  41ef58:	10400008 	beqz	v0,41ef7c <check_expiry+0xc0>
  41ef5c:	00000000 	nop
  41ef60:	8f82802c 	lw	v0,-32724(gp)
  41ef64:	00000000 	nop
  41ef68:	24429fac 	addiu	v0,v0,-24660
  41ef6c:	00000000 	nop
  41ef70:	afc2002c 	sw	v0,44(s8)
  41ef74:	10000006 	b	41ef90 <check_expiry+0xd4>
  41ef78:	00000000 	nop
  41ef7c:	8f82802c 	lw	v0,-32724(gp)
  41ef80:	00000000 	nop
  41ef84:	24429fbc 	addiu	v0,v0,-24644
  41ef88:	00000000 	nop
  41ef8c:	afc2002c 	sw	v0,44(s8)
  41ef90:	8fc2002c 	lw	v0,44(s8)
  41ef94:	10000081 	b	41f19c <check_expiry+0x2e0>
  41ef98:	00000000 	nop

    if (time_left > 86400*warning_interval)
  41ef9c:	8fc30044 	lw	v1,68(s8)
  41efa0:	00000000 	nop
  41efa4:	00601021 	move	v0,v1
  41efa8:	00021040 	sll	v0,v0,0x1
  41efac:	00431021 	addu	v0,v0,v1
  41efb0:	00021900 	sll	v1,v0,0x4
  41efb4:	00621823 	subu	v1,v1,v0
  41efb8:	00031100 	sll	v0,v1,0x4
  41efbc:	00431023 	subu	v0,v0,v1
  41efc0:	000219c0 	sll	v1,v0,0x7
  41efc4:	8fc20024 	lw	v0,36(s8)
  41efc8:	00000000 	nop
  41efcc:	0062102a 	slt	v0,v1,v0
  41efd0:	10400006 	beqz	v0,41efec <check_expiry+0x130>
  41efd4:	00000000 	nop
	return "ok";
  41efd8:	8f82802c 	lw	v0,-32724(gp)
  41efdc:	00000000 	nop
  41efe0:	24429fd0 	addiu	v0,v0,-24624
  41efe4:	1000006d 	b	41f19c <check_expiry+0x2e0>
  41efe8:	00000000 	nop
    {
	static char buf[35]; /* temporary storage */
	const char* unit = "second";
  41efec:	8f82802c 	lw	v0,-32724(gp)
  41eff0:	00000000 	nop
  41eff4:	24429fd4 	addiu	v0,v0,-24620
  41eff8:	00000000 	nop
  41effc:	afc20028 	sw	v0,40(s8)

	if (time_left > 86400)
  41f000:	3c030001 	lui	v1,0x1
  41f004:	34635180 	ori	v1,v1,0x5180
  41f008:	8fc20024 	lw	v0,36(s8)
  41f00c:	00000000 	nop
  41f010:	0062102a 	slt	v0,v1,v0
  41f014:	10400012 	beqz	v0,41f060 <check_expiry+0x1a4>
  41f018:	00000000 	nop
	{
	    time_left /= 86400;
  41f01c:	8fc30024 	lw	v1,36(s8)
  41f020:	3c02c22e 	lui	v0,0xc22e
  41f024:	34424507 	ori	v0,v0,0x4507
  41f028:	00620018 	mult	v1,v0
  41f02c:	00001010 	mfhi	v0
  41f030:	00431021 	addu	v0,v0,v1
  41f034:	00022403 	sra	a0,v0,0x10
  41f038:	000317c3 	sra	v0,v1,0x1f
  41f03c:	00821023 	subu	v0,a0,v0
  41f040:	afc20024 	sw	v0,36(s8)
	    unit = "day";
  41f044:	8f82802c 	lw	v0,-32724(gp)
  41f048:	00000000 	nop
  41f04c:	24429fdc 	addiu	v0,v0,-24612
  41f050:	00000000 	nop
  41f054:	afc20028 	sw	v0,40(s8)
  41f058:	1000002b 	b	41f108 <check_expiry+0x24c>
  41f05c:	00000000 	nop
	}
	else if (time_left > 3600)
  41f060:	8fc20024 	lw	v0,36(s8)
  41f064:	00000000 	nop
  41f068:	28420e11 	slti	v0,v0,3601
  41f06c:	14400012 	bnez	v0,41f0b8 <check_expiry+0x1fc>
  41f070:	00000000 	nop
	{
	    time_left /= 3600;
  41f074:	8fc30024 	lw	v1,36(s8)
  41f078:	3c0291a2 	lui	v0,0x91a2
  41f07c:	3442b3c5 	ori	v0,v0,0xb3c5
  41f080:	00620018 	mult	v1,v0
  41f084:	00001010 	mfhi	v0
  41f088:	00431021 	addu	v0,v0,v1
  41f08c:	000222c3 	sra	a0,v0,0xb
  41f090:	000317c3 	sra	v0,v1,0x1f
  41f094:	00821023 	subu	v0,a0,v0
  41f098:	afc20024 	sw	v0,36(s8)
	    unit = "hour";
  41f09c:	8f82802c 	lw	v0,-32724(gp)
  41f0a0:	00000000 	nop
  41f0a4:	24429fe0 	addiu	v0,v0,-24608
  41f0a8:	00000000 	nop
  41f0ac:	afc20028 	sw	v0,40(s8)
  41f0b0:	10000015 	b	41f108 <check_expiry+0x24c>
  41f0b4:	00000000 	nop
	}
	else if (time_left > 60)
  41f0b8:	8fc20024 	lw	v0,36(s8)
  41f0bc:	00000000 	nop
  41f0c0:	2842003d 	slti	v0,v0,61
  41f0c4:	14400010 	bnez	v0,41f108 <check_expiry+0x24c>
  41f0c8:	00000000 	nop
	{
	    time_left /= 60;
  41f0cc:	8fc30024 	lw	v1,36(s8)
  41f0d0:	3c028888 	lui	v0,0x8888
  41f0d4:	34428889 	ori	v0,v0,0x8889
  41f0d8:	00620018 	mult	v1,v0
  41f0dc:	00001010 	mfhi	v0
  41f0e0:	00431021 	addu	v0,v0,v1
  41f0e4:	00022143 	sra	a0,v0,0x5
  41f0e8:	000317c3 	sra	v0,v1,0x1f
  41f0ec:	00821023 	subu	v0,a0,v0
  41f0f0:	afc20024 	sw	v0,36(s8)
	    unit = "minute";
  41f0f4:	8f82802c 	lw	v0,-32724(gp)
  41f0f8:	00000000 	nop
  41f0fc:	24429fe8 	addiu	v0,v0,-24600
  41f100:	00000000 	nop
  41f104:	afc20028 	sw	v0,40(s8)
	}
	snprintf(buf, 35, "warning (expires in %d %s%s)", time_left,
  41f108:	8fc20028 	lw	v0,40(s8)
  41f10c:	00000000 	nop
  41f110:	afa20010 	sw	v0,16(sp)
  41f114:	8fc30024 	lw	v1,36(s8)
  41f118:	24020001 	li	v0,1
  41f11c:	14620008 	bne	v1,v0,41f140 <check_expiry+0x284>
  41f120:	00000000 	nop
  41f124:	8f82802c 	lw	v0,-32724(gp)
  41f128:	00000000 	nop
  41f12c:	24429ff0 	addiu	v0,v0,-24592
  41f130:	00000000 	nop
  41f134:	afa20014 	sw	v0,20(sp)
  41f138:	10000006 	b	41f154 <check_expiry+0x298>
  41f13c:	00000000 	nop
  41f140:	8f82802c 	lw	v0,-32724(gp)
  41f144:	00000000 	nop
  41f148:	24429ff4 	addiu	v0,v0,-24588
  41f14c:	00000000 	nop
  41f150:	afa20014 	sw	v0,20(sp)
  41f154:	8f848018 	lw	a0,-32744(gp)
  41f158:	00000000 	nop
  41f15c:	24846260 	addiu	a0,a0,25184
  41f160:	24050023 	li	a1,35
  41f164:	8f86802c 	lw	a2,-32724(gp)
  41f168:	00000000 	nop
  41f16c:	24c69ff8 	addiu	a2,a2,-24584
  41f170:	8fc70024 	lw	a3,36(s8)
  41f174:	8f998b38 	lw	t9,-29896(gp)
  41f178:	00000000 	nop
  41f17c:	0320f809 	jalr	t9
  41f180:	00000000 	nop
  41f184:	8fdc0018 	lw	gp,24(s8)
  41f188:	00000000 	nop
		 unit, (time_left == 1)?"":"s");
	return buf;
  41f18c:	8f828018 	lw	v0,-32744(gp)
  41f190:	00000000 	nop
  41f194:	24426260 	addiu	v0,v0,25184
  41f198:	00000000 	nop
    }
}
  41f19c:	03c0e821 	move	sp,s8
  41f1a0:	8fbf0038 	lw	ra,56(sp)
  41f1a4:	8fbe0034 	lw	s8,52(sp)
  41f1a8:	27bd0040 	addiu	sp,sp,64
  41f1ac:	03e00008 	jr	ra
  41f1b0:	00000000 	nop
	...

0041f1c0 <lock_cacert_list>:
  41f1c0:	3c1c0fbf 	lui	gp,0xfbf
  41f1c4:	279cd7b0 	addiu	gp,gp,-10320
  41f1c8:	0399e021 	addu	gp,gp,t9
  41f1cc:	27bdffd8 	addiu	sp,sp,-40
  41f1d0:	afbc0010 	sw	gp,16(sp)
  41f1d4:	afbf0020 	sw	ra,32(sp)
  41f1d8:	afbe001c 	sw	s8,28(sp)
  41f1dc:	afbc0018 	sw	gp,24(sp)
  41f1e0:	03a0f021 	move	s8,sp
  41f1e4:	afc40028 	sw	a0,40(s8)
 */
void
lock_cacert_list(const char *who)
{
    pthread_mutex_lock(&cacert_list_mutex);
  41f1e8:	8f848018 	lw	a0,-32744(gp)
  41f1ec:	00000000 	nop
  41f1f0:	248414ec 	addiu	a0,a0,5356
  41f1f4:	8f99825c 	lw	t9,-32164(gp)
  41f1f8:	00000000 	nop
  41f1fc:	0320f809 	jalr	t9
  41f200:	00000000 	nop
  41f204:	8fdc0010 	lw	gp,16(s8)
  41f208:	00000000 	nop
    DBG(DBG_CONTROL,
  41f20c:	8f8284f8 	lw	v0,-31496(gp)
  41f210:	00000000 	nop
  41f214:	8c420000 	lw	v0,0(v0)
  41f218:	00000000 	nop
  41f21c:	30420010 	andi	v0,v0,0x10
  41f220:	1040000b 	beqz	v0,41f250 <lock_cacert_list+0x90>
  41f224:	00000000 	nop
  41f228:	8f84802c 	lw	a0,-32724(gp)
  41f22c:	00000000 	nop
  41f230:	2484a020 	addiu	a0,a0,-24544
  41f234:	8fc50028 	lw	a1,40(s8)
  41f238:	8f9983b8 	lw	t9,-31816(gp)
  41f23c:	00000000 	nop
  41f240:	0320f809 	jalr	t9
  41f244:	00000000 	nop
  41f248:	8fdc0010 	lw	gp,16(s8)
  41f24c:	00000000 	nop
	DBG_log("cacert list locked by '%s'", who)
    )
}
  41f250:	03c0e821 	move	sp,s8
  41f254:	8fbf0020 	lw	ra,32(sp)
  41f258:	8fbe001c 	lw	s8,28(sp)
  41f25c:	27bd0028 	addiu	sp,sp,40
  41f260:	03e00008 	jr	ra
  41f264:	00000000 	nop

0041f268 <unlock_cacert_list>:
  41f268:	3c1c0fbf 	lui	gp,0xfbf
  41f26c:	279cd708 	addiu	gp,gp,-10488
  41f270:	0399e021 	addu	gp,gp,t9
  41f274:	27bdffd8 	addiu	sp,sp,-40
  41f278:	afbc0010 	sw	gp,16(sp)
  41f27c:	afbf0020 	sw	ra,32(sp)
  41f280:	afbe001c 	sw	s8,28(sp)
  41f284:	afbc0018 	sw	gp,24(sp)
  41f288:	03a0f021 	move	s8,sp
  41f28c:	afc40028 	sw	a0,40(s8)

/*
 * unlock access to the chained cacert list
 */
void
unlock_cacert_list(const char *who)
{
    DBG(DBG_CONTROL,
  41f290:	8f8284f8 	lw	v0,-31496(gp)
  41f294:	00000000 	nop
  41f298:	8c420000 	lw	v0,0(v0)
  41f29c:	00000000 	nop
  41f2a0:	30420010 	andi	v0,v0,0x10
  41f2a4:	1040000b 	beqz	v0,41f2d4 <unlock_cacert_list+0x6c>
  41f2a8:	00000000 	nop
  41f2ac:	8f84802c 	lw	a0,-32724(gp)
  41f2b0:	00000000 	nop
  41f2b4:	2484a03c 	addiu	a0,a0,-24516
  41f2b8:	8fc50028 	lw	a1,40(s8)
  41f2bc:	8f9983b8 	lw	t9,-31816(gp)
  41f2c0:	00000000 	nop
  41f2c4:	0320f809 	jalr	t9
  41f2c8:	00000000 	nop
  41f2cc:	8fdc0010 	lw	gp,16(s8)
  41f2d0:	00000000 	nop
	DBG_log("cacert list unlocked by '%s'", who)
    )
    pthread_mutex_unlock(&cacert_list_mutex);
  41f2d4:	8f848018 	lw	a0,-32744(gp)
  41f2d8:	00000000 	nop
  41f2dc:	248414ec 	addiu	a0,a0,5356
  41f2e0:	8f998418 	lw	t9,-31720(gp)
  41f2e4:	00000000 	nop
  41f2e8:	0320f809 	jalr	t9
  41f2ec:	00000000 	nop
  41f2f0:	8fdc0010 	lw	gp,16(s8)
  41f2f4:	00000000 	nop
}
  41f2f8:	03c0e821 	move	sp,s8
  41f2fc:	8fbf0020 	lw	ra,32(sp)
  41f300:	8fbe001c 	lw	s8,28(sp)
  41f304:	27bd0028 	addiu	sp,sp,40
  41f308:	03e00008 	jr	ra
  41f30c:	00000000 	nop

0041f310 <lock_crl_list>:
  41f310:	3c1c0fbf 	lui	gp,0xfbf
  41f314:	279cd660 	addiu	gp,gp,-10656
  41f318:	0399e021 	addu	gp,gp,t9
  41f31c:	27bdffd8 	addiu	sp,sp,-40
  41f320:	afbc0010 	sw	gp,16(sp)
  41f324:	afbf0020 	sw	ra,32(sp)
  41f328:	afbe001c 	sw	s8,28(sp)
  41f32c:	afbc0018 	sw	gp,24(sp)
  41f330:	03a0f021 	move	s8,sp
  41f334:	afc40028 	sw	a0,40(s8)

/*
 * lock access to the chained crl list
 */
void
lock_crl_list(const char *who)
{
    pthread_mutex_lock(&crl_list_mutex);
  41f338:	8f848018 	lw	a0,-32744(gp)
  41f33c:	00000000 	nop
  41f340:	24841504 	addiu	a0,a0,5380
  41f344:	8f99825c 	lw	t9,-32164(gp)
  41f348:	00000000 	nop
  41f34c:	0320f809 	jalr	t9
  41f350:	00000000 	nop
  41f354:	8fdc0010 	lw	gp,16(s8)
  41f358:	00000000 	nop
    DBG(DBG_CONTROL,
  41f35c:	8f8284f8 	lw	v0,-31496(gp)
  41f360:	00000000 	nop
  41f364:	8c420000 	lw	v0,0(v0)
  41f368:	00000000 	nop
  41f36c:	30420010 	andi	v0,v0,0x10
  41f370:	1040000b 	beqz	v0,41f3a0 <lock_crl_list+0x90>
  41f374:	00000000 	nop
  41f378:	8f84802c 	lw	a0,-32724(gp)
  41f37c:	00000000 	nop
  41f380:	2484a05c 	addiu	a0,a0,-24484
  41f384:	8fc50028 	lw	a1,40(s8)
  41f388:	8f9983b8 	lw	t9,-31816(gp)
  41f38c:	00000000 	nop
  41f390:	0320f809 	jalr	t9
  41f394:	00000000 	nop
  41f398:	8fdc0010 	lw	gp,16(s8)
  41f39c:	00000000 	nop
	DBG_log("crl list locked by '%s'", who)
    )
}
  41f3a0:	03c0e821 	move	sp,s8
  41f3a4:	8fbf0020 	lw	ra,32(sp)
  41f3a8:	8fbe001c 	lw	s8,28(sp)
  41f3ac:	27bd0028 	addiu	sp,sp,40
  41f3b0:	03e00008 	jr	ra
  41f3b4:	00000000 	nop

0041f3b8 <unlock_crl_list>:
  41f3b8:	3c1c0fbf 	lui	gp,0xfbf
  41f3bc:	279cd5b8 	addiu	gp,gp,-10824
  41f3c0:	0399e021 	addu	gp,gp,t9
  41f3c4:	27bdffd8 	addiu	sp,sp,-40
  41f3c8:	afbc0010 	sw	gp,16(sp)
  41f3cc:	afbf0020 	sw	ra,32(sp)
  41f3d0:	afbe001c 	sw	s8,28(sp)
  41f3d4:	afbc0018 	sw	gp,24(sp)
  41f3d8:	03a0f021 	move	s8,sp
  41f3dc:	afc40028 	sw	a0,40(s8)

/*
 * unlock access to the chained crl list
 */
void
unlock_crl_list(const char *who)
{
    DBG(DBG_CONTROL,
  41f3e0:	8f8284f8 	lw	v0,-31496(gp)
  41f3e4:	00000000 	nop
  41f3e8:	8c420000 	lw	v0,0(v0)
  41f3ec:	00000000 	nop
  41f3f0:	30420010 	andi	v0,v0,0x10
  41f3f4:	1040000b 	beqz	v0,41f424 <unlock_crl_list+0x6c>
  41f3f8:	00000000 	nop
  41f3fc:	8f84802c 	lw	a0,-32724(gp)
  41f400:	00000000 	nop
  41f404:	2484a074 	addiu	a0,a0,-24460
  41f408:	8fc50028 	lw	a1,40(s8)
  41f40c:	8f9983b8 	lw	t9,-31816(gp)
  41f410:	00000000 	nop
  41f414:	0320f809 	jalr	t9
  41f418:	00000000 	nop
  41f41c:	8fdc0010 	lw	gp,16(s8)
  41f420:	00000000 	nop
	DBG_log("crl list unlocked by '%s'", who)
    )
    pthread_mutex_unlock(&crl_list_mutex);
  41f424:	8f848018 	lw	a0,-32744(gp)
  41f428:	00000000 	nop
  41f42c:	24841504 	addiu	a0,a0,5380
  41f430:	8f998418 	lw	t9,-31720(gp)
  41f434:	00000000 	nop
  41f438:	0320f809 	jalr	t9
  41f43c:	00000000 	nop
  41f440:	8fdc0010 	lw	gp,16(s8)
  41f444:	00000000 	nop
}
  41f448:	03c0e821 	move	sp,s8
  41f44c:	8fbf0020 	lw	ra,32(sp)
  41f450:	8fbe001c 	lw	s8,28(sp)
  41f454:	27bd0028 	addiu	sp,sp,40
  41f458:	03e00008 	jr	ra
  41f45c:	00000000 	nop

0041f460 <lock_fetch_list>:
  41f460:	3c1c0fbf 	lui	gp,0xfbf
  41f464:	279cd510 	addiu	gp,gp,-10992
  41f468:	0399e021 	addu	gp,gp,t9
  41f46c:	27bdffd8 	addiu	sp,sp,-40
  41f470:	afbc0010 	sw	gp,16(sp)
  41f474:	afbf0020 	sw	ra,32(sp)
  41f478:	afbe001c 	sw	s8,28(sp)
  41f47c:	afbc0018 	sw	gp,24(sp)
  41f480:	03a0f021 	move	s8,sp
  41f484:	afc40028 	sw	a0,40(s8)

/*
 * lock access to the chained fetch request list
 */
static void
lock_fetch_list(const char *who)
{
    pthread_mutex_lock(&fetch_list_mutex);
  41f488:	8f848018 	lw	a0,-32744(gp)
  41f48c:	00000000 	nop
  41f490:	2484151c 	addiu	a0,a0,5404
  41f494:	8f99825c 	lw	t9,-32164(gp)
  41f498:	00000000 	nop
  41f49c:	0320f809 	jalr	t9
  41f4a0:	00000000 	nop
  41f4a4:	8fdc0010 	lw	gp,16(s8)
  41f4a8:	00000000 	nop
    DBG(DBG_CONTROL,
  41f4ac:	8f8284f8 	lw	v0,-31496(gp)
  41f4b0:	00000000 	nop
  41f4b4:	8c420000 	lw	v0,0(v0)
  41f4b8:	00000000 	nop
  41f4bc:	30420010 	andi	v0,v0,0x10
  41f4c0:	1040000b 	beqz	v0,41f4f0 <lock_fetch_list+0x90>
  41f4c4:	00000000 	nop
  41f4c8:	8f84802c 	lw	a0,-32724(gp)
  41f4cc:	00000000 	nop
  41f4d0:	2484a090 	addiu	a0,a0,-24432
  41f4d4:	8fc50028 	lw	a1,40(s8)
  41f4d8:	8f9983b8 	lw	t9,-31816(gp)
  41f4dc:	00000000 	nop
  41f4e0:	0320f809 	jalr	t9
  41f4e4:	00000000 	nop
  41f4e8:	8fdc0010 	lw	gp,16(s8)
  41f4ec:	00000000 	nop
	DBG_log("fetch request list locked by '%s'", who)
    )
}
  41f4f0:	03c0e821 	move	sp,s8
  41f4f4:	8fbf0020 	lw	ra,32(sp)
  41f4f8:	8fbe001c 	lw	s8,28(sp)
  41f4fc:	27bd0028 	addiu	sp,sp,40
  41f500:	03e00008 	jr	ra
  41f504:	00000000 	nop

0041f508 <unlock_fetch_list>:
  41f508:	3c1c0fbf 	lui	gp,0xfbf
  41f50c:	279cd468 	addiu	gp,gp,-11160
  41f510:	0399e021 	addu	gp,gp,t9
  41f514:	27bdffd8 	addiu	sp,sp,-40
  41f518:	afbc0010 	sw	gp,16(sp)
  41f51c:	afbf0020 	sw	ra,32(sp)
  41f520:	afbe001c 	sw	s8,28(sp)
  41f524:	afbc0018 	sw	gp,24(sp)
  41f528:	03a0f021 	move	s8,sp
  41f52c:	afc40028 	sw	a0,40(s8)

/*
 * unlock access to the chained fetch request list
 */
static void
unlock_fetch_list(const char *who)
{
    DBG(DBG_CONTROL,
  41f530:	8f8284f8 	lw	v0,-31496(gp)
  41f534:	00000000 	nop
  41f538:	8c420000 	lw	v0,0(v0)
  41f53c:	00000000 	nop
  41f540:	30420010 	andi	v0,v0,0x10
  41f544:	1040000b 	beqz	v0,41f574 <unlock_fetch_list+0x6c>
  41f548:	00000000 	nop
  41f54c:	8f84802c 	lw	a0,-32724(gp)
  41f550:	00000000 	nop
  41f554:	2484a0b4 	addiu	a0,a0,-24396
  41f558:	8fc50028 	lw	a1,40(s8)
  41f55c:	8f9983b8 	lw	t9,-31816(gp)
  41f560:	00000000 	nop
  41f564:	0320f809 	jalr	t9
  41f568:	00000000 	nop
  41f56c:	8fdc0010 	lw	gp,16(s8)
  41f570:	00000000 	nop
	DBG_log("fetch request list unlocked by '%s'", who)
    )
    pthread_mutex_unlock(&fetch_list_mutex);
  41f574:	8f848018 	lw	a0,-32744(gp)
  41f578:	00000000 	nop
  41f57c:	2484151c 	addiu	a0,a0,5404
  41f580:	8f998418 	lw	t9,-31720(gp)
  41f584:	00000000 	nop
  41f588:	0320f809 	jalr	t9
  41f58c:	00000000 	nop
  41f590:	8fdc0010 	lw	gp,16(s8)
  41f594:	00000000 	nop
}
  41f598:	03c0e821 	move	sp,s8
  41f59c:	8fbf0020 	lw	ra,32(sp)
  41f5a0:	8fbe001c 	lw	s8,28(sp)
  41f5a4:	27bd0028 	addiu	sp,sp,40
  41f5a8:	03e00008 	jr	ra
  41f5ac:	00000000 	nop

0041f5b0 <wake_fetch_thread>:
  41f5b0:	3c1c0fbf 	lui	gp,0xfbf
  41f5b4:	279cd3c0 	addiu	gp,gp,-11328
  41f5b8:	0399e021 	addu	gp,gp,t9
  41f5bc:	27bdffd8 	addiu	sp,sp,-40
  41f5c0:	afbc0010 	sw	gp,16(sp)
  41f5c4:	afbf0020 	sw	ra,32(sp)
  41f5c8:	afbe001c 	sw	s8,28(sp)
  41f5cc:	afbc0018 	sw	gp,24(sp)
  41f5d0:	03a0f021 	move	s8,sp
  41f5d4:	afc40028 	sw	a0,40(s8)

/*
 * wakes up the sleeping fetch thread
 */
void
wake_fetch_thread(const char *who)
{
    if (crl_check_interval > 0)
  41f5d8:	8f8286e8 	lw	v0,-31000(gp)
  41f5dc:	00000000 	nop
  41f5e0:	8c420000 	lw	v0,0(v0)
  41f5e4:	00000000 	nop
  41f5e8:	1840002d 	blez	v0,41f6a0 <wake_fetch_thread+0xf0>
  41f5ec:	00000000 	nop
    {
	DBG(DBG_CONTROL,
  41f5f0:	8f8284f8 	lw	v0,-31496(gp)
  41f5f4:	00000000 	nop
  41f5f8:	8c420000 	lw	v0,0(v0)
  41f5fc:	00000000 	nop
  41f600:	30420010 	andi	v0,v0,0x10
  41f604:	1040000b 	beqz	v0,41f634 <wake_fetch_thread+0x84>
  41f608:	00000000 	nop
  41f60c:	8f84802c 	lw	a0,-32724(gp)
  41f610:	00000000 	nop
  41f614:	2484a0d8 	addiu	a0,a0,-24360
  41f618:	8fc50028 	lw	a1,40(s8)
  41f61c:	8f9983b8 	lw	t9,-31816(gp)
  41f620:	00000000 	nop
  41f624:	0320f809 	jalr	t9
  41f628:	00000000 	nop
  41f62c:	8fdc0010 	lw	gp,16(s8)
  41f630:	00000000 	nop
	    DBG_log("fetch thread wake call by '%s'", who)
	)
	pthread_mutex_lock(&fetch_wake_mutex);
  41f634:	8f848018 	lw	a0,-32744(gp)
  41f638:	00000000 	nop
  41f63c:	24841534 	addiu	a0,a0,5428
  41f640:	8f99825c 	lw	t9,-32164(gp)
  41f644:	00000000 	nop
  41f648:	0320f809 	jalr	t9
  41f64c:	00000000 	nop
  41f650:	8fdc0010 	lw	gp,16(s8)
  41f654:	00000000 	nop
	pthread_cond_signal(&fetch_wake_cond);
  41f658:	8f848018 	lw	a0,-32744(gp)
  41f65c:	00000000 	nop
  41f660:	2484154c 	addiu	a0,a0,5452
  41f664:	8f998c18 	lw	t9,-29672(gp)
  41f668:	00000000 	nop
  41f66c:	0320f809 	jalr	t9
  41f670:	00000000 	nop
  41f674:	8fdc0010 	lw	gp,16(s8)
  41f678:	00000000 	nop
	pthread_mutex_unlock(&fetch_wake_mutex);
  41f67c:	8f848018 	lw	a0,-32744(gp)
  41f680:	00000000 	nop
  41f684:	24841534 	addiu	a0,a0,5428
  41f688:	8f998418 	lw	t9,-31720(gp)
  41f68c:	00000000 	nop
  41f690:	0320f809 	jalr	t9
  41f694:	00000000 	nop
  41f698:	8fdc0010 	lw	gp,16(s8)
  41f69c:	00000000 	nop
    }
}
  41f6a0:	03c0e821 	move	sp,s8
  41f6a4:	8fbf0020 	lw	ra,32(sp)
  41f6a8:	8fbe001c 	lw	s8,28(sp)
  41f6ac:	27bd0028 	addiu	sp,sp,40
  41f6b0:	03e00008 	jr	ra
  41f6b4:	00000000 	nop

0041f6b8 <free_fetch_request>:
  41f6b8:	3c1c0fbf 	lui	gp,0xfbf
  41f6bc:	279cd2b8 	addiu	gp,gp,-11592
  41f6c0:	0399e021 	addu	gp,gp,t9
  41f6c4:	27bdffd8 	addiu	sp,sp,-40
  41f6c8:	afbc0010 	sw	gp,16(sp)
  41f6cc:	afbf0020 	sw	ra,32(sp)
  41f6d0:	afbe001c 	sw	s8,28(sp)
  41f6d4:	afbc0018 	sw	gp,24(sp)
  41f6d8:	03a0f021 	move	s8,sp
  41f6dc:	afc40028 	sw	a0,40(s8)

/*
 *  free the dynamic memory used to store fetch requests
 */
static void
free_fetch_request(fetch_req_t *req)
{
    pfree(req->issuer.ptr);
  41f6e0:	8fc20028 	lw	v0,40(s8)
  41f6e4:	00000000 	nop
  41f6e8:	8c44000c 	lw	a0,12(v0)
  41f6ec:	8f998094 	lw	t9,-32620(gp)
  41f6f0:	00000000 	nop
  41f6f4:	0320f809 	jalr	t9
  41f6f8:	00000000 	nop
  41f6fc:	8fdc0010 	lw	gp,16(s8)
  41f700:	00000000 	nop
    free_generalNames(req->distributionPoints, TRUE);
  41f704:	8fc20028 	lw	v0,40(s8)
  41f708:	00000000 	nop
  41f70c:	8c440014 	lw	a0,20(v0)
  41f710:	24050001 	li	a1,1
  41f714:	8f9987ac 	lw	t9,-30804(gp)
  41f718:	00000000 	nop
  41f71c:	0320f809 	jalr	t9
  41f720:	00000000 	nop
  41f724:	8fdc0010 	lw	gp,16(s8)
  41f728:	00000000 	nop
    pfree(req);
  41f72c:	8fc40028 	lw	a0,40(s8)
  41f730:	8f998094 	lw	t9,-32620(gp)
  41f734:	00000000 	nop
  41f738:	0320f809 	jalr	t9
  41f73c:	00000000 	nop
  41f740:	8fdc0010 	lw	gp,16(s8)
  41f744:	00000000 	nop
}
  41f748:	03c0e821 	move	sp,s8
  41f74c:	8fbf0020 	lw	ra,32(sp)
  41f750:	8fbe001c 	lw	s8,28(sp)
  41f754:	27bd0028 	addiu	sp,sp,40
  41f758:	03e00008 	jr	ra
  41f75c:	00000000 	nop

0041f760 <free_fetch_requests>:
  41f760:	3c1c0fbf 	lui	gp,0xfbf
  41f764:	279cd210 	addiu	gp,gp,-11760
  41f768:	0399e021 	addu	gp,gp,t9
  41f76c:	27bdffd0 	addiu	sp,sp,-48
  41f770:	afbc0010 	sw	gp,16(sp)
  41f774:	afbf0028 	sw	ra,40(sp)
  41f778:	afbe0024 	sw	s8,36(sp)
  41f77c:	afbc0020 	sw	gp,32(sp)
  41f780:	03a0f021 	move	s8,sp

void
free_fetch_requests(void)
{
    lock_fetch_list("free_fetch_requests");
  41f784:	8f84802c 	lw	a0,-32724(gp)
  41f788:	00000000 	nop
  41f78c:	2484a0f8 	addiu	a0,a0,-24328
  41f790:	8f998028 	lw	t9,-32728(gp)
  41f794:	00000000 	nop
  41f798:	2739f460 	addiu	t9,t9,-2976
  41f79c:	00000000 	nop
  41f7a0:	0320f809 	jalr	t9
  41f7a4:	00000000 	nop
  41f7a8:	8fdc0010 	lw	gp,16(s8)
  41f7ac:	00000000 	nop

    while (fetch_reqs != NULL)
  41f7b0:	8f828018 	lw	v0,-32744(gp)
  41f7b4:	00000000 	nop
  41f7b8:	244214d0 	addiu	v0,v0,5328
  41f7bc:	8c420000 	lw	v0,0(v0)
  41f7c0:	00000000 	nop
  41f7c4:	14400003 	bnez	v0,41f7d4 <free_fetch_requests+0x74>
  41f7c8:	00000000 	nop
  41f7cc:	10000018 	b	41f830 <free_fetch_requests+0xd0>
  41f7d0:	00000000 	nop
    {
	fetch_req_t *req = fetch_reqs;
  41f7d4:	8f828018 	lw	v0,-32744(gp)
  41f7d8:	00000000 	nop
  41f7dc:	244214d0 	addiu	v0,v0,5328
  41f7e0:	8c420000 	lw	v0,0(v0)
  41f7e4:	00000000 	nop
  41f7e8:	afc20018 	sw	v0,24(s8)
	fetch_reqs = req->next;
  41f7ec:	8fc20018 	lw	v0,24(s8)
  41f7f0:	00000000 	nop
  41f7f4:	8c420000 	lw	v0,0(v0)
  41f7f8:	8f818018 	lw	at,-32744(gp)
  41f7fc:	00000000 	nop
  41f800:	242114d0 	addiu	at,at,5328
  41f804:	ac220000 	sw	v0,0(at)
	free_fetch_request(req);
  41f808:	8fc40018 	lw	a0,24(s8)
  41f80c:	8f998028 	lw	t9,-32728(gp)
  41f810:	00000000 	nop
  41f814:	2739f6b8 	addiu	t9,t9,-2376
  41f818:	00000000 	nop
  41f81c:	0320f809 	jalr	t9
  41f820:	00000000 	nop
  41f824:	8fdc0010 	lw	gp,16(s8)
  41f828:	1000ffe1 	b	41f7b0 <free_fetch_requests+0x50>
  41f82c:	00000000 	nop
    }

    unlock_fetch_list("free_fetch_requests");
  41f830:	8f84802c 	lw	a0,-32724(gp)
  41f834:	00000000 	nop
  41f838:	2484a0f8 	addiu	a0,a0,-24328
  41f83c:	8f998028 	lw	t9,-32728(gp)
  41f840:	00000000 	nop
  41f844:	2739f508 	addiu	t9,t9,-2808
  41f848:	00000000 	nop
  41f84c:	0320f809 	jalr	t9
  41f850:	00000000 	nop
  41f854:	8fdc0010 	lw	gp,16(s8)
  41f858:	00000000 	nop
}
  41f85c:	03c0e821 	move	sp,s8
  41f860:	8fbf0028 	lw	ra,40(sp)
  41f864:	8fbe0024 	lw	s8,36(sp)
  41f868:	27bd0030 	addiu	sp,sp,48
  41f86c:	03e00008 	jr	ra
  41f870:	00000000 	nop

0041f874 <clean_url>:
  41f874:	3c1c0fbf 	lui	gp,0xfbf
  41f878:	279cd0fc 	addiu	gp,gp,-12036
  41f87c:	0399e021 	addu	gp,gp,t9
  41f880:	27bdffd8 	addiu	sp,sp,-40
  41f884:	afbc0010 	sw	gp,16(sp)
  41f888:	afbf0020 	sw	ra,32(sp)
  41f88c:	afbe001c 	sw	s8,28(sp)
  41f890:	afbc0018 	sw	gp,24(sp)
  41f894:	03a0f021 	move	s8,sp
  41f898:	afc40028 	sw	a0,40(s8)
  41f89c:	afc5002c 	sw	a1,44(s8)

/*
 * an url is not allowed to contain single quotes
 */
static err_t
clean_url(chunk_t url)
{
   if (memchr(url.ptr, '\'', url.len) != NULL)
  41f8a0:	8fc40028 	lw	a0,40(s8)
  41f8a4:	24050027 	li	a1,39
  41f8a8:	8fc6002c 	lw	a2,44(s8)
  41f8ac:	8f9986e0 	lw	t9,-31008(gp)
  41f8b0:	00000000 	nop
  41f8b4:	0320f809 	jalr	t9
  41f8b8:	00000000 	nop
  41f8bc:	8fdc0010 	lw	gp,16(s8)
  41f8c0:	10400006 	beqz	v0,41f8dc <clean_url+0x68>
  41f8c4:	00000000 	nop
	return "url contains single quotes";
  41f8c8:	8f82802c 	lw	v0,-32724(gp)
  41f8cc:	00000000 	nop
  41f8d0:	2442a10c 	addiu	v0,v0,-24308
  41f8d4:	10000002 	b	41f8e0 <clean_url+0x6c>
  41f8d8:	00000000 	nop
   else
	return NULL;
  41f8dc:	00001021 	move	v0,zero
}
  41f8e0:	03c0e821 	move	sp,s8
  41f8e4:	8fbf0020 	lw	ra,32(sp)
  41f8e8:	8fbe001c 	lw	s8,28(sp)
  41f8ec:	27bd0028 	addiu	sp,sp,40
  41f8f0:	03e00008 	jr	ra
  41f8f4:	00000000 	nop

0041f8f8 <fetch_curl>:
  41f8f8:	3c1c0fbf 	lui	gp,0xfbf
  41f8fc:	279cd078 	addiu	gp,gp,-12168
  41f900:	0399e021 	addu	gp,gp,t9
  41f904:	27bdff08 	addiu	sp,sp,-248
  41f908:	afbc0018 	sw	gp,24(sp)
  41f90c:	afbf00f0 	sw	ra,240(sp)
  41f910:	afbe00ec 	sw	s8,236(sp)
  41f914:	afbc00e8 	sw	gp,232(sp)
  41f918:	afb100e4 	sw	s1,228(sp)
  41f91c:	afb000e0 	sw	s0,224(sp)
  41f920:	03a0f021 	move	s8,sp
  41f924:	afc400f8 	sw	a0,248(s8)
  41f928:	afc500fc 	sw	a1,252(s8)
  41f92c:	afc60100 	sw	a2,256(s8)

/*
 * fetches a binary blob from a url via curl
 */
static err_t
fetch_curl(chunk_t url, chunk_t *blob)
{
    FILE *fp;
    fd_set rfds;
    size_t cmd_len;
    char *cmd;

    err_t ugh = clean_url(url);
  41f930:	8fc400f8 	lw	a0,248(s8)
  41f934:	8fc500fc 	lw	a1,252(s8)
  41f938:	8f998028 	lw	t9,-32728(gp)
  41f93c:	00000000 	nop
  41f940:	2739f874 	addiu	t9,t9,-1932
  41f944:	00000000 	nop
  41f948:	0320f809 	jalr	t9
  41f94c:	00000000 	nop
  41f950:	8fdc0018 	lw	gp,24(s8)
  41f954:	afc200b0 	sw	v0,176(s8)
    if (ugh != NULL)
  41f958:	8fc200b0 	lw	v0,176(s8)
  41f95c:	00000000 	nop
  41f960:	10400004 	beqz	v0,41f974 <fetch_curl+0x7c>
  41f964:	00000000 	nop
	return ugh;
  41f968:	8fc200b0 	lw	v0,176(s8)
  41f96c:	10000111 	b	41fdb4 <fetch_curl+0x4bc>
  41f970:	00000000 	nop

    cmd_len = sizeof(FETCH_CMD) + url.len + 2;
  41f974:	8fc200fc 	lw	v0,252(s8)
  41f978:	00000000 	nop
  41f97c:	2442000a 	addiu	v0,v0,10
  41f980:	afc200a8 	sw	v0,168(s8)
    cmd = alloc_bytes(cmd_len + 1, "curl cmd");
  41f984:	8fc200a8 	lw	v0,168(s8)
  41f988:	00000000 	nop
  41f98c:	24420001 	addiu	v0,v0,1
  41f990:	00402021 	move	a0,v0
  41f994:	8f85802c 	lw	a1,-32724(gp)
  41f998:	00000000 	nop
  41f99c:	24a5a128 	addiu	a1,a1,-24280
  41f9a0:	8f998084 	lw	t9,-32636(gp)
  41f9a4:	00000000 	nop
  41f9a8:	0320f809 	jalr	t9
  41f9ac:	00000000 	nop
  41f9b0:	8fdc0018 	lw	gp,24(s8)
  41f9b4:	afc200ac 	sw	v0,172(s8)
    sprintf(cmd, "%s '%.*s'", FETCH_CMD, (int)url.len, url.ptr);
  41f9b8:	8fc200f8 	lw	v0,248(s8)
  41f9bc:	00000000 	nop
  41f9c0:	afa20010 	sw	v0,16(sp)
  41f9c4:	8fc400ac 	lw	a0,172(s8)
  41f9c8:	8f85802c 	lw	a1,-32724(gp)
  41f9cc:	00000000 	nop
  41f9d0:	24a5a134 	addiu	a1,a1,-24268
  41f9d4:	8f86802c 	lw	a2,-32724(gp)
  41f9d8:	00000000 	nop
  41f9dc:	24c6a140 	addiu	a2,a2,-24256
  41f9e0:	8fc700fc 	lw	a3,252(s8)
  41f9e4:	8f9983d0 	lw	t9,-31792(gp)
  41f9e8:	00000000 	nop
  41f9ec:	0320f809 	jalr	t9
  41f9f0:	00000000 	nop
  41f9f4:	8fdc0018 	lw	gp,24(s8)
  41f9f8:	00000000 	nop

    DBG(DBG_CONTROL,
  41f9fc:	8f8284f8 	lw	v0,-31496(gp)
  41fa00:	00000000 	nop
  41fa04:	8c420000 	lw	v0,0(v0)
  41fa08:	00000000 	nop
  41fa0c:	30420010 	andi	v0,v0,0x10
  41fa10:	1040000b 	beqz	v0,41fa40 <fetch_curl+0x148>
  41fa14:	00000000 	nop
  41fa18:	8f84802c 	lw	a0,-32724(gp)
  41fa1c:	00000000 	nop
  41fa20:	2484a148 	addiu	a0,a0,-24248
  41fa24:	8fc500ac 	lw	a1,172(s8)
  41fa28:	8f9983b8 	lw	t9,-31816(gp)
  41fa2c:	00000000 	nop
  41fa30:	0320f809 	jalr	t9
  41fa34:	00000000 	nop
  41fa38:	8fdc0018 	lw	gp,24(s8)
  41fa3c:	00000000 	nop
	DBG_log("executing %s", cmd)
    )

    /* Call curl to extract crl */
    fp = popen(cmd, "r");
  41fa40:	8fc400ac 	lw	a0,172(s8)
  41fa44:	8f85802c 	lw	a1,-32724(gp)
  41fa48:	00000000 	nop
  41fa4c:	24a5a158 	addiu	a1,a1,-24232
  41fa50:	8f998bec 	lw	t9,-29716(gp)
  41fa54:	00000000 	nop
  41fa58:	0320f809 	jalr	t9
  41fa5c:	00000000 	nop
  41fa60:	8fdc0018 	lw	gp,24(s8)
  41fa64:	afc20020 	sw	v0,32(s8)
    if (!fp)
  41fa68:	8fc20020 	lw	v0,32(s8)
  41fa6c:	00000000 	nop
  41fa70:	14400008 	bnez	v0,41fa94 <fetch_curl+0x19c>
  41fa74:	00000000 	nop
    {
	ugh = "Executing curl command failed";
  41fa78:	8f82802c 	lw	v0,-32724(gp)
  41fa7c:	00000000 	nop
  41fa80:	2442a15c 	addiu	v0,v0,-24228
  41fa84:	00000000 	nop
  41fa88:	afc200b0 	sw	v0,176(s8)
  41fa8c:	100000b9 	b	41fd74 <fetch_curl+0x47c>
  41fa90:	00000000 	nop
    }
    else
    {
	/* read from pipe and put in memory */
	char *buf = NULL;
  41fa94:	afc000b4 	sw	zero,180(s8)
	int len = 0;
  41fa98:	afc000b8 	sw	zero,184(s8)
	int len2 = 0;
  41fa9c:	afc000bc 	sw	zero,188(s8)
	int retval = 0;
  41faa0:	afc000c0 	sw	zero,192(s8)
	struct timeval timeout;

	do {
	    char *newbuf = realloc(buf, len+1024);
  41faa4:	8fc200b8 	lw	v0,184(s8)
  41faa8:	00000000 	nop
  41faac:	24420400 	addiu	v0,v0,1024
  41fab0:	8fc400b4 	lw	a0,180(s8)
  41fab4:	00402821 	move	a1,v0
  41fab8:	8f9985fc 	lw	t9,-31236(gp)
  41fabc:	00000000 	nop
  41fac0:	0320f809 	jalr	t9
  41fac4:	00000000 	nop
  41fac8:	8fdc0018 	lw	gp,24(s8)
  41facc:	afc200d0 	sw	v0,208(s8)
	    if (!newbuf)
  41fad0:	8fc200d0 	lw	v0,208(s8)
  41fad4:	00000000 	nop
  41fad8:	1440000a 	bnez	v0,41fb04 <fetch_curl+0x20c>
  41fadc:	00000000 	nop
	    {
		free(buf);
  41fae0:	8fc400b4 	lw	a0,180(s8)
  41fae4:	8f998094 	lw	t9,-32620(gp)
  41fae8:	00000000 	nop
  41faec:	0320f809 	jalr	t9
  41faf0:	00000000 	nop
  41faf4:	8fdc0018 	lw	gp,24(s8)
  41faf8:	00000000 	nop
		break;
  41fafc:	10000072 	b	41fcc8 <fetch_curl+0x3d0>
  41fb00:	00000000 	nop
	    }

	    /* set timeout */
	    timeout.tv_sec = FETCH_CMD_TIMEOUT;
  41fb04:	24020004 	li	v0,4
  41fb08:	afc200c8 	sw	v0,200(s8)
	    timeout.tv_usec = 0;
  41fb0c:	afc000cc 	sw	zero,204(s8)

	    FD_ZERO(&rfds);
  41fb10:	27c20028 	addiu	v0,s8,40
  41fb14:	afc200d8 	sw	v0,216(s8)
  41fb18:	afc000d4 	sw	zero,212(s8)
  41fb1c:	8fc200d4 	lw	v0,212(s8)
  41fb20:	00000000 	nop
  41fb24:	2c420020 	sltiu	v0,v0,32
  41fb28:	14400003 	bnez	v0,41fb38 <fetch_curl+0x240>
  41fb2c:	00000000 	nop
  41fb30:	1000000e 	b	41fb6c <fetch_curl+0x274>
  41fb34:	00000000 	nop
  41fb38:	8fc200d4 	lw	v0,212(s8)
  41fb3c:	00000000 	nop
  41fb40:	00021880 	sll	v1,v0,0x2
  41fb44:	8fc200d8 	lw	v0,216(s8)
  41fb48:	00000000 	nop
  41fb4c:	00431021 	addu	v0,v0,v1
  41fb50:	ac400000 	sw	zero,0(v0)
  41fb54:	8fc200d4 	lw	v0,212(s8)
  41fb58:	00000000 	nop
  41fb5c:	24420001 	addiu	v0,v0,1
  41fb60:	afc200d4 	sw	v0,212(s8)
  41fb64:	1000ffed 	b	41fb1c <fetch_curl+0x224>
  41fb68:	00000000 	nop
	    FD_SET(fileno(fp), &rfds);
  41fb6c:	8fc40020 	lw	a0,32(s8)
  41fb70:	8f9981c0 	lw	t9,-32320(gp)
  41fb74:	00000000 	nop
  41fb78:	0320f809 	jalr	t9
  41fb7c:	00000000 	nop
  41fb80:	8fdc0018 	lw	gp,24(s8)
  41fb84:	afc200dc 	sw	v0,220(s8)
  41fb88:	8fc300dc 	lw	v1,220(s8)
  41fb8c:	00000000 	nop
  41fb90:	00031142 	srl	v0,v1,0x5
  41fb94:	afc200dc 	sw	v0,220(s8)
  41fb98:	8fc200dc 	lw	v0,220(s8)
  41fb9c:	00000000 	nop
  41fba0:	00021880 	sll	v1,v0,0x2
  41fba4:	27c20028 	addiu	v0,s8,40
  41fba8:	00438821 	addu	s1,v0,v1
  41fbac:	8fc200dc 	lw	v0,220(s8)
  41fbb0:	00000000 	nop
  41fbb4:	00021880 	sll	v1,v0,0x2
  41fbb8:	27c20028 	addiu	v0,s8,40
  41fbbc:	00438021 	addu	s0,v0,v1
  41fbc0:	8fc40020 	lw	a0,32(s8)
  41fbc4:	8f9981c0 	lw	t9,-32320(gp)
  41fbc8:	00000000 	nop
  41fbcc:	0320f809 	jalr	t9
  41fbd0:	00000000 	nop
  41fbd4:	8fdc0018 	lw	gp,24(s8)
  41fbd8:	3043001f 	andi	v1,v0,0x1f
  41fbdc:	24020001 	li	v0,1
  41fbe0:	00621804 	sllv	v1,v0,v1
  41fbe4:	8e020000 	lw	v0,0(s0)
  41fbe8:	00000000 	nop
  41fbec:	00431025 	or	v0,v0,v1
  41fbf0:	ae220000 	sw	v0,0(s1)

	    retval = select(fileno(fp)+1, &rfds, NULL, NULL, &timeout);
  41fbf4:	8fc40020 	lw	a0,32(s8)
  41fbf8:	8f9981c0 	lw	t9,-32320(gp)
  41fbfc:	00000000 	nop
  41fc00:	0320f809 	jalr	t9
  41fc04:	00000000 	nop
  41fc08:	8fdc0018 	lw	gp,24(s8)
  41fc0c:	24430001 	addiu	v1,v0,1
  41fc10:	27c200c8 	addiu	v0,s8,200
  41fc14:	afa20010 	sw	v0,16(sp)
  41fc18:	00602021 	move	a0,v1
  41fc1c:	27c50028 	addiu	a1,s8,40
  41fc20:	00003021 	move	a2,zero
  41fc24:	00003821 	move	a3,zero
  41fc28:	8f99892c 	lw	t9,-30420(gp)
  41fc2c:	00000000 	nop
  41fc30:	0320f809 	jalr	t9
  41fc34:	00000000 	nop
  41fc38:	8fdc0018 	lw	gp,24(s8)
  41fc3c:	afc200c0 	sw	v0,192(s8)
	    if (retval > 0)
  41fc40:	8fc200c0 	lw	v0,192(s8)
  41fc44:	00000000 	nop
  41fc48:	18400017 	blez	v0,41fca8 <fetch_curl+0x3b0>
  41fc4c:	00000000 	nop
	    {
		buf = newbuf;
  41fc50:	8fc200d0 	lw	v0,208(s8)
  41fc54:	00000000 	nop
  41fc58:	afc200b4 	sw	v0,180(s8)
		len2 = fread(buf+len, 1, 1024, fp);
  41fc5c:	8fc300b4 	lw	v1,180(s8)
  41fc60:	8fc200b8 	lw	v0,184(s8)
  41fc64:	00000000 	nop
  41fc68:	00621021 	addu	v0,v1,v0
  41fc6c:	00402021 	move	a0,v0
  41fc70:	24050001 	li	a1,1
  41fc74:	24060400 	li	a2,1024
  41fc78:	8fc70020 	lw	a3,32(s8)
  41fc7c:	8f998558 	lw	t9,-31400(gp)
  41fc80:	00000000 	nop
  41fc84:	0320f809 	jalr	t9
  41fc88:	00000000 	nop
  41fc8c:	8fdc0018 	lw	gp,24(s8)
  41fc90:	afc200bc 	sw	v0,188(s8)
		len += len2;
  41fc94:	8fc300b8 	lw	v1,184(s8)
  41fc98:	8fc200bc 	lw	v0,188(s8)
  41fc9c:	00000000 	nop
  41fca0:	00621021 	addu	v0,v1,v0
  41fca4:	afc200b8 	sw	v0,184(s8)
	    }
	} while (retval > 0 && (len2 == 1024));
  41fca8:	8fc200c0 	lw	v0,192(s8)
  41fcac:	00000000 	nop
  41fcb0:	18400005 	blez	v0,41fcc8 <fetch_curl+0x3d0>
  41fcb4:	00000000 	nop
  41fcb8:	8fc300bc 	lw	v1,188(s8)
  41fcbc:	24020400 	li	v0,1024
  41fcc0:	1062ff78 	beq	v1,v0,41faa4 <fetch_curl+0x1ac>
  41fcc4:	00000000 	nop

	if (len > 0)
  41fcc8:	8fc200b8 	lw	v0,184(s8)
  41fccc:	00000000 	nop
  41fcd0:	1840001c 	blez	v0,41fd44 <fetch_curl+0x44c>
  41fcd4:	00000000 	nop
	{
	    blob->len = len;
  41fcd8:	8fc300b8 	lw	v1,184(s8)
  41fcdc:	8fc20100 	lw	v0,256(s8)
  41fce0:	00000000 	nop
  41fce4:	ac430004 	sw	v1,4(v0)
	    blob->ptr = alloc_bytes(len, "curl blob");
  41fce8:	8fd00100 	lw	s0,256(s8)
  41fcec:	8fc400b8 	lw	a0,184(s8)
  41fcf0:	8f85802c 	lw	a1,-32724(gp)
  41fcf4:	00000000 	nop
  41fcf8:	24a5a17c 	addiu	a1,a1,-24196
  41fcfc:	8f998084 	lw	t9,-32636(gp)
  41fd00:	00000000 	nop
  41fd04:	0320f809 	jalr	t9
  41fd08:	00000000 	nop
  41fd0c:	8fdc0018 	lw	gp,24(s8)
  41fd10:	ae020000 	sw	v0,0(s0)
	    memcpy(blob->ptr, buf, len);
  41fd14:	8fc20100 	lw	v0,256(s8)
  41fd18:	00000000 	nop
  41fd1c:	8c440000 	lw	a0,0(v0)
  41fd20:	8fc500b4 	lw	a1,180(s8)
  41fd24:	8fc600b8 	lw	a2,184(s8)
  41fd28:	8f998a30 	lw	t9,-30160(gp)
  41fd2c:	00000000 	nop
  41fd30:	0320f809 	jalr	t9
  41fd34:	00000000 	nop
  41fd38:	8fdc0018 	lw	gp,24(s8)
  41fd3c:	10000006 	b	41fd58 <fetch_curl+0x460>
  41fd40:	00000000 	nop
	}
	else
	{
	    ugh = "Zero size blob fetched";
  41fd44:	8f82802c 	lw	v0,-32724(gp)
  41fd48:	00000000 	nop
  41fd4c:	2442a188 	addiu	v0,v0,-24184
  41fd50:	00000000 	nop
  41fd54:	afc200b0 	sw	v0,176(s8)
	}
	free(buf);
  41fd58:	8fc400b4 	lw	a0,180(s8)
  41fd5c:	8f998094 	lw	t9,-32620(gp)
  41fd60:	00000000 	nop
  41fd64:	0320f809 	jalr	t9
  41fd68:	00000000 	nop
  41fd6c:	8fdc0018 	lw	gp,24(s8)
  41fd70:	00000000 	nop
    }

    /* cleanup */
    pclose(fp);
  41fd74:	8fc40020 	lw	a0,32(s8)
  41fd78:	8f998b48 	lw	t9,-29880(gp)
  41fd7c:	00000000 	nop
  41fd80:	0320f809 	jalr	t9
  41fd84:	00000000 	nop
  41fd88:	8fdc0018 	lw	gp,24(s8)
  41fd8c:	00000000 	nop
    pfree(cmd);
  41fd90:	8fc400ac 	lw	a0,172(s8)
  41fd94:	8f998094 	lw	t9,-32620(gp)
  41fd98:	00000000 	nop
  41fd9c:	0320f809 	jalr	t9
  41fda0:	00000000 	nop
  41fda4:	8fdc0018 	lw	gp,24(s8)
  41fda8:	00000000 	nop

    return ugh;
  41fdac:	8fc200b0 	lw	v0,176(s8)
  41fdb0:	00000000 	nop
}
  41fdb4:	03c0e821 	move	sp,s8
  41fdb8:	8fbf00f0 	lw	ra,240(sp)
  41fdbc:	8fbe00ec 	lw	s8,236(sp)
  41fdc0:	8fb100e4 	lw	s1,228(sp)
  41fdc4:	8fb000e0 	lw	s0,224(sp)
  41fdc8:	27bd00f8 	addiu	sp,sp,248
  41fdcc:	03e00008 	jr	ra
  41fdd0:	00000000 	nop

0041fdd4 <fetch_ldap_url>:
  41fdd4:	3c1c0fbf 	lui	gp,0xfbf
  41fdd8:	279ccb9c 	addiu	gp,gp,-13412
  41fddc:	0399e021 	addu	gp,gp,t9
  41fde0:	27bdfff0 	addiu	sp,sp,-16
  41fde4:	afbc0000 	sw	gp,0(sp)
  41fde8:	afbe000c 	sw	s8,12(sp)
  41fdec:	afbc0008 	sw	gp,8(sp)
  41fdf0:	03a0f021 	move	s8,sp
  41fdf4:	afc40010 	sw	a0,16(s8)
  41fdf8:	afc50014 	sw	a1,20(s8)
  41fdfc:	afc60018 	sw	a2,24(s8)

#ifdef LDAP_VER
/*
 * parses the result returned by an ldap query
 */
static err_t
parse_ldap_result(LDAP * ldap, LDAPMessage *result, chunk_t *blob)
{
    err_t ugh = NULL;

    LDAPMessage * entry = ldap_first_entry(ldap, result);

    if (entry != NULL)
    {
	BerElement *ber = NULL;
	char *attr;
	
	attr = ldap_first_attribute(ldap, entry, &ber);

	if (attr != NULL)
	{
	    struct berval **values = ldap_get_values_len(ldap, entry, attr);

	    if (values != NULL)
	    {
		if (values[0] != NULL)
		{
		    blob->len = values[0]->bv_len;
		    blob->ptr = alloc_bytes(blob->len, "ldap blob");
		    memcpy(blob->ptr, values[0]->bv_val, blob->len);
		    if (values[1] != NULL)
		    {
			plog("warning: more than one value was fetched from LDAP URL");
		    }
		}
		else
		{
		    ugh = "no values in attribute";
		}
		ldap_value_free_len(values);
	    }
	    else
	    {
		ugh = ldap_err2string(ldap_result2error(ldap, entry, 0));
	    }
	    ldap_memfree(attr);
	}
	else
	{
	    ugh = ldap_err2string(ldap_result2error(ldap, entry, 0));
	}
	ber_free(ber, 0);
    }
    else
    {
	ugh = ldap_err2string(ldap_result2error(ldap, result, 0));
    }
    return ugh;
}

/*
 * fetches a binary blob from an ldap url
 */
static err_t
fetch_ldap_url(chunk_t url, chunk_t *blob)
{
    LDAPURLDesc *lurl;
    err_t ugh = NULL;
    int rc;

    char *ldap_url = alloc_bytes(url.len + 1, "ldap query");

    sprintf(ldap_url,"%.*s", (int)url.len, url.ptr);

    DBG(DBG_CONTROL,
	DBG_log("Trying LDAP URL '%s'", ldap_url)
    )

    rc = ldap_url_parse(ldap_url, &lurl);
    pfree(ldap_url);

    if (rc == LDAP_SUCCESS)
    {
	LDAP *ldap = ldap_init(lurl->lud_host, lurl->lud_port);

	if (ldap != NULL)
	{
	    int ldap_version = (LDAP_VER == 2)? LDAP_VERSION2 : LDAP_VERSION3;
	    struct timeval timeout;

	    timeout.tv_sec  = FETCH_CMD_TIMEOUT;
	    timeout.tv_usec = 0;
	    ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, &ldap_version);
	    ldap_set_option(ldap, LDAP_OPT_NETWORK_TIMEOUT, &timeout);

	    rc = ldap_simple_bind_s(ldap, NULL, NULL);

	    if (rc == LDAP_SUCCESS)
	    {
		LDAPMessage *result;

		timeout.tv_sec = FETCH_CMD_TIMEOUT;
		timeout.tv_usec = 0;
		
		rc = ldap_search_st(ldap, lurl->lud_dn
					, lurl->lud_scope
					, lurl->lud_filter
					, lurl->lud_attrs
					, 0, &timeout, &result);

		if (rc == LDAP_SUCCESS)
		{
		    ugh = parse_ldap_result(ldap, result, blob);
		    ldap_msgfree(result);
		}
		else
		{
		    ugh = ldap_err2string(rc);
		}
	    }
	    else
	    {
		ugh = ldap_err2string(rc);
	    }
	    ldap_unbind_s(ldap);
	}
	else
	{
	    ugh = "ldap init";
	}
	ldap_free_urldesc(lurl);
    }
    else
    {
	ugh = ldap_err2string(rc);
    }
    return ugh;
}
#else
static err_t
fetch_ldap_url(chunk_t url UNUSED
	       , chunk_t *blob UNUSED)
{
    return "LDAP URL fetching not activated in pluto source code";
  41fe00:	8f82802c 	lw	v0,-32724(gp)
  41fe04:	00000000 	nop
  41fe08:	2442a1a0 	addiu	v0,v0,-24160
  41fe0c:	00000000 	nop
}
  41fe10:	03c0e821 	move	sp,s8
  41fe14:	8fbe000c 	lw	s8,12(sp)
  41fe18:	27bd0010 	addiu	sp,sp,16
  41fe1c:	03e00008 	jr	ra
  41fe20:	00000000 	nop

0041fe24 <fetch_asn1_blob>:
  41fe24:	3c1c0fbf 	lui	gp,0xfbf
  41fe28:	279ccb4c 	addiu	gp,gp,-13492
  41fe2c:	0399e021 	addu	gp,gp,t9
  41fe30:	27bdffd0 	addiu	sp,sp,-48
  41fe34:	afbc0010 	sw	gp,16(sp)
  41fe38:	afbf0028 	sw	ra,40(sp)
  41fe3c:	afbe0024 	sw	s8,36(sp)
  41fe40:	afbc0020 	sw	gp,32(sp)
  41fe44:	03a0f021 	move	s8,sp
  41fe48:	afc40030 	sw	a0,48(s8)
  41fe4c:	afc50034 	sw	a1,52(s8)
  41fe50:	afc60038 	sw	a2,56(s8)
#endif

/*
 * fetch an ASN.1 blob coded in PEM or DER format from a URL
 */
static err_t
fetch_asn1_blob(chunk_t url, chunk_t *blob)
{
    err_t ugh = NULL;
  41fe54:	afc00018 	sw	zero,24(s8)

    if (url.len >= 4 && strncasecmp(url.ptr, "ldap", 4) == 0)
  41fe58:	8fc20034 	lw	v0,52(s8)
  41fe5c:	00000000 	nop
  41fe60:	2c420004 	sltiu	v0,v0,4
  41fe64:	1440001a 	bnez	v0,41fed0 <fetch_asn1_blob+0xac>
  41fe68:	00000000 	nop
  41fe6c:	8fc40030 	lw	a0,48(s8)
  41fe70:	8f85802c 	lw	a1,-32724(gp)
  41fe74:	00000000 	nop
  41fe78:	24a5a1d8 	addiu	a1,a1,-24104
  41fe7c:	24060004 	li	a2,4
  41fe80:	8f9988a8 	lw	t9,-30552(gp)
  41fe84:	00000000 	nop
  41fe88:	0320f809 	jalr	t9
  41fe8c:	00000000 	nop
  41fe90:	8fdc0010 	lw	gp,16(s8)
  41fe94:	1440000e 	bnez	v0,41fed0 <fetch_asn1_blob+0xac>
  41fe98:	00000000 	nop
    {
	ugh = fetch_ldap_url(url, blob);
  41fe9c:	8fc40030 	lw	a0,48(s8)
  41fea0:	8fc50034 	lw	a1,52(s8)
  41fea4:	8fc60038 	lw	a2,56(s8)
  41fea8:	8f998028 	lw	t9,-32728(gp)
  41feac:	00000000 	nop
  41feb0:	2739fdd4 	addiu	t9,t9,-556
  41feb4:	00000000 	nop
  41feb8:	0320f809 	jalr	t9
  41febc:	00000000 	nop
  41fec0:	8fdc0010 	lw	gp,16(s8)
  41fec4:	afc20018 	sw	v0,24(s8)
  41fec8:	1000000c 	b	41fefc <fetch_asn1_blob+0xd8>
  41fecc:	00000000 	nop
    }
    else
    {
	ugh = fetch_curl(url, blob);
  41fed0:	8fc40030 	lw	a0,48(s8)
  41fed4:	8fc50034 	lw	a1,52(s8)
  41fed8:	8fc60038 	lw	a2,56(s8)
  41fedc:	8f998028 	lw	t9,-32728(gp)
  41fee0:	00000000 	nop
  41fee4:	2739f8f8 	addiu	t9,t9,-1800
  41fee8:	00000000 	nop
  41feec:	0320f809 	jalr	t9
  41fef0:	00000000 	nop
  41fef4:	8fdc0010 	lw	gp,16(s8)
  41fef8:	afc20018 	sw	v0,24(s8)
    }
    if (ugh != NULL)
  41fefc:	8fc20018 	lw	v0,24(s8)
  41ff00:	00000000 	nop
  41ff04:	10400004 	beqz	v0,41ff18 <fetch_asn1_blob+0xf4>
  41ff08:	00000000 	nop
	return ugh;
  41ff0c:	8fc20018 	lw	v0,24(s8)
  41ff10:	1000005f 	b	420090 <fetch_asn1_blob+0x26c>
  41ff14:	00000000 	nop

    if (is_asn1(*blob))
  41ff18:	8fc20038 	lw	v0,56(s8)
  41ff1c:	00000000 	nop
  41ff20:	8c440000 	lw	a0,0(v0)
  41ff24:	8c450004 	lw	a1,4(v0)
  41ff28:	8f998494 	lw	t9,-31596(gp)
  41ff2c:	00000000 	nop
  41ff30:	0320f809 	jalr	t9
  41ff34:	00000000 	nop
  41ff38:	8fdc0010 	lw	gp,16(s8)
  41ff3c:	10400012 	beqz	v0,41ff88 <fetch_asn1_blob+0x164>
  41ff40:	00000000 	nop
    {
	DBG(DBG_PARSING,
  41ff44:	8f8284f8 	lw	v0,-31496(gp)
  41ff48:	00000000 	nop
  41ff4c:	8c420000 	lw	v0,0(v0)
  41ff50:	00000000 	nop
  41ff54:	30420004 	andi	v0,v0,0x4
  41ff58:	1040004b 	beqz	v0,420088 <fetch_asn1_blob+0x264>
  41ff5c:	00000000 	nop
  41ff60:	8f84802c 	lw	a0,-32724(gp)
  41ff64:	00000000 	nop
  41ff68:	2484a1e0 	addiu	a0,a0,-24096
  41ff6c:	8f9983b8 	lw	t9,-31816(gp)
  41ff70:	00000000 	nop
  41ff74:	0320f809 	jalr	t9
  41ff78:	00000000 	nop
  41ff7c:	8fdc0010 	lw	gp,16(s8)
  41ff80:	10000041 	b	420088 <fetch_asn1_blob+0x264>
  41ff84:	00000000 	nop
	    DBG_log("  fetched blob coded in DER format")
	)
    }
    else
    {
	ugh = pemtobin(blob, NULL);
  41ff88:	8fc40038 	lw	a0,56(s8)
  41ff8c:	00002821 	move	a1,zero
  41ff90:	8f998370 	lw	t9,-31888(gp)
  41ff94:	00000000 	nop
  41ff98:	0320f809 	jalr	t9
  41ff9c:	00000000 	nop
  41ffa0:	8fdc0010 	lw	gp,16(s8)
  41ffa4:	afc20018 	sw	v0,24(s8)
	if (ugh == NULL)
  41ffa8:	8fc20018 	lw	v0,24(s8)
  41ffac:	00000000 	nop
  41ffb0:	1440002c 	bnez	v0,420064 <fetch_asn1_blob+0x240>
  41ffb4:	00000000 	nop
	{
	    if (is_asn1(*blob))
  41ffb8:	8fc20038 	lw	v0,56(s8)
  41ffbc:	00000000 	nop
  41ffc0:	8c440000 	lw	a0,0(v0)
  41ffc4:	8c450004 	lw	a1,4(v0)
  41ffc8:	8f998494 	lw	t9,-31596(gp)
  41ffcc:	00000000 	nop
  41ffd0:	0320f809 	jalr	t9
  41ffd4:	00000000 	nop
  41ffd8:	8fdc0010 	lw	gp,16(s8)
  41ffdc:	10400012 	beqz	v0,420028 <fetch_asn1_blob+0x204>
  41ffe0:	00000000 	nop
	    {
		DBG(DBG_PARSING,
  41ffe4:	8f8284f8 	lw	v0,-31496(gp)
  41ffe8:	00000000 	nop
  41ffec:	8c420000 	lw	v0,0(v0)
  41fff0:	00000000 	nop
  41fff4:	30420004 	andi	v0,v0,0x4
  41fff8:	10400023 	beqz	v0,420088 <fetch_asn1_blob+0x264>
  41fffc:	00000000 	nop
  420000:	8f84802c 	lw	a0,-32724(gp)
  420004:	00000000 	nop
  420008:	2484a204 	addiu	a0,a0,-24060
  42000c:	8f9983b8 	lw	t9,-31816(gp)
  420010:	00000000 	nop
  420014:	0320f809 	jalr	t9
  420018:	00000000 	nop
  42001c:	8fdc0010 	lw	gp,16(s8)
  420020:	10000019 	b	420088 <fetch_asn1_blob+0x264>
  420024:	00000000 	nop
		    DBG_log("  fetched blob coded in PEM format")
		)
	    }
	    else
	    {
		ugh = "Blob coded in unknown format";
  420028:	8f82802c 	lw	v0,-32724(gp)
  42002c:	00000000 	nop
  420030:	2442a228 	addiu	v0,v0,-24024
  420034:	00000000 	nop
  420038:	afc20018 	sw	v0,24(s8)
		pfree(blob->ptr);
  42003c:	8fc20038 	lw	v0,56(s8)
  420040:	00000000 	nop
  420044:	8c440000 	lw	a0,0(v0)
  420048:	8f998094 	lw	t9,-32620(gp)
  42004c:	00000000 	nop
  420050:	0320f809 	jalr	t9
  420054:	00000000 	nop
  420058:	8fdc0010 	lw	gp,16(s8)
  42005c:	1000000a 	b	420088 <fetch_asn1_blob+0x264>
  420060:	00000000 	nop
	    }
	}
	else
	{
	    pfree(blob->ptr);
  420064:	8fc20038 	lw	v0,56(s8)
  420068:	00000000 	nop
  42006c:	8c440000 	lw	a0,0(v0)
  420070:	8f998094 	lw	t9,-32620(gp)
  420074:	00000000 	nop
  420078:	0320f809 	jalr	t9
  42007c:	00000000 	nop
  420080:	8fdc0010 	lw	gp,16(s8)
  420084:	00000000 	nop
	}
    }
    return ugh;
  420088:	8fc20018 	lw	v0,24(s8)
  42008c:	00000000 	nop
}
  420090:	03c0e821 	move	sp,s8
  420094:	8fbf0028 	lw	ra,40(sp)
  420098:	8fbe0024 	lw	s8,36(sp)
  42009c:	27bd0030 	addiu	sp,sp,48
  4200a0:	03e00008 	jr	ra
  4200a4:	00000000 	nop

004200a8 <fetch_crls>:
  4200a8:	3c1c0fbf 	lui	gp,0xfbf
  4200ac:	279cc8c8 	addiu	gp,gp,-14136
  4200b0:	0399e021 	addu	gp,gp,t9
  4200b4:	27bdffa0 	addiu	sp,sp,-96
  4200b8:	afbc0010 	sw	gp,16(sp)
  4200bc:	afbf0058 	sw	ra,88(sp)
  4200c0:	afbe0054 	sw	s8,84(sp)
  4200c4:	afbc0050 	sw	gp,80(sp)
  4200c8:	03a0f021 	move	s8,sp

/*
 * try to fetch the crls defined by the fetch requests
 */
static void
fetch_crls(void)
{
    fetch_req_t *req;
    fetch_req_t **reqp;

    lock_fetch_list("fetch_crls");
  4200cc:	8f84802c 	lw	a0,-32724(gp)
  4200d0:	00000000 	nop
  4200d4:	2484a248 	addiu	a0,a0,-23992
  4200d8:	8f998028 	lw	t9,-32728(gp)
  4200dc:	00000000 	nop
  4200e0:	2739f460 	addiu	t9,t9,-2976
  4200e4:	00000000 	nop
  4200e8:	0320f809 	jalr	t9
  4200ec:	00000000 	nop
  4200f0:	8fdc0010 	lw	gp,16(s8)
  4200f4:	00000000 	nop
    req  =  fetch_reqs;
  4200f8:	8f828018 	lw	v0,-32744(gp)
  4200fc:	00000000 	nop
  420100:	244214d0 	addiu	v0,v0,5328
  420104:	8c420000 	lw	v0,0(v0)
  420108:	00000000 	nop
  42010c:	afc20018 	sw	v0,24(s8)
    reqp = &fetch_reqs;
  420110:	8f828018 	lw	v0,-32744(gp)
  420114:	00000000 	nop
  420118:	244214d0 	addiu	v0,v0,5328
  42011c:	00000000 	nop
  420120:	afc2001c 	sw	v0,28(s8)

    while (req != NULL)
  420124:	8fc20018 	lw	v0,24(s8)
  420128:	00000000 	nop
  42012c:	14400003 	bnez	v0,42013c <fetch_crls+0x94>
  420130:	00000000 	nop
  420134:	10000097 	b	420394 <fetch_crls+0x2ec>
  420138:	00000000 	nop
    {
	bool valid_crl = FALSE;
  42013c:	afc00020 	sw	zero,32(s8)
	chunk_t blob = empty_chunk;
  420140:	8f828708 	lw	v0,-30968(gp)
  420144:	00000000 	nop
  420148:	8c420000 	lw	v0,0(v0)
  42014c:	00000000 	nop
  420150:	afc20028 	sw	v0,40(s8)
  420154:	8f828708 	lw	v0,-30968(gp)
  420158:	00000000 	nop
  42015c:	8c420004 	lw	v0,4(v0)
  420160:	00000000 	nop
  420164:	afc2002c 	sw	v0,44(s8)
	generalName_t *gn = req->distributionPoints;
  420168:	8fc20018 	lw	v0,24(s8)
  42016c:	00000000 	nop
  420170:	8c420014 	lw	v0,20(v0)
  420174:	00000000 	nop
  420178:	afc20030 	sw	v0,48(s8)

	while (gn != NULL)
  42017c:	8fc20030 	lw	v0,48(s8)
  420180:	00000000 	nop
  420184:	14400003 	bnez	v0,420194 <fetch_crls+0xec>
  420188:	00000000 	nop
  42018c:	10000055 	b	4202e4 <fetch_crls+0x23c>
  420190:	00000000 	nop
	{
	    err_t ugh = fetch_asn1_blob(gn->name, &blob);
  420194:	8fc20030 	lw	v0,48(s8)
  420198:	00000000 	nop
  42019c:	8c440008 	lw	a0,8(v0)
  4201a0:	8c45000c 	lw	a1,12(v0)
  4201a4:	27c60028 	addiu	a2,s8,40
  4201a8:	8f998028 	lw	t9,-32728(gp)
  4201ac:	00000000 	nop
  4201b0:	2739fe24 	addiu	t9,t9,-476
  4201b4:	00000000 	nop
  4201b8:	0320f809 	jalr	t9
  4201bc:	00000000 	nop
  4201c0:	8fdc0010 	lw	gp,16(s8)
  4201c4:	afc20034 	sw	v0,52(s8)

	    if (ugh != NULL)
  4201c8:	8fc20034 	lw	v0,52(s8)
  4201cc:	00000000 	nop
  4201d0:	1040000c 	beqz	v0,420204 <fetch_crls+0x15c>
  4201d4:	00000000 	nop
	    {
		plog("fetch failed:  %s", ugh);
  4201d8:	8f84802c 	lw	a0,-32724(gp)
  4201dc:	00000000 	nop
  4201e0:	2484a254 	addiu	a0,a0,-23980
  4201e4:	8fc50034 	lw	a1,52(s8)
  4201e8:	8f998abc 	lw	t9,-30020(gp)
  4201ec:	00000000 	nop
  4201f0:	0320f809 	jalr	t9
  4201f4:	00000000 	nop
  4201f8:	8fdc0010 	lw	gp,16(s8)
  4201fc:	10000032 	b	4202c8 <fetch_crls+0x220>
  420200:	00000000 	nop
	    }
	    else
	    {
		chunk_t crl_uri;
		clonetochunk(crl_uri, gn->name.ptr, gn->name.len, "crl uri");
  420204:	8fc20030 	lw	v0,48(s8)
  420208:	00000000 	nop
  42020c:	8c43000c 	lw	v1,12(v0)
  420210:	00000000 	nop
  420214:	afc3003c 	sw	v1,60(s8)
  420218:	8fc20030 	lw	v0,48(s8)
  42021c:	00000000 	nop
  420220:	8c440008 	lw	a0,8(v0)
  420224:	00602821 	move	a1,v1
  420228:	8f86802c 	lw	a2,-32724(gp)
  42022c:	00000000 	nop
  420230:	24c6a268 	addiu	a2,a2,-23960
  420234:	8f998c04 	lw	t9,-29692(gp)
  420238:	00000000 	nop
  42023c:	0320f809 	jalr	t9
  420240:	00000000 	nop
  420244:	8fdc0010 	lw	gp,16(s8)
  420248:	afc20038 	sw	v0,56(s8)
		if (insert_crl(blob, crl_uri))
  42024c:	8fc40028 	lw	a0,40(s8)
  420250:	8fc5002c 	lw	a1,44(s8)
  420254:	8fc60038 	lw	a2,56(s8)
  420258:	8fc7003c 	lw	a3,60(s8)
  42025c:	8f9985d0 	lw	t9,-31280(gp)
  420260:	00000000 	nop
  420264:	0320f809 	jalr	t9
  420268:	00000000 	nop
  42026c:	8fdc0010 	lw	gp,16(s8)
  420270:	10400015 	beqz	v0,4202c8 <fetch_crls+0x220>
  420274:	00000000 	nop
		{
		    DBG(DBG_CONTROL,
  420278:	8f8284f8 	lw	v0,-31496(gp)
  42027c:	00000000 	nop
  420280:	8c420000 	lw	v0,0(v0)
  420284:	00000000 	nop
  420288:	30420010 	andi	v0,v0,0x10
  42028c:	1040000a 	beqz	v0,4202b8 <fetch_crls+0x210>
  420290:	00000000 	nop
  420294:	8f84802c 	lw	a0,-32724(gp)
  420298:	00000000 	nop
  42029c:	2484a270 	addiu	a0,a0,-23952
  4202a0:	8f9983b8 	lw	t9,-31816(gp)
  4202a4:	00000000 	nop
  4202a8:	0320f809 	jalr	t9
  4202ac:	00000000 	nop
  4202b0:	8fdc0010 	lw	gp,16(s8)
  4202b4:	00000000 	nop
			DBG_log("we have a valid crl")
		    )
		    valid_crl = TRUE;
  4202b8:	24020001 	li	v0,1
  4202bc:	afc20020 	sw	v0,32(s8)
		    break;
  4202c0:	10000008 	b	4202e4 <fetch_crls+0x23c>
  4202c4:	00000000 	nop
		}		    
	    }
	    gn = gn->next;
  4202c8:	8fc20030 	lw	v0,48(s8)
  4202cc:	00000000 	nop
  4202d0:	8c420000 	lw	v0,0(v0)
  4202d4:	00000000 	nop
  4202d8:	afc20030 	sw	v0,48(s8)
  4202dc:	1000ffa7 	b	42017c <fetch_crls+0xd4>
  4202e0:	00000000 	nop
	}
	
	if (valid_crl)
  4202e4:	8fc20020 	lw	v0,32(s8)
  4202e8:	00000000 	nop
  4202ec:	10400017 	beqz	v0,42034c <fetch_crls+0x2a4>
  4202f0:	00000000 	nop
	{
	    /* delete fetch request */
	    fetch_req_t *req_free = req;
  4202f4:	8fc20018 	lw	v0,24(s8)
  4202f8:	00000000 	nop
  4202fc:	afc20034 	sw	v0,52(s8)

	    req   = req->next;
  420300:	8fc20018 	lw	v0,24(s8)
  420304:	00000000 	nop
  420308:	8c420000 	lw	v0,0(v0)
  42030c:	00000000 	nop
  420310:	afc20018 	sw	v0,24(s8)
	    *reqp = req;
  420314:	8fc30018 	lw	v1,24(s8)
  420318:	8fc2001c 	lw	v0,28(s8)
  42031c:	00000000 	nop
  420320:	ac430000 	sw	v1,0(v0)
	    free_fetch_request(req_free);	
  420324:	8fc40034 	lw	a0,52(s8)
  420328:	8f998028 	lw	t9,-32728(gp)
  42032c:	00000000 	nop
  420330:	2739f6b8 	addiu	t9,t9,-2376
  420334:	00000000 	nop
  420338:	0320f809 	jalr	t9
  42033c:	00000000 	nop
  420340:	8fdc0010 	lw	gp,16(s8)
  420344:	1000ff77 	b	420124 <fetch_crls+0x7c>
  420348:	00000000 	nop
	}
	else
	{
	    /* try again next time */
	    req->trials++;
  42034c:	8fc20018 	lw	v0,24(s8)
  420350:	00000000 	nop
  420354:	8c420008 	lw	v0,8(v0)
  420358:	00000000 	nop
  42035c:	24430001 	addiu	v1,v0,1
  420360:	8fc20018 	lw	v0,24(s8)
  420364:	00000000 	nop
  420368:	ac430008 	sw	v1,8(v0)
	    reqp = &req->next;
  42036c:	8fc20018 	lw	v0,24(s8)
  420370:	00000000 	nop
  420374:	afc2001c 	sw	v0,28(s8)
	    req  =  req->next;
  420378:	8fc20018 	lw	v0,24(s8)
  42037c:	00000000 	nop
  420380:	8c420000 	lw	v0,0(v0)
  420384:	00000000 	nop
  420388:	afc20018 	sw	v0,24(s8)
  42038c:	1000ff65 	b	420124 <fetch_crls+0x7c>
  420390:	00000000 	nop
	}
    }
    unlock_fetch_list("fetch_crls");
  420394:	8f84802c 	lw	a0,-32724(gp)
  420398:	00000000 	nop
  42039c:	2484a248 	addiu	a0,a0,-23992
  4203a0:	8f998028 	lw	t9,-32728(gp)
  4203a4:	00000000 	nop
  4203a8:	2739f508 	addiu	t9,t9,-2808
  4203ac:	00000000 	nop
  4203b0:	0320f809 	jalr	t9
  4203b4:	00000000 	nop
  4203b8:	8fdc0010 	lw	gp,16(s8)
  4203bc:	00000000 	nop
}
  4203c0:	03c0e821 	move	sp,s8
  4203c4:	8fbf0058 	lw	ra,88(sp)
  4203c8:	8fbe0054 	lw	s8,84(sp)
  4203cc:	27bd0060 	addiu	sp,sp,96
  4203d0:	03e00008 	jr	ra
  4203d4:	00000000 	nop

004203d8 <fetch_thread>:
  4203d8:	3c1c0fbf 	lui	gp,0xfbf
  4203dc:	279cc598 	addiu	gp,gp,-14952
  4203e0:	0399e021 	addu	gp,gp,t9
  4203e4:	27bdffc8 	addiu	sp,sp,-56
  4203e8:	afbc0010 	sw	gp,16(sp)
  4203ec:	afbf0030 	sw	ra,48(sp)
  4203f0:	afbe002c 	sw	s8,44(sp)
  4203f4:	afbc0028 	sw	gp,40(sp)
  4203f8:	03a0f021 	move	s8,sp
  4203fc:	afc40038 	sw	a0,56(s8)

static void*
fetch_thread(void *arg UNUSED)
{
    struct timespec wait_interval;

    DBG(DBG_CONTROL,
  420400:	8f8284f8 	lw	v0,-31496(gp)
  420404:	00000000 	nop
  420408:	8c420000 	lw	v0,0(v0)
  42040c:	00000000 	nop
  420410:	30420010 	andi	v0,v0,0x10
  420414:	1040000a 	beqz	v0,420440 <fetch_thread+0x68>
  420418:	00000000 	nop
  42041c:	8f84802c 	lw	a0,-32724(gp)
  420420:	00000000 	nop
  420424:	2484a284 	addiu	a0,a0,-23932
  420428:	8f9983b8 	lw	t9,-31816(gp)
  42042c:	00000000 	nop
  420430:	0320f809 	jalr	t9
  420434:	00000000 	nop
  420438:	8fdc0010 	lw	gp,16(s8)
  42043c:	00000000 	nop
	DBG_log("fetch thread started")
    )

    pthread_mutex_lock(&fetch_wake_mutex);
  420440:	8f848018 	lw	a0,-32744(gp)
  420444:	00000000 	nop
  420448:	24841534 	addiu	a0,a0,5428
  42044c:	8f99825c 	lw	t9,-32164(gp)
  420450:	00000000 	nop
  420454:	0320f809 	jalr	t9
  420458:	00000000 	nop
  42045c:	8fdc0010 	lw	gp,16(s8)
  420460:	00000000 	nop

    while(1)
    {
	int status;

	wait_interval.tv_nsec = 0;
  420464:	afc0001c 	sw	zero,28(s8)
	wait_interval.tv_sec = time(NULL) + crl_check_interval;
  420468:	00002021 	move	a0,zero
  42046c:	8f9984b4 	lw	t9,-31564(gp)
  420470:	00000000 	nop
  420474:	0320f809 	jalr	t9
  420478:	00000000 	nop
  42047c:	8fdc0010 	lw	gp,16(s8)
  420480:	00401821 	move	v1,v0
  420484:	8f8286e8 	lw	v0,-31000(gp)
  420488:	00000000 	nop
  42048c:	8c420000 	lw	v0,0(v0)
  420490:	00000000 	nop
  420494:	00621021 	addu	v0,v1,v0
  420498:	afc20018 	sw	v0,24(s8)

	DBG(DBG_CONTROL,
  42049c:	8f8284f8 	lw	v0,-31496(gp)
  4204a0:	00000000 	nop
  4204a4:	8c420000 	lw	v0,0(v0)
  4204a8:	00000000 	nop
  4204ac:	30420010 	andi	v0,v0,0x10
  4204b0:	1040000d 	beqz	v0,4204e8 <fetch_thread+0x110>
  4204b4:	00000000 	nop
  4204b8:	8f84802c 	lw	a0,-32724(gp)
  4204bc:	00000000 	nop
  4204c0:	2484a29c 	addiu	a0,a0,-23908
  4204c4:	8f8586e8 	lw	a1,-31000(gp)
  4204c8:	00000000 	nop
  4204cc:	8ca50000 	lw	a1,0(a1)
  4204d0:	8f9983b8 	lw	t9,-31816(gp)
  4204d4:	00000000 	nop
  4204d8:	0320f809 	jalr	t9
  4204dc:	00000000 	nop
  4204e0:	8fdc0010 	lw	gp,16(s8)
  4204e4:	00000000 	nop
	    DBG_log("next regular crl check in %ld seconds", crl_check_interval)
	)
	status = pthread_cond_timedwait(&fetch_wake_cond, &fetch_wake_mutex
  4204e8:	8f848018 	lw	a0,-32744(gp)
  4204ec:	00000000 	nop
  4204f0:	2484154c 	addiu	a0,a0,5452
  4204f4:	8f858018 	lw	a1,-32744(gp)
  4204f8:	00000000 	nop
  4204fc:	24a51534 	addiu	a1,a1,5428
  420500:	27c60018 	addiu	a2,s8,24
  420504:	8f9980e0 	lw	t9,-32544(gp)
  420508:	00000000 	nop
  42050c:	0320f809 	jalr	t9
  420510:	00000000 	nop
  420514:	8fdc0010 	lw	gp,16(s8)
  420518:	afc20020 	sw	v0,32(s8)
					, &wait_interval);

	if (status == ETIMEDOUT)
  42051c:	8fc30020 	lw	v1,32(s8)
  420520:	24020091 	li	v0,145
  420524:	14620021 	bne	v1,v0,4205ac <fetch_thread+0x1d4>
  420528:	00000000 	nop
	{
	    DBG(DBG_CONTROL,
  42052c:	8f8284f8 	lw	v0,-31496(gp)
  420530:	00000000 	nop
  420534:	8c420000 	lw	v0,0(v0)
  420538:	00000000 	nop
  42053c:	30420010 	andi	v0,v0,0x10
  420540:	10400013 	beqz	v0,420590 <fetch_thread+0x1b8>
  420544:	00000000 	nop
  420548:	8f84802c 	lw	a0,-32724(gp)
  42054c:	00000000 	nop
  420550:	2484a2c4 	addiu	a0,a0,-23868
  420554:	8f9983b8 	lw	t9,-31816(gp)
  420558:	00000000 	nop
  42055c:	0320f809 	jalr	t9
  420560:	00000000 	nop
  420564:	8fdc0010 	lw	gp,16(s8)
  420568:	00000000 	nop
  42056c:	8f84802c 	lw	a0,-32724(gp)
  420570:	00000000 	nop
  420574:	2484a2c8 	addiu	a0,a0,-23864
  420578:	8f9983b8 	lw	t9,-31816(gp)
  42057c:	00000000 	nop
  420580:	0320f809 	jalr	t9
  420584:	00000000 	nop
  420588:	8fdc0010 	lw	gp,16(s8)
  42058c:	00000000 	nop
		DBG_log(" ");
		DBG_log("*time to check crls")
	    )
	    check_crls();
  420590:	8f998290 	lw	t9,-32112(gp)
  420594:	00000000 	nop
  420598:	0320f809 	jalr	t9
  42059c:	00000000 	nop
  4205a0:	8fdc0010 	lw	gp,16(s8)
  4205a4:	10000011 	b	4205ec <fetch_thread+0x214>
  4205a8:	00000000 	nop
	}
	else
	{
	    DBG(DBG_CONTROL,
  4205ac:	8f8284f8 	lw	v0,-31496(gp)
  4205b0:	00000000 	nop
  4205b4:	8c420000 	lw	v0,0(v0)
  4205b8:	00000000 	nop
  4205bc:	30420010 	andi	v0,v0,0x10
  4205c0:	1040000a 	beqz	v0,4205ec <fetch_thread+0x214>
  4205c4:	00000000 	nop
  4205c8:	8f84802c 	lw	a0,-32724(gp)
  4205cc:	00000000 	nop
  4205d0:	2484a2dc 	addiu	a0,a0,-23844
  4205d4:	8f9983b8 	lw	t9,-31816(gp)
  4205d8:	00000000 	nop
  4205dc:	0320f809 	jalr	t9
  4205e0:	00000000 	nop
  4205e4:	8fdc0010 	lw	gp,16(s8)
  4205e8:	00000000 	nop
		DBG_log("fetch thread was woken up")
	    )
	}
	fetch_crls();
  4205ec:	8f998028 	lw	t9,-32728(gp)
  4205f0:	00000000 	nop
  4205f4:	273900a8 	addiu	t9,t9,168
  4205f8:	00000000 	nop
  4205fc:	0320f809 	jalr	t9
  420600:	00000000 	nop
  420604:	8fdc0010 	lw	gp,16(s8)
  420608:	1000ff96 	b	420464 <fetch_thread+0x8c>
  42060c:	00000000 	nop

00420610 <init_crl_fetch>:
  420610:	3c1c0fbf 	lui	gp,0xfbf
  420614:	279cc360 	addiu	gp,gp,-15520
  420618:	0399e021 	addu	gp,gp,t9
  42061c:	27bdffd0 	addiu	sp,sp,-48
  420620:	afbc0010 	sw	gp,16(sp)
  420624:	afbf0028 	sw	ra,40(sp)
  420628:	afbe0024 	sw	s8,36(sp)
  42062c:	afbc0020 	sw	gp,32(sp)
  420630:	03a0f021 	move	s8,sp
    }
}

void
init_crl_fetch(void)
{
    int status;

    if (crl_check_interval > 0)
  420634:	8f8286e8 	lw	v0,-31000(gp)
  420638:	00000000 	nop
  42063c:	8c420000 	lw	v0,0(v0)
  420640:	00000000 	nop
  420644:	1840001d 	blez	v0,4206bc <init_crl_fetch+0xac>
  420648:	00000000 	nop
    {
	status = pthread_create( &thread, NULL, fetch_thread, NULL);
  42064c:	8f848018 	lw	a0,-32744(gp)
  420650:	00000000 	nop
  420654:	24846290 	addiu	a0,a0,25232
  420658:	00002821 	move	a1,zero
  42065c:	8f868028 	lw	a2,-32728(gp)
  420660:	00000000 	nop
  420664:	24c603d8 	addiu	a2,a2,984
  420668:	00003821 	move	a3,zero
  42066c:	8f998ba4 	lw	t9,-29788(gp)
  420670:	00000000 	nop
  420674:	0320f809 	jalr	t9
  420678:	00000000 	nop
  42067c:	8fdc0010 	lw	gp,16(s8)
  420680:	afc20018 	sw	v0,24(s8)

	if (status != 0)
  420684:	8fc20018 	lw	v0,24(s8)
  420688:	00000000 	nop
  42068c:	1040000b 	beqz	v0,4206bc <init_crl_fetch+0xac>
  420690:	00000000 	nop
	{
	    plog("crl fetch thread could not be started, status = %d", status);
  420694:	8f84802c 	lw	a0,-32724(gp)
  420698:	00000000 	nop
  42069c:	2484a2f8 	addiu	a0,a0,-23816
  4206a0:	8fc50018 	lw	a1,24(s8)
  4206a4:	8f998abc 	lw	t9,-30020(gp)
  4206a8:	00000000 	nop
  4206ac:	0320f809 	jalr	t9
  4206b0:	00000000 	nop
  4206b4:	8fdc0010 	lw	gp,16(s8)
  4206b8:	00000000 	nop
	}
    }
}
  4206bc:	03c0e821 	move	sp,s8
  4206c0:	8fbf0028 	lw	ra,40(sp)
  4206c4:	8fbe0024 	lw	s8,36(sp)
  4206c8:	27bd0030 	addiu	sp,sp,48
  4206cc:	03e00008 	jr	ra
  4206d0:	00000000 	nop

004206d4 <add_distribution_points>:
  4206d4:	3c1c0fbf 	lui	gp,0xfbf
  4206d8:	279cc29c 	addiu	gp,gp,-15716
  4206dc:	0399e021 	addu	gp,gp,t9
  4206e0:	27bdffd0 	addiu	sp,sp,-48
  4206e4:	afbc0010 	sw	gp,16(sp)
  4206e8:	afbf002c 	sw	ra,44(sp)
  4206ec:	afbe0028 	sw	s8,40(sp)
  4206f0:	afbc0024 	sw	gp,36(sp)
  4206f4:	afb00020 	sw	s0,32(sp)
  4206f8:	03a0f021 	move	s8,sp
  4206fc:	afc40030 	sw	a0,48(s8)
  420700:	afc50034 	sw	a1,52(s8)

/*
 * add additional distribution points
 */
void
add_distribution_points(const generalName_t *newPoints ,generalName_t **distributionPoints)
{
    while (newPoints != NULL)
  420704:	8fc20030 	lw	v0,48(s8)
  420708:	00000000 	nop
  42070c:	14400003 	bnez	v0,42071c <add_distribution_points+0x48>
  420710:	00000000 	nop
  420714:	1000006d 	b	4208cc <add_distribution_points+0x1f8>
  420718:	00000000 	nop
    {
	bool add = TRUE;
  42071c:	24020001 	li	v0,1
  420720:	afc20018 	sw	v0,24(s8)
	generalName_t *gn = *distributionPoints;
  420724:	8fc20034 	lw	v0,52(s8)
  420728:	00000000 	nop
  42072c:	8c420000 	lw	v0,0(v0)
  420730:	00000000 	nop
  420734:	afc2001c 	sw	v0,28(s8)

	while (gn != NULL)
  420738:	8fc2001c 	lw	v0,28(s8)
  42073c:	00000000 	nop
  420740:	14400003 	bnez	v0,420750 <add_distribution_points+0x7c>
  420744:	00000000 	nop
  420748:	1000002d 	b	420800 <add_distribution_points+0x12c>
  42074c:	00000000 	nop
	{
	    if (gn->kind == newPoints->kind &&
		gn->name.len == newPoints->name.len &&
		memcmp(gn->name.ptr, newPoints->name.ptr, gn->name.len) == 0)
  420750:	8fc2001c 	lw	v0,28(s8)
  420754:	00000000 	nop
  420758:	8c430004 	lw	v1,4(v0)
  42075c:	8fc20030 	lw	v0,48(s8)
  420760:	00000000 	nop
  420764:	8c420004 	lw	v0,4(v0)
  420768:	00000000 	nop
  42076c:	1462001d 	bne	v1,v0,4207e4 <add_distribution_points+0x110>
  420770:	00000000 	nop
  420774:	8fc2001c 	lw	v0,28(s8)
  420778:	00000000 	nop
  42077c:	8c43000c 	lw	v1,12(v0)
  420780:	8fc20030 	lw	v0,48(s8)
  420784:	00000000 	nop
  420788:	8c42000c 	lw	v0,12(v0)
  42078c:	00000000 	nop
  420790:	14620014 	bne	v1,v0,4207e4 <add_distribution_points+0x110>
  420794:	00000000 	nop
  420798:	8fc2001c 	lw	v0,28(s8)
  42079c:	00000000 	nop
  4207a0:	8c440008 	lw	a0,8(v0)
  4207a4:	8fc20030 	lw	v0,48(s8)
  4207a8:	00000000 	nop
  4207ac:	8c450008 	lw	a1,8(v0)
  4207b0:	8fc2001c 	lw	v0,28(s8)
  4207b4:	00000000 	nop
  4207b8:	8c46000c 	lw	a2,12(v0)
  4207bc:	8f9985c8 	lw	t9,-31288(gp)
  4207c0:	00000000 	nop
  4207c4:	0320f809 	jalr	t9
  4207c8:	00000000 	nop
  4207cc:	8fdc0010 	lw	gp,16(s8)
  4207d0:	14400004 	bnez	v0,4207e4 <add_distribution_points+0x110>
  4207d4:	00000000 	nop
	    {
		/* distribution point already present, skip to next entry */
		add = FALSE;
  4207d8:	afc00018 	sw	zero,24(s8)
		break;
  4207dc:	10000008 	b	420800 <add_distribution_points+0x12c>
  4207e0:	00000000 	nop
	    }
	    gn = gn->next;
  4207e4:	8fc2001c 	lw	v0,28(s8)
  4207e8:	00000000 	nop
  4207ec:	8c420000 	lw	v0,0(v0)
  4207f0:	00000000 	nop
  4207f4:	afc2001c 	sw	v0,28(s8)
  4207f8:	1000ffcf 	b	420738 <add_distribution_points+0x64>
  4207fc:	00000000 	nop
	}

	if (add)
  420800:	8fc20018 	lw	v0,24(s8)
  420804:	00000000 	nop
  420808:	10400029 	beqz	v0,4208b0 <add_distribution_points+0x1dc>
  42080c:	00000000 	nop
	{
	    /* clone additional distribution point */
	    gn = clone_thing(*newPoints, "generalName");
  420810:	8fc40030 	lw	a0,48(s8)
  420814:	24050010 	li	a1,16
  420818:	8f86802c 	lw	a2,-32724(gp)
  42081c:	00000000 	nop
  420820:	24c6a32c 	addiu	a2,a2,-23764
  420824:	8f998c04 	lw	t9,-29692(gp)
  420828:	00000000 	nop
  42082c:	0320f809 	jalr	t9
  420830:	00000000 	nop
  420834:	8fdc0010 	lw	gp,16(s8)
  420838:	afc2001c 	sw	v0,28(s8)
	    clonetochunk(gn->name, newPoints->name.ptr, newPoints->name.len
  42083c:	8fd0001c 	lw	s0,28(s8)
  420840:	8fc40030 	lw	a0,48(s8)
  420844:	8fc20030 	lw	v0,48(s8)
  420848:	00000000 	nop
  42084c:	8c43000c 	lw	v1,12(v0)
  420850:	8fc2001c 	lw	v0,28(s8)
  420854:	00000000 	nop
  420858:	ac43000c 	sw	v1,12(v0)
  42085c:	8c840008 	lw	a0,8(a0)
  420860:	00602821 	move	a1,v1
  420864:	8f86802c 	lw	a2,-32724(gp)
  420868:	00000000 	nop
  42086c:	24c6a268 	addiu	a2,a2,-23960
  420870:	8f998c04 	lw	t9,-29692(gp)
  420874:	00000000 	nop
  420878:	0320f809 	jalr	t9
  42087c:	00000000 	nop
  420880:	8fdc0010 	lw	gp,16(s8)
  420884:	ae020008 	sw	v0,8(s0)
		, "crl uri");

	    /* insert additional CRL distribution point */
	    gn->next = *distributionPoints;
  420888:	8fc20034 	lw	v0,52(s8)
  42088c:	00000000 	nop
  420890:	8c430000 	lw	v1,0(v0)
  420894:	8fc2001c 	lw	v0,28(s8)
  420898:	00000000 	nop
  42089c:	ac430000 	sw	v1,0(v0)
	    *distributionPoints = gn;
  4208a0:	8fc3001c 	lw	v1,28(s8)
  4208a4:	8fc20034 	lw	v0,52(s8)
  4208a8:	00000000 	nop
  4208ac:	ac430000 	sw	v1,0(v0)
	}
	newPoints = newPoints->next;
  4208b0:	8fc20030 	lw	v0,48(s8)
  4208b4:	00000000 	nop
  4208b8:	8c420000 	lw	v0,0(v0)
  4208bc:	00000000 	nop
  4208c0:	afc20030 	sw	v0,48(s8)
  4208c4:	1000ff8f 	b	420704 <add_distribution_points+0x30>
  4208c8:	00000000 	nop
    }
}
  4208cc:	03c0e821 	move	sp,s8
  4208d0:	8fbf002c 	lw	ra,44(sp)
  4208d4:	8fbe0028 	lw	s8,40(sp)
  4208d8:	8fb00020 	lw	s0,32(sp)
  4208dc:	27bd0030 	addiu	sp,sp,48
  4208e0:	03e00008 	jr	ra
  4208e4:	00000000 	nop

004208e8 <add_fetch_request>:
  4208e8:	3c1c0fbf 	lui	gp,0xfbf
  4208ec:	279cc088 	addiu	gp,gp,-16248
  4208f0:	0399e021 	addu	gp,gp,t9
  4208f4:	27bdffc8 	addiu	sp,sp,-56
  4208f8:	afbc0010 	sw	gp,16(sp)
  4208fc:	afbf0034 	sw	ra,52(sp)
  420900:	afbe0030 	sw	s8,48(sp)
  420904:	afbc002c 	sw	gp,44(sp)
  420908:	afb00028 	sw	s0,40(sp)
  42090c:	03a0f021 	move	s8,sp
  420910:	afc40038 	sw	a0,56(s8)
  420914:	afc5003c 	sw	a1,60(s8)
  420918:	afc60040 	sw	a2,64(s8)

/*
 * add a crl fetch request to the chained list
 */
void
add_fetch_request(chunk_t issuer, const generalName_t *gn)
{
    fetch_req_t *req;

    lock_fetch_list("add_fetch_request");
  42091c:	8f84802c 	lw	a0,-32724(gp)
  420920:	00000000 	nop
  420924:	2484a338 	addiu	a0,a0,-23752
  420928:	8f998028 	lw	t9,-32728(gp)
  42092c:	00000000 	nop
  420930:	2739f460 	addiu	t9,t9,-2976
  420934:	00000000 	nop
  420938:	0320f809 	jalr	t9
  42093c:	00000000 	nop
  420940:	8fdc0010 	lw	gp,16(s8)
  420944:	00000000 	nop
    req = fetch_reqs;
  420948:	8f828018 	lw	v0,-32744(gp)
  42094c:	00000000 	nop
  420950:	244214d0 	addiu	v0,v0,5328
  420954:	8c420000 	lw	v0,0(v0)
  420958:	00000000 	nop
  42095c:	afc20018 	sw	v0,24(s8)

    while (req != NULL)
  420960:	8fc20018 	lw	v0,24(s8)
  420964:	00000000 	nop
  420968:	14400003 	bnez	v0,420978 <add_fetch_request+0x90>
  42096c:	00000000 	nop
  420970:	1000003c 	b	420a64 <add_fetch_request+0x17c>
  420974:	00000000 	nop
    {
	if (same_dn(issuer, req->issuer))
  420978:	8fc20018 	lw	v0,24(s8)
  42097c:	8fc40038 	lw	a0,56(s8)
  420980:	8fc5003c 	lw	a1,60(s8)
  420984:	8c46000c 	lw	a2,12(v0)
  420988:	8c470010 	lw	a3,16(v0)
  42098c:	8f998604 	lw	t9,-31228(gp)
  420990:	00000000 	nop
  420994:	0320f809 	jalr	t9
  420998:	00000000 	nop
  42099c:	8fdc0010 	lw	gp,16(s8)
  4209a0:	10400029 	beqz	v0,420a48 <add_fetch_request+0x160>
  4209a4:	00000000 	nop
	{
	    /* there is already a fetch request */
	    DBG(DBG_CONTROL,
  4209a8:	8f8284f8 	lw	v0,-31496(gp)
  4209ac:	00000000 	nop
  4209b0:	8c420000 	lw	v0,0(v0)
  4209b4:	00000000 	nop
  4209b8:	30420010 	andi	v0,v0,0x10
  4209bc:	1040000a 	beqz	v0,4209e8 <add_fetch_request+0x100>
  4209c0:	00000000 	nop
  4209c4:	8f84802c 	lw	a0,-32724(gp)
  4209c8:	00000000 	nop
  4209cc:	2484a34c 	addiu	a0,a0,-23732
  4209d0:	8f9983b8 	lw	t9,-31816(gp)
  4209d4:	00000000 	nop
  4209d8:	0320f809 	jalr	t9
  4209dc:	00000000 	nop
  4209e0:	8fdc0010 	lw	gp,16(s8)
  4209e4:	00000000 	nop
		DBG_log("fetch request already exists")
	    )

	    /* there might be new distribution points */
	    add_distribution_points(gn, &req->distributionPoints);
  4209e8:	8fc20018 	lw	v0,24(s8)
  4209ec:	00000000 	nop
  4209f0:	24420014 	addiu	v0,v0,20
  4209f4:	8fc40040 	lw	a0,64(s8)
  4209f8:	00402821 	move	a1,v0
  4209fc:	8f9989b4 	lw	t9,-30284(gp)
  420a00:	00000000 	nop
  420a04:	0320f809 	jalr	t9
  420a08:	00000000 	nop
  420a0c:	8fdc0010 	lw	gp,16(s8)
  420a10:	00000000 	nop

	    unlock_fetch_list("add_fetch_request");
  420a14:	8f84802c 	lw	a0,-32724(gp)
  420a18:	00000000 	nop
  420a1c:	2484a338 	addiu	a0,a0,-23752
  420a20:	8f998028 	lw	t9,-32728(gp)
  420a24:	00000000 	nop
  420a28:	2739f508 	addiu	t9,t9,-2808
  420a2c:	00000000 	nop
  420a30:	0320f809 	jalr	t9
  420a34:	00000000 	nop
  420a38:	8fdc0010 	lw	gp,16(s8)
  420a3c:	00000000 	nop
	    return;
  420a40:	10000071 	b	420c08 <add_fetch_request+0x320>
  420a44:	00000000 	nop
	}
	req = req->next;
  420a48:	8fc20018 	lw	v0,24(s8)
  420a4c:	00000000 	nop
  420a50:	8c420000 	lw	v0,0(v0)
  420a54:	00000000 	nop
  420a58:	afc20018 	sw	v0,24(s8)
  420a5c:	1000ffc0 	b	420960 <add_fetch_request+0x78>
  420a60:	00000000 	nop
    }
    /* create a new fetch request */
    req = alloc_thing(fetch_req_t, "fetch request");
  420a64:	24040018 	li	a0,24
  420a68:	8f85802c 	lw	a1,-32724(gp)
  420a6c:	00000000 	nop
  420a70:	24a5a36c 	addiu	a1,a1,-23700
  420a74:	8f998084 	lw	t9,-32636(gp)
  420a78:	00000000 	nop
  420a7c:	0320f809 	jalr	t9
  420a80:	00000000 	nop
  420a84:	8fdc0010 	lw	gp,16(s8)
  420a88:	afc20018 	sw	v0,24(s8)
    *req = empty_fetch_req;
  420a8c:	8fc40018 	lw	a0,24(s8)
  420a90:	8f838954 	lw	v1,-30380(gp)
  420a94:	00000000 	nop
  420a98:	8c620000 	lw	v0,0(v1)
  420a9c:	00000000 	nop
  420aa0:	ac820000 	sw	v0,0(a0)
  420aa4:	8c620004 	lw	v0,4(v1)
  420aa8:	00000000 	nop
  420aac:	ac820004 	sw	v0,4(a0)
  420ab0:	8c620008 	lw	v0,8(v1)
  420ab4:	00000000 	nop
  420ab8:	ac820008 	sw	v0,8(a0)
  420abc:	8c62000c 	lw	v0,12(v1)
  420ac0:	00000000 	nop
  420ac4:	ac82000c 	sw	v0,12(a0)
  420ac8:	8c620010 	lw	v0,16(v1)
  420acc:	00000000 	nop
  420ad0:	ac820010 	sw	v0,16(a0)
  420ad4:	8c620014 	lw	v0,20(v1)
  420ad8:	00000000 	nop
  420adc:	ac820014 	sw	v0,20(a0)

    /* note current time */
    req->installed = time(NULL);
  420ae0:	8fd00018 	lw	s0,24(s8)
  420ae4:	00002021 	move	a0,zero
  420ae8:	8f9984b4 	lw	t9,-31564(gp)
  420aec:	00000000 	nop
  420af0:	0320f809 	jalr	t9
  420af4:	00000000 	nop
  420af8:	8fdc0010 	lw	gp,16(s8)
  420afc:	ae020004 	sw	v0,4(s0)

    /* clone issuer */
    clonetochunk(req->issuer, issuer.ptr, issuer.len, "issuer dn");
  420b00:	8fd00018 	lw	s0,24(s8)
  420b04:	8fc3003c 	lw	v1,60(s8)
  420b08:	8fc20018 	lw	v0,24(s8)
  420b0c:	00000000 	nop
  420b10:	ac430010 	sw	v1,16(v0)
  420b14:	8fc40038 	lw	a0,56(s8)
  420b18:	00602821 	move	a1,v1
  420b1c:	8f86802c 	lw	a2,-32724(gp)
  420b20:	00000000 	nop
  420b24:	24c6a37c 	addiu	a2,a2,-23684
  420b28:	8f998c04 	lw	t9,-29692(gp)
  420b2c:	00000000 	nop
  420b30:	0320f809 	jalr	t9
  420b34:	00000000 	nop
  420b38:	8fdc0010 	lw	gp,16(s8)
  420b3c:	ae02000c 	sw	v0,12(s0)

    /* copy distribution points */
    add_distribution_points(gn, &req->distributionPoints);
  420b40:	8fc20018 	lw	v0,24(s8)
  420b44:	00000000 	nop
  420b48:	24420014 	addiu	v0,v0,20
  420b4c:	8fc40040 	lw	a0,64(s8)
  420b50:	00402821 	move	a1,v0
  420b54:	8f9989b4 	lw	t9,-30284(gp)
  420b58:	00000000 	nop
  420b5c:	0320f809 	jalr	t9
  420b60:	00000000 	nop
  420b64:	8fdc0010 	lw	gp,16(s8)
  420b68:	00000000 	nop

    /* insert new fetch request at the head of the queue */
    req->next = fetch_reqs;
  420b6c:	8f838018 	lw	v1,-32744(gp)
  420b70:	00000000 	nop
  420b74:	246314d0 	addiu	v1,v1,5328
  420b78:	8c630000 	lw	v1,0(v1)
  420b7c:	8fc20018 	lw	v0,24(s8)
  420b80:	00000000 	nop
  420b84:	ac430000 	sw	v1,0(v0)
    fetch_reqs = req;
  420b88:	8fc20018 	lw	v0,24(s8)
  420b8c:	8f818018 	lw	at,-32744(gp)
  420b90:	00000000 	nop
  420b94:	242114d0 	addiu	at,at,5328
  420b98:	ac220000 	sw	v0,0(at)

    DBG(DBG_CONTROL,
  420b9c:	8f8284f8 	lw	v0,-31496(gp)
  420ba0:	00000000 	nop
  420ba4:	8c420000 	lw	v0,0(v0)
  420ba8:	00000000 	nop
  420bac:	30420010 	andi	v0,v0,0x10
  420bb0:	1040000a 	beqz	v0,420bdc <add_fetch_request+0x2f4>
  420bb4:	00000000 	nop
  420bb8:	8f84802c 	lw	a0,-32724(gp)
  420bbc:	00000000 	nop
  420bc0:	2484a388 	addiu	a0,a0,-23672
  420bc4:	8f9983b8 	lw	t9,-31816(gp)
  420bc8:	00000000 	nop
  420bcc:	0320f809 	jalr	t9
  420bd0:	00000000 	nop
  420bd4:	8fdc0010 	lw	gp,16(s8)
  420bd8:	00000000 	nop
	DBG_log("fetch request added")
    )
    unlock_fetch_list("add_fetch_request");
  420bdc:	8f84802c 	lw	a0,-32724(gp)
  420be0:	00000000 	nop
  420be4:	2484a338 	addiu	a0,a0,-23752
  420be8:	8f998028 	lw	t9,-32728(gp)
  420bec:	00000000 	nop
  420bf0:	2739f508 	addiu	t9,t9,-2808
  420bf4:	00000000 	nop
  420bf8:	0320f809 	jalr	t9
  420bfc:	00000000 	nop
  420c00:	8fdc0010 	lw	gp,16(s8)
  420c04:	00000000 	nop
}
  420c08:	03c0e821 	move	sp,s8
  420c0c:	8fbf0034 	lw	ra,52(sp)
  420c10:	8fbe0030 	lw	s8,48(sp)
  420c14:	8fb00028 	lw	s0,40(sp)
  420c18:	27bd0038 	addiu	sp,sp,56
  420c1c:	03e00008 	jr	ra
  420c20:	00000000 	nop

00420c24 <list_distribution_points>:
  420c24:	3c1c0fbf 	lui	gp,0xfbf
  420c28:	279cbd4c 	addiu	gp,gp,-17076
  420c2c:	0399e021 	addu	gp,gp,t9
  420c30:	27bdffc8 	addiu	sp,sp,-56
  420c34:	afbc0018 	sw	gp,24(sp)
  420c38:	afbf0030 	sw	ra,48(sp)
  420c3c:	afbe002c 	sw	s8,44(sp)
  420c40:	afbc0028 	sw	gp,40(sp)
  420c44:	03a0f021 	move	s8,sp
  420c48:	afc40038 	sw	a0,56(s8)

/*
 * list all distribution points
 */
void
list_distribution_points(const generalName_t *gn)
{
    bool first_gn = TRUE;
  420c4c:	24020001 	li	v0,1
  420c50:	afc20020 	sw	v0,32(s8)

    while (gn != NULL)
  420c54:	8fc20038 	lw	v0,56(s8)
  420c58:	00000000 	nop
  420c5c:	14400003 	bnez	v0,420c6c <list_distribution_points+0x48>
  420c60:	00000000 	nop
  420c64:	1000002c 	b	420d18 <list_distribution_points+0xf4>
  420c68:	00000000 	nop
    {
	whack_log(RC_COMMENT, "       %s '%.*s'", (first_gn)? "distPts:"
  420c6c:	8fc20020 	lw	v0,32(s8)
  420c70:	00000000 	nop
  420c74:	10400008 	beqz	v0,420c98 <list_distribution_points+0x74>
  420c78:	00000000 	nop
  420c7c:	8f82802c 	lw	v0,-32724(gp)
  420c80:	00000000 	nop
  420c84:	2442a39c 	addiu	v0,v0,-23652
  420c88:	00000000 	nop
  420c8c:	afc20024 	sw	v0,36(s8)
  420c90:	10000006 	b	420cac <list_distribution_points+0x88>
  420c94:	00000000 	nop
  420c98:	8f82802c 	lw	v0,-32724(gp)
  420c9c:	00000000 	nop
  420ca0:	2442a3a8 	addiu	v0,v0,-23640
  420ca4:	00000000 	nop
  420ca8:	afc20024 	sw	v0,36(s8)
  420cac:	8fc20038 	lw	v0,56(s8)
  420cb0:	00000000 	nop
  420cb4:	8c420008 	lw	v0,8(v0)
  420cb8:	00000000 	nop
  420cbc:	afa20010 	sw	v0,16(sp)
  420cc0:	00002021 	move	a0,zero
  420cc4:	8f85802c 	lw	a1,-32724(gp)
  420cc8:	00000000 	nop
  420ccc:	24a5a3b4 	addiu	a1,a1,-23628
  420cd0:	8fc60024 	lw	a2,36(s8)
  420cd4:	8fc20038 	lw	v0,56(s8)
  420cd8:	00000000 	nop
  420cdc:	8c47000c 	lw	a3,12(v0)
  420ce0:	8f9982a8 	lw	t9,-32088(gp)
  420ce4:	00000000 	nop
  420ce8:	0320f809 	jalr	t9
  420cec:	00000000 	nop
  420cf0:	8fdc0018 	lw	gp,24(s8)
  420cf4:	00000000 	nop
	    : "        ", (int)gn->name.len, gn->name.ptr);
	first_gn = FALSE;
  420cf8:	afc00020 	sw	zero,32(s8)
	gn = gn->next;
  420cfc:	8fc20038 	lw	v0,56(s8)
  420d00:	00000000 	nop
  420d04:	8c420000 	lw	v0,0(v0)
  420d08:	00000000 	nop
  420d0c:	afc20038 	sw	v0,56(s8)
  420d10:	1000ffd0 	b	420c54 <list_distribution_points+0x30>
  420d14:	00000000 	nop
    }
}
  420d18:	03c0e821 	move	sp,s8
  420d1c:	8fbf0030 	lw	ra,48(sp)
  420d20:	8fbe002c 	lw	s8,44(sp)
  420d24:	27bd0038 	addiu	sp,sp,56
  420d28:	03e00008 	jr	ra
  420d2c:	00000000 	nop

00420d30 <list_fetch_requests>:
  420d30:	3c1c0fbf 	lui	gp,0xfbf
  420d34:	279cbc40 	addiu	gp,gp,-17344
  420d38:	0399e021 	addu	gp,gp,t9
  420d3c:	27bdfdd0 	addiu	sp,sp,-560
  420d40:	afbc0010 	sw	gp,16(sp)
  420d44:	afbf0228 	sw	ra,552(sp)
  420d48:	afbe0224 	sw	s8,548(sp)
  420d4c:	afbc0220 	sw	gp,544(sp)
  420d50:	03a0f021 	move	s8,sp
  420d54:	afc40230 	sw	a0,560(s8)

/*
 *  list all fetch requests in the chained list
 */
void
list_fetch_requests(bool utc)
{
    fetch_req_t *req;

    lock_fetch_list("list_fetch_requests");
  420d58:	8f84802c 	lw	a0,-32724(gp)
  420d5c:	00000000 	nop
  420d60:	2484a3c8 	addiu	a0,a0,-23608
  420d64:	8f998028 	lw	t9,-32728(gp)
  420d68:	00000000 	nop
  420d6c:	2739f460 	addiu	t9,t9,-2976
  420d70:	00000000 	nop
  420d74:	0320f809 	jalr	t9
  420d78:	00000000 	nop
  420d7c:	8fdc0010 	lw	gp,16(s8)
  420d80:	00000000 	nop
    req = fetch_reqs;
  420d84:	8f828018 	lw	v0,-32744(gp)
  420d88:	00000000 	nop
  420d8c:	244214d0 	addiu	v0,v0,5328
  420d90:	8c420000 	lw	v0,0(v0)
  420d94:	00000000 	nop
  420d98:	afc20018 	sw	v0,24(s8)

    if (req != NULL)
  420d9c:	8fc20018 	lw	v0,24(s8)
  420da0:	00000000 	nop
  420da4:	1040001e 	beqz	v0,420e20 <list_fetch_requests+0xf0>
  420da8:	00000000 	nop
    {
	whack_log(RC_COMMENT, " ");
  420dac:	00002021 	move	a0,zero
  420db0:	8f85802c 	lw	a1,-32724(gp)
  420db4:	00000000 	nop
  420db8:	24a5a2c4 	addiu	a1,a1,-23868
  420dbc:	8f9982a8 	lw	t9,-32088(gp)
  420dc0:	00000000 	nop
  420dc4:	0320f809 	jalr	t9
  420dc8:	00000000 	nop
  420dcc:	8fdc0010 	lw	gp,16(s8)
  420dd0:	00000000 	nop
	whack_log(RC_COMMENT, "List of fetch requests:");
  420dd4:	00002021 	move	a0,zero
  420dd8:	8f85802c 	lw	a1,-32724(gp)
  420ddc:	00000000 	nop
  420de0:	24a5a3dc 	addiu	a1,a1,-23588
  420de4:	8f9982a8 	lw	t9,-32088(gp)
  420de8:	00000000 	nop
  420dec:	0320f809 	jalr	t9
  420df0:	00000000 	nop
  420df4:	8fdc0010 	lw	gp,16(s8)
  420df8:	00000000 	nop
	whack_log(RC_COMMENT, " ");
  420dfc:	00002021 	move	a0,zero
  420e00:	8f85802c 	lw	a1,-32724(gp)
  420e04:	00000000 	nop
  420e08:	24a5a2c4 	addiu	a1,a1,-23868
  420e0c:	8f9982a8 	lw	t9,-32088(gp)
  420e10:	00000000 	nop
  420e14:	0320f809 	jalr	t9
  420e18:	00000000 	nop
  420e1c:	8fdc0010 	lw	gp,16(s8)
  420e20:	00000000 	nop
    }

    while (req != NULL)
  420e24:	8fc20018 	lw	v0,24(s8)
  420e28:	00000000 	nop
  420e2c:	14400003 	bnez	v0,420e3c <list_fetch_requests+0x10c>
  420e30:	00000000 	nop
  420e34:	1000003f 	b	420f34 <list_fetch_requests+0x204>
  420e38:	00000000 	nop
    {
	u_char buf[BUF_LEN];

	whack_log(RC_COMMENT, "%s, trials: %d"
  420e3c:	8fc20018 	lw	v0,24(s8)
  420e40:	00000000 	nop
  420e44:	24420004 	addiu	v0,v0,4
  420e48:	00402021 	move	a0,v0
  420e4c:	8fc50230 	lw	a1,560(s8)
  420e50:	8f998b80 	lw	t9,-29824(gp)
  420e54:	00000000 	nop
  420e58:	0320f809 	jalr	t9
  420e5c:	00000000 	nop
  420e60:	8fdc0010 	lw	gp,16(s8)
  420e64:	00002021 	move	a0,zero
  420e68:	8f85802c 	lw	a1,-32724(gp)
  420e6c:	00000000 	nop
  420e70:	24a5a3f4 	addiu	a1,a1,-23564
  420e74:	00403021 	move	a2,v0
  420e78:	8fc20018 	lw	v0,24(s8)
  420e7c:	00000000 	nop
  420e80:	8c470008 	lw	a3,8(v0)
  420e84:	8f9982a8 	lw	t9,-32088(gp)
  420e88:	00000000 	nop
  420e8c:	0320f809 	jalr	t9
  420e90:	00000000 	nop
  420e94:	8fdc0010 	lw	gp,16(s8)
  420e98:	00000000 	nop
	    , timetoa(&req->installed, utc), req->trials);
	dntoa(buf, BUF_LEN, req->issuer);
  420e9c:	8fc20018 	lw	v0,24(s8)
  420ea0:	27c40020 	addiu	a0,s8,32
  420ea4:	24050200 	li	a1,512
  420ea8:	8c46000c 	lw	a2,12(v0)
  420eac:	8c470010 	lw	a3,16(v0)
  420eb0:	8f9982bc 	lw	t9,-32068(gp)
  420eb4:	00000000 	nop
  420eb8:	0320f809 	jalr	t9
  420ebc:	00000000 	nop
  420ec0:	8fdc0010 	lw	gp,16(s8)
  420ec4:	00000000 	nop
	whack_log(RC_COMMENT, "       issuer:  '%s'", buf);
  420ec8:	00002021 	move	a0,zero
  420ecc:	8f85802c 	lw	a1,-32724(gp)
  420ed0:	00000000 	nop
  420ed4:	24a5a404 	addiu	a1,a1,-23548
  420ed8:	27c60020 	addiu	a2,s8,32
  420edc:	8f9982a8 	lw	t9,-32088(gp)
  420ee0:	00000000 	nop
  420ee4:	0320f809 	jalr	t9
  420ee8:	00000000 	nop
  420eec:	8fdc0010 	lw	gp,16(s8)
  420ef0:	00000000 	nop
	list_distribution_points(req->distributionPoints);
  420ef4:	8fc20018 	lw	v0,24(s8)
  420ef8:	00000000 	nop
  420efc:	8c440014 	lw	a0,20(v0)
  420f00:	8f998328 	lw	t9,-31960(gp)
  420f04:	00000000 	nop
  420f08:	0320f809 	jalr	t9
  420f0c:	00000000 	nop
  420f10:	8fdc0010 	lw	gp,16(s8)
  420f14:	00000000 	nop
	req = req->next;
  420f18:	8fc20018 	lw	v0,24(s8)
  420f1c:	00000000 	nop
  420f20:	8c420000 	lw	v0,0(v0)
  420f24:	00000000 	nop
  420f28:	afc20018 	sw	v0,24(s8)
  420f2c:	1000ffbd 	b	420e24 <list_fetch_requests+0xf4>
  420f30:	00000000 	nop
    }
    unlock_fetch_list("list_fetch_requests");
  420f34:	8f84802c 	lw	a0,-32724(gp)
  420f38:	00000000 	nop
  420f3c:	2484a3c8 	addiu	a0,a0,-23608
  420f40:	8f998028 	lw	t9,-32728(gp)
  420f44:	00000000 	nop
  420f48:	2739f508 	addiu	t9,t9,-2808
  420f4c:	00000000 	nop
  420f50:	0320f809 	jalr	t9
  420f54:	00000000 	nop
  420f58:	8fdc0010 	lw	gp,16(s8)
  420f5c:	00000000 	nop
}
  420f60:	03c0e821 	move	sp,s8
  420f64:	8fbf0228 	lw	ra,552(sp)
  420f68:	8fbe0224 	lw	s8,548(sp)
  420f6c:	27bd0230 	addiu	sp,sp,560
  420f70:	03e00008 	jr	ra
  420f74:	00000000 	nop
	...

00420f80 <init_log>:
  420f80:	3c1c0fbf 	lui	gp,0xfbf
  420f84:	279cb9f0 	addiu	gp,gp,-17936
  420f88:	0399e021 	addu	gp,gp,t9
  420f8c:	27bdffd8 	addiu	sp,sp,-40
  420f90:	afbc0010 	sw	gp,16(sp)
  420f94:	afbf0020 	sw	ra,32(sp)
  420f98:	afbe001c 	sw	s8,28(sp)
  420f9c:	afbc0018 	sw	gp,24(sp)
  420fa0:	03a0f021 	move	s8,sp

void
init_log(void)
{
    if (log_to_stderr)
  420fa4:	8f82809c 	lw	v0,-32612(gp)
  420fa8:	00000000 	nop
  420fac:	8c420000 	lw	v0,0(v0)
  420fb0:	00000000 	nop
  420fb4:	1040000b 	beqz	v0,420fe4 <init_log+0x64>
  420fb8:	00000000 	nop
	setbuf(stderr, NULL);
  420fbc:	8f84838c 	lw	a0,-31860(gp)
  420fc0:	00000000 	nop
  420fc4:	8c840000 	lw	a0,0(a0)
  420fc8:	00002821 	move	a1,zero
  420fcc:	8f998200 	lw	t9,-32256(gp)
  420fd0:	00000000 	nop
  420fd4:	0320f809 	jalr	t9
  420fd8:	00000000 	nop
  420fdc:	8fdc0010 	lw	gp,16(s8)
  420fe0:	00000000 	nop
    if (log_to_syslog)
  420fe4:	8f828300 	lw	v0,-32000(gp)
  420fe8:	00000000 	nop
  420fec:	8c420000 	lw	v0,0(v0)
  420ff0:	00000000 	nop
  420ff4:	1040000c 	beqz	v0,421028 <init_log+0xa8>
  420ff8:	00000000 	nop
	openlog("pluto", LOG_CONS | LOG_NDELAY | LOG_PID, LOG_AUTHPRIV);
  420ffc:	8f84802c 	lw	a0,-32724(gp)
  421000:	00000000 	nop
  421004:	2484a420 	addiu	a0,a0,-23520
  421008:	2405000b 	li	a1,11
  42100c:	24060050 	li	a2,80
  421010:	8f998658 	lw	t9,-31144(gp)
  421014:	00000000 	nop
  421018:	0320f809 	jalr	t9
  42101c:	00000000 	nop
  421020:	8fdc0010 	lw	gp,16(s8)
  421024:	00000000 	nop
}
  421028:	03c0e821 	move	sp,s8
  42102c:	8fbf0020 	lw	ra,32(sp)
  421030:	8fbe001c 	lw	s8,28(sp)
  421034:	27bd0028 	addiu	sp,sp,40
  421038:	03e00008 	jr	ra
  42103c:	00000000 	nop

00421040 <close_log>:
  421040:	3c1c0fbf 	lui	gp,0xfbf
  421044:	279cb930 	addiu	gp,gp,-18128
  421048:	0399e021 	addu	gp,gp,t9
  42104c:	27bdffd8 	addiu	sp,sp,-40
  421050:	afbc0010 	sw	gp,16(sp)
  421054:	afbf0020 	sw	ra,32(sp)
  421058:	afbe001c 	sw	s8,28(sp)
  42105c:	afbc0018 	sw	gp,24(sp)
  421060:	03a0f021 	move	s8,sp

void
close_log(void)
{
    if (log_to_syslog)
  421064:	8f828300 	lw	v0,-32000(gp)
  421068:	00000000 	nop
  42106c:	8c420000 	lw	v0,0(v0)
  421070:	00000000 	nop
  421074:	10400007 	beqz	v0,421094 <close_log+0x54>
  421078:	00000000 	nop
	closelog();
  42107c:	8f998650 	lw	t9,-31152(gp)
  421080:	00000000 	nop
  421084:	0320f809 	jalr	t9
  421088:	00000000 	nop
  42108c:	8fdc0010 	lw	gp,16(s8)
  421090:	00000000 	nop
}
  421094:	03c0e821 	move	sp,s8
  421098:	8fbf0020 	lw	ra,32(sp)
  42109c:	8fbe001c 	lw	s8,28(sp)
  4210a0:	27bd0028 	addiu	sp,sp,40
  4210a4:	03e00008 	jr	ra
  4210a8:	00000000 	nop

004210ac <sanitize>:
  4210ac:	3c1c0fbf 	lui	gp,0xfbf
  4210b0:	279cb8c4 	addiu	gp,gp,-18236
  4210b4:	0399e021 	addu	gp,gp,t9
  4210b8:	27bdffc0 	addiu	sp,sp,-64
  4210bc:	afbc0010 	sw	gp,16(sp)
  4210c0:	afbf0038 	sw	ra,56(sp)
  4210c4:	afbe0034 	sw	s8,52(sp)
  4210c8:	afbc0030 	sw	gp,48(sp)
  4210cc:	03a0f021 	move	s8,sp
  4210d0:	afc40040 	sw	a0,64(s8)
  4210d4:	afc50044 	sw	a1,68(s8)

/* Sanitize character string in situ: turns dangerous characters into \OOO.
 * With a bit of work, we could use simpler reps for \\, \r, etc.,
 * but this is only to protect against something that shouldn't be used.
 * Truncate resulting string to what fits in buffer.
 */
static size_t
sanitize(char *buf, size_t size)
{
#   define UGLY_WIDTH	4	/* width for ugly character: \OOO */
    size_t len;
    size_t added = 0;
  4210d8:	afc0001c 	sw	zero,28(s8)
    char *p;

    passert(size >= UGLY_WIDTH);	/* need room to swing cat */
  4210dc:	8fc20044 	lw	v0,68(s8)
  4210e0:	00000000 	nop
  4210e4:	2c420004 	sltiu	v0,v0,4
  4210e8:	1040000e 	beqz	v0,421124 <sanitize+0x78>
  4210ec:	00000000 	nop
  4210f0:	8f84802c 	lw	a0,-32724(gp)
  4210f4:	00000000 	nop
  4210f8:	2484a428 	addiu	a0,a0,-23512
  4210fc:	8f85802c 	lw	a1,-32724(gp)
  421100:	00000000 	nop
  421104:	24a5a43c 	addiu	a1,a1,-23492
  421108:	24060054 	li	a2,84
  42110c:	8f998bb8 	lw	t9,-29768(gp)
  421110:	00000000 	nop
  421114:	0320f809 	jalr	t9
  421118:	00000000 	nop
  42111c:	8fdc0010 	lw	gp,16(s8)
  421120:	00000000 	nop

    /* find right side of string to be sanitized and count
     * number of columns to be added.  Stop on end of string
     * or lack of room for more result.
     */
    for (p = buf; *p != '\0' && &p[added] < &buf[size - UGLY_WIDTH]; )
  421124:	8fc20040 	lw	v0,64(s8)
  421128:	00000000 	nop
  42112c:	afc20020 	sw	v0,32(s8)
  421130:	8fc20020 	lw	v0,32(s8)
  421134:	00000000 	nop
  421138:	80420000 	lb	v0,0(v0)
  42113c:	00000000 	nop
  421140:	1040002c 	beqz	v0,4211f4 <sanitize+0x148>
  421144:	00000000 	nop
  421148:	8fc30020 	lw	v1,32(s8)
  42114c:	8fc2001c 	lw	v0,28(s8)
  421150:	00000000 	nop
  421154:	00622021 	addu	a0,v1,v0
  421158:	8fc30040 	lw	v1,64(s8)
  42115c:	8fc20044 	lw	v0,68(s8)
  421160:	00000000 	nop
  421164:	00621021 	addu	v0,v1,v0
  421168:	2442fffc 	addiu	v0,v0,-4
  42116c:	0082102b 	sltu	v0,a0,v0
  421170:	14400003 	bnez	v0,421180 <sanitize+0xd4>
  421174:	00000000 	nop
  421178:	1000001e 	b	4211f4 <sanitize+0x148>
  42117c:	00000000 	nop
    {
	unsigned char c = *p++;
  421180:	27c40020 	addiu	a0,s8,32
  421184:	8c820000 	lw	v0,0(a0)
  421188:	00000000 	nop
  42118c:	00401821 	move	v1,v0
  421190:	90630000 	lbu	v1,0(v1)
  421194:	00000000 	nop
  421198:	a3c30024 	sb	v1,36(s8)
  42119c:	24420001 	addiu	v0,v0,1
  4211a0:	ac820000 	sw	v0,0(a0)

	if (c == '\\' || !isprint(c))
  4211a4:	93c30024 	lbu	v1,36(s8)
  4211a8:	2402005c 	li	v0,92
  4211ac:	1062000b 	beq	v1,v0,4211dc <sanitize+0x130>
  4211b0:	00000000 	nop
  4211b4:	93c20024 	lbu	v0,36(s8)
  4211b8:	00000000 	nop
  4211bc:	00402021 	move	a0,v0
  4211c0:	8f99846c 	lw	t9,-31636(gp)
  4211c4:	00000000 	nop
  4211c8:	0320f809 	jalr	t9
  4211cc:	00000000 	nop
  4211d0:	8fdc0010 	lw	gp,16(s8)
  4211d4:	1440ffd6 	bnez	v0,421130 <sanitize+0x84>
  4211d8:	00000000 	nop
	    added += UGLY_WIDTH - 1;
  4211dc:	8fc2001c 	lw	v0,28(s8)
  4211e0:	00000000 	nop
  4211e4:	24420003 	addiu	v0,v0,3
  4211e8:	afc2001c 	sw	v0,28(s8)
  4211ec:	1000ffd0 	b	421130 <sanitize+0x84>
  4211f0:	00000000 	nop
    }

    /* at this point, p points after last original character to be
     * included.  added is how many characters are added to sanitize.
     * so p[added] will point after last sanitized character.
     */

    p[added] = '\0';
  4211f4:	8fc30020 	lw	v1,32(s8)
  4211f8:	8fc2001c 	lw	v0,28(s8)
  4211fc:	00000000 	nop
  421200:	00621021 	addu	v0,v1,v0
  421204:	a0400000 	sb	zero,0(v0)
    len = &p[added] - buf;
  421208:	8fc30020 	lw	v1,32(s8)
  42120c:	8fc2001c 	lw	v0,28(s8)
  421210:	00000000 	nop
  421214:	00621821 	addu	v1,v1,v0
  421218:	8fc20040 	lw	v0,64(s8)
  42121c:	00000000 	nop
  421220:	00621023 	subu	v0,v1,v0
  421224:	afc20018 	sw	v0,24(s8)

    /* scan backwards, copying characters to their new home
     * and inserting the expansions for ugly characters.
     * It is finished when no more shifting is required.
     * This is a predecrement loop.
     */
    while (added != 0)
  421228:	8fc2001c 	lw	v0,28(s8)
  42122c:	00000000 	nop
  421230:	14400003 	bnez	v0,421240 <sanitize+0x194>
  421234:	00000000 	nop
  421238:	10000040 	b	42133c <sanitize+0x290>
  42123c:	00000000 	nop
    {
	char fmtd[UGLY_WIDTH + 1];
	unsigned char c;

	while ((c = *--p) != '\\' && isprint(c))
  421240:	8fc20020 	lw	v0,32(s8)
  421244:	00000000 	nop
  421248:	2442ffff 	addiu	v0,v0,-1
  42124c:	afc20020 	sw	v0,32(s8)
  421250:	90420000 	lbu	v0,0(v0)
  421254:	00000000 	nop
  421258:	a3c20024 	sb	v0,36(s8)
  42125c:	304300ff 	andi	v1,v0,0xff
  421260:	2402005c 	li	v0,92
  421264:	10620016 	beq	v1,v0,4212c0 <sanitize+0x214>
  421268:	00000000 	nop
  42126c:	93c20024 	lbu	v0,36(s8)
  421270:	00000000 	nop
  421274:	00402021 	move	a0,v0
  421278:	8f99846c 	lw	t9,-31636(gp)
  42127c:	00000000 	nop
  421280:	0320f809 	jalr	t9
  421284:	00000000 	nop
  421288:	8fdc0010 	lw	gp,16(s8)
  42128c:	14400003 	bnez	v0,42129c <sanitize+0x1f0>
  421290:	00000000 	nop
  421294:	1000000a 	b	4212c0 <sanitize+0x214>
  421298:	00000000 	nop
	    p[added] = c;
  42129c:	8fc30020 	lw	v1,32(s8)
  4212a0:	8fc2001c 	lw	v0,28(s8)
  4212a4:	00000000 	nop
  4212a8:	00621821 	addu	v1,v1,v0
  4212ac:	93c20024 	lbu	v0,36(s8)
  4212b0:	00000000 	nop
  4212b4:	a0620000 	sb	v0,0(v1)
  4212b8:	1000ffe1 	b	421240 <sanitize+0x194>
  4212bc:	00000000 	nop
	added -= UGLY_WIDTH - 1;
  4212c0:	8fc2001c 	lw	v0,28(s8)
  4212c4:	00000000 	nop
  4212c8:	2442fffd 	addiu	v0,v0,-3
  4212cc:	afc2001c 	sw	v0,28(s8)
	snprintf(fmtd, sizeof(fmtd), "\\%03o", c);
  4212d0:	93c20024 	lbu	v0,36(s8)
  4212d4:	27c40028 	addiu	a0,s8,40
  4212d8:	24050005 	li	a1,5
  4212dc:	8f86802c 	lw	a2,-32724(gp)
  4212e0:	00000000 	nop
  4212e4:	24c6a444 	addiu	a2,a2,-23484
  4212e8:	00403821 	move	a3,v0
  4212ec:	8f998b38 	lw	t9,-29896(gp)
  4212f0:	00000000 	nop
  4212f4:	0320f809 	jalr	t9
  4212f8:	00000000 	nop
  4212fc:	8fdc0010 	lw	gp,16(s8)
  421300:	00000000 	nop
	memcpy(p + added, fmtd, UGLY_WIDTH);
  421304:	8fc30020 	lw	v1,32(s8)
  421308:	8fc2001c 	lw	v0,28(s8)
  42130c:	00000000 	nop
  421310:	00621021 	addu	v0,v1,v0
  421314:	00402021 	move	a0,v0
  421318:	27c50028 	addiu	a1,s8,40
  42131c:	24060004 	li	a2,4
  421320:	8f998a30 	lw	t9,-30160(gp)
  421324:	00000000 	nop
  421328:	0320f809 	jalr	t9
  42132c:	00000000 	nop
  421330:	8fdc0010 	lw	gp,16(s8)
  421334:	1000ffbc 	b	421228 <sanitize+0x17c>
  421338:	00000000 	nop
    }
    return len;
  42133c:	8fc20018 	lw	v0,24(s8)
  421340:	00000000 	nop
#   undef UGLY_WIDTH
}
  421344:	03c0e821 	move	sp,s8
  421348:	8fbf0038 	lw	ra,56(sp)
  42134c:	8fbe0034 	lw	s8,52(sp)
  421350:	27bd0040 	addiu	sp,sp,64
  421354:	03e00008 	jr	ra
  421358:	00000000 	nop

0042135c <fmt_log>:
  42135c:	3c1c0fbf 	lui	gp,0xfbf
  421360:	279cb614 	addiu	gp,gp,-18924
  421364:	0399e021 	addu	gp,gp,t9
  421368:	27bdff60 	addiu	sp,sp,-160
  42136c:	afbc0018 	sw	gp,24(sp)
  421370:	afbf0098 	sw	ra,152(sp)
  421374:	afbe0094 	sw	s8,148(sp)
  421378:	afbc0090 	sw	gp,144(sp)
  42137c:	03a0f021 	move	s8,sp
  421380:	afc400a0 	sw	a0,160(s8)
  421384:	afc500a4 	sw	a1,164(s8)
  421388:	afc600a8 	sw	a2,168(s8)
  42138c:	afc700ac 	sw	a3,172(s8)

/* format a string for the log, with suitable prefixes.
 * A format starting with ~ indicates that this is a reprocessing
 * of the message, so prefixing and quoting is suppressed.
 */
static void
fmt_log(char *buf, size_t buf_len, const char *fmt, va_list ap)
{
    bool reproc = *fmt == '~';
  421390:	8fc200a8 	lw	v0,168(s8)
  421394:	00000000 	nop
  421398:	80420000 	lb	v0,0(v0)
  42139c:	00000000 	nop
  4213a0:	3842007e 	xori	v0,v0,0x7e
  4213a4:	2c420001 	sltiu	v0,v0,1
  4213a8:	afc20020 	sw	v0,32(s8)
    size_t ps;
    struct connection *c = cur_state != NULL ? cur_state->st_connection
  4213ac:	8f8287f8 	lw	v0,-30728(gp)
  4213b0:	00000000 	nop
  4213b4:	8c420000 	lw	v0,0(v0)
  4213b8:	00000000 	nop
  4213bc:	1040000a 	beqz	v0,4213e8 <fmt_log+0x8c>
  4213c0:	00000000 	nop
  4213c4:	8f8287f8 	lw	v0,-30728(gp)
  4213c8:	00000000 	nop
  4213cc:	8c420000 	lw	v0,0(v0)
  4213d0:	00000000 	nop
  4213d4:	8c42000c 	lw	v0,12(v0)
  4213d8:	00000000 	nop
  4213dc:	afc20088 	sw	v0,136(s8)
  4213e0:	10000006 	b	4213fc <fmt_log+0xa0>
  4213e4:	00000000 	nop
  4213e8:	8f8288c8 	lw	v0,-30520(gp)
  4213ec:	00000000 	nop
  4213f0:	8c420000 	lw	v0,0(v0)
  4213f4:	00000000 	nop
  4213f8:	afc20088 	sw	v0,136(s8)
  4213fc:	8fc20088 	lw	v0,136(s8)
  421400:	00000000 	nop
  421404:	afc20028 	sw	v0,40(s8)
	: cur_connection;

    buf[0] = '\0';
  421408:	8fc200a0 	lw	v0,160(s8)
  42140c:	00000000 	nop
  421410:	a0400000 	sb	zero,0(v0)
    if (reproc)
  421414:	8fc20020 	lw	v0,32(s8)
  421418:	00000000 	nop
  42141c:	10400007 	beqz	v0,42143c <fmt_log+0xe0>
  421420:	00000000 	nop
	fmt++;	/* ~ at start of format suppresses this prefix */
  421424:	8fc200a8 	lw	v0,168(s8)
  421428:	00000000 	nop
  42142c:	24420001 	addiu	v0,v0,1
  421430:	afc200a8 	sw	v0,168(s8)
  421434:	1000009c 	b	4216a8 <fmt_log+0x34c>
  421438:	00000000 	nop
    else if (c != NULL)
  42143c:	8fc20028 	lw	v0,40(s8)
  421440:	00000000 	nop
  421444:	10400075 	beqz	v0,42161c <fmt_log+0x2c0>
  421448:	00000000 	nop
    {
	/* start with name of connection */
	char *const be = buf + buf_len;
  42144c:	8fc300a0 	lw	v1,160(s8)
  421450:	8fc200a4 	lw	v0,164(s8)
  421454:	00000000 	nop
  421458:	00621021 	addu	v0,v1,v0
  42145c:	afc2002c 	sw	v0,44(s8)
	char *bp = buf;
  421460:	8fc200a0 	lw	v0,160(s8)
  421464:	00000000 	nop
  421468:	afc20030 	sw	v0,48(s8)

	snprintf(bp, be - bp, "\"%s\"", c->name);
  42146c:	8fc3002c 	lw	v1,44(s8)
  421470:	8fc20030 	lw	v0,48(s8)
  421474:	00000000 	nop
  421478:	00621023 	subu	v0,v1,v0
  42147c:	8fc40030 	lw	a0,48(s8)
  421480:	00402821 	move	a1,v0
  421484:	8f86802c 	lw	a2,-32724(gp)
  421488:	00000000 	nop
  42148c:	24c6a44c 	addiu	a2,a2,-23476
  421490:	8fc20028 	lw	v0,40(s8)
  421494:	00000000 	nop
  421498:	8c470000 	lw	a3,0(v0)
  42149c:	8f998b38 	lw	t9,-29896(gp)
  4214a0:	00000000 	nop
  4214a4:	0320f809 	jalr	t9
  4214a8:	00000000 	nop
  4214ac:	8fdc0018 	lw	gp,24(s8)
  4214b0:	00000000 	nop
	bp += strlen(bp);
  4214b4:	8fc40030 	lw	a0,48(s8)
  4214b8:	8f998188 	lw	t9,-32376(gp)
  4214bc:	00000000 	nop
  4214c0:	0320f809 	jalr	t9
  4214c4:	00000000 	nop
  4214c8:	8fdc0018 	lw	gp,24(s8)
  4214cc:	00401821 	move	v1,v0
  4214d0:	8fc20030 	lw	v0,48(s8)
  4214d4:	00000000 	nop
  4214d8:	00431021 	addu	v0,v0,v1
  4214dc:	afc20030 	sw	v0,48(s8)

	/* if it fits, put in any connection instance information */
	if (be - bp > CONN_INST_BUF)
  4214e0:	8fc3002c 	lw	v1,44(s8)
  4214e4:	8fc20030 	lw	v0,48(s8)
  4214e8:	00000000 	nop
  4214ec:	00621023 	subu	v0,v1,v0
  4214f0:	284200fc 	slti	v0,v0,252
  4214f4:	14400014 	bnez	v0,421548 <fmt_log+0x1ec>
  4214f8:	00000000 	nop
	{
	    fmt_conn_instance(c, bp);
  4214fc:	8fc40028 	lw	a0,40(s8)
  421500:	8fc50030 	lw	a1,48(s8)
  421504:	8f998250 	lw	t9,-32176(gp)
  421508:	00000000 	nop
  42150c:	0320f809 	jalr	t9
  421510:	00000000 	nop
  421514:	8fdc0018 	lw	gp,24(s8)
  421518:	00000000 	nop
	    bp += strlen(bp);
  42151c:	8fc40030 	lw	a0,48(s8)
  421520:	8f998188 	lw	t9,-32376(gp)
  421524:	00000000 	nop
  421528:	0320f809 	jalr	t9
  42152c:	00000000 	nop
  421530:	8fdc0018 	lw	gp,24(s8)
  421534:	00401821 	move	v1,v0
  421538:	8fc20030 	lw	v0,48(s8)
  42153c:	00000000 	nop
  421540:	00431021 	addu	v0,v0,v1
  421544:	afc20030 	sw	v0,48(s8)
	}

	if (cur_state != NULL)
  421548:	8f8287f8 	lw	v0,-30728(gp)
  42154c:	00000000 	nop
  421550:	8c420000 	lw	v0,0(v0)
  421554:	00000000 	nop
  421558:	10400020 	beqz	v0,4215dc <fmt_log+0x280>
  42155c:	00000000 	nop
	{
	    /* state number */
	    snprintf(bp, be - bp, " #%lu", cur_state->st_serialno);
  421560:	8fc3002c 	lw	v1,44(s8)
  421564:	8fc20030 	lw	v0,48(s8)
  421568:	00000000 	nop
  42156c:	00621023 	subu	v0,v1,v0
  421570:	8fc40030 	lw	a0,48(s8)
  421574:	00402821 	move	a1,v0
  421578:	8f86802c 	lw	a2,-32724(gp)
  42157c:	00000000 	nop
  421580:	24c6a454 	addiu	a2,a2,-23468
  421584:	8f8287f8 	lw	v0,-30728(gp)
  421588:	00000000 	nop
  42158c:	8c420000 	lw	v0,0(v0)
  421590:	00000000 	nop
  421594:	8c470000 	lw	a3,0(v0)
  421598:	8f998b38 	lw	t9,-29896(gp)
  42159c:	00000000 	nop
  4215a0:	0320f809 	jalr	t9
  4215a4:	00000000 	nop
  4215a8:	8fdc0018 	lw	gp,24(s8)
  4215ac:	00000000 	nop
	    bp += strlen(bp);
  4215b0:	8fc40030 	lw	a0,48(s8)
  4215b4:	8f998188 	lw	t9,-32376(gp)
  4215b8:	00000000 	nop
  4215bc:	0320f809 	jalr	t9
  4215c0:	00000000 	nop
  4215c4:	8fdc0018 	lw	gp,24(s8)
  4215c8:	00401821 	move	v1,v0
  4215cc:	8fc20030 	lw	v0,48(s8)
  4215d0:	00000000 	nop
  4215d4:	00431021 	addu	v0,v0,v1
  4215d8:	afc20030 	sw	v0,48(s8)
	}
	snprintf(bp, be - bp, ": ");
  4215dc:	8fc2002c 	lw	v0,44(s8)
  4215e0:	8fc30030 	lw	v1,48(s8)
  4215e4:	00000000 	nop
  4215e8:	00431023 	subu	v0,v0,v1
  4215ec:	8fc40030 	lw	a0,48(s8)
  4215f0:	00402821 	move	a1,v0
  4215f4:	8f86802c 	lw	a2,-32724(gp)
  4215f8:	00000000 	nop
  4215fc:	24c6a45c 	addiu	a2,a2,-23460
  421600:	8f998b38 	lw	t9,-29896(gp)
  421604:	00000000 	nop
  421608:	0320f809 	jalr	t9
  42160c:	00000000 	nop
  421610:	8fdc0018 	lw	gp,24(s8)
  421614:	10000024 	b	4216a8 <fmt_log+0x34c>
  421618:	00000000 	nop
    }
    else if (cur_from != NULL)
  42161c:	8f828748 	lw	v0,-30904(gp)
  421620:	00000000 	nop
  421624:	8c420000 	lw	v0,0(v0)
  421628:	00000000 	nop
  42162c:	1040001e 	beqz	v0,4216a8 <fmt_log+0x34c>
  421630:	00000000 	nop
    {
	/* peer's IP address */
	/* Note: must not use ip_str() because our caller might! */
	char ab[ADDRTOT_BUF];

	(void) addrtot(cur_from, 0, ab, sizeof(ab));
  421634:	8f848748 	lw	a0,-30904(gp)
  421638:	00000000 	nop
  42163c:	8c840000 	lw	a0,0(a0)
  421640:	00002821 	move	a1,zero
  421644:	27c60038 	addiu	a2,s8,56
  421648:	24070049 	li	a3,73
  42164c:	8f998b50 	lw	t9,-29872(gp)
  421650:	00000000 	nop
  421654:	0320f809 	jalr	t9
  421658:	00000000 	nop
  42165c:	8fdc0018 	lw	gp,24(s8)
  421660:	00000000 	nop
	snprintf(buf, buf_len, "packet from %s:%u: "
  421664:	8f8285ac 	lw	v0,-31316(gp)
  421668:	00000000 	nop
  42166c:	94420000 	lhu	v0,0(v0)
  421670:	00000000 	nop
  421674:	afa20010 	sw	v0,16(sp)
  421678:	8fc400a0 	lw	a0,160(s8)
  42167c:	8fc500a4 	lw	a1,164(s8)
  421680:	8f86802c 	lw	a2,-32724(gp)
  421684:	00000000 	nop
  421688:	24c6a460 	addiu	a2,a2,-23456
  42168c:	27c70038 	addiu	a3,s8,56
  421690:	8f998b38 	lw	t9,-29896(gp)
  421694:	00000000 	nop
  421698:	0320f809 	jalr	t9
  42169c:	00000000 	nop
  4216a0:	8fdc0018 	lw	gp,24(s8)
  4216a4:	00000000 	nop
	    , ab, (unsigned)cur_from_port);
    }

    ps = strlen(buf);
  4216a8:	8fc400a0 	lw	a0,160(s8)
  4216ac:	8f998188 	lw	t9,-32376(gp)
  4216b0:	00000000 	nop
  4216b4:	0320f809 	jalr	t9
  4216b8:	00000000 	nop
  4216bc:	8fdc0018 	lw	gp,24(s8)
  4216c0:	afc20024 	sw	v0,36(s8)
    vsnprintf(buf + ps, buf_len - ps, fmt, ap);
  4216c4:	8fc300a0 	lw	v1,160(s8)
  4216c8:	8fc20024 	lw	v0,36(s8)
  4216cc:	00000000 	nop
  4216d0:	00622021 	addu	a0,v1,v0
  4216d4:	8fc300a4 	lw	v1,164(s8)
  4216d8:	8fc20024 	lw	v0,36(s8)
  4216dc:	00000000 	nop
  4216e0:	00621023 	subu	v0,v1,v0
  4216e4:	00402821 	move	a1,v0
  4216e8:	8fc600a8 	lw	a2,168(s8)
  4216ec:	8fc700ac 	lw	a3,172(s8)
  4216f0:	8f998990 	lw	t9,-30320(gp)
  4216f4:	00000000 	nop
  4216f8:	0320f809 	jalr	t9
  4216fc:	00000000 	nop
  421700:	8fdc0018 	lw	gp,24(s8)
  421704:	00000000 	nop
    if (!reproc)
  421708:	8fc20020 	lw	v0,32(s8)
  42170c:	00000000 	nop
  421710:	1440000b 	bnez	v0,421740 <fmt_log+0x3e4>
  421714:	00000000 	nop
	(void)sanitize(buf, buf_len);
  421718:	8fc400a0 	lw	a0,160(s8)
  42171c:	8fc500a4 	lw	a1,164(s8)
  421720:	8f998028 	lw	t9,-32728(gp)
  421724:	00000000 	nop
  421728:	273910ac 	addiu	t9,t9,4268
  42172c:	00000000 	nop
  421730:	0320f809 	jalr	t9
  421734:	00000000 	nop
  421738:	8fdc0018 	lw	gp,24(s8)
  42173c:	00000000 	nop
}
  421740:	03c0e821 	move	sp,s8
  421744:	8fbf0098 	lw	ra,152(sp)
  421748:	8fbe0094 	lw	s8,148(sp)
  42174c:	27bd00a0 	addiu	sp,sp,160
  421750:	03e00008 	jr	ra
  421754:	00000000 	nop

00421758 <plog>:
  421758:	3c1c0fbf 	lui	gp,0xfbf
  42175c:	279cb218 	addiu	gp,gp,-19944
  421760:	0399e021 	addu	gp,gp,t9
  421764:	27bdfbd0 	addiu	sp,sp,-1072
  421768:	afbc0010 	sw	gp,16(sp)
  42176c:	afa40430 	sw	a0,1072(sp)
  421770:	afa50434 	sw	a1,1076(sp)
  421774:	afa60438 	sw	a2,1080(sp)
  421778:	afa7043c 	sw	a3,1084(sp)
  42177c:	afbf0428 	sw	ra,1064(sp)
  421780:	afbe0424 	sw	s8,1060(sp)
  421784:	afbc0420 	sw	gp,1056(sp)
  421788:	03a0f021 	move	s8,sp
  42178c:	afc40430 	sw	a0,1072(s8)

void
plog(const char *message, ...)
{
    va_list args;
    char m[1024];	/* longer messages will be truncated */

    va_start(args, message);
  421790:	27c20434 	addiu	v0,s8,1076
  421794:	afc20018 	sw	v0,24(s8)
    fmt_log(m, sizeof(m), message, args);
  421798:	27c40020 	addiu	a0,s8,32
  42179c:	24050400 	li	a1,1024
  4217a0:	8fc60430 	lw	a2,1072(s8)
  4217a4:	8fc70018 	lw	a3,24(s8)
  4217a8:	8f998028 	lw	t9,-32728(gp)
  4217ac:	00000000 	nop
  4217b0:	2739135c 	addiu	t9,t9,4956
  4217b4:	00000000 	nop
  4217b8:	0320f809 	jalr	t9
  4217bc:	00000000 	nop
  4217c0:	8fdc0010 	lw	gp,16(s8)
  4217c4:	00000000 	nop
    va_end(args);

    if (log_to_stderr)
  4217c8:	8f82809c 	lw	v0,-32612(gp)
  4217cc:	00000000 	nop
  4217d0:	8c420000 	lw	v0,0(v0)
  4217d4:	00000000 	nop
  4217d8:	1040000e 	beqz	v0,421814 <plog+0xbc>
  4217dc:	00000000 	nop
	fprintf(stderr, "%s\n", m);
  4217e0:	8f84838c 	lw	a0,-31860(gp)
  4217e4:	00000000 	nop
  4217e8:	8c840000 	lw	a0,0(a0)
  4217ec:	8f85802c 	lw	a1,-32724(gp)
  4217f0:	00000000 	nop
  4217f4:	24a5a474 	addiu	a1,a1,-23436
  4217f8:	27c60020 	addiu	a2,s8,32
  4217fc:	8f99878c 	lw	t9,-30836(gp)
  421800:	00000000 	nop
  421804:	0320f809 	jalr	t9
  421808:	00000000 	nop
  42180c:	8fdc0010 	lw	gp,16(s8)
  421810:	00000000 	nop
    if (log_to_syslog)
  421814:	8f828300 	lw	v0,-32000(gp)
  421818:	00000000 	nop
  42181c:	8c420000 	lw	v0,0(v0)
  421820:	00000000 	nop
  421824:	1040000c 	beqz	v0,421858 <plog+0x100>
  421828:	00000000 	nop
	syslog(LOG_WARNING, "%s", m);
  42182c:	24040004 	li	a0,4
  421830:	8f85802c 	lw	a1,-32724(gp)
  421834:	00000000 	nop
  421838:	24a5a478 	addiu	a1,a1,-23432
  42183c:	27c60020 	addiu	a2,s8,32
  421840:	8f998484 	lw	t9,-31612(gp)
  421844:	00000000 	nop
  421848:	0320f809 	jalr	t9
  42184c:	00000000 	nop
  421850:	8fdc0010 	lw	gp,16(s8)
  421854:	00000000 	nop

    whack_log(RC_LOG, "~%s", m);
  421858:	24040002 	li	a0,2
  42185c:	8f85802c 	lw	a1,-32724(gp)
  421860:	00000000 	nop
  421864:	24a5a47c 	addiu	a1,a1,-23428
  421868:	27c60020 	addiu	a2,s8,32
  42186c:	8f9982a8 	lw	t9,-32088(gp)
  421870:	00000000 	nop
  421874:	0320f809 	jalr	t9
  421878:	00000000 	nop
  42187c:	8fdc0010 	lw	gp,16(s8)
  421880:	00000000 	nop
}
  421884:	03c0e821 	move	sp,s8
  421888:	8fbf0428 	lw	ra,1064(sp)
  42188c:	8fbe0424 	lw	s8,1060(sp)
  421890:	27bd0430 	addiu	sp,sp,1072
  421894:	03e00008 	jr	ra
  421898:	00000000 	nop

0042189c <loglog>:
  42189c:	3c1c0fbf 	lui	gp,0xfbf
  4218a0:	279cb0d4 	addiu	gp,gp,-20268
  4218a4:	0399e021 	addu	gp,gp,t9
  4218a8:	27bdfbd0 	addiu	sp,sp,-1072
  4218ac:	afbc0010 	sw	gp,16(sp)
  4218b0:	afa50434 	sw	a1,1076(sp)
  4218b4:	afa60438 	sw	a2,1080(sp)
  4218b8:	afa7043c 	sw	a3,1084(sp)
  4218bc:	afbf0428 	sw	ra,1064(sp)
  4218c0:	afbe0424 	sw	s8,1060(sp)
  4218c4:	afbc0420 	sw	gp,1056(sp)
  4218c8:	03a0f021 	move	s8,sp
  4218cc:	afc40430 	sw	a0,1072(s8)
  4218d0:	afc50434 	sw	a1,1076(s8)

void
loglog(int mess_no, const char *message, ...)
{
    va_list args;
    char m[1024];	/* longer messages will be truncated */

    va_start(args, message);
  4218d4:	27c20438 	addiu	v0,s8,1080
  4218d8:	afc20018 	sw	v0,24(s8)
    fmt_log(m, sizeof(m), message, args);
  4218dc:	27c40020 	addiu	a0,s8,32
  4218e0:	24050400 	li	a1,1024
  4218e4:	8fc60434 	lw	a2,1076(s8)
  4218e8:	8fc70018 	lw	a3,24(s8)
  4218ec:	8f998028 	lw	t9,-32728(gp)
  4218f0:	00000000 	nop
  4218f4:	2739135c 	addiu	t9,t9,4956
  4218f8:	00000000 	nop
  4218fc:	0320f809 	jalr	t9
  421900:	00000000 	nop
  421904:	8fdc0010 	lw	gp,16(s8)
  421908:	00000000 	nop
    va_end(args);

    if (log_to_stderr)
  42190c:	8f82809c 	lw	v0,-32612(gp)
  421910:	00000000 	nop
  421914:	8c420000 	lw	v0,0(v0)
  421918:	00000000 	nop
  42191c:	1040000e 	beqz	v0,421958 <loglog+0xbc>
  421920:	00000000 	nop
	fprintf(stderr, "%s\n", m);
  421924:	8f84838c 	lw	a0,-31860(gp)
  421928:	00000000 	nop
  42192c:	8c840000 	lw	a0,0(a0)
  421930:	8f85802c 	lw	a1,-32724(gp)
  421934:	00000000 	nop
  421938:	24a5a474 	addiu	a1,a1,-23436
  42193c:	27c60020 	addiu	a2,s8,32
  421940:	8f99878c 	lw	t9,-30836(gp)
  421944:	00000000 	nop
  421948:	0320f809 	jalr	t9
  42194c:	00000000 	nop
  421950:	8fdc0010 	lw	gp,16(s8)
  421954:	00000000 	nop
    if (log_to_syslog)
  421958:	8f828300 	lw	v0,-32000(gp)
  42195c:	00000000 	nop
  421960:	8c420000 	lw	v0,0(v0)
  421964:	00000000 	nop
  421968:	1040000c 	beqz	v0,42199c <loglog+0x100>
  42196c:	00000000 	nop
	syslog(LOG_WARNING, "%s", m);
  421970:	24040004 	li	a0,4
  421974:	8f85802c 	lw	a1,-32724(gp)
  421978:	00000000 	nop
  42197c:	24a5a478 	addiu	a1,a1,-23432
  421980:	27c60020 	addiu	a2,s8,32
  421984:	8f998484 	lw	t9,-31612(gp)
  421988:	00000000 	nop
  42198c:	0320f809 	jalr	t9
  421990:	00000000 	nop
  421994:	8fdc0010 	lw	gp,16(s8)
  421998:	00000000 	nop

    whack_log(mess_no, "~%s", m);
  42199c:	8fc40430 	lw	a0,1072(s8)
  4219a0:	8f85802c 	lw	a1,-32724(gp)
  4219a4:	00000000 	nop
  4219a8:	24a5a47c 	addiu	a1,a1,-23428
  4219ac:	27c60020 	addiu	a2,s8,32
  4219b0:	8f9982a8 	lw	t9,-32088(gp)
  4219b4:	00000000 	nop
  4219b8:	0320f809 	jalr	t9
  4219bc:	00000000 	nop
  4219c0:	8fdc0010 	lw	gp,16(s8)
  4219c4:	00000000 	nop
}
  4219c8:	03c0e821 	move	sp,s8
  4219cc:	8fbf0428 	lw	ra,1064(sp)
  4219d0:	8fbe0424 	lw	s8,1060(sp)
  4219d4:	27bd0430 	addiu	sp,sp,1072
  4219d8:	03e00008 	jr	ra
  4219dc:	00000000 	nop

004219e0 <log_errno_routine>:
  4219e0:	3c1c0fbf 	lui	gp,0xfbf
  4219e4:	279caf90 	addiu	gp,gp,-20592
  4219e8:	0399e021 	addu	gp,gp,t9
  4219ec:	27bdfbc8 	addiu	sp,sp,-1080
  4219f0:	afbc0018 	sw	gp,24(sp)
  4219f4:	afa5043c 	sw	a1,1084(sp)
  4219f8:	afa60440 	sw	a2,1088(sp)
  4219fc:	afa70444 	sw	a3,1092(sp)
  421a00:	afbf0430 	sw	ra,1072(sp)
  421a04:	afbe042c 	sw	s8,1068(sp)
  421a08:	afbc0428 	sw	gp,1064(sp)
  421a0c:	03a0f021 	move	s8,sp
  421a10:	afc40438 	sw	a0,1080(s8)
  421a14:	afc5043c 	sw	a1,1084(s8)

void
log_errno_routine(int e, const char *message, ...)
{
    va_list args;
    char m[1024];	/* longer messages will be truncated */

    va_start(args, message);
  421a18:	27c20440 	addiu	v0,s8,1088
  421a1c:	afc20020 	sw	v0,32(s8)
    fmt_log(m, sizeof(m), message, args);
  421a20:	27c40028 	addiu	a0,s8,40
  421a24:	24050400 	li	a1,1024
  421a28:	8fc6043c 	lw	a2,1084(s8)
  421a2c:	8fc70020 	lw	a3,32(s8)
  421a30:	8f998028 	lw	t9,-32728(gp)
  421a34:	00000000 	nop
  421a38:	2739135c 	addiu	t9,t9,4956
  421a3c:	00000000 	nop
  421a40:	0320f809 	jalr	t9
  421a44:	00000000 	nop
  421a48:	8fdc0018 	lw	gp,24(s8)
  421a4c:	00000000 	nop
    va_end(args);

    if (log_to_stderr)
  421a50:	8f82809c 	lw	v0,-32612(gp)
  421a54:	00000000 	nop
  421a58:	8c420000 	lw	v0,0(v0)
  421a5c:	00000000 	nop
  421a60:	10400016 	beqz	v0,421abc <log_errno_routine+0xdc>
  421a64:	00000000 	nop
	fprintf(stderr, "ERROR: %s. Errno %d: %s\n", m, e, strerror(e));
  421a68:	8fc40438 	lw	a0,1080(s8)
  421a6c:	8f998b8c 	lw	t9,-29812(gp)
  421a70:	00000000 	nop
  421a74:	0320f809 	jalr	t9
  421a78:	00000000 	nop
  421a7c:	8fdc0018 	lw	gp,24(s8)
  421a80:	afa20010 	sw	v0,16(sp)
  421a84:	8f84838c 	lw	a0,-31860(gp)
  421a88:	00000000 	nop
  421a8c:	8c840000 	lw	a0,0(a0)
  421a90:	8f85802c 	lw	a1,-32724(gp)
  421a94:	00000000 	nop
  421a98:	24a5a480 	addiu	a1,a1,-23424
  421a9c:	27c60028 	addiu	a2,s8,40
  421aa0:	8fc70438 	lw	a3,1080(s8)
  421aa4:	8f99878c 	lw	t9,-30836(gp)
  421aa8:	00000000 	nop
  421aac:	0320f809 	jalr	t9
  421ab0:	00000000 	nop
  421ab4:	8fdc0018 	lw	gp,24(s8)
  421ab8:	00000000 	nop
    if (log_to_syslog)
  421abc:	8f828300 	lw	v0,-32000(gp)
  421ac0:	00000000 	nop
  421ac4:	8c420000 	lw	v0,0(v0)
  421ac8:	00000000 	nop
  421acc:	10400014 	beqz	v0,421b20 <log_errno_routine+0x140>
  421ad0:	00000000 	nop
	syslog(LOG_ERR, "ERROR: %s. Errno %d: %s", m, e, strerror(e));
  421ad4:	8fc40438 	lw	a0,1080(s8)
  421ad8:	8f998b8c 	lw	t9,-29812(gp)
  421adc:	00000000 	nop
  421ae0:	0320f809 	jalr	t9
  421ae4:	00000000 	nop
  421ae8:	8fdc0018 	lw	gp,24(s8)
  421aec:	afa20010 	sw	v0,16(sp)
  421af0:	24040003 	li	a0,3
  421af4:	8f85802c 	lw	a1,-32724(gp)
  421af8:	00000000 	nop
  421afc:	24a5a49c 	addiu	a1,a1,-23396
  421b00:	27c60028 	addiu	a2,s8,40
  421b04:	8fc70438 	lw	a3,1080(s8)
  421b08:	8f998484 	lw	t9,-31612(gp)
  421b0c:	00000000 	nop
  421b10:	0320f809 	jalr	t9
  421b14:	00000000 	nop
  421b18:	8fdc0018 	lw	gp,24(s8)
  421b1c:	00000000 	nop

    whack_log(RC_LOG_SERIOUS
  421b20:	8fc40438 	lw	a0,1080(s8)
  421b24:	8f998b8c 	lw	t9,-29812(gp)
  421b28:	00000000 	nop
  421b2c:	0320f809 	jalr	t9
  421b30:	00000000 	nop
  421b34:	8fdc0018 	lw	gp,24(s8)
  421b38:	afa20010 	sw	v0,16(sp)
  421b3c:	24040003 	li	a0,3
  421b40:	8f85802c 	lw	a1,-32724(gp)
  421b44:	00000000 	nop
  421b48:	24a5a4b4 	addiu	a1,a1,-23372
  421b4c:	27c60028 	addiu	a2,s8,40
  421b50:	8fc70438 	lw	a3,1080(s8)
  421b54:	8f9982a8 	lw	t9,-32088(gp)
  421b58:	00000000 	nop
  421b5c:	0320f809 	jalr	t9
  421b60:	00000000 	nop
  421b64:	8fdc0018 	lw	gp,24(s8)
  421b68:	00000000 	nop
	, "~ERROR: %s. Errno %d: %s", m, e, strerror(e));
}
  421b6c:	03c0e821 	move	sp,s8
  421b70:	8fbf0430 	lw	ra,1072(sp)
  421b74:	8fbe042c 	lw	s8,1068(sp)
  421b78:	27bd0438 	addiu	sp,sp,1080
  421b7c:	03e00008 	jr	ra
  421b80:	00000000 	nop

00421b84 <exit_log>:
  421b84:	3c1c0fbf 	lui	gp,0xfbf
  421b88:	279cadec 	addiu	gp,gp,-21012
  421b8c:	0399e021 	addu	gp,gp,t9
  421b90:	27bdfbd0 	addiu	sp,sp,-1072
  421b94:	afbc0010 	sw	gp,16(sp)
  421b98:	afa40430 	sw	a0,1072(sp)
  421b9c:	afa50434 	sw	a1,1076(sp)
  421ba0:	afa60438 	sw	a2,1080(sp)
  421ba4:	afa7043c 	sw	a3,1084(sp)
  421ba8:	afbf0428 	sw	ra,1064(sp)
  421bac:	afbe0424 	sw	s8,1060(sp)
  421bb0:	afbc0420 	sw	gp,1056(sp)
  421bb4:	03a0f021 	move	s8,sp
  421bb8:	afc40430 	sw	a0,1072(s8)

void
exit_log(const char *message, ...)
{
    va_list args;
    char m[1024];	/* longer messages will be truncated */

    va_start(args, message);
  421bbc:	27c20434 	addiu	v0,s8,1076
  421bc0:	afc20018 	sw	v0,24(s8)
    fmt_log(m, sizeof(m), message, args);
  421bc4:	27c40020 	addiu	a0,s8,32
  421bc8:	24050400 	li	a1,1024
  421bcc:	8fc60430 	lw	a2,1072(s8)
  421bd0:	8fc70018 	lw	a3,24(s8)
  421bd4:	8f998028 	lw	t9,-32728(gp)
  421bd8:	00000000 	nop
  421bdc:	2739135c 	addiu	t9,t9,4956
  421be0:	00000000 	nop
  421be4:	0320f809 	jalr	t9
  421be8:	00000000 	nop
  421bec:	8fdc0010 	lw	gp,16(s8)
  421bf0:	00000000 	nop
    va_end(args);

    if (log_to_stderr)
  421bf4:	8f82809c 	lw	v0,-32612(gp)
  421bf8:	00000000 	nop
  421bfc:	8c420000 	lw	v0,0(v0)
  421c00:	00000000 	nop
  421c04:	1040000e 	beqz	v0,421c40 <exit_log+0xbc>
  421c08:	00000000 	nop
	fprintf(stderr, "FATAL ERROR: %s\n", m);
  421c0c:	8f84838c 	lw	a0,-31860(gp)
  421c10:	00000000 	nop
  421c14:	8c840000 	lw	a0,0(a0)
  421c18:	8f85802c 	lw	a1,-32724(gp)
  421c1c:	00000000 	nop
  421c20:	24a5a4d0 	addiu	a1,a1,-23344
  421c24:	27c60020 	addiu	a2,s8,32
  421c28:	8f99878c 	lw	t9,-30836(gp)
  421c2c:	00000000 	nop
  421c30:	0320f809 	jalr	t9
  421c34:	00000000 	nop
  421c38:	8fdc0010 	lw	gp,16(s8)
  421c3c:	00000000 	nop
    if (log_to_syslog)
  421c40:	8f828300 	lw	v0,-32000(gp)
  421c44:	00000000 	nop
  421c48:	8c420000 	lw	v0,0(v0)
  421c4c:	00000000 	nop
  421c50:	1040000c 	beqz	v0,421c84 <exit_log+0x100>
  421c54:	00000000 	nop
	syslog(LOG_ERR, "FATAL ERROR: %s", m);
  421c58:	24040003 	li	a0,3
  421c5c:	8f85802c 	lw	a1,-32724(gp)
  421c60:	00000000 	nop
  421c64:	24a5a4e4 	addiu	a1,a1,-23324
  421c68:	27c60020 	addiu	a2,s8,32
  421c6c:	8f998484 	lw	t9,-31612(gp)
  421c70:	00000000 	nop
  421c74:	0320f809 	jalr	t9
  421c78:	00000000 	nop
  421c7c:	8fdc0010 	lw	gp,16(s8)
  421c80:	00000000 	nop

    whack_log(RC_LOG_SERIOUS, "~FATAL ERROR: %s", m);
  421c84:	24040003 	li	a0,3
  421c88:	8f85802c 	lw	a1,-32724(gp)
  421c8c:	00000000 	nop
  421c90:	24a5a4f4 	addiu	a1,a1,-23308
  421c94:	27c60020 	addiu	a2,s8,32
  421c98:	8f9982a8 	lw	t9,-32088(gp)
  421c9c:	00000000 	nop
  421ca0:	0320f809 	jalr	t9
  421ca4:	00000000 	nop
  421ca8:	8fdc0010 	lw	gp,16(s8)
  421cac:	00000000 	nop

    exit_pluto(1);
  421cb0:	24040001 	li	a0,1
  421cb4:	8f99810c 	lw	t9,-32500(gp)
  421cb8:	00000000 	nop
  421cbc:	0320f809 	jalr	t9
  421cc0:	00000000 	nop
  421cc4:	8fdc0010 	lw	gp,16(s8)
  421cc8:	00000000 	nop

00421ccc <exit_log_errno_routine>:
  421ccc:	3c1c0fbf 	lui	gp,0xfbf
  421cd0:	279caca4 	addiu	gp,gp,-21340
  421cd4:	0399e021 	addu	gp,gp,t9
  421cd8:	27bdfbc8 	addiu	sp,sp,-1080
  421cdc:	afbc0018 	sw	gp,24(sp)
  421ce0:	afa5043c 	sw	a1,1084(sp)
  421ce4:	afa60440 	sw	a2,1088(sp)
  421ce8:	afa70444 	sw	a3,1092(sp)
  421cec:	afbf0430 	sw	ra,1072(sp)
  421cf0:	afbe042c 	sw	s8,1068(sp)
  421cf4:	afbc0428 	sw	gp,1064(sp)
  421cf8:	03a0f021 	move	s8,sp
  421cfc:	afc40438 	sw	a0,1080(s8)
  421d00:	afc5043c 	sw	a1,1084(s8)
}

void
exit_log_errno_routine(int e, const char *message, ...)
{
    va_list args;
    char m[1024];	/* longer messages will be truncated */

    va_start(args, message);
  421d04:	27c20440 	addiu	v0,s8,1088
  421d08:	afc20020 	sw	v0,32(s8)
    fmt_log(m, sizeof(m), message, args);
  421d0c:	27c40028 	addiu	a0,s8,40
  421d10:	24050400 	li	a1,1024
  421d14:	8fc6043c 	lw	a2,1084(s8)
  421d18:	8fc70020 	lw	a3,32(s8)
  421d1c:	8f998028 	lw	t9,-32728(gp)
  421d20:	00000000 	nop
  421d24:	2739135c 	addiu	t9,t9,4956
  421d28:	00000000 	nop
  421d2c:	0320f809 	jalr	t9
  421d30:	00000000 	nop
  421d34:	8fdc0018 	lw	gp,24(s8)
  421d38:	00000000 	nop
    va_end(args);

    if (log_to_stderr)
  421d3c:	8f82809c 	lw	v0,-32612(gp)
  421d40:	00000000 	nop
  421d44:	8c420000 	lw	v0,0(v0)
  421d48:	00000000 	nop
  421d4c:	10400016 	beqz	v0,421da8 <exit_log_errno_routine+0xdc>
  421d50:	00000000 	nop
	fprintf(stderr, "FATAL ERROR: %s. Errno %d: %s\n", m, e, strerror(e));
  421d54:	8fc40438 	lw	a0,1080(s8)
  421d58:	8f998b8c 	lw	t9,-29812(gp)
  421d5c:	00000000 	nop
  421d60:	0320f809 	jalr	t9
  421d64:	00000000 	nop
  421d68:	8fdc0018 	lw	gp,24(s8)
  421d6c:	afa20010 	sw	v0,16(sp)
  421d70:	8f84838c 	lw	a0,-31860(gp)
  421d74:	00000000 	nop
  421d78:	8c840000 	lw	a0,0(a0)
  421d7c:	8f85802c 	lw	a1,-32724(gp)
  421d80:	00000000 	nop
  421d84:	24a5a508 	addiu	a1,a1,-23288
  421d88:	27c60028 	addiu	a2,s8,40
  421d8c:	8fc70438 	lw	a3,1080(s8)
  421d90:	8f99878c 	lw	t9,-30836(gp)
  421d94:	00000000 	nop
  421d98:	0320f809 	jalr	t9
  421d9c:	00000000 	nop
  421da0:	8fdc0018 	lw	gp,24(s8)
  421da4:	00000000 	nop
    if (log_to_syslog)
  421da8:	8f828300 	lw	v0,-32000(gp)
  421dac:	00000000 	nop
  421db0:	8c420000 	lw	v0,0(v0)
  421db4:	00000000 	nop
  421db8:	10400014 	beqz	v0,421e0c <exit_log_errno_routine+0x140>
  421dbc:	00000000 	nop
	syslog(LOG_ERR, "FATAL ERROR: %s. Errno %d: %s", m, e, strerror(e));
  421dc0:	8fc40438 	lw	a0,1080(s8)
  421dc4:	8f998b8c 	lw	t9,-29812(gp)
  421dc8:	00000000 	nop
  421dcc:	0320f809 	jalr	t9
  421dd0:	00000000 	nop
  421dd4:	8fdc0018 	lw	gp,24(s8)
  421dd8:	afa20010 	sw	v0,16(sp)
  421ddc:	24040003 	li	a0,3
  421de0:	8f85802c 	lw	a1,-32724(gp)
  421de4:	00000000 	nop
  421de8:	24a5a528 	addiu	a1,a1,-23256
  421dec:	27c60028 	addiu	a2,s8,40
  421df0:	8fc70438 	lw	a3,1080(s8)
  421df4:	8f998484 	lw	t9,-31612(gp)
  421df8:	00000000 	nop
  421dfc:	0320f809 	jalr	t9
  421e00:	00000000 	nop
  421e04:	8fdc0018 	lw	gp,24(s8)
  421e08:	00000000 	nop

    whack_log(RC_LOG_SERIOUS
  421e0c:	8fc40438 	lw	a0,1080(s8)
  421e10:	8f998b8c 	lw	t9,-29812(gp)
  421e14:	00000000 	nop
  421e18:	0320f809 	jalr	t9
  421e1c:	00000000 	nop
  421e20:	8fdc0018 	lw	gp,24(s8)
  421e24:	afa20010 	sw	v0,16(sp)
  421e28:	24040003 	li	a0,3
  421e2c:	8f85802c 	lw	a1,-32724(gp)
  421e30:	00000000 	nop
  421e34:	24a5a548 	addiu	a1,a1,-23224
  421e38:	27c60028 	addiu	a2,s8,40
  421e3c:	8fc70438 	lw	a3,1080(s8)
  421e40:	8f9982a8 	lw	t9,-32088(gp)
  421e44:	00000000 	nop
  421e48:	0320f809 	jalr	t9
  421e4c:	00000000 	nop
  421e50:	8fdc0018 	lw	gp,24(s8)
  421e54:	00000000 	nop
	, "~FATAL ERROR: %s. Errno %d: %s", m, e, strerror(e));

    exit_pluto(1);
  421e58:	24040001 	li	a0,1
  421e5c:	8f99810c 	lw	t9,-32500(gp)
  421e60:	00000000 	nop
  421e64:	0320f809 	jalr	t9
  421e68:	00000000 	nop
  421e6c:	8fdc0018 	lw	gp,24(s8)
  421e70:	00000000 	nop

00421e74 <whack_log>:
  421e74:	3c1c0fbf 	lui	gp,0xfbf
  421e78:	279caafc 	addiu	gp,gp,-21764
  421e7c:	0399e021 	addu	gp,gp,t9
  421e80:	27bdfbc0 	addiu	sp,sp,-1088
  421e84:	afbc0010 	sw	gp,16(sp)
  421e88:	afa50444 	sw	a1,1092(sp)
  421e8c:	afa60448 	sw	a2,1096(sp)
  421e90:	afa7044c 	sw	a3,1100(sp)
  421e94:	afbf0438 	sw	ra,1080(sp)
  421e98:	afbe0434 	sw	s8,1076(sp)
  421e9c:	afbc0430 	sw	gp,1072(sp)
  421ea0:	03a0f021 	move	s8,sp
  421ea4:	afc40440 	sw	a0,1088(s8)
  421ea8:	afc50444 	sw	a1,1092(s8)
}

/* emit message to whack.
 * form is "ddd statename text" where
 * - ddd is a decimal status code (RC_*) as described in whack.h
 * - text is a human-readable annotation
 */
void
whack_log(int mess_no, const char *message, ...)
{
    int wfd = whack_log_fd != NULL_FD ? whack_log_fd
  421eac:	8f838994 	lw	v1,-30316(gp)
  421eb0:	00000000 	nop
  421eb4:	8c630000 	lw	v1,0(v1)
  421eb8:	2402ffff 	li	v0,-1
  421ebc:	14620014 	bne	v1,v0,421f10 <whack_log+0x9c>
  421ec0:	00000000 	nop
  421ec4:	8f8287f8 	lw	v0,-30728(gp)
  421ec8:	00000000 	nop
  421ecc:	8c420000 	lw	v0,0(v0)
  421ed0:	00000000 	nop
  421ed4:	1040000a 	beqz	v0,421f00 <whack_log+0x8c>
  421ed8:	00000000 	nop
  421edc:	8f8287f8 	lw	v0,-30728(gp)
  421ee0:	00000000 	nop
  421ee4:	8c420000 	lw	v0,0(v0)
  421ee8:	00000000 	nop
  421eec:	8c420014 	lw	v0,20(v0)
  421ef0:	00000000 	nop
  421ef4:	afc20428 	sw	v0,1064(s8)
  421ef8:	1000000a 	b	421f24 <whack_log+0xb0>
  421efc:	00000000 	nop
  421f00:	2402ffff 	li	v0,-1
  421f04:	afc20428 	sw	v0,1064(s8)
  421f08:	10000006 	b	421f24 <whack_log+0xb0>
  421f0c:	00000000 	nop
  421f10:	8f828994 	lw	v0,-30316(gp)
  421f14:	00000000 	nop
  421f18:	8c420000 	lw	v0,0(v0)
  421f1c:	00000000 	nop
  421f20:	afc20428 	sw	v0,1064(s8)
  421f24:	8fc20428 	lw	v0,1064(s8)
  421f28:	00000000 	nop
  421f2c:	afc20018 	sw	v0,24(s8)
	: cur_state != NULL ? cur_state->st_whack_sock
	: NULL_FD;

    if (wfd != NULL_FD)
  421f30:	8fc30018 	lw	v1,24(s8)
  421f34:	2402ffff 	li	v0,-1
  421f38:	1062004d 	beq	v1,v0,422070 <whack_log+0x1fc>
  421f3c:	00000000 	nop
    {
	va_list args;
	char m[1024];	/* longer messages will be truncated */
	int prelen = snprintf(m, sizeof(m), "%03d ", mess_no);
  421f40:	27c40020 	addiu	a0,s8,32
  421f44:	24050400 	li	a1,1024
  421f48:	8f86802c 	lw	a2,-32724(gp)
  421f4c:	00000000 	nop
  421f50:	24c6a568 	addiu	a2,a2,-23192
  421f54:	8fc70440 	lw	a3,1088(s8)
  421f58:	8f998b38 	lw	t9,-29896(gp)
  421f5c:	00000000 	nop
  421f60:	0320f809 	jalr	t9
  421f64:	00000000 	nop
  421f68:	8fdc0010 	lw	gp,16(s8)
  421f6c:	afc20420 	sw	v0,1056(s8)
	size_t len;

	passert(prelen >= 0);
  421f70:	8fc20420 	lw	v0,1056(s8)
  421f74:	00000000 	nop
  421f78:	0441000e 	bgez	v0,421fb4 <whack_log+0x140>
  421f7c:	00000000 	nop
  421f80:	8f84802c 	lw	a0,-32724(gp)
  421f84:	00000000 	nop
  421f88:	2484a570 	addiu	a0,a0,-23184
  421f8c:	8f85802c 	lw	a1,-32724(gp)
  421f90:	00000000 	nop
  421f94:	24a5a43c 	addiu	a1,a1,-23492
  421f98:	24060129 	li	a2,297
  421f9c:	8f998bb8 	lw	t9,-29768(gp)
  421fa0:	00000000 	nop
  421fa4:	0320f809 	jalr	t9
  421fa8:	00000000 	nop
  421fac:	8fdc0010 	lw	gp,16(s8)
  421fb0:	00000000 	nop

	va_start(args, message);
  421fb4:	27c20448 	addiu	v0,s8,1096
  421fb8:	afc2001c 	sw	v0,28(s8)
	fmt_log(m+prelen, sizeof(m)-prelen, message, args);
  421fbc:	27c30020 	addiu	v1,s8,32
  421fc0:	8fc20420 	lw	v0,1056(s8)
  421fc4:	00000000 	nop
  421fc8:	00622021 	addu	a0,v1,v0
  421fcc:	24030400 	li	v1,1024
  421fd0:	8fc20420 	lw	v0,1056(s8)
  421fd4:	00000000 	nop
  421fd8:	00621023 	subu	v0,v1,v0
  421fdc:	00402821 	move	a1,v0
  421fe0:	8fc60444 	lw	a2,1092(s8)
  421fe4:	8fc7001c 	lw	a3,28(s8)
  421fe8:	8f998028 	lw	t9,-32728(gp)
  421fec:	00000000 	nop
  421ff0:	2739135c 	addiu	t9,t9,4956
  421ff4:	00000000 	nop
  421ff8:	0320f809 	jalr	t9
  421ffc:	00000000 	nop
  422000:	8fdc0010 	lw	gp,16(s8)
  422004:	00000000 	nop
	va_end(args);

	len = strlen(m);
  422008:	27c40020 	addiu	a0,s8,32
  42200c:	8f998188 	lw	t9,-32376(gp)
  422010:	00000000 	nop
  422014:	0320f809 	jalr	t9
  422018:	00000000 	nop
  42201c:	8fdc0010 	lw	gp,16(s8)
  422020:	afc20424 	sw	v0,1060(s8)
	m[len] = '\n';	/* don't need NUL, do need NL */
  422024:	27c30020 	addiu	v1,s8,32
  422028:	8fc20424 	lw	v0,1060(s8)
  42202c:	00000000 	nop
  422030:	00621821 	addu	v1,v1,v0
  422034:	2402000a 	li	v0,10
  422038:	a0620000 	sb	v0,0(v1)

	/* write to whack socket, but suppress possible SIGPIPE */
#ifdef MSG_NOSIGNAL	/* depends on version of glibc??? */
	(void) send(wfd, m, len + 1, MSG_NOSIGNAL);
  42203c:	8fc20424 	lw	v0,1060(s8)
  422040:	00000000 	nop
  422044:	24420001 	addiu	v0,v0,1
  422048:	8fc40018 	lw	a0,24(s8)
  42204c:	27c50020 	addiu	a1,s8,32
  422050:	00403021 	move	a2,v0
  422054:	24074000 	li	a3,16384
  422058:	8f998894 	lw	t9,-30572(gp)
  42205c:	00000000 	nop
  422060:	0320f809 	jalr	t9
  422064:	00000000 	nop
  422068:	8fdc0010 	lw	gp,16(s8)
  42206c:	00000000 	nop
#else /* !MSG_NOSIGNAL */
	{
	    int r;
	    struct sigaction act
		, oldact;

	    act.sa_handler = SIG_IGN;
	    sigemptyset(&act.sa_mask);
	    act.sa_flags = 0;	/* no nothing */
	    r = sigaction(SIGPIPE, &act, &oldact);
	    passert(r == 0);

	    (void) write(wfd, m, len + 1);

	    r = sigaction(SIGPIPE, &oldact, NULL);
	    passert(r == 0);
	}
#endif /* !MSG_NOSIGNAL */
    }
}
  422070:	03c0e821 	move	sp,s8
  422074:	8fbf0438 	lw	ra,1080(sp)
  422078:	8fbe0434 	lw	s8,1076(sp)
  42207c:	27bd0440 	addiu	sp,sp,1088
  422080:	03e00008 	jr	ra
  422084:	00000000 	nop

00422088 <builddiag>:
  422088:	3c1c0fbf 	lui	gp,0xfbf
  42208c:	279ca8e8 	addiu	gp,gp,-22296
  422090:	0399e021 	addu	gp,gp,t9
  422094:	27bdfbd0 	addiu	sp,sp,-1072
  422098:	afbc0010 	sw	gp,16(sp)
  42209c:	afa40430 	sw	a0,1072(sp)
  4220a0:	afa50434 	sw	a1,1076(sp)
  4220a4:	afa60438 	sw	a2,1080(sp)
  4220a8:	afa7043c 	sw	a3,1084(sp)
  4220ac:	afbf0428 	sw	ra,1064(sp)
  4220b0:	afbe0424 	sw	s8,1060(sp)
  4220b4:	afbc0420 	sw	gp,1056(sp)
  4220b8:	03a0f021 	move	s8,sp
  4220bc:	afc40430 	sw	a0,1072(s8)

/* Build up a diagnostic in a static buffer.
 * Although this would be a generally useful function, it is very
 * hard to come up with a discipline that prevents different uses
 * from interfering.  It is intended that by limiting it to building
 * diagnostics, we will avoid this problem.
 * Juggling is performed to allow an argument to be a previous
 * result: the new string may safely depend on the old one.  This
 * restriction is not checked in any way: violators will produce
 * confusing results (without crashing!).
 */
char diag_space[sizeof(diag_space)];

err_t
builddiag(const char *fmt, ...)
{
    static char diag_space[1024];	/* longer messages will be truncated */
    char t[sizeof(diag_space)];	/* build result here first */
    va_list args;

    va_start(args, fmt);
  4220c0:	27c20434 	addiu	v0,s8,1076
  4220c4:	afc20418 	sw	v0,1048(s8)
    t[0] = '\0';	/* in case nothing terminates string */
  4220c8:	a3c00018 	sb	zero,24(s8)
    vsnprintf(t, sizeof(t), fmt, args);
  4220cc:	27c40018 	addiu	a0,s8,24
  4220d0:	24050400 	li	a1,1024
  4220d4:	8fc60430 	lw	a2,1072(s8)
  4220d8:	8fc70418 	lw	a3,1048(s8)
  4220dc:	8f998990 	lw	t9,-30320(gp)
  4220e0:	00000000 	nop
  4220e4:	0320f809 	jalr	t9
  4220e8:	00000000 	nop
  4220ec:	8fdc0010 	lw	gp,16(s8)
  4220f0:	00000000 	nop
    va_end(args);
    strcpy(diag_space, t);
  4220f4:	8f848018 	lw	a0,-32744(gp)
  4220f8:	00000000 	nop
  4220fc:	248462a0 	addiu	a0,a0,25248
  422100:	27c50018 	addiu	a1,s8,24
  422104:	8f998c58 	lw	t9,-29608(gp)
  422108:	00000000 	nop
  42210c:	0320f809 	jalr	t9
  422110:	00000000 	nop
  422114:	8fdc0010 	lw	gp,16(s8)
  422118:	00000000 	nop
    return diag_space;
  42211c:	8f828018 	lw	v0,-32744(gp)
  422120:	00000000 	nop
  422124:	244262a0 	addiu	v0,v0,25248
  422128:	00000000 	nop
}
  42212c:	03c0e821 	move	sp,s8
  422130:	8fbf0428 	lw	ra,1064(sp)
  422134:	8fbe0424 	lw	s8,1060(sp)
  422138:	27bd0430 	addiu	sp,sp,1072
  42213c:	03e00008 	jr	ra
  422140:	00000000 	nop

00422144 <passert_fail>:
  422144:	3c1c0fbf 	lui	gp,0xfbf
  422148:	279ca82c 	addiu	gp,gp,-22484
  42214c:	0399e021 	addu	gp,gp,t9
  422150:	27bdffd0 	addiu	sp,sp,-48
  422154:	afbc0018 	sw	gp,24(sp)
  422158:	afbf0028 	sw	ra,40(sp)
  42215c:	afbe0024 	sw	s8,36(sp)
  422160:	afbc0020 	sw	gp,32(sp)
  422164:	03a0f021 	move	s8,sp
  422168:	afc40030 	sw	a0,48(s8)
  42216c:	afc50034 	sw	a1,52(s8)
  422170:	afc60038 	sw	a2,56(s8)

/* Debugging message support */

#ifdef DEBUG

void
passert_fail(const char *pred_str, const char *file_str, unsigned long line_no)
{
    /* we will get a possibly unplanned prefix.  Hope it works */
    loglog(RC_LOG_SERIOUS, "ASSERTION FAILED at %s:%lu: %s", file_str, line_no, pred_str);
  422174:	8fc20030 	lw	v0,48(s8)
  422178:	00000000 	nop
  42217c:	afa20010 	sw	v0,16(sp)
  422180:	24040003 	li	a0,3
  422184:	8f85802c 	lw	a1,-32724(gp)
  422188:	00000000 	nop
  42218c:	24a5a57c 	addiu	a1,a1,-23172
  422190:	8fc60034 	lw	a2,52(s8)
  422194:	8fc70038 	lw	a3,56(s8)
  422198:	8f998c48 	lw	t9,-29624(gp)
  42219c:	00000000 	nop
  4221a0:	0320f809 	jalr	t9
  4221a4:	00000000 	nop
  4221a8:	8fdc0018 	lw	gp,24(s8)
  4221ac:	00000000 	nop
    abort();	/* exiting correctly doesn't always work */
  4221b0:	8f998890 	lw	t9,-30576(gp)
  4221b4:	00000000 	nop
  4221b8:	0320f809 	jalr	t9
  4221bc:	00000000 	nop
  4221c0:	8fdc0018 	lw	gp,24(s8)
  4221c4:	00000000 	nop

004221c8 <extra_debugging>:
  4221c8:	3c1c0fbf 	lui	gp,0xfbf
  4221cc:	279ca7a8 	addiu	gp,gp,-22616
  4221d0:	0399e021 	addu	gp,gp,t9
  4221d4:	27bdffd8 	addiu	sp,sp,-40
  4221d8:	afbc0010 	sw	gp,16(sp)
  4221dc:	afbf0020 	sw	ra,32(sp)
  4221e0:	afbe001c 	sw	s8,28(sp)
  4221e4:	afbc0018 	sw	gp,24(sp)
  4221e8:	03a0f021 	move	s8,sp
  4221ec:	afc40028 	sw	a0,40(s8)
}

unsigned int
    base_debugging = DBG_NONE,	/* default to reporting nothing */
    cur_debugging =  DBG_NONE;

void
extra_debugging(const struct connection *c)
{
    if (c->extra_debugging != 0)
  4221f0:	8fc20028 	lw	v0,40(s8)
  4221f4:	00000000 	nop
  4221f8:	8c4201b0 	lw	v0,432(v0)
  4221fc:	00000000 	nop
  422200:	1040002b 	beqz	v0,4222b0 <extra_debugging+0xe8>
  422204:	00000000 	nop
    {
	plog("enabling for connection: %s"
  422208:	8f8284f8 	lw	v0,-31496(gp)
  42220c:	00000000 	nop
  422210:	8c420000 	lw	v0,0(v0)
  422214:	00000000 	nop
  422218:	00021827 	nor	v1,zero,v0
  42221c:	8fc20028 	lw	v0,40(s8)
  422220:	00000000 	nop
  422224:	8c4201b0 	lw	v0,432(v0)
  422228:	00000000 	nop
  42222c:	00622024 	and	a0,v1,v0
  422230:	00801821 	move	v1,a0
  422234:	00001021 	move	v0,zero
  422238:	8f848b98 	lw	a0,-29800(gp)
  42223c:	00403021 	move	a2,v0
  422240:	00603821 	move	a3,v1
  422244:	8f9988c4 	lw	t9,-30524(gp)
  422248:	00000000 	nop
  42224c:	0320f809 	jalr	t9
  422250:	00000000 	nop
  422254:	8fdc0010 	lw	gp,16(s8)
  422258:	00000000 	nop
  42225c:	8f84802c 	lw	a0,-32724(gp)
  422260:	00000000 	nop
  422264:	2484a59c 	addiu	a0,a0,-23140
  422268:	00402821 	move	a1,v0
  42226c:	8f998abc 	lw	t9,-30020(gp)
  422270:	00000000 	nop
  422274:	0320f809 	jalr	t9
  422278:	00000000 	nop
  42227c:	8fdc0010 	lw	gp,16(s8)
  422280:	00000000 	nop
	    , bitnamesof(debug_bit_names, c->extra_debugging & ~cur_debugging));
	cur_debugging |= c->extra_debugging;
  422284:	8fc20028 	lw	v0,40(s8)
  422288:	00000000 	nop
  42228c:	8c4301b0 	lw	v1,432(v0)
  422290:	8f8284f8 	lw	v0,-31496(gp)
  422294:	00000000 	nop
  422298:	8c420000 	lw	v0,0(v0)
  42229c:	00000000 	nop
  4222a0:	00431025 	or	v0,v0,v1
  4222a4:	8f8184f8 	lw	at,-31496(gp)
  4222a8:	00000000 	nop
  4222ac:	ac220000 	sw	v0,0(at)
    }
}
  4222b0:	03c0e821 	move	sp,s8
  4222b4:	8fbf0020 	lw	ra,32(sp)
  4222b8:	8fbe001c 	lw	s8,28(sp)
  4222bc:	27bd0028 	addiu	sp,sp,40
  4222c0:	03e00008 	jr	ra
  4222c4:	00000000 	nop

004222c8 <DBG_log>:
  4222c8:	3c1c0fbf 	lui	gp,0xfbf
  4222cc:	279ca6a8 	addiu	gp,gp,-22872
  4222d0:	0399e021 	addu	gp,gp,t9
  4222d4:	27bdfbd0 	addiu	sp,sp,-1072
  4222d8:	afbc0010 	sw	gp,16(sp)
  4222dc:	afa40430 	sw	a0,1072(sp)
  4222e0:	afa50434 	sw	a1,1076(sp)
  4222e4:	afa60438 	sw	a2,1080(sp)
  4222e8:	afa7043c 	sw	a3,1084(sp)
  4222ec:	afbf0428 	sw	ra,1064(sp)
  4222f0:	afbe0424 	sw	s8,1060(sp)
  4222f4:	afbc0420 	sw	gp,1056(sp)
  4222f8:	03a0f021 	move	s8,sp
  4222fc:	afc40430 	sw	a0,1072(s8)

/* log a debugging message (prefixed by "| ") */

void
DBG_log(const char *message, ...)
{
    va_list args;
    char m[1024];	/* longer messages will be truncated */

    va_start(args, message);
  422300:	27c20434 	addiu	v0,s8,1076
  422304:	afc20018 	sw	v0,24(s8)
    vsnprintf(m, sizeof(m), message, args);
  422308:	27c40020 	addiu	a0,s8,32
  42230c:	24050400 	li	a1,1024
  422310:	8fc60430 	lw	a2,1072(s8)
  422314:	8fc70018 	lw	a3,24(s8)
  422318:	8f998990 	lw	t9,-30320(gp)
  42231c:	00000000 	nop
  422320:	0320f809 	jalr	t9
  422324:	00000000 	nop
  422328:	8fdc0010 	lw	gp,16(s8)
  42232c:	00000000 	nop
    va_end(args);

    (void)sanitize(m, sizeof(m));
  422330:	27c40020 	addiu	a0,s8,32
  422334:	24050400 	li	a1,1024
  422338:	8f998028 	lw	t9,-32728(gp)
  42233c:	00000000 	nop
  422340:	273910ac 	addiu	t9,t9,4268
  422344:	00000000 	nop
  422348:	0320f809 	jalr	t9
  42234c:	00000000 	nop
  422350:	8fdc0010 	lw	gp,16(s8)
  422354:	00000000 	nop

    if (log_to_stderr)
  422358:	8f82809c 	lw	v0,-32612(gp)
  42235c:	00000000 	nop
  422360:	8c420000 	lw	v0,0(v0)
  422364:	00000000 	nop
  422368:	1040000e 	beqz	v0,4223a4 <DBG_log+0xdc>
  42236c:	00000000 	nop
	fprintf(stderr, "| %s\n", m);
  422370:	8f84838c 	lw	a0,-31860(gp)
  422374:	00000000 	nop
  422378:	8c840000 	lw	a0,0(a0)
  42237c:	8f85802c 	lw	a1,-32724(gp)
  422380:	00000000 	nop
  422384:	24a5a5b8 	addiu	a1,a1,-23112
  422388:	27c60020 	addiu	a2,s8,32
  42238c:	8f99878c 	lw	t9,-30836(gp)
  422390:	00000000 	nop
  422394:	0320f809 	jalr	t9
  422398:	00000000 	nop
  42239c:	8fdc0010 	lw	gp,16(s8)
  4223a0:	00000000 	nop
    if (log_to_syslog)
  4223a4:	8f828300 	lw	v0,-32000(gp)
  4223a8:	00000000 	nop
  4223ac:	8c420000 	lw	v0,0(v0)
  4223b0:	00000000 	nop
  4223b4:	1040000c 	beqz	v0,4223e8 <DBG_log+0x120>
  4223b8:	00000000 	nop
	syslog(LOG_DEBUG, "| %s", m);
  4223bc:	24040007 	li	a0,7
  4223c0:	8f85802c 	lw	a1,-32724(gp)
  4223c4:	00000000 	nop
  4223c8:	24a5a5c0 	addiu	a1,a1,-23104
  4223cc:	27c60020 	addiu	a2,s8,32
  4223d0:	8f998484 	lw	t9,-31612(gp)
  4223d4:	00000000 	nop
  4223d8:	0320f809 	jalr	t9
  4223dc:	00000000 	nop
  4223e0:	8fdc0010 	lw	gp,16(s8)
  4223e4:	00000000 	nop
}
  4223e8:	03c0e821 	move	sp,s8
  4223ec:	8fbf0428 	lw	ra,1064(sp)
  4223f0:	8fbe0424 	lw	s8,1060(sp)
  4223f4:	27bd0430 	addiu	sp,sp,1072
  4223f8:	03e00008 	jr	ra
  4223fc:	00000000 	nop

00422400 <DBG_dump>:
  422400:	3c1c0fbf 	lui	gp,0xfbf
  422404:	279ca570 	addiu	gp,gp,-23184
  422408:	0399e021 	addu	gp,gp,t9
  42240c:	27bdff78 	addiu	sp,sp,-136
  422410:	afbc0010 	sw	gp,16(sp)
  422414:	afbf0080 	sw	ra,128(sp)
  422418:	afbe007c 	sw	s8,124(sp)
  42241c:	afbc0078 	sw	gp,120(sp)
  422420:	03a0f021 	move	s8,sp
  422424:	afc40088 	sw	a0,136(s8)
  422428:	afc5008c 	sw	a1,140(s8)
  42242c:	afc60090 	sw	a2,144(s8)

/* dump raw bytes in hex to stderr (for lack of any better destination) */

void
DBG_dump(const char *label, const void *p, size_t len)
{
#   define DUMP_LABEL_WIDTH 20	/* arbitrary modest boundary */
#   define DUMP_WIDTH	(4 * (1 + 4 * 3) + 1)
    char buf[DUMP_LABEL_WIDTH + DUMP_WIDTH];
    char *bp;
    const unsigned char *cp = p;
  422430:	8fc2008c 	lw	v0,140(s8)
  422434:	00000000 	nop
  422438:	afc2006c 	sw	v0,108(s8)

    bp = buf;
  42243c:	27c20018 	addiu	v0,s8,24
  422440:	afc20068 	sw	v0,104(s8)

    if (label != NULL && label[0] != '\0')
  422444:	8fc20088 	lw	v0,136(s8)
  422448:	00000000 	nop
  42244c:	10400056 	beqz	v0,4225a8 <DBG_dump+0x1a8>
  422450:	00000000 	nop
  422454:	8fc20088 	lw	v0,136(s8)
  422458:	00000000 	nop
  42245c:	80420000 	lb	v0,0(v0)
  422460:	00000000 	nop
  422464:	10400050 	beqz	v0,4225a8 <DBG_dump+0x1a8>
  422468:	00000000 	nop
    {
	/* Handle the label.  Care must be taken to avoid buffer overrun. */
	size_t llen = strlen(label);
  42246c:	8fc40088 	lw	a0,136(s8)
  422470:	8f998188 	lw	t9,-32376(gp)
  422474:	00000000 	nop
  422478:	0320f809 	jalr	t9
  42247c:	00000000 	nop
  422480:	8fdc0010 	lw	gp,16(s8)
  422484:	afc20070 	sw	v0,112(s8)

	if (llen + 1 > sizeof(buf))
  422488:	8fc20070 	lw	v0,112(s8)
  42248c:	00000000 	nop
  422490:	24420001 	addiu	v0,v0,1
  422494:	2c42004a 	sltiu	v0,v0,74
  422498:	1440000c 	bnez	v0,4224cc <DBG_dump+0xcc>
  42249c:	00000000 	nop
	{
	    DBG_log("%s", label);
  4224a0:	8f84802c 	lw	a0,-32724(gp)
  4224a4:	00000000 	nop
  4224a8:	2484a478 	addiu	a0,a0,-23432
  4224ac:	8fc50088 	lw	a1,136(s8)
  4224b0:	8f9983b8 	lw	t9,-31816(gp)
  4224b4:	00000000 	nop
  4224b8:	0320f809 	jalr	t9
  4224bc:	00000000 	nop
  4224c0:	8fdc0010 	lw	gp,16(s8)
  4224c4:	10000038 	b	4225a8 <DBG_dump+0x1a8>
  4224c8:	00000000 	nop
	}
	else
	{
	    strcpy(buf, label);
  4224cc:	27c40018 	addiu	a0,s8,24
  4224d0:	8fc50088 	lw	a1,136(s8)
  4224d4:	8f998c58 	lw	t9,-29608(gp)
  4224d8:	00000000 	nop
  4224dc:	0320f809 	jalr	t9
  4224e0:	00000000 	nop
  4224e4:	8fdc0010 	lw	gp,16(s8)
  4224e8:	00000000 	nop
	    if (buf[llen-1] == '\n')
  4224ec:	8fc20070 	lw	v0,112(s8)
  4224f0:	00000000 	nop
  4224f4:	2443ffff 	addiu	v1,v0,-1
  4224f8:	27c20018 	addiu	v0,s8,24
  4224fc:	00431021 	addu	v0,v0,v1
  422500:	80430000 	lb	v1,0(v0)
  422504:	2402000a 	li	v0,10
  422508:	14620012 	bne	v1,v0,422554 <DBG_dump+0x154>
  42250c:	00000000 	nop
	    {
		buf[llen-1] = '\0';	/* get rid of newline */
  422510:	8fc20070 	lw	v0,112(s8)
  422514:	00000000 	nop
  422518:	2443ffff 	addiu	v1,v0,-1
  42251c:	27c20018 	addiu	v0,s8,24
  422520:	00431021 	addu	v0,v0,v1
  422524:	a0400000 	sb	zero,0(v0)
		DBG_log("%s", buf);
  422528:	8f84802c 	lw	a0,-32724(gp)
  42252c:	00000000 	nop
  422530:	2484a478 	addiu	a0,a0,-23432
  422534:	27c50018 	addiu	a1,s8,24
  422538:	8f9983b8 	lw	t9,-31816(gp)
  42253c:	00000000 	nop
  422540:	0320f809 	jalr	t9
  422544:	00000000 	nop
  422548:	8fdc0010 	lw	gp,16(s8)
  42254c:	10000016 	b	4225a8 <DBG_dump+0x1a8>
  422550:	00000000 	nop
	    }
	    else if (llen < DUMP_LABEL_WIDTH)
  422554:	8fc20070 	lw	v0,112(s8)
  422558:	00000000 	nop
  42255c:	2c420014 	sltiu	v0,v0,20
  422560:	10400008 	beqz	v0,422584 <DBG_dump+0x184>
  422564:	00000000 	nop
	    {
		bp = buf + llen;
  422568:	27c20018 	addiu	v0,s8,24
  42256c:	8fc30070 	lw	v1,112(s8)
  422570:	00000000 	nop
  422574:	00431021 	addu	v0,v0,v1
  422578:	afc20068 	sw	v0,104(s8)
  42257c:	1000000a 	b	4225a8 <DBG_dump+0x1a8>
  422580:	00000000 	nop
	    }
	    else
	    {
		DBG_log("%s", buf);
  422584:	8f84802c 	lw	a0,-32724(gp)
  422588:	00000000 	nop
  42258c:	2484a478 	addiu	a0,a0,-23432
  422590:	27c50018 	addiu	a1,s8,24
  422594:	8f9983b8 	lw	t9,-31816(gp)
  422598:	00000000 	nop
  42259c:	0320f809 	jalr	t9
  4225a0:	00000000 	nop
  4225a4:	8fdc0010 	lw	gp,16(s8)
  4225a8:	00000000 	nop
	    }
	}
    }

    do {
	int i, j;

	for (i = 0; len!=0 && i!=4; i++) {
  4225ac:	afc00070 	sw	zero,112(s8)
  4225b0:	8fc20090 	lw	v0,144(s8)
  4225b4:	00000000 	nop
  4225b8:	1040005b 	beqz	v0,422728 <DBG_dump+0x328>
  4225bc:	00000000 	nop
  4225c0:	8fc30070 	lw	v1,112(s8)
  4225c4:	24020004 	li	v0,4
  4225c8:	14620003 	bne	v1,v0,4225d8 <DBG_dump+0x1d8>
  4225cc:	00000000 	nop
  4225d0:	10000055 	b	422728 <DBG_dump+0x328>
  4225d4:	00000000 	nop
	    *bp++ = ' ';
  4225d8:	27c50068 	addiu	a1,s8,104
  4225dc:	8ca20000 	lw	v0,0(a1)
  4225e0:	00000000 	nop
  4225e4:	00402021 	move	a0,v0
  4225e8:	24030020 	li	v1,32
  4225ec:	a0830000 	sb	v1,0(a0)
  4225f0:	24420001 	addiu	v0,v0,1
  4225f4:	aca20000 	sw	v0,0(a1)
	    for (j = 0; len!=0 && j!=4; len--, j++)
  4225f8:	afc00074 	sw	zero,116(s8)
  4225fc:	8fc20090 	lw	v0,144(s8)
  422600:	00000000 	nop
  422604:	10400042 	beqz	v0,422710 <DBG_dump+0x310>
  422608:	00000000 	nop
  42260c:	8fc30074 	lw	v1,116(s8)
  422610:	24020004 	li	v0,4
  422614:	14620003 	bne	v1,v0,422624 <DBG_dump+0x224>
  422618:	00000000 	nop
  42261c:	1000003c 	b	422710 <DBG_dump+0x310>
  422620:	00000000 	nop
	    {
		static const char hexdig[] = "0123456789abcdef";

		*bp++ = ' ';
  422624:	27c50068 	addiu	a1,s8,104
  422628:	8ca20000 	lw	v0,0(a1)
  42262c:	00000000 	nop
  422630:	00402021 	move	a0,v0
  422634:	24030020 	li	v1,32
  422638:	a0830000 	sb	v1,0(a0)
  42263c:	24420001 	addiu	v0,v0,1
  422640:	aca20000 	sw	v0,0(a1)
		*bp++ = hexdig[(*cp >> 4) & 0xF];
  422644:	27c50068 	addiu	a1,s8,104
  422648:	8ca40000 	lw	a0,0(a1)
  42264c:	8fc2006c 	lw	v0,108(s8)
  422650:	00000000 	nop
  422654:	90420000 	lbu	v0,0(v0)
  422658:	00000000 	nop
  42265c:	00021102 	srl	v0,v0,0x4
  422660:	3042000f 	andi	v0,v0,0xf
  422664:	304200ff 	andi	v0,v0,0xff
  422668:	8f81802c 	lw	at,-32724(gp)
  42266c:	00000000 	nop
  422670:	2421a5c8 	addiu	at,at,-23096
  422674:	00221021 	addu	v0,at,v0
  422678:	00801821 	move	v1,a0
  42267c:	90420000 	lbu	v0,0(v0)
  422680:	00000000 	nop
  422684:	a0620000 	sb	v0,0(v1)
  422688:	24840001 	addiu	a0,a0,1
  42268c:	aca40000 	sw	a0,0(a1)
		*bp++ = hexdig[*cp & 0xF];
  422690:	27c50068 	addiu	a1,s8,104
  422694:	8ca30000 	lw	v1,0(a1)
  422698:	8fc2006c 	lw	v0,108(s8)
  42269c:	00000000 	nop
  4226a0:	90420000 	lbu	v0,0(v0)
  4226a4:	00000000 	nop
  4226a8:	3042000f 	andi	v0,v0,0xf
  4226ac:	304200ff 	andi	v0,v0,0xff
  4226b0:	8f81802c 	lw	at,-32724(gp)
  4226b4:	00000000 	nop
  4226b8:	2421a5c8 	addiu	at,at,-23096
  4226bc:	00221021 	addu	v0,at,v0
  4226c0:	00602021 	move	a0,v1
  4226c4:	90420000 	lbu	v0,0(v0)
  4226c8:	00000000 	nop
  4226cc:	a0820000 	sb	v0,0(a0)
  4226d0:	24630001 	addiu	v1,v1,1
  4226d4:	aca30000 	sw	v1,0(a1)
		cp++;
  4226d8:	8fc2006c 	lw	v0,108(s8)
  4226dc:	00000000 	nop
  4226e0:	24420001 	addiu	v0,v0,1
  4226e4:	afc2006c 	sw	v0,108(s8)
  4226e8:	8fc20090 	lw	v0,144(s8)
  4226ec:	00000000 	nop
  4226f0:	2442ffff 	addiu	v0,v0,-1
  4226f4:	afc20090 	sw	v0,144(s8)
  4226f8:	8fc20074 	lw	v0,116(s8)
  4226fc:	00000000 	nop
  422700:	24420001 	addiu	v0,v0,1
  422704:	afc20074 	sw	v0,116(s8)
  422708:	1000ffbc 	b	4225fc <DBG_dump+0x1fc>
  42270c:	00000000 	nop
  422710:	8fc20070 	lw	v0,112(s8)
  422714:	00000000 	nop
  422718:	24420001 	addiu	v0,v0,1
  42271c:	afc20070 	sw	v0,112(s8)
  422720:	1000ffa3 	b	4225b0 <DBG_dump+0x1b0>
  422724:	00000000 	nop
	    }
	}
	*bp = '\0';
  422728:	8fc20068 	lw	v0,104(s8)
  42272c:	00000000 	nop
  422730:	a0400000 	sb	zero,0(v0)
	DBG_log("%s", buf);
  422734:	8f84802c 	lw	a0,-32724(gp)
  422738:	00000000 	nop
  42273c:	2484a478 	addiu	a0,a0,-23432
  422740:	27c50018 	addiu	a1,s8,24
  422744:	8f9983b8 	lw	t9,-31816(gp)
  422748:	00000000 	nop
  42274c:	0320f809 	jalr	t9
  422750:	00000000 	nop
  422754:	8fdc0010 	lw	gp,16(s8)
  422758:	00000000 	nop
	bp = buf;
  42275c:	27c20018 	addiu	v0,s8,24
  422760:	afc20068 	sw	v0,104(s8)
    } while (len != 0);
  422764:	8fc20090 	lw	v0,144(s8)
  422768:	00000000 	nop
  42276c:	1440ff8f 	bnez	v0,4225ac <DBG_dump+0x1ac>
  422770:	00000000 	nop
#   undef DUMP_LABEL_WIDTH
#   undef DUMP_WIDTH
}
  422774:	03c0e821 	move	sp,s8
  422778:	8fbf0080 	lw	ra,128(sp)
  42277c:	8fbe007c 	lw	s8,124(sp)
  422780:	27bd0088 	addiu	sp,sp,136
  422784:	03e00008 	jr	ra
  422788:	00000000 	nop

0042278c <ip_str>:
  42278c:	3c1c0fbf 	lui	gp,0xfbf
  422790:	279ca1e4 	addiu	gp,gp,-24092
  422794:	0399e021 	addu	gp,gp,t9
  422798:	27bdffd8 	addiu	sp,sp,-40
  42279c:	afbc0010 	sw	gp,16(sp)
  4227a0:	afbf0020 	sw	ra,32(sp)
  4227a4:	afbe001c 	sw	s8,28(sp)
  4227a8:	afbc0018 	sw	gp,24(sp)
  4227ac:	03a0f021 	move	s8,sp
  4227b0:	afc40028 	sw	a0,40(s8)

#endif /* DEBUG */


/* ip_str: a simple to use variant of addrtot.
 * It stores its result in a static buffer.
 * This means that newer calls overwrite the storage of older calls.
 * Note: this is not used in any of the logging functions, so their
 * callers may use it.
 */
const char *
ip_str(const ip_address *src)
{
    static char buf[ADDRTOT_BUF];

    addrtot(src, 0, buf, sizeof(buf));
  4227b4:	8fc40028 	lw	a0,40(s8)
  4227b8:	00002821 	move	a1,zero
  4227bc:	8f868018 	lw	a2,-32744(gp)
  4227c0:	00000000 	nop
  4227c4:	24c666a0 	addiu	a2,a2,26272
  4227c8:	24070049 	li	a3,73
  4227cc:	8f998b50 	lw	t9,-29872(gp)
  4227d0:	00000000 	nop
  4227d4:	0320f809 	jalr	t9
  4227d8:	00000000 	nop
  4227dc:	8fdc0010 	lw	gp,16(s8)
  4227e0:	00000000 	nop
    return buf;
  4227e4:	8f828018 	lw	v0,-32744(gp)
  4227e8:	00000000 	nop
  4227ec:	244266a0 	addiu	v0,v0,26272
  4227f0:	00000000 	nop
}
  4227f4:	03c0e821 	move	sp,s8
  4227f8:	8fbf0020 	lw	ra,32(sp)
  4227fc:	8fbe001c 	lw	s8,28(sp)
  422800:	27bd0028 	addiu	sp,sp,40
  422804:	03e00008 	jr	ra
  422808:	00000000 	nop
  42280c:	00000000 	nop

00422810 <reserve_msgid>:
  422810:	3c1c0fbf 	lui	gp,0xfbf
  422814:	279ca160 	addiu	gp,gp,-24224
  422818:	0399e021 	addu	gp,gp,t9
  42281c:	27bdffd0 	addiu	sp,sp,-48
  422820:	afbc0010 	sw	gp,16(sp)
  422824:	afbf0028 	sw	ra,40(sp)
  422828:	afbe0024 	sw	s8,36(sp)
  42282c:	afbc0020 	sw	gp,32(sp)
  422830:	03a0f021 	move	s8,sp
  422834:	afc40030 	sw	a0,48(s8)
  422838:	afc50034 	sw	a1,52(s8)
reserve_msgid(struct state *isakmp_sa, msgid_t msgid)
{
    struct msgid_list *p;

    passert(IS_ISAKMP_SA_ESTABLISHED(isakmp_sa->st_state));
  42283c:	8fc20030 	lw	v0,48(s8)
  422840:	00000000 	nop
  422844:	8c43014c 	lw	v1,332(v0)
  422848:	24020009 	li	v0,9
  42284c:	1062002c 	beq	v1,v0,422900 <reserve_msgid+0xf0>
  422850:	00000000 	nop
  422854:	8fc20030 	lw	v0,48(s8)
  422858:	00000000 	nop
  42285c:	8c43014c 	lw	v1,332(v0)
  422860:	2402000a 	li	v0,10
  422864:	10620026 	beq	v1,v0,422900 <reserve_msgid+0xf0>
  422868:	00000000 	nop
  42286c:	8fc20030 	lw	v0,48(s8)
  422870:	00000000 	nop
  422874:	8c43014c 	lw	v1,332(v0)
  422878:	2402000e 	li	v0,14
  42287c:	10620020 	beq	v1,v0,422900 <reserve_msgid+0xf0>
  422880:	00000000 	nop
  422884:	8fc20030 	lw	v0,48(s8)
  422888:	00000000 	nop
  42288c:	8c43014c 	lw	v1,332(v0)
  422890:	2402000f 	li	v0,15
  422894:	1062001a 	beq	v1,v0,422900 <reserve_msgid+0xf0>
  422898:	00000000 	nop
  42289c:	8fc20030 	lw	v0,48(s8)
  4228a0:	00000000 	nop
  4228a4:	8c43014c 	lw	v1,332(v0)
  4228a8:	24020010 	li	v0,16
  4228ac:	10620014 	beq	v1,v0,422900 <reserve_msgid+0xf0>
  4228b0:	00000000 	nop
  4228b4:	8fc20030 	lw	v0,48(s8)
  4228b8:	00000000 	nop
  4228bc:	8c43014c 	lw	v1,332(v0)
  4228c0:	24020011 	li	v0,17
  4228c4:	1062000e 	beq	v1,v0,422900 <reserve_msgid+0xf0>
  4228c8:	00000000 	nop
  4228cc:	8f84802c 	lw	a0,-32724(gp)
  4228d0:	00000000 	nop
  4228d4:	2484a5e0 	addiu	a0,a0,-23072
  4228d8:	8f85802c 	lw	a1,-32724(gp)
  4228dc:	00000000 	nop
  4228e0:	24a5a610 	addiu	a1,a1,-23024
  4228e4:	2406005c 	li	a2,92
  4228e8:	8f998bb8 	lw	t9,-29768(gp)
  4228ec:	00000000 	nop
  4228f0:	0320f809 	jalr	t9
  4228f4:	00000000 	nop
  4228f8:	8fdc0010 	lw	gp,16(s8)
  4228fc:	00000000 	nop

    for (p = isakmp_sa->st_used_msgids; p != NULL; p = p->next)
  422900:	8fc20030 	lw	v0,48(s8)
  422904:	00000000 	nop
  422908:	8c4200e4 	lw	v0,228(v0)
  42290c:	00000000 	nop
  422910:	afc20018 	sw	v0,24(s8)
  422914:	8fc20018 	lw	v0,24(s8)
  422918:	00000000 	nop
  42291c:	14400003 	bnez	v0,42292c <reserve_msgid+0x11c>
  422920:	00000000 	nop
  422924:	10000012 	b	422970 <reserve_msgid+0x160>
  422928:	00000000 	nop
	if (p->msgid == msgid)
  42292c:	8fc20018 	lw	v0,24(s8)
  422930:	00000000 	nop
  422934:	8c430000 	lw	v1,0(v0)
  422938:	8fc20034 	lw	v0,52(s8)
  42293c:	00000000 	nop
  422940:	14620004 	bne	v1,v0,422954 <reserve_msgid+0x144>
  422944:	00000000 	nop
	    return FALSE;
  422948:	00001021 	move	v0,zero
  42294c:	10000021 	b	4229d4 <reserve_msgid+0x1c4>
  422950:	00000000 	nop
  422954:	8fc20018 	lw	v0,24(s8)
  422958:	00000000 	nop
  42295c:	8c420004 	lw	v0,4(v0)
  422960:	00000000 	nop
  422964:	afc20018 	sw	v0,24(s8)
  422968:	1000ffea 	b	422914 <reserve_msgid+0x104>
  42296c:	00000000 	nop

    p = alloc_thing(struct msgid_list, "msgid");
  422970:	24040008 	li	a0,8
  422974:	8f85802c 	lw	a1,-32724(gp)
  422978:	00000000 	nop
  42297c:	24a5a618 	addiu	a1,a1,-23016
  422980:	8f998084 	lw	t9,-32636(gp)
  422984:	00000000 	nop
  422988:	0320f809 	jalr	t9
  42298c:	00000000 	nop
  422990:	8fdc0010 	lw	gp,16(s8)
  422994:	afc20018 	sw	v0,24(s8)
    p->msgid = msgid;
  422998:	8fc30034 	lw	v1,52(s8)
  42299c:	8fc20018 	lw	v0,24(s8)
  4229a0:	00000000 	nop
  4229a4:	ac430000 	sw	v1,0(v0)
    p->next = isakmp_sa->st_used_msgids;
  4229a8:	8fc20030 	lw	v0,48(s8)
  4229ac:	00000000 	nop
  4229b0:	8c4300e4 	lw	v1,228(v0)
  4229b4:	8fc20018 	lw	v0,24(s8)
  4229b8:	00000000 	nop
  4229bc:	ac430004 	sw	v1,4(v0)
    isakmp_sa->st_used_msgids = p;
  4229c0:	8fc30018 	lw	v1,24(s8)
  4229c4:	8fc20030 	lw	v0,48(s8)
  4229c8:	00000000 	nop
  4229cc:	ac4300e4 	sw	v1,228(v0)
    return TRUE;
  4229d0:	24020001 	li	v0,1
}
  4229d4:	03c0e821 	move	sp,s8
  4229d8:	8fbf0028 	lw	ra,40(sp)
  4229dc:	8fbe0024 	lw	s8,36(sp)
  4229e0:	27bd0030 	addiu	sp,sp,48
  4229e4:	03e00008 	jr	ra
  4229e8:	00000000 	nop

004229ec <generate_msgid>:
  4229ec:	3c1c0fbf 	lui	gp,0xfbf
  4229f0:	279c9f84 	addiu	gp,gp,-24700
  4229f4:	0399e021 	addu	gp,gp,t9
  4229f8:	27bdffd0 	addiu	sp,sp,-48
  4229fc:	afbc0010 	sw	gp,16(sp)
  422a00:	afbf0028 	sw	ra,40(sp)
  422a04:	afbe0024 	sw	s8,36(sp)
  422a08:	afbc0020 	sw	gp,32(sp)
  422a0c:	03a0f021 	move	s8,sp
  422a10:	afc40030 	sw	a0,48(s8)

msgid_t
generate_msgid(struct state *isakmp_sa)
{
    int timeout = 100;	/* only try so hard for unique msgid */
  422a14:	24020064 	li	v0,100
  422a18:	afc20018 	sw	v0,24(s8)
    msgid_t msgid;

    passert(IS_ISAKMP_SA_ESTABLISHED(isakmp_sa->st_state));
  422a1c:	8fc20030 	lw	v0,48(s8)
  422a20:	00000000 	nop
  422a24:	8c43014c 	lw	v1,332(v0)
  422a28:	24020009 	li	v0,9
  422a2c:	1062002b 	beq	v1,v0,422adc <generate_msgid+0xf0>
  422a30:	00000000 	nop
  422a34:	8fc20030 	lw	v0,48(s8)
  422a38:	00000000 	nop
  422a3c:	8c43014c 	lw	v1,332(v0)
  422a40:	2402000a 	li	v0,10
  422a44:	10620025 	beq	v1,v0,422adc <generate_msgid+0xf0>
  422a48:	00000000 	nop
  422a4c:	8fc20030 	lw	v0,48(s8)
  422a50:	00000000 	nop
  422a54:	8c43014c 	lw	v1,332(v0)
  422a58:	2402000e 	li	v0,14
  422a5c:	1062001f 	beq	v1,v0,422adc <generate_msgid+0xf0>
  422a60:	00000000 	nop
  422a64:	8fc20030 	lw	v0,48(s8)
  422a68:	00000000 	nop
  422a6c:	8c43014c 	lw	v1,332(v0)
  422a70:	2402000f 	li	v0,15
  422a74:	10620019 	beq	v1,v0,422adc <generate_msgid+0xf0>
  422a78:	00000000 	nop
  422a7c:	8fc20030 	lw	v0,48(s8)
  422a80:	00000000 	nop
  422a84:	8c43014c 	lw	v1,332(v0)
  422a88:	24020010 	li	v0,16
  422a8c:	10620013 	beq	v1,v0,422adc <generate_msgid+0xf0>
  422a90:	00000000 	nop
  422a94:	8fc20030 	lw	v0,48(s8)
  422a98:	00000000 	nop
  422a9c:	8c43014c 	lw	v1,332(v0)
  422aa0:	24020011 	li	v0,17
  422aa4:	1062000d 	beq	v1,v0,422adc <generate_msgid+0xf0>
  422aa8:	00000000 	nop
  422aac:	8f84802c 	lw	a0,-32724(gp)
  422ab0:	00000000 	nop
  422ab4:	2484a5e0 	addiu	a0,a0,-23072
  422ab8:	8f85802c 	lw	a1,-32724(gp)
  422abc:	00000000 	nop
  422ac0:	24a5a610 	addiu	a1,a1,-23024
  422ac4:	2406006f 	li	a2,111
  422ac8:	8f998bb8 	lw	t9,-29768(gp)
  422acc:	00000000 	nop
  422ad0:	0320f809 	jalr	t9
  422ad4:	00000000 	nop
  422ad8:	8fdc0010 	lw	gp,16(s8)
  422adc:	00000000 	nop

    for (;;)
    {
	get_rnd_bytes((void *) &msgid, sizeof(msgid));
  422ae0:	27c4001c 	addiu	a0,s8,28
  422ae4:	24050004 	li	a1,4
  422ae8:	8f9980bc 	lw	t9,-32580(gp)
  422aec:	00000000 	nop
  422af0:	0320f809 	jalr	t9
  422af4:	00000000 	nop
  422af8:	8fdc0010 	lw	gp,16(s8)
  422afc:	00000000 	nop
	if (msgid != 0 && reserve_msgid(isakmp_sa, msgid))
  422b00:	8fc2001c 	lw	v0,28(s8)
  422b04:	00000000 	nop
  422b08:	1040000c 	beqz	v0,422b3c <generate_msgid+0x150>
  422b0c:	00000000 	nop
  422b10:	8fc40030 	lw	a0,48(s8)
  422b14:	8fc5001c 	lw	a1,28(s8)
  422b18:	8f9982e0 	lw	t9,-32032(gp)
  422b1c:	00000000 	nop
  422b20:	0320f809 	jalr	t9
  422b24:	00000000 	nop
  422b28:	8fdc0010 	lw	gp,16(s8)
  422b2c:	10400003 	beqz	v0,422b3c <generate_msgid+0x150>
  422b30:	00000000 	nop
	    break;
  422b34:	10000011 	b	422b7c <generate_msgid+0x190>
  422b38:	00000000 	nop

	if (--timeout == 0)
  422b3c:	8fc20018 	lw	v0,24(s8)
  422b40:	00000000 	nop
  422b44:	2442ffff 	addiu	v0,v0,-1
  422b48:	afc20018 	sw	v0,24(s8)
  422b4c:	1440ffe4 	bnez	v0,422ae0 <generate_msgid+0xf4>
  422b50:	00000000 	nop
	{
	    plog("gave up looking for unique msgid; using 0x%08lx",
  422b54:	8f84802c 	lw	a0,-32724(gp)
  422b58:	00000000 	nop
  422b5c:	2484a620 	addiu	a0,a0,-23008
  422b60:	8fc5001c 	lw	a1,28(s8)
  422b64:	8f998abc 	lw	t9,-30020(gp)
  422b68:	00000000 	nop
  422b6c:	0320f809 	jalr	t9
  422b70:	00000000 	nop
  422b74:	8fdc0010 	lw	gp,16(s8)
  422b78:	00000000 	nop
		(unsigned long) msgid);
	    break;
	}
    }
    return msgid;
  422b7c:	8fc2001c 	lw	v0,28(s8)
  422b80:	00000000 	nop
}
  422b84:	03c0e821 	move	sp,s8
  422b88:	8fbf0028 	lw	ra,40(sp)
  422b8c:	8fbe0024 	lw	s8,36(sp)
  422b90:	27bd0030 	addiu	sp,sp,48
  422b94:	03e00008 	jr	ra
  422b98:	00000000 	nop

00422b9c <state_hash>:
  422b9c:	3c1c0fbf 	lui	gp,0xfbf
  422ba0:	279c9dd4 	addiu	gp,gp,-25132
  422ba4:	0399e021 	addu	gp,gp,t9
  422ba8:	27bdffc8 	addiu	sp,sp,-56
  422bac:	afbc0010 	sw	gp,16(sp)
  422bb0:	afbf0030 	sw	ra,48(sp)
  422bb4:	afbe002c 	sw	s8,44(sp)
  422bb8:	afbc0028 	sw	gp,40(sp)
  422bbc:	03a0f021 	move	s8,sp
  422bc0:	afc40038 	sw	a0,56(s8)
  422bc4:	afc5003c 	sw	a1,60(s8)
  422bc8:	afc60040 	sw	a2,64(s8)


/* state table functions */

#define STATE_TABLE_SIZE 32

static struct state *statetable[STATE_TABLE_SIZE];

static struct state **
state_hash(const u_char *icookie, const u_char *rcookie, const ip_address *peer)
{
    u_int i = 0, j;
  422bcc:	afc00018 	sw	zero,24(s8)
    const unsigned char *byte_ptr;
    size_t length = addrbytesptr(peer, &byte_ptr);
  422bd0:	8fc40040 	lw	a0,64(s8)
  422bd4:	27c50020 	addiu	a1,s8,32
  422bd8:	8f998768 	lw	t9,-30872(gp)
  422bdc:	00000000 	nop
  422be0:	0320f809 	jalr	t9
  422be4:	00000000 	nop
  422be8:	8fdc0010 	lw	gp,16(s8)
  422bec:	afc20024 	sw	v0,36(s8)

    DBG(DBG_RAW | DBG_CONTROL,
  422bf0:	8f8284f8 	lw	v0,-31496(gp)
  422bf4:	00000000 	nop
  422bf8:	8c420000 	lw	v0,0(v0)
  422bfc:	00000000 	nop
  422c00:	30420011 	andi	v0,v0,0x11
  422c04:	10400022 	beqz	v0,422c90 <state_hash+0xf4>
  422c08:	00000000 	nop
  422c0c:	8f84802c 	lw	a0,-32724(gp)
  422c10:	00000000 	nop
  422c14:	2484a650 	addiu	a0,a0,-22960
  422c18:	8fc50038 	lw	a1,56(s8)
  422c1c:	24060008 	li	a2,8
  422c20:	8f9984ec 	lw	t9,-31508(gp)
  422c24:	00000000 	nop
  422c28:	0320f809 	jalr	t9
  422c2c:	00000000 	nop
  422c30:	8fdc0010 	lw	gp,16(s8)
  422c34:	00000000 	nop
  422c38:	8f84802c 	lw	a0,-32724(gp)
  422c3c:	00000000 	nop
  422c40:	2484a65c 	addiu	a0,a0,-22948
  422c44:	8fc5003c 	lw	a1,60(s8)
  422c48:	24060008 	li	a2,8
  422c4c:	8f9984ec 	lw	t9,-31508(gp)
  422c50:	00000000 	nop
  422c54:	0320f809 	jalr	t9
  422c58:	00000000 	nop
  422c5c:	8fdc0010 	lw	gp,16(s8)
  422c60:	00000000 	nop
  422c64:	8f84802c 	lw	a0,-32724(gp)
  422c68:	00000000 	nop
  422c6c:	2484a668 	addiu	a0,a0,-22936
  422c70:	8fc50020 	lw	a1,32(s8)
  422c74:	8fc60024 	lw	a2,36(s8)
  422c78:	8f9984ec 	lw	t9,-31508(gp)
  422c7c:	00000000 	nop
  422c80:	0320f809 	jalr	t9
  422c84:	00000000 	nop
  422c88:	8fdc0010 	lw	gp,16(s8)
  422c8c:	00000000 	nop
	DBG_dump("ICOOKIE:", icookie, COOKIE_SIZE);
	DBG_dump("RCOOKIE:", rcookie, COOKIE_SIZE);
	DBG_dump("peer:", byte_ptr, length));

    /* XXX the following hash is pretty pathetic */

    for (j = 0; j < COOKIE_SIZE; j++)
  422c90:	afc0001c 	sw	zero,28(s8)
  422c94:	8fc2001c 	lw	v0,28(s8)
  422c98:	00000000 	nop
  422c9c:	2c420008 	sltiu	v0,v0,8
  422ca0:	14400003 	bnez	v0,422cb0 <state_hash+0x114>
  422ca4:	00000000 	nop
  422ca8:	1000001f 	b	422d28 <state_hash+0x18c>
  422cac:	00000000 	nop
	i = i * 407 + icookie[j] + rcookie[j];
  422cb0:	8fc40018 	lw	a0,24(s8)
  422cb4:	00000000 	nop
  422cb8:	00801021 	move	v0,a0
  422cbc:	00021040 	sll	v0,v0,0x1
  422cc0:	00441021 	addu	v0,v0,a0
  422cc4:	00021900 	sll	v1,v0,0x4
  422cc8:	00431021 	addu	v0,v0,v1
  422ccc:	000218c0 	sll	v1,v0,0x3
  422cd0:	00641823 	subu	v1,v1,a0
  422cd4:	8fc40038 	lw	a0,56(s8)
  422cd8:	8fc2001c 	lw	v0,28(s8)
  422cdc:	00000000 	nop
  422ce0:	00821021 	addu	v0,a0,v0
  422ce4:	90420000 	lbu	v0,0(v0)
  422ce8:	00000000 	nop
  422cec:	00622021 	addu	a0,v1,v0
  422cf0:	8fc3003c 	lw	v1,60(s8)
  422cf4:	8fc2001c 	lw	v0,28(s8)
  422cf8:	00000000 	nop
  422cfc:	00621021 	addu	v0,v1,v0
  422d00:	90420000 	lbu	v0,0(v0)
  422d04:	00000000 	nop
  422d08:	00821021 	addu	v0,a0,v0
  422d0c:	afc20018 	sw	v0,24(s8)
  422d10:	8fc2001c 	lw	v0,28(s8)
  422d14:	00000000 	nop
  422d18:	24420001 	addiu	v0,v0,1
  422d1c:	afc2001c 	sw	v0,28(s8)
  422d20:	1000ffdc 	b	422c94 <state_hash+0xf8>
  422d24:	00000000 	nop

    for (j = 0; j < length; j++)
  422d28:	afc0001c 	sw	zero,28(s8)
  422d2c:	8fc2001c 	lw	v0,28(s8)
  422d30:	8fc30024 	lw	v1,36(s8)
  422d34:	00000000 	nop
  422d38:	0043102b 	sltu	v0,v0,v1
  422d3c:	14400003 	bnez	v0,422d4c <state_hash+0x1b0>
  422d40:	00000000 	nop
  422d44:	10000018 	b	422da8 <state_hash+0x20c>
  422d48:	00000000 	nop
	i = i * 613 + byte_ptr[j];
  422d4c:	8fc40018 	lw	a0,24(s8)
  422d50:	00000000 	nop
  422d54:	00801021 	move	v0,a0
  422d58:	000210c0 	sll	v0,v0,0x3
  422d5c:	00441021 	addu	v0,v0,a0
  422d60:	00021900 	sll	v1,v0,0x4
  422d64:	00431021 	addu	v0,v0,v1
  422d68:	00021880 	sll	v1,v0,0x2
  422d6c:	00641821 	addu	v1,v1,a0
  422d70:	8fc40020 	lw	a0,32(s8)
  422d74:	8fc2001c 	lw	v0,28(s8)
  422d78:	00000000 	nop
  422d7c:	00821021 	addu	v0,a0,v0
  422d80:	90420000 	lbu	v0,0(v0)
  422d84:	00000000 	nop
  422d88:	00621021 	addu	v0,v1,v0
  422d8c:	afc20018 	sw	v0,24(s8)
  422d90:	8fc2001c 	lw	v0,28(s8)
  422d94:	00000000 	nop
  422d98:	24420001 	addiu	v0,v0,1
  422d9c:	afc2001c 	sw	v0,28(s8)
  422da0:	1000ffe2 	b	422d2c <state_hash+0x190>
  422da4:	00000000 	nop

    i = i % STATE_TABLE_SIZE;
  422da8:	8fc20018 	lw	v0,24(s8)
  422dac:	00000000 	nop
  422db0:	3042001f 	andi	v0,v0,0x1f
  422db4:	afc20018 	sw	v0,24(s8)

    DBG(DBG_CONTROL, DBG_log("state hash entry %d", i));
  422db8:	8f8284f8 	lw	v0,-31496(gp)
  422dbc:	00000000 	nop
  422dc0:	8c420000 	lw	v0,0(v0)
  422dc4:	00000000 	nop
  422dc8:	30420010 	andi	v0,v0,0x10
  422dcc:	1040000b 	beqz	v0,422dfc <state_hash+0x260>
  422dd0:	00000000 	nop
  422dd4:	8f84802c 	lw	a0,-32724(gp)
  422dd8:	00000000 	nop
  422ddc:	2484a670 	addiu	a0,a0,-22928
  422de0:	8fc50018 	lw	a1,24(s8)
  422de4:	8f9983b8 	lw	t9,-31816(gp)
  422de8:	00000000 	nop
  422dec:	0320f809 	jalr	t9
  422df0:	00000000 	nop
  422df4:	8fdc0010 	lw	gp,16(s8)
  422df8:	00000000 	nop

    return &statetable[i];
  422dfc:	8fc20018 	lw	v0,24(s8)
  422e00:	00000000 	nop
  422e04:	00021080 	sll	v0,v0,0x2
  422e08:	8f818018 	lw	at,-32744(gp)
  422e0c:	00000000 	nop
  422e10:	24216998 	addiu	at,at,27032
  422e14:	00221021 	addu	v0,at,v0
}
  422e18:	03c0e821 	move	sp,s8
  422e1c:	8fbf0030 	lw	ra,48(sp)
  422e20:	8fbe002c 	lw	s8,44(sp)
  422e24:	27bd0038 	addiu	sp,sp,56
  422e28:	03e00008 	jr	ra
  422e2c:	00000000 	nop

00422e30 <new_state>:
  422e30:	3c1c0fbf 	lui	gp,0xfbf
  422e34:	279c9b40 	addiu	gp,gp,-25792
  422e38:	0399e021 	addu	gp,gp,t9
  422e3c:	27bdffd0 	addiu	sp,sp,-48
  422e40:	afbc0010 	sw	gp,16(sp)
  422e44:	afbf0028 	sw	ra,40(sp)
  422e48:	afbe0024 	sw	s8,36(sp)
  422e4c:	afbc0020 	sw	gp,32(sp)
  422e50:	03a0f021 	move	s8,sp

/* Get a state object.
 * Caller must schedule an event for this object so that it doesn't leak.
 * Caller must insert_state().
 */
struct state *
new_state(void)
{
    static const struct state blank_state;	/* initialized all to zero & NULL */
    static so_serial_t next_so = SOS_FIRST;
    struct state *st;

    st = clone_thing(blank_state, "struct state in new_state()");
  422e54:	8f848018 	lw	a0,-32744(gp)
  422e58:	00000000 	nop
  422e5c:	248466f0 	addiu	a0,a0,26352
  422e60:	240502a8 	li	a1,680
  422e64:	8f86802c 	lw	a2,-32724(gp)
  422e68:	00000000 	nop
  422e6c:	24c6a684 	addiu	a2,a2,-22908
  422e70:	8f998c04 	lw	t9,-29692(gp)
  422e74:	00000000 	nop
  422e78:	0320f809 	jalr	t9
  422e7c:	00000000 	nop
  422e80:	8fdc0010 	lw	gp,16(s8)
  422e84:	afc20018 	sw	v0,24(s8)
    st->st_serialno = next_so++;
  422e88:	8f858018 	lw	a1,-32744(gp)
  422e8c:	00000000 	nop
  422e90:	24a51584 	addiu	a1,a1,5508
  422e94:	00000000 	nop
  422e98:	8ca20000 	lw	v0,0(a1)
  422e9c:	00000000 	nop
  422ea0:	00402021 	move	a0,v0
  422ea4:	8fc30018 	lw	v1,24(s8)
  422ea8:	00000000 	nop
  422eac:	ac640000 	sw	a0,0(v1)
  422eb0:	24420001 	addiu	v0,v0,1
  422eb4:	aca20000 	sw	v0,0(a1)
    passert(next_so > SOS_FIRST);	/* overflow can't happen! */
  422eb8:	8f828018 	lw	v0,-32744(gp)
  422ebc:	00000000 	nop
  422ec0:	24421584 	addiu	v0,v0,5508
  422ec4:	8c420000 	lw	v0,0(v0)
  422ec8:	00000000 	nop
  422ecc:	2c420002 	sltiu	v0,v0,2
  422ed0:	1040000e 	beqz	v0,422f0c <new_state+0xdc>
  422ed4:	00000000 	nop
  422ed8:	8f84802c 	lw	a0,-32724(gp)
  422edc:	00000000 	nop
  422ee0:	2484a6a0 	addiu	a0,a0,-22880
  422ee4:	8f85802c 	lw	a1,-32724(gp)
  422ee8:	00000000 	nop
  422eec:	24a5a610 	addiu	a1,a1,-23024
  422ef0:	240600b0 	li	a2,176
  422ef4:	8f998bb8 	lw	t9,-29768(gp)
  422ef8:	00000000 	nop
  422efc:	0320f809 	jalr	t9
  422f00:	00000000 	nop
  422f04:	8fdc0010 	lw	gp,16(s8)
  422f08:	00000000 	nop
    passert(st->st_oakley.xauth == 0);
  422f0c:	8fc20018 	lw	v0,24(s8)
  422f10:	00000000 	nop
  422f14:	9442002e 	lhu	v0,46(v0)
  422f18:	00000000 	nop
  422f1c:	1040000e 	beqz	v0,422f58 <new_state+0x128>
  422f20:	00000000 	nop
  422f24:	8f84802c 	lw	a0,-32724(gp)
  422f28:	00000000 	nop
  422f2c:	2484a6b4 	addiu	a0,a0,-22860
  422f30:	8f85802c 	lw	a1,-32724(gp)
  422f34:	00000000 	nop
  422f38:	24a5a610 	addiu	a1,a1,-23024
  422f3c:	240600b1 	li	a2,177
  422f40:	8f998bb8 	lw	t9,-29768(gp)
  422f44:	00000000 	nop
  422f48:	0320f809 	jalr	t9
  422f4c:	00000000 	nop
  422f50:	8fdc0010 	lw	gp,16(s8)
  422f54:	00000000 	nop
    st->st_whack_sock = NULL_FD;
  422f58:	2403ffff 	li	v1,-1
  422f5c:	8fc20018 	lw	v0,24(s8)
  422f60:	00000000 	nop
  422f64:	ac430014 	sw	v1,20(v0)
    DBG(DBG_CONTROL, DBG_log("creating state object #%lu at %p",
  422f68:	8f8284f8 	lw	v0,-31496(gp)
  422f6c:	00000000 	nop
  422f70:	8c420000 	lw	v0,0(v0)
  422f74:	00000000 	nop
  422f78:	30420010 	andi	v0,v0,0x10
  422f7c:	1040000e 	beqz	v0,422fb8 <new_state+0x188>
  422f80:	00000000 	nop
  422f84:	8f84802c 	lw	a0,-32724(gp)
  422f88:	00000000 	nop
  422f8c:	2484a6d0 	addiu	a0,a0,-22832
  422f90:	8fc20018 	lw	v0,24(s8)
  422f94:	00000000 	nop
  422f98:	8c450000 	lw	a1,0(v0)
  422f9c:	8fc60018 	lw	a2,24(s8)
  422fa0:	8f9983b8 	lw	t9,-31816(gp)
  422fa4:	00000000 	nop
  422fa8:	0320f809 	jalr	t9
  422fac:	00000000 	nop
  422fb0:	8fdc0010 	lw	gp,16(s8)
  422fb4:	00000000 	nop
	st->st_serialno, (void *) st));
    st->st_usage = 1;
  422fb8:	24030001 	li	v1,1
  422fbc:	8fc20018 	lw	v0,24(s8)
  422fc0:	00000000 	nop
  422fc4:	ac430008 	sw	v1,8(v0)
    return st;
  422fc8:	8fc20018 	lw	v0,24(s8)
  422fcc:	00000000 	nop
}
  422fd0:	03c0e821 	move	sp,s8
  422fd4:	8fbf0028 	lw	ra,40(sp)
  422fd8:	8fbe0024 	lw	s8,36(sp)
  422fdc:	27bd0030 	addiu	sp,sp,48
  422fe0:	03e00008 	jr	ra
  422fe4:	00000000 	nop

00422fe8 <init_states>:
  422fe8:	3c1c0fbf 	lui	gp,0xfbf
  422fec:	279c9988 	addiu	gp,gp,-26232
  422ff0:	0399e021 	addu	gp,gp,t9
  422ff4:	27bdffe8 	addiu	sp,sp,-24
  422ff8:	afbc0000 	sw	gp,0(sp)
  422ffc:	afbe0014 	sw	s8,20(sp)
  423000:	afbc0010 	sw	gp,16(sp)
  423004:	03a0f021 	move	s8,sp

/*
 * Initialize the state table (and mask*).
 */
void
init_states(void)
{
    int i;

    for (i = 0; i < STATE_TABLE_SIZE; i++)
  423008:	afc00008 	sw	zero,8(s8)
  42300c:	8fc20008 	lw	v0,8(s8)
  423010:	00000000 	nop
  423014:	28420020 	slti	v0,v0,32
  423018:	14400003 	bnez	v0,423028 <init_states+0x40>
  42301c:	00000000 	nop
  423020:	1000000f 	b	423060 <init_states+0x78>
  423024:	00000000 	nop
	statetable[i] = (struct state *) NULL;
  423028:	8fc20008 	lw	v0,8(s8)
  42302c:	00000000 	nop
  423030:	00021080 	sll	v0,v0,0x2
  423034:	8f818018 	lw	at,-32744(gp)
  423038:	00000000 	nop
  42303c:	24216998 	addiu	at,at,27032
  423040:	00221021 	addu	v0,at,v0
  423044:	ac400000 	sw	zero,0(v0)
  423048:	8fc20008 	lw	v0,8(s8)
  42304c:	00000000 	nop
  423050:	24420001 	addiu	v0,v0,1
  423054:	afc20008 	sw	v0,8(s8)
  423058:	1000ffec 	b	42300c <init_states+0x24>
  42305c:	00000000 	nop
}
  423060:	03c0e821 	move	sp,s8
  423064:	8fbe0014 	lw	s8,20(sp)
  423068:	27bd0018 	addiu	sp,sp,24
  42306c:	03e00008 	jr	ra
  423070:	00000000 	nop

00423074 <state_with_serialno>:
  423074:	3c1c0fbf 	lui	gp,0xfbf
  423078:	279c98fc 	addiu	gp,gp,-26372
  42307c:	0399e021 	addu	gp,gp,t9
  423080:	27bdffe8 	addiu	sp,sp,-24
  423084:	afbc0000 	sw	gp,0(sp)
  423088:	afbe0014 	sw	s8,20(sp)
  42308c:	afbc0010 	sw	gp,16(sp)
  423090:	03a0f021 	move	s8,sp
  423094:	afc40018 	sw	a0,24(s8)

/* Find the state object with this serial number.
 * This allows state object references that don't turn into dangerous
 * dangling pointers: reference a state by its serial number.
 * Returns NULL if there is no such state.
 * If this turns out to be a significant CPU hog, it could be
 * improved to use a hash table rather than sequential seartch.
 */
struct state *
state_with_serialno(so_serial_t sn)
{
    if (sn >= SOS_FIRST)
  423098:	8fc20018 	lw	v0,24(s8)
  42309c:	00000000 	nop
  4230a0:	1040002e 	beqz	v0,42315c <state_with_serialno+0xe8>
  4230a4:	00000000 	nop
    {
	struct state *st;
	int i;

	for (i = 0; i < STATE_TABLE_SIZE; i++)
  4230a8:	afc0000c 	sw	zero,12(s8)
  4230ac:	8fc2000c 	lw	v0,12(s8)
  4230b0:	00000000 	nop
  4230b4:	28420020 	slti	v0,v0,32
  4230b8:	14400003 	bnez	v0,4230c8 <state_with_serialno+0x54>
  4230bc:	00000000 	nop
  4230c0:	10000026 	b	42315c <state_with_serialno+0xe8>
  4230c4:	00000000 	nop
	    for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  4230c8:	8fc2000c 	lw	v0,12(s8)
  4230cc:	00000000 	nop
  4230d0:	00021080 	sll	v0,v0,0x2
  4230d4:	8f818018 	lw	at,-32744(gp)
  4230d8:	00000000 	nop
  4230dc:	24216998 	addiu	at,at,27032
  4230e0:	00221021 	addu	v0,at,v0
  4230e4:	8c420000 	lw	v0,0(v0)
  4230e8:	00000000 	nop
  4230ec:	afc20008 	sw	v0,8(s8)
  4230f0:	8fc20008 	lw	v0,8(s8)
  4230f4:	00000000 	nop
  4230f8:	14400007 	bnez	v0,423118 <state_with_serialno+0xa4>
  4230fc:	00000000 	nop
  423100:	8fc2000c 	lw	v0,12(s8)
  423104:	00000000 	nop
  423108:	24420001 	addiu	v0,v0,1
  42310c:	afc2000c 	sw	v0,12(s8)
  423110:	1000ffe6 	b	4230ac <state_with_serialno+0x38>
  423114:	00000000 	nop
		if (st->st_serialno == sn)
  423118:	8fc20008 	lw	v0,8(s8)
  42311c:	00000000 	nop
  423120:	8c430000 	lw	v1,0(v0)
  423124:	8fc20018 	lw	v0,24(s8)
  423128:	00000000 	nop
  42312c:	14620004 	bne	v1,v0,423140 <state_with_serialno+0xcc>
  423130:	00000000 	nop
		    return st;
  423134:	8fc20008 	lw	v0,8(s8)
  423138:	10000009 	b	423160 <state_with_serialno+0xec>
  42313c:	00000000 	nop
  423140:	8fc20008 	lw	v0,8(s8)
  423144:	00000000 	nop
  423148:	8c42025c 	lw	v0,604(v0)
  42314c:	00000000 	nop
  423150:	afc20008 	sw	v0,8(s8)
  423154:	1000ffe6 	b	4230f0 <state_with_serialno+0x7c>
  423158:	00000000 	nop
    }
    return NULL;
  42315c:	00001021 	move	v0,zero
}
  423160:	03c0e821 	move	sp,s8
  423164:	8fbe0014 	lw	s8,20(sp)
  423168:	27bd0018 	addiu	sp,sp,24
  42316c:	03e00008 	jr	ra
  423170:	00000000 	nop

00423174 <insert_state>:
  423174:	3c1c0fbf 	lui	gp,0xfbf
  423178:	279c97fc 	addiu	gp,gp,-26628
  42317c:	0399e021 	addu	gp,gp,t9
  423180:	27bdffd0 	addiu	sp,sp,-48
  423184:	afbc0010 	sw	gp,16(sp)
  423188:	afbf0028 	sw	ra,40(sp)
  42318c:	afbe0024 	sw	s8,36(sp)
  423190:	afbc0020 	sw	gp,32(sp)
  423194:	03a0f021 	move	s8,sp
  423198:	afc40030 	sw	a0,48(s8)

/* Insert a state object in the hash table. The object is inserted
 * at the begining of list.
 * Needs cookies, connection, and msgid.
 */
void
insert_state(struct state *st)
{
    struct state **p = state_hash(st->st_icookie, st->st_rcookie
  42319c:	8fc20030 	lw	v0,48(s8)
  4231a0:	00000000 	nop
  4231a4:	244400f0 	addiu	a0,v0,240
  4231a8:	8fc20030 	lw	v0,48(s8)
  4231ac:	00000000 	nop
  4231b0:	24430108 	addiu	v1,v0,264
  4231b4:	8fc20030 	lw	v0,48(s8)
  4231b8:	00000000 	nop
  4231bc:	8c42000c 	lw	v0,12(v0)
  4231c0:	00000000 	nop
  4231c4:	24420108 	addiu	v0,v0,264
  4231c8:	00602821 	move	a1,v1
  4231cc:	00403021 	move	a2,v0
  4231d0:	8f998028 	lw	t9,-32728(gp)
  4231d4:	00000000 	nop
  4231d8:	27392b9c 	addiu	t9,t9,11164
  4231dc:	00000000 	nop
  4231e0:	0320f809 	jalr	t9
  4231e4:	00000000 	nop
  4231e8:	8fdc0010 	lw	gp,16(s8)
  4231ec:	afc20018 	sw	v0,24(s8)
	, &st->st_connection->that.host_addr);

    passert(st->st_hashchain_prev == NULL && st->st_hashchain_next == NULL);
  4231f0:	8fc20030 	lw	v0,48(s8)
  4231f4:	00000000 	nop
  4231f8:	8c420260 	lw	v0,608(v0)
  4231fc:	00000000 	nop
  423200:	14400009 	bnez	v0,423228 <insert_state+0xb4>
  423204:	00000000 	nop
  423208:	8fc20030 	lw	v0,48(s8)
  42320c:	00000000 	nop
  423210:	8c42025c 	lw	v0,604(v0)
  423214:	00000000 	nop
  423218:	14400003 	bnez	v0,423228 <insert_state+0xb4>
  42321c:	00000000 	nop
  423220:	1000000e 	b	42325c <insert_state+0xe8>
  423224:	00000000 	nop
  423228:	8f84802c 	lw	a0,-32724(gp)
  42322c:	00000000 	nop
  423230:	2484a6f4 	addiu	a0,a0,-22796
  423234:	8f85802c 	lw	a1,-32724(gp)
  423238:	00000000 	nop
  42323c:	24a5a610 	addiu	a1,a1,-23024
  423240:	240600e6 	li	a2,230
  423244:	8f998bb8 	lw	t9,-29768(gp)
  423248:	00000000 	nop
  42324c:	0320f809 	jalr	t9
  423250:	00000000 	nop
  423254:	8fdc0010 	lw	gp,16(s8)
  423258:	00000000 	nop

    if (*p != NULL)
  42325c:	8fc20018 	lw	v0,24(s8)
  423260:	00000000 	nop
  423264:	8c420000 	lw	v0,0(v0)
  423268:	00000000 	nop
  42326c:	1040001c 	beqz	v0,4232e0 <insert_state+0x16c>
  423270:	00000000 	nop
    {
	passert((*p)->st_hashchain_prev == NULL);
  423274:	8fc20018 	lw	v0,24(s8)
  423278:	00000000 	nop
  42327c:	8c420000 	lw	v0,0(v0)
  423280:	00000000 	nop
  423284:	8c420260 	lw	v0,608(v0)
  423288:	00000000 	nop
  42328c:	1040000e 	beqz	v0,4232c8 <insert_state+0x154>
  423290:	00000000 	nop
  423294:	8f84802c 	lw	a0,-32724(gp)
  423298:	00000000 	nop
  42329c:	2484a734 	addiu	a0,a0,-22732
  4232a0:	8f85802c 	lw	a1,-32724(gp)
  4232a4:	00000000 	nop
  4232a8:	24a5a610 	addiu	a1,a1,-23024
  4232ac:	240600ea 	li	a2,234
  4232b0:	8f998bb8 	lw	t9,-29768(gp)
  4232b4:	00000000 	nop
  4232b8:	0320f809 	jalr	t9
  4232bc:	00000000 	nop
  4232c0:	8fdc0010 	lw	gp,16(s8)
  4232c4:	00000000 	nop
	(*p)->st_hashchain_prev = st;
  4232c8:	8fc20018 	lw	v0,24(s8)
  4232cc:	00000000 	nop
  4232d0:	8c430000 	lw	v1,0(v0)
  4232d4:	8fc20030 	lw	v0,48(s8)
  4232d8:	00000000 	nop
  4232dc:	ac620260 	sw	v0,608(v1)
    }
    st->st_hashchain_next = *p;
  4232e0:	8fc20018 	lw	v0,24(s8)
  4232e4:	00000000 	nop
  4232e8:	8c430000 	lw	v1,0(v0)
  4232ec:	8fc20030 	lw	v0,48(s8)
  4232f0:	00000000 	nop
  4232f4:	ac43025c 	sw	v1,604(v0)
    *p = st;
  4232f8:	8fc30030 	lw	v1,48(s8)
  4232fc:	8fc20018 	lw	v0,24(s8)
  423300:	00000000 	nop
  423304:	ac430000 	sw	v1,0(v0)

    /* Ensure that somebody is in charge of killing this state:
     * if no event is scheduled for it, schedule one to discard the state.
     * If nothing goes wrong, this event will be replaced by
     * a more appropriate one.
     */
    if (st->st_event == NULL)
  423308:	8fc20030 	lw	v0,48(s8)
  42330c:	00000000 	nop
  423310:	8c420258 	lw	v0,600(v0)
  423314:	00000000 	nop
  423318:	1440000a 	bnez	v0,423344 <insert_state+0x1d0>
  42331c:	00000000 	nop
	event_schedule(EVENT_SO_DISCARD, 0, st);
  423320:	24040003 	li	a0,3
  423324:	00002821 	move	a1,zero
  423328:	8fc60030 	lw	a2,48(s8)
  42332c:	8f998410 	lw	t9,-31728(gp)
  423330:	00000000 	nop
  423334:	0320f809 	jalr	t9
  423338:	00000000 	nop
  42333c:	8fdc0010 	lw	gp,16(s8)
  423340:	00000000 	nop
}
  423344:	03c0e821 	move	sp,s8
  423348:	8fbf0028 	lw	ra,40(sp)
  42334c:	8fbe0024 	lw	s8,36(sp)
  423350:	27bd0030 	addiu	sp,sp,48
  423354:	03e00008 	jr	ra
  423358:	00000000 	nop

0042335c <unhash_state>:
  42335c:	3c1c0fbf 	lui	gp,0xfbf
  423360:	279c9614 	addiu	gp,gp,-27116
  423364:	0399e021 	addu	gp,gp,t9
  423368:	27bdffd0 	addiu	sp,sp,-48
  42336c:	afbc0010 	sw	gp,16(sp)
  423370:	afbf0028 	sw	ra,40(sp)
  423374:	afbe0024 	sw	s8,36(sp)
  423378:	afbc0020 	sw	gp,32(sp)
  42337c:	03a0f021 	move	s8,sp
  423380:	afc40030 	sw	a0,48(s8)

/* unlink a state object from the hash table, but don't free it
 */
void
unhash_state(struct state *st)
{
    /* unlink from forward chain */
    struct state **p = st->st_hashchain_prev == NULL
  423384:	8fc20030 	lw	v0,48(s8)
  423388:	00000000 	nop
  42338c:	8c420260 	lw	v0,608(v0)
  423390:	00000000 	nop
  423394:	14400018 	bnez	v0,4233f8 <unhash_state+0x9c>
  423398:	00000000 	nop
  42339c:	8fc20030 	lw	v0,48(s8)
  4233a0:	00000000 	nop
  4233a4:	244400f0 	addiu	a0,v0,240
  4233a8:	8fc20030 	lw	v0,48(s8)
  4233ac:	00000000 	nop
  4233b0:	24430108 	addiu	v1,v0,264
  4233b4:	8fc20030 	lw	v0,48(s8)
  4233b8:	00000000 	nop
  4233bc:	8c42000c 	lw	v0,12(v0)
  4233c0:	00000000 	nop
  4233c4:	24420108 	addiu	v0,v0,264
  4233c8:	00602821 	move	a1,v1
  4233cc:	00403021 	move	a2,v0
  4233d0:	8f998028 	lw	t9,-32728(gp)
  4233d4:	00000000 	nop
  4233d8:	27392b9c 	addiu	t9,t9,11164
  4233dc:	00000000 	nop
  4233e0:	0320f809 	jalr	t9
  4233e4:	00000000 	nop
  4233e8:	8fdc0010 	lw	gp,16(s8)
  4233ec:	afc2001c 	sw	v0,28(s8)
  4233f0:	10000007 	b	423410 <unhash_state+0xb4>
  4233f4:	00000000 	nop
  4233f8:	8fc20030 	lw	v0,48(s8)
  4233fc:	00000000 	nop
  423400:	8c420260 	lw	v0,608(v0)
  423404:	00000000 	nop
  423408:	2442025c 	addiu	v0,v0,604
  42340c:	afc2001c 	sw	v0,28(s8)
  423410:	8fc2001c 	lw	v0,28(s8)
  423414:	00000000 	nop
  423418:	afc20018 	sw	v0,24(s8)
	? state_hash(st->st_icookie, st->st_rcookie, &st->st_connection->that.host_addr)
	: &st->st_hashchain_prev->st_hashchain_next;

    /* unlink from forward chain */
    passert(*p == st);
  42341c:	8fc20018 	lw	v0,24(s8)
  423420:	00000000 	nop
  423424:	8c430000 	lw	v1,0(v0)
  423428:	8fc20030 	lw	v0,48(s8)
  42342c:	00000000 	nop
  423430:	1062000e 	beq	v1,v0,42346c <unhash_state+0x110>
  423434:	00000000 	nop
  423438:	8f84802c 	lw	a0,-32724(gp)
  42343c:	00000000 	nop
  423440:	2484a754 	addiu	a0,a0,-22700
  423444:	8f85802c 	lw	a1,-32724(gp)
  423448:	00000000 	nop
  42344c:	24a5a610 	addiu	a1,a1,-23024
  423450:	24060104 	li	a2,260
  423454:	8f998bb8 	lw	t9,-29768(gp)
  423458:	00000000 	nop
  42345c:	0320f809 	jalr	t9
  423460:	00000000 	nop
  423464:	8fdc0010 	lw	gp,16(s8)
  423468:	00000000 	nop
    *p = st->st_hashchain_next;
  42346c:	8fc20030 	lw	v0,48(s8)
  423470:	00000000 	nop
  423474:	8c43025c 	lw	v1,604(v0)
  423478:	8fc20018 	lw	v0,24(s8)
  42347c:	00000000 	nop
  423480:	ac430000 	sw	v1,0(v0)

    /* unlink from backward chain */
    if (st->st_hashchain_next != NULL)
  423484:	8fc20030 	lw	v0,48(s8)
  423488:	00000000 	nop
  42348c:	8c42025c 	lw	v0,604(v0)
  423490:	00000000 	nop
  423494:	1040001f 	beqz	v0,423514 <unhash_state+0x1b8>
  423498:	00000000 	nop
    {
	passert(st->st_hashchain_next->st_hashchain_prev == st);
  42349c:	8fc20030 	lw	v0,48(s8)
  4234a0:	00000000 	nop
  4234a4:	8c42025c 	lw	v0,604(v0)
  4234a8:	00000000 	nop
  4234ac:	8c430260 	lw	v1,608(v0)
  4234b0:	8fc20030 	lw	v0,48(s8)
  4234b4:	00000000 	nop
  4234b8:	1062000e 	beq	v1,v0,4234f4 <unhash_state+0x198>
  4234bc:	00000000 	nop
  4234c0:	8f84802c 	lw	a0,-32724(gp)
  4234c4:	00000000 	nop
  4234c8:	2484a760 	addiu	a0,a0,-22688
  4234cc:	8f85802c 	lw	a1,-32724(gp)
  4234d0:	00000000 	nop
  4234d4:	24a5a610 	addiu	a1,a1,-23024
  4234d8:	2406010a 	li	a2,266
  4234dc:	8f998bb8 	lw	t9,-29768(gp)
  4234e0:	00000000 	nop
  4234e4:	0320f809 	jalr	t9
  4234e8:	00000000 	nop
  4234ec:	8fdc0010 	lw	gp,16(s8)
  4234f0:	00000000 	nop
	st->st_hashchain_next->st_hashchain_prev = st->st_hashchain_prev;
  4234f4:	8fc20030 	lw	v0,48(s8)
  4234f8:	00000000 	nop
  4234fc:	8c43025c 	lw	v1,604(v0)
  423500:	8fc20030 	lw	v0,48(s8)
  423504:	00000000 	nop
  423508:	8c420260 	lw	v0,608(v0)
  42350c:	00000000 	nop
  423510:	ac620260 	sw	v0,608(v1)
    }

    st->st_hashchain_next = st->st_hashchain_prev = NULL;
  423514:	8fc30030 	lw	v1,48(s8)
  423518:	8fc20030 	lw	v0,48(s8)
  42351c:	00000000 	nop
  423520:	ac400260 	sw	zero,608(v0)
  423524:	ac60025c 	sw	zero,604(v1)
}
  423528:	03c0e821 	move	sp,s8
  42352c:	8fbf0028 	lw	ra,40(sp)
  423530:	8fbe0024 	lw	s8,36(sp)
  423534:	27bd0030 	addiu	sp,sp,48
  423538:	03e00008 	jr	ra
  42353c:	00000000 	nop

00423540 <release_whack>:
  423540:	3c1c0fbf 	lui	gp,0xfbf
  423544:	279c9430 	addiu	gp,gp,-27600
  423548:	0399e021 	addu	gp,gp,t9
  42354c:	27bdffd8 	addiu	sp,sp,-40
  423550:	afbc0010 	sw	gp,16(sp)
  423554:	afbf0020 	sw	ra,32(sp)
  423558:	afbe001c 	sw	s8,28(sp)
  42355c:	afbc0018 	sw	gp,24(sp)
  423560:	03a0f021 	move	s8,sp
  423564:	afc40028 	sw	a0,40(s8)

/* Free the Whack socket file descriptor.
 * This has the side effect of telling Whack that we're done.
 */
void
release_whack(struct state *st)
{
    close_any(st->st_whack_sock);
  423568:	8fc20028 	lw	v0,40(s8)
  42356c:	00000000 	nop
  423570:	8c430014 	lw	v1,20(v0)
  423574:	2402ffff 	li	v0,-1
  423578:	1062000d 	beq	v1,v0,4235b0 <release_whack+0x70>
  42357c:	00000000 	nop
  423580:	8fc20028 	lw	v0,40(s8)
  423584:	00000000 	nop
  423588:	8c440014 	lw	a0,20(v0)
  42358c:	8f9980c8 	lw	t9,-32568(gp)
  423590:	00000000 	nop
  423594:	0320f809 	jalr	t9
  423598:	00000000 	nop
  42359c:	8fdc0010 	lw	gp,16(s8)
  4235a0:	2403ffff 	li	v1,-1
  4235a4:	8fc20028 	lw	v0,40(s8)
  4235a8:	00000000 	nop
  4235ac:	ac430014 	sw	v1,20(v0)
}
  4235b0:	03c0e821 	move	sp,s8
  4235b4:	8fbf0020 	lw	ra,32(sp)
  4235b8:	8fbe001c 	lw	s8,28(sp)
  4235bc:	27bd0028 	addiu	sp,sp,40
  4235c0:	03e00008 	jr	ra
  4235c4:	00000000 	nop

004235c8 <delete_state>:
  4235c8:	3c1c0fbf 	lui	gp,0xfbf
  4235cc:	279c93a8 	addiu	gp,gp,-27736
  4235d0:	0399e021 	addu	gp,gp,t9
  4235d4:	27bdffc0 	addiu	sp,sp,-64
  4235d8:	afbc0010 	sw	gp,16(sp)
  4235dc:	afbf0038 	sw	ra,56(sp)
  4235e0:	afbe0034 	sw	s8,52(sp)
  4235e4:	afbc0030 	sw	gp,48(sp)
  4235e8:	03a0f021 	move	s8,sp
  4235ec:	afc40040 	sw	a0,64(s8)

/* delete a state object */
void
delete_state(struct state *st)
{
    struct connection *const c = st->st_connection;
  4235f0:	8fc20040 	lw	v0,64(s8)
  4235f4:	00000000 	nop
  4235f8:	8c42000c 	lw	v0,12(v0)
  4235fc:	00000000 	nop
  423600:	afc20018 	sw	v0,24(s8)
    struct state *old_cur_state = cur_state == st? NULL : cur_state;
  423604:	8f8387f8 	lw	v1,-30728(gp)
  423608:	00000000 	nop
  42360c:	8c630000 	lw	v1,0(v1)
  423610:	8fc20040 	lw	v0,64(s8)
  423614:	00000000 	nop
  423618:	10620008 	beq	v1,v0,42363c <delete_state+0x74>
  42361c:	00000000 	nop
  423620:	8f8287f8 	lw	v0,-30728(gp)
  423624:	00000000 	nop
  423628:	8c420000 	lw	v0,0(v0)
  42362c:	00000000 	nop
  423630:	afc20028 	sw	v0,40(s8)
  423634:	10000002 	b	423640 <delete_state+0x78>
  423638:	00000000 	nop
  42363c:	afc00028 	sw	zero,40(s8)
  423640:	8fc20028 	lw	v0,40(s8)
  423644:	00000000 	nop
  423648:	afc2001c 	sw	v0,28(s8)

#if 0
    /* MCR still thinking about this one */
    /* only delete if usage is now zero */
    if(--st->st_usage > 0) {
      return;
    }
#endif

    set_cur_state(st);
  42364c:	8fc20040 	lw	v0,64(s8)
  423650:	8f8187f8 	lw	at,-30728(gp)
  423654:	00000000 	nop
  423658:	ac220000 	sw	v0,0(at)
  42365c:	8fc20040 	lw	v0,64(s8)
  423660:	00000000 	nop
  423664:	8c44000c 	lw	a0,12(v0)
  423668:	8f998be4 	lw	t9,-29724(gp)
  42366c:	00000000 	nop
  423670:	0320f809 	jalr	t9
  423674:	00000000 	nop
  423678:	8fdc0010 	lw	gp,16(s8)
  42367c:	00000000 	nop
#ifdef DPD
    if(st->st_dpd_event != NULL)
  423680:	8fc20040 	lw	v0,64(s8)
  423684:	00000000 	nop
  423688:	8c420298 	lw	v0,664(v0)
  42368c:	00000000 	nop
  423690:	10400008 	beqz	v0,4236b4 <delete_state+0xec>
  423694:	00000000 	nop
	    delete_dpd_event(st);
  423698:	8fc40040 	lw	a0,64(s8)
  42369c:	8f998794 	lw	t9,-30828(gp)
  4236a0:	00000000 	nop
  4236a4:	0320f809 	jalr	t9
  4236a8:	00000000 	nop
  4236ac:	8fdc0010 	lw	gp,16(s8)
  4236b0:	00000000 	nop
#endif

    /* if there is a suspended state transition, disconnect us */
    if (st->st_suspended_md != NULL)
  4236b4:	8fc20040 	lw	v0,64(s8)
  4236b8:	00000000 	nop
  4236bc:	8c420018 	lw	v0,24(v0)
  4236c0:	00000000 	nop
  4236c4:	1040001c 	beqz	v0,423738 <delete_state+0x170>
  4236c8:	00000000 	nop
    {
	passert(st->st_suspended_md->st == st);
  4236cc:	8fc20040 	lw	v0,64(s8)
  4236d0:	00000000 	nop
  4236d4:	8c420018 	lw	v0,24(v0)
  4236d8:	00000000 	nop
  4236dc:	8c430098 	lw	v1,152(v0)
  4236e0:	8fc20040 	lw	v0,64(s8)
  4236e4:	00000000 	nop
  4236e8:	1062000e 	beq	v1,v0,423724 <delete_state+0x15c>
  4236ec:	00000000 	nop
  4236f0:	8f84802c 	lw	a0,-32724(gp)
  4236f4:	00000000 	nop
  4236f8:	2484a790 	addiu	a0,a0,-22640
  4236fc:	8f85802c 	lw	a1,-32724(gp)
  423700:	00000000 	nop
  423704:	24a5a610 	addiu	a1,a1,-23024
  423708:	24060132 	li	a2,306
  42370c:	8f998bb8 	lw	t9,-29768(gp)
  423710:	00000000 	nop
  423714:	0320f809 	jalr	t9
  423718:	00000000 	nop
  42371c:	8fdc0010 	lw	gp,16(s8)
  423720:	00000000 	nop
	st->st_suspended_md->st = NULL;
  423724:	8fc20040 	lw	v0,64(s8)
  423728:	00000000 	nop
  42372c:	8c420018 	lw	v0,24(v0)
  423730:	00000000 	nop
  423734:	ac400098 	sw	zero,152(v0)
    }

    /* tell the other side of any IPSEC SAs that are going down */
    if (IS_IPSEC_SA_ESTABLISHED(st->st_state) ||
	IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  423738:	8fc20040 	lw	v0,64(s8)
  42373c:	00000000 	nop
  423740:	8c43014c 	lw	v1,332(v0)
  423744:	24020018 	li	v0,24
  423748:	1062002d 	beq	v1,v0,423800 <delete_state+0x238>
  42374c:	00000000 	nop
  423750:	8fc20040 	lw	v0,64(s8)
  423754:	00000000 	nop
  423758:	8c43014c 	lw	v1,332(v0)
  42375c:	24020019 	li	v0,25
  423760:	10620027 	beq	v1,v0,423800 <delete_state+0x238>
  423764:	00000000 	nop
  423768:	8fc20040 	lw	v0,64(s8)
  42376c:	00000000 	nop
  423770:	8c43014c 	lw	v1,332(v0)
  423774:	24020009 	li	v0,9
  423778:	10620021 	beq	v1,v0,423800 <delete_state+0x238>
  42377c:	00000000 	nop
  423780:	8fc20040 	lw	v0,64(s8)
  423784:	00000000 	nop
  423788:	8c43014c 	lw	v1,332(v0)
  42378c:	2402000a 	li	v0,10
  423790:	1062001b 	beq	v1,v0,423800 <delete_state+0x238>
  423794:	00000000 	nop
  423798:	8fc20040 	lw	v0,64(s8)
  42379c:	00000000 	nop
  4237a0:	8c43014c 	lw	v1,332(v0)
  4237a4:	2402000e 	li	v0,14
  4237a8:	10620015 	beq	v1,v0,423800 <delete_state+0x238>
  4237ac:	00000000 	nop
  4237b0:	8fc20040 	lw	v0,64(s8)
  4237b4:	00000000 	nop
  4237b8:	8c43014c 	lw	v1,332(v0)
  4237bc:	2402000f 	li	v0,15
  4237c0:	1062000f 	beq	v1,v0,423800 <delete_state+0x238>
  4237c4:	00000000 	nop
  4237c8:	8fc20040 	lw	v0,64(s8)
  4237cc:	00000000 	nop
  4237d0:	8c43014c 	lw	v1,332(v0)
  4237d4:	24020010 	li	v0,16
  4237d8:	10620009 	beq	v1,v0,423800 <delete_state+0x238>
  4237dc:	00000000 	nop
  4237e0:	8fc20040 	lw	v0,64(s8)
  4237e4:	00000000 	nop
  4237e8:	8c43014c 	lw	v1,332(v0)
  4237ec:	24020011 	li	v0,17
  4237f0:	10620003 	beq	v1,v0,423800 <delete_state+0x238>
  4237f4:	00000000 	nop
  4237f8:	10000008 	b	42381c <delete_state+0x254>
  4237fc:	00000000 	nop
	send_delete(st);
  423800:	8fc40040 	lw	a0,64(s8)
  423804:	8f9981a0 	lw	t9,-32352(gp)
  423808:	00000000 	nop
  42380c:	0320f809 	jalr	t9
  423810:	00000000 	nop
  423814:	8fdc0010 	lw	gp,16(s8)
  423818:	00000000 	nop

    delete_event(st);	/* delete any pending timer event */
  42381c:	8fc40040 	lw	a0,64(s8)
  423820:	8f9985b4 	lw	t9,-31308(gp)
  423824:	00000000 	nop
  423828:	0320f809 	jalr	t9
  42382c:	00000000 	nop
  423830:	8fdc0010 	lw	gp,16(s8)
  423834:	00000000 	nop

    /* Ditch anything pending on ISAKMP SA being established.
     * Note: this must be done before the unhash_state to prevent
     * flush_pending_by_state inadvertently and prematurely
     * deleting our connection.
     */
    flush_pending_by_state(st);
  423838:	8fc40040 	lw	a0,64(s8)
  42383c:	8f998430 	lw	t9,-31696(gp)
  423840:	00000000 	nop
  423844:	0320f809 	jalr	t9
  423848:	00000000 	nop
  42384c:	8fdc0010 	lw	gp,16(s8)
  423850:	00000000 	nop

    /* effectively, this deletes any ISAKMP SA that this state represents */
    unhash_state(st);
  423854:	8fc40040 	lw	a0,64(s8)
  423858:	8f99883c 	lw	t9,-30660(gp)
  42385c:	00000000 	nop
  423860:	0320f809 	jalr	t9
  423864:	00000000 	nop
  423868:	8fdc0010 	lw	gp,16(s8)
  42386c:	00000000 	nop

    /* tell kernel to delete any IPSEC SA
     * ??? we ought to tell peer to delete IPSEC SAs
     */
    if (IS_IPSEC_SA_ESTABLISHED(st->st_state))
  423870:	8fc20040 	lw	v0,64(s8)
  423874:	00000000 	nop
  423878:	8c43014c 	lw	v1,332(v0)
  42387c:	24020018 	li	v0,24
  423880:	10620009 	beq	v1,v0,4238a8 <delete_state+0x2e0>
  423884:	00000000 	nop
  423888:	8fc20040 	lw	v0,64(s8)
  42388c:	00000000 	nop
  423890:	8c43014c 	lw	v1,332(v0)
  423894:	24020019 	li	v0,25
  423898:	10620003 	beq	v1,v0,4238a8 <delete_state+0x2e0>
  42389c:	00000000 	nop
  4238a0:	1000000a 	b	4238cc <delete_state+0x304>
  4238a4:	00000000 	nop
	delete_ipsec_sa(st, FALSE);
  4238a8:	8fc40040 	lw	a0,64(s8)
  4238ac:	00002821 	move	a1,zero
  4238b0:	8f9989d4 	lw	t9,-30252(gp)
  4238b4:	00000000 	nop
  4238b8:	0320f809 	jalr	t9
  4238bc:	00000000 	nop
  4238c0:	8fdc0010 	lw	gp,16(s8)
  4238c4:	1000000f 	b	423904 <delete_state+0x33c>
  4238c8:	00000000 	nop
    else if (IS_ONLY_INBOUND_IPSEC_SA_ESTABLISHED(st->st_state))
  4238cc:	8fc20040 	lw	v0,64(s8)
  4238d0:	00000000 	nop
  4238d4:	8c43014c 	lw	v1,332(v0)
  4238d8:	24020017 	li	v0,23
  4238dc:	14620009 	bne	v1,v0,423904 <delete_state+0x33c>
  4238e0:	00000000 	nop
	delete_ipsec_sa(st, TRUE);
  4238e4:	8fc40040 	lw	a0,64(s8)
  4238e8:	24050001 	li	a1,1
  4238ec:	8f9989d4 	lw	t9,-30252(gp)
  4238f0:	00000000 	nop
  4238f4:	0320f809 	jalr	t9
  4238f8:	00000000 	nop
  4238fc:	8fdc0010 	lw	gp,16(s8)
  423900:	00000000 	nop

    if (c->newest_ipsec_sa == st->st_serialno)
  423904:	8fc20018 	lw	v0,24(s8)
  423908:	00000000 	nop
  42390c:	8c4301a8 	lw	v1,424(v0)
  423910:	8fc20040 	lw	v0,64(s8)
  423914:	00000000 	nop
  423918:	8c420000 	lw	v0,0(v0)
  42391c:	00000000 	nop
  423920:	14620004 	bne	v1,v0,423934 <delete_state+0x36c>
  423924:	00000000 	nop
	c->newest_ipsec_sa = SOS_NOBODY;
  423928:	8fc20018 	lw	v0,24(s8)
  42392c:	00000000 	nop
  423930:	ac4001a8 	sw	zero,424(v0)

    if (c->newest_isakmp_sa == st->st_serialno) {
  423934:	8fc20018 	lw	v0,24(s8)
  423938:	00000000 	nop
  42393c:	8c4301a4 	lw	v1,420(v0)
  423940:	8fc20040 	lw	v0,64(s8)
  423944:	00000000 	nop
  423948:	8c420000 	lw	v0,0(v0)
  42394c:	00000000 	nop
  423950:	14620004 	bne	v1,v0,423964 <delete_state+0x39c>
  423954:	00000000 	nop
	c->newest_isakmp_sa = SOS_NOBODY;
  423958:	8fc20018 	lw	v0,24(s8)
  42395c:	00000000 	nop
  423960:	ac4001a4 	sw	zero,420(v0)
    } 

    st->st_connection = NULL;	/* we might be about to free it */
  423964:	8fc20040 	lw	v0,64(s8)
  423968:	00000000 	nop
  42396c:	ac40000c 	sw	zero,12(v0)
    cur_state = old_cur_state;	/* without st_connection, st isn't complete */
  423970:	8fc2001c 	lw	v0,28(s8)
  423974:	8f8187f8 	lw	at,-30728(gp)
  423978:	00000000 	nop
  42397c:	ac220000 	sw	v0,0(at)

#if 0
    /* now get rid of any phase 1 associated with this one */
    {
      struct state *p1st;

      if(st->st_clonedfrom != SOS_NOBODY) {
	p1st = state_with_serialno(st->st_clonedfrom);
	st->st_clonedfrom = SOS_NOBODY;
	if(p1st) {
	  delete_state(p1st);
	}
      }
    }
#endif

    connection_discard(c);
  423980:	8fc40018 	lw	a0,24(s8)
  423984:	8f998a2c 	lw	t9,-30164(gp)
  423988:	00000000 	nop
  42398c:	0320f809 	jalr	t9
  423990:	00000000 	nop
  423994:	8fdc0010 	lw	gp,16(s8)
  423998:	00000000 	nop

    release_whack(st);
  42399c:	8fc40040 	lw	a0,64(s8)
  4239a0:	8f998750 	lw	t9,-30896(gp)
  4239a4:	00000000 	nop
  4239a8:	0320f809 	jalr	t9
  4239ac:	00000000 	nop
  4239b0:	8fdc0010 	lw	gp,16(s8)
  4239b4:	00000000 	nop

    /* from here on we are just freeing RAM */

    {
	struct msgid_list *p = st->st_used_msgids;
  4239b8:	8fc20040 	lw	v0,64(s8)
  4239bc:	00000000 	nop
  4239c0:	8c4200e4 	lw	v0,228(v0)
  4239c4:	00000000 	nop
  4239c8:	afc20020 	sw	v0,32(s8)

	while (p != NULL)
  4239cc:	8fc20020 	lw	v0,32(s8)
  4239d0:	00000000 	nop
  4239d4:	14400003 	bnez	v0,4239e4 <delete_state+0x41c>
  4239d8:	00000000 	nop
  4239dc:	10000011 	b	423a24 <delete_state+0x45c>
  4239e0:	00000000 	nop
	{
	    struct msgid_list *q = p;
  4239e4:	8fc20020 	lw	v0,32(s8)
  4239e8:	00000000 	nop
  4239ec:	afc20024 	sw	v0,36(s8)
	    p = p->next;
  4239f0:	8fc20020 	lw	v0,32(s8)
  4239f4:	00000000 	nop
  4239f8:	8c420004 	lw	v0,4(v0)
  4239fc:	00000000 	nop
  423a00:	afc20020 	sw	v0,32(s8)
	    pfree(q);
  423a04:	8fc40024 	lw	a0,36(s8)
  423a08:	8f998094 	lw	t9,-32620(gp)
  423a0c:	00000000 	nop
  423a10:	0320f809 	jalr	t9
  423a14:	00000000 	nop
  423a18:	8fdc0010 	lw	gp,16(s8)
  423a1c:	1000ffeb 	b	4239cc <delete_state+0x404>
  423a20:	00000000 	nop
	}
    }

    free_public_keys(&st->st_peer_pubkey);
  423a24:	8fc20040 	lw	v0,64(s8)
  423a28:	00000000 	nop
  423a2c:	24420148 	addiu	v0,v0,328
  423a30:	00402021 	move	a0,v0
  423a34:	8f998a5c 	lw	t9,-30116(gp)
  423a38:	00000000 	nop
  423a3c:	0320f809 	jalr	t9
  423a40:	00000000 	nop
  423a44:	8fdc0010 	lw	gp,16(s8)
  423a48:	00000000 	nop

    if (st->st_sec_in_use)
  423a4c:	8fc20040 	lw	v0,64(s8)
  423a50:	00000000 	nop
  423a54:	90420130 	lbu	v0,304(v0)
  423a58:	00000000 	nop
  423a5c:	1040000b 	beqz	v0,423a8c <delete_state+0x4c4>
  423a60:	00000000 	nop
	mpz_clear(&(st->st_sec));
  423a64:	8fc20040 	lw	v0,64(s8)
  423a68:	00000000 	nop
  423a6c:	24420134 	addiu	v0,v0,308
  423a70:	00402021 	move	a0,v0
  423a74:	8f998c40 	lw	t9,-29632(gp)
  423a78:	00000000 	nop
  423a7c:	0320f809 	jalr	t9
  423a80:	00000000 	nop
  423a84:	8fdc0010 	lw	gp,16(s8)
  423a88:	00000000 	nop

    pfreeany(st->st_tpacket.ptr);
  423a8c:	8fc20040 	lw	v0,64(s8)
  423a90:	00000000 	nop
  423a94:	8c420118 	lw	v0,280(v0)
  423a98:	00000000 	nop
  423a9c:	1040000a 	beqz	v0,423ac8 <delete_state+0x500>
  423aa0:	00000000 	nop
  423aa4:	8fc20040 	lw	v0,64(s8)
  423aa8:	00000000 	nop
  423aac:	8c440118 	lw	a0,280(v0)
  423ab0:	8f998094 	lw	t9,-32620(gp)
  423ab4:	00000000 	nop
  423ab8:	0320f809 	jalr	t9
  423abc:	00000000 	nop
  423ac0:	8fdc0010 	lw	gp,16(s8)
  423ac4:	00000000 	nop
    pfreeany(st->st_rpacket.ptr);
  423ac8:	8fc20040 	lw	v0,64(s8)
  423acc:	00000000 	nop
  423ad0:	8c420124 	lw	v0,292(v0)
  423ad4:	00000000 	nop
  423ad8:	1040000a 	beqz	v0,423b04 <delete_state+0x53c>
  423adc:	00000000 	nop
  423ae0:	8fc20040 	lw	v0,64(s8)
  423ae4:	00000000 	nop
  423ae8:	8c440124 	lw	a0,292(v0)
  423aec:	8f998094 	lw	t9,-32620(gp)
  423af0:	00000000 	nop
  423af4:	0320f809 	jalr	t9
  423af8:	00000000 	nop
  423afc:	8fdc0010 	lw	gp,16(s8)
  423b00:	00000000 	nop
    pfreeany(st->st_p1isa.ptr);
  423b04:	8fc20040 	lw	v0,64(s8)
  423b08:	00000000 	nop
  423b0c:	8c42015c 	lw	v0,348(v0)
  423b10:	00000000 	nop
  423b14:	1040000a 	beqz	v0,423b40 <delete_state+0x578>
  423b18:	00000000 	nop
  423b1c:	8fc20040 	lw	v0,64(s8)
  423b20:	00000000 	nop
  423b24:	8c44015c 	lw	a0,348(v0)
  423b28:	8f998094 	lw	t9,-32620(gp)
  423b2c:	00000000 	nop
  423b30:	0320f809 	jalr	t9
  423b34:	00000000 	nop
  423b38:	8fdc0010 	lw	gp,16(s8)
  423b3c:	00000000 	nop
    pfreeany(st->st_gi.ptr);
  423b40:	8fc20040 	lw	v0,64(s8)
  423b44:	00000000 	nop
  423b48:	8c4200e8 	lw	v0,232(v0)
  423b4c:	00000000 	nop
  423b50:	1040000a 	beqz	v0,423b7c <delete_state+0x5b4>
  423b54:	00000000 	nop
  423b58:	8fc20040 	lw	v0,64(s8)
  423b5c:	00000000 	nop
  423b60:	8c4400e8 	lw	a0,232(v0)
  423b64:	8f998094 	lw	t9,-32620(gp)
  423b68:	00000000 	nop
  423b6c:	0320f809 	jalr	t9
  423b70:	00000000 	nop
  423b74:	8fdc0010 	lw	gp,16(s8)
  423b78:	00000000 	nop
    pfreeany(st->st_gr.ptr);
  423b7c:	8fc20040 	lw	v0,64(s8)
  423b80:	00000000 	nop
  423b84:	8c420100 	lw	v0,256(v0)
  423b88:	00000000 	nop
  423b8c:	1040000a 	beqz	v0,423bb8 <delete_state+0x5f0>
  423b90:	00000000 	nop
  423b94:	8fc20040 	lw	v0,64(s8)
  423b98:	00000000 	nop
  423b9c:	8c440100 	lw	a0,256(v0)
  423ba0:	8f998094 	lw	t9,-32620(gp)
  423ba4:	00000000 	nop
  423ba8:	0320f809 	jalr	t9
  423bac:	00000000 	nop
  423bb0:	8fdc0010 	lw	gp,16(s8)
  423bb4:	00000000 	nop
    pfreeany(st->st_shared.ptr);
  423bb8:	8fc20040 	lw	v0,64(s8)
  423bbc:	00000000 	nop
  423bc0:	8c420140 	lw	v0,320(v0)
  423bc4:	00000000 	nop
  423bc8:	1040000a 	beqz	v0,423bf4 <delete_state+0x62c>
  423bcc:	00000000 	nop
  423bd0:	8fc20040 	lw	v0,64(s8)
  423bd4:	00000000 	nop
  423bd8:	8c440140 	lw	a0,320(v0)
  423bdc:	8f998094 	lw	t9,-32620(gp)
  423be0:	00000000 	nop
  423be4:	0320f809 	jalr	t9
  423be8:	00000000 	nop
  423bec:	8fdc0010 	lw	gp,16(s8)
  423bf0:	00000000 	nop
    pfreeany(st->st_ni.ptr);
  423bf4:	8fc20040 	lw	v0,64(s8)
  423bf8:	00000000 	nop
  423bfc:	8c4200f8 	lw	v0,248(v0)
  423c00:	00000000 	nop
  423c04:	1040000a 	beqz	v0,423c30 <delete_state+0x668>
  423c08:	00000000 	nop
  423c0c:	8fc20040 	lw	v0,64(s8)
  423c10:	00000000 	nop
  423c14:	8c4400f8 	lw	a0,248(v0)
  423c18:	8f998094 	lw	t9,-32620(gp)
  423c1c:	00000000 	nop
  423c20:	0320f809 	jalr	t9
  423c24:	00000000 	nop
  423c28:	8fdc0010 	lw	gp,16(s8)
  423c2c:	00000000 	nop
    pfreeany(st->st_nr.ptr);
  423c30:	8fc20040 	lw	v0,64(s8)
  423c34:	00000000 	nop
  423c38:	8c420110 	lw	v0,272(v0)
  423c3c:	00000000 	nop
  423c40:	1040000a 	beqz	v0,423c6c <delete_state+0x6a4>
  423c44:	00000000 	nop
  423c48:	8fc20040 	lw	v0,64(s8)
  423c4c:	00000000 	nop
  423c50:	8c440110 	lw	a0,272(v0)
  423c54:	8f998094 	lw	t9,-32620(gp)
  423c58:	00000000 	nop
  423c5c:	0320f809 	jalr	t9
  423c60:	00000000 	nop
  423c64:	8fdc0010 	lw	gp,16(s8)
  423c68:	00000000 	nop
    pfreeany(st->st_skeyid.ptr);
  423c6c:	8fc20040 	lw	v0,64(s8)
  423c70:	00000000 	nop
  423c74:	8c420164 	lw	v0,356(v0)
  423c78:	00000000 	nop
  423c7c:	1040000a 	beqz	v0,423ca8 <delete_state+0x6e0>
  423c80:	00000000 	nop
  423c84:	8fc20040 	lw	v0,64(s8)
  423c88:	00000000 	nop
  423c8c:	8c440164 	lw	a0,356(v0)
  423c90:	8f998094 	lw	t9,-32620(gp)
  423c94:	00000000 	nop
  423c98:	0320f809 	jalr	t9
  423c9c:	00000000 	nop
  423ca0:	8fdc0010 	lw	gp,16(s8)
  423ca4:	00000000 	nop
    pfreeany(st->st_skeyid_d.ptr);
  423ca8:	8fc20040 	lw	v0,64(s8)
  423cac:	00000000 	nop
  423cb0:	8c42016c 	lw	v0,364(v0)
  423cb4:	00000000 	nop
  423cb8:	1040000a 	beqz	v0,423ce4 <delete_state+0x71c>
  423cbc:	00000000 	nop
  423cc0:	8fc20040 	lw	v0,64(s8)
  423cc4:	00000000 	nop
  423cc8:	8c44016c 	lw	a0,364(v0)
  423ccc:	8f998094 	lw	t9,-32620(gp)
  423cd0:	00000000 	nop
  423cd4:	0320f809 	jalr	t9
  423cd8:	00000000 	nop
  423cdc:	8fdc0010 	lw	gp,16(s8)
  423ce0:	00000000 	nop
    pfreeany(st->st_skeyid_a.ptr);
  423ce4:	8fc20040 	lw	v0,64(s8)
  423ce8:	00000000 	nop
  423cec:	8c420174 	lw	v0,372(v0)
  423cf0:	00000000 	nop
  423cf4:	1040000a 	beqz	v0,423d20 <delete_state+0x758>
  423cf8:	00000000 	nop
  423cfc:	8fc20040 	lw	v0,64(s8)
  423d00:	00000000 	nop
  423d04:	8c440174 	lw	a0,372(v0)
  423d08:	8f998094 	lw	t9,-32620(gp)
  423d0c:	00000000 	nop
  423d10:	0320f809 	jalr	t9
  423d14:	00000000 	nop
  423d18:	8fdc0010 	lw	gp,16(s8)
  423d1c:	00000000 	nop
    pfreeany(st->st_skeyid_e.ptr);
  423d20:	8fc20040 	lw	v0,64(s8)
  423d24:	00000000 	nop
  423d28:	8c42017c 	lw	v0,380(v0)
  423d2c:	00000000 	nop
  423d30:	1040000a 	beqz	v0,423d5c <delete_state+0x794>
  423d34:	00000000 	nop
  423d38:	8fc20040 	lw	v0,64(s8)
  423d3c:	00000000 	nop
  423d40:	8c44017c 	lw	a0,380(v0)
  423d44:	8f998094 	lw	t9,-32620(gp)
  423d48:	00000000 	nop
  423d4c:	0320f809 	jalr	t9
  423d50:	00000000 	nop
  423d54:	8fdc0010 	lw	gp,16(s8)
  423d58:	00000000 	nop
    pfreeany(st->st_enc_key.ptr);
  423d5c:	8fc20040 	lw	v0,64(s8)
  423d60:	00000000 	nop
  423d64:	8c420250 	lw	v0,592(v0)
  423d68:	00000000 	nop
  423d6c:	1040000a 	beqz	v0,423d98 <delete_state+0x7d0>
  423d70:	00000000 	nop
  423d74:	8fc20040 	lw	v0,64(s8)
  423d78:	00000000 	nop
  423d7c:	8c440250 	lw	a0,592(v0)
  423d80:	8f998094 	lw	t9,-32620(gp)
  423d84:	00000000 	nop
  423d88:	0320f809 	jalr	t9
  423d8c:	00000000 	nop
  423d90:	8fdc0010 	lw	gp,16(s8)
  423d94:	00000000 	nop
    pfreeany(st->st_ah.our_keymat);
  423d98:	8fc20040 	lw	v0,64(s8)
  423d9c:	00000000 	nop
  423da0:	8c420060 	lw	v0,96(v0)
  423da4:	00000000 	nop
  423da8:	1040000a 	beqz	v0,423dd4 <delete_state+0x80c>
  423dac:	00000000 	nop
  423db0:	8fc20040 	lw	v0,64(s8)
  423db4:	00000000 	nop
  423db8:	8c440060 	lw	a0,96(v0)
  423dbc:	8f998094 	lw	t9,-32620(gp)
  423dc0:	00000000 	nop
  423dc4:	0320f809 	jalr	t9
  423dc8:	00000000 	nop
  423dcc:	8fdc0010 	lw	gp,16(s8)
  423dd0:	00000000 	nop
    pfreeany(st->st_ah.peer_keymat);
  423dd4:	8fc20040 	lw	v0,64(s8)
  423dd8:	00000000 	nop
  423ddc:	8c420064 	lw	v0,100(v0)
  423de0:	00000000 	nop
  423de4:	1040000a 	beqz	v0,423e10 <delete_state+0x848>
  423de8:	00000000 	nop
  423dec:	8fc20040 	lw	v0,64(s8)
  423df0:	00000000 	nop
  423df4:	8c440064 	lw	a0,100(v0)
  423df8:	8f998094 	lw	t9,-32620(gp)
  423dfc:	00000000 	nop
  423e00:	0320f809 	jalr	t9
  423e04:	00000000 	nop
  423e08:	8fdc0010 	lw	gp,16(s8)
  423e0c:	00000000 	nop
    pfreeany(st->st_esp.our_keymat);
  423e10:	8fc20040 	lw	v0,64(s8)
  423e14:	00000000 	nop
  423e18:	8c42008c 	lw	v0,140(v0)
  423e1c:	00000000 	nop
  423e20:	1040000a 	beqz	v0,423e4c <delete_state+0x884>
  423e24:	00000000 	nop
  423e28:	8fc20040 	lw	v0,64(s8)
  423e2c:	00000000 	nop
  423e30:	8c44008c 	lw	a0,140(v0)
  423e34:	8f998094 	lw	t9,-32620(gp)
  423e38:	00000000 	nop
  423e3c:	0320f809 	jalr	t9
  423e40:	00000000 	nop
  423e44:	8fdc0010 	lw	gp,16(s8)
  423e48:	00000000 	nop
    pfreeany(st->st_esp.peer_keymat);
  423e4c:	8fc20040 	lw	v0,64(s8)
  423e50:	00000000 	nop
  423e54:	8c420090 	lw	v0,144(v0)
  423e58:	00000000 	nop
  423e5c:	1040000a 	beqz	v0,423e88 <delete_state+0x8c0>
  423e60:	00000000 	nop
  423e64:	8fc20040 	lw	v0,64(s8)
  423e68:	00000000 	nop
  423e6c:	8c440090 	lw	a0,144(v0)
  423e70:	8f998094 	lw	t9,-32620(gp)
  423e74:	00000000 	nop
  423e78:	0320f809 	jalr	t9
  423e7c:	00000000 	nop
  423e80:	8fdc0010 	lw	gp,16(s8)
  423e84:	00000000 	nop

    pfree(st);
  423e88:	8fc40040 	lw	a0,64(s8)
  423e8c:	8f998094 	lw	t9,-32620(gp)
  423e90:	00000000 	nop
  423e94:	0320f809 	jalr	t9
  423e98:	00000000 	nop
  423e9c:	8fdc0010 	lw	gp,16(s8)
  423ea0:	00000000 	nop
}
  423ea4:	03c0e821 	move	sp,s8
  423ea8:	8fbf0038 	lw	ra,56(sp)
  423eac:	8fbe0034 	lw	s8,52(sp)
  423eb0:	27bd0040 	addiu	sp,sp,64
  423eb4:	03e00008 	jr	ra
  423eb8:	00000000 	nop

00423ebc <states_use_connection>:
  423ebc:	3c1c0fbf 	lui	gp,0xfbf
  423ec0:	279c8ab4 	addiu	gp,gp,-30028
  423ec4:	0399e021 	addu	gp,gp,t9
  423ec8:	27bdffe8 	addiu	sp,sp,-24
  423ecc:	afbc0000 	sw	gp,0(sp)
  423ed0:	afbe0014 	sw	s8,20(sp)
  423ed4:	afbc0010 	sw	gp,16(sp)
  423ed8:	03a0f021 	move	s8,sp
  423edc:	afc40018 	sw	a0,24(s8)

/* Is a connection in use by some state? */
bool
states_use_connection(struct connection *c)
{
    /* are there any states still using it? */
    struct state *st = NULL;
  423ee0:	afc00008 	sw	zero,8(s8)
    int i;

    for (i = 0; st == NULL && i < STATE_TABLE_SIZE; i++)
  423ee4:	afc0000c 	sw	zero,12(s8)
  423ee8:	8fc20008 	lw	v0,8(s8)
  423eec:	00000000 	nop
  423ef0:	1440002d 	bnez	v0,423fa8 <states_use_connection+0xec>
  423ef4:	00000000 	nop
  423ef8:	8fc2000c 	lw	v0,12(s8)
  423efc:	00000000 	nop
  423f00:	28420020 	slti	v0,v0,32
  423f04:	14400003 	bnez	v0,423f14 <states_use_connection+0x58>
  423f08:	00000000 	nop
  423f0c:	10000026 	b	423fa8 <states_use_connection+0xec>
  423f10:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  423f14:	8fc2000c 	lw	v0,12(s8)
  423f18:	00000000 	nop
  423f1c:	00021080 	sll	v0,v0,0x2
  423f20:	8f818018 	lw	at,-32744(gp)
  423f24:	00000000 	nop
  423f28:	24216998 	addiu	at,at,27032
  423f2c:	00221021 	addu	v0,at,v0
  423f30:	8c420000 	lw	v0,0(v0)
  423f34:	00000000 	nop
  423f38:	afc20008 	sw	v0,8(s8)
  423f3c:	8fc20008 	lw	v0,8(s8)
  423f40:	00000000 	nop
  423f44:	14400007 	bnez	v0,423f64 <states_use_connection+0xa8>
  423f48:	00000000 	nop
  423f4c:	8fc2000c 	lw	v0,12(s8)
  423f50:	00000000 	nop
  423f54:	24420001 	addiu	v0,v0,1
  423f58:	afc2000c 	sw	v0,12(s8)
  423f5c:	1000ffe2 	b	423ee8 <states_use_connection+0x2c>
  423f60:	00000000 	nop
	    if (st->st_connection == c)
  423f64:	8fc20008 	lw	v0,8(s8)
  423f68:	00000000 	nop
  423f6c:	8c43000c 	lw	v1,12(v0)
  423f70:	8fc20018 	lw	v0,24(s8)
  423f74:	00000000 	nop
  423f78:	14620004 	bne	v1,v0,423f8c <states_use_connection+0xd0>
  423f7c:	00000000 	nop
		return TRUE;
  423f80:	24020001 	li	v0,1
  423f84:	10000009 	b	423fac <states_use_connection+0xf0>
  423f88:	00000000 	nop
  423f8c:	8fc20008 	lw	v0,8(s8)
  423f90:	00000000 	nop
  423f94:	8c42025c 	lw	v0,604(v0)
  423f98:	00000000 	nop
  423f9c:	afc20008 	sw	v0,8(s8)
  423fa0:	1000ffe6 	b	423f3c <states_use_connection+0x80>
  423fa4:	00000000 	nop

    return FALSE;
  423fa8:	00001021 	move	v0,zero
}
  423fac:	03c0e821 	move	sp,s8
  423fb0:	8fbe0014 	lw	s8,20(sp)
  423fb4:	27bd0018 	addiu	sp,sp,24
  423fb8:	03e00008 	jr	ra
  423fbc:	00000000 	nop

00423fc0 <delete_states_by_connection>:
  423fc0:	3c1c0fbf 	lui	gp,0xfbf
  423fc4:	279c89b0 	addiu	gp,gp,-30288
  423fc8:	0399e021 	addu	gp,gp,t9
  423fcc:	27bdffa8 	addiu	sp,sp,-88
  423fd0:	afbc0018 	sw	gp,24(sp)
  423fd4:	afbf0050 	sw	ra,80(sp)
  423fd8:	afbe004c 	sw	s8,76(sp)
  423fdc:	afbc0048 	sw	gp,72(sp)
  423fe0:	03a0f021 	move	s8,sp
  423fe4:	afc40058 	sw	a0,88(s8)
  423fe8:	afc5005c 	sw	a1,92(s8)

/*
 * delete all states that were created for a given connection.
 * if relations == TRUE, then also delete states that share
 * the same phase 1 SA.
 */
void
delete_states_by_connection(struct connection *c, bool relations)
{
    int pass;
    /* this kludge avoids an n^2 algorithm */
    enum connection_kind ck = c->kind;
  423fec:	8fc20058 	lw	v0,88(s8)
  423ff0:	00000000 	nop
  423ff4:	8c420194 	lw	v0,404(v0)
  423ff8:	00000000 	nop
  423ffc:	afc20024 	sw	v0,36(s8)
    
    /* save this connection's isakmp SA, since it will get set to later SOS_NOBODY */
    so_serial_t parent_sa = c->newest_isakmp_sa;
  424000:	8fc20058 	lw	v0,88(s8)
  424004:	00000000 	nop
  424008:	8c4201a4 	lw	v0,420(v0)
  42400c:	00000000 	nop
  424010:	afc20028 	sw	v0,40(s8)

    if (ck == CK_INSTANCE)
  424014:	8fc30024 	lw	v1,36(s8)
  424018:	24020002 	li	v0,2
  42401c:	14620005 	bne	v1,v0,424034 <delete_states_by_connection+0x74>
  424020:	00000000 	nop
	c->kind = CK_GOING_AWAY;
  424024:	24030003 	li	v1,3
  424028:	8fc20058 	lw	v0,88(s8)
  42402c:	00000000 	nop
  424030:	ac430194 	sw	v1,404(v0)

    /* We take two passes so that we delete any ISAKMP SAs last.
     * This allows Delete Notifications to be sent.
     * ?? We could probably double the performance by caching any
     * ISAKMP SA states found in the first pass, avoiding a second.
     */
    for (pass = 0; pass != 2; pass++)
  424034:	afc00020 	sw	zero,32(s8)
  424038:	8fc30020 	lw	v1,32(s8)
  42403c:	24020002 	li	v0,2
  424040:	14620003 	bne	v1,v0,424050 <delete_states_by_connection+0x90>
  424044:	00000000 	nop
  424048:	100000eb 	b	4243f8 <delete_states_by_connection+0x438>
  42404c:	00000000 	nop
    {
	int i;

	/* For each hash chain... */
	for (i = 0; i < STATE_TABLE_SIZE; i++)
  424050:	afc0002c 	sw	zero,44(s8)
  424054:	8fc2002c 	lw	v0,44(s8)
  424058:	00000000 	nop
  42405c:	28420020 	slti	v0,v0,32
  424060:	14400007 	bnez	v0,424080 <delete_states_by_connection+0xc0>
  424064:	00000000 	nop
  424068:	8fc20020 	lw	v0,32(s8)
  42406c:	00000000 	nop
  424070:	24420001 	addiu	v0,v0,1
  424074:	afc20020 	sw	v0,32(s8)
  424078:	1000ffef 	b	424038 <delete_states_by_connection+0x78>
  42407c:	00000000 	nop
	{
	    struct state *st;

	    /* For each state in the hash chain... */
	    for (st = statetable[i]; st != NULL; )
  424080:	8fc2002c 	lw	v0,44(s8)
  424084:	00000000 	nop
  424088:	00021080 	sll	v0,v0,0x2
  42408c:	8f818018 	lw	at,-32744(gp)
  424090:	00000000 	nop
  424094:	24216998 	addiu	at,at,27032
  424098:	00221021 	addu	v0,at,v0
  42409c:	8c420000 	lw	v0,0(v0)
  4240a0:	00000000 	nop
  4240a4:	afc20030 	sw	v0,48(s8)
  4240a8:	8fc20030 	lw	v0,48(s8)
  4240ac:	00000000 	nop
  4240b0:	14400007 	bnez	v0,4240d0 <delete_states_by_connection+0x110>
  4240b4:	00000000 	nop
  4240b8:	8fc2002c 	lw	v0,44(s8)
  4240bc:	00000000 	nop
  4240c0:	24420001 	addiu	v0,v0,1
  4240c4:	afc2002c 	sw	v0,44(s8)
  4240c8:	1000ffe2 	b	424054 <delete_states_by_connection+0x94>
  4240cc:	00000000 	nop
	    {
		struct state *this = st;
  4240d0:	8fc20030 	lw	v0,48(s8)
  4240d4:	00000000 	nop
  4240d8:	afc20034 	sw	v0,52(s8)

		st = st->st_hashchain_next;	/* before this is deleted */
  4240dc:	8fc20030 	lw	v0,48(s8)
  4240e0:	00000000 	nop
  4240e4:	8c42025c 	lw	v0,604(v0)
  4240e8:	00000000 	nop
  4240ec:	afc20030 	sw	v0,48(s8)

#if 0
		if(pass == 1 && IS_ISAKMP_SA_ESTABLISHED(this->st_state)) {
		  continue;
		}
#endif
		  
		DBG(DBG_CONTROL, DBG_log("examining state #%ld (%s), %ld vs parent=%ld"
  4240f0:	8f8284f8 	lw	v0,-31496(gp)
  4240f4:	00000000 	nop
  4240f8:	8c420000 	lw	v0,0(v0)
  4240fc:	00000000 	nop
  424100:	30420010 	andi	v0,v0,0x10
  424104:	1040001e 	beqz	v0,424180 <delete_states_by_connection+0x1c0>
  424108:	00000000 	nop
  42410c:	8f8483b0 	lw	a0,-31824(gp)
  424110:	8fc20034 	lw	v0,52(s8)
  424114:	00000000 	nop
  424118:	8c45014c 	lw	a1,332(v0)
  42411c:	8f9987fc 	lw	t9,-30724(gp)
  424120:	00000000 	nop
  424124:	0320f809 	jalr	t9
  424128:	00000000 	nop
  42412c:	8fdc0018 	lw	gp,24(s8)
  424130:	00401821 	move	v1,v0
  424134:	8fc20028 	lw	v0,40(s8)
  424138:	00000000 	nop
  42413c:	afa20010 	sw	v0,16(sp)
  424140:	8f84802c 	lw	a0,-32724(gp)
  424144:	00000000 	nop
  424148:	2484a7b0 	addiu	a0,a0,-22608
  42414c:	8fc20034 	lw	v0,52(s8)
  424150:	00000000 	nop
  424154:	8c450000 	lw	a1,0(v0)
  424158:	00603021 	move	a2,v1
  42415c:	8fc20034 	lw	v0,52(s8)
  424160:	00000000 	nop
  424164:	8c470004 	lw	a3,4(v0)
  424168:	8f9983b8 	lw	t9,-31816(gp)
  42416c:	00000000 	nop
  424170:	0320f809 	jalr	t9
  424174:	00000000 	nop
  424178:	8fdc0018 	lw	gp,24(s8)
  42417c:	00000000 	nop
					 , this->st_serialno
					 , enum_show(&state_names, this->st_state)
					 , this->st_clonedfrom
					 , parent_sa));

		if ((this->st_connection == c
		     || (relations && parent_sa != SOS_NOBODY && this->st_clonedfrom == parent_sa))
		    && (pass == 1 || !IS_ISAKMP_SA_ESTABLISHED(this->st_state)))
  424180:	8fc20034 	lw	v0,52(s8)
  424184:	00000000 	nop
  424188:	8c43000c 	lw	v1,12(v0)
  42418c:	8fc20058 	lw	v0,88(s8)
  424190:	00000000 	nop
  424194:	10620012 	beq	v1,v0,4241e0 <delete_states_by_connection+0x220>
  424198:	00000000 	nop
  42419c:	8fc2005c 	lw	v0,92(s8)
  4241a0:	00000000 	nop
  4241a4:	1040ffc0 	beqz	v0,4240a8 <delete_states_by_connection+0xe8>
  4241a8:	00000000 	nop
  4241ac:	8fc20028 	lw	v0,40(s8)
  4241b0:	00000000 	nop
  4241b4:	1040ffbc 	beqz	v0,4240a8 <delete_states_by_connection+0xe8>
  4241b8:	00000000 	nop
  4241bc:	8fc20034 	lw	v0,52(s8)
  4241c0:	00000000 	nop
  4241c4:	8c430004 	lw	v1,4(v0)
  4241c8:	8fc20028 	lw	v0,40(s8)
  4241cc:	00000000 	nop
  4241d0:	10620003 	beq	v1,v0,4241e0 <delete_states_by_connection+0x220>
  4241d4:	00000000 	nop
  4241d8:	1000ffb3 	b	4240a8 <delete_states_by_connection+0xe8>
  4241dc:	00000000 	nop
  4241e0:	8fc30020 	lw	v1,32(s8)
  4241e4:	24020001 	li	v0,1
  4241e8:	10620027 	beq	v1,v0,424288 <delete_states_by_connection+0x2c8>
  4241ec:	00000000 	nop
  4241f0:	8fc20034 	lw	v0,52(s8)
  4241f4:	00000000 	nop
  4241f8:	8c43014c 	lw	v1,332(v0)
  4241fc:	24020009 	li	v0,9
  424200:	1062ffa9 	beq	v1,v0,4240a8 <delete_states_by_connection+0xe8>
  424204:	00000000 	nop
  424208:	8fc20034 	lw	v0,52(s8)
  42420c:	00000000 	nop
  424210:	8c43014c 	lw	v1,332(v0)
  424214:	2402000a 	li	v0,10
  424218:	1062ffa3 	beq	v1,v0,4240a8 <delete_states_by_connection+0xe8>
  42421c:	00000000 	nop
  424220:	8fc20034 	lw	v0,52(s8)
  424224:	00000000 	nop
  424228:	8c43014c 	lw	v1,332(v0)
  42422c:	2402000e 	li	v0,14
  424230:	1062ff9d 	beq	v1,v0,4240a8 <delete_states_by_connection+0xe8>
  424234:	00000000 	nop
  424238:	8fc20034 	lw	v0,52(s8)
  42423c:	00000000 	nop
  424240:	8c43014c 	lw	v1,332(v0)
  424244:	2402000f 	li	v0,15
  424248:	1062ff97 	beq	v1,v0,4240a8 <delete_states_by_connection+0xe8>
  42424c:	00000000 	nop
  424250:	8fc20034 	lw	v0,52(s8)
  424254:	00000000 	nop
  424258:	8c43014c 	lw	v1,332(v0)
  42425c:	24020010 	li	v0,16
  424260:	1062ff91 	beq	v1,v0,4240a8 <delete_states_by_connection+0xe8>
  424264:	00000000 	nop
  424268:	8fc20034 	lw	v0,52(s8)
  42426c:	00000000 	nop
  424270:	8c43014c 	lw	v1,332(v0)
  424274:	24020011 	li	v0,17
  424278:	14620003 	bne	v1,v0,424288 <delete_states_by_connection+0x2c8>
  42427c:	00000000 	nop
  424280:	1000ff89 	b	4240a8 <delete_states_by_connection+0xe8>
  424284:	00000000 	nop
		{
		    struct state *old_cur_state
			= cur_state == this? NULL : cur_state;
  424288:	8f8387f8 	lw	v1,-30728(gp)
  42428c:	00000000 	nop
  424290:	8c630000 	lw	v1,0(v1)
  424294:	8fc20034 	lw	v0,52(s8)
  424298:	00000000 	nop
  42429c:	10620008 	beq	v1,v0,4242c0 <delete_states_by_connection+0x300>
  4242a0:	00000000 	nop
  4242a4:	8f8287f8 	lw	v0,-30728(gp)
  4242a8:	00000000 	nop
  4242ac:	8c420000 	lw	v0,0(v0)
  4242b0:	00000000 	nop
  4242b4:	afc20040 	sw	v0,64(s8)
  4242b8:	10000002 	b	4242c4 <delete_states_by_connection+0x304>
  4242bc:	00000000 	nop
  4242c0:	afc00040 	sw	zero,64(s8)
  4242c4:	8fc20040 	lw	v0,64(s8)
  4242c8:	00000000 	nop
  4242cc:	afc20038 	sw	v0,56(s8)
#ifdef DEBUG
		    unsigned int old_cur_debugging = cur_debugging;
  4242d0:	8f8284f8 	lw	v0,-31496(gp)
  4242d4:	00000000 	nop
  4242d8:	8c420000 	lw	v0,0(v0)
  4242dc:	00000000 	nop
  4242e0:	afc2003c 	sw	v0,60(s8)
#endif

		    set_cur_state(this);
  4242e4:	8fc20034 	lw	v0,52(s8)
  4242e8:	8f8187f8 	lw	at,-30728(gp)
  4242ec:	00000000 	nop
  4242f0:	ac220000 	sw	v0,0(at)
  4242f4:	8fc20034 	lw	v0,52(s8)
  4242f8:	00000000 	nop
  4242fc:	8c44000c 	lw	a0,12(v0)
  424300:	8f998be4 	lw	t9,-29724(gp)
  424304:	00000000 	nop
  424308:	0320f809 	jalr	t9
  42430c:	00000000 	nop
  424310:	8fdc0018 	lw	gp,24(s8)
  424314:	00000000 	nop
		    plog("deleting state (%s)"
  424318:	8f8483b0 	lw	a0,-31824(gp)
  42431c:	8fc20034 	lw	v0,52(s8)
  424320:	00000000 	nop
  424324:	8c45014c 	lw	a1,332(v0)
  424328:	8f9987fc 	lw	t9,-30724(gp)
  42432c:	00000000 	nop
  424330:	0320f809 	jalr	t9
  424334:	00000000 	nop
  424338:	8fdc0018 	lw	gp,24(s8)
  42433c:	00000000 	nop
  424340:	8f84802c 	lw	a0,-32724(gp)
  424344:	00000000 	nop
  424348:	2484a7e0 	addiu	a0,a0,-22560
  42434c:	00402821 	move	a1,v0
  424350:	8f998abc 	lw	t9,-30020(gp)
  424354:	00000000 	nop
  424358:	0320f809 	jalr	t9
  42435c:	00000000 	nop
  424360:	8fdc0018 	lw	gp,24(s8)
  424364:	00000000 	nop
			, enum_show(&state_names, this->st_state));
		    passert(this->st_event != NULL);
  424368:	8fc20034 	lw	v0,52(s8)
  42436c:	00000000 	nop
  424370:	8c420258 	lw	v0,600(v0)
  424374:	00000000 	nop
  424378:	1440000e 	bnez	v0,4243b4 <delete_states_by_connection+0x3f4>
  42437c:	00000000 	nop
  424380:	8f84802c 	lw	a0,-32724(gp)
  424384:	00000000 	nop
  424388:	2484a7f4 	addiu	a0,a0,-22540
  42438c:	8f85802c 	lw	a1,-32724(gp)
  424390:	00000000 	nop
  424394:	24a5a610 	addiu	a1,a1,-23024
  424398:	240601e3 	li	a2,483
  42439c:	8f998bb8 	lw	t9,-29768(gp)
  4243a0:	00000000 	nop
  4243a4:	0320f809 	jalr	t9
  4243a8:	00000000 	nop
  4243ac:	8fdc0018 	lw	gp,24(s8)
  4243b0:	00000000 	nop
		    delete_state(this);
  4243b4:	8fc40034 	lw	a0,52(s8)
  4243b8:	8f998b70 	lw	t9,-29840(gp)
  4243bc:	00000000 	nop
  4243c0:	0320f809 	jalr	t9
  4243c4:	00000000 	nop
  4243c8:	8fdc0018 	lw	gp,24(s8)
  4243cc:	00000000 	nop
		    cur_state = old_cur_state;
  4243d0:	8fc20038 	lw	v0,56(s8)
  4243d4:	8f8187f8 	lw	at,-30728(gp)
  4243d8:	00000000 	nop
  4243dc:	ac220000 	sw	v0,0(at)
#ifdef DEBUG
		    cur_debugging = old_cur_debugging;
  4243e0:	8fc2003c 	lw	v0,60(s8)
  4243e4:	8f8184f8 	lw	at,-31496(gp)
  4243e8:	00000000 	nop
  4243ec:	ac220000 	sw	v0,0(at)
  4243f0:	1000ff2d 	b	4240a8 <delete_states_by_connection+0xe8>
  4243f4:	00000000 	nop
#endif
		}
	    }
	}
    }

/* Seems to dump here because 1 of the states is NULL.  Removing the Assert
   makes things work.  We should fix this eventually.
    passert(c->newest_ipsec_sa == SOS_NOBODY
	&& c->newest_isakmp_sa == SOS_NOBODY
	&& c->eroute_owner == SOS_NOBODY
	&& c->routing != RT_ROUTED_TUNNEL);
*/
    if (ck == CK_INSTANCE)
  4243f8:	8fc30024 	lw	v1,36(s8)
  4243fc:	24020002 	li	v0,2
  424400:	1462000d 	bne	v1,v0,424438 <delete_states_by_connection+0x478>
  424404:	00000000 	nop
    {
	c->kind = ck;
  424408:	8fc30024 	lw	v1,36(s8)
  42440c:	8fc20058 	lw	v0,88(s8)
  424410:	00000000 	nop
  424414:	ac430194 	sw	v1,404(v0)
	delete_connection(c, relations);
  424418:	8fc40058 	lw	a0,88(s8)
  42441c:	8fc5005c 	lw	a1,92(s8)
  424420:	8f998b28 	lw	t9,-29912(gp)
  424424:	00000000 	nop
  424428:	0320f809 	jalr	t9
  42442c:	00000000 	nop
  424430:	8fdc0018 	lw	gp,24(s8)
  424434:	00000000 	nop
    }
}
  424438:	03c0e821 	move	sp,s8
  42443c:	8fbf0050 	lw	ra,80(sp)
  424440:	8fbe004c 	lw	s8,76(sp)
  424444:	27bd0058 	addiu	sp,sp,88
  424448:	03e00008 	jr	ra
  42444c:	00000000 	nop

00424450 <duplicate_state>:
  424450:	3c1c0fbf 	lui	gp,0xfbf
  424454:	279c8520 	addiu	gp,gp,-31456
  424458:	0399e021 	addu	gp,gp,t9
  42445c:	27bdffc8 	addiu	sp,sp,-56
  424460:	afbc0010 	sw	gp,16(sp)
  424464:	afbf0034 	sw	ra,52(sp)
  424468:	afbe0030 	sw	s8,48(sp)
  42446c:	afbc002c 	sw	gp,44(sp)
  424470:	afb00028 	sw	s0,40(sp)
  424474:	03a0f021 	move	s8,sp
  424478:	afc40038 	sw	a0,56(s8)

/* Duplicate a Phase 1 state object, to create a Phase 2 object.
 * Caller must schedule an event for this object so that it doesn't leak.
 * Caller must insert_state().
 */
struct state *
duplicate_state(struct state *st)
{
    struct state *nst;

    DBG(DBG_CONTROL, DBG_log("duplicating state object #%lu",
  42447c:	8f8284f8 	lw	v0,-31496(gp)
  424480:	00000000 	nop
  424484:	8c420000 	lw	v0,0(v0)
  424488:	00000000 	nop
  42448c:	30420010 	andi	v0,v0,0x10
  424490:	1040000d 	beqz	v0,4244c8 <duplicate_state+0x78>
  424494:	00000000 	nop
  424498:	8f84802c 	lw	a0,-32724(gp)
  42449c:	00000000 	nop
  4244a0:	2484a80c 	addiu	a0,a0,-22516
  4244a4:	8fc20038 	lw	v0,56(s8)
  4244a8:	00000000 	nop
  4244ac:	8c450000 	lw	a1,0(v0)
  4244b0:	8f9983b8 	lw	t9,-31816(gp)
  4244b4:	00000000 	nop
  4244b8:	0320f809 	jalr	t9
  4244bc:	00000000 	nop
  4244c0:	8fdc0010 	lw	gp,16(s8)
  4244c4:	00000000 	nop
	st->st_serialno));

    nst = new_state();
  4244c8:	8f9987b4 	lw	t9,-30796(gp)
  4244cc:	00000000 	nop
  4244d0:	0320f809 	jalr	t9
  4244d4:	00000000 	nop
  4244d8:	8fdc0010 	lw	gp,16(s8)
  4244dc:	afc20018 	sw	v0,24(s8)

    memcpy(nst->st_icookie, st->st_icookie, COOKIE_SIZE);
  4244e0:	8fc20018 	lw	v0,24(s8)
  4244e4:	00000000 	nop
  4244e8:	244300f0 	addiu	v1,v0,240
  4244ec:	8fc20038 	lw	v0,56(s8)
  4244f0:	00000000 	nop
  4244f4:	244200f0 	addiu	v0,v0,240
  4244f8:	00602021 	move	a0,v1
  4244fc:	00402821 	move	a1,v0
  424500:	24060008 	li	a2,8
  424504:	8f998a30 	lw	t9,-30160(gp)
  424508:	00000000 	nop
  42450c:	0320f809 	jalr	t9
  424510:	00000000 	nop
  424514:	8fdc0010 	lw	gp,16(s8)
  424518:	00000000 	nop
    memcpy(nst->st_rcookie, st->st_rcookie, COOKIE_SIZE);
  42451c:	8fc20018 	lw	v0,24(s8)
  424520:	00000000 	nop
  424524:	24430108 	addiu	v1,v0,264
  424528:	8fc20038 	lw	v0,56(s8)
  42452c:	00000000 	nop
  424530:	24420108 	addiu	v0,v0,264
  424534:	00602021 	move	a0,v1
  424538:	00402821 	move	a1,v0
  42453c:	24060008 	li	a2,8
  424540:	8f998a30 	lw	t9,-30160(gp)
  424544:	00000000 	nop
  424548:	0320f809 	jalr	t9
  42454c:	00000000 	nop
  424550:	8fdc0010 	lw	gp,16(s8)
  424554:	00000000 	nop
    nst->st_connection = st->st_connection;
  424558:	8fc20038 	lw	v0,56(s8)
  42455c:	00000000 	nop
  424560:	8c43000c 	lw	v1,12(v0)
  424564:	8fc20018 	lw	v0,24(s8)
  424568:	00000000 	nop
  42456c:	ac43000c 	sw	v1,12(v0)

    nst->st_doi = st->st_doi;
  424570:	8fc20038 	lw	v0,56(s8)
  424574:	00000000 	nop
  424578:	8c4300cc 	lw	v1,204(v0)
  42457c:	8fc20018 	lw	v0,24(s8)
  424580:	00000000 	nop
  424584:	ac4300cc 	sw	v1,204(v0)
    nst->st_situation = st->st_situation;
  424588:	8fc20038 	lw	v0,56(s8)
  42458c:	00000000 	nop
  424590:	8c4300d0 	lw	v1,208(v0)
  424594:	8fc20018 	lw	v0,24(s8)
  424598:	00000000 	nop
  42459c:	ac4300d0 	sw	v1,208(v0)

    /* note that the phase 1 is now in use by child */
    st->st_usage++;
  4245a0:	8fc20038 	lw	v0,56(s8)
  4245a4:	00000000 	nop
  4245a8:	8c420008 	lw	v0,8(v0)
  4245ac:	00000000 	nop
  4245b0:	24430001 	addiu	v1,v0,1
  4245b4:	8fc20038 	lw	v0,56(s8)
  4245b8:	00000000 	nop
  4245bc:	ac430008 	sw	v1,8(v0)
    nst->st_clonedfrom = st->st_serialno;
  4245c0:	8fc20038 	lw	v0,56(s8)
  4245c4:	00000000 	nop
  4245c8:	8c430000 	lw	v1,0(v0)
  4245cc:	8fc20018 	lw	v0,24(s8)
  4245d0:	00000000 	nop
  4245d4:	ac430004 	sw	v1,4(v0)

#   define clone_chunk(ch, name) \
	clonetochunk(nst->ch, st->ch.ptr, st->ch.len, name)

    clone_chunk(st_skeyid_d, "st_skeyid_d in duplicate_state");
  4245d8:	8fd00018 	lw	s0,24(s8)
  4245dc:	8fc40038 	lw	a0,56(s8)
  4245e0:	8fc20038 	lw	v0,56(s8)
  4245e4:	00000000 	nop
  4245e8:	8c430170 	lw	v1,368(v0)
  4245ec:	8fc20018 	lw	v0,24(s8)
  4245f0:	00000000 	nop
  4245f4:	ac430170 	sw	v1,368(v0)
  4245f8:	8c84016c 	lw	a0,364(a0)
  4245fc:	00602821 	move	a1,v1
  424600:	8f86802c 	lw	a2,-32724(gp)
  424604:	00000000 	nop
  424608:	24c6a82c 	addiu	a2,a2,-22484
  42460c:	8f998c04 	lw	t9,-29692(gp)
  424610:	00000000 	nop
  424614:	0320f809 	jalr	t9
  424618:	00000000 	nop
  42461c:	8fdc0010 	lw	gp,16(s8)
  424620:	ae02016c 	sw	v0,364(s0)
    clone_chunk(st_skeyid_a, "st_skeyid_a in duplicate_state");
  424624:	8fd00018 	lw	s0,24(s8)
  424628:	8fc40038 	lw	a0,56(s8)
  42462c:	8fc20038 	lw	v0,56(s8)
  424630:	00000000 	nop
  424634:	8c430178 	lw	v1,376(v0)
  424638:	8fc20018 	lw	v0,24(s8)
  42463c:	00000000 	nop
  424640:	ac430178 	sw	v1,376(v0)
  424644:	8c840174 	lw	a0,372(a0)
  424648:	00602821 	move	a1,v1
  42464c:	8f86802c 	lw	a2,-32724(gp)
  424650:	00000000 	nop
  424654:	24c6a84c 	addiu	a2,a2,-22452
  424658:	8f998c04 	lw	t9,-29692(gp)
  42465c:	00000000 	nop
  424660:	0320f809 	jalr	t9
  424664:	00000000 	nop
  424668:	8fdc0010 	lw	gp,16(s8)
  42466c:	ae020174 	sw	v0,372(s0)
    clone_chunk(st_skeyid_e, "st_skeyid_e in duplicate_state");
  424670:	8fd00018 	lw	s0,24(s8)
  424674:	8fc40038 	lw	a0,56(s8)
  424678:	8fc20038 	lw	v0,56(s8)
  42467c:	00000000 	nop
  424680:	8c430180 	lw	v1,384(v0)
  424684:	8fc20018 	lw	v0,24(s8)
  424688:	00000000 	nop
  42468c:	ac430180 	sw	v1,384(v0)
  424690:	8c84017c 	lw	a0,380(a0)
  424694:	00602821 	move	a1,v1
  424698:	8f86802c 	lw	a2,-32724(gp)
  42469c:	00000000 	nop
  4246a0:	24c6a86c 	addiu	a2,a2,-22420
  4246a4:	8f998c04 	lw	t9,-29692(gp)
  4246a8:	00000000 	nop
  4246ac:	0320f809 	jalr	t9
  4246b0:	00000000 	nop
  4246b4:	8fdc0010 	lw	gp,16(s8)
  4246b8:	ae02017c 	sw	v0,380(s0)
    clone_chunk(st_enc_key, "st_enc_key in duplicate_state");
  4246bc:	8fd00018 	lw	s0,24(s8)
  4246c0:	8fc40038 	lw	a0,56(s8)
  4246c4:	8fc20038 	lw	v0,56(s8)
  4246c8:	00000000 	nop
  4246cc:	8c430254 	lw	v1,596(v0)
  4246d0:	8fc20018 	lw	v0,24(s8)
  4246d4:	00000000 	nop
  4246d8:	ac430254 	sw	v1,596(v0)
  4246dc:	8c840250 	lw	a0,592(a0)
  4246e0:	00602821 	move	a1,v1
  4246e4:	8f86802c 	lw	a2,-32724(gp)
  4246e8:	00000000 	nop
  4246ec:	24c6a88c 	addiu	a2,a2,-22388
  4246f0:	8f998c04 	lw	t9,-29692(gp)
  4246f4:	00000000 	nop
  4246f8:	0320f809 	jalr	t9
  4246fc:	00000000 	nop
  424700:	8fdc0010 	lw	gp,16(s8)
  424704:	ae020250 	sw	v0,592(s0)

#   undef clone_chunk

    nst->st_oakley = st->st_oakley;
  424708:	8fc40018 	lw	a0,24(s8)
  42470c:	8fc30038 	lw	v1,56(s8)
  424710:	00000000 	nop
  424714:	8c62001c 	lw	v0,28(v1)
  424718:	00000000 	nop
  42471c:	ac82001c 	sw	v0,28(a0)
  424720:	8c620020 	lw	v0,32(v1)
  424724:	00000000 	nop
  424728:	ac820020 	sw	v0,32(a0)
  42472c:	8c620024 	lw	v0,36(v1)
  424730:	00000000 	nop
  424734:	ac820024 	sw	v0,36(a0)
  424738:	8c620028 	lw	v0,40(v1)
  42473c:	00000000 	nop
  424740:	ac820028 	sw	v0,40(a0)
  424744:	8c62002c 	lw	v0,44(v1)
  424748:	00000000 	nop
  42474c:	ac82002c 	sw	v0,44(a0)
  424750:	8c620030 	lw	v0,48(v1)
  424754:	00000000 	nop
  424758:	ac820030 	sw	v0,48(a0)
  42475c:	8c620034 	lw	v0,52(v1)
  424760:	00000000 	nop
  424764:	ac820034 	sw	v0,52(a0)
  424768:	8c620038 	lw	v0,56(v1)
  42476c:	00000000 	nop
  424770:	ac820038 	sw	v0,56(a0)

    return nst;
  424774:	8fc20018 	lw	v0,24(s8)
  424778:	00000000 	nop
}
  42477c:	03c0e821 	move	sp,s8
  424780:	8fbf0034 	lw	ra,52(sp)
  424784:	8fbe0030 	lw	s8,48(sp)
  424788:	8fb00028 	lw	s0,40(sp)
  42478c:	27bd0038 	addiu	sp,sp,56
  424790:	03e00008 	jr	ra
  424794:	00000000 	nop

00424798 <for_each_state>:
  424798:	3c1c0fbf 	lui	gp,0xfbf
  42479c:	279c81d8 	addiu	gp,gp,-32296
  4247a0:	0399e021 	addu	gp,gp,t9
  4247a4:	27bdffc8 	addiu	sp,sp,-56
  4247a8:	afbc0010 	sw	gp,16(sp)
  4247ac:	afbf0030 	sw	ra,48(sp)
  4247b0:	afbe002c 	sw	s8,44(sp)
  4247b4:	afbc0028 	sw	gp,40(sp)
  4247b8:	03a0f021 	move	s8,sp
  4247bc:	afc40038 	sw	a0,56(s8)
  4247c0:	afc5003c 	sw	a1,60(s8)

#if 1
void for_each_state(void *(f)(struct state *, void *data), void *data)
{
	struct state *st, *ocs = cur_state;
  4247c4:	8f8287f8 	lw	v0,-30728(gp)
  4247c8:	00000000 	nop
  4247cc:	8c420000 	lw	v0,0(v0)
  4247d0:	00000000 	nop
  4247d4:	afc2001c 	sw	v0,28(s8)
	int i;
	for (i=0; i<STATE_TABLE_SIZE; i++) {
  4247d8:	afc00020 	sw	zero,32(s8)
  4247dc:	8fc20020 	lw	v0,32(s8)
  4247e0:	00000000 	nop
  4247e4:	28420020 	slti	v0,v0,32
  4247e8:	14400003 	bnez	v0,4247f8 <for_each_state+0x60>
  4247ec:	00000000 	nop
  4247f0:	10000032 	b	4248bc <for_each_state+0x124>
  4247f4:	00000000 	nop
		for (st = statetable[i]; st != NULL; st = st->st_hashchain_next) {
  4247f8:	8fc20020 	lw	v0,32(s8)
  4247fc:	00000000 	nop
  424800:	00021080 	sll	v0,v0,0x2
  424804:	8f818018 	lw	at,-32744(gp)
  424808:	00000000 	nop
  42480c:	24216998 	addiu	at,at,27032
  424810:	00221021 	addu	v0,at,v0
  424814:	8c420000 	lw	v0,0(v0)
  424818:	00000000 	nop
  42481c:	afc20018 	sw	v0,24(s8)
  424820:	8fc20018 	lw	v0,24(s8)
  424824:	00000000 	nop
  424828:	14400007 	bnez	v0,424848 <for_each_state+0xb0>
  42482c:	00000000 	nop
  424830:	8fc20020 	lw	v0,32(s8)
  424834:	00000000 	nop
  424838:	24420001 	addiu	v0,v0,1
  42483c:	afc20020 	sw	v0,32(s8)
  424840:	1000ffe6 	b	4247dc <for_each_state+0x44>
  424844:	00000000 	nop
			set_cur_state(st);
  424848:	8fc20018 	lw	v0,24(s8)
  42484c:	8f8187f8 	lw	at,-30728(gp)
  424850:	00000000 	nop
  424854:	ac220000 	sw	v0,0(at)
  424858:	8fc20018 	lw	v0,24(s8)
  42485c:	00000000 	nop
  424860:	8c44000c 	lw	a0,12(v0)
  424864:	8f998be4 	lw	t9,-29724(gp)
  424868:	00000000 	nop
  42486c:	0320f809 	jalr	t9
  424870:	00000000 	nop
  424874:	8fdc0010 	lw	gp,16(s8)
  424878:	00000000 	nop
			f(st, data);
  42487c:	8fc40018 	lw	a0,24(s8)
  424880:	8fc5003c 	lw	a1,60(s8)
  424884:	8fc20038 	lw	v0,56(s8)
  424888:	00000000 	nop
  42488c:	0040c821 	move	t9,v0
  424890:	0320f809 	jalr	t9
  424894:	00000000 	nop
  424898:	8fdc0010 	lw	gp,16(s8)
  42489c:	00000000 	nop
  4248a0:	8fc20018 	lw	v0,24(s8)
  4248a4:	00000000 	nop
  4248a8:	8c42025c 	lw	v0,604(v0)
  4248ac:	00000000 	nop
  4248b0:	afc20018 	sw	v0,24(s8)
  4248b4:	1000ffda 	b	424820 <for_each_state+0x88>
  4248b8:	00000000 	nop
		}
	}
	cur_state = ocs;
  4248bc:	8fc2001c 	lw	v0,28(s8)
  4248c0:	8f8187f8 	lw	at,-30728(gp)
  4248c4:	00000000 	nop
  4248c8:	ac220000 	sw	v0,0(at)
}
  4248cc:	03c0e821 	move	sp,s8
  4248d0:	8fbf0030 	lw	ra,48(sp)
  4248d4:	8fbe002c 	lw	s8,44(sp)
  4248d8:	27bd0038 	addiu	sp,sp,56
  4248dc:	03e00008 	jr	ra
  4248e0:	00000000 	nop

004248e4 <find_state>:
  4248e4:	3c1c0fbf 	lui	gp,0xfbf
  4248e8:	279c808c 	addiu	gp,gp,-32628
  4248ec:	0399e021 	addu	gp,gp,t9
  4248f0:	27bdffd0 	addiu	sp,sp,-48
  4248f4:	afbc0010 	sw	gp,16(sp)
  4248f8:	afbf0028 	sw	ra,40(sp)
  4248fc:	afbe0024 	sw	s8,36(sp)
  424900:	afbc0020 	sw	gp,32(sp)
  424904:	03a0f021 	move	s8,sp
  424908:	afc40030 	sw	a0,48(s8)
  42490c:	afc50034 	sw	a1,52(s8)
  424910:	afc60038 	sw	a2,56(s8)
  424914:	afc7003c 	sw	a3,60(s8)
#endif

/*
 * Find a state object.
 */
struct state *
find_state(const u_char *icookie, const u_char *rcookie,
		const ip_address *peer, msgid_t /*network order*/  msgid)
{
    struct state *st = *state_hash(icookie, rcookie, peer);
  424918:	8fc40030 	lw	a0,48(s8)
  42491c:	8fc50034 	lw	a1,52(s8)
  424920:	8fc60038 	lw	a2,56(s8)
  424924:	8f998028 	lw	t9,-32728(gp)
  424928:	00000000 	nop
  42492c:	27392b9c 	addiu	t9,t9,11164
  424930:	00000000 	nop
  424934:	0320f809 	jalr	t9
  424938:	00000000 	nop
  42493c:	8fdc0010 	lw	gp,16(s8)
  424940:	8c420000 	lw	v0,0(v0)
  424944:	00000000 	nop
  424948:	afc20018 	sw	v0,24(s8)

    while (st != (struct state *) NULL)
  42494c:	8fc20018 	lw	v0,24(s8)
  424950:	00000000 	nop
  424954:	14400003 	bnez	v0,424964 <find_state+0x80>
  424958:	00000000 	nop
  42495c:	1000004d 	b	424a94 <find_state+0x1b0>
  424960:	00000000 	nop
    {
	if (sameaddr(peer, &st->st_connection->that.host_addr)
	    && memcmp(icookie, st->st_icookie, COOKIE_SIZE) == 0
	    && memcmp(rcookie, st->st_rcookie, COOKIE_SIZE) == 0)
  424964:	8fc20018 	lw	v0,24(s8)
  424968:	00000000 	nop
  42496c:	8c42000c 	lw	v0,12(v0)
  424970:	00000000 	nop
  424974:	24420108 	addiu	v0,v0,264
  424978:	8fc40038 	lw	a0,56(s8)
  42497c:	00402821 	move	a1,v0
  424980:	8f998928 	lw	t9,-30424(gp)
  424984:	00000000 	nop
  424988:	0320f809 	jalr	t9
  42498c:	00000000 	nop
  424990:	8fdc0010 	lw	gp,16(s8)
  424994:	10400038 	beqz	v0,424a78 <find_state+0x194>
  424998:	00000000 	nop
  42499c:	8fc20018 	lw	v0,24(s8)
  4249a0:	00000000 	nop
  4249a4:	244200f0 	addiu	v0,v0,240
  4249a8:	8fc40030 	lw	a0,48(s8)
  4249ac:	00402821 	move	a1,v0
  4249b0:	24060008 	li	a2,8
  4249b4:	8f9985c8 	lw	t9,-31288(gp)
  4249b8:	00000000 	nop
  4249bc:	0320f809 	jalr	t9
  4249c0:	00000000 	nop
  4249c4:	8fdc0010 	lw	gp,16(s8)
  4249c8:	1440002b 	bnez	v0,424a78 <find_state+0x194>
  4249cc:	00000000 	nop
  4249d0:	8fc20018 	lw	v0,24(s8)
  4249d4:	00000000 	nop
  4249d8:	24420108 	addiu	v0,v0,264
  4249dc:	8fc40034 	lw	a0,52(s8)
  4249e0:	00402821 	move	a1,v0
  4249e4:	24060008 	li	a2,8
  4249e8:	8f9985c8 	lw	t9,-31288(gp)
  4249ec:	00000000 	nop
  4249f0:	0320f809 	jalr	t9
  4249f4:	00000000 	nop
  4249f8:	8fdc0010 	lw	gp,16(s8)
  4249fc:	1440001e 	bnez	v0,424a78 <find_state+0x194>
  424a00:	00000000 	nop
	{
	    DBG(DBG_CONTROL,
  424a04:	8f8284f8 	lw	v0,-31496(gp)
  424a08:	00000000 	nop
  424a0c:	8c420000 	lw	v0,0(v0)
  424a10:	00000000 	nop
  424a14:	30420010 	andi	v0,v0,0x10
  424a18:	1040000e 	beqz	v0,424a54 <find_state+0x170>
  424a1c:	00000000 	nop
  424a20:	8f84802c 	lw	a0,-32724(gp)
  424a24:	00000000 	nop
  424a28:	2484a8ac 	addiu	a0,a0,-22356
  424a2c:	8fc5003c 	lw	a1,60(s8)
  424a30:	8fc20018 	lw	v0,24(s8)
  424a34:	00000000 	nop
  424a38:	8c4600e0 	lw	a2,224(v0)
  424a3c:	8f9983b8 	lw	t9,-31816(gp)
  424a40:	00000000 	nop
  424a44:	0320f809 	jalr	t9
  424a48:	00000000 	nop
  424a4c:	8fdc0010 	lw	gp,16(s8)
  424a50:	00000000 	nop
		DBG_log("peer and cookies match, provided msgid %08x vs %08x",
			ntohl(msgid), ntohl(st->st_msgid)));
	    if(msgid == st->st_msgid)
  424a54:	8fc20018 	lw	v0,24(s8)
  424a58:	00000000 	nop
  424a5c:	8c4300e0 	lw	v1,224(v0)
  424a60:	8fc2003c 	lw	v0,60(s8)
  424a64:	00000000 	nop
  424a68:	14430003 	bne	v0,v1,424a78 <find_state+0x194>
  424a6c:	00000000 	nop
		break;
  424a70:	10000008 	b	424a94 <find_state+0x1b0>
  424a74:	00000000 	nop
	}
	st = st->st_hashchain_next;
  424a78:	8fc20018 	lw	v0,24(s8)
  424a7c:	00000000 	nop
  424a80:	8c42025c 	lw	v0,604(v0)
  424a84:	00000000 	nop
  424a88:	afc20018 	sw	v0,24(s8)
  424a8c:	1000ffaf 	b	42494c <find_state+0x68>
  424a90:	00000000 	nop
    }

    DBG(DBG_CONTROL,
  424a94:	8f8284f8 	lw	v0,-31496(gp)
  424a98:	00000000 	nop
  424a9c:	8c420000 	lw	v0,0(v0)
  424aa0:	00000000 	nop
  424aa4:	30420010 	andi	v0,v0,0x10
  424aa8:	10400026 	beqz	v0,424b44 <find_state+0x260>
  424aac:	00000000 	nop
  424ab0:	8fc20018 	lw	v0,24(s8)
  424ab4:	00000000 	nop
  424ab8:	1440000b 	bnez	v0,424ae8 <find_state+0x204>
  424abc:	00000000 	nop
  424ac0:	8f84802c 	lw	a0,-32724(gp)
  424ac4:	00000000 	nop
  424ac8:	2484a8e0 	addiu	a0,a0,-22304
  424acc:	8f9983b8 	lw	t9,-31816(gp)
  424ad0:	00000000 	nop
  424ad4:	0320f809 	jalr	t9
  424ad8:	00000000 	nop
  424adc:	8fdc0010 	lw	gp,16(s8)
  424ae0:	10000018 	b	424b44 <find_state+0x260>
  424ae4:	00000000 	nop
  424ae8:	8f8483b0 	lw	a0,-31824(gp)
  424aec:	8fc20018 	lw	v0,24(s8)
  424af0:	00000000 	nop
  424af4:	8c45014c 	lw	a1,332(v0)
  424af8:	8f9987fc 	lw	t9,-30724(gp)
  424afc:	00000000 	nop
  424b00:	0320f809 	jalr	t9
  424b04:	00000000 	nop
  424b08:	8fdc0010 	lw	gp,16(s8)
  424b0c:	00401821 	move	v1,v0
  424b10:	8f84802c 	lw	a0,-32724(gp)
  424b14:	00000000 	nop
  424b18:	2484a8f8 	addiu	a0,a0,-22280
  424b1c:	8fc20018 	lw	v0,24(s8)
  424b20:	00000000 	nop
  424b24:	8c450000 	lw	a1,0(v0)
  424b28:	00603021 	move	a2,v1
  424b2c:	8f9983b8 	lw	t9,-31816(gp)
  424b30:	00000000 	nop
  424b34:	0320f809 	jalr	t9
  424b38:	00000000 	nop
  424b3c:	8fdc0010 	lw	gp,16(s8)
  424b40:	00000000 	nop
	if (st == NULL)
	    DBG_log("state object not found");
	else
	    DBG_log("state object #%lu found, in %s",
		st->st_serialno,
		enum_show(&state_names, st->st_state)));

    return st;
  424b44:	8fc20018 	lw	v0,24(s8)
  424b48:	00000000 	nop
}
  424b4c:	03c0e821 	move	sp,s8
  424b50:	8fbf0028 	lw	ra,40(sp)
  424b54:	8fbe0024 	lw	s8,36(sp)
  424b58:	27bd0030 	addiu	sp,sp,48
  424b5c:	03e00008 	jr	ra
  424b60:	00000000 	nop

00424b64 <find_sender>:
  424b64:	3c1c0fbe 	lui	gp,0xfbe
  424b68:	279c7e0c 	addiu	gp,gp,32268
  424b6c:	0399e021 	addu	gp,gp,t9
  424b70:	27bdffd0 	addiu	sp,sp,-48
  424b74:	afbc0010 	sw	gp,16(sp)
  424b78:	afbf0028 	sw	ra,40(sp)
  424b7c:	afbe0024 	sw	s8,36(sp)
  424b80:	afbc0020 	sw	gp,32(sp)
  424b84:	03a0f021 	move	s8,sp
  424b88:	afc40030 	sw	a0,48(s8)
  424b8c:	afc50034 	sw	a1,52(s8)

/* Find the state that sent a packet
 * ??? this could be expensive -- it should be rate-limited to avoid DoS
 */
struct state *
find_sender(size_t packet_len, u_char *packet)
{
    int i;
    struct state *st;

    if (packet_len >= sizeof(struct isakmp_hdr))
  424b90:	8fc20030 	lw	v0,48(s8)
  424b94:	00000000 	nop
  424b98:	2c42001c 	sltiu	v0,v0,28
  424b9c:	14400040 	bnez	v0,424ca0 <find_sender+0x13c>
  424ba0:	00000000 	nop
	for (i = 0; i < STATE_TABLE_SIZE; i++)
  424ba4:	afc00018 	sw	zero,24(s8)
  424ba8:	8fc20018 	lw	v0,24(s8)
  424bac:	00000000 	nop
  424bb0:	28420020 	slti	v0,v0,32
  424bb4:	14400003 	bnez	v0,424bc4 <find_sender+0x60>
  424bb8:	00000000 	nop
  424bbc:	10000038 	b	424ca0 <find_sender+0x13c>
  424bc0:	00000000 	nop
	    for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  424bc4:	8fc20018 	lw	v0,24(s8)
  424bc8:	00000000 	nop
  424bcc:	00021080 	sll	v0,v0,0x2
  424bd0:	8f818018 	lw	at,-32744(gp)
  424bd4:	00000000 	nop
  424bd8:	24216998 	addiu	at,at,27032
  424bdc:	00221021 	addu	v0,at,v0
  424be0:	8c420000 	lw	v0,0(v0)
  424be4:	00000000 	nop
  424be8:	afc2001c 	sw	v0,28(s8)
  424bec:	8fc2001c 	lw	v0,28(s8)
  424bf0:	00000000 	nop
  424bf4:	14400007 	bnez	v0,424c14 <find_sender+0xb0>
  424bf8:	00000000 	nop
  424bfc:	8fc20018 	lw	v0,24(s8)
  424c00:	00000000 	nop
  424c04:	24420001 	addiu	v0,v0,1
  424c08:	afc20018 	sw	v0,24(s8)
  424c0c:	1000ffe6 	b	424ba8 <find_sender+0x44>
  424c10:	00000000 	nop
		if (st->st_tpacket.ptr != NULL
		&& st->st_tpacket.len == packet_len
		&& memcmp(st->st_tpacket.ptr, packet, packet_len) == 0)
  424c14:	8fc2001c 	lw	v0,28(s8)
  424c18:	00000000 	nop
  424c1c:	8c420118 	lw	v0,280(v0)
  424c20:	00000000 	nop
  424c24:	10400017 	beqz	v0,424c84 <find_sender+0x120>
  424c28:	00000000 	nop
  424c2c:	8fc2001c 	lw	v0,28(s8)
  424c30:	00000000 	nop
  424c34:	8c43011c 	lw	v1,284(v0)
  424c38:	8fc20030 	lw	v0,48(s8)
  424c3c:	00000000 	nop
  424c40:	14620010 	bne	v1,v0,424c84 <find_sender+0x120>
  424c44:	00000000 	nop
  424c48:	8fc2001c 	lw	v0,28(s8)
  424c4c:	00000000 	nop
  424c50:	8c440118 	lw	a0,280(v0)
  424c54:	8fc50034 	lw	a1,52(s8)
  424c58:	8fc60030 	lw	a2,48(s8)
  424c5c:	8f9985c8 	lw	t9,-31288(gp)
  424c60:	00000000 	nop
  424c64:	0320f809 	jalr	t9
  424c68:	00000000 	nop
  424c6c:	8fdc0010 	lw	gp,16(s8)
  424c70:	14400004 	bnez	v0,424c84 <find_sender+0x120>
  424c74:	00000000 	nop
		    return st;
  424c78:	8fc2001c 	lw	v0,28(s8)
  424c7c:	10000009 	b	424ca4 <find_sender+0x140>
  424c80:	00000000 	nop
  424c84:	8fc2001c 	lw	v0,28(s8)
  424c88:	00000000 	nop
  424c8c:	8c42025c 	lw	v0,604(v0)
  424c90:	00000000 	nop
  424c94:	afc2001c 	sw	v0,28(s8)
  424c98:	1000ffd4 	b	424bec <find_sender+0x88>
  424c9c:	00000000 	nop

    return NULL;
  424ca0:	00001021 	move	v0,zero
}
  424ca4:	03c0e821 	move	sp,s8
  424ca8:	8fbf0028 	lw	ra,40(sp)
  424cac:	8fbe0024 	lw	s8,36(sp)
  424cb0:	27bd0030 	addiu	sp,sp,48
  424cb4:	03e00008 	jr	ra
  424cb8:	00000000 	nop

00424cbc <dump_states>:
  424cbc:	3c1c0fbe 	lui	gp,0xfbe
  424cc0:	279c7cb4 	addiu	gp,gp,31924
  424cc4:	0399e021 	addu	gp,gp,t9
  424cc8:	27bdffb0 	addiu	sp,sp,-80
  424ccc:	afbc0020 	sw	gp,32(sp)
  424cd0:	afbf0048 	sw	ra,72(sp)
  424cd4:	afbe0044 	sw	s8,68(sp)
  424cd8:	afbc0040 	sw	gp,64(sp)
  424cdc:	03a0f021 	move	s8,sp


#ifdef KENNY_INITIAL_CONTACT


void 
dump_states()
{
    struct state *ist, *dst;
    int i;
    loglog(RC_LOG_SERIOUS, "------------------------------------------"); 
  424ce0:	24040003 	li	a0,3
  424ce4:	8f85802c 	lw	a1,-32724(gp)
  424ce8:	00000000 	nop
  424cec:	24a5a918 	addiu	a1,a1,-22248
  424cf0:	8f998c48 	lw	t9,-29624(gp)
  424cf4:	00000000 	nop
  424cf8:	0320f809 	jalr	t9
  424cfc:	00000000 	nop
  424d00:	8fdc0020 	lw	gp,32(s8)
  424d04:	00000000 	nop
    for (i = 0; i < STATE_TABLE_SIZE; i++) {
  424d08:	afc00030 	sw	zero,48(s8)
  424d0c:	8fc20030 	lw	v0,48(s8)
  424d10:	00000000 	nop
  424d14:	28420020 	slti	v0,v0,32
  424d18:	14400003 	bnez	v0,424d28 <dump_states+0x6c>
  424d1c:	00000000 	nop
  424d20:	10000067 	b	424ec0 <dump_states+0x204>
  424d24:	00000000 	nop
    	int j = 0;
  424d28:	afc00034 	sw	zero,52(s8)
    	loglog(RC_LOG_SERIOUS, "kenny: dump_states %d", i); 
  424d2c:	24040003 	li	a0,3
  424d30:	8f85802c 	lw	a1,-32724(gp)
  424d34:	00000000 	nop
  424d38:	24a5a944 	addiu	a1,a1,-22204
  424d3c:	8fc60030 	lw	a2,48(s8)
  424d40:	8f998c48 	lw	t9,-29624(gp)
  424d44:	00000000 	nop
  424d48:	0320f809 	jalr	t9
  424d4c:	00000000 	nop
  424d50:	8fdc0020 	lw	gp,32(s8)
  424d54:	00000000 	nop
	for (ist = statetable[i]; ist != NULL; ist = ist->st_hashchain_next) {
  424d58:	8fc20030 	lw	v0,48(s8)
  424d5c:	00000000 	nop
  424d60:	00021080 	sll	v0,v0,0x2
  424d64:	8f818018 	lw	at,-32744(gp)
  424d68:	00000000 	nop
  424d6c:	24216998 	addiu	at,at,27032
  424d70:	00221021 	addu	v0,at,v0
  424d74:	8c420000 	lw	v0,0(v0)
  424d78:	00000000 	nop
  424d7c:	afc20028 	sw	v0,40(s8)
  424d80:	8fc20028 	lw	v0,40(s8)
  424d84:	00000000 	nop
  424d88:	14400007 	bnez	v0,424da8 <dump_states+0xec>
  424d8c:	00000000 	nop
  424d90:	8fc20030 	lw	v0,48(s8)
  424d94:	00000000 	nop
  424d98:	24420001 	addiu	v0,v0,1
  424d9c:	afc20030 	sw	v0,48(s8)
  424da0:	1000ffda 	b	424d0c <dump_states+0x50>
  424da4:	00000000 	nop
		const struct connection *c = ist->st_connection;
  424da8:	8fc20028 	lw	v0,40(s8)
  424dac:	00000000 	nop
  424db0:	8c42000c 	lw	v0,12(v0)
  424db4:	00000000 	nop
  424db8:	afc20038 	sw	v0,56(s8)
    		loglog(RC_LOG_SERIOUS, "kenny: dump_states %d-%d", i, j++); 
  424dbc:	27c30034 	addiu	v1,s8,52
  424dc0:	8c620000 	lw	v0,0(v1)
  424dc4:	00000000 	nop
  424dc8:	00403821 	move	a3,v0
  424dcc:	24420001 	addiu	v0,v0,1
  424dd0:	ac620000 	sw	v0,0(v1)
  424dd4:	24040003 	li	a0,3
  424dd8:	8f85802c 	lw	a1,-32724(gp)
  424ddc:	00000000 	nop
  424de0:	24a5a95c 	addiu	a1,a1,-22180
  424de4:	8fc60030 	lw	a2,48(s8)
  424de8:	8f998c48 	lw	t9,-29624(gp)
  424dec:	00000000 	nop
  424df0:	0320f809 	jalr	t9
  424df4:	00000000 	nop
  424df8:	8fdc0020 	lw	gp,32(s8)
  424dfc:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "kenny: #%u(%u) in %s c.name=%s c.this=%x c.that=%x", ist->st_serialno, ist->st_clonedfrom, enum_name(&state_names, ist->st_state), c->name, c->this.host_addr.u.v4.sin_addr.s_addr, c->that.host_addr.u.v4.sin_addr.s_addr );
  424e00:	8f8483b0 	lw	a0,-31824(gp)
  424e04:	8fc20028 	lw	v0,40(s8)
  424e08:	00000000 	nop
  424e0c:	8c45014c 	lw	a1,332(v0)
  424e10:	8f9984bc 	lw	t9,-31556(gp)
  424e14:	00000000 	nop
  424e18:	0320f809 	jalr	t9
  424e1c:	00000000 	nop
  424e20:	8fdc0020 	lw	gp,32(s8)
  424e24:	afa20010 	sw	v0,16(sp)
  424e28:	8fc20038 	lw	v0,56(s8)
  424e2c:	00000000 	nop
  424e30:	8c420000 	lw	v0,0(v0)
  424e34:	00000000 	nop
  424e38:	afa20014 	sw	v0,20(sp)
  424e3c:	8fc20038 	lw	v0,56(s8)
  424e40:	00000000 	nop
  424e44:	8c42005c 	lw	v0,92(v0)
  424e48:	00000000 	nop
  424e4c:	afa20018 	sw	v0,24(sp)
  424e50:	8fc20038 	lw	v0,56(s8)
  424e54:	00000000 	nop
  424e58:	8c42010c 	lw	v0,268(v0)
  424e5c:	00000000 	nop
  424e60:	afa2001c 	sw	v0,28(sp)
  424e64:	24040003 	li	a0,3
  424e68:	8f85802c 	lw	a1,-32724(gp)
  424e6c:	00000000 	nop
  424e70:	24a5a978 	addiu	a1,a1,-22152
  424e74:	8fc20028 	lw	v0,40(s8)
  424e78:	00000000 	nop
  424e7c:	8c460000 	lw	a2,0(v0)
  424e80:	8fc20028 	lw	v0,40(s8)
  424e84:	00000000 	nop
  424e88:	8c470004 	lw	a3,4(v0)
  424e8c:	8f998c48 	lw	t9,-29624(gp)
  424e90:	00000000 	nop
  424e94:	0320f809 	jalr	t9
  424e98:	00000000 	nop
  424e9c:	8fdc0020 	lw	gp,32(s8)
  424ea0:	00000000 	nop
  424ea4:	8fc20028 	lw	v0,40(s8)
  424ea8:	00000000 	nop
  424eac:	8c42025c 	lw	v0,604(v0)
  424eb0:	00000000 	nop
  424eb4:	afc20028 	sw	v0,40(s8)
  424eb8:	1000ffb1 	b	424d80 <dump_states+0xc4>
  424ebc:	00000000 	nop

	}	

    } 
    loglog(RC_LOG_SERIOUS, "------------------------------------------"); 
  424ec0:	24040003 	li	a0,3
  424ec4:	8f85802c 	lw	a1,-32724(gp)
  424ec8:	00000000 	nop
  424ecc:	24a5a918 	addiu	a1,a1,-22248
  424ed0:	8f998c48 	lw	t9,-29624(gp)
  424ed4:	00000000 	nop
  424ed8:	0320f809 	jalr	t9
  424edc:	00000000 	nop
  424ee0:	8fdc0020 	lw	gp,32(s8)
  424ee4:	00000000 	nop
}
  424ee8:	03c0e821 	move	sp,s8
  424eec:	8fbf0048 	lw	ra,72(sp)
  424ef0:	8fbe0044 	lw	s8,68(sp)
  424ef4:	27bd0050 	addiu	sp,sp,80
  424ef8:	03e00008 	jr	ra
  424efc:	00000000 	nop

00424f00 <handle_initial_contact>:
  424f00:	3c1c0fbe 	lui	gp,0xfbe
  424f04:	279c7a70 	addiu	gp,gp,31344
  424f08:	0399e021 	addu	gp,gp,t9
  424f0c:	27bdffa0 	addiu	sp,sp,-96
  424f10:	afbc0020 	sw	gp,32(sp)
  424f14:	afbf0058 	sw	ra,88(sp)
  424f18:	afbe0054 	sw	s8,84(sp)
  424f1c:	afbc0050 	sw	gp,80(sp)
  424f20:	03a0f021 	move	s8,sp
  424f24:	afc40060 	sw	a0,96(s8)
  424f28:	afc50064 	sw	a1,100(s8)
  424f2c:	afc60068 	sw	a2,104(s8)

void
handle_initial_contact(struct state *st, struct msg_digest *md, struct payload_digest *p)
{
    struct isakmp_notification *n = &(p->payload.notification);
  424f30:	8fc20068 	lw	v0,104(s8)
  424f34:	00000000 	nop
  424f38:	24420020 	addiu	v0,v0,32
  424f3c:	afc20028 	sw	v0,40(s8)
    size_t sizespi = 0;
  424f40:	afc0002c 	sw	zero,44(s8)
    u_char *icookie, *rcookie;
    struct state *nst = NULL;
  424f44:	afc00038 	sw	zero,56(s8)
    int i;
    struct state *ist, *dst;

    if ((!st) && (!(md->hdr.isa_flags & ISAKMP_FLAG_ENCRYPTION))) {
  424f48:	8fc20060 	lw	v0,96(s8)
  424f4c:	00000000 	nop
  424f50:	14400015 	bnez	v0,424fa8 <handle_initial_contact+0xa8>
  424f54:	00000000 	nop
  424f58:	8fc20064 	lw	v0,100(s8)
  424f5c:	00000000 	nop
  424f60:	90420083 	lbu	v0,131(v0)
  424f64:	00000000 	nop
  424f68:	30420001 	andi	v0,v0,0x1
  424f6c:	304200ff 	andi	v0,v0,0xff
  424f70:	1440000d 	bnez	v0,424fa8 <handle_initial_contact+0xa8>
  424f74:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "ignoring Notification payload: not encrypted");
  424f78:	24040003 	li	a0,3
  424f7c:	8f85802c 	lw	a1,-32724(gp)
  424f80:	00000000 	nop
  424f84:	24a5a9ac 	addiu	a1,a1,-22100
  424f88:	8f998c48 	lw	t9,-29624(gp)
  424f8c:	00000000 	nop
  424f90:	0320f809 	jalr	t9
  424f94:	00000000 	nop
  424f98:	8fdc0020 	lw	gp,32(s8)
  424f9c:	00000000 	nop
	return;
  424fa0:	1000011c 	b	425414 <handle_initial_contact+0x514>
  424fa4:	00000000 	nop
    }

    if ( n->isan_protoid != PROTO_ISAKMP) {
  424fa8:	8fc20028 	lw	v0,40(s8)
  424fac:	00000000 	nop
  424fb0:	90430008 	lbu	v1,8(v0)
  424fb4:	24020001 	li	v0,1
  424fb8:	1062000d 	beq	v1,v0,424ff0 <handle_initial_contact+0xf0>
  424fbc:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "ignoring Notification payload: not PROTO_ISAKMP");
  424fc0:	24040003 	li	a0,3
  424fc4:	8f85802c 	lw	a1,-32724(gp)
  424fc8:	00000000 	nop
  424fcc:	24a5a9dc 	addiu	a1,a1,-22052
  424fd0:	8f998c48 	lw	t9,-29624(gp)
  424fd4:	00000000 	nop
  424fd8:	0320f809 	jalr	t9
  424fdc:	00000000 	nop
  424fe0:	8fdc0020 	lw	gp,32(s8)
  424fe4:	00000000 	nop
	return;
  424fe8:	1000010a 	b	425414 <handle_initial_contact+0x514>
  424fec:	00000000 	nop
    }
    sizespi = (2*COOKIE_SIZE);
  424ff0:	24020010 	li	v0,16
  424ff4:	afc2002c 	sw	v0,44(s8)

    if (n->isan_spisize != sizespi) {
  424ff8:	8fc20028 	lw	v0,40(s8)
  424ffc:	00000000 	nop
  425000:	90430009 	lbu	v1,9(v0)
  425004:	8fc2002c 	lw	v0,44(s8)
  425008:	00000000 	nop
  42500c:	1062001d 	beq	v1,v0,425084 <handle_initial_contact+0x184>
  425010:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "ignoring Notification payload: "
  425014:	8fc20028 	lw	v0,40(s8)
  425018:	00000000 	nop
  42501c:	90420008 	lbu	v0,8(v0)
  425020:	8f848ab4 	lw	a0,-30028(gp)
  425024:	00402821 	move	a1,v0
  425028:	8f9987fc 	lw	t9,-30724(gp)
  42502c:	00000000 	nop
  425030:	0320f809 	jalr	t9
  425034:	00000000 	nop
  425038:	8fdc0020 	lw	gp,32(s8)
  42503c:	00401821 	move	v1,v0
  425040:	8fc20028 	lw	v0,40(s8)
  425044:	00000000 	nop
  425048:	90420009 	lbu	v0,9(v0)
  42504c:	24040003 	li	a0,3
  425050:	8f85802c 	lw	a1,-32724(gp)
  425054:	00000000 	nop
  425058:	24a5aa0c 	addiu	a1,a1,-22004
  42505c:	00403021 	move	a2,v0
  425060:	00603821 	move	a3,v1
  425064:	8f998c48 	lw	t9,-29624(gp)
  425068:	00000000 	nop
  42506c:	0320f809 	jalr	t9
  425070:	00000000 	nop
  425074:	8fdc0020 	lw	gp,32(s8)
  425078:	00000000 	nop
	    "bad size (%d) for Protocol (%s)",
	    n->isan_spisize,
	    enum_show(&protocol_names, n->isan_protoid));
	return;
  42507c:	100000e5 	b	425414 <handle_initial_contact+0x514>
  425080:	00000000 	nop
    }

    icookie = p->pbs.cur;
  425084:	8fc20068 	lw	v0,104(s8)
  425088:	00000000 	nop
  42508c:	8c420010 	lw	v0,16(v0)
  425090:	00000000 	nop
  425094:	afc20030 	sw	v0,48(s8)
    rcookie = icookie + COOKIE_SIZE;
  425098:	8fc20030 	lw	v0,48(s8)
  42509c:	00000000 	nop
  4250a0:	24420008 	addiu	v0,v0,8
  4250a4:	afc20034 	sw	v0,52(s8)


    // start of deleting all existing SA's of the sending peer	
    
#ifdef KENNY_INITIAL_CONTACT_DEBUG    
    loglog(RC_LOG_SERIOUS, "Before handle_initial_contact..................................... ");
  4250a8:	24040003 	li	a0,3
  4250ac:	8f85802c 	lw	a1,-32724(gp)
  4250b0:	00000000 	nop
  4250b4:	24a5aa4c 	addiu	a1,a1,-21940
  4250b8:	8f998c48 	lw	t9,-29624(gp)
  4250bc:	00000000 	nop
  4250c0:	0320f809 	jalr	t9
  4250c4:	00000000 	nop
  4250c8:	8fdc0020 	lw	gp,32(s8)
  4250cc:	00000000 	nop
    dump_states();
  4250d0:	8f998b68 	lw	t9,-29848(gp)
  4250d4:	00000000 	nop
  4250d8:	0320f809 	jalr	t9
  4250dc:	00000000 	nop
  4250e0:	8fdc0020 	lw	gp,32(s8)
  4250e4:	00000000 	nop
#endif

    for (i = 0; i < STATE_TABLE_SIZE; i++) 
  4250e8:	afc0003c 	sw	zero,60(s8)
  4250ec:	8fc2003c 	lw	v0,60(s8)
  4250f0:	00000000 	nop
  4250f4:	28420020 	slti	v0,v0,32
  4250f8:	14400003 	bnez	v0,425108 <handle_initial_contact+0x208>
  4250fc:	00000000 	nop
  425100:	100000b4 	b	4253d4 <handle_initial_contact+0x4d4>
  425104:	00000000 	nop
	for (ist = statetable[i]; ist != NULL; ) {
  425108:	8fc2003c 	lw	v0,60(s8)
  42510c:	00000000 	nop
  425110:	00021080 	sll	v0,v0,0x2
  425114:	8f818018 	lw	at,-32744(gp)
  425118:	00000000 	nop
  42511c:	24216998 	addiu	at,at,27032
  425120:	00221021 	addu	v0,at,v0
  425124:	8c420000 	lw	v0,0(v0)
  425128:	00000000 	nop
  42512c:	afc20040 	sw	v0,64(s8)
  425130:	8fc20040 	lw	v0,64(s8)
  425134:	00000000 	nop
  425138:	14400007 	bnez	v0,425158 <handle_initial_contact+0x258>
  42513c:	00000000 	nop
  425140:	8fc2003c 	lw	v0,60(s8)
  425144:	00000000 	nop
  425148:	24420001 	addiu	v0,v0,1
  42514c:	afc2003c 	sw	v0,60(s8)
  425150:	1000ffe6 	b	4250ec <handle_initial_contact+0x1ec>
  425154:	00000000 	nop
	    if ( (IS_ISAKMP_SA_ESTABLISHED(ist->st_state))
		&& ( (memcmp(icookie, ist->st_icookie, COOKIE_SIZE) != 0)
		  || (memcmp(rcookie, ist->st_rcookie, COOKIE_SIZE) != 0) )
		&& (sameaddr(&md->sender , &ist->st_connection->that.host_addr))  ) {
  425158:	8fc20040 	lw	v0,64(s8)
  42515c:	00000000 	nop
  425160:	8c43014c 	lw	v1,332(v0)
  425164:	24020009 	li	v0,9
  425168:	10620021 	beq	v1,v0,4251f0 <handle_initial_contact+0x2f0>
  42516c:	00000000 	nop
  425170:	8fc20040 	lw	v0,64(s8)
  425174:	00000000 	nop
  425178:	8c43014c 	lw	v1,332(v0)
  42517c:	2402000a 	li	v0,10
  425180:	1062001b 	beq	v1,v0,4251f0 <handle_initial_contact+0x2f0>
  425184:	00000000 	nop
  425188:	8fc20040 	lw	v0,64(s8)
  42518c:	00000000 	nop
  425190:	8c43014c 	lw	v1,332(v0)
  425194:	2402000e 	li	v0,14
  425198:	10620015 	beq	v1,v0,4251f0 <handle_initial_contact+0x2f0>
  42519c:	00000000 	nop
  4251a0:	8fc20040 	lw	v0,64(s8)
  4251a4:	00000000 	nop
  4251a8:	8c43014c 	lw	v1,332(v0)
  4251ac:	2402000f 	li	v0,15
  4251b0:	1062000f 	beq	v1,v0,4251f0 <handle_initial_contact+0x2f0>
  4251b4:	00000000 	nop
  4251b8:	8fc20040 	lw	v0,64(s8)
  4251bc:	00000000 	nop
  4251c0:	8c43014c 	lw	v1,332(v0)
  4251c4:	24020010 	li	v0,16
  4251c8:	10620009 	beq	v1,v0,4251f0 <handle_initial_contact+0x2f0>
  4251cc:	00000000 	nop
  4251d0:	8fc20040 	lw	v0,64(s8)
  4251d4:	00000000 	nop
  4251d8:	8c43014c 	lw	v1,332(v0)
  4251dc:	24020011 	li	v0,17
  4251e0:	10620003 	beq	v1,v0,4251f0 <handle_initial_contact+0x2f0>
  4251e4:	00000000 	nop
  4251e8:	10000073 	b	4253b8 <handle_initial_contact+0x4b8>
  4251ec:	00000000 	nop
  4251f0:	8fc20040 	lw	v0,64(s8)
  4251f4:	00000000 	nop
  4251f8:	244200f0 	addiu	v0,v0,240
  4251fc:	8fc40030 	lw	a0,48(s8)
  425200:	00402821 	move	a1,v0
  425204:	24060008 	li	a2,8
  425208:	8f9985c8 	lw	t9,-31288(gp)
  42520c:	00000000 	nop
  425210:	0320f809 	jalr	t9
  425214:	00000000 	nop
  425218:	8fdc0020 	lw	gp,32(s8)
  42521c:	14400010 	bnez	v0,425260 <handle_initial_contact+0x360>
  425220:	00000000 	nop
  425224:	8fc20040 	lw	v0,64(s8)
  425228:	00000000 	nop
  42522c:	24420108 	addiu	v0,v0,264
  425230:	8fc40034 	lw	a0,52(s8)
  425234:	00402821 	move	a1,v0
  425238:	24060008 	li	a2,8
  42523c:	8f9985c8 	lw	t9,-31288(gp)
  425240:	00000000 	nop
  425244:	0320f809 	jalr	t9
  425248:	00000000 	nop
  42524c:	8fdc0020 	lw	gp,32(s8)
  425250:	14400003 	bnez	v0,425260 <handle_initial_contact+0x360>
  425254:	00000000 	nop
  425258:	10000057 	b	4253b8 <handle_initial_contact+0x4b8>
  42525c:	00000000 	nop
  425260:	8fc20064 	lw	v0,100(s8)
  425264:	00000000 	nop
  425268:	24430010 	addiu	v1,v0,16
  42526c:	8fc20040 	lw	v0,64(s8)
  425270:	00000000 	nop
  425274:	8c42000c 	lw	v0,12(v0)
  425278:	00000000 	nop
  42527c:	24420108 	addiu	v0,v0,264
  425280:	00602021 	move	a0,v1
  425284:	00402821 	move	a1,v0
  425288:	8f998928 	lw	t9,-30424(gp)
  42528c:	00000000 	nop
  425290:	0320f809 	jalr	t9
  425294:	00000000 	nop
  425298:	8fdc0020 	lw	gp,32(s8)
  42529c:	10400046 	beqz	v0,4253b8 <handle_initial_contact+0x4b8>
  4252a0:	00000000 	nop
		// delete phase 1 state
		const struct connection *c = ist->st_connection;
  4252a4:	8fc20040 	lw	v0,64(s8)
  4252a8:	00000000 	nop
  4252ac:	8c42000c 	lw	v0,12(v0)
  4252b0:	00000000 	nop
  4252b4:	afc20048 	sw	v0,72(s8)
		loglog(RC_LOG_SERIOUS, "delte: ph1#%u(%u) in %s c.name=%s c.this=%x c.that=%x", ist->st_serialno, ist->st_clonedfrom, enum_name(&state_names, ist->st_state), c->name, c->this.host_addr.u.v4.sin_addr.s_addr, c->that.host_addr.u.v4.sin_addr.s_addr );
  4252b8:	8f8483b0 	lw	a0,-31824(gp)
  4252bc:	8fc20040 	lw	v0,64(s8)
  4252c0:	00000000 	nop
  4252c4:	8c45014c 	lw	a1,332(v0)
  4252c8:	8f9984bc 	lw	t9,-31556(gp)
  4252cc:	00000000 	nop
  4252d0:	0320f809 	jalr	t9
  4252d4:	00000000 	nop
  4252d8:	8fdc0020 	lw	gp,32(s8)
  4252dc:	afa20010 	sw	v0,16(sp)
  4252e0:	8fc20048 	lw	v0,72(s8)
  4252e4:	00000000 	nop
  4252e8:	8c420000 	lw	v0,0(v0)
  4252ec:	00000000 	nop
  4252f0:	afa20014 	sw	v0,20(sp)
  4252f4:	8fc20048 	lw	v0,72(s8)
  4252f8:	00000000 	nop
  4252fc:	8c42005c 	lw	v0,92(v0)
  425300:	00000000 	nop
  425304:	afa20018 	sw	v0,24(sp)
  425308:	8fc20048 	lw	v0,72(s8)
  42530c:	00000000 	nop
  425310:	8c42010c 	lw	v0,268(v0)
  425314:	00000000 	nop
  425318:	afa2001c 	sw	v0,28(sp)
  42531c:	24040003 	li	a0,3
  425320:	8f85802c 	lw	a1,-32724(gp)
  425324:	00000000 	nop
  425328:	24a5aa90 	addiu	a1,a1,-21872
  42532c:	8fc20040 	lw	v0,64(s8)
  425330:	00000000 	nop
  425334:	8c460000 	lw	a2,0(v0)
  425338:	8fc20040 	lw	v0,64(s8)
  42533c:	00000000 	nop
  425340:	8c470004 	lw	a3,4(v0)
  425344:	8f998c48 	lw	t9,-29624(gp)
  425348:	00000000 	nop
  42534c:	0320f809 	jalr	t9
  425350:	00000000 	nop
  425354:	8fdc0020 	lw	gp,32(s8)
  425358:	00000000 	nop
		dst = ist;
  42535c:	8fc20040 	lw	v0,64(s8)
  425360:	00000000 	nop
  425364:	afc20044 	sw	v0,68(s8)
		ist = dst->st_hashchain_next;
  425368:	8fc20044 	lw	v0,68(s8)
  42536c:	00000000 	nop
  425370:	8c42025c 	lw	v0,604(v0)
  425374:	00000000 	nop
  425378:	afc20040 	sw	v0,64(s8)
		delete_phase2_states(dst);
  42537c:	8fc40044 	lw	a0,68(s8)
  425380:	8f9981b8 	lw	t9,-32328(gp)
  425384:	00000000 	nop
  425388:	0320f809 	jalr	t9
  42538c:	00000000 	nop
  425390:	8fdc0020 	lw	gp,32(s8)
  425394:	00000000 	nop
		delete_state(dst);
  425398:	8fc40044 	lw	a0,68(s8)
  42539c:	8f998b70 	lw	t9,-29840(gp)
  4253a0:	00000000 	nop
  4253a4:	0320f809 	jalr	t9
  4253a8:	00000000 	nop
  4253ac:	8fdc0020 	lw	gp,32(s8)
  4253b0:	1000ff5f 	b	425130 <handle_initial_contact+0x230>
  4253b4:	00000000 	nop
#if 0	    
	    } if (IS_IPSEC_SA_ESTABLISHED(ist->st_state) 
	    	&& (sameaddr(&md->sender , &ist->st_connection->that.host_addr)) ) {
		const struct connection *c = ist->st_connection;
		// delete phase 2 state
		loglog(RC_LOG_SERIOUS, "delte: ph2#%u(%u) in %s c.name=%s c.this=%x c.that=%x", ist->st_serialno, ist->st_clonedfrom, enum_name(&state_names, ist->st_state), c->name, c->this.host_addr.u.v4.sin_addr.s_addr, c->that.host_addr.u.v4.sin_addr.s_addr );
		dst = ist;
		ist = dst->st_hashchain_next;
		delete_state(dst);
#endif		
	    } else {
	    	ist = ist->st_hashchain_next;
  4253b8:	8fc20040 	lw	v0,64(s8)
  4253bc:	00000000 	nop
  4253c0:	8c42025c 	lw	v0,604(v0)
  4253c4:	00000000 	nop
  4253c8:	afc20040 	sw	v0,64(s8)
  4253cc:	1000ff58 	b	425130 <handle_initial_contact+0x230>
  4253d0:	00000000 	nop
	    }		
	}	

#ifdef KENNY_INITIAL_CONTACT_DEBUG    
    loglog(RC_LOG_SERIOUS, "After handle_initial_contact..................................... ");
  4253d4:	24040003 	li	a0,3
  4253d8:	8f85802c 	lw	a1,-32724(gp)
  4253dc:	00000000 	nop
  4253e0:	24a5aac8 	addiu	a1,a1,-21816
  4253e4:	8f998c48 	lw	t9,-29624(gp)
  4253e8:	00000000 	nop
  4253ec:	0320f809 	jalr	t9
  4253f0:	00000000 	nop
  4253f4:	8fdc0020 	lw	gp,32(s8)
  4253f8:	00000000 	nop
    dump_states();
  4253fc:	8f998b68 	lw	t9,-29848(gp)
  425400:	00000000 	nop
  425404:	0320f809 	jalr	t9
  425408:	00000000 	nop
  42540c:	8fdc0020 	lw	gp,32(s8)
  425410:	00000000 	nop
#endif    
    // end of deleting all existing SA's of the sending peer


}    
  425414:	03c0e821 	move	sp,s8
  425418:	8fbf0058 	lw	ra,88(sp)
  42541c:	8fbe0054 	lw	s8,84(sp)
  425420:	27bd0060 	addiu	sp,sp,96
  425424:	03e00008 	jr	ra
  425428:	00000000 	nop

0042542c <delete_phase2_states>:
  42542c:	3c1c0fbe 	lui	gp,0xfbe
  425430:	279c7544 	addiu	gp,gp,30020
  425434:	0399e021 	addu	gp,gp,t9
  425438:	27bdffd0 	addiu	sp,sp,-48
  42543c:	afbc0010 	sw	gp,16(sp)
  425440:	afbf0028 	sw	ra,40(sp)
  425444:	afbe0024 	sw	s8,36(sp)
  425448:	afbc0020 	sw	gp,32(sp)
  42544c:	03a0f021 	move	s8,sp
  425450:	afc40030 	sw	a0,48(s8)

struct state *
delete_phase2_states(const struct state *p1st)
{
    struct state *st;
    int i;

    for (i = 0; i < STATE_TABLE_SIZE; i++)
  425454:	afc0001c 	sw	zero,28(s8)
  425458:	8fc2001c 	lw	v0,28(s8)
  42545c:	00000000 	nop
  425460:	28420020 	slti	v0,v0,32
  425464:	14400003 	bnez	v0,425474 <delete_phase2_states+0x48>
  425468:	00000000 	nop
  42546c:	1000004a 	b	425598 <delete_phase2_states+0x16c>
  425470:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  425474:	8fc2001c 	lw	v0,28(s8)
  425478:	00000000 	nop
  42547c:	00021080 	sll	v0,v0,0x2
  425480:	8f818018 	lw	at,-32744(gp)
  425484:	00000000 	nop
  425488:	24216998 	addiu	at,at,27032
  42548c:	00221021 	addu	v0,at,v0
  425490:	8c420000 	lw	v0,0(v0)
  425494:	00000000 	nop
  425498:	afc20018 	sw	v0,24(s8)
  42549c:	8fc20018 	lw	v0,24(s8)
  4254a0:	00000000 	nop
  4254a4:	14400007 	bnez	v0,4254c4 <delete_phase2_states+0x98>
  4254a8:	00000000 	nop
  4254ac:	8fc2001c 	lw	v0,28(s8)
  4254b0:	00000000 	nop
  4254b4:	24420001 	addiu	v0,v0,1
  4254b8:	afc2001c 	sw	v0,28(s8)
  4254bc:	1000ffe6 	b	425458 <delete_phase2_states+0x2c>
  4254c0:	00000000 	nop
	    if ( (IS_IPSEC_SA_ESTABLISHED(st->st_state))
		&& (p1st->st_connection->host_pair == st->st_connection->host_pair)
		&& (same_peer_ids(p1st->st_connection, st->st_connection, NULL)))
  4254c4:	8fc20018 	lw	v0,24(s8)
  4254c8:	00000000 	nop
  4254cc:	8c43014c 	lw	v1,332(v0)
  4254d0:	24020018 	li	v0,24
  4254d4:	10620009 	beq	v1,v0,4254fc <delete_phase2_states+0xd0>
  4254d8:	00000000 	nop
  4254dc:	8fc20018 	lw	v0,24(s8)
  4254e0:	00000000 	nop
  4254e4:	8c43014c 	lw	v1,332(v0)
  4254e8:	24020019 	li	v0,25
  4254ec:	10620003 	beq	v1,v0,4254fc <delete_phase2_states+0xd0>
  4254f0:	00000000 	nop
  4254f4:	10000021 	b	42557c <delete_phase2_states+0x150>
  4254f8:	00000000 	nop
  4254fc:	8fc20030 	lw	v0,48(s8)
  425500:	00000000 	nop
  425504:	8c43000c 	lw	v1,12(v0)
  425508:	8fc20018 	lw	v0,24(s8)
  42550c:	00000000 	nop
  425510:	8c42000c 	lw	v0,12(v0)
  425514:	8c6301c4 	lw	v1,452(v1)
  425518:	8c4201c4 	lw	v0,452(v0)
  42551c:	00000000 	nop
  425520:	14620016 	bne	v1,v0,42557c <delete_phase2_states+0x150>
  425524:	00000000 	nop
  425528:	8fc20030 	lw	v0,48(s8)
  42552c:	00000000 	nop
  425530:	8c44000c 	lw	a0,12(v0)
  425534:	8fc20018 	lw	v0,24(s8)
  425538:	00000000 	nop
  42553c:	8c45000c 	lw	a1,12(v0)
  425540:	00003021 	move	a2,zero
  425544:	8f9988fc 	lw	t9,-30468(gp)
  425548:	00000000 	nop
  42554c:	0320f809 	jalr	t9
  425550:	00000000 	nop
  425554:	8fdc0010 	lw	gp,16(s8)
  425558:	10400008 	beqz	v0,42557c <delete_phase2_states+0x150>
  42555c:	00000000 	nop
		{
			delete_state(st);
  425560:	8fc40018 	lw	a0,24(s8)
  425564:	8f998b70 	lw	t9,-29840(gp)
  425568:	00000000 	nop
  42556c:	0320f809 	jalr	t9
  425570:	00000000 	nop
  425574:	8fdc0010 	lw	gp,16(s8)
  425578:	00000000 	nop
  42557c:	8fc20018 	lw	v0,24(s8)
  425580:	00000000 	nop
  425584:	8c42025c 	lw	v0,604(v0)
  425588:	00000000 	nop
  42558c:	afc20018 	sw	v0,24(s8)
  425590:	1000ffc2 	b	42549c <delete_phase2_states+0x70>
  425594:	00000000 	nop
		}
    return NULL;
  425598:	00001021 	move	v0,zero
}
  42559c:	03c0e821 	move	sp,s8
  4255a0:	8fbf0028 	lw	ra,40(sp)
  4255a4:	8fbe0024 	lw	s8,36(sp)
  4255a8:	27bd0030 	addiu	sp,sp,48
  4255ac:	03e00008 	jr	ra
  4255b0:	00000000 	nop

004255b4 <find_phase1_state_with_peer>:
  4255b4:	3c1c0fbe 	lui	gp,0xfbe
  4255b8:	279c73bc 	addiu	gp,gp,29628
  4255bc:	0399e021 	addu	gp,gp,t9
  4255c0:	27bdffd0 	addiu	sp,sp,-48
  4255c4:	afbc0010 	sw	gp,16(sp)
  4255c8:	afbf0028 	sw	ra,40(sp)
  4255cc:	afbe0024 	sw	s8,36(sp)
  4255d0:	afbc0020 	sw	gp,32(sp)
  4255d4:	03a0f021 	move	s8,sp
  4255d8:	afc40030 	sw	a0,48(s8)


struct state *
find_phase1_state_with_peer(const ip_address *peer)
{
    struct state *st;
    int i;

    for (i = 0; i < STATE_TABLE_SIZE; i++)
  4255dc:	afc0001c 	sw	zero,28(s8)
  4255e0:	8fc2001c 	lw	v0,28(s8)
  4255e4:	00000000 	nop
  4255e8:	28420020 	slti	v0,v0,32
  4255ec:	14400003 	bnez	v0,4255fc <find_phase1_state_with_peer+0x48>
  4255f0:	00000000 	nop
  4255f4:	10000053 	b	425744 <find_phase1_state_with_peer+0x190>
  4255f8:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  4255fc:	8fc2001c 	lw	v0,28(s8)
  425600:	00000000 	nop
  425604:	00021080 	sll	v0,v0,0x2
  425608:	8f818018 	lw	at,-32744(gp)
  42560c:	00000000 	nop
  425610:	24216998 	addiu	at,at,27032
  425614:	00221021 	addu	v0,at,v0
  425618:	8c420000 	lw	v0,0(v0)
  42561c:	00000000 	nop
  425620:	afc20018 	sw	v0,24(s8)
  425624:	8fc20018 	lw	v0,24(s8)
  425628:	00000000 	nop
  42562c:	14400007 	bnez	v0,42564c <find_phase1_state_with_peer+0x98>
  425630:	00000000 	nop
  425634:	8fc2001c 	lw	v0,28(s8)
  425638:	00000000 	nop
  42563c:	24420001 	addiu	v0,v0,1
  425640:	afc2001c 	sw	v0,28(s8)
  425644:	1000ffe6 	b	4255e0 <find_phase1_state_with_peer+0x2c>
  425648:	00000000 	nop
	    if ( (IS_ISAKMP_SA_ESTABLISHED(st->st_state)) 
	        && sameaddr(peer, &st->st_connection->that.host_addr) ) {
  42564c:	8fc20018 	lw	v0,24(s8)
  425650:	00000000 	nop
  425654:	8c43014c 	lw	v1,332(v0)
  425658:	24020009 	li	v0,9
  42565c:	10620021 	beq	v1,v0,4256e4 <find_phase1_state_with_peer+0x130>
  425660:	00000000 	nop
  425664:	8fc20018 	lw	v0,24(s8)
  425668:	00000000 	nop
  42566c:	8c43014c 	lw	v1,332(v0)
  425670:	2402000a 	li	v0,10
  425674:	1062001b 	beq	v1,v0,4256e4 <find_phase1_state_with_peer+0x130>
  425678:	00000000 	nop
  42567c:	8fc20018 	lw	v0,24(s8)
  425680:	00000000 	nop
  425684:	8c43014c 	lw	v1,332(v0)
  425688:	2402000e 	li	v0,14
  42568c:	10620015 	beq	v1,v0,4256e4 <find_phase1_state_with_peer+0x130>
  425690:	00000000 	nop
  425694:	8fc20018 	lw	v0,24(s8)
  425698:	00000000 	nop
  42569c:	8c43014c 	lw	v1,332(v0)
  4256a0:	2402000f 	li	v0,15
  4256a4:	1062000f 	beq	v1,v0,4256e4 <find_phase1_state_with_peer+0x130>
  4256a8:	00000000 	nop
  4256ac:	8fc20018 	lw	v0,24(s8)
  4256b0:	00000000 	nop
  4256b4:	8c43014c 	lw	v1,332(v0)
  4256b8:	24020010 	li	v0,16
  4256bc:	10620009 	beq	v1,v0,4256e4 <find_phase1_state_with_peer+0x130>
  4256c0:	00000000 	nop
  4256c4:	8fc20018 	lw	v0,24(s8)
  4256c8:	00000000 	nop
  4256cc:	8c43014c 	lw	v1,332(v0)
  4256d0:	24020011 	li	v0,17
  4256d4:	10620003 	beq	v1,v0,4256e4 <find_phase1_state_with_peer+0x130>
  4256d8:	00000000 	nop
  4256dc:	10000012 	b	425728 <find_phase1_state_with_peer+0x174>
  4256e0:	00000000 	nop
  4256e4:	8fc20018 	lw	v0,24(s8)
  4256e8:	00000000 	nop
  4256ec:	8c42000c 	lw	v0,12(v0)
  4256f0:	00000000 	nop
  4256f4:	24420108 	addiu	v0,v0,264
  4256f8:	8fc40030 	lw	a0,48(s8)
  4256fc:	00402821 	move	a1,v0
  425700:	8f998928 	lw	t9,-30424(gp)
  425704:	00000000 	nop
  425708:	0320f809 	jalr	t9
  42570c:	00000000 	nop
  425710:	8fdc0010 	lw	gp,16(s8)
  425714:	10400004 	beqz	v0,425728 <find_phase1_state_with_peer+0x174>
  425718:	00000000 	nop
			return st;
  42571c:	8fc20018 	lw	v0,24(s8)
  425720:	10000009 	b	425748 <find_phase1_state_with_peer+0x194>
  425724:	00000000 	nop
  425728:	8fc20018 	lw	v0,24(s8)
  42572c:	00000000 	nop
  425730:	8c42025c 	lw	v0,604(v0)
  425734:	00000000 	nop
  425738:	afc20018 	sw	v0,24(s8)
  42573c:	1000ffb9 	b	425624 <find_phase1_state_with_peer+0x70>
  425740:	00000000 	nop
            }	
    return NULL;
  425744:	00001021 	move	v0,zero
}
  425748:	03c0e821 	move	sp,s8
  42574c:	8fbf0028 	lw	ra,40(sp)
  425750:	8fbe0024 	lw	s8,36(sp)
  425754:	27bd0030 	addiu	sp,sp,48
  425758:	03e00008 	jr	ra
  42575c:	00000000 	nop

00425760 <delete_phase1_states>:
  425760:	3c1c0fbe 	lui	gp,0xfbe
  425764:	279c7210 	addiu	gp,gp,29200
  425768:	0399e021 	addu	gp,gp,t9
  42576c:	27bdffd0 	addiu	sp,sp,-48
  425770:	afbc0010 	sw	gp,16(sp)
  425774:	afbf0028 	sw	ra,40(sp)
  425778:	afbe0024 	sw	s8,36(sp)
  42577c:	afbc0020 	sw	gp,32(sp)
  425780:	03a0f021 	move	s8,sp

// for test only
struct state *
delete_phase1_states()
{
    struct state *st;
    int i;

    for (i = 0; i < STATE_TABLE_SIZE; i++)
  425784:	afc0001c 	sw	zero,28(s8)
  425788:	8fc2001c 	lw	v0,28(s8)
  42578c:	00000000 	nop
  425790:	28420020 	slti	v0,v0,32
  425794:	14400003 	bnez	v0,4257a4 <delete_phase1_states+0x44>
  425798:	00000000 	nop
  42579c:	10000038 	b	425880 <delete_phase1_states+0x120>
  4257a0:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  4257a4:	8fc2001c 	lw	v0,28(s8)
  4257a8:	00000000 	nop
  4257ac:	00021080 	sll	v0,v0,0x2
  4257b0:	8f818018 	lw	at,-32744(gp)
  4257b4:	00000000 	nop
  4257b8:	24216998 	addiu	at,at,27032
  4257bc:	00221021 	addu	v0,at,v0
  4257c0:	8c420000 	lw	v0,0(v0)
  4257c4:	00000000 	nop
  4257c8:	afc20018 	sw	v0,24(s8)
  4257cc:	8fc20018 	lw	v0,24(s8)
  4257d0:	00000000 	nop
  4257d4:	14400007 	bnez	v0,4257f4 <delete_phase1_states+0x94>
  4257d8:	00000000 	nop
  4257dc:	8fc2001c 	lw	v0,28(s8)
  4257e0:	00000000 	nop
  4257e4:	24420001 	addiu	v0,v0,1
  4257e8:	afc2001c 	sw	v0,28(s8)
  4257ec:	1000ffe6 	b	425788 <delete_phase1_states+0x28>
  4257f0:	00000000 	nop
	    if ( (IS_PHASE1(st->st_state)) )
  4257f4:	8fc20018 	lw	v0,24(s8)
  4257f8:	00000000 	nop
  4257fc:	8c42014c 	lw	v0,332(v0)
  425800:	00000000 	nop
  425804:	2c420003 	sltiu	v0,v0,3
  425808:	14400016 	bnez	v0,425864 <delete_phase1_states+0x104>
  42580c:	00000000 	nop
  425810:	8fc20018 	lw	v0,24(s8)
  425814:	00000000 	nop
  425818:	8c42014c 	lw	v0,332(v0)
  42581c:	00000000 	nop
  425820:	2c420010 	sltiu	v0,v0,16
  425824:	1040000f 	beqz	v0,425864 <delete_phase1_states+0x104>
  425828:	00000000 	nop
		{
			delete_phase2_states(st);
  42582c:	8fc40018 	lw	a0,24(s8)
  425830:	8f9981b8 	lw	t9,-32328(gp)
  425834:	00000000 	nop
  425838:	0320f809 	jalr	t9
  42583c:	00000000 	nop
  425840:	8fdc0010 	lw	gp,16(s8)
  425844:	00000000 	nop
			delete_state(st);
  425848:	8fc40018 	lw	a0,24(s8)
  42584c:	8f998b70 	lw	t9,-29840(gp)
  425850:	00000000 	nop
  425854:	0320f809 	jalr	t9
  425858:	00000000 	nop
  42585c:	8fdc0010 	lw	gp,16(s8)
  425860:	00000000 	nop
  425864:	8fc20018 	lw	v0,24(s8)
  425868:	00000000 	nop
  42586c:	8c42025c 	lw	v0,604(v0)
  425870:	00000000 	nop
  425874:	afc20018 	sw	v0,24(s8)
  425878:	1000ffd4 	b	4257cc <delete_phase1_states+0x6c>
  42587c:	00000000 	nop
		}
    return NULL;
  425880:	00001021 	move	v0,zero
}
  425884:	03c0e821 	move	sp,s8
  425888:	8fbf0028 	lw	ra,40(sp)
  42588c:	8fbe0024 	lw	s8,36(sp)
  425890:	27bd0030 	addiu	sp,sp,48
  425894:	03e00008 	jr	ra
  425898:	00000000 	nop

0042589c <find_phase2_state_to_delete>:
  42589c:	3c1c0fbe 	lui	gp,0xfbe
  4258a0:	279c70d4 	addiu	gp,gp,28884
  4258a4:	0399e021 	addu	gp,gp,t9
  4258a8:	27bdffc8 	addiu	sp,sp,-56
  4258ac:	afbc0010 	sw	gp,16(sp)
  4258b0:	afbf0030 	sw	ra,48(sp)
  4258b4:	afbe002c 	sw	s8,44(sp)
  4258b8:	afbc0028 	sw	gp,40(sp)
  4258bc:	03a0f021 	move	s8,sp
  4258c0:	afc40038 	sw	a0,56(s8)
  4258c4:	00a01021 	move	v0,a1
  4258c8:	afc60040 	sw	a2,64(s8)
  4258cc:	afc70044 	sw	a3,68(s8)
  4258d0:	a3c20018 	sb	v0,24(s8)

#endif /* KENNY_INITIAL_CONTACT*/


struct state *
find_phase2_state_to_delete(const struct state *p1st, u_int8_t protoid,
    ipsec_spi_t spi, bool *bogus)
{
    struct state *st;
    int i;

    if (bogus) *bogus = FALSE;
  4258d4:	8fc20044 	lw	v0,68(s8)
  4258d8:	00000000 	nop
  4258dc:	10400004 	beqz	v0,4258f0 <find_phase2_state_to_delete+0x54>
  4258e0:	00000000 	nop
  4258e4:	8fc20044 	lw	v0,68(s8)
  4258e8:	00000000 	nop
  4258ec:	ac400000 	sw	zero,0(v0)
    for (i = 0; i < STATE_TABLE_SIZE; i++)
  4258f0:	afc00020 	sw	zero,32(s8)
  4258f4:	8fc20020 	lw	v0,32(s8)
  4258f8:	00000000 	nop
  4258fc:	28420020 	slti	v0,v0,32
  425900:	14400003 	bnez	v0,425910 <find_phase2_state_to_delete+0x74>
  425904:	00000000 	nop
  425908:	1000009f 	b	425b88 <find_phase2_state_to_delete+0x2ec>
  42590c:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  425910:	8fc20020 	lw	v0,32(s8)
  425914:	00000000 	nop
  425918:	00021080 	sll	v0,v0,0x2
  42591c:	8f818018 	lw	at,-32744(gp)
  425920:	00000000 	nop
  425924:	24216998 	addiu	at,at,27032
  425928:	00221021 	addu	v0,at,v0
  42592c:	8c420000 	lw	v0,0(v0)
  425930:	00000000 	nop
  425934:	afc2001c 	sw	v0,28(s8)
  425938:	8fc2001c 	lw	v0,28(s8)
  42593c:	00000000 	nop
  425940:	14400007 	bnez	v0,425960 <find_phase2_state_to_delete+0xc4>
  425944:	00000000 	nop
  425948:	8fc20020 	lw	v0,32(s8)
  42594c:	00000000 	nop
  425950:	24420001 	addiu	v0,v0,1
  425954:	afc20020 	sw	v0,32(s8)
  425958:	1000ffe6 	b	4258f4 <find_phase2_state_to_delete+0x58>
  42595c:	00000000 	nop
	    if ( (IS_IPSEC_SA_ESTABLISHED(st->st_state))
		&& (p1st->st_connection->host_pair == st->st_connection->host_pair)
		&& (same_peer_ids(p1st->st_connection, st->st_connection, NULL)))
  425960:	8fc2001c 	lw	v0,28(s8)
  425964:	00000000 	nop
  425968:	8c43014c 	lw	v1,332(v0)
  42596c:	24020018 	li	v0,24
  425970:	10620009 	beq	v1,v0,425998 <find_phase2_state_to_delete+0xfc>
  425974:	00000000 	nop
  425978:	8fc2001c 	lw	v0,28(s8)
  42597c:	00000000 	nop
  425980:	8c43014c 	lw	v1,332(v0)
  425984:	24020019 	li	v0,25
  425988:	10620003 	beq	v1,v0,425998 <find_phase2_state_to_delete+0xfc>
  42598c:	00000000 	nop
  425990:	10000076 	b	425b6c <find_phase2_state_to_delete+0x2d0>
  425994:	00000000 	nop
  425998:	8fc20038 	lw	v0,56(s8)
  42599c:	00000000 	nop
  4259a0:	8c43000c 	lw	v1,12(v0)
  4259a4:	8fc2001c 	lw	v0,28(s8)
  4259a8:	00000000 	nop
  4259ac:	8c42000c 	lw	v0,12(v0)
  4259b0:	8c6301c4 	lw	v1,452(v1)
  4259b4:	8c4201c4 	lw	v0,452(v0)
  4259b8:	00000000 	nop
  4259bc:	1462006b 	bne	v1,v0,425b6c <find_phase2_state_to_delete+0x2d0>
  4259c0:	00000000 	nop
  4259c4:	8fc20038 	lw	v0,56(s8)
  4259c8:	00000000 	nop
  4259cc:	8c44000c 	lw	a0,12(v0)
  4259d0:	8fc2001c 	lw	v0,28(s8)
  4259d4:	00000000 	nop
  4259d8:	8c45000c 	lw	a1,12(v0)
  4259dc:	00003021 	move	a2,zero
  4259e0:	8f9988fc 	lw	t9,-30468(gp)
  4259e4:	00000000 	nop
  4259e8:	0320f809 	jalr	t9
  4259ec:	00000000 	nop
  4259f0:	8fdc0010 	lw	gp,16(s8)
  4259f4:	1040005d 	beqz	v0,425b6c <find_phase2_state_to_delete+0x2d0>
  4259f8:	00000000 	nop
		{
		    if ((protoid == PROTO_IPSEC_ESP) && (st->st_esp.present)
			&&(st->st_esp.attrs.spi == spi))
  4259fc:	93c30018 	lbu	v1,24(s8)
  425a00:	24020003 	li	v0,3
  425a04:	14620011 	bne	v1,v0,425a4c <find_phase2_state_to_delete+0x1b0>
  425a08:	00000000 	nop
  425a0c:	8fc2001c 	lw	v0,28(s8)
  425a10:	00000000 	nop
  425a14:	8c420068 	lw	v0,104(v0)
  425a18:	00000000 	nop
  425a1c:	1040000b 	beqz	v0,425a4c <find_phase2_state_to_delete+0x1b0>
  425a20:	00000000 	nop
  425a24:	8fc2001c 	lw	v0,28(s8)
  425a28:	00000000 	nop
  425a2c:	8c430070 	lw	v1,112(v0)
  425a30:	8fc20040 	lw	v0,64(s8)
  425a34:	00000000 	nop
  425a38:	14620004 	bne	v1,v0,425a4c <find_phase2_state_to_delete+0x1b0>
  425a3c:	00000000 	nop
			return st;
  425a40:	8fc2001c 	lw	v0,28(s8)
  425a44:	10000051 	b	425b8c <find_phase2_state_to_delete+0x2f0>
  425a48:	00000000 	nop
		    else if ((protoid == PROTO_IPSEC_AH) && (st->st_ah.present)
			&& (st->st_ah.attrs.spi == spi))
  425a4c:	93c30018 	lbu	v1,24(s8)
  425a50:	24020002 	li	v0,2
  425a54:	14620011 	bne	v1,v0,425a9c <find_phase2_state_to_delete+0x200>
  425a58:	00000000 	nop
  425a5c:	8fc2001c 	lw	v0,28(s8)
  425a60:	00000000 	nop
  425a64:	8c42003c 	lw	v0,60(v0)
  425a68:	00000000 	nop
  425a6c:	1040000b 	beqz	v0,425a9c <find_phase2_state_to_delete+0x200>
  425a70:	00000000 	nop
  425a74:	8fc2001c 	lw	v0,28(s8)
  425a78:	00000000 	nop
  425a7c:	8c430044 	lw	v1,68(v0)
  425a80:	8fc20040 	lw	v0,64(s8)
  425a84:	00000000 	nop
  425a88:	14620004 	bne	v1,v0,425a9c <find_phase2_state_to_delete+0x200>
  425a8c:	00000000 	nop
			return st;
  425a90:	8fc2001c 	lw	v0,28(s8)
  425a94:	1000003d 	b	425b8c <find_phase2_state_to_delete+0x2f0>
  425a98:	00000000 	nop
		    else if ((protoid == PROTO_IPSEC_ESP) && (st->st_esp.present)
			&& (st->st_esp.our_spi == spi) && (bogus))
  425a9c:	93c30018 	lbu	v1,24(s8)
  425aa0:	24020003 	li	v0,3
  425aa4:	14620018 	bne	v1,v0,425b08 <find_phase2_state_to_delete+0x26c>
  425aa8:	00000000 	nop
  425aac:	8fc2001c 	lw	v0,28(s8)
  425ab0:	00000000 	nop
  425ab4:	8c420068 	lw	v0,104(v0)
  425ab8:	00000000 	nop
  425abc:	10400012 	beqz	v0,425b08 <find_phase2_state_to_delete+0x26c>
  425ac0:	00000000 	nop
  425ac4:	8fc2001c 	lw	v0,28(s8)
  425ac8:	00000000 	nop
  425acc:	8c430084 	lw	v1,132(v0)
  425ad0:	8fc20040 	lw	v0,64(s8)
  425ad4:	00000000 	nop
  425ad8:	1462000b 	bne	v1,v0,425b08 <find_phase2_state_to_delete+0x26c>
  425adc:	00000000 	nop
  425ae0:	8fc20044 	lw	v0,68(s8)
  425ae4:	00000000 	nop
  425ae8:	10400007 	beqz	v0,425b08 <find_phase2_state_to_delete+0x26c>
  425aec:	00000000 	nop
			*bogus = TRUE;
  425af0:	24030001 	li	v1,1
  425af4:	8fc20044 	lw	v0,68(s8)
  425af8:	00000000 	nop
  425afc:	ac430000 	sw	v1,0(v0)
  425b00:	1000001a 	b	425b6c <find_phase2_state_to_delete+0x2d0>
  425b04:	00000000 	nop
		    else if ((protoid == PROTO_IPSEC_AH) && (st->st_ah.present)
			&& (st->st_ah.our_spi == spi) && (bogus))
  425b08:	93c30018 	lbu	v1,24(s8)
  425b0c:	24020002 	li	v0,2
  425b10:	14620016 	bne	v1,v0,425b6c <find_phase2_state_to_delete+0x2d0>
  425b14:	00000000 	nop
  425b18:	8fc2001c 	lw	v0,28(s8)
  425b1c:	00000000 	nop
  425b20:	8c42003c 	lw	v0,60(v0)
  425b24:	00000000 	nop
  425b28:	10400010 	beqz	v0,425b6c <find_phase2_state_to_delete+0x2d0>
  425b2c:	00000000 	nop
  425b30:	8fc2001c 	lw	v0,28(s8)
  425b34:	00000000 	nop
  425b38:	8c430058 	lw	v1,88(v0)
  425b3c:	8fc20040 	lw	v0,64(s8)
  425b40:	00000000 	nop
  425b44:	14620009 	bne	v1,v0,425b6c <find_phase2_state_to_delete+0x2d0>
  425b48:	00000000 	nop
  425b4c:	8fc20044 	lw	v0,68(s8)
  425b50:	00000000 	nop
  425b54:	10400005 	beqz	v0,425b6c <find_phase2_state_to_delete+0x2d0>
  425b58:	00000000 	nop
			*bogus = TRUE;
  425b5c:	24030001 	li	v1,1
  425b60:	8fc20044 	lw	v0,68(s8)
  425b64:	00000000 	nop
  425b68:	ac430000 	sw	v1,0(v0)
  425b6c:	8fc2001c 	lw	v0,28(s8)
  425b70:	00000000 	nop
  425b74:	8c42025c 	lw	v0,604(v0)
  425b78:	00000000 	nop
  425b7c:	afc2001c 	sw	v0,28(s8)
  425b80:	1000ff6d 	b	425938 <find_phase2_state_to_delete+0x9c>
  425b84:	00000000 	nop
		}
    return NULL;
  425b88:	00001021 	move	v0,zero
}
  425b8c:	03c0e821 	move	sp,s8
  425b90:	8fbf0030 	lw	ra,48(sp)
  425b94:	8fbe002c 	lw	s8,44(sp)
  425b98:	27bd0038 	addiu	sp,sp,56
  425b9c:	03e00008 	jr	ra
  425ba0:	00000000 	nop

00425ba4 <find_phase1_state_to_delete>:
  425ba4:	3c1c0fbe 	lui	gp,0xfbe
  425ba8:	279c6dcc 	addiu	gp,gp,28108
  425bac:	0399e021 	addu	gp,gp,t9
  425bb0:	27bdffd0 	addiu	sp,sp,-48
  425bb4:	afbc0010 	sw	gp,16(sp)
  425bb8:	afbf0028 	sw	ra,40(sp)
  425bbc:	afbe0024 	sw	s8,36(sp)
  425bc0:	afbc0020 	sw	gp,32(sp)
  425bc4:	03a0f021 	move	s8,sp
  425bc8:	afc40030 	sw	a0,48(s8)
  425bcc:	afc50034 	sw	a1,52(s8)
  425bd0:	afc60038 	sw	a2,56(s8)

struct state *
find_phase1_state_to_delete(const struct state *p1st,
    const u_char *icookie, const u_char *rcookie)
{
    struct state *st;
    int i;

    for (i = 0; i < STATE_TABLE_SIZE; i++)
  425bd4:	afc0001c 	sw	zero,28(s8)
  425bd8:	8fc2001c 	lw	v0,28(s8)
  425bdc:	00000000 	nop
  425be0:	28420020 	slti	v0,v0,32
  425be4:	14400003 	bnez	v0,425bf4 <find_phase1_state_to_delete+0x50>
  425be8:	00000000 	nop
  425bec:	10000078 	b	425dd0 <find_phase1_state_to_delete+0x22c>
  425bf0:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  425bf4:	8fc2001c 	lw	v0,28(s8)
  425bf8:	00000000 	nop
  425bfc:	00021080 	sll	v0,v0,0x2
  425c00:	8f818018 	lw	at,-32744(gp)
  425c04:	00000000 	nop
  425c08:	24216998 	addiu	at,at,27032
  425c0c:	00221021 	addu	v0,at,v0
  425c10:	8c420000 	lw	v0,0(v0)
  425c14:	00000000 	nop
  425c18:	afc20018 	sw	v0,24(s8)
  425c1c:	8fc20018 	lw	v0,24(s8)
  425c20:	00000000 	nop
  425c24:	14400007 	bnez	v0,425c44 <find_phase1_state_to_delete+0xa0>
  425c28:	00000000 	nop
  425c2c:	8fc2001c 	lw	v0,28(s8)
  425c30:	00000000 	nop
  425c34:	24420001 	addiu	v0,v0,1
  425c38:	afc2001c 	sw	v0,28(s8)
  425c3c:	1000ffe6 	b	425bd8 <find_phase1_state_to_delete+0x34>
  425c40:	00000000 	nop
	    if ( (IS_ISAKMP_SA_ESTABLISHED(st->st_state))
		&& (memcmp(icookie, st->st_icookie, COOKIE_SIZE) == 0)
		&& (memcmp(rcookie, st->st_rcookie, COOKIE_SIZE) == 0)
		&& (p1st->st_connection->host_pair == st->st_connection->host_pair)
		&& (same_peer_ids(p1st->st_connection, st->st_connection, NULL)) ) {
  425c44:	8fc20018 	lw	v0,24(s8)
  425c48:	00000000 	nop
  425c4c:	8c43014c 	lw	v1,332(v0)
  425c50:	24020009 	li	v0,9
  425c54:	10620021 	beq	v1,v0,425cdc <find_phase1_state_to_delete+0x138>
  425c58:	00000000 	nop
  425c5c:	8fc20018 	lw	v0,24(s8)
  425c60:	00000000 	nop
  425c64:	8c43014c 	lw	v1,332(v0)
  425c68:	2402000a 	li	v0,10
  425c6c:	1062001b 	beq	v1,v0,425cdc <find_phase1_state_to_delete+0x138>
  425c70:	00000000 	nop
  425c74:	8fc20018 	lw	v0,24(s8)
  425c78:	00000000 	nop
  425c7c:	8c43014c 	lw	v1,332(v0)
  425c80:	2402000e 	li	v0,14
  425c84:	10620015 	beq	v1,v0,425cdc <find_phase1_state_to_delete+0x138>
  425c88:	00000000 	nop
  425c8c:	8fc20018 	lw	v0,24(s8)
  425c90:	00000000 	nop
  425c94:	8c43014c 	lw	v1,332(v0)
  425c98:	2402000f 	li	v0,15
  425c9c:	1062000f 	beq	v1,v0,425cdc <find_phase1_state_to_delete+0x138>
  425ca0:	00000000 	nop
  425ca4:	8fc20018 	lw	v0,24(s8)
  425ca8:	00000000 	nop
  425cac:	8c43014c 	lw	v1,332(v0)
  425cb0:	24020010 	li	v0,16
  425cb4:	10620009 	beq	v1,v0,425cdc <find_phase1_state_to_delete+0x138>
  425cb8:	00000000 	nop
  425cbc:	8fc20018 	lw	v0,24(s8)
  425cc0:	00000000 	nop
  425cc4:	8c43014c 	lw	v1,332(v0)
  425cc8:	24020011 	li	v0,17
  425ccc:	10620003 	beq	v1,v0,425cdc <find_phase1_state_to_delete+0x138>
  425cd0:	00000000 	nop
  425cd4:	10000037 	b	425db4 <find_phase1_state_to_delete+0x210>
  425cd8:	00000000 	nop
  425cdc:	8fc20018 	lw	v0,24(s8)
  425ce0:	00000000 	nop
  425ce4:	244200f0 	addiu	v0,v0,240
  425ce8:	8fc40034 	lw	a0,52(s8)
  425cec:	00402821 	move	a1,v0
  425cf0:	24060008 	li	a2,8
  425cf4:	8f9985c8 	lw	t9,-31288(gp)
  425cf8:	00000000 	nop
  425cfc:	0320f809 	jalr	t9
  425d00:	00000000 	nop
  425d04:	8fdc0010 	lw	gp,16(s8)
  425d08:	1440002a 	bnez	v0,425db4 <find_phase1_state_to_delete+0x210>
  425d0c:	00000000 	nop
  425d10:	8fc20018 	lw	v0,24(s8)
  425d14:	00000000 	nop
  425d18:	24420108 	addiu	v0,v0,264
  425d1c:	8fc40038 	lw	a0,56(s8)
  425d20:	00402821 	move	a1,v0
  425d24:	24060008 	li	a2,8
  425d28:	8f9985c8 	lw	t9,-31288(gp)
  425d2c:	00000000 	nop
  425d30:	0320f809 	jalr	t9
  425d34:	00000000 	nop
  425d38:	8fdc0010 	lw	gp,16(s8)
  425d3c:	1440001d 	bnez	v0,425db4 <find_phase1_state_to_delete+0x210>
  425d40:	00000000 	nop
  425d44:	8fc20030 	lw	v0,48(s8)
  425d48:	00000000 	nop
  425d4c:	8c43000c 	lw	v1,12(v0)
  425d50:	8fc20018 	lw	v0,24(s8)
  425d54:	00000000 	nop
  425d58:	8c42000c 	lw	v0,12(v0)
  425d5c:	8c6301c4 	lw	v1,452(v1)
  425d60:	8c4201c4 	lw	v0,452(v0)
  425d64:	00000000 	nop
  425d68:	14620012 	bne	v1,v0,425db4 <find_phase1_state_to_delete+0x210>
  425d6c:	00000000 	nop
  425d70:	8fc20030 	lw	v0,48(s8)
  425d74:	00000000 	nop
  425d78:	8c44000c 	lw	a0,12(v0)
  425d7c:	8fc20018 	lw	v0,24(s8)
  425d80:	00000000 	nop
  425d84:	8c45000c 	lw	a1,12(v0)
  425d88:	00003021 	move	a2,zero
  425d8c:	8f9988fc 	lw	t9,-30468(gp)
  425d90:	00000000 	nop
  425d94:	0320f809 	jalr	t9
  425d98:	00000000 	nop
  425d9c:	8fdc0010 	lw	gp,16(s8)
  425da0:	10400004 	beqz	v0,425db4 <find_phase1_state_to_delete+0x210>
  425da4:	00000000 	nop
		    return st;
  425da8:	8fc20018 	lw	v0,24(s8)
  425dac:	10000009 	b	425dd4 <find_phase1_state_to_delete+0x230>
  425db0:	00000000 	nop
  425db4:	8fc20018 	lw	v0,24(s8)
  425db8:	00000000 	nop
  425dbc:	8c42025c 	lw	v0,604(v0)
  425dc0:	00000000 	nop
  425dc4:	afc20018 	sw	v0,24(s8)
  425dc8:	1000ff94 	b	425c1c <find_phase1_state_to_delete+0x78>
  425dcc:	00000000 	nop
		}
    return NULL;
  425dd0:	00001021 	move	v0,zero
}
  425dd4:	03c0e821 	move	sp,s8
  425dd8:	8fbf0028 	lw	ra,40(sp)
  425ddc:	8fbe0024 	lw	s8,36(sp)
  425de0:	27bd0030 	addiu	sp,sp,48
  425de4:	03e00008 	jr	ra
  425de8:	00000000 	nop

00425dec <find_phase1_state>:
  425dec:	3c1c0fbe 	lui	gp,0xfbe
  425df0:	279c6b84 	addiu	gp,gp,27524
  425df4:	0399e021 	addu	gp,gp,t9
  425df8:	27bdffc8 	addiu	sp,sp,-56
  425dfc:	afbc0010 	sw	gp,16(sp)
  425e00:	afbf0030 	sw	ra,48(sp)
  425e04:	afbe002c 	sw	s8,44(sp)
  425e08:	afbc0028 	sw	gp,40(sp)
  425e0c:	03a0f021 	move	s8,sp
  425e10:	afc40038 	sw	a0,56(s8)
  425e14:	afc5003c 	sw	a1,60(s8)

/* Find newest Phase 1 negotiation state object for suitable for connection c
 */
struct state *
find_phase1_state(const struct connection *c, bool established)
{
    struct state
	*st,
	*best = NULL;
  425e18:	afc0001c 	sw	zero,28(s8)
    int i;

    for (i = 0; i < STATE_TABLE_SIZE; i++)
  425e1c:	afc00020 	sw	zero,32(s8)
  425e20:	8fc20020 	lw	v0,32(s8)
  425e24:	00000000 	nop
  425e28:	28420020 	slti	v0,v0,32
  425e2c:	14400003 	bnez	v0,425e3c <find_phase1_state+0x50>
  425e30:	00000000 	nop
  425e34:	1000007d 	b	42602c <find_phase1_state+0x240>
  425e38:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  425e3c:	8fc20020 	lw	v0,32(s8)
  425e40:	00000000 	nop
  425e44:	00021080 	sll	v0,v0,0x2
  425e48:	8f818018 	lw	at,-32744(gp)
  425e4c:	00000000 	nop
  425e50:	24216998 	addiu	at,at,27032
  425e54:	00221021 	addu	v0,at,v0
  425e58:	8c420000 	lw	v0,0(v0)
  425e5c:	00000000 	nop
  425e60:	afc20018 	sw	v0,24(s8)
  425e64:	8fc20018 	lw	v0,24(s8)
  425e68:	00000000 	nop
  425e6c:	14400007 	bnez	v0,425e8c <find_phase1_state+0xa0>
  425e70:	00000000 	nop
  425e74:	8fc20020 	lw	v0,32(s8)
  425e78:	00000000 	nop
  425e7c:	24420001 	addiu	v0,v0,1
  425e80:	afc20020 	sw	v0,32(s8)
  425e84:	1000ffe6 	b	425e20 <find_phase1_state+0x34>
  425e88:	00000000 	nop
	    if (IS_PHASE1(st->st_state)
	    && (!established || IS_ISAKMP_SA_ESTABLISHED(st->st_state))
	    && c->host_pair == st->st_connection->host_pair
	    && same_peer_ids(c, st->st_connection, NULL)
	    && (best == NULL || best->st_serialno < st->st_serialno))
  425e8c:	8fc20018 	lw	v0,24(s8)
  425e90:	00000000 	nop
  425e94:	8c42014c 	lw	v0,332(v0)
  425e98:	00000000 	nop
  425e9c:	2c420003 	sltiu	v0,v0,3
  425ea0:	1440005b 	bnez	v0,426010 <find_phase1_state+0x224>
  425ea4:	00000000 	nop
  425ea8:	8fc20018 	lw	v0,24(s8)
  425eac:	00000000 	nop
  425eb0:	8c42014c 	lw	v0,332(v0)
  425eb4:	00000000 	nop
  425eb8:	2c420010 	sltiu	v0,v0,16
  425ebc:	10400054 	beqz	v0,426010 <find_phase1_state+0x224>
  425ec0:	00000000 	nop
  425ec4:	8fc2003c 	lw	v0,60(s8)
  425ec8:	00000000 	nop
  425ecc:	10400027 	beqz	v0,425f6c <find_phase1_state+0x180>
  425ed0:	00000000 	nop
  425ed4:	8fc20018 	lw	v0,24(s8)
  425ed8:	00000000 	nop
  425edc:	8c43014c 	lw	v1,332(v0)
  425ee0:	24020009 	li	v0,9
  425ee4:	10620021 	beq	v1,v0,425f6c <find_phase1_state+0x180>
  425ee8:	00000000 	nop
  425eec:	8fc20018 	lw	v0,24(s8)
  425ef0:	00000000 	nop
  425ef4:	8c43014c 	lw	v1,332(v0)
  425ef8:	2402000a 	li	v0,10
  425efc:	1062001b 	beq	v1,v0,425f6c <find_phase1_state+0x180>
  425f00:	00000000 	nop
  425f04:	8fc20018 	lw	v0,24(s8)
  425f08:	00000000 	nop
  425f0c:	8c43014c 	lw	v1,332(v0)
  425f10:	2402000e 	li	v0,14
  425f14:	10620015 	beq	v1,v0,425f6c <find_phase1_state+0x180>
  425f18:	00000000 	nop
  425f1c:	8fc20018 	lw	v0,24(s8)
  425f20:	00000000 	nop
  425f24:	8c43014c 	lw	v1,332(v0)
  425f28:	2402000f 	li	v0,15
  425f2c:	1062000f 	beq	v1,v0,425f6c <find_phase1_state+0x180>
  425f30:	00000000 	nop
  425f34:	8fc20018 	lw	v0,24(s8)
  425f38:	00000000 	nop
  425f3c:	8c43014c 	lw	v1,332(v0)
  425f40:	24020010 	li	v0,16
  425f44:	10620009 	beq	v1,v0,425f6c <find_phase1_state+0x180>
  425f48:	00000000 	nop
  425f4c:	8fc20018 	lw	v0,24(s8)
  425f50:	00000000 	nop
  425f54:	8c43014c 	lw	v1,332(v0)
  425f58:	24020011 	li	v0,17
  425f5c:	10620003 	beq	v1,v0,425f6c <find_phase1_state+0x180>
  425f60:	00000000 	nop
  425f64:	1000002a 	b	426010 <find_phase1_state+0x224>
  425f68:	00000000 	nop
  425f6c:	8fc20018 	lw	v0,24(s8)
  425f70:	00000000 	nop
  425f74:	8c44000c 	lw	a0,12(v0)
  425f78:	8fc20038 	lw	v0,56(s8)
  425f7c:	00000000 	nop
  425f80:	8c4301c4 	lw	v1,452(v0)
  425f84:	8c8201c4 	lw	v0,452(a0)
  425f88:	00000000 	nop
  425f8c:	14620020 	bne	v1,v0,426010 <find_phase1_state+0x224>
  425f90:	00000000 	nop
  425f94:	8fc40038 	lw	a0,56(s8)
  425f98:	8fc20018 	lw	v0,24(s8)
  425f9c:	00000000 	nop
  425fa0:	8c45000c 	lw	a1,12(v0)
  425fa4:	00003021 	move	a2,zero
  425fa8:	8f9988fc 	lw	t9,-30468(gp)
  425fac:	00000000 	nop
  425fb0:	0320f809 	jalr	t9
  425fb4:	00000000 	nop
  425fb8:	8fdc0010 	lw	gp,16(s8)
  425fbc:	10400014 	beqz	v0,426010 <find_phase1_state+0x224>
  425fc0:	00000000 	nop
  425fc4:	8fc2001c 	lw	v0,28(s8)
  425fc8:	00000000 	nop
  425fcc:	1040000d 	beqz	v0,426004 <find_phase1_state+0x218>
  425fd0:	00000000 	nop
  425fd4:	8fc2001c 	lw	v0,28(s8)
  425fd8:	00000000 	nop
  425fdc:	8c430000 	lw	v1,0(v0)
  425fe0:	8fc20018 	lw	v0,24(s8)
  425fe4:	00000000 	nop
  425fe8:	8c420000 	lw	v0,0(v0)
  425fec:	00000000 	nop
  425ff0:	0062102b 	sltu	v0,v1,v0
  425ff4:	14400003 	bnez	v0,426004 <find_phase1_state+0x218>
  425ff8:	00000000 	nop
  425ffc:	10000004 	b	426010 <find_phase1_state+0x224>
  426000:	00000000 	nop
		best = st;
  426004:	8fc20018 	lw	v0,24(s8)
  426008:	00000000 	nop
  42600c:	afc2001c 	sw	v0,28(s8)
  426010:	8fc20018 	lw	v0,24(s8)
  426014:	00000000 	nop
  426018:	8c42025c 	lw	v0,604(v0)
  42601c:	00000000 	nop
  426020:	afc20018 	sw	v0,24(s8)
  426024:	1000ff8f 	b	425e64 <find_phase1_state+0x78>
  426028:	00000000 	nop

    return best;
  42602c:	8fc2001c 	lw	v0,28(s8)
  426030:	00000000 	nop
}
  426034:	03c0e821 	move	sp,s8
  426038:	8fbf0030 	lw	ra,48(sp)
  42603c:	8fbe002c 	lw	s8,44(sp)
  426040:	27bd0038 	addiu	sp,sp,56
  426044:	03e00008 	jr	ra
  426048:	00000000 	nop

0042604c <show_states_status>:
  42604c:	3c1c0fbe 	lui	gp,0xfbe
  426050:	279c6924 	addiu	gp,gp,26916
  426054:	0399e021 	addu	gp,gp,t9
  426058:	27bdfbc8 	addiu	sp,sp,-1080
  42605c:	afbc0030 	sw	gp,48(sp)
  426060:	afbf0434 	sw	ra,1076(sp)
  426064:	afbe0430 	sw	s8,1072(sp)
  426068:	afbc042c 	sw	gp,1068(sp)
  42606c:	afb00428 	sw	s0,1064(sp)
  426070:	03a0f021 	move	s8,sp

void
show_states_status(void)
{
    time_t n = now();
  426074:	8f998b58 	lw	t9,-29864(gp)
  426078:	00000000 	nop
  42607c:	0320f809 	jalr	t9
  426080:	00000000 	nop
  426084:	8fdc0030 	lw	gp,48(s8)
  426088:	afc20038 	sw	v0,56(s8)
    int i;

    for (i = 0; i < STATE_TABLE_SIZE; i++)
  42608c:	afc0003c 	sw	zero,60(s8)
  426090:	8fc2003c 	lw	v0,60(s8)
  426094:	00000000 	nop
  426098:	28420020 	slti	v0,v0,32
  42609c:	14400003 	bnez	v0,4260ac <show_states_status+0x60>
  4260a0:	00000000 	nop
  4260a4:	100002a3 	b	426b34 <show_states_status+0xae8>
  4260a8:	00000000 	nop
    {
	struct state *st;

	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  4260ac:	8fc2003c 	lw	v0,60(s8)
  4260b0:	00000000 	nop
  4260b4:	00021080 	sll	v0,v0,0x2
  4260b8:	8f818018 	lw	at,-32744(gp)
  4260bc:	00000000 	nop
  4260c0:	24216998 	addiu	at,at,27032
  4260c4:	00221021 	addu	v0,at,v0
  4260c8:	8c420000 	lw	v0,0(v0)
  4260cc:	00000000 	nop
  4260d0:	afc20040 	sw	v0,64(s8)
  4260d4:	8fc20040 	lw	v0,64(s8)
  4260d8:	00000000 	nop
  4260dc:	14400007 	bnez	v0,4260fc <show_states_status+0xb0>
  4260e0:	00000000 	nop
  4260e4:	8fc2003c 	lw	v0,60(s8)
  4260e8:	00000000 	nop
  4260ec:	24420001 	addiu	v0,v0,1
  4260f0:	afc2003c 	sw	v0,60(s8)
  4260f4:	1000ffe6 	b	426090 <show_states_status+0x44>
  4260f8:	00000000 	nop
	{
	    /* what the heck is interesting about a state? */
	    const struct connection *c = st->st_connection;
  4260fc:	8fc20040 	lw	v0,64(s8)
  426100:	00000000 	nop
  426104:	8c42000c 	lw	v0,12(v0)
  426108:	00000000 	nop
  42610c:	afc20044 	sw	v0,68(s8)
	    long delta = st->st_event->ev_time >= n
  426110:	8fc20040 	lw	v0,64(s8)
  426114:	00000000 	nop
  426118:	8c420258 	lw	v0,600(v0)
  42611c:	00000000 	nop
  426120:	8c430000 	lw	v1,0(v0)
  426124:	8fc20038 	lw	v0,56(s8)
  426128:	00000000 	nop
  42612c:	00621023 	subu	v0,v1,v0
  426130:	afc20048 	sw	v0,72(s8)
		? (long)(st->st_event->ev_time - n)
		: -(long)(n - st->st_event->ev_time);
	    char inst[CONN_INST_BUF];
	    const char *np1 = c->newest_isakmp_sa == st->st_serialno
  426134:	8fc20044 	lw	v0,68(s8)
  426138:	00000000 	nop
  42613c:	8c4301a4 	lw	v1,420(v0)
  426140:	8fc20040 	lw	v0,64(s8)
  426144:	00000000 	nop
  426148:	8c420000 	lw	v0,0(v0)
  42614c:	00000000 	nop
  426150:	14620008 	bne	v1,v0,426174 <show_states_status+0x128>
  426154:	00000000 	nop
  426158:	8f82802c 	lw	v0,-32724(gp)
  42615c:	00000000 	nop
  426160:	2442ab0c 	addiu	v0,v0,-21748
  426164:	00000000 	nop
  426168:	afc20418 	sw	v0,1048(s8)
  42616c:	10000006 	b	426188 <show_states_status+0x13c>
  426170:	00000000 	nop
  426174:	8f82802c 	lw	v0,-32724(gp)
  426178:	00000000 	nop
  42617c:	2442ab1c 	addiu	v0,v0,-21732
  426180:	00000000 	nop
  426184:	afc20418 	sw	v0,1048(s8)
  426188:	8fc20418 	lw	v0,1048(s8)
  42618c:	00000000 	nop
  426190:	afc20150 	sw	v0,336(s8)
		? "; newest ISAKMP" : "";
	    const char *np2 = c->newest_ipsec_sa == st->st_serialno
  426194:	8fc20044 	lw	v0,68(s8)
  426198:	00000000 	nop
  42619c:	8c4301a8 	lw	v1,424(v0)
  4261a0:	8fc20040 	lw	v0,64(s8)
  4261a4:	00000000 	nop
  4261a8:	8c420000 	lw	v0,0(v0)
  4261ac:	00000000 	nop
  4261b0:	14620008 	bne	v1,v0,4261d4 <show_states_status+0x188>
  4261b4:	00000000 	nop
  4261b8:	8f82802c 	lw	v0,-32724(gp)
  4261bc:	00000000 	nop
  4261c0:	2442ab20 	addiu	v0,v0,-21728
  4261c4:	00000000 	nop
  4261c8:	afc2041c 	sw	v0,1052(s8)
  4261cc:	10000006 	b	4261e8 <show_states_status+0x19c>
  4261d0:	00000000 	nop
  4261d4:	8f82802c 	lw	v0,-32724(gp)
  4261d8:	00000000 	nop
  4261dc:	2442ab1c 	addiu	v0,v0,-21732
  4261e0:	00000000 	nop
  4261e4:	afc2041c 	sw	v0,1052(s8)
  4261e8:	8fc2041c 	lw	v0,1052(s8)
  4261ec:	00000000 	nop
  4261f0:	afc20154 	sw	v0,340(s8)
		? "; newest IPSEC" : "";
	    const char *eo = c->eroute_owner == st->st_serialno
  4261f4:	8fc20044 	lw	v0,68(s8)
  4261f8:	00000000 	nop
  4261fc:	8c4301ac 	lw	v1,428(v0)
  426200:	8fc20040 	lw	v0,64(s8)
  426204:	00000000 	nop
  426208:	8c420000 	lw	v0,0(v0)
  42620c:	00000000 	nop
  426210:	14620008 	bne	v1,v0,426234 <show_states_status+0x1e8>
  426214:	00000000 	nop
  426218:	8f82802c 	lw	v0,-32724(gp)
  42621c:	00000000 	nop
  426220:	2442ab30 	addiu	v0,v0,-21712
  426224:	00000000 	nop
  426228:	afc20420 	sw	v0,1056(s8)
  42622c:	10000006 	b	426248 <show_states_status+0x1fc>
  426230:	00000000 	nop
  426234:	8f82802c 	lw	v0,-32724(gp)
  426238:	00000000 	nop
  42623c:	2442ab1c 	addiu	v0,v0,-21732
  426240:	00000000 	nop
  426244:	afc20420 	sw	v0,1056(s8)
  426248:	8fc20420 	lw	v0,1056(s8)
  42624c:	00000000 	nop
  426250:	afc20158 	sw	v0,344(s8)
		? "; eroute owner" : "";

	    passert(st->st_event != 0);
  426254:	8fc20040 	lw	v0,64(s8)
  426258:	00000000 	nop
  42625c:	8c420258 	lw	v0,600(v0)
  426260:	00000000 	nop
  426264:	1440000e 	bnez	v0,4262a0 <show_states_status+0x254>
  426268:	00000000 	nop
  42626c:	8f84802c 	lw	a0,-32724(gp)
  426270:	00000000 	nop
  426274:	2484ab40 	addiu	a0,a0,-21696
  426278:	8f85802c 	lw	a1,-32724(gp)
  42627c:	00000000 	nop
  426280:	24a5a610 	addiu	a1,a1,-23024
  426284:	24060364 	li	a2,868
  426288:	8f998bb8 	lw	t9,-29768(gp)
  42628c:	00000000 	nop
  426290:	0320f809 	jalr	t9
  426294:	00000000 	nop
  426298:	8fdc0030 	lw	gp,48(s8)
  42629c:	00000000 	nop

	    fmt_conn_instance(c, inst);
  4262a0:	8fc40044 	lw	a0,68(s8)
  4262a4:	27c50050 	addiu	a1,s8,80
  4262a8:	8f998250 	lw	t9,-32176(gp)
  4262ac:	00000000 	nop
  4262b0:	0320f809 	jalr	t9
  4262b4:	00000000 	nop
  4262b8:	8fdc0030 	lw	gp,48(s8)
  4262bc:	00000000 	nop

	    whack_log(RC_COMMENT
  4262c0:	8f8483b0 	lw	a0,-31824(gp)
  4262c4:	8fc20040 	lw	v0,64(s8)
  4262c8:	00000000 	nop
  4262cc:	8c45014c 	lw	a1,332(v0)
  4262d0:	8f9984bc 	lw	t9,-31556(gp)
  4262d4:	00000000 	nop
  4262d8:	0320f809 	jalr	t9
  4262dc:	00000000 	nop
  4262e0:	8fdc0030 	lw	gp,48(s8)
  4262e4:	00408021 	move	s0,v0
  4262e8:	8fc20040 	lw	v0,64(s8)
  4262ec:	00000000 	nop
  4262f0:	8c420258 	lw	v0,600(v0)
  4262f4:	8f8486b4 	lw	a0,-31052(gp)
  4262f8:	8c450004 	lw	a1,4(v0)
  4262fc:	8f9984bc 	lw	t9,-31556(gp)
  426300:	00000000 	nop
  426304:	0320f809 	jalr	t9
  426308:	00000000 	nop
  42630c:	8fdc0030 	lw	gp,48(s8)
  426310:	00401821 	move	v1,v0
  426314:	27c20050 	addiu	v0,s8,80
  426318:	afa20010 	sw	v0,16(sp)
  42631c:	afb00014 	sw	s0,20(sp)
  426320:	8fc20040 	lw	v0,64(s8)
  426324:	00000000 	nop
  426328:	8c42014c 	lw	v0,332(v0)
  42632c:	00000000 	nop
  426330:	2442fffd 	addiu	v0,v0,-3
  426334:	00021080 	sll	v0,v0,0x2
  426338:	8f818b1c 	lw	at,-29924(gp)
  42633c:	00000000 	nop
  426340:	00221021 	addu	v0,at,v0
  426344:	8c420000 	lw	v0,0(v0)
  426348:	00000000 	nop
  42634c:	afa20018 	sw	v0,24(sp)
  426350:	afa3001c 	sw	v1,28(sp)
  426354:	8fc20048 	lw	v0,72(s8)
  426358:	00000000 	nop
  42635c:	afa20020 	sw	v0,32(sp)
  426360:	8fc20150 	lw	v0,336(s8)
  426364:	00000000 	nop
  426368:	afa20024 	sw	v0,36(sp)
  42636c:	8fc20154 	lw	v0,340(s8)
  426370:	00000000 	nop
  426374:	afa20028 	sw	v0,40(sp)
  426378:	8fc20158 	lw	v0,344(s8)
  42637c:	00000000 	nop
  426380:	afa2002c 	sw	v0,44(sp)
  426384:	00002021 	move	a0,zero
  426388:	8f85802c 	lw	a1,-32724(gp)
  42638c:	00000000 	nop
  426390:	24a5ab54 	addiu	a1,a1,-21676
  426394:	8fc20040 	lw	v0,64(s8)
  426398:	00000000 	nop
  42639c:	8c460000 	lw	a2,0(v0)
  4263a0:	8fc20044 	lw	v0,68(s8)
  4263a4:	00000000 	nop
  4263a8:	8c470000 	lw	a3,0(v0)
  4263ac:	8f9982a8 	lw	t9,-32088(gp)
  4263b0:	00000000 	nop
  4263b4:	0320f809 	jalr	t9
  4263b8:	00000000 	nop
  4263bc:	8fdc0030 	lw	gp,48(s8)
  4263c0:	00000000 	nop
		, "#%lu: \"%s\"%s %s (%s); %s in %lds%s%s%s"
		, st->st_serialno
		, c->name, inst
		, enum_name(&state_names, st->st_state)
		, state_story[st->st_state - STATE_MAIN_R0]
		, enum_name(&timer_event_names, st->st_event->ev_type)
		, delta
		, np1, np2, eo);

	    /* print out SPIs if SAs are established */
	    if (IS_IPSEC_SA_ESTABLISHED(st->st_state))
  4263c4:	8fc20040 	lw	v0,64(s8)
  4263c8:	00000000 	nop
  4263cc:	8c43014c 	lw	v1,332(v0)
  4263d0:	24020018 	li	v0,24
  4263d4:	10620009 	beq	v1,v0,4263fc <show_states_status+0x3b0>
  4263d8:	00000000 	nop
  4263dc:	8fc20040 	lw	v0,64(s8)
  4263e0:	00000000 	nop
  4263e4:	8c43014c 	lw	v1,332(v0)
  4263e8:	24020019 	li	v0,25
  4263ec:	10620003 	beq	v1,v0,4263fc <show_states_status+0x3b0>
  4263f0:	00000000 	nop
  4263f4:	100001c8 	b	426b18 <show_states_status+0xacc>
  4263f8:	00000000 	nop
	    {
		char buf[SATOT_BUF*6 + 1];
		char *p = buf;
  4263fc:	27c20160 	addiu	v0,s8,352
  426400:	afc203c0 	sw	v0,960(s8)

#		define add_said(adst, aspi, aproto) { \
		    ip_said s; \
		    \
		    initsaid(adst, aspi, aproto, &s); \
		    if (p < &buf[sizeof(buf)-1]) \
		    { \
			*p++ = ' '; \
			p += satot(&s, 0, p, &buf[sizeof(buf)] - p) - 1; \
		    } \
		}


		*p = '\0';
  426404:	8fc203c0 	lw	v0,960(s8)
  426408:	00000000 	nop
  42640c:	a0400000 	sb	zero,0(v0)
		if (st->st_ah.present)
  426410:	8fc20040 	lw	v0,64(s8)
  426414:	00000000 	nop
  426418:	8c42003c 	lw	v0,60(v0)
  42641c:	00000000 	nop
  426420:	10400063 	beqz	v0,4265b0 <show_states_status+0x564>
  426424:	00000000 	nop
		{
		    add_said(&c->that.host_addr, st->st_ah.attrs.spi, SA_AH);
  426428:	8fc20044 	lw	v0,68(s8)
  42642c:	00000000 	nop
  426430:	24420108 	addiu	v0,v0,264
  426434:	00402021 	move	a0,v0
  426438:	8fc20040 	lw	v0,64(s8)
  42643c:	00000000 	nop
  426440:	8c450044 	lw	a1,68(v0)
  426444:	24060033 	li	a2,51
  426448:	27c703c8 	addiu	a3,s8,968
  42644c:	8f99817c 	lw	t9,-32388(gp)
  426450:	00000000 	nop
  426454:	0320f809 	jalr	t9
  426458:	00000000 	nop
  42645c:	8fdc0030 	lw	gp,48(s8)
  426460:	27c20160 	addiu	v0,s8,352
  426464:	24430258 	addiu	v1,v0,600
  426468:	8fc203c0 	lw	v0,960(s8)
  42646c:	00000000 	nop
  426470:	0043102b 	sltu	v0,v0,v1
  426474:	1040001d 	beqz	v0,4264ec <show_states_status+0x4a0>
  426478:	00000000 	nop
  42647c:	27c503c0 	addiu	a1,s8,960
  426480:	8ca20000 	lw	v0,0(a1)
  426484:	00000000 	nop
  426488:	00402021 	move	a0,v0
  42648c:	24030020 	li	v1,32
  426490:	a0830000 	sb	v1,0(a0)
  426494:	24420001 	addiu	v0,v0,1
  426498:	aca20000 	sw	v0,0(a1)
  42649c:	27c30160 	addiu	v1,s8,352
  4264a0:	8fc203c0 	lw	v0,960(s8)
  4264a4:	00000000 	nop
  4264a8:	00621023 	subu	v0,v1,v0
  4264ac:	24420259 	addiu	v0,v0,601
  4264b0:	27c403c8 	addiu	a0,s8,968
  4264b4:	00002821 	move	a1,zero
  4264b8:	8fc603c0 	lw	a2,960(s8)
  4264bc:	00403821 	move	a3,v0
  4264c0:	8f998a3c 	lw	t9,-30148(gp)
  4264c4:	00000000 	nop
  4264c8:	0320f809 	jalr	t9
  4264cc:	00000000 	nop
  4264d0:	8fdc0030 	lw	gp,48(s8)
  4264d4:	00401821 	move	v1,v0
  4264d8:	8fc203c0 	lw	v0,960(s8)
  4264dc:	00000000 	nop
  4264e0:	00621021 	addu	v0,v1,v0
  4264e4:	2442ffff 	addiu	v0,v0,-1
  4264e8:	afc203c0 	sw	v0,960(s8)
		    add_said(&c->this.host_addr, st->st_ah.our_spi, SA_AH);
  4264ec:	8fc20044 	lw	v0,68(s8)
  4264f0:	00000000 	nop
  4264f4:	24420058 	addiu	v0,v0,88
  4264f8:	00402021 	move	a0,v0
  4264fc:	8fc20040 	lw	v0,64(s8)
  426500:	00000000 	nop
  426504:	8c450058 	lw	a1,88(v0)
  426508:	24060033 	li	a2,51
  42650c:	27c703f0 	addiu	a3,s8,1008
  426510:	8f99817c 	lw	t9,-32388(gp)
  426514:	00000000 	nop
  426518:	0320f809 	jalr	t9
  42651c:	00000000 	nop
  426520:	8fdc0030 	lw	gp,48(s8)
  426524:	27c20160 	addiu	v0,s8,352
  426528:	24430258 	addiu	v1,v0,600
  42652c:	8fc203c0 	lw	v0,960(s8)
  426530:	00000000 	nop
  426534:	0043102b 	sltu	v0,v0,v1
  426538:	1040001d 	beqz	v0,4265b0 <show_states_status+0x564>
  42653c:	00000000 	nop
  426540:	27c503c0 	addiu	a1,s8,960
  426544:	8ca20000 	lw	v0,0(a1)
  426548:	00000000 	nop
  42654c:	00402021 	move	a0,v0
  426550:	24030020 	li	v1,32
  426554:	a0830000 	sb	v1,0(a0)
  426558:	24420001 	addiu	v0,v0,1
  42655c:	aca20000 	sw	v0,0(a1)
  426560:	27c30160 	addiu	v1,s8,352
  426564:	8fc203c0 	lw	v0,960(s8)
  426568:	00000000 	nop
  42656c:	00621023 	subu	v0,v1,v0
  426570:	24420259 	addiu	v0,v0,601
  426574:	27c403f0 	addiu	a0,s8,1008
  426578:	00002821 	move	a1,zero
  42657c:	8fc603c0 	lw	a2,960(s8)
  426580:	00403821 	move	a3,v0
  426584:	8f998a3c 	lw	t9,-30148(gp)
  426588:	00000000 	nop
  42658c:	0320f809 	jalr	t9
  426590:	00000000 	nop
  426594:	8fdc0030 	lw	gp,48(s8)
  426598:	00401821 	move	v1,v0
  42659c:	8fc203c0 	lw	v0,960(s8)
  4265a0:	00000000 	nop
  4265a4:	00621021 	addu	v0,v1,v0
  4265a8:	2442ffff 	addiu	v0,v0,-1
  4265ac:	afc203c0 	sw	v0,960(s8)
		}
		if (st->st_esp.present)
  4265b0:	8fc20040 	lw	v0,64(s8)
  4265b4:	00000000 	nop
  4265b8:	8c420068 	lw	v0,104(v0)
  4265bc:	00000000 	nop
  4265c0:	10400063 	beqz	v0,426750 <show_states_status+0x704>
  4265c4:	00000000 	nop
		{
		    add_said(&c->that.host_addr, st->st_esp.attrs.spi, SA_ESP);
  4265c8:	8fc20044 	lw	v0,68(s8)
  4265cc:	00000000 	nop
  4265d0:	24420108 	addiu	v0,v0,264
  4265d4:	00402021 	move	a0,v0
  4265d8:	8fc20040 	lw	v0,64(s8)
  4265dc:	00000000 	nop
  4265e0:	8c450070 	lw	a1,112(v0)
  4265e4:	24060032 	li	a2,50
  4265e8:	27c703f0 	addiu	a3,s8,1008
  4265ec:	8f99817c 	lw	t9,-32388(gp)
  4265f0:	00000000 	nop
  4265f4:	0320f809 	jalr	t9
  4265f8:	00000000 	nop
  4265fc:	8fdc0030 	lw	gp,48(s8)
  426600:	27c20160 	addiu	v0,s8,352
  426604:	24430258 	addiu	v1,v0,600
  426608:	8fc203c0 	lw	v0,960(s8)
  42660c:	00000000 	nop
  426610:	0043102b 	sltu	v0,v0,v1
  426614:	1040001d 	beqz	v0,42668c <show_states_status+0x640>
  426618:	00000000 	nop
  42661c:	27c503c0 	addiu	a1,s8,960
  426620:	8ca20000 	lw	v0,0(a1)
  426624:	00000000 	nop
  426628:	00402021 	move	a0,v0
  42662c:	24030020 	li	v1,32
  426630:	a0830000 	sb	v1,0(a0)
  426634:	24420001 	addiu	v0,v0,1
  426638:	aca20000 	sw	v0,0(a1)
  42663c:	27c30160 	addiu	v1,s8,352
  426640:	8fc203c0 	lw	v0,960(s8)
  426644:	00000000 	nop
  426648:	00621023 	subu	v0,v1,v0
  42664c:	24420259 	addiu	v0,v0,601
  426650:	27c403f0 	addiu	a0,s8,1008
  426654:	00002821 	move	a1,zero
  426658:	8fc603c0 	lw	a2,960(s8)
  42665c:	00403821 	move	a3,v0
  426660:	8f998a3c 	lw	t9,-30148(gp)
  426664:	00000000 	nop
  426668:	0320f809 	jalr	t9
  42666c:	00000000 	nop
  426670:	8fdc0030 	lw	gp,48(s8)
  426674:	00401821 	move	v1,v0
  426678:	8fc203c0 	lw	v0,960(s8)
  42667c:	00000000 	nop
  426680:	00621021 	addu	v0,v1,v0
  426684:	2442ffff 	addiu	v0,v0,-1
  426688:	afc203c0 	sw	v0,960(s8)
		    add_said(&c->this.host_addr, st->st_esp.our_spi, SA_ESP);
  42668c:	8fc20044 	lw	v0,68(s8)
  426690:	00000000 	nop
  426694:	24420058 	addiu	v0,v0,88
  426698:	00402021 	move	a0,v0
  42669c:	8fc20040 	lw	v0,64(s8)
  4266a0:	00000000 	nop
  4266a4:	8c450084 	lw	a1,132(v0)
  4266a8:	24060032 	li	a2,50
  4266ac:	27c703c8 	addiu	a3,s8,968
  4266b0:	8f99817c 	lw	t9,-32388(gp)
  4266b4:	00000000 	nop
  4266b8:	0320f809 	jalr	t9
  4266bc:	00000000 	nop
  4266c0:	8fdc0030 	lw	gp,48(s8)
  4266c4:	27c20160 	addiu	v0,s8,352
  4266c8:	24430258 	addiu	v1,v0,600
  4266cc:	8fc203c0 	lw	v0,960(s8)
  4266d0:	00000000 	nop
  4266d4:	0043102b 	sltu	v0,v0,v1
  4266d8:	1040001d 	beqz	v0,426750 <show_states_status+0x704>
  4266dc:	00000000 	nop
  4266e0:	27c503c0 	addiu	a1,s8,960
  4266e4:	8ca20000 	lw	v0,0(a1)
  4266e8:	00000000 	nop
  4266ec:	00402021 	move	a0,v0
  4266f0:	24030020 	li	v1,32
  4266f4:	a0830000 	sb	v1,0(a0)
  4266f8:	24420001 	addiu	v0,v0,1
  4266fc:	aca20000 	sw	v0,0(a1)
  426700:	27c30160 	addiu	v1,s8,352
  426704:	8fc203c0 	lw	v0,960(s8)
  426708:	00000000 	nop
  42670c:	00621023 	subu	v0,v1,v0
  426710:	24420259 	addiu	v0,v0,601
  426714:	27c403c8 	addiu	a0,s8,968
  426718:	00002821 	move	a1,zero
  42671c:	8fc603c0 	lw	a2,960(s8)
  426720:	00403821 	move	a3,v0
  426724:	8f998a3c 	lw	t9,-30148(gp)
  426728:	00000000 	nop
  42672c:	0320f809 	jalr	t9
  426730:	00000000 	nop
  426734:	8fdc0030 	lw	gp,48(s8)
  426738:	00401821 	move	v1,v0
  42673c:	8fc203c0 	lw	v0,960(s8)
  426740:	00000000 	nop
  426744:	00621021 	addu	v0,v1,v0
  426748:	2442ffff 	addiu	v0,v0,-1
  42674c:	afc203c0 	sw	v0,960(s8)
		}
		if (st->st_ipcomp.present)
  426750:	8fc20040 	lw	v0,64(s8)
  426754:	00000000 	nop
  426758:	8c420094 	lw	v0,148(v0)
  42675c:	00000000 	nop
  426760:	10400063 	beqz	v0,4268f0 <show_states_status+0x8a4>
  426764:	00000000 	nop
		{
		    add_said(&c->that.host_addr, st->st_ipcomp.attrs.spi, SA_COMP);
  426768:	8fc20044 	lw	v0,68(s8)
  42676c:	00000000 	nop
  426770:	24420108 	addiu	v0,v0,264
  426774:	00402021 	move	a0,v0
  426778:	8fc20040 	lw	v0,64(s8)
  42677c:	00000000 	nop
  426780:	8c45009c 	lw	a1,156(v0)
  426784:	2406006c 	li	a2,108
  426788:	27c703f0 	addiu	a3,s8,1008
  42678c:	8f99817c 	lw	t9,-32388(gp)
  426790:	00000000 	nop
  426794:	0320f809 	jalr	t9
  426798:	00000000 	nop
  42679c:	8fdc0030 	lw	gp,48(s8)
  4267a0:	27c20160 	addiu	v0,s8,352
  4267a4:	24430258 	addiu	v1,v0,600
  4267a8:	8fc203c0 	lw	v0,960(s8)
  4267ac:	00000000 	nop
  4267b0:	0043102b 	sltu	v0,v0,v1
  4267b4:	1040001d 	beqz	v0,42682c <show_states_status+0x7e0>
  4267b8:	00000000 	nop
  4267bc:	27c503c0 	addiu	a1,s8,960
  4267c0:	8ca20000 	lw	v0,0(a1)
  4267c4:	00000000 	nop
  4267c8:	00402021 	move	a0,v0
  4267cc:	24030020 	li	v1,32
  4267d0:	a0830000 	sb	v1,0(a0)
  4267d4:	24420001 	addiu	v0,v0,1
  4267d8:	aca20000 	sw	v0,0(a1)
  4267dc:	27c30160 	addiu	v1,s8,352
  4267e0:	8fc203c0 	lw	v0,960(s8)
  4267e4:	00000000 	nop
  4267e8:	00621023 	subu	v0,v1,v0
  4267ec:	24420259 	addiu	v0,v0,601
  4267f0:	27c403f0 	addiu	a0,s8,1008
  4267f4:	00002821 	move	a1,zero
  4267f8:	8fc603c0 	lw	a2,960(s8)
  4267fc:	00403821 	move	a3,v0
  426800:	8f998a3c 	lw	t9,-30148(gp)
  426804:	00000000 	nop
  426808:	0320f809 	jalr	t9
  42680c:	00000000 	nop
  426810:	8fdc0030 	lw	gp,48(s8)
  426814:	00401821 	move	v1,v0
  426818:	8fc203c0 	lw	v0,960(s8)
  42681c:	00000000 	nop
  426820:	00621021 	addu	v0,v1,v0
  426824:	2442ffff 	addiu	v0,v0,-1
  426828:	afc203c0 	sw	v0,960(s8)
		    add_said(&c->this.host_addr, st->st_ipcomp.our_spi, SA_COMP);
  42682c:	8fc20044 	lw	v0,68(s8)
  426830:	00000000 	nop
  426834:	24420058 	addiu	v0,v0,88
  426838:	00402021 	move	a0,v0
  42683c:	8fc20040 	lw	v0,64(s8)
  426840:	00000000 	nop
  426844:	8c4500b0 	lw	a1,176(v0)
  426848:	2406006c 	li	a2,108
  42684c:	27c703c8 	addiu	a3,s8,968
  426850:	8f99817c 	lw	t9,-32388(gp)
  426854:	00000000 	nop
  426858:	0320f809 	jalr	t9
  42685c:	00000000 	nop
  426860:	8fdc0030 	lw	gp,48(s8)
  426864:	27c20160 	addiu	v0,s8,352
  426868:	24430258 	addiu	v1,v0,600
  42686c:	8fc203c0 	lw	v0,960(s8)
  426870:	00000000 	nop
  426874:	0043102b 	sltu	v0,v0,v1
  426878:	1040001d 	beqz	v0,4268f0 <show_states_status+0x8a4>
  42687c:	00000000 	nop
  426880:	27c503c0 	addiu	a1,s8,960
  426884:	8ca20000 	lw	v0,0(a1)
  426888:	00000000 	nop
  42688c:	00402021 	move	a0,v0
  426890:	24030020 	li	v1,32
  426894:	a0830000 	sb	v1,0(a0)
  426898:	24420001 	addiu	v0,v0,1
  42689c:	aca20000 	sw	v0,0(a1)
  4268a0:	27c30160 	addiu	v1,s8,352
  4268a4:	8fc203c0 	lw	v0,960(s8)
  4268a8:	00000000 	nop
  4268ac:	00621023 	subu	v0,v1,v0
  4268b0:	24420259 	addiu	v0,v0,601
  4268b4:	27c403c8 	addiu	a0,s8,968
  4268b8:	00002821 	move	a1,zero
  4268bc:	8fc603c0 	lw	a2,960(s8)
  4268c0:	00403821 	move	a3,v0
  4268c4:	8f998a3c 	lw	t9,-30148(gp)
  4268c8:	00000000 	nop
  4268cc:	0320f809 	jalr	t9
  4268d0:	00000000 	nop
  4268d4:	8fdc0030 	lw	gp,48(s8)
  4268d8:	00401821 	move	v1,v0
  4268dc:	8fc203c0 	lw	v0,960(s8)
  4268e0:	00000000 	nop
  4268e4:	00621021 	addu	v0,v1,v0
  4268e8:	2442ffff 	addiu	v0,v0,-1
  4268ec:	afc203c0 	sw	v0,960(s8)
		}
#ifdef KLIPS
		if (st->st_ah.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL
		|| st->st_esp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL
		|| st->st_ipcomp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL)
  4268f0:	8fc20040 	lw	v0,64(s8)
  4268f4:	00000000 	nop
  4268f8:	94430050 	lhu	v1,80(v0)
  4268fc:	24020001 	li	v0,1
  426900:	1062000f 	beq	v1,v0,426940 <show_states_status+0x8f4>
  426904:	00000000 	nop
  426908:	8fc20040 	lw	v0,64(s8)
  42690c:	00000000 	nop
  426910:	9443007c 	lhu	v1,124(v0)
  426914:	24020001 	li	v0,1
  426918:	10620009 	beq	v1,v0,426940 <show_states_status+0x8f4>
  42691c:	00000000 	nop
  426920:	8fc20040 	lw	v0,64(s8)
  426924:	00000000 	nop
  426928:	944300a8 	lhu	v1,168(v0)
  42692c:	24020001 	li	v0,1
  426930:	10620003 	beq	v1,v0,426940 <show_states_status+0x8f4>
  426934:	00000000 	nop
  426938:	10000063 	b	426ac8 <show_states_status+0xa7c>
  42693c:	00000000 	nop
		{
		    add_said(&c->that.host_addr, st->st_tunnel_out_spi, SA_IPIP);
  426940:	8fc20044 	lw	v0,68(s8)
  426944:	00000000 	nop
  426948:	24420108 	addiu	v0,v0,264
  42694c:	00402021 	move	a0,v0
  426950:	8fc20040 	lw	v0,64(s8)
  426954:	00000000 	nop
  426958:	8c4500c4 	lw	a1,196(v0)
  42695c:	24060004 	li	a2,4
  426960:	27c703f0 	addiu	a3,s8,1008
  426964:	8f99817c 	lw	t9,-32388(gp)
  426968:	00000000 	nop
  42696c:	0320f809 	jalr	t9
  426970:	00000000 	nop
  426974:	8fdc0030 	lw	gp,48(s8)
  426978:	27c20160 	addiu	v0,s8,352
  42697c:	24430258 	addiu	v1,v0,600
  426980:	8fc203c0 	lw	v0,960(s8)
  426984:	00000000 	nop
  426988:	0043102b 	sltu	v0,v0,v1
  42698c:	1040001d 	beqz	v0,426a04 <show_states_status+0x9b8>
  426990:	00000000 	nop
  426994:	27c503c0 	addiu	a1,s8,960
  426998:	8ca20000 	lw	v0,0(a1)
  42699c:	00000000 	nop
  4269a0:	00402021 	move	a0,v0
  4269a4:	24030020 	li	v1,32
  4269a8:	a0830000 	sb	v1,0(a0)
  4269ac:	24420001 	addiu	v0,v0,1
  4269b0:	aca20000 	sw	v0,0(a1)
  4269b4:	27c30160 	addiu	v1,s8,352
  4269b8:	8fc203c0 	lw	v0,960(s8)
  4269bc:	00000000 	nop
  4269c0:	00621023 	subu	v0,v1,v0
  4269c4:	24420259 	addiu	v0,v0,601
  4269c8:	27c403f0 	addiu	a0,s8,1008
  4269cc:	00002821 	move	a1,zero
  4269d0:	8fc603c0 	lw	a2,960(s8)
  4269d4:	00403821 	move	a3,v0
  4269d8:	8f998a3c 	lw	t9,-30148(gp)
  4269dc:	00000000 	nop
  4269e0:	0320f809 	jalr	t9
  4269e4:	00000000 	nop
  4269e8:	8fdc0030 	lw	gp,48(s8)
  4269ec:	00401821 	move	v1,v0
  4269f0:	8fc203c0 	lw	v0,960(s8)
  4269f4:	00000000 	nop
  4269f8:	00621021 	addu	v0,v1,v0
  4269fc:	2442ffff 	addiu	v0,v0,-1
  426a00:	afc203c0 	sw	v0,960(s8)
		    add_said(&c->this.host_addr, st->st_tunnel_in_spi, SA_IPIP);
  426a04:	8fc20044 	lw	v0,68(s8)
  426a08:	00000000 	nop
  426a0c:	24420058 	addiu	v0,v0,88
  426a10:	00402021 	move	a0,v0
  426a14:	8fc20040 	lw	v0,64(s8)
  426a18:	00000000 	nop
  426a1c:	8c4500c0 	lw	a1,192(v0)
  426a20:	24060004 	li	a2,4
  426a24:	27c703c8 	addiu	a3,s8,968
  426a28:	8f99817c 	lw	t9,-32388(gp)
  426a2c:	00000000 	nop
  426a30:	0320f809 	jalr	t9
  426a34:	00000000 	nop
  426a38:	8fdc0030 	lw	gp,48(s8)
  426a3c:	27c20160 	addiu	v0,s8,352
  426a40:	24430258 	addiu	v1,v0,600
  426a44:	8fc203c0 	lw	v0,960(s8)
  426a48:	00000000 	nop
  426a4c:	0043102b 	sltu	v0,v0,v1
  426a50:	1040001d 	beqz	v0,426ac8 <show_states_status+0xa7c>
  426a54:	00000000 	nop
  426a58:	27c503c0 	addiu	a1,s8,960
  426a5c:	8ca20000 	lw	v0,0(a1)
  426a60:	00000000 	nop
  426a64:	00402021 	move	a0,v0
  426a68:	24030020 	li	v1,32
  426a6c:	a0830000 	sb	v1,0(a0)
  426a70:	24420001 	addiu	v0,v0,1
  426a74:	aca20000 	sw	v0,0(a1)
  426a78:	27c30160 	addiu	v1,s8,352
  426a7c:	8fc203c0 	lw	v0,960(s8)
  426a80:	00000000 	nop
  426a84:	00621023 	subu	v0,v1,v0
  426a88:	24420259 	addiu	v0,v0,601
  426a8c:	27c403c8 	addiu	a0,s8,968
  426a90:	00002821 	move	a1,zero
  426a94:	8fc603c0 	lw	a2,960(s8)
  426a98:	00403821 	move	a3,v0
  426a9c:	8f998a3c 	lw	t9,-30148(gp)
  426aa0:	00000000 	nop
  426aa4:	0320f809 	jalr	t9
  426aa8:	00000000 	nop
  426aac:	8fdc0030 	lw	gp,48(s8)
  426ab0:	00401821 	move	v1,v0
  426ab4:	8fc203c0 	lw	v0,960(s8)
  426ab8:	00000000 	nop
  426abc:	00621021 	addu	v0,v1,v0
  426ac0:	2442ffff 	addiu	v0,v0,-1
  426ac4:	afc203c0 	sw	v0,960(s8)
		}
#endif
		whack_log(RC_COMMENT
  426ac8:	27c20050 	addiu	v0,s8,80
  426acc:	afa20010 	sw	v0,16(sp)
  426ad0:	27c20160 	addiu	v0,s8,352
  426ad4:	afa20014 	sw	v0,20(sp)
  426ad8:	00002021 	move	a0,zero
  426adc:	8f85802c 	lw	a1,-32724(gp)
  426ae0:	00000000 	nop
  426ae4:	24a5ab7c 	addiu	a1,a1,-21636
  426ae8:	8fc20040 	lw	v0,64(s8)
  426aec:	00000000 	nop
  426af0:	8c460000 	lw	a2,0(v0)
  426af4:	8fc20044 	lw	v0,68(s8)
  426af8:	00000000 	nop
  426afc:	8c470000 	lw	a3,0(v0)
  426b00:	8f9982a8 	lw	t9,-32088(gp)
  426b04:	00000000 	nop
  426b08:	0320f809 	jalr	t9
  426b0c:	00000000 	nop
  426b10:	8fdc0030 	lw	gp,48(s8)
  426b14:	00000000 	nop
  426b18:	8fc20040 	lw	v0,64(s8)
  426b1c:	00000000 	nop
  426b20:	8c42025c 	lw	v0,604(v0)
  426b24:	00000000 	nop
  426b28:	afc20040 	sw	v0,64(s8)
  426b2c:	1000fd69 	b	4260d4 <show_states_status+0x88>
  426b30:	00000000 	nop
		    , "#%lu: \"%s\"%s%s"
		    , st->st_serialno
		    , c->name, inst
		    , buf);

#		undef add_said
	    }
	}
    }
}
  426b34:	03c0e821 	move	sp,s8
  426b38:	8fbf0434 	lw	ra,1076(sp)
  426b3c:	8fbe0430 	lw	s8,1072(sp)
  426b40:	8fb00428 	lw	s0,1064(sp)
  426b44:	27bd0438 	addiu	sp,sp,1080
  426b48:	03e00008 	jr	ra
  426b4c:	00000000 	nop

00426b50 <find_my_cpi_gap>:
  426b50:	3c1c0fbe 	lui	gp,0xfbe
  426b54:	279c5e20 	addiu	gp,gp,24096
  426b58:	0399e021 	addu	gp,gp,t9
  426b5c:	27bdffd8 	addiu	sp,sp,-40
  426b60:	afbc0000 	sw	gp,0(sp)
  426b64:	afbe0024 	sw	s8,36(sp)
  426b68:	afbc0020 	sw	gp,32(sp)
  426b6c:	03a0f021 	move	s8,sp
  426b70:	afc40028 	sw	a0,40(s8)
  426b74:	afc5002c 	sw	a1,44(s8)

/* Given that we've used up a range of unused CPI's,
 * search for a new range of currently unused ones.
 * Note: this is very expensive when not trivial!
 * If we can't find one easily, choose 0 (a bad SPI,
 * no matter what order) indicating failure.
 */
void
find_my_cpi_gap(cpi_t *latest_cpi, cpi_t *first_busy_cpi)
{
    int tries = 0;
  426b78:	afc00008 	sw	zero,8(s8)
    cpi_t base = *latest_cpi;
  426b7c:	8fc20028 	lw	v0,40(s8)
  426b80:	00000000 	nop
  426b84:	94420000 	lhu	v0,0(v0)
  426b88:	00000000 	nop
  426b8c:	a7c2000c 	sh	v0,12(s8)
    cpi_t closest;
    int i;

startover:
    closest = ~0;	/* not close at all */
  426b90:	3402ffff 	li	v0,0xffff
  426b94:	a7c2000e 	sh	v0,14(s8)
    for (i = 0; i < STATE_TABLE_SIZE; i++)
  426b98:	afc00010 	sw	zero,16(s8)
  426b9c:	8fc20010 	lw	v0,16(s8)
  426ba0:	00000000 	nop
  426ba4:	28420020 	slti	v0,v0,32
  426ba8:	14400003 	bnez	v0,426bb8 <find_my_cpi_gap+0x68>
  426bac:	00000000 	nop
  426bb0:	10000052 	b	426cfc <find_my_cpi_gap+0x1ac>
  426bb4:	00000000 	nop
    {
	struct state *st;

	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  426bb8:	8fc20010 	lw	v0,16(s8)
  426bbc:	00000000 	nop
  426bc0:	00021080 	sll	v0,v0,0x2
  426bc4:	8f818018 	lw	at,-32744(gp)
  426bc8:	00000000 	nop
  426bcc:	24216998 	addiu	at,at,27032
  426bd0:	00221021 	addu	v0,at,v0
  426bd4:	8c420000 	lw	v0,0(v0)
  426bd8:	00000000 	nop
  426bdc:	afc20014 	sw	v0,20(s8)
  426be0:	8fc20014 	lw	v0,20(s8)
  426be4:	00000000 	nop
  426be8:	14400007 	bnez	v0,426c08 <find_my_cpi_gap+0xb8>
  426bec:	00000000 	nop
  426bf0:	8fc20010 	lw	v0,16(s8)
  426bf4:	00000000 	nop
  426bf8:	24420001 	addiu	v0,v0,1
  426bfc:	afc20010 	sw	v0,16(s8)
  426c00:	1000ffe6 	b	426b9c <find_my_cpi_gap+0x4c>
  426c04:	00000000 	nop
	{
	    if (st->st_ipcomp.present)
  426c08:	8fc20014 	lw	v0,20(s8)
  426c0c:	00000000 	nop
  426c10:	8c420094 	lw	v0,148(v0)
  426c14:	00000000 	nop
  426c18:	10400031 	beqz	v0,426ce0 <find_my_cpi_gap+0x190>
  426c1c:	00000000 	nop
	    {
		cpi_t c = ntohl(st->st_ipcomp.our_spi) - base;
  426c20:	8fc20014 	lw	v0,20(s8)
  426c24:	00000000 	nop
  426c28:	944300b2 	lhu	v1,178(v0)
  426c2c:	97c2000c 	lhu	v0,12(s8)
  426c30:	00000000 	nop
  426c34:	00621023 	subu	v0,v1,v0
  426c38:	a7c20018 	sh	v0,24(s8)

		if (c < closest)
  426c3c:	97c30018 	lhu	v1,24(s8)
  426c40:	97c2000e 	lhu	v0,14(s8)
  426c44:	00000000 	nop
  426c48:	0062102b 	sltu	v0,v1,v0
  426c4c:	10400024 	beqz	v0,426ce0 <find_my_cpi_gap+0x190>
  426c50:	00000000 	nop
		{
		    if (c == 0)
  426c54:	97c20018 	lhu	v0,24(s8)
  426c58:	00000000 	nop
  426c5c:	1440001d 	bnez	v0,426cd4 <find_my_cpi_gap+0x184>
  426c60:	00000000 	nop
		    {
			/* oops: next spot is occupied; start over */
			if (++tries == 20)
  426c64:	8fc20008 	lw	v0,8(s8)
  426c68:	00000000 	nop
  426c6c:	24420001 	addiu	v0,v0,1
  426c70:	00401821 	move	v1,v0
  426c74:	afc30008 	sw	v1,8(s8)
  426c78:	24020014 	li	v0,20
  426c7c:	14620008 	bne	v1,v0,426ca0 <find_my_cpi_gap+0x150>
  426c80:	00000000 	nop
			{
			    /* FAILURE */
			    *latest_cpi = *first_busy_cpi = 0;
  426c84:	8fc30028 	lw	v1,40(s8)
  426c88:	8fc2002c 	lw	v0,44(s8)
  426c8c:	00000000 	nop
  426c90:	a4400000 	sh	zero,0(v0)
  426c94:	a4600000 	sh	zero,0(v1)
			    return;
  426c98:	10000023 	b	426d28 <find_my_cpi_gap+0x1d8>
  426c9c:	00000000 	nop
			}
			base++;
  426ca0:	97c2000c 	lhu	v0,12(s8)
  426ca4:	00000000 	nop
  426ca8:	24420001 	addiu	v0,v0,1
  426cac:	a7c2000c 	sh	v0,12(s8)
			if (base > IPCOMP_LAST_NEGOTIATED)
  426cb0:	97c3000c 	lhu	v1,12(s8)
  426cb4:	3402efff 	li	v0,0xefff
  426cb8:	0043102b 	sltu	v0,v0,v1
  426cbc:	1040ffb4 	beqz	v0,426b90 <find_my_cpi_gap+0x40>
  426cc0:	00000000 	nop
			    base = IPCOMP_FIRST_NEGOTIATED;
  426cc4:	24020100 	li	v0,256
  426cc8:	a7c2000c 	sh	v0,12(s8)
			goto startover;	/* really a tail call */
  426ccc:	1000ffb0 	b	426b90 <find_my_cpi_gap+0x40>
  426cd0:	00000000 	nop
		    }
		    closest = c;
  426cd4:	97c20018 	lhu	v0,24(s8)
  426cd8:	00000000 	nop
  426cdc:	a7c2000e 	sh	v0,14(s8)
  426ce0:	8fc20014 	lw	v0,20(s8)
  426ce4:	00000000 	nop
  426ce8:	8c42025c 	lw	v0,604(v0)
  426cec:	00000000 	nop
  426cf0:	afc20014 	sw	v0,20(s8)
  426cf4:	1000ffba 	b	426be0 <find_my_cpi_gap+0x90>
  426cf8:	00000000 	nop
		}
	    }
	}
    }
    *latest_cpi = base;	/* base is first in next free range */
  426cfc:	97c3000c 	lhu	v1,12(s8)
  426d00:	8fc20028 	lw	v0,40(s8)
  426d04:	00000000 	nop
  426d08:	a4430000 	sh	v1,0(v0)
    *first_busy_cpi = closest + base;	/* and this is the roof */
  426d0c:	97c3000e 	lhu	v1,14(s8)
  426d10:	97c2000c 	lhu	v0,12(s8)
  426d14:	00000000 	nop
  426d18:	00621821 	addu	v1,v1,v0
  426d1c:	8fc2002c 	lw	v0,44(s8)
  426d20:	00000000 	nop
  426d24:	a4430000 	sh	v1,0(v0)
}
  426d28:	03c0e821 	move	sp,s8
  426d2c:	8fbe0024 	lw	s8,36(sp)
  426d30:	27bd0028 	addiu	sp,sp,40
  426d34:	03e00008 	jr	ra
  426d38:	00000000 	nop

00426d3c <uniquify_his_cpi>:
  426d3c:	3c1c0fbe 	lui	gp,0xfbe
  426d40:	279c5c34 	addiu	gp,gp,23604
  426d44:	0399e021 	addu	gp,gp,t9
  426d48:	27bdffc8 	addiu	sp,sp,-56
  426d4c:	afbc0010 	sw	gp,16(sp)
  426d50:	afbf0030 	sw	ra,48(sp)
  426d54:	afbe002c 	sw	s8,44(sp)
  426d58:	afbc0028 	sw	gp,40(sp)
  426d5c:	03a0f021 	move	s8,sp
  426d60:	afc40038 	sw	a0,56(s8)
  426d64:	afc5003c 	sw	a1,60(s8)

/* Muck with high-order 16 bits of this SPI in order to make
 * the corresponding SAID unique.
 * Its low-order 16 bits hold a well-known IPCOMP CPI.
 * Oh, and remember that SPIs are stored in network order.
 * Kludge!!!  So I name it with the non-English word "uniquify".
 * If we can't find one easily, return 0 (a bad SPI,
 * no matter what order) indicating failure.
 */
ipsec_spi_t
uniquify_his_cpi(ipsec_spi_t cpi, struct state *st)
{
    int tries = 0;
  426d68:	afc00018 	sw	zero,24(s8)
    int i;

startover:

    /* network order makes first two bytes our target */
    get_rnd_bytes((u_char *)&cpi, 2);
  426d6c:	27c20038 	addiu	v0,s8,56
  426d70:	00402021 	move	a0,v0
  426d74:	24050002 	li	a1,2
  426d78:	8f9980bc 	lw	t9,-32580(gp)
  426d7c:	00000000 	nop
  426d80:	0320f809 	jalr	t9
  426d84:	00000000 	nop
  426d88:	8fdc0010 	lw	gp,16(s8)
  426d8c:	00000000 	nop

    /* Make sure that the result is unique.
     * Hard work.  If there is no unique value, we'll loop forever!
     */
    for (i = 0; i < STATE_TABLE_SIZE; i++)
  426d90:	afc0001c 	sw	zero,28(s8)
  426d94:	8fc2001c 	lw	v0,28(s8)
  426d98:	00000000 	nop
  426d9c:	28420020 	slti	v0,v0,32
  426da0:	14400003 	bnez	v0,426db0 <uniquify_his_cpi+0x74>
  426da4:	00000000 	nop
  426da8:	10000047 	b	426ec8 <uniquify_his_cpi+0x18c>
  426dac:	00000000 	nop
    {
	struct state *s;

	for (s = statetable[i]; s != NULL; s = s->st_hashchain_next)
  426db0:	8fc2001c 	lw	v0,28(s8)
  426db4:	00000000 	nop
  426db8:	00021080 	sll	v0,v0,0x2
  426dbc:	8f818018 	lw	at,-32744(gp)
  426dc0:	00000000 	nop
  426dc4:	24216998 	addiu	at,at,27032
  426dc8:	00221021 	addu	v0,at,v0
  426dcc:	8c420000 	lw	v0,0(v0)
  426dd0:	00000000 	nop
  426dd4:	afc20020 	sw	v0,32(s8)
  426dd8:	8fc20020 	lw	v0,32(s8)
  426ddc:	00000000 	nop
  426de0:	14400007 	bnez	v0,426e00 <uniquify_his_cpi+0xc4>
  426de4:	00000000 	nop
  426de8:	8fc2001c 	lw	v0,28(s8)
  426dec:	00000000 	nop
  426df0:	24420001 	addiu	v0,v0,1
  426df4:	afc2001c 	sw	v0,28(s8)
  426df8:	1000ffe6 	b	426d94 <uniquify_his_cpi+0x58>
  426dfc:	00000000 	nop
	{
	    if (s->st_ipcomp.present
	    && sameaddr(&s->st_connection->that.host_addr
	      , &st->st_connection->that.host_addr)
	    && cpi == s->st_ipcomp.attrs.spi)
  426e00:	8fc20020 	lw	v0,32(s8)
  426e04:	00000000 	nop
  426e08:	8c420094 	lw	v0,148(v0)
  426e0c:	00000000 	nop
  426e10:	10400026 	beqz	v0,426eac <uniquify_his_cpi+0x170>
  426e14:	00000000 	nop
  426e18:	8fc20020 	lw	v0,32(s8)
  426e1c:	00000000 	nop
  426e20:	8c42000c 	lw	v0,12(v0)
  426e24:	00000000 	nop
  426e28:	24430108 	addiu	v1,v0,264
  426e2c:	8fc2003c 	lw	v0,60(s8)
  426e30:	00000000 	nop
  426e34:	8c42000c 	lw	v0,12(v0)
  426e38:	00000000 	nop
  426e3c:	24420108 	addiu	v0,v0,264
  426e40:	00602021 	move	a0,v1
  426e44:	00402821 	move	a1,v0
  426e48:	8f998928 	lw	t9,-30424(gp)
  426e4c:	00000000 	nop
  426e50:	0320f809 	jalr	t9
  426e54:	00000000 	nop
  426e58:	8fdc0010 	lw	gp,16(s8)
  426e5c:	10400013 	beqz	v0,426eac <uniquify_his_cpi+0x170>
  426e60:	00000000 	nop
  426e64:	8fc20020 	lw	v0,32(s8)
  426e68:	00000000 	nop
  426e6c:	8c43009c 	lw	v1,156(v0)
  426e70:	8fc20038 	lw	v0,56(s8)
  426e74:	00000000 	nop
  426e78:	1443000c 	bne	v0,v1,426eac <uniquify_his_cpi+0x170>
  426e7c:	00000000 	nop
	    {
		if (++tries == 20)
  426e80:	8fc20018 	lw	v0,24(s8)
  426e84:	00000000 	nop
  426e88:	24420001 	addiu	v0,v0,1
  426e8c:	00401821 	move	v1,v0
  426e90:	afc30018 	sw	v1,24(s8)
  426e94:	24020014 	li	v0,20
  426e98:	1462ffb4 	bne	v1,v0,426d6c <uniquify_his_cpi+0x30>
  426e9c:	00000000 	nop
		    return 0;	/* FAILURE */
  426ea0:	00001021 	move	v0,zero
  426ea4:	1000000a 	b	426ed0 <uniquify_his_cpi+0x194>
  426ea8:	00000000 	nop
  426eac:	8fc20020 	lw	v0,32(s8)
  426eb0:	00000000 	nop
  426eb4:	8c42025c 	lw	v0,604(v0)
  426eb8:	00000000 	nop
  426ebc:	afc20020 	sw	v0,32(s8)
  426ec0:	1000ffc5 	b	426dd8 <uniquify_his_cpi+0x9c>
  426ec4:	00000000 	nop
		goto startover;
	    }
	}
    }
    return cpi;
  426ec8:	8fc20038 	lw	v0,56(s8)
  426ecc:	00000000 	nop
}
  426ed0:	03c0e821 	move	sp,s8
  426ed4:	8fbf0030 	lw	ra,48(sp)
  426ed8:	8fbe002c 	lw	s8,44(sp)
  426edc:	27bd0038 	addiu	sp,sp,56
  426ee0:	03e00008 	jr	ra
  426ee4:	00000000 	nop

00426ee8 <replace_states_by_peer>:
  426ee8:	3c1c0fbe 	lui	gp,0xfbe
  426eec:	279c5a88 	addiu	gp,gp,23176
  426ef0:	0399e021 	addu	gp,gp,t9
  426ef4:	27bdffd0 	addiu	sp,sp,-48
  426ef8:	afbc0010 	sw	gp,16(sp)
  426efc:	afbf0028 	sw	ra,40(sp)
  426f00:	afbe0024 	sw	s8,36(sp)
  426f04:	afbc0020 	sw	gp,32(sp)
  426f08:	03a0f021 	move	s8,sp
  426f0c:	afc40030 	sw	a0,48(s8)

#ifdef DPD
/* Immediately schedule a replace event for all states for a peer.
 */
void replace_states_by_peer(const ip_address *peer)
{
    struct state *st = NULL;
  426f10:	afc00018 	sw	zero,24(s8)
    int i;
    /* struct event *ev;     currently unused */

    for (i = 0; st == NULL && i < STATE_TABLE_SIZE; i++)
  426f14:	afc0001c 	sw	zero,28(s8)
  426f18:	8fc20018 	lw	v0,24(s8)
  426f1c:	00000000 	nop
  426f20:	14400082 	bnez	v0,42712c <replace_states_by_peer+0x244>
  426f24:	00000000 	nop
  426f28:	8fc2001c 	lw	v0,28(s8)
  426f2c:	00000000 	nop
  426f30:	28420020 	slti	v0,v0,32
  426f34:	14400003 	bnez	v0,426f44 <replace_states_by_peer+0x5c>
  426f38:	00000000 	nop
  426f3c:	1000007b 	b	42712c <replace_states_by_peer+0x244>
  426f40:	00000000 	nop
	for (st = statetable[i]; st != NULL; st = st->st_hashchain_next)
  426f44:	8fc2001c 	lw	v0,28(s8)
  426f48:	00000000 	nop
  426f4c:	00021080 	sll	v0,v0,0x2
  426f50:	8f818018 	lw	at,-32744(gp)
  426f54:	00000000 	nop
  426f58:	24216998 	addiu	at,at,27032
  426f5c:	00221021 	addu	v0,at,v0
  426f60:	8c420000 	lw	v0,0(v0)
  426f64:	00000000 	nop
  426f68:	afc20018 	sw	v0,24(s8)
  426f6c:	8fc20018 	lw	v0,24(s8)
  426f70:	00000000 	nop
  426f74:	14400007 	bnez	v0,426f94 <replace_states_by_peer+0xac>
  426f78:	00000000 	nop
  426f7c:	8fc2001c 	lw	v0,28(s8)
  426f80:	00000000 	nop
  426f84:	24420001 	addiu	v0,v0,1
  426f88:	afc2001c 	sw	v0,28(s8)
  426f8c:	1000ffe2 	b	426f18 <replace_states_by_peer+0x30>
  426f90:	00000000 	nop
	    /* Only replace if it already has a replace event. */
	    if (sameaddr(&st->st_connection->that.host_addr, peer)
		    && (IS_ISAKMP_SA_ESTABLISHED(st->st_state) || IS_IPSEC_SA_ESTABLISHED(st->st_state))
		    && st->st_event->ev_type == EVENT_SA_REPLACE)
  426f94:	8fc20018 	lw	v0,24(s8)
  426f98:	00000000 	nop
  426f9c:	8c42000c 	lw	v0,12(v0)
  426fa0:	00000000 	nop
  426fa4:	24420108 	addiu	v0,v0,264
  426fa8:	00402021 	move	a0,v0
  426fac:	8fc50030 	lw	a1,48(s8)
  426fb0:	8f998928 	lw	t9,-30424(gp)
  426fb4:	00000000 	nop
  426fb8:	0320f809 	jalr	t9
  426fbc:	00000000 	nop
  426fc0:	8fdc0010 	lw	gp,16(s8)
  426fc4:	10400052 	beqz	v0,427110 <replace_states_by_peer+0x228>
  426fc8:	00000000 	nop
  426fcc:	8fc20018 	lw	v0,24(s8)
  426fd0:	00000000 	nop
  426fd4:	8c43014c 	lw	v1,332(v0)
  426fd8:	24020009 	li	v0,9
  426fdc:	1062002d 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  426fe0:	00000000 	nop
  426fe4:	8fc20018 	lw	v0,24(s8)
  426fe8:	00000000 	nop
  426fec:	8c43014c 	lw	v1,332(v0)
  426ff0:	2402000a 	li	v0,10
  426ff4:	10620027 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  426ff8:	00000000 	nop
  426ffc:	8fc20018 	lw	v0,24(s8)
  427000:	00000000 	nop
  427004:	8c43014c 	lw	v1,332(v0)
  427008:	2402000e 	li	v0,14
  42700c:	10620021 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  427010:	00000000 	nop
  427014:	8fc20018 	lw	v0,24(s8)
  427018:	00000000 	nop
  42701c:	8c43014c 	lw	v1,332(v0)
  427020:	2402000f 	li	v0,15
  427024:	1062001b 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  427028:	00000000 	nop
  42702c:	8fc20018 	lw	v0,24(s8)
  427030:	00000000 	nop
  427034:	8c43014c 	lw	v1,332(v0)
  427038:	24020010 	li	v0,16
  42703c:	10620015 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  427040:	00000000 	nop
  427044:	8fc20018 	lw	v0,24(s8)
  427048:	00000000 	nop
  42704c:	8c43014c 	lw	v1,332(v0)
  427050:	24020011 	li	v0,17
  427054:	1062000f 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  427058:	00000000 	nop
  42705c:	8fc20018 	lw	v0,24(s8)
  427060:	00000000 	nop
  427064:	8c43014c 	lw	v1,332(v0)
  427068:	24020018 	li	v0,24
  42706c:	10620009 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  427070:	00000000 	nop
  427074:	8fc20018 	lw	v0,24(s8)
  427078:	00000000 	nop
  42707c:	8c43014c 	lw	v1,332(v0)
  427080:	24020019 	li	v0,25
  427084:	10620003 	beq	v1,v0,427094 <replace_states_by_peer+0x1ac>
  427088:	00000000 	nop
  42708c:	10000020 	b	427110 <replace_states_by_peer+0x228>
  427090:	00000000 	nop
  427094:	8fc20018 	lw	v0,24(s8)
  427098:	00000000 	nop
  42709c:	8c420258 	lw	v0,600(v0)
  4270a0:	00000000 	nop
  4270a4:	8c430004 	lw	v1,4(v0)
  4270a8:	24020005 	li	v0,5
  4270ac:	14620018 	bne	v1,v0,427110 <replace_states_by_peer+0x228>
  4270b0:	00000000 	nop
	    {
		delete_event(st);
  4270b4:	8fc40018 	lw	a0,24(s8)
  4270b8:	8f9985b4 	lw	t9,-31308(gp)
  4270bc:	00000000 	nop
  4270c0:	0320f809 	jalr	t9
  4270c4:	00000000 	nop
  4270c8:	8fdc0010 	lw	gp,16(s8)
  4270cc:	00000000 	nop
		delete_dpd_event(st);
  4270d0:	8fc40018 	lw	a0,24(s8)
  4270d4:	8f998794 	lw	t9,-30828(gp)
  4270d8:	00000000 	nop
  4270dc:	0320f809 	jalr	t9
  4270e0:	00000000 	nop
  4270e4:	8fdc0010 	lw	gp,16(s8)
  4270e8:	00000000 	nop
		event_schedule(EVENT_SA_REPLACE, 0, st);
  4270ec:	24040005 	li	a0,5
  4270f0:	00002821 	move	a1,zero
  4270f4:	8fc60018 	lw	a2,24(s8)
  4270f8:	8f998410 	lw	t9,-31728(gp)
  4270fc:	00000000 	nop
  427100:	0320f809 	jalr	t9
  427104:	00000000 	nop
  427108:	8fdc0010 	lw	gp,16(s8)
  42710c:	00000000 	nop
  427110:	8fc20018 	lw	v0,24(s8)
  427114:	00000000 	nop
  427118:	8c42025c 	lw	v0,604(v0)
  42711c:	00000000 	nop
  427120:	afc20018 	sw	v0,24(s8)
  427124:	1000ff91 	b	426f6c <replace_states_by_peer+0x84>
  427128:	00000000 	nop
	    }
}
  42712c:	03c0e821 	move	sp,s8
  427130:	8fbf0028 	lw	ra,40(sp)
  427134:	8fbe0024 	lw	s8,36(sp)
  427138:	27bd0030 	addiu	sp,sp,48
  42713c:	03e00008 	jr	ra
  427140:	00000000 	nop
	...

00427150 <usage>:
  427150:	3c1c0fbe 	lui	gp,0xfbe
  427154:	279c5820 	addiu	gp,gp,22560
  427158:	0399e021 	addu	gp,gp,t9
  42715c:	27bdffd8 	addiu	sp,sp,-40
  427160:	afbc0010 	sw	gp,16(sp)
  427164:	afbf0020 	sw	ra,32(sp)
  427168:	afbe001c 	sw	s8,28(sp)
  42716c:	afbc0018 	sw	gp,24(sp)
  427170:	03a0f021 	move	s8,sp
  427174:	afc40028 	sw	a0,40(s8)

static void
usage(const char *mess)
{
    if (mess != NULL && *mess != '\0')
  427178:	8fc20028 	lw	v0,40(s8)
  42717c:	00000000 	nop
  427180:	10400014 	beqz	v0,4271d4 <usage+0x84>
  427184:	00000000 	nop
  427188:	8fc20028 	lw	v0,40(s8)
  42718c:	00000000 	nop
  427190:	80420000 	lb	v0,0(v0)
  427194:	00000000 	nop
  427198:	1040000e 	beqz	v0,4271d4 <usage+0x84>
  42719c:	00000000 	nop
	fprintf(stderr, "%s\n", mess);
  4271a0:	8f84838c 	lw	a0,-31860(gp)
  4271a4:	00000000 	nop
  4271a8:	8c840000 	lw	a0,0(a0)
  4271ac:	8f85802c 	lw	a1,-32724(gp)
  4271b0:	00000000 	nop
  4271b4:	24a5ab98 	addiu	a1,a1,-21608
  4271b8:	8fc60028 	lw	a2,40(s8)
  4271bc:	8f99878c 	lw	t9,-30836(gp)
  4271c0:	00000000 	nop
  4271c4:	0320f809 	jalr	t9
  4271c8:	00000000 	nop
  4271cc:	8fdc0010 	lw	gp,16(s8)
  4271d0:	00000000 	nop
    fprintf(stderr,
  4271d4:	8f99823c 	lw	t9,-32196(gp)
  4271d8:	00000000 	nop
  4271dc:	0320f809 	jalr	t9
  4271e0:	00000000 	nop
  4271e4:	8fdc0010 	lw	gp,16(s8)
  4271e8:	00000000 	nop
  4271ec:	8f84838c 	lw	a0,-31860(gp)
  4271f0:	00000000 	nop
  4271f4:	8c840000 	lw	a0,0(a0)
  4271f8:	8f85802c 	lw	a1,-32724(gp)
  4271fc:	00000000 	nop
  427200:	24a5ab9c 	addiu	a1,a1,-21604
  427204:	00403021 	move	a2,v0
  427208:	8f99878c 	lw	t9,-30836(gp)
  42720c:	00000000 	nop
  427210:	0320f809 	jalr	t9
  427214:	00000000 	nop
  427218:	8fdc0010 	lw	gp,16(s8)
  42721c:	00000000 	nop
	"Usage: pluto"
	    " [--help]"
	    " [--version]"
	    " [--optionsfrom <filename>]"
	    " \\\n\t"
	    "[--nofork]"
	    " [--stderrlog]"
	    " [--noklips]"
	    " [--nocrsend]"
	    " [--strictcrlpolicy]"
            " [--crlcheckinterval]"
	    " [--uniqueids]"
	    " \\\n\t"
	    "[--interface <ifname>]"
	    " [--ikeport <port-number>]"
	    " \\\n\t"
	    "[--ctlbase <path>]"
	    " \\\n\t"
	    "[--secretsfile <secrets-file>]"
	    " \\\n\t"
	    "[--adns <pathname>]"
#ifdef DEBUG
	    " \\\n\t"
	    "[--debug-none]"
	    " [--debug-all]"
	    " \\\n\t"
	    "[--debug-raw]"
	    " [--debug-crypt]"
	    " [--debug-parsing]"
	    " [--debug-emitting]"
	    " \\\n\t"
	    "[--debug-control]"
	    " [--debug-klips]"
	    " [--debug-dns]"
	    " [ --debug-private]"
#endif
#ifdef NAT_TRAVERSAL
	    " [ --debug-nat_t]"
	    " \\\n\t"
	    "[--nat_traversal] [--keep_alive <delay_sec>]"
	    " \\\n\t"
		"[--force_keepalive] [--disable_port_floating]"
#endif
#ifdef VIRTUAL_IP
	    " \\\n\t"
	    "[--virtual_private <network_list>]"
#endif
	    "\n"
	"Openswan %s\n",
	ipsec_version_code());
    exit_pluto(mess == NULL? 0 : 1);
  427220:	8fc20028 	lw	v0,40(s8)
  427224:	00000000 	nop
  427228:	0002102b 	sltu	v0,zero,v0
  42722c:	00402021 	move	a0,v0
  427230:	8f99810c 	lw	t9,-32500(gp)
  427234:	00000000 	nop
  427238:	0320f809 	jalr	t9
  42723c:	00000000 	nop
  427240:	8fdc0010 	lw	gp,16(s8)
  427244:	00000000 	nop

00427248 <create_lock>:
  427248:	3c1c0fbe 	lui	gp,0xfbe
  42724c:	279c5728 	addiu	gp,gp,22312
  427250:	0399e021 	addu	gp,gp,t9
  427254:	27bdffc8 	addiu	sp,sp,-56
  427258:	afbc0018 	sw	gp,24(sp)
  42725c:	afbf0034 	sw	ra,52(sp)
  427260:	afbe0030 	sw	s8,48(sp)
  427264:	afbc002c 	sw	gp,44(sp)
  427268:	afb00028 	sw	s0,40(sp)
  42726c:	03a0f021 	move	s8,sp
}


/* lock file support
 * - provides convenient way for scripts to find Pluto's pid
 * - prevents multiple Plutos competing for the same port
 * - same basename as unix domain control socket
 * NOTE: will not take account of sharing LOCK_DIR with other systems.
 */

static char pluto_lock[sizeof(ctl_addr.sun_path)] = DEFAULT_CTLBASE LOCK_SUFFIX;
static bool pluto_lock_created = FALSE;

/* create lockfile, or die in the attempt */
static int
create_lock(void)
{
    int fd = open(pluto_lock, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC,
  427270:	8f848018 	lw	a0,-32744(gp)
  427274:	00000000 	nop
  427278:	24841590 	addiu	a0,a0,5520
  42727c:	24050701 	li	a1,1793
  427280:	24060124 	li	a2,292
  427284:	8f998174 	lw	t9,-32396(gp)
  427288:	00000000 	nop
  42728c:	0320f809 	jalr	t9
  427290:	00000000 	nop
  427294:	8fdc0018 	lw	gp,24(s8)
  427298:	afc20020 	sw	v0,32(s8)
	S_IRUSR | S_IRGRP | S_IROTH);

    if (fd < 0)
  42729c:	8fc20020 	lw	v0,32(s8)
  4272a0:	00000000 	nop
  4272a4:	04410049 	bgez	v0,4273cc <create_lock+0x184>
  4272a8:	00000000 	nop
    {
	if (errno == EEXIST)
  4272ac:	8f998234 	lw	t9,-32204(gp)
  4272b0:	00000000 	nop
  4272b4:	0320f809 	jalr	t9
  4272b8:	00000000 	nop
  4272bc:	8fdc0018 	lw	gp,24(s8)
  4272c0:	8c430000 	lw	v1,0(v0)
  4272c4:	24020011 	li	v0,17
  4272c8:	14620017 	bne	v1,v0,427328 <create_lock+0xe0>
  4272cc:	00000000 	nop
	{
	    fprintf(stderr, "pluto: lock file \"%s\" already exists\n"
  4272d0:	8f84838c 	lw	a0,-31860(gp)
  4272d4:	00000000 	nop
  4272d8:	8c840000 	lw	a0,0(a0)
  4272dc:	8f85802c 	lw	a1,-32724(gp)
  4272e0:	00000000 	nop
  4272e4:	24a5ae1c 	addiu	a1,a1,-20964
  4272e8:	8f868018 	lw	a2,-32744(gp)
  4272ec:	00000000 	nop
  4272f0:	24c61590 	addiu	a2,a2,5520
  4272f4:	8f99878c 	lw	t9,-30836(gp)
  4272f8:	00000000 	nop
  4272fc:	0320f809 	jalr	t9
  427300:	00000000 	nop
  427304:	8fdc0018 	lw	gp,24(s8)
  427308:	00000000 	nop
		, pluto_lock);
	    exit_pluto(10);
  42730c:	2404000a 	li	a0,10
  427310:	8f99810c 	lw	t9,-32500(gp)
  427314:	00000000 	nop
  427318:	0320f809 	jalr	t9
  42731c:	00000000 	nop
  427320:	8fdc0018 	lw	gp,24(s8)
  427324:	00000000 	nop
	}
	else
	{
	    fprintf(stderr
  427328:	8f998234 	lw	t9,-32204(gp)
  42732c:	00000000 	nop
  427330:	0320f809 	jalr	t9
  427334:	00000000 	nop
  427338:	8fdc0018 	lw	gp,24(s8)
  42733c:	00408021 	move	s0,v0
  427340:	8f998234 	lw	t9,-32204(gp)
  427344:	00000000 	nop
  427348:	0320f809 	jalr	t9
  42734c:	00000000 	nop
  427350:	8fdc0018 	lw	gp,24(s8)
  427354:	8c440000 	lw	a0,0(v0)
  427358:	8f998b8c 	lw	t9,-29812(gp)
  42735c:	00000000 	nop
  427360:	0320f809 	jalr	t9
  427364:	00000000 	nop
  427368:	8fdc0018 	lw	gp,24(s8)
  42736c:	afa20010 	sw	v0,16(sp)
  427370:	8f84838c 	lw	a0,-31860(gp)
  427374:	00000000 	nop
  427378:	8c840000 	lw	a0,0(a0)
  42737c:	8f85802c 	lw	a1,-32724(gp)
  427380:	00000000 	nop
  427384:	24a5ae44 	addiu	a1,a1,-20924
  427388:	8f868018 	lw	a2,-32744(gp)
  42738c:	00000000 	nop
  427390:	24c61590 	addiu	a2,a2,5520
  427394:	8e070000 	lw	a3,0(s0)
  427398:	8f99878c 	lw	t9,-30836(gp)
  42739c:	00000000 	nop
  4273a0:	0320f809 	jalr	t9
  4273a4:	00000000 	nop
  4273a8:	8fdc0018 	lw	gp,24(s8)
  4273ac:	00000000 	nop
		, "pluto: unable to create lock file \"%s\" (%d %s)\n"
		, pluto_lock, errno, strerror(errno));
	    exit_pluto(1);
  4273b0:	24040001 	li	a0,1
  4273b4:	8f99810c 	lw	t9,-32500(gp)
  4273b8:	00000000 	nop
  4273bc:	0320f809 	jalr	t9
  4273c0:	00000000 	nop
  4273c4:	8fdc0018 	lw	gp,24(s8)
  4273c8:	00000000 	nop
	}
    }
    pluto_lock_created = TRUE;
  4273cc:	24020001 	li	v0,1
  4273d0:	8f818018 	lw	at,-32744(gp)
  4273d4:	00000000 	nop
  4273d8:	242115fc 	addiu	at,at,5628
  4273dc:	ac220000 	sw	v0,0(at)
    return fd;
  4273e0:	8fc20020 	lw	v0,32(s8)
  4273e4:	00000000 	nop
}
  4273e8:	03c0e821 	move	sp,s8
  4273ec:	8fbf0034 	lw	ra,52(sp)
  4273f0:	8fbe0030 	lw	s8,48(sp)
  4273f4:	8fb00028 	lw	s0,40(sp)
  4273f8:	27bd0038 	addiu	sp,sp,56
  4273fc:	03e00008 	jr	ra
  427400:	00000000 	nop

00427404 <fill_lock>:
  427404:	3c1c0fbe 	lui	gp,0xfbe
  427408:	279c556c 	addiu	gp,gp,21868
  42740c:	0399e021 	addu	gp,gp,t9
  427410:	27bdffa8 	addiu	sp,sp,-88
  427414:	afbc0010 	sw	gp,16(sp)
  427418:	afbf0050 	sw	ra,80(sp)
  42741c:	afbe004c 	sw	s8,76(sp)
  427420:	afbc0048 	sw	gp,72(sp)
  427424:	03a0f021 	move	s8,sp
  427428:	afc40058 	sw	a0,88(s8)
  42742c:	afc5005c 	sw	a1,92(s8)

static bool
fill_lock(int lockfd, pid_t pid)
{
    char buf[30];	/* holds "<pid>\n" */
    int len = snprintf(buf, sizeof(buf), "%u\n", (unsigned int) pid);
  427430:	27c40018 	addiu	a0,s8,24
  427434:	2405001e 	li	a1,30
  427438:	8f86802c 	lw	a2,-32724(gp)
  42743c:	00000000 	nop
  427440:	24c6ae74 	addiu	a2,a2,-20876
  427444:	8fc7005c 	lw	a3,92(s8)
  427448:	8f998b38 	lw	t9,-29896(gp)
  42744c:	00000000 	nop
  427450:	0320f809 	jalr	t9
  427454:	00000000 	nop
  427458:	8fdc0010 	lw	gp,16(s8)
  42745c:	afc20038 	sw	v0,56(s8)
    bool ok = len > 0 && write(lockfd, buf, len) == len;
  427460:	afc00040 	sw	zero,64(s8)
  427464:	8fc20038 	lw	v0,56(s8)
  427468:	00000000 	nop
  42746c:	18400010 	blez	v0,4274b0 <fill_lock+0xac>
  427470:	00000000 	nop
  427474:	8fc40058 	lw	a0,88(s8)
  427478:	27c50018 	addiu	a1,s8,24
  42747c:	8fc60038 	lw	a2,56(s8)
  427480:	8f9987b0 	lw	t9,-30800(gp)
  427484:	00000000 	nop
  427488:	0320f809 	jalr	t9
  42748c:	00000000 	nop
  427490:	8fdc0010 	lw	gp,16(s8)
  427494:	00401821 	move	v1,v0
  427498:	8fc20038 	lw	v0,56(s8)
  42749c:	00000000 	nop
  4274a0:	14620003 	bne	v1,v0,4274b0 <fill_lock+0xac>
  4274a4:	00000000 	nop
  4274a8:	24020001 	li	v0,1
  4274ac:	afc20040 	sw	v0,64(s8)
  4274b0:	8fc20040 	lw	v0,64(s8)
  4274b4:	00000000 	nop
  4274b8:	afc2003c 	sw	v0,60(s8)

    close(lockfd);
  4274bc:	8fc40058 	lw	a0,88(s8)
  4274c0:	8f9980c8 	lw	t9,-32568(gp)
  4274c4:	00000000 	nop
  4274c8:	0320f809 	jalr	t9
  4274cc:	00000000 	nop
  4274d0:	8fdc0010 	lw	gp,16(s8)
  4274d4:	00000000 	nop
    return ok;
  4274d8:	8fc2003c 	lw	v0,60(s8)
  4274dc:	00000000 	nop
}
  4274e0:	03c0e821 	move	sp,s8
  4274e4:	8fbf0050 	lw	ra,80(sp)
  4274e8:	8fbe004c 	lw	s8,76(sp)
  4274ec:	27bd0058 	addiu	sp,sp,88
  4274f0:	03e00008 	jr	ra
  4274f4:	00000000 	nop

004274f8 <delete_lock>:
  4274f8:	3c1c0fbe 	lui	gp,0xfbe
  4274fc:	279c5478 	addiu	gp,gp,21624
  427500:	0399e021 	addu	gp,gp,t9
  427504:	27bdffd8 	addiu	sp,sp,-40
  427508:	afbc0010 	sw	gp,16(sp)
  42750c:	afbf0020 	sw	ra,32(sp)
  427510:	afbe001c 	sw	s8,28(sp)
  427514:	afbc0018 	sw	gp,24(sp)
  427518:	03a0f021 	move	s8,sp

static void
delete_lock(void)
{
    if (pluto_lock_created)
  42751c:	8f828018 	lw	v0,-32744(gp)
  427520:	00000000 	nop
  427524:	244215fc 	addiu	v0,v0,5628
  427528:	8c420000 	lw	v0,0(v0)
  42752c:	00000000 	nop
  427530:	10400010 	beqz	v0,427574 <delete_lock+0x7c>
  427534:	00000000 	nop
    {
	delete_ctl_socket();
  427538:	8f9980d0 	lw	t9,-32560(gp)
  42753c:	00000000 	nop
  427540:	0320f809 	jalr	t9
  427544:	00000000 	nop
  427548:	8fdc0010 	lw	gp,16(s8)
  42754c:	00000000 	nop
	unlink(pluto_lock);	/* is noting failure useful? */
  427550:	8f848018 	lw	a0,-32744(gp)
  427554:	00000000 	nop
  427558:	24841590 	addiu	a0,a0,5520
  42755c:	8f998618 	lw	t9,-31208(gp)
  427560:	00000000 	nop
  427564:	0320f809 	jalr	t9
  427568:	00000000 	nop
  42756c:	8fdc0010 	lw	gp,16(s8)
  427570:	00000000 	nop
    }
}
  427574:	03c0e821 	move	sp,s8
  427578:	8fbf0020 	lw	ra,32(sp)
  42757c:	8fbe001c 	lw	s8,28(sp)
  427580:	27bd0028 	addiu	sp,sp,40
  427584:	03e00008 	jr	ra
  427588:	00000000 	nop

0042758c <main>:
  42758c:	3c1c0fbe 	lui	gp,0xfbe
  427590:	279c53e4 	addiu	gp,gp,21476
  427594:	0399e021 	addu	gp,gp,t9
  427598:	27bdff98 	addiu	sp,sp,-104
  42759c:	afbc0018 	sw	gp,24(sp)
  4275a0:	afbf0064 	sw	ra,100(sp)
  4275a4:	afbe0060 	sw	s8,96(sp)
  4275a8:	afbc005c 	sw	gp,92(sp)
  4275ac:	afb00058 	sw	s0,88(sp)
  4275b0:	03a0f021 	move	s8,sp
  4275b4:	afc40068 	sw	a0,104(s8)
  4275b8:	afc5006c 	sw	a1,108(s8)

/* by default pluto sends certificate requests to its peers */
bool no_cr_send = FALSE;

/* by default the CRL policy is lenient */
bool strict_crl_policy = FALSE;

/* by default pluto does not fetch crls dynamically */
long crl_check_interval = 0;

int
main(int argc, char **argv)
{
    bool fork_desired = TRUE;
  4275bc:	24020001 	li	v0,1
  4275c0:	afc20020 	sw	v0,32(s8)
    bool log_to_stderr_desired = FALSE;
  4275c4:	afc00024 	sw	zero,36(s8)
    int lockfd;
#ifdef NAT_TRAVERSAL
    bool nat_traversal = FALSE;
  4275c8:	afc0002c 	sw	zero,44(s8)
    bool nat_t_spf = TRUE;  /* support port floating */
  4275cc:	afc20030 	sw	v0,48(s8)
    unsigned int keep_alive = 0;
  4275d0:	afc00034 	sw	zero,52(s8)
    bool force_keepalive = FALSE;
  4275d4:	afc00038 	sw	zero,56(s8)
#endif
#ifdef VIRTUAL_IP
    char *virtual_private = NULL;
  4275d8:	afc0003c 	sw	zero,60(s8)
#endif

    /* handle arguments */
    for (;;)
    {
	static const struct option long_opts[] = {
	    /* name, has_arg, flag, val */
	    { "help", no_argument, NULL, 'h' },
	    { "version", no_argument, NULL, 'v' },
	    { "optionsfrom", required_argument, NULL, '+' },
	    { "nofork", no_argument, NULL, 'd' },
	    { "stderrlog", no_argument, NULL, 'e' },
	    { "noklips", no_argument, NULL, 'n' },
	    { "nocrsend", no_argument, NULL, 'c' },
	    { "strictcrlpolicy", no_argument, NULL, 'r' },
            { "crlcheckinterval", required_argument, NULL, 'x'},
	    { "uniqueids", no_argument, NULL, 'u' },
	    { "interface", required_argument, NULL, 'i' },
	    { "ikeport", required_argument, NULL, 'p' },
	    { "ctlbase", required_argument, NULL, 'b' },
	    { "secretsfile", required_argument, NULL, 's' },
	    { "adns", required_argument, NULL, 'a' },
#ifdef DEBUG
	    { "debug-none", no_argument, NULL, 'N' },
	    { "debug-all]", no_argument, NULL, 'A' },
	    { "debug-raw", no_argument, NULL, 'R' },
	    { "debug-crypt", no_argument, NULL, 'X' },
	    { "debug-parsing", no_argument, NULL, 'P' },
	    { "debug-emitting", no_argument, NULL, 'E' },
	    { "debug-control", no_argument, NULL, 'C' },
	    { "debug-lifecycle", no_argument, NULL, 'L' },
	    { "debug-klips", no_argument, NULL, 'K' },
	    { "debug-dns", no_argument, NULL, 'D' },
	    { "debug-private", no_argument, NULL, 'Z' },
#endif
#ifdef NAT_TRAVERSAL
	    { "nat_traversal", no_argument, NULL, '1' },
	    { "keep_alive", required_argument, NULL, '2' },
	    { "force_keepalive", no_argument, NULL, '3' },
	    { "disable_port_floating", no_argument, NULL, '4' },
	    { "debug-nat_t", no_argument, NULL, '5' },
#endif
#ifdef VIRTUAL_IP
	    { "virtual_private", required_argument, NULL, '6' },
#endif
	    { 0,0,0,0 }
	    };
	/* Note: we don't like the way short options get parsed
	 * by getopt_long, so we simply pass an empty string as
	 * the list.  It could be "hvdenp:l:s:" "NARXPECK".
	 */
	int c = getopt_long(argc, argv, "", long_opts, NULL);
  4275dc:	afa00010 	sw	zero,16(sp)
  4275e0:	8fc40068 	lw	a0,104(s8)
  4275e4:	8fc5006c 	lw	a1,108(s8)
  4275e8:	8f86802c 	lw	a2,-32724(gp)
  4275ec:	00000000 	nop
  4275f0:	24c6b014 	addiu	a2,a2,-20460
  4275f4:	8f878018 	lw	a3,-32744(gp)
  4275f8:	00000000 	nop
  4275fc:	24e7160c 	addiu	a3,a3,5644
  427600:	8f998b44 	lw	t9,-29884(gp)
  427604:	00000000 	nop
  427608:	0320f809 	jalr	t9
  42760c:	00000000 	nop
  427610:	8fdc0018 	lw	gp,24(s8)
  427614:	afc20040 	sw	v0,64(s8)

	/* Note: "breaking" from case terminates loop */
	switch (c)
  427618:	8fc20040 	lw	v0,64(s8)
  42761c:	00000000 	nop
  427620:	24420001 	addiu	v0,v0,1
  427624:	afc20050 	sw	v0,80(s8)
  427628:	8fc30050 	lw	v1,80(s8)
  42762c:	00000000 	nop
  427630:	2c62007a 	sltiu	v0,v1,122
  427634:	10400229 	beqz	v0,427edc <main+0x950>
  427638:	00000000 	nop
  42763c:	8fc20050 	lw	v0,80(s8)
  427640:	00000000 	nop
  427644:	00021080 	sll	v0,v0,0x2
  427648:	8f81802c 	lw	at,-32724(gp)
  42764c:	00000000 	nop
  427650:	2421b220 	addiu	at,at,-19936
  427654:	00221021 	addu	v0,at,v0
  427658:	8c420000 	lw	v0,0(v0)
  42765c:	00000000 	nop
  427660:	005c1021 	addu	v0,v0,gp
  427664:	00400008 	jr	v0
  427668:	00000000 	nop
	{
	case EOF:	/* end of flags */
	    break;

	case 0: /* long option already handled */
	    continue;

	case ':':	/* diagnostic already printed by getopt_long */
	case '?':	/* diagnostic already printed by getopt_long */
	    usage("");
  42766c:	8f84802c 	lw	a0,-32724(gp)
  427670:	00000000 	nop
  427674:	2484b014 	addiu	a0,a0,-20460
  427678:	8f998028 	lw	t9,-32728(gp)
  42767c:	00000000 	nop
  427680:	27397150 	addiu	t9,t9,29008
  427684:	00000000 	nop
  427688:	0320f809 	jalr	t9
  42768c:	00000000 	nop
  427690:	8fdc0018 	lw	gp,24(s8)
  427694:	00000000 	nop
	    break;   /* not actually reached */
  427698:	1000021d 	b	427f10 <main+0x984>
  42769c:	00000000 	nop

	case 'h':	/* --help */
	    usage(NULL);
  4276a0:	00002021 	move	a0,zero
  4276a4:	8f998028 	lw	t9,-32728(gp)
  4276a8:	00000000 	nop
  4276ac:	27397150 	addiu	t9,t9,29008
  4276b0:	00000000 	nop
  4276b4:	0320f809 	jalr	t9
  4276b8:	00000000 	nop
  4276bc:	8fdc0018 	lw	gp,24(s8)
  4276c0:	00000000 	nop
	    break;	/* not actually reached */
  4276c4:	10000212 	b	427f10 <main+0x984>
  4276c8:	00000000 	nop

	case 'v':	/* --version */
	    {
		const char **sp = ipsec_copyright_notice();
  4276cc:	8f99831c 	lw	t9,-31972(gp)
  4276d0:	00000000 	nop
  4276d4:	0320f809 	jalr	t9
  4276d8:	00000000 	nop
  4276dc:	8fdc0018 	lw	gp,24(s8)
  4276e0:	afc20044 	sw	v0,68(s8)

		printf("%s\n", ipsec_version_string());
  4276e4:	8f9982d0 	lw	t9,-32048(gp)
  4276e8:	00000000 	nop
  4276ec:	0320f809 	jalr	t9
  4276f0:	00000000 	nop
  4276f4:	8fdc0018 	lw	gp,24(s8)
  4276f8:	00000000 	nop
  4276fc:	8f84802c 	lw	a0,-32724(gp)
  427700:	00000000 	nop
  427704:	2484ab98 	addiu	a0,a0,-21608
  427708:	00402821 	move	a1,v0
  42770c:	8f998be0 	lw	t9,-29728(gp)
  427710:	00000000 	nop
  427714:	0320f809 	jalr	t9
  427718:	00000000 	nop
  42771c:	8fdc0018 	lw	gp,24(s8)
  427720:	00000000 	nop
		for (; *sp != NULL; sp++)
  427724:	8fc20044 	lw	v0,68(s8)
  427728:	00000000 	nop
  42772c:	8c420000 	lw	v0,0(v0)
  427730:	00000000 	nop
  427734:	14400008 	bnez	v0,427758 <main+0x1cc>
  427738:	00000000 	nop
		    puts(*sp);
	    }
	    exit_pluto(0);
  42773c:	00002021 	move	a0,zero
  427740:	8f99810c 	lw	t9,-32500(gp)
  427744:	00000000 	nop
  427748:	0320f809 	jalr	t9
  42774c:	00000000 	nop
  427750:	8fdc0018 	lw	gp,24(s8)
  427754:	00000000 	nop
  427758:	8fc20044 	lw	v0,68(s8)
  42775c:	00000000 	nop
  427760:	8c440000 	lw	a0,0(v0)
  427764:	8f998a08 	lw	t9,-30200(gp)
  427768:	00000000 	nop
  42776c:	0320f809 	jalr	t9
  427770:	00000000 	nop
  427774:	8fdc0018 	lw	gp,24(s8)
  427778:	00000000 	nop
  42777c:	8fc20044 	lw	v0,68(s8)
  427780:	00000000 	nop
  427784:	24420004 	addiu	v0,v0,4
  427788:	afc20044 	sw	v0,68(s8)
  42778c:	1000ffe5 	b	427724 <main+0x198>
  427790:	00000000 	nop
	    break;	/* not actually reached */

	case '+':	/* --optionsfrom <filename> */
	    optionsfrom(optarg, &argc, &argv, optind, stderr);
  427794:	8f82838c 	lw	v0,-31860(gp)
  427798:	00000000 	nop
  42779c:	8c420000 	lw	v0,0(v0)
  4277a0:	00000000 	nop
  4277a4:	afa20010 	sw	v0,16(sp)
  4277a8:	8f8489a4 	lw	a0,-30300(gp)
  4277ac:	00000000 	nop
  4277b0:	8c840000 	lw	a0,0(a0)
  4277b4:	27c20068 	addiu	v0,s8,104
  4277b8:	00402821 	move	a1,v0
  4277bc:	27c6006c 	addiu	a2,s8,108
  4277c0:	8f8786f8 	lw	a3,-30984(gp)
  4277c4:	00000000 	nop
  4277c8:	8ce70000 	lw	a3,0(a3)
  4277cc:	8f998c5c 	lw	t9,-29604(gp)
  4277d0:	00000000 	nop
  4277d4:	0320f809 	jalr	t9
  4277d8:	00000000 	nop
  4277dc:	8fdc0018 	lw	gp,24(s8)
  4277e0:	00000000 	nop
	    /* does not return on error */
	    continue;
  4277e4:	1000ff7d 	b	4275dc <main+0x50>
  4277e8:	00000000 	nop

	case 'd':	/* --nofork*/
	    fork_desired = FALSE;
  4277ec:	afc00020 	sw	zero,32(s8)
	    continue;
  4277f0:	1000ff7a 	b	4275dc <main+0x50>
  4277f4:	00000000 	nop

	case 'e':	/* --stderrlog */
	    log_to_stderr_desired = TRUE;
  4277f8:	24020001 	li	v0,1
  4277fc:	afc20024 	sw	v0,36(s8)
	    continue;
  427800:	1000ff76 	b	4275dc <main+0x50>
  427804:	00000000 	nop

	case 'n':	/* --noklips */
	    no_klips = TRUE;
  427808:	24020001 	li	v0,1
  42780c:	8f8186ec 	lw	at,-30996(gp)
  427810:	00000000 	nop
  427814:	ac220000 	sw	v0,0(at)
	    continue;
  427818:	1000ff70 	b	4275dc <main+0x50>
  42781c:	00000000 	nop

	case 'c':	/* --nocrsend */
	    no_cr_send = TRUE;
  427820:	24020001 	li	v0,1
  427824:	8f81844c 	lw	at,-31668(gp)
  427828:	00000000 	nop
  42782c:	ac220000 	sw	v0,0(at)
	    continue
  427830:	1000ff6a 	b	4275dc <main+0x50>
  427834:	00000000 	nop
	    ;

	case 'r':	/* --strictcrlpolicy */
	    strict_crl_policy = TRUE;
  427838:	24020001 	li	v0,1
  42783c:	8f818aac 	lw	at,-30036(gp)
  427840:	00000000 	nop
  427844:	ac220000 	sw	v0,0(at)
	    continue
  427848:	1000ff64 	b	4275dc <main+0x50>
  42784c:	00000000 	nop
	    ;
        case 'x':       /* --crlcheckinterval <time>*/
            if (optarg == NULL || !isdigit(optarg[0]))
  427850:	8f8289a4 	lw	v0,-30300(gp)
  427854:	00000000 	nop
  427858:	8c420000 	lw	v0,0(v0)
  42785c:	00000000 	nop
  427860:	1040000f 	beqz	v0,4278a0 <main+0x314>
  427864:	00000000 	nop
  427868:	8f8289a4 	lw	v0,-30300(gp)
  42786c:	00000000 	nop
  427870:	8c420000 	lw	v0,0(v0)
  427874:	00000000 	nop
  427878:	80420000 	lb	v0,0(v0)
  42787c:	00000000 	nop
  427880:	00402021 	move	a0,v0
  427884:	8f9982c0 	lw	t9,-32064(gp)
  427888:	00000000 	nop
  42788c:	0320f809 	jalr	t9
  427890:	00000000 	nop
  427894:	8fdc0018 	lw	gp,24(s8)
  427898:	1440000c 	bnez	v0,4278cc <main+0x340>
  42789c:	00000000 	nop
                usage("missing interval time");
  4278a0:	8f84802c 	lw	a0,-32724(gp)
  4278a4:	00000000 	nop
  4278a8:	2484b018 	addiu	a0,a0,-20456
  4278ac:	8f998028 	lw	t9,-32728(gp)
  4278b0:	00000000 	nop
  4278b4:	27397150 	addiu	t9,t9,29008
  4278b8:	00000000 	nop
  4278bc:	0320f809 	jalr	t9
  4278c0:	00000000 	nop
  4278c4:	8fdc0018 	lw	gp,24(s8)
  4278c8:	00000000 	nop

            {
                char *endptr;
                long interval = strtol(optarg, &endptr, 0);
  4278cc:	8f8489a4 	lw	a0,-30300(gp)
  4278d0:	00000000 	nop
  4278d4:	8c840000 	lw	a0,0(a0)
  4278d8:	27c50044 	addiu	a1,s8,68
  4278dc:	00003021 	move	a2,zero
  4278e0:	8f99884c 	lw	t9,-30644(gp)
  4278e4:	00000000 	nop
  4278e8:	0320f809 	jalr	t9
  4278ec:	00000000 	nop
  4278f0:	8fdc0018 	lw	gp,24(s8)
  4278f4:	afc20048 	sw	v0,72(s8)

                if (*endptr != '\0' || endptr == optarg
                || interval < 0)
  4278f8:	8fc20044 	lw	v0,68(s8)
  4278fc:	00000000 	nop
  427900:	80420000 	lb	v0,0(v0)
  427904:	00000000 	nop
  427908:	1440000e 	bnez	v0,427944 <main+0x3b8>
  42790c:	00000000 	nop
  427910:	8fc30044 	lw	v1,68(s8)
  427914:	8f8289a4 	lw	v0,-30300(gp)
  427918:	00000000 	nop
  42791c:	8c420000 	lw	v0,0(v0)
  427920:	00000000 	nop
  427924:	10620007 	beq	v1,v0,427944 <main+0x3b8>
  427928:	00000000 	nop
  42792c:	8fc20048 	lw	v0,72(s8)
  427930:	00000000 	nop
  427934:	04400003 	bltz	v0,427944 <main+0x3b8>
  427938:	00000000 	nop
  42793c:	1000000c 	b	427970 <main+0x3e4>
  427940:	00000000 	nop
                    usage("<interval-time> must be a positive number or zero");
  427944:	8f84802c 	lw	a0,-32724(gp)
  427948:	00000000 	nop
  42794c:	2484b030 	addiu	a0,a0,-20432
  427950:	8f998028 	lw	t9,-32728(gp)
  427954:	00000000 	nop
  427958:	27397150 	addiu	t9,t9,29008
  42795c:	00000000 	nop
  427960:	0320f809 	jalr	t9
  427964:	00000000 	nop
  427968:	8fdc0018 	lw	gp,24(s8)
  42796c:	00000000 	nop
                crl_check_interval = interval;
  427970:	8fc20048 	lw	v0,72(s8)
  427974:	8f8186e8 	lw	at,-31000(gp)
  427978:	00000000 	nop
  42797c:	ac220000 	sw	v0,0(at)
            }
           continue
  427980:	1000ff16 	b	4275dc <main+0x50>
  427984:	00000000 	nop
           ;
	case 'u':	/* --uniqueids */
	    uniqueIDs = TRUE;
  427988:	24020001 	li	v0,1
  42798c:	8f8185b0 	lw	at,-31312(gp)
  427990:	00000000 	nop
  427994:	ac220000 	sw	v0,0(at)
	    continue;
  427998:	1000ff10 	b	4275dc <main+0x50>
  42799c:	00000000 	nop

	case 'i':	/* --interface <ifname> */
	    if (!use_interface(optarg))
  4279a0:	8f8489a4 	lw	a0,-30300(gp)
  4279a4:	00000000 	nop
  4279a8:	8c840000 	lw	a0,0(a0)
  4279ac:	8f998a34 	lw	t9,-30156(gp)
  4279b0:	00000000 	nop
  4279b4:	0320f809 	jalr	t9
  4279b8:	00000000 	nop
  4279bc:	8fdc0018 	lw	gp,24(s8)
  4279c0:	1440ff06 	bnez	v0,4275dc <main+0x50>
  4279c4:	00000000 	nop
		usage("too many --interface specifications");
  4279c8:	8f84802c 	lw	a0,-32724(gp)
  4279cc:	00000000 	nop
  4279d0:	2484b064 	addiu	a0,a0,-20380
  4279d4:	8f998028 	lw	t9,-32728(gp)
  4279d8:	00000000 	nop
  4279dc:	27397150 	addiu	t9,t9,29008
  4279e0:	00000000 	nop
  4279e4:	0320f809 	jalr	t9
  4279e8:	00000000 	nop
  4279ec:	8fdc0018 	lw	gp,24(s8)
  4279f0:	00000000 	nop
	    continue;
  4279f4:	1000fef9 	b	4275dc <main+0x50>
  4279f8:	00000000 	nop

	case 'p':	/* --port <portnumber> */
	    if (optarg == NULL || !isdigit(optarg[0]))
  4279fc:	8f8289a4 	lw	v0,-30300(gp)
  427a00:	00000000 	nop
  427a04:	8c420000 	lw	v0,0(v0)
  427a08:	00000000 	nop
  427a0c:	1040000f 	beqz	v0,427a4c <main+0x4c0>
  427a10:	00000000 	nop
  427a14:	8f8289a4 	lw	v0,-30300(gp)
  427a18:	00000000 	nop
  427a1c:	8c420000 	lw	v0,0(v0)
  427a20:	00000000 	nop
  427a24:	80420000 	lb	v0,0(v0)
  427a28:	00000000 	nop
  427a2c:	00402021 	move	a0,v0
  427a30:	8f9982c0 	lw	t9,-32064(gp)
  427a34:	00000000 	nop
  427a38:	0320f809 	jalr	t9
  427a3c:	00000000 	nop
  427a40:	8fdc0018 	lw	gp,24(s8)
  427a44:	1440000c 	bnez	v0,427a78 <main+0x4ec>
  427a48:	00000000 	nop
		usage("missing port number");
  427a4c:	8f84802c 	lw	a0,-32724(gp)
  427a50:	00000000 	nop
  427a54:	2484b088 	addiu	a0,a0,-20344
  427a58:	8f998028 	lw	t9,-32728(gp)
  427a5c:	00000000 	nop
  427a60:	27397150 	addiu	t9,t9,29008
  427a64:	00000000 	nop
  427a68:	0320f809 	jalr	t9
  427a6c:	00000000 	nop
  427a70:	8fdc0018 	lw	gp,24(s8)
  427a74:	00000000 	nop

	    {
		char *endptr;
		long port = strtol(optarg, &endptr, 0);
  427a78:	8f8489a4 	lw	a0,-30300(gp)
  427a7c:	00000000 	nop
  427a80:	8c840000 	lw	a0,0(a0)
  427a84:	27c50048 	addiu	a1,s8,72
  427a88:	00003021 	move	a2,zero
  427a8c:	8f99884c 	lw	t9,-30644(gp)
  427a90:	00000000 	nop
  427a94:	0320f809 	jalr	t9
  427a98:	00000000 	nop
  427a9c:	8fdc0018 	lw	gp,24(s8)
  427aa0:	afc2004c 	sw	v0,76(s8)

		if (*endptr != '\0' || endptr == optarg
		|| port <= 0 || port > 0x10000)
  427aa4:	8fc20048 	lw	v0,72(s8)
  427aa8:	00000000 	nop
  427aac:	80420000 	lb	v0,0(v0)
  427ab0:	00000000 	nop
  427ab4:	14400014 	bnez	v0,427b08 <main+0x57c>
  427ab8:	00000000 	nop
  427abc:	8fc30048 	lw	v1,72(s8)
  427ac0:	8f8289a4 	lw	v0,-30300(gp)
  427ac4:	00000000 	nop
  427ac8:	8c420000 	lw	v0,0(v0)
  427acc:	00000000 	nop
  427ad0:	1062000d 	beq	v1,v0,427b08 <main+0x57c>
  427ad4:	00000000 	nop
  427ad8:	8fc2004c 	lw	v0,76(s8)
  427adc:	00000000 	nop
  427ae0:	18400009 	blez	v0,427b08 <main+0x57c>
  427ae4:	00000000 	nop
  427ae8:	3c020001 	lui	v0,0x1
  427aec:	8fc3004c 	lw	v1,76(s8)
  427af0:	00000000 	nop
  427af4:	0043102a 	slt	v0,v0,v1
  427af8:	14400003 	bnez	v0,427b08 <main+0x57c>
  427afc:	00000000 	nop
  427b00:	1000000c 	b	427b34 <main+0x5a8>
  427b04:	00000000 	nop
		    usage("<port-number> must be a number between 1 and 65535");
  427b08:	8f84802c 	lw	a0,-32724(gp)
  427b0c:	00000000 	nop
  427b10:	2484b09c 	addiu	a0,a0,-20324
  427b14:	8f998028 	lw	t9,-32728(gp)
  427b18:	00000000 	nop
  427b1c:	27397150 	addiu	t9,t9,29008
  427b20:	00000000 	nop
  427b24:	0320f809 	jalr	t9
  427b28:	00000000 	nop
  427b2c:	8fdc0018 	lw	gp,24(s8)
  427b30:	00000000 	nop
		pluto_port = port;
  427b34:	97c2004e 	lhu	v0,78(s8)
  427b38:	8f8184b0 	lw	at,-31568(gp)
  427b3c:	00000000 	nop
  427b40:	a4220000 	sh	v0,0(at)
	    }
	    continue;
  427b44:	1000fea5 	b	4275dc <main+0x50>
  427b48:	00000000 	nop

	case 'b':	/* --ctlbase <path> */
	    if (snprintf(ctl_addr.sun_path, sizeof(ctl_addr.sun_path)
	    , "%s%s", optarg, CTL_SUFFIX) == -1)
  427b4c:	8f82802c 	lw	v0,-32724(gp)
  427b50:	00000000 	nop
  427b54:	2442b0d0 	addiu	v0,v0,-20272
  427b58:	00000000 	nop
  427b5c:	afa20010 	sw	v0,16(sp)
  427b60:	8f8487c0 	lw	a0,-30784(gp)
  427b64:	00000000 	nop
  427b68:	24840002 	addiu	a0,a0,2
  427b6c:	2405006c 	li	a1,108
  427b70:	8f86802c 	lw	a2,-32724(gp)
  427b74:	00000000 	nop
  427b78:	24c6b0d8 	addiu	a2,a2,-20264
  427b7c:	8f8789a4 	lw	a3,-30300(gp)
  427b80:	00000000 	nop
  427b84:	8ce70000 	lw	a3,0(a3)
  427b88:	8f998b38 	lw	t9,-29896(gp)
  427b8c:	00000000 	nop
  427b90:	0320f809 	jalr	t9
  427b94:	00000000 	nop
  427b98:	8fdc0018 	lw	gp,24(s8)
  427b9c:	00401821 	move	v1,v0
  427ba0:	2402ffff 	li	v0,-1
  427ba4:	1462000c 	bne	v1,v0,427bd8 <main+0x64c>
  427ba8:	00000000 	nop
		usage("<path>" CTL_SUFFIX " too long for sun_path");
  427bac:	8f84802c 	lw	a0,-32724(gp)
  427bb0:	00000000 	nop
  427bb4:	2484b0e0 	addiu	a0,a0,-20256
  427bb8:	8f998028 	lw	t9,-32728(gp)
  427bbc:	00000000 	nop
  427bc0:	27397150 	addiu	t9,t9,29008
  427bc4:	00000000 	nop
  427bc8:	0320f809 	jalr	t9
  427bcc:	00000000 	nop
  427bd0:	8fdc0018 	lw	gp,24(s8)
  427bd4:	00000000 	nop
	    if (snprintf(pluto_lock, sizeof(pluto_lock)
	    , "%s%s", optarg, LOCK_SUFFIX) == -1)
  427bd8:	8f82802c 	lw	v0,-32724(gp)
  427bdc:	00000000 	nop
  427be0:	2442b104 	addiu	v0,v0,-20220
  427be4:	00000000 	nop
  427be8:	afa20010 	sw	v0,16(sp)
  427bec:	8f848018 	lw	a0,-32744(gp)
  427bf0:	00000000 	nop
  427bf4:	24841590 	addiu	a0,a0,5520
  427bf8:	2405006c 	li	a1,108
  427bfc:	8f86802c 	lw	a2,-32724(gp)
  427c00:	00000000 	nop
  427c04:	24c6b0d8 	addiu	a2,a2,-20264
  427c08:	8f8789a4 	lw	a3,-30300(gp)
  427c0c:	00000000 	nop
  427c10:	8ce70000 	lw	a3,0(a3)
  427c14:	8f998b38 	lw	t9,-29896(gp)
  427c18:	00000000 	nop
  427c1c:	0320f809 	jalr	t9
  427c20:	00000000 	nop
  427c24:	8fdc0018 	lw	gp,24(s8)
  427c28:	00401821 	move	v1,v0
  427c2c:	2402ffff 	li	v0,-1
  427c30:	1462fe6a 	bne	v1,v0,4275dc <main+0x50>
  427c34:	00000000 	nop
		usage("<path>" LOCK_SUFFIX " must fit");
  427c38:	8f84802c 	lw	a0,-32724(gp)
  427c3c:	00000000 	nop
  427c40:	2484b10c 	addiu	a0,a0,-20212
  427c44:	8f998028 	lw	t9,-32728(gp)
  427c48:	00000000 	nop
  427c4c:	27397150 	addiu	t9,t9,29008
  427c50:	00000000 	nop
  427c54:	0320f809 	jalr	t9
  427c58:	00000000 	nop
  427c5c:	8fdc0018 	lw	gp,24(s8)
  427c60:	00000000 	nop
	    continue;
  427c64:	1000fe5d 	b	4275dc <main+0x50>
  427c68:	00000000 	nop

	case 's':	/* --secretsfile <secrets-file> */
	    shared_secrets_file = optarg;
  427c6c:	8f8289a4 	lw	v0,-30300(gp)
  427c70:	00000000 	nop
  427c74:	8c420000 	lw	v0,0(v0)
  427c78:	8f818104 	lw	at,-32508(gp)
  427c7c:	00000000 	nop
  427c80:	ac220000 	sw	v0,0(at)
	    continue;
  427c84:	1000fe55 	b	4275dc <main+0x50>
  427c88:	00000000 	nop

	case 'a':	/* --adns <pathname> */
	    pluto_adns_option = optarg;
  427c8c:	8f8289a4 	lw	v0,-30300(gp)
  427c90:	00000000 	nop
  427c94:	8c420000 	lw	v0,0(v0)
  427c98:	8f8187e0 	lw	at,-30752(gp)
  427c9c:	00000000 	nop
  427ca0:	ac220000 	sw	v0,0(at)
	    continue;
  427ca4:	1000fe4d 	b	4275dc <main+0x50>
  427ca8:	00000000 	nop

#ifdef DEBUG
	case 'N':	/* --debug-none */
	    base_debugging = DBG_NONE;
  427cac:	8f81830c 	lw	at,-31988(gp)
  427cb0:	00000000 	nop
  427cb4:	ac200000 	sw	zero,0(at)
	    continue;
  427cb8:	1000fe48 	b	4275dc <main+0x50>
  427cbc:	00000000 	nop

	case 'A':	/* --debug-all */
	    base_debugging = DBG_ALL;
  427cc0:	240201ff 	li	v0,511
  427cc4:	8f81830c 	lw	at,-31988(gp)
  427cc8:	00000000 	nop
  427ccc:	ac220000 	sw	v0,0(at)
	    continue;
  427cd0:	1000fe42 	b	4275dc <main+0x50>
  427cd4:	00000000 	nop

	case 'R':	/* --debug-raw */
	    base_debugging |= DBG_RAW;
  427cd8:	8f82830c 	lw	v0,-31988(gp)
  427cdc:	00000000 	nop
  427ce0:	8c420000 	lw	v0,0(v0)
  427ce4:	00000000 	nop
  427ce8:	34420001 	ori	v0,v0,0x1
  427cec:	8f81830c 	lw	at,-31988(gp)
  427cf0:	00000000 	nop
  427cf4:	ac220000 	sw	v0,0(at)
	    continue;
  427cf8:	1000fe38 	b	4275dc <main+0x50>
  427cfc:	00000000 	nop

	case 'X':	/* --debug-crypt */
	    base_debugging |= DBG_CRYPT;
  427d00:	8f82830c 	lw	v0,-31988(gp)
  427d04:	00000000 	nop
  427d08:	8c420000 	lw	v0,0(v0)
  427d0c:	00000000 	nop
  427d10:	34420002 	ori	v0,v0,0x2
  427d14:	8f81830c 	lw	at,-31988(gp)
  427d18:	00000000 	nop
  427d1c:	ac220000 	sw	v0,0(at)
	    continue;
  427d20:	1000fe2e 	b	4275dc <main+0x50>
  427d24:	00000000 	nop

	case 'P':	/* --debug-parsing */
	    base_debugging |= DBG_PARSING;
  427d28:	8f82830c 	lw	v0,-31988(gp)
  427d2c:	00000000 	nop
  427d30:	8c420000 	lw	v0,0(v0)
  427d34:	00000000 	nop
  427d38:	34420004 	ori	v0,v0,0x4
  427d3c:	8f81830c 	lw	at,-31988(gp)
  427d40:	00000000 	nop
  427d44:	ac220000 	sw	v0,0(at)
	    continue;
  427d48:	1000fe24 	b	4275dc <main+0x50>
  427d4c:	00000000 	nop

	case 'E':	/* --debug-emitting */
	    base_debugging |= DBG_EMITTING;
  427d50:	8f82830c 	lw	v0,-31988(gp)
  427d54:	00000000 	nop
  427d58:	8c420000 	lw	v0,0(v0)
  427d5c:	00000000 	nop
  427d60:	34420008 	ori	v0,v0,0x8
  427d64:	8f81830c 	lw	at,-31988(gp)
  427d68:	00000000 	nop
  427d6c:	ac220000 	sw	v0,0(at)
	    continue;
  427d70:	1000fe1a 	b	4275dc <main+0x50>
  427d74:	00000000 	nop

	case 'C':	/* --debug-control */
	    base_debugging |= DBG_CONTROL;
  427d78:	8f82830c 	lw	v0,-31988(gp)
  427d7c:	00000000 	nop
  427d80:	8c420000 	lw	v0,0(v0)
  427d84:	00000000 	nop
  427d88:	34420010 	ori	v0,v0,0x10
  427d8c:	8f81830c 	lw	at,-31988(gp)
  427d90:	00000000 	nop
  427d94:	ac220000 	sw	v0,0(at)
	    continue;
  427d98:	1000fe10 	b	4275dc <main+0x50>
  427d9c:	00000000 	nop

	case 'L':	/* --debug-lifecycle */
	    base_debugging |= DBG_LIFECYCLE;
  427da0:	8f82830c 	lw	v0,-31988(gp)
  427da4:	00000000 	nop
  427da8:	8c420000 	lw	v0,0(v0)
  427dac:	00000000 	nop
  427db0:	34420020 	ori	v0,v0,0x20
  427db4:	8f81830c 	lw	at,-31988(gp)
  427db8:	00000000 	nop
  427dbc:	ac220000 	sw	v0,0(at)
	    continue;
  427dc0:	1000fe06 	b	4275dc <main+0x50>
  427dc4:	00000000 	nop

	case 'K':	/* --debug-klips */
	    base_debugging |= DBG_KLIPS;
  427dc8:	8f82830c 	lw	v0,-31988(gp)
  427dcc:	00000000 	nop
  427dd0:	8c420000 	lw	v0,0(v0)
  427dd4:	00000000 	nop
  427dd8:	34420040 	ori	v0,v0,0x40
  427ddc:	8f81830c 	lw	at,-31988(gp)
  427de0:	00000000 	nop
  427de4:	ac220000 	sw	v0,0(at)
	    continue;
  427de8:	1000fdfc 	b	4275dc <main+0x50>
  427dec:	00000000 	nop

	case 'D':	/* --debug-dns */
	    base_debugging |= DBG_DNS;
  427df0:	8f82830c 	lw	v0,-31988(gp)
  427df4:	00000000 	nop
  427df8:	8c420000 	lw	v0,0(v0)
  427dfc:	00000000 	nop
  427e00:	34420100 	ori	v0,v0,0x100
  427e04:	8f81830c 	lw	at,-31988(gp)
  427e08:	00000000 	nop
  427e0c:	ac220000 	sw	v0,0(at)
	    continue;
  427e10:	1000fdf2 	b	4275dc <main+0x50>
  427e14:	00000000 	nop

	case 'Z':	/* --debug-private */
	    base_debugging |= DBG_PRIVATE;
  427e18:	8f82830c 	lw	v0,-31988(gp)
  427e1c:	00000000 	nop
  427e20:	8c420000 	lw	v0,0(v0)
  427e24:	00000000 	nop
  427e28:	34420200 	ori	v0,v0,0x200
  427e2c:	8f81830c 	lw	at,-31988(gp)
  427e30:	00000000 	nop
  427e34:	ac220000 	sw	v0,0(at)
	    continue;
  427e38:	1000fde8 	b	4275dc <main+0x50>
  427e3c:	00000000 	nop
#endif
#ifdef NAT_TRAVERSAL
	case '1':	/* --nat_traversal */
	    nat_traversal = TRUE;
  427e40:	24020001 	li	v0,1
  427e44:	afc2002c 	sw	v0,44(s8)
	    continue;
  427e48:	1000fde4 	b	4275dc <main+0x50>
  427e4c:	00000000 	nop
	case '2':	/* --keep_alive */
	    keep_alive = atoi(optarg);
  427e50:	8f8489a4 	lw	a0,-30300(gp)
  427e54:	00000000 	nop
  427e58:	8c840000 	lw	a0,0(a0)
  427e5c:	8f9981e0 	lw	t9,-32288(gp)
  427e60:	00000000 	nop
  427e64:	0320f809 	jalr	t9
  427e68:	00000000 	nop
  427e6c:	8fdc0018 	lw	gp,24(s8)
  427e70:	afc20034 	sw	v0,52(s8)
	    continue;
  427e74:	1000fdd9 	b	4275dc <main+0x50>
  427e78:	00000000 	nop
	case '3':	/* --force_keepalive */
	    force_keepalive = TRUE;
  427e7c:	24020001 	li	v0,1
  427e80:	afc20038 	sw	v0,56(s8)
	    continue;
  427e84:	1000fdd5 	b	4275dc <main+0x50>
  427e88:	00000000 	nop
	case '4':	/* --disable_port_floating */
	    nat_t_spf = FALSE;
  427e8c:	afc00030 	sw	zero,48(s8)
	    continue;
  427e90:	1000fdd2 	b	4275dc <main+0x50>
  427e94:	00000000 	nop
	case '5':	/* --debug-nat_t */
	    base_debugging |= DBG_NATT;
  427e98:	8f82830c 	lw	v0,-31988(gp)
  427e9c:	00000000 	nop
  427ea0:	8c420000 	lw	v0,0(v0)
  427ea4:	00000000 	nop
  427ea8:	34420080 	ori	v0,v0,0x80
  427eac:	8f81830c 	lw	at,-31988(gp)
  427eb0:	00000000 	nop
  427eb4:	ac220000 	sw	v0,0(at)
	    continue;
  427eb8:	1000fdc8 	b	4275dc <main+0x50>
  427ebc:	00000000 	nop
#endif
#ifdef VIRTUAL_IP
	case '6':	/* --virtual_private */
	    virtual_private = optarg;
  427ec0:	8f8289a4 	lw	v0,-30300(gp)
  427ec4:	00000000 	nop
  427ec8:	8c420000 	lw	v0,0(v0)
  427ecc:	00000000 	nop
  427ed0:	afc2003c 	sw	v0,60(s8)
	    continue;
  427ed4:	1000fdc1 	b	4275dc <main+0x50>
  427ed8:	00000000 	nop
#endif
	default:
	    impossible();
  427edc:	8f84802c 	lw	a0,-32724(gp)
  427ee0:	00000000 	nop
  427ee4:	2484b120 	addiu	a0,a0,-20192
  427ee8:	8f85802c 	lw	a1,-32724(gp)
  427eec:	00000000 	nop
  427ef0:	24a5b12c 	addiu	a1,a1,-20180
  427ef4:	240601b8 	li	a2,440
  427ef8:	8f998bb8 	lw	t9,-29768(gp)
  427efc:	00000000 	nop
  427f00:	0320f809 	jalr	t9
  427f04:	00000000 	nop
  427f08:	8fdc0018 	lw	gp,24(s8)
  427f0c:	00000000 	nop
	}
	break;
    }
    if (optind != argc)
  427f10:	8f8386f8 	lw	v1,-30984(gp)
  427f14:	00000000 	nop
  427f18:	8c630000 	lw	v1,0(v1)
  427f1c:	8fc20068 	lw	v0,104(s8)
  427f20:	00000000 	nop
  427f24:	1062000c 	beq	v1,v0,427f58 <main+0x9cc>
  427f28:	00000000 	nop
	usage("unexpected argument");
  427f2c:	8f84802c 	lw	a0,-32724(gp)
  427f30:	00000000 	nop
  427f34:	2484b134 	addiu	a0,a0,-20172
  427f38:	8f998028 	lw	t9,-32728(gp)
  427f3c:	00000000 	nop
  427f40:	27397150 	addiu	t9,t9,29008
  427f44:	00000000 	nop
  427f48:	0320f809 	jalr	t9
  427f4c:	00000000 	nop
  427f50:	8fdc0018 	lw	gp,24(s8)
  427f54:	00000000 	nop
    reset_debugging();
  427f58:	8f82830c 	lw	v0,-31988(gp)
  427f5c:	00000000 	nop
  427f60:	8c420000 	lw	v0,0(v0)
  427f64:	8f8184f8 	lw	at,-31496(gp)
  427f68:	00000000 	nop
  427f6c:	ac220000 	sw	v0,0(at)
    lockfd = create_lock();
  427f70:	8f998028 	lw	t9,-32728(gp)
  427f74:	00000000 	nop
  427f78:	27397248 	addiu	t9,t9,29256
  427f7c:	00000000 	nop
  427f80:	0320f809 	jalr	t9
  427f84:	00000000 	nop
  427f88:	8fdc0018 	lw	gp,24(s8)
  427f8c:	afc20028 	sw	v0,40(s8)

    /* select between logging methods */

    if (log_to_stderr_desired)
  427f90:	8fc20024 	lw	v0,36(s8)
  427f94:	00000000 	nop
  427f98:	10400006 	beqz	v0,427fb4 <main+0xa28>
  427f9c:	00000000 	nop
	log_to_syslog = FALSE;
  427fa0:	8f818300 	lw	at,-32000(gp)
  427fa4:	00000000 	nop
  427fa8:	ac200000 	sw	zero,0(at)
  427fac:	10000004 	b	427fc0 <main+0xa34>
  427fb0:	00000000 	nop
    else
	log_to_stderr = FALSE;
  427fb4:	8f81809c 	lw	at,-32612(gp)
  427fb8:	00000000 	nop
  427fbc:	ac200000 	sw	zero,0(at)

    /* create control socket.
     * We must create it before the parent process returns so that
     * there will be no race condition in using it.  The easiest
     * place to do this is before the daemon fork.
     */
    {
	err_t ugh = init_ctl_socket();
  427fc0:	8f998a1c 	lw	t9,-30180(gp)
  427fc4:	00000000 	nop
  427fc8:	0320f809 	jalr	t9
  427fcc:	00000000 	nop
  427fd0:	8fdc0018 	lw	gp,24(s8)
  427fd4:	afc2004c 	sw	v0,76(s8)

	if (ugh != NULL)
  427fd8:	8fc2004c 	lw	v0,76(s8)
  427fdc:	00000000 	nop
  427fe0:	10400015 	beqz	v0,428038 <main+0xaac>
  427fe4:	00000000 	nop
	{
	    fprintf(stderr, "pluto: %s", ugh);
  427fe8:	8f84838c 	lw	a0,-31860(gp)
  427fec:	00000000 	nop
  427ff0:	8c840000 	lw	a0,0(a0)
  427ff4:	8f85802c 	lw	a1,-32724(gp)
  427ff8:	00000000 	nop
  427ffc:	24a5b148 	addiu	a1,a1,-20152
  428000:	8fc6004c 	lw	a2,76(s8)
  428004:	8f99878c 	lw	t9,-30836(gp)
  428008:	00000000 	nop
  42800c:	0320f809 	jalr	t9
  428010:	00000000 	nop
  428014:	8fdc0018 	lw	gp,24(s8)
  428018:	00000000 	nop
	    exit_pluto(1);
  42801c:	24040001 	li	a0,1
  428020:	8f99810c 	lw	t9,-32500(gp)
  428024:	00000000 	nop
  428028:	0320f809 	jalr	t9
  42802c:	00000000 	nop
  428030:	8fdc0018 	lw	gp,24(s8)
  428034:	00000000 	nop
	}
    }

    /* If not suppressed, do daemon fork */

    if (fork_desired)
  428038:	8fc20020 	lw	v0,32(s8)
  42803c:	00000000 	nop
  428040:	1040007c 	beqz	v0,428234 <main+0xca8>
  428044:	00000000 	nop
    {
	{
	    pid_t pid = fork();
  428048:	8f9985a0 	lw	t9,-31328(gp)
  42804c:	00000000 	nop
  428050:	0320f809 	jalr	t9
  428054:	00000000 	nop
  428058:	8fdc0018 	lw	gp,24(s8)
  42805c:	afc2004c 	sw	v0,76(s8)

	    if (pid < 0)
  428060:	8fc2004c 	lw	v0,76(s8)
  428064:	00000000 	nop
  428068:	0441002b 	bgez	v0,428118 <main+0xb8c>
  42806c:	00000000 	nop
	    {
		int e = errno;
  428070:	8f998234 	lw	t9,-32204(gp)
  428074:	00000000 	nop
  428078:	0320f809 	jalr	t9
  42807c:	00000000 	nop
  428080:	8fdc0018 	lw	gp,24(s8)
  428084:	8c420000 	lw	v0,0(v0)
  428088:	00000000 	nop
  42808c:	afc20048 	sw	v0,72(s8)

		fprintf(stderr, "pluto: fork failed (%d %s)\n",
  428090:	8f998234 	lw	t9,-32204(gp)
  428094:	00000000 	nop
  428098:	0320f809 	jalr	t9
  42809c:	00000000 	nop
  4280a0:	8fdc0018 	lw	gp,24(s8)
  4280a4:	00408021 	move	s0,v0
  4280a8:	8fc40048 	lw	a0,72(s8)
  4280ac:	8f998b8c 	lw	t9,-29812(gp)
  4280b0:	00000000 	nop
  4280b4:	0320f809 	jalr	t9
  4280b8:	00000000 	nop
  4280bc:	8fdc0018 	lw	gp,24(s8)
  4280c0:	00000000 	nop
  4280c4:	8f84838c 	lw	a0,-31860(gp)
  4280c8:	00000000 	nop
  4280cc:	8c840000 	lw	a0,0(a0)
  4280d0:	8f85802c 	lw	a1,-32724(gp)
  4280d4:	00000000 	nop
  4280d8:	24a5b154 	addiu	a1,a1,-20140
  4280dc:	8e060000 	lw	a2,0(s0)
  4280e0:	00403821 	move	a3,v0
  4280e4:	8f99878c 	lw	t9,-30836(gp)
  4280e8:	00000000 	nop
  4280ec:	0320f809 	jalr	t9
  4280f0:	00000000 	nop
  4280f4:	8fdc0018 	lw	gp,24(s8)
  4280f8:	00000000 	nop
		    errno, strerror(e));
		exit_pluto(1);
  4280fc:	24040001 	li	a0,1
  428100:	8f99810c 	lw	t9,-32500(gp)
  428104:	00000000 	nop
  428108:	0320f809 	jalr	t9
  42810c:	00000000 	nop
  428110:	8fdc0018 	lw	gp,24(s8)
  428114:	00000000 	nop
	    }

	    if (pid != 0)
  428118:	8fc2004c 	lw	v0,76(s8)
  42811c:	00000000 	nop
  428120:	10400013 	beqz	v0,428170 <main+0xbe4>
  428124:	00000000 	nop
	    {
		/* parent: die, after filling PID into lock file.
		 * must not use exit_pluto: lock would be removed!
		 */
		exit(fill_lock(lockfd, pid)? 0 : 1);
  428128:	8fc40028 	lw	a0,40(s8)
  42812c:	8fc5004c 	lw	a1,76(s8)
  428130:	8f998028 	lw	t9,-32728(gp)
  428134:	00000000 	nop
  428138:	27397404 	addiu	t9,t9,29700
  42813c:	00000000 	nop
  428140:	0320f809 	jalr	t9
  428144:	00000000 	nop
  428148:	8fdc0018 	lw	gp,24(s8)
  42814c:	38420000 	xori	v0,v0,0x0
  428150:	2c420001 	sltiu	v0,v0,1
  428154:	00402021 	move	a0,v0
  428158:	8f998224 	lw	t9,-32220(gp)
  42815c:	00000000 	nop
  428160:	0320f809 	jalr	t9
  428164:	00000000 	nop
  428168:	8fdc0018 	lw	gp,24(s8)
  42816c:	00000000 	nop
	    }
	}

	if (setsid() < 0)
  428170:	8f998124 	lw	t9,-32476(gp)
  428174:	00000000 	nop
  428178:	0320f809 	jalr	t9
  42817c:	00000000 	nop
  428180:	8fdc0018 	lw	gp,24(s8)
  428184:	0441004f 	bgez	v0,4282c4 <main+0xd38>
  428188:	00000000 	nop
	{
	    int e = errno;
  42818c:	8f998234 	lw	t9,-32204(gp)
  428190:	00000000 	nop
  428194:	0320f809 	jalr	t9
  428198:	00000000 	nop
  42819c:	8fdc0018 	lw	gp,24(s8)
  4281a0:	8c420000 	lw	v0,0(v0)
  4281a4:	00000000 	nop
  4281a8:	afc2004c 	sw	v0,76(s8)

	    fprintf(stderr, "setsid() failed in main(). Errno %d: %s\n",
  4281ac:	8f998234 	lw	t9,-32204(gp)
  4281b0:	00000000 	nop
  4281b4:	0320f809 	jalr	t9
  4281b8:	00000000 	nop
  4281bc:	8fdc0018 	lw	gp,24(s8)
  4281c0:	00408021 	move	s0,v0
  4281c4:	8fc4004c 	lw	a0,76(s8)
  4281c8:	8f998b8c 	lw	t9,-29812(gp)
  4281cc:	00000000 	nop
  4281d0:	0320f809 	jalr	t9
  4281d4:	00000000 	nop
  4281d8:	8fdc0018 	lw	gp,24(s8)
  4281dc:	00000000 	nop
  4281e0:	8f84838c 	lw	a0,-31860(gp)
  4281e4:	00000000 	nop
  4281e8:	8c840000 	lw	a0,0(a0)
  4281ec:	8f85802c 	lw	a1,-32724(gp)
  4281f0:	00000000 	nop
  4281f4:	24a5b170 	addiu	a1,a1,-20112
  4281f8:	8e060000 	lw	a2,0(s0)
  4281fc:	00403821 	move	a3,v0
  428200:	8f99878c 	lw	t9,-30836(gp)
  428204:	00000000 	nop
  428208:	0320f809 	jalr	t9
  42820c:	00000000 	nop
  428210:	8fdc0018 	lw	gp,24(s8)
  428214:	00000000 	nop
		errno, strerror(e));
	    exit_pluto(1);
  428218:	24040001 	li	a0,1
  42821c:	8f99810c 	lw	t9,-32500(gp)
  428220:	00000000 	nop
  428224:	0320f809 	jalr	t9
  428228:	00000000 	nop
  42822c:	8fdc0018 	lw	gp,24(s8)
  428230:	00000000 	nop
	}
    }
    else
    {
	/* no daemon fork: we have to fill in lock file */
	(void) fill_lock(lockfd, getpid());
  428234:	8f998a90 	lw	t9,-30064(gp)
  428238:	00000000 	nop
  42823c:	0320f809 	jalr	t9
  428240:	00000000 	nop
  428244:	8fdc0018 	lw	gp,24(s8)
  428248:	8fc40028 	lw	a0,40(s8)
  42824c:	00402821 	move	a1,v0
  428250:	8f998028 	lw	t9,-32728(gp)
  428254:	00000000 	nop
  428258:	27397404 	addiu	t9,t9,29700
  42825c:	00000000 	nop
  428260:	0320f809 	jalr	t9
  428264:	00000000 	nop
  428268:	8fdc0018 	lw	gp,24(s8)
  42826c:	00000000 	nop
	fprintf(stdout, "Pluto initialized\n");
  428270:	8f848bdc 	lw	a0,-29732(gp)
  428274:	00000000 	nop
  428278:	8c840000 	lw	a0,0(a0)
  42827c:	8f85802c 	lw	a1,-32724(gp)
  428280:	00000000 	nop
  428284:	24a5b19c 	addiu	a1,a1,-20068
  428288:	8f99878c 	lw	t9,-30836(gp)
  42828c:	00000000 	nop
  428290:	0320f809 	jalr	t9
  428294:	00000000 	nop
  428298:	8fdc0018 	lw	gp,24(s8)
  42829c:	00000000 	nop
	fflush(stdout);
  4282a0:	8f848bdc 	lw	a0,-29732(gp)
  4282a4:	00000000 	nop
  4282a8:	8c840000 	lw	a0,0(a0)
  4282ac:	8f9988f8 	lw	t9,-30472(gp)
  4282b0:	00000000 	nop
  4282b4:	0320f809 	jalr	t9
  4282b8:	00000000 	nop
  4282bc:	8fdc0018 	lw	gp,24(s8)
  4282c0:	00000000 	nop
    }

    /* Close everything but ctl_fd and (if needed) stderr.
     * There is some danger that a library that we don't know
     * about is using some fd that we don't know about.
     * I guess we'll soon find out.
     */
    {
	int i;

	for (i = getdtablesize() - 1; i >= 0; i--)  /* Bad hack */
  4282c4:	8f998bd4 	lw	t9,-29740(gp)
  4282c8:	00000000 	nop
  4282cc:	0320f809 	jalr	t9
  4282d0:	00000000 	nop
  4282d4:	8fdc0018 	lw	gp,24(s8)
  4282d8:	2442ffff 	addiu	v0,v0,-1
  4282dc:	afc2004c 	sw	v0,76(s8)
  4282e0:	8fc2004c 	lw	v0,76(s8)
  4282e4:	00000000 	nop
  4282e8:	04410003 	bgez	v0,4282f8 <main+0xd6c>
  4282ec:	00000000 	nop
  4282f0:	10000021 	b	428378 <main+0xdec>
  4282f4:	00000000 	nop
	    if ((!log_to_stderr || i != 2)
	    && i != ctl_fd)
  4282f8:	8f82809c 	lw	v0,-32612(gp)
  4282fc:	00000000 	nop
  428300:	8c420000 	lw	v0,0(v0)
  428304:	00000000 	nop
  428308:	10400007 	beqz	v0,428328 <main+0xd9c>
  42830c:	00000000 	nop
  428310:	8fc3004c 	lw	v1,76(s8)
  428314:	24020002 	li	v0,2
  428318:	14620003 	bne	v1,v0,428328 <main+0xd9c>
  42831c:	00000000 	nop
  428320:	1000000f 	b	428360 <main+0xdd4>
  428324:	00000000 	nop
  428328:	8fc3004c 	lw	v1,76(s8)
  42832c:	8f828288 	lw	v0,-32120(gp)
  428330:	00000000 	nop
  428334:	8c420000 	lw	v0,0(v0)
  428338:	00000000 	nop
  42833c:	10620008 	beq	v1,v0,428360 <main+0xdd4>
  428340:	00000000 	nop
		close(i);
  428344:	8fc4004c 	lw	a0,76(s8)
  428348:	8f9980c8 	lw	t9,-32568(gp)
  42834c:	00000000 	nop
  428350:	0320f809 	jalr	t9
  428354:	00000000 	nop
  428358:	8fdc0018 	lw	gp,24(s8)
  42835c:	00000000 	nop
  428360:	8fc2004c 	lw	v0,76(s8)
  428364:	00000000 	nop
  428368:	2442ffff 	addiu	v0,v0,-1
  42836c:	afc2004c 	sw	v0,76(s8)
  428370:	1000ffdb 	b	4282e0 <main+0xd54>
  428374:	00000000 	nop

	/* make sure that stdin, stdout, stderr are reserved */
	if (open("/dev/null", O_RDONLY) != 0)
  428378:	8f84802c 	lw	a0,-32724(gp)
  42837c:	00000000 	nop
  428380:	2484b1b0 	addiu	a0,a0,-20048
  428384:	00002821 	move	a1,zero
  428388:	8f998174 	lw	t9,-32396(gp)
  42838c:	00000000 	nop
  428390:	0320f809 	jalr	t9
  428394:	00000000 	nop
  428398:	8fdc0018 	lw	gp,24(s8)
  42839c:	10400007 	beqz	v0,4283bc <main+0xe30>
  4283a0:	00000000 	nop
	    abort();
  4283a4:	8f998890 	lw	t9,-30576(gp)
  4283a8:	00000000 	nop
  4283ac:	0320f809 	jalr	t9
  4283b0:	00000000 	nop
  4283b4:	8fdc0018 	lw	gp,24(s8)
  4283b8:	00000000 	nop
	if (dup2(0, 1) != 1)
  4283bc:	00002021 	move	a0,zero
  4283c0:	24050001 	li	a1,1
  4283c4:	8f998a04 	lw	t9,-30204(gp)
  4283c8:	00000000 	nop
  4283cc:	0320f809 	jalr	t9
  4283d0:	00000000 	nop
  4283d4:	8fdc0018 	lw	gp,24(s8)
  4283d8:	00401821 	move	v1,v0
  4283dc:	24020001 	li	v0,1
  4283e0:	10620007 	beq	v1,v0,428400 <main+0xe74>
  4283e4:	00000000 	nop
	    abort();
  4283e8:	8f998890 	lw	t9,-30576(gp)
  4283ec:	00000000 	nop
  4283f0:	0320f809 	jalr	t9
  4283f4:	00000000 	nop
  4283f8:	8fdc0018 	lw	gp,24(s8)
  4283fc:	00000000 	nop
	if (!log_to_stderr && dup2(0, 2) != 2)
  428400:	8f82809c 	lw	v0,-32612(gp)
  428404:	00000000 	nop
  428408:	8c420000 	lw	v0,0(v0)
  42840c:	00000000 	nop
  428410:	14400012 	bnez	v0,42845c <main+0xed0>
  428414:	00000000 	nop
  428418:	00002021 	move	a0,zero
  42841c:	24050002 	li	a1,2
  428420:	8f998a04 	lw	t9,-30204(gp)
  428424:	00000000 	nop
  428428:	0320f809 	jalr	t9
  42842c:	00000000 	nop
  428430:	8fdc0018 	lw	gp,24(s8)
  428434:	00401821 	move	v1,v0
  428438:	24020002 	li	v0,2
  42843c:	10620007 	beq	v1,v0,42845c <main+0xed0>
  428440:	00000000 	nop
	    abort();
  428444:	8f998890 	lw	t9,-30576(gp)
  428448:	00000000 	nop
  42844c:	0320f809 	jalr	t9
  428450:	00000000 	nop
  428454:	8fdc0018 	lw	gp,24(s8)
  428458:	00000000 	nop
    }

    init_constants();
  42845c:	8f9982a0 	lw	t9,-32096(gp)
  428460:	00000000 	nop
  428464:	0320f809 	jalr	t9
  428468:	00000000 	nop
  42846c:	8fdc0018 	lw	gp,24(s8)
  428470:	00000000 	nop
    init_log();
  428474:	8f998964 	lw	t9,-30364(gp)
  428478:	00000000 	nop
  42847c:	0320f809 	jalr	t9
  428480:	00000000 	nop
  428484:	8fdc0018 	lw	gp,24(s8)
  428488:	00000000 	nop
    /* Note: some scripts may look for this exact message -- don't change */
    plog("Starting Pluto (Openswan Version %s)", ipsec_version_code());
  42848c:	8f99823c 	lw	t9,-32196(gp)
  428490:	00000000 	nop
  428494:	0320f809 	jalr	t9
  428498:	00000000 	nop
  42849c:	8fdc0018 	lw	gp,24(s8)
  4284a0:	00000000 	nop
  4284a4:	8f84802c 	lw	a0,-32724(gp)
  4284a8:	00000000 	nop
  4284ac:	2484b1bc 	addiu	a0,a0,-20036
  4284b0:	00402821 	move	a1,v0
  4284b4:	8f998abc 	lw	t9,-30020(gp)
  4284b8:	00000000 	nop
  4284bc:	0320f809 	jalr	t9
  4284c0:	00000000 	nop
  4284c4:	8fdc0018 	lw	gp,24(s8)
  4284c8:	00000000 	nop
    plog("  including X.509 patch with traffic selectors (Version %s)", x509patch_version);
  4284cc:	8f84802c 	lw	a0,-32724(gp)
  4284d0:	00000000 	nop
  4284d4:	2484b1e4 	addiu	a0,a0,-19996
  4284d8:	8f85802c 	lw	a1,-32724(gp)
  4284dc:	00000000 	nop
  4284e0:	24a5ab90 	addiu	a1,a1,-21616
  4284e4:	8f998abc 	lw	t9,-30020(gp)
  4284e8:	00000000 	nop
  4284ec:	0320f809 	jalr	t9
  4284f0:	00000000 	nop
  4284f4:	8fdc0018 	lw	gp,24(s8)
  4284f8:	00000000 	nop

#ifdef NAT_TRAVERSAL
    init_nat_traversal(nat_traversal, keep_alive, force_keepalive, nat_t_spf);
  4284fc:	8fc4002c 	lw	a0,44(s8)
  428500:	8fc50034 	lw	a1,52(s8)
  428504:	8fc60038 	lw	a2,56(s8)
  428508:	8fc70030 	lw	a3,48(s8)
  42850c:	8f998a74 	lw	t9,-30092(gp)
  428510:	00000000 	nop
  428514:	0320f809 	jalr	t9
  428518:	00000000 	nop
  42851c:	8fdc0018 	lw	gp,24(s8)
  428520:	00000000 	nop
#endif

#ifdef VIRTUAL_IP
    init_virtual_ip(virtual_private);
  428524:	8fc4003c 	lw	a0,60(s8)
  428528:	8f998440 	lw	t9,-31680(gp)
  42852c:	00000000 	nop
  428530:	0320f809 	jalr	t9
  428534:	00000000 	nop
  428538:	8fdc0018 	lw	gp,24(s8)
  42853c:	00000000 	nop
#endif
    init_rnd_pool();
  428540:	8f9988d8 	lw	t9,-30504(gp)
  428544:	00000000 	nop
  428548:	0320f809 	jalr	t9
  42854c:	00000000 	nop
  428550:	8fdc0018 	lw	gp,24(s8)
  428554:	00000000 	nop
    init_secret();
  428558:	8f998a68 	lw	t9,-30104(gp)
  42855c:	00000000 	nop
  428560:	0320f809 	jalr	t9
  428564:	00000000 	nop
  428568:	8fdc0018 	lw	gp,24(s8)
  42856c:	00000000 	nop
    init_states();
  428570:	8f998108 	lw	t9,-32504(gp)
  428574:	00000000 	nop
  428578:	0320f809 	jalr	t9
  42857c:	00000000 	nop
  428580:	8fdc0018 	lw	gp,24(s8)
  428584:	00000000 	nop
    init_crypto();
  428588:	8f9982fc 	lw	t9,-32004(gp)
  42858c:	00000000 	nop
  428590:	0320f809 	jalr	t9
  428594:	00000000 	nop
  428598:	8fdc0018 	lw	gp,24(s8)
  42859c:	00000000 	nop
    init_demux();
  4285a0:	8f9984fc 	lw	t9,-31492(gp)
  4285a4:	00000000 	nop
  4285a8:	0320f809 	jalr	t9
  4285ac:	00000000 	nop
  4285b0:	8fdc0018 	lw	gp,24(s8)
  4285b4:	00000000 	nop
    init_kernel();
  4285b8:	8f998bf4 	lw	t9,-29708(gp)
  4285bc:	00000000 	nop
  4285c0:	0320f809 	jalr	t9
  4285c4:	00000000 	nop
  4285c8:	8fdc0018 	lw	gp,24(s8)
  4285cc:	00000000 	nop
    init_adns();
  4285d0:	8f998388 	lw	t9,-31864(gp)
  4285d4:	00000000 	nop
  4285d8:	0320f809 	jalr	t9
  4285dc:	00000000 	nop
  4285e0:	8fdc0018 	lw	gp,24(s8)
  4285e4:	00000000 	nop

    /* loading CA certificates */
    load_cacerts();
  4285e8:	8f998128 	lw	t9,-32472(gp)
  4285ec:	00000000 	nop
  4285f0:	0320f809 	jalr	t9
  4285f4:	00000000 	nop
  4285f8:	8fdc0018 	lw	gp,24(s8)
  4285fc:	00000000 	nop
    /* loading CRLs */
    load_crls();
  428600:	8f998944 	lw	t9,-30396(gp)
  428604:	00000000 	nop
  428608:	0320f809 	jalr	t9
  42860c:	00000000 	nop
  428610:	8fdc0018 	lw	gp,24(s8)
  428614:	00000000 	nop
    /* loading my X.509 or OpenPGP certificate */
    load_mycert();
  428618:	8f99889c 	lw	t9,-30564(gp)
  42861c:	00000000 	nop
  428620:	0320f809 	jalr	t9
  428624:	00000000 	nop
  428628:	8fdc0018 	lw	gp,24(s8)
  42862c:	00000000 	nop

    call_server();
  428630:	8f998620 	lw	t9,-31200(gp)
  428634:	00000000 	nop
  428638:	0320f809 	jalr	t9
  42863c:	00000000 	nop
  428640:	8fdc0018 	lw	gp,24(s8)
  428644:	00000000 	nop
    return -1;        /* Shouldn't ever reach this */
  428648:	2402ffff 	li	v0,-1
}
  42864c:	03c0e821 	move	sp,s8
  428650:	8fbf0064 	lw	ra,100(sp)
  428654:	8fbe0060 	lw	s8,96(sp)
  428658:	8fb00058 	lw	s0,88(sp)
  42865c:	27bd0068 	addiu	sp,sp,104
  428660:	03e00008 	jr	ra
  428664:	00000000 	nop

00428668 <exit_pluto>:
  428668:	3c1c0fbe 	lui	gp,0xfbe
  42866c:	279c4308 	addiu	gp,gp,17160
  428670:	0399e021 	addu	gp,gp,t9
  428674:	27bdffd8 	addiu	sp,sp,-40
  428678:	afbc0010 	sw	gp,16(sp)
  42867c:	afbf0020 	sw	ra,32(sp)
  428680:	afbe001c 	sw	s8,28(sp)
  428684:	afbc0018 	sw	gp,24(sp)
  428688:	03a0f021 	move	s8,sp
  42868c:	afc40028 	sw	a0,40(s8)

/* leave pluto, with status.
 * Once child is launched, parent must not exit this way because
 * the lock would be released.
 *
 *  0 OK
 *  1 general discomfort
 * 10 lock file exists
 */
void
exit_pluto(int status)
{
    reset_globals();	/* needed because we may be called in odd state */
  428690:	2402ffff 	li	v0,-1
  428694:	8f818994 	lw	at,-30316(gp)
  428698:	00000000 	nop
  42869c:	ac220000 	sw	v0,0(at)
  4286a0:	8f8187f8 	lw	at,-30728(gp)
  4286a4:	00000000 	nop
  4286a8:	ac200000 	sw	zero,0(at)
  4286ac:	8f818748 	lw	at,-30904(gp)
  4286b0:	00000000 	nop
  4286b4:	ac200000 	sw	zero,0(at)
  4286b8:	8f8188c8 	lw	at,-30520(gp)
  4286bc:	00000000 	nop
  4286c0:	ac200000 	sw	zero,0(at)
  4286c4:	8f82830c 	lw	v0,-31988(gp)
  4286c8:	00000000 	nop
  4286cc:	8c420000 	lw	v0,0(v0)
  4286d0:	8f8184f8 	lw	at,-31496(gp)
  4286d4:	00000000 	nop
  4286d8:	ac220000 	sw	v0,0(at)
    free_preshared_secrets();
  4286dc:	8f998bcc 	lw	t9,-29748(gp)
  4286e0:	00000000 	nop
  4286e4:	0320f809 	jalr	t9
  4286e8:	00000000 	nop
  4286ec:	8fdc0010 	lw	gp,16(s8)
  4286f0:	00000000 	nop
    free_remembered_public_keys();
  4286f4:	8f998630 	lw	t9,-31184(gp)
  4286f8:	00000000 	nop
  4286fc:	0320f809 	jalr	t9
  428700:	00000000 	nop
  428704:	8fdc0010 	lw	gp,16(s8)
  428708:	00000000 	nop
    delete_every_connection();
  42870c:	8f9981cc 	lw	t9,-32308(gp)
  428710:	00000000 	nop
  428714:	0320f809 	jalr	t9
  428718:	00000000 	nop
  42871c:	8fdc0010 	lw	gp,16(s8)
  428720:	00000000 	nop
    free_cacerts();	/* free chain of CA certificates */
  428724:	8f9989d8 	lw	t9,-30248(gp)
  428728:	00000000 	nop
  42872c:	0320f809 	jalr	t9
  428730:	00000000 	nop
  428734:	8fdc0010 	lw	gp,16(s8)
  428738:	00000000 	nop
    free_crls();	/* free chain of CRLS */
  42873c:	8f998c4c 	lw	t9,-29620(gp)
  428740:	00000000 	nop
  428744:	0320f809 	jalr	t9
  428748:	00000000 	nop
  42874c:	8fdc0010 	lw	gp,16(s8)
  428750:	00000000 	nop
    free_mycert();	/* free default certificate (deprecated for X.509) */
  428754:	8f99898c 	lw	t9,-30324(gp)
  428758:	00000000 	nop
  42875c:	0320f809 	jalr	t9
  428760:	00000000 	nop
  428764:	8fdc0010 	lw	gp,16(s8)
  428768:	00000000 	nop
    free_ifaces();
  42876c:	8f998ad4 	lw	t9,-29996(gp)
  428770:	00000000 	nop
  428774:	0320f809 	jalr	t9
  428778:	00000000 	nop
  42877c:	8fdc0010 	lw	gp,16(s8)
  428780:	00000000 	nop
    stop_adns();
  428784:	8f998b24 	lw	t9,-29916(gp)
  428788:	00000000 	nop
  42878c:	0320f809 	jalr	t9
  428790:	00000000 	nop
  428794:	8fdc0010 	lw	gp,16(s8)
  428798:	00000000 	nop
    free_md_pool();
  42879c:	8f9985ec 	lw	t9,-31252(gp)
  4287a0:	00000000 	nop
  4287a4:	0320f809 	jalr	t9
  4287a8:	00000000 	nop
  4287ac:	8fdc0010 	lw	gp,16(s8)
  4287b0:	00000000 	nop
    delete_lock();
  4287b4:	8f998028 	lw	t9,-32728(gp)
  4287b8:	00000000 	nop
  4287bc:	273974f8 	addiu	t9,t9,29944
  4287c0:	00000000 	nop
  4287c4:	0320f809 	jalr	t9
  4287c8:	00000000 	nop
  4287cc:	8fdc0010 	lw	gp,16(s8)
  4287d0:	00000000 	nop
#ifdef LEAK_DETECTIVE
    report_leaks();
#endif /* LEAK_DETECTIVE */
    close_log();
  4287d4:	8f9980a0 	lw	t9,-32608(gp)
  4287d8:	00000000 	nop
  4287dc:	0320f809 	jalr	t9
  4287e0:	00000000 	nop
  4287e4:	8fdc0010 	lw	gp,16(s8)
  4287e8:	00000000 	nop
    exit(status);
  4287ec:	8fc40028 	lw	a0,40(s8)
  4287f0:	8f998224 	lw	t9,-32220(gp)
  4287f4:	00000000 	nop
  4287f8:	0320f809 	jalr	t9
  4287fc:	00000000 	nop
  428800:	8fdc0010 	lw	gp,16(s8)
	...

00428810 <init_ctl_socket>:
  428810:	3c1c0fbe 	lui	gp,0xfbe
  428814:	279c4160 	addiu	gp,gp,16736
  428818:	0399e021 	addu	gp,gp,t9
  42881c:	27bdffc0 	addiu	sp,sp,-64
  428820:	afbc0018 	sw	gp,24(sp)
  428824:	afbf003c 	sw	ra,60(sp)
  428828:	afbe0038 	sw	s8,56(sp)
  42882c:	afbc0034 	sw	gp,52(sp)
  428830:	afb00030 	sw	s0,48(sp)
  428834:	03a0f021 	move	s8,sp
 */
err_t
init_ctl_socket(void)
{
    err_t failed = NULL;
  428838:	afc00020 	sw	zero,32(s8)

    delete_ctl_socket();	/* preventative medicine */
  42883c:	8f9980d0 	lw	t9,-32560(gp)
  428840:	00000000 	nop
  428844:	0320f809 	jalr	t9
  428848:	00000000 	nop
  42884c:	8fdc0018 	lw	gp,24(s8)
  428850:	00000000 	nop
    ctl_fd = socket(AF_UNIX, SOCK_STREAM, 0);
  428854:	24040001 	li	a0,1
  428858:	24050002 	li	a1,2
  42885c:	00003021 	move	a2,zero
  428860:	8f998930 	lw	t9,-30416(gp)
  428864:	00000000 	nop
  428868:	0320f809 	jalr	t9
  42886c:	00000000 	nop
  428870:	8fdc0018 	lw	gp,24(s8)
  428874:	00000000 	nop
  428878:	8f818288 	lw	at,-32120(gp)
  42887c:	00000000 	nop
  428880:	ac220000 	sw	v0,0(at)
    if (ctl_fd == -1)
  428884:	8f838288 	lw	v1,-32120(gp)
  428888:	00000000 	nop
  42888c:	8c630000 	lw	v1,0(v1)
  428890:	2402ffff 	li	v0,-1
  428894:	14620008 	bne	v1,v0,4288b8 <init_ctl_socket+0xa8>
  428898:	00000000 	nop
	failed = "create";
  42889c:	8f82802c 	lw	v0,-32724(gp)
  4288a0:	00000000 	nop
  4288a4:	2442b414 	addiu	v0,v0,-19436
  4288a8:	00000000 	nop
  4288ac:	afc20020 	sw	v0,32(s8)
  4288b0:	10000056 	b	428a0c <init_ctl_socket+0x1fc>
  4288b4:	00000000 	nop
    else if (fcntl(ctl_fd, F_SETFD, FD_CLOEXEC) == -1)
  4288b8:	8f848288 	lw	a0,-32120(gp)
  4288bc:	00000000 	nop
  4288c0:	8c840000 	lw	a0,0(a0)
  4288c4:	24050002 	li	a1,2
  4288c8:	24060001 	li	a2,1
  4288cc:	8f9980e8 	lw	t9,-32536(gp)
  4288d0:	00000000 	nop
  4288d4:	0320f809 	jalr	t9
  4288d8:	00000000 	nop
  4288dc:	8fdc0018 	lw	gp,24(s8)
  4288e0:	00401821 	move	v1,v0
  4288e4:	2402ffff 	li	v0,-1
  4288e8:	14620008 	bne	v1,v0,42890c <init_ctl_socket+0xfc>
  4288ec:	00000000 	nop
	failed = "fcntl FD+CLOEXEC";
  4288f0:	8f82802c 	lw	v0,-32724(gp)
  4288f4:	00000000 	nop
  4288f8:	2442b41c 	addiu	v0,v0,-19428
  4288fc:	00000000 	nop
  428900:	afc20020 	sw	v0,32(s8)
  428904:	10000041 	b	428a0c <init_ctl_socket+0x1fc>
  428908:	00000000 	nop
    else if (setsockopt(ctl_fd, SOL_SOCKET, SO_REUSEADDR, (const void *)&on, sizeof(on)) < 0)
  42890c:	24020004 	li	v0,4
  428910:	afa20010 	sw	v0,16(sp)
  428914:	8f848288 	lw	a0,-32120(gp)
  428918:	00000000 	nop
  42891c:	8c840000 	lw	a0,0(a0)
  428920:	3405ffff 	li	a1,0xffff
  428924:	24060004 	li	a2,4
  428928:	8f87802c 	lw	a3,-32724(gp)
  42892c:	00000000 	nop
  428930:	24e7b410 	addiu	a3,a3,-19440
  428934:	8f99871c 	lw	t9,-30948(gp)
  428938:	00000000 	nop
  42893c:	0320f809 	jalr	t9
  428940:	00000000 	nop
  428944:	8fdc0018 	lw	gp,24(s8)
  428948:	04410008 	bgez	v0,42896c <init_ctl_socket+0x15c>
  42894c:	00000000 	nop
	failed = "setsockopt";
  428950:	8f82802c 	lw	v0,-32724(gp)
  428954:	00000000 	nop
  428958:	2442b430 	addiu	v0,v0,-19408
  42895c:	00000000 	nop
  428960:	afc20020 	sw	v0,32(s8)
  428964:	10000029 	b	428a0c <init_ctl_socket+0x1fc>
  428968:	00000000 	nop
    else
    {
	/* to keep control socket secure, use umask */
	mode_t ou = umask(~S_IRWXU);
  42896c:	2404fe3f 	li	a0,-449
  428970:	8f9986c0 	lw	t9,-31040(gp)
  428974:	00000000 	nop
  428978:	0320f809 	jalr	t9
  42897c:	00000000 	nop
  428980:	8fdc0018 	lw	gp,24(s8)
  428984:	afc20024 	sw	v0,36(s8)

	if (bind(ctl_fd, (struct sockaddr *)&ctl_addr
	, offsetof(struct sockaddr_un, sun_path) + strlen(ctl_addr.sun_path)) < 0)
  428988:	8f8487c0 	lw	a0,-30784(gp)
  42898c:	00000000 	nop
  428990:	24840002 	addiu	a0,a0,2
  428994:	8f998188 	lw	t9,-32376(gp)
  428998:	00000000 	nop
  42899c:	0320f809 	jalr	t9
  4289a0:	00000000 	nop
  4289a4:	8fdc0018 	lw	gp,24(s8)
  4289a8:	24420002 	addiu	v0,v0,2
  4289ac:	8f848288 	lw	a0,-32120(gp)
  4289b0:	00000000 	nop
  4289b4:	8c840000 	lw	a0,0(a0)
  4289b8:	8f8587c0 	lw	a1,-30784(gp)
  4289bc:	00403021 	move	a2,v0
  4289c0:	8f998770 	lw	t9,-30864(gp)
  4289c4:	00000000 	nop
  4289c8:	0320f809 	jalr	t9
  4289cc:	00000000 	nop
  4289d0:	8fdc0018 	lw	gp,24(s8)
  4289d4:	04410006 	bgez	v0,4289f0 <init_ctl_socket+0x1e0>
  4289d8:	00000000 	nop
	    failed = "bind";
  4289dc:	8f82802c 	lw	v0,-32724(gp)
  4289e0:	00000000 	nop
  4289e4:	2442b43c 	addiu	v0,v0,-19396
  4289e8:	00000000 	nop
  4289ec:	afc20020 	sw	v0,32(s8)
	umask(ou);
  4289f0:	8fc40024 	lw	a0,36(s8)
  4289f4:	8f9986c0 	lw	t9,-31040(gp)
  4289f8:	00000000 	nop
  4289fc:	0320f809 	jalr	t9
  428a00:	00000000 	nop
  428a04:	8fdc0018 	lw	gp,24(s8)
  428a08:	00000000 	nop
    }

    /* 5 is a haphazardly chosen limit for the backlog.
     * Rumour has it that this is the max on BSD systems.
     */
    if (failed == NULL && listen(ctl_fd, 5) < 0)
  428a0c:	8fc20020 	lw	v0,32(s8)
  428a10:	00000000 	nop
  428a14:	14400011 	bnez	v0,428a5c <init_ctl_socket+0x24c>
  428a18:	00000000 	nop
  428a1c:	8f848288 	lw	a0,-32120(gp)
  428a20:	00000000 	nop
  428a24:	8c840000 	lw	a0,0(a0)
  428a28:	24050005 	li	a1,5
  428a2c:	8f9985c4 	lw	t9,-31292(gp)
  428a30:	00000000 	nop
  428a34:	0320f809 	jalr	t9
  428a38:	00000000 	nop
  428a3c:	8fdc0018 	lw	gp,24(s8)
  428a40:	04410006 	bgez	v0,428a5c <init_ctl_socket+0x24c>
  428a44:	00000000 	nop
	failed = "listen() on";
  428a48:	8f82802c 	lw	v0,-32724(gp)
  428a4c:	00000000 	nop
  428a50:	2442b444 	addiu	v0,v0,-19388
  428a54:	00000000 	nop
  428a58:	afc20020 	sw	v0,32(s8)

    return failed == NULL? NULL : builddiag("could not %s control socket: %d %s"
  428a5c:	8fc20020 	lw	v0,32(s8)
  428a60:	00000000 	nop
  428a64:	10400021 	beqz	v0,428aec <init_ctl_socket+0x2dc>
  428a68:	00000000 	nop
  428a6c:	8f998234 	lw	t9,-32204(gp)
  428a70:	00000000 	nop
  428a74:	0320f809 	jalr	t9
  428a78:	00000000 	nop
  428a7c:	8fdc0018 	lw	gp,24(s8)
  428a80:	00408021 	move	s0,v0
  428a84:	8f998234 	lw	t9,-32204(gp)
  428a88:	00000000 	nop
  428a8c:	0320f809 	jalr	t9
  428a90:	00000000 	nop
  428a94:	8fdc0018 	lw	gp,24(s8)
  428a98:	8c440000 	lw	a0,0(v0)
  428a9c:	8f998b8c 	lw	t9,-29812(gp)
  428aa0:	00000000 	nop
  428aa4:	0320f809 	jalr	t9
  428aa8:	00000000 	nop
  428aac:	8fdc0018 	lw	gp,24(s8)
  428ab0:	00000000 	nop
  428ab4:	8f84802c 	lw	a0,-32724(gp)
  428ab8:	00000000 	nop
  428abc:	2484b450 	addiu	a0,a0,-19376
  428ac0:	8fc50020 	lw	a1,32(s8)
  428ac4:	8e060000 	lw	a2,0(s0)
  428ac8:	00403821 	move	a3,v0
  428acc:	8f9986dc 	lw	t9,-31012(gp)
  428ad0:	00000000 	nop
  428ad4:	0320f809 	jalr	t9
  428ad8:	00000000 	nop
  428adc:	8fdc0018 	lw	gp,24(s8)
  428ae0:	afc20028 	sw	v0,40(s8)
  428ae4:	10000002 	b	428af0 <init_ctl_socket+0x2e0>
  428ae8:	00000000 	nop
  428aec:	afc00028 	sw	zero,40(s8)
  428af0:	8fc20028 	lw	v0,40(s8)
  428af4:	00000000 	nop
	    , failed, errno, strerror(errno));
}
  428af8:	03c0e821 	move	sp,s8
  428afc:	8fbf003c 	lw	ra,60(sp)
  428b00:	8fbe0038 	lw	s8,56(sp)
  428b04:	8fb00030 	lw	s0,48(sp)
  428b08:	27bd0040 	addiu	sp,sp,64
  428b0c:	03e00008 	jr	ra
  428b10:	00000000 	nop

00428b14 <delete_ctl_socket>:
  428b14:	3c1c0fbe 	lui	gp,0xfbe
  428b18:	279c3e5c 	addiu	gp,gp,15964
  428b1c:	0399e021 	addu	gp,gp,t9
  428b20:	27bdffd8 	addiu	sp,sp,-40
  428b24:	afbc0010 	sw	gp,16(sp)
  428b28:	afbf0020 	sw	ra,32(sp)
  428b2c:	afbe001c 	sw	s8,28(sp)
  428b30:	afbc0018 	sw	gp,24(sp)
  428b34:	03a0f021 	move	s8,sp

void
delete_ctl_socket(void)
{
    /* Is noting failure useful?  Not when used as preventative medicine. */
    unlink(ctl_addr.sun_path);
  428b38:	8f8487c0 	lw	a0,-30784(gp)
  428b3c:	00000000 	nop
  428b40:	24840002 	addiu	a0,a0,2
  428b44:	8f998618 	lw	t9,-31208(gp)
  428b48:	00000000 	nop
  428b4c:	0320f809 	jalr	t9
  428b50:	00000000 	nop
  428b54:	8fdc0010 	lw	gp,16(s8)
  428b58:	00000000 	nop
}
  428b5c:	03c0e821 	move	sp,s8
  428b60:	8fbf0020 	lw	ra,32(sp)
  428b64:	8fbe001c 	lw	s8,28(sp)
  428b68:	27bd0028 	addiu	sp,sp,40
  428b6c:	03e00008 	jr	ra
  428b70:	00000000 	nop

00428b74 <mark_ifaces_dead>:
  428b74:	3c1c0fbe 	lui	gp,0xfbe
  428b78:	279c3dfc 	addiu	gp,gp,15868
  428b7c:	0399e021 	addu	gp,gp,t9
  428b80:	27bdffe8 	addiu	sp,sp,-24
  428b84:	afbc0000 	sw	gp,0(sp)
  428b88:	afbe0014 	sw	s8,20(sp)
  428b8c:	afbc0010 	sw	gp,16(sp)
  428b90:	03a0f021 	move	s8,sp

bool listening = FALSE;	/* should we pay attention to IKE messages? */

struct iface *interfaces = NULL;	/* public interfaces */

/* Initialize the interface sockets. */

static void
mark_ifaces_dead(void)
{
    struct iface *p;

    for (p = interfaces; p != NULL; p = p->next)
  428b94:	8f828c10 	lw	v0,-29680(gp)
  428b98:	00000000 	nop
  428b9c:	8c420000 	lw	v0,0(v0)
  428ba0:	00000000 	nop
  428ba4:	afc20008 	sw	v0,8(s8)
  428ba8:	8fc20008 	lw	v0,8(s8)
  428bac:	00000000 	nop
  428bb0:	14400003 	bnez	v0,428bc0 <mark_ifaces_dead+0x4c>
  428bb4:	00000000 	nop
  428bb8:	1000000c 	b	428bec <mark_ifaces_dead+0x78>
  428bbc:	00000000 	nop
	p->change = IFN_DELETE;
  428bc0:	24030002 	li	v1,2
  428bc4:	8fc20008 	lw	v0,8(s8)
  428bc8:	00000000 	nop
  428bcc:	ac430030 	sw	v1,48(v0)
  428bd0:	8fc20008 	lw	v0,8(s8)
  428bd4:	00000000 	nop
  428bd8:	8c420028 	lw	v0,40(v0)
  428bdc:	00000000 	nop
  428be0:	afc20008 	sw	v0,8(s8)
  428be4:	1000fff0 	b	428ba8 <mark_ifaces_dead+0x34>
  428be8:	00000000 	nop
}
  428bec:	03c0e821 	move	sp,s8
  428bf0:	8fbe0014 	lw	s8,20(sp)
  428bf4:	27bd0018 	addiu	sp,sp,24
  428bf8:	03e00008 	jr	ra
  428bfc:	00000000 	nop

00428c00 <free_dead_ifaces>:
  428c00:	3c1c0fbe 	lui	gp,0xfbe
  428c04:	279c3d70 	addiu	gp,gp,15728
  428c08:	0399e021 	addu	gp,gp,t9
  428c0c:	27bdffc8 	addiu	sp,sp,-56
  428c10:	afbc0010 	sw	gp,16(sp)
  428c14:	afbf0030 	sw	ra,48(sp)
  428c18:	afbe002c 	sw	s8,44(sp)
  428c1c:	afbc0028 	sw	gp,40(sp)
  428c20:	03a0f021 	move	s8,sp

static void
free_dead_ifaces(void)
{
    struct iface *p;
    bool some_dead = FALSE
  428c24:	afc0001c 	sw	zero,28(s8)
	, some_new = FALSE;
  428c28:	afc00020 	sw	zero,32(s8)

    for (p = interfaces; p != NULL; p = p->next)
  428c2c:	8f828c10 	lw	v0,-29680(gp)
  428c30:	00000000 	nop
  428c34:	8c420000 	lw	v0,0(v0)
  428c38:	00000000 	nop
  428c3c:	afc20018 	sw	v0,24(s8)
  428c40:	8fc20018 	lw	v0,24(s8)
  428c44:	00000000 	nop
  428c48:	14400003 	bnez	v0,428c58 <free_dead_ifaces+0x58>
  428c4c:	00000000 	nop
  428c50:	10000034 	b	428d24 <free_dead_ifaces+0x124>
  428c54:	00000000 	nop
    {
	if (p->change == IFN_DELETE)
  428c58:	8fc20018 	lw	v0,24(s8)
  428c5c:	00000000 	nop
  428c60:	8c430030 	lw	v1,48(v0)
  428c64:	24020002 	li	v0,2
  428c68:	1462001f 	bne	v1,v0,428ce8 <free_dead_ifaces+0xe8>
  428c6c:	00000000 	nop
	{
	    plog("shutting down interface %s/%s %s"
  428c70:	8fc20018 	lw	v0,24(s8)
  428c74:	00000000 	nop
  428c78:	24420008 	addiu	v0,v0,8
  428c7c:	00402021 	move	a0,v0
  428c80:	8f998100 	lw	t9,-32512(gp)
  428c84:	00000000 	nop
  428c88:	0320f809 	jalr	t9
  428c8c:	00000000 	nop
  428c90:	8fdc0010 	lw	gp,16(s8)
  428c94:	00401821 	move	v1,v0
  428c98:	8f84802c 	lw	a0,-32724(gp)
  428c9c:	00000000 	nop
  428ca0:	2484b474 	addiu	a0,a0,-19340
  428ca4:	8fc20018 	lw	v0,24(s8)
  428ca8:	00000000 	nop
  428cac:	8c450000 	lw	a1,0(v0)
  428cb0:	8fc20018 	lw	v0,24(s8)
  428cb4:	00000000 	nop
  428cb8:	8c460004 	lw	a2,4(v0)
  428cbc:	00603821 	move	a3,v1
  428cc0:	8f998abc 	lw	t9,-30020(gp)
  428cc4:	00000000 	nop
  428cc8:	0320f809 	jalr	t9
  428ccc:	00000000 	nop
  428cd0:	8fdc0010 	lw	gp,16(s8)
  428cd4:	00000000 	nop
		, p->vname, p->rname, ip_str(&p->addr));
	    some_dead = TRUE;
  428cd8:	24020001 	li	v0,1
  428cdc:	afc2001c 	sw	v0,28(s8)
  428ce0:	10000009 	b	428d08 <free_dead_ifaces+0x108>
  428ce4:	00000000 	nop
	}
	else if (p->change == IFN_ADD)
  428ce8:	8fc20018 	lw	v0,24(s8)
  428cec:	00000000 	nop
  428cf0:	8c420030 	lw	v0,48(v0)
  428cf4:	00000000 	nop
  428cf8:	14400003 	bnez	v0,428d08 <free_dead_ifaces+0x108>
  428cfc:	00000000 	nop
	{
	    some_new = TRUE;
  428d00:	24020001 	li	v0,1
  428d04:	afc20020 	sw	v0,32(s8)
  428d08:	8fc20018 	lw	v0,24(s8)
  428d0c:	00000000 	nop
  428d10:	8c420028 	lw	v0,40(v0)
  428d14:	00000000 	nop
  428d18:	afc20018 	sw	v0,24(s8)
  428d1c:	1000ffc8 	b	428c40 <free_dead_ifaces+0x40>
  428d20:	00000000 	nop
	}
    }

    if (some_dead)
  428d24:	8fc2001c 	lw	v0,28(s8)
  428d28:	00000000 	nop
  428d2c:	10400048 	beqz	v0,428e50 <free_dead_ifaces+0x250>
  428d30:	00000000 	nop
    {
	struct iface **pp;

	release_dead_interfaces();
  428d34:	8f998a80 	lw	t9,-30080(gp)
  428d38:	00000000 	nop
  428d3c:	0320f809 	jalr	t9
  428d40:	00000000 	nop
  428d44:	8fdc0010 	lw	gp,16(s8)
  428d48:	00000000 	nop
	for (pp = &interfaces; (p = *pp) != NULL; )
  428d4c:	8f828c10 	lw	v0,-29680(gp)
  428d50:	00000000 	nop
  428d54:	afc20024 	sw	v0,36(s8)
  428d58:	8fc20024 	lw	v0,36(s8)
  428d5c:	00000000 	nop
  428d60:	8c420000 	lw	v0,0(v0)
  428d64:	00000000 	nop
  428d68:	afc20018 	sw	v0,24(s8)
  428d6c:	14400003 	bnez	v0,428d7c <free_dead_ifaces+0x17c>
  428d70:	00000000 	nop
  428d74:	10000036 	b	428e50 <free_dead_ifaces+0x250>
  428d78:	00000000 	nop
	{
	    if (p->change == IFN_DELETE)
  428d7c:	8fc20018 	lw	v0,24(s8)
  428d80:	00000000 	nop
  428d84:	8c430030 	lw	v1,48(v0)
  428d88:	24020002 	li	v0,2
  428d8c:	1462002a 	bne	v1,v0,428e38 <free_dead_ifaces+0x238>
  428d90:	00000000 	nop
	    {
		*pp = p->next;	/* advance *pp */
  428d94:	8fc20018 	lw	v0,24(s8)
  428d98:	00000000 	nop
  428d9c:	8c430028 	lw	v1,40(v0)
  428da0:	8fc20024 	lw	v0,36(s8)
  428da4:	00000000 	nop
  428da8:	ac430000 	sw	v1,0(v0)
		pfree(p->vname);
  428dac:	8fc20018 	lw	v0,24(s8)
  428db0:	00000000 	nop
  428db4:	8c440000 	lw	a0,0(v0)
  428db8:	8f998094 	lw	t9,-32620(gp)
  428dbc:	00000000 	nop
  428dc0:	0320f809 	jalr	t9
  428dc4:	00000000 	nop
  428dc8:	8fdc0010 	lw	gp,16(s8)
  428dcc:	00000000 	nop
		pfree(p->rname);
  428dd0:	8fc20018 	lw	v0,24(s8)
  428dd4:	00000000 	nop
  428dd8:	8c440004 	lw	a0,4(v0)
  428ddc:	8f998094 	lw	t9,-32620(gp)
  428de0:	00000000 	nop
  428de4:	0320f809 	jalr	t9
  428de8:	00000000 	nop
  428dec:	8fdc0010 	lw	gp,16(s8)
  428df0:	00000000 	nop
		close(p->fd);
  428df4:	8fc20018 	lw	v0,24(s8)
  428df8:	00000000 	nop
  428dfc:	8c440024 	lw	a0,36(v0)
  428e00:	8f9980c8 	lw	t9,-32568(gp)
  428e04:	00000000 	nop
  428e08:	0320f809 	jalr	t9
  428e0c:	00000000 	nop
  428e10:	8fdc0010 	lw	gp,16(s8)
  428e14:	00000000 	nop
		pfree(p);
  428e18:	8fc40018 	lw	a0,24(s8)
  428e1c:	8f998094 	lw	t9,-32620(gp)
  428e20:	00000000 	nop
  428e24:	0320f809 	jalr	t9
  428e28:	00000000 	nop
  428e2c:	8fdc0010 	lw	gp,16(s8)
  428e30:	1000ffc9 	b	428d58 <free_dead_ifaces+0x158>
  428e34:	00000000 	nop
	    }
	    else
	    {
		pp = &p->next;	/* advance pp */
  428e38:	8fc20018 	lw	v0,24(s8)
  428e3c:	00000000 	nop
  428e40:	24420028 	addiu	v0,v0,40
  428e44:	afc20024 	sw	v0,36(s8)
  428e48:	1000ffc3 	b	428d58 <free_dead_ifaces+0x158>
  428e4c:	00000000 	nop
	    }
	}
    }

    /* this must be done after the release_dead_interfaces
     * in case some to the newly unoriented connections can
     * become oriented here.
     */
    if (some_dead || some_new)
  428e50:	8fc2001c 	lw	v0,28(s8)
  428e54:	00000000 	nop
  428e58:	14400007 	bnez	v0,428e78 <free_dead_ifaces+0x278>
  428e5c:	00000000 	nop
  428e60:	8fc20020 	lw	v0,32(s8)
  428e64:	00000000 	nop
  428e68:	14400003 	bnez	v0,428e78 <free_dead_ifaces+0x278>
  428e6c:	00000000 	nop
  428e70:	10000007 	b	428e90 <free_dead_ifaces+0x290>
  428e74:	00000000 	nop
	check_orientations();
  428e78:	8f99820c 	lw	t9,-32244(gp)
  428e7c:	00000000 	nop
  428e80:	0320f809 	jalr	t9
  428e84:	00000000 	nop
  428e88:	8fdc0010 	lw	gp,16(s8)
  428e8c:	00000000 	nop
}
  428e90:	03c0e821 	move	sp,s8
  428e94:	8fbf0030 	lw	ra,48(sp)
  428e98:	8fbe002c 	lw	s8,44(sp)
  428e9c:	27bd0038 	addiu	sp,sp,56
  428ea0:	03e00008 	jr	ra
  428ea4:	00000000 	nop

00428ea8 <free_ifaces>:
  428ea8:	3c1c0fbe 	lui	gp,0xfbe
  428eac:	279c3ac8 	addiu	gp,gp,15048
  428eb0:	0399e021 	addu	gp,gp,t9
  428eb4:	27bdffd8 	addiu	sp,sp,-40
  428eb8:	afbc0010 	sw	gp,16(sp)
  428ebc:	afbf0020 	sw	ra,32(sp)
  428ec0:	afbe001c 	sw	s8,28(sp)
  428ec4:	afbc0018 	sw	gp,24(sp)
  428ec8:	03a0f021 	move	s8,sp

void
free_ifaces(void)
{
    mark_ifaces_dead();
  428ecc:	8f998030 	lw	t9,-32720(gp)
  428ed0:	00000000 	nop
  428ed4:	27398b74 	addiu	t9,t9,-29836
  428ed8:	00000000 	nop
  428edc:	0320f809 	jalr	t9
  428ee0:	00000000 	nop
  428ee4:	8fdc0010 	lw	gp,16(s8)
  428ee8:	00000000 	nop
    free_dead_ifaces();
  428eec:	8f998030 	lw	t9,-32720(gp)
  428ef0:	00000000 	nop
  428ef4:	27398c00 	addiu	t9,t9,-29696
  428ef8:	00000000 	nop
  428efc:	0320f809 	jalr	t9
  428f00:	00000000 	nop
  428f04:	8fdc0010 	lw	gp,16(s8)
  428f08:	00000000 	nop
}
  428f0c:	03c0e821 	move	sp,s8
  428f10:	8fbf0020 	lw	ra,32(sp)
  428f14:	8fbe001c 	lw	s8,28(sp)
  428f18:	27bd0028 	addiu	sp,sp,40
  428f1c:	03e00008 	jr	ra
  428f20:	00000000 	nop

00428f24 <use_interface>:
  428f24:	3c1c0fbe 	lui	gp,0xfbe
  428f28:	279c3a4c 	addiu	gp,gp,14924
  428f2c:	0399e021 	addu	gp,gp,t9
  428f30:	27bdfff0 	addiu	sp,sp,-16
  428f34:	afbc0000 	sw	gp,0(sp)
  428f38:	afbe000c 	sw	s8,12(sp)
  428f3c:	afbc0008 	sw	gp,8(sp)
  428f40:	03a0f021 	move	s8,sp
  428f44:	afc40010 	sw	a0,16(s8)

struct raw_iface {
    ip_address addr;
    char name[IFNAMSIZ + 20];	/* what would be a safe size? */
    struct raw_iface *next;
};

/* Called to handle --interface <ifname>
 * Semantics: if specified, only these (real) interfaces are considered.
 */
static const char *pluto_ifn[10];
static int pluto_ifn_roof = 0;

bool
use_interface(const char *rifn)
{
    if (pluto_ifn_roof >= (int)elemsof(pluto_ifn))
  428f48:	8f828018 	lw	v0,-32744(gp)
  428f4c:	00000000 	nop
  428f50:	2442189c 	addiu	v0,v0,6300
  428f54:	8c420000 	lw	v0,0(v0)
  428f58:	00000000 	nop
  428f5c:	2842000a 	slti	v0,v0,10
  428f60:	14400004 	bnez	v0,428f74 <use_interface+0x50>
  428f64:	00000000 	nop
    {
	return FALSE;
  428f68:	00001021 	move	v0,zero
  428f6c:	10000013 	b	428fbc <use_interface+0x98>
  428f70:	00000000 	nop
    }
    else
    {
	pluto_ifn[pluto_ifn_roof++] = rifn;
  428f74:	8f858018 	lw	a1,-32744(gp)
  428f78:	00000000 	nop
  428f7c:	24a5189c 	addiu	a1,a1,6300
  428f80:	00000000 	nop
  428f84:	8ca30000 	lw	v1,0(a1)
  428f88:	00000000 	nop
  428f8c:	00601021 	move	v0,v1
  428f90:	00021080 	sll	v0,v0,0x2
  428f94:	8f848018 	lw	a0,-32744(gp)
  428f98:	00000000 	nop
  428f9c:	24846a20 	addiu	a0,a0,27168
  428fa0:	00822021 	addu	a0,a0,v0
  428fa4:	8fc20010 	lw	v0,16(s8)
  428fa8:	00000000 	nop
  428fac:	ac820000 	sw	v0,0(a0)
  428fb0:	24630001 	addiu	v1,v1,1
  428fb4:	aca30000 	sw	v1,0(a1)
	return TRUE;
  428fb8:	24020001 	li	v0,1
    }
}
  428fbc:	03c0e821 	move	sp,s8
  428fc0:	8fbe000c 	lw	s8,12(sp)
  428fc4:	27bd0010 	addiu	sp,sp,16
  428fc8:	03e00008 	jr	ra
  428fcc:	00000000 	nop

00428fd0 <find_raw_ifaces4>:
  428fd0:	3c1c0fbe 	lui	gp,0xfbe
  428fd4:	279c39a0 	addiu	gp,gp,14752
  428fd8:	0399e021 	addu	gp,gp,t9
  428fdc:	27bdd9a0 	addiu	sp,sp,-9824
  428fe0:	afbc0018 	sw	gp,24(sp)
  428fe4:	afbf265c 	sw	ra,9820(sp)
  428fe8:	afbe2658 	sw	s8,9816(sp)
  428fec:	afbc2654 	sw	gp,9812(sp)
  428ff0:	afb02650 	sw	s0,9808(sp)
  428ff4:	03a0f021 	move	s8,sp

#ifndef IPSECDEVPREFIX
# define IPSECDEVPREFIX "ipsec"
#endif

static struct raw_iface *
find_raw_ifaces4(void)
{
    int j;	/* index into buf */
    struct ifconf ifconf;
    struct ifreq buf[300];	/* for list of interfaces -- arbitrary limit */
    struct raw_iface *rifaces = NULL;
  428ff8:	afc025b0 	sw	zero,9648(s8)
    int master_sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);    /* Get a UDP socket */
  428ffc:	24040002 	li	a0,2
  429000:	24050001 	li	a1,1
  429004:	24060011 	li	a2,17
  429008:	8f998930 	lw	t9,-30416(gp)
  42900c:	00000000 	nop
  429010:	0320f809 	jalr	t9
  429014:	00000000 	nop
  429018:	8fdc0018 	lw	gp,24(s8)
  42901c:	afc225b4 	sw	v0,9652(s8)

    /* get list of interfaces with assigned IPv4 addresses from system */

    if (master_sock == -1)
  429020:	8fc325b4 	lw	v1,9652(s8)
  429024:	2402ffff 	li	v0,-1
  429028:	14620013 	bne	v1,v0,429078 <find_raw_ifaces4+0xa8>
  42902c:	00000000 	nop
	exit_log_errno((e, "socket() failed in find_raw_ifaces4()"));
  429030:	8f998234 	lw	t9,-32204(gp)
  429034:	00000000 	nop
  429038:	0320f809 	jalr	t9
  42903c:	00000000 	nop
  429040:	8fdc0018 	lw	gp,24(s8)
  429044:	8c420000 	lw	v0,0(v0)
  429048:	00000000 	nop
  42904c:	afc225b8 	sw	v0,9656(s8)
  429050:	8fc425b8 	lw	a0,9656(s8)
  429054:	8f85802c 	lw	a1,-32724(gp)
  429058:	00000000 	nop
  42905c:	24a5b498 	addiu	a1,a1,-19304
  429060:	8f998154 	lw	t9,-32428(gp)
  429064:	00000000 	nop
  429068:	0320f809 	jalr	t9
  42906c:	00000000 	nop
  429070:	8fdc0018 	lw	gp,24(s8)
  429074:	00000000 	nop

    if (setsockopt(master_sock, SOL_SOCKET, SO_REUSEADDR
    , (const void *)&on, sizeof(on)) < 0)
  429078:	24020004 	li	v0,4
  42907c:	afa20010 	sw	v0,16(sp)
  429080:	8fc425b4 	lw	a0,9652(s8)
  429084:	3405ffff 	li	a1,0xffff
  429088:	24060004 	li	a2,4
  42908c:	8f87802c 	lw	a3,-32724(gp)
  429090:	00000000 	nop
  429094:	24e7b410 	addiu	a3,a3,-19440
  429098:	8f99871c 	lw	t9,-30948(gp)
  42909c:	00000000 	nop
  4290a0:	0320f809 	jalr	t9
  4290a4:	00000000 	nop
  4290a8:	8fdc0018 	lw	gp,24(s8)
  4290ac:	04410013 	bgez	v0,4290fc <find_raw_ifaces4+0x12c>
  4290b0:	00000000 	nop
	exit_log_errno((e, "setsockopt() in find_raw_ifaces4()"));
  4290b4:	8f998234 	lw	t9,-32204(gp)
  4290b8:	00000000 	nop
  4290bc:	0320f809 	jalr	t9
  4290c0:	00000000 	nop
  4290c4:	8fdc0018 	lw	gp,24(s8)
  4290c8:	8c420000 	lw	v0,0(v0)
  4290cc:	00000000 	nop
  4290d0:	afc225b8 	sw	v0,9656(s8)
  4290d4:	8fc425b8 	lw	a0,9656(s8)
  4290d8:	8f85802c 	lw	a1,-32724(gp)
  4290dc:	00000000 	nop
  4290e0:	24a5b4c0 	addiu	a1,a1,-19264
  4290e4:	8f998154 	lw	t9,-32428(gp)
  4290e8:	00000000 	nop
  4290ec:	0320f809 	jalr	t9
  4290f0:	00000000 	nop
  4290f4:	8fdc0018 	lw	gp,24(s8)
  4290f8:	00000000 	nop

    /* bind the socket */
    {
	ip_address any;

	happy(anyaddr(AF_INET, &any));
  4290fc:	24040002 	li	a0,2
  429100:	27c525c0 	addiu	a1,s8,9664
  429104:	8f998814 	lw	t9,-30700(gp)
  429108:	00000000 	nop
  42910c:	0320f809 	jalr	t9
  429110:	00000000 	nop
  429114:	8fdc0018 	lw	gp,24(s8)
  429118:	afc225b8 	sw	v0,9656(s8)
  42911c:	8fc225b8 	lw	v0,9656(s8)
  429120:	00000000 	nop
  429124:	1040000c 	beqz	v0,429158 <find_raw_ifaces4+0x188>
  429128:	00000000 	nop
  42912c:	8fc425b8 	lw	a0,9656(s8)
  429130:	8f85802c 	lw	a1,-32724(gp)
  429134:	00000000 	nop
  429138:	24a5b4e4 	addiu	a1,a1,-19228
  42913c:	240600fb 	li	a2,251
  429140:	8f998bb8 	lw	t9,-29768(gp)
  429144:	00000000 	nop
  429148:	0320f809 	jalr	t9
  42914c:	00000000 	nop
  429150:	8fdc0018 	lw	gp,24(s8)
  429154:	00000000 	nop
	setportof(htons(pluto_port), &any);
  429158:	8f8284b0 	lw	v0,-31568(gp)
  42915c:	00000000 	nop
  429160:	94420000 	lhu	v0,0(v0)
  429164:	00000000 	nop
  429168:	00402021 	move	a0,v0
  42916c:	27c525c0 	addiu	a1,s8,9664
  429170:	8f9988e0 	lw	t9,-30496(gp)
  429174:	00000000 	nop
  429178:	0320f809 	jalr	t9
  42917c:	00000000 	nop
  429180:	8fdc0018 	lw	gp,24(s8)
  429184:	00000000 	nop
	if (bind(master_sock, sockaddrof(&any), sockaddrlenof(&any)) < 0)
  429188:	27c425c0 	addiu	a0,s8,9664
  42918c:	8f9982d4 	lw	t9,-32044(gp)
  429190:	00000000 	nop
  429194:	0320f809 	jalr	t9
  429198:	00000000 	nop
  42919c:	8fdc0018 	lw	gp,24(s8)
  4291a0:	00408021 	move	s0,v0
  4291a4:	27c425c0 	addiu	a0,s8,9664
  4291a8:	8f9981e8 	lw	t9,-32280(gp)
  4291ac:	00000000 	nop
  4291b0:	0320f809 	jalr	t9
  4291b4:	00000000 	nop
  4291b8:	8fdc0018 	lw	gp,24(s8)
  4291bc:	8fc425b4 	lw	a0,9652(s8)
  4291c0:	02002821 	move	a1,s0
  4291c4:	00403021 	move	a2,v0
  4291c8:	8f998770 	lw	t9,-30864(gp)
  4291cc:	00000000 	nop
  4291d0:	0320f809 	jalr	t9
  4291d4:	00000000 	nop
  4291d8:	8fdc0018 	lw	gp,24(s8)
  4291dc:	04410013 	bgez	v0,42922c <find_raw_ifaces4+0x25c>
  4291e0:	00000000 	nop
	    exit_log_errno((e, "bind() failed in find_raw_ifaces4()"));
  4291e4:	8f998234 	lw	t9,-32204(gp)
  4291e8:	00000000 	nop
  4291ec:	0320f809 	jalr	t9
  4291f0:	00000000 	nop
  4291f4:	8fdc0018 	lw	gp,24(s8)
  4291f8:	8c420000 	lw	v0,0(v0)
  4291fc:	00000000 	nop
  429200:	afc225b8 	sw	v0,9656(s8)
  429204:	8fc425b8 	lw	a0,9656(s8)
  429208:	8f85802c 	lw	a1,-32724(gp)
  42920c:	00000000 	nop
  429210:	24a5b4f0 	addiu	a1,a1,-19216
  429214:	8f998154 	lw	t9,-32428(gp)
  429218:	00000000 	nop
  42921c:	0320f809 	jalr	t9
  429220:	00000000 	nop
  429224:	8fdc0018 	lw	gp,24(s8)
  429228:	00000000 	nop
    }

    /* Get local interfaces.  See netdevice(7). */
    ifconf.ifc_len = sizeof(buf);
  42922c:	24022580 	li	v0,9600
  429230:	afc20028 	sw	v0,40(s8)
    ifconf.ifc_buf = (void *) buf;
  429234:	27c20030 	addiu	v0,s8,48
  429238:	afc2002c 	sw	v0,44(s8)
    zero(buf);
  42923c:	27c40030 	addiu	a0,s8,48
  429240:	00002821 	move	a1,zero
  429244:	24060020 	li	a2,32
  429248:	8f998500 	lw	t9,-31488(gp)
  42924c:	00000000 	nop
  429250:	0320f809 	jalr	t9
  429254:	00000000 	nop
  429258:	8fdc0018 	lw	gp,24(s8)
  42925c:	00000000 	nop

    if (ioctl(master_sock, SIOCGIFCONF, &ifconf) == -1)
  429260:	8fc425b4 	lw	a0,9652(s8)
  429264:	34058912 	li	a1,0x8912
  429268:	27c60028 	addiu	a2,s8,40
  42926c:	8f998c20 	lw	t9,-29664(gp)
  429270:	00000000 	nop
  429274:	0320f809 	jalr	t9
  429278:	00000000 	nop
  42927c:	8fdc0018 	lw	gp,24(s8)
  429280:	00401821 	move	v1,v0
  429284:	2402ffff 	li	v0,-1
  429288:	14620013 	bne	v1,v0,4292d8 <find_raw_ifaces4+0x308>
  42928c:	00000000 	nop
	exit_log_errno((e, "ioctl(SIOCGIFCONF) in find_raw_ifaces4()"));
  429290:	8f998234 	lw	t9,-32204(gp)
  429294:	00000000 	nop
  429298:	0320f809 	jalr	t9
  42929c:	00000000 	nop
  4292a0:	8fdc0018 	lw	gp,24(s8)
  4292a4:	8c420000 	lw	v0,0(v0)
  4292a8:	00000000 	nop
  4292ac:	afc225b8 	sw	v0,9656(s8)
  4292b0:	8fc425b8 	lw	a0,9656(s8)
  4292b4:	8f85802c 	lw	a1,-32724(gp)
  4292b8:	00000000 	nop
  4292bc:	24a5b514 	addiu	a1,a1,-19180
  4292c0:	8f998154 	lw	t9,-32428(gp)
  4292c4:	00000000 	nop
  4292c8:	0320f809 	jalr	t9
  4292cc:	00000000 	nop
  4292d0:	8fdc0018 	lw	gp,24(s8)
  4292d4:	00000000 	nop

    /* Add an entry to rifaces for each interesting interface. */
    for (j = 0; (j+1) * sizeof(*buf) <= (size_t)ifconf.ifc_len; j++)
  4292d8:	afc00020 	sw	zero,32(s8)
  4292dc:	8fc20020 	lw	v0,32(s8)
  4292e0:	00000000 	nop
  4292e4:	00021140 	sll	v0,v0,0x5
  4292e8:	24430020 	addiu	v1,v0,32
  4292ec:	8fc20028 	lw	v0,40(s8)
  4292f0:	00000000 	nop
  4292f4:	0043102b 	sltu	v0,v0,v1
  4292f8:	10400003 	beqz	v0,429308 <find_raw_ifaces4+0x338>
  4292fc:	00000000 	nop
  429300:	100000e9 	b	4296a8 <find_raw_ifaces4+0x6d8>
  429304:	00000000 	nop
    {
	struct raw_iface ri;
	const struct sockaddr_in *rs = (struct sockaddr_in *) &buf[j].ifr_addr;
  429308:	8fc20020 	lw	v0,32(s8)
  42930c:	00000000 	nop
  429310:	00021940 	sll	v1,v0,0x5
  429314:	27c20030 	addiu	v0,s8,48
  429318:	00431021 	addu	v0,v0,v1
  42931c:	24420010 	addiu	v0,v0,16
  429320:	afc225b8 	sw	v0,9656(s8)
	struct ifreq auxinfo;

	/* ignore all but AF_INET interfaces */
	if (rs->sin_family != AF_INET)
  429324:	8fc225b8 	lw	v0,9656(s8)
  429328:	00000000 	nop
  42932c:	94430000 	lhu	v1,0(v0)
  429330:	24020002 	li	v0,2
  429334:	10620003 	beq	v1,v0,429344 <find_raw_ifaces4+0x374>
  429338:	00000000 	nop
	    continue;	/* not interesting */
  42933c:	100000d4 	b	429690 <find_raw_ifaces4+0x6c0>
  429340:	00000000 	nop

	/* build a NUL-terminated copy of the rname field */
	memcpy(ri.name, buf[j].ifr_name, IFNAMSIZ);
  429344:	27c225e0 	addiu	v0,s8,9696
  429348:	2444001c 	addiu	a0,v0,28
  42934c:	8fc20020 	lw	v0,32(s8)
  429350:	00000000 	nop
  429354:	00021940 	sll	v1,v0,0x5
  429358:	27c20030 	addiu	v0,s8,48
  42935c:	00431021 	addu	v0,v0,v1
  429360:	00402821 	move	a1,v0
  429364:	24060010 	li	a2,16
  429368:	8f998a30 	lw	t9,-30160(gp)
  42936c:	00000000 	nop
  429370:	0320f809 	jalr	t9
  429374:	00000000 	nop
  429378:	8fdc0018 	lw	gp,24(s8)
  42937c:	00000000 	nop
	ri.name[IFNAMSIZ] = '\0';
  429380:	a3c0260c 	sb	zero,9740(s8)

	/* ignore if our interface names were specified, and this isn't one */
	if (pluto_ifn_roof != 0)
  429384:	8f828018 	lw	v0,-32744(gp)
  429388:	00000000 	nop
  42938c:	2442189c 	addiu	v0,v0,6300
  429390:	8c420000 	lw	v0,0(v0)
  429394:	00000000 	nop
  429398:	10400030 	beqz	v0,42945c <find_raw_ifaces4+0x48c>
  42939c:	00000000 	nop
	{
	    int i;

	    for (i = 0; i != pluto_ifn_roof; i++)
  4293a0:	afc02648 	sw	zero,9800(s8)
  4293a4:	8fc32648 	lw	v1,9800(s8)
  4293a8:	8f828018 	lw	v0,-32744(gp)
  4293ac:	00000000 	nop
  4293b0:	2442189c 	addiu	v0,v0,6300
  4293b4:	8c420000 	lw	v0,0(v0)
  4293b8:	00000000 	nop
  4293bc:	14620003 	bne	v1,v0,4293cc <find_raw_ifaces4+0x3fc>
  4293c0:	00000000 	nop
  4293c4:	1000001b 	b	429434 <find_raw_ifaces4+0x464>
  4293c8:	00000000 	nop
		if (streq(ri.name, pluto_ifn[i]))
  4293cc:	27c225e0 	addiu	v0,s8,9696
  4293d0:	2443001c 	addiu	v1,v0,28
  4293d4:	8fc22648 	lw	v0,9800(s8)
  4293d8:	00000000 	nop
  4293dc:	00021080 	sll	v0,v0,0x2
  4293e0:	8f818018 	lw	at,-32744(gp)
  4293e4:	00000000 	nop
  4293e8:	24216a20 	addiu	at,at,27168
  4293ec:	00221021 	addu	v0,at,v0
  4293f0:	00602021 	move	a0,v1
  4293f4:	8c450000 	lw	a1,0(v0)
  4293f8:	8f998428 	lw	t9,-31704(gp)
  4293fc:	00000000 	nop
  429400:	0320f809 	jalr	t9
  429404:	00000000 	nop
  429408:	8fdc0018 	lw	gp,24(s8)
  42940c:	14400003 	bnez	v0,42941c <find_raw_ifaces4+0x44c>
  429410:	00000000 	nop
		    break;
  429414:	10000007 	b	429434 <find_raw_ifaces4+0x464>
  429418:	00000000 	nop
  42941c:	8fc22648 	lw	v0,9800(s8)
  429420:	00000000 	nop
  429424:	24420001 	addiu	v0,v0,1
  429428:	afc22648 	sw	v0,9800(s8)
  42942c:	1000ffdd 	b	4293a4 <find_raw_ifaces4+0x3d4>
  429430:	00000000 	nop
	    if (i == pluto_ifn_roof)
  429434:	8fc32648 	lw	v1,9800(s8)
  429438:	8f828018 	lw	v0,-32744(gp)
  42943c:	00000000 	nop
  429440:	2442189c 	addiu	v0,v0,6300
  429444:	8c420000 	lw	v0,0(v0)
  429448:	00000000 	nop
  42944c:	14620003 	bne	v1,v0,42945c <find_raw_ifaces4+0x48c>
  429450:	00000000 	nop
		continue;	/* not found -- skip */
  429454:	1000008e 	b	429690 <find_raw_ifaces4+0x6c0>
  429458:	00000000 	nop
	}

	/* Find out stuff about this interface.  See netdevice(7). */
	zero(&auxinfo);	/* paranoia */
  42945c:	27c42628 	addiu	a0,s8,9768
  429460:	00002821 	move	a1,zero
  429464:	24060020 	li	a2,32
  429468:	8f998500 	lw	t9,-31488(gp)
  42946c:	00000000 	nop
  429470:	0320f809 	jalr	t9
  429474:	00000000 	nop
  429478:	8fdc0018 	lw	gp,24(s8)
  42947c:	00000000 	nop
	memcpy(auxinfo.ifr_name, buf[j].ifr_name, IFNAMSIZ);
  429480:	8fc20020 	lw	v0,32(s8)
  429484:	00000000 	nop
  429488:	00021940 	sll	v1,v0,0x5
  42948c:	27c20030 	addiu	v0,s8,48
  429490:	00431021 	addu	v0,v0,v1
  429494:	27c42628 	addiu	a0,s8,9768
  429498:	00402821 	move	a1,v0
  42949c:	24060010 	li	a2,16
  4294a0:	8f998a30 	lw	t9,-30160(gp)
  4294a4:	00000000 	nop
  4294a8:	0320f809 	jalr	t9
  4294ac:	00000000 	nop
  4294b0:	8fdc0018 	lw	gp,24(s8)
  4294b4:	00000000 	nop
	if (ioctl(master_sock, SIOCGIFFLAGS, &auxinfo) == -1)
  4294b8:	8fc425b4 	lw	a0,9652(s8)
  4294bc:	34058913 	li	a1,0x8913
  4294c0:	27c62628 	addiu	a2,s8,9768
  4294c4:	8f998c20 	lw	t9,-29664(gp)
  4294c8:	00000000 	nop
  4294cc:	0320f809 	jalr	t9
  4294d0:	00000000 	nop
  4294d4:	8fdc0018 	lw	gp,24(s8)
  4294d8:	00401821 	move	v1,v0
  4294dc:	2402ffff 	li	v0,-1
  4294e0:	14620016 	bne	v1,v0,42953c <find_raw_ifaces4+0x56c>
  4294e4:	00000000 	nop
	    exit_log_errno((e
  4294e8:	8f998234 	lw	t9,-32204(gp)
  4294ec:	00000000 	nop
  4294f0:	0320f809 	jalr	t9
  4294f4:	00000000 	nop
  4294f8:	8fdc0018 	lw	gp,24(s8)
  4294fc:	8c420000 	lw	v0,0(v0)
  429500:	00000000 	nop
  429504:	afc22648 	sw	v0,9800(s8)
  429508:	27c225e0 	addiu	v0,s8,9696
  42950c:	2442001c 	addiu	v0,v0,28
  429510:	8fc42648 	lw	a0,9800(s8)
  429514:	8f85802c 	lw	a1,-32724(gp)
  429518:	00000000 	nop
  42951c:	24a5b540 	addiu	a1,a1,-19136
  429520:	00403021 	move	a2,v0
  429524:	8f998154 	lw	t9,-32428(gp)
  429528:	00000000 	nop
  42952c:	0320f809 	jalr	t9
  429530:	00000000 	nop
  429534:	8fdc0018 	lw	gp,24(s8)
  429538:	00000000 	nop
		, "ioctl(SIOCGIFFLAGS) for %s in find_raw_ifaces4()"
		, ri.name));
	if (!(auxinfo.ifr_flags & IFF_UP))
  42953c:	97c22638 	lhu	v0,9784(s8)
  429540:	00000000 	nop
  429544:	30420001 	andi	v0,v0,0x1
  429548:	00021400 	sll	v0,v0,0x10
  42954c:	00021403 	sra	v0,v0,0x10
  429550:	14400003 	bnez	v0,429560 <find_raw_ifaces4+0x590>
  429554:	00000000 	nop
	    continue;	/* ignore an interface that isn't UP */
  429558:	1000004d 	b	429690 <find_raw_ifaces4+0x6c0>
  42955c:	00000000 	nop

	/* ignore unconfigured interfaces */
	if (rs->sin_addr.s_addr == 0)
  429560:	8fc225b8 	lw	v0,9656(s8)
  429564:	00000000 	nop
  429568:	8c420004 	lw	v0,4(v0)
  42956c:	00000000 	nop
  429570:	14400003 	bnez	v0,429580 <find_raw_ifaces4+0x5b0>
  429574:	00000000 	nop
	    continue;
  429578:	10000045 	b	429690 <find_raw_ifaces4+0x6c0>
  42957c:	00000000 	nop

	happy(initaddr((const void *)&rs->sin_addr, sizeof(struct in_addr)
  429580:	8fc225b8 	lw	v0,9656(s8)
  429584:	00000000 	nop
  429588:	24420004 	addiu	v0,v0,4
  42958c:	00402021 	move	a0,v0
  429590:	24050004 	li	a1,4
  429594:	24060002 	li	a2,2
  429598:	27c725e0 	addiu	a3,s8,9696
  42959c:	8f998b78 	lw	t9,-29832(gp)
  4295a0:	00000000 	nop
  4295a4:	0320f809 	jalr	t9
  4295a8:	00000000 	nop
  4295ac:	8fdc0018 	lw	gp,24(s8)
  4295b0:	afc22648 	sw	v0,9800(s8)
  4295b4:	8fc22648 	lw	v0,9800(s8)
  4295b8:	00000000 	nop
  4295bc:	1040000c 	beqz	v0,4295f0 <find_raw_ifaces4+0x620>
  4295c0:	00000000 	nop
  4295c4:	8fc42648 	lw	a0,9800(s8)
  4295c8:	8f85802c 	lw	a1,-32724(gp)
  4295cc:	00000000 	nop
  4295d0:	24a5b4e4 	addiu	a1,a1,-19228
  4295d4:	24060132 	li	a2,306
  4295d8:	8f998bb8 	lw	t9,-29768(gp)
  4295dc:	00000000 	nop
  4295e0:	0320f809 	jalr	t9
  4295e4:	00000000 	nop
  4295e8:	8fdc0018 	lw	gp,24(s8)
  4295ec:	00000000 	nop
	    , AF_INET, &ri.addr));

	DBG(DBG_CONTROL, DBG_log("found %s with address %s"
  4295f0:	8f8284f8 	lw	v0,-31496(gp)
  4295f4:	00000000 	nop
  4295f8:	8c420000 	lw	v0,0(v0)
  4295fc:	00000000 	nop
  429600:	30420010 	andi	v0,v0,0x10
  429604:	10400014 	beqz	v0,429658 <find_raw_ifaces4+0x688>
  429608:	00000000 	nop
  42960c:	27c425e0 	addiu	a0,s8,9696
  429610:	8f998100 	lw	t9,-32512(gp)
  429614:	00000000 	nop
  429618:	0320f809 	jalr	t9
  42961c:	00000000 	nop
  429620:	8fdc0018 	lw	gp,24(s8)
  429624:	27c325e0 	addiu	v1,s8,9696
  429628:	2463001c 	addiu	v1,v1,28
  42962c:	8f84802c 	lw	a0,-32724(gp)
  429630:	00000000 	nop
  429634:	2484b574 	addiu	a0,a0,-19084
  429638:	00602821 	move	a1,v1
  42963c:	00403021 	move	a2,v0
  429640:	8f9983b8 	lw	t9,-31816(gp)
  429644:	00000000 	nop
  429648:	0320f809 	jalr	t9
  42964c:	00000000 	nop
  429650:	8fdc0018 	lw	gp,24(s8)
  429654:	00000000 	nop
	    , ri.name, ip_str(&ri.addr)));
	ri.next = rifaces;
  429658:	8fc225b0 	lw	v0,9648(s8)
  42965c:	00000000 	nop
  429660:	afc22620 	sw	v0,9760(s8)
	rifaces = clone_thing(ri, "struct raw_iface");
  429664:	27c425e0 	addiu	a0,s8,9696
  429668:	24050044 	li	a1,68
  42966c:	8f86802c 	lw	a2,-32724(gp)
  429670:	00000000 	nop
  429674:	24c6b590 	addiu	a2,a2,-19056
  429678:	8f998c04 	lw	t9,-29692(gp)
  42967c:	00000000 	nop
  429680:	0320f809 	jalr	t9
  429684:	00000000 	nop
  429688:	8fdc0018 	lw	gp,24(s8)
  42968c:	afc225b0 	sw	v0,9648(s8)
  429690:	8fc20020 	lw	v0,32(s8)
  429694:	00000000 	nop
  429698:	24420001 	addiu	v0,v0,1
  42969c:	afc20020 	sw	v0,32(s8)
  4296a0:	1000ff0e 	b	4292dc <find_raw_ifaces4+0x30c>
  4296a4:	00000000 	nop
    }

    close(master_sock);
  4296a8:	8fc425b4 	lw	a0,9652(s8)
  4296ac:	8f9980c8 	lw	t9,-32568(gp)
  4296b0:	00000000 	nop
  4296b4:	0320f809 	jalr	t9
  4296b8:	00000000 	nop
  4296bc:	8fdc0018 	lw	gp,24(s8)
  4296c0:	00000000 	nop

    return rifaces;
  4296c4:	8fc225b0 	lw	v0,9648(s8)
  4296c8:	00000000 	nop
}
  4296cc:	03c0e821 	move	sp,s8
  4296d0:	8fbf265c 	lw	ra,9820(sp)
  4296d4:	8fbe2658 	lw	s8,9816(sp)
  4296d8:	8fb02650 	lw	s0,9808(sp)
  4296dc:	27bd2660 	addiu	sp,sp,9824
  4296e0:	03e00008 	jr	ra
  4296e4:	00000000 	nop

004296e8 <find_raw_ifaces6>:
  4296e8:	3c1c0fbe 	lui	gp,0xfbe
  4296ec:	279c3288 	addiu	gp,gp,12936
  4296f0:	0399e021 	addu	gp,gp,t9
  4296f4:	27bdff08 	addiu	sp,sp,-248
  4296f8:	afbc0040 	sw	gp,64(sp)
  4296fc:	afbf00f0 	sw	ra,240(sp)
  429700:	afbe00ec 	sw	s8,236(sp)
  429704:	afbc00e8 	sw	gp,232(sp)
  429708:	03a0f021 	move	s8,sp

static struct raw_iface *
find_raw_ifaces6(void)
{

    /* Get list of interfaces with IPv6 addresses from system from /proc/net/if_inet6).
     *
     * Documentation of format?
     * RTFS: linux-2.2.16/net/ipv6/addrconf.c:iface_proc_info()
     *       linux-2.4.9-13/net/ipv6/addrconf.c:iface_proc_info()
     *
     * Sample from Gerhard's laptop:
     *	00000000000000000000000000000001 01 80 10 80       lo
     *	30490009000000000000000000010002 02 40 00 80   ipsec0
     *	30490009000000000000000000010002 07 40 00 80     eth0
     *	fe80000000000000025004fffefd5484 02 0a 20 80   ipsec0
     *	fe80000000000000025004fffefd5484 07 0a 20 80     eth0
     *
     * Each line contains:
     * - IPv6 address: 16 bytes, in hex, no punctuation
     * - ifindex: 1 byte, in hex
     * - prefix_len: 1 byte, in hex
     * - scope (e.g. global, link local): 1 byte, in hex
     * - flags: 1 byte, in hex
     * - device name: string, followed by '\n'
     */
    struct raw_iface *rifaces = NULL;
  42970c:	afc00048 	sw	zero,72(s8)
    static const char proc_name[] = "/proc/net/if_inet6";
    FILE *proc_sock = fopen(proc_name, "r");
  429710:	8f84802c 	lw	a0,-32724(gp)
  429714:	00000000 	nop
  429718:	2484b5a4 	addiu	a0,a0,-19036
  42971c:	8f85802c 	lw	a1,-32724(gp)
  429720:	00000000 	nop
  429724:	24a5b5b8 	addiu	a1,a1,-19016
  429728:	8f99850c 	lw	t9,-31476(gp)
  42972c:	00000000 	nop
  429730:	0320f809 	jalr	t9
  429734:	00000000 	nop
  429738:	8fdc0040 	lw	gp,64(s8)
  42973c:	afc2004c 	sw	v0,76(s8)

    if (proc_sock == NULL)
  429740:	8fc2004c 	lw	v0,76(s8)
  429744:	00000000 	nop
  429748:	14400015 	bnez	v0,4297a0 <find_raw_ifaces6+0xb8>
  42974c:	00000000 	nop
    {
	DBG(DBG_CONTROL, DBG_log("could not open %s", proc_name));
  429750:	8f8284f8 	lw	v0,-31496(gp)
  429754:	00000000 	nop
  429758:	8c420000 	lw	v0,0(v0)
  42975c:	00000000 	nop
  429760:	30420010 	andi	v0,v0,0x10
  429764:	104000b5 	beqz	v0,429a3c <find_raw_ifaces6+0x354>
  429768:	00000000 	nop
  42976c:	8f84802c 	lw	a0,-32724(gp)
  429770:	00000000 	nop
  429774:	2484b5bc 	addiu	a0,a0,-19012
  429778:	8f85802c 	lw	a1,-32724(gp)
  42977c:	00000000 	nop
  429780:	24a5b5a4 	addiu	a1,a1,-19036
  429784:	8f9983b8 	lw	t9,-31816(gp)
  429788:	00000000 	nop
  42978c:	0320f809 	jalr	t9
  429790:	00000000 	nop
  429794:	8fdc0040 	lw	gp,64(s8)
  429798:	100000a8 	b	429a3c <find_raw_ifaces6+0x354>
  42979c:	00000000 	nop
    }
    else
    {
	for (;;)
	{
	    struct raw_iface ri;
	    unsigned short xb[8];	/* IPv6 address as 8 16-bit chunks */
	    char sb[8*5];	/* IPv6 address as string-with-colons */
	    unsigned int if_idx;	/* proc field, not used */
	    unsigned int plen;	/* proc field, not used */
	    unsigned int scope;	/* proc field, used to exclude link-local */
	    unsigned int dad_status;	/* proc field, not used */
	    /* ??? I hate and distrust scanf -- DHR */
	    int r = fscanf(proc_sock
  4297a0:	27c20098 	addiu	v0,s8,152
  4297a4:	24430002 	addiu	v1,v0,2
  4297a8:	27c20098 	addiu	v0,s8,152
  4297ac:	24420004 	addiu	v0,v0,4
  4297b0:	afa20010 	sw	v0,16(sp)
  4297b4:	27c20098 	addiu	v0,s8,152
  4297b8:	24420006 	addiu	v0,v0,6
  4297bc:	afa20014 	sw	v0,20(sp)
  4297c0:	27c20098 	addiu	v0,s8,152
  4297c4:	24420008 	addiu	v0,v0,8
  4297c8:	afa20018 	sw	v0,24(sp)
  4297cc:	27c20098 	addiu	v0,s8,152
  4297d0:	2442000a 	addiu	v0,v0,10
  4297d4:	afa2001c 	sw	v0,28(sp)
  4297d8:	27c20098 	addiu	v0,s8,152
  4297dc:	2442000c 	addiu	v0,v0,12
  4297e0:	afa20020 	sw	v0,32(sp)
  4297e4:	27c20098 	addiu	v0,s8,152
  4297e8:	2442000e 	addiu	v0,v0,14
  4297ec:	afa20024 	sw	v0,36(sp)
  4297f0:	27c200d0 	addiu	v0,s8,208
  4297f4:	afa20028 	sw	v0,40(sp)
  4297f8:	27c200d4 	addiu	v0,s8,212
  4297fc:	afa2002c 	sw	v0,44(sp)
  429800:	27c200d8 	addiu	v0,s8,216
  429804:	afa20030 	sw	v0,48(sp)
  429808:	27c200dc 	addiu	v0,s8,220
  42980c:	afa20034 	sw	v0,52(sp)
  429810:	27c20050 	addiu	v0,s8,80
  429814:	2442001c 	addiu	v0,v0,28
  429818:	afa20038 	sw	v0,56(sp)
  42981c:	8fc4004c 	lw	a0,76(s8)
  429820:	8f85802c 	lw	a1,-32724(gp)
  429824:	00000000 	nop
  429828:	24a5b5d0 	addiu	a1,a1,-18992
  42982c:	27c60098 	addiu	a2,s8,152
  429830:	00603821 	move	a3,v1
  429834:	8f998a78 	lw	t9,-30088(gp)
  429838:	00000000 	nop
  42983c:	0320f809 	jalr	t9
  429840:	00000000 	nop
  429844:	8fdc0040 	lw	gp,64(s8)
  429848:	afc200e0 	sw	v0,224(s8)
		, "%4hx%4hx%4hx%4hx%4hx%4hx%4hx%4hx"
		  " %02x %02x %02x %02x %20s\n"
		, xb+0, xb+1, xb+2, xb+3, xb+4, xb+5, xb+6, xb+7
		, &if_idx, &plen, &scope, &dad_status, ri.name);

	    /* ??? we should diagnose any problems */
	    if (r != 13)
  42984c:	8fc300e0 	lw	v1,224(s8)
  429850:	2402000d 	li	v0,13
  429854:	10620003 	beq	v1,v0,429864 <find_raw_ifaces6+0x17c>
  429858:	00000000 	nop
		break;
  42985c:	10000070 	b	429a20 <find_raw_ifaces6+0x338>
  429860:	00000000 	nop

	    /* ignore addresses with link local scope.
	     * From linux-2.4.9-13/include/net/ipv6.h:
	     * IPV6_ADDR_LINKLOCAL	0x0020U
	     * IPV6_ADDR_SCOPE_MASK	0x00f0U
	     */
	    if ((scope & 0x00f0U) == 0x0020U)
  429864:	8fc200d8 	lw	v0,216(s8)
  429868:	00000000 	nop
  42986c:	304300f0 	andi	v1,v0,0xf0
  429870:	24020020 	li	v0,32
  429874:	14620003 	bne	v1,v0,429884 <find_raw_ifaces6+0x19c>
  429878:	00000000 	nop
		continue;
  42987c:	1000ffc8 	b	4297a0 <find_raw_ifaces6+0xb8>
  429880:	00000000 	nop

	    snprintf(sb, sizeof(sb)
  429884:	97c30098 	lhu	v1,152(s8)
  429888:	97c2009a 	lhu	v0,154(s8)
  42988c:	00000000 	nop
  429890:	afa20010 	sw	v0,16(sp)
  429894:	97c2009c 	lhu	v0,156(s8)
  429898:	00000000 	nop
  42989c:	afa20014 	sw	v0,20(sp)
  4298a0:	97c2009e 	lhu	v0,158(s8)
  4298a4:	00000000 	nop
  4298a8:	afa20018 	sw	v0,24(sp)
  4298ac:	97c200a0 	lhu	v0,160(s8)
  4298b0:	00000000 	nop
  4298b4:	afa2001c 	sw	v0,28(sp)
  4298b8:	97c200a2 	lhu	v0,162(s8)
  4298bc:	00000000 	nop
  4298c0:	afa20020 	sw	v0,32(sp)
  4298c4:	97c200a4 	lhu	v0,164(s8)
  4298c8:	00000000 	nop
  4298cc:	afa20024 	sw	v0,36(sp)
  4298d0:	97c200a6 	lhu	v0,166(s8)
  4298d4:	00000000 	nop
  4298d8:	afa20028 	sw	v0,40(sp)
  4298dc:	27c400a8 	addiu	a0,s8,168
  4298e0:	24050028 	li	a1,40
  4298e4:	8f86802c 	lw	a2,-32724(gp)
  4298e8:	00000000 	nop
  4298ec:	24c6b60c 	addiu	a2,a2,-18932
  4298f0:	00603821 	move	a3,v1
  4298f4:	8f998b38 	lw	t9,-29896(gp)
  4298f8:	00000000 	nop
  4298fc:	0320f809 	jalr	t9
  429900:	00000000 	nop
  429904:	8fdc0040 	lw	gp,64(s8)
  429908:	00000000 	nop
		, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"
		, xb[0], xb[1], xb[2], xb[3], xb[4], xb[5], xb[6], xb[7]);

	    happy(ttoaddr(sb, 0, AF_INET6, &ri.addr));
  42990c:	27c400a8 	addiu	a0,s8,168
  429910:	00002821 	move	a1,zero
  429914:	2406000a 	li	a2,10
  429918:	27c70050 	addiu	a3,s8,80
  42991c:	8f998320 	lw	t9,-31968(gp)
  429920:	00000000 	nop
  429924:	0320f809 	jalr	t9
  429928:	00000000 	nop
  42992c:	8fdc0040 	lw	gp,64(s8)
  429930:	afc200e4 	sw	v0,228(s8)
  429934:	8fc200e4 	lw	v0,228(s8)
  429938:	00000000 	nop
  42993c:	1040000c 	beqz	v0,429970 <find_raw_ifaces6+0x288>
  429940:	00000000 	nop
  429944:	8fc400e4 	lw	a0,228(s8)
  429948:	8f85802c 	lw	a1,-32724(gp)
  42994c:	00000000 	nop
  429950:	24a5b4e4 	addiu	a1,a1,-19228
  429954:	24060183 	li	a2,387
  429958:	8f998bb8 	lw	t9,-29768(gp)
  42995c:	00000000 	nop
  429960:	0320f809 	jalr	t9
  429964:	00000000 	nop
  429968:	8fdc0040 	lw	gp,64(s8)
  42996c:	00000000 	nop

	    if (!isunspecaddr(&ri.addr))
  429970:	27c40050 	addiu	a0,s8,80
  429974:	8f998974 	lw	t9,-30348(gp)
  429978:	00000000 	nop
  42997c:	0320f809 	jalr	t9
  429980:	00000000 	nop
  429984:	8fdc0040 	lw	gp,64(s8)
  429988:	1440ff85 	bnez	v0,4297a0 <find_raw_ifaces6+0xb8>
  42998c:	00000000 	nop
	    {
		DBG(DBG_CONTROL
  429990:	8f8284f8 	lw	v0,-31496(gp)
  429994:	00000000 	nop
  429998:	8c420000 	lw	v0,0(v0)
  42999c:	00000000 	nop
  4299a0:	30420010 	andi	v0,v0,0x10
  4299a4:	1040000e 	beqz	v0,4299e0 <find_raw_ifaces6+0x2f8>
  4299a8:	00000000 	nop
  4299ac:	27c20050 	addiu	v0,s8,80
  4299b0:	2442001c 	addiu	v0,v0,28
  4299b4:	8f84802c 	lw	a0,-32724(gp)
  4299b8:	00000000 	nop
  4299bc:	2484b574 	addiu	a0,a0,-19084
  4299c0:	00402821 	move	a1,v0
  4299c4:	27c600a8 	addiu	a2,s8,168
  4299c8:	8f9983b8 	lw	t9,-31816(gp)
  4299cc:	00000000 	nop
  4299d0:	0320f809 	jalr	t9
  4299d4:	00000000 	nop
  4299d8:	8fdc0040 	lw	gp,64(s8)
  4299dc:	00000000 	nop
		    , DBG_log("found %s with address %s"
			, ri.name, sb));
		ri.next = rifaces;
  4299e0:	8fc20048 	lw	v0,72(s8)
  4299e4:	00000000 	nop
  4299e8:	afc20090 	sw	v0,144(s8)
		rifaces = clone_thing(ri, "struct raw_iface");
  4299ec:	27c40050 	addiu	a0,s8,80
  4299f0:	24050044 	li	a1,68
  4299f4:	8f86802c 	lw	a2,-32724(gp)
  4299f8:	00000000 	nop
  4299fc:	24c6b590 	addiu	a2,a2,-19056
  429a00:	8f998c04 	lw	t9,-29692(gp)
  429a04:	00000000 	nop
  429a08:	0320f809 	jalr	t9
  429a0c:	00000000 	nop
  429a10:	8fdc0040 	lw	gp,64(s8)
  429a14:	afc20048 	sw	v0,72(s8)
  429a18:	1000ff61 	b	4297a0 <find_raw_ifaces6+0xb8>
  429a1c:	00000000 	nop
	    }
	}
	fclose(proc_sock);
  429a20:	8fc4004c 	lw	a0,76(s8)
  429a24:	8f9984c0 	lw	t9,-31552(gp)
  429a28:	00000000 	nop
  429a2c:	0320f809 	jalr	t9
  429a30:	00000000 	nop
  429a34:	8fdc0040 	lw	gp,64(s8)
  429a38:	00000000 	nop
    }

    return rifaces;
  429a3c:	8fc20048 	lw	v0,72(s8)
  429a40:	00000000 	nop
}
  429a44:	03c0e821 	move	sp,s8
  429a48:	8fbf00f0 	lw	ra,240(sp)
  429a4c:	8fbe00ec 	lw	s8,236(sp)
  429a50:	27bd00f8 	addiu	sp,sp,248
  429a54:	03e00008 	jr	ra
  429a58:	00000000 	nop

00429a5c <create_socket>:
  429a5c:	3c1c0fbe 	lui	gp,0xfbe
  429a60:	279c2f14 	addiu	gp,gp,12052
  429a64:	0399e021 	addu	gp,gp,t9
  429a68:	27bdffc0 	addiu	sp,sp,-64
  429a6c:	afbc0018 	sw	gp,24(sp)
  429a70:	afbf003c 	sw	ra,60(sp)
  429a74:	afbe0038 	sw	s8,56(sp)
  429a78:	afbc0034 	sw	gp,52(sp)
  429a7c:	afb00030 	sw	s0,48(sp)
  429a80:	03a0f021 	move	s8,sp
  429a84:	afc40040 	sw	a0,64(s8)
  429a88:	afc50044 	sw	a1,68(s8)
  429a8c:	afc60048 	sw	a2,72(s8)

#if 1
static int
create_socket(struct raw_iface *ifp, const char *v_name, int port)
{
    int fd = socket(addrtypeof(&ifp->addr), SOCK_DGRAM, IPPROTO_UDP);
  429a90:	8fc40040 	lw	a0,64(s8)
  429a94:	8f9985d4 	lw	t9,-31276(gp)
  429a98:	00000000 	nop
  429a9c:	0320f809 	jalr	t9
  429aa0:	00000000 	nop
  429aa4:	8fdc0018 	lw	gp,24(s8)
  429aa8:	00402021 	move	a0,v0
  429aac:	24050001 	li	a1,1
  429ab0:	24060011 	li	a2,17
  429ab4:	8f998930 	lw	t9,-30416(gp)
  429ab8:	00000000 	nop
  429abc:	0320f809 	jalr	t9
  429ac0:	00000000 	nop
  429ac4:	8fdc0018 	lw	gp,24(s8)
  429ac8:	afc20020 	sw	v0,32(s8)
    int fcntl_flags;

    if (fd < 0)
  429acc:	8fc20020 	lw	v0,32(s8)
  429ad0:	00000000 	nop
  429ad4:	04410016 	bgez	v0,429b30 <create_socket+0xd4>
  429ad8:	00000000 	nop
    {
	log_errno((e, "socket() in process_raw_ifaces()"));
  429adc:	8f998234 	lw	t9,-32204(gp)
  429ae0:	00000000 	nop
  429ae4:	0320f809 	jalr	t9
  429ae8:	00000000 	nop
  429aec:	8fdc0018 	lw	gp,24(s8)
  429af0:	8c420000 	lw	v0,0(v0)
  429af4:	00000000 	nop
  429af8:	afc20028 	sw	v0,40(s8)
  429afc:	8fc40028 	lw	a0,40(s8)
  429b00:	8f85802c 	lw	a1,-32724(gp)
  429b04:	00000000 	nop
  429b08:	24a5b634 	addiu	a1,a1,-18892
  429b0c:	8f9988ec 	lw	t9,-30484(gp)
  429b10:	00000000 	nop
  429b14:	0320f809 	jalr	t9
  429b18:	00000000 	nop
  429b1c:	8fdc0018 	lw	gp,24(s8)
  429b20:	00000000 	nop
	return -1;
  429b24:	2402ffff 	li	v0,-1
  429b28:	100000f5 	b	429f00 <create_socket+0x4a4>
  429b2c:	00000000 	nop
    }

#if 1
    /* Set socket Nonblocking */
    if ((fcntl_flags=fcntl(fd, F_GETFL)) >= 0) {
  429b30:	8fc40020 	lw	a0,32(s8)
  429b34:	24050003 	li	a1,3
  429b38:	8f9980e8 	lw	t9,-32536(gp)
  429b3c:	00000000 	nop
  429b40:	0320f809 	jalr	t9
  429b44:	00000000 	nop
  429b48:	8fdc0018 	lw	gp,24(s8)
  429b4c:	afc20024 	sw	v0,36(s8)
  429b50:	8fc20024 	lw	v0,36(s8)
  429b54:	00000000 	nop
  429b58:	04400013 	bltz	v0,429ba8 <create_socket+0x14c>
  429b5c:	00000000 	nop
	if (!(fcntl_flags & O_NONBLOCK)) {
  429b60:	8fc20024 	lw	v0,36(s8)
  429b64:	00000000 	nop
  429b68:	30420080 	andi	v0,v0,0x80
  429b6c:	1440000e 	bnez	v0,429ba8 <create_socket+0x14c>
  429b70:	00000000 	nop
	    fcntl_flags |= O_NONBLOCK;
  429b74:	8fc20024 	lw	v0,36(s8)
  429b78:	00000000 	nop
  429b7c:	34420080 	ori	v0,v0,0x80
  429b80:	afc20024 	sw	v0,36(s8)
	    fcntl(fd, F_SETFL, fcntl_flags);
  429b84:	8fc40020 	lw	a0,32(s8)
  429b88:	24050004 	li	a1,4
  429b8c:	8fc60024 	lw	a2,36(s8)
  429b90:	8f9980e8 	lw	t9,-32536(gp)
  429b94:	00000000 	nop
  429b98:	0320f809 	jalr	t9
  429b9c:	00000000 	nop
  429ba0:	8fdc0018 	lw	gp,24(s8)
  429ba4:	00000000 	nop
	}
    }
#endif

    if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
  429ba8:	8fc40020 	lw	a0,32(s8)
  429bac:	24050002 	li	a1,2
  429bb0:	24060001 	li	a2,1
  429bb4:	8f9980e8 	lw	t9,-32536(gp)
  429bb8:	00000000 	nop
  429bbc:	0320f809 	jalr	t9
  429bc0:	00000000 	nop
  429bc4:	8fdc0018 	lw	gp,24(s8)
  429bc8:	00401821 	move	v1,v0
  429bcc:	2402ffff 	li	v0,-1
  429bd0:	1462001d 	bne	v1,v0,429c48 <create_socket+0x1ec>
  429bd4:	00000000 	nop
    {
	log_errno((e, "fcntl(,, FD_CLOEXEC) in process_raw_ifaces()"));
  429bd8:	8f998234 	lw	t9,-32204(gp)
  429bdc:	00000000 	nop
  429be0:	0320f809 	jalr	t9
  429be4:	00000000 	nop
  429be8:	8fdc0018 	lw	gp,24(s8)
  429bec:	8c420000 	lw	v0,0(v0)
  429bf0:	00000000 	nop
  429bf4:	afc20028 	sw	v0,40(s8)
  429bf8:	8fc40028 	lw	a0,40(s8)
  429bfc:	8f85802c 	lw	a1,-32724(gp)
  429c00:	00000000 	nop
  429c04:	24a5b658 	addiu	a1,a1,-18856
  429c08:	8f9988ec 	lw	t9,-30484(gp)
  429c0c:	00000000 	nop
  429c10:	0320f809 	jalr	t9
  429c14:	00000000 	nop
  429c18:	8fdc0018 	lw	gp,24(s8)
  429c1c:	00000000 	nop
	close(fd);
  429c20:	8fc40020 	lw	a0,32(s8)
  429c24:	8f9980c8 	lw	t9,-32568(gp)
  429c28:	00000000 	nop
  429c2c:	0320f809 	jalr	t9
  429c30:	00000000 	nop
  429c34:	8fdc0018 	lw	gp,24(s8)
  429c38:	00000000 	nop
	return -1;
  429c3c:	2402ffff 	li	v0,-1
  429c40:	100000af 	b	429f00 <create_socket+0x4a4>
  429c44:	00000000 	nop
    }

    if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR
    , (const void *)&on, sizeof(on)) < 0)
  429c48:	24020004 	li	v0,4
  429c4c:	afa20010 	sw	v0,16(sp)
  429c50:	8fc40020 	lw	a0,32(s8)
  429c54:	3405ffff 	li	a1,0xffff
  429c58:	24060004 	li	a2,4
  429c5c:	8f87802c 	lw	a3,-32724(gp)
  429c60:	00000000 	nop
  429c64:	24e7b410 	addiu	a3,a3,-19440
  429c68:	8f99871c 	lw	t9,-30948(gp)
  429c6c:	00000000 	nop
  429c70:	0320f809 	jalr	t9
  429c74:	00000000 	nop
  429c78:	8fdc0018 	lw	gp,24(s8)
  429c7c:	0441001d 	bgez	v0,429cf4 <create_socket+0x298>
  429c80:	00000000 	nop
    {
	log_errno((e, "setsockopt SO_REUSEADDR in process_raw_ifaces()"));
  429c84:	8f998234 	lw	t9,-32204(gp)
  429c88:	00000000 	nop
  429c8c:	0320f809 	jalr	t9
  429c90:	00000000 	nop
  429c94:	8fdc0018 	lw	gp,24(s8)
  429c98:	8c420000 	lw	v0,0(v0)
  429c9c:	00000000 	nop
  429ca0:	afc20028 	sw	v0,40(s8)
  429ca4:	8fc40028 	lw	a0,40(s8)
  429ca8:	8f85802c 	lw	a1,-32724(gp)
  429cac:	00000000 	nop
  429cb0:	24a5b688 	addiu	a1,a1,-18808
  429cb4:	8f9988ec 	lw	t9,-30484(gp)
  429cb8:	00000000 	nop
  429cbc:	0320f809 	jalr	t9
  429cc0:	00000000 	nop
  429cc4:	8fdc0018 	lw	gp,24(s8)
  429cc8:	00000000 	nop
	close(fd);
  429ccc:	8fc40020 	lw	a0,32(s8)
  429cd0:	8f9980c8 	lw	t9,-32568(gp)
  429cd4:	00000000 	nop
  429cd8:	0320f809 	jalr	t9
  429cdc:	00000000 	nop
  429ce0:	8fdc0018 	lw	gp,24(s8)
  429ce4:	00000000 	nop
	return -1;
  429ce8:	2402ffff 	li	v0,-1
  429cec:	10000084 	b	429f00 <create_socket+0x4a4>
  429cf0:	00000000 	nop
    }

    /* To improve error reporting.  See ip(7). */
#if defined(IP_RECVERR) && defined(MSG_ERRQUEUE)
    if (setsockopt(fd, SOL_IP, IP_RECVERR
    , (const void *)&on, sizeof(on)) < 0)
  429cf4:	24020004 	li	v0,4
  429cf8:	afa20010 	sw	v0,16(sp)
  429cfc:	8fc40020 	lw	a0,32(s8)
  429d00:	00002821 	move	a1,zero
  429d04:	2406000b 	li	a2,11
  429d08:	8f87802c 	lw	a3,-32724(gp)
  429d0c:	00000000 	nop
  429d10:	24e7b410 	addiu	a3,a3,-19440
  429d14:	8f99871c 	lw	t9,-30948(gp)
  429d18:	00000000 	nop
  429d1c:	0320f809 	jalr	t9
  429d20:	00000000 	nop
  429d24:	8fdc0018 	lw	gp,24(s8)
  429d28:	0441001d 	bgez	v0,429da0 <create_socket+0x344>
  429d2c:	00000000 	nop
    {
	log_errno((e, "setsockopt IP_RECVERR in process_raw_ifaces()"));
  429d30:	8f998234 	lw	t9,-32204(gp)
  429d34:	00000000 	nop
  429d38:	0320f809 	jalr	t9
  429d3c:	00000000 	nop
  429d40:	8fdc0018 	lw	gp,24(s8)
  429d44:	8c420000 	lw	v0,0(v0)
  429d48:	00000000 	nop
  429d4c:	afc20028 	sw	v0,40(s8)
  429d50:	8fc40028 	lw	a0,40(s8)
  429d54:	8f85802c 	lw	a1,-32724(gp)
  429d58:	00000000 	nop
  429d5c:	24a5b6b8 	addiu	a1,a1,-18760
  429d60:	8f9988ec 	lw	t9,-30484(gp)
  429d64:	00000000 	nop
  429d68:	0320f809 	jalr	t9
  429d6c:	00000000 	nop
  429d70:	8fdc0018 	lw	gp,24(s8)
  429d74:	00000000 	nop
	close(fd);
  429d78:	8fc40020 	lw	a0,32(s8)
  429d7c:	8f9980c8 	lw	t9,-32568(gp)
  429d80:	00000000 	nop
  429d84:	0320f809 	jalr	t9
  429d88:	00000000 	nop
  429d8c:	8fdc0018 	lw	gp,24(s8)
  429d90:	00000000 	nop
	return -1;
  429d94:	2402ffff 	li	v0,-1
  429d98:	10000059 	b	429f00 <create_socket+0x4a4>
  429d9c:	00000000 	nop
    }
#endif

    /* With IPv6, there is no fragmentation after
     * it leaves our interface.  PMTU discovery
     * is mandatory but doesn't work well with IKE (why?).
     * So we must set the IPV6_USE_MIN_MTU option.
     * See draft-ietf-ipngwg-rfc2292bis-01.txt 11.1
     */
#ifdef IPV6_USE_MIN_MTU	/* YUCK: not always defined */
    if (addrtypeof(&ifp->addr) == AF_INET6
    && setsockopt(fd, SOL_SOCKET, IPV6_USE_MIN_MTU
      , (const void *)&on, sizeof(on)) < 0)
    {
	log_errno((e, "setsockopt IPV6_USE_MIN_MTU in process_raw_ifaces()"));
	close(fd);
	return -1;
    }
#endif


    setportof(htons(port), &ifp->addr);
  429da0:	8fc40048 	lw	a0,72(s8)
  429da4:	8fc50040 	lw	a1,64(s8)
  429da8:	8f9988e0 	lw	t9,-30496(gp)
  429dac:	00000000 	nop
  429db0:	0320f809 	jalr	t9
  429db4:	00000000 	nop
  429db8:	8fdc0018 	lw	gp,24(s8)
  429dbc:	00000000 	nop
    if (bind(fd, sockaddrof(&ifp->addr), sockaddrlenof(&ifp->addr)) < 0)
  429dc0:	8fc40040 	lw	a0,64(s8)
  429dc4:	8f9982d4 	lw	t9,-32044(gp)
  429dc8:	00000000 	nop
  429dcc:	0320f809 	jalr	t9
  429dd0:	00000000 	nop
  429dd4:	8fdc0018 	lw	gp,24(s8)
  429dd8:	00408021 	move	s0,v0
  429ddc:	8fc40040 	lw	a0,64(s8)
  429de0:	8f9981e8 	lw	t9,-32280(gp)
  429de4:	00000000 	nop
  429de8:	0320f809 	jalr	t9
  429dec:	00000000 	nop
  429df0:	8fdc0018 	lw	gp,24(s8)
  429df4:	8fc40020 	lw	a0,32(s8)
  429df8:	02002821 	move	a1,s0
  429dfc:	00403021 	move	a2,v0
  429e00:	8f998770 	lw	t9,-30864(gp)
  429e04:	00000000 	nop
  429e08:	0320f809 	jalr	t9
  429e0c:	00000000 	nop
  429e10:	8fdc0018 	lw	gp,24(s8)
  429e14:	0441002c 	bgez	v0,429ec8 <create_socket+0x46c>
  429e18:	00000000 	nop
    {
	log_errno((e, "bind() for %s/%s %s:%u in process_raw_ifaces()"
  429e1c:	8f998234 	lw	t9,-32204(gp)
  429e20:	00000000 	nop
  429e24:	0320f809 	jalr	t9
  429e28:	00000000 	nop
  429e2c:	8fdc0018 	lw	gp,24(s8)
  429e30:	8c420000 	lw	v0,0(v0)
  429e34:	00000000 	nop
  429e38:	afc20028 	sw	v0,40(s8)
  429e3c:	8fc40040 	lw	a0,64(s8)
  429e40:	8f998100 	lw	t9,-32512(gp)
  429e44:	00000000 	nop
  429e48:	0320f809 	jalr	t9
  429e4c:	00000000 	nop
  429e50:	8fdc0018 	lw	gp,24(s8)
  429e54:	00401821 	move	v1,v0
  429e58:	8fc20040 	lw	v0,64(s8)
  429e5c:	00000000 	nop
  429e60:	2446001c 	addiu	a2,v0,28
  429e64:	afa30010 	sw	v1,16(sp)
  429e68:	8fc20048 	lw	v0,72(s8)
  429e6c:	00000000 	nop
  429e70:	afa20014 	sw	v0,20(sp)
  429e74:	8fc40028 	lw	a0,40(s8)
  429e78:	8f85802c 	lw	a1,-32724(gp)
  429e7c:	00000000 	nop
  429e80:	24a5b6e8 	addiu	a1,a1,-18712
  429e84:	8fc70044 	lw	a3,68(s8)
  429e88:	8f9988ec 	lw	t9,-30484(gp)
  429e8c:	00000000 	nop
  429e90:	0320f809 	jalr	t9
  429e94:	00000000 	nop
  429e98:	8fdc0018 	lw	gp,24(s8)
  429e9c:	00000000 	nop
	    , ifp->name, v_name
	    , ip_str(&ifp->addr), (unsigned) port));
	close(fd);
  429ea0:	8fc40020 	lw	a0,32(s8)
  429ea4:	8f9980c8 	lw	t9,-32568(gp)
  429ea8:	00000000 	nop
  429eac:	0320f809 	jalr	t9
  429eb0:	00000000 	nop
  429eb4:	8fdc0018 	lw	gp,24(s8)
  429eb8:	00000000 	nop
	return -1;
  429ebc:	2402ffff 	li	v0,-1
  429ec0:	1000000f 	b	429f00 <create_socket+0x4a4>
  429ec4:	00000000 	nop
    }
    setportof(htons(pluto_port), &ifp->addr);
  429ec8:	8f8284b0 	lw	v0,-31568(gp)
  429ecc:	00000000 	nop
  429ed0:	94420000 	lhu	v0,0(v0)
  429ed4:	00000000 	nop
  429ed8:	00402021 	move	a0,v0
  429edc:	8fc50040 	lw	a1,64(s8)
  429ee0:	8f9988e0 	lw	t9,-30496(gp)
  429ee4:	00000000 	nop
  429ee8:	0320f809 	jalr	t9
  429eec:	00000000 	nop
  429ef0:	8fdc0018 	lw	gp,24(s8)
  429ef4:	00000000 	nop
    return fd;
  429ef8:	8fc20020 	lw	v0,32(s8)
  429efc:	00000000 	nop
}
  429f00:	03c0e821 	move	sp,s8
  429f04:	8fbf003c 	lw	ra,60(sp)
  429f08:	8fbe0038 	lw	s8,56(sp)
  429f0c:	8fb00030 	lw	s0,48(sp)
  429f10:	27bd0040 	addiu	sp,sp,64
  429f14:	03e00008 	jr	ra
  429f18:	00000000 	nop

00429f1c <process_raw_ifaces>:
  429f1c:	3c1c0fbe 	lui	gp,0xfbe
  429f20:	279c2a54 	addiu	gp,gp,10836
  429f24:	0399e021 	addu	gp,gp,t9
  429f28:	27bdff38 	addiu	sp,sp,-200
  429f2c:	afbc0018 	sw	gp,24(sp)
  429f30:	afbf00c0 	sw	ra,192(sp)
  429f34:	afbe00bc 	sw	s8,188(sp)
  429f38:	afbc00b8 	sw	gp,184(sp)
  429f3c:	03a0f021 	move	s8,sp
  429f40:	afc400c8 	sw	a0,200(s8)
#endif

static void
process_raw_ifaces(struct raw_iface *rifaces)
{
    struct raw_iface *ifp;

    /* Find all virtual/real interface pairs.
     * For each real interface...
     */
    for (ifp = rifaces; ifp != NULL; ifp = ifp->next)
  429f44:	8fc200c8 	lw	v0,200(s8)
  429f48:	00000000 	nop
  429f4c:	afc20020 	sw	v0,32(s8)
  429f50:	8fc20020 	lw	v0,32(s8)
  429f54:	00000000 	nop
  429f58:	14400003 	bnez	v0,429f68 <process_raw_ifaces+0x4c>
  429f5c:	00000000 	nop
  429f60:	100002eb 	b	42ab10 <process_raw_ifaces+0xbf4>
  429f64:	00000000 	nop
    {
	struct raw_iface *v = NULL;	/* matching ipsecX interface */
  429f68:	afc00024 	sw	zero,36(s8)
	struct raw_iface fake_v;
	bool after = FALSE; /* has vfp passed ifp on the list? */
  429f6c:	afc00070 	sw	zero,112(s8)
	bool bad = FALSE;
  429f70:	afc00074 	sw	zero,116(s8)
	struct raw_iface *vfp;

	/* ignore if virtual (ipsec*) interface */
	if (strncmp(ifp->name, IPSECDEVPREFIX, sizeof(IPSECDEVPREFIX)-1) == 0)
  429f74:	8fc20020 	lw	v0,32(s8)
  429f78:	00000000 	nop
  429f7c:	2442001c 	addiu	v0,v0,28
  429f80:	00402021 	move	a0,v0
  429f84:	8f85802c 	lw	a1,-32724(gp)
  429f88:	00000000 	nop
  429f8c:	24a5b720 	addiu	a1,a1,-18656
  429f90:	24060005 	li	a2,5
  429f94:	8f99864c 	lw	t9,-31156(gp)
  429f98:	00000000 	nop
  429f9c:	0320f809 	jalr	t9
  429fa0:	00000000 	nop
  429fa4:	8fdc0018 	lw	gp,24(s8)
  429fa8:	14400003 	bnez	v0,429fb8 <process_raw_ifaces+0x9c>
  429fac:	00000000 	nop
	    continue;
  429fb0:	100002d0 	b	42aaf4 <process_raw_ifaces+0xbd8>
  429fb4:	00000000 	nop

	for (vfp = rifaces; vfp != NULL; vfp = vfp->next)
  429fb8:	8fc200c8 	lw	v0,200(s8)
  429fbc:	00000000 	nop
  429fc0:	afc20078 	sw	v0,120(s8)
  429fc4:	8fc20078 	lw	v0,120(s8)
  429fc8:	00000000 	nop
  429fcc:	14400003 	bnez	v0,429fdc <process_raw_ifaces+0xc0>
  429fd0:	00000000 	nop
  429fd4:	1000006e 	b	42a190 <process_raw_ifaces+0x274>
  429fd8:	00000000 	nop
	{
	    if (vfp == ifp)
  429fdc:	8fc30078 	lw	v1,120(s8)
  429fe0:	8fc20020 	lw	v0,32(s8)
  429fe4:	00000000 	nop
  429fe8:	14620005 	bne	v1,v0,42a000 <process_raw_ifaces+0xe4>
  429fec:	00000000 	nop
	    {
		after = TRUE;
  429ff0:	24020001 	li	v0,1
  429ff4:	afc20070 	sw	v0,112(s8)
  429ff8:	1000005e 	b	42a174 <process_raw_ifaces+0x258>
  429ffc:	00000000 	nop
	    }
	    else if (sameaddr(&ifp->addr, &vfp->addr))
  42a000:	8fc40020 	lw	a0,32(s8)
  42a004:	8fc50078 	lw	a1,120(s8)
  42a008:	8f998928 	lw	t9,-30424(gp)
  42a00c:	00000000 	nop
  42a010:	0320f809 	jalr	t9
  42a014:	00000000 	nop
  42a018:	8fdc0018 	lw	gp,24(s8)
  42a01c:	10400055 	beqz	v0,42a174 <process_raw_ifaces+0x258>
  42a020:	00000000 	nop
	    {
		/* Different entries with matching IP addresses.
		 * Many interesting cases.
		 */
		if (strncmp(vfp->name, IPSECDEVPREFIX, sizeof(IPSECDEVPREFIX)-1) == 0)
  42a024:	8fc20078 	lw	v0,120(s8)
  42a028:	00000000 	nop
  42a02c:	2442001c 	addiu	v0,v0,28
  42a030:	00402021 	move	a0,v0
  42a034:	8f85802c 	lw	a1,-32724(gp)
  42a038:	00000000 	nop
  42a03c:	24a5b720 	addiu	a1,a1,-18656
  42a040:	24060005 	li	a2,5
  42a044:	8f99864c 	lw	t9,-31156(gp)
  42a048:	00000000 	nop
  42a04c:	0320f809 	jalr	t9
  42a050:	00000000 	nop
  42a054:	8fdc0018 	lw	gp,24(s8)
  42a058:	14400027 	bnez	v0,42a0f8 <process_raw_ifaces+0x1dc>
  42a05c:	00000000 	nop
		{
		    if (v != NULL)
  42a060:	8fc20024 	lw	v0,36(s8)
  42a064:	00000000 	nop
  42a068:	1040001e 	beqz	v0,42a0e4 <process_raw_ifaces+0x1c8>
  42a06c:	00000000 	nop
		    {
			loglog(RC_LOG_SERIOUS
  42a070:	8fc40020 	lw	a0,32(s8)
  42a074:	8f998100 	lw	t9,-32512(gp)
  42a078:	00000000 	nop
  42a07c:	0320f809 	jalr	t9
  42a080:	00000000 	nop
  42a084:	8fdc0018 	lw	gp,24(s8)
  42a088:	00401821 	move	v1,v0
  42a08c:	8fc20024 	lw	v0,36(s8)
  42a090:	00000000 	nop
  42a094:	2446001c 	addiu	a2,v0,28
  42a098:	8fc20078 	lw	v0,120(s8)
  42a09c:	00000000 	nop
  42a0a0:	2442001c 	addiu	v0,v0,28
  42a0a4:	afa30010 	sw	v1,16(sp)
  42a0a8:	24040003 	li	a0,3
  42a0ac:	8f85802c 	lw	a1,-32724(gp)
  42a0b0:	00000000 	nop
  42a0b4:	24a5b728 	addiu	a1,a1,-18648
  42a0b8:	00403821 	move	a3,v0
  42a0bc:	8f998c48 	lw	t9,-29624(gp)
  42a0c0:	00000000 	nop
  42a0c4:	0320f809 	jalr	t9
  42a0c8:	00000000 	nop
  42a0cc:	8fdc0018 	lw	gp,24(s8)
  42a0d0:	00000000 	nop
			    , "ipsec interfaces %s and %s share same address %s"
			    , v->name, vfp->name, ip_str(&ifp->addr));
			bad = TRUE;
  42a0d4:	24020001 	li	v0,1
  42a0d8:	afc20074 	sw	v0,116(s8)
  42a0dc:	10000025 	b	42a174 <process_raw_ifaces+0x258>
  42a0e0:	00000000 	nop
		    }
		    else
		    {
			v = vfp;	/* current winner */
  42a0e4:	8fc20078 	lw	v0,120(s8)
  42a0e8:	00000000 	nop
  42a0ec:	afc20024 	sw	v0,36(s8)
  42a0f0:	10000020 	b	42a174 <process_raw_ifaces+0x258>
  42a0f4:	00000000 	nop
		    }
		}
		else
		{
		    /* ugh: a second real interface with the same IP address
		     * "after" allows us to avoid double reporting.
		     */
		    if (after)
  42a0f8:	8fc20070 	lw	v0,112(s8)
  42a0fc:	00000000 	nop
  42a100:	1040001a 	beqz	v0,42a16c <process_raw_ifaces+0x250>
  42a104:	00000000 	nop
		    {
			loglog(RC_LOG_SERIOUS
  42a108:	8fc40020 	lw	a0,32(s8)
  42a10c:	8f998100 	lw	t9,-32512(gp)
  42a110:	00000000 	nop
  42a114:	0320f809 	jalr	t9
  42a118:	00000000 	nop
  42a11c:	8fdc0018 	lw	gp,24(s8)
  42a120:	00401821 	move	v1,v0
  42a124:	8fc20020 	lw	v0,32(s8)
  42a128:	00000000 	nop
  42a12c:	2446001c 	addiu	a2,v0,28
  42a130:	8fc20078 	lw	v0,120(s8)
  42a134:	00000000 	nop
  42a138:	2442001c 	addiu	v0,v0,28
  42a13c:	afa30010 	sw	v1,16(sp)
  42a140:	24040003 	li	a0,3
  42a144:	8f85802c 	lw	a1,-32724(gp)
  42a148:	00000000 	nop
  42a14c:	24a5b75c 	addiu	a1,a1,-18596
  42a150:	00403821 	move	a3,v0
  42a154:	8f998c48 	lw	t9,-29624(gp)
  42a158:	00000000 	nop
  42a15c:	0320f809 	jalr	t9
  42a160:	00000000 	nop
  42a164:	8fdc0018 	lw	gp,24(s8)
  42a168:	00000000 	nop
			    , "IP interfaces %s and %s share address %s!"
			    , ifp->name, vfp->name, ip_str(&ifp->addr));
		    }
		    bad = TRUE;
  42a16c:	24020001 	li	v0,1
  42a170:	afc20074 	sw	v0,116(s8)
  42a174:	8fc20078 	lw	v0,120(s8)
  42a178:	00000000 	nop
  42a17c:	8c420040 	lw	v0,64(v0)
  42a180:	00000000 	nop
  42a184:	afc20078 	sw	v0,120(s8)
  42a188:	1000ff8e 	b	429fc4 <process_raw_ifaces+0xa8>
  42a18c:	00000000 	nop
		}
	    }
	}

	if (bad)
  42a190:	8fc20074 	lw	v0,116(s8)
  42a194:	00000000 	nop
  42a198:	10400003 	beqz	v0,42a1a8 <process_raw_ifaces+0x28c>
  42a19c:	00000000 	nop
	    continue;
  42a1a0:	10000254 	b	42aaf4 <process_raw_ifaces+0xbd8>
  42a1a4:	00000000 	nop

	/* what if we didn't find a virtual interface? */
	if (v == NULL)
  42a1a8:	8fc20024 	lw	v0,36(s8)
  42a1ac:	00000000 	nop
  42a1b0:	1440004a 	bnez	v0,42a2dc <process_raw_ifaces+0x3c0>
  42a1b4:	00000000 	nop
	{
	    if (no_klips)
  42a1b8:	8f8286ec 	lw	v0,-30996(gp)
  42a1bc:	00000000 	nop
  42a1c0:	8c420000 	lw	v0,0(v0)
  42a1c4:	00000000 	nop
  42a1c8:	10400027 	beqz	v0,42a268 <process_raw_ifaces+0x34c>
  42a1cc:	00000000 	nop
	    {
		/* kludge for testing: invent a virtual device */
		static const char fvp[] = "virtual";
		fake_v = *ifp;
  42a1d0:	8fc20020 	lw	v0,32(s8)
  42a1d4:	27c40028 	addiu	a0,s8,40
  42a1d8:	00402821 	move	a1,v0
  42a1dc:	24060044 	li	a2,68
  42a1e0:	8f998a30 	lw	t9,-30160(gp)
  42a1e4:	00000000 	nop
  42a1e8:	0320f809 	jalr	t9
  42a1ec:	00000000 	nop
  42a1f0:	8fdc0018 	lw	gp,24(s8)
  42a1f4:	00000000 	nop
		passert(sizeof(fake_v.name) > sizeof(fvp));
		strcpy(fake_v.name, fvp);
  42a1f8:	27c20028 	addiu	v0,s8,40
  42a1fc:	2442001c 	addiu	v0,v0,28
  42a200:	00402021 	move	a0,v0
  42a204:	8f85802c 	lw	a1,-32724(gp)
  42a208:	00000000 	nop
  42a20c:	24a5b718 	addiu	a1,a1,-18664
  42a210:	8f998c58 	lw	t9,-29608(gp)
  42a214:	00000000 	nop
  42a218:	0320f809 	jalr	t9
  42a21c:	00000000 	nop
  42a220:	8fdc0018 	lw	gp,24(s8)
  42a224:	00000000 	nop
		addrtot(&ifp->addr, 0, fake_v.name + sizeof(fvp) - 1
  42a228:	27c20028 	addiu	v0,s8,40
  42a22c:	24420023 	addiu	v0,v0,35
  42a230:	8fc40020 	lw	a0,32(s8)
  42a234:	00002821 	move	a1,zero
  42a238:	00403021 	move	a2,v0
  42a23c:	2407001d 	li	a3,29
  42a240:	8f998b50 	lw	t9,-29872(gp)
  42a244:	00000000 	nop
  42a248:	0320f809 	jalr	t9
  42a24c:	00000000 	nop
  42a250:	8fdc0018 	lw	gp,24(s8)
  42a254:	00000000 	nop
		    , sizeof(fake_v.name) - (sizeof(fvp) - 1));
		v = &fake_v;
  42a258:	27c20028 	addiu	v0,s8,40
  42a25c:	afc20024 	sw	v0,36(s8)
  42a260:	1000001e 	b	42a2dc <process_raw_ifaces+0x3c0>
  42a264:	00000000 	nop
	    }
	    else
	    {
		DBG(DBG_CONTROL,
  42a268:	8f8284f8 	lw	v0,-31496(gp)
  42a26c:	00000000 	nop
  42a270:	8c420000 	lw	v0,0(v0)
  42a274:	00000000 	nop
  42a278:	30420010 	andi	v0,v0,0x10
  42a27c:	1040021d 	beqz	v0,42aaf4 <process_raw_ifaces+0xbd8>
  42a280:	00000000 	nop
  42a284:	8fc40020 	lw	a0,32(s8)
  42a288:	8f998100 	lw	t9,-32512(gp)
  42a28c:	00000000 	nop
  42a290:	0320f809 	jalr	t9
  42a294:	00000000 	nop
  42a298:	8fdc0018 	lw	gp,24(s8)
  42a29c:	8fc30020 	lw	v1,32(s8)
  42a2a0:	00000000 	nop
  42a2a4:	2463001c 	addiu	v1,v1,28
  42a2a8:	8f84802c 	lw	a0,-32724(gp)
  42a2ac:	00000000 	nop
  42a2b0:	2484b788 	addiu	a0,a0,-18552
  42a2b4:	00602821 	move	a1,v1
  42a2b8:	00403021 	move	a2,v0
  42a2bc:	8f9983b8 	lw	t9,-31816(gp)
  42a2c0:	00000000 	nop
  42a2c4:	0320f809 	jalr	t9
  42a2c8:	00000000 	nop
  42a2cc:	8fdc0018 	lw	gp,24(s8)
  42a2d0:	00000000 	nop
			DBG_log("IP interface %s %s has no matching ipsec* interface -- ignored"
			    , ifp->name, ip_str(&ifp->addr)));
		continue;
  42a2d4:	10000207 	b	42aaf4 <process_raw_ifaces+0xbd8>
  42a2d8:	00000000 	nop
	    }
	}

	/* We've got all we need; see if this is a new thing:
	 * search old interfaces list.
	 */
	{
	    struct iface **p = &interfaces;
  42a2dc:	8f828c10 	lw	v0,-29680(gp)
  42a2e0:	00000000 	nop
  42a2e4:	afc2007c 	sw	v0,124(s8)

	    for (;;)
	    {
		struct iface *q = *p;
  42a2e8:	8fc2007c 	lw	v0,124(s8)
  42a2ec:	00000000 	nop
  42a2f0:	8c420000 	lw	v0,0(v0)
  42a2f4:	00000000 	nop
  42a2f8:	afc20080 	sw	v0,128(s8)

		/* search is over if at end of list */
		if (q == NULL)
  42a2fc:	8fc20080 	lw	v0,128(s8)
  42a300:	00000000 	nop
  42a304:	1440018b 	bnez	v0,42a934 <process_raw_ifaces+0xa18>
  42a308:	00000000 	nop
		{
		    /* matches nothing -- create a new entry */
		    int fd = create_socket(ifp, v->name, pluto_port);
  42a30c:	8fc20024 	lw	v0,36(s8)
  42a310:	00000000 	nop
  42a314:	2442001c 	addiu	v0,v0,28
  42a318:	8f8384b0 	lw	v1,-31568(gp)
  42a31c:	00000000 	nop
  42a320:	94630000 	lhu	v1,0(v1)
  42a324:	8fc40020 	lw	a0,32(s8)
  42a328:	00402821 	move	a1,v0
  42a32c:	00603021 	move	a2,v1
  42a330:	8f998030 	lw	t9,-32720(gp)
  42a334:	00000000 	nop
  42a338:	27399a5c 	addiu	t9,t9,-26020
  42a33c:	00000000 	nop
  42a340:	0320f809 	jalr	t9
  42a344:	00000000 	nop
  42a348:	8fdc0018 	lw	gp,24(s8)
  42a34c:	afc20084 	sw	v0,132(s8)
		    if (fd < 0)
  42a350:	8fc20084 	lw	v0,132(s8)
  42a354:	00000000 	nop
  42a358:	0441000f 	bgez	v0,42a398 <process_raw_ifaces+0x47c>
  42a35c:	00000000 	nop

#ifdef NAT_TRAVERSAL
		    if (nat_traversal_enabled) {
  42a360:	8f82837c 	lw	v0,-31876(gp)
  42a364:	00000000 	nop
  42a368:	8c420000 	lw	v0,0(v0)
  42a36c:	00000000 	nop
  42a370:	10400009 	beqz	v0,42a398 <process_raw_ifaces+0x47c>
  42a374:	00000000 	nop
			nat_traversal_espinudp_socket(fd,
  42a378:	8fc40084 	lw	a0,132(s8)
  42a37c:	24050001 	li	a1,1
  42a380:	8f998318 	lw	t9,-31976(gp)
  42a384:	00000000 	nop
  42a388:	0320f809 	jalr	t9
  42a38c:	00000000 	nop
  42a390:	8fdc0018 	lw	gp,24(s8)
  42a394:	00000000 	nop
			    ESPINUDP_WITH_NON_IKE);
		    }
#endif

		    q = alloc_thing(struct iface, "struct iface");
  42a398:	24040034 	li	a0,52
  42a39c:	8f85802c 	lw	a1,-32724(gp)
  42a3a0:	00000000 	nop
  42a3a4:	24a5b7c8 	addiu	a1,a1,-18488
  42a3a8:	8f998084 	lw	t9,-32636(gp)
  42a3ac:	00000000 	nop
  42a3b0:	0320f809 	jalr	t9
  42a3b4:	00000000 	nop
  42a3b8:	8fdc0018 	lw	gp,24(s8)
  42a3bc:	afc20080 	sw	v0,128(s8)
		    q->rname = clone_str(ifp->name, "real device name");
  42a3c0:	8fc20080 	lw	v0,128(s8)
  42a3c4:	00000000 	nop
  42a3c8:	afc20088 	sw	v0,136(s8)
  42a3cc:	8fc30020 	lw	v1,32(s8)
  42a3d0:	2402ffe4 	li	v0,-28
  42a3d4:	1062001b 	beq	v1,v0,42a444 <process_raw_ifaces+0x528>
  42a3d8:	00000000 	nop
  42a3dc:	8fc20020 	lw	v0,32(s8)
  42a3e0:	00000000 	nop
  42a3e4:	2442001c 	addiu	v0,v0,28
  42a3e8:	00402021 	move	a0,v0
  42a3ec:	8f998188 	lw	t9,-32376(gp)
  42a3f0:	00000000 	nop
  42a3f4:	0320f809 	jalr	t9
  42a3f8:	00000000 	nop
  42a3fc:	8fdc0018 	lw	gp,24(s8)
  42a400:	24430001 	addiu	v1,v0,1
  42a404:	8fc20020 	lw	v0,32(s8)
  42a408:	00000000 	nop
  42a40c:	2442001c 	addiu	v0,v0,28
  42a410:	00402021 	move	a0,v0
  42a414:	00602821 	move	a1,v1
  42a418:	8f86802c 	lw	a2,-32724(gp)
  42a41c:	00000000 	nop
  42a420:	24c6b7d8 	addiu	a2,a2,-18472
  42a424:	8f998c04 	lw	t9,-29692(gp)
  42a428:	00000000 	nop
  42a42c:	0320f809 	jalr	t9
  42a430:	00000000 	nop
  42a434:	8fdc0018 	lw	gp,24(s8)
  42a438:	afc2008c 	sw	v0,140(s8)
  42a43c:	10000002 	b	42a448 <process_raw_ifaces+0x52c>
  42a440:	00000000 	nop
  42a444:	afc0008c 	sw	zero,140(s8)
  42a448:	8fc2008c 	lw	v0,140(s8)
  42a44c:	8fc30088 	lw	v1,136(s8)
  42a450:	00000000 	nop
  42a454:	ac620004 	sw	v0,4(v1)
		    q->vname = clone_str(v->name, "virtual device name");
  42a458:	8fc30080 	lw	v1,128(s8)
  42a45c:	00000000 	nop
  42a460:	afc30090 	sw	v1,144(s8)
  42a464:	8fc30024 	lw	v1,36(s8)
  42a468:	2402ffe4 	li	v0,-28
  42a46c:	1062001b 	beq	v1,v0,42a4dc <process_raw_ifaces+0x5c0>
  42a470:	00000000 	nop
  42a474:	8fc20024 	lw	v0,36(s8)
  42a478:	00000000 	nop
  42a47c:	2442001c 	addiu	v0,v0,28
  42a480:	00402021 	move	a0,v0
  42a484:	8f998188 	lw	t9,-32376(gp)
  42a488:	00000000 	nop
  42a48c:	0320f809 	jalr	t9
  42a490:	00000000 	nop
  42a494:	8fdc0018 	lw	gp,24(s8)
  42a498:	24430001 	addiu	v1,v0,1
  42a49c:	8fc20024 	lw	v0,36(s8)
  42a4a0:	00000000 	nop
  42a4a4:	2442001c 	addiu	v0,v0,28
  42a4a8:	00402021 	move	a0,v0
  42a4ac:	00602821 	move	a1,v1
  42a4b0:	8f86802c 	lw	a2,-32724(gp)
  42a4b4:	00000000 	nop
  42a4b8:	24c6b7ec 	addiu	a2,a2,-18452
  42a4bc:	8f998c04 	lw	t9,-29692(gp)
  42a4c0:	00000000 	nop
  42a4c4:	0320f809 	jalr	t9
  42a4c8:	00000000 	nop
  42a4cc:	8fdc0018 	lw	gp,24(s8)
  42a4d0:	afc20094 	sw	v0,148(s8)
  42a4d4:	10000002 	b	42a4e0 <process_raw_ifaces+0x5c4>
  42a4d8:	00000000 	nop
  42a4dc:	afc00094 	sw	zero,148(s8)
  42a4e0:	8fc30094 	lw	v1,148(s8)
  42a4e4:	8fc20090 	lw	v0,144(s8)
  42a4e8:	00000000 	nop
  42a4ec:	ac430000 	sw	v1,0(v0)
		    q->addr = ifp->addr;
  42a4f0:	8fc40080 	lw	a0,128(s8)
  42a4f4:	8fc30020 	lw	v1,32(s8)
  42a4f8:	00000000 	nop
  42a4fc:	8c620000 	lw	v0,0(v1)
  42a500:	00000000 	nop
  42a504:	ac820008 	sw	v0,8(a0)
  42a508:	8c620004 	lw	v0,4(v1)
  42a50c:	00000000 	nop
  42a510:	ac82000c 	sw	v0,12(a0)
  42a514:	8c620008 	lw	v0,8(v1)
  42a518:	00000000 	nop
  42a51c:	ac820010 	sw	v0,16(a0)
  42a520:	8c62000c 	lw	v0,12(v1)
  42a524:	00000000 	nop
  42a528:	ac820014 	sw	v0,20(a0)
  42a52c:	8c620010 	lw	v0,16(v1)
  42a530:	00000000 	nop
  42a534:	ac820018 	sw	v0,24(a0)
  42a538:	8c620014 	lw	v0,20(v1)
  42a53c:	00000000 	nop
  42a540:	ac82001c 	sw	v0,28(a0)
  42a544:	8c620018 	lw	v0,24(v1)
  42a548:	00000000 	nop
  42a54c:	ac820020 	sw	v0,32(a0)
		    q->fd = fd;
  42a550:	8fc30084 	lw	v1,132(s8)
  42a554:	8fc20080 	lw	v0,128(s8)
  42a558:	00000000 	nop
  42a55c:	ac430024 	sw	v1,36(v0)
		    q->next = interfaces;
  42a560:	8f838c10 	lw	v1,-29680(gp)
  42a564:	00000000 	nop
  42a568:	8c630000 	lw	v1,0(v1)
  42a56c:	8fc20080 	lw	v0,128(s8)
  42a570:	00000000 	nop
  42a574:	ac430028 	sw	v1,40(v0)
		    q->change = IFN_ADD;
  42a578:	8fc20080 	lw	v0,128(s8)
  42a57c:	00000000 	nop
  42a580:	ac400030 	sw	zero,48(v0)
		    interfaces = q;
  42a584:	8fc20080 	lw	v0,128(s8)
  42a588:	8f818c10 	lw	at,-29680(gp)
  42a58c:	00000000 	nop
  42a590:	ac220000 	sw	v0,0(at)
		    plog("adding interface %s/%s %s"
  42a594:	8fc20080 	lw	v0,128(s8)
  42a598:	00000000 	nop
  42a59c:	24420008 	addiu	v0,v0,8
  42a5a0:	00402021 	move	a0,v0
  42a5a4:	8f998100 	lw	t9,-32512(gp)
  42a5a8:	00000000 	nop
  42a5ac:	0320f809 	jalr	t9
  42a5b0:	00000000 	nop
  42a5b4:	8fdc0018 	lw	gp,24(s8)
  42a5b8:	00401821 	move	v1,v0
  42a5bc:	8f84802c 	lw	a0,-32724(gp)
  42a5c0:	00000000 	nop
  42a5c4:	2484b800 	addiu	a0,a0,-18432
  42a5c8:	8fc20080 	lw	v0,128(s8)
  42a5cc:	00000000 	nop
  42a5d0:	8c450000 	lw	a1,0(v0)
  42a5d4:	8fc20080 	lw	v0,128(s8)
  42a5d8:	00000000 	nop
  42a5dc:	8c460004 	lw	a2,4(v0)
  42a5e0:	00603821 	move	a3,v1
  42a5e4:	8f998abc 	lw	t9,-30020(gp)
  42a5e8:	00000000 	nop
  42a5ec:	0320f809 	jalr	t9
  42a5f0:	00000000 	nop
  42a5f4:	8fdc0018 	lw	gp,24(s8)
  42a5f8:	00000000 	nop
			, q->vname, q->rname, ip_str(&q->addr));

#ifdef NAT_TRAVERSAL
		    if (nat_traversal_support_port_floating) {
  42a5fc:	8f8282b8 	lw	v0,-32072(gp)
  42a600:	00000000 	nop
  42a604:	8c420000 	lw	v0,0(v0)
  42a608:	00000000 	nop
  42a60c:	10400139 	beqz	v0,42aaf4 <process_raw_ifaces+0xbd8>
  42a610:	00000000 	nop
			fd = create_socket(ifp, v->name, NAT_T_IKE_FLOAT_PORT);
  42a614:	8fc20024 	lw	v0,36(s8)
  42a618:	00000000 	nop
  42a61c:	2442001c 	addiu	v0,v0,28
  42a620:	8fc40020 	lw	a0,32(s8)
  42a624:	00402821 	move	a1,v0
  42a628:	24061194 	li	a2,4500
  42a62c:	8f998030 	lw	t9,-32720(gp)
  42a630:	00000000 	nop
  42a634:	27399a5c 	addiu	t9,t9,-26020
  42a638:	00000000 	nop
  42a63c:	0320f809 	jalr	t9
  42a640:	00000000 	nop
  42a644:	8fdc0018 	lw	gp,24(s8)
  42a648:	afc20084 	sw	v0,132(s8)
			if (fd < 0)
  42a64c:	8fc20084 	lw	v0,132(s8)
  42a650:	00000000 	nop
  42a654:	04410003 	bgez	v0,42a664 <process_raw_ifaces+0x748>
  42a658:	00000000 	nop
			    break;
  42a65c:	10000125 	b	42aaf4 <process_raw_ifaces+0xbd8>
  42a660:	00000000 	nop
			nat_traversal_espinudp_socket(fd,
  42a664:	8fc40084 	lw	a0,132(s8)
  42a668:	24050002 	li	a1,2
  42a66c:	8f998318 	lw	t9,-31976(gp)
  42a670:	00000000 	nop
  42a674:	0320f809 	jalr	t9
  42a678:	00000000 	nop
  42a67c:	8fdc0018 	lw	gp,24(s8)
  42a680:	00000000 	nop
			    ESPINUDP_WITH_NON_ESP);
			q = alloc_thing(struct iface, "struct iface");
  42a684:	24040034 	li	a0,52
  42a688:	8f85802c 	lw	a1,-32724(gp)
  42a68c:	00000000 	nop
  42a690:	24a5b7c8 	addiu	a1,a1,-18488
  42a694:	8f998084 	lw	t9,-32636(gp)
  42a698:	00000000 	nop
  42a69c:	0320f809 	jalr	t9
  42a6a0:	00000000 	nop
  42a6a4:	8fdc0018 	lw	gp,24(s8)
  42a6a8:	afc20080 	sw	v0,128(s8)
			q->rname = clone_str(ifp->name, "real device name");
  42a6ac:	8fc20080 	lw	v0,128(s8)
  42a6b0:	00000000 	nop
  42a6b4:	afc200a0 	sw	v0,160(s8)
  42a6b8:	8fc30020 	lw	v1,32(s8)
  42a6bc:	2402ffe4 	li	v0,-28
  42a6c0:	1062001b 	beq	v1,v0,42a730 <process_raw_ifaces+0x814>
  42a6c4:	00000000 	nop
  42a6c8:	8fc20020 	lw	v0,32(s8)
  42a6cc:	00000000 	nop
  42a6d0:	2442001c 	addiu	v0,v0,28
  42a6d4:	00402021 	move	a0,v0
  42a6d8:	8f998188 	lw	t9,-32376(gp)
  42a6dc:	00000000 	nop
  42a6e0:	0320f809 	jalr	t9
  42a6e4:	00000000 	nop
  42a6e8:	8fdc0018 	lw	gp,24(s8)
  42a6ec:	24430001 	addiu	v1,v0,1
  42a6f0:	8fc20020 	lw	v0,32(s8)
  42a6f4:	00000000 	nop
  42a6f8:	2442001c 	addiu	v0,v0,28
  42a6fc:	00402021 	move	a0,v0
  42a700:	00602821 	move	a1,v1
  42a704:	8f86802c 	lw	a2,-32724(gp)
  42a708:	00000000 	nop
  42a70c:	24c6b7d8 	addiu	a2,a2,-18472
  42a710:	8f998c04 	lw	t9,-29692(gp)
  42a714:	00000000 	nop
  42a718:	0320f809 	jalr	t9
  42a71c:	00000000 	nop
  42a720:	8fdc0018 	lw	gp,24(s8)
  42a724:	afc200a4 	sw	v0,164(s8)
  42a728:	10000002 	b	42a734 <process_raw_ifaces+0x818>
  42a72c:	00000000 	nop
  42a730:	afc000a4 	sw	zero,164(s8)
  42a734:	8fc200a4 	lw	v0,164(s8)
  42a738:	8fc300a0 	lw	v1,160(s8)
  42a73c:	00000000 	nop
  42a740:	ac620004 	sw	v0,4(v1)
			q->vname = clone_str(v->name, "virtual device name");
  42a744:	8fc30080 	lw	v1,128(s8)
  42a748:	00000000 	nop
  42a74c:	afc300a8 	sw	v1,168(s8)
  42a750:	8fc30024 	lw	v1,36(s8)
  42a754:	2402ffe4 	li	v0,-28
  42a758:	1062001b 	beq	v1,v0,42a7c8 <process_raw_ifaces+0x8ac>
  42a75c:	00000000 	nop
  42a760:	8fc20024 	lw	v0,36(s8)
  42a764:	00000000 	nop
  42a768:	2442001c 	addiu	v0,v0,28
  42a76c:	00402021 	move	a0,v0
  42a770:	8f998188 	lw	t9,-32376(gp)
  42a774:	00000000 	nop
  42a778:	0320f809 	jalr	t9
  42a77c:	00000000 	nop
  42a780:	8fdc0018 	lw	gp,24(s8)
  42a784:	24430001 	addiu	v1,v0,1
  42a788:	8fc20024 	lw	v0,36(s8)
  42a78c:	00000000 	nop
  42a790:	2442001c 	addiu	v0,v0,28
  42a794:	00402021 	move	a0,v0
  42a798:	00602821 	move	a1,v1
  42a79c:	8f86802c 	lw	a2,-32724(gp)
  42a7a0:	00000000 	nop
  42a7a4:	24c6b7ec 	addiu	a2,a2,-18452
  42a7a8:	8f998c04 	lw	t9,-29692(gp)
  42a7ac:	00000000 	nop
  42a7b0:	0320f809 	jalr	t9
  42a7b4:	00000000 	nop
  42a7b8:	8fdc0018 	lw	gp,24(s8)
  42a7bc:	afc200ac 	sw	v0,172(s8)
  42a7c0:	10000002 	b	42a7cc <process_raw_ifaces+0x8b0>
  42a7c4:	00000000 	nop
  42a7c8:	afc000ac 	sw	zero,172(s8)
  42a7cc:	8fc300ac 	lw	v1,172(s8)
  42a7d0:	8fc200a8 	lw	v0,168(s8)
  42a7d4:	00000000 	nop
  42a7d8:	ac430000 	sw	v1,0(v0)
			q->addr = ifp->addr;
  42a7dc:	8fc40080 	lw	a0,128(s8)
  42a7e0:	8fc30020 	lw	v1,32(s8)
  42a7e4:	00000000 	nop
  42a7e8:	8c620000 	lw	v0,0(v1)
  42a7ec:	00000000 	nop
  42a7f0:	ac820008 	sw	v0,8(a0)
  42a7f4:	8c620004 	lw	v0,4(v1)
  42a7f8:	00000000 	nop
  42a7fc:	ac82000c 	sw	v0,12(a0)
  42a800:	8c620008 	lw	v0,8(v1)
  42a804:	00000000 	nop
  42a808:	ac820010 	sw	v0,16(a0)
  42a80c:	8c62000c 	lw	v0,12(v1)
  42a810:	00000000 	nop
  42a814:	ac820014 	sw	v0,20(a0)
  42a818:	8c620010 	lw	v0,16(v1)
  42a81c:	00000000 	nop
  42a820:	ac820018 	sw	v0,24(a0)
  42a824:	8c620014 	lw	v0,20(v1)
  42a828:	00000000 	nop
  42a82c:	ac82001c 	sw	v0,28(a0)
  42a830:	8c620018 	lw	v0,24(v1)
  42a834:	00000000 	nop
  42a838:	ac820020 	sw	v0,32(a0)
			setportof(htons(NAT_T_IKE_FLOAT_PORT), &q->addr);
  42a83c:	8fc20080 	lw	v0,128(s8)
  42a840:	00000000 	nop
  42a844:	24420008 	addiu	v0,v0,8
  42a848:	24041194 	li	a0,4500
  42a84c:	00402821 	move	a1,v0
  42a850:	8f9988e0 	lw	t9,-30496(gp)
  42a854:	00000000 	nop
  42a858:	0320f809 	jalr	t9
  42a85c:	00000000 	nop
  42a860:	8fdc0018 	lw	gp,24(s8)
  42a864:	00000000 	nop
			q->fd = fd;
  42a868:	8fc30084 	lw	v1,132(s8)
  42a86c:	8fc20080 	lw	v0,128(s8)
  42a870:	00000000 	nop
  42a874:	ac430024 	sw	v1,36(v0)
			q->next = interfaces;
  42a878:	8f838c10 	lw	v1,-29680(gp)
  42a87c:	00000000 	nop
  42a880:	8c630000 	lw	v1,0(v1)
  42a884:	8fc20080 	lw	v0,128(s8)
  42a888:	00000000 	nop
  42a88c:	ac430028 	sw	v1,40(v0)
			q->change = IFN_ADD;
  42a890:	8fc20080 	lw	v0,128(s8)
  42a894:	00000000 	nop
  42a898:	ac400030 	sw	zero,48(v0)
			q->ike_float = TRUE;
  42a89c:	24030001 	li	v1,1
  42a8a0:	8fc20080 	lw	v0,128(s8)
  42a8a4:	00000000 	nop
  42a8a8:	ac43002c 	sw	v1,44(v0)
			interfaces = q;
  42a8ac:	8fc20080 	lw	v0,128(s8)
  42a8b0:	8f818c10 	lw	at,-29680(gp)
  42a8b4:	00000000 	nop
  42a8b8:	ac220000 	sw	v0,0(at)
			plog("adding interface %s/%s %s:%d",
  42a8bc:	8fc20080 	lw	v0,128(s8)
  42a8c0:	00000000 	nop
  42a8c4:	24420008 	addiu	v0,v0,8
  42a8c8:	00402021 	move	a0,v0
  42a8cc:	8f998100 	lw	t9,-32512(gp)
  42a8d0:	00000000 	nop
  42a8d4:	0320f809 	jalr	t9
  42a8d8:	00000000 	nop
  42a8dc:	8fdc0018 	lw	gp,24(s8)
  42a8e0:	00401821 	move	v1,v0
  42a8e4:	24021194 	li	v0,4500
  42a8e8:	afa20010 	sw	v0,16(sp)
  42a8ec:	8f84802c 	lw	a0,-32724(gp)
  42a8f0:	00000000 	nop
  42a8f4:	2484b81c 	addiu	a0,a0,-18404
  42a8f8:	8fc20080 	lw	v0,128(s8)
  42a8fc:	00000000 	nop
  42a900:	8c450000 	lw	a1,0(v0)
  42a904:	8fc20080 	lw	v0,128(s8)
  42a908:	00000000 	nop
  42a90c:	8c460004 	lw	a2,4(v0)
  42a910:	00603821 	move	a3,v1
  42a914:	8f998abc 	lw	t9,-30020(gp)
  42a918:	00000000 	nop
  42a91c:	0320f809 	jalr	t9
  42a920:	00000000 	nop
  42a924:	8fdc0018 	lw	gp,24(s8)
  42a928:	00000000 	nop
			    q->vname, q->rname, ip_str(&q->addr), NAT_T_IKE_FLOAT_PORT);
		    }
#endif
		    break;
  42a92c:	10000071 	b	42aaf4 <process_raw_ifaces+0xbd8>
  42a930:	00000000 	nop
		}

		/* search over if matching old entry found */
		if (streq(q->rname, ifp->name)
		&& streq(q->vname, v->name)
		&& sameaddr(&q->addr, &ifp->addr))
  42a934:	8fc20020 	lw	v0,32(s8)
  42a938:	00000000 	nop
  42a93c:	2443001c 	addiu	v1,v0,28
  42a940:	8fc20080 	lw	v0,128(s8)
  42a944:	00000000 	nop
  42a948:	8c440004 	lw	a0,4(v0)
  42a94c:	00602821 	move	a1,v1
  42a950:	8f998428 	lw	t9,-31704(gp)
  42a954:	00000000 	nop
  42a958:	0320f809 	jalr	t9
  42a95c:	00000000 	nop
  42a960:	8fdc0018 	lw	gp,24(s8)
  42a964:	1440005d 	bnez	v0,42aadc <process_raw_ifaces+0xbc0>
  42a968:	00000000 	nop
  42a96c:	8fc20024 	lw	v0,36(s8)
  42a970:	00000000 	nop
  42a974:	2443001c 	addiu	v1,v0,28
  42a978:	8fc20080 	lw	v0,128(s8)
  42a97c:	00000000 	nop
  42a980:	8c440000 	lw	a0,0(v0)
  42a984:	00602821 	move	a1,v1
  42a988:	8f998428 	lw	t9,-31704(gp)
  42a98c:	00000000 	nop
  42a990:	0320f809 	jalr	t9
  42a994:	00000000 	nop
  42a998:	8fdc0018 	lw	gp,24(s8)
  42a99c:	1440004f 	bnez	v0,42aadc <process_raw_ifaces+0xbc0>
  42a9a0:	00000000 	nop
  42a9a4:	8fc20080 	lw	v0,128(s8)
  42a9a8:	00000000 	nop
  42a9ac:	24420008 	addiu	v0,v0,8
  42a9b0:	00402021 	move	a0,v0
  42a9b4:	8fc50020 	lw	a1,32(s8)
  42a9b8:	8f998928 	lw	t9,-30424(gp)
  42a9bc:	00000000 	nop
  42a9c0:	0320f809 	jalr	t9
  42a9c4:	00000000 	nop
  42a9c8:	8fdc0018 	lw	gp,24(s8)
  42a9cc:	10400043 	beqz	v0,42aadc <process_raw_ifaces+0xbc0>
  42a9d0:	00000000 	nop
		{
		    /* matches -- rejuvinate old entry */
		    q->change = IFN_KEEP;
  42a9d4:	24030001 	li	v1,1
  42a9d8:	8fc20080 	lw	v0,128(s8)
  42a9dc:	00000000 	nop
  42a9e0:	ac430030 	sw	v1,48(v0)
#ifdef NAT_TRAVERSAL
		    /* look for other interfaces to keep (due to NAT-T) */
		    for (q = q->next ; q ; q = q->next) {
  42a9e4:	8fc20080 	lw	v0,128(s8)
  42a9e8:	00000000 	nop
  42a9ec:	8c420028 	lw	v0,40(v0)
  42a9f0:	00000000 	nop
  42a9f4:	afc20080 	sw	v0,128(s8)
  42a9f8:	8fc20080 	lw	v0,128(s8)
  42a9fc:	00000000 	nop
  42aa00:	14400003 	bnez	v0,42aa10 <process_raw_ifaces+0xaf4>
  42aa04:	00000000 	nop
  42aa08:	1000003a 	b	42aaf4 <process_raw_ifaces+0xbd8>
  42aa0c:	00000000 	nop
			if (streq(q->rname, ifp->name)
			    && streq(q->vname, v->name)
			    && sameaddr(&q->addr, &ifp->addr)) {
  42aa10:	8fc20020 	lw	v0,32(s8)
  42aa14:	00000000 	nop
  42aa18:	2443001c 	addiu	v1,v0,28
  42aa1c:	8fc20080 	lw	v0,128(s8)
  42aa20:	00000000 	nop
  42aa24:	8c440004 	lw	a0,4(v0)
  42aa28:	00602821 	move	a1,v1
  42aa2c:	8f998428 	lw	t9,-31704(gp)
  42aa30:	00000000 	nop
  42aa34:	0320f809 	jalr	t9
  42aa38:	00000000 	nop
  42aa3c:	8fdc0018 	lw	gp,24(s8)
  42aa40:	1440001f 	bnez	v0,42aac0 <process_raw_ifaces+0xba4>
  42aa44:	00000000 	nop
  42aa48:	8fc20024 	lw	v0,36(s8)
  42aa4c:	00000000 	nop
  42aa50:	2443001c 	addiu	v1,v0,28
  42aa54:	8fc20080 	lw	v0,128(s8)
  42aa58:	00000000 	nop
  42aa5c:	8c440000 	lw	a0,0(v0)
  42aa60:	00602821 	move	a1,v1
  42aa64:	8f998428 	lw	t9,-31704(gp)
  42aa68:	00000000 	nop
  42aa6c:	0320f809 	jalr	t9
  42aa70:	00000000 	nop
  42aa74:	8fdc0018 	lw	gp,24(s8)
  42aa78:	14400011 	bnez	v0,42aac0 <process_raw_ifaces+0xba4>
  42aa7c:	00000000 	nop
  42aa80:	8fc20080 	lw	v0,128(s8)
  42aa84:	00000000 	nop
  42aa88:	24420008 	addiu	v0,v0,8
  42aa8c:	00402021 	move	a0,v0
  42aa90:	8fc50020 	lw	a1,32(s8)
  42aa94:	8f998928 	lw	t9,-30424(gp)
  42aa98:	00000000 	nop
  42aa9c:	0320f809 	jalr	t9
  42aaa0:	00000000 	nop
  42aaa4:	8fdc0018 	lw	gp,24(s8)
  42aaa8:	10400005 	beqz	v0,42aac0 <process_raw_ifaces+0xba4>
  42aaac:	00000000 	nop
				q->change = IFN_KEEP;
  42aab0:	24030001 	li	v1,1
  42aab4:	8fc20080 	lw	v0,128(s8)
  42aab8:	00000000 	nop
  42aabc:	ac430030 	sw	v1,48(v0)
  42aac0:	8fc20080 	lw	v0,128(s8)
  42aac4:	00000000 	nop
  42aac8:	8c420028 	lw	v0,40(v0)
  42aacc:	00000000 	nop
  42aad0:	afc20080 	sw	v0,128(s8)
  42aad4:	1000ffc8 	b	42a9f8 <process_raw_ifaces+0xadc>
  42aad8:	00000000 	nop
			    }
		    }
#endif             
                    break;
                }
		/* try again */
		p = &q->next;
  42aadc:	8fc20080 	lw	v0,128(s8)
  42aae0:	00000000 	nop
  42aae4:	24420028 	addiu	v0,v0,40
  42aae8:	afc2007c 	sw	v0,124(s8)
  42aaec:	1000fdfe 	b	42a2e8 <process_raw_ifaces+0x3cc>
  42aaf0:	00000000 	nop
  42aaf4:	8fc20020 	lw	v0,32(s8)
  42aaf8:	00000000 	nop
  42aafc:	8c420040 	lw	v0,64(v0)
  42ab00:	00000000 	nop
  42ab04:	afc20020 	sw	v0,32(s8)
  42ab08:	1000fd11 	b	429f50 <process_raw_ifaces+0x34>
  42ab0c:	00000000 	nop
  42ab10:	00000000 	nop
	    } /* for (;;) */
	}
    }

    /* delete the raw interfaces list */
    while (rifaces != NULL)
  42ab14:	8fc200c8 	lw	v0,200(s8)
  42ab18:	00000000 	nop
  42ab1c:	14400003 	bnez	v0,42ab2c <process_raw_ifaces+0xc10>
  42ab20:	00000000 	nop
  42ab24:	10000011 	b	42ab6c <process_raw_ifaces+0xc50>
  42ab28:	00000000 	nop
    {
	struct raw_iface *t = rifaces;
  42ab2c:	8fc200c8 	lw	v0,200(s8)
  42ab30:	00000000 	nop
  42ab34:	afc20084 	sw	v0,132(s8)

	rifaces = t->next;
  42ab38:	8fc20084 	lw	v0,132(s8)
  42ab3c:	00000000 	nop
  42ab40:	8c420040 	lw	v0,64(v0)
  42ab44:	00000000 	nop
  42ab48:	afc200c8 	sw	v0,200(s8)
	pfree(t);
  42ab4c:	8fc40084 	lw	a0,132(s8)
  42ab50:	8f998094 	lw	t9,-32620(gp)
  42ab54:	00000000 	nop
  42ab58:	0320f809 	jalr	t9
  42ab5c:	00000000 	nop
  42ab60:	8fdc0018 	lw	gp,24(s8)
  42ab64:	1000ffeb 	b	42ab14 <process_raw_ifaces+0xbf8>
  42ab68:	00000000 	nop
    }
}
  42ab6c:	03c0e821 	move	sp,s8
  42ab70:	8fbf00c0 	lw	ra,192(sp)
  42ab74:	8fbe00bc 	lw	s8,188(sp)
  42ab78:	27bd00c8 	addiu	sp,sp,200
  42ab7c:	03e00008 	jr	ra
  42ab80:	00000000 	nop

0042ab84 <find_ifaces>:
  42ab84:	3c1c0fbe 	lui	gp,0xfbe
  42ab88:	279c1dec 	addiu	gp,gp,7660
  42ab8c:	0399e021 	addu	gp,gp,t9
  42ab90:	27bdffd8 	addiu	sp,sp,-40
  42ab94:	afbc0010 	sw	gp,16(sp)
  42ab98:	afbf0020 	sw	ra,32(sp)
  42ab9c:	afbe001c 	sw	s8,28(sp)
  42aba0:	afbc0018 	sw	gp,24(sp)
  42aba4:	03a0f021 	move	s8,sp

void
find_ifaces(void)
{
    mark_ifaces_dead();
  42aba8:	8f998030 	lw	t9,-32720(gp)
  42abac:	00000000 	nop
  42abb0:	27398b74 	addiu	t9,t9,-29836
  42abb4:	00000000 	nop
  42abb8:	0320f809 	jalr	t9
  42abbc:	00000000 	nop
  42abc0:	8fdc0010 	lw	gp,16(s8)
  42abc4:	00000000 	nop
    process_raw_ifaces(find_raw_ifaces4());
  42abc8:	8f998030 	lw	t9,-32720(gp)
  42abcc:	00000000 	nop
  42abd0:	27398fd0 	addiu	t9,t9,-28720
  42abd4:	00000000 	nop
  42abd8:	0320f809 	jalr	t9
  42abdc:	00000000 	nop
  42abe0:	8fdc0010 	lw	gp,16(s8)
  42abe4:	00402021 	move	a0,v0
  42abe8:	8f998030 	lw	t9,-32720(gp)
  42abec:	00000000 	nop
  42abf0:	27399f1c 	addiu	t9,t9,-24804
  42abf4:	00000000 	nop
  42abf8:	0320f809 	jalr	t9
  42abfc:	00000000 	nop
  42ac00:	8fdc0010 	lw	gp,16(s8)
  42ac04:	00000000 	nop
    process_raw_ifaces(find_raw_ifaces6());
  42ac08:	8f998030 	lw	t9,-32720(gp)
  42ac0c:	00000000 	nop
  42ac10:	273996e8 	addiu	t9,t9,-26904
  42ac14:	00000000 	nop
  42ac18:	0320f809 	jalr	t9
  42ac1c:	00000000 	nop
  42ac20:	8fdc0010 	lw	gp,16(s8)
  42ac24:	00402021 	move	a0,v0
  42ac28:	8f998030 	lw	t9,-32720(gp)
  42ac2c:	00000000 	nop
  42ac30:	27399f1c 	addiu	t9,t9,-24804
  42ac34:	00000000 	nop
  42ac38:	0320f809 	jalr	t9
  42ac3c:	00000000 	nop
  42ac40:	8fdc0010 	lw	gp,16(s8)
  42ac44:	00000000 	nop

    free_dead_ifaces();	    /* ditch remaining old entries */
  42ac48:	8f998030 	lw	t9,-32720(gp)
  42ac4c:	00000000 	nop
  42ac50:	27398c00 	addiu	t9,t9,-29696
  42ac54:	00000000 	nop
  42ac58:	0320f809 	jalr	t9
  42ac5c:	00000000 	nop
  42ac60:	8fdc0010 	lw	gp,16(s8)
  42ac64:	00000000 	nop

    if (interfaces == NULL)
  42ac68:	8f828c10 	lw	v0,-29680(gp)
  42ac6c:	00000000 	nop
  42ac70:	8c420000 	lw	v0,0(v0)
  42ac74:	00000000 	nop
  42ac78:	1440000b 	bnez	v0,42aca8 <find_ifaces+0x124>
  42ac7c:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "no public interfaces found");
  42ac80:	24040003 	li	a0,3
  42ac84:	8f85802c 	lw	a1,-32724(gp)
  42ac88:	00000000 	nop
  42ac8c:	24a5b83c 	addiu	a1,a1,-18372
  42ac90:	8f998c48 	lw	t9,-29624(gp)
  42ac94:	00000000 	nop
  42ac98:	0320f809 	jalr	t9
  42ac9c:	00000000 	nop
  42aca0:	8fdc0010 	lw	gp,16(s8)
  42aca4:	00000000 	nop
}
  42aca8:	03c0e821 	move	sp,s8
  42acac:	8fbf0020 	lw	ra,32(sp)
  42acb0:	8fbe001c 	lw	s8,28(sp)
  42acb4:	27bd0028 	addiu	sp,sp,40
  42acb8:	03e00008 	jr	ra
  42acbc:	00000000 	nop

0042acc0 <show_ifaces_status>:
  42acc0:	3c1c0fbe 	lui	gp,0xfbe
  42acc4:	279c1cb0 	addiu	gp,gp,7344
  42acc8:	0399e021 	addu	gp,gp,t9
  42accc:	27bdffc8 	addiu	sp,sp,-56
  42acd0:	afbc0018 	sw	gp,24(sp)
  42acd4:	afbf0030 	sw	ra,48(sp)
  42acd8:	afbe002c 	sw	s8,44(sp)
  42acdc:	afbc0028 	sw	gp,40(sp)
  42ace0:	03a0f021 	move	s8,sp

void
show_ifaces_status(void)
{
    struct iface *p;

    for (p = interfaces; p != NULL; p = p->next)
  42ace4:	8f828c10 	lw	v0,-29680(gp)
  42ace8:	00000000 	nop
  42acec:	8c420000 	lw	v0,0(v0)
  42acf0:	00000000 	nop
  42acf4:	afc20020 	sw	v0,32(s8)
  42acf8:	8fc20020 	lw	v0,32(s8)
  42acfc:	00000000 	nop
  42ad00:	14400003 	bnez	v0,42ad10 <show_ifaces_status+0x50>
  42ad04:	00000000 	nop
  42ad08:	10000022 	b	42ad94 <show_ifaces_status+0xd4>
  42ad0c:	00000000 	nop
	whack_log(RC_COMMENT, "interface %s/%s %s"
  42ad10:	8fc20020 	lw	v0,32(s8)
  42ad14:	00000000 	nop
  42ad18:	24420008 	addiu	v0,v0,8
  42ad1c:	00402021 	move	a0,v0
  42ad20:	8f998100 	lw	t9,-32512(gp)
  42ad24:	00000000 	nop
  42ad28:	0320f809 	jalr	t9
  42ad2c:	00000000 	nop
  42ad30:	8fdc0018 	lw	gp,24(s8)
  42ad34:	afa20010 	sw	v0,16(sp)
  42ad38:	00002021 	move	a0,zero
  42ad3c:	8f85802c 	lw	a1,-32724(gp)
  42ad40:	00000000 	nop
  42ad44:	24a5b858 	addiu	a1,a1,-18344
  42ad48:	8fc20020 	lw	v0,32(s8)
  42ad4c:	00000000 	nop
  42ad50:	8c460000 	lw	a2,0(v0)
  42ad54:	8fc20020 	lw	v0,32(s8)
  42ad58:	00000000 	nop
  42ad5c:	8c470004 	lw	a3,4(v0)
  42ad60:	8f9982a8 	lw	t9,-32088(gp)
  42ad64:	00000000 	nop
  42ad68:	0320f809 	jalr	t9
  42ad6c:	00000000 	nop
  42ad70:	8fdc0018 	lw	gp,24(s8)
  42ad74:	00000000 	nop
  42ad78:	8fc20020 	lw	v0,32(s8)
  42ad7c:	00000000 	nop
  42ad80:	8c420028 	lw	v0,40(v0)
  42ad84:	00000000 	nop
  42ad88:	afc20020 	sw	v0,32(s8)
  42ad8c:	1000ffda 	b	42acf8 <show_ifaces_status+0x38>
  42ad90:	00000000 	nop
	    , p->vname, p->rname, ip_str(&p->addr));
}
  42ad94:	03c0e821 	move	sp,s8
  42ad98:	8fbf0030 	lw	ra,48(sp)
  42ad9c:	8fbe002c 	lw	s8,44(sp)
  42ada0:	27bd0038 	addiu	sp,sp,56
  42ada4:	03e00008 	jr	ra
  42ada8:	00000000 	nop

0042adac <huphandler>:
  42adac:	3c1c0fbe 	lui	gp,0xfbe
  42adb0:	279c1bc4 	addiu	gp,gp,7108
  42adb4:	0399e021 	addu	gp,gp,t9
  42adb8:	27bdfff0 	addiu	sp,sp,-16
  42adbc:	afbc0000 	sw	gp,0(sp)
  42adc0:	afbe000c 	sw	s8,12(sp)
  42adc4:	afbc0008 	sw	gp,8(sp)
  42adc8:	03a0f021 	move	s8,sp
  42adcc:	afc40010 	sw	a0,16(s8)

static volatile sig_atomic_t sighupflag = FALSE;

static void
huphandler(int sig UNUSED)
{
    sighupflag = TRUE;
  42add0:	24020001 	li	v0,1
  42add4:	8f818018 	lw	at,-32744(gp)
  42add8:	00000000 	nop
  42addc:	242118a0 	addiu	at,at,6304
  42ade0:	ac220000 	sw	v0,0(at)
}
  42ade4:	03c0e821 	move	sp,s8
  42ade8:	8fbe000c 	lw	s8,12(sp)
  42adec:	27bd0010 	addiu	sp,sp,16
  42adf0:	03e00008 	jr	ra
  42adf4:	00000000 	nop

0042adf8 <termhandler>:
  42adf8:	3c1c0fbe 	lui	gp,0xfbe
  42adfc:	279c1b78 	addiu	gp,gp,7032
  42ae00:	0399e021 	addu	gp,gp,t9
  42ae04:	27bdfff0 	addiu	sp,sp,-16
  42ae08:	afbc0000 	sw	gp,0(sp)
  42ae0c:	afbe000c 	sw	s8,12(sp)
  42ae10:	afbc0008 	sw	gp,8(sp)
  42ae14:	03a0f021 	move	s8,sp
  42ae18:	afc40010 	sw	a0,16(s8)

static volatile sig_atomic_t sigtermflag = FALSE;

static void
termhandler(int sig UNUSED)
{
    sigtermflag = TRUE;
  42ae1c:	24020001 	li	v0,1
  42ae20:	8f818018 	lw	at,-32744(gp)
  42ae24:	00000000 	nop
  42ae28:	242118a4 	addiu	at,at,6308
  42ae2c:	ac220000 	sw	v0,0(at)
}
  42ae30:	03c0e821 	move	sp,s8
  42ae34:	8fbe000c 	lw	s8,12(sp)
  42ae38:	27bd0010 	addiu	sp,sp,16
  42ae3c:	03e00008 	jr	ra
  42ae40:	00000000 	nop

0042ae44 <call_server>:
  42ae44:	3c1c0fbe 	lui	gp,0xfbe
  42ae48:	279c1b2c 	addiu	gp,gp,6956
  42ae4c:	0399e021 	addu	gp,gp,t9
  42ae50:	27bdfea8 	addiu	sp,sp,-344
  42ae54:	afbc0018 	sw	gp,24(sp)
  42ae58:	afbf0150 	sw	ra,336(sp)
  42ae5c:	afbe014c 	sw	s8,332(sp)
  42ae60:	afbc0148 	sw	gp,328(sp)
  42ae64:	03a0f021 	move	s8,sp

/* call_server listens for incoming ISAKMP packets and Whack messages,
 * and handles timer events.
 */
void
call_server(void)
{
    struct iface *ifp;

    /* catch SIGHUP and SIGTERM */
    {
	int r;
	struct sigaction act;

	act.sa_handler = &huphandler;
  42ae68:	8f828030 	lw	v0,-32720(gp)
  42ae6c:	00000000 	nop
  42ae70:	2442adac 	addiu	v0,v0,-21076
  42ae74:	00000000 	nop
  42ae78:	afc2002c 	sw	v0,44(s8)
	sigemptyset(&act.sa_mask);
  42ae7c:	27c20028 	addiu	v0,s8,40
  42ae80:	24420008 	addiu	v0,v0,8
  42ae84:	00402021 	move	a0,v0
  42ae88:	8f998b9c 	lw	t9,-29796(gp)
  42ae8c:	00000000 	nop
  42ae90:	0320f809 	jalr	t9
  42ae94:	00000000 	nop
  42ae98:	8fdc0018 	lw	gp,24(s8)
  42ae9c:	00000000 	nop
	act.sa_flags = 0;	/* no SA_ONESHOT, no SA_RESTART, no nothing */
  42aea0:	afc00028 	sw	zero,40(s8)
	r = sigaction(SIGHUP, &act, NULL);
  42aea4:	24040001 	li	a0,1
  42aea8:	27c50028 	addiu	a1,s8,40
  42aeac:	00003021 	move	a2,zero
  42aeb0:	8f998570 	lw	t9,-31376(gp)
  42aeb4:	00000000 	nop
  42aeb8:	0320f809 	jalr	t9
  42aebc:	00000000 	nop
  42aec0:	8fdc0018 	lw	gp,24(s8)
  42aec4:	afc20024 	sw	v0,36(s8)
	passert(r == 0);
  42aec8:	8fc20024 	lw	v0,36(s8)
  42aecc:	00000000 	nop
  42aed0:	1040000e 	beqz	v0,42af0c <call_server+0xc8>
  42aed4:	00000000 	nop
  42aed8:	8f84802c 	lw	a0,-32724(gp)
  42aedc:	00000000 	nop
  42aee0:	2484b86c 	addiu	a0,a0,-18324
  42aee4:	8f85802c 	lw	a1,-32724(gp)
  42aee8:	00000000 	nop
  42aeec:	24a5b4e4 	addiu	a1,a1,-19228
  42aef0:	240602d2 	li	a2,722
  42aef4:	8f998bb8 	lw	t9,-29768(gp)
  42aef8:	00000000 	nop
  42aefc:	0320f809 	jalr	t9
  42af00:	00000000 	nop
  42af04:	8fdc0018 	lw	gp,24(s8)
  42af08:	00000000 	nop

	act.sa_handler = &termhandler;
  42af0c:	8f828030 	lw	v0,-32720(gp)
  42af10:	00000000 	nop
  42af14:	2442adf8 	addiu	v0,v0,-21000
  42af18:	00000000 	nop
  42af1c:	afc2002c 	sw	v0,44(s8)
	r = sigaction(SIGTERM, &act, NULL);
  42af20:	2404000f 	li	a0,15
  42af24:	27c50028 	addiu	a1,s8,40
  42af28:	00003021 	move	a2,zero
  42af2c:	8f998570 	lw	t9,-31376(gp)
  42af30:	00000000 	nop
  42af34:	0320f809 	jalr	t9
  42af38:	00000000 	nop
  42af3c:	8fdc0018 	lw	gp,24(s8)
  42af40:	afc20024 	sw	v0,36(s8)
	passert(r == 0);
  42af44:	8fc20024 	lw	v0,36(s8)
  42af48:	00000000 	nop
  42af4c:	1040000e 	beqz	v0,42af88 <call_server+0x144>
  42af50:	00000000 	nop
  42af54:	8f84802c 	lw	a0,-32724(gp)
  42af58:	00000000 	nop
  42af5c:	2484b86c 	addiu	a0,a0,-18324
  42af60:	8f85802c 	lw	a1,-32724(gp)
  42af64:	00000000 	nop
  42af68:	24a5b4e4 	addiu	a1,a1,-19228
  42af6c:	240602d6 	li	a2,726
  42af70:	8f998bb8 	lw	t9,-29768(gp)
  42af74:	00000000 	nop
  42af78:	0320f809 	jalr	t9
  42af7c:	00000000 	nop
  42af80:	8fdc0018 	lw	gp,24(s8)
  42af84:	00000000 	nop
    }

    for (;;)
    {
	fd_set readfds;
	int ndes;

	/* wait for next interesting thing */

	for (;;)
	{
	    long next_time = next_event();   /* time to any pending timer event */
  42af88:	8f998b74 	lw	t9,-29836(gp)
  42af8c:	00000000 	nop
  42af90:	0320f809 	jalr	t9
  42af94:	00000000 	nop
  42af98:	8fdc0018 	lw	gp,24(s8)
  42af9c:	afc20130 	sw	v0,304(s8)
	    int maxfd = ctl_fd;
  42afa0:	8f828288 	lw	v0,-32120(gp)
  42afa4:	00000000 	nop
  42afa8:	8c420000 	lw	v0,0(v0)
  42afac:	00000000 	nop
  42afb0:	afc20134 	sw	v0,308(s8)

	    if (sigtermflag)
  42afb4:	8f828018 	lw	v0,-32744(gp)
  42afb8:	00000000 	nop
  42afbc:	244218a4 	addiu	v0,v0,6308
  42afc0:	8c420000 	lw	v0,0(v0)
  42afc4:	00000000 	nop
  42afc8:	10400008 	beqz	v0,42afec <call_server+0x1a8>
  42afcc:	00000000 	nop
		exit_pluto(0);
  42afd0:	00002021 	move	a0,zero
  42afd4:	8f99810c 	lw	t9,-32500(gp)
  42afd8:	00000000 	nop
  42afdc:	0320f809 	jalr	t9
  42afe0:	00000000 	nop
  42afe4:	8fdc0018 	lw	gp,24(s8)
  42afe8:	00000000 	nop

	    if (sighupflag)
  42afec:	8f828018 	lw	v0,-32744(gp)
  42aff0:	00000000 	nop
  42aff4:	244218a0 	addiu	v0,v0,6304
  42aff8:	8c420000 	lw	v0,0(v0)
  42affc:	00000000 	nop
  42b000:	1040000e 	beqz	v0,42b03c <call_server+0x1f8>
  42b004:	00000000 	nop
	    {
		/* Ignorant folks think poking any daemon with SIGHUP
		 * is polite.  We catch it and tell them otherwise.
		 * There is one use: unsticking a hung recvfrom.
		 * This sticking happens sometimes -- kernel bug?
		 */
		sighupflag = FALSE;
  42b008:	8f818018 	lw	at,-32744(gp)
  42b00c:	00000000 	nop
  42b010:	242118a0 	addiu	at,at,6304
  42b014:	ac200000 	sw	zero,0(at)
		plog("Pluto ignores SIGHUP -- perhaps you want \"whack --listen\"");
  42b018:	8f84802c 	lw	a0,-32724(gp)
  42b01c:	00000000 	nop
  42b020:	2484b874 	addiu	a0,a0,-18316
  42b024:	8f998abc 	lw	t9,-30020(gp)
  42b028:	00000000 	nop
  42b02c:	0320f809 	jalr	t9
  42b030:	00000000 	nop
  42b034:	8fdc0018 	lw	gp,24(s8)
  42b038:	00000000 	nop
	    }

	    FD_ZERO(&readfds);
  42b03c:	27c200b0 	addiu	v0,s8,176
  42b040:	afc2013c 	sw	v0,316(s8)
  42b044:	afc00138 	sw	zero,312(s8)
  42b048:	8fc20138 	lw	v0,312(s8)
  42b04c:	00000000 	nop
  42b050:	2c420020 	sltiu	v0,v0,32
  42b054:	14400003 	bnez	v0,42b064 <call_server+0x220>
  42b058:	00000000 	nop
  42b05c:	1000000e 	b	42b098 <call_server+0x254>
  42b060:	00000000 	nop
  42b064:	8fc20138 	lw	v0,312(s8)
  42b068:	00000000 	nop
  42b06c:	00021880 	sll	v1,v0,0x2
  42b070:	8fc2013c 	lw	v0,316(s8)
  42b074:	00000000 	nop
  42b078:	00431021 	addu	v0,v0,v1
  42b07c:	ac400000 	sw	zero,0(v0)
  42b080:	8fc20138 	lw	v0,312(s8)
  42b084:	00000000 	nop
  42b088:	24420001 	addiu	v0,v0,1
  42b08c:	afc20138 	sw	v0,312(s8)
  42b090:	1000ffed 	b	42b048 <call_server+0x204>
  42b094:	00000000 	nop
	    FD_SET(ctl_fd, &readfds);
  42b098:	8f828288 	lw	v0,-32120(gp)
  42b09c:	00000000 	nop
  42b0a0:	8c420000 	lw	v0,0(v0)
  42b0a4:	00000000 	nop
  42b0a8:	00022142 	srl	a0,v0,0x5
  42b0ac:	00801021 	move	v0,a0
  42b0b0:	00021880 	sll	v1,v0,0x2
  42b0b4:	27c200b0 	addiu	v0,s8,176
  42b0b8:	00432821 	addu	a1,v0,v1
  42b0bc:	00801021 	move	v0,a0
  42b0c0:	00021880 	sll	v1,v0,0x2
  42b0c4:	27c200b0 	addiu	v0,s8,176
  42b0c8:	00432021 	addu	a0,v0,v1
  42b0cc:	8f828288 	lw	v0,-32120(gp)
  42b0d0:	00000000 	nop
  42b0d4:	8c420000 	lw	v0,0(v0)
  42b0d8:	00000000 	nop
  42b0dc:	3043001f 	andi	v1,v0,0x1f
  42b0e0:	24020001 	li	v0,1
  42b0e4:	00621804 	sllv	v1,v0,v1
  42b0e8:	8c820000 	lw	v0,0(a0)
  42b0ec:	00000000 	nop
  42b0f0:	00431025 	or	v0,v0,v1
  42b0f4:	aca20000 	sw	v0,0(a1)

	    if (adns_afd != NULL_FD)
  42b0f8:	8f838764 	lw	v1,-30876(gp)
  42b0fc:	00000000 	nop
  42b100:	8c630000 	lw	v1,0(v1)
  42b104:	2402ffff 	li	v0,-1
  42b108:	10620026 	beq	v1,v0,42b1a4 <call_server+0x360>
  42b10c:	00000000 	nop
	    {
		if (maxfd < adns_afd)
  42b110:	8fc20134 	lw	v0,308(s8)
  42b114:	8f838764 	lw	v1,-30876(gp)
  42b118:	00000000 	nop
  42b11c:	8c630000 	lw	v1,0(v1)
  42b120:	00000000 	nop
  42b124:	0043102a 	slt	v0,v0,v1
  42b128:	10400006 	beqz	v0,42b144 <call_server+0x300>
  42b12c:	00000000 	nop
		    maxfd = adns_afd;
  42b130:	8f828764 	lw	v0,-30876(gp)
  42b134:	00000000 	nop
  42b138:	8c420000 	lw	v0,0(v0)
  42b13c:	00000000 	nop
  42b140:	afc20134 	sw	v0,308(s8)
		FD_SET(adns_afd, &readfds);
  42b144:	8f828764 	lw	v0,-30876(gp)
  42b148:	00000000 	nop
  42b14c:	8c420000 	lw	v0,0(v0)
  42b150:	00000000 	nop
  42b154:	00022142 	srl	a0,v0,0x5
  42b158:	00801021 	move	v0,a0
  42b15c:	00021880 	sll	v1,v0,0x2
  42b160:	27c200b0 	addiu	v0,s8,176
  42b164:	00432821 	addu	a1,v0,v1
  42b168:	00801021 	move	v0,a0
  42b16c:	00021880 	sll	v1,v0,0x2
  42b170:	27c200b0 	addiu	v0,s8,176
  42b174:	00432021 	addu	a0,v0,v1
  42b178:	8f828764 	lw	v0,-30876(gp)
  42b17c:	00000000 	nop
  42b180:	8c420000 	lw	v0,0(v0)
  42b184:	00000000 	nop
  42b188:	3043001f 	andi	v1,v0,0x1f
  42b18c:	24020001 	li	v0,1
  42b190:	00621804 	sllv	v1,v0,v1
  42b194:	8c820000 	lw	v0,0(a0)
  42b198:	00000000 	nop
  42b19c:	00431025 	or	v0,v0,v1
  42b1a0:	aca20000 	sw	v0,0(a1)
	    }

#ifdef KLIPS
	    if (!no_klips)
  42b1a4:	8f8286ec 	lw	v0,-30996(gp)
  42b1a8:	00000000 	nop
  42b1ac:	8c420000 	lw	v0,0(v0)
  42b1b0:	00000000 	nop
  42b1b4:	1440004c 	bnez	v0,42b2e8 <call_server+0x4a4>
  42b1b8:	00000000 	nop
	    {
		pfkey_dequeue();
  42b1bc:	8f9981f4 	lw	t9,-32268(gp)
  42b1c0:	00000000 	nop
  42b1c4:	0320f809 	jalr	t9
  42b1c8:	00000000 	nop
  42b1cc:	8fdc0018 	lw	gp,24(s8)
  42b1d0:	00000000 	nop
		if (maxfd < pfkeyfd)
  42b1d4:	8fc20134 	lw	v0,308(s8)
  42b1d8:	8f838528 	lw	v1,-31448(gp)
  42b1dc:	00000000 	nop
  42b1e0:	8c630000 	lw	v1,0(v1)
  42b1e4:	00000000 	nop
  42b1e8:	0043102a 	slt	v0,v0,v1
  42b1ec:	10400006 	beqz	v0,42b208 <call_server+0x3c4>
  42b1f0:	00000000 	nop
		    maxfd = pfkeyfd;
  42b1f4:	8f828528 	lw	v0,-31448(gp)
  42b1f8:	00000000 	nop
  42b1fc:	8c420000 	lw	v0,0(v0)
  42b200:	00000000 	nop
  42b204:	afc20134 	sw	v0,308(s8)
		passert(!FD_ISSET(pfkeyfd, &readfds));
  42b208:	8f828528 	lw	v0,-31448(gp)
  42b20c:	00000000 	nop
  42b210:	8c420000 	lw	v0,0(v0)
  42b214:	00000000 	nop
  42b218:	00021142 	srl	v0,v0,0x5
  42b21c:	00021880 	sll	v1,v0,0x2
  42b220:	27c200b0 	addiu	v0,s8,176
  42b224:	00432021 	addu	a0,v0,v1
  42b228:	8f828528 	lw	v0,-31448(gp)
  42b22c:	00000000 	nop
  42b230:	8c420000 	lw	v0,0(v0)
  42b234:	00000000 	nop
  42b238:	3043001f 	andi	v1,v0,0x1f
  42b23c:	8c820000 	lw	v0,0(a0)
  42b240:	00000000 	nop
  42b244:	00621007 	srav	v0,v0,v1
  42b248:	30420001 	andi	v0,v0,0x1
  42b24c:	1040000e 	beqz	v0,42b288 <call_server+0x444>
  42b250:	00000000 	nop
  42b254:	8f84802c 	lw	a0,-32724(gp)
  42b258:	00000000 	nop
  42b25c:	2484b8b0 	addiu	a0,a0,-18256
  42b260:	8f85802c 	lw	a1,-32724(gp)
  42b264:	00000000 	nop
  42b268:	24a5b4e4 	addiu	a1,a1,-19228
  42b26c:	24060303 	li	a2,771
  42b270:	8f998bb8 	lw	t9,-29768(gp)
  42b274:	00000000 	nop
  42b278:	0320f809 	jalr	t9
  42b27c:	00000000 	nop
  42b280:	8fdc0018 	lw	gp,24(s8)
  42b284:	00000000 	nop
		FD_SET(pfkeyfd, &readfds);
  42b288:	8f828528 	lw	v0,-31448(gp)
  42b28c:	00000000 	nop
  42b290:	8c420000 	lw	v0,0(v0)
  42b294:	00000000 	nop
  42b298:	00022142 	srl	a0,v0,0x5
  42b29c:	00801021 	move	v0,a0
  42b2a0:	00021880 	sll	v1,v0,0x2
  42b2a4:	27c200b0 	addiu	v0,s8,176
  42b2a8:	00432821 	addu	a1,v0,v1
  42b2ac:	00801021 	move	v0,a0
  42b2b0:	00021880 	sll	v1,v0,0x2
  42b2b4:	27c200b0 	addiu	v0,s8,176
  42b2b8:	00432021 	addu	a0,v0,v1
  42b2bc:	8f828528 	lw	v0,-31448(gp)
  42b2c0:	00000000 	nop
  42b2c4:	8c420000 	lw	v0,0(v0)
  42b2c8:	00000000 	nop
  42b2cc:	3043001f 	andi	v1,v0,0x1f
  42b2d0:	24020001 	li	v0,1
  42b2d4:	00621804 	sllv	v1,v0,v1
  42b2d8:	8c820000 	lw	v0,0(a0)
  42b2dc:	00000000 	nop
  42b2e0:	00431025 	or	v0,v0,v1
  42b2e4:	aca20000 	sw	v0,0(a1)
	    }
#endif

	    if (listening)
  42b2e8:	8f828314 	lw	v0,-31980(gp)
  42b2ec:	00000000 	nop
  42b2f0:	8c420000 	lw	v0,0(v0)
  42b2f4:	00000000 	nop
  42b2f8:	10400058 	beqz	v0,42b45c <call_server+0x618>
  42b2fc:	00000000 	nop
	    {
		for (ifp = interfaces; ifp != NULL; ifp = ifp->next)
  42b300:	8f828c10 	lw	v0,-29680(gp)
  42b304:	00000000 	nop
  42b308:	8c420000 	lw	v0,0(v0)
  42b30c:	00000000 	nop
  42b310:	afc20020 	sw	v0,32(s8)
  42b314:	8fc20020 	lw	v0,32(s8)
  42b318:	00000000 	nop
  42b31c:	14400003 	bnez	v0,42b32c <call_server+0x4e8>
  42b320:	00000000 	nop
  42b324:	1000004d 	b	42b45c <call_server+0x618>
  42b328:	00000000 	nop
		{
		    if (maxfd < ifp->fd)
  42b32c:	8fc20020 	lw	v0,32(s8)
  42b330:	00000000 	nop
  42b334:	8c430024 	lw	v1,36(v0)
  42b338:	8fc20134 	lw	v0,308(s8)
  42b33c:	00000000 	nop
  42b340:	0043102a 	slt	v0,v0,v1
  42b344:	10400006 	beqz	v0,42b360 <call_server+0x51c>
  42b348:	00000000 	nop
			maxfd = ifp->fd;
  42b34c:	8fc20020 	lw	v0,32(s8)
  42b350:	00000000 	nop
  42b354:	8c420024 	lw	v0,36(v0)
  42b358:	00000000 	nop
  42b35c:	afc20134 	sw	v0,308(s8)
		    passert(!FD_ISSET(ifp->fd, &readfds));
  42b360:	8fc20020 	lw	v0,32(s8)
  42b364:	00000000 	nop
  42b368:	8c420024 	lw	v0,36(v0)
  42b36c:	00000000 	nop
  42b370:	00021142 	srl	v0,v0,0x5
  42b374:	00021880 	sll	v1,v0,0x2
  42b378:	27c200b0 	addiu	v0,s8,176
  42b37c:	00432021 	addu	a0,v0,v1
  42b380:	8fc20020 	lw	v0,32(s8)
  42b384:	00000000 	nop
  42b388:	8c420024 	lw	v0,36(v0)
  42b38c:	00000000 	nop
  42b390:	3043001f 	andi	v1,v0,0x1f
  42b394:	8c820000 	lw	v0,0(a0)
  42b398:	00000000 	nop
  42b39c:	00621007 	srav	v0,v0,v1
  42b3a0:	30420001 	andi	v0,v0,0x1
  42b3a4:	1040000e 	beqz	v0,42b3e0 <call_server+0x59c>
  42b3a8:	00000000 	nop
  42b3ac:	8f84802c 	lw	a0,-32724(gp)
  42b3b0:	00000000 	nop
  42b3b4:	2484b8d0 	addiu	a0,a0,-18224
  42b3b8:	8f85802c 	lw	a1,-32724(gp)
  42b3bc:	00000000 	nop
  42b3c0:	24a5b4e4 	addiu	a1,a1,-19228
  42b3c4:	2406030e 	li	a2,782
  42b3c8:	8f998bb8 	lw	t9,-29768(gp)
  42b3cc:	00000000 	nop
  42b3d0:	0320f809 	jalr	t9
  42b3d4:	00000000 	nop
  42b3d8:	8fdc0018 	lw	gp,24(s8)
  42b3dc:	00000000 	nop
		    FD_SET(ifp->fd, &readfds);
  42b3e0:	8fc20020 	lw	v0,32(s8)
  42b3e4:	00000000 	nop
  42b3e8:	8c420024 	lw	v0,36(v0)
  42b3ec:	00000000 	nop
  42b3f0:	00022142 	srl	a0,v0,0x5
  42b3f4:	00801021 	move	v0,a0
  42b3f8:	00021880 	sll	v1,v0,0x2
  42b3fc:	27c200b0 	addiu	v0,s8,176
  42b400:	00432821 	addu	a1,v0,v1
  42b404:	00801021 	move	v0,a0
  42b408:	00021880 	sll	v1,v0,0x2
  42b40c:	27c200b0 	addiu	v0,s8,176
  42b410:	00432021 	addu	a0,v0,v1
  42b414:	8fc20020 	lw	v0,32(s8)
  42b418:	00000000 	nop
  42b41c:	8c420024 	lw	v0,36(v0)
  42b420:	00000000 	nop
  42b424:	3043001f 	andi	v1,v0,0x1f
  42b428:	24020001 	li	v0,1
  42b42c:	00621804 	sllv	v1,v0,v1
  42b430:	8c820000 	lw	v0,0(a0)
  42b434:	00000000 	nop
  42b438:	00431025 	or	v0,v0,v1
  42b43c:	aca20000 	sw	v0,0(a1)
  42b440:	8fc20020 	lw	v0,32(s8)
  42b444:	00000000 	nop
  42b448:	8c420028 	lw	v0,40(v0)
  42b44c:	00000000 	nop
  42b450:	afc20020 	sw	v0,32(s8)
  42b454:	1000ffaf 	b	42b314 <call_server+0x4d0>
  42b458:	00000000 	nop
		}
	    }

	    if (next_time == -1)
  42b45c:	8fc30130 	lw	v1,304(s8)
  42b460:	2402ffff 	li	v0,-1
  42b464:	14620011 	bne	v1,v0,42b4ac <call_server+0x668>
  42b468:	00000000 	nop
	    {
		/* select without timer */

		ndes = select(maxfd + 1, &readfds, NULL, NULL, NULL);
  42b46c:	8fc20134 	lw	v0,308(s8)
  42b470:	00000000 	nop
  42b474:	24420001 	addiu	v0,v0,1
  42b478:	afa00010 	sw	zero,16(sp)
  42b47c:	00402021 	move	a0,v0
  42b480:	27c500b0 	addiu	a1,s8,176
  42b484:	00003021 	move	a2,zero
  42b488:	00003821 	move	a3,zero
  42b48c:	8f99892c 	lw	t9,-30420(gp)
  42b490:	00000000 	nop
  42b494:	0320f809 	jalr	t9
  42b498:	00000000 	nop
  42b49c:	8fdc0018 	lw	gp,24(s8)
  42b4a0:	afc20024 	sw	v0,36(s8)
  42b4a4:	1000001b 	b	42b514 <call_server+0x6d0>
  42b4a8:	00000000 	nop
	    }
	    else if (next_time == 0)
  42b4ac:	8fc20130 	lw	v0,304(s8)
  42b4b0:	00000000 	nop
  42b4b4:	14400004 	bnez	v0,42b4c8 <call_server+0x684>
  42b4b8:	00000000 	nop
	    {
		/* timer without select: there is a timer event pending,
		 * and it should fire now so don't bother to do the select.
		 */
		ndes = 0;	/* signify timer expiration */
  42b4bc:	afc00024 	sw	zero,36(s8)
  42b4c0:	10000014 	b	42b514 <call_server+0x6d0>
  42b4c4:	00000000 	nop
	    }
	    else
	    {
		/* select with timer */

		struct timeval tm;

		tm.tv_sec = next_time;
  42b4c8:	8fc20130 	lw	v0,304(s8)
  42b4cc:	00000000 	nop
  42b4d0:	afc20140 	sw	v0,320(s8)
		tm.tv_usec = 0;
  42b4d4:	afc00144 	sw	zero,324(s8)
		ndes = select(maxfd + 1, &readfds, NULL, NULL, &tm);
  42b4d8:	8fc20134 	lw	v0,308(s8)
  42b4dc:	00000000 	nop
  42b4e0:	24430001 	addiu	v1,v0,1
  42b4e4:	27c20140 	addiu	v0,s8,320
  42b4e8:	afa20010 	sw	v0,16(sp)
  42b4ec:	00602021 	move	a0,v1
  42b4f0:	27c500b0 	addiu	a1,s8,176
  42b4f4:	00003021 	move	a2,zero
  42b4f8:	00003821 	move	a3,zero
  42b4fc:	8f99892c 	lw	t9,-30420(gp)
  42b500:	00000000 	nop
  42b504:	0320f809 	jalr	t9
  42b508:	00000000 	nop
  42b50c:	8fdc0018 	lw	gp,24(s8)
  42b510:	afc20024 	sw	v0,36(s8)
	    }

	    if (ndes != -1)
  42b514:	8fc30024 	lw	v1,36(s8)
  42b518:	2402ffff 	li	v0,-1
  42b51c:	10620003 	beq	v1,v0,42b52c <call_server+0x6e8>
  42b520:	00000000 	nop
		break;	/* success */
  42b524:	1000001c 	b	42b598 <call_server+0x754>
  42b528:	00000000 	nop

	    if (errno != EINTR)
  42b52c:	8f998234 	lw	t9,-32204(gp)
  42b530:	00000000 	nop
  42b534:	0320f809 	jalr	t9
  42b538:	00000000 	nop
  42b53c:	8fdc0018 	lw	gp,24(s8)
  42b540:	8c430000 	lw	v1,0(v0)
  42b544:	24020004 	li	v0,4
  42b548:	1062fe8f 	beq	v1,v0,42af88 <call_server+0x144>
  42b54c:	00000000 	nop
		exit_log_errno((e, "select() failed in call_server()"));
  42b550:	8f998234 	lw	t9,-32204(gp)
  42b554:	00000000 	nop
  42b558:	0320f809 	jalr	t9
  42b55c:	00000000 	nop
  42b560:	8fdc0018 	lw	gp,24(s8)
  42b564:	8c420000 	lw	v0,0(v0)
  42b568:	00000000 	nop
  42b56c:	afc2013c 	sw	v0,316(s8)
  42b570:	8fc4013c 	lw	a0,316(s8)
  42b574:	8f85802c 	lw	a1,-32724(gp)
  42b578:	00000000 	nop
  42b57c:	24a5b8f0 	addiu	a1,a1,-18192
  42b580:	8f998154 	lw	t9,-32428(gp)
  42b584:	00000000 	nop
  42b588:	0320f809 	jalr	t9
  42b58c:	00000000 	nop
  42b590:	8fdc0018 	lw	gp,24(s8)
  42b594:	00000000 	nop

	    /* retry if terminated by signal */
	}

	/* figure out what is interesting */

	if (ndes == 0)
  42b598:	8fc20024 	lw	v0,36(s8)
  42b59c:	00000000 	nop
  42b5a0:	14400050 	bnez	v0,42b6e4 <call_server+0x8a0>
  42b5a4:	00000000 	nop
	{
	    /* timer event */

	    DBG(DBG_CONTROL,
  42b5a8:	8f8284f8 	lw	v0,-31496(gp)
  42b5ac:	00000000 	nop
  42b5b0:	8c420000 	lw	v0,0(v0)
  42b5b4:	00000000 	nop
  42b5b8:	30420010 	andi	v0,v0,0x10
  42b5bc:	10400013 	beqz	v0,42b60c <call_server+0x7c8>
  42b5c0:	00000000 	nop
  42b5c4:	8f84802c 	lw	a0,-32724(gp)
  42b5c8:	00000000 	nop
  42b5cc:	2484b914 	addiu	a0,a0,-18156
  42b5d0:	8f9983b8 	lw	t9,-31816(gp)
  42b5d4:	00000000 	nop
  42b5d8:	0320f809 	jalr	t9
  42b5dc:	00000000 	nop
  42b5e0:	8fdc0018 	lw	gp,24(s8)
  42b5e4:	00000000 	nop
  42b5e8:	8f84802c 	lw	a0,-32724(gp)
  42b5ec:	00000000 	nop
  42b5f0:	2484b918 	addiu	a0,a0,-18152
  42b5f4:	8f9983b8 	lw	t9,-31816(gp)
  42b5f8:	00000000 	nop
  42b5fc:	0320f809 	jalr	t9
  42b600:	00000000 	nop
  42b604:	8fdc0018 	lw	gp,24(s8)
  42b608:	00000000 	nop
		DBG_log(BLANK_FORMAT);
		DBG_log("*time to handle event"));

	    handle_timer_event();
  42b60c:	8f998900 	lw	t9,-30464(gp)
  42b610:	00000000 	nop
  42b614:	0320f809 	jalr	t9
  42b618:	00000000 	nop
  42b61c:	8fdc0018 	lw	gp,24(s8)
  42b620:	00000000 	nop
	    passert(GLOBALS_ARE_RESET());
  42b624:	8f838994 	lw	v1,-30316(gp)
  42b628:	00000000 	nop
  42b62c:	8c630000 	lw	v1,0(v1)
  42b630:	2402ffff 	li	v0,-1
  42b634:	1462001e 	bne	v1,v0,42b6b0 <call_server+0x86c>
  42b638:	00000000 	nop
  42b63c:	8f8287f8 	lw	v0,-30728(gp)
  42b640:	00000000 	nop
  42b644:	8c420000 	lw	v0,0(v0)
  42b648:	00000000 	nop
  42b64c:	14400018 	bnez	v0,42b6b0 <call_server+0x86c>
  42b650:	00000000 	nop
  42b654:	8f8288c8 	lw	v0,-30520(gp)
  42b658:	00000000 	nop
  42b65c:	8c420000 	lw	v0,0(v0)
  42b660:	00000000 	nop
  42b664:	14400012 	bnez	v0,42b6b0 <call_server+0x86c>
  42b668:	00000000 	nop
  42b66c:	8f828748 	lw	v0,-30904(gp)
  42b670:	00000000 	nop
  42b674:	8c420000 	lw	v0,0(v0)
  42b678:	00000000 	nop
  42b67c:	1440000c 	bnez	v0,42b6b0 <call_server+0x86c>
  42b680:	00000000 	nop
  42b684:	8f8384f8 	lw	v1,-31496(gp)
  42b688:	00000000 	nop
  42b68c:	8c630000 	lw	v1,0(v1)
  42b690:	8f82830c 	lw	v0,-31988(gp)
  42b694:	00000000 	nop
  42b698:	8c420000 	lw	v0,0(v0)
  42b69c:	00000000 	nop
  42b6a0:	14620003 	bne	v1,v0,42b6b0 <call_server+0x86c>
  42b6a4:	00000000 	nop
  42b6a8:	1000fe37 	b	42af88 <call_server+0x144>
  42b6ac:	00000000 	nop
  42b6b0:	8f84802c 	lw	a0,-32724(gp)
  42b6b4:	00000000 	nop
  42b6b8:	2484b930 	addiu	a0,a0,-18128
  42b6bc:	8f85802c 	lw	a1,-32724(gp)
  42b6c0:	00000000 	nop
  42b6c4:	24a5b4e4 	addiu	a1,a1,-19228
  42b6c8:	2406033f 	li	a2,831
  42b6cc:	8f998bb8 	lw	t9,-29768(gp)
  42b6d0:	00000000 	nop
  42b6d4:	0320f809 	jalr	t9
  42b6d8:	00000000 	nop
  42b6dc:	8fdc0018 	lw	gp,24(s8)
  42b6e0:	00000000 	nop
	}
	else
	{
	    /* at least one file descriptor is ready */

	    if (adns_afd != NULL_FD && FD_ISSET(adns_afd, &readfds))
  42b6e4:	8f838764 	lw	v1,-30876(gp)
  42b6e8:	00000000 	nop
  42b6ec:	8c630000 	lw	v1,0(v1)
  42b6f0:	2402ffff 	li	v0,-1
  42b6f4:	10620078 	beq	v1,v0,42b8d8 <call_server+0xa94>
  42b6f8:	00000000 	nop
  42b6fc:	8f828764 	lw	v0,-30876(gp)
  42b700:	00000000 	nop
  42b704:	8c420000 	lw	v0,0(v0)
  42b708:	00000000 	nop
  42b70c:	00021142 	srl	v0,v0,0x5
  42b710:	00021880 	sll	v1,v0,0x2
  42b714:	27c200b0 	addiu	v0,s8,176
  42b718:	00432021 	addu	a0,v0,v1
  42b71c:	8f828764 	lw	v0,-30876(gp)
  42b720:	00000000 	nop
  42b724:	8c420000 	lw	v0,0(v0)
  42b728:	00000000 	nop
  42b72c:	3043001f 	andi	v1,v0,0x1f
  42b730:	8c820000 	lw	v0,0(a0)
  42b734:	00000000 	nop
  42b738:	00621007 	srav	v0,v0,v1
  42b73c:	30420001 	andi	v0,v0,0x1
  42b740:	10400065 	beqz	v0,42b8d8 <call_server+0xa94>
  42b744:	00000000 	nop
	    {
		passert(ndes > 0);
  42b748:	8fc20024 	lw	v0,36(s8)
  42b74c:	00000000 	nop
  42b750:	1c40000e 	bgtz	v0,42b78c <call_server+0x948>
  42b754:	00000000 	nop
  42b758:	8f84802c 	lw	a0,-32724(gp)
  42b75c:	00000000 	nop
  42b760:	2484b944 	addiu	a0,a0,-18108
  42b764:	8f85802c 	lw	a1,-32724(gp)
  42b768:	00000000 	nop
  42b76c:	24a5b4e4 	addiu	a1,a1,-19228
  42b770:	24060347 	li	a2,839
  42b774:	8f998bb8 	lw	t9,-29768(gp)
  42b778:	00000000 	nop
  42b77c:	0320f809 	jalr	t9
  42b780:	00000000 	nop
  42b784:	8fdc0018 	lw	gp,24(s8)
  42b788:	00000000 	nop
		DBG(DBG_CONTROL,
  42b78c:	8f8284f8 	lw	v0,-31496(gp)
  42b790:	00000000 	nop
  42b794:	8c420000 	lw	v0,0(v0)
  42b798:	00000000 	nop
  42b79c:	30420010 	andi	v0,v0,0x10
  42b7a0:	10400013 	beqz	v0,42b7f0 <call_server+0x9ac>
  42b7a4:	00000000 	nop
  42b7a8:	8f84802c 	lw	a0,-32724(gp)
  42b7ac:	00000000 	nop
  42b7b0:	2484b914 	addiu	a0,a0,-18156
  42b7b4:	8f9983b8 	lw	t9,-31816(gp)
  42b7b8:	00000000 	nop
  42b7bc:	0320f809 	jalr	t9
  42b7c0:	00000000 	nop
  42b7c4:	8fdc0018 	lw	gp,24(s8)
  42b7c8:	00000000 	nop
  42b7cc:	8f84802c 	lw	a0,-32724(gp)
  42b7d0:	00000000 	nop
  42b7d4:	2484b950 	addiu	a0,a0,-18096
  42b7d8:	8f9983b8 	lw	t9,-31816(gp)
  42b7dc:	00000000 	nop
  42b7e0:	0320f809 	jalr	t9
  42b7e4:	00000000 	nop
  42b7e8:	8fdc0018 	lw	gp,24(s8)
  42b7ec:	00000000 	nop
		    DBG_log(BLANK_FORMAT);
		    DBG_log("*received adns message"));
		handle_adns_answer();
  42b7f0:	8f9987b8 	lw	t9,-30792(gp)
  42b7f4:	00000000 	nop
  42b7f8:	0320f809 	jalr	t9
  42b7fc:	00000000 	nop
  42b800:	8fdc0018 	lw	gp,24(s8)
  42b804:	00000000 	nop
		passert(GLOBALS_ARE_RESET());
  42b808:	8f838994 	lw	v1,-30316(gp)
  42b80c:	00000000 	nop
  42b810:	8c630000 	lw	v1,0(v1)
  42b814:	2402ffff 	li	v0,-1
  42b818:	1462001e 	bne	v1,v0,42b894 <call_server+0xa50>
  42b81c:	00000000 	nop
  42b820:	8f8287f8 	lw	v0,-30728(gp)
  42b824:	00000000 	nop
  42b828:	8c420000 	lw	v0,0(v0)
  42b82c:	00000000 	nop
  42b830:	14400018 	bnez	v0,42b894 <call_server+0xa50>
  42b834:	00000000 	nop
  42b838:	8f8288c8 	lw	v0,-30520(gp)
  42b83c:	00000000 	nop
  42b840:	8c420000 	lw	v0,0(v0)
  42b844:	00000000 	nop
  42b848:	14400012 	bnez	v0,42b894 <call_server+0xa50>
  42b84c:	00000000 	nop
  42b850:	8f828748 	lw	v0,-30904(gp)
  42b854:	00000000 	nop
  42b858:	8c420000 	lw	v0,0(v0)
  42b85c:	00000000 	nop
  42b860:	1440000c 	bnez	v0,42b894 <call_server+0xa50>
  42b864:	00000000 	nop
  42b868:	8f8384f8 	lw	v1,-31496(gp)
  42b86c:	00000000 	nop
  42b870:	8c630000 	lw	v1,0(v1)
  42b874:	8f82830c 	lw	v0,-31988(gp)
  42b878:	00000000 	nop
  42b87c:	8c420000 	lw	v0,0(v0)
  42b880:	00000000 	nop
  42b884:	14620003 	bne	v1,v0,42b894 <call_server+0xa50>
  42b888:	00000000 	nop
  42b88c:	1000000e 	b	42b8c8 <call_server+0xa84>
  42b890:	00000000 	nop
  42b894:	8f84802c 	lw	a0,-32724(gp)
  42b898:	00000000 	nop
  42b89c:	2484b930 	addiu	a0,a0,-18128
  42b8a0:	8f85802c 	lw	a1,-32724(gp)
  42b8a4:	00000000 	nop
  42b8a8:	24a5b4e4 	addiu	a1,a1,-19228
  42b8ac:	2406034c 	li	a2,844
  42b8b0:	8f998bb8 	lw	t9,-29768(gp)
  42b8b4:	00000000 	nop
  42b8b8:	0320f809 	jalr	t9
  42b8bc:	00000000 	nop
  42b8c0:	8fdc0018 	lw	gp,24(s8)
  42b8c4:	00000000 	nop
		ndes--;
  42b8c8:	8fc20024 	lw	v0,36(s8)
  42b8cc:	00000000 	nop
  42b8d0:	2442ffff 	addiu	v0,v0,-1
  42b8d4:	afc20024 	sw	v0,36(s8)
	    }

#ifdef KLIPS
	    if (!no_klips && FD_ISSET(pfkeyfd, &readfds))
  42b8d8:	8f8286ec 	lw	v0,-30996(gp)
  42b8dc:	00000000 	nop
  42b8e0:	8c420000 	lw	v0,0(v0)
  42b8e4:	00000000 	nop
  42b8e8:	14400078 	bnez	v0,42bacc <call_server+0xc88>
  42b8ec:	00000000 	nop
  42b8f0:	8f828528 	lw	v0,-31448(gp)
  42b8f4:	00000000 	nop
  42b8f8:	8c420000 	lw	v0,0(v0)
  42b8fc:	00000000 	nop
  42b900:	00021142 	srl	v0,v0,0x5
  42b904:	00021880 	sll	v1,v0,0x2
  42b908:	27c200b0 	addiu	v0,s8,176
  42b90c:	00432021 	addu	a0,v0,v1
  42b910:	8f828528 	lw	v0,-31448(gp)
  42b914:	00000000 	nop
  42b918:	8c420000 	lw	v0,0(v0)
  42b91c:	00000000 	nop
  42b920:	3043001f 	andi	v1,v0,0x1f
  42b924:	8c820000 	lw	v0,0(a0)
  42b928:	00000000 	nop
  42b92c:	00621007 	srav	v0,v0,v1
  42b930:	30420001 	andi	v0,v0,0x1
  42b934:	10400065 	beqz	v0,42bacc <call_server+0xc88>
  42b938:	00000000 	nop
	    {
		passert(ndes > 0);
  42b93c:	8fc20024 	lw	v0,36(s8)
  42b940:	00000000 	nop
  42b944:	1c40000e 	bgtz	v0,42b980 <call_server+0xb3c>
  42b948:	00000000 	nop
  42b94c:	8f84802c 	lw	a0,-32724(gp)
  42b950:	00000000 	nop
  42b954:	2484b944 	addiu	a0,a0,-18108
  42b958:	8f85802c 	lw	a1,-32724(gp)
  42b95c:	00000000 	nop
  42b960:	24a5b4e4 	addiu	a1,a1,-19228
  42b964:	24060353 	li	a2,851
  42b968:	8f998bb8 	lw	t9,-29768(gp)
  42b96c:	00000000 	nop
  42b970:	0320f809 	jalr	t9
  42b974:	00000000 	nop
  42b978:	8fdc0018 	lw	gp,24(s8)
  42b97c:	00000000 	nop
		DBG(DBG_CONTROL,
  42b980:	8f8284f8 	lw	v0,-31496(gp)
  42b984:	00000000 	nop
  42b988:	8c420000 	lw	v0,0(v0)
  42b98c:	00000000 	nop
  42b990:	30420010 	andi	v0,v0,0x10
  42b994:	10400013 	beqz	v0,42b9e4 <call_server+0xba0>
  42b998:	00000000 	nop
  42b99c:	8f84802c 	lw	a0,-32724(gp)
  42b9a0:	00000000 	nop
  42b9a4:	2484b914 	addiu	a0,a0,-18156
  42b9a8:	8f9983b8 	lw	t9,-31816(gp)
  42b9ac:	00000000 	nop
  42b9b0:	0320f809 	jalr	t9
  42b9b4:	00000000 	nop
  42b9b8:	8fdc0018 	lw	gp,24(s8)
  42b9bc:	00000000 	nop
  42b9c0:	8f84802c 	lw	a0,-32724(gp)
  42b9c4:	00000000 	nop
  42b9c8:	2484b968 	addiu	a0,a0,-18072
  42b9cc:	8f9983b8 	lw	t9,-31816(gp)
  42b9d0:	00000000 	nop
  42b9d4:	0320f809 	jalr	t9
  42b9d8:	00000000 	nop
  42b9dc:	8fdc0018 	lw	gp,24(s8)
  42b9e0:	00000000 	nop
		    DBG_log(BLANK_FORMAT);
		    DBG_log("*received pfkey message"));
		pfkey_event();
  42b9e4:	8f9984c4 	lw	t9,-31548(gp)
  42b9e8:	00000000 	nop
  42b9ec:	0320f809 	jalr	t9
  42b9f0:	00000000 	nop
  42b9f4:	8fdc0018 	lw	gp,24(s8)
  42b9f8:	00000000 	nop
		passert(GLOBALS_ARE_RESET());
  42b9fc:	8f838994 	lw	v1,-30316(gp)
  42ba00:	00000000 	nop
  42ba04:	8c630000 	lw	v1,0(v1)
  42ba08:	2402ffff 	li	v0,-1
  42ba0c:	1462001e 	bne	v1,v0,42ba88 <call_server+0xc44>
  42ba10:	00000000 	nop
  42ba14:	8f8287f8 	lw	v0,-30728(gp)
  42ba18:	00000000 	nop
  42ba1c:	8c420000 	lw	v0,0(v0)
  42ba20:	00000000 	nop
  42ba24:	14400018 	bnez	v0,42ba88 <call_server+0xc44>
  42ba28:	00000000 	nop
  42ba2c:	8f8288c8 	lw	v0,-30520(gp)
  42ba30:	00000000 	nop
  42ba34:	8c420000 	lw	v0,0(v0)
  42ba38:	00000000 	nop
  42ba3c:	14400012 	bnez	v0,42ba88 <call_server+0xc44>
  42ba40:	00000000 	nop
  42ba44:	8f828748 	lw	v0,-30904(gp)
  42ba48:	00000000 	nop
  42ba4c:	8c420000 	lw	v0,0(v0)
  42ba50:	00000000 	nop
  42ba54:	1440000c 	bnez	v0,42ba88 <call_server+0xc44>
  42ba58:	00000000 	nop
  42ba5c:	8f8384f8 	lw	v1,-31496(gp)
  42ba60:	00000000 	nop
  42ba64:	8c630000 	lw	v1,0(v1)
  42ba68:	8f82830c 	lw	v0,-31988(gp)
  42ba6c:	00000000 	nop
  42ba70:	8c420000 	lw	v0,0(v0)
  42ba74:	00000000 	nop
  42ba78:	14620003 	bne	v1,v0,42ba88 <call_server+0xc44>
  42ba7c:	00000000 	nop
  42ba80:	1000000e 	b	42babc <call_server+0xc78>
  42ba84:	00000000 	nop
  42ba88:	8f84802c 	lw	a0,-32724(gp)
  42ba8c:	00000000 	nop
  42ba90:	2484b930 	addiu	a0,a0,-18128
  42ba94:	8f85802c 	lw	a1,-32724(gp)
  42ba98:	00000000 	nop
  42ba9c:	24a5b4e4 	addiu	a1,a1,-19228
  42baa0:	24060358 	li	a2,856
  42baa4:	8f998bb8 	lw	t9,-29768(gp)
  42baa8:	00000000 	nop
  42baac:	0320f809 	jalr	t9
  42bab0:	00000000 	nop
  42bab4:	8fdc0018 	lw	gp,24(s8)
  42bab8:	00000000 	nop
		ndes--;
  42babc:	8fc20024 	lw	v0,36(s8)
  42bac0:	00000000 	nop
  42bac4:	2442ffff 	addiu	v0,v0,-1
  42bac8:	afc20024 	sw	v0,36(s8)
	    }
#endif

	    for (ifp = interfaces; ifp != NULL; ifp = ifp->next)
  42bacc:	8f828c10 	lw	v0,-29680(gp)
  42bad0:	00000000 	nop
  42bad4:	8c420000 	lw	v0,0(v0)
  42bad8:	00000000 	nop
  42badc:	afc20020 	sw	v0,32(s8)
  42bae0:	8fc20020 	lw	v0,32(s8)
  42bae4:	00000000 	nop
  42bae8:	14400003 	bnez	v0,42baf8 <call_server+0xcb4>
  42baec:	00000000 	nop
  42baf0:	10000067 	b	42bc90 <call_server+0xe4c>
  42baf4:	00000000 	nop
	    {
		if (FD_ISSET(ifp->fd, &readfds))
  42baf8:	8fc20020 	lw	v0,32(s8)
  42bafc:	00000000 	nop
  42bb00:	8c420024 	lw	v0,36(v0)
  42bb04:	00000000 	nop
  42bb08:	00021142 	srl	v0,v0,0x5
  42bb0c:	00021880 	sll	v1,v0,0x2
  42bb10:	27c200b0 	addiu	v0,s8,176
  42bb14:	00432021 	addu	a0,v0,v1
  42bb18:	8fc20020 	lw	v0,32(s8)
  42bb1c:	00000000 	nop
  42bb20:	8c420024 	lw	v0,36(v0)
  42bb24:	00000000 	nop
  42bb28:	3043001f 	andi	v1,v0,0x1f
  42bb2c:	8c820000 	lw	v0,0(a0)
  42bb30:	00000000 	nop
  42bb34:	00621007 	srav	v0,v0,v1
  42bb38:	30420001 	andi	v0,v0,0x1
  42bb3c:	1040004d 	beqz	v0,42bc74 <call_server+0xe30>
  42bb40:	00000000 	nop
		{
		    /* comm_handle will print DBG_CONTROL intro,
		     * with more info than we have here.
		     */

		    passert(ndes > 0);
  42bb44:	8fc20024 	lw	v0,36(s8)
  42bb48:	00000000 	nop
  42bb4c:	1c40000e 	bgtz	v0,42bb88 <call_server+0xd44>
  42bb50:	00000000 	nop
  42bb54:	8f84802c 	lw	a0,-32724(gp)
  42bb58:	00000000 	nop
  42bb5c:	2484b944 	addiu	a0,a0,-18108
  42bb60:	8f85802c 	lw	a1,-32724(gp)
  42bb64:	00000000 	nop
  42bb68:	24a5b4e4 	addiu	a1,a1,-19228
  42bb6c:	24060365 	li	a2,869
  42bb70:	8f998bb8 	lw	t9,-29768(gp)
  42bb74:	00000000 	nop
  42bb78:	0320f809 	jalr	t9
  42bb7c:	00000000 	nop
  42bb80:	8fdc0018 	lw	gp,24(s8)
  42bb84:	00000000 	nop
		    comm_handle(ifp);
  42bb88:	8fc40020 	lw	a0,32(s8)
  42bb8c:	8f998508 	lw	t9,-31480(gp)
  42bb90:	00000000 	nop
  42bb94:	0320f809 	jalr	t9
  42bb98:	00000000 	nop
  42bb9c:	8fdc0018 	lw	gp,24(s8)
  42bba0:	00000000 	nop
		    passert(GLOBALS_ARE_RESET());
  42bba4:	8f838994 	lw	v1,-30316(gp)
  42bba8:	00000000 	nop
  42bbac:	8c630000 	lw	v1,0(v1)
  42bbb0:	2402ffff 	li	v0,-1
  42bbb4:	1462001e 	bne	v1,v0,42bc30 <call_server+0xdec>
  42bbb8:	00000000 	nop
  42bbbc:	8f8287f8 	lw	v0,-30728(gp)
  42bbc0:	00000000 	nop
  42bbc4:	8c420000 	lw	v0,0(v0)
  42bbc8:	00000000 	nop
  42bbcc:	14400018 	bnez	v0,42bc30 <call_server+0xdec>
  42bbd0:	00000000 	nop
  42bbd4:	8f8288c8 	lw	v0,-30520(gp)
  42bbd8:	00000000 	nop
  42bbdc:	8c420000 	lw	v0,0(v0)
  42bbe0:	00000000 	nop
  42bbe4:	14400012 	bnez	v0,42bc30 <call_server+0xdec>
  42bbe8:	00000000 	nop
  42bbec:	8f828748 	lw	v0,-30904(gp)
  42bbf0:	00000000 	nop
  42bbf4:	8c420000 	lw	v0,0(v0)
  42bbf8:	00000000 	nop
  42bbfc:	1440000c 	bnez	v0,42bc30 <call_server+0xdec>
  42bc00:	00000000 	nop
  42bc04:	8f8384f8 	lw	v1,-31496(gp)
  42bc08:	00000000 	nop
  42bc0c:	8c630000 	lw	v1,0(v1)
  42bc10:	8f82830c 	lw	v0,-31988(gp)
  42bc14:	00000000 	nop
  42bc18:	8c420000 	lw	v0,0(v0)
  42bc1c:	00000000 	nop
  42bc20:	14620003 	bne	v1,v0,42bc30 <call_server+0xdec>
  42bc24:	00000000 	nop
  42bc28:	1000000e 	b	42bc64 <call_server+0xe20>
  42bc2c:	00000000 	nop
  42bc30:	8f84802c 	lw	a0,-32724(gp)
  42bc34:	00000000 	nop
  42bc38:	2484b930 	addiu	a0,a0,-18128
  42bc3c:	8f85802c 	lw	a1,-32724(gp)
  42bc40:	00000000 	nop
  42bc44:	24a5b4e4 	addiu	a1,a1,-19228
  42bc48:	24060367 	li	a2,871
  42bc4c:	8f998bb8 	lw	t9,-29768(gp)
  42bc50:	00000000 	nop
  42bc54:	0320f809 	jalr	t9
  42bc58:	00000000 	nop
  42bc5c:	8fdc0018 	lw	gp,24(s8)
  42bc60:	00000000 	nop
		    ndes--;
  42bc64:	8fc20024 	lw	v0,36(s8)
  42bc68:	00000000 	nop
  42bc6c:	2442ffff 	addiu	v0,v0,-1
  42bc70:	afc20024 	sw	v0,36(s8)
  42bc74:	8fc20020 	lw	v0,32(s8)
  42bc78:	00000000 	nop
  42bc7c:	8c420028 	lw	v0,40(v0)
  42bc80:	00000000 	nop
  42bc84:	afc20020 	sw	v0,32(s8)
  42bc88:	1000ff95 	b	42bae0 <call_server+0xc9c>
  42bc8c:	00000000 	nop
		}
	    }

	    if (FD_ISSET(ctl_fd, &readfds))
  42bc90:	8f828288 	lw	v0,-32120(gp)
  42bc94:	00000000 	nop
  42bc98:	8c420000 	lw	v0,0(v0)
  42bc9c:	00000000 	nop
  42bca0:	00021142 	srl	v0,v0,0x5
  42bca4:	00021880 	sll	v1,v0,0x2
  42bca8:	27c200b0 	addiu	v0,s8,176
  42bcac:	00432021 	addu	a0,v0,v1
  42bcb0:	8f828288 	lw	v0,-32120(gp)
  42bcb4:	00000000 	nop
  42bcb8:	8c420000 	lw	v0,0(v0)
  42bcbc:	00000000 	nop
  42bcc0:	3043001f 	andi	v1,v0,0x1f
  42bcc4:	8c820000 	lw	v0,0(a0)
  42bcc8:	00000000 	nop
  42bccc:	00621007 	srav	v0,v0,v1
  42bcd0:	30420001 	andi	v0,v0,0x1
  42bcd4:	10400068 	beqz	v0,42be78 <call_server+0x1034>
  42bcd8:	00000000 	nop
	    {
		passert(ndes > 0);
  42bcdc:	8fc20024 	lw	v0,36(s8)
  42bce0:	00000000 	nop
  42bce4:	1c40000e 	bgtz	v0,42bd20 <call_server+0xedc>
  42bce8:	00000000 	nop
  42bcec:	8f84802c 	lw	a0,-32724(gp)
  42bcf0:	00000000 	nop
  42bcf4:	2484b944 	addiu	a0,a0,-18108
  42bcf8:	8f85802c 	lw	a1,-32724(gp)
  42bcfc:	00000000 	nop
  42bd00:	24a5b4e4 	addiu	a1,a1,-19228
  42bd04:	2406036e 	li	a2,878
  42bd08:	8f998bb8 	lw	t9,-29768(gp)
  42bd0c:	00000000 	nop
  42bd10:	0320f809 	jalr	t9
  42bd14:	00000000 	nop
  42bd18:	8fdc0018 	lw	gp,24(s8)
  42bd1c:	00000000 	nop
		DBG(DBG_CONTROL,
  42bd20:	8f8284f8 	lw	v0,-31496(gp)
  42bd24:	00000000 	nop
  42bd28:	8c420000 	lw	v0,0(v0)
  42bd2c:	00000000 	nop
  42bd30:	30420010 	andi	v0,v0,0x10
  42bd34:	10400013 	beqz	v0,42bd84 <call_server+0xf40>
  42bd38:	00000000 	nop
  42bd3c:	8f84802c 	lw	a0,-32724(gp)
  42bd40:	00000000 	nop
  42bd44:	2484b914 	addiu	a0,a0,-18156
  42bd48:	8f9983b8 	lw	t9,-31816(gp)
  42bd4c:	00000000 	nop
  42bd50:	0320f809 	jalr	t9
  42bd54:	00000000 	nop
  42bd58:	8fdc0018 	lw	gp,24(s8)
  42bd5c:	00000000 	nop
  42bd60:	8f84802c 	lw	a0,-32724(gp)
  42bd64:	00000000 	nop
  42bd68:	2484b980 	addiu	a0,a0,-18048
  42bd6c:	8f9983b8 	lw	t9,-31816(gp)
  42bd70:	00000000 	nop
  42bd74:	0320f809 	jalr	t9
  42bd78:	00000000 	nop
  42bd7c:	8fdc0018 	lw	gp,24(s8)
  42bd80:	00000000 	nop
		    DBG_log(BLANK_FORMAT);
		    DBG_log("*received whack message"));
		whack_handle(ctl_fd);
  42bd84:	8f848288 	lw	a0,-32120(gp)
  42bd88:	00000000 	nop
  42bd8c:	8c840000 	lw	a0,0(a0)
  42bd90:	8f998c70 	lw	t9,-29584(gp)
  42bd94:	00000000 	nop
  42bd98:	0320f809 	jalr	t9
  42bd9c:	00000000 	nop
  42bda0:	8fdc0018 	lw	gp,24(s8)
  42bda4:	00000000 	nop
		passert(GLOBALS_ARE_RESET());
  42bda8:	8f838994 	lw	v1,-30316(gp)
  42bdac:	00000000 	nop
  42bdb0:	8c630000 	lw	v1,0(v1)
  42bdb4:	2402ffff 	li	v0,-1
  42bdb8:	1462001e 	bne	v1,v0,42be34 <call_server+0xff0>
  42bdbc:	00000000 	nop
  42bdc0:	8f8287f8 	lw	v0,-30728(gp)
  42bdc4:	00000000 	nop
  42bdc8:	8c420000 	lw	v0,0(v0)
  42bdcc:	00000000 	nop
  42bdd0:	14400018 	bnez	v0,42be34 <call_server+0xff0>
  42bdd4:	00000000 	nop
  42bdd8:	8f8288c8 	lw	v0,-30520(gp)
  42bddc:	00000000 	nop
  42bde0:	8c420000 	lw	v0,0(v0)
  42bde4:	00000000 	nop
  42bde8:	14400012 	bnez	v0,42be34 <call_server+0xff0>
  42bdec:	00000000 	nop
  42bdf0:	8f828748 	lw	v0,-30904(gp)
  42bdf4:	00000000 	nop
  42bdf8:	8c420000 	lw	v0,0(v0)
  42bdfc:	00000000 	nop
  42be00:	1440000c 	bnez	v0,42be34 <call_server+0xff0>
  42be04:	00000000 	nop
  42be08:	8f8384f8 	lw	v1,-31496(gp)
  42be0c:	00000000 	nop
  42be10:	8c630000 	lw	v1,0(v1)
  42be14:	8f82830c 	lw	v0,-31988(gp)
  42be18:	00000000 	nop
  42be1c:	8c420000 	lw	v0,0(v0)
  42be20:	00000000 	nop
  42be24:	14620003 	bne	v1,v0,42be34 <call_server+0xff0>
  42be28:	00000000 	nop
  42be2c:	1000000e 	b	42be68 <call_server+0x1024>
  42be30:	00000000 	nop
  42be34:	8f84802c 	lw	a0,-32724(gp)
  42be38:	00000000 	nop
  42be3c:	2484b930 	addiu	a0,a0,-18128
  42be40:	8f85802c 	lw	a1,-32724(gp)
  42be44:	00000000 	nop
  42be48:	24a5b4e4 	addiu	a1,a1,-19228
  42be4c:	24060373 	li	a2,883
  42be50:	8f998bb8 	lw	t9,-29768(gp)
  42be54:	00000000 	nop
  42be58:	0320f809 	jalr	t9
  42be5c:	00000000 	nop
  42be60:	8fdc0018 	lw	gp,24(s8)
  42be64:	00000000 	nop
		ndes--;
  42be68:	8fc20024 	lw	v0,36(s8)
  42be6c:	00000000 	nop
  42be70:	2442ffff 	addiu	v0,v0,-1
  42be74:	afc20024 	sw	v0,36(s8)
	    }

	    passert(ndes == 0);
  42be78:	8fc20024 	lw	v0,36(s8)
  42be7c:	00000000 	nop
  42be80:	1040fc41 	beqz	v0,42af88 <call_server+0x144>
  42be84:	00000000 	nop
  42be88:	8f84802c 	lw	a0,-32724(gp)
  42be8c:	00000000 	nop
  42be90:	2484b998 	addiu	a0,a0,-18024
  42be94:	8f85802c 	lw	a1,-32724(gp)
  42be98:	00000000 	nop
  42be9c:	24a5b4e4 	addiu	a1,a1,-19228
  42bea0:	24060377 	li	a2,887
  42bea4:	8f998bb8 	lw	t9,-29768(gp)
  42bea8:	00000000 	nop
  42beac:	0320f809 	jalr	t9
  42beb0:	00000000 	nop
  42beb4:	8fdc0018 	lw	gp,24(s8)
	...

0042bec0 <now>:
  42bec0:	3c1c0fbe 	lui	gp,0xfbe
  42bec4:	279c0ab0 	addiu	gp,gp,2736
  42bec8:	0399e021 	addu	gp,gp,t9
  42becc:	27bdffd0 	addiu	sp,sp,-48
  42bed0:	afbc0010 	sw	gp,16(sp)
  42bed4:	afbf0028 	sw	ra,40(sp)
  42bed8:	afbe0024 	sw	s8,36(sp)
  42bedc:	afbc0020 	sw	gp,32(sp)
  42bee0:	03a0f021 	move	s8,sp
now(void)
{
    static time_t delta = 0
	, last_time = 0;
    time_t n = time((time_t)NULL);
  42bee4:	00002021 	move	a0,zero
  42bee8:	8f9984b4 	lw	t9,-31564(gp)
  42beec:	00000000 	nop
  42bef0:	0320f809 	jalr	t9
  42bef4:	00000000 	nop
  42bef8:	8fdc0010 	lw	gp,16(s8)
  42befc:	afc20018 	sw	v0,24(s8)

    passert(n != (time_t)-1);
  42bf00:	8fc30018 	lw	v1,24(s8)
  42bf04:	2402ffff 	li	v0,-1
  42bf08:	1462000e 	bne	v1,v0,42bf44 <now+0x84>
  42bf0c:	00000000 	nop
  42bf10:	8f84802c 	lw	a0,-32724(gp)
  42bf14:	00000000 	nop
  42bf18:	2484b9b0 	addiu	a0,a0,-18000
  42bf1c:	8f85802c 	lw	a1,-32724(gp)
  42bf20:	00000000 	nop
  42bf24:	24a5b9c0 	addiu	a1,a1,-17984
  42bf28:	24060038 	li	a2,56
  42bf2c:	8f998bb8 	lw	t9,-29768(gp)
  42bf30:	00000000 	nop
  42bf34:	0320f809 	jalr	t9
  42bf38:	00000000 	nop
  42bf3c:	8fdc0010 	lw	gp,16(s8)
  42bf40:	00000000 	nop
    if (last_time > n)
  42bf44:	8fc20018 	lw	v0,24(s8)
  42bf48:	8f838018 	lw	v1,-32744(gp)
  42bf4c:	00000000 	nop
  42bf50:	246318b4 	addiu	v1,v1,6324
  42bf54:	8c630000 	lw	v1,0(v1)
  42bf58:	00000000 	nop
  42bf5c:	0043102a 	slt	v0,v0,v1
  42bf60:	10400023 	beqz	v0,42bff0 <now+0x130>
  42bf64:	00000000 	nop
    {
	plog("time moved backwards %ld seconds", (long)(last_time - n));
  42bf68:	8f838018 	lw	v1,-32744(gp)
  42bf6c:	00000000 	nop
  42bf70:	246318b4 	addiu	v1,v1,6324
  42bf74:	8c630000 	lw	v1,0(v1)
  42bf78:	8fc20018 	lw	v0,24(s8)
  42bf7c:	00000000 	nop
  42bf80:	00621023 	subu	v0,v1,v0
  42bf84:	8f84802c 	lw	a0,-32724(gp)
  42bf88:	00000000 	nop
  42bf8c:	2484b9c8 	addiu	a0,a0,-17976
  42bf90:	00402821 	move	a1,v0
  42bf94:	8f998abc 	lw	t9,-30020(gp)
  42bf98:	00000000 	nop
  42bf9c:	0320f809 	jalr	t9
  42bfa0:	00000000 	nop
  42bfa4:	8fdc0010 	lw	gp,16(s8)
  42bfa8:	00000000 	nop
	delta += last_time - n;
  42bfac:	8f838018 	lw	v1,-32744(gp)
  42bfb0:	00000000 	nop
  42bfb4:	246318b4 	addiu	v1,v1,6324
  42bfb8:	8c630000 	lw	v1,0(v1)
  42bfbc:	8fc20018 	lw	v0,24(s8)
  42bfc0:	00000000 	nop
  42bfc4:	00621823 	subu	v1,v1,v0
  42bfc8:	8f828018 	lw	v0,-32744(gp)
  42bfcc:	00000000 	nop
  42bfd0:	244218b0 	addiu	v0,v0,6320
  42bfd4:	8c420000 	lw	v0,0(v0)
  42bfd8:	00000000 	nop
  42bfdc:	00431021 	addu	v0,v0,v1
  42bfe0:	8f818018 	lw	at,-32744(gp)
  42bfe4:	00000000 	nop
  42bfe8:	242118b0 	addiu	at,at,6320
  42bfec:	ac220000 	sw	v0,0(at)
    }
    last_time = n;
  42bff0:	8fc20018 	lw	v0,24(s8)
  42bff4:	8f818018 	lw	at,-32744(gp)
  42bff8:	00000000 	nop
  42bffc:	242118b4 	addiu	at,at,6324
  42c000:	ac220000 	sw	v0,0(at)
    return n + delta;
  42c004:	8fc30018 	lw	v1,24(s8)
  42c008:	8f828018 	lw	v0,-32744(gp)
  42c00c:	00000000 	nop
  42c010:	244218b0 	addiu	v0,v0,6320
  42c014:	8c420000 	lw	v0,0(v0)
  42c018:	00000000 	nop
  42c01c:	00621021 	addu	v0,v1,v0
}
  42c020:	03c0e821 	move	sp,s8
  42c024:	8fbf0028 	lw	ra,40(sp)
  42c028:	8fbe0024 	lw	s8,36(sp)
  42c02c:	27bd0030 	addiu	sp,sp,48
  42c030:	03e00008 	jr	ra
  42c034:	00000000 	nop

0042c038 <event_schedule>:
  42c038:	3c1c0fbe 	lui	gp,0xfbe
  42c03c:	279c0938 	addiu	gp,gp,2360
  42c040:	0399e021 	addu	gp,gp,t9
  42c044:	27bdffd0 	addiu	sp,sp,-48
  42c048:	afbc0010 	sw	gp,16(sp)
  42c04c:	afbf002c 	sw	ra,44(sp)
  42c050:	afbe0028 	sw	s8,40(sp)
  42c054:	afbc0024 	sw	gp,36(sp)
  42c058:	afb00020 	sw	s0,32(sp)
  42c05c:	03a0f021 	move	s8,sp
  42c060:	afc40030 	sw	a0,48(s8)
  42c064:	afc50034 	sw	a1,52(s8)
  42c068:	afc60038 	sw	a2,56(s8)

/* This file has the event handling routines. Events are
 * kept as a linked list of event structures. These structures
 * have information like event type, expiration time and a pointer
 * to event specific data (for example, to a state structure).
 */

static struct event *evlist = (struct event *) NULL;

/*
 * This routine places an event in the event list.
 */
void
event_schedule(enum event_type type, time_t tm, struct state *st)
{
    struct event *ev = alloc_thing(struct event, "struct event in event_schedule()");
  42c06c:	24040010 	li	a0,16
  42c070:	8f85802c 	lw	a1,-32724(gp)
  42c074:	00000000 	nop
  42c078:	24a5b9ec 	addiu	a1,a1,-17940
  42c07c:	8f998084 	lw	t9,-32636(gp)
  42c080:	00000000 	nop
  42c084:	0320f809 	jalr	t9
  42c088:	00000000 	nop
  42c08c:	8fdc0010 	lw	gp,16(s8)
  42c090:	afc20018 	sw	v0,24(s8)

    ev->ev_type = type;
  42c094:	8fc30030 	lw	v1,48(s8)
  42c098:	8fc20018 	lw	v0,24(s8)
  42c09c:	00000000 	nop
  42c0a0:	ac430004 	sw	v1,4(v0)
    ev->ev_time = tm + now();
  42c0a4:	8fd00018 	lw	s0,24(s8)
  42c0a8:	8f998b58 	lw	t9,-29864(gp)
  42c0ac:	00000000 	nop
  42c0b0:	0320f809 	jalr	t9
  42c0b4:	00000000 	nop
  42c0b8:	8fdc0010 	lw	gp,16(s8)
  42c0bc:	00401821 	move	v1,v0
  42c0c0:	8fc20034 	lw	v0,52(s8)
  42c0c4:	00000000 	nop
  42c0c8:	00431021 	addu	v0,v0,v1
  42c0cc:	ae020000 	sw	v0,0(s0)
    ev->ev_state = st;
  42c0d0:	8fc30038 	lw	v1,56(s8)
  42c0d4:	8fc20018 	lw	v0,24(s8)
  42c0d8:	00000000 	nop
  42c0dc:	ac430008 	sw	v1,8(v0)

    /* If the event is associated with a state, put a backpointer to the
     * event in the state object, so we can find and delete the event
     * if we need to (for example, if we receive a reply).
     */
    if (st != NULL)
  42c0e0:	8fc20038 	lw	v0,56(s8)
  42c0e4:	00000000 	nop
  42c0e8:	1040003b 	beqz	v0,42c1d8 <event_schedule+0x1a0>
  42c0ec:	00000000 	nop
    {
#ifdef DPD
	    if(type == EVENT_DPD || type == EVENT_DPD_TIMEOUT)
  42c0f0:	8fc30030 	lw	v1,48(s8)
  42c0f4:	24020008 	li	v0,8
  42c0f8:	10620007 	beq	v1,v0,42c118 <event_schedule+0xe0>
  42c0fc:	00000000 	nop
  42c100:	8fc30030 	lw	v1,48(s8)
  42c104:	24020009 	li	v0,9
  42c108:	10620003 	beq	v1,v0,42c118 <event_schedule+0xe0>
  42c10c:	00000000 	nop
  42c110:	1000001a 	b	42c17c <event_schedule+0x144>
  42c114:	00000000 	nop
	    {
		    passert(st->st_dpd_event == NULL);
  42c118:	8fc20038 	lw	v0,56(s8)
  42c11c:	00000000 	nop
  42c120:	8c420298 	lw	v0,664(v0)
  42c124:	00000000 	nop
  42c128:	1040000e 	beqz	v0,42c164 <event_schedule+0x12c>
  42c12c:	00000000 	nop
  42c130:	8f84802c 	lw	a0,-32724(gp)
  42c134:	00000000 	nop
  42c138:	2484ba10 	addiu	a0,a0,-17904
  42c13c:	8f85802c 	lw	a1,-32724(gp)
  42c140:	00000000 	nop
  42c144:	24a5b9c0 	addiu	a1,a1,-17984
  42c148:	2406005f 	li	a2,95
  42c14c:	8f998bb8 	lw	t9,-29768(gp)
  42c150:	00000000 	nop
  42c154:	0320f809 	jalr	t9
  42c158:	00000000 	nop
  42c15c:	8fdc0010 	lw	gp,16(s8)
  42c160:	00000000 	nop
		    st->st_dpd_event = ev;
  42c164:	8fc30018 	lw	v1,24(s8)
  42c168:	8fc20038 	lw	v0,56(s8)
  42c16c:	00000000 	nop
  42c170:	ac430298 	sw	v1,664(v0)
  42c174:	10000018 	b	42c1d8 <event_schedule+0x1a0>
  42c178:	00000000 	nop
	    } else {
	passert(st->st_event == NULL);
  42c17c:	8fc20038 	lw	v0,56(s8)
  42c180:	00000000 	nop
  42c184:	8c420258 	lw	v0,600(v0)
  42c188:	00000000 	nop
  42c18c:	1040000e 	beqz	v0,42c1c8 <event_schedule+0x190>
  42c190:	00000000 	nop
  42c194:	8f84802c 	lw	a0,-32724(gp)
  42c198:	00000000 	nop
  42c19c:	2484ba2c 	addiu	a0,a0,-17876
  42c1a0:	8f85802c 	lw	a1,-32724(gp)
  42c1a4:	00000000 	nop
  42c1a8:	24a5b9c0 	addiu	a1,a1,-17984
  42c1ac:	24060062 	li	a2,98
  42c1b0:	8f998bb8 	lw	t9,-29768(gp)
  42c1b4:	00000000 	nop
  42c1b8:	0320f809 	jalr	t9
  42c1bc:	00000000 	nop
  42c1c0:	8fdc0010 	lw	gp,16(s8)
  42c1c4:	00000000 	nop
	st->st_event = ev;
  42c1c8:	8fc30018 	lw	v1,24(s8)
  42c1cc:	8fc20038 	lw	v0,56(s8)
  42c1d0:	00000000 	nop
  42c1d4:	ac430258 	sw	v1,600(v0)
    }
#else
	    passert(st->st_event == NULL);
            st->st_event = ev;
#endif
    }

    DBG(DBG_CONTROL,
  42c1d8:	8f8284f8 	lw	v0,-31496(gp)
  42c1dc:	00000000 	nop
  42c1e0:	8c420000 	lw	v0,0(v0)
  42c1e4:	00000000 	nop
  42c1e8:	30420010 	andi	v0,v0,0x10
  42c1ec:	1040002f 	beqz	v0,42c2ac <event_schedule+0x274>
  42c1f0:	00000000 	nop
  42c1f4:	8fc20038 	lw	v0,56(s8)
  42c1f8:	00000000 	nop
  42c1fc:	14400015 	bnez	v0,42c254 <event_schedule+0x21c>
  42c200:	00000000 	nop
  42c204:	8f8486b4 	lw	a0,-31052(gp)
  42c208:	8fc50030 	lw	a1,48(s8)
  42c20c:	8f9987fc 	lw	t9,-30724(gp)
  42c210:	00000000 	nop
  42c214:	0320f809 	jalr	t9
  42c218:	00000000 	nop
  42c21c:	8fdc0010 	lw	gp,16(s8)
  42c220:	00000000 	nop
  42c224:	8f84802c 	lw	a0,-32724(gp)
  42c228:	00000000 	nop
  42c22c:	2484ba44 	addiu	a0,a0,-17852
  42c230:	00402821 	move	a1,v0
  42c234:	8fc60034 	lw	a2,52(s8)
  42c238:	8f9983b8 	lw	t9,-31816(gp)
  42c23c:	00000000 	nop
  42c240:	0320f809 	jalr	t9
  42c244:	00000000 	nop
  42c248:	8fdc0010 	lw	gp,16(s8)
  42c24c:	10000017 	b	42c2ac <event_schedule+0x274>
  42c250:	00000000 	nop
  42c254:	8f8486b4 	lw	a0,-31052(gp)
  42c258:	8fc50030 	lw	a1,48(s8)
  42c25c:	8f9987fc 	lw	t9,-30724(gp)
  42c260:	00000000 	nop
  42c264:	0320f809 	jalr	t9
  42c268:	00000000 	nop
  42c26c:	8fdc0010 	lw	gp,16(s8)
  42c270:	8fc30018 	lw	v1,24(s8)
  42c274:	00000000 	nop
  42c278:	8c630008 	lw	v1,8(v1)
  42c27c:	8f84802c 	lw	a0,-32724(gp)
  42c280:	00000000 	nop
  42c284:	2484ba70 	addiu	a0,a0,-17808
  42c288:	00402821 	move	a1,v0
  42c28c:	8fc60034 	lw	a2,52(s8)
  42c290:	8c670000 	lw	a3,0(v1)
  42c294:	8f9983b8 	lw	t9,-31816(gp)
  42c298:	00000000 	nop
  42c29c:	0320f809 	jalr	t9
  42c2a0:	00000000 	nop
  42c2a4:	8fdc0010 	lw	gp,16(s8)
  42c2a8:	00000000 	nop
	if (st == NULL)
	    DBG_log("inserting event %s, timeout in %lu seconds"
		, enum_show(&timer_event_names, type), (unsigned long)tm);
	else
	    DBG_log("inserting event %s, timeout in %lu seconds for #%lu"
		, enum_show(&timer_event_names, type), (unsigned long)tm
		, ev->ev_state->st_serialno));

    if (evlist == (struct event *) NULL
    || evlist->ev_time >= ev->ev_time)
  42c2ac:	8f828018 	lw	v0,-32744(gp)
  42c2b0:	00000000 	nop
  42c2b4:	244218b8 	addiu	v0,v0,6328
  42c2b8:	8c420000 	lw	v0,0(v0)
  42c2bc:	00000000 	nop
  42c2c0:	10400010 	beqz	v0,42c304 <event_schedule+0x2cc>
  42c2c4:	00000000 	nop
  42c2c8:	8f828018 	lw	v0,-32744(gp)
  42c2cc:	00000000 	nop
  42c2d0:	244218b8 	addiu	v0,v0,6328
  42c2d4:	8c420000 	lw	v0,0(v0)
  42c2d8:	00000000 	nop
  42c2dc:	8c430000 	lw	v1,0(v0)
  42c2e0:	8fc20018 	lw	v0,24(s8)
  42c2e4:	00000000 	nop
  42c2e8:	8c420000 	lw	v0,0(v0)
  42c2ec:	00000000 	nop
  42c2f0:	0062102a 	slt	v0,v1,v0
  42c2f4:	10400003 	beqz	v0,42c304 <event_schedule+0x2cc>
  42c2f8:	00000000 	nop
  42c2fc:	1000000f 	b	42c33c <event_schedule+0x304>
  42c300:	00000000 	nop
    {
	ev->ev_next = evlist;
  42c304:	8f828018 	lw	v0,-32744(gp)
  42c308:	00000000 	nop
  42c30c:	244218b8 	addiu	v0,v0,6328
  42c310:	8c420000 	lw	v0,0(v0)
  42c314:	8fc30018 	lw	v1,24(s8)
  42c318:	00000000 	nop
  42c31c:	ac62000c 	sw	v0,12(v1)
	evlist = ev;
  42c320:	8fc20018 	lw	v0,24(s8)
  42c324:	8f818018 	lw	at,-32744(gp)
  42c328:	00000000 	nop
  42c32c:	242118b8 	addiu	at,at,6328
  42c330:	ac220000 	sw	v0,0(at)
  42c334:	1000002e 	b	42c3f0 <event_schedule+0x3b8>
  42c338:	00000000 	nop
    }
    else
    {
	struct event *evt;

	for (evt = evlist; evt->ev_next != NULL; evt = evt->ev_next)
  42c33c:	8f828018 	lw	v0,-32744(gp)
  42c340:	00000000 	nop
  42c344:	244218b8 	addiu	v0,v0,6328
  42c348:	8c420000 	lw	v0,0(v0)
  42c34c:	00000000 	nop
  42c350:	afc2001c 	sw	v0,28(s8)
  42c354:	8fc2001c 	lw	v0,28(s8)
  42c358:	00000000 	nop
  42c35c:	8c42000c 	lw	v0,12(v0)
  42c360:	00000000 	nop
  42c364:	14400003 	bnez	v0,42c374 <event_schedule+0x33c>
  42c368:	00000000 	nop
  42c36c:	10000016 	b	42c3c8 <event_schedule+0x390>
  42c370:	00000000 	nop
	    if (evt->ev_next->ev_time >= ev->ev_time)
  42c374:	8fc2001c 	lw	v0,28(s8)
  42c378:	00000000 	nop
  42c37c:	8c42000c 	lw	v0,12(v0)
  42c380:	00000000 	nop
  42c384:	8c430000 	lw	v1,0(v0)
  42c388:	8fc20018 	lw	v0,24(s8)
  42c38c:	00000000 	nop
  42c390:	8c420000 	lw	v0,0(v0)
  42c394:	00000000 	nop
  42c398:	0062102a 	slt	v0,v1,v0
  42c39c:	14400003 	bnez	v0,42c3ac <event_schedule+0x374>
  42c3a0:	00000000 	nop
		break;
  42c3a4:	10000008 	b	42c3c8 <event_schedule+0x390>
  42c3a8:	00000000 	nop
  42c3ac:	8fc2001c 	lw	v0,28(s8)
  42c3b0:	00000000 	nop
  42c3b4:	8c42000c 	lw	v0,12(v0)
  42c3b8:	00000000 	nop
  42c3bc:	afc2001c 	sw	v0,28(s8)
  42c3c0:	1000ffe4 	b	42c354 <event_schedule+0x31c>
  42c3c4:	00000000 	nop

#ifdef NEVER	/* this seems to be overkill */
	DBG(DBG_CONTROL,
	    if (evt->ev_state == NULL)
		DBG_log("event added after event %s"
		    , enum_show(&timer_event_names, evt->ev_type));
	    else
		DBG_log("event added after event %s for #%lu"
		    , enum_show(&timer_event_names, evt->ev_type)
		    , evt->ev_state->st_serialno));
#endif /* NEVER */

	ev->ev_next = evt->ev_next;
  42c3c8:	8fc2001c 	lw	v0,28(s8)
  42c3cc:	00000000 	nop
  42c3d0:	8c43000c 	lw	v1,12(v0)
  42c3d4:	8fc20018 	lw	v0,24(s8)
  42c3d8:	00000000 	nop
  42c3dc:	ac43000c 	sw	v1,12(v0)
	evt->ev_next = ev;
  42c3e0:	8fc30018 	lw	v1,24(s8)
  42c3e4:	8fc2001c 	lw	v0,28(s8)
  42c3e8:	00000000 	nop
  42c3ec:	ac43000c 	sw	v1,12(v0)
    }
}
  42c3f0:	03c0e821 	move	sp,s8
  42c3f4:	8fbf002c 	lw	ra,44(sp)
  42c3f8:	8fbe0028 	lw	s8,40(sp)
  42c3fc:	8fb00020 	lw	s0,32(sp)
  42c400:	27bd0030 	addiu	sp,sp,48
  42c404:	03e00008 	jr	ra
  42c408:	00000000 	nop

0042c40c <handle_timer_event>:
  42c40c:	3c1c0fbe 	lui	gp,0xfbe
  42c410:	279c0564 	addiu	gp,gp,1380
  42c414:	0399e021 	addu	gp,gp,t9
  42c418:	27bdff08 	addiu	sp,sp,-248
  42c41c:	afbc0018 	sw	gp,24(sp)
  42c420:	afbf00f0 	sw	ra,240(sp)
  42c424:	afbe00ec 	sw	s8,236(sp)
  42c428:	afbc00e8 	sw	gp,232(sp)
  42c42c:	03a0f021 	move	s8,sp

/*
 * Handle the first event on the list.
 */
void
handle_timer_event(void)
{
    time_t tm;
    struct event *ev = evlist;
  42c430:	8f828018 	lw	v0,-32744(gp)
  42c434:	00000000 	nop
  42c438:	244218b8 	addiu	v0,v0,6328
  42c43c:	8c420000 	lw	v0,0(v0)
  42c440:	00000000 	nop
  42c444:	afc20024 	sw	v0,36(s8)
    int type;
    struct state *st;
    struct connection *c;
    ip_address peer;

    if (ev == (struct event *) NULL)    /* Just paranoid */
  42c448:	8fc20024 	lw	v0,36(s8)
  42c44c:	00000000 	nop
  42c450:	14400013 	bnez	v0,42c4a0 <handle_timer_event+0x94>
  42c454:	00000000 	nop
    {
	DBG(DBG_CONTROL, DBG_log("empty event list, yet we're called"));
  42c458:	8f8284f8 	lw	v0,-31496(gp)
  42c45c:	00000000 	nop
  42c460:	8c420000 	lw	v0,0(v0)
  42c464:	00000000 	nop
  42c468:	30420010 	andi	v0,v0,0x10
  42c46c:	10400420 	beqz	v0,42d4f0 <handle_timer_event+0x10e4>
  42c470:	00000000 	nop
  42c474:	8f84802c 	lw	a0,-32724(gp)
  42c478:	00000000 	nop
  42c47c:	2484baa4 	addiu	a0,a0,-17756
  42c480:	8f9983b8 	lw	t9,-31816(gp)
  42c484:	00000000 	nop
  42c488:	0320f809 	jalr	t9
  42c48c:	00000000 	nop
  42c490:	8fdc0018 	lw	gp,24(s8)
  42c494:	00000000 	nop
	return;
  42c498:	10000415 	b	42d4f0 <handle_timer_event+0x10e4>
  42c49c:	00000000 	nop
    }

    type = ev->ev_type;
  42c4a0:	8fc20024 	lw	v0,36(s8)
  42c4a4:	00000000 	nop
  42c4a8:	8c420004 	lw	v0,4(v0)
  42c4ac:	00000000 	nop
  42c4b0:	afc20028 	sw	v0,40(s8)
    st = ev->ev_state;
  42c4b4:	8fc20024 	lw	v0,36(s8)
  42c4b8:	00000000 	nop
  42c4bc:	8c420008 	lw	v0,8(v0)
  42c4c0:	00000000 	nop
  42c4c4:	afc2002c 	sw	v0,44(s8)

    tm = now();
  42c4c8:	8f998b58 	lw	t9,-29864(gp)
  42c4cc:	00000000 	nop
  42c4d0:	0320f809 	jalr	t9
  42c4d4:	00000000 	nop
  42c4d8:	8fdc0018 	lw	gp,24(s8)
  42c4dc:	afc20020 	sw	v0,32(s8)

    if (tm < ev->ev_time)
  42c4e0:	8fc20024 	lw	v0,36(s8)
  42c4e4:	00000000 	nop
  42c4e8:	8c430000 	lw	v1,0(v0)
  42c4ec:	8fc20020 	lw	v0,32(s8)
  42c4f0:	00000000 	nop
  42c4f4:	0043102a 	slt	v0,v0,v1
  42c4f8:	10400020 	beqz	v0,42c57c <handle_timer_event+0x170>
  42c4fc:	00000000 	nop
    {
	DBG(DBG_CONTROL, DBG_log("called while no event expired (%lu/%lu, %s)"
  42c500:	8f8284f8 	lw	v0,-31496(gp)
  42c504:	00000000 	nop
  42c508:	8c420000 	lw	v0,0(v0)
  42c50c:	00000000 	nop
  42c510:	30420010 	andi	v0,v0,0x10
  42c514:	104003f6 	beqz	v0,42d4f0 <handle_timer_event+0x10e4>
  42c518:	00000000 	nop
  42c51c:	8f8486b4 	lw	a0,-31052(gp)
  42c520:	8fc50028 	lw	a1,40(s8)
  42c524:	8f9987fc 	lw	t9,-30724(gp)
  42c528:	00000000 	nop
  42c52c:	0320f809 	jalr	t9
  42c530:	00000000 	nop
  42c534:	8fdc0018 	lw	gp,24(s8)
  42c538:	00401821 	move	v1,v0
  42c53c:	8f84802c 	lw	a0,-32724(gp)
  42c540:	00000000 	nop
  42c544:	2484bac8 	addiu	a0,a0,-17720
  42c548:	8fc50020 	lw	a1,32(s8)
  42c54c:	8fc20024 	lw	v0,36(s8)
  42c550:	00000000 	nop
  42c554:	8c460000 	lw	a2,0(v0)
  42c558:	00603821 	move	a3,v1
  42c55c:	8f9983b8 	lw	t9,-31816(gp)
  42c560:	00000000 	nop
  42c564:	0320f809 	jalr	t9
  42c568:	00000000 	nop
  42c56c:	8fdc0018 	lw	gp,24(s8)
  42c570:	00000000 	nop
	    , (unsigned long)tm, (unsigned long)ev->ev_time
	    , enum_show(&timer_event_names, type)));

	/* This will happen if the most close-to-expire event was
	 * a retransmission or cleanup, and we received a packet
	 * at the same time as the event expired. Due to the processing
	 * order in call_server(), the packet processing will happen first,
	 * and the event will be removed.
	 */
	return;
  42c574:	100003de 	b	42d4f0 <handle_timer_event+0x10e4>
  42c578:	00000000 	nop
    }

    evlist = evlist->ev_next;		/* Ok, we'll handle this event */
  42c57c:	8f828018 	lw	v0,-32744(gp)
  42c580:	00000000 	nop
  42c584:	244218b8 	addiu	v0,v0,6328
  42c588:	8c420000 	lw	v0,0(v0)
  42c58c:	00000000 	nop
  42c590:	8c42000c 	lw	v0,12(v0)
  42c594:	8f818018 	lw	at,-32744(gp)
  42c598:	00000000 	nop
  42c59c:	242118b8 	addiu	at,at,6328
  42c5a0:	ac220000 	sw	v0,0(at)

    DBG(DBG_CONTROL,
  42c5a4:	8f8284f8 	lw	v0,-31496(gp)
  42c5a8:	00000000 	nop
  42c5ac:	8c420000 	lw	v0,0(v0)
  42c5b0:	00000000 	nop
  42c5b4:	30420010 	andi	v0,v0,0x10
  42c5b8:	10400028 	beqz	v0,42c65c <handle_timer_event+0x250>
  42c5bc:	00000000 	nop
  42c5c0:	8f828018 	lw	v0,-32744(gp)
  42c5c4:	00000000 	nop
  42c5c8:	244218b8 	addiu	v0,v0,6328
  42c5cc:	8c420000 	lw	v0,0(v0)
  42c5d0:	00000000 	nop
  42c5d4:	10400021 	beqz	v0,42c65c <handle_timer_event+0x250>
  42c5d8:	00000000 	nop
  42c5dc:	8f8486b4 	lw	a0,-31052(gp)
  42c5e0:	8f828018 	lw	v0,-32744(gp)
  42c5e4:	00000000 	nop
  42c5e8:	244218b8 	addiu	v0,v0,6328
  42c5ec:	8c420000 	lw	v0,0(v0)
  42c5f0:	00000000 	nop
  42c5f4:	8c450004 	lw	a1,4(v0)
  42c5f8:	8f9987fc 	lw	t9,-30724(gp)
  42c5fc:	00000000 	nop
  42c600:	0320f809 	jalr	t9
  42c604:	00000000 	nop
  42c608:	8fdc0018 	lw	gp,24(s8)
  42c60c:	00402821 	move	a1,v0
  42c610:	8f828018 	lw	v0,-32744(gp)
  42c614:	00000000 	nop
  42c618:	244218b8 	addiu	v0,v0,6328
  42c61c:	8c420000 	lw	v0,0(v0)
  42c620:	00000000 	nop
  42c624:	8c430000 	lw	v1,0(v0)
  42c628:	8fc20020 	lw	v0,32(s8)
  42c62c:	00000000 	nop
  42c630:	00621023 	subu	v0,v1,v0
  42c634:	8f84802c 	lw	a0,-32724(gp)
  42c638:	00000000 	nop
  42c63c:	2484baf4 	addiu	a0,a0,-17676
  42c640:	00403021 	move	a2,v0
  42c644:	8f9983b8 	lw	t9,-31816(gp)
  42c648:	00000000 	nop
  42c64c:	0320f809 	jalr	t9
  42c650:	00000000 	nop
  42c654:	8fdc0018 	lw	gp,24(s8)
  42c658:	00000000 	nop
	if (evlist != (struct event *) NULL)
	    DBG_log("event after this is %s in %ld seconds",
		enum_show(&timer_event_names, evlist->ev_type),
		(long) (evlist->ev_time - tm)));

    /* for state-associated events, pick up the state pointer
     * and remove the backpointer from the state object.
     * We'll eventually either schedule a new event, or delete the state.
     */
    passert(GLOBALS_ARE_RESET());
  42c65c:	8f838994 	lw	v1,-30316(gp)
  42c660:	00000000 	nop
  42c664:	8c630000 	lw	v1,0(v1)
  42c668:	2402ffff 	li	v0,-1
  42c66c:	1462001e 	bne	v1,v0,42c6e8 <handle_timer_event+0x2dc>
  42c670:	00000000 	nop
  42c674:	8f8287f8 	lw	v0,-30728(gp)
  42c678:	00000000 	nop
  42c67c:	8c420000 	lw	v0,0(v0)
  42c680:	00000000 	nop
  42c684:	14400018 	bnez	v0,42c6e8 <handle_timer_event+0x2dc>
  42c688:	00000000 	nop
  42c68c:	8f8288c8 	lw	v0,-30520(gp)
  42c690:	00000000 	nop
  42c694:	8c420000 	lw	v0,0(v0)
  42c698:	00000000 	nop
  42c69c:	14400012 	bnez	v0,42c6e8 <handle_timer_event+0x2dc>
  42c6a0:	00000000 	nop
  42c6a4:	8f828748 	lw	v0,-30904(gp)
  42c6a8:	00000000 	nop
  42c6ac:	8c420000 	lw	v0,0(v0)
  42c6b0:	00000000 	nop
  42c6b4:	1440000c 	bnez	v0,42c6e8 <handle_timer_event+0x2dc>
  42c6b8:	00000000 	nop
  42c6bc:	8f8384f8 	lw	v1,-31496(gp)
  42c6c0:	00000000 	nop
  42c6c4:	8c630000 	lw	v1,0(v1)
  42c6c8:	8f82830c 	lw	v0,-31988(gp)
  42c6cc:	00000000 	nop
  42c6d0:	8c420000 	lw	v0,0(v0)
  42c6d4:	00000000 	nop
  42c6d8:	14620003 	bne	v1,v0,42c6e8 <handle_timer_event+0x2dc>
  42c6dc:	00000000 	nop
  42c6e0:	1000000e 	b	42c71c <handle_timer_event+0x310>
  42c6e4:	00000000 	nop
  42c6e8:	8f84802c 	lw	a0,-32724(gp)
  42c6ec:	00000000 	nop
  42c6f0:	2484bb1c 	addiu	a0,a0,-17636
  42c6f4:	8f85802c 	lw	a1,-32724(gp)
  42c6f8:	00000000 	nop
  42c6fc:	24a5b9c0 	addiu	a1,a1,-17984
  42c700:	240600c5 	li	a2,197
  42c704:	8f998bb8 	lw	t9,-29768(gp)
  42c708:	00000000 	nop
  42c70c:	0320f809 	jalr	t9
  42c710:	00000000 	nop
  42c714:	8fdc0018 	lw	gp,24(s8)
  42c718:	00000000 	nop
    if (st != NULL)
  42c71c:	8fc2002c 	lw	v0,44(s8)
  42c720:	00000000 	nop
  42c724:	10400064 	beqz	v0,42c8b8 <handle_timer_event+0x4ac>
  42c728:	00000000 	nop
    {
	c = st->st_connection;
  42c72c:	8fc2002c 	lw	v0,44(s8)
  42c730:	00000000 	nop
  42c734:	8c42000c 	lw	v0,12(v0)
  42c738:	00000000 	nop
  42c73c:	afc20030 	sw	v0,48(s8)
#ifdef DPD
	if( type  == EVENT_DPD || type == EVENT_DPD_TIMEOUT)
  42c740:	8fc30028 	lw	v1,40(s8)
  42c744:	24020008 	li	v0,8
  42c748:	10620007 	beq	v1,v0,42c768 <handle_timer_event+0x35c>
  42c74c:	00000000 	nop
  42c750:	8fc30028 	lw	v1,40(s8)
  42c754:	24020009 	li	v0,9
  42c758:	10620003 	beq	v1,v0,42c768 <handle_timer_event+0x35c>
  42c75c:	00000000 	nop
  42c760:	1000001a 	b	42c7cc <handle_timer_event+0x3c0>
  42c764:	00000000 	nop
	{
		passert(st->st_dpd_event == ev);
  42c768:	8fc2002c 	lw	v0,44(s8)
  42c76c:	00000000 	nop
  42c770:	8c430298 	lw	v1,664(v0)
  42c774:	8fc20024 	lw	v0,36(s8)
  42c778:	00000000 	nop
  42c77c:	1062000e 	beq	v1,v0,42c7b8 <handle_timer_event+0x3ac>
  42c780:	00000000 	nop
  42c784:	8f84802c 	lw	a0,-32724(gp)
  42c788:	00000000 	nop
  42c78c:	2484bb30 	addiu	a0,a0,-17616
  42c790:	8f85802c 	lw	a1,-32724(gp)
  42c794:	00000000 	nop
  42c798:	24a5b9c0 	addiu	a1,a1,-17984
  42c79c:	240600cc 	li	a2,204
  42c7a0:	8f998bb8 	lw	t9,-29768(gp)
  42c7a4:	00000000 	nop
  42c7a8:	0320f809 	jalr	t9
  42c7ac:	00000000 	nop
  42c7b0:	8fdc0018 	lw	gp,24(s8)
  42c7b4:	00000000 	nop
		st->st_dpd_event = NULL;
  42c7b8:	8fc2002c 	lw	v0,44(s8)
  42c7bc:	00000000 	nop
  42c7c0:	ac400298 	sw	zero,664(v0)
  42c7c4:	10000018 	b	42c828 <handle_timer_event+0x41c>
  42c7c8:	00000000 	nop
	} else {
	passert(st->st_event == ev);
  42c7cc:	8fc2002c 	lw	v0,44(s8)
  42c7d0:	00000000 	nop
  42c7d4:	8c430258 	lw	v1,600(v0)
  42c7d8:	8fc20024 	lw	v0,36(s8)
  42c7dc:	00000000 	nop
  42c7e0:	1062000e 	beq	v1,v0,42c81c <handle_timer_event+0x410>
  42c7e4:	00000000 	nop
  42c7e8:	8f84802c 	lw	a0,-32724(gp)
  42c7ec:	00000000 	nop
  42c7f0:	2484bb48 	addiu	a0,a0,-17592
  42c7f4:	8f85802c 	lw	a1,-32724(gp)
  42c7f8:	00000000 	nop
  42c7fc:	24a5b9c0 	addiu	a1,a1,-17984
  42c800:	240600cf 	li	a2,207
  42c804:	8f998bb8 	lw	t9,-29768(gp)
  42c808:	00000000 	nop
  42c80c:	0320f809 	jalr	t9
  42c810:	00000000 	nop
  42c814:	8fdc0018 	lw	gp,24(s8)
  42c818:	00000000 	nop
	st->st_event = NULL;
  42c81c:	8fc2002c 	lw	v0,44(s8)
  42c820:	00000000 	nop
  42c824:	ac400258 	sw	zero,600(v0)
	}
#else
	passert(st->st_event == ev);
	st->st_event = NULL;
#endif
	peer = c->that.host_addr;
  42c828:	8fc30030 	lw	v1,48(s8)
  42c82c:	00000000 	nop
  42c830:	8c620108 	lw	v0,264(v1)
  42c834:	00000000 	nop
  42c838:	afc20038 	sw	v0,56(s8)
  42c83c:	8c62010c 	lw	v0,268(v1)
  42c840:	00000000 	nop
  42c844:	afc2003c 	sw	v0,60(s8)
  42c848:	8c620110 	lw	v0,272(v1)
  42c84c:	00000000 	nop
  42c850:	afc20040 	sw	v0,64(s8)
  42c854:	8c620114 	lw	v0,276(v1)
  42c858:	00000000 	nop
  42c85c:	afc20044 	sw	v0,68(s8)
  42c860:	8c620118 	lw	v0,280(v1)
  42c864:	00000000 	nop
  42c868:	afc20048 	sw	v0,72(s8)
  42c86c:	8c62011c 	lw	v0,284(v1)
  42c870:	00000000 	nop
  42c874:	afc2004c 	sw	v0,76(s8)
  42c878:	8c620120 	lw	v0,288(v1)
  42c87c:	00000000 	nop
  42c880:	afc20050 	sw	v0,80(s8)
	set_cur_state(st);
  42c884:	8fc2002c 	lw	v0,44(s8)
  42c888:	8f8187f8 	lw	at,-30728(gp)
  42c88c:	00000000 	nop
  42c890:	ac220000 	sw	v0,0(at)
  42c894:	8fc2002c 	lw	v0,44(s8)
  42c898:	00000000 	nop
  42c89c:	8c44000c 	lw	a0,12(v0)
  42c8a0:	8f998be4 	lw	t9,-29724(gp)
  42c8a4:	00000000 	nop
  42c8a8:	0320f809 	jalr	t9
  42c8ac:	00000000 	nop
  42c8b0:	8fdc0018 	lw	gp,24(s8)
  42c8b4:	00000000 	nop
    }

    switch (type)
  42c8b8:	8fc20028 	lw	v0,40(s8)
  42c8bc:	00000000 	nop
  42c8c0:	2442ffff 	addiu	v0,v0,-1
  42c8c4:	afc200e0 	sw	v0,224(s8)
  42c8c8:	8fc300e0 	lw	v1,224(s8)
  42c8cc:	00000000 	nop
  42c8d0:	2c620009 	sltiu	v0,v1,9
  42c8d4:	104002e4 	beqz	v0,42d468 <handle_timer_event+0x105c>
  42c8d8:	00000000 	nop
  42c8dc:	8fc200e0 	lw	v0,224(s8)
  42c8e0:	00000000 	nop
  42c8e4:	00021080 	sll	v0,v0,0x2
  42c8e8:	8f81802c 	lw	at,-32724(gp)
  42c8ec:	00000000 	nop
  42c8f0:	2421be90 	addiu	at,at,-16752
  42c8f4:	00221021 	addu	v0,at,v0
  42c8f8:	8c420000 	lw	v0,0(v0)
  42c8fc:	00000000 	nop
  42c900:	005c1021 	addu	v0,v0,gp
  42c904:	00400008 	jr	v0
  42c908:	00000000 	nop
    {
	case EVENT_REINIT_SECRET:
	    passert(st == NULL);
  42c90c:	8fc2002c 	lw	v0,44(s8)
  42c910:	00000000 	nop
  42c914:	1040000e 	beqz	v0,42c950 <handle_timer_event+0x544>
  42c918:	00000000 	nop
  42c91c:	8f84802c 	lw	a0,-32724(gp)
  42c920:	00000000 	nop
  42c924:	2484bb5c 	addiu	a0,a0,-17572
  42c928:	8f85802c 	lw	a1,-32724(gp)
  42c92c:	00000000 	nop
  42c930:	24a5b9c0 	addiu	a1,a1,-17984
  42c934:	240600dd 	li	a2,221
  42c938:	8f998bb8 	lw	t9,-29768(gp)
  42c93c:	00000000 	nop
  42c940:	0320f809 	jalr	t9
  42c944:	00000000 	nop
  42c948:	8fdc0018 	lw	gp,24(s8)
  42c94c:	00000000 	nop
	    DBG(DBG_CONTROL, DBG_log("event EVENT_REINIT_SECRET handled"));
  42c950:	8f8284f8 	lw	v0,-31496(gp)
  42c954:	00000000 	nop
  42c958:	8c420000 	lw	v0,0(v0)
  42c95c:	00000000 	nop
  42c960:	30420010 	andi	v0,v0,0x10
  42c964:	1040000a 	beqz	v0,42c990 <handle_timer_event+0x584>
  42c968:	00000000 	nop
  42c96c:	8f84802c 	lw	a0,-32724(gp)
  42c970:	00000000 	nop
  42c974:	2484bb68 	addiu	a0,a0,-17560
  42c978:	8f9983b8 	lw	t9,-31816(gp)
  42c97c:	00000000 	nop
  42c980:	0320f809 	jalr	t9
  42c984:	00000000 	nop
  42c988:	8fdc0018 	lw	gp,24(s8)
  42c98c:	00000000 	nop
	    init_secret();
  42c990:	8f998a68 	lw	t9,-30104(gp)
  42c994:	00000000 	nop
  42c998:	0320f809 	jalr	t9
  42c99c:	00000000 	nop
  42c9a0:	8fdc0018 	lw	gp,24(s8)
  42c9a4:	00000000 	nop
	    break;
  42c9a8:	100002c1 	b	42d4b0 <handle_timer_event+0x10a4>
  42c9ac:	00000000 	nop

#ifdef KLIPS
	case EVENT_SHUNT_SCAN:
	    passert(st == NULL);
  42c9b0:	8fc2002c 	lw	v0,44(s8)
  42c9b4:	00000000 	nop
  42c9b8:	1040000e 	beqz	v0,42c9f4 <handle_timer_event+0x5e8>
  42c9bc:	00000000 	nop
  42c9c0:	8f84802c 	lw	a0,-32724(gp)
  42c9c4:	00000000 	nop
  42c9c8:	2484bb5c 	addiu	a0,a0,-17572
  42c9cc:	8f85802c 	lw	a1,-32724(gp)
  42c9d0:	00000000 	nop
  42c9d4:	24a5b9c0 	addiu	a1,a1,-17984
  42c9d8:	240600e4 	li	a2,228
  42c9dc:	8f998bb8 	lw	t9,-29768(gp)
  42c9e0:	00000000 	nop
  42c9e4:	0320f809 	jalr	t9
  42c9e8:	00000000 	nop
  42c9ec:	8fdc0018 	lw	gp,24(s8)
  42c9f0:	00000000 	nop
	    scan_proc_shunts();
  42c9f4:	8f9981d0 	lw	t9,-32304(gp)
  42c9f8:	00000000 	nop
  42c9fc:	0320f809 	jalr	t9
  42ca00:	00000000 	nop
  42ca04:	8fdc0018 	lw	gp,24(s8)
  42ca08:	00000000 	nop
	    break;
  42ca0c:	100002a8 	b	42d4b0 <handle_timer_event+0x10a4>
  42ca10:	00000000 	nop
#endif

	case EVENT_RETRANSMIT:
	    /* Time to retransmit, or give up.
	     *
	     * Generally, we'll only try to send the message
	     * MAXIMUM_RETRANSMISSIONS times.  Each time we double
	     * our patience.
	     *
	     * As a special case, if this is the first initiating message
	     * of a Main Mode exchange, and we have been directed to try
	     * forever, we'll extend the number of retransmissions to
	     * MAXIMUM_RETRANSMISSIONS_INITIAL times, with all these
	     * extended attempts having the same patience.  The intention
	     * is to reduce the bother when nobody is home.
	     */
	    {
		time_t delay = 0;
  42ca14:	afc00058 	sw	zero,88(s8)

		DBG(DBG_CONTROL, DBG_log(
  42ca18:	8f8284f8 	lw	v0,-31496(gp)
  42ca1c:	00000000 	nop
  42ca20:	8c420000 	lw	v0,0(v0)
  42ca24:	00000000 	nop
  42ca28:	30420010 	andi	v0,v0,0x10
  42ca2c:	10400018 	beqz	v0,42ca90 <handle_timer_event+0x684>
  42ca30:	00000000 	nop
  42ca34:	27c40038 	addiu	a0,s8,56
  42ca38:	8f998100 	lw	t9,-32512(gp)
  42ca3c:	00000000 	nop
  42ca40:	0320f809 	jalr	t9
  42ca44:	00000000 	nop
  42ca48:	8fdc0018 	lw	gp,24(s8)
  42ca4c:	00000000 	nop
  42ca50:	8f84802c 	lw	a0,-32724(gp)
  42ca54:	00000000 	nop
  42ca58:	2484bb8c 	addiu	a0,a0,-17524
  42ca5c:	00402821 	move	a1,v0
  42ca60:	8fc20030 	lw	v0,48(s8)
  42ca64:	00000000 	nop
  42ca68:	8c460000 	lw	a2,0(v0)
  42ca6c:	8fc2002c 	lw	v0,44(s8)
  42ca70:	00000000 	nop
  42ca74:	8c470000 	lw	a3,0(v0)
  42ca78:	8f9983b8 	lw	t9,-31816(gp)
  42ca7c:	00000000 	nop
  42ca80:	0320f809 	jalr	t9
  42ca84:	00000000 	nop
  42ca88:	8fdc0018 	lw	gp,24(s8)
  42ca8c:	00000000 	nop
		    "handling event EVENT_RETRANSMIT for %s \"%s\" #%lu"
		    , ip_str(&peer), c->name, st->st_serialno));

		if (st->st_retransmit < MAXIMUM_RETRANSMISSIONS)
  42ca90:	8fc2002c 	lw	v0,44(s8)
  42ca94:	00000000 	nop
  42ca98:	90420150 	lbu	v0,336(v0)
  42ca9c:	00000000 	nop
  42caa0:	2c420002 	sltiu	v0,v0,2
  42caa4:	1040000b 	beqz	v0,42cad4 <handle_timer_event+0x6c8>
  42caa8:	00000000 	nop
		    delay = EVENT_RETRANSMIT_DELAY_0 << (st->st_retransmit + 1);
  42caac:	8fc2002c 	lw	v0,44(s8)
  42cab0:	00000000 	nop
  42cab4:	90420150 	lbu	v0,336(v0)
  42cab8:	00000000 	nop
  42cabc:	24430001 	addiu	v1,v0,1
  42cac0:	2402000a 	li	v0,10
  42cac4:	00621004 	sllv	v0,v0,v1
  42cac8:	afc20058 	sw	v0,88(s8)
  42cacc:	1000001e 	b	42cb48 <handle_timer_event+0x73c>
  42cad0:	00000000 	nop
		else if ((st->st_state == STATE_MAIN_I1 || st->st_state == STATE_AGGR_I1)
		&& c->sa_keying_tries == 0
		&& st->st_retransmit < MAXIMUM_RETRANSMISSIONS_INITIAL)
  42cad4:	8fc2002c 	lw	v0,44(s8)
  42cad8:	00000000 	nop
  42cadc:	8c43014c 	lw	v1,332(v0)
  42cae0:	24020004 	li	v0,4
  42cae4:	10620009 	beq	v1,v0,42cb0c <handle_timer_event+0x700>
  42cae8:	00000000 	nop
  42caec:	8fc2002c 	lw	v0,44(s8)
  42caf0:	00000000 	nop
  42caf4:	8c43014c 	lw	v1,332(v0)
  42caf8:	2402000c 	li	v0,12
  42cafc:	10620003 	beq	v1,v0,42cb0c <handle_timer_event+0x700>
  42cb00:	00000000 	nop
  42cb04:	10000010 	b	42cb48 <handle_timer_event+0x73c>
  42cb08:	00000000 	nop
  42cb0c:	8fc20030 	lw	v0,48(s8)
  42cb10:	00000000 	nop
  42cb14:	8c420020 	lw	v0,32(v0)
  42cb18:	00000000 	nop
  42cb1c:	1440000a 	bnez	v0,42cb48 <handle_timer_event+0x73c>
  42cb20:	00000000 	nop
  42cb24:	8fc2002c 	lw	v0,44(s8)
  42cb28:	00000000 	nop
  42cb2c:	90420150 	lbu	v0,336(v0)
  42cb30:	00000000 	nop
  42cb34:	2c420014 	sltiu	v0,v0,20
  42cb38:	10400003 	beqz	v0,42cb48 <handle_timer_event+0x73c>
  42cb3c:	00000000 	nop
		    delay = EVENT_RETRANSMIT_DELAY_0 << MAXIMUM_RETRANSMISSIONS;
  42cb40:	24020028 	li	v0,40
  42cb44:	afc20058 	sw	v0,88(s8)

		if (delay != 0)
  42cb48:	8fc20058 	lw	v0,88(s8)
  42cb4c:	00000000 	nop
  42cb50:	10400033 	beqz	v0,42cc20 <handle_timer_event+0x814>
  42cb54:	00000000 	nop
		{
		    st->st_retransmit++;
  42cb58:	8fc2002c 	lw	v0,44(s8)
  42cb5c:	00000000 	nop
  42cb60:	90420150 	lbu	v0,336(v0)
  42cb64:	00000000 	nop
  42cb68:	24430001 	addiu	v1,v0,1
  42cb6c:	8fc2002c 	lw	v0,44(s8)
  42cb70:	00000000 	nop
  42cb74:	a0430150 	sb	v1,336(v0)
		    whack_log(RC_RETRANSMISSION
  42cb78:	8f8483b0 	lw	a0,-31824(gp)
  42cb7c:	8fc2002c 	lw	v0,44(s8)
  42cb80:	00000000 	nop
  42cb84:	8c45014c 	lw	a1,332(v0)
  42cb88:	8f9984bc 	lw	t9,-31556(gp)
  42cb8c:	00000000 	nop
  42cb90:	0320f809 	jalr	t9
  42cb94:	00000000 	nop
  42cb98:	8fdc0018 	lw	gp,24(s8)
  42cb9c:	2404000a 	li	a0,10
  42cba0:	8f85802c 	lw	a1,-32724(gp)
  42cba4:	00000000 	nop
  42cba8:	24a5bbc0 	addiu	a1,a1,-17472
  42cbac:	00403021 	move	a2,v0
  42cbb0:	8fc70058 	lw	a3,88(s8)
  42cbb4:	8f9982a8 	lw	t9,-32088(gp)
  42cbb8:	00000000 	nop
  42cbbc:	0320f809 	jalr	t9
  42cbc0:	00000000 	nop
  42cbc4:	8fdc0018 	lw	gp,24(s8)
  42cbc8:	00000000 	nop
			, "%s: retransmission; will wait %lus for response"
			, enum_name(&state_names, st->st_state)
			, (unsigned long)delay);
		    send_packet(st, "EVENT_RETRANSMIT");
  42cbcc:	8fc4002c 	lw	a0,44(s8)
  42cbd0:	8f85802c 	lw	a1,-32724(gp)
  42cbd4:	00000000 	nop
  42cbd8:	24a5bbf0 	addiu	a1,a1,-17424
  42cbdc:	24060001 	li	a2,1
  42cbe0:	8f9987f0 	lw	t9,-30736(gp)
  42cbe4:	00000000 	nop
  42cbe8:	0320f809 	jalr	t9
  42cbec:	00000000 	nop
  42cbf0:	8fdc0018 	lw	gp,24(s8)
  42cbf4:	00000000 	nop
		    event_schedule(EVENT_RETRANSMIT, delay, st);
  42cbf8:	24040004 	li	a0,4
  42cbfc:	8fc50058 	lw	a1,88(s8)
  42cc00:	8fc6002c 	lw	a2,44(s8)
  42cc04:	8f998410 	lw	t9,-31728(gp)
  42cc08:	00000000 	nop
  42cc0c:	0320f809 	jalr	t9
  42cc10:	00000000 	nop
  42cc14:	8fdc0018 	lw	gp,24(s8)
  42cc18:	10000225 	b	42d4b0 <handle_timer_event+0x10a4>
  42cc1c:	00000000 	nop
		}
		else
		{
		    /* check if we've tried rekeying enough times.
		     * st->st_try == 0 means that this should be the only try.
		     * c->sa_keying_tries == 0 means that there is no limit.
		     */
		    unsigned long try = st->st_try;
  42cc20:	8fc2002c 	lw	v0,44(s8)
  42cc24:	00000000 	nop
  42cc28:	8c420154 	lw	v0,340(v0)
  42cc2c:	00000000 	nop
  42cc30:	afc2005c 	sw	v0,92(s8)
		    unsigned long try_limit = c->sa_keying_tries;
  42cc34:	8fc20030 	lw	v0,48(s8)
  42cc38:	00000000 	nop
  42cc3c:	8c420020 	lw	v0,32(v0)
  42cc40:	00000000 	nop
  42cc44:	afc20060 	sw	v0,96(s8)
		    const char *details = "";
  42cc48:	8f82802c 	lw	v0,-32724(gp)
  42cc4c:	00000000 	nop
  42cc50:	2442bc04 	addiu	v0,v0,-17404
  42cc54:	00000000 	nop
  42cc58:	afc20064 	sw	v0,100(s8)

		    switch (st->st_state)
  42cc5c:	8fc2002c 	lw	v0,44(s8)
  42cc60:	00000000 	nop
  42cc64:	8c42014c 	lw	v0,332(v0)
  42cc68:	00000000 	nop
  42cc6c:	afc200c4 	sw	v0,196(s8)
  42cc70:	24020008 	li	v0,8
  42cc74:	8fc300c4 	lw	v1,196(s8)
  42cc78:	00000000 	nop
  42cc7c:	10620014 	beq	v1,v0,42ccd0 <handle_timer_event+0x8c4>
  42cc80:	00000000 	nop
  42cc84:	8fc300c4 	lw	v1,196(s8)
  42cc88:	00000000 	nop
  42cc8c:	2c620009 	sltiu	v0,v1,9
  42cc90:	10400008 	beqz	v0,42ccb4 <handle_timer_event+0x8a8>
  42cc94:	00000000 	nop
  42cc98:	24020004 	li	v0,4
  42cc9c:	8fc300c4 	lw	v1,196(s8)
  42cca0:	00000000 	nop
  42cca4:	10620011 	beq	v1,v0,42ccec <handle_timer_event+0x8e0>
  42cca8:	00000000 	nop
  42ccac:	10000021 	b	42cd34 <handle_timer_event+0x928>
  42ccb0:	00000000 	nop
  42ccb4:	24020016 	li	v0,22
  42ccb8:	8fc300c4 	lw	v1,196(s8)
  42ccbc:	00000000 	nop
  42ccc0:	10620011 	beq	v1,v0,42cd08 <handle_timer_event+0x8fc>
  42ccc4:	00000000 	nop
  42ccc8:	1000001a 	b	42cd34 <handle_timer_event+0x928>
  42cccc:	00000000 	nop
		    {
		    case STATE_MAIN_I3:
			details = ".  Possible authentication failure:"
  42ccd0:	8f82802c 	lw	v0,-32724(gp)
  42ccd4:	00000000 	nop
  42ccd8:	2442bc08 	addiu	v0,v0,-17400
  42ccdc:	00000000 	nop
  42cce0:	afc20064 	sw	v0,100(s8)
			    " no acceptable response to our"
			    " first encrypted message";
			break;
  42cce4:	10000013 	b	42cd34 <handle_timer_event+0x928>
  42cce8:	00000000 	nop
		    case STATE_MAIN_I1:
			details = ".  No acceptable response to our"
  42ccec:	8f82802c 	lw	v0,-32724(gp)
  42ccf0:	00000000 	nop
  42ccf4:	2442bc64 	addiu	v0,v0,-17308
  42ccf8:	00000000 	nop
  42ccfc:	afc20064 	sw	v0,100(s8)
			    " first IKE message";
			break;
  42cd00:	1000000c 	b	42cd34 <handle_timer_event+0x928>
  42cd04:	00000000 	nop
		    case STATE_QUICK_I1:
			if (c->newest_ipsec_sa == SOS_NOBODY)
  42cd08:	8fc20030 	lw	v0,48(s8)
  42cd0c:	00000000 	nop
  42cd10:	8c4201a8 	lw	v0,424(v0)
  42cd14:	00000000 	nop
  42cd18:	14400006 	bnez	v0,42cd34 <handle_timer_event+0x928>
  42cd1c:	00000000 	nop
			    details = ".  No acceptable response to our"
  42cd20:	8f82802c 	lw	v0,-32724(gp)
  42cd24:	00000000 	nop
  42cd28:	2442bc98 	addiu	v0,v0,-17256
  42cd2c:	00000000 	nop
  42cd30:	afc20064 	sw	v0,100(s8)
				" first Quick Mode message:"
				" perhaps peer likes no proposal";
			break;
		    default:
			break;
		    }
		    loglog(RC_NORETRANSMISSION
  42cd34:	8f8483b0 	lw	a0,-31824(gp)
  42cd38:	8fc2002c 	lw	v0,44(s8)
  42cd3c:	00000000 	nop
  42cd40:	8c45014c 	lw	a1,332(v0)
  42cd44:	8f9987fc 	lw	t9,-30724(gp)
  42cd48:	00000000 	nop
  42cd4c:	0320f809 	jalr	t9
  42cd50:	00000000 	nop
  42cd54:	8fdc0018 	lw	gp,24(s8)
  42cd58:	00403821 	move	a3,v0
  42cd5c:	8fc2002c 	lw	v0,44(s8)
  42cd60:	00000000 	nop
  42cd64:	90430150 	lbu	v1,336(v0)
  42cd68:	8fc20064 	lw	v0,100(s8)
  42cd6c:	00000000 	nop
  42cd70:	afa20010 	sw	v0,16(sp)
  42cd74:	2404001f 	li	a0,31
  42cd78:	8f85802c 	lw	a1,-32724(gp)
  42cd7c:	00000000 	nop
  42cd80:	24a5bcf4 	addiu	a1,a1,-17164
  42cd84:	00603021 	move	a2,v1
  42cd88:	8f998c48 	lw	t9,-29624(gp)
  42cd8c:	00000000 	nop
  42cd90:	0320f809 	jalr	t9
  42cd94:	00000000 	nop
  42cd98:	8fdc0018 	lw	gp,24(s8)
  42cd9c:	00000000 	nop
			, "max number of retransmissions (%d) reached %s%s"
			, st->st_retransmit
			, enum_show(&state_names, st->st_state), details);
		    if (try != 0 && try != try_limit)
  42cda0:	8fc2005c 	lw	v0,92(s8)
  42cda4:	00000000 	nop
  42cda8:	10400053 	beqz	v0,42cef8 <handle_timer_event+0xaec>
  42cdac:	00000000 	nop
  42cdb0:	8fc3005c 	lw	v1,92(s8)
  42cdb4:	8fc20060 	lw	v0,96(s8)
  42cdb8:	00000000 	nop
  42cdbc:	1062004e 	beq	v1,v0,42cef8 <handle_timer_event+0xaec>
  42cdc0:	00000000 	nop
		    {
			/* A lot like EVENT_SA_REPLACE, but over again.
			 * Since we know that st cannot be in use,
			 * we can delete it right away.
			 */
			char story[80];	/* arbitrary limit */

			try++;
  42cdc4:	8fc2005c 	lw	v0,92(s8)
  42cdc8:	00000000 	nop
  42cdcc:	24420001 	addiu	v0,v0,1
  42cdd0:	afc2005c 	sw	v0,92(s8)
			snprintf(story, sizeof(story), try_limit == 0
  42cdd4:	8fc20060 	lw	v0,96(s8)
  42cdd8:	00000000 	nop
  42cddc:	14400008 	bnez	v0,42ce00 <handle_timer_event+0x9f4>
  42cde0:	00000000 	nop
  42cde4:	8f82802c 	lw	v0,-32724(gp)
  42cde8:	00000000 	nop
  42cdec:	2442bd24 	addiu	v0,v0,-17116
  42cdf0:	00000000 	nop
  42cdf4:	afc200c8 	sw	v0,200(s8)
  42cdf8:	10000006 	b	42ce14 <handle_timer_event+0xa08>
  42cdfc:	00000000 	nop
  42ce00:	8f83802c 	lw	v1,-32724(gp)
  42ce04:	00000000 	nop
  42ce08:	2463bd58 	addiu	v1,v1,-17064
  42ce0c:	00000000 	nop
  42ce10:	afc300c8 	sw	v1,200(s8)
  42ce14:	8fc20060 	lw	v0,96(s8)
  42ce18:	00000000 	nop
  42ce1c:	afa20010 	sw	v0,16(sp)
  42ce20:	27c40068 	addiu	a0,s8,104
  42ce24:	24050050 	li	a1,80
  42ce28:	8fc600c8 	lw	a2,200(s8)
  42ce2c:	8fc7005c 	lw	a3,92(s8)
  42ce30:	8f998b38 	lw	t9,-29896(gp)
  42ce34:	00000000 	nop
  42ce38:	0320f809 	jalr	t9
  42ce3c:	00000000 	nop
  42ce40:	8fdc0018 	lw	gp,24(s8)
  42ce44:	00000000 	nop
			    ? "starting keying attempt %ld of an unlimited number"
			    : "starting keying attempt %ld of at most %ld"
			    , try, try_limit);

			if (st->st_whack_sock != NULL_FD)
  42ce48:	8fc2002c 	lw	v0,44(s8)
  42ce4c:	00000000 	nop
  42ce50:	8c430014 	lw	v1,20(v0)
  42ce54:	2402ffff 	li	v0,-1
  42ce58:	10620015 	beq	v1,v0,42ceb0 <handle_timer_event+0xaa4>
  42ce5c:	00000000 	nop
			{
			    /* Release whack because the observer will get bored. */
			    loglog(RC_COMMENT, "%s, but releasing whack"
  42ce60:	00002021 	move	a0,zero
  42ce64:	8f85802c 	lw	a1,-32724(gp)
  42ce68:	00000000 	nop
  42ce6c:	24a5bd84 	addiu	a1,a1,-17020
  42ce70:	27c60068 	addiu	a2,s8,104
  42ce74:	8f998c48 	lw	t9,-29624(gp)
  42ce78:	00000000 	nop
  42ce7c:	0320f809 	jalr	t9
  42ce80:	00000000 	nop
  42ce84:	8fdc0018 	lw	gp,24(s8)
  42ce88:	00000000 	nop
				, story);
			    release_pending_whacks(st, story);
  42ce8c:	8fc4002c 	lw	a0,44(s8)
  42ce90:	27c50068 	addiu	a1,s8,104
  42ce94:	8f998c6c 	lw	t9,-29588(gp)
  42ce98:	00000000 	nop
  42ce9c:	0320f809 	jalr	t9
  42cea0:	00000000 	nop
  42cea4:	8fdc0018 	lw	gp,24(s8)
  42cea8:	1000000b 	b	42ced8 <handle_timer_event+0xacc>
  42ceac:	00000000 	nop
			}
			else
			{
			    /* no whack: just log to syslog */
			    plog("%s", story);
  42ceb0:	8f84802c 	lw	a0,-32724(gp)
  42ceb4:	00000000 	nop
  42ceb8:	2484bd9c 	addiu	a0,a0,-16996
  42cebc:	27c50068 	addiu	a1,s8,104
  42cec0:	8f998abc 	lw	t9,-30020(gp)
  42cec4:	00000000 	nop
  42cec8:	0320f809 	jalr	t9
  42cecc:	00000000 	nop
  42ced0:	8fdc0018 	lw	gp,24(s8)
  42ced4:	00000000 	nop
			}
			ipsecdoi_replace(st, try);
  42ced8:	8fc4002c 	lw	a0,44(s8)
  42cedc:	8fc5005c 	lw	a1,92(s8)
  42cee0:	8f998700 	lw	t9,-30976(gp)
  42cee4:	00000000 	nop
  42cee8:	0320f809 	jalr	t9
  42ceec:	00000000 	nop
  42cef0:	8fdc0018 	lw	gp,24(s8)
  42cef4:	00000000 	nop
		    }
		    delete_state(st);
  42cef8:	8fc4002c 	lw	a0,44(s8)
  42cefc:	8f998b70 	lw	t9,-29840(gp)
  42cf00:	00000000 	nop
  42cf04:	0320f809 	jalr	t9
  42cf08:	00000000 	nop
  42cf0c:	8fdc0018 	lw	gp,24(s8)
  42cf10:	00000000 	nop
		}
	    }
	    break;
  42cf14:	10000166 	b	42d4b0 <handle_timer_event+0x10a4>
  42cf18:	00000000 	nop

	case EVENT_SA_REPLACE:
	    {
		so_serial_t newest = IS_PHASE1(st->st_state)
  42cf1c:	8fc2002c 	lw	v0,44(s8)
  42cf20:	00000000 	nop
  42cf24:	8c42014c 	lw	v0,332(v0)
  42cf28:	00000000 	nop
  42cf2c:	2c420003 	sltiu	v0,v0,3
  42cf30:	1440000f 	bnez	v0,42cf70 <handle_timer_event+0xb64>
  42cf34:	00000000 	nop
  42cf38:	8fc2002c 	lw	v0,44(s8)
  42cf3c:	00000000 	nop
  42cf40:	8c42014c 	lw	v0,332(v0)
  42cf44:	00000000 	nop
  42cf48:	2c420010 	sltiu	v0,v0,16
  42cf4c:	10400008 	beqz	v0,42cf70 <handle_timer_event+0xb64>
  42cf50:	00000000 	nop
  42cf54:	8fc20030 	lw	v0,48(s8)
  42cf58:	00000000 	nop
  42cf5c:	8c4201a4 	lw	v0,420(v0)
  42cf60:	00000000 	nop
  42cf64:	afc200cc 	sw	v0,204(s8)
  42cf68:	10000006 	b	42cf84 <handle_timer_event+0xb78>
  42cf6c:	00000000 	nop
  42cf70:	8fc20030 	lw	v0,48(s8)
  42cf74:	00000000 	nop
  42cf78:	8c4201a8 	lw	v0,424(v0)
  42cf7c:	00000000 	nop
  42cf80:	afc200cc 	sw	v0,204(s8)
  42cf84:	8fc200cc 	lw	v0,204(s8)
  42cf88:	00000000 	nop
  42cf8c:	afc20064 	sw	v0,100(s8)
		    ? c->newest_isakmp_sa : c->newest_ipsec_sa;

		if (newest != st->st_serialno
		&& newest != SOS_NOBODY)
  42cf90:	8fc2002c 	lw	v0,44(s8)
  42cf94:	00000000 	nop
  42cf98:	8c430000 	lw	v1,0(v0)
  42cf9c:	8fc20064 	lw	v0,100(s8)
  42cfa0:	00000000 	nop
  42cfa4:	10430032 	beq	v0,v1,42d070 <handle_timer_event+0xc64>
  42cfa8:	00000000 	nop
  42cfac:	8fc20064 	lw	v0,100(s8)
  42cfb0:	00000000 	nop
  42cfb4:	1040002e 	beqz	v0,42d070 <handle_timer_event+0xc64>
  42cfb8:	00000000 	nop
		{
		    /* not very interesting: no need to replace */
		    DBG(DBG_LIFECYCLE
  42cfbc:	8f8284f8 	lw	v0,-31496(gp)
  42cfc0:	00000000 	nop
  42cfc4:	8c420000 	lw	v0,0(v0)
  42cfc8:	00000000 	nop
  42cfcc:	30420020 	andi	v0,v0,0x20
  42cfd0:	1040005a 	beqz	v0,42d13c <handle_timer_event+0xd30>
  42cfd4:	00000000 	nop
  42cfd8:	8fc2002c 	lw	v0,44(s8)
  42cfdc:	00000000 	nop
  42cfe0:	8c42014c 	lw	v0,332(v0)
  42cfe4:	00000000 	nop
  42cfe8:	2c420003 	sltiu	v0,v0,3
  42cfec:	1440000f 	bnez	v0,42d02c <handle_timer_event+0xc20>
  42cff0:	00000000 	nop
  42cff4:	8fc2002c 	lw	v0,44(s8)
  42cff8:	00000000 	nop
  42cffc:	8c42014c 	lw	v0,332(v0)
  42d000:	00000000 	nop
  42d004:	2c420010 	sltiu	v0,v0,16
  42d008:	10400008 	beqz	v0,42d02c <handle_timer_event+0xc20>
  42d00c:	00000000 	nop
  42d010:	8f83802c 	lw	v1,-32724(gp)
  42d014:	00000000 	nop
  42d018:	2463bda0 	addiu	v1,v1,-16992
  42d01c:	00000000 	nop
  42d020:	afc300d0 	sw	v1,208(s8)
  42d024:	10000006 	b	42d040 <handle_timer_event+0xc34>
  42d028:	00000000 	nop
  42d02c:	8f82802c 	lw	v0,-32724(gp)
  42d030:	00000000 	nop
  42d034:	2442bda8 	addiu	v0,v0,-16984
  42d038:	00000000 	nop
  42d03c:	afc200d0 	sw	v0,208(s8)
  42d040:	8f84802c 	lw	a0,-32724(gp)
  42d044:	00000000 	nop
  42d048:	2484bdb0 	addiu	a0,a0,-16976
  42d04c:	8fc500d0 	lw	a1,208(s8)
  42d050:	8fc60064 	lw	a2,100(s8)
  42d054:	8f998abc 	lw	t9,-30020(gp)
  42d058:	00000000 	nop
  42d05c:	0320f809 	jalr	t9
  42d060:	00000000 	nop
  42d064:	8fdc0018 	lw	gp,24(s8)
  42d068:	10000034 	b	42d13c <handle_timer_event+0xd30>
  42d06c:	00000000 	nop
			, plog("not replacing stale %s SA: #%lu will do"
			    , IS_PHASE1(st->st_state)? "ISAKMP" : "IPsec"
			    , newest));
		}
		else
		{
		    DBG(DBG_LIFECYCLE
  42d070:	8f8284f8 	lw	v0,-31496(gp)
  42d074:	00000000 	nop
  42d078:	8c420000 	lw	v0,0(v0)
  42d07c:	00000000 	nop
  42d080:	30420020 	andi	v0,v0,0x20
  42d084:	10400025 	beqz	v0,42d11c <handle_timer_event+0xd10>
  42d088:	00000000 	nop
  42d08c:	8fc2002c 	lw	v0,44(s8)
  42d090:	00000000 	nop
  42d094:	8c42014c 	lw	v0,332(v0)
  42d098:	00000000 	nop
  42d09c:	2c420003 	sltiu	v0,v0,3
  42d0a0:	1440000f 	bnez	v0,42d0e0 <handle_timer_event+0xcd4>
  42d0a4:	00000000 	nop
  42d0a8:	8fc2002c 	lw	v0,44(s8)
  42d0ac:	00000000 	nop
  42d0b0:	8c42014c 	lw	v0,332(v0)
  42d0b4:	00000000 	nop
  42d0b8:	2c420010 	sltiu	v0,v0,16
  42d0bc:	10400008 	beqz	v0,42d0e0 <handle_timer_event+0xcd4>
  42d0c0:	00000000 	nop
  42d0c4:	8f83802c 	lw	v1,-32724(gp)
  42d0c8:	00000000 	nop
  42d0cc:	2463bda0 	addiu	v1,v1,-16992
  42d0d0:	00000000 	nop
  42d0d4:	afc300d4 	sw	v1,212(s8)
  42d0d8:	10000006 	b	42d0f4 <handle_timer_event+0xce8>
  42d0dc:	00000000 	nop
  42d0e0:	8f82802c 	lw	v0,-32724(gp)
  42d0e4:	00000000 	nop
  42d0e8:	2442bda8 	addiu	v0,v0,-16984
  42d0ec:	00000000 	nop
  42d0f0:	afc200d4 	sw	v0,212(s8)
  42d0f4:	8f84802c 	lw	a0,-32724(gp)
  42d0f8:	00000000 	nop
  42d0fc:	2484bdd8 	addiu	a0,a0,-16936
  42d100:	8fc500d4 	lw	a1,212(s8)
  42d104:	8f998abc 	lw	t9,-30020(gp)
  42d108:	00000000 	nop
  42d10c:	0320f809 	jalr	t9
  42d110:	00000000 	nop
  42d114:	8fdc0018 	lw	gp,24(s8)
  42d118:	00000000 	nop
			, plog("replacing stale %s SA"
			    , IS_PHASE1(st->st_state)? "ISAKMP" : "IPsec"));
		    ipsecdoi_replace(st, 1);
  42d11c:	8fc4002c 	lw	a0,44(s8)
  42d120:	24050001 	li	a1,1
  42d124:	8f998700 	lw	t9,-30976(gp)
  42d128:	00000000 	nop
  42d12c:	0320f809 	jalr	t9
  42d130:	00000000 	nop
  42d134:	8fdc0018 	lw	gp,24(s8)
  42d138:	00000000 	nop
		}
#ifdef DPD
		delete_dpd_event(st);
  42d13c:	8fc4002c 	lw	a0,44(s8)
  42d140:	8f998794 	lw	t9,-30828(gp)
  42d144:	00000000 	nop
  42d148:	0320f809 	jalr	t9
  42d14c:	00000000 	nop
  42d150:	8fdc0018 	lw	gp,24(s8)
  42d154:	00000000 	nop
#endif
		event_schedule(EVENT_SA_EXPIRE, st->st_margin, st);
  42d158:	24040006 	li	a0,6
  42d15c:	8fc2002c 	lw	v0,44(s8)
  42d160:	00000000 	nop
  42d164:	8c450158 	lw	a1,344(v0)
  42d168:	8fc6002c 	lw	a2,44(s8)
  42d16c:	8f998410 	lw	t9,-31728(gp)
  42d170:	00000000 	nop
  42d174:	0320f809 	jalr	t9
  42d178:	00000000 	nop
  42d17c:	8fdc0018 	lw	gp,24(s8)
  42d180:	00000000 	nop
	    }
	    break;
  42d184:	100000ca 	b	42d4b0 <handle_timer_event+0x10a4>
  42d188:	00000000 	nop

	case EVENT_SA_EXPIRE:
	    {
		const char *satype;
		so_serial_t latest;
		bool dont_rekey = (c->policy & POLICY_DONT_REKEY) != 0;
  42d18c:	8fc20030 	lw	v0,48(s8)
  42d190:	00000000 	nop
  42d194:	8c43000c 	lw	v1,12(v0)
  42d198:	8c420008 	lw	v0,8(v0)
  42d19c:	00031a82 	srl	v1,v1,0xa
  42d1a0:	00022580 	sll	a0,v0,0x16
  42d1a4:	00641825 	or	v1,v1,a0
  42d1a8:	00021282 	srl	v0,v0,0xa
  42d1ac:	30620001 	andi	v0,v1,0x1
  42d1b0:	afc2005c 	sw	v0,92(s8)
		bool unroute_it = dont_rekey;
  42d1b4:	8fc2005c 	lw	v0,92(s8)
  42d1b8:	00000000 	nop
  42d1bc:	afc20058 	sw	v0,88(s8)

		if (IS_PHASE1(st->st_state))
  42d1c0:	8fc2002c 	lw	v0,44(s8)
  42d1c4:	00000000 	nop
  42d1c8:	8c42014c 	lw	v0,332(v0)
  42d1cc:	00000000 	nop
  42d1d0:	2c420003 	sltiu	v0,v0,3
  42d1d4:	14400015 	bnez	v0,42d22c <handle_timer_event+0xe20>
  42d1d8:	00000000 	nop
  42d1dc:	8fc2002c 	lw	v0,44(s8)
  42d1e0:	00000000 	nop
  42d1e4:	8c42014c 	lw	v0,332(v0)
  42d1e8:	00000000 	nop
  42d1ec:	2c420010 	sltiu	v0,v0,16
  42d1f0:	1040000e 	beqz	v0,42d22c <handle_timer_event+0xe20>
  42d1f4:	00000000 	nop
		{
		    satype = "ISAKMP";
  42d1f8:	8f82802c 	lw	v0,-32724(gp)
  42d1fc:	00000000 	nop
  42d200:	2442bda0 	addiu	v0,v0,-16992
  42d204:	00000000 	nop
  42d208:	afc20064 	sw	v0,100(s8)
		    latest = c->newest_isakmp_sa;
  42d20c:	8fc20030 	lw	v0,48(s8)
  42d210:	00000000 	nop
  42d214:	8c4201a4 	lw	v0,420(v0)
  42d218:	00000000 	nop
  42d21c:	afc20060 	sw	v0,96(s8)
		    unroute_it = FALSE;	/* unroute only IPsec SAs */
  42d220:	afc00058 	sw	zero,88(s8)
  42d224:	1000000b 	b	42d254 <handle_timer_event+0xe48>
  42d228:	00000000 	nop
		}
		else
		{
		    satype = "IPsec";
  42d22c:	8f82802c 	lw	v0,-32724(gp)
  42d230:	00000000 	nop
  42d234:	2442bda8 	addiu	v0,v0,-16984
  42d238:	00000000 	nop
  42d23c:	afc20064 	sw	v0,100(s8)
		    latest = c->newest_ipsec_sa;
  42d240:	8fc20030 	lw	v0,48(s8)
  42d244:	00000000 	nop
  42d248:	8c4201a8 	lw	v0,424(v0)
  42d24c:	00000000 	nop
  42d250:	afc20060 	sw	v0,96(s8)
		}

		if (st->st_serialno != latest)
  42d254:	8fc2002c 	lw	v0,44(s8)
  42d258:	00000000 	nop
  42d25c:	8c430000 	lw	v1,0(v0)
  42d260:	8fc20060 	lw	v0,96(s8)
  42d264:	00000000 	nop
  42d268:	10620016 	beq	v1,v0,42d2c4 <handle_timer_event+0xeb8>
  42d26c:	00000000 	nop
		{
		    /* not very interesting: already superseded */
		    DBG(DBG_LIFECYCLE
  42d270:	8f8284f8 	lw	v0,-31496(gp)
  42d274:	00000000 	nop
  42d278:	8c420000 	lw	v0,0(v0)
  42d27c:	00000000 	nop
  42d280:	30420020 	andi	v0,v0,0x20
  42d284:	1040000c 	beqz	v0,42d2b8 <handle_timer_event+0xeac>
  42d288:	00000000 	nop
  42d28c:	8f84802c 	lw	a0,-32724(gp)
  42d290:	00000000 	nop
  42d294:	2484bdf0 	addiu	a0,a0,-16912
  42d298:	8fc50064 	lw	a1,100(s8)
  42d29c:	8fc60060 	lw	a2,96(s8)
  42d2a0:	8f998abc 	lw	t9,-30020(gp)
  42d2a4:	00000000 	nop
  42d2a8:	0320f809 	jalr	t9
  42d2ac:	00000000 	nop
  42d2b0:	8fdc0018 	lw	gp,24(s8)
  42d2b4:	00000000 	nop
			, plog("%s SA expired (superseded by #%lu)"
			    , satype, latest));
		    unroute_it = FALSE;	/* unroute only if latest */
  42d2b8:	afc00058 	sw	zero,88(s8)
  42d2bc:	1000002d 	b	42d374 <handle_timer_event+0xf68>
  42d2c0:	00000000 	nop
		}
		else
		{
		    plog("%s SA expired%s (%s)", satype
  42d2c4:	8fc20058 	lw	v0,88(s8)
  42d2c8:	00000000 	nop
  42d2cc:	10400008 	beqz	v0,42d2f0 <handle_timer_event+0xee4>
  42d2d0:	00000000 	nop
  42d2d4:	8f83802c 	lw	v1,-32724(gp)
  42d2d8:	00000000 	nop
  42d2dc:	2463be14 	addiu	v1,v1,-16876
  42d2e0:	00000000 	nop
  42d2e4:	afc300d8 	sw	v1,216(s8)
  42d2e8:	10000006 	b	42d304 <handle_timer_event+0xef8>
  42d2ec:	00000000 	nop
  42d2f0:	8f82802c 	lw	v0,-32724(gp)
  42d2f4:	00000000 	nop
  42d2f8:	2442bc04 	addiu	v0,v0,-17404
  42d2fc:	00000000 	nop
  42d300:	afc200d8 	sw	v0,216(s8)
  42d304:	8fc2005c 	lw	v0,92(s8)
  42d308:	00000000 	nop
  42d30c:	10400008 	beqz	v0,42d330 <handle_timer_event+0xf24>
  42d310:	00000000 	nop
  42d314:	8f83802c 	lw	v1,-32724(gp)
  42d318:	00000000 	nop
  42d31c:	2463be30 	addiu	v1,v1,-16848
  42d320:	00000000 	nop
  42d324:	afc300dc 	sw	v1,220(s8)
  42d328:	10000006 	b	42d344 <handle_timer_event+0xf38>
  42d32c:	00000000 	nop
  42d330:	8f82802c 	lw	v0,-32724(gp)
  42d334:	00000000 	nop
  42d338:	2442be3c 	addiu	v0,v0,-16836
  42d33c:	00000000 	nop
  42d340:	afc200dc 	sw	v0,220(s8)
  42d344:	8f84802c 	lw	a0,-32724(gp)
  42d348:	00000000 	nop
  42d34c:	2484be44 	addiu	a0,a0,-16828
  42d350:	8fc50064 	lw	a1,100(s8)
  42d354:	8fc600d8 	lw	a2,216(s8)
  42d358:	8fc700dc 	lw	a3,220(s8)
  42d35c:	8f998abc 	lw	t9,-30020(gp)
  42d360:	00000000 	nop
  42d364:	0320f809 	jalr	t9
  42d368:	00000000 	nop
  42d36c:	8fdc0018 	lw	gp,24(s8)
  42d370:	00000000 	nop
			, unroute_it? " and connection unrouted" : ""
			, dont_rekey? "--dontrekey" : "LATEST!"
			);
		}

		/* Delete this state object.  It must be in the hash table. */
		delete_state(st);
  42d374:	8fc4002c 	lw	a0,44(s8)
  42d378:	8f998b70 	lw	t9,-29840(gp)
  42d37c:	00000000 	nop
  42d380:	0320f809 	jalr	t9
  42d384:	00000000 	nop
  42d388:	8fdc0018 	lw	gp,24(s8)
  42d38c:	00000000 	nop

		/* unroute the connection if --dontrekey and last IPsec SA */
		if (unroute_it && c->routing != RT_ROUTED_TUNNEL)
  42d390:	8fc20058 	lw	v0,88(s8)
  42d394:	00000000 	nop
  42d398:	10400045 	beqz	v0,42d4b0 <handle_timer_event+0x10a4>
  42d39c:	00000000 	nop
  42d3a0:	8fc20030 	lw	v0,48(s8)
  42d3a4:	00000000 	nop
  42d3a8:	8c43019c 	lw	v1,412(v0)
  42d3ac:	24020005 	li	v0,5
  42d3b0:	1062003f 	beq	v1,v0,42d4b0 <handle_timer_event+0x10a4>
  42d3b4:	00000000 	nop
		    unroute_connection(c);
  42d3b8:	8fc40030 	lw	a0,48(s8)
  42d3bc:	8f9983a0 	lw	t9,-31840(gp)
  42d3c0:	00000000 	nop
  42d3c4:	0320f809 	jalr	t9
  42d3c8:	00000000 	nop
  42d3cc:	8fdc0018 	lw	gp,24(s8)
  42d3d0:	00000000 	nop
	    }
	    break;
  42d3d4:	10000036 	b	42d4b0 <handle_timer_event+0x10a4>
  42d3d8:	00000000 	nop

	case EVENT_SO_DISCARD:
	    /* Delete this state object.  It must be in the hash table. */
	    delete_state(st);
  42d3dc:	8fc4002c 	lw	a0,44(s8)
  42d3e0:	8f998b70 	lw	t9,-29840(gp)
  42d3e4:	00000000 	nop
  42d3e8:	0320f809 	jalr	t9
  42d3ec:	00000000 	nop
  42d3f0:	8fdc0018 	lw	gp,24(s8)
  42d3f4:	00000000 	nop
	    break;
  42d3f8:	1000002d 	b	42d4b0 <handle_timer_event+0x10a4>
  42d3fc:	00000000 	nop

#ifdef DPD
	case EVENT_DPD:
	    dpd_outI(st);
  42d400:	8fc4002c 	lw	a0,44(s8)
  42d404:	8f9985f0 	lw	t9,-31248(gp)
  42d408:	00000000 	nop
  42d40c:	0320f809 	jalr	t9
  42d410:	00000000 	nop
  42d414:	8fdc0018 	lw	gp,24(s8)
  42d418:	00000000 	nop
	    break;
  42d41c:	10000024 	b	42d4b0 <handle_timer_event+0x10a4>
  42d420:	00000000 	nop
	case EVENT_DPD_TIMEOUT:
	    dpd_timeout(st);
  42d424:	8fc4002c 	lw	a0,44(s8)
  42d428:	8f998754 	lw	t9,-30892(gp)
  42d42c:	00000000 	nop
  42d430:	0320f809 	jalr	t9
  42d434:	00000000 	nop
  42d438:	8fdc0018 	lw	gp,24(s8)
  42d43c:	00000000 	nop
	    break;
  42d440:	1000001b 	b	42d4b0 <handle_timer_event+0x10a4>
  42d444:	00000000 	nop
#endif

#ifdef NAT_TRAVERSAL
	case EVENT_NAT_T_KEEPALIVE:
	    nat_traversal_ka_event();
  42d448:	8f998ba8 	lw	t9,-29784(gp)
  42d44c:	00000000 	nop
  42d450:	0320f809 	jalr	t9
  42d454:	00000000 	nop
  42d458:	8fdc0018 	lw	gp,24(s8)
  42d45c:	00000000 	nop
	    break;
  42d460:	10000013 	b	42d4b0 <handle_timer_event+0x10a4>
  42d464:	00000000 	nop
#endif

	default:
	    loglog(RC_LOG_SERIOUS, "INTERNAL ERROR: ignoring unknown expiring event %s"
  42d468:	8f8486b4 	lw	a0,-31052(gp)
  42d46c:	8fc50028 	lw	a1,40(s8)
  42d470:	8f9987fc 	lw	t9,-30724(gp)
  42d474:	00000000 	nop
  42d478:	0320f809 	jalr	t9
  42d47c:	00000000 	nop
  42d480:	8fdc0018 	lw	gp,24(s8)
  42d484:	24040003 	li	a0,3
  42d488:	8f85802c 	lw	a1,-32724(gp)
  42d48c:	00000000 	nop
  42d490:	24a5be5c 	addiu	a1,a1,-16804
  42d494:	00403021 	move	a2,v0
  42d498:	8f998c48 	lw	t9,-29624(gp)
  42d49c:	00000000 	nop
  42d4a0:	0320f809 	jalr	t9
  42d4a4:	00000000 	nop
  42d4a8:	8fdc0018 	lw	gp,24(s8)
  42d4ac:	00000000 	nop
		, enum_show(&timer_event_names, type));
    }

    pfree(ev);
  42d4b0:	8fc40024 	lw	a0,36(s8)
  42d4b4:	8f998094 	lw	t9,-32620(gp)
  42d4b8:	00000000 	nop
  42d4bc:	0320f809 	jalr	t9
  42d4c0:	00000000 	nop
  42d4c4:	8fdc0018 	lw	gp,24(s8)
  42d4c8:	00000000 	nop
    reset_cur_state();
  42d4cc:	8f8187f8 	lw	at,-30728(gp)
  42d4d0:	00000000 	nop
  42d4d4:	ac200000 	sw	zero,0(at)
  42d4d8:	8f82830c 	lw	v0,-31988(gp)
  42d4dc:	00000000 	nop
  42d4e0:	8c420000 	lw	v0,0(v0)
  42d4e4:	8f8184f8 	lw	at,-31496(gp)
  42d4e8:	00000000 	nop
  42d4ec:	ac220000 	sw	v0,0(at)
}
  42d4f0:	03c0e821 	move	sp,s8
  42d4f4:	8fbf00f0 	lw	ra,240(sp)
  42d4f8:	8fbe00ec 	lw	s8,236(sp)
  42d4fc:	27bd00f8 	addiu	sp,sp,248
  42d500:	03e00008 	jr	ra
  42d504:	00000000 	nop

0042d508 <next_event>:
  42d508:	3c1c0fbe 	lui	gp,0xfbe
  42d50c:	279cf468 	addiu	gp,gp,-2968
  42d510:	0399e021 	addu	gp,gp,t9
  42d514:	27bdffd0 	addiu	sp,sp,-48
  42d518:	afbc0010 	sw	gp,16(sp)
  42d51c:	afbf0028 	sw	ra,40(sp)
  42d520:	afbe0024 	sw	s8,36(sp)
  42d524:	afbc0020 	sw	gp,32(sp)
  42d528:	03a0f021 	move	s8,sp

/*
 * Return the time until the next event in the queue
 * expires (never negative), or -1 if no jobs in queue.
 */
long
next_event(void)
{
    time_t tm;

    if (evlist == (struct event *) NULL)
  42d52c:	8f828018 	lw	v0,-32744(gp)
  42d530:	00000000 	nop
  42d534:	244218b8 	addiu	v0,v0,6328
  42d538:	8c420000 	lw	v0,0(v0)
  42d53c:	00000000 	nop
  42d540:	14400004 	bnez	v0,42d554 <next_event+0x4c>
  42d544:	00000000 	nop
	return -1;
  42d548:	2402ffff 	li	v0,-1
  42d54c:	10000076 	b	42d728 <next_event+0x220>
  42d550:	00000000 	nop

    tm = now();
  42d554:	8f998b58 	lw	t9,-29864(gp)
  42d558:	00000000 	nop
  42d55c:	0320f809 	jalr	t9
  42d560:	00000000 	nop
  42d564:	8fdc0010 	lw	gp,16(s8)
  42d568:	afc20018 	sw	v0,24(s8)

    DBG(DBG_CONTROL,
  42d56c:	8f8284f8 	lw	v0,-31496(gp)
  42d570:	00000000 	nop
  42d574:	8c420000 	lw	v0,0(v0)
  42d578:	00000000 	nop
  42d57c:	30420010 	andi	v0,v0,0x10
  42d580:	10400052 	beqz	v0,42d6cc <next_event+0x1c4>
  42d584:	00000000 	nop
  42d588:	8f828018 	lw	v0,-32744(gp)
  42d58c:	00000000 	nop
  42d590:	244218b8 	addiu	v0,v0,6328
  42d594:	8c420000 	lw	v0,0(v0)
  42d598:	00000000 	nop
  42d59c:	8c420008 	lw	v0,8(v0)
  42d5a0:	00000000 	nop
  42d5a4:	14400022 	bnez	v0,42d630 <next_event+0x128>
  42d5a8:	00000000 	nop
  42d5ac:	8f8486b4 	lw	a0,-31052(gp)
  42d5b0:	8f828018 	lw	v0,-32744(gp)
  42d5b4:	00000000 	nop
  42d5b8:	244218b8 	addiu	v0,v0,6328
  42d5bc:	8c420000 	lw	v0,0(v0)
  42d5c0:	00000000 	nop
  42d5c4:	8c450004 	lw	a1,4(v0)
  42d5c8:	8f9987fc 	lw	t9,-30724(gp)
  42d5cc:	00000000 	nop
  42d5d0:	0320f809 	jalr	t9
  42d5d4:	00000000 	nop
  42d5d8:	8fdc0010 	lw	gp,16(s8)
  42d5dc:	00402821 	move	a1,v0
  42d5e0:	8f828018 	lw	v0,-32744(gp)
  42d5e4:	00000000 	nop
  42d5e8:	244218b8 	addiu	v0,v0,6328
  42d5ec:	8c420000 	lw	v0,0(v0)
  42d5f0:	00000000 	nop
  42d5f4:	8c430000 	lw	v1,0(v0)
  42d5f8:	8fc20018 	lw	v0,24(s8)
  42d5fc:	00000000 	nop
  42d600:	00621023 	subu	v0,v1,v0
  42d604:	8f84802c 	lw	a0,-32724(gp)
  42d608:	00000000 	nop
  42d60c:	2484beb4 	addiu	a0,a0,-16716
  42d610:	00403021 	move	a2,v0
  42d614:	8f9983b8 	lw	t9,-31816(gp)
  42d618:	00000000 	nop
  42d61c:	0320f809 	jalr	t9
  42d620:	00000000 	nop
  42d624:	8fdc0010 	lw	gp,16(s8)
  42d628:	10000028 	b	42d6cc <next_event+0x1c4>
  42d62c:	00000000 	nop
  42d630:	8f8486b4 	lw	a0,-31052(gp)
  42d634:	8f828018 	lw	v0,-32744(gp)
  42d638:	00000000 	nop
  42d63c:	244218b8 	addiu	v0,v0,6328
  42d640:	8c420000 	lw	v0,0(v0)
  42d644:	00000000 	nop
  42d648:	8c450004 	lw	a1,4(v0)
  42d64c:	8f9987fc 	lw	t9,-30724(gp)
  42d650:	00000000 	nop
  42d654:	0320f809 	jalr	t9
  42d658:	00000000 	nop
  42d65c:	8fdc0010 	lw	gp,16(s8)
  42d660:	00402821 	move	a1,v0
  42d664:	8f828018 	lw	v0,-32744(gp)
  42d668:	00000000 	nop
  42d66c:	244218b8 	addiu	v0,v0,6328
  42d670:	8c420000 	lw	v0,0(v0)
  42d674:	00000000 	nop
  42d678:	8c430000 	lw	v1,0(v0)
  42d67c:	8fc20018 	lw	v0,24(s8)
  42d680:	00000000 	nop
  42d684:	00621823 	subu	v1,v1,v0
  42d688:	8f828018 	lw	v0,-32744(gp)
  42d68c:	00000000 	nop
  42d690:	244218b8 	addiu	v0,v0,6328
  42d694:	8c420000 	lw	v0,0(v0)
  42d698:	00000000 	nop
  42d69c:	8c420008 	lw	v0,8(v0)
  42d6a0:	8f84802c 	lw	a0,-32724(gp)
  42d6a4:	00000000 	nop
  42d6a8:	2484bed4 	addiu	a0,a0,-16684
  42d6ac:	00603021 	move	a2,v1
  42d6b0:	8c470000 	lw	a3,0(v0)
  42d6b4:	8f9983b8 	lw	t9,-31816(gp)
  42d6b8:	00000000 	nop
  42d6bc:	0320f809 	jalr	t9
  42d6c0:	00000000 	nop
  42d6c4:	8fdc0010 	lw	gp,16(s8)
  42d6c8:	00000000 	nop
	if (evlist->ev_state == NULL)
	    DBG_log("next event %s in %ld seconds"
		, enum_show(&timer_event_names, evlist->ev_type)
		, (long)evlist->ev_time - (long)tm);
	else
	    DBG_log("next event %s in %ld seconds for #%lu"
		, enum_show(&timer_event_names, evlist->ev_type)
		, (long)evlist->ev_time - (long)tm
		, evlist->ev_state->st_serialno));

    if (evlist->ev_time - tm <= 0)
  42d6cc:	8f828018 	lw	v0,-32744(gp)
  42d6d0:	00000000 	nop
  42d6d4:	244218b8 	addiu	v0,v0,6328
  42d6d8:	8c420000 	lw	v0,0(v0)
  42d6dc:	00000000 	nop
  42d6e0:	8c430000 	lw	v1,0(v0)
  42d6e4:	8fc20018 	lw	v0,24(s8)
  42d6e8:	00000000 	nop
  42d6ec:	00621023 	subu	v0,v1,v0
  42d6f0:	1c400004 	bgtz	v0,42d704 <next_event+0x1fc>
  42d6f4:	00000000 	nop
	return 0;
  42d6f8:	00001021 	move	v0,zero
  42d6fc:	1000000a 	b	42d728 <next_event+0x220>
  42d700:	00000000 	nop
    else
	return evlist->ev_time - tm;
  42d704:	8f828018 	lw	v0,-32744(gp)
  42d708:	00000000 	nop
  42d70c:	244218b8 	addiu	v0,v0,6328
  42d710:	8c420000 	lw	v0,0(v0)
  42d714:	00000000 	nop
  42d718:	8c430000 	lw	v1,0(v0)
  42d71c:	8fc20018 	lw	v0,24(s8)
  42d720:	00000000 	nop
  42d724:	00621023 	subu	v0,v1,v0
}
  42d728:	03c0e821 	move	sp,s8
  42d72c:	8fbf0028 	lw	ra,40(sp)
  42d730:	8fbe0024 	lw	s8,36(sp)
  42d734:	27bd0030 	addiu	sp,sp,48
  42d738:	03e00008 	jr	ra
  42d73c:	00000000 	nop

0042d740 <delete_event>:
  42d740:	3c1c0fbe 	lui	gp,0xfbe
  42d744:	279cf230 	addiu	gp,gp,-3536
  42d748:	0399e021 	addu	gp,gp,t9
  42d74c:	27bdffd0 	addiu	sp,sp,-48
  42d750:	afbc0010 	sw	gp,16(sp)
  42d754:	afbf0028 	sw	ra,40(sp)
  42d758:	afbe0024 	sw	s8,36(sp)
  42d75c:	afbc0020 	sw	gp,32(sp)
  42d760:	03a0f021 	move	s8,sp
  42d764:	afc40030 	sw	a0,48(s8)

/*
 * Delete an event.
 */
void
delete_event(struct state *st)
{
    if (st->st_event != (struct event *) NULL)
  42d768:	8fc20030 	lw	v0,48(s8)
  42d76c:	00000000 	nop
  42d770:	8c420258 	lw	v0,600(v0)
  42d774:	00000000 	nop
  42d778:	1040005c 	beqz	v0,42d8ec <delete_event+0x1ac>
  42d77c:	00000000 	nop
    {
	struct event **ev;

	for (ev = &evlist; ; ev = &(*ev)->ev_next)
  42d780:	8f828018 	lw	v0,-32744(gp)
  42d784:	00000000 	nop
  42d788:	244218b8 	addiu	v0,v0,6328
  42d78c:	00000000 	nop
  42d790:	afc20018 	sw	v0,24(s8)
	{
	    if (*ev == NULL)
  42d794:	8fc20018 	lw	v0,24(s8)
  42d798:	00000000 	nop
  42d79c:	8c420000 	lw	v0,0(v0)
  42d7a0:	00000000 	nop
  42d7a4:	1440001f 	bnez	v0,42d824 <delete_event+0xe4>
  42d7a8:	00000000 	nop
	    {
		DBG(DBG_CONTROL, DBG_log("event %s to be deleted not found",
  42d7ac:	8f8284f8 	lw	v0,-31496(gp)
  42d7b0:	00000000 	nop
  42d7b4:	8c420000 	lw	v0,0(v0)
  42d7b8:	00000000 	nop
  42d7bc:	30420010 	andi	v0,v0,0x10
  42d7c0:	1040004a 	beqz	v0,42d8ec <delete_event+0x1ac>
  42d7c4:	00000000 	nop
  42d7c8:	8fc20030 	lw	v0,48(s8)
  42d7cc:	00000000 	nop
  42d7d0:	8c420258 	lw	v0,600(v0)
  42d7d4:	8f8486b4 	lw	a0,-31052(gp)
  42d7d8:	8c450004 	lw	a1,4(v0)
  42d7dc:	8f9987fc 	lw	t9,-30724(gp)
  42d7e0:	00000000 	nop
  42d7e4:	0320f809 	jalr	t9
  42d7e8:	00000000 	nop
  42d7ec:	8fdc0010 	lw	gp,16(s8)
  42d7f0:	00000000 	nop
  42d7f4:	8f84802c 	lw	a0,-32724(gp)
  42d7f8:	00000000 	nop
  42d7fc:	2484befc 	addiu	a0,a0,-16644
  42d800:	00402821 	move	a1,v0
  42d804:	8f9983b8 	lw	t9,-31816(gp)
  42d808:	00000000 	nop
  42d80c:	0320f809 	jalr	t9
  42d810:	00000000 	nop
  42d814:	8fdc0010 	lw	gp,16(s8)
  42d818:	00000000 	nop
		    enum_show(&timer_event_names, st->st_event->ev_type)));
		break;
  42d81c:	10000033 	b	42d8ec <delete_event+0x1ac>
  42d820:	00000000 	nop
	    }
	    if ((*ev) == st->st_event)
  42d824:	8fc20018 	lw	v0,24(s8)
  42d828:	00000000 	nop
  42d82c:	8c430000 	lw	v1,0(v0)
  42d830:	8fc20030 	lw	v0,48(s8)
  42d834:	00000000 	nop
  42d838:	8c420258 	lw	v0,600(v0)
  42d83c:	00000000 	nop
  42d840:	14620022 	bne	v1,v0,42d8cc <delete_event+0x18c>
  42d844:	00000000 	nop
	    {
		*ev = (*ev)->ev_next;
  42d848:	8fc20018 	lw	v0,24(s8)
  42d84c:	00000000 	nop
  42d850:	8c420000 	lw	v0,0(v0)
  42d854:	00000000 	nop
  42d858:	8c43000c 	lw	v1,12(v0)
  42d85c:	8fc20018 	lw	v0,24(s8)
  42d860:	00000000 	nop
  42d864:	ac430000 	sw	v1,0(v0)

		if (st->st_event->ev_type == EVENT_RETRANSMIT)
  42d868:	8fc20030 	lw	v0,48(s8)
  42d86c:	00000000 	nop
  42d870:	8c420258 	lw	v0,600(v0)
  42d874:	00000000 	nop
  42d878:	8c430004 	lw	v1,4(v0)
  42d87c:	24020004 	li	v0,4
  42d880:	14620004 	bne	v1,v0,42d894 <delete_event+0x154>
  42d884:	00000000 	nop
		    st->st_retransmit = 0;
  42d888:	8fc20030 	lw	v0,48(s8)
  42d88c:	00000000 	nop
  42d890:	a0400150 	sb	zero,336(v0)
		pfree(st->st_event);
  42d894:	8fc20030 	lw	v0,48(s8)
  42d898:	00000000 	nop
  42d89c:	8c440258 	lw	a0,600(v0)
  42d8a0:	8f998094 	lw	t9,-32620(gp)
  42d8a4:	00000000 	nop
  42d8a8:	0320f809 	jalr	t9
  42d8ac:	00000000 	nop
  42d8b0:	8fdc0010 	lw	gp,16(s8)
  42d8b4:	00000000 	nop
		st->st_event = (struct event *) NULL;
  42d8b8:	8fc20030 	lw	v0,48(s8)
  42d8bc:	00000000 	nop
  42d8c0:	ac400258 	sw	zero,600(v0)

		break;
  42d8c4:	10000009 	b	42d8ec <delete_event+0x1ac>
  42d8c8:	00000000 	nop
  42d8cc:	8fc20018 	lw	v0,24(s8)
  42d8d0:	00000000 	nop
  42d8d4:	8c420000 	lw	v0,0(v0)
  42d8d8:	00000000 	nop
  42d8dc:	2442000c 	addiu	v0,v0,12
  42d8e0:	afc20018 	sw	v0,24(s8)
  42d8e4:	1000ffab 	b	42d794 <delete_event+0x54>
  42d8e8:	00000000 	nop
	    }
	}
    }
}
  42d8ec:	03c0e821 	move	sp,s8
  42d8f0:	8fbf0028 	lw	ra,40(sp)
  42d8f4:	8fbe0024 	lw	s8,36(sp)
  42d8f8:	27bd0030 	addiu	sp,sp,48
  42d8fc:	03e00008 	jr	ra
  42d900:	00000000 	nop

0042d904 <delete_dpd_event>:
  42d904:	3c1c0fbe 	lui	gp,0xfbe
  42d908:	279cf06c 	addiu	gp,gp,-3988
  42d90c:	0399e021 	addu	gp,gp,t9
  42d910:	27bdffd0 	addiu	sp,sp,-48
  42d914:	afbc0010 	sw	gp,16(sp)
  42d918:	afbf0028 	sw	ra,40(sp)
  42d91c:	afbe0024 	sw	s8,36(sp)
  42d920:	afbc0020 	sw	gp,32(sp)
  42d924:	03a0f021 	move	s8,sp
  42d928:	afc40030 	sw	a0,48(s8)
#ifdef DPD
/*
 * Delete a DPD event.
 */
void
delete_dpd_event(struct state *st)
{
    if (st->st_dpd_event != (struct event *) NULL)
  42d92c:	8fc20030 	lw	v0,48(s8)
  42d930:	00000000 	nop
  42d934:	8c420298 	lw	v0,664(v0)
  42d938:	00000000 	nop
  42d93c:	10400051 	beqz	v0,42da84 <delete_dpd_event+0x180>
  42d940:	00000000 	nop
    {
	struct event **ev;

	for (ev = &evlist; ; ev = &(*ev)->ev_next)
  42d944:	8f828018 	lw	v0,-32744(gp)
  42d948:	00000000 	nop
  42d94c:	244218b8 	addiu	v0,v0,6328
  42d950:	00000000 	nop
  42d954:	afc20018 	sw	v0,24(s8)
	{
	    if (*ev == NULL)
  42d958:	8fc20018 	lw	v0,24(s8)
  42d95c:	00000000 	nop
  42d960:	8c420000 	lw	v0,0(v0)
  42d964:	00000000 	nop
  42d968:	1440001f 	bnez	v0,42d9e8 <delete_dpd_event+0xe4>
  42d96c:	00000000 	nop
	    {
		DBG(DBG_CONTROL, DBG_log("event %s to be deleted not found",
  42d970:	8f8284f8 	lw	v0,-31496(gp)
  42d974:	00000000 	nop
  42d978:	8c420000 	lw	v0,0(v0)
  42d97c:	00000000 	nop
  42d980:	30420010 	andi	v0,v0,0x10
  42d984:	1040003f 	beqz	v0,42da84 <delete_dpd_event+0x180>
  42d988:	00000000 	nop
  42d98c:	8fc20030 	lw	v0,48(s8)
  42d990:	00000000 	nop
  42d994:	8c420298 	lw	v0,664(v0)
  42d998:	8f8486b4 	lw	a0,-31052(gp)
  42d99c:	8c450004 	lw	a1,4(v0)
  42d9a0:	8f9987fc 	lw	t9,-30724(gp)
  42d9a4:	00000000 	nop
  42d9a8:	0320f809 	jalr	t9
  42d9ac:	00000000 	nop
  42d9b0:	8fdc0010 	lw	gp,16(s8)
  42d9b4:	00000000 	nop
  42d9b8:	8f84802c 	lw	a0,-32724(gp)
  42d9bc:	00000000 	nop
  42d9c0:	2484befc 	addiu	a0,a0,-16644
  42d9c4:	00402821 	move	a1,v0
  42d9c8:	8f9983b8 	lw	t9,-31816(gp)
  42d9cc:	00000000 	nop
  42d9d0:	0320f809 	jalr	t9
  42d9d4:	00000000 	nop
  42d9d8:	8fdc0010 	lw	gp,16(s8)
  42d9dc:	00000000 	nop
		    enum_show(&timer_event_names, st->st_dpd_event->ev_type)));
		break;
  42d9e0:	10000028 	b	42da84 <delete_dpd_event+0x180>
  42d9e4:	00000000 	nop
	    }
	    if ((*ev) == st->st_dpd_event)
  42d9e8:	8fc20018 	lw	v0,24(s8)
  42d9ec:	00000000 	nop
  42d9f0:	8c430000 	lw	v1,0(v0)
  42d9f4:	8fc20030 	lw	v0,48(s8)
  42d9f8:	00000000 	nop
  42d9fc:	8c420298 	lw	v0,664(v0)
  42da00:	00000000 	nop
  42da04:	14620017 	bne	v1,v0,42da64 <delete_dpd_event+0x160>
  42da08:	00000000 	nop
	    {
		*ev = (*ev)->ev_next;
  42da0c:	8fc20018 	lw	v0,24(s8)
  42da10:	00000000 	nop
  42da14:	8c420000 	lw	v0,0(v0)
  42da18:	00000000 	nop
  42da1c:	8c43000c 	lw	v1,12(v0)
  42da20:	8fc20018 	lw	v0,24(s8)
  42da24:	00000000 	nop
  42da28:	ac430000 	sw	v1,0(v0)
		pfree(st->st_dpd_event);
  42da2c:	8fc20030 	lw	v0,48(s8)
  42da30:	00000000 	nop
  42da34:	8c440298 	lw	a0,664(v0)
  42da38:	8f998094 	lw	t9,-32620(gp)
  42da3c:	00000000 	nop
  42da40:	0320f809 	jalr	t9
  42da44:	00000000 	nop
  42da48:	8fdc0010 	lw	gp,16(s8)
  42da4c:	00000000 	nop
		st->st_dpd_event = (struct event *) NULL;
  42da50:	8fc20030 	lw	v0,48(s8)
  42da54:	00000000 	nop
  42da58:	ac400298 	sw	zero,664(v0)

		break;
  42da5c:	10000009 	b	42da84 <delete_dpd_event+0x180>
  42da60:	00000000 	nop
  42da64:	8fc20018 	lw	v0,24(s8)
  42da68:	00000000 	nop
  42da6c:	8c420000 	lw	v0,0(v0)
  42da70:	00000000 	nop
  42da74:	2442000c 	addiu	v0,v0,12
  42da78:	afc20018 	sw	v0,24(s8)
  42da7c:	1000ffb6 	b	42d958 <delete_dpd_event+0x54>
  42da80:	00000000 	nop
	    }
	}
    }
}
  42da84:	03c0e821 	move	sp,s8
  42da88:	8fbf0028 	lw	ra,40(sp)
  42da8c:	8fbe0024 	lw	s8,36(sp)
  42da90:	27bd0030 	addiu	sp,sp,48
  42da94:	03e00008 	jr	ra
  42da98:	00000000 	nop
  42da9c:	00000000 	nop

0042daa0 <present>:
  42daa0:	3c1c0fbe 	lui	gp,0xfbe
  42daa4:	279ceed0 	addiu	gp,gp,-4400
  42daa8:	0399e021 	addu	gp,gp,t9
  42daac:	27bdffd0 	addiu	sp,sp,-48
  42dab0:	afbc0010 	sw	gp,16(sp)
  42dab4:	afbf0028 	sw	ra,40(sp)
  42dab8:	afbe0024 	sw	s8,36(sp)
  42dabc:	afbc0020 	sw	gp,32(sp)
  42dac0:	03a0f021 	move	s8,sp
  42dac4:	afc40030 	sw	a0,48(s8)
  42dac8:	afc50034 	sw	a1,52(s8)
 */
static bool
present(const char* pattern, chunk_t* ch)
{
    u_int pattern_len = strlen(pattern);
  42dacc:	8fc40030 	lw	a0,48(s8)
  42dad0:	8f998188 	lw	t9,-32376(gp)
  42dad4:	00000000 	nop
  42dad8:	0320f809 	jalr	t9
  42dadc:	00000000 	nop
  42dae0:	8fdc0010 	lw	gp,16(s8)
  42dae4:	afc20018 	sw	v0,24(s8)

    if (ch->len >= pattern_len && strncmp(ch->ptr, pattern, pattern_len) == 0)
  42dae8:	8fc20034 	lw	v0,52(s8)
  42daec:	00000000 	nop
  42daf0:	8c430004 	lw	v1,4(v0)
  42daf4:	8fc20018 	lw	v0,24(s8)
  42daf8:	00000000 	nop
  42dafc:	0062102b 	sltu	v0,v1,v0
  42db00:	14400022 	bnez	v0,42db8c <present+0xec>
  42db04:	00000000 	nop
  42db08:	8fc20034 	lw	v0,52(s8)
  42db0c:	00000000 	nop
  42db10:	8c440000 	lw	a0,0(v0)
  42db14:	8fc50030 	lw	a1,48(s8)
  42db18:	8fc60018 	lw	a2,24(s8)
  42db1c:	8f99864c 	lw	t9,-31156(gp)
  42db20:	00000000 	nop
  42db24:	0320f809 	jalr	t9
  42db28:	00000000 	nop
  42db2c:	8fdc0010 	lw	gp,16(s8)
  42db30:	14400016 	bnez	v0,42db8c <present+0xec>
  42db34:	00000000 	nop
    {
	ch->ptr += pattern_len;
  42db38:	8fc20034 	lw	v0,52(s8)
  42db3c:	00000000 	nop
  42db40:	8c430000 	lw	v1,0(v0)
  42db44:	8fc20018 	lw	v0,24(s8)
  42db48:	00000000 	nop
  42db4c:	00621821 	addu	v1,v1,v0
  42db50:	8fc20034 	lw	v0,52(s8)
  42db54:	00000000 	nop
  42db58:	ac430000 	sw	v1,0(v0)
	ch->len -= pattern_len;
  42db5c:	8fc20034 	lw	v0,52(s8)
  42db60:	00000000 	nop
  42db64:	8c430004 	lw	v1,4(v0)
  42db68:	8fc20018 	lw	v0,24(s8)
  42db6c:	00000000 	nop
  42db70:	00621823 	subu	v1,v1,v0
  42db74:	8fc20034 	lw	v0,52(s8)
  42db78:	00000000 	nop
  42db7c:	ac430004 	sw	v1,4(v0)
	return TRUE;
  42db80:	24020001 	li	v0,1
  42db84:	10000002 	b	42db90 <present+0xf0>
  42db88:	00000000 	nop
    }
    return FALSE;
  42db8c:	00001021 	move	v0,zero
}
  42db90:	03c0e821 	move	sp,s8
  42db94:	8fbf0028 	lw	ra,40(sp)
  42db98:	8fbe0024 	lw	s8,36(sp)
  42db9c:	27bd0030 	addiu	sp,sp,48
  42dba0:	03e00008 	jr	ra
  42dba4:	00000000 	nop

0042dba8 <match>:
  42dba8:	3c1c0fbe 	lui	gp,0xfbe
  42dbac:	279cedc8 	addiu	gp,gp,-4664
  42dbb0:	0399e021 	addu	gp,gp,t9
  42dbb4:	27bdffd0 	addiu	sp,sp,-48
  42dbb8:	afbc0010 	sw	gp,16(sp)
  42dbbc:	afbf0028 	sw	ra,40(sp)
  42dbc0:	afbe0024 	sw	s8,36(sp)
  42dbc4:	afbc0020 	sw	gp,32(sp)
  42dbc8:	03a0f021 	move	s8,sp
  42dbcc:	afc40030 	sw	a0,48(s8)
  42dbd0:	afc50034 	sw	a1,52(s8)

/*
 * compare string with chunk
 */
static bool
match(const char *pattern, const chunk_t *ch)
{
    return ch->len == strlen(pattern) &&
  42dbd4:	afc00018 	sw	zero,24(s8)
  42dbd8:	8fc40030 	lw	a0,48(s8)
  42dbdc:	8f998188 	lw	t9,-32376(gp)
  42dbe0:	00000000 	nop
  42dbe4:	0320f809 	jalr	t9
  42dbe8:	00000000 	nop
  42dbec:	8fdc0010 	lw	gp,16(s8)
  42dbf0:	00401821 	move	v1,v0
  42dbf4:	8fc20034 	lw	v0,52(s8)
  42dbf8:	00000000 	nop
  42dbfc:	8c420004 	lw	v0,4(v0)
  42dc00:	00000000 	nop
  42dc04:	14430011 	bne	v0,v1,42dc4c <match+0xa4>
  42dc08:	00000000 	nop
  42dc0c:	8fc40030 	lw	a0,48(s8)
  42dc10:	8fc20034 	lw	v0,52(s8)
  42dc14:	00000000 	nop
  42dc18:	8c450000 	lw	a1,0(v0)
  42dc1c:	8fc20034 	lw	v0,52(s8)
  42dc20:	00000000 	nop
  42dc24:	8c460004 	lw	a2,4(v0)
  42dc28:	8f99864c 	lw	t9,-31156(gp)
  42dc2c:	00000000 	nop
  42dc30:	0320f809 	jalr	t9
  42dc34:	00000000 	nop
  42dc38:	8fdc0010 	lw	gp,16(s8)
  42dc3c:	14400003 	bnez	v0,42dc4c <match+0xa4>
  42dc40:	00000000 	nop
  42dc44:	24020001 	li	v0,1
  42dc48:	afc20018 	sw	v0,24(s8)
  42dc4c:	8fc20018 	lw	v0,24(s8)
  42dc50:	00000000 	nop
	   strncmp(pattern, ch->ptr, ch->len) == 0;
}
  42dc54:	03c0e821 	move	sp,s8
  42dc58:	8fbf0028 	lw	ra,40(sp)
  42dc5c:	8fbe0024 	lw	s8,36(sp)
  42dc60:	27bd0030 	addiu	sp,sp,48
  42dc64:	03e00008 	jr	ra
  42dc68:	00000000 	nop

0042dc6c <find_boundary>:
  42dc6c:	3c1c0fbe 	lui	gp,0xfbe
  42dc70:	279ced04 	addiu	gp,gp,-4860
  42dc74:	0399e021 	addu	gp,gp,t9
  42dc78:	27bdffb8 	addiu	sp,sp,-72
  42dc7c:	afbc0010 	sw	gp,16(sp)
  42dc80:	afbf0040 	sw	ra,64(sp)
  42dc84:	afbe003c 	sw	s8,60(sp)
  42dc88:	afbc0038 	sw	gp,56(sp)
  42dc8c:	03a0f021 	move	s8,sp
  42dc90:	afc40048 	sw	a0,72(s8)
  42dc94:	afc5004c 	sw	a1,76(s8)

/*
 * find a boundary of the form -----tag name-----
 */
static bool
find_boundary(const char* tag, chunk_t *line)
{
    chunk_t name = empty_chunk;
  42dc98:	8f828708 	lw	v0,-30968(gp)
  42dc9c:	00000000 	nop
  42dca0:	8c420000 	lw	v0,0(v0)
  42dca4:	00000000 	nop
  42dca8:	afc20018 	sw	v0,24(s8)
  42dcac:	8f828708 	lw	v0,-30968(gp)
  42dcb0:	00000000 	nop
  42dcb4:	8c420004 	lw	v0,4(v0)
  42dcb8:	00000000 	nop
  42dcbc:	afc2001c 	sw	v0,28(s8)

    if (!present("-----", line))
  42dcc0:	8f84802c 	lw	a0,-32724(gp)
  42dcc4:	00000000 	nop
  42dcc8:	2484bf20 	addiu	a0,a0,-16608
  42dccc:	8fc5004c 	lw	a1,76(s8)
  42dcd0:	8f998030 	lw	t9,-32720(gp)
  42dcd4:	00000000 	nop
  42dcd8:	2739daa0 	addiu	t9,t9,-9568
  42dcdc:	00000000 	nop
  42dce0:	0320f809 	jalr	t9
  42dce4:	00000000 	nop
  42dce8:	8fdc0010 	lw	gp,16(s8)
  42dcec:	14400004 	bnez	v0,42dd00 <find_boundary+0x94>
  42dcf0:	00000000 	nop
	return FALSE;
  42dcf4:	00001021 	move	v0,zero
  42dcf8:	10000071 	b	42dec0 <find_boundary+0x254>
  42dcfc:	00000000 	nop
    if (!present(tag, line))
  42dd00:	8fc40048 	lw	a0,72(s8)
  42dd04:	8fc5004c 	lw	a1,76(s8)
  42dd08:	8f998030 	lw	t9,-32720(gp)
  42dd0c:	00000000 	nop
  42dd10:	2739daa0 	addiu	t9,t9,-9568
  42dd14:	00000000 	nop
  42dd18:	0320f809 	jalr	t9
  42dd1c:	00000000 	nop
  42dd20:	8fdc0010 	lw	gp,16(s8)
  42dd24:	14400004 	bnez	v0,42dd38 <find_boundary+0xcc>
  42dd28:	00000000 	nop
	return FALSE;
  42dd2c:	00001021 	move	v0,zero
  42dd30:	10000063 	b	42dec0 <find_boundary+0x254>
  42dd34:	00000000 	nop
    if (*line->ptr != ' ')
  42dd38:	8fc2004c 	lw	v0,76(s8)
  42dd3c:	00000000 	nop
  42dd40:	8c420000 	lw	v0,0(v0)
  42dd44:	00000000 	nop
  42dd48:	90430000 	lbu	v1,0(v0)
  42dd4c:	24020020 	li	v0,32
  42dd50:	10620004 	beq	v1,v0,42dd64 <find_boundary+0xf8>
  42dd54:	00000000 	nop
	return FALSE;
  42dd58:	00001021 	move	v0,zero
  42dd5c:	10000058 	b	42dec0 <find_boundary+0x254>
  42dd60:	00000000 	nop
    line->ptr++;  line->len--;
  42dd64:	8fc2004c 	lw	v0,76(s8)
  42dd68:	00000000 	nop
  42dd6c:	8c420000 	lw	v0,0(v0)
  42dd70:	00000000 	nop
  42dd74:	24430001 	addiu	v1,v0,1
  42dd78:	8fc2004c 	lw	v0,76(s8)
  42dd7c:	00000000 	nop
  42dd80:	ac430000 	sw	v1,0(v0)
  42dd84:	8fc2004c 	lw	v0,76(s8)
  42dd88:	00000000 	nop
  42dd8c:	8c420004 	lw	v0,4(v0)
  42dd90:	00000000 	nop
  42dd94:	2443ffff 	addiu	v1,v0,-1
  42dd98:	8fc2004c 	lw	v0,76(s8)
  42dd9c:	00000000 	nop
  42dda0:	ac430004 	sw	v1,4(v0)

    /* extract name */
    name.ptr = line->ptr;
  42dda4:	8fc2004c 	lw	v0,76(s8)
  42dda8:	00000000 	nop
  42ddac:	8c420000 	lw	v0,0(v0)
  42ddb0:	00000000 	nop
  42ddb4:	afc20018 	sw	v0,24(s8)
    while (line->len > 0)
  42ddb8:	8fc2004c 	lw	v0,76(s8)
  42ddbc:	00000000 	nop
  42ddc0:	8c420004 	lw	v0,4(v0)
  42ddc4:	00000000 	nop
  42ddc8:	14400003 	bnez	v0,42ddd8 <find_boundary+0x16c>
  42ddcc:	00000000 	nop
  42ddd0:	1000003a 	b	42debc <find_boundary+0x250>
  42ddd4:	00000000 	nop
    {
	if (present("-----", line))
  42ddd8:	8f84802c 	lw	a0,-32724(gp)
  42dddc:	00000000 	nop
  42dde0:	2484bf20 	addiu	a0,a0,-16608
  42dde4:	8fc5004c 	lw	a1,76(s8)
  42dde8:	8f998030 	lw	t9,-32720(gp)
  42ddec:	00000000 	nop
  42ddf0:	2739daa0 	addiu	t9,t9,-9568
  42ddf4:	00000000 	nop
  42ddf8:	0320f809 	jalr	t9
  42ddfc:	00000000 	nop
  42de00:	8fdc0010 	lw	gp,16(s8)
  42de04:	10400017 	beqz	v0,42de64 <find_boundary+0x1f8>
  42de08:	00000000 	nop
	{
	    DBG(DBG_PARSING,
  42de0c:	8f8284f8 	lw	v0,-31496(gp)
  42de10:	00000000 	nop
  42de14:	8c420000 	lw	v0,0(v0)
  42de18:	00000000 	nop
  42de1c:	30420004 	andi	v0,v0,0x4
  42de20:	1040000d 	beqz	v0,42de58 <find_boundary+0x1ec>
  42de24:	00000000 	nop
  42de28:	8f84802c 	lw	a0,-32724(gp)
  42de2c:	00000000 	nop
  42de30:	2484bf28 	addiu	a0,a0,-16600
  42de34:	8fc50048 	lw	a1,72(s8)
  42de38:	8fc6001c 	lw	a2,28(s8)
  42de3c:	8fc70018 	lw	a3,24(s8)
  42de40:	8f9983b8 	lw	t9,-31816(gp)
  42de44:	00000000 	nop
  42de48:	0320f809 	jalr	t9
  42de4c:	00000000 	nop
  42de50:	8fdc0010 	lw	gp,16(s8)
  42de54:	00000000 	nop
		DBG_log("  -----%s %.*s-----",
			tag, (int)name.len, name.ptr);
	    )
	    return TRUE;
  42de58:	24020001 	li	v0,1
  42de5c:	10000018 	b	42dec0 <find_boundary+0x254>
  42de60:	00000000 	nop
	}
	line->ptr++;  line->len--;  name.len++;
  42de64:	8fc2004c 	lw	v0,76(s8)
  42de68:	00000000 	nop
  42de6c:	8c420000 	lw	v0,0(v0)
  42de70:	00000000 	nop
  42de74:	24430001 	addiu	v1,v0,1
  42de78:	8fc2004c 	lw	v0,76(s8)
  42de7c:	00000000 	nop
  42de80:	ac430000 	sw	v1,0(v0)
  42de84:	8fc2004c 	lw	v0,76(s8)
  42de88:	00000000 	nop
  42de8c:	8c420004 	lw	v0,4(v0)
  42de90:	00000000 	nop
  42de94:	2443ffff 	addiu	v1,v0,-1
  42de98:	8fc2004c 	lw	v0,76(s8)
  42de9c:	00000000 	nop
  42dea0:	ac430004 	sw	v1,4(v0)
  42dea4:	8fc2001c 	lw	v0,28(s8)
  42dea8:	00000000 	nop
  42deac:	24420001 	addiu	v0,v0,1
  42deb0:	afc2001c 	sw	v0,28(s8)
  42deb4:	1000ffc0 	b	42ddb8 <find_boundary+0x14c>
  42deb8:	00000000 	nop
    }
    return FALSE;
  42debc:	00001021 	move	v0,zero
}
  42dec0:	03c0e821 	move	sp,s8
  42dec4:	8fbf0040 	lw	ra,64(sp)
  42dec8:	8fbe003c 	lw	s8,60(sp)
  42decc:	27bd0048 	addiu	sp,sp,72
  42ded0:	03e00008 	jr	ra
  42ded4:	00000000 	nop

0042ded8 <eat_whitespace>:
  42ded8:	3c1c0fbe 	lui	gp,0xfbe
  42dedc:	279cea98 	addiu	gp,gp,-5480
  42dee0:	0399e021 	addu	gp,gp,t9
  42dee4:	27bdffe8 	addiu	sp,sp,-24
  42dee8:	afbc0000 	sw	gp,0(sp)
  42deec:	afbe0014 	sw	s8,20(sp)
  42def0:	afbc0010 	sw	gp,16(sp)
  42def4:	03a0f021 	move	s8,sp
  42def8:	afc40018 	sw	a0,24(s8)

/*
 * eat whitespace
 */
static void
eat_whitespace(chunk_t *src)
{
    while (src->len > 0 && (*src->ptr == ' ' || *src->ptr == '\t'))
  42defc:	8fc20018 	lw	v0,24(s8)
  42df00:	00000000 	nop
  42df04:	8c420004 	lw	v0,4(v0)
  42df08:	00000000 	nop
  42df0c:	10400025 	beqz	v0,42dfa4 <eat_whitespace+0xcc>
  42df10:	00000000 	nop
  42df14:	8fc20018 	lw	v0,24(s8)
  42df18:	00000000 	nop
  42df1c:	8c420000 	lw	v0,0(v0)
  42df20:	00000000 	nop
  42df24:	90430000 	lbu	v1,0(v0)
  42df28:	24020020 	li	v0,32
  42df2c:	1062000b 	beq	v1,v0,42df5c <eat_whitespace+0x84>
  42df30:	00000000 	nop
  42df34:	8fc20018 	lw	v0,24(s8)
  42df38:	00000000 	nop
  42df3c:	8c420000 	lw	v0,0(v0)
  42df40:	00000000 	nop
  42df44:	90430000 	lbu	v1,0(v0)
  42df48:	24020009 	li	v0,9
  42df4c:	10620003 	beq	v1,v0,42df5c <eat_whitespace+0x84>
  42df50:	00000000 	nop
  42df54:	10000013 	b	42dfa4 <eat_whitespace+0xcc>
  42df58:	00000000 	nop
    {
	src->ptr++;  src->len--;
  42df5c:	8fc20018 	lw	v0,24(s8)
  42df60:	00000000 	nop
  42df64:	8c420000 	lw	v0,0(v0)
  42df68:	00000000 	nop
  42df6c:	24430001 	addiu	v1,v0,1
  42df70:	8fc20018 	lw	v0,24(s8)
  42df74:	00000000 	nop
  42df78:	ac430000 	sw	v1,0(v0)
  42df7c:	8fc20018 	lw	v0,24(s8)
  42df80:	00000000 	nop
  42df84:	8c420004 	lw	v0,4(v0)
  42df88:	00000000 	nop
  42df8c:	2443ffff 	addiu	v1,v0,-1
  42df90:	8fc20018 	lw	v0,24(s8)
  42df94:	00000000 	nop
  42df98:	ac430004 	sw	v1,4(v0)
  42df9c:	1000ffd7 	b	42defc <eat_whitespace+0x24>
  42dfa0:	00000000 	nop
    }
}
  42dfa4:	03c0e821 	move	sp,s8
  42dfa8:	8fbe0014 	lw	s8,20(sp)
  42dfac:	27bd0018 	addiu	sp,sp,24
  42dfb0:	03e00008 	jr	ra
  42dfb4:	00000000 	nop

0042dfb8 <extract_token>:
  42dfb8:	3c1c0fbe 	lui	gp,0xfbe
  42dfbc:	279ce9b8 	addiu	gp,gp,-5704
  42dfc0:	0399e021 	addu	gp,gp,t9
  42dfc4:	27bdffc8 	addiu	sp,sp,-56
  42dfc8:	afbc0010 	sw	gp,16(sp)
  42dfcc:	afbf0030 	sw	ra,48(sp)
  42dfd0:	afbe002c 	sw	s8,44(sp)
  42dfd4:	afbc0028 	sw	gp,40(sp)
  42dfd8:	03a0f021 	move	s8,sp
  42dfdc:	afc40038 	sw	a0,56(s8)
  42dfe0:	00a01021 	move	v0,a1
  42dfe4:	afc60040 	sw	a2,64(s8)
  42dfe8:	a3c20018 	sb	v0,24(s8)

/*
 * extracts a token ending with a given termination symbol
 */
static bool
extract_token(chunk_t *token, char termination, chunk_t *src)
{
    u_char *eot = memchr(src->ptr, termination, src->len);
  42dfec:	83c30018 	lb	v1,24(s8)
  42dff0:	8fc20040 	lw	v0,64(s8)
  42dff4:	00000000 	nop
  42dff8:	8c440000 	lw	a0,0(v0)
  42dffc:	00602821 	move	a1,v1
  42e000:	8fc20040 	lw	v0,64(s8)
  42e004:	00000000 	nop
  42e008:	8c460004 	lw	a2,4(v0)
  42e00c:	8f9986e0 	lw	t9,-31008(gp)
  42e010:	00000000 	nop
  42e014:	0320f809 	jalr	t9
  42e018:	00000000 	nop
  42e01c:	8fdc0010 	lw	gp,16(s8)
  42e020:	afc2001c 	sw	v0,28(s8)

    /* initialize empty token */
    *token = empty_chunk;
  42e024:	8fc30038 	lw	v1,56(s8)
  42e028:	8f828708 	lw	v0,-30968(gp)
  42e02c:	00000000 	nop
  42e030:	8c420000 	lw	v0,0(v0)
  42e034:	00000000 	nop
  42e038:	ac620000 	sw	v0,0(v1)
  42e03c:	8f828708 	lw	v0,-30968(gp)
  42e040:	00000000 	nop
  42e044:	8c420004 	lw	v0,4(v0)
  42e048:	00000000 	nop
  42e04c:	ac620004 	sw	v0,4(v1)

    if (eot == NULL) /* termination symbol not found */
  42e050:	8fc2001c 	lw	v0,28(s8)
  42e054:	00000000 	nop
  42e058:	14400004 	bnez	v0,42e06c <extract_token+0xb4>
  42e05c:	00000000 	nop
	return FALSE;
  42e060:	00001021 	move	v0,zero
  42e064:	10000023 	b	42e0f4 <extract_token+0x13c>
  42e068:	00000000 	nop

    /* extract token */
    token->ptr = src->ptr;
  42e06c:	8fc20040 	lw	v0,64(s8)
  42e070:	00000000 	nop
  42e074:	8c430000 	lw	v1,0(v0)
  42e078:	8fc20038 	lw	v0,56(s8)
  42e07c:	00000000 	nop
  42e080:	ac430000 	sw	v1,0(v0)
    token->len = (u_int)(eot - src->ptr);
  42e084:	8fc20040 	lw	v0,64(s8)
  42e088:	00000000 	nop
  42e08c:	8c430000 	lw	v1,0(v0)
  42e090:	8fc2001c 	lw	v0,28(s8)
  42e094:	00000000 	nop
  42e098:	00431823 	subu	v1,v0,v1
  42e09c:	8fc20038 	lw	v0,56(s8)
  42e0a0:	00000000 	nop
  42e0a4:	ac430004 	sw	v1,4(v0)

    /* advance src pointer after termination symbol */
    src->ptr = eot + 1;
  42e0a8:	8fc2001c 	lw	v0,28(s8)
  42e0ac:	00000000 	nop
  42e0b0:	24430001 	addiu	v1,v0,1
  42e0b4:	8fc20040 	lw	v0,64(s8)
  42e0b8:	00000000 	nop
  42e0bc:	ac430000 	sw	v1,0(v0)
    src->len -= (token->len + 1);
  42e0c0:	8fc20040 	lw	v0,64(s8)
  42e0c4:	00000000 	nop
  42e0c8:	8c430004 	lw	v1,4(v0)
  42e0cc:	8fc20038 	lw	v0,56(s8)
  42e0d0:	00000000 	nop
  42e0d4:	8c420004 	lw	v0,4(v0)
  42e0d8:	00000000 	nop
  42e0dc:	00621023 	subu	v0,v1,v0
  42e0e0:	2443ffff 	addiu	v1,v0,-1
  42e0e4:	8fc20040 	lw	v0,64(s8)
  42e0e8:	00000000 	nop
  42e0ec:	ac430004 	sw	v1,4(v0)

   return TRUE;
  42e0f0:	24020001 	li	v0,1
}
  42e0f4:	03c0e821 	move	sp,s8
  42e0f8:	8fbf0030 	lw	ra,48(sp)
  42e0fc:	8fbe002c 	lw	s8,44(sp)
  42e100:	27bd0038 	addiu	sp,sp,56
  42e104:	03e00008 	jr	ra
  42e108:	00000000 	nop

0042e10c <extract_parameter>:
  42e10c:	3c1c0fbe 	lui	gp,0xfbe
  42e110:	279ce864 	addiu	gp,gp,-6044
  42e114:	0399e021 	addu	gp,gp,t9
  42e118:	27bdffd0 	addiu	sp,sp,-48
  42e11c:	afbc0010 	sw	gp,16(sp)
  42e120:	afbf0028 	sw	ra,40(sp)
  42e124:	afbe0024 	sw	s8,36(sp)
  42e128:	afbc0020 	sw	gp,32(sp)
  42e12c:	03a0f021 	move	s8,sp
  42e130:	afc40030 	sw	a0,48(s8)
  42e134:	afc50034 	sw	a1,52(s8)
  42e138:	afc60038 	sw	a2,56(s8)

/*
 * extracts a name: value pair from the PEM header
 */
static bool
extract_parameter(chunk_t *name, chunk_t *value, chunk_t *line)
{
    DBG(DBG_PARSING,
  42e13c:	8f8284f8 	lw	v0,-31496(gp)
  42e140:	00000000 	nop
  42e144:	8c420000 	lw	v0,0(v0)
  42e148:	00000000 	nop
  42e14c:	30420004 	andi	v0,v0,0x4
  42e150:	10400010 	beqz	v0,42e194 <extract_parameter+0x88>
  42e154:	00000000 	nop
  42e158:	8f84802c 	lw	a0,-32724(gp)
  42e15c:	00000000 	nop
  42e160:	2484bf3c 	addiu	a0,a0,-16580
  42e164:	8fc20038 	lw	v0,56(s8)
  42e168:	00000000 	nop
  42e16c:	8c450004 	lw	a1,4(v0)
  42e170:	8fc20038 	lw	v0,56(s8)
  42e174:	00000000 	nop
  42e178:	8c460000 	lw	a2,0(v0)
  42e17c:	8f9983b8 	lw	t9,-31816(gp)
  42e180:	00000000 	nop
  42e184:	0320f809 	jalr	t9
  42e188:	00000000 	nop
  42e18c:	8fdc0010 	lw	gp,16(s8)
  42e190:	00000000 	nop
	DBG_log("  %.*s", (int)line->len, line->ptr);
    )

    /* extract name */
    if (!extract_token(name,':', line))
  42e194:	8fc40030 	lw	a0,48(s8)
  42e198:	2405003a 	li	a1,58
  42e19c:	8fc60038 	lw	a2,56(s8)
  42e1a0:	8f998030 	lw	t9,-32720(gp)
  42e1a4:	00000000 	nop
  42e1a8:	2739dfb8 	addiu	t9,t9,-8264
  42e1ac:	00000000 	nop
  42e1b0:	0320f809 	jalr	t9
  42e1b4:	00000000 	nop
  42e1b8:	8fdc0010 	lw	gp,16(s8)
  42e1bc:	14400004 	bnez	v0,42e1d0 <extract_parameter+0xc4>
  42e1c0:	00000000 	nop
	return FALSE;
  42e1c4:	00001021 	move	v0,zero
  42e1c8:	10000014 	b	42e21c <extract_parameter+0x110>
  42e1cc:	00000000 	nop

    eat_whitespace(line);
  42e1d0:	8fc40038 	lw	a0,56(s8)
  42e1d4:	8f998030 	lw	t9,-32720(gp)
  42e1d8:	00000000 	nop
  42e1dc:	2739ded8 	addiu	t9,t9,-8488
  42e1e0:	00000000 	nop
  42e1e4:	0320f809 	jalr	t9
  42e1e8:	00000000 	nop
  42e1ec:	8fdc0010 	lw	gp,16(s8)
  42e1f0:	00000000 	nop

    /* extract value */
    *value = *line;
  42e1f4:	8fc40034 	lw	a0,52(s8)
  42e1f8:	8fc30038 	lw	v1,56(s8)
  42e1fc:	00000000 	nop
  42e200:	8c620000 	lw	v0,0(v1)
  42e204:	00000000 	nop
  42e208:	ac820000 	sw	v0,0(a0)
  42e20c:	8c620004 	lw	v0,4(v1)
  42e210:	00000000 	nop
  42e214:	ac820004 	sw	v0,4(a0)
    return TRUE;
  42e218:	24020001 	li	v0,1
}
  42e21c:	03c0e821 	move	sp,s8
  42e220:	8fbf0028 	lw	ra,40(sp)
  42e224:	8fbe0024 	lw	s8,36(sp)
  42e228:	27bd0030 	addiu	sp,sp,48
  42e22c:	03e00008 	jr	ra
  42e230:	00000000 	nop

0042e234 <fetchline>:
  42e234:	3c1c0fbe 	lui	gp,0xfbe
  42e238:	279ce73c 	addiu	gp,gp,-6340
  42e23c:	0399e021 	addu	gp,gp,t9
  42e240:	27bdffc8 	addiu	sp,sp,-56
  42e244:	afbc0010 	sw	gp,16(sp)
  42e248:	afbf0030 	sw	ra,48(sp)
  42e24c:	afbe002c 	sw	s8,44(sp)
  42e250:	afbc0028 	sw	gp,40(sp)
  42e254:	03a0f021 	move	s8,sp
  42e258:	afc40038 	sw	a0,56(s8)
  42e25c:	afc5003c 	sw	a1,60(s8)

/*
 *  fetches a new line terminated by \n or \r\n
 */
static bool
fetchline(chunk_t *src, chunk_t *line)
{
    if (src->len == 0) /* end of src reached */
  42e260:	8fc20038 	lw	v0,56(s8)
  42e264:	00000000 	nop
  42e268:	8c420004 	lw	v0,4(v0)
  42e26c:	00000000 	nop
  42e270:	14400004 	bnez	v0,42e284 <fetchline+0x50>
  42e274:	00000000 	nop
	return FALSE;
  42e278:	00001021 	move	v0,zero
  42e27c:	10000042 	b	42e388 <fetchline+0x154>
  42e280:	00000000 	nop

    if (extract_token(line, '\n', src))
  42e284:	8fc4003c 	lw	a0,60(s8)
  42e288:	2405000a 	li	a1,10
  42e28c:	8fc60038 	lw	a2,56(s8)
  42e290:	8f998030 	lw	t9,-32720(gp)
  42e294:	00000000 	nop
  42e298:	2739dfb8 	addiu	t9,t9,-8264
  42e29c:	00000000 	nop
  42e2a0:	0320f809 	jalr	t9
  42e2a4:	00000000 	nop
  42e2a8:	8fdc0010 	lw	gp,16(s8)
  42e2ac:	1040001e 	beqz	v0,42e328 <fetchline+0xf4>
  42e2b0:	00000000 	nop
    {
	if (line->len > 0 && *(line->ptr + line->len -1) == '\r')
  42e2b4:	8fc2003c 	lw	v0,60(s8)
  42e2b8:	00000000 	nop
  42e2bc:	8c420004 	lw	v0,4(v0)
  42e2c0:	00000000 	nop
  42e2c4:	1040002f 	beqz	v0,42e384 <fetchline+0x150>
  42e2c8:	00000000 	nop
  42e2cc:	8fc2003c 	lw	v0,60(s8)
  42e2d0:	00000000 	nop
  42e2d4:	8c430000 	lw	v1,0(v0)
  42e2d8:	8fc2003c 	lw	v0,60(s8)
  42e2dc:	00000000 	nop
  42e2e0:	8c420004 	lw	v0,4(v0)
  42e2e4:	00000000 	nop
  42e2e8:	00621021 	addu	v0,v1,v0
  42e2ec:	2442ffff 	addiu	v0,v0,-1
  42e2f0:	90430000 	lbu	v1,0(v0)
  42e2f4:	2402000d 	li	v0,13
  42e2f8:	14620022 	bne	v1,v0,42e384 <fetchline+0x150>
  42e2fc:	00000000 	nop
	    line->len--;  /* remove optional \r */
  42e300:	8fc2003c 	lw	v0,60(s8)
  42e304:	00000000 	nop
  42e308:	8c420004 	lw	v0,4(v0)
  42e30c:	00000000 	nop
  42e310:	2443ffff 	addiu	v1,v0,-1
  42e314:	8fc2003c 	lw	v0,60(s8)
  42e318:	00000000 	nop
  42e31c:	ac430004 	sw	v1,4(v0)
  42e320:	10000018 	b	42e384 <fetchline+0x150>
  42e324:	00000000 	nop
    }
    else /*last line ends without newline */
    {
	*line = *src;
  42e328:	8fc4003c 	lw	a0,60(s8)
  42e32c:	8fc30038 	lw	v1,56(s8)
  42e330:	00000000 	nop
  42e334:	8c620000 	lw	v0,0(v1)
  42e338:	00000000 	nop
  42e33c:	ac820000 	sw	v0,0(a0)
  42e340:	8c620004 	lw	v0,4(v1)
  42e344:	00000000 	nop
  42e348:	ac820004 	sw	v0,4(a0)
	src->ptr += src->len;
  42e34c:	8fc20038 	lw	v0,56(s8)
  42e350:	00000000 	nop
  42e354:	8c430000 	lw	v1,0(v0)
  42e358:	8fc20038 	lw	v0,56(s8)
  42e35c:	00000000 	nop
  42e360:	8c420004 	lw	v0,4(v0)
  42e364:	00000000 	nop
  42e368:	00621821 	addu	v1,v1,v0
  42e36c:	8fc20038 	lw	v0,56(s8)
  42e370:	00000000 	nop
  42e374:	ac430000 	sw	v1,0(v0)
	src->len = 0;
  42e378:	8fc20038 	lw	v0,56(s8)
  42e37c:	00000000 	nop
  42e380:	ac400004 	sw	zero,4(v0)
    }
    return TRUE;
  42e384:	24020001 	li	v0,1
}
  42e388:	03c0e821 	move	sp,s8
  42e38c:	8fbf0030 	lw	ra,48(sp)
  42e390:	8fbe002c 	lw	s8,44(sp)
  42e394:	27bd0038 	addiu	sp,sp,56
  42e398:	03e00008 	jr	ra
  42e39c:	00000000 	nop

0042e3a0 <pem_decrypt_3des>:
  42e3a0:	3c1c0fbe 	lui	gp,0xfbe
  42e3a4:	279ce5d0 	addiu	gp,gp,-6704
  42e3a8:	0399e021 	addu	gp,gp,t9
  42e3ac:	27bdfdb0 	addiu	sp,sp,-592
  42e3b0:	afbc0020 	sw	gp,32(sp)
  42e3b4:	afbf0248 	sw	ra,584(sp)
  42e3b8:	afbe0244 	sw	s8,580(sp)
  42e3bc:	afbc0240 	sw	gp,576(sp)
  42e3c0:	03a0f021 	move	s8,sp
  42e3c4:	afc40250 	sw	a0,592(s8)
  42e3c8:	afc50254 	sw	a1,596(s8)
  42e3cc:	afc60258 	sw	a2,600(s8)

/*
 * decrypts a DES-EDE-CBC encrypted data block
 */
static err_t
pem_decrypt_3des(chunk_t *blob, chunk_t *iv, const char *passphrase)
{
    MD5_CTX context;
    u_char digest[MD5_DIGEST_SIZE];
    u_char key[24];
    des_cblock *deskey = (des_cblock *)key;
  42e3d0:	27c20090 	addiu	v0,s8,144
  42e3d4:	afc200a8 	sw	v0,168(s8)
    des_key_schedule ks[3];
    u_char padding, *last_padding_pos, *first_padding_pos;

   if (iv->len != DES_CBC_BLOCK_SIZE)
  42e3d8:	8fc20254 	lw	v0,596(s8)
  42e3dc:	00000000 	nop
  42e3e0:	8c430004 	lw	v1,4(v0)
  42e3e4:	24020008 	li	v0,8
  42e3e8:	10620006 	beq	v1,v0,42e404 <pem_decrypt_3des+0x64>
  42e3ec:	00000000 	nop
	return "size of DES-EDE3-CBC IV is not 8 bytes";
  42e3f0:	8f82802c 	lw	v0,-32724(gp)
  42e3f4:	00000000 	nop
  42e3f8:	2442bf44 	addiu	v0,v0,-16572
  42e3fc:	100000fa 	b	42e7e8 <pem_decrypt_3des+0x448>
  42e400:	00000000 	nop

    /* Convert passphrase to 3des key */
    MD5Init(&context);
  42e404:	27c40028 	addiu	a0,s8,40
  42e408:	8f9983c8 	lw	t9,-31800(gp)
  42e40c:	00000000 	nop
  42e410:	0320f809 	jalr	t9
  42e414:	00000000 	nop
  42e418:	8fdc0020 	lw	gp,32(s8)
  42e41c:	00000000 	nop
    MD5Update(&context, passphrase, strlen(passphrase));
  42e420:	8fc40258 	lw	a0,600(s8)
  42e424:	8f998188 	lw	t9,-32376(gp)
  42e428:	00000000 	nop
  42e42c:	0320f809 	jalr	t9
  42e430:	00000000 	nop
  42e434:	8fdc0020 	lw	gp,32(s8)
  42e438:	27c40028 	addiu	a0,s8,40
  42e43c:	8fc50258 	lw	a1,600(s8)
  42e440:	00403021 	move	a2,v0
  42e444:	8f998354 	lw	t9,-31916(gp)
  42e448:	00000000 	nop
  42e44c:	0320f809 	jalr	t9
  42e450:	00000000 	nop
  42e454:	8fdc0020 	lw	gp,32(s8)
  42e458:	00000000 	nop
    MD5Update(&context, iv->ptr, iv->len);
  42e45c:	27c40028 	addiu	a0,s8,40
  42e460:	8fc20254 	lw	v0,596(s8)
  42e464:	00000000 	nop
  42e468:	8c450000 	lw	a1,0(v0)
  42e46c:	8fc20254 	lw	v0,596(s8)
  42e470:	00000000 	nop
  42e474:	8c460004 	lw	a2,4(v0)
  42e478:	8f998354 	lw	t9,-31916(gp)
  42e47c:	00000000 	nop
  42e480:	0320f809 	jalr	t9
  42e484:	00000000 	nop
  42e488:	8fdc0020 	lw	gp,32(s8)
  42e48c:	00000000 	nop
    MD5Final(digest, &context);
  42e490:	27c40080 	addiu	a0,s8,128
  42e494:	27c50028 	addiu	a1,s8,40
  42e498:	8f99888c 	lw	t9,-30580(gp)
  42e49c:	00000000 	nop
  42e4a0:	0320f809 	jalr	t9
  42e4a4:	00000000 	nop
  42e4a8:	8fdc0020 	lw	gp,32(s8)
  42e4ac:	00000000 	nop

    memcpy(key, digest, MD5_DIGEST_SIZE);
  42e4b0:	27c40090 	addiu	a0,s8,144
  42e4b4:	27c50080 	addiu	a1,s8,128
  42e4b8:	24060010 	li	a2,16
  42e4bc:	8f998a30 	lw	t9,-30160(gp)
  42e4c0:	00000000 	nop
  42e4c4:	0320f809 	jalr	t9
  42e4c8:	00000000 	nop
  42e4cc:	8fdc0020 	lw	gp,32(s8)
  42e4d0:	00000000 	nop

    MD5Init(&context);
  42e4d4:	27c40028 	addiu	a0,s8,40
  42e4d8:	8f9983c8 	lw	t9,-31800(gp)
  42e4dc:	00000000 	nop
  42e4e0:	0320f809 	jalr	t9
  42e4e4:	00000000 	nop
  42e4e8:	8fdc0020 	lw	gp,32(s8)
  42e4ec:	00000000 	nop
    MD5Update(&context, digest, MD5_DIGEST_SIZE);
  42e4f0:	27c40028 	addiu	a0,s8,40
  42e4f4:	27c50080 	addiu	a1,s8,128
  42e4f8:	24060010 	li	a2,16
  42e4fc:	8f998354 	lw	t9,-31916(gp)
  42e500:	00000000 	nop
  42e504:	0320f809 	jalr	t9
  42e508:	00000000 	nop
  42e50c:	8fdc0020 	lw	gp,32(s8)
  42e510:	00000000 	nop
    MD5Update(&context, passphrase, strlen(passphrase));
  42e514:	8fc40258 	lw	a0,600(s8)
  42e518:	8f998188 	lw	t9,-32376(gp)
  42e51c:	00000000 	nop
  42e520:	0320f809 	jalr	t9
  42e524:	00000000 	nop
  42e528:	8fdc0020 	lw	gp,32(s8)
  42e52c:	27c40028 	addiu	a0,s8,40
  42e530:	8fc50258 	lw	a1,600(s8)
  42e534:	00403021 	move	a2,v0
  42e538:	8f998354 	lw	t9,-31916(gp)
  42e53c:	00000000 	nop
  42e540:	0320f809 	jalr	t9
  42e544:	00000000 	nop
  42e548:	8fdc0020 	lw	gp,32(s8)
  42e54c:	00000000 	nop
    MD5Update(&context, iv->ptr, iv->len);
  42e550:	27c40028 	addiu	a0,s8,40
  42e554:	8fc20254 	lw	v0,596(s8)
  42e558:	00000000 	nop
  42e55c:	8c450000 	lw	a1,0(v0)
  42e560:	8fc20254 	lw	v0,596(s8)
  42e564:	00000000 	nop
  42e568:	8c460004 	lw	a2,4(v0)
  42e56c:	8f998354 	lw	t9,-31916(gp)
  42e570:	00000000 	nop
  42e574:	0320f809 	jalr	t9
  42e578:	00000000 	nop
  42e57c:	8fdc0020 	lw	gp,32(s8)
  42e580:	00000000 	nop
    MD5Final(digest, &context);
  42e584:	27c40080 	addiu	a0,s8,128
  42e588:	27c50028 	addiu	a1,s8,40
  42e58c:	8f99888c 	lw	t9,-30580(gp)
  42e590:	00000000 	nop
  42e594:	0320f809 	jalr	t9
  42e598:	00000000 	nop
  42e59c:	8fdc0020 	lw	gp,32(s8)
  42e5a0:	00000000 	nop

    memcpy(key + MD5_DIGEST_SIZE, digest, 24 - MD5_DIGEST_SIZE);
  42e5a4:	27c20090 	addiu	v0,s8,144
  42e5a8:	24420010 	addiu	v0,v0,16
  42e5ac:	00402021 	move	a0,v0
  42e5b0:	27c50080 	addiu	a1,s8,128
  42e5b4:	24060008 	li	a2,8
  42e5b8:	8f998a30 	lw	t9,-30160(gp)
  42e5bc:	00000000 	nop
  42e5c0:	0320f809 	jalr	t9
  42e5c4:	00000000 	nop
  42e5c8:	8fdc0020 	lw	gp,32(s8)
  42e5cc:	00000000 	nop

    (void) des_set_key(&deskey[0], ks[0]);
  42e5d0:	8fc400a8 	lw	a0,168(s8)
  42e5d4:	27c500b0 	addiu	a1,s8,176
  42e5d8:	8f9984e8 	lw	t9,-31512(gp)
  42e5dc:	00000000 	nop
  42e5e0:	0320f809 	jalr	t9
  42e5e4:	00000000 	nop
  42e5e8:	8fdc0020 	lw	gp,32(s8)
  42e5ec:	00000000 	nop
    (void) des_set_key(&deskey[1], ks[1]);
  42e5f0:	8fc200a8 	lw	v0,168(s8)
  42e5f4:	00000000 	nop
  42e5f8:	24430008 	addiu	v1,v0,8
  42e5fc:	27c200b0 	addiu	v0,s8,176
  42e600:	24420080 	addiu	v0,v0,128
  42e604:	00602021 	move	a0,v1
  42e608:	00402821 	move	a1,v0
  42e60c:	8f9984e8 	lw	t9,-31512(gp)
  42e610:	00000000 	nop
  42e614:	0320f809 	jalr	t9
  42e618:	00000000 	nop
  42e61c:	8fdc0020 	lw	gp,32(s8)
  42e620:	00000000 	nop
    (void) des_set_key(&deskey[2], ks[2]);
  42e624:	8fc200a8 	lw	v0,168(s8)
  42e628:	00000000 	nop
  42e62c:	24430010 	addiu	v1,v0,16
  42e630:	27c200b0 	addiu	v0,s8,176
  42e634:	24420100 	addiu	v0,v0,256
  42e638:	00602021 	move	a0,v1
  42e63c:	00402821 	move	a1,v0
  42e640:	8f9984e8 	lw	t9,-31512(gp)
  42e644:	00000000 	nop
  42e648:	0320f809 	jalr	t9
  42e64c:	00000000 	nop
  42e650:	8fdc0020 	lw	gp,32(s8)
  42e654:	00000000 	nop

    /* decrypt data block */
    des_ede3_cbc_encrypt((des_cblock *)blob->ptr, (des_cblock *)blob->ptr,
  42e658:	27c200b0 	addiu	v0,s8,176
  42e65c:	24420080 	addiu	v0,v0,128
  42e660:	afa20010 	sw	v0,16(sp)
  42e664:	27c200b0 	addiu	v0,s8,176
  42e668:	24420100 	addiu	v0,v0,256
  42e66c:	afa20014 	sw	v0,20(sp)
  42e670:	8fc20254 	lw	v0,596(s8)
  42e674:	00000000 	nop
  42e678:	8c420000 	lw	v0,0(v0)
  42e67c:	00000000 	nop
  42e680:	afa20018 	sw	v0,24(sp)
  42e684:	afa0001c 	sw	zero,28(sp)
  42e688:	8fc20250 	lw	v0,592(s8)
  42e68c:	00000000 	nop
  42e690:	8c440000 	lw	a0,0(v0)
  42e694:	8fc20250 	lw	v0,592(s8)
  42e698:	00000000 	nop
  42e69c:	8c450000 	lw	a1,0(v0)
  42e6a0:	8fc20250 	lw	v0,592(s8)
  42e6a4:	00000000 	nop
  42e6a8:	8c460004 	lw	a2,4(v0)
  42e6ac:	27c700b0 	addiu	a3,s8,176
  42e6b0:	8f9984a4 	lw	t9,-31580(gp)
  42e6b4:	00000000 	nop
  42e6b8:	0320f809 	jalr	t9
  42e6bc:	00000000 	nop
  42e6c0:	8fdc0020 	lw	gp,32(s8)
  42e6c4:	00000000 	nop
	blob->len, ks[0], ks[1], ks[2], (des_cblock *)iv->ptr, FALSE);

    /* determine amount of padding */
    last_padding_pos = blob->ptr + blob->len - 1;
  42e6c8:	8fc20250 	lw	v0,592(s8)
  42e6cc:	00000000 	nop
  42e6d0:	8c430000 	lw	v1,0(v0)
  42e6d4:	8fc20250 	lw	v0,592(s8)
  42e6d8:	00000000 	nop
  42e6dc:	8c420004 	lw	v0,4(v0)
  42e6e0:	00000000 	nop
  42e6e4:	00621021 	addu	v0,v1,v0
  42e6e8:	2442ffff 	addiu	v0,v0,-1
  42e6ec:	afc20234 	sw	v0,564(s8)
    padding = *last_padding_pos;
  42e6f0:	8fc20234 	lw	v0,564(s8)
  42e6f4:	00000000 	nop
  42e6f8:	90420000 	lbu	v0,0(v0)
  42e6fc:	00000000 	nop
  42e700:	a3c20230 	sb	v0,560(s8)
    first_padding_pos = (padding > blob->len)?
  42e704:	93c30230 	lbu	v1,560(s8)
  42e708:	8fc20250 	lw	v0,592(s8)
  42e70c:	00000000 	nop
  42e710:	8c420004 	lw	v0,4(v0)
  42e714:	00000000 	nop
  42e718:	0043102b 	sltu	v0,v0,v1
  42e71c:	10400008 	beqz	v0,42e740 <pem_decrypt_3des+0x3a0>
  42e720:	00000000 	nop
  42e724:	8fc20250 	lw	v0,592(s8)
  42e728:	00000000 	nop
  42e72c:	8c420000 	lw	v0,0(v0)
  42e730:	00000000 	nop
  42e734:	afc2023c 	sw	v0,572(s8)
  42e738:	10000006 	b	42e754 <pem_decrypt_3des+0x3b4>
  42e73c:	00000000 	nop
  42e740:	93c30230 	lbu	v1,560(s8)
  42e744:	8fc20234 	lw	v0,564(s8)
  42e748:	00000000 	nop
  42e74c:	00431023 	subu	v0,v0,v1
  42e750:	afc2023c 	sw	v0,572(s8)
  42e754:	8fc2023c 	lw	v0,572(s8)
  42e758:	00000000 	nop
  42e75c:	afc20238 	sw	v0,568(s8)
			 blob->ptr : last_padding_pos - padding;

    /* check the padding pattern */
    while (--last_padding_pos > first_padding_pos)
  42e760:	8fc20234 	lw	v0,564(s8)
  42e764:	00000000 	nop
  42e768:	2442ffff 	addiu	v0,v0,-1
  42e76c:	00401821 	move	v1,v0
  42e770:	afc30234 	sw	v1,564(s8)
  42e774:	8fc20238 	lw	v0,568(s8)
  42e778:	00000000 	nop
  42e77c:	0043102b 	sltu	v0,v0,v1
  42e780:	14400003 	bnez	v0,42e790 <pem_decrypt_3des+0x3f0>
  42e784:	00000000 	nop
  42e788:	1000000d 	b	42e7c0 <pem_decrypt_3des+0x420>
  42e78c:	00000000 	nop
    {
	if (*last_padding_pos != padding)
  42e790:	8fc20234 	lw	v0,564(s8)
  42e794:	00000000 	nop
  42e798:	90430000 	lbu	v1,0(v0)
  42e79c:	93c20230 	lbu	v0,560(s8)
  42e7a0:	00000000 	nop
  42e7a4:	1062ffee 	beq	v1,v0,42e760 <pem_decrypt_3des+0x3c0>
  42e7a8:	00000000 	nop
	    return "wrong padding after decryption - please check your passphrase";
  42e7ac:	8f82802c 	lw	v0,-32724(gp)
  42e7b0:	00000000 	nop
  42e7b4:	2442bf6c 	addiu	v0,v0,-16532
  42e7b8:	1000000b 	b	42e7e8 <pem_decrypt_3des+0x448>
  42e7bc:	00000000 	nop
    }

    /* remove padding */
    blob->len -= padding;
  42e7c0:	93c30230 	lbu	v1,560(s8)
  42e7c4:	8fc20250 	lw	v0,592(s8)
  42e7c8:	00000000 	nop
  42e7cc:	8c420004 	lw	v0,4(v0)
  42e7d0:	00000000 	nop
  42e7d4:	00431823 	subu	v1,v0,v1
  42e7d8:	8fc20250 	lw	v0,592(s8)
  42e7dc:	00000000 	nop
  42e7e0:	ac430004 	sw	v1,4(v0)
    return NULL;
  42e7e4:	00001021 	move	v0,zero
}
  42e7e8:	03c0e821 	move	sp,s8
  42e7ec:	8fbf0248 	lw	ra,584(sp)
  42e7f0:	8fbe0244 	lw	s8,580(sp)
  42e7f4:	27bd0250 	addiu	sp,sp,592
  42e7f8:	03e00008 	jr	ra
  42e7fc:	00000000 	nop

0042e800 <pemtobin>:
  42e800:	3c1c0fbe 	lui	gp,0xfbe
  42e804:	279ce170 	addiu	gp,gp,-7824
  42e808:	0399e021 	addu	gp,gp,t9
  42e80c:	27bdff00 	addiu	sp,sp,-256
  42e810:	afbc0018 	sw	gp,24(sp)
  42e814:	afbf00f8 	sw	ra,248(sp)
  42e818:	afbe00f4 	sw	s8,244(sp)
  42e81c:	afbc00f0 	sw	gp,240(sp)
  42e820:	03a0f021 	move	s8,sp
  42e824:	afc40100 	sw	a0,256(s8)
  42e828:	afc50104 	sw	a1,260(s8)

 /*  Converts a PEM encoded file into its binary form
 *
 *  RFC 1421 Privacy Enhancement for Electronic Mail, February 1993
 *  RFC 934 Message Encapsulation, January 1985
 */
err_t
pemtobin(chunk_t *blob, const char* passphrase)
{
    typedef enum {
	PEM_PRE    = 0,
	PEM_MSG    = 1,
	PEM_HEADER = 2,
	PEM_BODY   = 3,
	PEM_POST   = 4,
	PEM_ABORT  = 5
    } state_t;

    bool encrypted = FALSE;
  42e82c:	afc00020 	sw	zero,32(s8)

    state_t state  = PEM_PRE;
  42e830:	afc00024 	sw	zero,36(s8)

    chunk_t src    = *blob;
  42e834:	8fc30100 	lw	v1,256(s8)
  42e838:	00000000 	nop
  42e83c:	8c620000 	lw	v0,0(v1)
  42e840:	00000000 	nop
  42e844:	afc20028 	sw	v0,40(s8)
  42e848:	8c620004 	lw	v0,4(v1)
  42e84c:	00000000 	nop
  42e850:	afc2002c 	sw	v0,44(s8)
    chunk_t dst    = *blob;
  42e854:	8fc30100 	lw	v1,256(s8)
  42e858:	00000000 	nop
  42e85c:	8c620000 	lw	v0,0(v1)
  42e860:	00000000 	nop
  42e864:	afc20030 	sw	v0,48(s8)
  42e868:	8c620004 	lw	v0,4(v1)
  42e86c:	00000000 	nop
  42e870:	afc20034 	sw	v0,52(s8)
    chunk_t line   = empty_chunk;
  42e874:	8f828708 	lw	v0,-30968(gp)
  42e878:	00000000 	nop
  42e87c:	8c420000 	lw	v0,0(v0)
  42e880:	00000000 	nop
  42e884:	afc20038 	sw	v0,56(s8)
  42e888:	8f828708 	lw	v0,-30968(gp)
  42e88c:	00000000 	nop
  42e890:	8c420004 	lw	v0,4(v0)
  42e894:	00000000 	nop
  42e898:	afc2003c 	sw	v0,60(s8)
    chunk_t iv     = empty_chunk;
  42e89c:	8f828708 	lw	v0,-30968(gp)
  42e8a0:	00000000 	nop
  42e8a4:	8c420000 	lw	v0,0(v0)
  42e8a8:	00000000 	nop
  42e8ac:	afc20040 	sw	v0,64(s8)
  42e8b0:	8f828708 	lw	v0,-30968(gp)
  42e8b4:	00000000 	nop
  42e8b8:	8c420004 	lw	v0,4(v0)
  42e8bc:	00000000 	nop
  42e8c0:	afc20044 	sw	v0,68(s8)

    u_char iv_buf[MAX_DIGEST_LEN];

    /* zero size of converted blob */
    dst.len = 0;
  42e8c4:	afc00034 	sw	zero,52(s8)

    /* zero size of IV */
    iv.ptr = iv_buf;
  42e8c8:	27c20048 	addiu	v0,s8,72
  42e8cc:	afc20040 	sw	v0,64(s8)
    iv.len = 0;
  42e8d0:	afc00044 	sw	zero,68(s8)

    while (fetchline(&src, &line))
  42e8d4:	27c40028 	addiu	a0,s8,40
  42e8d8:	27c50038 	addiu	a1,s8,56
  42e8dc:	8f998030 	lw	t9,-32720(gp)
  42e8e0:	00000000 	nop
  42e8e4:	2739e234 	addiu	t9,t9,-7628
  42e8e8:	00000000 	nop
  42e8ec:	0320f809 	jalr	t9
  42e8f0:	00000000 	nop
  42e8f4:	8fdc0018 	lw	gp,24(s8)
  42e8f8:	14400003 	bnez	v0,42e908 <pemtobin+0x108>
  42e8fc:	00000000 	nop
  42e900:	10000127 	b	42eda0 <pemtobin+0x5a0>
  42e904:	00000000 	nop
    {
	if (state == PEM_PRE)
  42e908:	8fc20024 	lw	v0,36(s8)
  42e90c:	00000000 	nop
  42e910:	14400012 	bnez	v0,42e95c <pemtobin+0x15c>
  42e914:	00000000 	nop
	{
	    if (find_boundary("BEGIN", &line))
  42e918:	8f84802c 	lw	a0,-32724(gp)
  42e91c:	00000000 	nop
  42e920:	2484bfac 	addiu	a0,a0,-16468
  42e924:	27c50038 	addiu	a1,s8,56
  42e928:	8f998030 	lw	t9,-32720(gp)
  42e92c:	00000000 	nop
  42e930:	2739dc6c 	addiu	t9,t9,-9108
  42e934:	00000000 	nop
  42e938:	0320f809 	jalr	t9
  42e93c:	00000000 	nop
  42e940:	8fdc0018 	lw	gp,24(s8)
  42e944:	1040ffe3 	beqz	v0,42e8d4 <pemtobin+0xd4>
  42e948:	00000000 	nop
		state = PEM_MSG;
  42e94c:	24020001 	li	v0,1
  42e950:	afc20024 	sw	v0,36(s8)
	    continue;
  42e954:	1000ffdf 	b	42e8d4 <pemtobin+0xd4>
  42e958:	00000000 	nop
	}
	else
	{
	    if (find_boundary("END", &line))
  42e95c:	8f84802c 	lw	a0,-32724(gp)
  42e960:	00000000 	nop
  42e964:	2484bfb4 	addiu	a0,a0,-16460
  42e968:	27c50038 	addiu	a1,s8,56
  42e96c:	8f998030 	lw	t9,-32720(gp)
  42e970:	00000000 	nop
  42e974:	2739dc6c 	addiu	t9,t9,-9108
  42e978:	00000000 	nop
  42e97c:	0320f809 	jalr	t9
  42e980:	00000000 	nop
  42e984:	8fdc0018 	lw	gp,24(s8)
  42e988:	10400005 	beqz	v0,42e9a0 <pemtobin+0x1a0>
  42e98c:	00000000 	nop
	    {
		state = PEM_POST;
  42e990:	24020004 	li	v0,4
  42e994:	afc20024 	sw	v0,36(s8)
		break;
  42e998:	10000101 	b	42eda0 <pemtobin+0x5a0>
  42e99c:	00000000 	nop
	    }
	    if (state == PEM_MSG)
  42e9a0:	8fc30024 	lw	v1,36(s8)
  42e9a4:	24020001 	li	v0,1
  42e9a8:	14620014 	bne	v1,v0,42e9fc <pemtobin+0x1fc>
  42e9ac:	00000000 	nop
	    {
		state = (memchr(line.ptr, ':', line.len) == NULL)?
  42e9b0:	8fc40038 	lw	a0,56(s8)
  42e9b4:	2405003a 	li	a1,58
  42e9b8:	8fc6003c 	lw	a2,60(s8)
  42e9bc:	8f9986e0 	lw	t9,-31008(gp)
  42e9c0:	00000000 	nop
  42e9c4:	0320f809 	jalr	t9
  42e9c8:	00000000 	nop
  42e9cc:	8fdc0018 	lw	gp,24(s8)
  42e9d0:	14400005 	bnez	v0,42e9e8 <pemtobin+0x1e8>
  42e9d4:	00000000 	nop
  42e9d8:	24020003 	li	v0,3
  42e9dc:	afc200c8 	sw	v0,200(s8)
  42e9e0:	10000003 	b	42e9f0 <pemtobin+0x1f0>
  42e9e4:	00000000 	nop
  42e9e8:	24020002 	li	v0,2
  42e9ec:	afc200c8 	sw	v0,200(s8)
  42e9f0:	8fc200c8 	lw	v0,200(s8)
  42e9f4:	00000000 	nop
  42e9f8:	afc20024 	sw	v0,36(s8)
			    PEM_BODY : PEM_HEADER;
	    }
	    if (state == PEM_HEADER)
  42e9fc:	8fc30024 	lw	v1,36(s8)
  42ea00:	24020002 	li	v0,2
  42ea04:	1462009a 	bne	v1,v0,42ec70 <pemtobin+0x470>
  42ea08:	00000000 	nop
	    {
		chunk_t name  = empty_chunk;
  42ea0c:	8f828708 	lw	v0,-30968(gp)
  42ea10:	00000000 	nop
  42ea14:	8c420000 	lw	v0,0(v0)
  42ea18:	00000000 	nop
  42ea1c:	afc20088 	sw	v0,136(s8)
  42ea20:	8f828708 	lw	v0,-30968(gp)
  42ea24:	00000000 	nop
  42ea28:	8c420004 	lw	v0,4(v0)
  42ea2c:	00000000 	nop
  42ea30:	afc2008c 	sw	v0,140(s8)
		chunk_t value = empty_chunk;
  42ea34:	8f828708 	lw	v0,-30968(gp)
  42ea38:	00000000 	nop
  42ea3c:	8c420000 	lw	v0,0(v0)
  42ea40:	00000000 	nop
  42ea44:	afc20090 	sw	v0,144(s8)
  42ea48:	8f828708 	lw	v0,-30968(gp)
  42ea4c:	00000000 	nop
  42ea50:	8c420004 	lw	v0,4(v0)
  42ea54:	00000000 	nop
  42ea58:	afc20094 	sw	v0,148(s8)

		/* an empty line separates HEADER and BODY */
		if (line.len == 0)
  42ea5c:	8fc2003c 	lw	v0,60(s8)
  42ea60:	00000000 	nop
  42ea64:	14400005 	bnez	v0,42ea7c <pemtobin+0x27c>
  42ea68:	00000000 	nop
		{
		    state = PEM_BODY;
  42ea6c:	24020003 	li	v0,3
  42ea70:	afc20024 	sw	v0,36(s8)
		    continue;
  42ea74:	1000ff97 	b	42e8d4 <pemtobin+0xd4>
  42ea78:	00000000 	nop
		}

	        /* we are looking for a name: value pair */
		if (!extract_parameter(&name, &value, &line))
  42ea7c:	27c40088 	addiu	a0,s8,136
  42ea80:	27c50090 	addiu	a1,s8,144
  42ea84:	27c60038 	addiu	a2,s8,56
  42ea88:	8f998030 	lw	t9,-32720(gp)
  42ea8c:	00000000 	nop
  42ea90:	2739e10c 	addiu	t9,t9,-7924
  42ea94:	00000000 	nop
  42ea98:	0320f809 	jalr	t9
  42ea9c:	00000000 	nop
  42eaa0:	8fdc0018 	lw	gp,24(s8)
  42eaa4:	14400003 	bnez	v0,42eab4 <pemtobin+0x2b4>
  42eaa8:	00000000 	nop
		    continue;
  42eaac:	1000ff89 	b	42e8d4 <pemtobin+0xd4>
  42eab0:	00000000 	nop

		if (match("Proc-Type", &name) && *value.ptr == '4')
  42eab4:	8f84802c 	lw	a0,-32724(gp)
  42eab8:	00000000 	nop
  42eabc:	2484bfb8 	addiu	a0,a0,-16456
  42eac0:	27c50088 	addiu	a1,s8,136
  42eac4:	8f998030 	lw	t9,-32720(gp)
  42eac8:	00000000 	nop
  42eacc:	2739dba8 	addiu	t9,t9,-9304
  42ead0:	00000000 	nop
  42ead4:	0320f809 	jalr	t9
  42ead8:	00000000 	nop
  42eadc:	8fdc0018 	lw	gp,24(s8)
  42eae0:	1040000b 	beqz	v0,42eb10 <pemtobin+0x310>
  42eae4:	00000000 	nop
  42eae8:	8fc20090 	lw	v0,144(s8)
  42eaec:	00000000 	nop
  42eaf0:	90430000 	lbu	v1,0(v0)
  42eaf4:	24020034 	li	v0,52
  42eaf8:	14620005 	bne	v1,v0,42eb10 <pemtobin+0x310>
  42eafc:	00000000 	nop
			encrypted = TRUE;
  42eb00:	24020001 	li	v0,1
  42eb04:	afc20020 	sw	v0,32(s8)
  42eb08:	1000ff72 	b	42e8d4 <pemtobin+0xd4>
  42eb0c:	00000000 	nop
		else if (match("DEK-Info", &name))
  42eb10:	8f84802c 	lw	a0,-32724(gp)
  42eb14:	00000000 	nop
  42eb18:	2484bfc4 	addiu	a0,a0,-16444
  42eb1c:	27c50088 	addiu	a1,s8,136
  42eb20:	8f998030 	lw	t9,-32720(gp)
  42eb24:	00000000 	nop
  42eb28:	2739dba8 	addiu	t9,t9,-9304
  42eb2c:	00000000 	nop
  42eb30:	0320f809 	jalr	t9
  42eb34:	00000000 	nop
  42eb38:	8fdc0018 	lw	gp,24(s8)
  42eb3c:	1040ff65 	beqz	v0,42e8d4 <pemtobin+0xd4>
  42eb40:	00000000 	nop
		{
		    const char *ugh = NULL;
  42eb44:	afc00098 	sw	zero,152(s8)
		    size_t len = 0;
  42eb48:	afc0009c 	sw	zero,156(s8)
		    chunk_t dek;

		    if (!extract_token(&dek, ',', &value))
  42eb4c:	27c400a0 	addiu	a0,s8,160
  42eb50:	2405002c 	li	a1,44
  42eb54:	27c60090 	addiu	a2,s8,144
  42eb58:	8f998030 	lw	t9,-32720(gp)
  42eb5c:	00000000 	nop
  42eb60:	2739dfb8 	addiu	t9,t9,-8264
  42eb64:	00000000 	nop
  42eb68:	0320f809 	jalr	t9
  42eb6c:	00000000 	nop
  42eb70:	8fdc0018 	lw	gp,24(s8)
  42eb74:	14400007 	bnez	v0,42eb94 <pemtobin+0x394>
  42eb78:	00000000 	nop
			dek = value;
  42eb7c:	8fc20090 	lw	v0,144(s8)
  42eb80:	00000000 	nop
  42eb84:	afc200a0 	sw	v0,160(s8)
  42eb88:	8fc20094 	lw	v0,148(s8)
  42eb8c:	00000000 	nop
  42eb90:	afc200a4 	sw	v0,164(s8)

		    /* we support DES-EDE3-CBC encrypted files, only */
		    if (!match("DES-EDE3-CBC", &dek))
  42eb94:	8f84802c 	lw	a0,-32724(gp)
  42eb98:	00000000 	nop
  42eb9c:	2484bfd0 	addiu	a0,a0,-16432
  42eba0:	27c500a0 	addiu	a1,s8,160
  42eba4:	8f998030 	lw	t9,-32720(gp)
  42eba8:	00000000 	nop
  42ebac:	2739dba8 	addiu	t9,t9,-9304
  42ebb0:	00000000 	nop
  42ebb4:	0320f809 	jalr	t9
  42ebb8:	00000000 	nop
  42ebbc:	8fdc0018 	lw	gp,24(s8)
  42ebc0:	14400006 	bnez	v0,42ebdc <pemtobin+0x3dc>
  42ebc4:	00000000 	nop
			return "we support DES-EDE3-CBC encrypted files, only";
  42ebc8:	8f82802c 	lw	v0,-32724(gp)
  42ebcc:	00000000 	nop
  42ebd0:	2442bfe0 	addiu	v0,v0,-16416
  42ebd4:	100000ad 	b	42ee8c <pemtobin+0x68c>
  42ebd8:	00000000 	nop

		    eat_whitespace(&value);
  42ebdc:	27c40090 	addiu	a0,s8,144
  42ebe0:	8f998030 	lw	t9,-32720(gp)
  42ebe4:	00000000 	nop
  42ebe8:	2739ded8 	addiu	t9,t9,-8488
  42ebec:	00000000 	nop
  42ebf0:	0320f809 	jalr	t9
  42ebf4:	00000000 	nop
  42ebf8:	8fdc0018 	lw	gp,24(s8)
  42ebfc:	00000000 	nop
		    ugh = ttodata(value.ptr, value.len, 16,
  42ec00:	24020040 	li	v0,64
  42ec04:	afa20010 	sw	v0,16(sp)
  42ec08:	27c2009c 	addiu	v0,s8,156
  42ec0c:	afa20014 	sw	v0,20(sp)
  42ec10:	8fc40090 	lw	a0,144(s8)
  42ec14:	8fc50094 	lw	a1,148(s8)
  42ec18:	24060010 	li	a2,16
  42ec1c:	8fc70040 	lw	a3,64(s8)
  42ec20:	8f9981d4 	lw	t9,-32300(gp)
  42ec24:	00000000 	nop
  42ec28:	0320f809 	jalr	t9
  42ec2c:	00000000 	nop
  42ec30:	8fdc0018 	lw	gp,24(s8)
  42ec34:	afc20098 	sw	v0,152(s8)
		    		  iv.ptr, MAX_DIGEST_LEN, &len);
		    if (ugh)
  42ec38:	8fc20098 	lw	v0,152(s8)
  42ec3c:	00000000 	nop
  42ec40:	10400006 	beqz	v0,42ec5c <pemtobin+0x45c>
  42ec44:	00000000 	nop
			return "error in IV";
  42ec48:	8f82802c 	lw	v0,-32724(gp)
  42ec4c:	00000000 	nop
  42ec50:	2442c010 	addiu	v0,v0,-16368
  42ec54:	1000008d 	b	42ee8c <pemtobin+0x68c>
  42ec58:	00000000 	nop

		    iv.len = len;
  42ec5c:	8fc2009c 	lw	v0,156(s8)
  42ec60:	00000000 	nop
  42ec64:	afc20044 	sw	v0,68(s8)
  42ec68:	1000ff1a 	b	42e8d4 <pemtobin+0xd4>
  42ec6c:	00000000 	nop
		}
	    }
	    else /* state is PEM_BODY */
	    {
		const char *ugh = NULL;
  42ec70:	afc0009c 	sw	zero,156(s8)
		size_t len = 0;
  42ec74:	afc00098 	sw	zero,152(s8)
		chunk_t data;

		/* remove any trailing whitespace */
		if (!extract_token(&data ,' ', &line))
  42ec78:	27c400a0 	addiu	a0,s8,160
  42ec7c:	24050020 	li	a1,32
  42ec80:	27c60038 	addiu	a2,s8,56
  42ec84:	8f998030 	lw	t9,-32720(gp)
  42ec88:	00000000 	nop
  42ec8c:	2739dfb8 	addiu	t9,t9,-8264
  42ec90:	00000000 	nop
  42ec94:	0320f809 	jalr	t9
  42ec98:	00000000 	nop
  42ec9c:	8fdc0018 	lw	gp,24(s8)
  42eca0:	14400007 	bnez	v0,42ecc0 <pemtobin+0x4c0>
  42eca4:	00000000 	nop
		    data = line;
  42eca8:	8fc20038 	lw	v0,56(s8)
  42ecac:	00000000 	nop
  42ecb0:	afc200a0 	sw	v0,160(s8)
  42ecb4:	8fc2003c 	lw	v0,60(s8)
  42ecb8:	00000000 	nop
  42ecbc:	afc200a4 	sw	v0,164(s8)

		ugh = ttodata(data.ptr, data.len, 64,
  42ecc0:	8fc20100 	lw	v0,256(s8)
  42ecc4:	00000000 	nop
  42ecc8:	8c430004 	lw	v1,4(v0)
  42eccc:	8fc20034 	lw	v0,52(s8)
  42ecd0:	00000000 	nop
  42ecd4:	00621023 	subu	v0,v1,v0
  42ecd8:	afa20010 	sw	v0,16(sp)
  42ecdc:	27c20098 	addiu	v0,s8,152
  42ece0:	afa20014 	sw	v0,20(sp)
  42ece4:	8fc400a0 	lw	a0,160(s8)
  42ece8:	8fc500a4 	lw	a1,164(s8)
  42ecec:	24060040 	li	a2,64
  42ecf0:	8fc70030 	lw	a3,48(s8)
  42ecf4:	8f9981d4 	lw	t9,-32300(gp)
  42ecf8:	00000000 	nop
  42ecfc:	0320f809 	jalr	t9
  42ed00:	00000000 	nop
  42ed04:	8fdc0018 	lw	gp,24(s8)
  42ed08:	afc2009c 	sw	v0,156(s8)
			      dst.ptr, blob->len - dst.len, &len);
		if (ugh)
  42ed0c:	8fc2009c 	lw	v0,156(s8)
  42ed10:	00000000 	nop
  42ed14:	10400016 	beqz	v0,42ed70 <pemtobin+0x570>
  42ed18:	00000000 	nop
		{
		    DBG(DBG_PARSING,
  42ed1c:	8f8284f8 	lw	v0,-31496(gp)
  42ed20:	00000000 	nop
  42ed24:	8c420000 	lw	v0,0(v0)
  42ed28:	00000000 	nop
  42ed2c:	30420004 	andi	v0,v0,0x4
  42ed30:	1040000b 	beqz	v0,42ed60 <pemtobin+0x560>
  42ed34:	00000000 	nop
  42ed38:	8f84802c 	lw	a0,-32724(gp)
  42ed3c:	00000000 	nop
  42ed40:	2484c01c 	addiu	a0,a0,-16356
  42ed44:	8fc5009c 	lw	a1,156(s8)
  42ed48:	8f9983b8 	lw	t9,-31816(gp)
  42ed4c:	00000000 	nop
  42ed50:	0320f809 	jalr	t9
  42ed54:	00000000 	nop
  42ed58:	8fdc0018 	lw	gp,24(s8)
  42ed5c:	00000000 	nop
			DBG_log("  %s", ugh);
		    )
		    state = PEM_ABORT;
  42ed60:	24020005 	li	v0,5
  42ed64:	afc20024 	sw	v0,36(s8)
		    break;
  42ed68:	1000000d 	b	42eda0 <pemtobin+0x5a0>
  42ed6c:	00000000 	nop
		}
		else
		{
		    dst.ptr += len;
  42ed70:	8fc30030 	lw	v1,48(s8)
  42ed74:	8fc20098 	lw	v0,152(s8)
  42ed78:	00000000 	nop
  42ed7c:	00621021 	addu	v0,v1,v0
  42ed80:	afc20030 	sw	v0,48(s8)
		    dst.len += len;
  42ed84:	8fc30034 	lw	v1,52(s8)
  42ed88:	8fc20098 	lw	v0,152(s8)
  42ed8c:	00000000 	nop
  42ed90:	00621021 	addu	v0,v1,v0
  42ed94:	afc20034 	sw	v0,52(s8)
  42ed98:	1000fece 	b	42e8d4 <pemtobin+0xd4>
  42ed9c:	00000000 	nop
		}
	    }
	}
    }
    /* set length to size of binary blob */
    blob->len = dst.len;
  42eda0:	8fc30034 	lw	v1,52(s8)
  42eda4:	8fc20100 	lw	v0,256(s8)
  42eda8:	00000000 	nop
  42edac:	ac430004 	sw	v1,4(v0)

    if (state != PEM_POST)
  42edb0:	8fc30024 	lw	v1,36(s8)
  42edb4:	24020004 	li	v0,4
  42edb8:	10620006 	beq	v1,v0,42edd4 <pemtobin+0x5d4>
  42edbc:	00000000 	nop
	return "file coded in unknown format, discarded";
  42edc0:	8f82802c 	lw	v0,-32724(gp)
  42edc4:	00000000 	nop
  42edc8:	2442c024 	addiu	v0,v0,-16348
  42edcc:	1000002f 	b	42ee8c <pemtobin+0x68c>
  42edd0:	00000000 	nop

    if (encrypted)
  42edd4:	8fc20020 	lw	v0,32(s8)
  42edd8:	00000000 	nop
  42eddc:	1040002a 	beqz	v0,42ee88 <pemtobin+0x688>
  42ede0:	00000000 	nop
    {
	DBG(DBG_CRYPT,
  42ede4:	8f8284f8 	lw	v0,-31496(gp)
  42ede8:	00000000 	nop
  42edec:	8c420000 	lw	v0,0(v0)
  42edf0:	00000000 	nop
  42edf4:	30420002 	andi	v0,v0,0x2
  42edf8:	1040000a 	beqz	v0,42ee24 <pemtobin+0x624>
  42edfc:	00000000 	nop
  42ee00:	8f84802c 	lw	a0,-32724(gp)
  42ee04:	00000000 	nop
  42ee08:	2484c04c 	addiu	a0,a0,-16308
  42ee0c:	8f9983b8 	lw	t9,-31816(gp)
  42ee10:	00000000 	nop
  42ee14:	0320f809 	jalr	t9
  42ee18:	00000000 	nop
  42ee1c:	8fdc0018 	lw	gp,24(s8)
  42ee20:	00000000 	nop
	    DBG_log("  decrypting file using 'DES-EDE3-CBC'");
	)
	if (strlen(passphrase) == 0)
  42ee24:	8fc40104 	lw	a0,260(s8)
  42ee28:	8f998188 	lw	t9,-32376(gp)
  42ee2c:	00000000 	nop
  42ee30:	0320f809 	jalr	t9
  42ee34:	00000000 	nop
  42ee38:	8fdc0018 	lw	gp,24(s8)
  42ee3c:	14400006 	bnez	v0,42ee58 <pemtobin+0x658>
  42ee40:	00000000 	nop
	    return "no passphrase available";
  42ee44:	8f82802c 	lw	v0,-32724(gp)
  42ee48:	00000000 	nop
  42ee4c:	2442c074 	addiu	v0,v0,-16268
  42ee50:	1000000e 	b	42ee8c <pemtobin+0x68c>
  42ee54:	00000000 	nop

	return pem_decrypt_3des(blob, &iv, passphrase);
  42ee58:	8fc40100 	lw	a0,256(s8)
  42ee5c:	27c50040 	addiu	a1,s8,64
  42ee60:	8fc60104 	lw	a2,260(s8)
  42ee64:	8f998030 	lw	t9,-32720(gp)
  42ee68:	00000000 	nop
  42ee6c:	2739e3a0 	addiu	t9,t9,-7264
  42ee70:	00000000 	nop
  42ee74:	0320f809 	jalr	t9
  42ee78:	00000000 	nop
  42ee7c:	8fdc0018 	lw	gp,24(s8)
  42ee80:	10000002 	b	42ee8c <pemtobin+0x68c>
  42ee84:	00000000 	nop
    }
    else
	return NULL;
  42ee88:	00001021 	move	v0,zero
}
  42ee8c:	03c0e821 	move	sp,s8
  42ee90:	8fbf00f8 	lw	ra,248(sp)
  42ee94:	8fbe00f4 	lw	s8,244(sp)
  42ee98:	27bd0100 	addiu	sp,sp,256
  42ee9c:	03e00008 	jr	ra
  42eea0:	00000000 	nop
	...

0042eeb0 <parse_pkcs1_private_key>:
  42eeb0:	3c1c0fbe 	lui	gp,0xfbe
  42eeb4:	279cdac0 	addiu	gp,gp,-9536
  42eeb8:	0399e021 	addu	gp,gp,t9
  42eebc:	27bdff50 	addiu	sp,sp,-176
  42eec0:	afbc0018 	sw	gp,24(sp)
  42eec4:	afbf00a8 	sw	ra,168(sp)
  42eec8:	afbe00a4 	sw	s8,164(sp)
  42eecc:	afbc00a0 	sw	gp,160(sp)
  42eed0:	03a0f021 	move	s8,sp
  42eed4:	afc400b0 	sw	a0,176(s8)
  42eed8:	afc500b4 	sw	a1,180(s8)
  42eedc:	afc600b8 	sw	a2,184(s8)
parse_pkcs1_private_key(chunk_t blob, pkcs1privkey_t *key)
{
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  42eee0:	afc00088 	sw	zero,136(s8)

    asn1_init(&ctx, blob, 0, FALSE, DBG_PRIVATE);
  42eee4:	afa00010 	sw	zero,16(sp)
  42eee8:	24020200 	li	v0,512
  42eeec:	afa20014 	sw	v0,20(sp)
  42eef0:	27c40020 	addiu	a0,s8,32
  42eef4:	8fc500b0 	lw	a1,176(s8)
  42eef8:	8fc600b4 	lw	a2,180(s8)
  42eefc:	00003821 	move	a3,zero
  42ef00:	8f998898 	lw	t9,-30568(gp)
  42ef04:	00000000 	nop
  42ef08:	0320f809 	jalr	t9
  42ef0c:	00000000 	nop
  42ef10:	8fdc0018 	lw	gp,24(s8)
  42ef14:	00000000 	nop

    while (objectID < PKCS1_PRIV_KEY_ROOF) {
  42ef18:	8fc20088 	lw	v0,136(s8)
  42ef1c:	00000000 	nop
  42ef20:	28420010 	slti	v0,v0,16
  42ef24:	14400003 	bnez	v0,42ef34 <parse_pkcs1_private_key+0x84>
  42ef28:	00000000 	nop
  42ef2c:	10000051 	b	42f074 <parse_pkcs1_private_key+0x1c4>
  42ef30:	00000000 	nop

	if (!extract_object(privkeyObjects, &objectID, &object, &ctx))
  42ef34:	8f848018 	lw	a0,-32744(gp)
  42ef38:	00000000 	nop
  42ef3c:	248418c0 	addiu	a0,a0,6336
  42ef40:	27c50088 	addiu	a1,s8,136
  42ef44:	27c60080 	addiu	a2,s8,128
  42ef48:	27c70020 	addiu	a3,s8,32
  42ef4c:	8f9983bc 	lw	t9,-31812(gp)
  42ef50:	00000000 	nop
  42ef54:	0320f809 	jalr	t9
  42ef58:	00000000 	nop
  42ef5c:	8fdc0018 	lw	gp,24(s8)
  42ef60:	14400004 	bnez	v0,42ef74 <parse_pkcs1_private_key+0xc4>
  42ef64:	00000000 	nop
	     return FALSE;
  42ef68:	00001021 	move	v0,zero
  42ef6c:	10000042 	b	42f078 <parse_pkcs1_private_key+0x1c8>
  42ef70:	00000000 	nop

	if (objectID == PKCS1_PRIV_KEY_OBJECT)
  42ef74:	8fc20088 	lw	v0,136(s8)
  42ef78:	00000000 	nop
  42ef7c:	1440000a 	bnez	v0,42efa8 <parse_pkcs1_private_key+0xf8>
  42ef80:	00000000 	nop
	{
	    key->pkcs1object = object;
  42ef84:	8fc200b8 	lw	v0,184(s8)
  42ef88:	8fc30080 	lw	v1,128(s8)
  42ef8c:	00000000 	nop
  42ef90:	ac430000 	sw	v1,0(v0)
  42ef94:	8fc30084 	lw	v1,132(s8)
  42ef98:	00000000 	nop
  42ef9c:	ac430004 	sw	v1,4(v0)
  42efa0:	1000002e 	b	42f05c <parse_pkcs1_private_key+0x1ac>
  42efa4:	00000000 	nop
	}
	else if (objectID == PKCS1_PRIV_KEY_VERSION)
  42efa8:	8fc30088 	lw	v1,136(s8)
  42efac:	24020001 	li	v0,1
  42efb0:	14620013 	bne	v1,v0,42f000 <parse_pkcs1_private_key+0x150>
  42efb4:	00000000 	nop
	{
	    if (*object.ptr != 0)
  42efb8:	8fc20080 	lw	v0,128(s8)
  42efbc:	00000000 	nop
  42efc0:	90420000 	lbu	v0,0(v0)
  42efc4:	00000000 	nop
  42efc8:	10400024 	beqz	v0,42f05c <parse_pkcs1_private_key+0x1ac>
  42efcc:	00000000 	nop
	    {
		plog("  wrong PKCS#1 private key version");
  42efd0:	8f84802c 	lw	a0,-32724(gp)
  42efd4:	00000000 	nop
  42efd8:	2484c20c 	addiu	a0,a0,-15860
  42efdc:	8f998abc 	lw	t9,-30020(gp)
  42efe0:	00000000 	nop
  42efe4:	0320f809 	jalr	t9
  42efe8:	00000000 	nop
  42efec:	8fdc0018 	lw	gp,24(s8)
  42eff0:	00000000 	nop
		return FALSE;
  42eff4:	00001021 	move	v0,zero
  42eff8:	1000001f 	b	42f078 <parse_pkcs1_private_key+0x1c8>
  42effc:	00000000 	nop
	    }
	}
	else if (objectID >= PKCS1_PRIV_KEY_MODULUS &&
		 objectID <= PKCS1_PRIV_KEY_COEFF)
  42f000:	8fc20088 	lw	v0,136(s8)
  42f004:	00000000 	nop
  42f008:	28420002 	slti	v0,v0,2
  42f00c:	14400013 	bnez	v0,42f05c <parse_pkcs1_private_key+0x1ac>
  42f010:	00000000 	nop
  42f014:	8fc20088 	lw	v0,136(s8)
  42f018:	00000000 	nop
  42f01c:	2842000a 	slti	v0,v0,10
  42f020:	1040000e 	beqz	v0,42f05c <parse_pkcs1_private_key+0x1ac>
  42f024:	00000000 	nop
	{
	    key->field[objectID - PKCS1_PRIV_KEY_MODULUS] = object;
  42f028:	8fc20088 	lw	v0,136(s8)
  42f02c:	00000000 	nop
  42f030:	000210c0 	sll	v0,v0,0x3
  42f034:	2443fff8 	addiu	v1,v0,-8
  42f038:	8fc200b8 	lw	v0,184(s8)
  42f03c:	00000000 	nop
  42f040:	00431821 	addu	v1,v0,v1
  42f044:	8fc20080 	lw	v0,128(s8)
  42f048:	00000000 	nop
  42f04c:	ac620000 	sw	v0,0(v1)
  42f050:	8fc20084 	lw	v0,132(s8)
  42f054:	00000000 	nop
  42f058:	ac620004 	sw	v0,4(v1)
	}
	objectID++;
  42f05c:	8fc20088 	lw	v0,136(s8)
  42f060:	00000000 	nop
  42f064:	24420001 	addiu	v0,v0,1
  42f068:	afc20088 	sw	v0,136(s8)
  42f06c:	1000ffaa 	b	42ef18 <parse_pkcs1_private_key+0x68>
  42f070:	00000000 	nop
    }
    return TRUE;
  42f074:	24020001 	li	v0,1
}
  42f078:	03c0e821 	move	sp,s8
  42f07c:	8fbf00a8 	lw	ra,168(sp)
  42f080:	8fbe00a4 	lw	s8,164(sp)
  42f084:	27bd00b0 	addiu	sp,sp,176
  42f088:	03e00008 	jr	ra
  42f08c:	00000000 	nop

0042f090 <load_pkcs1_private_key>:
  42f090:	3c1c0fbe 	lui	gp,0xfbe
  42f094:	279cd8e0 	addiu	gp,gp,-10016
  42f098:	0399e021 	addu	gp,gp,t9
  42f09c:	27bdfdb8 	addiu	sp,sp,-584
  42f0a0:	afbc0018 	sw	gp,24(sp)
  42f0a4:	afbf0240 	sw	ra,576(sp)
  42f0a8:	afbe023c 	sw	s8,572(sp)
  42f0ac:	afbc0238 	sw	gp,568(sp)
  42f0b0:	03a0f021 	move	s8,sp
  42f0b4:	afc40248 	sw	a0,584(s8)
  42f0b8:	afc5024c 	sw	a1,588(s8)

/*
 *  Loads PKCS#1 private key file
 */
pkcs1privkey_t*
load_pkcs1_private_key(const char* filename, const char* passphrase)
{
    chunk_t blob = empty_chunk;
  42f0bc:	8f828708 	lw	v0,-30968(gp)
  42f0c0:	00000000 	nop
  42f0c4:	8c420000 	lw	v0,0(v0)
  42f0c8:	00000000 	nop
  42f0cc:	afc20020 	sw	v0,32(s8)
  42f0d0:	8f828708 	lw	v0,-30968(gp)
  42f0d4:	00000000 	nop
  42f0d8:	8c420004 	lw	v0,4(v0)
  42f0dc:	00000000 	nop
  42f0e0:	afc20024 	sw	v0,36(s8)
    char path[512];

    if (*filename == '/')	/* absolute pathname */
  42f0e4:	8fc20248 	lw	v0,584(s8)
  42f0e8:	00000000 	nop
  42f0ec:	80430000 	lb	v1,0(v0)
  42f0f0:	2402002f 	li	v0,47
  42f0f4:	1462000b 	bne	v1,v0,42f124 <load_pkcs1_private_key+0x94>
  42f0f8:	00000000 	nop
    	strncpy(path, filename, sizeof(path));
  42f0fc:	27c40028 	addiu	a0,s8,40
  42f100:	8fc50248 	lw	a1,584(s8)
  42f104:	24060200 	li	a2,512
  42f108:	8f99861c 	lw	t9,-31204(gp)
  42f10c:	00000000 	nop
  42f110:	0320f809 	jalr	t9
  42f114:	00000000 	nop
  42f118:	8fdc0018 	lw	gp,24(s8)
  42f11c:	10000012 	b	42f168 <load_pkcs1_private_key+0xd8>
  42f120:	00000000 	nop
    else			/* relative pathname */
	snprintf(path, sizeof(path), "%s/%s", PRIVATE_KEY_PATH, filename);
  42f124:	8fc20248 	lw	v0,584(s8)
  42f128:	00000000 	nop
  42f12c:	afa20010 	sw	v0,16(sp)
  42f130:	27c40028 	addiu	a0,s8,40
  42f134:	24050200 	li	a1,512
  42f138:	8f86802c 	lw	a2,-32724(gp)
  42f13c:	00000000 	nop
  42f140:	24c6c230 	addiu	a2,a2,-15824
  42f144:	8f87802c 	lw	a3,-32724(gp)
  42f148:	00000000 	nop
  42f14c:	24e7c238 	addiu	a3,a3,-15816
  42f150:	8f998b38 	lw	t9,-29896(gp)
  42f154:	00000000 	nop
  42f158:	0320f809 	jalr	t9
  42f15c:	00000000 	nop
  42f160:	8fdc0018 	lw	gp,24(s8)
  42f164:	00000000 	nop

    if (load_asn1_file(path, passphrase, "private key", &blob))
  42f168:	27c40028 	addiu	a0,s8,40
  42f16c:	8fc5024c 	lw	a1,588(s8)
  42f170:	8f86802c 	lw	a2,-32724(gp)
  42f174:	00000000 	nop
  42f178:	24c6c250 	addiu	a2,a2,-15792
  42f17c:	27c70020 	addiu	a3,s8,32
  42f180:	8f998530 	lw	t9,-31440(gp)
  42f184:	00000000 	nop
  42f188:	0320f809 	jalr	t9
  42f18c:	00000000 	nop
  42f190:	8fdc0018 	lw	gp,24(s8)
  42f194:	1040003a 	beqz	v0,42f280 <load_pkcs1_private_key+0x1f0>
  42f198:	00000000 	nop
    {
	pkcs1privkey_t *key = alloc_thing(pkcs1privkey_t, "pkcs1privkey");
  42f19c:	24040048 	li	a0,72
  42f1a0:	8f85802c 	lw	a1,-32724(gp)
  42f1a4:	00000000 	nop
  42f1a8:	24a5c25c 	addiu	a1,a1,-15780
  42f1ac:	8f998084 	lw	t9,-32636(gp)
  42f1b0:	00000000 	nop
  42f1b4:	0320f809 	jalr	t9
  42f1b8:	00000000 	nop
  42f1bc:	8fdc0018 	lw	gp,24(s8)
  42f1c0:	afc20228 	sw	v0,552(s8)
	*key = empty_pkcs1privkey;
  42f1c4:	8fc20228 	lw	v0,552(s8)
  42f1c8:	00000000 	nop
  42f1cc:	00402021 	move	a0,v0
  42f1d0:	8f858824 	lw	a1,-30684(gp)
  42f1d4:	24060048 	li	a2,72
  42f1d8:	8f998a30 	lw	t9,-30160(gp)
  42f1dc:	00000000 	nop
  42f1e0:	0320f809 	jalr	t9
  42f1e4:	00000000 	nop
  42f1e8:	8fdc0018 	lw	gp,24(s8)
  42f1ec:	00000000 	nop
	if (parse_pkcs1_private_key(blob, key))
  42f1f0:	8fc40020 	lw	a0,32(s8)
  42f1f4:	8fc50024 	lw	a1,36(s8)
  42f1f8:	8fc60228 	lw	a2,552(s8)
  42f1fc:	8f99834c 	lw	t9,-31924(gp)
  42f200:	00000000 	nop
  42f204:	0320f809 	jalr	t9
  42f208:	00000000 	nop
  42f20c:	8fdc0018 	lw	gp,24(s8)
  42f210:	10400004 	beqz	v0,42f224 <load_pkcs1_private_key+0x194>
  42f214:	00000000 	nop
	    return key;
  42f218:	8fc20228 	lw	v0,552(s8)
  42f21c:	10000019 	b	42f284 <load_pkcs1_private_key+0x1f4>
  42f220:	00000000 	nop
	else
	{
	    plog("  error in PKCS#1 private key");
  42f224:	8f84802c 	lw	a0,-32724(gp)
  42f228:	00000000 	nop
  42f22c:	2484c26c 	addiu	a0,a0,-15764
  42f230:	8f998abc 	lw	t9,-30020(gp)
  42f234:	00000000 	nop
  42f238:	0320f809 	jalr	t9
  42f23c:	00000000 	nop
  42f240:	8fdc0018 	lw	gp,24(s8)
  42f244:	00000000 	nop
	    pfree(blob.ptr);
  42f248:	8fc40020 	lw	a0,32(s8)
  42f24c:	8f998094 	lw	t9,-32620(gp)
  42f250:	00000000 	nop
  42f254:	0320f809 	jalr	t9
  42f258:	00000000 	nop
  42f25c:	8fdc0018 	lw	gp,24(s8)
  42f260:	00000000 	nop
	    pfree(key);
  42f264:	8fc40228 	lw	a0,552(s8)
  42f268:	8f998094 	lw	t9,-32620(gp)
  42f26c:	00000000 	nop
  42f270:	0320f809 	jalr	t9
  42f274:	00000000 	nop
  42f278:	8fdc0018 	lw	gp,24(s8)
  42f27c:	00000000 	nop
	}
    }
    return NULL;
  42f280:	00001021 	move	v0,zero
}
  42f284:	03c0e821 	move	sp,s8
  42f288:	8fbf0240 	lw	ra,576(sp)
  42f28c:	8fbe023c 	lw	s8,572(sp)
  42f290:	27bd0248 	addiu	sp,sp,584
  42f294:	03e00008 	jr	ra
  42f298:	00000000 	nop

0042f29c <parse_pkcs7_signedData>:
  42f29c:	3c1c0fbe 	lui	gp,0xfbe
  42f2a0:	279cd6d4 	addiu	gp,gp,-10540
  42f2a4:	0399e021 	addu	gp,gp,t9
  42f2a8:	27bdff50 	addiu	sp,sp,-176
  42f2ac:	afbc0018 	sw	gp,24(sp)
  42f2b0:	afbf00a8 	sw	ra,168(sp)
  42f2b4:	afbe00a4 	sw	s8,164(sp)
  42f2b8:	afbc00a0 	sw	gp,160(sp)
  42f2bc:	03a0f021 	move	s8,sp
  42f2c0:	afc400b0 	sw	a0,176(s8)
  42f2c4:	afc500b4 	sw	a1,180(s8)
  42f2c8:	afc600b8 	sw	a2,184(s8)
  42f2cc:	afc700bc 	sw	a3,188(s8)

/*
 * Parse PKCS#7 wrapped X.509 certificates
 */
static bool
parse_pkcs7_signedData(chunk_t blob, int level0, x509cert_t **cert)
{
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  42f2d0:	afc00088 	sw	zero,136(s8)

    asn1_init(&ctx, blob, level0, FALSE, DBG_RAW);
  42f2d4:	afa00010 	sw	zero,16(sp)
  42f2d8:	24020001 	li	v0,1
  42f2dc:	afa20014 	sw	v0,20(sp)
  42f2e0:	27c40020 	addiu	a0,s8,32
  42f2e4:	8fc500b0 	lw	a1,176(s8)
  42f2e8:	8fc600b4 	lw	a2,180(s8)
  42f2ec:	8fc700b8 	lw	a3,184(s8)
  42f2f0:	8f998898 	lw	t9,-30568(gp)
  42f2f4:	00000000 	nop
  42f2f8:	0320f809 	jalr	t9
  42f2fc:	00000000 	nop
  42f300:	8fdc0018 	lw	gp,24(s8)
  42f304:	00000000 	nop

    while (objectID < PKCS7_SIGNED_ROOF) {
  42f308:	8fc20088 	lw	v0,136(s8)
  42f30c:	00000000 	nop
  42f310:	2842000b 	slti	v0,v0,11
  42f314:	14400003 	bnez	v0,42f324 <parse_pkcs7_signedData+0x88>
  42f318:	00000000 	nop
  42f31c:	10000068 	b	42f4c0 <parse_pkcs7_signedData+0x224>
  42f320:	00000000 	nop

	if (!extract_object(signedDataObjects, &objectID, &object, &ctx))
  42f324:	8f848018 	lw	a0,-32744(gp)
  42f328:	00000000 	nop
  42f32c:	24841a00 	addiu	a0,a0,6656
  42f330:	27c50088 	addiu	a1,s8,136
  42f334:	27c60080 	addiu	a2,s8,128
  42f338:	27c70020 	addiu	a3,s8,32
  42f33c:	8f9983bc 	lw	t9,-31812(gp)
  42f340:	00000000 	nop
  42f344:	0320f809 	jalr	t9
  42f348:	00000000 	nop
  42f34c:	8fdc0018 	lw	gp,24(s8)
  42f350:	14400004 	bnez	v0,42f364 <parse_pkcs7_signedData+0xc8>
  42f354:	00000000 	nop
	     return FALSE;
  42f358:	00001021 	move	v0,zero
  42f35c:	10000059 	b	42f4c4 <parse_pkcs7_signedData+0x228>
  42f360:	00000000 	nop

	if (objectID == PKCS7_SIGNED_CERT)
  42f364:	8fc30088 	lw	v1,136(s8)
  42f368:	24020005 	li	v0,5
  42f36c:	1462004e 	bne	v1,v0,42f4a8 <parse_pkcs7_signedData+0x20c>
  42f370:	00000000 	nop
	{
	    u_int level = level0 + signedDataObjects[objectID].level;
  42f374:	8fc20088 	lw	v0,136(s8)
  42f378:	00000000 	nop
  42f37c:	00021100 	sll	v0,v0,0x4
  42f380:	8f818018 	lw	at,-32744(gp)
  42f384:	00000000 	nop
  42f388:	24211a00 	addiu	at,at,6656
  42f38c:	00221021 	addu	v0,at,v0
  42f390:	8c430000 	lw	v1,0(v0)
  42f394:	8fc200b8 	lw	v0,184(s8)
  42f398:	00000000 	nop
  42f39c:	00431021 	addu	v0,v0,v1
  42f3a0:	afc2008c 	sw	v0,140(s8)
	    chunk_t cert_blob;
	    x509cert_t *newcert = alloc_thing(x509cert_t,
  42f3a4:	24040090 	li	a0,144
  42f3a8:	8f85802c 	lw	a1,-32724(gp)
  42f3ac:	00000000 	nop
  42f3b0:	24a5c28c 	addiu	a1,a1,-15732
  42f3b4:	8f998084 	lw	t9,-32636(gp)
  42f3b8:	00000000 	nop
  42f3bc:	0320f809 	jalr	t9
  42f3c0:	00000000 	nop
  42f3c4:	8fdc0018 	lw	gp,24(s8)
  42f3c8:	afc20098 	sw	v0,152(s8)
					"pkcs7 wrapped x509cert");

	    clonetochunk(cert_blob, object.ptr, object.len, "pkcs7 cert blob");
  42f3cc:	8fc20084 	lw	v0,132(s8)
  42f3d0:	00000000 	nop
  42f3d4:	afc20094 	sw	v0,148(s8)
  42f3d8:	8fc40080 	lw	a0,128(s8)
  42f3dc:	00402821 	move	a1,v0
  42f3e0:	8f86802c 	lw	a2,-32724(gp)
  42f3e4:	00000000 	nop
  42f3e8:	24c6c2a4 	addiu	a2,a2,-15708
  42f3ec:	8f998c04 	lw	t9,-29692(gp)
  42f3f0:	00000000 	nop
  42f3f4:	0320f809 	jalr	t9
  42f3f8:	00000000 	nop
  42f3fc:	8fdc0018 	lw	gp,24(s8)
  42f400:	afc20090 	sw	v0,144(s8)
	    *newcert = empty_x509cert;
  42f404:	8fc20098 	lw	v0,152(s8)
  42f408:	00000000 	nop
  42f40c:	00402021 	move	a0,v0
  42f410:	8f858820 	lw	a1,-30688(gp)
  42f414:	24060090 	li	a2,144
  42f418:	8f998a30 	lw	t9,-30160(gp)
  42f41c:	00000000 	nop
  42f420:	0320f809 	jalr	t9
  42f424:	00000000 	nop
  42f428:	8fdc0018 	lw	gp,24(s8)
  42f42c:	00000000 	nop

	    if (parse_x509cert(cert_blob, level, newcert))
  42f430:	8fc40090 	lw	a0,144(s8)
  42f434:	8fc50094 	lw	a1,148(s8)
  42f438:	8fc6008c 	lw	a2,140(s8)
  42f43c:	8fc70098 	lw	a3,152(s8)
  42f440:	8f998240 	lw	t9,-32192(gp)
  42f444:	00000000 	nop
  42f448:	0320f809 	jalr	t9
  42f44c:	00000000 	nop
  42f450:	8fdc0018 	lw	gp,24(s8)
  42f454:	1040000d 	beqz	v0,42f48c <parse_pkcs7_signedData+0x1f0>
  42f458:	00000000 	nop
	    {
		newcert->next = *cert;
  42f45c:	8fc200bc 	lw	v0,188(s8)
  42f460:	00000000 	nop
  42f464:	8c430000 	lw	v1,0(v0)
  42f468:	8fc20098 	lw	v0,152(s8)
  42f46c:	00000000 	nop
  42f470:	ac430000 	sw	v1,0(v0)
		*cert = newcert;
  42f474:	8fc30098 	lw	v1,152(s8)
  42f478:	8fc200bc 	lw	v0,188(s8)
  42f47c:	00000000 	nop
  42f480:	ac430000 	sw	v1,0(v0)
  42f484:	10000008 	b	42f4a8 <parse_pkcs7_signedData+0x20c>
  42f488:	00000000 	nop
	    }
	    else
	    {
		free_x509cert(newcert);
  42f48c:	8fc40098 	lw	a0,152(s8)
  42f490:	8f998714 	lw	t9,-30956(gp)
  42f494:	00000000 	nop
  42f498:	0320f809 	jalr	t9
  42f49c:	00000000 	nop
  42f4a0:	8fdc0018 	lw	gp,24(s8)
  42f4a4:	00000000 	nop
	    }
	}
	objectID++;
  42f4a8:	8fc20088 	lw	v0,136(s8)
  42f4ac:	00000000 	nop
  42f4b0:	24420001 	addiu	v0,v0,1
  42f4b4:	afc20088 	sw	v0,136(s8)
  42f4b8:	1000ff93 	b	42f308 <parse_pkcs7_signedData+0x6c>
  42f4bc:	00000000 	nop
    }
    return TRUE;
  42f4c0:	24020001 	li	v0,1
}
  42f4c4:	03c0e821 	move	sp,s8
  42f4c8:	8fbf00a8 	lw	ra,168(sp)
  42f4cc:	8fbe00a4 	lw	s8,164(sp)
  42f4d0:	27bd00b0 	addiu	sp,sp,176
  42f4d4:	03e00008 	jr	ra
  42f4d8:	00000000 	nop

0042f4dc <parse_pkcs7_cert>:
  42f4dc:	3c1c0fbe 	lui	gp,0xfbe
  42f4e0:	279cd494 	addiu	gp,gp,-11116
  42f4e4:	0399e021 	addu	gp,gp,t9
  42f4e8:	27bdff60 	addiu	sp,sp,-160
  42f4ec:	afbc0018 	sw	gp,24(sp)
  42f4f0:	afbf0098 	sw	ra,152(sp)
  42f4f4:	afbe0094 	sw	s8,148(sp)
  42f4f8:	afbc0090 	sw	gp,144(sp)
  42f4fc:	03a0f021 	move	s8,sp
  42f500:	afc400a0 	sw	a0,160(s8)
  42f504:	afc500a4 	sw	a1,164(s8)
  42f508:	afc600a8 	sw	a2,168(s8)

/*
 * Parse PKCS#7 wrapped X.509 certificates
 */
bool
parse_pkcs7_cert(chunk_t blob, x509cert_t **cert)
{
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  42f50c:	afc00088 	sw	zero,136(s8)

    asn1_init(&ctx, blob, 0, FALSE, DBG_RAW);
  42f510:	afa00010 	sw	zero,16(sp)
  42f514:	24020001 	li	v0,1
  42f518:	afa20014 	sw	v0,20(sp)
  42f51c:	27c40020 	addiu	a0,s8,32
  42f520:	8fc500a0 	lw	a1,160(s8)
  42f524:	8fc600a4 	lw	a2,164(s8)
  42f528:	00003821 	move	a3,zero
  42f52c:	8f998898 	lw	t9,-30568(gp)
  42f530:	00000000 	nop
  42f534:	0320f809 	jalr	t9
  42f538:	00000000 	nop
  42f53c:	8fdc0018 	lw	gp,24(s8)
  42f540:	00000000 	nop

    while (objectID < PKCS7_INFO_ROOF) {
  42f544:	8fc20088 	lw	v0,136(s8)
  42f548:	00000000 	nop
  42f54c:	28420004 	slti	v0,v0,4
  42f550:	14400003 	bnez	v0,42f560 <parse_pkcs7_cert+0x84>
  42f554:	00000000 	nop
  42f558:	1000004d 	b	42f690 <parse_pkcs7_cert+0x1b4>
  42f55c:	00000000 	nop

	if (!extract_object(contentInfoObjects, &objectID, &object, &ctx))
  42f560:	8f848018 	lw	a0,-32744(gp)
  42f564:	00000000 	nop
  42f568:	248419c0 	addiu	a0,a0,6592
  42f56c:	27c50088 	addiu	a1,s8,136
  42f570:	27c60080 	addiu	a2,s8,128
  42f574:	27c70020 	addiu	a3,s8,32
  42f578:	8f9983bc 	lw	t9,-31812(gp)
  42f57c:	00000000 	nop
  42f580:	0320f809 	jalr	t9
  42f584:	00000000 	nop
  42f588:	8fdc0018 	lw	gp,24(s8)
  42f58c:	14400004 	bnez	v0,42f5a0 <parse_pkcs7_cert+0xc4>
  42f590:	00000000 	nop
	     return FALSE;
  42f594:	00001021 	move	v0,zero
  42f598:	1000003e 	b	42f694 <parse_pkcs7_cert+0x1b8>
  42f59c:	00000000 	nop

	if (objectID == PKCS7_INFO_TYPE)
  42f5a0:	8fc30088 	lw	v1,136(s8)
  42f5a4:	24020001 	li	v0,1
  42f5a8:	14620018 	bne	v1,v0,42f60c <parse_pkcs7_cert+0x130>
  42f5ac:	00000000 	nop
	{
	    if (known_oid(object) != OID_PKCS7_SIGNED_DATA)
  42f5b0:	8fc40080 	lw	a0,128(s8)
  42f5b4:	8fc50084 	lw	a1,132(s8)
  42f5b8:	8f9982f8 	lw	t9,-32008(gp)
  42f5bc:	00000000 	nop
  42f5c0:	0320f809 	jalr	t9
  42f5c4:	00000000 	nop
  42f5c8:	8fdc0018 	lw	gp,24(s8)
  42f5cc:	00401821 	move	v1,v0
  42f5d0:	24020038 	li	v0,56
  42f5d4:	10620028 	beq	v1,v0,42f678 <parse_pkcs7_cert+0x19c>
  42f5d8:	00000000 	nop
	    {
		plog("PKCS#7 content type is not signedData");
  42f5dc:	8f84802c 	lw	a0,-32724(gp)
  42f5e0:	00000000 	nop
  42f5e4:	2484c2b4 	addiu	a0,a0,-15692
  42f5e8:	8f998abc 	lw	t9,-30020(gp)
  42f5ec:	00000000 	nop
  42f5f0:	0320f809 	jalr	t9
  42f5f4:	00000000 	nop
  42f5f8:	8fdc0018 	lw	gp,24(s8)
  42f5fc:	00000000 	nop
		return FALSE;
  42f600:	00001021 	move	v0,zero
  42f604:	10000023 	b	42f694 <parse_pkcs7_cert+0x1b8>
  42f608:	00000000 	nop
	    }
	}
	else if (objectID == PKCS7_INFO_CONTENT)
  42f60c:	8fc30088 	lw	v1,136(s8)
  42f610:	24020002 	li	v0,2
  42f614:	14620018 	bne	v1,v0,42f678 <parse_pkcs7_cert+0x19c>
  42f618:	00000000 	nop
	{
	    u_int level = contentInfoObjects[objectID].level + 1;
  42f61c:	8fc20088 	lw	v0,136(s8)
  42f620:	00000000 	nop
  42f624:	00021100 	sll	v0,v0,0x4
  42f628:	8f818018 	lw	at,-32744(gp)
  42f62c:	00000000 	nop
  42f630:	242119c0 	addiu	at,at,6592
  42f634:	00221021 	addu	v0,at,v0
  42f638:	8c420000 	lw	v0,0(v0)
  42f63c:	00000000 	nop
  42f640:	24420001 	addiu	v0,v0,1
  42f644:	afc2008c 	sw	v0,140(s8)

	    parse_pkcs7_signedData(object, level, cert);
  42f648:	8fc40080 	lw	a0,128(s8)
  42f64c:	8fc50084 	lw	a1,132(s8)
  42f650:	8fc6008c 	lw	a2,140(s8)
  42f654:	8fc700a8 	lw	a3,168(s8)
  42f658:	8f998030 	lw	t9,-32720(gp)
  42f65c:	00000000 	nop
  42f660:	2739f29c 	addiu	t9,t9,-3428
  42f664:	00000000 	nop
  42f668:	0320f809 	jalr	t9
  42f66c:	00000000 	nop
  42f670:	8fdc0018 	lw	gp,24(s8)
  42f674:	00000000 	nop
	}
	objectID++;
  42f678:	8fc20088 	lw	v0,136(s8)
  42f67c:	00000000 	nop
  42f680:	24420001 	addiu	v0,v0,1
  42f684:	afc20088 	sw	v0,136(s8)
  42f688:	1000ffae 	b	42f544 <parse_pkcs7_cert+0x68>
  42f68c:	00000000 	nop
    }
    return TRUE;
  42f690:	24020001 	li	v0,1
}
  42f694:	03c0e821 	move	sp,s8
  42f698:	8fbf0098 	lw	ra,152(sp)
  42f69c:	8fbe0094 	lw	s8,148(sp)
  42f6a0:	27bd00a0 	addiu	sp,sp,160
  42f6a4:	03e00008 	jr	ra
  42f6a8:	00000000 	nop
  42f6ac:	00000000 	nop

0042f6b0 <code_asn1_length>:
  42f6b0:	3c1c0fbe 	lui	gp,0xfbe
  42f6b4:	279cd2c0 	addiu	gp,gp,-11584
  42f6b8:	0399e021 	addu	gp,gp,t9
  42f6bc:	27bdfff0 	addiu	sp,sp,-16
  42f6c0:	afbc0000 	sw	gp,0(sp)
  42f6c4:	afbe000c 	sw	s8,12(sp)
  42f6c8:	afbc0008 	sw	gp,8(sp)
  42f6cc:	03a0f021 	move	s8,sp
  42f6d0:	afc40010 	sw	a0,16(s8)
  42f6d4:	afc50014 	sw	a1,20(s8)

static void
code_asn1_length(u_int length, chunk_t *code)
{
    if (length < 128)
  42f6d8:	8fc20010 	lw	v0,16(s8)
  42f6dc:	00000000 	nop
  42f6e0:	2c420080 	sltiu	v0,v0,128
  42f6e4:	1040000d 	beqz	v0,42f71c <code_asn1_length+0x6c>
  42f6e8:	00000000 	nop
    {
	code->ptr[0] = length;
  42f6ec:	8fc20014 	lw	v0,20(s8)
  42f6f0:	00000000 	nop
  42f6f4:	8c430000 	lw	v1,0(v0)
  42f6f8:	93c20013 	lbu	v0,19(s8)
  42f6fc:	00000000 	nop
  42f700:	a0620000 	sb	v0,0(v1)
	code->len = 1;
  42f704:	24030001 	li	v1,1
  42f708:	8fc20014 	lw	v0,20(s8)
  42f70c:	00000000 	nop
  42f710:	ac430004 	sw	v1,4(v0)
  42f714:	10000033 	b	42f7e4 <code_asn1_length+0x134>
  42f718:	00000000 	nop
    }
    else if (length < 256)
  42f71c:	8fc20010 	lw	v0,16(s8)
  42f720:	00000000 	nop
  42f724:	2c420100 	sltiu	v0,v0,256
  42f728:	10400014 	beqz	v0,42f77c <code_asn1_length+0xcc>
  42f72c:	00000000 	nop
    {
	code->ptr[0] = 0x81;
  42f730:	8fc20014 	lw	v0,20(s8)
  42f734:	00000000 	nop
  42f738:	8c430000 	lw	v1,0(v0)
  42f73c:	24020081 	li	v0,129
  42f740:	a0620000 	sb	v0,0(v1)
	code->ptr[1] = length;
  42f744:	8fc20014 	lw	v0,20(s8)
  42f748:	00000000 	nop
  42f74c:	8c420000 	lw	v0,0(v0)
  42f750:	00000000 	nop
  42f754:	24430001 	addiu	v1,v0,1
  42f758:	93c20013 	lbu	v0,19(s8)
  42f75c:	00000000 	nop
  42f760:	a0620000 	sb	v0,0(v1)
	code->len = 2;
  42f764:	24030002 	li	v1,2
  42f768:	8fc20014 	lw	v0,20(s8)
  42f76c:	00000000 	nop
  42f770:	ac430004 	sw	v1,4(v0)
  42f774:	1000001b 	b	42f7e4 <code_asn1_length+0x134>
  42f778:	00000000 	nop
    }
    else
    {
	code->ptr[0] = 0x82;
  42f77c:	8fc20014 	lw	v0,20(s8)
  42f780:	00000000 	nop
  42f784:	8c430000 	lw	v1,0(v0)
  42f788:	24020082 	li	v0,130
  42f78c:	a0620000 	sb	v0,0(v1)
	code->ptr[1] = length >> 8;
  42f790:	8fc20014 	lw	v0,20(s8)
  42f794:	00000000 	nop
  42f798:	8c420000 	lw	v0,0(v0)
  42f79c:	00000000 	nop
  42f7a0:	24430001 	addiu	v1,v0,1
  42f7a4:	8fc20010 	lw	v0,16(s8)
  42f7a8:	00000000 	nop
  42f7ac:	00021202 	srl	v0,v0,0x8
  42f7b0:	a0620000 	sb	v0,0(v1)
	code->ptr[2] = length & 0xff;
  42f7b4:	8fc20014 	lw	v0,20(s8)
  42f7b8:	00000000 	nop
  42f7bc:	8c420000 	lw	v0,0(v0)
  42f7c0:	00000000 	nop
  42f7c4:	24430002 	addiu	v1,v0,2
  42f7c8:	93c20013 	lbu	v0,19(s8)
  42f7cc:	00000000 	nop
  42f7d0:	a0620000 	sb	v0,0(v1)
	code->len = 3;
  42f7d4:	24030003 	li	v1,3
  42f7d8:	8fc20014 	lw	v0,20(s8)
  42f7dc:	00000000 	nop
  42f7e0:	ac430004 	sw	v1,4(v0)
    }
}
  42f7e4:	03c0e821 	move	sp,s8
  42f7e8:	8fbe000c 	lw	s8,12(sp)
  42f7ec:	27bd0010 	addiu	sp,sp,16
  42f7f0:	03e00008 	jr	ra
  42f7f4:	00000000 	nop

0042f7f8 <update_chunk>:
  42f7f8:	3c1c0fbe 	lui	gp,0xfbe
  42f7fc:	279cd178 	addiu	gp,gp,-11912
  42f800:	0399e021 	addu	gp,gp,t9
  42f804:	27bdffe8 	addiu	sp,sp,-24
  42f808:	afbc0000 	sw	gp,0(sp)
  42f80c:	afbe0014 	sw	s8,20(sp)
  42f810:	afbc0010 	sw	gp,16(sp)
  42f814:	03a0f021 	move	s8,sp
  42f818:	afc40018 	sw	a0,24(s8)
  42f81c:	afc5001c 	sw	a1,28(s8)


static void
update_chunk(chunk_t *ch, int n)
{
    n = (n > -1 && n < (int)ch->len)? n : (int)ch->len-1;
  42f820:	8fc2001c 	lw	v0,28(s8)
  42f824:	00000000 	nop
  42f828:	28420000 	slti	v0,v0,0
  42f82c:	1440000b 	bnez	v0,42f85c <update_chunk+0x64>
  42f830:	00000000 	nop
  42f834:	8fc20018 	lw	v0,24(s8)
  42f838:	00000000 	nop
  42f83c:	8c430004 	lw	v1,4(v0)
  42f840:	8fc2001c 	lw	v0,28(s8)
  42f844:	00000000 	nop
  42f848:	0043102a 	slt	v0,v0,v1
  42f84c:	10400003 	beqz	v0,42f85c <update_chunk+0x64>
  42f850:	00000000 	nop
  42f854:	10000009 	b	42f87c <update_chunk+0x84>
  42f858:	00000000 	nop
  42f85c:	8fc20018 	lw	v0,24(s8)
  42f860:	00000000 	nop
  42f864:	8c420004 	lw	v0,4(v0)
  42f868:	00000000 	nop
  42f86c:	2442ffff 	addiu	v0,v0,-1
  42f870:	afc20008 	sw	v0,8(s8)
  42f874:	10000004 	b	42f888 <update_chunk+0x90>
  42f878:	00000000 	nop
  42f87c:	8fc2001c 	lw	v0,28(s8)
  42f880:	00000000 	nop
  42f884:	afc20008 	sw	v0,8(s8)
  42f888:	8fc20008 	lw	v0,8(s8)
  42f88c:	00000000 	nop
  42f890:	afc2001c 	sw	v0,28(s8)
    ch->ptr += n; ch->len -= n;
  42f894:	8fc20018 	lw	v0,24(s8)
  42f898:	00000000 	nop
  42f89c:	8c430000 	lw	v1,0(v0)
  42f8a0:	8fc2001c 	lw	v0,28(s8)
  42f8a4:	00000000 	nop
  42f8a8:	00621821 	addu	v1,v1,v0
  42f8ac:	8fc20018 	lw	v0,24(s8)
  42f8b0:	00000000 	nop
  42f8b4:	ac430000 	sw	v1,0(v0)
  42f8b8:	8fc20018 	lw	v0,24(s8)
  42f8bc:	00000000 	nop
  42f8c0:	8c430004 	lw	v1,4(v0)
  42f8c4:	8fc2001c 	lw	v0,28(s8)
  42f8c8:	00000000 	nop
  42f8cc:	00621823 	subu	v1,v1,v0
  42f8d0:	8fc20018 	lw	v0,24(s8)
  42f8d4:	00000000 	nop
  42f8d8:	ac430004 	sw	v1,4(v0)
}
  42f8dc:	03c0e821 	move	sp,s8
  42f8e0:	8fbe0014 	lw	s8,20(sp)
  42f8e4:	27bd0018 	addiu	sp,sp,24
  42f8e8:	03e00008 	jr	ra
  42f8ec:	00000000 	nop

0042f8f0 <init_rdn>:
  42f8f0:	3c1c0fbe 	lui	gp,0xfbe
  42f8f4:	279cd080 	addiu	gp,gp,-12160
  42f8f8:	0399e021 	addu	gp,gp,t9
  42f8fc:	27bdffd0 	addiu	sp,sp,-48
  42f900:	afbc0010 	sw	gp,16(sp)
  42f904:	afbf002c 	sw	ra,44(sp)
  42f908:	afbe0028 	sw	s8,40(sp)
  42f90c:	afbc0024 	sw	gp,36(sp)
  42f910:	afb00020 	sw	s0,32(sp)
  42f914:	03a0f021 	move	s8,sp
  42f918:	afc40030 	sw	a0,48(s8)
  42f91c:	afc50034 	sw	a1,52(s8)
  42f920:	afc60038 	sw	a2,56(s8)


/*
 *  Pointer is set to the first RDN in a DN
 */
static err_t
init_rdn(chunk_t dn, chunk_t *rdn)
{
    *rdn = empty_chunk;
  42f924:	8fc30038 	lw	v1,56(s8)
  42f928:	8f828708 	lw	v0,-30968(gp)
  42f92c:	00000000 	nop
  42f930:	8c420000 	lw	v0,0(v0)
  42f934:	00000000 	nop
  42f938:	ac620000 	sw	v0,0(v1)
  42f93c:	8f828708 	lw	v0,-30968(gp)
  42f940:	00000000 	nop
  42f944:	8c420004 	lw	v0,4(v0)
  42f948:	00000000 	nop
  42f94c:	ac620004 	sw	v0,4(v1)

    /* a DN is a SEQUENCE OF RDNs */

    if (*dn.ptr != ASN1_SEQUENCE)
  42f950:	8fc20030 	lw	v0,48(s8)
  42f954:	00000000 	nop
  42f958:	90430000 	lbu	v1,0(v0)
  42f95c:	24020030 	li	v0,48
  42f960:	10620006 	beq	v1,v0,42f97c <init_rdn+0x8c>
  42f964:	00000000 	nop
    {
	return "DN is not a SEQUENCE";
  42f968:	8f82802c 	lw	v0,-32724(gp)
  42f96c:	00000000 	nop
  42f970:	2442c7f0 	addiu	v0,v0,-14352
  42f974:	1000000f 	b	42f9b4 <init_rdn+0xc4>
  42f978:	00000000 	nop
    }

    rdn->len = asn1_length(&dn);
  42f97c:	8fd00038 	lw	s0,56(s8)
  42f980:	27c20030 	addiu	v0,s8,48
  42f984:	00402021 	move	a0,v0
  42f988:	8f99852c 	lw	t9,-31444(gp)
  42f98c:	00000000 	nop
  42f990:	0320f809 	jalr	t9
  42f994:	00000000 	nop
  42f998:	8fdc0010 	lw	gp,16(s8)
  42f99c:	ae020004 	sw	v0,4(s0)
    rdn->ptr = dn.ptr;
  42f9a0:	8fc30030 	lw	v1,48(s8)
  42f9a4:	8fc20038 	lw	v0,56(s8)
  42f9a8:	00000000 	nop
  42f9ac:	ac430000 	sw	v1,0(v0)

    return NULL;
  42f9b0:	00001021 	move	v0,zero
}
  42f9b4:	03c0e821 	move	sp,s8
  42f9b8:	8fbf002c 	lw	ra,44(sp)
  42f9bc:	8fbe0028 	lw	s8,40(sp)
  42f9c0:	8fb00020 	lw	s0,32(sp)
  42f9c4:	27bd0030 	addiu	sp,sp,48
  42f9c8:	03e00008 	jr	ra
  42f9cc:	00000000 	nop

0042f9d0 <get_next_rdn>:
  42f9d0:	3c1c0fbe 	lui	gp,0xfbe
  42f9d4:	279ccfa0 	addiu	gp,gp,-12384
  42f9d8:	0399e021 	addu	gp,gp,t9
  42f9dc:	27bdffc0 	addiu	sp,sp,-64
  42f9e0:	afbc0010 	sw	gp,16(sp)
  42f9e4:	afbf003c 	sw	ra,60(sp)
  42f9e8:	afbe0038 	sw	s8,56(sp)
  42f9ec:	afbc0034 	sw	gp,52(sp)
  42f9f0:	afb00030 	sw	s0,48(sp)
  42f9f4:	03a0f021 	move	s8,sp
  42f9f8:	afc40040 	sw	a0,64(s8)
  42f9fc:	afc50044 	sw	a1,68(s8)
  42fa00:	afc60048 	sw	a2,72(s8)
  42fa04:	afc7004c 	sw	a3,76(s8)

/*
 *  Fetches the next RDN in a DN
 */
static err_t
get_next_rdn(chunk_t *rdn, chunk_t *oid, chunk_t *value, asn1_t *type)
{
    chunk_t attribute;

    /* initialize return values */
    *oid   = empty_chunk;
  42fa08:	8fc30044 	lw	v1,68(s8)
  42fa0c:	8f828708 	lw	v0,-30968(gp)
  42fa10:	00000000 	nop
  42fa14:	8c420000 	lw	v0,0(v0)
  42fa18:	00000000 	nop
  42fa1c:	ac620000 	sw	v0,0(v1)
  42fa20:	8f828708 	lw	v0,-30968(gp)
  42fa24:	00000000 	nop
  42fa28:	8c420004 	lw	v0,4(v0)
  42fa2c:	00000000 	nop
  42fa30:	ac620004 	sw	v0,4(v1)
    *value = empty_chunk;
  42fa34:	8fc30048 	lw	v1,72(s8)
  42fa38:	8f828708 	lw	v0,-30968(gp)
  42fa3c:	00000000 	nop
  42fa40:	8c420000 	lw	v0,0(v0)
  42fa44:	00000000 	nop
  42fa48:	ac620000 	sw	v0,0(v1)
  42fa4c:	8f828708 	lw	v0,-30968(gp)
  42fa50:	00000000 	nop
  42fa54:	8c420004 	lw	v0,4(v0)
  42fa58:	00000000 	nop
  42fa5c:	ac620004 	sw	v0,4(v1)

    /* an RDN is a SET OF attributeTypeAndValue */
    if (*rdn->ptr != ASN1_SET)
  42fa60:	8fc20040 	lw	v0,64(s8)
  42fa64:	00000000 	nop
  42fa68:	8c420000 	lw	v0,0(v0)
  42fa6c:	00000000 	nop
  42fa70:	90430000 	lbu	v1,0(v0)
  42fa74:	24020031 	li	v0,49
  42fa78:	10620006 	beq	v1,v0,42fa94 <get_next_rdn+0xc4>
  42fa7c:	00000000 	nop
	return "RDN is not a SET";
  42fa80:	8f82802c 	lw	v0,-32724(gp)
  42fa84:	00000000 	nop
  42fa88:	2442c808 	addiu	v0,v0,-14328
  42fa8c:	10000069 	b	42fc34 <get_next_rdn+0x264>
  42fa90:	00000000 	nop

    attribute.len = asn1_length(rdn);
  42fa94:	8fc40040 	lw	a0,64(s8)
  42fa98:	8f99852c 	lw	t9,-31444(gp)
  42fa9c:	00000000 	nop
  42faa0:	0320f809 	jalr	t9
  42faa4:	00000000 	nop
  42faa8:	8fdc0010 	lw	gp,16(s8)
  42faac:	afc2001c 	sw	v0,28(s8)
    attribute.ptr = rdn->ptr;
  42fab0:	8fc20040 	lw	v0,64(s8)
  42fab4:	00000000 	nop
  42fab8:	8c420000 	lw	v0,0(v0)
  42fabc:	00000000 	nop
  42fac0:	afc20018 	sw	v0,24(s8)

    /* advance to start of next RDN */
    rdn->ptr += attribute.len;
  42fac4:	8fc20040 	lw	v0,64(s8)
  42fac8:	00000000 	nop
  42facc:	8c430000 	lw	v1,0(v0)
  42fad0:	8fc2001c 	lw	v0,28(s8)
  42fad4:	00000000 	nop
  42fad8:	00621821 	addu	v1,v1,v0
  42fadc:	8fc20040 	lw	v0,64(s8)
  42fae0:	00000000 	nop
  42fae4:	ac430000 	sw	v1,0(v0)
    rdn->len -= attribute.len;
  42fae8:	8fc20040 	lw	v0,64(s8)
  42faec:	00000000 	nop
  42faf0:	8c430004 	lw	v1,4(v0)
  42faf4:	8fc2001c 	lw	v0,28(s8)
  42faf8:	00000000 	nop
  42fafc:	00621823 	subu	v1,v1,v0
  42fb00:	8fc20040 	lw	v0,64(s8)
  42fb04:	00000000 	nop
  42fb08:	ac430004 	sw	v1,4(v0)

    /* an attributeTypeAndValue is a SEQUENCE */
    if (*attribute.ptr != ASN1_SEQUENCE)
  42fb0c:	8fc20018 	lw	v0,24(s8)
  42fb10:	00000000 	nop
  42fb14:	90430000 	lbu	v1,0(v0)
  42fb18:	24020030 	li	v0,48
  42fb1c:	10620006 	beq	v1,v0,42fb38 <get_next_rdn+0x168>
  42fb20:	00000000 	nop
 	return "attributeTypeAndValue is not a SEQUENCE";
  42fb24:	8f82802c 	lw	v0,-32724(gp)
  42fb28:	00000000 	nop
  42fb2c:	2442c81c 	addiu	v0,v0,-14308
  42fb30:	10000040 	b	42fc34 <get_next_rdn+0x264>
  42fb34:	00000000 	nop

    /* extract the attribute body */
    attribute.len = asn1_length(&attribute);
  42fb38:	27c40018 	addiu	a0,s8,24
  42fb3c:	8f99852c 	lw	t9,-31444(gp)
  42fb40:	00000000 	nop
  42fb44:	0320f809 	jalr	t9
  42fb48:	00000000 	nop
  42fb4c:	8fdc0010 	lw	gp,16(s8)
  42fb50:	afc2001c 	sw	v0,28(s8)

    /* attribute type is an OID */
    if (*attribute.ptr != ASN1_OID)
  42fb54:	8fc20018 	lw	v0,24(s8)
  42fb58:	00000000 	nop
  42fb5c:	90430000 	lbu	v1,0(v0)
  42fb60:	24020006 	li	v0,6
  42fb64:	10620006 	beq	v1,v0,42fb80 <get_next_rdn+0x1b0>
  42fb68:	00000000 	nop
	return "attributeType is not an OID";
  42fb6c:	8f82802c 	lw	v0,-32724(gp)
  42fb70:	00000000 	nop
  42fb74:	2442c844 	addiu	v0,v0,-14268
  42fb78:	1000002e 	b	42fc34 <get_next_rdn+0x264>
  42fb7c:	00000000 	nop

    /* extract OID */
    oid->len = asn1_length(&attribute);
  42fb80:	8fd00044 	lw	s0,68(s8)
  42fb84:	27c40018 	addiu	a0,s8,24
  42fb88:	8f99852c 	lw	t9,-31444(gp)
  42fb8c:	00000000 	nop
  42fb90:	0320f809 	jalr	t9
  42fb94:	00000000 	nop
  42fb98:	8fdc0010 	lw	gp,16(s8)
  42fb9c:	ae020004 	sw	v0,4(s0)
    oid->ptr = attribute.ptr;
  42fba0:	8fc30018 	lw	v1,24(s8)
  42fba4:	8fc20044 	lw	v0,68(s8)
  42fba8:	00000000 	nop
  42fbac:	ac430000 	sw	v1,0(v0)

    /* advance to the attribute value */
    attribute.ptr += oid->len;
  42fbb0:	8fc20044 	lw	v0,68(s8)
  42fbb4:	00000000 	nop
  42fbb8:	8c430004 	lw	v1,4(v0)
  42fbbc:	8fc20018 	lw	v0,24(s8)
  42fbc0:	00000000 	nop
  42fbc4:	00431021 	addu	v0,v0,v1
  42fbc8:	afc20018 	sw	v0,24(s8)
    attribute.len -= oid->len;
  42fbcc:	8fc20044 	lw	v0,68(s8)
  42fbd0:	00000000 	nop
  42fbd4:	8c430004 	lw	v1,4(v0)
  42fbd8:	8fc2001c 	lw	v0,28(s8)
  42fbdc:	00000000 	nop
  42fbe0:	00431023 	subu	v0,v0,v1
  42fbe4:	afc2001c 	sw	v0,28(s8)

    /* extract string type */
    *type = *attribute.ptr;
  42fbe8:	8fc20018 	lw	v0,24(s8)
  42fbec:	00000000 	nop
  42fbf0:	90430000 	lbu	v1,0(v0)
  42fbf4:	8fc2004c 	lw	v0,76(s8)
  42fbf8:	00000000 	nop
  42fbfc:	ac430000 	sw	v1,0(v0)

    /* extract string value */
    value->len = asn1_length(&attribute);
  42fc00:	8fd00048 	lw	s0,72(s8)
  42fc04:	27c40018 	addiu	a0,s8,24
  42fc08:	8f99852c 	lw	t9,-31444(gp)
  42fc0c:	00000000 	nop
  42fc10:	0320f809 	jalr	t9
  42fc14:	00000000 	nop
  42fc18:	8fdc0010 	lw	gp,16(s8)
  42fc1c:	ae020004 	sw	v0,4(s0)
    value->ptr = attribute.ptr;
  42fc20:	8fc30018 	lw	v1,24(s8)
  42fc24:	8fc20048 	lw	v0,72(s8)
  42fc28:	00000000 	nop
  42fc2c:	ac430000 	sw	v1,0(v0)

    return NULL;
  42fc30:	00001021 	move	v0,zero
}
  42fc34:	03c0e821 	move	sp,s8
  42fc38:	8fbf003c 	lw	ra,60(sp)
  42fc3c:	8fbe0038 	lw	s8,56(sp)
  42fc40:	8fb00030 	lw	s0,48(sp)
  42fc44:	27bd0040 	addiu	sp,sp,64
  42fc48:	03e00008 	jr	ra
  42fc4c:	00000000 	nop

0042fc50 <dn_parse>:
  42fc50:	3c1c0fbe 	lui	gp,0xfbe
  42fc54:	279ccd20 	addiu	gp,gp,-13024
  42fc58:	0399e021 	addu	gp,gp,t9
  42fc5c:	27bdffa8 	addiu	sp,sp,-88
  42fc60:	afbc0018 	sw	gp,24(sp)
  42fc64:	afbf0050 	sw	ra,80(sp)
  42fc68:	afbe004c 	sw	s8,76(sp)
  42fc6c:	afbc0048 	sw	gp,72(sp)
  42fc70:	03a0f021 	move	s8,sp
  42fc74:	afc40058 	sw	a0,88(s8)
  42fc78:	afc5005c 	sw	a1,92(s8)
  42fc7c:	afc60060 	sw	a2,96(s8)

/*
 *  Parses an ASN.1 distinguished name int its OID/value pairs
 */
static err_t
dn_parse(chunk_t dn, chunk_t *str)
{
    chunk_t rdn, oid, value;
    asn1_t type;
    int oid_code;
    int first = TRUE;
  42fc80:	24020001 	li	v0,1
  42fc84:	afc20040 	sw	v0,64(s8)

    err_t ugh = init_rdn(dn, &rdn);
  42fc88:	8fc40058 	lw	a0,88(s8)
  42fc8c:	8fc5005c 	lw	a1,92(s8)
  42fc90:	27c60020 	addiu	a2,s8,32
  42fc94:	8f998030 	lw	t9,-32720(gp)
  42fc98:	00000000 	nop
  42fc9c:	2739f8f0 	addiu	t9,t9,-1808
  42fca0:	00000000 	nop
  42fca4:	0320f809 	jalr	t9
  42fca8:	00000000 	nop
  42fcac:	8fdc0018 	lw	gp,24(s8)
  42fcb0:	afc20044 	sw	v0,68(s8)

    if (ugh != NULL) /* a parsing error has occured */
  42fcb4:	8fc20044 	lw	v0,68(s8)
  42fcb8:	00000000 	nop
  42fcbc:	10400004 	beqz	v0,42fcd0 <dn_parse+0x80>
  42fcc0:	00000000 	nop
        return ugh;
  42fcc4:	8fc20044 	lw	v0,68(s8)
  42fcc8:	1000008f 	b	42ff08 <dn_parse+0x2b8>
  42fccc:	00000000 	nop
  42fcd0:	00000000 	nop

    while (rdn.len > 0)
  42fcd4:	8fc20024 	lw	v0,36(s8)
  42fcd8:	00000000 	nop
  42fcdc:	14400003 	bnez	v0,42fcec <dn_parse+0x9c>
  42fce0:	00000000 	nop
  42fce4:	10000087 	b	42ff04 <dn_parse+0x2b4>
  42fce8:	00000000 	nop
    {
	ugh = get_next_rdn(&rdn, &oid, &value, &type);
  42fcec:	27c40020 	addiu	a0,s8,32
  42fcf0:	27c50028 	addiu	a1,s8,40
  42fcf4:	27c60030 	addiu	a2,s8,48
  42fcf8:	27c70038 	addiu	a3,s8,56
  42fcfc:	8f998030 	lw	t9,-32720(gp)
  42fd00:	00000000 	nop
  42fd04:	2739f9d0 	addiu	t9,t9,-1584
  42fd08:	00000000 	nop
  42fd0c:	0320f809 	jalr	t9
  42fd10:	00000000 	nop
  42fd14:	8fdc0018 	lw	gp,24(s8)
  42fd18:	afc20044 	sw	v0,68(s8)

	if (ugh != NULL) /* a parsing error has occured */
  42fd1c:	8fc20044 	lw	v0,68(s8)
  42fd20:	00000000 	nop
  42fd24:	10400004 	beqz	v0,42fd38 <dn_parse+0xe8>
  42fd28:	00000000 	nop
	    return ugh;
  42fd2c:	8fc20044 	lw	v0,68(s8)
  42fd30:	10000075 	b	42ff08 <dn_parse+0x2b8>
  42fd34:	00000000 	nop

	if (first)		/* first OID/value pair */
  42fd38:	8fc20040 	lw	v0,64(s8)
  42fd3c:	00000000 	nop
  42fd40:	10400004 	beqz	v0,42fd54 <dn_parse+0x104>
  42fd44:	00000000 	nop
	    first = FALSE;
  42fd48:	afc00040 	sw	zero,64(s8)
  42fd4c:	10000019 	b	42fdb4 <dn_parse+0x164>
  42fd50:	00000000 	nop
	else			/* separate OID/value pair by a comma */
	    update_chunk(str, snprintf(str->ptr,str->len,", "));
  42fd54:	8fc20060 	lw	v0,96(s8)
  42fd58:	00000000 	nop
  42fd5c:	8c440000 	lw	a0,0(v0)
  42fd60:	8fc20060 	lw	v0,96(s8)
  42fd64:	00000000 	nop
  42fd68:	8c450004 	lw	a1,4(v0)
  42fd6c:	8f86802c 	lw	a2,-32724(gp)
  42fd70:	00000000 	nop
  42fd74:	24c6c860 	addiu	a2,a2,-14240
  42fd78:	8f998b38 	lw	t9,-29896(gp)
  42fd7c:	00000000 	nop
  42fd80:	0320f809 	jalr	t9
  42fd84:	00000000 	nop
  42fd88:	8fdc0018 	lw	gp,24(s8)
  42fd8c:	8fc40060 	lw	a0,96(s8)
  42fd90:	00402821 	move	a1,v0
  42fd94:	8f998030 	lw	t9,-32720(gp)
  42fd98:	00000000 	nop
  42fd9c:	2739f7f8 	addiu	t9,t9,-2056
  42fda0:	00000000 	nop
  42fda4:	0320f809 	jalr	t9
  42fda8:	00000000 	nop
  42fdac:	8fdc0018 	lw	gp,24(s8)
  42fdb0:	00000000 	nop

	/* print OID */
	oid_code = known_oid(oid);
  42fdb4:	8fc40028 	lw	a0,40(s8)
  42fdb8:	8fc5002c 	lw	a1,44(s8)
  42fdbc:	8f9982f8 	lw	t9,-32008(gp)
  42fdc0:	00000000 	nop
  42fdc4:	0320f809 	jalr	t9
  42fdc8:	00000000 	nop
  42fdcc:	8fdc0018 	lw	gp,24(s8)
  42fdd0:	afc2003c 	sw	v0,60(s8)
	if (oid_code == -1)	/* OID not found in list */
  42fdd4:	8fc3003c 	lw	v1,60(s8)
  42fdd8:	2402ffff 	li	v0,-1
  42fddc:	1462000b 	bne	v1,v0,42fe0c <dn_parse+0x1bc>
  42fde0:	00000000 	nop
	    hex_str(oid, str);
  42fde4:	8fc40028 	lw	a0,40(s8)
  42fde8:	8fc5002c 	lw	a1,44(s8)
  42fdec:	8fc60060 	lw	a2,96(s8)
  42fdf0:	8f9981ec 	lw	t9,-32276(gp)
  42fdf4:	00000000 	nop
  42fdf8:	0320f809 	jalr	t9
  42fdfc:	00000000 	nop
  42fe00:	8fdc0018 	lw	gp,24(s8)
  42fe04:	10000022 	b	42fe90 <dn_parse+0x240>
  42fe08:	00000000 	nop
	else
	    update_chunk(str, snprintf(str->ptr,str->len,"%s",
  42fe0c:	8fc2003c 	lw	v0,60(s8)
  42fe10:	00000000 	nop
  42fe14:	00021100 	sll	v0,v0,0x4
  42fe18:	24420008 	addiu	v0,v0,8
  42fe1c:	8f83865c 	lw	v1,-31140(gp)
  42fe20:	00000000 	nop
  42fe24:	24630004 	addiu	v1,v1,4
  42fe28:	00621821 	addu	v1,v1,v0
  42fe2c:	8fc20060 	lw	v0,96(s8)
  42fe30:	00000000 	nop
  42fe34:	8c440000 	lw	a0,0(v0)
  42fe38:	8fc20060 	lw	v0,96(s8)
  42fe3c:	00000000 	nop
  42fe40:	8c450004 	lw	a1,4(v0)
  42fe44:	8f86802c 	lw	a2,-32724(gp)
  42fe48:	00000000 	nop
  42fe4c:	24c6c864 	addiu	a2,a2,-14236
  42fe50:	8c670000 	lw	a3,0(v1)
  42fe54:	8f998b38 	lw	t9,-29896(gp)
  42fe58:	00000000 	nop
  42fe5c:	0320f809 	jalr	t9
  42fe60:	00000000 	nop
  42fe64:	8fdc0018 	lw	gp,24(s8)
  42fe68:	8fc40060 	lw	a0,96(s8)
  42fe6c:	00402821 	move	a1,v0
  42fe70:	8f998030 	lw	t9,-32720(gp)
  42fe74:	00000000 	nop
  42fe78:	2739f7f8 	addiu	t9,t9,-2056
  42fe7c:	00000000 	nop
  42fe80:	0320f809 	jalr	t9
  42fe84:	00000000 	nop
  42fe88:	8fdc0018 	lw	gp,24(s8)
  42fe8c:	00000000 	nop
			      oid_names[oid_code].name));

	/* print value */
	update_chunk(str, snprintf(str->ptr,str->len,"=%.*s",
  42fe90:	8fc20030 	lw	v0,48(s8)
  42fe94:	00000000 	nop
  42fe98:	afa20010 	sw	v0,16(sp)
  42fe9c:	8fc20060 	lw	v0,96(s8)
  42fea0:	00000000 	nop
  42fea4:	8c440000 	lw	a0,0(v0)
  42fea8:	8fc20060 	lw	v0,96(s8)
  42feac:	00000000 	nop
  42feb0:	8c450004 	lw	a1,4(v0)
  42feb4:	8f86802c 	lw	a2,-32724(gp)
  42feb8:	00000000 	nop
  42febc:	24c6c868 	addiu	a2,a2,-14232
  42fec0:	8fc70034 	lw	a3,52(s8)
  42fec4:	8f998b38 	lw	t9,-29896(gp)
  42fec8:	00000000 	nop
  42fecc:	0320f809 	jalr	t9
  42fed0:	00000000 	nop
  42fed4:	8fdc0018 	lw	gp,24(s8)
  42fed8:	8fc40060 	lw	a0,96(s8)
  42fedc:	00402821 	move	a1,v0
  42fee0:	8f998030 	lw	t9,-32720(gp)
  42fee4:	00000000 	nop
  42fee8:	2739f7f8 	addiu	t9,t9,-2056
  42feec:	00000000 	nop
  42fef0:	0320f809 	jalr	t9
  42fef4:	00000000 	nop
  42fef8:	8fdc0018 	lw	gp,24(s8)
  42fefc:	1000ff75 	b	42fcd4 <dn_parse+0x84>
  42ff00:	00000000 	nop
			      (int)value.len,value.ptr));
    }
    return NULL;
  42ff04:	00001021 	move	v0,zero
}
  42ff08:	03c0e821 	move	sp,s8
  42ff0c:	8fbf0050 	lw	ra,80(sp)
  42ff10:	8fbe004c 	lw	s8,76(sp)
  42ff14:	27bd0058 	addiu	sp,sp,88
  42ff18:	03e00008 	jr	ra
  42ff1c:	00000000 	nop

0042ff20 <dn_count_wildcards>:
  42ff20:	3c1c0fbe 	lui	gp,0xfbe
  42ff24:	279cca50 	addiu	gp,gp,-13744
  42ff28:	0399e021 	addu	gp,gp,t9
  42ff2c:	27bdffb0 	addiu	sp,sp,-80
  42ff30:	afbc0010 	sw	gp,16(sp)
  42ff34:	afbf0048 	sw	ra,72(sp)
  42ff38:	afbe0044 	sw	s8,68(sp)
  42ff3c:	afbc0040 	sw	gp,64(sp)
  42ff40:	03a0f021 	move	s8,sp
  42ff44:	afc40050 	sw	a0,80(s8)
  42ff48:	afc50054 	sw	a1,84(s8)

/*
 *  Count the number of wildcard RDNs in a distinguished name
 */
int
dn_count_wildcards(chunk_t dn)
{
    chunk_t rdn, oid, value;
    asn1_t type;
    int wildcards = 0;
  42ff4c:	afc00034 	sw	zero,52(s8)

    err_t ugh = init_rdn(dn, &rdn);
  42ff50:	8fc40050 	lw	a0,80(s8)
  42ff54:	8fc50054 	lw	a1,84(s8)
  42ff58:	27c60018 	addiu	a2,s8,24
  42ff5c:	8f998030 	lw	t9,-32720(gp)
  42ff60:	00000000 	nop
  42ff64:	2739f8f0 	addiu	t9,t9,-1808
  42ff68:	00000000 	nop
  42ff6c:	0320f809 	jalr	t9
  42ff70:	00000000 	nop
  42ff74:	8fdc0010 	lw	gp,16(s8)
  42ff78:	afc20038 	sw	v0,56(s8)

    if (ugh != NULL) /* a parsing error has occured */
  42ff7c:	8fc20038 	lw	v0,56(s8)
  42ff80:	00000000 	nop
  42ff84:	10400004 	beqz	v0,42ff98 <dn_count_wildcards+0x78>
  42ff88:	00000000 	nop
        return -1;
  42ff8c:	2402ffff 	li	v0,-1
  42ff90:	1000002d 	b	430048 <dn_count_wildcards+0x128>
  42ff94:	00000000 	nop
  42ff98:	00000000 	nop

    while (rdn.len > 0)
  42ff9c:	8fc2001c 	lw	v0,28(s8)
  42ffa0:	00000000 	nop
  42ffa4:	14400003 	bnez	v0,42ffb4 <dn_count_wildcards+0x94>
  42ffa8:	00000000 	nop
  42ffac:	10000024 	b	430040 <dn_count_wildcards+0x120>
  42ffb0:	00000000 	nop
    {
	ugh = get_next_rdn(&rdn, &oid, &value, &type);
  42ffb4:	27c40018 	addiu	a0,s8,24
  42ffb8:	27c50020 	addiu	a1,s8,32
  42ffbc:	27c60028 	addiu	a2,s8,40
  42ffc0:	27c70030 	addiu	a3,s8,48
  42ffc4:	8f998030 	lw	t9,-32720(gp)
  42ffc8:	00000000 	nop
  42ffcc:	2739f9d0 	addiu	t9,t9,-1584
  42ffd0:	00000000 	nop
  42ffd4:	0320f809 	jalr	t9
  42ffd8:	00000000 	nop
  42ffdc:	8fdc0010 	lw	gp,16(s8)
  42ffe0:	afc20038 	sw	v0,56(s8)
	
	if (ugh != NULL) /* a parsing error has occured */
  42ffe4:	8fc20038 	lw	v0,56(s8)
  42ffe8:	00000000 	nop
  42ffec:	10400004 	beqz	v0,430000 <dn_count_wildcards+0xe0>
  42fff0:	00000000 	nop
	    return -1;
  42fff4:	2402ffff 	li	v0,-1
  42fff8:	10000013 	b	430048 <dn_count_wildcards+0x128>
  42fffc:	00000000 	nop
	if (value.len == 1 && *value.ptr == '*')
  430000:	8fc3002c 	lw	v1,44(s8)
  430004:	24020001 	li	v0,1
  430008:	1462ffe4 	bne	v1,v0,42ff9c <dn_count_wildcards+0x7c>
  43000c:	00000000 	nop
  430010:	8fc20028 	lw	v0,40(s8)
  430014:	00000000 	nop
  430018:	90430000 	lbu	v1,0(v0)
  43001c:	2402002a 	li	v0,42
  430020:	1462ffde 	bne	v1,v0,42ff9c <dn_count_wildcards+0x7c>
  430024:	00000000 	nop
	    wildcards++; /* we have found a wildcard RDN */
  430028:	8fc20034 	lw	v0,52(s8)
  43002c:	00000000 	nop
  430030:	24420001 	addiu	v0,v0,1
  430034:	afc20034 	sw	v0,52(s8)
  430038:	1000ffd8 	b	42ff9c <dn_count_wildcards+0x7c>
  43003c:	00000000 	nop
    }
    return wildcards;
  430040:	8fc20034 	lw	v0,52(s8)
  430044:	00000000 	nop
}
  430048:	03c0e821 	move	sp,s8
  43004c:	8fbf0048 	lw	ra,72(sp)
  430050:	8fbe0044 	lw	s8,68(sp)
  430054:	27bd0050 	addiu	sp,sp,80
  430058:	03e00008 	jr	ra
  43005c:	00000000 	nop

00430060 <hex_str>:
  430060:	3c1c0fbe 	lui	gp,0xfbe
  430064:	279cc910 	addiu	gp,gp,-14064
  430068:	0399e021 	addu	gp,gp,t9
  43006c:	27bdffd0 	addiu	sp,sp,-48
  430070:	afbc0010 	sw	gp,16(sp)
  430074:	afbf0028 	sw	ra,40(sp)
  430078:	afbe0024 	sw	s8,36(sp)
  43007c:	afbc0020 	sw	gp,32(sp)
  430080:	03a0f021 	move	s8,sp
  430084:	afc40030 	sw	a0,48(s8)
  430088:	afc50034 	sw	a1,52(s8)
  43008c:	afc60038 	sw	a2,56(s8)

/*
 * Prints a binary string in hexadecimal form
 */
void
hex_str(chunk_t bin, chunk_t *str)
{
    u_int i;
    update_chunk(str, snprintf(str->ptr,str->len,"0x"));
  430090:	8fc20038 	lw	v0,56(s8)
  430094:	00000000 	nop
  430098:	8c440000 	lw	a0,0(v0)
  43009c:	8fc20038 	lw	v0,56(s8)
  4300a0:	00000000 	nop
  4300a4:	8c450004 	lw	a1,4(v0)
  4300a8:	8f86802c 	lw	a2,-32724(gp)
  4300ac:	00000000 	nop
  4300b0:	24c6c870 	addiu	a2,a2,-14224
  4300b4:	8f998b38 	lw	t9,-29896(gp)
  4300b8:	00000000 	nop
  4300bc:	0320f809 	jalr	t9
  4300c0:	00000000 	nop
  4300c4:	8fdc0010 	lw	gp,16(s8)
  4300c8:	8fc40038 	lw	a0,56(s8)
  4300cc:	00402821 	move	a1,v0
  4300d0:	8f998030 	lw	t9,-32720(gp)
  4300d4:	00000000 	nop
  4300d8:	2739f7f8 	addiu	t9,t9,-2056
  4300dc:	00000000 	nop
  4300e0:	0320f809 	jalr	t9
  4300e4:	00000000 	nop
  4300e8:	8fdc0010 	lw	gp,16(s8)
  4300ec:	00000000 	nop
    for (i=0; i < bin.len; i++)
  4300f0:	afc00018 	sw	zero,24(s8)
  4300f4:	8fc20018 	lw	v0,24(s8)
  4300f8:	8fc30034 	lw	v1,52(s8)
  4300fc:	00000000 	nop
  430100:	0043102b 	sltu	v0,v0,v1
  430104:	14400003 	bnez	v0,430114 <hex_str+0xb4>
  430108:	00000000 	nop
  43010c:	10000026 	b	4301a8 <hex_str+0x148>
  430110:	00000000 	nop
	update_chunk(str, snprintf(str->ptr,str->len,"%02X",*bin.ptr++));
  430114:	8fc20030 	lw	v0,48(s8)
  430118:	00000000 	nop
  43011c:	00401821 	move	v1,v0
  430120:	90630000 	lbu	v1,0(v1)
  430124:	24420001 	addiu	v0,v0,1
  430128:	afc20030 	sw	v0,48(s8)
  43012c:	8fc20038 	lw	v0,56(s8)
  430130:	00000000 	nop
  430134:	8c440000 	lw	a0,0(v0)
  430138:	8fc20038 	lw	v0,56(s8)
  43013c:	00000000 	nop
  430140:	8c450004 	lw	a1,4(v0)
  430144:	8f86802c 	lw	a2,-32724(gp)
  430148:	00000000 	nop
  43014c:	24c6c874 	addiu	a2,a2,-14220
  430150:	00603821 	move	a3,v1
  430154:	8f998b38 	lw	t9,-29896(gp)
  430158:	00000000 	nop
  43015c:	0320f809 	jalr	t9
  430160:	00000000 	nop
  430164:	8fdc0010 	lw	gp,16(s8)
  430168:	8fc40038 	lw	a0,56(s8)
  43016c:	00402821 	move	a1,v0
  430170:	8f998030 	lw	t9,-32720(gp)
  430174:	00000000 	nop
  430178:	2739f7f8 	addiu	t9,t9,-2056
  43017c:	00000000 	nop
  430180:	0320f809 	jalr	t9
  430184:	00000000 	nop
  430188:	8fdc0010 	lw	gp,16(s8)
  43018c:	00000000 	nop
  430190:	8fc20018 	lw	v0,24(s8)
  430194:	00000000 	nop
  430198:	24420001 	addiu	v0,v0,1
  43019c:	afc20018 	sw	v0,24(s8)
  4301a0:	1000ffd4 	b	4300f4 <hex_str+0x94>
  4301a4:	00000000 	nop
}
  4301a8:	03c0e821 	move	sp,s8
  4301ac:	8fbf0028 	lw	ra,40(sp)
  4301b0:	8fbe0024 	lw	s8,36(sp)
  4301b4:	27bd0030 	addiu	sp,sp,48
  4301b8:	03e00008 	jr	ra
  4301bc:	00000000 	nop

004301c0 <dntoa>:
  4301c0:	3c1c0fbe 	lui	gp,0xfbe
  4301c4:	279cc7b0 	addiu	gp,gp,-14416
  4301c8:	0399e021 	addu	gp,gp,t9
  4301cc:	27bdffc8 	addiu	sp,sp,-56
  4301d0:	afbc0010 	sw	gp,16(sp)
  4301d4:	afbf0030 	sw	ra,48(sp)
  4301d8:	afbe002c 	sw	s8,44(sp)
  4301dc:	afbc0028 	sw	gp,40(sp)
  4301e0:	03a0f021 	move	s8,sp
  4301e4:	afc40038 	sw	a0,56(s8)
  4301e8:	afc5003c 	sw	a1,60(s8)
  4301ec:	afc60040 	sw	a2,64(s8)
  4301f0:	afc70044 	sw	a3,68(s8)


/*  Converts a binary DER-encoded ASN.1 distinguished name
 *  into LDAP-style human-readable ASCII format
 */
int
dntoa(char *dst, size_t dstlen, chunk_t dn)
{
    err_t ugh = NULL;
  4301f4:	afc00018 	sw	zero,24(s8)
    chunk_t str;

    str.ptr = dst;
  4301f8:	8fc20038 	lw	v0,56(s8)
  4301fc:	00000000 	nop
  430200:	afc20020 	sw	v0,32(s8)
    str.len = dstlen;
  430204:	8fc2003c 	lw	v0,60(s8)
  430208:	00000000 	nop
  43020c:	afc20024 	sw	v0,36(s8)
    ugh = dn_parse(dn, &str);
  430210:	8fc40040 	lw	a0,64(s8)
  430214:	8fc50044 	lw	a1,68(s8)
  430218:	27c60020 	addiu	a2,s8,32
  43021c:	8f998030 	lw	t9,-32720(gp)
  430220:	00000000 	nop
  430224:	2739fc50 	addiu	t9,t9,-944
  430228:	00000000 	nop
  43022c:	0320f809 	jalr	t9
  430230:	00000000 	nop
  430234:	8fdc0010 	lw	gp,16(s8)
  430238:	afc20018 	sw	v0,24(s8)

    if (ugh != NULL) /* error, print DN as hex string */
  43023c:	8fc20018 	lw	v0,24(s8)
  430240:	00000000 	nop
  430244:	10400021 	beqz	v0,4302cc <dntoa+0x10c>
  430248:	00000000 	nop
    {
	DBG(DBG_PARSING,
  43024c:	8f8284f8 	lw	v0,-31496(gp)
  430250:	00000000 	nop
  430254:	8c420000 	lw	v0,0(v0)
  430258:	00000000 	nop
  43025c:	30420004 	andi	v0,v0,0x4
  430260:	1040000b 	beqz	v0,430290 <dntoa+0xd0>
  430264:	00000000 	nop
  430268:	8f84802c 	lw	a0,-32724(gp)
  43026c:	00000000 	nop
  430270:	2484c87c 	addiu	a0,a0,-14212
  430274:	8fc50018 	lw	a1,24(s8)
  430278:	8f9983b8 	lw	t9,-31816(gp)
  43027c:	00000000 	nop
  430280:	0320f809 	jalr	t9
  430284:	00000000 	nop
  430288:	8fdc0010 	lw	gp,16(s8)
  43028c:	00000000 	nop
	    DBG_log("error in DN parsing: %s", ugh)
	)
	str.ptr = dst;
  430290:	8fc20038 	lw	v0,56(s8)
  430294:	00000000 	nop
  430298:	afc20020 	sw	v0,32(s8)
	str.len = dstlen;
  43029c:	8fc2003c 	lw	v0,60(s8)
  4302a0:	00000000 	nop
  4302a4:	afc20024 	sw	v0,36(s8)
	hex_str(dn, &str);
  4302a8:	8fc40040 	lw	a0,64(s8)
  4302ac:	8fc50044 	lw	a1,68(s8)
  4302b0:	27c60020 	addiu	a2,s8,32
  4302b4:	8f9981ec 	lw	t9,-32276(gp)
  4302b8:	00000000 	nop
  4302bc:	0320f809 	jalr	t9
  4302c0:	00000000 	nop
  4302c4:	8fdc0010 	lw	gp,16(s8)
  4302c8:	00000000 	nop
    }
    return (int)(dstlen - str.len);
  4302cc:	8fc2003c 	lw	v0,60(s8)
  4302d0:	8fc30024 	lw	v1,36(s8)
  4302d4:	00000000 	nop
  4302d8:	00431023 	subu	v0,v0,v1
}
  4302dc:	03c0e821 	move	sp,s8
  4302e0:	8fbf0030 	lw	ra,48(sp)
  4302e4:	8fbe002c 	lw	s8,44(sp)
  4302e8:	27bd0038 	addiu	sp,sp,56
  4302ec:	03e00008 	jr	ra
  4302f0:	00000000 	nop

004302f4 <dntoa_or_null>:
  4302f4:	3c1c0fbe 	lui	gp,0xfbe
  4302f8:	279cc67c 	addiu	gp,gp,-14724
  4302fc:	0399e021 	addu	gp,gp,t9
  430300:	27bdffd8 	addiu	sp,sp,-40
  430304:	afbc0010 	sw	gp,16(sp)
  430308:	afbf0020 	sw	ra,32(sp)
  43030c:	afbe001c 	sw	s8,28(sp)
  430310:	afbc0018 	sw	gp,24(sp)
  430314:	03a0f021 	move	s8,sp
  430318:	afc40028 	sw	a0,40(s8)
  43031c:	afc5002c 	sw	a1,44(s8)
  430320:	afc60030 	sw	a2,48(s8)
  430324:	afc70034 	sw	a3,52(s8)

/*
 * Same as dntoa but prints a special string for a null dn
 */
int
dntoa_or_null(char *dst, size_t dstlen, chunk_t dn, const char* null_dn)
{
    if (dn.ptr == NULL)
  430328:	8fc20030 	lw	v0,48(s8)
  43032c:	00000000 	nop
  430330:	1440000e 	bnez	v0,43036c <dntoa_or_null+0x78>
  430334:	00000000 	nop
	return snprintf(dst, dstlen, "%s", null_dn);
  430338:	8fc40028 	lw	a0,40(s8)
  43033c:	8fc5002c 	lw	a1,44(s8)
  430340:	8f86802c 	lw	a2,-32724(gp)
  430344:	00000000 	nop
  430348:	24c6c864 	addiu	a2,a2,-14236
  43034c:	8fc70038 	lw	a3,56(s8)
  430350:	8f998b38 	lw	t9,-29896(gp)
  430354:	00000000 	nop
  430358:	0320f809 	jalr	t9
  43035c:	00000000 	nop
  430360:	8fdc0010 	lw	gp,16(s8)
  430364:	1000000b 	b	430394 <dntoa_or_null+0xa0>
  430368:	00000000 	nop
    else
	return dntoa(dst, dstlen, dn);
  43036c:	8fc40028 	lw	a0,40(s8)
  430370:	8fc5002c 	lw	a1,44(s8)
  430374:	8fc60030 	lw	a2,48(s8)
  430378:	8fc70034 	lw	a3,52(s8)
  43037c:	8f9982bc 	lw	t9,-32068(gp)
  430380:	00000000 	nop
  430384:	0320f809 	jalr	t9
  430388:	00000000 	nop
  43038c:	8fdc0010 	lw	gp,16(s8)
  430390:	00000000 	nop
}
  430394:	03c0e821 	move	sp,s8
  430398:	8fbf0020 	lw	ra,32(sp)
  43039c:	8fbe001c 	lw	s8,28(sp)
  4303a0:	27bd0028 	addiu	sp,sp,40
  4303a4:	03e00008 	jr	ra
  4303a8:	00000000 	nop

004303ac <atodn>:
  4303ac:	3c1c0fbe 	lui	gp,0xfbe
  4303b0:	279cc5c4 	addiu	gp,gp,-14908
  4303b4:	0399e021 	addu	gp,gp,t9
  4303b8:	27bdff08 	addiu	sp,sp,-248
  4303bc:	afbc0010 	sw	gp,16(sp)
  4303c0:	afbf00f0 	sw	ra,240(sp)
  4303c4:	afbe00ec 	sw	s8,236(sp)
  4303c8:	afbc00e8 	sw	gp,232(sp)
  4303cc:	03a0f021 	move	s8,sp
  4303d0:	afc400f8 	sw	a0,248(s8)
  4303d4:	afc500fc 	sw	a1,252(s8)

/*  Converts an LDAP-style human-readable ASCII-encoded
 *  ASN.1 distinguished name into binary DER-encoded format
 */
err_t
atodn(char *src, chunk_t *dn)
{
  /* finite state machine for atodn */

    typedef enum {
	SEARCH_OID =	0,
	READ_OID =	1,
	SEARCH_NAME =	2,
	READ_NAME =	3,
        UNKNOWN_OID =	4
    } state_t;

    u_char oid_len_buf[3];
    u_char name_len_buf[3];
    u_char rdn_seq_len_buf[3];
    u_char rdn_set_len_buf[3];
    u_char dn_seq_len_buf[3];

    chunk_t asn1_oid_len     = { oid_len_buf,     0 };
  4303d8:	27c20018 	addiu	v0,s8,24
  4303dc:	afc20048 	sw	v0,72(s8)
  4303e0:	afc0004c 	sw	zero,76(s8)
  4303e4:	8fc20048 	lw	v0,72(s8)
  4303e8:	00000000 	nop
  4303ec:	afc20040 	sw	v0,64(s8)
  4303f0:	8fc2004c 	lw	v0,76(s8)
  4303f4:	00000000 	nop
  4303f8:	afc20044 	sw	v0,68(s8)
    chunk_t asn1_name_len    = { name_len_buf,    0 };
  4303fc:	27c20020 	addiu	v0,s8,32
  430400:	afc20050 	sw	v0,80(s8)
  430404:	afc00054 	sw	zero,84(s8)
  430408:	8fc20050 	lw	v0,80(s8)
  43040c:	00000000 	nop
  430410:	afc20048 	sw	v0,72(s8)
  430414:	8fc20054 	lw	v0,84(s8)
  430418:	00000000 	nop
  43041c:	afc2004c 	sw	v0,76(s8)
    chunk_t asn1_rdn_seq_len = { rdn_seq_len_buf, 0 };
  430420:	27c20028 	addiu	v0,s8,40
  430424:	afc20058 	sw	v0,88(s8)
  430428:	afc0005c 	sw	zero,92(s8)
  43042c:	8fc20058 	lw	v0,88(s8)
  430430:	00000000 	nop
  430434:	afc20050 	sw	v0,80(s8)
  430438:	8fc2005c 	lw	v0,92(s8)
  43043c:	00000000 	nop
  430440:	afc20054 	sw	v0,84(s8)
    chunk_t asn1_rdn_set_len = { rdn_set_len_buf, 0 };
  430444:	27c20030 	addiu	v0,s8,48
  430448:	afc20060 	sw	v0,96(s8)
  43044c:	afc00064 	sw	zero,100(s8)
  430450:	8fc20060 	lw	v0,96(s8)
  430454:	00000000 	nop
  430458:	afc20058 	sw	v0,88(s8)
  43045c:	8fc20064 	lw	v0,100(s8)
  430460:	00000000 	nop
  430464:	afc2005c 	sw	v0,92(s8)
    chunk_t asn1_dn_seq_len  = { dn_seq_len_buf,  0 };
  430468:	27c20038 	addiu	v0,s8,56
  43046c:	afc20068 	sw	v0,104(s8)
  430470:	afc0006c 	sw	zero,108(s8)
  430474:	8fc20068 	lw	v0,104(s8)
  430478:	00000000 	nop
  43047c:	afc20060 	sw	v0,96(s8)
  430480:	8fc2006c 	lw	v0,108(s8)
  430484:	00000000 	nop
  430488:	afc20064 	sw	v0,100(s8)
    chunk_t oid  = empty_chunk;
  43048c:	8f828708 	lw	v0,-30968(gp)
  430490:	00000000 	nop
  430494:	8c420000 	lw	v0,0(v0)
  430498:	00000000 	nop
  43049c:	afc20068 	sw	v0,104(s8)
  4304a0:	8f828708 	lw	v0,-30968(gp)
  4304a4:	00000000 	nop
  4304a8:	8c420004 	lw	v0,4(v0)
  4304ac:	00000000 	nop
  4304b0:	afc2006c 	sw	v0,108(s8)
    chunk_t name = empty_chunk;
  4304b4:	8f828708 	lw	v0,-30968(gp)
  4304b8:	00000000 	nop
  4304bc:	8c420000 	lw	v0,0(v0)
  4304c0:	00000000 	nop
  4304c4:	afc20070 	sw	v0,112(s8)
  4304c8:	8f828708 	lw	v0,-30968(gp)
  4304cc:	00000000 	nop
  4304d0:	8c420004 	lw	v0,4(v0)
  4304d4:	00000000 	nop
  4304d8:	afc20074 	sw	v0,116(s8)

    int whitespace  = 0;
  4304dc:	afc00078 	sw	zero,120(s8)
    int rdn_seq_len = 0;
  4304e0:	afc0007c 	sw	zero,124(s8)
    int rdn_set_len = 0;
  4304e4:	afc00080 	sw	zero,128(s8)
    int dn_seq_len  = 0;
  4304e8:	afc00084 	sw	zero,132(s8)
    int pos         = 0;
  4304ec:	afc00088 	sw	zero,136(s8)

    err_t ugh = NULL;
  4304f0:	afc0008c 	sw	zero,140(s8)

    u_char *dn_ptr = dn->ptr + 4;
  4304f4:	8fc200fc 	lw	v0,252(s8)
  4304f8:	00000000 	nop
  4304fc:	8c420000 	lw	v0,0(v0)
  430500:	00000000 	nop
  430504:	24420004 	addiu	v0,v0,4
  430508:	afc20090 	sw	v0,144(s8)

    state_t state = SEARCH_OID;
  43050c:	afc00094 	sw	zero,148(s8)

    do
    {
        switch (state)
  430510:	8fc20094 	lw	v0,148(s8)
  430514:	00000000 	nop
  430518:	2c420005 	sltiu	v0,v0,5
  43051c:	104001ce 	beqz	v0,430c58 <atodn+0x8ac>
  430520:	00000000 	nop
  430524:	8fc20094 	lw	v0,148(s8)
  430528:	00000000 	nop
  43052c:	00021080 	sll	v0,v0,0x2
  430530:	8f81802c 	lw	at,-32724(gp)
  430534:	00000000 	nop
  430538:	2421c8b8 	addiu	at,at,-14152
  43053c:	00221021 	addu	v0,at,v0
  430540:	8c420000 	lw	v0,0(v0)
  430544:	00000000 	nop
  430548:	005c1021 	addu	v0,v0,gp
  43054c:	00400008 	jr	v0
  430550:	00000000 	nop
	{
	case SEARCH_OID:
	    if (*src != ' ' && *src != '/' && *src !=  ',')
  430554:	8fc200f8 	lw	v0,248(s8)
  430558:	00000000 	nop
  43055c:	80430000 	lb	v1,0(v0)
  430560:	24020020 	li	v0,32
  430564:	106201bc 	beq	v1,v0,430c58 <atodn+0x8ac>
  430568:	00000000 	nop
  43056c:	8fc200f8 	lw	v0,248(s8)
  430570:	00000000 	nop
  430574:	80430000 	lb	v1,0(v0)
  430578:	2402002f 	li	v0,47
  43057c:	106201b6 	beq	v1,v0,430c58 <atodn+0x8ac>
  430580:	00000000 	nop
  430584:	8fc200f8 	lw	v0,248(s8)
  430588:	00000000 	nop
  43058c:	80430000 	lb	v1,0(v0)
  430590:	2402002c 	li	v0,44
  430594:	106201b0 	beq	v1,v0,430c58 <atodn+0x8ac>
  430598:	00000000 	nop
	    {
		oid.ptr = src;
  43059c:	8fc200f8 	lw	v0,248(s8)
  4305a0:	00000000 	nop
  4305a4:	afc20068 	sw	v0,104(s8)
		oid.len = 1;
  4305a8:	24020001 	li	v0,1
  4305ac:	afc2006c 	sw	v0,108(s8)
		state = READ_OID;
  4305b0:	afc20094 	sw	v0,148(s8)
	    }
	    break;
  4305b4:	100001a8 	b	430c58 <atodn+0x8ac>
  4305b8:	00000000 	nop
	case READ_OID:
	    if (*src != ' ' && *src != '=')
  4305bc:	8fc200f8 	lw	v0,248(s8)
  4305c0:	00000000 	nop
  4305c4:	80430000 	lb	v1,0(v0)
  4305c8:	24020020 	li	v0,32
  4305cc:	1062000d 	beq	v1,v0,430604 <atodn+0x258>
  4305d0:	00000000 	nop
  4305d4:	8fc200f8 	lw	v0,248(s8)
  4305d8:	00000000 	nop
  4305dc:	80430000 	lb	v1,0(v0)
  4305e0:	2402003d 	li	v0,61
  4305e4:	10620007 	beq	v1,v0,430604 <atodn+0x258>
  4305e8:	00000000 	nop
		oid.len++;
  4305ec:	8fc2006c 	lw	v0,108(s8)
  4305f0:	00000000 	nop
  4305f4:	24420001 	addiu	v0,v0,1
  4305f8:	afc2006c 	sw	v0,108(s8)
  4305fc:	10000196 	b	430c58 <atodn+0x8ac>
  430600:	00000000 	nop
	    else
	    {
		for (pos = 0; pos < X501_RDN_ROOF; pos++)
  430604:	afc00088 	sw	zero,136(s8)
  430608:	8fc20088 	lw	v0,136(s8)
  43060c:	00000000 	nop
  430610:	28420015 	slti	v0,v0,21
  430614:	14400003 	bnez	v0,430624 <atodn+0x278>
  430618:	00000000 	nop
  43061c:	1000002c 	b	4306d0 <atodn+0x324>
  430620:	00000000 	nop
		{
		    if (strlen(x501rdns[pos].name) == oid.len &&
			strncasecmp(x501rdns[pos].name, oid.ptr, oid.len) == 0)
  430624:	8fc20088 	lw	v0,136(s8)
  430628:	00000000 	nop
  43062c:	00021100 	sll	v0,v0,0x4
  430630:	8f818018 	lw	at,-32744(gp)
  430634:	00000000 	nop
  430638:	24212214 	addiu	at,at,8724
  43063c:	00221021 	addu	v0,at,v0
  430640:	8c440000 	lw	a0,0(v0)
  430644:	8f998188 	lw	t9,-32376(gp)
  430648:	00000000 	nop
  43064c:	0320f809 	jalr	t9
  430650:	00000000 	nop
  430654:	8fdc0010 	lw	gp,16(s8)
  430658:	00401821 	move	v1,v0
  43065c:	8fc2006c 	lw	v0,108(s8)
  430660:	00000000 	nop
  430664:	14620014 	bne	v1,v0,4306b8 <atodn+0x30c>
  430668:	00000000 	nop
  43066c:	8fc20088 	lw	v0,136(s8)
  430670:	00000000 	nop
  430674:	00021100 	sll	v0,v0,0x4
  430678:	8f818018 	lw	at,-32744(gp)
  43067c:	00000000 	nop
  430680:	24212214 	addiu	at,at,8724
  430684:	00221021 	addu	v0,at,v0
  430688:	8c440000 	lw	a0,0(v0)
  43068c:	8fc50068 	lw	a1,104(s8)
  430690:	8fc6006c 	lw	a2,108(s8)
  430694:	8f9988a8 	lw	t9,-30552(gp)
  430698:	00000000 	nop
  43069c:	0320f809 	jalr	t9
  4306a0:	00000000 	nop
  4306a4:	8fdc0010 	lw	gp,16(s8)
  4306a8:	14400003 	bnez	v0,4306b8 <atodn+0x30c>
  4306ac:	00000000 	nop
			break; /* found a valid OID */
  4306b0:	10000007 	b	4306d0 <atodn+0x324>
  4306b4:	00000000 	nop
  4306b8:	8fc20088 	lw	v0,136(s8)
  4306bc:	00000000 	nop
  4306c0:	24420001 	addiu	v0,v0,1
  4306c4:	afc20088 	sw	v0,136(s8)
  4306c8:	1000ffcf 	b	430608 <atodn+0x25c>
  4306cc:	00000000 	nop
		}
		if (pos == X501_RDN_ROOF)
  4306d0:	8fc30088 	lw	v1,136(s8)
  4306d4:	24020015 	li	v0,21
  4306d8:	1462000a 	bne	v1,v0,430704 <atodn+0x358>
  4306dc:	00000000 	nop
		{
		    ugh = "unknown OID in ID_DER_ASN1_DN";
  4306e0:	8f82802c 	lw	v0,-32724(gp)
  4306e4:	00000000 	nop
  4306e8:	2442c894 	addiu	v0,v0,-14188
  4306ec:	00000000 	nop
  4306f0:	afc2008c 	sw	v0,140(s8)
		    state = UNKNOWN_OID;
  4306f4:	24020004 	li	v0,4
  4306f8:	afc20094 	sw	v0,148(s8)
		    break;
  4306fc:	10000156 	b	430c58 <atodn+0x8ac>
  430700:	00000000 	nop
		}
		code_asn1_length(x501rdns[pos].oid.len, &asn1_oid_len);
  430704:	8fc20088 	lw	v0,136(s8)
  430708:	00000000 	nop
  43070c:	00021100 	sll	v0,v0,0x4
  430710:	8f818018 	lw	at,-32744(gp)
  430714:	00000000 	nop
  430718:	2421221c 	addiu	at,at,8732
  43071c:	00221021 	addu	v0,at,v0
  430720:	8c440000 	lw	a0,0(v0)
  430724:	27c50040 	addiu	a1,s8,64
  430728:	8f998030 	lw	t9,-32720(gp)
  43072c:	00000000 	nop
  430730:	2739f6b0 	addiu	t9,t9,-2384
  430734:	00000000 	nop
  430738:	0320f809 	jalr	t9
  43073c:	00000000 	nop
  430740:	8fdc0010 	lw	gp,16(s8)
  430744:	00000000 	nop

		/* reset oid and change state */
		oid = empty_chunk;
  430748:	8f828708 	lw	v0,-30968(gp)
  43074c:	00000000 	nop
  430750:	8c420000 	lw	v0,0(v0)
  430754:	00000000 	nop
  430758:	afc20068 	sw	v0,104(s8)
  43075c:	8f828708 	lw	v0,-30968(gp)
  430760:	00000000 	nop
  430764:	8c420004 	lw	v0,4(v0)
  430768:	00000000 	nop
  43076c:	afc2006c 	sw	v0,108(s8)
		state = SEARCH_NAME;
  430770:	24020002 	li	v0,2
  430774:	afc20094 	sw	v0,148(s8)
	    }
	    break;
  430778:	10000137 	b	430c58 <atodn+0x8ac>
  43077c:	00000000 	nop
	case SEARCH_NAME:
	    if (*src != ' ' && *src != '=')
  430780:	8fc200f8 	lw	v0,248(s8)
  430784:	00000000 	nop
  430788:	80430000 	lb	v1,0(v0)
  43078c:	24020020 	li	v0,32
  430790:	10620131 	beq	v1,v0,430c58 <atodn+0x8ac>
  430794:	00000000 	nop
  430798:	8fc200f8 	lw	v0,248(s8)
  43079c:	00000000 	nop
  4307a0:	80430000 	lb	v1,0(v0)
  4307a4:	2402003d 	li	v0,61
  4307a8:	1062012b 	beq	v1,v0,430c58 <atodn+0x8ac>
  4307ac:	00000000 	nop
	    {
		name.ptr = src;
  4307b0:	8fc200f8 	lw	v0,248(s8)
  4307b4:	00000000 	nop
  4307b8:	afc20070 	sw	v0,112(s8)
		name.len = 1;
  4307bc:	24020001 	li	v0,1
  4307c0:	afc20074 	sw	v0,116(s8)
		whitespace = 0;
  4307c4:	afc00078 	sw	zero,120(s8)
		state = READ_NAME;
  4307c8:	24020003 	li	v0,3
  4307cc:	afc20094 	sw	v0,148(s8)
	    }
	    break;
  4307d0:	10000121 	b	430c58 <atodn+0x8ac>
  4307d4:	00000000 	nop
	case READ_NAME:
	    if (*src != ',' && *src != '/' && *src != '\0')
  4307d8:	8fc200f8 	lw	v0,248(s8)
  4307dc:	00000000 	nop
  4307e0:	80430000 	lb	v1,0(v0)
  4307e4:	2402002c 	li	v0,44
  4307e8:	10620020 	beq	v1,v0,43086c <atodn+0x4c0>
  4307ec:	00000000 	nop
  4307f0:	8fc200f8 	lw	v0,248(s8)
  4307f4:	00000000 	nop
  4307f8:	80430000 	lb	v1,0(v0)
  4307fc:	2402002f 	li	v0,47
  430800:	1062001a 	beq	v1,v0,43086c <atodn+0x4c0>
  430804:	00000000 	nop
  430808:	8fc200f8 	lw	v0,248(s8)
  43080c:	00000000 	nop
  430810:	80420000 	lb	v0,0(v0)
  430814:	00000000 	nop
  430818:	10400014 	beqz	v0,43086c <atodn+0x4c0>
  43081c:	00000000 	nop
	    {
		name.len++;
  430820:	8fc20074 	lw	v0,116(s8)
  430824:	00000000 	nop
  430828:	24420001 	addiu	v0,v0,1
  43082c:	afc20074 	sw	v0,116(s8)
		if (*src == ' ')
  430830:	8fc200f8 	lw	v0,248(s8)
  430834:	00000000 	nop
  430838:	80430000 	lb	v1,0(v0)
  43083c:	24020020 	li	v0,32
  430840:	14620007 	bne	v1,v0,430860 <atodn+0x4b4>
  430844:	00000000 	nop
		    whitespace++;
  430848:	8fc20078 	lw	v0,120(s8)
  43084c:	00000000 	nop
  430850:	24420001 	addiu	v0,v0,1
  430854:	afc20078 	sw	v0,120(s8)
  430858:	100000ff 	b	430c58 <atodn+0x8ac>
  43085c:	00000000 	nop
		else
		    whitespace = 0;
  430860:	afc00078 	sw	zero,120(s8)
  430864:	100000fc 	b	430c58 <atodn+0x8ac>
  430868:	00000000 	nop
	    }
	    else
	    {
		name.len -= whitespace;
  43086c:	8fc30074 	lw	v1,116(s8)
  430870:	8fc20078 	lw	v0,120(s8)
  430874:	00000000 	nop
  430878:	00621023 	subu	v0,v1,v0
  43087c:	afc20074 	sw	v0,116(s8)
		code_asn1_length(name.len, &asn1_name_len);
  430880:	8fc40074 	lw	a0,116(s8)
  430884:	27c50048 	addiu	a1,s8,72
  430888:	8f998030 	lw	t9,-32720(gp)
  43088c:	00000000 	nop
  430890:	2739f6b0 	addiu	t9,t9,-2384
  430894:	00000000 	nop
  430898:	0320f809 	jalr	t9
  43089c:	00000000 	nop
  4308a0:	8fdc0010 	lw	gp,16(s8)
  4308a4:	00000000 	nop

		/* compute the length of the relative distinguished name sequence */
		rdn_seq_len = 1 + asn1_oid_len.len + x501rdns[pos].oid.len +
  4308a8:	8fc20088 	lw	v0,136(s8)
  4308ac:	00000000 	nop
  4308b0:	00021100 	sll	v0,v0,0x4
  4308b4:	8f818018 	lw	at,-32744(gp)
  4308b8:	00000000 	nop
  4308bc:	2421221c 	addiu	at,at,8732
  4308c0:	00221021 	addu	v0,at,v0
  4308c4:	8c430000 	lw	v1,0(v0)
  4308c8:	8fc20044 	lw	v0,68(s8)
  4308cc:	00000000 	nop
  4308d0:	00431821 	addu	v1,v0,v1
  4308d4:	8fc2004c 	lw	v0,76(s8)
  4308d8:	00000000 	nop
  4308dc:	00621821 	addu	v1,v1,v0
  4308e0:	8fc20074 	lw	v0,116(s8)
  4308e4:	00000000 	nop
  4308e8:	00621021 	addu	v0,v1,v0
  4308ec:	24420002 	addiu	v0,v0,2
  4308f0:	afc2007c 	sw	v0,124(s8)
			      1 + asn1_name_len.len + name.len;
		code_asn1_length(rdn_seq_len, &asn1_rdn_seq_len);
  4308f4:	8fc4007c 	lw	a0,124(s8)
  4308f8:	27c50050 	addiu	a1,s8,80
  4308fc:	8f998030 	lw	t9,-32720(gp)
  430900:	00000000 	nop
  430904:	2739f6b0 	addiu	t9,t9,-2384
  430908:	00000000 	nop
  43090c:	0320f809 	jalr	t9
  430910:	00000000 	nop
  430914:	8fdc0010 	lw	gp,16(s8)
  430918:	00000000 	nop

		/* compute the length of the relative distinguished name set */
		rdn_set_len = 1 + asn1_rdn_seq_len.len + rdn_seq_len;
  43091c:	8fc30054 	lw	v1,84(s8)
  430920:	8fc2007c 	lw	v0,124(s8)
  430924:	00000000 	nop
  430928:	00621021 	addu	v0,v1,v0
  43092c:	24420001 	addiu	v0,v0,1
  430930:	afc20080 	sw	v0,128(s8)
		code_asn1_length(rdn_set_len, &asn1_rdn_set_len);
  430934:	8fc40080 	lw	a0,128(s8)
  430938:	27c50058 	addiu	a1,s8,88
  43093c:	8f998030 	lw	t9,-32720(gp)
  430940:	00000000 	nop
  430944:	2739f6b0 	addiu	t9,t9,-2384
  430948:	00000000 	nop
  43094c:	0320f809 	jalr	t9
  430950:	00000000 	nop
  430954:	8fdc0010 	lw	gp,16(s8)
  430958:	00000000 	nop

		/* encode the relative distinguished name */
		*dn_ptr++ = ASN1_SET;
  43095c:	27c50090 	addiu	a1,s8,144
  430960:	8ca20000 	lw	v0,0(a1)
  430964:	00000000 	nop
  430968:	00402021 	move	a0,v0
  43096c:	24030031 	li	v1,49
  430970:	a0830000 	sb	v1,0(a0)
  430974:	24420001 	addiu	v0,v0,1
  430978:	aca20000 	sw	v0,0(a1)
		chunkcpy(dn_ptr, asn1_rdn_set_len);
  43097c:	8fc40090 	lw	a0,144(s8)
  430980:	8fc50058 	lw	a1,88(s8)
  430984:	8fc6005c 	lw	a2,92(s8)
  430988:	8f998a30 	lw	t9,-30160(gp)
  43098c:	00000000 	nop
  430990:	0320f809 	jalr	t9
  430994:	00000000 	nop
  430998:	8fdc0010 	lw	gp,16(s8)
  43099c:	8fc30090 	lw	v1,144(s8)
  4309a0:	8fc2005c 	lw	v0,92(s8)
  4309a4:	00000000 	nop
  4309a8:	00621021 	addu	v0,v1,v0
  4309ac:	afc20090 	sw	v0,144(s8)
		*dn_ptr++ = ASN1_SEQUENCE;
  4309b0:	27c50090 	addiu	a1,s8,144
  4309b4:	8ca20000 	lw	v0,0(a1)
  4309b8:	00000000 	nop
  4309bc:	00402021 	move	a0,v0
  4309c0:	24030030 	li	v1,48
  4309c4:	a0830000 	sb	v1,0(a0)
  4309c8:	24420001 	addiu	v0,v0,1
  4309cc:	aca20000 	sw	v0,0(a1)
		chunkcpy(dn_ptr, asn1_rdn_seq_len);
  4309d0:	8fc40090 	lw	a0,144(s8)
  4309d4:	8fc50050 	lw	a1,80(s8)
  4309d8:	8fc60054 	lw	a2,84(s8)
  4309dc:	8f998a30 	lw	t9,-30160(gp)
  4309e0:	00000000 	nop
  4309e4:	0320f809 	jalr	t9
  4309e8:	00000000 	nop
  4309ec:	8fdc0010 	lw	gp,16(s8)
  4309f0:	8fc30090 	lw	v1,144(s8)
  4309f4:	8fc20054 	lw	v0,84(s8)
  4309f8:	00000000 	nop
  4309fc:	00621021 	addu	v0,v1,v0
  430a00:	afc20090 	sw	v0,144(s8)
		*dn_ptr++ = ASN1_OID;
  430a04:	27c50090 	addiu	a1,s8,144
  430a08:	8ca20000 	lw	v0,0(a1)
  430a0c:	00000000 	nop
  430a10:	00402021 	move	a0,v0
  430a14:	24030006 	li	v1,6
  430a18:	a0830000 	sb	v1,0(a0)
  430a1c:	24420001 	addiu	v0,v0,1
  430a20:	aca20000 	sw	v0,0(a1)
		chunkcpy(dn_ptr, asn1_oid_len);
  430a24:	8fc40090 	lw	a0,144(s8)
  430a28:	8fc50040 	lw	a1,64(s8)
  430a2c:	8fc60044 	lw	a2,68(s8)
  430a30:	8f998a30 	lw	t9,-30160(gp)
  430a34:	00000000 	nop
  430a38:	0320f809 	jalr	t9
  430a3c:	00000000 	nop
  430a40:	8fdc0010 	lw	gp,16(s8)
  430a44:	8fc30090 	lw	v1,144(s8)
  430a48:	8fc20044 	lw	v0,68(s8)
  430a4c:	00000000 	nop
  430a50:	00621021 	addu	v0,v1,v0
  430a54:	afc20090 	sw	v0,144(s8)
		chunkcpy(dn_ptr, x501rdns[pos].oid);
  430a58:	8fc20088 	lw	v0,136(s8)
  430a5c:	00000000 	nop
  430a60:	00021100 	sll	v0,v0,0x4
  430a64:	8f838018 	lw	v1,-32744(gp)
  430a68:	00000000 	nop
  430a6c:	24632218 	addiu	v1,v1,8728
  430a70:	00621821 	addu	v1,v1,v0
  430a74:	8fc20088 	lw	v0,136(s8)
  430a78:	00000000 	nop
  430a7c:	00021100 	sll	v0,v0,0x4
  430a80:	8f818018 	lw	at,-32744(gp)
  430a84:	00000000 	nop
  430a88:	2421221c 	addiu	at,at,8732
  430a8c:	00221021 	addu	v0,at,v0
  430a90:	8fc40090 	lw	a0,144(s8)
  430a94:	8c650000 	lw	a1,0(v1)
  430a98:	8c460000 	lw	a2,0(v0)
  430a9c:	8f998a30 	lw	t9,-30160(gp)
  430aa0:	00000000 	nop
  430aa4:	0320f809 	jalr	t9
  430aa8:	00000000 	nop
  430aac:	8fdc0010 	lw	gp,16(s8)
  430ab0:	8fc20088 	lw	v0,136(s8)
  430ab4:	00000000 	nop
  430ab8:	00021100 	sll	v0,v0,0x4
  430abc:	8f818018 	lw	at,-32744(gp)
  430ac0:	00000000 	nop
  430ac4:	2421221c 	addiu	at,at,8732
  430ac8:	00221021 	addu	v0,at,v0
  430acc:	8c430000 	lw	v1,0(v0)
  430ad0:	8fc20090 	lw	v0,144(s8)
  430ad4:	00000000 	nop
  430ad8:	00431021 	addu	v0,v0,v1
  430adc:	afc20090 	sw	v0,144(s8)
		/* encode the ASN.1 character string type of the name */
		*dn_ptr++ = (x501rdns[pos].type == ASN1_PRINTABLESTRING
  430ae0:	27c30090 	addiu	v1,s8,144
  430ae4:	8c620000 	lw	v0,0(v1)
  430ae8:	00000000 	nop
  430aec:	afc200dc 	sw	v0,220(s8)
  430af0:	24420001 	addiu	v0,v0,1
  430af4:	ac620000 	sw	v0,0(v1)
  430af8:	8fc20088 	lw	v0,136(s8)
  430afc:	00000000 	nop
  430b00:	00021100 	sll	v0,v0,0x4
  430b04:	24420008 	addiu	v0,v0,8
  430b08:	8f818018 	lw	at,-32744(gp)
  430b0c:	00000000 	nop
  430b10:	24212214 	addiu	at,at,8724
  430b14:	00221021 	addu	v0,at,v0
  430b18:	90430004 	lbu	v1,4(v0)
  430b1c:	24020013 	li	v0,19
  430b20:	1462000c 	bne	v1,v0,430b54 <atodn+0x7a8>
  430b24:	00000000 	nop
  430b28:	8fc40070 	lw	a0,112(s8)
  430b2c:	8fc50074 	lw	a1,116(s8)
  430b30:	8f998170 	lw	t9,-32400(gp)
  430b34:	00000000 	nop
  430b38:	0320f809 	jalr	t9
  430b3c:	00000000 	nop
  430b40:	8fdc0010 	lw	gp,16(s8)
  430b44:	14400003 	bnez	v0,430b54 <atodn+0x7a8>
  430b48:	00000000 	nop
  430b4c:	1000000e 	b	430b88 <atodn+0x7dc>
  430b50:	00000000 	nop
  430b54:	8fc20088 	lw	v0,136(s8)
  430b58:	00000000 	nop
  430b5c:	00021100 	sll	v0,v0,0x4
  430b60:	24420008 	addiu	v0,v0,8
  430b64:	8f818018 	lw	at,-32744(gp)
  430b68:	00000000 	nop
  430b6c:	24212214 	addiu	at,at,8724
  430b70:	00221021 	addu	v0,at,v0
  430b74:	90420004 	lbu	v0,4(v0)
  430b78:	00000000 	nop
  430b7c:	a3c200d8 	sb	v0,216(s8)
  430b80:	10000003 	b	430b90 <atodn+0x7e4>
  430b84:	00000000 	nop
  430b88:	24020014 	li	v0,20
  430b8c:	a3c200d8 	sb	v0,216(s8)
  430b90:	93c200d8 	lbu	v0,216(s8)
  430b94:	8fc300dc 	lw	v1,220(s8)
  430b98:	00000000 	nop
  430b9c:	a0620000 	sb	v0,0(v1)
		    && !is_printablestring(name))? ASN1_T61STRING : x501rdns[pos].type;
		chunkcpy(dn_ptr, asn1_name_len);
  430ba0:	8fc40090 	lw	a0,144(s8)
  430ba4:	8fc50048 	lw	a1,72(s8)
  430ba8:	8fc6004c 	lw	a2,76(s8)
  430bac:	8f998a30 	lw	t9,-30160(gp)
  430bb0:	00000000 	nop
  430bb4:	0320f809 	jalr	t9
  430bb8:	00000000 	nop
  430bbc:	8fdc0010 	lw	gp,16(s8)
  430bc0:	8fc30090 	lw	v1,144(s8)
  430bc4:	8fc2004c 	lw	v0,76(s8)
  430bc8:	00000000 	nop
  430bcc:	00621021 	addu	v0,v1,v0
  430bd0:	afc20090 	sw	v0,144(s8)
		chunkcpy(dn_ptr, name);
  430bd4:	8fc40090 	lw	a0,144(s8)
  430bd8:	8fc50070 	lw	a1,112(s8)
  430bdc:	8fc60074 	lw	a2,116(s8)
  430be0:	8f998a30 	lw	t9,-30160(gp)
  430be4:	00000000 	nop
  430be8:	0320f809 	jalr	t9
  430bec:	00000000 	nop
  430bf0:	8fdc0010 	lw	gp,16(s8)
  430bf4:	8fc30090 	lw	v1,144(s8)
  430bf8:	8fc20074 	lw	v0,116(s8)
  430bfc:	00000000 	nop
  430c00:	00621021 	addu	v0,v1,v0
  430c04:	afc20090 	sw	v0,144(s8)

		/* accumulate the length of the distinguished name sequence */
		dn_seq_len += 1 + asn1_rdn_set_len.len + rdn_set_len;
  430c08:	8fc3005c 	lw	v1,92(s8)
  430c0c:	8fc20080 	lw	v0,128(s8)
  430c10:	00000000 	nop
  430c14:	00621821 	addu	v1,v1,v0
  430c18:	8fc20084 	lw	v0,132(s8)
  430c1c:	00000000 	nop
  430c20:	00621021 	addu	v0,v1,v0
  430c24:	24420001 	addiu	v0,v0,1
  430c28:	afc20084 	sw	v0,132(s8)

		/* reset name and change state */
		name = empty_chunk;
  430c2c:	8f828708 	lw	v0,-30968(gp)
  430c30:	00000000 	nop
  430c34:	8c420000 	lw	v0,0(v0)
  430c38:	00000000 	nop
  430c3c:	afc20070 	sw	v0,112(s8)
  430c40:	8f828708 	lw	v0,-30968(gp)
  430c44:	00000000 	nop
  430c48:	8c420004 	lw	v0,4(v0)
  430c4c:	00000000 	nop
  430c50:	afc20074 	sw	v0,116(s8)
		state = SEARCH_OID;
  430c54:	afc00094 	sw	zero,148(s8)
	    }
	    break;
	case UNKNOWN_OID:
	    break;
	}
    } while (*src++ != '\0');
  430c58:	8fc200f8 	lw	v0,248(s8)
  430c5c:	00000000 	nop
  430c60:	90430000 	lbu	v1,0(v0)
  430c64:	24420001 	addiu	v0,v0,1
  430c68:	afc200f8 	sw	v0,248(s8)
  430c6c:	00031600 	sll	v0,v1,0x18
  430c70:	00021603 	sra	v0,v0,0x18
  430c74:	1440fe26 	bnez	v0,430510 <atodn+0x164>
  430c78:	00000000 	nop

    /* complete the distinguished name sequence*/
    code_asn1_length(dn_seq_len, &asn1_dn_seq_len);
  430c7c:	8fc40084 	lw	a0,132(s8)
  430c80:	27c50060 	addiu	a1,s8,96
  430c84:	8f998030 	lw	t9,-32720(gp)
  430c88:	00000000 	nop
  430c8c:	2739f6b0 	addiu	t9,t9,-2384
  430c90:	00000000 	nop
  430c94:	0320f809 	jalr	t9
  430c98:	00000000 	nop
  430c9c:	8fdc0010 	lw	gp,16(s8)
  430ca0:	00000000 	nop
    dn->ptr += 3 - asn1_dn_seq_len.len;
  430ca4:	8fc200fc 	lw	v0,252(s8)
  430ca8:	00000000 	nop
  430cac:	8c430000 	lw	v1,0(v0)
  430cb0:	8fc20064 	lw	v0,100(s8)
  430cb4:	00000000 	nop
  430cb8:	00621023 	subu	v0,v1,v0
  430cbc:	24430003 	addiu	v1,v0,3
  430cc0:	8fc200fc 	lw	v0,252(s8)
  430cc4:	00000000 	nop
  430cc8:	ac430000 	sw	v1,0(v0)
    dn->len =  1 + asn1_dn_seq_len.len + dn_seq_len;
  430ccc:	8fc30064 	lw	v1,100(s8)
  430cd0:	8fc20084 	lw	v0,132(s8)
  430cd4:	00000000 	nop
  430cd8:	00621021 	addu	v0,v1,v0
  430cdc:	24430001 	addiu	v1,v0,1
  430ce0:	8fc200fc 	lw	v0,252(s8)
  430ce4:	00000000 	nop
  430ce8:	ac430004 	sw	v1,4(v0)
    dn_ptr = dn->ptr;
  430cec:	8fc200fc 	lw	v0,252(s8)
  430cf0:	00000000 	nop
  430cf4:	8c420000 	lw	v0,0(v0)
  430cf8:	00000000 	nop
  430cfc:	afc20090 	sw	v0,144(s8)
    *dn_ptr++ = ASN1_SEQUENCE;
  430d00:	27c50090 	addiu	a1,s8,144
  430d04:	8ca20000 	lw	v0,0(a1)
  430d08:	00000000 	nop
  430d0c:	00402021 	move	a0,v0
  430d10:	24030030 	li	v1,48
  430d14:	a0830000 	sb	v1,0(a0)
  430d18:	24420001 	addiu	v0,v0,1
  430d1c:	aca20000 	sw	v0,0(a1)
    chunkcpy(dn_ptr, asn1_dn_seq_len);
  430d20:	8fc40090 	lw	a0,144(s8)
  430d24:	8fc50060 	lw	a1,96(s8)
  430d28:	8fc60064 	lw	a2,100(s8)
  430d2c:	8f998a30 	lw	t9,-30160(gp)
  430d30:	00000000 	nop
  430d34:	0320f809 	jalr	t9
  430d38:	00000000 	nop
  430d3c:	8fdc0010 	lw	gp,16(s8)
  430d40:	8fc30090 	lw	v1,144(s8)
  430d44:	8fc20064 	lw	v0,100(s8)
  430d48:	00000000 	nop
  430d4c:	00621021 	addu	v0,v1,v0
  430d50:	afc20090 	sw	v0,144(s8)
    return ugh;
  430d54:	8fc2008c 	lw	v0,140(s8)
  430d58:	00000000 	nop
}
  430d5c:	03c0e821 	move	sp,s8
  430d60:	8fbf00f0 	lw	ra,240(sp)
  430d64:	8fbe00ec 	lw	s8,236(sp)
  430d68:	27bd00f8 	addiu	sp,sp,248
  430d6c:	03e00008 	jr	ra
  430d70:	00000000 	nop

00430d74 <same_dn>:
  430d74:	3c1c0fbe 	lui	gp,0xfbe
  430d78:	279cbbfc 	addiu	gp,gp,-17412
  430d7c:	0399e021 	addu	gp,gp,t9
  430d80:	27bdffa0 	addiu	sp,sp,-96
  430d84:	afbc0010 	sw	gp,16(sp)
  430d88:	afbf0058 	sw	ra,88(sp)
  430d8c:	afbe0054 	sw	s8,84(sp)
  430d90:	afbc0050 	sw	gp,80(sp)
  430d94:	03a0f021 	move	s8,sp
  430d98:	afc40060 	sw	a0,96(s8)
  430d9c:	afc50064 	sw	a1,100(s8)
  430da0:	afc60068 	sw	a2,104(s8)
  430da4:	afc7006c 	sw	a3,108(s8)

/*  compare two distinguished names by
 *  comparing the individual RDNs
 */
bool
same_dn(chunk_t a, chunk_t b)
{
    chunk_t rdn_a,   rdn_b;
    chunk_t oid_a,   oid_b;
    chunk_t value_a, value_b;
    asn1_t  type_a,  type_b;

    /* same lengths for the DNs */
    if (a.len != b.len)
  430da8:	8fc30064 	lw	v1,100(s8)
  430dac:	8fc2006c 	lw	v0,108(s8)
  430db0:	00000000 	nop
  430db4:	10620004 	beq	v1,v0,430dc8 <same_dn+0x54>
  430db8:	00000000 	nop
	return FALSE;
  430dbc:	00001021 	move	v0,zero
  430dc0:	100000a6 	b	43105c <same_dn+0x2e8>
  430dc4:	00000000 	nop

    /* initialize DN parsing */
    if (init_rdn(a, &rdn_a) != NULL || init_rdn(b, &rdn_b) != NULL)
  430dc8:	8fc40060 	lw	a0,96(s8)
  430dcc:	8fc50064 	lw	a1,100(s8)
  430dd0:	27c60018 	addiu	a2,s8,24
  430dd4:	8f998030 	lw	t9,-32720(gp)
  430dd8:	00000000 	nop
  430ddc:	2739f8f0 	addiu	t9,t9,-1808
  430de0:	00000000 	nop
  430de4:	0320f809 	jalr	t9
  430de8:	00000000 	nop
  430dec:	8fdc0010 	lw	gp,16(s8)
  430df0:	1440000f 	bnez	v0,430e30 <same_dn+0xbc>
  430df4:	00000000 	nop
  430df8:	8fc40068 	lw	a0,104(s8)
  430dfc:	8fc5006c 	lw	a1,108(s8)
  430e00:	27c60020 	addiu	a2,s8,32
  430e04:	8f998030 	lw	t9,-32720(gp)
  430e08:	00000000 	nop
  430e0c:	2739f8f0 	addiu	t9,t9,-1808
  430e10:	00000000 	nop
  430e14:	0320f809 	jalr	t9
  430e18:	00000000 	nop
  430e1c:	8fdc0010 	lw	gp,16(s8)
  430e20:	14400003 	bnez	v0,430e30 <same_dn+0xbc>
  430e24:	00000000 	nop
  430e28:	10000004 	b	430e3c <same_dn+0xc8>
  430e2c:	00000000 	nop
    	return FALSE;
  430e30:	00001021 	move	v0,zero
  430e34:	10000089 	b	43105c <same_dn+0x2e8>
  430e38:	00000000 	nop
  430e3c:	00000000 	nop

    /* fetch next RDN pair */
    while (rdn_a.len > 0 && rdn_b.len > 0)
  430e40:	8fc2001c 	lw	v0,28(s8)
  430e44:	00000000 	nop
  430e48:	10400076 	beqz	v0,431024 <same_dn+0x2b0>
  430e4c:	00000000 	nop
  430e50:	8fc20024 	lw	v0,36(s8)
  430e54:	00000000 	nop
  430e58:	14400003 	bnez	v0,430e68 <same_dn+0xf4>
  430e5c:	00000000 	nop
  430e60:	10000070 	b	431024 <same_dn+0x2b0>
  430e64:	00000000 	nop
    {
	/* parse next RDNs and check for errors */
	if (get_next_rdn(&rdn_a, &oid_a, &value_a, &type_a) != NULL ||
	    get_next_rdn(&rdn_b, &oid_b, &value_b, &type_b) != NULL)
  430e68:	27c40018 	addiu	a0,s8,24
  430e6c:	27c50028 	addiu	a1,s8,40
  430e70:	27c60038 	addiu	a2,s8,56
  430e74:	27c70048 	addiu	a3,s8,72
  430e78:	8f998030 	lw	t9,-32720(gp)
  430e7c:	00000000 	nop
  430e80:	2739f9d0 	addiu	t9,t9,-1584
  430e84:	00000000 	nop
  430e88:	0320f809 	jalr	t9
  430e8c:	00000000 	nop
  430e90:	8fdc0010 	lw	gp,16(s8)
  430e94:	14400010 	bnez	v0,430ed8 <same_dn+0x164>
  430e98:	00000000 	nop
  430e9c:	27c40020 	addiu	a0,s8,32
  430ea0:	27c50030 	addiu	a1,s8,48
  430ea4:	27c60040 	addiu	a2,s8,64
  430ea8:	27c7004c 	addiu	a3,s8,76
  430eac:	8f998030 	lw	t9,-32720(gp)
  430eb0:	00000000 	nop
  430eb4:	2739f9d0 	addiu	t9,t9,-1584
  430eb8:	00000000 	nop
  430ebc:	0320f809 	jalr	t9
  430ec0:	00000000 	nop
  430ec4:	8fdc0010 	lw	gp,16(s8)
  430ec8:	14400003 	bnez	v0,430ed8 <same_dn+0x164>
  430ecc:	00000000 	nop
  430ed0:	10000004 	b	430ee4 <same_dn+0x170>
  430ed4:	00000000 	nop
	{
	    return FALSE;
  430ed8:	00001021 	move	v0,zero
  430edc:	1000005f 	b	43105c <same_dn+0x2e8>
  430ee0:	00000000 	nop
	}

	/* OIDs must agree */
	if (oid_a.len != oid_b.len || memcmp(oid_a.ptr, oid_b.ptr, oid_b.len) != 0)
  430ee4:	8fc3002c 	lw	v1,44(s8)
  430ee8:	8fc20034 	lw	v0,52(s8)
  430eec:	00000000 	nop
  430ef0:	1462000d 	bne	v1,v0,430f28 <same_dn+0x1b4>
  430ef4:	00000000 	nop
  430ef8:	8fc40028 	lw	a0,40(s8)
  430efc:	8fc50030 	lw	a1,48(s8)
  430f00:	8fc60034 	lw	a2,52(s8)
  430f04:	8f9985c8 	lw	t9,-31288(gp)
  430f08:	00000000 	nop
  430f0c:	0320f809 	jalr	t9
  430f10:	00000000 	nop
  430f14:	8fdc0010 	lw	gp,16(s8)
  430f18:	14400003 	bnez	v0,430f28 <same_dn+0x1b4>
  430f1c:	00000000 	nop
  430f20:	10000004 	b	430f34 <same_dn+0x1c0>
  430f24:	00000000 	nop
	    return FALSE;
  430f28:	00001021 	move	v0,zero
  430f2c:	1000004b 	b	43105c <same_dn+0x2e8>
  430f30:	00000000 	nop

	/* same lengths for values */
	if (value_a.len != value_b.len)
  430f34:	8fc3003c 	lw	v1,60(s8)
  430f38:	8fc20044 	lw	v0,68(s8)
  430f3c:	00000000 	nop
  430f40:	10620004 	beq	v1,v0,430f54 <same_dn+0x1e0>
  430f44:	00000000 	nop
	    return FALSE;
  430f48:	00001021 	move	v0,zero
  430f4c:	10000043 	b	43105c <same_dn+0x2e8>
  430f50:	00000000 	nop

	/* printableStrings and email RDNs require uppercase comparison */
	if (type_a == type_b && (type_a == ASN1_PRINTABLESTRING ||
	   (type_a == ASN1_IA5STRING && known_oid(oid_a) == OID_PKCS9_EMAIL)))
  430f54:	8fc30048 	lw	v1,72(s8)
  430f58:	8fc2004c 	lw	v0,76(s8)
  430f5c:	00000000 	nop
  430f60:	14620023 	bne	v1,v0,430ff0 <same_dn+0x27c>
  430f64:	00000000 	nop
  430f68:	8fc30048 	lw	v1,72(s8)
  430f6c:	24020013 	li	v0,19
  430f70:	10620012 	beq	v1,v0,430fbc <same_dn+0x248>
  430f74:	00000000 	nop
  430f78:	8fc30048 	lw	v1,72(s8)
  430f7c:	24020016 	li	v0,22
  430f80:	1462001b 	bne	v1,v0,430ff0 <same_dn+0x27c>
  430f84:	00000000 	nop
  430f88:	8fc40028 	lw	a0,40(s8)
  430f8c:	8fc5002c 	lw	a1,44(s8)
  430f90:	8f9982f8 	lw	t9,-32008(gp)
  430f94:	00000000 	nop
  430f98:	0320f809 	jalr	t9
  430f9c:	00000000 	nop
  430fa0:	8fdc0010 	lw	gp,16(s8)
  430fa4:	00401821 	move	v1,v0
  430fa8:	2402003e 	li	v0,62
  430fac:	10620003 	beq	v1,v0,430fbc <same_dn+0x248>
  430fb0:	00000000 	nop
  430fb4:	1000000e 	b	430ff0 <same_dn+0x27c>
  430fb8:	00000000 	nop
	{
	    if (strncasecmp(value_a.ptr, value_b.ptr, value_b.len) != 0)
  430fbc:	8fc40038 	lw	a0,56(s8)
  430fc0:	8fc50040 	lw	a1,64(s8)
  430fc4:	8fc60044 	lw	a2,68(s8)
  430fc8:	8f9988a8 	lw	t9,-30552(gp)
  430fcc:	00000000 	nop
  430fd0:	0320f809 	jalr	t9
  430fd4:	00000000 	nop
  430fd8:	8fdc0010 	lw	gp,16(s8)
  430fdc:	1040ff98 	beqz	v0,430e40 <same_dn+0xcc>
  430fe0:	00000000 	nop
		return FALSE;
  430fe4:	00001021 	move	v0,zero
  430fe8:	1000001c 	b	43105c <same_dn+0x2e8>
  430fec:	00000000 	nop
	}
	else
	{
	    if (strncmp(value_a.ptr, value_b.ptr, value_b.len) != 0)
  430ff0:	8fc40038 	lw	a0,56(s8)
  430ff4:	8fc50040 	lw	a1,64(s8)
  430ff8:	8fc60044 	lw	a2,68(s8)
  430ffc:	8f99864c 	lw	t9,-31156(gp)
  431000:	00000000 	nop
  431004:	0320f809 	jalr	t9
  431008:	00000000 	nop
  43100c:	8fdc0010 	lw	gp,16(s8)
  431010:	1040ff8b 	beqz	v0,430e40 <same_dn+0xcc>
  431014:	00000000 	nop
		return FALSE;
  431018:	00001021 	move	v0,zero
  43101c:	1000000f 	b	43105c <same_dn+0x2e8>
  431020:	00000000 	nop
	}
    }
    /* both DNs must have same number of RDNs */
    if (rdn_a.len != 0 || rdn_b.len != 0)
  431024:	8fc2001c 	lw	v0,28(s8)
  431028:	00000000 	nop
  43102c:	14400007 	bnez	v0,43104c <same_dn+0x2d8>
  431030:	00000000 	nop
  431034:	8fc20024 	lw	v0,36(s8)
  431038:	00000000 	nop
  43103c:	14400003 	bnez	v0,43104c <same_dn+0x2d8>
  431040:	00000000 	nop
  431044:	10000004 	b	431058 <same_dn+0x2e4>
  431048:	00000000 	nop
	return FALSE;
  43104c:	00001021 	move	v0,zero
  431050:	10000002 	b	43105c <same_dn+0x2e8>
  431054:	00000000 	nop

    /* the two DNs are equal! */
    return TRUE;
  431058:	24020001 	li	v0,1
}
  43105c:	03c0e821 	move	sp,s8
  431060:	8fbf0058 	lw	ra,88(sp)
  431064:	8fbe0054 	lw	s8,84(sp)
  431068:	27bd0060 	addiu	sp,sp,96
  43106c:	03e00008 	jr	ra
  431070:	00000000 	nop

00431074 <match_dn>:
  431074:	3c1c0fbe 	lui	gp,0xfbe
  431078:	279cb8fc 	addiu	gp,gp,-18180
  43107c:	0399e021 	addu	gp,gp,t9
  431080:	27bdff98 	addiu	sp,sp,-104
  431084:	afbc0010 	sw	gp,16(sp)
  431088:	afbf0060 	sw	ra,96(sp)
  43108c:	afbe005c 	sw	s8,92(sp)
  431090:	afbc0058 	sw	gp,88(sp)
  431094:	03a0f021 	move	s8,sp
  431098:	afc40068 	sw	a0,104(s8)
  43109c:	afc5006c 	sw	a1,108(s8)
  4310a0:	afc60070 	sw	a2,112(s8)
  4310a4:	afc70074 	sw	a3,116(s8)


/*  compare two distinguished names by comparing the individual RDNs.
 *  A single'*' character designates a wildcard RDN in DN b.
 */
bool
match_dn(chunk_t a, chunk_t b, int *wildcards)
{
    chunk_t rdn_a,   rdn_b;
    chunk_t oid_a,   oid_b;
    chunk_t value_a, value_b;
    asn1_t  type_a,  type_b;

    /* initialize wildcard counter */
    *wildcards = 0;
  4310a8:	8fc20078 	lw	v0,120(s8)
  4310ac:	00000000 	nop
  4310b0:	ac400000 	sw	zero,0(v0)

    /* initialize DN parsing */
    if (init_rdn(a, &rdn_a) != NULL || init_rdn(b, &rdn_b) != NULL)
  4310b4:	8fc40068 	lw	a0,104(s8)
  4310b8:	8fc5006c 	lw	a1,108(s8)
  4310bc:	27c60018 	addiu	a2,s8,24
  4310c0:	8f998030 	lw	t9,-32720(gp)
  4310c4:	00000000 	nop
  4310c8:	2739f8f0 	addiu	t9,t9,-1808
  4310cc:	00000000 	nop
  4310d0:	0320f809 	jalr	t9
  4310d4:	00000000 	nop
  4310d8:	8fdc0010 	lw	gp,16(s8)
  4310dc:	1440000f 	bnez	v0,43111c <match_dn+0xa8>
  4310e0:	00000000 	nop
  4310e4:	8fc40070 	lw	a0,112(s8)
  4310e8:	8fc50074 	lw	a1,116(s8)
  4310ec:	27c60020 	addiu	a2,s8,32
  4310f0:	8f998030 	lw	t9,-32720(gp)
  4310f4:	00000000 	nop
  4310f8:	2739f8f0 	addiu	t9,t9,-1808
  4310fc:	00000000 	nop
  431100:	0320f809 	jalr	t9
  431104:	00000000 	nop
  431108:	8fdc0010 	lw	gp,16(s8)
  43110c:	14400003 	bnez	v0,43111c <match_dn+0xa8>
  431110:	00000000 	nop
  431114:	10000004 	b	431128 <match_dn+0xb4>
  431118:	00000000 	nop
    	return FALSE;
  43111c:	00001021 	move	v0,zero
  431120:	1000009d 	b	431398 <match_dn+0x324>
  431124:	00000000 	nop
  431128:	00000000 	nop

    /* fetch next RDN pair */
    while (rdn_a.len > 0 && rdn_b.len > 0)
  43112c:	8fc2001c 	lw	v0,28(s8)
  431130:	00000000 	nop
  431134:	1040008a 	beqz	v0,431360 <match_dn+0x2ec>
  431138:	00000000 	nop
  43113c:	8fc20024 	lw	v0,36(s8)
  431140:	00000000 	nop
  431144:	14400003 	bnez	v0,431154 <match_dn+0xe0>
  431148:	00000000 	nop
  43114c:	10000084 	b	431360 <match_dn+0x2ec>
  431150:	00000000 	nop
    {
	/* parse next RDNs and check for errors */
	if (get_next_rdn(&rdn_a, &oid_a, &value_a, &type_a) != NULL ||
	    get_next_rdn(&rdn_b, &oid_b, &value_b, &type_b) != NULL)
  431154:	27c40018 	addiu	a0,s8,24
  431158:	27c50028 	addiu	a1,s8,40
  43115c:	27c60038 	addiu	a2,s8,56
  431160:	27c70048 	addiu	a3,s8,72
  431164:	8f998030 	lw	t9,-32720(gp)
  431168:	00000000 	nop
  43116c:	2739f9d0 	addiu	t9,t9,-1584
  431170:	00000000 	nop
  431174:	0320f809 	jalr	t9
  431178:	00000000 	nop
  43117c:	8fdc0010 	lw	gp,16(s8)
  431180:	14400010 	bnez	v0,4311c4 <match_dn+0x150>
  431184:	00000000 	nop
  431188:	27c40020 	addiu	a0,s8,32
  43118c:	27c50030 	addiu	a1,s8,48
  431190:	27c60040 	addiu	a2,s8,64
  431194:	27c7004c 	addiu	a3,s8,76
  431198:	8f998030 	lw	t9,-32720(gp)
  43119c:	00000000 	nop
  4311a0:	2739f9d0 	addiu	t9,t9,-1584
  4311a4:	00000000 	nop
  4311a8:	0320f809 	jalr	t9
  4311ac:	00000000 	nop
  4311b0:	8fdc0010 	lw	gp,16(s8)
  4311b4:	14400003 	bnez	v0,4311c4 <match_dn+0x150>
  4311b8:	00000000 	nop
  4311bc:	10000004 	b	4311d0 <match_dn+0x15c>
  4311c0:	00000000 	nop
	{
	    return FALSE;
  4311c4:	00001021 	move	v0,zero
  4311c8:	10000073 	b	431398 <match_dn+0x324>
  4311cc:	00000000 	nop
	}

	/* OIDs must agree */
	if (oid_a.len != oid_b.len || memcmp(oid_a.ptr, oid_b.ptr, oid_b.len) != 0)
  4311d0:	8fc3002c 	lw	v1,44(s8)
  4311d4:	8fc20034 	lw	v0,52(s8)
  4311d8:	00000000 	nop
  4311dc:	1462000d 	bne	v1,v0,431214 <match_dn+0x1a0>
  4311e0:	00000000 	nop
  4311e4:	8fc40028 	lw	a0,40(s8)
  4311e8:	8fc50030 	lw	a1,48(s8)
  4311ec:	8fc60034 	lw	a2,52(s8)
  4311f0:	8f9985c8 	lw	t9,-31288(gp)
  4311f4:	00000000 	nop
  4311f8:	0320f809 	jalr	t9
  4311fc:	00000000 	nop
  431200:	8fdc0010 	lw	gp,16(s8)
  431204:	14400003 	bnez	v0,431214 <match_dn+0x1a0>
  431208:	00000000 	nop
  43120c:	10000004 	b	431220 <match_dn+0x1ac>
  431210:	00000000 	nop
	    return FALSE;
  431214:	00001021 	move	v0,zero
  431218:	1000005f 	b	431398 <match_dn+0x324>
  43121c:	00000000 	nop

	/* does rdn_b contain a wildcard? */
	if (value_b.len == 1 && *value_b.ptr == '*')
  431220:	8fc30044 	lw	v1,68(s8)
  431224:	24020001 	li	v0,1
  431228:	14620011 	bne	v1,v0,431270 <match_dn+0x1fc>
  43122c:	00000000 	nop
  431230:	8fc20040 	lw	v0,64(s8)
  431234:	00000000 	nop
  431238:	90430000 	lbu	v1,0(v0)
  43123c:	2402002a 	li	v0,42
  431240:	1462000b 	bne	v1,v0,431270 <match_dn+0x1fc>
  431244:	00000000 	nop
	{
	    (*wildcards)++;
  431248:	8fc20078 	lw	v0,120(s8)
  43124c:	00000000 	nop
  431250:	8c420000 	lw	v0,0(v0)
  431254:	00000000 	nop
  431258:	24430001 	addiu	v1,v0,1
  43125c:	8fc20078 	lw	v0,120(s8)
  431260:	00000000 	nop
  431264:	ac430000 	sw	v1,0(v0)
	    continue;
  431268:	1000ffb0 	b	43112c <match_dn+0xb8>
  43126c:	00000000 	nop
	}

	/* same lengths for values */
	if (value_a.len != value_b.len)
  431270:	8fc3003c 	lw	v1,60(s8)
  431274:	8fc20044 	lw	v0,68(s8)
  431278:	00000000 	nop
  43127c:	10620004 	beq	v1,v0,431290 <match_dn+0x21c>
  431280:	00000000 	nop
	    return FALSE;
  431284:	00001021 	move	v0,zero
  431288:	10000043 	b	431398 <match_dn+0x324>
  43128c:	00000000 	nop

	/* printableStrings and email RDNs require uppercase comparison */
	if (type_a == type_b && (type_a == ASN1_PRINTABLESTRING ||
	   (type_a == ASN1_IA5STRING && known_oid(oid_a) == OID_PKCS9_EMAIL)))
  431290:	8fc30048 	lw	v1,72(s8)
  431294:	8fc2004c 	lw	v0,76(s8)
  431298:	00000000 	nop
  43129c:	14620023 	bne	v1,v0,43132c <match_dn+0x2b8>
  4312a0:	00000000 	nop
  4312a4:	8fc30048 	lw	v1,72(s8)
  4312a8:	24020013 	li	v0,19
  4312ac:	10620012 	beq	v1,v0,4312f8 <match_dn+0x284>
  4312b0:	00000000 	nop
  4312b4:	8fc30048 	lw	v1,72(s8)
  4312b8:	24020016 	li	v0,22
  4312bc:	1462001b 	bne	v1,v0,43132c <match_dn+0x2b8>
  4312c0:	00000000 	nop
  4312c4:	8fc40028 	lw	a0,40(s8)
  4312c8:	8fc5002c 	lw	a1,44(s8)
  4312cc:	8f9982f8 	lw	t9,-32008(gp)
  4312d0:	00000000 	nop
  4312d4:	0320f809 	jalr	t9
  4312d8:	00000000 	nop
  4312dc:	8fdc0010 	lw	gp,16(s8)
  4312e0:	00401821 	move	v1,v0
  4312e4:	2402003e 	li	v0,62
  4312e8:	10620003 	beq	v1,v0,4312f8 <match_dn+0x284>
  4312ec:	00000000 	nop
  4312f0:	1000000e 	b	43132c <match_dn+0x2b8>
  4312f4:	00000000 	nop
	{
	    if (strncasecmp(value_a.ptr, value_b.ptr, value_b.len) != 0)
  4312f8:	8fc40038 	lw	a0,56(s8)
  4312fc:	8fc50040 	lw	a1,64(s8)
  431300:	8fc60044 	lw	a2,68(s8)
  431304:	8f9988a8 	lw	t9,-30552(gp)
  431308:	00000000 	nop
  43130c:	0320f809 	jalr	t9
  431310:	00000000 	nop
  431314:	8fdc0010 	lw	gp,16(s8)
  431318:	1040ff84 	beqz	v0,43112c <match_dn+0xb8>
  43131c:	00000000 	nop
		return FALSE;
  431320:	00001021 	move	v0,zero
  431324:	1000001c 	b	431398 <match_dn+0x324>
  431328:	00000000 	nop
	}
	else
	{
	    if (strncmp(value_a.ptr, value_b.ptr, value_b.len) != 0)
  43132c:	8fc40038 	lw	a0,56(s8)
  431330:	8fc50040 	lw	a1,64(s8)
  431334:	8fc60044 	lw	a2,68(s8)
  431338:	8f99864c 	lw	t9,-31156(gp)
  43133c:	00000000 	nop
  431340:	0320f809 	jalr	t9
  431344:	00000000 	nop
  431348:	8fdc0010 	lw	gp,16(s8)
  43134c:	1040ff77 	beqz	v0,43112c <match_dn+0xb8>
  431350:	00000000 	nop
		return FALSE;
  431354:	00001021 	move	v0,zero
  431358:	1000000f 	b	431398 <match_dn+0x324>
  43135c:	00000000 	nop
	}
    }
    /* both DNs must have same number of RDNs */
    if (rdn_a.len != 0 || rdn_b.len != 0)
  431360:	8fc2001c 	lw	v0,28(s8)
  431364:	00000000 	nop
  431368:	14400007 	bnez	v0,431388 <match_dn+0x314>
  43136c:	00000000 	nop
  431370:	8fc20024 	lw	v0,36(s8)
  431374:	00000000 	nop
  431378:	14400003 	bnez	v0,431388 <match_dn+0x314>
  43137c:	00000000 	nop
  431380:	10000004 	b	431394 <match_dn+0x320>
  431384:	00000000 	nop
	return FALSE;
  431388:	00001021 	move	v0,zero
  43138c:	10000002 	b	431398 <match_dn+0x324>
  431390:	00000000 	nop

    /* the two DNs match! */
    return TRUE;
  431394:	24020001 	li	v0,1
}
  431398:	03c0e821 	move	sp,s8
  43139c:	8fbf0060 	lw	ra,96(sp)
  4313a0:	8fbe005c 	lw	s8,92(sp)
  4313a4:	27bd0068 	addiu	sp,sp,104
  4313a8:	03e00008 	jr	ra
  4313ac:	00000000 	nop

004313b0 <same_cert>:
  4313b0:	3c1c0fbe 	lui	gp,0xfbe
  4313b4:	279cb5c0 	addiu	gp,gp,-19008
  4313b8:	0399e021 	addu	gp,gp,t9
  4313bc:	27bdffd0 	addiu	sp,sp,-48
  4313c0:	afbc0010 	sw	gp,16(sp)
  4313c4:	afbf0028 	sw	ra,40(sp)
  4313c8:	afbe0024 	sw	s8,36(sp)
  4313cc:	afbc0020 	sw	gp,32(sp)
  4313d0:	03a0f021 	move	s8,sp
  4313d4:	afc40030 	sw	a0,48(s8)
  4313d8:	afc50034 	sw	a1,52(s8)

/*
 *  compare two certificates by comparing their signatures
 */
static bool
same_cert(x509cert_t *a, x509cert_t *b)
{
    return a->signature.len == b->signature.len &&
  4313dc:	afc00018 	sw	zero,24(s8)
  4313e0:	8fc20030 	lw	v0,48(s8)
  4313e4:	00000000 	nop
  4313e8:	8c43008c 	lw	v1,140(v0)
  4313ec:	8fc20034 	lw	v0,52(s8)
  4313f0:	00000000 	nop
  4313f4:	8c42008c 	lw	v0,140(v0)
  4313f8:	00000000 	nop
  4313fc:	14620013 	bne	v1,v0,43144c <same_cert+0x9c>
  431400:	00000000 	nop
  431404:	8fc20030 	lw	v0,48(s8)
  431408:	00000000 	nop
  43140c:	8c440088 	lw	a0,136(v0)
  431410:	8fc20034 	lw	v0,52(s8)
  431414:	00000000 	nop
  431418:	8c450088 	lw	a1,136(v0)
  43141c:	8fc20034 	lw	v0,52(s8)
  431420:	00000000 	nop
  431424:	8c46008c 	lw	a2,140(v0)
  431428:	8f9985c8 	lw	t9,-31288(gp)
  43142c:	00000000 	nop
  431430:	0320f809 	jalr	t9
  431434:	00000000 	nop
  431438:	8fdc0010 	lw	gp,16(s8)
  43143c:	14400003 	bnez	v0,43144c <same_cert+0x9c>
  431440:	00000000 	nop
  431444:	24020001 	li	v0,1
  431448:	afc20018 	sw	v0,24(s8)
  43144c:	8fc20018 	lw	v0,24(s8)
  431450:	00000000 	nop
	memcmp(a->signature.ptr, b->signature.ptr, b->signature.len) == 0;
}
  431454:	03c0e821 	move	sp,s8
  431458:	8fbf0028 	lw	ra,40(sp)
  43145c:	8fbe0024 	lw	s8,36(sp)
  431460:	27bd0030 	addiu	sp,sp,48
  431464:	03e00008 	jr	ra
  431468:	00000000 	nop

0043146c <share_x509cert>:
  43146c:	3c1c0fbe 	lui	gp,0xfbe
  431470:	279cb504 	addiu	gp,gp,-19196
  431474:	0399e021 	addu	gp,gp,t9
  431478:	27bdffe8 	addiu	sp,sp,-24
  43147c:	afbc0000 	sw	gp,0(sp)
  431480:	afbe0014 	sw	s8,20(sp)
  431484:	afbc0010 	sw	gp,16(sp)
  431488:	03a0f021 	move	s8,sp
  43148c:	afc40018 	sw	a0,24(s8)

/*  for each link pointing to the certificate
 "  increase the count by one
 */
void
share_x509cert(x509cert_t *cert)
{
    if (cert != NULL)
  431490:	8fc20018 	lw	v0,24(s8)
  431494:	00000000 	nop
  431498:	10400009 	beqz	v0,4314c0 <share_x509cert+0x54>
  43149c:	00000000 	nop
 	cert->count++;
  4314a0:	8fc20018 	lw	v0,24(s8)
  4314a4:	00000000 	nop
  4314a8:	8c420008 	lw	v0,8(v0)
  4314ac:	00000000 	nop
  4314b0:	24430001 	addiu	v1,v0,1
  4314b4:	8fc20018 	lw	v0,24(s8)
  4314b8:	00000000 	nop
  4314bc:	ac430008 	sw	v1,8(v0)
}
  4314c0:	03c0e821 	move	sp,s8
  4314c4:	8fbe0014 	lw	s8,20(sp)
  4314c8:	27bd0018 	addiu	sp,sp,24
  4314cc:	03e00008 	jr	ra
  4314d0:	00000000 	nop

004314d4 <add_x509cert>:
  4314d4:	3c1c0fbe 	lui	gp,0xfbe
  4314d8:	279cb49c 	addiu	gp,gp,-19300
  4314dc:	0399e021 	addu	gp,gp,t9
  4314e0:	27bdffd0 	addiu	sp,sp,-48
  4314e4:	afbc0010 	sw	gp,16(sp)
  4314e8:	afbf0028 	sw	ra,40(sp)
  4314ec:	afbe0024 	sw	s8,36(sp)
  4314f0:	afbc0020 	sw	gp,32(sp)
  4314f4:	03a0f021 	move	s8,sp
  4314f8:	afc40030 	sw	a0,48(s8)

/*
 *  add a X.509 user/host certificate to the chained list
 */
x509cert_t*
add_x509cert(x509cert_t *cert)
{
    x509cert_t *c = x509certs;
  4314fc:	8f828018 	lw	v0,-32744(gp)
  431500:	00000000 	nop
  431504:	24421ab0 	addiu	v0,v0,6832
  431508:	8c420000 	lw	v0,0(v0)
  43150c:	00000000 	nop
  431510:	afc20018 	sw	v0,24(s8)

    while (c != NULL)
  431514:	8fc20018 	lw	v0,24(s8)
  431518:	00000000 	nop
  43151c:	14400003 	bnez	v0,43152c <add_x509cert+0x58>
  431520:	00000000 	nop
  431524:	1000001d 	b	43159c <add_x509cert+0xc8>
  431528:	00000000 	nop
    {
	if (same_cert(c, cert)) /* already in chain, free cert */
  43152c:	8fc40018 	lw	a0,24(s8)
  431530:	8fc50030 	lw	a1,48(s8)
  431534:	8f998030 	lw	t9,-32720(gp)
  431538:	00000000 	nop
  43153c:	273913b0 	addiu	t9,t9,5040
  431540:	00000000 	nop
  431544:	0320f809 	jalr	t9
  431548:	00000000 	nop
  43154c:	8fdc0010 	lw	gp,16(s8)
  431550:	1040000b 	beqz	v0,431580 <add_x509cert+0xac>
  431554:	00000000 	nop
	{
	    free_x509cert(cert);
  431558:	8fc40030 	lw	a0,48(s8)
  43155c:	8f998714 	lw	t9,-30956(gp)
  431560:	00000000 	nop
  431564:	0320f809 	jalr	t9
  431568:	00000000 	nop
  43156c:	8fdc0010 	lw	gp,16(s8)
  431570:	00000000 	nop
	    return c;
  431574:	8fc20018 	lw	v0,24(s8)
  431578:	10000016 	b	4315d4 <add_x509cert+0x100>
  43157c:	00000000 	nop
	}
	c = c->next;
  431580:	8fc20018 	lw	v0,24(s8)
  431584:	00000000 	nop
  431588:	8c420000 	lw	v0,0(v0)
  43158c:	00000000 	nop
  431590:	afc20018 	sw	v0,24(s8)
  431594:	1000ffdf 	b	431514 <add_x509cert+0x40>
  431598:	00000000 	nop
    }

    /* insert new cert at the root of the chain */
    cert->next = x509certs;
  43159c:	8f828018 	lw	v0,-32744(gp)
  4315a0:	00000000 	nop
  4315a4:	24421ab0 	addiu	v0,v0,6832
  4315a8:	8c420000 	lw	v0,0(v0)
  4315ac:	8fc30030 	lw	v1,48(s8)
  4315b0:	00000000 	nop
  4315b4:	ac620000 	sw	v0,0(v1)
    x509certs = cert;
  4315b8:	8fc20030 	lw	v0,48(s8)
  4315bc:	8f818018 	lw	at,-32744(gp)
  4315c0:	00000000 	nop
  4315c4:	24211ab0 	addiu	at,at,6832
  4315c8:	ac220000 	sw	v0,0(at)
    return cert;
  4315cc:	8fc20030 	lw	v0,48(s8)
  4315d0:	00000000 	nop
}
  4315d4:	03c0e821 	move	sp,s8
  4315d8:	8fbf0028 	lw	ra,40(sp)
  4315dc:	8fbe0024 	lw	s8,36(sp)
  4315e0:	27bd0030 	addiu	sp,sp,48
  4315e4:	03e00008 	jr	ra
  4315e8:	00000000 	nop

004315ec <same_keyid>:
  4315ec:	3c1c0fbe 	lui	gp,0xfbe
  4315f0:	279cb384 	addiu	gp,gp,-19580
  4315f4:	0399e021 	addu	gp,gp,t9
  4315f8:	27bdffd0 	addiu	sp,sp,-48
  4315fc:	afbc0010 	sw	gp,16(sp)
  431600:	afbf0028 	sw	ra,40(sp)
  431604:	afbe0024 	sw	s8,36(sp)
  431608:	afbc0020 	sw	gp,32(sp)
  43160c:	03a0f021 	move	s8,sp
  431610:	afc40030 	sw	a0,48(s8)
  431614:	afc50034 	sw	a1,52(s8)
  431618:	afc60038 	sw	a2,56(s8)
  43161c:	afc7003c 	sw	a3,60(s8)

/*
 * check for equality between two key identifiers
 */
static bool
same_keyid(chunk_t a, chunk_t b)
{
    if (a.ptr == NULL || b.ptr == NULL)
  431620:	8fc20030 	lw	v0,48(s8)
  431624:	00000000 	nop
  431628:	10400005 	beqz	v0,431640 <same_keyid+0x54>
  43162c:	00000000 	nop
  431630:	8fc20038 	lw	v0,56(s8)
  431634:	00000000 	nop
  431638:	14400004 	bnez	v0,43164c <same_keyid+0x60>
  43163c:	00000000 	nop
	return FALSE;
  431640:	00001021 	move	v0,zero
  431644:	10000019 	b	4316ac <same_keyid+0xc0>
  431648:	00000000 	nop

    /* both length and content must be equal */
    if (a.len != b.len)
  43164c:	8fc30034 	lw	v1,52(s8)
  431650:	8fc2003c 	lw	v0,60(s8)
  431654:	00000000 	nop
  431658:	10620004 	beq	v1,v0,43166c <same_keyid+0x80>
  43165c:	00000000 	nop
 	return FALSE;
  431660:	00001021 	move	v0,zero
  431664:	10000011 	b	4316ac <same_keyid+0xc0>
  431668:	00000000 	nop
    return memcmp(a.ptr, b.ptr, a.len) == 0;
  43166c:	8fc40030 	lw	a0,48(s8)
  431670:	8fc50038 	lw	a1,56(s8)
  431674:	8fc60034 	lw	a2,52(s8)
  431678:	8f9985c8 	lw	t9,-31288(gp)
  43167c:	00000000 	nop
  431680:	0320f809 	jalr	t9
  431684:	00000000 	nop
  431688:	8fdc0010 	lw	gp,16(s8)
  43168c:	afc20018 	sw	v0,24(s8)
  431690:	8fc30018 	lw	v1,24(s8)
  431694:	00000000 	nop
  431698:	38620000 	xori	v0,v1,0x0
  43169c:	2c420001 	sltiu	v0,v0,1
  4316a0:	afc20018 	sw	v0,24(s8)
  4316a4:	8fc20018 	lw	v0,24(s8)
  4316a8:	00000000 	nop
}
  4316ac:	03c0e821 	move	sp,s8
  4316b0:	8fbf0028 	lw	ra,40(sp)
  4316b4:	8fbe0024 	lw	s8,36(sp)
  4316b8:	27bd0030 	addiu	sp,sp,48
  4316bc:	03e00008 	jr	ra
  4316c0:	00000000 	nop

004316c4 <same_serial>:
  4316c4:	3c1c0fbe 	lui	gp,0xfbe
  4316c8:	279cb2ac 	addiu	gp,gp,-19796
  4316cc:	0399e021 	addu	gp,gp,t9
  4316d0:	27bdffd0 	addiu	sp,sp,-48
  4316d4:	afbc0010 	sw	gp,16(sp)
  4316d8:	afbf0028 	sw	ra,40(sp)
  4316dc:	afbe0024 	sw	s8,36(sp)
  4316e0:	afbc0020 	sw	gp,32(sp)
  4316e4:	03a0f021 	move	s8,sp
  4316e8:	afc40030 	sw	a0,48(s8)
  4316ec:	afc50034 	sw	a1,52(s8)
  4316f0:	afc60038 	sw	a2,56(s8)
  4316f4:	afc7003c 	sw	a3,60(s8)

/*
 * check for equality between two serial numbers
 */
static bool
same_serial(chunk_t a, chunk_t b)
{
    /* do not compare serial numbers if one of them is not defined */
    if (a.ptr == NULL || b.ptr == NULL)
  4316f8:	8fc20030 	lw	v0,48(s8)
  4316fc:	00000000 	nop
  431700:	10400005 	beqz	v0,431718 <same_serial+0x54>
  431704:	00000000 	nop
  431708:	8fc20038 	lw	v0,56(s8)
  43170c:	00000000 	nop
  431710:	14400004 	bnez	v0,431724 <same_serial+0x60>
  431714:	00000000 	nop
	return TRUE;
  431718:	24020001 	li	v0,1
  43171c:	10000019 	b	431784 <same_serial+0xc0>
  431720:	00000000 	nop

    /* both length and content must be equal */
    if (a.len != b.len)
  431724:	8fc30034 	lw	v1,52(s8)
  431728:	8fc2003c 	lw	v0,60(s8)
  43172c:	00000000 	nop
  431730:	10620004 	beq	v1,v0,431744 <same_serial+0x80>
  431734:	00000000 	nop
 	return FALSE;
  431738:	00001021 	move	v0,zero
  43173c:	10000011 	b	431784 <same_serial+0xc0>
  431740:	00000000 	nop
    return memcmp(a.ptr, b.ptr, a.len) == 0;
  431744:	8fc40030 	lw	a0,48(s8)
  431748:	8fc50038 	lw	a1,56(s8)
  43174c:	8fc60034 	lw	a2,52(s8)
  431750:	8f9985c8 	lw	t9,-31288(gp)
  431754:	00000000 	nop
  431758:	0320f809 	jalr	t9
  43175c:	00000000 	nop
  431760:	8fdc0010 	lw	gp,16(s8)
  431764:	afc20018 	sw	v0,24(s8)
  431768:	8fc30018 	lw	v1,24(s8)
  43176c:	00000000 	nop
  431770:	38620000 	xori	v0,v1,0x0
  431774:	2c420001 	sltiu	v0,v0,1
  431778:	afc20018 	sw	v0,24(s8)
  43177c:	8fc20018 	lw	v0,24(s8)
  431780:	00000000 	nop
}
  431784:	03c0e821 	move	sp,s8
  431788:	8fbf0028 	lw	ra,40(sp)
  43178c:	8fbe0024 	lw	s8,36(sp)
  431790:	27bd0030 	addiu	sp,sp,48
  431794:	03e00008 	jr	ra
  431798:	00000000 	nop

0043179c <get_x509cacert>:
  43179c:	3c1c0fbe 	lui	gp,0xfbe
  4317a0:	279cb1d4 	addiu	gp,gp,-20012
  4317a4:	0399e021 	addu	gp,gp,t9
  4317a8:	27bdffd0 	addiu	sp,sp,-48
  4317ac:	afbc0010 	sw	gp,16(sp)
  4317b0:	afbf0028 	sw	ra,40(sp)
  4317b4:	afbe0024 	sw	s8,36(sp)
  4317b8:	afbc0020 	sw	gp,32(sp)
  4317bc:	03a0f021 	move	s8,sp
  4317c0:	afc40030 	sw	a0,48(s8)
  4317c4:	afc50034 	sw	a1,52(s8)
  4317c8:	afc60038 	sw	a2,56(s8)
  4317cc:	afc7003c 	sw	a3,60(s8)

/*
 *  get the X.509 CA certificate with a given subject
 */
static x509cert_t*
get_x509cacert(chunk_t subject, chunk_t serial, chunk_t keyid)
{
    x509cert_t *cert = x509cacerts;
  4317d0:	8f828018 	lw	v0,-32744(gp)
  4317d4:	00000000 	nop
  4317d8:	24421ab4 	addiu	v0,v0,6836
  4317dc:	8c420000 	lw	v0,0(v0)
  4317e0:	00000000 	nop
  4317e4:	afc20018 	sw	v0,24(s8)
    x509cert_t *prev_cert = NULL;
  4317e8:	afc0001c 	sw	zero,28(s8)

    while(cert != NULL)
  4317ec:	8fc20018 	lw	v0,24(s8)
  4317f0:	00000000 	nop
  4317f4:	14400003 	bnez	v0,431804 <get_x509cacert+0x68>
  4317f8:	00000000 	nop
  4317fc:	10000059 	b	431964 <get_x509cacert+0x1c8>
  431800:	00000000 	nop
   {
	if ((keyid.ptr != NULL) ? same_keyid(keyid, cert->subjectKeyID)
	: (same_dn(cert->subject, subject) && same_serial(serial, cert->serialNumber)))
  431804:	8fc20040 	lw	v0,64(s8)
  431808:	00000000 	nop
  43180c:	10400011 	beqz	v0,431854 <get_x509cacert+0xb8>
  431810:	00000000 	nop
  431814:	8fc20018 	lw	v0,24(s8)
  431818:	8fc40040 	lw	a0,64(s8)
  43181c:	8fc50044 	lw	a1,68(s8)
  431820:	8c460060 	lw	a2,96(v0)
  431824:	8c470064 	lw	a3,100(v0)
  431828:	8f998030 	lw	t9,-32720(gp)
  43182c:	00000000 	nop
  431830:	273915ec 	addiu	t9,t9,5612
  431834:	00000000 	nop
  431838:	0320f809 	jalr	t9
  43183c:	00000000 	nop
  431840:	8fdc0010 	lw	gp,16(s8)
  431844:	14400020 	bnez	v0,4318c8 <get_x509cacert+0x12c>
  431848:	00000000 	nop
  43184c:	1000003b 	b	43193c <get_x509cacert+0x1a0>
  431850:	00000000 	nop
  431854:	8fc20018 	lw	v0,24(s8)
  431858:	00000000 	nop
  43185c:	8c440040 	lw	a0,64(v0)
  431860:	8c450044 	lw	a1,68(v0)
  431864:	8fc60030 	lw	a2,48(s8)
  431868:	8fc70034 	lw	a3,52(s8)
  43186c:	8f998604 	lw	t9,-31228(gp)
  431870:	00000000 	nop
  431874:	0320f809 	jalr	t9
  431878:	00000000 	nop
  43187c:	8fdc0010 	lw	gp,16(s8)
  431880:	1040002e 	beqz	v0,43193c <get_x509cacert+0x1a0>
  431884:	00000000 	nop
  431888:	8fc20018 	lw	v0,24(s8)
  43188c:	8fc40038 	lw	a0,56(s8)
  431890:	8fc5003c 	lw	a1,60(s8)
  431894:	8c460020 	lw	a2,32(v0)
  431898:	8c470024 	lw	a3,36(v0)
  43189c:	8f998030 	lw	t9,-32720(gp)
  4318a0:	00000000 	nop
  4318a4:	273916c4 	addiu	t9,t9,5828
  4318a8:	00000000 	nop
  4318ac:	0320f809 	jalr	t9
  4318b0:	00000000 	nop
  4318b4:	8fdc0010 	lw	gp,16(s8)
  4318b8:	14400003 	bnez	v0,4318c8 <get_x509cacert+0x12c>
  4318bc:	00000000 	nop
  4318c0:	1000001e 	b	43193c <get_x509cacert+0x1a0>
  4318c4:	00000000 	nop
	{
	    if (cert != x509cacerts)
  4318c8:	8fc30018 	lw	v1,24(s8)
  4318cc:	8f828018 	lw	v0,-32744(gp)
  4318d0:	00000000 	nop
  4318d4:	24421ab4 	addiu	v0,v0,6836
  4318d8:	8c420000 	lw	v0,0(v0)
  4318dc:	00000000 	nop
  4318e0:	10620013 	beq	v1,v0,431930 <get_x509cacert+0x194>
  4318e4:	00000000 	nop
	    {
		/* bring the certificate up front */
		prev_cert->next = cert->next;
  4318e8:	8fc20018 	lw	v0,24(s8)
  4318ec:	00000000 	nop
  4318f0:	8c430000 	lw	v1,0(v0)
  4318f4:	8fc2001c 	lw	v0,28(s8)
  4318f8:	00000000 	nop
  4318fc:	ac430000 	sw	v1,0(v0)
		cert->next = x509cacerts;
  431900:	8f838018 	lw	v1,-32744(gp)
  431904:	00000000 	nop
  431908:	24631ab4 	addiu	v1,v1,6836
  43190c:	8c630000 	lw	v1,0(v1)
  431910:	8fc20018 	lw	v0,24(s8)
  431914:	00000000 	nop
  431918:	ac430000 	sw	v1,0(v0)
		x509cacerts = cert;
  43191c:	8fc20018 	lw	v0,24(s8)
  431920:	8f818018 	lw	at,-32744(gp)
  431924:	00000000 	nop
  431928:	24211ab4 	addiu	at,at,6836
  43192c:	ac220000 	sw	v0,0(at)
	    }
	    return cert;
  431930:	8fc20018 	lw	v0,24(s8)
  431934:	1000000c 	b	431968 <get_x509cacert+0x1cc>
  431938:	00000000 	nop
	}
	prev_cert = cert;
  43193c:	8fc20018 	lw	v0,24(s8)
  431940:	00000000 	nop
  431944:	afc2001c 	sw	v0,28(s8)
	cert = cert->next;
  431948:	8fc20018 	lw	v0,24(s8)
  43194c:	00000000 	nop
  431950:	8c420000 	lw	v0,0(v0)
  431954:	00000000 	nop
  431958:	afc20018 	sw	v0,24(s8)
  43195c:	1000ffa3 	b	4317ec <get_x509cacert+0x50>
  431960:	00000000 	nop
    }
    return NULL;
  431964:	00001021 	move	v0,zero
}
  431968:	03c0e821 	move	sp,s8
  43196c:	8fbf0028 	lw	ra,40(sp)
  431970:	8fbe0024 	lw	s8,36(sp)
  431974:	27bd0030 	addiu	sp,sp,48
  431978:	03e00008 	jr	ra
  43197c:	00000000 	nop

00431980 <trusted_ca>:
  431980:	3c1c0fbe 	lui	gp,0xfbe
  431984:	279caff0 	addiu	gp,gp,-20496
  431988:	0399e021 	addu	gp,gp,t9
  43198c:	27bdffb8 	addiu	sp,sp,-72
  431990:	afbc0018 	sw	gp,24(sp)
  431994:	afbf0040 	sw	ra,64(sp)
  431998:	afbe003c 	sw	s8,60(sp)
  43199c:	afbc0038 	sw	gp,56(sp)
  4319a0:	03a0f021 	move	s8,sp
  4319a4:	afc40048 	sw	a0,72(s8)
  4319a8:	afc5004c 	sw	a1,76(s8)
  4319ac:	afc60050 	sw	a2,80(s8)
  4319b0:	afc70054 	sw	a3,84(s8)

#define MAX_CA_PATH_LEN		10

/*
 * Checks if CA a is trusted by CA b
 */
bool
trusted_ca(chunk_t a, chunk_t b, int *pathlen)
{
    bool match = FALSE;
  4319b4:	afc00020 	sw	zero,32(s8)

    /* number of hops from CA a to CA b */
    *pathlen = 0;
  4319b8:	8fc20058 	lw	v0,88(s8)
  4319bc:	00000000 	nop
  4319c0:	ac400000 	sw	zero,0(v0)

    /* no CA b specified -> any CA a is accepted */
    if (b.ptr == NULL)
  4319c4:	8fc20050 	lw	v0,80(s8)
  4319c8:	00000000 	nop
  4319cc:	14400004 	bnez	v0,4319e0 <trusted_ca+0x60>
  4319d0:	00000000 	nop
	return TRUE;
  4319d4:	24020001 	li	v0,1
  4319d8:	1000006c 	b	431b8c <trusted_ca+0x20c>
  4319dc:	00000000 	nop

    /* no CA a specified -> trust cannot be established */
    if (a.ptr == NULL)
  4319e0:	8fc20048 	lw	v0,72(s8)
  4319e4:	00000000 	nop
  4319e8:	14400004 	bnez	v0,4319fc <trusted_ca+0x7c>
  4319ec:	00000000 	nop
	return FALSE;
  4319f0:	00001021 	move	v0,zero
  4319f4:	10000065 	b	431b8c <trusted_ca+0x20c>
  4319f8:	00000000 	nop

    /* CA a equals CA b -> we have a match */
    if (same_dn(a, b))
  4319fc:	8fc40048 	lw	a0,72(s8)
  431a00:	8fc5004c 	lw	a1,76(s8)
  431a04:	8fc60050 	lw	a2,80(s8)
  431a08:	8fc70054 	lw	a3,84(s8)
  431a0c:	8f998604 	lw	t9,-31228(gp)
  431a10:	00000000 	nop
  431a14:	0320f809 	jalr	t9
  431a18:	00000000 	nop
  431a1c:	8fdc0018 	lw	gp,24(s8)
  431a20:	10400004 	beqz	v0,431a34 <trusted_ca+0xb4>
  431a24:	00000000 	nop
	return TRUE;
  431a28:	24020001 	li	v0,1
  431a2c:	10000057 	b	431b8c <trusted_ca+0x20c>
  431a30:	00000000 	nop
  431a34:	00000000 	nop

    /* CA a might be a subordinate CA of b */
    while ((*pathlen)++ < MAX_CA_PATH_LEN)
  431a38:	8fc30058 	lw	v1,88(s8)
  431a3c:	00000000 	nop
  431a40:	8c620000 	lw	v0,0(v1)
  431a44:	00000000 	nop
  431a48:	00402021 	move	a0,v0
  431a4c:	24420001 	addiu	v0,v0,1
  431a50:	ac620000 	sw	v0,0(v1)
  431a54:	2882000a 	slti	v0,a0,10
  431a58:	14400003 	bnez	v0,431a68 <trusted_ca+0xe8>
  431a5c:	00000000 	nop
  431a60:	10000048 	b	431b84 <trusted_ca+0x204>
  431a64:	00000000 	nop
    {
	x509cert_t *cacert = get_x509cacert(a, empty_chunk, empty_chunk);
  431a68:	8f828708 	lw	v0,-30968(gp)
  431a6c:	00000000 	nop
  431a70:	8c420000 	lw	v0,0(v0)
  431a74:	00000000 	nop
  431a78:	afa20010 	sw	v0,16(sp)
  431a7c:	8f828708 	lw	v0,-30968(gp)
  431a80:	00000000 	nop
  431a84:	8c420004 	lw	v0,4(v0)
  431a88:	00000000 	nop
  431a8c:	afa20014 	sw	v0,20(sp)
  431a90:	8fc40048 	lw	a0,72(s8)
  431a94:	8fc5004c 	lw	a1,76(s8)
  431a98:	8f868708 	lw	a2,-30968(gp)
  431a9c:	00000000 	nop
  431aa0:	8cc60000 	lw	a2,0(a2)
  431aa4:	8f878708 	lw	a3,-30968(gp)
  431aa8:	00000000 	nop
  431aac:	8ce70004 	lw	a3,4(a3)
  431ab0:	8f998030 	lw	t9,-32720(gp)
  431ab4:	00000000 	nop
  431ab8:	2739179c 	addiu	t9,t9,6044
  431abc:	00000000 	nop
  431ac0:	0320f809 	jalr	t9
  431ac4:	00000000 	nop
  431ac8:	8fdc0018 	lw	gp,24(s8)
  431acc:	afc20024 	sw	v0,36(s8)

	/* cacert not found or self-signed root cacert-> exit */
	if (cacert == NULL || same_dn(cacert->issuer, a))
  431ad0:	8fc20024 	lw	v0,36(s8)
  431ad4:	00000000 	nop
  431ad8:	1040002a 	beqz	v0,431b84 <trusted_ca+0x204>
  431adc:	00000000 	nop
  431ae0:	8fc20024 	lw	v0,36(s8)
  431ae4:	00000000 	nop
  431ae8:	8c440030 	lw	a0,48(v0)
  431aec:	8c450034 	lw	a1,52(v0)
  431af0:	8fc60048 	lw	a2,72(s8)
  431af4:	8fc7004c 	lw	a3,76(s8)
  431af8:	8f998604 	lw	t9,-31228(gp)
  431afc:	00000000 	nop
  431b00:	0320f809 	jalr	t9
  431b04:	00000000 	nop
  431b08:	8fdc0018 	lw	gp,24(s8)
  431b0c:	1440001d 	bnez	v0,431b84 <trusted_ca+0x204>
  431b10:	00000000 	nop
	    break;

	/* does the issuer of CA a match CA b? */
	match = same_dn(cacert->issuer, b);
  431b14:	8fc20024 	lw	v0,36(s8)
  431b18:	00000000 	nop
  431b1c:	8c440030 	lw	a0,48(v0)
  431b20:	8c450034 	lw	a1,52(v0)
  431b24:	8fc60050 	lw	a2,80(s8)
  431b28:	8fc70054 	lw	a3,84(s8)
  431b2c:	8f998604 	lw	t9,-31228(gp)
  431b30:	00000000 	nop
  431b34:	0320f809 	jalr	t9
  431b38:	00000000 	nop
  431b3c:	8fdc0018 	lw	gp,24(s8)
  431b40:	afc20020 	sw	v0,32(s8)

	/* we have a match and exit the loop */
	if (match)
  431b44:	8fc20020 	lw	v0,32(s8)
  431b48:	00000000 	nop
  431b4c:	10400003 	beqz	v0,431b5c <trusted_ca+0x1dc>
  431b50:	00000000 	nop
	    break;
  431b54:	1000000b 	b	431b84 <trusted_ca+0x204>
  431b58:	00000000 	nop

	/* go one level up in the CA chain */
	a = cacert->issuer;
  431b5c:	8fc20024 	lw	v0,36(s8)
  431b60:	00000000 	nop
  431b64:	8c430030 	lw	v1,48(v0)
  431b68:	00000000 	nop
  431b6c:	afc30048 	sw	v1,72(s8)
  431b70:	8c420034 	lw	v0,52(v0)
  431b74:	00000000 	nop
  431b78:	afc2004c 	sw	v0,76(s8)
  431b7c:	1000ffae 	b	431a38 <trusted_ca+0xb8>
  431b80:	00000000 	nop
    }
    return match;
  431b84:	8fc20020 	lw	v0,32(s8)
  431b88:	00000000 	nop
}
  431b8c:	03c0e821 	move	sp,s8
  431b90:	8fbf0040 	lw	ra,64(sp)
  431b94:	8fbe003c 	lw	s8,60(sp)
  431b98:	27bd0048 	addiu	sp,sp,72
  431b9c:	03e00008 	jr	ra
  431ba0:	00000000 	nop

00431ba4 <match_requested_ca>:
  431ba4:	3c1c0fbe 	lui	gp,0xfbe
  431ba8:	279cadcc 	addiu	gp,gp,-21044
  431bac:	0399e021 	addu	gp,gp,t9
  431bb0:	27bdffc8 	addiu	sp,sp,-56
  431bb4:	afbc0018 	sw	gp,24(sp)
  431bb8:	afbf0030 	sw	ra,48(sp)
  431bbc:	afbe002c 	sw	s8,44(sp)
  431bc0:	afbc0028 	sw	gp,40(sp)
  431bc4:	03a0f021 	move	s8,sp
  431bc8:	afc40038 	sw	a0,56(s8)
  431bcc:	afc5003c 	sw	a1,60(s8)
  431bd0:	afc60040 	sw	a2,64(s8)
  431bd4:	afc70044 	sw	a3,68(s8)

/*
 * does our CA match one of the requested CAs?
 */
bool
match_requested_ca(generalName_t *requested_ca, chunk_t our_ca, int *our_pathlen)
{
    /* if no ca is requested than any ca will match */
    if (requested_ca == NULL)
  431bd8:	8fc20038 	lw	v0,56(s8)
  431bdc:	00000000 	nop
  431be0:	14400007 	bnez	v0,431c00 <match_requested_ca+0x5c>
  431be4:	00000000 	nop
    {
	*our_pathlen = 0;
  431be8:	8fc20044 	lw	v0,68(s8)
  431bec:	00000000 	nop
  431bf0:	ac400000 	sw	zero,0(v0)
	return TRUE;
  431bf4:	24020001 	li	v0,1
  431bf8:	10000031 	b	431cc0 <match_requested_ca+0x11c>
  431bfc:	00000000 	nop
    }

    *our_pathlen = MAX_CA_PATH_LEN + 1;
  431c00:	2403000b 	li	v1,11
  431c04:	8fc20044 	lw	v0,68(s8)
  431c08:	00000000 	nop
  431c0c:	ac430000 	sw	v1,0(v0)

    while (requested_ca != NULL)
  431c10:	8fc20038 	lw	v0,56(s8)
  431c14:	00000000 	nop
  431c18:	14400003 	bnez	v0,431c28 <match_requested_ca+0x84>
  431c1c:	00000000 	nop
  431c20:	10000022 	b	431cac <match_requested_ca+0x108>
  431c24:	00000000 	nop
    {
	int pathlen;

	if (trusted_ca(our_ca, requested_ca->name, &pathlen)
	&& pathlen < *our_pathlen)
  431c28:	8fc20038 	lw	v0,56(s8)
  431c2c:	27c30020 	addiu	v1,s8,32
  431c30:	afa30010 	sw	v1,16(sp)
  431c34:	8fc4003c 	lw	a0,60(s8)
  431c38:	8fc50040 	lw	a1,64(s8)
  431c3c:	8c460008 	lw	a2,8(v0)
  431c40:	8c47000c 	lw	a3,12(v0)
  431c44:	8f9989fc 	lw	t9,-30212(gp)
  431c48:	00000000 	nop
  431c4c:	0320f809 	jalr	t9
  431c50:	00000000 	nop
  431c54:	8fdc0018 	lw	gp,24(s8)
  431c58:	1040000d 	beqz	v0,431c90 <match_requested_ca+0xec>
  431c5c:	00000000 	nop
  431c60:	8fc20044 	lw	v0,68(s8)
  431c64:	00000000 	nop
  431c68:	8c430000 	lw	v1,0(v0)
  431c6c:	8fc20020 	lw	v0,32(s8)
  431c70:	00000000 	nop
  431c74:	0043102a 	slt	v0,v0,v1
  431c78:	10400005 	beqz	v0,431c90 <match_requested_ca+0xec>
  431c7c:	00000000 	nop
	    *our_pathlen = pathlen;
  431c80:	8fc30020 	lw	v1,32(s8)
  431c84:	8fc20044 	lw	v0,68(s8)
  431c88:	00000000 	nop
  431c8c:	ac430000 	sw	v1,0(v0)
	requested_ca = requested_ca->next;
  431c90:	8fc20038 	lw	v0,56(s8)
  431c94:	00000000 	nop
  431c98:	8c420000 	lw	v0,0(v0)
  431c9c:	00000000 	nop
  431ca0:	afc20038 	sw	v0,56(s8)
  431ca4:	1000ffda 	b	431c10 <match_requested_ca+0x6c>
  431ca8:	00000000 	nop
    }

    return *our_pathlen <= MAX_CA_PATH_LEN;
  431cac:	8fc20044 	lw	v0,68(s8)
  431cb0:	00000000 	nop
  431cb4:	8c420000 	lw	v0,0(v0)
  431cb8:	00000000 	nop
  431cbc:	2842000b 	slti	v0,v0,11
}
  431cc0:	03c0e821 	move	sp,s8
  431cc4:	8fbf0030 	lw	ra,48(sp)
  431cc8:	8fbe002c 	lw	s8,44(sp)
  431ccc:	27bd0038 	addiu	sp,sp,56
  431cd0:	03e00008 	jr	ra
  431cd4:	00000000 	nop

00431cd8 <get_x509crl>:
  431cd8:	3c1c0fbe 	lui	gp,0xfbe
  431cdc:	279cac98 	addiu	gp,gp,-21352
  431ce0:	0399e021 	addu	gp,gp,t9
  431ce4:	27bdffd0 	addiu	sp,sp,-48
  431ce8:	afbc0010 	sw	gp,16(sp)
  431cec:	afbf0028 	sw	ra,40(sp)
  431cf0:	afbe0024 	sw	s8,36(sp)
  431cf4:	afbc0020 	sw	gp,32(sp)
  431cf8:	03a0f021 	move	s8,sp
  431cfc:	afc40030 	sw	a0,48(s8)
  431d00:	afc50034 	sw	a1,52(s8)
  431d04:	afc60038 	sw	a2,56(s8)
  431d08:	afc7003c 	sw	a3,60(s8)

/*
 *  get the X.509 CRL with a given issuer
 */
static x509crl_t*
get_x509crl(chunk_t issuer, chunk_t serial, chunk_t keyid)
{
    x509crl_t *crl = x509crls;
  431d0c:	8f828018 	lw	v0,-32744(gp)
  431d10:	00000000 	nop
  431d14:	24421ab8 	addiu	v0,v0,6840
  431d18:	8c420000 	lw	v0,0(v0)
  431d1c:	00000000 	nop
  431d20:	afc20018 	sw	v0,24(s8)
    x509crl_t *prev_crl = NULL;
  431d24:	afc0001c 	sw	zero,28(s8)

    while(crl != NULL)
  431d28:	8fc20018 	lw	v0,24(s8)
  431d2c:	00000000 	nop
  431d30:	14400003 	bnez	v0,431d40 <get_x509crl+0x68>
  431d34:	00000000 	nop
  431d38:	1000005f 	b	431eb8 <get_x509crl+0x1e0>
  431d3c:	00000000 	nop
    {
	if ((keyid.ptr != NULL && crl->authKeyID.ptr != NULL)
	? same_keyid(keyid, crl->authKeyID)
	: (same_dn(crl->issuer, issuer) && same_serial(serial, crl->authKeySerialNumber)))
  431d40:	8fc20040 	lw	v0,64(s8)
  431d44:	00000000 	nop
  431d48:	10400017 	beqz	v0,431da8 <get_x509crl+0xd0>
  431d4c:	00000000 	nop
  431d50:	8fc20018 	lw	v0,24(s8)
  431d54:	00000000 	nop
  431d58:	8c42003c 	lw	v0,60(v0)
  431d5c:	00000000 	nop
  431d60:	10400011 	beqz	v0,431da8 <get_x509crl+0xd0>
  431d64:	00000000 	nop
  431d68:	8fc20018 	lw	v0,24(s8)
  431d6c:	8fc40040 	lw	a0,64(s8)
  431d70:	8fc50044 	lw	a1,68(s8)
  431d74:	8c46003c 	lw	a2,60(v0)
  431d78:	8c470040 	lw	a3,64(v0)
  431d7c:	8f998030 	lw	t9,-32720(gp)
  431d80:	00000000 	nop
  431d84:	273915ec 	addiu	t9,t9,5612
  431d88:	00000000 	nop
  431d8c:	0320f809 	jalr	t9
  431d90:	00000000 	nop
  431d94:	8fdc0010 	lw	gp,16(s8)
  431d98:	14400020 	bnez	v0,431e1c <get_x509crl+0x144>
  431d9c:	00000000 	nop
  431da0:	1000003b 	b	431e90 <get_x509crl+0x1b8>
  431da4:	00000000 	nop
  431da8:	8fc20018 	lw	v0,24(s8)
  431dac:	00000000 	nop
  431db0:	8c440028 	lw	a0,40(v0)
  431db4:	8c45002c 	lw	a1,44(v0)
  431db8:	8fc60030 	lw	a2,48(s8)
  431dbc:	8fc70034 	lw	a3,52(s8)
  431dc0:	8f998604 	lw	t9,-31228(gp)
  431dc4:	00000000 	nop
  431dc8:	0320f809 	jalr	t9
  431dcc:	00000000 	nop
  431dd0:	8fdc0010 	lw	gp,16(s8)
  431dd4:	1040002e 	beqz	v0,431e90 <get_x509crl+0x1b8>
  431dd8:	00000000 	nop
  431ddc:	8fc20018 	lw	v0,24(s8)
  431de0:	8fc40038 	lw	a0,56(s8)
  431de4:	8fc5003c 	lw	a1,60(s8)
  431de8:	8c460044 	lw	a2,68(v0)
  431dec:	8c470048 	lw	a3,72(v0)
  431df0:	8f998030 	lw	t9,-32720(gp)
  431df4:	00000000 	nop
  431df8:	273916c4 	addiu	t9,t9,5828
  431dfc:	00000000 	nop
  431e00:	0320f809 	jalr	t9
  431e04:	00000000 	nop
  431e08:	8fdc0010 	lw	gp,16(s8)
  431e0c:	14400003 	bnez	v0,431e1c <get_x509crl+0x144>
  431e10:	00000000 	nop
  431e14:	1000001e 	b	431e90 <get_x509crl+0x1b8>
  431e18:	00000000 	nop
	{
	    if (crl != x509crls)
  431e1c:	8fc30018 	lw	v1,24(s8)
  431e20:	8f828018 	lw	v0,-32744(gp)
  431e24:	00000000 	nop
  431e28:	24421ab8 	addiu	v0,v0,6840
  431e2c:	8c420000 	lw	v0,0(v0)
  431e30:	00000000 	nop
  431e34:	10620013 	beq	v1,v0,431e84 <get_x509crl+0x1ac>
  431e38:	00000000 	nop
	    {
		/* bring the CRL up front */
		prev_crl->next = crl->next;
  431e3c:	8fc20018 	lw	v0,24(s8)
  431e40:	00000000 	nop
  431e44:	8c430000 	lw	v1,0(v0)
  431e48:	8fc2001c 	lw	v0,28(s8)
  431e4c:	00000000 	nop
  431e50:	ac430000 	sw	v1,0(v0)
		crl->next = x509crls;
  431e54:	8f838018 	lw	v1,-32744(gp)
  431e58:	00000000 	nop
  431e5c:	24631ab8 	addiu	v1,v1,6840
  431e60:	8c630000 	lw	v1,0(v1)
  431e64:	8fc20018 	lw	v0,24(s8)
  431e68:	00000000 	nop
  431e6c:	ac430000 	sw	v1,0(v0)
		x509crls = crl;
  431e70:	8fc20018 	lw	v0,24(s8)
  431e74:	8f818018 	lw	at,-32744(gp)
  431e78:	00000000 	nop
  431e7c:	24211ab8 	addiu	at,at,6840
  431e80:	ac220000 	sw	v0,0(at)
	    }
	    return crl;
  431e84:	8fc20018 	lw	v0,24(s8)
  431e88:	1000000c 	b	431ebc <get_x509crl+0x1e4>
  431e8c:	00000000 	nop
	}
	prev_crl = crl;
  431e90:	8fc20018 	lw	v0,24(s8)
  431e94:	00000000 	nop
  431e98:	afc2001c 	sw	v0,28(s8)
	crl = crl->next;
  431e9c:	8fc20018 	lw	v0,24(s8)
  431ea0:	00000000 	nop
  431ea4:	8c420000 	lw	v0,0(v0)
  431ea8:	00000000 	nop
  431eac:	afc20018 	sw	v0,24(s8)
  431eb0:	1000ff9d 	b	431d28 <get_x509crl+0x50>
  431eb4:	00000000 	nop
    }
    return NULL;
  431eb8:	00001021 	move	v0,zero
}
  431ebc:	03c0e821 	move	sp,s8
  431ec0:	8fbf0028 	lw	ra,40(sp)
  431ec4:	8fbe0024 	lw	s8,36(sp)
  431ec8:	27bd0030 	addiu	sp,sp,48
  431ecc:	03e00008 	jr	ra
  431ed0:	00000000 	nop

00431ed4 <get_mycert>:
  431ed4:	3c1c0fbe 	lui	gp,0xfbe
  431ed8:	279caa9c 	addiu	gp,gp,-21860
  431edc:	0399e021 	addu	gp,gp,t9
  431ee0:	27bdffe0 	addiu	sp,sp,-32
  431ee4:	afbc0000 	sw	gp,0(sp)
  431ee8:	afbe001c 	sw	s8,28(sp)
  431eec:	afbc0018 	sw	gp,24(sp)
  431ef0:	03a0f021 	move	s8,sp
  431ef4:	afc40020 	sw	a0,32(s8)
  431ef8:	afc50024 	sw	a1,36(s8)

/*  Send my certificate either defined and loaded via
 *  /etc/ipsec.conf or by default loaded from /etc/x509cert.der
 *  (deprecated for X.509 certificates)
 */
bool
get_mycert(cert_t *mycert, x509cert_t *cert)
{
    *mycert = my_default_cert;
  431efc:	8fc40020 	lw	a0,32(s8)
  431f00:	8f838018 	lw	v1,-32744(gp)
  431f04:	00000000 	nop
  431f08:	24636a50 	addiu	v1,v1,27216
  431f0c:	00000000 	nop
  431f10:	8c620000 	lw	v0,0(v1)
  431f14:	00000000 	nop
  431f18:	ac820000 	sw	v0,0(a0)
  431f1c:	8c620004 	lw	v0,4(v1)
  431f20:	00000000 	nop
  431f24:	ac820004 	sw	v0,4(a0)
  431f28:	8c620008 	lw	v0,8(v1)
  431f2c:	00000000 	nop
  431f30:	ac820008 	sw	v0,8(a0)

    if (cert != NULL)
  431f34:	8fc20024 	lw	v0,36(s8)
  431f38:	00000000 	nop
  431f3c:	1040000e 	beqz	v0,431f78 <get_mycert+0xa4>
  431f40:	00000000 	nop
    {
	mycert->type = CERT_X509_SIGNATURE;
  431f44:	24030004 	li	v1,4
  431f48:	8fc20020 	lw	v0,32(s8)
  431f4c:	00000000 	nop
  431f50:	a0430000 	sb	v1,0(v0)
	mycert->cert = cert->certificate;
  431f54:	8fc40020 	lw	a0,32(s8)
  431f58:	8fc30024 	lw	v1,36(s8)
  431f5c:	00000000 	nop
  431f60:	8c62000c 	lw	v0,12(v1)
  431f64:	00000000 	nop
  431f68:	ac820004 	sw	v0,4(a0)
  431f6c:	8c620010 	lw	v0,16(v1)
  431f70:	00000000 	nop
  431f74:	ac820008 	sw	v0,8(a0)
    }
    return mycert->type != CERT_NONE;
  431f78:	8fc20020 	lw	v0,32(s8)
  431f7c:	00000000 	nop
  431f80:	90420000 	lbu	v0,0(v0)
  431f84:	00000000 	nop
  431f88:	0002102b 	sltu	v0,zero,v0
}
  431f8c:	03c0e821 	move	sp,s8
  431f90:	8fbe001c 	lw	s8,28(sp)
  431f94:	27bd0020 	addiu	sp,sp,32
  431f98:	03e00008 	jr	ra
  431f9c:	00000000 	nop

00431fa0 <free_generalNames>:
  431fa0:	3c1c0fbe 	lui	gp,0xfbe
  431fa4:	279ca9d0 	addiu	gp,gp,-22064
  431fa8:	0399e021 	addu	gp,gp,t9
  431fac:	27bdffd0 	addiu	sp,sp,-48
  431fb0:	afbc0010 	sw	gp,16(sp)
  431fb4:	afbf0028 	sw	ra,40(sp)
  431fb8:	afbe0024 	sw	s8,36(sp)
  431fbc:	afbc0020 	sw	gp,32(sp)
  431fc0:	03a0f021 	move	s8,sp
  431fc4:	afc40030 	sw	a0,48(s8)
  431fc8:	afc50034 	sw	a1,52(s8)

/*
 *  free the dynamic memory used to store generalNames
 */
void
free_generalNames(generalName_t* gn, bool free_name)
{
    while (gn != NULL)
  431fcc:	8fc20030 	lw	v0,48(s8)
  431fd0:	00000000 	nop
  431fd4:	14400003 	bnez	v0,431fe4 <free_generalNames+0x44>
  431fd8:	00000000 	nop
  431fdc:	1000001e 	b	432058 <free_generalNames+0xb8>
  431fe0:	00000000 	nop
    {
	generalName_t *gn_top = gn;
  431fe4:	8fc20030 	lw	v0,48(s8)
  431fe8:	00000000 	nop
  431fec:	afc20018 	sw	v0,24(s8)
	if (free_name)
  431ff0:	8fc20034 	lw	v0,52(s8)
  431ff4:	00000000 	nop
  431ff8:	1040000a 	beqz	v0,432024 <free_generalNames+0x84>
  431ffc:	00000000 	nop
	{
	    pfree(gn->name.ptr);
  432000:	8fc20030 	lw	v0,48(s8)
  432004:	00000000 	nop
  432008:	8c440008 	lw	a0,8(v0)
  43200c:	8f998094 	lw	t9,-32620(gp)
  432010:	00000000 	nop
  432014:	0320f809 	jalr	t9
  432018:	00000000 	nop
  43201c:	8fdc0010 	lw	gp,16(s8)
  432020:	00000000 	nop
	}
	gn = gn->next;
  432024:	8fc20030 	lw	v0,48(s8)
  432028:	00000000 	nop
  43202c:	8c420000 	lw	v0,0(v0)
  432030:	00000000 	nop
  432034:	afc20030 	sw	v0,48(s8)
	pfree(gn_top);
  432038:	8fc40018 	lw	a0,24(s8)
  43203c:	8f998094 	lw	t9,-32620(gp)
  432040:	00000000 	nop
  432044:	0320f809 	jalr	t9
  432048:	00000000 	nop
  43204c:	8fdc0010 	lw	gp,16(s8)
  432050:	1000ffde 	b	431fcc <free_generalNames+0x2c>
  432054:	00000000 	nop
    }
}
  432058:	03c0e821 	move	sp,s8
  43205c:	8fbf0028 	lw	ra,40(sp)
  432060:	8fbe0024 	lw	s8,36(sp)
  432064:	27bd0030 	addiu	sp,sp,48
  432068:	03e00008 	jr	ra
  43206c:	00000000 	nop

00432070 <free_x509cert>:
  432070:	3c1c0fbe 	lui	gp,0xfbe
  432074:	279ca900 	addiu	gp,gp,-22272
  432078:	0399e021 	addu	gp,gp,t9
  43207c:	27bdffd8 	addiu	sp,sp,-40
  432080:	afbc0010 	sw	gp,16(sp)
  432084:	afbf0020 	sw	ra,32(sp)
  432088:	afbe001c 	sw	s8,28(sp)
  43208c:	afbc0018 	sw	gp,24(sp)
  432090:	03a0f021 	move	s8,sp
  432094:	afc40028 	sw	a0,40(s8)

/*
 *  free a X.509 certificate
 */
void
free_x509cert(x509cert_t *cert)
{
    if (cert != NULL)
  432098:	8fc20028 	lw	v0,40(s8)
  43209c:	00000000 	nop
  4320a0:	1040002c 	beqz	v0,432154 <free_x509cert+0xe4>
  4320a4:	00000000 	nop
    {
	free_generalNames(cert->subjectAltName, FALSE);
  4320a8:	8fc20028 	lw	v0,40(s8)
  4320ac:	00000000 	nop
  4320b0:	8c440078 	lw	a0,120(v0)
  4320b4:	00002821 	move	a1,zero
  4320b8:	8f9987ac 	lw	t9,-30804(gp)
  4320bc:	00000000 	nop
  4320c0:	0320f809 	jalr	t9
  4320c4:	00000000 	nop
  4320c8:	8fdc0010 	lw	gp,16(s8)
  4320cc:	00000000 	nop
	free_generalNames(cert->crlDistributionPoints, FALSE);
  4320d0:	8fc20028 	lw	v0,40(s8)
  4320d4:	00000000 	nop
  4320d8:	8c44007c 	lw	a0,124(v0)
  4320dc:	00002821 	move	a1,zero
  4320e0:	8f9987ac 	lw	t9,-30804(gp)
  4320e4:	00000000 	nop
  4320e8:	0320f809 	jalr	t9
  4320ec:	00000000 	nop
  4320f0:	8fdc0010 	lw	gp,16(s8)
  4320f4:	00000000 	nop
	if (cert->certificate.ptr != NULL)
  4320f8:	8fc20028 	lw	v0,40(s8)
  4320fc:	00000000 	nop
  432100:	8c42000c 	lw	v0,12(v0)
  432104:	00000000 	nop
  432108:	1040000a 	beqz	v0,432134 <free_x509cert+0xc4>
  43210c:	00000000 	nop
	    pfree(cert->certificate.ptr);
  432110:	8fc20028 	lw	v0,40(s8)
  432114:	00000000 	nop
  432118:	8c44000c 	lw	a0,12(v0)
  43211c:	8f998094 	lw	t9,-32620(gp)
  432120:	00000000 	nop
  432124:	0320f809 	jalr	t9
  432128:	00000000 	nop
  43212c:	8fdc0010 	lw	gp,16(s8)
  432130:	00000000 	nop
	pfree(cert);
  432134:	8fc40028 	lw	a0,40(s8)
  432138:	8f998094 	lw	t9,-32620(gp)
  43213c:	00000000 	nop
  432140:	0320f809 	jalr	t9
  432144:	00000000 	nop
  432148:	8fdc0010 	lw	gp,16(s8)
  43214c:	00000000 	nop
	cert = NULL;
  432150:	afc00028 	sw	zero,40(s8)
    }
}
  432154:	03c0e821 	move	sp,s8
  432158:	8fbf0020 	lw	ra,32(sp)
  43215c:	8fbe001c 	lw	s8,28(sp)
  432160:	27bd0028 	addiu	sp,sp,40
  432164:	03e00008 	jr	ra
  432168:	00000000 	nop

0043216c <release_x509cert>:
  43216c:	3c1c0fbe 	lui	gp,0xfbe
  432170:	279ca804 	addiu	gp,gp,-22524
  432174:	0399e021 	addu	gp,gp,t9
  432178:	27bdffd0 	addiu	sp,sp,-48
  43217c:	afbc0010 	sw	gp,16(sp)
  432180:	afbf0028 	sw	ra,40(sp)
  432184:	afbe0024 	sw	s8,36(sp)
  432188:	afbc0020 	sw	gp,32(sp)
  43218c:	03a0f021 	move	s8,sp
  432190:	afc40030 	sw	a0,48(s8)

/*  release of a certificate decreases the count by one
 "  the certificate is freed when the counter reaches zero
 */
void
release_x509cert(x509cert_t *cert)
{
    if (cert != NULL && --cert->count == 0)
  432194:	8fc20030 	lw	v0,48(s8)
  432198:	00000000 	nop
  43219c:	1040002e 	beqz	v0,432258 <release_x509cert+0xec>
  4321a0:	00000000 	nop
  4321a4:	8fc20030 	lw	v0,48(s8)
  4321a8:	00000000 	nop
  4321ac:	8c420008 	lw	v0,8(v0)
  4321b0:	00000000 	nop
  4321b4:	2442ffff 	addiu	v0,v0,-1
  4321b8:	00401821 	move	v1,v0
  4321bc:	8fc20030 	lw	v0,48(s8)
  4321c0:	00000000 	nop
  4321c4:	ac430008 	sw	v1,8(v0)
  4321c8:	14600023 	bnez	v1,432258 <release_x509cert+0xec>
  4321cc:	00000000 	nop
    {
	x509cert_t **pp = &x509certs;
  4321d0:	8f828018 	lw	v0,-32744(gp)
  4321d4:	00000000 	nop
  4321d8:	24421ab0 	addiu	v0,v0,6832
  4321dc:	00000000 	nop
  4321e0:	afc20018 	sw	v0,24(s8)
	while (*pp != cert)
  4321e4:	8fc20018 	lw	v0,24(s8)
  4321e8:	00000000 	nop
  4321ec:	8c430000 	lw	v1,0(v0)
  4321f0:	8fc20030 	lw	v0,48(s8)
  4321f4:	00000000 	nop
  4321f8:	14620003 	bne	v1,v0,432208 <release_x509cert+0x9c>
  4321fc:	00000000 	nop
  432200:	10000008 	b	432224 <release_x509cert+0xb8>
  432204:	00000000 	nop
	    pp = &(*pp)->next;
  432208:	8fc20018 	lw	v0,24(s8)
  43220c:	00000000 	nop
  432210:	8c420000 	lw	v0,0(v0)
  432214:	00000000 	nop
  432218:	afc20018 	sw	v0,24(s8)
  43221c:	1000fff1 	b	4321e4 <release_x509cert+0x78>
  432220:	00000000 	nop
        *pp = cert->next;
  432224:	8fc20030 	lw	v0,48(s8)
  432228:	00000000 	nop
  43222c:	8c430000 	lw	v1,0(v0)
  432230:	8fc20018 	lw	v0,24(s8)
  432234:	00000000 	nop
  432238:	ac430000 	sw	v1,0(v0)
	free_x509cert(cert);
  43223c:	8fc40030 	lw	a0,48(s8)
  432240:	8f998714 	lw	t9,-30956(gp)
  432244:	00000000 	nop
  432248:	0320f809 	jalr	t9
  43224c:	00000000 	nop
  432250:	8fdc0010 	lw	gp,16(s8)
  432254:	00000000 	nop
    }
}
  432258:	03c0e821 	move	sp,s8
  43225c:	8fbf0028 	lw	ra,40(sp)
  432260:	8fbe0024 	lw	s8,36(sp)
  432264:	27bd0030 	addiu	sp,sp,48
  432268:	03e00008 	jr	ra
  43226c:	00000000 	nop

00432270 <free_first_cacert>:
  432270:	3c1c0fbe 	lui	gp,0xfbe
  432274:	279ca700 	addiu	gp,gp,-22784
  432278:	0399e021 	addu	gp,gp,t9
  43227c:	27bdffd0 	addiu	sp,sp,-48
  432280:	afbc0010 	sw	gp,16(sp)
  432284:	afbf0028 	sw	ra,40(sp)
  432288:	afbe0024 	sw	s8,36(sp)
  43228c:	afbc0020 	sw	gp,32(sp)
  432290:	03a0f021 	move	s8,sp

/*
 *  free the first CA certificate in the chain
 */
static void
free_first_cacert(void)
{
    x509cert_t *first = x509cacerts;
  432294:	8f828018 	lw	v0,-32744(gp)
  432298:	00000000 	nop
  43229c:	24421ab4 	addiu	v0,v0,6836
  4322a0:	8c420000 	lw	v0,0(v0)
  4322a4:	00000000 	nop
  4322a8:	afc20018 	sw	v0,24(s8)
    x509cacerts = first->next;
  4322ac:	8fc20018 	lw	v0,24(s8)
  4322b0:	00000000 	nop
  4322b4:	8c420000 	lw	v0,0(v0)
  4322b8:	8f818018 	lw	at,-32744(gp)
  4322bc:	00000000 	nop
  4322c0:	24211ab4 	addiu	at,at,6836
  4322c4:	ac220000 	sw	v0,0(at)
    free_x509cert(first);
  4322c8:	8fc40018 	lw	a0,24(s8)
  4322cc:	8f998714 	lw	t9,-30956(gp)
  4322d0:	00000000 	nop
  4322d4:	0320f809 	jalr	t9
  4322d8:	00000000 	nop
  4322dc:	8fdc0010 	lw	gp,16(s8)
  4322e0:	00000000 	nop
}
  4322e4:	03c0e821 	move	sp,s8
  4322e8:	8fbf0028 	lw	ra,40(sp)
  4322ec:	8fbe0024 	lw	s8,36(sp)
  4322f0:	27bd0030 	addiu	sp,sp,48
  4322f4:	03e00008 	jr	ra
  4322f8:	00000000 	nop

004322fc <free_cacerts>:
  4322fc:	3c1c0fbe 	lui	gp,0xfbe
  432300:	279ca674 	addiu	gp,gp,-22924
  432304:	0399e021 	addu	gp,gp,t9
  432308:	27bdffd8 	addiu	sp,sp,-40
  43230c:	afbc0010 	sw	gp,16(sp)
  432310:	afbf0020 	sw	ra,32(sp)
  432314:	afbe001c 	sw	s8,28(sp)
  432318:	afbc0018 	sw	gp,24(sp)
  43231c:	03a0f021 	move	s8,sp
  432320:	00000000 	nop

/*
 *  free  all CA certificates
 */
void
free_cacerts(void)
{
    while (x509cacerts != NULL)
  432324:	8f828018 	lw	v0,-32744(gp)
  432328:	00000000 	nop
  43232c:	24421ab4 	addiu	v0,v0,6836
  432330:	8c420000 	lw	v0,0(v0)
  432334:	00000000 	nop
  432338:	14400003 	bnez	v0,432348 <free_cacerts+0x4c>
  43233c:	00000000 	nop
  432340:	1000000a 	b	43236c <free_cacerts+0x70>
  432344:	00000000 	nop
        free_first_cacert();
  432348:	8f998030 	lw	t9,-32720(gp)
  43234c:	00000000 	nop
  432350:	27392270 	addiu	t9,t9,8816
  432354:	00000000 	nop
  432358:	0320f809 	jalr	t9
  43235c:	00000000 	nop
  432360:	8fdc0010 	lw	gp,16(s8)
  432364:	1000ffef 	b	432324 <free_cacerts+0x28>
  432368:	00000000 	nop
}
  43236c:	03c0e821 	move	sp,s8
  432370:	8fbf0020 	lw	ra,32(sp)
  432374:	8fbe001c 	lw	s8,28(sp)
  432378:	27bd0028 	addiu	sp,sp,40
  43237c:	03e00008 	jr	ra
  432380:	00000000 	nop

00432384 <free_revoked_certs>:
  432384:	3c1c0fbe 	lui	gp,0xfbe
  432388:	279ca5ec 	addiu	gp,gp,-23060
  43238c:	0399e021 	addu	gp,gp,t9
  432390:	27bdffd0 	addiu	sp,sp,-48
  432394:	afbc0010 	sw	gp,16(sp)
  432398:	afbf0028 	sw	ra,40(sp)
  43239c:	afbe0024 	sw	s8,36(sp)
  4323a0:	afbc0020 	sw	gp,32(sp)
  4323a4:	03a0f021 	move	s8,sp
  4323a8:	afc40030 	sw	a0,48(s8)

/*
 *  free the dynamic memory used to store revoked certificates
 */
static void
free_revoked_certs(revokedCert_t* revokedCerts)
{
    while (revokedCerts != NULL)
  4323ac:	8fc20030 	lw	v0,48(s8)
  4323b0:	00000000 	nop
  4323b4:	14400003 	bnez	v0,4323c4 <free_revoked_certs+0x40>
  4323b8:	00000000 	nop
  4323bc:	10000011 	b	432404 <free_revoked_certs+0x80>
  4323c0:	00000000 	nop
    {
	revokedCert_t * revokedCert = revokedCerts;
  4323c4:	8fc20030 	lw	v0,48(s8)
  4323c8:	00000000 	nop
  4323cc:	afc20018 	sw	v0,24(s8)
	revokedCerts = revokedCert->next;
  4323d0:	8fc20018 	lw	v0,24(s8)
  4323d4:	00000000 	nop
  4323d8:	8c420000 	lw	v0,0(v0)
  4323dc:	00000000 	nop
  4323e0:	afc20030 	sw	v0,48(s8)
	pfree(revokedCert);
  4323e4:	8fc40018 	lw	a0,24(s8)
  4323e8:	8f998094 	lw	t9,-32620(gp)
  4323ec:	00000000 	nop
  4323f0:	0320f809 	jalr	t9
  4323f4:	00000000 	nop
  4323f8:	8fdc0010 	lw	gp,16(s8)
  4323fc:	1000ffeb 	b	4323ac <free_revoked_certs+0x28>
  432400:	00000000 	nop
    }
}
  432404:	03c0e821 	move	sp,s8
  432408:	8fbf0028 	lw	ra,40(sp)
  43240c:	8fbe0024 	lw	s8,36(sp)
  432410:	27bd0030 	addiu	sp,sp,48
  432414:	03e00008 	jr	ra
  432418:	00000000 	nop

0043241c <free_crl>:
  43241c:	3c1c0fbe 	lui	gp,0xfbe
  432420:	279ca554 	addiu	gp,gp,-23212
  432424:	0399e021 	addu	gp,gp,t9
  432428:	27bdffd8 	addiu	sp,sp,-40
  43242c:	afbc0010 	sw	gp,16(sp)
  432430:	afbf0020 	sw	ra,32(sp)
  432434:	afbe001c 	sw	s8,28(sp)
  432438:	afbc0018 	sw	gp,24(sp)
  43243c:	03a0f021 	move	s8,sp
  432440:	afc40028 	sw	a0,40(s8)

/*
 *  free the dynamic memory used to store CRLs
 */
void
free_crl(x509crl_t *crl)
{
    free_revoked_certs(crl->revokedCertificates);
  432444:	8fc20028 	lw	v0,40(s8)
  432448:	00000000 	nop
  43244c:	8c440038 	lw	a0,56(v0)
  432450:	8f998030 	lw	t9,-32720(gp)
  432454:	00000000 	nop
  432458:	27392384 	addiu	t9,t9,9092
  43245c:	00000000 	nop
  432460:	0320f809 	jalr	t9
  432464:	00000000 	nop
  432468:	8fdc0010 	lw	gp,16(s8)
  43246c:	00000000 	nop
    free_generalNames(crl->distributionPoints, TRUE);
  432470:	8fc20028 	lw	v0,40(s8)
  432474:	00000000 	nop
  432478:	8c440008 	lw	a0,8(v0)
  43247c:	24050001 	li	a1,1
  432480:	8f9987ac 	lw	t9,-30804(gp)
  432484:	00000000 	nop
  432488:	0320f809 	jalr	t9
  43248c:	00000000 	nop
  432490:	8fdc0010 	lw	gp,16(s8)
  432494:	00000000 	nop
    pfree(crl->certificateList.ptr);
  432498:	8fc20028 	lw	v0,40(s8)
  43249c:	00000000 	nop
  4324a0:	8c44000c 	lw	a0,12(v0)
  4324a4:	8f998094 	lw	t9,-32620(gp)
  4324a8:	00000000 	nop
  4324ac:	0320f809 	jalr	t9
  4324b0:	00000000 	nop
  4324b4:	8fdc0010 	lw	gp,16(s8)
  4324b8:	00000000 	nop
    pfree(crl);
  4324bc:	8fc40028 	lw	a0,40(s8)
  4324c0:	8f998094 	lw	t9,-32620(gp)
  4324c4:	00000000 	nop
  4324c8:	0320f809 	jalr	t9
  4324cc:	00000000 	nop
  4324d0:	8fdc0010 	lw	gp,16(s8)
  4324d4:	00000000 	nop
}
  4324d8:	03c0e821 	move	sp,s8
  4324dc:	8fbf0020 	lw	ra,32(sp)
  4324e0:	8fbe001c 	lw	s8,28(sp)
  4324e4:	27bd0028 	addiu	sp,sp,40
  4324e8:	03e00008 	jr	ra
  4324ec:	00000000 	nop

004324f0 <free_first_crl>:
  4324f0:	3c1c0fbe 	lui	gp,0xfbe
  4324f4:	279ca480 	addiu	gp,gp,-23424
  4324f8:	0399e021 	addu	gp,gp,t9
  4324fc:	27bdffd0 	addiu	sp,sp,-48
  432500:	afbc0010 	sw	gp,16(sp)
  432504:	afbf0028 	sw	ra,40(sp)
  432508:	afbe0024 	sw	s8,36(sp)
  43250c:	afbc0020 	sw	gp,32(sp)
  432510:	03a0f021 	move	s8,sp



/*
 *  free the dynamic memory used to store CRLs
 */
static void
free_first_crl(void)
{
    x509crl_t * crl = x509crls;
  432514:	8f828018 	lw	v0,-32744(gp)
  432518:	00000000 	nop
  43251c:	24421ab8 	addiu	v0,v0,6840
  432520:	8c420000 	lw	v0,0(v0)
  432524:	00000000 	nop
  432528:	afc20018 	sw	v0,24(s8)
    x509crls = crl->next;
  43252c:	8fc20018 	lw	v0,24(s8)
  432530:	00000000 	nop
  432534:	8c420000 	lw	v0,0(v0)
  432538:	8f818018 	lw	at,-32744(gp)
  43253c:	00000000 	nop
  432540:	24211ab8 	addiu	at,at,6840
  432544:	ac220000 	sw	v0,0(at)
    free_revoked_certs(crl->revokedCertificates);
  432548:	8fc20018 	lw	v0,24(s8)
  43254c:	00000000 	nop
  432550:	8c440038 	lw	a0,56(v0)
  432554:	8f998030 	lw	t9,-32720(gp)
  432558:	00000000 	nop
  43255c:	27392384 	addiu	t9,t9,9092
  432560:	00000000 	nop
  432564:	0320f809 	jalr	t9
  432568:	00000000 	nop
  43256c:	8fdc0010 	lw	gp,16(s8)
  432570:	00000000 	nop
    pfree(crl->certificateList.ptr);
  432574:	8fc20018 	lw	v0,24(s8)
  432578:	00000000 	nop
  43257c:	8c44000c 	lw	a0,12(v0)
  432580:	8f998094 	lw	t9,-32620(gp)
  432584:	00000000 	nop
  432588:	0320f809 	jalr	t9
  43258c:	00000000 	nop
  432590:	8fdc0010 	lw	gp,16(s8)
  432594:	00000000 	nop
    pfree(crl);
  432598:	8fc40018 	lw	a0,24(s8)
  43259c:	8f998094 	lw	t9,-32620(gp)
  4325a0:	00000000 	nop
  4325a4:	0320f809 	jalr	t9
  4325a8:	00000000 	nop
  4325ac:	8fdc0010 	lw	gp,16(s8)
  4325b0:	00000000 	nop
}
  4325b4:	03c0e821 	move	sp,s8
  4325b8:	8fbf0028 	lw	ra,40(sp)
  4325bc:	8fbe0024 	lw	s8,36(sp)
  4325c0:	27bd0030 	addiu	sp,sp,48
  4325c4:	03e00008 	jr	ra
  4325c8:	00000000 	nop

004325cc <free_crls>:
  4325cc:	3c1c0fbe 	lui	gp,0xfbe
  4325d0:	279ca3a4 	addiu	gp,gp,-23644
  4325d4:	0399e021 	addu	gp,gp,t9
  4325d8:	27bdffd8 	addiu	sp,sp,-40
  4325dc:	afbc0010 	sw	gp,16(sp)
  4325e0:	afbf0020 	sw	ra,32(sp)
  4325e4:	afbe001c 	sw	s8,28(sp)
  4325e8:	afbc0018 	sw	gp,24(sp)
  4325ec:	03a0f021 	move	s8,sp
  4325f0:	00000000 	nop

void
free_crls(void)
{
    while (x509crls != NULL)
  4325f4:	8f828018 	lw	v0,-32744(gp)
  4325f8:	00000000 	nop
  4325fc:	24421ab8 	addiu	v0,v0,6840
  432600:	8c420000 	lw	v0,0(v0)
  432604:	00000000 	nop
  432608:	14400003 	bnez	v0,432618 <free_crls+0x4c>
  43260c:	00000000 	nop
  432610:	1000000a 	b	43263c <free_crls+0x70>
  432614:	00000000 	nop
	free_first_crl();
  432618:	8f998030 	lw	t9,-32720(gp)
  43261c:	00000000 	nop
  432620:	273924f0 	addiu	t9,t9,9456
  432624:	00000000 	nop
  432628:	0320f809 	jalr	t9
  43262c:	00000000 	nop
  432630:	8fdc0010 	lw	gp,16(s8)
  432634:	1000ffef 	b	4325f4 <free_crls+0x28>
  432638:	00000000 	nop
}
  43263c:	03c0e821 	move	sp,s8
  432640:	8fbf0020 	lw	ra,32(sp)
  432644:	8fbe001c 	lw	s8,28(sp)
  432648:	27bd0028 	addiu	sp,sp,40
  43264c:	03e00008 	jr	ra
  432650:	00000000 	nop

00432654 <free_mycert>:
  432654:	3c1c0fbe 	lui	gp,0xfbe
  432658:	279ca31c 	addiu	gp,gp,-23780
  43265c:	0399e021 	addu	gp,gp,t9
  432660:	27bdffd8 	addiu	sp,sp,-40
  432664:	afbc0010 	sw	gp,16(sp)
  432668:	afbf0020 	sw	ra,32(sp)
  43266c:	afbe001c 	sw	s8,28(sp)
  432670:	afbc0018 	sw	gp,24(sp)
  432674:	03a0f021 	move	s8,sp

/*
 *  free the dynamic memory used to store my X.509 or OpenPGP certificate
 */
void
free_mycert(void)
{
    freeanychunk(my_default_cert.cert);
  432678:	8f828018 	lw	v0,-32744(gp)
  43267c:	00000000 	nop
  432680:	24426a50 	addiu	v0,v0,27216
  432684:	8c420004 	lw	v0,4(v0)
  432688:	00000000 	nop
  43268c:	1040000b 	beqz	v0,4326bc <free_mycert+0x68>
  432690:	00000000 	nop
  432694:	8f848018 	lw	a0,-32744(gp)
  432698:	00000000 	nop
  43269c:	24846a50 	addiu	a0,a0,27216
  4326a0:	8c840004 	lw	a0,4(a0)
  4326a4:	8f998094 	lw	t9,-32620(gp)
  4326a8:	00000000 	nop
  4326ac:	0320f809 	jalr	t9
  4326b0:	00000000 	nop
  4326b4:	8fdc0010 	lw	gp,16(s8)
  4326b8:	00000000 	nop
  4326bc:	8f818018 	lw	at,-32744(gp)
  4326c0:	00000000 	nop
  4326c4:	24216a50 	addiu	at,at,27216
  4326c8:	ac200004 	sw	zero,4(at)
}
  4326cc:	03c0e821 	move	sp,s8
  4326d0:	8fbf0020 	lw	ra,32(sp)
  4326d4:	8fbe001c 	lw	s8,28(sp)
  4326d8:	27bd0028 	addiu	sp,sp,40
  4326dc:	03e00008 	jr	ra
  4326e0:	00000000 	nop

004326e4 <file_select>:
  4326e4:	3c1c0fbe 	lui	gp,0xfbe
  4326e8:	279ca28c 	addiu	gp,gp,-23924
  4326ec:	0399e021 	addu	gp,gp,t9
  4326f0:	27bdffd0 	addiu	sp,sp,-48
  4326f4:	afbc0010 	sw	gp,16(sp)
  4326f8:	afbf0028 	sw	ra,40(sp)
  4326fc:	afbe0024 	sw	s8,36(sp)
  432700:	afbc0020 	sw	gp,32(sp)
  432704:	03a0f021 	move	s8,sp
  432708:	afc40030 	sw	a0,48(s8)

/*
 *  Filter eliminating the directory entries '.' and '..'
 */
static int
file_select(const struct dirent *entry)
{
    return strcmp(entry->d_name, "." ) &&
  43270c:	afc00018 	sw	zero,24(s8)
  432710:	8fc20030 	lw	v0,48(s8)
  432714:	00000000 	nop
  432718:	2442000b 	addiu	v0,v0,11
  43271c:	00402021 	move	a0,v0
  432720:	8f85802c 	lw	a1,-32724(gp)
  432724:	00000000 	nop
  432728:	24a5c8cc 	addiu	a1,a1,-14132
  43272c:	8f998428 	lw	t9,-31704(gp)
  432730:	00000000 	nop
  432734:	0320f809 	jalr	t9
  432738:	00000000 	nop
  43273c:	8fdc0010 	lw	gp,16(s8)
  432740:	10400011 	beqz	v0,432788 <file_select+0xa4>
  432744:	00000000 	nop
  432748:	8fc20030 	lw	v0,48(s8)
  43274c:	00000000 	nop
  432750:	2442000b 	addiu	v0,v0,11
  432754:	00402021 	move	a0,v0
  432758:	8f85802c 	lw	a1,-32724(gp)
  43275c:	00000000 	nop
  432760:	24a5c8d0 	addiu	a1,a1,-14128
  432764:	8f998428 	lw	t9,-31704(gp)
  432768:	00000000 	nop
  43276c:	0320f809 	jalr	t9
  432770:	00000000 	nop
  432774:	8fdc0010 	lw	gp,16(s8)
  432778:	10400003 	beqz	v0,432788 <file_select+0xa4>
  43277c:	00000000 	nop
  432780:	24020001 	li	v0,1
  432784:	afc20018 	sw	v0,24(s8)
  432788:	8fc20018 	lw	v0,24(s8)
  43278c:	00000000 	nop
	   strcmp(entry->d_name, "..");
}
  432790:	03c0e821 	move	sp,s8
  432794:	8fbf0028 	lw	ra,40(sp)
  432798:	8fbe0024 	lw	s8,36(sp)
  43279c:	27bd0030 	addiu	sp,sp,48
  4327a0:	03e00008 	jr	ra
  4327a4:	00000000 	nop

004327a8 <store_x509certs>:
  4327a8:	3c1c0fbe 	lui	gp,0xfbe
  4327ac:	279ca1c8 	addiu	gp,gp,-24120
  4327b0:	0399e021 	addu	gp,gp,t9
  4327b4:	27bdffb8 	addiu	sp,sp,-72
  4327b8:	afbc0018 	sw	gp,24(sp)
  4327bc:	afbf0040 	sw	ra,64(sp)
  4327c0:	afbe003c 	sw	s8,60(sp)
  4327c4:	afbc0038 	sw	gp,56(sp)
  4327c8:	03a0f021 	move	s8,sp
  4327cc:	afc40048 	sw	a0,72(s8)
  4327d0:	afc5004c 	sw	a1,76(s8)

/*
 * stores a chained list of user/host and CA certs
 */
void
store_x509certs(x509cert_t **firstcert, bool strict)
{
    x509cert_t **pp = firstcert;
  4327d4:	8fc20048 	lw	v0,72(s8)
  4327d8:	00000000 	nop
  4327dc:	afc20020 	sw	v0,32(s8)

    /* first store CA certs */

    while (*pp != NULL)
  4327e0:	8fc20020 	lw	v0,32(s8)
  4327e4:	00000000 	nop
  4327e8:	8c420000 	lw	v0,0(v0)
  4327ec:	00000000 	nop
  4327f0:	14400003 	bnez	v0,432800 <store_x509certs+0x58>
  4327f4:	00000000 	nop
  4327f8:	1000008e 	b	432a34 <store_x509certs+0x28c>
  4327fc:	00000000 	nop
    {
	x509cert_t *cert = *pp;
  432800:	8fc20020 	lw	v0,32(s8)
  432804:	00000000 	nop
  432808:	8c420000 	lw	v0,0(v0)
  43280c:	00000000 	nop
  432810:	afc20024 	sw	v0,36(s8)

	if (cert->isCA)
  432814:	8fc20024 	lw	v0,36(s8)
  432818:	00000000 	nop
  43281c:	8c42005c 	lw	v0,92(v0)
  432820:	00000000 	nop
  432824:	1040007e 	beqz	v0,432a20 <store_x509certs+0x278>
  432828:	00000000 	nop
	{
	    /* we don't accept self-signed CA certs */
	    if (same_dn(cert->issuer, cert->subject))
  43282c:	8fc20024 	lw	v0,36(s8)
  432830:	8fc30024 	lw	v1,36(s8)
  432834:	8c440030 	lw	a0,48(v0)
  432838:	8c450034 	lw	a1,52(v0)
  43283c:	8c660040 	lw	a2,64(v1)
  432840:	8c670044 	lw	a3,68(v1)
  432844:	8f998604 	lw	t9,-31228(gp)
  432848:	00000000 	nop
  43284c:	0320f809 	jalr	t9
  432850:	00000000 	nop
  432854:	8fdc0018 	lw	gp,24(s8)
  432858:	10400018 	beqz	v0,4328bc <store_x509certs+0x114>
  43285c:	00000000 	nop
	    {
		plog("self-signed cacert rejected");
  432860:	8f84802c 	lw	a0,-32724(gp)
  432864:	00000000 	nop
  432868:	2484c8d4 	addiu	a0,a0,-14124
  43286c:	8f998abc 	lw	t9,-30020(gp)
  432870:	00000000 	nop
  432874:	0320f809 	jalr	t9
  432878:	00000000 	nop
  43287c:	8fdc0018 	lw	gp,24(s8)
  432880:	00000000 	nop
	        *pp = cert->next;
  432884:	8fc20024 	lw	v0,36(s8)
  432888:	00000000 	nop
  43288c:	8c430000 	lw	v1,0(v0)
  432890:	8fc20020 	lw	v0,32(s8)
  432894:	00000000 	nop
  432898:	ac430000 	sw	v1,0(v0)
		free_x509cert(cert);
  43289c:	8fc40024 	lw	a0,36(s8)
  4328a0:	8f998714 	lw	t9,-30956(gp)
  4328a4:	00000000 	nop
  4328a8:	0320f809 	jalr	t9
  4328ac:	00000000 	nop
  4328b0:	8fdc0018 	lw	gp,24(s8)
  4328b4:	1000ffca 	b	4327e0 <store_x509certs+0x38>
  4328b8:	00000000 	nop
	    }
	    else
	    {
		if (get_x509cacert(cert->subject, cert->serialNumber
		,cert->subjectKeyID))
  4328bc:	8fc50024 	lw	a1,36(s8)
  4328c0:	8fc70024 	lw	a3,36(s8)
  4328c4:	8fc30024 	lw	v1,36(s8)
  4328c8:	00000000 	nop
  4328cc:	8c620060 	lw	v0,96(v1)
  4328d0:	00000000 	nop
  4328d4:	afa20010 	sw	v0,16(sp)
  4328d8:	8c620064 	lw	v0,100(v1)
  4328dc:	00000000 	nop
  4328e0:	afa20014 	sw	v0,20(sp)
  4328e4:	8ca40040 	lw	a0,64(a1)
  4328e8:	8ca50044 	lw	a1,68(a1)
  4328ec:	8ce60020 	lw	a2,32(a3)
  4328f0:	8ce70024 	lw	a3,36(a3)
  4328f4:	8f998030 	lw	t9,-32720(gp)
  4328f8:	00000000 	nop
  4328fc:	2739179c 	addiu	t9,t9,6044
  432900:	00000000 	nop
  432904:	0320f809 	jalr	t9
  432908:	00000000 	nop
  43290c:	8fdc0018 	lw	gp,24(s8)
  432910:	10400019 	beqz	v0,432978 <store_x509certs+0x1d0>
  432914:	00000000 	nop
		{
		    free_first_cacert();
  432918:	8f998030 	lw	t9,-32720(gp)
  43291c:	00000000 	nop
  432920:	27392270 	addiu	t9,t9,8816
  432924:	00000000 	nop
  432928:	0320f809 	jalr	t9
  43292c:	00000000 	nop
  432930:	8fdc0018 	lw	gp,24(s8)
  432934:	00000000 	nop
		    DBG(DBG_PARSING,
  432938:	8f8284f8 	lw	v0,-31496(gp)
  43293c:	00000000 	nop
  432940:	8c420000 	lw	v0,0(v0)
  432944:	00000000 	nop
  432948:	30420004 	andi	v0,v0,0x4
  43294c:	1040000a 	beqz	v0,432978 <store_x509certs+0x1d0>
  432950:	00000000 	nop
  432954:	8f84802c 	lw	a0,-32724(gp)
  432958:	00000000 	nop
  43295c:	2484c8f0 	addiu	a0,a0,-14096
  432960:	8f9983b8 	lw	t9,-31816(gp)
  432964:	00000000 	nop
  432968:	0320f809 	jalr	t9
  43296c:	00000000 	nop
  432970:	8fdc0018 	lw	gp,24(s8)
  432974:	00000000 	nop
			DBG_log("existing cacert deleted")
		    )
		}
		share_x509cert(cert);  /* set count to one */
  432978:	8fc40024 	lw	a0,36(s8)
  43297c:	8f9986b0 	lw	t9,-31056(gp)
  432980:	00000000 	nop
  432984:	0320f809 	jalr	t9
  432988:	00000000 	nop
  43298c:	8fdc0018 	lw	gp,24(s8)
  432990:	00000000 	nop

		/* insert into chained cacert list*/
	        *pp = cert->next;
  432994:	8fc20024 	lw	v0,36(s8)
  432998:	00000000 	nop
  43299c:	8c430000 	lw	v1,0(v0)
  4329a0:	8fc20020 	lw	v0,32(s8)
  4329a4:	00000000 	nop
  4329a8:	ac430000 	sw	v1,0(v0)
		cert->next = x509cacerts;
  4329ac:	8f838018 	lw	v1,-32744(gp)
  4329b0:	00000000 	nop
  4329b4:	24631ab4 	addiu	v1,v1,6836
  4329b8:	8c630000 	lw	v1,0(v1)
  4329bc:	8fc20024 	lw	v0,36(s8)
  4329c0:	00000000 	nop
  4329c4:	ac430000 	sw	v1,0(v0)
		x509cacerts = cert;
  4329c8:	8fc20024 	lw	v0,36(s8)
  4329cc:	8f818018 	lw	at,-32744(gp)
  4329d0:	00000000 	nop
  4329d4:	24211ab4 	addiu	at,at,6836
  4329d8:	ac220000 	sw	v0,0(at)
		DBG(DBG_PARSING,
  4329dc:	8f8284f8 	lw	v0,-31496(gp)
  4329e0:	00000000 	nop
  4329e4:	8c420000 	lw	v0,0(v0)
  4329e8:	00000000 	nop
  4329ec:	30420004 	andi	v0,v0,0x4
  4329f0:	1040ff7b 	beqz	v0,4327e0 <store_x509certs+0x38>
  4329f4:	00000000 	nop
  4329f8:	8f84802c 	lw	a0,-32724(gp)
  4329fc:	00000000 	nop
  432a00:	2484c908 	addiu	a0,a0,-14072
  432a04:	8f9983b8 	lw	t9,-31816(gp)
  432a08:	00000000 	nop
  432a0c:	0320f809 	jalr	t9
  432a10:	00000000 	nop
  432a14:	8fdc0018 	lw	gp,24(s8)
  432a18:	1000ff71 	b	4327e0 <store_x509certs+0x38>
  432a1c:	00000000 	nop
		    DBG_log("cacert inserted")
		)
	    }
	}
	else
	    pp = &cert->next;
  432a20:	8fc20024 	lw	v0,36(s8)
  432a24:	00000000 	nop
  432a28:	afc20020 	sw	v0,32(s8)
  432a2c:	1000ff6c 	b	4327e0 <store_x509certs+0x38>
  432a30:	00000000 	nop
    }

    /* now verify user/host certificates */

    pp = firstcert;
  432a34:	8fc20048 	lw	v0,72(s8)
  432a38:	00000000 	nop
  432a3c:	afc20020 	sw	v0,32(s8)

    while (*pp != NULL)
  432a40:	8fc20020 	lw	v0,32(s8)
  432a44:	00000000 	nop
  432a48:	8c420000 	lw	v0,0(v0)
  432a4c:	00000000 	nop
  432a50:	14400003 	bnez	v0,432a60 <store_x509certs+0x2b8>
  432a54:	00000000 	nop
  432a58:	10000041 	b	432b60 <store_x509certs+0x3b8>
  432a5c:	00000000 	nop
    {
	time_t valid_until;
	x509cert_t *cert = *pp;
  432a60:	8fc20020 	lw	v0,32(s8)
  432a64:	00000000 	nop
  432a68:	8c420000 	lw	v0,0(v0)
  432a6c:	00000000 	nop
  432a70:	afc20028 	sw	v0,40(s8)

	if (verify_x509cert(cert, strict, &valid_until))
  432a74:	8fc40028 	lw	a0,40(s8)
  432a78:	8fc5004c 	lw	a1,76(s8)
  432a7c:	27c60024 	addiu	a2,s8,36
  432a80:	8f998258 	lw	t9,-32168(gp)
  432a84:	00000000 	nop
  432a88:	0320f809 	jalr	t9
  432a8c:	00000000 	nop
  432a90:	8fdc0018 	lw	gp,24(s8)
  432a94:	1040001b 	beqz	v0,432b04 <store_x509certs+0x35c>
  432a98:	00000000 	nop
	{
	    DBG(DBG_PARSING,
  432a9c:	8f8284f8 	lw	v0,-31496(gp)
  432aa0:	00000000 	nop
  432aa4:	8c420000 	lw	v0,0(v0)
  432aa8:	00000000 	nop
  432aac:	30420004 	andi	v0,v0,0x4
  432ab0:	1040000a 	beqz	v0,432adc <store_x509certs+0x334>
  432ab4:	00000000 	nop
  432ab8:	8f84802c 	lw	a0,-32724(gp)
  432abc:	00000000 	nop
  432ac0:	2484c918 	addiu	a0,a0,-14056
  432ac4:	8f9983b8 	lw	t9,-31816(gp)
  432ac8:	00000000 	nop
  432acc:	0320f809 	jalr	t9
  432ad0:	00000000 	nop
  432ad4:	8fdc0018 	lw	gp,24(s8)
  432ad8:	00000000 	nop
		DBG_log("Public key validated")
	    )
	    add_x509_public_key(cert, valid_until, DAL_SIGNED);
  432adc:	8fc40028 	lw	a0,40(s8)
  432ae0:	8fc50024 	lw	a1,36(s8)
  432ae4:	24060002 	li	a2,2
  432ae8:	8f998980 	lw	t9,-30336(gp)
  432aec:	00000000 	nop
  432af0:	0320f809 	jalr	t9
  432af4:	00000000 	nop
  432af8:	8fdc0018 	lw	gp,24(s8)
  432afc:	1000000a 	b	432b28 <store_x509certs+0x380>
  432b00:	00000000 	nop
	}
	else
	{
	    plog("X.509 certificate rejected");
  432b04:	8f84802c 	lw	a0,-32724(gp)
  432b08:	00000000 	nop
  432b0c:	2484c930 	addiu	a0,a0,-14032
  432b10:	8f998abc 	lw	t9,-30020(gp)
  432b14:	00000000 	nop
  432b18:	0320f809 	jalr	t9
  432b1c:	00000000 	nop
  432b20:	8fdc0018 	lw	gp,24(s8)
  432b24:	00000000 	nop
	}
	*pp = cert->next;
  432b28:	8fc20028 	lw	v0,40(s8)
  432b2c:	00000000 	nop
  432b30:	8c430000 	lw	v1,0(v0)
  432b34:	8fc20020 	lw	v0,32(s8)
  432b38:	00000000 	nop
  432b3c:	ac430000 	sw	v1,0(v0)
	free_x509cert(cert);
  432b40:	8fc40028 	lw	a0,40(s8)
  432b44:	8f998714 	lw	t9,-30956(gp)
  432b48:	00000000 	nop
  432b4c:	0320f809 	jalr	t9
  432b50:	00000000 	nop
  432b54:	8fdc0018 	lw	gp,24(s8)
  432b58:	1000ffb9 	b	432a40 <store_x509certs+0x298>
  432b5c:	00000000 	nop
    }
}
  432b60:	03c0e821 	move	sp,s8
  432b64:	8fbf0040 	lw	ra,64(sp)
  432b68:	8fbe003c 	lw	s8,60(sp)
  432b6c:	27bd0048 	addiu	sp,sp,72
  432b70:	03e00008 	jr	ra
  432b74:	00000000 	nop

00432b78 <load_x509cert>:
  432b78:	3c1c0fbe 	lui	gp,0xfbe
  432b7c:	279c9df8 	addiu	gp,gp,-25096
  432b80:	0399e021 	addu	gp,gp,t9
  432b84:	27bdffc0 	addiu	sp,sp,-64
  432b88:	afbc0010 	sw	gp,16(sp)
  432b8c:	afbf0038 	sw	ra,56(sp)
  432b90:	afbe0034 	sw	s8,52(sp)
  432b94:	afbc0030 	sw	gp,48(sp)
  432b98:	03a0f021 	move	s8,sp
  432b9c:	afc40040 	sw	a0,64(s8)
  432ba0:	afc50044 	sw	a1,68(s8)

/*
 *  Loads a X.509 certificate
 */
x509cert_t*
load_x509cert(const char* filename, const char* label)
{
    chunk_t blob = empty_chunk;
  432ba4:	8f828708 	lw	v0,-30968(gp)
  432ba8:	00000000 	nop
  432bac:	8c420000 	lw	v0,0(v0)
  432bb0:	00000000 	nop
  432bb4:	afc20018 	sw	v0,24(s8)
  432bb8:	8f828708 	lw	v0,-30968(gp)
  432bbc:	00000000 	nop
  432bc0:	8c420004 	lw	v0,4(v0)
  432bc4:	00000000 	nop
  432bc8:	afc2001c 	sw	v0,28(s8)
    if (load_asn1_file(filename, "", label, &blob))
  432bcc:	8fc40040 	lw	a0,64(s8)
  432bd0:	8f85802c 	lw	a1,-32724(gp)
  432bd4:	00000000 	nop
  432bd8:	24a5c94c 	addiu	a1,a1,-14004
  432bdc:	8fc60044 	lw	a2,68(s8)
  432be0:	27c70018 	addiu	a3,s8,24
  432be4:	8f998530 	lw	t9,-31440(gp)
  432be8:	00000000 	nop
  432bec:	0320f809 	jalr	t9
  432bf0:	00000000 	nop
  432bf4:	8fdc0010 	lw	gp,16(s8)
  432bf8:	10400034 	beqz	v0,432ccc <load_x509cert+0x154>
  432bfc:	00000000 	nop
    {
	x509cert_t *cert = alloc_thing(x509cert_t, "x509cert");
  432c00:	24040090 	li	a0,144
  432c04:	8f85802c 	lw	a1,-32724(gp)
  432c08:	00000000 	nop
  432c0c:	24a5c950 	addiu	a1,a1,-14000
  432c10:	8f998084 	lw	t9,-32636(gp)
  432c14:	00000000 	nop
  432c18:	0320f809 	jalr	t9
  432c1c:	00000000 	nop
  432c20:	8fdc0010 	lw	gp,16(s8)
  432c24:	afc20020 	sw	v0,32(s8)
	*cert = empty_x509cert;
  432c28:	8fc20020 	lw	v0,32(s8)
  432c2c:	00000000 	nop
  432c30:	00402021 	move	a0,v0
  432c34:	8f858820 	lw	a1,-30688(gp)
  432c38:	24060090 	li	a2,144
  432c3c:	8f998a30 	lw	t9,-30160(gp)
  432c40:	00000000 	nop
  432c44:	0320f809 	jalr	t9
  432c48:	00000000 	nop
  432c4c:	8fdc0010 	lw	gp,16(s8)
  432c50:	00000000 	nop
	if (parse_x509cert(blob, 0, cert))
  432c54:	8fc40018 	lw	a0,24(s8)
  432c58:	8fc5001c 	lw	a1,28(s8)
  432c5c:	00003021 	move	a2,zero
  432c60:	8fc70020 	lw	a3,32(s8)
  432c64:	8f998240 	lw	t9,-32192(gp)
  432c68:	00000000 	nop
  432c6c:	0320f809 	jalr	t9
  432c70:	00000000 	nop
  432c74:	8fdc0010 	lw	gp,16(s8)
  432c78:	10400004 	beqz	v0,432c8c <load_x509cert+0x114>
  432c7c:	00000000 	nop
	    return cert;
  432c80:	8fc20020 	lw	v0,32(s8)
  432c84:	10000012 	b	432cd0 <load_x509cert+0x158>
  432c88:	00000000 	nop
	else
	{
	    plog("  error in X.509 certificate");
  432c8c:	8f84802c 	lw	a0,-32724(gp)
  432c90:	00000000 	nop
  432c94:	2484c95c 	addiu	a0,a0,-13988
  432c98:	8f998abc 	lw	t9,-30020(gp)
  432c9c:	00000000 	nop
  432ca0:	0320f809 	jalr	t9
  432ca4:	00000000 	nop
  432ca8:	8fdc0010 	lw	gp,16(s8)
  432cac:	00000000 	nop
	    free_x509cert(cert);
  432cb0:	8fc40020 	lw	a0,32(s8)
  432cb4:	8f998714 	lw	t9,-30956(gp)
  432cb8:	00000000 	nop
  432cbc:	0320f809 	jalr	t9
  432cc0:	00000000 	nop
  432cc4:	8fdc0010 	lw	gp,16(s8)
  432cc8:	00000000 	nop
	}
    }
    return NULL;
  432ccc:	00001021 	move	v0,zero
}
  432cd0:	03c0e821 	move	sp,s8
  432cd4:	8fbf0038 	lw	ra,56(sp)
  432cd8:	8fbe0034 	lw	s8,52(sp)
  432cdc:	27bd0040 	addiu	sp,sp,64
  432ce0:	03e00008 	jr	ra
  432ce4:	00000000 	nop

00432ce8 <load_host_cert>:
  432ce8:	3c1c0fbe 	lui	gp,0xfbe
  432cec:	279c9c88 	addiu	gp,gp,-25464
  432cf0:	0399e021 	addu	gp,gp,t9
  432cf4:	27bdfdd0 	addiu	sp,sp,-560
  432cf8:	afbc0018 	sw	gp,24(sp)
  432cfc:	afbf0228 	sw	ra,552(sp)
  432d00:	afbe0224 	sw	s8,548(sp)
  432d04:	afbc0220 	sw	gp,544(sp)
  432d08:	03a0f021 	move	s8,sp
  432d0c:	afc40230 	sw	a0,560(s8)

/*
 *  Loads a host certificate
 */
x509cert_t*
load_host_cert(const char* filename)
{
    char path[BUF_LEN];

    if (*filename == '/')	/* absolute pathname */
  432d10:	8fc20230 	lw	v0,560(s8)
  432d14:	00000000 	nop
  432d18:	80430000 	lb	v1,0(v0)
  432d1c:	2402002f 	li	v0,47
  432d20:	1462000b 	bne	v1,v0,432d50 <load_host_cert+0x68>
  432d24:	00000000 	nop
    	strncpy(path, filename, BUF_LEN);
  432d28:	27c40020 	addiu	a0,s8,32
  432d2c:	8fc50230 	lw	a1,560(s8)
  432d30:	24060200 	li	a2,512
  432d34:	8f99861c 	lw	t9,-31204(gp)
  432d38:	00000000 	nop
  432d3c:	0320f809 	jalr	t9
  432d40:	00000000 	nop
  432d44:	8fdc0018 	lw	gp,24(s8)
  432d48:	10000012 	b	432d94 <load_host_cert+0xac>
  432d4c:	00000000 	nop
    else			/* relative pathname */
	snprintf(path, BUF_LEN, "%s/%s", HOST_CERT_PATH, filename);
  432d50:	8fc20230 	lw	v0,560(s8)
  432d54:	00000000 	nop
  432d58:	afa20010 	sw	v0,16(sp)
  432d5c:	27c40020 	addiu	a0,s8,32
  432d60:	24050200 	li	a1,512
  432d64:	8f86802c 	lw	a2,-32724(gp)
  432d68:	00000000 	nop
  432d6c:	24c6c97c 	addiu	a2,a2,-13956
  432d70:	8f87802c 	lw	a3,-32724(gp)
  432d74:	00000000 	nop
  432d78:	24e7c984 	addiu	a3,a3,-13948
  432d7c:	8f998b38 	lw	t9,-29896(gp)
  432d80:	00000000 	nop
  432d84:	0320f809 	jalr	t9
  432d88:	00000000 	nop
  432d8c:	8fdc0018 	lw	gp,24(s8)
  432d90:	00000000 	nop

    return load_x509cert(path, "host cert");
  432d94:	27c40020 	addiu	a0,s8,32
  432d98:	8f85802c 	lw	a1,-32724(gp)
  432d9c:	00000000 	nop
  432da0:	24a5c994 	addiu	a1,a1,-13932
  432da4:	8f9980f0 	lw	t9,-32528(gp)
  432da8:	00000000 	nop
  432dac:	0320f809 	jalr	t9
  432db0:	00000000 	nop
  432db4:	8fdc0018 	lw	gp,24(s8)
  432db8:	00000000 	nop
}
  432dbc:	03c0e821 	move	sp,s8
  432dc0:	8fbf0228 	lw	ra,552(sp)
  432dc4:	8fbe0224 	lw	s8,548(sp)
  432dc8:	27bd0230 	addiu	sp,sp,560
  432dcc:	03e00008 	jr	ra
  432dd0:	00000000 	nop

00432dd4 <load_cacerts>:
  432dd4:	3c1c0fbe 	lui	gp,0xfbe
  432dd8:	279c9b9c 	addiu	gp,gp,-25700
  432ddc:	0399e021 	addu	gp,gp,t9
  432de0:	27bdfdb0 	addiu	sp,sp,-592
  432de4:	afbc0018 	sw	gp,24(sp)
  432de8:	afbf0248 	sw	ra,584(sp)
  432dec:	afbe0244 	sw	s8,580(sp)
  432df0:	afbc0240 	sw	gp,576(sp)
  432df4:	03a0f021 	move	s8,sp

/*
 *  Loads CA certificates
 */
void
load_cacerts(void)
{
    struct dirent **filelist;
    u_char buf[BUF_LEN];
    u_char *save_dir;
    int n;

    /* change directory to specified path */
    save_dir = getcwd(buf, BUF_LEN);
  432df8:	27c40028 	addiu	a0,s8,40
  432dfc:	24050200 	li	a1,512
  432e00:	8f9983f0 	lw	t9,-31760(gp)
  432e04:	00000000 	nop
  432e08:	0320f809 	jalr	t9
  432e0c:	00000000 	nop
  432e10:	8fdc0018 	lw	gp,24(s8)
  432e14:	afc20228 	sw	v0,552(s8)
    if (chdir(CA_CERT_PATH))
  432e18:	8f84802c 	lw	a0,-32724(gp)
  432e1c:	00000000 	nop
  432e20:	2484c9a0 	addiu	a0,a0,-13920
  432e24:	8f998730 	lw	t9,-30928(gp)
  432e28:	00000000 	nop
  432e2c:	0320f809 	jalr	t9
  432e30:	00000000 	nop
  432e34:	8fdc0018 	lw	gp,24(s8)
  432e38:	1040000e 	beqz	v0,432e74 <load_cacerts+0xa0>
  432e3c:	00000000 	nop
    {
	plog("Could not change to directory '%s'", CA_CERT_PATH);
  432e40:	8f84802c 	lw	a0,-32724(gp)
  432e44:	00000000 	nop
  432e48:	2484c9b8 	addiu	a0,a0,-13896
  432e4c:	8f85802c 	lw	a1,-32724(gp)
  432e50:	00000000 	nop
  432e54:	24a5c9a0 	addiu	a1,a1,-13920
  432e58:	8f998abc 	lw	t9,-30020(gp)
  432e5c:	00000000 	nop
  432e60:	0320f809 	jalr	t9
  432e64:	00000000 	nop
  432e68:	8fdc0018 	lw	gp,24(s8)
  432e6c:	100000a1 	b	4330f4 <load_cacerts+0x320>
  432e70:	00000000 	nop
    }
    else
    {
	plog("Changing to directory '%s'",CA_CERT_PATH);
  432e74:	8f84802c 	lw	a0,-32724(gp)
  432e78:	00000000 	nop
  432e7c:	2484c9dc 	addiu	a0,a0,-13860
  432e80:	8f85802c 	lw	a1,-32724(gp)
  432e84:	00000000 	nop
  432e88:	24a5c9a0 	addiu	a1,a1,-13920
  432e8c:	8f998abc 	lw	t9,-30020(gp)
  432e90:	00000000 	nop
  432e94:	0320f809 	jalr	t9
  432e98:	00000000 	nop
  432e9c:	8fdc0018 	lw	gp,24(s8)
  432ea0:	00000000 	nop
	n = scandir(CA_CERT_PATH, &filelist, file_select, alphasort);
  432ea4:	8f84802c 	lw	a0,-32724(gp)
  432ea8:	00000000 	nop
  432eac:	2484c9a0 	addiu	a0,a0,-13920
  432eb0:	27c50020 	addiu	a1,s8,32
  432eb4:	8f868030 	lw	a2,-32720(gp)
  432eb8:	00000000 	nop
  432ebc:	24c626e4 	addiu	a2,a2,9956
  432ec0:	8f878640 	lw	a3,-31168(gp)
  432ec4:	8f9986c4 	lw	t9,-31036(gp)
  432ec8:	00000000 	nop
  432ecc:	0320f809 	jalr	t9
  432ed0:	00000000 	nop
  432ed4:	8fdc0018 	lw	gp,24(s8)
  432ed8:	afc2022c 	sw	v0,556(s8)

	if (n <= 0)
  432edc:	8fc2022c 	lw	v0,556(s8)
  432ee0:	00000000 	nop
  432ee4:	1c40000b 	bgtz	v0,432f14 <load_cacerts+0x140>
  432ee8:	00000000 	nop
	    plog("  Warning: empty directory");
  432eec:	8f84802c 	lw	a0,-32724(gp)
  432ef0:	00000000 	nop
  432ef4:	2484c9f8 	addiu	a0,a0,-13832
  432ef8:	8f998abc 	lw	t9,-30020(gp)
  432efc:	00000000 	nop
  432f00:	0320f809 	jalr	t9
  432f04:	00000000 	nop
  432f08:	8fdc0018 	lw	gp,24(s8)
  432f0c:	10000079 	b	4330f4 <load_cacerts+0x320>
  432f10:	00000000 	nop
	else
	{
	    while (n--)
  432f14:	8fc2022c 	lw	v0,556(s8)
  432f18:	00000000 	nop
  432f1c:	2442ffff 	addiu	v0,v0,-1
  432f20:	00401821 	move	v1,v0
  432f24:	afc3022c 	sw	v1,556(s8)
  432f28:	2402ffff 	li	v0,-1
  432f2c:	14620003 	bne	v1,v0,432f3c <load_cacerts+0x168>
  432f30:	00000000 	nop
  432f34:	10000068 	b	4330d8 <load_cacerts+0x304>
  432f38:	00000000 	nop
	    {
		x509cert_t *cacert = load_x509cert(filelist[n]->d_name, "cacert");
  432f3c:	8fc2022c 	lw	v0,556(s8)
  432f40:	00000000 	nop
  432f44:	00021880 	sll	v1,v0,0x2
  432f48:	8fc20020 	lw	v0,32(s8)
  432f4c:	00000000 	nop
  432f50:	00621021 	addu	v0,v1,v0
  432f54:	8c420000 	lw	v0,0(v0)
  432f58:	00000000 	nop
  432f5c:	2442000b 	addiu	v0,v0,11
  432f60:	00402021 	move	a0,v0
  432f64:	8f85802c 	lw	a1,-32724(gp)
  432f68:	00000000 	nop
  432f6c:	24a5ca14 	addiu	a1,a1,-13804
  432f70:	8f9980f0 	lw	t9,-32528(gp)
  432f74:	00000000 	nop
  432f78:	0320f809 	jalr	t9
  432f7c:	00000000 	nop
  432f80:	8fdc0018 	lw	gp,24(s8)
  432f84:	afc20230 	sw	v0,560(s8)
		if (cacert != NULL)
  432f88:	8fc20230 	lw	v0,560(s8)
  432f8c:	00000000 	nop
  432f90:	10400043 	beqz	v0,4330a0 <load_cacerts+0x2cc>
  432f94:	00000000 	nop
		{
		    if (get_x509cacert(cacert->subject, cacert->serialNumber
		    , cacert->subjectKeyID))
  432f98:	8fc50230 	lw	a1,560(s8)
  432f9c:	8fc70230 	lw	a3,560(s8)
  432fa0:	8fc30230 	lw	v1,560(s8)
  432fa4:	00000000 	nop
  432fa8:	8c620060 	lw	v0,96(v1)
  432fac:	00000000 	nop
  432fb0:	afa20010 	sw	v0,16(sp)
  432fb4:	8c620064 	lw	v0,100(v1)
  432fb8:	00000000 	nop
  432fbc:	afa20014 	sw	v0,20(sp)
  432fc0:	8ca40040 	lw	a0,64(a1)
  432fc4:	8ca50044 	lw	a1,68(a1)
  432fc8:	8ce60020 	lw	a2,32(a3)
  432fcc:	8ce70024 	lw	a3,36(a3)
  432fd0:	8f998030 	lw	t9,-32720(gp)
  432fd4:	00000000 	nop
  432fd8:	2739179c 	addiu	t9,t9,6044
  432fdc:	00000000 	nop
  432fe0:	0320f809 	jalr	t9
  432fe4:	00000000 	nop
  432fe8:	8fdc0018 	lw	gp,24(s8)
  432fec:	10400019 	beqz	v0,433054 <load_cacerts+0x280>
  432ff0:	00000000 	nop
		    {
			free_first_cacert();
  432ff4:	8f998030 	lw	t9,-32720(gp)
  432ff8:	00000000 	nop
  432ffc:	27392270 	addiu	t9,t9,8816
  433000:	00000000 	nop
  433004:	0320f809 	jalr	t9
  433008:	00000000 	nop
  43300c:	8fdc0018 	lw	gp,24(s8)
  433010:	00000000 	nop
			DBG(DBG_PARSING,
  433014:	8f8284f8 	lw	v0,-31496(gp)
  433018:	00000000 	nop
  43301c:	8c420000 	lw	v0,0(v0)
  433020:	00000000 	nop
  433024:	30420004 	andi	v0,v0,0x4
  433028:	1040000a 	beqz	v0,433054 <load_cacerts+0x280>
  43302c:	00000000 	nop
  433030:	8f84802c 	lw	a0,-32724(gp)
  433034:	00000000 	nop
  433038:	2484ca1c 	addiu	a0,a0,-13796
  43303c:	8f9983b8 	lw	t9,-31816(gp)
  433040:	00000000 	nop
  433044:	0320f809 	jalr	t9
  433048:	00000000 	nop
  43304c:	8fdc0018 	lw	gp,24(s8)
  433050:	00000000 	nop
			    DBG_log("  existing cacert deleted")
			)
		    }
		    share_x509cert(cacert);  /* set count to one */
  433054:	8fc40230 	lw	a0,560(s8)
  433058:	8f9986b0 	lw	t9,-31056(gp)
  43305c:	00000000 	nop
  433060:	0320f809 	jalr	t9
  433064:	00000000 	nop
  433068:	8fdc0018 	lw	gp,24(s8)
  43306c:	00000000 	nop
		    cacert->next = x509cacerts;
  433070:	8f828018 	lw	v0,-32744(gp)
  433074:	00000000 	nop
  433078:	24421ab4 	addiu	v0,v0,6836
  43307c:	8c420000 	lw	v0,0(v0)
  433080:	8fc30230 	lw	v1,560(s8)
  433084:	00000000 	nop
  433088:	ac620000 	sw	v0,0(v1)
		    x509cacerts = cacert;
  43308c:	8fc20230 	lw	v0,560(s8)
  433090:	8f818018 	lw	at,-32744(gp)
  433094:	00000000 	nop
  433098:	24211ab4 	addiu	at,at,6836
  43309c:	ac220000 	sw	v0,0(at)
		}
		free(filelist[n]);
  4330a0:	8fc2022c 	lw	v0,556(s8)
  4330a4:	00000000 	nop
  4330a8:	00021880 	sll	v1,v0,0x2
  4330ac:	8fc20020 	lw	v0,32(s8)
  4330b0:	00000000 	nop
  4330b4:	00621021 	addu	v0,v1,v0
  4330b8:	8c440000 	lw	a0,0(v0)
  4330bc:	8f998094 	lw	t9,-32620(gp)
  4330c0:	00000000 	nop
  4330c4:	0320f809 	jalr	t9
  4330c8:	00000000 	nop
  4330cc:	8fdc0018 	lw	gp,24(s8)
  4330d0:	1000ff90 	b	432f14 <load_cacerts+0x140>
  4330d4:	00000000 	nop
	    }
	    free(filelist);
  4330d8:	8fc40020 	lw	a0,32(s8)
  4330dc:	8f998094 	lw	t9,-32620(gp)
  4330e0:	00000000 	nop
  4330e4:	0320f809 	jalr	t9
  4330e8:	00000000 	nop
  4330ec:	8fdc0018 	lw	gp,24(s8)
  4330f0:	00000000 	nop
	}
    }
    /* restore directory path */
    chdir(save_dir);
  4330f4:	8fc40228 	lw	a0,552(s8)
  4330f8:	8f998730 	lw	t9,-30928(gp)
  4330fc:	00000000 	nop
  433100:	0320f809 	jalr	t9
  433104:	00000000 	nop
  433108:	8fdc0018 	lw	gp,24(s8)
  43310c:	00000000 	nop
}
  433110:	03c0e821 	move	sp,s8
  433114:	8fbf0248 	lw	ra,584(sp)
  433118:	8fbe0244 	lw	s8,580(sp)
  43311c:	27bd0250 	addiu	sp,sp,592
  433120:	03e00008 	jr	ra
  433124:	00000000 	nop

00433128 <load_crls>:
  433128:	3c1c0fbe 	lui	gp,0xfbe
  43312c:	279c9848 	addiu	gp,gp,-26552
  433130:	0399e021 	addu	gp,gp,t9
  433134:	27bdfd98 	addiu	sp,sp,-616
  433138:	afbc0018 	sw	gp,24(sp)
  43313c:	afbf0260 	sw	ra,608(sp)
  433140:	afbe025c 	sw	s8,604(sp)
  433144:	afbc0258 	sw	gp,600(sp)
  433148:	03a0f021 	move	s8,sp

/*
 *  Loads CRLs
 */
void
load_crls(void)
{
    struct dirent **filelist;
    u_char buf[BUF_LEN];
    u_char *save_dir;
    int n;

    /* change directory to specified path */
    save_dir = getcwd(buf, BUF_LEN);
  43314c:	27c40028 	addiu	a0,s8,40
  433150:	24050200 	li	a1,512
  433154:	8f9983f0 	lw	t9,-31760(gp)
  433158:	00000000 	nop
  43315c:	0320f809 	jalr	t9
  433160:	00000000 	nop
  433164:	8fdc0018 	lw	gp,24(s8)
  433168:	afc20228 	sw	v0,552(s8)
    if (chdir(CRL_PATH))
  43316c:	8f84802c 	lw	a0,-32724(gp)
  433170:	00000000 	nop
  433174:	2484ca38 	addiu	a0,a0,-13768
  433178:	8f998730 	lw	t9,-30928(gp)
  43317c:	00000000 	nop
  433180:	0320f809 	jalr	t9
  433184:	00000000 	nop
  433188:	8fdc0018 	lw	gp,24(s8)
  43318c:	1040000e 	beqz	v0,4331c8 <load_crls+0xa0>
  433190:	00000000 	nop
    {
	plog("Could not change to directory '%s'", CRL_PATH);
  433194:	8f84802c 	lw	a0,-32724(gp)
  433198:	00000000 	nop
  43319c:	2484c9b8 	addiu	a0,a0,-13896
  4331a0:	8f85802c 	lw	a1,-32724(gp)
  4331a4:	00000000 	nop
  4331a8:	24a5ca38 	addiu	a1,a1,-13768
  4331ac:	8f998abc 	lw	t9,-30020(gp)
  4331b0:	00000000 	nop
  4331b4:	0320f809 	jalr	t9
  4331b8:	00000000 	nop
  4331bc:	8fdc0018 	lw	gp,24(s8)
  4331c0:	10000099 	b	433428 <load_crls+0x300>
  4331c4:	00000000 	nop
    }
    else
    {
	plog("Changing to directory '%s'", CRL_PATH);
  4331c8:	8f84802c 	lw	a0,-32724(gp)
  4331cc:	00000000 	nop
  4331d0:	2484c9dc 	addiu	a0,a0,-13860
  4331d4:	8f85802c 	lw	a1,-32724(gp)
  4331d8:	00000000 	nop
  4331dc:	24a5ca38 	addiu	a1,a1,-13768
  4331e0:	8f998abc 	lw	t9,-30020(gp)
  4331e4:	00000000 	nop
  4331e8:	0320f809 	jalr	t9
  4331ec:	00000000 	nop
  4331f0:	8fdc0018 	lw	gp,24(s8)
  4331f4:	00000000 	nop
	n = scandir(CRL_PATH, &filelist, file_select, alphasort);
  4331f8:	8f84802c 	lw	a0,-32724(gp)
  4331fc:	00000000 	nop
  433200:	2484ca38 	addiu	a0,a0,-13768
  433204:	27c50020 	addiu	a1,s8,32
  433208:	8f868030 	lw	a2,-32720(gp)
  43320c:	00000000 	nop
  433210:	24c626e4 	addiu	a2,a2,9956
  433214:	8f878640 	lw	a3,-31168(gp)
  433218:	8f9986c4 	lw	t9,-31036(gp)
  43321c:	00000000 	nop
  433220:	0320f809 	jalr	t9
  433224:	00000000 	nop
  433228:	8fdc0018 	lw	gp,24(s8)
  43322c:	afc2022c 	sw	v0,556(s8)

	if (n <= 0)
  433230:	8fc2022c 	lw	v0,556(s8)
  433234:	00000000 	nop
  433238:	1c40000b 	bgtz	v0,433268 <load_crls+0x140>
  43323c:	00000000 	nop
	    plog("  Warning: empty directory");
  433240:	8f84802c 	lw	a0,-32724(gp)
  433244:	00000000 	nop
  433248:	2484c9f8 	addiu	a0,a0,-13832
  43324c:	8f998abc 	lw	t9,-30020(gp)
  433250:	00000000 	nop
  433254:	0320f809 	jalr	t9
  433258:	00000000 	nop
  43325c:	8fdc0018 	lw	gp,24(s8)
  433260:	10000071 	b	433428 <load_crls+0x300>
  433264:	00000000 	nop
	else
        {
            while (n--)
  433268:	8fc2022c 	lw	v0,556(s8)
  43326c:	00000000 	nop
  433270:	2442ffff 	addiu	v0,v0,-1
  433274:	00401821 	move	v1,v0
  433278:	afc3022c 	sw	v1,556(s8)
  43327c:	2402ffff 	li	v0,-1
  433280:	14620003 	bne	v1,v0,433290 <load_crls+0x168>
  433284:	00000000 	nop
  433288:	10000060 	b	43340c <load_crls+0x2e4>
  43328c:	00000000 	nop
            {
                bool pgp = FALSE;
  433290:	afc00230 	sw	zero,560(s8)
                chunk_t blob = empty_chunk;
  433294:	8f828708 	lw	v0,-30968(gp)
  433298:	00000000 	nop
  43329c:	8c420000 	lw	v0,0(v0)
  4332a0:	00000000 	nop
  4332a4:	afc20238 	sw	v0,568(s8)
  4332a8:	8f828708 	lw	v0,-30968(gp)
  4332ac:	00000000 	nop
  4332b0:	8c420004 	lw	v0,4(v0)
  4332b4:	00000000 	nop
  4332b8:	afc2023c 	sw	v0,572(s8)
                char *filename = filelist[n]->d_name;
  4332bc:	8fc2022c 	lw	v0,556(s8)
  4332c0:	00000000 	nop
  4332c4:	00021880 	sll	v1,v0,0x2
  4332c8:	8fc20020 	lw	v0,32(s8)
  4332cc:	00000000 	nop
  4332d0:	00621021 	addu	v0,v1,v0
  4332d4:	8c420000 	lw	v0,0(v0)
  4332d8:	00000000 	nop
  4332dc:	2442000b 	addiu	v0,v0,11
  4332e0:	afc20240 	sw	v0,576(s8)
 
                if (load_coded_file(filename, NULL, "crl", &blob, &pgp))
  4332e4:	27c20230 	addiu	v0,s8,560
  4332e8:	afa20010 	sw	v0,16(sp)
  4332ec:	8fc40240 	lw	a0,576(s8)
  4332f0:	00002821 	move	a1,zero
  4332f4:	8f86802c 	lw	a2,-32724(gp)
  4332f8:	00000000 	nop
  4332fc:	24c6ca4c 	addiu	a2,a2,-13748
  433300:	27c70238 	addiu	a3,s8,568
  433304:	8f998934 	lw	t9,-30412(gp)
  433308:	00000000 	nop
  43330c:	0320f809 	jalr	t9
  433310:	00000000 	nop
  433314:	8fdc0018 	lw	gp,24(s8)
  433318:	1040002e 	beqz	v0,4333d4 <load_crls+0x2ac>
  43331c:	00000000 	nop
                {
                    chunk_t crl_uri;
                    crl_uri.len = 7 + sizeof(CRL_PATH) + strlen(filename);
  433320:	8fc40240 	lw	a0,576(s8)
  433324:	8f998188 	lw	t9,-32376(gp)
  433328:	00000000 	nop
  43332c:	0320f809 	jalr	t9
  433330:	00000000 	nop
  433334:	8fdc0018 	lw	gp,24(s8)
  433338:	24420019 	addiu	v0,v0,25
  43333c:	afc2024c 	sw	v0,588(s8)
                    crl_uri.ptr = alloc_bytes(crl_uri.len + 1, "crl uri");
  433340:	8fc2024c 	lw	v0,588(s8)
  433344:	00000000 	nop
  433348:	24420001 	addiu	v0,v0,1
  43334c:	00402021 	move	a0,v0
  433350:	8f85802c 	lw	a1,-32724(gp)
  433354:	00000000 	nop
  433358:	24a5ca50 	addiu	a1,a1,-13744
  43335c:	8f998084 	lw	t9,-32636(gp)
  433360:	00000000 	nop
  433364:	0320f809 	jalr	t9
  433368:	00000000 	nop
  43336c:	8fdc0018 	lw	gp,24(s8)
  433370:	afc20248 	sw	v0,584(s8)
 
                    /* build CRL file URI */
                    sprintf(crl_uri.ptr, "file://%s/%s", CRL_PATH, filename);
  433374:	8fc40248 	lw	a0,584(s8)
  433378:	8f85802c 	lw	a1,-32724(gp)
  43337c:	00000000 	nop
  433380:	24a5ca58 	addiu	a1,a1,-13736
  433384:	8f86802c 	lw	a2,-32724(gp)
  433388:	00000000 	nop
  43338c:	24c6ca38 	addiu	a2,a2,-13768
  433390:	8fc70240 	lw	a3,576(s8)
  433394:	8f9983d0 	lw	t9,-31792(gp)
  433398:	00000000 	nop
  43339c:	0320f809 	jalr	t9
  4333a0:	00000000 	nop
  4333a4:	8fdc0018 	lw	gp,24(s8)
  4333a8:	00000000 	nop
                    insert_crl(blob, crl_uri);
  4333ac:	8fc40238 	lw	a0,568(s8)
  4333b0:	8fc5023c 	lw	a1,572(s8)
  4333b4:	8fc60248 	lw	a2,584(s8)
  4333b8:	8fc7024c 	lw	a3,588(s8)
  4333bc:	8f9985d0 	lw	t9,-31280(gp)
  4333c0:	00000000 	nop
  4333c4:	0320f809 	jalr	t9
  4333c8:	00000000 	nop
  4333cc:	8fdc0018 	lw	gp,24(s8)
  4333d0:	00000000 	nop
                }
                free(filelist[n]);
  4333d4:	8fc2022c 	lw	v0,556(s8)
  4333d8:	00000000 	nop
  4333dc:	00021880 	sll	v1,v0,0x2
  4333e0:	8fc20020 	lw	v0,32(s8)
  4333e4:	00000000 	nop
  4333e8:	00621021 	addu	v0,v1,v0
  4333ec:	8c440000 	lw	a0,0(v0)
  4333f0:	8f998094 	lw	t9,-32620(gp)
  4333f4:	00000000 	nop
  4333f8:	0320f809 	jalr	t9
  4333fc:	00000000 	nop
  433400:	8fdc0018 	lw	gp,24(s8)
  433404:	1000ff98 	b	433268 <load_crls+0x140>
  433408:	00000000 	nop
            }
            free(filelist);
  43340c:	8fc40020 	lw	a0,32(s8)
  433410:	8f998094 	lw	t9,-32620(gp)
  433414:	00000000 	nop
  433418:	0320f809 	jalr	t9
  43341c:	00000000 	nop
  433420:	8fdc0018 	lw	gp,24(s8)
  433424:	00000000 	nop
        }
     }
     /* restore directory path */
     chdir(save_dir);
  433428:	8fc40228 	lw	a0,552(s8)
  43342c:	8f998730 	lw	t9,-30928(gp)
  433430:	00000000 	nop
  433434:	0320f809 	jalr	t9
  433438:	00000000 	nop
  43343c:	8fdc0018 	lw	gp,24(s8)
  433440:	00000000 	nop
}
  433444:	03c0e821 	move	sp,s8
  433448:	8fbf0260 	lw	ra,608(sp)
  43344c:	8fbe025c 	lw	s8,604(sp)
  433450:	27bd0268 	addiu	sp,sp,616
  433454:	03e00008 	jr	ra
  433458:	00000000 	nop

0043345c <load_mycert>:
  43345c:	3c1c0fbe 	lui	gp,0xfbe
  433460:	279c9514 	addiu	gp,gp,-27372
  433464:	0399e021 	addu	gp,gp,t9
  433468:	27bdffc8 	addiu	sp,sp,-56
  43346c:	afbc0010 	sw	gp,16(sp)
  433470:	afbf0030 	sw	ra,48(sp)
  433474:	afbe002c 	sw	s8,44(sp)
  433478:	afbc0028 	sw	gp,40(sp)
  43347c:	03a0f021 	move	s8,sp



/*  Loads an optional OpenPGP certificate sent by Openswan to
 *  its peers during ISAKMP Phase 1
 */
void
load_mycert(void)
{
    /* deleting old certificate, if present */
    pfreeany(my_default_cert.cert.ptr);
  433480:	8f828018 	lw	v0,-32744(gp)
  433484:	00000000 	nop
  433488:	24426a50 	addiu	v0,v0,27216
  43348c:	8c420004 	lw	v0,4(v0)
  433490:	00000000 	nop
  433494:	1040000b 	beqz	v0,4334c4 <load_mycert+0x68>
  433498:	00000000 	nop
  43349c:	8f848018 	lw	a0,-32744(gp)
  4334a0:	00000000 	nop
  4334a4:	24846a50 	addiu	a0,a0,27216
  4334a8:	8c840004 	lw	a0,4(a0)
  4334ac:	8f998094 	lw	t9,-32620(gp)
  4334b0:	00000000 	nop
  4334b4:	0320f809 	jalr	t9
  4334b8:	00000000 	nop
  4334bc:	8fdc0010 	lw	gp,16(s8)
  4334c0:	00000000 	nop

    /* initializing certificate */
    my_default_cert.type = CERT_NONE;
  4334c4:	8f818018 	lw	at,-32744(gp)
  4334c8:	00000000 	nop
  4334cc:	24216a50 	addiu	at,at,27216
  4334d0:	a0200000 	sb	zero,0(at)
    my_default_cert.cert = empty_chunk;
  4334d4:	8f828708 	lw	v0,-30968(gp)
  4334d8:	00000000 	nop
  4334dc:	8c420000 	lw	v0,0(v0)
  4334e0:	8f818018 	lw	at,-32744(gp)
  4334e4:	00000000 	nop
  4334e8:	24216a50 	addiu	at,at,27216
  4334ec:	ac220004 	sw	v0,4(at)
  4334f0:	8f828708 	lw	v0,-30968(gp)
  4334f4:	00000000 	nop
  4334f8:	8c420004 	lw	v0,4(v0)
  4334fc:	8f818018 	lw	at,-32744(gp)
  433500:	00000000 	nop
  433504:	24216a50 	addiu	at,at,27216
  433508:	ac220008 	sw	v0,8(at)

    /* loading an OpenPGP certificate, if available */
    {
        FILE *fd = NULL;
  43350c:	afc00018 	sw	zero,24(s8)
	int i;

	fd = fopen(PGP_CERT_PATH, "r");
  433510:	8f84802c 	lw	a0,-32724(gp)
  433514:	00000000 	nop
  433518:	2484ca68 	addiu	a0,a0,-13720
  43351c:	8f85802c 	lw	a1,-32724(gp)
  433520:	00000000 	nop
  433524:	24a5ca7c 	addiu	a1,a1,-13700
  433528:	8f99850c 	lw	t9,-31476(gp)
  43352c:	00000000 	nop
  433530:	0320f809 	jalr	t9
  433534:	00000000 	nop
  433538:	8fdc0010 	lw	gp,16(s8)
  43353c:	afc20018 	sw	v0,24(s8)
	if (fd)
  433540:	8fc20018 	lw	v0,24(s8)
  433544:	00000000 	nop
  433548:	10400057 	beqz	v0,4336a8 <load_mycert+0x24c>
  43354c:	00000000 	nop
	{
	    my_default_cert.type = CERT_PGP;
  433550:	24020002 	li	v0,2
  433554:	8f818018 	lw	at,-32744(gp)
  433558:	00000000 	nop
  43355c:	24216a50 	addiu	at,at,27216
  433560:	a0220000 	sb	v0,0(at)
	    fseek(fd, 0, SEEK_END );
  433564:	8fc40018 	lw	a0,24(s8)
  433568:	00002821 	move	a1,zero
  43356c:	24060002 	li	a2,2
  433570:	8f998710 	lw	t9,-30960(gp)
  433574:	00000000 	nop
  433578:	0320f809 	jalr	t9
  43357c:	00000000 	nop
  433580:	8fdc0010 	lw	gp,16(s8)
  433584:	00000000 	nop
	    my_default_cert.cert.len = ftell(fd);
  433588:	8fc40018 	lw	a0,24(s8)
  43358c:	8f9984dc 	lw	t9,-31524(gp)
  433590:	00000000 	nop
  433594:	0320f809 	jalr	t9
  433598:	00000000 	nop
  43359c:	8fdc0010 	lw	gp,16(s8)
  4335a0:	00000000 	nop
  4335a4:	8f818018 	lw	at,-32744(gp)
  4335a8:	00000000 	nop
  4335ac:	24216a50 	addiu	at,at,27216
  4335b0:	ac220008 	sw	v0,8(at)
	    rewind(fd);
  4335b4:	8fc40018 	lw	a0,24(s8)
  4335b8:	8f998268 	lw	t9,-32152(gp)
  4335bc:	00000000 	nop
  4335c0:	0320f809 	jalr	t9
  4335c4:	00000000 	nop
  4335c8:	8fdc0010 	lw	gp,16(s8)
  4335cc:	00000000 	nop
	    my_default_cert.cert.ptr = alloc_bytes(my_default_cert.cert.len, "cert");
  4335d0:	8f848018 	lw	a0,-32744(gp)
  4335d4:	00000000 	nop
  4335d8:	24846a50 	addiu	a0,a0,27216
  4335dc:	8c840008 	lw	a0,8(a0)
  4335e0:	8f85802c 	lw	a1,-32724(gp)
  4335e4:	00000000 	nop
  4335e8:	24a5ca80 	addiu	a1,a1,-13696
  4335ec:	8f998084 	lw	t9,-32636(gp)
  4335f0:	00000000 	nop
  4335f4:	0320f809 	jalr	t9
  4335f8:	00000000 	nop
  4335fc:	8fdc0010 	lw	gp,16(s8)
  433600:	00000000 	nop
  433604:	8f818018 	lw	at,-32744(gp)
  433608:	00000000 	nop
  43360c:	24216a50 	addiu	at,at,27216
  433610:	ac220004 	sw	v0,4(at)
	    i = fread(my_default_cert.cert.ptr, 1, my_default_cert.cert.len, fd);
  433614:	8f848018 	lw	a0,-32744(gp)
  433618:	00000000 	nop
  43361c:	24846a50 	addiu	a0,a0,27216
  433620:	8c840004 	lw	a0,4(a0)
  433624:	24050001 	li	a1,1
  433628:	8f868018 	lw	a2,-32744(gp)
  43362c:	00000000 	nop
  433630:	24c66a50 	addiu	a2,a2,27216
  433634:	8cc60008 	lw	a2,8(a2)
  433638:	8fc70018 	lw	a3,24(s8)
  43363c:	8f998558 	lw	t9,-31400(gp)
  433640:	00000000 	nop
  433644:	0320f809 	jalr	t9
  433648:	00000000 	nop
  43364c:	8fdc0010 	lw	gp,16(s8)
  433650:	afc2001c 	sw	v0,28(s8)
	    fclose(fd);
  433654:	8fc40018 	lw	a0,24(s8)
  433658:	8f9984c0 	lw	t9,-31552(gp)
  43365c:	00000000 	nop
  433660:	0320f809 	jalr	t9
  433664:	00000000 	nop
  433668:	8fdc0010 	lw	gp,16(s8)
  43366c:	00000000 	nop
	    plog("Loaded my OpenPGP certificate file '%s' (%d bytes)",
  433670:	8f84802c 	lw	a0,-32724(gp)
  433674:	00000000 	nop
  433678:	2484ca88 	addiu	a0,a0,-13688
  43367c:	8f85802c 	lw	a1,-32724(gp)
  433680:	00000000 	nop
  433684:	24a5ca68 	addiu	a1,a1,-13720
  433688:	8fc6001c 	lw	a2,28(s8)
  43368c:	8f998abc 	lw	t9,-30020(gp)
  433690:	00000000 	nop
  433694:	0320f809 	jalr	t9
  433698:	00000000 	nop
  43369c:	8fdc0010 	lw	gp,16(s8)
  4336a0:	1000000d 	b	4336d8 <load_mycert+0x27c>
  4336a4:	00000000 	nop
		PGP_CERT_PATH, i);
	}
	else
	{
	    plog("OpenPGP certificate file '%s' not found", PGP_CERT_PATH);
  4336a8:	8f84802c 	lw	a0,-32724(gp)
  4336ac:	00000000 	nop
  4336b0:	2484cabc 	addiu	a0,a0,-13636
  4336b4:	8f85802c 	lw	a1,-32724(gp)
  4336b8:	00000000 	nop
  4336bc:	24a5ca68 	addiu	a1,a1,-13720
  4336c0:	8f998abc 	lw	t9,-30020(gp)
  4336c4:	00000000 	nop
  4336c8:	0320f809 	jalr	t9
  4336cc:	00000000 	nop
  4336d0:	8fdc0010 	lw	gp,16(s8)
  4336d4:	00000000 	nop
	}
    }
}
  4336d8:	03c0e821 	move	sp,s8
  4336dc:	8fbf0030 	lw	ra,48(sp)
  4336e0:	8fbe002c 	lw	s8,44(sp)
  4336e4:	27bd0038 	addiu	sp,sp,56
  4336e8:	03e00008 	jr	ra
  4336ec:	00000000 	nop

004336f0 <parse_basicConstraints>:
  4336f0:	3c1c0fbe 	lui	gp,0xfbe
  4336f4:	279c9280 	addiu	gp,gp,-28032
  4336f8:	0399e021 	addu	gp,gp,t9
  4336fc:	27bdff58 	addiu	sp,sp,-168
  433700:	afbc0018 	sw	gp,24(sp)
  433704:	afbf00a0 	sw	ra,160(sp)
  433708:	afbe009c 	sw	s8,156(sp)
  43370c:	afbc0098 	sw	gp,152(sp)
  433710:	03a0f021 	move	s8,sp
  433714:	afc400a8 	sw	a0,168(s8)
  433718:	afc500ac 	sw	a1,172(s8)
  43371c:	afc600b0 	sw	a2,176(s8)

/*
 * extracts the basicConstraints extension
 */
static bool
parse_basicConstraints(chunk_t blob, int level0)
{
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  433720:	afc00088 	sw	zero,136(s8)
    bool isCA = FALSE;
  433724:	afc0008c 	sw	zero,140(s8)

    asn1_init(&ctx, blob, level0, FALSE, DBG_RAW);
  433728:	afa00010 	sw	zero,16(sp)
  43372c:	24020001 	li	v0,1
  433730:	afa20014 	sw	v0,20(sp)
  433734:	27c40020 	addiu	a0,s8,32
  433738:	8fc500a8 	lw	a1,168(s8)
  43373c:	8fc600ac 	lw	a2,172(s8)
  433740:	8fc700b0 	lw	a3,176(s8)
  433744:	8f998898 	lw	t9,-30568(gp)
  433748:	00000000 	nop
  43374c:	0320f809 	jalr	t9
  433750:	00000000 	nop
  433754:	8fdc0018 	lw	gp,24(s8)
  433758:	00000000 	nop

    while (objectID < BASIC_CONSTRAINTS_ROOF) {
  43375c:	8fc20088 	lw	v0,136(s8)
  433760:	00000000 	nop
  433764:	28420004 	slti	v0,v0,4
  433768:	14400003 	bnez	v0,433778 <parse_basicConstraints+0x88>
  43376c:	00000000 	nop
  433770:	1000004b 	b	4338a0 <parse_basicConstraints+0x1b0>
  433774:	00000000 	nop

	if (!extract_object(basicConstraintsObjects, &objectID,
			    &object, &ctx))
  433778:	8f848018 	lw	a0,-32744(gp)
  43377c:	00000000 	nop
  433780:	24841abc 	addiu	a0,a0,6844
  433784:	27c50088 	addiu	a1,s8,136
  433788:	27c60080 	addiu	a2,s8,128
  43378c:	27c70020 	addiu	a3,s8,32
  433790:	8f9983bc 	lw	t9,-31812(gp)
  433794:	00000000 	nop
  433798:	0320f809 	jalr	t9
  43379c:	00000000 	nop
  4337a0:	8fdc0018 	lw	gp,24(s8)
  4337a4:	14400003 	bnez	v0,4337b4 <parse_basicConstraints+0xc4>
  4337a8:	00000000 	nop
	     break;
  4337ac:	1000003c 	b	4338a0 <parse_basicConstraints+0x1b0>
  4337b0:	00000000 	nop

	if (objectID == BASIC_CONSTRAINTS_CA)
  4337b4:	8fc30088 	lw	v1,136(s8)
  4337b8:	24020001 	li	v0,1
  4337bc:	14620032 	bne	v1,v0,433888 <parse_basicConstraints+0x198>
  4337c0:	00000000 	nop
	{
	    isCA = object.len && *object.ptr;
  4337c4:	afc00090 	sw	zero,144(s8)
  4337c8:	8fc20084 	lw	v0,132(s8)
  4337cc:	00000000 	nop
  4337d0:	10400009 	beqz	v0,4337f8 <parse_basicConstraints+0x108>
  4337d4:	00000000 	nop
  4337d8:	8fc20080 	lw	v0,128(s8)
  4337dc:	00000000 	nop
  4337e0:	90420000 	lbu	v0,0(v0)
  4337e4:	00000000 	nop
  4337e8:	10400003 	beqz	v0,4337f8 <parse_basicConstraints+0x108>
  4337ec:	00000000 	nop
  4337f0:	24020001 	li	v0,1
  4337f4:	afc20090 	sw	v0,144(s8)
  4337f8:	8fc20090 	lw	v0,144(s8)
  4337fc:	00000000 	nop
  433800:	afc2008c 	sw	v0,140(s8)
	    DBG(DBG_PARSING,
  433804:	8f8284f8 	lw	v0,-31496(gp)
  433808:	00000000 	nop
  43380c:	8c420000 	lw	v0,0(v0)
  433810:	00000000 	nop
  433814:	30420004 	andi	v0,v0,0x4
  433818:	1040001b 	beqz	v0,433888 <parse_basicConstraints+0x198>
  43381c:	00000000 	nop
  433820:	8fc2008c 	lw	v0,140(s8)
  433824:	00000000 	nop
  433828:	10400008 	beqz	v0,43384c <parse_basicConstraints+0x15c>
  43382c:	00000000 	nop
  433830:	8f82802c 	lw	v0,-32724(gp)
  433834:	00000000 	nop
  433838:	2442cae4 	addiu	v0,v0,-13596
  43383c:	00000000 	nop
  433840:	afc20094 	sw	v0,148(s8)
  433844:	10000006 	b	433860 <parse_basicConstraints+0x170>
  433848:	00000000 	nop
  43384c:	8f82802c 	lw	v0,-32724(gp)
  433850:	00000000 	nop
  433854:	2442caec 	addiu	v0,v0,-13588
  433858:	00000000 	nop
  43385c:	afc20094 	sw	v0,148(s8)
  433860:	8f84802c 	lw	a0,-32724(gp)
  433864:	00000000 	nop
  433868:	2484caf4 	addiu	a0,a0,-13580
  43386c:	8fc50094 	lw	a1,148(s8)
  433870:	8f9983b8 	lw	t9,-31816(gp)
  433874:	00000000 	nop
  433878:	0320f809 	jalr	t9
  43387c:	00000000 	nop
  433880:	8fdc0018 	lw	gp,24(s8)
  433884:	00000000 	nop
		DBG_log("  %s",(isCA)?"TRUE":"FALSE");
	    )
	}
	objectID++;
  433888:	8fc20088 	lw	v0,136(s8)
  43388c:	00000000 	nop
  433890:	24420001 	addiu	v0,v0,1
  433894:	afc20088 	sw	v0,136(s8)
  433898:	1000ffb0 	b	43375c <parse_basicConstraints+0x6c>
  43389c:	00000000 	nop
    }
    return isCA;
  4338a0:	8fc2008c 	lw	v0,140(s8)
  4338a4:	00000000 	nop
}
  4338a8:	03c0e821 	move	sp,s8
  4338ac:	8fbf00a0 	lw	ra,160(sp)
  4338b0:	8fbe009c 	lw	s8,156(sp)
  4338b4:	27bd00a8 	addiu	sp,sp,168
  4338b8:	03e00008 	jr	ra
  4338bc:	00000000 	nop

004338c0 <gntoid>:
  4338c0:	3c1c0fbe 	lui	gp,0xfbe
  4338c4:	279c90b0 	addiu	gp,gp,-28496
  4338c8:	0399e021 	addu	gp,gp,t9
  4338cc:	27bdffb0 	addiu	sp,sp,-80
  4338d0:	afbc0010 	sw	gp,16(sp)
  4338d4:	afbf0048 	sw	ra,72(sp)
  4338d8:	afbe0044 	sw	s8,68(sp)
  4338dc:	afbc0040 	sw	gp,64(sp)
  4338e0:	03a0f021 	move	s8,sp
  4338e4:	afc40050 	sw	a0,80(s8)
  4338e8:	afc50054 	sw	a1,84(s8)

/*
 *  Converts a X.500 generalName into an ID
 */
void
gntoid(struct id *id, const generalName_t *gn)
{
    switch(gn->kind)
  4338ec:	8fc20054 	lw	v0,84(s8)
  4338f0:	00000000 	nop
  4338f4:	8c420004 	lw	v0,4(v0)
  4338f8:	00000000 	nop
  4338fc:	afc20038 	sw	v0,56(s8)
  433900:	24020002 	li	v0,2
  433904:	8fc30038 	lw	v1,56(s8)
  433908:	00000000 	nop
  43390c:	10620014 	beq	v1,v0,433960 <gntoid+0xa0>
  433910:	00000000 	nop
  433914:	8fc30038 	lw	v1,56(s8)
  433918:	00000000 	nop
  43391c:	2c620003 	sltiu	v0,v1,3
  433920:	10400008 	beqz	v0,433944 <gntoid+0x84>
  433924:	00000000 	nop
  433928:	24020001 	li	v0,1
  43392c:	8fc30038 	lw	v1,56(s8)
  433930:	00000000 	nop
  433934:	10620038 	beq	v1,v0,433a18 <gntoid+0x158>
  433938:	00000000 	nop
  43393c:	10000045 	b	433a54 <gntoid+0x194>
  433940:	00000000 	nop
  433944:	24020007 	li	v0,7
  433948:	8fc30038 	lw	v1,56(s8)
  43394c:	00000000 	nop
  433950:	10620012 	beq	v1,v0,43399c <gntoid+0xdc>
  433954:	00000000 	nop
  433958:	1000003e 	b	433a54 <gntoid+0x194>
  43395c:	00000000 	nop
    {
    case GN_DNS_NAME:		/* ID type: ID_FQDN */
	id->kind = ID_FQDN;
  433960:	24030002 	li	v1,2
  433964:	8fc20050 	lw	v0,80(s8)
  433968:	00000000 	nop
  43396c:	ac430000 	sw	v1,0(v0)
	id->name = gn->name;
  433970:	8fc40050 	lw	a0,80(s8)
  433974:	8fc30054 	lw	v1,84(s8)
  433978:	00000000 	nop
  43397c:	8c620008 	lw	v0,8(v1)
  433980:	00000000 	nop
  433984:	ac820020 	sw	v0,32(a0)
  433988:	8c62000c 	lw	v0,12(v1)
  43398c:	00000000 	nop
  433990:	ac820024 	sw	v0,36(a0)
	break;
  433994:	1000003d 	b	433a8c <gntoid+0x1cc>
  433998:	00000000 	nop
    case GN_IP_ADDRESS:		/* ID type: ID_IPV4_ADDR */
	{
	    const struct af_info *afi = &af_inet4_info;
  43399c:	8f8281dc 	lw	v0,-32292(gp)
  4339a0:	00000000 	nop
  4339a4:	afc20018 	sw	v0,24(s8)
	    err_t ugh = NULL;
  4339a8:	afc0001c 	sw	zero,28(s8)

	    id->kind = afi->id_addr;
  4339ac:	8fc20018 	lw	v0,24(s8)
  4339b0:	00000000 	nop
  4339b4:	90430014 	lbu	v1,20(v0)
  4339b8:	8fc20050 	lw	v0,80(s8)
  4339bc:	00000000 	nop
  4339c0:	ac430000 	sw	v1,0(v0)
	    ugh = initaddr(gn->name.ptr, gn->name.len, afi->af, &id->ip_addr);
  4339c4:	8fc20050 	lw	v0,80(s8)
  4339c8:	00000000 	nop
  4339cc:	24430004 	addiu	v1,v0,4
  4339d0:	8fc20054 	lw	v0,84(s8)
  4339d4:	00000000 	nop
  4339d8:	8c440008 	lw	a0,8(v0)
  4339dc:	8fc20054 	lw	v0,84(s8)
  4339e0:	00000000 	nop
  4339e4:	8c45000c 	lw	a1,12(v0)
  4339e8:	8fc20018 	lw	v0,24(s8)
  4339ec:	00000000 	nop
  4339f0:	8c460000 	lw	a2,0(v0)
  4339f4:	00603821 	move	a3,v1
  4339f8:	8f998b78 	lw	t9,-29832(gp)
  4339fc:	00000000 	nop
  433a00:	0320f809 	jalr	t9
  433a04:	00000000 	nop
  433a08:	8fdc0010 	lw	gp,16(s8)
  433a0c:	afc2001c 	sw	v0,28(s8)
	}
	break;
  433a10:	1000001e 	b	433a8c <gntoid+0x1cc>
  433a14:	00000000 	nop
    case GN_RFC822_NAME:	/* ID type: ID_USER_FQDN */
	id->kind = ID_USER_FQDN;
  433a18:	24030003 	li	v1,3
  433a1c:	8fc20050 	lw	v0,80(s8)
  433a20:	00000000 	nop
  433a24:	ac430000 	sw	v1,0(v0)
	id->name = gn->name;
  433a28:	8fc40050 	lw	a0,80(s8)
  433a2c:	8fc30054 	lw	v1,84(s8)
  433a30:	00000000 	nop
  433a34:	8c620008 	lw	v0,8(v1)
  433a38:	00000000 	nop
  433a3c:	ac820020 	sw	v0,32(a0)
  433a40:	8c62000c 	lw	v0,12(v1)
  433a44:	00000000 	nop
  433a48:	ac820024 	sw	v0,36(a0)
	break;
  433a4c:	1000000f 	b	433a8c <gntoid+0x1cc>
  433a50:	00000000 	nop
    default:
	id->kind = ID_NONE;
  433a54:	8fc20050 	lw	v0,80(s8)
  433a58:	00000000 	nop
  433a5c:	ac400000 	sw	zero,0(v0)
	id->name = empty_chunk;
  433a60:	8fc30050 	lw	v1,80(s8)
  433a64:	8f828708 	lw	v0,-30968(gp)
  433a68:	00000000 	nop
  433a6c:	8c420000 	lw	v0,0(v0)
  433a70:	00000000 	nop
  433a74:	ac620020 	sw	v0,32(v1)
  433a78:	8f828708 	lw	v0,-30968(gp)
  433a7c:	00000000 	nop
  433a80:	8c420004 	lw	v0,4(v0)
  433a84:	00000000 	nop
  433a88:	ac620024 	sw	v0,36(v1)
	break;
    }
}
  433a8c:	03c0e821 	move	sp,s8
  433a90:	8fbf0048 	lw	ra,72(sp)
  433a94:	8fbe0044 	lw	s8,68(sp)
  433a98:	27bd0050 	addiu	sp,sp,80
  433a9c:	03e00008 	jr	ra
  433aa0:	00000000 	nop

00433aa4 <parse_generalNames>:
  433aa4:	3c1c0fbe 	lui	gp,0xfbe
  433aa8:	279c8ecc 	addiu	gp,gp,-28980
  433aac:	0399e021 	addu	gp,gp,t9
  433ab0:	27bdfd48 	addiu	sp,sp,-696
  433ab4:	afbc0018 	sw	gp,24(sp)
  433ab8:	afbf02b0 	sw	ra,688(sp)
  433abc:	afbe02ac 	sw	s8,684(sp)
  433ac0:	afbc02a8 	sw	gp,680(sp)
  433ac4:	03a0f021 	move	s8,sp
  433ac8:	afc402b8 	sw	a0,696(s8)
  433acc:	afc502bc 	sw	a1,700(s8)
  433ad0:	afc602c0 	sw	a2,704(s8)
  433ad4:	afc702c4 	sw	a3,708(s8)

/*
 * extracts one or several GNs and puts them into a chained list
 */
static generalName_t*
parse_generalNames(chunk_t blob, int level0, bool implicit)
{
    u_char buf[BUF_LEN];
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  433ad8:	afc00288 	sw	zero,648(s8)
   
    generalName_t *top_gn = NULL;
  433adc:	afc0028c 	sw	zero,652(s8)

    asn1_init(&ctx, blob, level0, implicit, DBG_RAW);
  433ae0:	8fc202c4 	lw	v0,708(s8)
  433ae4:	00000000 	nop
  433ae8:	afa20010 	sw	v0,16(sp)
  433aec:	24020001 	li	v0,1
  433af0:	afa20014 	sw	v0,20(sp)
  433af4:	27c40220 	addiu	a0,s8,544
  433af8:	8fc502b8 	lw	a1,696(s8)
  433afc:	8fc602bc 	lw	a2,700(s8)
  433b00:	8fc702c0 	lw	a3,704(s8)
  433b04:	8f998898 	lw	t9,-30568(gp)
  433b08:	00000000 	nop
  433b0c:	0320f809 	jalr	t9
  433b10:	00000000 	nop
  433b14:	8fdc0018 	lw	gp,24(s8)
  433b18:	00000000 	nop
 
    while (objectID < GN_OBJ_ROOF)
  433b1c:	8fc20288 	lw	v0,648(s8)
  433b20:	00000000 	nop
  433b24:	28420014 	slti	v0,v0,20
  433b28:	14400003 	bnez	v0,433b38 <parse_generalNames+0x94>
  433b2c:	00000000 	nop
  433b30:	100000ac 	b	433de4 <parse_generalNames+0x340>
  433b34:	00000000 	nop
    {
	bool valid_gn = FALSE;
  433b38:	afc00290 	sw	zero,656(s8)

	if (!extract_object(generalNamesObjects, &objectID, &object, &ctx))
  433b3c:	8f848018 	lw	a0,-32744(gp)
  433b40:	00000000 	nop
  433b44:	24841b7c 	addiu	a0,a0,7036
  433b48:	27c50288 	addiu	a1,s8,648
  433b4c:	27c60280 	addiu	a2,s8,640
  433b50:	27c70220 	addiu	a3,s8,544
  433b54:	8f9983bc 	lw	t9,-31812(gp)
  433b58:	00000000 	nop
  433b5c:	0320f809 	jalr	t9
  433b60:	00000000 	nop
  433b64:	8fdc0018 	lw	gp,24(s8)
  433b68:	14400004 	bnez	v0,433b7c <parse_generalNames+0xd8>
  433b6c:	00000000 	nop
	     return NULL;
  433b70:	00001021 	move	v0,zero
  433b74:	1000009d 	b	433dec <parse_generalNames+0x348>
  433b78:	00000000 	nop

	switch (objectID) {
  433b7c:	8fc20288 	lw	v0,648(s8)
  433b80:	00000000 	nop
  433b84:	2442ffff 	addiu	v0,v0,-1
  433b88:	afc20298 	sw	v0,664(s8)
  433b8c:	8fc30298 	lw	v1,664(s8)
  433b90:	00000000 	nop
  433b94:	2c620011 	sltiu	v0,v1,17
  433b98:	10400066 	beqz	v0,433d34 <parse_generalNames+0x290>
  433b9c:	00000000 	nop
  433ba0:	8fc20298 	lw	v0,664(s8)
  433ba4:	00000000 	nop
  433ba8:	00021080 	sll	v0,v0,0x2
  433bac:	8f81802c 	lw	at,-32724(gp)
  433bb0:	00000000 	nop
  433bb4:	2421cb30 	addiu	at,at,-13520
  433bb8:	00221021 	addu	v0,at,v0
  433bbc:	8c420000 	lw	v0,0(v0)
  433bc0:	00000000 	nop
  433bc4:	005c1021 	addu	v0,v0,gp
  433bc8:	00400008 	jr	v0
  433bcc:	00000000 	nop
	case GN_OBJ_RFC822_NAME:
	case GN_OBJ_DNS_NAME:
	case GN_OBJ_URI:
	    DBG(DBG_PARSING,
  433bd0:	8f8284f8 	lw	v0,-31496(gp)
  433bd4:	00000000 	nop
  433bd8:	8c420000 	lw	v0,0(v0)
  433bdc:	00000000 	nop
  433be0:	30420004 	andi	v0,v0,0x4
  433be4:	1040000c 	beqz	v0,433c18 <parse_generalNames+0x174>
  433be8:	00000000 	nop
  433bec:	8f84802c 	lw	a0,-32724(gp)
  433bf0:	00000000 	nop
  433bf4:	2484cafc 	addiu	a0,a0,-13572
  433bf8:	8fc50284 	lw	a1,644(s8)
  433bfc:	8fc60280 	lw	a2,640(s8)
  433c00:	8f9983b8 	lw	t9,-31816(gp)
  433c04:	00000000 	nop
  433c08:	0320f809 	jalr	t9
  433c0c:	00000000 	nop
  433c10:	8fdc0018 	lw	gp,24(s8)
  433c14:	00000000 	nop
		DBG_log("  '%.*s'", (int)object.len, object.ptr);
	    )
	    valid_gn = TRUE;
  433c18:	24020001 	li	v0,1
  433c1c:	afc20290 	sw	v0,656(s8)
	    break;
  433c20:	10000044 	b	433d34 <parse_generalNames+0x290>
  433c24:	00000000 	nop
	case GN_OBJ_DIRECTORY_NAME:
	    dntoa(buf, BUF_LEN, object);
  433c28:	27c40020 	addiu	a0,s8,32
  433c2c:	24050200 	li	a1,512
  433c30:	8fc60280 	lw	a2,640(s8)
  433c34:	8fc70284 	lw	a3,644(s8)
  433c38:	8f9982bc 	lw	t9,-32068(gp)
  433c3c:	00000000 	nop
  433c40:	0320f809 	jalr	t9
  433c44:	00000000 	nop
  433c48:	8fdc0018 	lw	gp,24(s8)
  433c4c:	00000000 	nop
	    DBG(DBG_PARSING,
  433c50:	8f8284f8 	lw	v0,-31496(gp)
  433c54:	00000000 	nop
  433c58:	8c420000 	lw	v0,0(v0)
  433c5c:	00000000 	nop
  433c60:	30420004 	andi	v0,v0,0x4
  433c64:	1040000b 	beqz	v0,433c94 <parse_generalNames+0x1f0>
  433c68:	00000000 	nop
  433c6c:	8f84802c 	lw	a0,-32724(gp)
  433c70:	00000000 	nop
  433c74:	2484cb08 	addiu	a0,a0,-13560
  433c78:	27c50020 	addiu	a1,s8,32
  433c7c:	8f9983b8 	lw	t9,-31816(gp)
  433c80:	00000000 	nop
  433c84:	0320f809 	jalr	t9
  433c88:	00000000 	nop
  433c8c:	8fdc0018 	lw	gp,24(s8)
  433c90:	00000000 	nop
		DBG_log("  '%s'", buf);
	    )
	    valid_gn = TRUE;
  433c94:	24020001 	li	v0,1
  433c98:	afc20290 	sw	v0,656(s8)
	    break;
  433c9c:	10000025 	b	433d34 <parse_generalNames+0x290>
  433ca0:	00000000 	nop
	case GN_OBJ_IP_ADDRESS:
	    DBG(DBG_PARSING,
  433ca4:	8f8284f8 	lw	v0,-31496(gp)
  433ca8:	00000000 	nop
  433cac:	8c420000 	lw	v0,0(v0)
  433cb0:	00000000 	nop
  433cb4:	30420004 	andi	v0,v0,0x4
  433cb8:	1040001c 	beqz	v0,433d2c <parse_generalNames+0x288>
  433cbc:	00000000 	nop
  433cc0:	8fc20280 	lw	v0,640(s8)
  433cc4:	00000000 	nop
  433cc8:	90450000 	lbu	a1,0(v0)
  433ccc:	8fc20280 	lw	v0,640(s8)
  433cd0:	00000000 	nop
  433cd4:	24420001 	addiu	v0,v0,1
  433cd8:	90460000 	lbu	a2,0(v0)
  433cdc:	8fc20280 	lw	v0,640(s8)
  433ce0:	00000000 	nop
  433ce4:	24420002 	addiu	v0,v0,2
  433ce8:	90430000 	lbu	v1,0(v0)
  433cec:	8fc20280 	lw	v0,640(s8)
  433cf0:	00000000 	nop
  433cf4:	24420003 	addiu	v0,v0,3
  433cf8:	90420000 	lbu	v0,0(v0)
  433cfc:	00000000 	nop
  433d00:	afa20010 	sw	v0,16(sp)
  433d04:	8f84802c 	lw	a0,-32724(gp)
  433d08:	00000000 	nop
  433d0c:	2484cb10 	addiu	a0,a0,-13552
  433d10:	00603821 	move	a3,v1
  433d14:	8f9983b8 	lw	t9,-31816(gp)
  433d18:	00000000 	nop
  433d1c:	0320f809 	jalr	t9
  433d20:	00000000 	nop
  433d24:	8fdc0018 	lw	gp,24(s8)
  433d28:	00000000 	nop
		DBG_log("  '%d.%d.%d.%d'", *object.ptr, *(object.ptr+1),
				      *(object.ptr+2), *(object.ptr+3));
	    )
	    valid_gn = TRUE;
  433d2c:	24020001 	li	v0,1
  433d30:	afc20290 	sw	v0,656(s8)
	    break;
	case GN_OBJ_OTHER_NAME:
	case GN_OBJ_X400_ADDRESS:
	case GN_OBJ_EDI_PARTY_NAME:
	case GN_OBJ_REGISTERED_ID:
	    break;
	default:
	    break;
	}

	if (valid_gn)
  433d34:	8fc20290 	lw	v0,656(s8)
  433d38:	00000000 	nop
  433d3c:	10400023 	beqz	v0,433dcc <parse_generalNames+0x328>
  433d40:	00000000 	nop
	{
	    generalName_t *gn = alloc_thing(generalName_t, "generalName");
  433d44:	24040010 	li	a0,16
  433d48:	8f85802c 	lw	a1,-32724(gp)
  433d4c:	00000000 	nop
  433d50:	24a5cb20 	addiu	a1,a1,-13536
  433d54:	8f998084 	lw	t9,-32636(gp)
  433d58:	00000000 	nop
  433d5c:	0320f809 	jalr	t9
  433d60:	00000000 	nop
  433d64:	8fdc0018 	lw	gp,24(s8)
  433d68:	afc20294 	sw	v0,660(s8)
	    gn->kind = (objectID - GN_OBJ_OTHER_NAME) / 2;
  433d6c:	8fc20288 	lw	v0,648(s8)
  433d70:	00000000 	nop
  433d74:	2443ffff 	addiu	v1,v0,-1
  433d78:	000317c3 	sra	v0,v1,0x1f
  433d7c:	000217c2 	srl	v0,v0,0x1f
  433d80:	00621021 	addu	v0,v1,v0
  433d84:	00021843 	sra	v1,v0,0x1
  433d88:	8fc20294 	lw	v0,660(s8)
  433d8c:	00000000 	nop
  433d90:	ac430004 	sw	v1,4(v0)
	    gn->name = object;
  433d94:	8fc30294 	lw	v1,660(s8)
  433d98:	8fc20280 	lw	v0,640(s8)
  433d9c:	00000000 	nop
  433da0:	ac620008 	sw	v0,8(v1)
  433da4:	8fc20284 	lw	v0,644(s8)
  433da8:	00000000 	nop
  433dac:	ac62000c 	sw	v0,12(v1)
	    gn->next = top_gn;
  433db0:	8fc3028c 	lw	v1,652(s8)
  433db4:	8fc20294 	lw	v0,660(s8)
  433db8:	00000000 	nop
  433dbc:	ac430000 	sw	v1,0(v0)
	    top_gn = gn;
  433dc0:	8fc20294 	lw	v0,660(s8)
  433dc4:	00000000 	nop
  433dc8:	afc2028c 	sw	v0,652(s8)
	}
	objectID++;
  433dcc:	8fc20288 	lw	v0,648(s8)
  433dd0:	00000000 	nop
  433dd4:	24420001 	addiu	v0,v0,1
  433dd8:	afc20288 	sw	v0,648(s8)
  433ddc:	1000ff4f 	b	433b1c <parse_generalNames+0x78>
  433de0:	00000000 	nop
    }
    return top_gn;
  433de4:	8fc2028c 	lw	v0,652(s8)
  433de8:	00000000 	nop
}
  433dec:	03c0e821 	move	sp,s8
  433df0:	8fbf02b0 	lw	ra,688(sp)
  433df4:	8fbe02ac 	lw	s8,684(sp)
  433df8:	27bd02b8 	addiu	sp,sp,696
  433dfc:	03e00008 	jr	ra
  433e00:	00000000 	nop

00433e04 <parse_keyIdentifier>:
  433e04:	3c1c0fbe 	lui	gp,0xfbe
  433e08:	279c8b6c 	addiu	gp,gp,-29844
  433e0c:	0399e021 	addu	gp,gp,t9
  433e10:	27bdff58 	addiu	sp,sp,-168
  433e14:	afbc0018 	sw	gp,24(sp)
  433e18:	afbf00a4 	sw	ra,164(sp)
  433e1c:	afbe00a0 	sw	s8,160(sp)
  433e20:	afbc009c 	sw	gp,156(sp)
  433e24:	afb00098 	sw	s0,152(sp)
  433e28:	03a0f021 	move	s8,sp
  433e2c:	00808021 	move	s0,a0
  433e30:	afc500ac 	sw	a1,172(s8)
  433e34:	afc600b0 	sw	a2,176(s8)
  433e38:	afc700b4 	sw	a3,180(s8)

/*
 * extracts a keyIdentifier
 */
static chunk_t
parse_keyIdentifier(chunk_t blob, int level0, bool implicit)
{
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  433e3c:	afc00088 	sw	zero,136(s8)

    asn1_init(&ctx, blob, level0, implicit, DBG_RAW);
  433e40:	8fc200b8 	lw	v0,184(s8)
  433e44:	00000000 	nop
  433e48:	afa20010 	sw	v0,16(sp)
  433e4c:	24020001 	li	v0,1
  433e50:	afa20014 	sw	v0,20(sp)
  433e54:	27c40020 	addiu	a0,s8,32
  433e58:	8fc500ac 	lw	a1,172(s8)
  433e5c:	8fc600b0 	lw	a2,176(s8)
  433e60:	8fc700b4 	lw	a3,180(s8)
  433e64:	8f998898 	lw	t9,-30568(gp)
  433e68:	00000000 	nop
  433e6c:	0320f809 	jalr	t9
  433e70:	00000000 	nop
  433e74:	8fdc0018 	lw	gp,24(s8)
  433e78:	00000000 	nop

    extract_object(keyIdentifierObjects, &objectID, &object, &ctx);
  433e7c:	8f848018 	lw	a0,-32744(gp)
  433e80:	00000000 	nop
  433e84:	24841afc 	addiu	a0,a0,6908
  433e88:	27c50088 	addiu	a1,s8,136
  433e8c:	27c60080 	addiu	a2,s8,128
  433e90:	27c70020 	addiu	a3,s8,32
  433e94:	8f9983bc 	lw	t9,-31812(gp)
  433e98:	00000000 	nop
  433e9c:	0320f809 	jalr	t9
  433ea0:	00000000 	nop
  433ea4:	8fdc0018 	lw	gp,24(s8)
  433ea8:	00000000 	nop
    return object;
  433eac:	8fc20080 	lw	v0,128(s8)
  433eb0:	00000000 	nop
  433eb4:	ae020000 	sw	v0,0(s0)
  433eb8:	8fc20084 	lw	v0,132(s8)
  433ebc:	00000000 	nop
  433ec0:	ae020004 	sw	v0,4(s0)
}
  433ec4:	02001021 	move	v0,s0
  433ec8:	03c0e821 	move	sp,s8
  433ecc:	8fbf00a4 	lw	ra,164(sp)
  433ed0:	8fbe00a0 	lw	s8,160(sp)
  433ed4:	8fb00098 	lw	s0,152(sp)
  433ed8:	27bd00a8 	addiu	sp,sp,168
  433edc:	03e00008 	jr	ra
  433ee0:	00000000 	nop

00433ee4 <parse_authorityKeyIdentifier>:
  433ee4:	3c1c0fbe 	lui	gp,0xfbe
  433ee8:	279c8a8c 	addiu	gp,gp,-30068
  433eec:	0399e021 	addu	gp,gp,t9
  433ef0:	27bdff50 	addiu	sp,sp,-176
  433ef4:	afbc0018 	sw	gp,24(sp)
  433ef8:	afbf00a8 	sw	ra,168(sp)
  433efc:	afbe00a4 	sw	s8,164(sp)
  433f00:	afbc00a0 	sw	gp,160(sp)
  433f04:	03a0f021 	move	s8,sp
  433f08:	afc400b0 	sw	a0,176(s8)
  433f0c:	afc500b4 	sw	a1,180(s8)
  433f10:	afc600b8 	sw	a2,184(s8)
  433f14:	afc700bc 	sw	a3,188(s8)

/*
 * extracts an authoritykeyIdentifier
 */
static void
parse_authorityKeyIdentifier(chunk_t blob, int level0
    , chunk_t *authKeyID, chunk_t *authKeySerialNumber)
{
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  433f18:	afc00088 	sw	zero,136(s8)

    asn1_init(&ctx, blob, level0, FALSE, DBG_RAW);
  433f1c:	afa00010 	sw	zero,16(sp)
  433f20:	24020001 	li	v0,1
  433f24:	afa20014 	sw	v0,20(sp)
  433f28:	27c40020 	addiu	a0,s8,32
  433f2c:	8fc500b0 	lw	a1,176(s8)
  433f30:	8fc600b4 	lw	a2,180(s8)
  433f34:	8fc700b8 	lw	a3,184(s8)
  433f38:	8f998898 	lw	t9,-30568(gp)
  433f3c:	00000000 	nop
  433f40:	0320f809 	jalr	t9
  433f44:	00000000 	nop
  433f48:	8fdc0018 	lw	gp,24(s8)
  433f4c:	00000000 	nop

    while (objectID < AUTH_KEY_ID_ROOF)
  433f50:	8fc20088 	lw	v0,136(s8)
  433f54:	00000000 	nop
  433f58:	28420007 	slti	v0,v0,7
  433f5c:	14400003 	bnez	v0,433f6c <parse_authorityKeyIdentifier+0x88>
  433f60:	00000000 	nop
  433f64:	10000078 	b	434148 <parse_authorityKeyIdentifier+0x264>
  433f68:	00000000 	nop
    {
	if (!extract_object(authorityKeyIdentifierObjects, &objectID, &object, &ctx))
  433f6c:	8f848018 	lw	a0,-32744(gp)
  433f70:	00000000 	nop
  433f74:	24841b0c 	addiu	a0,a0,6924
  433f78:	27c50088 	addiu	a1,s8,136
  433f7c:	27c60080 	addiu	a2,s8,128
  433f80:	27c70020 	addiu	a3,s8,32
  433f84:	8f9983bc 	lw	t9,-31812(gp)
  433f88:	00000000 	nop
  433f8c:	0320f809 	jalr	t9
  433f90:	00000000 	nop
  433f94:	8fdc0018 	lw	gp,24(s8)
  433f98:	14400003 	bnez	v0,433fa8 <parse_authorityKeyIdentifier+0xc4>
  433f9c:	00000000 	nop
	     return;
  433fa0:	10000069 	b	434148 <parse_authorityKeyIdentifier+0x264>
  433fa4:	00000000 	nop

	switch (objectID) {
  433fa8:	8fc20088 	lw	v0,136(s8)
  433fac:	00000000 	nop
  433fb0:	afc2009c 	sw	v0,156(s8)
  433fb4:	24020003 	li	v0,3
  433fb8:	8fc3009c 	lw	v1,156(s8)
  433fbc:	00000000 	nop
  433fc0:	10620031 	beq	v1,v0,434088 <parse_authorityKeyIdentifier+0x1a4>
  433fc4:	00000000 	nop
  433fc8:	8fc3009c 	lw	v1,156(s8)
  433fcc:	00000000 	nop
  433fd0:	28620004 	slti	v0,v1,4
  433fd4:	10400008 	beqz	v0,433ff8 <parse_authorityKeyIdentifier+0x114>
  433fd8:	00000000 	nop
  433fdc:	24020001 	li	v0,1
  433fe0:	8fc3009c 	lw	v1,156(s8)
  433fe4:	00000000 	nop
  433fe8:	1062000a 	beq	v1,v0,434014 <parse_authorityKeyIdentifier+0x130>
  433fec:	00000000 	nop
  433ff0:	1000004f 	b	434130 <parse_authorityKeyIdentifier+0x24c>
  433ff4:	00000000 	nop
  433ff8:	24020005 	li	v0,5
  433ffc:	8fc3009c 	lw	v1,156(s8)
  434000:	00000000 	nop
  434004:	10620043 	beq	v1,v0,434114 <parse_authorityKeyIdentifier+0x230>
  434008:	00000000 	nop
  43400c:	10000048 	b	434130 <parse_authorityKeyIdentifier+0x24c>
  434010:	00000000 	nop
	case AUTH_KEY_ID_KEY_ID:
	    {
		u_int level = level0 + authorityKeyIdentifierObjects[objectID].level + 1;
  434014:	8fc20088 	lw	v0,136(s8)
  434018:	00000000 	nop
  43401c:	00021100 	sll	v0,v0,0x4
  434020:	8f818018 	lw	at,-32744(gp)
  434024:	00000000 	nop
  434028:	24211b0c 	addiu	at,at,6924
  43402c:	00221021 	addu	v0,at,v0
  434030:	8c430000 	lw	v1,0(v0)
  434034:	8fc200b8 	lw	v0,184(s8)
  434038:	00000000 	nop
  43403c:	00431021 	addu	v0,v0,v1
  434040:	24420001 	addiu	v0,v0,1
  434044:	afc2008c 	sw	v0,140(s8)

	        *authKeyID = parse_keyIdentifier(object, level, TRUE);
  434048:	24020001 	li	v0,1
  43404c:	afa20010 	sw	v0,16(sp)
  434050:	8fc400bc 	lw	a0,188(s8)
  434054:	8fc50080 	lw	a1,128(s8)
  434058:	8fc60084 	lw	a2,132(s8)
  43405c:	8fc7008c 	lw	a3,140(s8)
  434060:	8f998030 	lw	t9,-32720(gp)
  434064:	00000000 	nop
  434068:	27393e04 	addiu	t9,t9,15876
  43406c:	00000000 	nop
  434070:	0320f809 	jalr	t9
  434074:	00000000 	nop
  434078:	8fdc0018 	lw	gp,24(s8)
  43407c:	00000000 	nop
	    }
	    break;
  434080:	1000002b 	b	434130 <parse_authorityKeyIdentifier+0x24c>
  434084:	00000000 	nop
	case AUTH_KEY_ID_CERT_ISSUER:
	    {
		u_int level = level0 + authorityKeyIdentifierObjects[objectID].level + 1;
  434088:	8fc20088 	lw	v0,136(s8)
  43408c:	00000000 	nop
  434090:	00021100 	sll	v0,v0,0x4
  434094:	8f818018 	lw	at,-32744(gp)
  434098:	00000000 	nop
  43409c:	24211b0c 	addiu	at,at,6924
  4340a0:	00221021 	addu	v0,at,v0
  4340a4:	8c430000 	lw	v1,0(v0)
  4340a8:	8fc200b8 	lw	v0,184(s8)
  4340ac:	00000000 	nop
  4340b0:	00431021 	addu	v0,v0,v1
  4340b4:	24420001 	addiu	v0,v0,1
  4340b8:	afc2008c 	sw	v0,140(s8)
		generalName_t * gn = parse_generalNames(object, level, TRUE);
  4340bc:	8fc40080 	lw	a0,128(s8)
  4340c0:	8fc50084 	lw	a1,132(s8)
  4340c4:	8fc6008c 	lw	a2,140(s8)
  4340c8:	24070001 	li	a3,1
  4340cc:	8f998030 	lw	t9,-32720(gp)
  4340d0:	00000000 	nop
  4340d4:	27393aa4 	addiu	t9,t9,15012
  4340d8:	00000000 	nop
  4340dc:	0320f809 	jalr	t9
  4340e0:	00000000 	nop
  4340e4:	8fdc0018 	lw	gp,24(s8)
  4340e8:	afc20090 	sw	v0,144(s8)

		free_generalNames(gn, FALSE);
  4340ec:	8fc40090 	lw	a0,144(s8)
  4340f0:	00002821 	move	a1,zero
  4340f4:	8f9987ac 	lw	t9,-30804(gp)
  4340f8:	00000000 	nop
  4340fc:	0320f809 	jalr	t9
  434100:	00000000 	nop
  434104:	8fdc0018 	lw	gp,24(s8)
  434108:	00000000 	nop
	    }
	    break;
  43410c:	10000008 	b	434130 <parse_authorityKeyIdentifier+0x24c>
  434110:	00000000 	nop
	case AUTH_KEY_ID_CERT_SERIAL:
	    *authKeySerialNumber = object;
  434114:	8fc200c0 	lw	v0,192(s8)
  434118:	8fc30080 	lw	v1,128(s8)
  43411c:	00000000 	nop
  434120:	ac430000 	sw	v1,0(v0)
  434124:	8fc30084 	lw	v1,132(s8)
  434128:	00000000 	nop
  43412c:	ac430004 	sw	v1,4(v0)
	    break;
	default:
	    break;
	}
	objectID++;
  434130:	8fc20088 	lw	v0,136(s8)
  434134:	00000000 	nop
  434138:	24420001 	addiu	v0,v0,1
  43413c:	afc20088 	sw	v0,136(s8)
  434140:	1000ff83 	b	433f50 <parse_authorityKeyIdentifier+0x6c>
  434144:	00000000 	nop
    }
}
  434148:	03c0e821 	move	sp,s8
  43414c:	8fbf00a8 	lw	ra,168(sp)
  434150:	8fbe00a4 	lw	s8,164(sp)
  434154:	27bd00b0 	addiu	sp,sp,176
  434158:	03e00008 	jr	ra
  43415c:	00000000 	nop

00434160 <parse_crlDistributionPoints>:
  434160:	3c1c0fbe 	lui	gp,0xfbe
  434164:	279c8810 	addiu	gp,gp,-30704
  434168:	0399e021 	addu	gp,gp,t9
  43416c:	27bdff50 	addiu	sp,sp,-176
  434170:	afbc0018 	sw	gp,24(sp)
  434174:	afbf00a8 	sw	ra,168(sp)
  434178:	afbe00a4 	sw	s8,164(sp)
  43417c:	afbc00a0 	sw	gp,160(sp)
  434180:	03a0f021 	move	s8,sp
  434184:	afc400b0 	sw	a0,176(s8)
  434188:	afc500b4 	sw	a1,180(s8)
  43418c:	afc600b8 	sw	a2,184(s8)

/*  extracts one or several crlDistributionPoints and puts them into
 *  a chained list
 */
static generalName_t*
parse_crlDistributionPoints(chunk_t blob, int level0)
{
    asn1_ctx_t ctx;
    chunk_t object;
    int objectID = 0;
  434190:	afc00088 	sw	zero,136(s8)

    generalName_t *top_gn = NULL;      /* top of the chained list */
  434194:	afc0008c 	sw	zero,140(s8)
    generalName_t **tail_gn = &top_gn; /* tail of the chained list */
  434198:	27c2008c 	addiu	v0,s8,140
  43419c:	afc20090 	sw	v0,144(s8)

    asn1_init(&ctx, blob, level0, FALSE, DBG_RAW);
  4341a0:	afa00010 	sw	zero,16(sp)
  4341a4:	24020001 	li	v0,1
  4341a8:	afa20014 	sw	v0,20(sp)
  4341ac:	27c40020 	addiu	a0,s8,32
  4341b0:	8fc500b0 	lw	a1,176(s8)
  4341b4:	8fc600b4 	lw	a2,180(s8)
  4341b8:	8fc700b8 	lw	a3,184(s8)
  4341bc:	8f998898 	lw	t9,-30568(gp)
  4341c0:	00000000 	nop
  4341c4:	0320f809 	jalr	t9
  4341c8:	00000000 	nop
  4341cc:	8fdc0018 	lw	gp,24(s8)
  4341d0:	00000000 	nop

    while (objectID < CRL_DIST_POINTS_ROOF)
  4341d4:	8fc20088 	lw	v0,136(s8)
  4341d8:	00000000 	nop
  4341dc:	2842000d 	slti	v0,v0,13
  4341e0:	14400003 	bnez	v0,4341f0 <parse_crlDistributionPoints+0x90>
  4341e4:	00000000 	nop
  4341e8:	10000047 	b	434308 <parse_crlDistributionPoints+0x1a8>
  4341ec:	00000000 	nop
    {
	if (!extract_object(crlDistributionPointsObjects, &objectID,
			    &object, &ctx))
  4341f0:	8f848018 	lw	a0,-32744(gp)
  4341f4:	00000000 	nop
  4341f8:	24841cbc 	addiu	a0,a0,7356
  4341fc:	27c50088 	addiu	a1,s8,136
  434200:	27c60080 	addiu	a2,s8,128
  434204:	27c70020 	addiu	a3,s8,32
  434208:	8f9983bc 	lw	t9,-31812(gp)
  43420c:	00000000 	nop
  434210:	0320f809 	jalr	t9
  434214:	00000000 	nop
  434218:	8fdc0018 	lw	gp,24(s8)
  43421c:	14400004 	bnez	v0,434230 <parse_crlDistributionPoints+0xd0>
  434220:	00000000 	nop
	     return NULL;
  434224:	00001021 	move	v0,zero
  434228:	10000039 	b	434310 <parse_crlDistributionPoints+0x1b0>
  43422c:	00000000 	nop

	if (objectID == CRL_DIST_POINTS_FULLNAME)
  434230:	8fc30088 	lw	v1,136(s8)
  434234:	24020003 	li	v0,3
  434238:	1462002d 	bne	v1,v0,4342f0 <parse_crlDistributionPoints+0x190>
  43423c:	00000000 	nop
	{
	    u_int level = crlDistributionPointsObjects[objectID].level + level0;
  434240:	8fc20088 	lw	v0,136(s8)
  434244:	00000000 	nop
  434248:	00021100 	sll	v0,v0,0x4
  43424c:	8f818018 	lw	at,-32744(gp)
  434250:	00000000 	nop
  434254:	24211cbc 	addiu	at,at,7356
  434258:	00221021 	addu	v0,at,v0
  43425c:	8c430000 	lw	v1,0(v0)
  434260:	8fc200b8 	lw	v0,184(s8)
  434264:	00000000 	nop
  434268:	00621021 	addu	v0,v1,v0
  43426c:	afc20094 	sw	v0,148(s8)
	    generalName_t *gn = parse_generalNames(object, level, TRUE);
  434270:	8fc40080 	lw	a0,128(s8)
  434274:	8fc50084 	lw	a1,132(s8)
  434278:	8fc60094 	lw	a2,148(s8)
  43427c:	24070001 	li	a3,1
  434280:	8f998030 	lw	t9,-32720(gp)
  434284:	00000000 	nop
  434288:	27393aa4 	addiu	t9,t9,15012
  43428c:	00000000 	nop
  434290:	0320f809 	jalr	t9
  434294:	00000000 	nop
  434298:	8fdc0018 	lw	gp,24(s8)
  43429c:	afc20098 	sw	v0,152(s8)
	    /* append extracted generalNames to existing chained list */
	    *tail_gn = gn;
  4342a0:	8fc30098 	lw	v1,152(s8)
  4342a4:	8fc20090 	lw	v0,144(s8)
  4342a8:	00000000 	nop
  4342ac:	ac430000 	sw	v1,0(v0)
	    /* find new tail of the chained list */
            while (gn != NULL)
  4342b0:	8fc20098 	lw	v0,152(s8)
  4342b4:	00000000 	nop
  4342b8:	14400003 	bnez	v0,4342c8 <parse_crlDistributionPoints+0x168>
  4342bc:	00000000 	nop
  4342c0:	1000000b 	b	4342f0 <parse_crlDistributionPoints+0x190>
  4342c4:	00000000 	nop
	    {
		tail_gn = &gn->next;  gn = gn->next;
  4342c8:	8fc20098 	lw	v0,152(s8)
  4342cc:	00000000 	nop
  4342d0:	afc20090 	sw	v0,144(s8)
  4342d4:	8fc20098 	lw	v0,152(s8)
  4342d8:	00000000 	nop
  4342dc:	8c420000 	lw	v0,0(v0)
  4342e0:	00000000 	nop
  4342e4:	afc20098 	sw	v0,152(s8)
  4342e8:	1000fff1 	b	4342b0 <parse_crlDistributionPoints+0x150>
  4342ec:	00000000 	nop
	    }
	}
	objectID++;
  4342f0:	8fc20088 	lw	v0,136(s8)
  4342f4:	00000000 	nop
  4342f8:	24420001 	addiu	v0,v0,1
  4342fc:	afc20088 	sw	v0,136(s8)
  434300:	1000ffb4 	b	4341d4 <parse_crlDistributionPoints+0x74>
  434304:	00000000 	nop
    }
    return top_gn;
  434308:	8fc2008c 	lw	v0,140(s8)
  43430c:	00000000 	nop
}
  434310:	03c0e821 	move	sp,s8
  434314:	8fbf00a8 	lw	ra,168(sp)
  434318:	8fbe00a4 	lw	s8,164(sp)
  43431c:	27bd00b0 	addiu	sp,sp,176
  434320:	03e00008 	jr	ra
  434324:	00000000 	nop

00434328 <parse_x509cert>:
  434328:	3c1c0fbe 	lui	gp,0xfbe
  43432c:	279c8648 	addiu	gp,gp,-31160
  434330:	0399e021 	addu	gp,gp,t9
  434334:	27bdfce0 	addiu	sp,sp,-800
  434338:	afbc0018 	sw	gp,24(sp)
  43433c:	afbf031c 	sw	ra,796(sp)
  434340:	afbe0318 	sw	s8,792(sp)
  434344:	afbc0314 	sw	gp,788(sp)
  434348:	afb00310 	sw	s0,784(sp)
  43434c:	03a0f021 	move	s8,sp
  434350:	afc40320 	sw	a0,800(s8)
  434354:	afc50324 	sw	a1,804(s8)
  434358:	afc60328 	sw	a2,808(s8)
  43435c:	afc7032c 	sw	a3,812(s8)


/*
 *  Parses an X.509v3 certificate
 */
bool
parse_x509cert(chunk_t blob, u_int level0, x509cert_t *cert)
{
    u_char  buf[BUF_LEN];
    asn1_ctx_t ctx;
    bool critical;
    chunk_t extnID;
    chunk_t object;
    int objectID = 0;
  434360:	afc00298 	sw	zero,664(s8)

    asn1_init(&ctx, blob, level0, FALSE, DBG_RAW);
  434364:	afa00010 	sw	zero,16(sp)
  434368:	24020001 	li	v0,1
  43436c:	afa20014 	sw	v0,20(sp)
  434370:	27c40220 	addiu	a0,s8,544
  434374:	8fc50320 	lw	a1,800(s8)
  434378:	8fc60324 	lw	a2,804(s8)
  43437c:	8fc70328 	lw	a3,808(s8)
  434380:	8f998898 	lw	t9,-30568(gp)
  434384:	00000000 	nop
  434388:	0320f809 	jalr	t9
  43438c:	00000000 	nop
  434390:	8fdc0018 	lw	gp,24(s8)
  434394:	00000000 	nop

    while (objectID < X509_OBJ_ROOF)
  434398:	8fc20298 	lw	v0,664(s8)
  43439c:	00000000 	nop
  4343a0:	28420022 	slti	v0,v0,34
  4343a4:	14400003 	bnez	v0,4343b4 <parse_x509cert+0x8c>
  4343a8:	00000000 	nop
  4343ac:	100001d5 	b	434b04 <parse_x509cert+0x7dc>
  4343b0:	00000000 	nop
    {
	if (!extract_object(certObjects, &objectID, &object, &ctx))
  4343b4:	8f848018 	lw	a0,-32744(gp)
  4343b8:	00000000 	nop
  4343bc:	24841d8c 	addiu	a0,a0,7564
  4343c0:	27c50298 	addiu	a1,s8,664
  4343c4:	27c60290 	addiu	a2,s8,656
  4343c8:	27c70220 	addiu	a3,s8,544
  4343cc:	8f9983bc 	lw	t9,-31812(gp)
  4343d0:	00000000 	nop
  4343d4:	0320f809 	jalr	t9
  4343d8:	00000000 	nop
  4343dc:	8fdc0018 	lw	gp,24(s8)
  4343e0:	14400004 	bnez	v0,4343f4 <parse_x509cert+0xcc>
  4343e4:	00000000 	nop
	     return FALSE;
  4343e8:	00001021 	move	v0,zero
  4343ec:	100001d0 	b	434b30 <parse_x509cert+0x808>
  4343f0:	00000000 	nop

	switch (objectID) {
  4343f4:	8fc20298 	lw	v0,664(s8)
  4343f8:	00000000 	nop
  4343fc:	2c420022 	sltiu	v0,v0,34
  434400:	104001ba 	beqz	v0,434aec <parse_x509cert+0x7c4>
  434404:	00000000 	nop
  434408:	8fc20298 	lw	v0,664(s8)
  43440c:	00000000 	nop
  434410:	00021080 	sll	v0,v0,0x2
  434414:	8f81802c 	lw	at,-32724(gp)
  434418:	00000000 	nop
  43441c:	2421cb80 	addiu	at,at,-13440
  434420:	00221021 	addu	v0,at,v0
  434424:	8c420000 	lw	v0,0(v0)
  434428:	00000000 	nop
  43442c:	005c1021 	addu	v0,v0,gp
  434430:	00400008 	jr	v0
  434434:	00000000 	nop
	case X509_OBJ_CERTIFICATE:
	    cert->certificate = object;
  434438:	8fc2032c 	lw	v0,812(s8)
  43443c:	8fc30290 	lw	v1,656(s8)
  434440:	00000000 	nop
  434444:	ac43000c 	sw	v1,12(v0)
  434448:	8fc30294 	lw	v1,660(s8)
  43444c:	00000000 	nop
  434450:	ac430010 	sw	v1,16(v0)
	    break;
  434454:	100001a5 	b	434aec <parse_x509cert+0x7c4>
  434458:	00000000 	nop
	case X509_OBJ_TBS_CERTIFICATE:
	    cert->tbsCertificate = object;
  43445c:	8fc2032c 	lw	v0,812(s8)
  434460:	8fc30290 	lw	v1,656(s8)
  434464:	00000000 	nop
  434468:	ac430014 	sw	v1,20(v0)
  43446c:	8fc30294 	lw	v1,660(s8)
  434470:	00000000 	nop
  434474:	ac430018 	sw	v1,24(v0)
	    break;
  434478:	1000019c 	b	434aec <parse_x509cert+0x7c4>
  43447c:	00000000 	nop
	case X509_OBJ_VERSION:
	    cert->version = (object.len) ? (1+(u_int)*object.ptr) : 1;
  434480:	8fc2032c 	lw	v0,812(s8)
  434484:	00000000 	nop
  434488:	afc202b4 	sw	v0,692(s8)
  43448c:	8fc20294 	lw	v0,660(s8)
  434490:	00000000 	nop
  434494:	1040000c 	beqz	v0,4344c8 <parse_x509cert+0x1a0>
  434498:	00000000 	nop
  43449c:	8fc20290 	lw	v0,656(s8)
  4344a0:	00000000 	nop
  4344a4:	90420000 	lbu	v0,0(v0)
  4344a8:	00000000 	nop
  4344ac:	afc202b8 	sw	v0,696(s8)
  4344b0:	8fc302b8 	lw	v1,696(s8)
  4344b4:	00000000 	nop
  4344b8:	24630001 	addiu	v1,v1,1
  4344bc:	afc302b8 	sw	v1,696(s8)
  4344c0:	10000003 	b	4344d0 <parse_x509cert+0x1a8>
  4344c4:	00000000 	nop
  4344c8:	24020001 	li	v0,1
  4344cc:	afc202b8 	sw	v0,696(s8)
  4344d0:	8fc202b8 	lw	v0,696(s8)
  4344d4:	8fc302b4 	lw	v1,692(s8)
  4344d8:	00000000 	nop
  4344dc:	ac62001c 	sw	v0,28(v1)
	    DBG(DBG_PARSING,
  4344e0:	8f8284f8 	lw	v0,-31496(gp)
  4344e4:	00000000 	nop
  4344e8:	8c420000 	lw	v0,0(v0)
  4344ec:	00000000 	nop
  4344f0:	30420004 	andi	v0,v0,0x4
  4344f4:	1040017d 	beqz	v0,434aec <parse_x509cert+0x7c4>
  4344f8:	00000000 	nop
  4344fc:	8f84802c 	lw	a0,-32724(gp)
  434500:	00000000 	nop
  434504:	2484cb74 	addiu	a0,a0,-13452
  434508:	8fc2032c 	lw	v0,812(s8)
  43450c:	00000000 	nop
  434510:	8c45001c 	lw	a1,28(v0)
  434514:	8f9983b8 	lw	t9,-31816(gp)
  434518:	00000000 	nop
  43451c:	0320f809 	jalr	t9
  434520:	00000000 	nop
  434524:	8fdc0018 	lw	gp,24(s8)
  434528:	00000000 	nop
		DBG_log("  v%d", cert->version);
	    )
	    break;
  43452c:	1000016f 	b	434aec <parse_x509cert+0x7c4>
  434530:	00000000 	nop
	case X509_OBJ_SERIAL_NUMBER:
	    cert->serialNumber = object;
  434534:	8fc2032c 	lw	v0,812(s8)
  434538:	8fc30290 	lw	v1,656(s8)
  43453c:	00000000 	nop
  434540:	ac430020 	sw	v1,32(v0)
  434544:	8fc30294 	lw	v1,660(s8)
  434548:	00000000 	nop
  43454c:	ac430024 	sw	v1,36(v0)
	    break;
  434550:	10000166 	b	434aec <parse_x509cert+0x7c4>
  434554:	00000000 	nop
	case X509_OBJ_SIG_ALG:
	    cert->sigAlg = object;
  434558:	8fc2032c 	lw	v0,812(s8)
  43455c:	8fc30290 	lw	v1,656(s8)
  434560:	00000000 	nop
  434564:	ac430028 	sw	v1,40(v0)
  434568:	8fc30294 	lw	v1,660(s8)
  43456c:	00000000 	nop
  434570:	ac43002c 	sw	v1,44(v0)
	    break;
  434574:	1000015d 	b	434aec <parse_x509cert+0x7c4>
  434578:	00000000 	nop
	case X509_OBJ_ISSUER:
	    cert->issuer = object;
  43457c:	8fc3032c 	lw	v1,812(s8)
  434580:	8fc20290 	lw	v0,656(s8)
  434584:	00000000 	nop
  434588:	ac620030 	sw	v0,48(v1)
  43458c:	8fc20294 	lw	v0,660(s8)
  434590:	00000000 	nop
  434594:	ac620034 	sw	v0,52(v1)
	    dntoa(buf, BUF_LEN, object);
  434598:	27c40020 	addiu	a0,s8,32
  43459c:	24050200 	li	a1,512
  4345a0:	8fc60290 	lw	a2,656(s8)
  4345a4:	8fc70294 	lw	a3,660(s8)
  4345a8:	8f9982bc 	lw	t9,-32068(gp)
  4345ac:	00000000 	nop
  4345b0:	0320f809 	jalr	t9
  4345b4:	00000000 	nop
  4345b8:	8fdc0018 	lw	gp,24(s8)
  4345bc:	00000000 	nop
	    DBG(DBG_PARSING,
  4345c0:	8f8284f8 	lw	v0,-31496(gp)
  4345c4:	00000000 	nop
  4345c8:	8c420000 	lw	v0,0(v0)
  4345cc:	00000000 	nop
  4345d0:	30420004 	andi	v0,v0,0x4
  4345d4:	10400145 	beqz	v0,434aec <parse_x509cert+0x7c4>
  4345d8:	00000000 	nop
  4345dc:	8f84802c 	lw	a0,-32724(gp)
  4345e0:	00000000 	nop
  4345e4:	2484cb08 	addiu	a0,a0,-13560
  4345e8:	27c50020 	addiu	a1,s8,32
  4345ec:	8f9983b8 	lw	t9,-31816(gp)
  4345f0:	00000000 	nop
  4345f4:	0320f809 	jalr	t9
  4345f8:	00000000 	nop
  4345fc:	8fdc0018 	lw	gp,24(s8)
  434600:	00000000 	nop
		DBG_log("  '%s'",buf);
	    )
	    break;
  434604:	10000139 	b	434aec <parse_x509cert+0x7c4>
  434608:	00000000 	nop
	case X509_OBJ_NOT_BEFORE:
	    cert->notBefore = asn1totime(&object, ASN1_UTCTIME);
  43460c:	8fd0032c 	lw	s0,812(s8)
  434610:	27c40290 	addiu	a0,s8,656
  434614:	24050017 	li	a1,23
  434618:	8f998384 	lw	t9,-31868(gp)
  43461c:	00000000 	nop
  434620:	0320f809 	jalr	t9
  434624:	00000000 	nop
  434628:	8fdc0018 	lw	gp,24(s8)
  43462c:	ae020038 	sw	v0,56(s0)
	    break;
  434630:	1000012e 	b	434aec <parse_x509cert+0x7c4>
  434634:	00000000 	nop
	case X509_OBJ_NOT_AFTER:
	    cert->notAfter = asn1totime(&object, ASN1_UTCTIME);
  434638:	8fd0032c 	lw	s0,812(s8)
  43463c:	27c40290 	addiu	a0,s8,656
  434640:	24050017 	li	a1,23
  434644:	8f998384 	lw	t9,-31868(gp)
  434648:	00000000 	nop
  43464c:	0320f809 	jalr	t9
  434650:	00000000 	nop
  434654:	8fdc0018 	lw	gp,24(s8)
  434658:	ae02003c 	sw	v0,60(s0)
	    break;
  43465c:	10000123 	b	434aec <parse_x509cert+0x7c4>
  434660:	00000000 	nop
	case X509_OBJ_SUBJECT:
	    cert->subject = object;
  434664:	8fc3032c 	lw	v1,812(s8)
  434668:	8fc20290 	lw	v0,656(s8)
  43466c:	00000000 	nop
  434670:	ac620040 	sw	v0,64(v1)
  434674:	8fc20294 	lw	v0,660(s8)
  434678:	00000000 	nop
  43467c:	ac620044 	sw	v0,68(v1)
	    dntoa(buf, BUF_LEN, object);
  434680:	27c40020 	addiu	a0,s8,32
  434684:	24050200 	li	a1,512
  434688:	8fc60290 	lw	a2,656(s8)
  43468c:	8fc70294 	lw	a3,660(s8)
  434690:	8f9982bc 	lw	t9,-32068(gp)
  434694:	00000000 	nop
  434698:	0320f809 	jalr	t9
  43469c:	00000000 	nop
  4346a0:	8fdc0018 	lw	gp,24(s8)
  4346a4:	00000000 	nop
	    DBG(DBG_PARSING,
  4346a8:	8f8284f8 	lw	v0,-31496(gp)
  4346ac:	00000000 	nop
  4346b0:	8c420000 	lw	v0,0(v0)
  4346b4:	00000000 	nop
  4346b8:	30420004 	andi	v0,v0,0x4
  4346bc:	1040010b 	beqz	v0,434aec <parse_x509cert+0x7c4>
  4346c0:	00000000 	nop
  4346c4:	8f84802c 	lw	a0,-32724(gp)
  4346c8:	00000000 	nop
  4346cc:	2484cb08 	addiu	a0,a0,-13560
  4346d0:	27c50020 	addiu	a1,s8,32
  4346d4:	8f9983b8 	lw	t9,-31816(gp)
  4346d8:	00000000 	nop
  4346dc:	0320f809 	jalr	t9
  4346e0:	00000000 	nop
  4346e4:	8fdc0018 	lw	gp,24(s8)
  4346e8:	00000000 	nop
		DBG_log("  '%s'",buf);
	    )
	    break;
  4346ec:	100000ff 	b	434aec <parse_x509cert+0x7c4>
  4346f0:	00000000 	nop
	case X509_OBJ_SUBJECT_PUBLIC_KEY_ALGORITHM:
	    if ( known_oid(object) == OID_RSA_ENCRYPTION )
  4346f4:	8fc40290 	lw	a0,656(s8)
  4346f8:	8fc50294 	lw	a1,660(s8)
  4346fc:	8f9982f8 	lw	t9,-32008(gp)
  434700:	00000000 	nop
  434704:	0320f809 	jalr	t9
  434708:	00000000 	nop
  43470c:	8fdc0018 	lw	gp,24(s8)
  434710:	00401821 	move	v1,v0
  434714:	2402002f 	li	v0,47
  434718:	146200f4 	bne	v1,v0,434aec <parse_x509cert+0x7c4>
  43471c:	00000000 	nop
		cert->subjectPublicKeyAlgorithm = PUBKEY_ALG_RSA;
  434720:	24030001 	li	v1,1
  434724:	8fc2032c 	lw	v0,812(s8)
  434728:	00000000 	nop
  43472c:	ac430048 	sw	v1,72(v0)
	    break;
  434730:	100000ee 	b	434aec <parse_x509cert+0x7c4>
  434734:	00000000 	nop
	case X509_OBJ_SUBJECT_PUBLIC_KEY:
	    if (cert->subjectPublicKeyAlgorithm == PUBKEY_ALG_RSA)
  434738:	8fc2032c 	lw	v0,812(s8)
  43473c:	00000000 	nop
  434740:	8c430048 	lw	v1,72(v0)
  434744:	24020001 	li	v0,1
  434748:	1462000b 	bne	v1,v0,434778 <parse_x509cert+0x450>
  43474c:	00000000 	nop
	    {
		ctx.blobs[4].ptr++; ctx.blobs[4].len--;
  434750:	8fc20264 	lw	v0,612(s8)
  434754:	00000000 	nop
  434758:	24420001 	addiu	v0,v0,1
  43475c:	afc20264 	sw	v0,612(s8)
  434760:	8fc20268 	lw	v0,616(s8)
  434764:	00000000 	nop
  434768:	2442ffff 	addiu	v0,v0,-1
  43476c:	afc20268 	sw	v0,616(s8)
  434770:	100000de 	b	434aec <parse_x509cert+0x7c4>
  434774:	00000000 	nop
	    }
	    else
		objectID = X509_OBJ_MODULUS;
  434778:	24020011 	li	v0,17
  43477c:	afc20298 	sw	v0,664(s8)
	    break;
  434780:	100000da 	b	434aec <parse_x509cert+0x7c4>
  434784:	00000000 	nop
	case X509_OBJ_MODULUS:
	    cert->modulus = object;
  434788:	8fc2032c 	lw	v0,812(s8)
  43478c:	8fc30290 	lw	v1,656(s8)
  434790:	00000000 	nop
  434794:	ac43004c 	sw	v1,76(v0)
  434798:	8fc30294 	lw	v1,660(s8)
  43479c:	00000000 	nop
  4347a0:	ac430050 	sw	v1,80(v0)
	    break;
  4347a4:	100000d1 	b	434aec <parse_x509cert+0x7c4>
  4347a8:	00000000 	nop
	case X509_OBJ_PUBLIC_EXPONENT:
	    cert->publicExponent = object;
  4347ac:	8fc2032c 	lw	v0,812(s8)
  4347b0:	8fc30290 	lw	v1,656(s8)
  4347b4:	00000000 	nop
  4347b8:	ac430054 	sw	v1,84(v0)
  4347bc:	8fc30294 	lw	v1,660(s8)
  4347c0:	00000000 	nop
  4347c4:	ac430058 	sw	v1,88(v0)
	    break;
  4347c8:	100000c8 	b	434aec <parse_x509cert+0x7c4>
  4347cc:	00000000 	nop
	case X509_OBJ_EXTN_ID:
	    extnID = object;
  4347d0:	8fc20290 	lw	v0,656(s8)
  4347d4:	00000000 	nop
  4347d8:	afc20288 	sw	v0,648(s8)
  4347dc:	8fc20294 	lw	v0,660(s8)
  4347e0:	00000000 	nop
  4347e4:	afc2028c 	sw	v0,652(s8)
	    break;
  4347e8:	100000c0 	b	434aec <parse_x509cert+0x7c4>
  4347ec:	00000000 	nop
	case X509_OBJ_CRITICAL:
	    critical = object.len && *object.ptr;
  4347f0:	afc002f4 	sw	zero,756(s8)
  4347f4:	8fc20294 	lw	v0,660(s8)
  4347f8:	00000000 	nop
  4347fc:	10400009 	beqz	v0,434824 <parse_x509cert+0x4fc>
  434800:	00000000 	nop
  434804:	8fc20290 	lw	v0,656(s8)
  434808:	00000000 	nop
  43480c:	90420000 	lbu	v0,0(v0)
  434810:	00000000 	nop
  434814:	10400003 	beqz	v0,434824 <parse_x509cert+0x4fc>
  434818:	00000000 	nop
  43481c:	24030001 	li	v1,1
  434820:	afc302f4 	sw	v1,756(s8)
  434824:	8fc202f4 	lw	v0,756(s8)
  434828:	00000000 	nop
  43482c:	afc20280 	sw	v0,640(s8)
	    DBG(DBG_PARSING,
  434830:	8f8284f8 	lw	v0,-31496(gp)
  434834:	00000000 	nop
  434838:	8c420000 	lw	v0,0(v0)
  43483c:	00000000 	nop
  434840:	30420004 	andi	v0,v0,0x4
  434844:	104000a9 	beqz	v0,434aec <parse_x509cert+0x7c4>
  434848:	00000000 	nop
  43484c:	8fc20280 	lw	v0,640(s8)
  434850:	00000000 	nop
  434854:	10400008 	beqz	v0,434878 <parse_x509cert+0x550>
  434858:	00000000 	nop
  43485c:	8f83802c 	lw	v1,-32724(gp)
  434860:	00000000 	nop
  434864:	2463cae4 	addiu	v1,v1,-13596
  434868:	00000000 	nop
  43486c:	afc302f8 	sw	v1,760(s8)
  434870:	10000006 	b	43488c <parse_x509cert+0x564>
  434874:	00000000 	nop
  434878:	8f82802c 	lw	v0,-32724(gp)
  43487c:	00000000 	nop
  434880:	2442caec 	addiu	v0,v0,-13588
  434884:	00000000 	nop
  434888:	afc202f8 	sw	v0,760(s8)
  43488c:	8f84802c 	lw	a0,-32724(gp)
  434890:	00000000 	nop
  434894:	2484caf4 	addiu	a0,a0,-13580
  434898:	8fc502f8 	lw	a1,760(s8)
  43489c:	8f9983b8 	lw	t9,-31816(gp)
  4348a0:	00000000 	nop
  4348a4:	0320f809 	jalr	t9
  4348a8:	00000000 	nop
  4348ac:	8fdc0018 	lw	gp,24(s8)
  4348b0:	00000000 	nop
		DBG_log("  %s",(critical)?"TRUE":"FALSE");
	    )
	    break;
  4348b4:	1000008d 	b	434aec <parse_x509cert+0x7c4>
  4348b8:	00000000 	nop
	case X509_OBJ_EXTN_VALUE:
	    {
		u_int extn_oid = known_oid(extnID);
  4348bc:	8fc40288 	lw	a0,648(s8)
  4348c0:	8fc5028c 	lw	a1,652(s8)
  4348c4:	8f9982f8 	lw	t9,-32008(gp)
  4348c8:	00000000 	nop
  4348cc:	0320f809 	jalr	t9
  4348d0:	00000000 	nop
  4348d4:	8fdc0018 	lw	gp,24(s8)
  4348d8:	afc2029c 	sw	v0,668(s8)
		u_int level = level0 + certObjects[objectID].level + 1;
  4348dc:	8fc20298 	lw	v0,664(s8)
  4348e0:	00000000 	nop
  4348e4:	00021100 	sll	v0,v0,0x4
  4348e8:	8f818018 	lw	at,-32744(gp)
  4348ec:	00000000 	nop
  4348f0:	24211d8c 	addiu	at,at,7564
  4348f4:	00221021 	addu	v0,at,v0
  4348f8:	8c430000 	lw	v1,0(v0)
  4348fc:	8fc20328 	lw	v0,808(s8)
  434900:	00000000 	nop
  434904:	00431021 	addu	v0,v0,v1
  434908:	24420001 	addiu	v0,v0,1
  43490c:	afc202a0 	sw	v0,672(s8)

		switch (extn_oid) {
  434910:	8fc2029c 	lw	v0,668(s8)
  434914:	00000000 	nop
  434918:	2442ffe4 	addiu	v0,v0,-28
  43491c:	afc202fc 	sw	v0,764(s8)
  434920:	8fc302fc 	lw	v1,764(s8)
  434924:	00000000 	nop
  434928:	2c62000a 	sltiu	v0,v1,10
  43492c:	1040006f 	beqz	v0,434aec <parse_x509cert+0x7c4>
  434930:	00000000 	nop
  434934:	8fc202fc 	lw	v0,764(s8)
  434938:	00000000 	nop
  43493c:	00021080 	sll	v0,v0,0x2
  434940:	8f81802c 	lw	at,-32724(gp)
  434944:	00000000 	nop
  434948:	2421cc08 	addiu	at,at,-13304
  43494c:	00221021 	addu	v0,at,v0
  434950:	8c420000 	lw	v0,0(v0)
  434954:	00000000 	nop
  434958:	005c1021 	addu	v0,v0,gp
  43495c:	00400008 	jr	v0
  434960:	00000000 	nop
		case OID_SUBJECT_KEY_ID:
		    cert->subjectKeyID =
  434964:	8fc2032c 	lw	v0,812(s8)
  434968:	00000000 	nop
  43496c:	24420060 	addiu	v0,v0,96
  434970:	afa00010 	sw	zero,16(sp)
  434974:	00402021 	move	a0,v0
  434978:	8fc50290 	lw	a1,656(s8)
  43497c:	8fc60294 	lw	a2,660(s8)
  434980:	8fc702a0 	lw	a3,672(s8)
  434984:	8f998030 	lw	t9,-32720(gp)
  434988:	00000000 	nop
  43498c:	27393e04 	addiu	t9,t9,15876
  434990:	00000000 	nop
  434994:	0320f809 	jalr	t9
  434998:	00000000 	nop
  43499c:	8fdc0018 	lw	gp,24(s8)
  4349a0:	00000000 	nop
			parse_keyIdentifier(object, level, FALSE);
		    break;
  4349a4:	10000051 	b	434aec <parse_x509cert+0x7c4>
  4349a8:	00000000 	nop
		case OID_SUBJECT_ALT_NAME:
		    cert->subjectAltName =
  4349ac:	8fd0032c 	lw	s0,812(s8)
  4349b0:	8fc40290 	lw	a0,656(s8)
  4349b4:	8fc50294 	lw	a1,660(s8)
  4349b8:	8fc602a0 	lw	a2,672(s8)
  4349bc:	00003821 	move	a3,zero
  4349c0:	8f998030 	lw	t9,-32720(gp)
  4349c4:	00000000 	nop
  4349c8:	27393aa4 	addiu	t9,t9,15012
  4349cc:	00000000 	nop
  4349d0:	0320f809 	jalr	t9
  4349d4:	00000000 	nop
  4349d8:	8fdc0018 	lw	gp,24(s8)
  4349dc:	ae020078 	sw	v0,120(s0)
			parse_generalNames(object, level, FALSE);
		    break;
  4349e0:	10000042 	b	434aec <parse_x509cert+0x7c4>
  4349e4:	00000000 	nop
		case OID_BASIC_CONSTRAINTS:
		    cert->isCA =
  4349e8:	8fd0032c 	lw	s0,812(s8)
  4349ec:	8fc40290 	lw	a0,656(s8)
  4349f0:	8fc50294 	lw	a1,660(s8)
  4349f4:	8fc602a0 	lw	a2,672(s8)
  4349f8:	8f998030 	lw	t9,-32720(gp)
  4349fc:	00000000 	nop
  434a00:	273936f0 	addiu	t9,t9,14064
  434a04:	00000000 	nop
  434a08:	0320f809 	jalr	t9
  434a0c:	00000000 	nop
  434a10:	8fdc0018 	lw	gp,24(s8)
  434a14:	ae02005c 	sw	v0,92(s0)
			parse_basicConstraints(object, level);
		    break;
  434a18:	10000034 	b	434aec <parse_x509cert+0x7c4>
  434a1c:	00000000 	nop
		case OID_CRL_DISTRIBUTION_POINTS:
		    cert->crlDistributionPoints =
  434a20:	8fd0032c 	lw	s0,812(s8)
  434a24:	8fc40290 	lw	a0,656(s8)
  434a28:	8fc50294 	lw	a1,660(s8)
  434a2c:	8fc602a0 	lw	a2,672(s8)
  434a30:	8f998030 	lw	t9,-32720(gp)
  434a34:	00000000 	nop
  434a38:	27394160 	addiu	t9,t9,16736
  434a3c:	00000000 	nop
  434a40:	0320f809 	jalr	t9
  434a44:	00000000 	nop
  434a48:	8fdc0018 	lw	gp,24(s8)
  434a4c:	ae02007c 	sw	v0,124(s0)
			parse_crlDistributionPoints(object, level);
		    break;
  434a50:	10000026 	b	434aec <parse_x509cert+0x7c4>
  434a54:	00000000 	nop
		 case OID_AUTHORITY_KEY_ID:
		    parse_authorityKeyIdentifier(object, level
  434a58:	8fc2032c 	lw	v0,812(s8)
  434a5c:	00000000 	nop
  434a60:	24430068 	addiu	v1,v0,104
  434a64:	8fc2032c 	lw	v0,812(s8)
  434a68:	00000000 	nop
  434a6c:	24420070 	addiu	v0,v0,112
  434a70:	afa20010 	sw	v0,16(sp)
  434a74:	8fc40290 	lw	a0,656(s8)
  434a78:	8fc50294 	lw	a1,660(s8)
  434a7c:	8fc602a0 	lw	a2,672(s8)
  434a80:	00603821 	move	a3,v1
  434a84:	8f998030 	lw	t9,-32720(gp)
  434a88:	00000000 	nop
  434a8c:	27393ee4 	addiu	t9,t9,16100
  434a90:	00000000 	nop
  434a94:	0320f809 	jalr	t9
  434a98:	00000000 	nop
  434a9c:	8fdc0018 	lw	gp,24(s8)
  434aa0:	00000000 	nop
			, &cert->authKeyID, &cert->authKeySerialNumber);
		    break;
  434aa4:	10000011 	b	434aec <parse_x509cert+0x7c4>
  434aa8:	00000000 	nop
		}
	    }
	    break;
	case X509_OBJ_ALGORITHM:
	    cert->algorithm = object;
  434aac:	8fc2032c 	lw	v0,812(s8)
  434ab0:	8fc30290 	lw	v1,656(s8)
  434ab4:	00000000 	nop
  434ab8:	ac430080 	sw	v1,128(v0)
  434abc:	8fc30294 	lw	v1,660(s8)
  434ac0:	00000000 	nop
  434ac4:	ac430084 	sw	v1,132(v0)
	    break;
  434ac8:	10000008 	b	434aec <parse_x509cert+0x7c4>
  434acc:	00000000 	nop
	case X509_OBJ_SIGNATURE:
	    cert->signature = object;
  434ad0:	8fc2032c 	lw	v0,812(s8)
  434ad4:	8fc30290 	lw	v1,656(s8)
  434ad8:	00000000 	nop
  434adc:	ac430088 	sw	v1,136(v0)
  434ae0:	8fc30294 	lw	v1,660(s8)
  434ae4:	00000000 	nop
  434ae8:	ac43008c 	sw	v1,140(v0)
	    break;

	default:
	    break;
	}
	objectID++;
  434aec:	8fc20298 	lw	v0,664(s8)
  434af0:	00000000 	nop
  434af4:	24420001 	addiu	v0,v0,1
  434af8:	afc20298 	sw	v0,664(s8)
  434afc:	1000fe26 	b	434398 <parse_x509cert+0x70>
  434b00:	00000000 	nop
    }
    time(&cert->installed);
  434b04:	8fc2032c 	lw	v0,812(s8)
  434b08:	00000000 	nop
  434b0c:	24420004 	addiu	v0,v0,4
  434b10:	00402021 	move	a0,v0
  434b14:	8f9984b4 	lw	t9,-31564(gp)
  434b18:	00000000 	nop
  434b1c:	0320f809 	jalr	t9
  434b20:	00000000 	nop
  434b24:	8fdc0018 	lw	gp,24(s8)
  434b28:	00000000 	nop
    return TRUE;
  434b2c:	24020001 	li	v0,1
}
  434b30:	03c0e821 	move	sp,s8
  434b34:	8fbf031c 	lw	ra,796(sp)
  434b38:	8fbe0318 	lw	s8,792(sp)
  434b3c:	8fb00310 	lw	s0,784(sp)
  434b40:	27bd0320 	addiu	sp,sp,800
  434b44:	03e00008 	jr	ra
  434b48:	00000000 	nop

00434b4c <parse_x509crl>:
  434b4c:	3c1c0fbd 	lui	gp,0xfbd
  434b50:	279c7e24 	addiu	gp,gp,32292
  434b54:	0399e021 	addu	gp,gp,t9
  434b58:	27bdfce8 	addiu	sp,sp,-792
  434b5c:	afbc0018 	sw	gp,24(sp)
  434b60:	afbf0314 	sw	ra,788(sp)
  434b64:	afbe0310 	sw	s8,784(sp)
  434b68:	afbc030c 	sw	gp,780(sp)
  434b6c:	afb00308 	sw	s0,776(sp)
  434b70:	03a0f021 	move	s8,sp
  434b74:	afc40318 	sw	a0,792(s8)
  434b78:	afc5031c 	sw	a1,796(s8)
  434b7c:	afc60320 	sw	a2,800(s8)
  434b80:	afc70324 	sw	a3,804(s8)


/*
 *  Parses an X.509 CRL
 */
bool
parse_x509crl(chunk_t blob, u_int level0, x509crl_t *crl)
{
    u_char buf[BUF_LEN];
    asn1_ctx_t ctx;
    bool critical;
    chunk_t extnID;
    chunk_t userCertificate;
    chunk_t object;
    int objectID = 0;
  434b84:	afc002a0 	sw	zero,672(s8)

    asn1_init(&ctx, blob, level0, FALSE, DBG_RAW);
  434b88:	afa00010 	sw	zero,16(sp)
  434b8c:	24020001 	li	v0,1
  434b90:	afa20014 	sw	v0,20(sp)
  434b94:	27c40220 	addiu	a0,s8,544
  434b98:	8fc50318 	lw	a1,792(s8)
  434b9c:	8fc6031c 	lw	a2,796(s8)
  434ba0:	8fc70320 	lw	a3,800(s8)
  434ba4:	8f998898 	lw	t9,-30568(gp)
  434ba8:	00000000 	nop
  434bac:	0320f809 	jalr	t9
  434bb0:	00000000 	nop
  434bb4:	8fdc0018 	lw	gp,24(s8)
  434bb8:	00000000 	nop
 
    while (objectID < CRL_OBJ_ROOF)
  434bbc:	8fc202a0 	lw	v0,672(s8)
  434bc0:	00000000 	nop
  434bc4:	28420020 	slti	v0,v0,32
  434bc8:	14400003 	bnez	v0,434bd8 <parse_x509crl+0x8c>
  434bcc:	00000000 	nop
  434bd0:	10000151 	b	435118 <parse_x509crl+0x5cc>
  434bd4:	00000000 	nop
    {

	if (!extract_object(crlObjects, &objectID, &object, &ctx))
  434bd8:	8f848018 	lw	a0,-32744(gp)
  434bdc:	00000000 	nop
  434be0:	24841fac 	addiu	a0,a0,8108
  434be4:	27c502a0 	addiu	a1,s8,672
  434be8:	27c60298 	addiu	a2,s8,664
  434bec:	27c70220 	addiu	a3,s8,544
  434bf0:	8f9983bc 	lw	t9,-31812(gp)
  434bf4:	00000000 	nop
  434bf8:	0320f809 	jalr	t9
  434bfc:	00000000 	nop
  434c00:	8fdc0018 	lw	gp,24(s8)
  434c04:	14400004 	bnez	v0,434c18 <parse_x509crl+0xcc>
  434c08:	00000000 	nop
	     return FALSE;
  434c0c:	00001021 	move	v0,zero
  434c10:	1000014c 	b	435144 <parse_x509crl+0x5f8>
  434c14:	00000000 	nop

	switch (objectID) {
  434c18:	8fc202a0 	lw	v0,672(s8)
  434c1c:	00000000 	nop
  434c20:	2c420020 	sltiu	v0,v0,32
  434c24:	10400136 	beqz	v0,435100 <parse_x509crl+0x5b4>
  434c28:	00000000 	nop
  434c2c:	8fc202a0 	lw	v0,672(s8)
  434c30:	00000000 	nop
  434c34:	00021080 	sll	v0,v0,0x2
  434c38:	8f81802c 	lw	at,-32724(gp)
  434c3c:	00000000 	nop
  434c40:	2421cc40 	addiu	at,at,-13248
  434c44:	00221021 	addu	v0,at,v0
  434c48:	8c420000 	lw	v0,0(v0)
  434c4c:	00000000 	nop
  434c50:	005c1021 	addu	v0,v0,gp
  434c54:	00400008 	jr	v0
  434c58:	00000000 	nop
	case CRL_OBJ_CERTIFICATE_LIST:
	    crl->certificateList = object;
  434c5c:	8fc20324 	lw	v0,804(s8)
  434c60:	8fc30298 	lw	v1,664(s8)
  434c64:	00000000 	nop
  434c68:	ac43000c 	sw	v1,12(v0)
  434c6c:	8fc3029c 	lw	v1,668(s8)
  434c70:	00000000 	nop
  434c74:	ac430010 	sw	v1,16(v0)
	    break;
  434c78:	10000121 	b	435100 <parse_x509crl+0x5b4>
  434c7c:	00000000 	nop
	case CRL_OBJ_TBS_CERT_LIST:
	    crl->tbsCertList = object;
  434c80:	8fc20324 	lw	v0,804(s8)
  434c84:	8fc30298 	lw	v1,664(s8)
  434c88:	00000000 	nop
  434c8c:	ac430014 	sw	v1,20(v0)
  434c90:	8fc3029c 	lw	v1,668(s8)
  434c94:	00000000 	nop
  434c98:	ac430018 	sw	v1,24(v0)
	    break;
  434c9c:	10000118 	b	435100 <parse_x509crl+0x5b4>
  434ca0:	00000000 	nop
	case CRL_OBJ_VERSION:
	    crl->version = (object.len) ? (1+(u_int)*object.ptr) : 1;
  434ca4:	8fc20324 	lw	v0,804(s8)
  434ca8:	00000000 	nop
  434cac:	afc202bc 	sw	v0,700(s8)
  434cb0:	8fc2029c 	lw	v0,668(s8)
  434cb4:	00000000 	nop
  434cb8:	1040000c 	beqz	v0,434cec <parse_x509crl+0x1a0>
  434cbc:	00000000 	nop
  434cc0:	8fc20298 	lw	v0,664(s8)
  434cc4:	00000000 	nop
  434cc8:	90420000 	lbu	v0,0(v0)
  434ccc:	00000000 	nop
  434cd0:	afc202c0 	sw	v0,704(s8)
  434cd4:	8fc302c0 	lw	v1,704(s8)
  434cd8:	00000000 	nop
  434cdc:	24630001 	addiu	v1,v1,1
  434ce0:	afc302c0 	sw	v1,704(s8)
  434ce4:	10000003 	b	434cf4 <parse_x509crl+0x1a8>
  434ce8:	00000000 	nop
  434cec:	24020001 	li	v0,1
  434cf0:	afc202c0 	sw	v0,704(s8)
  434cf4:	8fc202c0 	lw	v0,704(s8)
  434cf8:	8fc302bc 	lw	v1,700(s8)
  434cfc:	00000000 	nop
  434d00:	ac62001c 	sw	v0,28(v1)
	    DBG(DBG_PARSING,
  434d04:	8f8284f8 	lw	v0,-31496(gp)
  434d08:	00000000 	nop
  434d0c:	8c420000 	lw	v0,0(v0)
  434d10:	00000000 	nop
  434d14:	30420004 	andi	v0,v0,0x4
  434d18:	104000f9 	beqz	v0,435100 <parse_x509crl+0x5b4>
  434d1c:	00000000 	nop
  434d20:	8f84802c 	lw	a0,-32724(gp)
  434d24:	00000000 	nop
  434d28:	2484cb74 	addiu	a0,a0,-13452
  434d2c:	8fc20324 	lw	v0,804(s8)
  434d30:	00000000 	nop
  434d34:	8c45001c 	lw	a1,28(v0)
  434d38:	8f9983b8 	lw	t9,-31816(gp)
  434d3c:	00000000 	nop
  434d40:	0320f809 	jalr	t9
  434d44:	00000000 	nop
  434d48:	8fdc0018 	lw	gp,24(s8)
  434d4c:	00000000 	nop
		DBG_log("  v%d", crl->version);
	    )
	    break;
  434d50:	100000eb 	b	435100 <parse_x509crl+0x5b4>
  434d54:	00000000 	nop
	case CRL_OBJ_SIG_ALG:
	    crl->sigAlg = object;
  434d58:	8fc20324 	lw	v0,804(s8)
  434d5c:	8fc30298 	lw	v1,664(s8)
  434d60:	00000000 	nop
  434d64:	ac430020 	sw	v1,32(v0)
  434d68:	8fc3029c 	lw	v1,668(s8)
  434d6c:	00000000 	nop
  434d70:	ac430024 	sw	v1,36(v0)
	    break;
  434d74:	100000e2 	b	435100 <parse_x509crl+0x5b4>
  434d78:	00000000 	nop
	case CRL_OBJ_ISSUER:
	    crl->issuer = object;
  434d7c:	8fc30324 	lw	v1,804(s8)
  434d80:	8fc20298 	lw	v0,664(s8)
  434d84:	00000000 	nop
  434d88:	ac620028 	sw	v0,40(v1)
  434d8c:	8fc2029c 	lw	v0,668(s8)
  434d90:	00000000 	nop
  434d94:	ac62002c 	sw	v0,44(v1)
	    dntoa(buf, BUF_LEN, object);
  434d98:	27c40020 	addiu	a0,s8,32
  434d9c:	24050200 	li	a1,512
  434da0:	8fc60298 	lw	a2,664(s8)
  434da4:	8fc7029c 	lw	a3,668(s8)
  434da8:	8f9982bc 	lw	t9,-32068(gp)
  434dac:	00000000 	nop
  434db0:	0320f809 	jalr	t9
  434db4:	00000000 	nop
  434db8:	8fdc0018 	lw	gp,24(s8)
  434dbc:	00000000 	nop
	    DBG(DBG_PARSING,
  434dc0:	8f8284f8 	lw	v0,-31496(gp)
  434dc4:	00000000 	nop
  434dc8:	8c420000 	lw	v0,0(v0)
  434dcc:	00000000 	nop
  434dd0:	30420004 	andi	v0,v0,0x4
  434dd4:	104000ca 	beqz	v0,435100 <parse_x509crl+0x5b4>
  434dd8:	00000000 	nop
  434ddc:	8f84802c 	lw	a0,-32724(gp)
  434de0:	00000000 	nop
  434de4:	2484cb08 	addiu	a0,a0,-13560
  434de8:	27c50020 	addiu	a1,s8,32
  434dec:	8f9983b8 	lw	t9,-31816(gp)
  434df0:	00000000 	nop
  434df4:	0320f809 	jalr	t9
  434df8:	00000000 	nop
  434dfc:	8fdc0018 	lw	gp,24(s8)
  434e00:	00000000 	nop
		DBG_log("  '%s'",buf);
	    )
	    break;
  434e04:	100000be 	b	435100 <parse_x509crl+0x5b4>
  434e08:	00000000 	nop
	case CRL_OBJ_THIS_UPDATE:
	    crl->thisUpdate = asn1totime(&object, ASN1_UTCTIME);
  434e0c:	8fd00324 	lw	s0,804(s8)
  434e10:	27c40298 	addiu	a0,s8,664
  434e14:	24050017 	li	a1,23
  434e18:	8f998384 	lw	t9,-31868(gp)
  434e1c:	00000000 	nop
  434e20:	0320f809 	jalr	t9
  434e24:	00000000 	nop
  434e28:	8fdc0018 	lw	gp,24(s8)
  434e2c:	ae020030 	sw	v0,48(s0)
	    break;
  434e30:	100000b3 	b	435100 <parse_x509crl+0x5b4>
  434e34:	00000000 	nop
	case CRL_OBJ_NEXT_UPDATE:
	    crl->nextUpdate = asn1totime(&object, ASN1_UTCTIME);
  434e38:	8fd00324 	lw	s0,804(s8)
  434e3c:	27c40298 	addiu	a0,s8,664
  434e40:	24050017 	li	a1,23
  434e44:	8f998384 	lw	t9,-31868(gp)
  434e48:	00000000 	nop
  434e4c:	0320f809 	jalr	t9
  434e50:	00000000 	nop
  434e54:	8fdc0018 	lw	gp,24(s8)
  434e58:	ae020034 	sw	v0,52(s0)
	    break;
  434e5c:	100000a8 	b	435100 <parse_x509crl+0x5b4>
  434e60:	00000000 	nop
	case CRL_OBJ_USER_CERTIFICATE:
	    userCertificate = object;
  434e64:	8fc20298 	lw	v0,664(s8)
  434e68:	00000000 	nop
  434e6c:	afc20290 	sw	v0,656(s8)
  434e70:	8fc2029c 	lw	v0,668(s8)
  434e74:	00000000 	nop
  434e78:	afc20294 	sw	v0,660(s8)
	    break;
  434e7c:	100000a0 	b	435100 <parse_x509crl+0x5b4>
  434e80:	00000000 	nop
	case CRL_OBJ_REVOCATION_DATE:
	    {
		/* put all the serial numbers and the revocation date in a chained list
		   with revocedCertificates pointing to the first revoked certificate */

		revokedCert_t *revokedCert = alloc_thing(revokedCert_t, "revokedCert");
  434e84:	24040010 	li	a0,16
  434e88:	8f85802c 	lw	a1,-32724(gp)
  434e8c:	00000000 	nop
  434e90:	24a5cc30 	addiu	a1,a1,-13264
  434e94:	8f998084 	lw	t9,-32636(gp)
  434e98:	00000000 	nop
  434e9c:	0320f809 	jalr	t9
  434ea0:	00000000 	nop
  434ea4:	8fdc0018 	lw	gp,24(s8)
  434ea8:	afc202a4 	sw	v0,676(s8)
		revokedCert->userCertificate = userCertificate;
  434eac:	8fc302a4 	lw	v1,676(s8)
  434eb0:	8fc20290 	lw	v0,656(s8)
  434eb4:	00000000 	nop
  434eb8:	ac620004 	sw	v0,4(v1)
  434ebc:	8fc20294 	lw	v0,660(s8)
  434ec0:	00000000 	nop
  434ec4:	ac620008 	sw	v0,8(v1)
		revokedCert->revocationDate = asn1totime(&object, ASN1_UTCTIME);
  434ec8:	8fd002a4 	lw	s0,676(s8)
  434ecc:	27c40298 	addiu	a0,s8,664
  434ed0:	24050017 	li	a1,23
  434ed4:	8f998384 	lw	t9,-31868(gp)
  434ed8:	00000000 	nop
  434edc:	0320f809 	jalr	t9
  434ee0:	00000000 	nop
  434ee4:	8fdc0018 	lw	gp,24(s8)
  434ee8:	ae02000c 	sw	v0,12(s0)
		revokedCert->next = crl->revokedCertificates;
  434eec:	8fc20324 	lw	v0,804(s8)
  434ef0:	00000000 	nop
  434ef4:	8c430038 	lw	v1,56(v0)
  434ef8:	8fc202a4 	lw	v0,676(s8)
  434efc:	00000000 	nop
  434f00:	ac430000 	sw	v1,0(v0)
		crl->revokedCertificates = revokedCert;
  434f04:	8fc302a4 	lw	v1,676(s8)
  434f08:	8fc20324 	lw	v0,804(s8)
  434f0c:	00000000 	nop
  434f10:	ac430038 	sw	v1,56(v0)
	    }
	    break;
  434f14:	1000007a 	b	435100 <parse_x509crl+0x5b4>
  434f18:	00000000 	nop
	case CRL_OBJ_EXTN_ID:
	    extnID = object;
  434f1c:	8fc20298 	lw	v0,664(s8)
  434f20:	00000000 	nop
  434f24:	afc20288 	sw	v0,648(s8)
  434f28:	8fc2029c 	lw	v0,668(s8)
  434f2c:	00000000 	nop
  434f30:	afc2028c 	sw	v0,652(s8)
	    break;
  434f34:	10000072 	b	435100 <parse_x509crl+0x5b4>
  434f38:	00000000 	nop
	case CRL_OBJ_CRL_ENTRY_CRITICAL:
	case CRL_OBJ_CRITICAL:
	    critical = object.len && *object.ptr;
  434f3c:	afc002ec 	sw	zero,748(s8)
  434f40:	8fc2029c 	lw	v0,668(s8)
  434f44:	00000000 	nop
  434f48:	10400009 	beqz	v0,434f70 <parse_x509crl+0x424>
  434f4c:	00000000 	nop
  434f50:	8fc20298 	lw	v0,664(s8)
  434f54:	00000000 	nop
  434f58:	90420000 	lbu	v0,0(v0)
  434f5c:	00000000 	nop
  434f60:	10400003 	beqz	v0,434f70 <parse_x509crl+0x424>
  434f64:	00000000 	nop
  434f68:	24030001 	li	v1,1
  434f6c:	afc302ec 	sw	v1,748(s8)
  434f70:	8fc202ec 	lw	v0,748(s8)
  434f74:	00000000 	nop
  434f78:	afc20280 	sw	v0,640(s8)
	    DBG(DBG_PARSING,
  434f7c:	8f8284f8 	lw	v0,-31496(gp)
  434f80:	00000000 	nop
  434f84:	8c420000 	lw	v0,0(v0)
  434f88:	00000000 	nop
  434f8c:	30420004 	andi	v0,v0,0x4
  434f90:	1040005b 	beqz	v0,435100 <parse_x509crl+0x5b4>
  434f94:	00000000 	nop
  434f98:	8fc20280 	lw	v0,640(s8)
  434f9c:	00000000 	nop
  434fa0:	10400008 	beqz	v0,434fc4 <parse_x509crl+0x478>
  434fa4:	00000000 	nop
  434fa8:	8f83802c 	lw	v1,-32724(gp)
  434fac:	00000000 	nop
  434fb0:	2463cae4 	addiu	v1,v1,-13596
  434fb4:	00000000 	nop
  434fb8:	afc302f0 	sw	v1,752(s8)
  434fbc:	10000006 	b	434fd8 <parse_x509crl+0x48c>
  434fc0:	00000000 	nop
  434fc4:	8f82802c 	lw	v0,-32724(gp)
  434fc8:	00000000 	nop
  434fcc:	2442caec 	addiu	v0,v0,-13588
  434fd0:	00000000 	nop
  434fd4:	afc202f0 	sw	v0,752(s8)
  434fd8:	8f84802c 	lw	a0,-32724(gp)
  434fdc:	00000000 	nop
  434fe0:	2484caf4 	addiu	a0,a0,-13580
  434fe4:	8fc502f0 	lw	a1,752(s8)
  434fe8:	8f9983b8 	lw	t9,-31816(gp)
  434fec:	00000000 	nop
  434ff0:	0320f809 	jalr	t9
  434ff4:	00000000 	nop
  434ff8:	8fdc0018 	lw	gp,24(s8)
  434ffc:	00000000 	nop
		DBG_log("  %s",(critical)?"TRUE":"FALSE");
	    )
	    break;
  435000:	1000003f 	b	435100 <parse_x509crl+0x5b4>
  435004:	00000000 	nop
	case CRL_OBJ_EXTN_VALUE:
	    {
		u_int extn_oid = known_oid(extnID);
  435008:	8fc40288 	lw	a0,648(s8)
  43500c:	8fc5028c 	lw	a1,652(s8)
  435010:	8f9982f8 	lw	t9,-32008(gp)
  435014:	00000000 	nop
  435018:	0320f809 	jalr	t9
  43501c:	00000000 	nop
  435020:	8fdc0018 	lw	gp,24(s8)
  435024:	afc202a4 	sw	v0,676(s8)
		u_int level = level0 + crlObjects[objectID].level + 1;
  435028:	8fc202a0 	lw	v0,672(s8)
  43502c:	00000000 	nop
  435030:	00021100 	sll	v0,v0,0x4
  435034:	8f818018 	lw	at,-32744(gp)
  435038:	00000000 	nop
  43503c:	24211fac 	addiu	at,at,8108
  435040:	00221021 	addu	v0,at,v0
  435044:	8c430000 	lw	v1,0(v0)
  435048:	8fc20320 	lw	v0,800(s8)
  43504c:	00000000 	nop
  435050:	00431021 	addu	v0,v0,v1
  435054:	24420001 	addiu	v0,v0,1
  435058:	afc202a8 	sw	v0,680(s8)

		if (extn_oid == OID_AUTHORITY_KEY_ID)
  43505c:	8fc302a4 	lw	v1,676(s8)
  435060:	24020025 	li	v0,37
  435064:	14620026 	bne	v1,v0,435100 <parse_x509crl+0x5b4>
  435068:	00000000 	nop
		{
		    parse_authorityKeyIdentifier(object, level
  43506c:	8fc20324 	lw	v0,804(s8)
  435070:	00000000 	nop
  435074:	2443003c 	addiu	v1,v0,60
  435078:	8fc20324 	lw	v0,804(s8)
  43507c:	00000000 	nop
  435080:	24420044 	addiu	v0,v0,68
  435084:	afa20010 	sw	v0,16(sp)
  435088:	8fc40298 	lw	a0,664(s8)
  43508c:	8fc5029c 	lw	a1,668(s8)
  435090:	8fc602a8 	lw	a2,680(s8)
  435094:	00603821 	move	a3,v1
  435098:	8f998030 	lw	t9,-32720(gp)
  43509c:	00000000 	nop
  4350a0:	27393ee4 	addiu	t9,t9,16100
  4350a4:	00000000 	nop
  4350a8:	0320f809 	jalr	t9
  4350ac:	00000000 	nop
  4350b0:	8fdc0018 	lw	gp,24(s8)
  4350b4:	00000000 	nop
			, &crl->authKeyID, &crl->authKeySerialNumber);
		}
	    }
	    break;
  4350b8:	10000011 	b	435100 <parse_x509crl+0x5b4>
  4350bc:	00000000 	nop
	case CRL_OBJ_ALGORITHM:
	    crl->algorithm = object;
  4350c0:	8fc20324 	lw	v0,804(s8)
  4350c4:	8fc30298 	lw	v1,664(s8)
  4350c8:	00000000 	nop
  4350cc:	ac43004c 	sw	v1,76(v0)
  4350d0:	8fc3029c 	lw	v1,668(s8)
  4350d4:	00000000 	nop
  4350d8:	ac430050 	sw	v1,80(v0)
	    break;
  4350dc:	10000008 	b	435100 <parse_x509crl+0x5b4>
  4350e0:	00000000 	nop
	case CRL_OBJ_SIGNATURE:
	    crl->signature = object;
  4350e4:	8fc20324 	lw	v0,804(s8)
  4350e8:	8fc30298 	lw	v1,664(s8)
  4350ec:	00000000 	nop
  4350f0:	ac430054 	sw	v1,84(v0)
  4350f4:	8fc3029c 	lw	v1,668(s8)
  4350f8:	00000000 	nop
  4350fc:	ac430058 	sw	v1,88(v0)
	    break;
	default:
	    break;
	}
	objectID++;
  435100:	8fc202a0 	lw	v0,672(s8)
  435104:	00000000 	nop
  435108:	24420001 	addiu	v0,v0,1
  43510c:	afc202a0 	sw	v0,672(s8)
  435110:	1000feaa 	b	434bbc <parse_x509crl+0x70>
  435114:	00000000 	nop
    }
    time(&crl->installed);
  435118:	8fc20324 	lw	v0,804(s8)
  43511c:	00000000 	nop
  435120:	24420004 	addiu	v0,v0,4
  435124:	00402021 	move	a0,v0
  435128:	8f9984b4 	lw	t9,-31564(gp)
  43512c:	00000000 	nop
  435130:	0320f809 	jalr	t9
  435134:	00000000 	nop
  435138:	8fdc0018 	lw	gp,24(s8)
  43513c:	00000000 	nop
    return TRUE;
  435140:	24020001 	li	v0,1
}
  435144:	03c0e821 	move	sp,s8
  435148:	8fbf0314 	lw	ra,788(sp)
  43514c:	8fbe0310 	lw	s8,784(sp)
  435150:	8fb00308 	lw	s0,776(sp)
  435154:	27bd0318 	addiu	sp,sp,792
  435158:	03e00008 	jr	ra
  43515c:	00000000 	nop

00435160 <check_validity>:
  435160:	3c1c0fbd 	lui	gp,0xfbd
  435164:	279c7810 	addiu	gp,gp,30736
  435168:	0399e021 	addu	gp,gp,t9
  43516c:	27bdffd0 	addiu	sp,sp,-48
  435170:	afbc0010 	sw	gp,16(sp)
  435174:	afbf0028 	sw	ra,40(sp)
  435178:	afbe0024 	sw	s8,36(sp)
  43517c:	afbc0020 	sw	gp,32(sp)
  435180:	03a0f021 	move	s8,sp
  435184:	afc40030 	sw	a0,48(s8)
  435188:	afc50034 	sw	a1,52(s8)

/* verify the validity of a certificate by
 * checking the notBefore and notAfter dates
*/
bool
check_validity(const x509cert_t *cert, time_t *until)
{
    time_t current_time;

    time(&current_time);
  43518c:	27c40018 	addiu	a0,s8,24
  435190:	8f9984b4 	lw	t9,-31564(gp)
  435194:	00000000 	nop
  435198:	0320f809 	jalr	t9
  43519c:	00000000 	nop
  4351a0:	8fdc0010 	lw	gp,16(s8)
  4351a4:	00000000 	nop
    DBG(DBG_PARSING,
  4351a8:	8f8284f8 	lw	v0,-31496(gp)
  4351ac:	00000000 	nop
  4351b0:	8c420000 	lw	v0,0(v0)
  4351b4:	00000000 	nop
  4351b8:	30420004 	andi	v0,v0,0x4
  4351bc:	1040003b 	beqz	v0,4352ac <check_validity+0x14c>
  4351c0:	00000000 	nop
  4351c4:	8fc20030 	lw	v0,48(s8)
  4351c8:	00000000 	nop
  4351cc:	24420038 	addiu	v0,v0,56
  4351d0:	00402021 	move	a0,v0
  4351d4:	24050001 	li	a1,1
  4351d8:	8f998b80 	lw	t9,-29824(gp)
  4351dc:	00000000 	nop
  4351e0:	0320f809 	jalr	t9
  4351e4:	00000000 	nop
  4351e8:	8fdc0010 	lw	gp,16(s8)
  4351ec:	00000000 	nop
  4351f0:	8f84802c 	lw	a0,-32724(gp)
  4351f4:	00000000 	nop
  4351f8:	2484ccc0 	addiu	a0,a0,-13120
  4351fc:	00402821 	move	a1,v0
  435200:	8f9983b8 	lw	t9,-31816(gp)
  435204:	00000000 	nop
  435208:	0320f809 	jalr	t9
  43520c:	00000000 	nop
  435210:	8fdc0010 	lw	gp,16(s8)
  435214:	27c40018 	addiu	a0,s8,24
  435218:	24050001 	li	a1,1
  43521c:	8f998b80 	lw	t9,-29824(gp)
  435220:	00000000 	nop
  435224:	0320f809 	jalr	t9
  435228:	00000000 	nop
  43522c:	8fdc0010 	lw	gp,16(s8)
  435230:	00000000 	nop
  435234:	8f84802c 	lw	a0,-32724(gp)
  435238:	00000000 	nop
  43523c:	2484ccd4 	addiu	a0,a0,-13100
  435240:	00402821 	move	a1,v0
  435244:	8f9983b8 	lw	t9,-31816(gp)
  435248:	00000000 	nop
  43524c:	0320f809 	jalr	t9
  435250:	00000000 	nop
  435254:	8fdc0010 	lw	gp,16(s8)
  435258:	8fc20030 	lw	v0,48(s8)
  43525c:	00000000 	nop
  435260:	2442003c 	addiu	v0,v0,60
  435264:	00402021 	move	a0,v0
  435268:	24050001 	li	a1,1
  43526c:	8f998b80 	lw	t9,-29824(gp)
  435270:	00000000 	nop
  435274:	0320f809 	jalr	t9
  435278:	00000000 	nop
  43527c:	8fdc0010 	lw	gp,16(s8)
  435280:	00000000 	nop
  435284:	8f84802c 	lw	a0,-32724(gp)
  435288:	00000000 	nop
  43528c:	2484cce8 	addiu	a0,a0,-13080
  435290:	00402821 	move	a1,v0
  435294:	8f9983b8 	lw	t9,-31816(gp)
  435298:	00000000 	nop
  43529c:	0320f809 	jalr	t9
  4352a0:	00000000 	nop
  4352a4:	8fdc0010 	lw	gp,16(s8)
  4352a8:	00000000 	nop
	DBG_log("  not before  : %s", timetoa(&cert->notBefore, TRUE));
	DBG_log("  current time: %s", timetoa(&current_time, TRUE));
	DBG_log("  not after   : %s", timetoa(&cert->notAfter, TRUE));
    )

   if (cert->notAfter < *until) *until = cert->notAfter;
  4352ac:	8fc20030 	lw	v0,48(s8)
  4352b0:	00000000 	nop
  4352b4:	8c43003c 	lw	v1,60(v0)
  4352b8:	8fc20034 	lw	v0,52(s8)
  4352bc:	00000000 	nop
  4352c0:	8c420000 	lw	v0,0(v0)
  4352c4:	00000000 	nop
  4352c8:	0062102a 	slt	v0,v1,v0
  4352cc:	10400007 	beqz	v0,4352ec <check_validity+0x18c>
  4352d0:	00000000 	nop
  4352d4:	8fc20030 	lw	v0,48(s8)
  4352d8:	00000000 	nop
  4352dc:	8c43003c 	lw	v1,60(v0)
  4352e0:	8fc20034 	lw	v0,52(s8)
  4352e4:	00000000 	nop
  4352e8:	ac430000 	sw	v1,0(v0)

   return (current_time >= cert->notBefore) &&
  4352ec:	afc0001c 	sw	zero,28(s8)
  4352f0:	8fc20030 	lw	v0,48(s8)
  4352f4:	00000000 	nop
  4352f8:	8c430038 	lw	v1,56(v0)
  4352fc:	8fc20018 	lw	v0,24(s8)
  435300:	00000000 	nop
  435304:	0043102a 	slt	v0,v0,v1
  435308:	1440000b 	bnez	v0,435338 <check_validity+0x1d8>
  43530c:	00000000 	nop
  435310:	8fc20030 	lw	v0,48(s8)
  435314:	00000000 	nop
  435318:	8c43003c 	lw	v1,60(v0)
  43531c:	8fc20018 	lw	v0,24(s8)
  435320:	00000000 	nop
  435324:	0062102a 	slt	v0,v1,v0
  435328:	14400003 	bnez	v0,435338 <check_validity+0x1d8>
  43532c:	00000000 	nop
  435330:	24020001 	li	v0,1
  435334:	afc2001c 	sw	v0,28(s8)
  435338:	8fc2001c 	lw	v0,28(s8)
  43533c:	00000000 	nop
	  (current_time <= cert->notAfter);
}
  435340:	03c0e821 	move	sp,s8
  435344:	8fbf0028 	lw	ra,40(sp)
  435348:	8fbe0024 	lw	s8,36(sp)
  43534c:	27bd0030 	addiu	sp,sp,48
  435350:	03e00008 	jr	ra
  435354:	00000000 	nop

00435358 <check_revocation>:
  435358:	3c1c0fbd 	lui	gp,0xfbd
  43535c:	279c7618 	addiu	gp,gp,30232
  435360:	0399e021 	addu	gp,gp,t9
  435364:	27bdffd0 	addiu	sp,sp,-48
  435368:	afbc0010 	sw	gp,16(sp)
  43536c:	afbf0028 	sw	ra,40(sp)
  435370:	afbe0024 	sw	s8,36(sp)
  435374:	afbc0020 	sw	gp,32(sp)
  435378:	03a0f021 	move	s8,sp
  43537c:	afc40030 	sw	a0,48(s8)
  435380:	afc50034 	sw	a1,52(s8)
  435384:	afc60038 	sw	a2,56(s8)

/*  Checks if the current certificate is revoked. It goes through the
 *  list of revoked certificates of the corresponding crl. If the
 *  certificate is found in the list, TRUE is returned
 */
static bool
check_revocation(const x509crl_t *crl, chunk_t serial)
{
    revokedCert_t *revokedCert = crl->revokedCertificates;
  435388:	8fc20030 	lw	v0,48(s8)
  43538c:	00000000 	nop
  435390:	8c420038 	lw	v0,56(v0)
  435394:	00000000 	nop
  435398:	afc20018 	sw	v0,24(s8)
                                                                                                                                  
    DBG(DBG_CONTROL,
  43539c:	8f8284f8 	lw	v0,-31496(gp)
  4353a0:	00000000 	nop
  4353a4:	8c420000 	lw	v0,0(v0)
  4353a8:	00000000 	nop
  4353ac:	30420010 	andi	v0,v0,0x10
  4353b0:	1040000b 	beqz	v0,4353e0 <check_revocation+0x88>
  4353b4:	00000000 	nop
  4353b8:	8f84802c 	lw	a0,-32724(gp)
  4353bc:	00000000 	nop
  4353c0:	2484ccfc 	addiu	a0,a0,-13060
  4353c4:	8fc50034 	lw	a1,52(s8)
  4353c8:	8fc60038 	lw	a2,56(s8)
  4353cc:	8f9984ec 	lw	t9,-31508(gp)
  4353d0:	00000000 	nop
  4353d4:	0320f809 	jalr	t9
  4353d8:	00000000 	nop
  4353dc:	8fdc0010 	lw	gp,16(s8)
  4353e0:	00000000 	nop
        DBG_dump_chunk("serial number:", serial)
    )
                                                                                                                                  
    while(revokedCert != NULL)
  4353e4:	8fc20018 	lw	v0,24(s8)
  4353e8:	00000000 	nop
  4353ec:	14400003 	bnez	v0,4353fc <check_revocation+0xa4>
  4353f0:	00000000 	nop
  4353f4:	10000033 	b	4354c4 <check_revocation+0x16c>
  4353f8:	00000000 	nop
    {
        /* compare serial numbers */
        if (revokedCert->userCertificate.len == serial.len &&
            memcmp(revokedCert->userCertificate.ptr, serial.ptr, serial.len) == 0)
  4353fc:	8fc20018 	lw	v0,24(s8)
  435400:	00000000 	nop
  435404:	8c430008 	lw	v1,8(v0)
  435408:	8fc20038 	lw	v0,56(s8)
  43540c:	00000000 	nop
  435410:	14620025 	bne	v1,v0,4354a8 <check_revocation+0x150>
  435414:	00000000 	nop
  435418:	8fc20018 	lw	v0,24(s8)
  43541c:	00000000 	nop
  435420:	8c440004 	lw	a0,4(v0)
  435424:	8fc50034 	lw	a1,52(s8)
  435428:	8fc60038 	lw	a2,56(s8)
  43542c:	8f9985c8 	lw	t9,-31288(gp)
  435430:	00000000 	nop
  435434:	0320f809 	jalr	t9
  435438:	00000000 	nop
  43543c:	8fdc0010 	lw	gp,16(s8)
  435440:	14400019 	bnez	v0,4354a8 <check_revocation+0x150>
  435444:	00000000 	nop
        {
            plog("certificate was revoked on %s",
  435448:	8fc20018 	lw	v0,24(s8)
  43544c:	00000000 	nop
  435450:	2442000c 	addiu	v0,v0,12
  435454:	00402021 	move	a0,v0
  435458:	24050001 	li	a1,1
  43545c:	8f998b80 	lw	t9,-29824(gp)
  435460:	00000000 	nop
  435464:	0320f809 	jalr	t9
  435468:	00000000 	nop
  43546c:	8fdc0010 	lw	gp,16(s8)
  435470:	00000000 	nop
  435474:	8f84802c 	lw	a0,-32724(gp)
  435478:	00000000 	nop
  43547c:	2484cd0c 	addiu	a0,a0,-13044
  435480:	00402821 	move	a1,v0
  435484:	8f998abc 	lw	t9,-30020(gp)
  435488:	00000000 	nop
  43548c:	0320f809 	jalr	t9
  435490:	00000000 	nop
  435494:	8fdc0010 	lw	gp,16(s8)
  435498:	00000000 	nop
                timetoa(&revokedCert->revocationDate, TRUE));
            return TRUE;
  43549c:	24020001 	li	v0,1
  4354a0:	10000019 	b	435508 <check_revocation+0x1b0>
  4354a4:	00000000 	nop
        }
        revokedCert = revokedCert->next;
  4354a8:	8fc20018 	lw	v0,24(s8)
  4354ac:	00000000 	nop
  4354b0:	8c420000 	lw	v0,0(v0)
  4354b4:	00000000 	nop
  4354b8:	afc20018 	sw	v0,24(s8)
  4354bc:	1000ffc9 	b	4353e4 <check_revocation+0x8c>
  4354c0:	00000000 	nop
    }
    DBG(DBG_CONTROL,
  4354c4:	8f8284f8 	lw	v0,-31496(gp)
  4354c8:	00000000 	nop
  4354cc:	8c420000 	lw	v0,0(v0)
  4354d0:	00000000 	nop
  4354d4:	30420010 	andi	v0,v0,0x10
  4354d8:	1040000a 	beqz	v0,435504 <check_revocation+0x1ac>
  4354dc:	00000000 	nop
  4354e0:	8f84802c 	lw	a0,-32724(gp)
  4354e4:	00000000 	nop
  4354e8:	2484cd2c 	addiu	a0,a0,-13012
  4354ec:	8f9983b8 	lw	t9,-31816(gp)
  4354f0:	00000000 	nop
  4354f4:	0320f809 	jalr	t9
  4354f8:	00000000 	nop
  4354fc:	8fdc0010 	lw	gp,16(s8)
  435500:	00000000 	nop
        DBG_log("certificate not revoked")
    )
    return FALSE;
  435504:	00001021 	move	v0,zero
}
  435508:	03c0e821 	move	sp,s8
  43550c:	8fbf0028 	lw	ra,40(sp)
  435510:	8fbe0024 	lw	s8,36(sp)
  435514:	27bd0030 	addiu	sp,sp,48
  435518:	03e00008 	jr	ra
  43551c:	00000000 	nop

00435520 <compute_digest>:
  435520:	3c1c0fbd 	lui	gp,0xfbd
  435524:	279c7450 	addiu	gp,gp,29776
  435528:	0399e021 	addu	gp,gp,t9
  43552c:	27bdfee0 	addiu	sp,sp,-288
  435530:	afbc0010 	sw	gp,16(sp)
  435534:	afbf0118 	sw	ra,280(sp)
  435538:	afbe0114 	sw	s8,276(sp)
  43553c:	afbc0110 	sw	gp,272(sp)
  435540:	03a0f021 	move	s8,sp
  435544:	afc40120 	sw	a0,288(s8)
  435548:	afc50124 	sw	a1,292(s8)
  43554c:	afc60128 	sw	a2,296(s8)
  435550:	afc7012c 	sw	a3,300(s8)


/*
 *  compute a digest over a binary blob
 */
static bool
compute_digest(chunk_t tbs, int alg, chunk_t *digest)
{
    switch (alg)
  435554:	8fc20128 	lw	v0,296(s8)
  435558:	00000000 	nop
  43555c:	2442ffd0 	addiu	v0,v0,-48
  435560:	afc20108 	sw	v0,264(s8)
  435564:	8fc30108 	lw	v1,264(s8)
  435568:	00000000 	nop
  43556c:	2c620023 	sltiu	v0,v1,35
  435570:	10400070 	beqz	v0,435734 <compute_digest+0x214>
  435574:	00000000 	nop
  435578:	8fc20108 	lw	v0,264(s8)
  43557c:	00000000 	nop
  435580:	00021080 	sll	v0,v0,0x2
  435584:	8f81802c 	lw	at,-32724(gp)
  435588:	00000000 	nop
  43558c:	2421cd48 	addiu	at,at,-12984
  435590:	00221021 	addu	v0,at,v0
  435594:	8c420000 	lw	v0,0(v0)
  435598:	00000000 	nop
  43559c:	005c1021 	addu	v0,v0,gp
  4355a0:	00400008 	jr	v0
  4355a4:	00000000 	nop
    {
	case OID_MD2:
	case OID_MD2_WITH_RSA:
	{
	    MD2_CTX context;
	    MD2Init(&context);
  4355a8:	27c40018 	addiu	a0,s8,24
  4355ac:	8f998110 	lw	t9,-32496(gp)
  4355b0:	00000000 	nop
  4355b4:	0320f809 	jalr	t9
  4355b8:	00000000 	nop
  4355bc:	8fdc0010 	lw	gp,16(s8)
  4355c0:	00000000 	nop
	    MD2Update(&context, tbs.ptr, tbs.len);
  4355c4:	27c40018 	addiu	a0,s8,24
  4355c8:	8fc50120 	lw	a1,288(s8)
  4355cc:	8fc60124 	lw	a2,292(s8)
  4355d0:	8f998af4 	lw	t9,-29964(gp)
  4355d4:	00000000 	nop
  4355d8:	0320f809 	jalr	t9
  4355dc:	00000000 	nop
  4355e0:	8fdc0010 	lw	gp,16(s8)
  4355e4:	00000000 	nop
	    MD2Final(digest->ptr, &context);
  4355e8:	8fc2012c 	lw	v0,300(s8)
  4355ec:	00000000 	nop
  4355f0:	8c440000 	lw	a0,0(v0)
  4355f4:	27c50018 	addiu	a1,s8,24
  4355f8:	8f998850 	lw	t9,-30640(gp)
  4355fc:	00000000 	nop
  435600:	0320f809 	jalr	t9
  435604:	00000000 	nop
  435608:	8fdc0010 	lw	gp,16(s8)
  43560c:	00000000 	nop
	    digest->len = MD2_DIGEST_SIZE;
  435610:	24030010 	li	v1,16
  435614:	8fc2012c 	lw	v0,300(s8)
  435618:	00000000 	nop
  43561c:	ac430004 	sw	v1,4(v0)
	    return TRUE;
  435620:	24020001 	li	v0,1
  435624:	10000047 	b	435744 <compute_digest+0x224>
  435628:	00000000 	nop
	}
	case OID_MD5:
	case OID_MD5_WITH_RSA:
	{
	    MD5_CTX context;
	    MD5Init(&context);
  43562c:	27c40050 	addiu	a0,s8,80
  435630:	8f9983c8 	lw	t9,-31800(gp)
  435634:	00000000 	nop
  435638:	0320f809 	jalr	t9
  43563c:	00000000 	nop
  435640:	8fdc0010 	lw	gp,16(s8)
  435644:	00000000 	nop
	    MD5Update(&context, tbs.ptr, tbs.len);
  435648:	27c40050 	addiu	a0,s8,80
  43564c:	8fc50120 	lw	a1,288(s8)
  435650:	8fc60124 	lw	a2,292(s8)
  435654:	8f998354 	lw	t9,-31916(gp)
  435658:	00000000 	nop
  43565c:	0320f809 	jalr	t9
  435660:	00000000 	nop
  435664:	8fdc0010 	lw	gp,16(s8)
  435668:	00000000 	nop
	    MD5Final(digest->ptr, &context);
  43566c:	8fc2012c 	lw	v0,300(s8)
  435670:	00000000 	nop
  435674:	8c440000 	lw	a0,0(v0)
  435678:	27c50050 	addiu	a1,s8,80
  43567c:	8f99888c 	lw	t9,-30580(gp)
  435680:	00000000 	nop
  435684:	0320f809 	jalr	t9
  435688:	00000000 	nop
  43568c:	8fdc0010 	lw	gp,16(s8)
  435690:	00000000 	nop
	    digest->len = MD5_DIGEST_SIZE;
  435694:	24030010 	li	v1,16
  435698:	8fc2012c 	lw	v0,300(s8)
  43569c:	00000000 	nop
  4356a0:	ac430004 	sw	v1,4(v0)
	    return TRUE;
  4356a4:	24020001 	li	v0,1
  4356a8:	10000026 	b	435744 <compute_digest+0x224>
  4356ac:	00000000 	nop
	}
	case OID_SHA1:
	case OID_SHA1_WITH_RSA:
	{
	    SHA1_CTX context;
	    SHA1Init(&context);
  4356b0:	27c400a8 	addiu	a0,s8,168
  4356b4:	8f998a84 	lw	t9,-30076(gp)
  4356b8:	00000000 	nop
  4356bc:	0320f809 	jalr	t9
  4356c0:	00000000 	nop
  4356c4:	8fdc0010 	lw	gp,16(s8)
  4356c8:	00000000 	nop
	    SHA1Update(&context, tbs.ptr, tbs.len);
  4356cc:	27c400a8 	addiu	a0,s8,168
  4356d0:	8fc50120 	lw	a1,288(s8)
  4356d4:	8fc60124 	lw	a2,292(s8)
  4356d8:	8f998ae0 	lw	t9,-29984(gp)
  4356dc:	00000000 	nop
  4356e0:	0320f809 	jalr	t9
  4356e4:	00000000 	nop
  4356e8:	8fdc0010 	lw	gp,16(s8)
  4356ec:	00000000 	nop
	    SHA1Final(digest->ptr, &context);
  4356f0:	8fc2012c 	lw	v0,300(s8)
  4356f4:	00000000 	nop
  4356f8:	8c440000 	lw	a0,0(v0)
  4356fc:	27c500a8 	addiu	a1,s8,168
  435700:	8f998298 	lw	t9,-32104(gp)
  435704:	00000000 	nop
  435708:	0320f809 	jalr	t9
  43570c:	00000000 	nop
  435710:	8fdc0010 	lw	gp,16(s8)
  435714:	00000000 	nop
	    digest->len = SHA1_DIGEST_SIZE;
  435718:	24030014 	li	v1,20
  43571c:	8fc2012c 	lw	v0,300(s8)
  435720:	00000000 	nop
  435724:	ac430004 	sw	v1,4(v0)
	    return TRUE;
  435728:	24020001 	li	v0,1
  43572c:	10000005 	b	435744 <compute_digest+0x224>
  435730:	00000000 	nop
	}
	default:
	    digest->len = 0;
  435734:	8fc2012c 	lw	v0,300(s8)
  435738:	00000000 	nop
  43573c:	ac400004 	sw	zero,4(v0)
	    return FALSE;
  435740:	00001021 	move	v0,zero
    }
}
  435744:	03c0e821 	move	sp,s8
  435748:	8fbf0118 	lw	ra,280(sp)
  43574c:	8fbe0114 	lw	s8,276(sp)
  435750:	27bd0120 	addiu	sp,sp,288
  435754:	03e00008 	jr	ra
  435758:	00000000 	nop

0043575c <decrypt_sig>:
  43575c:	3c1c0fbd 	lui	gp,0xfbd
  435760:	279c7214 	addiu	gp,gp,29204
  435764:	0399e021 	addu	gp,gp,t9
  435768:	27bdff98 	addiu	sp,sp,-104
  43576c:	afbc0010 	sw	gp,16(sp)
  435770:	afbf0060 	sw	ra,96(sp)
  435774:	afbe005c 	sw	s8,92(sp)
  435778:	afbc0058 	sw	gp,88(sp)
  43577c:	03a0f021 	move	s8,sp
  435780:	afc40068 	sw	a0,104(s8)
  435784:	afc5006c 	sw	a1,108(s8)
  435788:	afc60070 	sw	a2,112(s8)
  43578c:	afc70074 	sw	a3,116(s8)

/*
 *  decrypts an RSA signature using the issuer's certificate
 */
static bool
decrypt_sig(chunk_t sig, int alg, const x509cert_t *issuer_cert,
	    chunk_t *digest)
{
    switch (alg)
  435790:	8fc20070 	lw	v0,112(s8)
  435794:	00000000 	nop
  435798:	afc20050 	sw	v0,80(s8)
  43579c:	8fc30050 	lw	v1,80(s8)
  4357a0:	00000000 	nop
  4357a4:	28620036 	slti	v0,v1,54
  4357a8:	10400085 	beqz	v0,4359c0 <decrypt_sig+0x264>
  4357ac:	00000000 	nop
  4357b0:	8fc30050 	lw	v1,80(s8)
  4357b4:	00000000 	nop
  4357b8:	2862002f 	slti	v0,v1,47
  4357bc:	14400080 	bnez	v0,4359c0 <decrypt_sig+0x264>
  4357c0:	00000000 	nop
    {
	chunk_t decrypted;
	case OID_RSA_ENCRYPTION:
	case OID_MD2_WITH_RSA:
	case OID_MD5_WITH_RSA:
	case OID_SHA1_WITH_RSA:
	case OID_SHA256_WITH_RSA:
	case OID_SHA384_WITH_RSA:
	case OID_SHA512_WITH_RSA:
	{
	    mpz_t s;
	    mpz_t e;
	    mpz_t n;

	    n_to_mpz(s, sig.ptr, sig.len);
  4357c4:	27c40020 	addiu	a0,s8,32
  4357c8:	8fc50068 	lw	a1,104(s8)
  4357cc:	8fc6006c 	lw	a2,108(s8)
  4357d0:	8f998358 	lw	t9,-31912(gp)
  4357d4:	00000000 	nop
  4357d8:	0320f809 	jalr	t9
  4357dc:	00000000 	nop
  4357e0:	8fdc0010 	lw	gp,16(s8)
  4357e4:	00000000 	nop
	    n_to_mpz(e, issuer_cert->publicExponent.ptr,
  4357e8:	27c40030 	addiu	a0,s8,48
  4357ec:	8fc20074 	lw	v0,116(s8)
  4357f0:	00000000 	nop
  4357f4:	8c450054 	lw	a1,84(v0)
  4357f8:	8fc20074 	lw	v0,116(s8)
  4357fc:	00000000 	nop
  435800:	8c460058 	lw	a2,88(v0)
  435804:	8f998358 	lw	t9,-31912(gp)
  435808:	00000000 	nop
  43580c:	0320f809 	jalr	t9
  435810:	00000000 	nop
  435814:	8fdc0010 	lw	gp,16(s8)
  435818:	00000000 	nop
			issuer_cert->publicExponent.len);
	    n_to_mpz(n, issuer_cert->modulus.ptr,
  43581c:	27c40040 	addiu	a0,s8,64
  435820:	8fc20074 	lw	v0,116(s8)
  435824:	00000000 	nop
  435828:	8c45004c 	lw	a1,76(v0)
  43582c:	8fc20074 	lw	v0,116(s8)
  435830:	00000000 	nop
  435834:	8c460050 	lw	a2,80(v0)
  435838:	8f998358 	lw	t9,-31912(gp)
  43583c:	00000000 	nop
  435840:	0320f809 	jalr	t9
  435844:	00000000 	nop
  435848:	8fdc0010 	lw	gp,16(s8)
  43584c:	00000000 	nop
			issuer_cert->modulus.len);

	    /* decrypt the signature s = s^e mod n */
	    mpz_powm(s, s, e, n);
  435850:	27c40020 	addiu	a0,s8,32
  435854:	27c50020 	addiu	a1,s8,32
  435858:	27c60030 	addiu	a2,s8,48
  43585c:	27c70040 	addiu	a3,s8,64
  435860:	8f9987c4 	lw	t9,-30780(gp)
  435864:	00000000 	nop
  435868:	0320f809 	jalr	t9
  43586c:	00000000 	nop
  435870:	8fdc0010 	lw	gp,16(s8)
  435874:	00000000 	nop
	    /* convert back to bytes */
	    decrypted = mpz_to_n(s, issuer_cert->modulus.len);
  435878:	27c40018 	addiu	a0,s8,24
  43587c:	27c50020 	addiu	a1,s8,32
  435880:	8fc20074 	lw	v0,116(s8)
  435884:	00000000 	nop
  435888:	8c460050 	lw	a2,80(v0)
  43588c:	8f9980c0 	lw	t9,-32576(gp)
  435890:	00000000 	nop
  435894:	0320f809 	jalr	t9
  435898:	00000000 	nop
  43589c:	8fdc0010 	lw	gp,16(s8)
  4358a0:	00000000 	nop
	    DBG(DBG_PARSING,
  4358a4:	8f8284f8 	lw	v0,-31496(gp)
  4358a8:	00000000 	nop
  4358ac:	8c420000 	lw	v0,0(v0)
  4358b0:	00000000 	nop
  4358b4:	30420004 	andi	v0,v0,0x4
  4358b8:	1040000c 	beqz	v0,4358ec <decrypt_sig+0x190>
  4358bc:	00000000 	nop
  4358c0:	8f84802c 	lw	a0,-32724(gp)
  4358c4:	00000000 	nop
  4358c8:	2484cdd4 	addiu	a0,a0,-12844
  4358cc:	8fc50018 	lw	a1,24(s8)
  4358d0:	8fc6001c 	lw	a2,28(s8)
  4358d4:	8f9984ec 	lw	t9,-31508(gp)
  4358d8:	00000000 	nop
  4358dc:	0320f809 	jalr	t9
  4358e0:	00000000 	nop
  4358e4:	8fdc0010 	lw	gp,16(s8)
  4358e8:	00000000 	nop
		DBG_dump_chunk("  decrypted signature: ", decrypted)
	    )

	    /*  copy the least significant bits of decrypted signature
	     *  into the digest string
	    */
	    memcpy(digest->ptr, decrypted.ptr + decrypted.len - digest->len,
  4358ec:	8fc30018 	lw	v1,24(s8)
  4358f0:	8fc2001c 	lw	v0,28(s8)
  4358f4:	00000000 	nop
  4358f8:	00621821 	addu	v1,v1,v0
  4358fc:	8fc20078 	lw	v0,120(s8)
  435900:	00000000 	nop
  435904:	8c420004 	lw	v0,4(v0)
  435908:	00000000 	nop
  43590c:	00621823 	subu	v1,v1,v0
  435910:	8fc20078 	lw	v0,120(s8)
  435914:	00000000 	nop
  435918:	8c440000 	lw	a0,0(v0)
  43591c:	00602821 	move	a1,v1
  435920:	8fc20078 	lw	v0,120(s8)
  435924:	00000000 	nop
  435928:	8c460004 	lw	a2,4(v0)
  43592c:	8f998a30 	lw	t9,-30160(gp)
  435930:	00000000 	nop
  435934:	0320f809 	jalr	t9
  435938:	00000000 	nop
  43593c:	8fdc0010 	lw	gp,16(s8)
  435940:	00000000 	nop
		   digest->len);

	    /* free memory */
	    pfree(decrypted.ptr);
  435944:	8fc40018 	lw	a0,24(s8)
  435948:	8f998094 	lw	t9,-32620(gp)
  43594c:	00000000 	nop
  435950:	0320f809 	jalr	t9
  435954:	00000000 	nop
  435958:	8fdc0010 	lw	gp,16(s8)
  43595c:	00000000 	nop
	    mpz_clear(s);
  435960:	27c40020 	addiu	a0,s8,32
  435964:	8f998c40 	lw	t9,-29632(gp)
  435968:	00000000 	nop
  43596c:	0320f809 	jalr	t9
  435970:	00000000 	nop
  435974:	8fdc0010 	lw	gp,16(s8)
  435978:	00000000 	nop
	    mpz_clear(e);
  43597c:	27c40030 	addiu	a0,s8,48
  435980:	8f998c40 	lw	t9,-29632(gp)
  435984:	00000000 	nop
  435988:	0320f809 	jalr	t9
  43598c:	00000000 	nop
  435990:	8fdc0010 	lw	gp,16(s8)
  435994:	00000000 	nop
	    mpz_clear(n);
  435998:	27c40040 	addiu	a0,s8,64
  43599c:	8f998c40 	lw	t9,-29632(gp)
  4359a0:	00000000 	nop
  4359a4:	0320f809 	jalr	t9
  4359a8:	00000000 	nop
  4359ac:	8fdc0010 	lw	gp,16(s8)
  4359b0:	00000000 	nop
	    return TRUE;
  4359b4:	24020001 	li	v0,1
  4359b8:	10000005 	b	4359d0 <decrypt_sig+0x274>
  4359bc:	00000000 	nop
	}
	default:
	    digest->len = 0;
  4359c0:	8fc20078 	lw	v0,120(s8)
  4359c4:	00000000 	nop
  4359c8:	ac400004 	sw	zero,4(v0)
	    return FALSE;
  4359cc:	00001021 	move	v0,zero
    }
}
  4359d0:	03c0e821 	move	sp,s8
  4359d4:	8fbf0060 	lw	ra,96(sp)
  4359d8:	8fbe005c 	lw	s8,92(sp)
  4359dc:	27bd0068 	addiu	sp,sp,104
  4359e0:	03e00008 	jr	ra
  4359e4:	00000000 	nop

004359e8 <check_signature>:
  4359e8:	3c1c0fbd 	lui	gp,0xfbd
  4359ec:	279c6f88 	addiu	gp,gp,28552
  4359f0:	0399e021 	addu	gp,gp,t9
  4359f4:	27bdfd08 	addiu	sp,sp,-760
  4359f8:	afbc0018 	sw	gp,24(sp)
  4359fc:	afbf02f0 	sw	ra,752(sp)
  435a00:	afbe02ec 	sw	s8,748(sp)
  435a04:	afbc02e8 	sw	gp,744(sp)
  435a08:	03a0f021 	move	s8,sp
  435a0c:	afc402f8 	sw	a0,760(s8)
  435a10:	afc502fc 	sw	a1,764(s8)
  435a14:	afc60300 	sw	a2,768(s8)
  435a18:	afc70304 	sw	a3,772(s8)

/*
 *   Check if a signature over binary blob is genuine
 */
static bool
check_signature(chunk_t tbs, chunk_t sig, chunk_t algorithm,
		const x509cert_t *issuer_cert)
{
    u_char digest_buf[MAX_DIGEST_LEN];
    u_char decrypted_buf[MAX_DIGEST_LEN];
    chunk_t digest = {digest_buf, MAX_DIGEST_LEN};
  435a1c:	27c20020 	addiu	v0,s8,32
  435a20:	afc200a8 	sw	v0,168(s8)
  435a24:	24020040 	li	v0,64
  435a28:	afc200ac 	sw	v0,172(s8)
  435a2c:	8fc200a8 	lw	v0,168(s8)
  435a30:	00000000 	nop
  435a34:	afc200a0 	sw	v0,160(s8)
  435a38:	8fc200ac 	lw	v0,172(s8)
  435a3c:	00000000 	nop
  435a40:	afc200a4 	sw	v0,164(s8)
    chunk_t decrypted = {decrypted_buf, MAX_DIGEST_LEN};
  435a44:	27c20060 	addiu	v0,s8,96
  435a48:	afc200b0 	sw	v0,176(s8)
  435a4c:	24020040 	li	v0,64
  435a50:	afc200b4 	sw	v0,180(s8)
  435a54:	8fc200b0 	lw	v0,176(s8)
  435a58:	00000000 	nop
  435a5c:	afc200a8 	sw	v0,168(s8)
  435a60:	8fc200b4 	lw	v0,180(s8)
  435a64:	00000000 	nop
  435a68:	afc200ac 	sw	v0,172(s8)

    int alg = known_oid(algorithm);
  435a6c:	8fc40308 	lw	a0,776(s8)
  435a70:	8fc5030c 	lw	a1,780(s8)
  435a74:	8f9982f8 	lw	t9,-32008(gp)
  435a78:	00000000 	nop
  435a7c:	0320f809 	jalr	t9
  435a80:	00000000 	nop
  435a84:	8fdc0018 	lw	gp,24(s8)
  435a88:	afc200b8 	sw	v0,184(s8)

    if (alg != -1)
  435a8c:	8fc300b8 	lw	v1,184(s8)
  435a90:	2402ffff 	li	v0,-1
  435a94:	1062001b 	beq	v1,v0,435b04 <check_signature+0x11c>
  435a98:	00000000 	nop
    {
	DBG(DBG_PARSING,
  435a9c:	8f8284f8 	lw	v0,-31496(gp)
  435aa0:	00000000 	nop
  435aa4:	8c420000 	lw	v0,0(v0)
  435aa8:	00000000 	nop
  435aac:	30420004 	andi	v0,v0,0x4
  435ab0:	10400038 	beqz	v0,435b94 <check_signature+0x1ac>
  435ab4:	00000000 	nop
  435ab8:	8fc200b8 	lw	v0,184(s8)
  435abc:	00000000 	nop
  435ac0:	00021100 	sll	v0,v0,0x4
  435ac4:	24420008 	addiu	v0,v0,8
  435ac8:	8f81865c 	lw	at,-31140(gp)
  435acc:	00000000 	nop
  435ad0:	24210004 	addiu	at,at,4
  435ad4:	00221021 	addu	v0,at,v0
  435ad8:	8f84802c 	lw	a0,-32724(gp)
  435adc:	00000000 	nop
  435ae0:	2484cdec 	addiu	a0,a0,-12820
  435ae4:	8c450000 	lw	a1,0(v0)
  435ae8:	8f9983b8 	lw	t9,-31816(gp)
  435aec:	00000000 	nop
  435af0:	0320f809 	jalr	t9
  435af4:	00000000 	nop
  435af8:	8fdc0018 	lw	gp,24(s8)
  435afc:	10000025 	b	435b94 <check_signature+0x1ac>
  435b00:	00000000 	nop
	    DBG_log("Signature Algorithm: '%s'",oid_names[alg].name);
	)
    }
    else
    {
	u_char buf[BUF_LEN];
	chunk_t hex_oid = {buf, BUF_LEN};
  435b04:	27c200c0 	addiu	v0,s8,192
  435b08:	afc202c0 	sw	v0,704(s8)
  435b0c:	24020200 	li	v0,512
  435b10:	afc202c4 	sw	v0,708(s8)
  435b14:	8fc202c0 	lw	v0,704(s8)
  435b18:	00000000 	nop
  435b1c:	afc200b0 	sw	v0,176(s8)
  435b20:	8fc202c4 	lw	v0,708(s8)
  435b24:	00000000 	nop
  435b28:	afc200b4 	sw	v0,180(s8)
	DBG(DBG_PARSING,
  435b2c:	8f8284f8 	lw	v0,-31496(gp)
  435b30:	00000000 	nop
  435b34:	8c420000 	lw	v0,0(v0)
  435b38:	00000000 	nop
  435b3c:	30420004 	andi	v0,v0,0x4
  435b40:	10400014 	beqz	v0,435b94 <check_signature+0x1ac>
  435b44:	00000000 	nop
  435b48:	8fc400b0 	lw	a0,176(s8)
  435b4c:	8fc500b4 	lw	a1,180(s8)
  435b50:	27c60308 	addiu	a2,s8,776
  435b54:	8f9981ec 	lw	t9,-32276(gp)
  435b58:	00000000 	nop
  435b5c:	0320f809 	jalr	t9
  435b60:	00000000 	nop
  435b64:	8fdc0018 	lw	gp,24(s8)
  435b68:	00000000 	nop
  435b6c:	8f84802c 	lw	a0,-32724(gp)
  435b70:	00000000 	nop
  435b74:	2484cdec 	addiu	a0,a0,-12820
  435b78:	8fc500b0 	lw	a1,176(s8)
  435b7c:	8f9983b8 	lw	t9,-31816(gp)
  435b80:	00000000 	nop
  435b84:	0320f809 	jalr	t9
  435b88:	00000000 	nop
  435b8c:	8fdc0018 	lw	gp,24(s8)
  435b90:	00000000 	nop
	    hex_str(hex_oid, &algorithm);
	    DBG_log("Signature Algorithm: '%s'", hex_oid.ptr);
	)
    }

    if (!compute_digest(tbs, alg, &digest))
  435b94:	8fc402f8 	lw	a0,760(s8)
  435b98:	8fc502fc 	lw	a1,764(s8)
  435b9c:	8fc600b8 	lw	a2,184(s8)
  435ba0:	27c700a0 	addiu	a3,s8,160
  435ba4:	8f998030 	lw	t9,-32720(gp)
  435ba8:	00000000 	nop
  435bac:	27395520 	addiu	t9,t9,21792
  435bb0:	00000000 	nop
  435bb4:	0320f809 	jalr	t9
  435bb8:	00000000 	nop
  435bbc:	8fdc0018 	lw	gp,24(s8)
  435bc0:	1440000d 	bnez	v0,435bf8 <check_signature+0x210>
  435bc4:	00000000 	nop
    {
	plog("  digest algorithm not supported");
  435bc8:	8f84802c 	lw	a0,-32724(gp)
  435bcc:	00000000 	nop
  435bd0:	2484ce08 	addiu	a0,a0,-12792
  435bd4:	8f998abc 	lw	t9,-30020(gp)
  435bd8:	00000000 	nop
  435bdc:	0320f809 	jalr	t9
  435be0:	00000000 	nop
  435be4:	8fdc0018 	lw	gp,24(s8)
  435be8:	00000000 	nop
	return FALSE;
  435bec:	00001021 	move	v0,zero
  435bf0:	10000041 	b	435cf8 <check_signature+0x310>
  435bf4:	00000000 	nop
    }

    DBG(DBG_PARSING,
  435bf8:	8f8284f8 	lw	v0,-31496(gp)
  435bfc:	00000000 	nop
  435c00:	8c420000 	lw	v0,0(v0)
  435c04:	00000000 	nop
  435c08:	30420004 	andi	v0,v0,0x4
  435c0c:	1040000c 	beqz	v0,435c40 <check_signature+0x258>
  435c10:	00000000 	nop
  435c14:	8f84802c 	lw	a0,-32724(gp)
  435c18:	00000000 	nop
  435c1c:	2484ce2c 	addiu	a0,a0,-12756
  435c20:	8fc500a0 	lw	a1,160(s8)
  435c24:	8fc600a4 	lw	a2,164(s8)
  435c28:	8f9984ec 	lw	t9,-31508(gp)
  435c2c:	00000000 	nop
  435c30:	0320f809 	jalr	t9
  435c34:	00000000 	nop
  435c38:	8fdc0018 	lw	gp,24(s8)
  435c3c:	00000000 	nop
	DBG_dump_chunk("  digest:", digest)
    )

    decrypted.len = digest.len; /* we want the same digest length */
  435c40:	8fc200a4 	lw	v0,164(s8)
  435c44:	00000000 	nop
  435c48:	afc200ac 	sw	v0,172(s8)

    if (!decrypt_sig(sig, alg, issuer_cert, &decrypted))
  435c4c:	27c200a8 	addiu	v0,s8,168
  435c50:	afa20010 	sw	v0,16(sp)
  435c54:	8fc40300 	lw	a0,768(s8)
  435c58:	8fc50304 	lw	a1,772(s8)
  435c5c:	8fc600b8 	lw	a2,184(s8)
  435c60:	8fc70310 	lw	a3,784(s8)
  435c64:	8f998030 	lw	t9,-32720(gp)
  435c68:	00000000 	nop
  435c6c:	2739575c 	addiu	t9,t9,22364
  435c70:	00000000 	nop
  435c74:	0320f809 	jalr	t9
  435c78:	00000000 	nop
  435c7c:	8fdc0018 	lw	gp,24(s8)
  435c80:	1440000d 	bnez	v0,435cb8 <check_signature+0x2d0>
  435c84:	00000000 	nop
    {
    	plog("  decryption algorithm not supported");
  435c88:	8f84802c 	lw	a0,-32724(gp)
  435c8c:	00000000 	nop
  435c90:	2484ce38 	addiu	a0,a0,-12744
  435c94:	8f998abc 	lw	t9,-30020(gp)
  435c98:	00000000 	nop
  435c9c:	0320f809 	jalr	t9
  435ca0:	00000000 	nop
  435ca4:	8fdc0018 	lw	gp,24(s8)
  435ca8:	00000000 	nop
	return FALSE;
  435cac:	00001021 	move	v0,zero
  435cb0:	10000011 	b	435cf8 <check_signature+0x310>
  435cb4:	00000000 	nop
    }

    /* check if digests are equal */
    return !memcmp(decrypted.ptr, digest.ptr, digest.len);
  435cb8:	8fc400a8 	lw	a0,168(s8)
  435cbc:	8fc500a0 	lw	a1,160(s8)
  435cc0:	8fc600a4 	lw	a2,164(s8)
  435cc4:	8f9985c8 	lw	t9,-31288(gp)
  435cc8:	00000000 	nop
  435ccc:	0320f809 	jalr	t9
  435cd0:	00000000 	nop
  435cd4:	8fdc0018 	lw	gp,24(s8)
  435cd8:	afc202e0 	sw	v0,736(s8)
  435cdc:	8fc302e0 	lw	v1,736(s8)
  435ce0:	00000000 	nop
  435ce4:	38620000 	xori	v0,v1,0x0
  435ce8:	2c420001 	sltiu	v0,v0,1
  435cec:	afc202e0 	sw	v0,736(s8)
  435cf0:	8fc202e0 	lw	v0,736(s8)
  435cf4:	00000000 	nop
}
  435cf8:	03c0e821 	move	sp,s8
  435cfc:	8fbf02f0 	lw	ra,752(sp)
  435d00:	8fbe02ec 	lw	s8,748(sp)
  435d04:	27bd02f8 	addiu	sp,sp,760
  435d08:	03e00008 	jr	ra
  435d0c:	00000000 	nop

00435d10 <insert_crl>:
  435d10:	3c1c0fbd 	lui	gp,0xfbd
  435d14:	279c6c60 	addiu	gp,gp,27744
  435d18:	0399e021 	addu	gp,gp,t9
  435d1c:	27bdff90 	addiu	sp,sp,-112
  435d20:	afbc0020 	sw	gp,32(sp)
  435d24:	afbf006c 	sw	ra,108(sp)
  435d28:	afbe0068 	sw	s8,104(sp)
  435d2c:	afbc0064 	sw	gp,100(sp)
  435d30:	afb00060 	sw	s0,96(sp)
  435d34:	03a0f021 	move	s8,sp
  435d38:	afc40070 	sw	a0,112(s8)
  435d3c:	afc50074 	sw	a1,116(s8)
  435d40:	afc60078 	sw	a2,120(s8)
  435d44:	afc7007c 	sw	a3,124(s8)

/*
 * Insert X.509 CRL into chained list
 */
bool
insert_crl(chunk_t blob, chunk_t crl_uri)
{
    x509crl_t *crl = alloc_thing(x509crl_t, "x509crl");
  435d48:	2404005c 	li	a0,92
  435d4c:	8f85802c 	lw	a1,-32724(gp)
  435d50:	00000000 	nop
  435d54:	24a5ce60 	addiu	a1,a1,-12704
  435d58:	8f998084 	lw	t9,-32636(gp)
  435d5c:	00000000 	nop
  435d60:	0320f809 	jalr	t9
  435d64:	00000000 	nop
  435d68:	8fdc0020 	lw	gp,32(s8)
  435d6c:	afc20028 	sw	v0,40(s8)

    *crl = empty_x509crl;
  435d70:	8fc20028 	lw	v0,40(s8)
  435d74:	00000000 	nop
  435d78:	00402021 	move	a0,v0
  435d7c:	8f858284 	lw	a1,-32124(gp)
  435d80:	2406005c 	li	a2,92
  435d84:	8f998a30 	lw	t9,-30160(gp)
  435d88:	00000000 	nop
  435d8c:	0320f809 	jalr	t9
  435d90:	00000000 	nop
  435d94:	8fdc0020 	lw	gp,32(s8)
  435d98:	00000000 	nop

    if (parse_x509crl(blob, 0, crl))
  435d9c:	8fc40070 	lw	a0,112(s8)
  435da0:	8fc50074 	lw	a1,116(s8)
  435da4:	00003021 	move	a2,zero
  435da8:	8fc70028 	lw	a3,40(s8)
  435dac:	8f998114 	lw	t9,-32492(gp)
  435db0:	00000000 	nop
  435db4:	0320f809 	jalr	t9
  435db8:	00000000 	nop
  435dbc:	8fdc0020 	lw	gp,32(s8)
  435dc0:	1040015d 	beqz	v0,436338 <insert_crl+0x628>
  435dc4:	00000000 	nop
    {
       x509cert_t *issuer_cert;
       x509crl_t *oldcrl;
       bool valid_sig;
       generalName_t *gn;

       /* add distribution point */
       gn = alloc_thing(generalName_t, "generalName");
  435dc8:	24040010 	li	a0,16
  435dcc:	8f85802c 	lw	a1,-32724(gp)
  435dd0:	00000000 	nop
  435dd4:	24a5cb20 	addiu	a1,a1,-13536
  435dd8:	8f998084 	lw	t9,-32636(gp)
  435ddc:	00000000 	nop
  435de0:	0320f809 	jalr	t9
  435de4:	00000000 	nop
  435de8:	8fdc0020 	lw	gp,32(s8)
  435dec:	afc20038 	sw	v0,56(s8)
       gn->kind = GN_URI;
  435df0:	24030006 	li	v1,6
  435df4:	8fc20038 	lw	v0,56(s8)
  435df8:	00000000 	nop
  435dfc:	ac430004 	sw	v1,4(v0)
       gn->name = crl_uri;
  435e00:	8fc30038 	lw	v1,56(s8)
  435e04:	8fc20078 	lw	v0,120(s8)
  435e08:	00000000 	nop
  435e0c:	ac620008 	sw	v0,8(v1)
  435e10:	8fc2007c 	lw	v0,124(s8)
  435e14:	00000000 	nop
  435e18:	ac62000c 	sw	v0,12(v1)
       gn->next = crl->distributionPoints;
  435e1c:	8fc20028 	lw	v0,40(s8)
  435e20:	00000000 	nop
  435e24:	8c430008 	lw	v1,8(v0)
  435e28:	8fc20038 	lw	v0,56(s8)
  435e2c:	00000000 	nop
  435e30:	ac430000 	sw	v1,0(v0)
       crl->distributionPoints = gn;
  435e34:	8fc30038 	lw	v1,56(s8)
  435e38:	8fc20028 	lw	v0,40(s8)
  435e3c:	00000000 	nop
  435e40:	ac430008 	sw	v1,8(v0)

       lock_cacert_list("insert_crl");
  435e44:	8f84802c 	lw	a0,-32724(gp)
  435e48:	00000000 	nop
  435e4c:	2484ce68 	addiu	a0,a0,-12696
  435e50:	8f998584 	lw	t9,-31356(gp)
  435e54:	00000000 	nop
  435e58:	0320f809 	jalr	t9
  435e5c:	00000000 	nop
  435e60:	8fdc0020 	lw	gp,32(s8)
  435e64:	00000000 	nop
       /* get the issuer cacert */
       issuer_cert = get_x509cacert(crl->issuer, crl->authKeySerialNumber,
  435e68:	8fc50028 	lw	a1,40(s8)
  435e6c:	8fc70028 	lw	a3,40(s8)
  435e70:	8fc30028 	lw	v1,40(s8)
  435e74:	00000000 	nop
  435e78:	8c62003c 	lw	v0,60(v1)
  435e7c:	00000000 	nop
  435e80:	afa20010 	sw	v0,16(sp)
  435e84:	8c620040 	lw	v0,64(v1)
  435e88:	00000000 	nop
  435e8c:	afa20014 	sw	v0,20(sp)
  435e90:	8ca40028 	lw	a0,40(a1)
  435e94:	8ca5002c 	lw	a1,44(a1)
  435e98:	8ce60044 	lw	a2,68(a3)
  435e9c:	8ce70048 	lw	a3,72(a3)
  435ea0:	8f998030 	lw	t9,-32720(gp)
  435ea4:	00000000 	nop
  435ea8:	2739179c 	addiu	t9,t9,6044
  435eac:	00000000 	nop
  435eb0:	0320f809 	jalr	t9
  435eb4:	00000000 	nop
  435eb8:	8fdc0020 	lw	gp,32(s8)
  435ebc:	afc2002c 	sw	v0,44(s8)
           crl->authKeyID);
       if (issuer_cert == NULL)
  435ec0:	8fc2002c 	lw	v0,44(s8)
  435ec4:	00000000 	nop
  435ec8:	1440001d 	bnez	v0,435f40 <insert_crl+0x230>
  435ecc:	00000000 	nop
       {
           plog("crl issuer cacert not found");
  435ed0:	8f84802c 	lw	a0,-32724(gp)
  435ed4:	00000000 	nop
  435ed8:	2484ce74 	addiu	a0,a0,-12684
  435edc:	8f998abc 	lw	t9,-30020(gp)
  435ee0:	00000000 	nop
  435ee4:	0320f809 	jalr	t9
  435ee8:	00000000 	nop
  435eec:	8fdc0020 	lw	gp,32(s8)
  435ef0:	00000000 	nop
           free_crl(crl);
  435ef4:	8fc40028 	lw	a0,40(s8)
  435ef8:	8f9983cc 	lw	t9,-31796(gp)
  435efc:	00000000 	nop
  435f00:	0320f809 	jalr	t9
  435f04:	00000000 	nop
  435f08:	8fdc0020 	lw	gp,32(s8)
  435f0c:	00000000 	nop
           unlock_cacert_list("insert_crl");
  435f10:	8f84802c 	lw	a0,-32724(gp)
  435f14:	00000000 	nop
  435f18:	2484ce68 	addiu	a0,a0,-12696
  435f1c:	8f998874 	lw	t9,-30604(gp)
  435f20:	00000000 	nop
  435f24:	0320f809 	jalr	t9
  435f28:	00000000 	nop
  435f2c:	8fdc0020 	lw	gp,32(s8)
  435f30:	00000000 	nop
           return FALSE;
  435f34:	00001021 	move	v0,zero
  435f38:	10000110 	b	43637c <insert_crl+0x66c>
  435f3c:	00000000 	nop
       }
       DBG(DBG_CONTROL,
  435f40:	8f8284f8 	lw	v0,-31496(gp)
  435f44:	00000000 	nop
  435f48:	8c420000 	lw	v0,0(v0)
  435f4c:	00000000 	nop
  435f50:	30420010 	andi	v0,v0,0x10
  435f54:	1040000a 	beqz	v0,435f80 <insert_crl+0x270>
  435f58:	00000000 	nop
  435f5c:	8f84802c 	lw	a0,-32724(gp)
  435f60:	00000000 	nop
  435f64:	2484ce90 	addiu	a0,a0,-12656
  435f68:	8f9983b8 	lw	t9,-31816(gp)
  435f6c:	00000000 	nop
  435f70:	0320f809 	jalr	t9
  435f74:	00000000 	nop
  435f78:	8fdc0020 	lw	gp,32(s8)
  435f7c:	00000000 	nop
           DBG_log("crl issuer cacert found")
       )
       /* check the issuer's signature of the crl */
       valid_sig = check_signature(crl->tbsCertList, crl->signature
  435f80:	8fc50028 	lw	a1,40(s8)
  435f84:	8fc70028 	lw	a3,40(s8)
  435f88:	8fc30028 	lw	v1,40(s8)
  435f8c:	00000000 	nop
  435f90:	8c62004c 	lw	v0,76(v1)
  435f94:	00000000 	nop
  435f98:	afa20010 	sw	v0,16(sp)
  435f9c:	8c620050 	lw	v0,80(v1)
  435fa0:	00000000 	nop
  435fa4:	afa20014 	sw	v0,20(sp)
  435fa8:	8fc2002c 	lw	v0,44(s8)
  435fac:	00000000 	nop
  435fb0:	afa20018 	sw	v0,24(sp)
  435fb4:	8ca40014 	lw	a0,20(a1)
  435fb8:	8ca50018 	lw	a1,24(a1)
  435fbc:	8ce60054 	lw	a2,84(a3)
  435fc0:	8ce70058 	lw	a3,88(a3)
  435fc4:	8f998030 	lw	t9,-32720(gp)
  435fc8:	00000000 	nop
  435fcc:	273959e8 	addiu	t9,t9,23016
  435fd0:	00000000 	nop
  435fd4:	0320f809 	jalr	t9
  435fd8:	00000000 	nop
  435fdc:	8fdc0020 	lw	gp,32(s8)
  435fe0:	afc20034 	sw	v0,52(s8)
                       , crl->algorithm, issuer_cert);
       unlock_cacert_list("insert_crl");
  435fe4:	8f84802c 	lw	a0,-32724(gp)
  435fe8:	00000000 	nop
  435fec:	2484ce68 	addiu	a0,a0,-12696
  435ff0:	8f998874 	lw	t9,-30604(gp)
  435ff4:	00000000 	nop
  435ff8:	0320f809 	jalr	t9
  435ffc:	00000000 	nop
  436000:	8fdc0020 	lw	gp,32(s8)
  436004:	00000000 	nop

       if (!valid_sig)
  436008:	8fc20034 	lw	v0,52(s8)
  43600c:	00000000 	nop
  436010:	1440000b 	bnez	v0,436040 <insert_crl+0x330>
  436014:	00000000 	nop
       {
           free_crl(crl);
  436018:	8fc40028 	lw	a0,40(s8)
  43601c:	8f9983cc 	lw	t9,-31796(gp)
  436020:	00000000 	nop
  436024:	0320f809 	jalr	t9
  436028:	00000000 	nop
  43602c:	8fdc0020 	lw	gp,32(s8)
  436030:	00000000 	nop
           return FALSE;
  436034:	00001021 	move	v0,zero
  436038:	100000d0 	b	43637c <insert_crl+0x66c>
  43603c:	00000000 	nop
       }
       DBG(DBG_CONTROL,
  436040:	8f8284f8 	lw	v0,-31496(gp)
  436044:	00000000 	nop
  436048:	8c420000 	lw	v0,0(v0)
  43604c:	00000000 	nop
  436050:	30420010 	andi	v0,v0,0x10
  436054:	1040000a 	beqz	v0,436080 <insert_crl+0x370>
  436058:	00000000 	nop
  43605c:	8f84802c 	lw	a0,-32724(gp)
  436060:	00000000 	nop
  436064:	2484cea8 	addiu	a0,a0,-12632
  436068:	8f9983b8 	lw	t9,-31816(gp)
  43606c:	00000000 	nop
  436070:	0320f809 	jalr	t9
  436074:	00000000 	nop
  436078:	8fdc0020 	lw	gp,32(s8)
  43607c:	00000000 	nop
           DBG_log("crl signature is valid")
       )

       lock_crl_list("insert_crl");
  436080:	8f84802c 	lw	a0,-32724(gp)
  436084:	00000000 	nop
  436088:	2484ce68 	addiu	a0,a0,-12696
  43608c:	8f9989cc 	lw	t9,-30260(gp)
  436090:	00000000 	nop
  436094:	0320f809 	jalr	t9
  436098:	00000000 	nop
  43609c:	8fdc0020 	lw	gp,32(s8)
  4360a0:	00000000 	nop
       oldcrl = get_x509crl(crl->issuer, crl->authKeySerialNumber
  4360a4:	8fc50028 	lw	a1,40(s8)
  4360a8:	8fc70028 	lw	a3,40(s8)
  4360ac:	8fc30028 	lw	v1,40(s8)
  4360b0:	00000000 	nop
  4360b4:	8c62003c 	lw	v0,60(v1)
  4360b8:	00000000 	nop
  4360bc:	afa20010 	sw	v0,16(sp)
  4360c0:	8c620040 	lw	v0,64(v1)
  4360c4:	00000000 	nop
  4360c8:	afa20014 	sw	v0,20(sp)
  4360cc:	8ca40028 	lw	a0,40(a1)
  4360d0:	8ca5002c 	lw	a1,44(a1)
  4360d4:	8ce60044 	lw	a2,68(a3)
  4360d8:	8ce70048 	lw	a3,72(a3)
  4360dc:	8f998030 	lw	t9,-32720(gp)
  4360e0:	00000000 	nop
  4360e4:	27391cd8 	addiu	t9,t9,7384
  4360e8:	00000000 	nop
  4360ec:	0320f809 	jalr	t9
  4360f0:	00000000 	nop
  4360f4:	8fdc0020 	lw	gp,32(s8)
  4360f8:	afc20030 	sw	v0,48(s8)
           , crl->authKeyID);

       if (oldcrl != NULL)
  4360fc:	8fc20030 	lw	v0,48(s8)
  436100:	00000000 	nop
  436104:	10400064 	beqz	v0,436298 <insert_crl+0x588>
  436108:	00000000 	nop
       {
           if (crl->thisUpdate > oldcrl->thisUpdate)
  43610c:	8fc20028 	lw	v0,40(s8)
  436110:	00000000 	nop
  436114:	8c430030 	lw	v1,48(v0)
  436118:	8fc20030 	lw	v0,48(s8)
  43611c:	00000000 	nop
  436120:	8c420030 	lw	v0,48(v0)
  436124:	00000000 	nop
  436128:	0043102a 	slt	v0,v0,v1
  43612c:	10400027 	beqz	v0,4361cc <insert_crl+0x4bc>
  436130:	00000000 	nop
           {
               /* keep any known CRL distribution points */
               add_distribution_points(oldcrl->distributionPoints
  436134:	8fc20028 	lw	v0,40(s8)
  436138:	00000000 	nop
  43613c:	24430008 	addiu	v1,v0,8
  436140:	8fc20030 	lw	v0,48(s8)
  436144:	00000000 	nop
  436148:	8c440008 	lw	a0,8(v0)
  43614c:	00602821 	move	a1,v1
  436150:	8f9989b4 	lw	t9,-30284(gp)
  436154:	00000000 	nop
  436158:	0320f809 	jalr	t9
  43615c:	00000000 	nop
  436160:	8fdc0020 	lw	gp,32(s8)
  436164:	00000000 	nop
                   , &crl->distributionPoints);

               /* now delete the old CRL */
               free_first_crl();
  436168:	8f998030 	lw	t9,-32720(gp)
  43616c:	00000000 	nop
  436170:	273924f0 	addiu	t9,t9,9456
  436174:	00000000 	nop
  436178:	0320f809 	jalr	t9
  43617c:	00000000 	nop
  436180:	8fdc0020 	lw	gp,32(s8)
  436184:	00000000 	nop
               DBG(DBG_CONTROL,
  436188:	8f8284f8 	lw	v0,-31496(gp)
  43618c:	00000000 	nop
  436190:	8c420000 	lw	v0,0(v0)
  436194:	00000000 	nop
  436198:	30420010 	andi	v0,v0,0x10
  43619c:	1040003e 	beqz	v0,436298 <insert_crl+0x588>
  4361a0:	00000000 	nop
  4361a4:	8f84802c 	lw	a0,-32724(gp)
  4361a8:	00000000 	nop
  4361ac:	2484cec0 	addiu	a0,a0,-12608
  4361b0:	8f9983b8 	lw	t9,-31816(gp)
  4361b4:	00000000 	nop
  4361b8:	0320f809 	jalr	t9
  4361bc:	00000000 	nop
  4361c0:	8fdc0020 	lw	gp,32(s8)
  4361c4:	10000034 	b	436298 <insert_crl+0x588>
  4361c8:	00000000 	nop
                   DBG_log("thisUpdate is newer - existing crl deleted")
               )
           }
           else
           {
               unlock_crl_list("insert_crls");
  4361cc:	8f84802c 	lw	a0,-32724(gp)
  4361d0:	00000000 	nop
  4361d4:	2484ceec 	addiu	a0,a0,-12564
  4361d8:	8f9986f0 	lw	t9,-30992(gp)
  4361dc:	00000000 	nop
  4361e0:	0320f809 	jalr	t9
  4361e4:	00000000 	nop
  4361e8:	8fdc0020 	lw	gp,32(s8)
  4361ec:	00000000 	nop
               DBG(DBG_CONTROL,
  4361f0:	8f8284f8 	lw	v0,-31496(gp)
  4361f4:	00000000 	nop
  4361f8:	8c420000 	lw	v0,0(v0)
  4361fc:	00000000 	nop
  436200:	30420010 	andi	v0,v0,0x10
  436204:	1040000a 	beqz	v0,436230 <insert_crl+0x520>
  436208:	00000000 	nop
  43620c:	8f84802c 	lw	a0,-32724(gp)
  436210:	00000000 	nop
  436214:	2484cef8 	addiu	a0,a0,-12552
  436218:	8f9983b8 	lw	t9,-31816(gp)
  43621c:	00000000 	nop
  436220:	0320f809 	jalr	t9
  436224:	00000000 	nop
  436228:	8fdc0020 	lw	gp,32(s8)
  43622c:	00000000 	nop
                   DBG_log("thisUpdate is not newer - existing crl not replaced");
               )
               free_crl(crl);
  436230:	8fc40028 	lw	a0,40(s8)
  436234:	8f9983cc 	lw	t9,-31796(gp)
  436238:	00000000 	nop
  43623c:	0320f809 	jalr	t9
  436240:	00000000 	nop
  436244:	8fdc0020 	lw	gp,32(s8)
  436248:	00000000 	nop
               return oldcrl->nextUpdate - time(NULL) > 2*crl_check_interval;
  43624c:	8fd00030 	lw	s0,48(s8)
  436250:	00002021 	move	a0,zero
  436254:	8f9984b4 	lw	t9,-31564(gp)
  436258:	00000000 	nop
  43625c:	0320f809 	jalr	t9
  436260:	00000000 	nop
  436264:	8fdc0020 	lw	gp,32(s8)
  436268:	00401821 	move	v1,v0
  43626c:	8e020034 	lw	v0,52(s0)
  436270:	00000000 	nop
  436274:	00431023 	subu	v0,v0,v1
  436278:	8f8386e8 	lw	v1,-31000(gp)
  43627c:	00000000 	nop
  436280:	8c630000 	lw	v1,0(v1)
  436284:	00000000 	nop
  436288:	00031840 	sll	v1,v1,0x1
  43628c:	0062102a 	slt	v0,v1,v0
  436290:	1000003a 	b	43637c <insert_crl+0x66c>
  436294:	00000000 	nop
           }
       }

       /* insert new CRL */
       crl->next = x509crls;
  436298:	8f838018 	lw	v1,-32744(gp)
  43629c:	00000000 	nop
  4362a0:	24631ab8 	addiu	v1,v1,6840
  4362a4:	8c630000 	lw	v1,0(v1)
  4362a8:	8fc20028 	lw	v0,40(s8)
  4362ac:	00000000 	nop
  4362b0:	ac430000 	sw	v1,0(v0)
       x509crls = crl;
  4362b4:	8fc20028 	lw	v0,40(s8)
  4362b8:	8f818018 	lw	at,-32744(gp)
  4362bc:	00000000 	nop
  4362c0:	24211ab8 	addiu	at,at,6840
  4362c4:	ac220000 	sw	v0,0(at)

       unlock_crl_list("insert_crl");
  4362c8:	8f84802c 	lw	a0,-32724(gp)
  4362cc:	00000000 	nop
  4362d0:	2484ce68 	addiu	a0,a0,-12696
  4362d4:	8f9986f0 	lw	t9,-30992(gp)
  4362d8:	00000000 	nop
  4362dc:	0320f809 	jalr	t9
  4362e0:	00000000 	nop
  4362e4:	8fdc0020 	lw	gp,32(s8)
  4362e8:	00000000 	nop
       /* is the fetched crl valid? */
       return crl->nextUpdate - time(NULL) > 2*crl_check_interval;
  4362ec:	8fd00028 	lw	s0,40(s8)
  4362f0:	00002021 	move	a0,zero
  4362f4:	8f9984b4 	lw	t9,-31564(gp)
  4362f8:	00000000 	nop
  4362fc:	0320f809 	jalr	t9
  436300:	00000000 	nop
  436304:	8fdc0020 	lw	gp,32(s8)
  436308:	00401821 	move	v1,v0
  43630c:	8e020034 	lw	v0,52(s0)
  436310:	00000000 	nop
  436314:	00431023 	subu	v0,v0,v1
  436318:	8f8386e8 	lw	v1,-31000(gp)
  43631c:	00000000 	nop
  436320:	8c630000 	lw	v1,0(v1)
  436324:	00000000 	nop
  436328:	00031840 	sll	v1,v1,0x1
  43632c:	0062102a 	slt	v0,v1,v0
  436330:	10000012 	b	43637c <insert_crl+0x66c>
  436334:	00000000 	nop
    }
    else
    {
       plog("  error in X.509 crl");
  436338:	8f84802c 	lw	a0,-32724(gp)
  43633c:	00000000 	nop
  436340:	2484cf2c 	addiu	a0,a0,-12500
  436344:	8f998abc 	lw	t9,-30020(gp)
  436348:	00000000 	nop
  43634c:	0320f809 	jalr	t9
  436350:	00000000 	nop
  436354:	8fdc0020 	lw	gp,32(s8)
  436358:	00000000 	nop
       free_crl(crl);
  43635c:	8fc40028 	lw	a0,40(s8)
  436360:	8f9983cc 	lw	t9,-31796(gp)
  436364:	00000000 	nop
  436368:	0320f809 	jalr	t9
  43636c:	00000000 	nop
  436370:	8fdc0020 	lw	gp,32(s8)
  436374:	00000000 	nop
       return FALSE;
  436378:	00001021 	move	v0,zero
    }
}
  43637c:	03c0e821 	move	sp,s8
  436380:	8fbf006c 	lw	ra,108(sp)
  436384:	8fbe0068 	lw	s8,104(sp)
  436388:	8fb00060 	lw	s0,96(sp)
  43638c:	27bd0070 	addiu	sp,sp,112
  436390:	03e00008 	jr	ra
  436394:	00000000 	nop

00436398 <check_crl>:
  436398:	3c1c0fbd 	lui	gp,0xfbd
  43639c:	279c65d8 	addiu	gp,gp,26072
  4363a0:	0399e021 	addu	gp,gp,t9
  4363a4:	27bdffd0 	addiu	sp,sp,-48
  4363a8:	afbc0010 	sw	gp,16(sp)
  4363ac:	afbf0028 	sw	ra,40(sp)
  4363b0:	afbe0024 	sw	s8,36(sp)
  4363b4:	afbc0020 	sw	gp,32(sp)
  4363b8:	03a0f021 	move	s8,sp
  4363bc:	afc40030 	sw	a0,48(s8)
  4363c0:	afc50034 	sw	a1,52(s8)
  4363c4:	afc60038 	sw	a2,56(s8)
  4363c8:	afc7003c 	sw	a3,60(s8)





/*  Checks if the current certificate is revoked. It goes through the
 *  list of revoked certificates of the corresponding crl. If the
 *  certificate is not found in the list, then the certificate is valid
 *  and FALSE is returned.
 */
static bool
check_crl(const x509crl_t *crl, chunk_t serial, bool strict, time_t *until)
{
    revokedCert_t *revokedCert = crl->revokedCertificates;
  4363cc:	8fc20030 	lw	v0,48(s8)
  4363d0:	00000000 	nop
  4363d4:	8c420038 	lw	v0,56(v0)
  4363d8:	00000000 	nop
  4363dc:	afc20018 	sw	v0,24(s8)
    time_t current_time;

    time(&current_time);
  4363e0:	27c4001c 	addiu	a0,s8,28
  4363e4:	8f9984b4 	lw	t9,-31564(gp)
  4363e8:	00000000 	nop
  4363ec:	0320f809 	jalr	t9
  4363f0:	00000000 	nop
  4363f4:	8fdc0010 	lw	gp,16(s8)
  4363f8:	00000000 	nop
    DBG(DBG_PARSING,
  4363fc:	8f8284f8 	lw	v0,-31496(gp)
  436400:	00000000 	nop
  436404:	8c420000 	lw	v0,0(v0)
  436408:	00000000 	nop
  43640c:	30420004 	andi	v0,v0,0x4
  436410:	10400043 	beqz	v0,436520 <check_crl+0x188>
  436414:	00000000 	nop
  436418:	8f84802c 	lw	a0,-32724(gp)
  43641c:	00000000 	nop
  436420:	2484cf44 	addiu	a0,a0,-12476
  436424:	8f9983b8 	lw	t9,-31816(gp)
  436428:	00000000 	nop
  43642c:	0320f809 	jalr	t9
  436430:	00000000 	nop
  436434:	8fdc0010 	lw	gp,16(s8)
  436438:	8fc20030 	lw	v0,48(s8)
  43643c:	00000000 	nop
  436440:	24420030 	addiu	v0,v0,48
  436444:	00402021 	move	a0,v0
  436448:	24050001 	li	a1,1
  43644c:	8f998b80 	lw	t9,-29824(gp)
  436450:	00000000 	nop
  436454:	0320f809 	jalr	t9
  436458:	00000000 	nop
  43645c:	8fdc0010 	lw	gp,16(s8)
  436460:	00000000 	nop
  436464:	8f84802c 	lw	a0,-32724(gp)
  436468:	00000000 	nop
  43646c:	2484cf58 	addiu	a0,a0,-12456
  436470:	00402821 	move	a1,v0
  436474:	8f9983b8 	lw	t9,-31816(gp)
  436478:	00000000 	nop
  43647c:	0320f809 	jalr	t9
  436480:	00000000 	nop
  436484:	8fdc0010 	lw	gp,16(s8)
  436488:	27c4001c 	addiu	a0,s8,28
  43648c:	24050001 	li	a1,1
  436490:	8f998b80 	lw	t9,-29824(gp)
  436494:	00000000 	nop
  436498:	0320f809 	jalr	t9
  43649c:	00000000 	nop
  4364a0:	8fdc0010 	lw	gp,16(s8)
  4364a4:	00000000 	nop
  4364a8:	8f84802c 	lw	a0,-32724(gp)
  4364ac:	00000000 	nop
  4364b0:	2484ccd4 	addiu	a0,a0,-13100
  4364b4:	00402821 	move	a1,v0
  4364b8:	8f9983b8 	lw	t9,-31816(gp)
  4364bc:	00000000 	nop
  4364c0:	0320f809 	jalr	t9
  4364c4:	00000000 	nop
  4364c8:	8fdc0010 	lw	gp,16(s8)
  4364cc:	8fc20030 	lw	v0,48(s8)
  4364d0:	00000000 	nop
  4364d4:	24420034 	addiu	v0,v0,52
  4364d8:	00402021 	move	a0,v0
  4364dc:	24050001 	li	a1,1
  4364e0:	8f998b80 	lw	t9,-29824(gp)
  4364e4:	00000000 	nop
  4364e8:	0320f809 	jalr	t9
  4364ec:	00000000 	nop
  4364f0:	8fdc0010 	lw	gp,16(s8)
  4364f4:	00000000 	nop
  4364f8:	8f84802c 	lw	a0,-32724(gp)
  4364fc:	00000000 	nop
  436500:	2484cf6c 	addiu	a0,a0,-12436
  436504:	00402821 	move	a1,v0
  436508:	8f9983b8 	lw	t9,-31816(gp)
  43650c:	00000000 	nop
  436510:	0320f809 	jalr	t9
  436514:	00000000 	nop
  436518:	8fdc0010 	lw	gp,16(s8)
  43651c:	00000000 	nop
	DBG_log("Next CRL update:");
	DBG_log("  this update : %s", timetoa(&crl->thisUpdate, TRUE));
	DBG_log("  current time: %s", timetoa(&current_time, TRUE));
	DBG_log("  next update : %s", timetoa(&crl->nextUpdate, TRUE));
    )

    if (strict && crl->nextUpdate < *until) *until = crl->nextUpdate;
  436520:	8fc2003c 	lw	v0,60(s8)
  436524:	00000000 	nop
  436528:	10400011 	beqz	v0,436570 <check_crl+0x1d8>
  43652c:	00000000 	nop
  436530:	8fc20030 	lw	v0,48(s8)
  436534:	00000000 	nop
  436538:	8c430034 	lw	v1,52(v0)
  43653c:	8fc20040 	lw	v0,64(s8)
  436540:	00000000 	nop
  436544:	8c420000 	lw	v0,0(v0)
  436548:	00000000 	nop
  43654c:	0062102a 	slt	v0,v1,v0
  436550:	10400007 	beqz	v0,436570 <check_crl+0x1d8>
  436554:	00000000 	nop
  436558:	8fc20030 	lw	v0,48(s8)
  43655c:	00000000 	nop
  436560:	8c430034 	lw	v1,52(v0)
  436564:	8fc20040 	lw	v0,64(s8)
  436568:	00000000 	nop
  43656c:	ac430000 	sw	v1,0(v0)

    if (current_time > crl->nextUpdate)
  436570:	8fc20030 	lw	v0,48(s8)
  436574:	00000000 	nop
  436578:	8c430034 	lw	v1,52(v0)
  43657c:	8fc2001c 	lw	v0,28(s8)
  436580:	00000000 	nop
  436584:	0062102a 	slt	v0,v1,v0
  436588:	1040001d 	beqz	v0,436600 <check_crl+0x268>
  43658c:	00000000 	nop
    {
	plog("Next CRL update was expected on %s",
  436590:	8fc20030 	lw	v0,48(s8)
  436594:	00000000 	nop
  436598:	24420034 	addiu	v0,v0,52
  43659c:	00402021 	move	a0,v0
  4365a0:	24050001 	li	a1,1
  4365a4:	8f998b80 	lw	t9,-29824(gp)
  4365a8:	00000000 	nop
  4365ac:	0320f809 	jalr	t9
  4365b0:	00000000 	nop
  4365b4:	8fdc0010 	lw	gp,16(s8)
  4365b8:	00000000 	nop
  4365bc:	8f84802c 	lw	a0,-32724(gp)
  4365c0:	00000000 	nop
  4365c4:	2484cf80 	addiu	a0,a0,-12416
  4365c8:	00402821 	move	a1,v0
  4365cc:	8f998abc 	lw	t9,-30020(gp)
  4365d0:	00000000 	nop
  4365d4:	0320f809 	jalr	t9
  4365d8:	00000000 	nop
  4365dc:	8fdc0010 	lw	gp,16(s8)
  4365e0:	00000000 	nop
		timetoa(&crl->nextUpdate, TRUE));
	if (strict) return FALSE;
  4365e4:	8fc2003c 	lw	v0,60(s8)
  4365e8:	00000000 	nop
  4365ec:	10400004 	beqz	v0,436600 <check_crl+0x268>
  4365f0:	00000000 	nop
  4365f4:	00001021 	move	v0,zero
  4365f8:	1000005c 	b	43676c <check_crl+0x3d4>
  4365fc:	00000000 	nop
    }

    DBG(DBG_PARSING,
  436600:	8f8284f8 	lw	v0,-31496(gp)
  436604:	00000000 	nop
  436608:	8c420000 	lw	v0,0(v0)
  43660c:	00000000 	nop
  436610:	30420004 	andi	v0,v0,0x4
  436614:	1040000b 	beqz	v0,436644 <check_crl+0x2ac>
  436618:	00000000 	nop
  43661c:	8f84802c 	lw	a0,-32724(gp)
  436620:	00000000 	nop
  436624:	2484cfa4 	addiu	a0,a0,-12380
  436628:	8fc50034 	lw	a1,52(s8)
  43662c:	8fc60038 	lw	a2,56(s8)
  436630:	8f9984ec 	lw	t9,-31508(gp)
  436634:	00000000 	nop
  436638:	0320f809 	jalr	t9
  43663c:	00000000 	nop
  436640:	8fdc0010 	lw	gp,16(s8)
  436644:	00000000 	nop
	DBG_dump_chunk("Serial number:", serial)
    )

    while(revokedCert != NULL)
  436648:	8fc20018 	lw	v0,24(s8)
  43664c:	00000000 	nop
  436650:	14400003 	bnez	v0,436660 <check_crl+0x2c8>
  436654:	00000000 	nop
  436658:	10000033 	b	436728 <check_crl+0x390>
  43665c:	00000000 	nop
    {
	/* compare serial numbers */
	if (revokedCert->userCertificate.len == serial.len &&
	    memcmp(revokedCert->userCertificate.ptr, serial.ptr, serial.len) == 0)
  436660:	8fc20018 	lw	v0,24(s8)
  436664:	00000000 	nop
  436668:	8c430008 	lw	v1,8(v0)
  43666c:	8fc20038 	lw	v0,56(s8)
  436670:	00000000 	nop
  436674:	14620025 	bne	v1,v0,43670c <check_crl+0x374>
  436678:	00000000 	nop
  43667c:	8fc20018 	lw	v0,24(s8)
  436680:	00000000 	nop
  436684:	8c440004 	lw	a0,4(v0)
  436688:	8fc50034 	lw	a1,52(s8)
  43668c:	8fc60038 	lw	a2,56(s8)
  436690:	8f9985c8 	lw	t9,-31288(gp)
  436694:	00000000 	nop
  436698:	0320f809 	jalr	t9
  43669c:	00000000 	nop
  4366a0:	8fdc0010 	lw	gp,16(s8)
  4366a4:	14400019 	bnez	v0,43670c <check_crl+0x374>
  4366a8:	00000000 	nop
	{
	    plog("Certificate was revoked on %s",
  4366ac:	8fc20018 	lw	v0,24(s8)
  4366b0:	00000000 	nop
  4366b4:	2442000c 	addiu	v0,v0,12
  4366b8:	00402021 	move	a0,v0
  4366bc:	24050001 	li	a1,1
  4366c0:	8f998b80 	lw	t9,-29824(gp)
  4366c4:	00000000 	nop
  4366c8:	0320f809 	jalr	t9
  4366cc:	00000000 	nop
  4366d0:	8fdc0010 	lw	gp,16(s8)
  4366d4:	00000000 	nop
  4366d8:	8f84802c 	lw	a0,-32724(gp)
  4366dc:	00000000 	nop
  4366e0:	2484cfb4 	addiu	a0,a0,-12364
  4366e4:	00402821 	move	a1,v0
  4366e8:	8f998abc 	lw	t9,-30020(gp)
  4366ec:	00000000 	nop
  4366f0:	0320f809 	jalr	t9
  4366f4:	00000000 	nop
  4366f8:	8fdc0010 	lw	gp,16(s8)
  4366fc:	00000000 	nop
		timetoa(&revokedCert->revocationDate, TRUE));
	    return FALSE;
  436700:	00001021 	move	v0,zero
  436704:	10000019 	b	43676c <check_crl+0x3d4>
  436708:	00000000 	nop
	}
	revokedCert = revokedCert->next;
  43670c:	8fc20018 	lw	v0,24(s8)
  436710:	00000000 	nop
  436714:	8c420000 	lw	v0,0(v0)
  436718:	00000000 	nop
  43671c:	afc20018 	sw	v0,24(s8)
  436720:	1000ffc9 	b	436648 <check_crl+0x2b0>
  436724:	00000000 	nop
    }
    DBG(DBG_PARSING,
  436728:	8f8284f8 	lw	v0,-31496(gp)
  43672c:	00000000 	nop
  436730:	8c420000 	lw	v0,0(v0)
  436734:	00000000 	nop
  436738:	30420004 	andi	v0,v0,0x4
  43673c:	1040000a 	beqz	v0,436768 <check_crl+0x3d0>
  436740:	00000000 	nop
  436744:	8f84802c 	lw	a0,-32724(gp)
  436748:	00000000 	nop
  43674c:	2484cfd4 	addiu	a0,a0,-12332
  436750:	8f9983b8 	lw	t9,-31816(gp)
  436754:	00000000 	nop
  436758:	0320f809 	jalr	t9
  43675c:	00000000 	nop
  436760:	8fdc0010 	lw	gp,16(s8)
  436764:	00000000 	nop
	DBG_log("  certificate not revoked")
    )
    return TRUE;
  436768:	24020001 	li	v0,1
}
  43676c:	03c0e821 	move	sp,s8
  436770:	8fbf0028 	lw	ra,40(sp)
  436774:	8fbe0024 	lw	s8,36(sp)
  436778:	27bd0030 	addiu	sp,sp,48
  43677c:	03e00008 	jr	ra
  436780:	00000000 	nop

00436784 <check_crls>:
  436784:	3c1c0fbd 	lui	gp,0xfbd
  436788:	279c61ec 	addiu	gp,gp,25068
  43678c:	0399e021 	addu	gp,gp,t9
  436790:	27bdfdc8 	addiu	sp,sp,-568
  436794:	afbc0010 	sw	gp,16(sp)
  436798:	afbf0230 	sw	ra,560(sp)
  43679c:	afbe022c 	sw	s8,556(sp)
  4367a0:	afbc0228 	sw	gp,552(sp)
  4367a4:	03a0f021 	move	s8,sp

/*
 * check if any crls are about to expire
 */
void
check_crls(void)
{
    x509crl_t *crl;
    time_t current_time = time(NULL);
  4367a8:	00002021 	move	a0,zero
  4367ac:	8f9984b4 	lw	t9,-31564(gp)
  4367b0:	00000000 	nop
  4367b4:	0320f809 	jalr	t9
  4367b8:	00000000 	nop
  4367bc:	8fdc0010 	lw	gp,16(s8)
  4367c0:	afc2001c 	sw	v0,28(s8)

    lock_crl_list("check_crls");
  4367c4:	8f84802c 	lw	a0,-32724(gp)
  4367c8:	00000000 	nop
  4367cc:	2484cff0 	addiu	a0,a0,-12304
  4367d0:	8f9989cc 	lw	t9,-30260(gp)
  4367d4:	00000000 	nop
  4367d8:	0320f809 	jalr	t9
  4367dc:	00000000 	nop
  4367e0:	8fdc0010 	lw	gp,16(s8)
  4367e4:	00000000 	nop
    crl = x509crls;
  4367e8:	8f828018 	lw	v0,-32744(gp)
  4367ec:	00000000 	nop
  4367f0:	24421ab8 	addiu	v0,v0,6840
  4367f4:	8c420000 	lw	v0,0(v0)
  4367f8:	00000000 	nop
  4367fc:	afc20018 	sw	v0,24(s8)
    while (crl != NULL)
  436800:	8fc20018 	lw	v0,24(s8)
  436804:	00000000 	nop
  436808:	14400003 	bnez	v0,436818 <check_crls+0x94>
  43680c:	00000000 	nop
  436810:	1000004c 	b	436944 <check_crls+0x1c0>
  436814:	00000000 	nop
    {
       time_t time_left = crl->nextUpdate - current_time;
  436818:	8fc20018 	lw	v0,24(s8)
  43681c:	00000000 	nop
  436820:	8c430034 	lw	v1,52(v0)
  436824:	8fc2001c 	lw	v0,28(s8)
  436828:	00000000 	nop
  43682c:	00621023 	subu	v0,v1,v0
  436830:	afc20020 	sw	v0,32(s8)
       u_char buf[BUF_LEN];

       DBG(DBG_CONTROL,
  436834:	8f8284f8 	lw	v0,-31496(gp)
  436838:	00000000 	nop
  43683c:	8c420000 	lw	v0,0(v0)
  436840:	00000000 	nop
  436844:	30420010 	andi	v0,v0,0x10
  436848:	10400020 	beqz	v0,4368cc <check_crls+0x148>
  43684c:	00000000 	nop
  436850:	8fc20018 	lw	v0,24(s8)
  436854:	27c40028 	addiu	a0,s8,40
  436858:	24050200 	li	a1,512
  43685c:	8c460028 	lw	a2,40(v0)
  436860:	8c47002c 	lw	a3,44(v0)
  436864:	8f9982bc 	lw	t9,-32068(gp)
  436868:	00000000 	nop
  43686c:	0320f809 	jalr	t9
  436870:	00000000 	nop
  436874:	8fdc0010 	lw	gp,16(s8)
  436878:	00000000 	nop
  43687c:	8f84802c 	lw	a0,-32724(gp)
  436880:	00000000 	nop
  436884:	2484cffc 	addiu	a0,a0,-12292
  436888:	27c50028 	addiu	a1,s8,40
  43688c:	8f9983b8 	lw	t9,-31816(gp)
  436890:	00000000 	nop
  436894:	0320f809 	jalr	t9
  436898:	00000000 	nop
  43689c:	8fdc0010 	lw	gp,16(s8)
  4368a0:	00000000 	nop
  4368a4:	8f84802c 	lw	a0,-32724(gp)
  4368a8:	00000000 	nop
  4368ac:	2484d00c 	addiu	a0,a0,-12276
  4368b0:	8fc50020 	lw	a1,32(s8)
  4368b4:	8f9983b8 	lw	t9,-31816(gp)
  4368b8:	00000000 	nop
  4368bc:	0320f809 	jalr	t9
  4368c0:	00000000 	nop
  4368c4:	8fdc0010 	lw	gp,16(s8)
  4368c8:	00000000 	nop
           dntoa(buf, BUF_LEN, crl->issuer);
           DBG_log("issuer: '%s'",buf);
           DBG_log("%ld seconds left", time_left)
       )
       if (time_left < 2*crl_check_interval)
  4368cc:	8f8286e8 	lw	v0,-31000(gp)
  4368d0:	00000000 	nop
  4368d4:	8c420000 	lw	v0,0(v0)
  4368d8:	00000000 	nop
  4368dc:	00021840 	sll	v1,v0,0x1
  4368e0:	8fc20020 	lw	v0,32(s8)
  4368e4:	00000000 	nop
  4368e8:	0043102a 	slt	v0,v0,v1
  4368ec:	1040000e 	beqz	v0,436928 <check_crls+0x1a4>
  4368f0:	00000000 	nop
           add_fetch_request(crl->issuer, crl->distributionPoints);
  4368f4:	8fc20018 	lw	v0,24(s8)
  4368f8:	00000000 	nop
  4368fc:	8c440028 	lw	a0,40(v0)
  436900:	8c45002c 	lw	a1,44(v0)
  436904:	8fc20018 	lw	v0,24(s8)
  436908:	00000000 	nop
  43690c:	8c460008 	lw	a2,8(v0)
  436910:	8f998444 	lw	t9,-31676(gp)
  436914:	00000000 	nop
  436918:	0320f809 	jalr	t9
  43691c:	00000000 	nop
  436920:	8fdc0010 	lw	gp,16(s8)
  436924:	00000000 	nop
       crl = crl->next;
  436928:	8fc20018 	lw	v0,24(s8)
  43692c:	00000000 	nop
  436930:	8c420000 	lw	v0,0(v0)
  436934:	00000000 	nop
  436938:	afc20018 	sw	v0,24(s8)
  43693c:	1000ffb0 	b	436800 <check_crls+0x7c>
  436940:	00000000 	nop
    }
    unlock_crl_list("check_crls");
  436944:	8f84802c 	lw	a0,-32724(gp)
  436948:	00000000 	nop
  43694c:	2484cff0 	addiu	a0,a0,-12304
  436950:	8f9986f0 	lw	t9,-30992(gp)
  436954:	00000000 	nop
  436958:	0320f809 	jalr	t9
  43695c:	00000000 	nop
  436960:	8fdc0010 	lw	gp,16(s8)
  436964:	00000000 	nop
}
  436968:	03c0e821 	move	sp,s8
  43696c:	8fbf0230 	lw	ra,560(sp)
  436970:	8fbe022c 	lw	s8,556(sp)
  436974:	27bd0238 	addiu	sp,sp,568
  436978:	03e00008 	jr	ra
  43697c:	00000000 	nop

00436980 <verify_x509cert>:
  436980:	3c1c0fbd 	lui	gp,0xfbd
  436984:	279c5ff0 	addiu	gp,gp,24560
  436988:	0399e021 	addu	gp,gp,t9
  43698c:	27bdfd90 	addiu	sp,sp,-624
  436990:	afbc0020 	sw	gp,32(sp)
  436994:	afbf0268 	sw	ra,616(sp)
  436998:	afbe0264 	sw	s8,612(sp)
  43699c:	afbc0260 	sw	gp,608(sp)
  4369a0:	03a0f021 	move	s8,sp
  4369a4:	afc40270 	sw	a0,624(s8)
  4369a8:	afc50274 	sw	a1,628(s8)
  4369ac:	afc60278 	sw	a2,632(s8)



/*
 *  verifies a X.509 certificate
 */
bool
verify_x509cert(const x509cert_t *cert, bool strict, time_t *until)
{
    u_char buf[BUF_LEN];
    x509cert_t *issuer_cert;
    x509crl_t  *crl;
    bool rootCA;

    *until = cert->notAfter;
  4369b0:	8fc20270 	lw	v0,624(s8)
  4369b4:	00000000 	nop
  4369b8:	8c43003c 	lw	v1,60(v0)
  4369bc:	8fc20278 	lw	v0,632(s8)
  4369c0:	00000000 	nop
  4369c4:	ac430000 	sw	v1,0(v0)

    do
    {
	DBG(DBG_PARSING,
  4369c8:	8f8284f8 	lw	v0,-31496(gp)
  4369cc:	00000000 	nop
  4369d0:	8c420000 	lw	v0,0(v0)
  4369d4:	00000000 	nop
  4369d8:	30420004 	andi	v0,v0,0x4
  4369dc:	10400016 	beqz	v0,436a38 <verify_x509cert+0xb8>
  4369e0:	00000000 	nop
  4369e4:	8fc20270 	lw	v0,624(s8)
  4369e8:	27c40028 	addiu	a0,s8,40
  4369ec:	24050200 	li	a1,512
  4369f0:	8c460040 	lw	a2,64(v0)
  4369f4:	8c470044 	lw	a3,68(v0)
  4369f8:	8f9982bc 	lw	t9,-32068(gp)
  4369fc:	00000000 	nop
  436a00:	0320f809 	jalr	t9
  436a04:	00000000 	nop
  436a08:	8fdc0020 	lw	gp,32(s8)
  436a0c:	00000000 	nop
  436a10:	8f84802c 	lw	a0,-32724(gp)
  436a14:	00000000 	nop
  436a18:	2484d020 	addiu	a0,a0,-12256
  436a1c:	27c50028 	addiu	a1,s8,40
  436a20:	8f9983b8 	lw	t9,-31816(gp)
  436a24:	00000000 	nop
  436a28:	0320f809 	jalr	t9
  436a2c:	00000000 	nop
  436a30:	8fdc0020 	lw	gp,32(s8)
  436a34:	00000000 	nop
	    dntoa(buf, BUF_LEN, cert->subject);
	    DBG_log("Subject: '%s'",buf);
	)
	if (!check_validity(cert, until))
  436a38:	8fc40270 	lw	a0,624(s8)
  436a3c:	8fc50278 	lw	a1,632(s8)
  436a40:	8f998a14 	lw	t9,-30188(gp)
  436a44:	00000000 	nop
  436a48:	0320f809 	jalr	t9
  436a4c:	00000000 	nop
  436a50:	8fdc0020 	lw	gp,32(s8)
  436a54:	1440000d 	bnez	v0,436a8c <verify_x509cert+0x10c>
  436a58:	00000000 	nop
	{
	    plog("Certificate is invalid");
  436a5c:	8f84802c 	lw	a0,-32724(gp)
  436a60:	00000000 	nop
  436a64:	2484d030 	addiu	a0,a0,-12240
  436a68:	8f998abc 	lw	t9,-30020(gp)
  436a6c:	00000000 	nop
  436a70:	0320f809 	jalr	t9
  436a74:	00000000 	nop
  436a78:	8fdc0020 	lw	gp,32(s8)
  436a7c:	00000000 	nop
	    return FALSE;
  436a80:	00001021 	move	v0,zero
  436a84:	100001f9 	b	43726c <verify_x509cert+0x8ec>
  436a88:	00000000 	nop
	}
	DBG(DBG_PARSING,
  436a8c:	8f8284f8 	lw	v0,-31496(gp)
  436a90:	00000000 	nop
  436a94:	8c420000 	lw	v0,0(v0)
  436a98:	00000000 	nop
  436a9c:	30420004 	andi	v0,v0,0x4
  436aa0:	1040000a 	beqz	v0,436acc <verify_x509cert+0x14c>
  436aa4:	00000000 	nop
  436aa8:	8f84802c 	lw	a0,-32724(gp)
  436aac:	00000000 	nop
  436ab0:	2484d048 	addiu	a0,a0,-12216
  436ab4:	8f9983b8 	lw	t9,-31816(gp)
  436ab8:	00000000 	nop
  436abc:	0320f809 	jalr	t9
  436ac0:	00000000 	nop
  436ac4:	8fdc0020 	lw	gp,32(s8)
  436ac8:	00000000 	nop
	    DBG_log("  certificate is valid")
	)

	DBG(DBG_PARSING,
  436acc:	8f8284f8 	lw	v0,-31496(gp)
  436ad0:	00000000 	nop
  436ad4:	8c420000 	lw	v0,0(v0)
  436ad8:	00000000 	nop
  436adc:	30420004 	andi	v0,v0,0x4
  436ae0:	10400016 	beqz	v0,436b3c <verify_x509cert+0x1bc>
  436ae4:	00000000 	nop
  436ae8:	8fc20270 	lw	v0,624(s8)
  436aec:	27c40028 	addiu	a0,s8,40
  436af0:	24050200 	li	a1,512
  436af4:	8c460030 	lw	a2,48(v0)
  436af8:	8c470034 	lw	a3,52(v0)
  436afc:	8f9982bc 	lw	t9,-32068(gp)
  436b00:	00000000 	nop
  436b04:	0320f809 	jalr	t9
  436b08:	00000000 	nop
  436b0c:	8fdc0020 	lw	gp,32(s8)
  436b10:	00000000 	nop
  436b14:	8f84802c 	lw	a0,-32724(gp)
  436b18:	00000000 	nop
  436b1c:	2484d060 	addiu	a0,a0,-12192
  436b20:	27c50028 	addiu	a1,s8,40
  436b24:	8f9983b8 	lw	t9,-31816(gp)
  436b28:	00000000 	nop
  436b2c:	0320f809 	jalr	t9
  436b30:	00000000 	nop
  436b34:	8fdc0020 	lw	gp,32(s8)
  436b38:	00000000 	nop
	    dntoa(buf, BUF_LEN, cert->issuer);
	    DBG_log("Issuer: '%s'",buf);
	)

	issuer_cert = get_x509cacert(cert->issuer, cert->authKeySerialNumber,
  436b3c:	8fc50270 	lw	a1,624(s8)
  436b40:	8fc70270 	lw	a3,624(s8)
  436b44:	8fc30270 	lw	v1,624(s8)
  436b48:	00000000 	nop
  436b4c:	8c620068 	lw	v0,104(v1)
  436b50:	00000000 	nop
  436b54:	afa20010 	sw	v0,16(sp)
  436b58:	8c62006c 	lw	v0,108(v1)
  436b5c:	00000000 	nop
  436b60:	afa20014 	sw	v0,20(sp)
  436b64:	8ca40030 	lw	a0,48(a1)
  436b68:	8ca50034 	lw	a1,52(a1)
  436b6c:	8ce60070 	lw	a2,112(a3)
  436b70:	8ce70074 	lw	a3,116(a3)
  436b74:	8f998030 	lw	t9,-32720(gp)
  436b78:	00000000 	nop
  436b7c:	2739179c 	addiu	t9,t9,6044
  436b80:	00000000 	nop
  436b84:	0320f809 	jalr	t9
  436b88:	00000000 	nop
  436b8c:	8fdc0020 	lw	gp,32(s8)
  436b90:	afc20228 	sw	v0,552(s8)
	    cert->authKeyID);

	if (issuer_cert == NULL)
  436b94:	8fc20228 	lw	v0,552(s8)
  436b98:	00000000 	nop
  436b9c:	1440000d 	bnez	v0,436bd4 <verify_x509cert+0x254>
  436ba0:	00000000 	nop
	{
	    plog("Issuer CA certificate not found");
  436ba4:	8f84802c 	lw	a0,-32724(gp)
  436ba8:	00000000 	nop
  436bac:	2484d070 	addiu	a0,a0,-12176
  436bb0:	8f998abc 	lw	t9,-30020(gp)
  436bb4:	00000000 	nop
  436bb8:	0320f809 	jalr	t9
  436bbc:	00000000 	nop
  436bc0:	8fdc0020 	lw	gp,32(s8)
  436bc4:	00000000 	nop
	    return FALSE;
  436bc8:	00001021 	move	v0,zero
  436bcc:	100001a7 	b	43726c <verify_x509cert+0x8ec>
  436bd0:	00000000 	nop
	}
	DBG(DBG_PARSING,
  436bd4:	8f8284f8 	lw	v0,-31496(gp)
  436bd8:	00000000 	nop
  436bdc:	8c420000 	lw	v0,0(v0)
  436be0:	00000000 	nop
  436be4:	30420004 	andi	v0,v0,0x4
  436be8:	1040000a 	beqz	v0,436c14 <verify_x509cert+0x294>
  436bec:	00000000 	nop
  436bf0:	8f84802c 	lw	a0,-32724(gp)
  436bf4:	00000000 	nop
  436bf8:	2484d090 	addiu	a0,a0,-12144
  436bfc:	8f9983b8 	lw	t9,-31816(gp)
  436c00:	00000000 	nop
  436c04:	0320f809 	jalr	t9
  436c08:	00000000 	nop
  436c0c:	8fdc0020 	lw	gp,32(s8)
  436c10:	00000000 	nop
	    DBG_log("  issuer CA certificate found")
	)

	if (!check_signature(cert->tbsCertificate, cert->signature,
			     cert->algorithm, issuer_cert))
  436c14:	8fc50270 	lw	a1,624(s8)
  436c18:	8fc70270 	lw	a3,624(s8)
  436c1c:	8fc30270 	lw	v1,624(s8)
  436c20:	00000000 	nop
  436c24:	8c620080 	lw	v0,128(v1)
  436c28:	00000000 	nop
  436c2c:	afa20010 	sw	v0,16(sp)
  436c30:	8c620084 	lw	v0,132(v1)
  436c34:	00000000 	nop
  436c38:	afa20014 	sw	v0,20(sp)
  436c3c:	8fc20228 	lw	v0,552(s8)
  436c40:	00000000 	nop
  436c44:	afa20018 	sw	v0,24(sp)
  436c48:	8ca40014 	lw	a0,20(a1)
  436c4c:	8ca50018 	lw	a1,24(a1)
  436c50:	8ce60088 	lw	a2,136(a3)
  436c54:	8ce7008c 	lw	a3,140(a3)
  436c58:	8f998030 	lw	t9,-32720(gp)
  436c5c:	00000000 	nop
  436c60:	273959e8 	addiu	t9,t9,23016
  436c64:	00000000 	nop
  436c68:	0320f809 	jalr	t9
  436c6c:	00000000 	nop
  436c70:	8fdc0020 	lw	gp,32(s8)
  436c74:	1440000d 	bnez	v0,436cac <verify_x509cert+0x32c>
  436c78:	00000000 	nop
	{
	    plog("Certificate signature is invalid");
  436c7c:	8f84802c 	lw	a0,-32724(gp)
  436c80:	00000000 	nop
  436c84:	2484d0b0 	addiu	a0,a0,-12112
  436c88:	8f998abc 	lw	t9,-30020(gp)
  436c8c:	00000000 	nop
  436c90:	0320f809 	jalr	t9
  436c94:	00000000 	nop
  436c98:	8fdc0020 	lw	gp,32(s8)
  436c9c:	00000000 	nop
	    return FALSE;
  436ca0:	00001021 	move	v0,zero
  436ca4:	10000171 	b	43726c <verify_x509cert+0x8ec>
  436ca8:	00000000 	nop
	}
	DBG(DBG_PARSING,
  436cac:	8f8284f8 	lw	v0,-31496(gp)
  436cb0:	00000000 	nop
  436cb4:	8c420000 	lw	v0,0(v0)
  436cb8:	00000000 	nop
  436cbc:	30420004 	andi	v0,v0,0x4
  436cc0:	1040000a 	beqz	v0,436cec <verify_x509cert+0x36c>
  436cc4:	00000000 	nop
  436cc8:	8f84802c 	lw	a0,-32724(gp)
  436ccc:	00000000 	nop
  436cd0:	2484d0d4 	addiu	a0,a0,-12076
  436cd4:	8f9983b8 	lw	t9,-31816(gp)
  436cd8:	00000000 	nop
  436cdc:	0320f809 	jalr	t9
  436ce0:	00000000 	nop
  436ce4:	8fdc0020 	lw	gp,32(s8)
  436ce8:	00000000 	nop
	    DBG_log("  certificate signature is valid")
	)

	lock_crl_list("verify_x509cert");
  436cec:	8f84802c 	lw	a0,-32724(gp)
  436cf0:	00000000 	nop
  436cf4:	2484d0f8 	addiu	a0,a0,-12040
  436cf8:	8f9989cc 	lw	t9,-30260(gp)
  436cfc:	00000000 	nop
  436d00:	0320f809 	jalr	t9
  436d04:	00000000 	nop
  436d08:	8fdc0020 	lw	gp,32(s8)
  436d0c:	00000000 	nop
	crl = get_x509crl(cert->issuer, cert->authKeySerialNumber
  436d10:	8fc50270 	lw	a1,624(s8)
  436d14:	8fc70270 	lw	a3,624(s8)
  436d18:	8fc30270 	lw	v1,624(s8)
  436d1c:	00000000 	nop
  436d20:	8c620068 	lw	v0,104(v1)
  436d24:	00000000 	nop
  436d28:	afa20010 	sw	v0,16(sp)
  436d2c:	8c62006c 	lw	v0,108(v1)
  436d30:	00000000 	nop
  436d34:	afa20014 	sw	v0,20(sp)
  436d38:	8ca40030 	lw	a0,48(a1)
  436d3c:	8ca50034 	lw	a1,52(a1)
  436d40:	8ce60070 	lw	a2,112(a3)
  436d44:	8ce70074 	lw	a3,116(a3)
  436d48:	8f998030 	lw	t9,-32720(gp)
  436d4c:	00000000 	nop
  436d50:	27391cd8 	addiu	t9,t9,7384
  436d54:	00000000 	nop
  436d58:	0320f809 	jalr	t9
  436d5c:	00000000 	nop
  436d60:	8fdc0020 	lw	gp,32(s8)
  436d64:	afc2022c 	sw	v0,556(s8)
	    , cert->authKeyID);

	if (crl == NULL)
  436d68:	8fc2022c 	lw	v0,556(s8)
  436d6c:	00000000 	nop
  436d70:	14400036 	bnez	v0,436e4c <verify_x509cert+0x4cc>
  436d74:	00000000 	nop
	{
            unlock_crl_list("verify_x509cert");
  436d78:	8f84802c 	lw	a0,-32724(gp)
  436d7c:	00000000 	nop
  436d80:	2484d0f8 	addiu	a0,a0,-12040
  436d84:	8f9986f0 	lw	t9,-30992(gp)
  436d88:	00000000 	nop
  436d8c:	0320f809 	jalr	t9
  436d90:	00000000 	nop
  436d94:	8fdc0020 	lw	gp,32(s8)
  436d98:	00000000 	nop
	    plog("Issuer CRL not found");
  436d9c:	8f84802c 	lw	a0,-32724(gp)
  436da0:	00000000 	nop
  436da4:	2484d108 	addiu	a0,a0,-12024
  436da8:	8f998abc 	lw	t9,-30020(gp)
  436dac:	00000000 	nop
  436db0:	0320f809 	jalr	t9
  436db4:	00000000 	nop
  436db8:	8fdc0020 	lw	gp,32(s8)
  436dbc:	00000000 	nop

            if (cert->crlDistributionPoints != NULL)
  436dc0:	8fc20270 	lw	v0,624(s8)
  436dc4:	00000000 	nop
  436dc8:	8c42007c 	lw	v0,124(v0)
  436dcc:	00000000 	nop
  436dd0:	10400017 	beqz	v0,436e30 <verify_x509cert+0x4b0>
  436dd4:	00000000 	nop
            {
                add_fetch_request(cert->issuer, cert->crlDistributionPoints);
  436dd8:	8fc20270 	lw	v0,624(s8)
  436ddc:	00000000 	nop
  436de0:	8c440030 	lw	a0,48(v0)
  436de4:	8c450034 	lw	a1,52(v0)
  436de8:	8fc20270 	lw	v0,624(s8)
  436dec:	00000000 	nop
  436df0:	8c46007c 	lw	a2,124(v0)
  436df4:	8f998444 	lw	t9,-31676(gp)
  436df8:	00000000 	nop
  436dfc:	0320f809 	jalr	t9
  436e00:	00000000 	nop
  436e04:	8fdc0020 	lw	gp,32(s8)
  436e08:	00000000 	nop
                wake_fetch_thread("verify_x509cert");
  436e0c:	8f84802c 	lw	a0,-32724(gp)
  436e10:	00000000 	nop
  436e14:	2484d0f8 	addiu	a0,a0,-12040
  436e18:	8f998858 	lw	t9,-30632(gp)
  436e1c:	00000000 	nop
  436e20:	0320f809 	jalr	t9
  436e24:	00000000 	nop
  436e28:	8fdc0020 	lw	gp,32(s8)
  436e2c:	00000000 	nop
            }
	    if (strict) return FALSE;
  436e30:	8fc20274 	lw	v0,628(s8)
  436e34:	00000000 	nop
  436e38:	104000f8 	beqz	v0,43721c <verify_x509cert+0x89c>
  436e3c:	00000000 	nop
  436e40:	00001021 	move	v0,zero
  436e44:	10000109 	b	43726c <verify_x509cert+0x8ec>
  436e48:	00000000 	nop
	}
	else
	{
	    DBG(DBG_PARSING,
  436e4c:	8f8284f8 	lw	v0,-31496(gp)
  436e50:	00000000 	nop
  436e54:	8c420000 	lw	v0,0(v0)
  436e58:	00000000 	nop
  436e5c:	30420004 	andi	v0,v0,0x4
  436e60:	1040000a 	beqz	v0,436e8c <verify_x509cert+0x50c>
  436e64:	00000000 	nop
  436e68:	8f84802c 	lw	a0,-32724(gp)
  436e6c:	00000000 	nop
  436e70:	2484d120 	addiu	a0,a0,-12000
  436e74:	8f9983b8 	lw	t9,-31816(gp)
  436e78:	00000000 	nop
  436e7c:	0320f809 	jalr	t9
  436e80:	00000000 	nop
  436e84:	8fdc0020 	lw	gp,32(s8)
  436e88:	00000000 	nop
		DBG_log("  issuer CRL found")
	    )

	    add_distribution_points(cert->crlDistributionPoints
  436e8c:	8fc2022c 	lw	v0,556(s8)
  436e90:	00000000 	nop
  436e94:	24430008 	addiu	v1,v0,8
  436e98:	8fc20270 	lw	v0,624(s8)
  436e9c:	00000000 	nop
  436ea0:	8c44007c 	lw	a0,124(v0)
  436ea4:	00602821 	move	a1,v1
  436ea8:	8f9989b4 	lw	t9,-30284(gp)
  436eac:	00000000 	nop
  436eb0:	0320f809 	jalr	t9
  436eb4:	00000000 	nop
  436eb8:	8fdc0020 	lw	gp,32(s8)
  436ebc:	00000000 	nop
                , &crl->distributionPoints);

	    if (check_signature(crl->tbsCertList, crl->signature,
				crl->algorithm, issuer_cert))
  436ec0:	8fc5022c 	lw	a1,556(s8)
  436ec4:	8fc7022c 	lw	a3,556(s8)
  436ec8:	8fc3022c 	lw	v1,556(s8)
  436ecc:	00000000 	nop
  436ed0:	8c62004c 	lw	v0,76(v1)
  436ed4:	00000000 	nop
  436ed8:	afa20010 	sw	v0,16(sp)
  436edc:	8c620050 	lw	v0,80(v1)
  436ee0:	00000000 	nop
  436ee4:	afa20014 	sw	v0,20(sp)
  436ee8:	8fc20228 	lw	v0,552(s8)
  436eec:	00000000 	nop
  436ef0:	afa20018 	sw	v0,24(sp)
  436ef4:	8ca40014 	lw	a0,20(a1)
  436ef8:	8ca50018 	lw	a1,24(a1)
  436efc:	8ce60054 	lw	a2,84(a3)
  436f00:	8ce70058 	lw	a3,88(a3)
  436f04:	8f998030 	lw	t9,-32720(gp)
  436f08:	00000000 	nop
  436f0c:	273959e8 	addiu	t9,t9,23016
  436f10:	00000000 	nop
  436f14:	0320f809 	jalr	t9
  436f18:	00000000 	nop
  436f1c:	8fdc0020 	lw	gp,32(s8)
  436f20:	104000a5 	beqz	v0,4371b8 <verify_x509cert+0x838>
  436f24:	00000000 	nop
	    {
		bool revoked_crl, expired_crl;

		DBG(DBG_PARSING,
  436f28:	8f8284f8 	lw	v0,-31496(gp)
  436f2c:	00000000 	nop
  436f30:	8c420000 	lw	v0,0(v0)
  436f34:	00000000 	nop
  436f38:	30420004 	andi	v0,v0,0x4
  436f3c:	1040000a 	beqz	v0,436f68 <verify_x509cert+0x5e8>
  436f40:	00000000 	nop
  436f44:	8f84802c 	lw	a0,-32724(gp)
  436f48:	00000000 	nop
  436f4c:	2484d134 	addiu	a0,a0,-11980
  436f50:	8f9983b8 	lw	t9,-31816(gp)
  436f54:	00000000 	nop
  436f58:	0320f809 	jalr	t9
  436f5c:	00000000 	nop
  436f60:	8fdc0020 	lw	gp,32(s8)
  436f64:	00000000 	nop
		    DBG_log("  CRL signature is valid")
		)

/* paul 
		if (!check_crl(crl, cert->serialNumber, strict, until))
		{
		    remove_x509_public_key(cert);
		    return FALSE;
		}
	    }
	    else
	    {
		plog("CRL signature is invalid");
	    }
	}
*/
                /* with strict crl policy the public key must have the same
                 * lifetime as the crl
                 */
                if (strict && crl->nextUpdate < *until) *until = crl->nextUpdate;
  436f68:	8fc20274 	lw	v0,628(s8)
  436f6c:	00000000 	nop
  436f70:	10400011 	beqz	v0,436fb8 <verify_x509cert+0x638>
  436f74:	00000000 	nop
  436f78:	8fc2022c 	lw	v0,556(s8)
  436f7c:	00000000 	nop
  436f80:	8c430034 	lw	v1,52(v0)
  436f84:	8fc20278 	lw	v0,632(s8)
  436f88:	00000000 	nop
  436f8c:	8c420000 	lw	v0,0(v0)
  436f90:	00000000 	nop
  436f94:	0062102a 	slt	v0,v1,v0
  436f98:	10400007 	beqz	v0,436fb8 <verify_x509cert+0x638>
  436f9c:	00000000 	nop
  436fa0:	8fc2022c 	lw	v0,556(s8)
  436fa4:	00000000 	nop
  436fa8:	8c430034 	lw	v1,52(v0)
  436fac:	8fc20278 	lw	v0,632(s8)
  436fb0:	00000000 	nop
  436fb4:	ac430000 	sw	v1,0(v0)
                                                                                                                                  
                /* has the certificate been revoked? */
                revoked_crl = check_revocation(crl, cert->serialNumber);
  436fb8:	8fc20270 	lw	v0,624(s8)
  436fbc:	8fc4022c 	lw	a0,556(s8)
  436fc0:	8c450020 	lw	a1,32(v0)
  436fc4:	8c460024 	lw	a2,36(v0)
  436fc8:	8f998030 	lw	t9,-32720(gp)
  436fcc:	00000000 	nop
  436fd0:	27395358 	addiu	t9,t9,21336
  436fd4:	00000000 	nop
  436fd8:	0320f809 	jalr	t9
  436fdc:	00000000 	nop
  436fe0:	8fdc0020 	lw	gp,32(s8)
  436fe4:	afc20234 	sw	v0,564(s8)
                                                                                                                                  
                /* is the crl still valid? */
                expired_crl = time(NULL) > crl->nextUpdate;
  436fe8:	00002021 	move	a0,zero
  436fec:	8f9984b4 	lw	t9,-31564(gp)
  436ff0:	00000000 	nop
  436ff4:	0320f809 	jalr	t9
  436ff8:	00000000 	nop
  436ffc:	8fdc0020 	lw	gp,32(s8)
  437000:	00401821 	move	v1,v0
  437004:	8fc2022c 	lw	v0,556(s8)
  437008:	00000000 	nop
  43700c:	8c420034 	lw	v0,52(v0)
  437010:	00000000 	nop
  437014:	0043102a 	slt	v0,v0,v1
  437018:	afc20238 	sw	v0,568(s8)
                                                                                                                                  
                unlock_crl_list("verify_x509cert");
  43701c:	8f84802c 	lw	a0,-32724(gp)
  437020:	00000000 	nop
  437024:	2484d0f8 	addiu	a0,a0,-12040
  437028:	8f9986f0 	lw	t9,-30992(gp)
  43702c:	00000000 	nop
  437030:	0320f809 	jalr	t9
  437034:	00000000 	nop
  437038:	8fdc0020 	lw	gp,32(s8)
  43703c:	00000000 	nop
                                                                                                                                  
                if (expired_crl)
  437040:	8fc20238 	lw	v0,568(s8)
  437044:	00000000 	nop
  437048:	10400033 	beqz	v0,437118 <verify_x509cert+0x798>
  43704c:	00000000 	nop
                {
                    plog("crl update is overdue since %s",
  437050:	8fc2022c 	lw	v0,556(s8)
  437054:	00000000 	nop
  437058:	24420034 	addiu	v0,v0,52
  43705c:	00402021 	move	a0,v0
  437060:	24050001 	li	a1,1
  437064:	8f998b80 	lw	t9,-29824(gp)
  437068:	00000000 	nop
  43706c:	0320f809 	jalr	t9
  437070:	00000000 	nop
  437074:	8fdc0020 	lw	gp,32(s8)
  437078:	00000000 	nop
  43707c:	8f84802c 	lw	a0,-32724(gp)
  437080:	00000000 	nop
  437084:	2484d150 	addiu	a0,a0,-11952
  437088:	00402821 	move	a1,v0
  43708c:	8f998abc 	lw	t9,-30020(gp)
  437090:	00000000 	nop
  437094:	0320f809 	jalr	t9
  437098:	00000000 	nop
  43709c:	8fdc0020 	lw	gp,32(s8)
  4370a0:	00000000 	nop
                        timetoa(&crl->nextUpdate, TRUE));
                                                                                                                                  
                    /* try to fetch a crl update */
                    if (cert->crlDistributionPoints != NULL)
  4370a4:	8fc20270 	lw	v0,624(s8)
  4370a8:	00000000 	nop
  4370ac:	8c42007c 	lw	v0,124(v0)
  4370b0:	00000000 	nop
  4370b4:	10400028 	beqz	v0,437158 <verify_x509cert+0x7d8>
  4370b8:	00000000 	nop
                    {
                        add_fetch_request(cert->issuer
  4370bc:	8fc20270 	lw	v0,624(s8)
  4370c0:	00000000 	nop
  4370c4:	8c440030 	lw	a0,48(v0)
  4370c8:	8c450034 	lw	a1,52(v0)
  4370cc:	8fc20270 	lw	v0,624(s8)
  4370d0:	00000000 	nop
  4370d4:	8c46007c 	lw	a2,124(v0)
  4370d8:	8f998444 	lw	t9,-31676(gp)
  4370dc:	00000000 	nop
  4370e0:	0320f809 	jalr	t9
  4370e4:	00000000 	nop
  4370e8:	8fdc0020 	lw	gp,32(s8)
  4370ec:	00000000 	nop
                            , cert->crlDistributionPoints);
                        wake_fetch_thread("verify_x509cert");
  4370f0:	8f84802c 	lw	a0,-32724(gp)
  4370f4:	00000000 	nop
  4370f8:	2484d0f8 	addiu	a0,a0,-12040
  4370fc:	8f998858 	lw	t9,-30632(gp)
  437100:	00000000 	nop
  437104:	0320f809 	jalr	t9
  437108:	00000000 	nop
  43710c:	8fdc0020 	lw	gp,32(s8)
  437110:	10000011 	b	437158 <verify_x509cert+0x7d8>
  437114:	00000000 	nop
                    }
                }
                else
                {
                    DBG(DBG_CONTROL,
  437118:	8f8284f8 	lw	v0,-31496(gp)
  43711c:	00000000 	nop
  437120:	8c420000 	lw	v0,0(v0)
  437124:	00000000 	nop
  437128:	30420010 	andi	v0,v0,0x10
  43712c:	1040000a 	beqz	v0,437158 <verify_x509cert+0x7d8>
  437130:	00000000 	nop
  437134:	8f84802c 	lw	a0,-32724(gp)
  437138:	00000000 	nop
  43713c:	2484d170 	addiu	a0,a0,-11920
  437140:	8f9983b8 	lw	t9,-31816(gp)
  437144:	00000000 	nop
  437148:	0320f809 	jalr	t9
  43714c:	00000000 	nop
  437150:	8fdc0020 	lw	gp,32(s8)
  437154:	00000000 	nop
                        DBG_log("crl is valid")
                    )
                }
                                                                                                                                  
                if (revoked_crl || (strict && expired_crl))
  437158:	8fc20234 	lw	v0,564(s8)
  43715c:	00000000 	nop
  437160:	1440000b 	bnez	v0,437190 <verify_x509cert+0x810>
  437164:	00000000 	nop
  437168:	8fc20274 	lw	v0,628(s8)
  43716c:	00000000 	nop
  437170:	1040002a 	beqz	v0,43721c <verify_x509cert+0x89c>
  437174:	00000000 	nop
  437178:	8fc20238 	lw	v0,568(s8)
  43717c:	00000000 	nop
  437180:	14400003 	bnez	v0,437190 <verify_x509cert+0x810>
  437184:	00000000 	nop
  437188:	10000024 	b	43721c <verify_x509cert+0x89c>
  43718c:	00000000 	nop
                {
                    /* remove any cached public keys */
                    remove_x509_public_key(cert);
  437190:	8fc40270 	lw	a0,624(s8)
  437194:	8f9983b4 	lw	t9,-31820(gp)
  437198:	00000000 	nop
  43719c:	0320f809 	jalr	t9
  4371a0:	00000000 	nop
  4371a4:	8fdc0020 	lw	gp,32(s8)
  4371a8:	00000000 	nop
                    return FALSE;
  4371ac:	00001021 	move	v0,zero
  4371b0:	1000002e 	b	43726c <verify_x509cert+0x8ec>
  4371b4:	00000000 	nop
                }
            }
            else
            {
                unlock_crl_list("verify_x509cert");
  4371b8:	8f84802c 	lw	a0,-32724(gp)
  4371bc:	00000000 	nop
  4371c0:	2484d0f8 	addiu	a0,a0,-12040
  4371c4:	8f9986f0 	lw	t9,-30992(gp)
  4371c8:	00000000 	nop
  4371cc:	0320f809 	jalr	t9
  4371d0:	00000000 	nop
  4371d4:	8fdc0020 	lw	gp,32(s8)
  4371d8:	00000000 	nop
                plog("crl signature is invalid");
  4371dc:	8f84802c 	lw	a0,-32724(gp)
  4371e0:	00000000 	nop
  4371e4:	2484d180 	addiu	a0,a0,-11904
  4371e8:	8f998abc 	lw	t9,-30020(gp)
  4371ec:	00000000 	nop
  4371f0:	0320f809 	jalr	t9
  4371f4:	00000000 	nop
  4371f8:	8fdc0020 	lw	gp,32(s8)
  4371fc:	00000000 	nop
                if (strict)
  437200:	8fc20274 	lw	v0,628(s8)
  437204:	00000000 	nop
  437208:	10400004 	beqz	v0,43721c <verify_x509cert+0x89c>
  43720c:	00000000 	nop
                    return FALSE;
  437210:	00001021 	move	v0,zero
  437214:	10000015 	b	43726c <verify_x509cert+0x8ec>
  437218:	00000000 	nop
            }
        }

	/* check if cert is self-signed */
	rootCA = same_dn(cert->issuer, cert->subject);
  43721c:	8fc20270 	lw	v0,624(s8)
  437220:	8fc30270 	lw	v1,624(s8)
  437224:	8c440030 	lw	a0,48(v0)
  437228:	8c450034 	lw	a1,52(v0)
  43722c:	8c660040 	lw	a2,64(v1)
  437230:	8c670044 	lw	a3,68(v1)
  437234:	8f998604 	lw	t9,-31228(gp)
  437238:	00000000 	nop
  43723c:	0320f809 	jalr	t9
  437240:	00000000 	nop
  437244:	8fdc0020 	lw	gp,32(s8)
  437248:	afc20230 	sw	v0,560(s8)
        /* otherwise go up one step in the trust chain */
	cert = issuer_cert;
  43724c:	8fc20228 	lw	v0,552(s8)
  437250:	00000000 	nop
  437254:	afc20270 	sw	v0,624(s8)
    }
  437258:	8fc20230 	lw	v0,560(s8)
  43725c:	00000000 	nop
  437260:	1040fdd9 	beqz	v0,4369c8 <verify_x509cert+0x48>
  437264:	00000000 	nop
    while (!rootCA);
    return TRUE;
  437268:	24020001 	li	v0,1
}
  43726c:	03c0e821 	move	sp,s8
  437270:	8fbf0268 	lw	ra,616(sp)
  437274:	8fbe0264 	lw	s8,612(sp)
  437278:	27bd0270 	addiu	sp,sp,624
  43727c:	03e00008 	jr	ra
  437280:	00000000 	nop

00437284 <list_cert_chain>:
  437284:	3c1c0fbd 	lui	gp,0xfbd
  437288:	279c56ec 	addiu	gp,gp,22252
  43728c:	0399e021 	addu	gp,gp,t9
  437290:	27bdfda8 	addiu	sp,sp,-600
  437294:	afbc0018 	sw	gp,24(sp)
  437298:	afbf0254 	sw	ra,596(sp)
  43729c:	afbe0250 	sw	s8,592(sp)
  4372a0:	afbc024c 	sw	gp,588(sp)
  4372a4:	afb00248 	sw	s0,584(sp)
  4372a8:	03a0f021 	move	s8,sp
  4372ac:	afc40258 	sw	a0,600(s8)
  4372b0:	afc5025c 	sw	a1,604(s8)
  4372b4:	afc60260 	sw	a2,608(s8)

/*
 *  list all certs in a chained list
 */
static void
list_cert_chain(const char * caption, x509cert_t* cert, bool utc)
{
    time_t now;

    /* determine the current time */
    time(&now);
  4372b8:	27c40020 	addiu	a0,s8,32
  4372bc:	8f9984b4 	lw	t9,-31564(gp)
  4372c0:	00000000 	nop
  4372c4:	0320f809 	jalr	t9
  4372c8:	00000000 	nop
  4372cc:	8fdc0018 	lw	gp,24(s8)
  4372d0:	00000000 	nop

    whack_log(RC_COMMENT, " ");
  4372d4:	00002021 	move	a0,zero
  4372d8:	8f85802c 	lw	a1,-32724(gp)
  4372dc:	00000000 	nop
  4372e0:	24a5d19c 	addiu	a1,a1,-11876
  4372e4:	8f9982a8 	lw	t9,-32088(gp)
  4372e8:	00000000 	nop
  4372ec:	0320f809 	jalr	t9
  4372f0:	00000000 	nop
  4372f4:	8fdc0018 	lw	gp,24(s8)
  4372f8:	00000000 	nop
    whack_log(RC_COMMENT, "List of %s:", caption);
  4372fc:	00002021 	move	a0,zero
  437300:	8f85802c 	lw	a1,-32724(gp)
  437304:	00000000 	nop
  437308:	24a5d1a0 	addiu	a1,a1,-11872
  43730c:	8fc60258 	lw	a2,600(s8)
  437310:	8f9982a8 	lw	t9,-32088(gp)
  437314:	00000000 	nop
  437318:	0320f809 	jalr	t9
  43731c:	00000000 	nop
  437320:	8fdc0018 	lw	gp,24(s8)
  437324:	00000000 	nop
    whack_log(RC_COMMENT, " ");
  437328:	00002021 	move	a0,zero
  43732c:	8f85802c 	lw	a1,-32724(gp)
  437330:	00000000 	nop
  437334:	24a5d19c 	addiu	a1,a1,-11876
  437338:	8f9982a8 	lw	t9,-32088(gp)
  43733c:	00000000 	nop
  437340:	0320f809 	jalr	t9
  437344:	00000000 	nop
  437348:	8fdc0018 	lw	gp,24(s8)
  43734c:	00000000 	nop

    while (cert != NULL)
  437350:	8fc2025c 	lw	v0,604(s8)
  437354:	00000000 	nop
  437358:	14400003 	bnez	v0,437368 <list_cert_chain+0xe4>
  43735c:	00000000 	nop
  437360:	1000014c 	b	437894 <list_cert_chain+0x610>
  437364:	00000000 	nop
    {
	unsigned keysize;
	char keyid[KEYID_BUF];
	u_char buf[BUF_LEN];

	whack_log(RC_COMMENT, "%s, count: %d", timetoa(&cert->installed, utc), cert->count);
  437368:	8fc2025c 	lw	v0,604(s8)
  43736c:	00000000 	nop
  437370:	24420004 	addiu	v0,v0,4
  437374:	00402021 	move	a0,v0
  437378:	8fc50260 	lw	a1,608(s8)
  43737c:	8f998b80 	lw	t9,-29824(gp)
  437380:	00000000 	nop
  437384:	0320f809 	jalr	t9
  437388:	00000000 	nop
  43738c:	8fdc0018 	lw	gp,24(s8)
  437390:	00002021 	move	a0,zero
  437394:	8f85802c 	lw	a1,-32724(gp)
  437398:	00000000 	nop
  43739c:	24a5d1ac 	addiu	a1,a1,-11860
  4373a0:	00403021 	move	a2,v0
  4373a4:	8fc2025c 	lw	v0,604(s8)
  4373a8:	00000000 	nop
  4373ac:	8c470008 	lw	a3,8(v0)
  4373b0:	8f9982a8 	lw	t9,-32088(gp)
  4373b4:	00000000 	nop
  4373b8:	0320f809 	jalr	t9
  4373bc:	00000000 	nop
  4373c0:	8fdc0018 	lw	gp,24(s8)
  4373c4:	00000000 	nop
	dntoa(buf, BUF_LEN, cert->subject);
  4373c8:	8fc2025c 	lw	v0,604(s8)
  4373cc:	27c40038 	addiu	a0,s8,56
  4373d0:	24050200 	li	a1,512
  4373d4:	8c460040 	lw	a2,64(v0)
  4373d8:	8c470044 	lw	a3,68(v0)
  4373dc:	8f9982bc 	lw	t9,-32068(gp)
  4373e0:	00000000 	nop
  4373e4:	0320f809 	jalr	t9
  4373e8:	00000000 	nop
  4373ec:	8fdc0018 	lw	gp,24(s8)
  4373f0:	00000000 	nop
	whack_log(RC_COMMENT, "       subject: '%s'", buf);
  4373f4:	00002021 	move	a0,zero
  4373f8:	8f85802c 	lw	a1,-32724(gp)
  4373fc:	00000000 	nop
  437400:	24a5d1bc 	addiu	a1,a1,-11844
  437404:	27c60038 	addiu	a2,s8,56
  437408:	8f9982a8 	lw	t9,-32088(gp)
  43740c:	00000000 	nop
  437410:	0320f809 	jalr	t9
  437414:	00000000 	nop
  437418:	8fdc0018 	lw	gp,24(s8)
  43741c:	00000000 	nop
	dntoa(buf, BUF_LEN, cert->issuer);
  437420:	8fc2025c 	lw	v0,604(s8)
  437424:	27c40038 	addiu	a0,s8,56
  437428:	24050200 	li	a1,512
  43742c:	8c460030 	lw	a2,48(v0)
  437430:	8c470034 	lw	a3,52(v0)
  437434:	8f9982bc 	lw	t9,-32068(gp)
  437438:	00000000 	nop
  43743c:	0320f809 	jalr	t9
  437440:	00000000 	nop
  437444:	8fdc0018 	lw	gp,24(s8)
  437448:	00000000 	nop
	whack_log(RC_COMMENT, "       issuer:  '%s'", buf);
  43744c:	00002021 	move	a0,zero
  437450:	8f85802c 	lw	a1,-32724(gp)
  437454:	00000000 	nop
  437458:	24a5d1d4 	addiu	a1,a1,-11820
  43745c:	27c60038 	addiu	a2,s8,56
  437460:	8f9982a8 	lw	t9,-32088(gp)
  437464:	00000000 	nop
  437468:	0320f809 	jalr	t9
  43746c:	00000000 	nop
  437470:	8fdc0018 	lw	gp,24(s8)
  437474:	00000000 	nop
	datatot(cert->serialNumber.ptr, cert->serialNumber.len, ':'
  437478:	24020200 	li	v0,512
  43747c:	afa20010 	sw	v0,16(sp)
  437480:	8fc2025c 	lw	v0,604(s8)
  437484:	00000000 	nop
  437488:	8c440020 	lw	a0,32(v0)
  43748c:	8fc2025c 	lw	v0,604(s8)
  437490:	00000000 	nop
  437494:	8c450024 	lw	a1,36(v0)
  437498:	2406003a 	li	a2,58
  43749c:	27c70038 	addiu	a3,s8,56
  4374a0:	8f9980a4 	lw	t9,-32604(gp)
  4374a4:	00000000 	nop
  4374a8:	0320f809 	jalr	t9
  4374ac:	00000000 	nop
  4374b0:	8fdc0018 	lw	gp,24(s8)
  4374b4:	00000000 	nop
	    , buf, BUF_LEN);
	whack_log(RC_COMMENT, "       serial:   %s", buf);
  4374b8:	00002021 	move	a0,zero
  4374bc:	8f85802c 	lw	a1,-32724(gp)
  4374c0:	00000000 	nop
  4374c4:	24a5d1ec 	addiu	a1,a1,-11796
  4374c8:	27c60038 	addiu	a2,s8,56
  4374cc:	8f9982a8 	lw	t9,-32088(gp)
  4374d0:	00000000 	nop
  4374d4:	0320f809 	jalr	t9
  4374d8:	00000000 	nop
  4374dc:	8fdc0018 	lw	gp,24(s8)
  4374e0:	00000000 	nop
	form_keyid(cert->publicExponent, cert->modulus, keyid, &keysize);
  4374e4:	8fc3025c 	lw	v1,604(s8)
  4374e8:	8fc7025c 	lw	a3,604(s8)
  4374ec:	27c20028 	addiu	v0,s8,40
  4374f0:	afa20010 	sw	v0,16(sp)
  4374f4:	27c20024 	addiu	v0,s8,36
  4374f8:	afa20014 	sw	v0,20(sp)
  4374fc:	8c640054 	lw	a0,84(v1)
  437500:	8c650058 	lw	a1,88(v1)
  437504:	8ce6004c 	lw	a2,76(a3)
  437508:	8ce70050 	lw	a3,80(a3)
  43750c:	8f998b18 	lw	t9,-29928(gp)
  437510:	00000000 	nop
  437514:	0320f809 	jalr	t9
  437518:	00000000 	nop
  43751c:	8fdc0018 	lw	gp,24(s8)
  437520:	00000000 	nop
	whack_log(RC_COMMENT, "       pubkey:   %4d RSA Key %s%s", 8*keysize, keyid,
  437524:	8fc4025c 	lw	a0,604(s8)
  437528:	8f998360 	lw	t9,-31904(gp)
  43752c:	00000000 	nop
  437530:	0320f809 	jalr	t9
  437534:	00000000 	nop
  437538:	8fdc0018 	lw	gp,24(s8)
  43753c:	10400008 	beqz	v0,437560 <list_cert_chain+0x2dc>
  437540:	00000000 	nop
  437544:	8f82802c 	lw	v0,-32724(gp)
  437548:	00000000 	nop
  43754c:	2442d200 	addiu	v0,v0,-11776
  437550:	00000000 	nop
  437554:	afc20238 	sw	v0,568(s8)
  437558:	10000006 	b	437574 <list_cert_chain+0x2f0>
  43755c:	00000000 	nop
  437560:	8f83802c 	lw	v1,-32724(gp)
  437564:	00000000 	nop
  437568:	2463c94c 	addiu	v1,v1,-14004
  43756c:	00000000 	nop
  437570:	afc30238 	sw	v1,568(s8)
  437574:	8fc20024 	lw	v0,36(s8)
  437578:	00000000 	nop
  43757c:	000210c0 	sll	v0,v0,0x3
  437580:	8fc30238 	lw	v1,568(s8)
  437584:	00000000 	nop
  437588:	afa30010 	sw	v1,16(sp)
  43758c:	00002021 	move	a0,zero
  437590:	8f85802c 	lw	a1,-32724(gp)
  437594:	00000000 	nop
  437598:	24a5d214 	addiu	a1,a1,-11756
  43759c:	00403021 	move	a2,v0
  4375a0:	27c70028 	addiu	a3,s8,40
  4375a4:	8f9982a8 	lw	t9,-32088(gp)
  4375a8:	00000000 	nop
  4375ac:	0320f809 	jalr	t9
  4375b0:	00000000 	nop
  4375b4:	8fdc0018 	lw	gp,24(s8)
  4375b8:	00000000 	nop
		(has_private_key(cert))? ", has private key" : "");
	whack_log(RC_COMMENT, "       validity: not before %s %s",
  4375bc:	8fc2025c 	lw	v0,604(s8)
  4375c0:	00000000 	nop
  4375c4:	24420038 	addiu	v0,v0,56
  4375c8:	00402021 	move	a0,v0
  4375cc:	8fc50260 	lw	a1,608(s8)
  4375d0:	8f998b80 	lw	t9,-29824(gp)
  4375d4:	00000000 	nop
  4375d8:	0320f809 	jalr	t9
  4375dc:	00000000 	nop
  4375e0:	8fdc0018 	lw	gp,24(s8)
  4375e4:	afc2023c 	sw	v0,572(s8)
  4375e8:	8fc2025c 	lw	v0,604(s8)
  4375ec:	00000000 	nop
  4375f0:	8c430038 	lw	v1,56(v0)
  4375f4:	8fc20020 	lw	v0,32(s8)
  4375f8:	00000000 	nop
  4375fc:	0062102a 	slt	v0,v1,v0
  437600:	10400008 	beqz	v0,437624 <list_cert_chain+0x3a0>
  437604:	00000000 	nop
  437608:	8f82802c 	lw	v0,-32724(gp)
  43760c:	00000000 	nop
  437610:	2442d238 	addiu	v0,v0,-11720
  437614:	00000000 	nop
  437618:	afc20240 	sw	v0,576(s8)
  43761c:	10000006 	b	437638 <list_cert_chain+0x3b4>
  437620:	00000000 	nop
  437624:	8f83802c 	lw	v1,-32724(gp)
  437628:	00000000 	nop
  43762c:	2463d23c 	addiu	v1,v1,-11716
  437630:	00000000 	nop
  437634:	afc30240 	sw	v1,576(s8)
  437638:	00002021 	move	a0,zero
  43763c:	8f85802c 	lw	a1,-32724(gp)
  437640:	00000000 	nop
  437644:	24a5d254 	addiu	a1,a1,-11692
  437648:	8fc6023c 	lw	a2,572(s8)
  43764c:	8fc70240 	lw	a3,576(s8)
  437650:	8f9982a8 	lw	t9,-32088(gp)
  437654:	00000000 	nop
  437658:	0320f809 	jalr	t9
  43765c:	00000000 	nop
  437660:	8fdc0018 	lw	gp,24(s8)
  437664:	00000000 	nop
		timetoa(&cert->notBefore, utc),
		(cert->notBefore < now)?"ok":"fatal (not valid yet)");
	whack_log(RC_COMMENT, "                 not after  %s %s",
  437668:	8fc2025c 	lw	v0,604(s8)
  43766c:	00000000 	nop
  437670:	2442003c 	addiu	v0,v0,60
  437674:	00402021 	move	a0,v0
  437678:	8fc50260 	lw	a1,608(s8)
  43767c:	8f998b80 	lw	t9,-29824(gp)
  437680:	00000000 	nop
  437684:	0320f809 	jalr	t9
  437688:	00000000 	nop
  43768c:	8fdc0018 	lw	gp,24(s8)
  437690:	00408021 	move	s0,v0
  437694:	8fc2025c 	lw	v0,604(s8)
  437698:	00000000 	nop
  43769c:	8c44003c 	lw	a0,60(v0)
  4376a0:	2405001e 	li	a1,30
  4376a4:	24060001 	li	a2,1
  4376a8:	8f9980d8 	lw	t9,-32552(gp)
  4376ac:	00000000 	nop
  4376b0:	0320f809 	jalr	t9
  4376b4:	00000000 	nop
  4376b8:	8fdc0018 	lw	gp,24(s8)
  4376bc:	00002021 	move	a0,zero
  4376c0:	8f85802c 	lw	a1,-32724(gp)
  4376c4:	00000000 	nop
  4376c8:	24a5d278 	addiu	a1,a1,-11656
  4376cc:	02003021 	move	a2,s0
  4376d0:	00403821 	move	a3,v0
  4376d4:	8f9982a8 	lw	t9,-32088(gp)
  4376d8:	00000000 	nop
  4376dc:	0320f809 	jalr	t9
  4376e0:	00000000 	nop
  4376e4:	8fdc0018 	lw	gp,24(s8)
  4376e8:	00000000 	nop
		timetoa(&cert->notAfter, utc),
		check_expiry(cert->notAfter, CA_CERT_WARNING_INTERVAL, TRUE));
	if (cert->subjectKeyID.ptr != NULL)
  4376ec:	8fc2025c 	lw	v0,604(s8)
  4376f0:	00000000 	nop
  4376f4:	8c420060 	lw	v0,96(v0)
  4376f8:	00000000 	nop
  4376fc:	1040001c 	beqz	v0,437770 <list_cert_chain+0x4ec>
  437700:	00000000 	nop
	{
	    datatot(cert->subjectKeyID.ptr, cert->subjectKeyID.len, ':'
  437704:	24020200 	li	v0,512
  437708:	afa20010 	sw	v0,16(sp)
  43770c:	8fc2025c 	lw	v0,604(s8)
  437710:	00000000 	nop
  437714:	8c440060 	lw	a0,96(v0)
  437718:	8fc2025c 	lw	v0,604(s8)
  43771c:	00000000 	nop
  437720:	8c450064 	lw	a1,100(v0)
  437724:	2406003a 	li	a2,58
  437728:	27c70038 	addiu	a3,s8,56
  43772c:	8f9980a4 	lw	t9,-32604(gp)
  437730:	00000000 	nop
  437734:	0320f809 	jalr	t9
  437738:	00000000 	nop
  43773c:	8fdc0018 	lw	gp,24(s8)
  437740:	00000000 	nop
	        , buf, BUF_LEN);
	    whack_log(RC_COMMENT, "       subjkey:  %s", buf);
  437744:	00002021 	move	a0,zero
  437748:	8f85802c 	lw	a1,-32724(gp)
  43774c:	00000000 	nop
  437750:	24a5d29c 	addiu	a1,a1,-11620
  437754:	27c60038 	addiu	a2,s8,56
  437758:	8f9982a8 	lw	t9,-32088(gp)
  43775c:	00000000 	nop
  437760:	0320f809 	jalr	t9
  437764:	00000000 	nop
  437768:	8fdc0018 	lw	gp,24(s8)
  43776c:	00000000 	nop
	}
	if (cert->authKeyID.ptr != NULL)
  437770:	8fc2025c 	lw	v0,604(s8)
  437774:	00000000 	nop
  437778:	8c420068 	lw	v0,104(v0)
  43777c:	00000000 	nop
  437780:	1040001c 	beqz	v0,4377f4 <list_cert_chain+0x570>
  437784:	00000000 	nop
	{
	    datatot(cert->authKeyID.ptr, cert->authKeyID.len, ':'
  437788:	24020200 	li	v0,512
  43778c:	afa20010 	sw	v0,16(sp)
  437790:	8fc2025c 	lw	v0,604(s8)
  437794:	00000000 	nop
  437798:	8c440068 	lw	a0,104(v0)
  43779c:	8fc2025c 	lw	v0,604(s8)
  4377a0:	00000000 	nop
  4377a4:	8c45006c 	lw	a1,108(v0)
  4377a8:	2406003a 	li	a2,58
  4377ac:	27c70038 	addiu	a3,s8,56
  4377b0:	8f9980a4 	lw	t9,-32604(gp)
  4377b4:	00000000 	nop
  4377b8:	0320f809 	jalr	t9
  4377bc:	00000000 	nop
  4377c0:	8fdc0018 	lw	gp,24(s8)
  4377c4:	00000000 	nop
		, buf, BUF_LEN);
	    whack_log(RC_COMMENT, "       authkey:  %s", buf);
  4377c8:	00002021 	move	a0,zero
  4377cc:	8f85802c 	lw	a1,-32724(gp)
  4377d0:	00000000 	nop
  4377d4:	24a5d2b0 	addiu	a1,a1,-11600
  4377d8:	27c60038 	addiu	a2,s8,56
  4377dc:	8f9982a8 	lw	t9,-32088(gp)
  4377e0:	00000000 	nop
  4377e4:	0320f809 	jalr	t9
  4377e8:	00000000 	nop
  4377ec:	8fdc0018 	lw	gp,24(s8)
  4377f0:	00000000 	nop
	}
	if (cert->authKeySerialNumber.ptr != NULL)
  4377f4:	8fc2025c 	lw	v0,604(s8)
  4377f8:	00000000 	nop
  4377fc:	8c420070 	lw	v0,112(v0)
  437800:	00000000 	nop
  437804:	1040001c 	beqz	v0,437878 <list_cert_chain+0x5f4>
  437808:	00000000 	nop
	{
	    datatot(cert->authKeySerialNumber.ptr, cert->authKeySerialNumber.len, ':'
  43780c:	24020200 	li	v0,512
  437810:	afa20010 	sw	v0,16(sp)
  437814:	8fc2025c 	lw	v0,604(s8)
  437818:	00000000 	nop
  43781c:	8c440070 	lw	a0,112(v0)
  437820:	8fc2025c 	lw	v0,604(s8)
  437824:	00000000 	nop
  437828:	8c450074 	lw	a1,116(v0)
  43782c:	2406003a 	li	a2,58
  437830:	27c70038 	addiu	a3,s8,56
  437834:	8f9980a4 	lw	t9,-32604(gp)
  437838:	00000000 	nop
  43783c:	0320f809 	jalr	t9
  437840:	00000000 	nop
  437844:	8fdc0018 	lw	gp,24(s8)
  437848:	00000000 	nop
		, buf, BUF_LEN);
	    whack_log(RC_COMMENT, "       aserial:  %s", buf);
  43784c:	00002021 	move	a0,zero
  437850:	8f85802c 	lw	a1,-32724(gp)
  437854:	00000000 	nop
  437858:	24a5d2c4 	addiu	a1,a1,-11580
  43785c:	27c60038 	addiu	a2,s8,56
  437860:	8f9982a8 	lw	t9,-32088(gp)
  437864:	00000000 	nop
  437868:	0320f809 	jalr	t9
  43786c:	00000000 	nop
  437870:	8fdc0018 	lw	gp,24(s8)
  437874:	00000000 	nop
	}
	cert = cert->next;
  437878:	8fc2025c 	lw	v0,604(s8)
  43787c:	00000000 	nop
  437880:	8c420000 	lw	v0,0(v0)
  437884:	00000000 	nop
  437888:	afc2025c 	sw	v0,604(s8)
  43788c:	1000feb0 	b	437350 <list_cert_chain+0xcc>
  437890:	00000000 	nop
    }
}
  437894:	03c0e821 	move	sp,s8
  437898:	8fbf0254 	lw	ra,596(sp)
  43789c:	8fbe0250 	lw	s8,592(sp)
  4378a0:	8fb00248 	lw	s0,584(sp)
  4378a4:	27bd0258 	addiu	sp,sp,600
  4378a8:	03e00008 	jr	ra
  4378ac:	00000000 	nop

004378b0 <list_certs>:
  4378b0:	3c1c0fbd 	lui	gp,0xfbd
  4378b4:	279c50c0 	addiu	gp,gp,20672
  4378b8:	0399e021 	addu	gp,gp,t9
  4378bc:	27bdffd8 	addiu	sp,sp,-40
  4378c0:	afbc0010 	sw	gp,16(sp)
  4378c4:	afbf0020 	sw	ra,32(sp)
  4378c8:	afbe001c 	sw	s8,28(sp)
  4378cc:	afbc0018 	sw	gp,24(sp)
  4378d0:	03a0f021 	move	s8,sp
  4378d4:	afc40028 	sw	a0,40(s8)

/*
 *  list all user/host certs in a chained list
 */
void
list_certs(bool utc)
{
    list_cert_chain("User/Host Certificates", x509certs, utc);
  4378d8:	8f84802c 	lw	a0,-32724(gp)
  4378dc:	00000000 	nop
  4378e0:	2484d2d8 	addiu	a0,a0,-11560
  4378e4:	8f858018 	lw	a1,-32744(gp)
  4378e8:	00000000 	nop
  4378ec:	24a51ab0 	addiu	a1,a1,6832
  4378f0:	8ca50000 	lw	a1,0(a1)
  4378f4:	8fc60028 	lw	a2,40(s8)
  4378f8:	8f998030 	lw	t9,-32720(gp)
  4378fc:	00000000 	nop
  437900:	27397284 	addiu	t9,t9,29316
  437904:	00000000 	nop
  437908:	0320f809 	jalr	t9
  43790c:	00000000 	nop
  437910:	8fdc0010 	lw	gp,16(s8)
  437914:	00000000 	nop
}
  437918:	03c0e821 	move	sp,s8
  43791c:	8fbf0020 	lw	ra,32(sp)
  437920:	8fbe001c 	lw	s8,28(sp)
  437924:	27bd0028 	addiu	sp,sp,40
  437928:	03e00008 	jr	ra
  43792c:	00000000 	nop

00437930 <list_cacerts>:
  437930:	3c1c0fbd 	lui	gp,0xfbd
  437934:	279c5040 	addiu	gp,gp,20544
  437938:	0399e021 	addu	gp,gp,t9
  43793c:	27bdffd8 	addiu	sp,sp,-40
  437940:	afbc0010 	sw	gp,16(sp)
  437944:	afbf0020 	sw	ra,32(sp)
  437948:	afbe001c 	sw	s8,28(sp)
  43794c:	afbc0018 	sw	gp,24(sp)
  437950:	03a0f021 	move	s8,sp
  437954:	afc40028 	sw	a0,40(s8)

/*
 *  list all user/host certs in a chained list
 */
void
list_cacerts(bool utc)
{
    list_cert_chain("CA Certificates", x509cacerts, utc);
  437958:	8f84802c 	lw	a0,-32724(gp)
  43795c:	00000000 	nop
  437960:	2484d2f0 	addiu	a0,a0,-11536
  437964:	8f858018 	lw	a1,-32744(gp)
  437968:	00000000 	nop
  43796c:	24a51ab4 	addiu	a1,a1,6836
  437970:	8ca50000 	lw	a1,0(a1)
  437974:	8fc60028 	lw	a2,40(s8)
  437978:	8f998030 	lw	t9,-32720(gp)
  43797c:	00000000 	nop
  437980:	27397284 	addiu	t9,t9,29316
  437984:	00000000 	nop
  437988:	0320f809 	jalr	t9
  43798c:	00000000 	nop
  437990:	8fdc0010 	lw	gp,16(s8)
  437994:	00000000 	nop
}
  437998:	03c0e821 	move	sp,s8
  43799c:	8fbf0020 	lw	ra,32(sp)
  4379a0:	8fbe001c 	lw	s8,28(sp)
  4379a4:	27bd0028 	addiu	sp,sp,40
  4379a8:	03e00008 	jr	ra
  4379ac:	00000000 	nop

004379b0 <list_crls>:
  4379b0:	3c1c0fbd 	lui	gp,0xfbd
  4379b4:	279c4fc0 	addiu	gp,gp,20416
  4379b8:	0399e021 	addu	gp,gp,t9
  4379bc:	27bdfdc0 	addiu	sp,sp,-576
  4379c0:	afbc0018 	sw	gp,24(sp)
  4379c4:	afbf023c 	sw	ra,572(sp)
  4379c8:	afbe0238 	sw	s8,568(sp)
  4379cc:	afbc0234 	sw	gp,564(sp)
  4379d0:	afb00230 	sw	s0,560(sp)
  4379d4:	03a0f021 	move	s8,sp
  4379d8:	afc40240 	sw	a0,576(s8)
  4379dc:	afc50244 	sw	a1,580(s8)

/*
 *  list all crls in the chained list
 */
void
list_crls(bool utc, bool strict)
{
    x509crl_t* crl = x509crls;
  4379e0:	8f828018 	lw	v0,-32744(gp)
  4379e4:	00000000 	nop
  4379e8:	24421ab8 	addiu	v0,v0,6840
  4379ec:	8c420000 	lw	v0,0(v0)
  4379f0:	00000000 	nop
  4379f4:	afc20020 	sw	v0,32(s8)

    whack_log(RC_COMMENT, " ");
  4379f8:	00002021 	move	a0,zero
  4379fc:	8f85802c 	lw	a1,-32724(gp)
  437a00:	00000000 	nop
  437a04:	24a5d19c 	addiu	a1,a1,-11876
  437a08:	8f9982a8 	lw	t9,-32088(gp)
  437a0c:	00000000 	nop
  437a10:	0320f809 	jalr	t9
  437a14:	00000000 	nop
  437a18:	8fdc0018 	lw	gp,24(s8)
  437a1c:	00000000 	nop
    whack_log(RC_COMMENT, "List of CRLs:");
  437a20:	00002021 	move	a0,zero
  437a24:	8f85802c 	lw	a1,-32724(gp)
  437a28:	00000000 	nop
  437a2c:	24a5d300 	addiu	a1,a1,-11520
  437a30:	8f9982a8 	lw	t9,-32088(gp)
  437a34:	00000000 	nop
  437a38:	0320f809 	jalr	t9
  437a3c:	00000000 	nop
  437a40:	8fdc0018 	lw	gp,24(s8)
  437a44:	00000000 	nop
    whack_log(RC_COMMENT, " ");
  437a48:	00002021 	move	a0,zero
  437a4c:	8f85802c 	lw	a1,-32724(gp)
  437a50:	00000000 	nop
  437a54:	24a5d19c 	addiu	a1,a1,-11876
  437a58:	8f9982a8 	lw	t9,-32088(gp)
  437a5c:	00000000 	nop
  437a60:	0320f809 	jalr	t9
  437a64:	00000000 	nop
  437a68:	8fdc0018 	lw	gp,24(s8)
  437a6c:	00000000 	nop

    while (crl != NULL)
  437a70:	8fc20020 	lw	v0,32(s8)
  437a74:	00000000 	nop
  437a78:	14400003 	bnez	v0,437a88 <list_crls+0xd8>
  437a7c:	00000000 	nop
  437a80:	100000c3 	b	437d90 <list_crls+0x3e0>
  437a84:	00000000 	nop
    {
	u_char buf[BUF_LEN];
	u_int revoked = 0;
  437a88:	afc00228 	sw	zero,552(s8)
	revokedCert_t *revokedCert = crl->revokedCertificates;
  437a8c:	8fc20020 	lw	v0,32(s8)
  437a90:	00000000 	nop
  437a94:	8c420038 	lw	v0,56(v0)
  437a98:	00000000 	nop
  437a9c:	afc2022c 	sw	v0,556(s8)

	/* count number of revoked certificates in CRL */
	while (revokedCert != NULL)
  437aa0:	8fc2022c 	lw	v0,556(s8)
  437aa4:	00000000 	nop
  437aa8:	14400003 	bnez	v0,437ab8 <list_crls+0x108>
  437aac:	00000000 	nop
  437ab0:	1000000c 	b	437ae4 <list_crls+0x134>
  437ab4:	00000000 	nop
	{
	    revoked++;
  437ab8:	8fc20228 	lw	v0,552(s8)
  437abc:	00000000 	nop
  437ac0:	24420001 	addiu	v0,v0,1
  437ac4:	afc20228 	sw	v0,552(s8)
	    revokedCert = revokedCert->next;
  437ac8:	8fc2022c 	lw	v0,556(s8)
  437acc:	00000000 	nop
  437ad0:	8c420000 	lw	v0,0(v0)
  437ad4:	00000000 	nop
  437ad8:	afc2022c 	sw	v0,556(s8)
  437adc:	1000fff0 	b	437aa0 <list_crls+0xf0>
  437ae0:	00000000 	nop
        }

	whack_log(RC_COMMENT, "%s, revoked certs: %d",
  437ae4:	8fc20020 	lw	v0,32(s8)
  437ae8:	00000000 	nop
  437aec:	24420004 	addiu	v0,v0,4
  437af0:	00402021 	move	a0,v0
  437af4:	8fc50240 	lw	a1,576(s8)
  437af8:	8f998b80 	lw	t9,-29824(gp)
  437afc:	00000000 	nop
  437b00:	0320f809 	jalr	t9
  437b04:	00000000 	nop
  437b08:	8fdc0018 	lw	gp,24(s8)
  437b0c:	00002021 	move	a0,zero
  437b10:	8f85802c 	lw	a1,-32724(gp)
  437b14:	00000000 	nop
  437b18:	24a5d310 	addiu	a1,a1,-11504
  437b1c:	00403021 	move	a2,v0
  437b20:	8fc70228 	lw	a3,552(s8)
  437b24:	8f9982a8 	lw	t9,-32088(gp)
  437b28:	00000000 	nop
  437b2c:	0320f809 	jalr	t9
  437b30:	00000000 	nop
  437b34:	8fdc0018 	lw	gp,24(s8)
  437b38:	00000000 	nop
		timetoa(&crl->installed, utc), revoked);
	dntoa(buf, BUF_LEN, crl->issuer);
  437b3c:	8fc20020 	lw	v0,32(s8)
  437b40:	27c40028 	addiu	a0,s8,40
  437b44:	24050200 	li	a1,512
  437b48:	8c460028 	lw	a2,40(v0)
  437b4c:	8c47002c 	lw	a3,44(v0)
  437b50:	8f9982bc 	lw	t9,-32068(gp)
  437b54:	00000000 	nop
  437b58:	0320f809 	jalr	t9
  437b5c:	00000000 	nop
  437b60:	8fdc0018 	lw	gp,24(s8)
  437b64:	00000000 	nop
	whack_log(RC_COMMENT, "       issuer:  '%s'", buf);
  437b68:	00002021 	move	a0,zero
  437b6c:	8f85802c 	lw	a1,-32724(gp)
  437b70:	00000000 	nop
  437b74:	24a5d1d4 	addiu	a1,a1,-11820
  437b78:	27c60028 	addiu	a2,s8,40
  437b7c:	8f9982a8 	lw	t9,-32088(gp)
  437b80:	00000000 	nop
  437b84:	0320f809 	jalr	t9
  437b88:	00000000 	nop
  437b8c:	8fdc0018 	lw	gp,24(s8)
  437b90:	00000000 	nop
	whack_log(RC_COMMENT, "       updates:  this %s",
  437b94:	8fc20020 	lw	v0,32(s8)
  437b98:	00000000 	nop
  437b9c:	24420030 	addiu	v0,v0,48
  437ba0:	00402021 	move	a0,v0
  437ba4:	8fc50240 	lw	a1,576(s8)
  437ba8:	8f998b80 	lw	t9,-29824(gp)
  437bac:	00000000 	nop
  437bb0:	0320f809 	jalr	t9
  437bb4:	00000000 	nop
  437bb8:	8fdc0018 	lw	gp,24(s8)
  437bbc:	00002021 	move	a0,zero
  437bc0:	8f85802c 	lw	a1,-32724(gp)
  437bc4:	00000000 	nop
  437bc8:	24a5d328 	addiu	a1,a1,-11480
  437bcc:	00403021 	move	a2,v0
  437bd0:	8f9982a8 	lw	t9,-32088(gp)
  437bd4:	00000000 	nop
  437bd8:	0320f809 	jalr	t9
  437bdc:	00000000 	nop
  437be0:	8fdc0018 	lw	gp,24(s8)
  437be4:	00000000 	nop
		timetoa(&crl->thisUpdate, utc));
	whack_log(RC_COMMENT, "                 next %s %s",
  437be8:	8fc20020 	lw	v0,32(s8)
  437bec:	00000000 	nop
  437bf0:	24420034 	addiu	v0,v0,52
  437bf4:	00402021 	move	a0,v0
  437bf8:	8fc50240 	lw	a1,576(s8)
  437bfc:	8f998b80 	lw	t9,-29824(gp)
  437c00:	00000000 	nop
  437c04:	0320f809 	jalr	t9
  437c08:	00000000 	nop
  437c0c:	8fdc0018 	lw	gp,24(s8)
  437c10:	00408021 	move	s0,v0
  437c14:	8fc20020 	lw	v0,32(s8)
  437c18:	00000000 	nop
  437c1c:	8c440034 	lw	a0,52(v0)
  437c20:	24050007 	li	a1,7
  437c24:	8fc60244 	lw	a2,580(s8)
  437c28:	8f9980d8 	lw	t9,-32552(gp)
  437c2c:	00000000 	nop
  437c30:	0320f809 	jalr	t9
  437c34:	00000000 	nop
  437c38:	8fdc0018 	lw	gp,24(s8)
  437c3c:	00002021 	move	a0,zero
  437c40:	8f85802c 	lw	a1,-32724(gp)
  437c44:	00000000 	nop
  437c48:	24a5d344 	addiu	a1,a1,-11452
  437c4c:	02003021 	move	a2,s0
  437c50:	00403821 	move	a3,v0
  437c54:	8f9982a8 	lw	t9,-32088(gp)
  437c58:	00000000 	nop
  437c5c:	0320f809 	jalr	t9
  437c60:	00000000 	nop
  437c64:	8fdc0018 	lw	gp,24(s8)
  437c68:	00000000 	nop
		timetoa(&crl->nextUpdate, utc),
		check_expiry(crl->nextUpdate, CRL_WARNING_INTERVAL, strict));
	if (crl->authKeyID.ptr != NULL)
  437c6c:	8fc20020 	lw	v0,32(s8)
  437c70:	00000000 	nop
  437c74:	8c42003c 	lw	v0,60(v0)
  437c78:	00000000 	nop
  437c7c:	1040001c 	beqz	v0,437cf0 <list_crls+0x340>
  437c80:	00000000 	nop
	{
	    datatot(crl->authKeyID.ptr, crl->authKeyID.len, ':'
  437c84:	24020200 	li	v0,512
  437c88:	afa20010 	sw	v0,16(sp)
  437c8c:	8fc20020 	lw	v0,32(s8)
  437c90:	00000000 	nop
  437c94:	8c44003c 	lw	a0,60(v0)
  437c98:	8fc20020 	lw	v0,32(s8)
  437c9c:	00000000 	nop
  437ca0:	8c450040 	lw	a1,64(v0)
  437ca4:	2406003a 	li	a2,58
  437ca8:	27c70028 	addiu	a3,s8,40
  437cac:	8f9980a4 	lw	t9,-32604(gp)
  437cb0:	00000000 	nop
  437cb4:	0320f809 	jalr	t9
  437cb8:	00000000 	nop
  437cbc:	8fdc0018 	lw	gp,24(s8)
  437cc0:	00000000 	nop
		, buf, BUF_LEN);
	    whack_log(RC_COMMENT, "       authkey:  %s", buf);
  437cc4:	00002021 	move	a0,zero
  437cc8:	8f85802c 	lw	a1,-32724(gp)
  437ccc:	00000000 	nop
  437cd0:	24a5d2b0 	addiu	a1,a1,-11600
  437cd4:	27c60028 	addiu	a2,s8,40
  437cd8:	8f9982a8 	lw	t9,-32088(gp)
  437cdc:	00000000 	nop
  437ce0:	0320f809 	jalr	t9
  437ce4:	00000000 	nop
  437ce8:	8fdc0018 	lw	gp,24(s8)
  437cec:	00000000 	nop
	}
	if (crl->authKeySerialNumber.ptr != NULL)
  437cf0:	8fc20020 	lw	v0,32(s8)
  437cf4:	00000000 	nop
  437cf8:	8c420044 	lw	v0,68(v0)
  437cfc:	00000000 	nop
  437d00:	1040001c 	beqz	v0,437d74 <list_crls+0x3c4>
  437d04:	00000000 	nop
	{
	    datatot(crl->authKeySerialNumber.ptr, crl->authKeySerialNumber.len, ':'
  437d08:	24020200 	li	v0,512
  437d0c:	afa20010 	sw	v0,16(sp)
  437d10:	8fc20020 	lw	v0,32(s8)
  437d14:	00000000 	nop
  437d18:	8c440044 	lw	a0,68(v0)
  437d1c:	8fc20020 	lw	v0,32(s8)
  437d20:	00000000 	nop
  437d24:	8c450048 	lw	a1,72(v0)
  437d28:	2406003a 	li	a2,58
  437d2c:	27c70028 	addiu	a3,s8,40
  437d30:	8f9980a4 	lw	t9,-32604(gp)
  437d34:	00000000 	nop
  437d38:	0320f809 	jalr	t9
  437d3c:	00000000 	nop
  437d40:	8fdc0018 	lw	gp,24(s8)
  437d44:	00000000 	nop
		, buf, BUF_LEN);
	    whack_log(RC_COMMENT, "       aserial:  %s", buf);
  437d48:	00002021 	move	a0,zero
  437d4c:	8f85802c 	lw	a1,-32724(gp)
  437d50:	00000000 	nop
  437d54:	24a5d2c4 	addiu	a1,a1,-11580
  437d58:	27c60028 	addiu	a2,s8,40
  437d5c:	8f9982a8 	lw	t9,-32088(gp)
  437d60:	00000000 	nop
  437d64:	0320f809 	jalr	t9
  437d68:	00000000 	nop
  437d6c:	8fdc0018 	lw	gp,24(s8)
  437d70:	00000000 	nop
	}

	crl = crl->next;
  437d74:	8fc20020 	lw	v0,32(s8)
  437d78:	00000000 	nop
  437d7c:	8c420000 	lw	v0,0(v0)
  437d80:	00000000 	nop
  437d84:	afc20020 	sw	v0,32(s8)
  437d88:	1000ff39 	b	437a70 <list_crls+0xc0>
  437d8c:	00000000 	nop
    }
}
  437d90:	03c0e821 	move	sp,s8
  437d94:	8fbf023c 	lw	ra,572(sp)
  437d98:	8fbe0238 	lw	s8,568(sp)
  437d9c:	8fb00230 	lw	s0,560(sp)
  437da0:	27bd0240 	addiu	sp,sp,576
  437da4:	03e00008 	jr	ra
  437da8:	00000000 	nop

00437dac <load_coded_file>:
  437dac:	3c1c0fbd 	lui	gp,0xfbd
  437db0:	279c4bc4 	addiu	gp,gp,19396
  437db4:	0399e021 	addu	gp,gp,t9
  437db8:	27bdffc0 	addiu	sp,sp,-64
  437dbc:	afbc0010 	sw	gp,16(sp)
  437dc0:	afbf003c 	sw	ra,60(sp)
  437dc4:	afbe0038 	sw	s8,56(sp)
  437dc8:	afbc0034 	sw	gp,52(sp)
  437dcc:	afb00030 	sw	s0,48(sp)
  437dd0:	03a0f021 	move	s8,sp
  437dd4:	afc40040 	sw	a0,64(s8)
  437dd8:	afc50044 	sw	a1,68(s8)
  437ddc:	afc60048 	sw	a2,72(s8)
  437de0:	afc7004c 	sw	a3,76(s8)


/* load a coded key or certificate file with autodetection
 * of binary DER or base64 PEM ASN.1 formats and armored PGP format
 */
bool
load_coded_file(const char *filename, const char *pass, const char *type
, chunk_t *blob, bool *pgp)
{
    err_t ugh = NULL;
  437de4:	afc00018 	sw	zero,24(s8)
    FILE *fd;

    fd = fopen(filename, "r");
  437de8:	8fc40040 	lw	a0,64(s8)
  437dec:	8f85802c 	lw	a1,-32724(gp)
  437df0:	00000000 	nop
  437df4:	24a5ca7c 	addiu	a1,a1,-13700
  437df8:	8f99850c 	lw	t9,-31476(gp)
  437dfc:	00000000 	nop
  437e00:	0320f809 	jalr	t9
  437e04:	00000000 	nop
  437e08:	8fdc0010 	lw	gp,16(s8)
  437e0c:	afc2001c 	sw	v0,28(s8)
    if (fd)
  437e10:	8fc2001c 	lw	v0,28(s8)
  437e14:	00000000 	nop
  437e18:	104000ce 	beqz	v0,438154 <load_coded_file+0x3a8>
  437e1c:	00000000 	nop
    {
        int bytes;
        fseek(fd, 0, SEEK_END );
  437e20:	8fc4001c 	lw	a0,28(s8)
  437e24:	00002821 	move	a1,zero
  437e28:	24060002 	li	a2,2
  437e2c:	8f998710 	lw	t9,-30960(gp)
  437e30:	00000000 	nop
  437e34:	0320f809 	jalr	t9
  437e38:	00000000 	nop
  437e3c:	8fdc0010 	lw	gp,16(s8)
  437e40:	00000000 	nop
        blob->len = ftell(fd);
  437e44:	8fd0004c 	lw	s0,76(s8)
  437e48:	8fc4001c 	lw	a0,28(s8)
  437e4c:	8f9984dc 	lw	t9,-31524(gp)
  437e50:	00000000 	nop
  437e54:	0320f809 	jalr	t9
  437e58:	00000000 	nop
  437e5c:	8fdc0010 	lw	gp,16(s8)
  437e60:	ae020004 	sw	v0,4(s0)
        rewind(fd);
  437e64:	8fc4001c 	lw	a0,28(s8)
  437e68:	8f998268 	lw	t9,-32152(gp)
  437e6c:	00000000 	nop
  437e70:	0320f809 	jalr	t9
  437e74:	00000000 	nop
  437e78:	8fdc0010 	lw	gp,16(s8)
  437e7c:	00000000 	nop
        blob->ptr = alloc_bytes(blob->len, type);
  437e80:	8fd0004c 	lw	s0,76(s8)
  437e84:	8fc2004c 	lw	v0,76(s8)
  437e88:	00000000 	nop
  437e8c:	8c440004 	lw	a0,4(v0)
  437e90:	8fc50048 	lw	a1,72(s8)
  437e94:	8f998084 	lw	t9,-32636(gp)
  437e98:	00000000 	nop
  437e9c:	0320f809 	jalr	t9
  437ea0:	00000000 	nop
  437ea4:	8fdc0010 	lw	gp,16(s8)
  437ea8:	ae020000 	sw	v0,0(s0)
        bytes = fread(blob->ptr, 1, blob->len, fd);
  437eac:	8fc2004c 	lw	v0,76(s8)
  437eb0:	00000000 	nop
  437eb4:	8c440000 	lw	a0,0(v0)
  437eb8:	24050001 	li	a1,1
  437ebc:	8fc2004c 	lw	v0,76(s8)
  437ec0:	00000000 	nop
  437ec4:	8c460004 	lw	a2,4(v0)
  437ec8:	8fc7001c 	lw	a3,28(s8)
  437ecc:	8f998558 	lw	t9,-31400(gp)
  437ed0:	00000000 	nop
  437ed4:	0320f809 	jalr	t9
  437ed8:	00000000 	nop
  437edc:	8fdc0010 	lw	gp,16(s8)
  437ee0:	afc20020 	sw	v0,32(s8)
        fclose(fd);
  437ee4:	8fc4001c 	lw	a0,28(s8)
  437ee8:	8f9984c0 	lw	t9,-31552(gp)
  437eec:	00000000 	nop
  437ef0:	0320f809 	jalr	t9
  437ef4:	00000000 	nop
  437ef8:	8fdc0010 	lw	gp,16(s8)
  437efc:	00000000 	nop
        plog("  loaded %s file '%s' (%d bytes)", type, filename, bytes);
  437f00:	8f84802c 	lw	a0,-32724(gp)
  437f04:	00000000 	nop
  437f08:	2484d360 	addiu	a0,a0,-11424
  437f0c:	8fc50048 	lw	a1,72(s8)
  437f10:	8fc60040 	lw	a2,64(s8)
  437f14:	8fc70020 	lw	a3,32(s8)
  437f18:	8f998abc 	lw	t9,-30020(gp)
  437f1c:	00000000 	nop
  437f20:	0320f809 	jalr	t9
  437f24:	00000000 	nop
  437f28:	8fdc0010 	lw	gp,16(s8)
  437f2c:	00000000 	nop

        *pgp = FALSE;
  437f30:	8fc20050 	lw	v0,80(s8)
  437f34:	00000000 	nop
  437f38:	ac400000 	sw	zero,0(v0)

        /* try DER format */
        if (is_asn1(*blob))
  437f3c:	8fc2004c 	lw	v0,76(s8)
  437f40:	00000000 	nop
  437f44:	8c440000 	lw	a0,0(v0)
  437f48:	8c450004 	lw	a1,4(v0)
  437f4c:	8f998494 	lw	t9,-31596(gp)
  437f50:	00000000 	nop
  437f54:	0320f809 	jalr	t9
  437f58:	00000000 	nop
  437f5c:	8fdc0010 	lw	gp,16(s8)
  437f60:	10400014 	beqz	v0,437fb4 <load_coded_file+0x208>
  437f64:	00000000 	nop
        {
            DBG(DBG_PARSING,
  437f68:	8f8284f8 	lw	v0,-31496(gp)
  437f6c:	00000000 	nop
  437f70:	8c420000 	lw	v0,0(v0)
  437f74:	00000000 	nop
  437f78:	30420004 	andi	v0,v0,0x4
  437f7c:	1040000a 	beqz	v0,437fa8 <load_coded_file+0x1fc>
  437f80:	00000000 	nop
  437f84:	8f84802c 	lw	a0,-32724(gp)
  437f88:	00000000 	nop
  437f8c:	2484d384 	addiu	a0,a0,-11388
  437f90:	8f9983b8 	lw	t9,-31816(gp)
  437f94:	00000000 	nop
  437f98:	0320f809 	jalr	t9
  437f9c:	00000000 	nop
  437fa0:	8fdc0010 	lw	gp,16(s8)
  437fa4:	00000000 	nop
                DBG_log("  file coded in DER format");
            )
            return TRUE;
  437fa8:	24020001 	li	v0,1
  437fac:	10000075 	b	438184 <load_coded_file+0x3d8>
  437fb0:	00000000 	nop
        }

        /* try PEM format */
        ugh = pemtobin(blob, pass);
  437fb4:	8fc4004c 	lw	a0,76(s8)
  437fb8:	8fc50044 	lw	a1,68(s8)
  437fbc:	8f998370 	lw	t9,-31888(gp)
  437fc0:	00000000 	nop
  437fc4:	0320f809 	jalr	t9
  437fc8:	00000000 	nop
  437fcc:	8fdc0010 	lw	gp,16(s8)
  437fd0:	afc20018 	sw	v0,24(s8)

        if (ugh == NULL)
  437fd4:	8fc20018 	lw	v0,24(s8)
  437fd8:	00000000 	nop
  437fdc:	1440003d 	bnez	v0,4380d4 <load_coded_file+0x328>
  437fe0:	00000000 	nop
        {
            if (*pgp)
  437fe4:	8fc20050 	lw	v0,80(s8)
  437fe8:	00000000 	nop
  437fec:	8c420000 	lw	v0,0(v0)
  437ff0:	00000000 	nop
  437ff4:	10400014 	beqz	v0,438048 <load_coded_file+0x29c>
  437ff8:	00000000 	nop
            {
                DBG(DBG_PARSING,
  437ffc:	8f8284f8 	lw	v0,-31496(gp)
  438000:	00000000 	nop
  438004:	8c420000 	lw	v0,0(v0)
  438008:	00000000 	nop
  43800c:	30420004 	andi	v0,v0,0x4
  438010:	1040000a 	beqz	v0,43803c <load_coded_file+0x290>
  438014:	00000000 	nop
  438018:	8f84802c 	lw	a0,-32724(gp)
  43801c:	00000000 	nop
  438020:	2484d3a0 	addiu	a0,a0,-11360
  438024:	8f9983b8 	lw	t9,-31816(gp)
  438028:	00000000 	nop
  43802c:	0320f809 	jalr	t9
  438030:	00000000 	nop
  438034:	8fdc0010 	lw	gp,16(s8)
  438038:	00000000 	nop
                    DBG_log("  file coded in armored PGP format");
                )
                return TRUE;
  43803c:	24020001 	li	v0,1
  438040:	10000050 	b	438184 <load_coded_file+0x3d8>
  438044:	00000000 	nop
            }
            if (is_asn1(*blob))
  438048:	8fc2004c 	lw	v0,76(s8)
  43804c:	00000000 	nop
  438050:	8c440000 	lw	a0,0(v0)
  438054:	8c450004 	lw	a1,4(v0)
  438058:	8f998494 	lw	t9,-31596(gp)
  43805c:	00000000 	nop
  438060:	0320f809 	jalr	t9
  438064:	00000000 	nop
  438068:	8fdc0010 	lw	gp,16(s8)
  43806c:	10400014 	beqz	v0,4380c0 <load_coded_file+0x314>
  438070:	00000000 	nop
            {
                DBG(DBG_PARSING,
  438074:	8f8284f8 	lw	v0,-31496(gp)
  438078:	00000000 	nop
  43807c:	8c420000 	lw	v0,0(v0)
  438080:	00000000 	nop
  438084:	30420004 	andi	v0,v0,0x4
  438088:	1040000a 	beqz	v0,4380b4 <load_coded_file+0x308>
  43808c:	00000000 	nop
  438090:	8f84802c 	lw	a0,-32724(gp)
  438094:	00000000 	nop
  438098:	2484d3c4 	addiu	a0,a0,-11324
  43809c:	8f9983b8 	lw	t9,-31816(gp)
  4380a0:	00000000 	nop
  4380a4:	0320f809 	jalr	t9
  4380a8:	00000000 	nop
  4380ac:	8fdc0010 	lw	gp,16(s8)
  4380b0:	00000000 	nop
                    DBG_log("  file coded in PEM format");
                )
                return TRUE;
  4380b4:	24020001 	li	v0,1
  4380b8:	10000032 	b	438184 <load_coded_file+0x3d8>
  4380bc:	00000000 	nop
            }
            ugh = "file coded in unknown format, discarded";
  4380c0:	8f82802c 	lw	v0,-32724(gp)
  4380c4:	00000000 	nop
  4380c8:	2442d3e0 	addiu	v0,v0,-11296
  4380cc:	00000000 	nop
  4380d0:	afc20018 	sw	v0,24(s8)
        }

        /* a conversion error has occured */
        plog("  %s", ugh);
  4380d4:	8f84802c 	lw	a0,-32724(gp)
  4380d8:	00000000 	nop
  4380dc:	2484caf4 	addiu	a0,a0,-13580
  4380e0:	8fc50018 	lw	a1,24(s8)
  4380e4:	8f998abc 	lw	t9,-30020(gp)
  4380e8:	00000000 	nop
  4380ec:	0320f809 	jalr	t9
  4380f0:	00000000 	nop
  4380f4:	8fdc0010 	lw	gp,16(s8)
  4380f8:	00000000 	nop
        pfree(blob->ptr);
  4380fc:	8fc2004c 	lw	v0,76(s8)
  438100:	00000000 	nop
  438104:	8c440000 	lw	a0,0(v0)
  438108:	8f998094 	lw	t9,-32620(gp)
  43810c:	00000000 	nop
  438110:	0320f809 	jalr	t9
  438114:	00000000 	nop
  438118:	8fdc0010 	lw	gp,16(s8)
  43811c:	00000000 	nop
        *blob = empty_chunk;
  438120:	8fc3004c 	lw	v1,76(s8)
  438124:	8f828708 	lw	v0,-30968(gp)
  438128:	00000000 	nop
  43812c:	8c420000 	lw	v0,0(v0)
  438130:	00000000 	nop
  438134:	ac620000 	sw	v0,0(v1)
  438138:	8f828708 	lw	v0,-30968(gp)
  43813c:	00000000 	nop
  438140:	8c420004 	lw	v0,4(v0)
  438144:	00000000 	nop
  438148:	ac620004 	sw	v0,4(v1)
  43814c:	1000000c 	b	438180 <load_coded_file+0x3d4>
  438150:	00000000 	nop
    }
    else
    {
        plog("  could not open %s file '%s'", type, filename);
  438154:	8f84802c 	lw	a0,-32724(gp)
  438158:	00000000 	nop
  43815c:	2484d408 	addiu	a0,a0,-11256
  438160:	8fc50048 	lw	a1,72(s8)
  438164:	8fc60040 	lw	a2,64(s8)
  438168:	8f998abc 	lw	t9,-30020(gp)
  43816c:	00000000 	nop
  438170:	0320f809 	jalr	t9
  438174:	00000000 	nop
  438178:	8fdc0010 	lw	gp,16(s8)
  43817c:	00000000 	nop
    }
    return FALSE;
  438180:	00001021 	move	v0,zero
}
  438184:	03c0e821 	move	sp,s8
  438188:	8fbf003c 	lw	ra,60(sp)
  43818c:	8fbe0038 	lw	s8,56(sp)
  438190:	8fb00030 	lw	s0,48(sp)
  438194:	27bd0040 	addiu	sp,sp,64
  438198:	03e00008 	jr	ra
  43819c:	00000000 	nop

004381a0 <temporary_cyclic_buffer>:
  4381a0:	3c1c0fbd 	lui	gp,0xfbd
  4381a4:	279c47d0 	addiu	gp,gp,18384
  4381a8:	0399e021 	addu	gp,gp,t9
  4381ac:	27bdfff0 	addiu	sp,sp,-16
  4381b0:	afbc0000 	sw	gp,0(sp)
  4381b4:	afbe000c 	sw	s8,12(sp)
  4381b8:	afbc0008 	sw	gp,8(sp)
  4381bc:	03a0f021 	move	s8,sp
{
    static char buf[MAX_BUF][IDTOA_BUF];	/* MAX_BUF internal buffers */
    static int counter = 0;			/* cyclic counter */

    if (++counter == MAX_BUF) counter = 0;	/* next internal buffer */
  4381c0:	8f828018 	lw	v0,-32744(gp)
  4381c4:	00000000 	nop
  4381c8:	24422370 	addiu	v0,v0,9072
  4381cc:	8c420000 	lw	v0,0(v0)
  4381d0:	00000000 	nop
  4381d4:	24420001 	addiu	v0,v0,1
  4381d8:	00401821 	move	v1,v0
  4381dc:	8f818018 	lw	at,-32744(gp)
  4381e0:	00000000 	nop
  4381e4:	24212370 	addiu	at,at,9072
  4381e8:	ac230000 	sw	v1,0(at)
  4381ec:	24020006 	li	v0,6
  4381f0:	14620005 	bne	v1,v0,438208 <temporary_cyclic_buffer+0x68>
  4381f4:	00000000 	nop
  4381f8:	8f818018 	lw	at,-32744(gp)
  4381fc:	00000000 	nop
  438200:	24212370 	addiu	at,at,9072
  438204:	ac200000 	sw	zero,0(at)
    return buf[counter];			/* assign temporary buffer */
  438208:	8f828018 	lw	v0,-32744(gp)
  43820c:	00000000 	nop
  438210:	24422370 	addiu	v0,v0,9072
  438214:	8c420000 	lw	v0,0(v0)
  438218:	00000000 	nop
  43821c:	00021240 	sll	v0,v0,0x9
  438220:	8f818018 	lw	at,-32744(gp)
  438224:	00000000 	nop
  438228:	24216a60 	addiu	at,at,27232
  43822c:	00221021 	addu	v0,at,v0
}
  438230:	03c0e821 	move	sp,s8
  438234:	8fbe000c 	lw	s8,12(sp)
  438238:	27bd0010 	addiu	sp,sp,16
  43823c:	03e00008 	jr	ra
  438240:	00000000 	nop

00438244 <atoid>:
  438244:	3c1c0fbd 	lui	gp,0xfbd
  438248:	279c472c 	addiu	gp,gp,18220
  43824c:	0399e021 	addu	gp,gp,t9
  438250:	27bdffc0 	addiu	sp,sp,-64
  438254:	afbc0018 	sw	gp,24(sp)
  438258:	afbf003c 	sw	ra,60(sp)
  43825c:	afbe0038 	sw	s8,56(sp)
  438260:	afbc0034 	sw	gp,52(sp)
  438264:	afb00030 	sw	s0,48(sp)
  438268:	03a0f021 	move	s8,sp
  43826c:	afc40040 	sw	a0,64(s8)
  438270:	afc50044 	sw	a1,68(s8)


/* Convert textual form of id into a (temporary) struct id.
 * Note that if the id is to be kept, unshare_id_content will be necessary.
 */
err_t
atoid(char *src, struct id *id)
{
    err_t ugh = NULL;
  438274:	afc00020 	sw	zero,32(s8)

    *id = empty_id;
  438278:	8fc20044 	lw	v0,68(s8)
  43827c:	00000000 	nop
  438280:	00402021 	move	a0,v0
  438284:	8f8582d8 	lw	a1,-32040(gp)
  438288:	24060028 	li	a2,40
  43828c:	8f998a30 	lw	t9,-30160(gp)
  438290:	00000000 	nop
  438294:	0320f809 	jalr	t9
  438298:	00000000 	nop
  43829c:	8fdc0018 	lw	gp,24(s8)
  4382a0:	00000000 	nop

    if (strchr(src, '=') != NULL)
  4382a4:	8fc40040 	lw	a0,64(s8)
  4382a8:	2405003d 	li	a1,61
  4382ac:	8f99813c 	lw	t9,-32452(gp)
  4382b0:	00000000 	nop
  4382b4:	0320f809 	jalr	t9
  4382b8:	00000000 	nop
  4382bc:	8fdc0018 	lw	gp,24(s8)
  4382c0:	10400025 	beqz	v0,438358 <atoid+0x114>
  4382c4:	00000000 	nop
    {
	/* we interpret this as an ASCII X.501 ID_DER_ASN1_DN */
	id->kind = ID_DER_ASN1_DN;
  4382c8:	24030009 	li	v1,9
  4382cc:	8fc20044 	lw	v0,68(s8)
  4382d0:	00000000 	nop
  4382d4:	ac430000 	sw	v1,0(v0)
	id->name.ptr = temporary_cyclic_buffer(); /* assign temporary buffer */
  4382d8:	8fd00044 	lw	s0,68(s8)
  4382dc:	8f998b00 	lw	t9,-29952(gp)
  4382e0:	00000000 	nop
  4382e4:	0320f809 	jalr	t9
  4382e8:	00000000 	nop
  4382ec:	8fdc0018 	lw	gp,24(s8)
  4382f0:	ae020020 	sw	v0,32(s0)
	id->name.len = 0;
  4382f4:	8fc20044 	lw	v0,68(s8)
  4382f8:	00000000 	nop
  4382fc:	ac400024 	sw	zero,36(v0)
	/* convert from LDAP style or openssl x509 -subject style to ASN.1 DN
	 * discard optional @ character in front of DN
	 */
	ugh = atodn((*src == '@')?src+1:src, &id->name);
  438300:	8fc20040 	lw	v0,64(s8)
  438304:	00000000 	nop
  438308:	80420000 	lb	v0,0(v0)
  43830c:	00000000 	nop
  438310:	38420040 	xori	v0,v0,0x40
  438314:	2c430001 	sltiu	v1,v0,1
  438318:	8fc20040 	lw	v0,64(s8)
  43831c:	00000000 	nop
  438320:	00621821 	addu	v1,v1,v0
  438324:	8fc20044 	lw	v0,68(s8)
  438328:	00000000 	nop
  43832c:	24420020 	addiu	v0,v0,32
  438330:	00602021 	move	a0,v1
  438334:	00402821 	move	a1,v0
  438338:	8f9987a0 	lw	t9,-30816(gp)
  43833c:	00000000 	nop
  438340:	0320f809 	jalr	t9
  438344:	00000000 	nop
  438348:	8fdc0018 	lw	gp,24(s8)
  43834c:	afc20020 	sw	v0,32(s8)
  438350:	100000d4 	b	4386a4 <atoid+0x460>
  438354:	00000000 	nop
    }
    else if (strchr(src, '@') == NULL)
  438358:	8fc40040 	lw	a0,64(s8)
  43835c:	24050040 	li	a1,64
  438360:	8f99813c 	lw	t9,-32452(gp)
  438364:	00000000 	nop
  438368:	0320f809 	jalr	t9
  43836c:	00000000 	nop
  438370:	8fdc0018 	lw	gp,24(s8)
  438374:	14400047 	bnez	v0,438494 <atoid+0x250>
  438378:	00000000 	nop
    {
	if (streq(src, "%any") || streq(src, "0.0.0.0"))
  43837c:	8fc40040 	lw	a0,64(s8)
  438380:	8f85802c 	lw	a1,-32724(gp)
  438384:	00000000 	nop
  438388:	24a5d430 	addiu	a1,a1,-11216
  43838c:	8f998428 	lw	t9,-31704(gp)
  438390:	00000000 	nop
  438394:	0320f809 	jalr	t9
  438398:	00000000 	nop
  43839c:	8fdc0018 	lw	gp,24(s8)
  4383a0:	1040000c 	beqz	v0,4383d4 <atoid+0x190>
  4383a4:	00000000 	nop
  4383a8:	8fc40040 	lw	a0,64(s8)
  4383ac:	8f85802c 	lw	a1,-32724(gp)
  4383b0:	00000000 	nop
  4383b4:	24a5d438 	addiu	a1,a1,-11208
  4383b8:	8f998428 	lw	t9,-31704(gp)
  4383bc:	00000000 	nop
  4383c0:	0320f809 	jalr	t9
  4383c4:	00000000 	nop
  4383c8:	8fdc0018 	lw	gp,24(s8)
  4383cc:	14400006 	bnez	v0,4383e8 <atoid+0x1a4>
  4383d0:	00000000 	nop
	{
	    /* any ID will be accepted */
	    id->kind = ID_NONE;
  4383d4:	8fc20044 	lw	v0,68(s8)
  4383d8:	00000000 	nop
  4383dc:	ac400000 	sw	zero,0(v0)
  4383e0:	100000b0 	b	4386a4 <atoid+0x460>
  4383e4:	00000000 	nop
	}
	else
	{
	   /* !!! this test is not sufficient for distinguishing address families.
	    * We need a notation to specify that a FQDN is to be resolved to IPv6.
	    */
	   const struct af_info *afi = strchr(src, ':') == NULL
  4383e8:	8fc40040 	lw	a0,64(s8)
  4383ec:	2405003a 	li	a1,58
  4383f0:	8f99813c 	lw	t9,-32452(gp)
  4383f4:	00000000 	nop
  4383f8:	0320f809 	jalr	t9
  4383fc:	00000000 	nop
  438400:	8fdc0018 	lw	gp,24(s8)
  438404:	14400006 	bnez	v0,438420 <atoid+0x1dc>
  438408:	00000000 	nop
  43840c:	8f8281dc 	lw	v0,-32292(gp)
  438410:	00000000 	nop
  438414:	afc20028 	sw	v0,40(s8)
  438418:	10000004 	b	43842c <atoid+0x1e8>
  43841c:	00000000 	nop
  438420:	8f828b14 	lw	v0,-29932(gp)
  438424:	00000000 	nop
  438428:	afc20028 	sw	v0,40(s8)
  43842c:	8fc20028 	lw	v0,40(s8)
  438430:	00000000 	nop
  438434:	afc20024 	sw	v0,36(s8)
		? &af_inet4_info: &af_inet6_info;

	   id->kind = afi->id_addr;
  438438:	8fc20024 	lw	v0,36(s8)
  43843c:	00000000 	nop
  438440:	90430014 	lbu	v1,20(v0)
  438444:	8fc20044 	lw	v0,68(s8)
  438448:	00000000 	nop
  43844c:	ac430000 	sw	v1,0(v0)
	   ugh = ttoaddr(src, 0, afi->af, &id->ip_addr);
  438450:	8fc20044 	lw	v0,68(s8)
  438454:	00000000 	nop
  438458:	24430004 	addiu	v1,v0,4
  43845c:	8fc40040 	lw	a0,64(s8)
  438460:	00002821 	move	a1,zero
  438464:	8fc20024 	lw	v0,36(s8)
  438468:	00000000 	nop
  43846c:	8c460000 	lw	a2,0(v0)
  438470:	00603821 	move	a3,v1
  438474:	8f998320 	lw	t9,-31968(gp)
  438478:	00000000 	nop
  43847c:	0320f809 	jalr	t9
  438480:	00000000 	nop
  438484:	8fdc0018 	lw	gp,24(s8)
  438488:	afc20020 	sw	v0,32(s8)
  43848c:	10000085 	b	4386a4 <atoid+0x460>
  438490:	00000000 	nop
	}
    }
    else
    {
	if (*src == '@')
  438494:	8fc20040 	lw	v0,64(s8)
  438498:	00000000 	nop
  43849c:	80430000 	lb	v1,0(v0)
  4384a0:	24020040 	li	v0,64
  4384a4:	1462006d 	bne	v1,v0,43865c <atoid+0x418>
  4384a8:	00000000 	nop
	{
	    if (*(src+1) == '#')
  4384ac:	8fc20040 	lw	v0,64(s8)
  4384b0:	00000000 	nop
  4384b4:	24420001 	addiu	v0,v0,1
  4384b8:	80430000 	lb	v1,0(v0)
  4384bc:	24020023 	li	v0,35
  4384c0:	14620025 	bne	v1,v0,438558 <atoid+0x314>
  4384c4:	00000000 	nop
	    {
		/* if there is a second specifier (#) on the line
		 * we interprete this as ID_KEY_ID
		 */
		id->kind = ID_KEY_ID;
  4384c8:	2403000b 	li	v1,11
  4384cc:	8fc20044 	lw	v0,68(s8)
  4384d0:	00000000 	nop
  4384d4:	ac430000 	sw	v1,0(v0)
		id->name.ptr = src;
  4384d8:	8fc30040 	lw	v1,64(s8)
  4384dc:	8fc20044 	lw	v0,68(s8)
  4384e0:	00000000 	nop
  4384e4:	ac430020 	sw	v1,32(v0)
		/* discard @~, convert from hex to bin */
		ugh = ttodata(src+2, 0, 16, id->name.ptr, strlen(src), &id->name.len);
  4384e8:	8fc40040 	lw	a0,64(s8)
  4384ec:	8f998188 	lw	t9,-32376(gp)
  4384f0:	00000000 	nop
  4384f4:	0320f809 	jalr	t9
  4384f8:	00000000 	nop
  4384fc:	8fdc0018 	lw	gp,24(s8)
  438500:	00401821 	move	v1,v0
  438504:	8fc20040 	lw	v0,64(s8)
  438508:	00000000 	nop
  43850c:	24440002 	addiu	a0,v0,2
  438510:	afa30010 	sw	v1,16(sp)
  438514:	8fc20044 	lw	v0,68(s8)
  438518:	00000000 	nop
  43851c:	24420024 	addiu	v0,v0,36
  438520:	afa20014 	sw	v0,20(sp)
  438524:	00002821 	move	a1,zero
  438528:	24060010 	li	a2,16
  43852c:	8fc20044 	lw	v0,68(s8)
  438530:	00000000 	nop
  438534:	8c470020 	lw	a3,32(v0)
  438538:	8f9981d4 	lw	t9,-32300(gp)
  43853c:	00000000 	nop
  438540:	0320f809 	jalr	t9
  438544:	00000000 	nop
  438548:	8fdc0018 	lw	gp,24(s8)
  43854c:	afc20020 	sw	v0,32(s8)
  438550:	10000054 	b	4386a4 <atoid+0x460>
  438554:	00000000 	nop
	    }
	    else if (*(src+1) == '~')
  438558:	8fc20040 	lw	v0,64(s8)
  43855c:	00000000 	nop
  438560:	24420001 	addiu	v0,v0,1
  438564:	80430000 	lb	v1,0(v0)
  438568:	2402007e 	li	v0,126
  43856c:	14620025 	bne	v1,v0,438604 <atoid+0x3c0>
  438570:	00000000 	nop
	    {
		/* if there is a second specifier (~) on the line
		* we interprete this as a binary ID_DER_ASN1_DN
		*/
		id->kind = ID_DER_ASN1_DN;
  438574:	24030009 	li	v1,9
  438578:	8fc20044 	lw	v0,68(s8)
  43857c:	00000000 	nop
  438580:	ac430000 	sw	v1,0(v0)
		id->name.ptr = src;
  438584:	8fc30040 	lw	v1,64(s8)
  438588:	8fc20044 	lw	v0,68(s8)
  43858c:	00000000 	nop
  438590:	ac430020 	sw	v1,32(v0)
		/* discard @~, convert from hex to bin */
		ugh = ttodata(src+2, 0, 16, id->name.ptr, strlen(src), &id->name.len);
  438594:	8fc40040 	lw	a0,64(s8)
  438598:	8f998188 	lw	t9,-32376(gp)
  43859c:	00000000 	nop
  4385a0:	0320f809 	jalr	t9
  4385a4:	00000000 	nop
  4385a8:	8fdc0018 	lw	gp,24(s8)
  4385ac:	00401821 	move	v1,v0
  4385b0:	8fc20040 	lw	v0,64(s8)
  4385b4:	00000000 	nop
  4385b8:	24440002 	addiu	a0,v0,2
  4385bc:	afa30010 	sw	v1,16(sp)
  4385c0:	8fc20044 	lw	v0,68(s8)
  4385c4:	00000000 	nop
  4385c8:	24420024 	addiu	v0,v0,36
  4385cc:	afa20014 	sw	v0,20(sp)
  4385d0:	00002821 	move	a1,zero
  4385d4:	24060010 	li	a2,16
  4385d8:	8fc20044 	lw	v0,68(s8)
  4385dc:	00000000 	nop
  4385e0:	8c470020 	lw	a3,32(v0)
  4385e4:	8f9981d4 	lw	t9,-32300(gp)
  4385e8:	00000000 	nop
  4385ec:	0320f809 	jalr	t9
  4385f0:	00000000 	nop
  4385f4:	8fdc0018 	lw	gp,24(s8)
  4385f8:	afc20020 	sw	v0,32(s8)
  4385fc:	10000029 	b	4386a4 <atoid+0x460>
  438600:	00000000 	nop
	    }
	    else
	    {
		id->kind = ID_FQDN;
  438604:	24030002 	li	v1,2
  438608:	8fc20044 	lw	v0,68(s8)
  43860c:	00000000 	nop
  438610:	ac430000 	sw	v1,0(v0)
		id->name.ptr = src+1;	/* discard @ */
  438614:	8fc20040 	lw	v0,64(s8)
  438618:	00000000 	nop
  43861c:	24430001 	addiu	v1,v0,1
  438620:	8fc20044 	lw	v0,68(s8)
  438624:	00000000 	nop
  438628:	ac430020 	sw	v1,32(v0)
		id->name.len = strlen(src)-1;
  43862c:	8fc40040 	lw	a0,64(s8)
  438630:	8f998188 	lw	t9,-32376(gp)
  438634:	00000000 	nop
  438638:	0320f809 	jalr	t9
  43863c:	00000000 	nop
  438640:	8fdc0018 	lw	gp,24(s8)
  438644:	2443ffff 	addiu	v1,v0,-1
  438648:	8fc20044 	lw	v0,68(s8)
  43864c:	00000000 	nop
  438650:	ac430024 	sw	v1,36(v0)
  438654:	10000013 	b	4386a4 <atoid+0x460>
  438658:	00000000 	nop
	    }
	}
	else
	{
	    /* We leave in @, as per DOI 4.6.2.4
	     * (but DNS wants . instead).
	     */
	    id->kind = ID_USER_FQDN;
  43865c:	24030003 	li	v1,3
  438660:	8fc20044 	lw	v0,68(s8)
  438664:	00000000 	nop
  438668:	ac430000 	sw	v1,0(v0)
	    id->name.ptr = src;
  43866c:	8fc30040 	lw	v1,64(s8)
  438670:	8fc20044 	lw	v0,68(s8)
  438674:	00000000 	nop
  438678:	ac430020 	sw	v1,32(v0)
	    id->name.len = strlen(src);
  43867c:	8fc40040 	lw	a0,64(s8)
  438680:	8f998188 	lw	t9,-32376(gp)
  438684:	00000000 	nop
  438688:	0320f809 	jalr	t9
  43868c:	00000000 	nop
  438690:	8fdc0018 	lw	gp,24(s8)
  438694:	00401821 	move	v1,v0
  438698:	8fc20044 	lw	v0,68(s8)
  43869c:	00000000 	nop
  4386a0:	ac430024 	sw	v1,36(v0)
	}
    }
    return ugh;
  4386a4:	8fc20020 	lw	v0,32(s8)
  4386a8:	00000000 	nop
}
  4386ac:	03c0e821 	move	sp,s8
  4386b0:	8fbf003c 	lw	ra,60(sp)
  4386b4:	8fbe0038 	lw	s8,56(sp)
  4386b8:	8fb00030 	lw	s0,48(sp)
  4386bc:	27bd0040 	addiu	sp,sp,64
  4386c0:	03e00008 	jr	ra
  4386c4:	00000000 	nop

004386c8 <keyidtoa>:
  4386c8:	3c1c0fbd 	lui	gp,0xfbd
  4386cc:	279c42a8 	addiu	gp,gp,17064
  4386d0:	0399e021 	addu	gp,gp,t9
  4386d4:	27bdffd0 	addiu	sp,sp,-48
  4386d8:	afbc0010 	sw	gp,16(sp)
  4386dc:	afbf0028 	sw	ra,40(sp)
  4386e0:	afbe0024 	sw	s8,36(sp)
  4386e4:	afbc0020 	sw	gp,32(sp)
  4386e8:	03a0f021 	move	s8,sp
  4386ec:	afc40030 	sw	a0,48(s8)
  4386f0:	afc50034 	sw	a1,52(s8)
  4386f4:	afc60038 	sw	a2,56(s8)
  4386f8:	afc7003c 	sw	a3,60(s8)


/*
 *  Converts a binary key ID into hexadecimal format
 */
int
keyidtoa(char *dst, size_t dstlen, chunk_t keyid)
{
    chunk_t str;
    str.ptr = dst;
  4386fc:	8fc20030 	lw	v0,48(s8)
  438700:	00000000 	nop
  438704:	afc20018 	sw	v0,24(s8)
    str.len = dstlen;
  438708:	8fc20034 	lw	v0,52(s8)
  43870c:	00000000 	nop
  438710:	afc2001c 	sw	v0,28(s8)
    hex_str(keyid, &str);
  438714:	8fc40038 	lw	a0,56(s8)
  438718:	8fc5003c 	lw	a1,60(s8)
  43871c:	27c60018 	addiu	a2,s8,24
  438720:	8f9981ec 	lw	t9,-32276(gp)
  438724:	00000000 	nop
  438728:	0320f809 	jalr	t9
  43872c:	00000000 	nop
  438730:	8fdc0010 	lw	gp,16(s8)
  438734:	00000000 	nop
    return (int)(dstlen - str.len);
  438738:	8fc30034 	lw	v1,52(s8)
  43873c:	8fc2001c 	lw	v0,28(s8)
  438740:	00000000 	nop
  438744:	00621023 	subu	v0,v1,v0
}
  438748:	03c0e821 	move	sp,s8
  43874c:	8fbf0028 	lw	ra,40(sp)
  438750:	8fbe0024 	lw	s8,36(sp)
  438754:	27bd0030 	addiu	sp,sp,48
  438758:	03e00008 	jr	ra
  43875c:	00000000 	nop

00438760 <iptoid>:
  438760:	3c1c0fbd 	lui	gp,0xfbd
  438764:	279c4210 	addiu	gp,gp,16912
  438768:	0399e021 	addu	gp,gp,t9
  43876c:	27bdffc8 	addiu	sp,sp,-56
  438770:	afbc0010 	sw	gp,16(sp)
  438774:	afbf0030 	sw	ra,48(sp)
  438778:	afbe002c 	sw	s8,44(sp)
  43877c:	afbc0028 	sw	gp,40(sp)
  438780:	03a0f021 	move	s8,sp
  438784:	afc40038 	sw	a0,56(s8)
  438788:	afc5003c 	sw	a1,60(s8)

void
iptoid(const ip_address *ip, struct id *id)
{
    *id = empty_id;
  43878c:	8fc2003c 	lw	v0,60(s8)
  438790:	00000000 	nop
  438794:	00402021 	move	a0,v0
  438798:	8f8582d8 	lw	a1,-32040(gp)
  43879c:	24060028 	li	a2,40
  4387a0:	8f998a30 	lw	t9,-30160(gp)
  4387a4:	00000000 	nop
  4387a8:	0320f809 	jalr	t9
  4387ac:	00000000 	nop
  4387b0:	8fdc0010 	lw	gp,16(s8)
  4387b4:	00000000 	nop

    switch (addrtypeof(ip))
  4387b8:	8fc40038 	lw	a0,56(s8)
  4387bc:	8f9985d4 	lw	t9,-31276(gp)
  4387c0:	00000000 	nop
  4387c4:	0320f809 	jalr	t9
  4387c8:	00000000 	nop
  4387cc:	8fdc0010 	lw	gp,16(s8)
  4387d0:	afc20018 	sw	v0,24(s8)
  4387d4:	24020002 	li	v0,2
  4387d8:	8fc30018 	lw	v1,24(s8)
  4387dc:	00000000 	nop
  4387e0:	10620013 	beq	v1,v0,438830 <iptoid+0xd0>
  4387e4:	00000000 	nop
  4387e8:	2402000a 	li	v0,10
  4387ec:	8fc30018 	lw	v1,24(s8)
  4387f0:	00000000 	nop
  4387f4:	10620014 	beq	v1,v0,438848 <iptoid+0xe8>
  4387f8:	00000000 	nop
    {
    case AF_INET:
	id->kind = ID_IPV4_ADDR;
	break;
    case AF_INET6:
	id->kind = ID_IPV6_ADDR;
	break;
    default:
	impossible();
  4387fc:	8f84802c 	lw	a0,-32724(gp)
  438800:	00000000 	nop
  438804:	2484d440 	addiu	a0,a0,-11200
  438808:	8f85802c 	lw	a1,-32724(gp)
  43880c:	00000000 	nop
  438810:	24a5d44c 	addiu	a1,a1,-11188
  438814:	240600a6 	li	a2,166
  438818:	8f998bb8 	lw	t9,-29768(gp)
  43881c:	00000000 	nop
  438820:	0320f809 	jalr	t9
  438824:	00000000 	nop
  438828:	8fdc0010 	lw	gp,16(s8)
  43882c:	00000000 	nop
  438830:	24030001 	li	v1,1
  438834:	8fc2003c 	lw	v0,60(s8)
  438838:	00000000 	nop
  43883c:	ac430000 	sw	v1,0(v0)
  438840:	10000005 	b	438858 <iptoid+0xf8>
  438844:	00000000 	nop
  438848:	24030005 	li	v1,5
  43884c:	8fc2003c 	lw	v0,60(s8)
  438850:	00000000 	nop
  438854:	ac430000 	sw	v1,0(v0)
    }
    id->ip_addr = *ip;
  438858:	8fc4003c 	lw	a0,60(s8)
  43885c:	8fc30038 	lw	v1,56(s8)
  438860:	00000000 	nop
  438864:	8c620000 	lw	v0,0(v1)
  438868:	00000000 	nop
  43886c:	ac820004 	sw	v0,4(a0)
  438870:	8c620004 	lw	v0,4(v1)
  438874:	00000000 	nop
  438878:	ac820008 	sw	v0,8(a0)
  43887c:	8c620008 	lw	v0,8(v1)
  438880:	00000000 	nop
  438884:	ac82000c 	sw	v0,12(a0)
  438888:	8c62000c 	lw	v0,12(v1)
  43888c:	00000000 	nop
  438890:	ac820010 	sw	v0,16(a0)
  438894:	8c620010 	lw	v0,16(v1)
  438898:	00000000 	nop
  43889c:	ac820014 	sw	v0,20(a0)
  4388a0:	8c620014 	lw	v0,20(v1)
  4388a4:	00000000 	nop
  4388a8:	ac820018 	sw	v0,24(a0)
  4388ac:	8c620018 	lw	v0,24(v1)
  4388b0:	00000000 	nop
  4388b4:	ac82001c 	sw	v0,28(a0)
}
  4388b8:	03c0e821 	move	sp,s8
  4388bc:	8fbf0030 	lw	ra,48(sp)
  4388c0:	8fbe002c 	lw	s8,44(sp)
  4388c4:	27bd0038 	addiu	sp,sp,56
  4388c8:	03e00008 	jr	ra
  4388cc:	00000000 	nop

004388d0 <idtoa>:
  4388d0:	3c1c0fbd 	lui	gp,0xfbd
  4388d4:	279c40a0 	addiu	gp,gp,16544
  4388d8:	0399e021 	addu	gp,gp,t9
  4388dc:	27bdffc8 	addiu	sp,sp,-56
  4388e0:	afbc0018 	sw	gp,24(sp)
  4388e4:	afbf0030 	sw	ra,48(sp)
  4388e8:	afbe002c 	sw	s8,44(sp)
  4388ec:	afbc0028 	sw	gp,40(sp)
  4388f0:	03a0f021 	move	s8,sp
  4388f4:	afc40038 	sw	a0,56(s8)
  4388f8:	afc5003c 	sw	a1,60(s8)
  4388fc:	afc60040 	sw	a2,64(s8)

int
idtoa(const struct id *id, char *dst, size_t dstlen)
{
    int n;

    switch (id->kind)
  438900:	8fc20038 	lw	v0,56(s8)
  438904:	00000000 	nop
  438908:	afc20024 	sw	v0,36(s8)
  43890c:	8fc30024 	lw	v1,36(s8)
  438910:	00000000 	nop
  438914:	8c620000 	lw	v0,0(v1)
  438918:	00000000 	nop
  43891c:	2c42000c 	sltiu	v0,v0,12
  438920:	10400070 	beqz	v0,438ae4 <idtoa+0x214>
  438924:	00000000 	nop
  438928:	8fc30024 	lw	v1,36(s8)
  43892c:	00000000 	nop
  438930:	8c620000 	lw	v0,0(v1)
  438934:	00000000 	nop
  438938:	00021080 	sll	v0,v0,0x2
  43893c:	8f81802c 	lw	at,-32724(gp)
  438940:	00000000 	nop
  438944:	2421d480 	addiu	at,at,-11136
  438948:	00221021 	addu	v0,at,v0
  43894c:	8c420000 	lw	v0,0(v0)
  438950:	00000000 	nop
  438954:	005c1021 	addu	v0,v0,gp
  438958:	00400008 	jr	v0
  43895c:	00000000 	nop
    {
    case ID_NONE:
	n = snprintf(dst, dstlen, "(none)");
  438960:	8fc4003c 	lw	a0,60(s8)
  438964:	8fc50040 	lw	a1,64(s8)
  438968:	8f86802c 	lw	a2,-32724(gp)
  43896c:	00000000 	nop
  438970:	24c6d454 	addiu	a2,a2,-11180
  438974:	8f998b38 	lw	t9,-29896(gp)
  438978:	00000000 	nop
  43897c:	0320f809 	jalr	t9
  438980:	00000000 	nop
  438984:	8fdc0018 	lw	gp,24(s8)
  438988:	afc20020 	sw	v0,32(s8)
	break;
  43898c:	10000063 	b	438b1c <idtoa+0x24c>
  438990:	00000000 	nop
    case ID_IPV4_ADDR:
    case ID_IPV6_ADDR:
	n = (int)addrtot(&id->ip_addr, 0, dst, dstlen) - 1;
  438994:	8fc20038 	lw	v0,56(s8)
  438998:	00000000 	nop
  43899c:	24420004 	addiu	v0,v0,4
  4389a0:	00402021 	move	a0,v0
  4389a4:	00002821 	move	a1,zero
  4389a8:	8fc6003c 	lw	a2,60(s8)
  4389ac:	8fc70040 	lw	a3,64(s8)
  4389b0:	8f998b50 	lw	t9,-29872(gp)
  4389b4:	00000000 	nop
  4389b8:	0320f809 	jalr	t9
  4389bc:	00000000 	nop
  4389c0:	8fdc0018 	lw	gp,24(s8)
  4389c4:	2442ffff 	addiu	v0,v0,-1
  4389c8:	afc20020 	sw	v0,32(s8)
	break;
  4389cc:	10000053 	b	438b1c <idtoa+0x24c>
  4389d0:	00000000 	nop
    case ID_FQDN:
	n = snprintf(dst, dstlen, "@%.*s", (int)id->name.len, id->name.ptr);
  4389d4:	8fc20038 	lw	v0,56(s8)
  4389d8:	00000000 	nop
  4389dc:	8c420020 	lw	v0,32(v0)
  4389e0:	00000000 	nop
  4389e4:	afa20010 	sw	v0,16(sp)
  4389e8:	8fc4003c 	lw	a0,60(s8)
  4389ec:	8fc50040 	lw	a1,64(s8)
  4389f0:	8f86802c 	lw	a2,-32724(gp)
  4389f4:	00000000 	nop
  4389f8:	24c6d45c 	addiu	a2,a2,-11172
  4389fc:	8fc20038 	lw	v0,56(s8)
  438a00:	00000000 	nop
  438a04:	8c470024 	lw	a3,36(v0)
  438a08:	8f998b38 	lw	t9,-29896(gp)
  438a0c:	00000000 	nop
  438a10:	0320f809 	jalr	t9
  438a14:	00000000 	nop
  438a18:	8fdc0018 	lw	gp,24(s8)
  438a1c:	afc20020 	sw	v0,32(s8)
	break;
  438a20:	1000003e 	b	438b1c <idtoa+0x24c>
  438a24:	00000000 	nop
    case ID_USER_FQDN:
	n = snprintf(dst, dstlen, "%.*s", (int)id->name.len, id->name.ptr);
  438a28:	8fc20038 	lw	v0,56(s8)
  438a2c:	00000000 	nop
  438a30:	8c420020 	lw	v0,32(v0)
  438a34:	00000000 	nop
  438a38:	afa20010 	sw	v0,16(sp)
  438a3c:	8fc4003c 	lw	a0,60(s8)
  438a40:	8fc50040 	lw	a1,64(s8)
  438a44:	8f86802c 	lw	a2,-32724(gp)
  438a48:	00000000 	nop
  438a4c:	24c6d464 	addiu	a2,a2,-11164
  438a50:	8fc20038 	lw	v0,56(s8)
  438a54:	00000000 	nop
  438a58:	8c470024 	lw	a3,36(v0)
  438a5c:	8f998b38 	lw	t9,-29896(gp)
  438a60:	00000000 	nop
  438a64:	0320f809 	jalr	t9
  438a68:	00000000 	nop
  438a6c:	8fdc0018 	lw	gp,24(s8)
  438a70:	afc20020 	sw	v0,32(s8)
	break;
  438a74:	10000029 	b	438b1c <idtoa+0x24c>
  438a78:	00000000 	nop
    case ID_DER_ASN1_DN:
	n = dntoa(dst, dstlen, id->name);
  438a7c:	8fc20038 	lw	v0,56(s8)
  438a80:	8fc4003c 	lw	a0,60(s8)
  438a84:	8fc50040 	lw	a1,64(s8)
  438a88:	8c460020 	lw	a2,32(v0)
  438a8c:	8c470024 	lw	a3,36(v0)
  438a90:	8f9982bc 	lw	t9,-32068(gp)
  438a94:	00000000 	nop
  438a98:	0320f809 	jalr	t9
  438a9c:	00000000 	nop
  438aa0:	8fdc0018 	lw	gp,24(s8)
  438aa4:	afc20020 	sw	v0,32(s8)
	break;
  438aa8:	1000001c 	b	438b1c <idtoa+0x24c>
  438aac:	00000000 	nop
    case ID_KEY_ID:
	n = keyidtoa(dst, dstlen, id->name);
  438ab0:	8fc20038 	lw	v0,56(s8)
  438ab4:	8fc4003c 	lw	a0,60(s8)
  438ab8:	8fc50040 	lw	a1,64(s8)
  438abc:	8c460020 	lw	a2,32(v0)
  438ac0:	8c470024 	lw	a3,36(v0)
  438ac4:	8f9985a8 	lw	t9,-31320(gp)
  438ac8:	00000000 	nop
  438acc:	0320f809 	jalr	t9
  438ad0:	00000000 	nop
  438ad4:	8fdc0018 	lw	gp,24(s8)
  438ad8:	afc20020 	sw	v0,32(s8)
	break;
  438adc:	1000000f 	b	438b1c <idtoa+0x24c>
  438ae0:	00000000 	nop
    default:
	n = snprintf(dst, dstlen, "unknown id kind %d", id->kind);
  438ae4:	8fc4003c 	lw	a0,60(s8)
  438ae8:	8fc50040 	lw	a1,64(s8)
  438aec:	8f86802c 	lw	a2,-32724(gp)
  438af0:	00000000 	nop
  438af4:	24c6d46c 	addiu	a2,a2,-11156
  438af8:	8fc20038 	lw	v0,56(s8)
  438afc:	00000000 	nop
  438b00:	8c470000 	lw	a3,0(v0)
  438b04:	8f998b38 	lw	t9,-29896(gp)
  438b08:	00000000 	nop
  438b0c:	0320f809 	jalr	t9
  438b10:	00000000 	nop
  438b14:	8fdc0018 	lw	gp,24(s8)
  438b18:	afc20020 	sw	v0,32(s8)
	break;
    }

    /* "Sanitize" string so that log isn't endangered:
     * replace unprintable characters with '?'.
     */
    if (n > 0)
  438b1c:	8fc20020 	lw	v0,32(s8)
  438b20:	00000000 	nop
  438b24:	1840001f 	blez	v0,438ba4 <idtoa+0x2d4>
  438b28:	00000000 	nop
    {
	for ( ; *dst != '\0'; dst++)
  438b2c:	8fc2003c 	lw	v0,60(s8)
  438b30:	00000000 	nop
  438b34:	80420000 	lb	v0,0(v0)
  438b38:	00000000 	nop
  438b3c:	14400003 	bnez	v0,438b4c <idtoa+0x27c>
  438b40:	00000000 	nop
  438b44:	10000017 	b	438ba4 <idtoa+0x2d4>
  438b48:	00000000 	nop
	    if (!isprint(*dst))
  438b4c:	8fc2003c 	lw	v0,60(s8)
  438b50:	00000000 	nop
  438b54:	80420000 	lb	v0,0(v0)
  438b58:	00000000 	nop
  438b5c:	00402021 	move	a0,v0
  438b60:	8f99846c 	lw	t9,-31636(gp)
  438b64:	00000000 	nop
  438b68:	0320f809 	jalr	t9
  438b6c:	00000000 	nop
  438b70:	8fdc0018 	lw	gp,24(s8)
  438b74:	14400005 	bnez	v0,438b8c <idtoa+0x2bc>
  438b78:	00000000 	nop
		*dst = '?';
  438b7c:	2403003f 	li	v1,63
  438b80:	8fc2003c 	lw	v0,60(s8)
  438b84:	00000000 	nop
  438b88:	a0430000 	sb	v1,0(v0)
  438b8c:	8fc2003c 	lw	v0,60(s8)
  438b90:	00000000 	nop
  438b94:	24420001 	addiu	v0,v0,1
  438b98:	afc2003c 	sw	v0,60(s8)
  438b9c:	1000ffe3 	b	438b2c <idtoa+0x25c>
  438ba0:	00000000 	nop
    }

    return n;
  438ba4:	8fc20020 	lw	v0,32(s8)
  438ba8:	00000000 	nop
}
  438bac:	03c0e821 	move	sp,s8
  438bb0:	8fbf0030 	lw	ra,48(sp)
  438bb4:	8fbe002c 	lw	s8,44(sp)
  438bb8:	27bd0038 	addiu	sp,sp,56
  438bbc:	03e00008 	jr	ra
  438bc0:	00000000 	nop

00438bc4 <escape_metachar>:
  438bc4:	3c1c0fbd 	lui	gp,0xfbd
  438bc8:	279c3dac 	addiu	gp,gp,15788
  438bcc:	0399e021 	addu	gp,gp,t9
  438bd0:	27bdffd0 	addiu	sp,sp,-48
  438bd4:	afbc0010 	sw	gp,16(sp)
  438bd8:	afbf0028 	sw	ra,40(sp)
  438bdc:	afbe0024 	sw	s8,36(sp)
  438be0:	afbc0020 	sw	gp,32(sp)
  438be4:	03a0f021 	move	s8,sp
  438be8:	afc40030 	sw	a0,48(s8)
  438bec:	afc50034 	sw	a1,52(s8)
  438bf0:	afc60038 	sw	a2,56(s8)

/* Replace the shell metacharacters ', \, ", `, and $ in a character string
 * by escape sequences consisting of their octal values
 */
void
escape_metachar(const char *src, char *dst, size_t dstlen)
{
    while (*src != '\0' && dstlen > 4)
  438bf4:	8fc20030 	lw	v0,48(s8)
  438bf8:	00000000 	nop
  438bfc:	80420000 	lb	v0,0(v0)
  438c00:	00000000 	nop
  438c04:	10400070 	beqz	v0,438dc8 <escape_metachar+0x204>
  438c08:	00000000 	nop
  438c0c:	8fc20038 	lw	v0,56(s8)
  438c10:	00000000 	nop
  438c14:	2c420005 	sltiu	v0,v0,5
  438c18:	10400003 	beqz	v0,438c28 <escape_metachar+0x64>
  438c1c:	00000000 	nop
  438c20:	10000069 	b	438dc8 <escape_metachar+0x204>
  438c24:	00000000 	nop
    {
	switch (*src)
  438c28:	8fc20030 	lw	v0,48(s8)
  438c2c:	00000000 	nop
  438c30:	80420000 	lb	v0,0(v0)
  438c34:	00000000 	nop
  438c38:	afc2001c 	sw	v0,28(s8)
  438c3c:	24020027 	li	v0,39
  438c40:	8fc3001c 	lw	v1,28(s8)
  438c44:	00000000 	nop
  438c48:	1062001e 	beq	v1,v0,438cc4 <escape_metachar+0x100>
  438c4c:	00000000 	nop
  438c50:	8fc3001c 	lw	v1,28(s8)
  438c54:	00000000 	nop
  438c58:	28620028 	slti	v0,v1,40
  438c5c:	1040000d 	beqz	v0,438c94 <escape_metachar+0xd0>
  438c60:	00000000 	nop
  438c64:	24020022 	li	v0,34
  438c68:	8fc3001c 	lw	v1,28(s8)
  438c6c:	00000000 	nop
  438c70:	10620014 	beq	v1,v0,438cc4 <escape_metachar+0x100>
  438c74:	00000000 	nop
  438c78:	24020024 	li	v0,36
  438c7c:	8fc3001c 	lw	v1,28(s8)
  438c80:	00000000 	nop
  438c84:	1062000f 	beq	v1,v0,438cc4 <escape_metachar+0x100>
  438c88:	00000000 	nop
  438c8c:	10000039 	b	438d74 <escape_metachar+0x1b0>
  438c90:	00000000 	nop
  438c94:	2402005c 	li	v0,92
  438c98:	8fc3001c 	lw	v1,28(s8)
  438c9c:	00000000 	nop
  438ca0:	10620008 	beq	v1,v0,438cc4 <escape_metachar+0x100>
  438ca4:	00000000 	nop
  438ca8:	24020060 	li	v0,96
  438cac:	8fc3001c 	lw	v1,28(s8)
  438cb0:	00000000 	nop
  438cb4:	10620003 	beq	v1,v0,438cc4 <escape_metachar+0x100>
  438cb8:	00000000 	nop
  438cbc:	1000002d 	b	438d74 <escape_metachar+0x1b0>
  438cc0:	00000000 	nop
	{
	case '\'':
	case '\\':
	case '"':
	case '`':
	case '$':
	    sprintf(dst,"\\%s%o", (*src < 64)?"0":"", *src);
  438cc4:	8fc20030 	lw	v0,48(s8)
  438cc8:	00000000 	nop
  438ccc:	80420000 	lb	v0,0(v0)
  438cd0:	00000000 	nop
  438cd4:	28420040 	slti	v0,v0,64
  438cd8:	10400008 	beqz	v0,438cfc <escape_metachar+0x138>
  438cdc:	00000000 	nop
  438ce0:	8f82802c 	lw	v0,-32724(gp)
  438ce4:	00000000 	nop
  438ce8:	2442d4b0 	addiu	v0,v0,-11088
  438cec:	00000000 	nop
  438cf0:	afc20018 	sw	v0,24(s8)
  438cf4:	10000006 	b	438d10 <escape_metachar+0x14c>
  438cf8:	00000000 	nop
  438cfc:	8f83802c 	lw	v1,-32724(gp)
  438d00:	00000000 	nop
  438d04:	2463d4b4 	addiu	v1,v1,-11084
  438d08:	00000000 	nop
  438d0c:	afc30018 	sw	v1,24(s8)
  438d10:	8fc20030 	lw	v0,48(s8)
  438d14:	00000000 	nop
  438d18:	80420000 	lb	v0,0(v0)
  438d1c:	8fc40034 	lw	a0,52(s8)
  438d20:	8f85802c 	lw	a1,-32724(gp)
  438d24:	00000000 	nop
  438d28:	24a5d4b8 	addiu	a1,a1,-11080
  438d2c:	8fc60018 	lw	a2,24(s8)
  438d30:	00403821 	move	a3,v0
  438d34:	8f9983d0 	lw	t9,-31792(gp)
  438d38:	00000000 	nop
  438d3c:	0320f809 	jalr	t9
  438d40:	00000000 	nop
  438d44:	8fdc0010 	lw	gp,16(s8)
  438d48:	00000000 	nop
	    dst += 4;
  438d4c:	8fc20034 	lw	v0,52(s8)
  438d50:	00000000 	nop
  438d54:	24420004 	addiu	v0,v0,4
  438d58:	afc20034 	sw	v0,52(s8)
	    dstlen -= 4;
  438d5c:	8fc20038 	lw	v0,56(s8)
  438d60:	00000000 	nop
  438d64:	2442fffc 	addiu	v0,v0,-4
  438d68:	afc20038 	sw	v0,56(s8)
	    break;
  438d6c:	10000010 	b	438db0 <escape_metachar+0x1ec>
  438d70:	00000000 	nop
	default:
	    *dst++ = *src;
  438d74:	27c50034 	addiu	a1,s8,52
  438d78:	8ca30000 	lw	v1,0(a1)
  438d7c:	00000000 	nop
  438d80:	00602021 	move	a0,v1
  438d84:	8fc20030 	lw	v0,48(s8)
  438d88:	00000000 	nop
  438d8c:	90420000 	lbu	v0,0(v0)
  438d90:	00000000 	nop
  438d94:	a0820000 	sb	v0,0(a0)
  438d98:	24630001 	addiu	v1,v1,1
  438d9c:	aca30000 	sw	v1,0(a1)
	    dstlen--;
  438da0:	8fc20038 	lw	v0,56(s8)
  438da4:	00000000 	nop
  438da8:	2442ffff 	addiu	v0,v0,-1
  438dac:	afc20038 	sw	v0,56(s8)
	}
	src++;
  438db0:	8fc20030 	lw	v0,48(s8)
  438db4:	00000000 	nop
  438db8:	24420001 	addiu	v0,v0,1
  438dbc:	afc20030 	sw	v0,48(s8)
  438dc0:	1000ff8c 	b	438bf4 <escape_metachar+0x30>
  438dc4:	00000000 	nop
    }
    *dst = '\0';
  438dc8:	8fc20034 	lw	v0,52(s8)
  438dcc:	00000000 	nop
  438dd0:	a0400000 	sb	zero,0(v0)
}
  438dd4:	03c0e821 	move	sp,s8
  438dd8:	8fbf0028 	lw	ra,40(sp)
  438ddc:	8fbe0024 	lw	s8,36(sp)
  438de0:	27bd0030 	addiu	sp,sp,48
  438de4:	03e00008 	jr	ra
  438de8:	00000000 	nop

00438dec <unshare_id_content>:
  438dec:	3c1c0fbd 	lui	gp,0xfbd
  438df0:	279c3b84 	addiu	gp,gp,15236
  438df4:	0399e021 	addu	gp,gp,t9
  438df8:	27bdffd0 	addiu	sp,sp,-48
  438dfc:	afbc0010 	sw	gp,16(sp)
  438e00:	afbf002c 	sw	ra,44(sp)
  438e04:	afbe0028 	sw	s8,40(sp)
  438e08:	afbc0024 	sw	gp,36(sp)
  438e0c:	afb00020 	sw	s0,32(sp)
  438e10:	03a0f021 	move	s8,sp
  438e14:	afc40030 	sw	a0,48(s8)

/* Make private copy of string in struct id.
 * This is needed if the result of atoid is to be kept.
 */
void
unshare_id_content(struct id *id)
{
    switch (id->kind)
  438e18:	8fc20030 	lw	v0,48(s8)
  438e1c:	00000000 	nop
  438e20:	afc20018 	sw	v0,24(s8)
  438e24:	8fc30018 	lw	v1,24(s8)
  438e28:	00000000 	nop
  438e2c:	8c620000 	lw	v0,0(v1)
  438e30:	00000000 	nop
  438e34:	2c42000c 	sltiu	v0,v0,12
  438e38:	10400021 	beqz	v0,438ec0 <unshare_id_content+0xd4>
  438e3c:	00000000 	nop
  438e40:	8fc30018 	lw	v1,24(s8)
  438e44:	00000000 	nop
  438e48:	8c620000 	lw	v0,0(v1)
  438e4c:	00000000 	nop
  438e50:	00021080 	sll	v0,v0,0x2
  438e54:	8f81802c 	lw	at,-32724(gp)
  438e58:	00000000 	nop
  438e5c:	2421d4d0 	addiu	at,at,-11056
  438e60:	00221021 	addu	v0,at,v0
  438e64:	8c420000 	lw	v0,0(v0)
  438e68:	00000000 	nop
  438e6c:	005c1021 	addu	v0,v0,gp
  438e70:	00400008 	jr	v0
  438e74:	00000000 	nop
    {
    case ID_FQDN:
    case ID_USER_FQDN:
    case ID_DER_ASN1_DN:
    case ID_KEY_ID:
	id->name.ptr = clone_bytes(id->name.ptr, id->name.len, "keep id name");
  438e78:	8fd00030 	lw	s0,48(s8)
  438e7c:	8fc20030 	lw	v0,48(s8)
  438e80:	00000000 	nop
  438e84:	8c440020 	lw	a0,32(v0)
  438e88:	8fc20030 	lw	v0,48(s8)
  438e8c:	00000000 	nop
  438e90:	8c450024 	lw	a1,36(v0)
  438e94:	8f86802c 	lw	a2,-32724(gp)
  438e98:	00000000 	nop
  438e9c:	24c6d4c0 	addiu	a2,a2,-11072
  438ea0:	8f998c04 	lw	t9,-29692(gp)
  438ea4:	00000000 	nop
  438ea8:	0320f809 	jalr	t9
  438eac:	00000000 	nop
  438eb0:	8fdc0010 	lw	gp,16(s8)
  438eb4:	ae020020 	sw	v0,32(s0)
	break;
  438eb8:	1000000e 	b	438ef4 <unshare_id_content+0x108>
  438ebc:	00000000 	nop
    case ID_NONE:
    case ID_IPV4_ADDR:
    case ID_IPV6_ADDR:
	break;
    default:
	impossible();
  438ec0:	8f84802c 	lw	a0,-32724(gp)
  438ec4:	00000000 	nop
  438ec8:	2484d440 	addiu	a0,a0,-11200
  438ecc:	8f85802c 	lw	a1,-32724(gp)
  438ed0:	00000000 	nop
  438ed4:	24a5d44c 	addiu	a1,a1,-11188
  438ed8:	24060106 	li	a2,262
  438edc:	8f998bb8 	lw	t9,-29768(gp)
  438ee0:	00000000 	nop
  438ee4:	0320f809 	jalr	t9
  438ee8:	00000000 	nop
  438eec:	8fdc0010 	lw	gp,16(s8)
  438ef0:	00000000 	nop
    }
}
  438ef4:	03c0e821 	move	sp,s8
  438ef8:	8fbf002c 	lw	ra,44(sp)
  438efc:	8fbe0028 	lw	s8,40(sp)
  438f00:	8fb00020 	lw	s0,32(sp)
  438f04:	27bd0030 	addiu	sp,sp,48
  438f08:	03e00008 	jr	ra
  438f0c:	00000000 	nop

00438f10 <free_id_content>:
  438f10:	3c1c0fbd 	lui	gp,0xfbd
  438f14:	279c3a60 	addiu	gp,gp,14944
  438f18:	0399e021 	addu	gp,gp,t9
  438f1c:	27bdffd0 	addiu	sp,sp,-48
  438f20:	afbc0010 	sw	gp,16(sp)
  438f24:	afbf0028 	sw	ra,40(sp)
  438f28:	afbe0024 	sw	s8,36(sp)
  438f2c:	afbc0020 	sw	gp,32(sp)
  438f30:	03a0f021 	move	s8,sp
  438f34:	afc40030 	sw	a0,48(s8)

void
free_id_content(struct id *id)
{
    switch (id->kind)
  438f38:	8fc20030 	lw	v0,48(s8)
  438f3c:	00000000 	nop
  438f40:	afc20018 	sw	v0,24(s8)
  438f44:	8fc30018 	lw	v1,24(s8)
  438f48:	00000000 	nop
  438f4c:	8c620000 	lw	v0,0(v1)
  438f50:	00000000 	nop
  438f54:	2c42000c 	sltiu	v0,v0,12
  438f58:	1040001a 	beqz	v0,438fc4 <free_id_content+0xb4>
  438f5c:	00000000 	nop
  438f60:	8fc30018 	lw	v1,24(s8)
  438f64:	00000000 	nop
  438f68:	8c620000 	lw	v0,0(v1)
  438f6c:	00000000 	nop
  438f70:	00021080 	sll	v0,v0,0x2
  438f74:	8f81802c 	lw	at,-32724(gp)
  438f78:	00000000 	nop
  438f7c:	2421d500 	addiu	at,at,-11008
  438f80:	00221021 	addu	v0,at,v0
  438f84:	8c420000 	lw	v0,0(v0)
  438f88:	00000000 	nop
  438f8c:	005c1021 	addu	v0,v0,gp
  438f90:	00400008 	jr	v0
  438f94:	00000000 	nop
    {
    case ID_FQDN:
    case ID_USER_FQDN:
    case ID_DER_ASN1_DN:
    case ID_KEY_ID:
	pfree(id->name.ptr);
  438f98:	8fc20030 	lw	v0,48(s8)
  438f9c:	00000000 	nop
  438fa0:	8c440020 	lw	a0,32(v0)
  438fa4:	8f998094 	lw	t9,-32620(gp)
  438fa8:	00000000 	nop
  438fac:	0320f809 	jalr	t9
  438fb0:	00000000 	nop
  438fb4:	8fdc0010 	lw	gp,16(s8)
  438fb8:	00000000 	nop
	break;
  438fbc:	1000000e 	b	438ff8 <free_id_content+0xe8>
  438fc0:	00000000 	nop
    case ID_NONE:
    case ID_IPV4_ADDR:
    case ID_IPV6_ADDR:
	break;
    default:
	impossible();
  438fc4:	8f84802c 	lw	a0,-32724(gp)
  438fc8:	00000000 	nop
  438fcc:	2484d440 	addiu	a0,a0,-11200
  438fd0:	8f85802c 	lw	a1,-32724(gp)
  438fd4:	00000000 	nop
  438fd8:	24a5d44c 	addiu	a1,a1,-11188
  438fdc:	2406011a 	li	a2,282
  438fe0:	8f998bb8 	lw	t9,-29768(gp)
  438fe4:	00000000 	nop
  438fe8:	0320f809 	jalr	t9
  438fec:	00000000 	nop
  438ff0:	8fdc0010 	lw	gp,16(s8)
  438ff4:	00000000 	nop
    }
}
  438ff8:	03c0e821 	move	sp,s8
  438ffc:	8fbf0028 	lw	ra,40(sp)
  439000:	8fbe0024 	lw	s8,36(sp)
  439004:	27bd0030 	addiu	sp,sp,48
  439008:	03e00008 	jr	ra
  43900c:	00000000 	nop

00439010 <same_id>:
  439010:	3c1c0fbd 	lui	gp,0xfbd
  439014:	279c3960 	addiu	gp,gp,14688
  439018:	0399e021 	addu	gp,gp,t9
  43901c:	27bdffc8 	addiu	sp,sp,-56
  439020:	afbc0010 	sw	gp,16(sp)
  439024:	afbf0030 	sw	ra,48(sp)
  439028:	afbe002c 	sw	s8,44(sp)
  43902c:	afbc0028 	sw	gp,40(sp)
  439030:	03a0f021 	move	s8,sp
  439034:	afc40038 	sw	a0,56(s8)
  439038:	afc5003c 	sw	a1,60(s8)

/* compare two struct id values */
bool
same_id(const struct id *a, const struct id *b)
{
    if (a->kind != b->kind)
  43903c:	8fc20038 	lw	v0,56(s8)
  439040:	00000000 	nop
  439044:	8c430000 	lw	v1,0(v0)
  439048:	8fc2003c 	lw	v0,60(s8)
  43904c:	00000000 	nop
  439050:	8c420000 	lw	v0,0(v0)
  439054:	00000000 	nop
  439058:	10620004 	beq	v1,v0,43906c <same_id+0x5c>
  43905c:	00000000 	nop
	return FALSE;
  439060:	00001021 	move	v0,zero
  439064:	10000083 	b	439274 <same_id+0x264>
  439068:	00000000 	nop
    switch (a->kind)
  43906c:	8fc20038 	lw	v0,56(s8)
  439070:	00000000 	nop
  439074:	afc20020 	sw	v0,32(s8)
  439078:	8fc30020 	lw	v1,32(s8)
  43907c:	00000000 	nop
  439080:	8c620000 	lw	v0,0(v1)
  439084:	00000000 	nop
  439088:	2c42000c 	sltiu	v0,v0,12
  43908c:	1040006c 	beqz	v0,439240 <same_id+0x230>
  439090:	00000000 	nop
  439094:	8fc30020 	lw	v1,32(s8)
  439098:	00000000 	nop
  43909c:	8c620000 	lw	v0,0(v1)
  4390a0:	00000000 	nop
  4390a4:	00021080 	sll	v0,v0,0x2
  4390a8:	8f81802c 	lw	at,-32724(gp)
  4390ac:	00000000 	nop
  4390b0:	2421d530 	addiu	at,at,-10960
  4390b4:	00221021 	addu	v0,at,v0
  4390b8:	8c420000 	lw	v0,0(v0)
  4390bc:	00000000 	nop
  4390c0:	005c1021 	addu	v0,v0,gp
  4390c4:	00400008 	jr	v0
  4390c8:	00000000 	nop
    {
    case ID_NONE:
	return TRUE;	/* kind of vacuous */
  4390cc:	24020001 	li	v0,1
  4390d0:	10000068 	b	439274 <same_id+0x264>
  4390d4:	00000000 	nop

    case ID_IPV4_ADDR:
    case ID_IPV6_ADDR:
	return sameaddr(&a->ip_addr, &b->ip_addr);
  4390d8:	8fc20038 	lw	v0,56(s8)
  4390dc:	00000000 	nop
  4390e0:	24430004 	addiu	v1,v0,4
  4390e4:	8fc2003c 	lw	v0,60(s8)
  4390e8:	00000000 	nop
  4390ec:	24420004 	addiu	v0,v0,4
  4390f0:	00602021 	move	a0,v1
  4390f4:	00402821 	move	a1,v0
  4390f8:	8f998928 	lw	t9,-30424(gp)
  4390fc:	00000000 	nop
  439100:	0320f809 	jalr	t9
  439104:	00000000 	nop
  439108:	8fdc0010 	lw	gp,16(s8)
  43910c:	10000059 	b	439274 <same_id+0x264>
  439110:	00000000 	nop

    case ID_FQDN:
    case ID_USER_FQDN:
	/* assumption: case should be ignored */
	return a->name.len == b->name.len
  439114:	afc00018 	sw	zero,24(s8)
  439118:	8fc20038 	lw	v0,56(s8)
  43911c:	00000000 	nop
  439120:	8c430024 	lw	v1,36(v0)
  439124:	8fc2003c 	lw	v0,60(s8)
  439128:	00000000 	nop
  43912c:	8c420024 	lw	v0,36(v0)
  439130:	00000000 	nop
  439134:	14620013 	bne	v1,v0,439184 <same_id+0x174>
  439138:	00000000 	nop
  43913c:	8fc20038 	lw	v0,56(s8)
  439140:	00000000 	nop
  439144:	8c440020 	lw	a0,32(v0)
  439148:	8fc2003c 	lw	v0,60(s8)
  43914c:	00000000 	nop
  439150:	8c450020 	lw	a1,32(v0)
  439154:	8fc20038 	lw	v0,56(s8)
  439158:	00000000 	nop
  43915c:	8c460024 	lw	a2,36(v0)
  439160:	8f9988a8 	lw	t9,-30552(gp)
  439164:	00000000 	nop
  439168:	0320f809 	jalr	t9
  43916c:	00000000 	nop
  439170:	8fdc0010 	lw	gp,16(s8)
  439174:	14400003 	bnez	v0,439184 <same_id+0x174>
  439178:	00000000 	nop
  43917c:	24020001 	li	v0,1
  439180:	afc20018 	sw	v0,24(s8)
  439184:	8fc20018 	lw	v0,24(s8)
  439188:	1000003a 	b	439274 <same_id+0x264>
  43918c:	00000000 	nop
	    && strncasecmp(a->name.ptr, b->name.ptr, a->name.len) == 0;

    case ID_DER_ASN1_DN:
	return same_dn(a->name, b->name);
  439190:	8fc20038 	lw	v0,56(s8)
  439194:	8fc3003c 	lw	v1,60(s8)
  439198:	8c440020 	lw	a0,32(v0)
  43919c:	8c450024 	lw	a1,36(v0)
  4391a0:	8c660020 	lw	a2,32(v1)
  4391a4:	8c670024 	lw	a3,36(v1)
  4391a8:	8f998604 	lw	t9,-31228(gp)
  4391ac:	00000000 	nop
  4391b0:	0320f809 	jalr	t9
  4391b4:	00000000 	nop
  4391b8:	8fdc0010 	lw	gp,16(s8)
  4391bc:	1000002d 	b	439274 <same_id+0x264>
  4391c0:	00000000 	nop

    case ID_KEY_ID:
	return a->name.len == b->name.len
  4391c4:	afc0001c 	sw	zero,28(s8)
  4391c8:	8fc20038 	lw	v0,56(s8)
  4391cc:	00000000 	nop
  4391d0:	8c430024 	lw	v1,36(v0)
  4391d4:	8fc2003c 	lw	v0,60(s8)
  4391d8:	00000000 	nop
  4391dc:	8c420024 	lw	v0,36(v0)
  4391e0:	00000000 	nop
  4391e4:	14620013 	bne	v1,v0,439234 <same_id+0x224>
  4391e8:	00000000 	nop
  4391ec:	8fc20038 	lw	v0,56(s8)
  4391f0:	00000000 	nop
  4391f4:	8c440020 	lw	a0,32(v0)
  4391f8:	8fc2003c 	lw	v0,60(s8)
  4391fc:	00000000 	nop
  439200:	8c450020 	lw	a1,32(v0)
  439204:	8fc20038 	lw	v0,56(s8)
  439208:	00000000 	nop
  43920c:	8c460024 	lw	a2,36(v0)
  439210:	8f9985c8 	lw	t9,-31288(gp)
  439214:	00000000 	nop
  439218:	0320f809 	jalr	t9
  43921c:	00000000 	nop
  439220:	8fdc0010 	lw	gp,16(s8)
  439224:	14400003 	bnez	v0,439234 <same_id+0x224>
  439228:	00000000 	nop
  43922c:	24030001 	li	v1,1
  439230:	afc3001c 	sw	v1,28(s8)
  439234:	8fc2001c 	lw	v0,28(s8)
  439238:	1000000e 	b	439274 <same_id+0x264>
  43923c:	00000000 	nop
	    && memcmp(a->name.ptr, b->name.ptr, a->name.len) == 0;

    default:
	impossible();
  439240:	8f84802c 	lw	a0,-32724(gp)
  439244:	00000000 	nop
  439248:	2484d440 	addiu	a0,a0,-11200
  43924c:	8f85802c 	lw	a1,-32724(gp)
  439250:	00000000 	nop
  439254:	24a5d44c 	addiu	a1,a1,-11188
  439258:	2406013b 	li	a2,315
  43925c:	8f998bb8 	lw	t9,-29768(gp)
  439260:	00000000 	nop
  439264:	0320f809 	jalr	t9
  439268:	00000000 	nop
  43926c:	8fdc0010 	lw	gp,16(s8)
  439270:	00000000 	nop
    }
}
  439274:	03c0e821 	move	sp,s8
  439278:	8fbf0030 	lw	ra,48(sp)
  43927c:	8fbe002c 	lw	s8,44(sp)
  439280:	27bd0038 	addiu	sp,sp,56
  439284:	03e00008 	jr	ra
  439288:	00000000 	nop

0043928c <match_id>:
  43928c:	3c1c0fbd 	lui	gp,0xfbd
  439290:	279c36e4 	addiu	gp,gp,14052
  439294:	0399e021 	addu	gp,gp,t9
  439298:	27bdffd0 	addiu	sp,sp,-48
  43929c:	afbc0018 	sw	gp,24(sp)
  4392a0:	afbf0028 	sw	ra,40(sp)
  4392a4:	afbe0024 	sw	s8,36(sp)
  4392a8:	afbc0020 	sw	gp,32(sp)
  4392ac:	03a0f021 	move	s8,sp
  4392b0:	afc40030 	sw	a0,48(s8)
  4392b4:	afc50034 	sw	a1,52(s8)
  4392b8:	afc60038 	sw	a2,56(s8)

#define MAX_WILDCARDS	99

/* compare two struct id values, DNs can contain wildcards */
bool
match_id(const struct id *a, const struct id *b, int *wildcards)
{
    if (b->kind == ID_NONE)
  4392bc:	8fc20034 	lw	v0,52(s8)
  4392c0:	00000000 	nop
  4392c4:	8c420000 	lw	v0,0(v0)
  4392c8:	00000000 	nop
  4392cc:	14400008 	bnez	v0,4392f0 <match_id+0x64>
  4392d0:	00000000 	nop
    {
	*wildcards = MAX_WILDCARDS;
  4392d4:	24030063 	li	v1,99
  4392d8:	8fc20038 	lw	v0,56(s8)
  4392dc:	00000000 	nop
  4392e0:	ac430000 	sw	v1,0(v0)
	return TRUE;
  4392e4:	24020001 	li	v0,1
  4392e8:	1000002e 	b	4393a4 <match_id+0x118>
  4392ec:	00000000 	nop
    }
    if (a->kind != b->kind)
  4392f0:	8fc20030 	lw	v0,48(s8)
  4392f4:	00000000 	nop
  4392f8:	8c430000 	lw	v1,0(v0)
  4392fc:	8fc20034 	lw	v0,52(s8)
  439300:	00000000 	nop
  439304:	8c420000 	lw	v0,0(v0)
  439308:	00000000 	nop
  43930c:	10620004 	beq	v1,v0,439320 <match_id+0x94>
  439310:	00000000 	nop
	return FALSE;
  439314:	00001021 	move	v0,zero
  439318:	10000022 	b	4393a4 <match_id+0x118>
  43931c:	00000000 	nop
    if (a->kind == ID_DER_ASN1_DN)
  439320:	8fc20030 	lw	v0,48(s8)
  439324:	00000000 	nop
  439328:	8c430000 	lw	v1,0(v0)
  43932c:	24020009 	li	v0,9
  439330:	14620011 	bne	v1,v0,439378 <match_id+0xec>
  439334:	00000000 	nop
	return match_dn(a->name, b->name, wildcards);
  439338:	8fc30030 	lw	v1,48(s8)
  43933c:	8fc70034 	lw	a3,52(s8)
  439340:	8fc20038 	lw	v0,56(s8)
  439344:	00000000 	nop
  439348:	afa20010 	sw	v0,16(sp)
  43934c:	8c640020 	lw	a0,32(v1)
  439350:	8c650024 	lw	a1,36(v1)
  439354:	8ce60020 	lw	a2,32(a3)
  439358:	8ce70024 	lw	a3,36(a3)
  43935c:	8f998758 	lw	t9,-30888(gp)
  439360:	00000000 	nop
  439364:	0320f809 	jalr	t9
  439368:	00000000 	nop
  43936c:	8fdc0018 	lw	gp,24(s8)
  439370:	1000000c 	b	4393a4 <match_id+0x118>
  439374:	00000000 	nop
    else
    {
	*wildcards = 0;
  439378:	8fc20038 	lw	v0,56(s8)
  43937c:	00000000 	nop
  439380:	ac400000 	sw	zero,0(v0)
	return same_id(a, b);
  439384:	8fc40030 	lw	a0,48(s8)
  439388:	8fc50034 	lw	a1,52(s8)
  43938c:	8f9980e4 	lw	t9,-32540(gp)
  439390:	00000000 	nop
  439394:	0320f809 	jalr	t9
  439398:	00000000 	nop
  43939c:	8fdc0018 	lw	gp,24(s8)
  4393a0:	00000000 	nop
    }
}
  4393a4:	03c0e821 	move	sp,s8
  4393a8:	8fbf0028 	lw	ra,40(sp)
  4393ac:	8fbe0024 	lw	s8,36(sp)
  4393b0:	27bd0030 	addiu	sp,sp,48
  4393b4:	03e00008 	jr	ra
  4393b8:	00000000 	nop

004393bc <id_count_wildcards>:
  4393bc:	3c1c0fbd 	lui	gp,0xfbd
  4393c0:	279c35b4 	addiu	gp,gp,13748
  4393c4:	0399e021 	addu	gp,gp,t9
  4393c8:	27bdffd0 	addiu	sp,sp,-48
  4393cc:	afbc0010 	sw	gp,16(sp)
  4393d0:	afbf0028 	sw	ra,40(sp)
  4393d4:	afbe0024 	sw	s8,36(sp)
  4393d8:	afbc0020 	sw	gp,32(sp)
  4393dc:	03a0f021 	move	s8,sp
  4393e0:	afc40030 	sw	a0,48(s8)

/* count the number of wildcards in an id */
int
id_count_wildcards(const struct id *id)
{
    switch (id->kind)
  4393e4:	8fc20030 	lw	v0,48(s8)
  4393e8:	00000000 	nop
  4393ec:	8c420000 	lw	v0,0(v0)
  4393f0:	00000000 	nop
  4393f4:	afc20018 	sw	v0,24(s8)
  4393f8:	8fc20018 	lw	v0,24(s8)
  4393fc:	00000000 	nop
  439400:	10400008 	beqz	v0,439424 <id_count_wildcards+0x68>
  439404:	00000000 	nop
  439408:	24020009 	li	v0,9
  43940c:	8fc30018 	lw	v1,24(s8)
  439410:	00000000 	nop
  439414:	10620006 	beq	v1,v0,439430 <id_count_wildcards+0x74>
  439418:	00000000 	nop
  43941c:	1000000f 	b	43945c <id_count_wildcards+0xa0>
  439420:	00000000 	nop
    {
    case ID_NONE:
	return MAX_WILDCARDS;
  439424:	24020063 	li	v0,99
  439428:	1000000d 	b	439460 <id_count_wildcards+0xa4>
  43942c:	00000000 	nop
    case ID_DER_ASN1_DN:
	return dn_count_wildcards(id->name);
  439430:	8fc20030 	lw	v0,48(s8)
  439434:	00000000 	nop
  439438:	8c440020 	lw	a0,32(v0)
  43943c:	8c450024 	lw	a1,36(v0)
  439440:	8f998208 	lw	t9,-32248(gp)
  439444:	00000000 	nop
  439448:	0320f809 	jalr	t9
  43944c:	00000000 	nop
  439450:	8fdc0010 	lw	gp,16(s8)
  439454:	10000002 	b	439460 <id_count_wildcards+0xa4>
  439458:	00000000 	nop
    default:
	return 0;
  43945c:	00001021 	move	v0,zero
    }
}
  439460:	03c0e821 	move	sp,s8
  439464:	8fbf0028 	lw	ra,40(sp)
  439468:	8fbe0024 	lw	s8,36(sp)
  43946c:	27bd0030 	addiu	sp,sp,48
  439470:	03e00008 	jr	ra
  439474:	00000000 	nop

00439478 <build_id_payload>:
  439478:	3c1c0fbd 	lui	gp,0xfbd
  43947c:	279c34f8 	addiu	gp,gp,13560
  439480:	0399e021 	addu	gp,gp,t9
  439484:	27bdffc8 	addiu	sp,sp,-56
  439488:	afbc0010 	sw	gp,16(sp)
  43948c:	afbf0034 	sw	ra,52(sp)
  439490:	afbe0030 	sw	s8,48(sp)
  439494:	afbc002c 	sw	gp,44(sp)
  439498:	afb00028 	sw	s0,40(sp)
  43949c:	03a0f021 	move	s8,sp
  4394a0:	afc40038 	sw	a0,56(s8)
  4394a4:	afc5003c 	sw	a1,60(s8)
  4394a8:	afc60040 	sw	a2,64(s8)

/* build an ID payload
 * Note: no memory is allocated for the body of the payload (tl->ptr).
 * We assume it will end up being a pointer into a sufficiently
 * stable datastructure.  It only needs to last a short time.
 */
void
build_id_payload(struct isakmp_ipsec_id *hd, chunk_t *tl, struct end *end)
{
    zero(hd);
  4394ac:	8fc40038 	lw	a0,56(s8)
  4394b0:	00002821 	move	a1,zero
  4394b4:	24060008 	li	a2,8
  4394b8:	8f998500 	lw	t9,-31488(gp)
  4394bc:	00000000 	nop
  4394c0:	0320f809 	jalr	t9
  4394c4:	00000000 	nop
  4394c8:	8fdc0010 	lw	gp,16(s8)
  4394cc:	00000000 	nop
    hd->isaiid_idtype = end->id.kind;
  4394d0:	8fc20040 	lw	v0,64(s8)
  4394d4:	00000000 	nop
  4394d8:	90430003 	lbu	v1,3(v0)
  4394dc:	8fc20038 	lw	v0,56(s8)
  4394e0:	00000000 	nop
  4394e4:	a0430004 	sb	v1,4(v0)
    switch (end->id.kind)
  4394e8:	8fc20040 	lw	v0,64(s8)
  4394ec:	00000000 	nop
  4394f0:	afc20020 	sw	v0,32(s8)
  4394f4:	8fc30020 	lw	v1,32(s8)
  4394f8:	00000000 	nop
  4394fc:	8c620000 	lw	v0,0(v1)
  439500:	00000000 	nop
  439504:	2c42000c 	sltiu	v0,v0,12
  439508:	10400049 	beqz	v0,439630 <build_id_payload+0x1b8>
  43950c:	00000000 	nop
  439510:	8fc30020 	lw	v1,32(s8)
  439514:	00000000 	nop
  439518:	8c620000 	lw	v0,0(v1)
  43951c:	00000000 	nop
  439520:	00021080 	sll	v0,v0,0x2
  439524:	8f81802c 	lw	at,-32724(gp)
  439528:	00000000 	nop
  43952c:	2421d560 	addiu	at,at,-10912
  439530:	00221021 	addu	v0,at,v0
  439534:	8c420000 	lw	v0,0(v0)
  439538:	00000000 	nop
  43953c:	005c1021 	addu	v0,v0,gp
  439540:	00400008 	jr	v0
  439544:	00000000 	nop
    {
    case ID_NONE:
	hd->isaiid_idtype = aftoinfo(addrtypeof(&end->host_addr))->id_addr;
  439548:	8fd00038 	lw	s0,56(s8)
  43954c:	8fc20040 	lw	v0,64(s8)
  439550:	00000000 	nop
  439554:	24420028 	addiu	v0,v0,40
  439558:	00402021 	move	a0,v0
  43955c:	8f9985d4 	lw	t9,-31276(gp)
  439560:	00000000 	nop
  439564:	0320f809 	jalr	t9
  439568:	00000000 	nop
  43956c:	8fdc0010 	lw	gp,16(s8)
  439570:	00402021 	move	a0,v0
  439574:	8f998b94 	lw	t9,-29804(gp)
  439578:	00000000 	nop
  43957c:	0320f809 	jalr	t9
  439580:	00000000 	nop
  439584:	8fdc0010 	lw	gp,16(s8)
  439588:	90420014 	lbu	v0,20(v0)
  43958c:	00000000 	nop
  439590:	a2020004 	sb	v0,4(s0)
	tl->len = addrbytesptr(&end->host_addr
  439594:	8fd0003c 	lw	s0,60(s8)
  439598:	8fc20040 	lw	v0,64(s8)
  43959c:	00000000 	nop
  4395a0:	24420028 	addiu	v0,v0,40
  4395a4:	00402021 	move	a0,v0
  4395a8:	8fc5003c 	lw	a1,60(s8)
  4395ac:	8f998768 	lw	t9,-30872(gp)
  4395b0:	00000000 	nop
  4395b4:	0320f809 	jalr	t9
  4395b8:	00000000 	nop
  4395bc:	8fdc0010 	lw	gp,16(s8)
  4395c0:	ae020004 	sw	v0,4(s0)
	    , (const unsigned char **)&tl->ptr);	/* sets tl->ptr too */
	break;
  4395c4:	10000027 	b	439664 <build_id_payload+0x1ec>
  4395c8:	00000000 	nop
    case ID_FQDN:
    case ID_USER_FQDN:
    case ID_DER_ASN1_DN:
    case ID_KEY_ID:
	*tl = end->id.name;
  4395cc:	8fc4003c 	lw	a0,60(s8)
  4395d0:	8fc30040 	lw	v1,64(s8)
  4395d4:	00000000 	nop
  4395d8:	8c620020 	lw	v0,32(v1)
  4395dc:	00000000 	nop
  4395e0:	ac820000 	sw	v0,0(a0)
  4395e4:	8c620024 	lw	v0,36(v1)
  4395e8:	00000000 	nop
  4395ec:	ac820004 	sw	v0,4(a0)
	break;
  4395f0:	1000001c 	b	439664 <build_id_payload+0x1ec>
  4395f4:	00000000 	nop
    case ID_IPV4_ADDR:
    case ID_IPV6_ADDR:
	tl->len = addrbytesptr(&end->id.ip_addr
  4395f8:	8fd0003c 	lw	s0,60(s8)
  4395fc:	8fc20040 	lw	v0,64(s8)
  439600:	00000000 	nop
  439604:	24420004 	addiu	v0,v0,4
  439608:	00402021 	move	a0,v0
  43960c:	8fc5003c 	lw	a1,60(s8)
  439610:	8f998768 	lw	t9,-30872(gp)
  439614:	00000000 	nop
  439618:	0320f809 	jalr	t9
  43961c:	00000000 	nop
  439620:	8fdc0010 	lw	gp,16(s8)
  439624:	ae020004 	sw	v0,4(s0)
	    , (const unsigned char **)&tl->ptr);	/* sets tl->ptr too */
	break;
  439628:	1000000e 	b	439664 <build_id_payload+0x1ec>
  43962c:	00000000 	nop
    default:
	impossible();
  439630:	8f84802c 	lw	a0,-32724(gp)
  439634:	00000000 	nop
  439638:	2484d440 	addiu	a0,a0,-11200
  43963c:	8f85802c 	lw	a1,-32724(gp)
  439640:	00000000 	nop
  439644:	24a5d44c 	addiu	a1,a1,-11188
  439648:	24060181 	li	a2,385
  43964c:	8f998bb8 	lw	t9,-29768(gp)
  439650:	00000000 	nop
  439654:	0320f809 	jalr	t9
  439658:	00000000 	nop
  43965c:	8fdc0010 	lw	gp,16(s8)
  439660:	00000000 	nop
    }
}
  439664:	03c0e821 	move	sp,s8
  439668:	8fbf0034 	lw	ra,52(sp)
  43966c:	8fbe0030 	lw	s8,48(sp)
  439670:	8fb00028 	lw	s0,40(sp)
  439674:	27bd0038 	addiu	sp,sp,56
  439678:	03e00008 	jr	ra
  43967c:	00000000 	nop

00439680 <echo_hdr>:
  439680:	3c1c0fbd 	lui	gp,0xfbd
  439684:	279c32f0 	addiu	gp,gp,13040
  439688:	0399e021 	addu	gp,gp,t9
  43968c:	27bdffa8 	addiu	sp,sp,-88
  439690:	afbc0010 	sw	gp,16(sp)
  439694:	afbf0050 	sw	ra,80(sp)
  439698:	afbe004c 	sw	s8,76(sp)
  43969c:	afbc0048 	sw	gp,72(sp)
  4396a0:	03a0f021 	move	s8,sp
  4396a4:	afc40058 	sw	a0,88(s8)
  4396a8:	afc5005c 	sw	a1,92(s8)
  4396ac:	00c01021 	move	v0,a2
  4396b0:	a3c20018 	sb	v0,24(s8)
/* create output HDR as replica of input HDR */
void
echo_hdr(struct msg_digest *md, bool enc, u_int8_t np)
{
    struct isakmp_hdr r_hdr = md->hdr;	/* mostly same as incoming header */
  4396b4:	8fc30058 	lw	v1,88(s8)
  4396b8:	00000000 	nop
  4396bc:	8c620070 	lw	v0,112(v1)
  4396c0:	00000000 	nop
  4396c4:	afc20020 	sw	v0,32(s8)
  4396c8:	8c620074 	lw	v0,116(v1)
  4396cc:	00000000 	nop
  4396d0:	afc20024 	sw	v0,36(s8)
  4396d4:	8c620078 	lw	v0,120(v1)
  4396d8:	00000000 	nop
  4396dc:	afc20028 	sw	v0,40(s8)
  4396e0:	8c62007c 	lw	v0,124(v1)
  4396e4:	00000000 	nop
  4396e8:	afc2002c 	sw	v0,44(s8)
  4396ec:	8c620080 	lw	v0,128(v1)
  4396f0:	00000000 	nop
  4396f4:	afc20030 	sw	v0,48(s8)
  4396f8:	8c620084 	lw	v0,132(v1)
  4396fc:	00000000 	nop
  439700:	afc20034 	sw	v0,52(s8)
  439704:	8c620088 	lw	v0,136(v1)
  439708:	00000000 	nop
  43970c:	afc20038 	sw	v0,56(s8)

    r_hdr.isa_flags &= ~ISAKMP_FLAG_COMMIT;	/* we won't ever turn on this bit */
  439710:	93c30033 	lbu	v1,51(s8)
  439714:	2402fffd 	li	v0,-3
  439718:	00621024 	and	v0,v1,v0
  43971c:	a3c20033 	sb	v0,51(s8)
    if (enc)
  439720:	8fc2005c 	lw	v0,92(s8)
  439724:	00000000 	nop
  439728:	10400005 	beqz	v0,439740 <echo_hdr+0xc0>
  43972c:	00000000 	nop
	r_hdr.isa_flags |= ISAKMP_FLAG_ENCRYPTION;
  439730:	93c20033 	lbu	v0,51(s8)
  439734:	00000000 	nop
  439738:	34420001 	ori	v0,v0,0x1
  43973c:	a3c20033 	sb	v0,51(s8)
    /* some day, we may have to set r_hdr.isa_version */
    r_hdr.isa_np = np;
  439740:	93c20018 	lbu	v0,24(s8)
  439744:	00000000 	nop
  439748:	a3c20030 	sb	v0,48(s8)
    if (!out_struct(&r_hdr, &isakmp_hdr_desc, &md->reply, &md->rbody))
  43974c:	8fc20058 	lw	v0,88(s8)
  439750:	00000000 	nop
  439754:	2443009c 	addiu	v1,v0,156
  439758:	8fc20058 	lw	v0,88(s8)
  43975c:	00000000 	nop
  439760:	244200bc 	addiu	v0,v0,188
  439764:	27c40020 	addiu	a0,s8,32
  439768:	8f858688 	lw	a1,-31096(gp)
  43976c:	00603021 	move	a2,v1
  439770:	00403821 	move	a3,v0
  439774:	8f998ba0 	lw	t9,-29792(gp)
  439778:	00000000 	nop
  43977c:	0320f809 	jalr	t9
  439780:	00000000 	nop
  439784:	8fdc0010 	lw	gp,16(s8)
  439788:	1440000e 	bnez	v0,4397c4 <echo_hdr+0x144>
  43978c:	00000000 	nop
	impossible();	/* surely must have room and be well-formed */
  439790:	8f84802c 	lw	a0,-32724(gp)
  439794:	00000000 	nop
  439798:	2484d590 	addiu	a0,a0,-10864
  43979c:	8f85802c 	lw	a1,-32724(gp)
  4397a0:	00000000 	nop
  4397a4:	24a5d59c 	addiu	a1,a1,-10852
  4397a8:	24060066 	li	a2,102
  4397ac:	8f998bb8 	lw	t9,-29768(gp)
  4397b0:	00000000 	nop
  4397b4:	0320f809 	jalr	t9
  4397b8:	00000000 	nop
  4397bc:	8fdc0010 	lw	gp,16(s8)
  4397c0:	00000000 	nop
}
  4397c4:	03c0e821 	move	sp,s8
  4397c8:	8fbf0050 	lw	ra,80(sp)
  4397cc:	8fbe004c 	lw	s8,76(sp)
  4397d0:	27bd0058 	addiu	sp,sp,88
  4397d4:	03e00008 	jr	ra
  4397d8:	00000000 	nop

004397dc <compute_dh_shared>:
  4397dc:	3c1c0fbd 	lui	gp,0xfbd
  4397e0:	279c3194 	addiu	gp,gp,12692
  4397e4:	0399e021 	addu	gp,gp,t9
  4397e8:	27bdffa0 	addiu	sp,sp,-96
  4397ec:	afbc0010 	sw	gp,16(sp)
  4397f0:	afbf0058 	sw	ra,88(sp)
  4397f4:	afbe0054 	sw	s8,84(sp)
  4397f8:	afbc0050 	sw	gp,80(sp)
  4397fc:	03a0f021 	move	s8,sp
  439800:	afc40060 	sw	a0,96(s8)
  439804:	afc50064 	sw	a1,100(s8)
  439808:	afc60068 	sw	a2,104(s8)
  43980c:	afc7006c 	sw	a3,108(s8)

/* Compute DH shared secret from our local secret and the peer's public value.
 * We make the leap that the length should be that of the group
 * (see quoted passage at start of ACCEPT_KE).
 */
static void
compute_dh_shared(struct state *st, const chunk_t g
, const struct oakley_group_desc *group)
{
    MP_INT mp_g, mp_shared;
    struct timeval tv0, tv1;
    unsigned long tv_diff;

    gettimeofday(&tv0, NULL);
  439810:	27c40038 	addiu	a0,s8,56
  439814:	00002821 	move	a1,zero
  439818:	8f998510 	lw	t9,-31472(gp)
  43981c:	00000000 	nop
  439820:	0320f809 	jalr	t9
  439824:	00000000 	nop
  439828:	8fdc0010 	lw	gp,16(s8)
  43982c:	00000000 	nop
    passert(st->st_sec_in_use);
  439830:	8fc20060 	lw	v0,96(s8)
  439834:	00000000 	nop
  439838:	90420130 	lbu	v0,304(v0)
  43983c:	00000000 	nop
  439840:	1440000e 	bnez	v0,43987c <compute_dh_shared+0xa0>
  439844:	00000000 	nop
  439848:	8f84802c 	lw	a0,-32724(gp)
  43984c:	00000000 	nop
  439850:	2484d5a8 	addiu	a0,a0,-10840
  439854:	8f85802c 	lw	a1,-32724(gp)
  439858:	00000000 	nop
  43985c:	24a5d59c 	addiu	a1,a1,-10852
  439860:	24060076 	li	a2,118
  439864:	8f998bb8 	lw	t9,-29768(gp)
  439868:	00000000 	nop
  43986c:	0320f809 	jalr	t9
  439870:	00000000 	nop
  439874:	8fdc0010 	lw	gp,16(s8)
  439878:	00000000 	nop
    n_to_mpz(&mp_g, g.ptr, g.len);
  43987c:	27c40018 	addiu	a0,s8,24
  439880:	8fc50064 	lw	a1,100(s8)
  439884:	8fc60068 	lw	a2,104(s8)
  439888:	8f998358 	lw	t9,-31912(gp)
  43988c:	00000000 	nop
  439890:	0320f809 	jalr	t9
  439894:	00000000 	nop
  439898:	8fdc0010 	lw	gp,16(s8)
  43989c:	00000000 	nop
    mpz_init(&mp_shared);
  4398a0:	27c40028 	addiu	a0,s8,40
  4398a4:	8f998734 	lw	t9,-30924(gp)
  4398a8:	00000000 	nop
  4398ac:	0320f809 	jalr	t9
  4398b0:	00000000 	nop
  4398b4:	8fdc0010 	lw	gp,16(s8)
  4398b8:	00000000 	nop
    mpz_powm(&mp_shared, &mp_g, &st->st_sec, group->modulus);
  4398bc:	8fc20060 	lw	v0,96(s8)
  4398c0:	00000000 	nop
  4398c4:	24420134 	addiu	v0,v0,308
  4398c8:	27c40028 	addiu	a0,s8,40
  4398cc:	27c50018 	addiu	a1,s8,24
  4398d0:	00403021 	move	a2,v0
  4398d4:	8fc2006c 	lw	v0,108(s8)
  4398d8:	00000000 	nop
  4398dc:	8c470004 	lw	a3,4(v0)
  4398e0:	8f9987c4 	lw	t9,-30780(gp)
  4398e4:	00000000 	nop
  4398e8:	0320f809 	jalr	t9
  4398ec:	00000000 	nop
  4398f0:	8fdc0010 	lw	gp,16(s8)
  4398f4:	00000000 	nop
    mpz_clear(&mp_g);
  4398f8:	27c40018 	addiu	a0,s8,24
  4398fc:	8f998c40 	lw	t9,-29632(gp)
  439900:	00000000 	nop
  439904:	0320f809 	jalr	t9
  439908:	00000000 	nop
  43990c:	8fdc0010 	lw	gp,16(s8)
  439910:	00000000 	nop
    freeanychunk(st->st_shared);	/* happens in odd error cases */
  439914:	8fc20060 	lw	v0,96(s8)
  439918:	00000000 	nop
  43991c:	8c420140 	lw	v0,320(v0)
  439920:	00000000 	nop
  439924:	10400009 	beqz	v0,43994c <compute_dh_shared+0x170>
  439928:	00000000 	nop
  43992c:	8fc20060 	lw	v0,96(s8)
  439930:	00000000 	nop
  439934:	8c440140 	lw	a0,320(v0)
  439938:	8f998094 	lw	t9,-32620(gp)
  43993c:	00000000 	nop
  439940:	0320f809 	jalr	t9
  439944:	00000000 	nop
  439948:	8fdc0010 	lw	gp,16(s8)
  43994c:	8fc20060 	lw	v0,96(s8)
  439950:	00000000 	nop
  439954:	ac400140 	sw	zero,320(v0)
    st->st_shared = mpz_to_n(&mp_shared, group->bytes);
  439958:	8fc20060 	lw	v0,96(s8)
  43995c:	00000000 	nop
  439960:	24420140 	addiu	v0,v0,320
  439964:	00402021 	move	a0,v0
  439968:	27c50028 	addiu	a1,s8,40
  43996c:	8fc2006c 	lw	v0,108(s8)
  439970:	00000000 	nop
  439974:	8c460008 	lw	a2,8(v0)
  439978:	8f9980c0 	lw	t9,-32576(gp)
  43997c:	00000000 	nop
  439980:	0320f809 	jalr	t9
  439984:	00000000 	nop
  439988:	8fdc0010 	lw	gp,16(s8)
  43998c:	00000000 	nop
    mpz_clear(&mp_shared);
  439990:	27c40028 	addiu	a0,s8,40
  439994:	8f998c40 	lw	t9,-29632(gp)
  439998:	00000000 	nop
  43999c:	0320f809 	jalr	t9
  4399a0:	00000000 	nop
  4399a4:	8fdc0010 	lw	gp,16(s8)
  4399a8:	00000000 	nop
    gettimeofday(&tv1, NULL);
  4399ac:	27c40040 	addiu	a0,s8,64
  4399b0:	00002821 	move	a1,zero
  4399b4:	8f998510 	lw	t9,-31472(gp)
  4399b8:	00000000 	nop
  4399bc:	0320f809 	jalr	t9
  4399c0:	00000000 	nop
  4399c4:	8fdc0010 	lw	gp,16(s8)
  4399c8:	00000000 	nop
    tv_diff=(tv1.tv_sec  - tv0.tv_sec) * 1000000 + (tv1.tv_usec - tv0.tv_usec);
  4399cc:	8fc30040 	lw	v1,64(s8)
  4399d0:	8fc20038 	lw	v0,56(s8)
  4399d4:	00000000 	nop
  4399d8:	00622023 	subu	a0,v1,v0
  4399dc:	00801021 	move	v0,a0
  4399e0:	00021940 	sll	v1,v0,0x5
  4399e4:	00641823 	subu	v1,v1,a0
  4399e8:	00031180 	sll	v0,v1,0x6
  4399ec:	00431023 	subu	v0,v0,v1
  4399f0:	000210c0 	sll	v0,v0,0x3
  4399f4:	00441021 	addu	v0,v0,a0
  4399f8:	00022180 	sll	a0,v0,0x6
  4399fc:	8fc30044 	lw	v1,68(s8)
  439a00:	8fc2003c 	lw	v0,60(s8)
  439a04:	00000000 	nop
  439a08:	00621023 	subu	v0,v1,v0
  439a0c:	00821021 	addu	v0,a0,v0
  439a10:	afc20048 	sw	v0,72(s8)
    DBG(DBG_CRYPT, 
  439a14:	8f8284f8 	lw	v0,-31496(gp)
  439a18:	00000000 	nop
  439a1c:	8c420000 	lw	v0,0(v0)
  439a20:	00000000 	nop
  439a24:	30420002 	andi	v0,v0,0x2
  439a28:	10400019 	beqz	v0,439a90 <compute_dh_shared+0x2b4>
  439a2c:	00000000 	nop
  439a30:	8fc20060 	lw	v0,96(s8)
  439a34:	00000000 	nop
  439a38:	8c420030 	lw	v0,48(v0)
  439a3c:	00000000 	nop
  439a40:	94420000 	lhu	v0,0(v0)
  439a44:	8f848080 	lw	a0,-32640(gp)
  439a48:	00402821 	move	a1,v0
  439a4c:	8f9987fc 	lw	t9,-30724(gp)
  439a50:	00000000 	nop
  439a54:	0320f809 	jalr	t9
  439a58:	00000000 	nop
  439a5c:	8fdc0010 	lw	gp,16(s8)
  439a60:	00000000 	nop
  439a64:	8f84802c 	lw	a0,-32724(gp)
  439a68:	00000000 	nop
  439a6c:	2484d5bc 	addiu	a0,a0,-10820
  439a70:	00402821 	move	a1,v0
  439a74:	8fc60048 	lw	a2,72(s8)
  439a78:	8f9983b8 	lw	t9,-31816(gp)
  439a7c:	00000000 	nop
  439a80:	0320f809 	jalr	t9
  439a84:	00000000 	nop
  439a88:	8fdc0010 	lw	gp,16(s8)
  439a8c:	00000000 	nop
    	DBG_log("compute_dh_shared(): time elapsed (%s): %ld usec"
		, enum_show(&oakley_group_names, st->st_oakley.group->group)
		, tv_diff);
       );
    /* if took more than 200 msec ... */
    if (tv_diff > 200000) {
  439a90:	3c020003 	lui	v0,0x3
  439a94:	34420d40 	ori	v0,v0,0xd40
  439a98:	8fc30048 	lw	v1,72(s8)
  439a9c:	00000000 	nop
  439aa0:	0043102b 	sltu	v0,v0,v1
  439aa4:	10400019 	beqz	v0,439b0c <compute_dh_shared+0x330>
  439aa8:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "WARNING: compute_dh_shared(): for %s took "
  439aac:	8fc20060 	lw	v0,96(s8)
  439ab0:	00000000 	nop
  439ab4:	8c420030 	lw	v0,48(v0)
  439ab8:	00000000 	nop
  439abc:	94420000 	lhu	v0,0(v0)
  439ac0:	8f848080 	lw	a0,-32640(gp)
  439ac4:	00402821 	move	a1,v0
  439ac8:	8f9987fc 	lw	t9,-30724(gp)
  439acc:	00000000 	nop
  439ad0:	0320f809 	jalr	t9
  439ad4:	00000000 	nop
  439ad8:	8fdc0010 	lw	gp,16(s8)
  439adc:	24040003 	li	a0,3
  439ae0:	8f85802c 	lw	a1,-32724(gp)
  439ae4:	00000000 	nop
  439ae8:	24a5d5f0 	addiu	a1,a1,-10768
  439aec:	00403021 	move	a2,v0
  439af0:	8fc70048 	lw	a3,72(s8)
  439af4:	8f998c48 	lw	t9,-29624(gp)
  439af8:	00000000 	nop
  439afc:	0320f809 	jalr	t9
  439b00:	00000000 	nop
  439b04:	8fdc0010 	lw	gp,16(s8)
  439b08:	00000000 	nop
			"%ld usec"
		, enum_show(&oakley_group_names, st->st_oakley.group->group)
		, tv_diff);
    }

#ifdef DODGE_DH_MISSING_ZERO_BUG
    if (st->st_shared.ptr[0] == 0)
	loglog(RC_LOG_SERIOUS, "shared DH secret has leading zero -- triggers Pluto 1.0 bug");
#endif
    DBG_cond_dump_chunk(DBG_CRYPT, "DH shared secret:\n", st->st_shared);
  439b0c:	8f8284f8 	lw	v0,-31496(gp)
  439b10:	00000000 	nop
  439b14:	8c420000 	lw	v0,0(v0)
  439b18:	00000000 	nop
  439b1c:	30420002 	andi	v0,v0,0x2
  439b20:	10400010 	beqz	v0,439b64 <compute_dh_shared+0x388>
  439b24:	00000000 	nop
  439b28:	8f84802c 	lw	a0,-32724(gp)
  439b2c:	00000000 	nop
  439b30:	2484d624 	addiu	a0,a0,-10716
  439b34:	8fc20060 	lw	v0,96(s8)
  439b38:	00000000 	nop
  439b3c:	8c450140 	lw	a1,320(v0)
  439b40:	8fc20060 	lw	v0,96(s8)
  439b44:	00000000 	nop
  439b48:	8c460144 	lw	a2,324(v0)
  439b4c:	8f9984ec 	lw	t9,-31508(gp)
  439b50:	00000000 	nop
  439b54:	0320f809 	jalr	t9
  439b58:	00000000 	nop
  439b5c:	8fdc0010 	lw	gp,16(s8)
  439b60:	00000000 	nop
}
  439b64:	03c0e821 	move	sp,s8
  439b68:	8fbf0058 	lw	ra,88(sp)
  439b6c:	8fbe0054 	lw	s8,84(sp)
  439b70:	27bd0060 	addiu	sp,sp,96
  439b74:	03e00008 	jr	ra
  439b78:	00000000 	nop

00439b7c <build_and_ship_KE>:
  439b7c:	3c1c0fbd 	lui	gp,0xfbd
  439b80:	279c2df4 	addiu	gp,gp,11764
  439b84:	0399e021 	addu	gp,gp,t9
  439b88:	27bdff98 	addiu	sp,sp,-104
  439b8c:	afbc0018 	sw	gp,24(sp)
  439b90:	afbf0060 	sw	ra,96(sp)
  439b94:	afbe005c 	sw	s8,92(sp)
  439b98:	afbc0058 	sw	gp,88(sp)
  439b9c:	03a0f021 	move	s8,sp
  439ba0:	afc40068 	sw	a0,104(s8)
  439ba4:	afc5006c 	sw	a1,108(s8)
  439ba8:	afc60070 	sw	a2,112(s8)
  439bac:	afc70074 	sw	a3,116(s8)
  439bb0:	8fc20078 	lw	v0,120(s8)
  439bb4:	00000000 	nop
  439bb8:	a3c20020 	sb	v0,32(s8)

/* needed for PGPnet Vendor ID */
char pgp_vid[] = "OpenPGP10171";

#ifdef DPD
/* needed for Dead Peer detection */
char dpd_vid[] = {0xAF, 0xCA, 0xD7, 0x13, 0x68, 0xA1, 0xF1,
          0xC9, 0x6B, 0x86, 0x96, 0xFC, 0x77, 0x57, 0x01, 0x00};
#endif


/* if we haven't already done so, compute a local DH secret (st->st_sec) and
 * the corresponding public value (g).  This is emitted as a KE payload.
 * KLUDGE: if DODGE_DH_MISSING_ZERO_BUG and we're the responder,
 * this routine computes the shared secret to see if it would
 * have a leading zero.  If so, we try again.
 */
static bool
build_and_ship_KE(struct state *st, chunk_t *g
, const struct oakley_group_desc *group, pb_stream *outs, u_int8_t np)
{
    if (!st->st_sec_in_use)
  439bbc:	8fc20068 	lw	v0,104(s8)
  439bc0:	00000000 	nop
  439bc4:	90420130 	lbu	v0,304(v0)
  439bc8:	00000000 	nop
  439bcc:	14400073 	bnez	v0,439d9c <build_and_ship_KE+0x220>
  439bd0:	00000000 	nop
    {
	u_char tmp[LOCALSECRETSIZE];
	MP_INT mp_g;

	get_rnd_bytes(tmp, LOCALSECRETSIZE);
  439bd4:	27c40028 	addiu	a0,s8,40
  439bd8:	24050020 	li	a1,32
  439bdc:	8f9980bc 	lw	t9,-32580(gp)
  439be0:	00000000 	nop
  439be4:	0320f809 	jalr	t9
  439be8:	00000000 	nop
  439bec:	8fdc0018 	lw	gp,24(s8)
  439bf0:	00000000 	nop
	st->st_sec_in_use = TRUE;
  439bf4:	24030001 	li	v1,1
  439bf8:	8fc20068 	lw	v0,104(s8)
  439bfc:	00000000 	nop
  439c00:	a0430130 	sb	v1,304(v0)
	n_to_mpz(&st->st_sec, tmp, LOCALSECRETSIZE);
  439c04:	8fc20068 	lw	v0,104(s8)
  439c08:	00000000 	nop
  439c0c:	24420134 	addiu	v0,v0,308
  439c10:	00402021 	move	a0,v0
  439c14:	27c50028 	addiu	a1,s8,40
  439c18:	24060020 	li	a2,32
  439c1c:	8f998358 	lw	t9,-31912(gp)
  439c20:	00000000 	nop
  439c24:	0320f809 	jalr	t9
  439c28:	00000000 	nop
  439c2c:	8fdc0018 	lw	gp,24(s8)
  439c30:	00000000 	nop

	mpz_init(&mp_g);
  439c34:	27c40048 	addiu	a0,s8,72
  439c38:	8f998734 	lw	t9,-30924(gp)
  439c3c:	00000000 	nop
  439c40:	0320f809 	jalr	t9
  439c44:	00000000 	nop
  439c48:	8fdc0018 	lw	gp,24(s8)
  439c4c:	00000000 	nop
	mpz_powm(&mp_g, &groupgenerator, &st->st_sec, group->modulus);
  439c50:	8fc20068 	lw	v0,104(s8)
  439c54:	00000000 	nop
  439c58:	24420134 	addiu	v0,v0,308
  439c5c:	27c40048 	addiu	a0,s8,72
  439c60:	8f858a48 	lw	a1,-30136(gp)
  439c64:	00403021 	move	a2,v0
  439c68:	8fc20070 	lw	v0,112(s8)
  439c6c:	00000000 	nop
  439c70:	8c470004 	lw	a3,4(v0)
  439c74:	8f9987c4 	lw	t9,-30780(gp)
  439c78:	00000000 	nop
  439c7c:	0320f809 	jalr	t9
  439c80:	00000000 	nop
  439c84:	8fdc0018 	lw	gp,24(s8)
  439c88:	00000000 	nop
	freeanychunk(*g);	/* happens in odd error cases */
  439c8c:	8fc2006c 	lw	v0,108(s8)
  439c90:	00000000 	nop
  439c94:	8c420000 	lw	v0,0(v0)
  439c98:	00000000 	nop
  439c9c:	10400009 	beqz	v0,439cc4 <build_and_ship_KE+0x148>
  439ca0:	00000000 	nop
  439ca4:	8fc2006c 	lw	v0,108(s8)
  439ca8:	00000000 	nop
  439cac:	8c440000 	lw	a0,0(v0)
  439cb0:	8f998094 	lw	t9,-32620(gp)
  439cb4:	00000000 	nop
  439cb8:	0320f809 	jalr	t9
  439cbc:	00000000 	nop
  439cc0:	8fdc0018 	lw	gp,24(s8)
  439cc4:	8fc2006c 	lw	v0,108(s8)
  439cc8:	00000000 	nop
  439ccc:	ac400000 	sw	zero,0(v0)
	*g = mpz_to_n(&mp_g, group->bytes);
  439cd0:	8fc4006c 	lw	a0,108(s8)
  439cd4:	27c50048 	addiu	a1,s8,72
  439cd8:	8fc20070 	lw	v0,112(s8)
  439cdc:	00000000 	nop
  439ce0:	8c460008 	lw	a2,8(v0)
  439ce4:	8f9980c0 	lw	t9,-32576(gp)
  439ce8:	00000000 	nop
  439cec:	0320f809 	jalr	t9
  439cf0:	00000000 	nop
  439cf4:	8fdc0018 	lw	gp,24(s8)
  439cf8:	00000000 	nop
	mpz_clear(&mp_g);
  439cfc:	27c40048 	addiu	a0,s8,72
  439d00:	8f998c40 	lw	t9,-29632(gp)
  439d04:	00000000 	nop
  439d08:	0320f809 	jalr	t9
  439d0c:	00000000 	nop
  439d10:	8fdc0018 	lw	gp,24(s8)
  439d14:	00000000 	nop
#ifdef DODGE_DH_MISSING_ZERO_BUG
	if (g->ptr[0] == 0)
	{
	    /* generate a new secret to avoid this situation */
	    loglog(RC_LOG_SERIOUS, "regenerating DH private secret to avoid Pluto 1.0 bug"
		" handling public value with leading zero");
	    mpz_clear(&st->st_sec);
	    st->st_sec_in_use = FALSE;
	    return build_and_ship_KE(st, g, group, outs, np);
	}
	/* if we're the responder, we can compute the shared secret
	 * to see if it would turn out OK.
	 */
	if (g == &st->st_gr)
	{
	    compute_dh_shared(st, st->st_gi
		, IS_PHASE1(st->st_state)
		    ? st->st_oakley.group : st->st_pfs_group);
	    if (st->st_shared.ptr[0] == 0)
	    {
		/* generate a new secret to avoid this situation */
		loglog(RC_LOG_SERIOUS, "regenerating DH private secret to avoid Pluto 1.0 bug"
		    " handling shared secret with leading zero");
		freeanychunk(st->st_shared);
		mpz_clear(&st->st_sec);
		st->st_sec_in_use = FALSE;
		return build_and_ship_KE(st, g, group, outs, np);
	    }
	}
#endif

	DBG(DBG_CRYPT,
  439d18:	8f8284f8 	lw	v0,-31496(gp)
  439d1c:	00000000 	nop
  439d20:	8c420000 	lw	v0,0(v0)
  439d24:	00000000 	nop
  439d28:	30420002 	andi	v0,v0,0x2
  439d2c:	1040001b 	beqz	v0,439d9c <build_and_ship_KE+0x220>
  439d30:	00000000 	nop
  439d34:	8f84802c 	lw	a0,-32724(gp)
  439d38:	00000000 	nop
  439d3c:	2484d638 	addiu	a0,a0,-10696
  439d40:	27c50028 	addiu	a1,s8,40
  439d44:	24060020 	li	a2,32
  439d48:	8f9984ec 	lw	t9,-31508(gp)
  439d4c:	00000000 	nop
  439d50:	0320f809 	jalr	t9
  439d54:	00000000 	nop
  439d58:	8fdc0018 	lw	gp,24(s8)
  439d5c:	00000000 	nop
  439d60:	8f84802c 	lw	a0,-32724(gp)
  439d64:	00000000 	nop
  439d68:	2484d64c 	addiu	a0,a0,-10676
  439d6c:	8fc2006c 	lw	v0,108(s8)
  439d70:	00000000 	nop
  439d74:	8c450000 	lw	a1,0(v0)
  439d78:	8fc2006c 	lw	v0,108(s8)
  439d7c:	00000000 	nop
  439d80:	8c460004 	lw	a2,4(v0)
  439d84:	8f9984ec 	lw	t9,-31508(gp)
  439d88:	00000000 	nop
  439d8c:	0320f809 	jalr	t9
  439d90:	00000000 	nop
  439d94:	8fdc0018 	lw	gp,24(s8)
  439d98:	00000000 	nop
	    DBG_dump("Local DH secret:\n", tmp, LOCALSECRETSIZE);
	    DBG_dump_chunk("Public DH value sent:\n", *g));
    }
    return out_generic_chunk(np, &isakmp_keyex_desc, outs, *g, "keyex value");
  439d9c:	93c30020 	lbu	v1,32(s8)
  439da0:	8fc2006c 	lw	v0,108(s8)
  439da4:	00000000 	nop
  439da8:	8c420004 	lw	v0,4(v0)
  439dac:	00000000 	nop
  439db0:	afa20010 	sw	v0,16(sp)
  439db4:	8f82802c 	lw	v0,-32724(gp)
  439db8:	00000000 	nop
  439dbc:	2442d664 	addiu	v0,v0,-10652
  439dc0:	00000000 	nop
  439dc4:	afa20014 	sw	v0,20(sp)
  439dc8:	00602021 	move	a0,v1
  439dcc:	8f85833c 	lw	a1,-31940(gp)
  439dd0:	8fc60074 	lw	a2,116(s8)
  439dd4:	8fc2006c 	lw	v0,108(s8)
  439dd8:	00000000 	nop
  439ddc:	8c470000 	lw	a3,0(v0)
  439de0:	8f99841c 	lw	t9,-31716(gp)
  439de4:	00000000 	nop
  439de8:	0320f809 	jalr	t9
  439dec:	00000000 	nop
  439df0:	8fdc0018 	lw	gp,24(s8)
  439df4:	00000000 	nop
}
  439df8:	03c0e821 	move	sp,s8
  439dfc:	8fbf0060 	lw	ra,96(sp)
  439e00:	8fbe005c 	lw	s8,92(sp)
  439e04:	27bd0068 	addiu	sp,sp,104
  439e08:	03e00008 	jr	ra
  439e0c:	00000000 	nop

00439e10 <accept_KE>:
  439e10:	3c1c0fbd 	lui	gp,0xfbd
  439e14:	279c2b60 	addiu	gp,gp,11104
  439e18:	0399e021 	addu	gp,gp,t9
  439e1c:	27bdffd8 	addiu	sp,sp,-40
  439e20:	afbc0010 	sw	gp,16(sp)
  439e24:	afbf0024 	sw	ra,36(sp)
  439e28:	afbe0020 	sw	s8,32(sp)
  439e2c:	afbc001c 	sw	gp,28(sp)
  439e30:	afb00018 	sw	s0,24(sp)
  439e34:	03a0f021 	move	s8,sp
  439e38:	afc40028 	sw	a0,40(s8)
  439e3c:	afc5002c 	sw	a1,44(s8)
  439e40:	afc60030 	sw	a2,48(s8)
  439e44:	afc70034 	sw	a3,52(s8)

/* accept_ke
 *
 * Check and accept DH public value (Gi or Gr) from peer's message.
 * According to RFC2409 "The Internet key exchange (IKE)" 5:
 *  The Diffie-Hellman public value passed in a KE payload, in either
 *  a phase 1 or phase 2 exchange, MUST be the length of the negotiated
 *  Diffie-Hellman group enforced, if necessary, by pre-pending the
 *  value with zeros.
 * ??? For now, if DODGE_DH_MISSING_ZERO_BUG is defined, we accept shorter
 *     values to interoperate with old Plutos.  This should change some day.
 */
static notification_t
accept_KE(chunk_t *dest, const char *val_name
, const struct oakley_group_desc *gr
, pb_stream *pbs)
{
    if (pbs_left(pbs) != gr->bytes)
  439e48:	8fc20034 	lw	v0,52(s8)
  439e4c:	00000000 	nop
  439e50:	8c430014 	lw	v1,20(v0)
  439e54:	8fc20034 	lw	v0,52(s8)
  439e58:	00000000 	nop
  439e5c:	8c420010 	lw	v0,16(v0)
  439e60:	00000000 	nop
  439e64:	00621823 	subu	v1,v1,v0
  439e68:	8fc20030 	lw	v0,48(s8)
  439e6c:	00000000 	nop
  439e70:	8c420008 	lw	v0,8(v0)
  439e74:	00000000 	nop
  439e78:	1062001a 	beq	v1,v0,439ee4 <accept_KE+0xd4>
  439e7c:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "KE has %u byte DH public value; %u required"
  439e80:	8fc20034 	lw	v0,52(s8)
  439e84:	00000000 	nop
  439e88:	8c430014 	lw	v1,20(v0)
  439e8c:	8fc20034 	lw	v0,52(s8)
  439e90:	00000000 	nop
  439e94:	8c420010 	lw	v0,16(v0)
  439e98:	00000000 	nop
  439e9c:	00621023 	subu	v0,v1,v0
  439ea0:	24040003 	li	a0,3
  439ea4:	8f85802c 	lw	a1,-32724(gp)
  439ea8:	00000000 	nop
  439eac:	24a5d670 	addiu	a1,a1,-10640
  439eb0:	00403021 	move	a2,v0
  439eb4:	8fc20030 	lw	v0,48(s8)
  439eb8:	00000000 	nop
  439ebc:	8c470008 	lw	a3,8(v0)
  439ec0:	8f998c48 	lw	t9,-29624(gp)
  439ec4:	00000000 	nop
  439ec8:	0320f809 	jalr	t9
  439ecc:	00000000 	nop
  439ed0:	8fdc0010 	lw	gp,16(s8)
  439ed4:	00000000 	nop
	    , (unsigned) pbs_left(pbs), (unsigned) gr->bytes);
#ifdef DODGE_DH_MISSING_ZERO_BUG
	if (pbs_left(pbs) > gr->bytes)
#endif
	    return INVALID_KEY_INFORMATION;
  439ed8:	24020011 	li	v0,17
  439edc:	1000003d 	b	439fd4 <accept_KE+0x1c4>
  439ee0:	00000000 	nop
    }
    clonereplacechunk(*dest, pbs->cur, pbs_left(pbs), val_name);
  439ee4:	8fc20028 	lw	v0,40(s8)
  439ee8:	00000000 	nop
  439eec:	8c420000 	lw	v0,0(v0)
  439ef0:	00000000 	nop
  439ef4:	10400009 	beqz	v0,439f1c <accept_KE+0x10c>
  439ef8:	00000000 	nop
  439efc:	8fc20028 	lw	v0,40(s8)
  439f00:	00000000 	nop
  439f04:	8c440000 	lw	a0,0(v0)
  439f08:	8f998094 	lw	t9,-32620(gp)
  439f0c:	00000000 	nop
  439f10:	0320f809 	jalr	t9
  439f14:	00000000 	nop
  439f18:	8fdc0010 	lw	gp,16(s8)
  439f1c:	8fd00028 	lw	s0,40(s8)
  439f20:	8fc40034 	lw	a0,52(s8)
  439f24:	8fc20034 	lw	v0,52(s8)
  439f28:	00000000 	nop
  439f2c:	8c430014 	lw	v1,20(v0)
  439f30:	8fc20034 	lw	v0,52(s8)
  439f34:	00000000 	nop
  439f38:	8c420010 	lw	v0,16(v0)
  439f3c:	00000000 	nop
  439f40:	00621023 	subu	v0,v1,v0
  439f44:	00401821 	move	v1,v0
  439f48:	8fc20028 	lw	v0,40(s8)
  439f4c:	00000000 	nop
  439f50:	ac430004 	sw	v1,4(v0)
  439f54:	8c840010 	lw	a0,16(a0)
  439f58:	00602821 	move	a1,v1
  439f5c:	8fc6002c 	lw	a2,44(s8)
  439f60:	8f998c04 	lw	t9,-29692(gp)
  439f64:	00000000 	nop
  439f68:	0320f809 	jalr	t9
  439f6c:	00000000 	nop
  439f70:	8fdc0010 	lw	gp,16(s8)
  439f74:	ae020000 	sw	v0,0(s0)
    DBG_cond_dump_chunk(DBG_CRYPT, "DH public value received:\n", *dest);
  439f78:	8f8284f8 	lw	v0,-31496(gp)
  439f7c:	00000000 	nop
  439f80:	8c420000 	lw	v0,0(v0)
  439f84:	00000000 	nop
  439f88:	30420002 	andi	v0,v0,0x2
  439f8c:	10400010 	beqz	v0,439fd0 <accept_KE+0x1c0>
  439f90:	00000000 	nop
  439f94:	8f84802c 	lw	a0,-32724(gp)
  439f98:	00000000 	nop
  439f9c:	2484d69c 	addiu	a0,a0,-10596
  439fa0:	8fc20028 	lw	v0,40(s8)
  439fa4:	00000000 	nop
  439fa8:	8c450000 	lw	a1,0(v0)
  439fac:	8fc20028 	lw	v0,40(s8)
  439fb0:	00000000 	nop
  439fb4:	8c460004 	lw	a2,4(v0)
  439fb8:	8f9984ec 	lw	t9,-31508(gp)
  439fbc:	00000000 	nop
  439fc0:	0320f809 	jalr	t9
  439fc4:	00000000 	nop
  439fc8:	8fdc0010 	lw	gp,16(s8)
  439fcc:	00000000 	nop
    return NOTHING_WRONG;
  439fd0:	00001021 	move	v0,zero
}
  439fd4:	03c0e821 	move	sp,s8
  439fd8:	8fbf0024 	lw	ra,36(sp)
  439fdc:	8fbe0020 	lw	s8,32(sp)
  439fe0:	8fb00018 	lw	s0,24(sp)
  439fe4:	27bd0028 	addiu	sp,sp,40
  439fe8:	03e00008 	jr	ra
  439fec:	00000000 	nop

00439ff0 <accept_PFS_KE>:
  439ff0:	3c1c0fbd 	lui	gp,0xfbd
  439ff4:	279c2980 	addiu	gp,gp,10624
  439ff8:	0399e021 	addu	gp,gp,t9
  439ffc:	27bdffd0 	addiu	sp,sp,-48
  43a000:	afbc0010 	sw	gp,16(sp)
  43a004:	afbf0028 	sw	ra,40(sp)
  43a008:	afbe0024 	sw	s8,36(sp)
  43a00c:	afbc0020 	sw	gp,32(sp)
  43a010:	03a0f021 	move	s8,sp
  43a014:	afc40030 	sw	a0,48(s8)
  43a018:	afc50034 	sw	a1,52(s8)
  43a01c:	afc60038 	sw	a2,56(s8)
  43a020:	afc7003c 	sw	a3,60(s8)

/* accept_PFS_KE
 *
 * Check and accept optional Quick Mode KE payload for PFS.
 * Extends ACCEPT_PFS to check whether KE is allowed or required.
 */
static notification_t
accept_PFS_KE(struct msg_digest *md, chunk_t *dest
, const char *val_name, const char *msg_name)
{
    struct state *st = md->st;
  43a024:	8fc20030 	lw	v0,48(s8)
  43a028:	00000000 	nop
  43a02c:	8c420098 	lw	v0,152(v0)
  43a030:	00000000 	nop
  43a034:	afc20018 	sw	v0,24(s8)
    struct payload_digest *const ke_pd = md->chain[ISAKMP_NEXT_KE];
  43a038:	8fc20030 	lw	v0,48(s8)
  43a03c:	00000000 	nop
  43a040:	8c4204b8 	lw	v0,1208(v0)
  43a044:	00000000 	nop
  43a048:	afc2001c 	sw	v0,28(s8)

    if (ke_pd == NULL)
  43a04c:	8fc2001c 	lw	v0,28(s8)
  43a050:	00000000 	nop
  43a054:	14400015 	bnez	v0,43a0ac <accept_PFS_KE+0xbc>
  43a058:	00000000 	nop
    {
	if (st->st_pfs_group != NULL)
  43a05c:	8fc20018 	lw	v0,24(s8)
  43a060:	00000000 	nop
  43a064:	8c4200c8 	lw	v0,200(v0)
  43a068:	00000000 	nop
  43a06c:	10400046 	beqz	v0,43a188 <accept_PFS_KE+0x198>
  43a070:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "missing KE payload in %s message", msg_name);
  43a074:	24040003 	li	a0,3
  43a078:	8f85802c 	lw	a1,-32724(gp)
  43a07c:	00000000 	nop
  43a080:	24a5d6b8 	addiu	a1,a1,-10568
  43a084:	8fc6003c 	lw	a2,60(s8)
  43a088:	8f998c48 	lw	t9,-29624(gp)
  43a08c:	00000000 	nop
  43a090:	0320f809 	jalr	t9
  43a094:	00000000 	nop
  43a098:	8fdc0010 	lw	gp,16(s8)
  43a09c:	00000000 	nop
	    return INVALID_KEY_INFORMATION;
  43a0a0:	24020011 	li	v0,17
  43a0a4:	10000039 	b	43a18c <accept_PFS_KE+0x19c>
  43a0a8:	00000000 	nop
	}
    }
    else
    {
	if (st->st_pfs_group == NULL)
  43a0ac:	8fc20018 	lw	v0,24(s8)
  43a0b0:	00000000 	nop
  43a0b4:	8c4200c8 	lw	v0,200(v0)
  43a0b8:	00000000 	nop
  43a0bc:	1440000f 	bnez	v0,43a0fc <accept_PFS_KE+0x10c>
  43a0c0:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "%s message KE payload requires a GROUP_DESCRIPTION attribute in SA"
  43a0c4:	24040003 	li	a0,3
  43a0c8:	8f85802c 	lw	a1,-32724(gp)
  43a0cc:	00000000 	nop
  43a0d0:	24a5d6dc 	addiu	a1,a1,-10532
  43a0d4:	8fc6003c 	lw	a2,60(s8)
  43a0d8:	8f998c48 	lw	t9,-29624(gp)
  43a0dc:	00000000 	nop
  43a0e0:	0320f809 	jalr	t9
  43a0e4:	00000000 	nop
  43a0e8:	8fdc0010 	lw	gp,16(s8)
  43a0ec:	00000000 	nop
		, msg_name);
	    return INVALID_KEY_INFORMATION;
  43a0f0:	24020011 	li	v0,17
  43a0f4:	10000025 	b	43a18c <accept_PFS_KE+0x19c>
  43a0f8:	00000000 	nop
	}
	if (ke_pd->next != NULL)
  43a0fc:	8fc2001c 	lw	v0,28(s8)
  43a100:	00000000 	nop
  43a104:	8c42002c 	lw	v0,44(v0)
  43a108:	00000000 	nop
  43a10c:	1040000f 	beqz	v0,43a14c <accept_PFS_KE+0x15c>
  43a110:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "%s message contains several KE payloads; we accept at most one", msg_name);
  43a114:	24040003 	li	a0,3
  43a118:	8f85802c 	lw	a1,-32724(gp)
  43a11c:	00000000 	nop
  43a120:	24a5d720 	addiu	a1,a1,-10464
  43a124:	8fc6003c 	lw	a2,60(s8)
  43a128:	8f998c48 	lw	t9,-29624(gp)
  43a12c:	00000000 	nop
  43a130:	0320f809 	jalr	t9
  43a134:	00000000 	nop
  43a138:	8fdc0010 	lw	gp,16(s8)
  43a13c:	00000000 	nop
	    return INVALID_KEY_INFORMATION;	/* ??? */
  43a140:	24020011 	li	v0,17
  43a144:	10000011 	b	43a18c <accept_PFS_KE+0x19c>
  43a148:	00000000 	nop
	}
	return accept_KE(dest, val_name, st->st_pfs_group, &ke_pd->pbs);
  43a14c:	8fc40034 	lw	a0,52(s8)
  43a150:	8fc50038 	lw	a1,56(s8)
  43a154:	8fc20018 	lw	v0,24(s8)
  43a158:	00000000 	nop
  43a15c:	8c4600c8 	lw	a2,200(v0)
  43a160:	8fc7001c 	lw	a3,28(s8)
  43a164:	8f998034 	lw	t9,-32716(gp)
  43a168:	00000000 	nop
  43a16c:	27399e10 	addiu	t9,t9,-25072
  43a170:	00000000 	nop
  43a174:	0320f809 	jalr	t9
  43a178:	00000000 	nop
  43a17c:	8fdc0010 	lw	gp,16(s8)
  43a180:	10000002 	b	43a18c <accept_PFS_KE+0x19c>
  43a184:	00000000 	nop
    }
    return NOTHING_WRONG;
  43a188:	00001021 	move	v0,zero
}
  43a18c:	03c0e821 	move	sp,s8
  43a190:	8fbf0028 	lw	ra,40(sp)
  43a194:	8fbe0024 	lw	s8,36(sp)
  43a198:	27bd0030 	addiu	sp,sp,48
  43a19c:	03e00008 	jr	ra
  43a1a0:	00000000 	nop

0043a1a4 <build_and_ship_nonce>:
  43a1a4:	3c1c0fbd 	lui	gp,0xfbd
  43a1a8:	279c27cc 	addiu	gp,gp,10188
  43a1ac:	0399e021 	addu	gp,gp,t9
  43a1b0:	27bdffc8 	addiu	sp,sp,-56
  43a1b4:	afbc0018 	sw	gp,24(sp)
  43a1b8:	afbf0034 	sw	ra,52(sp)
  43a1bc:	afbe0030 	sw	s8,48(sp)
  43a1c0:	afbc002c 	sw	gp,44(sp)
  43a1c4:	afb00028 	sw	s0,40(sp)
  43a1c8:	03a0f021 	move	s8,sp
  43a1cc:	afc40038 	sw	a0,56(s8)
  43a1d0:	afc5003c 	sw	a1,60(s8)
  43a1d4:	00c01021 	move	v0,a2
  43a1d8:	afc70044 	sw	a3,68(s8)
  43a1dc:	a3c20020 	sb	v0,32(s8)

static bool
build_and_ship_nonce(chunk_t *n, pb_stream *outs, u_int8_t np
, const char *name)
{
    setchunk(*n, alloc_bytes(DEFAULT_NONCE_SIZE, name), DEFAULT_NONCE_SIZE);
  43a1e0:	8fd00038 	lw	s0,56(s8)
  43a1e4:	24040010 	li	a0,16
  43a1e8:	8fc50044 	lw	a1,68(s8)
  43a1ec:	8f998084 	lw	t9,-32636(gp)
  43a1f0:	00000000 	nop
  43a1f4:	0320f809 	jalr	t9
  43a1f8:	00000000 	nop
  43a1fc:	8fdc0018 	lw	gp,24(s8)
  43a200:	ae020000 	sw	v0,0(s0)
  43a204:	24030010 	li	v1,16
  43a208:	8fc20038 	lw	v0,56(s8)
  43a20c:	00000000 	nop
  43a210:	ac430004 	sw	v1,4(v0)
    get_rnd_bytes(n->ptr, DEFAULT_NONCE_SIZE);
  43a214:	8fc20038 	lw	v0,56(s8)
  43a218:	00000000 	nop
  43a21c:	8c440000 	lw	a0,0(v0)
  43a220:	24050010 	li	a1,16
  43a224:	8f9980bc 	lw	t9,-32580(gp)
  43a228:	00000000 	nop
  43a22c:	0320f809 	jalr	t9
  43a230:	00000000 	nop
  43a234:	8fdc0018 	lw	gp,24(s8)
  43a238:	00000000 	nop
    return out_generic_chunk(np, &isakmp_nonce_desc, outs, *n, name);
  43a23c:	93c30020 	lbu	v1,32(s8)
  43a240:	8fc20038 	lw	v0,56(s8)
  43a244:	00000000 	nop
  43a248:	8c420004 	lw	v0,4(v0)
  43a24c:	00000000 	nop
  43a250:	afa20010 	sw	v0,16(sp)
  43a254:	8fc20044 	lw	v0,68(s8)
  43a258:	00000000 	nop
  43a25c:	afa20014 	sw	v0,20(sp)
  43a260:	00602021 	move	a0,v1
  43a264:	8f8588a4 	lw	a1,-30556(gp)
  43a268:	8fc6003c 	lw	a2,60(s8)
  43a26c:	8fc20038 	lw	v0,56(s8)
  43a270:	00000000 	nop
  43a274:	8c470000 	lw	a3,0(v0)
  43a278:	8f99841c 	lw	t9,-31716(gp)
  43a27c:	00000000 	nop
  43a280:	0320f809 	jalr	t9
  43a284:	00000000 	nop
  43a288:	8fdc0018 	lw	gp,24(s8)
  43a28c:	00000000 	nop
}
  43a290:	03c0e821 	move	sp,s8
  43a294:	8fbf0034 	lw	ra,52(sp)
  43a298:	8fbe0030 	lw	s8,48(sp)
  43a29c:	8fb00028 	lw	s0,40(sp)
  43a2a0:	27bd0038 	addiu	sp,sp,56
  43a2a4:	03e00008 	jr	ra
  43a2a8:	00000000 	nop

0043a2ac <collect_rw_ca_candidates>:
  43a2ac:	3c1c0fbd 	lui	gp,0xfbd
  43a2b0:	279c26c4 	addiu	gp,gp,9924
  43a2b4:	0399e021 	addu	gp,gp,t9
  43a2b8:	27bdffc0 	addiu	sp,sp,-64
  43a2bc:	afbc0010 	sw	gp,16(sp)
  43a2c0:	afbf0038 	sw	ra,56(sp)
  43a2c4:	afbe0034 	sw	s8,52(sp)
  43a2c8:	afbc0030 	sw	gp,48(sp)
  43a2cc:	03a0f021 	move	s8,sp
  43a2d0:	afc40040 	sw	a0,64(s8)
  43a2d4:	afc50044 	sw	a1,68(s8)

static bool
collect_rw_ca_candidates(struct msg_digest *md, generalName_t **top)
{
    struct connection *d = find_host_connection(&md->iface->addr
  43a2d8:	8fc20040 	lw	v0,64(s8)
  43a2dc:	00000000 	nop
  43a2e0:	8c42000c 	lw	v0,12(v0)
  43a2e4:	00000000 	nop
  43a2e8:	24430008 	addiu	v1,v0,8
  43a2ec:	8f8584b0 	lw	a1,-31568(gp)
  43a2f0:	00000000 	nop
  43a2f4:	94a50000 	lhu	a1,0(a1)
  43a2f8:	8fc20040 	lw	v0,64(s8)
  43a2fc:	00000000 	nop
  43a300:	9442002c 	lhu	v0,44(v0)
  43a304:	00602021 	move	a0,v1
  43a308:	00003021 	move	a2,zero
  43a30c:	00403821 	move	a3,v0
  43a310:	8f998098 	lw	t9,-32616(gp)
  43a314:	00000000 	nop
  43a318:	0320f809 	jalr	t9
  43a31c:	00000000 	nop
  43a320:	8fdc0010 	lw	gp,16(s8)
  43a324:	afc20018 	sw	v0,24(s8)
	, pluto_port, (ip_address*)NULL, md->sender_port);

    for (; d != NULL; d = d->hp_next)
  43a328:	8fc20018 	lw	v0,24(s8)
  43a32c:	00000000 	nop
  43a330:	14400003 	bnez	v0,43a340 <collect_rw_ca_candidates+0x94>
  43a334:	00000000 	nop
  43a338:	10000069 	b	43a4e0 <collect_rw_ca_candidates+0x234>
  43a33c:	00000000 	nop
    {
	/* must be a road warrior connection */
	if (d->kind == CK_TEMPLATE && !(d->policy & POLICY_OPPO)
	&& d->that.ca.ptr != NULL)
  43a340:	8fc20018 	lw	v0,24(s8)
  43a344:	00000000 	nop
  43a348:	8c420194 	lw	v0,404(v0)
  43a34c:	00000000 	nop
  43a350:	1440005c 	bnez	v0,43a4c4 <collect_rw_ca_candidates+0x218>
  43a354:	00000000 	nop
  43a358:	8fc20018 	lw	v0,24(s8)
  43a35c:	00000000 	nop
  43a360:	8c440008 	lw	a0,8(v0)
  43a364:	8c45000c 	lw	a1,12(v0)
  43a368:	24020000 	li	v0,0
  43a36c:	24030800 	li	v1,2048
  43a370:	00822024 	and	a0,a0,v0
  43a374:	00a32824 	and	a1,a1,v1
  43a378:	00801021 	move	v0,a0
  43a37c:	00451025 	or	v0,v0,a1
  43a380:	14400050 	bnez	v0,43a4c4 <collect_rw_ca_candidates+0x218>
  43a384:	00000000 	nop
  43a388:	8fc20018 	lw	v0,24(s8)
  43a38c:	00000000 	nop
  43a390:	8c420184 	lw	v0,388(v0)
  43a394:	00000000 	nop
  43a398:	1040004a 	beqz	v0,43a4c4 <collect_rw_ca_candidates+0x218>
  43a39c:	00000000 	nop
	{
	    generalName_t *gn;
	    bool new_entry = TRUE;
  43a3a0:	24020001 	li	v0,1
  43a3a4:	afc20020 	sw	v0,32(s8)

	    for (gn = *top; gn != NULL; gn = gn->next)
  43a3a8:	8fc20044 	lw	v0,68(s8)
  43a3ac:	00000000 	nop
  43a3b0:	8c420000 	lw	v0,0(v0)
  43a3b4:	00000000 	nop
  43a3b8:	afc2001c 	sw	v0,28(s8)
  43a3bc:	8fc2001c 	lw	v0,28(s8)
  43a3c0:	00000000 	nop
  43a3c4:	14400003 	bnez	v0,43a3d4 <collect_rw_ca_candidates+0x128>
  43a3c8:	00000000 	nop
  43a3cc:	10000018 	b	43a430 <collect_rw_ca_candidates+0x184>
  43a3d0:	00000000 	nop
	    {
		if (same_dn(gn->name, d->that.ca))
  43a3d4:	8fc2001c 	lw	v0,28(s8)
  43a3d8:	8fc30018 	lw	v1,24(s8)
  43a3dc:	8c440008 	lw	a0,8(v0)
  43a3e0:	8c45000c 	lw	a1,12(v0)
  43a3e4:	8c660184 	lw	a2,388(v1)
  43a3e8:	8c670188 	lw	a3,392(v1)
  43a3ec:	8f998604 	lw	t9,-31228(gp)
  43a3f0:	00000000 	nop
  43a3f4:	0320f809 	jalr	t9
  43a3f8:	00000000 	nop
  43a3fc:	8fdc0010 	lw	gp,16(s8)
  43a400:	10400004 	beqz	v0,43a414 <collect_rw_ca_candidates+0x168>
  43a404:	00000000 	nop
		{
		    new_entry = FALSE;
  43a408:	afc00020 	sw	zero,32(s8)
		    break;
  43a40c:	10000008 	b	43a430 <collect_rw_ca_candidates+0x184>
  43a410:	00000000 	nop
  43a414:	8fc2001c 	lw	v0,28(s8)
  43a418:	00000000 	nop
  43a41c:	8c420000 	lw	v0,0(v0)
  43a420:	00000000 	nop
  43a424:	afc2001c 	sw	v0,28(s8)
  43a428:	1000ffe4 	b	43a3bc <collect_rw_ca_candidates+0x110>
  43a42c:	00000000 	nop
		}
	    }
	    if (new_entry)
  43a430:	8fc20020 	lw	v0,32(s8)
  43a434:	00000000 	nop
  43a438:	10400022 	beqz	v0,43a4c4 <collect_rw_ca_candidates+0x218>
  43a43c:	00000000 	nop
	    {
		gn = alloc_thing(generalName_t, "generalName");
  43a440:	24040010 	li	a0,16
  43a444:	8f85802c 	lw	a1,-32724(gp)
  43a448:	00000000 	nop
  43a44c:	24a5d760 	addiu	a1,a1,-10400
  43a450:	8f998084 	lw	t9,-32636(gp)
  43a454:	00000000 	nop
  43a458:	0320f809 	jalr	t9
  43a45c:	00000000 	nop
  43a460:	8fdc0010 	lw	gp,16(s8)
  43a464:	afc2001c 	sw	v0,28(s8)
		gn->kind = GN_DIRECTORY_NAME;
  43a468:	24030004 	li	v1,4
  43a46c:	8fc2001c 	lw	v0,28(s8)
  43a470:	00000000 	nop
  43a474:	ac430004 	sw	v1,4(v0)
		gn->name = d->that.ca;
  43a478:	8fc4001c 	lw	a0,28(s8)
  43a47c:	8fc30018 	lw	v1,24(s8)
  43a480:	00000000 	nop
  43a484:	8c620184 	lw	v0,388(v1)
  43a488:	00000000 	nop
  43a48c:	ac820008 	sw	v0,8(a0)
  43a490:	8c620188 	lw	v0,392(v1)
  43a494:	00000000 	nop
  43a498:	ac82000c 	sw	v0,12(a0)
		gn->next = *top;
  43a49c:	8fc20044 	lw	v0,68(s8)
  43a4a0:	00000000 	nop
  43a4a4:	8c430000 	lw	v1,0(v0)
  43a4a8:	8fc2001c 	lw	v0,28(s8)
  43a4ac:	00000000 	nop
  43a4b0:	ac430000 	sw	v1,0(v0)
		*top = gn;
  43a4b4:	8fc3001c 	lw	v1,28(s8)
  43a4b8:	8fc20044 	lw	v0,68(s8)
  43a4bc:	00000000 	nop
  43a4c0:	ac430000 	sw	v1,0(v0)
  43a4c4:	8fc20018 	lw	v0,24(s8)
  43a4c8:	00000000 	nop
  43a4cc:	8c4201c8 	lw	v0,456(v0)
  43a4d0:	00000000 	nop
  43a4d4:	afc20018 	sw	v0,24(s8)
  43a4d8:	1000ff93 	b	43a328 <collect_rw_ca_candidates+0x7c>
  43a4dc:	00000000 	nop
	    }
	}
    }
    return *top != NULL;
  43a4e0:	8fc20044 	lw	v0,68(s8)
  43a4e4:	00000000 	nop
  43a4e8:	8c420000 	lw	v0,0(v0)
  43a4ec:	00000000 	nop
  43a4f0:	0002102b 	sltu	v0,zero,v0
}
  43a4f4:	03c0e821 	move	sp,s8
  43a4f8:	8fbf0038 	lw	ra,56(sp)
  43a4fc:	8fbe0034 	lw	s8,52(sp)
  43a500:	27bd0040 	addiu	sp,sp,64
  43a504:	03e00008 	jr	ra
  43a508:	00000000 	nop

0043a50c <build_and_ship_CR>:
  43a50c:	3c1c0fbd 	lui	gp,0xfbd
  43a510:	279c2464 	addiu	gp,gp,9316
  43a514:	0399e021 	addu	gp,gp,t9
  43a518:	27bdffa8 	addiu	sp,sp,-88
  43a51c:	afbc0010 	sw	gp,16(sp)
  43a520:	afbf0050 	sw	ra,80(sp)
  43a524:	afbe004c 	sw	s8,76(sp)
  43a528:	afbc0048 	sw	gp,72(sp)
  43a52c:	03a0f021 	move	s8,sp
  43a530:	00801021 	move	v0,a0
  43a534:	afc5005c 	sw	a1,92(s8)
  43a538:	afc60060 	sw	a2,96(s8)
  43a53c:	afc70064 	sw	a3,100(s8)
  43a540:	a3c20018 	sb	v0,24(s8)
  43a544:	8fc20068 	lw	v0,104(s8)
  43a548:	00000000 	nop
  43a54c:	a3c20019 	sb	v0,25(s8)

static bool
build_and_ship_CR(u_int8_t type, chunk_t ca, pb_stream *outs, u_int8_t np)
{
    pb_stream cr_pbs;
    struct isakmp_cr cr_hd;
    cr_hd.isacr_np = np;
  43a550:	93c20019 	lbu	v0,25(s8)
  43a554:	00000000 	nop
  43a558:	a3c20040 	sb	v0,64(s8)
    cr_hd.isacr_type = type;
  43a55c:	93c20018 	lbu	v0,24(s8)
  43a560:	00000000 	nop
  43a564:	a3c20044 	sb	v0,68(s8)

    /* build CR header */
    if (!out_struct(&cr_hd, &isakmp_ipsec_cert_req_desc, outs, &cr_pbs))
  43a568:	27c40040 	addiu	a0,s8,64
  43a56c:	8f858270 	lw	a1,-32144(gp)
  43a570:	8fc60064 	lw	a2,100(s8)
  43a574:	27c70020 	addiu	a3,s8,32
  43a578:	8f998ba0 	lw	t9,-29792(gp)
  43a57c:	00000000 	nop
  43a580:	0320f809 	jalr	t9
  43a584:	00000000 	nop
  43a588:	8fdc0010 	lw	gp,16(s8)
  43a58c:	14400004 	bnez	v0,43a5a0 <build_and_ship_CR+0x94>
  43a590:	00000000 	nop
	return FALSE;
  43a594:	00001021 	move	v0,zero
  43a598:	1000001d 	b	43a610 <build_and_ship_CR+0x104>
  43a59c:	00000000 	nop

    if (ca.ptr != NULL)
  43a5a0:	8fc2005c 	lw	v0,92(s8)
  43a5a4:	00000000 	nop
  43a5a8:	10400011 	beqz	v0,43a5f0 <build_and_ship_CR+0xe4>
  43a5ac:	00000000 	nop
    {
	/* build CR body containing the distinguished name of the CA */
	if (!out_chunk(ca, &cr_pbs, "CA"))
  43a5b0:	8fc4005c 	lw	a0,92(s8)
  43a5b4:	8fc50060 	lw	a1,96(s8)
  43a5b8:	27c60020 	addiu	a2,s8,32
  43a5bc:	8f87802c 	lw	a3,-32724(gp)
  43a5c0:	00000000 	nop
  43a5c4:	24e7d76c 	addiu	a3,a3,-10388
  43a5c8:	8f998308 	lw	t9,-31992(gp)
  43a5cc:	00000000 	nop
  43a5d0:	0320f809 	jalr	t9
  43a5d4:	00000000 	nop
  43a5d8:	8fdc0010 	lw	gp,16(s8)
  43a5dc:	14400004 	bnez	v0,43a5f0 <build_and_ship_CR+0xe4>
  43a5e0:	00000000 	nop
	    return FALSE;
  43a5e4:	00001021 	move	v0,zero
  43a5e8:	10000009 	b	43a610 <build_and_ship_CR+0x104>
  43a5ec:	00000000 	nop
    }
    close_output_pbs(&cr_pbs);
  43a5f0:	27c40020 	addiu	a0,s8,32
  43a5f4:	8f998228 	lw	t9,-32216(gp)
  43a5f8:	00000000 	nop
  43a5fc:	0320f809 	jalr	t9
  43a600:	00000000 	nop
  43a604:	8fdc0010 	lw	gp,16(s8)
  43a608:	00000000 	nop
    return TRUE;
  43a60c:	24020001 	li	v0,1
}
  43a610:	03c0e821 	move	sp,s8
  43a614:	8fbf0050 	lw	ra,80(sp)
  43a618:	8fbe004c 	lw	s8,76(sp)
  43a61c:	27bd0058 	addiu	sp,sp,88
  43a620:	03e00008 	jr	ra
  43a624:	00000000 	nop

0043a628 <send_notification>:
  43a628:	3c1c0fbd 	lui	gp,0xfbd
  43a62c:	279c2348 	addiu	gp,gp,9032
  43a630:	0399e021 	addu	gp,gp,t9
  43a634:	27bdf948 	addiu	sp,sp,-1720
  43a638:	afbc0018 	sw	gp,24(sp)
  43a63c:	afbf06b0 	sw	ra,1712(sp)
  43a640:	afbe06ac 	sw	s8,1708(sp)
  43a644:	afbc06a8 	sw	gp,1704(sp)
  43a648:	03a0f021 	move	s8,sp
  43a64c:	afc406b8 	sw	a0,1720(s8)
  43a650:	00a01021 	move	v0,a1
  43a654:	afc606c0 	sw	a2,1728(s8)
  43a658:	afc706c4 	sw	a3,1732(s8)
  43a65c:	a7c20020 	sh	v0,32(s8)
  43a660:	8fc206d8 	lw	v0,1752(s8)
  43a664:	00000000 	nop
  43a668:	a3c20022 	sb	v0,34(s8)

/*
 * Send a notification to the peer. We could make a decision on
 * whether to send the notification, based on the type and the
 * destination, if we care to.
 * It doesn't handle DELETE notifications (see send_ipsec_delete)
 */
static void
send_notification(struct state *sndst, u_int16_t type, struct state *encst,
    msgid_t msgid, u_char *icookie, u_char *rcookie,
    u_char *spi, size_t spisize, u_char protoid)
{
    u_char buffer[1024];
    pb_stream pbs, r_hdr_pbs;
    u_char *r_hashval, *r_hash_start;

    passert((sndst) && (sndst->st_connection));
  43a66c:	8fc206b8 	lw	v0,1720(s8)
  43a670:	00000000 	nop
  43a674:	10400007 	beqz	v0,43a694 <send_notification+0x6c>
  43a678:	00000000 	nop
  43a67c:	8fc206b8 	lw	v0,1720(s8)
  43a680:	00000000 	nop
  43a684:	8c42000c 	lw	v0,12(v0)
  43a688:	00000000 	nop
  43a68c:	1440000e 	bnez	v0,43a6c8 <send_notification+0xa0>
  43a690:	00000000 	nop
  43a694:	8f84802c 	lw	a0,-32724(gp)
  43a698:	00000000 	nop
  43a69c:	2484d770 	addiu	a0,a0,-10384
  43a6a0:	8f85802c 	lw	a1,-32724(gp)
  43a6a4:	00000000 	nop
  43a6a8:	24a5d59c 	addiu	a1,a1,-10852
  43a6ac:	24060172 	li	a2,370
  43a6b0:	8f998bb8 	lw	t9,-29768(gp)
  43a6b4:	00000000 	nop
  43a6b8:	0320f809 	jalr	t9
  43a6bc:	00000000 	nop
  43a6c0:	8fdc0018 	lw	gp,24(s8)
  43a6c4:	00000000 	nop

    plog("sending %snotification %s to %s:%u",
  43a6c8:	97c20020 	lhu	v0,32(s8)
  43a6cc:	8f848b2c 	lw	a0,-29908(gp)
  43a6d0:	00402821 	move	a1,v0
  43a6d4:	8f9984bc 	lw	t9,-31556(gp)
  43a6d8:	00000000 	nop
  43a6dc:	0320f809 	jalr	t9
  43a6e0:	00000000 	nop
  43a6e4:	8fdc0018 	lw	gp,24(s8)
  43a6e8:	afc20688 	sw	v0,1672(s8)
  43a6ec:	8fc206b8 	lw	v0,1720(s8)
  43a6f0:	00000000 	nop
  43a6f4:	8c42000c 	lw	v0,12(v0)
  43a6f8:	00000000 	nop
  43a6fc:	24420108 	addiu	v0,v0,264
  43a700:	00402021 	move	a0,v0
  43a704:	8f998100 	lw	t9,-32512(gp)
  43a708:	00000000 	nop
  43a70c:	0320f809 	jalr	t9
  43a710:	00000000 	nop
  43a714:	8fdc0018 	lw	gp,24(s8)
  43a718:	afc2068c 	sw	v0,1676(s8)
  43a71c:	8fc206c0 	lw	v0,1728(s8)
  43a720:	00000000 	nop
  43a724:	10400008 	beqz	v0,43a748 <send_notification+0x120>
  43a728:	00000000 	nop
  43a72c:	8f82802c 	lw	v0,-32724(gp)
  43a730:	00000000 	nop
  43a734:	2442d794 	addiu	v0,v0,-10348
  43a738:	00000000 	nop
  43a73c:	afc20690 	sw	v0,1680(s8)
  43a740:	10000006 	b	43a75c <send_notification+0x134>
  43a744:	00000000 	nop
  43a748:	8f82802c 	lw	v0,-32724(gp)
  43a74c:	00000000 	nop
  43a750:	2442d7a0 	addiu	v0,v0,-10336
  43a754:	00000000 	nop
  43a758:	afc20690 	sw	v0,1680(s8)
  43a75c:	8fc206b8 	lw	v0,1720(s8)
  43a760:	00000000 	nop
  43a764:	8c42000c 	lw	v0,12(v0)
  43a768:	00000000 	nop
  43a76c:	94420178 	lhu	v0,376(v0)
  43a770:	00000000 	nop
  43a774:	afa20010 	sw	v0,16(sp)
  43a778:	8f84802c 	lw	a0,-32724(gp)
  43a77c:	00000000 	nop
  43a780:	2484d7a4 	addiu	a0,a0,-10332
  43a784:	8fc50690 	lw	a1,1680(s8)
  43a788:	8fc60688 	lw	a2,1672(s8)
  43a78c:	8fc7068c 	lw	a3,1676(s8)
  43a790:	8f998abc 	lw	t9,-30020(gp)
  43a794:	00000000 	nop
  43a798:	0320f809 	jalr	t9
  43a79c:	00000000 	nop
  43a7a0:	8fdc0018 	lw	gp,24(s8)
  43a7a4:	00000000 	nop
	encst ? "encrypted " : "",
	enum_name(&ipsec_notification_names, type),
	ip_str(&sndst->st_connection->that.host_addr),
	(unsigned)sndst->st_connection->that.host_port);
	
    memset(buffer, 0, sizeof(buffer));
  43a7a8:	27c40028 	addiu	a0,s8,40
  43a7ac:	00002821 	move	a1,zero
  43a7b0:	24060400 	li	a2,1024
  43a7b4:	8f998500 	lw	t9,-31488(gp)
  43a7b8:	00000000 	nop
  43a7bc:	0320f809 	jalr	t9
  43a7c0:	00000000 	nop
  43a7c4:	8fdc0018 	lw	gp,24(s8)
  43a7c8:	00000000 	nop
    init_pbs(&pbs, buffer, sizeof(buffer), "notification msg");
  43a7cc:	27c40428 	addiu	a0,s8,1064
  43a7d0:	27c50028 	addiu	a1,s8,40
  43a7d4:	24060400 	li	a2,1024
  43a7d8:	8f87802c 	lw	a3,-32724(gp)
  43a7dc:	00000000 	nop
  43a7e0:	24e7d7c8 	addiu	a3,a3,-10296
  43a7e4:	8f998364 	lw	t9,-31900(gp)
  43a7e8:	00000000 	nop
  43a7ec:	0320f809 	jalr	t9
  43a7f0:	00000000 	nop
  43a7f4:	8fdc0018 	lw	gp,24(s8)
  43a7f8:	00000000 	nop

    /* HDR* */
    {
	struct isakmp_hdr hdr;

	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;
  43a7fc:	24020010 	li	v0,16
  43a800:	a3c20481 	sb	v0,1153(s8)
	hdr.isa_np = encst ? ISAKMP_NEXT_HASH : ISAKMP_NEXT_N;
  43a804:	8fc206c0 	lw	v0,1728(s8)
  43a808:	00000000 	nop
  43a80c:	10400005 	beqz	v0,43a824 <send_notification+0x1fc>
  43a810:	00000000 	nop
  43a814:	24020008 	li	v0,8
  43a818:	a3c20694 	sb	v0,1684(s8)
  43a81c:	10000003 	b	43a82c <send_notification+0x204>
  43a820:	00000000 	nop
  43a824:	2402000b 	li	v0,11
  43a828:	a3c20694 	sb	v0,1684(s8)
  43a82c:	93c20694 	lbu	v0,1684(s8)
  43a830:	00000000 	nop
  43a834:	a3c20480 	sb	v0,1152(s8)
	hdr.isa_xchg = ISAKMP_XCHG_INFO;
  43a838:	24020005 	li	v0,5
  43a83c:	a3c20482 	sb	v0,1154(s8)
	hdr.isa_msgid = msgid;
  43a840:	8fc206c4 	lw	v0,1732(s8)
  43a844:	00000000 	nop
  43a848:	afc20484 	sw	v0,1156(s8)
	hdr.isa_flags = encst ? ISAKMP_FLAG_ENCRYPTION : 0;
  43a84c:	8fc206c0 	lw	v0,1728(s8)
  43a850:	00000000 	nop
  43a854:	0002102b 	sltu	v0,zero,v0
  43a858:	a3c20483 	sb	v0,1155(s8)
	if (icookie)
  43a85c:	8fc206c8 	lw	v0,1736(s8)
  43a860:	00000000 	nop
  43a864:	1040000a 	beqz	v0,43a890 <send_notification+0x268>
  43a868:	00000000 	nop
	    memcpy(hdr.isa_icookie, icookie, COOKIE_SIZE);
  43a86c:	27c40470 	addiu	a0,s8,1136
  43a870:	8fc506c8 	lw	a1,1736(s8)
  43a874:	24060008 	li	a2,8
  43a878:	8f998a30 	lw	t9,-30160(gp)
  43a87c:	00000000 	nop
  43a880:	0320f809 	jalr	t9
  43a884:	00000000 	nop
  43a888:	8fdc0018 	lw	gp,24(s8)
  43a88c:	00000000 	nop
	if (rcookie)
  43a890:	8fc206cc 	lw	v0,1740(s8)
  43a894:	00000000 	nop
  43a898:	1040000c 	beqz	v0,43a8cc <send_notification+0x2a4>
  43a89c:	00000000 	nop
	    memcpy(hdr.isa_rcookie, rcookie, COOKIE_SIZE);
  43a8a0:	27c20470 	addiu	v0,s8,1136
  43a8a4:	24420008 	addiu	v0,v0,8
  43a8a8:	00402021 	move	a0,v0
  43a8ac:	8fc506cc 	lw	a1,1740(s8)
  43a8b0:	24060008 	li	a2,8
  43a8b4:	8f998a30 	lw	t9,-30160(gp)
  43a8b8:	00000000 	nop
  43a8bc:	0320f809 	jalr	t9
  43a8c0:	00000000 	nop
  43a8c4:	8fdc0018 	lw	gp,24(s8)
  43a8c8:	00000000 	nop
	if (!out_struct(&hdr, &isakmp_hdr_desc, &pbs, &r_hdr_pbs))
  43a8cc:	27c40470 	addiu	a0,s8,1136
  43a8d0:	8f858688 	lw	a1,-31096(gp)
  43a8d4:	27c60428 	addiu	a2,s8,1064
  43a8d8:	27c70448 	addiu	a3,s8,1096
  43a8dc:	8f998ba0 	lw	t9,-29792(gp)
  43a8e0:	00000000 	nop
  43a8e4:	0320f809 	jalr	t9
  43a8e8:	00000000 	nop
  43a8ec:	8fdc0018 	lw	gp,24(s8)
  43a8f0:	1440000e 	bnez	v0,43a92c <send_notification+0x304>
  43a8f4:	00000000 	nop
	    impossible();
  43a8f8:	8f84802c 	lw	a0,-32724(gp)
  43a8fc:	00000000 	nop
  43a900:	2484d590 	addiu	a0,a0,-10864
  43a904:	8f85802c 	lw	a1,-32724(gp)
  43a908:	00000000 	nop
  43a90c:	24a5d59c 	addiu	a1,a1,-10852
  43a910:	2406018b 	li	a2,395
  43a914:	8f998bb8 	lw	t9,-29768(gp)
  43a918:	00000000 	nop
  43a91c:	0320f809 	jalr	t9
  43a920:	00000000 	nop
  43a924:	8fdc0018 	lw	gp,24(s8)
  43a928:	00000000 	nop
    }

    /* HASH -- value to be filled later */
    if (encst)
  43a92c:	8fc206c0 	lw	v0,1728(s8)
  43a930:	00000000 	nop
  43a934:	10400043 	beqz	v0,43aa44 <send_notification+0x41c>
  43a938:	00000000 	nop
    {
	pb_stream hash_pbs;
	if (!out_generic(ISAKMP_NEXT_N, &isakmp_hash_desc, &r_hdr_pbs,
	    &hash_pbs))
  43a93c:	2404000b 	li	a0,11
  43a940:	8f858924 	lw	a1,-30428(gp)
  43a944:	27c60448 	addiu	a2,s8,1096
  43a948:	27c70490 	addiu	a3,s8,1168
  43a94c:	8f9986d4 	lw	t9,-31020(gp)
  43a950:	00000000 	nop
  43a954:	0320f809 	jalr	t9
  43a958:	00000000 	nop
  43a95c:	8fdc0018 	lw	gp,24(s8)
  43a960:	1440000e 	bnez	v0,43a99c <send_notification+0x374>
  43a964:	00000000 	nop
	    impossible();
  43a968:	8f84802c 	lw	a0,-32724(gp)
  43a96c:	00000000 	nop
  43a970:	2484d590 	addiu	a0,a0,-10864
  43a974:	8f85802c 	lw	a1,-32724(gp)
  43a978:	00000000 	nop
  43a97c:	24a5d59c 	addiu	a1,a1,-10852
  43a980:	24060194 	li	a2,404
  43a984:	8f998bb8 	lw	t9,-29768(gp)
  43a988:	00000000 	nop
  43a98c:	0320f809 	jalr	t9
  43a990:	00000000 	nop
  43a994:	8fdc0018 	lw	gp,24(s8)
  43a998:	00000000 	nop
	r_hashval = hash_pbs.cur;  /* remember where to plant value */
  43a99c:	8fc204a0 	lw	v0,1184(s8)
  43a9a0:	00000000 	nop
  43a9a4:	afc20468 	sw	v0,1128(s8)
	if (!out_zero(
#ifdef _IKE_ALG_H
	    encst->st_oakley.hasher->hash_digest_size,
#else
	    encst->st_oakley.hasher->hash_digest_len,
#endif
	    &hash_pbs, "HASH(1)"))
  43a9a8:	8fc206c0 	lw	v0,1728(s8)
  43a9ac:	00000000 	nop
  43a9b0:	8c420028 	lw	v0,40(v0)
  43a9b4:	00000000 	nop
  43a9b8:	8c44000c 	lw	a0,12(v0)
  43a9bc:	27c50490 	addiu	a1,s8,1168
  43a9c0:	8f86802c 	lw	a2,-32724(gp)
  43a9c4:	00000000 	nop
  43a9c8:	24c6d7dc 	addiu	a2,a2,-10276
  43a9cc:	8f998a20 	lw	t9,-30176(gp)
  43a9d0:	00000000 	nop
  43a9d4:	0320f809 	jalr	t9
  43a9d8:	00000000 	nop
  43a9dc:	8fdc0018 	lw	gp,24(s8)
  43a9e0:	1440000e 	bnez	v0,43aa1c <send_notification+0x3f4>
  43a9e4:	00000000 	nop
	    impossible();
  43a9e8:	8f84802c 	lw	a0,-32724(gp)
  43a9ec:	00000000 	nop
  43a9f0:	2484d590 	addiu	a0,a0,-10864
  43a9f4:	8f85802c 	lw	a1,-32724(gp)
  43a9f8:	00000000 	nop
  43a9fc:	24a5d59c 	addiu	a1,a1,-10852
  43aa00:	2406019d 	li	a2,413
  43aa04:	8f998bb8 	lw	t9,-29768(gp)
  43aa08:	00000000 	nop
  43aa0c:	0320f809 	jalr	t9
  43aa10:	00000000 	nop
  43aa14:	8fdc0018 	lw	gp,24(s8)
  43aa18:	00000000 	nop
	close_output_pbs(&hash_pbs);
  43aa1c:	27c40490 	addiu	a0,s8,1168
  43aa20:	8f998228 	lw	t9,-32216(gp)
  43aa24:	00000000 	nop
  43aa28:	0320f809 	jalr	t9
  43aa2c:	00000000 	nop
  43aa30:	8fdc0018 	lw	gp,24(s8)
  43aa34:	00000000 	nop
	r_hash_start = r_hdr_pbs.cur; /* hash from after HASH(1) */
  43aa38:	8fc20458 	lw	v0,1112(s8)
  43aa3c:	00000000 	nop
  43aa40:	afc2046c 	sw	v0,1132(s8)
    }

    /* Notification Payload */
    {
	pb_stream not_pbs;
	struct isakmp_notification isan;

	isan.isan_doi = ISAKMP_DOI_IPSEC;
  43aa44:	24020001 	li	v0,1
  43aa48:	afc204d4 	sw	v0,1236(s8)
	isan.isan_np = ISAKMP_NEXT_NONE;
  43aa4c:	a3c004d0 	sb	zero,1232(s8)
	isan.isan_type = type;
  43aa50:	97c20020 	lhu	v0,32(s8)
  43aa54:	00000000 	nop
  43aa58:	a7c204da 	sh	v0,1242(s8)
	isan.isan_spisize = spisize;
  43aa5c:	93c206d7 	lbu	v0,1751(s8)
  43aa60:	00000000 	nop
  43aa64:	a3c204d9 	sb	v0,1241(s8)
	isan.isan_protoid = protoid;
  43aa68:	93c20022 	lbu	v0,34(s8)
  43aa6c:	00000000 	nop
  43aa70:	a3c204d8 	sb	v0,1240(s8)

	if (!out_struct(&isan, &isakmp_notification_desc, &r_hdr_pbs, &not_pbs)
	    || !out_raw(spi, spisize, &not_pbs, "spi"))
  43aa74:	27c404d0 	addiu	a0,s8,1232
  43aa78:	8f85812c 	lw	a1,-32468(gp)
  43aa7c:	27c60448 	addiu	a2,s8,1096
  43aa80:	27c704b0 	addiu	a3,s8,1200
  43aa84:	8f998ba0 	lw	t9,-29792(gp)
  43aa88:	00000000 	nop
  43aa8c:	0320f809 	jalr	t9
  43aa90:	00000000 	nop
  43aa94:	8fdc0018 	lw	gp,24(s8)
  43aa98:	1040000e 	beqz	v0,43aad4 <send_notification+0x4ac>
  43aa9c:	00000000 	nop
  43aaa0:	8fc406d0 	lw	a0,1744(s8)
  43aaa4:	8fc506d4 	lw	a1,1748(s8)
  43aaa8:	27c604b0 	addiu	a2,s8,1200
  43aaac:	8f87802c 	lw	a3,-32724(gp)
  43aab0:	00000000 	nop
  43aab4:	24e7d7e4 	addiu	a3,a3,-10268
  43aab8:	8f998308 	lw	t9,-31992(gp)
  43aabc:	00000000 	nop
  43aac0:	0320f809 	jalr	t9
  43aac4:	00000000 	nop
  43aac8:	8fdc0018 	lw	gp,24(s8)
  43aacc:	1440000e 	bnez	v0,43ab08 <send_notification+0x4e0>
  43aad0:	00000000 	nop
	    impossible();
  43aad4:	8f84802c 	lw	a0,-32724(gp)
  43aad8:	00000000 	nop
  43aadc:	2484d590 	addiu	a0,a0,-10864
  43aae0:	8f85802c 	lw	a1,-32724(gp)
  43aae4:	00000000 	nop
  43aae8:	24a5d59c 	addiu	a1,a1,-10852
  43aaec:	240601af 	li	a2,431
  43aaf0:	8f998bb8 	lw	t9,-29768(gp)
  43aaf4:	00000000 	nop
  43aaf8:	0320f809 	jalr	t9
  43aafc:	00000000 	nop
  43ab00:	8fdc0018 	lw	gp,24(s8)
  43ab04:	00000000 	nop
	close_output_pbs(&not_pbs);
  43ab08:	27c404b0 	addiu	a0,s8,1200
  43ab0c:	8f998228 	lw	t9,-32216(gp)
  43ab10:	00000000 	nop
  43ab14:	0320f809 	jalr	t9
  43ab18:	00000000 	nop
  43ab1c:	8fdc0018 	lw	gp,24(s8)
  43ab20:	00000000 	nop
    }

    /* calculate hash value and patch into Hash Payload */
    if (encst)
  43ab24:	8fc206c0 	lw	v0,1728(s8)
  43ab28:	00000000 	nop
  43ab2c:	1040004a 	beqz	v0,43ac58 <send_notification+0x630>
  43ab30:	00000000 	nop
    {
	struct hmac_ctx ctx;
	hmac_init_chunk(&ctx, encst->st_oakley.hasher, encst->st_skeyid_a);
  43ab34:	27c404e0 	addiu	a0,s8,1248
  43ab38:	8fc206c0 	lw	v0,1728(s8)
  43ab3c:	00000000 	nop
  43ab40:	8c450028 	lw	a1,40(v0)
  43ab44:	8fc206c0 	lw	v0,1728(s8)
  43ab48:	00000000 	nop
  43ab4c:	8c460174 	lw	a2,372(v0)
  43ab50:	8fc206c0 	lw	v0,1728(s8)
  43ab54:	00000000 	nop
  43ab58:	8c470178 	lw	a3,376(v0)
  43ab5c:	8f9989e0 	lw	t9,-30240(gp)
  43ab60:	00000000 	nop
  43ab64:	0320f809 	jalr	t9
  43ab68:	00000000 	nop
  43ab6c:	8fdc0018 	lw	gp,24(s8)
  43ab70:	00000000 	nop
	hmac_update(&ctx, (u_char *) &msgid, sizeof(msgid_t));
  43ab74:	27c404e0 	addiu	a0,s8,1248
  43ab78:	27c506c4 	addiu	a1,s8,1732
  43ab7c:	24060004 	li	a2,4
  43ab80:	8f9983d4 	lw	t9,-31788(gp)
  43ab84:	00000000 	nop
  43ab88:	0320f809 	jalr	t9
  43ab8c:	00000000 	nop
  43ab90:	8fdc0018 	lw	gp,24(s8)
  43ab94:	00000000 	nop
	hmac_update(&ctx, r_hash_start, r_hdr_pbs.cur-r_hash_start);
  43ab98:	8fc30458 	lw	v1,1112(s8)
  43ab9c:	8fc2046c 	lw	v0,1132(s8)
  43aba0:	00000000 	nop
  43aba4:	00621023 	subu	v0,v1,v0
  43aba8:	27c404e0 	addiu	a0,s8,1248
  43abac:	8fc5046c 	lw	a1,1132(s8)
  43abb0:	00403021 	move	a2,v0
  43abb4:	8f9983d4 	lw	t9,-31788(gp)
  43abb8:	00000000 	nop
  43abbc:	0320f809 	jalr	t9
  43abc0:	00000000 	nop
  43abc4:	8fdc0018 	lw	gp,24(s8)
  43abc8:	00000000 	nop
	hmac_final(r_hashval, &ctx);
  43abcc:	8fc40468 	lw	a0,1128(s8)
  43abd0:	27c504e0 	addiu	a1,s8,1248
  43abd4:	8f998728 	lw	t9,-30936(gp)
  43abd8:	00000000 	nop
  43abdc:	0320f809 	jalr	t9
  43abe0:	00000000 	nop
  43abe4:	8fdc0018 	lw	gp,24(s8)
  43abe8:	00000000 	nop

#ifdef _IKE_ALG_H
	DBG(DBG_CRYPT,
  43abec:	8f8284f8 	lw	v0,-31496(gp)
  43abf0:	00000000 	nop
  43abf4:	8c420000 	lw	v0,0(v0)
  43abf8:	00000000 	nop
  43abfc:	30420002 	andi	v0,v0,0x2
  43ac00:	10400015 	beqz	v0,43ac58 <send_notification+0x630>
  43ac04:	00000000 	nop
  43ac08:	8f84802c 	lw	a0,-32724(gp)
  43ac0c:	00000000 	nop
  43ac10:	2484d7e8 	addiu	a0,a0,-10264
  43ac14:	8f9983b8 	lw	t9,-31816(gp)
  43ac18:	00000000 	nop
  43ac1c:	0320f809 	jalr	t9
  43ac20:	00000000 	nop
  43ac24:	8fdc0018 	lw	gp,24(s8)
  43ac28:	00000000 	nop
  43ac2c:	8f84802c 	lw	a0,-32724(gp)
  43ac30:	00000000 	nop
  43ac34:	2484d7a0 	addiu	a0,a0,-10336
  43ac38:	8fc50468 	lw	a1,1128(s8)
  43ac3c:	8fc604e4 	lw	a2,1252(s8)
  43ac40:	8f9984ec 	lw	t9,-31508(gp)
  43ac44:	00000000 	nop
  43ac48:	0320f809 	jalr	t9
  43ac4c:	00000000 	nop
  43ac50:	8fdc0018 	lw	gp,24(s8)
  43ac54:	00000000 	nop
	    DBG_log("HASH(1) computed:");
	    DBG_dump("", r_hashval, ctx.hmac_digest_size);
	)
    }
#else
	DBG(DBG_CRYPT,
	    DBG_log("HASH(1) computed:");
	    DBG_dump("", r_hashval, ctx.hmac_digest_len);
	)
    }
#endif

    /* Encrypt message (preserve st_iv) */
    if (encst)
  43ac58:	8fc206c0 	lw	v0,1728(s8)
  43ac5c:	00000000 	nop
  43ac60:	10400050 	beqz	v0,43ada4 <send_notification+0x77c>
  43ac64:	00000000 	nop
    {
	u_char old_iv[MAX_DIGEST_LEN];
	if (encst->st_iv_len > MAX_DIGEST_LEN)
  43ac68:	8fc206c0 	lw	v0,1728(s8)
  43ac6c:	00000000 	nop
  43ac70:	8c420244 	lw	v0,580(v0)
  43ac74:	00000000 	nop
  43ac78:	2c420041 	sltiu	v0,v0,65
  43ac7c:	1440000e 	bnez	v0,43acb8 <send_notification+0x690>
  43ac80:	00000000 	nop
	    impossible();
  43ac84:	8f84802c 	lw	a0,-32724(gp)
  43ac88:	00000000 	nop
  43ac8c:	2484d590 	addiu	a0,a0,-10864
  43ac90:	8f85802c 	lw	a1,-32724(gp)
  43ac94:	00000000 	nop
  43ac98:	24a5d59c 	addiu	a1,a1,-10852
  43ac9c:	240601cf 	li	a2,463
  43aca0:	8f998bb8 	lw	t9,-29768(gp)
  43aca4:	00000000 	nop
  43aca8:	0320f809 	jalr	t9
  43acac:	00000000 	nop
  43acb0:	8fdc0018 	lw	gp,24(s8)
  43acb4:	00000000 	nop
	memcpy(old_iv, encst->st_iv, encst->st_iv_len);
  43acb8:	8fc206c0 	lw	v0,1728(s8)
  43acbc:	00000000 	nop
  43acc0:	24420184 	addiu	v0,v0,388
  43acc4:	27c40640 	addiu	a0,s8,1600
  43acc8:	00402821 	move	a1,v0
  43accc:	8fc206c0 	lw	v0,1728(s8)
  43acd0:	00000000 	nop
  43acd4:	8c460244 	lw	a2,580(v0)
  43acd8:	8f998a30 	lw	t9,-30160(gp)
  43acdc:	00000000 	nop
  43ace0:	0320f809 	jalr	t9
  43ace4:	00000000 	nop
  43ace8:	8fdc0018 	lw	gp,24(s8)
  43acec:	00000000 	nop
	init_phase2_iv(encst, &msgid);
  43acf0:	8fc406c0 	lw	a0,1728(s8)
  43acf4:	27c506c4 	addiu	a1,s8,1732
  43acf8:	8f998bc8 	lw	t9,-29752(gp)
  43acfc:	00000000 	nop
  43ad00:	0320f809 	jalr	t9
  43ad04:	00000000 	nop
  43ad08:	8fdc0018 	lw	gp,24(s8)
  43ad0c:	00000000 	nop
	if (!encrypt_message(&r_hdr_pbs, encst))
  43ad10:	27c40448 	addiu	a0,s8,1096
  43ad14:	8fc506c0 	lw	a1,1728(s8)
  43ad18:	8f99885c 	lw	t9,-30628(gp)
  43ad1c:	00000000 	nop
  43ad20:	0320f809 	jalr	t9
  43ad24:	00000000 	nop
  43ad28:	8fdc0018 	lw	gp,24(s8)
  43ad2c:	1440000e 	bnez	v0,43ad68 <send_notification+0x740>
  43ad30:	00000000 	nop
	    impossible();
  43ad34:	8f84802c 	lw	a0,-32724(gp)
  43ad38:	00000000 	nop
  43ad3c:	2484d590 	addiu	a0,a0,-10864
  43ad40:	8f85802c 	lw	a1,-32724(gp)
  43ad44:	00000000 	nop
  43ad48:	24a5d59c 	addiu	a1,a1,-10852
  43ad4c:	240601d3 	li	a2,467
  43ad50:	8f998bb8 	lw	t9,-29768(gp)
  43ad54:	00000000 	nop
  43ad58:	0320f809 	jalr	t9
  43ad5c:	00000000 	nop
  43ad60:	8fdc0018 	lw	gp,24(s8)
  43ad64:	00000000 	nop
	memcpy(encst->st_iv, old_iv, encst->st_iv_len);
  43ad68:	8fc206c0 	lw	v0,1728(s8)
  43ad6c:	00000000 	nop
  43ad70:	24420184 	addiu	v0,v0,388
  43ad74:	00402021 	move	a0,v0
  43ad78:	27c50640 	addiu	a1,s8,1600
  43ad7c:	8fc206c0 	lw	v0,1728(s8)
  43ad80:	00000000 	nop
  43ad84:	8c460244 	lw	a2,580(v0)
  43ad88:	8f998a30 	lw	t9,-30160(gp)
  43ad8c:	00000000 	nop
  43ad90:	0320f809 	jalr	t9
  43ad94:	00000000 	nop
  43ad98:	8fdc0018 	lw	gp,24(s8)
  43ad9c:	10000008 	b	43adc0 <send_notification+0x798>
  43ada0:	00000000 	nop
    }
    else
    {
	close_output_pbs(&r_hdr_pbs);
  43ada4:	27c40448 	addiu	a0,s8,1096
  43ada8:	8f998228 	lw	t9,-32216(gp)
  43adac:	00000000 	nop
  43adb0:	0320f809 	jalr	t9
  43adb4:	00000000 	nop
  43adb8:	8fdc0018 	lw	gp,24(s8)
  43adbc:	00000000 	nop
    }

    /* Send packet (preserve st_tpacket) */
    {
	chunk_t saved_tpacket = sndst->st_tpacket;
  43adc0:	8fc306b8 	lw	v1,1720(s8)
  43adc4:	00000000 	nop
  43adc8:	8c620118 	lw	v0,280(v1)
  43adcc:	00000000 	nop
  43add0:	afc20680 	sw	v0,1664(s8)
  43add4:	8c62011c 	lw	v0,284(v1)
  43add8:	00000000 	nop
  43addc:	afc20684 	sw	v0,1668(s8)

	setchunk(sndst->st_tpacket, pbs.start, pbs_offset(&pbs));
  43ade0:	8fc30434 	lw	v1,1076(s8)
  43ade4:	8fc206b8 	lw	v0,1720(s8)
  43ade8:	00000000 	nop
  43adec:	ac430118 	sw	v1,280(v0)
  43adf0:	8fc30438 	lw	v1,1080(s8)
  43adf4:	8fc20434 	lw	v0,1076(s8)
  43adf8:	00000000 	nop
  43adfc:	00621823 	subu	v1,v1,v0
  43ae00:	8fc206b8 	lw	v0,1720(s8)
  43ae04:	00000000 	nop
  43ae08:	ac43011c 	sw	v1,284(v0)
	send_packet(sndst, "notification packet");
  43ae0c:	8fc406b8 	lw	a0,1720(s8)
  43ae10:	8f85802c 	lw	a1,-32724(gp)
  43ae14:	00000000 	nop
  43ae18:	24a5d7fc 	addiu	a1,a1,-10244
  43ae1c:	24060001 	li	a2,1
  43ae20:	8f9987f0 	lw	t9,-30736(gp)
  43ae24:	00000000 	nop
  43ae28:	0320f809 	jalr	t9
  43ae2c:	00000000 	nop
  43ae30:	8fdc0018 	lw	gp,24(s8)
  43ae34:	00000000 	nop
	sndst->st_tpacket = saved_tpacket;
  43ae38:	8fc306b8 	lw	v1,1720(s8)
  43ae3c:	8fc20680 	lw	v0,1664(s8)
  43ae40:	00000000 	nop
  43ae44:	ac620118 	sw	v0,280(v1)
  43ae48:	8fc20684 	lw	v0,1668(s8)
  43ae4c:	00000000 	nop
  43ae50:	ac62011c 	sw	v0,284(v1)
    }
}
  43ae54:	03c0e821 	move	sp,s8
  43ae58:	8fbf06b0 	lw	ra,1712(sp)
  43ae5c:	8fbe06ac 	lw	s8,1708(sp)
  43ae60:	27bd06b8 	addiu	sp,sp,1720
  43ae64:	03e00008 	jr	ra
  43ae68:	00000000 	nop

0043ae6c <send_notification_from_state>:
  43ae6c:	3c1c0fbd 	lui	gp,0xfbd
  43ae70:	279c1b04 	addiu	gp,gp,6916
  43ae74:	0399e021 	addu	gp,gp,t9
  43ae78:	27bdffb8 	addiu	sp,sp,-72
  43ae7c:	afbc0028 	sw	gp,40(sp)
  43ae80:	afbf0040 	sw	ra,64(sp)
  43ae84:	afbe003c 	sw	s8,60(sp)
  43ae88:	afbc0038 	sw	gp,56(sp)
  43ae8c:	03a0f021 	move	s8,sp
  43ae90:	afc40048 	sw	a0,72(s8)
  43ae94:	afc5004c 	sw	a1,76(s8)
  43ae98:	00c01021 	move	v0,a2
  43ae9c:	a7c20030 	sh	v0,48(s8)

void
send_notification_from_state(struct state *st, enum state_kind state,
    u_int16_t type)
{
    struct state *p1st;

    passert(st);
  43aea0:	8fc20048 	lw	v0,72(s8)
  43aea4:	00000000 	nop
  43aea8:	1440000e 	bnez	v0,43aee4 <send_notification_from_state+0x78>
  43aeac:	00000000 	nop
  43aeb0:	8f84802c 	lw	a0,-32724(gp)
  43aeb4:	00000000 	nop
  43aeb8:	2484d810 	addiu	a0,a0,-10224
  43aebc:	8f85802c 	lw	a1,-32724(gp)
  43aec0:	00000000 	nop
  43aec4:	24a5d59c 	addiu	a1,a1,-10852
  43aec8:	240601eb 	li	a2,491
  43aecc:	8f998bb8 	lw	t9,-29768(gp)
  43aed0:	00000000 	nop
  43aed4:	0320f809 	jalr	t9
  43aed8:	00000000 	nop
  43aedc:	8fdc0028 	lw	gp,40(s8)
  43aee0:	00000000 	nop

    if (state == STATE_UNDEFINED)
  43aee4:	8fc2004c 	lw	v0,76(s8)
  43aee8:	00000000 	nop
  43aeec:	14400006 	bnez	v0,43af08 <send_notification_from_state+0x9c>
  43aef0:	00000000 	nop
	state = st->st_state;
  43aef4:	8fc20048 	lw	v0,72(s8)
  43aef8:	00000000 	nop
  43aefc:	8c42014c 	lw	v0,332(v0)
  43af00:	00000000 	nop
  43af04:	afc2004c 	sw	v0,76(s8)

    if (IS_QUICK(state)) {
  43af08:	8fc2004c 	lw	v0,76(s8)
  43af0c:	00000000 	nop
  43af10:	2c420015 	sltiu	v0,v0,21
  43af14:	14400066 	bnez	v0,43b0b0 <send_notification_from_state+0x244>
  43af18:	00000000 	nop
  43af1c:	8fc2004c 	lw	v0,76(s8)
  43af20:	00000000 	nop
  43af24:	2c42001a 	sltiu	v0,v0,26
  43af28:	10400061 	beqz	v0,43b0b0 <send_notification_from_state+0x244>
  43af2c:	00000000 	nop
	p1st = find_phase1_state(st->st_connection, TRUE);
  43af30:	8fc20048 	lw	v0,72(s8)
  43af34:	00000000 	nop
  43af38:	8c44000c 	lw	a0,12(v0)
  43af3c:	24050001 	li	a1,1
  43af40:	8f9982e4 	lw	t9,-32028(gp)
  43af44:	00000000 	nop
  43af48:	0320f809 	jalr	t9
  43af4c:	00000000 	nop
  43af50:	8fdc0028 	lw	gp,40(s8)
  43af54:	afc20034 	sw	v0,52(s8)
	if ((p1st == NULL) || (!IS_ISAKMP_SA_ESTABLISHED(p1st->st_state))) {
  43af58:	8fc20034 	lw	v0,52(s8)
  43af5c:	00000000 	nop
  43af60:	10400027 	beqz	v0,43b000 <send_notification_from_state+0x194>
  43af64:	00000000 	nop
  43af68:	8fc20034 	lw	v0,52(s8)
  43af6c:	00000000 	nop
  43af70:	8c43014c 	lw	v1,332(v0)
  43af74:	24020009 	li	v0,9
  43af78:	1062002d 	beq	v1,v0,43b030 <send_notification_from_state+0x1c4>
  43af7c:	00000000 	nop
  43af80:	8fc20034 	lw	v0,52(s8)
  43af84:	00000000 	nop
  43af88:	8c43014c 	lw	v1,332(v0)
  43af8c:	2402000a 	li	v0,10
  43af90:	10620027 	beq	v1,v0,43b030 <send_notification_from_state+0x1c4>
  43af94:	00000000 	nop
  43af98:	8fc20034 	lw	v0,52(s8)
  43af9c:	00000000 	nop
  43afa0:	8c43014c 	lw	v1,332(v0)
  43afa4:	2402000e 	li	v0,14
  43afa8:	10620021 	beq	v1,v0,43b030 <send_notification_from_state+0x1c4>
  43afac:	00000000 	nop
  43afb0:	8fc20034 	lw	v0,52(s8)
  43afb4:	00000000 	nop
  43afb8:	8c43014c 	lw	v1,332(v0)
  43afbc:	2402000f 	li	v0,15
  43afc0:	1062001b 	beq	v1,v0,43b030 <send_notification_from_state+0x1c4>
  43afc4:	00000000 	nop
  43afc8:	8fc20034 	lw	v0,52(s8)
  43afcc:	00000000 	nop
  43afd0:	8c43014c 	lw	v1,332(v0)
  43afd4:	24020010 	li	v0,16
  43afd8:	10620015 	beq	v1,v0,43b030 <send_notification_from_state+0x1c4>
  43afdc:	00000000 	nop
  43afe0:	8fc20034 	lw	v0,52(s8)
  43afe4:	00000000 	nop
  43afe8:	8c43014c 	lw	v1,332(v0)
  43afec:	24020011 	li	v0,17
  43aff0:	14620003 	bne	v1,v0,43b000 <send_notification_from_state+0x194>
  43aff4:	00000000 	nop
  43aff8:	1000000d 	b	43b030 <send_notification_from_state+0x1c4>
  43affc:	00000000 	nop
	    loglog(RC_LOG_SERIOUS,
  43b000:	24040003 	li	a0,3
  43b004:	8f85802c 	lw	a1,-32724(gp)
  43b008:	00000000 	nop
  43b00c:	24a5d814 	addiu	a1,a1,-10220
  43b010:	8f998c48 	lw	t9,-29624(gp)
  43b014:	00000000 	nop
  43b018:	0320f809 	jalr	t9
  43b01c:	00000000 	nop
  43b020:	8fdc0028 	lw	gp,40(s8)
  43b024:	00000000 	nop
		"no Phase1 state for Quick mode notification");
	    return;
  43b028:	10000074 	b	43b1fc <send_notification_from_state+0x390>
  43b02c:	00000000 	nop
	}
	send_notification(st, type, p1st, generate_msgid(p1st),
  43b030:	8fc40034 	lw	a0,52(s8)
  43b034:	8f99826c 	lw	t9,-32148(gp)
  43b038:	00000000 	nop
  43b03c:	0320f809 	jalr	t9
  43b040:	00000000 	nop
  43b044:	8fdc0028 	lw	gp,40(s8)
  43b048:	00403821 	move	a3,v0
  43b04c:	97c30030 	lhu	v1,48(s8)
  43b050:	8fc20048 	lw	v0,72(s8)
  43b054:	00000000 	nop
  43b058:	244200f0 	addiu	v0,v0,240
  43b05c:	afa20010 	sw	v0,16(sp)
  43b060:	8fc20048 	lw	v0,72(s8)
  43b064:	00000000 	nop
  43b068:	24420108 	addiu	v0,v0,264
  43b06c:	afa20014 	sw	v0,20(sp)
  43b070:	afa00018 	sw	zero,24(sp)
  43b074:	afa0001c 	sw	zero,28(sp)
  43b078:	24020001 	li	v0,1
  43b07c:	afa20020 	sw	v0,32(sp)
  43b080:	8fc40048 	lw	a0,72(s8)
  43b084:	00602821 	move	a1,v1
  43b088:	8fc60034 	lw	a2,52(s8)
  43b08c:	8f998034 	lw	t9,-32716(gp)
  43b090:	00000000 	nop
  43b094:	2739a628 	addiu	t9,t9,-23000
  43b098:	00000000 	nop
  43b09c:	0320f809 	jalr	t9
  43b0a0:	00000000 	nop
  43b0a4:	8fdc0028 	lw	gp,40(s8)
  43b0a8:	10000054 	b	43b1fc <send_notification_from_state+0x390>
  43b0ac:	00000000 	nop
	    st->st_icookie, st->st_rcookie, NULL, 0, PROTO_ISAKMP);
    }
    else if (IS_ISAKMP_SA_ESTABLISHED(state)) {
  43b0b0:	8fc3004c 	lw	v1,76(s8)
  43b0b4:	24020009 	li	v0,9
  43b0b8:	10620017 	beq	v1,v0,43b118 <send_notification_from_state+0x2ac>
  43b0bc:	00000000 	nop
  43b0c0:	8fc3004c 	lw	v1,76(s8)
  43b0c4:	2402000a 	li	v0,10
  43b0c8:	10620013 	beq	v1,v0,43b118 <send_notification_from_state+0x2ac>
  43b0cc:	00000000 	nop
  43b0d0:	8fc3004c 	lw	v1,76(s8)
  43b0d4:	2402000e 	li	v0,14
  43b0d8:	1062000f 	beq	v1,v0,43b118 <send_notification_from_state+0x2ac>
  43b0dc:	00000000 	nop
  43b0e0:	8fc3004c 	lw	v1,76(s8)
  43b0e4:	2402000f 	li	v0,15
  43b0e8:	1062000b 	beq	v1,v0,43b118 <send_notification_from_state+0x2ac>
  43b0ec:	00000000 	nop
  43b0f0:	8fc3004c 	lw	v1,76(s8)
  43b0f4:	24020010 	li	v0,16
  43b0f8:	10620007 	beq	v1,v0,43b118 <send_notification_from_state+0x2ac>
  43b0fc:	00000000 	nop
  43b100:	8fc3004c 	lw	v1,76(s8)
  43b104:	24020011 	li	v0,17
  43b108:	10620003 	beq	v1,v0,43b118 <send_notification_from_state+0x2ac>
  43b10c:	00000000 	nop
  43b110:	10000021 	b	43b198 <send_notification_from_state+0x32c>
  43b114:	00000000 	nop
	send_notification(st, type, st, generate_msgid(st),
  43b118:	8fc40048 	lw	a0,72(s8)
  43b11c:	8f99826c 	lw	t9,-32148(gp)
  43b120:	00000000 	nop
  43b124:	0320f809 	jalr	t9
  43b128:	00000000 	nop
  43b12c:	8fdc0028 	lw	gp,40(s8)
  43b130:	00403821 	move	a3,v0
  43b134:	97c30030 	lhu	v1,48(s8)
  43b138:	8fc20048 	lw	v0,72(s8)
  43b13c:	00000000 	nop
  43b140:	244200f0 	addiu	v0,v0,240
  43b144:	afa20010 	sw	v0,16(sp)
  43b148:	8fc20048 	lw	v0,72(s8)
  43b14c:	00000000 	nop
  43b150:	24420108 	addiu	v0,v0,264
  43b154:	afa20014 	sw	v0,20(sp)
  43b158:	afa00018 	sw	zero,24(sp)
  43b15c:	afa0001c 	sw	zero,28(sp)
  43b160:	24020001 	li	v0,1
  43b164:	afa20020 	sw	v0,32(sp)
  43b168:	8fc40048 	lw	a0,72(s8)
  43b16c:	00602821 	move	a1,v1
  43b170:	8fc60048 	lw	a2,72(s8)
  43b174:	8f998034 	lw	t9,-32716(gp)
  43b178:	00000000 	nop
  43b17c:	2739a628 	addiu	t9,t9,-23000
  43b180:	00000000 	nop
  43b184:	0320f809 	jalr	t9
  43b188:	00000000 	nop
  43b18c:	8fdc0028 	lw	gp,40(s8)
  43b190:	1000001a 	b	43b1fc <send_notification_from_state+0x390>
  43b194:	00000000 	nop
	    st->st_icookie, st->st_rcookie, NULL, 0, PROTO_ISAKMP);
    }
    else {
	/* no ISAKMP SA established - don't encrypt notification */
	send_notification(st, type, NULL, 0,
  43b198:	97c30030 	lhu	v1,48(s8)
  43b19c:	8fc20048 	lw	v0,72(s8)
  43b1a0:	00000000 	nop
  43b1a4:	244200f0 	addiu	v0,v0,240
  43b1a8:	afa20010 	sw	v0,16(sp)
  43b1ac:	8fc20048 	lw	v0,72(s8)
  43b1b0:	00000000 	nop
  43b1b4:	24420108 	addiu	v0,v0,264
  43b1b8:	afa20014 	sw	v0,20(sp)
  43b1bc:	afa00018 	sw	zero,24(sp)
  43b1c0:	afa0001c 	sw	zero,28(sp)
  43b1c4:	24020001 	li	v0,1
  43b1c8:	afa20020 	sw	v0,32(sp)
  43b1cc:	8fc40048 	lw	a0,72(s8)
  43b1d0:	00602821 	move	a1,v1
  43b1d4:	00003021 	move	a2,zero
  43b1d8:	00003821 	move	a3,zero
  43b1dc:	8f998034 	lw	t9,-32716(gp)
  43b1e0:	00000000 	nop
  43b1e4:	2739a628 	addiu	t9,t9,-23000
  43b1e8:	00000000 	nop
  43b1ec:	0320f809 	jalr	t9
  43b1f0:	00000000 	nop
  43b1f4:	8fdc0028 	lw	gp,40(s8)
  43b1f8:	00000000 	nop
	    st->st_icookie, st->st_rcookie, NULL, 0, PROTO_ISAKMP);
    }
}
  43b1fc:	03c0e821 	move	sp,s8
  43b200:	8fbf0040 	lw	ra,64(sp)
  43b204:	8fbe003c 	lw	s8,60(sp)
  43b208:	27bd0048 	addiu	sp,sp,72
  43b20c:	03e00008 	jr	ra
  43b210:	00000000 	nop

0043b214 <send_notification_from_md>:
  43b214:	3c1c0fbd 	lui	gp,0xfbd
  43b218:	279c175c 	addiu	gp,gp,5980
  43b21c:	0399e021 	addu	gp,gp,t9
  43b220:	27bdfb30 	addiu	sp,sp,-1232
  43b224:	afbc0028 	sw	gp,40(sp)
  43b228:	afbf04c8 	sw	ra,1224(sp)
  43b22c:	afbe04c4 	sw	s8,1220(sp)
  43b230:	afbc04c0 	sw	gp,1216(sp)
  43b234:	03a0f021 	move	s8,sp
  43b238:	afc404d0 	sw	a0,1232(s8)
  43b23c:	00a01021 	move	v0,a1
  43b240:	a7c20030 	sh	v0,48(s8)

void
send_notification_from_md(struct msg_digest *md, u_int16_t type)
{
    /**
     * Create a dummy state to be able to use send_packet in
     * send_notification
     *
     * we need to set:
     *   st_connection->that.host_addr
     *   st_connection->that.host_port
     *   st_connection->interface
     */
    struct state st;
    struct connection cnx;

    passert(md);
  43b244:	8fc204d0 	lw	v0,1232(s8)
  43b248:	00000000 	nop
  43b24c:	1440000e 	bnez	v0,43b288 <send_notification_from_md+0x74>
  43b250:	00000000 	nop
  43b254:	8f84802c 	lw	a0,-32724(gp)
  43b258:	00000000 	nop
  43b25c:	2484d840 	addiu	a0,a0,-10176
  43b260:	8f85802c 	lw	a1,-32724(gp)
  43b264:	00000000 	nop
  43b268:	24a5d59c 	addiu	a1,a1,-10852
  43b26c:	24060214 	li	a2,532
  43b270:	8f998bb8 	lw	t9,-29768(gp)
  43b274:	00000000 	nop
  43b278:	0320f809 	jalr	t9
  43b27c:	00000000 	nop
  43b280:	8fdc0028 	lw	gp,40(s8)
  43b284:	00000000 	nop

    memset(&st, 0, sizeof(st));
  43b288:	27c40038 	addiu	a0,s8,56
  43b28c:	00002821 	move	a1,zero
  43b290:	240602a8 	li	a2,680
  43b294:	8f998500 	lw	t9,-31488(gp)
  43b298:	00000000 	nop
  43b29c:	0320f809 	jalr	t9
  43b2a0:	00000000 	nop
  43b2a4:	8fdc0028 	lw	gp,40(s8)
  43b2a8:	00000000 	nop
    memset(&cnx, 0, sizeof(cnx));
  43b2ac:	27c402e0 	addiu	a0,s8,736
  43b2b0:	00002821 	move	a1,zero
  43b2b4:	240601d8 	li	a2,472
  43b2b8:	8f998500 	lw	t9,-31488(gp)
  43b2bc:	00000000 	nop
  43b2c0:	0320f809 	jalr	t9
  43b2c4:	00000000 	nop
  43b2c8:	8fdc0028 	lw	gp,40(s8)
  43b2cc:	00000000 	nop
    st.st_connection = &cnx;
  43b2d0:	27c202e0 	addiu	v0,s8,736
  43b2d4:	afc20044 	sw	v0,68(s8)
    cnx.that.host_addr = md->sender;
  43b2d8:	8fc304d0 	lw	v1,1232(s8)
  43b2dc:	00000000 	nop
  43b2e0:	8c620010 	lw	v0,16(v1)
  43b2e4:	00000000 	nop
  43b2e8:	afc203e8 	sw	v0,1000(s8)
  43b2ec:	8c620014 	lw	v0,20(v1)
  43b2f0:	00000000 	nop
  43b2f4:	afc203ec 	sw	v0,1004(s8)
  43b2f8:	8c620018 	lw	v0,24(v1)
  43b2fc:	00000000 	nop
  43b300:	afc203f0 	sw	v0,1008(s8)
  43b304:	8c62001c 	lw	v0,28(v1)
  43b308:	00000000 	nop
  43b30c:	afc203f4 	sw	v0,1012(s8)
  43b310:	8c620020 	lw	v0,32(v1)
  43b314:	00000000 	nop
  43b318:	afc203f8 	sw	v0,1016(s8)
  43b31c:	8c620024 	lw	v0,36(v1)
  43b320:	00000000 	nop
  43b324:	afc203fc 	sw	v0,1020(s8)
  43b328:	8c620028 	lw	v0,40(v1)
  43b32c:	00000000 	nop
  43b330:	afc20400 	sw	v0,1024(s8)
    cnx.that.host_port = md->sender_port;
  43b334:	8fc204d0 	lw	v0,1232(s8)
  43b338:	00000000 	nop
  43b33c:	9442002c 	lhu	v0,44(v0)
  43b340:	00000000 	nop
  43b344:	a7c20458 	sh	v0,1112(s8)
    cnx.interface = md->iface;
  43b348:	8fc204d0 	lw	v0,1232(s8)
  43b34c:	00000000 	nop
  43b350:	8c42000c 	lw	v0,12(v0)
  43b354:	00000000 	nop
  43b358:	afc20478 	sw	v0,1144(s8)

    send_notification(&st, type, NULL, 0,
  43b35c:	97c30030 	lhu	v1,48(s8)
  43b360:	8fc204d0 	lw	v0,1232(s8)
  43b364:	00000000 	nop
  43b368:	24420070 	addiu	v0,v0,112
  43b36c:	afa20010 	sw	v0,16(sp)
  43b370:	8fc204d0 	lw	v0,1232(s8)
  43b374:	00000000 	nop
  43b378:	24420078 	addiu	v0,v0,120
  43b37c:	afa20014 	sw	v0,20(sp)
  43b380:	afa00018 	sw	zero,24(sp)
  43b384:	afa0001c 	sw	zero,28(sp)
  43b388:	24020001 	li	v0,1
  43b38c:	afa20020 	sw	v0,32(sp)
  43b390:	27c40038 	addiu	a0,s8,56
  43b394:	00602821 	move	a1,v1
  43b398:	00003021 	move	a2,zero
  43b39c:	00003821 	move	a3,zero
  43b3a0:	8f998034 	lw	t9,-32716(gp)
  43b3a4:	00000000 	nop
  43b3a8:	2739a628 	addiu	t9,t9,-23000
  43b3ac:	00000000 	nop
  43b3b0:	0320f809 	jalr	t9
  43b3b4:	00000000 	nop
  43b3b8:	8fdc0028 	lw	gp,40(s8)
  43b3bc:	00000000 	nop
	md->hdr.isa_icookie, md->hdr.isa_rcookie, NULL, 0, PROTO_ISAKMP);
}
  43b3c0:	03c0e821 	move	sp,s8
  43b3c4:	8fbf04c8 	lw	ra,1224(sp)
  43b3c8:	8fbe04c4 	lw	s8,1220(sp)
  43b3cc:	27bd04d0 	addiu	sp,sp,1232
  43b3d0:	03e00008 	jr	ra
  43b3d4:	00000000 	nop

0043b3d8 <send_delete>:
  43b3d8:	3c1c0fbd 	lui	gp,0xfbd
  43b3dc:	279c1598 	addiu	gp,gp,5528
  43b3e0:	0399e021 	addu	gp,gp,t9
  43b3e4:	27bddc70 	addiu	sp,sp,-9104
  43b3e8:	afbc0010 	sw	gp,16(sp)
  43b3ec:	afbf2388 	sw	ra,9096(sp)
  43b3f0:	afbe2384 	sw	s8,9092(sp)
  43b3f4:	afbc2380 	sw	gp,9088(sp)
  43b3f8:	03a0f021 	move	s8,sp
  43b3fc:	afc42390 	sw	a0,9104(s8)

/* Send a Delete Notification to announce deletion of inbound IPSEC/ISAKMP SAs.
 * Ignores states that don't have any.
 * Delete Notifications cannot announce deletion of outbound IPSEC/ISAKMP SAs.
 */
void
send_delete(struct state *st)
{
    pb_stream reply_pbs;
    pb_stream r_hdr_pbs;
    msgid_t	msgid;
    u_char buffer[8192];
    struct state *p1st;
    ip_said said[EM_MAXRELSPIS];
    ip_said *ns = said;
  43b400:	27c22068 	addiu	v0,s8,8296
  43b404:	afc220f8 	sw	v0,8440(s8)
    u_char
	*r_hashval,	/* where in reply to jam hash value */
	*r_hash_start;	/* start of what is to be hashed */
    bool isakmp_sa = FALSE;
  43b408:	afc02104 	sw	zero,8452(s8)

    if (IS_IPSEC_SA_ESTABLISHED(st->st_state)) {
  43b40c:	8fc22390 	lw	v0,9104(s8)
  43b410:	00000000 	nop
  43b414:	8c43014c 	lw	v1,332(v0)
  43b418:	24020018 	li	v0,24
  43b41c:	10620009 	beq	v1,v0,43b444 <send_delete+0x6c>
  43b420:	00000000 	nop
  43b424:	8fc22390 	lw	v0,9104(s8)
  43b428:	00000000 	nop
  43b42c:	8c43014c 	lw	v1,332(v0)
  43b430:	24020019 	li	v0,25
  43b434:	10620003 	beq	v1,v0,43b444 <send_delete+0x6c>
  43b438:	00000000 	nop
  43b43c:	1000008e 	b	43b678 <send_delete+0x2a0>
  43b440:	00000000 	nop
	p1st = find_phase1_state(st->st_connection, TRUE);
  43b444:	8fc22390 	lw	v0,9104(s8)
  43b448:	00000000 	nop
  43b44c:	8c44000c 	lw	a0,12(v0)
  43b450:	24050001 	li	a1,1
  43b454:	8f9982e4 	lw	t9,-32028(gp)
  43b458:	00000000 	nop
  43b45c:	0320f809 	jalr	t9
  43b460:	00000000 	nop
  43b464:	8fdc0010 	lw	gp,16(s8)
  43b468:	afc22060 	sw	v0,8288(s8)
	if (p1st == NULL)
  43b46c:	8fc22060 	lw	v0,8288(s8)
  43b470:	00000000 	nop
  43b474:	14400013 	bnez	v0,43b4c4 <send_delete+0xec>
  43b478:	00000000 	nop
	{
	    DBG(DBG_CONTROL, DBG_log("no Phase 1 state for Delete"));
  43b47c:	8f8284f8 	lw	v0,-31496(gp)
  43b480:	00000000 	nop
  43b484:	8c420000 	lw	v0,0(v0)
  43b488:	00000000 	nop
  43b48c:	30420010 	andi	v0,v0,0x10
  43b490:	104002b0 	beqz	v0,43bf54 <send_delete+0xb7c>
  43b494:	00000000 	nop
  43b498:	8f84802c 	lw	a0,-32724(gp)
  43b49c:	00000000 	nop
  43b4a0:	2484d844 	addiu	a0,a0,-10172
  43b4a4:	8f9983b8 	lw	t9,-31816(gp)
  43b4a8:	00000000 	nop
  43b4ac:	0320f809 	jalr	t9
  43b4b0:	00000000 	nop
  43b4b4:	8fdc0010 	lw	gp,16(s8)
  43b4b8:	00000000 	nop
	    return;
  43b4bc:	100002a5 	b	43bf54 <send_delete+0xb7c>
  43b4c0:	00000000 	nop
	}

	if (st->st_ah.present)
  43b4c4:	8fc22390 	lw	v0,9104(s8)
  43b4c8:	00000000 	nop
  43b4cc:	8c42003c 	lw	v0,60(v0)
  43b4d0:	00000000 	nop
  43b4d4:	10400029 	beqz	v0,43b57c <send_delete+0x1a4>
  43b4d8:	00000000 	nop
	{
	    ns->spi = st->st_ah.our_spi;
  43b4dc:	8fc22390 	lw	v0,9104(s8)
  43b4e0:	00000000 	nop
  43b4e4:	8c430058 	lw	v1,88(v0)
  43b4e8:	8fc220f8 	lw	v0,8440(s8)
  43b4ec:	00000000 	nop
  43b4f0:	ac43001c 	sw	v1,28(v0)
	    ns->dst = st->st_connection->this.host_addr;
  43b4f4:	8fc420f8 	lw	a0,8440(s8)
  43b4f8:	8fc22390 	lw	v0,9104(s8)
  43b4fc:	00000000 	nop
  43b500:	8c43000c 	lw	v1,12(v0)
  43b504:	00000000 	nop
  43b508:	8c620058 	lw	v0,88(v1)
  43b50c:	00000000 	nop
  43b510:	ac820000 	sw	v0,0(a0)
  43b514:	8c62005c 	lw	v0,92(v1)
  43b518:	00000000 	nop
  43b51c:	ac820004 	sw	v0,4(a0)
  43b520:	8c620060 	lw	v0,96(v1)
  43b524:	00000000 	nop
  43b528:	ac820008 	sw	v0,8(a0)
  43b52c:	8c620064 	lw	v0,100(v1)
  43b530:	00000000 	nop
  43b534:	ac82000c 	sw	v0,12(a0)
  43b538:	8c620068 	lw	v0,104(v1)
  43b53c:	00000000 	nop
  43b540:	ac820010 	sw	v0,16(a0)
  43b544:	8c62006c 	lw	v0,108(v1)
  43b548:	00000000 	nop
  43b54c:	ac820014 	sw	v0,20(a0)
  43b550:	8c620070 	lw	v0,112(v1)
  43b554:	00000000 	nop
  43b558:	ac820018 	sw	v0,24(a0)
	    ns->proto = PROTO_IPSEC_AH;
  43b55c:	24030002 	li	v1,2
  43b560:	8fc220f8 	lw	v0,8440(s8)
  43b564:	00000000 	nop
  43b568:	ac430020 	sw	v1,32(v0)
	    ns++;
  43b56c:	8fc220f8 	lw	v0,8440(s8)
  43b570:	00000000 	nop
  43b574:	24420024 	addiu	v0,v0,36
  43b578:	afc220f8 	sw	v0,8440(s8)
	}
	if (st->st_esp.present)
  43b57c:	8fc22390 	lw	v0,9104(s8)
  43b580:	00000000 	nop
  43b584:	8c420068 	lw	v0,104(v0)
  43b588:	00000000 	nop
  43b58c:	10400029 	beqz	v0,43b634 <send_delete+0x25c>
  43b590:	00000000 	nop
	{
	    ns->spi = st->st_esp.our_spi;
  43b594:	8fc22390 	lw	v0,9104(s8)
  43b598:	00000000 	nop
  43b59c:	8c430084 	lw	v1,132(v0)
  43b5a0:	8fc220f8 	lw	v0,8440(s8)
  43b5a4:	00000000 	nop
  43b5a8:	ac43001c 	sw	v1,28(v0)
	    ns->dst = st->st_connection->this.host_addr;
  43b5ac:	8fc420f8 	lw	a0,8440(s8)
  43b5b0:	8fc22390 	lw	v0,9104(s8)
  43b5b4:	00000000 	nop
  43b5b8:	8c43000c 	lw	v1,12(v0)
  43b5bc:	00000000 	nop
  43b5c0:	8c620058 	lw	v0,88(v1)
  43b5c4:	00000000 	nop
  43b5c8:	ac820000 	sw	v0,0(a0)
  43b5cc:	8c62005c 	lw	v0,92(v1)
  43b5d0:	00000000 	nop
  43b5d4:	ac820004 	sw	v0,4(a0)
  43b5d8:	8c620060 	lw	v0,96(v1)
  43b5dc:	00000000 	nop
  43b5e0:	ac820008 	sw	v0,8(a0)
  43b5e4:	8c620064 	lw	v0,100(v1)
  43b5e8:	00000000 	nop
  43b5ec:	ac82000c 	sw	v0,12(a0)
  43b5f0:	8c620068 	lw	v0,104(v1)
  43b5f4:	00000000 	nop
  43b5f8:	ac820010 	sw	v0,16(a0)
  43b5fc:	8c62006c 	lw	v0,108(v1)
  43b600:	00000000 	nop
  43b604:	ac820014 	sw	v0,20(a0)
  43b608:	8c620070 	lw	v0,112(v1)
  43b60c:	00000000 	nop
  43b610:	ac820018 	sw	v0,24(a0)
	    ns->proto = PROTO_IPSEC_ESP;
  43b614:	24030003 	li	v1,3
  43b618:	8fc220f8 	lw	v0,8440(s8)
  43b61c:	00000000 	nop
  43b620:	ac430020 	sw	v1,32(v0)
	    ns++;
  43b624:	8fc220f8 	lw	v0,8440(s8)
  43b628:	00000000 	nop
  43b62c:	24420024 	addiu	v0,v0,36
  43b630:	afc220f8 	sw	v0,8440(s8)
	}
	
	passert(ns != said);	/* there must be some SAs to delete */
  43b634:	8fc320f8 	lw	v1,8440(s8)
  43b638:	27c22068 	addiu	v0,s8,8296
  43b63c:	14620039 	bne	v1,v0,43b724 <send_delete+0x34c>
  43b640:	00000000 	nop
  43b644:	8f84802c 	lw	a0,-32724(gp)
  43b648:	00000000 	nop
  43b64c:	2484d860 	addiu	a0,a0,-10144
  43b650:	8f85802c 	lw	a1,-32724(gp)
  43b654:	00000000 	nop
  43b658:	24a5d59c 	addiu	a1,a1,-10852
  43b65c:	2406024b 	li	a2,587
  43b660:	8f998bb8 	lw	t9,-29768(gp)
  43b664:	00000000 	nop
  43b668:	0320f809 	jalr	t9
  43b66c:	00000000 	nop
  43b670:	8fdc0010 	lw	gp,16(s8)
  43b674:	00000000 	nop
    }
    else if (IS_ISAKMP_SA_ESTABLISHED(st->st_state)) {
  43b678:	8fc22390 	lw	v0,9104(s8)
  43b67c:	00000000 	nop
  43b680:	8c43014c 	lw	v1,332(v0)
  43b684:	24020009 	li	v0,9
  43b688:	10620021 	beq	v1,v0,43b710 <send_delete+0x338>
  43b68c:	00000000 	nop
  43b690:	8fc22390 	lw	v0,9104(s8)
  43b694:	00000000 	nop
  43b698:	8c43014c 	lw	v1,332(v0)
  43b69c:	2402000a 	li	v0,10
  43b6a0:	1062001b 	beq	v1,v0,43b710 <send_delete+0x338>
  43b6a4:	00000000 	nop
  43b6a8:	8fc22390 	lw	v0,9104(s8)
  43b6ac:	00000000 	nop
  43b6b0:	8c43014c 	lw	v1,332(v0)
  43b6b4:	2402000e 	li	v0,14
  43b6b8:	10620015 	beq	v1,v0,43b710 <send_delete+0x338>
  43b6bc:	00000000 	nop
  43b6c0:	8fc22390 	lw	v0,9104(s8)
  43b6c4:	00000000 	nop
  43b6c8:	8c43014c 	lw	v1,332(v0)
  43b6cc:	2402000f 	li	v0,15
  43b6d0:	1062000f 	beq	v1,v0,43b710 <send_delete+0x338>
  43b6d4:	00000000 	nop
  43b6d8:	8fc22390 	lw	v0,9104(s8)
  43b6dc:	00000000 	nop
  43b6e0:	8c43014c 	lw	v1,332(v0)
  43b6e4:	24020010 	li	v0,16
  43b6e8:	10620009 	beq	v1,v0,43b710 <send_delete+0x338>
  43b6ec:	00000000 	nop
  43b6f0:	8fc22390 	lw	v0,9104(s8)
  43b6f4:	00000000 	nop
  43b6f8:	8c43014c 	lw	v1,332(v0)
  43b6fc:	24020011 	li	v0,17
  43b700:	10620003 	beq	v1,v0,43b710 <send_delete+0x338>
  43b704:	00000000 	nop
  43b708:	10000212 	b	43bf54 <send_delete+0xb7c>
  43b70c:	00000000 	nop
	p1st = st;
  43b710:	8fc22390 	lw	v0,9104(s8)
  43b714:	00000000 	nop
  43b718:	afc22060 	sw	v0,8288(s8)
	isakmp_sa = TRUE;
  43b71c:	24020001 	li	v0,1
  43b720:	afc22104 	sw	v0,8452(s8)
    }
    else {
	return; /* nothing to do */
    }

    msgid = generate_msgid(p1st);
  43b724:	8fc42060 	lw	a0,8288(s8)
  43b728:	8f99826c 	lw	t9,-32148(gp)
  43b72c:	00000000 	nop
  43b730:	0320f809 	jalr	t9
  43b734:	00000000 	nop
  43b738:	8fdc0010 	lw	gp,16(s8)
  43b73c:	afc20058 	sw	v0,88(s8)

    memset(buffer, '\0', sizeof(buffer));
  43b740:	27c40060 	addiu	a0,s8,96
  43b744:	00002821 	move	a1,zero
  43b748:	24062000 	li	a2,8192
  43b74c:	8f998500 	lw	t9,-31488(gp)
  43b750:	00000000 	nop
  43b754:	0320f809 	jalr	t9
  43b758:	00000000 	nop
  43b75c:	8fdc0010 	lw	gp,16(s8)
  43b760:	00000000 	nop
    init_pbs(&reply_pbs, buffer, sizeof(buffer), "delete msg");
  43b764:	27c40018 	addiu	a0,s8,24
  43b768:	27c50060 	addiu	a1,s8,96
  43b76c:	24062000 	li	a2,8192
  43b770:	8f87802c 	lw	a3,-32724(gp)
  43b774:	00000000 	nop
  43b778:	24e7d86c 	addiu	a3,a3,-10132
  43b77c:	8f998364 	lw	t9,-31900(gp)
  43b780:	00000000 	nop
  43b784:	0320f809 	jalr	t9
  43b788:	00000000 	nop
  43b78c:	8fdc0010 	lw	gp,16(s8)
  43b790:	00000000 	nop

    /* HDR* */
    {
	struct isakmp_hdr hdr;

	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;
  43b794:	24020010 	li	v0,16
  43b798:	a3c22119 	sb	v0,8473(s8)
	hdr.isa_np = ISAKMP_NEXT_HASH;
  43b79c:	24020008 	li	v0,8
  43b7a0:	a3c22118 	sb	v0,8472(s8)
	hdr.isa_xchg = ISAKMP_XCHG_INFO;
  43b7a4:	24020005 	li	v0,5
  43b7a8:	a3c2211a 	sb	v0,8474(s8)
	hdr.isa_msgid = msgid;
  43b7ac:	8fc20058 	lw	v0,88(s8)
  43b7b0:	00000000 	nop
  43b7b4:	afc2211c 	sw	v0,8476(s8)
	hdr.isa_flags = ISAKMP_FLAG_ENCRYPTION;
  43b7b8:	24020001 	li	v0,1
  43b7bc:	a3c2211b 	sb	v0,8475(s8)
	memcpy(hdr.isa_icookie, p1st->st_icookie, COOKIE_SIZE);
  43b7c0:	8fc22060 	lw	v0,8288(s8)
  43b7c4:	00000000 	nop
  43b7c8:	244200f0 	addiu	v0,v0,240
  43b7cc:	27c42108 	addiu	a0,s8,8456
  43b7d0:	00402821 	move	a1,v0
  43b7d4:	24060008 	li	a2,8
  43b7d8:	8f998a30 	lw	t9,-30160(gp)
  43b7dc:	00000000 	nop
  43b7e0:	0320f809 	jalr	t9
  43b7e4:	00000000 	nop
  43b7e8:	8fdc0010 	lw	gp,16(s8)
  43b7ec:	00000000 	nop
	memcpy(hdr.isa_rcookie, p1st->st_rcookie, COOKIE_SIZE);
  43b7f0:	27c22108 	addiu	v0,s8,8456
  43b7f4:	24430008 	addiu	v1,v0,8
  43b7f8:	8fc22060 	lw	v0,8288(s8)
  43b7fc:	00000000 	nop
  43b800:	24420108 	addiu	v0,v0,264
  43b804:	00602021 	move	a0,v1
  43b808:	00402821 	move	a1,v0
  43b80c:	24060008 	li	a2,8
  43b810:	8f998a30 	lw	t9,-30160(gp)
  43b814:	00000000 	nop
  43b818:	0320f809 	jalr	t9
  43b81c:	00000000 	nop
  43b820:	8fdc0010 	lw	gp,16(s8)
  43b824:	00000000 	nop
	if (!out_struct(&hdr, &isakmp_hdr_desc, &reply_pbs, &r_hdr_pbs))
  43b828:	27c42108 	addiu	a0,s8,8456
  43b82c:	8f858688 	lw	a1,-31096(gp)
  43b830:	27c60018 	addiu	a2,s8,24
  43b834:	27c70038 	addiu	a3,s8,56
  43b838:	8f998ba0 	lw	t9,-29792(gp)
  43b83c:	00000000 	nop
  43b840:	0320f809 	jalr	t9
  43b844:	00000000 	nop
  43b848:	8fdc0010 	lw	gp,16(s8)
  43b84c:	1440000e 	bnez	v0,43b888 <send_delete+0x4b0>
  43b850:	00000000 	nop
	    impossible();
  43b854:	8f84802c 	lw	a0,-32724(gp)
  43b858:	00000000 	nop
  43b85c:	2484d590 	addiu	a0,a0,-10864
  43b860:	8f85802c 	lw	a1,-32724(gp)
  43b864:	00000000 	nop
  43b868:	24a5d59c 	addiu	a1,a1,-10852
  43b86c:	24060266 	li	a2,614
  43b870:	8f998bb8 	lw	t9,-29768(gp)
  43b874:	00000000 	nop
  43b878:	0320f809 	jalr	t9
  43b87c:	00000000 	nop
  43b880:	8fdc0010 	lw	gp,16(s8)
  43b884:	00000000 	nop
    }

    /* HASH -- value to be filled later */
    {
	pb_stream hash_pbs;

	if (!out_generic(ISAKMP_NEXT_D, &isakmp_hash_desc, &r_hdr_pbs, &hash_pbs))
  43b888:	2404000c 	li	a0,12
  43b88c:	8f858924 	lw	a1,-30428(gp)
  43b890:	27c60038 	addiu	a2,s8,56
  43b894:	27c72128 	addiu	a3,s8,8488
  43b898:	8f9986d4 	lw	t9,-31020(gp)
  43b89c:	00000000 	nop
  43b8a0:	0320f809 	jalr	t9
  43b8a4:	00000000 	nop
  43b8a8:	8fdc0010 	lw	gp,16(s8)
  43b8ac:	1440000e 	bnez	v0,43b8e8 <send_delete+0x510>
  43b8b0:	00000000 	nop
	    impossible();
  43b8b4:	8f84802c 	lw	a0,-32724(gp)
  43b8b8:	00000000 	nop
  43b8bc:	2484d590 	addiu	a0,a0,-10864
  43b8c0:	8f85802c 	lw	a1,-32724(gp)
  43b8c4:	00000000 	nop
  43b8c8:	24a5d59c 	addiu	a1,a1,-10852
  43b8cc:	2406026e 	li	a2,622
  43b8d0:	8f998bb8 	lw	t9,-29768(gp)
  43b8d4:	00000000 	nop
  43b8d8:	0320f809 	jalr	t9
  43b8dc:	00000000 	nop
  43b8e0:	8fdc0010 	lw	gp,16(s8)
  43b8e4:	00000000 	nop
	r_hashval = hash_pbs.cur;	/* remember where to plant value */
  43b8e8:	8fc22138 	lw	v0,8504(s8)
  43b8ec:	00000000 	nop
  43b8f0:	afc220fc 	sw	v0,8444(s8)
	if (!out_zero(p1st->st_oakley.hasher->hash_digest_size, &hash_pbs, "HASH(1)"))
  43b8f4:	8fc22060 	lw	v0,8288(s8)
  43b8f8:	00000000 	nop
  43b8fc:	8c420028 	lw	v0,40(v0)
  43b900:	00000000 	nop
  43b904:	8c44000c 	lw	a0,12(v0)
  43b908:	27c52128 	addiu	a1,s8,8488
  43b90c:	8f86802c 	lw	a2,-32724(gp)
  43b910:	00000000 	nop
  43b914:	24c6d7dc 	addiu	a2,a2,-10276
  43b918:	8f998a20 	lw	t9,-30176(gp)
  43b91c:	00000000 	nop
  43b920:	0320f809 	jalr	t9
  43b924:	00000000 	nop
  43b928:	8fdc0010 	lw	gp,16(s8)
  43b92c:	1440000e 	bnez	v0,43b968 <send_delete+0x590>
  43b930:	00000000 	nop
	    impossible();
  43b934:	8f84802c 	lw	a0,-32724(gp)
  43b938:	00000000 	nop
  43b93c:	2484d590 	addiu	a0,a0,-10864
  43b940:	8f85802c 	lw	a1,-32724(gp)
  43b944:	00000000 	nop
  43b948:	24a5d59c 	addiu	a1,a1,-10852
  43b94c:	24060271 	li	a2,625
  43b950:	8f998bb8 	lw	t9,-29768(gp)
  43b954:	00000000 	nop
  43b958:	0320f809 	jalr	t9
  43b95c:	00000000 	nop
  43b960:	8fdc0010 	lw	gp,16(s8)
  43b964:	00000000 	nop
	close_output_pbs(&hash_pbs);
  43b968:	27c42128 	addiu	a0,s8,8488
  43b96c:	8f998228 	lw	t9,-32216(gp)
  43b970:	00000000 	nop
  43b974:	0320f809 	jalr	t9
  43b978:	00000000 	nop
  43b97c:	8fdc0010 	lw	gp,16(s8)
  43b980:	00000000 	nop
	r_hash_start = r_hdr_pbs.cur;	/* hash from after HASH(1) */
  43b984:	8fc20048 	lw	v0,72(s8)
  43b988:	00000000 	nop
  43b98c:	afc22100 	sw	v0,8448(s8)
    }

    /* Delete Payloads */
    if (isakmp_sa) {
  43b990:	8fc22104 	lw	v0,8452(s8)
  43b994:	00000000 	nop
  43b998:	10400051 	beqz	v0,43bae0 <send_delete+0x708>
  43b99c:	00000000 	nop
	pb_stream del_pbs;
	struct isakmp_delete isad;
	u_char isakmp_spi[2*COOKIE_SIZE];

	isad.isad_doi = ISAKMP_DOI_IPSEC;
  43b9a0:	24020001 	li	v0,1
  43b9a4:	afc2216c 	sw	v0,8556(s8)
	isad.isad_np = ISAKMP_NEXT_NONE;
  43b9a8:	a3c02168 	sb	zero,8552(s8)
	isad.isad_spisize = (2 * COOKIE_SIZE);
  43b9ac:	24020010 	li	v0,16
  43b9b0:	a3c22171 	sb	v0,8561(s8)
	isad.isad_protoid = PROTO_ISAKMP;
  43b9b4:	24020001 	li	v0,1
  43b9b8:	a3c22170 	sb	v0,8560(s8)
	isad.isad_nospi = 1;
  43b9bc:	24020001 	li	v0,1
  43b9c0:	a7c22172 	sh	v0,8562(s8)

	memcpy(isakmp_spi, st->st_icookie, COOKIE_SIZE);
  43b9c4:	8fc22390 	lw	v0,9104(s8)
  43b9c8:	00000000 	nop
  43b9cc:	244200f0 	addiu	v0,v0,240
  43b9d0:	27c42178 	addiu	a0,s8,8568
  43b9d4:	00402821 	move	a1,v0
  43b9d8:	24060008 	li	a2,8
  43b9dc:	8f998a30 	lw	t9,-30160(gp)
  43b9e0:	00000000 	nop
  43b9e4:	0320f809 	jalr	t9
  43b9e8:	00000000 	nop
  43b9ec:	8fdc0010 	lw	gp,16(s8)
  43b9f0:	00000000 	nop
	memcpy(isakmp_spi+COOKIE_SIZE, st->st_rcookie, COOKIE_SIZE);
  43b9f4:	27c22178 	addiu	v0,s8,8568
  43b9f8:	24430008 	addiu	v1,v0,8
  43b9fc:	8fc22390 	lw	v0,9104(s8)
  43ba00:	00000000 	nop
  43ba04:	24420108 	addiu	v0,v0,264
  43ba08:	00602021 	move	a0,v1
  43ba0c:	00402821 	move	a1,v0
  43ba10:	24060008 	li	a2,8
  43ba14:	8f998a30 	lw	t9,-30160(gp)
  43ba18:	00000000 	nop
  43ba1c:	0320f809 	jalr	t9
  43ba20:	00000000 	nop
  43ba24:	8fdc0010 	lw	gp,16(s8)
  43ba28:	00000000 	nop

	if (!out_struct(&isad, &isakmp_delete_desc, &r_hdr_pbs, &del_pbs)
	|| !out_raw(&isakmp_spi, (2*COOKIE_SIZE), &del_pbs, "delete payload"))
  43ba2c:	27c42168 	addiu	a0,s8,8552
  43ba30:	8f8586b8 	lw	a1,-31048(gp)
  43ba34:	27c60038 	addiu	a2,s8,56
  43ba38:	27c72148 	addiu	a3,s8,8520
  43ba3c:	8f998ba0 	lw	t9,-29792(gp)
  43ba40:	00000000 	nop
  43ba44:	0320f809 	jalr	t9
  43ba48:	00000000 	nop
  43ba4c:	8fdc0010 	lw	gp,16(s8)
  43ba50:	1040000e 	beqz	v0,43ba8c <send_delete+0x6b4>
  43ba54:	00000000 	nop
  43ba58:	27c42178 	addiu	a0,s8,8568
  43ba5c:	24050010 	li	a1,16
  43ba60:	27c62148 	addiu	a2,s8,8520
  43ba64:	8f87802c 	lw	a3,-32724(gp)
  43ba68:	00000000 	nop
  43ba6c:	24e7d878 	addiu	a3,a3,-10120
  43ba70:	8f998308 	lw	t9,-31992(gp)
  43ba74:	00000000 	nop
  43ba78:	0320f809 	jalr	t9
  43ba7c:	00000000 	nop
  43ba80:	8fdc0010 	lw	gp,16(s8)
  43ba84:	1440000e 	bnez	v0,43bac0 <send_delete+0x6e8>
  43ba88:	00000000 	nop
	    impossible();
  43ba8c:	8f84802c 	lw	a0,-32724(gp)
  43ba90:	00000000 	nop
  43ba94:	2484d590 	addiu	a0,a0,-10864
  43ba98:	8f85802c 	lw	a1,-32724(gp)
  43ba9c:	00000000 	nop
  43baa0:	24a5d59c 	addiu	a1,a1,-10852
  43baa4:	24060287 	li	a2,647
  43baa8:	8f998bb8 	lw	t9,-29768(gp)
  43baac:	00000000 	nop
  43bab0:	0320f809 	jalr	t9
  43bab4:	00000000 	nop
  43bab8:	8fdc0010 	lw	gp,16(s8)
  43babc:	00000000 	nop
	close_output_pbs(&del_pbs);
  43bac0:	27c42148 	addiu	a0,s8,8520
  43bac4:	8f998228 	lw	t9,-32216(gp)
  43bac8:	00000000 	nop
  43bacc:	0320f809 	jalr	t9
  43bad0:	00000000 	nop
  43bad4:	8fdc0010 	lw	gp,16(s8)
  43bad8:	10000050 	b	43bc1c <send_delete+0x844>
  43badc:	00000000 	nop
  43bae0:	00000000 	nop
    }
    else while (ns != said) {
  43bae4:	8fc320f8 	lw	v1,8440(s8)
  43bae8:	27c22068 	addiu	v0,s8,8296
  43baec:	14620003 	bne	v1,v0,43bafc <send_delete+0x724>
  43baf0:	00000000 	nop
  43baf4:	10000049 	b	43bc1c <send_delete+0x844>
  43baf8:	00000000 	nop
	pb_stream del_pbs;
	struct isakmp_delete isad;

	ns--;
  43bafc:	8fc220f8 	lw	v0,8440(s8)
  43bb00:	00000000 	nop
  43bb04:	2442ffdc 	addiu	v0,v0,-36
  43bb08:	afc220f8 	sw	v0,8440(s8)
	isad.isad_doi = ISAKMP_DOI_IPSEC;
  43bb0c:	24020001 	li	v0,1
  43bb10:	afc221ac 	sw	v0,8620(s8)
	isad.isad_np = ns == said? ISAKMP_NEXT_NONE : ISAKMP_NEXT_D;
  43bb14:	8fc320f8 	lw	v1,8440(s8)
  43bb18:	27c22068 	addiu	v0,s8,8296
  43bb1c:	10620005 	beq	v1,v0,43bb34 <send_delete+0x75c>
  43bb20:	00000000 	nop
  43bb24:	2402000c 	li	v0,12
  43bb28:	a3c221a8 	sb	v0,8616(s8)
  43bb2c:	10000002 	b	43bb38 <send_delete+0x760>
  43bb30:	00000000 	nop
  43bb34:	a3c021a8 	sb	zero,8616(s8)
	isad.isad_spisize = sizeof(ipsec_spi_t);
  43bb38:	24020004 	li	v0,4
  43bb3c:	a3c221b1 	sb	v0,8625(s8)
	isad.isad_protoid = ns->proto;
  43bb40:	8fc220f8 	lw	v0,8440(s8)
  43bb44:	00000000 	nop
  43bb48:	90420023 	lbu	v0,35(v0)
  43bb4c:	00000000 	nop
  43bb50:	a3c221b0 	sb	v0,8624(s8)
	isad.isad_nospi = 1;
  43bb54:	24020001 	li	v0,1
  43bb58:	a7c221b2 	sh	v0,8626(s8)

	if (!out_struct(&isad, &isakmp_delete_desc, &r_hdr_pbs, &del_pbs)
	|| !out_raw(&ns->spi, sizeof(ipsec_spi_t), &del_pbs, "delete payload"))
  43bb5c:	27c421a8 	addiu	a0,s8,8616
  43bb60:	8f8586b8 	lw	a1,-31048(gp)
  43bb64:	27c60038 	addiu	a2,s8,56
  43bb68:	27c72188 	addiu	a3,s8,8584
  43bb6c:	8f998ba0 	lw	t9,-29792(gp)
  43bb70:	00000000 	nop
  43bb74:	0320f809 	jalr	t9
  43bb78:	00000000 	nop
  43bb7c:	8fdc0010 	lw	gp,16(s8)
  43bb80:	10400011 	beqz	v0,43bbc8 <send_delete+0x7f0>
  43bb84:	00000000 	nop
  43bb88:	8fc220f8 	lw	v0,8440(s8)
  43bb8c:	00000000 	nop
  43bb90:	2442001c 	addiu	v0,v0,28
  43bb94:	00402021 	move	a0,v0
  43bb98:	24050004 	li	a1,4
  43bb9c:	27c62188 	addiu	a2,s8,8584
  43bba0:	8f87802c 	lw	a3,-32724(gp)
  43bba4:	00000000 	nop
  43bba8:	24e7d878 	addiu	a3,a3,-10120
  43bbac:	8f998308 	lw	t9,-31992(gp)
  43bbb0:	00000000 	nop
  43bbb4:	0320f809 	jalr	t9
  43bbb8:	00000000 	nop
  43bbbc:	8fdc0010 	lw	gp,16(s8)
  43bbc0:	1440000e 	bnez	v0,43bbfc <send_delete+0x824>
  43bbc4:	00000000 	nop
	    impossible();
  43bbc8:	8f84802c 	lw	a0,-32724(gp)
  43bbcc:	00000000 	nop
  43bbd0:	2484d590 	addiu	a0,a0,-10864
  43bbd4:	8f85802c 	lw	a1,-32724(gp)
  43bbd8:	00000000 	nop
  43bbdc:	24a5d59c 	addiu	a1,a1,-10852
  43bbe0:	24060297 	li	a2,663
  43bbe4:	8f998bb8 	lw	t9,-29768(gp)
  43bbe8:	00000000 	nop
  43bbec:	0320f809 	jalr	t9
  43bbf0:	00000000 	nop
  43bbf4:	8fdc0010 	lw	gp,16(s8)
  43bbf8:	00000000 	nop
	close_output_pbs(&del_pbs);
  43bbfc:	27c42188 	addiu	a0,s8,8584
  43bc00:	8f998228 	lw	t9,-32216(gp)
  43bc04:	00000000 	nop
  43bc08:	0320f809 	jalr	t9
  43bc0c:	00000000 	nop
  43bc10:	8fdc0010 	lw	gp,16(s8)
  43bc14:	1000ffb3 	b	43bae4 <send_delete+0x70c>
  43bc18:	00000000 	nop
    }

    /* calculate hash value and patch into Hash Payload */
    {
	struct hmac_ctx ctx;
	hmac_init_chunk(&ctx, p1st->st_oakley.hasher, p1st->st_skeyid_a);
  43bc1c:	27c421b8 	addiu	a0,s8,8632
  43bc20:	8fc22060 	lw	v0,8288(s8)
  43bc24:	00000000 	nop
  43bc28:	8c450028 	lw	a1,40(v0)
  43bc2c:	8fc22060 	lw	v0,8288(s8)
  43bc30:	00000000 	nop
  43bc34:	8c460174 	lw	a2,372(v0)
  43bc38:	8fc22060 	lw	v0,8288(s8)
  43bc3c:	00000000 	nop
  43bc40:	8c470178 	lw	a3,376(v0)
  43bc44:	8f9989e0 	lw	t9,-30240(gp)
  43bc48:	00000000 	nop
  43bc4c:	0320f809 	jalr	t9
  43bc50:	00000000 	nop
  43bc54:	8fdc0010 	lw	gp,16(s8)
  43bc58:	00000000 	nop
	hmac_update(&ctx, (u_char *) &msgid, sizeof(msgid_t));
  43bc5c:	27c421b8 	addiu	a0,s8,8632
  43bc60:	27c50058 	addiu	a1,s8,88
  43bc64:	24060004 	li	a2,4
  43bc68:	8f9983d4 	lw	t9,-31788(gp)
  43bc6c:	00000000 	nop
  43bc70:	0320f809 	jalr	t9
  43bc74:	00000000 	nop
  43bc78:	8fdc0010 	lw	gp,16(s8)
  43bc7c:	00000000 	nop
	hmac_update(&ctx, r_hash_start, r_hdr_pbs.cur-r_hash_start);
  43bc80:	8fc30048 	lw	v1,72(s8)
  43bc84:	8fc22100 	lw	v0,8448(s8)
  43bc88:	00000000 	nop
  43bc8c:	00621023 	subu	v0,v1,v0
  43bc90:	27c421b8 	addiu	a0,s8,8632
  43bc94:	8fc52100 	lw	a1,8448(s8)
  43bc98:	00403021 	move	a2,v0
  43bc9c:	8f9983d4 	lw	t9,-31788(gp)
  43bca0:	00000000 	nop
  43bca4:	0320f809 	jalr	t9
  43bca8:	00000000 	nop
  43bcac:	8fdc0010 	lw	gp,16(s8)
  43bcb0:	00000000 	nop
	hmac_final(r_hashval, &ctx);
  43bcb4:	8fc420fc 	lw	a0,8444(s8)
  43bcb8:	27c521b8 	addiu	a1,s8,8632
  43bcbc:	8f998728 	lw	t9,-30936(gp)
  43bcc0:	00000000 	nop
  43bcc4:	0320f809 	jalr	t9
  43bcc8:	00000000 	nop
  43bccc:	8fdc0010 	lw	gp,16(s8)
  43bcd0:	00000000 	nop

	DBG(DBG_CRYPT,
  43bcd4:	8f8284f8 	lw	v0,-31496(gp)
  43bcd8:	00000000 	nop
  43bcdc:	8c420000 	lw	v0,0(v0)
  43bce0:	00000000 	nop
  43bce4:	30420002 	andi	v0,v0,0x2
  43bce8:	10400015 	beqz	v0,43bd40 <send_delete+0x968>
  43bcec:	00000000 	nop
  43bcf0:	8f84802c 	lw	a0,-32724(gp)
  43bcf4:	00000000 	nop
  43bcf8:	2484d7e8 	addiu	a0,a0,-10264
  43bcfc:	8f9983b8 	lw	t9,-31816(gp)
  43bd00:	00000000 	nop
  43bd04:	0320f809 	jalr	t9
  43bd08:	00000000 	nop
  43bd0c:	8fdc0010 	lw	gp,16(s8)
  43bd10:	00000000 	nop
  43bd14:	8f84802c 	lw	a0,-32724(gp)
  43bd18:	00000000 	nop
  43bd1c:	2484d7a0 	addiu	a0,a0,-10336
  43bd20:	8fc520fc 	lw	a1,8444(s8)
  43bd24:	8fc621bc 	lw	a2,8636(s8)
  43bd28:	8f9984ec 	lw	t9,-31508(gp)
  43bd2c:	00000000 	nop
  43bd30:	0320f809 	jalr	t9
  43bd34:	00000000 	nop
  43bd38:	8fdc0010 	lw	gp,16(s8)
  43bd3c:	00000000 	nop
	    DBG_log("HASH(1) computed:");
	    DBG_dump("", r_hashval, ctx.hmac_digest_size);
	)
    }

    /* Do a dance to avoid needing a new state object.
     * We use the Phase 1 State.  This is the one with right
     * IV, for one thing.
     * The tricky bits are:
     * - we need to preserve (save/restore) st_iv (but not st_iv_new)
     * - we need to preserve (save/restore) st_tpacket.
     */
    {
	u_char old_iv[MAX_DIGEST_LEN];
	chunk_t saved_tpacket = p1st->st_tpacket;
  43bd40:	8fc32060 	lw	v1,8288(s8)
  43bd44:	00000000 	nop
  43bd48:	8c620118 	lw	v0,280(v1)
  43bd4c:	00000000 	nop
  43bd50:	afc22358 	sw	v0,9048(s8)
  43bd54:	8c62011c 	lw	v0,284(v1)
  43bd58:	00000000 	nop
  43bd5c:	afc2235c 	sw	v0,9052(s8)

	save_iv(p1st, old_iv);
  43bd60:	8fc22060 	lw	v0,8288(s8)
  43bd64:	00000000 	nop
  43bd68:	8c420244 	lw	v0,580(v0)
  43bd6c:	00000000 	nop
  43bd70:	2c420040 	sltiu	v0,v0,64
  43bd74:	1440000d 	bnez	v0,43bdac <send_delete+0x9d4>
  43bd78:	00000000 	nop
  43bd7c:	8f84802c 	lw	a0,-32724(gp)
  43bd80:	00000000 	nop
  43bd84:	2484d888 	addiu	a0,a0,-10104
  43bd88:	8f85802c 	lw	a1,-32724(gp)
  43bd8c:	00000000 	nop
  43bd90:	24a5d59c 	addiu	a1,a1,-10852
  43bd94:	240602b4 	li	a2,692
  43bd98:	8f998bb8 	lw	t9,-29768(gp)
  43bd9c:	00000000 	nop
  43bda0:	0320f809 	jalr	t9
  43bda4:	00000000 	nop
  43bda8:	8fdc0010 	lw	gp,16(s8)
  43bdac:	8fc22060 	lw	v0,8288(s8)
  43bdb0:	00000000 	nop
  43bdb4:	24420184 	addiu	v0,v0,388
  43bdb8:	27c42318 	addiu	a0,s8,8984
  43bdbc:	00402821 	move	a1,v0
  43bdc0:	8fc22060 	lw	v0,8288(s8)
  43bdc4:	00000000 	nop
  43bdc8:	8c460244 	lw	a2,580(v0)
  43bdcc:	8f998a30 	lw	t9,-30160(gp)
  43bdd0:	00000000 	nop
  43bdd4:	0320f809 	jalr	t9
  43bdd8:	00000000 	nop
  43bddc:	8fdc0010 	lw	gp,16(s8)
  43bde0:	00000000 	nop
	init_phase2_iv(p1st, &msgid);
  43bde4:	8fc42060 	lw	a0,8288(s8)
  43bde8:	27c50058 	addiu	a1,s8,88
  43bdec:	8f998bc8 	lw	t9,-29752(gp)
  43bdf0:	00000000 	nop
  43bdf4:	0320f809 	jalr	t9
  43bdf8:	00000000 	nop
  43bdfc:	8fdc0010 	lw	gp,16(s8)
  43be00:	00000000 	nop

	if(!encrypt_message(&r_hdr_pbs, p1st))
  43be04:	27c40038 	addiu	a0,s8,56
  43be08:	8fc52060 	lw	a1,8288(s8)
  43be0c:	8f99885c 	lw	t9,-30628(gp)
  43be10:	00000000 	nop
  43be14:	0320f809 	jalr	t9
  43be18:	00000000 	nop
  43be1c:	8fdc0010 	lw	gp,16(s8)
  43be20:	1440000e 	bnez	v0,43be5c <send_delete+0xa84>
  43be24:	00000000 	nop
	    impossible();
  43be28:	8f84802c 	lw	a0,-32724(gp)
  43be2c:	00000000 	nop
  43be30:	2484d590 	addiu	a0,a0,-10864
  43be34:	8f85802c 	lw	a1,-32724(gp)
  43be38:	00000000 	nop
  43be3c:	24a5d59c 	addiu	a1,a1,-10852
  43be40:	240602b8 	li	a2,696
  43be44:	8f998bb8 	lw	t9,-29768(gp)
  43be48:	00000000 	nop
  43be4c:	0320f809 	jalr	t9
  43be50:	00000000 	nop
  43be54:	8fdc0010 	lw	gp,16(s8)
  43be58:	00000000 	nop

	setchunk(p1st->st_tpacket, reply_pbs.start, pbs_offset(&reply_pbs));
  43be5c:	8fc30024 	lw	v1,36(s8)
  43be60:	8fc22060 	lw	v0,8288(s8)
  43be64:	00000000 	nop
  43be68:	ac430118 	sw	v1,280(v0)
  43be6c:	8fc30028 	lw	v1,40(s8)
  43be70:	8fc20024 	lw	v0,36(s8)
  43be74:	00000000 	nop
  43be78:	00621823 	subu	v1,v1,v0
  43be7c:	8fc22060 	lw	v0,8288(s8)
  43be80:	00000000 	nop
  43be84:	ac43011c 	sw	v1,284(v0)
	send_packet(p1st, "delete notify");
  43be88:	8fc42060 	lw	a0,8288(s8)
  43be8c:	8f85802c 	lw	a1,-32724(gp)
  43be90:	00000000 	nop
  43be94:	24a5d8b0 	addiu	a1,a1,-10064
  43be98:	24060001 	li	a2,1
  43be9c:	8f9987f0 	lw	t9,-30736(gp)
  43bea0:	00000000 	nop
  43bea4:	0320f809 	jalr	t9
  43bea8:	00000000 	nop
  43beac:	8fdc0010 	lw	gp,16(s8)
  43beb0:	00000000 	nop
	p1st->st_tpacket = saved_tpacket;
  43beb4:	8fc32060 	lw	v1,8288(s8)
  43beb8:	8fc22358 	lw	v0,9048(s8)
  43bebc:	00000000 	nop
  43bec0:	ac620118 	sw	v0,280(v1)
  43bec4:	8fc2235c 	lw	v0,9052(s8)
  43bec8:	00000000 	nop
  43becc:	ac62011c 	sw	v0,284(v1)

	/* get back old IV for this state */
	set_iv(p1st, old_iv);
  43bed0:	8fc22060 	lw	v0,8288(s8)
  43bed4:	00000000 	nop
  43bed8:	8c420244 	lw	v0,580(v0)
  43bedc:	00000000 	nop
  43bee0:	2c420040 	sltiu	v0,v0,64
  43bee4:	1440000d 	bnez	v0,43bf1c <send_delete+0xb44>
  43bee8:	00000000 	nop
  43beec:	8f84802c 	lw	a0,-32724(gp)
  43bef0:	00000000 	nop
  43bef4:	2484d8c0 	addiu	a0,a0,-10048
  43bef8:	8f85802c 	lw	a1,-32724(gp)
  43befc:	00000000 	nop
  43bf00:	24a5d59c 	addiu	a1,a1,-10852
  43bf04:	240602bf 	li	a2,703
  43bf08:	8f998bb8 	lw	t9,-29768(gp)
  43bf0c:	00000000 	nop
  43bf10:	0320f809 	jalr	t9
  43bf14:	00000000 	nop
  43bf18:	8fdc0010 	lw	gp,16(s8)
  43bf1c:	8fc22060 	lw	v0,8288(s8)
  43bf20:	00000000 	nop
  43bf24:	24420184 	addiu	v0,v0,388
  43bf28:	00402021 	move	a0,v0
  43bf2c:	27c52318 	addiu	a1,s8,8984
  43bf30:	8fc22060 	lw	v0,8288(s8)
  43bf34:	00000000 	nop
  43bf38:	8c460244 	lw	a2,580(v0)
  43bf3c:	8f998a30 	lw	t9,-30160(gp)
  43bf40:	00000000 	nop
  43bf44:	0320f809 	jalr	t9
  43bf48:	00000000 	nop
  43bf4c:	8fdc0010 	lw	gp,16(s8)
  43bf50:	00000000 	nop
    }
}
  43bf54:	03c0e821 	move	sp,s8
  43bf58:	8fbf2388 	lw	ra,9096(sp)
  43bf5c:	8fbe2384 	lw	s8,9092(sp)
  43bf60:	27bd2390 	addiu	sp,sp,9104
  43bf64:	03e00008 	jr	ra
  43bf68:	00000000 	nop

0043bf6c <accept_delete>:
  43bf6c:	3c1c0fbd 	lui	gp,0xfbd
  43bf70:	279c0a04 	addiu	gp,gp,2564
  43bf74:	0399e021 	addu	gp,gp,t9
  43bf78:	27bdffb0 	addiu	sp,sp,-80
  43bf7c:	afbc0010 	sw	gp,16(sp)
  43bf80:	afbf004c 	sw	ra,76(sp)
  43bf84:	afbe0048 	sw	s8,72(sp)
  43bf88:	afbc0044 	sw	gp,68(sp)
  43bf8c:	afb00040 	sw	s0,64(sp)
  43bf90:	03a0f021 	move	s8,sp
  43bf94:	afc40050 	sw	a0,80(s8)
  43bf98:	afc50054 	sw	a1,84(s8)
  43bf9c:	afc60058 	sw	a2,88(s8)

void
accept_delete(struct state *st, struct msg_digest *md, struct payload_digest *p)
{
    struct isakmp_delete *d = &(p->payload.delete);
  43bfa0:	8fc20058 	lw	v0,88(s8)
  43bfa4:	00000000 	nop
  43bfa8:	24420020 	addiu	v0,v0,32
  43bfac:	afc20018 	sw	v0,24(s8)
    size_t sizespi = 0;
  43bfb0:	afc0001c 	sw	zero,28(s8)
    u_char *spi;
    struct state *dst = NULL;
  43bfb4:	afc00024 	sw	zero,36(s8)
    int i;


    if ((!st) && (!(md->hdr.isa_flags & ISAKMP_FLAG_ENCRYPTION))) {
  43bfb8:	8fc20050 	lw	v0,80(s8)
  43bfbc:	00000000 	nop
  43bfc0:	14400015 	bnez	v0,43c018 <accept_delete+0xac>
  43bfc4:	00000000 	nop
  43bfc8:	8fc20054 	lw	v0,84(s8)
  43bfcc:	00000000 	nop
  43bfd0:	90420083 	lbu	v0,131(v0)
  43bfd4:	00000000 	nop
  43bfd8:	30420001 	andi	v0,v0,0x1
  43bfdc:	304200ff 	andi	v0,v0,0xff
  43bfe0:	1440000d 	bnez	v0,43c018 <accept_delete+0xac>
  43bfe4:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: not encrypted");
  43bfe8:	24040003 	li	a0,3
  43bfec:	8f85802c 	lw	a1,-32724(gp)
  43bff0:	00000000 	nop
  43bff4:	24a5d8ec 	addiu	a1,a1,-10004
  43bff8:	8f998c48 	lw	t9,-29624(gp)
  43bffc:	00000000 	nop
  43c000:	0320f809 	jalr	t9
  43c004:	00000000 	nop
  43c008:	8fdc0010 	lw	gp,16(s8)
  43c00c:	00000000 	nop
	return;
  43c010:	100001de 	b	43c78c <accept_delete+0x820>
  43c014:	00000000 	nop
    }

    if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state)) {
  43c018:	8fc20050 	lw	v0,80(s8)
  43c01c:	00000000 	nop
  43c020:	8c43014c 	lw	v1,332(v0)
  43c024:	24020009 	li	v0,9
  43c028:	1062002b 	beq	v1,v0,43c0d8 <accept_delete+0x16c>
  43c02c:	00000000 	nop
  43c030:	8fc20050 	lw	v0,80(s8)
  43c034:	00000000 	nop
  43c038:	8c43014c 	lw	v1,332(v0)
  43c03c:	2402000a 	li	v0,10
  43c040:	10620025 	beq	v1,v0,43c0d8 <accept_delete+0x16c>
  43c044:	00000000 	nop
  43c048:	8fc20050 	lw	v0,80(s8)
  43c04c:	00000000 	nop
  43c050:	8c43014c 	lw	v1,332(v0)
  43c054:	2402000e 	li	v0,14
  43c058:	1062001f 	beq	v1,v0,43c0d8 <accept_delete+0x16c>
  43c05c:	00000000 	nop
  43c060:	8fc20050 	lw	v0,80(s8)
  43c064:	00000000 	nop
  43c068:	8c43014c 	lw	v1,332(v0)
  43c06c:	2402000f 	li	v0,15
  43c070:	10620019 	beq	v1,v0,43c0d8 <accept_delete+0x16c>
  43c074:	00000000 	nop
  43c078:	8fc20050 	lw	v0,80(s8)
  43c07c:	00000000 	nop
  43c080:	8c43014c 	lw	v1,332(v0)
  43c084:	24020010 	li	v0,16
  43c088:	10620013 	beq	v1,v0,43c0d8 <accept_delete+0x16c>
  43c08c:	00000000 	nop
  43c090:	8fc20050 	lw	v0,80(s8)
  43c094:	00000000 	nop
  43c098:	8c43014c 	lw	v1,332(v0)
  43c09c:	24020011 	li	v0,17
  43c0a0:	1062000d 	beq	v1,v0,43c0d8 <accept_delete+0x16c>
  43c0a4:	00000000 	nop
	/* can't happen (if msg is encrypt), but just to be sure */
	loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: "
  43c0a8:	24040003 	li	a0,3
  43c0ac:	8f85802c 	lw	a1,-32724(gp)
  43c0b0:	00000000 	nop
  43c0b4:	24a5d918 	addiu	a1,a1,-9960
  43c0b8:	8f998c48 	lw	t9,-29624(gp)
  43c0bc:	00000000 	nop
  43c0c0:	0320f809 	jalr	t9
  43c0c4:	00000000 	nop
  43c0c8:	8fdc0010 	lw	gp,16(s8)
  43c0cc:	00000000 	nop
	"ISAKMP SA not established");
	return;
  43c0d0:	100001ae 	b	43c78c <accept_delete+0x820>
  43c0d4:	00000000 	nop
    }

    if (d->isad_nospi == 0) {
  43c0d8:	8fc20018 	lw	v0,24(s8)
  43c0dc:	00000000 	nop
  43c0e0:	9442000a 	lhu	v0,10(v0)
  43c0e4:	00000000 	nop
  43c0e8:	1440000d 	bnez	v0,43c120 <accept_delete+0x1b4>
  43c0ec:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: no SPI");
  43c0f0:	24040003 	li	a0,3
  43c0f4:	8f85802c 	lw	a1,-32724(gp)
  43c0f8:	00000000 	nop
  43c0fc:	24a5d950 	addiu	a1,a1,-9904
  43c100:	8f998c48 	lw	t9,-29624(gp)
  43c104:	00000000 	nop
  43c108:	0320f809 	jalr	t9
  43c10c:	00000000 	nop
  43c110:	8fdc0010 	lw	gp,16(s8)
  43c114:	00000000 	nop
	return;
  43c118:	1000019c 	b	43c78c <accept_delete+0x820>
  43c11c:	00000000 	nop
    }

    if (pbs_left(&p->pbs) != ((unsigned)d->isad_spisize * d->isad_nospi)) {
  43c120:	8fc20058 	lw	v0,88(s8)
  43c124:	00000000 	nop
  43c128:	8c430014 	lw	v1,20(v0)
  43c12c:	8fc20058 	lw	v0,88(s8)
  43c130:	00000000 	nop
  43c134:	8c420010 	lw	v0,16(v0)
  43c138:	00000000 	nop
  43c13c:	00622023 	subu	a0,v1,v0
  43c140:	8fc20018 	lw	v0,24(s8)
  43c144:	00000000 	nop
  43c148:	90430009 	lbu	v1,9(v0)
  43c14c:	8fc20018 	lw	v0,24(s8)
  43c150:	00000000 	nop
  43c154:	9442000a 	lhu	v0,10(v0)
  43c158:	00000000 	nop
  43c15c:	00620018 	mult	v1,v0
  43c160:	00001012 	mflo	v0
  43c164:	1082000d 	beq	a0,v0,43c19c <accept_delete+0x230>
  43c168:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: invalid size");
  43c16c:	24040003 	li	a0,3
  43c170:	8f85802c 	lw	a1,-32724(gp)
  43c174:	00000000 	nop
  43c178:	24a5d974 	addiu	a1,a1,-9868
  43c17c:	8f998c48 	lw	t9,-29624(gp)
  43c180:	00000000 	nop
  43c184:	0320f809 	jalr	t9
  43c188:	00000000 	nop
  43c18c:	8fdc0010 	lw	gp,16(s8)
  43c190:	00000000 	nop
	return;
  43c194:	1000017d 	b	43c78c <accept_delete+0x820>
  43c198:	00000000 	nop
    }

    switch (d->isad_protoid) {
  43c19c:	8fc20018 	lw	v0,24(s8)
  43c1a0:	00000000 	nop
  43c1a4:	90420008 	lbu	v0,8(v0)
  43c1a8:	00000000 	nop
  43c1ac:	afc20038 	sw	v0,56(s8)
  43c1b0:	24020001 	li	v0,1
  43c1b4:	8fc30038 	lw	v1,56(s8)
  43c1b8:	00000000 	nop
  43c1bc:	1062000f 	beq	v1,v0,43c1fc <accept_delete+0x290>
  43c1c0:	00000000 	nop
  43c1c4:	8fc30038 	lw	v1,56(s8)
  43c1c8:	00000000 	nop
  43c1cc:	28620001 	slti	v0,v1,1
  43c1d0:	1440000e 	bnez	v0,43c20c <accept_delete+0x2a0>
  43c1d4:	00000000 	nop
  43c1d8:	8fc30038 	lw	v1,56(s8)
  43c1dc:	00000000 	nop
  43c1e0:	28620004 	slti	v0,v1,4
  43c1e4:	10400009 	beqz	v0,43c20c <accept_delete+0x2a0>
  43c1e8:	00000000 	nop
	case PROTO_ISAKMP:
	    sizespi = (2*COOKIE_SIZE);
	    break;
	case PROTO_IPSEC_AH:
	case PROTO_IPSEC_ESP:
	    sizespi = sizeof(ipsec_spi_t);
  43c1ec:	24020004 	li	v0,4
  43c1f0:	afc2001c 	sw	v0,28(s8)
	    break;
  43c1f4:	1000001c 	b	43c268 <accept_delete+0x2fc>
  43c1f8:	00000000 	nop
  43c1fc:	24020010 	li	v0,16
  43c200:	afc2001c 	sw	v0,28(s8)
  43c204:	10000018 	b	43c268 <accept_delete+0x2fc>
  43c208:	00000000 	nop
	default:
	    loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: "
  43c20c:	8fc20018 	lw	v0,24(s8)
  43c210:	00000000 	nop
  43c214:	90420008 	lbu	v0,8(v0)
  43c218:	8f848ab4 	lw	a0,-30028(gp)
  43c21c:	00402821 	move	a1,v0
  43c220:	8f9987fc 	lw	t9,-30724(gp)
  43c224:	00000000 	nop
  43c228:	0320f809 	jalr	t9
  43c22c:	00000000 	nop
  43c230:	8fdc0010 	lw	gp,16(s8)
  43c234:	24040003 	li	a0,3
  43c238:	8f85802c 	lw	a1,-32724(gp)
  43c23c:	00000000 	nop
  43c240:	24a5d9a0 	addiu	a1,a1,-9824
  43c244:	00403021 	move	a2,v0
  43c248:	8f998c48 	lw	t9,-29624(gp)
  43c24c:	00000000 	nop
  43c250:	0320f809 	jalr	t9
  43c254:	00000000 	nop
  43c258:	8fdc0010 	lw	gp,16(s8)
  43c25c:	00000000 	nop
		"unknown Protocol ID (%s)",
		enum_show(&protocol_names, d->isad_protoid));
	    return;
  43c260:	1000014a 	b	43c78c <accept_delete+0x820>
  43c264:	00000000 	nop
	    break;
    }

    if (d->isad_spisize != sizespi) {
  43c268:	8fc20018 	lw	v0,24(s8)
  43c26c:	00000000 	nop
  43c270:	90430009 	lbu	v1,9(v0)
  43c274:	8fc2001c 	lw	v0,28(s8)
  43c278:	00000000 	nop
  43c27c:	1062001d 	beq	v1,v0,43c2f4 <accept_delete+0x388>
  43c280:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: "
  43c284:	8fc20018 	lw	v0,24(s8)
  43c288:	00000000 	nop
  43c28c:	90420008 	lbu	v0,8(v0)
  43c290:	8f848ab4 	lw	a0,-30028(gp)
  43c294:	00402821 	move	a1,v0
  43c298:	8f9987fc 	lw	t9,-30724(gp)
  43c29c:	00000000 	nop
  43c2a0:	0320f809 	jalr	t9
  43c2a4:	00000000 	nop
  43c2a8:	8fdc0010 	lw	gp,16(s8)
  43c2ac:	00401821 	move	v1,v0
  43c2b0:	8fc20018 	lw	v0,24(s8)
  43c2b4:	00000000 	nop
  43c2b8:	90420009 	lbu	v0,9(v0)
  43c2bc:	24040003 	li	a0,3
  43c2c0:	8f85802c 	lw	a1,-32724(gp)
  43c2c4:	00000000 	nop
  43c2c8:	24a5d9d8 	addiu	a1,a1,-9768
  43c2cc:	00403021 	move	a2,v0
  43c2d0:	00603821 	move	a3,v1
  43c2d4:	8f998c48 	lw	t9,-29624(gp)
  43c2d8:	00000000 	nop
  43c2dc:	0320f809 	jalr	t9
  43c2e0:	00000000 	nop
  43c2e4:	8fdc0010 	lw	gp,16(s8)
  43c2e8:	00000000 	nop
	    "bad size (%d) for Protocol (%s)",
	    d->isad_spisize,
	    enum_show(&protocol_names, d->isad_protoid));
	return;
  43c2ec:	10000127 	b	43c78c <accept_delete+0x820>
  43c2f0:	00000000 	nop
    }

    for (i=0; i<d->isad_nospi; i++) {
  43c2f4:	afc00028 	sw	zero,40(s8)
  43c2f8:	8fc20018 	lw	v0,24(s8)
  43c2fc:	00000000 	nop
  43c300:	9443000a 	lhu	v1,10(v0)
  43c304:	8fc20028 	lw	v0,40(s8)
  43c308:	00000000 	nop
  43c30c:	0043102a 	slt	v0,v0,v1
  43c310:	14400003 	bnez	v0,43c320 <accept_delete+0x3b4>
  43c314:	00000000 	nop
  43c318:	1000011c 	b	43c78c <accept_delete+0x820>
  43c31c:	00000000 	nop
	spi = p->pbs.cur + (i * sizespi);
  43c320:	8fc30028 	lw	v1,40(s8)
  43c324:	8fc2001c 	lw	v0,28(s8)
  43c328:	00000000 	nop
  43c32c:	00620018 	mult	v1,v0
  43c330:	00001812 	mflo	v1
  43c334:	8fc20058 	lw	v0,88(s8)
  43c338:	00000000 	nop
  43c33c:	8c420010 	lw	v0,16(v0)
  43c340:	00000000 	nop
  43c344:	00431021 	addu	v0,v0,v1
  43c348:	afc20020 	sw	v0,32(s8)
	if (d->isad_protoid == PROTO_ISAKMP) {
  43c34c:	8fc20018 	lw	v0,24(s8)
  43c350:	00000000 	nop
  43c354:	90430008 	lbu	v1,8(v0)
  43c358:	24020001 	li	v0,1
  43c35c:	1462003f 	bne	v1,v0,43c45c <accept_delete+0x4f0>
  43c360:	00000000 	nop
	    /**
	     * ISAKMP
	     */
	    dst = find_phase1_state_to_delete(st, spi /*iCookie*/,
  43c364:	8fc20020 	lw	v0,32(s8)
  43c368:	00000000 	nop
  43c36c:	24420008 	addiu	v0,v0,8
  43c370:	8fc40050 	lw	a0,80(s8)
  43c374:	8fc50020 	lw	a1,32(s8)
  43c378:	00403021 	move	a2,v0
  43c37c:	8f998a9c 	lw	t9,-30052(gp)
  43c380:	00000000 	nop
  43c384:	0320f809 	jalr	t9
  43c388:	00000000 	nop
  43c38c:	8fdc0010 	lw	gp,16(s8)
  43c390:	afc20024 	sw	v0,36(s8)
		spi+COOKIE_SIZE /*rCookie*/);
	    if (dst) {
  43c394:	8fc20024 	lw	v0,36(s8)
  43c398:	00000000 	nop
  43c39c:	10400024 	beqz	v0,43c430 <accept_delete+0x4c4>
  43c3a0:	00000000 	nop
#ifdef NAT_TRAVERSAL
		if (nat_traversal_enabled) {
  43c3a4:	8f82837c 	lw	v0,-31876(gp)
  43c3a8:	00000000 	nop
  43c3ac:	8c420000 	lw	v0,0(v0)
  43c3b0:	00000000 	nop
  43c3b4:	10400009 	beqz	v0,43c3dc <accept_delete+0x470>
  43c3b8:	00000000 	nop
		    nat_traversal_change_port_lookup(md, dst);
  43c3bc:	8fc40054 	lw	a0,84(s8)
  43c3c0:	8fc50024 	lw	a1,36(s8)
  43c3c4:	8f9983f8 	lw	t9,-31752(gp)
  43c3c8:	00000000 	nop
  43c3cc:	0320f809 	jalr	t9
  43c3d0:	00000000 	nop
  43c3d4:	8fdc0010 	lw	gp,16(s8)
  43c3d8:	00000000 	nop
		}
#endif
		loglog(RC_LOG_SERIOUS, "received Delete SA payload: "
  43c3dc:	24040003 	li	a0,3
  43c3e0:	8f85802c 	lw	a1,-32724(gp)
  43c3e4:	00000000 	nop
  43c3e8:	24a5da14 	addiu	a1,a1,-9708
  43c3ec:	8fc20024 	lw	v0,36(s8)
  43c3f0:	00000000 	nop
  43c3f4:	8c460000 	lw	a2,0(v0)
  43c3f8:	8f998c48 	lw	t9,-29624(gp)
  43c3fc:	00000000 	nop
  43c400:	0320f809 	jalr	t9
  43c404:	00000000 	nop
  43c408:	8fdc0010 	lw	gp,16(s8)
  43c40c:	00000000 	nop
		    "deleting ISAKMP State #%lu", dst->st_serialno);
		delete_state(dst);
  43c410:	8fc40024 	lw	a0,36(s8)
  43c414:	8f998b70 	lw	t9,-29840(gp)
  43c418:	00000000 	nop
  43c41c:	0320f809 	jalr	t9
  43c420:	00000000 	nop
  43c424:	8fdc0010 	lw	gp,16(s8)
  43c428:	100000d2 	b	43c774 <accept_delete+0x808>
  43c42c:	00000000 	nop
	    }
	    else {
		loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: "
  43c430:	24040003 	li	a0,3
  43c434:	8f85802c 	lw	a1,-32724(gp)
  43c438:	00000000 	nop
  43c43c:	24a5da4c 	addiu	a1,a1,-9652
  43c440:	8f998c48 	lw	t9,-29624(gp)
  43c444:	00000000 	nop
  43c448:	0320f809 	jalr	t9
  43c44c:	00000000 	nop
  43c450:	8fdc0010 	lw	gp,16(s8)
  43c454:	100000c7 	b	43c774 <accept_delete+0x808>
  43c458:	00000000 	nop
		    "ISAKMP SA not found (maybe expired)");
	    }
	}
	else {
	    /**
	     * IPSEC (ESP/AH)
	     */
	    bool bogus;
	    ipsec_spi_t ipsec_spi = *((ipsec_spi_t *)spi);
  43c45c:	8fc20020 	lw	v0,32(s8)
  43c460:	00000000 	nop
  43c464:	8c420000 	lw	v0,0(v0)
  43c468:	00000000 	nop
  43c46c:	afc20030 	sw	v0,48(s8)

	    dst = find_phase2_state_to_delete(st, d->isad_protoid, ipsec_spi, &bogus);
  43c470:	8fc20018 	lw	v0,24(s8)
  43c474:	00000000 	nop
  43c478:	90420008 	lbu	v0,8(v0)
  43c47c:	8fc40050 	lw	a0,80(s8)
  43c480:	00402821 	move	a1,v0
  43c484:	8fc60030 	lw	a2,48(s8)
  43c488:	27c7002c 	addiu	a3,s8,44
  43c48c:	8f998220 	lw	t9,-32224(gp)
  43c490:	00000000 	nop
  43c494:	0320f809 	jalr	t9
  43c498:	00000000 	nop
  43c49c:	8fdc0010 	lw	gp,16(s8)
  43c4a0:	afc20024 	sw	v0,36(s8)
	    if (dst) {
  43c4a4:	8fc20024 	lw	v0,36(s8)
  43c4a8:	00000000 	nop
  43c4ac:	10400096 	beqz	v0,43c708 <accept_delete+0x79c>
  43c4b0:	00000000 	nop
		struct connection *rc = dst->st_connection;
  43c4b4:	8fc20024 	lw	v0,36(s8)
  43c4b8:	00000000 	nop
  43c4bc:	8c42000c 	lw	v0,12(v0)
  43c4c0:	00000000 	nop
  43c4c4:	afc20034 	sw	v0,52(s8)
#ifdef NAT_TRAVERSAL
		if (nat_traversal_enabled) {
  43c4c8:	8f82837c 	lw	v0,-31876(gp)
  43c4cc:	00000000 	nop
  43c4d0:	8c420000 	lw	v0,0(v0)
  43c4d4:	00000000 	nop
  43c4d8:	10400009 	beqz	v0,43c500 <accept_delete+0x594>
  43c4dc:	00000000 	nop
		    nat_traversal_change_port_lookup(md, dst);
  43c4e0:	8fc40054 	lw	a0,84(s8)
  43c4e4:	8fc50024 	lw	a1,36(s8)
  43c4e8:	8f9983f8 	lw	t9,-31752(gp)
  43c4ec:	00000000 	nop
  43c4f0:	0320f809 	jalr	t9
  43c4f4:	00000000 	nop
  43c4f8:	8fdc0010 	lw	gp,16(s8)
  43c4fc:	00000000 	nop
		}
#endif
		if ((rc) && (rc->newest_ipsec_sa == dst->st_serialno) &&
		    (rc->initiated)) {
  43c500:	8fc20034 	lw	v0,52(s8)
  43c504:	00000000 	nop
  43c508:	1040006a 	beqz	v0,43c6b4 <accept_delete+0x748>
  43c50c:	00000000 	nop
  43c510:	8fc20034 	lw	v0,52(s8)
  43c514:	00000000 	nop
  43c518:	8c4301a8 	lw	v1,424(v0)
  43c51c:	8fc20024 	lw	v0,36(s8)
  43c520:	00000000 	nop
  43c524:	8c420000 	lw	v0,0(v0)
  43c528:	00000000 	nop
  43c52c:	14620061 	bne	v1,v0,43c6b4 <accept_delete+0x748>
  43c530:	00000000 	nop
  43c534:	8fc20034 	lw	v0,52(s8)
  43c538:	00000000 	nop
  43c53c:	8c4201a0 	lw	v0,416(v0)
  43c540:	00000000 	nop
  43c544:	1040005b 	beqz	v0,43c6b4 <accept_delete+0x748>
  43c548:	00000000 	nop
		    /*
		     * Last IPsec SA for a permanent connection that we
		     * have initiated. Replace it in a few seconds.
		     *
		     * Usefull if the other peer is rebooting
		     */
#define DELETE_SA_DELAY  EVENT_RETRANSMIT_DELAY_0
		    if ((dst->st_event) &&
			(dst->st_event->ev_type == EVENT_SA_REPLACE) &&
			(dst->st_event->ev_time <= DELETE_SA_DELAY + now())) {
  43c54c:	8fc20024 	lw	v0,36(s8)
  43c550:	00000000 	nop
  43c554:	8c420258 	lw	v0,600(v0)
  43c558:	00000000 	nop
  43c55c:	10400032 	beqz	v0,43c628 <accept_delete+0x6bc>
  43c560:	00000000 	nop
  43c564:	8fc20024 	lw	v0,36(s8)
  43c568:	00000000 	nop
  43c56c:	8c420258 	lw	v0,600(v0)
  43c570:	00000000 	nop
  43c574:	8c430004 	lw	v1,4(v0)
  43c578:	24020005 	li	v0,5
  43c57c:	1462002a 	bne	v1,v0,43c628 <accept_delete+0x6bc>
  43c580:	00000000 	nop
  43c584:	8fc20024 	lw	v0,36(s8)
  43c588:	00000000 	nop
  43c58c:	8c500258 	lw	s0,600(v0)
  43c590:	8f998b58 	lw	t9,-29864(gp)
  43c594:	00000000 	nop
  43c598:	0320f809 	jalr	t9
  43c59c:	00000000 	nop
  43c5a0:	8fdc0010 	lw	gp,16(s8)
  43c5a4:	2443000a 	addiu	v1,v0,10
  43c5a8:	8e020000 	lw	v0,0(s0)
  43c5ac:	00000000 	nop
  43c5b0:	0062102a 	slt	v0,v1,v0
  43c5b4:	1440001c 	bnez	v0,43c628 <accept_delete+0x6bc>
  43c5b8:	00000000 	nop
			/*
			 * Patch from Angus Lees to ignore retransmited Delete SA.
			 */
			loglog(RC_LOG_SERIOUS, "received Delete SA payload: "
  43c5bc:	8fc20024 	lw	v0,36(s8)
  43c5c0:	00000000 	nop
  43c5c4:	8c500258 	lw	s0,600(v0)
  43c5c8:	8f998b58 	lw	t9,-29864(gp)
  43c5cc:	00000000 	nop
  43c5d0:	0320f809 	jalr	t9
  43c5d4:	00000000 	nop
  43c5d8:	8fdc0010 	lw	gp,16(s8)
  43c5dc:	00401821 	move	v1,v0
  43c5e0:	8e020000 	lw	v0,0(s0)
  43c5e4:	00000000 	nop
  43c5e8:	00431823 	subu	v1,v0,v1
  43c5ec:	24040003 	li	a0,3
  43c5f0:	8f85802c 	lw	a1,-32724(gp)
  43c5f4:	00000000 	nop
  43c5f8:	24a5da8c 	addiu	a1,a1,-9588
  43c5fc:	8fc20024 	lw	v0,36(s8)
  43c600:	00000000 	nop
  43c604:	8c460000 	lw	a2,0(v0)
  43c608:	00603821 	move	a3,v1
  43c60c:	8f998c48 	lw	t9,-29624(gp)
  43c610:	00000000 	nop
  43c614:	0320f809 	jalr	t9
  43c618:	00000000 	nop
  43c61c:	8fdc0010 	lw	gp,16(s8)
  43c620:	10000054 	b	43c774 <accept_delete+0x808>
  43c624:	00000000 	nop
			    "already replacing IPSEC State #%lu in %d seconds",
			    dst->st_serialno, (int)(dst->st_event->ev_time - now()));
		    }
		    else {
			loglog(RC_LOG_SERIOUS, "received Delete SA payload: "
  43c628:	24040003 	li	a0,3
  43c62c:	8f85802c 	lw	a1,-32724(gp)
  43c630:	00000000 	nop
  43c634:	24a5dadc 	addiu	a1,a1,-9508
  43c638:	8fc20024 	lw	v0,36(s8)
  43c63c:	00000000 	nop
  43c640:	8c460000 	lw	a2,0(v0)
  43c644:	2407000a 	li	a3,10
  43c648:	8f998c48 	lw	t9,-29624(gp)
  43c64c:	00000000 	nop
  43c650:	0320f809 	jalr	t9
  43c654:	00000000 	nop
  43c658:	8fdc0010 	lw	gp,16(s8)
  43c65c:	00000000 	nop
			    "replace IPSEC State #%lu in %d seconds",
			    dst->st_serialno, DELETE_SA_DELAY);
			dst->st_margin = DELETE_SA_DELAY;
  43c660:	2403000a 	li	v1,10
  43c664:	8fc20024 	lw	v0,36(s8)
  43c668:	00000000 	nop
  43c66c:	ac430158 	sw	v1,344(v0)
			delete_event(dst);
  43c670:	8fc40024 	lw	a0,36(s8)
  43c674:	8f9985b4 	lw	t9,-31308(gp)
  43c678:	00000000 	nop
  43c67c:	0320f809 	jalr	t9
  43c680:	00000000 	nop
  43c684:	8fdc0010 	lw	gp,16(s8)
  43c688:	00000000 	nop
			event_schedule(EVENT_SA_REPLACE, DELETE_SA_DELAY, dst);
  43c68c:	24040005 	li	a0,5
  43c690:	2405000a 	li	a1,10
  43c694:	8fc60024 	lw	a2,36(s8)
  43c698:	8f998410 	lw	t9,-31728(gp)
  43c69c:	00000000 	nop
  43c6a0:	0320f809 	jalr	t9
  43c6a4:	00000000 	nop
  43c6a8:	8fdc0010 	lw	gp,16(s8)
  43c6ac:	10000031 	b	43c774 <accept_delete+0x808>
  43c6b0:	00000000 	nop
		    }
		}
		else {
		    loglog(RC_LOG_SERIOUS, "received Delete SA payload: "
  43c6b4:	24040003 	li	a0,3
  43c6b8:	8f85802c 	lw	a1,-32724(gp)
  43c6bc:	00000000 	nop
  43c6c0:	24a5db20 	addiu	a1,a1,-9440
  43c6c4:	8fc20024 	lw	v0,36(s8)
  43c6c8:	00000000 	nop
  43c6cc:	8c460000 	lw	a2,0(v0)
  43c6d0:	8f998c48 	lw	t9,-29624(gp)
  43c6d4:	00000000 	nop
  43c6d8:	0320f809 	jalr	t9
  43c6dc:	00000000 	nop
  43c6e0:	8fdc0010 	lw	gp,16(s8)
  43c6e4:	00000000 	nop
			"deleting IPSEC State #%lu", dst->st_serialno);
		    delete_state(dst);
  43c6e8:	8fc40024 	lw	a0,36(s8)
  43c6ec:	8f998b70 	lw	t9,-29840(gp)
  43c6f0:	00000000 	nop
  43c6f4:	0320f809 	jalr	t9
  43c6f8:	00000000 	nop
  43c6fc:	8fdc0010 	lw	gp,16(s8)
  43c700:	1000001c 	b	43c774 <accept_delete+0x808>
  43c704:	00000000 	nop
		}
	    }
	    else {
		loglog(RC_LOG_SERIOUS, "ignoring Delete SA payload: "
  43c708:	8fc2002c 	lw	v0,44(s8)
  43c70c:	00000000 	nop
  43c710:	10400008 	beqz	v0,43c734 <accept_delete+0x7c8>
  43c714:	00000000 	nop
  43c718:	8f82802c 	lw	v0,-32724(gp)
  43c71c:	00000000 	nop
  43c720:	2442db58 	addiu	v0,v0,-9384
  43c724:	00000000 	nop
  43c728:	afc2003c 	sw	v0,60(s8)
  43c72c:	10000006 	b	43c748 <accept_delete+0x7dc>
  43c730:	00000000 	nop
  43c734:	8f83802c 	lw	v1,-32724(gp)
  43c738:	00000000 	nop
  43c73c:	2463db78 	addiu	v1,v1,-9352
  43c740:	00000000 	nop
  43c744:	afc3003c 	sw	v1,60(s8)
  43c748:	24040003 	li	a0,3
  43c74c:	8f85802c 	lw	a1,-32724(gp)
  43c750:	00000000 	nop
  43c754:	24a5db88 	addiu	a1,a1,-9336
  43c758:	8fc6003c 	lw	a2,60(s8)
  43c75c:	8f998c48 	lw	t9,-29624(gp)
  43c760:	00000000 	nop
  43c764:	0320f809 	jalr	t9
  43c768:	00000000 	nop
  43c76c:	8fdc0010 	lw	gp,16(s8)
  43c770:	00000000 	nop
  43c774:	8fc20028 	lw	v0,40(s8)
  43c778:	00000000 	nop
  43c77c:	24420001 	addiu	v0,v0,1
  43c780:	afc20028 	sw	v0,40(s8)
  43c784:	1000fedc 	b	43c2f8 <accept_delete+0x38c>
  43c788:	00000000 	nop
		    "IPSEC SA not found (%s)",
		    bogus ? "our spi - bogus implementation" : "maybe expired");
	    }
	}
    }
}
  43c78c:	03c0e821 	move	sp,s8
  43c790:	8fbf004c 	lw	ra,76(sp)
  43c794:	8fbe0048 	lw	s8,72(sp)
  43c798:	8fb00040 	lw	s0,64(sp)
  43c79c:	27bd0050 	addiu	sp,sp,80
  43c7a0:	03e00008 	jr	ra
  43c7a4:	00000000 	nop

0043c7a8 <close_message>:
  43c7a8:	3c1c0fbd 	lui	gp,0xfbd
  43c7ac:	279c01c8 	addiu	gp,gp,456
  43c7b0:	0399e021 	addu	gp,gp,t9
  43c7b4:	27bdffd0 	addiu	sp,sp,-48
  43c7b8:	afbc0010 	sw	gp,16(sp)
  43c7bc:	afbf0028 	sw	ra,40(sp)
  43c7c0:	afbe0024 	sw	s8,36(sp)
  43c7c4:	afbc0020 	sw	gp,32(sp)
  43c7c8:	03a0f021 	move	s8,sp
  43c7cc:	afc40030 	sw	a0,48(s8)

/* The whole message must be a multiple of 4 octets.
 * I'm not sure where this is spelled out, but look at
 * rfc2408 3.6 Transform Payload.
 * Note: it talks about 4 BYTE boundaries!
 */
void
close_message(pb_stream *pbs)
{
    size_t padding =  pad_up(pbs_offset(pbs), 4);
  43c7d0:	8fc20030 	lw	v0,48(s8)
  43c7d4:	00000000 	nop
  43c7d8:	8c430010 	lw	v1,16(v0)
  43c7dc:	8fc20030 	lw	v0,48(s8)
  43c7e0:	00000000 	nop
  43c7e4:	8c42000c 	lw	v0,12(v0)
  43c7e8:	00000000 	nop
  43c7ec:	00621023 	subu	v0,v1,v0
  43c7f0:	24420003 	addiu	v0,v0,3
  43c7f4:	30430003 	andi	v1,v0,0x3
  43c7f8:	24020003 	li	v0,3
  43c7fc:	00431023 	subu	v0,v0,v1
  43c800:	afc20018 	sw	v0,24(s8)

    if (padding != 0)
  43c804:	8fc20018 	lw	v0,24(s8)
  43c808:	00000000 	nop
  43c80c:	1040000c 	beqz	v0,43c840 <close_message+0x98>
  43c810:	00000000 	nop
	(void) out_zero(padding, pbs, "message padding");
  43c814:	8fc40018 	lw	a0,24(s8)
  43c818:	8fc50030 	lw	a1,48(s8)
  43c81c:	8f86802c 	lw	a2,-32724(gp)
  43c820:	00000000 	nop
  43c824:	24c6dbbc 	addiu	a2,a2,-9284
  43c828:	8f998a20 	lw	t9,-30176(gp)
  43c82c:	00000000 	nop
  43c830:	0320f809 	jalr	t9
  43c834:	00000000 	nop
  43c838:	8fdc0010 	lw	gp,16(s8)
  43c83c:	00000000 	nop
    close_output_pbs(pbs);
  43c840:	8fc40030 	lw	a0,48(s8)
  43c844:	8f998228 	lw	t9,-32216(gp)
  43c848:	00000000 	nop
  43c84c:	0320f809 	jalr	t9
  43c850:	00000000 	nop
  43c854:	8fdc0010 	lw	gp,16(s8)
  43c858:	00000000 	nop
}
  43c85c:	03c0e821 	move	sp,s8
  43c860:	8fbf0028 	lw	ra,40(sp)
  43c864:	8fbe0024 	lw	s8,36(sp)
  43c868:	27bd0030 	addiu	sp,sp,48
  43c86c:	03e00008 	jr	ra
  43c870:	00000000 	nop

0043c874 <main_outI1>:
  43c874:	3c1c0fbd 	lui	gp,0xfbd
  43c878:	279c00fc 	addiu	gp,gp,252
  43c87c:	0399e021 	addu	gp,gp,t9
  43c880:	27bdff40 	addiu	sp,sp,-192
  43c884:	afbc0020 	sw	gp,32(sp)
  43c888:	afbf00bc 	sw	ra,188(sp)
  43c88c:	afbe00b8 	sw	s8,184(sp)
  43c890:	afbc00b4 	sw	gp,180(sp)
  43c894:	afb000b0 	sw	s0,176(sp)
  43c898:	03a0f021 	move	s8,sp
  43c89c:	afc400c0 	sw	a0,192(s8)
  43c8a0:	afc500c4 	sw	a1,196(s8)
  43c8a4:	afc600c8 	sw	a2,200(s8)

/* Initiate an Oakley Main Mode exchange.
 * --> HDR;SA
 * Note: this is not called from demux.c
 */
static stf_status
main_outI1(int whack_sock
, struct connection *c
, struct state *predecessor
, lset_t policy
, unsigned long try)
{
    struct state *st = new_state();
  43c8a8:	8f9987b4 	lw	t9,-30796(gp)
  43c8ac:	00000000 	nop
  43c8b0:	0320f809 	jalr	t9
  43c8b4:	00000000 	nop
  43c8b8:	8fdc0020 	lw	gp,32(s8)
  43c8bc:	afc20028 	sw	v0,40(s8)
    pb_stream reply;	/* not actually a reply, but you know what I mean */
    pb_stream rbody;

    /* set up new state */
    st->st_connection = c;
  43c8c0:	8fc300c4 	lw	v1,196(s8)
  43c8c4:	8fc20028 	lw	v0,40(s8)
  43c8c8:	00000000 	nop
  43c8cc:	ac43000c 	sw	v1,12(v0)
    set_cur_state(st);	/* we must reset before exit */
  43c8d0:	8fc20028 	lw	v0,40(s8)
  43c8d4:	8f8187f8 	lw	at,-30728(gp)
  43c8d8:	00000000 	nop
  43c8dc:	ac220000 	sw	v0,0(at)
  43c8e0:	8fc20028 	lw	v0,40(s8)
  43c8e4:	00000000 	nop
  43c8e8:	8c44000c 	lw	a0,12(v0)
  43c8ec:	8f998be4 	lw	t9,-29724(gp)
  43c8f0:	00000000 	nop
  43c8f4:	0320f809 	jalr	t9
  43c8f8:	00000000 	nop
  43c8fc:	8fdc0020 	lw	gp,32(s8)
  43c900:	00000000 	nop
    st->st_policy = policy & ~POLICY_IPSEC_MASK;
  43c904:	8fc400d0 	lw	a0,208(s8)
  43c908:	8fc500d4 	lw	a1,212(s8)
  43c90c:	2402ffff 	li	v0,-1
  43c910:	2403ff03 	li	v1,-253
  43c914:	00821024 	and	v0,a0,v0
  43c918:	00a31824 	and	v1,a1,v1
  43c91c:	8fc40028 	lw	a0,40(s8)
  43c920:	00000000 	nop
  43c924:	ac8200d8 	sw	v0,216(a0)
  43c928:	ac8300dc 	sw	v1,220(a0)
    st->st_whack_sock = whack_sock;
  43c92c:	8fc300c0 	lw	v1,192(s8)
  43c930:	8fc20028 	lw	v0,40(s8)
  43c934:	00000000 	nop
  43c938:	ac430014 	sw	v1,20(v0)
    st->st_try = try;
  43c93c:	8fc300d8 	lw	v1,216(s8)
  43c940:	8fc20028 	lw	v0,40(s8)
  43c944:	00000000 	nop
  43c948:	ac430154 	sw	v1,340(v0)
    st->st_state = STATE_MAIN_I1;
  43c94c:	24030004 	li	v1,4
  43c950:	8fc20028 	lw	v0,40(s8)
  43c954:	00000000 	nop
  43c958:	ac43014c 	sw	v1,332(v0)

    get_cookie(TRUE, st->st_icookie, COOKIE_SIZE, &c->that.host_addr);
  43c95c:	8fc20028 	lw	v0,40(s8)
  43c960:	00000000 	nop
  43c964:	244300f0 	addiu	v1,v0,240
  43c968:	8fc200c4 	lw	v0,196(s8)
  43c96c:	00000000 	nop
  43c970:	24420108 	addiu	v0,v0,264
  43c974:	24040001 	li	a0,1
  43c978:	00602821 	move	a1,v1
  43c97c:	24060008 	li	a2,8
  43c980:	00403821 	move	a3,v0
  43c984:	8f998574 	lw	t9,-31372(gp)
  43c988:	00000000 	nop
  43c98c:	0320f809 	jalr	t9
  43c990:	00000000 	nop
  43c994:	8fdc0020 	lw	gp,32(s8)
  43c998:	00000000 	nop

    insert_state(st);	/* needs cookies, connection, and msgid (0) */
  43c99c:	8fc40028 	lw	a0,40(s8)
  43c9a0:	8f9983a4 	lw	t9,-31836(gp)
  43c9a4:	00000000 	nop
  43c9a8:	0320f809 	jalr	t9
  43c9ac:	00000000 	nop
  43c9b0:	8fdc0020 	lw	gp,32(s8)
  43c9b4:	00000000 	nop

    if (HAS_IPSEC_POLICY(policy))
  43c9b8:	8fc400d0 	lw	a0,208(s8)
  43c9bc:	8fc500d4 	lw	a1,212(s8)
  43c9c0:	24020000 	li	v0,0
  43c9c4:	240300fc 	li	v1,252
  43c9c8:	00822024 	and	a0,a0,v0
  43c9cc:	00a32824 	and	a1,a1,v1
  43c9d0:	00801021 	move	v0,a0
  43c9d4:	00451025 	or	v0,v0,a1
  43c9d8:	1040002b 	beqz	v0,43ca88 <main_outI1+0x214>
  43c9dc:	00000000 	nop
	add_pending(dup_any(whack_sock), st, c, policy, 1
  43c9e0:	8fc300c0 	lw	v1,192(s8)
  43c9e4:	2402ffff 	li	v0,-1
  43c9e8:	1062000a 	beq	v1,v0,43ca14 <main_outI1+0x1a0>
  43c9ec:	00000000 	nop
  43c9f0:	8fc400c0 	lw	a0,192(s8)
  43c9f4:	8f99840c 	lw	t9,-31732(gp)
  43c9f8:	00000000 	nop
  43c9fc:	0320f809 	jalr	t9
  43ca00:	00000000 	nop
  43ca04:	8fdc0020 	lw	gp,32(s8)
  43ca08:	afc200a4 	sw	v0,164(s8)
  43ca0c:	10000003 	b	43ca1c <main_outI1+0x1a8>
  43ca10:	00000000 	nop
  43ca14:	2402ffff 	li	v0,-1
  43ca18:	afc200a4 	sw	v0,164(s8)
  43ca1c:	8fc200d0 	lw	v0,208(s8)
  43ca20:	8fc300d4 	lw	v1,212(s8)
  43ca24:	afa20010 	sw	v0,16(sp)
  43ca28:	afa30014 	sw	v1,20(sp)
  43ca2c:	24020001 	li	v0,1
  43ca30:	afa20018 	sw	v0,24(sp)
  43ca34:	8fc200c8 	lw	v0,200(s8)
  43ca38:	00000000 	nop
  43ca3c:	10400008 	beqz	v0,43ca60 <main_outI1+0x1ec>
  43ca40:	00000000 	nop
  43ca44:	8fc200c8 	lw	v0,200(s8)
  43ca48:	00000000 	nop
  43ca4c:	8c420000 	lw	v0,0(v0)
  43ca50:	00000000 	nop
  43ca54:	afa2001c 	sw	v0,28(sp)
  43ca58:	10000002 	b	43ca64 <main_outI1+0x1f0>
  43ca5c:	00000000 	nop
  43ca60:	afa0001c 	sw	zero,28(sp)
  43ca64:	8fc400a4 	lw	a0,164(s8)
  43ca68:	8fc50028 	lw	a1,40(s8)
  43ca6c:	8fc600c4 	lw	a2,196(s8)
  43ca70:	8f998554 	lw	t9,-31404(gp)
  43ca74:	00000000 	nop
  43ca78:	0320f809 	jalr	t9
  43ca7c:	00000000 	nop
  43ca80:	8fdc0020 	lw	gp,32(s8)
  43ca84:	00000000 	nop
	    , predecessor == NULL? SOS_NOBODY : predecessor->st_serialno);

    if (predecessor == NULL)
  43ca88:	8fc200c8 	lw	v0,200(s8)
  43ca8c:	00000000 	nop
  43ca90:	1440000b 	bnez	v0,43cac0 <main_outI1+0x24c>
  43ca94:	00000000 	nop
	plog("initiating Main Mode");
  43ca98:	8f84802c 	lw	a0,-32724(gp)
  43ca9c:	00000000 	nop
  43caa0:	2484dbcc 	addiu	a0,a0,-9268
  43caa4:	8f998abc 	lw	t9,-30020(gp)
  43caa8:	00000000 	nop
  43caac:	0320f809 	jalr	t9
  43cab0:	00000000 	nop
  43cab4:	8fdc0020 	lw	gp,32(s8)
  43cab8:	1000000d 	b	43caf0 <main_outI1+0x27c>
  43cabc:	00000000 	nop
    else
	plog("initiating Main Mode to replace #%lu", predecessor->st_serialno);
  43cac0:	8f84802c 	lw	a0,-32724(gp)
  43cac4:	00000000 	nop
  43cac8:	2484dbe4 	addiu	a0,a0,-9244
  43cacc:	8fc200c8 	lw	v0,200(s8)
  43cad0:	00000000 	nop
  43cad4:	8c450000 	lw	a1,0(v0)
  43cad8:	8f998abc 	lw	t9,-30020(gp)
  43cadc:	00000000 	nop
  43cae0:	0320f809 	jalr	t9
  43cae4:	00000000 	nop
  43cae8:	8fdc0020 	lw	gp,32(s8)
  43caec:	00000000 	nop

    /* set up reply */
    init_pbs(&reply, reply_buffer, sizeof(reply_buffer), "reply packet");
  43caf0:	27c40030 	addiu	a0,s8,48
  43caf4:	8f858134 	lw	a1,-32460(gp)
  43caf8:	3c060001 	lui	a2,0x1
  43cafc:	8f87802c 	lw	a3,-32724(gp)
  43cb00:	00000000 	nop
  43cb04:	24e7dc0c 	addiu	a3,a3,-9204
  43cb08:	8f998364 	lw	t9,-31900(gp)
  43cb0c:	00000000 	nop
  43cb10:	0320f809 	jalr	t9
  43cb14:	00000000 	nop
  43cb18:	8fdc0020 	lw	gp,32(s8)
  43cb1c:	00000000 	nop

    /* HDR out */
    {
	struct isakmp_hdr hdr;

	zero(&hdr);	/* default to 0 */
  43cb20:	27c40070 	addiu	a0,s8,112
  43cb24:	00002821 	move	a1,zero
  43cb28:	2406001c 	li	a2,28
  43cb2c:	8f998500 	lw	t9,-31488(gp)
  43cb30:	00000000 	nop
  43cb34:	0320f809 	jalr	t9
  43cb38:	00000000 	nop
  43cb3c:	8fdc0020 	lw	gp,32(s8)
  43cb40:	00000000 	nop
	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;
  43cb44:	24020010 	li	v0,16
  43cb48:	a3c20081 	sb	v0,129(s8)
	hdr.isa_np = ISAKMP_NEXT_SA;
  43cb4c:	24020001 	li	v0,1
  43cb50:	a3c20080 	sb	v0,128(s8)
	hdr.isa_xchg = ISAKMP_XCHG_IDPROT;
  43cb54:	24020002 	li	v0,2
  43cb58:	a3c20082 	sb	v0,130(s8)
	memcpy(hdr.isa_icookie, st->st_icookie, COOKIE_SIZE);
  43cb5c:	8fc20028 	lw	v0,40(s8)
  43cb60:	00000000 	nop
  43cb64:	244200f0 	addiu	v0,v0,240
  43cb68:	27c40070 	addiu	a0,s8,112
  43cb6c:	00402821 	move	a1,v0
  43cb70:	24060008 	li	a2,8
  43cb74:	8f998a30 	lw	t9,-30160(gp)
  43cb78:	00000000 	nop
  43cb7c:	0320f809 	jalr	t9
  43cb80:	00000000 	nop
  43cb84:	8fdc0020 	lw	gp,32(s8)
  43cb88:	00000000 	nop
	/* R-cookie, flags and MessageID are left zero */

	if (!out_struct(&hdr, &isakmp_hdr_desc, &reply, &rbody))
  43cb8c:	27c40070 	addiu	a0,s8,112
  43cb90:	8f858688 	lw	a1,-31096(gp)
  43cb94:	27c60030 	addiu	a2,s8,48
  43cb98:	27c70050 	addiu	a3,s8,80
  43cb9c:	8f998ba0 	lw	t9,-29792(gp)
  43cba0:	00000000 	nop
  43cba4:	0320f809 	jalr	t9
  43cba8:	00000000 	nop
  43cbac:	8fdc0020 	lw	gp,32(s8)
  43cbb0:	1440000d 	bnez	v0,43cbe8 <main_outI1+0x374>
  43cbb4:	00000000 	nop
	{
	    reset_cur_state();
  43cbb8:	8f8187f8 	lw	at,-30728(gp)
  43cbbc:	00000000 	nop
  43cbc0:	ac200000 	sw	zero,0(at)
  43cbc4:	8f82830c 	lw	v0,-31988(gp)
  43cbc8:	00000000 	nop
  43cbcc:	8c420000 	lw	v0,0(v0)
  43cbd0:	8f8184f8 	lw	at,-31496(gp)
  43cbd4:	00000000 	nop
  43cbd8:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  43cbdc:	24020003 	li	v0,3
  43cbe0:	10000148 	b	43d104 <main_outI1+0x890>
  43cbe4:	00000000 	nop
	}
    }

    /* SA out */
    {
	u_char *sa_start = rbody.cur;
  43cbe8:	8fc20060 	lw	v0,96(s8)
  43cbec:	00000000 	nop
  43cbf0:	afc20090 	sw	v0,144(s8)
	lset_t auth_policy = policy & POLICY_ID_AUTH_MASK;
  43cbf4:	8fc400d0 	lw	a0,208(s8)
  43cbf8:	8fc500d4 	lw	a1,212(s8)
  43cbfc:	24020000 	li	v0,0
  43cc00:	24032003 	li	v1,8195
  43cc04:	00821024 	and	v0,a0,v0
  43cc08:	00a31824 	and	v1,a1,v1
  43cc0c:	afc20098 	sw	v0,152(s8)
  43cc10:	afc3009c 	sw	v1,156(s8)

	/* if we  use an ID_KEY_ID as own ID, we assume a
	 * PGPcert peer and have to send the Vendor ID
	 *  ++++ not sure, if this is an interop problem ++++++
	 */
	int np = (c->this.id.kind == ID_KEY_ID)? ISAKMP_NEXT_VID : ISAKMP_NEXT_NONE;
  43cc14:	8fc200c4 	lw	v0,196(s8)
  43cc18:	00000000 	nop
  43cc1c:	8c430030 	lw	v1,48(v0)
  43cc20:	2402000b 	li	v0,11
  43cc24:	14620005 	bne	v1,v0,43cc3c <main_outI1+0x3c8>
  43cc28:	00000000 	nop
  43cc2c:	2402000d 	li	v0,13
  43cc30:	afc200a8 	sw	v0,168(s8)
  43cc34:	10000002 	b	43cc40 <main_outI1+0x3cc>
  43cc38:	00000000 	nop
  43cc3c:	afc000a8 	sw	zero,168(s8)
  43cc40:	8fc200a8 	lw	v0,168(s8)
  43cc44:	00000000 	nop
  43cc48:	afc200a0 	sw	v0,160(s8)

	if (!out_sa(&rbody
	, &oakley_sadb[auth_policy >> POLICY_ISAKMP_SHIFT]
	, st, TRUE, FALSE, np))
  43cc4c:	8fc2009c 	lw	v0,156(s8)
  43cc50:	00000000 	nop
  43cc54:	000210c0 	sll	v0,v0,0x3
  43cc58:	8f838378 	lw	v1,-31880(gp)
  43cc5c:	00000000 	nop
  43cc60:	00621821 	addu	v1,v1,v0
  43cc64:	afa00010 	sw	zero,16(sp)
  43cc68:	93c200a3 	lbu	v0,163(s8)
  43cc6c:	00000000 	nop
  43cc70:	afa20014 	sw	v0,20(sp)
  43cc74:	27c40050 	addiu	a0,s8,80
  43cc78:	00602821 	move	a1,v1
  43cc7c:	8fc60028 	lw	a2,40(s8)
  43cc80:	24070001 	li	a3,1
  43cc84:	8f998bd0 	lw	t9,-29744(gp)
  43cc88:	00000000 	nop
  43cc8c:	0320f809 	jalr	t9
  43cc90:	00000000 	nop
  43cc94:	8fdc0020 	lw	gp,32(s8)
  43cc98:	1440000d 	bnez	v0,43ccd0 <main_outI1+0x45c>
  43cc9c:	00000000 	nop
	{
	    reset_cur_state();
  43cca0:	8f8187f8 	lw	at,-30728(gp)
  43cca4:	00000000 	nop
  43cca8:	ac200000 	sw	zero,0(at)
  43ccac:	8f82830c 	lw	v0,-31988(gp)
  43ccb0:	00000000 	nop
  43ccb4:	8c420000 	lw	v0,0(v0)
  43ccb8:	8f8184f8 	lw	at,-31496(gp)
  43ccbc:	00000000 	nop
  43ccc0:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  43ccc4:	24020003 	li	v0,3
  43ccc8:	1000010e 	b	43d104 <main_outI1+0x890>
  43cccc:	00000000 	nop
	}

	/* save initiator SA for later HASH */
	passert(st->st_p1isa.ptr == NULL);	/* no leak!  (MUST be first time) */
  43ccd0:	8fc20028 	lw	v0,40(s8)
  43ccd4:	00000000 	nop
  43ccd8:	8c42015c 	lw	v0,348(v0)
  43ccdc:	00000000 	nop
  43cce0:	1040000e 	beqz	v0,43cd1c <main_outI1+0x4a8>
  43cce4:	00000000 	nop
  43cce8:	8f84802c 	lw	a0,-32724(gp)
  43ccec:	00000000 	nop
  43ccf0:	2484dc1c 	addiu	a0,a0,-9188
  43ccf4:	8f85802c 	lw	a1,-32724(gp)
  43ccf8:	00000000 	nop
  43ccfc:	24a5d59c 	addiu	a1,a1,-10852
  43cd00:	240603a8 	li	a2,936
  43cd04:	8f998bb8 	lw	t9,-29768(gp)
  43cd08:	00000000 	nop
  43cd0c:	0320f809 	jalr	t9
  43cd10:	00000000 	nop
  43cd14:	8fdc0020 	lw	gp,32(s8)
  43cd18:	00000000 	nop
	clonetochunk(st->st_p1isa, sa_start, rbody.cur - sa_start
  43cd1c:	8fd00028 	lw	s0,40(s8)
  43cd20:	8fc30060 	lw	v1,96(s8)
  43cd24:	8fc20090 	lw	v0,144(s8)
  43cd28:	00000000 	nop
  43cd2c:	00621023 	subu	v0,v1,v0
  43cd30:	00401821 	move	v1,v0
  43cd34:	8fc20028 	lw	v0,40(s8)
  43cd38:	00000000 	nop
  43cd3c:	ac430160 	sw	v1,352(v0)
  43cd40:	8fc40090 	lw	a0,144(s8)
  43cd44:	00602821 	move	a1,v1
  43cd48:	8f86802c 	lw	a2,-32724(gp)
  43cd4c:	00000000 	nop
  43cd50:	24c6dc38 	addiu	a2,a2,-9160
  43cd54:	8f998c04 	lw	t9,-29692(gp)
  43cd58:	00000000 	nop
  43cd5c:	0320f809 	jalr	t9
  43cd60:	00000000 	nop
  43cd64:	8fdc0020 	lw	gp,32(s8)
  43cd68:	ae02015c 	sw	v0,348(s0)
	    , "sa in main_outI1");
    }

    if (c->this.id.kind == ID_KEY_ID)
  43cd6c:	8fc200c4 	lw	v0,196(s8)
  43cd70:	00000000 	nop
  43cd74:	8c430030 	lw	v1,48(v0)
  43cd78:	2402000b 	li	v0,11
  43cd7c:	14620016 	bne	v1,v0,43cdd8 <main_outI1+0x564>
  43cd80:	00000000 	nop
    {
	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_vendor_id_desc, &rbody
	    , pgp_vid, sizeof(pgp_vid)-1, "V_ID"))
  43cd84:	2402000c 	li	v0,12
  43cd88:	afa20010 	sw	v0,16(sp)
  43cd8c:	8f82802c 	lw	v0,-32724(gp)
  43cd90:	00000000 	nop
  43cd94:	2442dc4c 	addiu	v0,v0,-9140
  43cd98:	00000000 	nop
  43cd9c:	afa20014 	sw	v0,20(sp)
  43cda0:	00002021 	move	a0,zero
  43cda4:	8f858b0c 	lw	a1,-29940(gp)
  43cda8:	27c60050 	addiu	a2,s8,80
  43cdac:	8f878374 	lw	a3,-31884(gp)
  43cdb0:	8f99841c 	lw	t9,-31716(gp)
  43cdb4:	00000000 	nop
  43cdb8:	0320f809 	jalr	t9
  43cdbc:	00000000 	nop
  43cdc0:	8fdc0020 	lw	gp,32(s8)
  43cdc4:	14400004 	bnez	v0,43cdd8 <main_outI1+0x564>
  43cdc8:	00000000 	nop
    		 return STF_INTERNAL_ERROR;
  43cdcc:	24020003 	li	v0,3
  43cdd0:	100000cc 	b	43d104 <main_outI1+0x890>
  43cdd4:	00000000 	nop
    }

#ifdef NAT_TRAVERSAL
    if (nat_traversal_enabled) {
  43cdd8:	8f82837c 	lw	v0,-31876(gp)
  43cddc:	00000000 	nop
  43cde0:	8c420000 	lw	v0,0(v0)
  43cde4:	00000000 	nop
  43cde8:	10400016 	beqz	v0,43ce44 <main_outI1+0x5d0>
  43cdec:	00000000 	nop
	/* Add supported NAT-Traversal VID */
	if (!nat_traversal_add_vid(ISAKMP_NEXT_NONE, &rbody)) {
  43cdf0:	00002021 	move	a0,zero
  43cdf4:	27c50050 	addiu	a1,s8,80
  43cdf8:	8f998ab0 	lw	t9,-30032(gp)
  43cdfc:	00000000 	nop
  43ce00:	0320f809 	jalr	t9
  43ce04:	00000000 	nop
  43ce08:	8fdc0020 	lw	gp,32(s8)
  43ce0c:	1440000d 	bnez	v0,43ce44 <main_outI1+0x5d0>
  43ce10:	00000000 	nop
	    reset_cur_state();
  43ce14:	8f8187f8 	lw	at,-30728(gp)
  43ce18:	00000000 	nop
  43ce1c:	ac200000 	sw	zero,0(at)
  43ce20:	8f82830c 	lw	v0,-31988(gp)
  43ce24:	00000000 	nop
  43ce28:	8c420000 	lw	v0,0(v0)
  43ce2c:	8f8184f8 	lw	at,-31496(gp)
  43ce30:	00000000 	nop
  43ce34:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  43ce38:	24020003 	li	v0,3
  43ce3c:	100000b1 	b	43d104 <main_outI1+0x890>
  43ce40:	00000000 	nop
	}
    }
#endif

#ifdef DPD
    /* Announce our ability to do Dead Peer Detection to the peer */
    if(st->st_connection->dpd_delay && st->st_connection->dpd_timeout) {
  43ce44:	8fc20028 	lw	v0,40(s8)
  43ce48:	00000000 	nop
  43ce4c:	8c42000c 	lw	v0,12(v0)
  43ce50:	00000000 	nop
  43ce54:	8c420024 	lw	v0,36(v0)
  43ce58:	00000000 	nop
  43ce5c:	1040002a 	beqz	v0,43cf08 <main_outI1+0x694>
  43ce60:	00000000 	nop
  43ce64:	8fc20028 	lw	v0,40(s8)
  43ce68:	00000000 	nop
  43ce6c:	8c42000c 	lw	v0,12(v0)
  43ce70:	00000000 	nop
  43ce74:	8c420028 	lw	v0,40(v0)
  43ce78:	00000000 	nop
  43ce7c:	10400022 	beqz	v0,43cf08 <main_outI1+0x694>
  43ce80:	00000000 	nop
    	if (!out_modify_previous_np(ISAKMP_NEXT_VID, &rbody))
  43ce84:	2404000d 	li	a0,13
  43ce88:	27c50050 	addiu	a1,s8,80
  43ce8c:	8f998808 	lw	t9,-30712(gp)
  43ce90:	00000000 	nop
  43ce94:	0320f809 	jalr	t9
  43ce98:	00000000 	nop
  43ce9c:	8fdc0020 	lw	gp,32(s8)
  43cea0:	14400004 	bnez	v0,43ceb4 <main_outI1+0x640>
  43cea4:	00000000 	nop
            return STF_INTERNAL_ERROR;
  43cea8:	24020003 	li	v0,3
  43ceac:	10000095 	b	43d104 <main_outI1+0x890>
  43ceb0:	00000000 	nop
    	if( !out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_vendor_id_desc,
		    &rbody, dpd_vid, sizeof(dpd_vid), "V_ID"))
  43ceb4:	24020010 	li	v0,16
  43ceb8:	afa20010 	sw	v0,16(sp)
  43cebc:	8f82802c 	lw	v0,-32724(gp)
  43cec0:	00000000 	nop
  43cec4:	2442dc4c 	addiu	v0,v0,-9140
  43cec8:	00000000 	nop
  43cecc:	afa20014 	sw	v0,20(sp)
  43ced0:	00002021 	move	a0,zero
  43ced4:	8f858b0c 	lw	a1,-29940(gp)
  43ced8:	27c60050 	addiu	a2,s8,80
  43cedc:	8f878970 	lw	a3,-30352(gp)
  43cee0:	8f99841c 	lw	t9,-31716(gp)
  43cee4:	00000000 	nop
  43cee8:	0320f809 	jalr	t9
  43ceec:	00000000 	nop
  43cef0:	8fdc0020 	lw	gp,32(s8)
  43cef4:	14400004 	bnez	v0,43cf08 <main_outI1+0x694>
  43cef8:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  43cefc:	24020003 	li	v0,3
  43cf00:	10000080 	b	43d104 <main_outI1+0x890>
  43cf04:	00000000 	nop
    }
#endif

    close_message(&rbody);
  43cf08:	27c40050 	addiu	a0,s8,80
  43cf0c:	8f998324 	lw	t9,-31964(gp)
  43cf10:	00000000 	nop
  43cf14:	0320f809 	jalr	t9
  43cf18:	00000000 	nop
  43cf1c:	8fdc0020 	lw	gp,32(s8)
  43cf20:	00000000 	nop
    close_output_pbs(&reply);
  43cf24:	27c40030 	addiu	a0,s8,48
  43cf28:	8f998228 	lw	t9,-32216(gp)
  43cf2c:	00000000 	nop
  43cf30:	0320f809 	jalr	t9
  43cf34:	00000000 	nop
  43cf38:	8fdc0020 	lw	gp,32(s8)
  43cf3c:	00000000 	nop

    clonetochunk(st->st_tpacket, reply.start, pbs_offset(&reply)
  43cf40:	8fd00028 	lw	s0,40(s8)
  43cf44:	8fc30040 	lw	v1,64(s8)
  43cf48:	8fc2003c 	lw	v0,60(s8)
  43cf4c:	00000000 	nop
  43cf50:	00621023 	subu	v0,v1,v0
  43cf54:	00401821 	move	v1,v0
  43cf58:	8fc20028 	lw	v0,40(s8)
  43cf5c:	00000000 	nop
  43cf60:	ac43011c 	sw	v1,284(v0)
  43cf64:	8fc4003c 	lw	a0,60(s8)
  43cf68:	00602821 	move	a1,v1
  43cf6c:	8f86802c 	lw	a2,-32724(gp)
  43cf70:	00000000 	nop
  43cf74:	24c6dc54 	addiu	a2,a2,-9132
  43cf78:	8f998c04 	lw	t9,-29692(gp)
  43cf7c:	00000000 	nop
  43cf80:	0320f809 	jalr	t9
  43cf84:	00000000 	nop
  43cf88:	8fdc0020 	lw	gp,32(s8)
  43cf8c:	ae020118 	sw	v0,280(s0)
	, "reply packet for main_outI1");

    /* Transmit */

    send_packet(st, "main_outI1");
  43cf90:	8fc40028 	lw	a0,40(s8)
  43cf94:	8f85802c 	lw	a1,-32724(gp)
  43cf98:	00000000 	nop
  43cf9c:	24a5dc70 	addiu	a1,a1,-9104
  43cfa0:	24060001 	li	a2,1
  43cfa4:	8f9987f0 	lw	t9,-30736(gp)
  43cfa8:	00000000 	nop
  43cfac:	0320f809 	jalr	t9
  43cfb0:	00000000 	nop
  43cfb4:	8fdc0020 	lw	gp,32(s8)
  43cfb8:	00000000 	nop

    /* Set up a retransmission event, half a minute henceforth */
    delete_event(st);
  43cfbc:	8fc40028 	lw	a0,40(s8)
  43cfc0:	8f9985b4 	lw	t9,-31308(gp)
  43cfc4:	00000000 	nop
  43cfc8:	0320f809 	jalr	t9
  43cfcc:	00000000 	nop
  43cfd0:	8fdc0020 	lw	gp,32(s8)
  43cfd4:	00000000 	nop
    event_schedule(EVENT_RETRANSMIT, EVENT_RETRANSMIT_DELAY_0, st);
  43cfd8:	24040004 	li	a0,4
  43cfdc:	2405000a 	li	a1,10
  43cfe0:	8fc60028 	lw	a2,40(s8)
  43cfe4:	8f998410 	lw	t9,-31728(gp)
  43cfe8:	00000000 	nop
  43cfec:	0320f809 	jalr	t9
  43cff0:	00000000 	nop
  43cff4:	8fdc0020 	lw	gp,32(s8)
  43cff8:	00000000 	nop

    if (predecessor != NULL)
  43cffc:	8fc200c8 	lw	v0,200(s8)
  43d000:	00000000 	nop
  43d004:	10400021 	beqz	v0,43d08c <main_outI1+0x818>
  43d008:	00000000 	nop
    {
	update_pending(predecessor, st);
  43d00c:	8fc400c8 	lw	a0,200(s8)
  43d010:	8fc50028 	lw	a1,40(s8)
  43d014:	8f99806c 	lw	t9,-32660(gp)
  43d018:	00000000 	nop
  43d01c:	0320f809 	jalr	t9
  43d020:	00000000 	nop
  43d024:	8fdc0020 	lw	gp,32(s8)
  43d028:	00000000 	nop
	whack_log(RC_NEW_STATE + STATE_MAIN_I1
  43d02c:	8f8483b0 	lw	a0,-31824(gp)
  43d030:	8fc20028 	lw	v0,40(s8)
  43d034:	00000000 	nop
  43d038:	8c45014c 	lw	a1,332(v0)
  43d03c:	8f9984bc 	lw	t9,-31556(gp)
  43d040:	00000000 	nop
  43d044:	0320f809 	jalr	t9
  43d048:	00000000 	nop
  43d04c:	8fdc0020 	lw	gp,32(s8)
  43d050:	24040068 	li	a0,104
  43d054:	8f85802c 	lw	a1,-32724(gp)
  43d058:	00000000 	nop
  43d05c:	24a5dc7c 	addiu	a1,a1,-9092
  43d060:	00403021 	move	a2,v0
  43d064:	8fc200c8 	lw	v0,200(s8)
  43d068:	00000000 	nop
  43d06c:	8c470000 	lw	a3,0(v0)
  43d070:	8f9982a8 	lw	t9,-32088(gp)
  43d074:	00000000 	nop
  43d078:	0320f809 	jalr	t9
  43d07c:	00000000 	nop
  43d080:	8fdc0020 	lw	gp,32(s8)
  43d084:	10000015 	b	43d0dc <main_outI1+0x868>
  43d088:	00000000 	nop
	    , "%s: initiate, replacing #%lu"
	    , enum_name(&state_names, st->st_state)
	    , predecessor->st_serialno);
    }
    else
    {
	whack_log(RC_NEW_STATE + STATE_MAIN_I1
  43d08c:	8f8483b0 	lw	a0,-31824(gp)
  43d090:	8fc20028 	lw	v0,40(s8)
  43d094:	00000000 	nop
  43d098:	8c45014c 	lw	a1,332(v0)
  43d09c:	8f9984bc 	lw	t9,-31556(gp)
  43d0a0:	00000000 	nop
  43d0a4:	0320f809 	jalr	t9
  43d0a8:	00000000 	nop
  43d0ac:	8fdc0020 	lw	gp,32(s8)
  43d0b0:	24040068 	li	a0,104
  43d0b4:	8f85802c 	lw	a1,-32724(gp)
  43d0b8:	00000000 	nop
  43d0bc:	24a5dc9c 	addiu	a1,a1,-9060
  43d0c0:	00403021 	move	a2,v0
  43d0c4:	8f9982a8 	lw	t9,-32088(gp)
  43d0c8:	00000000 	nop
  43d0cc:	0320f809 	jalr	t9
  43d0d0:	00000000 	nop
  43d0d4:	8fdc0020 	lw	gp,32(s8)
  43d0d8:	00000000 	nop
	    , "%s: initiate", enum_name(&state_names, st->st_state));
    }
    reset_cur_state();
  43d0dc:	8f8187f8 	lw	at,-30728(gp)
  43d0e0:	00000000 	nop
  43d0e4:	ac200000 	sw	zero,0(at)
  43d0e8:	8f82830c 	lw	v0,-31988(gp)
  43d0ec:	00000000 	nop
  43d0f0:	8c420000 	lw	v0,0(v0)
  43d0f4:	8f8184f8 	lw	at,-31496(gp)
  43d0f8:	00000000 	nop
  43d0fc:	ac220000 	sw	v0,0(at)
    return STF_OK;
  43d100:	24020002 	li	v0,2
}
  43d104:	03c0e821 	move	sp,s8
  43d108:	8fbf00bc 	lw	ra,188(sp)
  43d10c:	8fbe00b8 	lw	s8,184(sp)
  43d110:	8fb000b0 	lw	s0,176(sp)
  43d114:	27bd00c0 	addiu	sp,sp,192
  43d118:	03e00008 	jr	ra
  43d11c:	00000000 	nop

0043d120 <aggr_outI1>:
  43d120:	3c1c0fbd 	lui	gp,0xfbd
  43d124:	279cf850 	addiu	gp,gp,-1968
  43d128:	0399e021 	addu	gp,gp,t9
  43d12c:	27bddf18 	addiu	sp,sp,-8424
  43d130:	afbc0020 	sw	gp,32(sp)
  43d134:	afbf20e4 	sw	ra,8420(sp)
  43d138:	afbe20e0 	sw	s8,8416(sp)
  43d13c:	afbc20dc 	sw	gp,8412(sp)
  43d140:	afb020d8 	sw	s0,8408(sp)
  43d144:	03a0f021 	move	s8,sp
  43d148:	afc420e8 	sw	a0,8424(s8)
  43d14c:	afc520ec 	sw	a1,8428(s8)
  43d150:	afc620f0 	sw	a2,8432(s8)


/* Initiate an Oakley Aggressive Mode exchange.
 * --> HDR, SA, KE, Ni, IDii
 */
static stf_status
aggr_outI1(
	int whack_sock,
	struct connection *c,
	struct state *predecessor,
	lset_t policy,
	unsigned long try)
{
    u_char space[8192];	/* NOTE: we assume 8192 is big enough to build the packet */
    pb_stream reply;	/* not actually a reply, but you know what I mean */
    pb_stream rbody;

    struct state *st;

    /* set up new state */
    cur_state = st = new_state();
  43d154:	8f9987b4 	lw	t9,-30796(gp)
  43d158:	00000000 	nop
  43d15c:	0320f809 	jalr	t9
  43d160:	00000000 	nop
  43d164:	8fdc0020 	lw	gp,32(s8)
  43d168:	afc22068 	sw	v0,8296(s8)
  43d16c:	8fc22068 	lw	v0,8296(s8)
  43d170:	8f8187f8 	lw	at,-30728(gp)
  43d174:	00000000 	nop
  43d178:	ac220000 	sw	v0,0(at)
    st->st_connection = c;
  43d17c:	8fc320ec 	lw	v1,8428(s8)
  43d180:	8fc22068 	lw	v0,8296(s8)
  43d184:	00000000 	nop
  43d188:	ac43000c 	sw	v1,12(v0)
#ifdef DEBUG
    extra_debugging(c);
  43d18c:	8fc420ec 	lw	a0,8428(s8)
  43d190:	8f998be4 	lw	t9,-29724(gp)
  43d194:	00000000 	nop
  43d198:	0320f809 	jalr	t9
  43d19c:	00000000 	nop
  43d1a0:	8fdc0020 	lw	gp,32(s8)
  43d1a4:	00000000 	nop
#endif
    st->st_policy = policy & ~POLICY_IPSEC_MASK;
  43d1a8:	8fc420f8 	lw	a0,8440(s8)
  43d1ac:	8fc520fc 	lw	a1,8444(s8)
  43d1b0:	2402ffff 	li	v0,-1
  43d1b4:	2403ff03 	li	v1,-253
  43d1b8:	00821024 	and	v0,a0,v0
  43d1bc:	00a31824 	and	v1,a1,v1
  43d1c0:	8fc42068 	lw	a0,8296(s8)
  43d1c4:	00000000 	nop
  43d1c8:	ac8200d8 	sw	v0,216(a0)
  43d1cc:	ac8300dc 	sw	v1,220(a0)
    st->st_whack_sock = whack_sock;
  43d1d0:	8fc320e8 	lw	v1,8424(s8)
  43d1d4:	8fc22068 	lw	v0,8296(s8)
  43d1d8:	00000000 	nop
  43d1dc:	ac430014 	sw	v1,20(v0)
    st->st_try = try;
  43d1e0:	8fc32100 	lw	v1,8448(s8)
  43d1e4:	8fc22068 	lw	v0,8296(s8)
  43d1e8:	00000000 	nop
  43d1ec:	ac430154 	sw	v1,340(v0)
    st->st_state = STATE_AGGR_I1;
  43d1f0:	2403000c 	li	v1,12
  43d1f4:	8fc22068 	lw	v0,8296(s8)
  43d1f8:	00000000 	nop
  43d1fc:	ac43014c 	sw	v1,332(v0)

    get_cookie(TRUE, st->st_icookie, COOKIE_SIZE, &c->that.host_addr);
  43d200:	8fc22068 	lw	v0,8296(s8)
  43d204:	00000000 	nop
  43d208:	244300f0 	addiu	v1,v0,240
  43d20c:	8fc220ec 	lw	v0,8428(s8)
  43d210:	00000000 	nop
  43d214:	24420108 	addiu	v0,v0,264
  43d218:	24040001 	li	a0,1
  43d21c:	00602821 	move	a1,v1
  43d220:	24060008 	li	a2,8
  43d224:	00403821 	move	a3,v0
  43d228:	8f998574 	lw	t9,-31372(gp)
  43d22c:	00000000 	nop
  43d230:	0320f809 	jalr	t9
  43d234:	00000000 	nop
  43d238:	8fdc0020 	lw	gp,32(s8)
  43d23c:	00000000 	nop

    insert_state(st);	/* needs cookies, connection, and msgid (0) */
  43d240:	8fc42068 	lw	a0,8296(s8)
  43d244:	8f9983a4 	lw	t9,-31836(gp)
  43d248:	00000000 	nop
  43d24c:	0320f809 	jalr	t9
  43d250:	00000000 	nop
  43d254:	8fdc0020 	lw	gp,32(s8)
  43d258:	00000000 	nop

    if (HAS_IPSEC_POLICY(policy))
  43d25c:	8fc420f8 	lw	a0,8440(s8)
  43d260:	8fc520fc 	lw	a1,8444(s8)
  43d264:	24020000 	li	v0,0
  43d268:	240300fc 	li	v1,252
  43d26c:	00822024 	and	a0,a0,v0
  43d270:	00a32824 	and	a1,a1,v1
  43d274:	00801021 	move	v0,a0
  43d278:	00451025 	or	v0,v0,a1
  43d27c:	1040002b 	beqz	v0,43d32c <aggr_outI1+0x20c>
  43d280:	00000000 	nop
	add_pending(dup_any(whack_sock), st, c, policy, 1
  43d284:	8fc320e8 	lw	v1,8424(s8)
  43d288:	2402ffff 	li	v0,-1
  43d28c:	1062000a 	beq	v1,v0,43d2b8 <aggr_outI1+0x198>
  43d290:	00000000 	nop
  43d294:	8fc420e8 	lw	a0,8424(s8)
  43d298:	8f99840c 	lw	t9,-31732(gp)
  43d29c:	00000000 	nop
  43d2a0:	0320f809 	jalr	t9
  43d2a4:	00000000 	nop
  43d2a8:	8fdc0020 	lw	gp,32(s8)
  43d2ac:	afc220d0 	sw	v0,8400(s8)
  43d2b0:	10000003 	b	43d2c0 <aggr_outI1+0x1a0>
  43d2b4:	00000000 	nop
  43d2b8:	2402ffff 	li	v0,-1
  43d2bc:	afc220d0 	sw	v0,8400(s8)
  43d2c0:	8fc220f8 	lw	v0,8440(s8)
  43d2c4:	8fc320fc 	lw	v1,8444(s8)
  43d2c8:	afa20010 	sw	v0,16(sp)
  43d2cc:	afa30014 	sw	v1,20(sp)
  43d2d0:	24020001 	li	v0,1
  43d2d4:	afa20018 	sw	v0,24(sp)
  43d2d8:	8fc220f0 	lw	v0,8432(s8)
  43d2dc:	00000000 	nop
  43d2e0:	10400008 	beqz	v0,43d304 <aggr_outI1+0x1e4>
  43d2e4:	00000000 	nop
  43d2e8:	8fc220f0 	lw	v0,8432(s8)
  43d2ec:	00000000 	nop
  43d2f0:	8c420000 	lw	v0,0(v0)
  43d2f4:	00000000 	nop
  43d2f8:	afa2001c 	sw	v0,28(sp)
  43d2fc:	10000002 	b	43d308 <aggr_outI1+0x1e8>
  43d300:	00000000 	nop
  43d304:	afa0001c 	sw	zero,28(sp)
  43d308:	8fc420d0 	lw	a0,8400(s8)
  43d30c:	8fc52068 	lw	a1,8296(s8)
  43d310:	8fc620ec 	lw	a2,8428(s8)
  43d314:	8f998554 	lw	t9,-31404(gp)
  43d318:	00000000 	nop
  43d31c:	0320f809 	jalr	t9
  43d320:	00000000 	nop
  43d324:	8fdc0020 	lw	gp,32(s8)
  43d328:	00000000 	nop
	    , predecessor == NULL? SOS_NOBODY : predecessor->st_serialno);

    if (predecessor == NULL)
  43d32c:	8fc220f0 	lw	v0,8432(s8)
  43d330:	00000000 	nop
  43d334:	14400012 	bnez	v0,43d380 <aggr_outI1+0x260>
  43d338:	00000000 	nop
	plog("initiating Aggressive Mode #%lu, connection \"%s\""
  43d33c:	8fc22068 	lw	v0,8296(s8)
  43d340:	00000000 	nop
  43d344:	8c43000c 	lw	v1,12(v0)
  43d348:	8f84802c 	lw	a0,-32724(gp)
  43d34c:	00000000 	nop
  43d350:	2484dcac 	addiu	a0,a0,-9044
  43d354:	8fc22068 	lw	v0,8296(s8)
  43d358:	00000000 	nop
  43d35c:	8c450000 	lw	a1,0(v0)
  43d360:	8c660000 	lw	a2,0(v1)
  43d364:	8f998abc 	lw	t9,-30020(gp)
  43d368:	00000000 	nop
  43d36c:	0320f809 	jalr	t9
  43d370:	00000000 	nop
  43d374:	8fdc0020 	lw	gp,32(s8)
  43d378:	10000014 	b	43d3cc <aggr_outI1+0x2ac>
  43d37c:	00000000 	nop
	    , st->st_serialno, st->st_connection->name);
    else
	plog("initiating Aggressive Mode #%lu to replace #%lu, connection \"%s\""
  43d380:	8fc22068 	lw	v0,8296(s8)
  43d384:	00000000 	nop
  43d388:	8c43000c 	lw	v1,12(v0)
  43d38c:	8f84802c 	lw	a0,-32724(gp)
  43d390:	00000000 	nop
  43d394:	2484dce0 	addiu	a0,a0,-8992
  43d398:	8fc22068 	lw	v0,8296(s8)
  43d39c:	00000000 	nop
  43d3a0:	8c450000 	lw	a1,0(v0)
  43d3a4:	8fc220f0 	lw	v0,8432(s8)
  43d3a8:	00000000 	nop
  43d3ac:	8c460000 	lw	a2,0(v0)
  43d3b0:	8c670000 	lw	a3,0(v1)
  43d3b4:	8f998abc 	lw	t9,-30020(gp)
  43d3b8:	00000000 	nop
  43d3bc:	0320f809 	jalr	t9
  43d3c0:	00000000 	nop
  43d3c4:	8fdc0020 	lw	gp,32(s8)
  43d3c8:	00000000 	nop
	    , st->st_serialno, predecessor->st_serialno, st->st_connection->name);

    /* set up reply */
    init_pbs(&reply, space, sizeof(space), "reply packet");
  43d3cc:	27c42028 	addiu	a0,s8,8232
  43d3d0:	27c50028 	addiu	a1,s8,40
  43d3d4:	24062000 	li	a2,8192
  43d3d8:	8f87802c 	lw	a3,-32724(gp)
  43d3dc:	00000000 	nop
  43d3e0:	24e7dc0c 	addiu	a3,a3,-9204
  43d3e4:	8f998364 	lw	t9,-31900(gp)
  43d3e8:	00000000 	nop
  43d3ec:	0320f809 	jalr	t9
  43d3f0:	00000000 	nop
  43d3f4:	8fdc0020 	lw	gp,32(s8)
  43d3f8:	00000000 	nop

    /* HDR out */
    {
	struct isakmp_hdr hdr;

	memset(&hdr, '\0', sizeof(hdr));	/* default to 0 */
  43d3fc:	27c42070 	addiu	a0,s8,8304
  43d400:	00002821 	move	a1,zero
  43d404:	2406001c 	li	a2,28
  43d408:	8f998500 	lw	t9,-31488(gp)
  43d40c:	00000000 	nop
  43d410:	0320f809 	jalr	t9
  43d414:	00000000 	nop
  43d418:	8fdc0020 	lw	gp,32(s8)
  43d41c:	00000000 	nop
	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;
  43d420:	24020010 	li	v0,16
  43d424:	a3c22081 	sb	v0,8321(s8)
	hdr.isa_np = ISAKMP_NEXT_SA;
  43d428:	24020001 	li	v0,1
  43d42c:	a3c22080 	sb	v0,8320(s8)
	hdr.isa_xchg = ISAKMP_XCHG_AGGR;
  43d430:	24020004 	li	v0,4
  43d434:	a3c22082 	sb	v0,8322(s8)
	memcpy(hdr.isa_icookie, st->st_icookie, COOKIE_SIZE);
  43d438:	8fc22068 	lw	v0,8296(s8)
  43d43c:	00000000 	nop
  43d440:	244200f0 	addiu	v0,v0,240
  43d444:	27c42070 	addiu	a0,s8,8304
  43d448:	00402821 	move	a1,v0
  43d44c:	24060008 	li	a2,8
  43d450:	8f998a30 	lw	t9,-30160(gp)
  43d454:	00000000 	nop
  43d458:	0320f809 	jalr	t9
  43d45c:	00000000 	nop
  43d460:	8fdc0020 	lw	gp,32(s8)
  43d464:	00000000 	nop
	/* R-cookie, flags and MessageID are left zero */

	if (!out_struct(&hdr, &isakmp_hdr_desc, &reply, &rbody))
  43d468:	27c42070 	addiu	a0,s8,8304
  43d46c:	8f858688 	lw	a1,-31096(gp)
  43d470:	27c62028 	addiu	a2,s8,8232
  43d474:	27c72048 	addiu	a3,s8,8264
  43d478:	8f998ba0 	lw	t9,-29792(gp)
  43d47c:	00000000 	nop
  43d480:	0320f809 	jalr	t9
  43d484:	00000000 	nop
  43d488:	8fdc0020 	lw	gp,32(s8)
  43d48c:	14400007 	bnez	v0,43d4ac <aggr_outI1+0x38c>
  43d490:	00000000 	nop
	{
	    cur_state = NULL;
  43d494:	8f8187f8 	lw	at,-30728(gp)
  43d498:	00000000 	nop
  43d49c:	ac200000 	sw	zero,0(at)
	    return STF_INTERNAL_ERROR;
  43d4a0:	24020003 	li	v0,3
  43d4a4:	10000131 	b	43d96c <aggr_outI1+0x84c>
  43d4a8:	00000000 	nop
	}
    }

    /* SA out */
    {
	u_char *sa_start = rbody.cur;
  43d4ac:	8fc22058 	lw	v0,8280(s8)
  43d4b0:	00000000 	nop
  43d4b4:	afc22090 	sw	v0,8336(s8)
	lset_t auth_policy = policy & POLICY_ISAKMP_MASK;
  43d4b8:	8fc420f8 	lw	a0,8440(s8)
  43d4bc:	8fc520fc 	lw	a1,8444(s8)
  43d4c0:	24020000 	li	v0,0
  43d4c4:	24032003 	li	v1,8195
  43d4c8:	00821024 	and	v0,a0,v0
  43d4cc:	00a31824 	and	v1,a1,v1
  43d4d0:	afc22098 	sw	v0,8344(s8)
  43d4d4:	afc3209c 	sw	v1,8348(s8)

#if 0
	if (auth_policy == LEMPTY)
	{
	    /* unspecified: figure out what we can manage */
	    if (get_preshared_secret(c) != NULL)
		auth_policy |= POLICY_PSK;

	    if (get_RSA_private_key(c) != NULL
	    && get_RSA_public_key(&c->that.id) != NULL)
		auth_policy |= POLICY_RSASIG;
	    /* Not clear what we should do if neither is possible.
	     * Perhaps we should not have entered negotiations at all.
	     */
	    if (auth_policy == LEMPTY)
	    {
		loglog(RC_LOG_SERIOUS, "we don't know how to Authenticate this connection");
		cur_state = NULL;
		return STF_INTERNAL_ERROR;
	    }
	}
#endif
	init_st_oakley(st, auth_policy);
  43d4d8:	8fc42068 	lw	a0,8296(s8)
  43d4dc:	8fc62098 	lw	a2,8344(s8)
  43d4e0:	8fc7209c 	lw	a3,8348(s8)
  43d4e4:	8f998aa0 	lw	t9,-30048(gp)
  43d4e8:	00000000 	nop
  43d4ec:	0320f809 	jalr	t9
  43d4f0:	00000000 	nop
  43d4f4:	8fdc0020 	lw	gp,32(s8)
  43d4f8:	00000000 	nop

	if (!out_sa(&rbody, &oakley_sadb_am, st, TRUE, TRUE, ISAKMP_NEXT_KE))
  43d4fc:	24020001 	li	v0,1
  43d500:	afa20010 	sw	v0,16(sp)
  43d504:	24020004 	li	v0,4
  43d508:	afa20014 	sw	v0,20(sp)
  43d50c:	27c42048 	addiu	a0,s8,8264
  43d510:	8f8588cc 	lw	a1,-30516(gp)
  43d514:	8fc62068 	lw	a2,8296(s8)
  43d518:	24070001 	li	a3,1
  43d51c:	8f998bd0 	lw	t9,-29744(gp)
  43d520:	00000000 	nop
  43d524:	0320f809 	jalr	t9
  43d528:	00000000 	nop
  43d52c:	8fdc0020 	lw	gp,32(s8)
  43d530:	14400004 	bnez	v0,43d544 <aggr_outI1+0x424>
  43d534:	00000000 	nop
	{
	    return STF_INTERNAL_ERROR;
  43d538:	24020003 	li	v0,3
  43d53c:	1000010b 	b	43d96c <aggr_outI1+0x84c>
  43d540:	00000000 	nop
	    cur_state = NULL;
	}

	/* save initiator SA for later HASH */
	passert(st->st_p1isa.ptr == NULL);	/* no leak! */
  43d544:	8fc22068 	lw	v0,8296(s8)
  43d548:	00000000 	nop
  43d54c:	8c42015c 	lw	v0,348(v0)
  43d550:	00000000 	nop
  43d554:	1040000e 	beqz	v0,43d590 <aggr_outI1+0x470>
  43d558:	00000000 	nop
  43d55c:	8f84802c 	lw	a0,-32724(gp)
  43d560:	00000000 	nop
  43d564:	2484dc1c 	addiu	a0,a0,-9188
  43d568:	8f85802c 	lw	a1,-32724(gp)
  43d56c:	00000000 	nop
  43d570:	24a5d59c 	addiu	a1,a1,-10852
  43d574:	2406044c 	li	a2,1100
  43d578:	8f998bb8 	lw	t9,-29768(gp)
  43d57c:	00000000 	nop
  43d580:	0320f809 	jalr	t9
  43d584:	00000000 	nop
  43d588:	8fdc0020 	lw	gp,32(s8)
  43d58c:	00000000 	nop
	clonetochunk(st->st_p1isa, sa_start, rbody.cur - sa_start,
  43d590:	8fd02068 	lw	s0,8296(s8)
  43d594:	8fc32058 	lw	v1,8280(s8)
  43d598:	8fc22090 	lw	v0,8336(s8)
  43d59c:	00000000 	nop
  43d5a0:	00621023 	subu	v0,v1,v0
  43d5a4:	00401821 	move	v1,v0
  43d5a8:	8fc22068 	lw	v0,8296(s8)
  43d5ac:	00000000 	nop
  43d5b0:	ac430160 	sw	v1,352(v0)
  43d5b4:	8fc42090 	lw	a0,8336(s8)
  43d5b8:	00602821 	move	a1,v1
  43d5bc:	8f86802c 	lw	a2,-32724(gp)
  43d5c0:	00000000 	nop
  43d5c4:	24c6dd24 	addiu	a2,a2,-8924
  43d5c8:	8f998c04 	lw	t9,-29692(gp)
  43d5cc:	00000000 	nop
  43d5d0:	0320f809 	jalr	t9
  43d5d4:	00000000 	nop
  43d5d8:	8fdc0020 	lw	gp,32(s8)
  43d5dc:	ae02015c 	sw	v0,348(s0)
		     "sa in aggr_outI1");
    }

    /* KE out */
    if (!build_and_ship_KE(st, &st->st_gi, st->st_oakley.group,
			   &rbody, ISAKMP_NEXT_NONCE))
  43d5e0:	8fc22068 	lw	v0,8296(s8)
  43d5e4:	00000000 	nop
  43d5e8:	244300e8 	addiu	v1,v0,232
  43d5ec:	2402000a 	li	v0,10
  43d5f0:	afa20010 	sw	v0,16(sp)
  43d5f4:	8fc42068 	lw	a0,8296(s8)
  43d5f8:	00602821 	move	a1,v1
  43d5fc:	8fc22068 	lw	v0,8296(s8)
  43d600:	00000000 	nop
  43d604:	8c460030 	lw	a2,48(v0)
  43d608:	27c72048 	addiu	a3,s8,8264
  43d60c:	8f998034 	lw	t9,-32716(gp)
  43d610:	00000000 	nop
  43d614:	27399b7c 	addiu	t9,t9,-25732
  43d618:	00000000 	nop
  43d61c:	0320f809 	jalr	t9
  43d620:	00000000 	nop
  43d624:	8fdc0020 	lw	gp,32(s8)
  43d628:	14400004 	bnez	v0,43d63c <aggr_outI1+0x51c>
  43d62c:	00000000 	nop
	return STF_INTERNAL_ERROR;
  43d630:	24020003 	li	v0,3
  43d634:	100000cd 	b	43d96c <aggr_outI1+0x84c>
  43d638:	00000000 	nop

    /* Ni out */
    if (!build_and_ship_nonce(&st->st_ni, &rbody, ISAKMP_NEXT_ID, "Ni"))
  43d63c:	8fc22068 	lw	v0,8296(s8)
  43d640:	00000000 	nop
  43d644:	244200f8 	addiu	v0,v0,248
  43d648:	00402021 	move	a0,v0
  43d64c:	27c52048 	addiu	a1,s8,8264
  43d650:	24060005 	li	a2,5
  43d654:	8f87802c 	lw	a3,-32724(gp)
  43d658:	00000000 	nop
  43d65c:	24e7dd38 	addiu	a3,a3,-8904
  43d660:	8f998034 	lw	t9,-32716(gp)
  43d664:	00000000 	nop
  43d668:	2739a1a4 	addiu	t9,t9,-24156
  43d66c:	00000000 	nop
  43d670:	0320f809 	jalr	t9
  43d674:	00000000 	nop
  43d678:	8fdc0020 	lw	gp,32(s8)
  43d67c:	14400004 	bnez	v0,43d690 <aggr_outI1+0x570>
  43d680:	00000000 	nop
	return STF_INTERNAL_ERROR;
  43d684:	24020003 	li	v0,3
  43d688:	100000b8 	b	43d96c <aggr_outI1+0x84c>
  43d68c:	00000000 	nop

    /* IDii out */
    {
	struct isakmp_ipsec_id id_hd;
	chunk_t id_b;
	pb_stream id_pbs;

	build_id_payload(&id_hd, &id_b, &st->st_connection->this);
  43d690:	8fc22068 	lw	v0,8296(s8)
  43d694:	00000000 	nop
  43d698:	8c42000c 	lw	v0,12(v0)
  43d69c:	00000000 	nop
  43d6a0:	24420030 	addiu	v0,v0,48
  43d6a4:	27c420a0 	addiu	a0,s8,8352
  43d6a8:	27c520a8 	addiu	a1,s8,8360
  43d6ac:	00403021 	move	a2,v0
  43d6b0:	8f998140 	lw	t9,-32448(gp)
  43d6b4:	00000000 	nop
  43d6b8:	0320f809 	jalr	t9
  43d6bc:	00000000 	nop
  43d6c0:	8fdc0020 	lw	gp,32(s8)
  43d6c4:	00000000 	nop
	id_hd.isaiid_np = ISAKMP_NEXT_NONE;
  43d6c8:	a3c020a0 	sb	zero,8352(s8)
	if (!out_struct(&id_hd, &isakmp_ipsec_identification_desc, &rbody, &id_pbs)
	|| !out_chunk(id_b, &id_pbs, "my identity"))
  43d6cc:	27c420a0 	addiu	a0,s8,8352
  43d6d0:	8f858988 	lw	a1,-30328(gp)
  43d6d4:	27c62048 	addiu	a2,s8,8264
  43d6d8:	27c720b0 	addiu	a3,s8,8368
  43d6dc:	8f998ba0 	lw	t9,-29792(gp)
  43d6e0:	00000000 	nop
  43d6e4:	0320f809 	jalr	t9
  43d6e8:	00000000 	nop
  43d6ec:	8fdc0020 	lw	gp,32(s8)
  43d6f0:	1040000e 	beqz	v0,43d72c <aggr_outI1+0x60c>
  43d6f4:	00000000 	nop
  43d6f8:	8fc420a8 	lw	a0,8360(s8)
  43d6fc:	8fc520ac 	lw	a1,8364(s8)
  43d700:	27c620b0 	addiu	a2,s8,8368
  43d704:	8f87802c 	lw	a3,-32724(gp)
  43d708:	00000000 	nop
  43d70c:	24e7dd3c 	addiu	a3,a3,-8900
  43d710:	8f998308 	lw	t9,-31992(gp)
  43d714:	00000000 	nop
  43d718:	0320f809 	jalr	t9
  43d71c:	00000000 	nop
  43d720:	8fdc0020 	lw	gp,32(s8)
  43d724:	14400004 	bnez	v0,43d738 <aggr_outI1+0x618>
  43d728:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  43d72c:	24020003 	li	v0,3
  43d730:	1000008e 	b	43d96c <aggr_outI1+0x84c>
  43d734:	00000000 	nop
	close_output_pbs(&id_pbs);
  43d738:	27c420b0 	addiu	a0,s8,8368
  43d73c:	8f998228 	lw	t9,-32216(gp)
  43d740:	00000000 	nop
  43d744:	0320f809 	jalr	t9
  43d748:	00000000 	nop
  43d74c:	8fdc0020 	lw	gp,32(s8)
  43d750:	00000000 	nop
    }

#ifdef NAT_TRAVERSAL
    if (nat_traversal_enabled) {
  43d754:	8f82837c 	lw	v0,-31876(gp)
  43d758:	00000000 	nop
  43d75c:	8c420000 	lw	v0,0(v0)
  43d760:	00000000 	nop
  43d764:	10400016 	beqz	v0,43d7c0 <aggr_outI1+0x6a0>
  43d768:	00000000 	nop
	/* Add supported NAT-Traversal VID */
	if (!nat_traversal_add_vid(ISAKMP_NEXT_NONE, &rbody)) {
  43d76c:	00002021 	move	a0,zero
  43d770:	27c52048 	addiu	a1,s8,8264
  43d774:	8f998ab0 	lw	t9,-30032(gp)
  43d778:	00000000 	nop
  43d77c:	0320f809 	jalr	t9
  43d780:	00000000 	nop
  43d784:	8fdc0020 	lw	gp,32(s8)
  43d788:	1440000d 	bnez	v0,43d7c0 <aggr_outI1+0x6a0>
  43d78c:	00000000 	nop
	    reset_cur_state();
  43d790:	8f8187f8 	lw	at,-30728(gp)
  43d794:	00000000 	nop
  43d798:	ac200000 	sw	zero,0(at)
  43d79c:	8f82830c 	lw	v0,-31988(gp)
  43d7a0:	00000000 	nop
  43d7a4:	8c420000 	lw	v0,0(v0)
  43d7a8:	8f8184f8 	lw	at,-31496(gp)
  43d7ac:	00000000 	nop
  43d7b0:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  43d7b4:	24020003 	li	v0,3
  43d7b8:	1000006c 	b	43d96c <aggr_outI1+0x84c>
  43d7bc:	00000000 	nop
	}
    }
#endif

    /* finish message */

    close_message(&rbody);
  43d7c0:	27c42048 	addiu	a0,s8,8264
  43d7c4:	8f998324 	lw	t9,-31964(gp)
  43d7c8:	00000000 	nop
  43d7cc:	0320f809 	jalr	t9
  43d7d0:	00000000 	nop
  43d7d4:	8fdc0020 	lw	gp,32(s8)
  43d7d8:	00000000 	nop
    close_output_pbs(&reply);
  43d7dc:	27c42028 	addiu	a0,s8,8232
  43d7e0:	8f998228 	lw	t9,-32216(gp)
  43d7e4:	00000000 	nop
  43d7e8:	0320f809 	jalr	t9
  43d7ec:	00000000 	nop
  43d7f0:	8fdc0020 	lw	gp,32(s8)
  43d7f4:	00000000 	nop

    clonetochunk(st->st_tpacket, reply.start, pbs_offset(&reply),
  43d7f8:	8fd02068 	lw	s0,8296(s8)
  43d7fc:	8fc32038 	lw	v1,8248(s8)
  43d800:	8fc22034 	lw	v0,8244(s8)
  43d804:	00000000 	nop
  43d808:	00621023 	subu	v0,v1,v0
  43d80c:	00401821 	move	v1,v0
  43d810:	8fc22068 	lw	v0,8296(s8)
  43d814:	00000000 	nop
  43d818:	ac43011c 	sw	v1,284(v0)
  43d81c:	8fc42034 	lw	a0,8244(s8)
  43d820:	00602821 	move	a1,v1
  43d824:	8f86802c 	lw	a2,-32724(gp)
  43d828:	00000000 	nop
  43d82c:	24c6dd48 	addiu	a2,a2,-8888
  43d830:	8f998c04 	lw	t9,-29692(gp)
  43d834:	00000000 	nop
  43d838:	0320f809 	jalr	t9
  43d83c:	00000000 	nop
  43d840:	8fdc0020 	lw	gp,32(s8)
  43d844:	ae020118 	sw	v0,280(s0)
		 "reply packet from aggr_outI1");

    /* Transmit */

    DBG_cond_dump(DBG_RAW, "sending:\n",
  43d848:	8f8284f8 	lw	v0,-31496(gp)
  43d84c:	00000000 	nop
  43d850:	8c420000 	lw	v0,0(v0)
  43d854:	00000000 	nop
  43d858:	30420001 	andi	v0,v0,0x1
  43d85c:	10400010 	beqz	v0,43d8a0 <aggr_outI1+0x780>
  43d860:	00000000 	nop
  43d864:	8f84802c 	lw	a0,-32724(gp)
  43d868:	00000000 	nop
  43d86c:	2484dd68 	addiu	a0,a0,-8856
  43d870:	8fc22068 	lw	v0,8296(s8)
  43d874:	00000000 	nop
  43d878:	8c450118 	lw	a1,280(v0)
  43d87c:	8fc22068 	lw	v0,8296(s8)
  43d880:	00000000 	nop
  43d884:	8c46011c 	lw	a2,284(v0)
  43d888:	8f9984ec 	lw	t9,-31508(gp)
  43d88c:	00000000 	nop
  43d890:	0320f809 	jalr	t9
  43d894:	00000000 	nop
  43d898:	8fdc0020 	lw	gp,32(s8)
  43d89c:	00000000 	nop
		  st->st_tpacket.ptr, st->st_tpacket.len);

    send_packet(st, "aggr_outI1");
  43d8a0:	8fc42068 	lw	a0,8296(s8)
  43d8a4:	8f85802c 	lw	a1,-32724(gp)
  43d8a8:	00000000 	nop
  43d8ac:	24a5dd74 	addiu	a1,a1,-8844
  43d8b0:	24060001 	li	a2,1
  43d8b4:	8f9987f0 	lw	t9,-30736(gp)
  43d8b8:	00000000 	nop
  43d8bc:	0320f809 	jalr	t9
  43d8c0:	00000000 	nop
  43d8c4:	8fdc0020 	lw	gp,32(s8)
  43d8c8:	00000000 	nop

    /* Set up a retransmission event, half a minute henceforth */
    delete_event(st);
  43d8cc:	8fc42068 	lw	a0,8296(s8)
  43d8d0:	8f9985b4 	lw	t9,-31308(gp)
  43d8d4:	00000000 	nop
  43d8d8:	0320f809 	jalr	t9
  43d8dc:	00000000 	nop
  43d8e0:	8fdc0020 	lw	gp,32(s8)
  43d8e4:	00000000 	nop
    event_schedule(EVENT_RETRANSMIT, EVENT_RETRANSMIT_DELAY_0, st);
  43d8e8:	24040004 	li	a0,4
  43d8ec:	2405000a 	li	a1,10
  43d8f0:	8fc62068 	lw	a2,8296(s8)
  43d8f4:	8f998410 	lw	t9,-31728(gp)
  43d8f8:	00000000 	nop
  43d8fc:	0320f809 	jalr	t9
  43d900:	00000000 	nop
  43d904:	8fdc0020 	lw	gp,32(s8)
  43d908:	00000000 	nop

    whack_log(RC_NEW_STATE + STATE_AGGR_I1,
  43d90c:	8f8483b0 	lw	a0,-31824(gp)
  43d910:	8fc22068 	lw	v0,8296(s8)
  43d914:	00000000 	nop
  43d918:	8c45014c 	lw	a1,332(v0)
  43d91c:	8f9984bc 	lw	t9,-31556(gp)
  43d920:	00000000 	nop
  43d924:	0320f809 	jalr	t9
  43d928:	00000000 	nop
  43d92c:	8fdc0020 	lw	gp,32(s8)
  43d930:	24040070 	li	a0,112
  43d934:	8f85802c 	lw	a1,-32724(gp)
  43d938:	00000000 	nop
  43d93c:	24a5dc9c 	addiu	a1,a1,-9060
  43d940:	00403021 	move	a2,v0
  43d944:	8f9982a8 	lw	t9,-32088(gp)
  43d948:	00000000 	nop
  43d94c:	0320f809 	jalr	t9
  43d950:	00000000 	nop
  43d954:	8fdc0020 	lw	gp,32(s8)
  43d958:	00000000 	nop
	      "%s: initiate", enum_name(&state_names, st->st_state));
    cur_state = NULL;
  43d95c:	8f8187f8 	lw	at,-30728(gp)
  43d960:	00000000 	nop
  43d964:	ac200000 	sw	zero,0(at)
    return STF_IGNORE;
  43d968:	00001021 	move	v0,zero
}
  43d96c:	03c0e821 	move	sp,s8
  43d970:	8fbf20e4 	lw	ra,8420(sp)
  43d974:	8fbe20e0 	lw	s8,8416(sp)
  43d978:	8fb020d8 	lw	s0,8408(sp)
  43d97c:	27bd20e8 	addiu	sp,sp,8424
  43d980:	03e00008 	jr	ra
  43d984:	00000000 	nop

0043d988 <ipsecdoi_initiate>:
  43d988:	3c1c0fbd 	lui	gp,0xfbd
  43d98c:	279cefe8 	addiu	gp,gp,-4120
  43d990:	0399e021 	addu	gp,gp,t9
  43d994:	27bdffb8 	addiu	sp,sp,-72
  43d998:	afbc0020 	sw	gp,32(sp)
  43d99c:	afbf0040 	sw	ra,64(sp)
  43d9a0:	afbe003c 	sw	s8,60(sp)
  43d9a4:	afbc0038 	sw	gp,56(sp)
  43d9a8:	03a0f021 	move	s8,sp
  43d9ac:	afc40048 	sw	a0,72(s8)
  43d9b0:	afc5004c 	sw	a1,76(s8)
  43d9b4:	afc60050 	sw	a2,80(s8)
  43d9b8:	afc70054 	sw	a3,84(s8)


void
ipsecdoi_initiate(int whack_sock
, struct connection *c
, lset_t policy
, unsigned long try
, so_serial_t replacing)
{
    /* If there's already an ISAKMP SA established, use that and
     * go directly to Quick Mode.
     * Note: there is no way to initiate with a Road Warrior.
     */
    struct state *st = find_phase1_state(c, FALSE);
  43d9bc:	8fc4004c 	lw	a0,76(s8)
  43d9c0:	00002821 	move	a1,zero
  43d9c4:	8f9982e4 	lw	t9,-32028(gp)
  43d9c8:	00000000 	nop
  43d9cc:	0320f809 	jalr	t9
  43d9d0:	00000000 	nop
  43d9d4:	8fdc0020 	lw	gp,32(s8)
  43d9d8:	afc20028 	sw	v0,40(s8)

    if (st == NULL)
  43d9dc:	8fc20028 	lw	v0,40(s8)
  43d9e0:	00000000 	nop
  43d9e4:	1440002e 	bnez	v0,43daa0 <ipsecdoi_initiate+0x118>
  43d9e8:	00000000 	nop
    {
	initiator_function *initiator = c->policy & POLICY_AGGRESSIVE
  43d9ec:	8fc2004c 	lw	v0,76(s8)
  43d9f0:	00000000 	nop
  43d9f4:	8c440008 	lw	a0,8(v0)
  43d9f8:	8c45000c 	lw	a1,12(v0)
  43d9fc:	24020000 	li	v0,0
  43da00:	24031000 	li	v1,4096
  43da04:	00822024 	and	a0,a0,v0
  43da08:	00a32824 	and	a1,a1,v1
  43da0c:	00801021 	move	v0,a0
  43da10:	00451025 	or	v0,v0,a1
  43da14:	10400008 	beqz	v0,43da38 <ipsecdoi_initiate+0xb0>
  43da18:	00000000 	nop
  43da1c:	8f828034 	lw	v0,-32716(gp)
  43da20:	00000000 	nop
  43da24:	2442d120 	addiu	v0,v0,-12000
  43da28:	00000000 	nop
  43da2c:	afc20030 	sw	v0,48(s8)
  43da30:	10000006 	b	43da4c <ipsecdoi_initiate+0xc4>
  43da34:	00000000 	nop
  43da38:	8f828034 	lw	v0,-32716(gp)
  43da3c:	00000000 	nop
  43da40:	2442c874 	addiu	v0,v0,-14220
  43da44:	00000000 	nop
  43da48:	afc20030 	sw	v0,48(s8)
  43da4c:	8fc20030 	lw	v0,48(s8)
  43da50:	00000000 	nop
  43da54:	afc2002c 	sw	v0,44(s8)
					? aggr_outI1 : main_outI1;
	(void) initiator(whack_sock, c, NULL, policy, try);
  43da58:	8fc20050 	lw	v0,80(s8)
  43da5c:	8fc30054 	lw	v1,84(s8)
  43da60:	afa20010 	sw	v0,16(sp)
  43da64:	afa30014 	sw	v1,20(sp)
  43da68:	8fc20058 	lw	v0,88(s8)
  43da6c:	00000000 	nop
  43da70:	afa20018 	sw	v0,24(sp)
  43da74:	8fc40048 	lw	a0,72(s8)
  43da78:	8fc5004c 	lw	a1,76(s8)
  43da7c:	00003021 	move	a2,zero
  43da80:	8fc2002c 	lw	v0,44(s8)
  43da84:	00000000 	nop
  43da88:	0040c821 	move	t9,v0
  43da8c:	0320f809 	jalr	t9
  43da90:	00000000 	nop
  43da94:	8fdc0020 	lw	gp,32(s8)
  43da98:	10000063 	b	43dc28 <ipsecdoi_initiate+0x2a0>
  43da9c:	00000000 	nop
    }
    else if (HAS_IPSEC_POLICY(policy))
  43daa0:	8fc40050 	lw	a0,80(s8)
  43daa4:	8fc50054 	lw	a1,84(s8)
  43daa8:	24020000 	li	v0,0
  43daac:	240300fc 	li	v1,252
  43dab0:	00822024 	and	a0,a0,v0
  43dab4:	00a32824 	and	a1,a1,v1
  43dab8:	00801021 	move	v0,a0
  43dabc:	00451025 	or	v0,v0,a1
  43dac0:	1040004d 	beqz	v0,43dbf8 <ipsecdoi_initiate+0x270>
  43dac4:	00000000 	nop
    {
	if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  43dac8:	8fc20028 	lw	v0,40(s8)
  43dacc:	00000000 	nop
  43dad0:	8c43014c 	lw	v1,332(v0)
  43dad4:	24020009 	li	v0,9
  43dad8:	10620033 	beq	v1,v0,43dba8 <ipsecdoi_initiate+0x220>
  43dadc:	00000000 	nop
  43dae0:	8fc20028 	lw	v0,40(s8)
  43dae4:	00000000 	nop
  43dae8:	8c43014c 	lw	v1,332(v0)
  43daec:	2402000a 	li	v0,10
  43daf0:	1062002d 	beq	v1,v0,43dba8 <ipsecdoi_initiate+0x220>
  43daf4:	00000000 	nop
  43daf8:	8fc20028 	lw	v0,40(s8)
  43dafc:	00000000 	nop
  43db00:	8c43014c 	lw	v1,332(v0)
  43db04:	2402000e 	li	v0,14
  43db08:	10620027 	beq	v1,v0,43dba8 <ipsecdoi_initiate+0x220>
  43db0c:	00000000 	nop
  43db10:	8fc20028 	lw	v0,40(s8)
  43db14:	00000000 	nop
  43db18:	8c43014c 	lw	v1,332(v0)
  43db1c:	2402000f 	li	v0,15
  43db20:	10620021 	beq	v1,v0,43dba8 <ipsecdoi_initiate+0x220>
  43db24:	00000000 	nop
  43db28:	8fc20028 	lw	v0,40(s8)
  43db2c:	00000000 	nop
  43db30:	8c43014c 	lw	v1,332(v0)
  43db34:	24020010 	li	v0,16
  43db38:	1062001b 	beq	v1,v0,43dba8 <ipsecdoi_initiate+0x220>
  43db3c:	00000000 	nop
  43db40:	8fc20028 	lw	v0,40(s8)
  43db44:	00000000 	nop
  43db48:	8c43014c 	lw	v1,332(v0)
  43db4c:	24020011 	li	v0,17
  43db50:	10620015 	beq	v1,v0,43dba8 <ipsecdoi_initiate+0x220>
  43db54:	00000000 	nop
	{
	    /* leave our Phase 2 negotiation pending */
	    add_pending(whack_sock, st, c, policy, try, replacing);
  43db58:	8fc20050 	lw	v0,80(s8)
  43db5c:	8fc30054 	lw	v1,84(s8)
  43db60:	afa20010 	sw	v0,16(sp)
  43db64:	afa30014 	sw	v1,20(sp)
  43db68:	8fc20058 	lw	v0,88(s8)
  43db6c:	00000000 	nop
  43db70:	afa20018 	sw	v0,24(sp)
  43db74:	8fc2005c 	lw	v0,92(s8)
  43db78:	00000000 	nop
  43db7c:	afa2001c 	sw	v0,28(sp)
  43db80:	8fc40048 	lw	a0,72(s8)
  43db84:	8fc50028 	lw	a1,40(s8)
  43db88:	8fc6004c 	lw	a2,76(s8)
  43db8c:	8f998554 	lw	t9,-31404(gp)
  43db90:	00000000 	nop
  43db94:	0320f809 	jalr	t9
  43db98:	00000000 	nop
  43db9c:	8fdc0020 	lw	gp,32(s8)
  43dba0:	10000021 	b	43dc28 <ipsecdoi_initiate+0x2a0>
  43dba4:	00000000 	nop
	}
	else
	{
	    /* ??? we assume that peer_nexthop_sin isn't important:
	     * we already have it from when we negotiated the ISAKMP SA!
	     * It isn't clear what to do with the error return.
	     */
	    (void) quick_outI1(whack_sock, st, c, policy, try, replacing);
  43dba8:	8fc20050 	lw	v0,80(s8)
  43dbac:	8fc30054 	lw	v1,84(s8)
  43dbb0:	afa20010 	sw	v0,16(sp)
  43dbb4:	afa30014 	sw	v1,20(sp)
  43dbb8:	8fc20058 	lw	v0,88(s8)
  43dbbc:	00000000 	nop
  43dbc0:	afa20018 	sw	v0,24(sp)
  43dbc4:	8fc2005c 	lw	v0,92(s8)
  43dbc8:	00000000 	nop
  43dbcc:	afa2001c 	sw	v0,28(sp)
  43dbd0:	8fc40048 	lw	a0,72(s8)
  43dbd4:	8fc50028 	lw	a1,40(s8)
  43dbd8:	8fc6004c 	lw	a2,76(s8)
  43dbdc:	8f99895c 	lw	t9,-30372(gp)
  43dbe0:	00000000 	nop
  43dbe4:	0320f809 	jalr	t9
  43dbe8:	00000000 	nop
  43dbec:	8fdc0020 	lw	gp,32(s8)
  43dbf0:	1000000d 	b	43dc28 <ipsecdoi_initiate+0x2a0>
  43dbf4:	00000000 	nop
	}
    }
    else
    {
	close_any(whack_sock);
  43dbf8:	8fc30048 	lw	v1,72(s8)
  43dbfc:	2402ffff 	li	v0,-1
  43dc00:	10620009 	beq	v1,v0,43dc28 <ipsecdoi_initiate+0x2a0>
  43dc04:	00000000 	nop
  43dc08:	8fc40048 	lw	a0,72(s8)
  43dc0c:	8f9980c8 	lw	t9,-32568(gp)
  43dc10:	00000000 	nop
  43dc14:	0320f809 	jalr	t9
  43dc18:	00000000 	nop
  43dc1c:	8fdc0020 	lw	gp,32(s8)
  43dc20:	2402ffff 	li	v0,-1
  43dc24:	afc20048 	sw	v0,72(s8)
    }
}
  43dc28:	03c0e821 	move	sp,s8
  43dc2c:	8fbf0040 	lw	ra,64(sp)
  43dc30:	8fbe003c 	lw	s8,60(sp)
  43dc34:	27bd0048 	addiu	sp,sp,72
  43dc38:	03e00008 	jr	ra
  43dc3c:	00000000 	nop

0043dc40 <ipsecdoi_replace>:
  43dc40:	3c1c0fbd 	lui	gp,0xfbd
  43dc44:	279ced30 	addiu	gp,gp,-4816
  43dc48:	0399e021 	addu	gp,gp,t9
  43dc4c:	27bdffb0 	addiu	sp,sp,-80
  43dc50:	afbc0020 	sw	gp,32(sp)
  43dc54:	afbf0048 	sw	ra,72(sp)
  43dc58:	afbe0044 	sw	s8,68(sp)
  43dc5c:	afbc0040 	sw	gp,64(sp)
  43dc60:	03a0f021 	move	s8,sp
  43dc64:	afc40050 	sw	a0,80(s8)
  43dc68:	afc50054 	sw	a1,84(s8)

/* Replace SA with a fresh one that is similar
 *
 * Shares some logic with ipsecdoi_initiate, but not the same!
 * - we must not reuse the ISAKMP SA if we are trying to replace it!
 * - if trying to replace IPSEC SA, use ipsecdoi_initiate to build
 *   ISAKMP SA if needed.
 * - duplicate whack fd, if live.
 * Does not delete the old state -- someone else will do that.
 */
void
ipsecdoi_replace(struct state *st, unsigned long try)
{
    int whack_sock = dup_any(st->st_whack_sock);
  43dc6c:	8fc20050 	lw	v0,80(s8)
  43dc70:	00000000 	nop
  43dc74:	8c430014 	lw	v1,20(v0)
  43dc78:	2402ffff 	li	v0,-1
  43dc7c:	1062000c 	beq	v1,v0,43dcb0 <ipsecdoi_replace+0x70>
  43dc80:	00000000 	nop
  43dc84:	8fc20050 	lw	v0,80(s8)
  43dc88:	00000000 	nop
  43dc8c:	8c440014 	lw	a0,20(v0)
  43dc90:	8f99840c 	lw	t9,-31732(gp)
  43dc94:	00000000 	nop
  43dc98:	0320f809 	jalr	t9
  43dc9c:	00000000 	nop
  43dca0:	8fdc0020 	lw	gp,32(s8)
  43dca4:	afc2003c 	sw	v0,60(s8)
  43dca8:	10000003 	b	43dcb8 <ipsecdoi_replace+0x78>
  43dcac:	00000000 	nop
  43dcb0:	2402ffff 	li	v0,-1
  43dcb4:	afc2003c 	sw	v0,60(s8)
  43dcb8:	8fc2003c 	lw	v0,60(s8)
  43dcbc:	00000000 	nop
  43dcc0:	afc20028 	sw	v0,40(s8)
    lset_t policy = st->st_policy;
  43dcc4:	8fc20050 	lw	v0,80(s8)
  43dcc8:	00000000 	nop
  43dccc:	8c4300dc 	lw	v1,220(v0)
  43dcd0:	8c4200d8 	lw	v0,216(v0)
  43dcd4:	00000000 	nop
  43dcd8:	afc20030 	sw	v0,48(s8)
  43dcdc:	afc30034 	sw	v1,52(s8)

    if (IS_PHASE1(st->st_state))
  43dce0:	8fc20050 	lw	v0,80(s8)
  43dce4:	00000000 	nop
  43dce8:	8c42014c 	lw	v0,332(v0)
  43dcec:	00000000 	nop
  43dcf0:	2c420003 	sltiu	v0,v0,3
  43dcf4:	14400049 	bnez	v0,43de1c <ipsecdoi_replace+0x1dc>
  43dcf8:	00000000 	nop
  43dcfc:	8fc20050 	lw	v0,80(s8)
  43dd00:	00000000 	nop
  43dd04:	8c42014c 	lw	v0,332(v0)
  43dd08:	00000000 	nop
  43dd0c:	2c420010 	sltiu	v0,v0,16
  43dd10:	10400042 	beqz	v0,43de1c <ipsecdoi_replace+0x1dc>
  43dd14:	00000000 	nop
    {
	initiator_function *initiator = policy & POLICY_AGGRESSIVE
  43dd18:	8fc40030 	lw	a0,48(s8)
  43dd1c:	8fc50034 	lw	a1,52(s8)
  43dd20:	24020000 	li	v0,0
  43dd24:	24031000 	li	v1,4096
  43dd28:	00822024 	and	a0,a0,v0
  43dd2c:	00a32824 	and	a1,a1,v1
  43dd30:	00801021 	move	v0,a0
  43dd34:	00451025 	or	v0,v0,a1
  43dd38:	10400008 	beqz	v0,43dd5c <ipsecdoi_replace+0x11c>
  43dd3c:	00000000 	nop
  43dd40:	8f828034 	lw	v0,-32716(gp)
  43dd44:	00000000 	nop
  43dd48:	2442d120 	addiu	v0,v0,-12000
  43dd4c:	00000000 	nop
  43dd50:	afc20038 	sw	v0,56(s8)
  43dd54:	10000006 	b	43dd70 <ipsecdoi_replace+0x130>
  43dd58:	00000000 	nop
  43dd5c:	8f828034 	lw	v0,-32716(gp)
  43dd60:	00000000 	nop
  43dd64:	2442c874 	addiu	v0,v0,-14220
  43dd68:	00000000 	nop
  43dd6c:	afc20038 	sw	v0,56(s8)
					? aggr_outI1 : main_outI1;
	passert(!HAS_IPSEC_POLICY(policy));
  43dd70:	8fc40030 	lw	a0,48(s8)
  43dd74:	8fc50034 	lw	a1,52(s8)
  43dd78:	24020000 	li	v0,0
  43dd7c:	240300fc 	li	v1,252
  43dd80:	00822024 	and	a0,a0,v0
  43dd84:	00a32824 	and	a1,a1,v1
  43dd88:	00801021 	move	v0,a0
  43dd8c:	00451025 	or	v0,v0,a1
  43dd90:	1040000e 	beqz	v0,43ddcc <ipsecdoi_replace+0x18c>
  43dd94:	00000000 	nop
  43dd98:	8f84802c 	lw	a0,-32724(gp)
  43dd9c:	00000000 	nop
  43dda0:	2484dd80 	addiu	a0,a0,-8832
  43dda4:	8f85802c 	lw	a1,-32724(gp)
  43dda8:	00000000 	nop
  43ddac:	24a5d59c 	addiu	a1,a1,-10852
  43ddb0:	240604c8 	li	a2,1224
  43ddb4:	8f998bb8 	lw	t9,-29768(gp)
  43ddb8:	00000000 	nop
  43ddbc:	0320f809 	jalr	t9
  43ddc0:	00000000 	nop
  43ddc4:	8fdc0020 	lw	gp,32(s8)
  43ddc8:	00000000 	nop
	(void) initiator(whack_sock, st->st_connection, st, policy, try);
  43ddcc:	8fc20030 	lw	v0,48(s8)
  43ddd0:	8fc30034 	lw	v1,52(s8)
  43ddd4:	afa20010 	sw	v0,16(sp)
  43ddd8:	afa30014 	sw	v1,20(sp)
  43dddc:	8fc20054 	lw	v0,84(s8)
  43dde0:	00000000 	nop
  43dde4:	afa20018 	sw	v0,24(sp)
  43dde8:	8fc40028 	lw	a0,40(s8)
  43ddec:	8fc20050 	lw	v0,80(s8)
  43ddf0:	00000000 	nop
  43ddf4:	8c45000c 	lw	a1,12(v0)
  43ddf8:	8fc60050 	lw	a2,80(s8)
  43ddfc:	8fc20038 	lw	v0,56(s8)
  43de00:	00000000 	nop
  43de04:	0040c821 	move	t9,v0
  43de08:	0320f809 	jalr	t9
  43de0c:	00000000 	nop
  43de10:	8fdc0020 	lw	gp,32(s8)
  43de14:	10000094 	b	43e068 <ipsecdoi_replace+0x428>
  43de18:	00000000 	nop
    }
    else
    {
	/* Add features of actual old state to policy.  This ensures
	 * that rekeying doesn't downgrade security.  I admit that
	 * this doesn't capture everything.
	 */
	if (st->st_pfs_group != NULL)
  43de1c:	8fc20050 	lw	v0,80(s8)
  43de20:	00000000 	nop
  43de24:	8c4200c8 	lw	v0,200(v0)
  43de28:	00000000 	nop
  43de2c:	10400009 	beqz	v0,43de54 <ipsecdoi_replace+0x214>
  43de30:	00000000 	nop
	    policy |= POLICY_PFS;
  43de34:	8fc20030 	lw	v0,48(s8)
  43de38:	8fc30034 	lw	v1,52(s8)
  43de3c:	24040000 	li	a0,0
  43de40:	24050040 	li	a1,64
  43de44:	00441025 	or	v0,v0,a0
  43de48:	00651825 	or	v1,v1,a1
  43de4c:	afc20030 	sw	v0,48(s8)
  43de50:	afc30034 	sw	v1,52(s8)
	if (st->st_ah.present)
  43de54:	8fc20050 	lw	v0,80(s8)
  43de58:	00000000 	nop
  43de5c:	8c42003c 	lw	v0,60(v0)
  43de60:	00000000 	nop
  43de64:	10400017 	beqz	v0,43dec4 <ipsecdoi_replace+0x284>
  43de68:	00000000 	nop
	{
	    policy |= POLICY_AUTHENTICATE;
  43de6c:	8fc40030 	lw	a0,48(s8)
  43de70:	8fc50034 	lw	a1,52(s8)
  43de74:	24020000 	li	v0,0
  43de78:	24030008 	li	v1,8
  43de7c:	00821025 	or	v0,a0,v0
  43de80:	00a31825 	or	v1,a1,v1
  43de84:	afc20030 	sw	v0,48(s8)
  43de88:	afc30034 	sw	v1,52(s8)
	    if (st->st_ah.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL)
  43de8c:	8fc20050 	lw	v0,80(s8)
  43de90:	00000000 	nop
  43de94:	94430050 	lhu	v1,80(v0)
  43de98:	24020001 	li	v0,1
  43de9c:	14620009 	bne	v1,v0,43dec4 <ipsecdoi_replace+0x284>
  43dea0:	00000000 	nop
		policy |= POLICY_TUNNEL;
  43dea4:	8fc20030 	lw	v0,48(s8)
  43dea8:	8fc30034 	lw	v1,52(s8)
  43deac:	24040000 	li	a0,0
  43deb0:	24050020 	li	a1,32
  43deb4:	00441025 	or	v0,v0,a0
  43deb8:	00651825 	or	v1,v1,a1
  43debc:	afc20030 	sw	v0,48(s8)
  43dec0:	afc30034 	sw	v1,52(s8)
	}
	if (st->st_esp.present && st->st_esp.attrs.transid != ESP_NULL)
  43dec4:	8fc20050 	lw	v0,80(s8)
  43dec8:	00000000 	nop
  43decc:	8c420068 	lw	v0,104(v0)
  43ded0:	00000000 	nop
  43ded4:	1040001d 	beqz	v0,43df4c <ipsecdoi_replace+0x30c>
  43ded8:	00000000 	nop
  43dedc:	8fc20050 	lw	v0,80(s8)
  43dee0:	00000000 	nop
  43dee4:	9043006c 	lbu	v1,108(v0)
  43dee8:	2402000b 	li	v0,11
  43deec:	10620017 	beq	v1,v0,43df4c <ipsecdoi_replace+0x30c>
  43def0:	00000000 	nop
	{
	    policy |= POLICY_ENCRYPT;
  43def4:	8fc40030 	lw	a0,48(s8)
  43def8:	8fc50034 	lw	a1,52(s8)
  43defc:	24020000 	li	v0,0
  43df00:	24030004 	li	v1,4
  43df04:	00821025 	or	v0,a0,v0
  43df08:	00a31825 	or	v1,a1,v1
  43df0c:	afc20030 	sw	v0,48(s8)
  43df10:	afc30034 	sw	v1,52(s8)
	    if (st->st_esp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL)
  43df14:	8fc20050 	lw	v0,80(s8)
  43df18:	00000000 	nop
  43df1c:	9443007c 	lhu	v1,124(v0)
  43df20:	24020001 	li	v0,1
  43df24:	14620009 	bne	v1,v0,43df4c <ipsecdoi_replace+0x30c>
  43df28:	00000000 	nop
		policy |= POLICY_TUNNEL;
  43df2c:	8fc20030 	lw	v0,48(s8)
  43df30:	8fc30034 	lw	v1,52(s8)
  43df34:	24040000 	li	a0,0
  43df38:	24050020 	li	a1,32
  43df3c:	00441025 	or	v0,v0,a0
  43df40:	00651825 	or	v1,v1,a1
  43df44:	afc20030 	sw	v0,48(s8)
  43df48:	afc30034 	sw	v1,52(s8)
	}
	if (st->st_ipcomp.present)
  43df4c:	8fc20050 	lw	v0,80(s8)
  43df50:	00000000 	nop
  43df54:	8c420094 	lw	v0,148(v0)
  43df58:	00000000 	nop
  43df5c:	10400017 	beqz	v0,43dfbc <ipsecdoi_replace+0x37c>
  43df60:	00000000 	nop
	{
	    policy |= POLICY_COMPRESS;
  43df64:	8fc40030 	lw	a0,48(s8)
  43df68:	8fc50034 	lw	a1,52(s8)
  43df6c:	24020000 	li	v0,0
  43df70:	24030010 	li	v1,16
  43df74:	00821025 	or	v0,a0,v0
  43df78:	00a31825 	or	v1,a1,v1
  43df7c:	afc20030 	sw	v0,48(s8)
  43df80:	afc30034 	sw	v1,52(s8)
	    if (st->st_ipcomp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL)
  43df84:	8fc20050 	lw	v0,80(s8)
  43df88:	00000000 	nop
  43df8c:	944300a8 	lhu	v1,168(v0)
  43df90:	24020001 	li	v0,1
  43df94:	14620009 	bne	v1,v0,43dfbc <ipsecdoi_replace+0x37c>
  43df98:	00000000 	nop
		policy |= POLICY_TUNNEL;
  43df9c:	8fc20030 	lw	v0,48(s8)
  43dfa0:	8fc30034 	lw	v1,52(s8)
  43dfa4:	24040000 	li	a0,0
  43dfa8:	24050020 	li	a1,32
  43dfac:	00441025 	or	v0,v0,a0
  43dfb0:	00651825 	or	v1,v1,a1
  43dfb4:	afc20030 	sw	v0,48(s8)
  43dfb8:	afc30034 	sw	v1,52(s8)
	}
	passert(HAS_IPSEC_POLICY(policy));
  43dfbc:	8fc40030 	lw	a0,48(s8)
  43dfc0:	8fc50034 	lw	a1,52(s8)
  43dfc4:	24020000 	li	v0,0
  43dfc8:	240300fc 	li	v1,252
  43dfcc:	00822024 	and	a0,a0,v0
  43dfd0:	00a32824 	and	a1,a1,v1
  43dfd4:	00801021 	move	v0,a0
  43dfd8:	00451025 	or	v0,v0,a1
  43dfdc:	1440000e 	bnez	v0,43e018 <ipsecdoi_replace+0x3d8>
  43dfe0:	00000000 	nop
  43dfe4:	8f84802c 	lw	a0,-32724(gp)
  43dfe8:	00000000 	nop
  43dfec:	2484dd9c 	addiu	a0,a0,-8804
  43dff0:	8f85802c 	lw	a1,-32724(gp)
  43dff4:	00000000 	nop
  43dff8:	24a5d59c 	addiu	a1,a1,-10852
  43dffc:	240604e5 	li	a2,1253
  43e000:	8f998bb8 	lw	t9,-29768(gp)
  43e004:	00000000 	nop
  43e008:	0320f809 	jalr	t9
  43e00c:	00000000 	nop
  43e010:	8fdc0020 	lw	gp,32(s8)
  43e014:	00000000 	nop
	ipsecdoi_initiate(whack_sock, st->st_connection, policy, try
  43e018:	8fc20054 	lw	v0,84(s8)
  43e01c:	00000000 	nop
  43e020:	afa20010 	sw	v0,16(sp)
  43e024:	8fc20050 	lw	v0,80(s8)
  43e028:	00000000 	nop
  43e02c:	8c420000 	lw	v0,0(v0)
  43e030:	00000000 	nop
  43e034:	afa20014 	sw	v0,20(sp)
  43e038:	8fc40028 	lw	a0,40(s8)
  43e03c:	8fc20050 	lw	v0,80(s8)
  43e040:	00000000 	nop
  43e044:	8c45000c 	lw	a1,12(v0)
  43e048:	8fc60030 	lw	a2,48(s8)
  43e04c:	8fc70034 	lw	a3,52(s8)
  43e050:	8f99815c 	lw	t9,-32420(gp)
  43e054:	00000000 	nop
  43e058:	0320f809 	jalr	t9
  43e05c:	00000000 	nop
  43e060:	8fdc0020 	lw	gp,32(s8)
  43e064:	00000000 	nop
	    , st->st_serialno);
    }
}
  43e068:	03c0e821 	move	sp,s8
  43e06c:	8fbf0048 	lw	ra,72(sp)
  43e070:	8fbe0044 	lw	s8,68(sp)
  43e074:	27bd0050 	addiu	sp,sp,80
  43e078:	03e00008 	jr	ra
  43e07c:	00000000 	nop

0043e080 <skeyid_preshared>:
  43e080:	3c1c0fbd 	lui	gp,0xfbd
  43e084:	279ce8f0 	addiu	gp,gp,-5904
  43e088:	0399e021 	addu	gp,gp,t9
  43e08c:	27bdfe70 	addiu	sp,sp,-400
  43e090:	afbc0010 	sw	gp,16(sp)
  43e094:	afbf018c 	sw	ra,396(sp)
  43e098:	afbe0188 	sw	s8,392(sp)
  43e09c:	afbc0184 	sw	gp,388(sp)
  43e0a0:	afb00180 	sw	s0,384(sp)
  43e0a4:	03a0f021 	move	s8,sp
  43e0a8:	afc40190 	sw	a0,400(s8)

/* SKEYID for preshared keys.
 * See draft-ietf-ipsec-ike-01.txt 4.1
 */
static bool
skeyid_preshared(struct state *st)
{
    const chunk_t *pss = get_preshared_secret(st->st_connection);
  43e0ac:	8fc20190 	lw	v0,400(s8)
  43e0b0:	00000000 	nop
  43e0b4:	8c44000c 	lw	a0,12(v0)
  43e0b8:	8f9985e0 	lw	t9,-31264(gp)
  43e0bc:	00000000 	nop
  43e0c0:	0320f809 	jalr	t9
  43e0c4:	00000000 	nop
  43e0c8:	8fdc0010 	lw	gp,16(s8)
  43e0cc:	afc20018 	sw	v0,24(s8)

    if (pss == NULL)
  43e0d0:	8fc20018 	lw	v0,24(s8)
  43e0d4:	00000000 	nop
  43e0d8:	1440000e 	bnez	v0,43e114 <skeyid_preshared+0x94>
  43e0dc:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "preshared secret disappeared!");
  43e0e0:	24040003 	li	a0,3
  43e0e4:	8f85802c 	lw	a1,-32724(gp)
  43e0e8:	00000000 	nop
  43e0ec:	24a5ddb8 	addiu	a1,a1,-8776
  43e0f0:	8f998c48 	lw	t9,-29624(gp)
  43e0f4:	00000000 	nop
  43e0f8:	0320f809 	jalr	t9
  43e0fc:	00000000 	nop
  43e100:	8fdc0010 	lw	gp,16(s8)
  43e104:	00000000 	nop
	return FALSE;
  43e108:	00001021 	move	v0,zero
  43e10c:	10000055 	b	43e264 <skeyid_preshared+0x1e4>
  43e110:	00000000 	nop
    }
    else
    {
	struct hmac_ctx ctx;

	hmac_init_chunk(&ctx, st->st_oakley.hasher, *pss);
  43e114:	27c40020 	addiu	a0,s8,32
  43e118:	8fc20190 	lw	v0,400(s8)
  43e11c:	00000000 	nop
  43e120:	8c450028 	lw	a1,40(v0)
  43e124:	8fc20018 	lw	v0,24(s8)
  43e128:	00000000 	nop
  43e12c:	8c460000 	lw	a2,0(v0)
  43e130:	8fc20018 	lw	v0,24(s8)
  43e134:	00000000 	nop
  43e138:	8c470004 	lw	a3,4(v0)
  43e13c:	8f9989e0 	lw	t9,-30240(gp)
  43e140:	00000000 	nop
  43e144:	0320f809 	jalr	t9
  43e148:	00000000 	nop
  43e14c:	8fdc0010 	lw	gp,16(s8)
  43e150:	00000000 	nop
	hmac_update_chunk(&ctx, st->st_ni);
  43e154:	27c40020 	addiu	a0,s8,32
  43e158:	8fc20190 	lw	v0,400(s8)
  43e15c:	00000000 	nop
  43e160:	8c4500f8 	lw	a1,248(v0)
  43e164:	8fc20190 	lw	v0,400(s8)
  43e168:	00000000 	nop
  43e16c:	8c4600fc 	lw	a2,252(v0)
  43e170:	8f9983d4 	lw	t9,-31788(gp)
  43e174:	00000000 	nop
  43e178:	0320f809 	jalr	t9
  43e17c:	00000000 	nop
  43e180:	8fdc0010 	lw	gp,16(s8)
  43e184:	00000000 	nop
	hmac_update_chunk(&ctx, st->st_nr);
  43e188:	27c40020 	addiu	a0,s8,32
  43e18c:	8fc20190 	lw	v0,400(s8)
  43e190:	00000000 	nop
  43e194:	8c450110 	lw	a1,272(v0)
  43e198:	8fc20190 	lw	v0,400(s8)
  43e19c:	00000000 	nop
  43e1a0:	8c460114 	lw	a2,276(v0)
  43e1a4:	8f9983d4 	lw	t9,-31788(gp)
  43e1a8:	00000000 	nop
  43e1ac:	0320f809 	jalr	t9
  43e1b0:	00000000 	nop
  43e1b4:	8fdc0010 	lw	gp,16(s8)
  43e1b8:	00000000 	nop
	hmac_final_chunk(st->st_skeyid, "st_skeyid in skeyid_preshared()", &ctx);
  43e1bc:	8fc20190 	lw	v0,400(s8)
  43e1c0:	00000000 	nop
  43e1c4:	8c420164 	lw	v0,356(v0)
  43e1c8:	00000000 	nop
  43e1cc:	10400009 	beqz	v0,43e1f4 <skeyid_preshared+0x174>
  43e1d0:	00000000 	nop
  43e1d4:	8fc20190 	lw	v0,400(s8)
  43e1d8:	00000000 	nop
  43e1dc:	8c440164 	lw	a0,356(v0)
  43e1e0:	8f998094 	lw	t9,-32620(gp)
  43e1e4:	00000000 	nop
  43e1e8:	0320f809 	jalr	t9
  43e1ec:	00000000 	nop
  43e1f0:	8fdc0010 	lw	gp,16(s8)
  43e1f4:	8fc30024 	lw	v1,36(s8)
  43e1f8:	8fc20190 	lw	v0,400(s8)
  43e1fc:	00000000 	nop
  43e200:	ac430168 	sw	v1,360(v0)
  43e204:	8fd00190 	lw	s0,400(s8)
  43e208:	8fc20190 	lw	v0,400(s8)
  43e20c:	00000000 	nop
  43e210:	8c440168 	lw	a0,360(v0)
  43e214:	8f85802c 	lw	a1,-32724(gp)
  43e218:	00000000 	nop
  43e21c:	24a5ddd8 	addiu	a1,a1,-8744
  43e220:	8f998084 	lw	t9,-32636(gp)
  43e224:	00000000 	nop
  43e228:	0320f809 	jalr	t9
  43e22c:	00000000 	nop
  43e230:	8fdc0010 	lw	gp,16(s8)
  43e234:	ae020164 	sw	v0,356(s0)
  43e238:	8fc20190 	lw	v0,400(s8)
  43e23c:	00000000 	nop
  43e240:	8c440164 	lw	a0,356(v0)
  43e244:	27c50020 	addiu	a1,s8,32
  43e248:	8f998728 	lw	t9,-30936(gp)
  43e24c:	00000000 	nop
  43e250:	0320f809 	jalr	t9
  43e254:	00000000 	nop
  43e258:	8fdc0010 	lw	gp,16(s8)
  43e25c:	00000000 	nop
	return TRUE;
  43e260:	24020001 	li	v0,1
    }
}
  43e264:	03c0e821 	move	sp,s8
  43e268:	8fbf018c 	lw	ra,396(sp)
  43e26c:	8fbe0188 	lw	s8,392(sp)
  43e270:	8fb00180 	lw	s0,384(sp)
  43e274:	27bd0190 	addiu	sp,sp,400
  43e278:	03e00008 	jr	ra
  43e27c:	00000000 	nop

0043e280 <skeyid_digisig>:
  43e280:	3c1c0fbd 	lui	gp,0xfbd
  43e284:	279ce6f0 	addiu	gp,gp,-6416
  43e288:	0399e021 	addu	gp,gp,t9
  43e28c:	27bdfe70 	addiu	sp,sp,-400
  43e290:	afbc0010 	sw	gp,16(sp)
  43e294:	afbf018c 	sw	ra,396(sp)
  43e298:	afbe0188 	sw	s8,392(sp)
  43e29c:	afbc0184 	sw	gp,388(sp)
  43e2a0:	afb00180 	sw	s0,384(sp)
  43e2a4:	03a0f021 	move	s8,sp
  43e2a8:	afc40190 	sw	a0,400(s8)

static bool
skeyid_digisig(struct state *st)
{
    struct hmac_ctx ctx;
    chunk_t nir;

    /* We need to hmac_init with the concatenation of Ni_b and Nr_b,
     * so we have to build a temporary concatentation.
     */
    nir.len = st->st_ni.len + st->st_nr.len;
  43e2ac:	8fc20190 	lw	v0,400(s8)
  43e2b0:	00000000 	nop
  43e2b4:	8c4300fc 	lw	v1,252(v0)
  43e2b8:	8fc20190 	lw	v0,400(s8)
  43e2bc:	00000000 	nop
  43e2c0:	8c420114 	lw	v0,276(v0)
  43e2c4:	00000000 	nop
  43e2c8:	00621021 	addu	v0,v1,v0
  43e2cc:	afc2017c 	sw	v0,380(s8)
    nir.ptr = alloc_bytes(nir.len, "Ni + Nr in skeyid_digisig");
  43e2d0:	8fc4017c 	lw	a0,380(s8)
  43e2d4:	8f85802c 	lw	a1,-32724(gp)
  43e2d8:	00000000 	nop
  43e2dc:	24a5ddf8 	addiu	a1,a1,-8712
  43e2e0:	8f998084 	lw	t9,-32636(gp)
  43e2e4:	00000000 	nop
  43e2e8:	0320f809 	jalr	t9
  43e2ec:	00000000 	nop
  43e2f0:	8fdc0010 	lw	gp,16(s8)
  43e2f4:	afc20178 	sw	v0,376(s8)
    memcpy(nir.ptr, st->st_ni.ptr, st->st_ni.len);
  43e2f8:	8fc40178 	lw	a0,376(s8)
  43e2fc:	8fc20190 	lw	v0,400(s8)
  43e300:	00000000 	nop
  43e304:	8c4500f8 	lw	a1,248(v0)
  43e308:	8fc20190 	lw	v0,400(s8)
  43e30c:	00000000 	nop
  43e310:	8c4600fc 	lw	a2,252(v0)
  43e314:	8f998a30 	lw	t9,-30160(gp)
  43e318:	00000000 	nop
  43e31c:	0320f809 	jalr	t9
  43e320:	00000000 	nop
  43e324:	8fdc0010 	lw	gp,16(s8)
  43e328:	00000000 	nop
    memcpy(nir.ptr+st->st_ni.len, st->st_nr.ptr, st->st_nr.len);
  43e32c:	8fc20190 	lw	v0,400(s8)
  43e330:	00000000 	nop
  43e334:	8c4300fc 	lw	v1,252(v0)
  43e338:	8fc20178 	lw	v0,376(s8)
  43e33c:	00000000 	nop
  43e340:	00431021 	addu	v0,v0,v1
  43e344:	00402021 	move	a0,v0
  43e348:	8fc20190 	lw	v0,400(s8)
  43e34c:	00000000 	nop
  43e350:	8c450110 	lw	a1,272(v0)
  43e354:	8fc20190 	lw	v0,400(s8)
  43e358:	00000000 	nop
  43e35c:	8c460114 	lw	a2,276(v0)
  43e360:	8f998a30 	lw	t9,-30160(gp)
  43e364:	00000000 	nop
  43e368:	0320f809 	jalr	t9
  43e36c:	00000000 	nop
  43e370:	8fdc0010 	lw	gp,16(s8)
  43e374:	00000000 	nop
    hmac_init_chunk(&ctx, st->st_oakley.hasher, nir);
  43e378:	27c40018 	addiu	a0,s8,24
  43e37c:	8fc20190 	lw	v0,400(s8)
  43e380:	00000000 	nop
  43e384:	8c450028 	lw	a1,40(v0)
  43e388:	8fc60178 	lw	a2,376(s8)
  43e38c:	8fc7017c 	lw	a3,380(s8)
  43e390:	8f9989e0 	lw	t9,-30240(gp)
  43e394:	00000000 	nop
  43e398:	0320f809 	jalr	t9
  43e39c:	00000000 	nop
  43e3a0:	8fdc0010 	lw	gp,16(s8)
  43e3a4:	00000000 	nop
    pfree(nir.ptr);
  43e3a8:	8fc40178 	lw	a0,376(s8)
  43e3ac:	8f998094 	lw	t9,-32620(gp)
  43e3b0:	00000000 	nop
  43e3b4:	0320f809 	jalr	t9
  43e3b8:	00000000 	nop
  43e3bc:	8fdc0010 	lw	gp,16(s8)
  43e3c0:	00000000 	nop

    hmac_update_chunk(&ctx, st->st_shared);
  43e3c4:	27c40018 	addiu	a0,s8,24
  43e3c8:	8fc20190 	lw	v0,400(s8)
  43e3cc:	00000000 	nop
  43e3d0:	8c450140 	lw	a1,320(v0)
  43e3d4:	8fc20190 	lw	v0,400(s8)
  43e3d8:	00000000 	nop
  43e3dc:	8c460144 	lw	a2,324(v0)
  43e3e0:	8f9983d4 	lw	t9,-31788(gp)
  43e3e4:	00000000 	nop
  43e3e8:	0320f809 	jalr	t9
  43e3ec:	00000000 	nop
  43e3f0:	8fdc0010 	lw	gp,16(s8)
  43e3f4:	00000000 	nop
    hmac_final_chunk(st->st_skeyid, "st_skeyid in skeyid_digisig()", &ctx);
  43e3f8:	8fc20190 	lw	v0,400(s8)
  43e3fc:	00000000 	nop
  43e400:	8c420164 	lw	v0,356(v0)
  43e404:	00000000 	nop
  43e408:	10400009 	beqz	v0,43e430 <skeyid_digisig+0x1b0>
  43e40c:	00000000 	nop
  43e410:	8fc20190 	lw	v0,400(s8)
  43e414:	00000000 	nop
  43e418:	8c440164 	lw	a0,356(v0)
  43e41c:	8f998094 	lw	t9,-32620(gp)
  43e420:	00000000 	nop
  43e424:	0320f809 	jalr	t9
  43e428:	00000000 	nop
  43e42c:	8fdc0010 	lw	gp,16(s8)
  43e430:	8fc3001c 	lw	v1,28(s8)
  43e434:	8fc20190 	lw	v0,400(s8)
  43e438:	00000000 	nop
  43e43c:	ac430168 	sw	v1,360(v0)
  43e440:	8fd00190 	lw	s0,400(s8)
  43e444:	8fc20190 	lw	v0,400(s8)
  43e448:	00000000 	nop
  43e44c:	8c440168 	lw	a0,360(v0)
  43e450:	8f85802c 	lw	a1,-32724(gp)
  43e454:	00000000 	nop
  43e458:	24a5de14 	addiu	a1,a1,-8684
  43e45c:	8f998084 	lw	t9,-32636(gp)
  43e460:	00000000 	nop
  43e464:	0320f809 	jalr	t9
  43e468:	00000000 	nop
  43e46c:	8fdc0010 	lw	gp,16(s8)
  43e470:	ae020164 	sw	v0,356(s0)
  43e474:	8fc20190 	lw	v0,400(s8)
  43e478:	00000000 	nop
  43e47c:	8c440164 	lw	a0,356(v0)
  43e480:	27c50018 	addiu	a1,s8,24
  43e484:	8f998728 	lw	t9,-30936(gp)
  43e488:	00000000 	nop
  43e48c:	0320f809 	jalr	t9
  43e490:	00000000 	nop
  43e494:	8fdc0010 	lw	gp,16(s8)
  43e498:	00000000 	nop
    return TRUE;
  43e49c:	24020001 	li	v0,1
}
  43e4a0:	03c0e821 	move	sp,s8
  43e4a4:	8fbf018c 	lw	ra,396(sp)
  43e4a8:	8fbe0188 	lw	s8,392(sp)
  43e4ac:	8fb00180 	lw	s0,384(sp)
  43e4b0:	27bd0190 	addiu	sp,sp,400
  43e4b4:	03e00008 	jr	ra
  43e4b8:	00000000 	nop

0043e4bc <generate_skeyids_iv>:
  43e4bc:	3c1c0fbd 	lui	gp,0xfbd
  43e4c0:	279ce4b4 	addiu	gp,gp,-6988
  43e4c4:	0399e021 	addu	gp,gp,t9
  43e4c8:	27bdfbd0 	addiu	sp,sp,-1072
  43e4cc:	afbc0010 	sw	gp,16(sp)
  43e4d0:	afbf042c 	sw	ra,1068(sp)
  43e4d4:	afbe0428 	sw	s8,1064(sp)
  43e4d8:	afbc0424 	sw	gp,1060(sp)
  43e4dc:	afb00420 	sw	s0,1056(sp)
  43e4e0:	03a0f021 	move	s8,sp
  43e4e4:	afc40430 	sw	a0,1072(s8)

/* Generate the SKEYID_* and new IV
 * See draft-ietf-ipsec-ike-01.txt 4.1
 */
static bool
generate_skeyids_iv(struct state *st)
{
    /* Generate the SKEYID */
    switch (st->st_oakley.auth)
  43e4e8:	8fc20430 	lw	v0,1072(s8)
  43e4ec:	00000000 	nop
  43e4f0:	9442002c 	lhu	v0,44(v0)
  43e4f4:	00000000 	nop
  43e4f8:	2442ffff 	addiu	v0,v0,-1
  43e4fc:	afc2041c 	sw	v0,1052(s8)
  43e500:	8fc3041c 	lw	v1,1052(s8)
  43e504:	00000000 	nop
  43e508:	2c620007 	sltiu	v0,v1,7
  43e50c:	10400027 	beqz	v0,43e5ac <generate_skeyids_iv+0xf0>
  43e510:	00000000 	nop
  43e514:	8fc2041c 	lw	v0,1052(s8)
  43e518:	00000000 	nop
  43e51c:	00021080 	sll	v0,v0,0x2
  43e520:	8f81802c 	lw	at,-32724(gp)
  43e524:	00000000 	nop
  43e528:	2421df80 	addiu	at,at,-8320
  43e52c:	00221021 	addu	v0,at,v0
  43e530:	8c420000 	lw	v0,0(v0)
  43e534:	00000000 	nop
  43e538:	005c1021 	addu	v0,v0,gp
  43e53c:	00400008 	jr	v0
  43e540:	00000000 	nop
    {
	case OAKLEY_PRESHARED_KEY:
	    if (!skeyid_preshared(st))
  43e544:	8fc40430 	lw	a0,1072(s8)
  43e548:	8f998034 	lw	t9,-32716(gp)
  43e54c:	00000000 	nop
  43e550:	2739e080 	addiu	t9,t9,-8064
  43e554:	00000000 	nop
  43e558:	0320f809 	jalr	t9
  43e55c:	00000000 	nop
  43e560:	8fdc0010 	lw	gp,16(s8)
  43e564:	14400026 	bnez	v0,43e600 <generate_skeyids_iv+0x144>
  43e568:	00000000 	nop
		return FALSE;
  43e56c:	00001021 	move	v0,zero
  43e570:	100002c1 	b	43f078 <generate_skeyids_iv+0xbbc>
  43e574:	00000000 	nop
	    break;

	case OAKLEY_RSA_SIG:
	    if (!skeyid_digisig(st))
  43e578:	8fc40430 	lw	a0,1072(s8)
  43e57c:	8f998034 	lw	t9,-32716(gp)
  43e580:	00000000 	nop
  43e584:	2739e280 	addiu	t9,t9,-7552
  43e588:	00000000 	nop
  43e58c:	0320f809 	jalr	t9
  43e590:	00000000 	nop
  43e594:	8fdc0010 	lw	gp,16(s8)
  43e598:	14400019 	bnez	v0,43e600 <generate_skeyids_iv+0x144>
  43e59c:	00000000 	nop
		return FALSE;
  43e5a0:	00001021 	move	v0,zero
  43e5a4:	100002b4 	b	43f078 <generate_skeyids_iv+0xbbc>
  43e5a8:	00000000 	nop
	    break;

	case OAKLEY_DSS_SIG:
	    /* XXX */

	case OAKLEY_RSA_ENC:
	case OAKLEY_RSA_ENC_REV:
	case OAKLEY_ELGAMAL_ENC:
	case OAKLEY_ELGAMAL_ENC_REV:
	    /* XXX */

	default:
	    exit_log("generate_skeyids_iv(): unsupported authentication method %s",
  43e5ac:	8fc20430 	lw	v0,1072(s8)
  43e5b0:	00000000 	nop
  43e5b4:	9442002c 	lhu	v0,44(v0)
  43e5b8:	8f84866c 	lw	a0,-31124(gp)
  43e5bc:	00402821 	move	a1,v0
  43e5c0:	8f9987fc 	lw	t9,-30724(gp)
  43e5c4:	00000000 	nop
  43e5c8:	0320f809 	jalr	t9
  43e5cc:	00000000 	nop
  43e5d0:	8fdc0010 	lw	gp,16(s8)
  43e5d4:	00000000 	nop
  43e5d8:	8f84802c 	lw	a0,-32724(gp)
  43e5dc:	00000000 	nop
  43e5e0:	2484de34 	addiu	a0,a0,-8652
  43e5e4:	00402821 	move	a1,v0
  43e5e8:	8f998854 	lw	t9,-30636(gp)
  43e5ec:	00000000 	nop
  43e5f0:	0320f809 	jalr	t9
  43e5f4:	00000000 	nop
  43e5f8:	8fdc0010 	lw	gp,16(s8)
  43e5fc:	00000000 	nop
		enum_show(&oakley_auth_names, st->st_oakley.auth));
    }

    /* generate SKEYID_* from SKEYID */
    {
	struct hmac_ctx ctx;

	hmac_init_chunk(&ctx, st->st_oakley.hasher, st->st_skeyid);
  43e600:	27c40018 	addiu	a0,s8,24
  43e604:	8fc20430 	lw	v0,1072(s8)
  43e608:	00000000 	nop
  43e60c:	8c450028 	lw	a1,40(v0)
  43e610:	8fc20430 	lw	v0,1072(s8)
  43e614:	00000000 	nop
  43e618:	8c460164 	lw	a2,356(v0)
  43e61c:	8fc20430 	lw	v0,1072(s8)
  43e620:	00000000 	nop
  43e624:	8c470168 	lw	a3,360(v0)
  43e628:	8f9989e0 	lw	t9,-30240(gp)
  43e62c:	00000000 	nop
  43e630:	0320f809 	jalr	t9
  43e634:	00000000 	nop
  43e638:	8fdc0010 	lw	gp,16(s8)
  43e63c:	00000000 	nop

	/* SKEYID_D */
	hmac_update_chunk(&ctx, st->st_shared);
  43e640:	27c40018 	addiu	a0,s8,24
  43e644:	8fc20430 	lw	v0,1072(s8)
  43e648:	00000000 	nop
  43e64c:	8c450140 	lw	a1,320(v0)
  43e650:	8fc20430 	lw	v0,1072(s8)
  43e654:	00000000 	nop
  43e658:	8c460144 	lw	a2,324(v0)
  43e65c:	8f9983d4 	lw	t9,-31788(gp)
  43e660:	00000000 	nop
  43e664:	0320f809 	jalr	t9
  43e668:	00000000 	nop
  43e66c:	8fdc0010 	lw	gp,16(s8)
  43e670:	00000000 	nop
	hmac_update(&ctx, st->st_icookie, COOKIE_SIZE);
  43e674:	8fc20430 	lw	v0,1072(s8)
  43e678:	00000000 	nop
  43e67c:	244200f0 	addiu	v0,v0,240
  43e680:	27c40018 	addiu	a0,s8,24
  43e684:	00402821 	move	a1,v0
  43e688:	24060008 	li	a2,8
  43e68c:	8f9983d4 	lw	t9,-31788(gp)
  43e690:	00000000 	nop
  43e694:	0320f809 	jalr	t9
  43e698:	00000000 	nop
  43e69c:	8fdc0010 	lw	gp,16(s8)
  43e6a0:	00000000 	nop
	hmac_update(&ctx, st->st_rcookie, COOKIE_SIZE);
  43e6a4:	8fc20430 	lw	v0,1072(s8)
  43e6a8:	00000000 	nop
  43e6ac:	24420108 	addiu	v0,v0,264
  43e6b0:	27c40018 	addiu	a0,s8,24
  43e6b4:	00402821 	move	a1,v0
  43e6b8:	24060008 	li	a2,8
  43e6bc:	8f9983d4 	lw	t9,-31788(gp)
  43e6c0:	00000000 	nop
  43e6c4:	0320f809 	jalr	t9
  43e6c8:	00000000 	nop
  43e6cc:	8fdc0010 	lw	gp,16(s8)
  43e6d0:	00000000 	nop
	hmac_update(&ctx, "\0", 1);
  43e6d4:	27c40018 	addiu	a0,s8,24
  43e6d8:	8f85802c 	lw	a1,-32724(gp)
  43e6dc:	00000000 	nop
  43e6e0:	24a5de70 	addiu	a1,a1,-8592
  43e6e4:	24060001 	li	a2,1
  43e6e8:	8f9983d4 	lw	t9,-31788(gp)
  43e6ec:	00000000 	nop
  43e6f0:	0320f809 	jalr	t9
  43e6f4:	00000000 	nop
  43e6f8:	8fdc0010 	lw	gp,16(s8)
  43e6fc:	00000000 	nop
	hmac_final_chunk(st->st_skeyid_d, "st_skeyid_d in generate_skeyids_iv()", &ctx);
  43e700:	8fc20430 	lw	v0,1072(s8)
  43e704:	00000000 	nop
  43e708:	8c42016c 	lw	v0,364(v0)
  43e70c:	00000000 	nop
  43e710:	10400009 	beqz	v0,43e738 <generate_skeyids_iv+0x27c>
  43e714:	00000000 	nop
  43e718:	8fc20430 	lw	v0,1072(s8)
  43e71c:	00000000 	nop
  43e720:	8c44016c 	lw	a0,364(v0)
  43e724:	8f998094 	lw	t9,-32620(gp)
  43e728:	00000000 	nop
  43e72c:	0320f809 	jalr	t9
  43e730:	00000000 	nop
  43e734:	8fdc0010 	lw	gp,16(s8)
  43e738:	8fc3001c 	lw	v1,28(s8)
  43e73c:	8fc20430 	lw	v0,1072(s8)
  43e740:	00000000 	nop
  43e744:	ac430170 	sw	v1,368(v0)
  43e748:	8fd00430 	lw	s0,1072(s8)
  43e74c:	8fc20430 	lw	v0,1072(s8)
  43e750:	00000000 	nop
  43e754:	8c440170 	lw	a0,368(v0)
  43e758:	8f85802c 	lw	a1,-32724(gp)
  43e75c:	00000000 	nop
  43e760:	24a5de74 	addiu	a1,a1,-8588
  43e764:	8f998084 	lw	t9,-32636(gp)
  43e768:	00000000 	nop
  43e76c:	0320f809 	jalr	t9
  43e770:	00000000 	nop
  43e774:	8fdc0010 	lw	gp,16(s8)
  43e778:	ae02016c 	sw	v0,364(s0)
  43e77c:	8fc20430 	lw	v0,1072(s8)
  43e780:	00000000 	nop
  43e784:	8c44016c 	lw	a0,364(v0)
  43e788:	27c50018 	addiu	a1,s8,24
  43e78c:	8f998728 	lw	t9,-30936(gp)
  43e790:	00000000 	nop
  43e794:	0320f809 	jalr	t9
  43e798:	00000000 	nop
  43e79c:	8fdc0010 	lw	gp,16(s8)
  43e7a0:	00000000 	nop

	/* SKEYID_A */
	hmac_reinit(&ctx);
  43e7a4:	27c40018 	addiu	a0,s8,24
  43e7a8:	8f9984f0 	lw	t9,-31504(gp)
  43e7ac:	00000000 	nop
  43e7b0:	0320f809 	jalr	t9
  43e7b4:	00000000 	nop
  43e7b8:	8fdc0010 	lw	gp,16(s8)
  43e7bc:	00000000 	nop
	hmac_update_chunk(&ctx, st->st_skeyid_d);
  43e7c0:	27c40018 	addiu	a0,s8,24
  43e7c4:	8fc20430 	lw	v0,1072(s8)
  43e7c8:	00000000 	nop
  43e7cc:	8c45016c 	lw	a1,364(v0)
  43e7d0:	8fc20430 	lw	v0,1072(s8)
  43e7d4:	00000000 	nop
  43e7d8:	8c460170 	lw	a2,368(v0)
  43e7dc:	8f9983d4 	lw	t9,-31788(gp)
  43e7e0:	00000000 	nop
  43e7e4:	0320f809 	jalr	t9
  43e7e8:	00000000 	nop
  43e7ec:	8fdc0010 	lw	gp,16(s8)
  43e7f0:	00000000 	nop
	hmac_update_chunk(&ctx, st->st_shared);
  43e7f4:	27c40018 	addiu	a0,s8,24
  43e7f8:	8fc20430 	lw	v0,1072(s8)
  43e7fc:	00000000 	nop
  43e800:	8c450140 	lw	a1,320(v0)
  43e804:	8fc20430 	lw	v0,1072(s8)
  43e808:	00000000 	nop
  43e80c:	8c460144 	lw	a2,324(v0)
  43e810:	8f9983d4 	lw	t9,-31788(gp)
  43e814:	00000000 	nop
  43e818:	0320f809 	jalr	t9
  43e81c:	00000000 	nop
  43e820:	8fdc0010 	lw	gp,16(s8)
  43e824:	00000000 	nop
	hmac_update(&ctx, st->st_icookie, COOKIE_SIZE);
  43e828:	8fc20430 	lw	v0,1072(s8)
  43e82c:	00000000 	nop
  43e830:	244200f0 	addiu	v0,v0,240
  43e834:	27c40018 	addiu	a0,s8,24
  43e838:	00402821 	move	a1,v0
  43e83c:	24060008 	li	a2,8
  43e840:	8f9983d4 	lw	t9,-31788(gp)
  43e844:	00000000 	nop
  43e848:	0320f809 	jalr	t9
  43e84c:	00000000 	nop
  43e850:	8fdc0010 	lw	gp,16(s8)
  43e854:	00000000 	nop
	hmac_update(&ctx, st->st_rcookie, COOKIE_SIZE);
  43e858:	8fc20430 	lw	v0,1072(s8)
  43e85c:	00000000 	nop
  43e860:	24420108 	addiu	v0,v0,264
  43e864:	27c40018 	addiu	a0,s8,24
  43e868:	00402821 	move	a1,v0
  43e86c:	24060008 	li	a2,8
  43e870:	8f9983d4 	lw	t9,-31788(gp)
  43e874:	00000000 	nop
  43e878:	0320f809 	jalr	t9
  43e87c:	00000000 	nop
  43e880:	8fdc0010 	lw	gp,16(s8)
  43e884:	00000000 	nop
	hmac_update(&ctx, "\1", 1);
  43e888:	27c40018 	addiu	a0,s8,24
  43e88c:	8f85802c 	lw	a1,-32724(gp)
  43e890:	00000000 	nop
  43e894:	24a5de9c 	addiu	a1,a1,-8548
  43e898:	24060001 	li	a2,1
  43e89c:	8f9983d4 	lw	t9,-31788(gp)
  43e8a0:	00000000 	nop
  43e8a4:	0320f809 	jalr	t9
  43e8a8:	00000000 	nop
  43e8ac:	8fdc0010 	lw	gp,16(s8)
  43e8b0:	00000000 	nop
	hmac_final_chunk(st->st_skeyid_a, "st_skeyid_a in generate_skeyids_iv()", &ctx);
  43e8b4:	8fc20430 	lw	v0,1072(s8)
  43e8b8:	00000000 	nop
  43e8bc:	8c420174 	lw	v0,372(v0)
  43e8c0:	00000000 	nop
  43e8c4:	10400009 	beqz	v0,43e8ec <generate_skeyids_iv+0x430>
  43e8c8:	00000000 	nop
  43e8cc:	8fc20430 	lw	v0,1072(s8)
  43e8d0:	00000000 	nop
  43e8d4:	8c440174 	lw	a0,372(v0)
  43e8d8:	8f998094 	lw	t9,-32620(gp)
  43e8dc:	00000000 	nop
  43e8e0:	0320f809 	jalr	t9
  43e8e4:	00000000 	nop
  43e8e8:	8fdc0010 	lw	gp,16(s8)
  43e8ec:	8fc3001c 	lw	v1,28(s8)
  43e8f0:	8fc20430 	lw	v0,1072(s8)
  43e8f4:	00000000 	nop
  43e8f8:	ac430178 	sw	v1,376(v0)
  43e8fc:	8fd00430 	lw	s0,1072(s8)
  43e900:	8fc20430 	lw	v0,1072(s8)
  43e904:	00000000 	nop
  43e908:	8c440178 	lw	a0,376(v0)
  43e90c:	8f85802c 	lw	a1,-32724(gp)
  43e910:	00000000 	nop
  43e914:	24a5dea0 	addiu	a1,a1,-8544
  43e918:	8f998084 	lw	t9,-32636(gp)
  43e91c:	00000000 	nop
  43e920:	0320f809 	jalr	t9
  43e924:	00000000 	nop
  43e928:	8fdc0010 	lw	gp,16(s8)
  43e92c:	ae020174 	sw	v0,372(s0)
  43e930:	8fc20430 	lw	v0,1072(s8)
  43e934:	00000000 	nop
  43e938:	8c440174 	lw	a0,372(v0)
  43e93c:	27c50018 	addiu	a1,s8,24
  43e940:	8f998728 	lw	t9,-30936(gp)
  43e944:	00000000 	nop
  43e948:	0320f809 	jalr	t9
  43e94c:	00000000 	nop
  43e950:	8fdc0010 	lw	gp,16(s8)
  43e954:	00000000 	nop

	/* SKEYID_E */
	hmac_reinit(&ctx);
  43e958:	27c40018 	addiu	a0,s8,24
  43e95c:	8f9984f0 	lw	t9,-31504(gp)
  43e960:	00000000 	nop
  43e964:	0320f809 	jalr	t9
  43e968:	00000000 	nop
  43e96c:	8fdc0010 	lw	gp,16(s8)
  43e970:	00000000 	nop
	hmac_update_chunk(&ctx, st->st_skeyid_a);
  43e974:	27c40018 	addiu	a0,s8,24
  43e978:	8fc20430 	lw	v0,1072(s8)
  43e97c:	00000000 	nop
  43e980:	8c450174 	lw	a1,372(v0)
  43e984:	8fc20430 	lw	v0,1072(s8)
  43e988:	00000000 	nop
  43e98c:	8c460178 	lw	a2,376(v0)
  43e990:	8f9983d4 	lw	t9,-31788(gp)
  43e994:	00000000 	nop
  43e998:	0320f809 	jalr	t9
  43e99c:	00000000 	nop
  43e9a0:	8fdc0010 	lw	gp,16(s8)
  43e9a4:	00000000 	nop
	hmac_update_chunk(&ctx, st->st_shared);
  43e9a8:	27c40018 	addiu	a0,s8,24
  43e9ac:	8fc20430 	lw	v0,1072(s8)
  43e9b0:	00000000 	nop
  43e9b4:	8c450140 	lw	a1,320(v0)
  43e9b8:	8fc20430 	lw	v0,1072(s8)
  43e9bc:	00000000 	nop
  43e9c0:	8c460144 	lw	a2,324(v0)
  43e9c4:	8f9983d4 	lw	t9,-31788(gp)
  43e9c8:	00000000 	nop
  43e9cc:	0320f809 	jalr	t9
  43e9d0:	00000000 	nop
  43e9d4:	8fdc0010 	lw	gp,16(s8)
  43e9d8:	00000000 	nop
	hmac_update(&ctx, st->st_icookie, COOKIE_SIZE);
  43e9dc:	8fc20430 	lw	v0,1072(s8)
  43e9e0:	00000000 	nop
  43e9e4:	244200f0 	addiu	v0,v0,240
  43e9e8:	27c40018 	addiu	a0,s8,24
  43e9ec:	00402821 	move	a1,v0
  43e9f0:	24060008 	li	a2,8
  43e9f4:	8f9983d4 	lw	t9,-31788(gp)
  43e9f8:	00000000 	nop
  43e9fc:	0320f809 	jalr	t9
  43ea00:	00000000 	nop
  43ea04:	8fdc0010 	lw	gp,16(s8)
  43ea08:	00000000 	nop
	hmac_update(&ctx, st->st_rcookie, COOKIE_SIZE);
  43ea0c:	8fc20430 	lw	v0,1072(s8)
  43ea10:	00000000 	nop
  43ea14:	24420108 	addiu	v0,v0,264
  43ea18:	27c40018 	addiu	a0,s8,24
  43ea1c:	00402821 	move	a1,v0
  43ea20:	24060008 	li	a2,8
  43ea24:	8f9983d4 	lw	t9,-31788(gp)
  43ea28:	00000000 	nop
  43ea2c:	0320f809 	jalr	t9
  43ea30:	00000000 	nop
  43ea34:	8fdc0010 	lw	gp,16(s8)
  43ea38:	00000000 	nop
	hmac_update(&ctx, "\2", 1);
  43ea3c:	27c40018 	addiu	a0,s8,24
  43ea40:	8f85802c 	lw	a1,-32724(gp)
  43ea44:	00000000 	nop
  43ea48:	24a5dec8 	addiu	a1,a1,-8504
  43ea4c:	24060001 	li	a2,1
  43ea50:	8f9983d4 	lw	t9,-31788(gp)
  43ea54:	00000000 	nop
  43ea58:	0320f809 	jalr	t9
  43ea5c:	00000000 	nop
  43ea60:	8fdc0010 	lw	gp,16(s8)
  43ea64:	00000000 	nop
	hmac_final_chunk(st->st_skeyid_e, "st_skeyid_e in generate_skeyids_iv()", &ctx);
  43ea68:	8fc20430 	lw	v0,1072(s8)
  43ea6c:	00000000 	nop
  43ea70:	8c42017c 	lw	v0,380(v0)
  43ea74:	00000000 	nop
  43ea78:	10400009 	beqz	v0,43eaa0 <generate_skeyids_iv+0x5e4>
  43ea7c:	00000000 	nop
  43ea80:	8fc20430 	lw	v0,1072(s8)
  43ea84:	00000000 	nop
  43ea88:	8c44017c 	lw	a0,380(v0)
  43ea8c:	8f998094 	lw	t9,-32620(gp)
  43ea90:	00000000 	nop
  43ea94:	0320f809 	jalr	t9
  43ea98:	00000000 	nop
  43ea9c:	8fdc0010 	lw	gp,16(s8)
  43eaa0:	8fc3001c 	lw	v1,28(s8)
  43eaa4:	8fc20430 	lw	v0,1072(s8)
  43eaa8:	00000000 	nop
  43eaac:	ac430180 	sw	v1,384(v0)
  43eab0:	8fd00430 	lw	s0,1072(s8)
  43eab4:	8fc20430 	lw	v0,1072(s8)
  43eab8:	00000000 	nop
  43eabc:	8c440180 	lw	a0,384(v0)
  43eac0:	8f85802c 	lw	a1,-32724(gp)
  43eac4:	00000000 	nop
  43eac8:	24a5decc 	addiu	a1,a1,-8500
  43eacc:	8f998084 	lw	t9,-32636(gp)
  43ead0:	00000000 	nop
  43ead4:	0320f809 	jalr	t9
  43ead8:	00000000 	nop
  43eadc:	8fdc0010 	lw	gp,16(s8)
  43eae0:	ae02017c 	sw	v0,380(s0)
  43eae4:	8fc20430 	lw	v0,1072(s8)
  43eae8:	00000000 	nop
  43eaec:	8c44017c 	lw	a0,380(v0)
  43eaf0:	27c50018 	addiu	a1,s8,24
  43eaf4:	8f998728 	lw	t9,-30936(gp)
  43eaf8:	00000000 	nop
  43eafc:	0320f809 	jalr	t9
  43eb00:	00000000 	nop
  43eb04:	8fdc0010 	lw	gp,16(s8)
  43eb08:	00000000 	nop
    }

    /* generate IV */
    {
	union hash_ctx hash_ctx;
	const struct hash_desc *h = st->st_oakley.hasher;
  43eb0c:	8fc20430 	lw	v0,1072(s8)
  43eb10:	00000000 	nop
  43eb14:	8c420028 	lw	v0,40(v0)
  43eb18:	00000000 	nop
  43eb1c:	afc20250 	sw	v0,592(s8)

	st->st_new_iv_len = h->hash_digest_size;
  43eb20:	8fc20250 	lw	v0,592(s8)
  43eb24:	00000000 	nop
  43eb28:	8c43000c 	lw	v1,12(v0)
  43eb2c:	8fc20430 	lw	v0,1072(s8)
  43eb30:	00000000 	nop
  43eb34:	ac430248 	sw	v1,584(v0)
	passert(st->st_new_iv_len <= sizeof(st->st_new_iv));
  43eb38:	8fc20430 	lw	v0,1072(s8)
  43eb3c:	00000000 	nop
  43eb40:	8c420248 	lw	v0,584(v0)
  43eb44:	00000000 	nop
  43eb48:	2c420041 	sltiu	v0,v0,65
  43eb4c:	1440000e 	bnez	v0,43eb88 <generate_skeyids_iv+0x6cc>
  43eb50:	00000000 	nop
  43eb54:	8f84802c 	lw	a0,-32724(gp)
  43eb58:	00000000 	nop
  43eb5c:	2484def4 	addiu	a0,a0,-8460
  43eb60:	8f85802c 	lw	a1,-32724(gp)
  43eb64:	00000000 	nop
  43eb68:	24a5d59c 	addiu	a1,a1,-10852
  43eb6c:	24060560 	li	a2,1376
  43eb70:	8f998bb8 	lw	t9,-29768(gp)
  43eb74:	00000000 	nop
  43eb78:	0320f809 	jalr	t9
  43eb7c:	00000000 	nop
  43eb80:	8fdc0010 	lw	gp,16(s8)
  43eb84:	00000000 	nop

        DBG(DBG_CRYPT,
  43eb88:	8f8284f8 	lw	v0,-31496(gp)
  43eb8c:	00000000 	nop
  43eb90:	8c420000 	lw	v0,0(v0)
  43eb94:	00000000 	nop
  43eb98:	30420002 	andi	v0,v0,0x2
  43eb9c:	1040001f 	beqz	v0,43ec1c <generate_skeyids_iv+0x760>
  43eba0:	00000000 	nop
  43eba4:	8f84802c 	lw	a0,-32724(gp)
  43eba8:	00000000 	nop
  43ebac:	2484df20 	addiu	a0,a0,-8416
  43ebb0:	8fc20430 	lw	v0,1072(s8)
  43ebb4:	00000000 	nop
  43ebb8:	8c4500e8 	lw	a1,232(v0)
  43ebbc:	8fc20430 	lw	v0,1072(s8)
  43ebc0:	00000000 	nop
  43ebc4:	8c4600ec 	lw	a2,236(v0)
  43ebc8:	8f9984ec 	lw	t9,-31508(gp)
  43ebcc:	00000000 	nop
  43ebd0:	0320f809 	jalr	t9
  43ebd4:	00000000 	nop
  43ebd8:	8fdc0010 	lw	gp,16(s8)
  43ebdc:	00000000 	nop
  43ebe0:	8f84802c 	lw	a0,-32724(gp)
  43ebe4:	00000000 	nop
  43ebe8:	2484df28 	addiu	a0,a0,-8408
  43ebec:	8fc20430 	lw	v0,1072(s8)
  43ebf0:	00000000 	nop
  43ebf4:	8c450100 	lw	a1,256(v0)
  43ebf8:	8fc20430 	lw	v0,1072(s8)
  43ebfc:	00000000 	nop
  43ec00:	8c460104 	lw	a2,260(v0)
  43ec04:	8f9984ec 	lw	t9,-31508(gp)
  43ec08:	00000000 	nop
  43ec0c:	0320f809 	jalr	t9
  43ec10:	00000000 	nop
  43ec14:	8fdc0010 	lw	gp,16(s8)
  43ec18:	00000000 	nop
            DBG_dump_chunk("DH_i:", st->st_gi);
            DBG_dump_chunk("DH_r:", st->st_gr);
        );
	h->hash_init(&hash_ctx);
  43ec1c:	8fc20250 	lw	v0,592(s8)
  43ec20:	00000000 	nop
  43ec24:	8c420010 	lw	v0,16(v0)
  43ec28:	27c40178 	addiu	a0,s8,376
  43ec2c:	0040c821 	move	t9,v0
  43ec30:	0320f809 	jalr	t9
  43ec34:	00000000 	nop
  43ec38:	8fdc0010 	lw	gp,16(s8)
  43ec3c:	00000000 	nop
	h->hash_update(&hash_ctx, st->st_gi.ptr, st->st_gi.len);
  43ec40:	8fc20250 	lw	v0,592(s8)
  43ec44:	00000000 	nop
  43ec48:	8c430014 	lw	v1,20(v0)
  43ec4c:	27c40178 	addiu	a0,s8,376
  43ec50:	8fc20430 	lw	v0,1072(s8)
  43ec54:	00000000 	nop
  43ec58:	8c4500e8 	lw	a1,232(v0)
  43ec5c:	8fc20430 	lw	v0,1072(s8)
  43ec60:	00000000 	nop
  43ec64:	8c4600ec 	lw	a2,236(v0)
  43ec68:	0060c821 	move	t9,v1
  43ec6c:	0320f809 	jalr	t9
  43ec70:	00000000 	nop
  43ec74:	8fdc0010 	lw	gp,16(s8)
  43ec78:	00000000 	nop
	h->hash_update(&hash_ctx, st->st_gr.ptr, st->st_gr.len);
  43ec7c:	8fc20250 	lw	v0,592(s8)
  43ec80:	00000000 	nop
  43ec84:	8c430014 	lw	v1,20(v0)
  43ec88:	27c40178 	addiu	a0,s8,376
  43ec8c:	8fc20430 	lw	v0,1072(s8)
  43ec90:	00000000 	nop
  43ec94:	8c450100 	lw	a1,256(v0)
  43ec98:	8fc20430 	lw	v0,1072(s8)
  43ec9c:	00000000 	nop
  43eca0:	8c460104 	lw	a2,260(v0)
  43eca4:	0060c821 	move	t9,v1
  43eca8:	0320f809 	jalr	t9
  43ecac:	00000000 	nop
  43ecb0:	8fdc0010 	lw	gp,16(s8)
  43ecb4:	00000000 	nop
	h->hash_final(st->st_new_iv, &hash_ctx);
  43ecb8:	8fc20430 	lw	v0,1072(s8)
  43ecbc:	00000000 	nop
  43ecc0:	244301c4 	addiu	v1,v0,452
  43ecc4:	8fc20250 	lw	v0,592(s8)
  43ecc8:	00000000 	nop
  43eccc:	8c420018 	lw	v0,24(v0)
  43ecd0:	00602021 	move	a0,v1
  43ecd4:	27c50178 	addiu	a1,s8,376
  43ecd8:	0040c821 	move	t9,v0
  43ecdc:	0320f809 	jalr	t9
  43ece0:	00000000 	nop
  43ece4:	8fdc0010 	lw	gp,16(s8)
  43ece8:	00000000 	nop
    }

    /* Oakley Keying Material
     * Derived from Skeyid_e: if it is not big enough, generate more
     * using the PRF.
     * See draft-ietf-ipsec-isakmp-oakley-07.txt Appendix B
     */
    {
	/* const size_t keysize = st->st_oakley.encrypter->keydeflen/BITS_PER_BYTE; */
	const size_t keysize = st->st_oakley.enckeylen/BITS_PER_BYTE;
  43ecec:	8fc20430 	lw	v0,1072(s8)
  43ecf0:	00000000 	nop
  43ecf4:	9442001e 	lhu	v0,30(v0)
  43ecf8:	00000000 	nop
  43ecfc:	000210c2 	srl	v0,v0,0x3
  43ed00:	3042ffff 	andi	v0,v0,0xffff
  43ed04:	afc20254 	sw	v0,596(s8)
	u_char keytemp[MAX_OAKLEY_KEY_LEN + MAX_DIGEST_LEN];
	u_char *k = st->st_skeyid_e.ptr;
  43ed08:	8fc20430 	lw	v0,1072(s8)
  43ed0c:	00000000 	nop
  43ed10:	8c42017c 	lw	v0,380(v0)
  43ed14:	00000000 	nop
  43ed18:	afc20250 	sw	v0,592(s8)

	if (keysize > st->st_skeyid_e.len)
  43ed1c:	8fc20430 	lw	v0,1072(s8)
  43ed20:	00000000 	nop
  43ed24:	8c430180 	lw	v1,384(v0)
  43ed28:	8fc20254 	lw	v0,596(s8)
  43ed2c:	00000000 	nop
  43ed30:	0062102b 	sltu	v0,v1,v0
  43ed34:	10400050 	beqz	v0,43ee78 <generate_skeyids_iv+0x9bc>
  43ed38:	00000000 	nop
	{
	    struct hmac_ctx ctx;
	    size_t i = 0;
  43ed3c:	afc00418 	sw	zero,1048(s8)

	    hmac_init_chunk(&ctx, st->st_oakley.hasher, st->st_skeyid_e);
  43ed40:	27c402b8 	addiu	a0,s8,696
  43ed44:	8fc20430 	lw	v0,1072(s8)
  43ed48:	00000000 	nop
  43ed4c:	8c450028 	lw	a1,40(v0)
  43ed50:	8fc20430 	lw	v0,1072(s8)
  43ed54:	00000000 	nop
  43ed58:	8c46017c 	lw	a2,380(v0)
  43ed5c:	8fc20430 	lw	v0,1072(s8)
  43ed60:	00000000 	nop
  43ed64:	8c470180 	lw	a3,384(v0)
  43ed68:	8f9989e0 	lw	t9,-30240(gp)
  43ed6c:	00000000 	nop
  43ed70:	0320f809 	jalr	t9
  43ed74:	00000000 	nop
  43ed78:	8fdc0010 	lw	gp,16(s8)
  43ed7c:	00000000 	nop
	    hmac_update(&ctx, "\0", 1);
  43ed80:	27c402b8 	addiu	a0,s8,696
  43ed84:	8f85802c 	lw	a1,-32724(gp)
  43ed88:	00000000 	nop
  43ed8c:	24a5de70 	addiu	a1,a1,-8592
  43ed90:	24060001 	li	a2,1
  43ed94:	8f9983d4 	lw	t9,-31788(gp)
  43ed98:	00000000 	nop
  43ed9c:	0320f809 	jalr	t9
  43eda0:	00000000 	nop
  43eda4:	8fdc0010 	lw	gp,16(s8)
  43eda8:	00000000 	nop
	    for (;;)
	    {
		hmac_final(&keytemp[i], &ctx);
  43edac:	27c30258 	addiu	v1,s8,600
  43edb0:	8fc20418 	lw	v0,1048(s8)
  43edb4:	00000000 	nop
  43edb8:	00621021 	addu	v0,v1,v0
  43edbc:	00402021 	move	a0,v0
  43edc0:	27c502b8 	addiu	a1,s8,696
  43edc4:	8f998728 	lw	t9,-30936(gp)
  43edc8:	00000000 	nop
  43edcc:	0320f809 	jalr	t9
  43edd0:	00000000 	nop
  43edd4:	8fdc0010 	lw	gp,16(s8)
  43edd8:	00000000 	nop
		i += ctx.hmac_digest_size;
  43eddc:	8fc30418 	lw	v1,1048(s8)
  43ede0:	8fc202bc 	lw	v0,700(s8)
  43ede4:	00000000 	nop
  43ede8:	00621021 	addu	v0,v1,v0
  43edec:	afc20418 	sw	v0,1048(s8)
		if (i >= keysize)
  43edf0:	8fc30418 	lw	v1,1048(s8)
  43edf4:	8fc20254 	lw	v0,596(s8)
  43edf8:	00000000 	nop
  43edfc:	0062102b 	sltu	v0,v1,v0
  43ee00:	14400003 	bnez	v0,43ee10 <generate_skeyids_iv+0x954>
  43ee04:	00000000 	nop
		    break;
  43ee08:	10000019 	b	43ee70 <generate_skeyids_iv+0x9b4>
  43ee0c:	00000000 	nop
		hmac_reinit(&ctx);
  43ee10:	27c402b8 	addiu	a0,s8,696
  43ee14:	8f9984f0 	lw	t9,-31504(gp)
  43ee18:	00000000 	nop
  43ee1c:	0320f809 	jalr	t9
  43ee20:	00000000 	nop
  43ee24:	8fdc0010 	lw	gp,16(s8)
  43ee28:	00000000 	nop
		hmac_update(&ctx, &keytemp[i - ctx.hmac_digest_size], ctx.hmac_digest_size);
  43ee2c:	8fc30418 	lw	v1,1048(s8)
  43ee30:	8fc202bc 	lw	v0,700(s8)
  43ee34:	00000000 	nop
  43ee38:	00621823 	subu	v1,v1,v0
  43ee3c:	27c20258 	addiu	v0,s8,600
  43ee40:	00431021 	addu	v0,v0,v1
  43ee44:	27c402b8 	addiu	a0,s8,696
  43ee48:	00402821 	move	a1,v0
  43ee4c:	8fc602bc 	lw	a2,700(s8)
  43ee50:	8f9983d4 	lw	t9,-31788(gp)
  43ee54:	00000000 	nop
  43ee58:	0320f809 	jalr	t9
  43ee5c:	00000000 	nop
  43ee60:	8fdc0010 	lw	gp,16(s8)
  43ee64:	00000000 	nop
  43ee68:	1000ffd0 	b	43edac <generate_skeyids_iv+0x8f0>
  43ee6c:	00000000 	nop
	    }
	    k = keytemp;
  43ee70:	27c20258 	addiu	v0,s8,600
  43ee74:	afc20250 	sw	v0,592(s8)
	}
	clonereplacechunk(st->st_enc_key, k, keysize, "st_enc_key");
  43ee78:	8fc20430 	lw	v0,1072(s8)
  43ee7c:	00000000 	nop
  43ee80:	8c420250 	lw	v0,592(v0)
  43ee84:	00000000 	nop
  43ee88:	10400009 	beqz	v0,43eeb0 <generate_skeyids_iv+0x9f4>
  43ee8c:	00000000 	nop
  43ee90:	8fc20430 	lw	v0,1072(s8)
  43ee94:	00000000 	nop
  43ee98:	8c440250 	lw	a0,592(v0)
  43ee9c:	8f998094 	lw	t9,-32620(gp)
  43eea0:	00000000 	nop
  43eea4:	0320f809 	jalr	t9
  43eea8:	00000000 	nop
  43eeac:	8fdc0010 	lw	gp,16(s8)
  43eeb0:	8fd00430 	lw	s0,1072(s8)
  43eeb4:	8fc30254 	lw	v1,596(s8)
  43eeb8:	8fc20430 	lw	v0,1072(s8)
  43eebc:	00000000 	nop
  43eec0:	ac430254 	sw	v1,596(v0)
  43eec4:	8fc40250 	lw	a0,592(s8)
  43eec8:	00602821 	move	a1,v1
  43eecc:	8f86802c 	lw	a2,-32724(gp)
  43eed0:	00000000 	nop
  43eed4:	24c6df30 	addiu	a2,a2,-8400
  43eed8:	8f998c04 	lw	t9,-29692(gp)
  43eedc:	00000000 	nop
  43eee0:	0320f809 	jalr	t9
  43eee4:	00000000 	nop
  43eee8:	8fdc0010 	lw	gp,16(s8)
  43eeec:	ae020250 	sw	v0,592(s0)
    }

    DBG(DBG_CRYPT,
  43eef0:	8f8284f8 	lw	v0,-31496(gp)
  43eef4:	00000000 	nop
  43eef8:	8c420000 	lw	v0,0(v0)
  43eefc:	00000000 	nop
  43ef00:	30420002 	andi	v0,v0,0x2
  43ef04:	1040005b 	beqz	v0,43f074 <generate_skeyids_iv+0xbb8>
  43ef08:	00000000 	nop
  43ef0c:	8f84802c 	lw	a0,-32724(gp)
  43ef10:	00000000 	nop
  43ef14:	2484df3c 	addiu	a0,a0,-8388
  43ef18:	8fc20430 	lw	v0,1072(s8)
  43ef1c:	00000000 	nop
  43ef20:	8c450164 	lw	a1,356(v0)
  43ef24:	8fc20430 	lw	v0,1072(s8)
  43ef28:	00000000 	nop
  43ef2c:	8c460168 	lw	a2,360(v0)
  43ef30:	8f9984ec 	lw	t9,-31508(gp)
  43ef34:	00000000 	nop
  43ef38:	0320f809 	jalr	t9
  43ef3c:	00000000 	nop
  43ef40:	8fdc0010 	lw	gp,16(s8)
  43ef44:	00000000 	nop
  43ef48:	8f84802c 	lw	a0,-32724(gp)
  43ef4c:	00000000 	nop
  43ef50:	2484df48 	addiu	a0,a0,-8376
  43ef54:	8fc20430 	lw	v0,1072(s8)
  43ef58:	00000000 	nop
  43ef5c:	8c45016c 	lw	a1,364(v0)
  43ef60:	8fc20430 	lw	v0,1072(s8)
  43ef64:	00000000 	nop
  43ef68:	8c460170 	lw	a2,368(v0)
  43ef6c:	8f9984ec 	lw	t9,-31508(gp)
  43ef70:	00000000 	nop
  43ef74:	0320f809 	jalr	t9
  43ef78:	00000000 	nop
  43ef7c:	8fdc0010 	lw	gp,16(s8)
  43ef80:	00000000 	nop
  43ef84:	8f84802c 	lw	a0,-32724(gp)
  43ef88:	00000000 	nop
  43ef8c:	2484df54 	addiu	a0,a0,-8364
  43ef90:	8fc20430 	lw	v0,1072(s8)
  43ef94:	00000000 	nop
  43ef98:	8c450174 	lw	a1,372(v0)
  43ef9c:	8fc20430 	lw	v0,1072(s8)
  43efa0:	00000000 	nop
  43efa4:	8c460178 	lw	a2,376(v0)
  43efa8:	8f9984ec 	lw	t9,-31508(gp)
  43efac:	00000000 	nop
  43efb0:	0320f809 	jalr	t9
  43efb4:	00000000 	nop
  43efb8:	8fdc0010 	lw	gp,16(s8)
  43efbc:	00000000 	nop
  43efc0:	8f84802c 	lw	a0,-32724(gp)
  43efc4:	00000000 	nop
  43efc8:	2484df60 	addiu	a0,a0,-8352
  43efcc:	8fc20430 	lw	v0,1072(s8)
  43efd0:	00000000 	nop
  43efd4:	8c45017c 	lw	a1,380(v0)
  43efd8:	8fc20430 	lw	v0,1072(s8)
  43efdc:	00000000 	nop
  43efe0:	8c460180 	lw	a2,384(v0)
  43efe4:	8f9984ec 	lw	t9,-31508(gp)
  43efe8:	00000000 	nop
  43efec:	0320f809 	jalr	t9
  43eff0:	00000000 	nop
  43eff4:	8fdc0010 	lw	gp,16(s8)
  43eff8:	00000000 	nop
  43effc:	8f84802c 	lw	a0,-32724(gp)
  43f000:	00000000 	nop
  43f004:	2484df6c 	addiu	a0,a0,-8340
  43f008:	8fc20430 	lw	v0,1072(s8)
  43f00c:	00000000 	nop
  43f010:	8c450250 	lw	a1,592(v0)
  43f014:	8fc20430 	lw	v0,1072(s8)
  43f018:	00000000 	nop
  43f01c:	8c460254 	lw	a2,596(v0)
  43f020:	8f9984ec 	lw	t9,-31508(gp)
  43f024:	00000000 	nop
  43f028:	0320f809 	jalr	t9
  43f02c:	00000000 	nop
  43f030:	8fdc0010 	lw	gp,16(s8)
  43f034:	8fc20430 	lw	v0,1072(s8)
  43f038:	00000000 	nop
  43f03c:	244201c4 	addiu	v0,v0,452
  43f040:	8f84802c 	lw	a0,-32724(gp)
  43f044:	00000000 	nop
  43f048:	2484df78 	addiu	a0,a0,-8328
  43f04c:	00402821 	move	a1,v0
  43f050:	8fc20430 	lw	v0,1072(s8)
  43f054:	00000000 	nop
  43f058:	8c460248 	lw	a2,584(v0)
  43f05c:	8f9984ec 	lw	t9,-31508(gp)
  43f060:	00000000 	nop
  43f064:	0320f809 	jalr	t9
  43f068:	00000000 	nop
  43f06c:	8fdc0010 	lw	gp,16(s8)
  43f070:	00000000 	nop
	DBG_dump_chunk("Skeyid:  ", st->st_skeyid);
	DBG_dump_chunk("Skeyid_d:", st->st_skeyid_d);
	DBG_dump_chunk("Skeyid_a:", st->st_skeyid_a);
	DBG_dump_chunk("Skeyid_e:", st->st_skeyid_e);
	DBG_dump_chunk("enc key:", st->st_enc_key);
	DBG_dump("IV:", st->st_new_iv, st->st_new_iv_len));
    return TRUE;
  43f074:	24020001 	li	v0,1
}
  43f078:	03c0e821 	move	sp,s8
  43f07c:	8fbf042c 	lw	ra,1068(sp)
  43f080:	8fbe0428 	lw	s8,1064(sp)
  43f084:	8fb00420 	lw	s0,1056(sp)
  43f088:	27bd0430 	addiu	sp,sp,1072
  43f08c:	03e00008 	jr	ra
  43f090:	00000000 	nop

0043f094 <main_mode_hash_body>:
  43f094:	3c1c0fbd 	lui	gp,0xfbd
  43f098:	279cd8dc 	addiu	gp,gp,-10020
  43f09c:	0399e021 	addu	gp,gp,t9
  43f0a0:	27bdffd0 	addiu	sp,sp,-48
  43f0a4:	afbc0010 	sw	gp,16(sp)
  43f0a8:	afbf0028 	sw	ra,40(sp)
  43f0ac:	afbe0024 	sw	s8,36(sp)
  43f0b0:	afbc0020 	sw	gp,32(sp)
  43f0b4:	03a0f021 	move	s8,sp
  43f0b8:	afc40030 	sw	a0,48(s8)
  43f0bc:	afc50034 	sw	a1,52(s8)
  43f0c0:	afc60038 	sw	a2,56(s8)
  43f0c4:	afc7003c 	sw	a3,60(s8)

/* Generate HASH_I or HASH_R for ISAKMP Phase I.
 * This will *not* generate other hash payloads (eg. Phase II or Quick Mode,
 * New Group Mode, or ISAKMP Informational Exchanges).
 * If the hashi argument is TRUE, generate HASH_I; if FALSE generate HASH_R.
 * If hashus argument is TRUE, we're generating a hash for our end.
 * See RFC2409 IKE 5.
 *
 * Generating the SIG_I and SIG_R for DSS is an odd perversion of this:
 * Most of the logic is the same, but SHA-1 is used in place of HMAC-whatever.
 * The extensive common logic is embodied in main_mode_hash_body().
 * See draft-ietf-ipsec-ike-01.txt 4.1 and 6.1.1.2
 */

typedef void (*hash_update_t)(union hash_ctx *, const u_char *, size_t) ;
static void
main_mode_hash_body(struct state *st
, bool hashi	/* Initiator? */
, const pb_stream *idpl	/* ID payload, as PBS */
, union hash_ctx *ctx
, void (*hash_update_void)(void *, const u_char *input, size_t))
{
#define HASH_UPDATE_T (union hash_ctx *, const u_char *input, unsigned int len)
    hash_update_t hash_update=(hash_update_t)  hash_update_void;
  43f0c8:	8fc20040 	lw	v0,64(s8)
  43f0cc:	00000000 	nop
  43f0d0:	afc20018 	sw	v0,24(s8)
#if 0	/* if desperate to debug hashing */
#   define hash_update(ctx, input, len) { \
	DBG_dump("hash input", input, len); \
	(hash_update)(ctx, input, len); \
	}
#endif

#   define hash_update_chunk(ctx, ch) hash_update((ctx), (ch).ptr, (ch).len)

    if (hashi)
  43f0d4:	8fc20034 	lw	v0,52(s8)
  43f0d8:	00000000 	nop
  43f0dc:	10400038 	beqz	v0,43f1c0 <main_mode_hash_body+0x12c>
  43f0e0:	00000000 	nop
    {
	hash_update_chunk(ctx, st->st_gi);
  43f0e4:	8fc4003c 	lw	a0,60(s8)
  43f0e8:	8fc20030 	lw	v0,48(s8)
  43f0ec:	00000000 	nop
  43f0f0:	8c4500e8 	lw	a1,232(v0)
  43f0f4:	8fc20030 	lw	v0,48(s8)
  43f0f8:	00000000 	nop
  43f0fc:	8c4600ec 	lw	a2,236(v0)
  43f100:	8fc20018 	lw	v0,24(s8)
  43f104:	00000000 	nop
  43f108:	0040c821 	move	t9,v0
  43f10c:	0320f809 	jalr	t9
  43f110:	00000000 	nop
  43f114:	8fdc0010 	lw	gp,16(s8)
  43f118:	00000000 	nop
	hash_update_chunk(ctx, st->st_gr);
  43f11c:	8fc4003c 	lw	a0,60(s8)
  43f120:	8fc20030 	lw	v0,48(s8)
  43f124:	00000000 	nop
  43f128:	8c450100 	lw	a1,256(v0)
  43f12c:	8fc20030 	lw	v0,48(s8)
  43f130:	00000000 	nop
  43f134:	8c460104 	lw	a2,260(v0)
  43f138:	8fc20018 	lw	v0,24(s8)
  43f13c:	00000000 	nop
  43f140:	0040c821 	move	t9,v0
  43f144:	0320f809 	jalr	t9
  43f148:	00000000 	nop
  43f14c:	8fdc0010 	lw	gp,16(s8)
  43f150:	00000000 	nop
	hash_update(ctx, st->st_icookie, COOKIE_SIZE);
  43f154:	8fc20030 	lw	v0,48(s8)
  43f158:	00000000 	nop
  43f15c:	244200f0 	addiu	v0,v0,240
  43f160:	8fc4003c 	lw	a0,60(s8)
  43f164:	00402821 	move	a1,v0
  43f168:	24060008 	li	a2,8
  43f16c:	8fc20018 	lw	v0,24(s8)
  43f170:	00000000 	nop
  43f174:	0040c821 	move	t9,v0
  43f178:	0320f809 	jalr	t9
  43f17c:	00000000 	nop
  43f180:	8fdc0010 	lw	gp,16(s8)
  43f184:	00000000 	nop
	hash_update(ctx, st->st_rcookie, COOKIE_SIZE);
  43f188:	8fc20030 	lw	v0,48(s8)
  43f18c:	00000000 	nop
  43f190:	24420108 	addiu	v0,v0,264
  43f194:	8fc4003c 	lw	a0,60(s8)
  43f198:	00402821 	move	a1,v0
  43f19c:	24060008 	li	a2,8
  43f1a0:	8fc20018 	lw	v0,24(s8)
  43f1a4:	00000000 	nop
  43f1a8:	0040c821 	move	t9,v0
  43f1ac:	0320f809 	jalr	t9
  43f1b0:	00000000 	nop
  43f1b4:	8fdc0010 	lw	gp,16(s8)
  43f1b8:	10000037 	b	43f298 <main_mode_hash_body+0x204>
  43f1bc:	00000000 	nop
    }
    else
    {
	hash_update_chunk(ctx, st->st_gr);
  43f1c0:	8fc4003c 	lw	a0,60(s8)
  43f1c4:	8fc20030 	lw	v0,48(s8)
  43f1c8:	00000000 	nop
  43f1cc:	8c450100 	lw	a1,256(v0)
  43f1d0:	8fc20030 	lw	v0,48(s8)
  43f1d4:	00000000 	nop
  43f1d8:	8c460104 	lw	a2,260(v0)
  43f1dc:	8fc20018 	lw	v0,24(s8)
  43f1e0:	00000000 	nop
  43f1e4:	0040c821 	move	t9,v0
  43f1e8:	0320f809 	jalr	t9
  43f1ec:	00000000 	nop
  43f1f0:	8fdc0010 	lw	gp,16(s8)
  43f1f4:	00000000 	nop
	hash_update_chunk(ctx, st->st_gi);
  43f1f8:	8fc4003c 	lw	a0,60(s8)
  43f1fc:	8fc20030 	lw	v0,48(s8)
  43f200:	00000000 	nop
  43f204:	8c4500e8 	lw	a1,232(v0)
  43f208:	8fc20030 	lw	v0,48(s8)
  43f20c:	00000000 	nop
  43f210:	8c4600ec 	lw	a2,236(v0)
  43f214:	8fc20018 	lw	v0,24(s8)
  43f218:	00000000 	nop
  43f21c:	0040c821 	move	t9,v0
  43f220:	0320f809 	jalr	t9
  43f224:	00000000 	nop
  43f228:	8fdc0010 	lw	gp,16(s8)
  43f22c:	00000000 	nop
	hash_update(ctx, st->st_rcookie, COOKIE_SIZE);
  43f230:	8fc20030 	lw	v0,48(s8)
  43f234:	00000000 	nop
  43f238:	24420108 	addiu	v0,v0,264
  43f23c:	8fc4003c 	lw	a0,60(s8)
  43f240:	00402821 	move	a1,v0
  43f244:	24060008 	li	a2,8
  43f248:	8fc20018 	lw	v0,24(s8)
  43f24c:	00000000 	nop
  43f250:	0040c821 	move	t9,v0
  43f254:	0320f809 	jalr	t9
  43f258:	00000000 	nop
  43f25c:	8fdc0010 	lw	gp,16(s8)
  43f260:	00000000 	nop
	hash_update(ctx, st->st_icookie, COOKIE_SIZE);
  43f264:	8fc20030 	lw	v0,48(s8)
  43f268:	00000000 	nop
  43f26c:	244200f0 	addiu	v0,v0,240
  43f270:	8fc4003c 	lw	a0,60(s8)
  43f274:	00402821 	move	a1,v0
  43f278:	24060008 	li	a2,8
  43f27c:	8fc20018 	lw	v0,24(s8)
  43f280:	00000000 	nop
  43f284:	0040c821 	move	t9,v0
  43f288:	0320f809 	jalr	t9
  43f28c:	00000000 	nop
  43f290:	8fdc0010 	lw	gp,16(s8)
  43f294:	00000000 	nop
    }

    DBG(DBG_CRYPT, DBG_log("hashing %d bytes of SA"
  43f298:	8f8284f8 	lw	v0,-31496(gp)
  43f29c:	00000000 	nop
  43f2a0:	8c420000 	lw	v0,0(v0)
  43f2a4:	00000000 	nop
  43f2a8:	30420002 	andi	v0,v0,0x2
  43f2ac:	10400010 	beqz	v0,43f2f0 <main_mode_hash_body+0x25c>
  43f2b0:	00000000 	nop
  43f2b4:	8fc20030 	lw	v0,48(s8)
  43f2b8:	00000000 	nop
  43f2bc:	8c420160 	lw	v0,352(v0)
  43f2c0:	00000000 	nop
  43f2c4:	2442fffc 	addiu	v0,v0,-4
  43f2c8:	8f84802c 	lw	a0,-32724(gp)
  43f2cc:	00000000 	nop
  43f2d0:	2484df9c 	addiu	a0,a0,-8292
  43f2d4:	00402821 	move	a1,v0
  43f2d8:	8f9983b8 	lw	t9,-31816(gp)
  43f2dc:	00000000 	nop
  43f2e0:	0320f809 	jalr	t9
  43f2e4:	00000000 	nop
  43f2e8:	8fdc0010 	lw	gp,16(s8)
  43f2ec:	00000000 	nop
	, (int)(st->st_p1isa.len - sizeof(struct isakmp_generic))));

    /* SA_b */
    hash_update(ctx, st->st_p1isa.ptr + sizeof(struct isakmp_generic)
  43f2f0:	8fc20030 	lw	v0,48(s8)
  43f2f4:	00000000 	nop
  43f2f8:	8c42015c 	lw	v0,348(v0)
  43f2fc:	00000000 	nop
  43f300:	24430004 	addiu	v1,v0,4
  43f304:	8fc20030 	lw	v0,48(s8)
  43f308:	00000000 	nop
  43f30c:	8c420160 	lw	v0,352(v0)
  43f310:	00000000 	nop
  43f314:	2442fffc 	addiu	v0,v0,-4
  43f318:	8fc4003c 	lw	a0,60(s8)
  43f31c:	00602821 	move	a1,v1
  43f320:	00403021 	move	a2,v0
  43f324:	8fc20018 	lw	v0,24(s8)
  43f328:	00000000 	nop
  43f32c:	0040c821 	move	t9,v0
  43f330:	0320f809 	jalr	t9
  43f334:	00000000 	nop
  43f338:	8fdc0010 	lw	gp,16(s8)
  43f33c:	00000000 	nop
	, st->st_p1isa.len - sizeof(struct isakmp_generic));

    /* Hash identification payload, without generic payload header.
     * We used to reconstruct ID Payload for this purpose, but now
     * we use the bytes as they appear on the wire to avoid
     * "spelling problems".
     */
    hash_update(ctx
  43f340:	8fc20038 	lw	v0,56(s8)
  43f344:	00000000 	nop
  43f348:	8c42000c 	lw	v0,12(v0)
  43f34c:	00000000 	nop
  43f350:	24450004 	addiu	a1,v0,4
  43f354:	8fc20038 	lw	v0,56(s8)
  43f358:	00000000 	nop
  43f35c:	8c430010 	lw	v1,16(v0)
  43f360:	8fc20038 	lw	v0,56(s8)
  43f364:	00000000 	nop
  43f368:	8c42000c 	lw	v0,12(v0)
  43f36c:	00000000 	nop
  43f370:	00621023 	subu	v0,v1,v0
  43f374:	2442fffc 	addiu	v0,v0,-4
  43f378:	8fc4003c 	lw	a0,60(s8)
  43f37c:	00403021 	move	a2,v0
  43f380:	8fc20018 	lw	v0,24(s8)
  43f384:	00000000 	nop
  43f388:	0040c821 	move	t9,v0
  43f38c:	0320f809 	jalr	t9
  43f390:	00000000 	nop
  43f394:	8fdc0010 	lw	gp,16(s8)
  43f398:	00000000 	nop
	, idpl->start + sizeof(struct isakmp_generic)
	, pbs_offset(idpl) - sizeof(struct isakmp_generic));

#   undef hash_update_chunk
#   undef hash_update
}
  43f39c:	03c0e821 	move	sp,s8
  43f3a0:	8fbf0028 	lw	ra,40(sp)
  43f3a4:	8fbe0024 	lw	s8,36(sp)
  43f3a8:	27bd0030 	addiu	sp,sp,48
  43f3ac:	03e00008 	jr	ra
  43f3b0:	00000000 	nop

0043f3b4 <main_mode_hash>:
  43f3b4:	3c1c0fbd 	lui	gp,0xfbd
  43f3b8:	279cd5bc 	addiu	gp,gp,-10820
  43f3bc:	0399e021 	addu	gp,gp,t9
  43f3c0:	27bdfe70 	addiu	sp,sp,-400
  43f3c4:	afbc0018 	sw	gp,24(sp)
  43f3c8:	afbf0188 	sw	ra,392(sp)
  43f3cc:	afbe0184 	sw	s8,388(sp)
  43f3d0:	afbc0180 	sw	gp,384(sp)
  43f3d4:	03a0f021 	move	s8,sp
  43f3d8:	afc40190 	sw	a0,400(s8)
  43f3dc:	afc50194 	sw	a1,404(s8)
  43f3e0:	afc60198 	sw	a2,408(s8)
  43f3e4:	afc7019c 	sw	a3,412(s8)

static size_t	/* length of hash */
main_mode_hash(struct state *st
, u_char *hash_val	/* resulting bytes */
, bool hashi	/* Initiator? */
, const pb_stream *idpl)	/* ID payload, as PBS; cur must be at end */
{
    struct hmac_ctx ctx;

    hmac_init_chunk(&ctx, st->st_oakley.hasher, st->st_skeyid);
  43f3e8:	27c40020 	addiu	a0,s8,32
  43f3ec:	8fc20190 	lw	v0,400(s8)
  43f3f0:	00000000 	nop
  43f3f4:	8c450028 	lw	a1,40(v0)
  43f3f8:	8fc20190 	lw	v0,400(s8)
  43f3fc:	00000000 	nop
  43f400:	8c460164 	lw	a2,356(v0)
  43f404:	8fc20190 	lw	v0,400(s8)
  43f408:	00000000 	nop
  43f40c:	8c470168 	lw	a3,360(v0)
  43f410:	8f9989e0 	lw	t9,-30240(gp)
  43f414:	00000000 	nop
  43f418:	0320f809 	jalr	t9
  43f41c:	00000000 	nop
  43f420:	8fdc0018 	lw	gp,24(s8)
  43f424:	00000000 	nop
    main_mode_hash_body(st, hashi, idpl, &ctx.hash_ctx, ctx.h->hash_update);
  43f428:	8fc20020 	lw	v0,32(s8)
  43f42c:	00000000 	nop
  43f430:	8c420014 	lw	v0,20(v0)
  43f434:	00000000 	nop
  43f438:	afa20010 	sw	v0,16(sp)
  43f43c:	8fc40190 	lw	a0,400(s8)
  43f440:	8fc50198 	lw	a1,408(s8)
  43f444:	8fc6019c 	lw	a2,412(s8)
  43f448:	27c70028 	addiu	a3,s8,40
  43f44c:	8f998034 	lw	t9,-32716(gp)
  43f450:	00000000 	nop
  43f454:	2739f094 	addiu	t9,t9,-3948
  43f458:	00000000 	nop
  43f45c:	0320f809 	jalr	t9
  43f460:	00000000 	nop
  43f464:	8fdc0018 	lw	gp,24(s8)
  43f468:	00000000 	nop
    hmac_final(hash_val, &ctx);
  43f46c:	8fc40194 	lw	a0,404(s8)
  43f470:	27c50020 	addiu	a1,s8,32
  43f474:	8f998728 	lw	t9,-30936(gp)
  43f478:	00000000 	nop
  43f47c:	0320f809 	jalr	t9
  43f480:	00000000 	nop
  43f484:	8fdc0018 	lw	gp,24(s8)
  43f488:	00000000 	nop
    return ctx.hmac_digest_size;
  43f48c:	8fc20024 	lw	v0,36(s8)
  43f490:	00000000 	nop
}
  43f494:	03c0e821 	move	sp,s8
  43f498:	8fbf0188 	lw	ra,392(sp)
  43f49c:	8fbe0184 	lw	s8,388(sp)
  43f4a0:	27bd0190 	addiu	sp,sp,400
  43f4a4:	03e00008 	jr	ra
  43f4a8:	00000000 	nop

0043f4ac <RSA_sign_hash>:
  43f4ac:	3c1c0fbd 	lui	gp,0xfbd
  43f4b0:	279cd4c4 	addiu	gp,gp,-11068
  43f4b4:	0399e021 	addu	gp,gp,t9
  43f4b8:	27bdffa0 	addiu	sp,sp,-96
  43f4bc:	afbc0010 	sw	gp,16(sp)
  43f4c0:	afbf0058 	sw	ra,88(sp)
  43f4c4:	afbe0054 	sw	s8,84(sp)
  43f4c8:	afbc0050 	sw	gp,80(sp)
  43f4cc:	03a0f021 	move	s8,sp
  43f4d0:	afc40060 	sw	a0,96(s8)
  43f4d4:	afc50064 	sw	a1,100(s8)
  43f4d8:	afc60068 	sw	a2,104(s8)
  43f4dc:	afc7006c 	sw	a3,108(s8)

#if 0	/* only needed for DSS */
static void
main_mode_sha1(struct state *st
, u_char *hash_val	/* resulting bytes */
, size_t *hash_len	/* length of hash */
, bool hashi	/* Initiator? */
, const pb_stream *idpl)	/* ID payload, as PBS */
{
    union hash_ctx ctx;

    SHA1Init(&ctx.ctx_sha1);
    SHA1Update(&ctx.ctx_sha1, st->st_skeyid.ptr, st->st_skeyid.len);
    *hash_len = SHA1_DIGEST_SIZE;
    main_mode_hash_body(st, hashi, idpl, &ctx
	, (void (*)(union hash_ctx *, const u_char *, unsigned int))&SHA1Update);
    SHA1Final(hash_val, &ctx.ctx_sha1);
}
#endif

/* Create an RSA signature of a hash.
 * Poorly specified in draft-ietf-ipsec-ike-01.txt 6.1.1.2.
 * Use PKCS#1 version 1.5 encryption of hash (called
 * RSAES-PKCS1-V1_5) in PKCS#2.
 */
static size_t
RSA_sign_hash(struct connection *c
, u_char sig_val[RSA_MAX_OCTETS]
, const u_char *hash_val, size_t hash_len)
{
    const struct RSA_private_key *k = get_RSA_private_key(c);
  43f4e0:	8fc40060 	lw	a0,96(s8)
  43f4e4:	8f998704 	lw	t9,-30972(gp)
  43f4e8:	00000000 	nop
  43f4ec:	0320f809 	jalr	t9
  43f4f0:	00000000 	nop
  43f4f4:	8fdc0010 	lw	gp,16(s8)
  43f4f8:	afc20018 	sw	v0,24(s8)
    size_t sz;
    u_char *p = sig_val;
  43f4fc:	8fc20064 	lw	v0,100(s8)
  43f500:	00000000 	nop
  43f504:	afc20020 	sw	v0,32(s8)
    size_t padlen;
    mpz_t t1, t2;
    chunk_t ch;

    if (k == NULL)
  43f508:	8fc20018 	lw	v0,24(s8)
  43f50c:	00000000 	nop
  43f510:	14400004 	bnez	v0,43f524 <RSA_sign_hash+0x78>
  43f514:	00000000 	nop
	return 0;	/* failure: no key to use */
  43f518:	00001021 	move	v0,zero
  43f51c:	1000011e 	b	43f998 <RSA_sign_hash+0x4ec>
  43f520:	00000000 	nop
    sz = k->pub.k;
  43f524:	8fc20018 	lw	v0,24(s8)
  43f528:	00000000 	nop
  43f52c:	8c42000c 	lw	v0,12(v0)
  43f530:	00000000 	nop
  43f534:	afc2001c 	sw	v0,28(s8)
    passert(RSA_MIN_OCTETS <= sz && 4 + hash_len < sz && sz <= RSA_MAX_OCTETS);
  43f538:	8fc2001c 	lw	v0,28(s8)
  43f53c:	00000000 	nop
  43f540:	2c420040 	sltiu	v0,v0,64
  43f544:	14400010 	bnez	v0,43f588 <RSA_sign_hash+0xdc>
  43f548:	00000000 	nop
  43f54c:	8fc2006c 	lw	v0,108(s8)
  43f550:	00000000 	nop
  43f554:	24430004 	addiu	v1,v0,4
  43f558:	8fc2001c 	lw	v0,28(s8)
  43f55c:	00000000 	nop
  43f560:	0062102b 	sltu	v0,v1,v0
  43f564:	10400008 	beqz	v0,43f588 <RSA_sign_hash+0xdc>
  43f568:	00000000 	nop
  43f56c:	8fc2001c 	lw	v0,28(s8)
  43f570:	00000000 	nop
  43f574:	2c420201 	sltiu	v0,v0,513
  43f578:	10400003 	beqz	v0,43f588 <RSA_sign_hash+0xdc>
  43f57c:	00000000 	nop
  43f580:	1000000e 	b	43f5bc <RSA_sign_hash+0x110>
  43f584:	00000000 	nop
  43f588:	8f84802c 	lw	a0,-32724(gp)
  43f58c:	00000000 	nop
  43f590:	2484dfb4 	addiu	a0,a0,-8268
  43f594:	8f85802c 	lw	a1,-32724(gp)
  43f598:	00000000 	nop
  43f59c:	24a5d59c 	addiu	a1,a1,-10852
  43f5a0:	2406060e 	li	a2,1550
  43f5a4:	8f998bb8 	lw	t9,-29768(gp)
  43f5a8:	00000000 	nop
  43f5ac:	0320f809 	jalr	t9
  43f5b0:	00000000 	nop
  43f5b4:	8fdc0010 	lw	gp,16(s8)
  43f5b8:	00000000 	nop

    DBG(DBG_CONTROL | DBG_CRYPT
  43f5bc:	8f8284f8 	lw	v0,-31496(gp)
  43f5c0:	00000000 	nop
  43f5c4:	8c420000 	lw	v0,0(v0)
  43f5c8:	00000000 	nop
  43f5cc:	30420012 	andi	v0,v0,0x12
  43f5d0:	1040000b 	beqz	v0,43f600 <RSA_sign_hash+0x154>
  43f5d4:	00000000 	nop
  43f5d8:	8f84802c 	lw	a0,-32724(gp)
  43f5dc:	00000000 	nop
  43f5e0:	2484dff8 	addiu	a0,a0,-8200
  43f5e4:	8fc50018 	lw	a1,24(s8)
  43f5e8:	8f9983b8 	lw	t9,-31816(gp)
  43f5ec:	00000000 	nop
  43f5f0:	0320f809 	jalr	t9
  43f5f4:	00000000 	nop
  43f5f8:	8fdc0010 	lw	gp,16(s8)
  43f5fc:	00000000 	nop
	, DBG_log("signing hash with RSA Key *%s", k->pub.keyid));

    /* PKCS#1 v1.5 8.1 encryption-block formatting */
    *p++ = 0x00;
  43f600:	27c40020 	addiu	a0,s8,32
  43f604:	8c820000 	lw	v0,0(a0)
  43f608:	00000000 	nop
  43f60c:	00401821 	move	v1,v0
  43f610:	a0600000 	sb	zero,0(v1)
  43f614:	24420001 	addiu	v0,v0,1
  43f618:	ac820000 	sw	v0,0(a0)
    *p++ = 0x01;	/* BT (block type) 01 */
  43f61c:	27c50020 	addiu	a1,s8,32
  43f620:	8ca20000 	lw	v0,0(a1)
  43f624:	00000000 	nop
  43f628:	00402021 	move	a0,v0
  43f62c:	24030001 	li	v1,1
  43f630:	a0830000 	sb	v1,0(a0)
  43f634:	24420001 	addiu	v0,v0,1
  43f638:	aca20000 	sw	v0,0(a1)
    padlen = sz - 3 - hash_len;
  43f63c:	8fc3001c 	lw	v1,28(s8)
  43f640:	8fc2006c 	lw	v0,108(s8)
  43f644:	00000000 	nop
  43f648:	00621023 	subu	v0,v1,v0
  43f64c:	2442fffd 	addiu	v0,v0,-3
  43f650:	afc20024 	sw	v0,36(s8)
    memset(p, 0xFF, padlen);
  43f654:	8fc40020 	lw	a0,32(s8)
  43f658:	240500ff 	li	a1,255
  43f65c:	8fc60024 	lw	a2,36(s8)
  43f660:	8f998500 	lw	t9,-31488(gp)
  43f664:	00000000 	nop
  43f668:	0320f809 	jalr	t9
  43f66c:	00000000 	nop
  43f670:	8fdc0010 	lw	gp,16(s8)
  43f674:	00000000 	nop
    p += padlen;
  43f678:	8fc30020 	lw	v1,32(s8)
  43f67c:	8fc20024 	lw	v0,36(s8)
  43f680:	00000000 	nop
  43f684:	00621021 	addu	v0,v1,v0
  43f688:	afc20020 	sw	v0,32(s8)
    *p++ = 0x00;
  43f68c:	27c40020 	addiu	a0,s8,32
  43f690:	8c820000 	lw	v0,0(a0)
  43f694:	00000000 	nop
  43f698:	00401821 	move	v1,v0
  43f69c:	a0600000 	sb	zero,0(v1)
  43f6a0:	24420001 	addiu	v0,v0,1
  43f6a4:	ac820000 	sw	v0,0(a0)
    memcpy(p, hash_val, hash_len);
  43f6a8:	8fc40020 	lw	a0,32(s8)
  43f6ac:	8fc50068 	lw	a1,104(s8)
  43f6b0:	8fc6006c 	lw	a2,108(s8)
  43f6b4:	8f998a30 	lw	t9,-30160(gp)
  43f6b8:	00000000 	nop
  43f6bc:	0320f809 	jalr	t9
  43f6c0:	00000000 	nop
  43f6c4:	8fdc0010 	lw	gp,16(s8)
  43f6c8:	00000000 	nop
    passert(p + hash_len - sig_val == (ptrdiff_t)sz);
  43f6cc:	8fc30020 	lw	v1,32(s8)
  43f6d0:	8fc2006c 	lw	v0,108(s8)
  43f6d4:	00000000 	nop
  43f6d8:	00621821 	addu	v1,v1,v0
  43f6dc:	8fc20064 	lw	v0,100(s8)
  43f6e0:	00000000 	nop
  43f6e4:	00621823 	subu	v1,v1,v0
  43f6e8:	8fc2001c 	lw	v0,28(s8)
  43f6ec:	00000000 	nop
  43f6f0:	1062000e 	beq	v1,v0,43f72c <RSA_sign_hash+0x280>
  43f6f4:	00000000 	nop
  43f6f8:	8f84802c 	lw	a0,-32724(gp)
  43f6fc:	00000000 	nop
  43f700:	2484e018 	addiu	a0,a0,-8168
  43f704:	8f85802c 	lw	a1,-32724(gp)
  43f708:	00000000 	nop
  43f70c:	24a5d59c 	addiu	a1,a1,-10852
  43f710:	2406061b 	li	a2,1563
  43f714:	8f998bb8 	lw	t9,-29768(gp)
  43f718:	00000000 	nop
  43f71c:	0320f809 	jalr	t9
  43f720:	00000000 	nop
  43f724:	8fdc0010 	lw	gp,16(s8)
  43f728:	00000000 	nop

    /* PKCS#1 v1.5 8.2 octet-string-to-integer conversion */
    n_to_mpz(t1, sig_val, sz);	/* (could skip leading 0x00) */
  43f72c:	27c40028 	addiu	a0,s8,40
  43f730:	8fc50064 	lw	a1,100(s8)
  43f734:	8fc6001c 	lw	a2,28(s8)
  43f738:	8f998358 	lw	t9,-31912(gp)
  43f73c:	00000000 	nop
  43f740:	0320f809 	jalr	t9
  43f744:	00000000 	nop
  43f748:	8fdc0010 	lw	gp,16(s8)
  43f74c:	00000000 	nop

    /* PKCS#1 v1.5 8.3 RSA computation y = x^c mod n
     * Better described in PKCS#1 v2.0 5.1 RSADP.
     * There are two methods, depending on the form of the private key.
     * We use the one based on the Chinese Remainder Theorem.
     */
    mpz_init(t2);
  43f750:	27c40038 	addiu	a0,s8,56
  43f754:	8f998734 	lw	t9,-30924(gp)
  43f758:	00000000 	nop
  43f75c:	0320f809 	jalr	t9
  43f760:	00000000 	nop
  43f764:	8fdc0010 	lw	gp,16(s8)
  43f768:	00000000 	nop

    mpz_powm(t2, t1, &k->dP, &k->p);	/* m1 = c^dP mod p */
  43f76c:	8fc20018 	lw	v0,24(s8)
  43f770:	00000000 	nop
  43f774:	2443004c 	addiu	v1,v0,76
  43f778:	8fc20018 	lw	v0,24(s8)
  43f77c:	00000000 	nop
  43f780:	24420034 	addiu	v0,v0,52
  43f784:	27c40038 	addiu	a0,s8,56
  43f788:	27c50028 	addiu	a1,s8,40
  43f78c:	00603021 	move	a2,v1
  43f790:	00403821 	move	a3,v0
  43f794:	8f9987c4 	lw	t9,-30780(gp)
  43f798:	00000000 	nop
  43f79c:	0320f809 	jalr	t9
  43f7a0:	00000000 	nop
  43f7a4:	8fdc0010 	lw	gp,16(s8)
  43f7a8:	00000000 	nop

    mpz_powm(t1, t1, &k->dQ, &k->q);	/* m2 = c^dQ mod Q */
  43f7ac:	8fc20018 	lw	v0,24(s8)
  43f7b0:	00000000 	nop
  43f7b4:	24430058 	addiu	v1,v0,88
  43f7b8:	8fc20018 	lw	v0,24(s8)
  43f7bc:	00000000 	nop
  43f7c0:	24420040 	addiu	v0,v0,64
  43f7c4:	27c40028 	addiu	a0,s8,40
  43f7c8:	27c50028 	addiu	a1,s8,40
  43f7cc:	00603021 	move	a2,v1
  43f7d0:	00403821 	move	a3,v0
  43f7d4:	8f9987c4 	lw	t9,-30780(gp)
  43f7d8:	00000000 	nop
  43f7dc:	0320f809 	jalr	t9
  43f7e0:	00000000 	nop
  43f7e4:	8fdc0010 	lw	gp,16(s8)
  43f7e8:	00000000 	nop

    mpz_sub(t2, t2, t1);	/* h = qInv (m1 - m2) mod p */
  43f7ec:	27c40038 	addiu	a0,s8,56
  43f7f0:	27c50038 	addiu	a1,s8,56
  43f7f4:	27c60028 	addiu	a2,s8,40
  43f7f8:	8f998088 	lw	t9,-32632(gp)
  43f7fc:	00000000 	nop
  43f800:	0320f809 	jalr	t9
  43f804:	00000000 	nop
  43f808:	8fdc0010 	lw	gp,16(s8)
  43f80c:	00000000 	nop
    mpz_mod(t2, t2, &k->p);
  43f810:	8fc20018 	lw	v0,24(s8)
  43f814:	00000000 	nop
  43f818:	24420034 	addiu	v0,v0,52
  43f81c:	27c40038 	addiu	a0,s8,56
  43f820:	27c50038 	addiu	a1,s8,56
  43f824:	00403021 	move	a2,v0
  43f828:	8f998bd8 	lw	t9,-29736(gp)
  43f82c:	00000000 	nop
  43f830:	0320f809 	jalr	t9
  43f834:	00000000 	nop
  43f838:	8fdc0010 	lw	gp,16(s8)
  43f83c:	00000000 	nop
    mpz_mul(t2, t2, &k->qInv);
  43f840:	8fc20018 	lw	v0,24(s8)
  43f844:	00000000 	nop
  43f848:	24420064 	addiu	v0,v0,100
  43f84c:	27c40038 	addiu	a0,s8,56
  43f850:	27c50038 	addiu	a1,s8,56
  43f854:	00403021 	move	a2,v0
  43f858:	8f99886c 	lw	t9,-30612(gp)
  43f85c:	00000000 	nop
  43f860:	0320f809 	jalr	t9
  43f864:	00000000 	nop
  43f868:	8fdc0010 	lw	gp,16(s8)
  43f86c:	00000000 	nop
    mpz_mod(t2, t2, &k->p);
  43f870:	8fc20018 	lw	v0,24(s8)
  43f874:	00000000 	nop
  43f878:	24420034 	addiu	v0,v0,52
  43f87c:	27c40038 	addiu	a0,s8,56
  43f880:	27c50038 	addiu	a1,s8,56
  43f884:	00403021 	move	a2,v0
  43f888:	8f998bd8 	lw	t9,-29736(gp)
  43f88c:	00000000 	nop
  43f890:	0320f809 	jalr	t9
  43f894:	00000000 	nop
  43f898:	8fdc0010 	lw	gp,16(s8)
  43f89c:	00000000 	nop

    mpz_mul(t2, t2, &k->q);	/* m = m2 + h q */
  43f8a0:	8fc20018 	lw	v0,24(s8)
  43f8a4:	00000000 	nop
  43f8a8:	24420040 	addiu	v0,v0,64
  43f8ac:	27c40038 	addiu	a0,s8,56
  43f8b0:	27c50038 	addiu	a1,s8,56
  43f8b4:	00403021 	move	a2,v0
  43f8b8:	8f99886c 	lw	t9,-30612(gp)
  43f8bc:	00000000 	nop
  43f8c0:	0320f809 	jalr	t9
  43f8c4:	00000000 	nop
  43f8c8:	8fdc0010 	lw	gp,16(s8)
  43f8cc:	00000000 	nop
    mpz_add(t1, t1, t2);
  43f8d0:	27c40028 	addiu	a0,s8,40
  43f8d4:	27c50028 	addiu	a1,s8,40
  43f8d8:	27c60038 	addiu	a2,s8,56
  43f8dc:	8f998550 	lw	t9,-31408(gp)
  43f8e0:	00000000 	nop
  43f8e4:	0320f809 	jalr	t9
  43f8e8:	00000000 	nop
  43f8ec:	8fdc0010 	lw	gp,16(s8)
  43f8f0:	00000000 	nop

    /* PKCS#1 v1.5 8.4 integer-to-octet-string conversion */
    ch = mpz_to_n(t1, sz);
  43f8f4:	27c40048 	addiu	a0,s8,72
  43f8f8:	27c50028 	addiu	a1,s8,40
  43f8fc:	8fc6001c 	lw	a2,28(s8)
  43f900:	8f9980c0 	lw	t9,-32576(gp)
  43f904:	00000000 	nop
  43f908:	0320f809 	jalr	t9
  43f90c:	00000000 	nop
  43f910:	8fdc0010 	lw	gp,16(s8)
  43f914:	00000000 	nop
    memcpy(sig_val, ch.ptr, sz);
  43f918:	8fc40064 	lw	a0,100(s8)
  43f91c:	8fc50048 	lw	a1,72(s8)
  43f920:	8fc6001c 	lw	a2,28(s8)
  43f924:	8f998a30 	lw	t9,-30160(gp)
  43f928:	00000000 	nop
  43f92c:	0320f809 	jalr	t9
  43f930:	00000000 	nop
  43f934:	8fdc0010 	lw	gp,16(s8)
  43f938:	00000000 	nop
    pfree(ch.ptr);
  43f93c:	8fc40048 	lw	a0,72(s8)
  43f940:	8f998094 	lw	t9,-32620(gp)
  43f944:	00000000 	nop
  43f948:	0320f809 	jalr	t9
  43f94c:	00000000 	nop
  43f950:	8fdc0010 	lw	gp,16(s8)
  43f954:	00000000 	nop

    mpz_clear(t1);
  43f958:	27c40028 	addiu	a0,s8,40
  43f95c:	8f998c40 	lw	t9,-29632(gp)
  43f960:	00000000 	nop
  43f964:	0320f809 	jalr	t9
  43f968:	00000000 	nop
  43f96c:	8fdc0010 	lw	gp,16(s8)
  43f970:	00000000 	nop
    mpz_clear(t2);
  43f974:	27c40038 	addiu	a0,s8,56
  43f978:	8f998c40 	lw	t9,-29632(gp)
  43f97c:	00000000 	nop
  43f980:	0320f809 	jalr	t9
  43f984:	00000000 	nop
  43f988:	8fdc0010 	lw	gp,16(s8)
  43f98c:	00000000 	nop
    return sz;
  43f990:	8fc2001c 	lw	v0,28(s8)
  43f994:	00000000 	nop
}
  43f998:	03c0e821 	move	sp,s8
  43f99c:	8fbf0058 	lw	ra,88(sp)
  43f9a0:	8fbe0054 	lw	s8,84(sp)
  43f9a4:	27bd0060 	addiu	sp,sp,96
  43f9a8:	03e00008 	jr	ra
  43f9ac:	00000000 	nop

0043f9b0 <try_RSA_signature>:
  43f9b0:	3c1c0fbd 	lui	gp,0xfbd
  43f9b4:	279ccfc0 	addiu	gp,gp,-12352
  43f9b8:	0399e021 	addu	gp,gp,t9
  43f9bc:	27bdfda8 	addiu	sp,sp,-600
  43f9c0:	afbc0010 	sw	gp,16(sp)
  43f9c4:	afbf0254 	sw	ra,596(sp)
  43f9c8:	afbe0250 	sw	s8,592(sp)
  43f9cc:	afbc024c 	sw	gp,588(sp)
  43f9d0:	afb00248 	sw	s0,584(sp)
  43f9d4:	03a0f021 	move	s8,sp
  43f9d8:	afc40258 	sw	a0,600(s8)
  43f9dc:	afc5025c 	sw	a1,604(s8)
  43f9e0:	afc60260 	sw	a2,608(s8)
  43f9e4:	afc70264 	sw	a3,612(s8)

/* Check a Main Mode RSA Signature against computed hash using RSA public key k.
 *
 * As a side effect, on success, the public key is copied into the
 * state object to record the authenticator.
 *
 * Can fail because wrong public key is used or because hash disagrees.
 * We distinguish because diagnostics should also.
 *
 * The result is NULL if the Signature checked out.
 * Otherwise, the first character of the result indicates
 * how far along failure occurred.  A greater character signifies
 * greater progress.
 *
 * Classes:
 * 0	reserved for caller
 * 1	SIG length doesn't match key length -- wrong key
 * 2-8	malformed ECB after decryption -- probably wrong key
 * 9	decrypted hash != computed hash -- probably correct key
 *
 * Although the math should be the same for generating and checking signatures,
 * it is not: the knowledge of the private key allows more efficient (i.e.
 * different) computation for encryption.
 */
static err_t
try_RSA_signature(const u_char hash_val[MAX_DIGEST_LEN], size_t hash_len
, const pb_stream *sig_pbs, const struct RSA_public_key *k
, struct state *st)
{
    const u_char *sig_val = sig_pbs->cur;
  43f9e8:	8fc20260 	lw	v0,608(s8)
  43f9ec:	00000000 	nop
  43f9f0:	8c420010 	lw	v0,16(v0)
  43f9f4:	00000000 	nop
  43f9f8:	afc20018 	sw	v0,24(s8)
    size_t sig_len = pbs_left(sig_pbs);
  43f9fc:	8fc20260 	lw	v0,608(s8)
  43fa00:	00000000 	nop
  43fa04:	8c430014 	lw	v1,20(v0)
  43fa08:	8fc20260 	lw	v0,608(s8)
  43fa0c:	00000000 	nop
  43fa10:	8c420010 	lw	v0,16(v0)
  43fa14:	00000000 	nop
  43fa18:	00621023 	subu	v0,v1,v0
  43fa1c:	afc2001c 	sw	v0,28(s8)
    u_char s[RSA_MAX_OCTETS];	/* for decrypted sig_val */
    u_char *hash_in_s = &s[sig_len - hash_len];
  43fa20:	8fc3001c 	lw	v1,28(s8)
  43fa24:	8fc2025c 	lw	v0,604(s8)
  43fa28:	00000000 	nop
  43fa2c:	00621823 	subu	v1,v1,v0
  43fa30:	27c20020 	addiu	v0,s8,32
  43fa34:	00431021 	addu	v0,v0,v1
  43fa38:	afc20220 	sw	v0,544(s8)

    /* decrypt the signature -- reversing RSA_sign_hash */
    if (sig_len != k->k)
  43fa3c:	8fc20264 	lw	v0,612(s8)
  43fa40:	00000000 	nop
  43fa44:	8c43000c 	lw	v1,12(v0)
  43fa48:	8fc2001c 	lw	v0,28(s8)
  43fa4c:	00000000 	nop
  43fa50:	10430006 	beq	v0,v1,43fa6c <try_RSA_signature+0xbc>
  43fa54:	00000000 	nop
    {
	/* XXX notification: INVALID_KEY_INFORMATION */
	return "1" "SIG length does not match public key length";
  43fa58:	8f82802c 	lw	v0,-32724(gp)
  43fa5c:	00000000 	nop
  43fa60:	2442e040 	addiu	v0,v0,-8128
  43fa64:	100000ec 	b	43fe18 <try_RSA_signature+0x468>
  43fa68:	00000000 	nop
    }

    /* actual exponentiation; see PKCS#1 v2.0 5.1 */
    {
	chunk_t temp_s;
	mpz_t c;

	n_to_mpz(c, sig_val, sig_len);
  43fa6c:	27c40230 	addiu	a0,s8,560
  43fa70:	8fc50018 	lw	a1,24(s8)
  43fa74:	8fc6001c 	lw	a2,28(s8)
  43fa78:	8f998358 	lw	t9,-31912(gp)
  43fa7c:	00000000 	nop
  43fa80:	0320f809 	jalr	t9
  43fa84:	00000000 	nop
  43fa88:	8fdc0010 	lw	gp,16(s8)
  43fa8c:	00000000 	nop
	mpz_powm(c, c, &k->e, &k->n);
  43fa90:	8fc20264 	lw	v0,612(s8)
  43fa94:	00000000 	nop
  43fa98:	2443001c 	addiu	v1,v0,28
  43fa9c:	8fc20264 	lw	v0,612(s8)
  43faa0:	00000000 	nop
  43faa4:	24420010 	addiu	v0,v0,16
  43faa8:	27c40230 	addiu	a0,s8,560
  43faac:	27c50230 	addiu	a1,s8,560
  43fab0:	00603021 	move	a2,v1
  43fab4:	00403821 	move	a3,v0
  43fab8:	8f9987c4 	lw	t9,-30780(gp)
  43fabc:	00000000 	nop
  43fac0:	0320f809 	jalr	t9
  43fac4:	00000000 	nop
  43fac8:	8fdc0010 	lw	gp,16(s8)
  43facc:	00000000 	nop

	temp_s = mpz_to_n(c, sig_len);	/* back to octets */
  43fad0:	27c40228 	addiu	a0,s8,552
  43fad4:	27c50230 	addiu	a1,s8,560
  43fad8:	8fc6001c 	lw	a2,28(s8)
  43fadc:	8f9980c0 	lw	t9,-32576(gp)
  43fae0:	00000000 	nop
  43fae4:	0320f809 	jalr	t9
  43fae8:	00000000 	nop
  43faec:	8fdc0010 	lw	gp,16(s8)
  43faf0:	00000000 	nop
	memcpy(s, temp_s.ptr, sig_len);
  43faf4:	27c40020 	addiu	a0,s8,32
  43faf8:	8fc50228 	lw	a1,552(s8)
  43fafc:	8fc6001c 	lw	a2,28(s8)
  43fb00:	8f998a30 	lw	t9,-30160(gp)
  43fb04:	00000000 	nop
  43fb08:	0320f809 	jalr	t9
  43fb0c:	00000000 	nop
  43fb10:	8fdc0010 	lw	gp,16(s8)
  43fb14:	00000000 	nop
	pfree(temp_s.ptr);
  43fb18:	8fc40228 	lw	a0,552(s8)
  43fb1c:	8f998094 	lw	t9,-32620(gp)
  43fb20:	00000000 	nop
  43fb24:	0320f809 	jalr	t9
  43fb28:	00000000 	nop
  43fb2c:	8fdc0010 	lw	gp,16(s8)
  43fb30:	00000000 	nop
	mpz_clear(c);
  43fb34:	27c40230 	addiu	a0,s8,560
  43fb38:	8f998c40 	lw	t9,-29632(gp)
  43fb3c:	00000000 	nop
  43fb40:	0320f809 	jalr	t9
  43fb44:	00000000 	nop
  43fb48:	8fdc0010 	lw	gp,16(s8)
  43fb4c:	00000000 	nop
    }

    /* sanity check on signature: see if it matches
     * PKCS#1 v1.5 8.1 encryption-block formatting
     */
    {
	err_t ugh = NULL;
  43fb50:	afc00240 	sw	zero,576(s8)

	if (s[0] != 0x00)
  43fb54:	93c20020 	lbu	v0,32(s8)
  43fb58:	00000000 	nop
  43fb5c:	10400008 	beqz	v0,43fb80 <try_RSA_signature+0x1d0>
  43fb60:	00000000 	nop
	    ugh = "2" "no leading 00";
  43fb64:	8f82802c 	lw	v0,-32724(gp)
  43fb68:	00000000 	nop
  43fb6c:	2442e070 	addiu	v0,v0,-8080
  43fb70:	00000000 	nop
  43fb74:	afc20240 	sw	v0,576(s8)
  43fb78:	1000005a 	b	43fce4 <try_RSA_signature+0x334>
  43fb7c:	00000000 	nop
	else if (hash_in_s[-1] != 0x00)
  43fb80:	8fc20220 	lw	v0,544(s8)
  43fb84:	00000000 	nop
  43fb88:	2442ffff 	addiu	v0,v0,-1
  43fb8c:	90420000 	lbu	v0,0(v0)
  43fb90:	00000000 	nop
  43fb94:	10400008 	beqz	v0,43fbb8 <try_RSA_signature+0x208>
  43fb98:	00000000 	nop
	    ugh = "3" "00 separator not present";
  43fb9c:	8f82802c 	lw	v0,-32724(gp)
  43fba0:	00000000 	nop
  43fba4:	2442e080 	addiu	v0,v0,-8064
  43fba8:	00000000 	nop
  43fbac:	afc20240 	sw	v0,576(s8)
  43fbb0:	1000004c 	b	43fce4 <try_RSA_signature+0x334>
  43fbb4:	00000000 	nop
	else if (s[1] == 0x01)
  43fbb8:	93c30021 	lbu	v1,33(s8)
  43fbbc:	24020001 	li	v0,1
  43fbc0:	14620020 	bne	v1,v0,43fc44 <try_RSA_signature+0x294>
  43fbc4:	00000000 	nop
	{
	    const u_char *p;

	    for (p = &s[2]; p != hash_in_s - 1; p++)
  43fbc8:	27c20020 	addiu	v0,s8,32
  43fbcc:	24420002 	addiu	v0,v0,2
  43fbd0:	afc20244 	sw	v0,580(s8)
  43fbd4:	8fc20220 	lw	v0,544(s8)
  43fbd8:	00000000 	nop
  43fbdc:	2443ffff 	addiu	v1,v0,-1
  43fbe0:	8fc20244 	lw	v0,580(s8)
  43fbe4:	00000000 	nop
  43fbe8:	14430003 	bne	v0,v1,43fbf8 <try_RSA_signature+0x248>
  43fbec:	00000000 	nop
  43fbf0:	1000003c 	b	43fce4 <try_RSA_signature+0x334>
  43fbf4:	00000000 	nop
	    {
		if (*p != 0xFF)
  43fbf8:	8fc20244 	lw	v0,580(s8)
  43fbfc:	00000000 	nop
  43fc00:	90430000 	lbu	v1,0(v0)
  43fc04:	240200ff 	li	v0,255
  43fc08:	10620008 	beq	v1,v0,43fc2c <try_RSA_signature+0x27c>
  43fc0c:	00000000 	nop
		{
		    ugh = "4" "invalid Padding String";
  43fc10:	8f82802c 	lw	v0,-32724(gp)
  43fc14:	00000000 	nop
  43fc18:	2442e09c 	addiu	v0,v0,-8036
  43fc1c:	00000000 	nop
  43fc20:	afc20240 	sw	v0,576(s8)
		    break;
  43fc24:	1000002f 	b	43fce4 <try_RSA_signature+0x334>
  43fc28:	00000000 	nop
  43fc2c:	8fc20244 	lw	v0,580(s8)
  43fc30:	00000000 	nop
  43fc34:	24420001 	addiu	v0,v0,1
  43fc38:	afc20244 	sw	v0,580(s8)
  43fc3c:	1000ffe5 	b	43fbd4 <try_RSA_signature+0x224>
  43fc40:	00000000 	nop
		}
	    }
	}
	else if (s[1] == 0x02)
  43fc44:	93c30021 	lbu	v1,33(s8)
  43fc48:	24020002 	li	v0,2
  43fc4c:	14620020 	bne	v1,v0,43fcd0 <try_RSA_signature+0x320>
  43fc50:	00000000 	nop
	{
	    const u_char *p;

	    for (p = &s[2]; p != hash_in_s - 1; p++)
  43fc54:	27c20020 	addiu	v0,s8,32
  43fc58:	24420002 	addiu	v0,v0,2
  43fc5c:	afc20244 	sw	v0,580(s8)
  43fc60:	8fc20220 	lw	v0,544(s8)
  43fc64:	00000000 	nop
  43fc68:	2443ffff 	addiu	v1,v0,-1
  43fc6c:	8fc20244 	lw	v0,580(s8)
  43fc70:	00000000 	nop
  43fc74:	14430003 	bne	v0,v1,43fc84 <try_RSA_signature+0x2d4>
  43fc78:	00000000 	nop
  43fc7c:	10000019 	b	43fce4 <try_RSA_signature+0x334>
  43fc80:	00000000 	nop
	    {
		if (*p == 0x00)
  43fc84:	8fc20244 	lw	v0,580(s8)
  43fc88:	00000000 	nop
  43fc8c:	90420000 	lbu	v0,0(v0)
  43fc90:	00000000 	nop
  43fc94:	14400008 	bnez	v0,43fcb8 <try_RSA_signature+0x308>
  43fc98:	00000000 	nop
		{
		    ugh = "5" "invalid Padding String";
  43fc9c:	8f82802c 	lw	v0,-32724(gp)
  43fca0:	00000000 	nop
  43fca4:	2442e0b4 	addiu	v0,v0,-8012
  43fca8:	00000000 	nop
  43fcac:	afc20240 	sw	v0,576(s8)
		    break;
  43fcb0:	1000000c 	b	43fce4 <try_RSA_signature+0x334>
  43fcb4:	00000000 	nop
  43fcb8:	8fc20244 	lw	v0,580(s8)
  43fcbc:	00000000 	nop
  43fcc0:	24420001 	addiu	v0,v0,1
  43fcc4:	afc20244 	sw	v0,580(s8)
  43fcc8:	1000ffe5 	b	43fc60 <try_RSA_signature+0x2b0>
  43fccc:	00000000 	nop
		}
	    }
	}
	else
	    ugh = "6" "Block Type not 01 or 02";
  43fcd0:	8f82802c 	lw	v0,-32724(gp)
  43fcd4:	00000000 	nop
  43fcd8:	2442e0cc 	addiu	v0,v0,-7988
  43fcdc:	00000000 	nop
  43fce0:	afc20240 	sw	v0,576(s8)

	if (ugh != NULL)
  43fce4:	8fc20240 	lw	v0,576(s8)
  43fce8:	00000000 	nop
  43fcec:	10400004 	beqz	v0,43fd00 <try_RSA_signature+0x350>
  43fcf0:	00000000 	nop
	{
	    /* note: it might be a good idea to make sure that
	     * an observer cannot tell what kind of failure happened.
	     * I don't know what this means in practice.
	     */
	    /* We probably selected the wrong public key for peer:
	     * SIG Payload decrypted into malformed ECB
	     */
	    /* XXX notification: INVALID_KEY_INFORMATION */
	    return ugh;
  43fcf4:	8fc20240 	lw	v0,576(s8)
  43fcf8:	10000047 	b	43fe18 <try_RSA_signature+0x468>
  43fcfc:	00000000 	nop
	}
    }

    /* We have the decoded hash: see if it matches. */
    if (memcmp(hash_val, hash_in_s, hash_len) != 0)
  43fd00:	8fc40258 	lw	a0,600(s8)
  43fd04:	8fc50220 	lw	a1,544(s8)
  43fd08:	8fc6025c 	lw	a2,604(s8)
  43fd0c:	8f9985c8 	lw	t9,-31288(gp)
  43fd10:	00000000 	nop
  43fd14:	0320f809 	jalr	t9
  43fd18:	00000000 	nop
  43fd1c:	8fdc0010 	lw	gp,16(s8)
  43fd20:	1040002a 	beqz	v0,43fdcc <try_RSA_signature+0x41c>
  43fd24:	00000000 	nop
    {
	/* good: header, hash, signature, and other payloads well-formed
	 * good: we could find an RSA Sig key for the peer.
	 * bad: hash doesn't match
	 * Guess: sides disagree about key to be used.
	 */
	DBG_cond_dump(DBG_CRYPT, "decrypted SIG", s, sig_len);
  43fd28:	8f8284f8 	lw	v0,-31496(gp)
  43fd2c:	00000000 	nop
  43fd30:	8c420000 	lw	v0,0(v0)
  43fd34:	00000000 	nop
  43fd38:	30420002 	andi	v0,v0,0x2
  43fd3c:	1040000c 	beqz	v0,43fd70 <try_RSA_signature+0x3c0>
  43fd40:	00000000 	nop
  43fd44:	8f84802c 	lw	a0,-32724(gp)
  43fd48:	00000000 	nop
  43fd4c:	2484e0e8 	addiu	a0,a0,-7960
  43fd50:	27c50020 	addiu	a1,s8,32
  43fd54:	8fc6001c 	lw	a2,28(s8)
  43fd58:	8f9984ec 	lw	t9,-31508(gp)
  43fd5c:	00000000 	nop
  43fd60:	0320f809 	jalr	t9
  43fd64:	00000000 	nop
  43fd68:	8fdc0010 	lw	gp,16(s8)
  43fd6c:	00000000 	nop
	DBG_cond_dump(DBG_CRYPT, "computed HASH", hash_val, hash_len);
  43fd70:	8f8284f8 	lw	v0,-31496(gp)
  43fd74:	00000000 	nop
  43fd78:	8c420000 	lw	v0,0(v0)
  43fd7c:	00000000 	nop
  43fd80:	30420002 	andi	v0,v0,0x2
  43fd84:	1040000c 	beqz	v0,43fdb8 <try_RSA_signature+0x408>
  43fd88:	00000000 	nop
  43fd8c:	8f84802c 	lw	a0,-32724(gp)
  43fd90:	00000000 	nop
  43fd94:	2484e0f8 	addiu	a0,a0,-7944
  43fd98:	8fc50258 	lw	a1,600(s8)
  43fd9c:	8fc6025c 	lw	a2,604(s8)
  43fda0:	8f9984ec 	lw	t9,-31508(gp)
  43fda4:	00000000 	nop
  43fda8:	0320f809 	jalr	t9
  43fdac:	00000000 	nop
  43fdb0:	8fdc0010 	lw	gp,16(s8)
  43fdb4:	00000000 	nop
	/* XXX notification: INVALID_HASH_INFORMATION */
	return "9" "authentication failure: received SIG does not match computed HASH, but message is well-formed";
  43fdb8:	8f82802c 	lw	v0,-32724(gp)
  43fdbc:	00000000 	nop
  43fdc0:	2442e108 	addiu	v0,v0,-7928
  43fdc4:	10000014 	b	43fe18 <try_RSA_signature+0x468>
  43fdc8:	00000000 	nop
    }

    /* Success: copy successful key into state.
     * There might be an old one if we previously aborted this
     * state transition.
     */
    free_public_keys(&st->st_peer_pubkey);
  43fdcc:	8fc20268 	lw	v0,616(s8)
  43fdd0:	00000000 	nop
  43fdd4:	24420148 	addiu	v0,v0,328
  43fdd8:	00402021 	move	a0,v0
  43fddc:	8f998a5c 	lw	t9,-30116(gp)
  43fde0:	00000000 	nop
  43fde4:	0320f809 	jalr	t9
  43fde8:	00000000 	nop
  43fdec:	8fdc0010 	lw	gp,16(s8)
  43fdf0:	00000000 	nop
    st->st_peer_pubkey = public_key_from_rsa(k);
  43fdf4:	8fd00268 	lw	s0,616(s8)
  43fdf8:	8fc40264 	lw	a0,612(s8)
  43fdfc:	8f99860c 	lw	t9,-31220(gp)
  43fe00:	00000000 	nop
  43fe04:	0320f809 	jalr	t9
  43fe08:	00000000 	nop
  43fe0c:	8fdc0010 	lw	gp,16(s8)
  43fe10:	ae020148 	sw	v0,328(s0)

    return NULL;    /* happy happy */
  43fe14:	00001021 	move	v0,zero
}
  43fe18:	03c0e821 	move	sp,s8
  43fe1c:	8fbf0254 	lw	ra,596(sp)
  43fe20:	8fbe0250 	lw	s8,592(sp)
  43fe24:	8fb00248 	lw	s0,584(sp)
  43fe28:	27bd0258 	addiu	sp,sp,600
  43fe2c:	03e00008 	jr	ra
  43fe30:	00000000 	nop

0043fe34 <take_a_crack>:
  43fe34:	3c1c0fbd 	lui	gp,0xfbd
  43fe38:	279ccb3c 	addiu	gp,gp,-13508
  43fe3c:	0399e021 	addu	gp,gp,t9
  43fe40:	27bdffc8 	addiu	sp,sp,-56
  43fe44:	afbc0018 	sw	gp,24(sp)
  43fe48:	afbf0030 	sw	ra,48(sp)
  43fe4c:	afbe002c 	sw	s8,44(sp)
  43fe50:	afbc0028 	sw	gp,40(sp)
  43fe54:	03a0f021 	move	s8,sp
  43fe58:	afc40038 	sw	a0,56(s8)
  43fe5c:	afc5003c 	sw	a1,60(s8)
  43fe60:	afc60040 	sw	a2,64(s8)

/* Check signature against all RSA public keys we can find.
 * If we need keys from DNS KEY records, and they haven't been fetched,
 * return STF_SUSPEND to ask for asynch DNS lookup.
 *
 * Note: global keys_from_dns contains results of DNS lookup for key
 * or is NULL indicating lookup not yet tried.
 *
 * take_a_crack is a helper function.  Mostly forensic.
 * If only we had coroutines.
 */
struct tac_state {
    /* RSA_check_signature's args that take_a_crack needs */
    struct state *st;
    const u_char *hash_val;
    size_t hash_len;
    const pb_stream *sig_pbs;

    /* state carried between calls */
    err_t best_ugh;	/* most successful failure */
    int tried_cnt;	/* number of keys tried */
    char tried[50];	/* keyids of tried public keys */
    char *tn;	/* roof of tried[] */
};

static bool
take_a_crack(struct tac_state *s
, const struct RSA_public_key *k
, const char *story)
{
    err_t ugh = try_RSA_signature(s->hash_val, s->hash_len, s->sig_pbs
  43fe64:	8fc20038 	lw	v0,56(s8)
  43fe68:	00000000 	nop
  43fe6c:	8c420000 	lw	v0,0(v0)
  43fe70:	00000000 	nop
  43fe74:	afa20010 	sw	v0,16(sp)
  43fe78:	8fc20038 	lw	v0,56(s8)
  43fe7c:	00000000 	nop
  43fe80:	8c440004 	lw	a0,4(v0)
  43fe84:	8fc20038 	lw	v0,56(s8)
  43fe88:	00000000 	nop
  43fe8c:	8c450008 	lw	a1,8(v0)
  43fe90:	8fc20038 	lw	v0,56(s8)
  43fe94:	00000000 	nop
  43fe98:	8c46000c 	lw	a2,12(v0)
  43fe9c:	8fc7003c 	lw	a3,60(s8)
  43fea0:	8f998034 	lw	t9,-32716(gp)
  43fea4:	00000000 	nop
  43fea8:	2739f9b0 	addiu	t9,t9,-1616
  43feac:	00000000 	nop
  43feb0:	0320f809 	jalr	t9
  43feb4:	00000000 	nop
  43feb8:	8fdc0018 	lw	gp,24(s8)
  43febc:	afc20020 	sw	v0,32(s8)
	, k, s->st);

    s->tried_cnt++;
  43fec0:	8fc20038 	lw	v0,56(s8)
  43fec4:	00000000 	nop
  43fec8:	8c420014 	lw	v0,20(v0)
  43fecc:	00000000 	nop
  43fed0:	24430001 	addiu	v1,v0,1
  43fed4:	8fc20038 	lw	v0,56(s8)
  43fed8:	00000000 	nop
  43fedc:	ac430014 	sw	v1,20(v0)
    if (ugh == NULL)
  43fee0:	8fc20020 	lw	v0,32(s8)
  43fee4:	00000000 	nop
  43fee8:	14400016 	bnez	v0,43ff44 <take_a_crack+0x110>
  43feec:	00000000 	nop
    {
	DBG(DBG_CRYPT | DBG_CONTROL
  43fef0:	8f8284f8 	lw	v0,-31496(gp)
  43fef4:	00000000 	nop
  43fef8:	8c420000 	lw	v0,0(v0)
  43fefc:	00000000 	nop
  43ff00:	30420012 	andi	v0,v0,0x12
  43ff04:	1040000c 	beqz	v0,43ff38 <take_a_crack+0x104>
  43ff08:	00000000 	nop
  43ff0c:	8f84802c 	lw	a0,-32724(gp)
  43ff10:	00000000 	nop
  43ff14:	2484e168 	addiu	a0,a0,-7832
  43ff18:	8fc5003c 	lw	a1,60(s8)
  43ff1c:	8fc60040 	lw	a2,64(s8)
  43ff20:	8f9983b8 	lw	t9,-31816(gp)
  43ff24:	00000000 	nop
  43ff28:	0320f809 	jalr	t9
  43ff2c:	00000000 	nop
  43ff30:	8fdc0018 	lw	gp,24(s8)
  43ff34:	00000000 	nop
	    , DBG_log("an RSA Sig check passed with *%s [%s]"
		, k->keyid, story));
	return TRUE;
  43ff38:	24020001 	li	v0,1
  43ff3c:	1000006b 	b	4400ec <take_a_crack+0x2b8>
  43ff40:	00000000 	nop
    }
    else
    {
	DBG(DBG_CRYPT
  43ff44:	8f8284f8 	lw	v0,-31496(gp)
  43ff48:	00000000 	nop
  43ff4c:	8c420000 	lw	v0,0(v0)
  43ff50:	00000000 	nop
  43ff54:	30420002 	andi	v0,v0,0x2
  43ff58:	10400010 	beqz	v0,43ff9c <take_a_crack+0x168>
  43ff5c:	00000000 	nop
  43ff60:	8fc20020 	lw	v0,32(s8)
  43ff64:	00000000 	nop
  43ff68:	24420001 	addiu	v0,v0,1
  43ff6c:	8f84802c 	lw	a0,-32724(gp)
  43ff70:	00000000 	nop
  43ff74:	2484e190 	addiu	a0,a0,-7792
  43ff78:	00402821 	move	a1,v0
  43ff7c:	8fc6003c 	lw	a2,60(s8)
  43ff80:	8fc70040 	lw	a3,64(s8)
  43ff84:	8f9983b8 	lw	t9,-31816(gp)
  43ff88:	00000000 	nop
  43ff8c:	0320f809 	jalr	t9
  43ff90:	00000000 	nop
  43ff94:	8fdc0018 	lw	gp,24(s8)
  43ff98:	00000000 	nop
	    , DBG_log("an RSA Sig check failure %s with *%s [%s]"
		, ugh + 1, k->keyid, story));
	if (s->best_ugh == NULL || s->best_ugh[0] < ugh[0])
  43ff9c:	8fc20038 	lw	v0,56(s8)
  43ffa0:	00000000 	nop
  43ffa4:	8c420010 	lw	v0,16(v0)
  43ffa8:	00000000 	nop
  43ffac:	1040000f 	beqz	v0,43ffec <take_a_crack+0x1b8>
  43ffb0:	00000000 	nop
  43ffb4:	8fc20038 	lw	v0,56(s8)
  43ffb8:	00000000 	nop
  43ffbc:	8c420010 	lw	v0,16(v0)
  43ffc0:	00000000 	nop
  43ffc4:	80430000 	lb	v1,0(v0)
  43ffc8:	8fc20020 	lw	v0,32(s8)
  43ffcc:	00000000 	nop
  43ffd0:	80420000 	lb	v0,0(v0)
  43ffd4:	00000000 	nop
  43ffd8:	0062102a 	slt	v0,v1,v0
  43ffdc:	14400003 	bnez	v0,43ffec <take_a_crack+0x1b8>
  43ffe0:	00000000 	nop
  43ffe4:	10000005 	b	43fffc <take_a_crack+0x1c8>
  43ffe8:	00000000 	nop
	    s->best_ugh = ugh;
  43ffec:	8fc30020 	lw	v1,32(s8)
  43fff0:	8fc20038 	lw	v0,56(s8)
  43fff4:	00000000 	nop
  43fff8:	ac430010 	sw	v1,16(v0)
	if (ugh[0] > '0'
	&& s->tn - s->tried + KEYID_BUF + 2 < (ptrdiff_t)sizeof(s->tried))
  43fffc:	8fc20020 	lw	v0,32(s8)
  440000:	00000000 	nop
  440004:	80420000 	lb	v0,0(v0)
  440008:	00000000 	nop
  44000c:	28420031 	slti	v0,v0,49
  440010:	14400035 	bnez	v0,4400e8 <take_a_crack+0x2b4>
  440014:	00000000 	nop
  440018:	8fc20038 	lw	v0,56(s8)
  44001c:	00000000 	nop
  440020:	8c43004c 	lw	v1,76(v0)
  440024:	8fc20038 	lw	v0,56(s8)
  440028:	00000000 	nop
  44002c:	00621023 	subu	v0,v1,v0
  440030:	2442fff4 	addiu	v0,v0,-12
  440034:	28420032 	slti	v0,v0,50
  440038:	1040002b 	beqz	v0,4400e8 <take_a_crack+0x2b4>
  44003c:	00000000 	nop
	{
	    strcpy(s->tn, " *");
  440040:	8fc20038 	lw	v0,56(s8)
  440044:	00000000 	nop
  440048:	8c44004c 	lw	a0,76(v0)
  44004c:	8f85802c 	lw	a1,-32724(gp)
  440050:	00000000 	nop
  440054:	24a5e1bc 	addiu	a1,a1,-7748
  440058:	8f998c58 	lw	t9,-29608(gp)
  44005c:	00000000 	nop
  440060:	0320f809 	jalr	t9
  440064:	00000000 	nop
  440068:	8fdc0018 	lw	gp,24(s8)
  44006c:	00000000 	nop
	    strcpy(s->tn + 2, k->keyid);
  440070:	8fc20038 	lw	v0,56(s8)
  440074:	00000000 	nop
  440078:	8c42004c 	lw	v0,76(v0)
  44007c:	00000000 	nop
  440080:	24420002 	addiu	v0,v0,2
  440084:	00402021 	move	a0,v0
  440088:	8fc5003c 	lw	a1,60(s8)
  44008c:	8f998c58 	lw	t9,-29608(gp)
  440090:	00000000 	nop
  440094:	0320f809 	jalr	t9
  440098:	00000000 	nop
  44009c:	8fdc0018 	lw	gp,24(s8)
  4400a0:	00000000 	nop
	    s->tn += strlen(s->tn);
  4400a4:	8fc20038 	lw	v0,56(s8)
  4400a8:	00000000 	nop
  4400ac:	8c44004c 	lw	a0,76(v0)
  4400b0:	8f998188 	lw	t9,-32376(gp)
  4400b4:	00000000 	nop
  4400b8:	0320f809 	jalr	t9
  4400bc:	00000000 	nop
  4400c0:	8fdc0018 	lw	gp,24(s8)
  4400c4:	00401821 	move	v1,v0
  4400c8:	8fc20038 	lw	v0,56(s8)
  4400cc:	00000000 	nop
  4400d0:	8c42004c 	lw	v0,76(v0)
  4400d4:	00000000 	nop
  4400d8:	00431821 	addu	v1,v0,v1
  4400dc:	8fc20038 	lw	v0,56(s8)
  4400e0:	00000000 	nop
  4400e4:	ac43004c 	sw	v1,76(v0)
	}
	return FALSE;
  4400e8:	00001021 	move	v0,zero
    }
}
  4400ec:	03c0e821 	move	sp,s8
  4400f0:	8fbf0030 	lw	ra,48(sp)
  4400f4:	8fbe002c 	lw	s8,44(sp)
  4400f8:	27bd0038 	addiu	sp,sp,56
  4400fc:	03e00008 	jr	ra
  440100:	00000000 	nop

00440104 <RSA_check_signature>:
  440104:	3c1c0fbd 	lui	gp,0xfbd
  440108:	279cc86c 	addiu	gp,gp,-14228
  44010c:	0399e021 	addu	gp,gp,t9
  440110:	27bdfb60 	addiu	sp,sp,-1184
  440114:	afbc0018 	sw	gp,24(sp)
  440118:	afbf0498 	sw	ra,1176(sp)
  44011c:	afbe0494 	sw	s8,1172(sp)
  440120:	afbc0490 	sw	gp,1168(sp)
  440124:	03a0f021 	move	s8,sp
  440128:	afc404a0 	sw	a0,1184(s8)
  44012c:	afc504a4 	sw	a1,1188(s8)
  440130:	afc604a8 	sw	a2,1192(s8)
  440134:	afc704ac 	sw	a3,1196(s8)

static stf_status
RSA_check_signature(struct state *st
, const u_char hash_val[MAX_DIGEST_LEN]
, size_t hash_len
, const pb_stream *sig_pbs)
{
    const struct connection *c = st->st_connection;
  440138:	8fc204a0 	lw	v0,1184(s8)
  44013c:	00000000 	nop
  440140:	8c42000c 	lw	v0,12(v0)
  440144:	00000000 	nop
  440148:	afc20020 	sw	v0,32(s8)
    struct tac_state s;
    err_t dns_ugh = NULL;
  44014c:	afc00078 	sw	zero,120(s8)

    s.st = st;
  440150:	8fc204a0 	lw	v0,1184(s8)
  440154:	00000000 	nop
  440158:	afc20028 	sw	v0,40(s8)
    s.hash_val = hash_val;
  44015c:	8fc204a4 	lw	v0,1188(s8)
  440160:	00000000 	nop
  440164:	afc2002c 	sw	v0,44(s8)
    s.hash_len = hash_len;
  440168:	8fc204a8 	lw	v0,1192(s8)
  44016c:	00000000 	nop
  440170:	afc20030 	sw	v0,48(s8)
    s.sig_pbs = sig_pbs;
  440174:	8fc204ac 	lw	v0,1196(s8)
  440178:	00000000 	nop
  44017c:	afc20034 	sw	v0,52(s8)

    s.best_ugh = NULL;
  440180:	afc00038 	sw	zero,56(s8)
    s.tried_cnt = 0;
  440184:	afc0003c 	sw	zero,60(s8)
    s.tn = s.tried;
  440188:	27c20028 	addiu	v0,s8,40
  44018c:	24420018 	addiu	v0,v0,24
  440190:	afc20074 	sw	v0,116(s8)

    /* try all gateway records hung off c */
    if ((c->policy & POLICY_OPPO))
  440194:	8fc20020 	lw	v0,32(s8)
  440198:	00000000 	nop
  44019c:	8c440008 	lw	a0,8(v0)
  4401a0:	8c45000c 	lw	a1,12(v0)
  4401a4:	24020000 	li	v0,0
  4401a8:	24030800 	li	v1,2048
  4401ac:	00822024 	and	a0,a0,v0
  4401b0:	00a32824 	and	a1,a1,v1
  4401b4:	00801021 	move	v0,a0
  4401b8:	00451025 	or	v0,v0,a1
  4401bc:	1040003c 	beqz	v0,4402b0 <RSA_check_signature+0x1ac>
  4401c0:	00000000 	nop
    {
	struct gw_info *gw;

	for (gw = c->gw_info; gw != NULL; gw = gw->next)
  4401c4:	8fc20020 	lw	v0,32(s8)
  4401c8:	00000000 	nop
  4401cc:	8c4201b8 	lw	v0,440(v0)
  4401d0:	00000000 	nop
  4401d4:	afc2007c 	sw	v0,124(s8)
  4401d8:	8fc2007c 	lw	v0,124(s8)
  4401dc:	00000000 	nop
  4401e0:	14400003 	bnez	v0,4401f0 <RSA_check_signature+0xec>
  4401e4:	00000000 	nop
  4401e8:	10000031 	b	4402b0 <RSA_check_signature+0x1ac>
  4401ec:	00000000 	nop
	{
	    /* only consider entries that have a key and are for our peer */
	    if (gw->gw_key_present
	    && same_id(&gw->gw_id, &c->that.id)
	    && take_a_crack(&s, &gw->gw_key, "key saved from DNS TXT"))
  4401f0:	8fc2007c 	lw	v0,124(s8)
  4401f4:	00000000 	nop
  4401f8:	8c420068 	lw	v0,104(v0)
  4401fc:	00000000 	nop
  440200:	10400024 	beqz	v0,440294 <RSA_check_signature+0x190>
  440204:	00000000 	nop
  440208:	8fc2007c 	lw	v0,124(s8)
  44020c:	00000000 	nop
  440210:	24430040 	addiu	v1,v0,64
  440214:	8fc20020 	lw	v0,32(s8)
  440218:	00000000 	nop
  44021c:	244200e0 	addiu	v0,v0,224
  440220:	00602021 	move	a0,v1
  440224:	00402821 	move	a1,v0
  440228:	8f9980e4 	lw	t9,-32540(gp)
  44022c:	00000000 	nop
  440230:	0320f809 	jalr	t9
  440234:	00000000 	nop
  440238:	8fdc0018 	lw	gp,24(s8)
  44023c:	10400015 	beqz	v0,440294 <RSA_check_signature+0x190>
  440240:	00000000 	nop
  440244:	8fc2007c 	lw	v0,124(s8)
  440248:	00000000 	nop
  44024c:	2442006c 	addiu	v0,v0,108
  440250:	27c40028 	addiu	a0,s8,40
  440254:	00402821 	move	a1,v0
  440258:	8f86802c 	lw	a2,-32724(gp)
  44025c:	00000000 	nop
  440260:	24c6e1c0 	addiu	a2,a2,-7744
  440264:	8f998034 	lw	t9,-32716(gp)
  440268:	00000000 	nop
  44026c:	2739fe34 	addiu	t9,t9,-460
  440270:	00000000 	nop
  440274:	0320f809 	jalr	t9
  440278:	00000000 	nop
  44027c:	8fdc0018 	lw	gp,24(s8)
  440280:	10400004 	beqz	v0,440294 <RSA_check_signature+0x190>
  440284:	00000000 	nop
		return STF_OK;
  440288:	24020002 	li	v0,2
  44028c:	100001a5 	b	440924 <RSA_check_signature+0x820>
  440290:	00000000 	nop
  440294:	8fc2007c 	lw	v0,124(s8)
  440298:	00000000 	nop
  44029c:	8c420094 	lw	v0,148(v0)
  4402a0:	00000000 	nop
  4402a4:	afc2007c 	sw	v0,124(s8)
  4402a8:	1000ffcb 	b	4401d8 <RSA_check_signature+0xd4>
  4402ac:	00000000 	nop
	}
    }

    /* try all appropriate Public keys */
    {
	struct pubkeyrec *p, **pp;
	int pathlen;
	char buf[IDTOA_BUF];

	pp = &pubkeys;
  4402b0:	8f8287a8 	lw	v0,-30808(gp)
  4402b4:	00000000 	nop
  4402b8:	afc20080 	sw	v0,128(s8)

	DBG(DBG_CONTROL,
  4402bc:	8f8284f8 	lw	v0,-31496(gp)
  4402c0:	00000000 	nop
  4402c4:	8c420000 	lw	v0,0(v0)
  4402c8:	00000000 	nop
  4402cc:	30420010 	andi	v0,v0,0x10
  4402d0:	1040001b 	beqz	v0,440340 <RSA_check_signature+0x23c>
  4402d4:	00000000 	nop
  4402d8:	8fc30020 	lw	v1,32(s8)
  4402dc:	8f82802c 	lw	v0,-32724(gp)
  4402e0:	00000000 	nop
  4402e4:	2442e1d8 	addiu	v0,v0,-7720
  4402e8:	00000000 	nop
  4402ec:	afa20010 	sw	v0,16(sp)
  4402f0:	27c40088 	addiu	a0,s8,136
  4402f4:	24050200 	li	a1,512
  4402f8:	8c660184 	lw	a2,388(v1)
  4402fc:	8c670188 	lw	a3,392(v1)
  440300:	8f99876c 	lw	t9,-30868(gp)
  440304:	00000000 	nop
  440308:	0320f809 	jalr	t9
  44030c:	00000000 	nop
  440310:	8fdc0018 	lw	gp,24(s8)
  440314:	00000000 	nop
  440318:	8f84802c 	lw	a0,-32724(gp)
  44031c:	00000000 	nop
  440320:	2484e1e0 	addiu	a0,a0,-7712
  440324:	27c50088 	addiu	a1,s8,136
  440328:	8f9983b8 	lw	t9,-31816(gp)
  44032c:	00000000 	nop
  440330:	0320f809 	jalr	t9
  440334:	00000000 	nop
  440338:	8fdc0018 	lw	gp,24(s8)
  44033c:	00000000 	nop
	    dntoa_or_null(buf, IDTOA_BUF, c->that.ca, "%any");
	    DBG_log("required CA is '%s'", buf);
	)

	for (p = pubkeys; p != NULL; p = *pp)
  440340:	8f8287a8 	lw	v0,-30808(gp)
  440344:	00000000 	nop
  440348:	8c420000 	lw	v0,0(v0)
  44034c:	00000000 	nop
  440350:	afc2007c 	sw	v0,124(s8)
  440354:	8fc2007c 	lw	v0,124(s8)
  440358:	00000000 	nop
  44035c:	14400003 	bnez	v0,44036c <RSA_check_signature+0x268>
  440360:	00000000 	nop
  440364:	1000008d 	b	44059c <RSA_check_signature+0x498>
  440368:	00000000 	nop
	{
	    if (p->alg == PUBKEY_ALG_RSA && same_id(&c->that.id, &p->id)
	    && trusted_ca(p->issuer, c->that.ca, &pathlen))
  44036c:	8fc2007c 	lw	v0,124(s8)
  440370:	00000000 	nop
  440374:	8c43003c 	lw	v1,60(v0)
  440378:	24020001 	li	v0,1
  44037c:	1462007c 	bne	v1,v0,440570 <RSA_check_signature+0x46c>
  440380:	00000000 	nop
  440384:	8fc20020 	lw	v0,32(s8)
  440388:	00000000 	nop
  44038c:	244200e0 	addiu	v0,v0,224
  440390:	00402021 	move	a0,v0
  440394:	8fc5007c 	lw	a1,124(s8)
  440398:	8f9980e4 	lw	t9,-32540(gp)
  44039c:	00000000 	nop
  4403a0:	0320f809 	jalr	t9
  4403a4:	00000000 	nop
  4403a8:	8fdc0018 	lw	gp,24(s8)
  4403ac:	10400070 	beqz	v0,440570 <RSA_check_signature+0x46c>
  4403b0:	00000000 	nop
  4403b4:	8fc3007c 	lw	v1,124(s8)
  4403b8:	8fc70020 	lw	a3,32(s8)
  4403bc:	27c20084 	addiu	v0,s8,132
  4403c0:	afa20010 	sw	v0,16(sp)
  4403c4:	8c640030 	lw	a0,48(v1)
  4403c8:	8c650034 	lw	a1,52(v1)
  4403cc:	8ce60184 	lw	a2,388(a3)
  4403d0:	8ce70188 	lw	a3,392(a3)
  4403d4:	8f9989fc 	lw	t9,-30212(gp)
  4403d8:	00000000 	nop
  4403dc:	0320f809 	jalr	t9
  4403e0:	00000000 	nop
  4403e4:	8fdc0018 	lw	gp,24(s8)
  4403e8:	10400061 	beqz	v0,440570 <RSA_check_signature+0x46c>
  4403ec:	00000000 	nop
	    {
		time_t now;

		DBG(DBG_CONTROL,
  4403f0:	8f8284f8 	lw	v0,-31496(gp)
  4403f4:	00000000 	nop
  4403f8:	8c420000 	lw	v0,0(v0)
  4403fc:	00000000 	nop
  440400:	30420010 	andi	v0,v0,0x10
  440404:	1040001b 	beqz	v0,440474 <RSA_check_signature+0x370>
  440408:	00000000 	nop
  44040c:	8fc3007c 	lw	v1,124(s8)
  440410:	8f82802c 	lw	v0,-32724(gp)
  440414:	00000000 	nop
  440418:	2442e1d8 	addiu	v0,v0,-7720
  44041c:	00000000 	nop
  440420:	afa20010 	sw	v0,16(sp)
  440424:	27c40088 	addiu	a0,s8,136
  440428:	24050200 	li	a1,512
  44042c:	8c660030 	lw	a2,48(v1)
  440430:	8c670034 	lw	a3,52(v1)
  440434:	8f99876c 	lw	t9,-30868(gp)
  440438:	00000000 	nop
  44043c:	0320f809 	jalr	t9
  440440:	00000000 	nop
  440444:	8fdc0018 	lw	gp,24(s8)
  440448:	00000000 	nop
  44044c:	8f84802c 	lw	a0,-32724(gp)
  440450:	00000000 	nop
  440454:	2484e1f4 	addiu	a0,a0,-7692
  440458:	27c50088 	addiu	a1,s8,136
  44045c:	8f9983b8 	lw	t9,-31816(gp)
  440460:	00000000 	nop
  440464:	0320f809 	jalr	t9
  440468:	00000000 	nop
  44046c:	8fdc0018 	lw	gp,24(s8)
  440470:	00000000 	nop
		    dntoa_or_null(buf, IDTOA_BUF, p->issuer, "%any");
		    DBG_log("key issuer CA is '%s'", buf);
		)

		/* check if found public key has expired */
		time(&now);
  440474:	27c40288 	addiu	a0,s8,648
  440478:	8f9984b4 	lw	t9,-31564(gp)
  44047c:	00000000 	nop
  440480:	0320f809 	jalr	t9
  440484:	00000000 	nop
  440488:	8fdc0018 	lw	gp,24(s8)
  44048c:	00000000 	nop
		if (p->until != UNDEFINED_TIME && p->until < now)
  440490:	8fc2007c 	lw	v0,124(s8)
  440494:	00000000 	nop
  440498:	8c42002c 	lw	v0,44(v0)
  44049c:	00000000 	nop
  4404a0:	1040001f 	beqz	v0,440520 <RSA_check_signature+0x41c>
  4404a4:	00000000 	nop
  4404a8:	8fc2007c 	lw	v0,124(s8)
  4404ac:	00000000 	nop
  4404b0:	8c43002c 	lw	v1,44(v0)
  4404b4:	8fc20288 	lw	v0,648(s8)
  4404b8:	00000000 	nop
  4404bc:	0062102a 	slt	v0,v1,v0
  4404c0:	10400017 	beqz	v0,440520 <RSA_check_signature+0x41c>
  4404c4:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS,
  4404c8:	24040003 	li	a0,3
  4404cc:	8f85802c 	lw	a1,-32724(gp)
  4404d0:	00000000 	nop
  4404d4:	24a5e20c 	addiu	a1,a1,-7668
  4404d8:	8f998c48 	lw	t9,-29624(gp)
  4404dc:	00000000 	nop
  4404e0:	0320f809 	jalr	t9
  4404e4:	00000000 	nop
  4404e8:	8fdc0018 	lw	gp,24(s8)
  4404ec:	00000000 	nop
			"cached RSA public key has expired and has been deleted");
		    *pp = free_public_key(p);
  4404f0:	8fc4007c 	lw	a0,124(s8)
  4404f4:	8f9985f4 	lw	t9,-31244(gp)
  4404f8:	00000000 	nop
  4404fc:	0320f809 	jalr	t9
  440500:	00000000 	nop
  440504:	8fdc0018 	lw	gp,24(s8)
  440508:	00401821 	move	v1,v0
  44050c:	8fc20080 	lw	v0,128(s8)
  440510:	00000000 	nop
  440514:	ac430000 	sw	v1,0(v0)
		    continue; /* continue with next public key */
  440518:	10000019 	b	440580 <RSA_check_signature+0x47c>
  44051c:	00000000 	nop
		}

		if (take_a_crack(&s, &p->u.rsa, "preloaded key"))
  440520:	8fc2007c 	lw	v0,124(s8)
  440524:	00000000 	nop
  440528:	24420040 	addiu	v0,v0,64
  44052c:	27c40028 	addiu	a0,s8,40
  440530:	00402821 	move	a1,v0
  440534:	8f86802c 	lw	a2,-32724(gp)
  440538:	00000000 	nop
  44053c:	24c6e244 	addiu	a2,a2,-7612
  440540:	8f998034 	lw	t9,-32716(gp)
  440544:	00000000 	nop
  440548:	2739fe34 	addiu	t9,t9,-460
  44054c:	00000000 	nop
  440550:	0320f809 	jalr	t9
  440554:	00000000 	nop
  440558:	8fdc0018 	lw	gp,24(s8)
  44055c:	10400004 	beqz	v0,440570 <RSA_check_signature+0x46c>
  440560:	00000000 	nop
		return STF_OK;
  440564:	24020002 	li	v0,2
  440568:	100000ee 	b	440924 <RSA_check_signature+0x820>
  44056c:	00000000 	nop
	    }
	    pp = &p->next;
  440570:	8fc2007c 	lw	v0,124(s8)
  440574:	00000000 	nop
  440578:	24420068 	addiu	v0,v0,104
  44057c:	afc20080 	sw	v0,128(s8)
  440580:	8fc20080 	lw	v0,128(s8)
  440584:	00000000 	nop
  440588:	8c420000 	lw	v0,0(v0)
  44058c:	00000000 	nop
  440590:	afc2007c 	sw	v0,124(s8)
  440594:	1000ff6f 	b	440354 <RSA_check_signature+0x250>
  440598:	00000000 	nop
	}
    }

    /* if no key was found (evidenced by best_ugh == NULL)
     * and that side of connection is key_from_DNS_on_demand
     * then go search DNS for keys for peer.
     */
    if (s.best_ugh == NULL && c->that.key_from_DNS_on_demand)
  44059c:	8fc20038 	lw	v0,56(s8)
  4405a0:	00000000 	nop
  4405a4:	1440004a 	bnez	v0,4406d0 <RSA_check_signature+0x5cc>
  4405a8:	00000000 	nop
  4405ac:	8fc20020 	lw	v0,32(s8)
  4405b0:	00000000 	nop
  4405b4:	8c420160 	lw	v0,352(v0)
  4405b8:	00000000 	nop
  4405bc:	10400044 	beqz	v0,4406d0 <RSA_check_signature+0x5cc>
  4405c0:	00000000 	nop
    {
	struct pubkeyrec *kr;

	if (keys_from_dns == NULL)
  4405c4:	8f828394 	lw	v0,-31852(gp)
  4405c8:	00000000 	nop
  4405cc:	8c420000 	lw	v0,0(v0)
  4405d0:	00000000 	nop
  4405d4:	14400004 	bnez	v0,4405e8 <RSA_check_signature+0x4e4>
  4405d8:	00000000 	nop
	    return STF_SUSPEND;	/* ask for asynch DNS lookup */
  4405dc:	24020001 	li	v0,1
  4405e0:	100000d0 	b	440924 <RSA_check_signature+0x820>
  4405e4:	00000000 	nop

	for (kr = keys_from_dns; kr != NULL; kr = kr->next)
  4405e8:	8f828394 	lw	v0,-31852(gp)
  4405ec:	00000000 	nop
  4405f0:	8c420000 	lw	v0,0(v0)
  4405f4:	00000000 	nop
  4405f8:	afc20080 	sw	v0,128(s8)
  4405fc:	8fc20080 	lw	v0,128(s8)
  440600:	00000000 	nop
  440604:	14400003 	bnez	v0,440614 <RSA_check_signature+0x510>
  440608:	00000000 	nop
  44060c:	10000029 	b	4406b4 <RSA_check_signature+0x5b0>
  440610:	00000000 	nop
	{
	    if (kr->alg == PUBKEY_ALG_RSA)
  440614:	8fc20080 	lw	v0,128(s8)
  440618:	00000000 	nop
  44061c:	8c43003c 	lw	v1,60(v0)
  440620:	24020001 	li	v0,1
  440624:	1462001c 	bne	v1,v0,440698 <RSA_check_signature+0x594>
  440628:	00000000 	nop
	    {
		if (take_a_crack(&s, &kr->u.rsa, "key from DNS KEY"))
  44062c:	8fc20080 	lw	v0,128(s8)
  440630:	00000000 	nop
  440634:	24420040 	addiu	v0,v0,64
  440638:	27c40028 	addiu	a0,s8,40
  44063c:	00402821 	move	a1,v0
  440640:	8f86802c 	lw	a2,-32724(gp)
  440644:	00000000 	nop
  440648:	24c6e254 	addiu	a2,a2,-7596
  44064c:	8f998034 	lw	t9,-32716(gp)
  440650:	00000000 	nop
  440654:	2739fe34 	addiu	t9,t9,-460
  440658:	00000000 	nop
  44065c:	0320f809 	jalr	t9
  440660:	00000000 	nop
  440664:	8fdc0018 	lw	gp,24(s8)
  440668:	1040000b 	beqz	v0,440698 <RSA_check_signature+0x594>
  44066c:	00000000 	nop
		{
		    free_public_keys(&keys_from_dns);
  440670:	8f848394 	lw	a0,-31852(gp)
  440674:	8f998a5c 	lw	t9,-30116(gp)
  440678:	00000000 	nop
  44067c:	0320f809 	jalr	t9
  440680:	00000000 	nop
  440684:	8fdc0018 	lw	gp,24(s8)
  440688:	00000000 	nop
		    return STF_OK;
  44068c:	24020002 	li	v0,2
  440690:	100000a4 	b	440924 <RSA_check_signature+0x820>
  440694:	00000000 	nop
  440698:	8fc20080 	lw	v0,128(s8)
  44069c:	00000000 	nop
  4406a0:	8c420068 	lw	v0,104(v0)
  4406a4:	00000000 	nop
  4406a8:	afc20080 	sw	v0,128(s8)
  4406ac:	1000ffd3 	b	4405fc <RSA_check_signature+0x4f8>
  4406b0:	00000000 	nop
		}
	    }
	}

	free_public_keys(&keys_from_dns);
  4406b4:	8f848394 	lw	a0,-31852(gp)
  4406b8:	8f998a5c 	lw	t9,-30116(gp)
  4406bc:	00000000 	nop
  4406c0:	0320f809 	jalr	t9
  4406c4:	00000000 	nop
  4406c8:	8fdc0018 	lw	gp,24(s8)
  4406cc:	00000000 	nop
    }

    /* no acceptable key was found: diagnose */
    {
	char id_buf[IDTOA_BUF];	/* arbitrary limit on length of ID reported */

	(void) idtoa(&st->st_connection->that.id, id_buf, sizeof(id_buf));
  4406d0:	8fc204a0 	lw	v0,1184(s8)
  4406d4:	00000000 	nop
  4406d8:	8c42000c 	lw	v0,12(v0)
  4406dc:	00000000 	nop
  4406e0:	244200e0 	addiu	v0,v0,224
  4406e4:	00402021 	move	a0,v0
  4406e8:	27c50290 	addiu	a1,s8,656
  4406ec:	24060200 	li	a2,512
  4406f0:	8f998798 	lw	t9,-30824(gp)
  4406f4:	00000000 	nop
  4406f8:	0320f809 	jalr	t9
  4406fc:	00000000 	nop
  440700:	8fdc0018 	lw	gp,24(s8)
  440704:	00000000 	nop

	if (s.best_ugh == NULL)
  440708:	8fc20038 	lw	v0,56(s8)
  44070c:	00000000 	nop
  440710:	14400020 	bnez	v0,440794 <RSA_check_signature+0x690>
  440714:	00000000 	nop
	{
	    if (dns_ugh == NULL)
  440718:	8fc20078 	lw	v0,120(s8)
  44071c:	00000000 	nop
  440720:	1440000d 	bnez	v0,440758 <RSA_check_signature+0x654>
  440724:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "no RSA public key known for '%s'"
  440728:	24040003 	li	a0,3
  44072c:	8f85802c 	lw	a1,-32724(gp)
  440730:	00000000 	nop
  440734:	24a5e268 	addiu	a1,a1,-7576
  440738:	27c60290 	addiu	a2,s8,656
  44073c:	8f998c48 	lw	t9,-29624(gp)
  440740:	00000000 	nop
  440744:	0320f809 	jalr	t9
  440748:	00000000 	nop
  44074c:	8fdc0018 	lw	gp,24(s8)
  440750:	1000000d 	b	440788 <RSA_check_signature+0x684>
  440754:	00000000 	nop
		    , id_buf);
	    else
		loglog(RC_LOG_SERIOUS, "no RSA public key known for '%s'"
  440758:	24040003 	li	a0,3
  44075c:	8f85802c 	lw	a1,-32724(gp)
  440760:	00000000 	nop
  440764:	24a5e28c 	addiu	a1,a1,-7540
  440768:	27c60290 	addiu	a2,s8,656
  44076c:	8fc70078 	lw	a3,120(s8)
  440770:	8f998c48 	lw	t9,-29624(gp)
  440774:	00000000 	nop
  440778:	0320f809 	jalr	t9
  44077c:	00000000 	nop
  440780:	8fdc0018 	lw	gp,24(s8)
  440784:	00000000 	nop
		    "; DNS search for KEY failed (%s)"
		    , id_buf, dns_ugh);

	    /* ??? is this the best code there is? */
	    return STF_FAIL + INVALID_KEY_INFORMATION;
  440788:	24020015 	li	v0,21
  44078c:	10000065 	b	440924 <RSA_check_signature+0x820>
  440790:	00000000 	nop
	}

	if (s.best_ugh[0] == '9')
  440794:	8fc20038 	lw	v0,56(s8)
  440798:	00000000 	nop
  44079c:	80430000 	lb	v1,0(v0)
  4407a0:	24020039 	li	v0,57
  4407a4:	14620012 	bne	v1,v0,4407f0 <RSA_check_signature+0x6ec>
  4407a8:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "%s", s.best_ugh + 1);
  4407ac:	8fc20038 	lw	v0,56(s8)
  4407b0:	00000000 	nop
  4407b4:	24420001 	addiu	v0,v0,1
  4407b8:	24040003 	li	a0,3
  4407bc:	8f85802c 	lw	a1,-32724(gp)
  4407c0:	00000000 	nop
  4407c4:	24a5e2d0 	addiu	a1,a1,-7472
  4407c8:	00403021 	move	a2,v0
  4407cc:	8f998c48 	lw	t9,-29624(gp)
  4407d0:	00000000 	nop
  4407d4:	0320f809 	jalr	t9
  4407d8:	00000000 	nop
  4407dc:	8fdc0018 	lw	gp,24(s8)
  4407e0:	00000000 	nop
	    return STF_FAIL + INVALID_HASH_INFORMATION;
  4407e4:	2402001b 	li	v0,27
  4407e8:	1000004e 	b	440924 <RSA_check_signature+0x820>
  4407ec:	00000000 	nop
	}
	else
	{
	    if (s.tried_cnt == 1)
  4407f0:	8fc3003c 	lw	v1,60(s8)
  4407f4:	24020001 	li	v0,1
  4407f8:	14620025 	bne	v1,v0,440890 <RSA_check_signature+0x78c>
  4407fc:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS
  440800:	27c20028 	addiu	v0,s8,40
  440804:	24420018 	addiu	v0,v0,24
  440808:	24040003 	li	a0,3
  44080c:	8f85802c 	lw	a1,-32724(gp)
  440810:	00000000 	nop
  440814:	24a5e2d4 	addiu	a1,a1,-7468
  440818:	27c60290 	addiu	a2,s8,656
  44081c:	00403821 	move	a3,v0
  440820:	8f998c48 	lw	t9,-29624(gp)
  440824:	00000000 	nop
  440828:	0320f809 	jalr	t9
  44082c:	00000000 	nop
  440830:	8fdc0018 	lw	gp,24(s8)
  440834:	00000000 	nop
		    , "Signature check (on %s) failed (wrong key?); tried%s"
		    , id_buf, s.tried);
		DBG(DBG_CONTROL,
  440838:	8f8284f8 	lw	v0,-31496(gp)
  44083c:	00000000 	nop
  440840:	8c420000 	lw	v0,0(v0)
  440844:	00000000 	nop
  440848:	30420010 	andi	v0,v0,0x10
  44084c:	10400034 	beqz	v0,440920 <RSA_check_signature+0x81c>
  440850:	00000000 	nop
  440854:	8fc20038 	lw	v0,56(s8)
  440858:	00000000 	nop
  44085c:	24420001 	addiu	v0,v0,1
  440860:	8f84802c 	lw	a0,-32724(gp)
  440864:	00000000 	nop
  440868:	2484e30c 	addiu	a0,a0,-7412
  44086c:	27c50290 	addiu	a1,s8,656
  440870:	00403021 	move	a2,v0
  440874:	8f9983b8 	lw	t9,-31816(gp)
  440878:	00000000 	nop
  44087c:	0320f809 	jalr	t9
  440880:	00000000 	nop
  440884:	8fdc0018 	lw	gp,24(s8)
  440888:	10000025 	b	440920 <RSA_check_signature+0x81c>
  44088c:	00000000 	nop
		    DBG_log("public key for %s failed:"
			" decrypted SIG payload into a malformed ECB (%s)"
			, id_buf, s.best_ugh + 1));
	    }
	    else
	    {
		loglog(RC_LOG_SERIOUS
  440890:	27c20028 	addiu	v0,s8,40
  440894:	24420018 	addiu	v0,v0,24
  440898:	24040003 	li	a0,3
  44089c:	8f85802c 	lw	a1,-32724(gp)
  4408a0:	00000000 	nop
  4408a4:	24a5e358 	addiu	a1,a1,-7336
  4408a8:	27c60290 	addiu	a2,s8,656
  4408ac:	00403821 	move	a3,v0
  4408b0:	8f998c48 	lw	t9,-29624(gp)
  4408b4:	00000000 	nop
  4408b8:	0320f809 	jalr	t9
  4408bc:	00000000 	nop
  4408c0:	8fdc0018 	lw	gp,24(s8)
  4408c4:	00000000 	nop
		    , "Signature check (on %s) failed:"
		      " tried%s keys but none worked."
		    , id_buf, s.tried);
		DBG(DBG_CONTROL,
  4408c8:	8f8284f8 	lw	v0,-31496(gp)
  4408cc:	00000000 	nop
  4408d0:	8c420000 	lw	v0,0(v0)
  4408d4:	00000000 	nop
  4408d8:	30420010 	andi	v0,v0,0x10
  4408dc:	10400010 	beqz	v0,440920 <RSA_check_signature+0x81c>
  4408e0:	00000000 	nop
  4408e4:	8fc20038 	lw	v0,56(s8)
  4408e8:	00000000 	nop
  4408ec:	24420001 	addiu	v0,v0,1
  4408f0:	8f84802c 	lw	a0,-32724(gp)
  4408f4:	00000000 	nop
  4408f8:	2484e398 	addiu	a0,a0,-7272
  4408fc:	8fc5003c 	lw	a1,60(s8)
  440900:	27c60290 	addiu	a2,s8,656
  440904:	00403821 	move	a3,v0
  440908:	8f9983b8 	lw	t9,-31816(gp)
  44090c:	00000000 	nop
  440910:	0320f809 	jalr	t9
  440914:	00000000 	nop
  440918:	8fdc0018 	lw	gp,24(s8)
  44091c:	00000000 	nop
		    DBG_log("all %d public keys for %s failed:"
			" best decrypted SIG payload into a malformed ECB (%s)"
			, s.tried_cnt, id_buf, s.best_ugh + 1));
	    }
	    return STF_FAIL + INVALID_KEY_INFORMATION;
  440920:	24020015 	li	v0,21
	}
    }
}
  440924:	03c0e821 	move	sp,s8
  440928:	8fbf0498 	lw	ra,1176(sp)
  44092c:	8fbe0494 	lw	s8,1172(sp)
  440930:	27bd04a0 	addiu	sp,sp,1184
  440934:	03e00008 	jr	ra
  440938:	00000000 	nop

0044093c <accept_nonce>:
  44093c:	3c1c0fbd 	lui	gp,0xfbd
  440940:	279cc034 	addiu	gp,gp,-16332
  440944:	0399e021 	addu	gp,gp,t9
  440948:	27bdffc8 	addiu	sp,sp,-56
  44094c:	afbc0018 	sw	gp,24(sp)
  440950:	afbf0034 	sw	ra,52(sp)
  440954:	afbe0030 	sw	s8,48(sp)
  440958:	afbc002c 	sw	gp,44(sp)
  44095c:	afb00028 	sw	s0,40(sp)
  440960:	03a0f021 	move	s8,sp
  440964:	afc40038 	sw	a0,56(s8)
  440968:	afc5003c 	sw	a1,60(s8)
  44096c:	afc60040 	sw	a2,64(s8)

static notification_t
accept_nonce(struct msg_digest *md, chunk_t *dest, const char *name)
{
    pb_stream *nonce_pbs = &md->chain[ISAKMP_NEXT_NONCE]->pbs;
  440970:	8fc20038 	lw	v0,56(s8)
  440974:	00000000 	nop
  440978:	8c4204d0 	lw	v0,1232(v0)
  44097c:	00000000 	nop
  440980:	afc20020 	sw	v0,32(s8)
    size_t len = pbs_left(nonce_pbs);
  440984:	8fc20020 	lw	v0,32(s8)
  440988:	00000000 	nop
  44098c:	8c430014 	lw	v1,20(v0)
  440990:	8fc20020 	lw	v0,32(s8)
  440994:	00000000 	nop
  440998:	8c420010 	lw	v0,16(v0)
  44099c:	00000000 	nop
  4409a0:	00621023 	subu	v0,v1,v0
  4409a4:	afc20024 	sw	v0,36(s8)

    if (len < MINIMUM_NONCE_SIZE || MAXIMUM_NONCE_SIZE < len)
  4409a8:	8fc20024 	lw	v0,36(s8)
  4409ac:	00000000 	nop
  4409b0:	2c420008 	sltiu	v0,v0,8
  4409b4:	14400008 	bnez	v0,4409d8 <accept_nonce+0x9c>
  4409b8:	00000000 	nop
  4409bc:	8fc20024 	lw	v0,36(s8)
  4409c0:	00000000 	nop
  4409c4:	2c420101 	sltiu	v0,v0,257
  4409c8:	10400003 	beqz	v0,4409d8 <accept_nonce+0x9c>
  4409cc:	00000000 	nop
  4409d0:	10000012 	b	440a1c <accept_nonce+0xe0>
  4409d4:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "%s length not between %d and %d"
  4409d8:	24020100 	li	v0,256
  4409dc:	afa20010 	sw	v0,16(sp)
  4409e0:	24040003 	li	a0,3
  4409e4:	8f85802c 	lw	a1,-32724(gp)
  4409e8:	00000000 	nop
  4409ec:	24a5e3f0 	addiu	a1,a1,-7184
  4409f0:	8fc60040 	lw	a2,64(s8)
  4409f4:	24070008 	li	a3,8
  4409f8:	8f998c48 	lw	t9,-29624(gp)
  4409fc:	00000000 	nop
  440a00:	0320f809 	jalr	t9
  440a04:	00000000 	nop
  440a08:	8fdc0018 	lw	gp,24(s8)
  440a0c:	00000000 	nop
	    , name , MINIMUM_NONCE_SIZE, MAXIMUM_NONCE_SIZE);
	return PAYLOAD_MALFORMED;	/* ??? */
  440a10:	24020010 	li	v0,16
  440a14:	10000021 	b	440a9c <accept_nonce+0x160>
  440a18:	00000000 	nop
    }
    clonereplacechunk(*dest, nonce_pbs->cur, len, "nonce");
  440a1c:	8fc2003c 	lw	v0,60(s8)
  440a20:	00000000 	nop
  440a24:	8c420000 	lw	v0,0(v0)
  440a28:	00000000 	nop
  440a2c:	10400009 	beqz	v0,440a54 <accept_nonce+0x118>
  440a30:	00000000 	nop
  440a34:	8fc2003c 	lw	v0,60(s8)
  440a38:	00000000 	nop
  440a3c:	8c440000 	lw	a0,0(v0)
  440a40:	8f998094 	lw	t9,-32620(gp)
  440a44:	00000000 	nop
  440a48:	0320f809 	jalr	t9
  440a4c:	00000000 	nop
  440a50:	8fdc0018 	lw	gp,24(s8)
  440a54:	8fd0003c 	lw	s0,60(s8)
  440a58:	8fc40020 	lw	a0,32(s8)
  440a5c:	8fc30024 	lw	v1,36(s8)
  440a60:	8fc2003c 	lw	v0,60(s8)
  440a64:	00000000 	nop
  440a68:	ac430004 	sw	v1,4(v0)
  440a6c:	8c840010 	lw	a0,16(a0)
  440a70:	00602821 	move	a1,v1
  440a74:	8f86802c 	lw	a2,-32724(gp)
  440a78:	00000000 	nop
  440a7c:	24c6e410 	addiu	a2,a2,-7152
  440a80:	8f998c04 	lw	t9,-29692(gp)
  440a84:	00000000 	nop
  440a88:	0320f809 	jalr	t9
  440a8c:	00000000 	nop
  440a90:	8fdc0018 	lw	gp,24(s8)
  440a94:	ae020000 	sw	v0,0(s0)
    return NOTHING_WRONG;
  440a98:	00001021 	move	v0,zero
}
  440a9c:	03c0e821 	move	sp,s8
  440aa0:	8fbf0034 	lw	ra,52(sp)
  440aa4:	8fbe0030 	lw	s8,48(sp)
  440aa8:	8fb00028 	lw	s0,40(sp)
  440aac:	27bd0038 	addiu	sp,sp,56
  440ab0:	03e00008 	jr	ra
  440ab4:	00000000 	nop

00440ab8 <encrypt_message>:
  440ab8:	3c1c0fbd 	lui	gp,0xfbd
  440abc:	279cbeb8 	addiu	gp,gp,-16712
  440ac0:	0399e021 	addu	gp,gp,t9
  440ac4:	27bdffc0 	addiu	sp,sp,-64
  440ac8:	afbc0018 	sw	gp,24(sp)
  440acc:	afbf0038 	sw	ra,56(sp)
  440ad0:	afbe0034 	sw	s8,52(sp)
  440ad4:	afbc0030 	sw	gp,48(sp)
  440ad8:	03a0f021 	move	s8,sp
  440adc:	afc40040 	sw	a0,64(s8)
  440ae0:	afc50044 	sw	a1,68(s8)

/* encrypt message, sans fixed part of header
 * IV is fetched from st->st_new_iv and stored into st->st_iv.
 * The theory is that there will be no "backing out", so we commit to IV.
 * We also close the pbs.
 */
bool
encrypt_message(pb_stream *pbs, struct state *st)
{
    const struct encrypt_desc *e = st->st_oakley.encrypter;
  440ae4:	8fc20044 	lw	v0,68(s8)
  440ae8:	00000000 	nop
  440aec:	8c420020 	lw	v0,32(v0)
  440af0:	00000000 	nop
  440af4:	afc20020 	sw	v0,32(s8)
    u_int8_t *enc_start = pbs->start + sizeof(struct isakmp_hdr);
  440af8:	8fc20040 	lw	v0,64(s8)
  440afc:	00000000 	nop
  440b00:	8c42000c 	lw	v0,12(v0)
  440b04:	00000000 	nop
  440b08:	2442001c 	addiu	v0,v0,28
  440b0c:	afc20024 	sw	v0,36(s8)
    size_t enc_len = pbs_offset(pbs) - sizeof(struct isakmp_hdr);
  440b10:	8fc20040 	lw	v0,64(s8)
  440b14:	00000000 	nop
  440b18:	8c430010 	lw	v1,16(v0)
  440b1c:	8fc20040 	lw	v0,64(s8)
  440b20:	00000000 	nop
  440b24:	8c42000c 	lw	v0,12(v0)
  440b28:	00000000 	nop
  440b2c:	00621023 	subu	v0,v1,v0
  440b30:	2442ffe4 	addiu	v0,v0,-28
  440b34:	afc20028 	sw	v0,40(s8)

    DBG_cond_dump(DBG_CRYPT | DBG_RAW, "encrypting:\n", enc_start, enc_len);
  440b38:	8f8284f8 	lw	v0,-31496(gp)
  440b3c:	00000000 	nop
  440b40:	8c420000 	lw	v0,0(v0)
  440b44:	00000000 	nop
  440b48:	30420003 	andi	v0,v0,0x3
  440b4c:	1040000c 	beqz	v0,440b80 <encrypt_message+0xc8>
  440b50:	00000000 	nop
  440b54:	8f84802c 	lw	a0,-32724(gp)
  440b58:	00000000 	nop
  440b5c:	2484e418 	addiu	a0,a0,-7144
  440b60:	8fc50024 	lw	a1,36(s8)
  440b64:	8fc60028 	lw	a2,40(s8)
  440b68:	8f9984ec 	lw	t9,-31508(gp)
  440b6c:	00000000 	nop
  440b70:	0320f809 	jalr	t9
  440b74:	00000000 	nop
  440b78:	8fdc0018 	lw	gp,24(s8)
  440b7c:	00000000 	nop

    /* Pad up to multiple of encryption blocksize.
     * See the description associated with the definition of
     * struct isakmp_hdr in packet.h.
     */
    {
	size_t padding = pad_up(enc_len, e->enc_blocksize);
  440b80:	8fc20020 	lw	v0,32(s8)
  440b84:	00000000 	nop
  440b88:	8c43000c 	lw	v1,12(v0)
  440b8c:	8fc20028 	lw	v0,40(s8)
  440b90:	00000000 	nop
  440b94:	00431021 	addu	v0,v0,v1
  440b98:	2443ffff 	addiu	v1,v0,-1
  440b9c:	8fc20020 	lw	v0,32(s8)
  440ba0:	00000000 	nop
  440ba4:	8c42000c 	lw	v0,12(v0)
  440ba8:	00000000 	nop
  440bac:	0062001b 	divu	zero,v1,v0
  440bb0:	00001810 	mfhi	v1
  440bb4:	14400002 	bnez	v0,440bc0 <encrypt_message+0x108>
  440bb8:	00000000 	nop
  440bbc:	0007000d 	break	0x7
  440bc0:	8fc20020 	lw	v0,32(s8)
  440bc4:	00000000 	nop
  440bc8:	8c42000c 	lw	v0,12(v0)
  440bcc:	00000000 	nop
  440bd0:	00431023 	subu	v0,v0,v1
  440bd4:	2442ffff 	addiu	v0,v0,-1
  440bd8:	afc2002c 	sw	v0,44(s8)

	if (padding != 0)
  440bdc:	8fc2002c 	lw	v0,44(s8)
  440be0:	00000000 	nop
  440be4:	10400015 	beqz	v0,440c3c <encrypt_message+0x184>
  440be8:	00000000 	nop
	{
	    if (!out_zero(padding, pbs, "encryption padding"))
  440bec:	8fc4002c 	lw	a0,44(s8)
  440bf0:	8fc50040 	lw	a1,64(s8)
  440bf4:	8f86802c 	lw	a2,-32724(gp)
  440bf8:	00000000 	nop
  440bfc:	24c6e428 	addiu	a2,a2,-7128
  440c00:	8f998a20 	lw	t9,-30176(gp)
  440c04:	00000000 	nop
  440c08:	0320f809 	jalr	t9
  440c0c:	00000000 	nop
  440c10:	8fdc0018 	lw	gp,24(s8)
  440c14:	14400004 	bnez	v0,440c28 <encrypt_message+0x170>
  440c18:	00000000 	nop
		return FALSE;
  440c1c:	00001021 	move	v0,zero
  440c20:	10000074 	b	440df4 <encrypt_message+0x33c>
  440c24:	00000000 	nop
	    enc_len += padding;
  440c28:	8fc20028 	lw	v0,40(s8)
  440c2c:	8fc3002c 	lw	v1,44(s8)
  440c30:	00000000 	nop
  440c34:	00431021 	addu	v0,v0,v1
  440c38:	afc20028 	sw	v0,40(s8)
	}
    }

    DBG(DBG_CRYPT, DBG_log("encrypting using %s", enum_show(&oakley_enc_names, st->st_oakley.encrypt)));
  440c3c:	8f8284f8 	lw	v0,-31496(gp)
  440c40:	00000000 	nop
  440c44:	8c420000 	lw	v0,0(v0)
  440c48:	00000000 	nop
  440c4c:	30420002 	andi	v0,v0,0x2
  440c50:	10400016 	beqz	v0,440cac <encrypt_message+0x1f4>
  440c54:	00000000 	nop
  440c58:	8fc20044 	lw	v0,68(s8)
  440c5c:	00000000 	nop
  440c60:	9442001c 	lhu	v0,28(v0)
  440c64:	8f848a50 	lw	a0,-30128(gp)
  440c68:	00402821 	move	a1,v0
  440c6c:	8f9987fc 	lw	t9,-30724(gp)
  440c70:	00000000 	nop
  440c74:	0320f809 	jalr	t9
  440c78:	00000000 	nop
  440c7c:	8fdc0018 	lw	gp,24(s8)
  440c80:	00000000 	nop
  440c84:	8f84802c 	lw	a0,-32724(gp)
  440c88:	00000000 	nop
  440c8c:	2484e43c 	addiu	a0,a0,-7108
  440c90:	00402821 	move	a1,v0
  440c94:	8f9983b8 	lw	t9,-31816(gp)
  440c98:	00000000 	nop
  440c9c:	0320f809 	jalr	t9
  440ca0:	00000000 	nop
  440ca4:	8fdc0018 	lw	gp,24(s8)
  440ca8:	00000000 	nop

    /* e->crypt(TRUE, enc_start, enc_len, st); */
    crypto_cbc_encrypt(e, TRUE, enc_start, enc_len, st);
  440cac:	8fc20044 	lw	v0,68(s8)
  440cb0:	00000000 	nop
  440cb4:	afa20010 	sw	v0,16(sp)
  440cb8:	8fc40020 	lw	a0,32(s8)
  440cbc:	24050001 	li	a1,1
  440cc0:	8fc60024 	lw	a2,36(s8)
  440cc4:	8fc70028 	lw	a3,40(s8)
  440cc8:	8f9983ac 	lw	t9,-31828(gp)
  440ccc:	00000000 	nop
  440cd0:	0320f809 	jalr	t9
  440cd4:	00000000 	nop
  440cd8:	8fdc0018 	lw	gp,24(s8)
  440cdc:	00000000 	nop

    update_iv(st);
  440ce0:	8fc20044 	lw	v0,68(s8)
  440ce4:	00000000 	nop
  440ce8:	8c420248 	lw	v0,584(v0)
  440cec:	00000000 	nop
  440cf0:	2c420040 	sltiu	v0,v0,64
  440cf4:	1440000d 	bnez	v0,440d2c <encrypt_message+0x274>
  440cf8:	00000000 	nop
  440cfc:	8f84802c 	lw	a0,-32724(gp)
  440d00:	00000000 	nop
  440d04:	2484e450 	addiu	a0,a0,-7088
  440d08:	8f85802c 	lw	a1,-32724(gp)
  440d0c:	00000000 	nop
  440d10:	24a5d59c 	addiu	a1,a1,-10852
  440d14:	240607c7 	li	a2,1991
  440d18:	8f998bb8 	lw	t9,-29768(gp)
  440d1c:	00000000 	nop
  440d20:	0320f809 	jalr	t9
  440d24:	00000000 	nop
  440d28:	8fdc0018 	lw	gp,24(s8)
  440d2c:	8fc20044 	lw	v0,68(s8)
  440d30:	00000000 	nop
  440d34:	24440184 	addiu	a0,v0,388
  440d38:	8fc20044 	lw	v0,68(s8)
  440d3c:	00000000 	nop
  440d40:	244501c4 	addiu	a1,v0,452
  440d44:	8fc20044 	lw	v0,68(s8)
  440d48:	00000000 	nop
  440d4c:	8c430248 	lw	v1,584(v0)
  440d50:	8fc20044 	lw	v0,68(s8)
  440d54:	00000000 	nop
  440d58:	ac430244 	sw	v1,580(v0)
  440d5c:	00603021 	move	a2,v1
  440d60:	8f998a30 	lw	t9,-30160(gp)
  440d64:	00000000 	nop
  440d68:	0320f809 	jalr	t9
  440d6c:	00000000 	nop
  440d70:	8fdc0018 	lw	gp,24(s8)
  440d74:	00000000 	nop
    DBG_cond_dump(DBG_CRYPT, "next IV:", st->st_iv, st->st_iv_len);
  440d78:	8f8284f8 	lw	v0,-31496(gp)
  440d7c:	00000000 	nop
  440d80:	8c420000 	lw	v0,0(v0)
  440d84:	00000000 	nop
  440d88:	30420002 	andi	v0,v0,0x2
  440d8c:	10400011 	beqz	v0,440dd4 <encrypt_message+0x31c>
  440d90:	00000000 	nop
  440d94:	8fc20044 	lw	v0,68(s8)
  440d98:	00000000 	nop
  440d9c:	24420184 	addiu	v0,v0,388
  440da0:	8f84802c 	lw	a0,-32724(gp)
  440da4:	00000000 	nop
  440da8:	2484e478 	addiu	a0,a0,-7048
  440dac:	00402821 	move	a1,v0
  440db0:	8fc20044 	lw	v0,68(s8)
  440db4:	00000000 	nop
  440db8:	8c460244 	lw	a2,580(v0)
  440dbc:	8f9984ec 	lw	t9,-31508(gp)
  440dc0:	00000000 	nop
  440dc4:	0320f809 	jalr	t9
  440dc8:	00000000 	nop
  440dcc:	8fdc0018 	lw	gp,24(s8)
  440dd0:	00000000 	nop
    close_message(pbs);
  440dd4:	8fc40040 	lw	a0,64(s8)
  440dd8:	8f998324 	lw	t9,-31964(gp)
  440ddc:	00000000 	nop
  440de0:	0320f809 	jalr	t9
  440de4:	00000000 	nop
  440de8:	8fdc0018 	lw	gp,24(s8)
  440dec:	00000000 	nop
    return TRUE;
  440df0:	24020001 	li	v0,1
}
  440df4:	03c0e821 	move	sp,s8
  440df8:	8fbf0038 	lw	ra,56(sp)
  440dfc:	8fbe0034 	lw	s8,52(sp)
  440e00:	27bd0040 	addiu	sp,sp,64
  440e04:	03e00008 	jr	ra
  440e08:	00000000 	nop

00440e0c <quick_mode_hash12>:
  440e0c:	3c1c0fbd 	lui	gp,0xfbd
  440e10:	279cbb64 	addiu	gp,gp,-17564
  440e14:	0399e021 	addu	gp,gp,t9
  440e18:	27bdfe78 	addiu	sp,sp,-392
  440e1c:	afbc0010 	sw	gp,16(sp)
  440e20:	afbf0180 	sw	ra,384(sp)
  440e24:	afbe017c 	sw	s8,380(sp)
  440e28:	afbc0178 	sw	gp,376(sp)
  440e2c:	03a0f021 	move	s8,sp
  440e30:	afc40188 	sw	a0,392(s8)
  440e34:	afc5018c 	sw	a1,396(s8)
  440e38:	afc60190 	sw	a2,400(s8)
  440e3c:	afc70194 	sw	a3,404(s8)

/* Compute HASH(1), HASH(2) of Quick Mode.
 * HASH(1) is part of Quick I1 message.
 * HASH(2) is part of Quick R1 message.
 * Used by: quick_outI1, quick_inI1_outR1 (twice), quick_inR1_outI2
 * (see draft-ietf-ipsec-isakmp-oakley-07.txt 5.5)
 */
static size_t
quick_mode_hash12(u_char *dest, const u_char *start, const u_char *roof
, const struct state *st, const msgid_t *msgid, bool hash2)
{
    struct hmac_ctx ctx;

#if 0	/* if desperate to debug hashing */
#   define hmac_update(ctx, ptr, len) { \
	DBG_dump("hash input", (ptr), (len)); \
	(hmac_update)((ctx), (ptr), (len)); \
    }
    DBG_dump("hash key", st->st_skeyid_a.ptr, st->st_skeyid_a.len);
#endif
    hmac_init_chunk(&ctx, st->st_oakley.hasher, st->st_skeyid_a);
  440e40:	27c40018 	addiu	a0,s8,24
  440e44:	8fc20194 	lw	v0,404(s8)
  440e48:	00000000 	nop
  440e4c:	8c450028 	lw	a1,40(v0)
  440e50:	8fc20194 	lw	v0,404(s8)
  440e54:	00000000 	nop
  440e58:	8c460174 	lw	a2,372(v0)
  440e5c:	8fc20194 	lw	v0,404(s8)
  440e60:	00000000 	nop
  440e64:	8c470178 	lw	a3,376(v0)
  440e68:	8f9989e0 	lw	t9,-30240(gp)
  440e6c:	00000000 	nop
  440e70:	0320f809 	jalr	t9
  440e74:	00000000 	nop
  440e78:	8fdc0010 	lw	gp,16(s8)
  440e7c:	00000000 	nop
    hmac_update(&ctx, (const void *) msgid, sizeof(msgid_t));
  440e80:	27c40018 	addiu	a0,s8,24
  440e84:	8fc50198 	lw	a1,408(s8)
  440e88:	24060004 	li	a2,4
  440e8c:	8f9983d4 	lw	t9,-31788(gp)
  440e90:	00000000 	nop
  440e94:	0320f809 	jalr	t9
  440e98:	00000000 	nop
  440e9c:	8fdc0010 	lw	gp,16(s8)
  440ea0:	00000000 	nop
    if (hash2)
  440ea4:	8fc2019c 	lw	v0,412(s8)
  440ea8:	00000000 	nop
  440eac:	1040000e 	beqz	v0,440ee8 <quick_mode_hash12+0xdc>
  440eb0:	00000000 	nop
	hmac_update_chunk(&ctx, st->st_ni);	/* include Ni_b in the hash */
  440eb4:	27c40018 	addiu	a0,s8,24
  440eb8:	8fc20194 	lw	v0,404(s8)
  440ebc:	00000000 	nop
  440ec0:	8c4500f8 	lw	a1,248(v0)
  440ec4:	8fc20194 	lw	v0,404(s8)
  440ec8:	00000000 	nop
  440ecc:	8c4600fc 	lw	a2,252(v0)
  440ed0:	8f9983d4 	lw	t9,-31788(gp)
  440ed4:	00000000 	nop
  440ed8:	0320f809 	jalr	t9
  440edc:	00000000 	nop
  440ee0:	8fdc0010 	lw	gp,16(s8)
  440ee4:	00000000 	nop
    hmac_update(&ctx, start, roof-start);
  440ee8:	8fc30190 	lw	v1,400(s8)
  440eec:	8fc2018c 	lw	v0,396(s8)
  440ef0:	00000000 	nop
  440ef4:	00621023 	subu	v0,v1,v0
  440ef8:	27c40018 	addiu	a0,s8,24
  440efc:	8fc5018c 	lw	a1,396(s8)
  440f00:	00403021 	move	a2,v0
  440f04:	8f9983d4 	lw	t9,-31788(gp)
  440f08:	00000000 	nop
  440f0c:	0320f809 	jalr	t9
  440f10:	00000000 	nop
  440f14:	8fdc0010 	lw	gp,16(s8)
  440f18:	00000000 	nop
    hmac_final(dest, &ctx);
  440f1c:	8fc40188 	lw	a0,392(s8)
  440f20:	27c50018 	addiu	a1,s8,24
  440f24:	8f998728 	lw	t9,-30936(gp)
  440f28:	00000000 	nop
  440f2c:	0320f809 	jalr	t9
  440f30:	00000000 	nop
  440f34:	8fdc0010 	lw	gp,16(s8)
  440f38:	00000000 	nop

    DBG(DBG_CRYPT,
  440f3c:	8f8284f8 	lw	v0,-31496(gp)
  440f40:	00000000 	nop
  440f44:	8c420000 	lw	v0,0(v0)
  440f48:	00000000 	nop
  440f4c:	30420002 	andi	v0,v0,0x2
  440f50:	10400019 	beqz	v0,440fb8 <quick_mode_hash12+0x1ac>
  440f54:	00000000 	nop
  440f58:	8fc2019c 	lw	v0,412(s8)
  440f5c:	00000000 	nop
  440f60:	24420001 	addiu	v0,v0,1
  440f64:	8f84802c 	lw	a0,-32724(gp)
  440f68:	00000000 	nop
  440f6c:	2484e484 	addiu	a0,a0,-7036
  440f70:	00402821 	move	a1,v0
  440f74:	8f9983b8 	lw	t9,-31816(gp)
  440f78:	00000000 	nop
  440f7c:	0320f809 	jalr	t9
  440f80:	00000000 	nop
  440f84:	8fdc0010 	lw	gp,16(s8)
  440f88:	00000000 	nop
  440f8c:	8f84802c 	lw	a0,-32724(gp)
  440f90:	00000000 	nop
  440f94:	2484d7a0 	addiu	a0,a0,-10336
  440f98:	8fc50188 	lw	a1,392(s8)
  440f9c:	8fc6001c 	lw	a2,28(s8)
  440fa0:	8f9984ec 	lw	t9,-31508(gp)
  440fa4:	00000000 	nop
  440fa8:	0320f809 	jalr	t9
  440fac:	00000000 	nop
  440fb0:	8fdc0010 	lw	gp,16(s8)
  440fb4:	00000000 	nop
	DBG_log("HASH(%d) computed:", hash2 + 1);
	DBG_dump("", dest, ctx.hmac_digest_size));
    return ctx.hmac_digest_size;
  440fb8:	8fc2001c 	lw	v0,28(s8)
  440fbc:	00000000 	nop
#   undef hmac_update
}
  440fc0:	03c0e821 	move	sp,s8
  440fc4:	8fbf0180 	lw	ra,384(sp)
  440fc8:	8fbe017c 	lw	s8,380(sp)
  440fcc:	27bd0188 	addiu	sp,sp,392
  440fd0:	03e00008 	jr	ra
  440fd4:	00000000 	nop

00440fd8 <quick_mode_hash3>:
  440fd8:	3c1c0fbd 	lui	gp,0xfbd
  440fdc:	279cb998 	addiu	gp,gp,-18024
  440fe0:	0399e021 	addu	gp,gp,t9
  440fe4:	27bdfe78 	addiu	sp,sp,-392
  440fe8:	afbc0010 	sw	gp,16(sp)
  440fec:	afbf0180 	sw	ra,384(sp)
  440ff0:	afbe017c 	sw	s8,380(sp)
  440ff4:	afbc0178 	sw	gp,376(sp)
  440ff8:	03a0f021 	move	s8,sp
  440ffc:	afc40188 	sw	a0,392(s8)
  441000:	afc5018c 	sw	a1,396(s8)

/* Compute HASH(3) in Quick Mode (part of Quick I2 message).
 * Used by: quick_inR1_outI2, quick_inI2
 * See RFC2409 "The Internet Key Exchange (IKE)" 5.5.
 * NOTE: this hash (unlike HASH(1) and HASH(2)) ONLY covers the
 * Message ID and Nonces.  This is a mistake.
 */
static size_t
quick_mode_hash3(u_char *dest, struct state *st)
{
    struct hmac_ctx ctx;

    hmac_init_chunk(&ctx, st->st_oakley.hasher, st->st_skeyid_a);
  441004:	27c40018 	addiu	a0,s8,24
  441008:	8fc2018c 	lw	v0,396(s8)
  44100c:	00000000 	nop
  441010:	8c450028 	lw	a1,40(v0)
  441014:	8fc2018c 	lw	v0,396(s8)
  441018:	00000000 	nop
  44101c:	8c460174 	lw	a2,372(v0)
  441020:	8fc2018c 	lw	v0,396(s8)
  441024:	00000000 	nop
  441028:	8c470178 	lw	a3,376(v0)
  44102c:	8f9989e0 	lw	t9,-30240(gp)
  441030:	00000000 	nop
  441034:	0320f809 	jalr	t9
  441038:	00000000 	nop
  44103c:	8fdc0010 	lw	gp,16(s8)
  441040:	00000000 	nop
    hmac_update(&ctx, "\0", 1);
  441044:	27c40018 	addiu	a0,s8,24
  441048:	8f85802c 	lw	a1,-32724(gp)
  44104c:	00000000 	nop
  441050:	24a5de70 	addiu	a1,a1,-8592
  441054:	24060001 	li	a2,1
  441058:	8f9983d4 	lw	t9,-31788(gp)
  44105c:	00000000 	nop
  441060:	0320f809 	jalr	t9
  441064:	00000000 	nop
  441068:	8fdc0010 	lw	gp,16(s8)
  44106c:	00000000 	nop
    hmac_update(&ctx, (u_char *) &st->st_msgid, sizeof(st->st_msgid));
  441070:	8fc2018c 	lw	v0,396(s8)
  441074:	00000000 	nop
  441078:	244200e0 	addiu	v0,v0,224
  44107c:	27c40018 	addiu	a0,s8,24
  441080:	00402821 	move	a1,v0
  441084:	24060004 	li	a2,4
  441088:	8f9983d4 	lw	t9,-31788(gp)
  44108c:	00000000 	nop
  441090:	0320f809 	jalr	t9
  441094:	00000000 	nop
  441098:	8fdc0010 	lw	gp,16(s8)
  44109c:	00000000 	nop
    hmac_update_chunk(&ctx, st->st_ni);
  4410a0:	27c40018 	addiu	a0,s8,24
  4410a4:	8fc2018c 	lw	v0,396(s8)
  4410a8:	00000000 	nop
  4410ac:	8c4500f8 	lw	a1,248(v0)
  4410b0:	8fc2018c 	lw	v0,396(s8)
  4410b4:	00000000 	nop
  4410b8:	8c4600fc 	lw	a2,252(v0)
  4410bc:	8f9983d4 	lw	t9,-31788(gp)
  4410c0:	00000000 	nop
  4410c4:	0320f809 	jalr	t9
  4410c8:	00000000 	nop
  4410cc:	8fdc0010 	lw	gp,16(s8)
  4410d0:	00000000 	nop
    hmac_update_chunk(&ctx, st->st_nr);
  4410d4:	27c40018 	addiu	a0,s8,24
  4410d8:	8fc2018c 	lw	v0,396(s8)
  4410dc:	00000000 	nop
  4410e0:	8c450110 	lw	a1,272(v0)
  4410e4:	8fc2018c 	lw	v0,396(s8)
  4410e8:	00000000 	nop
  4410ec:	8c460114 	lw	a2,276(v0)
  4410f0:	8f9983d4 	lw	t9,-31788(gp)
  4410f4:	00000000 	nop
  4410f8:	0320f809 	jalr	t9
  4410fc:	00000000 	nop
  441100:	8fdc0010 	lw	gp,16(s8)
  441104:	00000000 	nop
    hmac_final(dest, &ctx);
  441108:	8fc40188 	lw	a0,392(s8)
  44110c:	27c50018 	addiu	a1,s8,24
  441110:	8f998728 	lw	t9,-30936(gp)
  441114:	00000000 	nop
  441118:	0320f809 	jalr	t9
  44111c:	00000000 	nop
  441120:	8fdc0010 	lw	gp,16(s8)
  441124:	00000000 	nop
    DBG_cond_dump(DBG_CRYPT, "HASH(3) computed:", dest, ctx.hmac_digest_size);
  441128:	8f8284f8 	lw	v0,-31496(gp)
  44112c:	00000000 	nop
  441130:	8c420000 	lw	v0,0(v0)
  441134:	00000000 	nop
  441138:	30420002 	andi	v0,v0,0x2
  44113c:	1040000c 	beqz	v0,441170 <quick_mode_hash3+0x198>
  441140:	00000000 	nop
  441144:	8f84802c 	lw	a0,-32724(gp)
  441148:	00000000 	nop
  44114c:	2484e498 	addiu	a0,a0,-7016
  441150:	8fc50188 	lw	a1,392(s8)
  441154:	8fc6001c 	lw	a2,28(s8)
  441158:	8f9984ec 	lw	t9,-31508(gp)
  44115c:	00000000 	nop
  441160:	0320f809 	jalr	t9
  441164:	00000000 	nop
  441168:	8fdc0010 	lw	gp,16(s8)
  44116c:	00000000 	nop
    return ctx.hmac_digest_size;
  441170:	8fc2001c 	lw	v0,28(s8)
  441174:	00000000 	nop
}
  441178:	03c0e821 	move	sp,s8
  44117c:	8fbf0180 	lw	ra,384(sp)
  441180:	8fbe017c 	lw	s8,380(sp)
  441184:	27bd0188 	addiu	sp,sp,392
  441188:	03e00008 	jr	ra
  44118c:	00000000 	nop

00441190 <init_phase2_iv>:
  441190:	3c1c0fbd 	lui	gp,0xfbd
  441194:	279cb7e0 	addiu	gp,gp,-18464
  441198:	0399e021 	addu	gp,gp,t9
  44119c:	27bdfef8 	addiu	sp,sp,-264
  4411a0:	afbc0010 	sw	gp,16(sp)
  4411a4:	afbf0100 	sw	ra,256(sp)
  4411a8:	afbe00fc 	sw	s8,252(sp)
  4411ac:	afbc00f8 	sw	gp,248(sp)
  4411b0:	03a0f021 	move	s8,sp
  4411b4:	afc40108 	sw	a0,264(s8)
  4411b8:	afc5010c 	sw	a1,268(s8)

/* Compute Phase 2 IV.
 * Uses Phase 1 IV from st_iv; puts result in st_new_iv.
 */
void
init_phase2_iv(struct state *st, const msgid_t *msgid)
{
    const struct hash_desc *h = st->st_oakley.hasher;
  4411bc:	8fc20108 	lw	v0,264(s8)
  4411c0:	00000000 	nop
  4411c4:	8c420028 	lw	v0,40(v0)
  4411c8:	00000000 	nop
  4411cc:	afc20018 	sw	v0,24(s8)
    union hash_ctx ctx;

    DBG_cond_dump(DBG_CRYPT, "last Phase 1 IV:"
  4411d0:	8f8284f8 	lw	v0,-31496(gp)
  4411d4:	00000000 	nop
  4411d8:	8c420000 	lw	v0,0(v0)
  4411dc:	00000000 	nop
  4411e0:	30420002 	andi	v0,v0,0x2
  4411e4:	10400011 	beqz	v0,44122c <init_phase2_iv+0x9c>
  4411e8:	00000000 	nop
  4411ec:	8fc20108 	lw	v0,264(s8)
  4411f0:	00000000 	nop
  4411f4:	24420204 	addiu	v0,v0,516
  4411f8:	8f84802c 	lw	a0,-32724(gp)
  4411fc:	00000000 	nop
  441200:	2484e4ac 	addiu	a0,a0,-6996
  441204:	00402821 	move	a1,v0
  441208:	8fc20108 	lw	v0,264(s8)
  44120c:	00000000 	nop
  441210:	8c46024c 	lw	a2,588(v0)
  441214:	8f9984ec 	lw	t9,-31508(gp)
  441218:	00000000 	nop
  44121c:	0320f809 	jalr	t9
  441220:	00000000 	nop
  441224:	8fdc0010 	lw	gp,16(s8)
  441228:	00000000 	nop
	, st->st_ph1_iv, st->st_ph1_iv_len);

    st->st_new_iv_len = h->hash_digest_size;
  44122c:	8fc20018 	lw	v0,24(s8)
  441230:	00000000 	nop
  441234:	8c43000c 	lw	v1,12(v0)
  441238:	8fc20108 	lw	v0,264(s8)
  44123c:	00000000 	nop
  441240:	ac430248 	sw	v1,584(v0)
    passert(st->st_new_iv_len <= sizeof(st->st_new_iv));
  441244:	8fc20108 	lw	v0,264(s8)
  441248:	00000000 	nop
  44124c:	8c420248 	lw	v0,584(v0)
  441250:	00000000 	nop
  441254:	2c420041 	sltiu	v0,v0,65
  441258:	1440000e 	bnez	v0,441294 <init_phase2_iv+0x104>
  44125c:	00000000 	nop
  441260:	8f84802c 	lw	a0,-32724(gp)
  441264:	00000000 	nop
  441268:	2484def4 	addiu	a0,a0,-8460
  44126c:	8f85802c 	lw	a1,-32724(gp)
  441270:	00000000 	nop
  441274:	24a5d59c 	addiu	a1,a1,-10852
  441278:	24060810 	li	a2,2064
  44127c:	8f998bb8 	lw	t9,-29768(gp)
  441280:	00000000 	nop
  441284:	0320f809 	jalr	t9
  441288:	00000000 	nop
  44128c:	8fdc0010 	lw	gp,16(s8)
  441290:	00000000 	nop

    h->hash_init(&ctx);
  441294:	8fc20018 	lw	v0,24(s8)
  441298:	00000000 	nop
  44129c:	8c420010 	lw	v0,16(v0)
  4412a0:	27c40020 	addiu	a0,s8,32
  4412a4:	0040c821 	move	t9,v0
  4412a8:	0320f809 	jalr	t9
  4412ac:	00000000 	nop
  4412b0:	8fdc0010 	lw	gp,16(s8)
  4412b4:	00000000 	nop
    h->hash_update(&ctx, st->st_ph1_iv, st->st_ph1_iv_len);
  4412b8:	8fc20108 	lw	v0,264(s8)
  4412bc:	00000000 	nop
  4412c0:	24430204 	addiu	v1,v0,516
  4412c4:	8fc20018 	lw	v0,24(s8)
  4412c8:	00000000 	nop
  4412cc:	8c470014 	lw	a3,20(v0)
  4412d0:	27c40020 	addiu	a0,s8,32
  4412d4:	00602821 	move	a1,v1
  4412d8:	8fc20108 	lw	v0,264(s8)
  4412dc:	00000000 	nop
  4412e0:	8c46024c 	lw	a2,588(v0)
  4412e4:	00e0c821 	move	t9,a3
  4412e8:	0320f809 	jalr	t9
  4412ec:	00000000 	nop
  4412f0:	8fdc0010 	lw	gp,16(s8)
  4412f4:	00000000 	nop
    passert(*msgid != 0);
  4412f8:	8fc2010c 	lw	v0,268(s8)
  4412fc:	00000000 	nop
  441300:	8c420000 	lw	v0,0(v0)
  441304:	00000000 	nop
  441308:	1440000e 	bnez	v0,441344 <init_phase2_iv+0x1b4>
  44130c:	00000000 	nop
  441310:	8f84802c 	lw	a0,-32724(gp)
  441314:	00000000 	nop
  441318:	2484e4c0 	addiu	a0,a0,-6976
  44131c:	8f85802c 	lw	a1,-32724(gp)
  441320:	00000000 	nop
  441324:	24a5d59c 	addiu	a1,a1,-10852
  441328:	24060814 	li	a2,2068
  44132c:	8f998bb8 	lw	t9,-29768(gp)
  441330:	00000000 	nop
  441334:	0320f809 	jalr	t9
  441338:	00000000 	nop
  44133c:	8fdc0010 	lw	gp,16(s8)
  441340:	00000000 	nop
    h->hash_update(&ctx, (const u_char *)msgid, sizeof(*msgid));
  441344:	8fc20018 	lw	v0,24(s8)
  441348:	00000000 	nop
  44134c:	8c420014 	lw	v0,20(v0)
  441350:	27c40020 	addiu	a0,s8,32
  441354:	8fc5010c 	lw	a1,268(s8)
  441358:	24060004 	li	a2,4
  44135c:	0040c821 	move	t9,v0
  441360:	0320f809 	jalr	t9
  441364:	00000000 	nop
  441368:	8fdc0010 	lw	gp,16(s8)
  44136c:	00000000 	nop
    h->hash_final(st->st_new_iv, &ctx);
  441370:	8fc20108 	lw	v0,264(s8)
  441374:	00000000 	nop
  441378:	244301c4 	addiu	v1,v0,452
  44137c:	8fc20018 	lw	v0,24(s8)
  441380:	00000000 	nop
  441384:	8c420018 	lw	v0,24(v0)
  441388:	00602021 	move	a0,v1
  44138c:	27c50020 	addiu	a1,s8,32
  441390:	0040c821 	move	t9,v0
  441394:	0320f809 	jalr	t9
  441398:	00000000 	nop
  44139c:	8fdc0010 	lw	gp,16(s8)
  4413a0:	00000000 	nop

    DBG_cond_dump(DBG_CRYPT, "computed Phase 2 IV:"
  4413a4:	8f8284f8 	lw	v0,-31496(gp)
  4413a8:	00000000 	nop
  4413ac:	8c420000 	lw	v0,0(v0)
  4413b0:	00000000 	nop
  4413b4:	30420002 	andi	v0,v0,0x2
  4413b8:	10400011 	beqz	v0,441400 <init_phase2_iv+0x270>
  4413bc:	00000000 	nop
  4413c0:	8fc20108 	lw	v0,264(s8)
  4413c4:	00000000 	nop
  4413c8:	244201c4 	addiu	v0,v0,452
  4413cc:	8f84802c 	lw	a0,-32724(gp)
  4413d0:	00000000 	nop
  4413d4:	2484e4cc 	addiu	a0,a0,-6964
  4413d8:	00402821 	move	a1,v0
  4413dc:	8fc20108 	lw	v0,264(s8)
  4413e0:	00000000 	nop
  4413e4:	8c460248 	lw	a2,584(v0)
  4413e8:	8f9984ec 	lw	t9,-31508(gp)
  4413ec:	00000000 	nop
  4413f0:	0320f809 	jalr	t9
  4413f4:	00000000 	nop
  4413f8:	8fdc0010 	lw	gp,16(s8)
  4413fc:	00000000 	nop
	, st->st_new_iv, st->st_new_iv_len);
}
  441400:	03c0e821 	move	sp,s8
  441404:	8fbf0100 	lw	ra,256(sp)
  441408:	8fbe00fc 	lw	s8,252(sp)
  44140c:	27bd0108 	addiu	sp,sp,264
  441410:	03e00008 	jr	ra
  441414:	00000000 	nop

00441418 <emit_subnet_id>:
  441418:	3c1c0fbd 	lui	gp,0xfbd
  44141c:	279cb558 	addiu	gp,gp,-19112
  441420:	0399e021 	addu	gp,gp,t9
  441424:	27bdff80 	addiu	sp,sp,-128
  441428:	afbc0010 	sw	gp,16(sp)
  44142c:	afbf0078 	sw	ra,120(sp)
  441430:	afbe0074 	sw	s8,116(sp)
  441434:	afbc0070 	sw	gp,112(sp)
  441438:	03a0f021 	move	s8,sp
  44143c:	afc40080 	sw	a0,128(s8)
  441440:	00a01021 	move	v0,a1
  441444:	00c01821 	move	v1,a2
  441448:	00e02021 	move	a0,a3
  44144c:	a3c20018 	sb	v0,24(s8)
  441450:	a3c30019 	sb	v1,25(s8)
  441454:	a7c4001a 	sh	a0,26(s8)

/* Initiate quick mode.
 * --> HDR*, HASH(1), SA, Nr [, KE ] [, IDci, IDcr ]
 * (see draft-ietf-ipsec-isakmp-oakley-07.txt 5.5)
 * Note: this is not called from demux.c
 */

static bool
emit_subnet_id(ip_subnet *net
, u_int8_t np, u_int8_t protoid, u_int16_t port, pb_stream *outs)
{
    struct isakmp_ipsec_id id;
    pb_stream id_pbs;
    ip_address ta;
    const unsigned char *tbp;
    size_t tal;

    id.isaiid_np = np;
  441458:	93c20018 	lbu	v0,24(s8)
  44145c:	00000000 	nop
  441460:	a3c20020 	sb	v0,32(s8)
#ifdef KENNY_ID_ADDR
    if (net->maskbits == 32 || net->maskbits == 128) 
  441464:	8fc20080 	lw	v0,128(s8)
  441468:	00000000 	nop
  44146c:	8c43001c 	lw	v1,28(v0)
  441470:	24020020 	li	v0,32
  441474:	10620009 	beq	v1,v0,44149c <emit_subnet_id+0x84>
  441478:	00000000 	nop
  44147c:	8fc20080 	lw	v0,128(s8)
  441480:	00000000 	nop
  441484:	8c43001c 	lw	v1,28(v0)
  441488:	24020080 	li	v0,128
  44148c:	10620003 	beq	v1,v0,44149c <emit_subnet_id+0x84>
  441490:	00000000 	nop
  441494:	10000012 	b	4414e0 <emit_subnet_id+0xc8>
  441498:	00000000 	nop
        id.isaiid_idtype = aftoinfo(subnettypeof(net))->id_addr;
  44149c:	8fc40080 	lw	a0,128(s8)
  4414a0:	8f998248 	lw	t9,-32184(gp)
  4414a4:	00000000 	nop
  4414a8:	0320f809 	jalr	t9
  4414ac:	00000000 	nop
  4414b0:	8fdc0010 	lw	gp,16(s8)
  4414b4:	00402021 	move	a0,v0
  4414b8:	8f998b94 	lw	t9,-29804(gp)
  4414bc:	00000000 	nop
  4414c0:	0320f809 	jalr	t9
  4414c4:	00000000 	nop
  4414c8:	8fdc0010 	lw	gp,16(s8)
  4414cc:	90420014 	lbu	v0,20(v0)
  4414d0:	00000000 	nop
  4414d4:	a3c20024 	sb	v0,36(s8)
  4414d8:	10000010 	b	44151c <emit_subnet_id+0x104>
  4414dc:	00000000 	nop
    else	
#endif /* KENNY_ID_ADDR */
    id.isaiid_idtype = aftoinfo(subnettypeof(net))->id_subnet;
  4414e0:	8fc40080 	lw	a0,128(s8)
  4414e4:	8f998248 	lw	t9,-32184(gp)
  4414e8:	00000000 	nop
  4414ec:	0320f809 	jalr	t9
  4414f0:	00000000 	nop
  4414f4:	8fdc0010 	lw	gp,16(s8)
  4414f8:	00402021 	move	a0,v0
  4414fc:	8f998b94 	lw	t9,-29804(gp)
  441500:	00000000 	nop
  441504:	0320f809 	jalr	t9
  441508:	00000000 	nop
  44150c:	8fdc0010 	lw	gp,16(s8)
  441510:	90420015 	lbu	v0,21(v0)
  441514:	00000000 	nop
  441518:	a3c20024 	sb	v0,36(s8)
    id.isaiid_protoid = protoid;
  44151c:	93c20019 	lbu	v0,25(s8)
  441520:	00000000 	nop
  441524:	a3c20025 	sb	v0,37(s8)
    id.isaiid_port = port;
  441528:	97c2001a 	lhu	v0,26(s8)
  44152c:	00000000 	nop
  441530:	a7c20026 	sh	v0,38(s8)

    if (!out_struct(&id, &isakmp_ipsec_identification_desc, outs, &id_pbs))
  441534:	27c40020 	addiu	a0,s8,32
  441538:	8f858988 	lw	a1,-30328(gp)
  44153c:	8fc60090 	lw	a2,144(s8)
  441540:	27c70028 	addiu	a3,s8,40
  441544:	8f998ba0 	lw	t9,-29792(gp)
  441548:	00000000 	nop
  44154c:	0320f809 	jalr	t9
  441550:	00000000 	nop
  441554:	8fdc0010 	lw	gp,16(s8)
  441558:	14400004 	bnez	v0,44156c <emit_subnet_id+0x154>
  44155c:	00000000 	nop
	return FALSE;
  441560:	00001021 	move	v0,zero
  441564:	10000055 	b	4416bc <emit_subnet_id+0x2a4>
  441568:	00000000 	nop

    networkof(net, &ta);
  44156c:	8fc40080 	lw	a0,128(s8)
  441570:	27c50048 	addiu	a1,s8,72
  441574:	8f9985bc 	lw	t9,-31300(gp)
  441578:	00000000 	nop
  44157c:	0320f809 	jalr	t9
  441580:	00000000 	nop
  441584:	8fdc0010 	lw	gp,16(s8)
  441588:	00000000 	nop
    tal = addrbytesptr(&ta, &tbp);
  44158c:	27c40048 	addiu	a0,s8,72
  441590:	27c50068 	addiu	a1,s8,104
  441594:	8f998768 	lw	t9,-30872(gp)
  441598:	00000000 	nop
  44159c:	0320f809 	jalr	t9
  4415a0:	00000000 	nop
  4415a4:	8fdc0010 	lw	gp,16(s8)
  4415a8:	afc2006c 	sw	v0,108(s8)
    if (!out_raw(tbp, tal, &id_pbs, "client network"))
  4415ac:	8fc40068 	lw	a0,104(s8)
  4415b0:	8fc5006c 	lw	a1,108(s8)
  4415b4:	27c60028 	addiu	a2,s8,40
  4415b8:	8f87802c 	lw	a3,-32724(gp)
  4415bc:	00000000 	nop
  4415c0:	24e7e4e4 	addiu	a3,a3,-6940
  4415c4:	8f998308 	lw	t9,-31992(gp)
  4415c8:	00000000 	nop
  4415cc:	0320f809 	jalr	t9
  4415d0:	00000000 	nop
  4415d4:	8fdc0010 	lw	gp,16(s8)
  4415d8:	14400004 	bnez	v0,4415ec <emit_subnet_id+0x1d4>
  4415dc:	00000000 	nop
	return FALSE;
  4415e0:	00001021 	move	v0,zero
  4415e4:	10000035 	b	4416bc <emit_subnet_id+0x2a4>
  4415e8:	00000000 	nop

#ifdef KENNY_ID_ADDR
    if (net->maskbits != 32 && net->maskbits != 128) 
  4415ec:	8fc20080 	lw	v0,128(s8)
  4415f0:	00000000 	nop
  4415f4:	8c43001c 	lw	v1,28(v0)
  4415f8:	24020020 	li	v0,32
  4415fc:	10620027 	beq	v1,v0,44169c <emit_subnet_id+0x284>
  441600:	00000000 	nop
  441604:	8fc20080 	lw	v0,128(s8)
  441608:	00000000 	nop
  44160c:	8c43001c 	lw	v1,28(v0)
  441610:	24020080 	li	v0,128
  441614:	10620021 	beq	v1,v0,44169c <emit_subnet_id+0x284>
  441618:	00000000 	nop
    {
#endif /* KENNY_ID_ADDR */
    maskof(net, &ta);
  44161c:	8fc40080 	lw	a0,128(s8)
  441620:	27c50048 	addiu	a1,s8,72
  441624:	8f998138 	lw	t9,-32456(gp)
  441628:	00000000 	nop
  44162c:	0320f809 	jalr	t9
  441630:	00000000 	nop
  441634:	8fdc0010 	lw	gp,16(s8)
  441638:	00000000 	nop
    tal = addrbytesptr(&ta, &tbp);
  44163c:	27c40048 	addiu	a0,s8,72
  441640:	27c50068 	addiu	a1,s8,104
  441644:	8f998768 	lw	t9,-30872(gp)
  441648:	00000000 	nop
  44164c:	0320f809 	jalr	t9
  441650:	00000000 	nop
  441654:	8fdc0010 	lw	gp,16(s8)
  441658:	afc2006c 	sw	v0,108(s8)
    if (!out_raw(tbp, tal, &id_pbs, "client mask"))
  44165c:	8fc40068 	lw	a0,104(s8)
  441660:	8fc5006c 	lw	a1,108(s8)
  441664:	27c60028 	addiu	a2,s8,40
  441668:	8f87802c 	lw	a3,-32724(gp)
  44166c:	00000000 	nop
  441670:	24e7e4f4 	addiu	a3,a3,-6924
  441674:	8f998308 	lw	t9,-31992(gp)
  441678:	00000000 	nop
  44167c:	0320f809 	jalr	t9
  441680:	00000000 	nop
  441684:	8fdc0010 	lw	gp,16(s8)
  441688:	14400004 	bnez	v0,44169c <emit_subnet_id+0x284>
  44168c:	00000000 	nop
	return FALSE;
  441690:	00001021 	move	v0,zero
  441694:	10000009 	b	4416bc <emit_subnet_id+0x2a4>
  441698:	00000000 	nop
#ifdef KENNY_ID_ADDR
    }
#endif /* KENNY_ID_ADDR */

    close_output_pbs(&id_pbs);
  44169c:	27c40028 	addiu	a0,s8,40
  4416a0:	8f998228 	lw	t9,-32216(gp)
  4416a4:	00000000 	nop
  4416a8:	0320f809 	jalr	t9
  4416ac:	00000000 	nop
  4416b0:	8fdc0010 	lw	gp,16(s8)
  4416b4:	00000000 	nop
    return TRUE;
  4416b8:	24020001 	li	v0,1
}
  4416bc:	03c0e821 	move	sp,s8
  4416c0:	8fbf0078 	lw	ra,120(sp)
  4416c4:	8fbe0074 	lw	s8,116(sp)
  4416c8:	27bd0080 	addiu	sp,sp,128
  4416cc:	03e00008 	jr	ra
  4416d0:	00000000 	nop

004416d4 <quick_outI1>:
  4416d4:	3c1c0fbd 	lui	gp,0xfbd
  4416d8:	279cb29c 	addiu	gp,gp,-19812
  4416dc:	0399e021 	addu	gp,gp,t9
  4416e0:	27bdfed8 	addiu	sp,sp,-296
  4416e4:	afbc0018 	sw	gp,24(sp)
  4416e8:	afbf0124 	sw	ra,292(sp)
  4416ec:	afbe0120 	sw	s8,288(sp)
  4416f0:	afbc011c 	sw	gp,284(sp)
  4416f4:	afb00118 	sw	s0,280(sp)
  4416f8:	03a0f021 	move	s8,sp
  4416fc:	afc40128 	sw	a0,296(s8)
  441700:	afc5012c 	sw	a1,300(s8)
  441704:	afc60130 	sw	a2,304(s8)

stf_status
quick_outI1(int whack_sock
, struct state *isakmp_sa
, struct connection *c
, lset_t policy
, unsigned long try
, so_serial_t replacing)
{
    struct state *st = duplicate_state(isakmp_sa);
  441708:	8fc4012c 	lw	a0,300(s8)
  44170c:	8f99832c 	lw	t9,-31956(gp)
  441710:	00000000 	nop
  441714:	0320f809 	jalr	t9
  441718:	00000000 	nop
  44171c:	8fdc0018 	lw	gp,24(s8)
  441720:	afc20020 	sw	v0,32(s8)
    pb_stream reply;	/* not really a reply */
    pb_stream rbody;
    u_char	/* set by START_HASH_PAYLOAD: */
	*r_hashval,	/* where in reply to jam hash value */
	*r_hash_start;	/* start of what is to be hashed */
    bool has_client = c->this.has_client ||  c->that.has_client ||
  441724:	afc000f8 	sw	zero,248(s8)
  441728:	8fc20130 	lw	v0,304(s8)
  44172c:	00000000 	nop
  441730:	8c4200b4 	lw	v0,180(v0)
  441734:	00000000 	nop
  441738:	14400021 	bnez	v0,4417c0 <quick_outI1+0xec>
  44173c:	00000000 	nop
  441740:	8fc20130 	lw	v0,304(s8)
  441744:	00000000 	nop
  441748:	8c420164 	lw	v0,356(v0)
  44174c:	00000000 	nop
  441750:	1440001b 	bnez	v0,4417c0 <quick_outI1+0xec>
  441754:	00000000 	nop
  441758:	8fc20130 	lw	v0,304(s8)
  44175c:	00000000 	nop
  441760:	904200cc 	lbu	v0,204(v0)
  441764:	00000000 	nop
  441768:	14400015 	bnez	v0,4417c0 <quick_outI1+0xec>
  44176c:	00000000 	nop
  441770:	8fc20130 	lw	v0,304(s8)
  441774:	00000000 	nop
  441778:	9042017c 	lbu	v0,380(v0)
  44177c:	00000000 	nop
  441780:	1440000f 	bnez	v0,4417c0 <quick_outI1+0xec>
  441784:	00000000 	nop
  441788:	8fc20130 	lw	v0,304(s8)
  44178c:	00000000 	nop
  441790:	944200ca 	lhu	v0,202(v0)
  441794:	00000000 	nop
  441798:	14400009 	bnez	v0,4417c0 <quick_outI1+0xec>
  44179c:	00000000 	nop
  4417a0:	8fc20130 	lw	v0,304(s8)
  4417a4:	00000000 	nop
  4417a8:	9442017a 	lhu	v0,378(v0)
  4417ac:	00000000 	nop
  4417b0:	14400003 	bnez	v0,4417c0 <quick_outI1+0xec>
  4417b4:	00000000 	nop
  4417b8:	10000003 	b	4417c8 <quick_outI1+0xf4>
  4417bc:	00000000 	nop
  4417c0:	24020001 	li	v0,1
  4417c4:	afc200f8 	sw	v0,248(s8)
  4417c8:	8fc300f8 	lw	v1,248(s8)
  4417cc:	00000000 	nop
  4417d0:	afc30070 	sw	v1,112(s8)
		      c->this.protocol || c->that.protocol ||
		      c->this.port || c->that.port;
    st->st_whack_sock = whack_sock;
  4417d4:	8fc30128 	lw	v1,296(s8)
  4417d8:	8fc20020 	lw	v0,32(s8)
  4417dc:	00000000 	nop
  4417e0:	ac430014 	sw	v1,20(v0)
    st->st_connection = c;
  4417e4:	8fc30130 	lw	v1,304(s8)
  4417e8:	8fc20020 	lw	v0,32(s8)
  4417ec:	00000000 	nop
  4417f0:	ac43000c 	sw	v1,12(v0)
    set_cur_state(st);	/* we must reset before exit */
  4417f4:	8fc20020 	lw	v0,32(s8)
  4417f8:	8f8187f8 	lw	at,-30728(gp)
  4417fc:	00000000 	nop
  441800:	ac220000 	sw	v0,0(at)
  441804:	8fc20020 	lw	v0,32(s8)
  441808:	00000000 	nop
  44180c:	8c44000c 	lw	a0,12(v0)
  441810:	8f998be4 	lw	t9,-29724(gp)
  441814:	00000000 	nop
  441818:	0320f809 	jalr	t9
  44181c:	00000000 	nop
  441820:	8fdc0018 	lw	gp,24(s8)
  441824:	00000000 	nop
    st->st_policy = policy;
  441828:	8fc20138 	lw	v0,312(s8)
  44182c:	8fc3013c 	lw	v1,316(s8)
  441830:	8fc40020 	lw	a0,32(s8)
  441834:	00000000 	nop
  441838:	ac8200d8 	sw	v0,216(a0)
  44183c:	ac8300dc 	sw	v1,220(a0)
    st->st_try = try;
  441840:	8fc30140 	lw	v1,320(s8)
  441844:	8fc20020 	lw	v0,32(s8)
  441848:	00000000 	nop
  44184c:	ac430154 	sw	v1,340(v0)

    st->st_myuserprotoid = c->this.protocol;
  441850:	8fc20130 	lw	v0,304(s8)
  441854:	00000000 	nop
  441858:	904300cc 	lbu	v1,204(v0)
  44185c:	8fc20020 	lw	v0,32(s8)
  441860:	00000000 	nop
  441864:	a0430120 	sb	v1,288(v0)
    st->st_peeruserprotoid = c->that.protocol;
  441868:	8fc20130 	lw	v0,304(s8)
  44186c:	00000000 	nop
  441870:	9043017c 	lbu	v1,380(v0)
  441874:	8fc20020 	lw	v0,32(s8)
  441878:	00000000 	nop
  44187c:	a043012c 	sb	v1,300(v0)
    st->st_myuserport = c->this.port;
  441880:	8fc20130 	lw	v0,304(s8)
  441884:	00000000 	nop
  441888:	944300ca 	lhu	v1,202(v0)
  44188c:	8fc20020 	lw	v0,32(s8)
  441890:	00000000 	nop
  441894:	a4430122 	sh	v1,290(v0)
    st->st_peeruserport = c->that.port;
  441898:	8fc20130 	lw	v0,304(s8)
  44189c:	00000000 	nop
  4418a0:	9443017a 	lhu	v1,378(v0)
  4418a4:	8fc20020 	lw	v0,32(s8)
  4418a8:	00000000 	nop
  4418ac:	a443012e 	sh	v1,302(v0)

    st->st_msgid = generate_msgid(isakmp_sa);
  4418b0:	8fd00020 	lw	s0,32(s8)
  4418b4:	8fc4012c 	lw	a0,300(s8)
  4418b8:	8f99826c 	lw	t9,-32148(gp)
  4418bc:	00000000 	nop
  4418c0:	0320f809 	jalr	t9
  4418c4:	00000000 	nop
  4418c8:	8fdc0018 	lw	gp,24(s8)
  4418cc:	ae0200e0 	sw	v0,224(s0)
    st->st_state = STATE_QUICK_I1;
  4418d0:	24030016 	li	v1,22
  4418d4:	8fc20020 	lw	v0,32(s8)
  4418d8:	00000000 	nop
  4418dc:	ac43014c 	sw	v1,332(v0)

    insert_state(st);	/* needs cookies, connection, and msgid */
  4418e0:	8fc40020 	lw	a0,32(s8)
  4418e4:	8f9983a4 	lw	t9,-31836(gp)
  4418e8:	00000000 	nop
  4418ec:	0320f809 	jalr	t9
  4418f0:	00000000 	nop
  4418f4:	8fdc0018 	lw	gp,24(s8)
  4418f8:	00000000 	nop

    if (replacing == SOS_NOBODY)
  4418fc:	8fc20144 	lw	v0,324(s8)
  441900:	00000000 	nop
  441904:	14400015 	bnez	v0,44195c <quick_outI1+0x288>
  441908:	00000000 	nop
	plog("initiating Quick Mode %s"
  44190c:	8f848968 	lw	a0,-30360(gp)
  441910:	8fc60138 	lw	a2,312(s8)
  441914:	8fc7013c 	lw	a3,316(s8)
  441918:	8f9988c4 	lw	t9,-30524(gp)
  44191c:	00000000 	nop
  441920:	0320f809 	jalr	t9
  441924:	00000000 	nop
  441928:	8fdc0018 	lw	gp,24(s8)
  44192c:	00000000 	nop
  441930:	8f84802c 	lw	a0,-32724(gp)
  441934:	00000000 	nop
  441938:	2484e500 	addiu	a0,a0,-6912
  44193c:	00402821 	move	a1,v0
  441940:	8f998abc 	lw	t9,-30020(gp)
  441944:	00000000 	nop
  441948:	0320f809 	jalr	t9
  44194c:	00000000 	nop
  441950:	8fdc0018 	lw	gp,24(s8)
  441954:	10000015 	b	4419ac <quick_outI1+0x2d8>
  441958:	00000000 	nop
	    , bitnamesof(sa_policy_bit_names, policy));
    else
	plog("initiating Quick Mode %s to replace #%lu"
  44195c:	8f848968 	lw	a0,-30360(gp)
  441960:	8fc60138 	lw	a2,312(s8)
  441964:	8fc7013c 	lw	a3,316(s8)
  441968:	8f9988c4 	lw	t9,-30524(gp)
  44196c:	00000000 	nop
  441970:	0320f809 	jalr	t9
  441974:	00000000 	nop
  441978:	8fdc0018 	lw	gp,24(s8)
  44197c:	00000000 	nop
  441980:	8f84802c 	lw	a0,-32724(gp)
  441984:	00000000 	nop
  441988:	2484e51c 	addiu	a0,a0,-6884
  44198c:	00402821 	move	a1,v0
  441990:	8fc60144 	lw	a2,324(s8)
  441994:	8f998abc 	lw	t9,-30020(gp)
  441998:	00000000 	nop
  44199c:	0320f809 	jalr	t9
  4419a0:	00000000 	nop
  4419a4:	8fdc0018 	lw	gp,24(s8)
  4419a8:	00000000 	nop
	    , bitnamesof(sa_policy_bit_names, policy), replacing);

#ifdef NAT_TRAVERSAL
    if (isakmp_sa->nat_traversal & NAT_T_DETECTED) {
  4419ac:	8fc2012c 	lw	v0,300(s8)
  4419b0:	00000000 	nop
  4419b4:	8c430264 	lw	v1,612(v0)
  4419b8:	3c02c000 	lui	v0,0xc000
  4419bc:	00621024 	and	v0,v1,v0
  4419c0:	10400019 	beqz	v0,441a28 <quick_outI1+0x354>
  4419c4:	00000000 	nop
	/* Duplicate nat_traversal status in new state */
	st->nat_traversal = isakmp_sa->nat_traversal;
  4419c8:	8fc2012c 	lw	v0,300(s8)
  4419cc:	00000000 	nop
  4419d0:	8c430264 	lw	v1,612(v0)
  4419d4:	8fc20020 	lw	v0,32(s8)
  4419d8:	00000000 	nop
  4419dc:	ac430264 	sw	v1,612(v0)
	if (isakmp_sa->nat_traversal & LELEM(NAT_TRAVERSAL_NAT_BHND_ME)) {
  4419e0:	8fc2012c 	lw	v0,300(s8)
  4419e4:	00000000 	nop
  4419e8:	8c430264 	lw	v1,612(v0)
  4419ec:	3c024000 	lui	v0,0x4000
  4419f0:	00621024 	and	v0,v1,v0
  4419f4:	10400003 	beqz	v0,441a04 <quick_outI1+0x330>
  4419f8:	00000000 	nop
	    has_client = TRUE;
  4419fc:	24020001 	li	v0,1
  441a00:	afc20070 	sw	v0,112(s8)
	}
	nat_traversal_change_port_lookup(NULL, st);
  441a04:	00002021 	move	a0,zero
  441a08:	8fc50020 	lw	a1,32(s8)
  441a0c:	8f9983f8 	lw	t9,-31752(gp)
  441a10:	00000000 	nop
  441a14:	0320f809 	jalr	t9
  441a18:	00000000 	nop
  441a1c:	8fdc0018 	lw	gp,24(s8)
  441a20:	10000004 	b	441a34 <quick_outI1+0x360>
  441a24:	00000000 	nop
    }
    else {
	st->nat_traversal = 0;
  441a28:	8fc20020 	lw	v0,32(s8)
  441a2c:	00000000 	nop
  441a30:	ac400264 	sw	zero,612(v0)
    }
#endif

    /* set up reply */
    init_pbs(&reply, reply_buffer, sizeof(reply_buffer), "reply packet");
  441a34:	27c40028 	addiu	a0,s8,40
  441a38:	8f858134 	lw	a1,-32460(gp)
  441a3c:	3c060001 	lui	a2,0x1
  441a40:	8f87802c 	lw	a3,-32724(gp)
  441a44:	00000000 	nop
  441a48:	24e7dc0c 	addiu	a3,a3,-9204
  441a4c:	8f998364 	lw	t9,-31900(gp)
  441a50:	00000000 	nop
  441a54:	0320f809 	jalr	t9
  441a58:	00000000 	nop
  441a5c:	8fdc0018 	lw	gp,24(s8)
  441a60:	00000000 	nop

    /* HDR* out */
    {
	struct isakmp_hdr hdr;

	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;
  441a64:	24020010 	li	v0,16
  441a68:	a3c20089 	sb	v0,137(s8)
	hdr.isa_np = ISAKMP_NEXT_HASH;
  441a6c:	24020008 	li	v0,8
  441a70:	a3c20088 	sb	v0,136(s8)
	hdr.isa_xchg = ISAKMP_XCHG_QUICK;
  441a74:	24020020 	li	v0,32
  441a78:	a3c2008a 	sb	v0,138(s8)
	hdr.isa_msgid = st->st_msgid;
  441a7c:	8fc20020 	lw	v0,32(s8)
  441a80:	00000000 	nop
  441a84:	8c4200e0 	lw	v0,224(v0)
  441a88:	00000000 	nop
  441a8c:	afc2008c 	sw	v0,140(s8)
	hdr.isa_flags = ISAKMP_FLAG_ENCRYPTION;
  441a90:	24020001 	li	v0,1
  441a94:	a3c2008b 	sb	v0,139(s8)
	memcpy(hdr.isa_icookie, st->st_icookie, COOKIE_SIZE);
  441a98:	8fc20020 	lw	v0,32(s8)
  441a9c:	00000000 	nop
  441aa0:	244200f0 	addiu	v0,v0,240
  441aa4:	27c40078 	addiu	a0,s8,120
  441aa8:	00402821 	move	a1,v0
  441aac:	24060008 	li	a2,8
  441ab0:	8f998a30 	lw	t9,-30160(gp)
  441ab4:	00000000 	nop
  441ab8:	0320f809 	jalr	t9
  441abc:	00000000 	nop
  441ac0:	8fdc0018 	lw	gp,24(s8)
  441ac4:	00000000 	nop
	memcpy(hdr.isa_rcookie, st->st_rcookie, COOKIE_SIZE);
  441ac8:	27c20078 	addiu	v0,s8,120
  441acc:	24430008 	addiu	v1,v0,8
  441ad0:	8fc20020 	lw	v0,32(s8)
  441ad4:	00000000 	nop
  441ad8:	24420108 	addiu	v0,v0,264
  441adc:	00602021 	move	a0,v1
  441ae0:	00402821 	move	a1,v0
  441ae4:	24060008 	li	a2,8
  441ae8:	8f998a30 	lw	t9,-30160(gp)
  441aec:	00000000 	nop
  441af0:	0320f809 	jalr	t9
  441af4:	00000000 	nop
  441af8:	8fdc0018 	lw	gp,24(s8)
  441afc:	00000000 	nop
	if (!out_struct(&hdr, &isakmp_hdr_desc, &reply, &rbody))
  441b00:	27c40078 	addiu	a0,s8,120
  441b04:	8f858688 	lw	a1,-31096(gp)
  441b08:	27c60028 	addiu	a2,s8,40
  441b0c:	27c70048 	addiu	a3,s8,72
  441b10:	8f998ba0 	lw	t9,-29792(gp)
  441b14:	00000000 	nop
  441b18:	0320f809 	jalr	t9
  441b1c:	00000000 	nop
  441b20:	8fdc0018 	lw	gp,24(s8)
  441b24:	1440000d 	bnez	v0,441b5c <quick_outI1+0x488>
  441b28:	00000000 	nop
	{
	    reset_cur_state();
  441b2c:	8f8187f8 	lw	at,-30728(gp)
  441b30:	00000000 	nop
  441b34:	ac200000 	sw	zero,0(at)
  441b38:	8f82830c 	lw	v0,-31988(gp)
  441b3c:	00000000 	nop
  441b40:	8c420000 	lw	v0,0(v0)
  441b44:	8f8184f8 	lw	at,-31496(gp)
  441b48:	00000000 	nop
  441b4c:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  441b50:	24020003 	li	v0,3
  441b54:	100002a8 	b	4425f8 <quick_outI1+0xf24>
  441b58:	00000000 	nop
	}
    }

    /* HASH(1) -- create and note space to be filled later */
    START_HASH_PAYLOAD(&rbody, ISAKMP_NEXT_SA);
  441b5c:	24040001 	li	a0,1
  441b60:	8f858924 	lw	a1,-30428(gp)
  441b64:	27c60048 	addiu	a2,s8,72
  441b68:	27c70098 	addiu	a3,s8,152
  441b6c:	8f9986d4 	lw	t9,-31020(gp)
  441b70:	00000000 	nop
  441b74:	0320f809 	jalr	t9
  441b78:	00000000 	nop
  441b7c:	8fdc0018 	lw	gp,24(s8)
  441b80:	14400004 	bnez	v0,441b94 <quick_outI1+0x4c0>
  441b84:	00000000 	nop
  441b88:	24020003 	li	v0,3
  441b8c:	1000029a 	b	4425f8 <quick_outI1+0xf24>
  441b90:	00000000 	nop
  441b94:	8fc200a8 	lw	v0,168(s8)
  441b98:	00000000 	nop
  441b9c:	afc20068 	sw	v0,104(s8)
  441ba0:	8fc20020 	lw	v0,32(s8)
  441ba4:	00000000 	nop
  441ba8:	8c420028 	lw	v0,40(v0)
  441bac:	00000000 	nop
  441bb0:	8c44000c 	lw	a0,12(v0)
  441bb4:	27c50098 	addiu	a1,s8,152
  441bb8:	8f86802c 	lw	a2,-32724(gp)
  441bbc:	00000000 	nop
  441bc0:	24c6e548 	addiu	a2,a2,-6840
  441bc4:	8f998a20 	lw	t9,-30176(gp)
  441bc8:	00000000 	nop
  441bcc:	0320f809 	jalr	t9
  441bd0:	00000000 	nop
  441bd4:	8fdc0018 	lw	gp,24(s8)
  441bd8:	14400004 	bnez	v0,441bec <quick_outI1+0x518>
  441bdc:	00000000 	nop
  441be0:	24020003 	li	v0,3
  441be4:	10000284 	b	4425f8 <quick_outI1+0xf24>
  441be8:	00000000 	nop
  441bec:	27c40098 	addiu	a0,s8,152
  441bf0:	8f998228 	lw	t9,-32216(gp)
  441bf4:	00000000 	nop
  441bf8:	0320f809 	jalr	t9
  441bfc:	00000000 	nop
  441c00:	8fdc0018 	lw	gp,24(s8)
  441c04:	8fc20058 	lw	v0,88(s8)
  441c08:	00000000 	nop
  441c0c:	afc2006c 	sw	v0,108(s8)

    /* SA out */

    /* 
     * See if pfs_group has been specified for this conn,
     * if not, fallback to old use-same-as-P1 behaviour
     */
#ifndef NO_IKE_ALG
    if (st->st_connection)
  441c10:	8fc20020 	lw	v0,32(s8)
  441c14:	00000000 	nop
  441c18:	8c42000c 	lw	v0,12(v0)
  441c1c:	00000000 	nop
  441c20:	1040000d 	beqz	v0,441c58 <quick_outI1+0x584>
  441c24:	00000000 	nop
	    st->st_pfs_group = ike_alg_pfsgroup(st->st_connection, policy);
  441c28:	8fd00020 	lw	s0,32(s8)
  441c2c:	8fc20020 	lw	v0,32(s8)
  441c30:	00000000 	nop
  441c34:	8c44000c 	lw	a0,12(v0)
  441c38:	8fc60138 	lw	a2,312(s8)
  441c3c:	8fc7013c 	lw	a3,316(s8)
  441c40:	8f99868c 	lw	t9,-31092(gp)
  441c44:	00000000 	nop
  441c48:	0320f809 	jalr	t9
  441c4c:	00000000 	nop
  441c50:	8fdc0018 	lw	gp,24(s8)
  441c54:	ae0200c8 	sw	v0,200(s0)
    if (!st->st_pfs_group)
  441c58:	8fc20020 	lw	v0,32(s8)
  441c5c:	00000000 	nop
  441c60:	8c4200c8 	lw	v0,200(v0)
  441c64:	00000000 	nop
  441c68:	1440001a 	bnez	v0,441cd4 <quick_outI1+0x600>
  441c6c:	00000000 	nop
#endif
    /* If PFS specified, use the same group as during Phase 1:
     * since no negotiation is possible, we pick one that is
     * very likely supported.
     */
	    st->st_pfs_group = policy & POLICY_PFS? isakmp_sa->st_oakley.group : NULL;
  441c70:	8fc20020 	lw	v0,32(s8)
  441c74:	00000000 	nop
  441c78:	afc200fc 	sw	v0,252(s8)
  441c7c:	8fc40138 	lw	a0,312(s8)
  441c80:	8fc5013c 	lw	a1,316(s8)
  441c84:	24020000 	li	v0,0
  441c88:	24030040 	li	v1,64
  441c8c:	00822024 	and	a0,a0,v0
  441c90:	00a32824 	and	a1,a1,v1
  441c94:	00801021 	move	v0,a0
  441c98:	00451025 	or	v0,v0,a1
  441c9c:	10400008 	beqz	v0,441cc0 <quick_outI1+0x5ec>
  441ca0:	00000000 	nop
  441ca4:	8fc2012c 	lw	v0,300(s8)
  441ca8:	00000000 	nop
  441cac:	8c420030 	lw	v0,48(v0)
  441cb0:	00000000 	nop
  441cb4:	afc20100 	sw	v0,256(s8)
  441cb8:	10000002 	b	441cc4 <quick_outI1+0x5f0>
  441cbc:	00000000 	nop
  441cc0:	afc00100 	sw	zero,256(s8)
  441cc4:	8fc20100 	lw	v0,256(s8)
  441cc8:	8fc300fc 	lw	v1,252(s8)
  441ccc:	00000000 	nop
  441cd0:	ac6200c8 	sw	v0,200(v1)

    /* Emit SA payload based on a subset of the policy bits.
     * POLICY_COMPRESS is considered iff we can do IPcomp.
     */
    {
#ifdef KENNY_INITIAL_CONTACT
	u_int8_t np;
#endif /* KENNY_INITIAL_CONTACT */	
	lset_t pm = POLICY_ENCRYPT | POLICY_AUTHENTICATE;
  441cd4:	24020000 	li	v0,0
  441cd8:	2403000c 	li	v1,12
  441cdc:	afc200c0 	sw	v0,192(s8)
  441ce0:	afc300c4 	sw	v1,196(s8)

	if (can_do_IPcomp)
  441ce4:	8f828774 	lw	v0,-30860(gp)
  441ce8:	00000000 	nop
  441cec:	8c420000 	lw	v0,0(v0)
  441cf0:	00000000 	nop
  441cf4:	10400009 	beqz	v0,441d1c <quick_outI1+0x648>
  441cf8:	00000000 	nop
	    pm |= POLICY_COMPRESS;
  441cfc:	8fc200c0 	lw	v0,192(s8)
  441d00:	8fc300c4 	lw	v1,196(s8)
  441d04:	24040000 	li	a0,0
  441d08:	24050010 	li	a1,16
  441d0c:	00441025 	or	v0,v0,a0
  441d10:	00651825 	or	v1,v1,a1
  441d14:	afc200c0 	sw	v0,192(s8)
  441d18:	afc300c4 	sw	v1,196(s8)

#ifdef KENNY_INITIAL_CONTACT
	 loglog(RC_LOG_SERIOUS,"isakmp_sa = %x, ic = %d", isakmp_sa, isakmp_sa->initial_contact);
  441d1c:	24040003 	li	a0,3
  441d20:	8f85802c 	lw	a1,-32724(gp)
  441d24:	00000000 	nop
  441d28:	24a5e550 	addiu	a1,a1,-6832
  441d2c:	8fc6012c 	lw	a2,300(s8)
  441d30:	8fc2012c 	lw	v0,300(s8)
  441d34:	00000000 	nop
  441d38:	8c4702a0 	lw	a3,672(v0)
  441d3c:	8f998c48 	lw	t9,-29624(gp)
  441d40:	00000000 	nop
  441d44:	0320f809 	jalr	t9
  441d48:	00000000 	nop
  441d4c:	8fdc0018 	lw	gp,24(s8)
  441d50:	00000000 	nop
   	if (isakmp_sa->initial_contact == TRUE) {
  441d54:	8fc2012c 	lw	v0,300(s8)
  441d58:	00000000 	nop
  441d5c:	8c4302a0 	lw	v1,672(v0)
  441d60:	24020001 	li	v0,1
  441d64:	14620005 	bne	v1,v0,441d7c <quick_outI1+0x6a8>
  441d68:	00000000 	nop
		np = ISAKMP_NEXT_N;
  441d6c:	2402000b 	li	v0,11
  441d70:	a3c200b8 	sb	v0,184(s8)
  441d74:	10000003 	b	441d84 <quick_outI1+0x6b0>
  441d78:	00000000 	nop
   	} else {
		np = ISAKMP_NEXT_NONCE;
  441d7c:	2402000a 	li	v0,10
  441d80:	a3c200b8 	sb	v0,184(s8)
	}

	if (!out_sa(&rbody
	, &ipsec_sadb[(st->st_policy & pm) >> POLICY_IPSEC_SHIFT]
	, st, FALSE, FALSE, np))
  441d84:	8fc20020 	lw	v0,32(s8)
  441d88:	00000000 	nop
  441d8c:	8c4400d8 	lw	a0,216(v0)
  441d90:	8c4500dc 	lw	a1,220(v0)
  441d94:	8fc200c0 	lw	v0,192(s8)
  441d98:	8fc300c4 	lw	v1,196(s8)
  441d9c:	00821024 	and	v0,a0,v0
  441da0:	00a31824 	and	v1,a1,v1
  441da4:	00031882 	srl	v1,v1,0x2
  441da8:	00022780 	sll	a0,v0,0x1e
  441dac:	00641825 	or	v1,v1,a0
  441db0:	00021082 	srl	v0,v0,0x2
  441db4:	00601021 	move	v0,v1
  441db8:	000210c0 	sll	v0,v0,0x3
  441dbc:	8f838b20 	lw	v1,-29920(gp)
  441dc0:	00000000 	nop
  441dc4:	00621821 	addu	v1,v1,v0
  441dc8:	afa00010 	sw	zero,16(sp)
  441dcc:	93c200b8 	lbu	v0,184(s8)
  441dd0:	00000000 	nop
  441dd4:	afa20014 	sw	v0,20(sp)
  441dd8:	27c40048 	addiu	a0,s8,72
  441ddc:	00602821 	move	a1,v1
  441de0:	8fc60020 	lw	a2,32(s8)
  441de4:	00003821 	move	a3,zero
  441de8:	8f998bd0 	lw	t9,-29744(gp)
  441dec:	00000000 	nop
  441df0:	0320f809 	jalr	t9
  441df4:	00000000 	nop
  441df8:	8fdc0018 	lw	gp,24(s8)
  441dfc:	1440000d 	bnez	v0,441e34 <quick_outI1+0x760>
  441e00:	00000000 	nop
#else	
	if (!out_sa(&rbody
	, &ipsec_sadb[(st->st_policy & pm) >> POLICY_IPSEC_SHIFT]
	, st, FALSE, FALSE, ISAKMP_NEXT_NONCE))
#endif	
	{
	    reset_cur_state();
  441e04:	8f8187f8 	lw	at,-30728(gp)
  441e08:	00000000 	nop
  441e0c:	ac200000 	sw	zero,0(at)
  441e10:	8f82830c 	lw	v0,-31988(gp)
  441e14:	00000000 	nop
  441e18:	8c420000 	lw	v0,0(v0)
  441e1c:	8f8184f8 	lw	at,-31496(gp)
  441e20:	00000000 	nop
  441e24:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  441e28:	24020003 	li	v0,3
  441e2c:	100001f2 	b	4425f8 <quick_outI1+0xf24>
  441e30:	00000000 	nop
	}
    }

#ifdef KENNY_INITIAL_CONTACT
    /* IC out */
    {
   	if (isakmp_sa->initial_contact == TRUE) {
  441e34:	8fc2012c 	lw	v0,300(s8)
  441e38:	00000000 	nop
  441e3c:	8c4302a0 	lw	v1,672(v0)
  441e40:	24020001 	li	v0,1
  441e44:	14620057 	bne	v1,v0,441fa4 <quick_outI1+0x8d0>
  441e48:	00000000 	nop
            // build IC payload
		pb_stream not_pbs;
		struct isakmp_notification isan;

    		loglog(RC_LOG_SERIOUS, "quick_outI1: build IC payload");
  441e4c:	24040003 	li	a0,3
  441e50:	8f85802c 	lw	a1,-32724(gp)
  441e54:	00000000 	nop
  441e58:	24a5e568 	addiu	a1,a1,-6808
  441e5c:	8f998c48 	lw	t9,-29624(gp)
  441e60:	00000000 	nop
  441e64:	0320f809 	jalr	t9
  441e68:	00000000 	nop
  441e6c:	8fdc0018 	lw	gp,24(s8)
  441e70:	00000000 	nop
		isan.isan_doi = ISAKMP_DOI_IPSEC;
  441e74:	24020001 	li	v0,1
  441e78:	afc200ec 	sw	v0,236(s8)
		isan.isan_np = ISAKMP_NEXT_NONCE;
  441e7c:	2402000a 	li	v0,10
  441e80:	a3c200e8 	sb	v0,232(s8)
		isan.isan_type = IPSEC_INITIAL_CONTACT;
  441e84:	24026002 	li	v0,24578
  441e88:	a7c200f2 	sh	v0,242(s8)
		isan.isan_spisize = 16;
  441e8c:	24020010 	li	v0,16
  441e90:	a3c200f1 	sb	v0,241(s8)
		isan.isan_protoid = PROTO_ISAKMP; 
  441e94:	24020001 	li	v0,1
  441e98:	a3c200f0 	sb	v0,240(s8)

		if (!out_struct(&isan, &isakmp_notification_desc, &rbody, &not_pbs)
	    		|| !out_raw(st->st_icookie, COOKIE_SIZE, &not_pbs, "spi-icookie")
	    		|| !out_raw(st->st_rcookie, COOKIE_SIZE, &not_pbs, "spi-rcookie"))
  441e9c:	27c400e8 	addiu	a0,s8,232
  441ea0:	8f85812c 	lw	a1,-32468(gp)
  441ea4:	27c60048 	addiu	a2,s8,72
  441ea8:	27c700c8 	addiu	a3,s8,200
  441eac:	8f998ba0 	lw	t9,-29792(gp)
  441eb0:	00000000 	nop
  441eb4:	0320f809 	jalr	t9
  441eb8:	00000000 	nop
  441ebc:	8fdc0018 	lw	gp,24(s8)
  441ec0:	10400021 	beqz	v0,441f48 <quick_outI1+0x874>
  441ec4:	00000000 	nop
  441ec8:	8fc20020 	lw	v0,32(s8)
  441ecc:	00000000 	nop
  441ed0:	244200f0 	addiu	v0,v0,240
  441ed4:	00402021 	move	a0,v0
  441ed8:	24050008 	li	a1,8
  441edc:	27c600c8 	addiu	a2,s8,200
  441ee0:	8f87802c 	lw	a3,-32724(gp)
  441ee4:	00000000 	nop
  441ee8:	24e7e588 	addiu	a3,a3,-6776
  441eec:	8f998308 	lw	t9,-31992(gp)
  441ef0:	00000000 	nop
  441ef4:	0320f809 	jalr	t9
  441ef8:	00000000 	nop
  441efc:	8fdc0018 	lw	gp,24(s8)
  441f00:	10400011 	beqz	v0,441f48 <quick_outI1+0x874>
  441f04:	00000000 	nop
  441f08:	8fc20020 	lw	v0,32(s8)
  441f0c:	00000000 	nop
  441f10:	24420108 	addiu	v0,v0,264
  441f14:	00402021 	move	a0,v0
  441f18:	24050008 	li	a1,8
  441f1c:	27c600c8 	addiu	a2,s8,200
  441f20:	8f87802c 	lw	a3,-32724(gp)
  441f24:	00000000 	nop
  441f28:	24e7e594 	addiu	a3,a3,-6764
  441f2c:	8f998308 	lw	t9,-31992(gp)
  441f30:	00000000 	nop
  441f34:	0320f809 	jalr	t9
  441f38:	00000000 	nop
  441f3c:	8fdc0018 	lw	gp,24(s8)
  441f40:	1440000e 	bnez	v0,441f7c <quick_outI1+0x8a8>
  441f44:	00000000 	nop
	    		impossible();
  441f48:	8f84802c 	lw	a0,-32724(gp)
  441f4c:	00000000 	nop
  441f50:	2484d590 	addiu	a0,a0,-10864
  441f54:	8f85802c 	lw	a1,-32724(gp)
  441f58:	00000000 	nop
  441f5c:	24a5d59c 	addiu	a1,a1,-10852
  441f60:	240608e1 	li	a2,2273
  441f64:	8f998bb8 	lw	t9,-29768(gp)
  441f68:	00000000 	nop
  441f6c:	0320f809 	jalr	t9
  441f70:	00000000 	nop
  441f74:	8fdc0018 	lw	gp,24(s8)
  441f78:	00000000 	nop
		close_output_pbs(&not_pbs);
  441f7c:	27c400c8 	addiu	a0,s8,200
  441f80:	8f998228 	lw	t9,-32216(gp)
  441f84:	00000000 	nop
  441f88:	0320f809 	jalr	t9
  441f8c:	00000000 	nop
  441f90:	8fdc0018 	lw	gp,24(s8)
  441f94:	00000000 	nop

		isakmp_sa->initial_contact = FALSE;
  441f98:	8fc2012c 	lw	v0,300(s8)
  441f9c:	00000000 	nop
  441fa0:	ac4002a0 	sw	zero,672(v0)

	}

    }
#endif //KENNY_INITIAL_CONTACT

    /* Ni out */
    if (!build_and_ship_nonce(&st->st_ni, &rbody
    , policy & POLICY_PFS? ISAKMP_NEXT_KE : has_client? ISAKMP_NEXT_ID : ISAKMP_NEXT_NONE
    , "Ni"))
  441fa4:	8fc20020 	lw	v0,32(s8)
  441fa8:	00000000 	nop
  441fac:	244200f8 	addiu	v0,v0,248
  441fb0:	afc20104 	sw	v0,260(s8)
  441fb4:	8fc40138 	lw	a0,312(s8)
  441fb8:	8fc5013c 	lw	a1,316(s8)
  441fbc:	24020000 	li	v0,0
  441fc0:	24030040 	li	v1,64
  441fc4:	00822024 	and	a0,a0,v0
  441fc8:	00a32824 	and	a1,a1,v1
  441fcc:	00801021 	move	v0,a0
  441fd0:	00451025 	or	v0,v0,a1
  441fd4:	1440000c 	bnez	v0,442008 <quick_outI1+0x934>
  441fd8:	00000000 	nop
  441fdc:	8fc20070 	lw	v0,112(s8)
  441fe0:	00000000 	nop
  441fe4:	10400005 	beqz	v0,441ffc <quick_outI1+0x928>
  441fe8:	00000000 	nop
  441fec:	24030005 	li	v1,5
  441ff0:	afc30108 	sw	v1,264(s8)
  441ff4:	10000006 	b	442010 <quick_outI1+0x93c>
  441ff8:	00000000 	nop
  441ffc:	afc00108 	sw	zero,264(s8)
  442000:	10000003 	b	442010 <quick_outI1+0x93c>
  442004:	00000000 	nop
  442008:	24020004 	li	v0,4
  44200c:	afc20108 	sw	v0,264(s8)
  442010:	8fc40104 	lw	a0,260(s8)
  442014:	27c50048 	addiu	a1,s8,72
  442018:	8fc60108 	lw	a2,264(s8)
  44201c:	8f87802c 	lw	a3,-32724(gp)
  442020:	00000000 	nop
  442024:	24e7dd38 	addiu	a3,a3,-8904
  442028:	8f998034 	lw	t9,-32716(gp)
  44202c:	00000000 	nop
  442030:	2739a1a4 	addiu	t9,t9,-24156
  442034:	00000000 	nop
  442038:	0320f809 	jalr	t9
  44203c:	00000000 	nop
  442040:	8fdc0018 	lw	gp,24(s8)
  442044:	1440000d 	bnez	v0,44207c <quick_outI1+0x9a8>
  442048:	00000000 	nop
    {
	reset_cur_state();
  44204c:	8f8187f8 	lw	at,-30728(gp)
  442050:	00000000 	nop
  442054:	ac200000 	sw	zero,0(at)
  442058:	8f82830c 	lw	v0,-31988(gp)
  44205c:	00000000 	nop
  442060:	8c420000 	lw	v0,0(v0)
  442064:	8f8184f8 	lw	at,-31496(gp)
  442068:	00000000 	nop
  44206c:	ac220000 	sw	v0,0(at)
	return STF_INTERNAL_ERROR;
  442070:	24020003 	li	v0,3
  442074:	10000160 	b	4425f8 <quick_outI1+0xf24>
  442078:	00000000 	nop
    }

    /* [ KE ] out (for PFS) */

    if (st->st_pfs_group != NULL)
  44207c:	8fc20020 	lw	v0,32(s8)
  442080:	00000000 	nop
  442084:	8c4200c8 	lw	v0,200(v0)
  442088:	00000000 	nop
  44208c:	1040002c 	beqz	v0,442140 <quick_outI1+0xa6c>
  442090:	00000000 	nop
    {
	if (!build_and_ship_KE(st, &st->st_gi, st->st_pfs_group
	, &rbody, has_client? ISAKMP_NEXT_ID : ISAKMP_NEXT_NONE))
  442094:	8fc20020 	lw	v0,32(s8)
  442098:	00000000 	nop
  44209c:	244200e8 	addiu	v0,v0,232
  4420a0:	afc2010c 	sw	v0,268(s8)
  4420a4:	8fc30020 	lw	v1,32(s8)
  4420a8:	00000000 	nop
  4420ac:	afc30110 	sw	v1,272(s8)
  4420b0:	8fc20070 	lw	v0,112(s8)
  4420b4:	00000000 	nop
  4420b8:	10400005 	beqz	v0,4420d0 <quick_outI1+0x9fc>
  4420bc:	00000000 	nop
  4420c0:	24020005 	li	v0,5
  4420c4:	afa20010 	sw	v0,16(sp)
  4420c8:	10000002 	b	4420d4 <quick_outI1+0xa00>
  4420cc:	00000000 	nop
  4420d0:	afa00010 	sw	zero,16(sp)
  4420d4:	8fc40020 	lw	a0,32(s8)
  4420d8:	8fc5010c 	lw	a1,268(s8)
  4420dc:	8fc20110 	lw	v0,272(s8)
  4420e0:	00000000 	nop
  4420e4:	8c4600c8 	lw	a2,200(v0)
  4420e8:	27c70048 	addiu	a3,s8,72
  4420ec:	8f998034 	lw	t9,-32716(gp)
  4420f0:	00000000 	nop
  4420f4:	27399b7c 	addiu	t9,t9,-25732
  4420f8:	00000000 	nop
  4420fc:	0320f809 	jalr	t9
  442100:	00000000 	nop
  442104:	8fdc0018 	lw	gp,24(s8)
  442108:	1440000d 	bnez	v0,442140 <quick_outI1+0xa6c>
  44210c:	00000000 	nop
	{
	    reset_cur_state();
  442110:	8f8187f8 	lw	at,-30728(gp)
  442114:	00000000 	nop
  442118:	ac200000 	sw	zero,0(at)
  44211c:	8f82830c 	lw	v0,-31988(gp)
  442120:	00000000 	nop
  442124:	8c420000 	lw	v0,0(v0)
  442128:	8f8184f8 	lw	at,-31496(gp)
  44212c:	00000000 	nop
  442130:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  442134:	24020003 	li	v0,3
  442138:	1000012f 	b	4425f8 <quick_outI1+0xf24>
  44213c:	00000000 	nop
	}
    }

    /* [ IDci, IDcr ] out */
    if (has_client)
  442140:	8fc20070 	lw	v0,112(s8)
  442144:	00000000 	nop
  442148:	10400039 	beqz	v0,442230 <quick_outI1+0xb5c>
  44214c:	00000000 	nop
    {
	/* IDci (we are initiator), then IDcr (peer is responder) */
	if (!emit_subnet_id(&c->this.client
	  , ISAKMP_NEXT_ID, st->st_myuserprotoid, st->st_myuserport, &rbody)
	|| !emit_subnet_id(&c->that.client
	  , ISAKMP_NEXT_NONE, st->st_peeruserprotoid, st->st_peeruserport, &rbody))
  442150:	8fc20130 	lw	v0,304(s8)
  442154:	00000000 	nop
  442158:	24440090 	addiu	a0,v0,144
  44215c:	8fc20020 	lw	v0,32(s8)
  442160:	00000000 	nop
  442164:	90460120 	lbu	a2,288(v0)
  442168:	8fc20020 	lw	v0,32(s8)
  44216c:	00000000 	nop
  442170:	94430122 	lhu	v1,290(v0)
  442174:	27c20048 	addiu	v0,s8,72
  442178:	afa20010 	sw	v0,16(sp)
  44217c:	24050005 	li	a1,5
  442180:	00603821 	move	a3,v1
  442184:	8f998034 	lw	t9,-32716(gp)
  442188:	00000000 	nop
  44218c:	27391418 	addiu	t9,t9,5144
  442190:	00000000 	nop
  442194:	0320f809 	jalr	t9
  442198:	00000000 	nop
  44219c:	8fdc0018 	lw	gp,24(s8)
  4421a0:	10400017 	beqz	v0,442200 <quick_outI1+0xb2c>
  4421a4:	00000000 	nop
  4421a8:	8fc20130 	lw	v0,304(s8)
  4421ac:	00000000 	nop
  4421b0:	24440140 	addiu	a0,v0,320
  4421b4:	8fc20020 	lw	v0,32(s8)
  4421b8:	00000000 	nop
  4421bc:	9046012c 	lbu	a2,300(v0)
  4421c0:	8fc20020 	lw	v0,32(s8)
  4421c4:	00000000 	nop
  4421c8:	9443012e 	lhu	v1,302(v0)
  4421cc:	27c20048 	addiu	v0,s8,72
  4421d0:	afa20010 	sw	v0,16(sp)
  4421d4:	00002821 	move	a1,zero
  4421d8:	00603821 	move	a3,v1
  4421dc:	8f998034 	lw	t9,-32716(gp)
  4421e0:	00000000 	nop
  4421e4:	27391418 	addiu	t9,t9,5144
  4421e8:	00000000 	nop
  4421ec:	0320f809 	jalr	t9
  4421f0:	00000000 	nop
  4421f4:	8fdc0018 	lw	gp,24(s8)
  4421f8:	1440000d 	bnez	v0,442230 <quick_outI1+0xb5c>
  4421fc:	00000000 	nop
	{
	    reset_cur_state();
  442200:	8f8187f8 	lw	at,-30728(gp)
  442204:	00000000 	nop
  442208:	ac200000 	sw	zero,0(at)
  44220c:	8f82830c 	lw	v0,-31988(gp)
  442210:	00000000 	nop
  442214:	8c420000 	lw	v0,0(v0)
  442218:	8f8184f8 	lw	at,-31496(gp)
  44221c:	00000000 	nop
  442220:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  442224:	24020003 	li	v0,3
  442228:	100000f3 	b	4425f8 <quick_outI1+0xf24>
  44222c:	00000000 	nop
	}
    }

#ifdef NAT_TRAVERSAL
    if ((st->nat_traversal & NAT_T_WITH_NATOA) &&
	(!(st->st_policy & POLICY_TUNNEL)) &&
	(st->nat_traversal & LELEM(NAT_TRAVERSAL_NAT_BHND_ME))) {
  442230:	8fc20020 	lw	v0,32(s8)
  442234:	00000000 	nop
  442238:	8c420264 	lw	v0,612(v0)
  44223c:	00000000 	nop
  442240:	3042000e 	andi	v0,v0,0xe
  442244:	1040002a 	beqz	v0,4422f0 <quick_outI1+0xc1c>
  442248:	00000000 	nop
  44224c:	8fc20020 	lw	v0,32(s8)
  442250:	00000000 	nop
  442254:	8c4400d8 	lw	a0,216(v0)
  442258:	8c4500dc 	lw	a1,220(v0)
  44225c:	24020000 	li	v0,0
  442260:	24030020 	li	v1,32
  442264:	00822024 	and	a0,a0,v0
  442268:	00a32824 	and	a1,a1,v1
  44226c:	00801021 	move	v0,a0
  442270:	00451025 	or	v0,v0,a1
  442274:	1440001e 	bnez	v0,4422f0 <quick_outI1+0xc1c>
  442278:	00000000 	nop
  44227c:	8fc20020 	lw	v0,32(s8)
  442280:	00000000 	nop
  442284:	8c430264 	lw	v1,612(v0)
  442288:	3c024000 	lui	v0,0x4000
  44228c:	00621024 	and	v0,v1,v0
  442290:	10400017 	beqz	v0,4422f0 <quick_outI1+0xc1c>
  442294:	00000000 	nop
	/** Send NAT-OA if our address is NATed */
	if (!nat_traversal_add_natoa(ISAKMP_NEXT_NONE, &rbody, st)) {
  442298:	00002021 	move	a0,zero
  44229c:	27c50048 	addiu	a1,s8,72
  4422a0:	8fc60020 	lw	a2,32(s8)
  4422a4:	8f998984 	lw	t9,-30332(gp)
  4422a8:	00000000 	nop
  4422ac:	0320f809 	jalr	t9
  4422b0:	00000000 	nop
  4422b4:	8fdc0018 	lw	gp,24(s8)
  4422b8:	1440000d 	bnez	v0,4422f0 <quick_outI1+0xc1c>
  4422bc:	00000000 	nop
        reset_cur_state();
  4422c0:	8f8187f8 	lw	at,-30728(gp)
  4422c4:	00000000 	nop
  4422c8:	ac200000 	sw	zero,0(at)
  4422cc:	8f82830c 	lw	v0,-31988(gp)
  4422d0:	00000000 	nop
  4422d4:	8c420000 	lw	v0,0(v0)
  4422d8:	8f8184f8 	lw	at,-31496(gp)
  4422dc:	00000000 	nop
  4422e0:	ac220000 	sw	v0,0(at)
	    return STF_INTERNAL_ERROR;
  4422e4:	24020003 	li	v0,3
  4422e8:	100000c3 	b	4425f8 <quick_outI1+0xf24>
  4422ec:	00000000 	nop
	}
    }
#endif

    /* finish computing  HASH(1), inserting it in output */
    (void) quick_mode_hash12(r_hashval, r_hash_start, rbody.cur
  4422f0:	8fc20020 	lw	v0,32(s8)
  4422f4:	00000000 	nop
  4422f8:	244200e0 	addiu	v0,v0,224
  4422fc:	afa20010 	sw	v0,16(sp)
  442300:	afa00014 	sw	zero,20(sp)
  442304:	8fc40068 	lw	a0,104(s8)
  442308:	8fc5006c 	lw	a1,108(s8)
  44230c:	8fc60058 	lw	a2,88(s8)
  442310:	8fc70020 	lw	a3,32(s8)
  442314:	8f998034 	lw	t9,-32716(gp)
  442318:	00000000 	nop
  44231c:	27390e0c 	addiu	t9,t9,3596
  442320:	00000000 	nop
  442324:	0320f809 	jalr	t9
  442328:	00000000 	nop
  44232c:	8fdc0018 	lw	gp,24(s8)
  442330:	00000000 	nop
	, st, &st->st_msgid, FALSE);

    /* encrypt message, except for fixed part of header */

    init_phase2_iv(isakmp_sa, &st->st_msgid);
  442334:	8fc20020 	lw	v0,32(s8)
  442338:	00000000 	nop
  44233c:	244200e0 	addiu	v0,v0,224
  442340:	8fc4012c 	lw	a0,300(s8)
  442344:	00402821 	move	a1,v0
  442348:	8f998bc8 	lw	t9,-29752(gp)
  44234c:	00000000 	nop
  442350:	0320f809 	jalr	t9
  442354:	00000000 	nop
  442358:	8fdc0018 	lw	gp,24(s8)
  44235c:	00000000 	nop

    st->st_new_iv_len = isakmp_sa->st_new_iv_len;
  442360:	8fc2012c 	lw	v0,300(s8)
  442364:	00000000 	nop
  442368:	8c430248 	lw	v1,584(v0)
  44236c:	8fc20020 	lw	v0,32(s8)
  442370:	00000000 	nop
  442374:	ac430248 	sw	v1,584(v0)
    set_new_iv(st, isakmp_sa->st_new_iv);
  442378:	8fc20020 	lw	v0,32(s8)
  44237c:	00000000 	nop
  442380:	8c420248 	lw	v0,584(v0)
  442384:	00000000 	nop
  442388:	2c420040 	sltiu	v0,v0,64
  44238c:	1440000d 	bnez	v0,4423c4 <quick_outI1+0xcf0>
  442390:	00000000 	nop
  442394:	8f84802c 	lw	a0,-32724(gp)
  442398:	00000000 	nop
  44239c:	2484e5a0 	addiu	a0,a0,-6752
  4423a0:	8f85802c 	lw	a1,-32724(gp)
  4423a4:	00000000 	nop
  4423a8:	24a5d59c 	addiu	a1,a1,-10852
  4423ac:	24060923 	li	a2,2339
  4423b0:	8f998bb8 	lw	t9,-29768(gp)
  4423b4:	00000000 	nop
  4423b8:	0320f809 	jalr	t9
  4423bc:	00000000 	nop
  4423c0:	8fdc0018 	lw	gp,24(s8)
  4423c4:	8fc20020 	lw	v0,32(s8)
  4423c8:	00000000 	nop
  4423cc:	244301c4 	addiu	v1,v0,452
  4423d0:	8fc2012c 	lw	v0,300(s8)
  4423d4:	00000000 	nop
  4423d8:	244201c4 	addiu	v0,v0,452
  4423dc:	00602021 	move	a0,v1
  4423e0:	00402821 	move	a1,v0
  4423e4:	8fc20020 	lw	v0,32(s8)
  4423e8:	00000000 	nop
  4423ec:	8c460248 	lw	a2,584(v0)
  4423f0:	8f998a30 	lw	t9,-30160(gp)
  4423f4:	00000000 	nop
  4423f8:	0320f809 	jalr	t9
  4423fc:	00000000 	nop
  442400:	8fdc0018 	lw	gp,24(s8)
  442404:	00000000 	nop

    if (!encrypt_message(&rbody, st))
  442408:	27c40048 	addiu	a0,s8,72
  44240c:	8fc50020 	lw	a1,32(s8)
  442410:	8f99885c 	lw	t9,-30628(gp)
  442414:	00000000 	nop
  442418:	0320f809 	jalr	t9
  44241c:	00000000 	nop
  442420:	8fdc0018 	lw	gp,24(s8)
  442424:	1440000d 	bnez	v0,44245c <quick_outI1+0xd88>
  442428:	00000000 	nop
    {
	reset_cur_state();
  44242c:	8f8187f8 	lw	at,-30728(gp)
  442430:	00000000 	nop
  442434:	ac200000 	sw	zero,0(at)
  442438:	8f82830c 	lw	v0,-31988(gp)
  44243c:	00000000 	nop
  442440:	8c420000 	lw	v0,0(v0)
  442444:	8f8184f8 	lw	at,-31496(gp)
  442448:	00000000 	nop
  44244c:	ac220000 	sw	v0,0(at)
	return STF_INTERNAL_ERROR;
  442450:	24020003 	li	v0,3
  442454:	10000068 	b	4425f8 <quick_outI1+0xf24>
  442458:	00000000 	nop
    }

    /* save packet, now that we know its size */
    clonetochunk(st->st_tpacket, reply.start, pbs_offset(&reply)
  44245c:	8fd00020 	lw	s0,32(s8)
  442460:	8fc30038 	lw	v1,56(s8)
  442464:	8fc20034 	lw	v0,52(s8)
  442468:	00000000 	nop
  44246c:	00621023 	subu	v0,v1,v0
  442470:	00401821 	move	v1,v0
  442474:	8fc20020 	lw	v0,32(s8)
  442478:	00000000 	nop
  44247c:	ac43011c 	sw	v1,284(v0)
  442480:	8fc40034 	lw	a0,52(s8)
  442484:	00602821 	move	a1,v1
  442488:	8f86802c 	lw	a2,-32724(gp)
  44248c:	00000000 	nop
  442490:	24c6e5d0 	addiu	a2,a2,-6704
  442494:	8f998c04 	lw	t9,-29692(gp)
  442498:	00000000 	nop
  44249c:	0320f809 	jalr	t9
  4424a0:	00000000 	nop
  4424a4:	8fdc0018 	lw	gp,24(s8)
  4424a8:	ae020118 	sw	v0,280(s0)
	, "reply packet from quick_outI1");

    /* send the packet */

    send_packet(st, "quick_outI1");
  4424ac:	8fc40020 	lw	a0,32(s8)
  4424b0:	8f85802c 	lw	a1,-32724(gp)
  4424b4:	00000000 	nop
  4424b8:	24a5e5f0 	addiu	a1,a1,-6672
  4424bc:	24060001 	li	a2,1
  4424c0:	8f9987f0 	lw	t9,-30736(gp)
  4424c4:	00000000 	nop
  4424c8:	0320f809 	jalr	t9
  4424cc:	00000000 	nop
  4424d0:	8fdc0018 	lw	gp,24(s8)
  4424d4:	00000000 	nop

    delete_event(st);
  4424d8:	8fc40020 	lw	a0,32(s8)
  4424dc:	8f9985b4 	lw	t9,-31308(gp)
  4424e0:	00000000 	nop
  4424e4:	0320f809 	jalr	t9
  4424e8:	00000000 	nop
  4424ec:	8fdc0018 	lw	gp,24(s8)
  4424f0:	00000000 	nop
    event_schedule(EVENT_RETRANSMIT, EVENT_RETRANSMIT_DELAY_0, st);
  4424f4:	24040004 	li	a0,4
  4424f8:	2405000a 	li	a1,10
  4424fc:	8fc60020 	lw	a2,32(s8)
  442500:	8f998410 	lw	t9,-31728(gp)
  442504:	00000000 	nop
  442508:	0320f809 	jalr	t9
  44250c:	00000000 	nop
  442510:	8fdc0018 	lw	gp,24(s8)
  442514:	00000000 	nop

    if (replacing == SOS_NOBODY)
  442518:	8fc20144 	lw	v0,324(s8)
  44251c:	00000000 	nop
  442520:	14400016 	bnez	v0,44257c <quick_outI1+0xea8>
  442524:	00000000 	nop
	whack_log(RC_NEW_STATE + STATE_QUICK_I1
  442528:	8f8483b0 	lw	a0,-31824(gp)
  44252c:	8fc20020 	lw	v0,32(s8)
  442530:	00000000 	nop
  442534:	8c45014c 	lw	a1,332(v0)
  442538:	8f9984bc 	lw	t9,-31556(gp)
  44253c:	00000000 	nop
  442540:	0320f809 	jalr	t9
  442544:	00000000 	nop
  442548:	8fdc0018 	lw	gp,24(s8)
  44254c:	2404007a 	li	a0,122
  442550:	8f85802c 	lw	a1,-32724(gp)
  442554:	00000000 	nop
  442558:	24a5dc9c 	addiu	a1,a1,-9060
  44255c:	00403021 	move	a2,v0
  442560:	8f9982a8 	lw	t9,-32088(gp)
  442564:	00000000 	nop
  442568:	0320f809 	jalr	t9
  44256c:	00000000 	nop
  442570:	8fdc0018 	lw	gp,24(s8)
  442574:	10000016 	b	4425d0 <quick_outI1+0xefc>
  442578:	00000000 	nop
	    , "%s: initiate"
	    , enum_name(&state_names, st->st_state));
    else
	whack_log(RC_NEW_STATE + STATE_QUICK_I1
  44257c:	8f8483b0 	lw	a0,-31824(gp)
  442580:	8fc20020 	lw	v0,32(s8)
  442584:	00000000 	nop
  442588:	8c45014c 	lw	a1,332(v0)
  44258c:	8f9984bc 	lw	t9,-31556(gp)
  442590:	00000000 	nop
  442594:	0320f809 	jalr	t9
  442598:	00000000 	nop
  44259c:	8fdc0018 	lw	gp,24(s8)
  4425a0:	2404007a 	li	a0,122
  4425a4:	8f85802c 	lw	a1,-32724(gp)
  4425a8:	00000000 	nop
  4425ac:	24a5e5fc 	addiu	a1,a1,-6660
  4425b0:	00403021 	move	a2,v0
  4425b4:	8fc70144 	lw	a3,324(s8)
  4425b8:	8f9982a8 	lw	t9,-32088(gp)
  4425bc:	00000000 	nop
  4425c0:	0320f809 	jalr	t9
  4425c4:	00000000 	nop
  4425c8:	8fdc0018 	lw	gp,24(s8)
  4425cc:	00000000 	nop
	    , "%s: initiate to replace #%lu"
	    , enum_name(&state_names, st->st_state)
	    , replacing);
    reset_cur_state();
  4425d0:	8f8187f8 	lw	at,-30728(gp)
  4425d4:	00000000 	nop
  4425d8:	ac200000 	sw	zero,0(at)
  4425dc:	8f82830c 	lw	v0,-31988(gp)
  4425e0:	00000000 	nop
  4425e4:	8c420000 	lw	v0,0(v0)
  4425e8:	8f8184f8 	lw	at,-31496(gp)
  4425ec:	00000000 	nop
  4425f0:	ac220000 	sw	v0,0(at)
    return STF_OK;
  4425f4:	24020002 	li	v0,2
}
  4425f8:	03c0e821 	move	sp,s8
  4425fc:	8fbf0124 	lw	ra,292(sp)
  442600:	8fbe0120 	lw	s8,288(sp)
  442604:	8fb00118 	lw	s0,280(sp)
  442608:	27bd0128 	addiu	sp,sp,296
  44260c:	03e00008 	jr	ra
  442610:	00000000 	nop

00442614 <decode_cert>:
  442614:	3c1c0fbd 	lui	gp,0xfbd
  442618:	279ca35c 	addiu	gp,gp,-23716
  44261c:	0399e021 	addu	gp,gp,t9
  442620:	27bdff28 	addiu	sp,sp,-216
  442624:	afbc0010 	sw	gp,16(sp)
  442628:	afbf00d0 	sw	ra,208(sp)
  44262c:	afbe00cc 	sw	s8,204(sp)
  442630:	afbc00c8 	sw	gp,200(sp)
  442634:	03a0f021 	move	s8,sp
  442638:	afc400d8 	sw	a0,216(s8)


/*
 * Decode the CERT payload of Phase 1.
 */
static void
decode_cert(struct msg_digest *md)
{
    struct payload_digest *p;

    for (p = md->chain[ISAKMP_NEXT_CERT]; p != NULL; p = p->next)
  44263c:	8fc200d8 	lw	v0,216(s8)
  442640:	00000000 	nop
  442644:	8c4204c0 	lw	v0,1216(v0)
  442648:	00000000 	nop
  44264c:	afc20018 	sw	v0,24(s8)
  442650:	8fc20018 	lw	v0,24(s8)
  442654:	00000000 	nop
  442658:	14400003 	bnez	v0,442668 <decode_cert+0x54>
  44265c:	00000000 	nop
  442660:	100000cb 	b	442990 <decode_cert+0x37c>
  442664:	00000000 	nop
    {
	struct isakmp_cert *const cert = &p->payload.cert;
  442668:	8fc20018 	lw	v0,24(s8)
  44266c:	00000000 	nop
  442670:	24420020 	addiu	v0,v0,32
  442674:	afc2001c 	sw	v0,28(s8)
	chunk_t blob;
	time_t valid_until;
	blob.ptr = p->pbs.cur;
  442678:	8fc20018 	lw	v0,24(s8)
  44267c:	00000000 	nop
  442680:	8c420010 	lw	v0,16(v0)
  442684:	00000000 	nop
  442688:	afc20020 	sw	v0,32(s8)
	blob.len = pbs_left(&p->pbs);
  44268c:	8fc20018 	lw	v0,24(s8)
  442690:	00000000 	nop
  442694:	8c430014 	lw	v1,20(v0)
  442698:	8fc20018 	lw	v0,24(s8)
  44269c:	00000000 	nop
  4426a0:	8c420010 	lw	v0,16(v0)
  4426a4:	00000000 	nop
  4426a8:	00621023 	subu	v0,v1,v0
  4426ac:	afc20024 	sw	v0,36(s8)
	if (cert->isacert_type == CERT_X509_SIGNATURE)
  4426b0:	8fc2001c 	lw	v0,28(s8)
  4426b4:	00000000 	nop
  4426b8:	90430004 	lbu	v1,4(v0)
  4426bc:	24020004 	li	v0,4
  4426c0:	1462005f 	bne	v1,v0,442840 <decode_cert+0x22c>
  4426c4:	00000000 	nop
	{
	    x509cert_t cert = empty_x509cert;
  4426c8:	27c40030 	addiu	a0,s8,48
  4426cc:	8f858820 	lw	a1,-30688(gp)
  4426d0:	24060090 	li	a2,144
  4426d4:	8f998a30 	lw	t9,-30160(gp)
  4426d8:	00000000 	nop
  4426dc:	0320f809 	jalr	t9
  4426e0:	00000000 	nop
  4426e4:	8fdc0010 	lw	gp,16(s8)
  4426e8:	00000000 	nop
	    if (parse_x509cert(blob, 0, &cert))
  4426ec:	8fc40020 	lw	a0,32(s8)
  4426f0:	8fc50024 	lw	a1,36(s8)
  4426f4:	00003021 	move	a2,zero
  4426f8:	27c70030 	addiu	a3,s8,48
  4426fc:	8f998240 	lw	t9,-32192(gp)
  442700:	00000000 	nop
  442704:	0320f809 	jalr	t9
  442708:	00000000 	nop
  44270c:	8fdc0010 	lw	gp,16(s8)
  442710:	10400041 	beqz	v0,442818 <decode_cert+0x204>
  442714:	00000000 	nop
	    {
		if (verify_x509cert(&cert, strict_crl_policy, &valid_until))
  442718:	27c40030 	addiu	a0,s8,48
  44271c:	8f858aac 	lw	a1,-30036(gp)
  442720:	00000000 	nop
  442724:	8ca50000 	lw	a1,0(a1)
  442728:	27c60028 	addiu	a2,s8,40
  44272c:	8f998258 	lw	t9,-32168(gp)
  442730:	00000000 	nop
  442734:	0320f809 	jalr	t9
  442738:	00000000 	nop
  44273c:	8fdc0010 	lw	gp,16(s8)
  442740:	1040001b 	beqz	v0,4427b0 <decode_cert+0x19c>
  442744:	00000000 	nop
		{
		    DBG(DBG_PARSING,
  442748:	8f8284f8 	lw	v0,-31496(gp)
  44274c:	00000000 	nop
  442750:	8c420000 	lw	v0,0(v0)
  442754:	00000000 	nop
  442758:	30420004 	andi	v0,v0,0x4
  44275c:	1040000a 	beqz	v0,442788 <decode_cert+0x174>
  442760:	00000000 	nop
  442764:	8f84802c 	lw	a0,-32724(gp)
  442768:	00000000 	nop
  44276c:	2484e61c 	addiu	a0,a0,-6628
  442770:	8f9983b8 	lw	t9,-31816(gp)
  442774:	00000000 	nop
  442778:	0320f809 	jalr	t9
  44277c:	00000000 	nop
  442780:	8fdc0010 	lw	gp,16(s8)
  442784:	00000000 	nop
			DBG_log("Public key validated")
		    )
		    add_x509_public_key(&cert, valid_until, DAL_SIGNED);
  442788:	27c40030 	addiu	a0,s8,48
  44278c:	8fc50028 	lw	a1,40(s8)
  442790:	24060002 	li	a2,2
  442794:	8f998980 	lw	t9,-30336(gp)
  442798:	00000000 	nop
  44279c:	0320f809 	jalr	t9
  4427a0:	00000000 	nop
  4427a4:	8fdc0010 	lw	gp,16(s8)
  4427a8:	1000000a 	b	4427d4 <decode_cert+0x1c0>
  4427ac:	00000000 	nop
		}
		else
		{
		    plog("X.509 certificate rejected");
  4427b0:	8f84802c 	lw	a0,-32724(gp)
  4427b4:	00000000 	nop
  4427b8:	2484e634 	addiu	a0,a0,-6604
  4427bc:	8f998abc 	lw	t9,-30020(gp)
  4427c0:	00000000 	nop
  4427c4:	0320f809 	jalr	t9
  4427c8:	00000000 	nop
  4427cc:	8fdc0010 	lw	gp,16(s8)
  4427d0:	00000000 	nop
		}
		free_generalNames(cert.subjectAltName, FALSE);
  4427d4:	8fc400a8 	lw	a0,168(s8)
  4427d8:	00002821 	move	a1,zero
  4427dc:	8f9987ac 	lw	t9,-30804(gp)
  4427e0:	00000000 	nop
  4427e4:	0320f809 	jalr	t9
  4427e8:	00000000 	nop
  4427ec:	8fdc0010 	lw	gp,16(s8)
  4427f0:	00000000 	nop
		free_generalNames(cert.crlDistributionPoints, FALSE);
  4427f4:	8fc400ac 	lw	a0,172(s8)
  4427f8:	00002821 	move	a1,zero
  4427fc:	8f9987ac 	lw	t9,-30804(gp)
  442800:	00000000 	nop
  442804:	0320f809 	jalr	t9
  442808:	00000000 	nop
  44280c:	8fdc0010 	lw	gp,16(s8)
  442810:	10000058 	b	442974 <decode_cert+0x360>
  442814:	00000000 	nop
	    }
	    else
		plog("Error in X.509 certificate");
  442818:	8f84802c 	lw	a0,-32724(gp)
  44281c:	00000000 	nop
  442820:	2484e650 	addiu	a0,a0,-6576
  442824:	8f998abc 	lw	t9,-30020(gp)
  442828:	00000000 	nop
  44282c:	0320f809 	jalr	t9
  442830:	00000000 	nop
  442834:	8fdc0010 	lw	gp,16(s8)
  442838:	1000004e 	b	442974 <decode_cert+0x360>
  44283c:	00000000 	nop
	}
	else if (cert->isacert_type == CERT_PKCS7_WRAPPED_X509)
  442840:	8fc2001c 	lw	v0,28(s8)
  442844:	00000000 	nop
  442848:	90430004 	lbu	v1,4(v0)
  44284c:	24020001 	li	v0,1
  442850:	14620021 	bne	v1,v0,4428d8 <decode_cert+0x2c4>
  442854:	00000000 	nop
	{
	    x509cert_t *cert = NULL;
  442858:	afc000c0 	sw	zero,192(s8)

	    if (parse_pkcs7_cert(blob, &cert))
  44285c:	8fc40020 	lw	a0,32(s8)
  442860:	8fc50024 	lw	a1,36(s8)
  442864:	27c600c0 	addiu	a2,s8,192
  442868:	8f998090 	lw	t9,-32624(gp)
  44286c:	00000000 	nop
  442870:	0320f809 	jalr	t9
  442874:	00000000 	nop
  442878:	8fdc0010 	lw	gp,16(s8)
  44287c:	1040000c 	beqz	v0,4428b0 <decode_cert+0x29c>
  442880:	00000000 	nop
		store_x509certs(&cert, strict_crl_policy);
  442884:	27c400c0 	addiu	a0,s8,192
  442888:	8f858aac 	lw	a1,-30036(gp)
  44288c:	00000000 	nop
  442890:	8ca50000 	lw	a1,0(a1)
  442894:	8f998244 	lw	t9,-32188(gp)
  442898:	00000000 	nop
  44289c:	0320f809 	jalr	t9
  4428a0:	00000000 	nop
  4428a4:	8fdc0010 	lw	gp,16(s8)
  4428a8:	10000032 	b	442974 <decode_cert+0x360>
  4428ac:	00000000 	nop
	    else
		plog("Error in PKCS#7 wrapped X.509 certificates");
  4428b0:	8f84802c 	lw	a0,-32724(gp)
  4428b4:	00000000 	nop
  4428b8:	2484e66c 	addiu	a0,a0,-6548
  4428bc:	8f998abc 	lw	t9,-30020(gp)
  4428c0:	00000000 	nop
  4428c4:	0320f809 	jalr	t9
  4428c8:	00000000 	nop
  4428cc:	8fdc0010 	lw	gp,16(s8)
  4428d0:	10000028 	b	442974 <decode_cert+0x360>
  4428d4:	00000000 	nop
	}
	else
	{
	    loglog(RC_LOG_SERIOUS, "ignoring %s certificate payload",
  4428d8:	8fc2001c 	lw	v0,28(s8)
  4428dc:	00000000 	nop
  4428e0:	90420004 	lbu	v0,4(v0)
  4428e4:	8f848184 	lw	a0,-32380(gp)
  4428e8:	00402821 	move	a1,v0
  4428ec:	8f9987fc 	lw	t9,-30724(gp)
  4428f0:	00000000 	nop
  4428f4:	0320f809 	jalr	t9
  4428f8:	00000000 	nop
  4428fc:	8fdc0010 	lw	gp,16(s8)
  442900:	24040003 	li	a0,3
  442904:	8f85802c 	lw	a1,-32724(gp)
  442908:	00000000 	nop
  44290c:	24a5e698 	addiu	a1,a1,-6504
  442910:	00403021 	move	a2,v0
  442914:	8f998c48 	lw	t9,-29624(gp)
  442918:	00000000 	nop
  44291c:	0320f809 	jalr	t9
  442920:	00000000 	nop
  442924:	8fdc0010 	lw	gp,16(s8)
  442928:	00000000 	nop
		   enum_show(&cert_type_names, cert->isacert_type));
	    DBG_cond_dump_chunk(DBG_PARSING, "CERT:\n", blob);
  44292c:	8f8284f8 	lw	v0,-31496(gp)
  442930:	00000000 	nop
  442934:	8c420000 	lw	v0,0(v0)
  442938:	00000000 	nop
  44293c:	30420004 	andi	v0,v0,0x4
  442940:	1040000c 	beqz	v0,442974 <decode_cert+0x360>
  442944:	00000000 	nop
  442948:	8f84802c 	lw	a0,-32724(gp)
  44294c:	00000000 	nop
  442950:	2484e6b8 	addiu	a0,a0,-6472
  442954:	8fc50020 	lw	a1,32(s8)
  442958:	8fc60024 	lw	a2,36(s8)
  44295c:	8f9984ec 	lw	t9,-31508(gp)
  442960:	00000000 	nop
  442964:	0320f809 	jalr	t9
  442968:	00000000 	nop
  44296c:	8fdc0010 	lw	gp,16(s8)
  442970:	00000000 	nop
  442974:	8fc20018 	lw	v0,24(s8)
  442978:	00000000 	nop
  44297c:	8c42002c 	lw	v0,44(v0)
  442980:	00000000 	nop
  442984:	afc20018 	sw	v0,24(s8)
  442988:	1000ff31 	b	442650 <decode_cert+0x3c>
  44298c:	00000000 	nop
	}
    }
}
  442990:	03c0e821 	move	sp,s8
  442994:	8fbf00d0 	lw	ra,208(sp)
  442998:	8fbe00cc 	lw	s8,204(sp)
  44299c:	27bd00d8 	addiu	sp,sp,216
  4429a0:	03e00008 	jr	ra
  4429a4:	00000000 	nop

004429a8 <decode_cr>:
  4429a8:	3c1c0fbd 	lui	gp,0xfbd
  4429ac:	279c9fc8 	addiu	gp,gp,-24632
  4429b0:	0399e021 	addu	gp,gp,t9
  4429b4:	27bdfdb0 	addiu	sp,sp,-592
  4429b8:	afbc0018 	sw	gp,24(sp)
  4429bc:	afbf0248 	sw	ra,584(sp)
  4429c0:	afbe0244 	sw	s8,580(sp)
  4429c4:	afbc0240 	sw	gp,576(sp)
  4429c8:	03a0f021 	move	s8,sp
  4429cc:	afc40250 	sw	a0,592(s8)
  4429d0:	afc50254 	sw	a1,596(s8)

/*
 * Decode the CR payload of Phase 1.
 */
static void
decode_cr(struct msg_digest *md, generalName_t **requested_ca)
{
    struct payload_digest *p;

    for (p = md->chain[ISAKMP_NEXT_CR]; p != NULL; p = p->next)
  4429d4:	8fc20250 	lw	v0,592(s8)
  4429d8:	00000000 	nop
  4429dc:	8c4204c4 	lw	v0,1220(v0)
  4429e0:	00000000 	nop
  4429e4:	afc20020 	sw	v0,32(s8)
  4429e8:	8fc20020 	lw	v0,32(s8)
  4429ec:	00000000 	nop
  4429f0:	14400003 	bnez	v0,442a00 <decode_cr+0x58>
  4429f4:	00000000 	nop
  4429f8:	100000a4 	b	442c8c <decode_cr+0x2e4>
  4429fc:	00000000 	nop
    {
	struct isakmp_cr *const cr = &p->payload.cr;
  442a00:	8fc20020 	lw	v0,32(s8)
  442a04:	00000000 	nop
  442a08:	24420020 	addiu	v0,v0,32
  442a0c:	afc20024 	sw	v0,36(s8)
	chunk_t ca_name;

	ca_name.len = pbs_left(&p->pbs);
  442a10:	8fc20020 	lw	v0,32(s8)
  442a14:	00000000 	nop
  442a18:	8c430014 	lw	v1,20(v0)
  442a1c:	8fc20020 	lw	v0,32(s8)
  442a20:	00000000 	nop
  442a24:	8c420010 	lw	v0,16(v0)
  442a28:	00000000 	nop
  442a2c:	00621023 	subu	v0,v1,v0
  442a30:	afc2002c 	sw	v0,44(s8)
	ca_name.ptr = (ca_name.len > 0)? p->pbs.cur : NULL;
  442a34:	8fc2002c 	lw	v0,44(s8)
  442a38:	00000000 	nop
  442a3c:	10400008 	beqz	v0,442a60 <decode_cr+0xb8>
  442a40:	00000000 	nop
  442a44:	8fc20020 	lw	v0,32(s8)
  442a48:	00000000 	nop
  442a4c:	8c420010 	lw	v0,16(v0)
  442a50:	00000000 	nop
  442a54:	afc20234 	sw	v0,564(s8)
  442a58:	10000002 	b	442a64 <decode_cr+0xbc>
  442a5c:	00000000 	nop
  442a60:	afc00234 	sw	zero,564(s8)
  442a64:	8fc20234 	lw	v0,564(s8)
  442a68:	00000000 	nop
  442a6c:	afc20028 	sw	v0,40(s8)

	DBG_cond_dump_chunk(DBG_PARSING, "CR", ca_name);
  442a70:	8f8284f8 	lw	v0,-31496(gp)
  442a74:	00000000 	nop
  442a78:	8c420000 	lw	v0,0(v0)
  442a7c:	00000000 	nop
  442a80:	30420004 	andi	v0,v0,0x4
  442a84:	1040000c 	beqz	v0,442ab8 <decode_cr+0x110>
  442a88:	00000000 	nop
  442a8c:	8f84802c 	lw	a0,-32724(gp)
  442a90:	00000000 	nop
  442a94:	2484e6c0 	addiu	a0,a0,-6464
  442a98:	8fc50028 	lw	a1,40(s8)
  442a9c:	8fc6002c 	lw	a2,44(s8)
  442aa0:	8f9984ec 	lw	t9,-31508(gp)
  442aa4:	00000000 	nop
  442aa8:	0320f809 	jalr	t9
  442aac:	00000000 	nop
  442ab0:	8fdc0018 	lw	gp,24(s8)
  442ab4:	00000000 	nop

	if (cr->isacr_type == CERT_X509_SIGNATURE)
  442ab8:	8fc20024 	lw	v0,36(s8)
  442abc:	00000000 	nop
  442ac0:	90430004 	lbu	v1,4(v0)
  442ac4:	24020004 	li	v0,4
  442ac8:	14620054 	bne	v1,v0,442c1c <decode_cr+0x274>
  442acc:	00000000 	nop
	{
	    char buf[IDTOA_BUF];

	    DBG(DBG_PARSING | DBG_CONTROL,
  442ad0:	8f8284f8 	lw	v0,-31496(gp)
  442ad4:	00000000 	nop
  442ad8:	8c420000 	lw	v0,0(v0)
  442adc:	00000000 	nop
  442ae0:	30420014 	andi	v0,v0,0x14
  442ae4:	1040001a 	beqz	v0,442b50 <decode_cr+0x1a8>
  442ae8:	00000000 	nop
  442aec:	8f82802c 	lw	v0,-32724(gp)
  442af0:	00000000 	nop
  442af4:	2442e1d8 	addiu	v0,v0,-7720
  442af8:	00000000 	nop
  442afc:	afa20010 	sw	v0,16(sp)
  442b00:	27c40030 	addiu	a0,s8,48
  442b04:	24050200 	li	a1,512
  442b08:	8fc60028 	lw	a2,40(s8)
  442b0c:	8fc7002c 	lw	a3,44(s8)
  442b10:	8f99876c 	lw	t9,-30868(gp)
  442b14:	00000000 	nop
  442b18:	0320f809 	jalr	t9
  442b1c:	00000000 	nop
  442b20:	8fdc0018 	lw	gp,24(s8)
  442b24:	00000000 	nop
  442b28:	8f84802c 	lw	a0,-32724(gp)
  442b2c:	00000000 	nop
  442b30:	2484e6c4 	addiu	a0,a0,-6460
  442b34:	27c50030 	addiu	a1,s8,48
  442b38:	8f9983b8 	lw	t9,-31816(gp)
  442b3c:	00000000 	nop
  442b40:	0320f809 	jalr	t9
  442b44:	00000000 	nop
  442b48:	8fdc0018 	lw	gp,24(s8)
  442b4c:	00000000 	nop
		dntoa_or_null(buf, IDTOA_BUF, ca_name, "%any");
		DBG_log("requested CA: '%s'", buf);
	    )

	    if (ca_name.len > 0)
  442b50:	8fc2002c 	lw	v0,44(s8)
  442b54:	00000000 	nop
  442b58:	10400045 	beqz	v0,442c70 <decode_cr+0x2c8>
  442b5c:	00000000 	nop
	    {
		generalName_t *gn = alloc_thing(generalName_t, "generalName");
  442b60:	24040010 	li	a0,16
  442b64:	8f85802c 	lw	a1,-32724(gp)
  442b68:	00000000 	nop
  442b6c:	24a5d760 	addiu	a1,a1,-10400
  442b70:	8f998084 	lw	t9,-32636(gp)
  442b74:	00000000 	nop
  442b78:	0320f809 	jalr	t9
  442b7c:	00000000 	nop
  442b80:	8fdc0018 	lw	gp,24(s8)
  442b84:	afc20230 	sw	v0,560(s8)

		clonetochunk(ca_name, ca_name.ptr,ca_name.len, "ca name");
  442b88:	8fc2002c 	lw	v0,44(s8)
  442b8c:	00000000 	nop
  442b90:	afc2002c 	sw	v0,44(s8)
  442b94:	8fc40028 	lw	a0,40(s8)
  442b98:	00402821 	move	a1,v0
  442b9c:	8f86802c 	lw	a2,-32724(gp)
  442ba0:	00000000 	nop
  442ba4:	24c6e6d8 	addiu	a2,a2,-6440
  442ba8:	8f998c04 	lw	t9,-29692(gp)
  442bac:	00000000 	nop
  442bb0:	0320f809 	jalr	t9
  442bb4:	00000000 	nop
  442bb8:	8fdc0018 	lw	gp,24(s8)
  442bbc:	afc20028 	sw	v0,40(s8)
		gn->kind = GN_DIRECTORY_NAME;
  442bc0:	24030004 	li	v1,4
  442bc4:	8fc20230 	lw	v0,560(s8)
  442bc8:	00000000 	nop
  442bcc:	ac430004 	sw	v1,4(v0)
		gn->name = ca_name;
  442bd0:	8fc30230 	lw	v1,560(s8)
  442bd4:	8fc20028 	lw	v0,40(s8)
  442bd8:	00000000 	nop
  442bdc:	ac620008 	sw	v0,8(v1)
  442be0:	8fc2002c 	lw	v0,44(s8)
  442be4:	00000000 	nop
  442be8:	ac62000c 	sw	v0,12(v1)
		gn->next = *requested_ca;
  442bec:	8fc20254 	lw	v0,596(s8)
  442bf0:	00000000 	nop
  442bf4:	8c430000 	lw	v1,0(v0)
  442bf8:	8fc20230 	lw	v0,560(s8)
  442bfc:	00000000 	nop
  442c00:	ac430000 	sw	v1,0(v0)
		*requested_ca = gn;
  442c04:	8fc30230 	lw	v1,560(s8)
  442c08:	8fc20254 	lw	v0,596(s8)
  442c0c:	00000000 	nop
  442c10:	ac430000 	sw	v1,0(v0)
  442c14:	10000016 	b	442c70 <decode_cr+0x2c8>
  442c18:	00000000 	nop
	    }
	}
	else
	    loglog(RC_LOG_SERIOUS, "ignoring %s certificate request payload",
  442c1c:	8fc20024 	lw	v0,36(s8)
  442c20:	00000000 	nop
  442c24:	90420004 	lbu	v0,4(v0)
  442c28:	8f848184 	lw	a0,-32380(gp)
  442c2c:	00402821 	move	a1,v0
  442c30:	8f9987fc 	lw	t9,-30724(gp)
  442c34:	00000000 	nop
  442c38:	0320f809 	jalr	t9
  442c3c:	00000000 	nop
  442c40:	8fdc0018 	lw	gp,24(s8)
  442c44:	24040003 	li	a0,3
  442c48:	8f85802c 	lw	a1,-32724(gp)
  442c4c:	00000000 	nop
  442c50:	24a5e6e0 	addiu	a1,a1,-6432
  442c54:	00403021 	move	a2,v0
  442c58:	8f998c48 	lw	t9,-29624(gp)
  442c5c:	00000000 	nop
  442c60:	0320f809 	jalr	t9
  442c64:	00000000 	nop
  442c68:	8fdc0018 	lw	gp,24(s8)
  442c6c:	00000000 	nop
  442c70:	8fc20020 	lw	v0,32(s8)
  442c74:	00000000 	nop
  442c78:	8c42002c 	lw	v0,44(v0)
  442c7c:	00000000 	nop
  442c80:	afc20020 	sw	v0,32(s8)
  442c84:	1000ff58 	b	4429e8 <decode_cr+0x40>
  442c88:	00000000 	nop
		   enum_show(&cert_type_names, cr->isacr_type));
    }
}
  442c8c:	03c0e821 	move	sp,s8
  442c90:	8fbf0248 	lw	ra,584(sp)
  442c94:	8fbe0244 	lw	s8,580(sp)
  442c98:	27bd0250 	addiu	sp,sp,592
  442c9c:	03e00008 	jr	ra
  442ca0:	00000000 	nop

00442ca4 <decode_peer_id>:
  442ca4:	3c1c0fbd 	lui	gp,0xfbd
  442ca8:	279c9ccc 	addiu	gp,gp,-25396
  442cac:	0399e021 	addu	gp,gp,t9
  442cb0:	27bdf978 	addiu	sp,sp,-1672
  442cb4:	afbc0018 	sw	gp,24(sp)
  442cb8:	afbf0680 	sw	ra,1664(sp)
  442cbc:	afbe067c 	sw	s8,1660(sp)
  442cc0:	afbc0678 	sw	gp,1656(sp)
  442cc4:	03a0f021 	move	s8,sp
  442cc8:	afc40688 	sw	a0,1672(s8)
  442ccc:	afc5068c 	sw	a1,1676(s8)
  442cd0:	afc60690 	sw	a2,1680(s8)

/* Decode the ID payload of Phase 1 (main_inI3_outR3 and main_inR3)
 * Note: we may change connections as a result.
 * We must be called before SIG or HASH are decoded since we
 * may change the peer's RSA key or ID.
 */
static bool
decode_peer_id(struct msg_digest *md, bool initiator, bool aggrmode)
{
    struct state *const st = md->st;
  442cd4:	8fc20688 	lw	v0,1672(s8)
  442cd8:	00000000 	nop
  442cdc:	8c420098 	lw	v0,152(v0)
  442ce0:	00000000 	nop
  442ce4:	afc20020 	sw	v0,32(s8)
    struct payload_digest *const id_pld = md->chain[ISAKMP_NEXT_ID];
  442ce8:	8fc20688 	lw	v0,1672(s8)
  442cec:	00000000 	nop
  442cf0:	8c4204bc 	lw	v0,1212(v0)
  442cf4:	00000000 	nop
  442cf8:	afc20024 	sw	v0,36(s8)
    const pb_stream *const id_pbs = &id_pld->pbs;
  442cfc:	8fc20024 	lw	v0,36(s8)
  442d00:	00000000 	nop
  442d04:	afc20028 	sw	v0,40(s8)
    struct isakmp_id *const id = &id_pld->payload.id;
  442d08:	8fc20024 	lw	v0,36(s8)
  442d0c:	00000000 	nop
  442d10:	24420020 	addiu	v0,v0,32
  442d14:	afc2002c 	sw	v0,44(s8)
    struct id peer;

    /* I think that RFC2407 (IPSEC DOI) 4.6.2 is confused.
     * It talks about the protocol ID and Port fields of the ID
     * Payload, but they don't exist as such in Phase 1.
     * We use more appropriate names.
     * isaid_doi_specific_a is in place of Protocol ID.
     * isaid_doi_specific_b is in place of Port.
     * Besides, there is no good reason for allowing these to be
     * other than 0 in Phase 1.
     */
#ifdef NAT_TRAVERSAL
    if ((st->nat_traversal & NAT_T_WITH_PORT_FLOATING) &&
	(id->isaid_doi_specific_a == IPPROTO_UDP) &&
	((id->isaid_doi_specific_b == 0) || (id->isaid_doi_specific_b == NAT_T_IKE_FLOAT_PORT))) {
  442d18:	8fc20020 	lw	v0,32(s8)
  442d1c:	00000000 	nop
  442d20:	8c420264 	lw	v0,612(v0)
  442d24:	00000000 	nop
  442d28:	3042000c 	andi	v0,v0,0xc
  442d2c:	10400027 	beqz	v0,442dcc <decode_peer_id+0x128>
  442d30:	00000000 	nop
  442d34:	8fc2002c 	lw	v0,44(s8)
  442d38:	00000000 	nop
  442d3c:	90430005 	lbu	v1,5(v0)
  442d40:	24020011 	li	v0,17
  442d44:	14620021 	bne	v1,v0,442dcc <decode_peer_id+0x128>
  442d48:	00000000 	nop
  442d4c:	8fc2002c 	lw	v0,44(s8)
  442d50:	00000000 	nop
  442d54:	94420006 	lhu	v0,6(v0)
  442d58:	00000000 	nop
  442d5c:	10400009 	beqz	v0,442d84 <decode_peer_id+0xe0>
  442d60:	00000000 	nop
  442d64:	8fc2002c 	lw	v0,44(s8)
  442d68:	00000000 	nop
  442d6c:	94430006 	lhu	v1,6(v0)
  442d70:	24021194 	li	v0,4500
  442d74:	10620003 	beq	v1,v0,442d84 <decode_peer_id+0xe0>
  442d78:	00000000 	nop
  442d7c:	10000013 	b	442dcc <decode_peer_id+0x128>
  442d80:	00000000 	nop
	    DBG_log("protocol/port in Phase 1 ID Payload is %d/%d. "
  442d84:	8fc2002c 	lw	v0,44(s8)
  442d88:	00000000 	nop
  442d8c:	90430005 	lbu	v1,5(v0)
  442d90:	8fc2002c 	lw	v0,44(s8)
  442d94:	00000000 	nop
  442d98:	94420006 	lhu	v0,6(v0)
  442d9c:	8f84802c 	lw	a0,-32724(gp)
  442da0:	00000000 	nop
  442da4:	2484e708 	addiu	a0,a0,-6392
  442da8:	00602821 	move	a1,v1
  442dac:	00403021 	move	a2,v0
  442db0:	8f9983b8 	lw	t9,-31816(gp)
  442db4:	00000000 	nop
  442db8:	0320f809 	jalr	t9
  442dbc:	00000000 	nop
  442dc0:	8fdc0018 	lw	gp,24(s8)
  442dc4:	10000036 	b	442ea0 <decode_peer_id+0x1fc>
  442dc8:	00000000 	nop
		"accepted with port_floating NAT-T",
		id->isaid_doi_specific_a, id->isaid_doi_specific_b);
    }
    else
#endif
    if (!(id->isaid_doi_specific_a == 0 && id->isaid_doi_specific_b == 0)
    && !(id->isaid_doi_specific_a == IPPROTO_UDP && id->isaid_doi_specific_b == IKE_UDP_PORT))
  442dcc:	8fc2002c 	lw	v0,44(s8)
  442dd0:	00000000 	nop
  442dd4:	90420005 	lbu	v0,5(v0)
  442dd8:	00000000 	nop
  442ddc:	14400009 	bnez	v0,442e04 <decode_peer_id+0x160>
  442de0:	00000000 	nop
  442de4:	8fc2002c 	lw	v0,44(s8)
  442de8:	00000000 	nop
  442dec:	94420006 	lhu	v0,6(v0)
  442df0:	00000000 	nop
  442df4:	14400003 	bnez	v0,442e04 <decode_peer_id+0x160>
  442df8:	00000000 	nop
  442dfc:	10000028 	b	442ea0 <decode_peer_id+0x1fc>
  442e00:	00000000 	nop
  442e04:	8fc2002c 	lw	v0,44(s8)
  442e08:	00000000 	nop
  442e0c:	90430005 	lbu	v1,5(v0)
  442e10:	24020011 	li	v0,17
  442e14:	14620009 	bne	v1,v0,442e3c <decode_peer_id+0x198>
  442e18:	00000000 	nop
  442e1c:	8fc2002c 	lw	v0,44(s8)
  442e20:	00000000 	nop
  442e24:	94430006 	lhu	v1,6(v0)
  442e28:	240201f4 	li	v0,500
  442e2c:	14620003 	bne	v1,v0,442e3c <decode_peer_id+0x198>
  442e30:	00000000 	nop
  442e34:	1000001a 	b	442ea0 <decode_peer_id+0x1fc>
  442e38:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "protocol/port in Phase 1 ID Payload must be 0/0 or %d/%d"
  442e3c:	8fc2002c 	lw	v0,44(s8)
  442e40:	00000000 	nop
  442e44:	90420005 	lbu	v0,5(v0)
  442e48:	00000000 	nop
  442e4c:	afa20010 	sw	v0,16(sp)
  442e50:	8fc2002c 	lw	v0,44(s8)
  442e54:	00000000 	nop
  442e58:	94420006 	lhu	v0,6(v0)
  442e5c:	00000000 	nop
  442e60:	afa20014 	sw	v0,20(sp)
  442e64:	24040003 	li	a0,3
  442e68:	8f85802c 	lw	a1,-32724(gp)
  442e6c:	00000000 	nop
  442e70:	24a5e758 	addiu	a1,a1,-6312
  442e74:	24060011 	li	a2,17
  442e78:	240701f4 	li	a3,500
  442e7c:	8f998c48 	lw	t9,-29624(gp)
  442e80:	00000000 	nop
  442e84:	0320f809 	jalr	t9
  442e88:	00000000 	nop
  442e8c:	8fdc0018 	lw	gp,24(s8)
  442e90:	00000000 	nop
	    " but are %d/%d"
	    , IPPROTO_UDP, IKE_UDP_PORT
	    , id->isaid_doi_specific_a, id->isaid_doi_specific_b);
	return FALSE;
  442e94:	00001021 	move	v0,zero
  442e98:	10000252 	b	4437e4 <decode_peer_id+0xb40>
  442e9c:	00000000 	nop
    }

    peer.kind = id->isaid_idtype;
  442ea0:	8fc2002c 	lw	v0,44(s8)
  442ea4:	00000000 	nop
  442ea8:	90420004 	lbu	v0,4(v0)
  442eac:	00000000 	nop
  442eb0:	afc20030 	sw	v0,48(s8)

    switch (peer.kind)
  442eb4:	8fc20030 	lw	v0,48(s8)
  442eb8:	00000000 	nop
  442ebc:	2442ffff 	addiu	v0,v0,-1
  442ec0:	afc2066c 	sw	v0,1644(s8)
  442ec4:	8fc3066c 	lw	v1,1644(s8)
  442ec8:	00000000 	nop
  442ecc:	2c62000b 	sltiu	v0,v1,11
  442ed0:	104000e6 	beqz	v0,44326c <decode_peer_id+0x5c8>
  442ed4:	00000000 	nop
  442ed8:	8fc2066c 	lw	v0,1644(s8)
  442edc:	00000000 	nop
  442ee0:	00021080 	sll	v0,v0,0x2
  442ee4:	8f81802c 	lw	at,-32724(gp)
  442ee8:	00000000 	nop
  442eec:	2421e938 	addiu	at,at,-5832
  442ef0:	00221021 	addu	v0,at,v0
  442ef4:	8c420000 	lw	v0,0(v0)
  442ef8:	00000000 	nop
  442efc:	005c1021 	addu	v0,v0,gp
  442f00:	00400008 	jr	v0
  442f04:	00000000 	nop
    {
    case ID_IPV4_ADDR:
    case ID_IPV6_ADDR:
	/* failure mode for initaddr is probably inappropriate address length */
	{
	    err_t ugh = initaddr(id_pbs->cur, pbs_left(id_pbs)
  442f08:	8fc20028 	lw	v0,40(s8)
  442f0c:	00000000 	nop
  442f10:	8c430014 	lw	v1,20(v0)
  442f14:	8fc20028 	lw	v0,40(s8)
  442f18:	00000000 	nop
  442f1c:	8c420010 	lw	v0,16(v0)
  442f20:	00000000 	nop
  442f24:	00621823 	subu	v1,v1,v0
  442f28:	afc30664 	sw	v1,1636(s8)
  442f2c:	8fc30030 	lw	v1,48(s8)
  442f30:	24020001 	li	v0,1
  442f34:	14620005 	bne	v1,v0,442f4c <decode_peer_id+0x2a8>
  442f38:	00000000 	nop
  442f3c:	24020002 	li	v0,2
  442f40:	afc20668 	sw	v0,1640(s8)
  442f44:	10000003 	b	442f54 <decode_peer_id+0x2b0>
  442f48:	00000000 	nop
  442f4c:	2403000a 	li	v1,10
  442f50:	afc30668 	sw	v1,1640(s8)
  442f54:	27c20030 	addiu	v0,s8,48
  442f58:	24430004 	addiu	v1,v0,4
  442f5c:	8fc20028 	lw	v0,40(s8)
  442f60:	00000000 	nop
  442f64:	8c440010 	lw	a0,16(v0)
  442f68:	8fc50664 	lw	a1,1636(s8)
  442f6c:	8fc60668 	lw	a2,1640(s8)
  442f70:	00603821 	move	a3,v1
  442f74:	8f998b78 	lw	t9,-29832(gp)
  442f78:	00000000 	nop
  442f7c:	0320f809 	jalr	t9
  442f80:	00000000 	nop
  442f84:	8fdc0018 	lw	gp,24(s8)
  442f88:	afc20058 	sw	v0,88(s8)
		, peer.kind == ID_IPV4_ADDR? AF_INET : AF_INET6
		, &peer.ip_addr);

	    if (ugh != NULL)
  442f8c:	8fc20058 	lw	v0,88(s8)
  442f90:	00000000 	nop
  442f94:	104000ca 	beqz	v0,4432c0 <decode_peer_id+0x61c>
  442f98:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "improper %s identification payload: %s"
  442f9c:	8f84877c 	lw	a0,-30852(gp)
  442fa0:	8fc50030 	lw	a1,48(s8)
  442fa4:	8f9987fc 	lw	t9,-30724(gp)
  442fa8:	00000000 	nop
  442fac:	0320f809 	jalr	t9
  442fb0:	00000000 	nop
  442fb4:	8fdc0018 	lw	gp,24(s8)
  442fb8:	24040003 	li	a0,3
  442fbc:	8f85802c 	lw	a1,-32724(gp)
  442fc0:	00000000 	nop
  442fc4:	24a5e7a0 	addiu	a1,a1,-6240
  442fc8:	00403021 	move	a2,v0
  442fcc:	8fc70058 	lw	a3,88(s8)
  442fd0:	8f998c48 	lw	t9,-29624(gp)
  442fd4:	00000000 	nop
  442fd8:	0320f809 	jalr	t9
  442fdc:	00000000 	nop
  442fe0:	8fdc0018 	lw	gp,24(s8)
  442fe4:	00000000 	nop
		    , enum_show(&ident_names, peer.kind), ugh);
		return FALSE;
  442fe8:	00001021 	move	v0,zero
  442fec:	100001fd 	b	4437e4 <decode_peer_id+0xb40>
  442ff0:	00000000 	nop
	    }
	}
	break;

    case ID_USER_FQDN:
	if (memchr(id_pbs->cur, '@', pbs_left(id_pbs)) == NULL)
  442ff4:	8fc20028 	lw	v0,40(s8)
  442ff8:	00000000 	nop
  442ffc:	8c430014 	lw	v1,20(v0)
  443000:	8fc20028 	lw	v0,40(s8)
  443004:	00000000 	nop
  443008:	8c420010 	lw	v0,16(v0)
  44300c:	00000000 	nop
  443010:	00621823 	subu	v1,v1,v0
  443014:	8fc20028 	lw	v0,40(s8)
  443018:	00000000 	nop
  44301c:	8c440010 	lw	a0,16(v0)
  443020:	24050040 	li	a1,64
  443024:	00603021 	move	a2,v1
  443028:	8f9986e0 	lw	t9,-31008(gp)
  44302c:	00000000 	nop
  443030:	0320f809 	jalr	t9
  443034:	00000000 	nop
  443038:	8fdc0018 	lw	gp,24(s8)
  44303c:	1440000e 	bnez	v0,443078 <decode_peer_id+0x3d4>
  443040:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "peer's ID_USER_FQDN contains no @");
  443044:	24040003 	li	a0,3
  443048:	8f85802c 	lw	a1,-32724(gp)
  44304c:	00000000 	nop
  443050:	24a5e7c8 	addiu	a1,a1,-6200
  443054:	8f998c48 	lw	t9,-29624(gp)
  443058:	00000000 	nop
  44305c:	0320f809 	jalr	t9
  443060:	00000000 	nop
  443064:	8fdc0018 	lw	gp,24(s8)
  443068:	00000000 	nop
	    return FALSE;
  44306c:	00001021 	move	v0,zero
  443070:	100001dc 	b	4437e4 <decode_peer_id+0xb40>
  443074:	00000000 	nop
	}
	/* FALLTHROUGH */
    case ID_FQDN:
	if (memchr(id_pbs->cur, '\0', pbs_left(id_pbs)) != NULL)
  443078:	8fc20028 	lw	v0,40(s8)
  44307c:	00000000 	nop
  443080:	8c430014 	lw	v1,20(v0)
  443084:	8fc20028 	lw	v0,40(s8)
  443088:	00000000 	nop
  44308c:	8c420010 	lw	v0,16(v0)
  443090:	00000000 	nop
  443094:	00621823 	subu	v1,v1,v0
  443098:	8fc20028 	lw	v0,40(s8)
  44309c:	00000000 	nop
  4430a0:	8c440010 	lw	a0,16(v0)
  4430a4:	00002821 	move	a1,zero
  4430a8:	00603021 	move	a2,v1
  4430ac:	8f9986e0 	lw	t9,-31008(gp)
  4430b0:	00000000 	nop
  4430b4:	0320f809 	jalr	t9
  4430b8:	00000000 	nop
  4430bc:	8fdc0018 	lw	gp,24(s8)
  4430c0:	10400016 	beqz	v0,44311c <decode_peer_id+0x478>
  4430c4:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "Phase 1 ID Payload of type %s contains a NUL"
  4430c8:	8f84877c 	lw	a0,-30852(gp)
  4430cc:	8fc50030 	lw	a1,48(s8)
  4430d0:	8f9987fc 	lw	t9,-30724(gp)
  4430d4:	00000000 	nop
  4430d8:	0320f809 	jalr	t9
  4430dc:	00000000 	nop
  4430e0:	8fdc0018 	lw	gp,24(s8)
  4430e4:	24040003 	li	a0,3
  4430e8:	8f85802c 	lw	a1,-32724(gp)
  4430ec:	00000000 	nop
  4430f0:	24a5e7ec 	addiu	a1,a1,-6164
  4430f4:	00403021 	move	a2,v0
  4430f8:	8f998c48 	lw	t9,-29624(gp)
  4430fc:	00000000 	nop
  443100:	0320f809 	jalr	t9
  443104:	00000000 	nop
  443108:	8fdc0018 	lw	gp,24(s8)
  44310c:	00000000 	nop
		, enum_show(&ident_names, peer.kind));
	    return FALSE;
  443110:	00001021 	move	v0,zero
  443114:	100001b3 	b	4437e4 <decode_peer_id+0xb40>
  443118:	00000000 	nop
	}

	/* ??? ought to do some more sanity check, but what? */

	setchunk(peer.name, id_pbs->cur, pbs_left(id_pbs));
  44311c:	8fc20028 	lw	v0,40(s8)
  443120:	00000000 	nop
  443124:	8c420010 	lw	v0,16(v0)
  443128:	00000000 	nop
  44312c:	afc20050 	sw	v0,80(s8)
  443130:	8fc20028 	lw	v0,40(s8)
  443134:	00000000 	nop
  443138:	8c430014 	lw	v1,20(v0)
  44313c:	8fc20028 	lw	v0,40(s8)
  443140:	00000000 	nop
  443144:	8c420010 	lw	v0,16(v0)
  443148:	00000000 	nop
  44314c:	00621023 	subu	v0,v1,v0
  443150:	afc20054 	sw	v0,84(s8)
	break;
  443154:	1000005a 	b	4432c0 <decode_peer_id+0x61c>
  443158:	00000000 	nop

    case ID_KEY_ID:
	setchunk(peer.name, id_pbs->cur, pbs_left(id_pbs));
  44315c:	8fc20028 	lw	v0,40(s8)
  443160:	00000000 	nop
  443164:	8c420010 	lw	v0,16(v0)
  443168:	00000000 	nop
  44316c:	afc20050 	sw	v0,80(s8)
  443170:	8fc20028 	lw	v0,40(s8)
  443174:	00000000 	nop
  443178:	8c430014 	lw	v1,20(v0)
  44317c:	8fc20028 	lw	v0,40(s8)
  443180:	00000000 	nop
  443184:	8c420010 	lw	v0,16(v0)
  443188:	00000000 	nop
  44318c:	00621023 	subu	v0,v1,v0
  443190:	afc20054 	sw	v0,84(s8)
	DBG(DBG_PARSING,
  443194:	8f8284f8 	lw	v0,-31496(gp)
  443198:	00000000 	nop
  44319c:	8c420000 	lw	v0,0(v0)
  4431a0:	00000000 	nop
  4431a4:	30420004 	andi	v0,v0,0x4
  4431a8:	10400045 	beqz	v0,4432c0 <decode_peer_id+0x61c>
  4431ac:	00000000 	nop
  4431b0:	8f84802c 	lw	a0,-32724(gp)
  4431b4:	00000000 	nop
  4431b8:	2484e81c 	addiu	a0,a0,-6116
  4431bc:	8fc50050 	lw	a1,80(s8)
  4431c0:	8fc60054 	lw	a2,84(s8)
  4431c4:	8f9984ec 	lw	t9,-31508(gp)
  4431c8:	00000000 	nop
  4431cc:	0320f809 	jalr	t9
  4431d0:	00000000 	nop
  4431d4:	8fdc0018 	lw	gp,24(s8)
  4431d8:	00000000 	nop
 	    DBG_dump_chunk("KEY ID:", peer.name));
	break;	
  4431dc:	10000038 	b	4432c0 <decode_peer_id+0x61c>
  4431e0:	00000000 	nop

    case ID_DER_ASN1_DN:
	setchunk(peer.name, id_pbs->cur, pbs_left(id_pbs));
  4431e4:	8fc20028 	lw	v0,40(s8)
  4431e8:	00000000 	nop
  4431ec:	8c420010 	lw	v0,16(v0)
  4431f0:	00000000 	nop
  4431f4:	afc20050 	sw	v0,80(s8)
  4431f8:	8fc20028 	lw	v0,40(s8)
  4431fc:	00000000 	nop
  443200:	8c430014 	lw	v1,20(v0)
  443204:	8fc20028 	lw	v0,40(s8)
  443208:	00000000 	nop
  44320c:	8c420010 	lw	v0,16(v0)
  443210:	00000000 	nop
  443214:	00621023 	subu	v0,v1,v0
  443218:	afc20054 	sw	v0,84(s8)
 	DBG(DBG_PARSING,
  44321c:	8f8284f8 	lw	v0,-31496(gp)
  443220:	00000000 	nop
  443224:	8c420000 	lw	v0,0(v0)
  443228:	00000000 	nop
  44322c:	30420004 	andi	v0,v0,0x4
  443230:	10400023 	beqz	v0,4432c0 <decode_peer_id+0x61c>
  443234:	00000000 	nop
  443238:	8f84802c 	lw	a0,-32724(gp)
  44323c:	00000000 	nop
  443240:	2484e824 	addiu	a0,a0,-6108
  443244:	8fc50050 	lw	a1,80(s8)
  443248:	8fc60054 	lw	a2,84(s8)
  44324c:	8f9984ec 	lw	t9,-31508(gp)
  443250:	00000000 	nop
  443254:	0320f809 	jalr	t9
  443258:	00000000 	nop
  44325c:	8fdc0018 	lw	gp,24(s8)
  443260:	00000000 	nop
 	    DBG_dump_chunk("DER ASN1 DN:", peer.name));
	break;	
  443264:	10000016 	b	4432c0 <decode_peer_id+0x61c>
  443268:	00000000 	nop
	    	
    default:
	loglog(RC_LOG_SERIOUS, "Unacceptable identity type (%s) in Phase 1 ID Payload"
  44326c:	8f84877c 	lw	a0,-30852(gp)
  443270:	8fc50030 	lw	a1,48(s8)
  443274:	8f9987fc 	lw	t9,-30724(gp)
  443278:	00000000 	nop
  44327c:	0320f809 	jalr	t9
  443280:	00000000 	nop
  443284:	8fdc0018 	lw	gp,24(s8)
  443288:	24040003 	li	a0,3
  44328c:	8f85802c 	lw	a1,-32724(gp)
  443290:	00000000 	nop
  443294:	24a5e834 	addiu	a1,a1,-6092
  443298:	00403021 	move	a2,v0
  44329c:	8f998c48 	lw	t9,-29624(gp)
  4432a0:	00000000 	nop
  4432a4:	0320f809 	jalr	t9
  4432a8:	00000000 	nop
  4432ac:	8fdc0018 	lw	gp,24(s8)
  4432b0:	00000000 	nop
	    , enum_show(&ident_names, peer.kind));
	return FALSE;
  4432b4:	00001021 	move	v0,zero
  4432b8:	1000014a 	b	4437e4 <decode_peer_id+0xb40>
  4432bc:	00000000 	nop
    }

    {
	char buf[IDTOA_BUF];
	idtoa(&peer, buf, sizeof(buf));
  4432c0:	27c40030 	addiu	a0,s8,48
  4432c4:	27c50060 	addiu	a1,s8,96
  4432c8:	24060200 	li	a2,512
  4432cc:	8f998798 	lw	t9,-30824(gp)
  4432d0:	00000000 	nop
  4432d4:	0320f809 	jalr	t9
  4432d8:	00000000 	nop
  4432dc:	8fdc0018 	lw	gp,24(s8)
  4432e0:	00000000 	nop
	plog("%s mode peer ID is %s: '%s'",
  4432e4:	8fc2002c 	lw	v0,44(s8)
  4432e8:	00000000 	nop
  4432ec:	90420004 	lbu	v0,4(v0)
  4432f0:	8f84877c 	lw	a0,-30852(gp)
  4432f4:	00402821 	move	a1,v0
  4432f8:	8f9987fc 	lw	t9,-30724(gp)
  4432fc:	00000000 	nop
  443300:	0320f809 	jalr	t9
  443304:	00000000 	nop
  443308:	8fdc0018 	lw	gp,24(s8)
  44330c:	afc20670 	sw	v0,1648(s8)
  443310:	8fc20690 	lw	v0,1680(s8)
  443314:	00000000 	nop
  443318:	10400008 	beqz	v0,44333c <decode_peer_id+0x698>
  44331c:	00000000 	nop
  443320:	8f82802c 	lw	v0,-32724(gp)
  443324:	00000000 	nop
  443328:	2442e86c 	addiu	v0,v0,-6036
  44332c:	00000000 	nop
  443330:	afc20674 	sw	v0,1652(s8)
  443334:	10000006 	b	443350 <decode_peer_id+0x6ac>
  443338:	00000000 	nop
  44333c:	8f83802c 	lw	v1,-32724(gp)
  443340:	00000000 	nop
  443344:	2463e878 	addiu	v1,v1,-6024
  443348:	00000000 	nop
  44334c:	afc30674 	sw	v1,1652(s8)
  443350:	8f84802c 	lw	a0,-32724(gp)
  443354:	00000000 	nop
  443358:	2484e880 	addiu	a0,a0,-6016
  44335c:	8fc50674 	lw	a1,1652(s8)
  443360:	8fc60670 	lw	a2,1648(s8)
  443364:	27c70060 	addiu	a3,s8,96
  443368:	8f998abc 	lw	t9,-30020(gp)
  44336c:	00000000 	nop
  443370:	0320f809 	jalr	t9
  443374:	00000000 	nop
  443378:	8fdc0018 	lw	gp,24(s8)
  44337c:	00000000 	nop
	    aggrmode ? "Aggressive" : "Main",
	    enum_show(&ident_names, id->isaid_idtype), buf);
    }

     /* check for certificates */
     decode_cert(md);
  443380:	8fc40688 	lw	a0,1672(s8)
  443384:	8f998034 	lw	t9,-32716(gp)
  443388:	00000000 	nop
  44338c:	27392614 	addiu	t9,t9,9748
  443390:	00000000 	nop
  443394:	0320f809 	jalr	t9
  443398:	00000000 	nop
  44339c:	8fdc0018 	lw	gp,24(s8)
  4433a0:	00000000 	nop

    /* Now that we've decoded the ID payload, let's see if we
     * need to switch connections.
     * We must not switch horses if we initiated:
     * - if the initiation was explicit, we'd be ignoring user's intent
     * - if opportunistic, we'll lose our HOLD info
     */
    if (initiator)
  4433a4:	8fc2068c 	lw	v0,1676(s8)
  4433a8:	00000000 	nop
  4433ac:	10400035 	beqz	v0,443484 <decode_peer_id+0x7e0>
  4433b0:	00000000 	nop
    {
	if (!same_id(&st->st_connection->that.id, &peer))
  4433b4:	8fc20020 	lw	v0,32(s8)
  4433b8:	00000000 	nop
  4433bc:	8c42000c 	lw	v0,12(v0)
  4433c0:	00000000 	nop
  4433c4:	244200e0 	addiu	v0,v0,224
  4433c8:	00402021 	move	a0,v0
  4433cc:	27c50030 	addiu	a1,s8,48
  4433d0:	8f9980e4 	lw	t9,-32540(gp)
  4433d4:	00000000 	nop
  4433d8:	0320f809 	jalr	t9
  4433dc:	00000000 	nop
  4433e0:	8fdc0018 	lw	gp,24(s8)
  4433e4:	144000fe 	bnez	v0,4437e0 <decode_peer_id+0xb3c>
  4433e8:	00000000 	nop
	{
	    char expect[IDTOA_BUF]
		, found[IDTOA_BUF];

	    idtoa(&st->st_connection->that.id, expect, sizeof(expect));
  4433ec:	8fc20020 	lw	v0,32(s8)
  4433f0:	00000000 	nop
  4433f4:	8c42000c 	lw	v0,12(v0)
  4433f8:	00000000 	nop
  4433fc:	244200e0 	addiu	v0,v0,224
  443400:	00402021 	move	a0,v0
  443404:	27c50260 	addiu	a1,s8,608
  443408:	24060200 	li	a2,512
  44340c:	8f998798 	lw	t9,-30824(gp)
  443410:	00000000 	nop
  443414:	0320f809 	jalr	t9
  443418:	00000000 	nop
  44341c:	8fdc0018 	lw	gp,24(s8)
  443420:	00000000 	nop
	    idtoa(&peer, found, sizeof(found));
  443424:	27c40030 	addiu	a0,s8,48
  443428:	27c50460 	addiu	a1,s8,1120
  44342c:	24060200 	li	a2,512
  443430:	8f998798 	lw	t9,-30824(gp)
  443434:	00000000 	nop
  443438:	0320f809 	jalr	t9
  44343c:	00000000 	nop
  443440:	8fdc0018 	lw	gp,24(s8)
  443444:	00000000 	nop
	    loglog(RC_LOG_SERIOUS
  443448:	24040003 	li	a0,3
  44344c:	8f85802c 	lw	a1,-32724(gp)
  443450:	00000000 	nop
  443454:	24a5e89c 	addiu	a1,a1,-5988
  443458:	27c60260 	addiu	a2,s8,608
  44345c:	27c70460 	addiu	a3,s8,1120
  443460:	8f998c48 	lw	t9,-29624(gp)
  443464:	00000000 	nop
  443468:	0320f809 	jalr	t9
  44346c:	00000000 	nop
  443470:	8fdc0018 	lw	gp,24(s8)
  443474:	00000000 	nop
		, "we require peer to have ID '%s', but peer declares '%s'"
		, expect, found);
	    return FALSE;
  443478:	00001021 	move	v0,zero
  44347c:	100000d9 	b	4437e4 <decode_peer_id+0xb40>
  443480:	00000000 	nop
	}
    }
    else
    {
	struct connection *c = st->st_connection;
  443484:	8fc20020 	lw	v0,32(s8)
  443488:	00000000 	nop
  44348c:	8c42000c 	lw	v0,12(v0)
  443490:	00000000 	nop
  443494:	afc20058 	sw	v0,88(s8)
	struct connection *r;

        /* check for certificate requests */
        decode_cr(md, &c->requested_ca);
  443498:	8fc20058 	lw	v0,88(s8)
  44349c:	00000000 	nop
  4434a0:	244201d0 	addiu	v0,v0,464
  4434a4:	8fc40688 	lw	a0,1672(s8)
  4434a8:	00402821 	move	a1,v0
  4434ac:	8f998034 	lw	t9,-32716(gp)
  4434b0:	00000000 	nop
  4434b4:	273929a8 	addiu	t9,t9,10664
  4434b8:	00000000 	nop
  4434bc:	0320f809 	jalr	t9
  4434c0:	00000000 	nop
  4434c4:	8fdc0018 	lw	gp,24(s8)
  4434c8:	00000000 	nop

        r = refine_host_connection(st, &peer, initiator, aggrmode);
  4434cc:	8fc40020 	lw	a0,32(s8)
  4434d0:	27c50030 	addiu	a1,s8,48
  4434d4:	8fc6068c 	lw	a2,1676(s8)
  4434d8:	8fc70690 	lw	a3,1680(s8)
  4434dc:	8f9983e0 	lw	t9,-31776(gp)
  4434e0:	00000000 	nop
  4434e4:	0320f809 	jalr	t9
  4434e8:	00000000 	nop
  4434ec:	8fdc0018 	lw	gp,24(s8)
  4434f0:	afc20660 	sw	v0,1632(s8)

        /* delete the collected certificate requests */
	       free_generalNames(c->requested_ca, TRUE);
  4434f4:	8fc20058 	lw	v0,88(s8)
  4434f8:	00000000 	nop
  4434fc:	8c4401d0 	lw	a0,464(v0)
  443500:	24050001 	li	a1,1
  443504:	8f9987ac 	lw	t9,-30804(gp)
  443508:	00000000 	nop
  44350c:	0320f809 	jalr	t9
  443510:	00000000 	nop
  443514:	8fdc0018 	lw	gp,24(s8)
  443518:	00000000 	nop
        c->requested_ca = NULL;
  44351c:	8fc20058 	lw	v0,88(s8)
  443520:	00000000 	nop
  443524:	ac4001d0 	sw	zero,464(v0)

	if (r == NULL)
  443528:	8fc20660 	lw	v0,1632(s8)
  44352c:	00000000 	nop
  443530:	14400018 	bnez	v0,443594 <decode_peer_id+0x8f0>
  443534:	00000000 	nop
	{
	    char buf[IDTOA_BUF];

	    idtoa(&peer, buf, sizeof(buf));
  443538:	27c40030 	addiu	a0,s8,48
  44353c:	27c50260 	addiu	a1,s8,608
  443540:	24060200 	li	a2,512
  443544:	8f998798 	lw	t9,-30824(gp)
  443548:	00000000 	nop
  44354c:	0320f809 	jalr	t9
  443550:	00000000 	nop
  443554:	8fdc0018 	lw	gp,24(s8)
  443558:	00000000 	nop
	    loglog(RC_LOG_SERIOUS, "no suitable connection for peer '%s'", buf);
  44355c:	24040003 	li	a0,3
  443560:	8f85802c 	lw	a1,-32724(gp)
  443564:	00000000 	nop
  443568:	24a5e8d4 	addiu	a1,a1,-5932
  44356c:	27c60260 	addiu	a2,s8,608
  443570:	8f998c48 	lw	t9,-29624(gp)
  443574:	00000000 	nop
  443578:	0320f809 	jalr	t9
  44357c:	00000000 	nop
  443580:	8fdc0018 	lw	gp,24(s8)
  443584:	00000000 	nop
	    return FALSE;
  443588:	00001021 	move	v0,zero
  44358c:	10000095 	b	4437e4 <decode_peer_id+0xb40>
  443590:	00000000 	nop
	}

	DBG(DBG_CONTROL,
  443594:	8f8284f8 	lw	v0,-31496(gp)
  443598:	00000000 	nop
  44359c:	8c420000 	lw	v0,0(v0)
  4435a0:	00000000 	nop
  4435a4:	30420010 	andi	v0,v0,0x10
  4435a8:	1040001b 	beqz	v0,443618 <decode_peer_id+0x974>
  4435ac:	00000000 	nop
  4435b0:	8fc30660 	lw	v1,1632(s8)
  4435b4:	8f82802c 	lw	v0,-32724(gp)
  4435b8:	00000000 	nop
  4435bc:	2442e8fc 	addiu	v0,v0,-5892
  4435c0:	00000000 	nop
  4435c4:	afa20010 	sw	v0,16(sp)
  4435c8:	27c40460 	addiu	a0,s8,1120
  4435cc:	24050200 	li	a1,512
  4435d0:	8c6600d4 	lw	a2,212(v1)
  4435d4:	8c6700d8 	lw	a3,216(v1)
  4435d8:	8f99876c 	lw	t9,-30868(gp)
  4435dc:	00000000 	nop
  4435e0:	0320f809 	jalr	t9
  4435e4:	00000000 	nop
  4435e8:	8fdc0018 	lw	gp,24(s8)
  4435ec:	00000000 	nop
  4435f0:	8f84802c 	lw	a0,-32724(gp)
  4435f4:	00000000 	nop
  4435f8:	2484e904 	addiu	a0,a0,-5884
  4435fc:	27c50460 	addiu	a1,s8,1120
  443600:	8f9983b8 	lw	t9,-31816(gp)
  443604:	00000000 	nop
  443608:	0320f809 	jalr	t9
  44360c:	00000000 	nop
  443610:	8fdc0018 	lw	gp,24(s8)
  443614:	00000000 	nop
	    char buf[IDTOA_BUF];

	    dntoa_or_null(buf, IDTOA_BUF, r->this.ca, "%none");
	    DBG_log("offered CA: '%s'", buf);
	)

	if (r != c)
  443618:	8fc30660 	lw	v1,1632(s8)
  44361c:	8fc20058 	lw	v0,88(s8)
  443620:	00000000 	nop
  443624:	10620045 	beq	v1,v0,44373c <decode_peer_id+0xa98>
  443628:	00000000 	nop
	{
	    /* apparently, r is an improvement on c -- replace */

	    DBG(DBG_CONTROL
  44362c:	8f8284f8 	lw	v0,-31496(gp)
  443630:	00000000 	nop
  443634:	8c420000 	lw	v0,0(v0)
  443638:	00000000 	nop
  44363c:	30420010 	andi	v0,v0,0x10
  443640:	10400010 	beqz	v0,443684 <decode_peer_id+0x9e0>
  443644:	00000000 	nop
  443648:	8f84802c 	lw	a0,-32724(gp)
  44364c:	00000000 	nop
  443650:	2484e918 	addiu	a0,a0,-5864
  443654:	8fc20058 	lw	v0,88(s8)
  443658:	00000000 	nop
  44365c:	8c450000 	lw	a1,0(v0)
  443660:	8fc20660 	lw	v0,1632(s8)
  443664:	00000000 	nop
  443668:	8c460000 	lw	a2,0(v0)
  44366c:	8f9983b8 	lw	t9,-31816(gp)
  443670:	00000000 	nop
  443674:	0320f809 	jalr	t9
  443678:	00000000 	nop
  44367c:	8fdc0018 	lw	gp,24(s8)
  443680:	00000000 	nop
		, DBG_log("switched from \"%s\" to \"%s\"", c->name, r->name));
	    if (r->kind == CK_TEMPLATE)
  443684:	8fc20660 	lw	v0,1632(s8)
  443688:	00000000 	nop
  44368c:	8c420194 	lw	v0,404(v0)
  443690:	00000000 	nop
  443694:	14400012 	bnez	v0,4436e0 <decode_peer_id+0xa3c>
  443698:	00000000 	nop
	    {
		/* instantiate it, filling in peer's ID */
		r = rw_instantiate(r, &c->that.host_addr,
  44369c:	8fc20058 	lw	v0,88(s8)
  4436a0:	00000000 	nop
  4436a4:	24450108 	addiu	a1,v0,264
  4436a8:	8fc20058 	lw	v0,88(s8)
  4436ac:	00000000 	nop
  4436b0:	94430178 	lhu	v1,376(v0)
  4436b4:	27c20030 	addiu	v0,s8,48
  4436b8:	afa20010 	sw	v0,16(sp)
  4436bc:	8fc40660 	lw	a0,1632(s8)
  4436c0:	00603021 	move	a2,v1
  4436c4:	00003821 	move	a3,zero
  4436c8:	8f998414 	lw	t9,-31724(gp)
  4436cc:	00000000 	nop
  4436d0:	0320f809 	jalr	t9
  4436d4:	00000000 	nop
  4436d8:	8fdc0018 	lw	gp,24(s8)
  4436dc:	afc20660 	sw	v0,1632(s8)
#ifdef NAT_TRAVERSAL
			c->that.host_port,
#endif
#ifdef VIRTUAL_IP
			NULL,
#endif
			&peer);
	    }

	    st->st_connection = r;	/* kill reference to c */
  4436e0:	8fc20660 	lw	v0,1632(s8)
  4436e4:	8fc30020 	lw	v1,32(s8)
  4436e8:	00000000 	nop
  4436ec:	ac62000c 	sw	v0,12(v1)
	    set_cur_connection(r);
  4436f0:	8fc20660 	lw	v0,1632(s8)
  4436f4:	8f8188c8 	lw	at,-30520(gp)
  4436f8:	00000000 	nop
  4436fc:	ac220000 	sw	v0,0(at)
  443700:	8fc40660 	lw	a0,1632(s8)
  443704:	8f998be4 	lw	t9,-29724(gp)
  443708:	00000000 	nop
  44370c:	0320f809 	jalr	t9
  443710:	00000000 	nop
  443714:	8fdc0018 	lw	gp,24(s8)
  443718:	00000000 	nop
	    connection_discard(c);
  44371c:	8fc40058 	lw	a0,88(s8)
  443720:	8f998a2c 	lw	t9,-30164(gp)
  443724:	00000000 	nop
  443728:	0320f809 	jalr	t9
  44372c:	00000000 	nop
  443730:	8fdc0018 	lw	gp,24(s8)
  443734:	1000002a 	b	4437e0 <decode_peer_id+0xb3c>
  443738:	00000000 	nop
	}
	else if (c->that.has_id_wildcards)
  44373c:	8fc20058 	lw	v0,88(s8)
  443740:	00000000 	nop
  443744:	8c42016c 	lw	v0,364(v0)
  443748:	00000000 	nop
  44374c:	10400024 	beqz	v0,4437e0 <decode_peer_id+0xb3c>
  443750:	00000000 	nop
	{
	    free_id_content(&c->that.id);
  443754:	8fc20058 	lw	v0,88(s8)
  443758:	00000000 	nop
  44375c:	244200e0 	addiu	v0,v0,224
  443760:	00402021 	move	a0,v0
  443764:	8f9982f0 	lw	t9,-32016(gp)
  443768:	00000000 	nop
  44376c:	0320f809 	jalr	t9
  443770:	00000000 	nop
  443774:	8fdc0018 	lw	gp,24(s8)
  443778:	00000000 	nop
	    c->that.id = peer;
  44377c:	8fc20058 	lw	v0,88(s8)
  443780:	00000000 	nop
  443784:	244200e0 	addiu	v0,v0,224
  443788:	00402021 	move	a0,v0
  44378c:	27c50030 	addiu	a1,s8,48
  443790:	24060028 	li	a2,40
  443794:	8f998a30 	lw	t9,-30160(gp)
  443798:	00000000 	nop
  44379c:	0320f809 	jalr	t9
  4437a0:	00000000 	nop
  4437a4:	8fdc0018 	lw	gp,24(s8)
  4437a8:	00000000 	nop
	    c->that.has_id_wildcards = FALSE;
  4437ac:	8fc20058 	lw	v0,88(s8)
  4437b0:	00000000 	nop
  4437b4:	ac40016c 	sw	zero,364(v0)
	    unshare_id_content(&c->that.id);
  4437b8:	8fc20058 	lw	v0,88(s8)
  4437bc:	00000000 	nop
  4437c0:	244200e0 	addiu	v0,v0,224
  4437c4:	00402021 	move	a0,v0
  4437c8:	8f99847c 	lw	t9,-31620(gp)
  4437cc:	00000000 	nop
  4437d0:	0320f809 	jalr	t9
  4437d4:	00000000 	nop
  4437d8:	8fdc0018 	lw	gp,24(s8)
  4437dc:	00000000 	nop
	}
    }


    return TRUE;
  4437e0:	24020001 	li	v0,1
}
  4437e4:	03c0e821 	move	sp,s8
  4437e8:	8fbf0680 	lw	ra,1664(sp)
  4437ec:	8fbe067c 	lw	s8,1660(sp)
  4437f0:	27bd0688 	addiu	sp,sp,1672
  4437f4:	03e00008 	jr	ra
  4437f8:	00000000 	nop

004437fc <decode_net_id>:
  4437fc:	3c1c0fbd 	lui	gp,0xfbd
  443800:	279c9174 	addiu	gp,gp,-28300
  443804:	0399e021 	addu	gp,gp,t9
  443808:	27bdfe00 	addiu	sp,sp,-512
  44380c:	afbc0020 	sw	gp,32(sp)
  443810:	afbf01f8 	sw	ra,504(sp)
  443814:	afbe01f4 	sw	s8,500(sp)
  443818:	afbc01f0 	sw	gp,496(sp)
  44381c:	03a0f021 	move	s8,sp
  443820:	afc40200 	sw	a0,512(s8)
  443824:	afc50204 	sw	a1,516(s8)
  443828:	afc60208 	sw	a2,520(s8)
  44382c:	afc7020c 	sw	a3,524(s8)

/* Decode the variable part of an ID packet (during Quick Mode).
 * This is designed for packets that identify clients, not peers.
 */
static bool
decode_net_id(struct isakmp_ipsec_id *id
, pb_stream *id_pbs
, ip_subnet *net
, const char *which)
{
    const struct af_info *afi = NULL;
  443830:	afc00028 	sw	zero,40(s8)

    /* Note: the following may be a pointer into static memory
     * that may be recycled, but only if the type is not known.
     * That case is disposed of very early -- in the first switch.
     */
    const char *idtypename = enum_show(&ident_names, id->isaiid_idtype);
  443834:	8fc20200 	lw	v0,512(s8)
  443838:	00000000 	nop
  44383c:	90420004 	lbu	v0,4(v0)
  443840:	8f84877c 	lw	a0,-30852(gp)
  443844:	00402821 	move	a1,v0
  443848:	8f9987fc 	lw	t9,-30724(gp)
  44384c:	00000000 	nop
  443850:	0320f809 	jalr	t9
  443854:	00000000 	nop
  443858:	8fdc0020 	lw	gp,32(s8)
  44385c:	afc2002c 	sw	v0,44(s8)

    switch (id->isaiid_idtype)
  443860:	8fc20200 	lw	v0,512(s8)
  443864:	00000000 	nop
  443868:	90420004 	lbu	v0,4(v0)
  44386c:	00000000 	nop
  443870:	2442ffff 	addiu	v0,v0,-1
  443874:	afc201e8 	sw	v0,488(s8)
  443878:	8fc301e8 	lw	v1,488(s8)
  44387c:	00000000 	nop
  443880:	2c620008 	sltiu	v0,v1,8
  443884:	1040001a 	beqz	v0,4438f0 <decode_net_id+0xf4>
  443888:	00000000 	nop
  44388c:	8fc201e8 	lw	v0,488(s8)
  443890:	00000000 	nop
  443894:	00021080 	sll	v0,v0,0x2
  443898:	8f81802c 	lw	at,-32724(gp)
  44389c:	00000000 	nop
  4438a0:	2421ead0 	addiu	at,at,-5424
  4438a4:	00221021 	addu	v0,at,v0
  4438a8:	8c420000 	lw	v0,0(v0)
  4438ac:	00000000 	nop
  4438b0:	005c1021 	addu	v0,v0,gp
  4438b4:	00400008 	jr	v0
  4438b8:	00000000 	nop
    {
	case ID_FQDN:
		return TRUE;
  4438bc:	24020001 	li	v0,1
  4438c0:	100001fc 	b	4440b4 <decode_net_id+0x8b8>
  4438c4:	00000000 	nop
	case ID_IPV4_ADDR:
	case ID_IPV4_ADDR_SUBNET:
	case ID_IPV4_ADDR_RANGE:
	    afi = &af_inet4_info;
  4438c8:	8f8281dc 	lw	v0,-32292(gp)
  4438cc:	00000000 	nop
  4438d0:	afc20028 	sw	v0,40(s8)
	    break;
  4438d4:	10000014 	b	443928 <decode_net_id+0x12c>
  4438d8:	00000000 	nop
	case ID_IPV6_ADDR:
	case ID_IPV6_ADDR_SUBNET:
	case ID_IPV6_ADDR_RANGE:
	    afi = &af_inet6_info;
  4438dc:	8f828b14 	lw	v0,-29932(gp)
  4438e0:	00000000 	nop
  4438e4:	afc20028 	sw	v0,40(s8)
	    break;
  4438e8:	1000000f 	b	443928 <decode_net_id+0x12c>
  4438ec:	00000000 	nop

	default:
	    /* XXX support more */
	    loglog(RC_LOG_SERIOUS, "unsupported ID type %s"
  4438f0:	24040003 	li	a0,3
  4438f4:	8f85802c 	lw	a1,-32724(gp)
  4438f8:	00000000 	nop
  4438fc:	24a5e964 	addiu	a1,a1,-5788
  443900:	8fc6002c 	lw	a2,44(s8)
  443904:	8f998c48 	lw	t9,-29624(gp)
  443908:	00000000 	nop
  44390c:	0320f809 	jalr	t9
  443910:	00000000 	nop
  443914:	8fdc0020 	lw	gp,32(s8)
  443918:	00000000 	nop
		, idtypename);
	    return FALSE;
  44391c:	00001021 	move	v0,zero
  443920:	100001e4 	b	4440b4 <decode_net_id+0x8b8>
  443924:	00000000 	nop
    }

    switch (id->isaiid_idtype)
  443928:	8fc20200 	lw	v0,512(s8)
  44392c:	00000000 	nop
  443930:	90420004 	lbu	v0,4(v0)
  443934:	00000000 	nop
  443938:	2442ffff 	addiu	v0,v0,-1
  44393c:	afc201ec 	sw	v0,492(s8)
  443940:	8fc301ec 	lw	v1,492(s8)
  443944:	00000000 	nop
  443948:	2c620008 	sltiu	v0,v1,8
  44394c:	104001b3 	beqz	v0,44401c <decode_net_id+0x820>
  443950:	00000000 	nop
  443954:	8fc201ec 	lw	v0,492(s8)
  443958:	00000000 	nop
  44395c:	00021080 	sll	v0,v0,0x2
  443960:	8f81802c 	lw	at,-32724(gp)
  443964:	00000000 	nop
  443968:	2421eaf0 	addiu	at,at,-5392
  44396c:	00221021 	addu	v0,at,v0
  443970:	8c420000 	lw	v0,0(v0)
  443974:	00000000 	nop
  443978:	005c1021 	addu	v0,v0,gp
  44397c:	00400008 	jr	v0
  443980:	00000000 	nop
    {
	case ID_IPV4_ADDR:
	case ID_IPV6_ADDR:
	{
	    ip_address temp_address;
	    err_t ugh;

	    ugh = initaddr(id_pbs->cur, pbs_left(id_pbs), afi->af, &temp_address);
  443984:	8fc20204 	lw	v0,516(s8)
  443988:	00000000 	nop
  44398c:	8c430014 	lw	v1,20(v0)
  443990:	8fc20204 	lw	v0,516(s8)
  443994:	00000000 	nop
  443998:	8c420010 	lw	v0,16(v0)
  44399c:	00000000 	nop
  4439a0:	00621823 	subu	v1,v1,v0
  4439a4:	8fc20204 	lw	v0,516(s8)
  4439a8:	00000000 	nop
  4439ac:	8c440010 	lw	a0,16(v0)
  4439b0:	00602821 	move	a1,v1
  4439b4:	8fc20028 	lw	v0,40(s8)
  4439b8:	00000000 	nop
  4439bc:	8c460000 	lw	a2,0(v0)
  4439c0:	27c70030 	addiu	a3,s8,48
  4439c4:	8f998b78 	lw	t9,-29832(gp)
  4439c8:	00000000 	nop
  4439cc:	0320f809 	jalr	t9
  4439d0:	00000000 	nop
  4439d4:	8fdc0020 	lw	gp,32(s8)
  4439d8:	afc20050 	sw	v0,80(s8)

	    if (ugh != NULL)
  4439dc:	8fc20050 	lw	v0,80(s8)
  4439e0:	00000000 	nop
  4439e4:	10400013 	beqz	v0,443a34 <decode_net_id+0x238>
  4439e8:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%s ID payload %s has wrong length in Quick I1 (%s)"
  4439ec:	8fc20050 	lw	v0,80(s8)
  4439f0:	00000000 	nop
  4439f4:	afa20010 	sw	v0,16(sp)
  4439f8:	24040003 	li	a0,3
  4439fc:	8f85802c 	lw	a1,-32724(gp)
  443a00:	00000000 	nop
  443a04:	24a5e97c 	addiu	a1,a1,-5764
  443a08:	8fc6020c 	lw	a2,524(s8)
  443a0c:	8fc7002c 	lw	a3,44(s8)
  443a10:	8f998c48 	lw	t9,-29624(gp)
  443a14:	00000000 	nop
  443a18:	0320f809 	jalr	t9
  443a1c:	00000000 	nop
  443a20:	8fdc0020 	lw	gp,32(s8)
  443a24:	00000000 	nop
		    , which, idtypename, ugh);
		return FALSE;
  443a28:	00001021 	move	v0,zero
  443a2c:	100001a1 	b	4440b4 <decode_net_id+0x8b8>
  443a30:	00000000 	nop
	    }
	    happy(initsubnet(&temp_address, afi->mask_cnt, '0', net));
  443a34:	27c40030 	addiu	a0,s8,48
  443a38:	8fc20028 	lw	v0,40(s8)
  443a3c:	00000000 	nop
  443a40:	8c450010 	lw	a1,16(v0)
  443a44:	24060030 	li	a2,48
  443a48:	8fc70208 	lw	a3,520(s8)
  443a4c:	8f998844 	lw	t9,-30652(gp)
  443a50:	00000000 	nop
  443a54:	0320f809 	jalr	t9
  443a58:	00000000 	nop
  443a5c:	8fdc0020 	lw	gp,32(s8)
  443a60:	afc20054 	sw	v0,84(s8)
  443a64:	8fc20054 	lw	v0,84(s8)
  443a68:	00000000 	nop
  443a6c:	1040000c 	beqz	v0,443aa0 <decode_net_id+0x2a4>
  443a70:	00000000 	nop
  443a74:	8fc40054 	lw	a0,84(s8)
  443a78:	8f85802c 	lw	a1,-32724(gp)
  443a7c:	00000000 	nop
  443a80:	24a5d59c 	addiu	a1,a1,-10852
  443a84:	24060aa6 	li	a2,2726
  443a88:	8f998bb8 	lw	t9,-29768(gp)
  443a8c:	00000000 	nop
  443a90:	0320f809 	jalr	t9
  443a94:	00000000 	nop
  443a98:	8fdc0020 	lw	gp,32(s8)
  443a9c:	00000000 	nop
	    DBG(DBG_PARSING | DBG_CONTROL,
  443aa0:	8f8284f8 	lw	v0,-31496(gp)
  443aa4:	00000000 	nop
  443aa8:	8c420000 	lw	v0,0(v0)
  443aac:	00000000 	nop
  443ab0:	30420014 	andi	v0,v0,0x14
  443ab4:	10400159 	beqz	v0,44401c <decode_net_id+0x820>
  443ab8:	00000000 	nop
  443abc:	8fc40208 	lw	a0,520(s8)
  443ac0:	00002821 	move	a1,zero
  443ac4:	27c60058 	addiu	a2,s8,88
  443ac8:	2407004d 	li	a3,77
  443acc:	8f998bbc 	lw	t9,-29764(gp)
  443ad0:	00000000 	nop
  443ad4:	0320f809 	jalr	t9
  443ad8:	00000000 	nop
  443adc:	8fdc0020 	lw	gp,32(s8)
  443ae0:	00000000 	nop
  443ae4:	8f84802c 	lw	a0,-32724(gp)
  443ae8:	00000000 	nop
  443aec:	2484e9b0 	addiu	a0,a0,-5712
  443af0:	8fc5020c 	lw	a1,524(s8)
  443af4:	27c60058 	addiu	a2,s8,88
  443af8:	8f9983b8 	lw	t9,-31816(gp)
  443afc:	00000000 	nop
  443b00:	0320f809 	jalr	t9
  443b04:	00000000 	nop
  443b08:	8fdc0020 	lw	gp,32(s8)
  443b0c:	00000000 	nop
		{
		    char temp_buff[SUBNETTOT_BUF];

		    subnettot(net, 0, temp_buff, sizeof(temp_buff));
		    DBG_log("%s is %s", which, temp_buff);
		});
	    break;
  443b10:	10000142 	b	44401c <decode_net_id+0x820>
  443b14:	00000000 	nop
	}

	case ID_IPV4_ADDR_SUBNET:
	case ID_IPV6_ADDR_SUBNET:
	{
	    ip_address temp_address, temp_mask;
	    err_t ugh;

	    if (pbs_left(id_pbs) != 2 * afi->ia_sz)
  443b18:	8fc20204 	lw	v0,516(s8)
  443b1c:	00000000 	nop
  443b20:	8c430014 	lw	v1,20(v0)
  443b24:	8fc20204 	lw	v0,516(s8)
  443b28:	00000000 	nop
  443b2c:	8c420010 	lw	v0,16(v0)
  443b30:	00000000 	nop
  443b34:	00621823 	subu	v1,v1,v0
  443b38:	8fc20028 	lw	v0,40(s8)
  443b3c:	00000000 	nop
  443b40:	8c420008 	lw	v0,8(v0)
  443b44:	00000000 	nop
  443b48:	00021040 	sll	v0,v0,0x1
  443b4c:	10620010 	beq	v1,v0,443b90 <decode_net_id+0x394>
  443b50:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%s ID payload %s wrong length in Quick I1"
  443b54:	24040003 	li	a0,3
  443b58:	8f85802c 	lw	a1,-32724(gp)
  443b5c:	00000000 	nop
  443b60:	24a5e9bc 	addiu	a1,a1,-5700
  443b64:	8fc6020c 	lw	a2,524(s8)
  443b68:	8fc7002c 	lw	a3,44(s8)
  443b6c:	8f998c48 	lw	t9,-29624(gp)
  443b70:	00000000 	nop
  443b74:	0320f809 	jalr	t9
  443b78:	00000000 	nop
  443b7c:	8fdc0020 	lw	gp,32(s8)
  443b80:	00000000 	nop
		    , which, idtypename);
		return FALSE;
  443b84:	00001021 	move	v0,zero
  443b88:	1000014a 	b	4440b4 <decode_net_id+0x8b8>
  443b8c:	00000000 	nop
	    }
	    ugh = initaddr(id_pbs->cur
  443b90:	8fc20204 	lw	v0,516(s8)
  443b94:	00000000 	nop
  443b98:	8c440010 	lw	a0,16(v0)
  443b9c:	8fc20028 	lw	v0,40(s8)
  443ba0:	00000000 	nop
  443ba4:	8c450008 	lw	a1,8(v0)
  443ba8:	8fc20028 	lw	v0,40(s8)
  443bac:	00000000 	nop
  443bb0:	8c460000 	lw	a2,0(v0)
  443bb4:	27c70058 	addiu	a3,s8,88
  443bb8:	8f998b78 	lw	t9,-29832(gp)
  443bbc:	00000000 	nop
  443bc0:	0320f809 	jalr	t9
  443bc4:	00000000 	nop
  443bc8:	8fdc0020 	lw	gp,32(s8)
  443bcc:	afc20054 	sw	v0,84(s8)
		, afi->ia_sz, afi->af, &temp_address);
	    if (ugh == NULL)
  443bd0:	8fc20054 	lw	v0,84(s8)
  443bd4:	00000000 	nop
  443bd8:	14400017 	bnez	v0,443c38 <decode_net_id+0x43c>
  443bdc:	00000000 	nop
		ugh = initaddr(id_pbs->cur + afi->ia_sz
  443be0:	8fc20204 	lw	v0,516(s8)
  443be4:	00000000 	nop
  443be8:	8c430010 	lw	v1,16(v0)
  443bec:	8fc20028 	lw	v0,40(s8)
  443bf0:	00000000 	nop
  443bf4:	8c420008 	lw	v0,8(v0)
  443bf8:	00000000 	nop
  443bfc:	00621021 	addu	v0,v1,v0
  443c00:	00402021 	move	a0,v0
  443c04:	8fc20028 	lw	v0,40(s8)
  443c08:	00000000 	nop
  443c0c:	8c450008 	lw	a1,8(v0)
  443c10:	8fc20028 	lw	v0,40(s8)
  443c14:	00000000 	nop
  443c18:	8c460000 	lw	a2,0(v0)
  443c1c:	27c70078 	addiu	a3,s8,120
  443c20:	8f998b78 	lw	t9,-29832(gp)
  443c24:	00000000 	nop
  443c28:	0320f809 	jalr	t9
  443c2c:	00000000 	nop
  443c30:	8fdc0020 	lw	gp,32(s8)
  443c34:	afc20054 	sw	v0,84(s8)
		    , afi->ia_sz, afi->af, &temp_mask);
	    if (ugh == NULL)
  443c38:	8fc20054 	lw	v0,84(s8)
  443c3c:	00000000 	nop
  443c40:	14400011 	bnez	v0,443c88 <decode_net_id+0x48c>
  443c44:	00000000 	nop
		ugh = initsubnet(&temp_address, masktocount(&temp_mask)
  443c48:	27c40078 	addiu	a0,s8,120
  443c4c:	8f9980f4 	lw	t9,-32524(gp)
  443c50:	00000000 	nop
  443c54:	0320f809 	jalr	t9
  443c58:	00000000 	nop
  443c5c:	8fdc0020 	lw	gp,32(s8)
  443c60:	27c40058 	addiu	a0,s8,88
  443c64:	00402821 	move	a1,v0
  443c68:	24060030 	li	a2,48
  443c6c:	8fc70208 	lw	a3,520(s8)
  443c70:	8f998844 	lw	t9,-30652(gp)
  443c74:	00000000 	nop
  443c78:	0320f809 	jalr	t9
  443c7c:	00000000 	nop
  443c80:	8fdc0020 	lw	gp,32(s8)
  443c84:	afc20054 	sw	v0,84(s8)
		    , '0', net);
	    if (ugh != NULL)
  443c88:	8fc20054 	lw	v0,84(s8)
  443c8c:	00000000 	nop
  443c90:	10400013 	beqz	v0,443ce0 <decode_net_id+0x4e4>
  443c94:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%s ID payload %s bad subnet in Quick I1 (%s)"
  443c98:	8fc20054 	lw	v0,84(s8)
  443c9c:	00000000 	nop
  443ca0:	afa20010 	sw	v0,16(sp)
  443ca4:	24040003 	li	a0,3
  443ca8:	8f85802c 	lw	a1,-32724(gp)
  443cac:	00000000 	nop
  443cb0:	24a5e9e8 	addiu	a1,a1,-5656
  443cb4:	8fc6020c 	lw	a2,524(s8)
  443cb8:	8fc7002c 	lw	a3,44(s8)
  443cbc:	8f998c48 	lw	t9,-29624(gp)
  443cc0:	00000000 	nop
  443cc4:	0320f809 	jalr	t9
  443cc8:	00000000 	nop
  443ccc:	8fdc0020 	lw	gp,32(s8)
  443cd0:	00000000 	nop
		    , which, idtypename, ugh);
		return FALSE;
  443cd4:	00001021 	move	v0,zero
  443cd8:	100000f6 	b	4440b4 <decode_net_id+0x8b8>
  443cdc:	00000000 	nop
	    }
	    DBG(DBG_PARSING | DBG_CONTROL,
  443ce0:	8f8284f8 	lw	v0,-31496(gp)
  443ce4:	00000000 	nop
  443ce8:	8c420000 	lw	v0,0(v0)
  443cec:	00000000 	nop
  443cf0:	30420014 	andi	v0,v0,0x14
  443cf4:	104000c9 	beqz	v0,44401c <decode_net_id+0x820>
  443cf8:	00000000 	nop
  443cfc:	8fc40208 	lw	a0,520(s8)
  443d00:	00002821 	move	a1,zero
  443d04:	27c600a8 	addiu	a2,s8,168
  443d08:	2407004d 	li	a3,77
  443d0c:	8f998bbc 	lw	t9,-29764(gp)
  443d10:	00000000 	nop
  443d14:	0320f809 	jalr	t9
  443d18:	00000000 	nop
  443d1c:	8fdc0020 	lw	gp,32(s8)
  443d20:	00000000 	nop
  443d24:	8f84802c 	lw	a0,-32724(gp)
  443d28:	00000000 	nop
  443d2c:	2484ea18 	addiu	a0,a0,-5608
  443d30:	8fc5020c 	lw	a1,524(s8)
  443d34:	27c600a8 	addiu	a2,s8,168
  443d38:	8f9983b8 	lw	t9,-31816(gp)
  443d3c:	00000000 	nop
  443d40:	0320f809 	jalr	t9
  443d44:	00000000 	nop
  443d48:	8fdc0020 	lw	gp,32(s8)
  443d4c:	00000000 	nop
		{
		    char temp_buff[SUBNETTOT_BUF];

		    subnettot(net, 0, temp_buff, sizeof(temp_buff));
		    DBG_log("%s is subnet %s", which, temp_buff);
		});
	    break;
  443d50:	100000b2 	b	44401c <decode_net_id+0x820>
  443d54:	00000000 	nop
	}

	case ID_IPV4_ADDR_RANGE:
	case ID_IPV6_ADDR_RANGE:
	{
	    ip_address temp_address_from, temp_address_to;
	    err_t ugh;

	    if (pbs_left(id_pbs) != 2 * afi->ia_sz)
  443d58:	8fc20204 	lw	v0,516(s8)
  443d5c:	00000000 	nop
  443d60:	8c430014 	lw	v1,20(v0)
  443d64:	8fc20204 	lw	v0,516(s8)
  443d68:	00000000 	nop
  443d6c:	8c420010 	lw	v0,16(v0)
  443d70:	00000000 	nop
  443d74:	00621823 	subu	v1,v1,v0
  443d78:	8fc20028 	lw	v0,40(s8)
  443d7c:	00000000 	nop
  443d80:	8c420008 	lw	v0,8(v0)
  443d84:	00000000 	nop
  443d88:	00021040 	sll	v0,v0,0x1
  443d8c:	10620010 	beq	v1,v0,443dd0 <decode_net_id+0x5d4>
  443d90:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%s ID payload %s wrong length in Quick I1"
  443d94:	24040003 	li	a0,3
  443d98:	8f85802c 	lw	a1,-32724(gp)
  443d9c:	00000000 	nop
  443da0:	24a5e9bc 	addiu	a1,a1,-5700
  443da4:	8fc6020c 	lw	a2,524(s8)
  443da8:	8fc7002c 	lw	a3,44(s8)
  443dac:	8f998c48 	lw	t9,-29624(gp)
  443db0:	00000000 	nop
  443db4:	0320f809 	jalr	t9
  443db8:	00000000 	nop
  443dbc:	8fdc0020 	lw	gp,32(s8)
  443dc0:	00000000 	nop
		    , which, idtypename);
		return FALSE;
  443dc4:	00001021 	move	v0,zero
  443dc8:	100000ba 	b	4440b4 <decode_net_id+0x8b8>
  443dcc:	00000000 	nop
	    }
	    ugh = initaddr(id_pbs->cur, afi->ia_sz, afi->af, &temp_address_from);
  443dd0:	8fc20204 	lw	v0,516(s8)
  443dd4:	00000000 	nop
  443dd8:	8c440010 	lw	a0,16(v0)
  443ddc:	8fc20028 	lw	v0,40(s8)
  443de0:	00000000 	nop
  443de4:	8c450008 	lw	a1,8(v0)
  443de8:	8fc20028 	lw	v0,40(s8)
  443dec:	00000000 	nop
  443df0:	8c460000 	lw	a2,0(v0)
  443df4:	27c70098 	addiu	a3,s8,152
  443df8:	8f998b78 	lw	t9,-29832(gp)
  443dfc:	00000000 	nop
  443e00:	0320f809 	jalr	t9
  443e04:	00000000 	nop
  443e08:	8fdc0020 	lw	gp,32(s8)
  443e0c:	afc20054 	sw	v0,84(s8)
	    if (ugh == NULL)
  443e10:	8fc20054 	lw	v0,84(s8)
  443e14:	00000000 	nop
  443e18:	14400017 	bnez	v0,443e78 <decode_net_id+0x67c>
  443e1c:	00000000 	nop
		ugh = initaddr(id_pbs->cur + afi->ia_sz
  443e20:	8fc20204 	lw	v0,516(s8)
  443e24:	00000000 	nop
  443e28:	8c430010 	lw	v1,16(v0)
  443e2c:	8fc20028 	lw	v0,40(s8)
  443e30:	00000000 	nop
  443e34:	8c420008 	lw	v0,8(v0)
  443e38:	00000000 	nop
  443e3c:	00621021 	addu	v0,v1,v0
  443e40:	00402021 	move	a0,v0
  443e44:	8fc20028 	lw	v0,40(s8)
  443e48:	00000000 	nop
  443e4c:	8c450008 	lw	a1,8(v0)
  443e50:	8fc20028 	lw	v0,40(s8)
  443e54:	00000000 	nop
  443e58:	8c460000 	lw	a2,0(v0)
  443e5c:	27c700b8 	addiu	a3,s8,184
  443e60:	8f998b78 	lw	t9,-29832(gp)
  443e64:	00000000 	nop
  443e68:	0320f809 	jalr	t9
  443e6c:	00000000 	nop
  443e70:	8fdc0020 	lw	gp,32(s8)
  443e74:	afc20054 	sw	v0,84(s8)
		    , afi->ia_sz, afi->af, &temp_address_to);
	    if (ugh != NULL)
  443e78:	8fc20054 	lw	v0,84(s8)
  443e7c:	00000000 	nop
  443e80:	10400013 	beqz	v0,443ed0 <decode_net_id+0x6d4>
  443e84:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%s ID payload %s malformed (%s) in Quick I1"
  443e88:	8fc20054 	lw	v0,84(s8)
  443e8c:	00000000 	nop
  443e90:	afa20010 	sw	v0,16(sp)
  443e94:	24040003 	li	a0,3
  443e98:	8f85802c 	lw	a1,-32724(gp)
  443e9c:	00000000 	nop
  443ea0:	24a5ea28 	addiu	a1,a1,-5592
  443ea4:	8fc6020c 	lw	a2,524(s8)
  443ea8:	8fc7002c 	lw	a3,44(s8)
  443eac:	8f998c48 	lw	t9,-29624(gp)
  443eb0:	00000000 	nop
  443eb4:	0320f809 	jalr	t9
  443eb8:	00000000 	nop
  443ebc:	8fdc0020 	lw	gp,32(s8)
  443ec0:	00000000 	nop
		    , which, idtypename, ugh);
		return FALSE;
  443ec4:	00001021 	move	v0,zero
  443ec8:	1000007a 	b	4440b4 <decode_net_id+0x8b8>
  443ecc:	00000000 	nop
	    }

	    ugh = rangetosubnet(&temp_address_from, &temp_address_to, net);
  443ed0:	27c40098 	addiu	a0,s8,152
  443ed4:	27c500b8 	addiu	a1,s8,184
  443ed8:	8fc60208 	lw	a2,520(s8)
  443edc:	8f9982b0 	lw	t9,-32080(gp)
  443ee0:	00000000 	nop
  443ee4:	0320f809 	jalr	t9
  443ee8:	00000000 	nop
  443eec:	8fdc0020 	lw	gp,32(s8)
  443ef0:	afc20054 	sw	v0,84(s8)
	    if (ugh != NULL)
  443ef4:	8fc20054 	lw	v0,84(s8)
  443ef8:	00000000 	nop
  443efc:	1040002b 	beqz	v0,443fac <decode_net_id+0x7b0>
  443f00:	00000000 	nop
	    {
		char temp_buff1[ADDRTOT_BUF], temp_buff2[ADDRTOT_BUF];

		addrtot(&temp_address_from, 0, temp_buff1, sizeof(temp_buff1));
  443f04:	27c40098 	addiu	a0,s8,152
  443f08:	00002821 	move	a1,zero
  443f0c:	27c600f8 	addiu	a2,s8,248
  443f10:	24070049 	li	a3,73
  443f14:	8f998b50 	lw	t9,-29872(gp)
  443f18:	00000000 	nop
  443f1c:	0320f809 	jalr	t9
  443f20:	00000000 	nop
  443f24:	8fdc0020 	lw	gp,32(s8)
  443f28:	00000000 	nop
		addrtot(&temp_address_to, 0, temp_buff2, sizeof(temp_buff2));
  443f2c:	27c400b8 	addiu	a0,s8,184
  443f30:	00002821 	move	a1,zero
  443f34:	27c60148 	addiu	a2,s8,328
  443f38:	24070049 	li	a3,73
  443f3c:	8f998b50 	lw	t9,-29872(gp)
  443f40:	00000000 	nop
  443f44:	0320f809 	jalr	t9
  443f48:	00000000 	nop
  443f4c:	8fdc0020 	lw	gp,32(s8)
  443f50:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "%s ID payload in Quick I1, %s"
  443f54:	27c200f8 	addiu	v0,s8,248
  443f58:	afa20010 	sw	v0,16(sp)
  443f5c:	27c20148 	addiu	v0,s8,328
  443f60:	afa20014 	sw	v0,20(sp)
  443f64:	8fc20054 	lw	v0,84(s8)
  443f68:	00000000 	nop
  443f6c:	afa20018 	sw	v0,24(sp)
  443f70:	24040003 	li	a0,3
  443f74:	8f85802c 	lw	a1,-32724(gp)
  443f78:	00000000 	nop
  443f7c:	24a5ea54 	addiu	a1,a1,-5548
  443f80:	8fc6020c 	lw	a2,524(s8)
  443f84:	8fc7002c 	lw	a3,44(s8)
  443f88:	8f998c48 	lw	t9,-29624(gp)
  443f8c:	00000000 	nop
  443f90:	0320f809 	jalr	t9
  443f94:	00000000 	nop
  443f98:	8fdc0020 	lw	gp,32(s8)
  443f9c:	00000000 	nop
		    " %s - %s unacceptable: %s"
		    , which, idtypename, temp_buff1, temp_buff2, ugh);
		return FALSE;
  443fa0:	00001021 	move	v0,zero
  443fa4:	10000043 	b	4440b4 <decode_net_id+0x8b8>
  443fa8:	00000000 	nop
	    }
	    DBG(DBG_PARSING | DBG_CONTROL,
  443fac:	8f8284f8 	lw	v0,-31496(gp)
  443fb0:	00000000 	nop
  443fb4:	8c420000 	lw	v0,0(v0)
  443fb8:	00000000 	nop
  443fbc:	30420014 	andi	v0,v0,0x14
  443fc0:	10400016 	beqz	v0,44401c <decode_net_id+0x820>
  443fc4:	00000000 	nop
  443fc8:	8fc40208 	lw	a0,520(s8)
  443fcc:	00002821 	move	a1,zero
  443fd0:	27c60198 	addiu	a2,s8,408
  443fd4:	2407004d 	li	a3,77
  443fd8:	8f998bbc 	lw	t9,-29764(gp)
  443fdc:	00000000 	nop
  443fe0:	0320f809 	jalr	t9
  443fe4:	00000000 	nop
  443fe8:	8fdc0020 	lw	gp,32(s8)
  443fec:	00000000 	nop
  443ff0:	8f84802c 	lw	a0,-32724(gp)
  443ff4:	00000000 	nop
  443ff8:	2484ea8c 	addiu	a0,a0,-5492
  443ffc:	8fc5020c 	lw	a1,524(s8)
  444000:	27c60198 	addiu	a2,s8,408
  444004:	8f9983b8 	lw	t9,-31816(gp)
  444008:	00000000 	nop
  44400c:	0320f809 	jalr	t9
  444010:	00000000 	nop
  444014:	8fdc0020 	lw	gp,32(s8)
  444018:	00000000 	nop
		{
		    char temp_buff[SUBNETTOT_BUF];

		    subnettot(net, 0, temp_buff, sizeof(temp_buff));
		    DBG_log("%s is subnet %s (received as range)"
			, which, temp_buff);
		});
	    break;
	}
    }

    /* set the port selector */
    setportof(htons(id->isaiid_port), &net->addr);
  44401c:	8fc20200 	lw	v0,512(s8)
  444020:	00000000 	nop
  444024:	94420006 	lhu	v0,6(v0)
  444028:	00000000 	nop
  44402c:	00402021 	move	a0,v0
  444030:	8fc50208 	lw	a1,520(s8)
  444034:	8f9988e0 	lw	t9,-30496(gp)
  444038:	00000000 	nop
  44403c:	0320f809 	jalr	t9
  444040:	00000000 	nop
  444044:	8fdc0020 	lw	gp,32(s8)
  444048:	00000000 	nop

    DBG(DBG_PARSING | DBG_CONTROL,
  44404c:	8f8284f8 	lw	v0,-31496(gp)
  444050:	00000000 	nop
  444054:	8c420000 	lw	v0,0(v0)
  444058:	00000000 	nop
  44405c:	30420014 	andi	v0,v0,0x14
  444060:	10400013 	beqz	v0,4440b0 <decode_net_id+0x8b4>
  444064:	00000000 	nop
  444068:	8fc20200 	lw	v0,512(s8)
  44406c:	00000000 	nop
  444070:	90430005 	lbu	v1,5(v0)
  444074:	8fc20200 	lw	v0,512(s8)
  444078:	00000000 	nop
  44407c:	94420006 	lhu	v0,6(v0)
  444080:	8f84802c 	lw	a0,-32724(gp)
  444084:	00000000 	nop
  444088:	2484eab0 	addiu	a0,a0,-5456
  44408c:	8fc5020c 	lw	a1,524(s8)
  444090:	00603021 	move	a2,v1
  444094:	00403821 	move	a3,v0
  444098:	8f9983b8 	lw	t9,-31816(gp)
  44409c:	00000000 	nop
  4440a0:	0320f809 	jalr	t9
  4440a4:	00000000 	nop
  4440a8:	8fdc0020 	lw	gp,32(s8)
  4440ac:	00000000 	nop
        DBG_log("%s protocol/port is %d/%d", which, id->isaiid_protoid, id->isaiid_port)
    )

    return TRUE;
  4440b0:	24020001 	li	v0,1
}
  4440b4:	03c0e821 	move	sp,s8
  4440b8:	8fbf01f8 	lw	ra,504(sp)
  4440bc:	8fbe01f4 	lw	s8,500(sp)
  4440c0:	27bd0200 	addiu	sp,sp,512
  4440c4:	03e00008 	jr	ra
  4440c8:	00000000 	nop

004440cc <check_net_id>:
  4440cc:	3c1c0fbd 	lui	gp,0xfbd
  4440d0:	279c88a4 	addiu	gp,gp,-30556
  4440d4:	0399e021 	addu	gp,gp,t9
  4440d8:	27bdffb8 	addiu	sp,sp,-72
  4440dc:	afbc0010 	sw	gp,16(sp)
  4440e0:	afbf0040 	sw	ra,64(sp)
  4440e4:	afbe003c 	sw	s8,60(sp)
  4440e8:	afbc0038 	sw	gp,56(sp)
  4440ec:	03a0f021 	move	s8,sp
  4440f0:	afc40048 	sw	a0,72(s8)
  4440f4:	afc5004c 	sw	a1,76(s8)
  4440f8:	afc60050 	sw	a2,80(s8)
  4440fc:	afc70054 	sw	a3,84(s8)

/* like decode, but checks that what is received matches what was sent */
static bool

check_net_id(struct isakmp_ipsec_id *id
, pb_stream *id_pbs
, u_int8_t *protoid
, u_int16_t *port
, ip_subnet *net
, const char *which)
{
    ip_subnet net_temp;

    if (!decode_net_id(id, id_pbs, &net_temp, which))
  444100:	8fc40048 	lw	a0,72(s8)
  444104:	8fc5004c 	lw	a1,76(s8)
  444108:	27c60018 	addiu	a2,s8,24
  44410c:	8fc7005c 	lw	a3,92(s8)
  444110:	8f998034 	lw	t9,-32716(gp)
  444114:	00000000 	nop
  444118:	273937fc 	addiu	t9,t9,14332
  44411c:	00000000 	nop
  444120:	0320f809 	jalr	t9
  444124:	00000000 	nop
  444128:	8fdc0010 	lw	gp,16(s8)
  44412c:	14400004 	bnez	v0,444140 <check_net_id+0x74>
  444130:	00000000 	nop
	return FALSE;
  444134:	00001021 	move	v0,zero
  444138:	1000002d 	b	4441f0 <check_net_id+0x124>
  44413c:	00000000 	nop

    if (!samesubnet(net, &net_temp)
    || *protoid != id->isaiid_protoid || *port != id->isaiid_port)
  444140:	8fc40058 	lw	a0,88(s8)
  444144:	27c50018 	addiu	a1,s8,24
  444148:	8f9983e8 	lw	t9,-31768(gp)
  44414c:	00000000 	nop
  444150:	0320f809 	jalr	t9
  444154:	00000000 	nop
  444158:	8fdc0010 	lw	gp,16(s8)
  44415c:	10400015 	beqz	v0,4441b4 <check_net_id+0xe8>
  444160:	00000000 	nop
  444164:	8fc20050 	lw	v0,80(s8)
  444168:	00000000 	nop
  44416c:	90430000 	lbu	v1,0(v0)
  444170:	8fc20048 	lw	v0,72(s8)
  444174:	00000000 	nop
  444178:	90420005 	lbu	v0,5(v0)
  44417c:	00000000 	nop
  444180:	1462000c 	bne	v1,v0,4441b4 <check_net_id+0xe8>
  444184:	00000000 	nop
  444188:	8fc20054 	lw	v0,84(s8)
  44418c:	00000000 	nop
  444190:	94430000 	lhu	v1,0(v0)
  444194:	8fc20048 	lw	v0,72(s8)
  444198:	00000000 	nop
  44419c:	94420006 	lhu	v0,6(v0)
  4441a0:	00000000 	nop
  4441a4:	14620003 	bne	v1,v0,4441b4 <check_net_id+0xe8>
  4441a8:	00000000 	nop
  4441ac:	1000000f 	b	4441ec <check_net_id+0x120>
  4441b0:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "%s ID returned doesn't match my proposal", which);
  4441b4:	24040003 	li	a0,3
  4441b8:	8f85802c 	lw	a1,-32724(gp)
  4441bc:	00000000 	nop
  4441c0:	24a5eb10 	addiu	a1,a1,-5360
  4441c4:	8fc6005c 	lw	a2,92(s8)
  4441c8:	8f998c48 	lw	t9,-29624(gp)
  4441cc:	00000000 	nop
  4441d0:	0320f809 	jalr	t9
  4441d4:	00000000 	nop
  4441d8:	8fdc0010 	lw	gp,16(s8)
  4441dc:	00000000 	nop
	return FALSE;
  4441e0:	00001021 	move	v0,zero
  4441e4:	10000002 	b	4441f0 <check_net_id+0x124>
  4441e8:	00000000 	nop
    }
    return TRUE;
  4441ec:	24020001 	li	v0,1
}
  4441f0:	03c0e821 	move	sp,s8
  4441f4:	8fbf0040 	lw	ra,64(sp)
  4441f8:	8fbe003c 	lw	s8,60(sp)
  4441fc:	27bd0048 	addiu	sp,sp,72
  444200:	03e00008 	jr	ra
  444204:	00000000 	nop

00444208 <has_preloaded_public_key>:
  444208:	3c1c0fbd 	lui	gp,0xfbd
  44420c:	279c8768 	addiu	gp,gp,-30872
  444210:	0399e021 	addu	gp,gp,t9
  444214:	27bdffd0 	addiu	sp,sp,-48
  444218:	afbc0010 	sw	gp,16(sp)
  44421c:	afbf0028 	sw	ra,40(sp)
  444220:	afbe0024 	sw	s8,36(sp)
  444224:	afbc0020 	sw	gp,32(sp)
  444228:	03a0f021 	move	s8,sp
  44422c:	afc40030 	sw	a0,48(s8)

/*
 * look for the existence of a non-expiring preloaded public key
 */
static bool
has_preloaded_public_key(struct state *st)
{
    struct connection *c = st->st_connection;
  444230:	8fc20030 	lw	v0,48(s8)
  444234:	00000000 	nop
  444238:	8c42000c 	lw	v0,12(v0)
  44423c:	00000000 	nop
  444240:	afc20018 	sw	v0,24(s8)

    /* do not consider rw connections since
     * the peer's identity must be known
     */
    if (c->kind == CK_PERMANENT)
  444244:	8fc20018 	lw	v0,24(s8)
  444248:	00000000 	nop
  44424c:	8c430194 	lw	v1,404(v0)
  444250:	24020001 	li	v0,1
  444254:	1462002e 	bne	v1,v0,444310 <has_preloaded_public_key+0x108>
  444258:	00000000 	nop
    {
	struct pubkeyrec *p;

	/* look for a matching RSA public key */
	for (p = pubkeys; p != NULL; p = p->next)
  44425c:	8f8287a8 	lw	v0,-30808(gp)
  444260:	00000000 	nop
  444264:	8c420000 	lw	v0,0(v0)
  444268:	00000000 	nop
  44426c:	afc2001c 	sw	v0,28(s8)
  444270:	8fc2001c 	lw	v0,28(s8)
  444274:	00000000 	nop
  444278:	14400003 	bnez	v0,444288 <has_preloaded_public_key+0x80>
  44427c:	00000000 	nop
  444280:	10000023 	b	444310 <has_preloaded_public_key+0x108>
  444284:	00000000 	nop
	{
	    if (p->alg == PUBKEY_ALG_RSA &&
		same_id(&c->that.id, &p->id) &&
		p->until == UNDEFINED_TIME)
  444288:	8fc2001c 	lw	v0,28(s8)
  44428c:	00000000 	nop
  444290:	8c43003c 	lw	v1,60(v0)
  444294:	24020001 	li	v0,1
  444298:	14620016 	bne	v1,v0,4442f4 <has_preloaded_public_key+0xec>
  44429c:	00000000 	nop
  4442a0:	8fc20018 	lw	v0,24(s8)
  4442a4:	00000000 	nop
  4442a8:	244200e0 	addiu	v0,v0,224
  4442ac:	00402021 	move	a0,v0
  4442b0:	8fc5001c 	lw	a1,28(s8)
  4442b4:	8f9980e4 	lw	t9,-32540(gp)
  4442b8:	00000000 	nop
  4442bc:	0320f809 	jalr	t9
  4442c0:	00000000 	nop
  4442c4:	8fdc0010 	lw	gp,16(s8)
  4442c8:	1040000a 	beqz	v0,4442f4 <has_preloaded_public_key+0xec>
  4442cc:	00000000 	nop
  4442d0:	8fc2001c 	lw	v0,28(s8)
  4442d4:	00000000 	nop
  4442d8:	8c42002c 	lw	v0,44(v0)
  4442dc:	00000000 	nop
  4442e0:	14400004 	bnez	v0,4442f4 <has_preloaded_public_key+0xec>
  4442e4:	00000000 	nop
	    {
		/* found a preloaded public key */
		return TRUE;
  4442e8:	24020001 	li	v0,1
  4442ec:	10000009 	b	444314 <has_preloaded_public_key+0x10c>
  4442f0:	00000000 	nop
  4442f4:	8fc2001c 	lw	v0,28(s8)
  4442f8:	00000000 	nop
  4442fc:	8c420068 	lw	v0,104(v0)
  444300:	00000000 	nop
  444304:	afc2001c 	sw	v0,28(s8)
  444308:	1000ffd9 	b	444270 <has_preloaded_public_key+0x68>
  44430c:	00000000 	nop
	    }
	}
    }
    return FALSE;
  444310:	00001021 	move	v0,zero
}
  444314:	03c0e821 	move	sp,s8
  444318:	8fbf0028 	lw	ra,40(sp)
  44431c:	8fbe0024 	lw	s8,36(sp)
  444320:	27bd0030 	addiu	sp,sp,48
  444324:	03e00008 	jr	ra
  444328:	00000000 	nop

0044432c <compute_proto_keymat>:
  44432c:	3c1c0fbd 	lui	gp,0xfbd
  444330:	279c8644 	addiu	gp,gp,-31164
  444334:	0399e021 	addu	gp,gp,t9
  444338:	27bdfcf8 	addiu	sp,sp,-776
  44433c:	afbc0010 	sw	gp,16(sp)
  444340:	afbf0304 	sw	ra,772(sp)
  444344:	afbe0300 	sw	s8,768(sp)
  444348:	afbc02fc 	sw	gp,764(sp)
  44434c:	afb002f8 	sw	s0,760(sp)
  444350:	03a0f021 	move	s8,sp
  444354:	afc40308 	sw	a0,776(s8)
  444358:	00a01021 	move	v0,a1
  44435c:	afc60310 	sw	a2,784(s8)
  444360:	a3c20018 	sb	v0,24(s8)

/*
 * Produce the new key material of Quick Mode.
 * draft-ietf-ipsec-isakmp-oakley-06.txt section 5.5
 * specifies how this is to be done.
 */
static void
compute_proto_keymat(struct state *st
, u_int8_t protoid
, struct ipsec_proto_info *pi)
{
    size_t needed_len; /* bytes of keying material needed */

    /* Add up the requirements for keying material
     * (It probably doesn't matter if we produce too much!)
     */
    switch (protoid)
  444364:	93c20018 	lbu	v0,24(s8)
  444368:	00000000 	nop
  44436c:	afc202f4 	sw	v0,756(s8)
  444370:	24020002 	li	v0,2
  444374:	8fc302f4 	lw	v1,756(s8)
  444378:	00000000 	nop
  44437c:	1062010a 	beq	v1,v0,4447a8 <compute_proto_keymat+0x47c>
  444380:	00000000 	nop
  444384:	24020003 	li	v0,3
  444388:	8fc302f4 	lw	v1,756(s8)
  44438c:	00000000 	nop
  444390:	10620014 	beq	v1,v0,4443e4 <compute_proto_keymat+0xb8>
  444394:	00000000 	nop
    {
    case PROTO_IPSEC_ESP:
	    switch (pi->attrs.transid)
	    {
	    case ESP_NULL:
		needed_len = 0;
		break;
	    case ESP_DES:
		needed_len = DES_CBC_BLOCK_SIZE;
		break;
	    case ESP_3DES:
		needed_len = DES_CBC_BLOCK_SIZE * 3;
		break;
	    default:
#ifndef NO_KERNEL_ALG
		if((needed_len=kernel_alg_esp_enc_keylen(pi->attrs.transid))>0) {
			/* XXX: check key_len "coupling with kernel.c's */
			if (pi->attrs.key_len) {
				needed_len=pi->attrs.key_len/8;
				DBG(DBG_PARSING, DBG_log("compute_proto_keymat:"
						"key_len=%d from peer",
						(int)needed_len));
			}
			break;
		}
#endif
		exit_log("transform %s not implemented yet",
		    enum_show(&esp_transformid_names, pi->attrs.transid));
	    }
#ifndef NO_KERNEL_ALG
	    DBG(DBG_PARSING, DBG_log("compute_proto_keymat:"
				    "needed_len (after ESP enc)=%d",
				    (int)needed_len));
	    if (kernel_alg_esp_auth_ok(pi->attrs.auth, NULL)) {
		needed_len += kernel_alg_esp_auth_keylen(pi->attrs.auth);
	    } else
#endif
	    switch (pi->attrs.auth)
	    {
	    case AUTH_ALGORITHM_NONE:
		break;
	    case AUTH_ALGORITHM_HMAC_MD5:
		needed_len += HMAC_MD5_KEY_LEN;
		break;
	    case AUTH_ALGORITHM_HMAC_SHA1:
		needed_len += HMAC_SHA1_KEY_LEN;
		break;
	    case AUTH_ALGORITHM_DES_MAC:
	    default:
		exit_log("AUTH algorithm %s not implemented yet",
		    enum_show(&auth_alg_names, pi->attrs.auth));
	    }
	    DBG(DBG_PARSING, DBG_log("compute_proto_keymat:"
				    "needed_len (after ESP auth)=%d",
				    (int)needed_len));
	    break;

    case PROTO_IPSEC_AH:
	    switch (pi->attrs.transid)
	    {
	    case AH_MD5:
		needed_len = HMAC_MD5_KEY_LEN;
		break;
	    case AH_SHA:
		needed_len = HMAC_SHA1_KEY_LEN;
		break;
	    default:
		exit_log("transform %s not implemented yet",
		    enum_show(&ah_transformid_names, pi->attrs.transid));
	    }
	    break;

    default:
	exit_log("protocol %s not implemented yet",
  444398:	93c20018 	lbu	v0,24(s8)
  44439c:	8f848ab4 	lw	a0,-30028(gp)
  4443a0:	00402821 	move	a1,v0
  4443a4:	8f9987fc 	lw	t9,-30724(gp)
  4443a8:	00000000 	nop
  4443ac:	0320f809 	jalr	t9
  4443b0:	00000000 	nop
  4443b4:	8fdc0010 	lw	gp,16(s8)
  4443b8:	00000000 	nop
  4443bc:	8f84802c 	lw	a0,-32724(gp)
  4443c0:	00000000 	nop
  4443c4:	2484eb3c 	addiu	a0,a0,-5316
  4443c8:	00402821 	move	a1,v0
  4443cc:	8f998854 	lw	t9,-30636(gp)
  4443d0:	00000000 	nop
  4443d4:	0320f809 	jalr	t9
  4443d8:	00000000 	nop
  4443dc:	8fdc0010 	lw	gp,16(s8)
  4443e0:	00000000 	nop
  4443e4:	8fc20310 	lw	v0,784(s8)
  4443e8:	00000000 	nop
  4443ec:	90420004 	lbu	v0,4(v0)
  4443f0:	00000000 	nop
  4443f4:	afc202e8 	sw	v0,744(s8)
  4443f8:	24020003 	li	v0,3
  4443fc:	8fc302e8 	lw	v1,744(s8)
  444400:	00000000 	nop
  444404:	1062001b 	beq	v1,v0,444474 <compute_proto_keymat+0x148>
  444408:	00000000 	nop
  44440c:	8fc302e8 	lw	v1,744(s8)
  444410:	00000000 	nop
  444414:	28620004 	slti	v0,v1,4
  444418:	10400008 	beqz	v0,44443c <compute_proto_keymat+0x110>
  44441c:	00000000 	nop
  444420:	24020002 	li	v0,2
  444424:	8fc302e8 	lw	v1,744(s8)
  444428:	00000000 	nop
  44442c:	1062000d 	beq	v1,v0,444464 <compute_proto_keymat+0x138>
  444430:	00000000 	nop
  444434:	10000013 	b	444484 <compute_proto_keymat+0x158>
  444438:	00000000 	nop
  44443c:	2402000b 	li	v0,11
  444440:	8fc302e8 	lw	v1,744(s8)
  444444:	00000000 	nop
  444448:	10620003 	beq	v1,v0,444458 <compute_proto_keymat+0x12c>
  44444c:	00000000 	nop
  444450:	1000000c 	b	444484 <compute_proto_keymat+0x158>
  444454:	00000000 	nop
  444458:	afc0001c 	sw	zero,28(s8)
  44445c:	1000004e 	b	444598 <compute_proto_keymat+0x26c>
  444460:	00000000 	nop
  444464:	24020008 	li	v0,8
  444468:	afc2001c 	sw	v0,28(s8)
  44446c:	1000004a 	b	444598 <compute_proto_keymat+0x26c>
  444470:	00000000 	nop
  444474:	24020018 	li	v0,24
  444478:	afc2001c 	sw	v0,28(s8)
  44447c:	10000046 	b	444598 <compute_proto_keymat+0x26c>
  444480:	00000000 	nop
  444484:	8fc20310 	lw	v0,784(s8)
  444488:	00000000 	nop
  44448c:	90420004 	lbu	v0,4(v0)
  444490:	00000000 	nop
  444494:	00402021 	move	a0,v0
  444498:	8f9984f4 	lw	t9,-31500(gp)
  44449c:	00000000 	nop
  4444a0:	0320f809 	jalr	t9
  4444a4:	00000000 	nop
  4444a8:	8fdc0010 	lw	gp,16(s8)
  4444ac:	afc2001c 	sw	v0,28(s8)
  4444b0:	8fc2001c 	lw	v0,28(s8)
  4444b4:	00000000 	nop
  4444b8:	afc2001c 	sw	v0,28(s8)
  4444bc:	10400021 	beqz	v0,444544 <compute_proto_keymat+0x218>
  4444c0:	00000000 	nop
  4444c4:	8fc20310 	lw	v0,784(s8)
  4444c8:	00000000 	nop
  4444cc:	94420018 	lhu	v0,24(v0)
  4444d0:	00000000 	nop
  4444d4:	10400030 	beqz	v0,444598 <compute_proto_keymat+0x26c>
  4444d8:	00000000 	nop
  4444dc:	8fc20310 	lw	v0,784(s8)
  4444e0:	00000000 	nop
  4444e4:	94420018 	lhu	v0,24(v0)
  4444e8:	00000000 	nop
  4444ec:	000210c2 	srl	v0,v0,0x3
  4444f0:	3042ffff 	andi	v0,v0,0xffff
  4444f4:	afc2001c 	sw	v0,28(s8)
  4444f8:	8f8284f8 	lw	v0,-31496(gp)
  4444fc:	00000000 	nop
  444500:	8c420000 	lw	v0,0(v0)
  444504:	00000000 	nop
  444508:	30420004 	andi	v0,v0,0x4
  44450c:	10400022 	beqz	v0,444598 <compute_proto_keymat+0x26c>
  444510:	00000000 	nop
  444514:	8f84802c 	lw	a0,-32724(gp)
  444518:	00000000 	nop
  44451c:	2484eb5c 	addiu	a0,a0,-5284
  444520:	8fc5001c 	lw	a1,28(s8)
  444524:	8f9983b8 	lw	t9,-31816(gp)
  444528:	00000000 	nop
  44452c:	0320f809 	jalr	t9
  444530:	00000000 	nop
  444534:	8fdc0010 	lw	gp,16(s8)
  444538:	00000000 	nop
  44453c:	10000016 	b	444598 <compute_proto_keymat+0x26c>
  444540:	00000000 	nop
  444544:	8fc20310 	lw	v0,784(s8)
  444548:	00000000 	nop
  44454c:	90420004 	lbu	v0,4(v0)
  444550:	8f848bf8 	lw	a0,-29704(gp)
  444554:	00402821 	move	a1,v0
  444558:	8f9987fc 	lw	t9,-30724(gp)
  44455c:	00000000 	nop
  444560:	0320f809 	jalr	t9
  444564:	00000000 	nop
  444568:	8fdc0010 	lw	gp,16(s8)
  44456c:	00000000 	nop
  444570:	8f84802c 	lw	a0,-32724(gp)
  444574:	00000000 	nop
  444578:	2484eb88 	addiu	a0,a0,-5240
  44457c:	00402821 	move	a1,v0
  444580:	8f998854 	lw	t9,-30636(gp)
  444584:	00000000 	nop
  444588:	0320f809 	jalr	t9
  44458c:	00000000 	nop
  444590:	8fdc0010 	lw	gp,16(s8)
  444594:	00000000 	nop
  444598:	8f8284f8 	lw	v0,-31496(gp)
  44459c:	00000000 	nop
  4445a0:	8c420000 	lw	v0,0(v0)
  4445a4:	00000000 	nop
  4445a8:	30420004 	andi	v0,v0,0x4
  4445ac:	1040000b 	beqz	v0,4445dc <compute_proto_keymat+0x2b0>
  4445b0:	00000000 	nop
  4445b4:	8f84802c 	lw	a0,-32724(gp)
  4445b8:	00000000 	nop
  4445bc:	2484ebac 	addiu	a0,a0,-5204
  4445c0:	8fc5001c 	lw	a1,28(s8)
  4445c4:	8f9983b8 	lw	t9,-31816(gp)
  4445c8:	00000000 	nop
  4445cc:	0320f809 	jalr	t9
  4445d0:	00000000 	nop
  4445d4:	8fdc0010 	lw	gp,16(s8)
  4445d8:	00000000 	nop
  4445dc:	8fc20310 	lw	v0,784(s8)
  4445e0:	00000000 	nop
  4445e4:	94420016 	lhu	v0,22(v0)
  4445e8:	00000000 	nop
  4445ec:	00402021 	move	a0,v0
  4445f0:	00002821 	move	a1,zero
  4445f4:	8f9988f4 	lw	t9,-30476(gp)
  4445f8:	00000000 	nop
  4445fc:	0320f809 	jalr	t9
  444600:	00000000 	nop
  444604:	8fdc0010 	lw	gp,16(s8)
  444608:	10400012 	beqz	v0,444654 <compute_proto_keymat+0x328>
  44460c:	00000000 	nop
  444610:	8fc20310 	lw	v0,784(s8)
  444614:	00000000 	nop
  444618:	94420016 	lhu	v0,22(v0)
  44461c:	00000000 	nop
  444620:	00402021 	move	a0,v0
  444624:	8f99869c 	lw	t9,-31076(gp)
  444628:	00000000 	nop
  44462c:	0320f809 	jalr	t9
  444630:	00000000 	nop
  444634:	8fdc0010 	lw	gp,16(s8)
  444638:	00401821 	move	v1,v0
  44463c:	8fc2001c 	lw	v0,28(s8)
  444640:	00000000 	nop
  444644:	00431021 	addu	v0,v0,v1
  444648:	afc2001c 	sw	v0,28(s8)
  44464c:	10000043 	b	44475c <compute_proto_keymat+0x430>
  444650:	00000000 	nop
  444654:	8fc20310 	lw	v0,784(s8)
  444658:	00000000 	nop
  44465c:	94420016 	lhu	v0,22(v0)
  444660:	00000000 	nop
  444664:	afc202ec 	sw	v0,748(s8)
  444668:	24020001 	li	v0,1
  44466c:	8fc302ec 	lw	v1,748(s8)
  444670:	00000000 	nop
  444674:	10620018 	beq	v1,v0,4446d8 <compute_proto_keymat+0x3ac>
  444678:	00000000 	nop
  44467c:	8fc302ec 	lw	v1,748(s8)
  444680:	00000000 	nop
  444684:	28620002 	slti	v0,v1,2
  444688:	10400007 	beqz	v0,4446a8 <compute_proto_keymat+0x37c>
  44468c:	00000000 	nop
  444690:	8fc202ec 	lw	v0,748(s8)
  444694:	00000000 	nop
  444698:	10400030 	beqz	v0,44475c <compute_proto_keymat+0x430>
  44469c:	00000000 	nop
  4446a0:	10000019 	b	444708 <compute_proto_keymat+0x3dc>
  4446a4:	00000000 	nop
  4446a8:	24020002 	li	v0,2
  4446ac:	8fc302ec 	lw	v1,748(s8)
  4446b0:	00000000 	nop
  4446b4:	1062000e 	beq	v1,v0,4446f0 <compute_proto_keymat+0x3c4>
  4446b8:	00000000 	nop
  4446bc:	24020003 	li	v0,3
  4446c0:	8fc302ec 	lw	v1,748(s8)
  4446c4:	00000000 	nop
  4446c8:	1062000f 	beq	v1,v0,444708 <compute_proto_keymat+0x3dc>
  4446cc:	00000000 	nop
  4446d0:	1000000d 	b	444708 <compute_proto_keymat+0x3dc>
  4446d4:	00000000 	nop
  4446d8:	8fc2001c 	lw	v0,28(s8)
  4446dc:	00000000 	nop
  4446e0:	24420010 	addiu	v0,v0,16
  4446e4:	afc2001c 	sw	v0,28(s8)
  4446e8:	1000001c 	b	44475c <compute_proto_keymat+0x430>
  4446ec:	00000000 	nop
  4446f0:	8fc2001c 	lw	v0,28(s8)
  4446f4:	00000000 	nop
  4446f8:	24420014 	addiu	v0,v0,20
  4446fc:	afc2001c 	sw	v0,28(s8)
  444700:	10000016 	b	44475c <compute_proto_keymat+0x430>
  444704:	00000000 	nop
  444708:	8fc20310 	lw	v0,784(s8)
  44470c:	00000000 	nop
  444710:	94420016 	lhu	v0,22(v0)
  444714:	8f848424 	lw	a0,-31708(gp)
  444718:	00402821 	move	a1,v0
  44471c:	8f9987fc 	lw	t9,-30724(gp)
  444720:	00000000 	nop
  444724:	0320f809 	jalr	t9
  444728:	00000000 	nop
  44472c:	8fdc0010 	lw	gp,16(s8)
  444730:	00000000 	nop
  444734:	8f84802c 	lw	a0,-32724(gp)
  444738:	00000000 	nop
  44473c:	2484ebe0 	addiu	a0,a0,-5152
  444740:	00402821 	move	a1,v0
  444744:	8f998854 	lw	t9,-30636(gp)
  444748:	00000000 	nop
  44474c:	0320f809 	jalr	t9
  444750:	00000000 	nop
  444754:	8fdc0010 	lw	gp,16(s8)
  444758:	00000000 	nop
  44475c:	8f8284f8 	lw	v0,-31496(gp)
  444760:	00000000 	nop
  444764:	8c420000 	lw	v0,0(v0)
  444768:	00000000 	nop
  44476c:	30420004 	andi	v0,v0,0x4
  444770:	10400037 	beqz	v0,444850 <compute_proto_keymat+0x524>
  444774:	00000000 	nop
  444778:	8f84802c 	lw	a0,-32724(gp)
  44477c:	00000000 	nop
  444780:	2484ec08 	addiu	a0,a0,-5112
  444784:	8fc5001c 	lw	a1,28(s8)
  444788:	8f9983b8 	lw	t9,-31816(gp)
  44478c:	00000000 	nop
  444790:	0320f809 	jalr	t9
  444794:	00000000 	nop
  444798:	8fdc0010 	lw	gp,16(s8)
  44479c:	00000000 	nop
  4447a0:	1000002b 	b	444850 <compute_proto_keymat+0x524>
  4447a4:	00000000 	nop
  4447a8:	8fc20310 	lw	v0,784(s8)
  4447ac:	00000000 	nop
  4447b0:	90420004 	lbu	v0,4(v0)
  4447b4:	00000000 	nop
  4447b8:	afc202f0 	sw	v0,752(s8)
  4447bc:	24020002 	li	v0,2
  4447c0:	8fc302f0 	lw	v1,752(s8)
  4447c4:	00000000 	nop
  4447c8:	1062001b 	beq	v1,v0,444838 <compute_proto_keymat+0x50c>
  4447cc:	00000000 	nop
  4447d0:	24020003 	li	v0,3
  4447d4:	8fc302f0 	lw	v1,752(s8)
  4447d8:	00000000 	nop
  4447dc:	1062001a 	beq	v1,v0,444848 <compute_proto_keymat+0x51c>
  4447e0:	00000000 	nop
  4447e4:	8fc20310 	lw	v0,784(s8)
  4447e8:	00000000 	nop
  4447ec:	90420004 	lbu	v0,4(v0)
  4447f0:	8f8487a4 	lw	a0,-30812(gp)
  4447f4:	00402821 	move	a1,v0
  4447f8:	8f9987fc 	lw	t9,-30724(gp)
  4447fc:	00000000 	nop
  444800:	0320f809 	jalr	t9
  444804:	00000000 	nop
  444808:	8fdc0010 	lw	gp,16(s8)
  44480c:	00000000 	nop
  444810:	8f84802c 	lw	a0,-32724(gp)
  444814:	00000000 	nop
  444818:	2484eb88 	addiu	a0,a0,-5240
  44481c:	00402821 	move	a1,v0
  444820:	8f998854 	lw	t9,-30636(gp)
  444824:	00000000 	nop
  444828:	0320f809 	jalr	t9
  44482c:	00000000 	nop
  444830:	8fdc0010 	lw	gp,16(s8)
  444834:	00000000 	nop
  444838:	24020010 	li	v0,16
  44483c:	afc2001c 	sw	v0,28(s8)
  444840:	10000003 	b	444850 <compute_proto_keymat+0x524>
  444844:	00000000 	nop
  444848:	24020014 	li	v0,20
  44484c:	afc2001c 	sw	v0,28(s8)
	    enum_show(&protocol_names, protoid));
	break;
    }

    pi->keymat_len = needed_len;
  444850:	97c3001e 	lhu	v1,30(s8)
  444854:	8fc20310 	lw	v0,784(s8)
  444858:	00000000 	nop
  44485c:	a4430020 	sh	v1,32(v0)

    /* Allocate space for the keying material.
     * Although only needed_len bytes are desired, we
     * must round up to a multiple of ctx.hmac_digest_size
     * so that our buffer isn't overrun.
     */
    {
	struct hmac_ctx ctx_me, ctx_peer;
	size_t needed_space;	/* space needed for keying material (rounded up) */
	size_t i;

	hmac_init_chunk(&ctx_me, st->st_oakley.hasher, st->st_skeyid_d);
  444860:	27c40020 	addiu	a0,s8,32
  444864:	8fc20308 	lw	v0,776(s8)
  444868:	00000000 	nop
  44486c:	8c450028 	lw	a1,40(v0)
  444870:	8fc20308 	lw	v0,776(s8)
  444874:	00000000 	nop
  444878:	8c46016c 	lw	a2,364(v0)
  44487c:	8fc20308 	lw	v0,776(s8)
  444880:	00000000 	nop
  444884:	8c470170 	lw	a3,368(v0)
  444888:	8f9989e0 	lw	t9,-30240(gp)
  44488c:	00000000 	nop
  444890:	0320f809 	jalr	t9
  444894:	00000000 	nop
  444898:	8fdc0010 	lw	gp,16(s8)
  44489c:	00000000 	nop
	ctx_peer = ctx_me;	/* duplicate initial conditions */
  4448a0:	27c40180 	addiu	a0,s8,384
  4448a4:	27c50020 	addiu	a1,s8,32
  4448a8:	2406015c 	li	a2,348
  4448ac:	8f998a30 	lw	t9,-30160(gp)
  4448b0:	00000000 	nop
  4448b4:	0320f809 	jalr	t9
  4448b8:	00000000 	nop
  4448bc:	8fdc0010 	lw	gp,16(s8)
  4448c0:	00000000 	nop

	needed_space = needed_len + pad_up(needed_len, ctx_me.hmac_digest_size);
  4448c4:	8fc3001c 	lw	v1,28(s8)
  4448c8:	8fc20024 	lw	v0,36(s8)
  4448cc:	00000000 	nop
  4448d0:	00621021 	addu	v0,v1,v0
  4448d4:	2443ffff 	addiu	v1,v0,-1
  4448d8:	8fc20024 	lw	v0,36(s8)
  4448dc:	00000000 	nop
  4448e0:	0062001b 	divu	zero,v1,v0
  4448e4:	00001810 	mfhi	v1
  4448e8:	14400002 	bnez	v0,4448f4 <compute_proto_keymat+0x5c8>
  4448ec:	00000000 	nop
  4448f0:	0007000d 	break	0x7
  4448f4:	8fc20024 	lw	v0,36(s8)
  4448f8:	00000000 	nop
  4448fc:	00431823 	subu	v1,v0,v1
  444900:	8fc2001c 	lw	v0,28(s8)
  444904:	00000000 	nop
  444908:	00621021 	addu	v0,v1,v0
  44490c:	2442ffff 	addiu	v0,v0,-1
  444910:	afc202e0 	sw	v0,736(s8)
	replace(pi->our_keymat, alloc_bytes(needed_space, "keymat in compute_keymat()"));
  444914:	8fc20310 	lw	v0,784(s8)
  444918:	00000000 	nop
  44491c:	8c420024 	lw	v0,36(v0)
  444920:	00000000 	nop
  444924:	10400009 	beqz	v0,44494c <compute_proto_keymat+0x620>
  444928:	00000000 	nop
  44492c:	8fc20310 	lw	v0,784(s8)
  444930:	00000000 	nop
  444934:	8c440024 	lw	a0,36(v0)
  444938:	8f998094 	lw	t9,-32620(gp)
  44493c:	00000000 	nop
  444940:	0320f809 	jalr	t9
  444944:	00000000 	nop
  444948:	8fdc0010 	lw	gp,16(s8)
  44494c:	8fd00310 	lw	s0,784(s8)
  444950:	8fc402e0 	lw	a0,736(s8)
  444954:	8f85802c 	lw	a1,-32724(gp)
  444958:	00000000 	nop
  44495c:	24a5ec3c 	addiu	a1,a1,-5060
  444960:	8f998084 	lw	t9,-32636(gp)
  444964:	00000000 	nop
  444968:	0320f809 	jalr	t9
  44496c:	00000000 	nop
  444970:	8fdc0010 	lw	gp,16(s8)
  444974:	ae020024 	sw	v0,36(s0)
	replace(pi->peer_keymat, alloc_bytes(needed_space, "peer_keymat in quick_inI1_outR1()"));
  444978:	8fc20310 	lw	v0,784(s8)
  44497c:	00000000 	nop
  444980:	8c420028 	lw	v0,40(v0)
  444984:	00000000 	nop
  444988:	10400009 	beqz	v0,4449b0 <compute_proto_keymat+0x684>
  44498c:	00000000 	nop
  444990:	8fc20310 	lw	v0,784(s8)
  444994:	00000000 	nop
  444998:	8c440028 	lw	a0,40(v0)
  44499c:	8f998094 	lw	t9,-32620(gp)
  4449a0:	00000000 	nop
  4449a4:	0320f809 	jalr	t9
  4449a8:	00000000 	nop
  4449ac:	8fdc0010 	lw	gp,16(s8)
  4449b0:	8fd00310 	lw	s0,784(s8)
  4449b4:	8fc402e0 	lw	a0,736(s8)
  4449b8:	8f85802c 	lw	a1,-32724(gp)
  4449bc:	00000000 	nop
  4449c0:	24a5ec58 	addiu	a1,a1,-5032
  4449c4:	8f998084 	lw	t9,-32636(gp)
  4449c8:	00000000 	nop
  4449cc:	0320f809 	jalr	t9
  4449d0:	00000000 	nop
  4449d4:	8fdc0010 	lw	gp,16(s8)
  4449d8:	ae020028 	sw	v0,40(s0)

	for (i = 0;; )
  4449dc:	afc002e4 	sw	zero,740(s8)
	{
	    if (st->st_shared.ptr != NULL)
  4449e0:	8fc20308 	lw	v0,776(s8)
  4449e4:	00000000 	nop
  4449e8:	8c420140 	lw	v0,320(v0)
  4449ec:	00000000 	nop
  4449f0:	1040001b 	beqz	v0,444a60 <compute_proto_keymat+0x734>
  4449f4:	00000000 	nop
	    {
		/* PFS: include the g^xy */
		hmac_update_chunk(&ctx_me, st->st_shared);
  4449f8:	27c40020 	addiu	a0,s8,32
  4449fc:	8fc20308 	lw	v0,776(s8)
  444a00:	00000000 	nop
  444a04:	8c450140 	lw	a1,320(v0)
  444a08:	8fc20308 	lw	v0,776(s8)
  444a0c:	00000000 	nop
  444a10:	8c460144 	lw	a2,324(v0)
  444a14:	8f9983d4 	lw	t9,-31788(gp)
  444a18:	00000000 	nop
  444a1c:	0320f809 	jalr	t9
  444a20:	00000000 	nop
  444a24:	8fdc0010 	lw	gp,16(s8)
  444a28:	00000000 	nop
		hmac_update_chunk(&ctx_peer, st->st_shared);
  444a2c:	27c40180 	addiu	a0,s8,384
  444a30:	8fc20308 	lw	v0,776(s8)
  444a34:	00000000 	nop
  444a38:	8c450140 	lw	a1,320(v0)
  444a3c:	8fc20308 	lw	v0,776(s8)
  444a40:	00000000 	nop
  444a44:	8c460144 	lw	a2,324(v0)
  444a48:	8f9983d4 	lw	t9,-31788(gp)
  444a4c:	00000000 	nop
  444a50:	0320f809 	jalr	t9
  444a54:	00000000 	nop
  444a58:	8fdc0010 	lw	gp,16(s8)
  444a5c:	00000000 	nop
	    }
	    hmac_update(&ctx_me, &protoid, sizeof(protoid));
  444a60:	27c40020 	addiu	a0,s8,32
  444a64:	27c50018 	addiu	a1,s8,24
  444a68:	24060001 	li	a2,1
  444a6c:	8f9983d4 	lw	t9,-31788(gp)
  444a70:	00000000 	nop
  444a74:	0320f809 	jalr	t9
  444a78:	00000000 	nop
  444a7c:	8fdc0010 	lw	gp,16(s8)
  444a80:	00000000 	nop
	    hmac_update(&ctx_peer, &protoid, sizeof(protoid));
  444a84:	27c40180 	addiu	a0,s8,384
  444a88:	27c50018 	addiu	a1,s8,24
  444a8c:	24060001 	li	a2,1
  444a90:	8f9983d4 	lw	t9,-31788(gp)
  444a94:	00000000 	nop
  444a98:	0320f809 	jalr	t9
  444a9c:	00000000 	nop
  444aa0:	8fdc0010 	lw	gp,16(s8)
  444aa4:	00000000 	nop

	    hmac_update(&ctx_me, (u_char *)&pi->our_spi, sizeof(pi->our_spi));
  444aa8:	8fc20310 	lw	v0,784(s8)
  444aac:	00000000 	nop
  444ab0:	2442001c 	addiu	v0,v0,28
  444ab4:	27c40020 	addiu	a0,s8,32
  444ab8:	00402821 	move	a1,v0
  444abc:	24060004 	li	a2,4
  444ac0:	8f9983d4 	lw	t9,-31788(gp)
  444ac4:	00000000 	nop
  444ac8:	0320f809 	jalr	t9
  444acc:	00000000 	nop
  444ad0:	8fdc0010 	lw	gp,16(s8)
  444ad4:	00000000 	nop
	    hmac_update(&ctx_peer, (u_char *)&pi->attrs.spi, sizeof(pi->attrs.spi));
  444ad8:	8fc20310 	lw	v0,784(s8)
  444adc:	00000000 	nop
  444ae0:	24420008 	addiu	v0,v0,8
  444ae4:	27c40180 	addiu	a0,s8,384
  444ae8:	00402821 	move	a1,v0
  444aec:	24060004 	li	a2,4
  444af0:	8f9983d4 	lw	t9,-31788(gp)
  444af4:	00000000 	nop
  444af8:	0320f809 	jalr	t9
  444afc:	00000000 	nop
  444b00:	8fdc0010 	lw	gp,16(s8)
  444b04:	00000000 	nop

	    hmac_update_chunk(&ctx_me, st->st_ni);
  444b08:	27c40020 	addiu	a0,s8,32
  444b0c:	8fc20308 	lw	v0,776(s8)
  444b10:	00000000 	nop
  444b14:	8c4500f8 	lw	a1,248(v0)
  444b18:	8fc20308 	lw	v0,776(s8)
  444b1c:	00000000 	nop
  444b20:	8c4600fc 	lw	a2,252(v0)
  444b24:	8f9983d4 	lw	t9,-31788(gp)
  444b28:	00000000 	nop
  444b2c:	0320f809 	jalr	t9
  444b30:	00000000 	nop
  444b34:	8fdc0010 	lw	gp,16(s8)
  444b38:	00000000 	nop
	    hmac_update_chunk(&ctx_peer, st->st_ni);
  444b3c:	27c40180 	addiu	a0,s8,384
  444b40:	8fc20308 	lw	v0,776(s8)
  444b44:	00000000 	nop
  444b48:	8c4500f8 	lw	a1,248(v0)
  444b4c:	8fc20308 	lw	v0,776(s8)
  444b50:	00000000 	nop
  444b54:	8c4600fc 	lw	a2,252(v0)
  444b58:	8f9983d4 	lw	t9,-31788(gp)
  444b5c:	00000000 	nop
  444b60:	0320f809 	jalr	t9
  444b64:	00000000 	nop
  444b68:	8fdc0010 	lw	gp,16(s8)
  444b6c:	00000000 	nop

	    hmac_update_chunk(&ctx_me, st->st_nr);
  444b70:	27c40020 	addiu	a0,s8,32
  444b74:	8fc20308 	lw	v0,776(s8)
  444b78:	00000000 	nop
  444b7c:	8c450110 	lw	a1,272(v0)
  444b80:	8fc20308 	lw	v0,776(s8)
  444b84:	00000000 	nop
  444b88:	8c460114 	lw	a2,276(v0)
  444b8c:	8f9983d4 	lw	t9,-31788(gp)
  444b90:	00000000 	nop
  444b94:	0320f809 	jalr	t9
  444b98:	00000000 	nop
  444b9c:	8fdc0010 	lw	gp,16(s8)
  444ba0:	00000000 	nop
	    hmac_update_chunk(&ctx_peer, st->st_nr);
  444ba4:	27c40180 	addiu	a0,s8,384
  444ba8:	8fc20308 	lw	v0,776(s8)
  444bac:	00000000 	nop
  444bb0:	8c450110 	lw	a1,272(v0)
  444bb4:	8fc20308 	lw	v0,776(s8)
  444bb8:	00000000 	nop
  444bbc:	8c460114 	lw	a2,276(v0)
  444bc0:	8f9983d4 	lw	t9,-31788(gp)
  444bc4:	00000000 	nop
  444bc8:	0320f809 	jalr	t9
  444bcc:	00000000 	nop
  444bd0:	8fdc0010 	lw	gp,16(s8)
  444bd4:	00000000 	nop

	    hmac_final(pi->our_keymat + i, &ctx_me);
  444bd8:	8fc20310 	lw	v0,784(s8)
  444bdc:	00000000 	nop
  444be0:	8c430024 	lw	v1,36(v0)
  444be4:	8fc202e4 	lw	v0,740(s8)
  444be8:	00000000 	nop
  444bec:	00621021 	addu	v0,v1,v0
  444bf0:	00402021 	move	a0,v0
  444bf4:	27c50020 	addiu	a1,s8,32
  444bf8:	8f998728 	lw	t9,-30936(gp)
  444bfc:	00000000 	nop
  444c00:	0320f809 	jalr	t9
  444c04:	00000000 	nop
  444c08:	8fdc0010 	lw	gp,16(s8)
  444c0c:	00000000 	nop
	    hmac_final(pi->peer_keymat + i, &ctx_peer);
  444c10:	8fc20310 	lw	v0,784(s8)
  444c14:	00000000 	nop
  444c18:	8c430028 	lw	v1,40(v0)
  444c1c:	8fc202e4 	lw	v0,740(s8)
  444c20:	00000000 	nop
  444c24:	00621021 	addu	v0,v1,v0
  444c28:	00402021 	move	a0,v0
  444c2c:	27c50180 	addiu	a1,s8,384
  444c30:	8f998728 	lw	t9,-30936(gp)
  444c34:	00000000 	nop
  444c38:	0320f809 	jalr	t9
  444c3c:	00000000 	nop
  444c40:	8fdc0010 	lw	gp,16(s8)
  444c44:	00000000 	nop

	    i += ctx_me.hmac_digest_size;
  444c48:	8fc302e4 	lw	v1,740(s8)
  444c4c:	8fc20024 	lw	v0,36(s8)
  444c50:	00000000 	nop
  444c54:	00621021 	addu	v0,v1,v0
  444c58:	afc202e4 	sw	v0,740(s8)
	    if (i >= needed_space)
  444c5c:	8fc302e4 	lw	v1,740(s8)
  444c60:	8fc202e0 	lw	v0,736(s8)
  444c64:	00000000 	nop
  444c68:	0062102b 	sltu	v0,v1,v0
  444c6c:	14400003 	bnez	v0,444c7c <compute_proto_keymat+0x950>
  444c70:	00000000 	nop
		break;
  444c74:	10000035 	b	444d4c <compute_proto_keymat+0xa20>
  444c78:	00000000 	nop

	    /* more keying material needed: prepare to go around again */

	    hmac_reinit(&ctx_me);
  444c7c:	27c40020 	addiu	a0,s8,32
  444c80:	8f9984f0 	lw	t9,-31504(gp)
  444c84:	00000000 	nop
  444c88:	0320f809 	jalr	t9
  444c8c:	00000000 	nop
  444c90:	8fdc0010 	lw	gp,16(s8)
  444c94:	00000000 	nop
	    hmac_reinit(&ctx_peer);
  444c98:	27c40180 	addiu	a0,s8,384
  444c9c:	8f9984f0 	lw	t9,-31504(gp)
  444ca0:	00000000 	nop
  444ca4:	0320f809 	jalr	t9
  444ca8:	00000000 	nop
  444cac:	8fdc0010 	lw	gp,16(s8)
  444cb0:	00000000 	nop

	    hmac_update(&ctx_me, pi->our_keymat + i - ctx_me.hmac_digest_size,
  444cb4:	8fc20310 	lw	v0,784(s8)
  444cb8:	00000000 	nop
  444cbc:	8c430024 	lw	v1,36(v0)
  444cc0:	8fc202e4 	lw	v0,740(s8)
  444cc4:	00000000 	nop
  444cc8:	00621821 	addu	v1,v1,v0
  444ccc:	8fc20024 	lw	v0,36(s8)
  444cd0:	00000000 	nop
  444cd4:	00621023 	subu	v0,v1,v0
  444cd8:	27c40020 	addiu	a0,s8,32
  444cdc:	00402821 	move	a1,v0
  444ce0:	8fc60024 	lw	a2,36(s8)
  444ce4:	8f9983d4 	lw	t9,-31788(gp)
  444ce8:	00000000 	nop
  444cec:	0320f809 	jalr	t9
  444cf0:	00000000 	nop
  444cf4:	8fdc0010 	lw	gp,16(s8)
  444cf8:	00000000 	nop
		ctx_me.hmac_digest_size);
	    hmac_update(&ctx_peer, pi->peer_keymat + i - ctx_peer.hmac_digest_size,
  444cfc:	8fc20310 	lw	v0,784(s8)
  444d00:	00000000 	nop
  444d04:	8c430028 	lw	v1,40(v0)
  444d08:	8fc202e4 	lw	v0,740(s8)
  444d0c:	00000000 	nop
  444d10:	00621821 	addu	v1,v1,v0
  444d14:	8fc20184 	lw	v0,388(s8)
  444d18:	00000000 	nop
  444d1c:	00621023 	subu	v0,v1,v0
  444d20:	27c40180 	addiu	a0,s8,384
  444d24:	00402821 	move	a1,v0
  444d28:	8fc60184 	lw	a2,388(s8)
  444d2c:	8f9983d4 	lw	t9,-31788(gp)
  444d30:	00000000 	nop
  444d34:	0320f809 	jalr	t9
  444d38:	00000000 	nop
  444d3c:	8fdc0010 	lw	gp,16(s8)
  444d40:	00000000 	nop
  444d44:	1000ff26 	b	4449e0 <compute_proto_keymat+0x6b4>
  444d48:	00000000 	nop
		ctx_peer.hmac_digest_size);
	}
    }

    DBG(DBG_CRYPT,
  444d4c:	8f8284f8 	lw	v0,-31496(gp)
  444d50:	00000000 	nop
  444d54:	8c420000 	lw	v0,0(v0)
  444d58:	00000000 	nop
  444d5c:	30420002 	andi	v0,v0,0x2
  444d60:	10400020 	beqz	v0,444de4 <compute_proto_keymat+0xab8>
  444d64:	00000000 	nop
  444d68:	8fc20310 	lw	v0,784(s8)
  444d6c:	00000000 	nop
  444d70:	94430020 	lhu	v1,32(v0)
  444d74:	8f84802c 	lw	a0,-32724(gp)
  444d78:	00000000 	nop
  444d7c:	2484ec7c 	addiu	a0,a0,-4996
  444d80:	8fc20310 	lw	v0,784(s8)
  444d84:	00000000 	nop
  444d88:	8c450024 	lw	a1,36(v0)
  444d8c:	00603021 	move	a2,v1
  444d90:	8f9984ec 	lw	t9,-31508(gp)
  444d94:	00000000 	nop
  444d98:	0320f809 	jalr	t9
  444d9c:	00000000 	nop
  444da0:	8fdc0010 	lw	gp,16(s8)
  444da4:	8fc20310 	lw	v0,784(s8)
  444da8:	00000000 	nop
  444dac:	94430020 	lhu	v1,32(v0)
  444db0:	8f84802c 	lw	a0,-32724(gp)
  444db4:	00000000 	nop
  444db8:	2484ec90 	addiu	a0,a0,-4976
  444dbc:	8fc20310 	lw	v0,784(s8)
  444dc0:	00000000 	nop
  444dc4:	8c450028 	lw	a1,40(v0)
  444dc8:	00603021 	move	a2,v1
  444dcc:	8f9984ec 	lw	t9,-31508(gp)
  444dd0:	00000000 	nop
  444dd4:	0320f809 	jalr	t9
  444dd8:	00000000 	nop
  444ddc:	8fdc0010 	lw	gp,16(s8)
  444de0:	00000000 	nop
	DBG_dump("KEYMAT computed:\n", pi->our_keymat, pi->keymat_len);
	DBG_dump("Peer KEYMAT computed:\n", pi->peer_keymat, pi->keymat_len));
}
  444de4:	03c0e821 	move	sp,s8
  444de8:	8fbf0304 	lw	ra,772(sp)
  444dec:	8fbe0300 	lw	s8,768(sp)
  444df0:	8fb002f8 	lw	s0,760(sp)
  444df4:	27bd0308 	addiu	sp,sp,776
  444df8:	03e00008 	jr	ra
  444dfc:	00000000 	nop

00444e00 <compute_keymats>:
  444e00:	3c1c0fbc 	lui	gp,0xfbc
  444e04:	279c7b70 	addiu	gp,gp,31600
  444e08:	0399e021 	addu	gp,gp,t9
  444e0c:	27bdffd8 	addiu	sp,sp,-40
  444e10:	afbc0010 	sw	gp,16(sp)
  444e14:	afbf0020 	sw	ra,32(sp)
  444e18:	afbe001c 	sw	s8,28(sp)
  444e1c:	afbc0018 	sw	gp,24(sp)
  444e20:	03a0f021 	move	s8,sp
  444e24:	afc40028 	sw	a0,40(s8)

static void
compute_keymats(struct state *st)
{
    if (st->st_ah.present)
  444e28:	8fc20028 	lw	v0,40(s8)
  444e2c:	00000000 	nop
  444e30:	8c42003c 	lw	v0,60(v0)
  444e34:	00000000 	nop
  444e38:	1040000f 	beqz	v0,444e78 <compute_keymats+0x78>
  444e3c:	00000000 	nop
	compute_proto_keymat(st, PROTO_IPSEC_AH, &st->st_ah);
  444e40:	8fc20028 	lw	v0,40(s8)
  444e44:	00000000 	nop
  444e48:	2442003c 	addiu	v0,v0,60
  444e4c:	8fc40028 	lw	a0,40(s8)
  444e50:	24050002 	li	a1,2
  444e54:	00403021 	move	a2,v0
  444e58:	8f998034 	lw	t9,-32716(gp)
  444e5c:	00000000 	nop
  444e60:	2739432c 	addiu	t9,t9,17196
  444e64:	00000000 	nop
  444e68:	0320f809 	jalr	t9
  444e6c:	00000000 	nop
  444e70:	8fdc0010 	lw	gp,16(s8)
  444e74:	00000000 	nop
    if (st->st_esp.present)
  444e78:	8fc20028 	lw	v0,40(s8)
  444e7c:	00000000 	nop
  444e80:	8c420068 	lw	v0,104(v0)
  444e84:	00000000 	nop
  444e88:	1040000f 	beqz	v0,444ec8 <compute_keymats+0xc8>
  444e8c:	00000000 	nop
	compute_proto_keymat(st, PROTO_IPSEC_ESP, &st->st_esp);
  444e90:	8fc20028 	lw	v0,40(s8)
  444e94:	00000000 	nop
  444e98:	24420068 	addiu	v0,v0,104
  444e9c:	8fc40028 	lw	a0,40(s8)
  444ea0:	24050003 	li	a1,3
  444ea4:	00403021 	move	a2,v0
  444ea8:	8f998034 	lw	t9,-32716(gp)
  444eac:	00000000 	nop
  444eb0:	2739432c 	addiu	t9,t9,17196
  444eb4:	00000000 	nop
  444eb8:	0320f809 	jalr	t9
  444ebc:	00000000 	nop
  444ec0:	8fdc0010 	lw	gp,16(s8)
  444ec4:	00000000 	nop
}
  444ec8:	03c0e821 	move	sp,s8
  444ecc:	8fbf0020 	lw	ra,32(sp)
  444ed0:	8fbe001c 	lw	s8,28(sp)
  444ed4:	27bd0028 	addiu	sp,sp,40
  444ed8:	03e00008 	jr	ra
  444edc:	00000000 	nop

00444ee0 <main_inI1_outR1>:
  444ee0:	3c1c0fbc 	lui	gp,0xfbc
  444ee4:	279c7a90 	addiu	gp,gp,31376
  444ee8:	0399e021 	addu	gp,gp,t9
  444eec:	27bdff38 	addiu	sp,sp,-200
  444ef0:	afbc0018 	sw	gp,24(sp)
  444ef4:	afbf00c4 	sw	ra,196(sp)
  444ef8:	afbe00c0 	sw	s8,192(sp)
  444efc:	afbc00bc 	sw	gp,188(sp)
  444f00:	afb000b8 	sw	s0,184(sp)
  444f04:	03a0f021 	move	s8,sp
  444f08:	afc400c8 	sw	a0,200(s8)

/* State Transition Functions.
 *
 * The definition of state_microcode_table in demux.c is a good
 * overview of these routines.
 *
 * - Called from process_packet; result handled by complete_state_transition
 * - struct state_microcode member "processor" points to these
 * - these routine definitionss are in state order
 * - these routines must be restartable from any point of error return:
 *   beware of memory allocated before any error.
 * - output HDR is usually emitted by process_packet (if state_microcode
 *   member first_out_payload isn't ISAKMP_NEXT_NONE).
 *
 * The transition functions' functions include:
 * - process and judge payloads
 * - update st_iv (result of decryption is in st_new_iv)
 * - build reply packet
 */

/* Handle a Main Mode Oakley first packet (responder side).
 * HDR;SA --> HDR;SA
 */
stf_status
main_inI1_outR1(struct msg_digest *md)
{
    struct payload_digest *const sa_pd = md->chain[ISAKMP_NEXT_SA];
  444f0c:	8fc200c8 	lw	v0,200(s8)
  444f10:	00000000 	nop
  444f14:	8c4204ac 	lw	v0,1196(v0)
  444f18:	00000000 	nop
  444f1c:	afc20020 	sw	v0,32(s8)
    struct state *st;
    struct connection *c = find_host_connection(&md->iface->addr, pluto_port
  444f20:	8fc200c8 	lw	v0,200(s8)
  444f24:	00000000 	nop
  444f28:	8c42000c 	lw	v0,12(v0)
  444f2c:	00000000 	nop
  444f30:	24440008 	addiu	a0,v0,8
  444f34:	8f8584b0 	lw	a1,-31568(gp)
  444f38:	00000000 	nop
  444f3c:	94a50000 	lhu	a1,0(a1)
  444f40:	8fc200c8 	lw	v0,200(s8)
  444f44:	00000000 	nop
  444f48:	24430010 	addiu	v1,v0,16
  444f4c:	8fc200c8 	lw	v0,200(s8)
  444f50:	00000000 	nop
  444f54:	9442002c 	lhu	v0,44(v0)
  444f58:	00603021 	move	a2,v1
  444f5c:	00403821 	move	a3,v0
  444f60:	8f998098 	lw	t9,-32616(gp)
  444f64:	00000000 	nop
  444f68:	0320f809 	jalr	t9
  444f6c:	00000000 	nop
  444f70:	8fdc0018 	lw	gp,24(s8)
  444f74:	afc20028 	sw	v0,40(s8)
	, &md->sender, md->sender_port);

    pb_stream r_sa_pbs;

    if (c == NULL)
  444f78:	8fc20028 	lw	v0,40(s8)
  444f7c:	00000000 	nop
  444f80:	14400052 	bnez	v0,4450cc <main_inI1_outR1+0x1ec>
  444f84:	00000000 	nop
    {
	/* see if a wildcarded connection can be found */
	c = find_host_connection(&md->iface->addr, pluto_port
  444f88:	8fc200c8 	lw	v0,200(s8)
  444f8c:	00000000 	nop
  444f90:	8c42000c 	lw	v0,12(v0)
  444f94:	00000000 	nop
  444f98:	24430008 	addiu	v1,v0,8
  444f9c:	8f8584b0 	lw	a1,-31568(gp)
  444fa0:	00000000 	nop
  444fa4:	94a50000 	lhu	a1,0(a1)
  444fa8:	8fc200c8 	lw	v0,200(s8)
  444fac:	00000000 	nop
  444fb0:	9442002c 	lhu	v0,44(v0)
  444fb4:	00602021 	move	a0,v1
  444fb8:	00003021 	move	a2,zero
  444fbc:	00403821 	move	a3,v0
  444fc0:	8f998098 	lw	t9,-32616(gp)
  444fc4:	00000000 	nop
  444fc8:	0320f809 	jalr	t9
  444fcc:	00000000 	nop
  444fd0:	8fdc0018 	lw	gp,24(s8)
  444fd4:	afc20028 	sw	v0,40(s8)
	    , (ip_address*)NULL, md->sender_port);
	if (c != NULL)
  444fd8:	8fc20028 	lw	v0,40(s8)
  444fdc:	00000000 	nop
  444fe0:	10400014 	beqz	v0,445034 <main_inI1_outR1+0x154>
  444fe4:	00000000 	nop
	{
	    /* Create a temporary connection that is a copy of this one.
	     * His ID isn't declared yet.
	     */
	    c = rw_instantiate(c, &md->sender,
  444fe8:	8fc200c8 	lw	v0,200(s8)
  444fec:	00000000 	nop
  444ff0:	24430010 	addiu	v1,v0,16
  444ff4:	8fc200c8 	lw	v0,200(s8)
  444ff8:	00000000 	nop
  444ffc:	9442002c 	lhu	v0,44(v0)
  445000:	afa00010 	sw	zero,16(sp)
  445004:	8fc40028 	lw	a0,40(s8)
  445008:	00602821 	move	a1,v1
  44500c:	00403021 	move	a2,v0
  445010:	00003821 	move	a3,zero
  445014:	8f998414 	lw	t9,-31724(gp)
  445018:	00000000 	nop
  44501c:	0320f809 	jalr	t9
  445020:	00000000 	nop
  445024:	8fdc0018 	lw	gp,24(s8)
  445028:	afc20028 	sw	v0,40(s8)
  44502c:	10000027 	b	4450cc <main_inI1_outR1+0x1ec>
  445030:	00000000 	nop
#ifdef NAT_TRAVERSAL
			md->sender_port,
#endif
#ifdef VIRTUAL_IP
			NULL,
#endif
			NULL);
	}
	else
	{
	    loglog(RC_LOG_SERIOUS, "initial Main Mode message received on %s:%u"
  445034:	8fc200c8 	lw	v0,200(s8)
  445038:	00000000 	nop
  44503c:	8c42000c 	lw	v0,12(v0)
  445040:	00000000 	nop
  445044:	24420008 	addiu	v0,v0,8
  445048:	00402021 	move	a0,v0
  44504c:	8f998100 	lw	t9,-32512(gp)
  445050:	00000000 	nop
  445054:	0320f809 	jalr	t9
  445058:	00000000 	nop
  44505c:	8fdc0018 	lw	gp,24(s8)
  445060:	00408021 	move	s0,v0
  445064:	8fc200c8 	lw	v0,200(s8)
  445068:	00000000 	nop
  44506c:	8c42000c 	lw	v0,12(v0)
  445070:	00000000 	nop
  445074:	24420008 	addiu	v0,v0,8
  445078:	00402021 	move	a0,v0
  44507c:	8f998a60 	lw	t9,-30112(gp)
  445080:	00000000 	nop
  445084:	0320f809 	jalr	t9
  445088:	00000000 	nop
  44508c:	8fdc0018 	lw	gp,24(s8)
  445090:	24040003 	li	a0,3
  445094:	8f85802c 	lw	a1,-32724(gp)
  445098:	00000000 	nop
  44509c:	24a5eca8 	addiu	a1,a1,-4952
  4450a0:	02003021 	move	a2,s0
  4450a4:	00403821 	move	a3,v0
  4450a8:	8f998c48 	lw	t9,-29624(gp)
  4450ac:	00000000 	nop
  4450b0:	0320f809 	jalr	t9
  4450b4:	00000000 	nop
  4450b8:	8fdc0018 	lw	gp,24(s8)
  4450bc:	00000000 	nop
		" but no connection has been authorized"
		, ip_str(&md->iface->addr), ntohs(portof(&md->iface->addr)));
	    /* XXX notification is in order! */
	    return STF_IGNORE;
  4450c0:	00001021 	move	v0,zero
  4450c4:	10000249 	b	4459ec <main_inI1_outR1+0xb0c>
  4450c8:	00000000 	nop
	}
    }

    /* Set up state */
    md->st = st = new_state();
  4450cc:	8fd000c8 	lw	s0,200(s8)
  4450d0:	8f9987b4 	lw	t9,-30796(gp)
  4450d4:	00000000 	nop
  4450d8:	0320f809 	jalr	t9
  4450dc:	00000000 	nop
  4450e0:	8fdc0018 	lw	gp,24(s8)
  4450e4:	afc20024 	sw	v0,36(s8)
  4450e8:	8fc20024 	lw	v0,36(s8)
  4450ec:	00000000 	nop
  4450f0:	ae020098 	sw	v0,152(s0)
    passert(st->st_oakley.xauth == 0);
  4450f4:	8fc20024 	lw	v0,36(s8)
  4450f8:	00000000 	nop
  4450fc:	9442002e 	lhu	v0,46(v0)
  445100:	00000000 	nop
  445104:	1040000e 	beqz	v0,445140 <main_inI1_outR1+0x260>
  445108:	00000000 	nop
  44510c:	8f84802c 	lw	a0,-32724(gp)
  445110:	00000000 	nop
  445114:	2484ecfc 	addiu	a0,a0,-4868
  445118:	8f85802c 	lw	a1,-32724(gp)
  44511c:	00000000 	nop
  445120:	24a5d59c 	addiu	a1,a1,-10852
  445124:	24060c29 	li	a2,3113
  445128:	8f998bb8 	lw	t9,-29768(gp)
  44512c:	00000000 	nop
  445130:	0320f809 	jalr	t9
  445134:	00000000 	nop
  445138:	8fdc0018 	lw	gp,24(s8)
  44513c:	00000000 	nop

    st->st_connection = c;
  445140:	8fc30028 	lw	v1,40(s8)
  445144:	8fc20024 	lw	v0,36(s8)
  445148:	00000000 	nop
  44514c:	ac43000c 	sw	v1,12(v0)
    set_cur_state(st);	/* (caller will reset cur_state) */
  445150:	8fc20024 	lw	v0,36(s8)
  445154:	8f8187f8 	lw	at,-30728(gp)
  445158:	00000000 	nop
  44515c:	ac220000 	sw	v0,0(at)
  445160:	8fc20024 	lw	v0,36(s8)
  445164:	00000000 	nop
  445168:	8c44000c 	lw	a0,12(v0)
  44516c:	8f998be4 	lw	t9,-29724(gp)
  445170:	00000000 	nop
  445174:	0320f809 	jalr	t9
  445178:	00000000 	nop
  44517c:	8fdc0018 	lw	gp,24(s8)
  445180:	00000000 	nop
    st->st_try = 0;	/* not our job to try again from start */
  445184:	8fc20024 	lw	v0,36(s8)
  445188:	00000000 	nop
  44518c:	ac400154 	sw	zero,340(v0)
    st->st_policy = c->policy & ~POLICY_IPSEC_MASK;	/* only as accurate as connection */
  445190:	8fc20028 	lw	v0,40(s8)
  445194:	00000000 	nop
  445198:	8c440008 	lw	a0,8(v0)
  44519c:	8c45000c 	lw	a1,12(v0)
  4451a0:	2402ffff 	li	v0,-1
  4451a4:	2403ff03 	li	v1,-253
  4451a8:	00821024 	and	v0,a0,v0
  4451ac:	00a31824 	and	v1,a1,v1
  4451b0:	8fc40024 	lw	a0,36(s8)
  4451b4:	00000000 	nop
  4451b8:	ac8200d8 	sw	v0,216(a0)
  4451bc:	ac8300dc 	sw	v1,220(a0)

    memcpy(st->st_icookie, md->hdr.isa_icookie, COOKIE_SIZE);
  4451c0:	8fc20024 	lw	v0,36(s8)
  4451c4:	00000000 	nop
  4451c8:	244300f0 	addiu	v1,v0,240
  4451cc:	8fc200c8 	lw	v0,200(s8)
  4451d0:	00000000 	nop
  4451d4:	24420070 	addiu	v0,v0,112
  4451d8:	00602021 	move	a0,v1
  4451dc:	00402821 	move	a1,v0
  4451e0:	24060008 	li	a2,8
  4451e4:	8f998a30 	lw	t9,-30160(gp)
  4451e8:	00000000 	nop
  4451ec:	0320f809 	jalr	t9
  4451f0:	00000000 	nop
  4451f4:	8fdc0018 	lw	gp,24(s8)
  4451f8:	00000000 	nop
    get_cookie(FALSE, st->st_rcookie, COOKIE_SIZE, &md->sender);
  4451fc:	8fc20024 	lw	v0,36(s8)
  445200:	00000000 	nop
  445204:	24430108 	addiu	v1,v0,264
  445208:	8fc200c8 	lw	v0,200(s8)
  44520c:	00000000 	nop
  445210:	24420010 	addiu	v0,v0,16
  445214:	00002021 	move	a0,zero
  445218:	00602821 	move	a1,v1
  44521c:	24060008 	li	a2,8
  445220:	00403821 	move	a3,v0
  445224:	8f998574 	lw	t9,-31372(gp)
  445228:	00000000 	nop
  44522c:	0320f809 	jalr	t9
  445230:	00000000 	nop
  445234:	8fdc0018 	lw	gp,24(s8)
  445238:	00000000 	nop

    insert_state(st);	/* needs cookies, connection, and msgid (0) */
  44523c:	8fc40024 	lw	a0,36(s8)
  445240:	8f9983a4 	lw	t9,-31836(gp)
  445244:	00000000 	nop
  445248:	0320f809 	jalr	t9
  44524c:	00000000 	nop
  445250:	8fdc0018 	lw	gp,24(s8)
  445254:	00000000 	nop

    st->st_doi = ISAKMP_DOI_IPSEC;
  445258:	24030001 	li	v1,1
  44525c:	8fc20024 	lw	v0,36(s8)
  445260:	00000000 	nop
  445264:	ac4300cc 	sw	v1,204(v0)
    st->st_situation = SIT_IDENTITY_ONLY; /* We only support this */
  445268:	8fc20024 	lw	v0,36(s8)
  44526c:	00000000 	nop
  445270:	ac4300d0 	sw	v1,208(v0)

    /* copy the quirks we might have accumulated */
    st->quirks = md->quirks;
  445274:	8fc200c8 	lw	v0,200(s8)
  445278:	00000000 	nop
  44527c:	8c4304f0 	lw	v1,1264(v0)
  445280:	8fc20024 	lw	v0,36(s8)
  445284:	00000000 	nop
  445288:	ac43029c 	sw	v1,668(v0)

    if ((c->kind == CK_INSTANCE) && (c->that.host_port != pluto_port))
  44528c:	8fc20028 	lw	v0,40(s8)
  445290:	00000000 	nop
  445294:	8c430194 	lw	v1,404(v0)
  445298:	24020002 	li	v0,2
  44529c:	14620023 	bne	v1,v0,44532c <main_inI1_outR1+0x44c>
  4452a0:	00000000 	nop
  4452a4:	8fc20028 	lw	v0,40(s8)
  4452a8:	00000000 	nop
  4452ac:	94430178 	lhu	v1,376(v0)
  4452b0:	8f8284b0 	lw	v0,-31568(gp)
  4452b4:	00000000 	nop
  4452b8:	94420000 	lhu	v0,0(v0)
  4452bc:	00000000 	nop
  4452c0:	1062001a 	beq	v1,v0,44532c <main_inI1_outR1+0x44c>
  4452c4:	00000000 	nop
    {
	plog("responding to Main Mode from unknown peer %s:%u"
  4452c8:	8fc20028 	lw	v0,40(s8)
  4452cc:	00000000 	nop
  4452d0:	24420108 	addiu	v0,v0,264
  4452d4:	00402021 	move	a0,v0
  4452d8:	8f998100 	lw	t9,-32512(gp)
  4452dc:	00000000 	nop
  4452e0:	0320f809 	jalr	t9
  4452e4:	00000000 	nop
  4452e8:	8fdc0018 	lw	gp,24(s8)
  4452ec:	00401821 	move	v1,v0
  4452f0:	8fc20028 	lw	v0,40(s8)
  4452f4:	00000000 	nop
  4452f8:	94420178 	lhu	v0,376(v0)
  4452fc:	8f84802c 	lw	a0,-32724(gp)
  445300:	00000000 	nop
  445304:	2484ed18 	addiu	a0,a0,-4840
  445308:	00602821 	move	a1,v1
  44530c:	00403021 	move	a2,v0
  445310:	8f998abc 	lw	t9,-30020(gp)
  445314:	00000000 	nop
  445318:	0320f809 	jalr	t9
  44531c:	00000000 	nop
  445320:	8fdc0018 	lw	gp,24(s8)
  445324:	10000025 	b	4453bc <main_inI1_outR1+0x4dc>
  445328:	00000000 	nop
	    , ip_str(&c->that.host_addr), c->that.host_port);
    }
    else if (c->kind == CK_INSTANCE)
  44532c:	8fc20028 	lw	v0,40(s8)
  445330:	00000000 	nop
  445334:	8c430194 	lw	v1,404(v0)
  445338:	24020002 	li	v0,2
  44533c:	14620016 	bne	v1,v0,445398 <main_inI1_outR1+0x4b8>
  445340:	00000000 	nop
    {
	plog("responding to Main Mode from unknown peer %s"
  445344:	8fc20028 	lw	v0,40(s8)
  445348:	00000000 	nop
  44534c:	24420108 	addiu	v0,v0,264
  445350:	00402021 	move	a0,v0
  445354:	8f998100 	lw	t9,-32512(gp)
  445358:	00000000 	nop
  44535c:	0320f809 	jalr	t9
  445360:	00000000 	nop
  445364:	8fdc0018 	lw	gp,24(s8)
  445368:	00000000 	nop
  44536c:	8f84802c 	lw	a0,-32724(gp)
  445370:	00000000 	nop
  445374:	2484ed48 	addiu	a0,a0,-4792
  445378:	00402821 	move	a1,v0
  44537c:	8f998abc 	lw	t9,-30020(gp)
  445380:	00000000 	nop
  445384:	0320f809 	jalr	t9
  445388:	00000000 	nop
  44538c:	8fdc0018 	lw	gp,24(s8)
  445390:	1000000a 	b	4453bc <main_inI1_outR1+0x4dc>
  445394:	00000000 	nop
	    , ip_str(&c->that.host_addr));
    }
    else
    {
	plog("responding to Main Mode");
  445398:	8f84802c 	lw	a0,-32724(gp)
  44539c:	00000000 	nop
  4453a0:	2484ed78 	addiu	a0,a0,-4744
  4453a4:	8f998abc 	lw	t9,-30020(gp)
  4453a8:	00000000 	nop
  4453ac:	0320f809 	jalr	t9
  4453b0:	00000000 	nop
  4453b4:	8fdc0018 	lw	gp,24(s8)
  4453b8:	00000000 	nop
    }

    /* parse_isakmp_sa also spits out a winning SA into our reply,
     * so we have to build our md->reply and emit HDR before calling it.
     */

    /* HDR out.
     * We can't leave this to comm_handle() because we must
     * fill in the cookie.
     */
    {
	struct isakmp_hdr r_hdr = md->hdr;
  4453bc:	8fc300c8 	lw	v1,200(s8)
  4453c0:	00000000 	nop
  4453c4:	8c620070 	lw	v0,112(v1)
  4453c8:	00000000 	nop
  4453cc:	afc20050 	sw	v0,80(s8)
  4453d0:	8c620074 	lw	v0,116(v1)
  4453d4:	00000000 	nop
  4453d8:	afc20054 	sw	v0,84(s8)
  4453dc:	8c620078 	lw	v0,120(v1)
  4453e0:	00000000 	nop
  4453e4:	afc20058 	sw	v0,88(s8)
  4453e8:	8c62007c 	lw	v0,124(v1)
  4453ec:	00000000 	nop
  4453f0:	afc2005c 	sw	v0,92(s8)
  4453f4:	8c620080 	lw	v0,128(v1)
  4453f8:	00000000 	nop
  4453fc:	afc20060 	sw	v0,96(s8)
  445400:	8c620084 	lw	v0,132(v1)
  445404:	00000000 	nop
  445408:	afc20064 	sw	v0,100(s8)
  44540c:	8c620088 	lw	v0,136(v1)
  445410:	00000000 	nop
  445414:	afc20068 	sw	v0,104(s8)

	r_hdr.isa_flags &= ~ISAKMP_FLAG_COMMIT;	/* we won't ever turn on this bit */
  445418:	93c30063 	lbu	v1,99(s8)
  44541c:	2402fffd 	li	v0,-3
  445420:	00621024 	and	v0,v1,v0
  445424:	a3c20063 	sb	v0,99(s8)
	memcpy(r_hdr.isa_rcookie, st->st_rcookie, COOKIE_SIZE);
  445428:	27c20050 	addiu	v0,s8,80
  44542c:	24430008 	addiu	v1,v0,8
  445430:	8fc20024 	lw	v0,36(s8)
  445434:	00000000 	nop
  445438:	24420108 	addiu	v0,v0,264
  44543c:	00602021 	move	a0,v1
  445440:	00402821 	move	a1,v0
  445444:	24060008 	li	a2,8
  445448:	8f998a30 	lw	t9,-30160(gp)
  44544c:	00000000 	nop
  445450:	0320f809 	jalr	t9
  445454:	00000000 	nop
  445458:	8fdc0018 	lw	gp,24(s8)
  44545c:	00000000 	nop
	r_hdr.isa_np = ISAKMP_NEXT_SA;
  445460:	24020001 	li	v0,1
  445464:	a3c20060 	sb	v0,96(s8)
	if (!out_struct(&r_hdr, &isakmp_hdr_desc, &md->reply, &md->rbody))
  445468:	8fc200c8 	lw	v0,200(s8)
  44546c:	00000000 	nop
  445470:	2443009c 	addiu	v1,v0,156
  445474:	8fc200c8 	lw	v0,200(s8)
  445478:	00000000 	nop
  44547c:	244200bc 	addiu	v0,v0,188
  445480:	27c40050 	addiu	a0,s8,80
  445484:	8f858688 	lw	a1,-31096(gp)
  445488:	00603021 	move	a2,v1
  44548c:	00403821 	move	a3,v0
  445490:	8f998ba0 	lw	t9,-29792(gp)
  445494:	00000000 	nop
  445498:	0320f809 	jalr	t9
  44549c:	00000000 	nop
  4454a0:	8fdc0018 	lw	gp,24(s8)
  4454a4:	14400004 	bnez	v0,4454b8 <main_inI1_outR1+0x5d8>
  4454a8:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  4454ac:	24020003 	li	v0,3
  4454b0:	1000014e 	b	4459ec <main_inI1_outR1+0xb0c>
  4454b4:	00000000 	nop
    }

    /* start of SA out */
    {
	struct isakmp_sa r_sa = sa_pd->payload.sa;
  4454b8:	8fc30020 	lw	v1,32(s8)
  4454bc:	00000000 	nop
  4454c0:	8c620020 	lw	v0,32(v1)
  4454c4:	00000000 	nop
  4454c8:	afc20070 	sw	v0,112(s8)
  4454cc:	8c620024 	lw	v0,36(v1)
  4454d0:	00000000 	nop
  4454d4:	afc20074 	sw	v0,116(s8)

	/* if we  use an ID_KEY_ID as own ID, we assume a
	 * PGPcert peer and have to send the Vendor ID
	 *  ++++ not sure, if this is an interop problem ++++++
	 */
	if(!(c->policy & POLICY_XAUTH) && c->this.id.kind != ID_KEY_ID)
  4454d8:	8fc20028 	lw	v0,40(s8)
  4454dc:	00000000 	nop
  4454e0:	8c440008 	lw	a0,8(v0)
  4454e4:	8c45000c 	lw	a1,12(v0)
  4454e8:	24020000 	li	v0,0
  4454ec:	24032000 	li	v1,8192
  4454f0:	00822024 	and	a0,a0,v0
  4454f4:	00a32824 	and	a1,a1,v1
  4454f8:	00801021 	move	v0,a0
  4454fc:	00451025 	or	v0,v0,a1
  445500:	1440000a 	bnez	v0,44552c <main_inI1_outR1+0x64c>
  445504:	00000000 	nop
  445508:	8fc20028 	lw	v0,40(s8)
  44550c:	00000000 	nop
  445510:	8c430030 	lw	v1,48(v0)
  445514:	2402000b 	li	v0,11
  445518:	10620004 	beq	v1,v0,44552c <main_inI1_outR1+0x64c>
  44551c:	00000000 	nop
		r_sa.isasa_np = ISAKMP_NEXT_NONE;
  445520:	a3c00070 	sb	zero,112(s8)
  445524:	10000003 	b	445534 <main_inI1_outR1+0x654>
  445528:	00000000 	nop
	else
		r_sa.isasa_np = ISAKMP_NEXT_VID;
  44552c:	2402000d 	li	v0,13
  445530:	a3c20070 	sb	v0,112(s8)

	if (!out_struct(&r_sa, &isakmp_sa_desc, &md->rbody, &r_sa_pbs))
  445534:	8fc200c8 	lw	v0,200(s8)
  445538:	00000000 	nop
  44553c:	244200bc 	addiu	v0,v0,188
  445540:	27c40070 	addiu	a0,s8,112
  445544:	8f858594 	lw	a1,-31340(gp)
  445548:	00403021 	move	a2,v0
  44554c:	27c70030 	addiu	a3,s8,48
  445550:	8f998ba0 	lw	t9,-29792(gp)
  445554:	00000000 	nop
  445558:	0320f809 	jalr	t9
  44555c:	00000000 	nop
  445560:	8fdc0018 	lw	gp,24(s8)
  445564:	14400004 	bnez	v0,445578 <main_inI1_outR1+0x698>
  445568:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  44556c:	24020003 	li	v0,3
  445570:	1000011e 	b	4459ec <main_inI1_outR1+0xb0c>
  445574:	00000000 	nop
    }

    /* SA body in and out */
    RETURN_STF_FAILURE(parse_isakmp_sa_body(&sa_pd->pbs, &sa_pd->payload.sa, &r_sa_pbs
  445578:	8fc20020 	lw	v0,32(s8)
  44557c:	00000000 	nop
  445580:	24430020 	addiu	v1,v0,32
  445584:	8fc20024 	lw	v0,36(s8)
  445588:	00000000 	nop
  44558c:	afa20010 	sw	v0,16(sp)
  445590:	8fc40020 	lw	a0,32(s8)
  445594:	00602821 	move	a1,v1
  445598:	27c60030 	addiu	a2,s8,48
  44559c:	00003821 	move	a3,zero
  4455a0:	8f9985c0 	lw	t9,-31296(gp)
  4455a4:	00000000 	nop
  4455a8:	0320f809 	jalr	t9
  4455ac:	00000000 	nop
  4455b0:	8fdc0018 	lw	gp,24(s8)
  4455b4:	afc20078 	sw	v0,120(s8)
  4455b8:	8fc20078 	lw	v0,120(s8)
  4455bc:	00000000 	nop
  4455c0:	10400006 	beqz	v0,4455dc <main_inI1_outR1+0x6fc>
  4455c4:	00000000 	nop
  4455c8:	8fc20078 	lw	v0,120(s8)
  4455cc:	00000000 	nop
  4455d0:	24420004 	addiu	v0,v0,4
  4455d4:	10000105 	b	4459ec <main_inI1_outR1+0xb0c>
  4455d8:	00000000 	nop
	    , FALSE, st));

    if (c->this.id.kind == ID_KEY_ID)
  4455dc:	8fc20028 	lw	v0,40(s8)
  4455e0:	00000000 	nop
  4455e4:	8c430030 	lw	v1,48(v0)
  4455e8:	2402000b 	li	v0,11
  4455ec:	1462002d 	bne	v1,v0,4456a4 <main_inI1_outR1+0x7c4>
  4455f0:	00000000 	nop
    {
	    int next = c->policy & POLICY_XAUTH ? ISAKMP_NEXT_VID : ISAKMP_NEXT_NONE;
  4455f4:	8fc20028 	lw	v0,40(s8)
  4455f8:	00000000 	nop
  4455fc:	8c440008 	lw	a0,8(v0)
  445600:	8c45000c 	lw	a1,12(v0)
  445604:	24020000 	li	v0,0
  445608:	24032000 	li	v1,8192
  44560c:	00822024 	and	a0,a0,v0
  445610:	00a32824 	and	a1,a1,v1
  445614:	00801021 	move	v0,a0
  445618:	00451025 	or	v0,v0,a1
  44561c:	10400005 	beqz	v0,445634 <main_inI1_outR1+0x754>
  445620:	00000000 	nop
  445624:	2402000d 	li	v0,13
  445628:	afc200b0 	sw	v0,176(s8)
  44562c:	10000002 	b	445638 <main_inI1_outR1+0x758>
  445630:	00000000 	nop
  445634:	afc000b0 	sw	zero,176(s8)
  445638:	8fc200b0 	lw	v0,176(s8)
  44563c:	00000000 	nop
  445640:	afc20078 	sw	v0,120(s8)
	    if (!out_generic_raw(next, &isakmp_vendor_id_desc, &md->rbody
				 , pgp_vid, sizeof(pgp_vid)-1, "V_ID"))
  445644:	93c3007b 	lbu	v1,123(s8)
  445648:	8fc200c8 	lw	v0,200(s8)
  44564c:	00000000 	nop
  445650:	244600bc 	addiu	a2,v0,188
  445654:	2402000c 	li	v0,12
  445658:	afa20010 	sw	v0,16(sp)
  44565c:	8f82802c 	lw	v0,-32724(gp)
  445660:	00000000 	nop
  445664:	2442dc4c 	addiu	v0,v0,-9140
  445668:	00000000 	nop
  44566c:	afa20014 	sw	v0,20(sp)
  445670:	00602021 	move	a0,v1
  445674:	8f858b0c 	lw	a1,-29940(gp)
  445678:	8f878374 	lw	a3,-31884(gp)
  44567c:	8f99841c 	lw	t9,-31716(gp)
  445680:	00000000 	nop
  445684:	0320f809 	jalr	t9
  445688:	00000000 	nop
  44568c:	8fdc0018 	lw	gp,24(s8)
  445690:	14400004 	bnez	v0,4456a4 <main_inI1_outR1+0x7c4>
  445694:	00000000 	nop
    		 return STF_INTERNAL_ERROR;
  445698:	24020003 	li	v0,3
  44569c:	100000d3 	b	4459ec <main_inI1_outR1+0xb0c>
  4456a0:	00000000 	nop
    }

    /* If XAUTH is required, insert here Vendor ID */
    if(c->policy & POLICY_XAUTH)
  4456a4:	8fc20028 	lw	v0,40(s8)
  4456a8:	00000000 	nop
  4456ac:	8c440008 	lw	a0,8(v0)
  4456b0:	8c45000c 	lw	a1,12(v0)
  4456b4:	24020000 	li	v0,0
  4456b8:	24032000 	li	v1,8192
  4456bc:	00822024 	and	a0,a0,v0
  4456c0:	00a32824 	and	a1,a1,v1
  4456c4:	00801021 	move	v0,a0
  4456c8:	00451025 	or	v0,v0,a1
  4456cc:	1040002c 	beqz	v0,445780 <main_inI1_outR1+0x8a0>
  4456d0:	00000000 	nop
    {	
	    struct isakmp_generic r_vid;
	    pb_stream 	r_vid_pbs;

	    /* as per ike-xauth, Sec 4.0 */
	    r_vid.isag_np = ISAKMP_NEXT_NONE; 
  4456d4:	a3c00070 	sb	zero,112(s8)

	    if (!out_struct(&r_vid, &isakmp_vendor_id_desc, &md->rbody, &r_vid_pbs))
  4456d8:	8fc200c8 	lw	v0,200(s8)
  4456dc:	00000000 	nop
  4456e0:	244200bc 	addiu	v0,v0,188
  4456e4:	27c40070 	addiu	a0,s8,112
  4456e8:	8f858b0c 	lw	a1,-29940(gp)
  4456ec:	00403021 	move	a2,v0
  4456f0:	27c70080 	addiu	a3,s8,128
  4456f4:	8f998ba0 	lw	t9,-29792(gp)
  4456f8:	00000000 	nop
  4456fc:	0320f809 	jalr	t9
  445700:	00000000 	nop
  445704:	8fdc0018 	lw	gp,24(s8)
  445708:	14400004 	bnez	v0,44571c <main_inI1_outR1+0x83c>
  44570c:	00000000 	nop
		    return STF_INTERNAL_ERROR;
  445710:	24020003 	li	v0,3
  445714:	100000b5 	b	4459ec <main_inI1_outR1+0xb0c>
  445718:	00000000 	nop
	    if (!out_raw(XAUTH_Vendor_ID, XAUTH_Vendor_ID_len,  &r_vid_pbs, "XAUTH ViD"))
  44571c:	8f84802c 	lw	a0,-32724(gp)
  445720:	00000000 	nop
  445724:	2484ed90 	addiu	a0,a0,-4720
  445728:	24050008 	li	a1,8
  44572c:	27c60080 	addiu	a2,s8,128
  445730:	8f87802c 	lw	a3,-32724(gp)
  445734:	00000000 	nop
  445738:	24e7ed9c 	addiu	a3,a3,-4708
  44573c:	8f998308 	lw	t9,-31992(gp)
  445740:	00000000 	nop
  445744:	0320f809 	jalr	t9
  445748:	00000000 	nop
  44574c:	8fdc0018 	lw	gp,24(s8)
  445750:	14400004 	bnez	v0,445764 <main_inI1_outR1+0x884>
  445754:	00000000 	nop
		    return STF_INTERNAL_ERROR;
  445758:	24020003 	li	v0,3
  44575c:	100000a3 	b	4459ec <main_inI1_outR1+0xb0c>
  445760:	00000000 	nop
	    close_output_pbs(&r_vid_pbs);
  445764:	27c40080 	addiu	a0,s8,128
  445768:	8f998228 	lw	t9,-32216(gp)
  44576c:	00000000 	nop
  445770:	0320f809 	jalr	t9
  445774:	00000000 	nop
  445778:	8fdc0018 	lw	gp,24(s8)
  44577c:	00000000 	nop
    }

    /* Announce our ability to do NAT-T if enabled */
    if (md->nat_traversal_vid && nat_traversal_enabled) {
  445780:	8fc200c8 	lw	v0,200(s8)
  445784:	00000000 	nop
  445788:	944204ec 	lhu	v0,1260(v0)
  44578c:	00000000 	nop
  445790:	1040002c 	beqz	v0,445844 <main_inI1_outR1+0x964>
  445794:	00000000 	nop
  445798:	8f82837c 	lw	v0,-31876(gp)
  44579c:	00000000 	nop
  4457a0:	8c420000 	lw	v0,0(v0)
  4457a4:	00000000 	nop
  4457a8:	10400026 	beqz	v0,445844 <main_inI1_outR1+0x964>
  4457ac:	00000000 	nop
	/* reply if NAT-Traversal draft is supported */
	st->nat_traversal = nat_traversal_vid_to_method(md->nat_traversal_vid);
  4457b0:	8fd00024 	lw	s0,36(s8)
  4457b4:	8fc200c8 	lw	v0,200(s8)
  4457b8:	00000000 	nop
  4457bc:	944204ec 	lhu	v0,1260(v0)
  4457c0:	00000000 	nop
  4457c4:	00402021 	move	a0,v0
  4457c8:	8f9988dc 	lw	t9,-30500(gp)
  4457cc:	00000000 	nop
  4457d0:	0320f809 	jalr	t9
  4457d4:	00000000 	nop
  4457d8:	8fdc0018 	lw	gp,24(s8)
  4457dc:	ae020264 	sw	v0,612(s0)
	if ((st->nat_traversal) && (!out_vendorid(ISAKMP_NEXT_NONE,
	    &md->rbody, md->nat_traversal_vid))) {
  4457e0:	8fc20024 	lw	v0,36(s8)
  4457e4:	00000000 	nop
  4457e8:	8c420264 	lw	v0,612(v0)
  4457ec:	00000000 	nop
  4457f0:	10400014 	beqz	v0,445844 <main_inI1_outR1+0x964>
  4457f4:	00000000 	nop
  4457f8:	8fc200c8 	lw	v0,200(s8)
  4457fc:	00000000 	nop
  445800:	244300bc 	addiu	v1,v0,188
  445804:	8fc200c8 	lw	v0,200(s8)
  445808:	00000000 	nop
  44580c:	944204ec 	lhu	v0,1260(v0)
  445810:	00002021 	move	a0,zero
  445814:	00602821 	move	a1,v1
  445818:	00403021 	move	a2,v0
  44581c:	8f998474 	lw	t9,-31628(gp)
  445820:	00000000 	nop
  445824:	0320f809 	jalr	t9
  445828:	00000000 	nop
  44582c:	8fdc0018 	lw	gp,24(s8)
  445830:	14400004 	bnez	v0,445844 <main_inI1_outR1+0x964>
  445834:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  445838:	24020003 	li	v0,3
  44583c:	1000006b 	b	4459ec <main_inI1_outR1+0xb0c>
  445840:	00000000 	nop
	}
    }

#ifdef DPD
    /* Announce our ability to do Dead Peer Detection to the peer
	if we have it enabled on this conn */
    if(st->st_connection->dpd_delay && st->st_connection->dpd_timeout) {
  445844:	8fc20024 	lw	v0,36(s8)
  445848:	00000000 	nop
  44584c:	8c42000c 	lw	v0,12(v0)
  445850:	00000000 	nop
  445854:	8c420024 	lw	v0,36(v0)
  445858:	00000000 	nop
  44585c:	10400030 	beqz	v0,445920 <main_inI1_outR1+0xa40>
  445860:	00000000 	nop
  445864:	8fc20024 	lw	v0,36(s8)
  445868:	00000000 	nop
  44586c:	8c42000c 	lw	v0,12(v0)
  445870:	00000000 	nop
  445874:	8c420028 	lw	v0,40(v0)
  445878:	00000000 	nop
  44587c:	10400028 	beqz	v0,445920 <main_inI1_outR1+0xa40>
  445880:	00000000 	nop
    	if (!out_modify_previous_np(ISAKMP_NEXT_VID, &md->rbody))
  445884:	8fc200c8 	lw	v0,200(s8)
  445888:	00000000 	nop
  44588c:	244200bc 	addiu	v0,v0,188
  445890:	2404000d 	li	a0,13
  445894:	00402821 	move	a1,v0
  445898:	8f998808 	lw	t9,-30712(gp)
  44589c:	00000000 	nop
  4458a0:	0320f809 	jalr	t9
  4458a4:	00000000 	nop
  4458a8:	8fdc0018 	lw	gp,24(s8)
  4458ac:	14400004 	bnez	v0,4458c0 <main_inI1_outR1+0x9e0>
  4458b0:	00000000 	nop
            return STF_INTERNAL_ERROR;
  4458b4:	24020003 	li	v0,3
  4458b8:	1000004c 	b	4459ec <main_inI1_outR1+0xb0c>
  4458bc:	00000000 	nop
    	if( !out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_vendor_id_desc,
			    &md->rbody, dpd_vid, sizeof(dpd_vid), "V_ID"))
  4458c0:	8fc200c8 	lw	v0,200(s8)
  4458c4:	00000000 	nop
  4458c8:	244300bc 	addiu	v1,v0,188
  4458cc:	24020010 	li	v0,16
  4458d0:	afa20010 	sw	v0,16(sp)
  4458d4:	8f82802c 	lw	v0,-32724(gp)
  4458d8:	00000000 	nop
  4458dc:	2442dc4c 	addiu	v0,v0,-9140
  4458e0:	00000000 	nop
  4458e4:	afa20014 	sw	v0,20(sp)
  4458e8:	00002021 	move	a0,zero
  4458ec:	8f858b0c 	lw	a1,-29940(gp)
  4458f0:	00603021 	move	a2,v1
  4458f4:	8f878970 	lw	a3,-30352(gp)
  4458f8:	8f99841c 	lw	t9,-31716(gp)
  4458fc:	00000000 	nop
  445900:	0320f809 	jalr	t9
  445904:	00000000 	nop
  445908:	8fdc0018 	lw	gp,24(s8)
  44590c:	14400004 	bnez	v0,445920 <main_inI1_outR1+0xa40>
  445910:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  445914:	24020003 	li	v0,3
  445918:	10000034 	b	4459ec <main_inI1_outR1+0xb0c>
  44591c:	00000000 	nop
    }

#endif

    close_message(&md->rbody);
  445920:	8fc200c8 	lw	v0,200(s8)
  445924:	00000000 	nop
  445928:	244200bc 	addiu	v0,v0,188
  44592c:	00402021 	move	a0,v0
  445930:	8f998324 	lw	t9,-31964(gp)
  445934:	00000000 	nop
  445938:	0320f809 	jalr	t9
  44593c:	00000000 	nop
  445940:	8fdc0018 	lw	gp,24(s8)
  445944:	00000000 	nop

    /* save initiator SA for HASH */
    clonereplacechunk(st->st_p1isa, sa_pd->pbs.start, pbs_room(&sa_pd->pbs), "sa in main_inI1_outR1()");
  445948:	8fc20024 	lw	v0,36(s8)
  44594c:	00000000 	nop
  445950:	8c42015c 	lw	v0,348(v0)
  445954:	00000000 	nop
  445958:	10400009 	beqz	v0,445980 <main_inI1_outR1+0xaa0>
  44595c:	00000000 	nop
  445960:	8fc20024 	lw	v0,36(s8)
  445964:	00000000 	nop
  445968:	8c44015c 	lw	a0,348(v0)
  44596c:	8f998094 	lw	t9,-32620(gp)
  445970:	00000000 	nop
  445974:	0320f809 	jalr	t9
  445978:	00000000 	nop
  44597c:	8fdc0018 	lw	gp,24(s8)
  445980:	8fd00024 	lw	s0,36(s8)
  445984:	8fc20020 	lw	v0,32(s8)
  445988:	00000000 	nop
  44598c:	8c430014 	lw	v1,20(v0)
  445990:	8fc20020 	lw	v0,32(s8)
  445994:	00000000 	nop
  445998:	8c42000c 	lw	v0,12(v0)
  44599c:	00000000 	nop
  4459a0:	00621023 	subu	v0,v1,v0
  4459a4:	00401821 	move	v1,v0
  4459a8:	8fc20024 	lw	v0,36(s8)
  4459ac:	00000000 	nop
  4459b0:	ac430160 	sw	v1,352(v0)
  4459b4:	8fc20020 	lw	v0,32(s8)
  4459b8:	00000000 	nop
  4459bc:	8c44000c 	lw	a0,12(v0)
  4459c0:	00602821 	move	a1,v1
  4459c4:	8f86802c 	lw	a2,-32724(gp)
  4459c8:	00000000 	nop
  4459cc:	24c6eda8 	addiu	a2,a2,-4696
  4459d0:	8f998c04 	lw	t9,-29692(gp)
  4459d4:	00000000 	nop
  4459d8:	0320f809 	jalr	t9
  4459dc:	00000000 	nop
  4459e0:	8fdc0018 	lw	gp,24(s8)
  4459e4:	ae02015c 	sw	v0,348(s0)

    return STF_OK;
  4459e8:	24020002 	li	v0,2
}
  4459ec:	03c0e821 	move	sp,s8
  4459f0:	8fbf00c4 	lw	ra,196(sp)
  4459f4:	8fbe00c0 	lw	s8,192(sp)
  4459f8:	8fb000b8 	lw	s0,184(sp)
  4459fc:	27bd00c8 	addiu	sp,sp,200
  445a00:	03e00008 	jr	ra
  445a04:	00000000 	nop

00445a08 <main_inR1_outI2>:
  445a08:	3c1c0fbc 	lui	gp,0xfbc
  445a0c:	279c6f68 	addiu	gp,gp,28520
  445a10:	0399e021 	addu	gp,gp,t9
  445a14:	27bdffc0 	addiu	sp,sp,-64
  445a18:	afbc0018 	sw	gp,24(sp)
  445a1c:	afbf0038 	sw	ra,56(sp)
  445a20:	afbe0034 	sw	s8,52(sp)
  445a24:	afbc0030 	sw	gp,48(sp)
  445a28:	03a0f021 	move	s8,sp
  445a2c:	afc40040 	sw	a0,64(s8)

/* STATE_MAIN_I1: HDR, SA --> auth dependent
 * PSK_AUTH, DS_AUTH: --> HDR, KE, Ni
 *
 * The following are not yet implemented:
 * PKE_AUTH: --> HDR, KE, [ HASH(1), ] <IDi1_b>PubKey_r, <Ni_b>PubKey_r
 * RPKE_AUTH: --> HDR, [ HASH(1), ] <Ni_b>Pubkey_r, <KE_b>Ke_i,
 *                <IDi1_b>Ke_i [,<<Cert-I_b>Ke_i]
 *
 * We must verify that the proposal received matches one we sent.
 */
stf_status
main_inR1_outI2(struct msg_digest *md)
{
    struct state *const st = md->st;
  445a30:	8fc20040 	lw	v0,64(s8)
  445a34:	00000000 	nop
  445a38:	8c420098 	lw	v0,152(v0)
  445a3c:	00000000 	nop
  445a40:	afc20020 	sw	v0,32(s8)

    /* verify echoed SA */
    {
	struct payload_digest *const sapd = md->chain[ISAKMP_NEXT_SA];
  445a44:	8fc20040 	lw	v0,64(s8)
  445a48:	00000000 	nop
  445a4c:	8c4204ac 	lw	v0,1196(v0)
  445a50:	00000000 	nop
  445a54:	afc20024 	sw	v0,36(s8)

	RETURN_STF_FAILURE(parse_isakmp_sa_body(&sapd->pbs
  445a58:	8fc20024 	lw	v0,36(s8)
  445a5c:	00000000 	nop
  445a60:	24430020 	addiu	v1,v0,32
  445a64:	8fc20020 	lw	v0,32(s8)
  445a68:	00000000 	nop
  445a6c:	afa20010 	sw	v0,16(sp)
  445a70:	8fc40024 	lw	a0,36(s8)
  445a74:	00602821 	move	a1,v1
  445a78:	00003021 	move	a2,zero
  445a7c:	24070001 	li	a3,1
  445a80:	8f9985c0 	lw	t9,-31296(gp)
  445a84:	00000000 	nop
  445a88:	0320f809 	jalr	t9
  445a8c:	00000000 	nop
  445a90:	8fdc0018 	lw	gp,24(s8)
  445a94:	afc20028 	sw	v0,40(s8)
  445a98:	8fc20028 	lw	v0,40(s8)
  445a9c:	00000000 	nop
  445aa0:	10400006 	beqz	v0,445abc <main_inR1_outI2+0xb4>
  445aa4:	00000000 	nop
  445aa8:	8fc20028 	lw	v0,40(s8)
  445aac:	00000000 	nop
  445ab0:	24420004 	addiu	v0,v0,4
  445ab4:	10000093 	b	445d04 <main_inR1_outI2+0x2fc>
  445ab8:	00000000 	nop
	    , &sapd->payload.sa, NULL, TRUE, st));
    }

#ifdef NAT_TRAVERSAL
    if (nat_traversal_enabled && md->nat_traversal_vid) {
  445abc:	8f82837c 	lw	v0,-31876(gp)
  445ac0:	00000000 	nop
  445ac4:	8c420000 	lw	v0,0(v0)
  445ac8:	00000000 	nop
  445acc:	10400014 	beqz	v0,445b20 <main_inR1_outI2+0x118>
  445ad0:	00000000 	nop
  445ad4:	8fc20040 	lw	v0,64(s8)
  445ad8:	00000000 	nop
  445adc:	944204ec 	lhu	v0,1260(v0)
  445ae0:	00000000 	nop
  445ae4:	1040000e 	beqz	v0,445b20 <main_inR1_outI2+0x118>
  445ae8:	00000000 	nop
	st->nat_traversal = nat_traversal_vid_to_method(md->nat_traversal_vid);
  445aec:	8fc20040 	lw	v0,64(s8)
  445af0:	00000000 	nop
  445af4:	944204ec 	lhu	v0,1260(v0)
  445af8:	00000000 	nop
  445afc:	00402021 	move	a0,v0
  445b00:	8f9988dc 	lw	t9,-30500(gp)
  445b04:	00000000 	nop
  445b08:	0320f809 	jalr	t9
  445b0c:	00000000 	nop
  445b10:	8fdc0018 	lw	gp,24(s8)
  445b14:	8fc30020 	lw	v1,32(s8)
  445b18:	00000000 	nop
  445b1c:	ac620264 	sw	v0,612(v1)
    }
#endif

    /**************** build output packet HDR;KE;Ni ****************/

    /* HDR out.
     * We can't leave this to comm_handle() because the isa_np
     * depends on the type of Auth (eventually).
     */
    echo_hdr(md, FALSE, ISAKMP_NEXT_KE);
  445b20:	8fc40040 	lw	a0,64(s8)
  445b24:	00002821 	move	a1,zero
  445b28:	24060004 	li	a2,4
  445b2c:	8f998194 	lw	t9,-32364(gp)
  445b30:	00000000 	nop
  445b34:	0320f809 	jalr	t9
  445b38:	00000000 	nop
  445b3c:	8fdc0018 	lw	gp,24(s8)
  445b40:	00000000 	nop

    /* KE out */
    if (!build_and_ship_KE(st, &st->st_gi, st->st_oakley.group
    , &md->rbody, ISAKMP_NEXT_NONCE))
  445b44:	8fc20020 	lw	v0,32(s8)
  445b48:	00000000 	nop
  445b4c:	244300e8 	addiu	v1,v0,232
  445b50:	8fc20040 	lw	v0,64(s8)
  445b54:	00000000 	nop
  445b58:	244700bc 	addiu	a3,v0,188
  445b5c:	2402000a 	li	v0,10
  445b60:	afa20010 	sw	v0,16(sp)
  445b64:	8fc40020 	lw	a0,32(s8)
  445b68:	00602821 	move	a1,v1
  445b6c:	8fc20020 	lw	v0,32(s8)
  445b70:	00000000 	nop
  445b74:	8c460030 	lw	a2,48(v0)
  445b78:	8f998034 	lw	t9,-32716(gp)
  445b7c:	00000000 	nop
  445b80:	27399b7c 	addiu	t9,t9,-25732
  445b84:	00000000 	nop
  445b88:	0320f809 	jalr	t9
  445b8c:	00000000 	nop
  445b90:	8fdc0018 	lw	gp,24(s8)
  445b94:	14400004 	bnez	v0,445ba8 <main_inR1_outI2+0x1a0>
  445b98:	00000000 	nop
	return STF_INTERNAL_ERROR;
  445b9c:	24020003 	li	v0,3
  445ba0:	10000058 	b	445d04 <main_inR1_outI2+0x2fc>
  445ba4:	00000000 	nop

#ifdef IMPAIR_MTU_BUST_MI2	/* ship a really big VID payload in MI2 message */
    /* Ni out */
    if (!build_and_ship_nonce(&st->st_ni, &md->rbody, ISAKMP_NEXT_VID, "Ni"))
	return STF_INTERNAL_ERROR;

    /* generate a pointless large VID payload to push message over MTU */
    {
	pb_stream vid_pbs;

	if (!out_generic(ISAKMP_NEXT_NONE, &isakmp_vendor_id_desc, &md->rbody
	    , &vid_pbs))
	    return STF_INTERNAL_ERROR;
	if (!out_zero(1500 /*MTU?*/, &vid_pbs, "Filler VID"))
	    return STF_INTERNAL_ERROR;
	close_output_pbs(&vid_pbs);
    }
#else
    /* Ni out */
    if (!build_and_ship_nonce(&st->st_ni, &md->rbody, ISAKMP_NEXT_NONE, "Ni"))
  445ba8:	8fc20020 	lw	v0,32(s8)
  445bac:	00000000 	nop
  445bb0:	244300f8 	addiu	v1,v0,248
  445bb4:	8fc20040 	lw	v0,64(s8)
  445bb8:	00000000 	nop
  445bbc:	244200bc 	addiu	v0,v0,188
  445bc0:	00602021 	move	a0,v1
  445bc4:	00402821 	move	a1,v0
  445bc8:	00003021 	move	a2,zero
  445bcc:	8f87802c 	lw	a3,-32724(gp)
  445bd0:	00000000 	nop
  445bd4:	24e7dd38 	addiu	a3,a3,-8904
  445bd8:	8f998034 	lw	t9,-32716(gp)
  445bdc:	00000000 	nop
  445be0:	2739a1a4 	addiu	t9,t9,-24156
  445be4:	00000000 	nop
  445be8:	0320f809 	jalr	t9
  445bec:	00000000 	nop
  445bf0:	8fdc0018 	lw	gp,24(s8)
  445bf4:	14400004 	bnez	v0,445c08 <main_inR1_outI2+0x200>
  445bf8:	00000000 	nop
	return STF_INTERNAL_ERROR;
  445bfc:	24020003 	li	v0,3
  445c00:	10000040 	b	445d04 <main_inR1_outI2+0x2fc>
  445c04:	00000000 	nop
#endif

#ifdef NAT_TRAVERSAL
    if (st->nat_traversal & NAT_T_WITH_NATD) {
  445c08:	8fc20020 	lw	v0,32(s8)
  445c0c:	00000000 	nop
  445c10:	8c420264 	lw	v0,612(v0)
  445c14:	00000000 	nop
  445c18:	3042000e 	andi	v0,v0,0xe
  445c1c:	10400011 	beqz	v0,445c64 <main_inR1_outI2+0x25c>
  445c20:	00000000 	nop
	if (!nat_traversal_add_natd(ISAKMP_NEXT_NONE, &md->rbody, md))
  445c24:	8fc20040 	lw	v0,64(s8)
  445c28:	00000000 	nop
  445c2c:	244200bc 	addiu	v0,v0,188
  445c30:	00002021 	move	a0,zero
  445c34:	00402821 	move	a1,v0
  445c38:	8fc60040 	lw	a2,64(s8)
  445c3c:	8f998ab8 	lw	t9,-30024(gp)
  445c40:	00000000 	nop
  445c44:	0320f809 	jalr	t9
  445c48:	00000000 	nop
  445c4c:	8fdc0018 	lw	gp,24(s8)
  445c50:	14400004 	bnez	v0,445c64 <main_inR1_outI2+0x25c>
  445c54:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  445c58:	24020003 	li	v0,3
  445c5c:	10000029 	b	445d04 <main_inR1_outI2+0x2fc>
  445c60:	00000000 	nop
    }
#endif

    /* finish message */
    close_message(&md->rbody);
  445c64:	8fc20040 	lw	v0,64(s8)
  445c68:	00000000 	nop
  445c6c:	244200bc 	addiu	v0,v0,188
  445c70:	00402021 	move	a0,v0
  445c74:	8f998324 	lw	t9,-31964(gp)
  445c78:	00000000 	nop
  445c7c:	0320f809 	jalr	t9
  445c80:	00000000 	nop
  445c84:	8fdc0018 	lw	gp,24(s8)
  445c88:	00000000 	nop

    /* Reinsert the state, using the responder cookie we just received */
    unhash_state(st);
  445c8c:	8fc40020 	lw	a0,32(s8)
  445c90:	8f99883c 	lw	t9,-30660(gp)
  445c94:	00000000 	nop
  445c98:	0320f809 	jalr	t9
  445c9c:	00000000 	nop
  445ca0:	8fdc0018 	lw	gp,24(s8)
  445ca4:	00000000 	nop
    memcpy(st->st_rcookie, md->hdr.isa_rcookie, COOKIE_SIZE);
  445ca8:	8fc20020 	lw	v0,32(s8)
  445cac:	00000000 	nop
  445cb0:	24430108 	addiu	v1,v0,264
  445cb4:	8fc20040 	lw	v0,64(s8)
  445cb8:	00000000 	nop
  445cbc:	24420078 	addiu	v0,v0,120
  445cc0:	00602021 	move	a0,v1
  445cc4:	00402821 	move	a1,v0
  445cc8:	24060008 	li	a2,8
  445ccc:	8f998a30 	lw	t9,-30160(gp)
  445cd0:	00000000 	nop
  445cd4:	0320f809 	jalr	t9
  445cd8:	00000000 	nop
  445cdc:	8fdc0018 	lw	gp,24(s8)
  445ce0:	00000000 	nop
    insert_state(st);	/* needs cookies, connection, and msgid (0) */
  445ce4:	8fc40020 	lw	a0,32(s8)
  445ce8:	8f9983a4 	lw	t9,-31836(gp)
  445cec:	00000000 	nop
  445cf0:	0320f809 	jalr	t9
  445cf4:	00000000 	nop
  445cf8:	8fdc0018 	lw	gp,24(s8)
  445cfc:	00000000 	nop

    return STF_OK;
  445d00:	24020002 	li	v0,2
}
  445d04:	03c0e821 	move	sp,s8
  445d08:	8fbf0038 	lw	ra,56(sp)
  445d0c:	8fbe0034 	lw	s8,52(sp)
  445d10:	27bd0040 	addiu	sp,sp,64
  445d14:	03e00008 	jr	ra
  445d18:	00000000 	nop

00445d1c <main_inI2_outR2>:
  445d1c:	3c1c0fbc 	lui	gp,0xfbc
  445d20:	279c6c54 	addiu	gp,gp,27732
  445d24:	0399e021 	addu	gp,gp,t9
  445d28:	27bdffa0 	addiu	sp,sp,-96
  445d2c:	afbc0018 	sw	gp,24(sp)
  445d30:	afbf0058 	sw	ra,88(sp)
  445d34:	afbe0054 	sw	s8,84(sp)
  445d38:	afbc0050 	sw	gp,80(sp)
  445d3c:	03a0f021 	move	s8,sp
  445d40:	afc40060 	sw	a0,96(s8)

/* STATE_MAIN_R1:
 * PSK_AUTH, DS_AUTH: HDR, KE, Ni --> HDR, KE, Nr
 *
 * The following are not yet implemented:
 * PKE_AUTH: HDR, KE, [ HASH(1), ] <IDi1_b>PubKey_r, <Ni_b>PubKey_r
 *	    --> HDR, KE, <IDr1_b>PubKey_i, <Nr_b>PubKey_i
 * RPKE_AUTH:
 *	    HDR, [ HASH(1), ] <Ni_b>Pubkey_r, <KE_b>Ke_i, <IDi1_b>Ke_i [,<<Cert-I_b>Ke_i]
 *	    --> HDR, <Nr_b>PubKey_i, <KE_b>Ke_r, <IDr1_b>Ke_r
 */
stf_status
main_inI2_outR2(struct msg_digest *md)
{
    struct state *const st = md->st;
  445d44:	8fc20060 	lw	v0,96(s8)
  445d48:	00000000 	nop
  445d4c:	8c420098 	lw	v0,152(v0)
  445d50:	00000000 	nop
  445d54:	afc20020 	sw	v0,32(s8)
    pb_stream *keyex_pbs = &md->chain[ISAKMP_NEXT_KE]->pbs;
  445d58:	8fc20060 	lw	v0,96(s8)
  445d5c:	00000000 	nop
  445d60:	8c4204b8 	lw	v0,1208(v0)
  445d64:	00000000 	nop
  445d68:	afc20024 	sw	v0,36(s8)
 
    /* send CR if auth is RSA and no preloaded RSA public key exists*/
    bool send_cr = !no_cr_send && (st->st_oakley.auth == OAKLEY_RSA_SIG) &&
  445d6c:	afc00034 	sw	zero,52(s8)
  445d70:	8f82844c 	lw	v0,-31668(gp)
  445d74:	00000000 	nop
  445d78:	8c420000 	lw	v0,0(v0)
  445d7c:	00000000 	nop
  445d80:	14400013 	bnez	v0,445dd0 <main_inI2_outR2+0xb4>
  445d84:	00000000 	nop
  445d88:	8fc20020 	lw	v0,32(s8)
  445d8c:	00000000 	nop
  445d90:	9443002c 	lhu	v1,44(v0)
  445d94:	24020003 	li	v0,3
  445d98:	1462000d 	bne	v1,v0,445dd0 <main_inI2_outR2+0xb4>
  445d9c:	00000000 	nop
  445da0:	8fc40020 	lw	a0,32(s8)
  445da4:	8f998034 	lw	t9,-32716(gp)
  445da8:	00000000 	nop
  445dac:	27394208 	addiu	t9,t9,16904
  445db0:	00000000 	nop
  445db4:	0320f809 	jalr	t9
  445db8:	00000000 	nop
  445dbc:	8fdc0018 	lw	gp,24(s8)
  445dc0:	14400003 	bnez	v0,445dd0 <main_inI2_outR2+0xb4>
  445dc4:	00000000 	nop
  445dc8:	24020001 	li	v0,1
  445dcc:	afc20034 	sw	v0,52(s8)
  445dd0:	8fc20034 	lw	v0,52(s8)
  445dd4:	00000000 	nop
  445dd8:	afc20028 	sw	v0,40(s8)
		   !has_preloaded_public_key(st);

    /* KE in */
    RETURN_STF_FAILURE(accept_KE(&st->st_gi, "Gi", st->st_oakley.group, keyex_pbs));
  445ddc:	8fc20020 	lw	v0,32(s8)
  445de0:	00000000 	nop
  445de4:	244200e8 	addiu	v0,v0,232
  445de8:	00402021 	move	a0,v0
  445dec:	8f85802c 	lw	a1,-32724(gp)
  445df0:	00000000 	nop
  445df4:	24a5edc0 	addiu	a1,a1,-4672
  445df8:	8fc20020 	lw	v0,32(s8)
  445dfc:	00000000 	nop
  445e00:	8c460030 	lw	a2,48(v0)
  445e04:	8fc70024 	lw	a3,36(s8)
  445e08:	8f998034 	lw	t9,-32716(gp)
  445e0c:	00000000 	nop
  445e10:	27399e10 	addiu	t9,t9,-25072
  445e14:	00000000 	nop
  445e18:	0320f809 	jalr	t9
  445e1c:	00000000 	nop
  445e20:	8fdc0018 	lw	gp,24(s8)
  445e24:	afc2002c 	sw	v0,44(s8)
  445e28:	8fc2002c 	lw	v0,44(s8)
  445e2c:	00000000 	nop
  445e30:	10400006 	beqz	v0,445e4c <main_inI2_outR2+0x130>
  445e34:	00000000 	nop
  445e38:	8fc2002c 	lw	v0,44(s8)
  445e3c:	00000000 	nop
  445e40:	24420004 	addiu	v0,v0,4
  445e44:	1000017b 	b	446434 <main_inI2_outR2+0x718>
  445e48:	00000000 	nop

    /* Ni in */
    RETURN_STF_FAILURE(accept_nonce(md, &st->st_ni, "Ni"));
  445e4c:	8fc20020 	lw	v0,32(s8)
  445e50:	00000000 	nop
  445e54:	244200f8 	addiu	v0,v0,248
  445e58:	8fc40060 	lw	a0,96(s8)
  445e5c:	00402821 	move	a1,v0
  445e60:	8f86802c 	lw	a2,-32724(gp)
  445e64:	00000000 	nop
  445e68:	24c6dd38 	addiu	a2,a2,-8904
  445e6c:	8f998034 	lw	t9,-32716(gp)
  445e70:	00000000 	nop
  445e74:	2739093c 	addiu	t9,t9,2364
  445e78:	00000000 	nop
  445e7c:	0320f809 	jalr	t9
  445e80:	00000000 	nop
  445e84:	8fdc0018 	lw	gp,24(s8)
  445e88:	afc2002c 	sw	v0,44(s8)
  445e8c:	8fc2002c 	lw	v0,44(s8)
  445e90:	00000000 	nop
  445e94:	10400006 	beqz	v0,445eb0 <main_inI2_outR2+0x194>
  445e98:	00000000 	nop
  445e9c:	8fc2002c 	lw	v0,44(s8)
  445ea0:	00000000 	nop
  445ea4:	24420004 	addiu	v0,v0,4
  445ea8:	10000162 	b	446434 <main_inI2_outR2+0x718>
  445eac:	00000000 	nop

    /* decode certificate requests */
    decode_cr(md, &st->st_connection->requested_ca);
  445eb0:	8fc20020 	lw	v0,32(s8)
  445eb4:	00000000 	nop
  445eb8:	8c42000c 	lw	v0,12(v0)
  445ebc:	00000000 	nop
  445ec0:	244201d0 	addiu	v0,v0,464
  445ec4:	8fc40060 	lw	a0,96(s8)
  445ec8:	00402821 	move	a1,v0
  445ecc:	8f998034 	lw	t9,-32716(gp)
  445ed0:	00000000 	nop
  445ed4:	273929a8 	addiu	t9,t9,10664
  445ed8:	00000000 	nop
  445edc:	0320f809 	jalr	t9
  445ee0:	00000000 	nop
  445ee4:	8fdc0018 	lw	gp,24(s8)
  445ee8:	00000000 	nop

#ifdef NAT_TRAVERSAL
    if (st->nat_traversal & NAT_T_WITH_NATD) {
  445eec:	8fc20020 	lw	v0,32(s8)
  445ef0:	00000000 	nop
  445ef4:	8c420264 	lw	v0,612(v0)
  445ef8:	00000000 	nop
  445efc:	3042000e 	andi	v0,v0,0xe
  445f00:	10400008 	beqz	v0,445f24 <main_inI2_outR2+0x208>
  445f04:	00000000 	nop
	nat_traversal_natd_lookup(md);
  445f08:	8fc40060 	lw	a0,96(s8)
  445f0c:	8f998670 	lw	t9,-31120(gp)
  445f10:	00000000 	nop
  445f14:	0320f809 	jalr	t9
  445f18:	00000000 	nop
  445f1c:	8fdc0018 	lw	gp,24(s8)
  445f20:	00000000 	nop
    }
    if (st->nat_traversal) {
  445f24:	8fc20020 	lw	v0,32(s8)
  445f28:	00000000 	nop
  445f2c:	8c420264 	lw	v0,612(v0)
  445f30:	00000000 	nop
  445f34:	1040000e 	beqz	v0,445f70 <main_inI2_outR2+0x254>
  445f38:	00000000 	nop
	nat_traversal_show_result(st->nat_traversal, md->sender_port);
  445f3c:	8fc20060 	lw	v0,96(s8)
  445f40:	00000000 	nop
  445f44:	9443002c 	lhu	v1,44(v0)
  445f48:	8fc20020 	lw	v0,32(s8)
  445f4c:	00000000 	nop
  445f50:	8c440264 	lw	a0,612(v0)
  445f54:	00602821 	move	a1,v1
  445f58:	8f99881c 	lw	t9,-30692(gp)
  445f5c:	00000000 	nop
  445f60:	0320f809 	jalr	t9
  445f64:	00000000 	nop
  445f68:	8fdc0018 	lw	gp,24(s8)
  445f6c:	00000000 	nop
    }
    if (st->nat_traversal & NAT_T_WITH_KA) {
  445f70:	8fc20020 	lw	v0,32(s8)
  445f74:	00000000 	nop
  445f78:	8c420264 	lw	v0,612(v0)
  445f7c:	00000000 	nop
  445f80:	3042000e 	andi	v0,v0,0xe
  445f84:	10400007 	beqz	v0,445fa4 <main_inI2_outR2+0x288>
  445f88:	00000000 	nop
	nat_traversal_new_ka_event();
  445f8c:	8f9981d8 	lw	t9,-32296(gp)
  445f90:	00000000 	nop
  445f94:	0320f809 	jalr	t9
  445f98:	00000000 	nop
  445f9c:	8fdc0018 	lw	gp,24(s8)
  445fa0:	00000000 	nop
    }
#endif

    /**************** build output packet HDR;KE;Nr ****************/

    /* HDR out done */

    /* KE out */
    if (!build_and_ship_KE(st, &st->st_gr, st->st_oakley.group
    , &md->rbody, ISAKMP_NEXT_NONCE))
  445fa4:	8fc20020 	lw	v0,32(s8)
  445fa8:	00000000 	nop
  445fac:	24430100 	addiu	v1,v0,256
  445fb0:	8fc20060 	lw	v0,96(s8)
  445fb4:	00000000 	nop
  445fb8:	244700bc 	addiu	a3,v0,188
  445fbc:	2402000a 	li	v0,10
  445fc0:	afa20010 	sw	v0,16(sp)
  445fc4:	8fc40020 	lw	a0,32(s8)
  445fc8:	00602821 	move	a1,v1
  445fcc:	8fc20020 	lw	v0,32(s8)
  445fd0:	00000000 	nop
  445fd4:	8c460030 	lw	a2,48(v0)
  445fd8:	8f998034 	lw	t9,-32716(gp)
  445fdc:	00000000 	nop
  445fe0:	27399b7c 	addiu	t9,t9,-25732
  445fe4:	00000000 	nop
  445fe8:	0320f809 	jalr	t9
  445fec:	00000000 	nop
  445ff0:	8fdc0018 	lw	gp,24(s8)
  445ff4:	14400004 	bnez	v0,446008 <main_inI2_outR2+0x2ec>
  445ff8:	00000000 	nop
	return STF_INTERNAL_ERROR;
  445ffc:	24020003 	li	v0,3
  446000:	1000010c 	b	446434 <main_inI2_outR2+0x718>
  446004:	00000000 	nop

#ifdef IMPAIR_MTU_BUST_MR2	/* ship a really big VID payload in MR2 message */
    /* Nr out */
    if (!build_and_ship_nonce(&st->st_nr, &md->rbody, ISAKMP_NEXT_VID, "Nr"))
	return STF_INTERNAL_ERROR;

    /* generate a pointless large VID payload to push message over MTU */
    {
	pb_stream vid_pbs;

	if (!out_generic((send_cr)? ISAKMP_NEXT_CR : ISAKMP_NEXT_NONE,
	    &isakmp_vendor_id_desc, &md->rbody, &vid_pbs))
	    return STF_INTERNAL_ERROR;
	if (!out_zero(1500 /*MTU?*/, &vid_pbs, "Filler VID"))
	    return STF_INTERNAL_ERROR;
	close_output_pbs(&vid_pbs);
    }
#else
    /* Nr out */
    if (!build_and_ship_nonce(&st->st_nr, &md->rbody,
	(send_cr)? ISAKMP_NEXT_CR : ISAKMP_NEXT_NONE, "Nr"))
  446008:	8fc20020 	lw	v0,32(s8)
  44600c:	00000000 	nop
  446010:	24420110 	addiu	v0,v0,272
  446014:	afc20038 	sw	v0,56(s8)
  446018:	8fc20060 	lw	v0,96(s8)
  44601c:	00000000 	nop
  446020:	244200bc 	addiu	v0,v0,188
  446024:	afc2003c 	sw	v0,60(s8)
  446028:	8fc20028 	lw	v0,40(s8)
  44602c:	00000000 	nop
  446030:	10400005 	beqz	v0,446048 <main_inI2_outR2+0x32c>
  446034:	00000000 	nop
  446038:	24020007 	li	v0,7
  44603c:	afc20040 	sw	v0,64(s8)
  446040:	10000002 	b	44604c <main_inI2_outR2+0x330>
  446044:	00000000 	nop
  446048:	afc00040 	sw	zero,64(s8)
  44604c:	8fc40038 	lw	a0,56(s8)
  446050:	8fc5003c 	lw	a1,60(s8)
  446054:	8fc60040 	lw	a2,64(s8)
  446058:	8f87802c 	lw	a3,-32724(gp)
  44605c:	00000000 	nop
  446060:	24e7edc4 	addiu	a3,a3,-4668
  446064:	8f998034 	lw	t9,-32716(gp)
  446068:	00000000 	nop
  44606c:	2739a1a4 	addiu	t9,t9,-24156
  446070:	00000000 	nop
  446074:	0320f809 	jalr	t9
  446078:	00000000 	nop
  44607c:	8fdc0018 	lw	gp,24(s8)
  446080:	14400004 	bnez	v0,446094 <main_inI2_outR2+0x378>
  446084:	00000000 	nop
	return STF_INTERNAL_ERROR;
  446088:	24020003 	li	v0,3
  44608c:	100000e9 	b	446434 <main_inI2_outR2+0x718>
  446090:	00000000 	nop
#endif

    /* CR out */
    if (send_cr)
  446094:	8fc20028 	lw	v0,40(s8)
  446098:	00000000 	nop
  44609c:	10400081 	beqz	v0,4462a4 <main_inI2_outR2+0x588>
  4460a0:	00000000 	nop
    {
	if (st->st_connection->kind == CK_PERMANENT)
  4460a4:	8fc20020 	lw	v0,32(s8)
  4460a8:	00000000 	nop
  4460ac:	8c42000c 	lw	v0,12(v0)
  4460b0:	00000000 	nop
  4460b4:	8c430194 	lw	v1,404(v0)
  4460b8:	24020001 	li	v0,1
  4460bc:	14620018 	bne	v1,v0,446120 <main_inI2_outR2+0x404>
  4460c0:	00000000 	nop
 	{
	    if (!build_and_ship_CR(CERT_X509_SIGNATURE
	    , st->st_connection->that.ca
	    , &md->rbody, ISAKMP_NEXT_NONE))
  4460c4:	8fc20020 	lw	v0,32(s8)
  4460c8:	00000000 	nop
  4460cc:	8c43000c 	lw	v1,12(v0)
  4460d0:	8fc20060 	lw	v0,96(s8)
  4460d4:	00000000 	nop
  4460d8:	244200bc 	addiu	v0,v0,188
  4460dc:	afa00010 	sw	zero,16(sp)
  4460e0:	24040004 	li	a0,4
  4460e4:	8c650184 	lw	a1,388(v1)
  4460e8:	8c660188 	lw	a2,392(v1)
  4460ec:	00403821 	move	a3,v0
  4460f0:	8f998034 	lw	t9,-32716(gp)
  4460f4:	00000000 	nop
  4460f8:	2739a50c 	addiu	t9,t9,-23284
  4460fc:	00000000 	nop
  446100:	0320f809 	jalr	t9
  446104:	00000000 	nop
  446108:	8fdc0018 	lw	gp,24(s8)
  44610c:	14400065 	bnez	v0,4462a4 <main_inI2_outR2+0x588>
  446110:	00000000 	nop
 		return STF_INTERNAL_ERROR;
  446114:	24020003 	li	v0,3
  446118:	100000c6 	b	446434 <main_inI2_outR2+0x718>
  44611c:	00000000 	nop
 	}
	else
	{
	    generalName_t *ca = NULL;
  446120:	afc0002c 	sw	zero,44(s8)

	    if (collect_rw_ca_candidates(md, &ca))
  446124:	8fc40060 	lw	a0,96(s8)
  446128:	27c5002c 	addiu	a1,s8,44
  44612c:	8f998034 	lw	t9,-32716(gp)
  446130:	00000000 	nop
  446134:	2739a2ac 	addiu	t9,t9,-23892
  446138:	00000000 	nop
  44613c:	0320f809 	jalr	t9
  446140:	00000000 	nop
  446144:	8fdc0018 	lw	gp,24(s8)
  446148:	1040003e 	beqz	v0,446244 <main_inI2_outR2+0x528>
  44614c:	00000000 	nop
	    {
		generalName_t *gn;

		for (gn = ca; gn != NULL; gn = gn->next)
  446150:	8fc2002c 	lw	v0,44(s8)
  446154:	00000000 	nop
  446158:	afc20030 	sw	v0,48(s8)
  44615c:	8fc20030 	lw	v0,48(s8)
  446160:	00000000 	nop
  446164:	1440000a 	bnez	v0,446190 <main_inI2_outR2+0x474>
  446168:	00000000 	nop
		{
		    if (!build_and_ship_CR(CERT_X509_SIGNATURE, gn->name
		    , &md->rbody
		    , gn->next == NULL ? ISAKMP_NEXT_NONE : ISAKMP_NEXT_CR))
			return STF_INTERNAL_ERROR;
		}
		free_generalNames(ca, FALSE);
  44616c:	8fc4002c 	lw	a0,44(s8)
  446170:	00002821 	move	a1,zero
  446174:	8f9987ac 	lw	t9,-30804(gp)
  446178:	00000000 	nop
  44617c:	0320f809 	jalr	t9
  446180:	00000000 	nop
  446184:	8fdc0018 	lw	gp,24(s8)
  446188:	10000046 	b	4462a4 <main_inI2_outR2+0x588>
  44618c:	00000000 	nop
  446190:	8fc20030 	lw	v0,48(s8)
  446194:	00000000 	nop
  446198:	afc20044 	sw	v0,68(s8)
  44619c:	8fc20060 	lw	v0,96(s8)
  4461a0:	00000000 	nop
  4461a4:	244200bc 	addiu	v0,v0,188
  4461a8:	afc20048 	sw	v0,72(s8)
  4461ac:	8fc20030 	lw	v0,48(s8)
  4461b0:	00000000 	nop
  4461b4:	8c420000 	lw	v0,0(v0)
  4461b8:	00000000 	nop
  4461bc:	10400005 	beqz	v0,4461d4 <main_inI2_outR2+0x4b8>
  4461c0:	00000000 	nop
  4461c4:	24020007 	li	v0,7
  4461c8:	afa20010 	sw	v0,16(sp)
  4461cc:	10000002 	b	4461d8 <main_inI2_outR2+0x4bc>
  4461d0:	00000000 	nop
  4461d4:	afa00010 	sw	zero,16(sp)
  4461d8:	24040004 	li	a0,4
  4461dc:	8fc20044 	lw	v0,68(s8)
  4461e0:	00000000 	nop
  4461e4:	8c450008 	lw	a1,8(v0)
  4461e8:	8fc20044 	lw	v0,68(s8)
  4461ec:	00000000 	nop
  4461f0:	8c46000c 	lw	a2,12(v0)
  4461f4:	8fc70048 	lw	a3,72(s8)
  4461f8:	8f998034 	lw	t9,-32716(gp)
  4461fc:	00000000 	nop
  446200:	2739a50c 	addiu	t9,t9,-23284
  446204:	00000000 	nop
  446208:	0320f809 	jalr	t9
  44620c:	00000000 	nop
  446210:	8fdc0018 	lw	gp,24(s8)
  446214:	14400004 	bnez	v0,446228 <main_inI2_outR2+0x50c>
  446218:	00000000 	nop
  44621c:	24020003 	li	v0,3
  446220:	10000084 	b	446434 <main_inI2_outR2+0x718>
  446224:	00000000 	nop
  446228:	8fc20030 	lw	v0,48(s8)
  44622c:	00000000 	nop
  446230:	8c420000 	lw	v0,0(v0)
  446234:	00000000 	nop
  446238:	afc20030 	sw	v0,48(s8)
  44623c:	1000ffc7 	b	44615c <main_inI2_outR2+0x440>
  446240:	00000000 	nop
	    }
	    else
	    {
		if (!build_and_ship_CR(CERT_X509_SIGNATURE, empty_chunk
		, &md->rbody, ISAKMP_NEXT_NONE))
  446244:	8fc20060 	lw	v0,96(s8)
  446248:	00000000 	nop
  44624c:	244200bc 	addiu	v0,v0,188
  446250:	afa00010 	sw	zero,16(sp)
  446254:	24040004 	li	a0,4
  446258:	8f858708 	lw	a1,-30968(gp)
  44625c:	00000000 	nop
  446260:	8ca50000 	lw	a1,0(a1)
  446264:	8f868708 	lw	a2,-30968(gp)
  446268:	00000000 	nop
  44626c:	8cc60004 	lw	a2,4(a2)
  446270:	00403821 	move	a3,v0
  446274:	8f998034 	lw	t9,-32716(gp)
  446278:	00000000 	nop
  44627c:	2739a50c 	addiu	t9,t9,-23284
  446280:	00000000 	nop
  446284:	0320f809 	jalr	t9
  446288:	00000000 	nop
  44628c:	8fdc0018 	lw	gp,24(s8)
  446290:	14400004 	bnez	v0,4462a4 <main_inI2_outR2+0x588>
  446294:	00000000 	nop
		    return STF_INTERNAL_ERROR;
  446298:	24020003 	li	v0,3
  44629c:	10000065 	b	446434 <main_inI2_outR2+0x718>
  4462a0:	00000000 	nop
	    }
	}
    }

#ifdef NAT_TRAVERSAL
    if (st->nat_traversal & NAT_T_WITH_NATD) {
  4462a4:	8fc20020 	lw	v0,32(s8)
  4462a8:	00000000 	nop
  4462ac:	8c420264 	lw	v0,612(v0)
  4462b0:	00000000 	nop
  4462b4:	3042000e 	andi	v0,v0,0xe
  4462b8:	10400011 	beqz	v0,446300 <main_inI2_outR2+0x5e4>
  4462bc:	00000000 	nop
	if (!nat_traversal_add_natd(ISAKMP_NEXT_NONE, &md->rbody, md))
  4462c0:	8fc20060 	lw	v0,96(s8)
  4462c4:	00000000 	nop
  4462c8:	244200bc 	addiu	v0,v0,188
  4462cc:	00002021 	move	a0,zero
  4462d0:	00402821 	move	a1,v0
  4462d4:	8fc60060 	lw	a2,96(s8)
  4462d8:	8f998ab8 	lw	t9,-30024(gp)
  4462dc:	00000000 	nop
  4462e0:	0320f809 	jalr	t9
  4462e4:	00000000 	nop
  4462e8:	8fdc0018 	lw	gp,24(s8)
  4462ec:	14400004 	bnez	v0,446300 <main_inI2_outR2+0x5e4>
  4462f0:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  4462f4:	24020003 	li	v0,3
  4462f8:	1000004e 	b	446434 <main_inI2_outR2+0x718>
  4462fc:	00000000 	nop
    }
#endif

    /* finish message */
    close_message(&md->rbody);
  446300:	8fc20060 	lw	v0,96(s8)
  446304:	00000000 	nop
  446308:	244200bc 	addiu	v0,v0,188
  44630c:	00402021 	move	a0,v0
  446310:	8f998324 	lw	t9,-31964(gp)
  446314:	00000000 	nop
  446318:	0320f809 	jalr	t9
  44631c:	00000000 	nop
  446320:	8fdc0018 	lw	gp,24(s8)
  446324:	00000000 	nop

    /* next message will be encrypted, but not this one.
     * We could defer this calculation.
     */
#ifndef DODGE_DH_MISSING_ZERO_BUG
    compute_dh_shared(st, st->st_gi, st->st_oakley.group);
  446328:	8fc20020 	lw	v0,32(s8)
  44632c:	8fc40020 	lw	a0,32(s8)
  446330:	8c4500e8 	lw	a1,232(v0)
  446334:	8c4600ec 	lw	a2,236(v0)
  446338:	8fc20020 	lw	v0,32(s8)
  44633c:	00000000 	nop
  446340:	8c470030 	lw	a3,48(v0)
  446344:	8f998034 	lw	t9,-32716(gp)
  446348:	00000000 	nop
  44634c:	273997dc 	addiu	t9,t9,-26660
  446350:	00000000 	nop
  446354:	0320f809 	jalr	t9
  446358:	00000000 	nop
  44635c:	8fdc0018 	lw	gp,24(s8)
  446360:	00000000 	nop
#endif
    if (!generate_skeyids_iv(st))
  446364:	8fc40020 	lw	a0,32(s8)
  446368:	8f998034 	lw	t9,-32716(gp)
  44636c:	00000000 	nop
  446370:	2739e4bc 	addiu	t9,t9,-6980
  446374:	00000000 	nop
  446378:	0320f809 	jalr	t9
  44637c:	00000000 	nop
  446380:	8fdc0018 	lw	gp,24(s8)
  446384:	14400004 	bnez	v0,446398 <main_inI2_outR2+0x67c>
  446388:	00000000 	nop
	return STF_FAIL + AUTHENTICATION_FAILED;
  44638c:	2402001c 	li	v0,28
  446390:	10000028 	b	446434 <main_inI2_outR2+0x718>
  446394:	00000000 	nop
    update_iv(st);
  446398:	8fc20020 	lw	v0,32(s8)
  44639c:	00000000 	nop
  4463a0:	8c420248 	lw	v0,584(v0)
  4463a4:	00000000 	nop
  4463a8:	2c420040 	sltiu	v0,v0,64
  4463ac:	1440000d 	bnez	v0,4463e4 <main_inI2_outR2+0x6c8>
  4463b0:	00000000 	nop
  4463b4:	8f84802c 	lw	a0,-32724(gp)
  4463b8:	00000000 	nop
  4463bc:	2484e450 	addiu	a0,a0,-7088
  4463c0:	8f85802c 	lw	a1,-32724(gp)
  4463c4:	00000000 	nop
  4463c8:	24a5d59c 	addiu	a1,a1,-10852
  4463cc:	24060d79 	li	a2,3449
  4463d0:	8f998bb8 	lw	t9,-29768(gp)
  4463d4:	00000000 	nop
  4463d8:	0320f809 	jalr	t9
  4463dc:	00000000 	nop
  4463e0:	8fdc0018 	lw	gp,24(s8)
  4463e4:	8fc20020 	lw	v0,32(s8)
  4463e8:	00000000 	nop
  4463ec:	24440184 	addiu	a0,v0,388
  4463f0:	8fc20020 	lw	v0,32(s8)
  4463f4:	00000000 	nop
  4463f8:	244501c4 	addiu	a1,v0,452
  4463fc:	8fc20020 	lw	v0,32(s8)
  446400:	00000000 	nop
  446404:	8c430248 	lw	v1,584(v0)
  446408:	8fc20020 	lw	v0,32(s8)
  44640c:	00000000 	nop
  446410:	ac430244 	sw	v1,580(v0)
  446414:	00603021 	move	a2,v1
  446418:	8f998a30 	lw	t9,-30160(gp)
  44641c:	00000000 	nop
  446420:	0320f809 	jalr	t9
  446424:	00000000 	nop
  446428:	8fdc0018 	lw	gp,24(s8)
  44642c:	00000000 	nop

    return STF_OK;
  446430:	24020002 	li	v0,2
}
  446434:	03c0e821 	move	sp,s8
  446438:	8fbf0058 	lw	ra,88(sp)
  44643c:	8fbe0054 	lw	s8,84(sp)
  446440:	27bd0060 	addiu	sp,sp,96
  446444:	03e00008 	jr	ra
  446448:	00000000 	nop

0044644c <main_inR2_outI3>:
  44644c:	3c1c0fbc 	lui	gp,0xfbc
  446450:	279c6524 	addiu	gp,gp,25892
  446454:	0399e021 	addu	gp,gp,t9
  446458:	27bdfce8 	addiu	sp,sp,-792
  44645c:	afbc0018 	sw	gp,24(sp)
  446460:	afbf0310 	sw	ra,784(sp)
  446464:	afbe030c 	sw	s8,780(sp)
  446468:	afbc0308 	sw	gp,776(sp)
  44646c:	03a0f021 	move	s8,sp
  446470:	afc40318 	sw	a0,792(s8)

/* STATE_MAIN_I2:
 * SMF_PSK_AUTH: HDR, KE, Nr --> HDR*, IDi1, HASH_I
 * SMF_DS_AUTH: HDR, KE, Nr --> HDR*, IDi1, [ CERT, ] SIG_I
 *
 * The following are not yet implemented.
 * SMF_PKE_AUTH: HDR, KE, <IDr1_b>PubKey_i, <Nr_b>PubKey_i
 *	    --> HDR*, HASH_I
 * SMF_RPKE_AUTH: HDR, <Nr_b>PubKey_i, <KE_b>Ke_r, <IDr1_b>Ke_r
 *	    --> HDR*, HASH_I
 */
stf_status
main_inR2_outI3(struct msg_digest *md)
{
    struct state *const st = md->st;
  446474:	8fc20318 	lw	v0,792(s8)
  446478:	00000000 	nop
  44647c:	8c420098 	lw	v0,152(v0)
  446480:	00000000 	nop
  446484:	afc20020 	sw	v0,32(s8)
    pb_stream *const keyex_pbs = &md->chain[ISAKMP_NEXT_KE]->pbs;
  446488:	8fc20318 	lw	v0,792(s8)
  44648c:	00000000 	nop
  446490:	8c4204b8 	lw	v0,1208(v0)
  446494:	00000000 	nop
  446498:	afc20024 	sw	v0,36(s8)
    int auth_payload = st->st_oakley.auth == OAKLEY_PRESHARED_KEY
  44649c:	8fc20020 	lw	v0,32(s8)
  4464a0:	00000000 	nop
  4464a4:	9443002c 	lhu	v1,44(v0)
  4464a8:	24020001 	li	v0,1
  4464ac:	14620005 	bne	v1,v0,4464c4 <main_inR2_outI3+0x78>
  4464b0:	00000000 	nop
  4464b4:	24020008 	li	v0,8
  4464b8:	afc202fc 	sw	v0,764(s8)
  4464bc:	10000003 	b	4464cc <main_inR2_outI3+0x80>
  4464c0:	00000000 	nop
  4464c4:	24020009 	li	v0,9
  4464c8:	afc202fc 	sw	v0,764(s8)
  4464cc:	8fc202fc 	lw	v0,764(s8)
  4464d0:	00000000 	nop
  4464d4:	afc20028 	sw	v0,40(s8)
	? ISAKMP_NEXT_HASH : ISAKMP_NEXT_SIG;
    pb_stream id_pbs;	/* ID Payload; also used for hash calculation */
    generalName_t *requested_ca = NULL;
  4464d8:	afc00050 	sw	zero,80(s8)
    cert_t mycert;
#ifdef KENNY_INITIAL_CONTACT
    struct state *p1st = NULL;
  4464dc:	afc00068 	sw	zero,104(s8)
#endif /* KENNY_INITIAL_CONTACT */

    /* send certificate if we have one and auth is RSA */
    bool send_cert = (st->st_oakley.auth == OAKLEY_RSA_SIG) &&
  4464e0:	afc00300 	sw	zero,768(s8)
  4464e4:	8fc20020 	lw	v0,32(s8)
  4464e8:	00000000 	nop
  4464ec:	9443002c 	lhu	v1,44(v0)
  4464f0:	24020003 	li	v0,3
  4464f4:	1462000f 	bne	v1,v0,446534 <main_inR2_outI3+0xe8>
  4464f8:	00000000 	nop
  4464fc:	8fc20020 	lw	v0,32(s8)
  446500:	00000000 	nop
  446504:	8c42000c 	lw	v0,12(v0)
  446508:	27c40058 	addiu	a0,s8,88
  44650c:	8c4500d0 	lw	a1,208(v0)
  446510:	8f9985f8 	lw	t9,-31240(gp)
  446514:	00000000 	nop
  446518:	0320f809 	jalr	t9
  44651c:	00000000 	nop
  446520:	8fdc0018 	lw	gp,24(s8)
  446524:	10400003 	beqz	v0,446534 <main_inR2_outI3+0xe8>
  446528:	00000000 	nop
  44652c:	24020001 	li	v0,1
  446530:	afc20300 	sw	v0,768(s8)
  446534:	8fc20300 	lw	v0,768(s8)
  446538:	00000000 	nop
  44653c:	afc2006c 	sw	v0,108(s8)
		      get_mycert(&mycert, st->st_connection->this.cert);

    /* send certificate request, if we don't have a preloaded RSA public key */
    bool send_cr = !no_cr_send && send_cert && !has_preloaded_public_key(st);
  446540:	afc00304 	sw	zero,772(s8)
  446544:	8f82844c 	lw	v0,-31668(gp)
  446548:	00000000 	nop
  44654c:	8c420000 	lw	v0,0(v0)
  446550:	00000000 	nop
  446554:	14400011 	bnez	v0,44659c <main_inR2_outI3+0x150>
  446558:	00000000 	nop
  44655c:	8fc2006c 	lw	v0,108(s8)
  446560:	00000000 	nop
  446564:	1040000d 	beqz	v0,44659c <main_inR2_outI3+0x150>
  446568:	00000000 	nop
  44656c:	8fc40020 	lw	a0,32(s8)
  446570:	8f998034 	lw	t9,-32716(gp)
  446574:	00000000 	nop
  446578:	27394208 	addiu	t9,t9,16904
  44657c:	00000000 	nop
  446580:	0320f809 	jalr	t9
  446584:	00000000 	nop
  446588:	8fdc0018 	lw	gp,24(s8)
  44658c:	14400003 	bnez	v0,44659c <main_inR2_outI3+0x150>
  446590:	00000000 	nop
  446594:	24020001 	li	v0,1
  446598:	afc20304 	sw	v0,772(s8)
  44659c:	8fc20304 	lw	v0,772(s8)
  4465a0:	00000000 	nop
  4465a4:	afc20070 	sw	v0,112(s8)

    /* KE in */
    RETURN_STF_FAILURE(accept_KE(&st->st_gr, "Gr", st->st_oakley.group, keyex_pbs));
  4465a8:	8fc20020 	lw	v0,32(s8)
  4465ac:	00000000 	nop
  4465b0:	24420100 	addiu	v0,v0,256
  4465b4:	00402021 	move	a0,v0
  4465b8:	8f85802c 	lw	a1,-32724(gp)
  4465bc:	00000000 	nop
  4465c0:	24a5edc8 	addiu	a1,a1,-4664
  4465c4:	8fc20020 	lw	v0,32(s8)
  4465c8:	00000000 	nop
  4465cc:	8c460030 	lw	a2,48(v0)
  4465d0:	8fc70024 	lw	a3,36(s8)
  4465d4:	8f998034 	lw	t9,-32716(gp)
  4465d8:	00000000 	nop
  4465dc:	27399e10 	addiu	t9,t9,-25072
  4465e0:	00000000 	nop
  4465e4:	0320f809 	jalr	t9
  4465e8:	00000000 	nop
  4465ec:	8fdc0018 	lw	gp,24(s8)
  4465f0:	afc20074 	sw	v0,116(s8)
  4465f4:	8fc20074 	lw	v0,116(s8)
  4465f8:	00000000 	nop
  4465fc:	10400006 	beqz	v0,446618 <main_inR2_outI3+0x1cc>
  446600:	00000000 	nop
  446604:	8fc20074 	lw	v0,116(s8)
  446608:	00000000 	nop
  44660c:	24420004 	addiu	v0,v0,4
  446610:	100001f0 	b	446dd4 <main_inR2_outI3+0x988>
  446614:	00000000 	nop

    /* Nr in */
    RETURN_STF_FAILURE(accept_nonce(md, &st->st_nr, "Nr"));
  446618:	8fc20020 	lw	v0,32(s8)
  44661c:	00000000 	nop
  446620:	24420110 	addiu	v0,v0,272
  446624:	8fc40318 	lw	a0,792(s8)
  446628:	00402821 	move	a1,v0
  44662c:	8f86802c 	lw	a2,-32724(gp)
  446630:	00000000 	nop
  446634:	24c6edc4 	addiu	a2,a2,-4668
  446638:	8f998034 	lw	t9,-32716(gp)
  44663c:	00000000 	nop
  446640:	2739093c 	addiu	t9,t9,2364
  446644:	00000000 	nop
  446648:	0320f809 	jalr	t9
  44664c:	00000000 	nop
  446650:	8fdc0018 	lw	gp,24(s8)
  446654:	afc20074 	sw	v0,116(s8)
  446658:	8fc20074 	lw	v0,116(s8)
  44665c:	00000000 	nop
  446660:	10400006 	beqz	v0,44667c <main_inR2_outI3+0x230>
  446664:	00000000 	nop
  446668:	8fc20074 	lw	v0,116(s8)
  44666c:	00000000 	nop
  446670:	24420004 	addiu	v0,v0,4
  446674:	100001d7 	b	446dd4 <main_inR2_outI3+0x988>
  446678:	00000000 	nop

    /* decode certificate requests */
    decode_cr(md, &requested_ca);
  44667c:	8fc40318 	lw	a0,792(s8)
  446680:	27c50050 	addiu	a1,s8,80
  446684:	8f998034 	lw	t9,-32716(gp)
  446688:	00000000 	nop
  44668c:	273929a8 	addiu	t9,t9,10664
  446690:	00000000 	nop
  446694:	0320f809 	jalr	t9
  446698:	00000000 	nop
  44669c:	8fdc0018 	lw	gp,24(s8)
  4466a0:	00000000 	nop

    /* free collected certificate requests since as initiator
     * we don't heed them anyway
     */
    free_generalNames(requested_ca, TRUE);
  4466a4:	8fc40050 	lw	a0,80(s8)
  4466a8:	24050001 	li	a1,1
  4466ac:	8f9987ac 	lw	t9,-30804(gp)
  4466b0:	00000000 	nop
  4466b4:	0320f809 	jalr	t9
  4466b8:	00000000 	nop
  4466bc:	8fdc0018 	lw	gp,24(s8)
  4466c0:	00000000 	nop
    
    /* done parsing; initialize crypto  */

    compute_dh_shared(st, st->st_gr, st->st_oakley.group);
  4466c4:	8fc20020 	lw	v0,32(s8)
  4466c8:	8fc40020 	lw	a0,32(s8)
  4466cc:	8c450100 	lw	a1,256(v0)
  4466d0:	8c460104 	lw	a2,260(v0)
  4466d4:	8fc20020 	lw	v0,32(s8)
  4466d8:	00000000 	nop
  4466dc:	8c470030 	lw	a3,48(v0)
  4466e0:	8f998034 	lw	t9,-32716(gp)
  4466e4:	00000000 	nop
  4466e8:	273997dc 	addiu	t9,t9,-26660
  4466ec:	00000000 	nop
  4466f0:	0320f809 	jalr	t9
  4466f4:	00000000 	nop
  4466f8:	8fdc0018 	lw	gp,24(s8)
  4466fc:	00000000 	nop
#ifdef DODGE_DH_MISSING_ZERO_BUG
    if (st->st_shared.ptr[0] == 0)
	return STF_REPLACE_DOOMED_EXCHANGE;
#endif
    if (!generate_skeyids_iv(st))
  446700:	8fc40020 	lw	a0,32(s8)
  446704:	8f998034 	lw	t9,-32716(gp)
  446708:	00000000 	nop
  44670c:	2739e4bc 	addiu	t9,t9,-6980
  446710:	00000000 	nop
  446714:	0320f809 	jalr	t9
  446718:	00000000 	nop
  44671c:	8fdc0018 	lw	gp,24(s8)
  446720:	14400004 	bnez	v0,446734 <main_inR2_outI3+0x2e8>
  446724:	00000000 	nop
	return STF_FAIL + AUTHENTICATION_FAILED;
  446728:	2402001c 	li	v0,28
  44672c:	100001a9 	b	446dd4 <main_inR2_outI3+0x988>
  446730:	00000000 	nop

#ifdef NAT_TRAVERSAL
	if (st->nat_traversal & NAT_T_WITH_NATD) {
  446734:	8fc20020 	lw	v0,32(s8)
  446738:	00000000 	nop
  44673c:	8c420264 	lw	v0,612(v0)
  446740:	00000000 	nop
  446744:	3042000e 	andi	v0,v0,0xe
  446748:	10400008 	beqz	v0,44676c <main_inR2_outI3+0x320>
  44674c:	00000000 	nop
	    nat_traversal_natd_lookup(md);
  446750:	8fc40318 	lw	a0,792(s8)
  446754:	8f998670 	lw	t9,-31120(gp)
  446758:	00000000 	nop
  44675c:	0320f809 	jalr	t9
  446760:	00000000 	nop
  446764:	8fdc0018 	lw	gp,24(s8)
  446768:	00000000 	nop
	}
	if (st->nat_traversal) {
  44676c:	8fc20020 	lw	v0,32(s8)
  446770:	00000000 	nop
  446774:	8c420264 	lw	v0,612(v0)
  446778:	00000000 	nop
  44677c:	1040000e 	beqz	v0,4467b8 <main_inR2_outI3+0x36c>
  446780:	00000000 	nop
	    nat_traversal_show_result(st->nat_traversal, md->sender_port);
  446784:	8fc20318 	lw	v0,792(s8)
  446788:	00000000 	nop
  44678c:	9443002c 	lhu	v1,44(v0)
  446790:	8fc20020 	lw	v0,32(s8)
  446794:	00000000 	nop
  446798:	8c440264 	lw	a0,612(v0)
  44679c:	00602821 	move	a1,v1
  4467a0:	8f99881c 	lw	t9,-30692(gp)
  4467a4:	00000000 	nop
  4467a8:	0320f809 	jalr	t9
  4467ac:	00000000 	nop
  4467b0:	8fdc0018 	lw	gp,24(s8)
  4467b4:	00000000 	nop
	}
	if (st->nat_traversal & NAT_T_WITH_KA) {
  4467b8:	8fc20020 	lw	v0,32(s8)
  4467bc:	00000000 	nop
  4467c0:	8c420264 	lw	v0,612(v0)
  4467c4:	00000000 	nop
  4467c8:	3042000e 	andi	v0,v0,0xe
  4467cc:	10400007 	beqz	v0,4467ec <main_inR2_outI3+0x3a0>
  4467d0:	00000000 	nop
	    nat_traversal_new_ka_event();
  4467d4:	8f9981d8 	lw	t9,-32296(gp)
  4467d8:	00000000 	nop
  4467dc:	0320f809 	jalr	t9
  4467e0:	00000000 	nop
  4467e4:	8fdc0018 	lw	gp,24(s8)
  4467e8:	00000000 	nop
	}
#endif

    /*************** build output packet HDR*;IDii;HASH/SIG_I ***************/
    /* ??? NOTE: this is almost the same as main_inI3_outR3's code */

    /* HDR* out done */
#ifdef KENNY_INITIAL_CONTACT
    /*************** build output packet HDR*;IDii;[IC];HASH/SIG_I ***************/
    p1st = find_phase1_state_with_peer(&md->sender);
  4467ec:	8fc20318 	lw	v0,792(s8)
  4467f0:	00000000 	nop
  4467f4:	24420010 	addiu	v0,v0,16
  4467f8:	00402021 	move	a0,v0
  4467fc:	8f998c44 	lw	t9,-29628(gp)
  446800:	00000000 	nop
  446804:	0320f809 	jalr	t9
  446808:	00000000 	nop
  44680c:	8fdc0018 	lw	gp,24(s8)
  446810:	afc20068 	sw	v0,104(s8)
    if (p1st == NULL)
  446814:	8fc20068 	lw	v0,104(s8)
  446818:	00000000 	nop
  44681c:	14400007 	bnez	v0,44683c <main_inR2_outI3+0x3f0>
  446820:	00000000 	nop
    	st->initial_contact = TRUE;
  446824:	24030001 	li	v1,1
  446828:	8fc20020 	lw	v0,32(s8)
  44682c:	00000000 	nop
  446830:	ac4302a0 	sw	v1,672(v0)
  446834:	10000004 	b	446848 <main_inR2_outI3+0x3fc>
  446838:	00000000 	nop
    else
    	st->initial_contact = FALSE;
  44683c:	8fc20020 	lw	v0,32(s8)
  446840:	00000000 	nop
  446844:	ac4002a0 	sw	zero,672(v0)
#endif //KENNY_INITIAL_CONTACT

    /* IDii out */
    {
	struct isakmp_ipsec_id id_hd;
	chunk_t id_b;

	build_id_payload(&id_hd, &id_b, &st->st_connection->this);
  446848:	8fc20020 	lw	v0,32(s8)
  44684c:	00000000 	nop
  446850:	8c42000c 	lw	v0,12(v0)
  446854:	00000000 	nop
  446858:	24420030 	addiu	v0,v0,48
  44685c:	27c40078 	addiu	a0,s8,120
  446860:	27c50080 	addiu	a1,s8,128
  446864:	00403021 	move	a2,v0
  446868:	8f998140 	lw	t9,-32448(gp)
  44686c:	00000000 	nop
  446870:	0320f809 	jalr	t9
  446874:	00000000 	nop
  446878:	8fdc0018 	lw	gp,24(s8)
  44687c:	00000000 	nop
#ifdef KENNY_INITIAL_CONTACT
    	if (p1st == NULL)
  446880:	8fc20068 	lw	v0,104(s8)
  446884:	00000000 	nop
  446888:	14400005 	bnez	v0,4468a0 <main_inR2_outI3+0x454>
  44688c:	00000000 	nop
		id_hd.isaiid_np = ISAKMP_NEXT_N;	
  446890:	2402000b 	li	v0,11
  446894:	a3c20078 	sb	v0,120(s8)
  446898:	1000000c 	b	4468cc <main_inR2_outI3+0x480>
  44689c:	00000000 	nop
	else	
		id_hd.isaiid_np = (send_cert)? ISAKMP_NEXT_CERT : auth_payload;	
  4468a0:	8fc2006c 	lw	v0,108(s8)
  4468a4:	00000000 	nop
  4468a8:	14400006 	bnez	v0,4468c4 <main_inR2_outI3+0x478>
  4468ac:	00000000 	nop
  4468b0:	93c2002b 	lbu	v0,43(s8)
  4468b4:	00000000 	nop
  4468b8:	a3c20078 	sb	v0,120(s8)
  4468bc:	10000003 	b	4468cc <main_inR2_outI3+0x480>
  4468c0:	00000000 	nop
  4468c4:	24020006 	li	v0,6
  4468c8:	a3c20078 	sb	v0,120(s8)
#else	
	id_hd.isaiid_np = (send_cert)? ISAKMP_NEXT_CERT : auth_payload;	
#endif	
	if (!out_struct(&id_hd, &isakmp_ipsec_identification_desc, &md->rbody, &id_pbs)
	|| !out_chunk(id_b, &id_pbs, "my identity"))
  4468cc:	8fc20318 	lw	v0,792(s8)
  4468d0:	00000000 	nop
  4468d4:	244200bc 	addiu	v0,v0,188
  4468d8:	27c40078 	addiu	a0,s8,120
  4468dc:	8f858988 	lw	a1,-30328(gp)
  4468e0:	00403021 	move	a2,v0
  4468e4:	27c70030 	addiu	a3,s8,48
  4468e8:	8f998ba0 	lw	t9,-29792(gp)
  4468ec:	00000000 	nop
  4468f0:	0320f809 	jalr	t9
  4468f4:	00000000 	nop
  4468f8:	8fdc0018 	lw	gp,24(s8)
  4468fc:	1040000e 	beqz	v0,446938 <main_inR2_outI3+0x4ec>
  446900:	00000000 	nop
  446904:	8fc40080 	lw	a0,128(s8)
  446908:	8fc50084 	lw	a1,132(s8)
  44690c:	27c60030 	addiu	a2,s8,48
  446910:	8f87802c 	lw	a3,-32724(gp)
  446914:	00000000 	nop
  446918:	24e7dd3c 	addiu	a3,a3,-8900
  44691c:	8f998308 	lw	t9,-31992(gp)
  446920:	00000000 	nop
  446924:	0320f809 	jalr	t9
  446928:	00000000 	nop
  44692c:	8fdc0018 	lw	gp,24(s8)
  446930:	14400004 	bnez	v0,446944 <main_inR2_outI3+0x4f8>
  446934:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  446938:	24020003 	li	v0,3
  44693c:	10000125 	b	446dd4 <main_inR2_outI3+0x988>
  446940:	00000000 	nop
	close_output_pbs(&id_pbs);
  446944:	27c40030 	addiu	a0,s8,48
  446948:	8f998228 	lw	t9,-32216(gp)
  44694c:	00000000 	nop
  446950:	0320f809 	jalr	t9
  446954:	00000000 	nop
  446958:	8fdc0018 	lw	gp,24(s8)
  44695c:	00000000 	nop
    }


#ifdef KENNY_INITIAL_CONTACT
    /* IC out */
    {
   	if (st->initial_contact == TRUE) {
  446960:	8fc20020 	lw	v0,32(s8)
  446964:	00000000 	nop
  446968:	8c4302a0 	lw	v1,672(v0)
  44696c:	24020001 	li	v0,1
  446970:	14620053 	bne	v1,v0,446ac0 <main_inR2_outI3+0x674>
  446974:	00000000 	nop
            // build IC payload
		pb_stream not_pbs;
		struct isakmp_notification isan;

    		loglog(RC_LOG_SERIOUS, "main__inR2_outI3: build IC payload");
  446978:	24040003 	li	a0,3
  44697c:	8f85802c 	lw	a1,-32724(gp)
  446980:	00000000 	nop
  446984:	24a5edcc 	addiu	a1,a1,-4660
  446988:	8f998c48 	lw	t9,-29624(gp)
  44698c:	00000000 	nop
  446990:	0320f809 	jalr	t9
  446994:	00000000 	nop
  446998:	8fdc0018 	lw	gp,24(s8)
  44699c:	00000000 	nop
		isan.isan_doi = ISAKMP_DOI_IPSEC;
  4469a0:	24020001 	li	v0,1
  4469a4:	afc200ac 	sw	v0,172(s8)
		isan.isan_np = (send_cert)? ISAKMP_NEXT_CERT : auth_payload;
  4469a8:	8fc2006c 	lw	v0,108(s8)
  4469ac:	00000000 	nop
  4469b0:	14400006 	bnez	v0,4469cc <main_inR2_outI3+0x580>
  4469b4:	00000000 	nop
  4469b8:	93c2002b 	lbu	v0,43(s8)
  4469bc:	00000000 	nop
  4469c0:	a3c200a8 	sb	v0,168(s8)
  4469c4:	10000003 	b	4469d4 <main_inR2_outI3+0x588>
  4469c8:	00000000 	nop
  4469cc:	24020006 	li	v0,6
  4469d0:	a3c200a8 	sb	v0,168(s8)
		isan.isan_type = IPSEC_INITIAL_CONTACT;
  4469d4:	24026002 	li	v0,24578
  4469d8:	a7c200b2 	sh	v0,178(s8)
		isan.isan_spisize = 16;
  4469dc:	24020010 	li	v0,16
  4469e0:	a3c200b1 	sb	v0,177(s8)
		isan.isan_protoid = PROTO_ISAKMP; 
  4469e4:	24020001 	li	v0,1
  4469e8:	a3c200b0 	sb	v0,176(s8)

		if (!out_struct(&isan, &isakmp_notification_desc, &md->rbody, &not_pbs)
	    		|| !out_raw(md->hdr.isa_icookie, 16, &not_pbs, "spi"))
  4469ec:	8fc20318 	lw	v0,792(s8)
  4469f0:	00000000 	nop
  4469f4:	244200bc 	addiu	v0,v0,188
  4469f8:	27c400a8 	addiu	a0,s8,168
  4469fc:	8f85812c 	lw	a1,-32468(gp)
  446a00:	00403021 	move	a2,v0
  446a04:	27c70088 	addiu	a3,s8,136
  446a08:	8f998ba0 	lw	t9,-29792(gp)
  446a0c:	00000000 	nop
  446a10:	0320f809 	jalr	t9
  446a14:	00000000 	nop
  446a18:	8fdc0018 	lw	gp,24(s8)
  446a1c:	10400011 	beqz	v0,446a64 <main_inR2_outI3+0x618>
  446a20:	00000000 	nop
  446a24:	8fc20318 	lw	v0,792(s8)
  446a28:	00000000 	nop
  446a2c:	24420070 	addiu	v0,v0,112
  446a30:	00402021 	move	a0,v0
  446a34:	24050010 	li	a1,16
  446a38:	27c60088 	addiu	a2,s8,136
  446a3c:	8f87802c 	lw	a3,-32724(gp)
  446a40:	00000000 	nop
  446a44:	24e7d7e4 	addiu	a3,a3,-10268
  446a48:	8f998308 	lw	t9,-31992(gp)
  446a4c:	00000000 	nop
  446a50:	0320f809 	jalr	t9
  446a54:	00000000 	nop
  446a58:	8fdc0018 	lw	gp,24(s8)
  446a5c:	1440000e 	bnez	v0,446a98 <main_inR2_outI3+0x64c>
  446a60:	00000000 	nop
	    		impossible();
  446a64:	8f84802c 	lw	a0,-32724(gp)
  446a68:	00000000 	nop
  446a6c:	2484d590 	addiu	a0,a0,-10864
  446a70:	8f85802c 	lw	a1,-32724(gp)
  446a74:	00000000 	nop
  446a78:	24a5d59c 	addiu	a1,a1,-10852
  446a7c:	24060df4 	li	a2,3572
  446a80:	8f998bb8 	lw	t9,-29768(gp)
  446a84:	00000000 	nop
  446a88:	0320f809 	jalr	t9
  446a8c:	00000000 	nop
  446a90:	8fdc0018 	lw	gp,24(s8)
  446a94:	00000000 	nop
		close_output_pbs(&not_pbs);
  446a98:	27c40088 	addiu	a0,s8,136
  446a9c:	8f998228 	lw	t9,-32216(gp)
  446aa0:	00000000 	nop
  446aa4:	0320f809 	jalr	t9
  446aa8:	00000000 	nop
  446aac:	8fdc0018 	lw	gp,24(s8)
  446ab0:	00000000 	nop

		st->initial_contact = FALSE;
  446ab4:	8fc20020 	lw	v0,32(s8)
  446ab8:	00000000 	nop
  446abc:	ac4002a0 	sw	zero,672(v0)

	}

    }
#endif //KENNY_INITIAL_CONTACT

    /* CERT out */
    if (send_cert)
  446ac0:	8fc2006c 	lw	v0,108(s8)
  446ac4:	00000000 	nop
  446ac8:	10400036 	beqz	v0,446ba4 <main_inR2_outI3+0x758>
  446acc:	00000000 	nop
    {
	pb_stream cert_pbs;

	struct isakmp_cert cert_hd;
	cert_hd.isacert_np = (send_cr)? ISAKMP_NEXT_CR : ISAKMP_NEXT_SIG;
  446ad0:	8fc20070 	lw	v0,112(s8)
  446ad4:	00000000 	nop
  446ad8:	10400005 	beqz	v0,446af0 <main_inR2_outI3+0x6a4>
  446adc:	00000000 	nop
  446ae0:	24020007 	li	v0,7
  446ae4:	a3c200a8 	sb	v0,168(s8)
  446ae8:	10000003 	b	446af8 <main_inR2_outI3+0x6ac>
  446aec:	00000000 	nop
  446af0:	24020009 	li	v0,9
  446af4:	a3c200a8 	sb	v0,168(s8)
	cert_hd.isacert_type = mycert.type;
  446af8:	93c20058 	lbu	v0,88(s8)
  446afc:	00000000 	nop
  446b00:	a3c200ac 	sb	v0,172(s8)

	if (!out_struct(&cert_hd, &isakmp_ipsec_certificate_desc, &md->rbody, &cert_pbs))
  446b04:	8fc20318 	lw	v0,792(s8)
  446b08:	00000000 	nop
  446b0c:	244200bc 	addiu	v0,v0,188
  446b10:	27c400a8 	addiu	a0,s8,168
  446b14:	8f8586d0 	lw	a1,-31024(gp)
  446b18:	00403021 	move	a2,v0
  446b1c:	27c70088 	addiu	a3,s8,136
  446b20:	8f998ba0 	lw	t9,-29792(gp)
  446b24:	00000000 	nop
  446b28:	0320f809 	jalr	t9
  446b2c:	00000000 	nop
  446b30:	8fdc0018 	lw	gp,24(s8)
  446b34:	14400004 	bnez	v0,446b48 <main_inR2_outI3+0x6fc>
  446b38:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  446b3c:	24020003 	li	v0,3
  446b40:	100000a4 	b	446dd4 <main_inR2_outI3+0x988>
  446b44:	00000000 	nop
	if (!out_chunk(mycert.cert, &cert_pbs, "CERT"))
  446b48:	8fc4005c 	lw	a0,92(s8)
  446b4c:	8fc50060 	lw	a1,96(s8)
  446b50:	27c60088 	addiu	a2,s8,136
  446b54:	8f87802c 	lw	a3,-32724(gp)
  446b58:	00000000 	nop
  446b5c:	24e7edf0 	addiu	a3,a3,-4624
  446b60:	8f998308 	lw	t9,-31992(gp)
  446b64:	00000000 	nop
  446b68:	0320f809 	jalr	t9
  446b6c:	00000000 	nop
  446b70:	8fdc0018 	lw	gp,24(s8)
  446b74:	14400004 	bnez	v0,446b88 <main_inR2_outI3+0x73c>
  446b78:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  446b7c:	24020003 	li	v0,3
  446b80:	10000094 	b	446dd4 <main_inR2_outI3+0x988>
  446b84:	00000000 	nop
	close_output_pbs(&cert_pbs);
  446b88:	27c40088 	addiu	a0,s8,136
  446b8c:	8f998228 	lw	t9,-32216(gp)
  446b90:	00000000 	nop
  446b94:	0320f809 	jalr	t9
  446b98:	00000000 	nop
  446b9c:	8fdc0018 	lw	gp,24(s8)
  446ba0:	00000000 	nop
    }

    /* CR out */
    if (send_cr)
  446ba4:	8fc20070 	lw	v0,112(s8)
  446ba8:	00000000 	nop
  446bac:	10400018 	beqz	v0,446c10 <main_inR2_outI3+0x7c4>
  446bb0:	00000000 	nop
    {
	if (!build_and_ship_CR(mycert.type, st->st_connection->that.ca
	, &md->rbody, ISAKMP_NEXT_SIG))
  446bb4:	93c40058 	lbu	a0,88(s8)
  446bb8:	8fc20020 	lw	v0,32(s8)
  446bbc:	00000000 	nop
  446bc0:	8c43000c 	lw	v1,12(v0)
  446bc4:	8fc20318 	lw	v0,792(s8)
  446bc8:	00000000 	nop
  446bcc:	244700bc 	addiu	a3,v0,188
  446bd0:	24020009 	li	v0,9
  446bd4:	afa20010 	sw	v0,16(sp)
  446bd8:	8c650184 	lw	a1,388(v1)
  446bdc:	8c660188 	lw	a2,392(v1)
  446be0:	8f998034 	lw	t9,-32716(gp)
  446be4:	00000000 	nop
  446be8:	2739a50c 	addiu	t9,t9,-23284
  446bec:	00000000 	nop
  446bf0:	0320f809 	jalr	t9
  446bf4:	00000000 	nop
  446bf8:	8fdc0018 	lw	gp,24(s8)
  446bfc:	14400004 	bnez	v0,446c10 <main_inR2_outI3+0x7c4>
  446c00:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  446c04:	24020003 	li	v0,3
  446c08:	10000072 	b	446dd4 <main_inR2_outI3+0x988>
  446c0c:	00000000 	nop
    }

    /* HASH_I or SIG_I out */
    {
	u_char hash_val[MAX_DIGEST_LEN];
	size_t hash_len = main_mode_hash(st, hash_val, TRUE, &id_pbs);
  446c10:	8fc40020 	lw	a0,32(s8)
  446c14:	27c500b8 	addiu	a1,s8,184
  446c18:	24060001 	li	a2,1
  446c1c:	27c70030 	addiu	a3,s8,48
  446c20:	8f998034 	lw	t9,-32716(gp)
  446c24:	00000000 	nop
  446c28:	2739f3b4 	addiu	t9,t9,-3148
  446c2c:	00000000 	nop
  446c30:	0320f809 	jalr	t9
  446c34:	00000000 	nop
  446c38:	8fdc0018 	lw	gp,24(s8)
  446c3c:	afc20074 	sw	v0,116(s8)

	if (auth_payload == ISAKMP_NEXT_HASH)
  446c40:	8fc30028 	lw	v1,40(s8)
  446c44:	24020008 	li	v0,8
  446c48:	1462001a 	bne	v1,v0,446cb4 <main_inR2_outI3+0x868>
  446c4c:	00000000 	nop
	{
	    /* HASH_I out */
	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_hash_desc, &md->rbody
	    , hash_val, hash_len, "HASH_I"))
  446c50:	8fc20318 	lw	v0,792(s8)
  446c54:	00000000 	nop
  446c58:	244300bc 	addiu	v1,v0,188
  446c5c:	8fc20074 	lw	v0,116(s8)
  446c60:	00000000 	nop
  446c64:	afa20010 	sw	v0,16(sp)
  446c68:	8f82802c 	lw	v0,-32724(gp)
  446c6c:	00000000 	nop
  446c70:	2442edf8 	addiu	v0,v0,-4616
  446c74:	00000000 	nop
  446c78:	afa20014 	sw	v0,20(sp)
  446c7c:	00002021 	move	a0,zero
  446c80:	8f858924 	lw	a1,-30428(gp)
  446c84:	00603021 	move	a2,v1
  446c88:	27c700b8 	addiu	a3,s8,184
  446c8c:	8f99841c 	lw	t9,-31716(gp)
  446c90:	00000000 	nop
  446c94:	0320f809 	jalr	t9
  446c98:	00000000 	nop
  446c9c:	8fdc0018 	lw	gp,24(s8)
  446ca0:	1440003c 	bnez	v0,446d94 <main_inR2_outI3+0x948>
  446ca4:	00000000 	nop
		return STF_INTERNAL_ERROR;
  446ca8:	24020003 	li	v0,3
  446cac:	10000049 	b	446dd4 <main_inR2_outI3+0x988>
  446cb0:	00000000 	nop
	}
	else
	{
	    /* SIG_I out */
	    u_char sig_val[RSA_MAX_OCTETS];
	    size_t sig_len = RSA_sign_hash(st->st_connection
  446cb4:	8fc20020 	lw	v0,32(s8)
  446cb8:	00000000 	nop
  446cbc:	8c44000c 	lw	a0,12(v0)
  446cc0:	27c500f8 	addiu	a1,s8,248
  446cc4:	27c600b8 	addiu	a2,s8,184
  446cc8:	8fc70074 	lw	a3,116(s8)
  446ccc:	8f998034 	lw	t9,-32716(gp)
  446cd0:	00000000 	nop
  446cd4:	2739f4ac 	addiu	t9,t9,-2900
  446cd8:	00000000 	nop
  446cdc:	0320f809 	jalr	t9
  446ce0:	00000000 	nop
  446ce4:	8fdc0018 	lw	gp,24(s8)
  446ce8:	afc202f8 	sw	v0,760(s8)
		, sig_val, hash_val, hash_len);

	    if (sig_len == 0)
  446cec:	8fc202f8 	lw	v0,760(s8)
  446cf0:	00000000 	nop
  446cf4:	1440000e 	bnez	v0,446d30 <main_inR2_outI3+0x8e4>
  446cf8:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "unable to locate my private key for RSA Signature");
  446cfc:	24040003 	li	a0,3
  446d00:	8f85802c 	lw	a1,-32724(gp)
  446d04:	00000000 	nop
  446d08:	24a5ee00 	addiu	a1,a1,-4608
  446d0c:	8f998c48 	lw	t9,-29624(gp)
  446d10:	00000000 	nop
  446d14:	0320f809 	jalr	t9
  446d18:	00000000 	nop
  446d1c:	8fdc0018 	lw	gp,24(s8)
  446d20:	00000000 	nop
		return STF_FAIL + AUTHENTICATION_FAILED;
  446d24:	2402001c 	li	v0,28
  446d28:	1000002a 	b	446dd4 <main_inR2_outI3+0x988>
  446d2c:	00000000 	nop
	    }

	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_signature_desc
	    , &md->rbody, sig_val, sig_len, "SIG_I"))
  446d30:	8fc20318 	lw	v0,792(s8)
  446d34:	00000000 	nop
  446d38:	244300bc 	addiu	v1,v0,188
  446d3c:	8fc202f8 	lw	v0,760(s8)
  446d40:	00000000 	nop
  446d44:	afa20010 	sw	v0,16(sp)
  446d48:	8f82802c 	lw	v0,-32724(gp)
  446d4c:	00000000 	nop
  446d50:	2442ee34 	addiu	v0,v0,-4556
  446d54:	00000000 	nop
  446d58:	afa20014 	sw	v0,20(sp)
  446d5c:	00002021 	move	a0,zero
  446d60:	8f858a38 	lw	a1,-30152(gp)
  446d64:	00603021 	move	a2,v1
  446d68:	27c700f8 	addiu	a3,s8,248
  446d6c:	8f99841c 	lw	t9,-31716(gp)
  446d70:	00000000 	nop
  446d74:	0320f809 	jalr	t9
  446d78:	00000000 	nop
  446d7c:	8fdc0018 	lw	gp,24(s8)
  446d80:	14400004 	bnez	v0,446d94 <main_inR2_outI3+0x948>
  446d84:	00000000 	nop
		return STF_INTERNAL_ERROR;
  446d88:	24020003 	li	v0,3
  446d8c:	10000011 	b	446dd4 <main_inR2_outI3+0x988>
  446d90:	00000000 	nop
	}
    }


    /* encrypt message, except for fixed part of header */

    /* st_new_iv was computed by generate_skeyids_iv */
    if (!encrypt_message(&md->rbody, st))
  446d94:	8fc20318 	lw	v0,792(s8)
  446d98:	00000000 	nop
  446d9c:	244200bc 	addiu	v0,v0,188
  446da0:	00402021 	move	a0,v0
  446da4:	8fc50020 	lw	a1,32(s8)
  446da8:	8f99885c 	lw	t9,-30628(gp)
  446dac:	00000000 	nop
  446db0:	0320f809 	jalr	t9
  446db4:	00000000 	nop
  446db8:	8fdc0018 	lw	gp,24(s8)
  446dbc:	14400004 	bnez	v0,446dd0 <main_inR2_outI3+0x984>
  446dc0:	00000000 	nop
	return STF_INTERNAL_ERROR;	/* ??? we may be partly committed */
  446dc4:	24020003 	li	v0,3
  446dc8:	10000002 	b	446dd4 <main_inR2_outI3+0x988>
  446dcc:	00000000 	nop

    return STF_OK;
  446dd0:	24020002 	li	v0,2
}
  446dd4:	03c0e821 	move	sp,s8
  446dd8:	8fbf0310 	lw	ra,784(sp)
  446ddc:	8fbe030c 	lw	s8,780(sp)
  446de0:	27bd0318 	addiu	sp,sp,792
  446de4:	03e00008 	jr	ra
  446de8:	00000000 	nop

00446dec <report_key_dns_failure>:
  446dec:	3c1c0fbc 	lui	gp,0xfbc
  446df0:	279c5b84 	addiu	gp,gp,23428
  446df4:	0399e021 	addu	gp,gp,t9
  446df8:	27bdfdd8 	addiu	sp,sp,-552
  446dfc:	afbc0010 	sw	gp,16(sp)
  446e00:	afbf0220 	sw	ra,544(sp)
  446e04:	afbe021c 	sw	s8,540(sp)
  446e08:	afbc0218 	sw	gp,536(sp)
  446e0c:	03a0f021 	move	s8,sp
  446e10:	afc40228 	sw	a0,552(s8)
  446e14:	afc5022c 	sw	a1,556(s8)

/* Shared logic for asynchronous lookup of DNS KEY records.
 * Used for STATE_MAIN_R2 and STATE_MAIN_I3.
 */

struct key_continuation {
    struct adns_continuation ac;	/* common prefix */
    struct msg_digest *md;
};

static void
report_key_dns_failure(struct id *id, err_t ugh)
{
    char id_buf[IDTOA_BUF];	/* arbitrary limit on length of ID reported */

    (void) idtoa(id, id_buf, sizeof(id_buf));
  446e18:	8fc40228 	lw	a0,552(s8)
  446e1c:	27c50018 	addiu	a1,s8,24
  446e20:	24060200 	li	a2,512
  446e24:	8f998798 	lw	t9,-30824(gp)
  446e28:	00000000 	nop
  446e2c:	0320f809 	jalr	t9
  446e30:	00000000 	nop
  446e34:	8fdc0010 	lw	gp,16(s8)
  446e38:	00000000 	nop
    loglog(RC_LOG_SERIOUS, "no RSA public key known for '%s'"
  446e3c:	24040003 	li	a0,3
  446e40:	8f85802c 	lw	a1,-32724(gp)
  446e44:	00000000 	nop
  446e48:	24a5e28c 	addiu	a1,a1,-7540
  446e4c:	27c60018 	addiu	a2,s8,24
  446e50:	8fc7022c 	lw	a3,556(s8)
  446e54:	8f998c48 	lw	t9,-29624(gp)
  446e58:	00000000 	nop
  446e5c:	0320f809 	jalr	t9
  446e60:	00000000 	nop
  446e64:	8fdc0010 	lw	gp,16(s8)
  446e68:	00000000 	nop
	"; DNS search for KEY failed (%s)", id_buf, ugh);
}
  446e6c:	03c0e821 	move	sp,s8
  446e70:	8fbf0220 	lw	ra,544(sp)
  446e74:	8fbe021c 	lw	s8,540(sp)
  446e78:	27bd0228 	addiu	sp,sp,552
  446e7c:	03e00008 	jr	ra
  446e80:	00000000 	nop

00446e84 <oakley_id_and_auth>:
  446e84:	3c1c0fbc 	lui	gp,0xfbc
  446e88:	279c5aec 	addiu	gp,gp,23276
  446e8c:	0399e021 	addu	gp,gp,t9
  446e90:	27bdff70 	addiu	sp,sp,-144
  446e94:	afbc0018 	sw	gp,24(sp)
  446e98:	afbf0088 	sw	ra,136(sp)
  446e9c:	afbe0084 	sw	s8,132(sp)
  446ea0:	afbc0080 	sw	gp,128(sp)
  446ea4:	03a0f021 	move	s8,sp
  446ea8:	afc40090 	sw	a0,144(s8)
  446eac:	afc50094 	sw	a1,148(s8)
  446eb0:	afc60098 	sw	a2,152(s8)
  446eb4:	afc7009c 	sw	a3,156(s8)

/* Processs the OAKLEY ID Payload and the Authenticator
 * (Hash or Signature Payload).
 * If a KEY lookup is needed, it is initiated and STF_SUSPEND is returned.
 * Note: global keys_from_dns contains results of DNS lookup for key
 * or is NULL indicating lookup not yet tried.
 */
static stf_status
oakley_id_and_auth(struct msg_digest *md
, bool initiator	/* are we the Initiator? */
, bool aggrmode		/* aggressive mode? */
, cont_fn_t cont_fn)	/* continuation function */
{
    struct state *st = md->st;
  446eb8:	8fc20090 	lw	v0,144(s8)
  446ebc:	00000000 	nop
  446ec0:	8c420098 	lw	v0,152(v0)
  446ec4:	00000000 	nop
  446ec8:	afc20020 	sw	v0,32(s8)
    u_char hash_val[MAX_DIGEST_LEN];
    size_t hash_len;
    stf_status r = STF_OK;
  446ecc:	24020002 	li	v0,2
  446ed0:	afc2006c 	sw	v0,108(s8)

    /* ID Payload in.
     * Note: this may switch the connection being used!
     */
    if (!decode_peer_id(md, initiator, aggrmode))
  446ed4:	8fc40090 	lw	a0,144(s8)
  446ed8:	8fc50094 	lw	a1,148(s8)
  446edc:	8fc60098 	lw	a2,152(s8)
  446ee0:	8f998034 	lw	t9,-32716(gp)
  446ee4:	00000000 	nop
  446ee8:	27392ca4 	addiu	t9,t9,11428
  446eec:	00000000 	nop
  446ef0:	0320f809 	jalr	t9
  446ef4:	00000000 	nop
  446ef8:	8fdc0018 	lw	gp,24(s8)
  446efc:	14400004 	bnez	v0,446f10 <oakley_id_and_auth+0x8c>
  446f00:	00000000 	nop
	return STF_FAIL + INVALID_ID_INFORMATION;
  446f04:	24020016 	li	v0,22
  446f08:	100000ff 	b	447308 <oakley_id_and_auth+0x484>
  446f0c:	00000000 	nop

    /* Hash the ID Payload.
     * main_mode_hash requires idpl->cur to be at end of payload
     * so we temporarily set if so.
     */
    {
	pb_stream *idpl = &md->chain[ISAKMP_NEXT_ID]->pbs;
  446f10:	8fc20090 	lw	v0,144(s8)
  446f14:	00000000 	nop
  446f18:	8c4204bc 	lw	v0,1212(v0)
  446f1c:	00000000 	nop
  446f20:	afc20070 	sw	v0,112(s8)
	u_int8_t *old_cur = idpl->cur;
  446f24:	8fc20070 	lw	v0,112(s8)
  446f28:	00000000 	nop
  446f2c:	8c420010 	lw	v0,16(v0)
  446f30:	00000000 	nop
  446f34:	afc20074 	sw	v0,116(s8)

	idpl->cur = idpl->roof;
  446f38:	8fc20070 	lw	v0,112(s8)
  446f3c:	00000000 	nop
  446f40:	8c430014 	lw	v1,20(v0)
  446f44:	8fc20070 	lw	v0,112(s8)
  446f48:	00000000 	nop
  446f4c:	ac430010 	sw	v1,16(v0)
	hash_len = main_mode_hash(st, hash_val, !initiator, idpl);
  446f50:	8fc20094 	lw	v0,148(s8)
  446f54:	00000000 	nop
  446f58:	38420000 	xori	v0,v0,0x0
  446f5c:	2c420001 	sltiu	v0,v0,1
  446f60:	8fc40020 	lw	a0,32(s8)
  446f64:	27c50028 	addiu	a1,s8,40
  446f68:	00403021 	move	a2,v0
  446f6c:	8fc70070 	lw	a3,112(s8)
  446f70:	8f998034 	lw	t9,-32716(gp)
  446f74:	00000000 	nop
  446f78:	2739f3b4 	addiu	t9,t9,-3148
  446f7c:	00000000 	nop
  446f80:	0320f809 	jalr	t9
  446f84:	00000000 	nop
  446f88:	8fdc0018 	lw	gp,24(s8)
  446f8c:	afc20068 	sw	v0,104(s8)
	idpl->cur = old_cur;
  446f90:	8fc30074 	lw	v1,116(s8)
  446f94:	8fc20070 	lw	v0,112(s8)
  446f98:	00000000 	nop
  446f9c:	ac430010 	sw	v1,16(v0)
    }

    switch (st->st_oakley.auth)
  446fa0:	8fc20020 	lw	v0,32(s8)
  446fa4:	00000000 	nop
  446fa8:	9442002c 	lhu	v0,44(v0)
  446fac:	00000000 	nop
  446fb0:	afc2007c 	sw	v0,124(s8)
  446fb4:	24020001 	li	v0,1
  446fb8:	8fc3007c 	lw	v1,124(s8)
  446fbc:	00000000 	nop
  446fc0:	10620013 	beq	v1,v0,447010 <oakley_id_and_auth+0x18c>
  446fc4:	00000000 	nop
  446fc8:	24020003 	li	v0,3
  446fcc:	8fc3007c 	lw	v1,124(s8)
  446fd0:	00000000 	nop
  446fd4:	10620057 	beq	v1,v0,447134 <oakley_id_and_auth+0x2b0>
  446fd8:	00000000 	nop
    {
    case OAKLEY_PRESHARED_KEY:
	{
	    pb_stream *const hash_pbs = &md->chain[ISAKMP_NEXT_HASH]->pbs;

	    if (pbs_left(hash_pbs) != hash_len
	    || memcmp(hash_pbs->cur, hash_val, hash_len) != 0)
	    {
		DBG_cond_dump(DBG_CRYPT, "received HASH:"
		    , hash_pbs->cur, pbs_left(hash_pbs));
		loglog(RC_LOG_SERIOUS, "received Hash Payload does not match computed value");
		r = STF_FAIL + INVALID_HASH_INFORMATION;
	    }
	}
	break;

    case OAKLEY_RSA_SIG:
	r = RSA_check_signature(st, hash_val, hash_len
	    , &md->chain[ISAKMP_NEXT_SIG]->pbs);

	if (r == STF_SUSPEND)
	{
	    /* initiate asynchronous DNS lookup for KEY record(s) */
	    struct key_continuation *kc
		= alloc_thing(struct key_continuation, "key continuation");
	    err_t ugh;

	    /* Record that state is used by a suspended md */
	    passert(st->st_suspended_md == NULL);
	    kc->md = st->st_suspended_md = md;

	    ugh = start_adns_query(&st->st_connection->that.id
		, NULL	/* no sgw for KEY */
		, T_KEY
		, cont_fn
		, &kc->ac);

	    if (ugh != NULL)
	    {
		report_key_dns_failure(&st->st_connection->that.id, ugh);
		st->st_suspended_md = NULL;
		r = STF_FAIL + INVALID_KEY_INFORMATION;
	    }
	}
	break;

    default:
	impossible();
  446fdc:	8f84802c 	lw	a0,-32724(gp)
  446fe0:	00000000 	nop
  446fe4:	2484d590 	addiu	a0,a0,-10864
  446fe8:	8f85802c 	lw	a1,-32724(gp)
  446fec:	00000000 	nop
  446ff0:	24a5d59c 	addiu	a1,a1,-10852
  446ff4:	24060ea6 	li	a2,3750
  446ff8:	8f998bb8 	lw	t9,-29768(gp)
  446ffc:	00000000 	nop
  447000:	0320f809 	jalr	t9
  447004:	00000000 	nop
  447008:	8fdc0018 	lw	gp,24(s8)
  44700c:	00000000 	nop
  447010:	8fc20090 	lw	v0,144(s8)
  447014:	00000000 	nop
  447018:	8c4204c8 	lw	v0,1224(v0)
  44701c:	00000000 	nop
  447020:	afc20078 	sw	v0,120(s8)
  447024:	8fc20078 	lw	v0,120(s8)
  447028:	00000000 	nop
  44702c:	8c430014 	lw	v1,20(v0)
  447030:	8fc20078 	lw	v0,120(s8)
  447034:	00000000 	nop
  447038:	8c420010 	lw	v0,16(v0)
  44703c:	00000000 	nop
  447040:	00621823 	subu	v1,v1,v0
  447044:	8fc20068 	lw	v0,104(s8)
  447048:	00000000 	nop
  44704c:	1462000f 	bne	v1,v0,44708c <oakley_id_and_auth+0x208>
  447050:	00000000 	nop
  447054:	8fc20078 	lw	v0,120(s8)
  447058:	00000000 	nop
  44705c:	8c440010 	lw	a0,16(v0)
  447060:	27c50028 	addiu	a1,s8,40
  447064:	8fc60068 	lw	a2,104(s8)
  447068:	8f9985c8 	lw	t9,-31288(gp)
  44706c:	00000000 	nop
  447070:	0320f809 	jalr	t9
  447074:	00000000 	nop
  447078:	8fdc0018 	lw	gp,24(s8)
  44707c:	14400003 	bnez	v0,44708c <oakley_id_and_auth+0x208>
  447080:	00000000 	nop
  447084:	1000008a 	b	4472b0 <oakley_id_and_auth+0x42c>
  447088:	00000000 	nop
  44708c:	8f8284f8 	lw	v0,-31496(gp)
  447090:	00000000 	nop
  447094:	8c420000 	lw	v0,0(v0)
  447098:	00000000 	nop
  44709c:	30420002 	andi	v0,v0,0x2
  4470a0:	10400016 	beqz	v0,4470fc <oakley_id_and_auth+0x278>
  4470a4:	00000000 	nop
  4470a8:	8fc20078 	lw	v0,120(s8)
  4470ac:	00000000 	nop
  4470b0:	8c430014 	lw	v1,20(v0)
  4470b4:	8fc20078 	lw	v0,120(s8)
  4470b8:	00000000 	nop
  4470bc:	8c420010 	lw	v0,16(v0)
  4470c0:	00000000 	nop
  4470c4:	00621823 	subu	v1,v1,v0
  4470c8:	8f84802c 	lw	a0,-32724(gp)
  4470cc:	00000000 	nop
  4470d0:	2484ee3c 	addiu	a0,a0,-4548
  4470d4:	8fc20078 	lw	v0,120(s8)
  4470d8:	00000000 	nop
  4470dc:	8c450010 	lw	a1,16(v0)
  4470e0:	00603021 	move	a2,v1
  4470e4:	8f9984ec 	lw	t9,-31508(gp)
  4470e8:	00000000 	nop
  4470ec:	0320f809 	jalr	t9
  4470f0:	00000000 	nop
  4470f4:	8fdc0018 	lw	gp,24(s8)
  4470f8:	00000000 	nop
  4470fc:	24040003 	li	a0,3
  447100:	8f85802c 	lw	a1,-32724(gp)
  447104:	00000000 	nop
  447108:	24a5ee4c 	addiu	a1,a1,-4532
  44710c:	8f998c48 	lw	t9,-29624(gp)
  447110:	00000000 	nop
  447114:	0320f809 	jalr	t9
  447118:	00000000 	nop
  44711c:	8fdc0018 	lw	gp,24(s8)
  447120:	00000000 	nop
  447124:	2402001b 	li	v0,27
  447128:	afc2006c 	sw	v0,108(s8)
  44712c:	10000060 	b	4472b0 <oakley_id_and_auth+0x42c>
  447130:	00000000 	nop
  447134:	8fc40020 	lw	a0,32(s8)
  447138:	27c50028 	addiu	a1,s8,40
  44713c:	8fc60068 	lw	a2,104(s8)
  447140:	8fc20090 	lw	v0,144(s8)
  447144:	00000000 	nop
  447148:	8c4704cc 	lw	a3,1228(v0)
  44714c:	8f998034 	lw	t9,-32716(gp)
  447150:	00000000 	nop
  447154:	27390104 	addiu	t9,t9,260
  447158:	00000000 	nop
  44715c:	0320f809 	jalr	t9
  447160:	00000000 	nop
  447164:	8fdc0018 	lw	gp,24(s8)
  447168:	afc2006c 	sw	v0,108(s8)
  44716c:	8fc3006c 	lw	v1,108(s8)
  447170:	24020001 	li	v0,1
  447174:	1462004e 	bne	v1,v0,4472b0 <oakley_id_and_auth+0x42c>
  447178:	00000000 	nop
  44717c:	24040488 	li	a0,1160
  447180:	8f85802c 	lw	a1,-32724(gp)
  447184:	00000000 	nop
  447188:	24a5ee80 	addiu	a1,a1,-4480
  44718c:	8f998084 	lw	t9,-32636(gp)
  447190:	00000000 	nop
  447194:	0320f809 	jalr	t9
  447198:	00000000 	nop
  44719c:	8fdc0018 	lw	gp,24(s8)
  4471a0:	afc20074 	sw	v0,116(s8)
  4471a4:	8fc20020 	lw	v0,32(s8)
  4471a8:	00000000 	nop
  4471ac:	8c420018 	lw	v0,24(v0)
  4471b0:	00000000 	nop
  4471b4:	1040000e 	beqz	v0,4471f0 <oakley_id_and_auth+0x36c>
  4471b8:	00000000 	nop
  4471bc:	8f84802c 	lw	a0,-32724(gp)
  4471c0:	00000000 	nop
  4471c4:	2484ee94 	addiu	a0,a0,-4460
  4471c8:	8f85802c 	lw	a1,-32724(gp)
  4471cc:	00000000 	nop
  4471d0:	24a5d59c 	addiu	a1,a1,-10852
  4471d4:	24060e93 	li	a2,3731
  4471d8:	8f998bb8 	lw	t9,-29768(gp)
  4471dc:	00000000 	nop
  4471e0:	0320f809 	jalr	t9
  4471e4:	00000000 	nop
  4471e8:	8fdc0018 	lw	gp,24(s8)
  4471ec:	00000000 	nop
  4471f0:	8fc40074 	lw	a0,116(s8)
  4471f4:	8fc30090 	lw	v1,144(s8)
  4471f8:	8fc20020 	lw	v0,32(s8)
  4471fc:	00000000 	nop
  447200:	ac430018 	sw	v1,24(v0)
  447204:	ac830480 	sw	v1,1152(a0)
  447208:	8fc20020 	lw	v0,32(s8)
  44720c:	00000000 	nop
  447210:	8c42000c 	lw	v0,12(v0)
  447214:	00000000 	nop
  447218:	244300e0 	addiu	v1,v0,224
  44721c:	8fc20074 	lw	v0,116(s8)
  447220:	00000000 	nop
  447224:	afa20010 	sw	v0,16(sp)
  447228:	00602021 	move	a0,v1
  44722c:	00002821 	move	a1,zero
  447230:	24060019 	li	a2,25
  447234:	8fc7009c 	lw	a3,156(s8)
  447238:	8f998b34 	lw	t9,-29900(gp)
  44723c:	00000000 	nop
  447240:	0320f809 	jalr	t9
  447244:	00000000 	nop
  447248:	8fdc0018 	lw	gp,24(s8)
  44724c:	afc20070 	sw	v0,112(s8)
  447250:	8fc20070 	lw	v0,112(s8)
  447254:	00000000 	nop
  447258:	10400015 	beqz	v0,4472b0 <oakley_id_and_auth+0x42c>
  44725c:	00000000 	nop
  447260:	8fc20020 	lw	v0,32(s8)
  447264:	00000000 	nop
  447268:	8c42000c 	lw	v0,12(v0)
  44726c:	00000000 	nop
  447270:	244200e0 	addiu	v0,v0,224
  447274:	00402021 	move	a0,v0
  447278:	8fc50070 	lw	a1,112(s8)
  44727c:	8f998034 	lw	t9,-32716(gp)
  447280:	00000000 	nop
  447284:	27396dec 	addiu	t9,t9,28140
  447288:	00000000 	nop
  44728c:	0320f809 	jalr	t9
  447290:	00000000 	nop
  447294:	8fdc0018 	lw	gp,24(s8)
  447298:	00000000 	nop
  44729c:	8fc20020 	lw	v0,32(s8)
  4472a0:	00000000 	nop
  4472a4:	ac400018 	sw	zero,24(v0)
  4472a8:	24020015 	li	v0,21
  4472ac:	afc2006c 	sw	v0,108(s8)
    }
    if (r == STF_OK)
  4472b0:	8fc3006c 	lw	v1,108(s8)
  4472b4:	24020002 	li	v0,2
  4472b8:	14620011 	bne	v1,v0,447300 <oakley_id_and_auth+0x47c>
  4472bc:	00000000 	nop
	DBG(DBG_CRYPT, DBG_log("authentication succeeded"));
  4472c0:	8f8284f8 	lw	v0,-31496(gp)
  4472c4:	00000000 	nop
  4472c8:	8c420000 	lw	v0,0(v0)
  4472cc:	00000000 	nop
  4472d0:	30420002 	andi	v0,v0,0x2
  4472d4:	1040000a 	beqz	v0,447300 <oakley_id_and_auth+0x47c>
  4472d8:	00000000 	nop
  4472dc:	8f84802c 	lw	a0,-32724(gp)
  4472e0:	00000000 	nop
  4472e4:	2484eeb0 	addiu	a0,a0,-4432
  4472e8:	8f9983b8 	lw	t9,-31816(gp)
  4472ec:	00000000 	nop
  4472f0:	0320f809 	jalr	t9
  4472f4:	00000000 	nop
  4472f8:	8fdc0018 	lw	gp,24(s8)
  4472fc:	00000000 	nop
    return r;
  447300:	8fc2006c 	lw	v0,108(s8)
  447304:	00000000 	nop
}
  447308:	03c0e821 	move	sp,s8
  44730c:	8fbf0088 	lw	ra,136(sp)
  447310:	8fbe0084 	lw	s8,132(sp)
  447314:	27bd0090 	addiu	sp,sp,144
  447318:	03e00008 	jr	ra
  44731c:	00000000 	nop

00447320 <key_continue>:
  447320:	3c1c0fbc 	lui	gp,0xfbc
  447324:	279c5650 	addiu	gp,gp,22096
  447328:	0399e021 	addu	gp,gp,t9
  44732c:	27bdffc8 	addiu	sp,sp,-56
  447330:	afbc0010 	sw	gp,16(sp)
  447334:	afbf0030 	sw	ra,48(sp)
  447338:	afbe002c 	sw	s8,44(sp)
  44733c:	afbc0028 	sw	gp,40(sp)
  447340:	03a0f021 	move	s8,sp
  447344:	afc40038 	sw	a0,56(s8)
  447348:	afc5003c 	sw	a1,60(s8)
  44734c:	afc60040 	sw	a2,64(s8)

static inline stf_status
main_id_and_auth(struct msg_digest *md
, bool initiator	/* are we the Initiator? */
, cont_fn_t cont_fn)	/* continuation function */
{
    return oakley_id_and_auth(md, initiator, FALSE, cont_fn);
}

static inline stf_status
aggr_id_and_auth(struct msg_digest *md
, bool initiator	/* are we the Initiator? */
, cont_fn_t cont_fn)	/* continuation function */
{
    return oakley_id_and_auth(md, initiator, TRUE, cont_fn);
}

static void
key_continue(struct adns_continuation *cr, err_t ugh
, stf_status (*tail)(struct msg_digest *md))
{
    stf_status r;
    struct key_continuation *kc = (void *)cr;
  447350:	8fc20038 	lw	v0,56(s8)
  447354:	00000000 	nop
  447358:	afc2001c 	sw	v0,28(s8)
    struct state *st = kc->md->st;
  44735c:	8fc2001c 	lw	v0,28(s8)
  447360:	00000000 	nop
  447364:	8c420480 	lw	v0,1152(v0)
  447368:	00000000 	nop
  44736c:	8c420098 	lw	v0,152(v0)
  447370:	00000000 	nop
  447374:	afc20020 	sw	v0,32(s8)

    passert(cur_state == NULL);
  447378:	8f8287f8 	lw	v0,-30728(gp)
  44737c:	00000000 	nop
  447380:	8c420000 	lw	v0,0(v0)
  447384:	00000000 	nop
  447388:	1040000e 	beqz	v0,4473c4 <key_continue+0xa4>
  44738c:	00000000 	nop
  447390:	8f84802c 	lw	a0,-32724(gp)
  447394:	00000000 	nop
  447398:	2484eecc 	addiu	a0,a0,-4404
  44739c:	8f85802c 	lw	a1,-32724(gp)
  4473a0:	00000000 	nop
  4473a4:	24a5d59c 	addiu	a1,a1,-10852
  4473a8:	24060ec5 	li	a2,3781
  4473ac:	8f998bb8 	lw	t9,-29768(gp)
  4473b0:	00000000 	nop
  4473b4:	0320f809 	jalr	t9
  4473b8:	00000000 	nop
  4473bc:	8fdc0010 	lw	gp,16(s8)
  4473c0:	00000000 	nop
    /* if st == NULL, our state has been deleted -- just clean up */
    if (st != NULL)
  4473c4:	8fc20020 	lw	v0,32(s8)
  4473c8:	00000000 	nop
  4473cc:	1040007f 	beqz	v0,4475cc <key_continue+0x2ac>
  4473d0:	00000000 	nop
    {
	passert(st->st_suspended_md == kc->md);
  4473d4:	8fc20020 	lw	v0,32(s8)
  4473d8:	00000000 	nop
  4473dc:	8c430018 	lw	v1,24(v0)
  4473e0:	8fc2001c 	lw	v0,28(s8)
  4473e4:	00000000 	nop
  4473e8:	8c420480 	lw	v0,1152(v0)
  4473ec:	00000000 	nop
  4473f0:	1062000e 	beq	v1,v0,44742c <key_continue+0x10c>
  4473f4:	00000000 	nop
  4473f8:	8f84802c 	lw	a0,-32724(gp)
  4473fc:	00000000 	nop
  447400:	2484eee0 	addiu	a0,a0,-4384
  447404:	8f85802c 	lw	a1,-32724(gp)
  447408:	00000000 	nop
  44740c:	24a5d59c 	addiu	a1,a1,-10852
  447410:	24060ec9 	li	a2,3785
  447414:	8f998bb8 	lw	t9,-29768(gp)
  447418:	00000000 	nop
  44741c:	0320f809 	jalr	t9
  447420:	00000000 	nop
  447424:	8fdc0010 	lw	gp,16(s8)
  447428:	00000000 	nop
	st->st_suspended_md = NULL;	/* no longer connected or suspended */
  44742c:	8fc20020 	lw	v0,32(s8)
  447430:	00000000 	nop
  447434:	ac400018 	sw	zero,24(v0)
	cur_state = kc->md->st;
  447438:	8fc2001c 	lw	v0,28(s8)
  44743c:	00000000 	nop
  447440:	8c420480 	lw	v0,1152(v0)
  447444:	00000000 	nop
  447448:	8c420098 	lw	v0,152(v0)
  44744c:	8f8187f8 	lw	at,-30728(gp)
  447450:	00000000 	nop
  447454:	ac220000 	sw	v0,0(at)
	if (ugh != NULL)
  447458:	8fc2003c 	lw	v0,60(s8)
  44745c:	00000000 	nop
  447460:	10400014 	beqz	v0,4474b4 <key_continue+0x194>
  447464:	00000000 	nop
	{
	    report_key_dns_failure(&st->st_connection->that.id, ugh);
  447468:	8fc20020 	lw	v0,32(s8)
  44746c:	00000000 	nop
  447470:	8c42000c 	lw	v0,12(v0)
  447474:	00000000 	nop
  447478:	244200e0 	addiu	v0,v0,224
  44747c:	00402021 	move	a0,v0
  447480:	8fc5003c 	lw	a1,60(s8)
  447484:	8f998034 	lw	t9,-32716(gp)
  447488:	00000000 	nop
  44748c:	27396dec 	addiu	t9,t9,28140
  447490:	00000000 	nop
  447494:	0320f809 	jalr	t9
  447498:	00000000 	nop
  44749c:	8fdc0010 	lw	gp,16(s8)
  4474a0:	00000000 	nop
	    r = STF_FAIL + INVALID_KEY_INFORMATION;
  4474a4:	24020015 	li	v0,21
  4474a8:	afc20018 	sw	v0,24(s8)
  4474ac:	1000003c 	b	4475a0 <key_continue+0x280>
  4474b0:	00000000 	nop
	}
	else
	{
	    passert(keys_from_dns != NULL);
  4474b4:	8f828394 	lw	v0,-31852(gp)
  4474b8:	00000000 	nop
  4474bc:	8c420000 	lw	v0,0(v0)
  4474c0:	00000000 	nop
  4474c4:	1440000e 	bnez	v0,447500 <key_continue+0x1e0>
  4474c8:	00000000 	nop
  4474cc:	8f84802c 	lw	a0,-32724(gp)
  4474d0:	00000000 	nop
  4474d4:	2484ef00 	addiu	a0,a0,-4352
  4474d8:	8f85802c 	lw	a1,-32724(gp)
  4474dc:	00000000 	nop
  4474e0:	24a5d59c 	addiu	a1,a1,-10852
  4474e4:	24060ed3 	li	a2,3795
  4474e8:	8f998bb8 	lw	t9,-29768(gp)
  4474ec:	00000000 	nop
  4474f0:	0320f809 	jalr	t9
  4474f4:	00000000 	nop
  4474f8:	8fdc0010 	lw	gp,16(s8)
  4474fc:	00000000 	nop
	    r = (*tail)(kc->md);
  447500:	8fc2001c 	lw	v0,28(s8)
  447504:	00000000 	nop
  447508:	8c440480 	lw	a0,1152(v0)
  44750c:	8fc20040 	lw	v0,64(s8)
  447510:	00000000 	nop
  447514:	0040c821 	move	t9,v0
  447518:	0320f809 	jalr	t9
  44751c:	00000000 	nop
  447520:	8fdc0010 	lw	gp,16(s8)
  447524:	afc20018 	sw	v0,24(s8)
	    passert(r != STF_OK || keys_from_dns == NULL);
  447528:	8fc30018 	lw	v1,24(s8)
  44752c:	24020002 	li	v0,2
  447530:	14620014 	bne	v1,v0,447584 <key_continue+0x264>
  447534:	00000000 	nop
  447538:	8f828394 	lw	v0,-31852(gp)
  44753c:	00000000 	nop
  447540:	8c420000 	lw	v0,0(v0)
  447544:	00000000 	nop
  447548:	1040000e 	beqz	v0,447584 <key_continue+0x264>
  44754c:	00000000 	nop
  447550:	8f84802c 	lw	a0,-32724(gp)
  447554:	00000000 	nop
  447558:	2484ef18 	addiu	a0,a0,-4328
  44755c:	8f85802c 	lw	a1,-32724(gp)
  447560:	00000000 	nop
  447564:	24a5d59c 	addiu	a1,a1,-10852
  447568:	24060ed5 	li	a2,3797
  44756c:	8f998bb8 	lw	t9,-29768(gp)
  447570:	00000000 	nop
  447574:	0320f809 	jalr	t9
  447578:	00000000 	nop
  44757c:	8fdc0010 	lw	gp,16(s8)
  447580:	00000000 	nop
	    free_public_keys(&keys_from_dns);
  447584:	8f848394 	lw	a0,-31852(gp)
  447588:	8f998a5c 	lw	t9,-30116(gp)
  44758c:	00000000 	nop
  447590:	0320f809 	jalr	t9
  447594:	00000000 	nop
  447598:	8fdc0010 	lw	gp,16(s8)
  44759c:	00000000 	nop
	}
	complete_state_transition(&kc->md, r);
  4475a0:	8fc2001c 	lw	v0,28(s8)
  4475a4:	00000000 	nop
  4475a8:	24420480 	addiu	v0,v0,1152
  4475ac:	00402021 	move	a0,v0
  4475b0:	8fc50018 	lw	a1,24(s8)
  4475b4:	8f998130 	lw	t9,-32464(gp)
  4475b8:	00000000 	nop
  4475bc:	0320f809 	jalr	t9
  4475c0:	00000000 	nop
  4475c4:	8fdc0010 	lw	gp,16(s8)
  4475c8:	00000000 	nop
    }
    release_md(kc->md);
  4475cc:	8fc2001c 	lw	v0,28(s8)
  4475d0:	00000000 	nop
  4475d4:	8c440480 	lw	a0,1152(v0)
  4475d8:	8f998218 	lw	t9,-32232(gp)
  4475dc:	00000000 	nop
  4475e0:	0320f809 	jalr	t9
  4475e4:	00000000 	nop
  4475e8:	8fdc0010 	lw	gp,16(s8)
  4475ec:	00000000 	nop
    cur_state = NULL;
  4475f0:	8f8187f8 	lw	at,-30728(gp)
  4475f4:	00000000 	nop
  4475f8:	ac200000 	sw	zero,0(at)
}
  4475fc:	03c0e821 	move	sp,s8
  447600:	8fbf0030 	lw	ra,48(sp)
  447604:	8fbe002c 	lw	s8,44(sp)
  447608:	27bd0038 	addiu	sp,sp,56
  44760c:	03e00008 	jr	ra
  447610:	00000000 	nop

00447614 <main_inI3_outR3>:
  447614:	3c1c0fbc 	lui	gp,0xfbc
  447618:	279c535c 	addiu	gp,gp,21340
  44761c:	0399e021 	addu	gp,gp,t9
  447620:	27bdffd8 	addiu	sp,sp,-40
  447624:	afbc0010 	sw	gp,16(sp)
  447628:	afbf0020 	sw	ra,32(sp)
  44762c:	afbe001c 	sw	s8,28(sp)
  447630:	afbc0018 	sw	gp,24(sp)
  447634:	03a0f021 	move	s8,sp
  447638:	afc40028 	sw	a0,40(s8)

/* STATE_MAIN_R2:
 * PSK_AUTH: HDR*, IDi1, HASH_I --> HDR*, IDr1, HASH_R
 * DS_AUTH: HDR*, IDi1, [ CERT, ] SIG_I --> HDR*, IDr1, [ CERT, ] SIG_R
 * PKE_AUTH, RPKE_AUTH: HDR*, HASH_I --> HDR*, HASH_R
 *
 * Broken into parts to allow asynchronous DNS for KEY records.
 *
 * - main_inI3_outR3 to start
 * - main_inI3_outR3_tail to finish or suspend for DNS lookup
 * - main_inI3_outR3_continue to start main_inI3_outR3_tail again
 */
static stf_status main_inI3_outR3_tail(struct msg_digest *md);	/* forward */

stf_status
main_inI3_outR3(struct msg_digest *md)
{
    passert(keys_from_dns == NULL);
  44763c:	8f828394 	lw	v0,-31852(gp)
  447640:	00000000 	nop
  447644:	8c420000 	lw	v0,0(v0)
  447648:	00000000 	nop
  44764c:	1040000e 	beqz	v0,447688 <main_inI3_outR3+0x74>
  447650:	00000000 	nop
  447654:	8f84802c 	lw	a0,-32724(gp)
  447658:	00000000 	nop
  44765c:	2484ef40 	addiu	a0,a0,-4288
  447660:	8f85802c 	lw	a1,-32724(gp)
  447664:	00000000 	nop
  447668:	24a5d59c 	addiu	a1,a1,-10852
  44766c:	24060eee 	li	a2,3822
  447670:	8f998bb8 	lw	t9,-29768(gp)
  447674:	00000000 	nop
  447678:	0320f809 	jalr	t9
  44767c:	00000000 	nop
  447680:	8fdc0010 	lw	gp,16(s8)
  447684:	00000000 	nop
    return main_inI3_outR3_tail(md);
  447688:	8fc40028 	lw	a0,40(s8)
  44768c:	8f998034 	lw	t9,-32716(gp)
  447690:	00000000 	nop
  447694:	2739773c 	addiu	t9,t9,30524
  447698:	00000000 	nop
  44769c:	0320f809 	jalr	t9
  4476a0:	00000000 	nop
  4476a4:	8fdc0010 	lw	gp,16(s8)
  4476a8:	00000000 	nop
}
  4476ac:	03c0e821 	move	sp,s8
  4476b0:	8fbf0020 	lw	ra,32(sp)
  4476b4:	8fbe001c 	lw	s8,28(sp)
  4476b8:	27bd0028 	addiu	sp,sp,40
  4476bc:	03e00008 	jr	ra
  4476c0:	00000000 	nop

004476c4 <main_inI3_outR3_continue>:
  4476c4:	3c1c0fbc 	lui	gp,0xfbc
  4476c8:	279c52ac 	addiu	gp,gp,21164
  4476cc:	0399e021 	addu	gp,gp,t9
  4476d0:	27bdffd8 	addiu	sp,sp,-40
  4476d4:	afbc0010 	sw	gp,16(sp)
  4476d8:	afbf0020 	sw	ra,32(sp)
  4476dc:	afbe001c 	sw	s8,28(sp)
  4476e0:	afbc0018 	sw	gp,24(sp)
  4476e4:	03a0f021 	move	s8,sp
  4476e8:	afc40028 	sw	a0,40(s8)
  4476ec:	afc5002c 	sw	a1,44(s8)

static void
main_inI3_outR3_continue(struct adns_continuation *cr, err_t ugh)
{
    key_continue(cr, ugh, main_inI3_outR3_tail);
  4476f0:	8fc40028 	lw	a0,40(s8)
  4476f4:	8fc5002c 	lw	a1,44(s8)
  4476f8:	8f868034 	lw	a2,-32716(gp)
  4476fc:	00000000 	nop
  447700:	24c6773c 	addiu	a2,a2,30524
  447704:	8f998034 	lw	t9,-32716(gp)
  447708:	00000000 	nop
  44770c:	27397320 	addiu	t9,t9,29472
  447710:	00000000 	nop
  447714:	0320f809 	jalr	t9
  447718:	00000000 	nop
  44771c:	8fdc0010 	lw	gp,16(s8)
  447720:	00000000 	nop
}
  447724:	03c0e821 	move	sp,s8
  447728:	8fbf0020 	lw	ra,32(sp)
  44772c:	8fbe001c 	lw	s8,28(sp)
  447730:	27bd0028 	addiu	sp,sp,40
  447734:	03e00008 	jr	ra
  447738:	00000000 	nop

0044773c <main_inI3_outR3_tail>:
  44773c:	3c1c0fbc 	lui	gp,0xfbc
  447740:	279c5234 	addiu	gp,gp,21044
  447744:	0399e021 	addu	gp,gp,t9
  447748:	27bdfcf8 	addiu	sp,sp,-776
  44774c:	afbc0018 	sw	gp,24(sp)
  447750:	afbf0300 	sw	ra,768(sp)
  447754:	afbe02fc 	sw	s8,764(sp)
  447758:	afbc02f8 	sw	gp,760(sp)
  44775c:	03a0f021 	move	s8,sp
  447760:	afc40308 	sw	a0,776(s8)

static stf_status
main_inI3_outR3_tail(struct msg_digest *md)
{
    struct state *const st = md->st;
  447764:	8fc20308 	lw	v0,776(s8)
  447768:	00000000 	nop
  44776c:	8c420098 	lw	v0,152(v0)
  447770:	00000000 	nop
  447774:	afc20020 	sw	v0,32(s8)
    u_int8_t auth_payload;
    pb_stream r_id_pbs;	/* ID Payload; also used for hash calculation */
    cert_t mycert;
    bool send_cert;
#ifdef KENNY_INITIAL_CONTACT
    struct state *p1st = NULL;
  447778:	afc0005c 	sw	zero,92(s8)
#endif /* KENNY_INITIAL_CONTACT */


    /* ID and HASH_I or SIG_I in
     * Note: this may switch the connection being used!
     */
    {
	stf_status r = main_id_and_auth(md, FALSE
  44777c:	8fc40308 	lw	a0,776(s8)
  447780:	00002821 	move	a1,zero
  447784:	8f868034 	lw	a2,-32716(gp)
  447788:	00000000 	nop
  44778c:	24c676c4 	addiu	a2,a2,30404
  447790:	8f998038 	lw	t9,-32712(gp)
  447794:	00000000 	nop
  447798:	2739e694 	addiu	t9,t9,-6508
  44779c:	00000000 	nop
  4477a0:	0320f809 	jalr	t9
  4477a4:	00000000 	nop
  4477a8:	8fdc0018 	lw	gp,24(s8)
  4477ac:	afc20060 	sw	v0,96(s8)
	    , main_inI3_outR3_continue);

	if (r != STF_OK)
  4477b0:	8fc30060 	lw	v1,96(s8)
  4477b4:	24020002 	li	v0,2
  4477b8:	10620004 	beq	v1,v0,4477cc <main_inI3_outR3_tail+0x90>
  4477bc:	00000000 	nop
	    return r;
  4477c0:	8fc20060 	lw	v0,96(s8)
  4477c4:	100001d5 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  4477c8:	00000000 	nop
    }

    /* send certificate if we have one and auth is RSA */
    send_cert = (st->st_oakley.auth == OAKLEY_RSA_SIG) &&
  4477cc:	afc002ec 	sw	zero,748(s8)
  4477d0:	8fc20020 	lw	v0,32(s8)
  4477d4:	00000000 	nop
  4477d8:	9443002c 	lhu	v1,44(v0)
  4477dc:	24020003 	li	v0,3
  4477e0:	1462000f 	bne	v1,v0,447820 <main_inI3_outR3_tail+0xe4>
  4477e4:	00000000 	nop
  4477e8:	8fc20020 	lw	v0,32(s8)
  4477ec:	00000000 	nop
  4477f0:	8c42000c 	lw	v0,12(v0)
  4477f4:	27c40048 	addiu	a0,s8,72
  4477f8:	8c4500d0 	lw	a1,208(v0)
  4477fc:	8f9985f8 	lw	t9,-31240(gp)
  447800:	00000000 	nop
  447804:	0320f809 	jalr	t9
  447808:	00000000 	nop
  44780c:	8fdc0018 	lw	gp,24(s8)
  447810:	10400003 	beqz	v0,447820 <main_inI3_outR3_tail+0xe4>
  447814:	00000000 	nop
  447818:	24020001 	li	v0,1
  44781c:	afc202ec 	sw	v0,748(s8)
  447820:	8fc202ec 	lw	v0,748(s8)
  447824:	00000000 	nop
  447828:	afc20058 	sw	v0,88(s8)
		get_mycert(&mycert, st->st_connection->this.cert);

    /*************** build output packet HDR*;IDir;HASH/SIG_R ***************/
    /* proccess_packet() would automatically generate the HDR*
     * payload if smc->first_out_payload is not ISAKMP_NEXT_NONE.
     * We don't do this because we wish there to be no partially
     * built output packet if we need to suspend for asynch DNS.
     */
    /* ??? NOTE: this is almost the same as main_inR2_outI3's code */

    /* HDR* out
     * If auth were PKE_AUTH or RPKE_AUTH, ISAKMP_NEXT_HASH would
     * be first payload.
     */
    echo_hdr(md, TRUE, ISAKMP_NEXT_ID);
  44782c:	8fc40308 	lw	a0,776(s8)
  447830:	24050001 	li	a1,1
  447834:	24060005 	li	a2,5
  447838:	8f998194 	lw	t9,-32364(gp)
  44783c:	00000000 	nop
  447840:	0320f809 	jalr	t9
  447844:	00000000 	nop
  447848:	8fdc0018 	lw	gp,24(s8)
  44784c:	00000000 	nop

    auth_payload = st->st_oakley.auth == OAKLEY_PRESHARED_KEY
  447850:	8fc20020 	lw	v0,32(s8)
  447854:	00000000 	nop
  447858:	9443002c 	lhu	v1,44(v0)
  44785c:	24020001 	li	v0,1
  447860:	14620005 	bne	v1,v0,447878 <main_inI3_outR3_tail+0x13c>
  447864:	00000000 	nop
  447868:	24020008 	li	v0,8
  44786c:	a3c202f0 	sb	v0,752(s8)
  447870:	10000003 	b	447880 <main_inI3_outR3_tail+0x144>
  447874:	00000000 	nop
  447878:	24020009 	li	v0,9
  44787c:	a3c202f0 	sb	v0,752(s8)
  447880:	93c202f0 	lbu	v0,752(s8)
  447884:	00000000 	nop
  447888:	a3c20024 	sb	v0,36(s8)
	? ISAKMP_NEXT_HASH : ISAKMP_NEXT_SIG;

#ifdef KENNY_INITIAL_CONTACT
    /*************** build output packet HDR*;IDir;[IC];HASH/SIG_I ***************/
    p1st = find_phase1_state_with_peer(&md->sender);
  44788c:	8fc20308 	lw	v0,776(s8)
  447890:	00000000 	nop
  447894:	24420010 	addiu	v0,v0,16
  447898:	00402021 	move	a0,v0
  44789c:	8f998c44 	lw	t9,-29628(gp)
  4478a0:	00000000 	nop
  4478a4:	0320f809 	jalr	t9
  4478a8:	00000000 	nop
  4478ac:	8fdc0018 	lw	gp,24(s8)
  4478b0:	afc2005c 	sw	v0,92(s8)
    if (p1st == NULL)
  4478b4:	8fc2005c 	lw	v0,92(s8)
  4478b8:	00000000 	nop
  4478bc:	14400007 	bnez	v0,4478dc <main_inI3_outR3_tail+0x1a0>
  4478c0:	00000000 	nop
    	st->initial_contact = TRUE;
  4478c4:	24030001 	li	v1,1
  4478c8:	8fc20020 	lw	v0,32(s8)
  4478cc:	00000000 	nop
  4478d0:	ac4302a0 	sw	v1,672(v0)
  4478d4:	10000004 	b	4478e8 <main_inI3_outR3_tail+0x1ac>
  4478d8:	00000000 	nop
    else
	st->initial_contact = FALSE;
  4478dc:	8fc20020 	lw	v0,32(s8)
  4478e0:	00000000 	nop
  4478e4:	ac4002a0 	sw	zero,672(v0)
#endif /* KENNY_INITIAL_CONTACT */

    
    /* IDir out */
    {
	struct isakmp_ipsec_id id_hd;
	chunk_t id_b;

	build_id_payload(&id_hd, &id_b, &st->st_connection->this);
  4478e8:	8fc20020 	lw	v0,32(s8)
  4478ec:	00000000 	nop
  4478f0:	8c42000c 	lw	v0,12(v0)
  4478f4:	00000000 	nop
  4478f8:	24420030 	addiu	v0,v0,48
  4478fc:	27c40068 	addiu	a0,s8,104
  447900:	27c50070 	addiu	a1,s8,112
  447904:	00403021 	move	a2,v0
  447908:	8f998140 	lw	t9,-32448(gp)
  44790c:	00000000 	nop
  447910:	0320f809 	jalr	t9
  447914:	00000000 	nop
  447918:	8fdc0018 	lw	gp,24(s8)
  44791c:	00000000 	nop
#ifdef KENNY_INITIAL_CONTACT
    	if (p1st == NULL)
  447920:	8fc2005c 	lw	v0,92(s8)
  447924:	00000000 	nop
  447928:	14400005 	bnez	v0,447940 <main_inI3_outR3_tail+0x204>
  44792c:	00000000 	nop
		id_hd.isaiid_np = ISAKMP_NEXT_N;
  447930:	2402000b 	li	v0,11
  447934:	a3c20068 	sb	v0,104(s8)
  447938:	1000000c 	b	44796c <main_inI3_outR3_tail+0x230>
  44793c:	00000000 	nop
	else	
		id_hd.isaiid_np = (send_cert)? ISAKMP_NEXT_CERT : auth_payload;
  447940:	8fc20058 	lw	v0,88(s8)
  447944:	00000000 	nop
  447948:	14400006 	bnez	v0,447964 <main_inI3_outR3_tail+0x228>
  44794c:	00000000 	nop
  447950:	93c20024 	lbu	v0,36(s8)
  447954:	00000000 	nop
  447958:	a3c20068 	sb	v0,104(s8)
  44795c:	10000003 	b	44796c <main_inI3_outR3_tail+0x230>
  447960:	00000000 	nop
  447964:	24020006 	li	v0,6
  447968:	a3c20068 	sb	v0,104(s8)
#else	
	id_hd.isaiid_np = (send_cert)? ISAKMP_NEXT_CERT : auth_payload;
#endif
	if (!out_struct(&id_hd, &isakmp_ipsec_identification_desc, &md->rbody, &r_id_pbs)
	|| !out_chunk(id_b, &r_id_pbs, "my identity"))
  44796c:	8fc20308 	lw	v0,776(s8)
  447970:	00000000 	nop
  447974:	244200bc 	addiu	v0,v0,188
  447978:	27c40068 	addiu	a0,s8,104
  44797c:	8f858988 	lw	a1,-30328(gp)
  447980:	00403021 	move	a2,v0
  447984:	27c70028 	addiu	a3,s8,40
  447988:	8f998ba0 	lw	t9,-29792(gp)
  44798c:	00000000 	nop
  447990:	0320f809 	jalr	t9
  447994:	00000000 	nop
  447998:	8fdc0018 	lw	gp,24(s8)
  44799c:	1040000e 	beqz	v0,4479d8 <main_inI3_outR3_tail+0x29c>
  4479a0:	00000000 	nop
  4479a4:	8fc40070 	lw	a0,112(s8)
  4479a8:	8fc50074 	lw	a1,116(s8)
  4479ac:	27c60028 	addiu	a2,s8,40
  4479b0:	8f87802c 	lw	a3,-32724(gp)
  4479b4:	00000000 	nop
  4479b8:	24e7dd3c 	addiu	a3,a3,-8900
  4479bc:	8f998308 	lw	t9,-31992(gp)
  4479c0:	00000000 	nop
  4479c4:	0320f809 	jalr	t9
  4479c8:	00000000 	nop
  4479cc:	8fdc0018 	lw	gp,24(s8)
  4479d0:	14400004 	bnez	v0,4479e4 <main_inI3_outR3_tail+0x2a8>
  4479d4:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  4479d8:	24020003 	li	v0,3
  4479dc:	1000014f 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  4479e0:	00000000 	nop
	close_output_pbs(&r_id_pbs);
  4479e4:	27c40028 	addiu	a0,s8,40
  4479e8:	8f998228 	lw	t9,-32216(gp)
  4479ec:	00000000 	nop
  4479f0:	0320f809 	jalr	t9
  4479f4:	00000000 	nop
  4479f8:	8fdc0018 	lw	gp,24(s8)
  4479fc:	00000000 	nop
    }


#ifdef KENNY_INITIAL_CONTACT
    /* IC out */
    {
   	if (st->initial_contact == TRUE) {
  447a00:	8fc20020 	lw	v0,32(s8)
  447a04:	00000000 	nop
  447a08:	8c4302a0 	lw	v1,672(v0)
  447a0c:	24020001 	li	v0,1
  447a10:	14620053 	bne	v1,v0,447b60 <main_inI3_outR3_tail+0x424>
  447a14:	00000000 	nop
            // build IC payload
		pb_stream not_pbs;
		struct isakmp_notification isan;

    		loglog(RC_LOG_SERIOUS, "main_inI3_outR3_tail: build IC payload");
  447a18:	24040003 	li	a0,3
  447a1c:	8f85802c 	lw	a1,-32724(gp)
  447a20:	00000000 	nop
  447a24:	24a5ef58 	addiu	a1,a1,-4264
  447a28:	8f998c48 	lw	t9,-29624(gp)
  447a2c:	00000000 	nop
  447a30:	0320f809 	jalr	t9
  447a34:	00000000 	nop
  447a38:	8fdc0018 	lw	gp,24(s8)
  447a3c:	00000000 	nop
		isan.isan_doi = ISAKMP_DOI_IPSEC;
  447a40:	24020001 	li	v0,1
  447a44:	afc2009c 	sw	v0,156(s8)
		isan.isan_np = (send_cert)? ISAKMP_NEXT_CERT : auth_payload;
  447a48:	8fc20058 	lw	v0,88(s8)
  447a4c:	00000000 	nop
  447a50:	14400006 	bnez	v0,447a6c <main_inI3_outR3_tail+0x330>
  447a54:	00000000 	nop
  447a58:	93c20024 	lbu	v0,36(s8)
  447a5c:	00000000 	nop
  447a60:	a3c20098 	sb	v0,152(s8)
  447a64:	10000003 	b	447a74 <main_inI3_outR3_tail+0x338>
  447a68:	00000000 	nop
  447a6c:	24020006 	li	v0,6
  447a70:	a3c20098 	sb	v0,152(s8)
		isan.isan_type = IPSEC_INITIAL_CONTACT;
  447a74:	24026002 	li	v0,24578
  447a78:	a7c200a2 	sh	v0,162(s8)
		isan.isan_spisize = 16;
  447a7c:	24020010 	li	v0,16
  447a80:	a3c200a1 	sb	v0,161(s8)
		isan.isan_protoid = PROTO_ISAKMP; 
  447a84:	24020001 	li	v0,1
  447a88:	a3c200a0 	sb	v0,160(s8)

		if (!out_struct(&isan, &isakmp_notification_desc, &md->rbody, &not_pbs)
	    		|| !out_raw(md->hdr.isa_icookie, 16, &not_pbs, "spi"))
  447a8c:	8fc20308 	lw	v0,776(s8)
  447a90:	00000000 	nop
  447a94:	244200bc 	addiu	v0,v0,188
  447a98:	27c40098 	addiu	a0,s8,152
  447a9c:	8f85812c 	lw	a1,-32468(gp)
  447aa0:	00403021 	move	a2,v0
  447aa4:	27c70078 	addiu	a3,s8,120
  447aa8:	8f998ba0 	lw	t9,-29792(gp)
  447aac:	00000000 	nop
  447ab0:	0320f809 	jalr	t9
  447ab4:	00000000 	nop
  447ab8:	8fdc0018 	lw	gp,24(s8)
  447abc:	10400011 	beqz	v0,447b04 <main_inI3_outR3_tail+0x3c8>
  447ac0:	00000000 	nop
  447ac4:	8fc20308 	lw	v0,776(s8)
  447ac8:	00000000 	nop
  447acc:	24420070 	addiu	v0,v0,112
  447ad0:	00402021 	move	a0,v0
  447ad4:	24050010 	li	a1,16
  447ad8:	27c60078 	addiu	a2,s8,120
  447adc:	8f87802c 	lw	a3,-32724(gp)
  447ae0:	00000000 	nop
  447ae4:	24e7d7e4 	addiu	a3,a3,-10268
  447ae8:	8f998308 	lw	t9,-31992(gp)
  447aec:	00000000 	nop
  447af0:	0320f809 	jalr	t9
  447af4:	00000000 	nop
  447af8:	8fdc0018 	lw	gp,24(s8)
  447afc:	1440000e 	bnez	v0,447b38 <main_inI3_outR3_tail+0x3fc>
  447b00:	00000000 	nop
	    		impossible();
  447b04:	8f84802c 	lw	a0,-32724(gp)
  447b08:	00000000 	nop
  447b0c:	2484d590 	addiu	a0,a0,-10864
  447b10:	8f85802c 	lw	a1,-32724(gp)
  447b14:	00000000 	nop
  447b18:	24a5d59c 	addiu	a1,a1,-10852
  447b1c:	24060f55 	li	a2,3925
  447b20:	8f998bb8 	lw	t9,-29768(gp)
  447b24:	00000000 	nop
  447b28:	0320f809 	jalr	t9
  447b2c:	00000000 	nop
  447b30:	8fdc0018 	lw	gp,24(s8)
  447b34:	00000000 	nop
		close_output_pbs(&not_pbs);
  447b38:	27c40078 	addiu	a0,s8,120
  447b3c:	8f998228 	lw	t9,-32216(gp)
  447b40:	00000000 	nop
  447b44:	0320f809 	jalr	t9
  447b48:	00000000 	nop
  447b4c:	8fdc0018 	lw	gp,24(s8)
  447b50:	00000000 	nop

		st->initial_contact = FALSE;
  447b54:	8fc20020 	lw	v0,32(s8)
  447b58:	00000000 	nop
  447b5c:	ac4002a0 	sw	zero,672(v0)

	}

    }
#endif //KENNY_INITIAL_CONTACT

    /* CERT out, if we have one */
    if (send_cert)
  447b60:	8fc20058 	lw	v0,88(s8)
  447b64:	00000000 	nop
  447b68:	1040002e 	beqz	v0,447c24 <main_inI3_outR3_tail+0x4e8>
  447b6c:	00000000 	nop
    {
	pb_stream cert_pbs;

	struct isakmp_cert cert_hd;
	cert_hd.isacert_np = ISAKMP_NEXT_SIG;
  447b70:	24020009 	li	v0,9
  447b74:	a3c20098 	sb	v0,152(s8)
	cert_hd.isacert_type = mycert.type;
  447b78:	93c20048 	lbu	v0,72(s8)
  447b7c:	00000000 	nop
  447b80:	a3c2009c 	sb	v0,156(s8)

	if (!out_struct(&cert_hd, &isakmp_ipsec_certificate_desc, &md->rbody, &cert_pbs))
  447b84:	8fc20308 	lw	v0,776(s8)
  447b88:	00000000 	nop
  447b8c:	244200bc 	addiu	v0,v0,188
  447b90:	27c40098 	addiu	a0,s8,152
  447b94:	8f8586d0 	lw	a1,-31024(gp)
  447b98:	00403021 	move	a2,v0
  447b9c:	27c70078 	addiu	a3,s8,120
  447ba0:	8f998ba0 	lw	t9,-29792(gp)
  447ba4:	00000000 	nop
  447ba8:	0320f809 	jalr	t9
  447bac:	00000000 	nop
  447bb0:	8fdc0018 	lw	gp,24(s8)
  447bb4:	14400004 	bnez	v0,447bc8 <main_inI3_outR3_tail+0x48c>
  447bb8:	00000000 	nop
	return STF_INTERNAL_ERROR;
  447bbc:	24020003 	li	v0,3
  447bc0:	100000d6 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  447bc4:	00000000 	nop
	if (!out_chunk(mycert.cert, &cert_pbs, "CERT"))
  447bc8:	8fc4004c 	lw	a0,76(s8)
  447bcc:	8fc50050 	lw	a1,80(s8)
  447bd0:	27c60078 	addiu	a2,s8,120
  447bd4:	8f87802c 	lw	a3,-32724(gp)
  447bd8:	00000000 	nop
  447bdc:	24e7edf0 	addiu	a3,a3,-4624
  447be0:	8f998308 	lw	t9,-31992(gp)
  447be4:	00000000 	nop
  447be8:	0320f809 	jalr	t9
  447bec:	00000000 	nop
  447bf0:	8fdc0018 	lw	gp,24(s8)
  447bf4:	14400004 	bnez	v0,447c08 <main_inI3_outR3_tail+0x4cc>
  447bf8:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  447bfc:	24020003 	li	v0,3
  447c00:	100000c6 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  447c04:	00000000 	nop
	close_output_pbs(&cert_pbs);
  447c08:	27c40078 	addiu	a0,s8,120
  447c0c:	8f998228 	lw	t9,-32216(gp)
  447c10:	00000000 	nop
  447c14:	0320f809 	jalr	t9
  447c18:	00000000 	nop
  447c1c:	8fdc0018 	lw	gp,24(s8)
  447c20:	00000000 	nop
    }

    /* HASH_R or SIG_R out */
    {
	u_char hash_val[MAX_DIGEST_LEN];
	size_t hash_len = main_mode_hash(st, hash_val, FALSE, &r_id_pbs);
  447c24:	8fc40020 	lw	a0,32(s8)
  447c28:	27c500a8 	addiu	a1,s8,168
  447c2c:	00003021 	move	a2,zero
  447c30:	27c70028 	addiu	a3,s8,40
  447c34:	8f998034 	lw	t9,-32716(gp)
  447c38:	00000000 	nop
  447c3c:	2739f3b4 	addiu	t9,t9,-3148
  447c40:	00000000 	nop
  447c44:	0320f809 	jalr	t9
  447c48:	00000000 	nop
  447c4c:	8fdc0018 	lw	gp,24(s8)
  447c50:	afc20060 	sw	v0,96(s8)

	if (auth_payload == ISAKMP_NEXT_HASH)
  447c54:	93c30024 	lbu	v1,36(s8)
  447c58:	24020008 	li	v0,8
  447c5c:	1462001a 	bne	v1,v0,447cc8 <main_inI3_outR3_tail+0x58c>
  447c60:	00000000 	nop
	{
	    /* HASH_R out */
	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_hash_desc, &md->rbody
	    , hash_val, hash_len, "HASH_R"))
  447c64:	8fc20308 	lw	v0,776(s8)
  447c68:	00000000 	nop
  447c6c:	244300bc 	addiu	v1,v0,188
  447c70:	8fc20060 	lw	v0,96(s8)
  447c74:	00000000 	nop
  447c78:	afa20010 	sw	v0,16(sp)
  447c7c:	8f82802c 	lw	v0,-32724(gp)
  447c80:	00000000 	nop
  447c84:	2442ef80 	addiu	v0,v0,-4224
  447c88:	00000000 	nop
  447c8c:	afa20014 	sw	v0,20(sp)
  447c90:	00002021 	move	a0,zero
  447c94:	8f858924 	lw	a1,-30428(gp)
  447c98:	00603021 	move	a2,v1
  447c9c:	27c700a8 	addiu	a3,s8,168
  447ca0:	8f99841c 	lw	t9,-31716(gp)
  447ca4:	00000000 	nop
  447ca8:	0320f809 	jalr	t9
  447cac:	00000000 	nop
  447cb0:	8fdc0018 	lw	gp,24(s8)
  447cb4:	1440003c 	bnez	v0,447da8 <main_inI3_outR3_tail+0x66c>
  447cb8:	00000000 	nop
		return STF_INTERNAL_ERROR;
  447cbc:	24020003 	li	v0,3
  447cc0:	10000096 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  447cc4:	00000000 	nop
	}
	else
	{
	    /* SIG_R out */
	    u_char sig_val[RSA_MAX_OCTETS];
	    size_t sig_len = RSA_sign_hash(st->st_connection
  447cc8:	8fc20020 	lw	v0,32(s8)
  447ccc:	00000000 	nop
  447cd0:	8c44000c 	lw	a0,12(v0)
  447cd4:	27c500e8 	addiu	a1,s8,232
  447cd8:	27c600a8 	addiu	a2,s8,168
  447cdc:	8fc70060 	lw	a3,96(s8)
  447ce0:	8f998034 	lw	t9,-32716(gp)
  447ce4:	00000000 	nop
  447ce8:	2739f4ac 	addiu	t9,t9,-2900
  447cec:	00000000 	nop
  447cf0:	0320f809 	jalr	t9
  447cf4:	00000000 	nop
  447cf8:	8fdc0018 	lw	gp,24(s8)
  447cfc:	afc202e8 	sw	v0,744(s8)
		, sig_val, hash_val, hash_len);

	    if (sig_len == 0)
  447d00:	8fc202e8 	lw	v0,744(s8)
  447d04:	00000000 	nop
  447d08:	1440000e 	bnez	v0,447d44 <main_inI3_outR3_tail+0x608>
  447d0c:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "unable to locate my private key for RSA Signature");
  447d10:	24040003 	li	a0,3
  447d14:	8f85802c 	lw	a1,-32724(gp)
  447d18:	00000000 	nop
  447d1c:	24a5ee00 	addiu	a1,a1,-4608
  447d20:	8f998c48 	lw	t9,-29624(gp)
  447d24:	00000000 	nop
  447d28:	0320f809 	jalr	t9
  447d2c:	00000000 	nop
  447d30:	8fdc0018 	lw	gp,24(s8)
  447d34:	00000000 	nop
		return STF_FAIL + AUTHENTICATION_FAILED;
  447d38:	2402001c 	li	v0,28
  447d3c:	10000077 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  447d40:	00000000 	nop
	    }

	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_signature_desc
	    , &md->rbody, sig_val, sig_len, "SIG_R"))
  447d44:	8fc20308 	lw	v0,776(s8)
  447d48:	00000000 	nop
  447d4c:	244300bc 	addiu	v1,v0,188
  447d50:	8fc202e8 	lw	v0,744(s8)
  447d54:	00000000 	nop
  447d58:	afa20010 	sw	v0,16(sp)
  447d5c:	8f82802c 	lw	v0,-32724(gp)
  447d60:	00000000 	nop
  447d64:	2442ef88 	addiu	v0,v0,-4216
  447d68:	00000000 	nop
  447d6c:	afa20014 	sw	v0,20(sp)
  447d70:	00002021 	move	a0,zero
  447d74:	8f858a38 	lw	a1,-30152(gp)
  447d78:	00603021 	move	a2,v1
  447d7c:	27c700e8 	addiu	a3,s8,232
  447d80:	8f99841c 	lw	t9,-31716(gp)
  447d84:	00000000 	nop
  447d88:	0320f809 	jalr	t9
  447d8c:	00000000 	nop
  447d90:	8fdc0018 	lw	gp,24(s8)
  447d94:	14400004 	bnez	v0,447da8 <main_inI3_outR3_tail+0x66c>
  447d98:	00000000 	nop
		return STF_INTERNAL_ERROR;
  447d9c:	24020003 	li	v0,3
  447da0:	1000005e 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  447da4:	00000000 	nop
	}
    }

    /* encrypt message, sans fixed part of header */

    if (!encrypt_message(&md->rbody, st))
  447da8:	8fc20308 	lw	v0,776(s8)
  447dac:	00000000 	nop
  447db0:	244200bc 	addiu	v0,v0,188
  447db4:	00402021 	move	a0,v0
  447db8:	8fc50020 	lw	a1,32(s8)
  447dbc:	8f99885c 	lw	t9,-30628(gp)
  447dc0:	00000000 	nop
  447dc4:	0320f809 	jalr	t9
  447dc8:	00000000 	nop
  447dcc:	8fdc0018 	lw	gp,24(s8)
  447dd0:	14400004 	bnez	v0,447de4 <main_inI3_outR3_tail+0x6a8>
  447dd4:	00000000 	nop
	return STF_INTERNAL_ERROR;	/* ??? we may be partly committed */
  447dd8:	24020003 	li	v0,3
  447ddc:	1000004f 	b	447f1c <main_inI3_outR3_tail+0x7e0>
  447de0:	00000000 	nop

    /* Last block of Phase 1 (R3), kept for Phase 2 IV generation */
    DBG_cond_dump(DBG_CRYPT, "last encrypted block of Phase 1:"
  447de4:	8f8284f8 	lw	v0,-31496(gp)
  447de8:	00000000 	nop
  447dec:	8c420000 	lw	v0,0(v0)
  447df0:	00000000 	nop
  447df4:	30420002 	andi	v0,v0,0x2
  447df8:	10400011 	beqz	v0,447e40 <main_inI3_outR3_tail+0x704>
  447dfc:	00000000 	nop
  447e00:	8fc20020 	lw	v0,32(s8)
  447e04:	00000000 	nop
  447e08:	244201c4 	addiu	v0,v0,452
  447e0c:	8f84802c 	lw	a0,-32724(gp)
  447e10:	00000000 	nop
  447e14:	2484ef90 	addiu	a0,a0,-4208
  447e18:	00402821 	move	a1,v0
  447e1c:	8fc20020 	lw	v0,32(s8)
  447e20:	00000000 	nop
  447e24:	8c460248 	lw	a2,584(v0)
  447e28:	8f9984ec 	lw	t9,-31508(gp)
  447e2c:	00000000 	nop
  447e30:	0320f809 	jalr	t9
  447e34:	00000000 	nop
  447e38:	8fdc0018 	lw	gp,24(s8)
  447e3c:	00000000 	nop
	, st->st_new_iv, st->st_new_iv_len);

    st->st_ph1_iv_len = st->st_new_iv_len;
  447e40:	8fc20020 	lw	v0,32(s8)
  447e44:	00000000 	nop
  447e48:	8c430248 	lw	v1,584(v0)
  447e4c:	8fc20020 	lw	v0,32(s8)
  447e50:	00000000 	nop
  447e54:	ac43024c 	sw	v1,588(v0)
    set_ph1_iv(st, st->st_new_iv);
  447e58:	8fc20020 	lw	v0,32(s8)
  447e5c:	00000000 	nop
  447e60:	8c42024c 	lw	v0,588(v0)
  447e64:	00000000 	nop
  447e68:	2c420040 	sltiu	v0,v0,64
  447e6c:	1440000d 	bnez	v0,447ea4 <main_inI3_outR3_tail+0x768>
  447e70:	00000000 	nop
  447e74:	8f84802c 	lw	a0,-32724(gp)
  447e78:	00000000 	nop
  447e7c:	2484efb4 	addiu	a0,a0,-4172
  447e80:	8f85802c 	lw	a1,-32724(gp)
  447e84:	00000000 	nop
  447e88:	24a5d59c 	addiu	a1,a1,-10852
  447e8c:	24060f98 	li	a2,3992
  447e90:	8f998bb8 	lw	t9,-29768(gp)
  447e94:	00000000 	nop
  447e98:	0320f809 	jalr	t9
  447e9c:	00000000 	nop
  447ea0:	8fdc0018 	lw	gp,24(s8)
  447ea4:	8fc20020 	lw	v0,32(s8)
  447ea8:	00000000 	nop
  447eac:	24430204 	addiu	v1,v0,516
  447eb0:	8fc20020 	lw	v0,32(s8)
  447eb4:	00000000 	nop
  447eb8:	244201c4 	addiu	v0,v0,452
  447ebc:	00602021 	move	a0,v1
  447ec0:	00402821 	move	a1,v0
  447ec4:	8fc20020 	lw	v0,32(s8)
  447ec8:	00000000 	nop
  447ecc:	8c46024c 	lw	a2,588(v0)
  447ed0:	8f998a30 	lw	t9,-30160(gp)
  447ed4:	00000000 	nop
  447ed8:	0320f809 	jalr	t9
  447edc:	00000000 	nop
  447ee0:	8fdc0018 	lw	gp,24(s8)
  447ee4:	00000000 	nop

    ISAKMP_SA_established(st->st_connection, st->st_serialno);
  447ee8:	8fc20020 	lw	v0,32(s8)
  447eec:	00000000 	nop
  447ef0:	8c44000c 	lw	a0,12(v0)
  447ef4:	8fc20020 	lw	v0,32(s8)
  447ef8:	00000000 	nop
  447efc:	8c450000 	lw	a1,0(v0)
  447f00:	8f9984b8 	lw	t9,-31560(gp)
  447f04:	00000000 	nop
  447f08:	0320f809 	jalr	t9
  447f0c:	00000000 	nop
  447f10:	8fdc0018 	lw	gp,24(s8)
  447f14:	00000000 	nop

    /* ??? If st->st_connectionc->gw_info != NULL,
     * we should keep the public key -- it tested out.
     */

    return STF_OK;
  447f18:	24020002 	li	v0,2
}
  447f1c:	03c0e821 	move	sp,s8
  447f20:	8fbf0300 	lw	ra,768(sp)
  447f24:	8fbe02fc 	lw	s8,764(sp)
  447f28:	27bd0308 	addiu	sp,sp,776
  447f2c:	03e00008 	jr	ra
  447f30:	00000000 	nop

00447f34 <main_inR3>:
  447f34:	3c1c0fbc 	lui	gp,0xfbc
  447f38:	279c4a3c 	addiu	gp,gp,19004
  447f3c:	0399e021 	addu	gp,gp,t9
  447f40:	27bdffd8 	addiu	sp,sp,-40
  447f44:	afbc0010 	sw	gp,16(sp)
  447f48:	afbf0020 	sw	ra,32(sp)
  447f4c:	afbe001c 	sw	s8,28(sp)
  447f50:	afbc0018 	sw	gp,24(sp)
  447f54:	03a0f021 	move	s8,sp
  447f58:	afc40028 	sw	a0,40(s8)

/* STATE_MAIN_I3:
 * Handle HDR*;IDir;HASH/SIG_R from responder.
 *
 * Broken into parts to allow asynchronous DNS for KEY records.
 *
 * - main_inR3 to start
 * - main_inR3_tail to finish or suspend for DNS lookup
 * - main_inR3_continue to start main_inR3_tail again
 */

static stf_status main_inR3_tail(struct msg_digest *md);	/* forward */

stf_status
main_inR3(struct msg_digest *md)
{
    passert(keys_from_dns == NULL);
  447f5c:	8f828394 	lw	v0,-31852(gp)
  447f60:	00000000 	nop
  447f64:	8c420000 	lw	v0,0(v0)
  447f68:	00000000 	nop
  447f6c:	1040000e 	beqz	v0,447fa8 <main_inR3+0x74>
  447f70:	00000000 	nop
  447f74:	8f84802c 	lw	a0,-32724(gp)
  447f78:	00000000 	nop
  447f7c:	2484ef40 	addiu	a0,a0,-4288
  447f80:	8f85802c 	lw	a1,-32724(gp)
  447f84:	00000000 	nop
  447f88:	24a5d59c 	addiu	a1,a1,-10852
  447f8c:	24060fb2 	li	a2,4018
  447f90:	8f998bb8 	lw	t9,-29768(gp)
  447f94:	00000000 	nop
  447f98:	0320f809 	jalr	t9
  447f9c:	00000000 	nop
  447fa0:	8fdc0010 	lw	gp,16(s8)
  447fa4:	00000000 	nop
    return main_inR3_tail(md);
  447fa8:	8fc40028 	lw	a0,40(s8)
  447fac:	8f998038 	lw	t9,-32712(gp)
  447fb0:	00000000 	nop
  447fb4:	2739805c 	addiu	t9,t9,-32676
  447fb8:	00000000 	nop
  447fbc:	0320f809 	jalr	t9
  447fc0:	00000000 	nop
  447fc4:	8fdc0010 	lw	gp,16(s8)
  447fc8:	00000000 	nop
}
  447fcc:	03c0e821 	move	sp,s8
  447fd0:	8fbf0020 	lw	ra,32(sp)
  447fd4:	8fbe001c 	lw	s8,28(sp)
  447fd8:	27bd0028 	addiu	sp,sp,40
  447fdc:	03e00008 	jr	ra
  447fe0:	00000000 	nop

00447fe4 <main_inR3_continue>:
  447fe4:	3c1c0fbc 	lui	gp,0xfbc
  447fe8:	279c498c 	addiu	gp,gp,18828
  447fec:	0399e021 	addu	gp,gp,t9
  447ff0:	27bdffd8 	addiu	sp,sp,-40
  447ff4:	afbc0010 	sw	gp,16(sp)
  447ff8:	afbf0020 	sw	ra,32(sp)
  447ffc:	afbe001c 	sw	s8,28(sp)
  448000:	afbc0018 	sw	gp,24(sp)
  448004:	03a0f021 	move	s8,sp
  448008:	afc40028 	sw	a0,40(s8)
  44800c:	afc5002c 	sw	a1,44(s8)

static void
main_inR3_continue(struct adns_continuation *cr, err_t ugh)
{
    key_continue(cr, ugh, main_inR3_tail);
  448010:	8fc40028 	lw	a0,40(s8)
  448014:	8fc5002c 	lw	a1,44(s8)
  448018:	8f868038 	lw	a2,-32712(gp)
  44801c:	00000000 	nop
  448020:	24c6805c 	addiu	a2,a2,-32676
  448024:	8f998034 	lw	t9,-32716(gp)
  448028:	00000000 	nop
  44802c:	27397320 	addiu	t9,t9,29472
  448030:	00000000 	nop
  448034:	0320f809 	jalr	t9
  448038:	00000000 	nop
  44803c:	8fdc0010 	lw	gp,16(s8)
  448040:	00000000 	nop
}
  448044:	03c0e821 	move	sp,s8
  448048:	8fbf0020 	lw	ra,32(sp)
  44804c:	8fbe001c 	lw	s8,28(sp)
  448050:	27bd0028 	addiu	sp,sp,40
  448054:	03e00008 	jr	ra
  448058:	00000000 	nop

0044805c <main_inR3_tail>:
  44805c:	3c1c0fbc 	lui	gp,0xfbc
  448060:	279c4914 	addiu	gp,gp,18708
  448064:	0399e021 	addu	gp,gp,t9
  448068:	27bdffd0 	addiu	sp,sp,-48
  44806c:	afbc0010 	sw	gp,16(sp)
  448070:	afbf0028 	sw	ra,40(sp)
  448074:	afbe0024 	sw	s8,36(sp)
  448078:	afbc0020 	sw	gp,32(sp)
  44807c:	03a0f021 	move	s8,sp
  448080:	afc40030 	sw	a0,48(s8)

static stf_status
main_inR3_tail(struct msg_digest *md)
{
    struct state *const st = md->st;
  448084:	8fc20030 	lw	v0,48(s8)
  448088:	00000000 	nop
  44808c:	8c420098 	lw	v0,152(v0)
  448090:	00000000 	nop
  448094:	afc20018 	sw	v0,24(s8)

    /* ID and HASH_R or SIG_R in
     * Note: this may switch the connection being used!
     */
    {
	stf_status r = main_id_and_auth(md, TRUE, main_inR3_continue);
  448098:	8fc40030 	lw	a0,48(s8)
  44809c:	24050001 	li	a1,1
  4480a0:	8f868034 	lw	a2,-32716(gp)
  4480a4:	00000000 	nop
  4480a8:	24c67fe4 	addiu	a2,a2,32740
  4480ac:	8f998038 	lw	t9,-32712(gp)
  4480b0:	00000000 	nop
  4480b4:	2739e694 	addiu	t9,t9,-6508
  4480b8:	00000000 	nop
  4480bc:	0320f809 	jalr	t9
  4480c0:	00000000 	nop
  4480c4:	8fdc0010 	lw	gp,16(s8)
  4480c8:	afc2001c 	sw	v0,28(s8)

	if (r != STF_OK)
  4480cc:	8fc3001c 	lw	v1,28(s8)
  4480d0:	24020002 	li	v0,2
  4480d4:	10620004 	beq	v1,v0,4480e8 <main_inR3_tail+0x8c>
  4480d8:	00000000 	nop
	    return r;
  4480dc:	8fc2001c 	lw	v0,28(s8)
  4480e0:	1000005e 	b	44825c <main_inR3_tail+0x200>
  4480e4:	00000000 	nop
    }

    /**************** done input ****************/

    ISAKMP_SA_established(st->st_connection, st->st_serialno);
  4480e8:	8fc20018 	lw	v0,24(s8)
  4480ec:	00000000 	nop
  4480f0:	8c44000c 	lw	a0,12(v0)
  4480f4:	8fc20018 	lw	v0,24(s8)
  4480f8:	00000000 	nop
  4480fc:	8c450000 	lw	a1,0(v0)
  448100:	8f9984b8 	lw	t9,-31560(gp)
  448104:	00000000 	nop
  448108:	0320f809 	jalr	t9
  44810c:	00000000 	nop
  448110:	8fdc0010 	lw	gp,16(s8)
  448114:	00000000 	nop

    /* ??? If c->gw_info != NULL,
     * we should keep the public key -- it tested out.
     */

    st->st_ph1_iv_len = st->st_new_iv_len;
  448118:	8fc20018 	lw	v0,24(s8)
  44811c:	00000000 	nop
  448120:	8c430248 	lw	v1,584(v0)
  448124:	8fc20018 	lw	v0,24(s8)
  448128:	00000000 	nop
  44812c:	ac43024c 	sw	v1,588(v0)
    set_ph1_iv(st, st->st_new_iv);
  448130:	8fc20018 	lw	v0,24(s8)
  448134:	00000000 	nop
  448138:	8c42024c 	lw	v0,588(v0)
  44813c:	00000000 	nop
  448140:	2c420040 	sltiu	v0,v0,64
  448144:	1440000d 	bnez	v0,44817c <main_inR3_tail+0x120>
  448148:	00000000 	nop
  44814c:	8f84802c 	lw	a0,-32724(gp)
  448150:	00000000 	nop
  448154:	2484efb4 	addiu	a0,a0,-4172
  448158:	8f85802c 	lw	a1,-32724(gp)
  44815c:	00000000 	nop
  448160:	24a5d59c 	addiu	a1,a1,-10852
  448164:	24060fd4 	li	a2,4052
  448168:	8f998bb8 	lw	t9,-29768(gp)
  44816c:	00000000 	nop
  448170:	0320f809 	jalr	t9
  448174:	00000000 	nop
  448178:	8fdc0010 	lw	gp,16(s8)
  44817c:	8fc20018 	lw	v0,24(s8)
  448180:	00000000 	nop
  448184:	24430204 	addiu	v1,v0,516
  448188:	8fc20018 	lw	v0,24(s8)
  44818c:	00000000 	nop
  448190:	244201c4 	addiu	v0,v0,452
  448194:	00602021 	move	a0,v1
  448198:	00402821 	move	a1,v0
  44819c:	8fc20018 	lw	v0,24(s8)
  4481a0:	00000000 	nop
  4481a4:	8c46024c 	lw	a2,588(v0)
  4481a8:	8f998a30 	lw	t9,-30160(gp)
  4481ac:	00000000 	nop
  4481b0:	0320f809 	jalr	t9
  4481b4:	00000000 	nop
  4481b8:	8fdc0010 	lw	gp,16(s8)
  4481bc:	00000000 	nop

    update_iv(st);	/* finalize our Phase 1 IV */
  4481c0:	8fc20018 	lw	v0,24(s8)
  4481c4:	00000000 	nop
  4481c8:	8c420248 	lw	v0,584(v0)
  4481cc:	00000000 	nop
  4481d0:	2c420040 	sltiu	v0,v0,64
  4481d4:	1440000d 	bnez	v0,44820c <main_inR3_tail+0x1b0>
  4481d8:	00000000 	nop
  4481dc:	8f84802c 	lw	a0,-32724(gp)
  4481e0:	00000000 	nop
  4481e4:	2484e450 	addiu	a0,a0,-7088
  4481e8:	8f85802c 	lw	a1,-32724(gp)
  4481ec:	00000000 	nop
  4481f0:	24a5d59c 	addiu	a1,a1,-10852
  4481f4:	24060fd6 	li	a2,4054
  4481f8:	8f998bb8 	lw	t9,-29768(gp)
  4481fc:	00000000 	nop
  448200:	0320f809 	jalr	t9
  448204:	00000000 	nop
  448208:	8fdc0010 	lw	gp,16(s8)
  44820c:	8fc20018 	lw	v0,24(s8)
  448210:	00000000 	nop
  448214:	24440184 	addiu	a0,v0,388
  448218:	8fc20018 	lw	v0,24(s8)
  44821c:	00000000 	nop
  448220:	244501c4 	addiu	a1,v0,452
  448224:	8fc20018 	lw	v0,24(s8)
  448228:	00000000 	nop
  44822c:	8c430248 	lw	v1,584(v0)
  448230:	8fc20018 	lw	v0,24(s8)
  448234:	00000000 	nop
  448238:	ac430244 	sw	v1,580(v0)
  44823c:	00603021 	move	a2,v1
  448240:	8f998a30 	lw	t9,-30160(gp)
  448244:	00000000 	nop
  448248:	0320f809 	jalr	t9
  44824c:	00000000 	nop
  448250:	8fdc0010 	lw	gp,16(s8)
  448254:	00000000 	nop

    return STF_OK;
  448258:	24020002 	li	v0,2
}
  44825c:	03c0e821 	move	sp,s8
  448260:	8fbf0028 	lw	ra,40(sp)
  448264:	8fbe0024 	lw	s8,36(sp)
  448268:	27bd0030 	addiu	sp,sp,48
  44826c:	03e00008 	jr	ra
  448270:	00000000 	nop

00448274 <aggr_inI1_outR1>:
  448274:	3c1c0fbc 	lui	gp,0xfbc
  448278:	279c46fc 	addiu	gp,gp,18172
  44827c:	0399e021 	addu	gp,gp,t9
  448280:	27bdfc18 	addiu	sp,sp,-1000
  448284:	afbc0018 	sw	gp,24(sp)
  448288:	afbf03e4 	sw	ra,996(sp)
  44828c:	afbe03e0 	sw	s8,992(sp)
  448290:	afbc03dc 	sw	gp,988(sp)
  448294:	afb003d8 	sw	s0,984(sp)
  448298:	03a0f021 	move	s8,sp
  44829c:	afc403e8 	sw	a0,1000(s8)


/* STATE_AGGR_R0: HDR, SA, KE, Ni, IDii 
 *           --> HDR, SA, KE, Nr, IDir, HASH_R/SIG_R
 */
stf_status
aggr_inI1_outR1(struct msg_digest *md)
{
    /* With Aggressive Mode, we get an ID payload in this, the first
     * message, so we can use it to index the preshared-secrets
     * when the IP address would not be meaningful (i.e. Road
     * Warrior).  So our first task is to unravel the ID payload.
     */
    struct state *st;
    struct payload_digest *const sa_pd = md->chain[ISAKMP_NEXT_SA];
  4482a0:	8fc203e8 	lw	v0,1000(s8)
  4482a4:	00000000 	nop
  4482a8:	8c4204ac 	lw	v0,1196(v0)
  4482ac:	00000000 	nop
  4482b0:	afc20024 	sw	v0,36(s8)
    pb_stream *keyex_pbs = &md->chain[ISAKMP_NEXT_KE]->pbs;
  4482b4:	8fc203e8 	lw	v0,1000(s8)
  4482b8:	00000000 	nop
  4482bc:	8c4204b8 	lw	v0,1208(v0)
  4482c0:	00000000 	nop
  4482c4:	afc20028 	sw	v0,40(s8)
    struct connection *c = find_host_connection(&md->iface->addr, pluto_port
  4482c8:	8fc203e8 	lw	v0,1000(s8)
  4482cc:	00000000 	nop
  4482d0:	8c42000c 	lw	v0,12(v0)
  4482d4:	00000000 	nop
  4482d8:	24440008 	addiu	a0,v0,8
  4482dc:	8f8584b0 	lw	a1,-31568(gp)
  4482e0:	00000000 	nop
  4482e4:	94a50000 	lhu	a1,0(a1)
  4482e8:	8fc203e8 	lw	v0,1000(s8)
  4482ec:	00000000 	nop
  4482f0:	24430010 	addiu	v1,v0,16
  4482f4:	8fc203e8 	lw	v0,1000(s8)
  4482f8:	00000000 	nop
  4482fc:	9442002c 	lhu	v0,44(v0)
  448300:	00603021 	move	a2,v1
  448304:	00403821 	move	a3,v0
  448308:	8f998098 	lw	t9,-32616(gp)
  44830c:	00000000 	nop
  448310:	0320f809 	jalr	t9
  448314:	00000000 	nop
  448318:	8fdc0018 	lw	gp,24(s8)
  44831c:	afc2002c 	sw	v0,44(s8)
	, &md->sender, md->sender_port);
    pb_stream r_id_pbs;	/* ID Payload; also used for hash calculation */
    pb_stream r_sa_pbs;
    int auth_payload,next_payload;

    if (c == NULL)
  448320:	8fc2002c 	lw	v0,44(s8)
  448324:	00000000 	nop
  448328:	1440004f 	bnez	v0,448468 <aggr_inI1_outR1+0x1f4>
  44832c:	00000000 	nop
    {
	/* see if a wildcarded connection can be found */
	c = find_host_connection(&md->iface->addr, pluto_port
  448330:	8fc203e8 	lw	v0,1000(s8)
  448334:	00000000 	nop
  448338:	8c42000c 	lw	v0,12(v0)
  44833c:	00000000 	nop
  448340:	24430008 	addiu	v1,v0,8
  448344:	8f8584b0 	lw	a1,-31568(gp)
  448348:	00000000 	nop
  44834c:	94a50000 	lhu	a1,0(a1)
  448350:	8fc203e8 	lw	v0,1000(s8)
  448354:	00000000 	nop
  448358:	9442002c 	lhu	v0,44(v0)
  44835c:	00602021 	move	a0,v1
  448360:	00003021 	move	a2,zero
  448364:	00403821 	move	a3,v0
  448368:	8f998098 	lw	t9,-32616(gp)
  44836c:	00000000 	nop
  448370:	0320f809 	jalr	t9
  448374:	00000000 	nop
  448378:	8fdc0018 	lw	gp,24(s8)
  44837c:	afc2002c 	sw	v0,44(s8)
	    , (ip_address*)NULL, md->sender_port);
	if (c != NULL && c->policy & POLICY_AGGRESSIVE)
  448380:	8fc2002c 	lw	v0,44(s8)
  448384:	00000000 	nop
  448388:	10400020 	beqz	v0,44840c <aggr_inI1_outR1+0x198>
  44838c:	00000000 	nop
  448390:	8fc2002c 	lw	v0,44(s8)
  448394:	00000000 	nop
  448398:	8c440008 	lw	a0,8(v0)
  44839c:	8c45000c 	lw	a1,12(v0)
  4483a0:	24020000 	li	v0,0
  4483a4:	24031000 	li	v1,4096
  4483a8:	00822024 	and	a0,a0,v0
  4483ac:	00a32824 	and	a1,a1,v1
  4483b0:	00801021 	move	v0,a0
  4483b4:	00451025 	or	v0,v0,a1
  4483b8:	10400014 	beqz	v0,44840c <aggr_inI1_outR1+0x198>
  4483bc:	00000000 	nop
	{
	    /* Create a temporary connection that is a copy of this one.
	     * His ID isn't declared yet.
	     */
	    c = rw_instantiate(c, &md->sender,
  4483c0:	8fc203e8 	lw	v0,1000(s8)
  4483c4:	00000000 	nop
  4483c8:	24430010 	addiu	v1,v0,16
  4483cc:	8fc203e8 	lw	v0,1000(s8)
  4483d0:	00000000 	nop
  4483d4:	9442002c 	lhu	v0,44(v0)
  4483d8:	afa00010 	sw	zero,16(sp)
  4483dc:	8fc4002c 	lw	a0,44(s8)
  4483e0:	00602821 	move	a1,v1
  4483e4:	00403021 	move	a2,v0
  4483e8:	00003821 	move	a3,zero
  4483ec:	8f998414 	lw	t9,-31724(gp)
  4483f0:	00000000 	nop
  4483f4:	0320f809 	jalr	t9
  4483f8:	00000000 	nop
  4483fc:	8fdc0018 	lw	gp,24(s8)
  448400:	afc2002c 	sw	v0,44(s8)
  448404:	10000018 	b	448468 <aggr_inI1_outR1+0x1f4>
  448408:	00000000 	nop
#ifdef NAT_TRAVERSAL
			md->sender_port,
#endif
#ifdef VIRTUAL_IP
			NULL,
#endif
			NULL);
	}
	else
	{
	    loglog(RC_LOG_SERIOUS, "initial Aggressive Mode message from %s"
  44840c:	8fc203e8 	lw	v0,1000(s8)
  448410:	00000000 	nop
  448414:	24420010 	addiu	v0,v0,16
  448418:	00402021 	move	a0,v0
  44841c:	8f998100 	lw	t9,-32512(gp)
  448420:	00000000 	nop
  448424:	0320f809 	jalr	t9
  448428:	00000000 	nop
  44842c:	8fdc0018 	lw	gp,24(s8)
  448430:	24040003 	li	a0,3
  448434:	8f85802c 	lw	a1,-32724(gp)
  448438:	00000000 	nop
  44843c:	24a5efe4 	addiu	a1,a1,-4124
  448440:	00403021 	move	a2,v0
  448444:	8f998c48 	lw	t9,-29624(gp)
  448448:	00000000 	nop
  44844c:	0320f809 	jalr	t9
  448450:	00000000 	nop
  448454:	8fdc0018 	lw	gp,24(s8)
  448458:	00000000 	nop
		" but no (wildcard) connection has been configured"
		, ip_str(&md->sender));
	    /* XXX notification is in order! */
	    return STF_IGNORE;
  44845c:	00001021 	move	v0,zero
  448460:	10000341 	b	449168 <aggr_inI1_outR1+0xef4>
  448464:	00000000 	nop
	}
    }

    /* Set up state */
    cur_state = md->st = st = new_state();	/* (caller will reset cur_state) */
  448468:	8fd003e8 	lw	s0,1000(s8)
  44846c:	8f9987b4 	lw	t9,-30796(gp)
  448470:	00000000 	nop
  448474:	0320f809 	jalr	t9
  448478:	00000000 	nop
  44847c:	8fdc0018 	lw	gp,24(s8)
  448480:	afc20020 	sw	v0,32(s8)
  448484:	8fc20020 	lw	v0,32(s8)
  448488:	00000000 	nop
  44848c:	ae020098 	sw	v0,152(s0)
  448490:	8f8187f8 	lw	at,-30728(gp)
  448494:	00000000 	nop
  448498:	ac220000 	sw	v0,0(at)
    st->st_connection = c;
  44849c:	8fc3002c 	lw	v1,44(s8)
  4484a0:	8fc20020 	lw	v0,32(s8)
  4484a4:	00000000 	nop
  4484a8:	ac43000c 	sw	v1,12(v0)

    st->st_policy |= POLICY_AGGRESSIVE;
  4484ac:	8fc20020 	lw	v0,32(s8)
  4484b0:	00000000 	nop
  4484b4:	8c4400d8 	lw	a0,216(v0)
  4484b8:	8c4500dc 	lw	a1,220(v0)
  4484bc:	24020000 	li	v0,0
  4484c0:	24031000 	li	v1,4096
  4484c4:	00821025 	or	v0,a0,v0
  4484c8:	00a31825 	or	v1,a1,v1
  4484cc:	8fc40020 	lw	a0,32(s8)
  4484d0:	00000000 	nop
  4484d4:	ac8200d8 	sw	v0,216(a0)
  4484d8:	ac8300dc 	sw	v1,220(a0)

    /* KLUDGE: st_oakley determined by SA parse which wants the pre-
       shared secret already determinable by decode_peer_id! */
    /* we really need to peek into the SA to see if it is RSASIG
       or something else. */
    st->st_oakley.auth = OAKLEY_PRESHARED_KEY;  /* FIXME! */
  4484dc:	24030001 	li	v1,1
  4484e0:	8fc20020 	lw	v0,32(s8)
  4484e4:	00000000 	nop
  4484e8:	a443002c 	sh	v1,44(v0)
    if (!decode_peer_id(md, FALSE, TRUE))
  4484ec:	8fc403e8 	lw	a0,1000(s8)
  4484f0:	00002821 	move	a1,zero
  4484f4:	24060001 	li	a2,1
  4484f8:	8f998034 	lw	t9,-32716(gp)
  4484fc:	00000000 	nop
  448500:	27392ca4 	addiu	t9,t9,11428
  448504:	00000000 	nop
  448508:	0320f809 	jalr	t9
  44850c:	00000000 	nop
  448510:	8fdc0018 	lw	gp,24(s8)
  448514:	14400027 	bnez	v0,4485b4 <aggr_inI1_outR1+0x340>
  448518:	00000000 	nop
    {
	char buf[200];

	(void) idtoa(&st->st_connection->that.id, buf, sizeof(buf));
  44851c:	8fc20020 	lw	v0,32(s8)
  448520:	00000000 	nop
  448524:	8c42000c 	lw	v0,12(v0)
  448528:	00000000 	nop
  44852c:	244200e0 	addiu	v0,v0,224
  448530:	00402021 	move	a0,v0
  448534:	27c50078 	addiu	a1,s8,120
  448538:	240600c8 	li	a2,200
  44853c:	8f998798 	lw	t9,-30824(gp)
  448540:	00000000 	nop
  448544:	0320f809 	jalr	t9
  448548:	00000000 	nop
  44854c:	8fdc0018 	lw	gp,24(s8)
  448550:	00000000 	nop
	loglog(RC_LOG_SERIOUS,
  448554:	8fc203e8 	lw	v0,1000(s8)
  448558:	00000000 	nop
  44855c:	24420010 	addiu	v0,v0,16
  448560:	00402021 	move	a0,v0
  448564:	8f998100 	lw	t9,-32512(gp)
  448568:	00000000 	nop
  44856c:	0320f809 	jalr	t9
  448570:	00000000 	nop
  448574:	8fdc0018 	lw	gp,24(s8)
  448578:	24040003 	li	a0,3
  44857c:	8f85802c 	lw	a1,-32724(gp)
  448580:	00000000 	nop
  448584:	24a5f040 	addiu	a1,a1,-4032
  448588:	27c60078 	addiu	a2,s8,120
  44858c:	00403821 	move	a3,v0
  448590:	8f998c48 	lw	t9,-29624(gp)
  448594:	00000000 	nop
  448598:	0320f809 	jalr	t9
  44859c:	00000000 	nop
  4485a0:	8fdc0018 	lw	gp,24(s8)
  4485a4:	00000000 	nop
	     "initial Aggressive Mode packet claiming to be from %s"
	     " on %s but no connection has been authorized",
	    buf, ip_str(&md->sender));
	/* XXX notification is in order! */
	return STF_FAIL + INVALID_ID_INFORMATION;
  4485a8:	24020016 	li	v0,22
  4485ac:	100002ee 	b	449168 <aggr_inI1_outR1+0xef4>
  4485b0:	00000000 	nop
    }

    c = st->st_connection;
  4485b4:	8fc20020 	lw	v0,32(s8)
  4485b8:	00000000 	nop
  4485bc:	8c42000c 	lw	v0,12(v0)
  4485c0:	00000000 	nop
  4485c4:	afc2002c 	sw	v0,44(s8)

#ifdef DEBUG
    extra_debugging(c);
  4485c8:	8fc4002c 	lw	a0,44(s8)
  4485cc:	8f998be4 	lw	t9,-29724(gp)
  4485d0:	00000000 	nop
  4485d4:	0320f809 	jalr	t9
  4485d8:	00000000 	nop
  4485dc:	8fdc0018 	lw	gp,24(s8)
  4485e0:	00000000 	nop
#endif
    st->st_try = 0;	/* Not our job to try again from start */
  4485e4:	8fc20020 	lw	v0,32(s8)
  4485e8:	00000000 	nop
  4485ec:	ac400154 	sw	zero,340(v0)
    st->st_policy = c->policy & ~POLICY_IPSEC_MASK;	/* only as accurate as connection */
  4485f0:	8fc2002c 	lw	v0,44(s8)
  4485f4:	00000000 	nop
  4485f8:	8c440008 	lw	a0,8(v0)
  4485fc:	8c45000c 	lw	a1,12(v0)
  448600:	2402ffff 	li	v0,-1
  448604:	2403ff03 	li	v1,-253
  448608:	00821024 	and	v0,a0,v0
  44860c:	00a31824 	and	v1,a1,v1
  448610:	8fc40020 	lw	a0,32(s8)
  448614:	00000000 	nop
  448618:	ac8200d8 	sw	v0,216(a0)
  44861c:	ac8300dc 	sw	v1,220(a0)


    memcpy(st->st_icookie, md->hdr.isa_icookie, COOKIE_SIZE);
  448620:	8fc20020 	lw	v0,32(s8)
  448624:	00000000 	nop
  448628:	244300f0 	addiu	v1,v0,240
  44862c:	8fc203e8 	lw	v0,1000(s8)
  448630:	00000000 	nop
  448634:	24420070 	addiu	v0,v0,112
  448638:	00602021 	move	a0,v1
  44863c:	00402821 	move	a1,v0
  448640:	24060008 	li	a2,8
  448644:	8f998a30 	lw	t9,-30160(gp)
  448648:	00000000 	nop
  44864c:	0320f809 	jalr	t9
  448650:	00000000 	nop
  448654:	8fdc0018 	lw	gp,24(s8)
  448658:	00000000 	nop
    get_cookie(FALSE, st->st_rcookie, COOKIE_SIZE, &md->sender);
  44865c:	8fc20020 	lw	v0,32(s8)
  448660:	00000000 	nop
  448664:	24430108 	addiu	v1,v0,264
  448668:	8fc203e8 	lw	v0,1000(s8)
  44866c:	00000000 	nop
  448670:	24420010 	addiu	v0,v0,16
  448674:	00002021 	move	a0,zero
  448678:	00602821 	move	a1,v1
  44867c:	24060008 	li	a2,8
  448680:	00403821 	move	a3,v0
  448684:	8f998574 	lw	t9,-31372(gp)
  448688:	00000000 	nop
  44868c:	0320f809 	jalr	t9
  448690:	00000000 	nop
  448694:	8fdc0018 	lw	gp,24(s8)
  448698:	00000000 	nop

    insert_state(st);	/* needs cookies, connection, and msgid (0) */
  44869c:	8fc40020 	lw	a0,32(s8)
  4486a0:	8f9983a4 	lw	t9,-31836(gp)
  4486a4:	00000000 	nop
  4486a8:	0320f809 	jalr	t9
  4486ac:	00000000 	nop
  4486b0:	8fdc0018 	lw	gp,24(s8)
  4486b4:	00000000 	nop

    st->st_doi = ISAKMP_DOI_IPSEC;
  4486b8:	24030001 	li	v1,1
  4486bc:	8fc20020 	lw	v0,32(s8)
  4486c0:	00000000 	nop
  4486c4:	ac4300cc 	sw	v1,204(v0)
    st->st_situation = SIT_IDENTITY_ONLY; /* We only support this */
  4486c8:	8fc20020 	lw	v0,32(s8)
  4486cc:	00000000 	nop
  4486d0:	ac4300d0 	sw	v1,208(v0)
    st->st_state = STATE_AGGR_R1;
  4486d4:	2403000d 	li	v1,13
  4486d8:	8fc20020 	lw	v0,32(s8)
  4486dc:	00000000 	nop
  4486e0:	ac43014c 	sw	v1,332(v0)

    plog("responding to Aggressive Mode, state #%lu, connection \"%s\""
  4486e4:	8fc2002c 	lw	v0,44(s8)
  4486e8:	00000000 	nop
  4486ec:	24420108 	addiu	v0,v0,264
  4486f0:	00402021 	move	a0,v0
  4486f4:	8f998100 	lw	t9,-32512(gp)
  4486f8:	00000000 	nop
  4486fc:	0320f809 	jalr	t9
  448700:	00000000 	nop
  448704:	8fdc0018 	lw	gp,24(s8)
  448708:	00403821 	move	a3,v0
  44870c:	8fc20020 	lw	v0,32(s8)
  448710:	00000000 	nop
  448714:	8c43000c 	lw	v1,12(v0)
  448718:	8f84802c 	lw	a0,-32724(gp)
  44871c:	00000000 	nop
  448720:	2484f0a4 	addiu	a0,a0,-3932
  448724:	8fc20020 	lw	v0,32(s8)
  448728:	00000000 	nop
  44872c:	8c450000 	lw	a1,0(v0)
  448730:	8c660000 	lw	a2,0(v1)
  448734:	8f998abc 	lw	t9,-30020(gp)
  448738:	00000000 	nop
  44873c:	0320f809 	jalr	t9
  448740:	00000000 	nop
  448744:	8fdc0018 	lw	gp,24(s8)
  448748:	00000000 	nop
	" from %s"
	, st->st_serialno, st->st_connection->name
	, ip_str(&c->that.host_addr));

#ifdef NAT_TRAVERSAL
    if (md->nat_traversal_vid && nat_traversal_enabled) {
  44874c:	8fc203e8 	lw	v0,1000(s8)
  448750:	00000000 	nop
  448754:	944204ec 	lhu	v0,1260(v0)
  448758:	00000000 	nop
  44875c:	10400013 	beqz	v0,4487ac <aggr_inI1_outR1+0x538>
  448760:	00000000 	nop
  448764:	8f82837c 	lw	v0,-31876(gp)
  448768:	00000000 	nop
  44876c:	8c420000 	lw	v0,0(v0)
  448770:	00000000 	nop
  448774:	1040000d 	beqz	v0,4487ac <aggr_inI1_outR1+0x538>
  448778:	00000000 	nop
	/* reply if NAT-Traversal draft is supported */
	st->nat_traversal = nat_traversal_vid_to_method(md->nat_traversal_vid);
  44877c:	8fd00020 	lw	s0,32(s8)
  448780:	8fc203e8 	lw	v0,1000(s8)
  448784:	00000000 	nop
  448788:	944204ec 	lhu	v0,1260(v0)
  44878c:	00000000 	nop
  448790:	00402021 	move	a0,v0
  448794:	8f9988dc 	lw	t9,-30500(gp)
  448798:	00000000 	nop
  44879c:	0320f809 	jalr	t9
  4487a0:	00000000 	nop
  4487a4:	8fdc0018 	lw	gp,24(s8)
  4487a8:	ae020264 	sw	v0,612(s0)
    }
#endif

    /* save initiator SA for HASH */
    clonereplacechunk(st->st_p1isa, sa_pd->pbs.start, pbs_room(&sa_pd->pbs),
  4487ac:	8fc20020 	lw	v0,32(s8)
  4487b0:	00000000 	nop
  4487b4:	8c42015c 	lw	v0,348(v0)
  4487b8:	00000000 	nop
  4487bc:	10400009 	beqz	v0,4487e4 <aggr_inI1_outR1+0x570>
  4487c0:	00000000 	nop
  4487c4:	8fc20020 	lw	v0,32(s8)
  4487c8:	00000000 	nop
  4487cc:	8c44015c 	lw	a0,348(v0)
  4487d0:	8f998094 	lw	t9,-32620(gp)
  4487d4:	00000000 	nop
  4487d8:	0320f809 	jalr	t9
  4487dc:	00000000 	nop
  4487e0:	8fdc0018 	lw	gp,24(s8)
  4487e4:	8fd00020 	lw	s0,32(s8)
  4487e8:	8fc20024 	lw	v0,36(s8)
  4487ec:	00000000 	nop
  4487f0:	8c430014 	lw	v1,20(v0)
  4487f4:	8fc20024 	lw	v0,36(s8)
  4487f8:	00000000 	nop
  4487fc:	8c42000c 	lw	v0,12(v0)
  448800:	00000000 	nop
  448804:	00621023 	subu	v0,v1,v0
  448808:	00401821 	move	v1,v0
  44880c:	8fc20020 	lw	v0,32(s8)
  448810:	00000000 	nop
  448814:	ac430160 	sw	v1,352(v0)
  448818:	8fc20024 	lw	v0,36(s8)
  44881c:	00000000 	nop
  448820:	8c44000c 	lw	a0,12(v0)
  448824:	00602821 	move	a1,v1
  448828:	8f86802c 	lw	a2,-32724(gp)
  44882c:	00000000 	nop
  448830:	24c6f0e8 	addiu	a2,a2,-3864
  448834:	8f998c04 	lw	t9,-29692(gp)
  448838:	00000000 	nop
  44883c:	0320f809 	jalr	t9
  448840:	00000000 	nop
  448844:	8fdc0018 	lw	gp,24(s8)
  448848:	ae02015c 	sw	v0,348(s0)
		      "sa in aggr_inI1_outR1()");

    /* parse_isakmp_sa also spits out a winning SA into our reply,
     * so we have to build our md->reply and emit HDR before calling it.
     */

    /* HDR out */
    {
	struct isakmp_hdr r_hdr = md->hdr;
  44884c:	8fc303e8 	lw	v1,1000(s8)
  448850:	00000000 	nop
  448854:	8c620070 	lw	v0,112(v1)
  448858:	00000000 	nop
  44885c:	afc20140 	sw	v0,320(s8)
  448860:	8c620074 	lw	v0,116(v1)
  448864:	00000000 	nop
  448868:	afc20144 	sw	v0,324(s8)
  44886c:	8c620078 	lw	v0,120(v1)
  448870:	00000000 	nop
  448874:	afc20148 	sw	v0,328(s8)
  448878:	8c62007c 	lw	v0,124(v1)
  44887c:	00000000 	nop
  448880:	afc2014c 	sw	v0,332(s8)
  448884:	8c620080 	lw	v0,128(v1)
  448888:	00000000 	nop
  44888c:	afc20150 	sw	v0,336(s8)
  448890:	8c620084 	lw	v0,132(v1)
  448894:	00000000 	nop
  448898:	afc20154 	sw	v0,340(s8)
  44889c:	8c620088 	lw	v0,136(v1)
  4488a0:	00000000 	nop
  4488a4:	afc20158 	sw	v0,344(s8)

	memcpy(r_hdr.isa_rcookie, st->st_rcookie, COOKIE_SIZE);
  4488a8:	27c20140 	addiu	v0,s8,320
  4488ac:	24430008 	addiu	v1,v0,8
  4488b0:	8fc20020 	lw	v0,32(s8)
  4488b4:	00000000 	nop
  4488b8:	24420108 	addiu	v0,v0,264
  4488bc:	00602021 	move	a0,v1
  4488c0:	00402821 	move	a1,v0
  4488c4:	24060008 	li	a2,8
  4488c8:	8f998a30 	lw	t9,-30160(gp)
  4488cc:	00000000 	nop
  4488d0:	0320f809 	jalr	t9
  4488d4:	00000000 	nop
  4488d8:	8fdc0018 	lw	gp,24(s8)
  4488dc:	00000000 	nop
	r_hdr.isa_np = ISAKMP_NEXT_SA;
  4488e0:	24020001 	li	v0,1
  4488e4:	a3c20150 	sb	v0,336(s8)
	if (!out_struct(&r_hdr, &isakmp_hdr_desc, &md->reply, &md->rbody))
  4488e8:	8fc203e8 	lw	v0,1000(s8)
  4488ec:	00000000 	nop
  4488f0:	2443009c 	addiu	v1,v0,156
  4488f4:	8fc203e8 	lw	v0,1000(s8)
  4488f8:	00000000 	nop
  4488fc:	244200bc 	addiu	v0,v0,188
  448900:	27c40140 	addiu	a0,s8,320
  448904:	8f858688 	lw	a1,-31096(gp)
  448908:	00603021 	move	a2,v1
  44890c:	00403821 	move	a3,v0
  448910:	8f998ba0 	lw	t9,-29792(gp)
  448914:	00000000 	nop
  448918:	0320f809 	jalr	t9
  44891c:	00000000 	nop
  448920:	8fdc0018 	lw	gp,24(s8)
  448924:	14400004 	bnez	v0,448938 <aggr_inI1_outR1+0x6c4>
  448928:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  44892c:	24020003 	li	v0,3
  448930:	1000020d 	b	449168 <aggr_inI1_outR1+0xef4>
  448934:	00000000 	nop
    }

    /* start of SA out */
    {
	struct isakmp_sa r_sa = sa_pd->payload.sa;
  448938:	8fc30024 	lw	v1,36(s8)
  44893c:	00000000 	nop
  448940:	8c620020 	lw	v0,32(v1)
  448944:	00000000 	nop
  448948:	afc20160 	sw	v0,352(s8)
  44894c:	8c620024 	lw	v0,36(v1)
  448950:	00000000 	nop
  448954:	afc20164 	sw	v0,356(s8)
	notification_t r;

	r_sa.isasa_np = ISAKMP_NEXT_KE;
  448958:	24020004 	li	v0,4
  44895c:	a3c20160 	sb	v0,352(s8)
	if (!out_struct(&r_sa, &isakmp_sa_desc, &md->rbody, &r_sa_pbs))
  448960:	8fc203e8 	lw	v0,1000(s8)
  448964:	00000000 	nop
  448968:	244200bc 	addiu	v0,v0,188
  44896c:	27c40160 	addiu	a0,s8,352
  448970:	8f858594 	lw	a1,-31340(gp)
  448974:	00403021 	move	a2,v0
  448978:	27c70050 	addiu	a3,s8,80
  44897c:	8f998ba0 	lw	t9,-29792(gp)
  448980:	00000000 	nop
  448984:	0320f809 	jalr	t9
  448988:	00000000 	nop
  44898c:	8fdc0018 	lw	gp,24(s8)
  448990:	14400004 	bnez	v0,4489a4 <aggr_inI1_outR1+0x730>
  448994:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  448998:	24020003 	li	v0,3
  44899c:	100001f2 	b	449168 <aggr_inI1_outR1+0xef4>
  4489a0:	00000000 	nop

	/* SA body in and out */
	r = parse_isakmp_sa_body(&sa_pd->pbs, &sa_pd->payload.sa,
  4489a4:	8fc20024 	lw	v0,36(s8)
  4489a8:	00000000 	nop
  4489ac:	24430020 	addiu	v1,v0,32
  4489b0:	8fc20020 	lw	v0,32(s8)
  4489b4:	00000000 	nop
  4489b8:	afa20010 	sw	v0,16(sp)
  4489bc:	8fc40024 	lw	a0,36(s8)
  4489c0:	00602821 	move	a1,v1
  4489c4:	27c60050 	addiu	a2,s8,80
  4489c8:	00003821 	move	a3,zero
  4489cc:	8f9985c0 	lw	t9,-31296(gp)
  4489d0:	00000000 	nop
  4489d4:	0320f809 	jalr	t9
  4489d8:	00000000 	nop
  4489dc:	8fdc0018 	lw	gp,24(s8)
  4489e0:	afc20168 	sw	v0,360(s8)
				 &r_sa_pbs, FALSE, st);
	if (r != NOTHING_WRONG)
  4489e4:	8fc20168 	lw	v0,360(s8)
  4489e8:	00000000 	nop
  4489ec:	10400006 	beqz	v0,448a08 <aggr_inI1_outR1+0x794>
  4489f0:	00000000 	nop
	    return STF_FAIL + r;
  4489f4:	8fc20168 	lw	v0,360(s8)
  4489f8:	00000000 	nop
  4489fc:	24420004 	addiu	v0,v0,4
  448a00:	100001d9 	b	449168 <aggr_inI1_outR1+0xef4>
  448a04:	00000000 	nop
    }

    /* don't know until after SA body has been parsed */
    auth_payload = st->st_oakley.auth == OAKLEY_PRESHARED_KEY
  448a08:	8fc20020 	lw	v0,32(s8)
  448a0c:	00000000 	nop
  448a10:	9443002c 	lhu	v1,44(v0)
  448a14:	24020001 	li	v0,1
  448a18:	14620005 	bne	v1,v0,448a30 <aggr_inI1_outR1+0x7bc>
  448a1c:	00000000 	nop
  448a20:	24020008 	li	v0,8
  448a24:	afc203d4 	sw	v0,980(s8)
  448a28:	10000003 	b	448a38 <aggr_inI1_outR1+0x7c4>
  448a2c:	00000000 	nop
  448a30:	24020009 	li	v0,9
  448a34:	afc203d4 	sw	v0,980(s8)
  448a38:	8fc203d4 	lw	v0,980(s8)
  448a3c:	00000000 	nop
  448a40:	afc20070 	sw	v0,112(s8)
	? ISAKMP_NEXT_HASH : ISAKMP_NEXT_SIG;


    /* KE in */
    RETURN_STF_FAILURE(accept_KE(&st->st_gi, "Gi", st->st_oakley.group, keyex_pbs));
  448a44:	8fc20020 	lw	v0,32(s8)
  448a48:	00000000 	nop
  448a4c:	244200e8 	addiu	v0,v0,232
  448a50:	00402021 	move	a0,v0
  448a54:	8f85802c 	lw	a1,-32724(gp)
  448a58:	00000000 	nop
  448a5c:	24a5edc0 	addiu	a1,a1,-4672
  448a60:	8fc20020 	lw	v0,32(s8)
  448a64:	00000000 	nop
  448a68:	8c460030 	lw	a2,48(v0)
  448a6c:	8fc70028 	lw	a3,40(s8)
  448a70:	8f998034 	lw	t9,-32716(gp)
  448a74:	00000000 	nop
  448a78:	27399e10 	addiu	t9,t9,-25072
  448a7c:	00000000 	nop
  448a80:	0320f809 	jalr	t9
  448a84:	00000000 	nop
  448a88:	8fdc0018 	lw	gp,24(s8)
  448a8c:	afc20168 	sw	v0,360(s8)
  448a90:	8fc20168 	lw	v0,360(s8)
  448a94:	00000000 	nop
  448a98:	10400006 	beqz	v0,448ab4 <aggr_inI1_outR1+0x840>
  448a9c:	00000000 	nop
  448aa0:	8fc20168 	lw	v0,360(s8)
  448aa4:	00000000 	nop
  448aa8:	24420004 	addiu	v0,v0,4
  448aac:	100001ae 	b	449168 <aggr_inI1_outR1+0xef4>
  448ab0:	00000000 	nop

    /* Ni in */
    RETURN_STF_FAILURE(accept_nonce(md, &st->st_ni, "Ni"));
  448ab4:	8fc20020 	lw	v0,32(s8)
  448ab8:	00000000 	nop
  448abc:	244200f8 	addiu	v0,v0,248
  448ac0:	8fc403e8 	lw	a0,1000(s8)
  448ac4:	00402821 	move	a1,v0
  448ac8:	8f86802c 	lw	a2,-32724(gp)
  448acc:	00000000 	nop
  448ad0:	24c6dd38 	addiu	a2,a2,-8904
  448ad4:	8f998034 	lw	t9,-32716(gp)
  448ad8:	00000000 	nop
  448adc:	2739093c 	addiu	t9,t9,2364
  448ae0:	00000000 	nop
  448ae4:	0320f809 	jalr	t9
  448ae8:	00000000 	nop
  448aec:	8fdc0018 	lw	gp,24(s8)
  448af0:	afc20168 	sw	v0,360(s8)
  448af4:	8fc20168 	lw	v0,360(s8)
  448af8:	00000000 	nop
  448afc:	10400006 	beqz	v0,448b18 <aggr_inI1_outR1+0x8a4>
  448b00:	00000000 	nop
  448b04:	8fc20168 	lw	v0,360(s8)
  448b08:	00000000 	nop
  448b0c:	24420004 	addiu	v0,v0,4
  448b10:	10000195 	b	449168 <aggr_inI1_outR1+0xef4>
  448b14:	00000000 	nop

    /************** build rest of output: KE, Nr, IDir, HASH_R/SIG_R ********/

    /* KE */
    if (!build_and_ship_KE(st, &st->st_gr, st->st_oakley.group,
			   &md->rbody, ISAKMP_NEXT_NONCE))
  448b18:	8fc20020 	lw	v0,32(s8)
  448b1c:	00000000 	nop
  448b20:	24430100 	addiu	v1,v0,256
  448b24:	8fc203e8 	lw	v0,1000(s8)
  448b28:	00000000 	nop
  448b2c:	244700bc 	addiu	a3,v0,188
  448b30:	2402000a 	li	v0,10
  448b34:	afa20010 	sw	v0,16(sp)
  448b38:	8fc40020 	lw	a0,32(s8)
  448b3c:	00602821 	move	a1,v1
  448b40:	8fc20020 	lw	v0,32(s8)
  448b44:	00000000 	nop
  448b48:	8c460030 	lw	a2,48(v0)
  448b4c:	8f998034 	lw	t9,-32716(gp)
  448b50:	00000000 	nop
  448b54:	27399b7c 	addiu	t9,t9,-25732
  448b58:	00000000 	nop
  448b5c:	0320f809 	jalr	t9
  448b60:	00000000 	nop
  448b64:	8fdc0018 	lw	gp,24(s8)
  448b68:	14400004 	bnez	v0,448b7c <aggr_inI1_outR1+0x908>
  448b6c:	00000000 	nop
	return STF_INTERNAL_ERROR;
  448b70:	24020003 	li	v0,3
  448b74:	1000017c 	b	449168 <aggr_inI1_outR1+0xef4>
  448b78:	00000000 	nop

    /* Nr */
    if (!build_and_ship_nonce(&st->st_nr, &md->rbody, ISAKMP_NEXT_ID, "Nr"))
  448b7c:	8fc20020 	lw	v0,32(s8)
  448b80:	00000000 	nop
  448b84:	24430110 	addiu	v1,v0,272
  448b88:	8fc203e8 	lw	v0,1000(s8)
  448b8c:	00000000 	nop
  448b90:	244200bc 	addiu	v0,v0,188
  448b94:	00602021 	move	a0,v1
  448b98:	00402821 	move	a1,v0
  448b9c:	24060005 	li	a2,5
  448ba0:	8f87802c 	lw	a3,-32724(gp)
  448ba4:	00000000 	nop
  448ba8:	24e7edc4 	addiu	a3,a3,-4668
  448bac:	8f998034 	lw	t9,-32716(gp)
  448bb0:	00000000 	nop
  448bb4:	2739a1a4 	addiu	t9,t9,-24156
  448bb8:	00000000 	nop
  448bbc:	0320f809 	jalr	t9
  448bc0:	00000000 	nop
  448bc4:	8fdc0018 	lw	gp,24(s8)
  448bc8:	14400004 	bnez	v0,448bdc <aggr_inI1_outR1+0x968>
  448bcc:	00000000 	nop
	return STF_INTERNAL_ERROR;
  448bd0:	24020003 	li	v0,3
  448bd4:	10000164 	b	449168 <aggr_inI1_outR1+0xef4>
  448bd8:	00000000 	nop

    /* IDir out */
    {
	struct isakmp_ipsec_id id_hd;
	chunk_t id_b;

	build_id_payload(&id_hd, &id_b, &st->st_connection->this);
  448bdc:	8fc20020 	lw	v0,32(s8)
  448be0:	00000000 	nop
  448be4:	8c42000c 	lw	v0,12(v0)
  448be8:	00000000 	nop
  448bec:	24420030 	addiu	v0,v0,48
  448bf0:	27c40170 	addiu	a0,s8,368
  448bf4:	27c50178 	addiu	a1,s8,376
  448bf8:	00403021 	move	a2,v0
  448bfc:	8f998140 	lw	t9,-32448(gp)
  448c00:	00000000 	nop
  448c04:	0320f809 	jalr	t9
  448c08:	00000000 	nop
  448c0c:	8fdc0018 	lw	gp,24(s8)
  448c10:	00000000 	nop
	id_hd.isaiid_np = auth_payload;
  448c14:	93c20073 	lbu	v0,115(s8)
  448c18:	00000000 	nop
  448c1c:	a3c20170 	sb	v0,368(s8)
	if (!out_struct(&id_hd, &isakmp_ipsec_identification_desc, &md->rbody, &r_id_pbs)
	|| !out_chunk(id_b, &r_id_pbs, "my identity"))
  448c20:	8fc203e8 	lw	v0,1000(s8)
  448c24:	00000000 	nop
  448c28:	244200bc 	addiu	v0,v0,188
  448c2c:	27c40170 	addiu	a0,s8,368
  448c30:	8f858988 	lw	a1,-30328(gp)
  448c34:	00403021 	move	a2,v0
  448c38:	27c70030 	addiu	a3,s8,48
  448c3c:	8f998ba0 	lw	t9,-29792(gp)
  448c40:	00000000 	nop
  448c44:	0320f809 	jalr	t9
  448c48:	00000000 	nop
  448c4c:	8fdc0018 	lw	gp,24(s8)
  448c50:	1040000e 	beqz	v0,448c8c <aggr_inI1_outR1+0xa18>
  448c54:	00000000 	nop
  448c58:	8fc40178 	lw	a0,376(s8)
  448c5c:	8fc5017c 	lw	a1,380(s8)
  448c60:	27c60030 	addiu	a2,s8,48
  448c64:	8f87802c 	lw	a3,-32724(gp)
  448c68:	00000000 	nop
  448c6c:	24e7dd3c 	addiu	a3,a3,-8900
  448c70:	8f998308 	lw	t9,-31992(gp)
  448c74:	00000000 	nop
  448c78:	0320f809 	jalr	t9
  448c7c:	00000000 	nop
  448c80:	8fdc0018 	lw	gp,24(s8)
  448c84:	14400004 	bnez	v0,448c98 <aggr_inI1_outR1+0xa24>
  448c88:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  448c8c:	24020003 	li	v0,3
  448c90:	10000135 	b	449168 <aggr_inI1_outR1+0xef4>
  448c94:	00000000 	nop
	close_output_pbs(&r_id_pbs);
  448c98:	27c40030 	addiu	a0,s8,48
  448c9c:	8f998228 	lw	t9,-32216(gp)
  448ca0:	00000000 	nop
  448ca4:	0320f809 	jalr	t9
  448ca8:	00000000 	nop
  448cac:	8fdc0018 	lw	gp,24(s8)
  448cb0:	00000000 	nop
    }

    compute_dh_shared(st, st->st_gi, st->st_oakley.group);
  448cb4:	8fc20020 	lw	v0,32(s8)
  448cb8:	8fc40020 	lw	a0,32(s8)
  448cbc:	8c4500e8 	lw	a1,232(v0)
  448cc0:	8c4600ec 	lw	a2,236(v0)
  448cc4:	8fc20020 	lw	v0,32(s8)
  448cc8:	00000000 	nop
  448ccc:	8c470030 	lw	a3,48(v0)
  448cd0:	8f998034 	lw	t9,-32716(gp)
  448cd4:	00000000 	nop
  448cd8:	273997dc 	addiu	t9,t9,-26660
  448cdc:	00000000 	nop
  448ce0:	0320f809 	jalr	t9
  448ce4:	00000000 	nop
  448ce8:	8fdc0018 	lw	gp,24(s8)
  448cec:	00000000 	nop
#ifdef DODGE_DH_MISSING_ZERO_BUG
    if (st->st_shared.ptr[0] == 0)
	return STF_REPLACE_DOOMED_EXCHANGE;
#endif
    if (!generate_skeyids_iv(st))
  448cf0:	8fc40020 	lw	a0,32(s8)
  448cf4:	8f998034 	lw	t9,-32716(gp)
  448cf8:	00000000 	nop
  448cfc:	2739e4bc 	addiu	t9,t9,-6980
  448d00:	00000000 	nop
  448d04:	0320f809 	jalr	t9
  448d08:	00000000 	nop
  448d0c:	8fdc0018 	lw	gp,24(s8)
  448d10:	14400004 	bnez	v0,448d24 <aggr_inI1_outR1+0xab0>
  448d14:	00000000 	nop
	return STF_FAIL + AUTHENTICATION_FAILED;
  448d18:	2402001c 	li	v0,28
  448d1c:	10000112 	b	449168 <aggr_inI1_outR1+0xef4>
  448d20:	00000000 	nop
    update_iv(st);
  448d24:	8fc20020 	lw	v0,32(s8)
  448d28:	00000000 	nop
  448d2c:	8c420248 	lw	v0,584(v0)
  448d30:	00000000 	nop
  448d34:	2c420040 	sltiu	v0,v0,64
  448d38:	1440000d 	bnez	v0,448d70 <aggr_inI1_outR1+0xafc>
  448d3c:	00000000 	nop
  448d40:	8f84802c 	lw	a0,-32724(gp)
  448d44:	00000000 	nop
  448d48:	2484e450 	addiu	a0,a0,-7088
  448d4c:	8f85802c 	lw	a1,-32724(gp)
  448d50:	00000000 	nop
  448d54:	24a5d59c 	addiu	a1,a1,-10852
  448d58:	2406108f 	li	a2,4239
  448d5c:	8f998bb8 	lw	t9,-29768(gp)
  448d60:	00000000 	nop
  448d64:	0320f809 	jalr	t9
  448d68:	00000000 	nop
  448d6c:	8fdc0018 	lw	gp,24(s8)
  448d70:	8fc20020 	lw	v0,32(s8)
  448d74:	00000000 	nop
  448d78:	24440184 	addiu	a0,v0,388
  448d7c:	8fc20020 	lw	v0,32(s8)
  448d80:	00000000 	nop
  448d84:	244501c4 	addiu	a1,v0,452
  448d88:	8fc20020 	lw	v0,32(s8)
  448d8c:	00000000 	nop
  448d90:	8c430248 	lw	v1,584(v0)
  448d94:	8fc20020 	lw	v0,32(s8)
  448d98:	00000000 	nop
  448d9c:	ac430244 	sw	v1,580(v0)
  448da0:	00603021 	move	a2,v1
  448da4:	8f998a30 	lw	t9,-30160(gp)
  448da8:	00000000 	nop
  448dac:	0320f809 	jalr	t9
  448db0:	00000000 	nop
  448db4:	8fdc0018 	lw	gp,24(s8)
  448db8:	00000000 	nop

    if(!(c->policy & POLICY_XAUTH))
  448dbc:	8fc2002c 	lw	v0,44(s8)
  448dc0:	00000000 	nop
  448dc4:	8c440008 	lw	a0,8(v0)
  448dc8:	8c45000c 	lw	a1,12(v0)
  448dcc:	24020000 	li	v0,0
  448dd0:	24032000 	li	v1,8192
  448dd4:	00822024 	and	a0,a0,v0
  448dd8:	00a32824 	and	a1,a1,v1
  448ddc:	00801021 	move	v0,a0
  448de0:	00451025 	or	v0,v0,a1
  448de4:	14400004 	bnez	v0,448df8 <aggr_inI1_outR1+0xb84>
  448de8:	00000000 	nop
	next_payload = ISAKMP_NEXT_NONE;
  448dec:	afc00074 	sw	zero,116(s8)
  448df0:	10000003 	b	448e00 <aggr_inI1_outR1+0xb8c>
  448df4:	00000000 	nop
    else
	next_payload = ISAKMP_NEXT_VID;
  448df8:	2402000d 	li	v0,13
  448dfc:	afc20074 	sw	v0,116(s8)

#ifdef NAT_TRAVERSAL
    if (st->nat_traversal) {
  448e00:	8fc20020 	lw	v0,32(s8)
  448e04:	00000000 	nop
  448e08:	8c420264 	lw	v0,612(v0)
  448e0c:	00000000 	nop
  448e10:	1040001a 	beqz	v0,448e7c <aggr_inI1_outR1+0xc08>
  448e14:	00000000 	nop
	if ((st->nat_traversal) && (!out_vendorid(auth_payload,
	    &md->rbody, md->nat_traversal_vid))) {
  448e18:	8fc20020 	lw	v0,32(s8)
  448e1c:	00000000 	nop
  448e20:	8c420264 	lw	v0,612(v0)
  448e24:	00000000 	nop
  448e28:	10400014 	beqz	v0,448e7c <aggr_inI1_outR1+0xc08>
  448e2c:	00000000 	nop
  448e30:	93c40073 	lbu	a0,115(s8)
  448e34:	8fc203e8 	lw	v0,1000(s8)
  448e38:	00000000 	nop
  448e3c:	244300bc 	addiu	v1,v0,188
  448e40:	8fc203e8 	lw	v0,1000(s8)
  448e44:	00000000 	nop
  448e48:	944204ec 	lhu	v0,1260(v0)
  448e4c:	00602821 	move	a1,v1
  448e50:	00403021 	move	a2,v0
  448e54:	8f998474 	lw	t9,-31628(gp)
  448e58:	00000000 	nop
  448e5c:	0320f809 	jalr	t9
  448e60:	00000000 	nop
  448e64:	8fdc0018 	lw	gp,24(s8)
  448e68:	14400004 	bnez	v0,448e7c <aggr_inI1_outR1+0xc08>
  448e6c:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  448e70:	24020003 	li	v0,3
  448e74:	100000bc 	b	449168 <aggr_inI1_outR1+0xef4>
  448e78:	00000000 	nop
	}
    }

    if (st->nat_traversal & NAT_T_WITH_NATD) {
  448e7c:	8fc20020 	lw	v0,32(s8)
  448e80:	00000000 	nop
  448e84:	8c420264 	lw	v0,612(v0)
  448e88:	00000000 	nop
  448e8c:	3042000e 	andi	v0,v0,0xe
  448e90:	10400012 	beqz	v0,448edc <aggr_inI1_outR1+0xc68>
  448e94:	00000000 	nop
	if (!nat_traversal_add_natd(auth_payload, &md->rbody, md))
  448e98:	93c30073 	lbu	v1,115(s8)
  448e9c:	8fc203e8 	lw	v0,1000(s8)
  448ea0:	00000000 	nop
  448ea4:	244200bc 	addiu	v0,v0,188
  448ea8:	00602021 	move	a0,v1
  448eac:	00402821 	move	a1,v0
  448eb0:	8fc603e8 	lw	a2,1000(s8)
  448eb4:	8f998ab8 	lw	t9,-30024(gp)
  448eb8:	00000000 	nop
  448ebc:	0320f809 	jalr	t9
  448ec0:	00000000 	nop
  448ec4:	8fdc0018 	lw	gp,24(s8)
  448ec8:	14400004 	bnez	v0,448edc <aggr_inI1_outR1+0xc68>
  448ecc:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  448ed0:	24020003 	li	v0,3
  448ed4:	100000a4 	b	449168 <aggr_inI1_outR1+0xef4>
  448ed8:	00000000 	nop
    }
#endif

    /* HASH_R or SIG_R out */
    {
	u_char hash_val[MAX_DIGEST_LEN];
	size_t hash_len = main_mode_hash(st, hash_val, FALSE, &r_id_pbs);
  448edc:	8fc40020 	lw	a0,32(s8)
  448ee0:	27c50180 	addiu	a1,s8,384
  448ee4:	00003021 	move	a2,zero
  448ee8:	27c70030 	addiu	a3,s8,48
  448eec:	8f998034 	lw	t9,-32716(gp)
  448ef0:	00000000 	nop
  448ef4:	2739f3b4 	addiu	t9,t9,-3148
  448ef8:	00000000 	nop
  448efc:	0320f809 	jalr	t9
  448f00:	00000000 	nop
  448f04:	8fdc0018 	lw	gp,24(s8)
  448f08:	afc20168 	sw	v0,360(s8)

	if (auth_payload == ISAKMP_NEXT_HASH)
  448f0c:	8fc30070 	lw	v1,112(s8)
  448f10:	24020008 	li	v0,8
  448f14:	1462001a 	bne	v1,v0,448f80 <aggr_inI1_outR1+0xd0c>
  448f18:	00000000 	nop
	{
	    /* HASH_R out */
	    if (!out_generic_raw(next_payload, &isakmp_hash_desc, &md->rbody
	    , hash_val, hash_len, "HASH_R"))
  448f1c:	93c30077 	lbu	v1,119(s8)
  448f20:	8fc203e8 	lw	v0,1000(s8)
  448f24:	00000000 	nop
  448f28:	244600bc 	addiu	a2,v0,188
  448f2c:	8fc20168 	lw	v0,360(s8)
  448f30:	00000000 	nop
  448f34:	afa20010 	sw	v0,16(sp)
  448f38:	8f82802c 	lw	v0,-32724(gp)
  448f3c:	00000000 	nop
  448f40:	2442ef80 	addiu	v0,v0,-4224
  448f44:	00000000 	nop
  448f48:	afa20014 	sw	v0,20(sp)
  448f4c:	00602021 	move	a0,v1
  448f50:	8f858924 	lw	a1,-30428(gp)
  448f54:	27c70180 	addiu	a3,s8,384
  448f58:	8f99841c 	lw	t9,-31716(gp)
  448f5c:	00000000 	nop
  448f60:	0320f809 	jalr	t9
  448f64:	00000000 	nop
  448f68:	8fdc0018 	lw	gp,24(s8)
  448f6c:	1440003c 	bnez	v0,449060 <aggr_inI1_outR1+0xdec>
  448f70:	00000000 	nop
		return STF_INTERNAL_ERROR;
  448f74:	24020003 	li	v0,3
  448f78:	1000007b 	b	449168 <aggr_inI1_outR1+0xef4>
  448f7c:	00000000 	nop
	}
	else
	{
	    /* SIG_R out */
	    u_char sig_val[RSA_MAX_OCTETS];
	    size_t sig_len = RSA_sign_hash(st->st_connection
  448f80:	8fc20020 	lw	v0,32(s8)
  448f84:	00000000 	nop
  448f88:	8c44000c 	lw	a0,12(v0)
  448f8c:	27c501c0 	addiu	a1,s8,448
  448f90:	27c60180 	addiu	a2,s8,384
  448f94:	8fc70168 	lw	a3,360(s8)
  448f98:	8f998034 	lw	t9,-32716(gp)
  448f9c:	00000000 	nop
  448fa0:	2739f4ac 	addiu	t9,t9,-2900
  448fa4:	00000000 	nop
  448fa8:	0320f809 	jalr	t9
  448fac:	00000000 	nop
  448fb0:	8fdc0018 	lw	gp,24(s8)
  448fb4:	afc203c0 	sw	v0,960(s8)
		, sig_val, hash_val, hash_len);

	    if (sig_len == 0)
  448fb8:	8fc203c0 	lw	v0,960(s8)
  448fbc:	00000000 	nop
  448fc0:	1440000e 	bnez	v0,448ffc <aggr_inI1_outR1+0xd88>
  448fc4:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "unable to locate my private key for RSA Signature");
  448fc8:	24040003 	li	a0,3
  448fcc:	8f85802c 	lw	a1,-32724(gp)
  448fd0:	00000000 	nop
  448fd4:	24a5ee00 	addiu	a1,a1,-4608
  448fd8:	8f998c48 	lw	t9,-29624(gp)
  448fdc:	00000000 	nop
  448fe0:	0320f809 	jalr	t9
  448fe4:	00000000 	nop
  448fe8:	8fdc0018 	lw	gp,24(s8)
  448fec:	00000000 	nop
		return STF_FAIL + AUTHENTICATION_FAILED;
  448ff0:	2402001c 	li	v0,28
  448ff4:	1000005c 	b	449168 <aggr_inI1_outR1+0xef4>
  448ff8:	00000000 	nop
	    }

	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_signature_desc
	    , &md->rbody, sig_val, sig_len, "SIG_R"))
  448ffc:	8fc203e8 	lw	v0,1000(s8)
  449000:	00000000 	nop
  449004:	244300bc 	addiu	v1,v0,188
  449008:	8fc203c0 	lw	v0,960(s8)
  44900c:	00000000 	nop
  449010:	afa20010 	sw	v0,16(sp)
  449014:	8f82802c 	lw	v0,-32724(gp)
  449018:	00000000 	nop
  44901c:	2442ef88 	addiu	v0,v0,-4216
  449020:	00000000 	nop
  449024:	afa20014 	sw	v0,20(sp)
  449028:	00002021 	move	a0,zero
  44902c:	8f858a38 	lw	a1,-30152(gp)
  449030:	00603021 	move	a2,v1
  449034:	27c701c0 	addiu	a3,s8,448
  449038:	8f99841c 	lw	t9,-31716(gp)
  44903c:	00000000 	nop
  449040:	0320f809 	jalr	t9
  449044:	00000000 	nop
  449048:	8fdc0018 	lw	gp,24(s8)
  44904c:	14400004 	bnez	v0,449060 <aggr_inI1_outR1+0xdec>
  449050:	00000000 	nop
		return STF_INTERNAL_ERROR;
  449054:	24020003 	li	v0,3
  449058:	10000043 	b	449168 <aggr_inI1_outR1+0xef4>
  44905c:	00000000 	nop
	}
    }

    if(c->policy & POLICY_XAUTH)
  449060:	8fc2002c 	lw	v0,44(s8)
  449064:	00000000 	nop
  449068:	8c440008 	lw	a0,8(v0)
  44906c:	8c45000c 	lw	a1,12(v0)
  449070:	24020000 	li	v0,0
  449074:	24032000 	li	v1,8192
  449078:	00822024 	and	a0,a0,v0
  44907c:	00a32824 	and	a1,a1,v1
  449080:	00801021 	move	v0,a0
  449084:	00451025 	or	v0,v0,a1
  449088:	1040002c 	beqz	v0,44913c <aggr_inI1_outR1+0xec8>
  44908c:	00000000 	nop
    {	
	struct isakmp_generic r_vid;
	pb_stream 	r_vid_pbs;
	
	/* as per ike-xauth, Sec 4.0 */
	r_vid.isag_np = ISAKMP_NEXT_NONE; 
  449090:	a3c001c0 	sb	zero,448(s8)
	if (!out_struct(&r_vid, &isakmp_vendor_id_desc, &md->rbody, &r_vid_pbs))
  449094:	8fc203e8 	lw	v0,1000(s8)
  449098:	00000000 	nop
  44909c:	244200bc 	addiu	v0,v0,188
  4490a0:	27c401c0 	addiu	a0,s8,448
  4490a4:	8f858b0c 	lw	a1,-29940(gp)
  4490a8:	00403021 	move	a2,v0
  4490ac:	27c701c8 	addiu	a3,s8,456
  4490b0:	8f998ba0 	lw	t9,-29792(gp)
  4490b4:	00000000 	nop
  4490b8:	0320f809 	jalr	t9
  4490bc:	00000000 	nop
  4490c0:	8fdc0018 	lw	gp,24(s8)
  4490c4:	14400004 	bnez	v0,4490d8 <aggr_inI1_outR1+0xe64>
  4490c8:	00000000 	nop
   		return STF_INTERNAL_ERROR;
  4490cc:	24020003 	li	v0,3
  4490d0:	10000025 	b	449168 <aggr_inI1_outR1+0xef4>
  4490d4:	00000000 	nop
       	if (!out_raw(XAUTH_Vendor_ID, XAUTH_Vendor_ID_len,  &r_vid_pbs, "XAUTH ViD"))
  4490d8:	8f84802c 	lw	a0,-32724(gp)
  4490dc:	00000000 	nop
  4490e0:	2484ed90 	addiu	a0,a0,-4720
  4490e4:	24050008 	li	a1,8
  4490e8:	27c601c8 	addiu	a2,s8,456
  4490ec:	8f87802c 	lw	a3,-32724(gp)
  4490f0:	00000000 	nop
  4490f4:	24e7ed9c 	addiu	a3,a3,-4708
  4490f8:	8f998308 	lw	t9,-31992(gp)
  4490fc:	00000000 	nop
  449100:	0320f809 	jalr	t9
  449104:	00000000 	nop
  449108:	8fdc0018 	lw	gp,24(s8)
  44910c:	14400004 	bnez	v0,449120 <aggr_inI1_outR1+0xeac>
  449110:	00000000 	nop
       		return STF_INTERNAL_ERROR;
  449114:	24020003 	li	v0,3
  449118:	10000013 	b	449168 <aggr_inI1_outR1+0xef4>
  44911c:	00000000 	nop
       	close_output_pbs(&r_vid_pbs);
  449120:	27c401c8 	addiu	a0,s8,456
  449124:	8f998228 	lw	t9,-32216(gp)
  449128:	00000000 	nop
  44912c:	0320f809 	jalr	t9
  449130:	00000000 	nop
  449134:	8fdc0018 	lw	gp,24(s8)
  449138:	00000000 	nop
    }

    /* finish message */
    close_message(&md->rbody);
  44913c:	8fc203e8 	lw	v0,1000(s8)
  449140:	00000000 	nop
  449144:	244200bc 	addiu	v0,v0,188
  449148:	00402021 	move	a0,v0
  44914c:	8f998324 	lw	t9,-31964(gp)
  449150:	00000000 	nop
  449154:	0320f809 	jalr	t9
  449158:	00000000 	nop
  44915c:	8fdc0018 	lw	gp,24(s8)
  449160:	00000000 	nop

    return STF_OK;
  449164:	24020002 	li	v0,2
}
  449168:	03c0e821 	move	sp,s8
  44916c:	8fbf03e4 	lw	ra,996(sp)
  449170:	8fbe03e0 	lw	s8,992(sp)
  449174:	8fb003d8 	lw	s0,984(sp)
  449178:	27bd03e8 	addiu	sp,sp,1000
  44917c:	03e00008 	jr	ra
  449180:	00000000 	nop

00449184 <aggr_inR1_outI2>:
  449184:	3c1c0fbc 	lui	gp,0xfbc
  449188:	279c37ec 	addiu	gp,gp,14316
  44918c:	0399e021 	addu	gp,gp,t9
  449190:	27bdfef8 	addiu	sp,sp,-264
  449194:	afbc0018 	sw	gp,24(sp)
  449198:	afbf0104 	sw	ra,260(sp)
  44919c:	afbe0100 	sw	s8,256(sp)
  4491a0:	afbc00fc 	sw	gp,252(sp)
  4491a4:	afb000f8 	sw	s0,248(sp)
  4491a8:	03a0f021 	move	s8,sp
  4491ac:	afc40108 	sw	a0,264(s8)

/* STATE_AGGR_I1: HDR, SA, KE, Nr, IDir, HASH_R/SIG_R
 *           --> HDR*, HASH_I/SIG_I
 */
static stf_status aggr_inR1_outI2_tail(struct msg_digest *md);	/* forward */
stf_status
aggr_inR1_outI2(struct msg_digest *md)
{
    /* With Aggressive Mode, we get an ID payload in this, the second
     * message, so we can use it to index the preshared-secrets
     * when the IP address would not be meaningful (i.e. Road
     * Warrior).  So our first task is to unravel the ID payload.
     */
    struct state *st = md->st;
  4491b0:	8fc20108 	lw	v0,264(s8)
  4491b4:	00000000 	nop
  4491b8:	8c420098 	lw	v0,152(v0)
  4491bc:	00000000 	nop
  4491c0:	afc20020 	sw	v0,32(s8)
    pb_stream *keyex_pbs = &md->chain[ISAKMP_NEXT_KE]->pbs;
  4491c4:	8fc20108 	lw	v0,264(s8)
  4491c8:	00000000 	nop
  4491cc:	8c4204b8 	lw	v0,1208(v0)
  4491d0:	00000000 	nop
  4491d4:	afc20024 	sw	v0,36(s8)

    st->st_policy |= POLICY_AGGRESSIVE;
  4491d8:	8fc20020 	lw	v0,32(s8)
  4491dc:	00000000 	nop
  4491e0:	8c4400d8 	lw	a0,216(v0)
  4491e4:	8c4500dc 	lw	a1,220(v0)
  4491e8:	24020000 	li	v0,0
  4491ec:	24031000 	li	v1,4096
  4491f0:	00821025 	or	v0,a0,v0
  4491f4:	00a31825 	or	v1,a1,v1
  4491f8:	8fc40020 	lw	a0,32(s8)
  4491fc:	00000000 	nop
  449200:	ac8200d8 	sw	v0,216(a0)
  449204:	ac8300dc 	sw	v1,220(a0)

    if (!decode_peer_id(md, FALSE, TRUE))
  449208:	8fc40108 	lw	a0,264(s8)
  44920c:	00002821 	move	a1,zero
  449210:	24060001 	li	a2,1
  449214:	8f998034 	lw	t9,-32716(gp)
  449218:	00000000 	nop
  44921c:	27392ca4 	addiu	t9,t9,11428
  449220:	00000000 	nop
  449224:	0320f809 	jalr	t9
  449228:	00000000 	nop
  44922c:	8fdc0018 	lw	gp,24(s8)
  449230:	14400027 	bnez	v0,4492d0 <aggr_inR1_outI2+0x14c>
  449234:	00000000 	nop
    {
	char buf[200];

	(void) idtoa(&st->st_connection->that.id, buf, sizeof(buf));
  449238:	8fc20020 	lw	v0,32(s8)
  44923c:	00000000 	nop
  449240:	8c42000c 	lw	v0,12(v0)
  449244:	00000000 	nop
  449248:	244200e0 	addiu	v0,v0,224
  44924c:	00402021 	move	a0,v0
  449250:	27c50028 	addiu	a1,s8,40
  449254:	240600c8 	li	a2,200
  449258:	8f998798 	lw	t9,-30824(gp)
  44925c:	00000000 	nop
  449260:	0320f809 	jalr	t9
  449264:	00000000 	nop
  449268:	8fdc0018 	lw	gp,24(s8)
  44926c:	00000000 	nop
	loglog(RC_LOG_SERIOUS,
  449270:	8fc20108 	lw	v0,264(s8)
  449274:	00000000 	nop
  449278:	24420010 	addiu	v0,v0,16
  44927c:	00402021 	move	a0,v0
  449280:	8f998100 	lw	t9,-32512(gp)
  449284:	00000000 	nop
  449288:	0320f809 	jalr	t9
  44928c:	00000000 	nop
  449290:	8fdc0018 	lw	gp,24(s8)
  449294:	24040003 	li	a0,3
  449298:	8f85802c 	lw	a1,-32724(gp)
  44929c:	00000000 	nop
  4492a0:	24a5f040 	addiu	a1,a1,-4032
  4492a4:	27c60028 	addiu	a2,s8,40
  4492a8:	00403821 	move	a3,v0
  4492ac:	8f998c48 	lw	t9,-29624(gp)
  4492b0:	00000000 	nop
  4492b4:	0320f809 	jalr	t9
  4492b8:	00000000 	nop
  4492bc:	8fdc0018 	lw	gp,24(s8)
  4492c0:	00000000 	nop
	     "initial Aggressive Mode packet claiming to be from %s"
	     " on %s but no connection has been authorized",
	    buf, ip_str(&md->sender));
	/* XXX notification is in order! */
	return STF_FAIL + INVALID_ID_INFORMATION;
  4492c4:	24020016 	li	v0,22
  4492c8:	10000102 	b	4496d4 <aggr_inR1_outI2+0x550>
  4492cc:	00000000 	nop
    }

    /* verify echoed SA */
    {
	struct payload_digest *const sapd = md->chain[ISAKMP_NEXT_SA];
  4492d0:	8fc20108 	lw	v0,264(s8)
  4492d4:	00000000 	nop
  4492d8:	8c4204ac 	lw	v0,1196(v0)
  4492dc:	00000000 	nop
  4492e0:	afc200f0 	sw	v0,240(s8)
	notification_t r = \
  4492e4:	8fc200f0 	lw	v0,240(s8)
  4492e8:	00000000 	nop
  4492ec:	24430020 	addiu	v1,v0,32
  4492f0:	8fc20020 	lw	v0,32(s8)
  4492f4:	00000000 	nop
  4492f8:	afa20010 	sw	v0,16(sp)
  4492fc:	8fc400f0 	lw	a0,240(s8)
  449300:	00602821 	move	a1,v1
  449304:	00003021 	move	a2,zero
  449308:	24070001 	li	a3,1
  44930c:	8f9985c0 	lw	t9,-31296(gp)
  449310:	00000000 	nop
  449314:	0320f809 	jalr	t9
  449318:	00000000 	nop
  44931c:	8fdc0018 	lw	gp,24(s8)
  449320:	afc200f4 	sw	v0,244(s8)
	    parse_isakmp_sa_body(&sapd->pbs, &sapd->payload.sa,
				 NULL, TRUE, st);

	if (r != NOTHING_WRONG)
  449324:	8fc200f4 	lw	v0,244(s8)
  449328:	00000000 	nop
  44932c:	10400006 	beqz	v0,449348 <aggr_inR1_outI2+0x1c4>
  449330:	00000000 	nop
	    return STF_FAIL + r;
  449334:	8fc200f4 	lw	v0,244(s8)
  449338:	00000000 	nop
  44933c:	24420004 	addiu	v0,v0,4
  449340:	100000e4 	b	4496d4 <aggr_inR1_outI2+0x550>
  449344:	00000000 	nop
    }

#ifdef NAT_TRAVERSAL
    if (nat_traversal_enabled && md->nat_traversal_vid) {
  449348:	8f82837c 	lw	v0,-31876(gp)
  44934c:	00000000 	nop
  449350:	8c420000 	lw	v0,0(v0)
  449354:	00000000 	nop
  449358:	10400013 	beqz	v0,4493a8 <aggr_inR1_outI2+0x224>
  44935c:	00000000 	nop
  449360:	8fc20108 	lw	v0,264(s8)
  449364:	00000000 	nop
  449368:	944204ec 	lhu	v0,1260(v0)
  44936c:	00000000 	nop
  449370:	1040000d 	beqz	v0,4493a8 <aggr_inR1_outI2+0x224>
  449374:	00000000 	nop
	st->nat_traversal = nat_traversal_vid_to_method(md->nat_traversal_vid);
  449378:	8fd00020 	lw	s0,32(s8)
  44937c:	8fc20108 	lw	v0,264(s8)
  449380:	00000000 	nop
  449384:	944204ec 	lhu	v0,1260(v0)
  449388:	00000000 	nop
  44938c:	00402021 	move	a0,v0
  449390:	8f9988dc 	lw	t9,-30500(gp)
  449394:	00000000 	nop
  449398:	0320f809 	jalr	t9
  44939c:	00000000 	nop
  4493a0:	8fdc0018 	lw	gp,24(s8)
  4493a4:	ae020264 	sw	v0,612(s0)
    }
#endif

    /* KE in */
    RETURN_STF_FAILURE(accept_KE(&st->st_gr, "Gr", st->st_oakley.group, keyex_pbs));
  4493a8:	8fc20020 	lw	v0,32(s8)
  4493ac:	00000000 	nop
  4493b0:	24420100 	addiu	v0,v0,256
  4493b4:	00402021 	move	a0,v0
  4493b8:	8f85802c 	lw	a1,-32724(gp)
  4493bc:	00000000 	nop
  4493c0:	24a5edc8 	addiu	a1,a1,-4664
  4493c4:	8fc20020 	lw	v0,32(s8)
  4493c8:	00000000 	nop
  4493cc:	8c460030 	lw	a2,48(v0)
  4493d0:	8fc70024 	lw	a3,36(s8)
  4493d4:	8f998034 	lw	t9,-32716(gp)
  4493d8:	00000000 	nop
  4493dc:	27399e10 	addiu	t9,t9,-25072
  4493e0:	00000000 	nop
  4493e4:	0320f809 	jalr	t9
  4493e8:	00000000 	nop
  4493ec:	8fdc0018 	lw	gp,24(s8)
  4493f0:	afc200f4 	sw	v0,244(s8)
  4493f4:	8fc200f4 	lw	v0,244(s8)
  4493f8:	00000000 	nop
  4493fc:	10400006 	beqz	v0,449418 <aggr_inR1_outI2+0x294>
  449400:	00000000 	nop
  449404:	8fc200f4 	lw	v0,244(s8)
  449408:	00000000 	nop
  44940c:	24420004 	addiu	v0,v0,4
  449410:	100000b0 	b	4496d4 <aggr_inR1_outI2+0x550>
  449414:	00000000 	nop

    /* Ni in */
    RETURN_STF_FAILURE(accept_nonce(md, &st->st_nr, "Nr"));
  449418:	8fc20020 	lw	v0,32(s8)
  44941c:	00000000 	nop
  449420:	24420110 	addiu	v0,v0,272
  449424:	8fc40108 	lw	a0,264(s8)
  449428:	00402821 	move	a1,v0
  44942c:	8f86802c 	lw	a2,-32724(gp)
  449430:	00000000 	nop
  449434:	24c6edc4 	addiu	a2,a2,-4668
  449438:	8f998034 	lw	t9,-32716(gp)
  44943c:	00000000 	nop
  449440:	2739093c 	addiu	t9,t9,2364
  449444:	00000000 	nop
  449448:	0320f809 	jalr	t9
  44944c:	00000000 	nop
  449450:	8fdc0018 	lw	gp,24(s8)
  449454:	afc200f4 	sw	v0,244(s8)
  449458:	8fc200f4 	lw	v0,244(s8)
  44945c:	00000000 	nop
  449460:	10400006 	beqz	v0,44947c <aggr_inR1_outI2+0x2f8>
  449464:	00000000 	nop
  449468:	8fc200f4 	lw	v0,244(s8)
  44946c:	00000000 	nop
  449470:	24420004 	addiu	v0,v0,4
  449474:	10000097 	b	4496d4 <aggr_inR1_outI2+0x550>
  449478:	00000000 	nop

    /* moved the following up as we need Rcookie for hash, skeyids */
    /* Reinsert the state, using the responder cookie we just received */
    unhash_state(st);
  44947c:	8fc40020 	lw	a0,32(s8)
  449480:	8f99883c 	lw	t9,-30660(gp)
  449484:	00000000 	nop
  449488:	0320f809 	jalr	t9
  44948c:	00000000 	nop
  449490:	8fdc0018 	lw	gp,24(s8)
  449494:	00000000 	nop
    memcpy(st->st_rcookie, md->hdr.isa_rcookie, COOKIE_SIZE);
  449498:	8fc20020 	lw	v0,32(s8)
  44949c:	00000000 	nop
  4494a0:	24430108 	addiu	v1,v0,264
  4494a4:	8fc20108 	lw	v0,264(s8)
  4494a8:	00000000 	nop
  4494ac:	24420078 	addiu	v0,v0,120
  4494b0:	00602021 	move	a0,v1
  4494b4:	00402821 	move	a1,v0
  4494b8:	24060008 	li	a2,8
  4494bc:	8f998a30 	lw	t9,-30160(gp)
  4494c0:	00000000 	nop
  4494c4:	0320f809 	jalr	t9
  4494c8:	00000000 	nop
  4494cc:	8fdc0018 	lw	gp,24(s8)
  4494d0:	00000000 	nop
    insert_state(st);	/* needs cookies, connection, and msgid (0) */
  4494d4:	8fc40020 	lw	a0,32(s8)
  4494d8:	8f9983a4 	lw	t9,-31836(gp)
  4494dc:	00000000 	nop
  4494e0:	0320f809 	jalr	t9
  4494e4:	00000000 	nop
  4494e8:	8fdc0018 	lw	gp,24(s8)
  4494ec:	00000000 	nop

#ifdef NAT_TRAVERSAL
    if (st->nat_traversal & NAT_T_WITH_NATD) {
  4494f0:	8fc20020 	lw	v0,32(s8)
  4494f4:	00000000 	nop
  4494f8:	8c420264 	lw	v0,612(v0)
  4494fc:	00000000 	nop
  449500:	3042000e 	andi	v0,v0,0xe
  449504:	10400008 	beqz	v0,449528 <aggr_inR1_outI2+0x3a4>
  449508:	00000000 	nop
	nat_traversal_natd_lookup(md);
  44950c:	8fc40108 	lw	a0,264(s8)
  449510:	8f998670 	lw	t9,-31120(gp)
  449514:	00000000 	nop
  449518:	0320f809 	jalr	t9
  44951c:	00000000 	nop
  449520:	8fdc0018 	lw	gp,24(s8)
  449524:	00000000 	nop
    }
    if (st->nat_traversal) {
  449528:	8fc20020 	lw	v0,32(s8)
  44952c:	00000000 	nop
  449530:	8c420264 	lw	v0,612(v0)
  449534:	00000000 	nop
  449538:	1040000e 	beqz	v0,449574 <aggr_inR1_outI2+0x3f0>
  44953c:	00000000 	nop
	nat_traversal_show_result(st->nat_traversal, md->sender_port);
  449540:	8fc20108 	lw	v0,264(s8)
  449544:	00000000 	nop
  449548:	9443002c 	lhu	v1,44(v0)
  44954c:	8fc20020 	lw	v0,32(s8)
  449550:	00000000 	nop
  449554:	8c440264 	lw	a0,612(v0)
  449558:	00602821 	move	a1,v1
  44955c:	8f99881c 	lw	t9,-30692(gp)
  449560:	00000000 	nop
  449564:	0320f809 	jalr	t9
  449568:	00000000 	nop
  44956c:	8fdc0018 	lw	gp,24(s8)
  449570:	00000000 	nop
    }
    if (st->nat_traversal & NAT_T_WITH_KA) {
  449574:	8fc20020 	lw	v0,32(s8)
  449578:	00000000 	nop
  44957c:	8c420264 	lw	v0,612(v0)
  449580:	00000000 	nop
  449584:	3042000e 	andi	v0,v0,0xe
  449588:	10400007 	beqz	v0,4495a8 <aggr_inR1_outI2+0x424>
  44958c:	00000000 	nop
	nat_traversal_new_ka_event();
  449590:	8f9981d8 	lw	t9,-32296(gp)
  449594:	00000000 	nop
  449598:	0320f809 	jalr	t9
  44959c:	00000000 	nop
  4495a0:	8fdc0018 	lw	gp,24(s8)
  4495a4:	00000000 	nop
    }
#endif

    /* Generate SKEYID, SKEYID_A, SKEYID_D, SKEYID_E */
    compute_dh_shared(st, st->st_gr, st->st_oakley.group);
  4495a8:	8fc20020 	lw	v0,32(s8)
  4495ac:	8fc40020 	lw	a0,32(s8)
  4495b0:	8c450100 	lw	a1,256(v0)
  4495b4:	8c460104 	lw	a2,260(v0)
  4495b8:	8fc20020 	lw	v0,32(s8)
  4495bc:	00000000 	nop
  4495c0:	8c470030 	lw	a3,48(v0)
  4495c4:	8f998034 	lw	t9,-32716(gp)
  4495c8:	00000000 	nop
  4495cc:	273997dc 	addiu	t9,t9,-26660
  4495d0:	00000000 	nop
  4495d4:	0320f809 	jalr	t9
  4495d8:	00000000 	nop
  4495dc:	8fdc0018 	lw	gp,24(s8)
  4495e0:	00000000 	nop
#ifdef DODGE_DH_MISSING_ZERO_BUG
    if (st->st_shared.ptr[0] == 0)
	return STF_REPLACE_DOOMED_EXCHANGE;
#endif
    if (!generate_skeyids_iv(st))
  4495e4:	8fc40020 	lw	a0,32(s8)
  4495e8:	8f998034 	lw	t9,-32716(gp)
  4495ec:	00000000 	nop
  4495f0:	2739e4bc 	addiu	t9,t9,-6980
  4495f4:	00000000 	nop
  4495f8:	0320f809 	jalr	t9
  4495fc:	00000000 	nop
  449600:	8fdc0018 	lw	gp,24(s8)
  449604:	14400004 	bnez	v0,449618 <aggr_inR1_outI2+0x494>
  449608:	00000000 	nop
	return STF_FAIL + AUTHENTICATION_FAILED;
  44960c:	2402001c 	li	v0,28
  449610:	10000030 	b	4496d4 <aggr_inR1_outI2+0x550>
  449614:	00000000 	nop
    update_iv(st);
  449618:	8fc20020 	lw	v0,32(s8)
  44961c:	00000000 	nop
  449620:	8c420248 	lw	v0,584(v0)
  449624:	00000000 	nop
  449628:	2c420040 	sltiu	v0,v0,64
  44962c:	1440000d 	bnez	v0,449664 <aggr_inR1_outI2+0x4e0>
  449630:	00000000 	nop
  449634:	8f84802c 	lw	a0,-32724(gp)
  449638:	00000000 	nop
  44963c:	2484e450 	addiu	a0,a0,-7088
  449640:	8f85802c 	lw	a1,-32724(gp)
  449644:	00000000 	nop
  449648:	24a5d59c 	addiu	a1,a1,-10852
  44964c:	24061126 	li	a2,4390
  449650:	8f998bb8 	lw	t9,-29768(gp)
  449654:	00000000 	nop
  449658:	0320f809 	jalr	t9
  44965c:	00000000 	nop
  449660:	8fdc0018 	lw	gp,24(s8)
  449664:	8fc20020 	lw	v0,32(s8)
  449668:	00000000 	nop
  44966c:	24440184 	addiu	a0,v0,388
  449670:	8fc20020 	lw	v0,32(s8)
  449674:	00000000 	nop
  449678:	244501c4 	addiu	a1,v0,452
  44967c:	8fc20020 	lw	v0,32(s8)
  449680:	00000000 	nop
  449684:	8c430248 	lw	v1,584(v0)
  449688:	8fc20020 	lw	v0,32(s8)
  44968c:	00000000 	nop
  449690:	ac430244 	sw	v1,580(v0)
  449694:	00603021 	move	a2,v1
  449698:	8f998a30 	lw	t9,-30160(gp)
  44969c:	00000000 	nop
  4496a0:	0320f809 	jalr	t9
  4496a4:	00000000 	nop
  4496a8:	8fdc0018 	lw	gp,24(s8)
  4496ac:	00000000 	nop

    return aggr_inR1_outI2_tail(md);
  4496b0:	8fc40108 	lw	a0,264(s8)
  4496b4:	8f998038 	lw	t9,-32712(gp)
  4496b8:	00000000 	nop
  4496bc:	27399768 	addiu	t9,t9,-26776
  4496c0:	00000000 	nop
  4496c4:	0320f809 	jalr	t9
  4496c8:	00000000 	nop
  4496cc:	8fdc0018 	lw	gp,24(s8)
  4496d0:	00000000 	nop
}
  4496d4:	03c0e821 	move	sp,s8
  4496d8:	8fbf0104 	lw	ra,260(sp)
  4496dc:	8fbe0100 	lw	s8,256(sp)
  4496e0:	8fb000f8 	lw	s0,248(sp)
  4496e4:	27bd0108 	addiu	sp,sp,264
  4496e8:	03e00008 	jr	ra
  4496ec:	00000000 	nop

004496f0 <aggr_inR1_outI2_continue>:
  4496f0:	3c1c0fbc 	lui	gp,0xfbc
  4496f4:	279c3280 	addiu	gp,gp,12928
  4496f8:	0399e021 	addu	gp,gp,t9
  4496fc:	27bdffd8 	addiu	sp,sp,-40
  449700:	afbc0010 	sw	gp,16(sp)
  449704:	afbf0020 	sw	ra,32(sp)
  449708:	afbe001c 	sw	s8,28(sp)
  44970c:	afbc0018 	sw	gp,24(sp)
  449710:	03a0f021 	move	s8,sp
  449714:	afc40028 	sw	a0,40(s8)
  449718:	afc5002c 	sw	a1,44(s8)

static void
aggr_inR1_outI2_continue(struct adns_continuation *cr, err_t ugh)
{
    key_continue(cr, ugh, aggr_inR1_outI2_tail);
  44971c:	8fc40028 	lw	a0,40(s8)
  449720:	8fc5002c 	lw	a1,44(s8)
  449724:	8f868038 	lw	a2,-32712(gp)
  449728:	00000000 	nop
  44972c:	24c69768 	addiu	a2,a2,-26776
  449730:	8f998034 	lw	t9,-32716(gp)
  449734:	00000000 	nop
  449738:	27397320 	addiu	t9,t9,29472
  44973c:	00000000 	nop
  449740:	0320f809 	jalr	t9
  449744:	00000000 	nop
  449748:	8fdc0010 	lw	gp,16(s8)
  44974c:	00000000 	nop
}
  449750:	03c0e821 	move	sp,s8
  449754:	8fbf0020 	lw	ra,32(sp)
  449758:	8fbe001c 	lw	s8,28(sp)
  44975c:	27bd0028 	addiu	sp,sp,40
  449760:	03e00008 	jr	ra
  449764:	00000000 	nop

00449768 <aggr_inR1_outI2_tail>:
  449768:	3c1c0fbc 	lui	gp,0xfbc
  44976c:	279c3208 	addiu	gp,gp,12808
  449770:	0399e021 	addu	gp,gp,t9
  449774:	27bdf920 	addiu	sp,sp,-1760
  449778:	afbc0018 	sw	gp,24(sp)
  44977c:	afbf06d8 	sw	ra,1752(sp)
  449780:	afbe06d4 	sw	s8,1748(sp)
  449784:	afbc06d0 	sw	gp,1744(sp)
  449788:	03a0f021 	move	s8,sp
  44978c:	afc406e0 	sw	a0,1760(s8)

static stf_status
aggr_inR1_outI2_tail(struct msg_digest *md)
{
    struct state *const st = md->st;
  449790:	8fc206e0 	lw	v0,1760(s8)
  449794:	00000000 	nop
  449798:	8c420098 	lw	v0,152(v0)
  44979c:	00000000 	nop
  4497a0:	afc20020 	sw	v0,32(s8)
    struct connection *c = st->st_connection;
  4497a4:	8fc20020 	lw	v0,32(s8)
  4497a8:	00000000 	nop
  4497ac:	8c42000c 	lw	v0,12(v0)
  4497b0:	00000000 	nop
  4497b4:	afc20024 	sw	v0,36(s8)
    int auth_payload;

    /* HASH_R or SIG_R in */
    {
	stf_status r = aggr_id_and_auth(md, TRUE, aggr_inR1_outI2_continue);
  4497b8:	8fc406e0 	lw	a0,1760(s8)
  4497bc:	24050001 	li	a1,1
  4497c0:	8f868038 	lw	a2,-32712(gp)
  4497c4:	00000000 	nop
  4497c8:	24c696f0 	addiu	a2,a2,-26896
  4497cc:	8f998038 	lw	t9,-32712(gp)
  4497d0:	00000000 	nop
  4497d4:	2739e700 	addiu	t9,t9,-6400
  4497d8:	00000000 	nop
  4497dc:	0320f809 	jalr	t9
  4497e0:	00000000 	nop
  4497e4:	8fdc0018 	lw	gp,24(s8)
  4497e8:	afc2002c 	sw	v0,44(s8)

	if (r != STF_OK)
  4497ec:	8fc3002c 	lw	v1,44(s8)
  4497f0:	24020002 	li	v0,2
  4497f4:	10620004 	beq	v1,v0,449808 <aggr_inR1_outI2_tail+0xa0>
  4497f8:	00000000 	nop
	    return r;
  4497fc:	8fc2002c 	lw	v0,44(s8)
  449800:	10000115 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  449804:	00000000 	nop
    }

    auth_payload = st->st_oakley.auth == OAKLEY_PRESHARED_KEY
  449808:	8fc20020 	lw	v0,32(s8)
  44980c:	00000000 	nop
  449810:	9443002c 	lhu	v1,44(v0)
  449814:	24020001 	li	v0,1
  449818:	14620005 	bne	v1,v0,449830 <aggr_inR1_outI2_tail+0xc8>
  44981c:	00000000 	nop
  449820:	24020008 	li	v0,8
  449824:	afc206c4 	sw	v0,1732(s8)
  449828:	10000003 	b	449838 <aggr_inR1_outI2_tail+0xd0>
  44982c:	00000000 	nop
  449830:	24020009 	li	v0,9
  449834:	afc206c4 	sw	v0,1732(s8)
  449838:	8fc206c4 	lw	v0,1732(s8)
  44983c:	00000000 	nop
  449840:	afc20028 	sw	v0,40(s8)
	? ISAKMP_NEXT_HASH : ISAKMP_NEXT_SIG;

    /**************** build output packet: HDR, HASH_I/SIG_I **************/

    /* HDR out */
    {
	struct isakmp_hdr r_hdr = md->hdr;
  449844:	8fc306e0 	lw	v1,1760(s8)
  449848:	00000000 	nop
  44984c:	8c620070 	lw	v0,112(v1)
  449850:	00000000 	nop
  449854:	afc20030 	sw	v0,48(s8)
  449858:	8c620074 	lw	v0,116(v1)
  44985c:	00000000 	nop
  449860:	afc20034 	sw	v0,52(s8)
  449864:	8c620078 	lw	v0,120(v1)
  449868:	00000000 	nop
  44986c:	afc20038 	sw	v0,56(s8)
  449870:	8c62007c 	lw	v0,124(v1)
  449874:	00000000 	nop
  449878:	afc2003c 	sw	v0,60(s8)
  44987c:	8c620080 	lw	v0,128(v1)
  449880:	00000000 	nop
  449884:	afc20040 	sw	v0,64(s8)
  449888:	8c620084 	lw	v0,132(v1)
  44988c:	00000000 	nop
  449890:	afc20044 	sw	v0,68(s8)
  449894:	8c620088 	lw	v0,136(v1)
  449898:	00000000 	nop
  44989c:	afc20048 	sw	v0,72(s8)

	memcpy(r_hdr.isa_rcookie, st->st_rcookie, COOKIE_SIZE);
  4498a0:	27c20030 	addiu	v0,s8,48
  4498a4:	24430008 	addiu	v1,v0,8
  4498a8:	8fc20020 	lw	v0,32(s8)
  4498ac:	00000000 	nop
  4498b0:	24420108 	addiu	v0,v0,264
  4498b4:	00602021 	move	a0,v1
  4498b8:	00402821 	move	a1,v0
  4498bc:	24060008 	li	a2,8
  4498c0:	8f998a30 	lw	t9,-30160(gp)
  4498c4:	00000000 	nop
  4498c8:	0320f809 	jalr	t9
  4498cc:	00000000 	nop
  4498d0:	8fdc0018 	lw	gp,24(s8)
  4498d4:	00000000 	nop
	/* outputting should back-patch previous struct/hdr with payload type */
	r_hdr.isa_np = auth_payload;
  4498d8:	93c2002b 	lbu	v0,43(s8)
  4498dc:	00000000 	nop
  4498e0:	a3c20040 	sb	v0,64(s8)
	r_hdr.isa_flags |= ISAKMP_FLAG_ENCRYPTION;  /* KLUDGE */
  4498e4:	93c20043 	lbu	v0,67(s8)
  4498e8:	00000000 	nop
  4498ec:	34420001 	ori	v0,v0,0x1
  4498f0:	a3c20043 	sb	v0,67(s8)
	if (!out_struct(&r_hdr, &isakmp_hdr_desc, &md->reply, &md->rbody))
  4498f4:	8fc206e0 	lw	v0,1760(s8)
  4498f8:	00000000 	nop
  4498fc:	2443009c 	addiu	v1,v0,156
  449900:	8fc206e0 	lw	v0,1760(s8)
  449904:	00000000 	nop
  449908:	244200bc 	addiu	v0,v0,188
  44990c:	27c40030 	addiu	a0,s8,48
  449910:	8f858688 	lw	a1,-31096(gp)
  449914:	00603021 	move	a2,v1
  449918:	00403821 	move	a3,v0
  44991c:	8f998ba0 	lw	t9,-29792(gp)
  449920:	00000000 	nop
  449924:	0320f809 	jalr	t9
  449928:	00000000 	nop
  44992c:	8fdc0018 	lw	gp,24(s8)
  449930:	14400004 	bnez	v0,449944 <aggr_inR1_outI2_tail+0x1dc>
  449934:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  449938:	24020003 	li	v0,3
  44993c:	100000c6 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  449940:	00000000 	nop
    }

#ifdef NAT_TRAVERSAL
    if (st->nat_traversal & NAT_T_WITH_NATD) {
  449944:	8fc20020 	lw	v0,32(s8)
  449948:	00000000 	nop
  44994c:	8c420264 	lw	v0,612(v0)
  449950:	00000000 	nop
  449954:	3042000e 	andi	v0,v0,0xe
  449958:	10400012 	beqz	v0,4499a4 <aggr_inR1_outI2_tail+0x23c>
  44995c:	00000000 	nop
	if (!nat_traversal_add_natd(auth_payload, &md->rbody, md))
  449960:	93c3002b 	lbu	v1,43(s8)
  449964:	8fc206e0 	lw	v0,1760(s8)
  449968:	00000000 	nop
  44996c:	244200bc 	addiu	v0,v0,188
  449970:	00602021 	move	a0,v1
  449974:	00402821 	move	a1,v0
  449978:	8fc606e0 	lw	a2,1760(s8)
  44997c:	8f998ab8 	lw	t9,-30024(gp)
  449980:	00000000 	nop
  449984:	0320f809 	jalr	t9
  449988:	00000000 	nop
  44998c:	8fdc0018 	lw	gp,24(s8)
  449990:	14400004 	bnez	v0,4499a4 <aggr_inR1_outI2_tail+0x23c>
  449994:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  449998:	24020003 	li	v0,3
  44999c:	100000ae 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  4499a0:	00000000 	nop
    }
#endif

    /* HASH_I or SIG_I out */
    {
	u_char buffer[1024];
	struct isakmp_ipsec_id id_hd;
	chunk_t id_b;
	pb_stream id_pbs;
	u_char hash_val[MAX_DIGEST_LEN];
	size_t hash_len;

	build_id_payload(&id_hd, &id_b, &st->st_connection->this);
  4499a4:	8fc20020 	lw	v0,32(s8)
  4499a8:	00000000 	nop
  4499ac:	8c42000c 	lw	v0,12(v0)
  4499b0:	00000000 	nop
  4499b4:	24420030 	addiu	v0,v0,48
  4499b8:	27c40450 	addiu	a0,s8,1104
  4499bc:	27c50458 	addiu	a1,s8,1112
  4499c0:	00403021 	move	a2,v0
  4499c4:	8f998140 	lw	t9,-32448(gp)
  4499c8:	00000000 	nop
  4499cc:	0320f809 	jalr	t9
  4499d0:	00000000 	nop
  4499d4:	8fdc0018 	lw	gp,24(s8)
  4499d8:	00000000 	nop
	init_pbs(&id_pbs, buffer, sizeof(buffer), "identity payload");
  4499dc:	27c40460 	addiu	a0,s8,1120
  4499e0:	27c50050 	addiu	a1,s8,80
  4499e4:	24060400 	li	a2,1024
  4499e8:	8f87802c 	lw	a3,-32724(gp)
  4499ec:	00000000 	nop
  4499f0:	24e7f100 	addiu	a3,a3,-3840
  4499f4:	8f998364 	lw	t9,-31900(gp)
  4499f8:	00000000 	nop
  4499fc:	0320f809 	jalr	t9
  449a00:	00000000 	nop
  449a04:	8fdc0018 	lw	gp,24(s8)
  449a08:	00000000 	nop
	id_hd.isaiid_np = ISAKMP_NEXT_NONE;
  449a0c:	a3c00450 	sb	zero,1104(s8)
	if (!out_struct(&id_hd, &isakmp_ipsec_identification_desc, &id_pbs, NULL)
	|| !out_chunk(id_b, &id_pbs, "my identity"))
  449a10:	27c40450 	addiu	a0,s8,1104
  449a14:	8f858988 	lw	a1,-30328(gp)
  449a18:	27c60460 	addiu	a2,s8,1120
  449a1c:	00003821 	move	a3,zero
  449a20:	8f998ba0 	lw	t9,-29792(gp)
  449a24:	00000000 	nop
  449a28:	0320f809 	jalr	t9
  449a2c:	00000000 	nop
  449a30:	8fdc0018 	lw	gp,24(s8)
  449a34:	1040000e 	beqz	v0,449a70 <aggr_inR1_outI2_tail+0x308>
  449a38:	00000000 	nop
  449a3c:	8fc40458 	lw	a0,1112(s8)
  449a40:	8fc5045c 	lw	a1,1116(s8)
  449a44:	27c60460 	addiu	a2,s8,1120
  449a48:	8f87802c 	lw	a3,-32724(gp)
  449a4c:	00000000 	nop
  449a50:	24e7dd3c 	addiu	a3,a3,-8900
  449a54:	8f998308 	lw	t9,-31992(gp)
  449a58:	00000000 	nop
  449a5c:	0320f809 	jalr	t9
  449a60:	00000000 	nop
  449a64:	8fdc0018 	lw	gp,24(s8)
  449a68:	14400004 	bnez	v0,449a7c <aggr_inR1_outI2_tail+0x314>
  449a6c:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  449a70:	24020003 	li	v0,3
  449a74:	10000078 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  449a78:	00000000 	nop

	hash_len = main_mode_hash(st, hash_val, TRUE, &id_pbs);
  449a7c:	8fc40020 	lw	a0,32(s8)
  449a80:	27c50480 	addiu	a1,s8,1152
  449a84:	24060001 	li	a2,1
  449a88:	27c70460 	addiu	a3,s8,1120
  449a8c:	8f998034 	lw	t9,-32716(gp)
  449a90:	00000000 	nop
  449a94:	2739f3b4 	addiu	t9,t9,-3148
  449a98:	00000000 	nop
  449a9c:	0320f809 	jalr	t9
  449aa0:	00000000 	nop
  449aa4:	8fdc0018 	lw	gp,24(s8)
  449aa8:	afc2002c 	sw	v0,44(s8)

	if (auth_payload == ISAKMP_NEXT_HASH)
  449aac:	8fc30028 	lw	v1,40(s8)
  449ab0:	24020008 	li	v0,8
  449ab4:	1462001a 	bne	v1,v0,449b20 <aggr_inR1_outI2_tail+0x3b8>
  449ab8:	00000000 	nop
	{
	    /* HASH_I out */
	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_hash_desc, &md->rbody
	    , hash_val, hash_len, "HASH_I"))
  449abc:	8fc206e0 	lw	v0,1760(s8)
  449ac0:	00000000 	nop
  449ac4:	244300bc 	addiu	v1,v0,188
  449ac8:	8fc2002c 	lw	v0,44(s8)
  449acc:	00000000 	nop
  449ad0:	afa20010 	sw	v0,16(sp)
  449ad4:	8f82802c 	lw	v0,-32724(gp)
  449ad8:	00000000 	nop
  449adc:	2442edf8 	addiu	v0,v0,-4616
  449ae0:	00000000 	nop
  449ae4:	afa20014 	sw	v0,20(sp)
  449ae8:	00002021 	move	a0,zero
  449aec:	8f858924 	lw	a1,-30428(gp)
  449af0:	00603021 	move	a2,v1
  449af4:	27c70480 	addiu	a3,s8,1152
  449af8:	8f99841c 	lw	t9,-31716(gp)
  449afc:	00000000 	nop
  449b00:	0320f809 	jalr	t9
  449b04:	00000000 	nop
  449b08:	8fdc0018 	lw	gp,24(s8)
  449b0c:	1440003c 	bnez	v0,449c00 <aggr_inR1_outI2_tail+0x498>
  449b10:	00000000 	nop
		return STF_INTERNAL_ERROR;
  449b14:	24020003 	li	v0,3
  449b18:	1000004f 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  449b1c:	00000000 	nop
	}
	else
	{
	    /* SIG_I out */
	    u_char sig_val[RSA_MAX_OCTETS];
	    size_t sig_len = RSA_sign_hash(st->st_connection
  449b20:	8fc20020 	lw	v0,32(s8)
  449b24:	00000000 	nop
  449b28:	8c44000c 	lw	a0,12(v0)
  449b2c:	27c504c0 	addiu	a1,s8,1216
  449b30:	27c60480 	addiu	a2,s8,1152
  449b34:	8fc7002c 	lw	a3,44(s8)
  449b38:	8f998034 	lw	t9,-32716(gp)
  449b3c:	00000000 	nop
  449b40:	2739f4ac 	addiu	t9,t9,-2900
  449b44:	00000000 	nop
  449b48:	0320f809 	jalr	t9
  449b4c:	00000000 	nop
  449b50:	8fdc0018 	lw	gp,24(s8)
  449b54:	afc206c0 	sw	v0,1728(s8)
		, sig_val, hash_val, hash_len);

	    if (sig_len == 0)
  449b58:	8fc206c0 	lw	v0,1728(s8)
  449b5c:	00000000 	nop
  449b60:	1440000e 	bnez	v0,449b9c <aggr_inR1_outI2_tail+0x434>
  449b64:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "unable to locate my private key for RSA Signature");
  449b68:	24040003 	li	a0,3
  449b6c:	8f85802c 	lw	a1,-32724(gp)
  449b70:	00000000 	nop
  449b74:	24a5ee00 	addiu	a1,a1,-4608
  449b78:	8f998c48 	lw	t9,-29624(gp)
  449b7c:	00000000 	nop
  449b80:	0320f809 	jalr	t9
  449b84:	00000000 	nop
  449b88:	8fdc0018 	lw	gp,24(s8)
  449b8c:	00000000 	nop
		return STF_FAIL + AUTHENTICATION_FAILED;
  449b90:	2402001c 	li	v0,28
  449b94:	10000030 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  449b98:	00000000 	nop
	    }

	    if (!out_generic_raw(ISAKMP_NEXT_NONE, &isakmp_signature_desc
	    , &md->rbody, sig_val, sig_len, "SIG_I"))
  449b9c:	8fc206e0 	lw	v0,1760(s8)
  449ba0:	00000000 	nop
  449ba4:	244300bc 	addiu	v1,v0,188
  449ba8:	8fc206c0 	lw	v0,1728(s8)
  449bac:	00000000 	nop
  449bb0:	afa20010 	sw	v0,16(sp)
  449bb4:	8f82802c 	lw	v0,-32724(gp)
  449bb8:	00000000 	nop
  449bbc:	2442ee34 	addiu	v0,v0,-4556
  449bc0:	00000000 	nop
  449bc4:	afa20014 	sw	v0,20(sp)
  449bc8:	00002021 	move	a0,zero
  449bcc:	8f858a38 	lw	a1,-30152(gp)
  449bd0:	00603021 	move	a2,v1
  449bd4:	27c704c0 	addiu	a3,s8,1216
  449bd8:	8f99841c 	lw	t9,-31716(gp)
  449bdc:	00000000 	nop
  449be0:	0320f809 	jalr	t9
  449be4:	00000000 	nop
  449be8:	8fdc0018 	lw	gp,24(s8)
  449bec:	14400004 	bnez	v0,449c00 <aggr_inR1_outI2_tail+0x498>
  449bf0:	00000000 	nop
		return STF_INTERNAL_ERROR;
  449bf4:	24020003 	li	v0,3
  449bf8:	10000017 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  449bfc:	00000000 	nop
	}
    }

    /* RFC2408 says we must encrypt at this point */

    /* st_new_iv was computed by generate_skeyids_iv */
    if (!encrypt_message(&md->rbody, st))
  449c00:	8fc206e0 	lw	v0,1760(s8)
  449c04:	00000000 	nop
  449c08:	244200bc 	addiu	v0,v0,188
  449c0c:	00402021 	move	a0,v0
  449c10:	8fc50020 	lw	a1,32(s8)
  449c14:	8f99885c 	lw	t9,-30628(gp)
  449c18:	00000000 	nop
  449c1c:	0320f809 	jalr	t9
  449c20:	00000000 	nop
  449c24:	8fdc0018 	lw	gp,24(s8)
  449c28:	14400004 	bnez	v0,449c3c <aggr_inR1_outI2_tail+0x4d4>
  449c2c:	00000000 	nop
	return STF_INTERNAL_ERROR;	/* ??? we may be partly committed */
  449c30:	24020003 	li	v0,3
  449c34:	10000008 	b	449c58 <aggr_inR1_outI2_tail+0x4f0>
  449c38:	00000000 	nop

    c->newest_isakmp_sa = st->st_serialno;
  449c3c:	8fc20020 	lw	v0,32(s8)
  449c40:	00000000 	nop
  449c44:	8c430000 	lw	v1,0(v0)
  449c48:	8fc20024 	lw	v0,36(s8)
  449c4c:	00000000 	nop
  449c50:	ac4301a4 	sw	v1,420(v0)

    return STF_OK;
  449c54:	24020002 	li	v0,2
}
  449c58:	03c0e821 	move	sp,s8
  449c5c:	8fbf06d8 	lw	ra,1752(sp)
  449c60:	8fbe06d4 	lw	s8,1748(sp)
  449c64:	27bd06e0 	addiu	sp,sp,1760
  449c68:	03e00008 	jr	ra
  449c6c:	00000000 	nop

00449c70 <aggr_inI2>:
  449c70:	3c1c0fbc 	lui	gp,0xfbc
  449c74:	279c2d00 	addiu	gp,gp,11520
  449c78:	0399e021 	addu	gp,gp,t9
  449c7c:	27bdfb50 	addiu	sp,sp,-1200
  449c80:	afbc0010 	sw	gp,16(sp)
  449c84:	afbf04a8 	sw	ra,1192(sp)
  449c88:	afbe04a4 	sw	s8,1188(sp)
  449c8c:	afbc04a0 	sw	gp,1184(sp)
  449c90:	03a0f021 	move	s8,sp
  449c94:	afc404b0 	sw	a0,1200(s8)

/* STATE_AGGR_R1: HDR*, HASH_I --> done
 */

static stf_status aggr_inI2_tail(struct msg_digest *md);


stf_status
aggr_inI2(struct msg_digest *md)
{
    struct state *const st = md->st;
  449c98:	8fc204b0 	lw	v0,1200(s8)
  449c9c:	00000000 	nop
  449ca0:	8c420098 	lw	v0,152(v0)
  449ca4:	00000000 	nop
  449ca8:	afc20018 	sw	v0,24(s8)
    u_char buffer[1024];
    struct payload_digest id_pd;

#ifdef NAT_TRAVERSAL
    if (st->nat_traversal & NAT_T_WITH_NATD) {
  449cac:	8fc20018 	lw	v0,24(s8)
  449cb0:	00000000 	nop
  449cb4:	8c420264 	lw	v0,612(v0)
  449cb8:	00000000 	nop
  449cbc:	3042000e 	andi	v0,v0,0xe
  449cc0:	10400008 	beqz	v0,449ce4 <aggr_inI2+0x74>
  449cc4:	00000000 	nop
	nat_traversal_natd_lookup(md);
  449cc8:	8fc404b0 	lw	a0,1200(s8)
  449ccc:	8f998670 	lw	t9,-31120(gp)
  449cd0:	00000000 	nop
  449cd4:	0320f809 	jalr	t9
  449cd8:	00000000 	nop
  449cdc:	8fdc0010 	lw	gp,16(s8)
  449ce0:	00000000 	nop
    }
    if (st->nat_traversal) {
  449ce4:	8fc20018 	lw	v0,24(s8)
  449ce8:	00000000 	nop
  449cec:	8c420264 	lw	v0,612(v0)
  449cf0:	00000000 	nop
  449cf4:	1040000e 	beqz	v0,449d30 <aggr_inI2+0xc0>
  449cf8:	00000000 	nop
	nat_traversal_show_result(st->nat_traversal, md->sender_port);
  449cfc:	8fc204b0 	lw	v0,1200(s8)
  449d00:	00000000 	nop
  449d04:	9443002c 	lhu	v1,44(v0)
  449d08:	8fc20018 	lw	v0,24(s8)
  449d0c:	00000000 	nop
  449d10:	8c440264 	lw	a0,612(v0)
  449d14:	00602821 	move	a1,v1
  449d18:	8f99881c 	lw	t9,-30692(gp)
  449d1c:	00000000 	nop
  449d20:	0320f809 	jalr	t9
  449d24:	00000000 	nop
  449d28:	8fdc0010 	lw	gp,16(s8)
  449d2c:	00000000 	nop
    }
    if (st->nat_traversal & NAT_T_WITH_KA) {
  449d30:	8fc20018 	lw	v0,24(s8)
  449d34:	00000000 	nop
  449d38:	8c420264 	lw	v0,612(v0)
  449d3c:	00000000 	nop
  449d40:	3042000e 	andi	v0,v0,0xe
  449d44:	10400007 	beqz	v0,449d64 <aggr_inI2+0xf4>
  449d48:	00000000 	nop
	nat_traversal_new_ka_event();
  449d4c:	8f9981d8 	lw	t9,-32296(gp)
  449d50:	00000000 	nop
  449d54:	0320f809 	jalr	t9
  449d58:	00000000 	nop
  449d5c:	8fdc0010 	lw	gp,16(s8)
  449d60:	00000000 	nop
    }
#endif

    /* Reconstruct the peer ID so the peer hash can be authenticated */
    {
	struct isakmp_ipsec_id id_hd;
	chunk_t id_b;
	pb_stream pbs;
	pb_stream id_pbs;
	build_id_payload(&id_hd, &id_b, &st->st_connection->that);
  449d64:	8fc20018 	lw	v0,24(s8)
  449d68:	00000000 	nop
  449d6c:	8c42000c 	lw	v0,12(v0)
  449d70:	00000000 	nop
  449d74:	244200e0 	addiu	v0,v0,224
  449d78:	27c40450 	addiu	a0,s8,1104
  449d7c:	27c50458 	addiu	a1,s8,1112
  449d80:	00403021 	move	a2,v0
  449d84:	8f998140 	lw	t9,-32448(gp)
  449d88:	00000000 	nop
  449d8c:	0320f809 	jalr	t9
  449d90:	00000000 	nop
  449d94:	8fdc0010 	lw	gp,16(s8)
  449d98:	00000000 	nop
	init_pbs(&pbs, buffer, sizeof(buffer), "identity payload");
  449d9c:	27c40460 	addiu	a0,s8,1120
  449da0:	27c50020 	addiu	a1,s8,32
  449da4:	24060400 	li	a2,1024
  449da8:	8f87802c 	lw	a3,-32724(gp)
  449dac:	00000000 	nop
  449db0:	24e7f100 	addiu	a3,a3,-3840
  449db4:	8f998364 	lw	t9,-31900(gp)
  449db8:	00000000 	nop
  449dbc:	0320f809 	jalr	t9
  449dc0:	00000000 	nop
  449dc4:	8fdc0010 	lw	gp,16(s8)
  449dc8:	00000000 	nop
	id_hd.isaiid_np = ISAKMP_NEXT_NONE;
  449dcc:	a3c00450 	sb	zero,1104(s8)
	if (!out_struct(&id_hd, &isakmp_ipsec_identification_desc, &pbs, &id_pbs)
		|| !out_chunk(id_b, &id_pbs, "my identity"))
  449dd0:	27c40450 	addiu	a0,s8,1104
  449dd4:	8f858988 	lw	a1,-30328(gp)
  449dd8:	27c60460 	addiu	a2,s8,1120
  449ddc:	27c70480 	addiu	a3,s8,1152
  449de0:	8f998ba0 	lw	t9,-29792(gp)
  449de4:	00000000 	nop
  449de8:	0320f809 	jalr	t9
  449dec:	00000000 	nop
  449df0:	8fdc0010 	lw	gp,16(s8)
  449df4:	1040000e 	beqz	v0,449e30 <aggr_inI2+0x1c0>
  449df8:	00000000 	nop
  449dfc:	8fc40458 	lw	a0,1112(s8)
  449e00:	8fc5045c 	lw	a1,1116(s8)
  449e04:	27c60480 	addiu	a2,s8,1152
  449e08:	8f87802c 	lw	a3,-32724(gp)
  449e0c:	00000000 	nop
  449e10:	24e7dd3c 	addiu	a3,a3,-8900
  449e14:	8f998308 	lw	t9,-31992(gp)
  449e18:	00000000 	nop
  449e1c:	0320f809 	jalr	t9
  449e20:	00000000 	nop
  449e24:	8fdc0010 	lw	gp,16(s8)
  449e28:	14400004 	bnez	v0,449e3c <aggr_inI2+0x1cc>
  449e2c:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  449e30:	24020003 	li	v0,3
  449e34:	10000027 	b	449ed4 <aggr_inI2+0x264>
  449e38:	00000000 	nop
	close_output_pbs(&id_pbs);
  449e3c:	27c40480 	addiu	a0,s8,1152
  449e40:	8f998228 	lw	t9,-32216(gp)
  449e44:	00000000 	nop
  449e48:	0320f809 	jalr	t9
  449e4c:	00000000 	nop
  449e50:	8fdc0010 	lw	gp,16(s8)
  449e54:	00000000 	nop
	id_pbs.roof = pbs.cur;
  449e58:	8fc20470 	lw	v0,1136(s8)
  449e5c:	00000000 	nop
  449e60:	afc20494 	sw	v0,1172(s8)
	id_pbs.cur = pbs.start;
  449e64:	8fc2046c 	lw	v0,1132(s8)
  449e68:	00000000 	nop
  449e6c:	afc20490 	sw	v0,1168(s8)
	in_struct(&id_pd.payload, &isakmp_identification_desc, &id_pbs, &id_pd.pbs);
  449e70:	27c20420 	addiu	v0,s8,1056
  449e74:	24420020 	addiu	v0,v0,32
  449e78:	00402021 	move	a0,v0
  449e7c:	8f858074 	lw	a1,-32652(gp)
  449e80:	27c60480 	addiu	a2,s8,1152
  449e84:	27c70420 	addiu	a3,s8,1056
  449e88:	8f998b3c 	lw	t9,-29892(gp)
  449e8c:	00000000 	nop
  449e90:	0320f809 	jalr	t9
  449e94:	00000000 	nop
  449e98:	8fdc0010 	lw	gp,16(s8)
  449e9c:	00000000 	nop
    }
    md->chain[ISAKMP_NEXT_ID] = &id_pd;
  449ea0:	27c30420 	addiu	v1,s8,1056
  449ea4:	8fc204b0 	lw	v0,1200(s8)
  449ea8:	00000000 	nop
  449eac:	ac4304bc 	sw	v1,1212(v0)
 return aggr_inI2_tail(md);
  449eb0:	8fc404b0 	lw	a0,1200(s8)
  449eb4:	8f998038 	lw	t9,-32712(gp)
  449eb8:	00000000 	nop
  449ebc:	27399f64 	addiu	t9,t9,-24732
  449ec0:	00000000 	nop
  449ec4:	0320f809 	jalr	t9
  449ec8:	00000000 	nop
  449ecc:	8fdc0010 	lw	gp,16(s8)
  449ed0:	00000000 	nop

}
  449ed4:	03c0e821 	move	sp,s8
  449ed8:	8fbf04a8 	lw	ra,1192(sp)
  449edc:	8fbe04a4 	lw	s8,1188(sp)
  449ee0:	27bd04b0 	addiu	sp,sp,1200
  449ee4:	03e00008 	jr	ra
  449ee8:	00000000 	nop

00449eec <aggr_inI2_continue>:
  449eec:	3c1c0fbc 	lui	gp,0xfbc
  449ef0:	279c2a84 	addiu	gp,gp,10884
  449ef4:	0399e021 	addu	gp,gp,t9
  449ef8:	27bdffd8 	addiu	sp,sp,-40
  449efc:	afbc0010 	sw	gp,16(sp)
  449f00:	afbf0020 	sw	ra,32(sp)
  449f04:	afbe001c 	sw	s8,28(sp)
  449f08:	afbc0018 	sw	gp,24(sp)
  449f0c:	03a0f021 	move	s8,sp
  449f10:	afc40028 	sw	a0,40(s8)
  449f14:	afc5002c 	sw	a1,44(s8)

static void
aggr_inI2_continue(struct adns_continuation *cr, err_t ugh)
{
    key_continue(cr, ugh, aggr_inI2_tail);
  449f18:	8fc40028 	lw	a0,40(s8)
  449f1c:	8fc5002c 	lw	a1,44(s8)
  449f20:	8f868038 	lw	a2,-32712(gp)
  449f24:	00000000 	nop
  449f28:	24c69f64 	addiu	a2,a2,-24732
  449f2c:	8f998034 	lw	t9,-32716(gp)
  449f30:	00000000 	nop
  449f34:	27397320 	addiu	t9,t9,29472
  449f38:	00000000 	nop
  449f3c:	0320f809 	jalr	t9
  449f40:	00000000 	nop
  449f44:	8fdc0010 	lw	gp,16(s8)
  449f48:	00000000 	nop
}
  449f4c:	03c0e821 	move	sp,s8
  449f50:	8fbf0020 	lw	ra,32(sp)
  449f54:	8fbe001c 	lw	s8,28(sp)
  449f58:	27bd0028 	addiu	sp,sp,40
  449f5c:	03e00008 	jr	ra
  449f60:	00000000 	nop

00449f64 <aggr_inI2_tail>:
  449f64:	3c1c0fbc 	lui	gp,0xfbc
  449f68:	279c2a0c 	addiu	gp,gp,10764
  449f6c:	0399e021 	addu	gp,gp,t9
  449f70:	27bdffc8 	addiu	sp,sp,-56
  449f74:	afbc0010 	sw	gp,16(sp)
  449f78:	afbf0030 	sw	ra,48(sp)
  449f7c:	afbe002c 	sw	s8,44(sp)
  449f80:	afbc0028 	sw	gp,40(sp)
  449f84:	03a0f021 	move	s8,sp
  449f88:	afc40038 	sw	a0,56(s8)

static stf_status
aggr_inI2_tail(struct msg_digest *md)
{
    struct state *const st = md->st;
  449f8c:	8fc20038 	lw	v0,56(s8)
  449f90:	00000000 	nop
  449f94:	8c420098 	lw	v0,152(v0)
  449f98:	00000000 	nop
  449f9c:	afc20018 	sw	v0,24(s8)
    struct connection *c = st->st_connection;
  449fa0:	8fc20018 	lw	v0,24(s8)
  449fa4:	00000000 	nop
  449fa8:	8c42000c 	lw	v0,12(v0)
  449fac:	00000000 	nop
  449fb0:	afc2001c 	sw	v0,28(s8)



    /* HASH_I or SIG_I in */
    {
	stf_status r = aggr_id_and_auth(md, FALSE, aggr_inI2_continue);
  449fb4:	8fc40038 	lw	a0,56(s8)
  449fb8:	00002821 	move	a1,zero
  449fbc:	8f868038 	lw	a2,-32712(gp)
  449fc0:	00000000 	nop
  449fc4:	24c69eec 	addiu	a2,a2,-24852
  449fc8:	8f998038 	lw	t9,-32712(gp)
  449fcc:	00000000 	nop
  449fd0:	2739e700 	addiu	t9,t9,-6400
  449fd4:	00000000 	nop
  449fd8:	0320f809 	jalr	t9
  449fdc:	00000000 	nop
  449fe0:	8fdc0010 	lw	gp,16(s8)
  449fe4:	afc20020 	sw	v0,32(s8)

	if (r != STF_OK)
  449fe8:	8fc30020 	lw	v1,32(s8)
  449fec:	24020002 	li	v0,2
  449ff0:	10620004 	beq	v1,v0,44a004 <aggr_inI2_tail+0xa0>
  449ff4:	00000000 	nop
	    return r;
  449ff8:	8fc20020 	lw	v0,32(s8)
  449ffc:	10000031 	b	44a0c4 <aggr_inI2_tail+0x160>
  44a000:	00000000 	nop
    }

    /* And reset the md to not leave stale pointers to our private id payload */
    md->chain[ISAKMP_NEXT_ID] = NULL;
  44a004:	8fc20038 	lw	v0,56(s8)
  44a008:	00000000 	nop
  44a00c:	ac4004bc 	sw	zero,1212(v0)

    /**************** done input ****************/

    c->newest_isakmp_sa = st->st_serialno;
  44a010:	8fc20018 	lw	v0,24(s8)
  44a014:	00000000 	nop
  44a018:	8c430000 	lw	v1,0(v0)
  44a01c:	8fc2001c 	lw	v0,28(s8)
  44a020:	00000000 	nop
  44a024:	ac4301a4 	sw	v1,420(v0)

    update_iv(st);	/* Finalize our Phase 1 IV */
  44a028:	8fc20018 	lw	v0,24(s8)
  44a02c:	00000000 	nop
  44a030:	8c420248 	lw	v0,584(v0)
  44a034:	00000000 	nop
  44a038:	2c420040 	sltiu	v0,v0,64
  44a03c:	1440000d 	bnez	v0,44a074 <aggr_inI2_tail+0x110>
  44a040:	00000000 	nop
  44a044:	8f84802c 	lw	a0,-32724(gp)
  44a048:	00000000 	nop
  44a04c:	2484e450 	addiu	a0,a0,-7088
  44a050:	8f85802c 	lw	a1,-32724(gp)
  44a054:	00000000 	nop
  44a058:	24a5d59c 	addiu	a1,a1,-10852
  44a05c:	240611db 	li	a2,4571
  44a060:	8f998bb8 	lw	t9,-29768(gp)
  44a064:	00000000 	nop
  44a068:	0320f809 	jalr	t9
  44a06c:	00000000 	nop
  44a070:	8fdc0010 	lw	gp,16(s8)
  44a074:	8fc20018 	lw	v0,24(s8)
  44a078:	00000000 	nop
  44a07c:	24440184 	addiu	a0,v0,388
  44a080:	8fc20018 	lw	v0,24(s8)
  44a084:	00000000 	nop
  44a088:	244501c4 	addiu	a1,v0,452
  44a08c:	8fc20018 	lw	v0,24(s8)
  44a090:	00000000 	nop
  44a094:	8c430248 	lw	v1,584(v0)
  44a098:	8fc20018 	lw	v0,24(s8)
  44a09c:	00000000 	nop
  44a0a0:	ac430244 	sw	v1,580(v0)
  44a0a4:	00603021 	move	a2,v1
  44a0a8:	8f998a30 	lw	t9,-30160(gp)
  44a0ac:	00000000 	nop
  44a0b0:	0320f809 	jalr	t9
  44a0b4:	00000000 	nop
  44a0b8:	8fdc0010 	lw	gp,16(s8)
  44a0bc:	00000000 	nop

    return STF_OK;
  44a0c0:	24020002 	li	v0,2
}
  44a0c4:	03c0e821 	move	sp,s8
  44a0c8:	8fbf0030 	lw	ra,48(sp)
  44a0cc:	8fbe002c 	lw	s8,44(sp)
  44a0d0:	27bd0038 	addiu	sp,sp,56
  44a0d4:	03e00008 	jr	ra
  44a0d8:	00000000 	nop

0044a0dc <quick_inI1_outR1>:
  44a0dc:	3c1c0fbc 	lui	gp,0xfbc
  44a0e0:	279c2894 	addiu	gp,gp,10388
  44a0e4:	0399e021 	addu	gp,gp,t9
  44a0e8:	27bdff20 	addiu	sp,sp,-224
  44a0ec:	afbc0018 	sw	gp,24(sp)
  44a0f0:	afbf00d8 	sw	ra,216(sp)
  44a0f4:	afbe00d4 	sw	s8,212(sp)
  44a0f8:	afbc00d0 	sw	gp,208(sp)
  44a0fc:	03a0f021 	move	s8,sp
  44a100:	afc400e0 	sw	a0,224(s8)



/* Handle first message of Phase 2 -- Quick Mode.
 * HDR*, HASH(1), SA, Ni [, KE ] [, IDci, IDcr ] -->
 * HDR*, HASH(2), SA, Nr [, KE ] [, IDci, IDcr ]
 * (see draft-ietf-ipsec-isakmp-oakley-07.txt 5.5)
 * Installs inbound IPsec SAs.
 * Although this seems early, we know enough to do so, and
 * this way we know that it is soon enough to catch all
 * packets that other side could send using this IPsec SA.
 *
 * Broken into parts to allow asynchronous DNS for TXT records:
 *
 * - quick_inI1_outR1 starts the ball rolling.
 *   It checks and parses enough to learn the Phase 2 IDs
 *
 * - quick_inI1_outR1_tail does the rest of the job
 *   unless DNS must be consulted.  In that case,
 *   it starts a DNS query, salts away what is needed
 *   to continue, and suspends.
 *
 * - quick_inI1_outR1_continue will restart quick_inI1_outR1_tail
 *   when DNS comes back with an answer.
 *
 * A big chunk of quick_inI1_outR1_tail is executed twice.
 * This is necessary because the set of connections
 * might change while we are awaiting DNS.
 * When first called, gateways_from_dns == NULL.  If DNS is
 * consulted asynchronously, gateways_from_dns != NULL the second time.
 * Remember that our state object might disappear too!
 */

/* hold anything we can handle of a Phase 2 ID */
struct p2id {
    ip_subnet net;
    u_int8_t proto;
    u_int16_t port;
};

struct verify_continuation {
    struct adns_continuation ac;	/* common prefix */
    struct msg_digest *md;
    struct p2id my, his;
    unsigned int new_iv_len;	/* p1st's might change */
    u_char new_iv[MAX_DIGEST_LEN];
    /* int whackfd; */	/* not needed */
};

static stf_status quick_inI1_outR1_tail(struct msg_digest *md
    , struct p2id *my, struct p2id *his
    , unsigned int new_iv_len
    , const u_char new_iv[MAX_DIGEST_LEN]);	/* forward */

stf_status
quick_inI1_outR1(struct msg_digest *md)
{
    const struct state *const p1st = md->st;
  44a104:	8fc200e0 	lw	v0,224(s8)
  44a108:	00000000 	nop
  44a10c:	8c420098 	lw	v0,152(v0)
  44a110:	00000000 	nop
  44a114:	afc20020 	sw	v0,32(s8)
    struct connection *c = p1st->st_connection;
  44a118:	8fc20020 	lw	v0,32(s8)
  44a11c:	00000000 	nop
  44a120:	8c42000c 	lw	v0,12(v0)
  44a124:	00000000 	nop
  44a128:	afc20024 	sw	v0,36(s8)
    struct payload_digest *const id_pd = md->chain[ISAKMP_NEXT_ID];
  44a12c:	8fc200e0 	lw	v0,224(s8)
  44a130:	00000000 	nop
  44a134:	8c4204bc 	lw	v0,1212(v0)
  44a138:	00000000 	nop
  44a13c:	afc20028 	sw	v0,40(s8)
    struct p2id my, his;

    /* HASH(1) in */
    CHECK_QUICK_HASH(md
  44a140:	8fc200e0 	lw	v0,224(s8)
  44a144:	00000000 	nop
  44a148:	8c4204c8 	lw	v0,1224(v0)
  44a14c:	00000000 	nop
  44a150:	afc20080 	sw	v0,128(s8)
  44a154:	8fc200e0 	lw	v0,224(s8)
  44a158:	00000000 	nop
  44a15c:	24420084 	addiu	v0,v0,132
  44a160:	afa20010 	sw	v0,16(sp)
  44a164:	afa00014 	sw	zero,20(sp)
  44a168:	27c40088 	addiu	a0,s8,136
  44a16c:	8fc20080 	lw	v0,128(s8)
  44a170:	00000000 	nop
  44a174:	8c450014 	lw	a1,20(v0)
  44a178:	8fc200e0 	lw	v0,224(s8)
  44a17c:	00000000 	nop
  44a180:	8c460064 	lw	a2,100(v0)
  44a184:	8fc70020 	lw	a3,32(s8)
  44a188:	8f998034 	lw	t9,-32716(gp)
  44a18c:	00000000 	nop
  44a190:	27390e0c 	addiu	t9,t9,3596
  44a194:	00000000 	nop
  44a198:	0320f809 	jalr	t9
  44a19c:	00000000 	nop
  44a1a0:	8fdc0018 	lw	gp,24(s8)
  44a1a4:	afc200c8 	sw	v0,200(s8)
  44a1a8:	8fc20080 	lw	v0,128(s8)
  44a1ac:	00000000 	nop
  44a1b0:	8c430014 	lw	v1,20(v0)
  44a1b4:	8fc20080 	lw	v0,128(s8)
  44a1b8:	00000000 	nop
  44a1bc:	8c420010 	lw	v0,16(v0)
  44a1c0:	00000000 	nop
  44a1c4:	00621823 	subu	v1,v1,v0
  44a1c8:	8fc200c8 	lw	v0,200(s8)
  44a1cc:	00000000 	nop
  44a1d0:	1462000f 	bne	v1,v0,44a210 <quick_inI1_outR1+0x134>
  44a1d4:	00000000 	nop
  44a1d8:	8fc20080 	lw	v0,128(s8)
  44a1dc:	00000000 	nop
  44a1e0:	8c440010 	lw	a0,16(v0)
  44a1e4:	27c50088 	addiu	a1,s8,136
  44a1e8:	8fc600c8 	lw	a2,200(s8)
  44a1ec:	8f9985c8 	lw	t9,-31288(gp)
  44a1f0:	00000000 	nop
  44a1f4:	0320f809 	jalr	t9
  44a1f8:	00000000 	nop
  44a1fc:	8fdc0018 	lw	gp,24(s8)
  44a200:	14400003 	bnez	v0,44a210 <quick_inI1_outR1+0x134>
  44a204:	00000000 	nop
  44a208:	10000028 	b	44a2ac <quick_inI1_outR1+0x1d0>
  44a20c:	00000000 	nop
  44a210:	8f8284f8 	lw	v0,-31496(gp)
  44a214:	00000000 	nop
  44a218:	8c420000 	lw	v0,0(v0)
  44a21c:	00000000 	nop
  44a220:	30420002 	andi	v0,v0,0x2
  44a224:	10400015 	beqz	v0,44a27c <quick_inI1_outR1+0x1a0>
  44a228:	00000000 	nop
  44a22c:	8fc20080 	lw	v0,128(s8)
  44a230:	00000000 	nop
  44a234:	8c430014 	lw	v1,20(v0)
  44a238:	8fc20080 	lw	v0,128(s8)
  44a23c:	00000000 	nop
  44a240:	8c420010 	lw	v0,16(v0)
  44a244:	00000000 	nop
  44a248:	00621823 	subu	v1,v1,v0
  44a24c:	8f84802c 	lw	a0,-32724(gp)
  44a250:	00000000 	nop
  44a254:	2484f114 	addiu	a0,a0,-3820
  44a258:	8fc20080 	lw	v0,128(s8)
  44a25c:	00000000 	nop
  44a260:	8c450010 	lw	a1,16(v0)
  44a264:	00603021 	move	a2,v1
  44a268:	8f9984ec 	lw	t9,-31508(gp)
  44a26c:	00000000 	nop
  44a270:	0320f809 	jalr	t9
  44a274:	00000000 	nop
  44a278:	8fdc0018 	lw	gp,24(s8)
  44a27c:	24040003 	li	a0,3
  44a280:	8f85802c 	lw	a1,-32724(gp)
  44a284:	00000000 	nop
  44a288:	24a5f128 	addiu	a1,a1,-3800
  44a28c:	8f998c48 	lw	t9,-29624(gp)
  44a290:	00000000 	nop
  44a294:	0320f809 	jalr	t9
  44a298:	00000000 	nop
  44a29c:	8fdc0018 	lw	gp,24(s8)
  44a2a0:	2402001b 	li	v0,27
  44a2a4:	100000eb 	b	44a654 <quick_inI1_outR1+0x578>
  44a2a8:	00000000 	nop
	, quick_mode_hash12(hash_val, hash_pbs->roof, md->message_pbs.roof
	    , p1st, &md->hdr.isa_msgid, FALSE)
	, "HASH(1)", "Quick I1");

    /* [ IDci, IDcr ] in
     * We do this now (probably out of physical order) because
     * we wish to select the correct connection before we consult
     * it for policy.
     */

    if (id_pd != NULL)
  44a2ac:	8fc20028 	lw	v0,40(s8)
  44a2b0:	00000000 	nop
  44a2b4:	10400078 	beqz	v0,44a498 <quick_inI1_outR1+0x3bc>
  44a2b8:	00000000 	nop
    {
	/* ??? we are assuming IPSEC_DOI */

	/* IDci (initiator is peer) */

	if (!decode_net_id(&id_pd->payload.ipsec_id, &id_pd->pbs
	, &his.net, "peer client"))
  44a2bc:	8fc20028 	lw	v0,40(s8)
  44a2c0:	00000000 	nop
  44a2c4:	24420020 	addiu	v0,v0,32
  44a2c8:	00402021 	move	a0,v0
  44a2cc:	8fc50028 	lw	a1,40(s8)
  44a2d0:	27c60058 	addiu	a2,s8,88
  44a2d4:	8f87802c 	lw	a3,-32724(gp)
  44a2d8:	00000000 	nop
  44a2dc:	24e7f164 	addiu	a3,a3,-3740
  44a2e0:	8f998034 	lw	t9,-32716(gp)
  44a2e4:	00000000 	nop
  44a2e8:	273937fc 	addiu	t9,t9,14332
  44a2ec:	00000000 	nop
  44a2f0:	0320f809 	jalr	t9
  44a2f4:	00000000 	nop
  44a2f8:	8fdc0018 	lw	gp,24(s8)
  44a2fc:	14400004 	bnez	v0,44a310 <quick_inI1_outR1+0x234>
  44a300:	00000000 	nop
	    return STF_FAIL + INVALID_ID_INFORMATION;
  44a304:	24020016 	li	v0,22
  44a308:	100000d2 	b	44a654 <quick_inI1_outR1+0x578>
  44a30c:	00000000 	nop

	/* Hack for MS 818043 NAT-T Update */
        if (id_pd->payload.ipsec_id.isaiid_idtype == ID_FQDN)
  44a310:	8fc20028 	lw	v0,40(s8)
  44a314:	00000000 	nop
  44a318:	90430024 	lbu	v1,36(v0)
  44a31c:	24020002 	li	v0,2
  44a320:	1462000a 	bne	v1,v0,44a34c <quick_inI1_outR1+0x270>
  44a324:	00000000 	nop
          memset(&his.net, 0, sizeof(ip_subnet));
  44a328:	27c40058 	addiu	a0,s8,88
  44a32c:	00002821 	move	a1,zero
  44a330:	24060020 	li	a2,32
  44a334:	8f998500 	lw	t9,-31488(gp)
  44a338:	00000000 	nop
  44a33c:	0320f809 	jalr	t9
  44a340:	00000000 	nop
  44a344:	8fdc0018 	lw	gp,24(s8)
  44a348:	00000000 	nop


	if (id_pd->payload.ipsec_id.isaiid_idtype == ID_FQDN)
  44a34c:	8fc20028 	lw	v0,40(s8)
  44a350:	00000000 	nop
  44a354:	90430024 	lbu	v1,36(v0)
  44a358:	24020002 	li	v0,2
  44a35c:	1462001b 	bne	v1,v0,44a3cc <quick_inI1_outR1+0x2f0>
  44a360:	00000000 	nop
	  happy(addrtosubnet(&c->that.host_addr, &his.net));
  44a364:	8fc20024 	lw	v0,36(s8)
  44a368:	00000000 	nop
  44a36c:	24420108 	addiu	v0,v0,264
  44a370:	00402021 	move	a0,v0
  44a374:	27c50058 	addiu	a1,s8,88
  44a378:	8f998afc 	lw	t9,-29956(gp)
  44a37c:	00000000 	nop
  44a380:	0320f809 	jalr	t9
  44a384:	00000000 	nop
  44a388:	8fdc0018 	lw	gp,24(s8)
  44a38c:	afc200c8 	sw	v0,200(s8)
  44a390:	8fc200c8 	lw	v0,200(s8)
  44a394:	00000000 	nop
  44a398:	1040000c 	beqz	v0,44a3cc <quick_inI1_outR1+0x2f0>
  44a39c:	00000000 	nop
  44a3a0:	8fc400c8 	lw	a0,200(s8)
  44a3a4:	8f85802c 	lw	a1,-32724(gp)
  44a3a8:	00000000 	nop
  44a3ac:	24a5d59c 	addiu	a1,a1,-10852
  44a3b0:	24061239 	li	a2,4665
  44a3b4:	8f998bb8 	lw	t9,-29768(gp)
  44a3b8:	00000000 	nop
  44a3bc:	0320f809 	jalr	t9
  44a3c0:	00000000 	nop
  44a3c4:	8fdc0018 	lw	gp,24(s8)
  44a3c8:	00000000 	nop

	his.proto = id_pd->payload.ipsec_id.isaiid_protoid;
  44a3cc:	8fc20028 	lw	v0,40(s8)
  44a3d0:	00000000 	nop
  44a3d4:	90420025 	lbu	v0,37(v0)
  44a3d8:	00000000 	nop
  44a3dc:	a3c20078 	sb	v0,120(s8)
	his.port = id_pd->payload.ipsec_id.isaiid_port;
  44a3e0:	8fc20028 	lw	v0,40(s8)
  44a3e4:	00000000 	nop
  44a3e8:	94420026 	lhu	v0,38(v0)
  44a3ec:	00000000 	nop
  44a3f0:	a7c2007a 	sh	v0,122(s8)

	/* IDcr (we are responder) */

	if (!decode_net_id(&id_pd->next->payload.ipsec_id, &id_pd->next->pbs
	, &my.net, "our client"))
  44a3f4:	8fc20028 	lw	v0,40(s8)
  44a3f8:	00000000 	nop
  44a3fc:	8c42002c 	lw	v0,44(v0)
  44a400:	00000000 	nop
  44a404:	24420020 	addiu	v0,v0,32
  44a408:	00402021 	move	a0,v0
  44a40c:	8fc20028 	lw	v0,40(s8)
  44a410:	00000000 	nop
  44a414:	8c45002c 	lw	a1,44(v0)
  44a418:	27c60030 	addiu	a2,s8,48
  44a41c:	8f87802c 	lw	a3,-32724(gp)
  44a420:	00000000 	nop
  44a424:	24e7f170 	addiu	a3,a3,-3728
  44a428:	8f998034 	lw	t9,-32716(gp)
  44a42c:	00000000 	nop
  44a430:	273937fc 	addiu	t9,t9,14332
  44a434:	00000000 	nop
  44a438:	0320f809 	jalr	t9
  44a43c:	00000000 	nop
  44a440:	8fdc0018 	lw	gp,24(s8)
  44a444:	14400004 	bnez	v0,44a458 <quick_inI1_outR1+0x37c>
  44a448:	00000000 	nop
	    return STF_FAIL + INVALID_ID_INFORMATION;
  44a44c:	24020016 	li	v0,22
  44a450:	10000080 	b	44a654 <quick_inI1_outR1+0x578>
  44a454:	00000000 	nop

	my.proto = id_pd->next->payload.ipsec_id.isaiid_protoid;
  44a458:	8fc20028 	lw	v0,40(s8)
  44a45c:	00000000 	nop
  44a460:	8c42002c 	lw	v0,44(v0)
  44a464:	00000000 	nop
  44a468:	90420025 	lbu	v0,37(v0)
  44a46c:	00000000 	nop
  44a470:	a3c20050 	sb	v0,80(s8)
	my.port = id_pd->next->payload.ipsec_id.isaiid_port;
  44a474:	8fc20028 	lw	v0,40(s8)
  44a478:	00000000 	nop
  44a47c:	8c42002c 	lw	v0,44(v0)
  44a480:	00000000 	nop
  44a484:	94420026 	lhu	v0,38(v0)
  44a488:	00000000 	nop
  44a48c:	a7c20052 	sh	v0,82(s8)
  44a490:	1000004b 	b	44a5c0 <quick_inI1_outR1+0x4e4>
  44a494:	00000000 	nop
    }
    else
    {
	/* implicit IDci and IDcr: peer and self */
	if (!sameaddrtype(&c->this.host_addr, &c->that.host_addr))
  44a498:	8fc20024 	lw	v0,36(s8)
  44a49c:	00000000 	nop
  44a4a0:	24430058 	addiu	v1,v0,88
  44a4a4:	8fc20024 	lw	v0,36(s8)
  44a4a8:	00000000 	nop
  44a4ac:	24420108 	addiu	v0,v0,264
  44a4b0:	00602021 	move	a0,v1
  44a4b4:	00402821 	move	a1,v0
  44a4b8:	8f998400 	lw	t9,-31744(gp)
  44a4bc:	00000000 	nop
  44a4c0:	0320f809 	jalr	t9
  44a4c4:	00000000 	nop
  44a4c8:	8fdc0018 	lw	gp,24(s8)
  44a4cc:	14400004 	bnez	v0,44a4e0 <quick_inI1_outR1+0x404>
  44a4d0:	00000000 	nop
	    return STF_FAIL;
  44a4d4:	24020004 	li	v0,4
  44a4d8:	1000005e 	b	44a654 <quick_inI1_outR1+0x578>
  44a4dc:	00000000 	nop

	happy(addrtosubnet(&c->this.host_addr, &my.net));
  44a4e0:	8fc20024 	lw	v0,36(s8)
  44a4e4:	00000000 	nop
  44a4e8:	24420058 	addiu	v0,v0,88
  44a4ec:	00402021 	move	a0,v0
  44a4f0:	27c50030 	addiu	a1,s8,48
  44a4f4:	8f998afc 	lw	t9,-29956(gp)
  44a4f8:	00000000 	nop
  44a4fc:	0320f809 	jalr	t9
  44a500:	00000000 	nop
  44a504:	8fdc0018 	lw	gp,24(s8)
  44a508:	afc200c8 	sw	v0,200(s8)
  44a50c:	8fc200c8 	lw	v0,200(s8)
  44a510:	00000000 	nop
  44a514:	1040000c 	beqz	v0,44a548 <quick_inI1_outR1+0x46c>
  44a518:	00000000 	nop
  44a51c:	8fc400c8 	lw	a0,200(s8)
  44a520:	8f85802c 	lw	a1,-32724(gp)
  44a524:	00000000 	nop
  44a528:	24a5d59c 	addiu	a1,a1,-10852
  44a52c:	2406124d 	li	a2,4685
  44a530:	8f998bb8 	lw	t9,-29768(gp)
  44a534:	00000000 	nop
  44a538:	0320f809 	jalr	t9
  44a53c:	00000000 	nop
  44a540:	8fdc0018 	lw	gp,24(s8)
  44a544:	00000000 	nop
	happy(addrtosubnet(&c->that.host_addr, &his.net));
  44a548:	8fc20024 	lw	v0,36(s8)
  44a54c:	00000000 	nop
  44a550:	24420108 	addiu	v0,v0,264
  44a554:	00402021 	move	a0,v0
  44a558:	27c50058 	addiu	a1,s8,88
  44a55c:	8f998afc 	lw	t9,-29956(gp)
  44a560:	00000000 	nop
  44a564:	0320f809 	jalr	t9
  44a568:	00000000 	nop
  44a56c:	8fdc0018 	lw	gp,24(s8)
  44a570:	afc200c8 	sw	v0,200(s8)
  44a574:	8fc200c8 	lw	v0,200(s8)
  44a578:	00000000 	nop
  44a57c:	1040000c 	beqz	v0,44a5b0 <quick_inI1_outR1+0x4d4>
  44a580:	00000000 	nop
  44a584:	8fc400c8 	lw	a0,200(s8)
  44a588:	8f85802c 	lw	a1,-32724(gp)
  44a58c:	00000000 	nop
  44a590:	24a5d59c 	addiu	a1,a1,-10852
  44a594:	2406124e 	li	a2,4686
  44a598:	8f998bb8 	lw	t9,-29768(gp)
  44a59c:	00000000 	nop
  44a5a0:	0320f809 	jalr	t9
  44a5a4:	00000000 	nop
  44a5a8:	8fdc0018 	lw	gp,24(s8)
  44a5ac:	00000000 	nop
	his.proto = my.proto = 0;
  44a5b0:	a3c00050 	sb	zero,80(s8)
  44a5b4:	a3c00078 	sb	zero,120(s8)
	his.port = my.port = 0;
  44a5b8:	a7c00052 	sh	zero,82(s8)
  44a5bc:	a7c0007a 	sh	zero,122(s8)
    }
    passert(gateways_from_dns == NULL);
  44a5c0:	8f828204 	lw	v0,-32252(gp)
  44a5c4:	00000000 	nop
  44a5c8:	8c420000 	lw	v0,0(v0)
  44a5cc:	00000000 	nop
  44a5d0:	1040000e 	beqz	v0,44a60c <quick_inI1_outR1+0x530>
  44a5d4:	00000000 	nop
  44a5d8:	8f84802c 	lw	a0,-32724(gp)
  44a5dc:	00000000 	nop
  44a5e0:	2484f17c 	addiu	a0,a0,-3716
  44a5e4:	8f85802c 	lw	a1,-32724(gp)
  44a5e8:	00000000 	nop
  44a5ec:	24a5d59c 	addiu	a1,a1,-10852
  44a5f0:	24061252 	li	a2,4690
  44a5f4:	8f998bb8 	lw	t9,-29768(gp)
  44a5f8:	00000000 	nop
  44a5fc:	0320f809 	jalr	t9
  44a600:	00000000 	nop
  44a604:	8fdc0018 	lw	gp,24(s8)
  44a608:	00000000 	nop
    return quick_inI1_outR1_tail(md, &my, &his
  44a60c:	8fc20020 	lw	v0,32(s8)
  44a610:	00000000 	nop
  44a614:	244201c4 	addiu	v0,v0,452
  44a618:	afa20010 	sw	v0,16(sp)
  44a61c:	8fc400e0 	lw	a0,224(s8)
  44a620:	27c50030 	addiu	a1,s8,48
  44a624:	27c60058 	addiu	a2,s8,88
  44a628:	8fc20020 	lw	v0,32(s8)
  44a62c:	00000000 	nop
  44a630:	8c470248 	lw	a3,584(v0)
  44a634:	8f998038 	lw	t9,-32712(gp)
  44a638:	00000000 	nop
  44a63c:	2739aa40 	addiu	t9,t9,-21952
  44a640:	00000000 	nop
  44a644:	0320f809 	jalr	t9
  44a648:	00000000 	nop
  44a64c:	8fdc0018 	lw	gp,24(s8)
  44a650:	00000000 	nop
	, p1st->st_new_iv_len, p1st->st_new_iv);
}
  44a654:	03c0e821 	move	sp,s8
  44a658:	8fbf00d8 	lw	ra,216(sp)
  44a65c:	8fbe00d4 	lw	s8,212(sp)
  44a660:	27bd00e0 	addiu	sp,sp,224
  44a664:	03e00008 	jr	ra
  44a668:	00000000 	nop

0044a66c <report_verify_failure>:
  44a66c:	3c1c0fbc 	lui	gp,0xfbc
  44a670:	279c2304 	addiu	gp,gp,8964
  44a674:	0399e021 	addu	gp,gp,t9
  44a678:	27bdff10 	addiu	sp,sp,-240
  44a67c:	afbc0018 	sw	gp,24(sp)
  44a680:	afbf00e8 	sw	ra,232(sp)
  44a684:	afbe00e4 	sw	s8,228(sp)
  44a688:	afbc00e0 	sw	gp,224(sp)
  44a68c:	03a0f021 	move	s8,sp
  44a690:	afc400f0 	sw	a0,240(s8)
  44a694:	afc500f4 	sw	a1,244(s8)
  44a698:	afc600f8 	sw	a2,248(s8)

static void
report_verify_failure(struct state *st, struct p2id *his, err_t ugh)
{
    char fgwb[ADDRTOT_BUF]
	, cb[ADDRTOT_BUF];
    ip_address peer_client;

    addrtot(&st->st_connection->that.host_addr, 0, fgwb, sizeof(fgwb));
  44a69c:	8fc200f0 	lw	v0,240(s8)
  44a6a0:	00000000 	nop
  44a6a4:	8c42000c 	lw	v0,12(v0)
  44a6a8:	00000000 	nop
  44a6ac:	24420108 	addiu	v0,v0,264
  44a6b0:	00402021 	move	a0,v0
  44a6b4:	00002821 	move	a1,zero
  44a6b8:	27c60020 	addiu	a2,s8,32
  44a6bc:	24070049 	li	a3,73
  44a6c0:	8f998b50 	lw	t9,-29872(gp)
  44a6c4:	00000000 	nop
  44a6c8:	0320f809 	jalr	t9
  44a6cc:	00000000 	nop
  44a6d0:	8fdc0018 	lw	gp,24(s8)
  44a6d4:	00000000 	nop
    networkof(&his->net, &peer_client);
  44a6d8:	8fc400f4 	lw	a0,244(s8)
  44a6dc:	27c500c0 	addiu	a1,s8,192
  44a6e0:	8f9985bc 	lw	t9,-31300(gp)
  44a6e4:	00000000 	nop
  44a6e8:	0320f809 	jalr	t9
  44a6ec:	00000000 	nop
  44a6f0:	8fdc0018 	lw	gp,24(s8)
  44a6f4:	00000000 	nop
    addrtot(&peer_client, 0, cb, sizeof(cb));
  44a6f8:	27c400c0 	addiu	a0,s8,192
  44a6fc:	00002821 	move	a1,zero
  44a700:	27c60070 	addiu	a2,s8,112
  44a704:	24070049 	li	a3,73
  44a708:	8f998b50 	lw	t9,-29872(gp)
  44a70c:	00000000 	nop
  44a710:	0320f809 	jalr	t9
  44a714:	00000000 	nop
  44a718:	8fdc0018 	lw	gp,24(s8)
  44a71c:	00000000 	nop
    loglog(RC_OPPOFAILURE
  44a720:	8fc200f8 	lw	v0,248(s8)
  44a724:	00000000 	nop
  44a728:	afa20010 	sw	v0,16(sp)
  44a72c:	24040021 	li	a0,33
  44a730:	8f85802c 	lw	a1,-32724(gp)
  44a734:	00000000 	nop
  44a738:	24a5f198 	addiu	a1,a1,-3688
  44a73c:	27c60020 	addiu	a2,s8,32
  44a740:	27c70070 	addiu	a3,s8,112
  44a744:	8f998c48 	lw	t9,-29624(gp)
  44a748:	00000000 	nop
  44a74c:	0320f809 	jalr	t9
  44a750:	00000000 	nop
  44a754:	8fdc0018 	lw	gp,24(s8)
  44a758:	00000000 	nop
	, "gateway %s claims client %s, but DNS for client fails to confirm: %s"
	, fgwb, cb, ugh);
}
  44a75c:	03c0e821 	move	sp,s8
  44a760:	8fbf00e8 	lw	ra,232(sp)
  44a764:	8fbe00e4 	lw	s8,228(sp)
  44a768:	27bd00f0 	addiu	sp,sp,240
  44a76c:	03e00008 	jr	ra
  44a770:	00000000 	nop

0044a774 <quick_inI1_outR1_continue>:
  44a774:	3c1c0fbc 	lui	gp,0xfbc
  44a778:	279c21fc 	addiu	gp,gp,8700
  44a77c:	0399e021 	addu	gp,gp,t9
  44a780:	27bdffc0 	addiu	sp,sp,-64
  44a784:	afbc0018 	sw	gp,24(sp)
  44a788:	afbf0038 	sw	ra,56(sp)
  44a78c:	afbe0034 	sw	s8,52(sp)
  44a790:	afbc0030 	sw	gp,48(sp)
  44a794:	03a0f021 	move	s8,sp
  44a798:	afc40040 	sw	a0,64(s8)
  44a79c:	afc50044 	sw	a1,68(s8)

static void
quick_inI1_outR1_continue(struct adns_continuation *cr, err_t ugh)
{
    stf_status r;
    struct verify_continuation *vc = (void *)cr;
  44a7a0:	8fc20040 	lw	v0,64(s8)
  44a7a4:	00000000 	nop
  44a7a8:	afc20024 	sw	v0,36(s8)
    struct state *st = vc->md->st;
  44a7ac:	8fc20024 	lw	v0,36(s8)
  44a7b0:	00000000 	nop
  44a7b4:	8c420480 	lw	v0,1152(v0)
  44a7b8:	00000000 	nop
  44a7bc:	8c420098 	lw	v0,152(v0)
  44a7c0:	00000000 	nop
  44a7c4:	afc20028 	sw	v0,40(s8)

    passert(cur_state == NULL);
  44a7c8:	8f8287f8 	lw	v0,-30728(gp)
  44a7cc:	00000000 	nop
  44a7d0:	8c420000 	lw	v0,0(v0)
  44a7d4:	00000000 	nop
  44a7d8:	1040000e 	beqz	v0,44a814 <quick_inI1_outR1_continue+0xa0>
  44a7dc:	00000000 	nop
  44a7e0:	8f84802c 	lw	a0,-32724(gp)
  44a7e4:	00000000 	nop
  44a7e8:	2484eecc 	addiu	a0,a0,-4404
  44a7ec:	8f85802c 	lw	a1,-32724(gp)
  44a7f0:	00000000 	nop
  44a7f4:	24a5d59c 	addiu	a1,a1,-10852
  44a7f8:	2406126d 	li	a2,4717
  44a7fc:	8f998bb8 	lw	t9,-29768(gp)
  44a800:	00000000 	nop
  44a804:	0320f809 	jalr	t9
  44a808:	00000000 	nop
  44a80c:	8fdc0018 	lw	gp,24(s8)
  44a810:	00000000 	nop
    /* if st == NULL, our state has been deleted -- just clean up */
    if (st != NULL)
  44a814:	8fc20028 	lw	v0,40(s8)
  44a818:	00000000 	nop
  44a81c:	10400076 	beqz	v0,44a9f8 <quick_inI1_outR1_continue+0x284>
  44a820:	00000000 	nop
    {
	passert(st->st_suspended_md == vc->md);
  44a824:	8fc20028 	lw	v0,40(s8)
  44a828:	00000000 	nop
  44a82c:	8c430018 	lw	v1,24(v0)
  44a830:	8fc20024 	lw	v0,36(s8)
  44a834:	00000000 	nop
  44a838:	8c420480 	lw	v0,1152(v0)
  44a83c:	00000000 	nop
  44a840:	1062000e 	beq	v1,v0,44a87c <quick_inI1_outR1_continue+0x108>
  44a844:	00000000 	nop
  44a848:	8f84802c 	lw	a0,-32724(gp)
  44a84c:	00000000 	nop
  44a850:	2484f1e0 	addiu	a0,a0,-3616
  44a854:	8f85802c 	lw	a1,-32724(gp)
  44a858:	00000000 	nop
  44a85c:	24a5d59c 	addiu	a1,a1,-10852
  44a860:	24061271 	li	a2,4721
  44a864:	8f998bb8 	lw	t9,-29768(gp)
  44a868:	00000000 	nop
  44a86c:	0320f809 	jalr	t9
  44a870:	00000000 	nop
  44a874:	8fdc0018 	lw	gp,24(s8)
  44a878:	00000000 	nop
	st->st_suspended_md = NULL;	/* no longer connected or suspended */
  44a87c:	8fc20028 	lw	v0,40(s8)
  44a880:	00000000 	nop
  44a884:	ac400018 	sw	zero,24(v0)
	cur_state = vc->md->st;
  44a888:	8fc20024 	lw	v0,36(s8)
  44a88c:	00000000 	nop
  44a890:	8c420480 	lw	v0,1152(v0)
  44a894:	00000000 	nop
  44a898:	8c420098 	lw	v0,152(v0)
  44a89c:	8f8187f8 	lw	at,-30728(gp)
  44a8a0:	00000000 	nop
  44a8a4:	ac220000 	sw	v0,0(at)
	if (ugh != NULL)
  44a8a8:	8fc20044 	lw	v0,68(s8)
  44a8ac:	00000000 	nop
  44a8b0:	10400013 	beqz	v0,44a900 <quick_inI1_outR1_continue+0x18c>
  44a8b4:	00000000 	nop
	{
	    report_verify_failure(st, &vc->his, ugh);
  44a8b8:	8fc20024 	lw	v0,36(s8)
  44a8bc:	00000000 	nop
  44a8c0:	244204a8 	addiu	v0,v0,1192
  44a8c4:	8fc40028 	lw	a0,40(s8)
  44a8c8:	00402821 	move	a1,v0
  44a8cc:	8fc60044 	lw	a2,68(s8)
  44a8d0:	8f998038 	lw	t9,-32712(gp)
  44a8d4:	00000000 	nop
  44a8d8:	2739a66c 	addiu	t9,t9,-22932
  44a8dc:	00000000 	nop
  44a8e0:	0320f809 	jalr	t9
  44a8e4:	00000000 	nop
  44a8e8:	8fdc0018 	lw	gp,24(s8)
  44a8ec:	00000000 	nop
	    r = STF_FAIL + INVALID_ID_INFORMATION;
  44a8f0:	24020016 	li	v0,22
  44a8f4:	afc20020 	sw	v0,32(s8)
  44a8f8:	10000034 	b	44a9cc <quick_inI1_outR1_continue+0x258>
  44a8fc:	00000000 	nop
	}
	else
	{
	    passert(gateways_from_dns != NULL);
  44a900:	8f828204 	lw	v0,-32252(gp)
  44a904:	00000000 	nop
  44a908:	8c420000 	lw	v0,0(v0)
  44a90c:	00000000 	nop
  44a910:	1440000e 	bnez	v0,44a94c <quick_inI1_outR1_continue+0x1d8>
  44a914:	00000000 	nop
  44a918:	8f84802c 	lw	a0,-32724(gp)
  44a91c:	00000000 	nop
  44a920:	2484f200 	addiu	a0,a0,-3584
  44a924:	8f85802c 	lw	a1,-32724(gp)
  44a928:	00000000 	nop
  44a92c:	24a5d59c 	addiu	a1,a1,-10852
  44a930:	2406127b 	li	a2,4731
  44a934:	8f998bb8 	lw	t9,-29768(gp)
  44a938:	00000000 	nop
  44a93c:	0320f809 	jalr	t9
  44a940:	00000000 	nop
  44a944:	8fdc0018 	lw	gp,24(s8)
  44a948:	00000000 	nop
	    r = quick_inI1_outR1_tail(vc->md, &vc->my, &vc->his
  44a94c:	8fc20024 	lw	v0,36(s8)
  44a950:	00000000 	nop
  44a954:	24450484 	addiu	a1,v0,1156
  44a958:	8fc20024 	lw	v0,36(s8)
  44a95c:	00000000 	nop
  44a960:	244304a8 	addiu	v1,v0,1192
  44a964:	8fc20024 	lw	v0,36(s8)
  44a968:	00000000 	nop
  44a96c:	244204d0 	addiu	v0,v0,1232
  44a970:	afa20010 	sw	v0,16(sp)
  44a974:	8fc20024 	lw	v0,36(s8)
  44a978:	00000000 	nop
  44a97c:	8c440480 	lw	a0,1152(v0)
  44a980:	00603021 	move	a2,v1
  44a984:	8fc20024 	lw	v0,36(s8)
  44a988:	00000000 	nop
  44a98c:	8c4704cc 	lw	a3,1228(v0)
  44a990:	8f998038 	lw	t9,-32712(gp)
  44a994:	00000000 	nop
  44a998:	2739aa40 	addiu	t9,t9,-21952
  44a99c:	00000000 	nop
  44a9a0:	0320f809 	jalr	t9
  44a9a4:	00000000 	nop
  44a9a8:	8fdc0018 	lw	gp,24(s8)
  44a9ac:	afc20020 	sw	v0,32(s8)
		, vc->new_iv_len, vc->new_iv);
	    /* Normally, at this point, gateways_from_dns == NULL.
	     * If another negotiation, in parallel, obviated the need
	     * for this info, it might not have been used and freed.
	     * So we have to free it to cover that case.
	     */
	    gw_delref(&gateways_from_dns);
  44a9b0:	8f848204 	lw	a0,-32252(gp)
  44a9b4:	8f9983d8 	lw	t9,-31784(gp)
  44a9b8:	00000000 	nop
  44a9bc:	0320f809 	jalr	t9
  44a9c0:	00000000 	nop
  44a9c4:	8fdc0018 	lw	gp,24(s8)
  44a9c8:	00000000 	nop
	}
	complete_state_transition(&vc->md, r);
  44a9cc:	8fc20024 	lw	v0,36(s8)
  44a9d0:	00000000 	nop
  44a9d4:	24420480 	addiu	v0,v0,1152
  44a9d8:	00402021 	move	a0,v0
  44a9dc:	8fc50020 	lw	a1,32(s8)
  44a9e0:	8f998130 	lw	t9,-32464(gp)
  44a9e4:	00000000 	nop
  44a9e8:	0320f809 	jalr	t9
  44a9ec:	00000000 	nop
  44a9f0:	8fdc0018 	lw	gp,24(s8)
  44a9f4:	00000000 	nop
    }
    release_md(vc->md);
  44a9f8:	8fc20024 	lw	v0,36(s8)
  44a9fc:	00000000 	nop
  44aa00:	8c440480 	lw	a0,1152(v0)
  44aa04:	8f998218 	lw	t9,-32232(gp)
  44aa08:	00000000 	nop
  44aa0c:	0320f809 	jalr	t9
  44aa10:	00000000 	nop
  44aa14:	8fdc0018 	lw	gp,24(s8)
  44aa18:	00000000 	nop
    cur_state = NULL;
  44aa1c:	8f8187f8 	lw	at,-30728(gp)
  44aa20:	00000000 	nop
  44aa24:	ac200000 	sw	zero,0(at)
}
  44aa28:	03c0e821 	move	sp,s8
  44aa2c:	8fbf0038 	lw	ra,56(sp)
  44aa30:	8fbe0034 	lw	s8,52(sp)
  44aa34:	27bd0040 	addiu	sp,sp,64
  44aa38:	03e00008 	jr	ra
  44aa3c:	00000000 	nop

0044aa40 <quick_inI1_outR1_tail>:
  44aa40:	3c1c0fbc 	lui	gp,0xfbc
  44aa44:	279c1f30 	addiu	gp,gp,7984
  44aa48:	0399e021 	addu	gp,gp,t9
  44aa4c:	27bdf7b8 	addiu	sp,sp,-2120
  44aa50:	afbc0020 	sw	gp,32(sp)
  44aa54:	afbf0840 	sw	ra,2112(sp)
  44aa58:	afbe083c 	sw	s8,2108(sp)
  44aa5c:	afbc0838 	sw	gp,2104(sp)
  44aa60:	03a0f021 	move	s8,sp
  44aa64:	afc40848 	sw	a0,2120(s8)
  44aa68:	afc5084c 	sw	a1,2124(s8)
  44aa6c:	afc60850 	sw	a2,2128(s8)
  44aa70:	afc70854 	sw	a3,2132(s8)

static stf_status
quick_inI1_outR1_tail(struct msg_digest *md
, struct p2id *my, struct p2id *his
, unsigned int new_iv_len
, const u_char new_iv[MAX_DIGEST_LEN])
{
    struct state *const p1st = md->st;
  44aa74:	8fc20848 	lw	v0,2120(s8)
  44aa78:	00000000 	nop
  44aa7c:	8c420098 	lw	v0,152(v0)
  44aa80:	00000000 	nop
  44aa84:	afc20028 	sw	v0,40(s8)
    struct connection *c = p1st->st_connection;
  44aa88:	8fc20028 	lw	v0,40(s8)
  44aa8c:	00000000 	nop
  44aa90:	8c42000c 	lw	v0,12(v0)
  44aa94:	00000000 	nop
  44aa98:	afc2002c 	sw	v0,44(s8)
    struct payload_digest *const id_pd = md->chain[ISAKMP_NEXT_ID];
  44aa9c:	8fc20848 	lw	v0,2120(s8)
  44aaa0:	00000000 	nop
  44aaa4:	8c4204bc 	lw	v0,1212(v0)
  44aaa8:	00000000 	nop
  44aaac:	afc20030 	sw	v0,48(s8)
    ip_subnet *our_net = &my->net
  44aab0:	8fc2084c 	lw	v0,2124(s8)
  44aab4:	00000000 	nop
  44aab8:	afc20034 	sw	v0,52(s8)
	, *his_net = &his->net;
  44aabc:	8fc20850 	lw	v0,2128(s8)
  44aac0:	00000000 	nop
  44aac4:	afc20038 	sw	v0,56(s8)

    u_char	/* set by START_HASH_PAYLOAD: */
	*r_hashval,	/* where in reply to jam hash value */
	*r_hash_start;	/* from where to start hashing */

    /* Now that we have identities of client subnets, we must look for
     * a suitable connection (our current one only matches for hosts).
     */
    {
	struct connection *p = find_client_connection(c
  44aac8:	8fc2084c 	lw	v0,2124(s8)
  44aacc:	00000000 	nop
  44aad0:	90430020 	lbu	v1,32(v0)
  44aad4:	8fc2084c 	lw	v0,2124(s8)
  44aad8:	00000000 	nop
  44aadc:	94420022 	lhu	v0,34(v0)
  44aae0:	00000000 	nop
  44aae4:	afa20010 	sw	v0,16(sp)
  44aae8:	8fc20850 	lw	v0,2128(s8)
  44aaec:	00000000 	nop
  44aaf0:	90420020 	lbu	v0,32(v0)
  44aaf4:	00000000 	nop
  44aaf8:	afa20014 	sw	v0,20(sp)
  44aafc:	8fc20850 	lw	v0,2128(s8)
  44ab00:	00000000 	nop
  44ab04:	94420022 	lhu	v0,34(v0)
  44ab08:	00000000 	nop
  44ab0c:	afa20018 	sw	v0,24(sp)
  44ab10:	8fc4002c 	lw	a0,44(s8)
  44ab14:	8fc50034 	lw	a1,52(s8)
  44ab18:	8fc60038 	lw	a2,56(s8)
  44ab1c:	00603821 	move	a3,v1
  44ab20:	8f9980b8 	lw	t9,-32584(gp)
  44ab24:	00000000 	nop
  44ab28:	0320f809 	jalr	t9
  44ab2c:	00000000 	nop
  44ab30:	8fdc0020 	lw	gp,32(s8)
  44ab34:	afc20044 	sw	v0,68(s8)
	    , our_net, his_net, my->proto, my->port, his->proto, his->port);

	if (p == NULL)
  44ab38:	8fc20044 	lw	v0,68(s8)
  44ab3c:	00000000 	nop
  44ab40:	144000d4 	bnez	v0,44ae94 <quick_inI1_outR1_tail+0x454>
  44ab44:	00000000 	nop
	{
	    /* This message occurs in very puzzling circumstances
	     * so we must add as much information and beauty as we can.
	     */
	    struct end
		me = c->this,
  44ab48:	8fc2002c 	lw	v0,44(s8)
  44ab4c:	00000000 	nop
  44ab50:	24420030 	addiu	v0,v0,48
  44ab54:	27c40048 	addiu	a0,s8,72
  44ab58:	00402821 	move	a1,v0
  44ab5c:	240600b0 	li	a2,176
  44ab60:	8f998a30 	lw	t9,-30160(gp)
  44ab64:	00000000 	nop
  44ab68:	0320f809 	jalr	t9
  44ab6c:	00000000 	nop
  44ab70:	8fdc0020 	lw	gp,32(s8)
  44ab74:	00000000 	nop
		he = c->that;
  44ab78:	8fc2002c 	lw	v0,44(s8)
  44ab7c:	00000000 	nop
  44ab80:	244200e0 	addiu	v0,v0,224
  44ab84:	27c400f8 	addiu	a0,s8,248
  44ab88:	00402821 	move	a1,v0
  44ab8c:	240600b0 	li	a2,176
  44ab90:	8f998a30 	lw	t9,-30160(gp)
  44ab94:	00000000 	nop
  44ab98:	0320f809 	jalr	t9
  44ab9c:	00000000 	nop
  44aba0:	8fdc0020 	lw	gp,32(s8)
  44aba4:	00000000 	nop
	    char buf[2*SUBNETTOT_BUF + 2*ADDRTOT_BUF + 2*IDTOA_BUF + 2*ADDRTOT_BUF + 12]; /* + 12 for separating */
	    size_t l;

	    me.client = *our_net;
  44aba8:	8fc30034 	lw	v1,52(s8)
  44abac:	00000000 	nop
  44abb0:	8c620000 	lw	v0,0(v1)
  44abb4:	00000000 	nop
  44abb8:	afc200a8 	sw	v0,168(s8)
  44abbc:	8c620004 	lw	v0,4(v1)
  44abc0:	00000000 	nop
  44abc4:	afc200ac 	sw	v0,172(s8)
  44abc8:	8c620008 	lw	v0,8(v1)
  44abcc:	00000000 	nop
  44abd0:	afc200b0 	sw	v0,176(s8)
  44abd4:	8c62000c 	lw	v0,12(v1)
  44abd8:	00000000 	nop
  44abdc:	afc200b4 	sw	v0,180(s8)
  44abe0:	8c620010 	lw	v0,16(v1)
  44abe4:	00000000 	nop
  44abe8:	afc200b8 	sw	v0,184(s8)
  44abec:	8c620014 	lw	v0,20(v1)
  44abf0:	00000000 	nop
  44abf4:	afc200bc 	sw	v0,188(s8)
  44abf8:	8c620018 	lw	v0,24(v1)
  44abfc:	00000000 	nop
  44ac00:	afc200c0 	sw	v0,192(s8)
  44ac04:	8c62001c 	lw	v0,28(v1)
  44ac08:	00000000 	nop
  44ac0c:	afc200c4 	sw	v0,196(s8)
	    me.has_client = !subnetishost(our_net)
  44ac10:	afc007fc 	sw	zero,2044(s8)
  44ac14:	8fc40034 	lw	a0,52(s8)
  44ac18:	8f99851c 	lw	t9,-31460(gp)
  44ac1c:	00000000 	nop
  44ac20:	0320f809 	jalr	t9
  44ac24:	00000000 	nop
  44ac28:	8fdc0020 	lw	gp,32(s8)
  44ac2c:	1040000c 	beqz	v0,44ac60 <quick_inI1_outR1_tail+0x220>
  44ac30:	00000000 	nop
  44ac34:	27c20048 	addiu	v0,s8,72
  44ac38:	24420028 	addiu	v0,v0,40
  44ac3c:	00402021 	move	a0,v0
  44ac40:	8fc50034 	lw	a1,52(s8)
  44ac44:	8f998acc 	lw	t9,-30004(gp)
  44ac48:	00000000 	nop
  44ac4c:	0320f809 	jalr	t9
  44ac50:	00000000 	nop
  44ac54:	8fdc0020 	lw	gp,32(s8)
  44ac58:	14400003 	bnez	v0,44ac68 <quick_inI1_outR1_tail+0x228>
  44ac5c:	00000000 	nop
  44ac60:	24020001 	li	v0,1
  44ac64:	afc207fc 	sw	v0,2044(s8)
  44ac68:	8fc207fc 	lw	v0,2044(s8)
  44ac6c:	00000000 	nop
  44ac70:	afc200cc 	sw	v0,204(s8)
		|| !addrinsubnet(&me.host_addr, our_net);
	    me.protocol = my->proto;
  44ac74:	8fc2084c 	lw	v0,2124(s8)
  44ac78:	00000000 	nop
  44ac7c:	90420020 	lbu	v0,32(v0)
  44ac80:	00000000 	nop
  44ac84:	a3c200e4 	sb	v0,228(s8)
	    me.port = my->port;
  44ac88:	8fc2084c 	lw	v0,2124(s8)
  44ac8c:	00000000 	nop
  44ac90:	94420022 	lhu	v0,34(v0)
  44ac94:	00000000 	nop
  44ac98:	a7c200e2 	sh	v0,226(s8)

	    he.client = *his_net;
  44ac9c:	8fc30038 	lw	v1,56(s8)
  44aca0:	00000000 	nop
  44aca4:	8c620000 	lw	v0,0(v1)
  44aca8:	00000000 	nop
  44acac:	afc20158 	sw	v0,344(s8)
  44acb0:	8c620004 	lw	v0,4(v1)
  44acb4:	00000000 	nop
  44acb8:	afc2015c 	sw	v0,348(s8)
  44acbc:	8c620008 	lw	v0,8(v1)
  44acc0:	00000000 	nop
  44acc4:	afc20160 	sw	v0,352(s8)
  44acc8:	8c62000c 	lw	v0,12(v1)
  44accc:	00000000 	nop
  44acd0:	afc20164 	sw	v0,356(s8)
  44acd4:	8c620010 	lw	v0,16(v1)
  44acd8:	00000000 	nop
  44acdc:	afc20168 	sw	v0,360(s8)
  44ace0:	8c620014 	lw	v0,20(v1)
  44ace4:	00000000 	nop
  44ace8:	afc2016c 	sw	v0,364(s8)
  44acec:	8c620018 	lw	v0,24(v1)
  44acf0:	00000000 	nop
  44acf4:	afc20170 	sw	v0,368(s8)
  44acf8:	8c62001c 	lw	v0,28(v1)
  44acfc:	00000000 	nop
  44ad00:	afc20174 	sw	v0,372(s8)
	    he.has_client = !subnetishost(his_net)
  44ad04:	afc00808 	sw	zero,2056(s8)
  44ad08:	8fc40038 	lw	a0,56(s8)
  44ad0c:	8f99851c 	lw	t9,-31460(gp)
  44ad10:	00000000 	nop
  44ad14:	0320f809 	jalr	t9
  44ad18:	00000000 	nop
  44ad1c:	8fdc0020 	lw	gp,32(s8)
  44ad20:	1040000c 	beqz	v0,44ad54 <quick_inI1_outR1_tail+0x314>
  44ad24:	00000000 	nop
  44ad28:	27c200f8 	addiu	v0,s8,248
  44ad2c:	24420028 	addiu	v0,v0,40
  44ad30:	00402021 	move	a0,v0
  44ad34:	8fc50038 	lw	a1,56(s8)
  44ad38:	8f998acc 	lw	t9,-30004(gp)
  44ad3c:	00000000 	nop
  44ad40:	0320f809 	jalr	t9
  44ad44:	00000000 	nop
  44ad48:	8fdc0020 	lw	gp,32(s8)
  44ad4c:	14400003 	bnez	v0,44ad5c <quick_inI1_outR1_tail+0x31c>
  44ad50:	00000000 	nop
  44ad54:	24020001 	li	v0,1
  44ad58:	afc20808 	sw	v0,2056(s8)
  44ad5c:	8fc20808 	lw	v0,2056(s8)
  44ad60:	00000000 	nop
  44ad64:	afc2017c 	sw	v0,380(s8)
		|| !addrinsubnet(&he.host_addr, his_net);
	    he.protocol = his->proto;
  44ad68:	8fc20850 	lw	v0,2128(s8)
  44ad6c:	00000000 	nop
  44ad70:	90420020 	lbu	v0,32(v0)
  44ad74:	00000000 	nop
  44ad78:	a3c20194 	sb	v0,404(s8)
	    he.port = his->port;
  44ad7c:	8fc20850 	lw	v0,2128(s8)
  44ad80:	00000000 	nop
  44ad84:	94420022 	lhu	v0,34(v0)
  44ad88:	00000000 	nop
  44ad8c:	a7c20192 	sh	v0,402(s8)

	    l = format_end(buf, sizeof(buf), &me, NULL, TRUE);
  44ad90:	24020001 	li	v0,1
  44ad94:	afa20010 	sw	v0,16(sp)
  44ad98:	27c401a8 	addiu	a0,s8,424
  44ad9c:	240505ca 	li	a1,1482
  44ada0:	27c60048 	addiu	a2,s8,72
  44ada4:	00003821 	move	a3,zero
  44ada8:	8f998464 	lw	t9,-31644(gp)
  44adac:	00000000 	nop
  44adb0:	0320f809 	jalr	t9
  44adb4:	00000000 	nop
  44adb8:	8fdc0020 	lw	gp,32(s8)
  44adbc:	afc20778 	sw	v0,1912(s8)
	    l += snprintf(buf + l, sizeof(buf) - l, "...");
  44adc0:	27c301a8 	addiu	v1,s8,424
  44adc4:	8fc20778 	lw	v0,1912(s8)
  44adc8:	00000000 	nop
  44adcc:	00622021 	addu	a0,v1,v0
  44add0:	240305ca 	li	v1,1482
  44add4:	8fc20778 	lw	v0,1912(s8)
  44add8:	00000000 	nop
  44addc:	00621023 	subu	v0,v1,v0
  44ade0:	00402821 	move	a1,v0
  44ade4:	8f86802c 	lw	a2,-32724(gp)
  44ade8:	00000000 	nop
  44adec:	24c6f21c 	addiu	a2,a2,-3556
  44adf0:	8f998b38 	lw	t9,-29896(gp)
  44adf4:	00000000 	nop
  44adf8:	0320f809 	jalr	t9
  44adfc:	00000000 	nop
  44ae00:	8fdc0020 	lw	gp,32(s8)
  44ae04:	00401821 	move	v1,v0
  44ae08:	8fc20778 	lw	v0,1912(s8)
  44ae0c:	00000000 	nop
  44ae10:	00431021 	addu	v0,v0,v1
  44ae14:	afc20778 	sw	v0,1912(s8)
	    (void)format_end(buf + l, sizeof(buf) - l, &he, NULL, FALSE);
  44ae18:	27c301a8 	addiu	v1,s8,424
  44ae1c:	8fc20778 	lw	v0,1912(s8)
  44ae20:	00000000 	nop
  44ae24:	00622021 	addu	a0,v1,v0
  44ae28:	240305ca 	li	v1,1482
  44ae2c:	8fc20778 	lw	v0,1912(s8)
  44ae30:	00000000 	nop
  44ae34:	00621023 	subu	v0,v1,v0
  44ae38:	afa00010 	sw	zero,16(sp)
  44ae3c:	00402821 	move	a1,v0
  44ae40:	27c600f8 	addiu	a2,s8,248
  44ae44:	00003821 	move	a3,zero
  44ae48:	8f998464 	lw	t9,-31644(gp)
  44ae4c:	00000000 	nop
  44ae50:	0320f809 	jalr	t9
  44ae54:	00000000 	nop
  44ae58:	8fdc0020 	lw	gp,32(s8)
  44ae5c:	00000000 	nop
	    plog("cannot respond to IPsec SA request"
  44ae60:	8f84802c 	lw	a0,-32724(gp)
  44ae64:	00000000 	nop
  44ae68:	2484f220 	addiu	a0,a0,-3552
  44ae6c:	27c501a8 	addiu	a1,s8,424
  44ae70:	8f998abc 	lw	t9,-30020(gp)
  44ae74:	00000000 	nop
  44ae78:	0320f809 	jalr	t9
  44ae7c:	00000000 	nop
  44ae80:	8fdc0020 	lw	gp,32(s8)
  44ae84:	00000000 	nop
		" because no connection is known for %s"
		, buf);
	    return STF_FAIL + INVALID_ID_INFORMATION;
  44ae88:	24020016 	li	v0,22
  44ae8c:	1000055b 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44ae90:	00000000 	nop
	}
	else if (p != c)
  44ae94:	8fc30044 	lw	v1,68(s8)
  44ae98:	8fc2002c 	lw	v0,44(s8)
  44ae9c:	00000000 	nop
  44aea0:	1062019d 	beq	v1,v0,44b518 <quick_inI1_outR1_tail+0xad8>
  44aea4:	00000000 	nop
	{
	    /* We've got a better connection: it can support the
	     * specified clients.  But it may need instantiation.
	     */
	    if (p->kind == CK_TEMPLATE)
  44aea8:	8fc20044 	lw	v0,68(s8)
  44aeac:	00000000 	nop
  44aeb0:	8c420194 	lw	v0,404(v0)
  44aeb4:	00000000 	nop
  44aeb8:	1440016d 	bnez	v0,44b470 <quick_inI1_outR1_tail+0xa30>
  44aebc:	00000000 	nop
	    {
		/* Yup, it needs instantiation.  How much?
		 * Is it a Road Warrior connection (simple)
		 * or is it an Opportunistic connection (needing gw validation)?
		 */
		if (p->policy & POLICY_OPPO)
  44aec0:	8fc20044 	lw	v0,68(s8)
  44aec4:	00000000 	nop
  44aec8:	8c440008 	lw	a0,8(v0)
  44aecc:	8c45000c 	lw	a1,12(v0)
  44aed0:	24020000 	li	v0,0
  44aed4:	24030800 	li	v1,2048
  44aed8:	00822024 	and	a0,a0,v0
  44aedc:	00a32824 	and	a1,a1,v1
  44aee0:	00801021 	move	v0,a0
  44aee4:	00451025 	or	v0,v0,a1
  44aee8:	1040014e 	beqz	v0,44b424 <quick_inI1_outR1_tail+0x9e4>
  44aeec:	00000000 	nop
		{
		    /* Opportunistic.
		     * We need to determine if this peer is authorized
		     * to negotiate for this client!  If the peer's
		     * client is the peer, we assume that it is authorized.
		     * Since p isn't yet instantiated, we need to look
		     * in c for description of peer.
		     */
		    ip_address our_client
			, his_client;

		    passert(subnetishost(our_net) && subnetishost(his_net));
  44aef0:	8fc40034 	lw	a0,52(s8)
  44aef4:	8f99851c 	lw	t9,-31460(gp)
  44aef8:	00000000 	nop
  44aefc:	0320f809 	jalr	t9
  44af00:	00000000 	nop
  44af04:	8fdc0020 	lw	gp,32(s8)
  44af08:	10400009 	beqz	v0,44af30 <quick_inI1_outR1_tail+0x4f0>
  44af0c:	00000000 	nop
  44af10:	8fc40038 	lw	a0,56(s8)
  44af14:	8f99851c 	lw	t9,-31460(gp)
  44af18:	00000000 	nop
  44af1c:	0320f809 	jalr	t9
  44af20:	00000000 	nop
  44af24:	8fdc0020 	lw	gp,32(s8)
  44af28:	1440000e 	bnez	v0,44af64 <quick_inI1_outR1_tail+0x524>
  44af2c:	00000000 	nop
  44af30:	8f84802c 	lw	a0,-32724(gp)
  44af34:	00000000 	nop
  44af38:	2484f26c 	addiu	a0,a0,-3476
  44af3c:	8f85802c 	lw	a1,-32724(gp)
  44af40:	00000000 	nop
  44af44:	24a5d59c 	addiu	a1,a1,-10852
  44af48:	240612d8 	li	a2,4824
  44af4c:	8f998bb8 	lw	t9,-29768(gp)
  44af50:	00000000 	nop
  44af54:	0320f809 	jalr	t9
  44af58:	00000000 	nop
  44af5c:	8fdc0020 	lw	gp,32(s8)
  44af60:	00000000 	nop

		    networkof(our_net, &our_client);
  44af64:	8fc40034 	lw	a0,52(s8)
  44af68:	27c50780 	addiu	a1,s8,1920
  44af6c:	8f9985bc 	lw	t9,-31300(gp)
  44af70:	00000000 	nop
  44af74:	0320f809 	jalr	t9
  44af78:	00000000 	nop
  44af7c:	8fdc0020 	lw	gp,32(s8)
  44af80:	00000000 	nop
		    networkof(his_net, &his_client);
  44af84:	8fc40038 	lw	a0,56(s8)
  44af88:	27c507a0 	addiu	a1,s8,1952
  44af8c:	8f9985bc 	lw	t9,-31300(gp)
  44af90:	00000000 	nop
  44af94:	0320f809 	jalr	t9
  44af98:	00000000 	nop
  44af9c:	8fdc0020 	lw	gp,32(s8)
  44afa0:	00000000 	nop

		    /* refcounts for gateways_from_dns must balance,
		     * but NULL needs no count!
		     */
		    if (!sameaddr(&c->that.host_addr, &his_client))
  44afa4:	8fc2002c 	lw	v0,44(s8)
  44afa8:	00000000 	nop
  44afac:	24420108 	addiu	v0,v0,264
  44afb0:	00402021 	move	a0,v0
  44afb4:	27c507a0 	addiu	a1,s8,1952
  44afb8:	8f998928 	lw	t9,-30424(gp)
  44afbc:	00000000 	nop
  44afc0:	0320f809 	jalr	t9
  44afc4:	00000000 	nop
  44afc8:	8fdc0020 	lw	gp,32(s8)
  44afcc:	144000f8 	bnez	v0,44b3b0 <quick_inI1_outR1_tail+0x970>
  44afd0:	00000000 	nop
		    {
			if (gateways_from_dns == NULL)
  44afd4:	8f828204 	lw	v0,-32252(gp)
  44afd8:	00000000 	nop
  44afdc:	8c420000 	lw	v0,0(v0)
  44afe0:	00000000 	nop
  44afe4:	1440009b 	bnez	v0,44b254 <quick_inI1_outR1_tail+0x814>
  44afe8:	00000000 	nop
			{
			    /* initiate asynch DNS lookup and suspend */
			    struct verify_continuation *vc
				= alloc_thing(struct verify_continuation
  44afec:	24040510 	li	a0,1296
  44aff0:	8f85802c 	lw	a1,-32724(gp)
  44aff4:	00000000 	nop
  44aff8:	24a5f29c 	addiu	a1,a1,-3428
  44affc:	8f998084 	lw	t9,-32636(gp)
  44b000:	00000000 	nop
  44b004:	0320f809 	jalr	t9
  44b008:	00000000 	nop
  44b00c:	8fdc0020 	lw	gp,32(s8)
  44b010:	afc20778 	sw	v0,1912(s8)
				  , "verify continuation");
			    struct id pc_id;
			    err_t ugh;

			    /* Record that state is used by a suspended md */
			    passert(p1st->st_suspended_md == NULL);
  44b014:	8fc20028 	lw	v0,40(s8)
  44b018:	00000000 	nop
  44b01c:	8c420018 	lw	v0,24(v0)
  44b020:	00000000 	nop
  44b024:	1040000e 	beqz	v0,44b060 <quick_inI1_outR1_tail+0x620>
  44b028:	00000000 	nop
  44b02c:	8f84802c 	lw	a0,-32724(gp)
  44b030:	00000000 	nop
  44b034:	2484f2b0 	addiu	a0,a0,-3408
  44b038:	8f85802c 	lw	a1,-32724(gp)
  44b03c:	00000000 	nop
  44b040:	24a5d59c 	addiu	a1,a1,-10852
  44b044:	240612ec 	li	a2,4844
  44b048:	8f998bb8 	lw	t9,-29768(gp)
  44b04c:	00000000 	nop
  44b050:	0320f809 	jalr	t9
  44b054:	00000000 	nop
  44b058:	8fdc0020 	lw	gp,32(s8)
  44b05c:	00000000 	nop
			    vc->md = p1st->st_suspended_md = md;
  44b060:	8fc40778 	lw	a0,1912(s8)
  44b064:	8fc30848 	lw	v1,2120(s8)
  44b068:	8fc20028 	lw	v0,40(s8)
  44b06c:	00000000 	nop
  44b070:	ac430018 	sw	v1,24(v0)
  44b074:	ac830480 	sw	v1,1152(a0)

			    vc->my = *my;
  44b078:	8fc20778 	lw	v0,1912(s8)
  44b07c:	00000000 	nop
  44b080:	24420484 	addiu	v0,v0,1156
  44b084:	8fc3084c 	lw	v1,2124(s8)
  44b088:	00402021 	move	a0,v0
  44b08c:	00602821 	move	a1,v1
  44b090:	24060024 	li	a2,36
  44b094:	8f998a30 	lw	t9,-30160(gp)
  44b098:	00000000 	nop
  44b09c:	0320f809 	jalr	t9
  44b0a0:	00000000 	nop
  44b0a4:	8fdc0020 	lw	gp,32(s8)
  44b0a8:	00000000 	nop
			    vc->his = *his;
  44b0ac:	8fc20778 	lw	v0,1912(s8)
  44b0b0:	00000000 	nop
  44b0b4:	244204a8 	addiu	v0,v0,1192
  44b0b8:	8fc30850 	lw	v1,2128(s8)
  44b0bc:	00402021 	move	a0,v0
  44b0c0:	00602821 	move	a1,v1
  44b0c4:	24060024 	li	a2,36
  44b0c8:	8f998a30 	lw	t9,-30160(gp)
  44b0cc:	00000000 	nop
  44b0d0:	0320f809 	jalr	t9
  44b0d4:	00000000 	nop
  44b0d8:	8fdc0020 	lw	gp,32(s8)
  44b0dc:	00000000 	nop
			    vc->new_iv_len = p1st->st_new_iv_len;
  44b0e0:	8fc20028 	lw	v0,40(s8)
  44b0e4:	00000000 	nop
  44b0e8:	8c430248 	lw	v1,584(v0)
  44b0ec:	8fc20778 	lw	v0,1912(s8)
  44b0f0:	00000000 	nop
  44b0f4:	ac4304cc 	sw	v1,1228(v0)
			    passert(p1st->st_new_iv_len < sizeof(vc->new_iv));
  44b0f8:	8fc20028 	lw	v0,40(s8)
  44b0fc:	00000000 	nop
  44b100:	8c420248 	lw	v0,584(v0)
  44b104:	00000000 	nop
  44b108:	2c420040 	sltiu	v0,v0,64
  44b10c:	1440000e 	bnez	v0,44b148 <quick_inI1_outR1_tail+0x708>
  44b110:	00000000 	nop
  44b114:	8f84802c 	lw	a0,-32724(gp)
  44b118:	00000000 	nop
  44b11c:	2484f2d0 	addiu	a0,a0,-3376
  44b120:	8f85802c 	lw	a1,-32724(gp)
  44b124:	00000000 	nop
  44b128:	24a5d59c 	addiu	a1,a1,-10852
  44b12c:	240612f2 	li	a2,4850
  44b130:	8f998bb8 	lw	t9,-29768(gp)
  44b134:	00000000 	nop
  44b138:	0320f809 	jalr	t9
  44b13c:	00000000 	nop
  44b140:	8fdc0020 	lw	gp,32(s8)
  44b144:	00000000 	nop
			    memcpy(vc->new_iv, p1st->st_new_iv, p1st->st_new_iv_len);
  44b148:	8fc20778 	lw	v0,1912(s8)
  44b14c:	00000000 	nop
  44b150:	244304d0 	addiu	v1,v0,1232
  44b154:	8fc20028 	lw	v0,40(s8)
  44b158:	00000000 	nop
  44b15c:	244201c4 	addiu	v0,v0,452
  44b160:	00602021 	move	a0,v1
  44b164:	00402821 	move	a1,v0
  44b168:	8fc20028 	lw	v0,40(s8)
  44b16c:	00000000 	nop
  44b170:	8c460248 	lw	a2,584(v0)
  44b174:	8f998a30 	lw	t9,-30160(gp)
  44b178:	00000000 	nop
  44b17c:	0320f809 	jalr	t9
  44b180:	00000000 	nop
  44b184:	8fdc0020 	lw	gp,32(s8)
  44b188:	00000000 	nop

			    iptoid(&his_client, &pc_id);
  44b18c:	27c407a0 	addiu	a0,s8,1952
  44b190:	27c507c0 	addiu	a1,s8,1984
  44b194:	8f998a6c 	lw	t9,-30100(gp)
  44b198:	00000000 	nop
  44b19c:	0320f809 	jalr	t9
  44b1a0:	00000000 	nop
  44b1a4:	8fdc0020 	lw	gp,32(s8)
  44b1a8:	00000000 	nop
			    ugh = start_adns_query(&pc_id
  44b1ac:	8fc2002c 	lw	v0,44(s8)
  44b1b0:	00000000 	nop
  44b1b4:	244300e0 	addiu	v1,v0,224
  44b1b8:	8fc20778 	lw	v0,1912(s8)
  44b1bc:	00000000 	nop
  44b1c0:	afa20010 	sw	v0,16(sp)
  44b1c4:	27c407c0 	addiu	a0,s8,1984
  44b1c8:	00602821 	move	a1,v1
  44b1cc:	24060010 	li	a2,16
  44b1d0:	8f878038 	lw	a3,-32712(gp)
  44b1d4:	00000000 	nop
  44b1d8:	24e7a774 	addiu	a3,a3,-22668
  44b1dc:	8f998b34 	lw	t9,-29900(gp)
  44b1e0:	00000000 	nop
  44b1e4:	0320f809 	jalr	t9
  44b1e8:	00000000 	nop
  44b1ec:	8fdc0020 	lw	gp,32(s8)
  44b1f0:	afc207e8 	sw	v0,2024(s8)
				, &c->that.id
				, T_TXT
				, quick_inI1_outR1_continue
				, &vc->ac);
			    if (ugh != NULL)
  44b1f4:	8fc207e8 	lw	v0,2024(s8)
  44b1f8:	00000000 	nop
  44b1fc:	10400012 	beqz	v0,44b248 <quick_inI1_outR1_tail+0x808>
  44b200:	00000000 	nop
			    {
				report_verify_failure(p1st, his, ugh);
  44b204:	8fc40028 	lw	a0,40(s8)
  44b208:	8fc50850 	lw	a1,2128(s8)
  44b20c:	8fc607e8 	lw	a2,2024(s8)
  44b210:	8f998038 	lw	t9,-32712(gp)
  44b214:	00000000 	nop
  44b218:	2739a66c 	addiu	t9,t9,-22932
  44b21c:	00000000 	nop
  44b220:	0320f809 	jalr	t9
  44b224:	00000000 	nop
  44b228:	8fdc0020 	lw	gp,32(s8)
  44b22c:	00000000 	nop
				p1st->st_suspended_md = NULL;
  44b230:	8fc20028 	lw	v0,40(s8)
  44b234:	00000000 	nop
  44b238:	ac400018 	sw	zero,24(v0)
				return STF_FAIL + INVALID_ID_INFORMATION;
  44b23c:	24020016 	li	v0,22
  44b240:	1000046e 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44b244:	00000000 	nop
			    }
			    else
			    {
				return STF_SUSPEND;
  44b248:	24020001 	li	v0,1
  44b24c:	1000046b 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44b250:	00000000 	nop
			    }
			}
			else
			{
			    /* use result of asynch DNS lookup */
			    struct gw_info *gwp;

			    /* check that the public key that authenticated
			     * the ISAKMP SA (p1st) will do for this gateway.
			     */
			    for (gwp = gateways_from_dns; ; gwp = gwp->next)
  44b254:	8f828204 	lw	v0,-32252(gp)
  44b258:	00000000 	nop
  44b25c:	8c420000 	lw	v0,0(v0)
  44b260:	00000000 	nop
  44b264:	afc207e8 	sw	v0,2024(s8)
			    {
				if (gwp == NULL)
  44b268:	8fc207e8 	lw	v0,2024(s8)
  44b26c:	00000000 	nop
  44b270:	14400015 	bnez	v0,44b2c8 <quick_inI1_outR1_tail+0x888>
  44b274:	00000000 	nop
				{
				    /* out of luck */
				    loglog(RC_OPPOFAILURE, "peer and client disagree about public key");
  44b278:	24040021 	li	a0,33
  44b27c:	8f85802c 	lw	a1,-32724(gp)
  44b280:	00000000 	nop
  44b284:	24a5f2fc 	addiu	a1,a1,-3332
  44b288:	8f998c48 	lw	t9,-29624(gp)
  44b28c:	00000000 	nop
  44b290:	0320f809 	jalr	t9
  44b294:	00000000 	nop
  44b298:	8fdc0020 	lw	gp,32(s8)
  44b29c:	00000000 	nop
				    gw_delref(&gateways_from_dns);
  44b2a0:	8f848204 	lw	a0,-32252(gp)
  44b2a4:	8f9983d8 	lw	t9,-31784(gp)
  44b2a8:	00000000 	nop
  44b2ac:	0320f809 	jalr	t9
  44b2b0:	00000000 	nop
  44b2b4:	8fdc0020 	lw	gp,32(s8)
  44b2b8:	00000000 	nop
				    return STF_FAIL + INVALID_ID_INFORMATION;
  44b2bc:	24020016 	li	v0,22
  44b2c0:	1000044e 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44b2c4:	00000000 	nop
				}
				passert(same_id(&gwp->gw_id, &c->that.id));
  44b2c8:	8fc207e8 	lw	v0,2024(s8)
  44b2cc:	00000000 	nop
  44b2d0:	24430040 	addiu	v1,v0,64
  44b2d4:	8fc2002c 	lw	v0,44(s8)
  44b2d8:	00000000 	nop
  44b2dc:	244200e0 	addiu	v0,v0,224
  44b2e0:	00602021 	move	a0,v1
  44b2e4:	00402821 	move	a1,v0
  44b2e8:	8f9980e4 	lw	t9,-32540(gp)
  44b2ec:	00000000 	nop
  44b2f0:	0320f809 	jalr	t9
  44b2f4:	00000000 	nop
  44b2f8:	8fdc0020 	lw	gp,32(s8)
  44b2fc:	1440000e 	bnez	v0,44b338 <quick_inI1_outR1_tail+0x8f8>
  44b300:	00000000 	nop
  44b304:	8f84802c 	lw	a0,-32724(gp)
  44b308:	00000000 	nop
  44b30c:	2484f328 	addiu	a0,a0,-3288
  44b310:	8f85802c 	lw	a1,-32724(gp)
  44b314:	00000000 	nop
  44b318:	24a5d59c 	addiu	a1,a1,-10852
  44b31c:	24061317 	li	a2,4887
  44b320:	8f998bb8 	lw	t9,-29768(gp)
  44b324:	00000000 	nop
  44b328:	0320f809 	jalr	t9
  44b32c:	00000000 	nop
  44b330:	8fdc0020 	lw	gp,32(s8)
  44b334:	00000000 	nop
				/* If there is a key from the TXT record,
				 * we count it as a win if we match the key.
				 * If there was no key, we claim a match since
				 * it implies fetching a KEY from the same
				 * place we must have gotten it.
				 */
				if (!gwp->gw_key_present
				|| same_RSA_public_key(&p1st->st_peer_pubkey->u.rsa
				, &gwp->gw_key))
  44b338:	8fc207e8 	lw	v0,2024(s8)
  44b33c:	00000000 	nop
  44b340:	8c420068 	lw	v0,104(v0)
  44b344:	00000000 	nop
  44b348:	10400019 	beqz	v0,44b3b0 <quick_inI1_outR1_tail+0x970>
  44b34c:	00000000 	nop
  44b350:	8fc20028 	lw	v0,40(s8)
  44b354:	00000000 	nop
  44b358:	8c420148 	lw	v0,328(v0)
  44b35c:	00000000 	nop
  44b360:	24430040 	addiu	v1,v0,64
  44b364:	8fc207e8 	lw	v0,2024(s8)
  44b368:	00000000 	nop
  44b36c:	2442006c 	addiu	v0,v0,108
  44b370:	00602021 	move	a0,v1
  44b374:	00402821 	move	a1,v0
  44b378:	8f998c68 	lw	t9,-29592(gp)
  44b37c:	00000000 	nop
  44b380:	0320f809 	jalr	t9
  44b384:	00000000 	nop
  44b388:	8fdc0020 	lw	gp,32(s8)
  44b38c:	14400008 	bnez	v0,44b3b0 <quick_inI1_outR1_tail+0x970>
  44b390:	00000000 	nop
  44b394:	8fc207e8 	lw	v0,2024(s8)
  44b398:	00000000 	nop
  44b39c:	8c420094 	lw	v0,148(v0)
  44b3a0:	00000000 	nop
  44b3a4:	afc207e8 	sw	v0,2024(s8)
  44b3a8:	1000ffaf 	b	44b268 <quick_inI1_outR1_tail+0x828>
  44b3ac:	00000000 	nop
				    break;	/* good! */
			    }
			}
		    }

		    /* Instantiate inbound Opportunistic connection,
		     * carrying over authenticated peer ID
		     * and filling in a few more details.
		     */
		    p = oppo_instantiate(p, &c->that.host_addr, &c->that.id
  44b3b0:	8fc2002c 	lw	v0,44(s8)
  44b3b4:	00000000 	nop
  44b3b8:	24450108 	addiu	a1,v0,264
  44b3bc:	8fc2002c 	lw	v0,44(s8)
  44b3c0:	00000000 	nop
  44b3c4:	244300e0 	addiu	v1,v0,224
  44b3c8:	27c20780 	addiu	v0,s8,1920
  44b3cc:	afa20010 	sw	v0,16(sp)
  44b3d0:	27c207a0 	addiu	v0,s8,1952
  44b3d4:	afa20014 	sw	v0,20(sp)
  44b3d8:	8fc40044 	lw	a0,68(s8)
  44b3dc:	00603021 	move	a2,v1
  44b3e0:	8f878204 	lw	a3,-32252(gp)
  44b3e4:	00000000 	nop
  44b3e8:	8ce70000 	lw	a3,0(a3)
  44b3ec:	8f998454 	lw	t9,-31660(gp)
  44b3f0:	00000000 	nop
  44b3f4:	0320f809 	jalr	t9
  44b3f8:	00000000 	nop
  44b3fc:	8fdc0020 	lw	gp,32(s8)
  44b400:	afc20044 	sw	v0,68(s8)
			, gateways_from_dns, &our_client, &his_client);
		    gw_delref(&gateways_from_dns);	/* gateways_from_dns is dead */
  44b404:	8f848204 	lw	a0,-32252(gp)
  44b408:	8f9983d8 	lw	t9,-31784(gp)
  44b40c:	00000000 	nop
  44b410:	0320f809 	jalr	t9
  44b414:	00000000 	nop
  44b418:	8fdc0020 	lw	gp,32(s8)
  44b41c:	10000014 	b	44b470 <quick_inI1_outR1_tail+0xa30>
  44b420:	00000000 	nop
		}
		else
		{
		    /* Plain Road Warrior:
		     * instantiate, carrying over authenticated peer ID
		     */
		    p = rw_instantiate(p, &c->that.host_addr,
  44b424:	8fc2002c 	lw	v0,44(s8)
  44b428:	00000000 	nop
  44b42c:	24450108 	addiu	a1,v0,264
  44b430:	8fc20848 	lw	v0,2120(s8)
  44b434:	00000000 	nop
  44b438:	9443002c 	lhu	v1,44(v0)
  44b43c:	8fc2002c 	lw	v0,44(s8)
  44b440:	00000000 	nop
  44b444:	244200e0 	addiu	v0,v0,224
  44b448:	afa20010 	sw	v0,16(sp)
  44b44c:	8fc40044 	lw	a0,68(s8)
  44b450:	00603021 	move	a2,v1
  44b454:	8fc70038 	lw	a3,56(s8)
  44b458:	8f998414 	lw	t9,-31724(gp)
  44b45c:	00000000 	nop
  44b460:	0320f809 	jalr	t9
  44b464:	00000000 	nop
  44b468:	8fdc0020 	lw	gp,32(s8)
  44b46c:	afc20044 	sw	v0,68(s8)
#ifdef NAT_TRAVERSAL
				md->sender_port,
#endif
#ifdef VIRTUAL_IP
				his_net,
#endif
				&c->that.id);
		}
	    }
#ifdef DEBUG
	    /* temporarily bump up cur_debugging to get "using..." message
	     * printed if we'd want it with new connection.
	     */
	    {
		unsigned int old_cur_debugging = cur_debugging;
  44b470:	8f8284f8 	lw	v0,-31496(gp)
  44b474:	00000000 	nop
  44b478:	8c420000 	lw	v0,0(v0)
  44b47c:	00000000 	nop
  44b480:	afc207e8 	sw	v0,2024(s8)

		cur_debugging |= p->extra_debugging;
  44b484:	8fc20044 	lw	v0,68(s8)
  44b488:	00000000 	nop
  44b48c:	8c4301b0 	lw	v1,432(v0)
  44b490:	8f8284f8 	lw	v0,-31496(gp)
  44b494:	00000000 	nop
  44b498:	8c420000 	lw	v0,0(v0)
  44b49c:	00000000 	nop
  44b4a0:	00431025 	or	v0,v0,v1
  44b4a4:	8f8184f8 	lw	at,-31496(gp)
  44b4a8:	00000000 	nop
  44b4ac:	ac220000 	sw	v0,0(at)
		DBG(DBG_CONTROL, DBG_log("using connection \"%s\"", p->name));
  44b4b0:	8f8284f8 	lw	v0,-31496(gp)
  44b4b4:	00000000 	nop
  44b4b8:	8c420000 	lw	v0,0(v0)
  44b4bc:	00000000 	nop
  44b4c0:	30420010 	andi	v0,v0,0x10
  44b4c4:	1040000d 	beqz	v0,44b4fc <quick_inI1_outR1_tail+0xabc>
  44b4c8:	00000000 	nop
  44b4cc:	8f84802c 	lw	a0,-32724(gp)
  44b4d0:	00000000 	nop
  44b4d4:	2484f34c 	addiu	a0,a0,-3252
  44b4d8:	8fc20044 	lw	v0,68(s8)
  44b4dc:	00000000 	nop
  44b4e0:	8c450000 	lw	a1,0(v0)
  44b4e4:	8f9983b8 	lw	t9,-31816(gp)
  44b4e8:	00000000 	nop
  44b4ec:	0320f809 	jalr	t9
  44b4f0:	00000000 	nop
  44b4f4:	8fdc0020 	lw	gp,32(s8)
  44b4f8:	00000000 	nop
		cur_debugging = old_cur_debugging;
  44b4fc:	8fc207e8 	lw	v0,2024(s8)
  44b500:	8f8184f8 	lw	at,-31496(gp)
  44b504:	00000000 	nop
  44b508:	ac220000 	sw	v0,0(at)
	    }
#endif
	    c = p;
  44b50c:	8fc20044 	lw	v0,68(s8)
  44b510:	00000000 	nop
  44b514:	afc2002c 	sw	v0,44(s8)
	}
	/* fill in the client's true ip address/subnet */
	if (p->that.has_client_wildcard)
  44b518:	8fc20044 	lw	v0,68(s8)
  44b51c:	00000000 	nop
  44b520:	8c420168 	lw	v0,360(v0)
  44b524:	00000000 	nop
  44b528:	10400021 	beqz	v0,44b5b0 <quick_inI1_outR1_tail+0xb70>
  44b52c:	00000000 	nop
	{
	    p->that.client = *his_net;
  44b530:	8fc40044 	lw	a0,68(s8)
  44b534:	8fc30038 	lw	v1,56(s8)
  44b538:	00000000 	nop
  44b53c:	8c620000 	lw	v0,0(v1)
  44b540:	00000000 	nop
  44b544:	ac820140 	sw	v0,320(a0)
  44b548:	8c620004 	lw	v0,4(v1)
  44b54c:	00000000 	nop
  44b550:	ac820144 	sw	v0,324(a0)
  44b554:	8c620008 	lw	v0,8(v1)
  44b558:	00000000 	nop
  44b55c:	ac820148 	sw	v0,328(a0)
  44b560:	8c62000c 	lw	v0,12(v1)
  44b564:	00000000 	nop
  44b568:	ac82014c 	sw	v0,332(a0)
  44b56c:	8c620010 	lw	v0,16(v1)
  44b570:	00000000 	nop
  44b574:	ac820150 	sw	v0,336(a0)
  44b578:	8c620014 	lw	v0,20(v1)
  44b57c:	00000000 	nop
  44b580:	ac820154 	sw	v0,340(a0)
  44b584:	8c620018 	lw	v0,24(v1)
  44b588:	00000000 	nop
  44b58c:	ac820158 	sw	v0,344(a0)
  44b590:	8c62001c 	lw	v0,28(v1)
  44b594:	00000000 	nop
  44b598:	ac82015c 	sw	v0,348(a0)
	    p->that.has_client_wildcard = FALSE;
  44b59c:	8fc20044 	lw	v0,68(s8)
  44b5a0:	00000000 	nop
  44b5a4:	ac400168 	sw	zero,360(v0)
  44b5a8:	1000003e 	b	44b6a4 <quick_inI1_outR1_tail+0xc64>
  44b5ac:	00000000 	nop
	}
#ifdef VIRTUAL_IP
	else if (is_virtual_connection(c))
  44b5b0:	8fc4002c 	lw	a0,44(s8)
  44b5b4:	8f998654 	lw	t9,-31148(gp)
  44b5b8:	00000000 	nop
  44b5bc:	0320f809 	jalr	t9
  44b5c0:	00000000 	nop
  44b5c4:	8fdc0020 	lw	gp,32(s8)
  44b5c8:	10400036 	beqz	v0,44b6a4 <quick_inI1_outR1_tail+0xc64>
  44b5cc:	00000000 	nop
	{
	    c->that.client = *his_net;
  44b5d0:	8fc4002c 	lw	a0,44(s8)
  44b5d4:	8fc30038 	lw	v1,56(s8)
  44b5d8:	00000000 	nop
  44b5dc:	8c620000 	lw	v0,0(v1)
  44b5e0:	00000000 	nop
  44b5e4:	ac820140 	sw	v0,320(a0)
  44b5e8:	8c620004 	lw	v0,4(v1)
  44b5ec:	00000000 	nop
  44b5f0:	ac820144 	sw	v0,324(a0)
  44b5f4:	8c620008 	lw	v0,8(v1)
  44b5f8:	00000000 	nop
  44b5fc:	ac820148 	sw	v0,328(a0)
  44b600:	8c62000c 	lw	v0,12(v1)
  44b604:	00000000 	nop
  44b608:	ac82014c 	sw	v0,332(a0)
  44b60c:	8c620010 	lw	v0,16(v1)
  44b610:	00000000 	nop
  44b614:	ac820150 	sw	v0,336(a0)
  44b618:	8c620014 	lw	v0,20(v1)
  44b61c:	00000000 	nop
  44b620:	ac820154 	sw	v0,340(a0)
  44b624:	8c620018 	lw	v0,24(v1)
  44b628:	00000000 	nop
  44b62c:	ac820158 	sw	v0,344(a0)
  44b630:	8c62001c 	lw	v0,28(v1)
  44b634:	00000000 	nop
  44b638:	ac82015c 	sw	v0,348(a0)
	    c->that.virt = NULL;
  44b63c:	8fc2002c 	lw	v0,44(s8)
  44b640:	00000000 	nop
  44b644:	ac40018c 	sw	zero,396(v0)
	    if (subnetishost(his_net) && addrinsubnet(&c->that.host_addr, his_net))
  44b648:	8fc40038 	lw	a0,56(s8)
  44b64c:	8f99851c 	lw	t9,-31460(gp)
  44b650:	00000000 	nop
  44b654:	0320f809 	jalr	t9
  44b658:	00000000 	nop
  44b65c:	8fdc0020 	lw	gp,32(s8)
  44b660:	10400010 	beqz	v0,44b6a4 <quick_inI1_outR1_tail+0xc64>
  44b664:	00000000 	nop
  44b668:	8fc2002c 	lw	v0,44(s8)
  44b66c:	00000000 	nop
  44b670:	24420108 	addiu	v0,v0,264
  44b674:	00402021 	move	a0,v0
  44b678:	8fc50038 	lw	a1,56(s8)
  44b67c:	8f998acc 	lw	t9,-30004(gp)
  44b680:	00000000 	nop
  44b684:	0320f809 	jalr	t9
  44b688:	00000000 	nop
  44b68c:	8fdc0020 	lw	gp,32(s8)
  44b690:	10400004 	beqz	v0,44b6a4 <quick_inI1_outR1_tail+0xc64>
  44b694:	00000000 	nop
		c->that.has_client = FALSE;
  44b698:	8fc2002c 	lw	v0,44(s8)
  44b69c:	00000000 	nop
  44b6a0:	ac400164 	sw	zero,356(v0)
	}
#endif
    }

    /* now that we are sure of our connection, create our new state */
    {
	struct state *const st = duplicate_state(p1st);
  44b6a4:	8fc40028 	lw	a0,40(s8)
  44b6a8:	8f99832c 	lw	t9,-31956(gp)
  44b6ac:	00000000 	nop
  44b6b0:	0320f809 	jalr	t9
  44b6b4:	00000000 	nop
  44b6b8:	8fdc0020 	lw	gp,32(s8)
  44b6bc:	afc207ec 	sw	v0,2028(s8)

	/* first: fill in missing bits of our new state object
	 * note: we don't copy over st_peer_pubkey, the public key
	 * that authenticated the ISAKMP SA.  We only need it in this
	 * routine, so we can "reach back" to p1st to get it.
	 */

	if (st->st_connection != c)
  44b6c0:	8fc207ec 	lw	v0,2028(s8)
  44b6c4:	00000000 	nop
  44b6c8:	8c43000c 	lw	v1,12(v0)
  44b6cc:	8fc2002c 	lw	v0,44(s8)
  44b6d0:	00000000 	nop
  44b6d4:	1062001c 	beq	v1,v0,44b748 <quick_inI1_outR1_tail+0xd08>
  44b6d8:	00000000 	nop
	{
	    struct connection *t = st->st_connection;
  44b6dc:	8fc207ec 	lw	v0,2028(s8)
  44b6e0:	00000000 	nop
  44b6e4:	8c42000c 	lw	v0,12(v0)
  44b6e8:	00000000 	nop
  44b6ec:	afc207e8 	sw	v0,2024(s8)

	    st->st_connection = c;
  44b6f0:	8fc3002c 	lw	v1,44(s8)
  44b6f4:	8fc207ec 	lw	v0,2028(s8)
  44b6f8:	00000000 	nop
  44b6fc:	ac43000c 	sw	v1,12(v0)
	    set_cur_connection(c);
  44b700:	8fc2002c 	lw	v0,44(s8)
  44b704:	8f8188c8 	lw	at,-30520(gp)
  44b708:	00000000 	nop
  44b70c:	ac220000 	sw	v0,0(at)
  44b710:	8fc4002c 	lw	a0,44(s8)
  44b714:	8f998be4 	lw	t9,-29724(gp)
  44b718:	00000000 	nop
  44b71c:	0320f809 	jalr	t9
  44b720:	00000000 	nop
  44b724:	8fdc0020 	lw	gp,32(s8)
  44b728:	00000000 	nop
	    connection_discard(t);
  44b72c:	8fc407e8 	lw	a0,2024(s8)
  44b730:	8f998a2c 	lw	t9,-30164(gp)
  44b734:	00000000 	nop
  44b738:	0320f809 	jalr	t9
  44b73c:	00000000 	nop
  44b740:	8fdc0020 	lw	gp,32(s8)
  44b744:	00000000 	nop
	}

	st->st_try = 0;	/* not our job to try again from start */
  44b748:	8fc207ec 	lw	v0,2028(s8)
  44b74c:	00000000 	nop
  44b750:	ac400154 	sw	zero,340(v0)

	st->st_msgid = md->hdr.isa_msgid;
  44b754:	8fc20848 	lw	v0,2120(s8)
  44b758:	00000000 	nop
  44b75c:	8c430084 	lw	v1,132(v0)
  44b760:	8fc207ec 	lw	v0,2028(s8)
  44b764:	00000000 	nop
  44b768:	ac4300e0 	sw	v1,224(v0)

	st->st_new_iv_len = new_iv_len;
  44b76c:	8fc30854 	lw	v1,2132(s8)
  44b770:	8fc207ec 	lw	v0,2028(s8)
  44b774:	00000000 	nop
  44b778:	ac430248 	sw	v1,584(v0)
	set_new_iv(st, new_iv);
  44b77c:	8fc207ec 	lw	v0,2028(s8)
  44b780:	00000000 	nop
  44b784:	8c420248 	lw	v0,584(v0)
  44b788:	00000000 	nop
  44b78c:	2c420040 	sltiu	v0,v0,64
  44b790:	1440000d 	bnez	v0,44b7c8 <quick_inI1_outR1_tail+0xd88>
  44b794:	00000000 	nop
  44b798:	8f84802c 	lw	a0,-32724(gp)
  44b79c:	00000000 	nop
  44b7a0:	2484e5a0 	addiu	a0,a0,-6752
  44b7a4:	8f85802c 	lw	a1,-32724(gp)
  44b7a8:	00000000 	nop
  44b7ac:	24a5d59c 	addiu	a1,a1,-10852
  44b7b0:	24061374 	li	a2,4980
  44b7b4:	8f998bb8 	lw	t9,-29768(gp)
  44b7b8:	00000000 	nop
  44b7bc:	0320f809 	jalr	t9
  44b7c0:	00000000 	nop
  44b7c4:	8fdc0020 	lw	gp,32(s8)
  44b7c8:	8fc207ec 	lw	v0,2028(s8)
  44b7cc:	00000000 	nop
  44b7d0:	244201c4 	addiu	v0,v0,452
  44b7d4:	00402021 	move	a0,v0
  44b7d8:	8fc50858 	lw	a1,2136(s8)
  44b7dc:	8fc207ec 	lw	v0,2028(s8)
  44b7e0:	00000000 	nop
  44b7e4:	8c460248 	lw	a2,584(v0)
  44b7e8:	8f998a30 	lw	t9,-30160(gp)
  44b7ec:	00000000 	nop
  44b7f0:	0320f809 	jalr	t9
  44b7f4:	00000000 	nop
  44b7f8:	8fdc0020 	lw	gp,32(s8)
  44b7fc:	00000000 	nop

	set_cur_state(st);	/* (caller will reset) */
  44b800:	8fc207ec 	lw	v0,2028(s8)
  44b804:	8f8187f8 	lw	at,-30728(gp)
  44b808:	00000000 	nop
  44b80c:	ac220000 	sw	v0,0(at)
  44b810:	8fc207ec 	lw	v0,2028(s8)
  44b814:	00000000 	nop
  44b818:	8c44000c 	lw	a0,12(v0)
  44b81c:	8f998be4 	lw	t9,-29724(gp)
  44b820:	00000000 	nop
  44b824:	0320f809 	jalr	t9
  44b828:	00000000 	nop
  44b82c:	8fdc0020 	lw	gp,32(s8)
  44b830:	00000000 	nop
	md->st = st;	/* feed back new state */
  44b834:	8fc307ec 	lw	v1,2028(s8)
  44b838:	8fc20848 	lw	v0,2120(s8)
  44b83c:	00000000 	nop
  44b840:	ac430098 	sw	v1,152(v0)

	st->st_peeruserprotoid = his->proto;
  44b844:	8fc20850 	lw	v0,2128(s8)
  44b848:	00000000 	nop
  44b84c:	90430020 	lbu	v1,32(v0)
  44b850:	8fc207ec 	lw	v0,2028(s8)
  44b854:	00000000 	nop
  44b858:	a043012c 	sb	v1,300(v0)
	st->st_peeruserport = his->port;
  44b85c:	8fc20850 	lw	v0,2128(s8)
  44b860:	00000000 	nop
  44b864:	94430022 	lhu	v1,34(v0)
  44b868:	8fc207ec 	lw	v0,2028(s8)
  44b86c:	00000000 	nop
  44b870:	a443012e 	sh	v1,302(v0)
	st->st_myuserprotoid = my->proto;
  44b874:	8fc2084c 	lw	v0,2124(s8)
  44b878:	00000000 	nop
  44b87c:	90430020 	lbu	v1,32(v0)
  44b880:	8fc207ec 	lw	v0,2028(s8)
  44b884:	00000000 	nop
  44b888:	a0430120 	sb	v1,288(v0)
	st->st_myuserport = my->port;
  44b88c:	8fc2084c 	lw	v0,2124(s8)
  44b890:	00000000 	nop
  44b894:	94430022 	lhu	v1,34(v0)
  44b898:	8fc207ec 	lw	v0,2028(s8)
  44b89c:	00000000 	nop
  44b8a0:	a4430122 	sh	v1,290(v0)

	insert_state(st);	/* needs cookies, connection, and msgid */
  44b8a4:	8fc407ec 	lw	a0,2028(s8)
  44b8a8:	8f9983a4 	lw	t9,-31836(gp)
  44b8ac:	00000000 	nop
  44b8b0:	0320f809 	jalr	t9
  44b8b4:	00000000 	nop
  44b8b8:	8fdc0020 	lw	gp,32(s8)
  44b8bc:	00000000 	nop

	/* copy the connection's
	 * IPSEC policy into our state.  The ISAKMP policy is water under
	 * the bridge, I think.  It will reflect the ISAKMP SA that we
	 * are using.
	 */
	st->st_policy = (p1st->st_policy & POLICY_ISAKMP_MASK)
  44b8c0:	8fc20028 	lw	v0,40(s8)
  44b8c4:	00000000 	nop
  44b8c8:	8c4400d8 	lw	a0,216(v0)
  44b8cc:	8c4500dc 	lw	a1,220(v0)
  44b8d0:	24020000 	li	v0,0
  44b8d4:	24032003 	li	v1,8195
  44b8d8:	00823024 	and	a2,a0,v0
  44b8dc:	00a33824 	and	a3,a1,v1
  44b8e0:	8fc2002c 	lw	v0,44(s8)
  44b8e4:	00000000 	nop
  44b8e8:	8c440008 	lw	a0,8(v0)
  44b8ec:	8c45000c 	lw	a1,12(v0)
  44b8f0:	2402ffff 	li	v0,-1
  44b8f4:	2403dffc 	li	v1,-8196
  44b8f8:	00821024 	and	v0,a0,v0
  44b8fc:	00a31824 	and	v1,a1,v1
  44b900:	00c21025 	or	v0,a2,v0
  44b904:	00e31825 	or	v1,a3,v1
  44b908:	8fc407ec 	lw	a0,2028(s8)
  44b90c:	00000000 	nop
  44b910:	ac8200d8 	sw	v0,216(a0)
  44b914:	ac8300dc 	sw	v1,220(a0)
	    | (c->policy & ~POLICY_ISAKMP_MASK);

#ifdef NAT_TRAVERSAL
	if (p1st->nat_traversal & NAT_T_DETECTED) {
  44b918:	8fc20028 	lw	v0,40(s8)
  44b91c:	00000000 	nop
  44b920:	8c430264 	lw	v1,612(v0)
  44b924:	3c02c000 	lui	v0,0xc000
  44b928:	00621024 	and	v0,v1,v0
  44b92c:	10400012 	beqz	v0,44b978 <quick_inI1_outR1_tail+0xf38>
  44b930:	00000000 	nop
	    st->nat_traversal = p1st->nat_traversal;
  44b934:	8fc20028 	lw	v0,40(s8)
  44b938:	00000000 	nop
  44b93c:	8c430264 	lw	v1,612(v0)
  44b940:	8fc207ec 	lw	v0,2028(s8)
  44b944:	00000000 	nop
  44b948:	ac430264 	sw	v1,612(v0)
	    nat_traversal_change_port_lookup(md, md->st);
  44b94c:	8fc40848 	lw	a0,2120(s8)
  44b950:	8fc20848 	lw	v0,2120(s8)
  44b954:	00000000 	nop
  44b958:	8c450098 	lw	a1,152(v0)
  44b95c:	8f9983f8 	lw	t9,-31752(gp)
  44b960:	00000000 	nop
  44b964:	0320f809 	jalr	t9
  44b968:	00000000 	nop
  44b96c:	8fdc0020 	lw	gp,32(s8)
  44b970:	10000004 	b	44b984 <quick_inI1_outR1_tail+0xf44>
  44b974:	00000000 	nop
	}
	else {
	    st->nat_traversal = 0;
  44b978:	8fc207ec 	lw	v0,2028(s8)
  44b97c:	00000000 	nop
  44b980:	ac400264 	sw	zero,612(v0)
	}
	if ((st->nat_traversal & NAT_T_DETECTED) &&
	    (st->nat_traversal & NAT_T_WITH_NATOA)) {
  44b984:	8fc207ec 	lw	v0,2028(s8)
  44b988:	00000000 	nop
  44b98c:	8c430264 	lw	v1,612(v0)
  44b990:	3c02c000 	lui	v0,0xc000
  44b994:	00621024 	and	v0,v1,v0
  44b998:	1040000f 	beqz	v0,44b9d8 <quick_inI1_outR1_tail+0xf98>
  44b99c:	00000000 	nop
  44b9a0:	8fc207ec 	lw	v0,2028(s8)
  44b9a4:	00000000 	nop
  44b9a8:	8c420264 	lw	v0,612(v0)
  44b9ac:	00000000 	nop
  44b9b0:	3042000e 	andi	v0,v0,0xe
  44b9b4:	10400008 	beqz	v0,44b9d8 <quick_inI1_outR1_tail+0xf98>
  44b9b8:	00000000 	nop
	    nat_traversal_natoa_lookup(md);
  44b9bc:	8fc40848 	lw	a0,2120(s8)
  44b9c0:	8f998910 	lw	t9,-30448(gp)
  44b9c4:	00000000 	nop
  44b9c8:	0320f809 	jalr	t9
  44b9cc:	00000000 	nop
  44b9d0:	8fdc0020 	lw	gp,32(s8)
  44b9d4:	00000000 	nop
	}
#endif

	/* Start the output packet.
	 *
	 * proccess_packet() would automatically generate the HDR*
	 * payload if smc->first_out_payload is not ISAKMP_NEXT_NONE.
	 * We don't do this because we wish there to be no partially
	 * built output packet if we need to suspend for asynch DNS.
	 *
	 * We build the reply packet as we parse the message since
	 * the parse_ipsec_sa_body emits the reply SA
	 */

	/* HDR* out */
	echo_hdr(md, TRUE, ISAKMP_NEXT_HASH);
  44b9d8:	8fc40848 	lw	a0,2120(s8)
  44b9dc:	24050001 	li	a1,1
  44b9e0:	24060008 	li	a2,8
  44b9e4:	8f998194 	lw	t9,-32364(gp)
  44b9e8:	00000000 	nop
  44b9ec:	0320f809 	jalr	t9
  44b9f0:	00000000 	nop
  44b9f4:	8fdc0020 	lw	gp,32(s8)
  44b9f8:	00000000 	nop

	/* HASH(2) out -- first pass */
	START_HASH_PAYLOAD(&md->rbody, ISAKMP_NEXT_SA);
  44b9fc:	8fc20848 	lw	v0,2120(s8)
  44ba00:	00000000 	nop
  44ba04:	244200bc 	addiu	v0,v0,188
  44ba08:	24040001 	li	a0,1
  44ba0c:	8f858924 	lw	a1,-30428(gp)
  44ba10:	00403021 	move	a2,v0
  44ba14:	27c707c0 	addiu	a3,s8,1984
  44ba18:	8f9986d4 	lw	t9,-31020(gp)
  44ba1c:	00000000 	nop
  44ba20:	0320f809 	jalr	t9
  44ba24:	00000000 	nop
  44ba28:	8fdc0020 	lw	gp,32(s8)
  44ba2c:	14400004 	bnez	v0,44ba40 <quick_inI1_outR1_tail+0x1000>
  44ba30:	00000000 	nop
  44ba34:	24020003 	li	v0,3
  44ba38:	10000270 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44ba3c:	00000000 	nop
  44ba40:	8fc207d0 	lw	v0,2000(s8)
  44ba44:	00000000 	nop
  44ba48:	afc2003c 	sw	v0,60(s8)
  44ba4c:	8fc207ec 	lw	v0,2028(s8)
  44ba50:	00000000 	nop
  44ba54:	8c420028 	lw	v0,40(v0)
  44ba58:	00000000 	nop
  44ba5c:	8c44000c 	lw	a0,12(v0)
  44ba60:	27c507c0 	addiu	a1,s8,1984
  44ba64:	8f86802c 	lw	a2,-32724(gp)
  44ba68:	00000000 	nop
  44ba6c:	24c6e548 	addiu	a2,a2,-6840
  44ba70:	8f998a20 	lw	t9,-30176(gp)
  44ba74:	00000000 	nop
  44ba78:	0320f809 	jalr	t9
  44ba7c:	00000000 	nop
  44ba80:	8fdc0020 	lw	gp,32(s8)
  44ba84:	14400004 	bnez	v0,44ba98 <quick_inI1_outR1_tail+0x1058>
  44ba88:	00000000 	nop
  44ba8c:	24020003 	li	v0,3
  44ba90:	1000025a 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44ba94:	00000000 	nop
  44ba98:	27c407c0 	addiu	a0,s8,1984
  44ba9c:	8f998228 	lw	t9,-32216(gp)
  44baa0:	00000000 	nop
  44baa4:	0320f809 	jalr	t9
  44baa8:	00000000 	nop
  44baac:	8fdc0020 	lw	gp,32(s8)
  44bab0:	8fc20848 	lw	v0,2120(s8)
  44bab4:	00000000 	nop
  44bab8:	244200bc 	addiu	v0,v0,188
  44babc:	8c420010 	lw	v0,16(v0)
  44bac0:	00000000 	nop
  44bac4:	afc20040 	sw	v0,64(s8)

	/* process SA (in and out) */
	{
	    struct payload_digest *const sapd = md->chain[ISAKMP_NEXT_SA];
  44bac8:	8fc20848 	lw	v0,2120(s8)
  44bacc:	00000000 	nop
  44bad0:	8c4204ac 	lw	v0,1196(v0)
  44bad4:	00000000 	nop
  44bad8:	afc207f0 	sw	v0,2032(s8)
	    pb_stream r_sa_pbs;
	    struct isakmp_sa sa = sapd->payload.sa;
  44badc:	8fc307f0 	lw	v1,2032(s8)
  44bae0:	00000000 	nop
  44bae4:	8c620020 	lw	v0,32(v1)
  44bae8:	00000000 	nop
  44baec:	afc207e0 	sw	v0,2016(s8)
  44baf0:	8c620024 	lw	v0,36(v1)
  44baf4:	00000000 	nop
  44baf8:	afc207e4 	sw	v0,2020(s8)

	    /* sa header is unchanged -- except for np */
#ifdef KENNY_INITIAL_CONTACT	    
	    loglog(RC_LOG_SERIOUS,"quick_inI1_outR1 p1st = %x, ic = %d", p1st, p1st->initial_contact);
  44bafc:	24040003 	li	a0,3
  44bb00:	8f85802c 	lw	a1,-32724(gp)
  44bb04:	00000000 	nop
  44bb08:	24a5f364 	addiu	a1,a1,-3228
  44bb0c:	8fc60028 	lw	a2,40(s8)
  44bb10:	8fc20028 	lw	v0,40(s8)
  44bb14:	00000000 	nop
  44bb18:	8c4702a0 	lw	a3,672(v0)
  44bb1c:	8f998c48 	lw	t9,-29624(gp)
  44bb20:	00000000 	nop
  44bb24:	0320f809 	jalr	t9
  44bb28:	00000000 	nop
  44bb2c:	8fdc0020 	lw	gp,32(s8)
  44bb30:	00000000 	nop
	    if ( p1st->initial_contact == TRUE)
  44bb34:	8fc20028 	lw	v0,40(s8)
  44bb38:	00000000 	nop
  44bb3c:	8c4302a0 	lw	v1,672(v0)
  44bb40:	24020001 	li	v0,1
  44bb44:	14620005 	bne	v1,v0,44bb5c <quick_inI1_outR1_tail+0x111c>
  44bb48:	00000000 	nop
	    	sa.isasa_np = ISAKMP_NEXT_N;
  44bb4c:	2402000b 	li	v0,11
  44bb50:	a3c207e0 	sb	v0,2016(s8)
  44bb54:	10000003 	b	44bb64 <quick_inI1_outR1_tail+0x1124>
  44bb58:	00000000 	nop
	    else	
	    	sa.isasa_np = ISAKMP_NEXT_NONCE;
  44bb5c:	2402000a 	li	v0,10
  44bb60:	a3c207e0 	sb	v0,2016(s8)
#else	    
	    sa.isasa_np = ISAKMP_NEXT_NONCE;
#endif	    
	    if (!out_struct(&sa, &isakmp_sa_desc, &md->rbody, &r_sa_pbs))
  44bb64:	8fc20848 	lw	v0,2120(s8)
  44bb68:	00000000 	nop
  44bb6c:	244200bc 	addiu	v0,v0,188
  44bb70:	27c407e0 	addiu	a0,s8,2016
  44bb74:	8f858594 	lw	a1,-31340(gp)
  44bb78:	00403021 	move	a2,v0
  44bb7c:	27c700f8 	addiu	a3,s8,248
  44bb80:	8f998ba0 	lw	t9,-29792(gp)
  44bb84:	00000000 	nop
  44bb88:	0320f809 	jalr	t9
  44bb8c:	00000000 	nop
  44bb90:	8fdc0020 	lw	gp,32(s8)
  44bb94:	14400004 	bnez	v0,44bba8 <quick_inI1_outR1_tail+0x1168>
  44bb98:	00000000 	nop
		return STF_INTERNAL_ERROR;
  44bb9c:	24020003 	li	v0,3
  44bba0:	10000216 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44bba4:	00000000 	nop

	    /* parse and accept body */
	    st->st_pfs_group = &unset_group;
  44bba8:	8f838b40 	lw	v1,-29888(gp)
  44bbac:	8fc207ec 	lw	v0,2028(s8)
  44bbb0:	00000000 	nop
  44bbb4:	ac4300c8 	sw	v1,200(v0)
	    RETURN_STF_FAILURE(parse_ipsec_sa_body(&sapd->pbs
  44bbb8:	8fc207f0 	lw	v0,2032(s8)
  44bbbc:	00000000 	nop
  44bbc0:	24430020 	addiu	v1,v0,32
  44bbc4:	8fc207ec 	lw	v0,2028(s8)
  44bbc8:	00000000 	nop
  44bbcc:	afa20010 	sw	v0,16(sp)
  44bbd0:	8fc407f0 	lw	a0,2032(s8)
  44bbd4:	00602821 	move	a1,v1
  44bbd8:	27c600f8 	addiu	a2,s8,248
  44bbdc:	00003821 	move	a3,zero
  44bbe0:	8f9988e8 	lw	t9,-30488(gp)
  44bbe4:	00000000 	nop
  44bbe8:	0320f809 	jalr	t9
  44bbec:	00000000 	nop
  44bbf0:	8fdc0020 	lw	gp,32(s8)
  44bbf4:	afc207e8 	sw	v0,2024(s8)
  44bbf8:	8fc207e8 	lw	v0,2024(s8)
  44bbfc:	00000000 	nop
  44bc00:	10400006 	beqz	v0,44bc1c <quick_inI1_outR1_tail+0x11dc>
  44bc04:	00000000 	nop
  44bc08:	8fc207e8 	lw	v0,2024(s8)
  44bc0c:	00000000 	nop
  44bc10:	24420004 	addiu	v0,v0,4
  44bc14:	100001f9 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44bc18:	00000000 	nop
		    , &sapd->payload.sa, &r_sa_pbs, FALSE, st));
	}

	passert(st->st_pfs_group != &unset_group);
  44bc1c:	8fc207ec 	lw	v0,2028(s8)
  44bc20:	00000000 	nop
  44bc24:	8c4300c8 	lw	v1,200(v0)
  44bc28:	8f828b40 	lw	v0,-29888(gp)
  44bc2c:	00000000 	nop
  44bc30:	1462000e 	bne	v1,v0,44bc6c <quick_inI1_outR1_tail+0x122c>
  44bc34:	00000000 	nop
  44bc38:	8f84802c 	lw	a0,-32724(gp)
  44bc3c:	00000000 	nop
  44bc40:	2484f388 	addiu	a0,a0,-3192
  44bc44:	8f85802c 	lw	a1,-32724(gp)
  44bc48:	00000000 	nop
  44bc4c:	24a5d59c 	addiu	a1,a1,-10852
  44bc50:	240613c0 	li	a2,5056
  44bc54:	8f998bb8 	lw	t9,-29768(gp)
  44bc58:	00000000 	nop
  44bc5c:	0320f809 	jalr	t9
  44bc60:	00000000 	nop
  44bc64:	8fdc0020 	lw	gp,32(s8)
  44bc68:	00000000 	nop

	if ((st->st_policy & POLICY_PFS) && st->st_pfs_group == NULL)
  44bc6c:	8fc207ec 	lw	v0,2028(s8)
  44bc70:	00000000 	nop
  44bc74:	8c4400d8 	lw	a0,216(v0)
  44bc78:	8c4500dc 	lw	a1,220(v0)
  44bc7c:	24020000 	li	v0,0
  44bc80:	24030040 	li	v1,64
  44bc84:	00822024 	and	a0,a0,v0
  44bc88:	00a32824 	and	a1,a1,v1
  44bc8c:	00801021 	move	v0,a0
  44bc90:	00451025 	or	v0,v0,a1
  44bc94:	10400014 	beqz	v0,44bce8 <quick_inI1_outR1_tail+0x12a8>
  44bc98:	00000000 	nop
  44bc9c:	8fc207ec 	lw	v0,2028(s8)
  44bca0:	00000000 	nop
  44bca4:	8c4200c8 	lw	v0,200(v0)
  44bca8:	00000000 	nop
  44bcac:	1440000e 	bnez	v0,44bce8 <quick_inI1_outR1_tail+0x12a8>
  44bcb0:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "we require PFS but Quick I1 SA specifies no GROUP_DESCRIPTION");
  44bcb4:	24040003 	li	a0,3
  44bcb8:	8f85802c 	lw	a1,-32724(gp)
  44bcbc:	00000000 	nop
  44bcc0:	24a5f3ac 	addiu	a1,a1,-3156
  44bcc4:	8f998c48 	lw	t9,-29624(gp)
  44bcc8:	00000000 	nop
  44bccc:	0320f809 	jalr	t9
  44bcd0:	00000000 	nop
  44bcd4:	8fdc0020 	lw	gp,32(s8)
  44bcd8:	00000000 	nop
	    return STF_FAIL + NO_PROPOSAL_CHOSEN;	/* ??? */
  44bcdc:	24020012 	li	v0,18
  44bce0:	100001c6 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44bce4:	00000000 	nop
	}

#ifdef KENNY_INITIAL_CONTACT
    /* IC out */
    {
   	if (p1st->initial_contact == TRUE) {
  44bce8:	8fc20028 	lw	v0,40(s8)
  44bcec:	00000000 	nop
  44bcf0:	8c4302a0 	lw	v1,672(v0)
  44bcf4:	24020001 	li	v0,1
  44bcf8:	1462004a 	bne	v1,v0,44be24 <quick_inI1_outR1_tail+0x13e4>
  44bcfc:	00000000 	nop
            // build IC payload
		pb_stream not_pbs;
		struct isakmp_notification isan;

    		loglog(RC_LOG_SERIOUS, "quick_I1_R1: build IC payload");
  44bd00:	24040003 	li	a0,3
  44bd04:	8f85802c 	lw	a1,-32724(gp)
  44bd08:	00000000 	nop
  44bd0c:	24a5f3ec 	addiu	a1,a1,-3092
  44bd10:	8f998c48 	lw	t9,-29624(gp)
  44bd14:	00000000 	nop
  44bd18:	0320f809 	jalr	t9
  44bd1c:	00000000 	nop
  44bd20:	8fdc0020 	lw	gp,32(s8)
  44bd24:	00000000 	nop
		isan.isan_doi = ISAKMP_DOI_IPSEC;
  44bd28:	24020001 	li	v0,1
  44bd2c:	afc207a4 	sw	v0,1956(s8)
		isan.isan_np = ISAKMP_NEXT_NONCE;
  44bd30:	2402000a 	li	v0,10
  44bd34:	a3c207a0 	sb	v0,1952(s8)
		isan.isan_type = IPSEC_INITIAL_CONTACT;
  44bd38:	24026002 	li	v0,24578
  44bd3c:	a7c207aa 	sh	v0,1962(s8)
		isan.isan_spisize = 16;
  44bd40:	24020010 	li	v0,16
  44bd44:	a3c207a9 	sb	v0,1961(s8)
		isan.isan_protoid = PROTO_ISAKMP; 
  44bd48:	24020001 	li	v0,1
  44bd4c:	a3c207a8 	sb	v0,1960(s8)

		if (!out_struct(&isan, &isakmp_notification_desc, &md->rbody, &not_pbs)
	    		|| !out_raw(md->hdr.isa_icookie, 16, &not_pbs, "spi"))
  44bd50:	8fc20848 	lw	v0,2120(s8)
  44bd54:	00000000 	nop
  44bd58:	244200bc 	addiu	v0,v0,188
  44bd5c:	27c407a0 	addiu	a0,s8,1952
  44bd60:	8f85812c 	lw	a1,-32468(gp)
  44bd64:	00403021 	move	a2,v0
  44bd68:	27c70118 	addiu	a3,s8,280
  44bd6c:	8f998ba0 	lw	t9,-29792(gp)
  44bd70:	00000000 	nop
  44bd74:	0320f809 	jalr	t9
  44bd78:	00000000 	nop
  44bd7c:	8fdc0020 	lw	gp,32(s8)
  44bd80:	10400011 	beqz	v0,44bdc8 <quick_inI1_outR1_tail+0x1388>
  44bd84:	00000000 	nop
  44bd88:	8fc20848 	lw	v0,2120(s8)
  44bd8c:	00000000 	nop
  44bd90:	24420070 	addiu	v0,v0,112
  44bd94:	00402021 	move	a0,v0
  44bd98:	24050010 	li	a1,16
  44bd9c:	27c60118 	addiu	a2,s8,280
  44bda0:	8f87802c 	lw	a3,-32724(gp)
  44bda4:	00000000 	nop
  44bda8:	24e7d7e4 	addiu	a3,a3,-10268
  44bdac:	8f998308 	lw	t9,-31992(gp)
  44bdb0:	00000000 	nop
  44bdb4:	0320f809 	jalr	t9
  44bdb8:	00000000 	nop
  44bdbc:	8fdc0020 	lw	gp,32(s8)
  44bdc0:	1440000e 	bnez	v0,44bdfc <quick_inI1_outR1_tail+0x13bc>
  44bdc4:	00000000 	nop
	    		impossible();
  44bdc8:	8f84802c 	lw	a0,-32724(gp)
  44bdcc:	00000000 	nop
  44bdd0:	2484d590 	addiu	a0,a0,-10864
  44bdd4:	8f85802c 	lw	a1,-32724(gp)
  44bdd8:	00000000 	nop
  44bddc:	24a5d59c 	addiu	a1,a1,-10852
  44bde0:	240613d9 	li	a2,5081
  44bde4:	8f998bb8 	lw	t9,-29768(gp)
  44bde8:	00000000 	nop
  44bdec:	0320f809 	jalr	t9
  44bdf0:	00000000 	nop
  44bdf4:	8fdc0020 	lw	gp,32(s8)
  44bdf8:	00000000 	nop
		close_output_pbs(&not_pbs);
  44bdfc:	27c40118 	addiu	a0,s8,280
  44be00:	8f998228 	lw	t9,-32216(gp)
  44be04:	00000000 	nop
  44be08:	0320f809 	jalr	t9
  44be0c:	00000000 	nop
  44be10:	8fdc0020 	lw	gp,32(s8)
  44be14:	00000000 	nop

		p1st->initial_contact = FALSE;
  44be18:	8fc20028 	lw	v0,40(s8)
  44be1c:	00000000 	nop
  44be20:	ac4002a0 	sw	zero,672(v0)

	}

    }
#endif //KENNY_INITIAL_CONTACT

	/* Ni in */
	RETURN_STF_FAILURE(accept_nonce(md, &st->st_ni, "Ni"));
  44be24:	8fc207ec 	lw	v0,2028(s8)
  44be28:	00000000 	nop
  44be2c:	244200f8 	addiu	v0,v0,248
  44be30:	8fc40848 	lw	a0,2120(s8)
  44be34:	00402821 	move	a1,v0
  44be38:	8f86802c 	lw	a2,-32724(gp)
  44be3c:	00000000 	nop
  44be40:	24c6dd38 	addiu	a2,a2,-8904
  44be44:	8f998034 	lw	t9,-32716(gp)
  44be48:	00000000 	nop
  44be4c:	2739093c 	addiu	t9,t9,2364
  44be50:	00000000 	nop
  44be54:	0320f809 	jalr	t9
  44be58:	00000000 	nop
  44be5c:	8fdc0020 	lw	gp,32(s8)
  44be60:	afc207e8 	sw	v0,2024(s8)
  44be64:	8fc207e8 	lw	v0,2024(s8)
  44be68:	00000000 	nop
  44be6c:	10400006 	beqz	v0,44be88 <quick_inI1_outR1_tail+0x1448>
  44be70:	00000000 	nop
  44be74:	8fc207e8 	lw	v0,2024(s8)
  44be78:	00000000 	nop
  44be7c:	24420004 	addiu	v0,v0,4
  44be80:	1000015e 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44be84:	00000000 	nop

	/* [ KE ] in (for PFS) */
	RETURN_STF_FAILURE(accept_PFS_KE(md, &st->st_gi, "Gi", "Quick Mode I1"));
  44be88:	8fc207ec 	lw	v0,2028(s8)
  44be8c:	00000000 	nop
  44be90:	244200e8 	addiu	v0,v0,232
  44be94:	8fc40848 	lw	a0,2120(s8)
  44be98:	00402821 	move	a1,v0
  44be9c:	8f86802c 	lw	a2,-32724(gp)
  44bea0:	00000000 	nop
  44bea4:	24c6edc0 	addiu	a2,a2,-4672
  44bea8:	8f87802c 	lw	a3,-32724(gp)
  44beac:	00000000 	nop
  44beb0:	24e7f40c 	addiu	a3,a3,-3060
  44beb4:	8f998034 	lw	t9,-32716(gp)
  44beb8:	00000000 	nop
  44bebc:	27399ff0 	addiu	t9,t9,-24592
  44bec0:	00000000 	nop
  44bec4:	0320f809 	jalr	t9
  44bec8:	00000000 	nop
  44becc:	8fdc0020 	lw	gp,32(s8)
  44bed0:	afc207e8 	sw	v0,2024(s8)
  44bed4:	8fc207e8 	lw	v0,2024(s8)
  44bed8:	00000000 	nop
  44bedc:	10400006 	beqz	v0,44bef8 <quick_inI1_outR1_tail+0x14b8>
  44bee0:	00000000 	nop
  44bee4:	8fc207e8 	lw	v0,2024(s8)
  44bee8:	00000000 	nop
  44beec:	24420004 	addiu	v0,v0,4
  44bef0:	10000142 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44bef4:	00000000 	nop

	plog("responding to Quick Mode");
  44bef8:	8f84802c 	lw	a0,-32724(gp)
  44befc:	00000000 	nop
  44bf00:	2484f41c 	addiu	a0,a0,-3044
  44bf04:	8f998abc 	lw	t9,-30020(gp)
  44bf08:	00000000 	nop
  44bf0c:	0320f809 	jalr	t9
  44bf10:	00000000 	nop
  44bf14:	8fdc0020 	lw	gp,32(s8)
  44bf18:	00000000 	nop

	/**** finish reply packet: Nr [, KE ] [, IDci, IDcr ] ****/

	/* Nr out */
	if (!build_and_ship_nonce(&st->st_nr, &md->rbody
	, st->st_pfs_group != NULL? ISAKMP_NEXT_KE : id_pd != NULL? ISAKMP_NEXT_ID : ISAKMP_NEXT_NONE
	, "Nr"))
  44bf1c:	8fc207ec 	lw	v0,2028(s8)
  44bf20:	00000000 	nop
  44bf24:	24420110 	addiu	v0,v0,272
  44bf28:	afc20824 	sw	v0,2084(s8)
  44bf2c:	8fc20848 	lw	v0,2120(s8)
  44bf30:	00000000 	nop
  44bf34:	244200bc 	addiu	v0,v0,188
  44bf38:	afc20828 	sw	v0,2088(s8)
  44bf3c:	8fc207ec 	lw	v0,2028(s8)
  44bf40:	00000000 	nop
  44bf44:	8c4200c8 	lw	v0,200(v0)
  44bf48:	00000000 	nop
  44bf4c:	1440000c 	bnez	v0,44bf80 <quick_inI1_outR1_tail+0x1540>
  44bf50:	00000000 	nop
  44bf54:	8fc20030 	lw	v0,48(s8)
  44bf58:	00000000 	nop
  44bf5c:	10400005 	beqz	v0,44bf74 <quick_inI1_outR1_tail+0x1534>
  44bf60:	00000000 	nop
  44bf64:	24020005 	li	v0,5
  44bf68:	afc2082c 	sw	v0,2092(s8)
  44bf6c:	10000006 	b	44bf88 <quick_inI1_outR1_tail+0x1548>
  44bf70:	00000000 	nop
  44bf74:	afc0082c 	sw	zero,2092(s8)
  44bf78:	10000003 	b	44bf88 <quick_inI1_outR1_tail+0x1548>
  44bf7c:	00000000 	nop
  44bf80:	24020004 	li	v0,4
  44bf84:	afc2082c 	sw	v0,2092(s8)
  44bf88:	8fc40824 	lw	a0,2084(s8)
  44bf8c:	8fc50828 	lw	a1,2088(s8)
  44bf90:	8fc6082c 	lw	a2,2092(s8)
  44bf94:	8f87802c 	lw	a3,-32724(gp)
  44bf98:	00000000 	nop
  44bf9c:	24e7edc4 	addiu	a3,a3,-4668
  44bfa0:	8f998034 	lw	t9,-32716(gp)
  44bfa4:	00000000 	nop
  44bfa8:	2739a1a4 	addiu	t9,t9,-24156
  44bfac:	00000000 	nop
  44bfb0:	0320f809 	jalr	t9
  44bfb4:	00000000 	nop
  44bfb8:	8fdc0020 	lw	gp,32(s8)
  44bfbc:	14400004 	bnez	v0,44bfd0 <quick_inI1_outR1_tail+0x1590>
  44bfc0:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  44bfc4:	24020003 	li	v0,3
  44bfc8:	1000010c 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44bfcc:	00000000 	nop

	/* [ KE ] out (for PFS) */

	if (st->st_pfs_group != NULL)
  44bfd0:	8fc207ec 	lw	v0,2028(s8)
  44bfd4:	00000000 	nop
  44bfd8:	8c4200c8 	lw	v0,200(v0)
  44bfdc:	00000000 	nop
  44bfe0:	10400033 	beqz	v0,44c0b0 <quick_inI1_outR1_tail+0x1670>
  44bfe4:	00000000 	nop
	{
	    if (!build_and_ship_KE(st, &st->st_gr, st->st_pfs_group
	    , &md->rbody, id_pd != NULL? ISAKMP_NEXT_ID : ISAKMP_NEXT_NONE))
  44bfe8:	8fc207ec 	lw	v0,2028(s8)
  44bfec:	00000000 	nop
  44bff0:	24420100 	addiu	v0,v0,256
  44bff4:	afc20830 	sw	v0,2096(s8)
  44bff8:	8fc20848 	lw	v0,2120(s8)
  44bffc:	00000000 	nop
  44c000:	244200bc 	addiu	v0,v0,188
  44c004:	afc20834 	sw	v0,2100(s8)
  44c008:	8fc20030 	lw	v0,48(s8)
  44c00c:	00000000 	nop
  44c010:	10400005 	beqz	v0,44c028 <quick_inI1_outR1_tail+0x15e8>
  44c014:	00000000 	nop
  44c018:	24020005 	li	v0,5
  44c01c:	afa20010 	sw	v0,16(sp)
  44c020:	10000002 	b	44c02c <quick_inI1_outR1_tail+0x15ec>
  44c024:	00000000 	nop
  44c028:	afa00010 	sw	zero,16(sp)
  44c02c:	8fc407ec 	lw	a0,2028(s8)
  44c030:	8fc50830 	lw	a1,2096(s8)
  44c034:	8fc207ec 	lw	v0,2028(s8)
  44c038:	00000000 	nop
  44c03c:	8c4600c8 	lw	a2,200(v0)
  44c040:	8fc70834 	lw	a3,2100(s8)
  44c044:	8f998034 	lw	t9,-32716(gp)
  44c048:	00000000 	nop
  44c04c:	27399b7c 	addiu	t9,t9,-25732
  44c050:	00000000 	nop
  44c054:	0320f809 	jalr	t9
  44c058:	00000000 	nop
  44c05c:	8fdc0020 	lw	gp,32(s8)
  44c060:	14400004 	bnez	v0,44c074 <quick_inI1_outR1_tail+0x1634>
  44c064:	00000000 	nop
		    return STF_INTERNAL_ERROR;
  44c068:	24020003 	li	v0,3
  44c06c:	100000e3 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44c070:	00000000 	nop

	    /* MPZ-Operations might be done after sending the packet... */

    #ifndef DODGE_DH_MISSING_ZERO_BUG
	    compute_dh_shared(st, st->st_gi, st->st_pfs_group);
  44c074:	8fc207ec 	lw	v0,2028(s8)
  44c078:	8fc407ec 	lw	a0,2028(s8)
  44c07c:	8c4500e8 	lw	a1,232(v0)
  44c080:	8c4600ec 	lw	a2,236(v0)
  44c084:	8fc207ec 	lw	v0,2028(s8)
  44c088:	00000000 	nop
  44c08c:	8c4700c8 	lw	a3,200(v0)
  44c090:	8f998034 	lw	t9,-32716(gp)
  44c094:	00000000 	nop
  44c098:	273997dc 	addiu	t9,t9,-26660
  44c09c:	00000000 	nop
  44c0a0:	0320f809 	jalr	t9
  44c0a4:	00000000 	nop
  44c0a8:	8fdc0020 	lw	gp,32(s8)
  44c0ac:	00000000 	nop
    #endif
	}

	/* [ IDci, IDcr ] out */
	if  (id_pd != NULL)
  44c0b0:	8fc20030 	lw	v0,48(s8)
  44c0b4:	00000000 	nop
  44c0b8:	1040004e 	beqz	v0,44c1f4 <quick_inI1_outR1_tail+0x17b4>
  44c0bc:	00000000 	nop
	{
	    struct isakmp_ipsec_id *p = (void *)md->rbody.cur;	/* UGH! */
  44c0c0:	8fc20848 	lw	v0,2120(s8)
  44c0c4:	00000000 	nop
  44c0c8:	8c4200cc 	lw	v0,204(v0)
  44c0cc:	00000000 	nop
  44c0d0:	afc207e8 	sw	v0,2024(s8)

	    if (!out_raw(id_pd->pbs.start, pbs_room(&id_pd->pbs), &md->rbody, "IDci"))
  44c0d4:	8fc20030 	lw	v0,48(s8)
  44c0d8:	00000000 	nop
  44c0dc:	8c430014 	lw	v1,20(v0)
  44c0e0:	8fc20030 	lw	v0,48(s8)
  44c0e4:	00000000 	nop
  44c0e8:	8c42000c 	lw	v0,12(v0)
  44c0ec:	00000000 	nop
  44c0f0:	00622823 	subu	a1,v1,v0
  44c0f4:	8fc20848 	lw	v0,2120(s8)
  44c0f8:	00000000 	nop
  44c0fc:	244300bc 	addiu	v1,v0,188
  44c100:	8fc20030 	lw	v0,48(s8)
  44c104:	00000000 	nop
  44c108:	8c44000c 	lw	a0,12(v0)
  44c10c:	00603021 	move	a2,v1
  44c110:	8f87802c 	lw	a3,-32724(gp)
  44c114:	00000000 	nop
  44c118:	24e7f438 	addiu	a3,a3,-3016
  44c11c:	8f998308 	lw	t9,-31992(gp)
  44c120:	00000000 	nop
  44c124:	0320f809 	jalr	t9
  44c128:	00000000 	nop
  44c12c:	8fdc0020 	lw	gp,32(s8)
  44c130:	14400004 	bnez	v0,44c144 <quick_inI1_outR1_tail+0x1704>
  44c134:	00000000 	nop
		return STF_INTERNAL_ERROR;
  44c138:	24020003 	li	v0,3
  44c13c:	100000af 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44c140:	00000000 	nop
	    p->isaiid_np = ISAKMP_NEXT_ID;
  44c144:	24030005 	li	v1,5
  44c148:	8fc207e8 	lw	v0,2024(s8)
  44c14c:	00000000 	nop
  44c150:	a0430000 	sb	v1,0(v0)

	    p = (void *)md->rbody.cur;	/* UGH! */
  44c154:	8fc20848 	lw	v0,2120(s8)
  44c158:	00000000 	nop
  44c15c:	8c4200cc 	lw	v0,204(v0)
  44c160:	00000000 	nop
  44c164:	afc207e8 	sw	v0,2024(s8)

	    if (!out_raw(id_pd->next->pbs.start, pbs_room(&id_pd->next->pbs), &md->rbody, "IDcr"))
  44c168:	8fc20030 	lw	v0,48(s8)
  44c16c:	00000000 	nop
  44c170:	8c44002c 	lw	a0,44(v0)
  44c174:	8fc20030 	lw	v0,48(s8)
  44c178:	00000000 	nop
  44c17c:	8c43002c 	lw	v1,44(v0)
  44c180:	8fc20030 	lw	v0,48(s8)
  44c184:	00000000 	nop
  44c188:	8c42002c 	lw	v0,44(v0)
  44c18c:	8c630014 	lw	v1,20(v1)
  44c190:	8c42000c 	lw	v0,12(v0)
  44c194:	00000000 	nop
  44c198:	00621823 	subu	v1,v1,v0
  44c19c:	8fc20848 	lw	v0,2120(s8)
  44c1a0:	00000000 	nop
  44c1a4:	244200bc 	addiu	v0,v0,188
  44c1a8:	8c84000c 	lw	a0,12(a0)
  44c1ac:	00602821 	move	a1,v1
  44c1b0:	00403021 	move	a2,v0
  44c1b4:	8f87802c 	lw	a3,-32724(gp)
  44c1b8:	00000000 	nop
  44c1bc:	24e7f440 	addiu	a3,a3,-3008
  44c1c0:	8f998308 	lw	t9,-31992(gp)
  44c1c4:	00000000 	nop
  44c1c8:	0320f809 	jalr	t9
  44c1cc:	00000000 	nop
  44c1d0:	8fdc0020 	lw	gp,32(s8)
  44c1d4:	14400004 	bnez	v0,44c1e8 <quick_inI1_outR1_tail+0x17a8>
  44c1d8:	00000000 	nop
		return STF_INTERNAL_ERROR;
  44c1dc:	24020003 	li	v0,3
  44c1e0:	10000086 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44c1e4:	00000000 	nop
	    p->isaiid_np = ISAKMP_NEXT_NONE;
  44c1e8:	8fc207e8 	lw	v0,2024(s8)
  44c1ec:	00000000 	nop
  44c1f0:	a0400000 	sb	zero,0(v0)
	}

#ifdef NAT_TRAVERSAL
	if ((st->nat_traversal & NAT_T_WITH_NATOA) &&
	    (st->nat_traversal & LELEM(NAT_TRAVERSAL_NAT_BHND_ME)) &&
	    (st->st_esp.attrs.encapsulation == ENCAPSULATION_MODE_TRANSPORT)) {
  44c1f4:	8fc207ec 	lw	v0,2028(s8)
  44c1f8:	00000000 	nop
  44c1fc:	8c420264 	lw	v0,612(v0)
  44c200:	00000000 	nop
  44c204:	3042000e 	andi	v0,v0,0xe
  44c208:	10400020 	beqz	v0,44c28c <quick_inI1_outR1_tail+0x184c>
  44c20c:	00000000 	nop
  44c210:	8fc207ec 	lw	v0,2028(s8)
  44c214:	00000000 	nop
  44c218:	8c430264 	lw	v1,612(v0)
  44c21c:	3c024000 	lui	v0,0x4000
  44c220:	00621024 	and	v0,v1,v0
  44c224:	10400019 	beqz	v0,44c28c <quick_inI1_outR1_tail+0x184c>
  44c228:	00000000 	nop
  44c22c:	8fc207ec 	lw	v0,2028(s8)
  44c230:	00000000 	nop
  44c234:	9443007c 	lhu	v1,124(v0)
  44c238:	24020002 	li	v0,2
  44c23c:	14620013 	bne	v1,v0,44c28c <quick_inI1_outR1_tail+0x184c>
  44c240:	00000000 	nop
	    /** Send NAT-OA if our address is NATed and if we use Transport Mode */
	    if (!nat_traversal_add_natoa(ISAKMP_NEXT_NONE, &md->rbody, md->st)) {
  44c244:	8fc20848 	lw	v0,2120(s8)
  44c248:	00000000 	nop
  44c24c:	244200bc 	addiu	v0,v0,188
  44c250:	00002021 	move	a0,zero
  44c254:	00402821 	move	a1,v0
  44c258:	8fc20848 	lw	v0,2120(s8)
  44c25c:	00000000 	nop
  44c260:	8c460098 	lw	a2,152(v0)
  44c264:	8f998984 	lw	t9,-30332(gp)
  44c268:	00000000 	nop
  44c26c:	0320f809 	jalr	t9
  44c270:	00000000 	nop
  44c274:	8fdc0020 	lw	gp,32(s8)
  44c278:	14400004 	bnez	v0,44c28c <quick_inI1_outR1_tail+0x184c>
  44c27c:	00000000 	nop
		return STF_INTERNAL_ERROR;
  44c280:	24020003 	li	v0,3
  44c284:	1000005d 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44c288:	00000000 	nop
	    }
	}
	if ((st->nat_traversal & NAT_T_DETECTED) &&
	    (st->st_esp.attrs.encapsulation == ENCAPSULATION_MODE_TRANSPORT) &&
	    (c->that.has_client)) {
  44c28c:	8fc207ec 	lw	v0,2028(s8)
  44c290:	00000000 	nop
  44c294:	8c430264 	lw	v1,612(v0)
  44c298:	3c02c000 	lui	v0,0xc000
  44c29c:	00621024 	and	v0,v1,v0
  44c2a0:	1040001e 	beqz	v0,44c31c <quick_inI1_outR1_tail+0x18dc>
  44c2a4:	00000000 	nop
  44c2a8:	8fc207ec 	lw	v0,2028(s8)
  44c2ac:	00000000 	nop
  44c2b0:	9443007c 	lhu	v1,124(v0)
  44c2b4:	24020002 	li	v0,2
  44c2b8:	14620018 	bne	v1,v0,44c31c <quick_inI1_outR1_tail+0x18dc>
  44c2bc:	00000000 	nop
  44c2c0:	8fc2002c 	lw	v0,44(s8)
  44c2c4:	00000000 	nop
  44c2c8:	8c420164 	lw	v0,356(v0)
  44c2cc:	00000000 	nop
  44c2d0:	10400012 	beqz	v0,44c31c <quick_inI1_outR1_tail+0x18dc>
  44c2d4:	00000000 	nop
	    /** Remove client **/
	    addrtosubnet(&c->that.host_addr, &c->that.client);
  44c2d8:	8fc2002c 	lw	v0,44(s8)
  44c2dc:	00000000 	nop
  44c2e0:	24430108 	addiu	v1,v0,264
  44c2e4:	8fc2002c 	lw	v0,44(s8)
  44c2e8:	00000000 	nop
  44c2ec:	24420140 	addiu	v0,v0,320
  44c2f0:	00602021 	move	a0,v1
  44c2f4:	00402821 	move	a1,v0
  44c2f8:	8f998afc 	lw	t9,-29956(gp)
  44c2fc:	00000000 	nop
  44c300:	0320f809 	jalr	t9
  44c304:	00000000 	nop
  44c308:	8fdc0020 	lw	gp,32(s8)
  44c30c:	00000000 	nop
	    c->that.has_client = FALSE;
  44c310:	8fc2002c 	lw	v0,44(s8)
  44c314:	00000000 	nop
  44c318:	ac400164 	sw	zero,356(v0)
	}
#endif

	/* Compute reply HASH(2) and insert in output */
	(void)quick_mode_hash12(r_hashval, r_hash_start, md->rbody.cur
  44c31c:	8fc207ec 	lw	v0,2028(s8)
  44c320:	00000000 	nop
  44c324:	244200e0 	addiu	v0,v0,224
  44c328:	afa20010 	sw	v0,16(sp)
  44c32c:	24020001 	li	v0,1
  44c330:	afa20014 	sw	v0,20(sp)
  44c334:	8fc4003c 	lw	a0,60(s8)
  44c338:	8fc50040 	lw	a1,64(s8)
  44c33c:	8fc20848 	lw	v0,2120(s8)
  44c340:	00000000 	nop
  44c344:	8c4600cc 	lw	a2,204(v0)
  44c348:	8fc707ec 	lw	a3,2028(s8)
  44c34c:	8f998034 	lw	t9,-32716(gp)
  44c350:	00000000 	nop
  44c354:	27390e0c 	addiu	t9,t9,3596
  44c358:	00000000 	nop
  44c35c:	0320f809 	jalr	t9
  44c360:	00000000 	nop
  44c364:	8fdc0020 	lw	gp,32(s8)
  44c368:	00000000 	nop
	    , st, &st->st_msgid, TRUE);

	/* Derive new keying material */
	compute_keymats(st);
  44c36c:	8fc407ec 	lw	a0,2028(s8)
  44c370:	8f998034 	lw	t9,-32716(gp)
  44c374:	00000000 	nop
  44c378:	27394e00 	addiu	t9,t9,19968
  44c37c:	00000000 	nop
  44c380:	0320f809 	jalr	t9
  44c384:	00000000 	nop
  44c388:	8fdc0020 	lw	gp,32(s8)
  44c38c:	00000000 	nop

	/* Tell the kernel to establish the new inbound SA
	 * (unless the commit bit is set -- which we don't support).
	 * We do this before any state updating so that
	 * failure won't look like success.
	 */
	if (!install_inbound_ipsec_sa(st))
  44c390:	8fc407ec 	lw	a0,2028(s8)
  44c394:	8f998830 	lw	t9,-30672(gp)
  44c398:	00000000 	nop
  44c39c:	0320f809 	jalr	t9
  44c3a0:	00000000 	nop
  44c3a4:	8fdc0020 	lw	gp,32(s8)
  44c3a8:	14400004 	bnez	v0,44c3bc <quick_inI1_outR1_tail+0x197c>
  44c3ac:	00000000 	nop
	    return STF_INTERNAL_ERROR;	/* ??? we may be partly committed */
  44c3b0:	24020003 	li	v0,3
  44c3b4:	10000011 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44c3b8:	00000000 	nop

	/* encrypt message, except for fixed part of header */

	if (!encrypt_message(&md->rbody, st))
  44c3bc:	8fc20848 	lw	v0,2120(s8)
  44c3c0:	00000000 	nop
  44c3c4:	244200bc 	addiu	v0,v0,188
  44c3c8:	00402021 	move	a0,v0
  44c3cc:	8fc507ec 	lw	a1,2028(s8)
  44c3d0:	8f99885c 	lw	t9,-30628(gp)
  44c3d4:	00000000 	nop
  44c3d8:	0320f809 	jalr	t9
  44c3dc:	00000000 	nop
  44c3e0:	8fdc0020 	lw	gp,32(s8)
  44c3e4:	14400004 	bnez	v0,44c3f8 <quick_inI1_outR1_tail+0x19b8>
  44c3e8:	00000000 	nop
	    return STF_INTERNAL_ERROR;	/* ??? we may be partly committed */
  44c3ec:	24020003 	li	v0,3
  44c3f0:	10000002 	b	44c3fc <quick_inI1_outR1_tail+0x19bc>
  44c3f4:	00000000 	nop

	return STF_OK;
  44c3f8:	24020002 	li	v0,2
    }
}
  44c3fc:	03c0e821 	move	sp,s8
  44c400:	8fbf0840 	lw	ra,2112(sp)
  44c404:	8fbe083c 	lw	s8,2108(sp)
  44c408:	27bd0848 	addiu	sp,sp,2120
  44c40c:	03e00008 	jr	ra
  44c410:	00000000 	nop

0044c414 <quick_inR1_outI2>:
  44c414:	3c1c0fbc 	lui	gp,0xfbc
  44c418:	279c055c 	addiu	gp,gp,1372
  44c41c:	0399e021 	addu	gp,gp,t9
  44c420:	27bdff50 	addiu	sp,sp,-176
  44c424:	afbc0018 	sw	gp,24(sp)
  44c428:	afbf00ac 	sw	ra,172(sp)
  44c42c:	afbe00a8 	sw	s8,168(sp)
  44c430:	afbc00a4 	sw	gp,164(sp)
  44c434:	afb000a0 	sw	s0,160(sp)
  44c438:	03a0f021 	move	s8,sp
  44c43c:	afc400b0 	sw	a0,176(s8)

/* Handle (the single) message from Responder in Quick Mode.
 * HDR*, HASH(2), SA, Nr [, KE ] [, IDci, IDcr ] -->
 * HDR*, HASH(3)
 * (see draft-ietf-ipsec-isakmp-oakley-07.txt 5.5)
 * Installs inbound and outbound IPsec SAs, routing, etc.
 */
stf_status
quick_inR1_outI2(struct msg_digest *md)
{
    struct state *const st = md->st;
  44c440:	8fc200b0 	lw	v0,176(s8)
  44c444:	00000000 	nop
  44c448:	8c420098 	lw	v0,152(v0)
  44c44c:	00000000 	nop
  44c450:	afc20020 	sw	v0,32(s8)
    const struct connection *c = st->st_connection;
  44c454:	8fc20020 	lw	v0,32(s8)
  44c458:	00000000 	nop
  44c45c:	8c42000c 	lw	v0,12(v0)
  44c460:	00000000 	nop
  44c464:	afc20024 	sw	v0,36(s8)

    /* HASH(2) in */
    CHECK_QUICK_HASH(md
  44c468:	8fc200b0 	lw	v0,176(s8)
  44c46c:	00000000 	nop
  44c470:	8c4204c8 	lw	v0,1224(v0)
  44c474:	00000000 	nop
  44c478:	afc20028 	sw	v0,40(s8)
  44c47c:	8fc20020 	lw	v0,32(s8)
  44c480:	00000000 	nop
  44c484:	244200e0 	addiu	v0,v0,224
  44c488:	afa20010 	sw	v0,16(sp)
  44c48c:	24020001 	li	v0,1
  44c490:	afa20014 	sw	v0,20(sp)
  44c494:	27c40030 	addiu	a0,s8,48
  44c498:	8fc20028 	lw	v0,40(s8)
  44c49c:	00000000 	nop
  44c4a0:	8c450014 	lw	a1,20(v0)
  44c4a4:	8fc200b0 	lw	v0,176(s8)
  44c4a8:	00000000 	nop
  44c4ac:	8c460064 	lw	a2,100(v0)
  44c4b0:	8fc70020 	lw	a3,32(s8)
  44c4b4:	8f998034 	lw	t9,-32716(gp)
  44c4b8:	00000000 	nop
  44c4bc:	27390e0c 	addiu	t9,t9,3596
  44c4c0:	00000000 	nop
  44c4c4:	0320f809 	jalr	t9
  44c4c8:	00000000 	nop
  44c4cc:	8fdc0018 	lw	gp,24(s8)
  44c4d0:	afc20070 	sw	v0,112(s8)
  44c4d4:	8fc20028 	lw	v0,40(s8)
  44c4d8:	00000000 	nop
  44c4dc:	8c430014 	lw	v1,20(v0)
  44c4e0:	8fc20028 	lw	v0,40(s8)
  44c4e4:	00000000 	nop
  44c4e8:	8c420010 	lw	v0,16(v0)
  44c4ec:	00000000 	nop
  44c4f0:	00621823 	subu	v1,v1,v0
  44c4f4:	8fc20070 	lw	v0,112(s8)
  44c4f8:	00000000 	nop
  44c4fc:	1462000f 	bne	v1,v0,44c53c <quick_inR1_outI2+0x128>
  44c500:	00000000 	nop
  44c504:	8fc20028 	lw	v0,40(s8)
  44c508:	00000000 	nop
  44c50c:	8c440010 	lw	a0,16(v0)
  44c510:	27c50030 	addiu	a1,s8,48
  44c514:	8fc60070 	lw	a2,112(s8)
  44c518:	8f9985c8 	lw	t9,-31288(gp)
  44c51c:	00000000 	nop
  44c520:	0320f809 	jalr	t9
  44c524:	00000000 	nop
  44c528:	8fdc0018 	lw	gp,24(s8)
  44c52c:	14400003 	bnez	v0,44c53c <quick_inR1_outI2+0x128>
  44c530:	00000000 	nop
  44c534:	10000028 	b	44c5d8 <quick_inR1_outI2+0x1c4>
  44c538:	00000000 	nop
  44c53c:	8f8284f8 	lw	v0,-31496(gp)
  44c540:	00000000 	nop
  44c544:	8c420000 	lw	v0,0(v0)
  44c548:	00000000 	nop
  44c54c:	30420002 	andi	v0,v0,0x2
  44c550:	10400015 	beqz	v0,44c5a8 <quick_inR1_outI2+0x194>
  44c554:	00000000 	nop
  44c558:	8fc20028 	lw	v0,40(s8)
  44c55c:	00000000 	nop
  44c560:	8c430014 	lw	v1,20(v0)
  44c564:	8fc20028 	lw	v0,40(s8)
  44c568:	00000000 	nop
  44c56c:	8c420010 	lw	v0,16(v0)
  44c570:	00000000 	nop
  44c574:	00621823 	subu	v1,v1,v0
  44c578:	8f84802c 	lw	a0,-32724(gp)
  44c57c:	00000000 	nop
  44c580:	2484f448 	addiu	a0,a0,-3000
  44c584:	8fc20028 	lw	v0,40(s8)
  44c588:	00000000 	nop
  44c58c:	8c450010 	lw	a1,16(v0)
  44c590:	00603021 	move	a2,v1
  44c594:	8f9984ec 	lw	t9,-31508(gp)
  44c598:	00000000 	nop
  44c59c:	0320f809 	jalr	t9
  44c5a0:	00000000 	nop
  44c5a4:	8fdc0018 	lw	gp,24(s8)
  44c5a8:	24040003 	li	a0,3
  44c5ac:	8f85802c 	lw	a1,-32724(gp)
  44c5b0:	00000000 	nop
  44c5b4:	24a5f45c 	addiu	a1,a1,-2980
  44c5b8:	8f998c48 	lw	t9,-29624(gp)
  44c5bc:	00000000 	nop
  44c5c0:	0320f809 	jalr	t9
  44c5c4:	00000000 	nop
  44c5c8:	8fdc0018 	lw	gp,24(s8)
  44c5cc:	2402001b 	li	v0,27
  44c5d0:	10000184 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c5d4:	00000000 	nop
	, quick_mode_hash12(hash_val, hash_pbs->roof, md->message_pbs.roof
	    , st, &st->st_msgid, TRUE)
	, "HASH(2)", "Quick R1");

    /* SA in */
    {
	struct payload_digest *const sa_pd = md->chain[ISAKMP_NEXT_SA];
  44c5d8:	8fc200b0 	lw	v0,176(s8)
  44c5dc:	00000000 	nop
  44c5e0:	8c4204ac 	lw	v0,1196(v0)
  44c5e4:	00000000 	nop
  44c5e8:	afc20074 	sw	v0,116(s8)

	RETURN_STF_FAILURE(parse_ipsec_sa_body(&sa_pd->pbs
  44c5ec:	8fc20074 	lw	v0,116(s8)
  44c5f0:	00000000 	nop
  44c5f4:	24430020 	addiu	v1,v0,32
  44c5f8:	8fc20020 	lw	v0,32(s8)
  44c5fc:	00000000 	nop
  44c600:	afa20010 	sw	v0,16(sp)
  44c604:	8fc40074 	lw	a0,116(s8)
  44c608:	00602821 	move	a1,v1
  44c60c:	00003021 	move	a2,zero
  44c610:	24070001 	li	a3,1
  44c614:	8f9988e8 	lw	t9,-30488(gp)
  44c618:	00000000 	nop
  44c61c:	0320f809 	jalr	t9
  44c620:	00000000 	nop
  44c624:	8fdc0018 	lw	gp,24(s8)
  44c628:	afc20070 	sw	v0,112(s8)
  44c62c:	8fc20070 	lw	v0,112(s8)
  44c630:	00000000 	nop
  44c634:	10400006 	beqz	v0,44c650 <quick_inR1_outI2+0x23c>
  44c638:	00000000 	nop
  44c63c:	8fc20070 	lw	v0,112(s8)
  44c640:	00000000 	nop
  44c644:	24420004 	addiu	v0,v0,4
  44c648:	10000166 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c64c:	00000000 	nop
	    , &sa_pd->payload.sa, NULL, TRUE, st));
    }

    /* Nr in */
    RETURN_STF_FAILURE(accept_nonce(md, &st->st_nr, "Nr"));
  44c650:	8fc20020 	lw	v0,32(s8)
  44c654:	00000000 	nop
  44c658:	24420110 	addiu	v0,v0,272
  44c65c:	8fc400b0 	lw	a0,176(s8)
  44c660:	00402821 	move	a1,v0
  44c664:	8f86802c 	lw	a2,-32724(gp)
  44c668:	00000000 	nop
  44c66c:	24c6edc4 	addiu	a2,a2,-4668
  44c670:	8f998034 	lw	t9,-32716(gp)
  44c674:	00000000 	nop
  44c678:	2739093c 	addiu	t9,t9,2364
  44c67c:	00000000 	nop
  44c680:	0320f809 	jalr	t9
  44c684:	00000000 	nop
  44c688:	8fdc0018 	lw	gp,24(s8)
  44c68c:	afc20070 	sw	v0,112(s8)
  44c690:	8fc20070 	lw	v0,112(s8)
  44c694:	00000000 	nop
  44c698:	10400006 	beqz	v0,44c6b4 <quick_inR1_outI2+0x2a0>
  44c69c:	00000000 	nop
  44c6a0:	8fc20070 	lw	v0,112(s8)
  44c6a4:	00000000 	nop
  44c6a8:	24420004 	addiu	v0,v0,4
  44c6ac:	1000014d 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c6b0:	00000000 	nop

    /* [ KE ] in (for PFS) */
    RETURN_STF_FAILURE(accept_PFS_KE(md, &st->st_gr, "Gr", "Quick Mode R1"));
  44c6b4:	8fc20020 	lw	v0,32(s8)
  44c6b8:	00000000 	nop
  44c6bc:	24420100 	addiu	v0,v0,256
  44c6c0:	8fc400b0 	lw	a0,176(s8)
  44c6c4:	00402821 	move	a1,v0
  44c6c8:	8f86802c 	lw	a2,-32724(gp)
  44c6cc:	00000000 	nop
  44c6d0:	24c6edc8 	addiu	a2,a2,-4664
  44c6d4:	8f87802c 	lw	a3,-32724(gp)
  44c6d8:	00000000 	nop
  44c6dc:	24e7f498 	addiu	a3,a3,-2920
  44c6e0:	8f998034 	lw	t9,-32716(gp)
  44c6e4:	00000000 	nop
  44c6e8:	27399ff0 	addiu	t9,t9,-24592
  44c6ec:	00000000 	nop
  44c6f0:	0320f809 	jalr	t9
  44c6f4:	00000000 	nop
  44c6f8:	8fdc0018 	lw	gp,24(s8)
  44c6fc:	afc20070 	sw	v0,112(s8)
  44c700:	8fc20070 	lw	v0,112(s8)
  44c704:	00000000 	nop
  44c708:	10400006 	beqz	v0,44c724 <quick_inR1_outI2+0x310>
  44c70c:	00000000 	nop
  44c710:	8fc20070 	lw	v0,112(s8)
  44c714:	00000000 	nop
  44c718:	24420004 	addiu	v0,v0,4
  44c71c:	10000131 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c720:	00000000 	nop

    if (st->st_pfs_group != NULL)
  44c724:	8fc20020 	lw	v0,32(s8)
  44c728:	00000000 	nop
  44c72c:	8c4200c8 	lw	v0,200(v0)
  44c730:	00000000 	nop
  44c734:	10400010 	beqz	v0,44c778 <quick_inR1_outI2+0x364>
  44c738:	00000000 	nop
    {
	compute_dh_shared(st, st->st_gr, st->st_pfs_group);
  44c73c:	8fc20020 	lw	v0,32(s8)
  44c740:	8fc40020 	lw	a0,32(s8)
  44c744:	8c450100 	lw	a1,256(v0)
  44c748:	8c460104 	lw	a2,260(v0)
  44c74c:	8fc20020 	lw	v0,32(s8)
  44c750:	00000000 	nop
  44c754:	8c4700c8 	lw	a3,200(v0)
  44c758:	8f998034 	lw	t9,-32716(gp)
  44c75c:	00000000 	nop
  44c760:	273997dc 	addiu	t9,t9,-26660
  44c764:	00000000 	nop
  44c768:	0320f809 	jalr	t9
  44c76c:	00000000 	nop
  44c770:	8fdc0018 	lw	gp,24(s8)
  44c774:	00000000 	nop
#ifdef DODGE_DH_MISSING_ZERO_BUG
	if (st->st_shared.ptr[0] == 0)
	    return STF_REPLACE_DOOMED_EXCHANGE;
#endif
    }

    /* [ IDci, IDcr ] in; these must match what we sent */

    {
	struct payload_digest *const id_pd = md->chain[ISAKMP_NEXT_ID];
  44c778:	8fc200b0 	lw	v0,176(s8)
  44c77c:	00000000 	nop
  44c780:	8c4204bc 	lw	v0,1212(v0)
  44c784:	00000000 	nop
  44c788:	afc20078 	sw	v0,120(s8)

	if (id_pd != NULL)
  44c78c:	8fc20078 	lw	v0,120(s8)
  44c790:	00000000 	nop
  44c794:	10400049 	beqz	v0,44c8bc <quick_inR1_outI2+0x4a8>
  44c798:	00000000 	nop
	{
	    /* ??? we are assuming IPSEC_DOI */

	    /* IDci (we are initiator) */

	    if (!check_net_id(&id_pd->payload.ipsec_id, &id_pd->pbs
	    , &st->st_myuserprotoid, &st->st_myuserport
	    , &st->st_connection->this.client
	    , "our client"))
  44c79c:	8fc20078 	lw	v0,120(s8)
  44c7a0:	00000000 	nop
  44c7a4:	24440020 	addiu	a0,v0,32
  44c7a8:	8fc20020 	lw	v0,32(s8)
  44c7ac:	00000000 	nop
  44c7b0:	24460120 	addiu	a2,v0,288
  44c7b4:	8fc20020 	lw	v0,32(s8)
  44c7b8:	00000000 	nop
  44c7bc:	24430122 	addiu	v1,v0,290
  44c7c0:	8fc20020 	lw	v0,32(s8)
  44c7c4:	00000000 	nop
  44c7c8:	8c42000c 	lw	v0,12(v0)
  44c7cc:	00000000 	nop
  44c7d0:	24420090 	addiu	v0,v0,144
  44c7d4:	afa20010 	sw	v0,16(sp)
  44c7d8:	8f82802c 	lw	v0,-32724(gp)
  44c7dc:	00000000 	nop
  44c7e0:	2442f170 	addiu	v0,v0,-3728
  44c7e4:	00000000 	nop
  44c7e8:	afa20014 	sw	v0,20(sp)
  44c7ec:	8fc50078 	lw	a1,120(s8)
  44c7f0:	00603821 	move	a3,v1
  44c7f4:	8f998034 	lw	t9,-32716(gp)
  44c7f8:	00000000 	nop
  44c7fc:	273940cc 	addiu	t9,t9,16588
  44c800:	00000000 	nop
  44c804:	0320f809 	jalr	t9
  44c808:	00000000 	nop
  44c80c:	8fdc0018 	lw	gp,24(s8)
  44c810:	14400004 	bnez	v0,44c824 <quick_inR1_outI2+0x410>
  44c814:	00000000 	nop
		return STF_FAIL + INVALID_ID_INFORMATION;
  44c818:	24020016 	li	v0,22
  44c81c:	100000f1 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c820:	00000000 	nop

	    /* IDcr (responder is peer) */

	    if (!check_net_id(&id_pd->next->payload.ipsec_id, &id_pd->next->pbs
	    , &st->st_peeruserprotoid, &st->st_peeruserport
	    , &st->st_connection->that.client
	    , "peer client"))
  44c824:	8fc20078 	lw	v0,120(s8)
  44c828:	00000000 	nop
  44c82c:	8c42002c 	lw	v0,44(v0)
  44c830:	00000000 	nop
  44c834:	24430020 	addiu	v1,v0,32
  44c838:	8fc20020 	lw	v0,32(s8)
  44c83c:	00000000 	nop
  44c840:	2446012c 	addiu	a2,v0,300
  44c844:	8fc20020 	lw	v0,32(s8)
  44c848:	00000000 	nop
  44c84c:	2447012e 	addiu	a3,v0,302
  44c850:	8fc20020 	lw	v0,32(s8)
  44c854:	00000000 	nop
  44c858:	8c42000c 	lw	v0,12(v0)
  44c85c:	00000000 	nop
  44c860:	24420140 	addiu	v0,v0,320
  44c864:	afa20010 	sw	v0,16(sp)
  44c868:	8f82802c 	lw	v0,-32724(gp)
  44c86c:	00000000 	nop
  44c870:	2442f164 	addiu	v0,v0,-3740
  44c874:	00000000 	nop
  44c878:	afa20014 	sw	v0,20(sp)
  44c87c:	00602021 	move	a0,v1
  44c880:	8fc20078 	lw	v0,120(s8)
  44c884:	00000000 	nop
  44c888:	8c45002c 	lw	a1,44(v0)
  44c88c:	8f998034 	lw	t9,-32716(gp)
  44c890:	00000000 	nop
  44c894:	273940cc 	addiu	t9,t9,16588
  44c898:	00000000 	nop
  44c89c:	0320f809 	jalr	t9
  44c8a0:	00000000 	nop
  44c8a4:	8fdc0018 	lw	gp,24(s8)
  44c8a8:	14400027 	bnez	v0,44c948 <quick_inR1_outI2+0x534>
  44c8ac:	00000000 	nop
		return STF_FAIL + INVALID_ID_INFORMATION;
  44c8b0:	24020016 	li	v0,22
  44c8b4:	100000cb 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c8b8:	00000000 	nop
	}
	else
	{
	    /* No IDci, IDcr: we must check that the defaults match our proposal.
	     * Parallels a sequence of assignments in quick_outI1.
	     */
	    if (!subnetishost(&c->this.client) || !subnetishost(&c->that.client))
  44c8bc:	8fc20024 	lw	v0,36(s8)
  44c8c0:	00000000 	nop
  44c8c4:	24420090 	addiu	v0,v0,144
  44c8c8:	00402021 	move	a0,v0
  44c8cc:	8f99851c 	lw	t9,-31460(gp)
  44c8d0:	00000000 	nop
  44c8d4:	0320f809 	jalr	t9
  44c8d8:	00000000 	nop
  44c8dc:	8fdc0018 	lw	gp,24(s8)
  44c8e0:	1040000c 	beqz	v0,44c914 <quick_inR1_outI2+0x500>
  44c8e4:	00000000 	nop
  44c8e8:	8fc20024 	lw	v0,36(s8)
  44c8ec:	00000000 	nop
  44c8f0:	24420140 	addiu	v0,v0,320
  44c8f4:	00402021 	move	a0,v0
  44c8f8:	8f99851c 	lw	t9,-31460(gp)
  44c8fc:	00000000 	nop
  44c900:	0320f809 	jalr	t9
  44c904:	00000000 	nop
  44c908:	8fdc0018 	lw	gp,24(s8)
  44c90c:	1440000e 	bnez	v0,44c948 <quick_inR1_outI2+0x534>
  44c910:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "IDci, IDcr payloads missing in message"
  44c914:	24040003 	li	a0,3
  44c918:	8f85802c 	lw	a1,-32724(gp)
  44c91c:	00000000 	nop
  44c920:	24a5f4a8 	addiu	a1,a1,-2904
  44c924:	8f998c48 	lw	t9,-29624(gp)
  44c928:	00000000 	nop
  44c92c:	0320f809 	jalr	t9
  44c930:	00000000 	nop
  44c934:	8fdc0018 	lw	gp,24(s8)
  44c938:	00000000 	nop
		    " but default does not match proposal");
		return STF_FAIL + INVALID_ID_INFORMATION;
  44c93c:	24020016 	li	v0,22
  44c940:	100000a8 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c944:	00000000 	nop
	    }
	}
    }

#ifdef NAT_TRAVERSAL
	if ((st->nat_traversal & NAT_T_DETECTED) &&
	    (st->nat_traversal & NAT_T_WITH_NATOA)) {
  44c948:	8fc20020 	lw	v0,32(s8)
  44c94c:	00000000 	nop
  44c950:	8c430264 	lw	v1,612(v0)
  44c954:	3c02c000 	lui	v0,0xc000
  44c958:	00621024 	and	v0,v1,v0
  44c95c:	1040000f 	beqz	v0,44c99c <quick_inR1_outI2+0x588>
  44c960:	00000000 	nop
  44c964:	8fc20020 	lw	v0,32(s8)
  44c968:	00000000 	nop
  44c96c:	8c420264 	lw	v0,612(v0)
  44c970:	00000000 	nop
  44c974:	3042000e 	andi	v0,v0,0xe
  44c978:	10400008 	beqz	v0,44c99c <quick_inR1_outI2+0x588>
  44c97c:	00000000 	nop
	    nat_traversal_natoa_lookup(md);
  44c980:	8fc400b0 	lw	a0,176(s8)
  44c984:	8f998910 	lw	t9,-30448(gp)
  44c988:	00000000 	nop
  44c98c:	0320f809 	jalr	t9
  44c990:	00000000 	nop
  44c994:	8fdc0018 	lw	gp,24(s8)
  44c998:	00000000 	nop
	}
#endif

    /* ??? We used to copy the accepted proposal into the state, but it was
     * never used.  From sa_pd->pbs.start, length pbs_room(&sa_pd->pbs).
     */

    /**************** build reply packet HDR*, HASH(3) ****************/

    /* HDR* out done */

    /* HASH(3) out -- since this is the only content, no passes needed */
    {
	u_char	/* set by START_HASH_PAYLOAD: */
	    *r_hashval,	/* where in reply to jam hash value */
	    *r_hash_start;	/* start of what is to be hashed */

	START_HASH_PAYLOAD(&md->rbody, ISAKMP_NEXT_NONE);
  44c99c:	8fc200b0 	lw	v0,176(s8)
  44c9a0:	00000000 	nop
  44c9a4:	244200bc 	addiu	v0,v0,188
  44c9a8:	00002021 	move	a0,zero
  44c9ac:	8f858924 	lw	a1,-30428(gp)
  44c9b0:	00403021 	move	a2,v0
  44c9b4:	27c70080 	addiu	a3,s8,128
  44c9b8:	8f9986d4 	lw	t9,-31020(gp)
  44c9bc:	00000000 	nop
  44c9c0:	0320f809 	jalr	t9
  44c9c4:	00000000 	nop
  44c9c8:	8fdc0018 	lw	gp,24(s8)
  44c9cc:	14400004 	bnez	v0,44c9e0 <quick_inR1_outI2+0x5cc>
  44c9d0:	00000000 	nop
  44c9d4:	24020003 	li	v0,3
  44c9d8:	10000082 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44c9dc:	00000000 	nop
  44c9e0:	8fc20090 	lw	v0,144(s8)
  44c9e4:	00000000 	nop
  44c9e8:	afc20070 	sw	v0,112(s8)
  44c9ec:	8fc20020 	lw	v0,32(s8)
  44c9f0:	00000000 	nop
  44c9f4:	8c420028 	lw	v0,40(v0)
  44c9f8:	00000000 	nop
  44c9fc:	8c44000c 	lw	a0,12(v0)
  44ca00:	27c50080 	addiu	a1,s8,128
  44ca04:	8f86802c 	lw	a2,-32724(gp)
  44ca08:	00000000 	nop
  44ca0c:	24c6e548 	addiu	a2,a2,-6840
  44ca10:	8f998a20 	lw	t9,-30176(gp)
  44ca14:	00000000 	nop
  44ca18:	0320f809 	jalr	t9
  44ca1c:	00000000 	nop
  44ca20:	8fdc0018 	lw	gp,24(s8)
  44ca24:	14400004 	bnez	v0,44ca38 <quick_inR1_outI2+0x624>
  44ca28:	00000000 	nop
  44ca2c:	24020003 	li	v0,3
  44ca30:	1000006c 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44ca34:	00000000 	nop
  44ca38:	27c40080 	addiu	a0,s8,128
  44ca3c:	8f998228 	lw	t9,-32216(gp)
  44ca40:	00000000 	nop
  44ca44:	0320f809 	jalr	t9
  44ca48:	00000000 	nop
  44ca4c:	8fdc0018 	lw	gp,24(s8)
  44ca50:	8fc200b0 	lw	v0,176(s8)
  44ca54:	00000000 	nop
  44ca58:	244200bc 	addiu	v0,v0,188
  44ca5c:	8c420010 	lw	v0,16(v0)
  44ca60:	00000000 	nop
  44ca64:	afc2007c 	sw	v0,124(s8)
	(void)quick_mode_hash3(r_hashval, st);
  44ca68:	8fc40070 	lw	a0,112(s8)
  44ca6c:	8fc50020 	lw	a1,32(s8)
  44ca70:	8f998034 	lw	t9,-32716(gp)
  44ca74:	00000000 	nop
  44ca78:	27390fd8 	addiu	t9,t9,4056
  44ca7c:	00000000 	nop
  44ca80:	0320f809 	jalr	t9
  44ca84:	00000000 	nop
  44ca88:	8fdc0018 	lw	gp,24(s8)
  44ca8c:	00000000 	nop
    }

    /* Derive new keying material */
    compute_keymats(st);
  44ca90:	8fc40020 	lw	a0,32(s8)
  44ca94:	8f998034 	lw	t9,-32716(gp)
  44ca98:	00000000 	nop
  44ca9c:	27394e00 	addiu	t9,t9,19968
  44caa0:	00000000 	nop
  44caa4:	0320f809 	jalr	t9
  44caa8:	00000000 	nop
  44caac:	8fdc0018 	lw	gp,24(s8)
  44cab0:	00000000 	nop

    /* Tell the kernel to establish the inbound, outbound, and routing part
     * of the new SA (unless the commit bit is set -- which we don't support).
     * We do this before any state updating so that
     * failure won't look like success.
     */
    if (!install_ipsec_sa(st, TRUE))
  44cab4:	8fc40020 	lw	a0,32(s8)
  44cab8:	24050001 	li	a1,1
  44cabc:	8f998350 	lw	t9,-31920(gp)
  44cac0:	00000000 	nop
  44cac4:	0320f809 	jalr	t9
  44cac8:	00000000 	nop
  44cacc:	8fdc0018 	lw	gp,24(s8)
  44cad0:	14400004 	bnez	v0,44cae4 <quick_inR1_outI2+0x6d0>
  44cad4:	00000000 	nop
	return STF_INTERNAL_ERROR;
  44cad8:	24020003 	li	v0,3
  44cadc:	10000041 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44cae0:	00000000 	nop

    /* encrypt message, except for fixed part of header */

    if (!encrypt_message(&md->rbody, st))
  44cae4:	8fc200b0 	lw	v0,176(s8)
  44cae8:	00000000 	nop
  44caec:	244200bc 	addiu	v0,v0,188
  44caf0:	00402021 	move	a0,v0
  44caf4:	8fc50020 	lw	a1,32(s8)
  44caf8:	8f99885c 	lw	t9,-30628(gp)
  44cafc:	00000000 	nop
  44cb00:	0320f809 	jalr	t9
  44cb04:	00000000 	nop
  44cb08:	8fdc0018 	lw	gp,24(s8)
  44cb0c:	14400004 	bnez	v0,44cb20 <quick_inR1_outI2+0x70c>
  44cb10:	00000000 	nop
	return STF_INTERNAL_ERROR;	/* ??? we may be partly committed */
  44cb14:	24020003 	li	v0,3
  44cb18:	10000032 	b	44cbe4 <quick_inR1_outI2+0x7d0>
  44cb1c:	00000000 	nop

    st->st_connection->newest_ipsec_sa = st->st_serialno;
  44cb20:	8fc20020 	lw	v0,32(s8)
  44cb24:	00000000 	nop
  44cb28:	8c43000c 	lw	v1,12(v0)
  44cb2c:	8fc20020 	lw	v0,32(s8)
  44cb30:	00000000 	nop
  44cb34:	8c420000 	lw	v0,0(v0)
  44cb38:	00000000 	nop
  44cb3c:	ac6201a8 	sw	v0,424(v1)

    /* note (presumed) success */
    if (c->gw_info != NULL)
  44cb40:	8fc20024 	lw	v0,36(s8)
  44cb44:	00000000 	nop
  44cb48:	8c4201b8 	lw	v0,440(v0)
  44cb4c:	00000000 	nop
  44cb50:	1040000a 	beqz	v0,44cb7c <quick_inR1_outI2+0x768>
  44cb54:	00000000 	nop
	c->gw_info->last_worked_time = now();
  44cb58:	8fc20024 	lw	v0,36(s8)
  44cb5c:	00000000 	nop
  44cb60:	8c5001b8 	lw	s0,440(v0)
  44cb64:	8f998b58 	lw	t9,-29864(gp)
  44cb68:	00000000 	nop
  44cb6c:	0320f809 	jalr	t9
  44cb70:	00000000 	nop
  44cb74:	8fdc0018 	lw	gp,24(s8)
  44cb78:	ae020014 	sw	v0,20(s0)

#ifdef DPD
    if (st->st_connection->dpd_delay && st->st_connection->dpd_timeout)
  44cb7c:	8fc20020 	lw	v0,32(s8)
  44cb80:	00000000 	nop
  44cb84:	8c42000c 	lw	v0,12(v0)
  44cb88:	00000000 	nop
  44cb8c:	8c420024 	lw	v0,36(v0)
  44cb90:	00000000 	nop
  44cb94:	10400012 	beqz	v0,44cbe0 <quick_inR1_outI2+0x7cc>
  44cb98:	00000000 	nop
  44cb9c:	8fc20020 	lw	v0,32(s8)
  44cba0:	00000000 	nop
  44cba4:	8c42000c 	lw	v0,12(v0)
  44cba8:	00000000 	nop
  44cbac:	8c420028 	lw	v0,40(v0)
  44cbb0:	00000000 	nop
  44cbb4:	1040000a 	beqz	v0,44cbe0 <quick_inR1_outI2+0x7cc>
  44cbb8:	00000000 	nop
	    dpd_init(st);
  44cbbc:	8fc40020 	lw	a0,32(s8)
  44cbc0:	8f998038 	lw	t9,-32712(gp)
  44cbc4:	00000000 	nop
  44cbc8:	2739d708 	addiu	t9,t9,-10488
  44cbcc:	00000000 	nop
  44cbd0:	0320f809 	jalr	t9
  44cbd4:	00000000 	nop
  44cbd8:	8fdc0018 	lw	gp,24(s8)
  44cbdc:	00000000 	nop
#endif

    return STF_OK;
  44cbe0:	24020002 	li	v0,2
}
  44cbe4:	03c0e821 	move	sp,s8
  44cbe8:	8fbf00ac 	lw	ra,172(sp)
  44cbec:	8fbe00a8 	lw	s8,168(sp)
  44cbf0:	8fb000a0 	lw	s0,160(sp)
  44cbf4:	27bd00b0 	addiu	sp,sp,176
  44cbf8:	03e00008 	jr	ra
  44cbfc:	00000000 	nop

0044cc00 <quick_inI2>:
  44cc00:	3c1c0fbc 	lui	gp,0xfbc
  44cc04:	279cfd70 	addiu	gp,gp,-656
  44cc08:	0399e021 	addu	gp,gp,t9
  44cc0c:	27bdff88 	addiu	sp,sp,-120
  44cc10:	afbc0010 	sw	gp,16(sp)
  44cc14:	afbf0074 	sw	ra,116(sp)
  44cc18:	afbe0070 	sw	s8,112(sp)
  44cc1c:	afbc006c 	sw	gp,108(sp)
  44cc20:	afb00068 	sw	s0,104(sp)
  44cc24:	03a0f021 	move	s8,sp
  44cc28:	afc40078 	sw	a0,120(s8)

/* Handle last message of Quick Mode.
 * HDR*, HASH(3) -> done
 * (see draft-ietf-ipsec-isakmp-oakley-07.txt 5.5)
 * Installs outbound IPsec SAs, routing, etc.
 */
stf_status
quick_inI2(struct msg_digest *md)
{
    struct state *const st = md->st;
  44cc2c:	8fc20078 	lw	v0,120(s8)
  44cc30:	00000000 	nop
  44cc34:	8c420098 	lw	v0,152(v0)
  44cc38:	00000000 	nop
  44cc3c:	afc20018 	sw	v0,24(s8)

    /* HASH(3) in */
    CHECK_QUICK_HASH(md, quick_mode_hash3(hash_val, st)
  44cc40:	8fc20078 	lw	v0,120(s8)
  44cc44:	00000000 	nop
  44cc48:	8c4204c8 	lw	v0,1224(v0)
  44cc4c:	00000000 	nop
  44cc50:	afc2001c 	sw	v0,28(s8)
  44cc54:	27c40020 	addiu	a0,s8,32
  44cc58:	8fc50018 	lw	a1,24(s8)
  44cc5c:	8f998034 	lw	t9,-32716(gp)
  44cc60:	00000000 	nop
  44cc64:	27390fd8 	addiu	t9,t9,4056
  44cc68:	00000000 	nop
  44cc6c:	0320f809 	jalr	t9
  44cc70:	00000000 	nop
  44cc74:	8fdc0010 	lw	gp,16(s8)
  44cc78:	afc20060 	sw	v0,96(s8)
  44cc7c:	8fc2001c 	lw	v0,28(s8)
  44cc80:	00000000 	nop
  44cc84:	8c430014 	lw	v1,20(v0)
  44cc88:	8fc2001c 	lw	v0,28(s8)
  44cc8c:	00000000 	nop
  44cc90:	8c420010 	lw	v0,16(v0)
  44cc94:	00000000 	nop
  44cc98:	00621823 	subu	v1,v1,v0
  44cc9c:	8fc20060 	lw	v0,96(s8)
  44cca0:	00000000 	nop
  44cca4:	1462000f 	bne	v1,v0,44cce4 <quick_inI2+0xe4>
  44cca8:	00000000 	nop
  44ccac:	8fc2001c 	lw	v0,28(s8)
  44ccb0:	00000000 	nop
  44ccb4:	8c440010 	lw	a0,16(v0)
  44ccb8:	27c50020 	addiu	a1,s8,32
  44ccbc:	8fc60060 	lw	a2,96(s8)
  44ccc0:	8f9985c8 	lw	t9,-31288(gp)
  44ccc4:	00000000 	nop
  44ccc8:	0320f809 	jalr	t9
  44cccc:	00000000 	nop
  44ccd0:	8fdc0010 	lw	gp,16(s8)
  44ccd4:	14400003 	bnez	v0,44cce4 <quick_inI2+0xe4>
  44ccd8:	00000000 	nop
  44ccdc:	10000028 	b	44cd80 <quick_inI2+0x180>
  44cce0:	00000000 	nop
  44cce4:	8f8284f8 	lw	v0,-31496(gp)
  44cce8:	00000000 	nop
  44ccec:	8c420000 	lw	v0,0(v0)
  44ccf0:	00000000 	nop
  44ccf4:	30420002 	andi	v0,v0,0x2
  44ccf8:	10400015 	beqz	v0,44cd50 <quick_inI2+0x150>
  44ccfc:	00000000 	nop
  44cd00:	8fc2001c 	lw	v0,28(s8)
  44cd04:	00000000 	nop
  44cd08:	8c430014 	lw	v1,20(v0)
  44cd0c:	8fc2001c 	lw	v0,28(s8)
  44cd10:	00000000 	nop
  44cd14:	8c420010 	lw	v0,16(v0)
  44cd18:	00000000 	nop
  44cd1c:	00621823 	subu	v1,v1,v0
  44cd20:	8f84802c 	lw	a0,-32724(gp)
  44cd24:	00000000 	nop
  44cd28:	2484f4f4 	addiu	a0,a0,-2828
  44cd2c:	8fc2001c 	lw	v0,28(s8)
  44cd30:	00000000 	nop
  44cd34:	8c450010 	lw	a1,16(v0)
  44cd38:	00603021 	move	a2,v1
  44cd3c:	8f9984ec 	lw	t9,-31508(gp)
  44cd40:	00000000 	nop
  44cd44:	0320f809 	jalr	t9
  44cd48:	00000000 	nop
  44cd4c:	8fdc0010 	lw	gp,16(s8)
  44cd50:	24040003 	li	a0,3
  44cd54:	8f85802c 	lw	a1,-32724(gp)
  44cd58:	00000000 	nop
  44cd5c:	24a5f508 	addiu	a1,a1,-2808
  44cd60:	8f998c48 	lw	t9,-29624(gp)
  44cd64:	00000000 	nop
  44cd68:	0320f809 	jalr	t9
  44cd6c:	00000000 	nop
  44cd70:	8fdc0010 	lw	gp,16(s8)
  44cd74:	2402001b 	li	v0,27
  44cd78:	10000067 	b	44cf18 <quick_inI2+0x318>
  44cd7c:	00000000 	nop
	, "HASH(3)", "Quick I2");

    /* Tell the kernel to establish the outbound and routing part of the new SA
     * (the previous state established inbound)
     * (unless the commit bit is set -- which we don't support).
     * We do this before any state updating so that
     * failure won't look like success.
     */
    if (!install_ipsec_sa(st, FALSE))
  44cd80:	8fc40018 	lw	a0,24(s8)
  44cd84:	00002821 	move	a1,zero
  44cd88:	8f998350 	lw	t9,-31920(gp)
  44cd8c:	00000000 	nop
  44cd90:	0320f809 	jalr	t9
  44cd94:	00000000 	nop
  44cd98:	8fdc0010 	lw	gp,16(s8)
  44cd9c:	14400004 	bnez	v0,44cdb0 <quick_inI2+0x1b0>
  44cda0:	00000000 	nop
	return STF_INTERNAL_ERROR;
  44cda4:	24020003 	li	v0,3
  44cda8:	1000005b 	b	44cf18 <quick_inI2+0x318>
  44cdac:	00000000 	nop

    st->st_connection->newest_ipsec_sa = st->st_serialno;
  44cdb0:	8fc20018 	lw	v0,24(s8)
  44cdb4:	00000000 	nop
  44cdb8:	8c43000c 	lw	v1,12(v0)
  44cdbc:	8fc20018 	lw	v0,24(s8)
  44cdc0:	00000000 	nop
  44cdc4:	8c420000 	lw	v0,0(v0)
  44cdc8:	00000000 	nop
  44cdcc:	ac6201a8 	sw	v0,424(v1)

    update_iv(st);	/* not actually used, but tidy */
  44cdd0:	8fc20018 	lw	v0,24(s8)
  44cdd4:	00000000 	nop
  44cdd8:	8c420248 	lw	v0,584(v0)
  44cddc:	00000000 	nop
  44cde0:	2c420040 	sltiu	v0,v0,64
  44cde4:	1440000d 	bnez	v0,44ce1c <quick_inI2+0x21c>
  44cde8:	00000000 	nop
  44cdec:	8f84802c 	lw	a0,-32724(gp)
  44cdf0:	00000000 	nop
  44cdf4:	2484e450 	addiu	a0,a0,-7088
  44cdf8:	8f85802c 	lw	a1,-32724(gp)
  44cdfc:	00000000 	nop
  44ce00:	24a5d59c 	addiu	a1,a1,-10852
  44ce04:	240614dc 	li	a2,5340
  44ce08:	8f998bb8 	lw	t9,-29768(gp)
  44ce0c:	00000000 	nop
  44ce10:	0320f809 	jalr	t9
  44ce14:	00000000 	nop
  44ce18:	8fdc0010 	lw	gp,16(s8)
  44ce1c:	8fc20018 	lw	v0,24(s8)
  44ce20:	00000000 	nop
  44ce24:	24440184 	addiu	a0,v0,388
  44ce28:	8fc20018 	lw	v0,24(s8)
  44ce2c:	00000000 	nop
  44ce30:	244501c4 	addiu	a1,v0,452
  44ce34:	8fc20018 	lw	v0,24(s8)
  44ce38:	00000000 	nop
  44ce3c:	8c430248 	lw	v1,584(v0)
  44ce40:	8fc20018 	lw	v0,24(s8)
  44ce44:	00000000 	nop
  44ce48:	ac430244 	sw	v1,580(v0)
  44ce4c:	00603021 	move	a2,v1
  44ce50:	8f998a30 	lw	t9,-30160(gp)
  44ce54:	00000000 	nop
  44ce58:	0320f809 	jalr	t9
  44ce5c:	00000000 	nop
  44ce60:	8fdc0010 	lw	gp,16(s8)
  44ce64:	00000000 	nop

    /* note (presumed) success */
    {
	struct gw_info *gw = st->st_connection->gw_info;
  44ce68:	8fc20018 	lw	v0,24(s8)
  44ce6c:	00000000 	nop
  44ce70:	8c42000c 	lw	v0,12(v0)
  44ce74:	00000000 	nop
  44ce78:	8c4201b8 	lw	v0,440(v0)
  44ce7c:	00000000 	nop
  44ce80:	afc20060 	sw	v0,96(s8)

	if (gw != NULL)
  44ce84:	8fc20060 	lw	v0,96(s8)
  44ce88:	00000000 	nop
  44ce8c:	10400008 	beqz	v0,44ceb0 <quick_inI2+0x2b0>
  44ce90:	00000000 	nop
	    gw->last_worked_time = now();
  44ce94:	8fd00060 	lw	s0,96(s8)
  44ce98:	8f998b58 	lw	t9,-29864(gp)
  44ce9c:	00000000 	nop
  44cea0:	0320f809 	jalr	t9
  44cea4:	00000000 	nop
  44cea8:	8fdc0010 	lw	gp,16(s8)
  44ceac:	ae020014 	sw	v0,20(s0)
    }

#ifdef DPD
    if(st->st_connection->dpd_delay && st->st_connection->dpd_timeout)
  44ceb0:	8fc20018 	lw	v0,24(s8)
  44ceb4:	00000000 	nop
  44ceb8:	8c42000c 	lw	v0,12(v0)
  44cebc:	00000000 	nop
  44cec0:	8c420024 	lw	v0,36(v0)
  44cec4:	00000000 	nop
  44cec8:	10400012 	beqz	v0,44cf14 <quick_inI2+0x314>
  44cecc:	00000000 	nop
  44ced0:	8fc20018 	lw	v0,24(s8)
  44ced4:	00000000 	nop
  44ced8:	8c42000c 	lw	v0,12(v0)
  44cedc:	00000000 	nop
  44cee0:	8c420028 	lw	v0,40(v0)
  44cee4:	00000000 	nop
  44cee8:	1040000a 	beqz	v0,44cf14 <quick_inI2+0x314>
  44ceec:	00000000 	nop
	    dpd_init(st);
  44cef0:	8fc40018 	lw	a0,24(s8)
  44cef4:	8f998038 	lw	t9,-32712(gp)
  44cef8:	00000000 	nop
  44cefc:	2739d708 	addiu	t9,t9,-10488
  44cf00:	00000000 	nop
  44cf04:	0320f809 	jalr	t9
  44cf08:	00000000 	nop
  44cf0c:	8fdc0010 	lw	gp,16(s8)
  44cf10:	00000000 	nop
#endif

    return STF_OK;
  44cf14:	24020002 	li	v0,2
}
  44cf18:	03c0e821 	move	sp,s8
  44cf1c:	8fbf0074 	lw	ra,116(sp)
  44cf20:	8fbe0070 	lw	s8,112(sp)
  44cf24:	8fb00068 	lw	s0,104(sp)
  44cf28:	27bd0078 	addiu	sp,sp,120
  44cf2c:	03e00008 	jr	ra
  44cf30:	00000000 	nop

0044cf34 <send_isakmp_notification>:
  44cf34:	3c1c0fbc 	lui	gp,0xfbc
  44cf38:	279cfa3c 	addiu	gp,gp,-1476
  44cf3c:	0399e021 	addu	gp,gp,t9
  44cf40:	27bdfd20 	addiu	sp,sp,-736
  44cf44:	afbc0010 	sw	gp,16(sp)
  44cf48:	afbf02d8 	sw	ra,728(sp)
  44cf4c:	afbe02d4 	sw	s8,724(sp)
  44cf50:	afbc02d0 	sw	gp,720(sp)
  44cf54:	03a0f021 	move	s8,sp
  44cf58:	afc402e0 	sw	a0,736(s8)
  44cf5c:	00a01021 	move	v0,a1
  44cf60:	afc602e8 	sw	a2,744(s8)
  44cf64:	afc702ec 	sw	a3,748(s8)
  44cf68:	a7c20018 	sh	v0,24(s8)

#ifdef DPD
static stf_status
send_isakmp_notification(struct state *st,
	u_int16_t type, const void *data, size_t len)
{
    msgid_t msgid;
    pb_stream reply;
    pb_stream rbody;
    u_char old_new_iv[MAX_DIGEST_LEN];
    u_char old_iv[MAX_DIGEST_LEN];
    u_char
	*r_hashval,     /* where in reply to jam hash value */
	*r_hash_start;  /* start of what is to be hashed */

    msgid = generate_msgid(st);
  44cf6c:	8fc402e0 	lw	a0,736(s8)
  44cf70:	8f99826c 	lw	t9,-32148(gp)
  44cf74:	00000000 	nop
  44cf78:	0320f809 	jalr	t9
  44cf7c:	00000000 	nop
  44cf80:	8fdc0010 	lw	gp,16(s8)
  44cf84:	afc2001c 	sw	v0,28(s8)

    init_pbs(&reply, reply_buffer, sizeof(reply_buffer), "ISAKMP notify");
  44cf88:	27c40020 	addiu	a0,s8,32
  44cf8c:	8f858134 	lw	a1,-32460(gp)
  44cf90:	3c060001 	lui	a2,0x1
  44cf94:	8f87802c 	lw	a3,-32724(gp)
  44cf98:	00000000 	nop
  44cf9c:	24e7f544 	addiu	a3,a3,-2748
  44cfa0:	8f998364 	lw	t9,-31900(gp)
  44cfa4:	00000000 	nop
  44cfa8:	0320f809 	jalr	t9
  44cfac:	00000000 	nop
  44cfb0:	8fdc0010 	lw	gp,16(s8)
  44cfb4:	00000000 	nop

    /* HDR* */
    {
	struct isakmp_hdr hdr;

	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;
  44cfb8:	24020010 	li	v0,16
  44cfbc:	a3c200f9 	sb	v0,249(s8)
	hdr.isa_np = ISAKMP_NEXT_HASH;
  44cfc0:	24020008 	li	v0,8
  44cfc4:	a3c200f8 	sb	v0,248(s8)
	hdr.isa_xchg = ISAKMP_XCHG_INFO;
  44cfc8:	24020005 	li	v0,5
  44cfcc:	a3c200fa 	sb	v0,250(s8)
	hdr.isa_msgid = msgid;
  44cfd0:	8fc2001c 	lw	v0,28(s8)
  44cfd4:	00000000 	nop
  44cfd8:	afc200fc 	sw	v0,252(s8)
	hdr.isa_flags = ISAKMP_FLAG_ENCRYPTION;
  44cfdc:	24020001 	li	v0,1
  44cfe0:	a3c200fb 	sb	v0,251(s8)
	memcpy(hdr.isa_icookie, st->st_icookie, COOKIE_SIZE);
  44cfe4:	8fc202e0 	lw	v0,736(s8)
  44cfe8:	00000000 	nop
  44cfec:	244200f0 	addiu	v0,v0,240
  44cff0:	27c400e8 	addiu	a0,s8,232
  44cff4:	00402821 	move	a1,v0
  44cff8:	24060008 	li	a2,8
  44cffc:	8f998a30 	lw	t9,-30160(gp)
  44d000:	00000000 	nop
  44d004:	0320f809 	jalr	t9
  44d008:	00000000 	nop
  44d00c:	8fdc0010 	lw	gp,16(s8)
  44d010:	00000000 	nop
	memcpy(hdr.isa_rcookie, st->st_rcookie, COOKIE_SIZE);
  44d014:	27c200e8 	addiu	v0,s8,232
  44d018:	24430008 	addiu	v1,v0,8
  44d01c:	8fc202e0 	lw	v0,736(s8)
  44d020:	00000000 	nop
  44d024:	24420108 	addiu	v0,v0,264
  44d028:	00602021 	move	a0,v1
  44d02c:	00402821 	move	a1,v0
  44d030:	24060008 	li	a2,8
  44d034:	8f998a30 	lw	t9,-30160(gp)
  44d038:	00000000 	nop
  44d03c:	0320f809 	jalr	t9
  44d040:	00000000 	nop
  44d044:	8fdc0010 	lw	gp,16(s8)
  44d048:	00000000 	nop
	if (!out_struct(&hdr, &isakmp_hdr_desc, &reply, &rbody))
  44d04c:	27c400e8 	addiu	a0,s8,232
  44d050:	8f858688 	lw	a1,-31096(gp)
  44d054:	27c60020 	addiu	a2,s8,32
  44d058:	27c70040 	addiu	a3,s8,64
  44d05c:	8f998ba0 	lw	t9,-29792(gp)
  44d060:	00000000 	nop
  44d064:	0320f809 	jalr	t9
  44d068:	00000000 	nop
  44d06c:	8fdc0010 	lw	gp,16(s8)
  44d070:	1440000e 	bnez	v0,44d0ac <send_isakmp_notification+0x178>
  44d074:	00000000 	nop
	    impossible();
  44d078:	8f84802c 	lw	a0,-32724(gp)
  44d07c:	00000000 	nop
  44d080:	2484d590 	addiu	a0,a0,-10864
  44d084:	8f85802c 	lw	a1,-32724(gp)
  44d088:	00000000 	nop
  44d08c:	24a5d59c 	addiu	a1,a1,-10852
  44d090:	2406150c 	li	a2,5388
  44d094:	8f998bb8 	lw	t9,-29768(gp)
  44d098:	00000000 	nop
  44d09c:	0320f809 	jalr	t9
  44d0a0:	00000000 	nop
  44d0a4:	8fdc0010 	lw	gp,16(s8)
  44d0a8:	00000000 	nop
    }
  
    /* HASH -- create and note space to be filled later */
    START_HASH_PAYLOAD(&rbody, ISAKMP_NEXT_N);
  44d0ac:	2404000b 	li	a0,11
  44d0b0:	8f858924 	lw	a1,-30428(gp)
  44d0b4:	27c60040 	addiu	a2,s8,64
  44d0b8:	27c70108 	addiu	a3,s8,264
  44d0bc:	8f9986d4 	lw	t9,-31020(gp)
  44d0c0:	00000000 	nop
  44d0c4:	0320f809 	jalr	t9
  44d0c8:	00000000 	nop
  44d0cc:	8fdc0010 	lw	gp,16(s8)
  44d0d0:	14400004 	bnez	v0,44d0e4 <send_isakmp_notification+0x1b0>
  44d0d4:	00000000 	nop
  44d0d8:	24020003 	li	v0,3
  44d0dc:	10000184 	b	44d6f0 <send_isakmp_notification+0x7bc>
  44d0e0:	00000000 	nop
  44d0e4:	8fc20118 	lw	v0,280(s8)
  44d0e8:	00000000 	nop
  44d0ec:	afc200e0 	sw	v0,224(s8)
  44d0f0:	8fc202e0 	lw	v0,736(s8)
  44d0f4:	00000000 	nop
  44d0f8:	8c420028 	lw	v0,40(v0)
  44d0fc:	00000000 	nop
  44d100:	8c44000c 	lw	a0,12(v0)
  44d104:	27c50108 	addiu	a1,s8,264
  44d108:	8f86802c 	lw	a2,-32724(gp)
  44d10c:	00000000 	nop
  44d110:	24c6e548 	addiu	a2,a2,-6840
  44d114:	8f998a20 	lw	t9,-30176(gp)
  44d118:	00000000 	nop
  44d11c:	0320f809 	jalr	t9
  44d120:	00000000 	nop
  44d124:	8fdc0010 	lw	gp,16(s8)
  44d128:	14400004 	bnez	v0,44d13c <send_isakmp_notification+0x208>
  44d12c:	00000000 	nop
  44d130:	24020003 	li	v0,3
  44d134:	1000016e 	b	44d6f0 <send_isakmp_notification+0x7bc>
  44d138:	00000000 	nop
  44d13c:	27c40108 	addiu	a0,s8,264
  44d140:	8f998228 	lw	t9,-32216(gp)
  44d144:	00000000 	nop
  44d148:	0320f809 	jalr	t9
  44d14c:	00000000 	nop
  44d150:	8fdc0010 	lw	gp,16(s8)
  44d154:	8fc20050 	lw	v0,80(s8)
  44d158:	00000000 	nop
  44d15c:	afc200e4 	sw	v0,228(s8)

    /* NOTIFY */
    {
	pb_stream notify_pbs;
	struct isakmp_notification isan;

	isan.isan_np = ISAKMP_NEXT_NONE;
  44d160:	a3c00148 	sb	zero,328(s8)
	isan.isan_doi = ISAKMP_DOI_IPSEC;
  44d164:	24020001 	li	v0,1
  44d168:	afc2014c 	sw	v0,332(s8)
	isan.isan_protoid = PROTO_ISAKMP;
  44d16c:	24020001 	li	v0,1
  44d170:	a3c20150 	sb	v0,336(s8)
	isan.isan_spisize = COOKIE_SIZE * 2;
  44d174:	24020010 	li	v0,16
  44d178:	a3c20151 	sb	v0,337(s8)
	isan.isan_type = type;
  44d17c:	97c20018 	lhu	v0,24(s8)
  44d180:	00000000 	nop
  44d184:	a7c20152 	sh	v0,338(s8)
	if (!out_struct(&isan, &isakmp_notification_desc, &rbody, &notify_pbs))
  44d188:	27c40148 	addiu	a0,s8,328
  44d18c:	8f85812c 	lw	a1,-32468(gp)
  44d190:	27c60040 	addiu	a2,s8,64
  44d194:	27c70128 	addiu	a3,s8,296
  44d198:	8f998ba0 	lw	t9,-29792(gp)
  44d19c:	00000000 	nop
  44d1a0:	0320f809 	jalr	t9
  44d1a4:	00000000 	nop
  44d1a8:	8fdc0010 	lw	gp,16(s8)
  44d1ac:	14400004 	bnez	v0,44d1c0 <send_isakmp_notification+0x28c>
  44d1b0:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  44d1b4:	24020003 	li	v0,3
  44d1b8:	1000014d 	b	44d6f0 <send_isakmp_notification+0x7bc>
  44d1bc:	00000000 	nop
	if (!out_raw(st->st_icookie, COOKIE_SIZE, &notify_pbs, "notify icookie"))
  44d1c0:	8fc202e0 	lw	v0,736(s8)
  44d1c4:	00000000 	nop
  44d1c8:	244200f0 	addiu	v0,v0,240
  44d1cc:	00402021 	move	a0,v0
  44d1d0:	24050008 	li	a1,8
  44d1d4:	27c60128 	addiu	a2,s8,296
  44d1d8:	8f87802c 	lw	a3,-32724(gp)
  44d1dc:	00000000 	nop
  44d1e0:	24e7f554 	addiu	a3,a3,-2732
  44d1e4:	8f998308 	lw	t9,-31992(gp)
  44d1e8:	00000000 	nop
  44d1ec:	0320f809 	jalr	t9
  44d1f0:	00000000 	nop
  44d1f4:	8fdc0010 	lw	gp,16(s8)
  44d1f8:	14400004 	bnez	v0,44d20c <send_isakmp_notification+0x2d8>
  44d1fc:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  44d200:	24020003 	li	v0,3
  44d204:	1000013a 	b	44d6f0 <send_isakmp_notification+0x7bc>
  44d208:	00000000 	nop
	if (!out_raw(st->st_rcookie, COOKIE_SIZE, &notify_pbs, "notify rcookie"))
  44d20c:	8fc202e0 	lw	v0,736(s8)
  44d210:	00000000 	nop
  44d214:	24420108 	addiu	v0,v0,264
  44d218:	00402021 	move	a0,v0
  44d21c:	24050008 	li	a1,8
  44d220:	27c60128 	addiu	a2,s8,296
  44d224:	8f87802c 	lw	a3,-32724(gp)
  44d228:	00000000 	nop
  44d22c:	24e7f564 	addiu	a3,a3,-2716
  44d230:	8f998308 	lw	t9,-31992(gp)
  44d234:	00000000 	nop
  44d238:	0320f809 	jalr	t9
  44d23c:	00000000 	nop
  44d240:	8fdc0010 	lw	gp,16(s8)
  44d244:	14400004 	bnez	v0,44d258 <send_isakmp_notification+0x324>
  44d248:	00000000 	nop
	    return STF_INTERNAL_ERROR;
  44d24c:	24020003 	li	v0,3
  44d250:	10000127 	b	44d6f0 <send_isakmp_notification+0x7bc>
  44d254:	00000000 	nop
	if (data != NULL && len > 0)
  44d258:	8fc202e8 	lw	v0,744(s8)
  44d25c:	00000000 	nop
  44d260:	10400015 	beqz	v0,44d2b8 <send_isakmp_notification+0x384>
  44d264:	00000000 	nop
  44d268:	8fc202ec 	lw	v0,748(s8)
  44d26c:	00000000 	nop
  44d270:	10400011 	beqz	v0,44d2b8 <send_isakmp_notification+0x384>
  44d274:	00000000 	nop
	    if (!out_raw(data, len, &notify_pbs, "notify data"))
  44d278:	8fc402e8 	lw	a0,744(s8)
  44d27c:	8fc502ec 	lw	a1,748(s8)
  44d280:	27c60128 	addiu	a2,s8,296
  44d284:	8f87802c 	lw	a3,-32724(gp)
  44d288:	00000000 	nop
  44d28c:	24e7f574 	addiu	a3,a3,-2700
  44d290:	8f998308 	lw	t9,-31992(gp)
  44d294:	00000000 	nop
  44d298:	0320f809 	jalr	t9
  44d29c:	00000000 	nop
  44d2a0:	8fdc0010 	lw	gp,16(s8)
  44d2a4:	14400004 	bnez	v0,44d2b8 <send_isakmp_notification+0x384>
  44d2a8:	00000000 	nop
		return STF_INTERNAL_ERROR;
  44d2ac:	24020003 	li	v0,3
  44d2b0:	1000010f 	b	44d6f0 <send_isakmp_notification+0x7bc>
  44d2b4:	00000000 	nop
	close_output_pbs(&notify_pbs);
  44d2b8:	27c40128 	addiu	a0,s8,296
  44d2bc:	8f998228 	lw	t9,-32216(gp)
  44d2c0:	00000000 	nop
  44d2c4:	0320f809 	jalr	t9
  44d2c8:	00000000 	nop
  44d2cc:	8fdc0010 	lw	gp,16(s8)
  44d2d0:	00000000 	nop
    }

    {
	/* finish computing HASH */
	struct hmac_ctx ctx;

	hmac_init_chunk(&ctx, st->st_oakley.hasher, st->st_skeyid_a);
  44d2d4:	27c40158 	addiu	a0,s8,344
  44d2d8:	8fc202e0 	lw	v0,736(s8)
  44d2dc:	00000000 	nop
  44d2e0:	8c450028 	lw	a1,40(v0)
  44d2e4:	8fc202e0 	lw	v0,736(s8)
  44d2e8:	00000000 	nop
  44d2ec:	8c460174 	lw	a2,372(v0)
  44d2f0:	8fc202e0 	lw	v0,736(s8)
  44d2f4:	00000000 	nop
  44d2f8:	8c470178 	lw	a3,376(v0)
  44d2fc:	8f9989e0 	lw	t9,-30240(gp)
  44d300:	00000000 	nop
  44d304:	0320f809 	jalr	t9
  44d308:	00000000 	nop
  44d30c:	8fdc0010 	lw	gp,16(s8)
  44d310:	00000000 	nop
	hmac_update(&ctx, (const u_char *) &msgid, sizeof(msgid_t));
  44d314:	27c40158 	addiu	a0,s8,344
  44d318:	27c5001c 	addiu	a1,s8,28
  44d31c:	24060004 	li	a2,4
  44d320:	8f9983d4 	lw	t9,-31788(gp)
  44d324:	00000000 	nop
  44d328:	0320f809 	jalr	t9
  44d32c:	00000000 	nop
  44d330:	8fdc0010 	lw	gp,16(s8)
  44d334:	00000000 	nop
	hmac_update(&ctx, r_hash_start, rbody.cur-r_hash_start);
  44d338:	8fc30050 	lw	v1,80(s8)
  44d33c:	8fc200e4 	lw	v0,228(s8)
  44d340:	00000000 	nop
  44d344:	00621023 	subu	v0,v1,v0
  44d348:	27c40158 	addiu	a0,s8,344
  44d34c:	8fc500e4 	lw	a1,228(s8)
  44d350:	00403021 	move	a2,v0
  44d354:	8f9983d4 	lw	t9,-31788(gp)
  44d358:	00000000 	nop
  44d35c:	0320f809 	jalr	t9
  44d360:	00000000 	nop
  44d364:	8fdc0010 	lw	gp,16(s8)
  44d368:	00000000 	nop
	hmac_final(r_hashval, &ctx);
  44d36c:	8fc400e0 	lw	a0,224(s8)
  44d370:	27c50158 	addiu	a1,s8,344
  44d374:	8f998728 	lw	t9,-30936(gp)
  44d378:	00000000 	nop
  44d37c:	0320f809 	jalr	t9
  44d380:	00000000 	nop
  44d384:	8fdc0010 	lw	gp,16(s8)
  44d388:	00000000 	nop

	DBG(DBG_CRYPT,
  44d38c:	8f8284f8 	lw	v0,-31496(gp)
  44d390:	00000000 	nop
  44d394:	8c420000 	lw	v0,0(v0)
  44d398:	00000000 	nop
  44d39c:	30420002 	andi	v0,v0,0x2
  44d3a0:	10400015 	beqz	v0,44d3f8 <send_isakmp_notification+0x4c4>
  44d3a4:	00000000 	nop
  44d3a8:	8f84802c 	lw	a0,-32724(gp)
  44d3ac:	00000000 	nop
  44d3b0:	2484f580 	addiu	a0,a0,-2688
  44d3b4:	8f9983b8 	lw	t9,-31816(gp)
  44d3b8:	00000000 	nop
  44d3bc:	0320f809 	jalr	t9
  44d3c0:	00000000 	nop
  44d3c4:	8fdc0010 	lw	gp,16(s8)
  44d3c8:	00000000 	nop
  44d3cc:	8f84802c 	lw	a0,-32724(gp)
  44d3d0:	00000000 	nop
  44d3d4:	2484d7a0 	addiu	a0,a0,-10336
  44d3d8:	8fc500e0 	lw	a1,224(s8)
  44d3dc:	8fc6015c 	lw	a2,348(s8)
  44d3e0:	8f9984ec 	lw	t9,-31508(gp)
  44d3e4:	00000000 	nop
  44d3e8:	0320f809 	jalr	t9
  44d3ec:	00000000 	nop
  44d3f0:	8fdc0010 	lw	gp,16(s8)
  44d3f4:	00000000 	nop
		DBG_log("HASH computed:");
		DBG_dump("", r_hashval, ctx.hmac_digest_size));
    }

    /* save old IV (this prevents from copying a whole new state object 
     * for NOTIFICATION / DELETE messages we don't need to maintain a state
     * because there are no retransmissions...
     */

    save_iv(st, old_iv);
  44d3f8:	8fc202e0 	lw	v0,736(s8)
  44d3fc:	00000000 	nop
  44d400:	8c420244 	lw	v0,580(v0)
  44d404:	00000000 	nop
  44d408:	2c420040 	sltiu	v0,v0,64
  44d40c:	1440000d 	bnez	v0,44d444 <send_isakmp_notification+0x510>
  44d410:	00000000 	nop
  44d414:	8f84802c 	lw	a0,-32724(gp)
  44d418:	00000000 	nop
  44d41c:	2484f590 	addiu	a0,a0,-2672
  44d420:	8f85802c 	lw	a1,-32724(gp)
  44d424:	00000000 	nop
  44d428:	24a5d59c 	addiu	a1,a1,-10852
  44d42c:	2406153b 	li	a2,5435
  44d430:	8f998bb8 	lw	t9,-29768(gp)
  44d434:	00000000 	nop
  44d438:	0320f809 	jalr	t9
  44d43c:	00000000 	nop
  44d440:	8fdc0010 	lw	gp,16(s8)
  44d444:	8fc202e0 	lw	v0,736(s8)
  44d448:	00000000 	nop
  44d44c:	24420184 	addiu	v0,v0,388
  44d450:	27c400a0 	addiu	a0,s8,160
  44d454:	00402821 	move	a1,v0
  44d458:	8fc202e0 	lw	v0,736(s8)
  44d45c:	00000000 	nop
  44d460:	8c460244 	lw	a2,580(v0)
  44d464:	8f998a30 	lw	t9,-30160(gp)
  44d468:	00000000 	nop
  44d46c:	0320f809 	jalr	t9
  44d470:	00000000 	nop
  44d474:	8fdc0010 	lw	gp,16(s8)
  44d478:	00000000 	nop
    save_new_iv(st, old_new_iv);
  44d47c:	8fc202e0 	lw	v0,736(s8)
  44d480:	00000000 	nop
  44d484:	8c420248 	lw	v0,584(v0)
  44d488:	00000000 	nop
  44d48c:	2c420040 	sltiu	v0,v0,64
  44d490:	1440000d 	bnez	v0,44d4c8 <send_isakmp_notification+0x594>
  44d494:	00000000 	nop
  44d498:	8f84802c 	lw	a0,-32724(gp)
  44d49c:	00000000 	nop
  44d4a0:	2484f5b4 	addiu	a0,a0,-2636
  44d4a4:	8f85802c 	lw	a1,-32724(gp)
  44d4a8:	00000000 	nop
  44d4ac:	24a5d59c 	addiu	a1,a1,-10852
  44d4b0:	2406153c 	li	a2,5436
  44d4b4:	8f998bb8 	lw	t9,-29768(gp)
  44d4b8:	00000000 	nop
  44d4bc:	0320f809 	jalr	t9
  44d4c0:	00000000 	nop
  44d4c4:	8fdc0010 	lw	gp,16(s8)
  44d4c8:	8fc202e0 	lw	v0,736(s8)
  44d4cc:	00000000 	nop
  44d4d0:	244201c4 	addiu	v0,v0,452
  44d4d4:	27c40060 	addiu	a0,s8,96
  44d4d8:	00402821 	move	a1,v0
  44d4dc:	8fc202e0 	lw	v0,736(s8)
  44d4e0:	00000000 	nop
  44d4e4:	8c460248 	lw	a2,584(v0)
  44d4e8:	8f998a30 	lw	t9,-30160(gp)
  44d4ec:	00000000 	nop
  44d4f0:	0320f809 	jalr	t9
  44d4f4:	00000000 	nop
  44d4f8:	8fdc0010 	lw	gp,16(s8)
  44d4fc:	00000000 	nop

    init_phase2_iv(st, &msgid);
  44d500:	8fc402e0 	lw	a0,736(s8)
  44d504:	27c5001c 	addiu	a1,s8,28
  44d508:	8f998bc8 	lw	t9,-29752(gp)
  44d50c:	00000000 	nop
  44d510:	0320f809 	jalr	t9
  44d514:	00000000 	nop
  44d518:	8fdc0010 	lw	gp,16(s8)
  44d51c:	00000000 	nop

    if (!encrypt_message(&rbody, st))
  44d520:	27c40040 	addiu	a0,s8,64
  44d524:	8fc502e0 	lw	a1,736(s8)
  44d528:	8f99885c 	lw	t9,-30628(gp)
  44d52c:	00000000 	nop
  44d530:	0320f809 	jalr	t9
  44d534:	00000000 	nop
  44d538:	8fdc0010 	lw	gp,16(s8)
  44d53c:	14400004 	bnez	v0,44d550 <send_isakmp_notification+0x61c>
  44d540:	00000000 	nop
	return STF_INTERNAL_ERROR;
  44d544:	24020003 	li	v0,3
  44d548:	10000069 	b	44d6f0 <send_isakmp_notification+0x7bc>
  44d54c:	00000000 	nop

    {
        chunk_t saved_tpacket = st->st_tpacket;
  44d550:	8fc302e0 	lw	v1,736(s8)
  44d554:	00000000 	nop
  44d558:	8c620118 	lw	v0,280(v1)
  44d55c:	00000000 	nop
  44d560:	afc202b8 	sw	v0,696(s8)
  44d564:	8c62011c 	lw	v0,284(v1)
  44d568:	00000000 	nop
  44d56c:	afc202bc 	sw	v0,700(s8)

        setchunk(st->st_tpacket, reply.start, pbs_offset(&reply));
  44d570:	8fc3002c 	lw	v1,44(s8)
  44d574:	8fc202e0 	lw	v0,736(s8)
  44d578:	00000000 	nop
  44d57c:	ac430118 	sw	v1,280(v0)
  44d580:	8fc30030 	lw	v1,48(s8)
  44d584:	8fc2002c 	lw	v0,44(s8)
  44d588:	00000000 	nop
  44d58c:	00621823 	subu	v1,v1,v0
  44d590:	8fc202e0 	lw	v0,736(s8)
  44d594:	00000000 	nop
  44d598:	ac43011c 	sw	v1,284(v0)
        send_packet(st, "ISAKMP notify");
  44d59c:	8fc402e0 	lw	a0,736(s8)
  44d5a0:	8f85802c 	lw	a1,-32724(gp)
  44d5a4:	00000000 	nop
  44d5a8:	24a5f544 	addiu	a1,a1,-2748
  44d5ac:	24060001 	li	a2,1
  44d5b0:	8f9987f0 	lw	t9,-30736(gp)
  44d5b4:	00000000 	nop
  44d5b8:	0320f809 	jalr	t9
  44d5bc:	00000000 	nop
  44d5c0:	8fdc0010 	lw	gp,16(s8)
  44d5c4:	00000000 	nop
        st->st_tpacket = saved_tpacket;
  44d5c8:	8fc302e0 	lw	v1,736(s8)
  44d5cc:	8fc202b8 	lw	v0,696(s8)
  44d5d0:	00000000 	nop
  44d5d4:	ac620118 	sw	v0,280(v1)
  44d5d8:	8fc202bc 	lw	v0,700(s8)
  44d5dc:	00000000 	nop
  44d5e0:	ac62011c 	sw	v0,284(v1)
    }    

    /* get back old IV for this state */
    set_iv(st, old_iv);
  44d5e4:	8fc202e0 	lw	v0,736(s8)
  44d5e8:	00000000 	nop
  44d5ec:	8c420244 	lw	v0,580(v0)
  44d5f0:	00000000 	nop
  44d5f4:	2c420040 	sltiu	v0,v0,64
  44d5f8:	1440000d 	bnez	v0,44d630 <send_isakmp_notification+0x6fc>
  44d5fc:	00000000 	nop
  44d600:	8f84802c 	lw	a0,-32724(gp)
  44d604:	00000000 	nop
  44d608:	2484f5e0 	addiu	a0,a0,-2592
  44d60c:	8f85802c 	lw	a1,-32724(gp)
  44d610:	00000000 	nop
  44d614:	24a5d59c 	addiu	a1,a1,-10852
  44d618:	2406154c 	li	a2,5452
  44d61c:	8f998bb8 	lw	t9,-29768(gp)
  44d620:	00000000 	nop
  44d624:	0320f809 	jalr	t9
  44d628:	00000000 	nop
  44d62c:	8fdc0010 	lw	gp,16(s8)
  44d630:	8fc202e0 	lw	v0,736(s8)
  44d634:	00000000 	nop
  44d638:	24420184 	addiu	v0,v0,388
  44d63c:	00402021 	move	a0,v0
  44d640:	27c500a0 	addiu	a1,s8,160
  44d644:	8fc202e0 	lw	v0,736(s8)
  44d648:	00000000 	nop
  44d64c:	8c460244 	lw	a2,580(v0)
  44d650:	8f998a30 	lw	t9,-30160(gp)
  44d654:	00000000 	nop
  44d658:	0320f809 	jalr	t9
  44d65c:	00000000 	nop
  44d660:	8fdc0010 	lw	gp,16(s8)
  44d664:	00000000 	nop
    set_new_iv(st, old_new_iv);
  44d668:	8fc202e0 	lw	v0,736(s8)
  44d66c:	00000000 	nop
  44d670:	8c420248 	lw	v0,584(v0)
  44d674:	00000000 	nop
  44d678:	2c420040 	sltiu	v0,v0,64
  44d67c:	1440000d 	bnez	v0,44d6b4 <send_isakmp_notification+0x780>
  44d680:	00000000 	nop
  44d684:	8f84802c 	lw	a0,-32724(gp)
  44d688:	00000000 	nop
  44d68c:	2484e5a0 	addiu	a0,a0,-6752
  44d690:	8f85802c 	lw	a1,-32724(gp)
  44d694:	00000000 	nop
  44d698:	24a5d59c 	addiu	a1,a1,-10852
  44d69c:	2406154d 	li	a2,5453
  44d6a0:	8f998bb8 	lw	t9,-29768(gp)
  44d6a4:	00000000 	nop
  44d6a8:	0320f809 	jalr	t9
  44d6ac:	00000000 	nop
  44d6b0:	8fdc0010 	lw	gp,16(s8)
  44d6b4:	8fc202e0 	lw	v0,736(s8)
  44d6b8:	00000000 	nop
  44d6bc:	244201c4 	addiu	v0,v0,452
  44d6c0:	00402021 	move	a0,v0
  44d6c4:	27c50060 	addiu	a1,s8,96
  44d6c8:	8fc202e0 	lw	v0,736(s8)
  44d6cc:	00000000 	nop
  44d6d0:	8c460248 	lw	a2,584(v0)
  44d6d4:	8f998a30 	lw	t9,-30160(gp)
  44d6d8:	00000000 	nop
  44d6dc:	0320f809 	jalr	t9
  44d6e0:	00000000 	nop
  44d6e4:	8fdc0010 	lw	gp,16(s8)
  44d6e8:	00000000 	nop

    return STF_IGNORE;
  44d6ec:	00001021 	move	v0,zero
}
  44d6f0:	03c0e821 	move	sp,s8
  44d6f4:	8fbf02d8 	lw	ra,728(sp)
  44d6f8:	8fbe02d4 	lw	s8,724(sp)
  44d6fc:	27bd02e0 	addiu	sp,sp,736
  44d700:	03e00008 	jr	ra
  44d704:	00000000 	nop

0044d708 <dpd_init>:
  44d708:	3c1c0fbc 	lui	gp,0xfbc
  44d70c:	279cf268 	addiu	gp,gp,-3480
  44d710:	0399e021 	addu	gp,gp,t9
  44d714:	27bdffd0 	addiu	sp,sp,-48
  44d718:	afbc0010 	sw	gp,16(sp)
  44d71c:	afbf0028 	sw	ra,40(sp)
  44d720:	afbe0024 	sw	s8,36(sp)
  44d724:	afbc0020 	sw	gp,32(sp)
  44d728:	03a0f021 	move	s8,sp
  44d72c:	afc40030 	sw	a0,48(s8)

static void
dpd_init(struct state *st)
{
    struct state *p1st;

    /* find the related Phase 1 state */
    p1st = find_state(st->st_icookie, st->st_rcookie,
  44d730:	8fc20030 	lw	v0,48(s8)
  44d734:	00000000 	nop
  44d738:	244400f0 	addiu	a0,v0,240
  44d73c:	8fc20030 	lw	v0,48(s8)
  44d740:	00000000 	nop
  44d744:	24430108 	addiu	v1,v0,264
  44d748:	8fc20030 	lw	v0,48(s8)
  44d74c:	00000000 	nop
  44d750:	8c42000c 	lw	v0,12(v0)
  44d754:	00000000 	nop
  44d758:	24420108 	addiu	v0,v0,264
  44d75c:	00602821 	move	a1,v1
  44d760:	00403021 	move	a2,v0
  44d764:	00003821 	move	a3,zero
  44d768:	8f9983c0 	lw	t9,-31808(gp)
  44d76c:	00000000 	nop
  44d770:	0320f809 	jalr	t9
  44d774:	00000000 	nop
  44d778:	8fdc0010 	lw	gp,16(s8)
  44d77c:	afc20018 	sw	v0,24(s8)
	    &st->st_connection->that.host_addr, 0);
    if (p1st == NULL)
  44d780:	8fc20018 	lw	v0,24(s8)
  44d784:	00000000 	nop
  44d788:	1440000c 	bnez	v0,44d7bc <dpd_init+0xb4>
  44d78c:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "could not find phase 1 state for DPD");
  44d790:	24040003 	li	a0,3
  44d794:	8f85802c 	lw	a1,-32724(gp)
  44d798:	00000000 	nop
  44d79c:	24a5f608 	addiu	a1,a1,-2552
  44d7a0:	8f998c48 	lw	t9,-29624(gp)
  44d7a4:	00000000 	nop
  44d7a8:	0320f809 	jalr	t9
  44d7ac:	00000000 	nop
  44d7b0:	8fdc0010 	lw	gp,16(s8)
  44d7b4:	1000001c 	b	44d828 <dpd_init+0x120>
  44d7b8:	00000000 	nop
    else if (p1st->st_dpd) {
  44d7bc:	8fc20018 	lw	v0,24(s8)
  44d7c0:	00000000 	nop
  44d7c4:	8c420284 	lw	v0,644(v0)
  44d7c8:	00000000 	nop
  44d7cc:	10400016 	beqz	v0,44d828 <dpd_init+0x120>
  44d7d0:	00000000 	nop
	    plog("Dead Peer Detection (draft-ietf-ipsec-dpd-03) enabled");
  44d7d4:	8f84802c 	lw	a0,-32724(gp)
  44d7d8:	00000000 	nop
  44d7dc:	2484f630 	addiu	a0,a0,-2512
  44d7e0:	8f998abc 	lw	t9,-30020(gp)
  44d7e4:	00000000 	nop
  44d7e8:	0320f809 	jalr	t9
  44d7ec:	00000000 	nop
  44d7f0:	8fdc0010 	lw	gp,16(s8)
  44d7f4:	00000000 	nop
	event_schedule(EVENT_DPD, st->st_connection->dpd_delay, st);
  44d7f8:	8fc20030 	lw	v0,48(s8)
  44d7fc:	00000000 	nop
  44d800:	8c42000c 	lw	v0,12(v0)
  44d804:	24040008 	li	a0,8
  44d808:	8c450024 	lw	a1,36(v0)
  44d80c:	8fc60030 	lw	a2,48(s8)
  44d810:	8f998410 	lw	t9,-31728(gp)
  44d814:	00000000 	nop
  44d818:	0320f809 	jalr	t9
  44d81c:	00000000 	nop
  44d820:	8fdc0010 	lw	gp,16(s8)
  44d824:	00000000 	nop
    }
}
  44d828:	03c0e821 	move	sp,s8
  44d82c:	8fbf0028 	lw	ra,40(sp)
  44d830:	8fbe0024 	lw	s8,36(sp)
  44d834:	27bd0030 	addiu	sp,sp,48
  44d838:	03e00008 	jr	ra
  44d83c:	00000000 	nop

0044d840 <dpd_outI>:
  44d840:	3c1c0fbc 	lui	gp,0xfbc
  44d844:	279cf130 	addiu	gp,gp,-3792
  44d848:	0399e021 	addu	gp,gp,t9
  44d84c:	27bdffc0 	addiu	sp,sp,-64
  44d850:	afbc0010 	sw	gp,16(sp)
  44d854:	afbf0038 	sw	ra,56(sp)
  44d858:	afbe0034 	sw	s8,52(sp)
  44d85c:	afbc0030 	sw	gp,48(sp)
  44d860:	03a0f021 	move	s8,sp
  44d864:	afc40040 	sw	a0,64(s8)

bool was_eroute_idle(struct state *st, time_t since_when);

void
dpd_outI(struct state *p2st)
{
    struct state *st;
    time_t tm;
    u_int32_t seqno;
    time_t delay = p2st->st_connection->dpd_delay;
  44d868:	8fc20040 	lw	v0,64(s8)
  44d86c:	00000000 	nop
  44d870:	8c42000c 	lw	v0,12(v0)
  44d874:	00000000 	nop
  44d878:	8c420024 	lw	v0,36(v0)
  44d87c:	00000000 	nop
  44d880:	afc20024 	sw	v0,36(s8)
    time_t timeout = p2st->st_connection->dpd_timeout;
  44d884:	8fc20040 	lw	v0,64(s8)
  44d888:	00000000 	nop
  44d88c:	8c42000c 	lw	v0,12(v0)
  44d890:	00000000 	nop
  44d894:	8c420028 	lw	v0,40(v0)
  44d898:	00000000 	nop
  44d89c:	afc20028 	sw	v0,40(s8)

    /* find the related Phase 1 state */
    st = find_phase1_state(p2st->st_connection, FALSE);
  44d8a0:	8fc20040 	lw	v0,64(s8)
  44d8a4:	00000000 	nop
  44d8a8:	8c44000c 	lw	a0,12(v0)
  44d8ac:	00002821 	move	a1,zero
  44d8b0:	8f9982e4 	lw	t9,-32028(gp)
  44d8b4:	00000000 	nop
  44d8b8:	0320f809 	jalr	t9
  44d8bc:	00000000 	nop
  44d8c0:	8fdc0010 	lw	gp,16(s8)
  44d8c4:	afc20018 	sw	v0,24(s8)
    if (st == NULL)
  44d8c8:	8fc20018 	lw	v0,24(s8)
  44d8cc:	00000000 	nop
  44d8d0:	1440000d 	bnez	v0,44d908 <dpd_outI+0xc8>
  44d8d4:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "could not find newest phase 1 state for DPD");
  44d8d8:	24040003 	li	a0,3
  44d8dc:	8f85802c 	lw	a1,-32724(gp)
  44d8e0:	00000000 	nop
  44d8e4:	24a5f668 	addiu	a1,a1,-2456
  44d8e8:	8f998c48 	lw	t9,-29624(gp)
  44d8ec:	00000000 	nop
  44d8f0:	0320f809 	jalr	t9
  44d8f4:	00000000 	nop
  44d8f8:	8fdc0010 	lw	gp,16(s8)
  44d8fc:	00000000 	nop
	return;
  44d900:	10000107 	b	44dd20 <dpd_outI+0x4e0>
  44d904:	00000000 	nop
    }
    if (!st->st_dpd)
  44d908:	8fc20018 	lw	v0,24(s8)
  44d90c:	00000000 	nop
  44d910:	8c420284 	lw	v0,644(v0)
  44d914:	00000000 	nop
  44d918:	14400003 	bnez	v0,44d928 <dpd_outI+0xe8>
  44d91c:	00000000 	nop
	return;
  44d920:	100000ff 	b	44dd20 <dpd_outI+0x4e0>
  44d924:	00000000 	nop

    /* If an R_U_THERE has been sent or received recently, then
     * base the resend time on that. */
    tm = now();
  44d928:	8f998b58 	lw	t9,-29864(gp)
  44d92c:	00000000 	nop
  44d930:	0320f809 	jalr	t9
  44d934:	00000000 	nop
  44d938:	8fdc0010 	lw	gp,16(s8)
  44d93c:	afc2001c 	sw	v0,28(s8)
    if (tm < st->st_last_dpd + delay)
  44d940:	8fc20018 	lw	v0,24(s8)
  44d944:	00000000 	nop
  44d948:	8c430288 	lw	v1,648(v0)
  44d94c:	8fc20024 	lw	v0,36(s8)
  44d950:	00000000 	nop
  44d954:	00621821 	addu	v1,v1,v0
  44d958:	8fc2001c 	lw	v0,28(s8)
  44d95c:	00000000 	nop
  44d960:	0043102a 	slt	v0,v0,v1
  44d964:	10400042 	beqz	v0,44da70 <dpd_outI+0x230>
  44d968:	00000000 	nop
    {
	event_schedule(EVENT_DPD, st->st_last_dpd + delay - tm, p2st);
  44d96c:	8fc20018 	lw	v0,24(s8)
  44d970:	00000000 	nop
  44d974:	8c430288 	lw	v1,648(v0)
  44d978:	8fc20024 	lw	v0,36(s8)
  44d97c:	00000000 	nop
  44d980:	00621821 	addu	v1,v1,v0
  44d984:	8fc2001c 	lw	v0,28(s8)
  44d988:	00000000 	nop
  44d98c:	00621023 	subu	v0,v1,v0
  44d990:	24040008 	li	a0,8
  44d994:	00402821 	move	a1,v0
  44d998:	8fc60040 	lw	a2,64(s8)
  44d99c:	8f998410 	lw	t9,-31728(gp)
  44d9a0:	00000000 	nop
  44d9a4:	0320f809 	jalr	t9
  44d9a8:	00000000 	nop
  44d9ac:	8fdc0010 	lw	gp,16(s8)
  44d9b0:	00000000 	nop
	/* If there is still a timeout for the last R_U_THERE sent,
	 * and the timeout is greater than ours, then reduce it. */
	if (st->st_dpd_event != NULL
	&& st->st_dpd_event->ev_time > st->st_last_dpd + timeout)
  44d9b4:	8fc20018 	lw	v0,24(s8)
  44d9b8:	00000000 	nop
  44d9bc:	8c420298 	lw	v0,664(v0)
  44d9c0:	00000000 	nop
  44d9c4:	104000d6 	beqz	v0,44dd20 <dpd_outI+0x4e0>
  44d9c8:	00000000 	nop
  44d9cc:	8fc20018 	lw	v0,24(s8)
  44d9d0:	00000000 	nop
  44d9d4:	8c440298 	lw	a0,664(v0)
  44d9d8:	8fc20018 	lw	v0,24(s8)
  44d9dc:	00000000 	nop
  44d9e0:	8c430288 	lw	v1,648(v0)
  44d9e4:	8fc20028 	lw	v0,40(s8)
  44d9e8:	00000000 	nop
  44d9ec:	00621821 	addu	v1,v1,v0
  44d9f0:	8c820000 	lw	v0,0(a0)
  44d9f4:	00000000 	nop
  44d9f8:	0062102a 	slt	v0,v1,v0
  44d9fc:	104000c8 	beqz	v0,44dd20 <dpd_outI+0x4e0>
  44da00:	00000000 	nop
	{
	    delete_dpd_event(st);
  44da04:	8fc40018 	lw	a0,24(s8)
  44da08:	8f998794 	lw	t9,-30828(gp)
  44da0c:	00000000 	nop
  44da10:	0320f809 	jalr	t9
  44da14:	00000000 	nop
  44da18:	8fdc0010 	lw	gp,16(s8)
  44da1c:	00000000 	nop
	    event_schedule(EVENT_DPD_TIMEOUT, st->st_last_dpd + timeout - tm, st);
  44da20:	8fc20018 	lw	v0,24(s8)
  44da24:	00000000 	nop
  44da28:	8c430288 	lw	v1,648(v0)
  44da2c:	8fc20028 	lw	v0,40(s8)
  44da30:	00000000 	nop
  44da34:	00621821 	addu	v1,v1,v0
  44da38:	8fc2001c 	lw	v0,28(s8)
  44da3c:	00000000 	nop
  44da40:	00621023 	subu	v0,v1,v0
  44da44:	24040009 	li	a0,9
  44da48:	00402821 	move	a1,v0
  44da4c:	8fc60018 	lw	a2,24(s8)
  44da50:	8f998410 	lw	t9,-31728(gp)
  44da54:	00000000 	nop
  44da58:	0320f809 	jalr	t9
  44da5c:	00000000 	nop
  44da60:	8fdc0010 	lw	gp,16(s8)
  44da64:	00000000 	nop
	}
	return;
  44da68:	100000ad 	b	44dd20 <dpd_outI+0x4e0>
  44da6c:	00000000 	nop
    }

    event_schedule(EVENT_DPD, delay, p2st);
  44da70:	24040008 	li	a0,8
  44da74:	8fc50024 	lw	a1,36(s8)
  44da78:	8fc60040 	lw	a2,64(s8)
  44da7c:	8f998410 	lw	t9,-31728(gp)
  44da80:	00000000 	nop
  44da84:	0320f809 	jalr	t9
  44da88:	00000000 	nop
  44da8c:	8fdc0010 	lw	gp,16(s8)
  44da90:	00000000 	nop

    /* Make sure we really need to invoke DPD */
    if(was_eroute_idle(p2st, delay) == FALSE) {
  44da94:	8fc40040 	lw	a0,64(s8)
  44da98:	8fc50024 	lw	a1,36(s8)
  44da9c:	8f998460 	lw	t9,-31648(gp)
  44daa0:	00000000 	nop
  44daa4:	0320f809 	jalr	t9
  44daa8:	00000000 	nop
  44daac:	8fdc0010 	lw	gp,16(s8)
  44dab0:	14400003 	bnez	v0,44dac0 <dpd_outI+0x280>
  44dab4:	00000000 	nop
	    return;
  44dab8:	10000099 	b	44dd20 <dpd_outI+0x4e0>
  44dabc:	00000000 	nop
    }

    if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  44dac0:	8fc20018 	lw	v0,24(s8)
  44dac4:	00000000 	nop
  44dac8:	8c43014c 	lw	v1,332(v0)
  44dacc:	24020009 	li	v0,9
  44dad0:	10620021 	beq	v1,v0,44db58 <dpd_outI+0x318>
  44dad4:	00000000 	nop
  44dad8:	8fc20018 	lw	v0,24(s8)
  44dadc:	00000000 	nop
  44dae0:	8c43014c 	lw	v1,332(v0)
  44dae4:	2402000a 	li	v0,10
  44dae8:	1062001b 	beq	v1,v0,44db58 <dpd_outI+0x318>
  44daec:	00000000 	nop
  44daf0:	8fc20018 	lw	v0,24(s8)
  44daf4:	00000000 	nop
  44daf8:	8c43014c 	lw	v1,332(v0)
  44dafc:	2402000e 	li	v0,14
  44db00:	10620015 	beq	v1,v0,44db58 <dpd_outI+0x318>
  44db04:	00000000 	nop
  44db08:	8fc20018 	lw	v0,24(s8)
  44db0c:	00000000 	nop
  44db10:	8c43014c 	lw	v1,332(v0)
  44db14:	2402000f 	li	v0,15
  44db18:	1062000f 	beq	v1,v0,44db58 <dpd_outI+0x318>
  44db1c:	00000000 	nop
  44db20:	8fc20018 	lw	v0,24(s8)
  44db24:	00000000 	nop
  44db28:	8c43014c 	lw	v1,332(v0)
  44db2c:	24020010 	li	v0,16
  44db30:	10620009 	beq	v1,v0,44db58 <dpd_outI+0x318>
  44db34:	00000000 	nop
  44db38:	8fc20018 	lw	v0,24(s8)
  44db3c:	00000000 	nop
  44db40:	8c43014c 	lw	v1,332(v0)
  44db44:	24020011 	li	v0,17
  44db48:	10620003 	beq	v1,v0,44db58 <dpd_outI+0x318>
  44db4c:	00000000 	nop
	return;
  44db50:	10000073 	b	44dd20 <dpd_outI+0x4e0>
  44db54:	00000000 	nop

    if (!st->st_dpd_seqno)
  44db58:	8fc20018 	lw	v0,24(s8)
  44db5c:	00000000 	nop
  44db60:	8c42028c 	lw	v0,652(v0)
  44db64:	00000000 	nop
  44db68:	1440001c 	bnez	v0,44dbdc <dpd_outI+0x39c>
  44db6c:	00000000 	nop
    {
	/* Get a non-zero random value that has room to grow */
	get_rnd_bytes((u_char *)&st->st_dpd_seqno, sizeof(st->st_dpd_seqno));
  44db70:	8fc20018 	lw	v0,24(s8)
  44db74:	00000000 	nop
  44db78:	2442028c 	addiu	v0,v0,652
  44db7c:	00402021 	move	a0,v0
  44db80:	24050004 	li	a1,4
  44db84:	8f9980bc 	lw	t9,-32580(gp)
  44db88:	00000000 	nop
  44db8c:	0320f809 	jalr	t9
  44db90:	00000000 	nop
  44db94:	8fdc0010 	lw	gp,16(s8)
  44db98:	00000000 	nop
	st->st_dpd_seqno &= 0x7fff;
  44db9c:	8fc20018 	lw	v0,24(s8)
  44dba0:	00000000 	nop
  44dba4:	8c42028c 	lw	v0,652(v0)
  44dba8:	00000000 	nop
  44dbac:	30437fff 	andi	v1,v0,0x7fff
  44dbb0:	8fc20018 	lw	v0,24(s8)
  44dbb4:	00000000 	nop
  44dbb8:	ac43028c 	sw	v1,652(v0)
	st->st_dpd_seqno++;
  44dbbc:	8fc20018 	lw	v0,24(s8)
  44dbc0:	00000000 	nop
  44dbc4:	8c42028c 	lw	v0,652(v0)
  44dbc8:	00000000 	nop
  44dbcc:	24430001 	addiu	v1,v0,1
  44dbd0:	8fc20018 	lw	v0,24(s8)
  44dbd4:	00000000 	nop
  44dbd8:	ac43028c 	sw	v1,652(v0)
    }
    seqno = htonl(st->st_dpd_seqno);
  44dbdc:	8fc20018 	lw	v0,24(s8)
  44dbe0:	00000000 	nop
  44dbe4:	8c42028c 	lw	v0,652(v0)
  44dbe8:	00000000 	nop
  44dbec:	afc20020 	sw	v0,32(s8)
    if (send_isakmp_notification(st, R_U_THERE, &seqno, sizeof(seqno)) != STF_IGNORE)
  44dbf0:	8fc40018 	lw	a0,24(s8)
  44dbf4:	34058d28 	li	a1,0x8d28
  44dbf8:	27c60020 	addiu	a2,s8,32
  44dbfc:	24070004 	li	a3,4
  44dc00:	8f998038 	lw	t9,-32712(gp)
  44dc04:	00000000 	nop
  44dc08:	2739cf34 	addiu	t9,t9,-12492
  44dc0c:	00000000 	nop
  44dc10:	0320f809 	jalr	t9
  44dc14:	00000000 	nop
  44dc18:	8fdc0010 	lw	gp,16(s8)
  44dc1c:	1040000d 	beqz	v0,44dc54 <dpd_outI+0x414>
  44dc20:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "could not send R_U_THERE");
  44dc24:	24040003 	li	a0,3
  44dc28:	8f85802c 	lw	a1,-32724(gp)
  44dc2c:	00000000 	nop
  44dc30:	24a5f694 	addiu	a1,a1,-2412
  44dc34:	8f998c48 	lw	t9,-29624(gp)
  44dc38:	00000000 	nop
  44dc3c:	0320f809 	jalr	t9
  44dc40:	00000000 	nop
  44dc44:	8fdc0010 	lw	gp,16(s8)
  44dc48:	00000000 	nop
	return;
  44dc4c:	10000034 	b	44dd20 <dpd_outI+0x4e0>
  44dc50:	00000000 	nop
    }

    st->st_dpd_expectseqno = st->st_dpd_seqno++;
  44dc54:	8fc20018 	lw	v0,24(s8)
  44dc58:	00000000 	nop
  44dc5c:	2445028c 	addiu	a1,v0,652
  44dc60:	8ca20000 	lw	v0,0(a1)
  44dc64:	00000000 	nop
  44dc68:	00402021 	move	a0,v0
  44dc6c:	8fc30018 	lw	v1,24(s8)
  44dc70:	00000000 	nop
  44dc74:	ac640290 	sw	a0,656(v1)
  44dc78:	24420001 	addiu	v0,v0,1
  44dc7c:	aca20000 	sw	v0,0(a1)
    st->st_last_dpd = tm;
  44dc80:	8fc3001c 	lw	v1,28(s8)
  44dc84:	8fc20018 	lw	v0,24(s8)
  44dc88:	00000000 	nop
  44dc8c:	ac430288 	sw	v1,648(v0)
    /* Only schedule a new timeout if there isn't one currently,
     * or if it would be sooner than the current timeout. */
    if (st->st_dpd_event == NULL
    || st->st_dpd_event->ev_time > tm + timeout)
  44dc90:	8fc20018 	lw	v0,24(s8)
  44dc94:	00000000 	nop
  44dc98:	8c420298 	lw	v0,664(v0)
  44dc9c:	00000000 	nop
  44dca0:	1040000f 	beqz	v0,44dce0 <dpd_outI+0x4a0>
  44dca4:	00000000 	nop
  44dca8:	8fc20018 	lw	v0,24(s8)
  44dcac:	00000000 	nop
  44dcb0:	8c440298 	lw	a0,664(v0)
  44dcb4:	8fc3001c 	lw	v1,28(s8)
  44dcb8:	8fc20028 	lw	v0,40(s8)
  44dcbc:	00000000 	nop
  44dcc0:	00621821 	addu	v1,v1,v0
  44dcc4:	8c820000 	lw	v0,0(a0)
  44dcc8:	00000000 	nop
  44dccc:	0062102a 	slt	v0,v1,v0
  44dcd0:	14400003 	bnez	v0,44dce0 <dpd_outI+0x4a0>
  44dcd4:	00000000 	nop
  44dcd8:	10000011 	b	44dd20 <dpd_outI+0x4e0>
  44dcdc:	00000000 	nop
    {
	delete_dpd_event(st);
  44dce0:	8fc40018 	lw	a0,24(s8)
  44dce4:	8f998794 	lw	t9,-30828(gp)
  44dce8:	00000000 	nop
  44dcec:	0320f809 	jalr	t9
  44dcf0:	00000000 	nop
  44dcf4:	8fdc0010 	lw	gp,16(s8)
  44dcf8:	00000000 	nop
	event_schedule(EVENT_DPD_TIMEOUT, timeout, st);
  44dcfc:	24040009 	li	a0,9
  44dd00:	8fc50028 	lw	a1,40(s8)
  44dd04:	8fc60018 	lw	a2,24(s8)
  44dd08:	8f998410 	lw	t9,-31728(gp)
  44dd0c:	00000000 	nop
  44dd10:	0320f809 	jalr	t9
  44dd14:	00000000 	nop
  44dd18:	8fdc0010 	lw	gp,16(s8)
  44dd1c:	00000000 	nop
    }
}
  44dd20:	03c0e821 	move	sp,s8
  44dd24:	8fbf0038 	lw	ra,56(sp)
  44dd28:	8fbe0034 	lw	s8,52(sp)
  44dd2c:	27bd0040 	addiu	sp,sp,64
  44dd30:	03e00008 	jr	ra
  44dd34:	00000000 	nop

0044dd38 <dpd_inI_outR>:
  44dd38:	3c1c0fbc 	lui	gp,0xfbc
  44dd3c:	279cec38 	addiu	gp,gp,-5064
  44dd40:	0399e021 	addu	gp,gp,t9
  44dd44:	27bdffb8 	addiu	sp,sp,-72
  44dd48:	afbc0010 	sw	gp,16(sp)
  44dd4c:	afbf0040 	sw	ra,64(sp)
  44dd50:	afbe003c 	sw	s8,60(sp)
  44dd54:	afbc0038 	sw	gp,56(sp)
  44dd58:	03a0f021 	move	s8,sp
  44dd5c:	afc40048 	sw	a0,72(s8)
  44dd60:	afc5004c 	sw	a1,76(s8)
  44dd64:	afc60050 	sw	a2,80(s8)

stf_status
dpd_inI_outR(struct state *st, struct isakmp_notification *const n, pb_stream *n_pbs)
{
    time_t tm = now();
  44dd68:	8f998b58 	lw	t9,-29864(gp)
  44dd6c:	00000000 	nop
  44dd70:	0320f809 	jalr	t9
  44dd74:	00000000 	nop
  44dd78:	8fdc0010 	lw	gp,16(s8)
  44dd7c:	afc20018 	sw	v0,24(s8)
    u_int32_t seqno;

    if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  44dd80:	8fc20048 	lw	v0,72(s8)
  44dd84:	00000000 	nop
  44dd88:	8c43014c 	lw	v1,332(v0)
  44dd8c:	24020009 	li	v0,9
  44dd90:	1062002c 	beq	v1,v0,44de44 <dpd_inI_outR+0x10c>
  44dd94:	00000000 	nop
  44dd98:	8fc20048 	lw	v0,72(s8)
  44dd9c:	00000000 	nop
  44dda0:	8c43014c 	lw	v1,332(v0)
  44dda4:	2402000a 	li	v0,10
  44dda8:	10620026 	beq	v1,v0,44de44 <dpd_inI_outR+0x10c>
  44ddac:	00000000 	nop
  44ddb0:	8fc20048 	lw	v0,72(s8)
  44ddb4:	00000000 	nop
  44ddb8:	8c43014c 	lw	v1,332(v0)
  44ddbc:	2402000e 	li	v0,14
  44ddc0:	10620020 	beq	v1,v0,44de44 <dpd_inI_outR+0x10c>
  44ddc4:	00000000 	nop
  44ddc8:	8fc20048 	lw	v0,72(s8)
  44ddcc:	00000000 	nop
  44ddd0:	8c43014c 	lw	v1,332(v0)
  44ddd4:	2402000f 	li	v0,15
  44ddd8:	1062001a 	beq	v1,v0,44de44 <dpd_inI_outR+0x10c>
  44dddc:	00000000 	nop
  44dde0:	8fc20048 	lw	v0,72(s8)
  44dde4:	00000000 	nop
  44dde8:	8c43014c 	lw	v1,332(v0)
  44ddec:	24020010 	li	v0,16
  44ddf0:	10620014 	beq	v1,v0,44de44 <dpd_inI_outR+0x10c>
  44ddf4:	00000000 	nop
  44ddf8:	8fc20048 	lw	v0,72(s8)
  44ddfc:	00000000 	nop
  44de00:	8c43014c 	lw	v1,332(v0)
  44de04:	24020011 	li	v0,17
  44de08:	1062000e 	beq	v1,v0,44de44 <dpd_inI_outR+0x10c>
  44de0c:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "received R_U_THERE for unestablished ISKAMP SA");
  44de10:	24040003 	li	a0,3
  44de14:	8f85802c 	lw	a1,-32724(gp)
  44de18:	00000000 	nop
  44de1c:	24a5f6b0 	addiu	a1,a1,-2384
  44de20:	8f998c48 	lw	t9,-29624(gp)
  44de24:	00000000 	nop
  44de28:	0320f809 	jalr	t9
  44de2c:	00000000 	nop
  44de30:	8fdc0010 	lw	gp,16(s8)
  44de34:	00000000 	nop
	return STF_IGNORE;
  44de38:	00001021 	move	v0,zero
  44de3c:	100000c8 	b	44e160 <dpd_inI_outR+0x428>
  44de40:	00000000 	nop
    }

    if (n->isan_spisize != COOKIE_SIZE * 2 || pbs_left(n_pbs) < COOKIE_SIZE * 2)
  44de44:	8fc2004c 	lw	v0,76(s8)
  44de48:	00000000 	nop
  44de4c:	90430009 	lbu	v1,9(v0)
  44de50:	24020010 	li	v0,16
  44de54:	1462000e 	bne	v1,v0,44de90 <dpd_inI_outR+0x158>
  44de58:	00000000 	nop
  44de5c:	8fc20050 	lw	v0,80(s8)
  44de60:	00000000 	nop
  44de64:	8c430014 	lw	v1,20(v0)
  44de68:	8fc20050 	lw	v0,80(s8)
  44de6c:	00000000 	nop
  44de70:	8c420010 	lw	v0,16(v0)
  44de74:	00000000 	nop
  44de78:	00621023 	subu	v0,v1,v0
  44de7c:	2c420010 	sltiu	v0,v0,16
  44de80:	14400003 	bnez	v0,44de90 <dpd_inI_outR+0x158>
  44de84:	00000000 	nop
  44de88:	10000012 	b	44ded4 <dpd_inI_outR+0x19c>
  44de8c:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "R_U_THERE has invalid SPI length (%d)", n->isan_spisize);
  44de90:	8fc2004c 	lw	v0,76(s8)
  44de94:	00000000 	nop
  44de98:	90420009 	lbu	v0,9(v0)
  44de9c:	24040003 	li	a0,3
  44dea0:	8f85802c 	lw	a1,-32724(gp)
  44dea4:	00000000 	nop
  44dea8:	24a5f6e0 	addiu	a1,a1,-2336
  44deac:	00403021 	move	a2,v0
  44deb0:	8f998c48 	lw	t9,-29624(gp)
  44deb4:	00000000 	nop
  44deb8:	0320f809 	jalr	t9
  44debc:	00000000 	nop
  44dec0:	8fdc0010 	lw	gp,16(s8)
  44dec4:	00000000 	nop
	return STF_FAIL + PAYLOAD_MALFORMED;
  44dec8:	24020014 	li	v0,20
  44decc:	100000a4 	b	44e160 <dpd_inI_outR+0x428>
  44ded0:	00000000 	nop
    }

    if (memcmp(n_pbs->cur, st->st_icookie, COOKIE_SIZE) != 0)
    {
#ifdef APPLY_CRISCO
        /* Ignore it, cisco sends odd icookies */
#else   
        loglog(RC_LOG_SERIOUS, "R_U_THERE has invalid icookie");
        return STF_FAIL + INVALID_COOKIE;
#endif
    }
    n_pbs->cur += COOKIE_SIZE;
  44ded4:	8fc20050 	lw	v0,80(s8)
  44ded8:	00000000 	nop
  44dedc:	8c420010 	lw	v0,16(v0)
  44dee0:	00000000 	nop
  44dee4:	24430008 	addiu	v1,v0,8
  44dee8:	8fc20050 	lw	v0,80(s8)
  44deec:	00000000 	nop
  44def0:	ac430010 	sw	v1,16(v0)

    if (memcmp(n_pbs->cur, st->st_rcookie, COOKIE_SIZE) != 0)
  44def4:	8fc20048 	lw	v0,72(s8)
  44def8:	00000000 	nop
  44defc:	24430108 	addiu	v1,v0,264
  44df00:	8fc20050 	lw	v0,80(s8)
  44df04:	00000000 	nop
  44df08:	8c440010 	lw	a0,16(v0)
  44df0c:	00602821 	move	a1,v1
  44df10:	24060008 	li	a2,8
  44df14:	8f9985c8 	lw	t9,-31288(gp)
  44df18:	00000000 	nop
  44df1c:	0320f809 	jalr	t9
  44df20:	00000000 	nop
  44df24:	8fdc0010 	lw	gp,16(s8)
  44df28:	1040000e 	beqz	v0,44df64 <dpd_inI_outR+0x22c>
  44df2c:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "R_U_THERE has invalid rcookie");
  44df30:	24040003 	li	a0,3
  44df34:	8f85802c 	lw	a1,-32724(gp)
  44df38:	00000000 	nop
  44df3c:	24a5f708 	addiu	a1,a1,-2296
  44df40:	8f998c48 	lw	t9,-29624(gp)
  44df44:	00000000 	nop
  44df48:	0320f809 	jalr	t9
  44df4c:	00000000 	nop
  44df50:	8fdc0010 	lw	gp,16(s8)
  44df54:	00000000 	nop
	return STF_FAIL + INVALID_COOKIE;
  44df58:	24020008 	li	v0,8
  44df5c:	10000080 	b	44e160 <dpd_inI_outR+0x428>
  44df60:	00000000 	nop
    }
    n_pbs->cur += COOKIE_SIZE;
  44df64:	8fc20050 	lw	v0,80(s8)
  44df68:	00000000 	nop
  44df6c:	8c420010 	lw	v0,16(v0)
  44df70:	00000000 	nop
  44df74:	24430008 	addiu	v1,v0,8
  44df78:	8fc20050 	lw	v0,80(s8)
  44df7c:	00000000 	nop
  44df80:	ac430010 	sw	v1,16(v0)

    if (pbs_left(n_pbs) != sizeof(seqno))
  44df84:	8fc20050 	lw	v0,80(s8)
  44df88:	00000000 	nop
  44df8c:	8c430014 	lw	v1,20(v0)
  44df90:	8fc20050 	lw	v0,80(s8)
  44df94:	00000000 	nop
  44df98:	8c420010 	lw	v0,16(v0)
  44df9c:	00000000 	nop
  44dfa0:	00621823 	subu	v1,v1,v0
  44dfa4:	24020004 	li	v0,4
  44dfa8:	10620017 	beq	v1,v0,44e008 <dpd_inI_outR+0x2d0>
  44dfac:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "R_U_THERE has invalid data length (%d)", (int) pbs_left(n_pbs));
  44dfb0:	8fc20050 	lw	v0,80(s8)
  44dfb4:	00000000 	nop
  44dfb8:	8c430014 	lw	v1,20(v0)
  44dfbc:	8fc20050 	lw	v0,80(s8)
  44dfc0:	00000000 	nop
  44dfc4:	8c420010 	lw	v0,16(v0)
  44dfc8:	00000000 	nop
  44dfcc:	00621023 	subu	v0,v1,v0
  44dfd0:	24040003 	li	a0,3
  44dfd4:	8f85802c 	lw	a1,-32724(gp)
  44dfd8:	00000000 	nop
  44dfdc:	24a5f728 	addiu	a1,a1,-2264
  44dfe0:	00403021 	move	a2,v0
  44dfe4:	8f998c48 	lw	t9,-29624(gp)
  44dfe8:	00000000 	nop
  44dfec:	0320f809 	jalr	t9
  44dff0:	00000000 	nop
  44dff4:	8fdc0010 	lw	gp,16(s8)
  44dff8:	00000000 	nop
	return STF_FAIL + PAYLOAD_MALFORMED;
  44dffc:	24020014 	li	v0,20
  44e000:	10000057 	b	44e160 <dpd_inI_outR+0x428>
  44e004:	00000000 	nop
    }

    seqno = ntohl(*(u_int32_t *)n_pbs->cur);
  44e008:	8fc20050 	lw	v0,80(s8)
  44e00c:	00000000 	nop
  44e010:	8c420010 	lw	v0,16(v0)
  44e014:	00000000 	nop
  44e018:	8c420000 	lw	v0,0(v0)
  44e01c:	00000000 	nop
  44e020:	afc2001c 	sw	v0,28(s8)
    if (st->st_dpd_peerseqno && seqno <= st->st_dpd_peerseqno) {
  44e024:	8fc20048 	lw	v0,72(s8)
  44e028:	00000000 	nop
  44e02c:	8c420294 	lw	v0,660(v0)
  44e030:	00000000 	nop
  44e034:	10400016 	beqz	v0,44e090 <dpd_inI_outR+0x358>
  44e038:	00000000 	nop
  44e03c:	8fc20048 	lw	v0,72(s8)
  44e040:	00000000 	nop
  44e044:	8c430294 	lw	v1,660(v0)
  44e048:	8fc2001c 	lw	v0,28(s8)
  44e04c:	00000000 	nop
  44e050:	0062102b 	sltu	v0,v1,v0
  44e054:	1440000e 	bnez	v0,44e090 <dpd_inI_outR+0x358>
  44e058:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "received old or duplicate R_U_THERE");
  44e05c:	24040003 	li	a0,3
  44e060:	8f85802c 	lw	a1,-32724(gp)
  44e064:	00000000 	nop
  44e068:	24a5f750 	addiu	a1,a1,-2224
  44e06c:	8f998c48 	lw	t9,-29624(gp)
  44e070:	00000000 	nop
  44e074:	0320f809 	jalr	t9
  44e078:	00000000 	nop
  44e07c:	8fdc0010 	lw	gp,16(s8)
  44e080:	00000000 	nop
	return STF_IGNORE;
  44e084:	00001021 	move	v0,zero
  44e088:	10000035 	b	44e160 <dpd_inI_outR+0x428>
  44e08c:	00000000 	nop
    }

    st->st_dpd_peerseqno = seqno;
  44e090:	8fc3001c 	lw	v1,28(s8)
  44e094:	8fc20048 	lw	v0,72(s8)
  44e098:	00000000 	nop
  44e09c:	ac430294 	sw	v1,660(v0)
    delete_dpd_event(st);
  44e0a0:	8fc40048 	lw	a0,72(s8)
  44e0a4:	8f998794 	lw	t9,-30828(gp)
  44e0a8:	00000000 	nop
  44e0ac:	0320f809 	jalr	t9
  44e0b0:	00000000 	nop
  44e0b4:	8fdc0010 	lw	gp,16(s8)
  44e0b8:	00000000 	nop

    if (send_isakmp_notification(st, R_U_THERE_ACK, n_pbs->cur, pbs_left(n_pbs)) != STF_IGNORE)
  44e0bc:	8fc20050 	lw	v0,80(s8)
  44e0c0:	00000000 	nop
  44e0c4:	8c430014 	lw	v1,20(v0)
  44e0c8:	8fc20050 	lw	v0,80(s8)
  44e0cc:	00000000 	nop
  44e0d0:	8c420010 	lw	v0,16(v0)
  44e0d4:	00000000 	nop
  44e0d8:	00621823 	subu	v1,v1,v0
  44e0dc:	8fc40048 	lw	a0,72(s8)
  44e0e0:	34058d29 	li	a1,0x8d29
  44e0e4:	8fc20050 	lw	v0,80(s8)
  44e0e8:	00000000 	nop
  44e0ec:	8c460010 	lw	a2,16(v0)
  44e0f0:	00603821 	move	a3,v1
  44e0f4:	8f998038 	lw	t9,-32712(gp)
  44e0f8:	00000000 	nop
  44e0fc:	2739cf34 	addiu	t9,t9,-12492
  44e100:	00000000 	nop
  44e104:	0320f809 	jalr	t9
  44e108:	00000000 	nop
  44e10c:	8fdc0010 	lw	gp,16(s8)
  44e110:	1040000e 	beqz	v0,44e14c <dpd_inI_outR+0x414>
  44e114:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "could not send R_U_THERE_ACK");
  44e118:	24040003 	li	a0,3
  44e11c:	8f85802c 	lw	a1,-32724(gp)
  44e120:	00000000 	nop
  44e124:	24a5f774 	addiu	a1,a1,-2188
  44e128:	8f998c48 	lw	t9,-29624(gp)
  44e12c:	00000000 	nop
  44e130:	0320f809 	jalr	t9
  44e134:	00000000 	nop
  44e138:	8fdc0010 	lw	gp,16(s8)
  44e13c:	00000000 	nop
	return STF_IGNORE;
  44e140:	00001021 	move	v0,zero
  44e144:	10000006 	b	44e160 <dpd_inI_outR+0x428>
  44e148:	00000000 	nop
    }

    st->st_last_dpd = tm;
  44e14c:	8fc30018 	lw	v1,24(s8)
  44e150:	8fc20048 	lw	v0,72(s8)
  44e154:	00000000 	nop
  44e158:	ac430288 	sw	v1,648(v0)
    return STF_IGNORE;
  44e15c:	00001021 	move	v0,zero
}
  44e160:	03c0e821 	move	sp,s8
  44e164:	8fbf0040 	lw	ra,64(sp)
  44e168:	8fbe003c 	lw	s8,60(sp)
  44e16c:	27bd0048 	addiu	sp,sp,72
  44e170:	03e00008 	jr	ra
  44e174:	00000000 	nop

0044e178 <dpd_inR>:
  44e178:	3c1c0fbc 	lui	gp,0xfbc
  44e17c:	279ce7f8 	addiu	gp,gp,-6152
  44e180:	0399e021 	addu	gp,gp,t9
  44e184:	27bdffa8 	addiu	sp,sp,-88
  44e188:	afbc0010 	sw	gp,16(sp)
  44e18c:	afbf0050 	sw	ra,80(sp)
  44e190:	afbe004c 	sw	s8,76(sp)
  44e194:	afbc0048 	sw	gp,72(sp)
  44e198:	03a0f021 	move	s8,sp
  44e19c:	afc40058 	sw	a0,88(s8)
  44e1a0:	afc5005c 	sw	a1,92(s8)
  44e1a4:	afc60060 	sw	a2,96(s8)

stf_status
dpd_inR(struct state *st, struct isakmp_notification *const n, pb_stream *n_pbs)
{
    u_int32_t seqno;

    if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  44e1a8:	8fc20058 	lw	v0,88(s8)
  44e1ac:	00000000 	nop
  44e1b0:	8c43014c 	lw	v1,332(v0)
  44e1b4:	24020009 	li	v0,9
  44e1b8:	1062002c 	beq	v1,v0,44e26c <dpd_inR+0xf4>
  44e1bc:	00000000 	nop
  44e1c0:	8fc20058 	lw	v0,88(s8)
  44e1c4:	00000000 	nop
  44e1c8:	8c43014c 	lw	v1,332(v0)
  44e1cc:	2402000a 	li	v0,10
  44e1d0:	10620026 	beq	v1,v0,44e26c <dpd_inR+0xf4>
  44e1d4:	00000000 	nop
  44e1d8:	8fc20058 	lw	v0,88(s8)
  44e1dc:	00000000 	nop
  44e1e0:	8c43014c 	lw	v1,332(v0)
  44e1e4:	2402000e 	li	v0,14
  44e1e8:	10620020 	beq	v1,v0,44e26c <dpd_inR+0xf4>
  44e1ec:	00000000 	nop
  44e1f0:	8fc20058 	lw	v0,88(s8)
  44e1f4:	00000000 	nop
  44e1f8:	8c43014c 	lw	v1,332(v0)
  44e1fc:	2402000f 	li	v0,15
  44e200:	1062001a 	beq	v1,v0,44e26c <dpd_inR+0xf4>
  44e204:	00000000 	nop
  44e208:	8fc20058 	lw	v0,88(s8)
  44e20c:	00000000 	nop
  44e210:	8c43014c 	lw	v1,332(v0)
  44e214:	24020010 	li	v0,16
  44e218:	10620014 	beq	v1,v0,44e26c <dpd_inR+0xf4>
  44e21c:	00000000 	nop
  44e220:	8fc20058 	lw	v0,88(s8)
  44e224:	00000000 	nop
  44e228:	8c43014c 	lw	v1,332(v0)
  44e22c:	24020011 	li	v0,17
  44e230:	1062000e 	beq	v1,v0,44e26c <dpd_inR+0xf4>
  44e234:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "recevied R_U_THERE_ACK for unestablished ISKAMP SA");
  44e238:	24040003 	li	a0,3
  44e23c:	8f85802c 	lw	a1,-32724(gp)
  44e240:	00000000 	nop
  44e244:	24a5f794 	addiu	a1,a1,-2156
  44e248:	8f998c48 	lw	t9,-29624(gp)
  44e24c:	00000000 	nop
  44e250:	0320f809 	jalr	t9
  44e254:	00000000 	nop
  44e258:	8fdc0010 	lw	gp,16(s8)
  44e25c:	00000000 	nop
	return STF_FAIL;
  44e260:	24020004 	li	v0,4
  44e264:	10000082 	b	44e470 <dpd_inR+0x2f8>
  44e268:	00000000 	nop
    }

    if (n->isan_spisize != COOKIE_SIZE * 2 || pbs_left(n_pbs) < COOKIE_SIZE * 2)
  44e26c:	8fc2005c 	lw	v0,92(s8)
  44e270:	00000000 	nop
  44e274:	90430009 	lbu	v1,9(v0)
  44e278:	24020010 	li	v0,16
  44e27c:	1462000e 	bne	v1,v0,44e2b8 <dpd_inR+0x140>
  44e280:	00000000 	nop
  44e284:	8fc20060 	lw	v0,96(s8)
  44e288:	00000000 	nop
  44e28c:	8c430014 	lw	v1,20(v0)
  44e290:	8fc20060 	lw	v0,96(s8)
  44e294:	00000000 	nop
  44e298:	8c420010 	lw	v0,16(v0)
  44e29c:	00000000 	nop
  44e2a0:	00621023 	subu	v0,v1,v0
  44e2a4:	2c420010 	sltiu	v0,v0,16
  44e2a8:	14400003 	bnez	v0,44e2b8 <dpd_inR+0x140>
  44e2ac:	00000000 	nop
  44e2b0:	10000012 	b	44e2fc <dpd_inR+0x184>
  44e2b4:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "R_U_THERE_ACK has invalid SPI length (%d)", n->isan_spisize);
  44e2b8:	8fc2005c 	lw	v0,92(s8)
  44e2bc:	00000000 	nop
  44e2c0:	90420009 	lbu	v0,9(v0)
  44e2c4:	24040003 	li	a0,3
  44e2c8:	8f85802c 	lw	a1,-32724(gp)
  44e2cc:	00000000 	nop
  44e2d0:	24a5f7c8 	addiu	a1,a1,-2104
  44e2d4:	00403021 	move	a2,v0
  44e2d8:	8f998c48 	lw	t9,-29624(gp)
  44e2dc:	00000000 	nop
  44e2e0:	0320f809 	jalr	t9
  44e2e4:	00000000 	nop
  44e2e8:	8fdc0010 	lw	gp,16(s8)
  44e2ec:	00000000 	nop
	return STF_FAIL + PAYLOAD_MALFORMED;
  44e2f0:	24020014 	li	v0,20
  44e2f4:	1000005e 	b	44e470 <dpd_inR+0x2f8>
  44e2f8:	00000000 	nop
    }

    if (memcmp(n_pbs->cur, st->st_icookie, COOKIE_SIZE) != 0)
    {
#ifdef APPLY_CRISCO
        /* Ignore it, cisco sends odd icookies */
#else   
        loglog(RC_LOG_SERIOUS, "R_U_THERE_ACK has invalid icookie");
        return STF_FAIL + INVALID_COOKIE;
#endif
    }
    n_pbs->cur += COOKIE_SIZE;
  44e2fc:	8fc20060 	lw	v0,96(s8)
  44e300:	00000000 	nop
  44e304:	8c420010 	lw	v0,16(v0)
  44e308:	00000000 	nop
  44e30c:	24430008 	addiu	v1,v0,8
  44e310:	8fc20060 	lw	v0,96(s8)
  44e314:	00000000 	nop
  44e318:	ac430010 	sw	v1,16(v0)

    if (memcmp(n_pbs->cur, st->st_rcookie, COOKIE_SIZE) != 0)
    {
#ifdef APPLY_CRISCO
        /* Ignore it, cisco sends odd icookies */
#else   
        loglog(RC_LOG_SERIOUS, "R_U_THERE_ACK has invalid rcookie");
        return STF_FAIL + INVALID_COOKIE;
#endif
    }
    n_pbs->cur += COOKIE_SIZE;
  44e31c:	8fc20060 	lw	v0,96(s8)
  44e320:	00000000 	nop
  44e324:	8c420010 	lw	v0,16(v0)
  44e328:	00000000 	nop
  44e32c:	24430008 	addiu	v1,v0,8
  44e330:	8fc20060 	lw	v0,96(s8)
  44e334:	00000000 	nop
  44e338:	ac430010 	sw	v1,16(v0)

    if (pbs_left(n_pbs) != sizeof(seqno))
  44e33c:	8fc20060 	lw	v0,96(s8)
  44e340:	00000000 	nop
  44e344:	8c430014 	lw	v1,20(v0)
  44e348:	8fc20060 	lw	v0,96(s8)
  44e34c:	00000000 	nop
  44e350:	8c420010 	lw	v0,16(v0)
  44e354:	00000000 	nop
  44e358:	00621823 	subu	v1,v1,v0
  44e35c:	24020004 	li	v0,4
  44e360:	10620017 	beq	v1,v0,44e3c0 <dpd_inR+0x248>
  44e364:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "R_U_THERE_ACK has invalid data length (%d)", (int) pbs_left(n_pbs));
  44e368:	8fc20060 	lw	v0,96(s8)
  44e36c:	00000000 	nop
  44e370:	8c430014 	lw	v1,20(v0)
  44e374:	8fc20060 	lw	v0,96(s8)
  44e378:	00000000 	nop
  44e37c:	8c420010 	lw	v0,16(v0)
  44e380:	00000000 	nop
  44e384:	00621023 	subu	v0,v1,v0
  44e388:	24040003 	li	a0,3
  44e38c:	8f85802c 	lw	a1,-32724(gp)
  44e390:	00000000 	nop
  44e394:	24a5f7f4 	addiu	a1,a1,-2060
  44e398:	00403021 	move	a2,v0
  44e39c:	8f998c48 	lw	t9,-29624(gp)
  44e3a0:	00000000 	nop
  44e3a4:	0320f809 	jalr	t9
  44e3a8:	00000000 	nop
  44e3ac:	8fdc0010 	lw	gp,16(s8)
  44e3b0:	00000000 	nop
	return STF_FAIL + PAYLOAD_MALFORMED;
  44e3b4:	24020014 	li	v0,20
  44e3b8:	1000002d 	b	44e470 <dpd_inR+0x2f8>
  44e3bc:	00000000 	nop
    }

    seqno = ntohl(*(u_int32_t *)n_pbs->cur);
  44e3c0:	8fc20060 	lw	v0,96(s8)
  44e3c4:	00000000 	nop
  44e3c8:	8c420010 	lw	v0,16(v0)
  44e3cc:	00000000 	nop
  44e3d0:	8c420000 	lw	v0,0(v0)
  44e3d4:	00000000 	nop
  44e3d8:	afc20018 	sw	v0,24(s8)
    if (!st->st_dpd_expectseqno && seqno != st->st_dpd_expectseqno) {
  44e3dc:	8fc20058 	lw	v0,88(s8)
  44e3e0:	00000000 	nop
  44e3e4:	8c420290 	lw	v0,656(v0)
  44e3e8:	00000000 	nop
  44e3ec:	14400015 	bnez	v0,44e444 <dpd_inR+0x2cc>
  44e3f0:	00000000 	nop
  44e3f4:	8fc20058 	lw	v0,88(s8)
  44e3f8:	00000000 	nop
  44e3fc:	8c430290 	lw	v1,656(v0)
  44e400:	8fc20018 	lw	v0,24(s8)
  44e404:	00000000 	nop
  44e408:	1043000e 	beq	v0,v1,44e444 <dpd_inR+0x2cc>
  44e40c:	00000000 	nop
	loglog(RC_LOG_SERIOUS, "R_U_THERE_ACK has unexpected sequence number");
  44e410:	24040003 	li	a0,3
  44e414:	8f85802c 	lw	a1,-32724(gp)
  44e418:	00000000 	nop
  44e41c:	24a5f820 	addiu	a1,a1,-2016
  44e420:	8f998c48 	lw	t9,-29624(gp)
  44e424:	00000000 	nop
  44e428:	0320f809 	jalr	t9
  44e42c:	00000000 	nop
  44e430:	8fdc0010 	lw	gp,16(s8)
  44e434:	00000000 	nop
	return STF_FAIL + PAYLOAD_MALFORMED;
  44e438:	24020014 	li	v0,20
  44e43c:	1000000c 	b	44e470 <dpd_inR+0x2f8>
  44e440:	00000000 	nop
    }

    st->st_dpd_expectseqno = 0;
  44e444:	8fc20058 	lw	v0,88(s8)
  44e448:	00000000 	nop
  44e44c:	ac400290 	sw	zero,656(v0)
    delete_dpd_event(st);
  44e450:	8fc40058 	lw	a0,88(s8)
  44e454:	8f998794 	lw	t9,-30828(gp)
  44e458:	00000000 	nop
  44e45c:	0320f809 	jalr	t9
  44e460:	00000000 	nop
  44e464:	8fdc0010 	lw	gp,16(s8)
  44e468:	00000000 	nop
    return STF_IGNORE;
  44e46c:	00001021 	move	v0,zero
}
  44e470:	03c0e821 	move	sp,s8
  44e474:	8fbf0050 	lw	ra,80(sp)
  44e478:	8fbe004c 	lw	s8,76(sp)
  44e47c:	27bd0058 	addiu	sp,sp,88
  44e480:	03e00008 	jr	ra
  44e484:	00000000 	nop

0044e488 <dpd_timeout>:
  44e488:	3c1c0fbc 	lui	gp,0xfbc
  44e48c:	279ce4e8 	addiu	gp,gp,-6936
  44e490:	0399e021 	addu	gp,gp,t9
  44e494:	27bdffd0 	addiu	sp,sp,-48
  44e498:	afbc0010 	sw	gp,16(sp)
  44e49c:	afbf0028 	sw	ra,40(sp)
  44e4a0:	afbe0024 	sw	s8,36(sp)
  44e4a4:	afbc0020 	sw	gp,32(sp)
  44e4a8:	03a0f021 	move	s8,sp
  44e4ac:	afc40030 	sw	a0,48(s8)

void
dpd_timeout(struct state *st)
{
    int action;
    struct connection *c = st->st_connection;
  44e4b0:	8fc20030 	lw	v0,48(s8)
  44e4b4:	00000000 	nop
  44e4b8:	8c42000c 	lw	v0,12(v0)
  44e4bc:	00000000 	nop
  44e4c0:	afc2001c 	sw	v0,28(s8)

    action = st->st_connection->dpd_action;
  44e4c4:	8fc20030 	lw	v0,48(s8)
  44e4c8:	00000000 	nop
  44e4cc:	8c42000c 	lw	v0,12(v0)
  44e4d0:	00000000 	nop
  44e4d4:	8c42002c 	lw	v0,44(v0)
  44e4d8:	00000000 	nop
  44e4dc:	afc20018 	sw	v0,24(s8)

    passert(action == DPD_ACTION_HOLD || action == DPD_ACTION_CLEAR);
  44e4e0:	8fc30018 	lw	v1,24(s8)
  44e4e4:	24020001 	li	v0,1
  44e4e8:	10620012 	beq	v1,v0,44e534 <dpd_timeout+0xac>
  44e4ec:	00000000 	nop
  44e4f0:	8fc20018 	lw	v0,24(s8)
  44e4f4:	00000000 	nop
  44e4f8:	1040000e 	beqz	v0,44e534 <dpd_timeout+0xac>
  44e4fc:	00000000 	nop
  44e500:	8f84802c 	lw	a0,-32724(gp)
  44e504:	00000000 	nop
  44e508:	2484f850 	addiu	a0,a0,-1968
  44e50c:	8f85802c 	lw	a1,-32724(gp)
  44e510:	00000000 	nop
  44e514:	24a5d59c 	addiu	a1,a1,-10852
  44e518:	24061629 	li	a2,5673
  44e51c:	8f998bb8 	lw	t9,-29768(gp)
  44e520:	00000000 	nop
  44e524:	0320f809 	jalr	t9
  44e528:	00000000 	nop
  44e52c:	8fdc0010 	lw	gp,16(s8)
  44e530:	00000000 	nop

    loglog(RC_LOG_SERIOUS, "DPD: Info: No response from peer - declaring peer dead");
  44e534:	24040003 	li	a0,3
  44e538:	8f85802c 	lw	a1,-32724(gp)
  44e53c:	00000000 	nop
  44e540:	24a5f888 	addiu	a1,a1,-1912
  44e544:	8f998c48 	lw	t9,-29624(gp)
  44e548:	00000000 	nop
  44e54c:	0320f809 	jalr	t9
  44e550:	00000000 	nop
  44e554:	8fdc0010 	lw	gp,16(s8)
  44e558:	00000000 	nop

    /* delete the state, probably phase 2 */
    set_cur_connection(c);
  44e55c:	8fc2001c 	lw	v0,28(s8)
  44e560:	8f8188c8 	lw	at,-30520(gp)
  44e564:	00000000 	nop
  44e568:	ac220000 	sw	v0,0(at)
  44e56c:	8fc4001c 	lw	a0,28(s8)
  44e570:	8f998be4 	lw	t9,-29724(gp)
  44e574:	00000000 	nop
  44e578:	0320f809 	jalr	t9
  44e57c:	00000000 	nop
  44e580:	8fdc0010 	lw	gp,16(s8)
  44e584:	00000000 	nop
    plog("terminating SAs using this connection");
  44e588:	8f84802c 	lw	a0,-32724(gp)
  44e58c:	00000000 	nop
  44e590:	2484f8c0 	addiu	a0,a0,-1856
  44e594:	8f998abc 	lw	t9,-30020(gp)
  44e598:	00000000 	nop
  44e59c:	0320f809 	jalr	t9
  44e5a0:	00000000 	nop
  44e5a4:	8fdc0010 	lw	gp,16(s8)
  44e5a8:	00000000 	nop
    c->initiated = FALSE;
  44e5ac:	8fc2001c 	lw	v0,28(s8)
  44e5b0:	00000000 	nop
  44e5b4:	ac4001a0 	sw	zero,416(v0)
    delete_states_by_connection(c, TRUE);
  44e5b8:	8fc4001c 	lw	a0,28(s8)
  44e5bc:	24050001 	li	a1,1
  44e5c0:	8f998608 	lw	t9,-31224(gp)
  44e5c4:	00000000 	nop
  44e5c8:	0320f809 	jalr	t9
  44e5cc:	00000000 	nop
  44e5d0:	8fdc0010 	lw	gp,16(s8)
  44e5d4:	00000000 	nop
    reset_cur_connection();
  44e5d8:	8f8188c8 	lw	at,-30520(gp)
  44e5dc:	00000000 	nop
  44e5e0:	ac200000 	sw	zero,0(at)
  44e5e4:	8f82830c 	lw	v0,-31988(gp)
  44e5e8:	00000000 	nop
  44e5ec:	8c420000 	lw	v0,0(v0)
  44e5f0:	8f8184f8 	lw	at,-31496(gp)
  44e5f4:	00000000 	nop
  44e5f8:	ac220000 	sw	v0,0(at)

    if(action == DPD_ACTION_HOLD) {
  44e5fc:	8fc30018 	lw	v1,24(s8)
  44e600:	24020001 	li	v0,1
  44e604:	1462000c 	bne	v1,v0,44e638 <dpd_timeout+0x1b0>
  44e608:	00000000 	nop
	/* dpdaction=hold - Wipe the SA's but %trap the eroute so we don't 
	   leak traffic.  Also, being in %trap means new packets will 
	   force an initiation of the conn again.  */
	loglog(RC_LOG_SERIOUS, "DPD: Info: Putting connection into %%trap");
  44e60c:	24040003 	li	a0,3
  44e610:	8f85802c 	lw	a1,-32724(gp)
  44e614:	00000000 	nop
  44e618:	24a5f8e8 	addiu	a1,a1,-1816
  44e61c:	8f998c48 	lw	t9,-29624(gp)
  44e620:	00000000 	nop
  44e624:	0320f809 	jalr	t9
  44e628:	00000000 	nop
  44e62c:	8fdc0010 	lw	gp,16(s8)
  44e630:	10000012 	b	44e67c <dpd_timeout+0x1f4>
  44e634:	00000000 	nop

    } else {
	/* dpdaction=clear - Wipe the SA, eroute - everything */

	loglog(RC_LOG_SERIOUS, "DPD: Info: Clearing Connection");
  44e638:	24040003 	li	a0,3
  44e63c:	8f85802c 	lw	a1,-32724(gp)
  44e640:	00000000 	nop
  44e644:	24a5f914 	addiu	a1,a1,-1772
  44e648:	8f998c48 	lw	t9,-29624(gp)
  44e64c:	00000000 	nop
  44e650:	0320f809 	jalr	t9
  44e654:	00000000 	nop
  44e658:	8fdc0010 	lw	gp,16(s8)
  44e65c:	00000000 	nop
	unroute_connection(c);
  44e660:	8fc4001c 	lw	a0,28(s8)
  44e664:	8f9983a0 	lw	t9,-31840(gp)
  44e668:	00000000 	nop
  44e66c:	0320f809 	jalr	t9
  44e670:	00000000 	nop
  44e674:	8fdc0010 	lw	gp,16(s8)
  44e678:	00000000 	nop
    }
}
  44e67c:	03c0e821 	move	sp,s8
  44e680:	8fbf0028 	lw	ra,40(sp)
  44e684:	8fbe0024 	lw	s8,36(sp)
  44e688:	27bd0030 	addiu	sp,sp,48
  44e68c:	03e00008 	jr	ra
  44e690:	00000000 	nop

0044e694 <main_id_and_auth>:
  44e694:	3c1c0fbc 	lui	gp,0xfbc
  44e698:	279ce2dc 	addiu	gp,gp,-7460
  44e69c:	0399e021 	addu	gp,gp,t9
  44e6a0:	27bdffd8 	addiu	sp,sp,-40
  44e6a4:	afbc0010 	sw	gp,16(sp)
  44e6a8:	afbf0020 	sw	ra,32(sp)
  44e6ac:	afbe001c 	sw	s8,28(sp)
  44e6b0:	afbc0018 	sw	gp,24(sp)
  44e6b4:	03a0f021 	move	s8,sp
  44e6b8:	00801021 	move	v0,a0
  44e6bc:	00a01821 	move	v1,a1
  44e6c0:	00c03821 	move	a3,a2
  44e6c4:	00003021 	move	a2,zero
  44e6c8:	8f998034 	lw	t9,-32716(gp)
  44e6cc:	00000000 	nop
  44e6d0:	27396e84 	addiu	t9,t9,28292
  44e6d4:	00000000 	nop
  44e6d8:	0320f809 	jalr	t9
  44e6dc:	00000000 	nop
  44e6e0:	8fdc0010 	lw	gp,16(s8)
  44e6e4:	00000000 	nop
  44e6e8:	03c0e821 	move	sp,s8
  44e6ec:	8fbf0020 	lw	ra,32(sp)
  44e6f0:	8fbe001c 	lw	s8,28(sp)
  44e6f4:	27bd0028 	addiu	sp,sp,40
  44e6f8:	03e00008 	jr	ra
  44e6fc:	00000000 	nop

0044e700 <aggr_id_and_auth>:
  44e700:	3c1c0fbc 	lui	gp,0xfbc
  44e704:	279ce270 	addiu	gp,gp,-7568
  44e708:	0399e021 	addu	gp,gp,t9
  44e70c:	27bdffd8 	addiu	sp,sp,-40
  44e710:	afbc0010 	sw	gp,16(sp)
  44e714:	afbf0020 	sw	ra,32(sp)
  44e718:	afbe001c 	sw	s8,28(sp)
  44e71c:	afbc0018 	sw	gp,24(sp)
  44e720:	03a0f021 	move	s8,sp
  44e724:	00801021 	move	v0,a0
  44e728:	00a01821 	move	v1,a1
  44e72c:	00c03821 	move	a3,a2
  44e730:	24060001 	li	a2,1
  44e734:	8f998034 	lw	t9,-32716(gp)
  44e738:	00000000 	nop
  44e73c:	27396e84 	addiu	t9,t9,28292
  44e740:	00000000 	nop
  44e744:	0320f809 	jalr	t9
  44e748:	00000000 	nop
  44e74c:	8fdc0010 	lw	gp,16(s8)
  44e750:	00000000 	nop
  44e754:	03c0e821 	move	sp,s8
  44e758:	8fbf0020 	lw	ra,32(sp)
  44e75c:	8fbe001c 	lw	s8,28(sp)
  44e760:	27bd0028 	addiu	sp,sp,40
  44e764:	03e00008 	jr	ra
  44e768:	00000000 	nop
  44e76c:	00000000 	nop

0044e770 <DBG_bare_shunt>:
  44e770:	3c1c0fbc 	lui	gp,0xfbc
  44e774:	279ce200 	addiu	gp,gp,-7680
  44e778:	0399e021 	addu	gp,gp,t9
  44e77c:	27bdfeb0 	addiu	sp,sp,-336
  44e780:	afbc0028 	sw	gp,40(sp)
  44e784:	afbf0148 	sw	ra,328(sp)
  44e788:	afbe0144 	sw	s8,324(sp)
  44e78c:	afbc0140 	sw	gp,320(sp)
  44e790:	03a0f021 	move	s8,sp
  44e794:	afc40150 	sw	a0,336(s8)
  44e798:	afc50154 	sw	a1,340(s8)
#ifdef DEBUG
static void
DBG_bare_shunt(const char *op, const struct bare_shunt *bs)
{
    DBG(DBG_KLIPS,
  44e79c:	8f8284f8 	lw	v0,-31496(gp)
  44e7a0:	00000000 	nop
  44e7a4:	8c420000 	lw	v0,0(v0)
  44e7a8:	00000000 	nop
  44e7ac:	30420040 	andi	v0,v0,0x40
  44e7b0:	1040004e 	beqz	v0,44e8ec <DBG_bare_shunt+0x17c>
  44e7b4:	00000000 	nop
  44e7b8:	8fc40154 	lw	a0,340(s8)
  44e7bc:	8f998a60 	lw	t9,-30112(gp)
  44e7c0:	00000000 	nop
  44e7c4:	0320f809 	jalr	t9
  44e7c8:	00000000 	nop
  44e7cc:	8fdc0028 	lw	gp,40(s8)
  44e7d0:	afc20030 	sw	v0,48(s8)
  44e7d4:	8fc20154 	lw	v0,340(s8)
  44e7d8:	00000000 	nop
  44e7dc:	24420020 	addiu	v0,v0,32
  44e7e0:	00402021 	move	a0,v0
  44e7e4:	8f998a60 	lw	t9,-30112(gp)
  44e7e8:	00000000 	nop
  44e7ec:	0320f809 	jalr	t9
  44e7f0:	00000000 	nop
  44e7f4:	8fdc0028 	lw	gp,40(s8)
  44e7f8:	afc20034 	sw	v0,52(s8)
  44e7fc:	8fc40154 	lw	a0,340(s8)
  44e800:	00002821 	move	a1,zero
  44e804:	27c60038 	addiu	a2,s8,56
  44e808:	2407004d 	li	a3,77
  44e80c:	8f998bbc 	lw	t9,-29764(gp)
  44e810:	00000000 	nop
  44e814:	0320f809 	jalr	t9
  44e818:	00000000 	nop
  44e81c:	8fdc0028 	lw	gp,40(s8)
  44e820:	8fc20154 	lw	v0,340(s8)
  44e824:	00000000 	nop
  44e828:	24420020 	addiu	v0,v0,32
  44e82c:	00402021 	move	a0,v0
  44e830:	00002821 	move	a1,zero
  44e834:	27c60088 	addiu	a2,s8,136
  44e838:	2407004d 	li	a3,77
  44e83c:	8f998bbc 	lw	t9,-29764(gp)
  44e840:	00000000 	nop
  44e844:	0320f809 	jalr	t9
  44e848:	00000000 	nop
  44e84c:	8fdc0028 	lw	gp,40(s8)
  44e850:	8fc20154 	lw	v0,340(s8)
  44e854:	00000000 	nop
  44e858:	24420040 	addiu	v0,v0,64
  44e85c:	00402021 	move	a0,v0
  44e860:	00002821 	move	a1,zero
  44e864:	27c600d8 	addiu	a2,s8,216
  44e868:	24070064 	li	a3,100
  44e86c:	8f998a3c 	lw	t9,-30148(gp)
  44e870:	00000000 	nop
  44e874:	0320f809 	jalr	t9
  44e878:	00000000 	nop
  44e87c:	8fdc0028 	lw	gp,40(s8)
  44e880:	8fc20030 	lw	v0,48(s8)
  44e884:	00000000 	nop
  44e888:	afa20010 	sw	v0,16(sp)
  44e88c:	27c20088 	addiu	v0,s8,136
  44e890:	afa20014 	sw	v0,20(sp)
  44e894:	8fc20034 	lw	v0,52(s8)
  44e898:	00000000 	nop
  44e89c:	afa20018 	sw	v0,24(sp)
  44e8a0:	27c200d8 	addiu	v0,s8,216
  44e8a4:	afa2001c 	sw	v0,28(sp)
  44e8a8:	8fc20154 	lw	v0,340(s8)
  44e8ac:	00000000 	nop
  44e8b0:	8c420064 	lw	v0,100(v0)
  44e8b4:	00000000 	nop
  44e8b8:	afa20020 	sw	v0,32(sp)
  44e8bc:	8f84802c 	lw	a0,-32724(gp)
  44e8c0:	00000000 	nop
  44e8c4:	2484f940 	addiu	a0,a0,-1728
  44e8c8:	8fc50150 	lw	a1,336(s8)
  44e8cc:	8fc60154 	lw	a2,340(s8)
  44e8d0:	27c70038 	addiu	a3,s8,56
  44e8d4:	8f9983b8 	lw	t9,-31816(gp)
  44e8d8:	00000000 	nop
  44e8dc:	0320f809 	jalr	t9
  44e8e0:	00000000 	nop
  44e8e4:	8fdc0028 	lw	gp,40(s8)
  44e8e8:	00000000 	nop
	{
	    int ourport = ntohs(portof(&(bs)->ours.addr));
	    int hisport = ntohs(portof(&(bs)->his.addr));
	    char ourst[SUBNETTOT_BUF];
	    char hist[SUBNETTOT_BUF];
	    char sat[SATOT_BUF];

	    subnettot(&(bs)->ours, 0, ourst, sizeof(ourst));
	    subnettot(&(bs)->his, 0, hist, sizeof(hist));
	    satot(&(bs)->said, 0, sat, sizeof(sat));
	    DBG_log("%s bare shunt %p %s:%d -> %s:%d => %s:%d"
		, op, (const void *)(bs), ourst, ourport, hist, hisport
		, sat, (bs)->transport_proto);
	});
}
  44e8ec:	03c0e821 	move	sp,s8
  44e8f0:	8fbf0148 	lw	ra,328(sp)
  44e8f4:	8fbe0144 	lw	s8,324(sp)
  44e8f8:	27bd0150 	addiu	sp,sp,336
  44e8fc:	03e00008 	jr	ra
  44e900:	00000000 	nop

0044e904 <init_pfkey>:
  44e904:	3c1c0fbc 	lui	gp,0xfbc
  44e908:	279ce06c 	addiu	gp,gp,-8084
  44e90c:	0399e021 	addu	gp,gp,t9
  44e910:	27bdffd0 	addiu	sp,sp,-48
  44e914:	afbc0010 	sw	gp,16(sp)
  44e918:	afbf0028 	sw	ra,40(sp)
  44e91c:	afbe0024 	sw	s8,36(sp)
  44e920:	afbc0020 	sw	gp,32(sp)
  44e924:	03a0f021 	move	s8,sp
#else /* !DEBUG */
#define DBG_bare_shunt(op, bs) {}
#endif /* !DEBUG */

/* information from /proc/net/ipsec_eroute */

struct eroute_info {
    unsigned long count;
    ip_subnet ours;
    ip_subnet his;
    ip_address dst;
    ip_said	said;
    int transport_proto;
    struct eroute_info *next;
};

/* The orphaned_holds table records %holds for which we
 * scan_proc_shunts found no representation of in any connection.
 * The corresponding ACQUIRE message might have been lost.
 */
struct eroute_info *orphaned_holds = NULL;


static bool shunt_eroute(struct connection *c
    , unsigned int op, const char *opname);	/* forward declaration */

bool no_klips = FALSE;	/* don't actually use KLIPS */

int pfkeyfd = NULL_FD;

typedef u_int32_t pfkey_seq_t;
static pfkey_seq_t pfkey_seq = 0;	/* sequence number for our PF_KEY messages */

static pid_t pid;
static void pfkey_register(void);

#define NE(x) { x, #x }	/* Name Entry -- shorthand for sparse_names */

static sparse_names pfkey_type_names = {
	NE(SADB_RESERVED),
	NE(SADB_GETSPI),
	NE(SADB_UPDATE),
	NE(SADB_ADD),
	NE(SADB_DELETE),
	NE(SADB_GET),
	NE(SADB_ACQUIRE),
	NE(SADB_REGISTER),
	NE(SADB_EXPIRE),
	NE(SADB_FLUSH),
	NE(SADB_DUMP),
	NE(SADB_X_PROMISC),
	NE(SADB_X_PCHANGE),
	NE(SADB_X_GRPSA),
	NE(SADB_X_ADDFLOW),
	NE(SADB_X_DELFLOW),
	NE(SADB_X_DEBUG),
#ifdef NAT_TRAVERSAL
	NE(SADB_X_NAT_T_NEW_MAPPING),
#endif
	NE(SADB_MAX),
	{ 0, sparse_end }
};

#ifdef NEVER /* not needed yet */
static sparse_names pfkey_ext_names = {
	NE(SADB_EXT_RESERVED),
	NE(SADB_EXT_SA),
	NE(SADB_EXT_LIFETIME_CURRENT),
	NE(SADB_EXT_LIFETIME_HARD),
	NE(SADB_EXT_LIFETIME_SOFT),
	NE(SADB_EXT_ADDRESS_SRC),
	NE(SADB_EXT_ADDRESS_DST),
	NE(SADB_EXT_ADDRESS_PROXY),
	NE(SADB_EXT_KEY_AUTH),
	NE(SADB_EXT_KEY_ENCRYPT),
	NE(SADB_EXT_IDENTITY_SRC),
	NE(SADB_EXT_IDENTITY_DST),
	NE(SADB_EXT_SENSITIVITY),
	NE(SADB_EXT_PROPOSAL),
	NE(SADB_EXT_SUPPORTED_AUTH),
	NE(SADB_EXT_SUPPORTED_ENCRYPT),
	NE(SADB_EXT_SPIRANGE),
	NE(SADB_X_EXT_KMPRIVATE),
	NE(SADB_X_EXT_SATYPE2),
	NE(SADB_X_EXT_SA2),
	NE(SADB_X_EXT_ADDRESS_DST2),
	NE(SADB_X_EXT_ADDRESS_SRC_FLOW),
	NE(SADB_X_EXT_ADDRESS_DST_FLOW),
	NE(SADB_X_EXT_ADDRESS_SRC_MASK),
	NE(SADB_X_EXT_ADDRESS_DST_MASK),
	NE(SADB_X_EXT_DEBUG),
	{ 0, sparse_end }
};
#endif /* NEVER */

#undef NE

static void
init_pfkey(void)
{
    pid = getpid();
  44e928:	8f998a90 	lw	t9,-30064(gp)
  44e92c:	00000000 	nop
  44e930:	0320f809 	jalr	t9
  44e934:	00000000 	nop
  44e938:	8fdc0010 	lw	gp,16(s8)
  44e93c:	00000000 	nop
  44e940:	8f818018 	lw	at,-32744(gp)
  44e944:	00000000 	nop
  44e948:	24217664 	addiu	at,at,30308
  44e94c:	ac220000 	sw	v0,0(at)

    /* open PF_KEY socket */

    pfkeyfd = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
  44e950:	2404000f 	li	a0,15
  44e954:	24050003 	li	a1,3
  44e958:	24060002 	li	a2,2
  44e95c:	8f998930 	lw	t9,-30416(gp)
  44e960:	00000000 	nop
  44e964:	0320f809 	jalr	t9
  44e968:	00000000 	nop
  44e96c:	8fdc0010 	lw	gp,16(s8)
  44e970:	00000000 	nop
  44e974:	8f818528 	lw	at,-31448(gp)
  44e978:	00000000 	nop
  44e97c:	ac220000 	sw	v0,0(at)

    if (pfkeyfd == -1)
  44e980:	8f838528 	lw	v1,-31448(gp)
  44e984:	00000000 	nop
  44e988:	8c630000 	lw	v1,0(v1)
  44e98c:	2402ffff 	li	v0,-1
  44e990:	14620013 	bne	v1,v0,44e9e0 <init_pfkey+0xdc>
  44e994:	00000000 	nop
	exit_log_errno((e, "socket() in init_pfkeyfd()"));
  44e998:	8f998234 	lw	t9,-32204(gp)
  44e99c:	00000000 	nop
  44e9a0:	0320f809 	jalr	t9
  44e9a4:	00000000 	nop
  44e9a8:	8fdc0010 	lw	gp,16(s8)
  44e9ac:	8c420000 	lw	v0,0(v0)
  44e9b0:	00000000 	nop
  44e9b4:	afc20018 	sw	v0,24(s8)
  44e9b8:	8fc40018 	lw	a0,24(s8)
  44e9bc:	8f85802c 	lw	a1,-32724(gp)
  44e9c0:	00000000 	nop
  44e9c4:	24a5fa84 	addiu	a1,a1,-1404
  44e9c8:	8f998154 	lw	t9,-32428(gp)
  44e9cc:	00000000 	nop
  44e9d0:	0320f809 	jalr	t9
  44e9d4:	00000000 	nop
  44e9d8:	8fdc0010 	lw	gp,16(s8)
  44e9dc:	00000000 	nop

#ifdef NEVER	/* apparently unsupported! */
    if (fcntl(pfkeyfd, F_SETFL, O_NONBLOCK) != 0)
	exit_log_errno((e, "fcntl() in init_pfkeyfd()"));
#endif

    DBG(DBG_KLIPS,
  44e9e0:	8f8284f8 	lw	v0,-31496(gp)
  44e9e4:	00000000 	nop
  44e9e8:	8c420000 	lw	v0,0(v0)
  44e9ec:	00000000 	nop
  44e9f0:	30420040 	andi	v0,v0,0x40
  44e9f4:	10400011 	beqz	v0,44ea3c <init_pfkey+0x138>
  44e9f8:	00000000 	nop
  44e9fc:	8f84802c 	lw	a0,-32724(gp)
  44ea00:	00000000 	nop
  44ea04:	2484faa0 	addiu	a0,a0,-1376
  44ea08:	8f858018 	lw	a1,-32744(gp)
  44ea0c:	00000000 	nop
  44ea10:	24a57664 	addiu	a1,a1,30308
  44ea14:	8ca50000 	lw	a1,0(a1)
  44ea18:	8f868528 	lw	a2,-31448(gp)
  44ea1c:	00000000 	nop
  44ea20:	8cc60000 	lw	a2,0(a2)
  44ea24:	8f9983b8 	lw	t9,-31816(gp)
  44ea28:	00000000 	nop
  44ea2c:	0320f809 	jalr	t9
  44ea30:	00000000 	nop
  44ea34:	8fdc0010 	lw	gp,16(s8)
  44ea38:	00000000 	nop
	DBG_log("process %u listening for PF_KEY_V2 on file descriptor %d", (unsigned)pid, pfkeyfd));

    pfkey_register();	/* register SA types that we can negotiate */
  44ea3c:	8f998038 	lw	t9,-32712(gp)
  44ea40:	00000000 	nop
  44ea44:	2739210c 	addiu	t9,t9,8460
  44ea48:	00000000 	nop
  44ea4c:	0320f809 	jalr	t9
  44ea50:	00000000 	nop
  44ea54:	8fdc0010 	lw	gp,16(s8)
  44ea58:	00000000 	nop
}
  44ea5c:	03c0e821 	move	sp,s8
  44ea60:	8fbf0028 	lw	ra,40(sp)
  44ea64:	8fbe0024 	lw	s8,36(sp)
  44ea68:	27bd0030 	addiu	sp,sp,48
  44ea6c:	03e00008 	jr	ra
  44ea70:	00000000 	nop

0044ea74 <pfkey_input_ready>:
  44ea74:	3c1c0fbc 	lui	gp,0xfbc
  44ea78:	279cdefc 	addiu	gp,gp,-8452
  44ea7c:	0399e021 	addu	gp,gp,t9
  44ea80:	27bdff38 	addiu	sp,sp,-200
  44ea84:	afbc0018 	sw	gp,24(sp)
  44ea88:	afbf00c0 	sw	ra,192(sp)
  44ea8c:	afbe00bc 	sw	s8,188(sp)
  44ea90:	afbc00b8 	sw	gp,184(sp)
  44ea94:	03a0f021 	move	s8,sp

/* Kinds of PF_KEY message from the kernel:
 * - response to a request from us
 *   + ACK/NAK
 *   + Register: indicates transforms supported by kernel
 *   + SPI requested by getspi
 * - Acquire, requesting us to deal with trapped clear packet
 * - expiration of of one of our SAs
 * - messages to other processes
 *
 * To minimize the effect on the event-driven structure of Pluto,
 * responses are dealt with synchronously.  We hope that the Kernel
 * produces them synchronously.  We must "read ahead" in the PF_KEY
 * stream, saving Acquire and Expiry messages that are encountered.
 * We ignore messages to other processes.
 */

typedef union {
	unsigned char bytes[PFKEYv2_MAX_MSGSIZE];
	struct sadb_msg msg;
    } pfkey_buf;

/* queue of unprocessed PF_KEY messages input from kernel
 * Note that the pfkey_buf may be partly allocated, reflecting
 * the variable length nature of the messages.  So the link field
 * must come first.
 */
typedef struct pfkey_item {
	struct pfkey_item *next;
	pfkey_buf buf;
    } pfkey_item;

static pfkey_item *pfkey_iq_head = NULL;	/* oldest */
static pfkey_item *pfkey_iq_tail;	/* youngest */

static bool
pfkey_input_ready(void)
{
    fd_set readfds;
    int ndes;
    struct timeval tm;

    tm.tv_sec = 0;	/* don't wait at all */
  44ea98:	afc000a8 	sw	zero,168(s8)
    tm.tv_usec = 0;
  44ea9c:	afc000ac 	sw	zero,172(s8)

    FD_ZERO(&readfds);	/* we only care about pfkeyfd */
  44eaa0:	27c20020 	addiu	v0,s8,32
  44eaa4:	afc200b4 	sw	v0,180(s8)
  44eaa8:	afc000b0 	sw	zero,176(s8)
  44eaac:	8fc200b0 	lw	v0,176(s8)
  44eab0:	00000000 	nop
  44eab4:	2c420020 	sltiu	v0,v0,32
  44eab8:	14400003 	bnez	v0,44eac8 <pfkey_input_ready+0x54>
  44eabc:	00000000 	nop
  44eac0:	1000000e 	b	44eafc <pfkey_input_ready+0x88>
  44eac4:	00000000 	nop
  44eac8:	8fc200b0 	lw	v0,176(s8)
  44eacc:	00000000 	nop
  44ead0:	00021880 	sll	v1,v0,0x2
  44ead4:	8fc200b4 	lw	v0,180(s8)
  44ead8:	00000000 	nop
  44eadc:	00431021 	addu	v0,v0,v1
  44eae0:	ac400000 	sw	zero,0(v0)
  44eae4:	8fc200b0 	lw	v0,176(s8)
  44eae8:	00000000 	nop
  44eaec:	24420001 	addiu	v0,v0,1
  44eaf0:	afc200b0 	sw	v0,176(s8)
  44eaf4:	1000ffed 	b	44eaac <pfkey_input_ready+0x38>
  44eaf8:	00000000 	nop
    FD_SET(pfkeyfd, &readfds);
  44eafc:	8f828528 	lw	v0,-31448(gp)
  44eb00:	00000000 	nop
  44eb04:	8c420000 	lw	v0,0(v0)
  44eb08:	00000000 	nop
  44eb0c:	00022142 	srl	a0,v0,0x5
  44eb10:	00801021 	move	v0,a0
  44eb14:	00021880 	sll	v1,v0,0x2
  44eb18:	27c20020 	addiu	v0,s8,32
  44eb1c:	00432821 	addu	a1,v0,v1
  44eb20:	00801021 	move	v0,a0
  44eb24:	00021880 	sll	v1,v0,0x2
  44eb28:	27c20020 	addiu	v0,s8,32
  44eb2c:	00432021 	addu	a0,v0,v1
  44eb30:	8f828528 	lw	v0,-31448(gp)
  44eb34:	00000000 	nop
  44eb38:	8c420000 	lw	v0,0(v0)
  44eb3c:	00000000 	nop
  44eb40:	3043001f 	andi	v1,v0,0x1f
  44eb44:	24020001 	li	v0,1
  44eb48:	00621804 	sllv	v1,v0,v1
  44eb4c:	8c820000 	lw	v0,0(a0)
  44eb50:	00000000 	nop
  44eb54:	00431025 	or	v0,v0,v1
  44eb58:	aca20000 	sw	v0,0(a1)

    do {
	ndes = select(pfkeyfd + 1, &readfds, NULL, NULL, &tm);
  44eb5c:	8f828528 	lw	v0,-31448(gp)
  44eb60:	00000000 	nop
  44eb64:	8c420000 	lw	v0,0(v0)
  44eb68:	00000000 	nop
  44eb6c:	24430001 	addiu	v1,v0,1
  44eb70:	27c200a8 	addiu	v0,s8,168
  44eb74:	afa20010 	sw	v0,16(sp)
  44eb78:	00602021 	move	a0,v1
  44eb7c:	27c50020 	addiu	a1,s8,32
  44eb80:	00003021 	move	a2,zero
  44eb84:	00003821 	move	a3,zero
  44eb88:	8f99892c 	lw	t9,-30420(gp)
  44eb8c:	00000000 	nop
  44eb90:	0320f809 	jalr	t9
  44eb94:	00000000 	nop
  44eb98:	8fdc0018 	lw	gp,24(s8)
  44eb9c:	afc200a0 	sw	v0,160(s8)
    } while (ndes == -1 && errno == EINTR);
  44eba0:	8fc300a0 	lw	v1,160(s8)
  44eba4:	2402ffff 	li	v0,-1
  44eba8:	1462000a 	bne	v1,v0,44ebd4 <pfkey_input_ready+0x160>
  44ebac:	00000000 	nop
  44ebb0:	8f998234 	lw	t9,-32204(gp)
  44ebb4:	00000000 	nop
  44ebb8:	0320f809 	jalr	t9
  44ebbc:	00000000 	nop
  44ebc0:	8fdc0018 	lw	gp,24(s8)
  44ebc4:	8c430000 	lw	v1,0(v0)
  44ebc8:	24020004 	li	v0,4
  44ebcc:	1062ffe3 	beq	v1,v0,44eb5c <pfkey_input_ready+0xe8>
  44ebd0:	00000000 	nop

    if (ndes < 0)
  44ebd4:	8fc200a0 	lw	v0,160(s8)
  44ebd8:	00000000 	nop
  44ebdc:	04410016 	bgez	v0,44ec38 <pfkey_input_ready+0x1c4>
  44ebe0:	00000000 	nop
    {
	log_errno((e, "select() failed in pfkey_get()"));
  44ebe4:	8f998234 	lw	t9,-32204(gp)
  44ebe8:	00000000 	nop
  44ebec:	0320f809 	jalr	t9
  44ebf0:	00000000 	nop
  44ebf4:	8fdc0018 	lw	gp,24(s8)
  44ebf8:	8c420000 	lw	v0,0(v0)
  44ebfc:	00000000 	nop
  44ec00:	afc200b4 	sw	v0,180(s8)
  44ec04:	8fc400b4 	lw	a0,180(s8)
  44ec08:	8f85802c 	lw	a1,-32724(gp)
  44ec0c:	00000000 	nop
  44ec10:	24a5fadc 	addiu	a1,a1,-1316
  44ec14:	8f9988ec 	lw	t9,-30484(gp)
  44ec18:	00000000 	nop
  44ec1c:	0320f809 	jalr	t9
  44ec20:	00000000 	nop
  44ec24:	8fdc0018 	lw	gp,24(s8)
  44ec28:	00000000 	nop
	return FALSE;
  44ec2c:	00001021 	move	v0,zero
  44ec30:	1000002d 	b	44ece8 <pfkey_input_ready+0x274>
  44ec34:	00000000 	nop
    }

    if (ndes == 0)
  44ec38:	8fc200a0 	lw	v0,160(s8)
  44ec3c:	00000000 	nop
  44ec40:	14400004 	bnez	v0,44ec54 <pfkey_input_ready+0x1e0>
  44ec44:	00000000 	nop
	return FALSE;	/* nothing to read */
  44ec48:	00001021 	move	v0,zero
  44ec4c:	10000026 	b	44ece8 <pfkey_input_ready+0x274>
  44ec50:	00000000 	nop

    passert(ndes == 1 && FD_ISSET(pfkeyfd, &readfds));
  44ec54:	8fc300a0 	lw	v1,160(s8)
  44ec58:	24020001 	li	v0,1
  44ec5c:	14620014 	bne	v1,v0,44ecb0 <pfkey_input_ready+0x23c>
  44ec60:	00000000 	nop
  44ec64:	8f828528 	lw	v0,-31448(gp)
  44ec68:	00000000 	nop
  44ec6c:	8c420000 	lw	v0,0(v0)
  44ec70:	00000000 	nop
  44ec74:	00021142 	srl	v0,v0,0x5
  44ec78:	00021880 	sll	v1,v0,0x2
  44ec7c:	27c20020 	addiu	v0,s8,32
  44ec80:	00432021 	addu	a0,v0,v1
  44ec84:	8f828528 	lw	v0,-31448(gp)
  44ec88:	00000000 	nop
  44ec8c:	8c420000 	lw	v0,0(v0)
  44ec90:	00000000 	nop
  44ec94:	3043001f 	andi	v1,v0,0x1f
  44ec98:	8c820000 	lw	v0,0(a0)
  44ec9c:	00000000 	nop
  44eca0:	00621007 	srav	v0,v0,v1
  44eca4:	30420001 	andi	v0,v0,0x1
  44eca8:	1440000e 	bnez	v0,44ece4 <pfkey_input_ready+0x270>
  44ecac:	00000000 	nop
  44ecb0:	8f84802c 	lw	a0,-32724(gp)
  44ecb4:	00000000 	nop
  44ecb8:	2484fafc 	addiu	a0,a0,-1284
  44ecbc:	8f85802c 	lw	a1,-32724(gp)
  44ecc0:	00000000 	nop
  44ecc4:	24a5fb28 	addiu	a1,a1,-1240
  44ecc8:	24060150 	li	a2,336
  44eccc:	8f998bb8 	lw	t9,-29768(gp)
  44ecd0:	00000000 	nop
  44ecd4:	0320f809 	jalr	t9
  44ecd8:	00000000 	nop
  44ecdc:	8fdc0018 	lw	gp,24(s8)
  44ece0:	00000000 	nop
    return TRUE;
  44ece4:	24020001 	li	v0,1
}
  44ece8:	03c0e821 	move	sp,s8
  44ecec:	8fbf00c0 	lw	ra,192(sp)
  44ecf0:	8fbe00bc 	lw	s8,188(sp)
  44ecf4:	27bd00c8 	addiu	sp,sp,200
  44ecf8:	03e00008 	jr	ra
  44ecfc:	00000000 	nop

0044ed00 <pfkey_get>:
  44ed00:	3c1c0fbc 	lui	gp,0xfbc
  44ed04:	279cdc70 	addiu	gp,gp,-9104
  44ed08:	0399e021 	addu	gp,gp,t9
  44ed0c:	27bdffd0 	addiu	sp,sp,-48
  44ed10:	afbc0010 	sw	gp,16(sp)
  44ed14:	afbf0028 	sw	ra,40(sp)
  44ed18:	afbe0024 	sw	s8,36(sp)
  44ed1c:	afbc0020 	sw	gp,32(sp)
  44ed20:	03a0f021 	move	s8,sp
  44ed24:	afc40030 	sw	a0,48(s8)

/* get a PF_KEY message from kernel.
 * Returns TRUE is message found, FALSE if no message pending,
 * and aborts or keeps trying when an error is encountered.
 * The only validation of the message is that the message length
 * received matches that in the message header, and that the message
 * is for this process.
 */
static bool
pfkey_get(pfkey_buf *buf)
{
    for (;;)
    {
	ssize_t len;

	if (!pfkey_input_ready())
  44ed28:	8f998038 	lw	t9,-32712(gp)
  44ed2c:	00000000 	nop
  44ed30:	2739ea74 	addiu	t9,t9,-5516
  44ed34:	00000000 	nop
  44ed38:	0320f809 	jalr	t9
  44ed3c:	00000000 	nop
  44ed40:	8fdc0010 	lw	gp,16(s8)
  44ed44:	14400004 	bnez	v0,44ed58 <pfkey_get+0x58>
  44ed48:	00000000 	nop
	    return FALSE;
  44ed4c:	00001021 	move	v0,zero
  44ed50:	100000cd 	b	44f088 <pfkey_get+0x388>
  44ed54:	00000000 	nop

	len = read(pfkeyfd, buf->bytes, sizeof(buf->bytes));
  44ed58:	8f848528 	lw	a0,-31448(gp)
  44ed5c:	00000000 	nop
  44ed60:	8c840000 	lw	a0,0(a0)
  44ed64:	8fc50030 	lw	a1,48(s8)
  44ed68:	24061000 	li	a2,4096
  44ed6c:	8f998664 	lw	t9,-31132(gp)
  44ed70:	00000000 	nop
  44ed74:	0320f809 	jalr	t9
  44ed78:	00000000 	nop
  44ed7c:	8fdc0010 	lw	gp,16(s8)
  44ed80:	afc20018 	sw	v0,24(s8)

	if (len < 0)
  44ed84:	8fc20018 	lw	v0,24(s8)
  44ed88:	00000000 	nop
  44ed8c:	04410022 	bgez	v0,44ee18 <pfkey_get+0x118>
  44ed90:	00000000 	nop
	{
	    if (errno == EAGAIN)
  44ed94:	8f998234 	lw	t9,-32204(gp)
  44ed98:	00000000 	nop
  44ed9c:	0320f809 	jalr	t9
  44eda0:	00000000 	nop
  44eda4:	8fdc0010 	lw	gp,16(s8)
  44eda8:	8c430000 	lw	v1,0(v0)
  44edac:	2402000b 	li	v0,11
  44edb0:	14620004 	bne	v1,v0,44edc4 <pfkey_get+0xc4>
  44edb4:	00000000 	nop
		return FALSE;
  44edb8:	00001021 	move	v0,zero
  44edbc:	100000b2 	b	44f088 <pfkey_get+0x388>
  44edc0:	00000000 	nop

	    log_errno((e, "read() failed in pfkey_get()"));
  44edc4:	8f998234 	lw	t9,-32204(gp)
  44edc8:	00000000 	nop
  44edcc:	0320f809 	jalr	t9
  44edd0:	00000000 	nop
  44edd4:	8fdc0010 	lw	gp,16(s8)
  44edd8:	8c420000 	lw	v0,0(v0)
  44eddc:	00000000 	nop
  44ede0:	afc2001c 	sw	v0,28(s8)
  44ede4:	8fc4001c 	lw	a0,28(s8)
  44ede8:	8f85802c 	lw	a1,-32724(gp)
  44edec:	00000000 	nop
  44edf0:	24a5fb34 	addiu	a1,a1,-1228
  44edf4:	8f9988ec 	lw	t9,-30484(gp)
  44edf8:	00000000 	nop
  44edfc:	0320f809 	jalr	t9
  44ee00:	00000000 	nop
  44ee04:	8fdc0010 	lw	gp,16(s8)
  44ee08:	00000000 	nop
	    return FALSE;
  44ee0c:	00001021 	move	v0,zero
  44ee10:	1000009d 	b	44f088 <pfkey_get+0x388>
  44ee14:	00000000 	nop
	}
	else if ((size_t) len < sizeof(buf->msg))
  44ee18:	8fc20018 	lw	v0,24(s8)
  44ee1c:	00000000 	nop
  44ee20:	2c420010 	sltiu	v0,v0,16
  44ee24:	1040000c 	beqz	v0,44ee58 <pfkey_get+0x158>
  44ee28:	00000000 	nop
	{
	    plog("pfkey_get read truncated PF_KEY message: %d bytes; ignoring message", (int)len);
  44ee2c:	8f84802c 	lw	a0,-32724(gp)
  44ee30:	00000000 	nop
  44ee34:	2484fb54 	addiu	a0,a0,-1196
  44ee38:	8fc50018 	lw	a1,24(s8)
  44ee3c:	8f998abc 	lw	t9,-30020(gp)
  44ee40:	00000000 	nop
  44ee44:	0320f809 	jalr	t9
  44ee48:	00000000 	nop
  44ee4c:	8fdc0010 	lw	gp,16(s8)
  44ee50:	1000ffb5 	b	44ed28 <pfkey_get+0x28>
  44ee54:	00000000 	nop
	}
	else if ((size_t) len != buf->msg.sadb_msg_len * IPSEC_PFKEYv2_ALIGN)
  44ee58:	8fc20030 	lw	v0,48(s8)
  44ee5c:	00000000 	nop
  44ee60:	94420004 	lhu	v0,4(v0)
  44ee64:	00000000 	nop
  44ee68:	000218c0 	sll	v1,v0,0x3
  44ee6c:	8fc20018 	lw	v0,24(s8)
  44ee70:	00000000 	nop
  44ee74:	10430011 	beq	v0,v1,44eebc <pfkey_get+0x1bc>
  44ee78:	00000000 	nop
	{
	    plog("pfkey_get read PF_KEY message with length %d that doesn't equal sadb_msg_len %u * %d; ignoring message"
  44ee7c:	8fc20030 	lw	v0,48(s8)
  44ee80:	00000000 	nop
  44ee84:	94420004 	lhu	v0,4(v0)
  44ee88:	8f84802c 	lw	a0,-32724(gp)
  44ee8c:	00000000 	nop
  44ee90:	2484fb98 	addiu	a0,a0,-1128
  44ee94:	8fc50018 	lw	a1,24(s8)
  44ee98:	00403021 	move	a2,v0
  44ee9c:	24070008 	li	a3,8
  44eea0:	8f998abc 	lw	t9,-30020(gp)
  44eea4:	00000000 	nop
  44eea8:	0320f809 	jalr	t9
  44eeac:	00000000 	nop
  44eeb0:	8fdc0010 	lw	gp,16(s8)
  44eeb4:	1000ff9c 	b	44ed28 <pfkey_get+0x28>
  44eeb8:	00000000 	nop
		, (int)len, (unsigned) buf->msg.sadb_msg_len, (int)IPSEC_PFKEYv2_ALIGN);
	}
	/*	for now, unsolicited messages can be: 
	 *	SADB_ACQUIRE, SADB_REGISTER 
	 */
	else if (!(buf->msg.sadb_msg_pid == (unsigned)pid
	|| (buf->msg.sadb_msg_pid == 0 && buf->msg.sadb_msg_type == SADB_ACQUIRE)
#ifdef NAT_TRAVERSAL
	|| (buf->msg.sadb_msg_pid == 0 && buf->msg.sadb_msg_type == SADB_X_NAT_T_NEW_MAPPING)
#endif
	|| (buf->msg.sadb_msg_type == SADB_REGISTER)))
  44eebc:	8fc20030 	lw	v0,48(s8)
  44eec0:	00000000 	nop
  44eec4:	8c43000c 	lw	v1,12(v0)
  44eec8:	8f828018 	lw	v0,-32744(gp)
  44eecc:	00000000 	nop
  44eed0:	24427664 	addiu	v0,v0,30308
  44eed4:	8c420000 	lw	v0,0(v0)
  44eed8:	00000000 	nop
  44eedc:	10620048 	beq	v1,v0,44f000 <pfkey_get+0x300>
  44eee0:	00000000 	nop
  44eee4:	8fc20030 	lw	v0,48(s8)
  44eee8:	00000000 	nop
  44eeec:	8c42000c 	lw	v0,12(v0)
  44eef0:	00000000 	nop
  44eef4:	14400009 	bnez	v0,44ef1c <pfkey_get+0x21c>
  44eef8:	00000000 	nop
  44eefc:	8fc20030 	lw	v0,48(s8)
  44ef00:	00000000 	nop
  44ef04:	90430001 	lbu	v1,1(v0)
  44ef08:	24020006 	li	v0,6
  44ef0c:	14620003 	bne	v1,v0,44ef1c <pfkey_get+0x21c>
  44ef10:	00000000 	nop
  44ef14:	1000003a 	b	44f000 <pfkey_get+0x300>
  44ef18:	00000000 	nop
  44ef1c:	8fc20030 	lw	v0,48(s8)
  44ef20:	00000000 	nop
  44ef24:	8c42000c 	lw	v0,12(v0)
  44ef28:	00000000 	nop
  44ef2c:	14400009 	bnez	v0,44ef54 <pfkey_get+0x254>
  44ef30:	00000000 	nop
  44ef34:	8fc20030 	lw	v0,48(s8)
  44ef38:	00000000 	nop
  44ef3c:	90430001 	lbu	v1,1(v0)
  44ef40:	24020011 	li	v0,17
  44ef44:	14620003 	bne	v1,v0,44ef54 <pfkey_get+0x254>
  44ef48:	00000000 	nop
  44ef4c:	1000002c 	b	44f000 <pfkey_get+0x300>
  44ef50:	00000000 	nop
  44ef54:	8fc20030 	lw	v0,48(s8)
  44ef58:	00000000 	nop
  44ef5c:	90430001 	lbu	v1,1(v0)
  44ef60:	24020007 	li	v0,7
  44ef64:	10620026 	beq	v1,v0,44f000 <pfkey_get+0x300>
  44ef68:	00000000 	nop
	{
	    /* not for us: ignore */
	    DBG(DBG_KLIPS,
  44ef6c:	8f8284f8 	lw	v0,-31496(gp)
  44ef70:	00000000 	nop
  44ef74:	8c420000 	lw	v0,0(v0)
  44ef78:	00000000 	nop
  44ef7c:	30420040 	andi	v0,v0,0x40
  44ef80:	1040ff69 	beqz	v0,44ed28 <pfkey_get+0x28>
  44ef84:	00000000 	nop
  44ef88:	8fc20030 	lw	v0,48(s8)
  44ef8c:	00000000 	nop
  44ef90:	90420001 	lbu	v0,1(v0)
  44ef94:	8f848018 	lw	a0,-32744(gp)
  44ef98:	00000000 	nop
  44ef9c:	248423b8 	addiu	a0,a0,9144
  44efa0:	00402821 	move	a1,v0
  44efa4:	8f99843c 	lw	t9,-31684(gp)
  44efa8:	00000000 	nop
  44efac:	0320f809 	jalr	t9
  44efb0:	00000000 	nop
  44efb4:	8fdc0010 	lw	gp,16(s8)
  44efb8:	00000000 	nop
  44efbc:	8f84802c 	lw	a0,-32724(gp)
  44efc0:	00000000 	nop
  44efc4:	2484fc00 	addiu	a0,a0,-1024
  44efc8:	00402821 	move	a1,v0
  44efcc:	8fc20030 	lw	v0,48(s8)
  44efd0:	00000000 	nop
  44efd4:	8c460008 	lw	a2,8(v0)
  44efd8:	8fc20030 	lw	v0,48(s8)
  44efdc:	00000000 	nop
  44efe0:	8c47000c 	lw	a3,12(v0)
  44efe4:	8f9983b8 	lw	t9,-31816(gp)
  44efe8:	00000000 	nop
  44efec:	0320f809 	jalr	t9
  44eff0:	00000000 	nop
  44eff4:	8fdc0010 	lw	gp,16(s8)
  44eff8:	1000ff4b 	b	44ed28 <pfkey_get+0x28>
  44effc:	00000000 	nop
		DBG_log("pfkey_get: ignoring PF_KEY %s message %u for process %u"
		    , sparse_val_show(pfkey_type_names, buf->msg.sadb_msg_type)
		    , buf->msg.sadb_msg_seq
		    , buf->msg.sadb_msg_pid));
	}
	else
	{
	    DBG(DBG_KLIPS,
  44f000:	8f8284f8 	lw	v0,-31496(gp)
  44f004:	00000000 	nop
  44f008:	8c420000 	lw	v0,0(v0)
  44f00c:	00000000 	nop
  44f010:	30420040 	andi	v0,v0,0x40
  44f014:	1040001b 	beqz	v0,44f084 <pfkey_get+0x384>
  44f018:	00000000 	nop
  44f01c:	8fc20030 	lw	v0,48(s8)
  44f020:	00000000 	nop
  44f024:	90420001 	lbu	v0,1(v0)
  44f028:	8f848018 	lw	a0,-32744(gp)
  44f02c:	00000000 	nop
  44f030:	248423b8 	addiu	a0,a0,9144
  44f034:	00402821 	move	a1,v0
  44f038:	8f99843c 	lw	t9,-31684(gp)
  44f03c:	00000000 	nop
  44f040:	0320f809 	jalr	t9
  44f044:	00000000 	nop
  44f048:	8fdc0010 	lw	gp,16(s8)
  44f04c:	00000000 	nop
  44f050:	8f84802c 	lw	a0,-32724(gp)
  44f054:	00000000 	nop
  44f058:	2484fc38 	addiu	a0,a0,-968
  44f05c:	00402821 	move	a1,v0
  44f060:	8fc20030 	lw	v0,48(s8)
  44f064:	00000000 	nop
  44f068:	8c460008 	lw	a2,8(v0)
  44f06c:	8f9983b8 	lw	t9,-31816(gp)
  44f070:	00000000 	nop
  44f074:	0320f809 	jalr	t9
  44f078:	00000000 	nop
  44f07c:	8fdc0010 	lw	gp,16(s8)
  44f080:	00000000 	nop
		DBG_log("pfkey_get: %s message %u"
		    , sparse_val_show(pfkey_type_names, buf->msg.sadb_msg_type)
		    , buf->msg.sadb_msg_seq));
	    return TRUE;
  44f084:	24020001 	li	v0,1
	}
    }
}
  44f088:	03c0e821 	move	sp,s8
  44f08c:	8fbf0028 	lw	ra,40(sp)
  44f090:	8fbe0024 	lw	s8,36(sp)
  44f094:	27bd0030 	addiu	sp,sp,48
  44f098:	03e00008 	jr	ra
  44f09c:	00000000 	nop

0044f0a0 <pfkey_get_response>:
  44f0a0:	3c1c0fbc 	lui	gp,0xfbc
  44f0a4:	279cd8d0 	addiu	gp,gp,-10032
  44f0a8:	0399e021 	addu	gp,gp,t9
  44f0ac:	27bdffd0 	addiu	sp,sp,-48
  44f0b0:	afbc0010 	sw	gp,16(sp)
  44f0b4:	afbf0028 	sw	ra,40(sp)
  44f0b8:	afbe0024 	sw	s8,36(sp)
  44f0bc:	afbc0020 	sw	gp,32(sp)
  44f0c0:	03a0f021 	move	s8,sp
  44f0c4:	afc40030 	sw	a0,48(s8)
  44f0c8:	afc50034 	sw	a1,52(s8)

/* get a response to a specific message */
static bool
pfkey_get_response(pfkey_buf *buf, pfkey_seq_t seq)
{
    while (pfkey_get(buf))
  44f0cc:	8fc40030 	lw	a0,48(s8)
  44f0d0:	8f998038 	lw	t9,-32712(gp)
  44f0d4:	00000000 	nop
  44f0d8:	2739ed00 	addiu	t9,t9,-4864
  44f0dc:	00000000 	nop
  44f0e0:	0320f809 	jalr	t9
  44f0e4:	00000000 	nop
  44f0e8:	8fdc0010 	lw	gp,16(s8)
  44f0ec:	14400003 	bnez	v0,44f0fc <pfkey_get_response+0x5c>
  44f0f0:	00000000 	nop
  44f0f4:	10000053 	b	44f244 <pfkey_get_response+0x1a4>
  44f0f8:	00000000 	nop
    {
	if (buf->msg.sadb_msg_pid == (unsigned)pid
	&& buf->msg.sadb_msg_seq == seq)
  44f0fc:	8fc20030 	lw	v0,48(s8)
  44f100:	00000000 	nop
  44f104:	8c43000c 	lw	v1,12(v0)
  44f108:	8f828018 	lw	v0,-32744(gp)
  44f10c:	00000000 	nop
  44f110:	24427664 	addiu	v0,v0,30308
  44f114:	8c420000 	lw	v0,0(v0)
  44f118:	00000000 	nop
  44f11c:	1462000b 	bne	v1,v0,44f14c <pfkey_get_response+0xac>
  44f120:	00000000 	nop
  44f124:	8fc20030 	lw	v0,48(s8)
  44f128:	00000000 	nop
  44f12c:	8c430008 	lw	v1,8(v0)
  44f130:	8fc20034 	lw	v0,52(s8)
  44f134:	00000000 	nop
  44f138:	14620004 	bne	v1,v0,44f14c <pfkey_get_response+0xac>
  44f13c:	00000000 	nop
	{
	    return TRUE;
  44f140:	24020001 	li	v0,1
  44f144:	10000040 	b	44f248 <pfkey_get_response+0x1a8>
  44f148:	00000000 	nop
	}
	else
	{
	    /* Not for us: queue it. */
	    size_t bl = buf->msg.sadb_msg_len * IPSEC_PFKEYv2_ALIGN;
  44f14c:	8fc20030 	lw	v0,48(s8)
  44f150:	00000000 	nop
  44f154:	94420004 	lhu	v0,4(v0)
  44f158:	00000000 	nop
  44f15c:	000210c0 	sll	v0,v0,0x3
  44f160:	afc20018 	sw	v0,24(s8)
	    pfkey_item *it = alloc_bytes(offsetof(pfkey_item, buf) + bl, "pfkey_item");
  44f164:	8fc20018 	lw	v0,24(s8)
  44f168:	00000000 	nop
  44f16c:	24420004 	addiu	v0,v0,4
  44f170:	00402021 	move	a0,v0
  44f174:	8f85802c 	lw	a1,-32724(gp)
  44f178:	00000000 	nop
  44f17c:	24a5fc54 	addiu	a1,a1,-940
  44f180:	8f998084 	lw	t9,-32636(gp)
  44f184:	00000000 	nop
  44f188:	0320f809 	jalr	t9
  44f18c:	00000000 	nop
  44f190:	8fdc0010 	lw	gp,16(s8)
  44f194:	afc2001c 	sw	v0,28(s8)

	    memcpy(&it->buf, buf, bl);
  44f198:	8fc2001c 	lw	v0,28(s8)
  44f19c:	00000000 	nop
  44f1a0:	24420004 	addiu	v0,v0,4
  44f1a4:	00402021 	move	a0,v0
  44f1a8:	8fc50030 	lw	a1,48(s8)
  44f1ac:	8fc60018 	lw	a2,24(s8)
  44f1b0:	8f998a30 	lw	t9,-30160(gp)
  44f1b4:	00000000 	nop
  44f1b8:	0320f809 	jalr	t9
  44f1bc:	00000000 	nop
  44f1c0:	8fdc0010 	lw	gp,16(s8)
  44f1c4:	00000000 	nop

	    it->next = NULL;
  44f1c8:	8fc2001c 	lw	v0,28(s8)
  44f1cc:	00000000 	nop
  44f1d0:	ac400000 	sw	zero,0(v0)
	    if (pfkey_iq_head == NULL)
  44f1d4:	8f828018 	lw	v0,-32744(gp)
  44f1d8:	00000000 	nop
  44f1dc:	24422458 	addiu	v0,v0,9304
  44f1e0:	8c420000 	lw	v0,0(v0)
  44f1e4:	00000000 	nop
  44f1e8:	14400008 	bnez	v0,44f20c <pfkey_get_response+0x16c>
  44f1ec:	00000000 	nop
	    {
		pfkey_iq_head = it;
  44f1f0:	8fc2001c 	lw	v0,28(s8)
  44f1f4:	8f818018 	lw	at,-32744(gp)
  44f1f8:	00000000 	nop
  44f1fc:	24212458 	addiu	at,at,9304
  44f200:	ac220000 	sw	v0,0(at)
  44f204:	10000008 	b	44f228 <pfkey_get_response+0x188>
  44f208:	00000000 	nop
	    }
	    else
	    {
		pfkey_iq_tail->next = it;
  44f20c:	8fc3001c 	lw	v1,28(s8)
  44f210:	8f828018 	lw	v0,-32744(gp)
  44f214:	00000000 	nop
  44f218:	24427668 	addiu	v0,v0,30312
  44f21c:	8c420000 	lw	v0,0(v0)
  44f220:	00000000 	nop
  44f224:	ac430000 	sw	v1,0(v0)
	    }
	    pfkey_iq_tail = it;
  44f228:	8fc2001c 	lw	v0,28(s8)
  44f22c:	8f818018 	lw	at,-32744(gp)
  44f230:	00000000 	nop
  44f234:	24217668 	addiu	at,at,30312
  44f238:	ac220000 	sw	v0,0(at)
  44f23c:	1000ffa3 	b	44f0cc <pfkey_get_response+0x2c>
  44f240:	00000000 	nop
	}
    }
    return FALSE;
  44f244:	00001021 	move	v0,zero
}
  44f248:	03c0e821 	move	sp,s8
  44f24c:	8fbf0028 	lw	ra,40(sp)
  44f250:	8fbe0024 	lw	s8,36(sp)
  44f254:	27bd0030 	addiu	sp,sp,48
  44f258:	03e00008 	jr	ra
  44f25c:	00000000 	nop

0044f260 <process_pfkey_register_response>:
  44f260:	3c1c0fbc 	lui	gp,0xfbc
  44f264:	279cd710 	addiu	gp,gp,-10480
  44f268:	0399e021 	addu	gp,gp,t9
  44f26c:	27bdffd0 	addiu	sp,sp,-48
  44f270:	afbc0010 	sw	gp,16(sp)
  44f274:	afbf0028 	sw	ra,40(sp)
  44f278:	afbe0024 	sw	s8,36(sp)
  44f27c:	afbc0020 	sw	gp,32(sp)
  44f280:	03a0f021 	move	s8,sp
  44f284:	afc40030 	sw	a0,48(s8)

/* Process a SADB_REGISTER message from KLIPS.
 * This will be a response to one of ours, but it may be asynchronous
 * (if KLIPS modules are loaded and unloaded).
 * Some sanity checking has already been performed.
 */
static void
process_pfkey_register_response(pfkey_buf *buf)
{
    /* Find out what the kernel can support.
     * In fact, the only question at the moment
     * is whether it can support IPcomp.
     * So we ignore the rest.
     * ??? we really should pay attention to what transforms are supported.
     */
    switch (buf->msg.sadb_msg_satype)
  44f288:	8fc20030 	lw	v0,48(s8)
  44f28c:	00000000 	nop
  44f290:	90420003 	lbu	v0,3(v0)
  44f294:	00000000 	nop
  44f298:	afc20018 	sw	v0,24(s8)
  44f29c:	24020003 	li	v0,3
  44f2a0:	8fc30018 	lw	v1,24(s8)
  44f2a4:	00000000 	nop
  44f2a8:	10620019 	beq	v1,v0,44f310 <process_pfkey_register_response+0xb0>
  44f2ac:	00000000 	nop
  44f2b0:	8fc30018 	lw	v1,24(s8)
  44f2b4:	00000000 	nop
  44f2b8:	28620004 	slti	v0,v1,4
  44f2bc:	10400008 	beqz	v0,44f2e0 <process_pfkey_register_response+0x80>
  44f2c0:	00000000 	nop
  44f2c4:	24020002 	li	v0,2
  44f2c8:	8fc30018 	lw	v1,24(s8)
  44f2cc:	00000000 	nop
  44f2d0:	1062001d 	beq	v1,v0,44f348 <process_pfkey_register_response+0xe8>
  44f2d4:	00000000 	nop
  44f2d8:	1000001b 	b	44f348 <process_pfkey_register_response+0xe8>
  44f2dc:	00000000 	nop
  44f2e0:	24020009 	li	v0,9
  44f2e4:	8fc30018 	lw	v1,24(s8)
  44f2e8:	00000000 	nop
  44f2ec:	10620016 	beq	v1,v0,44f348 <process_pfkey_register_response+0xe8>
  44f2f0:	00000000 	nop
  44f2f4:	2402000a 	li	v0,10
  44f2f8:	8fc30018 	lw	v1,24(s8)
  44f2fc:	00000000 	nop
  44f300:	1062000d 	beq	v1,v0,44f338 <process_pfkey_register_response+0xd8>
  44f304:	00000000 	nop
  44f308:	1000000f 	b	44f348 <process_pfkey_register_response+0xe8>
  44f30c:	00000000 	nop
    {
    case SADB_SATYPE_AH:
	break;
    case SADB_SATYPE_ESP:
#ifndef NO_KERNEL_ALG
	kernel_alg_register_pfkey(buf, sizeof (pfkey_buf));
  44f310:	8fc40030 	lw	a0,48(s8)
  44f314:	24051000 	li	a1,4096
  44f318:	8f9989ac 	lw	t9,-30292(gp)
  44f31c:	00000000 	nop
  44f320:	0320f809 	jalr	t9
  44f324:	00000000 	nop
  44f328:	8fdc0010 	lw	gp,16(s8)
  44f32c:	00000000 	nop
#endif
	break;
  44f330:	10000005 	b	44f348 <process_pfkey_register_response+0xe8>
  44f334:	00000000 	nop
    case SADB_X_SATYPE_COMP:
	/* ??? There ought to be an extension to list the
	 * supported algorithms, but RFC 2367 doesn't
	 * list one for IPcomp.  KLIPS uses SADB_X_CALG_DEFLATE.
	 * Since we only implement deflate, we'll assume this.
	 */
	can_do_IPcomp = TRUE;
  44f338:	24020001 	li	v0,1
  44f33c:	8f818774 	lw	at,-30860(gp)
  44f340:	00000000 	nop
  44f344:	ac220000 	sw	v0,0(at)
	break;
    case SADB_X_SATYPE_IPIP:
	break;
    default:
	break;
    }
}
  44f348:	03c0e821 	move	sp,s8
  44f34c:	8fbf0028 	lw	ra,40(sp)
  44f350:	8fbe0024 	lw	s8,36(sp)
  44f354:	27bd0030 	addiu	sp,sp,48
  44f358:	03e00008 	jr	ra
  44f35c:	00000000 	nop

0044f360 <record_and_initiate_opportunistic>:
  44f360:	3c1c0fbc 	lui	gp,0xfbc
  44f364:	279cd610 	addiu	gp,gp,-10736
  44f368:	0399e021 	addu	gp,gp,t9
  44f36c:	27bdff68 	addiu	sp,sp,-152
  44f370:	afbc0018 	sw	gp,24(sp)
  44f374:	afbf0094 	sw	ra,148(sp)
  44f378:	afbe0090 	sw	s8,144(sp)
  44f37c:	afbc008c 	sw	gp,140(sp)
  44f380:	afb00088 	sw	s0,136(sp)
  44f384:	03a0f021 	move	s8,sp
  44f388:	afc40098 	sw	a0,152(s8)
  44f38c:	afc5009c 	sw	a1,156(s8)
  44f390:	afc600a0 	sw	a2,160(s8)

static void
record_and_initiate_opportunistic(ip_subnet *ours, ip_subnet *his, int transport_proto)
{
    passert(samesubnettype(ours, his));
  44f394:	8fc40098 	lw	a0,152(s8)
  44f398:	8fc5009c 	lw	a1,156(s8)
  44f39c:	8f9985a4 	lw	t9,-31324(gp)
  44f3a0:	00000000 	nop
  44f3a4:	0320f809 	jalr	t9
  44f3a8:	00000000 	nop
  44f3ac:	8fdc0018 	lw	gp,24(s8)
  44f3b0:	1440000e 	bnez	v0,44f3ec <record_and_initiate_opportunistic+0x8c>
  44f3b4:	00000000 	nop
  44f3b8:	8f84802c 	lw	a0,-32724(gp)
  44f3bc:	00000000 	nop
  44f3c0:	2484fc60 	addiu	a0,a0,-928
  44f3c4:	8f85802c 	lw	a1,-32724(gp)
  44f3c8:	00000000 	nop
  44f3cc:	24a5fb28 	addiu	a1,a1,-1240
  44f3d0:	240601df 	li	a2,479
  44f3d4:	8f998bb8 	lw	t9,-29768(gp)
  44f3d8:	00000000 	nop
  44f3dc:	0320f809 	jalr	t9
  44f3e0:	00000000 	nop
  44f3e4:	8fdc0018 	lw	gp,24(s8)
  44f3e8:	00000000 	nop

    /* Add to bare shunt list.
     * We need to do this because the shunt was installed by KLIPS
     * which can't do this itself.
     */
    {
	struct bare_shunt *bs = alloc_thing(struct bare_shunt, "bare shunt");
  44f3ec:	24040074 	li	a0,116
  44f3f0:	8f85802c 	lw	a1,-32724(gp)
  44f3f4:	00000000 	nop
  44f3f8:	24a5fc7c 	addiu	a1,a1,-900
  44f3fc:	8f998084 	lw	t9,-32636(gp)
  44f400:	00000000 	nop
  44f404:	0320f809 	jalr	t9
  44f408:	00000000 	nop
  44f40c:	8fdc0018 	lw	gp,24(s8)
  44f410:	afc20020 	sw	v0,32(s8)

	bs->ours = *ours;
  44f414:	8fc40020 	lw	a0,32(s8)
  44f418:	8fc30098 	lw	v1,152(s8)
  44f41c:	00000000 	nop
  44f420:	8c620000 	lw	v0,0(v1)
  44f424:	00000000 	nop
  44f428:	ac820000 	sw	v0,0(a0)
  44f42c:	8c620004 	lw	v0,4(v1)
  44f430:	00000000 	nop
  44f434:	ac820004 	sw	v0,4(a0)
  44f438:	8c620008 	lw	v0,8(v1)
  44f43c:	00000000 	nop
  44f440:	ac820008 	sw	v0,8(a0)
  44f444:	8c62000c 	lw	v0,12(v1)
  44f448:	00000000 	nop
  44f44c:	ac82000c 	sw	v0,12(a0)
  44f450:	8c620010 	lw	v0,16(v1)
  44f454:	00000000 	nop
  44f458:	ac820010 	sw	v0,16(a0)
  44f45c:	8c620014 	lw	v0,20(v1)
  44f460:	00000000 	nop
  44f464:	ac820014 	sw	v0,20(a0)
  44f468:	8c620018 	lw	v0,24(v1)
  44f46c:	00000000 	nop
  44f470:	ac820018 	sw	v0,24(a0)
  44f474:	8c62001c 	lw	v0,28(v1)
  44f478:	00000000 	nop
  44f47c:	ac82001c 	sw	v0,28(a0)
	bs->his = *his;
  44f480:	8fc40020 	lw	a0,32(s8)
  44f484:	8fc3009c 	lw	v1,156(s8)
  44f488:	00000000 	nop
  44f48c:	8c620000 	lw	v0,0(v1)
  44f490:	00000000 	nop
  44f494:	ac820020 	sw	v0,32(a0)
  44f498:	8c620004 	lw	v0,4(v1)
  44f49c:	00000000 	nop
  44f4a0:	ac820024 	sw	v0,36(a0)
  44f4a4:	8c620008 	lw	v0,8(v1)
  44f4a8:	00000000 	nop
  44f4ac:	ac820028 	sw	v0,40(a0)
  44f4b0:	8c62000c 	lw	v0,12(v1)
  44f4b4:	00000000 	nop
  44f4b8:	ac82002c 	sw	v0,44(a0)
  44f4bc:	8c620010 	lw	v0,16(v1)
  44f4c0:	00000000 	nop
  44f4c4:	ac820030 	sw	v0,48(a0)
  44f4c8:	8c620014 	lw	v0,20(v1)
  44f4cc:	00000000 	nop
  44f4d0:	ac820034 	sw	v0,52(a0)
  44f4d4:	8c620018 	lw	v0,24(v1)
  44f4d8:	00000000 	nop
  44f4dc:	ac820038 	sw	v0,56(a0)
  44f4e0:	8c62001c 	lw	v0,28(v1)
  44f4e4:	00000000 	nop
  44f4e8:	ac82003c 	sw	v0,60(a0)
	bs->transport_proto = transport_proto;
  44f4ec:	8fc300a0 	lw	v1,160(s8)
  44f4f0:	8fc20020 	lw	v0,32(s8)
  44f4f4:	00000000 	nop
  44f4f8:	ac430064 	sw	v1,100(v0)

	bs->said.proto = SA_INT;
  44f4fc:	2403003d 	li	v1,61
  44f500:	8fc20020 	lw	v0,32(s8)
  44f504:	00000000 	nop
  44f508:	ac430060 	sw	v1,96(v0)
	bs->said.spi = htonl(SPI_HOLD);
  44f50c:	24030103 	li	v1,259
  44f510:	8fc20020 	lw	v0,32(s8)
  44f514:	00000000 	nop
  44f518:	ac43005c 	sw	v1,92(v0)
	bs->said.dst = *aftoinfo(subnettypeof(ours))->any;
  44f51c:	8fd00020 	lw	s0,32(s8)
  44f520:	8fc40098 	lw	a0,152(s8)
  44f524:	8f998248 	lw	t9,-32184(gp)
  44f528:	00000000 	nop
  44f52c:	0320f809 	jalr	t9
  44f530:	00000000 	nop
  44f534:	8fdc0018 	lw	gp,24(s8)
  44f538:	00402021 	move	a0,v0
  44f53c:	8f998b94 	lw	t9,-29804(gp)
  44f540:	00000000 	nop
  44f544:	0320f809 	jalr	t9
  44f548:	00000000 	nop
  44f54c:	8fdc0018 	lw	gp,24(s8)
  44f550:	8c430018 	lw	v1,24(v0)
  44f554:	00000000 	nop
  44f558:	8c620000 	lw	v0,0(v1)
  44f55c:	00000000 	nop
  44f560:	ae020040 	sw	v0,64(s0)
  44f564:	8c620004 	lw	v0,4(v1)
  44f568:	00000000 	nop
  44f56c:	ae020044 	sw	v0,68(s0)
  44f570:	8c620008 	lw	v0,8(v1)
  44f574:	00000000 	nop
  44f578:	ae020048 	sw	v0,72(s0)
  44f57c:	8c62000c 	lw	v0,12(v1)
  44f580:	00000000 	nop
  44f584:	ae02004c 	sw	v0,76(s0)
  44f588:	8c620010 	lw	v0,16(v1)
  44f58c:	00000000 	nop
  44f590:	ae020050 	sw	v0,80(s0)
  44f594:	8c620014 	lw	v0,20(v1)
  44f598:	00000000 	nop
  44f59c:	ae020054 	sw	v0,84(s0)
  44f5a0:	8c620018 	lw	v0,24(v1)
  44f5a4:	00000000 	nop
  44f5a8:	ae020058 	sw	v0,88(s0)

	bs->count = 0;
  44f5ac:	8fc20020 	lw	v0,32(s8)
  44f5b0:	00000000 	nop
  44f5b4:	ac400068 	sw	zero,104(v0)
	bs->last_activity = now();
  44f5b8:	8fd00020 	lw	s0,32(s8)
  44f5bc:	8f998b58 	lw	t9,-29864(gp)
  44f5c0:	00000000 	nop
  44f5c4:	0320f809 	jalr	t9
  44f5c8:	00000000 	nop
  44f5cc:	8fdc0018 	lw	gp,24(s8)
  44f5d0:	ae02006c 	sw	v0,108(s0)

	bs->next = bare_shunts;
  44f5d4:	8f838018 	lw	v1,-32744(gp)
  44f5d8:	00000000 	nop
  44f5dc:	246323a4 	addiu	v1,v1,9124
  44f5e0:	8c630000 	lw	v1,0(v1)
  44f5e4:	8fc20020 	lw	v0,32(s8)
  44f5e8:	00000000 	nop
  44f5ec:	ac430070 	sw	v1,112(v0)
	bare_shunts = bs;
  44f5f0:	8fc20020 	lw	v0,32(s8)
  44f5f4:	8f818018 	lw	at,-32744(gp)
  44f5f8:	00000000 	nop
  44f5fc:	242123a4 	addiu	at,at,9124
  44f600:	ac220000 	sw	v0,0(at)
	DBG_bare_shunt("add", bs);
  44f604:	8f84802c 	lw	a0,-32724(gp)
  44f608:	00000000 	nop
  44f60c:	2484fc88 	addiu	a0,a0,-888
  44f610:	8fc50020 	lw	a1,32(s8)
  44f614:	8f998038 	lw	t9,-32712(gp)
  44f618:	00000000 	nop
  44f61c:	2739e770 	addiu	t9,t9,-6288
  44f620:	00000000 	nop
  44f624:	0320f809 	jalr	t9
  44f628:	00000000 	nop
  44f62c:	8fdc0018 	lw	gp,24(s8)
  44f630:	00000000 	nop
    }

    /* actually initiate opportunism */
    {
	ip_address src, dst;

	networkof(ours, &src);
  44f634:	8fc40098 	lw	a0,152(s8)
  44f638:	27c50028 	addiu	a1,s8,40
  44f63c:	8f9985bc 	lw	t9,-31300(gp)
  44f640:	00000000 	nop
  44f644:	0320f809 	jalr	t9
  44f648:	00000000 	nop
  44f64c:	8fdc0018 	lw	gp,24(s8)
  44f650:	00000000 	nop
	networkof(his, &dst);
  44f654:	8fc4009c 	lw	a0,156(s8)
  44f658:	27c50048 	addiu	a1,s8,72
  44f65c:	8f9985bc 	lw	t9,-31300(gp)
  44f660:	00000000 	nop
  44f664:	0320f809 	jalr	t9
  44f668:	00000000 	nop
  44f66c:	8fdc0018 	lw	gp,24(s8)
  44f670:	00000000 	nop
	initiate_opportunistic(&src, &dst, transport_proto, TRUE, NULL_FD);
  44f674:	2402ffff 	li	v0,-1
  44f678:	afa20010 	sw	v0,16(sp)
  44f67c:	27c40028 	addiu	a0,s8,40
  44f680:	27c50048 	addiu	a1,s8,72
  44f684:	8fc600a0 	lw	a2,160(s8)
  44f688:	24070001 	li	a3,1
  44f68c:	8f998468 	lw	t9,-31640(gp)
  44f690:	00000000 	nop
  44f694:	0320f809 	jalr	t9
  44f698:	00000000 	nop
  44f69c:	8fdc0018 	lw	gp,24(s8)
  44f6a0:	00000000 	nop
    }

    /* if present, remove from orphaned_holds list.
     * NOTE: we do this last in case ours or his is a pointer into a member.
     */
    {
	struct eroute_info **pp, *p;

	for (pp = &orphaned_holds; (p = *pp) != NULL; pp = &p->next)
  44f6a4:	8f828c38 	lw	v0,-29640(gp)
  44f6a8:	00000000 	nop
  44f6ac:	afc20020 	sw	v0,32(s8)
  44f6b0:	8fc20020 	lw	v0,32(s8)
  44f6b4:	00000000 	nop
  44f6b8:	8c420000 	lw	v0,0(v0)
  44f6bc:	00000000 	nop
  44f6c0:	afc20068 	sw	v0,104(s8)
  44f6c4:	14400003 	bnez	v0,44f6d4 <record_and_initiate_opportunistic+0x374>
  44f6c8:	00000000 	nop
  44f6cc:	10000059 	b	44f834 <record_and_initiate_opportunistic+0x4d4>
  44f6d0:	00000000 	nop
	{
	    if (samesubnet(ours, &p->ours)
	    && samesubnet(his, &p->his)
	    && transport_proto == p->transport_proto
	    && portof(&ours->addr) == portof(&p->ours.addr)
	    && portof(&his->addr) == portof(&p->his.addr))
  44f6d4:	8fc20068 	lw	v0,104(s8)
  44f6d8:	00000000 	nop
  44f6dc:	24420004 	addiu	v0,v0,4
  44f6e0:	8fc40098 	lw	a0,152(s8)
  44f6e4:	00402821 	move	a1,v0
  44f6e8:	8f9983e8 	lw	t9,-31768(gp)
  44f6ec:	00000000 	nop
  44f6f0:	0320f809 	jalr	t9
  44f6f4:	00000000 	nop
  44f6f8:	8fdc0018 	lw	gp,24(s8)
  44f6fc:	10400047 	beqz	v0,44f81c <record_and_initiate_opportunistic+0x4bc>
  44f700:	00000000 	nop
  44f704:	8fc20068 	lw	v0,104(s8)
  44f708:	00000000 	nop
  44f70c:	24420024 	addiu	v0,v0,36
  44f710:	8fc4009c 	lw	a0,156(s8)
  44f714:	00402821 	move	a1,v0
  44f718:	8f9983e8 	lw	t9,-31768(gp)
  44f71c:	00000000 	nop
  44f720:	0320f809 	jalr	t9
  44f724:	00000000 	nop
  44f728:	8fdc0018 	lw	gp,24(s8)
  44f72c:	1040003b 	beqz	v0,44f81c <record_and_initiate_opportunistic+0x4bc>
  44f730:	00000000 	nop
  44f734:	8fc20068 	lw	v0,104(s8)
  44f738:	00000000 	nop
  44f73c:	8c430084 	lw	v1,132(v0)
  44f740:	8fc200a0 	lw	v0,160(s8)
  44f744:	00000000 	nop
  44f748:	14430034 	bne	v0,v1,44f81c <record_and_initiate_opportunistic+0x4bc>
  44f74c:	00000000 	nop
  44f750:	8fc40098 	lw	a0,152(s8)
  44f754:	8f998a60 	lw	t9,-30112(gp)
  44f758:	00000000 	nop
  44f75c:	0320f809 	jalr	t9
  44f760:	00000000 	nop
  44f764:	8fdc0018 	lw	gp,24(s8)
  44f768:	00408021 	move	s0,v0
  44f76c:	8fc20068 	lw	v0,104(s8)
  44f770:	00000000 	nop
  44f774:	24420004 	addiu	v0,v0,4
  44f778:	00402021 	move	a0,v0
  44f77c:	8f998a60 	lw	t9,-30112(gp)
  44f780:	00000000 	nop
  44f784:	0320f809 	jalr	t9
  44f788:	00000000 	nop
  44f78c:	8fdc0018 	lw	gp,24(s8)
  44f790:	16020022 	bne	s0,v0,44f81c <record_and_initiate_opportunistic+0x4bc>
  44f794:	00000000 	nop
  44f798:	8fc4009c 	lw	a0,156(s8)
  44f79c:	8f998a60 	lw	t9,-30112(gp)
  44f7a0:	00000000 	nop
  44f7a4:	0320f809 	jalr	t9
  44f7a8:	00000000 	nop
  44f7ac:	8fdc0018 	lw	gp,24(s8)
  44f7b0:	00408021 	move	s0,v0
  44f7b4:	8fc20068 	lw	v0,104(s8)
  44f7b8:	00000000 	nop
  44f7bc:	24420024 	addiu	v0,v0,36
  44f7c0:	00402021 	move	a0,v0
  44f7c4:	8f998a60 	lw	t9,-30112(gp)
  44f7c8:	00000000 	nop
  44f7cc:	0320f809 	jalr	t9
  44f7d0:	00000000 	nop
  44f7d4:	8fdc0018 	lw	gp,24(s8)
  44f7d8:	16020010 	bne	s0,v0,44f81c <record_and_initiate_opportunistic+0x4bc>
  44f7dc:	00000000 	nop
	    {
		*pp = p->next;
  44f7e0:	8fc20068 	lw	v0,104(s8)
  44f7e4:	00000000 	nop
  44f7e8:	8c430088 	lw	v1,136(v0)
  44f7ec:	8fc20020 	lw	v0,32(s8)
  44f7f0:	00000000 	nop
  44f7f4:	ac430000 	sw	v1,0(v0)
		pfree(p);
  44f7f8:	8fc40068 	lw	a0,104(s8)
  44f7fc:	8f998094 	lw	t9,-32620(gp)
  44f800:	00000000 	nop
  44f804:	0320f809 	jalr	t9
  44f808:	00000000 	nop
  44f80c:	8fdc0018 	lw	gp,24(s8)
  44f810:	00000000 	nop
		break;
  44f814:	10000007 	b	44f834 <record_and_initiate_opportunistic+0x4d4>
  44f818:	00000000 	nop
  44f81c:	8fc20068 	lw	v0,104(s8)
  44f820:	00000000 	nop
  44f824:	24420088 	addiu	v0,v0,136
  44f828:	afc20020 	sw	v0,32(s8)
  44f82c:	1000ffa0 	b	44f6b0 <record_and_initiate_opportunistic+0x350>
  44f830:	00000000 	nop
	    }
	}
    }
}
  44f834:	03c0e821 	move	sp,s8
  44f838:	8fbf0094 	lw	ra,148(sp)
  44f83c:	8fbe0090 	lw	s8,144(sp)
  44f840:	8fb00088 	lw	s0,136(sp)
  44f844:	27bd0098 	addiu	sp,sp,152
  44f848:	03e00008 	jr	ra
  44f84c:	00000000 	nop

0044f850 <process_pfkey_acquire>:
  44f850:	3c1c0fbc 	lui	gp,0xfbc
  44f854:	279cd120 	addiu	gp,gp,-12000
  44f858:	0399e021 	addu	gp,gp,t9
  44f85c:	27bdff78 	addiu	sp,sp,-136
  44f860:	afbc0010 	sw	gp,16(sp)
  44f864:	afbf0084 	sw	ra,132(sp)
  44f868:	afbe0080 	sw	s8,128(sp)
  44f86c:	afbc007c 	sw	gp,124(sp)
  44f870:	afb00078 	sw	s0,120(sp)
  44f874:	03a0f021 	move	s8,sp
  44f878:	afc40088 	sw	a0,136(s8)
  44f87c:	afc5008c 	sw	a1,140(s8)

/* Processs a SADB_ACQUIRE message from KLIPS.
 * Try to build an opportunistic connection!
 * See RFC 2367 "PF_KEY Key Management API, Version 2" 3.1.6
 * <base, address(SD), (address(P)), (identity(SD),) (sensitivity,) proposal>
 * - extensions for source and data IP addresses
 * - optional extensions for identity [not useful for us?]
 * - optional extension for sensitivity [not useful for us?]
 * - expension for proposal [not useful for us?]
 *
 * ??? We must use the sequence number in creating an SA.
 * We actually need to create up to 4 SAs each way.  Which one?
 * I guess it depends on the protocol present in the sadb_msg_satype.
 * For now, we'll ignore this requirement.
 *
 * ??? We need some mechanism to make sure that multiple ACQUIRE messages
 * don't cause a whole bunch of redundant negotiations.
 */
static void
process_pfkey_acquire(pfkey_buf *buf, struct sadb_ext *extensions[SADB_EXT_MAX + 1])
{
    struct sadb_address *srcx = (void *) extensions[SADB_EXT_ADDRESS_SRC];
  44f880:	8fc2008c 	lw	v0,140(s8)
  44f884:	00000000 	nop
  44f888:	24420014 	addiu	v0,v0,20
  44f88c:	8c420000 	lw	v0,0(v0)
  44f890:	00000000 	nop
  44f894:	afc20018 	sw	v0,24(s8)
    struct sadb_address *dstx = (void *) extensions[SADB_EXT_ADDRESS_DST];
  44f898:	8fc2008c 	lw	v0,140(s8)
  44f89c:	00000000 	nop
  44f8a0:	24420018 	addiu	v0,v0,24
  44f8a4:	8c420000 	lw	v0,0(v0)
  44f8a8:	00000000 	nop
  44f8ac:	afc2001c 	sw	v0,28(s8)
    int src_proto = srcx->sadb_address_proto;
  44f8b0:	8fc20018 	lw	v0,24(s8)
  44f8b4:	00000000 	nop
  44f8b8:	90420004 	lbu	v0,4(v0)
  44f8bc:	00000000 	nop
  44f8c0:	afc20020 	sw	v0,32(s8)
    int dst_proto = dstx->sadb_address_proto;
  44f8c4:	8fc2001c 	lw	v0,28(s8)
  44f8c8:	00000000 	nop
  44f8cc:	90420004 	lbu	v0,4(v0)
  44f8d0:	00000000 	nop
  44f8d4:	afc20024 	sw	v0,36(s8)
    ip_address *src = (ip_address*)&srcx[1];
  44f8d8:	8fc20018 	lw	v0,24(s8)
  44f8dc:	00000000 	nop
  44f8e0:	24420008 	addiu	v0,v0,8
  44f8e4:	afc20028 	sw	v0,40(s8)
    ip_address *dst = (ip_address*)&dstx[1];
  44f8e8:	8fc2001c 	lw	v0,28(s8)
  44f8ec:	00000000 	nop
  44f8f0:	24420008 	addiu	v0,v0,8
  44f8f4:	afc2002c 	sw	v0,44(s8)
    ip_subnet ours, his;
    err_t ugh = NULL;
  44f8f8:	afc00070 	sw	zero,112(s8)

    /* assumption: we're only catching our own outgoing packets
     * so source is our end and destination is the other end.
     * Verifying this is not actually convenient.
     *
     * This stylized control structure yields a complaint or
     * desired results.  For compactness, a pointer value is
     * treated as a boolean.  Logically, the structure is:
     * keep going as long as things are OK.
     */
    if (buf->msg.sadb_msg_pid == 0	/* we only wish to hear from kernel */
    && !(ugh = src_proto == dst_proto? NULL : "src and dst protocols differ")
    && !(ugh = addrtypeof(src) == addrtypeof(dst)? NULL : "conflicting address types")
    && !(ugh = addrtosubnet(src, &ours))
    && !(ugh = addrtosubnet(dst, &his)))
  44f8fc:	8fc20088 	lw	v0,136(s8)
  44f900:	00000000 	nop
  44f904:	8c42000c 	lw	v0,12(v0)
  44f908:	00000000 	nop
  44f90c:	14400052 	bnez	v0,44fa58 <process_pfkey_acquire+0x208>
  44f910:	00000000 	nop
  44f914:	8fc30020 	lw	v1,32(s8)
  44f918:	8fc20024 	lw	v0,36(s8)
  44f91c:	00000000 	nop
  44f920:	10620008 	beq	v1,v0,44f944 <process_pfkey_acquire+0xf4>
  44f924:	00000000 	nop
  44f928:	8f82802c 	lw	v0,-32724(gp)
  44f92c:	00000000 	nop
  44f930:	2442fc8c 	addiu	v0,v0,-884
  44f934:	00000000 	nop
  44f938:	afc20070 	sw	v0,112(s8)
  44f93c:	10000002 	b	44f948 <process_pfkey_acquire+0xf8>
  44f940:	00000000 	nop
  44f944:	afc00070 	sw	zero,112(s8)
  44f948:	8fc20070 	lw	v0,112(s8)
  44f94c:	00000000 	nop
  44f950:	afc20070 	sw	v0,112(s8)
  44f954:	14400040 	bnez	v0,44fa58 <process_pfkey_acquire+0x208>
  44f958:	00000000 	nop
  44f95c:	8fc40028 	lw	a0,40(s8)
  44f960:	8f9985d4 	lw	t9,-31276(gp)
  44f964:	00000000 	nop
  44f968:	0320f809 	jalr	t9
  44f96c:	00000000 	nop
  44f970:	8fdc0010 	lw	gp,16(s8)
  44f974:	00408021 	move	s0,v0
  44f978:	8fc4002c 	lw	a0,44(s8)
  44f97c:	8f9985d4 	lw	t9,-31276(gp)
  44f980:	00000000 	nop
  44f984:	0320f809 	jalr	t9
  44f988:	00000000 	nop
  44f98c:	8fdc0010 	lw	gp,16(s8)
  44f990:	12020008 	beq	s0,v0,44f9b4 <process_pfkey_acquire+0x164>
  44f994:	00000000 	nop
  44f998:	8f82802c 	lw	v0,-32724(gp)
  44f99c:	00000000 	nop
  44f9a0:	2442fcac 	addiu	v0,v0,-852
  44f9a4:	00000000 	nop
  44f9a8:	afc20074 	sw	v0,116(s8)
  44f9ac:	10000002 	b	44f9b8 <process_pfkey_acquire+0x168>
  44f9b0:	00000000 	nop
  44f9b4:	afc00074 	sw	zero,116(s8)
  44f9b8:	8fc20074 	lw	v0,116(s8)
  44f9bc:	00000000 	nop
  44f9c0:	afc20070 	sw	v0,112(s8)
  44f9c4:	14400024 	bnez	v0,44fa58 <process_pfkey_acquire+0x208>
  44f9c8:	00000000 	nop
  44f9cc:	8fc40028 	lw	a0,40(s8)
  44f9d0:	27c50030 	addiu	a1,s8,48
  44f9d4:	8f998afc 	lw	t9,-29956(gp)
  44f9d8:	00000000 	nop
  44f9dc:	0320f809 	jalr	t9
  44f9e0:	00000000 	nop
  44f9e4:	8fdc0010 	lw	gp,16(s8)
  44f9e8:	afc20070 	sw	v0,112(s8)
  44f9ec:	8fc20070 	lw	v0,112(s8)
  44f9f0:	00000000 	nop
  44f9f4:	14400018 	bnez	v0,44fa58 <process_pfkey_acquire+0x208>
  44f9f8:	00000000 	nop
  44f9fc:	8fc4002c 	lw	a0,44(s8)
  44fa00:	27c50050 	addiu	a1,s8,80
  44fa04:	8f998afc 	lw	t9,-29956(gp)
  44fa08:	00000000 	nop
  44fa0c:	0320f809 	jalr	t9
  44fa10:	00000000 	nop
  44fa14:	8fdc0010 	lw	gp,16(s8)
  44fa18:	afc20070 	sw	v0,112(s8)
  44fa1c:	8fc20070 	lw	v0,112(s8)
  44fa20:	00000000 	nop
  44fa24:	1440000c 	bnez	v0,44fa58 <process_pfkey_acquire+0x208>
  44fa28:	00000000 	nop
	record_and_initiate_opportunistic(&ours, &his, src_proto);
  44fa2c:	27c40030 	addiu	a0,s8,48
  44fa30:	27c50050 	addiu	a1,s8,80
  44fa34:	8fc60020 	lw	a2,32(s8)
  44fa38:	8f998038 	lw	t9,-32712(gp)
  44fa3c:	00000000 	nop
  44fa40:	2739f360 	addiu	t9,t9,-3232
  44fa44:	00000000 	nop
  44fa48:	0320f809 	jalr	t9
  44fa4c:	00000000 	nop
  44fa50:	8fdc0010 	lw	gp,16(s8)
  44fa54:	00000000 	nop

    if (ugh != NULL)
  44fa58:	8fc20070 	lw	v0,112(s8)
  44fa5c:	00000000 	nop
  44fa60:	1040000b 	beqz	v0,44fa90 <process_pfkey_acquire+0x240>
  44fa64:	00000000 	nop
	plog("SADB_ACQUIRE message from KLIPS malformed: %s", ugh);
  44fa68:	8f84802c 	lw	a0,-32724(gp)
  44fa6c:	00000000 	nop
  44fa70:	2484fcc8 	addiu	a0,a0,-824
  44fa74:	8fc50070 	lw	a1,112(s8)
  44fa78:	8f998abc 	lw	t9,-30020(gp)
  44fa7c:	00000000 	nop
  44fa80:	0320f809 	jalr	t9
  44fa84:	00000000 	nop
  44fa88:	8fdc0010 	lw	gp,16(s8)
  44fa8c:	00000000 	nop

}
  44fa90:	03c0e821 	move	sp,s8
  44fa94:	8fbf0084 	lw	ra,132(sp)
  44fa98:	8fbe0080 	lw	s8,128(sp)
  44fa9c:	8fb00078 	lw	s0,120(sp)
  44faa0:	27bd0088 	addiu	sp,sp,136
  44faa4:	03e00008 	jr	ra
  44faa8:	00000000 	nop

0044faac <pfkey_async>:
  44faac:	3c1c0fbc 	lui	gp,0xfbc
  44fab0:	279ccec4 	addiu	gp,gp,-12604
  44fab4:	0399e021 	addu	gp,gp,t9
  44fab8:	27bdff40 	addiu	sp,sp,-192
  44fabc:	afbc0020 	sw	gp,32(sp)
  44fac0:	afbf00b8 	sw	ra,184(sp)
  44fac4:	afbe00b4 	sw	s8,180(sp)
  44fac8:	afbc00b0 	sw	gp,176(sp)
  44facc:	03a0f021 	move	s8,sp
  44fad0:	afc400c0 	sw	a0,192(s8)

/* Handle PF_KEY messages from the kernel that are not dealt with
 * synchronously.  In other words, all but responses to PF_KEY messages
 * that we sent.
 */
static void
pfkey_async(pfkey_buf *buf)
{
    struct sadb_ext *extensions[SADB_EXT_MAX + 1];

    if (pfkey_msg_parse(&buf->msg, NULL, extensions, EXT_BITS_OUT))
  44fad4:	8fc400c0 	lw	a0,192(s8)
  44fad8:	00002821 	move	a1,zero
  44fadc:	27c60028 	addiu	a2,s8,40
  44fae0:	24070001 	li	a3,1
  44fae4:	8f99858c 	lw	t9,-31348(gp)
  44fae8:	00000000 	nop
  44faec:	0320f809 	jalr	t9
  44faf0:	00000000 	nop
  44faf4:	8fdc0020 	lw	gp,32(s8)
  44faf8:	10400029 	beqz	v0,44fba0 <pfkey_async+0xf4>
  44fafc:	00000000 	nop
    {
	plog("pfkey_async:"
  44fb00:	8fc200c0 	lw	v0,192(s8)
  44fb04:	00000000 	nop
  44fb08:	90420001 	lbu	v0,1(v0)
  44fb0c:	8f848018 	lw	a0,-32744(gp)
  44fb10:	00000000 	nop
  44fb14:	248423b8 	addiu	a0,a0,9144
  44fb18:	00402821 	move	a1,v0
  44fb1c:	8f99843c 	lw	t9,-31684(gp)
  44fb20:	00000000 	nop
  44fb24:	0320f809 	jalr	t9
  44fb28:	00000000 	nop
  44fb2c:	8fdc0020 	lw	gp,32(s8)
  44fb30:	00402821 	move	a1,v0
  44fb34:	8fc200c0 	lw	v0,192(s8)
  44fb38:	00000000 	nop
  44fb3c:	94460004 	lhu	a2,4(v0)
  44fb40:	8fc200c0 	lw	v0,192(s8)
  44fb44:	00000000 	nop
  44fb48:	90430002 	lbu	v1,2(v0)
  44fb4c:	8fc200c0 	lw	v0,192(s8)
  44fb50:	00000000 	nop
  44fb54:	8c420008 	lw	v0,8(v0)
  44fb58:	00000000 	nop
  44fb5c:	afa20010 	sw	v0,16(sp)
  44fb60:	8fc200c0 	lw	v0,192(s8)
  44fb64:	00000000 	nop
  44fb68:	8c42000c 	lw	v0,12(v0)
  44fb6c:	00000000 	nop
  44fb70:	afa20014 	sw	v0,20(sp)
  44fb74:	8f84802c 	lw	a0,-32724(gp)
  44fb78:	00000000 	nop
  44fb7c:	2484fcf8 	addiu	a0,a0,-776
  44fb80:	00603821 	move	a3,v1
  44fb84:	8f998abc 	lw	t9,-30020(gp)
  44fb88:	00000000 	nop
  44fb8c:	0320f809 	jalr	t9
  44fb90:	00000000 	nop
  44fb94:	8fdc0020 	lw	gp,32(s8)
  44fb98:	10000070 	b	44fd5c <pfkey_async+0x2b0>
  44fb9c:	00000000 	nop
	    " unparseable PF_KEY message:"
	    " %s len=%d, errno=%d, seq=%d, pid=%d; message ignored"
	    , sparse_val_show(pfkey_type_names, buf->msg.sadb_msg_type)
	    , buf->msg.sadb_msg_len
	    , buf->msg.sadb_msg_errno
	    , buf->msg.sadb_msg_seq
	    , buf->msg.sadb_msg_pid);
    }
    else
    {
	DBG(DBG_CONTROL | DBG_KLIPS, DBG_log("pfkey_async:"
  44fba0:	8f8284f8 	lw	v0,-31496(gp)
  44fba4:	00000000 	nop
  44fba8:	8c420000 	lw	v0,0(v0)
  44fbac:	00000000 	nop
  44fbb0:	30420050 	andi	v0,v0,0x50
  44fbb4:	1040002d 	beqz	v0,44fc6c <pfkey_async+0x1c0>
  44fbb8:	00000000 	nop
  44fbbc:	8fc200c0 	lw	v0,192(s8)
  44fbc0:	00000000 	nop
  44fbc4:	90420001 	lbu	v0,1(v0)
  44fbc8:	8f848018 	lw	a0,-32744(gp)
  44fbcc:	00000000 	nop
  44fbd0:	248423b8 	addiu	a0,a0,9144
  44fbd4:	00402821 	move	a1,v0
  44fbd8:	8f99843c 	lw	t9,-31684(gp)
  44fbdc:	00000000 	nop
  44fbe0:	0320f809 	jalr	t9
  44fbe4:	00000000 	nop
  44fbe8:	8fdc0020 	lw	gp,32(s8)
  44fbec:	00402821 	move	a1,v0
  44fbf0:	8fc200c0 	lw	v0,192(s8)
  44fbf4:	00000000 	nop
  44fbf8:	94460004 	lhu	a2,4(v0)
  44fbfc:	8fc200c0 	lw	v0,192(s8)
  44fc00:	00000000 	nop
  44fc04:	90430002 	lbu	v1,2(v0)
  44fc08:	8fc200c0 	lw	v0,192(s8)
  44fc0c:	00000000 	nop
  44fc10:	90420003 	lbu	v0,3(v0)
  44fc14:	00000000 	nop
  44fc18:	afa20010 	sw	v0,16(sp)
  44fc1c:	8fc200c0 	lw	v0,192(s8)
  44fc20:	00000000 	nop
  44fc24:	8c420008 	lw	v0,8(v0)
  44fc28:	00000000 	nop
  44fc2c:	afa20014 	sw	v0,20(sp)
  44fc30:	8fc200c0 	lw	v0,192(s8)
  44fc34:	00000000 	nop
  44fc38:	8c42000c 	lw	v0,12(v0)
  44fc3c:	00000000 	nop
  44fc40:	afa20018 	sw	v0,24(sp)
  44fc44:	8f84802c 	lw	a0,-32724(gp)
  44fc48:	00000000 	nop
  44fc4c:	2484fd58 	addiu	a0,a0,-680
  44fc50:	00603821 	move	a3,v1
  44fc54:	8f9983b8 	lw	t9,-31816(gp)
  44fc58:	00000000 	nop
  44fc5c:	0320f809 	jalr	t9
  44fc60:	00000000 	nop
  44fc64:	8fdc0020 	lw	gp,32(s8)
  44fc68:	00000000 	nop
	    " %s len=%u, errno=%u, satype=%u, seq=%u, pid=%u"
	    , sparse_val_show(pfkey_type_names, buf->msg.sadb_msg_type)
	    , buf->msg.sadb_msg_len
	    , buf->msg.sadb_msg_errno
	    , buf->msg.sadb_msg_satype
	    , buf->msg.sadb_msg_seq
	    , buf->msg.sadb_msg_pid));

	switch (buf->msg.sadb_msg_type)
  44fc6c:	8fc200c0 	lw	v0,192(s8)
  44fc70:	00000000 	nop
  44fc74:	90420001 	lbu	v0,1(v0)
  44fc78:	00000000 	nop
  44fc7c:	afc200a8 	sw	v0,168(s8)
  44fc80:	24020007 	li	v0,7
  44fc84:	8fc300a8 	lw	v1,168(s8)
  44fc88:	00000000 	nop
  44fc8c:	10620014 	beq	v1,v0,44fce0 <pfkey_async+0x234>
  44fc90:	00000000 	nop
  44fc94:	8fc300a8 	lw	v1,168(s8)
  44fc98:	00000000 	nop
  44fc9c:	28620008 	slti	v0,v1,8
  44fca0:	10400008 	beqz	v0,44fcc4 <pfkey_async+0x218>
  44fca4:	00000000 	nop
  44fca8:	24020006 	li	v0,6
  44fcac:	8fc300a8 	lw	v1,168(s8)
  44fcb0:	00000000 	nop
  44fcb4:	10620015 	beq	v1,v0,44fd0c <pfkey_async+0x260>
  44fcb8:	00000000 	nop
  44fcbc:	10000027 	b	44fd5c <pfkey_async+0x2b0>
  44fcc0:	00000000 	nop
  44fcc4:	24020011 	li	v0,17
  44fcc8:	8fc300a8 	lw	v1,168(s8)
  44fccc:	00000000 	nop
  44fcd0:	1062001a 	beq	v1,v0,44fd3c <pfkey_async+0x290>
  44fcd4:	00000000 	nop
  44fcd8:	10000020 	b	44fd5c <pfkey_async+0x2b0>
  44fcdc:	00000000 	nop
	{
	case SADB_REGISTER:
	    process_pfkey_register_response(buf);
  44fce0:	8fc400c0 	lw	a0,192(s8)
  44fce4:	8f998038 	lw	t9,-32712(gp)
  44fce8:	00000000 	nop
  44fcec:	2739f260 	addiu	t9,t9,-3488
  44fcf0:	00000000 	nop
  44fcf4:	0320f809 	jalr	t9
  44fcf8:	00000000 	nop
  44fcfc:	8fdc0020 	lw	gp,32(s8)
  44fd00:	00000000 	nop
	    break;
  44fd04:	10000015 	b	44fd5c <pfkey_async+0x2b0>
  44fd08:	00000000 	nop
	case SADB_ACQUIRE:
	    /* to simulate loss of ACQUIRE, delete this call */
	    process_pfkey_acquire(buf, extensions);
  44fd0c:	8fc400c0 	lw	a0,192(s8)
  44fd10:	27c50028 	addiu	a1,s8,40
  44fd14:	8f998038 	lw	t9,-32712(gp)
  44fd18:	00000000 	nop
  44fd1c:	2739f850 	addiu	t9,t9,-1968
  44fd20:	00000000 	nop
  44fd24:	0320f809 	jalr	t9
  44fd28:	00000000 	nop
  44fd2c:	8fdc0020 	lw	gp,32(s8)
  44fd30:	00000000 	nop
	    break;
  44fd34:	10000009 	b	44fd5c <pfkey_async+0x2b0>
  44fd38:	00000000 	nop
#ifdef NAT_TRAVERSAL
	case SADB_X_NAT_T_NEW_MAPPING:
	    process_pfkey_nat_t_new_mapping(&(buf->msg), extensions);
  44fd3c:	8fc400c0 	lw	a0,192(s8)
  44fd40:	27c50028 	addiu	a1,s8,40
  44fd44:	8f99822c 	lw	t9,-32212(gp)
  44fd48:	00000000 	nop
  44fd4c:	0320f809 	jalr	t9
  44fd50:	00000000 	nop
  44fd54:	8fdc0020 	lw	gp,32(s8)
  44fd58:	00000000 	nop
	    break;
#endif
	default:
	    /* ignored */
	    break;
	}
    }
}
  44fd5c:	03c0e821 	move	sp,s8
  44fd60:	8fbf00b8 	lw	ra,184(sp)
  44fd64:	8fbe00b4 	lw	s8,180(sp)
  44fd68:	27bd00c0 	addiu	sp,sp,192
  44fd6c:	03e00008 	jr	ra
  44fd70:	00000000 	nop

0044fd74 <pfkey_dequeue>:
  44fd74:	3c1c0fbc 	lui	gp,0xfbc
  44fd78:	279ccbfc 	addiu	gp,gp,-13316
  44fd7c:	0399e021 	addu	gp,gp,t9
  44fd80:	27bdffd0 	addiu	sp,sp,-48
  44fd84:	afbc0010 	sw	gp,16(sp)
  44fd88:	afbf0028 	sw	ra,40(sp)
  44fd8c:	afbe0024 	sw	s8,36(sp)
  44fd90:	afbc0020 	sw	gp,32(sp)
  44fd94:	03a0f021 	move	s8,sp
  44fd98:	00000000 	nop

/* asynchronous messages from our queue */
void
pfkey_dequeue(void)
{
    while (pfkey_iq_head != NULL)
  44fd9c:	8f828018 	lw	v0,-32744(gp)
  44fda0:	00000000 	nop
  44fda4:	24422458 	addiu	v0,v0,9304
  44fda8:	8c420000 	lw	v0,0(v0)
  44fdac:	00000000 	nop
  44fdb0:	14400003 	bnez	v0,44fdc0 <pfkey_dequeue+0x4c>
  44fdb4:	00000000 	nop
  44fdb8:	10000022 	b	44fe44 <pfkey_dequeue+0xd0>
  44fdbc:	00000000 	nop
    {
	pfkey_item *it = pfkey_iq_head;
  44fdc0:	8f828018 	lw	v0,-32744(gp)
  44fdc4:	00000000 	nop
  44fdc8:	24422458 	addiu	v0,v0,9304
  44fdcc:	8c420000 	lw	v0,0(v0)
  44fdd0:	00000000 	nop
  44fdd4:	afc20018 	sw	v0,24(s8)

	pfkey_async(&it->buf);
  44fdd8:	8fc20018 	lw	v0,24(s8)
  44fddc:	00000000 	nop
  44fde0:	24420004 	addiu	v0,v0,4
  44fde4:	00402021 	move	a0,v0
  44fde8:	8f998038 	lw	t9,-32712(gp)
  44fdec:	00000000 	nop
  44fdf0:	2739faac 	addiu	t9,t9,-1364
  44fdf4:	00000000 	nop
  44fdf8:	0320f809 	jalr	t9
  44fdfc:	00000000 	nop
  44fe00:	8fdc0010 	lw	gp,16(s8)
  44fe04:	00000000 	nop
	pfkey_iq_head = it->next;
  44fe08:	8fc20018 	lw	v0,24(s8)
  44fe0c:	00000000 	nop
  44fe10:	8c420000 	lw	v0,0(v0)
  44fe14:	8f818018 	lw	at,-32744(gp)
  44fe18:	00000000 	nop
  44fe1c:	24212458 	addiu	at,at,9304
  44fe20:	ac220000 	sw	v0,0(at)
	pfree(it);
  44fe24:	8fc40018 	lw	a0,24(s8)
  44fe28:	8f998094 	lw	t9,-32620(gp)
  44fe2c:	00000000 	nop
  44fe30:	0320f809 	jalr	t9
  44fe34:	00000000 	nop
  44fe38:	8fdc0010 	lw	gp,16(s8)
  44fe3c:	1000ffd7 	b	44fd9c <pfkey_dequeue+0x28>
  44fe40:	00000000 	nop
  44fe44:	00000000 	nop
    }

    /* Handle any orphaned holds, but only if no pfkey input is pending.
     * For each, we initiate Opportunistic.
     * note: we don't need to advance the pointer because
     * record_and_initiate_opportunistic will remove the current
     * record each time we call it.
     */
    while (orphaned_holds != NULL && !pfkey_input_ready())
  44fe48:	8f828c38 	lw	v0,-29640(gp)
  44fe4c:	00000000 	nop
  44fe50:	8c420000 	lw	v0,0(v0)
  44fe54:	00000000 	nop
  44fe58:	10400024 	beqz	v0,44feec <pfkey_dequeue+0x178>
  44fe5c:	00000000 	nop
  44fe60:	8f998038 	lw	t9,-32712(gp)
  44fe64:	00000000 	nop
  44fe68:	2739ea74 	addiu	t9,t9,-5516
  44fe6c:	00000000 	nop
  44fe70:	0320f809 	jalr	t9
  44fe74:	00000000 	nop
  44fe78:	8fdc0010 	lw	gp,16(s8)
  44fe7c:	1440001b 	bnez	v0,44feec <pfkey_dequeue+0x178>
  44fe80:	00000000 	nop
	record_and_initiate_opportunistic(&orphaned_holds->ours
  44fe84:	8f828c38 	lw	v0,-29640(gp)
  44fe88:	00000000 	nop
  44fe8c:	8c420000 	lw	v0,0(v0)
  44fe90:	00000000 	nop
  44fe94:	24430004 	addiu	v1,v0,4
  44fe98:	8f828c38 	lw	v0,-29640(gp)
  44fe9c:	00000000 	nop
  44fea0:	8c420000 	lw	v0,0(v0)
  44fea4:	00000000 	nop
  44fea8:	24420024 	addiu	v0,v0,36
  44feac:	00602021 	move	a0,v1
  44feb0:	00402821 	move	a1,v0
  44feb4:	8f828c38 	lw	v0,-29640(gp)
  44feb8:	00000000 	nop
  44febc:	8c420000 	lw	v0,0(v0)
  44fec0:	00000000 	nop
  44fec4:	8c460084 	lw	a2,132(v0)
  44fec8:	8f998038 	lw	t9,-32712(gp)
  44fecc:	00000000 	nop
  44fed0:	2739f360 	addiu	t9,t9,-3232
  44fed4:	00000000 	nop
  44fed8:	0320f809 	jalr	t9
  44fedc:	00000000 	nop
  44fee0:	8fdc0010 	lw	gp,16(s8)
  44fee4:	1000ffd8 	b	44fe48 <pfkey_dequeue+0xd4>
  44fee8:	00000000 	nop
	    , &orphaned_holds->his, orphaned_holds->transport_proto);

}
  44feec:	03c0e821 	move	sp,s8
  44fef0:	8fbf0028 	lw	ra,40(sp)
  44fef4:	8fbe0024 	lw	s8,36(sp)
  44fef8:	27bd0030 	addiu	sp,sp,48
  44fefc:	03e00008 	jr	ra
  44ff00:	00000000 	nop

0044ff04 <pfkey_event>:
  44ff04:	3c1c0fbc 	lui	gp,0xfbc
  44ff08:	279cca6c 	addiu	gp,gp,-13716
  44ff0c:	0399e021 	addu	gp,gp,t9
  44ff10:	27bdefd8 	addiu	sp,sp,-4136
  44ff14:	afbc0010 	sw	gp,16(sp)
  44ff18:	afbf1020 	sw	ra,4128(sp)
  44ff1c:	afbe101c 	sw	s8,4124(sp)
  44ff20:	afbc1018 	sw	gp,4120(sp)
  44ff24:	03a0f021 	move	s8,sp

/* asynchronous messages directly from PF_KEY socket */
void
pfkey_event(void)
{
    pfkey_buf buf;

    if (pfkey_get(&buf))
  44ff28:	27c40018 	addiu	a0,s8,24
  44ff2c:	8f998038 	lw	t9,-32712(gp)
  44ff30:	00000000 	nop
  44ff34:	2739ed00 	addiu	t9,t9,-4864
  44ff38:	00000000 	nop
  44ff3c:	0320f809 	jalr	t9
  44ff40:	00000000 	nop
  44ff44:	8fdc0010 	lw	gp,16(s8)
  44ff48:	1040000a 	beqz	v0,44ff74 <pfkey_event+0x70>
  44ff4c:	00000000 	nop
	pfkey_async(&buf);
  44ff50:	27c40018 	addiu	a0,s8,24
  44ff54:	8f998038 	lw	t9,-32712(gp)
  44ff58:	00000000 	nop
  44ff5c:	2739faac 	addiu	t9,t9,-1364
  44ff60:	00000000 	nop
  44ff64:	0320f809 	jalr	t9
  44ff68:	00000000 	nop
  44ff6c:	8fdc0010 	lw	gp,16(s8)
  44ff70:	00000000 	nop
}
  44ff74:	03c0e821 	move	sp,s8
  44ff78:	8fbf1020 	lw	ra,4128(sp)
  44ff7c:	8fbe101c 	lw	s8,4124(sp)
  44ff80:	27bd1028 	addiu	sp,sp,4136
  44ff84:	03e00008 	jr	ra
  44ff88:	00000000 	nop

0044ff8c <get_ipsec_spi>:
  44ff8c:	3c1c0fbc 	lui	gp,0xfbc
  44ff90:	279cc9e4 	addiu	gp,gp,-13852
  44ff94:	0399e021 	addu	gp,gp,t9
  44ff98:	27bdffd0 	addiu	sp,sp,-48
  44ff9c:	afbc0010 	sw	gp,16(sp)
  44ffa0:	afbf0028 	sw	ra,40(sp)
  44ffa4:	afbe0024 	sw	s8,36(sp)
  44ffa8:	afbc0020 	sw	gp,32(sp)
  44ffac:	03a0f021 	move	s8,sp
  44ffb0:	afc40030 	sw	a0,48(s8)

#endif /* KLIPS */

/* Generate Unique SPI numbers.
 *
 * The specs say that the number must not be less than IPSEC_DOI_SPI_MIN.
 * Pluto generates numbers not less than IPSEC_DOI_SPI_OUR_MIN,
 * reserving numbers in between for manual keying (but we cannot so
 * restrict numbers generated by our peer).
 * XXX This should be replaced by a call to the kernel when
 * XXX we get an API.
 * The returned SPI is in network byte order.
 * We use a random number as the initial SPI so that there is
 * a good chance that different Pluto instances will choose
 * different SPIs.  This is good for two reasons.
 * - the keying material for the initiator and responder only
 *   differs if the SPIs differ.
 * - if Pluto is restarted, it would otherwise recycle the SPI
 *   numbers and confuse everything.  When the kernel generates
 *   SPIs, this will no longer matter.
 * We then allocate numbers sequentially.  Thus we don't have to
 * check if the number was previously used (assuming that no
 * SPI lives longer than 4G of its successors).
 */
ipsec_spi_t
get_ipsec_spi(ipsec_spi_t avoid)
{
    static ipsec_spi_t spi = 0;	/* host order, so not returned directly! */

    spi++;
  44ffb4:	8f828018 	lw	v0,-32744(gp)
  44ffb8:	00000000 	nop
  44ffbc:	2442245c 	addiu	v0,v0,9308
  44ffc0:	8c420000 	lw	v0,0(v0)
  44ffc4:	00000000 	nop
  44ffc8:	24420001 	addiu	v0,v0,1
  44ffcc:	8f818018 	lw	at,-32744(gp)
  44ffd0:	00000000 	nop
  44ffd4:	2421245c 	addiu	at,at,9308
  44ffd8:	ac220000 	sw	v0,0(at)
    while (spi < IPSEC_DOI_SPI_OUR_MIN || spi == ntohl(avoid))
  44ffdc:	8f828018 	lw	v0,-32744(gp)
  44ffe0:	00000000 	nop
  44ffe4:	2442245c 	addiu	v0,v0,9308
  44ffe8:	8c420000 	lw	v0,0(v0)
  44ffec:	00000000 	nop
  44fff0:	2c421000 	sltiu	v0,v0,4096
  44fff4:	1440000b 	bnez	v0,450024 <get_ipsec_spi+0x98>
  44fff8:	00000000 	nop
  44fffc:	8f838018 	lw	v1,-32744(gp)
  450000:	00000000 	nop
  450004:	2463245c 	addiu	v1,v1,9308
  450008:	8c630000 	lw	v1,0(v1)
  45000c:	8fc20030 	lw	v0,48(s8)
  450010:	00000000 	nop
  450014:	10620003 	beq	v1,v0,450024 <get_ipsec_spi+0x98>
  450018:	00000000 	nop
  45001c:	1000000c 	b	450050 <get_ipsec_spi+0xc4>
  450020:	00000000 	nop
	get_rnd_bytes((u_char *)&spi, sizeof(spi));
  450024:	8f848018 	lw	a0,-32744(gp)
  450028:	00000000 	nop
  45002c:	2484245c 	addiu	a0,a0,9308
  450030:	24050004 	li	a1,4
  450034:	8f9980bc 	lw	t9,-32580(gp)
  450038:	00000000 	nop
  45003c:	0320f809 	jalr	t9
  450040:	00000000 	nop
  450044:	8fdc0010 	lw	gp,16(s8)
  450048:	1000ffe4 	b	44ffdc <get_ipsec_spi+0x50>
  45004c:	00000000 	nop

    DBG(DBG_CONTROL,
  450050:	8f8284f8 	lw	v0,-31496(gp)
  450054:	00000000 	nop
  450058:	8c420000 	lw	v0,0(v0)
  45005c:	00000000 	nop
  450060:	30420010 	andi	v0,v0,0x10
  450064:	10400012 	beqz	v0,4500b0 <get_ipsec_spi+0x124>
  450068:	00000000 	nop
  45006c:	8f828018 	lw	v0,-32744(gp)
  450070:	00000000 	nop
  450074:	2442245c 	addiu	v0,v0,9308
  450078:	8c420000 	lw	v0,0(v0)
  45007c:	00000000 	nop
  450080:	afc20018 	sw	v0,24(s8)
  450084:	8f84802c 	lw	a0,-32724(gp)
  450088:	00000000 	nop
  45008c:	2484fd94 	addiu	a0,a0,-620
  450090:	27c50018 	addiu	a1,s8,24
  450094:	24060004 	li	a2,4
  450098:	8f9984ec 	lw	t9,-31508(gp)
  45009c:	00000000 	nop
  4500a0:	0320f809 	jalr	t9
  4500a4:	00000000 	nop
  4500a8:	8fdc0010 	lw	gp,16(s8)
  4500ac:	00000000 	nop
	{
	    ipsec_spi_t spi_net = htonl(spi);

	    DBG_dump("generate SPI:", (u_char *)&spi_net, sizeof(spi_net));
	});

    return htonl(spi);
  4500b0:	8f828018 	lw	v0,-32744(gp)
  4500b4:	00000000 	nop
  4500b8:	2442245c 	addiu	v0,v0,9308
  4500bc:	8c420000 	lw	v0,0(v0)
  4500c0:	00000000 	nop
}
  4500c4:	03c0e821 	move	sp,s8
  4500c8:	8fbf0028 	lw	ra,40(sp)
  4500cc:	8fbe0024 	lw	s8,36(sp)
  4500d0:	27bd0030 	addiu	sp,sp,48
  4500d4:	03e00008 	jr	ra
  4500d8:	00000000 	nop

004500dc <get_my_cpi>:
  4500dc:	3c1c0fbc 	lui	gp,0xfbc
  4500e0:	279cc894 	addiu	gp,gp,-14188
  4500e4:	0399e021 	addu	gp,gp,t9
  4500e8:	27bdffd8 	addiu	sp,sp,-40
  4500ec:	afbc0010 	sw	gp,16(sp)
  4500f0:	afbf0020 	sw	ra,32(sp)
  4500f4:	afbe001c 	sw	s8,28(sp)
  4500f8:	afbc0018 	sw	gp,24(sp)
  4500fc:	03a0f021 	move	s8,sp

/* Generate Unique CPI numbers.
 * The result is returned as an SPI (4 bytes) in network order!
 * The real bits are in the nework-low-order 2 bytes.
 * Modelled on get_ipsec_spi, but range is more limited:
 * 256-61439.
 * If we can't find one easily, return 0 (a bad SPI,
 * no matter what order) indicating failure.
 */
ipsec_spi_t
get_my_cpi(void)
{
    static cpi_t
	first_busy_cpi = 0,
	latest_cpi;
  450100:	00000000 	nop

    while (!(IPCOMP_FIRST_NEGOTIATED <= first_busy_cpi && first_busy_cpi < IPCOMP_LAST_NEGOTIATED))
  450104:	8f828018 	lw	v0,-32744(gp)
  450108:	00000000 	nop
  45010c:	24422460 	addiu	v0,v0,9312
  450110:	94420000 	lhu	v0,0(v0)
  450114:	00000000 	nop
  450118:	2c420100 	sltiu	v0,v0,256
  45011c:	1440000b 	bnez	v0,45014c <get_my_cpi+0x70>
  450120:	00000000 	nop
  450124:	8f828018 	lw	v0,-32744(gp)
  450128:	00000000 	nop
  45012c:	24422460 	addiu	v0,v0,9312
  450130:	94420000 	lhu	v0,0(v0)
  450134:	3403effe 	li	v1,0xeffe
  450138:	0062102b 	sltu	v0,v1,v0
  45013c:	14400003 	bnez	v0,45014c <get_my_cpi+0x70>
  450140:	00000000 	nop
  450144:	10000015 	b	45019c <get_my_cpi+0xc0>
  450148:	00000000 	nop
    {
	get_rnd_bytes((u_char *)&first_busy_cpi, sizeof(first_busy_cpi));
  45014c:	8f848018 	lw	a0,-32744(gp)
  450150:	00000000 	nop
  450154:	24842460 	addiu	a0,a0,9312
  450158:	24050002 	li	a1,2
  45015c:	8f9980bc 	lw	t9,-32580(gp)
  450160:	00000000 	nop
  450164:	0320f809 	jalr	t9
  450168:	00000000 	nop
  45016c:	8fdc0010 	lw	gp,16(s8)
  450170:	00000000 	nop
	latest_cpi = first_busy_cpi;
  450174:	8f828018 	lw	v0,-32744(gp)
  450178:	00000000 	nop
  45017c:	24422460 	addiu	v0,v0,9312
  450180:	94420000 	lhu	v0,0(v0)
  450184:	8f818018 	lw	at,-32744(gp)
  450188:	00000000 	nop
  45018c:	24217660 	addiu	at,at,30304
  450190:	a4220000 	sh	v0,0(at)
  450194:	1000ffdb 	b	450104 <get_my_cpi+0x28>
  450198:	00000000 	nop
    }

    latest_cpi++;
  45019c:	8f828018 	lw	v0,-32744(gp)
  4501a0:	00000000 	nop
  4501a4:	24427660 	addiu	v0,v0,30304
  4501a8:	94420000 	lhu	v0,0(v0)
  4501ac:	00000000 	nop
  4501b0:	24420001 	addiu	v0,v0,1
  4501b4:	8f818018 	lw	at,-32744(gp)
  4501b8:	00000000 	nop
  4501bc:	24217660 	addiu	at,at,30304
  4501c0:	a4220000 	sh	v0,0(at)

    if (latest_cpi == first_busy_cpi)
  4501c4:	8f838018 	lw	v1,-32744(gp)
  4501c8:	00000000 	nop
  4501cc:	24637660 	addiu	v1,v1,30304
  4501d0:	94630000 	lhu	v1,0(v1)
  4501d4:	8f828018 	lw	v0,-32744(gp)
  4501d8:	00000000 	nop
  4501dc:	24422460 	addiu	v0,v0,9312
  4501e0:	94420000 	lhu	v0,0(v0)
  4501e4:	00000000 	nop
  4501e8:	1462000d 	bne	v1,v0,450220 <get_my_cpi+0x144>
  4501ec:	00000000 	nop
	find_my_cpi_gap(&latest_cpi, &first_busy_cpi);
  4501f0:	8f848018 	lw	a0,-32744(gp)
  4501f4:	00000000 	nop
  4501f8:	24847660 	addiu	a0,a0,30304
  4501fc:	8f858018 	lw	a1,-32744(gp)
  450200:	00000000 	nop
  450204:	24a52460 	addiu	a1,a1,9312
  450208:	8f9987d0 	lw	t9,-30768(gp)
  45020c:	00000000 	nop
  450210:	0320f809 	jalr	t9
  450214:	00000000 	nop
  450218:	8fdc0010 	lw	gp,16(s8)
  45021c:	00000000 	nop

    if (latest_cpi > IPCOMP_LAST_NEGOTIATED)
  450220:	8f828018 	lw	v0,-32744(gp)
  450224:	00000000 	nop
  450228:	24427660 	addiu	v0,v0,30304
  45022c:	94420000 	lhu	v0,0(v0)
  450230:	3403efff 	li	v1,0xefff
  450234:	0062102b 	sltu	v0,v1,v0
  450238:	10400006 	beqz	v0,450254 <get_my_cpi+0x178>
  45023c:	00000000 	nop
	latest_cpi = IPCOMP_FIRST_NEGOTIATED;
  450240:	24020100 	li	v0,256
  450244:	8f818018 	lw	at,-32744(gp)
  450248:	00000000 	nop
  45024c:	24217660 	addiu	at,at,30304
  450250:	a4220000 	sh	v0,0(at)

    return htonl((ipsec_spi_t)latest_cpi);
  450254:	8f828018 	lw	v0,-32744(gp)
  450258:	00000000 	nop
  45025c:	24427660 	addiu	v0,v0,30304
  450260:	94420000 	lhu	v0,0(v0)
  450264:	00000000 	nop
}
  450268:	03c0e821 	move	sp,s8
  45026c:	8fbf0020 	lw	ra,32(sp)
  450270:	8fbe001c 	lw	s8,28(sp)
  450274:	27bd0028 	addiu	sp,sp,40
  450278:	03e00008 	jr	ra
  45027c:	00000000 	nop

00450280 <do_command>:
  450280:	3c1c0fbc 	lui	gp,0xfbc
  450284:	279cc6f0 	addiu	gp,gp,-14608
  450288:	0399e021 	addu	gp,gp,t9
  45028c:	27bde960 	addiu	sp,sp,-5792
  450290:	afbc0060 	sw	gp,96(sp)
  450294:	afbf1698 	sw	ra,5784(sp)
  450298:	afbe1694 	sw	s8,5780(sp)
  45029c:	afbc1690 	sw	gp,5776(sp)
  4502a0:	03a0f021 	move	s8,sp
  4502a4:	afc416a0 	sw	a0,5792(s8)
  4502a8:	afc516a4 	sw	a1,5796(s8)

/* invoke the updown script to do the routing and firewall commands required
 *
 * The user-specified updown script is run.  Parameters are fed to it in
 * the form of environment variables.  All such environment variables
 * have names starting with "PLUTO_".
 *
 * The operation to be performed is specified by PLUTO_VERB.  This
 * verb has a suffix "-host" if the client on this end is just the
 * host; otherwise the suffix is "-client".  If the address family
 * of the host is IPv6, an extra suffix of "-v6" is added.
 *
 * "prepare-host" and "prepare-client" are used to delete a route
 * that may exist (due to forces outside of Pluto).  It is used to
 * prepare for pluto creating a route.
 *
 * "route-host" and "route-client" are used to install a route.
 * Since routing is based only on destination, the PLUTO_MY_CLIENT_*
 * values are probably of no use (using them may signify a bug).
 *
 * "unroute-host" and "unroute-client" are used to delete a route.
 * Since routing is based only on destination, the PLUTO_MY_CLIENT_*
 * values are probably of no use (using them may signify a bug).
 *
 * "up-host" and "up-client" are run when an eroute is added (not replaced).
 * They are useful for adjusting a firewall: usually for adding a rule
 * to let processed packets flow between clients.  Note that only
 * one eroute may exist for a pair of client subnets but inbound
 * IPsec SAs may persist without an eroute.
 *
 * "down-host" and "down-client" are run when an eroute is deleted.
 * They are useful for adjusting a firewall.
 */

#ifndef DEFAULT_UPDOWN
# define DEFAULT_UPDOWN	"ipsec _updown"
#endif

static bool
do_command(struct connection *c, const char *verb)
{
    char cmd[1536];	/* arbitrary limit on shell command length */
    const char *verb_suffix;

    /* figure out which verb suffix applies */
    {
	const char *hs, *cs;

	switch (addrtypeof(&c->this.host_addr))
  4502ac:	8fc216a0 	lw	v0,5792(s8)
  4502b0:	00000000 	nop
  4502b4:	24420058 	addiu	v0,v0,88
  4502b8:	00402021 	move	a0,v0
  4502bc:	8f9985d4 	lw	t9,-31276(gp)
  4502c0:	00000000 	nop
  4502c4:	0320f809 	jalr	t9
  4502c8:	00000000 	nop
  4502cc:	8fdc0060 	lw	gp,96(s8)
  4502d0:	afc21674 	sw	v0,5748(s8)
  4502d4:	24020002 	li	v0,2
  4502d8:	8fc31674 	lw	v1,5748(s8)
  4502dc:	00000000 	nop
  4502e0:	10620013 	beq	v1,v0,450330 <do_command+0xb0>
  4502e4:	00000000 	nop
  4502e8:	2402000a 	li	v0,10
  4502ec:	8fc31674 	lw	v1,5748(s8)
  4502f0:	00000000 	nop
  4502f4:	1062001a 	beq	v1,v0,450360 <do_command+0xe0>
  4502f8:	00000000 	nop
	{
	    case AF_INET:
		hs = "-host";
		cs = "-client";
		break;
	    case AF_INET6:
		hs = "-host-v6";
		cs = "-client-v6";
		break;
	    default:
		loglog(RC_LOG_SERIOUS, "unknown address family");
  4502fc:	24040003 	li	a0,3
  450300:	8f85802c 	lw	a1,-32724(gp)
  450304:	00000000 	nop
  450308:	24a5fda4 	addiu	a1,a1,-604
  45030c:	8f998c48 	lw	t9,-29624(gp)
  450310:	00000000 	nop
  450314:	0320f809 	jalr	t9
  450318:	00000000 	nop
  45031c:	8fdc0060 	lw	gp,96(s8)
  450320:	00000000 	nop
		return FALSE;
  450324:	00001021 	move	v0,zero
  450328:	10000306 	b	450f44 <do_command+0xcc4>
  45032c:	00000000 	nop
  450330:	8f82802c 	lw	v0,-32724(gp)
  450334:	00000000 	nop
  450338:	2442fdbc 	addiu	v0,v0,-580
  45033c:	00000000 	nop
  450340:	afc2066c 	sw	v0,1644(s8)
  450344:	8f82802c 	lw	v0,-32724(gp)
  450348:	00000000 	nop
  45034c:	2442fdc4 	addiu	v0,v0,-572
  450350:	00000000 	nop
  450354:	afc20670 	sw	v0,1648(s8)
  450358:	1000000b 	b	450388 <do_command+0x108>
  45035c:	00000000 	nop
  450360:	8f82802c 	lw	v0,-32724(gp)
  450364:	00000000 	nop
  450368:	2442fdcc 	addiu	v0,v0,-564
  45036c:	00000000 	nop
  450370:	afc2066c 	sw	v0,1644(s8)
  450374:	8f82802c 	lw	v0,-32724(gp)
  450378:	00000000 	nop
  45037c:	2442fdd8 	addiu	v0,v0,-552
  450380:	00000000 	nop
  450384:	afc20670 	sw	v0,1648(s8)
	}
	verb_suffix = subnetishost(&c->this.client) && addrinsubnet(&c->this.host_addr, &c->this.client)
  450388:	8fc216a0 	lw	v0,5792(s8)
  45038c:	00000000 	nop
  450390:	24420090 	addiu	v0,v0,144
  450394:	00402021 	move	a0,v0
  450398:	8f99851c 	lw	t9,-31460(gp)
  45039c:	00000000 	nop
  4503a0:	0320f809 	jalr	t9
  4503a4:	00000000 	nop
  4503a8:	8fdc0060 	lw	gp,96(s8)
  4503ac:	10400015 	beqz	v0,450404 <do_command+0x184>
  4503b0:	00000000 	nop
  4503b4:	8fc216a0 	lw	v0,5792(s8)
  4503b8:	00000000 	nop
  4503bc:	24430058 	addiu	v1,v0,88
  4503c0:	8fc216a0 	lw	v0,5792(s8)
  4503c4:	00000000 	nop
  4503c8:	24420090 	addiu	v0,v0,144
  4503cc:	00602021 	move	a0,v1
  4503d0:	00402821 	move	a1,v0
  4503d4:	8f998acc 	lw	t9,-30004(gp)
  4503d8:	00000000 	nop
  4503dc:	0320f809 	jalr	t9
  4503e0:	00000000 	nop
  4503e4:	8fdc0060 	lw	gp,96(s8)
  4503e8:	10400006 	beqz	v0,450404 <do_command+0x184>
  4503ec:	00000000 	nop
  4503f0:	8fc2066c 	lw	v0,1644(s8)
  4503f4:	00000000 	nop
  4503f8:	afc21678 	sw	v0,5752(s8)
  4503fc:	10000004 	b	450410 <do_command+0x190>
  450400:	00000000 	nop
  450404:	8fc30670 	lw	v1,1648(s8)
  450408:	00000000 	nop
  45040c:	afc31678 	sw	v1,5752(s8)
  450410:	8fc21678 	lw	v0,5752(s8)
  450414:	00000000 	nop
  450418:	afc20668 	sw	v0,1640(s8)
	    ? hs : cs;
    }

    /* form the command string */
    {
	const ip_subnet *epc = EffectivePeerClient(c);
  45041c:	8fc416a0 	lw	a0,5792(s8)
  450420:	8f998648 	lw	t9,-31160(gp)
  450424:	00000000 	nop
  450428:	0320f809 	jalr	t9
  45042c:	00000000 	nop
  450430:	8fdc0060 	lw	gp,96(s8)
  450434:	afc20670 	sw	v0,1648(s8)
	char
	    nexthop_str[ADDRTOT_BUF],
	    me_str[ADDRTOT_BUF],
	    myid_str[IDTOA_BUF],
	    myclient_str[SUBNETTOT_BUF],
	    myclientnet_str[ADDRTOT_BUF],
	    myclientmask_str[ADDRTOT_BUF],
	    peer_str[ADDRTOT_BUF],
	    peerid_str[IDTOA_BUF],
	    peerclient_str[SUBNETTOT_BUF],
	    peerclientnet_str[ADDRTOT_BUF],
	    peerclientmask_str[ADDRTOT_BUF],
	    peerca_str[IDTOA_BUF],
	    secure_myid_str[IDTOA_BUF] = "",
  450438:	8f82802c 	lw	v0,-32724(gp)
  45043c:	00000000 	nop
  450440:	2442fde4 	addiu	v0,v0,-540
  450444:	90420000 	lbu	v0,0(v0)
  450448:	00000000 	nop
  45044c:	a3c20f48 	sb	v0,3912(s8)
  450450:	27c40f49 	addiu	a0,s8,3913
  450454:	00002821 	move	a1,zero
  450458:	240601ff 	li	a2,511
  45045c:	8f998500 	lw	t9,-31488(gp)
  450460:	00000000 	nop
  450464:	0320f809 	jalr	t9
  450468:	00000000 	nop
  45046c:	8fdc0060 	lw	gp,96(s8)
  450470:	00000000 	nop
	    secure_peerid_str[IDTOA_BUF] = "",
  450474:	8f82802c 	lw	v0,-32724(gp)
  450478:	00000000 	nop
  45047c:	2442fde4 	addiu	v0,v0,-540
  450480:	90420000 	lbu	v0,0(v0)
  450484:	00000000 	nop
  450488:	a3c21148 	sb	v0,4424(s8)
  45048c:	27c41149 	addiu	a0,s8,4425
  450490:	00002821 	move	a1,zero
  450494:	240601ff 	li	a2,511
  450498:	8f998500 	lw	t9,-31488(gp)
  45049c:	00000000 	nop
  4504a0:	0320f809 	jalr	t9
  4504a4:	00000000 	nop
  4504a8:	8fdc0060 	lw	gp,96(s8)
  4504ac:	00000000 	nop
	    secure_peerca_str[IDTOA_BUF] = "";
  4504b0:	8f82802c 	lw	v0,-32724(gp)
  4504b4:	00000000 	nop
  4504b8:	2442fde4 	addiu	v0,v0,-540
  4504bc:	90420000 	lbu	v0,0(v0)
  4504c0:	00000000 	nop
  4504c4:	a3c21348 	sb	v0,4936(s8)
  4504c8:	27c41349 	addiu	a0,s8,4937
  4504cc:	00002821 	move	a1,zero
  4504d0:	240601ff 	li	a2,511
  4504d4:	8f998500 	lw	t9,-31488(gp)
  4504d8:	00000000 	nop
  4504dc:	0320f809 	jalr	t9
  4504e0:	00000000 	nop
  4504e4:	8fdc0060 	lw	gp,96(s8)
  4504e8:	00000000 	nop
	ip_address ta;
	struct pubkeyrec *p;

	addrtot(&c->this.host_nexthop, 0, nexthop_str, sizeof(nexthop_str));
  4504ec:	8fc216a0 	lw	v0,5792(s8)
  4504f0:	00000000 	nop
  4504f4:	24420074 	addiu	v0,v0,116
  4504f8:	00402021 	move	a0,v0
  4504fc:	00002821 	move	a1,zero
  450500:	27c60678 	addiu	a2,s8,1656
  450504:	24070049 	li	a3,73
  450508:	8f998b50 	lw	t9,-29872(gp)
  45050c:	00000000 	nop
  450510:	0320f809 	jalr	t9
  450514:	00000000 	nop
  450518:	8fdc0060 	lw	gp,96(s8)
  45051c:	00000000 	nop

	addrtot(&c->this.host_addr, 0, me_str, sizeof(me_str));
  450520:	8fc216a0 	lw	v0,5792(s8)
  450524:	00000000 	nop
  450528:	24420058 	addiu	v0,v0,88
  45052c:	00402021 	move	a0,v0
  450530:	00002821 	move	a1,zero
  450534:	27c606c8 	addiu	a2,s8,1736
  450538:	24070049 	li	a3,73
  45053c:	8f998b50 	lw	t9,-29872(gp)
  450540:	00000000 	nop
  450544:	0320f809 	jalr	t9
  450548:	00000000 	nop
  45054c:	8fdc0060 	lw	gp,96(s8)
  450550:	00000000 	nop
	idtoa(&c->this.id, myid_str, sizeof(myid_str));
  450554:	8fc216a0 	lw	v0,5792(s8)
  450558:	00000000 	nop
  45055c:	24420030 	addiu	v0,v0,48
  450560:	00402021 	move	a0,v0
  450564:	27c50718 	addiu	a1,s8,1816
  450568:	24060200 	li	a2,512
  45056c:	8f998798 	lw	t9,-30824(gp)
  450570:	00000000 	nop
  450574:	0320f809 	jalr	t9
  450578:	00000000 	nop
  45057c:	8fdc0060 	lw	gp,96(s8)
  450580:	00000000 	nop
	escape_metachar(myid_str, secure_myid_str, sizeof(secure_myid_str));
  450584:	27c40718 	addiu	a0,s8,1816
  450588:	27c50f48 	addiu	a1,s8,3912
  45058c:	24060200 	li	a2,512
  450590:	8f998c3c 	lw	t9,-29636(gp)
  450594:	00000000 	nop
  450598:	0320f809 	jalr	t9
  45059c:	00000000 	nop
  4505a0:	8fdc0060 	lw	gp,96(s8)
  4505a4:	00000000 	nop
	subnettot(&c->this.client, 0, myclient_str, sizeof(myclientnet_str));
  4505a8:	8fc216a0 	lw	v0,5792(s8)
  4505ac:	00000000 	nop
  4505b0:	24420090 	addiu	v0,v0,144
  4505b4:	00402021 	move	a0,v0
  4505b8:	00002821 	move	a1,zero
  4505bc:	27c60918 	addiu	a2,s8,2328
  4505c0:	24070049 	li	a3,73
  4505c4:	8f998bbc 	lw	t9,-29764(gp)
  4505c8:	00000000 	nop
  4505cc:	0320f809 	jalr	t9
  4505d0:	00000000 	nop
  4505d4:	8fdc0060 	lw	gp,96(s8)
  4505d8:	00000000 	nop
	networkof(&c->this.client, &ta);
  4505dc:	8fc216a0 	lw	v0,5792(s8)
  4505e0:	00000000 	nop
  4505e4:	24420090 	addiu	v0,v0,144
  4505e8:	00402021 	move	a0,v0
  4505ec:	27c51548 	addiu	a1,s8,5448
  4505f0:	8f9985bc 	lw	t9,-31300(gp)
  4505f4:	00000000 	nop
  4505f8:	0320f809 	jalr	t9
  4505fc:	00000000 	nop
  450600:	8fdc0060 	lw	gp,96(s8)
  450604:	00000000 	nop
	addrtot(&ta, 0, myclientnet_str, sizeof(myclientnet_str));
  450608:	27c41548 	addiu	a0,s8,5448
  45060c:	00002821 	move	a1,zero
  450610:	27c60968 	addiu	a2,s8,2408
  450614:	24070049 	li	a3,73
  450618:	8f998b50 	lw	t9,-29872(gp)
  45061c:	00000000 	nop
  450620:	0320f809 	jalr	t9
  450624:	00000000 	nop
  450628:	8fdc0060 	lw	gp,96(s8)
  45062c:	00000000 	nop
	maskof(&c->this.client, &ta);
  450630:	8fc216a0 	lw	v0,5792(s8)
  450634:	00000000 	nop
  450638:	24420090 	addiu	v0,v0,144
  45063c:	00402021 	move	a0,v0
  450640:	27c51548 	addiu	a1,s8,5448
  450644:	8f998138 	lw	t9,-32456(gp)
  450648:	00000000 	nop
  45064c:	0320f809 	jalr	t9
  450650:	00000000 	nop
  450654:	8fdc0060 	lw	gp,96(s8)
  450658:	00000000 	nop
	addrtot(&ta, 0, myclientmask_str, sizeof(myclientmask_str));
  45065c:	27c41548 	addiu	a0,s8,5448
  450660:	00002821 	move	a1,zero
  450664:	27c609b8 	addiu	a2,s8,2488
  450668:	24070049 	li	a3,73
  45066c:	8f998b50 	lw	t9,-29872(gp)
  450670:	00000000 	nop
  450674:	0320f809 	jalr	t9
  450678:	00000000 	nop
  45067c:	8fdc0060 	lw	gp,96(s8)
  450680:	00000000 	nop

	addrtot(&c->that.host_addr, 0, peer_str, sizeof(peer_str));
  450684:	8fc216a0 	lw	v0,5792(s8)
  450688:	00000000 	nop
  45068c:	24420108 	addiu	v0,v0,264
  450690:	00402021 	move	a0,v0
  450694:	00002821 	move	a1,zero
  450698:	27c60a08 	addiu	a2,s8,2568
  45069c:	24070049 	li	a3,73
  4506a0:	8f998b50 	lw	t9,-29872(gp)
  4506a4:	00000000 	nop
  4506a8:	0320f809 	jalr	t9
  4506ac:	00000000 	nop
  4506b0:	8fdc0060 	lw	gp,96(s8)
  4506b4:	00000000 	nop
	idtoa(&c->that.id, peerid_str, sizeof(peerid_str));
  4506b8:	8fc216a0 	lw	v0,5792(s8)
  4506bc:	00000000 	nop
  4506c0:	244200e0 	addiu	v0,v0,224
  4506c4:	00402021 	move	a0,v0
  4506c8:	27c50a58 	addiu	a1,s8,2648
  4506cc:	24060200 	li	a2,512
  4506d0:	8f998798 	lw	t9,-30824(gp)
  4506d4:	00000000 	nop
  4506d8:	0320f809 	jalr	t9
  4506dc:	00000000 	nop
  4506e0:	8fdc0060 	lw	gp,96(s8)
  4506e4:	00000000 	nop
	escape_metachar(peerid_str, secure_peerid_str, sizeof(secure_peerid_str));
  4506e8:	27c40a58 	addiu	a0,s8,2648
  4506ec:	27c51148 	addiu	a1,s8,4424
  4506f0:	24060200 	li	a2,512
  4506f4:	8f998c3c 	lw	t9,-29636(gp)
  4506f8:	00000000 	nop
  4506fc:	0320f809 	jalr	t9
  450700:	00000000 	nop
  450704:	8fdc0060 	lw	gp,96(s8)
  450708:	00000000 	nop
	subnettot(epc, 0, peerclient_str, sizeof(peerclientnet_str));
  45070c:	8fc40670 	lw	a0,1648(s8)
  450710:	00002821 	move	a1,zero
  450714:	27c60c58 	addiu	a2,s8,3160
  450718:	24070049 	li	a3,73
  45071c:	8f998bbc 	lw	t9,-29764(gp)
  450720:	00000000 	nop
  450724:	0320f809 	jalr	t9
  450728:	00000000 	nop
  45072c:	8fdc0060 	lw	gp,96(s8)
  450730:	00000000 	nop
	networkof(epc, &ta);
  450734:	8fc40670 	lw	a0,1648(s8)
  450738:	27c51548 	addiu	a1,s8,5448
  45073c:	8f9985bc 	lw	t9,-31300(gp)
  450740:	00000000 	nop
  450744:	0320f809 	jalr	t9
  450748:	00000000 	nop
  45074c:	8fdc0060 	lw	gp,96(s8)
  450750:	00000000 	nop
	addrtot(&ta, 0, peerclientnet_str, sizeof(peerclientnet_str));
  450754:	27c41548 	addiu	a0,s8,5448
  450758:	00002821 	move	a1,zero
  45075c:	27c60ca8 	addiu	a2,s8,3240
  450760:	24070049 	li	a3,73
  450764:	8f998b50 	lw	t9,-29872(gp)
  450768:	00000000 	nop
  45076c:	0320f809 	jalr	t9
  450770:	00000000 	nop
  450774:	8fdc0060 	lw	gp,96(s8)
  450778:	00000000 	nop
	maskof(epc, &ta);
  45077c:	8fc40670 	lw	a0,1648(s8)
  450780:	27c51548 	addiu	a1,s8,5448
  450784:	8f998138 	lw	t9,-32456(gp)
  450788:	00000000 	nop
  45078c:	0320f809 	jalr	t9
  450790:	00000000 	nop
  450794:	8fdc0060 	lw	gp,96(s8)
  450798:	00000000 	nop
	addrtot(&ta, 0, peerclientmask_str, sizeof(peerclientmask_str));
  45079c:	27c41548 	addiu	a0,s8,5448
  4507a0:	00002821 	move	a1,zero
  4507a4:	27c60cf8 	addiu	a2,s8,3320
  4507a8:	24070049 	li	a3,73
  4507ac:	8f998b50 	lw	t9,-29872(gp)
  4507b0:	00000000 	nop
  4507b4:	0320f809 	jalr	t9
  4507b8:	00000000 	nop
  4507bc:	8fdc0060 	lw	gp,96(s8)
  4507c0:	00000000 	nop

	for (p = pubkeys; p != NULL; p = p->next)
  4507c4:	8f8287a8 	lw	v0,-30808(gp)
  4507c8:	00000000 	nop
  4507cc:	8c420000 	lw	v0,0(v0)
  4507d0:	00000000 	nop
  4507d4:	afc2066c 	sw	v0,1644(s8)
  4507d8:	8fc2066c 	lw	v0,1644(s8)
  4507dc:	00000000 	nop
  4507e0:	14400003 	bnez	v0,4507f0 <do_command+0x570>
  4507e4:	00000000 	nop
  4507e8:	10000044 	b	4508fc <do_command+0x67c>
  4507ec:	00000000 	nop
	{
	    int pathlen;

	    if (p->alg == PUBKEY_ALG_RSA && same_id(&c->that.id, &p->id)
	    && trusted_ca(p->issuer, c->that.ca, &pathlen))
  4507f0:	8fc2066c 	lw	v0,1644(s8)
  4507f4:	00000000 	nop
  4507f8:	8c43003c 	lw	v1,60(v0)
  4507fc:	24020001 	li	v0,1
  450800:	14620037 	bne	v1,v0,4508e0 <do_command+0x660>
  450804:	00000000 	nop
  450808:	8fc216a0 	lw	v0,5792(s8)
  45080c:	00000000 	nop
  450810:	244200e0 	addiu	v0,v0,224
  450814:	00402021 	move	a0,v0
  450818:	8fc5066c 	lw	a1,1644(s8)
  45081c:	8f9980e4 	lw	t9,-32540(gp)
  450820:	00000000 	nop
  450824:	0320f809 	jalr	t9
  450828:	00000000 	nop
  45082c:	8fdc0060 	lw	gp,96(s8)
  450830:	1040002b 	beqz	v0,4508e0 <do_command+0x660>
  450834:	00000000 	nop
  450838:	8fc3066c 	lw	v1,1644(s8)
  45083c:	8fc716a0 	lw	a3,5792(s8)
  450840:	27c21568 	addiu	v0,s8,5480
  450844:	afa20010 	sw	v0,16(sp)
  450848:	8c640030 	lw	a0,48(v1)
  45084c:	8c650034 	lw	a1,52(v1)
  450850:	8ce60184 	lw	a2,388(a3)
  450854:	8ce70188 	lw	a3,392(a3)
  450858:	8f9989fc 	lw	t9,-30212(gp)
  45085c:	00000000 	nop
  450860:	0320f809 	jalr	t9
  450864:	00000000 	nop
  450868:	8fdc0060 	lw	gp,96(s8)
  45086c:	1040001c 	beqz	v0,4508e0 <do_command+0x660>
  450870:	00000000 	nop
	    {
		dntoa_or_null(peerca_str, IDTOA_BUF, p->issuer, "");
  450874:	8fc3066c 	lw	v1,1644(s8)
  450878:	8f82802c 	lw	v0,-32724(gp)
  45087c:	00000000 	nop
  450880:	2442ffe4 	addiu	v0,v0,-28
  450884:	00000000 	nop
  450888:	afa20010 	sw	v0,16(sp)
  45088c:	27c40d48 	addiu	a0,s8,3400
  450890:	24050200 	li	a1,512
  450894:	8c660030 	lw	a2,48(v1)
  450898:	8c670034 	lw	a3,52(v1)
  45089c:	8f99876c 	lw	t9,-30868(gp)
  4508a0:	00000000 	nop
  4508a4:	0320f809 	jalr	t9
  4508a8:	00000000 	nop
  4508ac:	8fdc0060 	lw	gp,96(s8)
  4508b0:	00000000 	nop
		escape_metachar(peerca_str, secure_peerca_str, sizeof(secure_peerca_str));
  4508b4:	27c40d48 	addiu	a0,s8,3400
  4508b8:	27c51348 	addiu	a1,s8,4936
  4508bc:	24060200 	li	a2,512
  4508c0:	8f998c3c 	lw	t9,-29636(gp)
  4508c4:	00000000 	nop
  4508c8:	0320f809 	jalr	t9
  4508cc:	00000000 	nop
  4508d0:	8fdc0060 	lw	gp,96(s8)
  4508d4:	00000000 	nop
		break;
  4508d8:	10000008 	b	4508fc <do_command+0x67c>
  4508dc:	00000000 	nop
  4508e0:	8fc2066c 	lw	v0,1644(s8)
  4508e4:	00000000 	nop
  4508e8:	8c420068 	lw	v0,104(v0)
  4508ec:	00000000 	nop
  4508f0:	afc2066c 	sw	v0,1644(s8)
  4508f4:	1000ffb8 	b	4507d8 <do_command+0x558>
  4508f8:	00000000 	nop
	    }
	}

	if (-1 == snprintf(cmd, sizeof(cmd),
	    "2>&1 "	/* capture stderr along with stdout */
	    "PLUTO_VERSION='1.1' "	/* change VERSION when interface spec changes */
	    "PLUTO_VERB='%s%s' "
	    "PLUTO_CONNECTION='%s' "
	    "PLUTO_NEXT_HOP='%s' "
	    "PLUTO_INTERFACE='%s' "
	    "PLUTO_ME='%s' "
	    "PLUTO_MY_ID='%s' "
	    "PLUTO_MY_CLIENT='%s' "
	    "PLUTO_MY_CLIENT_NET='%s' "
	    "PLUTO_MY_CLIENT_MASK='%s' "
	    "PLUTO_MY_PORT='%u' "
	    "PLUTO_MY_PROTOCOL='%u' "
	    "PLUTO_PEER='%s' "
	    "PLUTO_PEER_ID='%s' "
	    "PLUTO_PEER_CLIENT='%s' "
	    "PLUTO_PEER_CLIENT_NET='%s' "
	    "PLUTO_PEER_CLIENT_MASK='%s' "
	    "PLUTO_PEER_PORT='%u' "
	    "PLUTO_PEER_PROTOCOL='%u' "
	    "PLUTO_PEER_CA='%s' "
	    "%s"	/* actual script */
	    , verb, verb_suffix
	    , c->name
	    , nexthop_str
	    , c->interface->vname
	    , me_str
	    , secure_myid_str
	    , myclient_str
	    , myclientnet_str
	    , myclientmask_str
	    , c->this.port
	    , c->this.protocol
	    , peer_str
	    , secure_peerid_str
	    , peerclient_str
	    , peerclientnet_str
	    , peerclientmask_str
	    , c->that.port
	    , c->that.protocol
	    , secure_peerca_str
	    , c->this.updown == NULL? DEFAULT_UPDOWN : c->this.updown))
  4508fc:	8fc20668 	lw	v0,1640(s8)
  450900:	00000000 	nop
  450904:	afa20010 	sw	v0,16(sp)
  450908:	8fc216a0 	lw	v0,5792(s8)
  45090c:	00000000 	nop
  450910:	8c420000 	lw	v0,0(v0)
  450914:	00000000 	nop
  450918:	afa20014 	sw	v0,20(sp)
  45091c:	27c20678 	addiu	v0,s8,1656
  450920:	afa20018 	sw	v0,24(sp)
  450924:	8fc216a0 	lw	v0,5792(s8)
  450928:	00000000 	nop
  45092c:	8c420198 	lw	v0,408(v0)
  450930:	00000000 	nop
  450934:	8c420000 	lw	v0,0(v0)
  450938:	00000000 	nop
  45093c:	afa2001c 	sw	v0,28(sp)
  450940:	27c206c8 	addiu	v0,s8,1736
  450944:	afa20020 	sw	v0,32(sp)
  450948:	27c20f48 	addiu	v0,s8,3912
  45094c:	afa20024 	sw	v0,36(sp)
  450950:	27c20918 	addiu	v0,s8,2328
  450954:	afa20028 	sw	v0,40(sp)
  450958:	27c20968 	addiu	v0,s8,2408
  45095c:	afa2002c 	sw	v0,44(sp)
  450960:	27c209b8 	addiu	v0,s8,2488
  450964:	afa20030 	sw	v0,48(sp)
  450968:	8fc216a0 	lw	v0,5792(s8)
  45096c:	00000000 	nop
  450970:	944200ca 	lhu	v0,202(v0)
  450974:	00000000 	nop
  450978:	afa20034 	sw	v0,52(sp)
  45097c:	8fc216a0 	lw	v0,5792(s8)
  450980:	00000000 	nop
  450984:	904200cc 	lbu	v0,204(v0)
  450988:	00000000 	nop
  45098c:	afa20038 	sw	v0,56(sp)
  450990:	27c20a08 	addiu	v0,s8,2568
  450994:	afa2003c 	sw	v0,60(sp)
  450998:	27c21148 	addiu	v0,s8,4424
  45099c:	afa20040 	sw	v0,64(sp)
  4509a0:	27c20c58 	addiu	v0,s8,3160
  4509a4:	afa20044 	sw	v0,68(sp)
  4509a8:	27c20ca8 	addiu	v0,s8,3240
  4509ac:	afa20048 	sw	v0,72(sp)
  4509b0:	27c20cf8 	addiu	v0,s8,3320
  4509b4:	afa2004c 	sw	v0,76(sp)
  4509b8:	8fc216a0 	lw	v0,5792(s8)
  4509bc:	00000000 	nop
  4509c0:	9442017a 	lhu	v0,378(v0)
  4509c4:	00000000 	nop
  4509c8:	afa20050 	sw	v0,80(sp)
  4509cc:	8fc216a0 	lw	v0,5792(s8)
  4509d0:	00000000 	nop
  4509d4:	9042017c 	lbu	v0,380(v0)
  4509d8:	00000000 	nop
  4509dc:	afa20054 	sw	v0,84(sp)
  4509e0:	27c21348 	addiu	v0,s8,4936
  4509e4:	afa20058 	sw	v0,88(sp)
  4509e8:	8fc216a0 	lw	v0,5792(s8)
  4509ec:	00000000 	nop
  4509f0:	8c4200c4 	lw	v0,196(v0)
  4509f4:	00000000 	nop
  4509f8:	afa2005c 	sw	v0,92(sp)
  4509fc:	8fc216a0 	lw	v0,5792(s8)
  450a00:	00000000 	nop
  450a04:	8c4200c4 	lw	v0,196(v0)
  450a08:	00000000 	nop
  450a0c:	14400006 	bnez	v0,450a28 <do_command+0x7a8>
  450a10:	00000000 	nop
  450a14:	8f82802c 	lw	v0,-32724(gp)
  450a18:	00000000 	nop
  450a1c:	2442ffe8 	addiu	v0,v0,-24
  450a20:	00000000 	nop
  450a24:	afa2005c 	sw	v0,92(sp)
  450a28:	27c40068 	addiu	a0,s8,104
  450a2c:	24050600 	li	a1,1536
  450a30:	8f86802c 	lw	a2,-32724(gp)
  450a34:	00000000 	nop
  450a38:	24c6fff8 	addiu	a2,a2,-8
  450a3c:	8fc716a4 	lw	a3,5796(s8)
  450a40:	8f998b38 	lw	t9,-29896(gp)
  450a44:	00000000 	nop
  450a48:	0320f809 	jalr	t9
  450a4c:	00000000 	nop
  450a50:	8fdc0060 	lw	gp,96(s8)
  450a54:	00401821 	move	v1,v0
  450a58:	2402ffff 	li	v0,-1
  450a5c:	14620010 	bne	v1,v0,450aa0 <do_command+0x820>
  450a60:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "%s%s command too long!", verb, verb_suffix);
  450a64:	24040003 	li	a0,3
  450a68:	8f85802c 	lw	a1,-32724(gp)
  450a6c:	00000000 	nop
  450a70:	24a501a8 	addiu	a1,a1,424
  450a74:	8fc616a4 	lw	a2,5796(s8)
  450a78:	8fc70668 	lw	a3,1640(s8)
  450a7c:	8f998c48 	lw	t9,-29624(gp)
  450a80:	00000000 	nop
  450a84:	0320f809 	jalr	t9
  450a88:	00000000 	nop
  450a8c:	8fdc0060 	lw	gp,96(s8)
  450a90:	00000000 	nop
	    return FALSE;
  450a94:	00001021 	move	v0,zero
  450a98:	1000012a 	b	450f44 <do_command+0xcc4>
  450a9c:	00000000 	nop
	}
    }

    DBG(DBG_CONTROL, DBG_log("executing %s%s: %s"
  450aa0:	8f8284f8 	lw	v0,-31496(gp)
  450aa4:	00000000 	nop
  450aa8:	8c420000 	lw	v0,0(v0)
  450aac:	00000000 	nop
  450ab0:	30420010 	andi	v0,v0,0x10
  450ab4:	1040000d 	beqz	v0,450aec <do_command+0x86c>
  450ab8:	00000000 	nop
  450abc:	8f84802c 	lw	a0,-32724(gp)
  450ac0:	00000000 	nop
  450ac4:	248401c0 	addiu	a0,a0,448
  450ac8:	8fc516a4 	lw	a1,5796(s8)
  450acc:	8fc60668 	lw	a2,1640(s8)
  450ad0:	27c70068 	addiu	a3,s8,104
  450ad4:	8f9983b8 	lw	t9,-31816(gp)
  450ad8:	00000000 	nop
  450adc:	0320f809 	jalr	t9
  450ae0:	00000000 	nop
  450ae4:	8fdc0060 	lw	gp,96(s8)
  450ae8:	00000000 	nop
	, verb, verb_suffix, cmd));

#ifdef KLIPS
    if (!no_klips)
  450aec:	8f8286ec 	lw	v0,-30996(gp)
  450af0:	00000000 	nop
  450af4:	8c420000 	lw	v0,0(v0)
  450af8:	00000000 	nop
  450afc:	14400110 	bnez	v0,450f40 <do_command+0xcc0>
  450b00:	00000000 	nop
    {
	/* invoke the script, catching stderr and stdout
	 * It may be of concern that some file descriptors will
	 * be inherited.  For the ones under our control, we
	 * have done fcntl(fd, F_SETFD, FD_CLOEXEC) to prevent this.
	 * Any used by library routines (perhaps the resolver or syslog)
	 * will remain.
	 */
	FILE *f = popen(cmd, "r");
  450b04:	27c40068 	addiu	a0,s8,104
  450b08:	8f85802c 	lw	a1,-32724(gp)
  450b0c:	00000000 	nop
  450b10:	24a501d4 	addiu	a1,a1,468
  450b14:	8f998bec 	lw	t9,-29716(gp)
  450b18:	00000000 	nop
  450b1c:	0320f809 	jalr	t9
  450b20:	00000000 	nop
  450b24:	8fdc0060 	lw	gp,96(s8)
  450b28:	afc21568 	sw	v0,5480(s8)

	if (f == NULL)
  450b2c:	8fc21568 	lw	v0,5480(s8)
  450b30:	00000000 	nop
  450b34:	14400010 	bnez	v0,450b78 <do_command+0x8f8>
  450b38:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "unable to popen %s%s command", verb, verb_suffix);
  450b3c:	24040003 	li	a0,3
  450b40:	8f85802c 	lw	a1,-32724(gp)
  450b44:	00000000 	nop
  450b48:	24a501d8 	addiu	a1,a1,472
  450b4c:	8fc616a4 	lw	a2,5796(s8)
  450b50:	8fc70668 	lw	a3,1640(s8)
  450b54:	8f998c48 	lw	t9,-29624(gp)
  450b58:	00000000 	nop
  450b5c:	0320f809 	jalr	t9
  450b60:	00000000 	nop
  450b64:	8fdc0060 	lw	gp,96(s8)
  450b68:	00000000 	nop
	    return FALSE;
  450b6c:	00001021 	move	v0,zero
  450b70:	100000f4 	b	450f44 <do_command+0xcc4>
  450b74:	00000000 	nop
  450b78:	00000000 	nop
	}

	/* log any output */
	for (;;)
	{
	    /* if response doesn't fit in this buffer, it will be folded */
	    char resp[256];

	    if (fgets(resp, sizeof(resp), f) == NULL)
  450b7c:	27c41570 	addiu	a0,s8,5488
  450b80:	24050100 	li	a1,256
  450b84:	8fc61568 	lw	a2,5480(s8)
  450b88:	8f998a70 	lw	t9,-30096(gp)
  450b8c:	00000000 	nop
  450b90:	0320f809 	jalr	t9
  450b94:	00000000 	nop
  450b98:	8fdc0060 	lw	gp,96(s8)
  450b9c:	14400035 	bnez	v0,450c74 <do_command+0x9f4>
  450ba0:	00000000 	nop
	    {
		if (ferror(f))
  450ba4:	8fc41568 	lw	a0,5480(s8)
  450ba8:	8f998698 	lw	t9,-31080(gp)
  450bac:	00000000 	nop
  450bb0:	0320f809 	jalr	t9
  450bb4:	00000000 	nop
  450bb8:	8fdc0060 	lw	gp,96(s8)
  450bbc:	10400018 	beqz	v0,450c20 <do_command+0x9a0>
  450bc0:	00000000 	nop
		{
		    log_errno((e, "fgets failed on output of %s%s command"
  450bc4:	8f998234 	lw	t9,-32204(gp)
  450bc8:	00000000 	nop
  450bcc:	0320f809 	jalr	t9
  450bd0:	00000000 	nop
  450bd4:	8fdc0060 	lw	gp,96(s8)
  450bd8:	8c420000 	lw	v0,0(v0)
  450bdc:	00000000 	nop
  450be0:	afc20670 	sw	v0,1648(s8)
  450be4:	8fc40670 	lw	a0,1648(s8)
  450be8:	8f85802c 	lw	a1,-32724(gp)
  450bec:	00000000 	nop
  450bf0:	24a501f8 	addiu	a1,a1,504
  450bf4:	8fc616a4 	lw	a2,5796(s8)
  450bf8:	8fc70668 	lw	a3,1640(s8)
  450bfc:	8f9988ec 	lw	t9,-30484(gp)
  450c00:	00000000 	nop
  450c04:	0320f809 	jalr	t9
  450c08:	00000000 	nop
  450c0c:	8fdc0060 	lw	gp,96(s8)
  450c10:	00000000 	nop
			, verb, verb_suffix));
		    return FALSE;
  450c14:	00001021 	move	v0,zero
  450c18:	100000ca 	b	450f44 <do_command+0xcc4>
  450c1c:	00000000 	nop
		}
		else
		{
		    passert(feof(f));
  450c20:	8fc41568 	lw	a0,5480(s8)
  450c24:	8f9989e4 	lw	t9,-30236(gp)
  450c28:	00000000 	nop
  450c2c:	0320f809 	jalr	t9
  450c30:	00000000 	nop
  450c34:	8fdc0060 	lw	gp,96(s8)
  450c38:	14400037 	bnez	v0,450d18 <do_command+0xa98>
  450c3c:	00000000 	nop
  450c40:	8f84802c 	lw	a0,-32724(gp)
  450c44:	00000000 	nop
  450c48:	24840220 	addiu	a0,a0,544
  450c4c:	8f85802c 	lw	a1,-32724(gp)
  450c50:	00000000 	nop
  450c54:	24a5fb28 	addiu	a1,a1,-1240
  450c58:	240603b8 	li	a2,952
  450c5c:	8f998bb8 	lw	t9,-29768(gp)
  450c60:	00000000 	nop
  450c64:	0320f809 	jalr	t9
  450c68:	00000000 	nop
  450c6c:	8fdc0060 	lw	gp,96(s8)
  450c70:	00000000 	nop
		    break;
		}
	    }
	    else
	    {
		char *e = resp + strlen(resp);
  450c74:	27c41570 	addiu	a0,s8,5488
  450c78:	8f998188 	lw	t9,-32376(gp)
  450c7c:	00000000 	nop
  450c80:	0320f809 	jalr	t9
  450c84:	00000000 	nop
  450c88:	8fdc0060 	lw	gp,96(s8)
  450c8c:	00401821 	move	v1,v0
  450c90:	27c21570 	addiu	v0,s8,5488
  450c94:	00431021 	addu	v0,v0,v1
  450c98:	afc20670 	sw	v0,1648(s8)

		if (e > resp && e[-1] == '\n')
  450c9c:	27c31570 	addiu	v1,s8,5488
  450ca0:	8fc20670 	lw	v0,1648(s8)
  450ca4:	00000000 	nop
  450ca8:	0062102b 	sltu	v0,v1,v0
  450cac:	1040000c 	beqz	v0,450ce0 <do_command+0xa60>
  450cb0:	00000000 	nop
  450cb4:	8fc20670 	lw	v0,1648(s8)
  450cb8:	00000000 	nop
  450cbc:	2442ffff 	addiu	v0,v0,-1
  450cc0:	80430000 	lb	v1,0(v0)
  450cc4:	2402000a 	li	v0,10
  450cc8:	14620005 	bne	v1,v0,450ce0 <do_command+0xa60>
  450ccc:	00000000 	nop
		    e[-1] = '\0';	/* trim trailing '\n' */
  450cd0:	8fc20670 	lw	v0,1648(s8)
  450cd4:	00000000 	nop
  450cd8:	2442ffff 	addiu	v0,v0,-1
  450cdc:	a0400000 	sb	zero,0(v0)
		plog("%s%s output: %s", verb, verb_suffix, resp);
  450ce0:	8f84802c 	lw	a0,-32724(gp)
  450ce4:	00000000 	nop
  450ce8:	24840228 	addiu	a0,a0,552
  450cec:	8fc516a4 	lw	a1,5796(s8)
  450cf0:	8fc60668 	lw	a2,1640(s8)
  450cf4:	27c71570 	addiu	a3,s8,5488
  450cf8:	8f998abc 	lw	t9,-30020(gp)
  450cfc:	00000000 	nop
  450d00:	0320f809 	jalr	t9
  450d04:	00000000 	nop
  450d08:	8fdc0060 	lw	gp,96(s8)
  450d0c:	00000000 	nop
  450d10:	1000ff9a 	b	450b7c <do_command+0x8fc>
  450d14:	00000000 	nop
	    }
	}

	/* report on and react to return code */
	{
	    int r = pclose(f);
  450d18:	8fc41568 	lw	a0,5480(s8)
  450d1c:	8f998b48 	lw	t9,-29880(gp)
  450d20:	00000000 	nop
  450d24:	0320f809 	jalr	t9
  450d28:	00000000 	nop
  450d2c:	8fdc0060 	lw	gp,96(s8)
  450d30:	afc20670 	sw	v0,1648(s8)

	    if (r == -1)
  450d34:	8fc30670 	lw	v1,1648(s8)
  450d38:	2402ffff 	li	v0,-1
  450d3c:	14620018 	bne	v1,v0,450da0 <do_command+0xb20>
  450d40:	00000000 	nop
	    {
		log_errno((e, "pclose failed for %s%s command"
  450d44:	8f998234 	lw	t9,-32204(gp)
  450d48:	00000000 	nop
  450d4c:	0320f809 	jalr	t9
  450d50:	00000000 	nop
  450d54:	8fdc0060 	lw	gp,96(s8)
  450d58:	8c420000 	lw	v0,0(v0)
  450d5c:	00000000 	nop
  450d60:	afc2066c 	sw	v0,1644(s8)
  450d64:	8fc4066c 	lw	a0,1644(s8)
  450d68:	8f85802c 	lw	a1,-32724(gp)
  450d6c:	00000000 	nop
  450d70:	24a50238 	addiu	a1,a1,568
  450d74:	8fc616a4 	lw	a2,5796(s8)
  450d78:	8fc70668 	lw	a3,1640(s8)
  450d7c:	8f9988ec 	lw	t9,-30484(gp)
  450d80:	00000000 	nop
  450d84:	0320f809 	jalr	t9
  450d88:	00000000 	nop
  450d8c:	8fdc0060 	lw	gp,96(s8)
  450d90:	00000000 	nop
		    , verb, verb_suffix));
		return FALSE;
  450d94:	00001021 	move	v0,zero
  450d98:	1000006a 	b	450f44 <do_command+0xcc4>
  450d9c:	00000000 	nop
	    }
	    else if (WIFEXITED(r))
  450da0:	8fc20670 	lw	v0,1648(s8)
  450da4:	00000000 	nop
  450da8:	afc21670 	sw	v0,5744(s8)
  450dac:	8fc21670 	lw	v0,5744(s8)
  450db0:	00000000 	nop
  450db4:	3042007f 	andi	v0,v0,0x7f
  450db8:	14400021 	bnez	v0,450e40 <do_command+0xbc0>
  450dbc:	00000000 	nop
	    {
		if (WEXITSTATUS(r) != 0)
  450dc0:	8fc20670 	lw	v0,1648(s8)
  450dc4:	00000000 	nop
  450dc8:	afc21670 	sw	v0,5744(s8)
  450dcc:	8fc21670 	lw	v0,5744(s8)
  450dd0:	00000000 	nop
  450dd4:	3042ff00 	andi	v0,v0,0xff00
  450dd8:	00021203 	sra	v0,v0,0x8
  450ddc:	10400058 	beqz	v0,450f40 <do_command+0xcc0>
  450de0:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "%s%s command exited with status %d"
			, verb, verb_suffix, WEXITSTATUS(r));
  450de4:	8fc20670 	lw	v0,1648(s8)
  450de8:	00000000 	nop
  450dec:	afc21670 	sw	v0,5744(s8)
  450df0:	8fc21670 	lw	v0,5744(s8)
  450df4:	00000000 	nop
  450df8:	3042ff00 	andi	v0,v0,0xff00
  450dfc:	00021203 	sra	v0,v0,0x8
  450e00:	afa20010 	sw	v0,16(sp)
  450e04:	24040003 	li	a0,3
  450e08:	8f85802c 	lw	a1,-32724(gp)
  450e0c:	00000000 	nop
  450e10:	24a50258 	addiu	a1,a1,600
  450e14:	8fc616a4 	lw	a2,5796(s8)
  450e18:	8fc70668 	lw	a3,1640(s8)
  450e1c:	8f998c48 	lw	t9,-29624(gp)
  450e20:	00000000 	nop
  450e24:	0320f809 	jalr	t9
  450e28:	00000000 	nop
  450e2c:	8fdc0060 	lw	gp,96(s8)
  450e30:	00000000 	nop
		    return FALSE;
  450e34:	00001021 	move	v0,zero
  450e38:	10000042 	b	450f44 <do_command+0xcc4>
  450e3c:	00000000 	nop
		}
	    }
	    else if (WIFSIGNALED(r))
  450e40:	8fc20670 	lw	v0,1648(s8)
  450e44:	00000000 	nop
  450e48:	afc21670 	sw	v0,5744(s8)
  450e4c:	8fc21670 	lw	v0,5744(s8)
  450e50:	00000000 	nop
  450e54:	afc2066c 	sw	v0,1644(s8)
  450e58:	afc01688 	sw	zero,5768(s8)
  450e5c:	8fc2066c 	lw	v0,1644(s8)
  450e60:	00000000 	nop
  450e64:	304300ff 	andi	v1,v0,0xff
  450e68:	2402007f 	li	v0,127
  450e6c:	10620008 	beq	v1,v0,450e90 <do_command+0xc10>
  450e70:	00000000 	nop
  450e74:	8fc2066c 	lw	v0,1644(s8)
  450e78:	00000000 	nop
  450e7c:	3042007f 	andi	v0,v0,0x7f
  450e80:	10400003 	beqz	v0,450e90 <do_command+0xc10>
  450e84:	00000000 	nop
  450e88:	24030001 	li	v1,1
  450e8c:	afc31688 	sw	v1,5768(s8)
  450e90:	8fc21688 	lw	v0,5768(s8)
  450e94:	00000000 	nop
  450e98:	10400017 	beqz	v0,450ef8 <do_command+0xc78>
  450e9c:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%s%s command exited with signal %d"
		    , verb, verb_suffix, WTERMSIG(r));
  450ea0:	8fc20670 	lw	v0,1648(s8)
  450ea4:	00000000 	nop
  450ea8:	afc21670 	sw	v0,5744(s8)
  450eac:	8fc21670 	lw	v0,5744(s8)
  450eb0:	00000000 	nop
  450eb4:	3042007f 	andi	v0,v0,0x7f
  450eb8:	afa20010 	sw	v0,16(sp)
  450ebc:	24040003 	li	a0,3
  450ec0:	8f85802c 	lw	a1,-32724(gp)
  450ec4:	00000000 	nop
  450ec8:	24a5027c 	addiu	a1,a1,636
  450ecc:	8fc616a4 	lw	a2,5796(s8)
  450ed0:	8fc70668 	lw	a3,1640(s8)
  450ed4:	8f998c48 	lw	t9,-29624(gp)
  450ed8:	00000000 	nop
  450edc:	0320f809 	jalr	t9
  450ee0:	00000000 	nop
  450ee4:	8fdc0060 	lw	gp,96(s8)
  450ee8:	00000000 	nop
		return FALSE;
  450eec:	00001021 	move	v0,zero
  450ef0:	10000014 	b	450f44 <do_command+0xcc4>
  450ef4:	00000000 	nop
	    }
	    else
	    {
		loglog(RC_LOG_SERIOUS, "%s%s command exited with unknown status %d"
  450ef8:	8fc20670 	lw	v0,1648(s8)
  450efc:	00000000 	nop
  450f00:	afa20010 	sw	v0,16(sp)
  450f04:	24040003 	li	a0,3
  450f08:	8f85802c 	lw	a1,-32724(gp)
  450f0c:	00000000 	nop
  450f10:	24a502a0 	addiu	a1,a1,672
  450f14:	8fc616a4 	lw	a2,5796(s8)
  450f18:	8fc70668 	lw	a3,1640(s8)
  450f1c:	8f998c48 	lw	t9,-29624(gp)
  450f20:	00000000 	nop
  450f24:	0320f809 	jalr	t9
  450f28:	00000000 	nop
  450f2c:	8fdc0060 	lw	gp,96(s8)
  450f30:	00000000 	nop
		    , verb, verb_suffix, r);
		return FALSE;
  450f34:	00001021 	move	v0,zero
  450f38:	10000002 	b	450f44 <do_command+0xcc4>
  450f3c:	00000000 	nop
	    }
	}
    }
#endif /* KLIPS */
    return TRUE;
  450f40:	24020001 	li	v0,1
}
  450f44:	03c0e821 	move	sp,s8
  450f48:	8fbf1698 	lw	ra,5784(sp)
  450f4c:	8fbe1694 	lw	s8,5780(sp)
  450f50:	27bd16a0 	addiu	sp,sp,5792
  450f54:	03e00008 	jr	ra
  450f58:	00000000 	nop

00450f5c <could_route>:
  450f5c:	3c1c0fbc 	lui	gp,0xfbc
  450f60:	279cba14 	addiu	gp,gp,-17900
  450f64:	0399e021 	addu	gp,gp,t9
  450f68:	27bdfec8 	addiu	sp,sp,-312
  450f6c:	afbc0018 	sw	gp,24(sp)
  450f70:	afbf0130 	sw	ra,304(sp)
  450f74:	afbe012c 	sw	s8,300(sp)
  450f78:	afbc0128 	sw	gp,296(sp)
  450f7c:	03a0f021 	move	s8,sp
  450f80:	afc40138 	sw	a0,312(s8)

/* Check that we can route (and eroute).  Diagnose if we cannot. */

static bool
could_route(struct connection *c)
{
    struct connection *ero	/* who, if anyone, owns our eroute? */
	, *ro = route_owner(c, &ero);	/* who owns our route? */
  450f84:	8fc40138 	lw	a0,312(s8)
  450f88:	27c50020 	addiu	a1,s8,32
  450f8c:	8f9980fc 	lw	t9,-32516(gp)
  450f90:	00000000 	nop
  450f94:	0320f809 	jalr	t9
  450f98:	00000000 	nop
  450f9c:	8fdc0018 	lw	gp,24(s8)
  450fa0:	afc20024 	sw	v0,36(s8)

    /* if this is a Road Warrior template, we cannot route.
     * Opportunistic template is OK.
     */
    if (c->kind == CK_TEMPLATE && !(c->policy & POLICY_OPPO))
  450fa4:	8fc20138 	lw	v0,312(s8)
  450fa8:	00000000 	nop
  450fac:	8c420194 	lw	v0,404(v0)
  450fb0:	00000000 	nop
  450fb4:	1440001a 	bnez	v0,451020 <could_route+0xc4>
  450fb8:	00000000 	nop
  450fbc:	8fc20138 	lw	v0,312(s8)
  450fc0:	00000000 	nop
  450fc4:	8c440008 	lw	a0,8(v0)
  450fc8:	8c45000c 	lw	a1,12(v0)
  450fcc:	24020000 	li	v0,0
  450fd0:	24030800 	li	v1,2048
  450fd4:	00822024 	and	a0,a0,v0
  450fd8:	00a32824 	and	a1,a1,v1
  450fdc:	00801021 	move	v0,a0
  450fe0:	00451025 	or	v0,v0,a1
  450fe4:	1440000e 	bnez	v0,451020 <could_route+0xc4>
  450fe8:	00000000 	nop
    {
	loglog(RC_ROUTE, "cannot route Road Warrior template");
  450fec:	24040019 	li	a0,25
  450ff0:	8f85802c 	lw	a1,-32724(gp)
  450ff4:	00000000 	nop
  450ff8:	24a502cc 	addiu	a1,a1,716
  450ffc:	8f998c48 	lw	t9,-29624(gp)
  451000:	00000000 	nop
  451004:	0320f809 	jalr	t9
  451008:	00000000 	nop
  45100c:	8fdc0018 	lw	gp,24(s8)
  451010:	00000000 	nop
	return FALSE;
  451014:	00001021 	move	v0,zero
  451018:	1000009f 	b	451298 <could_route+0x33c>
  45101c:	00000000 	nop
    }

    /* if we don't know nexthop, we cannot route */
    if (isanyaddr(&c->this.host_nexthop))
  451020:	8fc20138 	lw	v0,312(s8)
  451024:	00000000 	nop
  451028:	24420074 	addiu	v0,v0,116
  45102c:	00402021 	move	a0,v0
  451030:	8f998628 	lw	t9,-31192(gp)
  451034:	00000000 	nop
  451038:	0320f809 	jalr	t9
  45103c:	00000000 	nop
  451040:	8fdc0018 	lw	gp,24(s8)
  451044:	1040000e 	beqz	v0,451080 <could_route+0x124>
  451048:	00000000 	nop
    {
	loglog(RC_ROUTE, "cannot route connection without knowing our nexthop");
  45104c:	24040019 	li	a0,25
  451050:	8f85802c 	lw	a1,-32724(gp)
  451054:	00000000 	nop
  451058:	24a502f0 	addiu	a1,a1,752
  45105c:	8f998c48 	lw	t9,-29624(gp)
  451060:	00000000 	nop
  451064:	0320f809 	jalr	t9
  451068:	00000000 	nop
  45106c:	8fdc0018 	lw	gp,24(s8)
  451070:	00000000 	nop
	return FALSE;
  451074:	00001021 	move	v0,zero
  451078:	10000087 	b	451298 <could_route+0x33c>
  45107c:	00000000 	nop
    }

    /* if routing would affect IKE messages, reject */
    if (!no_klips
#ifdef NAT_TRAVERSAL
    && c->this.host_port != NAT_T_IKE_FLOAT_PORT
#endif
    && c->this.host_port != IKE_UDP_PORT
    && addrinsubnet(&c->that.host_addr, EffectivePeerClient(c)))
  451080:	8f8286ec 	lw	v0,-30996(gp)
  451084:	00000000 	nop
  451088:	8c420000 	lw	v0,0(v0)
  45108c:	00000000 	nop
  451090:	1440002d 	bnez	v0,451148 <could_route+0x1ec>
  451094:	00000000 	nop
  451098:	8fc20138 	lw	v0,312(s8)
  45109c:	00000000 	nop
  4510a0:	944300c8 	lhu	v1,200(v0)
  4510a4:	24021194 	li	v0,4500
  4510a8:	10620027 	beq	v1,v0,451148 <could_route+0x1ec>
  4510ac:	00000000 	nop
  4510b0:	8fc20138 	lw	v0,312(s8)
  4510b4:	00000000 	nop
  4510b8:	944300c8 	lhu	v1,200(v0)
  4510bc:	240201f4 	li	v0,500
  4510c0:	10620021 	beq	v1,v0,451148 <could_route+0x1ec>
  4510c4:	00000000 	nop
  4510c8:	8fc40138 	lw	a0,312(s8)
  4510cc:	8f998648 	lw	t9,-31160(gp)
  4510d0:	00000000 	nop
  4510d4:	0320f809 	jalr	t9
  4510d8:	00000000 	nop
  4510dc:	8fdc0018 	lw	gp,24(s8)
  4510e0:	00401821 	move	v1,v0
  4510e4:	8fc20138 	lw	v0,312(s8)
  4510e8:	00000000 	nop
  4510ec:	24420108 	addiu	v0,v0,264
  4510f0:	00402021 	move	a0,v0
  4510f4:	00602821 	move	a1,v1
  4510f8:	8f998acc 	lw	t9,-30004(gp)
  4510fc:	00000000 	nop
  451100:	0320f809 	jalr	t9
  451104:	00000000 	nop
  451108:	8fdc0018 	lw	gp,24(s8)
  45110c:	1040000e 	beqz	v0,451148 <could_route+0x1ec>
  451110:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "cannot install route: peer is within its client");
  451114:	24040003 	li	a0,3
  451118:	8f85802c 	lw	a1,-32724(gp)
  45111c:	00000000 	nop
  451120:	24a50324 	addiu	a1,a1,804
  451124:	8f998c48 	lw	t9,-29624(gp)
  451128:	00000000 	nop
  45112c:	0320f809 	jalr	t9
  451130:	00000000 	nop
  451134:	8fdc0018 	lw	gp,24(s8)
  451138:	00000000 	nop
	return FALSE;
  45113c:	00001021 	move	v0,zero
  451140:	10000055 	b	451298 <could_route+0x33c>
  451144:	00000000 	nop
    }

    /* If there is already a route for peer's client subnet
     * and it disagrees about interface or nexthop, we cannot steal it.
     * Note: if this connection is already routed (perhaps for another
     * state object), the route will agree.
     * This is as it should be -- it will arise during rekeying.
     */
    if (ro != NULL && !routes_agree(ro, c))
  451148:	8fc20024 	lw	v0,36(s8)
  45114c:	00000000 	nop
  451150:	10400029 	beqz	v0,4511f8 <could_route+0x29c>
  451154:	00000000 	nop
  451158:	8fc20024 	lw	v0,36(s8)
  45115c:	00000000 	nop
  451160:	8c430198 	lw	v1,408(v0)
  451164:	8fc20138 	lw	v0,312(s8)
  451168:	00000000 	nop
  45116c:	8c420198 	lw	v0,408(v0)
  451170:	00000000 	nop
  451174:	14620010 	bne	v1,v0,4511b8 <could_route+0x25c>
  451178:	00000000 	nop
  45117c:	8fc20024 	lw	v0,36(s8)
  451180:	00000000 	nop
  451184:	24430074 	addiu	v1,v0,116
  451188:	8fc20138 	lw	v0,312(s8)
  45118c:	00000000 	nop
  451190:	24420074 	addiu	v0,v0,116
  451194:	00602021 	move	a0,v1
  451198:	00402821 	move	a1,v0
  45119c:	8f998928 	lw	t9,-30424(gp)
  4511a0:	00000000 	nop
  4511a4:	0320f809 	jalr	t9
  4511a8:	00000000 	nop
  4511ac:	8fdc0018 	lw	gp,24(s8)
  4511b0:	14400011 	bnez	v0,4511f8 <could_route+0x29c>
  4511b4:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "cannot route -- route already in use for \"%s\""
  4511b8:	24040003 	li	a0,3
  4511bc:	8f85802c 	lw	a1,-32724(gp)
  4511c0:	00000000 	nop
  4511c4:	24a50354 	addiu	a1,a1,852
  4511c8:	8fc20024 	lw	v0,36(s8)
  4511cc:	00000000 	nop
  4511d0:	8c460000 	lw	a2,0(v0)
  4511d4:	8f998c48 	lw	t9,-29624(gp)
  4511d8:	00000000 	nop
  4511dc:	0320f809 	jalr	t9
  4511e0:	00000000 	nop
  4511e4:	8fdc0018 	lw	gp,24(s8)
  4511e8:	00000000 	nop
	    , ro->name);
	return FALSE;	/* another connection already using the eroute */
  4511ec:	00001021 	move	v0,zero
  4511f0:	10000029 	b	451298 <could_route+0x33c>
  4511f4:	00000000 	nop
    }

#ifdef KLIPS
    /* if there is an eroute for another connection, there is a problem */
    if (ero != NULL && ero != c)
  4511f8:	8fc20020 	lw	v0,32(s8)
  4511fc:	00000000 	nop
  451200:	10400024 	beqz	v0,451294 <could_route+0x338>
  451204:	00000000 	nop
  451208:	8fc30020 	lw	v1,32(s8)
  45120c:	8fc20138 	lw	v0,312(s8)
  451210:	00000000 	nop
  451214:	1062001f 	beq	v1,v0,451294 <could_route+0x338>
  451218:	00000000 	nop
    {
	char inst[CONN_INST_BUF];

	fmt_conn_instance(ero, inst);
  45121c:	8fc40020 	lw	a0,32(s8)
  451220:	27c50028 	addiu	a1,s8,40
  451224:	8f998250 	lw	t9,-32176(gp)
  451228:	00000000 	nop
  45122c:	0320f809 	jalr	t9
  451230:	00000000 	nop
  451234:	8fdc0018 	lw	gp,24(s8)
  451238:	00000000 	nop

	loglog(RC_LOG_SERIOUS
  45123c:	8fc20020 	lw	v0,32(s8)
  451240:	00000000 	nop
  451244:	8c4201ac 	lw	v0,428(v0)
  451248:	00000000 	nop
  45124c:	afa20010 	sw	v0,16(sp)
  451250:	24040003 	li	a0,3
  451254:	8f85802c 	lw	a1,-32724(gp)
  451258:	00000000 	nop
  45125c:	24a50384 	addiu	a1,a1,900
  451260:	8fc20020 	lw	v0,32(s8)
  451264:	00000000 	nop
  451268:	8c460000 	lw	a2,0(v0)
  45126c:	27c70028 	addiu	a3,s8,40
  451270:	8f998c48 	lw	t9,-29624(gp)
  451274:	00000000 	nop
  451278:	0320f809 	jalr	t9
  45127c:	00000000 	nop
  451280:	8fdc0018 	lw	gp,24(s8)
  451284:	00000000 	nop
	    , "cannot install eroute -- it is in use for \"%s\"%s #%lu"
	    , ero->name, inst, ero->eroute_owner);
	return FALSE;	/* another connection already using the eroute */
  451288:	00001021 	move	v0,zero
  45128c:	10000002 	b	451298 <could_route+0x33c>
  451290:	00000000 	nop
    }
#endif /* KLIPS */
    return TRUE;
  451294:	24020001 	li	v0,1
}
  451298:	03c0e821 	move	sp,s8
  45129c:	8fbf0130 	lw	ra,304(sp)
  4512a0:	8fbe012c 	lw	s8,300(sp)
  4512a4:	27bd0138 	addiu	sp,sp,312
  4512a8:	03e00008 	jr	ra
  4512ac:	00000000 	nop

004512b0 <trap_connection>:
  4512b0:	3c1c0fbc 	lui	gp,0xfbc
  4512b4:	279cb6c0 	addiu	gp,gp,-18752
  4512b8:	0399e021 	addu	gp,gp,t9
  4512bc:	27bdffd0 	addiu	sp,sp,-48
  4512c0:	afbc0010 	sw	gp,16(sp)
  4512c4:	afbf0028 	sw	ra,40(sp)
  4512c8:	afbe0024 	sw	s8,36(sp)
  4512cc:	afbc0020 	sw	gp,32(sp)
  4512d0:	03a0f021 	move	s8,sp
  4512d4:	afc40030 	sw	a0,48(s8)

bool
trap_connection(struct connection *c)
{
    /* RT_ROUTED_TUNNEL is treated specially: we don't override
     * because we don't want to lose track of the IPSEC_SAs etc.
     */
    return could_route(c)
  4512d8:	afc00018 	sw	zero,24(s8)
  4512dc:	8fc40030 	lw	a0,48(s8)
  4512e0:	8f998038 	lw	t9,-32712(gp)
  4512e4:	00000000 	nop
  4512e8:	27390f5c 	addiu	t9,t9,3932
  4512ec:	00000000 	nop
  4512f0:	0320f809 	jalr	t9
  4512f4:	00000000 	nop
  4512f8:	8fdc0010 	lw	gp,16(s8)
  4512fc:	10400016 	beqz	v0,451358 <trap_connection+0xa8>
  451300:	00000000 	nop
  451304:	8fc20030 	lw	v0,48(s8)
  451308:	00000000 	nop
  45130c:	8c43019c 	lw	v1,412(v0)
  451310:	24020005 	li	v0,5
  451314:	1062000e 	beq	v1,v0,451350 <trap_connection+0xa0>
  451318:	00000000 	nop
  45131c:	8fc40030 	lw	a0,48(s8)
  451320:	00002821 	move	a1,zero
  451324:	8f998038 	lw	t9,-32712(gp)
  451328:	00000000 	nop
  45132c:	27396aa4 	addiu	t9,t9,27300
  451330:	00000000 	nop
  451334:	0320f809 	jalr	t9
  451338:	00000000 	nop
  45133c:	8fdc0010 	lw	gp,16(s8)
  451340:	14400003 	bnez	v0,451350 <trap_connection+0xa0>
  451344:	00000000 	nop
  451348:	10000003 	b	451358 <trap_connection+0xa8>
  45134c:	00000000 	nop
  451350:	24020001 	li	v0,1
  451354:	afc20018 	sw	v0,24(s8)
  451358:	8fc20018 	lw	v0,24(s8)
  45135c:	00000000 	nop
	&& (c->routing == RT_ROUTED_TUNNEL || route_and_eroute(c, NULL));
}
  451360:	03c0e821 	move	sp,s8
  451364:	8fbf0028 	lw	ra,40(sp)
  451368:	8fbe0024 	lw	s8,36(sp)
  45136c:	27bd0030 	addiu	sp,sp,48
  451370:	03e00008 	jr	ra
  451374:	00000000 	nop

00451378 <unroute_connection>:
  451378:	3c1c0fbc 	lui	gp,0xfbc
  45137c:	279cb5f8 	addiu	gp,gp,-18952
  451380:	0399e021 	addu	gp,gp,t9
  451384:	27bdffd0 	addiu	sp,sp,-48
  451388:	afbc0010 	sw	gp,16(sp)
  45138c:	afbf0028 	sw	ra,40(sp)
  451390:	afbe0024 	sw	s8,36(sp)
  451394:	afbc0020 	sw	gp,32(sp)
  451398:	03a0f021 	move	s8,sp
  45139c:	afc40030 	sw	a0,48(s8)

/* delete any eroute for a connection and unroute it if route isn't shared */
void
unroute_connection(struct connection *c)
{
    enum routing_t cr = c->routing;
  4513a0:	8fc20030 	lw	v0,48(s8)
  4513a4:	00000000 	nop
  4513a8:	8c42019c 	lw	v0,412(v0)
  4513ac:	00000000 	nop
  4513b0:	afc20018 	sw	v0,24(s8)

    if (erouted(cr))
  4513b4:	8fc20018 	lw	v0,24(s8)
  4513b8:	00000000 	nop
  4513bc:	1040001f 	beqz	v0,45143c <unroute_connection+0xc4>
  4513c0:	00000000 	nop
    {
	passert(cr != RT_ROUTED_TUNNEL);	/* cannot handle a live one */
  4513c4:	8fc30018 	lw	v1,24(s8)
  4513c8:	24020005 	li	v0,5
  4513cc:	1462000e 	bne	v1,v0,451408 <unroute_connection+0x90>
  4513d0:	00000000 	nop
  4513d4:	8f84802c 	lw	a0,-32724(gp)
  4513d8:	00000000 	nop
  4513dc:	248403bc 	addiu	a0,a0,956
  4513e0:	8f85802c 	lw	a1,-32724(gp)
  4513e4:	00000000 	nop
  4513e8:	24a5fb28 	addiu	a1,a1,-1240
  4513ec:	2406043f 	li	a2,1087
  4513f0:	8f998bb8 	lw	t9,-29768(gp)
  4513f4:	00000000 	nop
  4513f8:	0320f809 	jalr	t9
  4513fc:	00000000 	nop
  451400:	8fdc0010 	lw	gp,16(s8)
  451404:	00000000 	nop
#ifdef KLIPS
	shunt_eroute(c, ERO_DELETE, "delete");
  451408:	8fc40030 	lw	a0,48(s8)
  45140c:	2405000f 	li	a1,15
  451410:	8f86802c 	lw	a2,-32724(gp)
  451414:	00000000 	nop
  451418:	24c603d4 	addiu	a2,a2,980
  45141c:	8f998038 	lw	t9,-32712(gp)
  451420:	00000000 	nop
  451424:	273939d0 	addiu	t9,t9,14800
  451428:	00000000 	nop
  45142c:	0320f809 	jalr	t9
  451430:	00000000 	nop
  451434:	8fdc0010 	lw	gp,16(s8)
  451438:	00000000 	nop
#endif
    }

    c->routing = RT_UNROUTED;	/* do now so route_owner won't find us */
  45143c:	8fc20030 	lw	v0,48(s8)
  451440:	00000000 	nop
  451444:	ac40019c 	sw	zero,412(v0)

    /* only unroute if no other connection shares it */
    if (routed(cr)
    && route_owner(c, NULL) == NULL)
  451448:	8fc20018 	lw	v0,24(s8)
  45144c:	00000000 	nop
  451450:	2c420002 	sltiu	v0,v0,2
  451454:	14400016 	bnez	v0,4514b0 <unroute_connection+0x138>
  451458:	00000000 	nop
  45145c:	8fc40030 	lw	a0,48(s8)
  451460:	00002821 	move	a1,zero
  451464:	8f9980fc 	lw	t9,-32516(gp)
  451468:	00000000 	nop
  45146c:	0320f809 	jalr	t9
  451470:	00000000 	nop
  451474:	8fdc0010 	lw	gp,16(s8)
  451478:	1440000d 	bnez	v0,4514b0 <unroute_connection+0x138>
  45147c:	00000000 	nop
	(void) do_command(c, "unroute");
  451480:	8fc40030 	lw	a0,48(s8)
  451484:	8f85802c 	lw	a1,-32724(gp)
  451488:	00000000 	nop
  45148c:	24a503dc 	addiu	a1,a1,988
  451490:	8f998038 	lw	t9,-32712(gp)
  451494:	00000000 	nop
  451498:	27390280 	addiu	t9,t9,640
  45149c:	00000000 	nop
  4514a0:	0320f809 	jalr	t9
  4514a4:	00000000 	nop
  4514a8:	8fdc0010 	lw	gp,16(s8)
  4514ac:	00000000 	nop
}
  4514b0:	03c0e821 	move	sp,s8
  4514b4:	8fbf0028 	lw	ra,40(sp)
  4514b8:	8fbe0024 	lw	s8,36(sp)
  4514bc:	27bd0030 	addiu	sp,sp,48
  4514c0:	03e00008 	jr	ra
  4514c4:	00000000 	nop

004514c8 <set_text_said>:
  4514c8:	3c1c0fbc 	lui	gp,0xfbc
  4514cc:	279cb4a8 	addiu	gp,gp,-19288
  4514d0:	0399e021 	addu	gp,gp,t9
  4514d4:	27bdffb0 	addiu	sp,sp,-80
  4514d8:	afbc0010 	sw	gp,16(sp)
  4514dc:	afbf0048 	sw	ra,72(sp)
  4514e0:	afbe0044 	sw	s8,68(sp)
  4514e4:	afbc0040 	sw	gp,64(sp)
  4514e8:	03a0f021 	move	s8,sp
  4514ec:	afc40050 	sw	a0,80(s8)
  4514f0:	afc50054 	sw	a1,84(s8)
  4514f4:	afc60058 	sw	a2,88(s8)
  4514f8:	afc7005c 	sw	a3,92(s8)


#ifdef KLIPS

static void
set_text_said(char *text_said, const ip_address *dst, ipsec_spi_t spi, int proto)
{
    ip_said said;

    initsaid(dst, spi, proto, &said);
  4514fc:	8fc40054 	lw	a0,84(s8)
  451500:	8fc50058 	lw	a1,88(s8)
  451504:	8fc6005c 	lw	a2,92(s8)
  451508:	27c70018 	addiu	a3,s8,24
  45150c:	8f99817c 	lw	t9,-32388(gp)
  451510:	00000000 	nop
  451514:	0320f809 	jalr	t9
  451518:	00000000 	nop
  45151c:	8fdc0010 	lw	gp,16(s8)
  451520:	00000000 	nop
    satot(&said, 0, text_said, SATOT_BUF);
  451524:	27c40018 	addiu	a0,s8,24
  451528:	00002821 	move	a1,zero
  45152c:	8fc60050 	lw	a2,80(s8)
  451530:	24070064 	li	a3,100
  451534:	8f998a3c 	lw	t9,-30148(gp)
  451538:	00000000 	nop
  45153c:	0320f809 	jalr	t9
  451540:	00000000 	nop
  451544:	8fdc0010 	lw	gp,16(s8)
  451548:	00000000 	nop
}
  45154c:	03c0e821 	move	sp,s8
  451550:	8fbf0048 	lw	ra,72(sp)
  451554:	8fbe0044 	lw	s8,68(sp)
  451558:	27bd0050 	addiu	sp,sp,80
  45155c:	03e00008 	jr	ra
  451560:	00000000 	nop

00451564 <pfkey_build>:
  451564:	3c1c0fbc 	lui	gp,0xfbc
  451568:	279cb40c 	addiu	gp,gp,-19444
  45156c:	0399e021 	addu	gp,gp,t9
  451570:	27bdffd0 	addiu	sp,sp,-48
  451574:	afbc0018 	sw	gp,24(sp)
  451578:	afbf0028 	sw	ra,40(sp)
  45157c:	afbe0024 	sw	s8,36(sp)
  451580:	afbc0020 	sw	gp,32(sp)
  451584:	03a0f021 	move	s8,sp
  451588:	afc40030 	sw	a0,48(s8)
  45158c:	afc50034 	sw	a1,52(s8)
  451590:	afc60038 	sw	a2,56(s8)
  451594:	afc7003c 	sw	a3,60(s8)

static bool
pfkey_build(int error
, const char *description
, const char *text_said
, struct sadb_ext *extensions[SADB_EXT_MAX + 1])
{
    if (error == 0)
  451598:	8fc20030 	lw	v0,48(s8)
  45159c:	00000000 	nop
  4515a0:	14400004 	bnez	v0,4515b4 <pfkey_build+0x50>
  4515a4:	00000000 	nop
    {
	return TRUE;
  4515a8:	24020001 	li	v0,1
  4515ac:	10000018 	b	451610 <pfkey_build+0xac>
  4515b0:	00000000 	nop
    }
    else
    {
	loglog(RC_LOG_SERIOUS, "building of %s %s failed, code %d"
  4515b4:	8fc20030 	lw	v0,48(s8)
  4515b8:	00000000 	nop
  4515bc:	afa20010 	sw	v0,16(sp)
  4515c0:	24040003 	li	a0,3
  4515c4:	8f85802c 	lw	a1,-32724(gp)
  4515c8:	00000000 	nop
  4515cc:	24a503e4 	addiu	a1,a1,996
  4515d0:	8fc60034 	lw	a2,52(s8)
  4515d4:	8fc70038 	lw	a3,56(s8)
  4515d8:	8f998c48 	lw	t9,-29624(gp)
  4515dc:	00000000 	nop
  4515e0:	0320f809 	jalr	t9
  4515e4:	00000000 	nop
  4515e8:	8fdc0018 	lw	gp,24(s8)
  4515ec:	00000000 	nop
	    , description, text_said, error);
	pfkey_extensions_free(extensions);
  4515f0:	8fc4003c 	lw	a0,60(s8)
  4515f4:	8f998ae8 	lw	t9,-29976(gp)
  4515f8:	00000000 	nop
  4515fc:	0320f809 	jalr	t9
  451600:	00000000 	nop
  451604:	8fdc0018 	lw	gp,24(s8)
  451608:	00000000 	nop
	return FALSE;
  45160c:	00001021 	move	v0,zero
    }
}
  451610:	03c0e821 	move	sp,s8
  451614:	8fbf0028 	lw	ra,40(sp)
  451618:	8fbe0024 	lw	s8,36(sp)
  45161c:	27bd0030 	addiu	sp,sp,48
  451620:	03e00008 	jr	ra
  451624:	00000000 	nop

00451628 <pfkey_msg_start>:
  451628:	3c1c0fbc 	lui	gp,0xfbc
  45162c:	279cb348 	addiu	gp,gp,-19640
  451630:	0399e021 	addu	gp,gp,t9
  451634:	27bdffc8 	addiu	sp,sp,-56
  451638:	afbc0018 	sw	gp,24(sp)
  45163c:	afbf0030 	sw	ra,48(sp)
  451640:	afbe002c 	sw	s8,44(sp)
  451644:	afbc0028 	sw	gp,40(sp)
  451648:	03a0f021 	move	s8,sp
  45164c:	00801021 	move	v0,a0
  451650:	00a01821 	move	v1,a1
  451654:	afc60040 	sw	a2,64(s8)
  451658:	afc70044 	sw	a3,68(s8)
  45165c:	a3c20020 	sb	v0,32(s8)
  451660:	a3c30021 	sb	v1,33(s8)

/* pfkey_extensions_init + pfkey_build + pfkey_msg_hdr_build */
static bool
pfkey_msg_start(u_int8_t msg_type
, u_int8_t satype
, const char *description
, const char *text_said
, struct sadb_ext *extensions[SADB_EXT_MAX + 1])
{
    pfkey_extensions_init(extensions);
  451664:	8fc40048 	lw	a0,72(s8)
  451668:	8f998878 	lw	t9,-30600(gp)
  45166c:	00000000 	nop
  451670:	0320f809 	jalr	t9
  451674:	00000000 	nop
  451678:	8fdc0018 	lw	gp,24(s8)
  45167c:	00000000 	nop
    return pfkey_build(pfkey_msg_hdr_build(&extensions[0], msg_type
  451680:	93c30020 	lbu	v1,32(s8)
  451684:	93c60021 	lbu	a2,33(s8)
  451688:	8f828018 	lw	v0,-32744(gp)
  45168c:	00000000 	nop
  451690:	244223b4 	addiu	v0,v0,9140
  451694:	8c420000 	lw	v0,0(v0)
  451698:	00000000 	nop
  45169c:	24420001 	addiu	v0,v0,1
  4516a0:	8f818018 	lw	at,-32744(gp)
  4516a4:	00000000 	nop
  4516a8:	242123b4 	addiu	at,at,9140
  4516ac:	ac220000 	sw	v0,0(at)
  4516b0:	afa20010 	sw	v0,16(sp)
  4516b4:	8f828018 	lw	v0,-32744(gp)
  4516b8:	00000000 	nop
  4516bc:	24427664 	addiu	v0,v0,30308
  4516c0:	8c420000 	lw	v0,0(v0)
  4516c4:	00000000 	nop
  4516c8:	afa20014 	sw	v0,20(sp)
  4516cc:	8fc40048 	lw	a0,72(s8)
  4516d0:	00602821 	move	a1,v1
  4516d4:	00003821 	move	a3,zero
  4516d8:	8f998330 	lw	t9,-31952(gp)
  4516dc:	00000000 	nop
  4516e0:	0320f809 	jalr	t9
  4516e4:	00000000 	nop
  4516e8:	8fdc0018 	lw	gp,24(s8)
  4516ec:	00402021 	move	a0,v0
  4516f0:	8fc50040 	lw	a1,64(s8)
  4516f4:	8fc60044 	lw	a2,68(s8)
  4516f8:	8fc70048 	lw	a3,72(s8)
  4516fc:	8f998038 	lw	t9,-32712(gp)
  451700:	00000000 	nop
  451704:	27391564 	addiu	t9,t9,5476
  451708:	00000000 	nop
  45170c:	0320f809 	jalr	t9
  451710:	00000000 	nop
  451714:	8fdc0018 	lw	gp,24(s8)
  451718:	00000000 	nop
	    , satype, 0, ++pfkey_seq, pid)
	, description, text_said, extensions);
}
  45171c:	03c0e821 	move	sp,s8
  451720:	8fbf0030 	lw	ra,48(sp)
  451724:	8fbe002c 	lw	s8,44(sp)
  451728:	27bd0038 	addiu	sp,sp,56
  45172c:	03e00008 	jr	ra
  451730:	00000000 	nop

00451734 <pfkeyext_address>:
  451734:	3c1c0fbc 	lui	gp,0xfbc
  451738:	279cb23c 	addiu	gp,gp,-19908
  45173c:	0399e021 	addu	gp,gp,t9
  451740:	27bdffa0 	addiu	sp,sp,-96
  451744:	afbc0018 	sw	gp,24(sp)
  451748:	afbf0058 	sw	ra,88(sp)
  45174c:	afbe0054 	sw	s8,84(sp)
  451750:	afbc0050 	sw	gp,80(sp)
  451754:	03a0f021 	move	s8,sp
  451758:	00801021 	move	v0,a0
  45175c:	afc50064 	sw	a1,100(s8)
  451760:	afc60068 	sw	a2,104(s8)
  451764:	afc7006c 	sw	a3,108(s8)
  451768:	a7c20020 	sh	v0,32(s8)

/* pfkey_build + pfkey_address_build */
static bool
pfkeyext_address(u_int16_t exttype
, const ip_address *address
, const char *description
, const char *text_said
, struct sadb_ext *extensions[SADB_EXT_MAX + 1])
{
    /* the following variable is only needed to silence
     * a warning caused by the fact that the argument
     * to sockaddrof is NOT pointer to const!
     */
    ip_address t = *address;
  45176c:	8fc30064 	lw	v1,100(s8)
  451770:	00000000 	nop
  451774:	8c620000 	lw	v0,0(v1)
  451778:	00000000 	nop
  45177c:	afc20028 	sw	v0,40(s8)
  451780:	8c620004 	lw	v0,4(v1)
  451784:	00000000 	nop
  451788:	afc2002c 	sw	v0,44(s8)
  45178c:	8c620008 	lw	v0,8(v1)
  451790:	00000000 	nop
  451794:	afc20030 	sw	v0,48(s8)
  451798:	8c62000c 	lw	v0,12(v1)
  45179c:	00000000 	nop
  4517a0:	afc20034 	sw	v0,52(s8)
  4517a4:	8c620010 	lw	v0,16(v1)
  4517a8:	00000000 	nop
  4517ac:	afc20038 	sw	v0,56(s8)
  4517b0:	8c620014 	lw	v0,20(v1)
  4517b4:	00000000 	nop
  4517b8:	afc2003c 	sw	v0,60(s8)
  4517bc:	8c620018 	lw	v0,24(v1)
  4517c0:	00000000 	nop
  4517c4:	afc20040 	sw	v0,64(s8)

    return pfkey_build(pfkey_address_build(extensions + exttype
  4517c8:	27c40028 	addiu	a0,s8,40
  4517cc:	8f9982d4 	lw	t9,-32044(gp)
  4517d0:	00000000 	nop
  4517d4:	0320f809 	jalr	t9
  4517d8:	00000000 	nop
  4517dc:	8fdc0018 	lw	gp,24(s8)
  4517e0:	00402021 	move	a0,v0
  4517e4:	97c20020 	lhu	v0,32(s8)
  4517e8:	00000000 	nop
  4517ec:	00021880 	sll	v1,v0,0x2
  4517f0:	8fc20070 	lw	v0,112(s8)
  4517f4:	00000000 	nop
  4517f8:	00621021 	addu	v0,v1,v0
  4517fc:	97c30020 	lhu	v1,32(s8)
  451800:	afa40010 	sw	a0,16(sp)
  451804:	00402021 	move	a0,v0
  451808:	00602821 	move	a1,v1
  45180c:	00003021 	move	a2,zero
  451810:	00003821 	move	a3,zero
  451814:	8f9980b4 	lw	t9,-32588(gp)
  451818:	00000000 	nop
  45181c:	0320f809 	jalr	t9
  451820:	00000000 	nop
  451824:	8fdc0018 	lw	gp,24(s8)
  451828:	00402021 	move	a0,v0
  45182c:	8fc50068 	lw	a1,104(s8)
  451830:	8fc6006c 	lw	a2,108(s8)
  451834:	8fc70070 	lw	a3,112(s8)
  451838:	8f998038 	lw	t9,-32712(gp)
  45183c:	00000000 	nop
  451840:	27391564 	addiu	t9,t9,5476
  451844:	00000000 	nop
  451848:	0320f809 	jalr	t9
  45184c:	00000000 	nop
  451850:	8fdc0018 	lw	gp,24(s8)
  451854:	00000000 	nop
	    , exttype, 0, 0, sockaddrof(&t))
	, description, text_said, extensions);
}
  451858:	03c0e821 	move	sp,s8
  45185c:	8fbf0058 	lw	ra,88(sp)
  451860:	8fbe0054 	lw	s8,84(sp)
  451864:	27bd0060 	addiu	sp,sp,96
  451868:	03e00008 	jr	ra
  45186c:	00000000 	nop

00451870 <pfkeyext_protocol>:
  451870:	3c1c0fbc 	lui	gp,0xfbc
  451874:	279cb100 	addiu	gp,gp,-20224
  451878:	0399e021 	addu	gp,gp,t9
  45187c:	27bdffd0 	addiu	sp,sp,-48
  451880:	afbc0010 	sw	gp,16(sp)
  451884:	afbf0028 	sw	ra,40(sp)
  451888:	afbe0024 	sw	s8,36(sp)
  45188c:	afbc0020 	sw	gp,32(sp)
  451890:	03a0f021 	move	s8,sp
  451894:	afc40030 	sw	a0,48(s8)
  451898:	afc50034 	sw	a1,52(s8)
  45189c:	afc60038 	sw	a2,56(s8)
  4518a0:	afc7003c 	sw	a3,60(s8)

/* pfkey_build + pfkey_x_protocol_build */
static bool
pfkeyext_protocol(int transport_proto
, const char *description
, const char *text_said
, struct sadb_ext *extensions[SADB_EXT_MAX + 1])
{
    return (transport_proto == 0)
  4518a4:	8fc20030 	lw	v0,48(s8)
  4518a8:	00000000 	nop
  4518ac:	1040001a 	beqz	v0,451918 <pfkeyext_protocol+0xa8>
  4518b0:	00000000 	nop
  4518b4:	8fc2003c 	lw	v0,60(s8)
  4518b8:	00000000 	nop
  4518bc:	24420068 	addiu	v0,v0,104
  4518c0:	93c30033 	lbu	v1,51(s8)
  4518c4:	00402021 	move	a0,v0
  4518c8:	00602821 	move	a1,v1
  4518cc:	8f99836c 	lw	t9,-31892(gp)
  4518d0:	00000000 	nop
  4518d4:	0320f809 	jalr	t9
  4518d8:	00000000 	nop
  4518dc:	8fdc0010 	lw	gp,16(s8)
  4518e0:	00402021 	move	a0,v0
  4518e4:	8fc50034 	lw	a1,52(s8)
  4518e8:	8fc60038 	lw	a2,56(s8)
  4518ec:	8fc7003c 	lw	a3,60(s8)
  4518f0:	8f998038 	lw	t9,-32712(gp)
  4518f4:	00000000 	nop
  4518f8:	27391564 	addiu	t9,t9,5476
  4518fc:	00000000 	nop
  451900:	0320f809 	jalr	t9
  451904:	00000000 	nop
  451908:	8fdc0010 	lw	gp,16(s8)
  45190c:	afc20018 	sw	v0,24(s8)
  451910:	10000003 	b	451920 <pfkeyext_protocol+0xb0>
  451914:	00000000 	nop
  451918:	24020001 	li	v0,1
  45191c:	afc20018 	sw	v0,24(s8)
  451920:	8fc20018 	lw	v0,24(s8)
  451924:	00000000 	nop
        ? TRUE
        : pfkey_build(pfkey_x_protocol_build(extensions + SADB_X_EXT_PROTOCOL,
                                             transport_proto),
                      description, text_said, extensions);
}
  451928:	03c0e821 	move	sp,s8
  45192c:	8fbf0028 	lw	ra,40(sp)
  451930:	8fbe0024 	lw	s8,36(sp)
  451934:	27bd0030 	addiu	sp,sp,48
  451938:	03e00008 	jr	ra
  45193c:	00000000 	nop

00451940 <finish_pfkey_msg>:
  451940:	3c1c0fbc 	lui	gp,0xfbc
  451944:	279cb030 	addiu	gp,gp,-20432
  451948:	0399e021 	addu	gp,gp,t9
  45194c:	27bdefa8 	addiu	sp,sp,-4184
  451950:	afbc0020 	sw	gp,32(sp)
  451954:	afbf1054 	sw	ra,4180(sp)
  451958:	afbe1050 	sw	s8,4176(sp)
  45195c:	afbc104c 	sw	gp,4172(sp)
  451960:	afb01048 	sw	s0,4168(sp)
  451964:	03a0f021 	move	s8,sp
  451968:	afc41058 	sw	a0,4184(s8)
  45196c:	afc5105c 	sw	a1,4188(s8)
  451970:	afc61060 	sw	a2,4192(s8)
  451974:	afc71064 	sw	a3,4196(s8)

/* Finish (building, sending, accepting response for) PF_KEY message.
 * If response isn't NULL, the response from the kernel will be
 * placed there (and its errno field will not be examined).
 * Returns TRUE iff all appears well.
 */
static bool
finish_pfkey_msg(struct sadb_ext *extensions[SADB_EXT_MAX + 1]
, const char *description
, const char *text_said
, pfkey_buf *response)
{
    struct sadb_msg *pfkey_msg;
    bool success = TRUE;
  451978:	24020001 	li	v0,1
  45197c:	afc2002c 	sw	v0,44(s8)
    int error = pfkey_msg_build(&pfkey_msg, extensions, EXT_BITS_IN);
  451980:	27c40028 	addiu	a0,s8,40
  451984:	8fc51058 	lw	a1,4184(s8)
  451988:	00003021 	move	a2,zero
  45198c:	8f9989a8 	lw	t9,-30296(gp)
  451990:	00000000 	nop
  451994:	0320f809 	jalr	t9
  451998:	00000000 	nop
  45199c:	8fdc0020 	lw	gp,32(s8)
  4519a0:	afc20030 	sw	v0,48(s8)

    if (error != 0)
  4519a4:	8fc20030 	lw	v0,48(s8)
  4519a8:	00000000 	nop
  4519ac:	10400013 	beqz	v0,4519fc <finish_pfkey_msg+0xbc>
  4519b0:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "pfkey_msg_build of %s %s failed, code %d"
  4519b4:	8fc20030 	lw	v0,48(s8)
  4519b8:	00000000 	nop
  4519bc:	afa20010 	sw	v0,16(sp)
  4519c0:	24040003 	li	a0,3
  4519c4:	8f85802c 	lw	a1,-32724(gp)
  4519c8:	00000000 	nop
  4519cc:	24a50408 	addiu	a1,a1,1032
  4519d0:	8fc6105c 	lw	a2,4188(s8)
  4519d4:	8fc71060 	lw	a3,4192(s8)
  4519d8:	8f998c48 	lw	t9,-29624(gp)
  4519dc:	00000000 	nop
  4519e0:	0320f809 	jalr	t9
  4519e4:	00000000 	nop
  4519e8:	8fdc0020 	lw	gp,32(s8)
  4519ec:	00000000 	nop
	    , description, text_said, error);
	success = FALSE;
  4519f0:	afc0002c 	sw	zero,44(s8)
  4519f4:	10000158 	b	451f58 <finish_pfkey_msg+0x618>
  4519f8:	00000000 	nop
    }
    else
    {
	size_t len = pfkey_msg->sadb_msg_len * IPSEC_PFKEYv2_ALIGN;
  4519fc:	8fc20028 	lw	v0,40(s8)
  451a00:	00000000 	nop
  451a04:	94420004 	lhu	v0,4(v0)
  451a08:	00000000 	nop
  451a0c:	000210c0 	sll	v0,v0,0x3
  451a10:	afc20034 	sw	v0,52(s8)

	DBG(DBG_KLIPS,
  451a14:	8f8284f8 	lw	v0,-31496(gp)
  451a18:	00000000 	nop
  451a1c:	8c420000 	lw	v0,0(v0)
  451a20:	00000000 	nop
  451a24:	30420040 	andi	v0,v0,0x40
  451a28:	10400027 	beqz	v0,451ac8 <finish_pfkey_msg+0x188>
  451a2c:	00000000 	nop
  451a30:	8fc20028 	lw	v0,40(s8)
  451a34:	00000000 	nop
  451a38:	90420001 	lbu	v0,1(v0)
  451a3c:	8f848018 	lw	a0,-32744(gp)
  451a40:	00000000 	nop
  451a44:	248423b8 	addiu	a0,a0,9144
  451a48:	00402821 	move	a1,v0
  451a4c:	8f99843c 	lw	t9,-31684(gp)
  451a50:	00000000 	nop
  451a54:	0320f809 	jalr	t9
  451a58:	00000000 	nop
  451a5c:	8fdc0020 	lw	gp,32(s8)
  451a60:	00401821 	move	v1,v0
  451a64:	8fc21060 	lw	v0,4192(s8)
  451a68:	00000000 	nop
  451a6c:	afa20010 	sw	v0,16(sp)
  451a70:	8f84802c 	lw	a0,-32724(gp)
  451a74:	00000000 	nop
  451a78:	24840434 	addiu	a0,a0,1076
  451a7c:	00602821 	move	a1,v1
  451a80:	8fc20028 	lw	v0,40(s8)
  451a84:	00000000 	nop
  451a88:	8c460008 	lw	a2,8(v0)
  451a8c:	8fc7105c 	lw	a3,4188(s8)
  451a90:	8f9983b8 	lw	t9,-31816(gp)
  451a94:	00000000 	nop
  451a98:	0320f809 	jalr	t9
  451a9c:	00000000 	nop
  451aa0:	8fdc0020 	lw	gp,32(s8)
  451aa4:	00002021 	move	a0,zero
  451aa8:	8fc50028 	lw	a1,40(s8)
  451aac:	8fc60034 	lw	a2,52(s8)
  451ab0:	8f9984ec 	lw	t9,-31508(gp)
  451ab4:	00000000 	nop
  451ab8:	0320f809 	jalr	t9
  451abc:	00000000 	nop
  451ac0:	8fdc0020 	lw	gp,32(s8)
  451ac4:	00000000 	nop
	    DBG_log("finish_pfkey_msg: %s message %u for %s %s"
		, sparse_val_show(pfkey_type_names, pfkey_msg->sadb_msg_type)
		, pfkey_msg->sadb_msg_seq
		, description, text_said);
	    DBG_dump(NULL, (void *) pfkey_msg, len));

	if (!no_klips)
  451ac8:	8f8286ec 	lw	v0,-30996(gp)
  451acc:	00000000 	nop
  451ad0:	8c420000 	lw	v0,0(v0)
  451ad4:	00000000 	nop
  451ad8:	1440011f 	bnez	v0,451f58 <finish_pfkey_msg+0x618>
  451adc:	00000000 	nop
	{
	    ssize_t r = write(pfkeyfd, pfkey_msg, len);
  451ae0:	8f848528 	lw	a0,-31448(gp)
  451ae4:	00000000 	nop
  451ae8:	8c840000 	lw	a0,0(a0)
  451aec:	8fc50028 	lw	a1,40(s8)
  451af0:	8fc60034 	lw	a2,52(s8)
  451af4:	8f9987b0 	lw	t9,-30800(gp)
  451af8:	00000000 	nop
  451afc:	0320f809 	jalr	t9
  451b00:	00000000 	nop
  451b04:	8fdc0020 	lw	gp,32(s8)
  451b08:	afc20038 	sw	v0,56(s8)

	    if (r != (ssize_t)len)
  451b0c:	8fc30038 	lw	v1,56(s8)
  451b10:	8fc20034 	lw	v0,52(s8)
  451b14:	00000000 	nop
  451b18:	10620068 	beq	v1,v0,451cbc <finish_pfkey_msg+0x37c>
  451b1c:	00000000 	nop
	    {
		if (r < 0)
  451b20:	8fc20038 	lw	v0,56(s8)
  451b24:	00000000 	nop
  451b28:	0441002b 	bgez	v0,451bd8 <finish_pfkey_msg+0x298>
  451b2c:	00000000 	nop
		{
		    log_errno((e
  451b30:	8f998234 	lw	t9,-32204(gp)
  451b34:	00000000 	nop
  451b38:	0320f809 	jalr	t9
  451b3c:	00000000 	nop
  451b40:	8fdc0020 	lw	gp,32(s8)
  451b44:	8c420000 	lw	v0,0(v0)
  451b48:	00000000 	nop
  451b4c:	afc2003c 	sw	v0,60(s8)
  451b50:	8fc20028 	lw	v0,40(s8)
  451b54:	00000000 	nop
  451b58:	90420001 	lbu	v0,1(v0)
  451b5c:	8f848018 	lw	a0,-32744(gp)
  451b60:	00000000 	nop
  451b64:	248423b8 	addiu	a0,a0,9144
  451b68:	00402821 	move	a1,v0
  451b6c:	8f99843c 	lw	t9,-31684(gp)
  451b70:	00000000 	nop
  451b74:	0320f809 	jalr	t9
  451b78:	00000000 	nop
  451b7c:	8fdc0020 	lw	gp,32(s8)
  451b80:	00401821 	move	v1,v0
  451b84:	8fc2105c 	lw	v0,4188(s8)
  451b88:	00000000 	nop
  451b8c:	afa20010 	sw	v0,16(sp)
  451b90:	8fc21060 	lw	v0,4192(s8)
  451b94:	00000000 	nop
  451b98:	afa20014 	sw	v0,20(sp)
  451b9c:	8fc4003c 	lw	a0,60(s8)
  451ba0:	8f85802c 	lw	a1,-32724(gp)
  451ba4:	00000000 	nop
  451ba8:	24a50460 	addiu	a1,a1,1120
  451bac:	00603021 	move	a2,v1
  451bb0:	8fc20028 	lw	v0,40(s8)
  451bb4:	00000000 	nop
  451bb8:	8c470008 	lw	a3,8(v0)
  451bbc:	8f9988ec 	lw	t9,-30484(gp)
  451bc0:	00000000 	nop
  451bc4:	0320f809 	jalr	t9
  451bc8:	00000000 	nop
  451bcc:	8fdc0020 	lw	gp,32(s8)
  451bd0:	10000028 	b	451c74 <finish_pfkey_msg+0x334>
  451bd4:	00000000 	nop
			, "pfkey write() of %s message %u"
			  " for %s %s failed"
			, sparse_val_show(pfkey_type_names
			    , pfkey_msg->sadb_msg_type)
			, pfkey_msg->sadb_msg_seq
			, description, text_said));
		}
		else
		{
		    loglog(RC_LOG_SERIOUS
  451bd8:	8fc20028 	lw	v0,40(s8)
  451bdc:	00000000 	nop
  451be0:	90420001 	lbu	v0,1(v0)
  451be4:	8f848018 	lw	a0,-32744(gp)
  451be8:	00000000 	nop
  451bec:	248423b8 	addiu	a0,a0,9144
  451bf0:	00402821 	move	a1,v0
  451bf4:	8f99843c 	lw	t9,-31684(gp)
  451bf8:	00000000 	nop
  451bfc:	0320f809 	jalr	t9
  451c00:	00000000 	nop
  451c04:	8fdc0020 	lw	gp,32(s8)
  451c08:	00401821 	move	v1,v0
  451c0c:	8fc2105c 	lw	v0,4188(s8)
  451c10:	00000000 	nop
  451c14:	afa20010 	sw	v0,16(sp)
  451c18:	8fc21060 	lw	v0,4192(s8)
  451c1c:	00000000 	nop
  451c20:	afa20014 	sw	v0,20(sp)
  451c24:	8fc20038 	lw	v0,56(s8)
  451c28:	00000000 	nop
  451c2c:	afa20018 	sw	v0,24(sp)
  451c30:	8fc20034 	lw	v0,52(s8)
  451c34:	00000000 	nop
  451c38:	afa2001c 	sw	v0,28(sp)
  451c3c:	24040003 	li	a0,3
  451c40:	8f85802c 	lw	a1,-32724(gp)
  451c44:	00000000 	nop
  451c48:	24a50490 	addiu	a1,a1,1168
  451c4c:	00603021 	move	a2,v1
  451c50:	8fc20028 	lw	v0,40(s8)
  451c54:	00000000 	nop
  451c58:	8c470008 	lw	a3,8(v0)
  451c5c:	8f998c48 	lw	t9,-29624(gp)
  451c60:	00000000 	nop
  451c64:	0320f809 	jalr	t9
  451c68:	00000000 	nop
  451c6c:	8fdc0020 	lw	gp,32(s8)
  451c70:	00000000 	nop
			, "ERROR: pfkey write() of %s message %u"
			  " for %s %s truncated: %ld instead of %ld"
			, sparse_val_show(pfkey_type_names
			    , pfkey_msg->sadb_msg_type)
			, pfkey_msg->sadb_msg_seq
			, description, text_said
			, (long)r, (long)len);
		}
		success = FALSE;
  451c74:	afc0002c 	sw	zero,44(s8)

		/* if we were compiled with debugging, but we haven't already
		 * dumped the KLIPS command, do so.
		 */
#ifdef DEBUG
		if ((cur_debugging & DBG_KLIPS) == 0)
  451c78:	8f8284f8 	lw	v0,-31496(gp)
  451c7c:	00000000 	nop
  451c80:	8c420000 	lw	v0,0(v0)
  451c84:	00000000 	nop
  451c88:	30420040 	andi	v0,v0,0x40
  451c8c:	144000b2 	bnez	v0,451f58 <finish_pfkey_msg+0x618>
  451c90:	00000000 	nop
		    DBG_dump(NULL, (void *) pfkey_msg, len);
  451c94:	00002021 	move	a0,zero
  451c98:	8fc50028 	lw	a1,40(s8)
  451c9c:	8fc60034 	lw	a2,52(s8)
  451ca0:	8f9984ec 	lw	t9,-31508(gp)
  451ca4:	00000000 	nop
  451ca8:	0320f809 	jalr	t9
  451cac:	00000000 	nop
  451cb0:	8fdc0020 	lw	gp,32(s8)
  451cb4:	100000a8 	b	451f58 <finish_pfkey_msg+0x618>
  451cb8:	00000000 	nop
#endif
	    }
	    else
	    {
		/* Check response from KLIPS.
		 * It ought to be an echo, perhaps with additional info.
		 * If the caller wants it, response will point to space.
		 */
		pfkey_buf b;
		pfkey_buf *bp = response != NULL? response : &b;
  451cbc:	8fc21064 	lw	v0,4196(s8)
  451cc0:	00000000 	nop
  451cc4:	afc21040 	sw	v0,4160(s8)
  451cc8:	8fc21064 	lw	v0,4196(s8)
  451ccc:	00000000 	nop
  451cd0:	14400003 	bnez	v0,451ce0 <finish_pfkey_msg+0x3a0>
  451cd4:	00000000 	nop
  451cd8:	27c20040 	addiu	v0,s8,64
  451cdc:	afc21040 	sw	v0,4160(s8)
  451ce0:	8fc21040 	lw	v0,4160(s8)
  451ce4:	00000000 	nop
  451ce8:	afc2003c 	sw	v0,60(s8)

		if (!pfkey_get_response(bp, ((struct sadb_msg *) extensions[0])->sadb_msg_seq))
  451cec:	8fc21058 	lw	v0,4184(s8)
  451cf0:	00000000 	nop
  451cf4:	8c420000 	lw	v0,0(v0)
  451cf8:	8fc4003c 	lw	a0,60(s8)
  451cfc:	8c450008 	lw	a1,8(v0)
  451d00:	8f998038 	lw	t9,-32712(gp)
  451d04:	00000000 	nop
  451d08:	2739f0a0 	addiu	t9,t9,-3936
  451d0c:	00000000 	nop
  451d10:	0320f809 	jalr	t9
  451d14:	00000000 	nop
  451d18:	8fdc0020 	lw	gp,32(s8)
  451d1c:	14400020 	bnez	v0,451da0 <finish_pfkey_msg+0x460>
  451d20:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS
  451d24:	8fc20028 	lw	v0,40(s8)
  451d28:	00000000 	nop
  451d2c:	90420001 	lbu	v0,1(v0)
  451d30:	8f848018 	lw	a0,-32744(gp)
  451d34:	00000000 	nop
  451d38:	248423b8 	addiu	a0,a0,9144
  451d3c:	00402821 	move	a1,v0
  451d40:	8f99843c 	lw	t9,-31684(gp)
  451d44:	00000000 	nop
  451d48:	0320f809 	jalr	t9
  451d4c:	00000000 	nop
  451d50:	8fdc0020 	lw	gp,32(s8)
  451d54:	00401821 	move	v1,v0
  451d58:	8fc21060 	lw	v0,4192(s8)
  451d5c:	00000000 	nop
  451d60:	afa20010 	sw	v0,16(sp)
  451d64:	24040003 	li	a0,3
  451d68:	8f85802c 	lw	a1,-32724(gp)
  451d6c:	00000000 	nop
  451d70:	24a504e0 	addiu	a1,a1,1248
  451d74:	00603021 	move	a2,v1
  451d78:	8fc7105c 	lw	a3,4188(s8)
  451d7c:	8f998c48 	lw	t9,-29624(gp)
  451d80:	00000000 	nop
  451d84:	0320f809 	jalr	t9
  451d88:	00000000 	nop
  451d8c:	8fdc0020 	lw	gp,32(s8)
  451d90:	00000000 	nop
			, "ERROR: no response to our PF_KEY %s message for %s %s"
			, sparse_val_show(pfkey_type_names, pfkey_msg->sadb_msg_type)
			, description, text_said);
		    success = FALSE;
  451d94:	afc0002c 	sw	zero,44(s8)
  451d98:	1000006f 	b	451f58 <finish_pfkey_msg+0x618>
  451d9c:	00000000 	nop
		}
		else if (pfkey_msg->sadb_msg_type != bp->msg.sadb_msg_type)
  451da0:	8fc20028 	lw	v0,40(s8)
  451da4:	00000000 	nop
  451da8:	90430001 	lbu	v1,1(v0)
  451dac:	8fc2003c 	lw	v0,60(s8)
  451db0:	00000000 	nop
  451db4:	90420001 	lbu	v0,1(v0)
  451db8:	00000000 	nop
  451dbc:	1062002e 	beq	v1,v0,451e78 <finish_pfkey_msg+0x538>
  451dc0:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS
  451dc4:	8fc20028 	lw	v0,40(s8)
  451dc8:	00000000 	nop
  451dcc:	90420001 	lbu	v0,1(v0)
  451dd0:	8f848018 	lw	a0,-32744(gp)
  451dd4:	00000000 	nop
  451dd8:	248423b8 	addiu	a0,a0,9144
  451ddc:	00402821 	move	a1,v0
  451de0:	8f998b84 	lw	t9,-29820(gp)
  451de4:	00000000 	nop
  451de8:	0320f809 	jalr	t9
  451dec:	00000000 	nop
  451df0:	8fdc0020 	lw	gp,32(s8)
  451df4:	00408021 	move	s0,v0
  451df8:	8fc2003c 	lw	v0,60(s8)
  451dfc:	00000000 	nop
  451e00:	90420001 	lbu	v0,1(v0)
  451e04:	8f848018 	lw	a0,-32744(gp)
  451e08:	00000000 	nop
  451e0c:	248423b8 	addiu	a0,a0,9144
  451e10:	00402821 	move	a1,v0
  451e14:	8f99843c 	lw	t9,-31684(gp)
  451e18:	00000000 	nop
  451e1c:	0320f809 	jalr	t9
  451e20:	00000000 	nop
  451e24:	8fdc0020 	lw	gp,32(s8)
  451e28:	00401821 	move	v1,v0
  451e2c:	8fc21060 	lw	v0,4192(s8)
  451e30:	00000000 	nop
  451e34:	afa20010 	sw	v0,16(sp)
  451e38:	afa30014 	sw	v1,20(sp)
  451e3c:	24040003 	li	a0,3
  451e40:	8f85802c 	lw	a1,-32724(gp)
  451e44:	00000000 	nop
  451e48:	24a50518 	addiu	a1,a1,1304
  451e4c:	02003021 	move	a2,s0
  451e50:	8fc7105c 	lw	a3,4188(s8)
  451e54:	8f998c48 	lw	t9,-29624(gp)
  451e58:	00000000 	nop
  451e5c:	0320f809 	jalr	t9
  451e60:	00000000 	nop
  451e64:	8fdc0020 	lw	gp,32(s8)
  451e68:	00000000 	nop
			, "Openswan ERROR: response to our PF_KEY %s message for %s %s was of wrong type (%s)"
			, sparse_name(pfkey_type_names, pfkey_msg->sadb_msg_type)
			, description, text_said
			, sparse_val_show(pfkey_type_names, bp->msg.sadb_msg_type));
		    success = FALSE;
  451e6c:	afc0002c 	sw	zero,44(s8)
  451e70:	10000039 	b	451f58 <finish_pfkey_msg+0x618>
  451e74:	00000000 	nop
		}
		else if (response == NULL && bp->msg.sadb_msg_errno != 0)
  451e78:	8fc21064 	lw	v0,4196(s8)
  451e7c:	00000000 	nop
  451e80:	14400035 	bnez	v0,451f58 <finish_pfkey_msg+0x618>
  451e84:	00000000 	nop
  451e88:	8fc2003c 	lw	v0,60(s8)
  451e8c:	00000000 	nop
  451e90:	90420002 	lbu	v0,2(v0)
  451e94:	00000000 	nop
  451e98:	1040002f 	beqz	v0,451f58 <finish_pfkey_msg+0x618>
  451e9c:	00000000 	nop
		{
		    /* KLIPS is signalling a problem */
		    loglog(RC_LOG_SERIOUS
  451ea0:	8fc20028 	lw	v0,40(s8)
  451ea4:	00000000 	nop
  451ea8:	90420001 	lbu	v0,1(v0)
  451eac:	8f848018 	lw	a0,-32744(gp)
  451eb0:	00000000 	nop
  451eb4:	248423b8 	addiu	a0,a0,9144
  451eb8:	00402821 	move	a1,v0
  451ebc:	8f99843c 	lw	t9,-31684(gp)
  451ec0:	00000000 	nop
  451ec4:	0320f809 	jalr	t9
  451ec8:	00000000 	nop
  451ecc:	8fdc0020 	lw	gp,32(s8)
  451ed0:	00408021 	move	s0,v0
  451ed4:	8fc2003c 	lw	v0,60(s8)
  451ed8:	00000000 	nop
  451edc:	90420002 	lbu	v0,2(v0)
  451ee0:	00000000 	nop
  451ee4:	00402021 	move	a0,v0
  451ee8:	8f998b8c 	lw	t9,-29812(gp)
  451eec:	00000000 	nop
  451ef0:	0320f809 	jalr	t9
  451ef4:	00000000 	nop
  451ef8:	8fdc0020 	lw	gp,32(s8)
  451efc:	00401821 	move	v1,v0
  451f00:	8fc21060 	lw	v0,4192(s8)
  451f04:	00000000 	nop
  451f08:	afa20010 	sw	v0,16(sp)
  451f0c:	8fc2003c 	lw	v0,60(s8)
  451f10:	00000000 	nop
  451f14:	90420002 	lbu	v0,2(v0)
  451f18:	00000000 	nop
  451f1c:	afa20014 	sw	v0,20(sp)
  451f20:	afa30018 	sw	v1,24(sp)
  451f24:	24040003 	li	a0,3
  451f28:	8f85802c 	lw	a1,-32724(gp)
  451f2c:	00000000 	nop
  451f30:	24a5056c 	addiu	a1,a1,1388
  451f34:	02003021 	move	a2,s0
  451f38:	8fc7105c 	lw	a3,4188(s8)
  451f3c:	8f998c48 	lw	t9,-29624(gp)
  451f40:	00000000 	nop
  451f44:	0320f809 	jalr	t9
  451f48:	00000000 	nop
  451f4c:	8fdc0020 	lw	gp,32(s8)
  451f50:	00000000 	nop
			, "ERROR: PF_KEY %s response for %s %s included errno %u: %s"
			, sparse_val_show(pfkey_type_names, pfkey_msg->sadb_msg_type)
			, description, text_said
			, (unsigned) bp->msg.sadb_msg_errno
			, strerror(bp->msg.sadb_msg_errno));
		    success = FALSE;
  451f54:	afc0002c 	sw	zero,44(s8)
		}
	    }
	}
    }

    /* all paths must exit this way to free resources */
    pfkey_extensions_free(extensions);
  451f58:	8fc41058 	lw	a0,4184(s8)
  451f5c:	8f998ae8 	lw	t9,-29976(gp)
  451f60:	00000000 	nop
  451f64:	0320f809 	jalr	t9
  451f68:	00000000 	nop
  451f6c:	8fdc0020 	lw	gp,32(s8)
  451f70:	00000000 	nop
    pfkey_msg_free(&pfkey_msg);
  451f74:	27c40028 	addiu	a0,s8,40
  451f78:	8f998bfc 	lw	t9,-29700(gp)
  451f7c:	00000000 	nop
  451f80:	0320f809 	jalr	t9
  451f84:	00000000 	nop
  451f88:	8fdc0020 	lw	gp,32(s8)
  451f8c:	00000000 	nop
    return success;
  451f90:	8fc2002c 	lw	v0,44(s8)
  451f94:	00000000 	nop
}
  451f98:	03c0e821 	move	sp,s8
  451f9c:	8fbf1054 	lw	ra,4180(sp)
  451fa0:	8fbe1050 	lw	s8,4176(sp)
  451fa4:	8fb01048 	lw	s0,4168(sp)
  451fa8:	27bd1058 	addiu	sp,sp,4184
  451fac:	03e00008 	jr	ra
  451fb0:	00000000 	nop

00451fb4 <pfkey_register_proto>:
  451fb4:	3c1c0fbc 	lui	gp,0xfbc
  451fb8:	279ca9bc 	addiu	gp,gp,-22084
  451fbc:	0399e021 	addu	gp,gp,t9
  451fc0:	27bdef48 	addiu	sp,sp,-4280
  451fc4:	afbc0018 	sw	gp,24(sp)
  451fc8:	afbf10b0 	sw	ra,4272(sp)
  451fcc:	afbe10ac 	sw	s8,4268(sp)
  451fd0:	afbc10a8 	sw	gp,4264(sp)
  451fd4:	03a0f021 	move	s8,sp
  451fd8:	00801021 	move	v0,a0
  451fdc:	afc510bc 	sw	a1,4284(s8)
  451fe0:	a3c20020 	sb	v0,32(s8)

/*  register SA types that can be negotiated */
static void
pfkey_register_proto(uint8_t satype, const char *satypename)
{
    struct sadb_ext *extensions[SADB_EXT_MAX + 1];
    pfkey_buf pfb;

    if (!(pfkey_msg_start(SADB_REGISTER
      , satype
      , satypename, NULL, extensions)
    && finish_pfkey_msg(extensions, satypename, "", &pfb)))
  451fe4:	93c30020 	lbu	v1,32(s8)
  451fe8:	27c20028 	addiu	v0,s8,40
  451fec:	afa20010 	sw	v0,16(sp)
  451ff0:	24040007 	li	a0,7
  451ff4:	00602821 	move	a1,v1
  451ff8:	8fc610bc 	lw	a2,4284(s8)
  451ffc:	00003821 	move	a3,zero
  452000:	8f998038 	lw	t9,-32712(gp)
  452004:	00000000 	nop
  452008:	27391628 	addiu	t9,t9,5672
  45200c:	00000000 	nop
  452010:	0320f809 	jalr	t9
  452014:	00000000 	nop
  452018:	8fdc0018 	lw	gp,24(s8)
  45201c:	10400010 	beqz	v0,452060 <pfkey_register_proto+0xac>
  452020:	00000000 	nop
  452024:	27c40028 	addiu	a0,s8,40
  452028:	8fc510bc 	lw	a1,4284(s8)
  45202c:	8f86802c 	lw	a2,-32724(gp)
  452030:	00000000 	nop
  452034:	24c6ffe4 	addiu	a2,a2,-28
  452038:	27c700a8 	addiu	a3,s8,168
  45203c:	8f998038 	lw	t9,-32712(gp)
  452040:	00000000 	nop
  452044:	27391940 	addiu	t9,t9,6464
  452048:	00000000 	nop
  45204c:	0320f809 	jalr	t9
  452050:	00000000 	nop
  452054:	8fdc0018 	lw	gp,24(s8)
  452058:	1440000c 	bnez	v0,45208c <pfkey_register_proto+0xd8>
  45205c:	00000000 	nop
    {
	/* ??? should this be loglog */
	plog("no KLIPS support for %s", satypename);
  452060:	8f84802c 	lw	a0,-32724(gp)
  452064:	00000000 	nop
  452068:	248405a8 	addiu	a0,a0,1448
  45206c:	8fc510bc 	lw	a1,4284(s8)
  452070:	8f998abc 	lw	t9,-30020(gp)
  452074:	00000000 	nop
  452078:	0320f809 	jalr	t9
  45207c:	00000000 	nop
  452080:	8fdc0018 	lw	gp,24(s8)
  452084:	1000001b 	b	4520f4 <pfkey_register_proto+0x140>
  452088:	00000000 	nop
    }
    else
    {
	process_pfkey_register_response(&pfb);
  45208c:	27c400a8 	addiu	a0,s8,168
  452090:	8f998038 	lw	t9,-32712(gp)
  452094:	00000000 	nop
  452098:	2739f260 	addiu	t9,t9,-3488
  45209c:	00000000 	nop
  4520a0:	0320f809 	jalr	t9
  4520a4:	00000000 	nop
  4520a8:	8fdc0018 	lw	gp,24(s8)
  4520ac:	00000000 	nop
	DBG(DBG_KLIPS,
  4520b0:	8f8284f8 	lw	v0,-31496(gp)
  4520b4:	00000000 	nop
  4520b8:	8c420000 	lw	v0,0(v0)
  4520bc:	00000000 	nop
  4520c0:	30420040 	andi	v0,v0,0x40
  4520c4:	1040000b 	beqz	v0,4520f4 <pfkey_register_proto+0x140>
  4520c8:	00000000 	nop
  4520cc:	8f84802c 	lw	a0,-32724(gp)
  4520d0:	00000000 	nop
  4520d4:	248405c0 	addiu	a0,a0,1472
  4520d8:	8fc510bc 	lw	a1,4284(s8)
  4520dc:	8f9983b8 	lw	t9,-31816(gp)
  4520e0:	00000000 	nop
  4520e4:	0320f809 	jalr	t9
  4520e8:	00000000 	nop
  4520ec:	8fdc0018 	lw	gp,24(s8)
  4520f0:	00000000 	nop
	    DBG_log("%s registered with kernel.", satypename));
    }
}
  4520f4:	03c0e821 	move	sp,s8
  4520f8:	8fbf10b0 	lw	ra,4272(sp)
  4520fc:	8fbe10ac 	lw	s8,4268(sp)
  452100:	27bd10b8 	addiu	sp,sp,4280
  452104:	03e00008 	jr	ra
  452108:	00000000 	nop

0045210c <pfkey_register>:
  45210c:	3c1c0fbc 	lui	gp,0xfbc
  452110:	279ca864 	addiu	gp,gp,-22428
  452114:	0399e021 	addu	gp,gp,t9
  452118:	27bdffd8 	addiu	sp,sp,-40
  45211c:	afbc0010 	sw	gp,16(sp)
  452120:	afbf0020 	sw	ra,32(sp)
  452124:	afbe001c 	sw	s8,28(sp)
  452128:	afbc0018 	sw	gp,24(sp)
  45212c:	03a0f021 	move	s8,sp

void
pfkey_register(void)
{
    pfkey_register_proto(SADB_SATYPE_AH, "AH");
  452130:	24040002 	li	a0,2
  452134:	8f85802c 	lw	a1,-32724(gp)
  452138:	00000000 	nop
  45213c:	24a505dc 	addiu	a1,a1,1500
  452140:	8f998038 	lw	t9,-32712(gp)
  452144:	00000000 	nop
  452148:	27391fb4 	addiu	t9,t9,8116
  45214c:	00000000 	nop
  452150:	0320f809 	jalr	t9
  452154:	00000000 	nop
  452158:	8fdc0010 	lw	gp,16(s8)
  45215c:	00000000 	nop
    pfkey_register_proto(SADB_SATYPE_ESP, "ESP");
  452160:	24040003 	li	a0,3
  452164:	8f85802c 	lw	a1,-32724(gp)
  452168:	00000000 	nop
  45216c:	24a505e0 	addiu	a1,a1,1504
  452170:	8f998038 	lw	t9,-32712(gp)
  452174:	00000000 	nop
  452178:	27391fb4 	addiu	t9,t9,8116
  45217c:	00000000 	nop
  452180:	0320f809 	jalr	t9
  452184:	00000000 	nop
  452188:	8fdc0010 	lw	gp,16(s8)
  45218c:	00000000 	nop
    can_do_IPcomp = FALSE;  /* until we get a response from KLIPS */
  452190:	8f818774 	lw	at,-30860(gp)
  452194:	00000000 	nop
  452198:	ac200000 	sw	zero,0(at)
    pfkey_register_proto(SADB_X_SATYPE_COMP, "IPCOMP");
  45219c:	2404000a 	li	a0,10
  4521a0:	8f85802c 	lw	a1,-32724(gp)
  4521a4:	00000000 	nop
  4521a8:	24a505e4 	addiu	a1,a1,1508
  4521ac:	8f998038 	lw	t9,-32712(gp)
  4521b0:	00000000 	nop
  4521b4:	27391fb4 	addiu	t9,t9,8116
  4521b8:	00000000 	nop
  4521bc:	0320f809 	jalr	t9
  4521c0:	00000000 	nop
  4521c4:	8fdc0010 	lw	gp,16(s8)
  4521c8:	00000000 	nop
    pfkey_register_proto(SADB_X_SATYPE_IPIP, "IPIP");
  4521cc:	24040009 	li	a0,9
  4521d0:	8f85802c 	lw	a1,-32724(gp)
  4521d4:	00000000 	nop
  4521d8:	24a505ec 	addiu	a1,a1,1516
  4521dc:	8f998038 	lw	t9,-32712(gp)
  4521e0:	00000000 	nop
  4521e4:	27391fb4 	addiu	t9,t9,8116
  4521e8:	00000000 	nop
  4521ec:	0320f809 	jalr	t9
  4521f0:	00000000 	nop
  4521f4:	8fdc0010 	lw	gp,16(s8)
  4521f8:	00000000 	nop
}
  4521fc:	03c0e821 	move	sp,s8
  452200:	8fbf0020 	lw	ra,32(sp)
  452204:	8fbe001c 	lw	s8,28(sp)
  452208:	27bd0028 	addiu	sp,sp,40
  45220c:	03e00008 	jr	ra
  452210:	00000000 	nop

00452214 <bare_shunt_ptr>:
  452214:	3c1c0fbc 	lui	gp,0xfbc
  452218:	279ca75c 	addiu	gp,gp,-22692
  45221c:	0399e021 	addu	gp,gp,t9
  452220:	27bdffd0 	addiu	sp,sp,-48
  452224:	afbc0010 	sw	gp,16(sp)
  452228:	afbf002c 	sw	ra,44(sp)
  45222c:	afbe0028 	sw	s8,40(sp)
  452230:	afbc0024 	sw	gp,36(sp)
  452234:	afb00020 	sw	s0,32(sp)
  452238:	03a0f021 	move	s8,sp
  45223c:	afc40030 	sw	a0,48(s8)
  452240:	afc50034 	sw	a1,52(s8)
  452244:	afc60038 	sw	a2,56(s8)

/* find an entry in the bare_shunt table.
 * Trick: return a pointer to the pointer to the entry;
 * this allows the entry to be deleted.
 */
static struct bare_shunt **
bare_shunt_ptr(const ip_subnet *ours, const ip_subnet *his, int transport_proto)
{
    struct bare_shunt *p, **pp;

    for (pp = &bare_shunts; (p = *pp) != NULL; pp = &p->next)
  452248:	8f828018 	lw	v0,-32744(gp)
  45224c:	00000000 	nop
  452250:	244223a4 	addiu	v0,v0,9124
  452254:	00000000 	nop
  452258:	afc2001c 	sw	v0,28(s8)
  45225c:	8fc2001c 	lw	v0,28(s8)
  452260:	00000000 	nop
  452264:	8c420000 	lw	v0,0(v0)
  452268:	00000000 	nop
  45226c:	afc20018 	sw	v0,24(s8)
  452270:	14400003 	bnez	v0,452280 <bare_shunt_ptr+0x6c>
  452274:	00000000 	nop
  452278:	10000047 	b	452398 <bare_shunt_ptr+0x184>
  45227c:	00000000 	nop
    {
	if (samesubnet(ours, &p->ours)
	&& samesubnet(his, &p->his)
	&& transport_proto == p->transport_proto
	&& portof(&ours->addr) == portof(&p->ours.addr)
	&& portof(&his->addr) == portof(&p->his.addr))
  452280:	8fc40030 	lw	a0,48(s8)
  452284:	8fc50018 	lw	a1,24(s8)
  452288:	8f9983e8 	lw	t9,-31768(gp)
  45228c:	00000000 	nop
  452290:	0320f809 	jalr	t9
  452294:	00000000 	nop
  452298:	8fdc0010 	lw	gp,16(s8)
  45229c:	10400038 	beqz	v0,452380 <bare_shunt_ptr+0x16c>
  4522a0:	00000000 	nop
  4522a4:	8fc20018 	lw	v0,24(s8)
  4522a8:	00000000 	nop
  4522ac:	24420020 	addiu	v0,v0,32
  4522b0:	8fc40034 	lw	a0,52(s8)
  4522b4:	00402821 	move	a1,v0
  4522b8:	8f9983e8 	lw	t9,-31768(gp)
  4522bc:	00000000 	nop
  4522c0:	0320f809 	jalr	t9
  4522c4:	00000000 	nop
  4522c8:	8fdc0010 	lw	gp,16(s8)
  4522cc:	1040002c 	beqz	v0,452380 <bare_shunt_ptr+0x16c>
  4522d0:	00000000 	nop
  4522d4:	8fc20018 	lw	v0,24(s8)
  4522d8:	00000000 	nop
  4522dc:	8c430064 	lw	v1,100(v0)
  4522e0:	8fc20038 	lw	v0,56(s8)
  4522e4:	00000000 	nop
  4522e8:	14430025 	bne	v0,v1,452380 <bare_shunt_ptr+0x16c>
  4522ec:	00000000 	nop
  4522f0:	8fc40030 	lw	a0,48(s8)
  4522f4:	8f998a60 	lw	t9,-30112(gp)
  4522f8:	00000000 	nop
  4522fc:	0320f809 	jalr	t9
  452300:	00000000 	nop
  452304:	8fdc0010 	lw	gp,16(s8)
  452308:	00408021 	move	s0,v0
  45230c:	8fc40018 	lw	a0,24(s8)
  452310:	8f998a60 	lw	t9,-30112(gp)
  452314:	00000000 	nop
  452318:	0320f809 	jalr	t9
  45231c:	00000000 	nop
  452320:	8fdc0010 	lw	gp,16(s8)
  452324:	16020016 	bne	s0,v0,452380 <bare_shunt_ptr+0x16c>
  452328:	00000000 	nop
  45232c:	8fc40034 	lw	a0,52(s8)
  452330:	8f998a60 	lw	t9,-30112(gp)
  452334:	00000000 	nop
  452338:	0320f809 	jalr	t9
  45233c:	00000000 	nop
  452340:	8fdc0010 	lw	gp,16(s8)
  452344:	00408021 	move	s0,v0
  452348:	8fc20018 	lw	v0,24(s8)
  45234c:	00000000 	nop
  452350:	24420020 	addiu	v0,v0,32
  452354:	00402021 	move	a0,v0
  452358:	8f998a60 	lw	t9,-30112(gp)
  45235c:	00000000 	nop
  452360:	0320f809 	jalr	t9
  452364:	00000000 	nop
  452368:	8fdc0010 	lw	gp,16(s8)
  45236c:	16020004 	bne	s0,v0,452380 <bare_shunt_ptr+0x16c>
  452370:	00000000 	nop
	    return pp;
  452374:	8fc2001c 	lw	v0,28(s8)
  452378:	10000008 	b	45239c <bare_shunt_ptr+0x188>
  45237c:	00000000 	nop
  452380:	8fc20018 	lw	v0,24(s8)
  452384:	00000000 	nop
  452388:	24420070 	addiu	v0,v0,112
  45238c:	afc2001c 	sw	v0,28(s8)
  452390:	1000ffb2 	b	45225c <bare_shunt_ptr+0x48>
  452394:	00000000 	nop
    }
    return NULL;
  452398:	00001021 	move	v0,zero
}
  45239c:	03c0e821 	move	sp,s8
  4523a0:	8fbf002c 	lw	ra,44(sp)
  4523a4:	8fbe0028 	lw	s8,40(sp)
  4523a8:	8fb00020 	lw	s0,32(sp)
  4523ac:	27bd0030 	addiu	sp,sp,48
  4523b0:	03e00008 	jr	ra
  4523b4:	00000000 	nop

004523b8 <free_bare_shunt>:
  4523b8:	3c1c0fbc 	lui	gp,0xfbc
  4523bc:	279ca5b8 	addiu	gp,gp,-23112
  4523c0:	0399e021 	addu	gp,gp,t9
  4523c4:	27bdffd0 	addiu	sp,sp,-48
  4523c8:	afbc0010 	sw	gp,16(sp)
  4523cc:	afbf0028 	sw	ra,40(sp)
  4523d0:	afbe0024 	sw	s8,36(sp)
  4523d4:	afbc0020 	sw	gp,32(sp)
  4523d8:	03a0f021 	move	s8,sp
  4523dc:	afc40030 	sw	a0,48(s8)

/* free a bare_shunt entry, given a pointer to the pointer */
static void
free_bare_shunt(struct bare_shunt **pp)
{
    if (pp == NULL)
  4523e0:	8fc20030 	lw	v0,48(s8)
  4523e4:	00000000 	nop
  4523e8:	14400012 	bnez	v0,452434 <free_bare_shunt+0x7c>
  4523ec:	00000000 	nop
    {
	DBG(DBG_CONTROL,
  4523f0:	8f8284f8 	lw	v0,-31496(gp)
  4523f4:	00000000 	nop
  4523f8:	8c420000 	lw	v0,0(v0)
  4523fc:	00000000 	nop
  452400:	30420010 	andi	v0,v0,0x10
  452404:	10400029 	beqz	v0,4524ac <free_bare_shunt+0xf4>
  452408:	00000000 	nop
  45240c:	8f84802c 	lw	a0,-32724(gp)
  452410:	00000000 	nop
  452414:	248405f4 	addiu	a0,a0,1524
  452418:	8f9983b8 	lw	t9,-31816(gp)
  45241c:	00000000 	nop
  452420:	0320f809 	jalr	t9
  452424:	00000000 	nop
  452428:	8fdc0010 	lw	gp,16(s8)
  45242c:	1000001f 	b	4524ac <free_bare_shunt+0xf4>
  452430:	00000000 	nop
	    DBG_log("delete bare shunt: null pointer")
	)
    }
    else
    {
	struct bare_shunt *p = *pp;
  452434:	8fc20030 	lw	v0,48(s8)
  452438:	00000000 	nop
  45243c:	8c420000 	lw	v0,0(v0)
  452440:	00000000 	nop
  452444:	afc20018 	sw	v0,24(s8)

	*pp = p->next;
  452448:	8fc20018 	lw	v0,24(s8)
  45244c:	00000000 	nop
  452450:	8c430070 	lw	v1,112(v0)
  452454:	8fc20030 	lw	v0,48(s8)
  452458:	00000000 	nop
  45245c:	ac430000 	sw	v1,0(v0)
	DBG_bare_shunt("delete", p);
  452460:	8f84802c 	lw	a0,-32724(gp)
  452464:	00000000 	nop
  452468:	248403d4 	addiu	a0,a0,980
  45246c:	8fc50018 	lw	a1,24(s8)
  452470:	8f998038 	lw	t9,-32712(gp)
  452474:	00000000 	nop
  452478:	2739e770 	addiu	t9,t9,-6288
  45247c:	00000000 	nop
  452480:	0320f809 	jalr	t9
  452484:	00000000 	nop
  452488:	8fdc0010 	lw	gp,16(s8)
  45248c:	00000000 	nop
	pfree(p);
  452490:	8fc40018 	lw	a0,24(s8)
  452494:	8f998094 	lw	t9,-32620(gp)
  452498:	00000000 	nop
  45249c:	0320f809 	jalr	t9
  4524a0:	00000000 	nop
  4524a4:	8fdc0010 	lw	gp,16(s8)
  4524a8:	00000000 	nop
    }
}
  4524ac:	03c0e821 	move	sp,s8
  4524b0:	8fbf0028 	lw	ra,40(sp)
  4524b4:	8fbe0024 	lw	s8,36(sp)
  4524b8:	27bd0030 	addiu	sp,sp,48
  4524bc:	03e00008 	jr	ra
  4524c0:	00000000 	nop

004524c4 <show_shunt_status>:
  4524c4:	3c1c0fbc 	lui	gp,0xfbc
  4524c8:	279ca4ac 	addiu	gp,gp,-23380
  4524cc:	0399e021 	addu	gp,gp,t9
  4524d0:	27bdfeb0 	addiu	sp,sp,-336
  4524d4:	afbc0020 	sw	gp,32(sp)
  4524d8:	afbf0148 	sw	ra,328(sp)
  4524dc:	afbe0144 	sw	s8,324(sp)
  4524e0:	afbc0140 	sw	gp,320(sp)
  4524e4:	03a0f021 	move	s8,sp

void
show_shunt_status(void)
{
    struct bare_shunt *bs;

    for (bs = bare_shunts; bs != NULL; bs = bs->next)
  4524e8:	8f828018 	lw	v0,-32744(gp)
  4524ec:	00000000 	nop
  4524f0:	244223a4 	addiu	v0,v0,9124
  4524f4:	8c420000 	lw	v0,0(v0)
  4524f8:	00000000 	nop
  4524fc:	afc20028 	sw	v0,40(s8)
  452500:	8fc20028 	lw	v0,40(s8)
  452504:	00000000 	nop
  452508:	14400003 	bnez	v0,452518 <show_shunt_status+0x54>
  45250c:	00000000 	nop
  452510:	10000055 	b	452668 <show_shunt_status+0x1a4>
  452514:	00000000 	nop
    {
	/* Print interesting fields.  Ignore count and last_active. */

	int ourport = ntohs(portof(&bs->ours.addr));
  452518:	8fc40028 	lw	a0,40(s8)
  45251c:	8f998a60 	lw	t9,-30112(gp)
  452520:	00000000 	nop
  452524:	0320f809 	jalr	t9
  452528:	00000000 	nop
  45252c:	8fdc0020 	lw	gp,32(s8)
  452530:	afc2002c 	sw	v0,44(s8)
	int hisport = ntohs(portof(&bs->his.addr));
  452534:	8fc20028 	lw	v0,40(s8)
  452538:	00000000 	nop
  45253c:	24420020 	addiu	v0,v0,32
  452540:	00402021 	move	a0,v0
  452544:	8f998a60 	lw	t9,-30112(gp)
  452548:	00000000 	nop
  45254c:	0320f809 	jalr	t9
  452550:	00000000 	nop
  452554:	8fdc0020 	lw	gp,32(s8)
  452558:	afc20030 	sw	v0,48(s8)
	char ourst[SUBNETTOT_BUF];
	char hist[SUBNETTOT_BUF];
	char sat[SATOT_BUF];

	subnettot(&(bs)->ours, 0, ourst, sizeof(ourst));
  45255c:	8fc40028 	lw	a0,40(s8)
  452560:	00002821 	move	a1,zero
  452564:	27c60038 	addiu	a2,s8,56
  452568:	2407004d 	li	a3,77
  45256c:	8f998bbc 	lw	t9,-29764(gp)
  452570:	00000000 	nop
  452574:	0320f809 	jalr	t9
  452578:	00000000 	nop
  45257c:	8fdc0020 	lw	gp,32(s8)
  452580:	00000000 	nop
	subnettot(&(bs)->his, 0, hist, sizeof(hist));
  452584:	8fc20028 	lw	v0,40(s8)
  452588:	00000000 	nop
  45258c:	24420020 	addiu	v0,v0,32
  452590:	00402021 	move	a0,v0
  452594:	00002821 	move	a1,zero
  452598:	27c60088 	addiu	a2,s8,136
  45259c:	2407004d 	li	a3,77
  4525a0:	8f998bbc 	lw	t9,-29764(gp)
  4525a4:	00000000 	nop
  4525a8:	0320f809 	jalr	t9
  4525ac:	00000000 	nop
  4525b0:	8fdc0020 	lw	gp,32(s8)
  4525b4:	00000000 	nop
	satot(&(bs)->said, 0, sat, sizeof(sat));
  4525b8:	8fc20028 	lw	v0,40(s8)
  4525bc:	00000000 	nop
  4525c0:	24420040 	addiu	v0,v0,64
  4525c4:	00402021 	move	a0,v0
  4525c8:	00002821 	move	a1,zero
  4525cc:	27c600d8 	addiu	a2,s8,216
  4525d0:	24070064 	li	a3,100
  4525d4:	8f998a3c 	lw	t9,-30148(gp)
  4525d8:	00000000 	nop
  4525dc:	0320f809 	jalr	t9
  4525e0:	00000000 	nop
  4525e4:	8fdc0020 	lw	gp,32(s8)
  4525e8:	00000000 	nop

	whack_log(RC_COMMENT, "%s:%d -> %s:%d => %s:%d"
  4525ec:	27c20088 	addiu	v0,s8,136
  4525f0:	afa20010 	sw	v0,16(sp)
  4525f4:	8fc20030 	lw	v0,48(s8)
  4525f8:	00000000 	nop
  4525fc:	afa20014 	sw	v0,20(sp)
  452600:	27c200d8 	addiu	v0,s8,216
  452604:	afa20018 	sw	v0,24(sp)
  452608:	8fc20028 	lw	v0,40(s8)
  45260c:	00000000 	nop
  452610:	8c420064 	lw	v0,100(v0)
  452614:	00000000 	nop
  452618:	afa2001c 	sw	v0,28(sp)
  45261c:	00002021 	move	a0,zero
  452620:	8f85802c 	lw	a1,-32724(gp)
  452624:	00000000 	nop
  452628:	24a50614 	addiu	a1,a1,1556
  45262c:	27c60038 	addiu	a2,s8,56
  452630:	8fc7002c 	lw	a3,44(s8)
  452634:	8f9982a8 	lw	t9,-32088(gp)
  452638:	00000000 	nop
  45263c:	0320f809 	jalr	t9
  452640:	00000000 	nop
  452644:	8fdc0020 	lw	gp,32(s8)
  452648:	00000000 	nop
  45264c:	8fc20028 	lw	v0,40(s8)
  452650:	00000000 	nop
  452654:	8c420070 	lw	v0,112(v0)
  452658:	00000000 	nop
  45265c:	afc20028 	sw	v0,40(s8)
  452660:	1000ffa7 	b	452500 <show_shunt_status+0x3c>
  452664:	00000000 	nop
		, ourst, ourport, hist, hisport, sat, bs->transport_proto);
    }
}
  452668:	03c0e821 	move	sp,s8
  45266c:	8fbf0148 	lw	ra,328(sp)
  452670:	8fbe0144 	lw	s8,324(sp)
  452674:	27bd0150 	addiu	sp,sp,336
  452678:	03e00008 	jr	ra
  45267c:	00000000 	nop

00452680 <raw_eroute>:
  452680:	3c1c0fbc 	lui	gp,0xfbc
  452684:	279ca2f0 	addiu	gp,gp,-23824
  452688:	0399e021 	addu	gp,gp,t9
  45268c:	27bdfda8 	addiu	sp,sp,-600
  452690:	afbc0020 	sw	gp,32(sp)
  452694:	afbf0250 	sw	ra,592(sp)
  452698:	afbe024c 	sw	s8,588(sp)
  45269c:	afbc0248 	sw	gp,584(sp)
  4526a0:	03a0f021 	move	s8,sp
  4526a4:	afc40258 	sw	a0,600(s8)
  4526a8:	afc5025c 	sw	a1,604(s8)
  4526ac:	afc60260 	sw	a2,608(s8)
  4526b0:	afc70264 	sw	a3,612(s8)

/* Setup an IPsec route entry. Code taken from addrt.c.
 * We are only dealing with outbound SAs.
 * op is one of the ERO_* operators.
 */

static bool
raw_eroute(const ip_address *this_host, const ip_subnet *this_client
, const ip_address *that_host, const ip_subnet *that_client
, ipsec_spi_t spi, unsigned int proto, unsigned int transport_proto
, unsigned int satype, unsigned int op, const char *opname USED_BY_DEBUG)
{
    struct sadb_ext *extensions[SADB_EXT_MAX + 1];
    ip_address
    	sflow_ska,
    	dflow_ska,
    	smask_ska,
    	dmask_ska;
    int sport = ntohs(portof(&this_client->addr));
  4526b4:	8fc4025c 	lw	a0,604(s8)
  4526b8:	8f998a60 	lw	t9,-30112(gp)
  4526bc:	00000000 	nop
  4526c0:	0320f809 	jalr	t9
  4526c4:	00000000 	nop
  4526c8:	8fdc0020 	lw	gp,32(s8)
  4526cc:	afc20128 	sw	v0,296(s8)
    int dport = ntohs(portof(&that_client->addr));
  4526d0:	8fc40264 	lw	a0,612(s8)
  4526d4:	8f998a60 	lw	t9,-30112(gp)
  4526d8:	00000000 	nop
  4526dc:	0320f809 	jalr	t9
  4526e0:	00000000 	nop
  4526e4:	8fdc0020 	lw	gp,32(s8)
  4526e8:	afc2012c 	sw	v0,300(s8)
    char text_said[SATOT_BUF];

    set_text_said(text_said, that_host, spi, proto);
  4526ec:	27c40130 	addiu	a0,s8,304
  4526f0:	8fc50260 	lw	a1,608(s8)
  4526f4:	8fc60268 	lw	a2,616(s8)
  4526f8:	8fc7026c 	lw	a3,620(s8)
  4526fc:	8f998038 	lw	t9,-32712(gp)
  452700:	00000000 	nop
  452704:	273914c8 	addiu	t9,t9,5320
  452708:	00000000 	nop
  45270c:	0320f809 	jalr	t9
  452710:	00000000 	nop
  452714:	8fdc0020 	lw	gp,32(s8)
  452718:	00000000 	nop

    networkof(this_client, &sflow_ska);
  45271c:	8fc4025c 	lw	a0,604(s8)
  452720:	27c500a8 	addiu	a1,s8,168
  452724:	8f9985bc 	lw	t9,-31300(gp)
  452728:	00000000 	nop
  45272c:	0320f809 	jalr	t9
  452730:	00000000 	nop
  452734:	8fdc0020 	lw	gp,32(s8)
  452738:	00000000 	nop
    maskof(this_client, &smask_ska);
  45273c:	8fc4025c 	lw	a0,604(s8)
  452740:	27c500e8 	addiu	a1,s8,232
  452744:	8f998138 	lw	t9,-32456(gp)
  452748:	00000000 	nop
  45274c:	0320f809 	jalr	t9
  452750:	00000000 	nop
  452754:	8fdc0020 	lw	gp,32(s8)
  452758:	00000000 	nop
    setportof(sport ? ~0:0, &smask_ska);
  45275c:	8fc20128 	lw	v0,296(s8)
  452760:	00000000 	nop
  452764:	10400005 	beqz	v0,45277c <raw_eroute+0xfc>
  452768:	00000000 	nop
  45276c:	2402ffff 	li	v0,-1
  452770:	afc20238 	sw	v0,568(s8)
  452774:	10000002 	b	452780 <raw_eroute+0x100>
  452778:	00000000 	nop
  45277c:	afc00238 	sw	zero,568(s8)
  452780:	8fc40238 	lw	a0,568(s8)
  452784:	27c500e8 	addiu	a1,s8,232
  452788:	8f9988e0 	lw	t9,-30496(gp)
  45278c:	00000000 	nop
  452790:	0320f809 	jalr	t9
  452794:	00000000 	nop
  452798:	8fdc0020 	lw	gp,32(s8)
  45279c:	00000000 	nop

    networkof(that_client, &dflow_ska);
  4527a0:	8fc40264 	lw	a0,612(s8)
  4527a4:	27c500c8 	addiu	a1,s8,200
  4527a8:	8f9985bc 	lw	t9,-31300(gp)
  4527ac:	00000000 	nop
  4527b0:	0320f809 	jalr	t9
  4527b4:	00000000 	nop
  4527b8:	8fdc0020 	lw	gp,32(s8)
  4527bc:	00000000 	nop
    maskof(that_client, &dmask_ska);
  4527c0:	8fc40264 	lw	a0,612(s8)
  4527c4:	27c50108 	addiu	a1,s8,264
  4527c8:	8f998138 	lw	t9,-32456(gp)
  4527cc:	00000000 	nop
  4527d0:	0320f809 	jalr	t9
  4527d4:	00000000 	nop
  4527d8:	8fdc0020 	lw	gp,32(s8)
  4527dc:	00000000 	nop
    setportof(dport ? ~0:0, &dmask_ska);
  4527e0:	8fc2012c 	lw	v0,300(s8)
  4527e4:	00000000 	nop
  4527e8:	10400005 	beqz	v0,452800 <raw_eroute+0x180>
  4527ec:	00000000 	nop
  4527f0:	2402ffff 	li	v0,-1
  4527f4:	afc2023c 	sw	v0,572(s8)
  4527f8:	10000002 	b	452804 <raw_eroute+0x184>
  4527fc:	00000000 	nop
  452800:	afc0023c 	sw	zero,572(s8)
  452804:	8fc4023c 	lw	a0,572(s8)
  452808:	27c50108 	addiu	a1,s8,264
  45280c:	8f9988e0 	lw	t9,-30496(gp)
  452810:	00000000 	nop
  452814:	0320f809 	jalr	t9
  452818:	00000000 	nop
  45281c:	8fdc0020 	lw	gp,32(s8)
  452820:	00000000 	nop

    DBG(DBG_CONTROL | DBG_KLIPS,
  452824:	8f8284f8 	lw	v0,-31496(gp)
  452828:	00000000 	nop
  45282c:	8c420000 	lw	v0,0(v0)
  452830:	00000000 	nop
  452834:	30420050 	andi	v0,v0,0x50
  452838:	10400029 	beqz	v0,4528e0 <raw_eroute+0x260>
  45283c:	00000000 	nop
  452840:	8fc4025c 	lw	a0,604(s8)
  452844:	00002821 	move	a1,zero
  452848:	27c60198 	addiu	a2,s8,408
  45284c:	2407004d 	li	a3,77
  452850:	8f998bbc 	lw	t9,-29764(gp)
  452854:	00000000 	nop
  452858:	0320f809 	jalr	t9
  45285c:	00000000 	nop
  452860:	8fdc0020 	lw	gp,32(s8)
  452864:	8fc40264 	lw	a0,612(s8)
  452868:	00002821 	move	a1,zero
  45286c:	27c601e8 	addiu	a2,s8,488
  452870:	2407004d 	li	a3,77
  452874:	8f998bbc 	lw	t9,-29764(gp)
  452878:	00000000 	nop
  45287c:	0320f809 	jalr	t9
  452880:	00000000 	nop
  452884:	8fdc0020 	lw	gp,32(s8)
  452888:	27c201e8 	addiu	v0,s8,488
  45288c:	afa20010 	sw	v0,16(sp)
  452890:	8fc2012c 	lw	v0,300(s8)
  452894:	00000000 	nop
  452898:	afa20014 	sw	v0,20(sp)
  45289c:	27c20130 	addiu	v0,s8,304
  4528a0:	afa20018 	sw	v0,24(sp)
  4528a4:	8fc20270 	lw	v0,624(s8)
  4528a8:	00000000 	nop
  4528ac:	afa2001c 	sw	v0,28(sp)
  4528b0:	8f84802c 	lw	a0,-32724(gp)
  4528b4:	00000000 	nop
  4528b8:	2484062c 	addiu	a0,a0,1580
  4528bc:	8fc5027c 	lw	a1,636(s8)
  4528c0:	27c60198 	addiu	a2,s8,408
  4528c4:	8fc70128 	lw	a3,296(s8)
  4528c8:	8f9983b8 	lw	t9,-31816(gp)
  4528cc:	00000000 	nop
  4528d0:	0320f809 	jalr	t9
  4528d4:	00000000 	nop
  4528d8:	8fdc0020 	lw	gp,32(s8)
  4528dc:	00000000 	nop
	{
	    char mybuf[SUBNETTOT_BUF];
	    char peerbuf[SUBNETTOT_BUF];

	    subnettot(this_client, 0, mybuf, sizeof(mybuf));
	    subnettot(that_client, 0, peerbuf, sizeof(peerbuf));
	    DBG_log("%s eroute %s:%d -> %s:%d => %s:%d"
		, opname, mybuf, sport, peerbuf, dport
                , text_said, transport_proto);
	});

    return pfkey_msg_start(op & ERO_MASK, satype
  4528e0:	afc00240 	sw	zero,576(s8)
  4528e4:	93c3027b 	lbu	v1,635(s8)
  4528e8:	93c50277 	lbu	a1,631(s8)
  4528ec:	27c20028 	addiu	v0,s8,40
  4528f0:	afa20010 	sw	v0,16(sp)
  4528f4:	00602021 	move	a0,v1
  4528f8:	8f86802c 	lw	a2,-32724(gp)
  4528fc:	00000000 	nop
  452900:	24c60650 	addiu	a2,a2,1616
  452904:	27c70130 	addiu	a3,s8,304
  452908:	8f998038 	lw	t9,-32712(gp)
  45290c:	00000000 	nop
  452910:	27391628 	addiu	t9,t9,5672
  452914:	00000000 	nop
  452918:	0320f809 	jalr	t9
  45291c:	00000000 	nop
  452920:	8fdc0020 	lw	gp,32(s8)
  452924:	104000ac 	beqz	v0,452bd8 <raw_eroute+0x558>
  452928:	00000000 	nop
  45292c:	8fc30278 	lw	v1,632(s8)
  452930:	2402000f 	li	v0,15
  452934:	10620044 	beq	v1,v0,452a48 <raw_eroute+0x3c8>
  452938:	00000000 	nop
  45293c:	afa00010 	sw	zero,16(sp)
  452940:	afa00014 	sw	zero,20(sp)
  452944:	afa00018 	sw	zero,24(sp)
  452948:	8fc20278 	lw	v0,632(s8)
  45294c:	00000000 	nop
  452950:	00021202 	srl	v0,v0,0x8
  452954:	afa2001c 	sw	v0,28(sp)
  452958:	27c4002c 	addiu	a0,s8,44
  45295c:	24050001 	li	a1,1
  452960:	8fc60268 	lw	a2,616(s8)
  452964:	00003821 	move	a3,zero
  452968:	8f998804 	lw	t9,-30716(gp)
  45296c:	00000000 	nop
  452970:	0320f809 	jalr	t9
  452974:	00000000 	nop
  452978:	8fdc0020 	lw	gp,32(s8)
  45297c:	00402021 	move	a0,v0
  452980:	8f85802c 	lw	a1,-32724(gp)
  452984:	00000000 	nop
  452988:	24a50664 	addiu	a1,a1,1636
  45298c:	27c60130 	addiu	a2,s8,304
  452990:	27c70028 	addiu	a3,s8,40
  452994:	8f998038 	lw	t9,-32712(gp)
  452998:	00000000 	nop
  45299c:	27391564 	addiu	t9,t9,5476
  4529a0:	00000000 	nop
  4529a4:	0320f809 	jalr	t9
  4529a8:	00000000 	nop
  4529ac:	8fdc0020 	lw	gp,32(s8)
  4529b0:	10400089 	beqz	v0,452bd8 <raw_eroute+0x558>
  4529b4:	00000000 	nop
  4529b8:	27c20028 	addiu	v0,s8,40
  4529bc:	afa20010 	sw	v0,16(sp)
  4529c0:	24040005 	li	a0,5
  4529c4:	8fc50258 	lw	a1,600(s8)
  4529c8:	8f86802c 	lw	a2,-32724(gp)
  4529cc:	00000000 	nop
  4529d0:	24c60678 	addiu	a2,a2,1656
  4529d4:	27c70130 	addiu	a3,s8,304
  4529d8:	8f998038 	lw	t9,-32712(gp)
  4529dc:	00000000 	nop
  4529e0:	27391734 	addiu	t9,t9,5940
  4529e4:	00000000 	nop
  4529e8:	0320f809 	jalr	t9
  4529ec:	00000000 	nop
  4529f0:	8fdc0020 	lw	gp,32(s8)
  4529f4:	10400078 	beqz	v0,452bd8 <raw_eroute+0x558>
  4529f8:	00000000 	nop
  4529fc:	27c20028 	addiu	v0,s8,40
  452a00:	afa20010 	sw	v0,16(sp)
  452a04:	24040006 	li	a0,6
  452a08:	8fc50260 	lw	a1,608(s8)
  452a0c:	8f86802c 	lw	a2,-32724(gp)
  452a10:	00000000 	nop
  452a14:	24c60690 	addiu	a2,a2,1680
  452a18:	27c70130 	addiu	a3,s8,304
  452a1c:	8f998038 	lw	t9,-32712(gp)
  452a20:	00000000 	nop
  452a24:	27391734 	addiu	t9,t9,5940
  452a28:	00000000 	nop
  452a2c:	0320f809 	jalr	t9
  452a30:	00000000 	nop
  452a34:	8fdc0020 	lw	gp,32(s8)
  452a38:	14400003 	bnez	v0,452a48 <raw_eroute+0x3c8>
  452a3c:	00000000 	nop
  452a40:	10000065 	b	452bd8 <raw_eroute+0x558>
  452a44:	00000000 	nop
  452a48:	27c20028 	addiu	v0,s8,40
  452a4c:	afa20010 	sw	v0,16(sp)
  452a50:	24040015 	li	a0,21
  452a54:	27c500a8 	addiu	a1,s8,168
  452a58:	8f86802c 	lw	a2,-32724(gp)
  452a5c:	00000000 	nop
  452a60:	24c606a8 	addiu	a2,a2,1704
  452a64:	27c70130 	addiu	a3,s8,304
  452a68:	8f998038 	lw	t9,-32712(gp)
  452a6c:	00000000 	nop
  452a70:	27391734 	addiu	t9,t9,5940
  452a74:	00000000 	nop
  452a78:	0320f809 	jalr	t9
  452a7c:	00000000 	nop
  452a80:	8fdc0020 	lw	gp,32(s8)
  452a84:	10400054 	beqz	v0,452bd8 <raw_eroute+0x558>
  452a88:	00000000 	nop
  452a8c:	27c20028 	addiu	v0,s8,40
  452a90:	afa20010 	sw	v0,16(sp)
  452a94:	24040016 	li	a0,22
  452a98:	27c500c8 	addiu	a1,s8,200
  452a9c:	8f86802c 	lw	a2,-32724(gp)
  452aa0:	00000000 	nop
  452aa4:	24c606bc 	addiu	a2,a2,1724
  452aa8:	27c70130 	addiu	a3,s8,304
  452aac:	8f998038 	lw	t9,-32712(gp)
  452ab0:	00000000 	nop
  452ab4:	27391734 	addiu	t9,t9,5940
  452ab8:	00000000 	nop
  452abc:	0320f809 	jalr	t9
  452ac0:	00000000 	nop
  452ac4:	8fdc0020 	lw	gp,32(s8)
  452ac8:	10400043 	beqz	v0,452bd8 <raw_eroute+0x558>
  452acc:	00000000 	nop
  452ad0:	27c20028 	addiu	v0,s8,40
  452ad4:	afa20010 	sw	v0,16(sp)
  452ad8:	24040017 	li	a0,23
  452adc:	27c500e8 	addiu	a1,s8,232
  452ae0:	8f86802c 	lw	a2,-32724(gp)
  452ae4:	00000000 	nop
  452ae8:	24c606d0 	addiu	a2,a2,1744
  452aec:	27c70130 	addiu	a3,s8,304
  452af0:	8f998038 	lw	t9,-32712(gp)
  452af4:	00000000 	nop
  452af8:	27391734 	addiu	t9,t9,5940
  452afc:	00000000 	nop
  452b00:	0320f809 	jalr	t9
  452b04:	00000000 	nop
  452b08:	8fdc0020 	lw	gp,32(s8)
  452b0c:	10400032 	beqz	v0,452bd8 <raw_eroute+0x558>
  452b10:	00000000 	nop
  452b14:	27c20028 	addiu	v0,s8,40
  452b18:	afa20010 	sw	v0,16(sp)
  452b1c:	24040018 	li	a0,24
  452b20:	27c50108 	addiu	a1,s8,264
  452b24:	8f86802c 	lw	a2,-32724(gp)
  452b28:	00000000 	nop
  452b2c:	24c606e4 	addiu	a2,a2,1764
  452b30:	27c70130 	addiu	a3,s8,304
  452b34:	8f998038 	lw	t9,-32712(gp)
  452b38:	00000000 	nop
  452b3c:	27391734 	addiu	t9,t9,5940
  452b40:	00000000 	nop
  452b44:	0320f809 	jalr	t9
  452b48:	00000000 	nop
  452b4c:	8fdc0020 	lw	gp,32(s8)
  452b50:	10400021 	beqz	v0,452bd8 <raw_eroute+0x558>
  452b54:	00000000 	nop
  452b58:	8fc40270 	lw	a0,624(s8)
  452b5c:	8f85802c 	lw	a1,-32724(gp)
  452b60:	00000000 	nop
  452b64:	24a506f8 	addiu	a1,a1,1784
  452b68:	27c60130 	addiu	a2,s8,304
  452b6c:	27c70028 	addiu	a3,s8,40
  452b70:	8f998038 	lw	t9,-32712(gp)
  452b74:	00000000 	nop
  452b78:	27391870 	addiu	t9,t9,6256
  452b7c:	00000000 	nop
  452b80:	0320f809 	jalr	t9
  452b84:	00000000 	nop
  452b88:	8fdc0020 	lw	gp,32(s8)
  452b8c:	10400012 	beqz	v0,452bd8 <raw_eroute+0x558>
  452b90:	00000000 	nop
  452b94:	27c40028 	addiu	a0,s8,40
  452b98:	8f85802c 	lw	a1,-32724(gp)
  452b9c:	00000000 	nop
  452ba0:	24a5070c 	addiu	a1,a1,1804
  452ba4:	27c60130 	addiu	a2,s8,304
  452ba8:	00003821 	move	a3,zero
  452bac:	8f998038 	lw	t9,-32712(gp)
  452bb0:	00000000 	nop
  452bb4:	27391940 	addiu	t9,t9,6464
  452bb8:	00000000 	nop
  452bbc:	0320f809 	jalr	t9
  452bc0:	00000000 	nop
  452bc4:	8fdc0020 	lw	gp,32(s8)
  452bc8:	10400003 	beqz	v0,452bd8 <raw_eroute+0x558>
  452bcc:	00000000 	nop
  452bd0:	24020001 	li	v0,1
  452bd4:	afc20240 	sw	v0,576(s8)
  452bd8:	8fc20240 	lw	v0,576(s8)
  452bdc:	00000000 	nop
	, "pfkey_msg_hdr flow", text_said, extensions)

    && (op == ERO_DELETE
	|| (pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
	    	, SADB_EXT_SA
		, spi	/* in network order */
	    	, 0, 0, 0, 0, op >> ERO_FLAG_SHIFT)
	    , "pfkey_sa add flow", text_said, extensions)

	    && pfkeyext_address(SADB_EXT_ADDRESS_SRC, this_host
		, "pfkey_addr_s add flow", text_said, extensions)

	    && pfkeyext_address(SADB_EXT_ADDRESS_DST, that_host
		, "pfkey_addr_d add flow", text_said, extensions)))

    && pfkeyext_address(SADB_X_EXT_ADDRESS_SRC_FLOW, &sflow_ska
	, "pfkey_addr_sflow", text_said, extensions)

    && pfkeyext_address(SADB_X_EXT_ADDRESS_DST_FLOW, &dflow_ska
	, "pfkey_addr_dflow", text_said, extensions)

    && pfkeyext_address(SADB_X_EXT_ADDRESS_SRC_MASK, &smask_ska
	, "pfkey_addr_smask", text_said, extensions)

    && pfkeyext_address(SADB_X_EXT_ADDRESS_DST_MASK, &dmask_ska
	, "pfkey_addr_dmask", text_said, extensions)

    && pfkeyext_protocol(transport_proto, "pfkey_x_protocol", 
                         text_said, extensions)

    && finish_pfkey_msg(extensions, "flow", text_said, NULL);
}
  452be0:	03c0e821 	move	sp,s8
  452be4:	8fbf0250 	lw	ra,592(sp)
  452be8:	8fbe024c 	lw	s8,588(sp)
  452bec:	27bd0258 	addiu	sp,sp,600
  452bf0:	03e00008 	jr	ra
  452bf4:	00000000 	nop

00452bf8 <has_bare_hold>:
  452bf8:	3c1c0fbc 	lui	gp,0xfbc
  452bfc:	279c9d78 	addiu	gp,gp,-25224
  452c00:	0399e021 	addu	gp,gp,t9
  452c04:	27bdff88 	addiu	sp,sp,-120
  452c08:	afbc0010 	sw	gp,16(sp)
  452c0c:	afbf0074 	sw	ra,116(sp)
  452c10:	afbe0070 	sw	s8,112(sp)
  452c14:	afbc006c 	sw	gp,108(sp)
  452c18:	afb00068 	sw	s0,104(sp)
  452c1c:	03a0f021 	move	s8,sp
  452c20:	afc40078 	sw	a0,120(s8)
  452c24:	afc5007c 	sw	a1,124(s8)
  452c28:	afc60080 	sw	a2,128(s8)

/* test to see if %hold remains */
bool
has_bare_hold(const ip_address *src, const ip_address *dst, int transport_proto)
{
    ip_subnet this_client, that_client;
    struct bare_shunt **bspp;

    passert(addrtypeof(src) == addrtypeof(dst));
  452c2c:	8fc40078 	lw	a0,120(s8)
  452c30:	8f9985d4 	lw	t9,-31276(gp)
  452c34:	00000000 	nop
  452c38:	0320f809 	jalr	t9
  452c3c:	00000000 	nop
  452c40:	8fdc0010 	lw	gp,16(s8)
  452c44:	00408021 	move	s0,v0
  452c48:	8fc4007c 	lw	a0,124(s8)
  452c4c:	8f9985d4 	lw	t9,-31276(gp)
  452c50:	00000000 	nop
  452c54:	0320f809 	jalr	t9
  452c58:	00000000 	nop
  452c5c:	8fdc0010 	lw	gp,16(s8)
  452c60:	1202000e 	beq	s0,v0,452c9c <has_bare_hold+0xa4>
  452c64:	00000000 	nop
  452c68:	8f84802c 	lw	a0,-32724(gp)
  452c6c:	00000000 	nop
  452c70:	24840714 	addiu	a0,a0,1812
  452c74:	8f85802c 	lw	a1,-32724(gp)
  452c78:	00000000 	nop
  452c7c:	24a5fb28 	addiu	a1,a1,-1240
  452c80:	240605c5 	li	a2,1477
  452c84:	8f998bb8 	lw	t9,-29768(gp)
  452c88:	00000000 	nop
  452c8c:	0320f809 	jalr	t9
  452c90:	00000000 	nop
  452c94:	8fdc0010 	lw	gp,16(s8)
  452c98:	00000000 	nop
    happy(addrtosubnet(src, &this_client));
  452c9c:	8fc40078 	lw	a0,120(s8)
  452ca0:	27c50018 	addiu	a1,s8,24
  452ca4:	8f998afc 	lw	t9,-29956(gp)
  452ca8:	00000000 	nop
  452cac:	0320f809 	jalr	t9
  452cb0:	00000000 	nop
  452cb4:	8fdc0010 	lw	gp,16(s8)
  452cb8:	afc2005c 	sw	v0,92(s8)
  452cbc:	8fc2005c 	lw	v0,92(s8)
  452cc0:	00000000 	nop
  452cc4:	1040000c 	beqz	v0,452cf8 <has_bare_hold+0x100>
  452cc8:	00000000 	nop
  452ccc:	8fc4005c 	lw	a0,92(s8)
  452cd0:	8f85802c 	lw	a1,-32724(gp)
  452cd4:	00000000 	nop
  452cd8:	24a5fb28 	addiu	a1,a1,-1240
  452cdc:	240605c6 	li	a2,1478
  452ce0:	8f998bb8 	lw	t9,-29768(gp)
  452ce4:	00000000 	nop
  452ce8:	0320f809 	jalr	t9
  452cec:	00000000 	nop
  452cf0:	8fdc0010 	lw	gp,16(s8)
  452cf4:	00000000 	nop
    happy(addrtosubnet(dst, &that_client));
  452cf8:	8fc4007c 	lw	a0,124(s8)
  452cfc:	27c50038 	addiu	a1,s8,56
  452d00:	8f998afc 	lw	t9,-29956(gp)
  452d04:	00000000 	nop
  452d08:	0320f809 	jalr	t9
  452d0c:	00000000 	nop
  452d10:	8fdc0010 	lw	gp,16(s8)
  452d14:	afc2005c 	sw	v0,92(s8)
  452d18:	8fc2005c 	lw	v0,92(s8)
  452d1c:	00000000 	nop
  452d20:	1040000c 	beqz	v0,452d54 <has_bare_hold+0x15c>
  452d24:	00000000 	nop
  452d28:	8fc4005c 	lw	a0,92(s8)
  452d2c:	8f85802c 	lw	a1,-32724(gp)
  452d30:	00000000 	nop
  452d34:	24a5fb28 	addiu	a1,a1,-1240
  452d38:	240605c7 	li	a2,1479
  452d3c:	8f998bb8 	lw	t9,-29768(gp)
  452d40:	00000000 	nop
  452d44:	0320f809 	jalr	t9
  452d48:	00000000 	nop
  452d4c:	8fdc0010 	lw	gp,16(s8)
  452d50:	00000000 	nop
    bspp = bare_shunt_ptr(&this_client, &that_client, transport_proto);
  452d54:	27c40018 	addiu	a0,s8,24
  452d58:	27c50038 	addiu	a1,s8,56
  452d5c:	8fc60080 	lw	a2,128(s8)
  452d60:	8f998038 	lw	t9,-32712(gp)
  452d64:	00000000 	nop
  452d68:	27392214 	addiu	t9,t9,8724
  452d6c:	00000000 	nop
  452d70:	0320f809 	jalr	t9
  452d74:	00000000 	nop
  452d78:	8fdc0010 	lw	gp,16(s8)
  452d7c:	afc20058 	sw	v0,88(s8)
    return bspp != NULL
  452d80:	afc00060 	sw	zero,96(s8)
  452d84:	8fc20058 	lw	v0,88(s8)
  452d88:	00000000 	nop
  452d8c:	10400013 	beqz	v0,452ddc <has_bare_hold+0x1e4>
  452d90:	00000000 	nop
  452d94:	8fc20058 	lw	v0,88(s8)
  452d98:	00000000 	nop
  452d9c:	8c420000 	lw	v0,0(v0)
  452da0:	00000000 	nop
  452da4:	8c430060 	lw	v1,96(v0)
  452da8:	2402003d 	li	v0,61
  452dac:	1462000b 	bne	v1,v0,452ddc <has_bare_hold+0x1e4>
  452db0:	00000000 	nop
  452db4:	8fc20058 	lw	v0,88(s8)
  452db8:	00000000 	nop
  452dbc:	8c420000 	lw	v0,0(v0)
  452dc0:	00000000 	nop
  452dc4:	8c43005c 	lw	v1,92(v0)
  452dc8:	24020103 	li	v0,259
  452dcc:	14620003 	bne	v1,v0,452ddc <has_bare_hold+0x1e4>
  452dd0:	00000000 	nop
  452dd4:	24020001 	li	v0,1
  452dd8:	afc20060 	sw	v0,96(s8)
  452ddc:	8fc20060 	lw	v0,96(s8)
  452de0:	00000000 	nop
	&& (*bspp)->said.proto == SA_INT && (*bspp)->said.spi == htonl(SPI_HOLD);
}
  452de4:	03c0e821 	move	sp,s8
  452de8:	8fbf0074 	lw	ra,116(sp)
  452dec:	8fbe0070 	lw	s8,112(sp)
  452df0:	8fb00068 	lw	s0,104(sp)
  452df4:	27bd0078 	addiu	sp,sp,120
  452df8:	03e00008 	jr	ra
  452dfc:	00000000 	nop

00452e00 <replace_bare_shunt>:
  452e00:	3c1c0fbc 	lui	gp,0xfbc
  452e04:	279c9b70 	addiu	gp,gp,-25744
  452e08:	0399e021 	addu	gp,gp,t9
  452e0c:	27bdff08 	addiu	sp,sp,-248
  452e10:	afbc0028 	sw	gp,40(sp)
  452e14:	afbf00f4 	sw	ra,244(sp)
  452e18:	afbe00f0 	sw	s8,240(sp)
  452e1c:	afbc00ec 	sw	gp,236(sp)
  452e20:	afb000e8 	sw	s0,232(sp)
  452e24:	03a0f021 	move	s8,sp
  452e28:	afc400f8 	sw	a0,248(s8)
  452e2c:	afc500fc 	sw	a1,252(s8)
  452e30:	afc60100 	sw	a2,256(s8)
  452e34:	afc70104 	sw	a3,260(s8)


/* Replace (or delete) a shunt that is in the bare_shunts table.
 * Issues the PF_KEY commands and updates the bare_shunts table.
 */
bool
replace_bare_shunt(const ip_address *src, const ip_address *dst
, ipsec_spi_t shunt_spi	/* in host order! */
, bool repl, int transport_proto, const char *opname)
{
    ip_subnet this_client, that_client;
    ip_subnet this_broad_client, that_broad_client;
    const ip_address *null_host = aftoinfo(addrtypeof(src))->any;
  452e38:	8fc400f8 	lw	a0,248(s8)
  452e3c:	8f9985d4 	lw	t9,-31276(gp)
  452e40:	00000000 	nop
  452e44:	0320f809 	jalr	t9
  452e48:	00000000 	nop
  452e4c:	8fdc0028 	lw	gp,40(s8)
  452e50:	00402021 	move	a0,v0
  452e54:	8f998b94 	lw	t9,-29804(gp)
  452e58:	00000000 	nop
  452e5c:	0320f809 	jalr	t9
  452e60:	00000000 	nop
  452e64:	8fdc0028 	lw	gp,40(s8)
  452e68:	8c420018 	lw	v0,24(v0)
  452e6c:	00000000 	nop
  452e70:	afc200b0 	sw	v0,176(s8)

    passert(addrtypeof(src) == addrtypeof(dst));
  452e74:	8fc400f8 	lw	a0,248(s8)
  452e78:	8f9985d4 	lw	t9,-31276(gp)
  452e7c:	00000000 	nop
  452e80:	0320f809 	jalr	t9
  452e84:	00000000 	nop
  452e88:	8fdc0028 	lw	gp,40(s8)
  452e8c:	00408021 	move	s0,v0
  452e90:	8fc400fc 	lw	a0,252(s8)
  452e94:	8f9985d4 	lw	t9,-31276(gp)
  452e98:	00000000 	nop
  452e9c:	0320f809 	jalr	t9
  452ea0:	00000000 	nop
  452ea4:	8fdc0028 	lw	gp,40(s8)
  452ea8:	1202000e 	beq	s0,v0,452ee4 <replace_bare_shunt+0xe4>
  452eac:	00000000 	nop
  452eb0:	8f84802c 	lw	a0,-32724(gp)
  452eb4:	00000000 	nop
  452eb8:	24840714 	addiu	a0,a0,1812
  452ebc:	8f85802c 	lw	a1,-32724(gp)
  452ec0:	00000000 	nop
  452ec4:	24a5fb28 	addiu	a1,a1,-1240
  452ec8:	240605da 	li	a2,1498
  452ecc:	8f998bb8 	lw	t9,-29768(gp)
  452ed0:	00000000 	nop
  452ed4:	0320f809 	jalr	t9
  452ed8:	00000000 	nop
  452edc:	8fdc0028 	lw	gp,40(s8)
  452ee0:	00000000 	nop
    happy(addrtosubnet(src, &this_client));
  452ee4:	8fc400f8 	lw	a0,248(s8)
  452ee8:	27c50030 	addiu	a1,s8,48
  452eec:	8f998afc 	lw	t9,-29956(gp)
  452ef0:	00000000 	nop
  452ef4:	0320f809 	jalr	t9
  452ef8:	00000000 	nop
  452efc:	8fdc0028 	lw	gp,40(s8)
  452f00:	afc200b4 	sw	v0,180(s8)
  452f04:	8fc200b4 	lw	v0,180(s8)
  452f08:	00000000 	nop
  452f0c:	1040000c 	beqz	v0,452f40 <replace_bare_shunt+0x140>
  452f10:	00000000 	nop
  452f14:	8fc400b4 	lw	a0,180(s8)
  452f18:	8f85802c 	lw	a1,-32724(gp)
  452f1c:	00000000 	nop
  452f20:	24a5fb28 	addiu	a1,a1,-1240
  452f24:	240605db 	li	a2,1499
  452f28:	8f998bb8 	lw	t9,-29768(gp)
  452f2c:	00000000 	nop
  452f30:	0320f809 	jalr	t9
  452f34:	00000000 	nop
  452f38:	8fdc0028 	lw	gp,40(s8)
  452f3c:	00000000 	nop
    happy(addrtosubnet(dst, &that_client));
  452f40:	8fc400fc 	lw	a0,252(s8)
  452f44:	27c50050 	addiu	a1,s8,80
  452f48:	8f998afc 	lw	t9,-29956(gp)
  452f4c:	00000000 	nop
  452f50:	0320f809 	jalr	t9
  452f54:	00000000 	nop
  452f58:	8fdc0028 	lw	gp,40(s8)
  452f5c:	afc200b4 	sw	v0,180(s8)
  452f60:	8fc200b4 	lw	v0,180(s8)
  452f64:	00000000 	nop
  452f68:	1040000c 	beqz	v0,452f9c <replace_bare_shunt+0x19c>
  452f6c:	00000000 	nop
  452f70:	8fc400b4 	lw	a0,180(s8)
  452f74:	8f85802c 	lw	a1,-32724(gp)
  452f78:	00000000 	nop
  452f7c:	24a5fb28 	addiu	a1,a1,-1240
  452f80:	240605dc 	li	a2,1500
  452f84:	8f998bb8 	lw	t9,-29768(gp)
  452f88:	00000000 	nop
  452f8c:	0320f809 	jalr	t9
  452f90:	00000000 	nop
  452f94:	8fdc0028 	lw	gp,40(s8)
  452f98:	00000000 	nop
    this_broad_client = this_client;
  452f9c:	8fc20030 	lw	v0,48(s8)
  452fa0:	00000000 	nop
  452fa4:	afc20070 	sw	v0,112(s8)
  452fa8:	8fc20034 	lw	v0,52(s8)
  452fac:	00000000 	nop
  452fb0:	afc20074 	sw	v0,116(s8)
  452fb4:	8fc20038 	lw	v0,56(s8)
  452fb8:	00000000 	nop
  452fbc:	afc20078 	sw	v0,120(s8)
  452fc0:	8fc2003c 	lw	v0,60(s8)
  452fc4:	00000000 	nop
  452fc8:	afc2007c 	sw	v0,124(s8)
  452fcc:	8fc20040 	lw	v0,64(s8)
  452fd0:	00000000 	nop
  452fd4:	afc20080 	sw	v0,128(s8)
  452fd8:	8fc20044 	lw	v0,68(s8)
  452fdc:	00000000 	nop
  452fe0:	afc20084 	sw	v0,132(s8)
  452fe4:	8fc20048 	lw	v0,72(s8)
  452fe8:	00000000 	nop
  452fec:	afc20088 	sw	v0,136(s8)
  452ff0:	8fc2004c 	lw	v0,76(s8)
  452ff4:	00000000 	nop
  452ff8:	afc2008c 	sw	v0,140(s8)
    that_broad_client = that_client;
  452ffc:	8fc20050 	lw	v0,80(s8)
  453000:	00000000 	nop
  453004:	afc20090 	sw	v0,144(s8)
  453008:	8fc20054 	lw	v0,84(s8)
  45300c:	00000000 	nop
  453010:	afc20094 	sw	v0,148(s8)
  453014:	8fc20058 	lw	v0,88(s8)
  453018:	00000000 	nop
  45301c:	afc20098 	sw	v0,152(s8)
  453020:	8fc2005c 	lw	v0,92(s8)
  453024:	00000000 	nop
  453028:	afc2009c 	sw	v0,156(s8)
  45302c:	8fc20060 	lw	v0,96(s8)
  453030:	00000000 	nop
  453034:	afc200a0 	sw	v0,160(s8)
  453038:	8fc20064 	lw	v0,100(s8)
  45303c:	00000000 	nop
  453040:	afc200a4 	sw	v0,164(s8)
  453044:	8fc20068 	lw	v0,104(s8)
  453048:	00000000 	nop
  45304c:	afc200a8 	sw	v0,168(s8)
  453050:	8fc2006c 	lw	v0,108(s8)
  453054:	00000000 	nop
  453058:	afc200ac 	sw	v0,172(s8)
    setportof(0, &this_broad_client.addr);
  45305c:	00002021 	move	a0,zero
  453060:	27c50070 	addiu	a1,s8,112
  453064:	8f9988e0 	lw	t9,-30496(gp)
  453068:	00000000 	nop
  45306c:	0320f809 	jalr	t9
  453070:	00000000 	nop
  453074:	8fdc0028 	lw	gp,40(s8)
  453078:	00000000 	nop
    setportof(0, &that_broad_client.addr);
  45307c:	00002021 	move	a0,zero
  453080:	27c50090 	addiu	a1,s8,144
  453084:	8f9988e0 	lw	t9,-30496(gp)
  453088:	00000000 	nop
  45308c:	0320f809 	jalr	t9
  453090:	00000000 	nop
  453094:	8fdc0028 	lw	gp,40(s8)
  453098:	00000000 	nop

     if (repl)
  45309c:	8fc20104 	lw	v0,260(s8)
  4530a0:	00000000 	nop
  4530a4:	104000ad 	beqz	v0,45335c <replace_bare_shunt+0x55c>
  4530a8:	00000000 	nop
    {
	struct bare_shunt **bs_pp = bare_shunt_ptr(&this_broad_client
  4530ac:	27c40070 	addiu	a0,s8,112
  4530b0:	27c50090 	addiu	a1,s8,144
  4530b4:	00003021 	move	a2,zero
  4530b8:	8f998038 	lw	t9,-32712(gp)
  4530bc:	00000000 	nop
  4530c0:	27392214 	addiu	t9,t9,8724
  4530c4:	00000000 	nop
  4530c8:	0320f809 	jalr	t9
  4530cc:	00000000 	nop
  4530d0:	8fdc0028 	lw	gp,40(s8)
  4530d4:	afc200b4 	sw	v0,180(s8)
						 , &that_broad_client, 0);

	/* is there already a broad host-to-host bare shunt? */
	if (bs_pp == NULL)
  4530d8:	8fc200b4 	lw	v0,180(s8)
  4530dc:	00000000 	nop
  4530e0:	1440009c 	bnez	v0,453354 <replace_bare_shunt+0x554>
  4530e4:	00000000 	nop
	{
	    if (raw_eroute(null_host, &this_broad_client, null_host, &that_broad_client
	    , htonl(shunt_spi), SA_INT, 0, SADB_X_SATYPE_INT,ERO_ADD, opname))
  4530e8:	8fc20100 	lw	v0,256(s8)
  4530ec:	00000000 	nop
  4530f0:	afa20010 	sw	v0,16(sp)
  4530f4:	2402003d 	li	v0,61
  4530f8:	afa20014 	sw	v0,20(sp)
  4530fc:	afa00018 	sw	zero,24(sp)
  453100:	2402000b 	li	v0,11
  453104:	afa2001c 	sw	v0,28(sp)
  453108:	2402000e 	li	v0,14
  45310c:	afa20020 	sw	v0,32(sp)
  453110:	8fc2010c 	lw	v0,268(s8)
  453114:	00000000 	nop
  453118:	afa20024 	sw	v0,36(sp)
  45311c:	8fc400b0 	lw	a0,176(s8)
  453120:	27c50070 	addiu	a1,s8,112
  453124:	8fc600b0 	lw	a2,176(s8)
  453128:	27c70090 	addiu	a3,s8,144
  45312c:	8f998038 	lw	t9,-32712(gp)
  453130:	00000000 	nop
  453134:	27392680 	addiu	t9,t9,9856
  453138:	00000000 	nop
  45313c:	0320f809 	jalr	t9
  453140:	00000000 	nop
  453144:	8fdc0028 	lw	gp,40(s8)
  453148:	10400082 	beqz	v0,453354 <replace_bare_shunt+0x554>
  45314c:	00000000 	nop
	    {
		struct bare_shunt *bs = alloc_thing(struct bare_shunt, "bare shunt");
  453150:	24040074 	li	a0,116
  453154:	8f85802c 	lw	a1,-32724(gp)
  453158:	00000000 	nop
  45315c:	24a5fc7c 	addiu	a1,a1,-900
  453160:	8f998084 	lw	t9,-32636(gp)
  453164:	00000000 	nop
  453168:	0320f809 	jalr	t9
  45316c:	00000000 	nop
  453170:	8fdc0028 	lw	gp,40(s8)
  453174:	afc200b8 	sw	v0,184(s8)

		bs->ours = this_broad_client;
  453178:	8fc300b8 	lw	v1,184(s8)
  45317c:	8fc20070 	lw	v0,112(s8)
  453180:	00000000 	nop
  453184:	ac620000 	sw	v0,0(v1)
  453188:	8fc20074 	lw	v0,116(s8)
  45318c:	00000000 	nop
  453190:	ac620004 	sw	v0,4(v1)
  453194:	8fc20078 	lw	v0,120(s8)
  453198:	00000000 	nop
  45319c:	ac620008 	sw	v0,8(v1)
  4531a0:	8fc2007c 	lw	v0,124(s8)
  4531a4:	00000000 	nop
  4531a8:	ac62000c 	sw	v0,12(v1)
  4531ac:	8fc20080 	lw	v0,128(s8)
  4531b0:	00000000 	nop
  4531b4:	ac620010 	sw	v0,16(v1)
  4531b8:	8fc20084 	lw	v0,132(s8)
  4531bc:	00000000 	nop
  4531c0:	ac620014 	sw	v0,20(v1)
  4531c4:	8fc20088 	lw	v0,136(s8)
  4531c8:	00000000 	nop
  4531cc:	ac620018 	sw	v0,24(v1)
  4531d0:	8fc2008c 	lw	v0,140(s8)
  4531d4:	00000000 	nop
  4531d8:	ac62001c 	sw	v0,28(v1)
		bs->his =  that_broad_client;
  4531dc:	8fc300b8 	lw	v1,184(s8)
  4531e0:	8fc20090 	lw	v0,144(s8)
  4531e4:	00000000 	nop
  4531e8:	ac620020 	sw	v0,32(v1)
  4531ec:	8fc20094 	lw	v0,148(s8)
  4531f0:	00000000 	nop
  4531f4:	ac620024 	sw	v0,36(v1)
  4531f8:	8fc20098 	lw	v0,152(s8)
  4531fc:	00000000 	nop
  453200:	ac620028 	sw	v0,40(v1)
  453204:	8fc2009c 	lw	v0,156(s8)
  453208:	00000000 	nop
  45320c:	ac62002c 	sw	v0,44(v1)
  453210:	8fc200a0 	lw	v0,160(s8)
  453214:	00000000 	nop
  453218:	ac620030 	sw	v0,48(v1)
  45321c:	8fc200a4 	lw	v0,164(s8)
  453220:	00000000 	nop
  453224:	ac620034 	sw	v0,52(v1)
  453228:	8fc200a8 	lw	v0,168(s8)
  45322c:	00000000 	nop
  453230:	ac620038 	sw	v0,56(v1)
  453234:	8fc200ac 	lw	v0,172(s8)
  453238:	00000000 	nop
  45323c:	ac62003c 	sw	v0,60(v1)
		bs->transport_proto = 0;
  453240:	8fc200b8 	lw	v0,184(s8)
  453244:	00000000 	nop
  453248:	ac400064 	sw	zero,100(v0)
		bs->said.proto = SA_INT;
  45324c:	2403003d 	li	v1,61
  453250:	8fc200b8 	lw	v0,184(s8)
  453254:	00000000 	nop
  453258:	ac430060 	sw	v1,96(v0)
		bs->said.spi = htonl(shunt_spi);
  45325c:	8fc30100 	lw	v1,256(s8)
  453260:	8fc200b8 	lw	v0,184(s8)
  453264:	00000000 	nop
  453268:	ac43005c 	sw	v1,92(v0)
		bs->said.dst = *null_host;
  45326c:	8fc400b8 	lw	a0,184(s8)
  453270:	8fc300b0 	lw	v1,176(s8)
  453274:	00000000 	nop
  453278:	8c620000 	lw	v0,0(v1)
  45327c:	00000000 	nop
  453280:	ac820040 	sw	v0,64(a0)
  453284:	8c620004 	lw	v0,4(v1)
  453288:	00000000 	nop
  45328c:	ac820044 	sw	v0,68(a0)
  453290:	8c620008 	lw	v0,8(v1)
  453294:	00000000 	nop
  453298:	ac820048 	sw	v0,72(a0)
  45329c:	8c62000c 	lw	v0,12(v1)
  4532a0:	00000000 	nop
  4532a4:	ac82004c 	sw	v0,76(a0)
  4532a8:	8c620010 	lw	v0,16(v1)
  4532ac:	00000000 	nop
  4532b0:	ac820050 	sw	v0,80(a0)
  4532b4:	8c620014 	lw	v0,20(v1)
  4532b8:	00000000 	nop
  4532bc:	ac820054 	sw	v0,84(a0)
  4532c0:	8c620018 	lw	v0,24(v1)
  4532c4:	00000000 	nop
  4532c8:	ac820058 	sw	v0,88(a0)
		bs->count = 0;
  4532cc:	8fc200b8 	lw	v0,184(s8)
  4532d0:	00000000 	nop
  4532d4:	ac400068 	sw	zero,104(v0)
		bs->last_activity = now();
  4532d8:	8fd000b8 	lw	s0,184(s8)
  4532dc:	8f998b58 	lw	t9,-29864(gp)
  4532e0:	00000000 	nop
  4532e4:	0320f809 	jalr	t9
  4532e8:	00000000 	nop
  4532ec:	8fdc0028 	lw	gp,40(s8)
  4532f0:	ae02006c 	sw	v0,108(s0)
		bs->next = bare_shunts;
  4532f4:	8f838018 	lw	v1,-32744(gp)
  4532f8:	00000000 	nop
  4532fc:	246323a4 	addiu	v1,v1,9124
  453300:	8c630000 	lw	v1,0(v1)
  453304:	8fc200b8 	lw	v0,184(s8)
  453308:	00000000 	nop
  45330c:	ac430070 	sw	v1,112(v0)
		bare_shunts = bs;
  453310:	8fc200b8 	lw	v0,184(s8)
  453314:	8f818018 	lw	at,-32744(gp)
  453318:	00000000 	nop
  45331c:	242123a4 	addiu	at,at,9124
  453320:	ac220000 	sw	v0,0(at)
		DBG_bare_shunt("add", bs);
  453324:	8f84802c 	lw	a0,-32724(gp)
  453328:	00000000 	nop
  45332c:	2484fc88 	addiu	a0,a0,-888
  453330:	8fc500b8 	lw	a1,184(s8)
  453334:	8f998038 	lw	t9,-32712(gp)
  453338:	00000000 	nop
  45333c:	2739e770 	addiu	t9,t9,-6288
  453340:	00000000 	nop
  453344:	0320f809 	jalr	t9
  453348:	00000000 	nop
  45334c:	8fdc0028 	lw	gp,40(s8)
  453350:	00000000 	nop
	    }
	}
	shunt_spi = SPI_HOLD;
  453354:	24020103 	li	v0,259
  453358:	afc20100 	sw	v0,256(s8)
    }

    if (raw_eroute(null_host, &this_client, null_host, &that_client
    , htonl(shunt_spi), SA_INT, transport_proto, SADB_X_SATYPE_INT, ERO_DELETE, opname))
  45335c:	8fc20100 	lw	v0,256(s8)
  453360:	00000000 	nop
  453364:	afa20010 	sw	v0,16(sp)
  453368:	2402003d 	li	v0,61
  45336c:	afa20014 	sw	v0,20(sp)
  453370:	8fc20108 	lw	v0,264(s8)
  453374:	00000000 	nop
  453378:	afa20018 	sw	v0,24(sp)
  45337c:	2402000b 	li	v0,11
  453380:	afa2001c 	sw	v0,28(sp)
  453384:	2402000f 	li	v0,15
  453388:	afa20020 	sw	v0,32(sp)
  45338c:	8fc2010c 	lw	v0,268(s8)
  453390:	00000000 	nop
  453394:	afa20024 	sw	v0,36(sp)
  453398:	8fc400b0 	lw	a0,176(s8)
  45339c:	27c50030 	addiu	a1,s8,48
  4533a0:	8fc600b0 	lw	a2,176(s8)
  4533a4:	27c70050 	addiu	a3,s8,80
  4533a8:	8f998038 	lw	t9,-32712(gp)
  4533ac:	00000000 	nop
  4533b0:	27392680 	addiu	t9,t9,9856
  4533b4:	00000000 	nop
  4533b8:	0320f809 	jalr	t9
  4533bc:	00000000 	nop
  4533c0:	8fdc0028 	lw	gp,40(s8)
  4533c4:	10400018 	beqz	v0,453428 <replace_bare_shunt+0x628>
  4533c8:	00000000 	nop
    {
	struct bare_shunt **bs_pp = bare_shunt_ptr(&this_client, &that_client
  4533cc:	27c40030 	addiu	a0,s8,48
  4533d0:	27c50050 	addiu	a1,s8,80
  4533d4:	8fc60108 	lw	a2,264(s8)
  4533d8:	8f998038 	lw	t9,-32712(gp)
  4533dc:	00000000 	nop
  4533e0:	27392214 	addiu	t9,t9,8724
  4533e4:	00000000 	nop
  4533e8:	0320f809 	jalr	t9
  4533ec:	00000000 	nop
  4533f0:	8fdc0028 	lw	gp,40(s8)
  4533f4:	afc200b8 	sw	v0,184(s8)
					, transport_proto);

	/* delete bare eroute */
	free_bare_shunt(bs_pp);
  4533f8:	8fc400b8 	lw	a0,184(s8)
  4533fc:	8f998038 	lw	t9,-32712(gp)
  453400:	00000000 	nop
  453404:	273923b8 	addiu	t9,t9,9144
  453408:	00000000 	nop
  45340c:	0320f809 	jalr	t9
  453410:	00000000 	nop
  453414:	8fdc0028 	lw	gp,40(s8)
  453418:	00000000 	nop
	return TRUE;
  45341c:	24020001 	li	v0,1
  453420:	10000002 	b	45342c <replace_bare_shunt+0x62c>
  453424:	00000000 	nop
    }
    else
    {
	return FALSE;
  453428:	00001021 	move	v0,zero
    }
}
  45342c:	03c0e821 	move	sp,s8
  453430:	8fbf00f4 	lw	ra,244(sp)
  453434:	8fbe00f0 	lw	s8,240(sp)
  453438:	8fb000e8 	lw	s0,232(sp)
  45343c:	27bd00f8 	addiu	sp,sp,248
  453440:	03e00008 	jr	ra
  453444:	00000000 	nop

00453448 <eroute_connection>:
  453448:	3c1c0fbc 	lui	gp,0xfbc
  45344c:	279c9528 	addiu	gp,gp,-27352
  453450:	0399e021 	addu	gp,gp,t9
  453454:	27bdffb8 	addiu	sp,sp,-72
  453458:	afbc0028 	sw	gp,40(sp)
  45345c:	afbf0040 	sw	ra,64(sp)
  453460:	afbe003c 	sw	s8,60(sp)
  453464:	afbc0038 	sw	gp,56(sp)
  453468:	03a0f021 	move	s8,sp
  45346c:	afc40048 	sw	a0,72(s8)
  453470:	afc5004c 	sw	a1,76(s8)
  453474:	afc60050 	sw	a2,80(s8)
  453478:	afc70054 	sw	a3,84(s8)

static bool
eroute_connection(struct connection *c
, ipsec_spi_t spi, unsigned int proto, unsigned int satype
, unsigned int op, const char *opname)
{
    const ip_address *peer = &c->that.host_addr;
  45347c:	8fc20048 	lw	v0,72(s8)
  453480:	00000000 	nop
  453484:	24420108 	addiu	v0,v0,264
  453488:	afc20030 	sw	v0,48(s8)

    return raw_eroute(&c->this.host_addr, &c->this.client
  45348c:	8fc30050 	lw	v1,80(s8)
  453490:	2402003d 	li	v0,61
  453494:	14620012 	bne	v1,v0,4534e0 <eroute_connection+0x98>
  453498:	00000000 	nop
  45349c:	8fc40030 	lw	a0,48(s8)
  4534a0:	8f9985d4 	lw	t9,-31276(gp)
  4534a4:	00000000 	nop
  4534a8:	0320f809 	jalr	t9
  4534ac:	00000000 	nop
  4534b0:	8fdc0028 	lw	gp,40(s8)
  4534b4:	00402021 	move	a0,v0
  4534b8:	8f998b94 	lw	t9,-29804(gp)
  4534bc:	00000000 	nop
  4534c0:	0320f809 	jalr	t9
  4534c4:	00000000 	nop
  4534c8:	8fdc0028 	lw	gp,40(s8)
  4534cc:	8c420018 	lw	v0,24(v0)
  4534d0:	00000000 	nop
  4534d4:	afc20034 	sw	v0,52(s8)
  4534d8:	10000004 	b	4534ec <eroute_connection+0xa4>
  4534dc:	00000000 	nop
  4534e0:	8fc20030 	lw	v0,48(s8)
  4534e4:	00000000 	nop
  4534e8:	afc20034 	sw	v0,52(s8)
  4534ec:	8fc40048 	lw	a0,72(s8)
  4534f0:	8f998648 	lw	t9,-31160(gp)
  4534f4:	00000000 	nop
  4534f8:	0320f809 	jalr	t9
  4534fc:	00000000 	nop
  453500:	8fdc0028 	lw	gp,40(s8)
  453504:	00403821 	move	a3,v0
  453508:	8fc20048 	lw	v0,72(s8)
  45350c:	00000000 	nop
  453510:	24440058 	addiu	a0,v0,88
  453514:	8fc20048 	lw	v0,72(s8)
  453518:	00000000 	nop
  45351c:	24430090 	addiu	v1,v0,144
  453520:	8fc2004c 	lw	v0,76(s8)
  453524:	00000000 	nop
  453528:	afa20010 	sw	v0,16(sp)
  45352c:	8fc20050 	lw	v0,80(s8)
  453530:	00000000 	nop
  453534:	afa20014 	sw	v0,20(sp)
  453538:	8fc20048 	lw	v0,72(s8)
  45353c:	00000000 	nop
  453540:	904200cc 	lbu	v0,204(v0)
  453544:	00000000 	nop
  453548:	afa20018 	sw	v0,24(sp)
  45354c:	8fc20054 	lw	v0,84(s8)
  453550:	00000000 	nop
  453554:	afa2001c 	sw	v0,28(sp)
  453558:	8fc20058 	lw	v0,88(s8)
  45355c:	00000000 	nop
  453560:	afa20020 	sw	v0,32(sp)
  453564:	8fc2005c 	lw	v0,92(s8)
  453568:	00000000 	nop
  45356c:	afa20024 	sw	v0,36(sp)
  453570:	00602821 	move	a1,v1
  453574:	8fc60034 	lw	a2,52(s8)
  453578:	8f998038 	lw	t9,-32712(gp)
  45357c:	00000000 	nop
  453580:	27392680 	addiu	t9,t9,9856
  453584:	00000000 	nop
  453588:	0320f809 	jalr	t9
  45358c:	00000000 	nop
  453590:	8fdc0028 	lw	gp,40(s8)
  453594:	00000000 	nop
	, proto == SA_INT? aftoinfo(addrtypeof(peer))->any : peer
	, EffectivePeerClient(c), spi, proto, c->this.protocol
	, satype, op, opname);
}
  453598:	03c0e821 	move	sp,s8
  45359c:	8fbf0040 	lw	ra,64(sp)
  4535a0:	8fbe003c 	lw	s8,60(sp)
  4535a4:	27bd0048 	addiu	sp,sp,72
  4535a8:	03e00008 	jr	ra
  4535ac:	00000000 	nop

004535b0 <assign_hold>:
  4535b0:	3c1c0fbc 	lui	gp,0xfbc
  4535b4:	279c93c0 	addiu	gp,gp,-27712
  4535b8:	0399e021 	addu	gp,gp,t9
  4535bc:	27bdffc0 	addiu	sp,sp,-64
  4535c0:	afbc0018 	sw	gp,24(sp)
  4535c4:	afbf0038 	sw	ra,56(sp)
  4535c8:	afbe0034 	sw	s8,52(sp)
  4535cc:	afbc0030 	sw	gp,48(sp)
  4535d0:	03a0f021 	move	s8,sp
  4535d4:	afc40040 	sw	a0,64(s8)
  4535d8:	afc50044 	sw	a1,68(s8)
  4535dc:	afc60048 	sw	a2,72(s8)
  4535e0:	afc7004c 	sw	a3,76(s8)

/* assign a bare hold to a connection */

bool
assign_hold(struct connection *c, int transport_proto
, const ip_address *src, const ip_address *dst)
{
    /* either the automatically installed %hold eroute is broad enough
     * or we try to add a broader one and delete the automatic one.
     * Beware: this %hold might be already handled, but still squeak
     * through because of a race.
     */
    enum routing_t ro = c->routing	/* routing, old */
  4535e4:	8fc20040 	lw	v0,64(s8)
  4535e8:	00000000 	nop
  4535ec:	8c42019c 	lw	v0,412(v0)
  4535f0:	00000000 	nop
  4535f4:	afc20020 	sw	v0,32(s8)
	, rn = ro;	/* routing, new */
  4535f8:	8fc20020 	lw	v0,32(s8)
  4535fc:	00000000 	nop
  453600:	afc20024 	sw	v0,36(s8)

    /* figure out what routing should become */
    switch (ro)
  453604:	8fc20020 	lw	v0,32(s8)
  453608:	00000000 	nop
  45360c:	afc20028 	sw	v0,40(s8)
  453610:	8fc30028 	lw	v1,40(s8)
  453614:	00000000 	nop
  453618:	10600008 	beqz	v1,45363c <assign_hold+0x8c>
  45361c:	00000000 	nop
  453620:	24020002 	li	v0,2
  453624:	8fc30028 	lw	v1,40(s8)
  453628:	00000000 	nop
  45362c:	10620007 	beq	v1,v0,45364c <assign_hold+0x9c>
  453630:	00000000 	nop
  453634:	10000007 	b	453654 <assign_hold+0xa4>
  453638:	00000000 	nop
    {
    case RT_UNROUTED:
	rn = RT_UNROUTED_HOLD;
  45363c:	24020001 	li	v0,1
  453640:	afc20024 	sw	v0,36(s8)
	break;
  453644:	10000003 	b	453654 <assign_hold+0xa4>
  453648:	00000000 	nop
    case RT_ROUTED_PROSPECTIVE:
	rn = RT_ROUTED_HOLD;
  45364c:	24020003 	li	v0,3
  453650:	afc20024 	sw	v0,36(s8)
	break;
    default:
	/* no change: this %hold is old news and should just be deleted */
	break;
    }

    /* we need a broad %hold, not the narrow one.
     * First we ensure that there is a broad %hold.
     * There may already be one (race condition): no need to create one.
     * There may already be a %trap: replace it.
     * There may not be any broad eroute: add %hold.
     * Once the broad %hold is in place, delete the narrow one.
     */
    if (rn != ro)
  453654:	8fc30024 	lw	v1,36(s8)
  453658:	8fc20020 	lw	v0,32(s8)
  45365c:	00000000 	nop
  453660:	10620032 	beq	v1,v0,45372c <assign_hold+0x17c>
  453664:	00000000 	nop
    {
	if (erouted(ro)
	? !eroute_connection(c, htonl(SPI_HOLD), SA_INT, SADB_X_SATYPE_INT
	    , ERO_REPLACE, "replace %trap with broad %hold")
	: !eroute_connection(c, htonl(SPI_HOLD), SA_INT, SADB_X_SATYPE_INT
	    , ERO_ADD, "add broad %hold"))
  453668:	8fc20020 	lw	v0,32(s8)
  45366c:	00000000 	nop
  453670:	10400017 	beqz	v0,4536d0 <assign_hold+0x120>
  453674:	00000000 	nop
  453678:	2402020e 	li	v0,526
  45367c:	afa20010 	sw	v0,16(sp)
  453680:	8f82802c 	lw	v0,-32724(gp)
  453684:	00000000 	nop
  453688:	24420738 	addiu	v0,v0,1848
  45368c:	00000000 	nop
  453690:	afa20014 	sw	v0,20(sp)
  453694:	8fc40040 	lw	a0,64(s8)
  453698:	24050103 	li	a1,259
  45369c:	2406003d 	li	a2,61
  4536a0:	2407000b 	li	a3,11
  4536a4:	8f998038 	lw	t9,-32712(gp)
  4536a8:	00000000 	nop
  4536ac:	27393448 	addiu	t9,t9,13384
  4536b0:	00000000 	nop
  4536b4:	0320f809 	jalr	t9
  4536b8:	00000000 	nop
  4536bc:	8fdc0018 	lw	gp,24(s8)
  4536c0:	1440001a 	bnez	v0,45372c <assign_hold+0x17c>
  4536c4:	00000000 	nop
  4536c8:	10000015 	b	453720 <assign_hold+0x170>
  4536cc:	00000000 	nop
  4536d0:	2402000e 	li	v0,14
  4536d4:	afa20010 	sw	v0,16(sp)
  4536d8:	8f82802c 	lw	v0,-32724(gp)
  4536dc:	00000000 	nop
  4536e0:	24420758 	addiu	v0,v0,1880
  4536e4:	00000000 	nop
  4536e8:	afa20014 	sw	v0,20(sp)
  4536ec:	8fc40040 	lw	a0,64(s8)
  4536f0:	24050103 	li	a1,259
  4536f4:	2406003d 	li	a2,61
  4536f8:	2407000b 	li	a3,11
  4536fc:	8f998038 	lw	t9,-32712(gp)
  453700:	00000000 	nop
  453704:	27393448 	addiu	t9,t9,13384
  453708:	00000000 	nop
  45370c:	0320f809 	jalr	t9
  453710:	00000000 	nop
  453714:	8fdc0018 	lw	gp,24(s8)
  453718:	14400004 	bnez	v0,45372c <assign_hold+0x17c>
  45371c:	00000000 	nop
	{
	    return FALSE;
  453720:	00001021 	move	v0,zero
  453724:	1000001c 	b	453798 <assign_hold+0x1e8>
  453728:	00000000 	nop
	}
    }
    if (!replace_bare_shunt(src, dst, SPI_HOLD, FALSE, transport_proto
	, "delete narrow %hold"))
  45372c:	8fc20044 	lw	v0,68(s8)
  453730:	00000000 	nop
  453734:	afa20010 	sw	v0,16(sp)
  453738:	8f82802c 	lw	v0,-32724(gp)
  45373c:	00000000 	nop
  453740:	24420768 	addiu	v0,v0,1896
  453744:	00000000 	nop
  453748:	afa20014 	sw	v0,20(sp)
  45374c:	8fc40048 	lw	a0,72(s8)
  453750:	8fc5004c 	lw	a1,76(s8)
  453754:	24060103 	li	a2,259
  453758:	00003821 	move	a3,zero
  45375c:	8f998718 	lw	t9,-30952(gp)
  453760:	00000000 	nop
  453764:	0320f809 	jalr	t9
  453768:	00000000 	nop
  45376c:	8fdc0018 	lw	gp,24(s8)
  453770:	14400004 	bnez	v0,453784 <assign_hold+0x1d4>
  453774:	00000000 	nop
    {
	return FALSE;
  453778:	00001021 	move	v0,zero
  45377c:	10000006 	b	453798 <assign_hold+0x1e8>
  453780:	00000000 	nop
    }
    c->routing = rn;
  453784:	8fc30024 	lw	v1,36(s8)
  453788:	8fc20040 	lw	v0,64(s8)
  45378c:	00000000 	nop
  453790:	ac43019c 	sw	v1,412(v0)
    return TRUE;
  453794:	24020001 	li	v0,1
}
  453798:	03c0e821 	move	sp,s8
  45379c:	8fbf0038 	lw	ra,56(sp)
  4537a0:	8fbe0034 	lw	s8,52(sp)
  4537a4:	27bd0040 	addiu	sp,sp,64
  4537a8:	03e00008 	jr	ra
  4537ac:	00000000 	nop

004537b0 <sag_eroute>:
  4537b0:	3c1c0fbc 	lui	gp,0xfbc
  4537b4:	279c91c0 	addiu	gp,gp,-28224
  4537b8:	0399e021 	addu	gp,gp,t9
  4537bc:	27bdffc0 	addiu	sp,sp,-64
  4537c0:	afbc0018 	sw	gp,24(sp)
  4537c4:	afbf0038 	sw	ra,56(sp)
  4537c8:	afbe0034 	sw	s8,52(sp)
  4537cc:	afbc0030 	sw	gp,48(sp)
  4537d0:	03a0f021 	move	s8,sp
  4537d4:	afc40040 	sw	a0,64(s8)
  4537d8:	afc50044 	sw	a1,68(s8)
  4537dc:	afc60048 	sw	a2,72(s8)

/* install or remove eroute for SA Group */
static bool
sag_eroute(struct state *st, unsigned op, const char *opname)
{
    struct connection *c = st->st_connection;
  4537e0:	8fc20040 	lw	v0,64(s8)
  4537e4:	00000000 	nop
  4537e8:	8c42000c 	lw	v0,12(v0)
  4537ec:	00000000 	nop
  4537f0:	afc20020 	sw	v0,32(s8)
    unsigned int
    	inner_proto,
	inner_satype;
    ipsec_spi_t inner_spi;

    /* figure out the SPI and protocol (in two forms)
     * for the innermost transformation.
     */

    if (st->st_ah.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL
    || st->st_esp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL
    || st->st_ipcomp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL)
  4537f4:	8fc20040 	lw	v0,64(s8)
  4537f8:	00000000 	nop
  4537fc:	94430050 	lhu	v1,80(v0)
  453800:	24020001 	li	v0,1
  453804:	1062000f 	beq	v1,v0,453844 <sag_eroute+0x94>
  453808:	00000000 	nop
  45380c:	8fc20040 	lw	v0,64(s8)
  453810:	00000000 	nop
  453814:	9443007c 	lhu	v1,124(v0)
  453818:	24020001 	li	v0,1
  45381c:	10620009 	beq	v1,v0,453844 <sag_eroute+0x94>
  453820:	00000000 	nop
  453824:	8fc20040 	lw	v0,64(s8)
  453828:	00000000 	nop
  45382c:	944300a8 	lhu	v1,168(v0)
  453830:	24020001 	li	v0,1
  453834:	10620003 	beq	v1,v0,453844 <sag_eroute+0x94>
  453838:	00000000 	nop
  45383c:	1000000c 	b	453870 <sag_eroute+0xc0>
  453840:	00000000 	nop
    {
	inner_spi = st->st_tunnel_out_spi;
  453844:	8fc20040 	lw	v0,64(s8)
  453848:	00000000 	nop
  45384c:	8c4200c4 	lw	v0,196(v0)
  453850:	00000000 	nop
  453854:	afc2002c 	sw	v0,44(s8)
	inner_proto = SA_IPIP;
  453858:	24020004 	li	v0,4
  45385c:	afc20024 	sw	v0,36(s8)
	inner_satype = SADB_X_SATYPE_IPIP;
  453860:	24020009 	li	v0,9
  453864:	afc20028 	sw	v0,40(s8)
  453868:	10000041 	b	453970 <sag_eroute+0x1c0>
  45386c:	00000000 	nop
    }
    else if (st->st_ipcomp.present)
  453870:	8fc20040 	lw	v0,64(s8)
  453874:	00000000 	nop
  453878:	8c420094 	lw	v0,148(v0)
  45387c:	00000000 	nop
  453880:	1040000c 	beqz	v0,4538b4 <sag_eroute+0x104>
  453884:	00000000 	nop
    {
	inner_spi = st->st_ipcomp.attrs.spi;
  453888:	8fc20040 	lw	v0,64(s8)
  45388c:	00000000 	nop
  453890:	8c42009c 	lw	v0,156(v0)
  453894:	00000000 	nop
  453898:	afc2002c 	sw	v0,44(s8)
	inner_proto = SA_COMP;
  45389c:	2402006c 	li	v0,108
  4538a0:	afc20024 	sw	v0,36(s8)
	inner_satype = SADB_X_SATYPE_COMP;
  4538a4:	2402000a 	li	v0,10
  4538a8:	afc20028 	sw	v0,40(s8)
  4538ac:	10000030 	b	453970 <sag_eroute+0x1c0>
  4538b0:	00000000 	nop
    }
    else if (st->st_esp.present)
  4538b4:	8fc20040 	lw	v0,64(s8)
  4538b8:	00000000 	nop
  4538bc:	8c420068 	lw	v0,104(v0)
  4538c0:	00000000 	nop
  4538c4:	1040000c 	beqz	v0,4538f8 <sag_eroute+0x148>
  4538c8:	00000000 	nop
    {
	inner_spi = st->st_esp.attrs.spi;
  4538cc:	8fc20040 	lw	v0,64(s8)
  4538d0:	00000000 	nop
  4538d4:	8c420070 	lw	v0,112(v0)
  4538d8:	00000000 	nop
  4538dc:	afc2002c 	sw	v0,44(s8)
	inner_proto = SA_ESP;
  4538e0:	24020032 	li	v0,50
  4538e4:	afc20024 	sw	v0,36(s8)
	inner_satype = SADB_SATYPE_ESP;
  4538e8:	24020003 	li	v0,3
  4538ec:	afc20028 	sw	v0,40(s8)
  4538f0:	1000001f 	b	453970 <sag_eroute+0x1c0>
  4538f4:	00000000 	nop
    }
    else if (st->st_ah.present)
  4538f8:	8fc20040 	lw	v0,64(s8)
  4538fc:	00000000 	nop
  453900:	8c42003c 	lw	v0,60(v0)
  453904:	00000000 	nop
  453908:	1040000c 	beqz	v0,45393c <sag_eroute+0x18c>
  45390c:	00000000 	nop
    {
	inner_spi = st->st_ah.attrs.spi;
  453910:	8fc20040 	lw	v0,64(s8)
  453914:	00000000 	nop
  453918:	8c420044 	lw	v0,68(v0)
  45391c:	00000000 	nop
  453920:	afc2002c 	sw	v0,44(s8)
	inner_proto = SA_AH;
  453924:	24020033 	li	v0,51
  453928:	afc20024 	sw	v0,36(s8)
	inner_satype = SADB_SATYPE_AH;
  45392c:	24020002 	li	v0,2
  453930:	afc20028 	sw	v0,40(s8)
  453934:	1000000e 	b	453970 <sag_eroute+0x1c0>
  453938:	00000000 	nop
    }
    else
    {
	impossible();	/* no transform at all! */
  45393c:	8f84802c 	lw	a0,-32724(gp)
  453940:	00000000 	nop
  453944:	2484077c 	addiu	a0,a0,1916
  453948:	8f85802c 	lw	a1,-32724(gp)
  45394c:	00000000 	nop
  453950:	24a5fb28 	addiu	a1,a1,-1240
  453954:	2406067d 	li	a2,1661
  453958:	8f998bb8 	lw	t9,-29768(gp)
  45395c:	00000000 	nop
  453960:	0320f809 	jalr	t9
  453964:	00000000 	nop
  453968:	8fdc0018 	lw	gp,24(s8)
  45396c:	00000000 	nop
    }

    return eroute_connection(c
  453970:	8fc20044 	lw	v0,68(s8)
  453974:	00000000 	nop
  453978:	afa20010 	sw	v0,16(sp)
  45397c:	8fc20048 	lw	v0,72(s8)
  453980:	00000000 	nop
  453984:	afa20014 	sw	v0,20(sp)
  453988:	8fc40020 	lw	a0,32(s8)
  45398c:	8fc5002c 	lw	a1,44(s8)
  453990:	8fc60024 	lw	a2,36(s8)
  453994:	8fc70028 	lw	a3,40(s8)
  453998:	8f998038 	lw	t9,-32712(gp)
  45399c:	00000000 	nop
  4539a0:	27393448 	addiu	t9,t9,13384
  4539a4:	00000000 	nop
  4539a8:	0320f809 	jalr	t9
  4539ac:	00000000 	nop
  4539b0:	8fdc0018 	lw	gp,24(s8)
  4539b4:	00000000 	nop
	, inner_spi, inner_proto, inner_satype
	, op, opname);
}
  4539b8:	03c0e821 	move	sp,s8
  4539bc:	8fbf0038 	lw	ra,56(sp)
  4539c0:	8fbe0034 	lw	s8,52(sp)
  4539c4:	27bd0040 	addiu	sp,sp,64
  4539c8:	03e00008 	jr	ra
  4539cc:	00000000 	nop

004539d0 <shunt_eroute>:
  4539d0:	3c1c0fbc 	lui	gp,0xfbc
  4539d4:	279c8fa0 	addiu	gp,gp,-28768
  4539d8:	0399e021 	addu	gp,gp,t9
  4539dc:	27bdffc8 	addiu	sp,sp,-56
  4539e0:	afbc0018 	sw	gp,24(sp)
  4539e4:	afbf0030 	sw	ra,48(sp)
  4539e8:	afbe002c 	sw	s8,44(sp)
  4539ec:	afbc0028 	sw	gp,40(sp)
  4539f0:	03a0f021 	move	s8,sp
  4539f4:	afc40038 	sw	a0,56(s8)
  4539f8:	afc5003c 	sw	a1,60(s8)
  4539fc:	afc60040 	sw	a2,64(s8)

/* Add/replace/delete a shunt eroute.
 * Such an eroute determines the fate of packets without the use
 * of any SAs.  These are defaults, in effect.
 * If a negotiation has not been attempted, use %trap.
 * If negotiation has failed, the choice between %trap/%pass/%drop/%reject
 * is specified in the policy of connection c.
 */
static bool
shunt_eroute(struct connection *c, unsigned int op, const char *opname)
{
    /* We are constructing a special SAID for the eroute.
     * The destination doesn't seem to matter, but the family does.
     * The protocol is SA_INT -- mark this as shunt.
     * The satype has no meaning, but is required for PF_KEY header!
     * The SPI signifies the kind of shunt.
     */

    /* note: these are in host order :-( */
    static ipsec_spi_t shunt_spi[] = { SPI_TRAP /* */
	, SPI_PASS	/* --pass */
	, SPI_DROP	/* --drop */
	, SPI_REJECT };	/* --pass --drop */

    ipsec_spi_t spi = c->routing == RT_ROUTED_PROSPECTIVE? SPI_TRAP
  453a00:	8fc20038 	lw	v0,56(s8)
  453a04:	00000000 	nop
  453a08:	8c43019c 	lw	v1,412(v0)
  453a0c:	24020002 	li	v0,2
  453a10:	10620018 	beq	v1,v0,453a74 <shunt_eroute+0xa4>
  453a14:	00000000 	nop
  453a18:	8fc20038 	lw	v0,56(s8)
  453a1c:	00000000 	nop
  453a20:	8c440008 	lw	a0,8(v0)
  453a24:	8c45000c 	lw	a1,12(v0)
  453a28:	24020000 	li	v0,0
  453a2c:	24030300 	li	v1,768
  453a30:	00821024 	and	v0,a0,v0
  453a34:	00a31824 	and	v1,a1,v1
  453a38:	00031a02 	srl	v1,v1,0x8
  453a3c:	00022600 	sll	a0,v0,0x18
  453a40:	00641825 	or	v1,v1,a0
  453a44:	00021202 	srl	v0,v0,0x8
  453a48:	00601021 	move	v0,v1
  453a4c:	00021080 	sll	v0,v0,0x2
  453a50:	8f818018 	lw	at,-32744(gp)
  453a54:	00000000 	nop
  453a58:	24212464 	addiu	at,at,9316
  453a5c:	00221021 	addu	v0,at,v0
  453a60:	8c420000 	lw	v0,0(v0)
  453a64:	00000000 	nop
  453a68:	afc20024 	sw	v0,36(s8)
  453a6c:	10000003 	b	453a7c <shunt_eroute+0xac>
  453a70:	00000000 	nop
  453a74:	24020104 	li	v0,260
  453a78:	afc20024 	sw	v0,36(s8)
  453a7c:	8fc20024 	lw	v0,36(s8)
  453a80:	00000000 	nop
  453a84:	afc20020 	sw	v0,32(s8)
	: shunt_spi[(c->policy & POLICY_OPPO_MASK) >> POLICY_OPPO_SHIFT];

    return eroute_connection(c, htonl(spi), SA_INT, SADB_X_SATYPE_INT, op, opname);
  453a88:	8fc2003c 	lw	v0,60(s8)
  453a8c:	00000000 	nop
  453a90:	afa20010 	sw	v0,16(sp)
  453a94:	8fc20040 	lw	v0,64(s8)
  453a98:	00000000 	nop
  453a9c:	afa20014 	sw	v0,20(sp)
  453aa0:	8fc40038 	lw	a0,56(s8)
  453aa4:	8fc50020 	lw	a1,32(s8)
  453aa8:	2406003d 	li	a2,61
  453aac:	2407000b 	li	a3,11
  453ab0:	8f998038 	lw	t9,-32712(gp)
  453ab4:	00000000 	nop
  453ab8:	27393448 	addiu	t9,t9,13384
  453abc:	00000000 	nop
  453ac0:	0320f809 	jalr	t9
  453ac4:	00000000 	nop
  453ac8:	8fdc0018 	lw	gp,24(s8)
  453acc:	00000000 	nop
}
  453ad0:	03c0e821 	move	sp,s8
  453ad4:	8fbf0030 	lw	ra,48(sp)
  453ad8:	8fbe002c 	lw	s8,44(sp)
  453adc:	27bd0038 	addiu	sp,sp,56
  453ae0:	03e00008 	jr	ra
  453ae4:	00000000 	nop

00453ae8 <read_proto>:
  453ae8:	3c1c0fbc 	lui	gp,0xfbc
  453aec:	279c8e88 	addiu	gp,gp,-29048
  453af0:	0399e021 	addu	gp,gp,t9
  453af4:	27bdffc8 	addiu	sp,sp,-56
  453af8:	afbc0010 	sw	gp,16(sp)
  453afc:	afbf0030 	sw	ra,48(sp)
  453b00:	afbe002c 	sw	s8,44(sp)
  453b04:	afbc0028 	sw	gp,40(sp)
  453b08:	03a0f021 	move	s8,sp
  453b0c:	afc40038 	sw	a0,56(s8)
  453b10:	afc5003c 	sw	a1,60(s8)
  453b14:	afc60040 	sw	a2,64(s8)


/*
 * This is only called when s is a likely SAID with  trailing protocol i.e.
 * it has the form :- 
 *
 *   %<keyword>:p
 *   <ip-proto><spi>@a.b.c.d:p
 *
 * The task here is to remove the ":p" part so that the rest can be read
 * by another routine.
 */
static const char *
read_proto(const char * s, size_t * len, int * transport_proto)
{
    const char * p;
    const char * ugh;
    unsigned long proto;
    size_t l;

    l = *len;
  453b18:	8fc2003c 	lw	v0,60(s8)
  453b1c:	00000000 	nop
  453b20:	8c420000 	lw	v0,0(v0)
  453b24:	00000000 	nop
  453b28:	afc20024 	sw	v0,36(s8)
    p = memchr(s, ':', l);
  453b2c:	8fc40038 	lw	a0,56(s8)
  453b30:	2405003a 	li	a1,58
  453b34:	8fc60024 	lw	a2,36(s8)
  453b38:	8f9986e0 	lw	t9,-31008(gp)
  453b3c:	00000000 	nop
  453b40:	0320f809 	jalr	t9
  453b44:	00000000 	nop
  453b48:	8fdc0010 	lw	gp,16(s8)
  453b4c:	afc20018 	sw	v0,24(s8)
    if (p == 0) {
  453b50:	8fc20018 	lw	v0,24(s8)
  453b54:	00000000 	nop
  453b58:	14400007 	bnez	v0,453b78 <read_proto+0x90>
  453b5c:	00000000 	nop
        *transport_proto = 0;
  453b60:	8fc20040 	lw	v0,64(s8)
  453b64:	00000000 	nop
  453b68:	ac400000 	sw	zero,0(v0)
        return 0;
  453b6c:	00001021 	move	v0,zero
  453b70:	10000033 	b	453c40 <read_proto+0x158>
  453b74:	00000000 	nop
    }
    ugh = ttoul(p+1, l-((p-s)+1), 10, &proto);
  453b78:	8fc20018 	lw	v0,24(s8)
  453b7c:	00000000 	nop
  453b80:	24440001 	addiu	a0,v0,1
  453b84:	8fc30038 	lw	v1,56(s8)
  453b88:	8fc20018 	lw	v0,24(s8)
  453b8c:	00000000 	nop
  453b90:	00621823 	subu	v1,v1,v0
  453b94:	8fc20024 	lw	v0,36(s8)
  453b98:	00000000 	nop
  453b9c:	00621021 	addu	v0,v1,v0
  453ba0:	2442ffff 	addiu	v0,v0,-1
  453ba4:	00402821 	move	a1,v0
  453ba8:	2406000a 	li	a2,10
  453bac:	27c70020 	addiu	a3,s8,32
  453bb0:	8f9986bc 	lw	t9,-31044(gp)
  453bb4:	00000000 	nop
  453bb8:	0320f809 	jalr	t9
  453bbc:	00000000 	nop
  453bc0:	8fdc0010 	lw	gp,16(s8)
  453bc4:	afc2001c 	sw	v0,28(s8)
    if (ugh != 0)
  453bc8:	8fc2001c 	lw	v0,28(s8)
  453bcc:	00000000 	nop
  453bd0:	10400004 	beqz	v0,453be4 <read_proto+0xfc>
  453bd4:	00000000 	nop
        return ugh;
  453bd8:	8fc2001c 	lw	v0,28(s8)
  453bdc:	10000018 	b	453c40 <read_proto+0x158>
  453be0:	00000000 	nop
    if (proto > 65535)
  453be4:	3402ffff 	li	v0,0xffff
  453be8:	8fc30020 	lw	v1,32(s8)
  453bec:	00000000 	nop
  453bf0:	0043102b 	sltu	v0,v0,v1
  453bf4:	10400006 	beqz	v0,453c10 <read_proto+0x128>
  453bf8:	00000000 	nop
        return "protocol number is too large, legal range is 0-65535";
  453bfc:	8f82802c 	lw	v0,-32724(gp)
  453c00:	00000000 	nop
  453c04:	24420788 	addiu	v0,v0,1928
  453c08:	1000000d 	b	453c40 <read_proto+0x158>
  453c0c:	00000000 	nop
    *len = p-s;
  453c10:	8fc30018 	lw	v1,24(s8)
  453c14:	8fc20038 	lw	v0,56(s8)
  453c18:	00000000 	nop
  453c1c:	00621823 	subu	v1,v1,v0
  453c20:	8fc2003c 	lw	v0,60(s8)
  453c24:	00000000 	nop
  453c28:	ac430000 	sw	v1,0(v0)
    *transport_proto = proto;
  453c2c:	8fc30020 	lw	v1,32(s8)
  453c30:	8fc20040 	lw	v0,64(s8)
  453c34:	00000000 	nop
  453c38:	ac430000 	sw	v1,0(v0)
    return 0;
  453c3c:	00001021 	move	v0,zero
}
  453c40:	03c0e821 	move	sp,s8
  453c44:	8fbf0030 	lw	ra,48(sp)
  453c48:	8fbe002c 	lw	s8,44(sp)
  453c4c:	27bd0038 	addiu	sp,sp,56
  453c50:	03e00008 	jr	ra
  453c54:	00000000 	nop

00453c58 <scan_proc_shunts>:
  453c58:	3c1c0fbc 	lui	gp,0xfbc
  453c5c:	279c8d18 	addiu	gp,gp,-29416
  453c60:	0399e021 	addu	gp,gp,t9
  453c64:	27bdf9a0 	addiu	sp,sp,-1632
  453c68:	afbc0020 	sw	gp,32(sp)
  453c6c:	afbf0658 	sw	ra,1624(sp)
  453c70:	afbe0654 	sw	s8,1620(sp)
  453c74:	afbc0650 	sw	gp,1616(sp)
  453c78:	03a0f021 	move	s8,sp


/* scan /proc/net/ipsec_eroute every once in a while, looking for:
 *
 * - %hold shunts of which Pluto isn't aware.  This situation could
 *   be caused by lost ACQUIRE messages.  When found, they will
 *   added to orphan_holds.  This in turn will lead to Opportunistic
 *   initiation.
 *
 * - %pass shunts that haven't been used recently.  These will be
 *   deleted.
 *
 * - (eventually) other shunt eroutes that haven't been used in a while.
 *
 * Here are some sample lines:
 * 10         10.3.2.1.0/24    -> 0.0.0.0/0          => %trap
 * 259        10.3.2.1.115/32  -> 10.19.75.161/32    => tun0x1002@10.19.75.145
 * 71         10.44.73.97/32   -> 0.0.0.0/0          => %trap
 * 4119       10.44.73.97/32   -> 10.114.121.41/32   => %pass
 * Newer versions of KLIPS start each line with a 32-bit packet count.
 * If available, the count is used to detect whether a %pass shunt is in use.
 */
void
scan_proc_shunts(void)
{
    static const char procname[] = "/proc/net/ipsec_eroute";
    FILE *f;
    time_t nw = now();
  453c7c:	8f998b58 	lw	t9,-29864(gp)
  453c80:	00000000 	nop
  453c84:	0320f809 	jalr	t9
  453c88:	00000000 	nop
  453c8c:	8fdc0020 	lw	gp,32(s8)
  453c90:	afc2002c 	sw	v0,44(s8)
    int lino;
    struct eroute_info *expired = NULL;
  453c94:	afc00034 	sw	zero,52(s8)

    event_schedule(EVENT_SHUNT_SCAN, SHUNT_SCAN_INTERVAL, NULL);
  453c98:	24040002 	li	a0,2
  453c9c:	24050078 	li	a1,120
  453ca0:	00003021 	move	a2,zero
  453ca4:	8f998410 	lw	t9,-31728(gp)
  453ca8:	00000000 	nop
  453cac:	0320f809 	jalr	t9
  453cb0:	00000000 	nop
  453cb4:	8fdc0020 	lw	gp,32(s8)
  453cb8:	00000000 	nop

    DBG(DBG_CONTROL,
  453cbc:	8f8284f8 	lw	v0,-31496(gp)
  453cc0:	00000000 	nop
  453cc4:	8c420000 	lw	v0,0(v0)
  453cc8:	00000000 	nop
  453ccc:	30420010 	andi	v0,v0,0x10
  453cd0:	10400009 	beqz	v0,453cf8 <scan_proc_shunts+0xa0>
  453cd4:	00000000 	nop
  453cd8:	8f84802c 	lw	a0,-32724(gp)
  453cdc:	00000000 	nop
  453ce0:	248407dc 	addiu	a0,a0,2012
  453ce4:	8f9983b8 	lw	t9,-31816(gp)
  453ce8:	00000000 	nop
  453cec:	0320f809 	jalr	t9
  453cf0:	00000000 	nop
  453cf4:	8fdc0020 	lw	gp,32(s8)
  453cf8:	00000000 	nop
    	DBG_log("scanning for shunt eroutes")
    )

    /* free any leftover entries: they will be refreshed if still current */
    while (orphaned_holds != NULL)
  453cfc:	8f828c38 	lw	v0,-29640(gp)
  453d00:	00000000 	nop
  453d04:	8c420000 	lw	v0,0(v0)
  453d08:	00000000 	nop
  453d0c:	14400003 	bnez	v0,453d1c <scan_proc_shunts+0xc4>
  453d10:	00000000 	nop
  453d14:	10000016 	b	453d70 <scan_proc_shunts+0x118>
  453d18:	00000000 	nop
    {
	struct eroute_info *p = orphaned_holds;
  453d1c:	8f828c38 	lw	v0,-29640(gp)
  453d20:	00000000 	nop
  453d24:	8c420000 	lw	v0,0(v0)
  453d28:	00000000 	nop
  453d2c:	afc20038 	sw	v0,56(s8)

	orphaned_holds = p->next;
  453d30:	8fc20038 	lw	v0,56(s8)
  453d34:	00000000 	nop
  453d38:	8c420088 	lw	v0,136(v0)
  453d3c:	8f818c38 	lw	at,-29640(gp)
  453d40:	00000000 	nop
  453d44:	ac220000 	sw	v0,0(at)
	pfree(orphaned_holds);
  453d48:	8f848c38 	lw	a0,-29640(gp)
  453d4c:	00000000 	nop
  453d50:	8c840000 	lw	a0,0(a0)
  453d54:	8f998094 	lw	t9,-32620(gp)
  453d58:	00000000 	nop
  453d5c:	0320f809 	jalr	t9
  453d60:	00000000 	nop
  453d64:	8fdc0020 	lw	gp,32(s8)
  453d68:	1000ffe4 	b	453cfc <scan_proc_shunts+0xa4>
  453d6c:	00000000 	nop
    }

    /* decode the /proc file.  Don't do anything strenuous to it
     * (certainly no PF_KEY stuff) to minimize the chance that it
     * might change underfoot.
     */

    f = fopen(procname, "r");
  453d70:	8f84802c 	lw	a0,-32724(gp)
  453d74:	00000000 	nop
  453d78:	248407c0 	addiu	a0,a0,1984
  453d7c:	8f85802c 	lw	a1,-32724(gp)
  453d80:	00000000 	nop
  453d84:	24a501d4 	addiu	a1,a1,468
  453d88:	8f99850c 	lw	t9,-31476(gp)
  453d8c:	00000000 	nop
  453d90:	0320f809 	jalr	t9
  453d94:	00000000 	nop
  453d98:	8fdc0020 	lw	gp,32(s8)
  453d9c:	afc20028 	sw	v0,40(s8)
    if (f == NULL)
  453da0:	8fc20028 	lw	v0,40(s8)
  453da4:	00000000 	nop
  453da8:	14400003 	bnez	v0,453db8 <scan_proc_shunts+0x160>
  453dac:	00000000 	nop
	return;
  453db0:	1000027a 	b	45479c <scan_proc_shunts+0xb44>
  453db4:	00000000 	nop

    /* for each line... */
    for (lino = 1; ; lino++)
  453db8:	24020001 	li	v0,1
  453dbc:	afc20030 	sw	v0,48(s8)
    {
	unsigned char buf[1024];	/* should be big enough */
	chunk_t field[10];	/* 10 is loose upper bound */
	chunk_t *ff;	/* fixed fields (excluding optional count) */
	int fi;
	struct eroute_info eri;
	char *cp;
	err_t context = ""
  453dc0:	8f82802c 	lw	v0,-32724(gp)
  453dc4:	00000000 	nop
  453dc8:	2442ffe4 	addiu	v0,v0,-28
  453dcc:	00000000 	nop
  453dd0:	afc2052c 	sw	v0,1324(s8)
	    , ugh = NULL;
  453dd4:	afc00530 	sw	zero,1328(s8)

	cp = fgets(buf, sizeof(buf), f);
  453dd8:	27c40040 	addiu	a0,s8,64
  453ddc:	24050400 	li	a1,1024
  453de0:	8fc60028 	lw	a2,40(s8)
  453de4:	8f998a70 	lw	t9,-30096(gp)
  453de8:	00000000 	nop
  453dec:	0320f809 	jalr	t9
  453df0:	00000000 	nop
  453df4:	8fdc0020 	lw	gp,32(s8)
  453df8:	afc20528 	sw	v0,1320(s8)
	if (cp == NULL)
  453dfc:	8fc20528 	lw	v0,1320(s8)
  453e00:	00000000 	nop
  453e04:	14400003 	bnez	v0,453e14 <scan_proc_shunts+0x1bc>
  453e08:	00000000 	nop
	    break;
  453e0c:	1000021c 	b	454680 <scan_proc_shunts+0xa28>
  453e10:	00000000 	nop

	/* break out each field
	 * Note: if there are too many fields, just stop;
	 * it will be diagnosed a little later.
	 */
	for (fi = 0; fi < (int)elemsof(field); fi++)
  453e14:	afc00490 	sw	zero,1168(s8)
  453e18:	8fc20490 	lw	v0,1168(s8)
  453e1c:	00000000 	nop
  453e20:	2842000a 	slti	v0,v0,10
  453e24:	14400003 	bnez	v0,453e34 <scan_proc_shunts+0x1dc>
  453e28:	00000000 	nop
  453e2c:	1000003a 	b	453f18 <scan_proc_shunts+0x2c0>
  453e30:	00000000 	nop
	{
	    static const char sep[] = " \t\n";	/* field-separating whitespace */
	    size_t w;

	    cp += strspn(cp, sep);	/* find start of field */
  453e34:	8fc40528 	lw	a0,1320(s8)
  453e38:	8f85802c 	lw	a1,-32724(gp)
  453e3c:	00000000 	nop
  453e40:	24a507d8 	addiu	a1,a1,2008
  453e44:	8f998198 	lw	t9,-32360(gp)
  453e48:	00000000 	nop
  453e4c:	0320f809 	jalr	t9
  453e50:	00000000 	nop
  453e54:	8fdc0020 	lw	gp,32(s8)
  453e58:	00401821 	move	v1,v0
  453e5c:	8fc20528 	lw	v0,1320(s8)
  453e60:	00000000 	nop
  453e64:	00431021 	addu	v0,v0,v1
  453e68:	afc20528 	sw	v0,1320(s8)
	    w = strcspn(cp, sep);	/* find width of field */
  453e6c:	8fc40528 	lw	a0,1320(s8)
  453e70:	8f85802c 	lw	a1,-32724(gp)
  453e74:	00000000 	nop
  453e78:	24a507d8 	addiu	a1,a1,2008
  453e7c:	8f9983a8 	lw	t9,-31832(gp)
  453e80:	00000000 	nop
  453e84:	0320f809 	jalr	t9
  453e88:	00000000 	nop
  453e8c:	8fdc0020 	lw	gp,32(s8)
  453e90:	afc20534 	sw	v0,1332(s8)
	    setchunk(field[fi], cp, w);
  453e94:	8fc20490 	lw	v0,1168(s8)
  453e98:	00000000 	nop
  453e9c:	000218c0 	sll	v1,v0,0x3
  453ea0:	27c20440 	addiu	v0,s8,1088
  453ea4:	00431821 	addu	v1,v0,v1
  453ea8:	8fc20528 	lw	v0,1320(s8)
  453eac:	00000000 	nop
  453eb0:	ac620000 	sw	v0,0(v1)
  453eb4:	8fc20490 	lw	v0,1168(s8)
  453eb8:	00000000 	nop
  453ebc:	000218c0 	sll	v1,v0,0x3
  453ec0:	27c20444 	addiu	v0,s8,1092
  453ec4:	00431821 	addu	v1,v0,v1
  453ec8:	8fc20534 	lw	v0,1332(s8)
  453ecc:	00000000 	nop
  453ed0:	ac620000 	sw	v0,0(v1)
	    cp += w;
  453ed4:	8fc30528 	lw	v1,1320(s8)
  453ed8:	8fc20534 	lw	v0,1332(s8)
  453edc:	00000000 	nop
  453ee0:	00621021 	addu	v0,v1,v0
  453ee4:	afc20528 	sw	v0,1320(s8)
	    if (w == 0)
  453ee8:	8fc20534 	lw	v0,1332(s8)
  453eec:	00000000 	nop
  453ef0:	14400003 	bnez	v0,453f00 <scan_proc_shunts+0x2a8>
  453ef4:	00000000 	nop
		break;
  453ef8:	10000007 	b	453f18 <scan_proc_shunts+0x2c0>
  453efc:	00000000 	nop
  453f00:	8fc20490 	lw	v0,1168(s8)
  453f04:	00000000 	nop
  453f08:	24420001 	addiu	v0,v0,1
  453f0c:	afc20490 	sw	v0,1168(s8)
  453f10:	1000ffc1 	b	453e18 <scan_proc_shunts+0x1c0>
  453f14:	00000000 	nop
	}

	/* This odd do-hickey is to share error reporting code.
	 * A break will get to that common code.  The setting
	 * of "ugh" and "context" parameterize it.
	 */
	do {
	    /* Old entries have no packet count; new ones do.
	     * check if things are as they should be.
	     */
	    if (fi == 5)
  453f18:	8fc30490 	lw	v1,1168(s8)
  453f1c:	24020005 	li	v0,5
  453f20:	14620005 	bne	v1,v0,453f38 <scan_proc_shunts+0x2e0>
  453f24:	00000000 	nop
		ff = &field[0];	/* old form, with no count */
  453f28:	27c20440 	addiu	v0,s8,1088
  453f2c:	afc20038 	sw	v0,56(s8)
  453f30:	10000011 	b	453f78 <scan_proc_shunts+0x320>
  453f34:	00000000 	nop
	    else if (fi == 6)
  453f38:	8fc30490 	lw	v1,1168(s8)
  453f3c:	24020006 	li	v0,6
  453f40:	14620006 	bne	v1,v0,453f5c <scan_proc_shunts+0x304>
  453f44:	00000000 	nop
		ff = &field[1];	/* new form, with count */
  453f48:	27c20440 	addiu	v0,s8,1088
  453f4c:	24420008 	addiu	v0,v0,8
  453f50:	afc20038 	sw	v0,56(s8)
  453f54:	10000008 	b	453f78 <scan_proc_shunts+0x320>
  453f58:	00000000 	nop
	    else
	    {
		ugh = "has wrong number of fields";
  453f5c:	8f82802c 	lw	v0,-32724(gp)
  453f60:	00000000 	nop
  453f64:	244207f8 	addiu	v0,v0,2040
  453f68:	00000000 	nop
  453f6c:	afc20530 	sw	v0,1328(s8)
		break;
  453f70:	100000b7 	b	454250 <scan_proc_shunts+0x5f8>
  453f74:	00000000 	nop
	    }

	    if (ff[1].len != 2
	    || strncmp(ff[1].ptr, "->", 2) != 0
	    || ff[3].len != 2
	    || strncmp(ff[3].ptr, "=>", 2) != 0)
  453f78:	8fc20038 	lw	v0,56(s8)
  453f7c:	00000000 	nop
  453f80:	24420008 	addiu	v0,v0,8
  453f84:	8c430004 	lw	v1,4(v0)
  453f88:	24020002 	li	v0,2
  453f8c:	14620028 	bne	v1,v0,454030 <scan_proc_shunts+0x3d8>
  453f90:	00000000 	nop
  453f94:	8fc20038 	lw	v0,56(s8)
  453f98:	00000000 	nop
  453f9c:	24420008 	addiu	v0,v0,8
  453fa0:	8c440000 	lw	a0,0(v0)
  453fa4:	8f85802c 	lw	a1,-32724(gp)
  453fa8:	00000000 	nop
  453fac:	24a50814 	addiu	a1,a1,2068
  453fb0:	24060002 	li	a2,2
  453fb4:	8f99864c 	lw	t9,-31156(gp)
  453fb8:	00000000 	nop
  453fbc:	0320f809 	jalr	t9
  453fc0:	00000000 	nop
  453fc4:	8fdc0020 	lw	gp,32(s8)
  453fc8:	14400019 	bnez	v0,454030 <scan_proc_shunts+0x3d8>
  453fcc:	00000000 	nop
  453fd0:	8fc20038 	lw	v0,56(s8)
  453fd4:	00000000 	nop
  453fd8:	24420018 	addiu	v0,v0,24
  453fdc:	8c430004 	lw	v1,4(v0)
  453fe0:	24020002 	li	v0,2
  453fe4:	14620012 	bne	v1,v0,454030 <scan_proc_shunts+0x3d8>
  453fe8:	00000000 	nop
  453fec:	8fc20038 	lw	v0,56(s8)
  453ff0:	00000000 	nop
  453ff4:	24420018 	addiu	v0,v0,24
  453ff8:	8c440000 	lw	a0,0(v0)
  453ffc:	8f85802c 	lw	a1,-32724(gp)
  454000:	00000000 	nop
  454004:	24a50818 	addiu	a1,a1,2072
  454008:	24060002 	li	a2,2
  45400c:	8f99864c 	lw	t9,-31156(gp)
  454010:	00000000 	nop
  454014:	0320f809 	jalr	t9
  454018:	00000000 	nop
  45401c:	8fdc0020 	lw	gp,32(s8)
  454020:	14400003 	bnez	v0,454030 <scan_proc_shunts+0x3d8>
  454024:	00000000 	nop
  454028:	10000008 	b	45404c <scan_proc_shunts+0x3f4>
  45402c:	00000000 	nop
	    {
		ugh = "is missing -> or =>";
  454030:	8f82802c 	lw	v0,-32724(gp)
  454034:	00000000 	nop
  454038:	2442081c 	addiu	v0,v0,2076
  45403c:	00000000 	nop
  454040:	afc20530 	sw	v0,1328(s8)
		break;
  454044:	10000082 	b	454250 <scan_proc_shunts+0x5f8>
  454048:	00000000 	nop
	    }

	    /* actually digest fields of interest */

	    /* packet count */

	    eri.count = 0;
  45404c:	afc00498 	sw	zero,1176(s8)
	    if (ff != field)
  454050:	8fc30038 	lw	v1,56(s8)
  454054:	27c20440 	addiu	v0,s8,1088
  454058:	10620016 	beq	v1,v0,4540b4 <scan_proc_shunts+0x45c>
  45405c:	00000000 	nop
	    {
		context = "count field is malformed: ";
  454060:	8f82802c 	lw	v0,-32724(gp)
  454064:	00000000 	nop
  454068:	24420830 	addiu	v0,v0,2096
  45406c:	00000000 	nop
  454070:	afc2052c 	sw	v0,1324(s8)
		ugh = ttoul(field[0].ptr, field[0].len, 10, &eri.count);
  454074:	8fc40440 	lw	a0,1088(s8)
  454078:	8fc50444 	lw	a1,1092(s8)
  45407c:	2406000a 	li	a2,10
  454080:	27c70498 	addiu	a3,s8,1176
  454084:	8f9986bc 	lw	t9,-31044(gp)
  454088:	00000000 	nop
  45408c:	0320f809 	jalr	t9
  454090:	00000000 	nop
  454094:	8fdc0020 	lw	gp,32(s8)
  454098:	afc20530 	sw	v0,1328(s8)
		if (ugh != NULL)
  45409c:	8fc20530 	lw	v0,1328(s8)
  4540a0:	00000000 	nop
  4540a4:	10400003 	beqz	v0,4540b4 <scan_proc_shunts+0x45c>
  4540a8:	00000000 	nop
		    break;
  4540ac:	10000068 	b	454250 <scan_proc_shunts+0x5f8>
  4540b0:	00000000 	nop
	    }

	    /* our client */

	    context = "source subnet field malformed: ";
  4540b4:	8f82802c 	lw	v0,-32724(gp)
  4540b8:	00000000 	nop
  4540bc:	2442084c 	addiu	v0,v0,2124
  4540c0:	00000000 	nop
  4540c4:	afc2052c 	sw	v0,1324(s8)
	    ugh = ttosubnet(ff[0].ptr, ff[0].len, AF_INET, &eri.ours);
  4540c8:	27c20498 	addiu	v0,s8,1176
  4540cc:	24430004 	addiu	v1,v0,4
  4540d0:	8fc20038 	lw	v0,56(s8)
  4540d4:	00000000 	nop
  4540d8:	8c440000 	lw	a0,0(v0)
  4540dc:	8fc20038 	lw	v0,56(s8)
  4540e0:	00000000 	nop
  4540e4:	8c450004 	lw	a1,4(v0)
  4540e8:	24060002 	li	a2,2
  4540ec:	00603821 	move	a3,v1
  4540f0:	8f9988a0 	lw	t9,-30560(gp)
  4540f4:	00000000 	nop
  4540f8:	0320f809 	jalr	t9
  4540fc:	00000000 	nop
  454100:	8fdc0020 	lw	gp,32(s8)
  454104:	afc20530 	sw	v0,1328(s8)
	    if (ugh != NULL)
  454108:	8fc20530 	lw	v0,1328(s8)
  45410c:	00000000 	nop
  454110:	10400003 	beqz	v0,454120 <scan_proc_shunts+0x4c8>
  454114:	00000000 	nop
		break;
  454118:	1000004d 	b	454250 <scan_proc_shunts+0x5f8>
  45411c:	00000000 	nop

	    /* his client */

	    context = "destination subnet field malformed: ";
  454120:	8f82802c 	lw	v0,-32724(gp)
  454124:	00000000 	nop
  454128:	2442086c 	addiu	v0,v0,2156
  45412c:	00000000 	nop
  454130:	afc2052c 	sw	v0,1324(s8)
	    ugh = ttosubnet(ff[2].ptr, ff[2].len, AF_INET, &eri.his);
  454134:	8fc20038 	lw	v0,56(s8)
  454138:	00000000 	nop
  45413c:	24440010 	addiu	a0,v0,16
  454140:	8fc20038 	lw	v0,56(s8)
  454144:	00000000 	nop
  454148:	24430010 	addiu	v1,v0,16
  45414c:	27c20498 	addiu	v0,s8,1176
  454150:	24420024 	addiu	v0,v0,36
  454154:	8c840000 	lw	a0,0(a0)
  454158:	8c650004 	lw	a1,4(v1)
  45415c:	24060002 	li	a2,2
  454160:	00403821 	move	a3,v0
  454164:	8f9988a0 	lw	t9,-30560(gp)
  454168:	00000000 	nop
  45416c:	0320f809 	jalr	t9
  454170:	00000000 	nop
  454174:	8fdc0020 	lw	gp,32(s8)
  454178:	afc20530 	sw	v0,1328(s8)
	    if (ugh != NULL)
  45417c:	8fc20530 	lw	v0,1328(s8)
  454180:	00000000 	nop
  454184:	10400003 	beqz	v0,454194 <scan_proc_shunts+0x53c>
  454188:	00000000 	nop
		break;
  45418c:	10000030 	b	454250 <scan_proc_shunts+0x5f8>
  454190:	00000000 	nop

	    /* SAID */

	    context = "SA ID field malformed: ";
  454194:	8f82802c 	lw	v0,-32724(gp)
  454198:	00000000 	nop
  45419c:	24420894 	addiu	v0,v0,2196
  4541a0:	00000000 	nop
  4541a4:	afc2052c 	sw	v0,1324(s8)
            ugh = read_proto(ff[4].ptr, &ff[4].len, &eri.transport_proto);
  4541a8:	8fc20038 	lw	v0,56(s8)
  4541ac:	00000000 	nop
  4541b0:	24440020 	addiu	a0,v0,32
  4541b4:	8fc20038 	lw	v0,56(s8)
  4541b8:	00000000 	nop
  4541bc:	24430024 	addiu	v1,v0,36
  4541c0:	27c20498 	addiu	v0,s8,1176
  4541c4:	24420084 	addiu	v0,v0,132
  4541c8:	8c840000 	lw	a0,0(a0)
  4541cc:	00602821 	move	a1,v1
  4541d0:	00403021 	move	a2,v0
  4541d4:	8f998038 	lw	t9,-32712(gp)
  4541d8:	00000000 	nop
  4541dc:	27393ae8 	addiu	t9,t9,15080
  4541e0:	00000000 	nop
  4541e4:	0320f809 	jalr	t9
  4541e8:	00000000 	nop
  4541ec:	8fdc0020 	lw	gp,32(s8)
  4541f0:	afc20530 	sw	v0,1328(s8)
	    if (ugh != NULL)
  4541f4:	8fc20530 	lw	v0,1328(s8)
  4541f8:	00000000 	nop
  4541fc:	10400003 	beqz	v0,45420c <scan_proc_shunts+0x5b4>
  454200:	00000000 	nop
		break;
  454204:	10000012 	b	454250 <scan_proc_shunts+0x5f8>
  454208:	00000000 	nop
	    ugh = ttosa(ff[4].ptr, ff[4].len, &eri.said);
  45420c:	8fc20038 	lw	v0,56(s8)
  454210:	00000000 	nop
  454214:	24440020 	addiu	a0,v0,32
  454218:	8fc20038 	lw	v0,56(s8)
  45421c:	00000000 	nop
  454220:	24430020 	addiu	v1,v0,32
  454224:	27c20498 	addiu	v0,s8,1176
  454228:	24420060 	addiu	v0,v0,96
  45422c:	8c840000 	lw	a0,0(a0)
  454230:	8c650004 	lw	a1,4(v1)
  454234:	00403021 	move	a2,v0
  454238:	8f9982cc 	lw	t9,-32052(gp)
  45423c:	00000000 	nop
  454240:	0320f809 	jalr	t9
  454244:	00000000 	nop
  454248:	8fdc0020 	lw	gp,32(s8)
  45424c:	afc20530 	sw	v0,1328(s8)
	} while (FALSE);

	if (ugh != NULL)
  454250:	8fc20530 	lw	v0,1328(s8)
  454254:	00000000 	nop
  454258:	10400014 	beqz	v0,4542ac <scan_proc_shunts+0x654>
  45425c:	00000000 	nop
	{
	    plog("INTERNAL ERROR: %s line %d %s%s"
  454260:	8fc20530 	lw	v0,1328(s8)
  454264:	00000000 	nop
  454268:	afa20010 	sw	v0,16(sp)
  45426c:	8f84802c 	lw	a0,-32724(gp)
  454270:	00000000 	nop
  454274:	248408ac 	addiu	a0,a0,2220
  454278:	8f85802c 	lw	a1,-32724(gp)
  45427c:	00000000 	nop
  454280:	24a507c0 	addiu	a1,a1,1984
  454284:	8fc60030 	lw	a2,48(s8)
  454288:	8fc7052c 	lw	a3,1324(s8)
  45428c:	8f998abc 	lw	t9,-30020(gp)
  454290:	00000000 	nop
  454294:	0320f809 	jalr	t9
  454298:	00000000 	nop
  45429c:	8fdc0020 	lw	gp,32(s8)
  4542a0:	00000000 	nop
		, procname, lino, context, ugh);
	    continue;	/* ignore rest of line */
  4542a4:	100000f0 	b	454668 <scan_proc_shunts+0xa10>
  4542a8:	00000000 	nop
	}

	/* Now we have decoded eroute, let's consider it.
	 * We only care about shunt eroutes.
	 *
	 * %hold: if not known, add to orphaned_holds list for initiation
	 *    because ACQUIRE might have been lost.
	 *
	 * %pass: determine if idle; if so, blast it away.
	 *    Can occur bare (if DNS provided insufficient information)
	 *    or with a connection (failure context).
	 *    Could even be installed by ipsec manual.
	 *
	 * %trap: always welcome.
	 *
	 * others: handling as yet undesigned.  Generally associated
	 *    with a failure context.
	 */
	if (eri.said.proto == SA_INT)
  4542ac:	8fc30518 	lw	v1,1304(s8)
  4542b0:	2402003d 	li	v0,61
  4542b4:	146200ec 	bne	v1,v0,454668 <scan_proc_shunts+0xa10>
  4542b8:	00000000 	nop
	{
	    switch (ntohl(eri.said.spi))
  4542bc:	8fc20514 	lw	v0,1300(s8)
  4542c0:	00000000 	nop
  4542c4:	2442ff00 	addiu	v0,v0,-256
  4542c8:	afc20648 	sw	v0,1608(s8)
  4542cc:	8fc30648 	lw	v1,1608(s8)
  4542d0:	00000000 	nop
  4542d4:	2c620005 	sltiu	v0,v1,5
  4542d8:	104000d6 	beqz	v0,454634 <scan_proc_shunts+0x9dc>
  4542dc:	00000000 	nop
  4542e0:	8fc20648 	lw	v0,1608(s8)
  4542e4:	00000000 	nop
  4542e8:	00021080 	sll	v0,v0,0x2
  4542ec:	8f81802c 	lw	at,-32724(gp)
  4542f0:	00000000 	nop
  4542f4:	24210930 	addiu	at,at,2352
  4542f8:	00221021 	addu	v0,at,v0
  4542fc:	8c420000 	lw	v0,0(v0)
  454300:	00000000 	nop
  454304:	005c1021 	addu	v0,v0,gp
  454308:	00400008 	jr	v0
  45430c:	00000000 	nop
	    {
	    case SPI_HOLD:
		if (bare_shunt_ptr(&eri.ours, &eri.his, eri.transport_proto) == NULL
		&& shunt_owner(&eri.ours, &eri.his) == NULL)
  454310:	27c20498 	addiu	v0,s8,1176
  454314:	24430004 	addiu	v1,v0,4
  454318:	27c20498 	addiu	v0,s8,1176
  45431c:	24420024 	addiu	v0,v0,36
  454320:	00602021 	move	a0,v1
  454324:	00402821 	move	a1,v0
  454328:	8fc6051c 	lw	a2,1308(s8)
  45432c:	8f998038 	lw	t9,-32712(gp)
  454330:	00000000 	nop
  454334:	27392214 	addiu	t9,t9,8724
  454338:	00000000 	nop
  45433c:	0320f809 	jalr	t9
  454340:	00000000 	nop
  454344:	8fdc0020 	lw	gp,32(s8)
  454348:	144000c7 	bnez	v0,454668 <scan_proc_shunts+0xa10>
  45434c:	00000000 	nop
  454350:	27c20498 	addiu	v0,s8,1176
  454354:	24430004 	addiu	v1,v0,4
  454358:	27c20498 	addiu	v0,s8,1176
  45435c:	24420024 	addiu	v0,v0,36
  454360:	00602021 	move	a0,v1
  454364:	00402821 	move	a1,v0
  454368:	8f998380 	lw	t9,-31872(gp)
  45436c:	00000000 	nop
  454370:	0320f809 	jalr	t9
  454374:	00000000 	nop
  454378:	8fdc0020 	lw	gp,32(s8)
  45437c:	144000ba 	bnez	v0,454668 <scan_proc_shunts+0xa10>
  454380:	00000000 	nop
		{
		    int ourport = ntohs(portof(&eri.ours.addr));
  454384:	27c20498 	addiu	v0,s8,1176
  454388:	24420004 	addiu	v0,v0,4
  45438c:	00402021 	move	a0,v0
  454390:	8f998a60 	lw	t9,-30112(gp)
  454394:	00000000 	nop
  454398:	0320f809 	jalr	t9
  45439c:	00000000 	nop
  4543a0:	8fdc0020 	lw	gp,32(s8)
  4543a4:	afc20534 	sw	v0,1332(s8)
		    int hisport = ntohs(portof(&eri.his.addr));
  4543a8:	27c20498 	addiu	v0,s8,1176
  4543ac:	24420024 	addiu	v0,v0,36
  4543b0:	00402021 	move	a0,v0
  4543b4:	8f998a60 	lw	t9,-30112(gp)
  4543b8:	00000000 	nop
  4543bc:	0320f809 	jalr	t9
  4543c0:	00000000 	nop
  4543c4:	8fdc0020 	lw	gp,32(s8)
  4543c8:	afc20538 	sw	v0,1336(s8)
		    char ourst[SUBNETTOT_BUF];
		    char hist[SUBNETTOT_BUF];
		    char sat[SATOT_BUF];

		    subnettot(&eri.ours, 0, ourst, sizeof(ourst));
  4543cc:	27c20498 	addiu	v0,s8,1176
  4543d0:	24420004 	addiu	v0,v0,4
  4543d4:	00402021 	move	a0,v0
  4543d8:	00002821 	move	a1,zero
  4543dc:	27c60540 	addiu	a2,s8,1344
  4543e0:	2407004d 	li	a3,77
  4543e4:	8f998bbc 	lw	t9,-29764(gp)
  4543e8:	00000000 	nop
  4543ec:	0320f809 	jalr	t9
  4543f0:	00000000 	nop
  4543f4:	8fdc0020 	lw	gp,32(s8)
  4543f8:	00000000 	nop
		    subnettot(&eri.his, 0, hist, sizeof(hist));
  4543fc:	27c20498 	addiu	v0,s8,1176
  454400:	24420024 	addiu	v0,v0,36
  454404:	00402021 	move	a0,v0
  454408:	00002821 	move	a1,zero
  45440c:	27c60590 	addiu	a2,s8,1424
  454410:	2407004d 	li	a3,77
  454414:	8f998bbc 	lw	t9,-29764(gp)
  454418:	00000000 	nop
  45441c:	0320f809 	jalr	t9
  454420:	00000000 	nop
  454424:	8fdc0020 	lw	gp,32(s8)
  454428:	00000000 	nop
		    satot(&eri.said, 0, sat, sizeof(sat));
  45442c:	27c20498 	addiu	v0,s8,1176
  454430:	24420060 	addiu	v0,v0,96
  454434:	00402021 	move	a0,v0
  454438:	00002821 	move	a1,zero
  45443c:	27c605e0 	addiu	a2,s8,1504
  454440:	24070064 	li	a3,100
  454444:	8f998a3c 	lw	t9,-30148(gp)
  454448:	00000000 	nop
  45444c:	0320f809 	jalr	t9
  454450:	00000000 	nop
  454454:	8fdc0020 	lw	gp,32(s8)
  454458:	00000000 	nop

		    DBG(DBG_CONTROL,
  45445c:	8f8284f8 	lw	v0,-31496(gp)
  454460:	00000000 	nop
  454464:	8c420000 	lw	v0,0(v0)
  454468:	00000000 	nop
  45446c:	30420010 	andi	v0,v0,0x10
  454470:	10400015 	beqz	v0,4544c8 <scan_proc_shunts+0x870>
  454474:	00000000 	nop
  454478:	8fc20538 	lw	v0,1336(s8)
  45447c:	00000000 	nop
  454480:	afa20010 	sw	v0,16(sp)
  454484:	27c205e0 	addiu	v0,s8,1504
  454488:	afa20014 	sw	v0,20(sp)
  45448c:	8fc2051c 	lw	v0,1308(s8)
  454490:	00000000 	nop
  454494:	afa20018 	sw	v0,24(sp)
  454498:	8f84802c 	lw	a0,-32724(gp)
  45449c:	00000000 	nop
  4544a0:	248408cc 	addiu	a0,a0,2252
  4544a4:	27c50540 	addiu	a1,s8,1344
  4544a8:	8fc60534 	lw	a2,1332(s8)
  4544ac:	27c70590 	addiu	a3,s8,1424
  4544b0:	8f9983b8 	lw	t9,-31816(gp)
  4544b4:	00000000 	nop
  4544b8:	0320f809 	jalr	t9
  4544bc:	00000000 	nop
  4544c0:	8fdc0020 	lw	gp,32(s8)
  4544c4:	00000000 	nop
			DBG_log("add orphaned shunt %s:%d -> %s:%d => %s:%d"
			    , ourst, ourport, hist, hisport, sat, eri.transport_proto)
		     )
		    eri.next = orphaned_holds;
  4544c8:	8f828c38 	lw	v0,-29640(gp)
  4544cc:	00000000 	nop
  4544d0:	8c420000 	lw	v0,0(v0)
  4544d4:	00000000 	nop
  4544d8:	afc20520 	sw	v0,1312(s8)
		    orphaned_holds = clone_thing(eri, "orphaned %hold");
  4544dc:	27c40498 	addiu	a0,s8,1176
  4544e0:	2405008c 	li	a1,140
  4544e4:	8f86802c 	lw	a2,-32724(gp)
  4544e8:	00000000 	nop
  4544ec:	24c608f8 	addiu	a2,a2,2296
  4544f0:	8f998c04 	lw	t9,-29692(gp)
  4544f4:	00000000 	nop
  4544f8:	0320f809 	jalr	t9
  4544fc:	00000000 	nop
  454500:	8fdc0020 	lw	gp,32(s8)
  454504:	00000000 	nop
  454508:	8f818c38 	lw	at,-29640(gp)
  45450c:	00000000 	nop
  454510:	ac220000 	sw	v0,0(at)
		}
		break;
  454514:	10000054 	b	454668 <scan_proc_shunts+0xa10>
  454518:	00000000 	nop

	    case SPI_PASS:
		/* nothing sensible to do if we don't have counts */
		if (ff != field)
  45451c:	8fc30038 	lw	v1,56(s8)
  454520:	27c20440 	addiu	v0,s8,1088
  454524:	10620050 	beq	v1,v0,454668 <scan_proc_shunts+0xa10>
  454528:	00000000 	nop
		{
		    struct bare_shunt **bs_pp
			= bare_shunt_ptr(&eri.ours, &eri.his, eri.transport_proto);
  45452c:	27c20498 	addiu	v0,s8,1176
  454530:	24430004 	addiu	v1,v0,4
  454534:	27c20498 	addiu	v0,s8,1176
  454538:	24420024 	addiu	v0,v0,36
  45453c:	00602021 	move	a0,v1
  454540:	00402821 	move	a1,v0
  454544:	8fc6051c 	lw	a2,1308(s8)
  454548:	8f998038 	lw	t9,-32712(gp)
  45454c:	00000000 	nop
  454550:	27392214 	addiu	t9,t9,8724
  454554:	00000000 	nop
  454558:	0320f809 	jalr	t9
  45455c:	00000000 	nop
  454560:	8fdc0020 	lw	gp,32(s8)
  454564:	afc20538 	sw	v0,1336(s8)

		    if (bs_pp != NULL)
  454568:	8fc20538 	lw	v0,1336(s8)
  45456c:	00000000 	nop
  454570:	1040003d 	beqz	v0,454668 <scan_proc_shunts+0xa10>
  454574:	00000000 	nop
		    {
			struct bare_shunt *bs = *bs_pp;
  454578:	8fc20538 	lw	v0,1336(s8)
  45457c:	00000000 	nop
  454580:	8c420000 	lw	v0,0(v0)
  454584:	00000000 	nop
  454588:	afc20534 	sw	v0,1332(s8)

			if (eri.count != bs->count)
  45458c:	8fc20534 	lw	v0,1332(s8)
  454590:	00000000 	nop
  454594:	8c430068 	lw	v1,104(v0)
  454598:	8fc20498 	lw	v0,1176(s8)
  45459c:	00000000 	nop
  4545a0:	1043000b 	beq	v0,v1,4545d0 <scan_proc_shunts+0x978>
  4545a4:	00000000 	nop
			{
			    bs->count = eri.count;
  4545a8:	8fc30498 	lw	v1,1176(s8)
  4545ac:	8fc20534 	lw	v0,1332(s8)
  4545b0:	00000000 	nop
  4545b4:	ac430068 	sw	v1,104(v0)
			    bs->last_activity = nw;
  4545b8:	8fc3002c 	lw	v1,44(s8)
  4545bc:	8fc20534 	lw	v0,1332(s8)
  4545c0:	00000000 	nop
  4545c4:	ac43006c 	sw	v1,108(v0)
  4545c8:	10000027 	b	454668 <scan_proc_shunts+0xa10>
  4545cc:	00000000 	nop
			}
			else if (nw - bs->last_activity > SHUNT_PATIENCE)
  4545d0:	8fc20534 	lw	v0,1332(s8)
  4545d4:	00000000 	nop
  4545d8:	8c43006c 	lw	v1,108(v0)
  4545dc:	8fc2002c 	lw	v0,44(s8)
  4545e0:	00000000 	nop
  4545e4:	00431023 	subu	v0,v0,v1
  4545e8:	28420385 	slti	v0,v0,901
  4545ec:	1440001e 	bnez	v0,454668 <scan_proc_shunts+0xa10>
  4545f0:	00000000 	nop
			{
			    eri.next = expired;
  4545f4:	8fc20034 	lw	v0,52(s8)
  4545f8:	00000000 	nop
  4545fc:	afc20520 	sw	v0,1312(s8)
			    expired = clone_thing(eri, "expired %pass");
  454600:	27c40498 	addiu	a0,s8,1176
  454604:	2405008c 	li	a1,140
  454608:	8f86802c 	lw	a2,-32724(gp)
  45460c:	00000000 	nop
  454610:	24c60908 	addiu	a2,a2,2312
  454614:	8f998c04 	lw	t9,-29692(gp)
  454618:	00000000 	nop
  45461c:	0320f809 	jalr	t9
  454620:	00000000 	nop
  454624:	8fdc0020 	lw	gp,32(s8)
  454628:	afc20034 	sw	v0,52(s8)
			}
		    }
		}
		break;
  45462c:	1000000e 	b	454668 <scan_proc_shunts+0xa10>
  454630:	00000000 	nop

	    case SPI_DROP:
	    case SPI_REJECT:
	    case SPI_TRAP:
		break;

	    default:
		impossible();
  454634:	8f84802c 	lw	a0,-32724(gp)
  454638:	00000000 	nop
  45463c:	2484077c 	addiu	a0,a0,1916
  454640:	8f85802c 	lw	a1,-32724(gp)
  454644:	00000000 	nop
  454648:	24a5fb28 	addiu	a1,a1,-1240
  45464c:	240607ac 	li	a2,1964
  454650:	8f998bb8 	lw	t9,-29768(gp)
  454654:	00000000 	nop
  454658:	0320f809 	jalr	t9
  45465c:	00000000 	nop
  454660:	8fdc0020 	lw	gp,32(s8)
  454664:	00000000 	nop
  454668:	8fc20030 	lw	v0,48(s8)
  45466c:	00000000 	nop
  454670:	24420001 	addiu	v0,v0,1
  454674:	afc20030 	sw	v0,48(s8)
  454678:	1000fdd1 	b	453dc0 <scan_proc_shunts+0x168>
  45467c:	00000000 	nop
	    }
	}
    }	/* for each line */
    fclose(f);
  454680:	8fc40028 	lw	a0,40(s8)
  454684:	8f9984c0 	lw	t9,-31552(gp)
  454688:	00000000 	nop
  45468c:	0320f809 	jalr	t9
  454690:	00000000 	nop
  454694:	8fdc0020 	lw	gp,32(s8)
  454698:	00000000 	nop

    /* Now that we've finished processing the /proc file,
     * it is safe to delete the expired %pass shunts.
     */
    while (expired != NULL)
  45469c:	8fc20034 	lw	v0,52(s8)
  4546a0:	00000000 	nop
  4546a4:	14400003 	bnez	v0,4546b4 <scan_proc_shunts+0xa5c>
  4546a8:	00000000 	nop
  4546ac:	1000003b 	b	45479c <scan_proc_shunts+0xb44>
  4546b0:	00000000 	nop
    {
	struct eroute_info *p = expired;
  4546b4:	8fc20034 	lw	v0,52(s8)
  4546b8:	00000000 	nop
  4546bc:	afc20538 	sw	v0,1336(s8)
	ip_address src, dst;

	networkof(&p->ours, &src);
  4546c0:	8fc20538 	lw	v0,1336(s8)
  4546c4:	00000000 	nop
  4546c8:	24420004 	addiu	v0,v0,4
  4546cc:	00402021 	move	a0,v0
  4546d0:	27c50590 	addiu	a1,s8,1424
  4546d4:	8f9985bc 	lw	t9,-31300(gp)
  4546d8:	00000000 	nop
  4546dc:	0320f809 	jalr	t9
  4546e0:	00000000 	nop
  4546e4:	8fdc0020 	lw	gp,32(s8)
  4546e8:	00000000 	nop
	networkof(&p->his, &dst);
  4546ec:	8fc20538 	lw	v0,1336(s8)
  4546f0:	00000000 	nop
  4546f4:	24420024 	addiu	v0,v0,36
  4546f8:	00402021 	move	a0,v0
  4546fc:	27c505b0 	addiu	a1,s8,1456
  454700:	8f9985bc 	lw	t9,-31300(gp)
  454704:	00000000 	nop
  454708:	0320f809 	jalr	t9
  45470c:	00000000 	nop
  454710:	8fdc0020 	lw	gp,32(s8)
  454714:	00000000 	nop
	(void) replace_bare_shunt(&src, &dst
  454718:	8fc20538 	lw	v0,1336(s8)
  45471c:	00000000 	nop
  454720:	8c420084 	lw	v0,132(v0)
  454724:	00000000 	nop
  454728:	afa20010 	sw	v0,16(sp)
  45472c:	8f82802c 	lw	v0,-32724(gp)
  454730:	00000000 	nop
  454734:	24420918 	addiu	v0,v0,2328
  454738:	00000000 	nop
  45473c:	afa20014 	sw	v0,20(sp)
  454740:	27c40590 	addiu	a0,s8,1424
  454744:	27c505b0 	addiu	a1,s8,1456
  454748:	24060100 	li	a2,256
  45474c:	00003821 	move	a3,zero
  454750:	8f998718 	lw	t9,-30952(gp)
  454754:	00000000 	nop
  454758:	0320f809 	jalr	t9
  45475c:	00000000 	nop
  454760:	8fdc0020 	lw	gp,32(s8)
  454764:	00000000 	nop
	    , SPI_PASS, FALSE, p->transport_proto, "delete expired %pass");
	expired = p->next;
  454768:	8fc20538 	lw	v0,1336(s8)
  45476c:	00000000 	nop
  454770:	8c420088 	lw	v0,136(v0)
  454774:	00000000 	nop
  454778:	afc20034 	sw	v0,52(s8)
	pfree(p);
  45477c:	8fc40538 	lw	a0,1336(s8)
  454780:	8f998094 	lw	t9,-32620(gp)
  454784:	00000000 	nop
  454788:	0320f809 	jalr	t9
  45478c:	00000000 	nop
  454790:	8fdc0020 	lw	gp,32(s8)
  454794:	1000ffc1 	b	45469c <scan_proc_shunts+0xa44>
  454798:	00000000 	nop
    }
}
  45479c:	03c0e821 	move	sp,s8
  4547a0:	8fbf0658 	lw	ra,1624(sp)
  4547a4:	8fbe0654 	lw	s8,1620(sp)
  4547a8:	27bd0660 	addiu	sp,sp,1632
  4547ac:	03e00008 	jr	ra
  4547b0:	00000000 	nop

004547b4 <del_spi>:
  4547b4:	3c1c0fbc 	lui	gp,0xfbc
  4547b8:	279c81bc 	addiu	gp,gp,-32324
  4547bc:	0399e021 	addu	gp,gp,t9
  4547c0:	27bdfed8 	addiu	sp,sp,-296
  4547c4:	afbc0020 	sw	gp,32(sp)
  4547c8:	afbf0120 	sw	ra,288(sp)
  4547cc:	afbe011c 	sw	s8,284(sp)
  4547d0:	afbc0118 	sw	gp,280(sp)
  4547d4:	03a0f021 	move	s8,sp
  4547d8:	afc40128 	sw	a0,296(s8)
  4547dc:	afc5012c 	sw	a1,300(s8)
  4547e0:	afc60130 	sw	a2,304(s8)
  4547e4:	afc70134 	sw	a3,308(s8)

static bool
del_spi(ipsec_spi_t spi, int proto
, const ip_address *src, const ip_address *dest)
{
    struct sadb_ext *extensions[SADB_EXT_MAX + 1];
    char text_said[SATOT_BUF];

    set_text_said(text_said, dest, spi, proto);
  4547e8:	27c400a8 	addiu	a0,s8,168
  4547ec:	8fc50134 	lw	a1,308(s8)
  4547f0:	8fc60128 	lw	a2,296(s8)
  4547f4:	8fc7012c 	lw	a3,300(s8)
  4547f8:	8f998038 	lw	t9,-32712(gp)
  4547fc:	00000000 	nop
  454800:	273914c8 	addiu	t9,t9,5320
  454804:	00000000 	nop
  454808:	0320f809 	jalr	t9
  45480c:	00000000 	nop
  454810:	8fdc0020 	lw	gp,32(s8)
  454814:	00000000 	nop

    DBG(DBG_KLIPS, DBG_log("delete %s", text_said));
  454818:	8f8284f8 	lw	v0,-31496(gp)
  45481c:	00000000 	nop
  454820:	8c420000 	lw	v0,0(v0)
  454824:	00000000 	nop
  454828:	30420040 	andi	v0,v0,0x40
  45482c:	1040000b 	beqz	v0,45485c <del_spi+0xa8>
  454830:	00000000 	nop
  454834:	8f84802c 	lw	a0,-32724(gp)
  454838:	00000000 	nop
  45483c:	24840944 	addiu	a0,a0,2372
  454840:	27c500a8 	addiu	a1,s8,168
  454844:	8f9983b8 	lw	t9,-31816(gp)
  454848:	00000000 	nop
  45484c:	0320f809 	jalr	t9
  454850:	00000000 	nop
  454854:	8fdc0020 	lw	gp,32(s8)
  454858:	00000000 	nop

    return pfkey_msg_start(SADB_DELETE, proto2satype(proto)
  45485c:	afc00110 	sw	zero,272(s8)
  454860:	93c2012f 	lbu	v0,303(s8)
  454864:	00000000 	nop
  454868:	00402021 	move	a0,v0
  45486c:	8f9988bc 	lw	t9,-30532(gp)
  454870:	00000000 	nop
  454874:	0320f809 	jalr	t9
  454878:	00000000 	nop
  45487c:	8fdc0020 	lw	gp,32(s8)
  454880:	00401821 	move	v1,v0
  454884:	27c20028 	addiu	v0,s8,40
  454888:	afa20010 	sw	v0,16(sp)
  45488c:	24040004 	li	a0,4
  454890:	00602821 	move	a1,v1
  454894:	8f86802c 	lw	a2,-32724(gp)
  454898:	00000000 	nop
  45489c:	24c60950 	addiu	a2,a2,2384
  4548a0:	27c700a8 	addiu	a3,s8,168
  4548a4:	8f998038 	lw	t9,-32712(gp)
  4548a8:	00000000 	nop
  4548ac:	27391628 	addiu	t9,t9,5672
  4548b0:	00000000 	nop
  4548b4:	0320f809 	jalr	t9
  4548b8:	00000000 	nop
  4548bc:	8fdc0020 	lw	gp,32(s8)
  4548c0:	10400051 	beqz	v0,454a08 <del_spi+0x254>
  4548c4:	00000000 	nop
  4548c8:	24020001 	li	v0,1
  4548cc:	afa20010 	sw	v0,16(sp)
  4548d0:	afa00014 	sw	zero,20(sp)
  4548d4:	afa00018 	sw	zero,24(sp)
  4548d8:	afa0001c 	sw	zero,28(sp)
  4548dc:	27c4002c 	addiu	a0,s8,44
  4548e0:	24050001 	li	a1,1
  4548e4:	8fc60128 	lw	a2,296(s8)
  4548e8:	00003821 	move	a3,zero
  4548ec:	8f998804 	lw	t9,-30716(gp)
  4548f0:	00000000 	nop
  4548f4:	0320f809 	jalr	t9
  4548f8:	00000000 	nop
  4548fc:	8fdc0020 	lw	gp,32(s8)
  454900:	00402021 	move	a0,v0
  454904:	8f85802c 	lw	a1,-32724(gp)
  454908:	00000000 	nop
  45490c:	24a50968 	addiu	a1,a1,2408
  454910:	27c600a8 	addiu	a2,s8,168
  454914:	27c70028 	addiu	a3,s8,40
  454918:	8f998038 	lw	t9,-32712(gp)
  45491c:	00000000 	nop
  454920:	27391564 	addiu	t9,t9,5476
  454924:	00000000 	nop
  454928:	0320f809 	jalr	t9
  45492c:	00000000 	nop
  454930:	8fdc0020 	lw	gp,32(s8)
  454934:	10400034 	beqz	v0,454a08 <del_spi+0x254>
  454938:	00000000 	nop
  45493c:	27c20028 	addiu	v0,s8,40
  454940:	afa20010 	sw	v0,16(sp)
  454944:	24040005 	li	a0,5
  454948:	8fc50130 	lw	a1,304(s8)
  45494c:	8f86802c 	lw	a2,-32724(gp)
  454950:	00000000 	nop
  454954:	24c6097c 	addiu	a2,a2,2428
  454958:	27c700a8 	addiu	a3,s8,168
  45495c:	8f998038 	lw	t9,-32712(gp)
  454960:	00000000 	nop
  454964:	27391734 	addiu	t9,t9,5940
  454968:	00000000 	nop
  45496c:	0320f809 	jalr	t9
  454970:	00000000 	nop
  454974:	8fdc0020 	lw	gp,32(s8)
  454978:	10400023 	beqz	v0,454a08 <del_spi+0x254>
  45497c:	00000000 	nop
  454980:	27c20028 	addiu	v0,s8,40
  454984:	afa20010 	sw	v0,16(sp)
  454988:	24040006 	li	a0,6
  45498c:	8fc50134 	lw	a1,308(s8)
  454990:	8f86802c 	lw	a2,-32724(gp)
  454994:	00000000 	nop
  454998:	24c60994 	addiu	a2,a2,2452
  45499c:	27c700a8 	addiu	a3,s8,168
  4549a0:	8f998038 	lw	t9,-32712(gp)
  4549a4:	00000000 	nop
  4549a8:	27391734 	addiu	t9,t9,5940
  4549ac:	00000000 	nop
  4549b0:	0320f809 	jalr	t9
  4549b4:	00000000 	nop
  4549b8:	8fdc0020 	lw	gp,32(s8)
  4549bc:	10400012 	beqz	v0,454a08 <del_spi+0x254>
  4549c0:	00000000 	nop
  4549c4:	27c40028 	addiu	a0,s8,40
  4549c8:	8f85802c 	lw	a1,-32724(gp)
  4549cc:	00000000 	nop
  4549d0:	24a509ac 	addiu	a1,a1,2476
  4549d4:	27c600a8 	addiu	a2,s8,168
  4549d8:	00003821 	move	a3,zero
  4549dc:	8f998038 	lw	t9,-32712(gp)
  4549e0:	00000000 	nop
  4549e4:	27391940 	addiu	t9,t9,6464
  4549e8:	00000000 	nop
  4549ec:	0320f809 	jalr	t9
  4549f0:	00000000 	nop
  4549f4:	8fdc0020 	lw	gp,32(s8)
  4549f8:	10400003 	beqz	v0,454a08 <del_spi+0x254>
  4549fc:	00000000 	nop
  454a00:	24020001 	li	v0,1
  454a04:	afc20110 	sw	v0,272(s8)
  454a08:	8fc20110 	lw	v0,272(s8)
  454a0c:	00000000 	nop
	, "pfkey_msg_hdr delete SA", text_said, extensions)

    && pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
	    , SADB_EXT_SA
	    , spi	/* in host order */
	    , 0, SADB_SASTATE_MATURE, 0, 0, 0)
	, "pfkey_sa delete SA", text_said, extensions)

    && pfkeyext_address(SADB_EXT_ADDRESS_SRC, src
	, "pfkey_addr_s delete SA", text_said, extensions)

    && pfkeyext_address(SADB_EXT_ADDRESS_DST, dest
	, "pfkey_addr_d delete SA", text_said, extensions)

    && finish_pfkey_msg(extensions, "Delete SA", text_said, NULL);
}
  454a10:	03c0e821 	move	sp,s8
  454a14:	8fbf0120 	lw	ra,288(sp)
  454a18:	8fbe011c 	lw	s8,284(sp)
  454a1c:	27bd0128 	addiu	sp,sp,296
  454a20:	03e00008 	jr	ra
  454a24:	00000000 	nop

00454a28 <setup_half_ipsec_sa>:
  454a28:	3c1c0fbb 	lui	gp,0xfbb
  454a2c:	279c7f48 	addiu	gp,gp,32584
  454a30:	0399e021 	addu	gp,gp,t9
  454a34:	27bdfc28 	addiu	sp,sp,-984
  454a38:	afbc0028 	sw	gp,40(sp)
  454a3c:	afbf03d4 	sw	ra,980(sp)
  454a40:	afbe03d0 	sw	s8,976(sp)
  454a44:	afbc03cc 	sw	gp,972(sp)
  454a48:	afb003c8 	sw	s0,968(sp)
  454a4c:	03a0f021 	move	s8,sp
  454a50:	afc403d8 	sw	a0,984(s8)
  454a54:	afc503dc 	sw	a1,988(s8)

/* Setup a pair of SAs. Code taken from setsa.c and spigrp.c, in
 * ipsec-0.5.
 */

static bool
setup_half_ipsec_sa(struct state *st, bool inbound)
{
    /* Build an inbound or outbound SA */

    struct connection *c = st->st_connection;
  454a58:	8fc203d8 	lw	v0,984(s8)
  454a5c:	00000000 	nop
  454a60:	8c42000c 	lw	v0,12(v0)
  454a64:	00000000 	nop
  454a68:	afc20030 	sw	v0,48(s8)
    ip_address
	src = inbound? c->that.host_addr : c->this.host_addr,
  454a6c:	8fc203dc 	lw	v0,988(s8)
  454a70:	00000000 	nop
  454a74:	1040001a 	beqz	v0,454ae0 <setup_half_ipsec_sa+0xb8>
  454a78:	00000000 	nop
  454a7c:	8fc30030 	lw	v1,48(s8)
  454a80:	00000000 	nop
  454a84:	8c620108 	lw	v0,264(v1)
  454a88:	00000000 	nop
  454a8c:	afc20038 	sw	v0,56(s8)
  454a90:	8c62010c 	lw	v0,268(v1)
  454a94:	00000000 	nop
  454a98:	afc2003c 	sw	v0,60(s8)
  454a9c:	8c620110 	lw	v0,272(v1)
  454aa0:	00000000 	nop
  454aa4:	afc20040 	sw	v0,64(s8)
  454aa8:	8c620114 	lw	v0,276(v1)
  454aac:	00000000 	nop
  454ab0:	afc20044 	sw	v0,68(s8)
  454ab4:	8c620118 	lw	v0,280(v1)
  454ab8:	00000000 	nop
  454abc:	afc20048 	sw	v0,72(s8)
  454ac0:	8c62011c 	lw	v0,284(v1)
  454ac4:	00000000 	nop
  454ac8:	afc2004c 	sw	v0,76(s8)
  454acc:	8c620120 	lw	v0,288(v1)
  454ad0:	00000000 	nop
  454ad4:	afc20050 	sw	v0,80(s8)
  454ad8:	10000018 	b	454b3c <setup_half_ipsec_sa+0x114>
  454adc:	00000000 	nop
  454ae0:	8fc30030 	lw	v1,48(s8)
  454ae4:	00000000 	nop
  454ae8:	8c620058 	lw	v0,88(v1)
  454aec:	00000000 	nop
  454af0:	afc20038 	sw	v0,56(s8)
  454af4:	8c62005c 	lw	v0,92(v1)
  454af8:	00000000 	nop
  454afc:	afc2003c 	sw	v0,60(s8)
  454b00:	8c620060 	lw	v0,96(v1)
  454b04:	00000000 	nop
  454b08:	afc20040 	sw	v0,64(s8)
  454b0c:	8c620064 	lw	v0,100(v1)
  454b10:	00000000 	nop
  454b14:	afc20044 	sw	v0,68(s8)
  454b18:	8c620068 	lw	v0,104(v1)
  454b1c:	00000000 	nop
  454b20:	afc20048 	sw	v0,72(s8)
  454b24:	8c62006c 	lw	v0,108(v1)
  454b28:	00000000 	nop
  454b2c:	afc2004c 	sw	v0,76(s8)
  454b30:	8c620070 	lw	v0,112(v1)
  454b34:	00000000 	nop
  454b38:	afc20050 	sw	v0,80(s8)
	dst = inbound? c->this.host_addr : c->that.host_addr;
  454b3c:	8fc203dc 	lw	v0,988(s8)
  454b40:	00000000 	nop
  454b44:	1040001a 	beqz	v0,454bb0 <setup_half_ipsec_sa+0x188>
  454b48:	00000000 	nop
  454b4c:	8fc30030 	lw	v1,48(s8)
  454b50:	00000000 	nop
  454b54:	8c620058 	lw	v0,88(v1)
  454b58:	00000000 	nop
  454b5c:	afc20058 	sw	v0,88(s8)
  454b60:	8c62005c 	lw	v0,92(v1)
  454b64:	00000000 	nop
  454b68:	afc2005c 	sw	v0,92(s8)
  454b6c:	8c620060 	lw	v0,96(v1)
  454b70:	00000000 	nop
  454b74:	afc20060 	sw	v0,96(s8)
  454b78:	8c620064 	lw	v0,100(v1)
  454b7c:	00000000 	nop
  454b80:	afc20064 	sw	v0,100(s8)
  454b84:	8c620068 	lw	v0,104(v1)
  454b88:	00000000 	nop
  454b8c:	afc20068 	sw	v0,104(s8)
  454b90:	8c62006c 	lw	v0,108(v1)
  454b94:	00000000 	nop
  454b98:	afc2006c 	sw	v0,108(s8)
  454b9c:	8c620070 	lw	v0,112(v1)
  454ba0:	00000000 	nop
  454ba4:	afc20070 	sw	v0,112(s8)
  454ba8:	10000018 	b	454c0c <setup_half_ipsec_sa+0x1e4>
  454bac:	00000000 	nop
  454bb0:	8fc30030 	lw	v1,48(s8)
  454bb4:	00000000 	nop
  454bb8:	8c620108 	lw	v0,264(v1)
  454bbc:	00000000 	nop
  454bc0:	afc20058 	sw	v0,88(s8)
  454bc4:	8c62010c 	lw	v0,268(v1)
  454bc8:	00000000 	nop
  454bcc:	afc2005c 	sw	v0,92(s8)
  454bd0:	8c620110 	lw	v0,272(v1)
  454bd4:	00000000 	nop
  454bd8:	afc20060 	sw	v0,96(s8)
  454bdc:	8c620114 	lw	v0,276(v1)
  454be0:	00000000 	nop
  454be4:	afc20064 	sw	v0,100(s8)
  454be8:	8c620118 	lw	v0,280(v1)
  454bec:	00000000 	nop
  454bf0:	afc20068 	sw	v0,104(s8)
  454bf4:	8c62011c 	lw	v0,284(v1)
  454bf8:	00000000 	nop
  454bfc:	afc2006c 	sw	v0,108(s8)
  454c00:	8c620120 	lw	v0,288(v1)
  454c04:	00000000 	nop
  454c08:	afc20070 	sw	v0,112(s8)

    /* SPIs, saved for spigrouping or undoing, if necessary */
    ip_said
	said[EM_MAXRELSPIS],
	*said_next = said;
  454c0c:	27c20078 	addiu	v0,s8,120
  454c10:	afc20108 	sw	v0,264(s8)

    struct sadb_ext *extensions[SADB_EXT_MAX + 1];
    char text_said[SATOT_BUF];

    /* set up AH SA, if any */

    if (st->st_ah.present)
  454c14:	8fc203d8 	lw	v0,984(s8)
  454c18:	00000000 	nop
  454c1c:	8c42003c 	lw	v0,60(v0)
  454c20:	00000000 	nop
  454c24:	10400102 	beqz	v0,455030 <setup_half_ipsec_sa+0x608>
  454c28:	00000000 	nop
    {
	ipsec_spi_t ah_spi = inbound? st->st_ah.our_spi : st->st_ah.attrs.spi;
  454c2c:	8fc203dc 	lw	v0,988(s8)
  454c30:	00000000 	nop
  454c34:	10400008 	beqz	v0,454c58 <setup_half_ipsec_sa+0x230>
  454c38:	00000000 	nop
  454c3c:	8fc203d8 	lw	v0,984(s8)
  454c40:	00000000 	nop
  454c44:	8c420058 	lw	v0,88(v0)
  454c48:	00000000 	nop
  454c4c:	afc203a0 	sw	v0,928(s8)
  454c50:	10000006 	b	454c6c <setup_half_ipsec_sa+0x244>
  454c54:	00000000 	nop
  454c58:	8fc203d8 	lw	v0,984(s8)
  454c5c:	00000000 	nop
  454c60:	8c420044 	lw	v0,68(v0)
  454c64:	00000000 	nop
  454c68:	afc203a0 	sw	v0,928(s8)
  454c6c:	8fc203a0 	lw	v0,928(s8)
  454c70:	00000000 	nop
  454c74:	afc201f8 	sw	v0,504(s8)
	u_char *ah_dst_keymat = inbound? st->st_ah.our_keymat : st->st_ah.peer_keymat;
  454c78:	8fc203dc 	lw	v0,988(s8)
  454c7c:	00000000 	nop
  454c80:	10400008 	beqz	v0,454ca4 <setup_half_ipsec_sa+0x27c>
  454c84:	00000000 	nop
  454c88:	8fc203d8 	lw	v0,984(s8)
  454c8c:	00000000 	nop
  454c90:	8c420060 	lw	v0,96(v0)
  454c94:	00000000 	nop
  454c98:	afc203a4 	sw	v0,932(s8)
  454c9c:	10000006 	b	454cb8 <setup_half_ipsec_sa+0x290>
  454ca0:	00000000 	nop
  454ca4:	8fc203d8 	lw	v0,984(s8)
  454ca8:	00000000 	nop
  454cac:	8c420064 	lw	v0,100(v0)
  454cb0:	00000000 	nop
  454cb4:	afc203a4 	sw	v0,932(s8)
  454cb8:	8fc303a4 	lw	v1,932(s8)
  454cbc:	00000000 	nop
  454cc0:	afc301fc 	sw	v1,508(s8)

	unsigned char authalg;

	switch (st->st_ah.attrs.auth)
  454cc4:	8fc203d8 	lw	v0,984(s8)
  454cc8:	00000000 	nop
  454ccc:	94420052 	lhu	v0,82(v0)
  454cd0:	00000000 	nop
  454cd4:	afc203a8 	sw	v0,936(s8)
  454cd8:	24020002 	li	v0,2
  454cdc:	8fc303a8 	lw	v1,936(s8)
  454ce0:	00000000 	nop
  454ce4:	10620018 	beq	v1,v0,454d48 <setup_half_ipsec_sa+0x320>
  454ce8:	00000000 	nop
  454cec:	8fc303a8 	lw	v1,936(s8)
  454cf0:	00000000 	nop
  454cf4:	28620003 	slti	v0,v1,3
  454cf8:	10400008 	beqz	v0,454d1c <setup_half_ipsec_sa+0x2f4>
  454cfc:	00000000 	nop
  454d00:	24020001 	li	v0,1
  454d04:	8fc303a8 	lw	v1,936(s8)
  454d08:	00000000 	nop
  454d0c:	1062000a 	beq	v1,v0,454d38 <setup_half_ipsec_sa+0x310>
  454d10:	00000000 	nop
  454d14:	10000010 	b	454d58 <setup_half_ipsec_sa+0x330>
  454d18:	00000000 	nop
  454d1c:	8fc303a8 	lw	v1,936(s8)
  454d20:	00000000 	nop
  454d24:	28620005 	slti	v0,v1,5
  454d28:	1040000b 	beqz	v0,454d58 <setup_half_ipsec_sa+0x330>
  454d2c:	00000000 	nop
  454d30:	10000009 	b	454d58 <setup_half_ipsec_sa+0x330>
  454d34:	00000000 	nop
	{
	case AUTH_ALGORITHM_HMAC_MD5:
	    authalg = SADB_AALG_MD5HMAC;
  454d38:	24020002 	li	v0,2
  454d3c:	a3c20200 	sb	v0,512(s8)
	    break;
  454d40:	1000001c 	b	454db4 <setup_half_ipsec_sa+0x38c>
  454d44:	00000000 	nop

	case AUTH_ALGORITHM_HMAC_SHA1:
	    authalg = SADB_AALG_SHA1HMAC;
  454d48:	24020003 	li	v0,3
  454d4c:	a3c20200 	sb	v0,512(s8)
	    break;
  454d50:	10000018 	b	454db4 <setup_half_ipsec_sa+0x38c>
  454d54:	00000000 	nop

	case AUTH_ALGORITHM_KPDK:
	case AUTH_ALGORITHM_DES_MAC:
	default:
	    loglog(RC_LOG_SERIOUS, "%s not implemented yet"
  454d58:	8fc203d8 	lw	v0,984(s8)
  454d5c:	00000000 	nop
  454d60:	94420052 	lhu	v0,82(v0)
  454d64:	8f848424 	lw	a0,-31708(gp)
  454d68:	00402821 	move	a1,v0
  454d6c:	8f9987fc 	lw	t9,-30724(gp)
  454d70:	00000000 	nop
  454d74:	0320f809 	jalr	t9
  454d78:	00000000 	nop
  454d7c:	8fdc0028 	lw	gp,40(s8)
  454d80:	24040003 	li	a0,3
  454d84:	8f85802c 	lw	a1,-32724(gp)
  454d88:	00000000 	nop
  454d8c:	24a50a38 	addiu	a1,a1,2616
  454d90:	00403021 	move	a2,v0
  454d94:	8f998c48 	lw	t9,-29624(gp)
  454d98:	00000000 	nop
  454d9c:	0320f809 	jalr	t9
  454da0:	00000000 	nop
  454da4:	8fdc0028 	lw	gp,40(s8)
  454da8:	00000000 	nop
		, enum_show(&auth_alg_names, st->st_ah.attrs.auth));
	    goto fail;
  454dac:	100005f7 	b	45658c <setup_half_ipsec_sa+0x1b64>
  454db0:	00000000 	nop
	}

	set_text_said(text_said, &dst, ah_spi, SA_AH);
  454db4:	27c40190 	addiu	a0,s8,400
  454db8:	27c50058 	addiu	a1,s8,88
  454dbc:	8fc601f8 	lw	a2,504(s8)
  454dc0:	24070033 	li	a3,51
  454dc4:	8f998038 	lw	t9,-32712(gp)
  454dc8:	00000000 	nop
  454dcc:	273914c8 	addiu	t9,t9,5320
  454dd0:	00000000 	nop
  454dd4:	0320f809 	jalr	t9
  454dd8:	00000000 	nop
  454ddc:	8fdc0028 	lw	gp,40(s8)
  454de0:	00000000 	nop

	if (!(pfkey_msg_start(SADB_ADD, SADB_SATYPE_AH
	    , "pfkey_msg_hdr Add AH SA", text_said, extensions)

	&& pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
		, SADB_EXT_SA
		, ah_spi	/* in network order */
		, REPLAY_WINDOW, SADB_SASTATE_MATURE, authalg, 0, 0)
	    , "pfkey_sa Add AH SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_SRC, &src
	    , "pfkey_addr_s Add AH SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_DST, &dst
	    , "pfkey_addr_d Add AH SA", text_said, extensions)

	&& pfkey_build(pfkey_key_build(&extensions[SADB_EXT_KEY_AUTH]
		, SADB_EXT_KEY_AUTH, st->st_ah.keymat_len * IPSEC_PFKEYv2_ALIGN
		, ah_dst_keymat)
	    , "pfkey_key_a Add AH SA", text_said, extensions)

	&& finish_pfkey_msg(extensions, "Add AH SA", text_said, NULL)))
  454de4:	27c20110 	addiu	v0,s8,272
  454de8:	afa20010 	sw	v0,16(sp)
  454dec:	24040003 	li	a0,3
  454df0:	24050002 	li	a1,2
  454df4:	8f86802c 	lw	a2,-32724(gp)
  454df8:	00000000 	nop
  454dfc:	24c60a50 	addiu	a2,a2,2640
  454e00:	27c70190 	addiu	a3,s8,400
  454e04:	8f998038 	lw	t9,-32712(gp)
  454e08:	00000000 	nop
  454e0c:	27391628 	addiu	t9,t9,5672
  454e10:	00000000 	nop
  454e14:	0320f809 	jalr	t9
  454e18:	00000000 	nop
  454e1c:	8fdc0028 	lw	gp,40(s8)
  454e20:	104005da 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  454e24:	00000000 	nop
  454e28:	27c20110 	addiu	v0,s8,272
  454e2c:	24430004 	addiu	v1,v0,4
  454e30:	24020001 	li	v0,1
  454e34:	afa20010 	sw	v0,16(sp)
  454e38:	93c20200 	lbu	v0,512(s8)
  454e3c:	00000000 	nop
  454e40:	afa20014 	sw	v0,20(sp)
  454e44:	afa00018 	sw	zero,24(sp)
  454e48:	afa0001c 	sw	zero,28(sp)
  454e4c:	00602021 	move	a0,v1
  454e50:	24050001 	li	a1,1
  454e54:	8fc601f8 	lw	a2,504(s8)
  454e58:	24070040 	li	a3,64
  454e5c:	8f998804 	lw	t9,-30716(gp)
  454e60:	00000000 	nop
  454e64:	0320f809 	jalr	t9
  454e68:	00000000 	nop
  454e6c:	8fdc0028 	lw	gp,40(s8)
  454e70:	00402021 	move	a0,v0
  454e74:	8f85802c 	lw	a1,-32724(gp)
  454e78:	00000000 	nop
  454e7c:	24a50a68 	addiu	a1,a1,2664
  454e80:	27c60190 	addiu	a2,s8,400
  454e84:	27c70110 	addiu	a3,s8,272
  454e88:	8f998038 	lw	t9,-32712(gp)
  454e8c:	00000000 	nop
  454e90:	27391564 	addiu	t9,t9,5476
  454e94:	00000000 	nop
  454e98:	0320f809 	jalr	t9
  454e9c:	00000000 	nop
  454ea0:	8fdc0028 	lw	gp,40(s8)
  454ea4:	104005b9 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  454ea8:	00000000 	nop
  454eac:	27c20110 	addiu	v0,s8,272
  454eb0:	afa20010 	sw	v0,16(sp)
  454eb4:	24040005 	li	a0,5
  454eb8:	27c50038 	addiu	a1,s8,56
  454ebc:	8f86802c 	lw	a2,-32724(gp)
  454ec0:	00000000 	nop
  454ec4:	24c60a7c 	addiu	a2,a2,2684
  454ec8:	27c70190 	addiu	a3,s8,400
  454ecc:	8f998038 	lw	t9,-32712(gp)
  454ed0:	00000000 	nop
  454ed4:	27391734 	addiu	t9,t9,5940
  454ed8:	00000000 	nop
  454edc:	0320f809 	jalr	t9
  454ee0:	00000000 	nop
  454ee4:	8fdc0028 	lw	gp,40(s8)
  454ee8:	104005a8 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  454eec:	00000000 	nop
  454ef0:	27c20110 	addiu	v0,s8,272
  454ef4:	afa20010 	sw	v0,16(sp)
  454ef8:	24040006 	li	a0,6
  454efc:	27c50058 	addiu	a1,s8,88
  454f00:	8f86802c 	lw	a2,-32724(gp)
  454f04:	00000000 	nop
  454f08:	24c60a94 	addiu	a2,a2,2708
  454f0c:	27c70190 	addiu	a3,s8,400
  454f10:	8f998038 	lw	t9,-32712(gp)
  454f14:	00000000 	nop
  454f18:	27391734 	addiu	t9,t9,5940
  454f1c:	00000000 	nop
  454f20:	0320f809 	jalr	t9
  454f24:	00000000 	nop
  454f28:	8fdc0028 	lw	gp,40(s8)
  454f2c:	10400597 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  454f30:	00000000 	nop
  454f34:	27c20110 	addiu	v0,s8,272
  454f38:	24430020 	addiu	v1,v0,32
  454f3c:	8fc203d8 	lw	v0,984(s8)
  454f40:	00000000 	nop
  454f44:	9442005c 	lhu	v0,92(v0)
  454f48:	00000000 	nop
  454f4c:	000210c0 	sll	v0,v0,0x3
  454f50:	3042ffff 	andi	v0,v0,0xffff
  454f54:	00602021 	move	a0,v1
  454f58:	24050008 	li	a1,8
  454f5c:	00403021 	move	a2,v0
  454f60:	8fc701fc 	lw	a3,508(s8)
  454f64:	8f9982dc 	lw	t9,-32036(gp)
  454f68:	00000000 	nop
  454f6c:	0320f809 	jalr	t9
  454f70:	00000000 	nop
  454f74:	8fdc0028 	lw	gp,40(s8)
  454f78:	00402021 	move	a0,v0
  454f7c:	8f85802c 	lw	a1,-32724(gp)
  454f80:	00000000 	nop
  454f84:	24a50aac 	addiu	a1,a1,2732
  454f88:	27c60190 	addiu	a2,s8,400
  454f8c:	27c70110 	addiu	a3,s8,272
  454f90:	8f998038 	lw	t9,-32712(gp)
  454f94:	00000000 	nop
  454f98:	27391564 	addiu	t9,t9,5476
  454f9c:	00000000 	nop
  454fa0:	0320f809 	jalr	t9
  454fa4:	00000000 	nop
  454fa8:	8fdc0028 	lw	gp,40(s8)
  454fac:	10400577 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  454fb0:	00000000 	nop
  454fb4:	27c40110 	addiu	a0,s8,272
  454fb8:	8f85802c 	lw	a1,-32724(gp)
  454fbc:	00000000 	nop
  454fc0:	24a50ac4 	addiu	a1,a1,2756
  454fc4:	27c60190 	addiu	a2,s8,400
  454fc8:	00003821 	move	a3,zero
  454fcc:	8f998038 	lw	t9,-32712(gp)
  454fd0:	00000000 	nop
  454fd4:	27391940 	addiu	t9,t9,6464
  454fd8:	00000000 	nop
  454fdc:	0320f809 	jalr	t9
  454fe0:	00000000 	nop
  454fe4:	8fdc0028 	lw	gp,40(s8)
  454fe8:	14400003 	bnez	v0,454ff8 <setup_half_ipsec_sa+0x5d0>
  454fec:	00000000 	nop
  454ff0:	10000566 	b	45658c <setup_half_ipsec_sa+0x1b64>
  454ff4:	00000000 	nop

	    goto fail;

	initsaid(&dst, ah_spi, SA_AH, said_next);
  454ff8:	27c40058 	addiu	a0,s8,88
  454ffc:	8fc501f8 	lw	a1,504(s8)
  455000:	24060033 	li	a2,51
  455004:	8fc70108 	lw	a3,264(s8)
  455008:	8f99817c 	lw	t9,-32388(gp)
  45500c:	00000000 	nop
  455010:	0320f809 	jalr	t9
  455014:	00000000 	nop
  455018:	8fdc0028 	lw	gp,40(s8)
  45501c:	00000000 	nop
	said_next++;
  455020:	8fc20108 	lw	v0,264(s8)
  455024:	00000000 	nop
  455028:	24420024 	addiu	v0,v0,36
  45502c:	afc20108 	sw	v0,264(s8)
    }

    /* set up ESP SA, if any */

    if (st->st_esp.present)
  455030:	8fc203d8 	lw	v0,984(s8)
  455034:	00000000 	nop
  455038:	8c420068 	lw	v0,104(v0)
  45503c:	00000000 	nop
  455040:	104002b5 	beqz	v0,455b18 <setup_half_ipsec_sa+0x10f0>
  455044:	00000000 	nop
    {
	ipsec_spi_t esp_spi = inbound? st->st_esp.our_spi : st->st_esp.attrs.spi;
  455048:	8fc203dc 	lw	v0,988(s8)
  45504c:	00000000 	nop
  455050:	10400008 	beqz	v0,455074 <setup_half_ipsec_sa+0x64c>
  455054:	00000000 	nop
  455058:	8fc203d8 	lw	v0,984(s8)
  45505c:	00000000 	nop
  455060:	8c420084 	lw	v0,132(v0)
  455064:	00000000 	nop
  455068:	afc203ac 	sw	v0,940(s8)
  45506c:	10000006 	b	455088 <setup_half_ipsec_sa+0x660>
  455070:	00000000 	nop
  455074:	8fc203d8 	lw	v0,984(s8)
  455078:	00000000 	nop
  45507c:	8c420070 	lw	v0,112(v0)
  455080:	00000000 	nop
  455084:	afc203ac 	sw	v0,940(s8)
  455088:	8fc203ac 	lw	v0,940(s8)
  45508c:	00000000 	nop
  455090:	afc201fc 	sw	v0,508(s8)
	u_char *esp_dst_keymat = inbound? st->st_esp.our_keymat : st->st_esp.peer_keymat;
  455094:	8fc203dc 	lw	v0,988(s8)
  455098:	00000000 	nop
  45509c:	10400008 	beqz	v0,4550c0 <setup_half_ipsec_sa+0x698>
  4550a0:	00000000 	nop
  4550a4:	8fc203d8 	lw	v0,984(s8)
  4550a8:	00000000 	nop
  4550ac:	8c42008c 	lw	v0,140(v0)
  4550b0:	00000000 	nop
  4550b4:	afc203b0 	sw	v0,944(s8)
  4550b8:	10000006 	b	4550d4 <setup_half_ipsec_sa+0x6ac>
  4550bc:	00000000 	nop
  4550c0:	8fc203d8 	lw	v0,984(s8)
  4550c4:	00000000 	nop
  4550c8:	8c420090 	lw	v0,144(v0)
  4550cc:	00000000 	nop
  4550d0:	afc203b0 	sw	v0,944(s8)
  4550d4:	8fc303b0 	lw	v1,944(s8)
  4550d8:	00000000 	nop
  4550dc:	afc301f8 	sw	v1,504(s8)

#if 0+MOVED_TO_alg_info_h
	struct esp_info {
	    u_int8_t transid;	/* negotiated ESP transform */
	    u_int16_t auth;	/* negotiated AUTH */

	    size_t enckeylen;	/* keylength for ESP transform */
	    size_t authkeylen;	/* keylength for AUTH */
	    u_int8_t encryptalg;
	    u_int8_t authalg;
	};
#endif

	const struct esp_info *ei;
	u_int16_t key_len;

	static const struct esp_info esp_info[] = {
	    { ESP_NULL, AUTH_ALGORITHM_HMAC_MD5,
		0, HMAC_MD5_KEY_LEN,
		SADB_EALG_NULL, SADB_AALG_MD5HMAC },
	    { ESP_NULL, AUTH_ALGORITHM_HMAC_SHA1,
		0, HMAC_SHA1_KEY_LEN,
		SADB_EALG_NULL, SADB_AALG_SHA1HMAC },

	    { ESP_DES, AUTH_ALGORITHM_NONE,
		DES_CBC_BLOCK_SIZE, 0,
		SADB_EALG_DESCBC, SADB_AALG_NONE },
	    { ESP_DES, AUTH_ALGORITHM_HMAC_MD5,
		DES_CBC_BLOCK_SIZE, HMAC_MD5_KEY_LEN,
		SADB_EALG_DESCBC, SADB_AALG_MD5HMAC },
	    { ESP_DES, AUTH_ALGORITHM_HMAC_SHA1,
		DES_CBC_BLOCK_SIZE,
		HMAC_SHA1_KEY_LEN, SADB_EALG_DESCBC, SADB_AALG_SHA1HMAC },

	    { ESP_3DES, AUTH_ALGORITHM_NONE,
		DES_CBC_BLOCK_SIZE * 3, 0,
		SADB_EALG_3DESCBC, SADB_AALG_NONE },
	    { ESP_3DES, AUTH_ALGORITHM_HMAC_MD5,
		DES_CBC_BLOCK_SIZE * 3, HMAC_MD5_KEY_LEN,
		SADB_EALG_3DESCBC, SADB_AALG_MD5HMAC },
	    { ESP_3DES, AUTH_ALGORITHM_HMAC_SHA1,
		DES_CBC_BLOCK_SIZE * 3, HMAC_SHA1_KEY_LEN,
		SADB_EALG_3DESCBC, SADB_AALG_SHA1HMAC },
	};

#ifdef NAT_TRAVERSAL
	u_int8_t natt_type = 0;
  4550e0:	a3c00200 	sb	zero,512(s8)
	u_int16_t natt_sport = 0, natt_dport = 0;
  4550e4:	a7c0020a 	sh	zero,522(s8)
  4550e8:	a7c0020c 	sh	zero,524(s8)
	ip_address natt_oa;

	if (st->nat_traversal & NAT_T_DETECTED) {
  4550ec:	8fc203d8 	lw	v0,984(s8)
  4550f0:	00000000 	nop
  4550f4:	8c430264 	lw	v1,612(v0)
  4550f8:	3c02c000 	lui	v0,0xc000
  4550fc:	00621024 	and	v0,v1,v0
  455100:	1040004e 	beqz	v0,45523c <setup_half_ipsec_sa+0x814>
  455104:	00000000 	nop
	    natt_type = (st->nat_traversal & NAT_T_WITH_PORT_FLOATING) ?
  455108:	8fc203d8 	lw	v0,984(s8)
  45510c:	00000000 	nop
  455110:	8c420264 	lw	v0,612(v0)
  455114:	00000000 	nop
  455118:	3042000c 	andi	v0,v0,0xc
  45511c:	10400005 	beqz	v0,455134 <setup_half_ipsec_sa+0x70c>
  455120:	00000000 	nop
  455124:	24020002 	li	v0,2
  455128:	a3c203b4 	sb	v0,948(s8)
  45512c:	10000003 	b	45513c <setup_half_ipsec_sa+0x714>
  455130:	00000000 	nop
  455134:	24030001 	li	v1,1
  455138:	a3c303b4 	sb	v1,948(s8)
  45513c:	93c203b4 	lbu	v0,948(s8)
  455140:	00000000 	nop
  455144:	a3c20200 	sb	v0,512(s8)
		ESPINUDP_WITH_NON_ESP : ESPINUDP_WITH_NON_IKE;
	    natt_sport = inbound? c->that.host_port : c->this.host_port;
  455148:	8fc203dc 	lw	v0,988(s8)
  45514c:	00000000 	nop
  455150:	10400008 	beqz	v0,455174 <setup_half_ipsec_sa+0x74c>
  455154:	00000000 	nop
  455158:	8fc20030 	lw	v0,48(s8)
  45515c:	00000000 	nop
  455160:	94420178 	lhu	v0,376(v0)
  455164:	00000000 	nop
  455168:	a7c203b6 	sh	v0,950(s8)
  45516c:	10000006 	b	455188 <setup_half_ipsec_sa+0x760>
  455170:	00000000 	nop
  455174:	8fc20030 	lw	v0,48(s8)
  455178:	00000000 	nop
  45517c:	944200c8 	lhu	v0,200(v0)
  455180:	00000000 	nop
  455184:	a7c203b6 	sh	v0,950(s8)
  455188:	97c303b6 	lhu	v1,950(s8)
  45518c:	00000000 	nop
  455190:	a7c3020a 	sh	v1,522(s8)
	    natt_dport = inbound? c->this.host_port : c->that.host_port;
  455194:	8fc203dc 	lw	v0,988(s8)
  455198:	00000000 	nop
  45519c:	10400008 	beqz	v0,4551c0 <setup_half_ipsec_sa+0x798>
  4551a0:	00000000 	nop
  4551a4:	8fc20030 	lw	v0,48(s8)
  4551a8:	00000000 	nop
  4551ac:	944200c8 	lhu	v0,200(v0)
  4551b0:	00000000 	nop
  4551b4:	a7c203b8 	sh	v0,952(s8)
  4551b8:	10000006 	b	4551d4 <setup_half_ipsec_sa+0x7ac>
  4551bc:	00000000 	nop
  4551c0:	8fc20030 	lw	v0,48(s8)
  4551c4:	00000000 	nop
  4551c8:	94420178 	lhu	v0,376(v0)
  4551cc:	00000000 	nop
  4551d0:	a7c203b8 	sh	v0,952(s8)
  4551d4:	97c203b8 	lhu	v0,952(s8)
  4551d8:	00000000 	nop
  4551dc:	a7c2020c 	sh	v0,524(s8)
	    natt_oa = st->nat_oa;
  4551e0:	8fc303d8 	lw	v1,984(s8)
  4551e4:	00000000 	nop
  4551e8:	8c620268 	lw	v0,616(v1)
  4551ec:	00000000 	nop
  4551f0:	afc20210 	sw	v0,528(s8)
  4551f4:	8c62026c 	lw	v0,620(v1)
  4551f8:	00000000 	nop
  4551fc:	afc20214 	sw	v0,532(s8)
  455200:	8c620270 	lw	v0,624(v1)
  455204:	00000000 	nop
  455208:	afc20218 	sw	v0,536(s8)
  45520c:	8c620274 	lw	v0,628(v1)
  455210:	00000000 	nop
  455214:	afc2021c 	sw	v0,540(s8)
  455218:	8c620278 	lw	v0,632(v1)
  45521c:	00000000 	nop
  455220:	afc20220 	sw	v0,544(s8)
  455224:	8c62027c 	lw	v0,636(v1)
  455228:	00000000 	nop
  45522c:	afc20224 	sw	v0,548(s8)
  455230:	8c620280 	lw	v0,640(v1)
  455234:	00000000 	nop
  455238:	afc20228 	sw	v0,552(s8)
	}
#endif

	for (ei = esp_info; ; ei++)
  45523c:	8f82802c 	lw	v0,-32724(gp)
  455240:	00000000 	nop
  455244:	244209b8 	addiu	v0,v0,2488
  455248:	00000000 	nop
  45524c:	afc20204 	sw	v0,516(s8)
	{
	    if (ei == &esp_info[elemsof(esp_info)])
  455250:	8fc30204 	lw	v1,516(s8)
  455254:	8f82802c 	lw	v0,-32724(gp)
  455258:	00000000 	nop
  45525c:	24420a38 	addiu	v0,v0,2616
  455260:	14620039 	bne	v1,v0,455348 <setup_half_ipsec_sa+0x920>
  455264:	00000000 	nop
	    {
		/* Check for additional kernel alg */
#ifndef NO_KERNEL_ALG
		if ((ei=kernel_alg_esp_info(st->st_esp.attrs.transid, 
					st->st_esp.attrs.auth))!=NULL) {
  455268:	8fc203d8 	lw	v0,984(s8)
  45526c:	00000000 	nop
  455270:	9043006c 	lbu	v1,108(v0)
  455274:	8fc203d8 	lw	v0,984(s8)
  455278:	00000000 	nop
  45527c:	9442007e 	lhu	v0,126(v0)
  455280:	00602021 	move	a0,v1
  455284:	00402821 	move	a1,v0
  455288:	8f998294 	lw	t9,-32108(gp)
  45528c:	00000000 	nop
  455290:	0320f809 	jalr	t9
  455294:	00000000 	nop
  455298:	8fdc0028 	lw	gp,40(s8)
  45529c:	afc20204 	sw	v0,516(s8)
  4552a0:	8fc20204 	lw	v0,516(s8)
  4552a4:	00000000 	nop
  4552a8:	afc20204 	sw	v0,516(s8)
  4552ac:	10400003 	beqz	v0,4552bc <setup_half_ipsec_sa+0x894>
  4552b0:	00000000 	nop
			break;
  4552b4:	1000003e 	b	4553b0 <setup_half_ipsec_sa+0x988>
  4552b8:	00000000 	nop
		}
#endif

		/* note: enum_show may use a static buffer, so two
		 * calls in one printf would be a mistake.
		 * enum_name does the same job, without a static buffer,
		 * assuming the name will be found.
		 */
		loglog(RC_LOG_SERIOUS, "ESP transform %s / auth %s not implemented yet",
  4552bc:	8fc203d8 	lw	v0,984(s8)
  4552c0:	00000000 	nop
  4552c4:	9042006c 	lbu	v0,108(v0)
  4552c8:	8f848bf8 	lw	a0,-29704(gp)
  4552cc:	00402821 	move	a1,v0
  4552d0:	8f9984bc 	lw	t9,-31556(gp)
  4552d4:	00000000 	nop
  4552d8:	0320f809 	jalr	t9
  4552dc:	00000000 	nop
  4552e0:	8fdc0028 	lw	gp,40(s8)
  4552e4:	00408021 	move	s0,v0
  4552e8:	8fc203d8 	lw	v0,984(s8)
  4552ec:	00000000 	nop
  4552f0:	9442007e 	lhu	v0,126(v0)
  4552f4:	8f848424 	lw	a0,-31708(gp)
  4552f8:	00402821 	move	a1,v0
  4552fc:	8f9984bc 	lw	t9,-31556(gp)
  455300:	00000000 	nop
  455304:	0320f809 	jalr	t9
  455308:	00000000 	nop
  45530c:	8fdc0028 	lw	gp,40(s8)
  455310:	24040003 	li	a0,3
  455314:	8f85802c 	lw	a1,-32724(gp)
  455318:	00000000 	nop
  45531c:	24a50ad0 	addiu	a1,a1,2768
  455320:	02003021 	move	a2,s0
  455324:	00403821 	move	a3,v0
  455328:	8f998c48 	lw	t9,-29624(gp)
  45532c:	00000000 	nop
  455330:	0320f809 	jalr	t9
  455334:	00000000 	nop
  455338:	8fdc0028 	lw	gp,40(s8)
  45533c:	00000000 	nop
		    enum_name(&esp_transformid_names, st->st_esp.attrs.transid),
		    enum_name(&auth_alg_names, st->st_esp.attrs.auth));
		goto fail;
  455340:	10000492 	b	45658c <setup_half_ipsec_sa+0x1b64>
  455344:	00000000 	nop
	    }

	    if (st->st_esp.attrs.transid == ei->transid
	    && st->st_esp.attrs.auth == ei->auth)
  455348:	8fc203d8 	lw	v0,984(s8)
  45534c:	00000000 	nop
  455350:	9043006c 	lbu	v1,108(v0)
  455354:	8fc20204 	lw	v0,516(s8)
  455358:	00000000 	nop
  45535c:	90420000 	lbu	v0,0(v0)
  455360:	00000000 	nop
  455364:	1462000c 	bne	v1,v0,455398 <setup_half_ipsec_sa+0x970>
  455368:	00000000 	nop
  45536c:	8fc203d8 	lw	v0,984(s8)
  455370:	00000000 	nop
  455374:	9443007e 	lhu	v1,126(v0)
  455378:	8fc20204 	lw	v0,516(s8)
  45537c:	00000000 	nop
  455380:	94420002 	lhu	v0,2(v0)
  455384:	00000000 	nop
  455388:	14620003 	bne	v1,v0,455398 <setup_half_ipsec_sa+0x970>
  45538c:	00000000 	nop
		break;
  455390:	10000007 	b	4553b0 <setup_half_ipsec_sa+0x988>
  455394:	00000000 	nop
  455398:	8fc20204 	lw	v0,516(s8)
  45539c:	00000000 	nop
  4553a0:	24420010 	addiu	v0,v0,16
  4553a4:	afc20204 	sw	v0,516(s8)
  4553a8:	1000ffa9 	b	455250 <setup_half_ipsec_sa+0x828>
  4553ac:	00000000 	nop
	}

	key_len = st->st_esp.attrs.key_len/8;
  4553b0:	8fc203d8 	lw	v0,984(s8)
  4553b4:	00000000 	nop
  4553b8:	94420080 	lhu	v0,128(v0)
  4553bc:	00000000 	nop
  4553c0:	000210c2 	srl	v0,v0,0x3
  4553c4:	a7c20208 	sh	v0,520(s8)
	if (key_len) {
  4553c8:	97c20208 	lhu	v0,520(s8)
  4553cc:	00000000 	nop
  4553d0:	10400027 	beqz	v0,455470 <setup_half_ipsec_sa+0xa48>
  4553d4:	00000000 	nop
		/* XXX: must change to check valid _range_ key_len */
		if (key_len > ei->enckeylen) {
  4553d8:	97c30208 	lhu	v1,520(s8)
  4553dc:	8fc20204 	lw	v0,516(s8)
  4553e0:	00000000 	nop
  4553e4:	8c420004 	lw	v0,4(v0)
  4553e8:	00000000 	nop
  4553ec:	0043102b 	sltu	v0,v0,v1
  4553f0:	10400024 	beqz	v0,455484 <setup_half_ipsec_sa+0xa5c>
  4553f4:	00000000 	nop
			loglog(RC_LOG_SERIOUS, "ESP transform %s passed key_len=%d > %d",
  4553f8:	8fc203d8 	lw	v0,984(s8)
  4553fc:	00000000 	nop
  455400:	9042006c 	lbu	v0,108(v0)
  455404:	8f848bf8 	lw	a0,-29704(gp)
  455408:	00402821 	move	a1,v0
  45540c:	8f9984bc 	lw	t9,-31556(gp)
  455410:	00000000 	nop
  455414:	0320f809 	jalr	t9
  455418:	00000000 	nop
  45541c:	8fdc0028 	lw	gp,40(s8)
  455420:	00401821 	move	v1,v0
  455424:	97c70208 	lhu	a3,520(s8)
  455428:	8fc20204 	lw	v0,516(s8)
  45542c:	00000000 	nop
  455430:	8c420004 	lw	v0,4(v0)
  455434:	00000000 	nop
  455438:	afa20010 	sw	v0,16(sp)
  45543c:	24040003 	li	a0,3
  455440:	8f85802c 	lw	a1,-32724(gp)
  455444:	00000000 	nop
  455448:	24a50b00 	addiu	a1,a1,2816
  45544c:	00603021 	move	a2,v1
  455450:	8f998c48 	lw	t9,-29624(gp)
  455454:	00000000 	nop
  455458:	0320f809 	jalr	t9
  45545c:	00000000 	nop
  455460:	8fdc0028 	lw	gp,40(s8)
  455464:	00000000 	nop
			enum_name(&esp_transformid_names, st->st_esp.attrs.transid),
			(int)key_len, (int)ei->enckeylen);
			goto fail;
  455468:	10000448 	b	45658c <setup_half_ipsec_sa+0x1b64>
  45546c:	00000000 	nop
		}
	} else {
		key_len = ei->enckeylen;
  455470:	8fc20204 	lw	v0,516(s8)
  455474:	00000000 	nop
  455478:	94420006 	lhu	v0,6(v0)
  45547c:	00000000 	nop
  455480:	a7c20208 	sh	v0,520(s8)
	}
	/* Grrrrr.... f*cking 7 bits jurassic algos  */

	/* 168 bits in kernel, need 192 bits for keymat_len */
	if (ei->transid == ESP_3DES && key_len == 21) 
  455484:	8fc20204 	lw	v0,516(s8)
  455488:	00000000 	nop
  45548c:	90430000 	lbu	v1,0(v0)
  455490:	24020003 	li	v0,3
  455494:	14620007 	bne	v1,v0,4554b4 <setup_half_ipsec_sa+0xa8c>
  455498:	00000000 	nop
  45549c:	97c30208 	lhu	v1,520(s8)
  4554a0:	24020015 	li	v0,21
  4554a4:	14620003 	bne	v1,v0,4554b4 <setup_half_ipsec_sa+0xa8c>
  4554a8:	00000000 	nop
		key_len = 24;
  4554ac:	24020018 	li	v0,24
  4554b0:	a7c20208 	sh	v0,520(s8)

	/* 56 bits in kernel, need 64 bits for keymat_len */
	if (ei->transid == ESP_DES && key_len == 7) 
  4554b4:	8fc20204 	lw	v0,516(s8)
  4554b8:	00000000 	nop
  4554bc:	90430000 	lbu	v1,0(v0)
  4554c0:	24020002 	li	v0,2
  4554c4:	14620007 	bne	v1,v0,4554e4 <setup_half_ipsec_sa+0xabc>
  4554c8:	00000000 	nop
  4554cc:	97c30208 	lhu	v1,520(s8)
  4554d0:	24020007 	li	v0,7
  4554d4:	14620003 	bne	v1,v0,4554e4 <setup_half_ipsec_sa+0xabc>
  4554d8:	00000000 	nop
		key_len = 8;
  4554dc:	24020008 	li	v0,8
  4554e0:	a7c20208 	sh	v0,520(s8)

	/* divide up keying material */
	DBG(DBG_KLIPS|DBG_CONTROL|DBG_PARSING, 
  4554e4:	8f8284f8 	lw	v0,-31496(gp)
  4554e8:	00000000 	nop
  4554ec:	8c420000 	lw	v0,0(v0)
  4554f0:	00000000 	nop
  4554f4:	30420054 	andi	v0,v0,0x54
  4554f8:	1040001e 	beqz	v0,455574 <setup_half_ipsec_sa+0xb4c>
  4554fc:	00000000 	nop
  455500:	8fc203d8 	lw	v0,984(s8)
  455504:	00000000 	nop
  455508:	94440088 	lhu	a0,136(v0)
  45550c:	97c30208 	lhu	v1,520(s8)
  455510:	8fc20204 	lw	v0,516(s8)
  455514:	00000000 	nop
  455518:	8c420008 	lw	v0,8(v0)
  45551c:	00000000 	nop
  455520:	00621021 	addu	v0,v1,v0
  455524:	10820013 	beq	a0,v0,455574 <setup_half_ipsec_sa+0xb4c>
  455528:	00000000 	nop
  45552c:	8fc203d8 	lw	v0,984(s8)
  455530:	00000000 	nop
  455534:	94420088 	lhu	v0,136(v0)
  455538:	97c30208 	lhu	v1,520(s8)
  45553c:	8f84802c 	lw	a0,-32724(gp)
  455540:	00000000 	nop
  455544:	24840b28 	addiu	a0,a0,2856
  455548:	00402821 	move	a1,v0
  45554c:	00603021 	move	a2,v1
  455550:	8fc20204 	lw	v0,516(s8)
  455554:	00000000 	nop
  455558:	8c470008 	lw	a3,8(v0)
  45555c:	8f9983b8 	lw	t9,-31816(gp)
  455560:	00000000 	nop
  455564:	0320f809 	jalr	t9
  455568:	00000000 	nop
  45556c:	8fdc0028 	lw	gp,40(s8)
  455570:	00000000 	nop
		if(st->st_esp.keymat_len != key_len + ei->authkeylen)
			DBG_log("keymat_len=%d key_len=%d authkeylen=%d",
				st->st_esp.keymat_len, (int)key_len, (int)ei->authkeylen);
	);
	passert(st->st_esp.keymat_len == key_len + ei->authkeylen);
  455574:	8fc203d8 	lw	v0,984(s8)
  455578:	00000000 	nop
  45557c:	94440088 	lhu	a0,136(v0)
  455580:	97c30208 	lhu	v1,520(s8)
  455584:	8fc20204 	lw	v0,516(s8)
  455588:	00000000 	nop
  45558c:	8c420008 	lw	v0,8(v0)
  455590:	00000000 	nop
  455594:	00621021 	addu	v0,v1,v0
  455598:	1082000e 	beq	a0,v0,4555d4 <setup_half_ipsec_sa+0xbac>
  45559c:	00000000 	nop
  4555a0:	8f84802c 	lw	a0,-32724(gp)
  4555a4:	00000000 	nop
  4555a8:	24840b50 	addiu	a0,a0,2896
  4555ac:	8f85802c 	lw	a1,-32724(gp)
  4555b0:	00000000 	nop
  4555b4:	24a5fb28 	addiu	a1,a1,-1240
  4555b8:	240608a8 	li	a2,2216
  4555bc:	8f998bb8 	lw	t9,-29768(gp)
  4555c0:	00000000 	nop
  4555c4:	0320f809 	jalr	t9
  4555c8:	00000000 	nop
  4555cc:	8fdc0028 	lw	gp,40(s8)
  4555d0:	00000000 	nop

	set_text_said(text_said, &dst, esp_spi, SA_ESP);
  4555d4:	27c40190 	addiu	a0,s8,400
  4555d8:	27c50058 	addiu	a1,s8,88
  4555dc:	8fc601fc 	lw	a2,508(s8)
  4555e0:	24070032 	li	a3,50
  4555e4:	8f998038 	lw	t9,-32712(gp)
  4555e8:	00000000 	nop
  4555ec:	273914c8 	addiu	t9,t9,5320
  4555f0:	00000000 	nop
  4555f4:	0320f809 	jalr	t9
  4555f8:	00000000 	nop
  4555fc:	8fdc0028 	lw	gp,40(s8)
  455600:	00000000 	nop

	if (!(pfkey_msg_start(SADB_ADD, SADB_SATYPE_ESP
	    , "pfkey_msg_hdr Add ESP SA", text_said, extensions)

	&& pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
		, SADB_EXT_SA
		, esp_spi	/* in network order */
		, REPLAY_WINDOW, SADB_SASTATE_MATURE, ei->authalg, ei->encryptalg, 0)
	    , "pfkey_sa Add ESP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_SRC, &src
	    , "pfkey_addr_s Add ESP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_DST, &dst
	    , "pfkey_addr_d Add ESP SA", text_said, extensions)

	&& (ei->authkeylen == 0
	    || pfkey_build(pfkey_key_build(&extensions[SADB_EXT_KEY_AUTH]
		    , SADB_EXT_KEY_AUTH, ei->authkeylen * IPSEC_PFKEYv2_ALIGN
		    , esp_dst_keymat + key_len)
		, "pfkey_key_a Add ESP SA", text_said, extensions))

	&& (key_len == 0
	    || pfkey_build(pfkey_key_build(&extensions[SADB_EXT_KEY_ENCRYPT]
		    , SADB_EXT_KEY_ENCRYPT, key_len * IPSEC_PFKEYv2_ALIGN
		    , esp_dst_keymat)
		, "pfkey_key_a Add ESP SA", text_said, extensions))

#ifdef NAT_TRAVERSAL
	&& (natt_type == 0
		|| pfkey_build(pfkey_x_nat_t_type_build(
			&extensions[SADB_X_EXT_NAT_T_TYPE], natt_type),
			"pfkey_nat_t_type Add ESP SA", text_said, extensions))
	&& (natt_sport == 0
		|| pfkey_build(pfkey_x_nat_t_port_build(
			&extensions[SADB_X_EXT_NAT_T_SPORT], SADB_X_EXT_NAT_T_SPORT,
			natt_sport), "pfkey_nat_t_sport Add ESP SA", text_said,
			extensions))
	&& (natt_dport == 0
		|| pfkey_build(pfkey_x_nat_t_port_build(
			&extensions[SADB_X_EXT_NAT_T_DPORT], SADB_X_EXT_NAT_T_DPORT,
			natt_dport), "pfkey_nat_t_dport Add ESP SA", text_said,
			extensions))
	&& (natt_type ==0 || isanyaddr(&natt_oa)
		|| pfkeyext_address(SADB_X_EXT_NAT_T_OA, &natt_oa
	    , "pfkey_nat_t_oa Add ESP SA", text_said, extensions))
#endif

	&& finish_pfkey_msg(extensions, "Add ESP SA", text_said, NULL)))
  455604:	27c20110 	addiu	v0,s8,272
  455608:	afa20010 	sw	v0,16(sp)
  45560c:	24040003 	li	a0,3
  455610:	24050003 	li	a1,3
  455614:	8f86802c 	lw	a2,-32724(gp)
  455618:	00000000 	nop
  45561c:	24c60b84 	addiu	a2,a2,2948
  455620:	27c70190 	addiu	a3,s8,400
  455624:	8f998038 	lw	t9,-32712(gp)
  455628:	00000000 	nop
  45562c:	27391628 	addiu	t9,t9,5672
  455630:	00000000 	nop
  455634:	0320f809 	jalr	t9
  455638:	00000000 	nop
  45563c:	8fdc0028 	lw	gp,40(s8)
  455640:	104003d2 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455644:	00000000 	nop
  455648:	27c20110 	addiu	v0,s8,272
  45564c:	24430004 	addiu	v1,v0,4
  455650:	24020001 	li	v0,1
  455654:	afa20010 	sw	v0,16(sp)
  455658:	8fc20204 	lw	v0,516(s8)
  45565c:	00000000 	nop
  455660:	9042000d 	lbu	v0,13(v0)
  455664:	00000000 	nop
  455668:	afa20014 	sw	v0,20(sp)
  45566c:	8fc20204 	lw	v0,516(s8)
  455670:	00000000 	nop
  455674:	9042000c 	lbu	v0,12(v0)
  455678:	00000000 	nop
  45567c:	afa20018 	sw	v0,24(sp)
  455680:	afa0001c 	sw	zero,28(sp)
  455684:	00602021 	move	a0,v1
  455688:	24050001 	li	a1,1
  45568c:	8fc601fc 	lw	a2,508(s8)
  455690:	24070040 	li	a3,64
  455694:	8f998804 	lw	t9,-30716(gp)
  455698:	00000000 	nop
  45569c:	0320f809 	jalr	t9
  4556a0:	00000000 	nop
  4556a4:	8fdc0028 	lw	gp,40(s8)
  4556a8:	00402021 	move	a0,v0
  4556ac:	8f85802c 	lw	a1,-32724(gp)
  4556b0:	00000000 	nop
  4556b4:	24a50ba0 	addiu	a1,a1,2976
  4556b8:	27c60190 	addiu	a2,s8,400
  4556bc:	27c70110 	addiu	a3,s8,272
  4556c0:	8f998038 	lw	t9,-32712(gp)
  4556c4:	00000000 	nop
  4556c8:	27391564 	addiu	t9,t9,5476
  4556cc:	00000000 	nop
  4556d0:	0320f809 	jalr	t9
  4556d4:	00000000 	nop
  4556d8:	8fdc0028 	lw	gp,40(s8)
  4556dc:	104003ab 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  4556e0:	00000000 	nop
  4556e4:	27c20110 	addiu	v0,s8,272
  4556e8:	afa20010 	sw	v0,16(sp)
  4556ec:	24040005 	li	a0,5
  4556f0:	27c50038 	addiu	a1,s8,56
  4556f4:	8f86802c 	lw	a2,-32724(gp)
  4556f8:	00000000 	nop
  4556fc:	24c60bb4 	addiu	a2,a2,2996
  455700:	27c70190 	addiu	a3,s8,400
  455704:	8f998038 	lw	t9,-32712(gp)
  455708:	00000000 	nop
  45570c:	27391734 	addiu	t9,t9,5940
  455710:	00000000 	nop
  455714:	0320f809 	jalr	t9
  455718:	00000000 	nop
  45571c:	8fdc0028 	lw	gp,40(s8)
  455720:	1040039a 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455724:	00000000 	nop
  455728:	27c20110 	addiu	v0,s8,272
  45572c:	afa20010 	sw	v0,16(sp)
  455730:	24040006 	li	a0,6
  455734:	27c50058 	addiu	a1,s8,88
  455738:	8f86802c 	lw	a2,-32724(gp)
  45573c:	00000000 	nop
  455740:	24c60bcc 	addiu	a2,a2,3020
  455744:	27c70190 	addiu	a3,s8,400
  455748:	8f998038 	lw	t9,-32712(gp)
  45574c:	00000000 	nop
  455750:	27391734 	addiu	t9,t9,5940
  455754:	00000000 	nop
  455758:	0320f809 	jalr	t9
  45575c:	00000000 	nop
  455760:	8fdc0028 	lw	gp,40(s8)
  455764:	10400389 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455768:	00000000 	nop
  45576c:	8fc20204 	lw	v0,516(s8)
  455770:	00000000 	nop
  455774:	8c420008 	lw	v0,8(v0)
  455778:	00000000 	nop
  45577c:	10400025 	beqz	v0,455814 <setup_half_ipsec_sa+0xdec>
  455780:	00000000 	nop
  455784:	27c20110 	addiu	v0,s8,272
  455788:	24440020 	addiu	a0,v0,32
  45578c:	8fc20204 	lw	v0,516(s8)
  455790:	00000000 	nop
  455794:	8c420008 	lw	v0,8(v0)
  455798:	00000000 	nop
  45579c:	000210c0 	sll	v0,v0,0x3
  4557a0:	3046ffff 	andi	a2,v0,0xffff
  4557a4:	97c30208 	lhu	v1,520(s8)
  4557a8:	8fc201f8 	lw	v0,504(s8)
  4557ac:	00000000 	nop
  4557b0:	00621021 	addu	v0,v1,v0
  4557b4:	24050008 	li	a1,8
  4557b8:	00403821 	move	a3,v0
  4557bc:	8f9982dc 	lw	t9,-32036(gp)
  4557c0:	00000000 	nop
  4557c4:	0320f809 	jalr	t9
  4557c8:	00000000 	nop
  4557cc:	8fdc0028 	lw	gp,40(s8)
  4557d0:	00402021 	move	a0,v0
  4557d4:	8f85802c 	lw	a1,-32724(gp)
  4557d8:	00000000 	nop
  4557dc:	24a50be4 	addiu	a1,a1,3044
  4557e0:	27c60190 	addiu	a2,s8,400
  4557e4:	27c70110 	addiu	a3,s8,272
  4557e8:	8f998038 	lw	t9,-32712(gp)
  4557ec:	00000000 	nop
  4557f0:	27391564 	addiu	t9,t9,5476
  4557f4:	00000000 	nop
  4557f8:	0320f809 	jalr	t9
  4557fc:	00000000 	nop
  455800:	8fdc0028 	lw	gp,40(s8)
  455804:	14400003 	bnez	v0,455814 <setup_half_ipsec_sa+0xdec>
  455808:	00000000 	nop
  45580c:	1000035f 	b	45658c <setup_half_ipsec_sa+0x1b64>
  455810:	00000000 	nop
  455814:	97c20208 	lhu	v0,520(s8)
  455818:	00000000 	nop
  45581c:	10400021 	beqz	v0,4558a4 <setup_half_ipsec_sa+0xe7c>
  455820:	00000000 	nop
  455824:	27c20110 	addiu	v0,s8,272
  455828:	24430024 	addiu	v1,v0,36
  45582c:	97c20208 	lhu	v0,520(s8)
  455830:	00000000 	nop
  455834:	000210c0 	sll	v0,v0,0x3
  455838:	3042ffff 	andi	v0,v0,0xffff
  45583c:	00602021 	move	a0,v1
  455840:	24050009 	li	a1,9
  455844:	00403021 	move	a2,v0
  455848:	8fc701f8 	lw	a3,504(s8)
  45584c:	8f9982dc 	lw	t9,-32036(gp)
  455850:	00000000 	nop
  455854:	0320f809 	jalr	t9
  455858:	00000000 	nop
  45585c:	8fdc0028 	lw	gp,40(s8)
  455860:	00402021 	move	a0,v0
  455864:	8f85802c 	lw	a1,-32724(gp)
  455868:	00000000 	nop
  45586c:	24a50be4 	addiu	a1,a1,3044
  455870:	27c60190 	addiu	a2,s8,400
  455874:	27c70110 	addiu	a3,s8,272
  455878:	8f998038 	lw	t9,-32712(gp)
  45587c:	00000000 	nop
  455880:	27391564 	addiu	t9,t9,5476
  455884:	00000000 	nop
  455888:	0320f809 	jalr	t9
  45588c:	00000000 	nop
  455890:	8fdc0028 	lw	gp,40(s8)
  455894:	14400003 	bnez	v0,4558a4 <setup_half_ipsec_sa+0xe7c>
  455898:	00000000 	nop
  45589c:	1000033b 	b	45658c <setup_half_ipsec_sa+0x1b64>
  4558a0:	00000000 	nop
  4558a4:	93c20200 	lbu	v0,512(s8)
  4558a8:	00000000 	nop
  4558ac:	1040001c 	beqz	v0,455920 <setup_half_ipsec_sa+0xef8>
  4558b0:	00000000 	nop
  4558b4:	27c20110 	addiu	v0,s8,272
  4558b8:	2442006c 	addiu	v0,v0,108
  4558bc:	93c30200 	lbu	v1,512(s8)
  4558c0:	00402021 	move	a0,v0
  4558c4:	00602821 	move	a1,v1
  4558c8:	8f998920 	lw	t9,-30432(gp)
  4558cc:	00000000 	nop
  4558d0:	0320f809 	jalr	t9
  4558d4:	00000000 	nop
  4558d8:	8fdc0028 	lw	gp,40(s8)
  4558dc:	00402021 	move	a0,v0
  4558e0:	8f85802c 	lw	a1,-32724(gp)
  4558e4:	00000000 	nop
  4558e8:	24a50bfc 	addiu	a1,a1,3068
  4558ec:	27c60190 	addiu	a2,s8,400
  4558f0:	27c70110 	addiu	a3,s8,272
  4558f4:	8f998038 	lw	t9,-32712(gp)
  4558f8:	00000000 	nop
  4558fc:	27391564 	addiu	t9,t9,5476
  455900:	00000000 	nop
  455904:	0320f809 	jalr	t9
  455908:	00000000 	nop
  45590c:	8fdc0028 	lw	gp,40(s8)
  455910:	14400003 	bnez	v0,455920 <setup_half_ipsec_sa+0xef8>
  455914:	00000000 	nop
  455918:	1000031c 	b	45658c <setup_half_ipsec_sa+0x1b64>
  45591c:	00000000 	nop
  455920:	97c2020a 	lhu	v0,522(s8)
  455924:	00000000 	nop
  455928:	1040001d 	beqz	v0,4559a0 <setup_half_ipsec_sa+0xf78>
  45592c:	00000000 	nop
  455930:	27c20110 	addiu	v0,s8,272
  455934:	24420070 	addiu	v0,v0,112
  455938:	97c3020a 	lhu	v1,522(s8)
  45593c:	00402021 	move	a0,v0
  455940:	2405001c 	li	a1,28
  455944:	00603021 	move	a2,v1
  455948:	8f9989ec 	lw	t9,-30228(gp)
  45594c:	00000000 	nop
  455950:	0320f809 	jalr	t9
  455954:	00000000 	nop
  455958:	8fdc0028 	lw	gp,40(s8)
  45595c:	00402021 	move	a0,v0
  455960:	8f85802c 	lw	a1,-32724(gp)
  455964:	00000000 	nop
  455968:	24a50c18 	addiu	a1,a1,3096
  45596c:	27c60190 	addiu	a2,s8,400
  455970:	27c70110 	addiu	a3,s8,272
  455974:	8f998038 	lw	t9,-32712(gp)
  455978:	00000000 	nop
  45597c:	27391564 	addiu	t9,t9,5476
  455980:	00000000 	nop
  455984:	0320f809 	jalr	t9
  455988:	00000000 	nop
  45598c:	8fdc0028 	lw	gp,40(s8)
  455990:	14400003 	bnez	v0,4559a0 <setup_half_ipsec_sa+0xf78>
  455994:	00000000 	nop
  455998:	100002fc 	b	45658c <setup_half_ipsec_sa+0x1b64>
  45599c:	00000000 	nop
  4559a0:	97c2020c 	lhu	v0,524(s8)
  4559a4:	00000000 	nop
  4559a8:	1040001d 	beqz	v0,455a20 <setup_half_ipsec_sa+0xff8>
  4559ac:	00000000 	nop
  4559b0:	27c20110 	addiu	v0,s8,272
  4559b4:	24420074 	addiu	v0,v0,116
  4559b8:	97c3020c 	lhu	v1,524(s8)
  4559bc:	00402021 	move	a0,v0
  4559c0:	2405001d 	li	a1,29
  4559c4:	00603021 	move	a2,v1
  4559c8:	8f9989ec 	lw	t9,-30228(gp)
  4559cc:	00000000 	nop
  4559d0:	0320f809 	jalr	t9
  4559d4:	00000000 	nop
  4559d8:	8fdc0028 	lw	gp,40(s8)
  4559dc:	00402021 	move	a0,v0
  4559e0:	8f85802c 	lw	a1,-32724(gp)
  4559e4:	00000000 	nop
  4559e8:	24a50c38 	addiu	a1,a1,3128
  4559ec:	27c60190 	addiu	a2,s8,400
  4559f0:	27c70110 	addiu	a3,s8,272
  4559f4:	8f998038 	lw	t9,-32712(gp)
  4559f8:	00000000 	nop
  4559fc:	27391564 	addiu	t9,t9,5476
  455a00:	00000000 	nop
  455a04:	0320f809 	jalr	t9
  455a08:	00000000 	nop
  455a0c:	8fdc0028 	lw	gp,40(s8)
  455a10:	14400003 	bnez	v0,455a20 <setup_half_ipsec_sa+0xff8>
  455a14:	00000000 	nop
  455a18:	100002dc 	b	45658c <setup_half_ipsec_sa+0x1b64>
  455a1c:	00000000 	nop
  455a20:	93c20200 	lbu	v0,512(s8)
  455a24:	00000000 	nop
  455a28:	1040001c 	beqz	v0,455a9c <setup_half_ipsec_sa+0x1074>
  455a2c:	00000000 	nop
  455a30:	27c40210 	addiu	a0,s8,528
  455a34:	8f998628 	lw	t9,-31192(gp)
  455a38:	00000000 	nop
  455a3c:	0320f809 	jalr	t9
  455a40:	00000000 	nop
  455a44:	8fdc0028 	lw	gp,40(s8)
  455a48:	14400014 	bnez	v0,455a9c <setup_half_ipsec_sa+0x1074>
  455a4c:	00000000 	nop
  455a50:	27c20110 	addiu	v0,s8,272
  455a54:	afa20010 	sw	v0,16(sp)
  455a58:	2404001e 	li	a0,30
  455a5c:	27c50210 	addiu	a1,s8,528
  455a60:	8f86802c 	lw	a2,-32724(gp)
  455a64:	00000000 	nop
  455a68:	24c60c58 	addiu	a2,a2,3160
  455a6c:	27c70190 	addiu	a3,s8,400
  455a70:	8f998038 	lw	t9,-32712(gp)
  455a74:	00000000 	nop
  455a78:	27391734 	addiu	t9,t9,5940
  455a7c:	00000000 	nop
  455a80:	0320f809 	jalr	t9
  455a84:	00000000 	nop
  455a88:	8fdc0028 	lw	gp,40(s8)
  455a8c:	14400003 	bnez	v0,455a9c <setup_half_ipsec_sa+0x1074>
  455a90:	00000000 	nop
  455a94:	100002bd 	b	45658c <setup_half_ipsec_sa+0x1b64>
  455a98:	00000000 	nop
  455a9c:	27c40110 	addiu	a0,s8,272
  455aa0:	8f85802c 	lw	a1,-32724(gp)
  455aa4:	00000000 	nop
  455aa8:	24a50c74 	addiu	a1,a1,3188
  455aac:	27c60190 	addiu	a2,s8,400
  455ab0:	00003821 	move	a3,zero
  455ab4:	8f998038 	lw	t9,-32712(gp)
  455ab8:	00000000 	nop
  455abc:	27391940 	addiu	t9,t9,6464
  455ac0:	00000000 	nop
  455ac4:	0320f809 	jalr	t9
  455ac8:	00000000 	nop
  455acc:	8fdc0028 	lw	gp,40(s8)
  455ad0:	14400003 	bnez	v0,455ae0 <setup_half_ipsec_sa+0x10b8>
  455ad4:	00000000 	nop
  455ad8:	100002ac 	b	45658c <setup_half_ipsec_sa+0x1b64>
  455adc:	00000000 	nop

	    goto fail;

	initsaid(&dst, esp_spi, SA_ESP, said_next);
  455ae0:	27c40058 	addiu	a0,s8,88
  455ae4:	8fc501fc 	lw	a1,508(s8)
  455ae8:	24060032 	li	a2,50
  455aec:	8fc70108 	lw	a3,264(s8)
  455af0:	8f99817c 	lw	t9,-32388(gp)
  455af4:	00000000 	nop
  455af8:	0320f809 	jalr	t9
  455afc:	00000000 	nop
  455b00:	8fdc0028 	lw	gp,40(s8)
  455b04:	00000000 	nop
	said_next++;
  455b08:	8fc20108 	lw	v0,264(s8)
  455b0c:	00000000 	nop
  455b10:	24420024 	addiu	v0,v0,36
  455b14:	afc20108 	sw	v0,264(s8)
    }

    /* set up IPCOMP SA, if any */

    if (st->st_ipcomp.present)
  455b18:	8fc203d8 	lw	v0,984(s8)
  455b1c:	00000000 	nop
  455b20:	8c420094 	lw	v0,148(v0)
  455b24:	00000000 	nop
  455b28:	104000b2 	beqz	v0,455df4 <setup_half_ipsec_sa+0x13cc>
  455b2c:	00000000 	nop
    {
	ipsec_spi_t ipcomp_spi = inbound? st->st_ipcomp.our_spi : st->st_ipcomp.attrs.spi;
  455b30:	8fc203dc 	lw	v0,988(s8)
  455b34:	00000000 	nop
  455b38:	10400008 	beqz	v0,455b5c <setup_half_ipsec_sa+0x1134>
  455b3c:	00000000 	nop
  455b40:	8fc203d8 	lw	v0,984(s8)
  455b44:	00000000 	nop
  455b48:	8c4200b0 	lw	v0,176(v0)
  455b4c:	00000000 	nop
  455b50:	afc203c4 	sw	v0,964(s8)
  455b54:	10000006 	b	455b70 <setup_half_ipsec_sa+0x1148>
  455b58:	00000000 	nop
  455b5c:	8fc203d8 	lw	v0,984(s8)
  455b60:	00000000 	nop
  455b64:	8c42009c 	lw	v0,156(v0)
  455b68:	00000000 	nop
  455b6c:	afc203c4 	sw	v0,964(s8)
  455b70:	8fc303c4 	lw	v1,964(s8)
  455b74:	00000000 	nop
  455b78:	afc30204 	sw	v1,516(s8)
	u_int8_t compalg;

	switch (st->st_ipcomp.attrs.transid)
  455b7c:	8fc203d8 	lw	v0,984(s8)
  455b80:	00000000 	nop
  455b84:	90430098 	lbu	v1,152(v0)
  455b88:	24020002 	li	v0,2
  455b8c:	10620018 	beq	v1,v0,455bf0 <setup_half_ipsec_sa+0x11c8>
  455b90:	00000000 	nop
	{
	    case IPCOMP_DEFLATE:
		compalg = SADB_X_CALG_DEFLATE;
		break;

	    default:
		loglog(RC_LOG_SERIOUS, "IPCOMP transform %s not implemented",
  455b94:	8fc203d8 	lw	v0,984(s8)
  455b98:	00000000 	nop
  455b9c:	90420098 	lbu	v0,152(v0)
  455ba0:	8f8480d4 	lw	a0,-32556(gp)
  455ba4:	00402821 	move	a1,v0
  455ba8:	8f9984bc 	lw	t9,-31556(gp)
  455bac:	00000000 	nop
  455bb0:	0320f809 	jalr	t9
  455bb4:	00000000 	nop
  455bb8:	8fdc0028 	lw	gp,40(s8)
  455bbc:	24040003 	li	a0,3
  455bc0:	8f85802c 	lw	a1,-32724(gp)
  455bc4:	00000000 	nop
  455bc8:	24a50c80 	addiu	a1,a1,3200
  455bcc:	00403021 	move	a2,v0
  455bd0:	8f998c48 	lw	t9,-29624(gp)
  455bd4:	00000000 	nop
  455bd8:	0320f809 	jalr	t9
  455bdc:	00000000 	nop
  455be0:	8fdc0028 	lw	gp,40(s8)
  455be4:	00000000 	nop
		    enum_name(&ipcomp_transformid_names, st->st_ipcomp.attrs.transid));
		goto fail;
  455be8:	10000268 	b	45658c <setup_half_ipsec_sa+0x1b64>
  455bec:	00000000 	nop
  455bf0:	24020002 	li	v0,2
  455bf4:	a3c20200 	sb	v0,512(s8)
	}

	set_text_said(text_said, &dst, ipcomp_spi, SA_COMP);
  455bf8:	27c40190 	addiu	a0,s8,400
  455bfc:	27c50058 	addiu	a1,s8,88
  455c00:	8fc60204 	lw	a2,516(s8)
  455c04:	2407006c 	li	a3,108
  455c08:	8f998038 	lw	t9,-32712(gp)
  455c0c:	00000000 	nop
  455c10:	273914c8 	addiu	t9,t9,5320
  455c14:	00000000 	nop
  455c18:	0320f809 	jalr	t9
  455c1c:	00000000 	nop
  455c20:	8fdc0028 	lw	gp,40(s8)
  455c24:	00000000 	nop

	if (!(pfkey_msg_start(SADB_ADD, SADB_X_SATYPE_COMP
	    , "pfkey_msg_hdr Add IPCOMP SA", text_said, extensions)

	&& pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
		, SADB_EXT_SA
		, ipcomp_spi	/* in network order */
		, 0, SADB_SASTATE_MATURE, 0, compalg, 0)
	    , "pfkey_sa Add IPCOMP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_SRC, &src
	    , "pfkey_addr_s Add IPCOMP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_DST, &dst
	    , "pfkey_addr_d Add IPCOMP SA", text_said, extensions)

	&& finish_pfkey_msg(extensions, "Add IPCOMP SA", text_said, NULL)))
  455c28:	27c20110 	addiu	v0,s8,272
  455c2c:	afa20010 	sw	v0,16(sp)
  455c30:	24040003 	li	a0,3
  455c34:	2405000a 	li	a1,10
  455c38:	8f86802c 	lw	a2,-32724(gp)
  455c3c:	00000000 	nop
  455c40:	24c60ca4 	addiu	a2,a2,3236
  455c44:	27c70190 	addiu	a3,s8,400
  455c48:	8f998038 	lw	t9,-32712(gp)
  455c4c:	00000000 	nop
  455c50:	27391628 	addiu	t9,t9,5672
  455c54:	00000000 	nop
  455c58:	0320f809 	jalr	t9
  455c5c:	00000000 	nop
  455c60:	8fdc0028 	lw	gp,40(s8)
  455c64:	10400249 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455c68:	00000000 	nop
  455c6c:	27c20110 	addiu	v0,s8,272
  455c70:	24430004 	addiu	v1,v0,4
  455c74:	24020001 	li	v0,1
  455c78:	afa20010 	sw	v0,16(sp)
  455c7c:	afa00014 	sw	zero,20(sp)
  455c80:	93c20200 	lbu	v0,512(s8)
  455c84:	00000000 	nop
  455c88:	afa20018 	sw	v0,24(sp)
  455c8c:	afa0001c 	sw	zero,28(sp)
  455c90:	00602021 	move	a0,v1
  455c94:	24050001 	li	a1,1
  455c98:	8fc60204 	lw	a2,516(s8)
  455c9c:	00003821 	move	a3,zero
  455ca0:	8f998804 	lw	t9,-30716(gp)
  455ca4:	00000000 	nop
  455ca8:	0320f809 	jalr	t9
  455cac:	00000000 	nop
  455cb0:	8fdc0028 	lw	gp,40(s8)
  455cb4:	00402021 	move	a0,v0
  455cb8:	8f85802c 	lw	a1,-32724(gp)
  455cbc:	00000000 	nop
  455cc0:	24a50cc0 	addiu	a1,a1,3264
  455cc4:	27c60190 	addiu	a2,s8,400
  455cc8:	27c70110 	addiu	a3,s8,272
  455ccc:	8f998038 	lw	t9,-32712(gp)
  455cd0:	00000000 	nop
  455cd4:	27391564 	addiu	t9,t9,5476
  455cd8:	00000000 	nop
  455cdc:	0320f809 	jalr	t9
  455ce0:	00000000 	nop
  455ce4:	8fdc0028 	lw	gp,40(s8)
  455ce8:	10400228 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455cec:	00000000 	nop
  455cf0:	27c20110 	addiu	v0,s8,272
  455cf4:	afa20010 	sw	v0,16(sp)
  455cf8:	24040005 	li	a0,5
  455cfc:	27c50038 	addiu	a1,s8,56
  455d00:	8f86802c 	lw	a2,-32724(gp)
  455d04:	00000000 	nop
  455d08:	24c60cd8 	addiu	a2,a2,3288
  455d0c:	27c70190 	addiu	a3,s8,400
  455d10:	8f998038 	lw	t9,-32712(gp)
  455d14:	00000000 	nop
  455d18:	27391734 	addiu	t9,t9,5940
  455d1c:	00000000 	nop
  455d20:	0320f809 	jalr	t9
  455d24:	00000000 	nop
  455d28:	8fdc0028 	lw	gp,40(s8)
  455d2c:	10400217 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455d30:	00000000 	nop
  455d34:	27c20110 	addiu	v0,s8,272
  455d38:	afa20010 	sw	v0,16(sp)
  455d3c:	24040006 	li	a0,6
  455d40:	27c50058 	addiu	a1,s8,88
  455d44:	8f86802c 	lw	a2,-32724(gp)
  455d48:	00000000 	nop
  455d4c:	24c60cf4 	addiu	a2,a2,3316
  455d50:	27c70190 	addiu	a3,s8,400
  455d54:	8f998038 	lw	t9,-32712(gp)
  455d58:	00000000 	nop
  455d5c:	27391734 	addiu	t9,t9,5940
  455d60:	00000000 	nop
  455d64:	0320f809 	jalr	t9
  455d68:	00000000 	nop
  455d6c:	8fdc0028 	lw	gp,40(s8)
  455d70:	10400206 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455d74:	00000000 	nop
  455d78:	27c40110 	addiu	a0,s8,272
  455d7c:	8f85802c 	lw	a1,-32724(gp)
  455d80:	00000000 	nop
  455d84:	24a50d10 	addiu	a1,a1,3344
  455d88:	27c60190 	addiu	a2,s8,400
  455d8c:	00003821 	move	a3,zero
  455d90:	8f998038 	lw	t9,-32712(gp)
  455d94:	00000000 	nop
  455d98:	27391940 	addiu	t9,t9,6464
  455d9c:	00000000 	nop
  455da0:	0320f809 	jalr	t9
  455da4:	00000000 	nop
  455da8:	8fdc0028 	lw	gp,40(s8)
  455dac:	14400003 	bnez	v0,455dbc <setup_half_ipsec_sa+0x1394>
  455db0:	00000000 	nop
  455db4:	100001f5 	b	45658c <setup_half_ipsec_sa+0x1b64>
  455db8:	00000000 	nop

	    goto fail;

	initsaid(&dst, ipcomp_spi, SA_COMP, said_next);
  455dbc:	27c40058 	addiu	a0,s8,88
  455dc0:	8fc50204 	lw	a1,516(s8)
  455dc4:	2406006c 	li	a2,108
  455dc8:	8fc70108 	lw	a3,264(s8)
  455dcc:	8f99817c 	lw	t9,-32388(gp)
  455dd0:	00000000 	nop
  455dd4:	0320f809 	jalr	t9
  455dd8:	00000000 	nop
  455ddc:	8fdc0028 	lw	gp,40(s8)
  455de0:	00000000 	nop
	said_next++;
  455de4:	8fc20108 	lw	v0,264(s8)
  455de8:	00000000 	nop
  455dec:	24420024 	addiu	v0,v0,36
  455df0:	afc20108 	sw	v0,264(s8)
    }

    /* If we are tunnelling, set up IP in IP pseudo SA */

    if (st->st_ah.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL
    || st->st_esp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL
    || st->st_ipcomp.attrs.encapsulation == ENCAPSULATION_MODE_TUNNEL)
  455df4:	8fc203d8 	lw	v0,984(s8)
  455df8:	00000000 	nop
  455dfc:	94430050 	lhu	v1,80(v0)
  455e00:	24020001 	li	v0,1
  455e04:	1062000f 	beq	v1,v0,455e44 <setup_half_ipsec_sa+0x141c>
  455e08:	00000000 	nop
  455e0c:	8fc203d8 	lw	v0,984(s8)
  455e10:	00000000 	nop
  455e14:	9443007c 	lhu	v1,124(v0)
  455e18:	24020001 	li	v0,1
  455e1c:	10620009 	beq	v1,v0,455e44 <setup_half_ipsec_sa+0x141c>
  455e20:	00000000 	nop
  455e24:	8fc203d8 	lw	v0,984(s8)
  455e28:	00000000 	nop
  455e2c:	944300a8 	lhu	v1,168(v0)
  455e30:	24020001 	li	v0,1
  455e34:	10620003 	beq	v1,v0,455e44 <setup_half_ipsec_sa+0x141c>
  455e38:	00000000 	nop
  455e3c:	100000ce 	b	456178 <setup_half_ipsec_sa+0x1750>
  455e40:	00000000 	nop
    {
	/* XXX hack alert -- we SHOULD NOT HAVE TO HAVE A DIFFERENT SPI
	 * XXX FOR IP-in-IP ENCAPSULATION!
	 */

	ipsec_spi_t ipip_spi;

	/* Allocate an SPI for the tunnel.
	 * Since our peer will never see this,
	 * and it comes from its own number space,
	 * it is purely a local implementation wart.
	 */
	{
	    static ipsec_spi_t last_tunnel_spi = IPSEC_DOI_SPI_OUR_MIN;

	    ipip_spi = htonl(++last_tunnel_spi);
  455e44:	8f828018 	lw	v0,-32744(gp)
  455e48:	00000000 	nop
  455e4c:	24422474 	addiu	v0,v0,9332
  455e50:	8c420000 	lw	v0,0(v0)
  455e54:	00000000 	nop
  455e58:	24420001 	addiu	v0,v0,1
  455e5c:	8f818018 	lw	at,-32744(gp)
  455e60:	00000000 	nop
  455e64:	24212474 	addiu	at,at,9332
  455e68:	ac220000 	sw	v0,0(at)
  455e6c:	afc20204 	sw	v0,516(s8)
	    if (inbound)
  455e70:	8fc203dc 	lw	v0,988(s8)
  455e74:	00000000 	nop
  455e78:	10400007 	beqz	v0,455e98 <setup_half_ipsec_sa+0x1470>
  455e7c:	00000000 	nop
		st->st_tunnel_in_spi = ipip_spi;
  455e80:	8fc30204 	lw	v1,516(s8)
  455e84:	8fc203d8 	lw	v0,984(s8)
  455e88:	00000000 	nop
  455e8c:	ac4300c0 	sw	v1,192(v0)
  455e90:	10000005 	b	455ea8 <setup_half_ipsec_sa+0x1480>
  455e94:	00000000 	nop
	    else
		st->st_tunnel_out_spi = ipip_spi;
  455e98:	8fc30204 	lw	v1,516(s8)
  455e9c:	8fc203d8 	lw	v0,984(s8)
  455ea0:	00000000 	nop
  455ea4:	ac4300c4 	sw	v1,196(v0)
	}

	set_text_said(text_said
  455ea8:	8fc20030 	lw	v0,48(s8)
  455eac:	00000000 	nop
  455eb0:	24420108 	addiu	v0,v0,264
  455eb4:	27c40190 	addiu	a0,s8,400
  455eb8:	00402821 	move	a1,v0
  455ebc:	8fc60204 	lw	a2,516(s8)
  455ec0:	24070004 	li	a3,4
  455ec4:	8f998038 	lw	t9,-32712(gp)
  455ec8:	00000000 	nop
  455ecc:	273914c8 	addiu	t9,t9,5320
  455ed0:	00000000 	nop
  455ed4:	0320f809 	jalr	t9
  455ed8:	00000000 	nop
  455edc:	8fdc0028 	lw	gp,40(s8)
  455ee0:	00000000 	nop
	    , &c->that.host_addr, ipip_spi, SA_IPIP);

	if (!(pfkey_msg_start(SADB_ADD, SADB_X_SATYPE_IPIP
	    , "pfkey_msg_hdr Add IPIP SA", text_said, extensions)

	&& pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
		, SADB_EXT_SA
		, ipip_spi		/* in network order */
		, 0, SADB_SASTATE_MATURE
		, 0
		, 0
		, 0)
	    , "pfkey_sa Add IPIP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_SRC, &src
	    , "pfkey_addr_s Add IPIP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_DST, &dst
	    , "pfkey_addr_d Add IPIP SA", text_said, extensions)

	&& finish_pfkey_msg(extensions, "Add IPIP SA", text_said, NULL)))
  455ee4:	27c20110 	addiu	v0,s8,272
  455ee8:	afa20010 	sw	v0,16(sp)
  455eec:	24040003 	li	a0,3
  455ef0:	24050009 	li	a1,9
  455ef4:	8f86802c 	lw	a2,-32724(gp)
  455ef8:	00000000 	nop
  455efc:	24c60d20 	addiu	a2,a2,3360
  455f00:	27c70190 	addiu	a3,s8,400
  455f04:	8f998038 	lw	t9,-32712(gp)
  455f08:	00000000 	nop
  455f0c:	27391628 	addiu	t9,t9,5672
  455f10:	00000000 	nop
  455f14:	0320f809 	jalr	t9
  455f18:	00000000 	nop
  455f1c:	8fdc0028 	lw	gp,40(s8)
  455f20:	1040019a 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455f24:	00000000 	nop
  455f28:	27c20110 	addiu	v0,s8,272
  455f2c:	24430004 	addiu	v1,v0,4
  455f30:	24020001 	li	v0,1
  455f34:	afa20010 	sw	v0,16(sp)
  455f38:	afa00014 	sw	zero,20(sp)
  455f3c:	afa00018 	sw	zero,24(sp)
  455f40:	afa0001c 	sw	zero,28(sp)
  455f44:	00602021 	move	a0,v1
  455f48:	24050001 	li	a1,1
  455f4c:	8fc60204 	lw	a2,516(s8)
  455f50:	00003821 	move	a3,zero
  455f54:	8f998804 	lw	t9,-30716(gp)
  455f58:	00000000 	nop
  455f5c:	0320f809 	jalr	t9
  455f60:	00000000 	nop
  455f64:	8fdc0028 	lw	gp,40(s8)
  455f68:	00402021 	move	a0,v0
  455f6c:	8f85802c 	lw	a1,-32724(gp)
  455f70:	00000000 	nop
  455f74:	24a50d3c 	addiu	a1,a1,3388
  455f78:	27c60190 	addiu	a2,s8,400
  455f7c:	27c70110 	addiu	a3,s8,272
  455f80:	8f998038 	lw	t9,-32712(gp)
  455f84:	00000000 	nop
  455f88:	27391564 	addiu	t9,t9,5476
  455f8c:	00000000 	nop
  455f90:	0320f809 	jalr	t9
  455f94:	00000000 	nop
  455f98:	8fdc0028 	lw	gp,40(s8)
  455f9c:	1040017b 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455fa0:	00000000 	nop
  455fa4:	27c20110 	addiu	v0,s8,272
  455fa8:	afa20010 	sw	v0,16(sp)
  455fac:	24040005 	li	a0,5
  455fb0:	27c50038 	addiu	a1,s8,56
  455fb4:	8f86802c 	lw	a2,-32724(gp)
  455fb8:	00000000 	nop
  455fbc:	24c60d54 	addiu	a2,a2,3412
  455fc0:	27c70190 	addiu	a3,s8,400
  455fc4:	8f998038 	lw	t9,-32712(gp)
  455fc8:	00000000 	nop
  455fcc:	27391734 	addiu	t9,t9,5940
  455fd0:	00000000 	nop
  455fd4:	0320f809 	jalr	t9
  455fd8:	00000000 	nop
  455fdc:	8fdc0028 	lw	gp,40(s8)
  455fe0:	1040016a 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  455fe4:	00000000 	nop
  455fe8:	27c20110 	addiu	v0,s8,272
  455fec:	afa20010 	sw	v0,16(sp)
  455ff0:	24040006 	li	a0,6
  455ff4:	27c50058 	addiu	a1,s8,88
  455ff8:	8f86802c 	lw	a2,-32724(gp)
  455ffc:	00000000 	nop
  456000:	24c60d70 	addiu	a2,a2,3440
  456004:	27c70190 	addiu	a3,s8,400
  456008:	8f998038 	lw	t9,-32712(gp)
  45600c:	00000000 	nop
  456010:	27391734 	addiu	t9,t9,5940
  456014:	00000000 	nop
  456018:	0320f809 	jalr	t9
  45601c:	00000000 	nop
  456020:	8fdc0028 	lw	gp,40(s8)
  456024:	10400159 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  456028:	00000000 	nop
  45602c:	27c40110 	addiu	a0,s8,272
  456030:	8f85802c 	lw	a1,-32724(gp)
  456034:	00000000 	nop
  456038:	24a50d8c 	addiu	a1,a1,3468
  45603c:	27c60190 	addiu	a2,s8,400
  456040:	00003821 	move	a3,zero
  456044:	8f998038 	lw	t9,-32712(gp)
  456048:	00000000 	nop
  45604c:	27391940 	addiu	t9,t9,6464
  456050:	00000000 	nop
  456054:	0320f809 	jalr	t9
  456058:	00000000 	nop
  45605c:	8fdc0028 	lw	gp,40(s8)
  456060:	14400003 	bnez	v0,456070 <setup_half_ipsec_sa+0x1648>
  456064:	00000000 	nop
  456068:	10000148 	b	45658c <setup_half_ipsec_sa+0x1b64>
  45606c:	00000000 	nop

	    goto fail;

	initsaid(&dst, ipip_spi, SA_IPIP, said_next);
  456070:	27c40058 	addiu	a0,s8,88
  456074:	8fc50204 	lw	a1,516(s8)
  456078:	24060004 	li	a2,4
  45607c:	8fc70108 	lw	a3,264(s8)
  456080:	8f99817c 	lw	t9,-32388(gp)
  456084:	00000000 	nop
  456088:	0320f809 	jalr	t9
  45608c:	00000000 	nop
  456090:	8fdc0028 	lw	gp,40(s8)
  456094:	00000000 	nop
	said_next++;
  456098:	8fc20108 	lw	v0,264(s8)
  45609c:	00000000 	nop
  4560a0:	24420024 	addiu	v0,v0,36
  4560a4:	afc20108 	sw	v0,264(s8)

	/* If inbound, and policy does not specifie DISABLEARRIVALCHECK,
	 * tell KLIPS to enforce the IP addresses appropriate for this tunnel.
	 * Note reversed ends.
	 * Not much to be done on failure.
	 */
	if (inbound && (c->policy & POLICY_DISABLEARRIVALCHECK) == 0)
  4560a8:	8fc203dc 	lw	v0,988(s8)
  4560ac:	00000000 	nop
  4560b0:	10400031 	beqz	v0,456178 <setup_half_ipsec_sa+0x1750>
  4560b4:	00000000 	nop
  4560b8:	8fc20030 	lw	v0,48(s8)
  4560bc:	00000000 	nop
  4560c0:	8c440008 	lw	a0,8(v0)
  4560c4:	8c45000c 	lw	a1,12(v0)
  4560c8:	24020000 	li	v0,0
  4560cc:	24030080 	li	v1,128
  4560d0:	00822024 	and	a0,a0,v0
  4560d4:	00a32824 	and	a1,a1,v1
  4560d8:	00801021 	move	v0,a0
  4560dc:	00451025 	or	v0,v0,a1
  4560e0:	14400025 	bnez	v0,456178 <setup_half_ipsec_sa+0x1750>
  4560e4:	00000000 	nop
	    (void) raw_eroute(&c->that.host_addr, &c->that.client
  4560e8:	8fc20030 	lw	v0,48(s8)
  4560ec:	00000000 	nop
  4560f0:	24440108 	addiu	a0,v0,264
  4560f4:	8fc20030 	lw	v0,48(s8)
  4560f8:	00000000 	nop
  4560fc:	24450140 	addiu	a1,v0,320
  456100:	8fc20030 	lw	v0,48(s8)
  456104:	00000000 	nop
  456108:	24460058 	addiu	a2,v0,88
  45610c:	8fc20030 	lw	v0,48(s8)
  456110:	00000000 	nop
  456114:	24430090 	addiu	v1,v0,144
  456118:	8fc20204 	lw	v0,516(s8)
  45611c:	00000000 	nop
  456120:	afa20010 	sw	v0,16(sp)
  456124:	24020004 	li	v0,4
  456128:	afa20014 	sw	v0,20(sp)
  45612c:	afa00018 	sw	zero,24(sp)
  456130:	24020009 	li	v0,9
  456134:	afa2001c 	sw	v0,28(sp)
  456138:	2402080e 	li	v0,2062
  45613c:	afa20020 	sw	v0,32(sp)
  456140:	8f82802c 	lw	v0,-32724(gp)
  456144:	00000000 	nop
  456148:	24420d98 	addiu	v0,v0,3480
  45614c:	00000000 	nop
  456150:	afa20024 	sw	v0,36(sp)
  456154:	00603821 	move	a3,v1
  456158:	8f998038 	lw	t9,-32712(gp)
  45615c:	00000000 	nop
  456160:	27392680 	addiu	t9,t9,9856
  456164:	00000000 	nop
  456168:	0320f809 	jalr	t9
  45616c:	00000000 	nop
  456170:	8fdc0028 	lw	gp,40(s8)
  456174:	00000000 	nop
		, &c->this.host_addr, &c->this.client
		, ipip_spi, SA_IPIP, 0, SADB_X_SATYPE_IPIP
		, ERO_ADD_INBOUND, "add inbound");
    }

    /* If there are multiple SPIs, group them. */

    if (said_next > &said[1])
  456178:	27c20078 	addiu	v0,s8,120
  45617c:	24430024 	addiu	v1,v0,36
  456180:	8fc20108 	lw	v0,264(s8)
  456184:	00000000 	nop
  456188:	0062102b 	sltu	v0,v1,v0
  45618c:	104000fc 	beqz	v0,456580 <setup_half_ipsec_sa+0x1b58>
  456190:	00000000 	nop
    {
	ip_said *s;

	/* group SAs, two at a time, inner to outer (backwards in said[])
	 * The grouping is by pairs.  So if said[] contains ah esp ipip,
	 * the grouping would be ipip:esp, esp:ah.
	 */
	for (s = said_next-1; s != said; )
  456194:	8fc20108 	lw	v0,264(s8)
  456198:	00000000 	nop
  45619c:	2442ffdc 	addiu	v0,v0,-36
  4561a0:	afc20204 	sw	v0,516(s8)
  4561a4:	8fc30204 	lw	v1,516(s8)
  4561a8:	27c20078 	addiu	v0,s8,120
  4561ac:	14620003 	bne	v1,v0,4561bc <setup_half_ipsec_sa+0x1794>
  4561b0:	00000000 	nop
  4561b4:	100000f2 	b	456580 <setup_half_ipsec_sa+0x1b58>
  4561b8:	00000000 	nop
	{
	    struct sadb_ext *extensions[SADB_EXT_MAX + 1];
	    char
	    	text_said0[SATOT_BUF],
		text_said1[SATOT_BUF];

	    s--;
  4561bc:	8fc20204 	lw	v0,516(s8)
  4561c0:	00000000 	nop
  4561c4:	2442ffdc 	addiu	v0,v0,-36
  4561c8:	afc20204 	sw	v0,516(s8)

	    /* group s[1] and s[0], in that order */

	    set_text_said(text_said0, &s[0].dst, s[0].spi, s[0].proto);
  4561cc:	27c402b0 	addiu	a0,s8,688
  4561d0:	8fc50204 	lw	a1,516(s8)
  4561d4:	8fc20204 	lw	v0,516(s8)
  4561d8:	00000000 	nop
  4561dc:	8c46001c 	lw	a2,28(v0)
  4561e0:	8fc20204 	lw	v0,516(s8)
  4561e4:	00000000 	nop
  4561e8:	8c470020 	lw	a3,32(v0)
  4561ec:	8f998038 	lw	t9,-32712(gp)
  4561f0:	00000000 	nop
  4561f4:	273914c8 	addiu	t9,t9,5320
  4561f8:	00000000 	nop
  4561fc:	0320f809 	jalr	t9
  456200:	00000000 	nop
  456204:	8fdc0028 	lw	gp,40(s8)
  456208:	00000000 	nop
	    set_text_said(text_said1, &s[1].dst, s[1].spi, s[1].proto);
  45620c:	8fc20204 	lw	v0,516(s8)
  456210:	00000000 	nop
  456214:	24450024 	addiu	a1,v0,36
  456218:	8fc20204 	lw	v0,516(s8)
  45621c:	00000000 	nop
  456220:	24430024 	addiu	v1,v0,36
  456224:	8fc20204 	lw	v0,516(s8)
  456228:	00000000 	nop
  45622c:	24420024 	addiu	v0,v0,36
  456230:	27c40318 	addiu	a0,s8,792
  456234:	8c66001c 	lw	a2,28(v1)
  456238:	8c470020 	lw	a3,32(v0)
  45623c:	8f998038 	lw	t9,-32712(gp)
  456240:	00000000 	nop
  456244:	273914c8 	addiu	t9,t9,5320
  456248:	00000000 	nop
  45624c:	0320f809 	jalr	t9
  456250:	00000000 	nop
  456254:	8fdc0028 	lw	gp,40(s8)
  456258:	00000000 	nop

	    DBG(DBG_KLIPS, DBG_log("grouping %s and %s", text_said1, text_said0));
  45625c:	8f8284f8 	lw	v0,-31496(gp)
  456260:	00000000 	nop
  456264:	8c420000 	lw	v0,0(v0)
  456268:	00000000 	nop
  45626c:	30420040 	andi	v0,v0,0x40
  456270:	1040000c 	beqz	v0,4562a4 <setup_half_ipsec_sa+0x187c>
  456274:	00000000 	nop
  456278:	8f84802c 	lw	a0,-32724(gp)
  45627c:	00000000 	nop
  456280:	24840da4 	addiu	a0,a0,3492
  456284:	27c50318 	addiu	a1,s8,792
  456288:	27c602b0 	addiu	a2,s8,688
  45628c:	8f9983b8 	lw	t9,-31816(gp)
  456290:	00000000 	nop
  456294:	0320f809 	jalr	t9
  456298:	00000000 	nop
  45629c:	8fdc0028 	lw	gp,40(s8)
  4562a0:	00000000 	nop

	    if (!(pfkey_msg_start(SADB_X_GRPSA, proto2satype(s[1].proto)
		, "pfkey_msg_hdr group", text_said1, extensions)

	    && pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
		    , SADB_EXT_SA
		    , s[1].spi	/* in network order */
		    , 0, 0, 0, 0, 0)
		, "pfkey_sa group", text_said1, extensions)

	    && pfkeyext_address(SADB_EXT_ADDRESS_DST, &s[1].dst
		, "pfkey_addr_d group", text_said1, extensions)

	    && pfkey_build(pfkey_x_satype_build(&extensions[SADB_X_EXT_SATYPE2]
		    , proto2satype(s[0].proto))
		, "pfkey_satype group", text_said0, extensions)

	    && pfkey_build(pfkey_sa_build(&extensions[SADB_X_EXT_SA2]
		    , SADB_X_EXT_SA2
		    , s[0].spi	/* in network order */
		    , 0, 0, 0, 0, 0)
		, "pfkey_sa2 group", text_said0, extensions)

	    && pfkeyext_address(SADB_X_EXT_ADDRESS_DST2, &s[0].dst
		, "pfkey_addr_d2 group", text_said0, extensions)

	    && finish_pfkey_msg(extensions, "group", text_said1, NULL)))
  4562a4:	8fc20204 	lw	v0,516(s8)
  4562a8:	00000000 	nop
  4562ac:	24420024 	addiu	v0,v0,36
  4562b0:	90420023 	lbu	v0,35(v0)
  4562b4:	00000000 	nop
  4562b8:	00402021 	move	a0,v0
  4562bc:	8f9988bc 	lw	t9,-30532(gp)
  4562c0:	00000000 	nop
  4562c4:	0320f809 	jalr	t9
  4562c8:	00000000 	nop
  4562cc:	8fdc0028 	lw	gp,40(s8)
  4562d0:	00401821 	move	v1,v0
  4562d4:	27c20230 	addiu	v0,s8,560
  4562d8:	afa20010 	sw	v0,16(sp)
  4562dc:	2404000d 	li	a0,13
  4562e0:	00602821 	move	a1,v1
  4562e4:	8f86802c 	lw	a2,-32724(gp)
  4562e8:	00000000 	nop
  4562ec:	24c60db8 	addiu	a2,a2,3512
  4562f0:	27c70318 	addiu	a3,s8,792
  4562f4:	8f998038 	lw	t9,-32712(gp)
  4562f8:	00000000 	nop
  4562fc:	27391628 	addiu	t9,t9,5672
  456300:	00000000 	nop
  456304:	0320f809 	jalr	t9
  456308:	00000000 	nop
  45630c:	8fdc0028 	lw	gp,40(s8)
  456310:	1040009e 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  456314:	00000000 	nop
  456318:	27c20230 	addiu	v0,s8,560
  45631c:	24430004 	addiu	v1,v0,4
  456320:	8fc20204 	lw	v0,516(s8)
  456324:	00000000 	nop
  456328:	24420024 	addiu	v0,v0,36
  45632c:	afa00010 	sw	zero,16(sp)
  456330:	afa00014 	sw	zero,20(sp)
  456334:	afa00018 	sw	zero,24(sp)
  456338:	afa0001c 	sw	zero,28(sp)
  45633c:	00602021 	move	a0,v1
  456340:	24050001 	li	a1,1
  456344:	8c46001c 	lw	a2,28(v0)
  456348:	00003821 	move	a3,zero
  45634c:	8f998804 	lw	t9,-30716(gp)
  456350:	00000000 	nop
  456354:	0320f809 	jalr	t9
  456358:	00000000 	nop
  45635c:	8fdc0028 	lw	gp,40(s8)
  456360:	00402021 	move	a0,v0
  456364:	8f85802c 	lw	a1,-32724(gp)
  456368:	00000000 	nop
  45636c:	24a50dcc 	addiu	a1,a1,3532
  456370:	27c60318 	addiu	a2,s8,792
  456374:	27c70230 	addiu	a3,s8,560
  456378:	8f998038 	lw	t9,-32712(gp)
  45637c:	00000000 	nop
  456380:	27391564 	addiu	t9,t9,5476
  456384:	00000000 	nop
  456388:	0320f809 	jalr	t9
  45638c:	00000000 	nop
  456390:	8fdc0028 	lw	gp,40(s8)
  456394:	1040007d 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  456398:	00000000 	nop
  45639c:	8fc20204 	lw	v0,516(s8)
  4563a0:	00000000 	nop
  4563a4:	24430024 	addiu	v1,v0,36
  4563a8:	27c20230 	addiu	v0,s8,560
  4563ac:	afa20010 	sw	v0,16(sp)
  4563b0:	24040006 	li	a0,6
  4563b4:	00602821 	move	a1,v1
  4563b8:	8f86802c 	lw	a2,-32724(gp)
  4563bc:	00000000 	nop
  4563c0:	24c60ddc 	addiu	a2,a2,3548
  4563c4:	27c70318 	addiu	a3,s8,792
  4563c8:	8f998038 	lw	t9,-32712(gp)
  4563cc:	00000000 	nop
  4563d0:	27391734 	addiu	t9,t9,5940
  4563d4:	00000000 	nop
  4563d8:	0320f809 	jalr	t9
  4563dc:	00000000 	nop
  4563e0:	8fdc0028 	lw	gp,40(s8)
  4563e4:	10400069 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  4563e8:	00000000 	nop
  4563ec:	8fc20204 	lw	v0,516(s8)
  4563f0:	00000000 	nop
  4563f4:	90420023 	lbu	v0,35(v0)
  4563f8:	00000000 	nop
  4563fc:	00402021 	move	a0,v0
  456400:	8f9988bc 	lw	t9,-30532(gp)
  456404:	00000000 	nop
  456408:	0320f809 	jalr	t9
  45640c:	00000000 	nop
  456410:	8fdc0028 	lw	gp,40(s8)
  456414:	00401821 	move	v1,v0
  456418:	27c20230 	addiu	v0,s8,560
  45641c:	24420048 	addiu	v0,v0,72
  456420:	00402021 	move	a0,v0
  456424:	00602821 	move	a1,v1
  456428:	8f998a24 	lw	t9,-30172(gp)
  45642c:	00000000 	nop
  456430:	0320f809 	jalr	t9
  456434:	00000000 	nop
  456438:	8fdc0028 	lw	gp,40(s8)
  45643c:	00402021 	move	a0,v0
  456440:	8f85802c 	lw	a1,-32724(gp)
  456444:	00000000 	nop
  456448:	24a50df0 	addiu	a1,a1,3568
  45644c:	27c602b0 	addiu	a2,s8,688
  456450:	27c70230 	addiu	a3,s8,560
  456454:	8f998038 	lw	t9,-32712(gp)
  456458:	00000000 	nop
  45645c:	27391564 	addiu	t9,t9,5476
  456460:	00000000 	nop
  456464:	0320f809 	jalr	t9
  456468:	00000000 	nop
  45646c:	8fdc0028 	lw	gp,40(s8)
  456470:	10400046 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  456474:	00000000 	nop
  456478:	27c20230 	addiu	v0,s8,560
  45647c:	2442004c 	addiu	v0,v0,76
  456480:	afa00010 	sw	zero,16(sp)
  456484:	afa00014 	sw	zero,20(sp)
  456488:	afa00018 	sw	zero,24(sp)
  45648c:	afa0001c 	sw	zero,28(sp)
  456490:	00402021 	move	a0,v0
  456494:	24050013 	li	a1,19
  456498:	8fc20204 	lw	v0,516(s8)
  45649c:	00000000 	nop
  4564a0:	8c46001c 	lw	a2,28(v0)
  4564a4:	00003821 	move	a3,zero
  4564a8:	8f998804 	lw	t9,-30716(gp)
  4564ac:	00000000 	nop
  4564b0:	0320f809 	jalr	t9
  4564b4:	00000000 	nop
  4564b8:	8fdc0028 	lw	gp,40(s8)
  4564bc:	00402021 	move	a0,v0
  4564c0:	8f85802c 	lw	a1,-32724(gp)
  4564c4:	00000000 	nop
  4564c8:	24a50e04 	addiu	a1,a1,3588
  4564cc:	27c602b0 	addiu	a2,s8,688
  4564d0:	27c70230 	addiu	a3,s8,560
  4564d4:	8f998038 	lw	t9,-32712(gp)
  4564d8:	00000000 	nop
  4564dc:	27391564 	addiu	t9,t9,5476
  4564e0:	00000000 	nop
  4564e4:	0320f809 	jalr	t9
  4564e8:	00000000 	nop
  4564ec:	8fdc0028 	lw	gp,40(s8)
  4564f0:	10400026 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  4564f4:	00000000 	nop
  4564f8:	27c20230 	addiu	v0,s8,560
  4564fc:	afa20010 	sw	v0,16(sp)
  456500:	24040014 	li	a0,20
  456504:	8fc50204 	lw	a1,516(s8)
  456508:	8f86802c 	lw	a2,-32724(gp)
  45650c:	00000000 	nop
  456510:	24c60e14 	addiu	a2,a2,3604
  456514:	27c702b0 	addiu	a3,s8,688
  456518:	8f998038 	lw	t9,-32712(gp)
  45651c:	00000000 	nop
  456520:	27391734 	addiu	t9,t9,5940
  456524:	00000000 	nop
  456528:	0320f809 	jalr	t9
  45652c:	00000000 	nop
  456530:	8fdc0028 	lw	gp,40(s8)
  456534:	10400015 	beqz	v0,45658c <setup_half_ipsec_sa+0x1b64>
  456538:	00000000 	nop
  45653c:	27c40230 	addiu	a0,s8,560
  456540:	8f85802c 	lw	a1,-32724(gp)
  456544:	00000000 	nop
  456548:	24a50e28 	addiu	a1,a1,3624
  45654c:	27c60318 	addiu	a2,s8,792
  456550:	00003821 	move	a3,zero
  456554:	8f998038 	lw	t9,-32712(gp)
  456558:	00000000 	nop
  45655c:	27391940 	addiu	t9,t9,6464
  456560:	00000000 	nop
  456564:	0320f809 	jalr	t9
  456568:	00000000 	nop
  45656c:	8fdc0028 	lw	gp,40(s8)
  456570:	1440ff0c 	bnez	v0,4561a4 <setup_half_ipsec_sa+0x177c>
  456574:	00000000 	nop
  456578:	10000004 	b	45658c <setup_half_ipsec_sa+0x1b64>
  45657c:	00000000 	nop
	    	goto fail;
	}
	/* could update said, but it will not be used */
    }

    return TRUE;
  456580:	24020001 	li	v0,1
  456584:	1000001e 	b	456600 <setup_half_ipsec_sa+0x1bd8>
  456588:	00000000 	nop

fail:
    {
	/* undo the done SPIs */
	while (said_next-- != said)
  45658c:	27c30108 	addiu	v1,s8,264
  456590:	8c620000 	lw	v0,0(v1)
  456594:	00000000 	nop
  456598:	00402021 	move	a0,v0
  45659c:	2442ffdc 	addiu	v0,v0,-36
  4565a0:	ac620000 	sw	v0,0(v1)
  4565a4:	27c20078 	addiu	v0,s8,120
  4565a8:	14820003 	bne	a0,v0,4565b8 <setup_half_ipsec_sa+0x1b90>
  4565ac:	00000000 	nop
  4565b0:	10000012 	b	4565fc <setup_half_ipsec_sa+0x1bd4>
  4565b4:	00000000 	nop
	    (void) del_spi(said_next->spi, said_next->proto
  4565b8:	8fc20108 	lw	v0,264(s8)
  4565bc:	00000000 	nop
  4565c0:	8c44001c 	lw	a0,28(v0)
  4565c4:	8fc20108 	lw	v0,264(s8)
  4565c8:	00000000 	nop
  4565cc:	8c450020 	lw	a1,32(v0)
  4565d0:	27c60038 	addiu	a2,s8,56
  4565d4:	8fc70108 	lw	a3,264(s8)
  4565d8:	8f998038 	lw	t9,-32712(gp)
  4565dc:	00000000 	nop
  4565e0:	273947b4 	addiu	t9,t9,18356
  4565e4:	00000000 	nop
  4565e8:	0320f809 	jalr	t9
  4565ec:	00000000 	nop
  4565f0:	8fdc0028 	lw	gp,40(s8)
  4565f4:	1000ffe5 	b	45658c <setup_half_ipsec_sa+0x1b64>
  4565f8:	00000000 	nop
		, &src, &said_next->dst);
	return FALSE;
  4565fc:	00001021 	move	v0,zero
    }
}
  456600:	03c0e821 	move	sp,s8
  456604:	8fbf03d4 	lw	ra,980(sp)
  456608:	8fbe03d0 	lw	s8,976(sp)
  45660c:	8fb003c8 	lw	s0,968(sp)
  456610:	27bd03d8 	addiu	sp,sp,984
  456614:	03e00008 	jr	ra
  456618:	00000000 	nop

0045661c <teardown_half_ipsec_sa>:
  45661c:	3c1c0fbb 	lui	gp,0xfbb
  456620:	279c6354 	addiu	gp,gp,25428
  456624:	0399e021 	addu	gp,gp,t9
  456628:	27bdffc8 	addiu	sp,sp,-56
  45662c:	afbc0010 	sw	gp,16(sp)
  456630:	afbf0030 	sw	ra,48(sp)
  456634:	afbe002c 	sw	s8,44(sp)
  456638:	afbc0028 	sw	gp,40(sp)
  45663c:	03a0f021 	move	s8,sp
  456640:	afc40038 	sw	a0,56(s8)
  456644:	afc5003c 	sw	a1,60(s8)

/* teardown_ipsec_sa is a canibalized version of setup_ipsec_sa */

static bool
teardown_half_ipsec_sa(struct state *st, bool inbound)
{
    /* We need to delete AH, ESP, and IP in IP SPIs.
     * But if there is more than one, they have been grouped
     * so deleting any one will do.  So we just delete the
     * first one found.  It may or may not be the only one.
     */
    struct connection *c = st->st_connection;
  456648:	8fc20038 	lw	v0,56(s8)
  45664c:	00000000 	nop
  456650:	8c42000c 	lw	v0,12(v0)
  456654:	00000000 	nop
  456658:	afc20018 	sw	v0,24(s8)
    struct ipsec_proto_info *f;	/* first SA found */
    unsigned proto;

    if (st->st_ah.present)
  45665c:	8fc20038 	lw	v0,56(s8)
  456660:	00000000 	nop
  456664:	8c42003c 	lw	v0,60(v0)
  456668:	00000000 	nop
  45666c:	10400009 	beqz	v0,456694 <teardown_half_ipsec_sa+0x78>
  456670:	00000000 	nop
    {
	f = &st->st_ah;
  456674:	8fc20038 	lw	v0,56(s8)
  456678:	00000000 	nop
  45667c:	2442003c 	addiu	v0,v0,60
  456680:	afc2001c 	sw	v0,28(s8)
	proto = SA_AH;
  456684:	24020033 	li	v0,51
  456688:	afc20020 	sw	v0,32(s8)
  45668c:	1000001c 	b	456700 <teardown_half_ipsec_sa+0xe4>
  456690:	00000000 	nop
    }
    else if (st->st_esp.present)
  456694:	8fc20038 	lw	v0,56(s8)
  456698:	00000000 	nop
  45669c:	8c420068 	lw	v0,104(v0)
  4566a0:	00000000 	nop
  4566a4:	10400009 	beqz	v0,4566cc <teardown_half_ipsec_sa+0xb0>
  4566a8:	00000000 	nop
    {
	f = &st->st_esp;
  4566ac:	8fc20038 	lw	v0,56(s8)
  4566b0:	00000000 	nop
  4566b4:	24420068 	addiu	v0,v0,104
  4566b8:	afc2001c 	sw	v0,28(s8)
	proto = SA_ESP;
  4566bc:	24020032 	li	v0,50
  4566c0:	afc20020 	sw	v0,32(s8)
  4566c4:	1000000e 	b	456700 <teardown_half_ipsec_sa+0xe4>
  4566c8:	00000000 	nop
    }
    else
    {
	impossible();	/* neither AH nor ESP in outbound SA bundle! */
  4566cc:	8f84802c 	lw	a0,-32724(gp)
  4566d0:	00000000 	nop
  4566d4:	2484077c 	addiu	a0,a0,1916
  4566d8:	8f85802c 	lw	a1,-32724(gp)
  4566dc:	00000000 	nop
  4566e0:	24a5fb28 	addiu	a1,a1,-1240
  4566e4:	240609b1 	li	a2,2481
  4566e8:	8f998bb8 	lw	t9,-29768(gp)
  4566ec:	00000000 	nop
  4566f0:	0320f809 	jalr	t9
  4566f4:	00000000 	nop
  4566f8:	8fdc0010 	lw	gp,16(s8)
  4566fc:	00000000 	nop
    }

    return inbound
  456700:	8fc2003c 	lw	v0,60(s8)
  456704:	00000000 	nop
  456708:	10400016 	beqz	v0,456764 <teardown_half_ipsec_sa+0x148>
  45670c:	00000000 	nop
  456710:	8fc20018 	lw	v0,24(s8)
  456714:	00000000 	nop
  456718:	24460108 	addiu	a2,v0,264
  45671c:	8fc20018 	lw	v0,24(s8)
  456720:	00000000 	nop
  456724:	24430058 	addiu	v1,v0,88
  456728:	8fc2001c 	lw	v0,28(s8)
  45672c:	00000000 	nop
  456730:	8c44001c 	lw	a0,28(v0)
  456734:	8fc50020 	lw	a1,32(s8)
  456738:	00603821 	move	a3,v1
  45673c:	8f998038 	lw	t9,-32712(gp)
  456740:	00000000 	nop
  456744:	273947b4 	addiu	t9,t9,18356
  456748:	00000000 	nop
  45674c:	0320f809 	jalr	t9
  456750:	00000000 	nop
  456754:	8fdc0010 	lw	gp,16(s8)
  456758:	afc20024 	sw	v0,36(s8)
  45675c:	10000014 	b	4567b0 <teardown_half_ipsec_sa+0x194>
  456760:	00000000 	nop
  456764:	8fc20018 	lw	v0,24(s8)
  456768:	00000000 	nop
  45676c:	24460058 	addiu	a2,v0,88
  456770:	8fc20018 	lw	v0,24(s8)
  456774:	00000000 	nop
  456778:	24430108 	addiu	v1,v0,264
  45677c:	8fc2001c 	lw	v0,28(s8)
  456780:	00000000 	nop
  456784:	8c440008 	lw	a0,8(v0)
  456788:	8fc50020 	lw	a1,32(s8)
  45678c:	00603821 	move	a3,v1
  456790:	8f998038 	lw	t9,-32712(gp)
  456794:	00000000 	nop
  456798:	273947b4 	addiu	t9,t9,18356
  45679c:	00000000 	nop
  4567a0:	0320f809 	jalr	t9
  4567a4:	00000000 	nop
  4567a8:	8fdc0010 	lw	gp,16(s8)
  4567ac:	afc20024 	sw	v0,36(s8)
  4567b0:	8fc20024 	lw	v0,36(s8)
  4567b4:	00000000 	nop
	? del_spi(f->our_spi, proto, &c->that.host_addr, &c->this.host_addr)
	: del_spi(f->attrs.spi, proto, &c->this.host_addr, &c->that.host_addr);
}
  4567b8:	03c0e821 	move	sp,s8
  4567bc:	8fbf0030 	lw	ra,48(sp)
  4567c0:	8fbe002c 	lw	s8,44(sp)
  4567c4:	27bd0038 	addiu	sp,sp,56
  4567c8:	03e00008 	jr	ra
  4567cc:	00000000 	nop

004567d0 <init_kernel>:
  4567d0:	3c1c0fbb 	lui	gp,0xfbb
  4567d4:	279c61a0 	addiu	gp,gp,24992
  4567d8:	0399e021 	addu	gp,gp,t9
  4567dc:	27bdffd8 	addiu	sp,sp,-40
  4567e0:	afbc0010 	sw	gp,16(sp)
  4567e4:	afbf0020 	sw	ra,32(sp)
  4567e8:	afbe001c 	sw	s8,28(sp)
  4567ec:	afbc0018 	sw	gp,24(sp)
  4567f0:	03a0f021 	move	s8,sp
#endif /* KLIPS */


void
init_kernel(void)
{
#ifdef KLIPS
    if (!no_klips)
  4567f4:	8f8286ec 	lw	v0,-30996(gp)
  4567f8:	00000000 	nop
  4567fc:	8c420000 	lw	v0,0(v0)
  456800:	00000000 	nop
  456804:	14400012 	bnez	v0,456850 <init_kernel+0x80>
  456808:	00000000 	nop
    {
	init_pfkey();
  45680c:	8f998038 	lw	t9,-32712(gp)
  456810:	00000000 	nop
  456814:	2739e904 	addiu	t9,t9,-5884
  456818:	00000000 	nop
  45681c:	0320f809 	jalr	t9
  456820:	00000000 	nop
  456824:	8fdc0010 	lw	gp,16(s8)
  456828:	00000000 	nop
	event_schedule(EVENT_SHUNT_SCAN, SHUNT_SCAN_INTERVAL, NULL);
  45682c:	24040002 	li	a0,2
  456830:	24050078 	li	a1,120
  456834:	00003021 	move	a2,zero
  456838:	8f998410 	lw	t9,-31728(gp)
  45683c:	00000000 	nop
  456840:	0320f809 	jalr	t9
  456844:	00000000 	nop
  456848:	8fdc0010 	lw	gp,16(s8)
  45684c:	00000000 	nop
    }
#endif
}
  456850:	03c0e821 	move	sp,s8
  456854:	8fbf0020 	lw	ra,32(sp)
  456858:	8fbe001c 	lw	s8,28(sp)
  45685c:	27bd0028 	addiu	sp,sp,40
  456860:	03e00008 	jr	ra
  456864:	00000000 	nop

00456868 <install_inbound_ipsec_sa>:
  456868:	3c1c0fbb 	lui	gp,0xfbb
  45686c:	279c6108 	addiu	gp,gp,24840
  456870:	0399e021 	addu	gp,gp,t9
  456874:	27bdffd0 	addiu	sp,sp,-48
  456878:	afbc0010 	sw	gp,16(sp)
  45687c:	afbf0028 	sw	ra,40(sp)
  456880:	afbe0024 	sw	s8,36(sp)
  456884:	afbc0020 	sw	gp,32(sp)
  456888:	03a0f021 	move	s8,sp
  45688c:	afc40030 	sw	a0,48(s8)

/* Note: install_inbound_ipsec_sa is only used by the Responder.
 * The Responder will subsequently use install_ipsec_sa for the outbound.
 * The Initiator uses install_ipsec_sa to install both at once.
 */
bool
install_inbound_ipsec_sa(struct state *st)
{
    struct connection *const c = st->st_connection;
  456890:	8fc20030 	lw	v0,48(s8)
  456894:	00000000 	nop
  456898:	8c42000c 	lw	v0,12(v0)
  45689c:	00000000 	nop
  4568a0:	afc20018 	sw	v0,24(s8)

    /* If our peer has a fixed-address client, check if we already
     * have a route for that client that conflicts.  We will take this
     * as proof that that route and the connections using it are
     * obsolete and should be eliminated.  Interestingly, this is
     * the only case in which we can tell that a connection is obsolete.
     */
    passert(c->kind != CK_TEMPLATE);
  4568a4:	8fc20018 	lw	v0,24(s8)
  4568a8:	00000000 	nop
  4568ac:	8c420194 	lw	v0,404(v0)
  4568b0:	00000000 	nop
  4568b4:	1440000e 	bnez	v0,4568f0 <install_inbound_ipsec_sa+0x88>
  4568b8:	00000000 	nop
  4568bc:	8f84802c 	lw	a0,-32724(gp)
  4568c0:	00000000 	nop
  4568c4:	24840e30 	addiu	a0,a0,3632
  4568c8:	8f85802c 	lw	a1,-32724(gp)
  4568cc:	00000000 	nop
  4568d0:	24a5fb28 	addiu	a1,a1,-1240
  4568d4:	240609d6 	li	a2,2518
  4568d8:	8f998bb8 	lw	t9,-29768(gp)
  4568dc:	00000000 	nop
  4568e0:	0320f809 	jalr	t9
  4568e4:	00000000 	nop
  4568e8:	8fdc0010 	lw	gp,16(s8)
  4568ec:	00000000 	nop
    if (c->that.has_client)
  4568f0:	8fc20018 	lw	v0,24(s8)
  4568f4:	00000000 	nop
  4568f8:	8c420164 	lw	v0,356(v0)
  4568fc:	00000000 	nop
  456900:	1040004b 	beqz	v0,456a30 <install_inbound_ipsec_sa+0x1c8>
  456904:	00000000 	nop
    {
	for (;;)
	{
	    struct connection *o;
	    o = route_owner(c, NULL);
  456908:	8fc40018 	lw	a0,24(s8)
  45690c:	00002821 	move	a1,zero
  456910:	8f9980fc 	lw	t9,-32516(gp)
  456914:	00000000 	nop
  456918:	0320f809 	jalr	t9
  45691c:	00000000 	nop
  456920:	8fdc0010 	lw	gp,16(s8)
  456924:	afc2001c 	sw	v0,28(s8)

	    if (o == NULL)
  456928:	8fc2001c 	lw	v0,28(s8)
  45692c:	00000000 	nop
  456930:	14400003 	bnez	v0,456940 <install_inbound_ipsec_sa+0xd8>
  456934:	00000000 	nop
		break;	/* nobody has a route */
  456938:	1000003d 	b	456a30 <install_inbound_ipsec_sa+0x1c8>
  45693c:	00000000 	nop

	    /* note: we ignore the client addresses at this end */
	    if (sameaddr(&o->that.host_addr, &c->that.host_addr)
	    && o->interface == c->interface)
  456940:	8fc2001c 	lw	v0,28(s8)
  456944:	00000000 	nop
  456948:	24430108 	addiu	v1,v0,264
  45694c:	8fc20018 	lw	v0,24(s8)
  456950:	00000000 	nop
  456954:	24420108 	addiu	v0,v0,264
  456958:	00602021 	move	a0,v1
  45695c:	00402821 	move	a1,v0
  456960:	8f998928 	lw	t9,-30424(gp)
  456964:	00000000 	nop
  456968:	0320f809 	jalr	t9
  45696c:	00000000 	nop
  456970:	8fdc0010 	lw	gp,16(s8)
  456974:	1040000c 	beqz	v0,4569a8 <install_inbound_ipsec_sa+0x140>
  456978:	00000000 	nop
  45697c:	8fc2001c 	lw	v0,28(s8)
  456980:	00000000 	nop
  456984:	8c430198 	lw	v1,408(v0)
  456988:	8fc20018 	lw	v0,24(s8)
  45698c:	00000000 	nop
  456990:	8c420198 	lw	v0,408(v0)
  456994:	00000000 	nop
  456998:	14620003 	bne	v1,v0,4569a8 <install_inbound_ipsec_sa+0x140>
  45699c:	00000000 	nop
		break;	/* existing route is compatible */
  4569a0:	10000023 	b	456a30 <install_inbound_ipsec_sa+0x1c8>
  4569a4:	00000000 	nop

	    loglog(RC_LOG_SERIOUS, "route to peer's client conflicts with \"%s\" %s; releasing old connection to free the route"
  4569a8:	8fc2001c 	lw	v0,28(s8)
  4569ac:	00000000 	nop
  4569b0:	24420108 	addiu	v0,v0,264
  4569b4:	00402021 	move	a0,v0
  4569b8:	8f998100 	lw	t9,-32512(gp)
  4569bc:	00000000 	nop
  4569c0:	0320f809 	jalr	t9
  4569c4:	00000000 	nop
  4569c8:	8fdc0010 	lw	gp,16(s8)
  4569cc:	00401821 	move	v1,v0
  4569d0:	24040003 	li	a0,3
  4569d4:	8f85802c 	lw	a1,-32724(gp)
  4569d8:	00000000 	nop
  4569dc:	24a50e48 	addiu	a1,a1,3656
  4569e0:	8fc2001c 	lw	v0,28(s8)
  4569e4:	00000000 	nop
  4569e8:	8c460000 	lw	a2,0(v0)
  4569ec:	00603821 	move	a3,v1
  4569f0:	8f998c48 	lw	t9,-29624(gp)
  4569f4:	00000000 	nop
  4569f8:	0320f809 	jalr	t9
  4569fc:	00000000 	nop
  456a00:	8fdc0010 	lw	gp,16(s8)
  456a04:	00000000 	nop
		, o->name, ip_str(&o->that.host_addr));
	    release_connection(o, FALSE);
  456a08:	8fc4001c 	lw	a0,28(s8)
  456a0c:	00002821 	move	a1,zero
  456a10:	8f9989c4 	lw	t9,-30268(gp)
  456a14:	00000000 	nop
  456a18:	0320f809 	jalr	t9
  456a1c:	00000000 	nop
  456a20:	8fdc0010 	lw	gp,16(s8)
  456a24:	00000000 	nop
  456a28:	1000ffb7 	b	456908 <install_inbound_ipsec_sa+0xa0>
  456a2c:	00000000 	nop
	}
    }

    /* check that we will be able to route and eroute */
    if (!could_route(c))
  456a30:	8fc40018 	lw	a0,24(s8)
  456a34:	8f998038 	lw	t9,-32712(gp)
  456a38:	00000000 	nop
  456a3c:	27390f5c 	addiu	t9,t9,3932
  456a40:	00000000 	nop
  456a44:	0320f809 	jalr	t9
  456a48:	00000000 	nop
  456a4c:	8fdc0010 	lw	gp,16(s8)
  456a50:	14400004 	bnez	v0,456a64 <install_inbound_ipsec_sa+0x1fc>
  456a54:	00000000 	nop
	return FALSE;
  456a58:	00001021 	move	v0,zero
  456a5c:	1000000b 	b	456a8c <install_inbound_ipsec_sa+0x224>
  456a60:	00000000 	nop

#ifdef KLIPS
    /* (attempt to) actually set up the SAs */
    return setup_half_ipsec_sa(st, TRUE);
  456a64:	8fc40030 	lw	a0,48(s8)
  456a68:	24050001 	li	a1,1
  456a6c:	8f998038 	lw	t9,-32712(gp)
  456a70:	00000000 	nop
  456a74:	27394a28 	addiu	t9,t9,18984
  456a78:	00000000 	nop
  456a7c:	0320f809 	jalr	t9
  456a80:	00000000 	nop
  456a84:	8fdc0010 	lw	gp,16(s8)
  456a88:	00000000 	nop
#else /* !KLIPS */
    DBG(DBG_CONTROL, DBG_log("install_inbound_ipsec_sa()"));
    return TRUE;
#endif /* !KLIPS */
}
  456a8c:	03c0e821 	move	sp,s8
  456a90:	8fbf0028 	lw	ra,40(sp)
  456a94:	8fbe0024 	lw	s8,36(sp)
  456a98:	27bd0030 	addiu	sp,sp,48
  456a9c:	03e00008 	jr	ra
  456aa0:	00000000 	nop

00456aa4 <route_and_eroute>:
  456aa4:	3c1c0fbb 	lui	gp,0xfbb
  456aa8:	279c5ecc 	addiu	gp,gp,24268
  456aac:	0399e021 	addu	gp,gp,t9
  456ab0:	27bdff98 	addiu	sp,sp,-104
  456ab4:	afbc0028 	sw	gp,40(sp)
  456ab8:	afbf0060 	sw	ra,96(sp)
  456abc:	afbe005c 	sw	s8,92(sp)
  456ac0:	afbc0058 	sw	gp,88(sp)
  456ac4:	03a0f021 	move	s8,sp
  456ac8:	afc40068 	sw	a0,104(s8)
  456acc:	afc5006c 	sw	a1,108(s8)

/* Install a route and then a prospective shunt eroute or an SA group eroute.
 * Assumption: could_route gave a go-ahead.
 * Any SA Group must have already been created.
 * On failure, steps will be unwound.
 */
static bool
route_and_eroute(struct connection *c USED_BY_KLIPS
, struct state *st USED_BY_KLIPS)
{
#ifdef KLIPS
    struct connection *ero	/* who, if anyone, owns our eroute? */
	, *ro = route_owner(c, &ero);
  456ad0:	8fc40068 	lw	a0,104(s8)
  456ad4:	27c50030 	addiu	a1,s8,48
  456ad8:	8f9980fc 	lw	t9,-32516(gp)
  456adc:	00000000 	nop
  456ae0:	0320f809 	jalr	t9
  456ae4:	00000000 	nop
  456ae8:	8fdc0028 	lw	gp,40(s8)
  456aec:	afc20034 	sw	v0,52(s8)
    bool eroute_installed = FALSE
  456af0:	afc00038 	sw	zero,56(s8)
	, firewall_notified = FALSE
  456af4:	afc0003c 	sw	zero,60(s8)
	, route_installed = FALSE;
  456af8:	afc00040 	sw	zero,64(s8)

    struct bare_shunt **bspp = (ero == NULL)
  456afc:	8fc20030 	lw	v0,48(s8)
  456b00:	00000000 	nop
  456b04:	1440001a 	bnez	v0,456b70 <route_and_eroute+0xcc>
  456b08:	00000000 	nop
  456b0c:	8fc40068 	lw	a0,104(s8)
  456b10:	8f998648 	lw	t9,-31160(gp)
  456b14:	00000000 	nop
  456b18:	0320f809 	jalr	t9
  456b1c:	00000000 	nop
  456b20:	8fdc0028 	lw	gp,40(s8)
  456b24:	00402821 	move	a1,v0
  456b28:	8fc20068 	lw	v0,104(s8)
  456b2c:	00000000 	nop
  456b30:	24430090 	addiu	v1,v0,144
  456b34:	8fc20068 	lw	v0,104(s8)
  456b38:	00000000 	nop
  456b3c:	904200cc 	lbu	v0,204(v0)
  456b40:	00602021 	move	a0,v1
  456b44:	00403021 	move	a2,v0
  456b48:	8f998038 	lw	t9,-32712(gp)
  456b4c:	00000000 	nop
  456b50:	27392214 	addiu	t9,t9,8724
  456b54:	00000000 	nop
  456b58:	0320f809 	jalr	t9
  456b5c:	00000000 	nop
  456b60:	8fdc0028 	lw	gp,40(s8)
  456b64:	afc20044 	sw	v0,68(s8)
  456b68:	10000002 	b	456b74 <route_and_eroute+0xd0>
  456b6c:	00000000 	nop
  456b70:	afc00044 	sw	zero,68(s8)
	? bare_shunt_ptr(&c->this.client, EffectivePeerClient(c), c->this.protocol) : NULL;

    /* install the eroute */

    passert(ero == NULL || ero == c);
  456b74:	8fc20030 	lw	v0,48(s8)
  456b78:	00000000 	nop
  456b7c:	10400013 	beqz	v0,456bcc <route_and_eroute+0x128>
  456b80:	00000000 	nop
  456b84:	8fc30030 	lw	v1,48(s8)
  456b88:	8fc20068 	lw	v0,104(s8)
  456b8c:	00000000 	nop
  456b90:	1062000e 	beq	v1,v0,456bcc <route_and_eroute+0x128>
  456b94:	00000000 	nop
  456b98:	8f84802c 	lw	a0,-32724(gp)
  456b9c:	00000000 	nop
  456ba0:	24840ea4 	addiu	a0,a0,3748
  456ba4:	8f85802c 	lw	a1,-32724(gp)
  456ba8:	00000000 	nop
  456bac:	24a5fb28 	addiu	a1,a1,-1240
  456bb0:	24060a0e 	li	a2,2574
  456bb4:	8f998bb8 	lw	t9,-29768(gp)
  456bb8:	00000000 	nop
  456bbc:	0320f809 	jalr	t9
  456bc0:	00000000 	nop
  456bc4:	8fdc0028 	lw	gp,40(s8)
  456bc8:	00000000 	nop
    if (ero != NULL || bspp != NULL)
  456bcc:	8fc20030 	lw	v0,48(s8)
  456bd0:	00000000 	nop
  456bd4:	14400007 	bnez	v0,456bf4 <route_and_eroute+0x150>
  456bd8:	00000000 	nop
  456bdc:	8fc20044 	lw	v0,68(s8)
  456be0:	00000000 	nop
  456be4:	14400003 	bnez	v0,456bf4 <route_and_eroute+0x150>
  456be8:	00000000 	nop
  456bec:	10000026 	b	456c88 <route_and_eroute+0x1e4>
  456bf0:	00000000 	nop
    {
	/* We're replacing an eroute */

	eroute_installed = st == NULL
  456bf4:	8fc2006c 	lw	v0,108(s8)
  456bf8:	00000000 	nop
  456bfc:	14400010 	bnez	v0,456c40 <route_and_eroute+0x19c>
  456c00:	00000000 	nop
  456c04:	8fc40068 	lw	a0,104(s8)
  456c08:	2405020e 	li	a1,526
  456c0c:	8f86802c 	lw	a2,-32724(gp)
  456c10:	00000000 	nop
  456c14:	24c60ebc 	addiu	a2,a2,3772
  456c18:	8f998038 	lw	t9,-32712(gp)
  456c1c:	00000000 	nop
  456c20:	273939d0 	addiu	t9,t9,14800
  456c24:	00000000 	nop
  456c28:	0320f809 	jalr	t9
  456c2c:	00000000 	nop
  456c30:	8fdc0028 	lw	gp,40(s8)
  456c34:	afc2004c 	sw	v0,76(s8)
  456c38:	1000000e 	b	456c74 <route_and_eroute+0x1d0>
  456c3c:	00000000 	nop
  456c40:	8fc4006c 	lw	a0,108(s8)
  456c44:	2405020e 	li	a1,526
  456c48:	8f86802c 	lw	a2,-32724(gp)
  456c4c:	00000000 	nop
  456c50:	24c60ebc 	addiu	a2,a2,3772
  456c54:	8f998038 	lw	t9,-32712(gp)
  456c58:	00000000 	nop
  456c5c:	273937b0 	addiu	t9,t9,14256
  456c60:	00000000 	nop
  456c64:	0320f809 	jalr	t9
  456c68:	00000000 	nop
  456c6c:	8fdc0028 	lw	gp,40(s8)
  456c70:	afc2004c 	sw	v0,76(s8)
  456c74:	8fc2004c 	lw	v0,76(s8)
  456c78:	00000000 	nop
  456c7c:	afc20038 	sw	v0,56(s8)
  456c80:	10000024 	b	456d14 <route_and_eroute+0x270>
  456c84:	00000000 	nop
	    ? shunt_eroute(c, ERO_REPLACE, "replace")
	    : sag_eroute(st, ERO_REPLACE, "replace");

	/* remember to free bspp iff we make it out of here alive */
    }
    else
    {
	/* we're adding an eroute */
	eroute_installed = st == NULL
  456c88:	8fc2006c 	lw	v0,108(s8)
  456c8c:	00000000 	nop
  456c90:	14400010 	bnez	v0,456cd4 <route_and_eroute+0x230>
  456c94:	00000000 	nop
  456c98:	8fc40068 	lw	a0,104(s8)
  456c9c:	2405000e 	li	a1,14
  456ca0:	8f86802c 	lw	a2,-32724(gp)
  456ca4:	00000000 	nop
  456ca8:	24c6fc88 	addiu	a2,a2,-888
  456cac:	8f998038 	lw	t9,-32712(gp)
  456cb0:	00000000 	nop
  456cb4:	273939d0 	addiu	t9,t9,14800
  456cb8:	00000000 	nop
  456cbc:	0320f809 	jalr	t9
  456cc0:	00000000 	nop
  456cc4:	8fdc0028 	lw	gp,40(s8)
  456cc8:	afc20050 	sw	v0,80(s8)
  456ccc:	1000000e 	b	456d08 <route_and_eroute+0x264>
  456cd0:	00000000 	nop
  456cd4:	8fc4006c 	lw	a0,108(s8)
  456cd8:	2405000e 	li	a1,14
  456cdc:	8f86802c 	lw	a2,-32724(gp)
  456ce0:	00000000 	nop
  456ce4:	24c6fc88 	addiu	a2,a2,-888
  456ce8:	8f998038 	lw	t9,-32712(gp)
  456cec:	00000000 	nop
  456cf0:	273937b0 	addiu	t9,t9,14256
  456cf4:	00000000 	nop
  456cf8:	0320f809 	jalr	t9
  456cfc:	00000000 	nop
  456d00:	8fdc0028 	lw	gp,40(s8)
  456d04:	afc20050 	sw	v0,80(s8)
  456d08:	8fc20050 	lw	v0,80(s8)
  456d0c:	00000000 	nop
  456d10:	afc20038 	sw	v0,56(s8)
	    ? shunt_eroute(c, ERO_ADD, "add")
	    : sag_eroute(st, ERO_ADD, "add");
    }

    /* notify the firewall of a new tunnel */

    if (eroute_installed)
  456d14:	8fc20038 	lw	v0,56(s8)
  456d18:	00000000 	nop
  456d1c:	10400020 	beqz	v0,456da0 <route_and_eroute+0x2fc>
  456d20:	00000000 	nop
    {
	/* do we have to notify the firewall?  Yes, if we are installing
	 * a tunnel eroute and the firewall wasn't notified
	 * for a previous tunnel with the same clients.  Any Previous
	 * tunnel would have to be for our connection, so the actual
	 * test is simple.
	 */
	firewall_notified = st == NULL	/* not a tunnel eroute */
  456d24:	afc00054 	sw	zero,84(s8)
  456d28:	8fc2006c 	lw	v0,108(s8)
  456d2c:	00000000 	nop
  456d30:	10400016 	beqz	v0,456d8c <route_and_eroute+0x2e8>
  456d34:	00000000 	nop
  456d38:	8fc20068 	lw	v0,104(s8)
  456d3c:	00000000 	nop
  456d40:	8c4201ac 	lw	v0,428(v0)
  456d44:	00000000 	nop
  456d48:	14400010 	bnez	v0,456d8c <route_and_eroute+0x2e8>
  456d4c:	00000000 	nop
  456d50:	8fc40068 	lw	a0,104(s8)
  456d54:	8f85802c 	lw	a1,-32724(gp)
  456d58:	00000000 	nop
  456d5c:	24a50ec4 	addiu	a1,a1,3780
  456d60:	8f998038 	lw	t9,-32712(gp)
  456d64:	00000000 	nop
  456d68:	27390280 	addiu	t9,t9,640
  456d6c:	00000000 	nop
  456d70:	0320f809 	jalr	t9
  456d74:	00000000 	nop
  456d78:	8fdc0028 	lw	gp,40(s8)
  456d7c:	14400003 	bnez	v0,456d8c <route_and_eroute+0x2e8>
  456d80:	00000000 	nop
  456d84:	10000003 	b	456d94 <route_and_eroute+0x2f0>
  456d88:	00000000 	nop
  456d8c:	24020001 	li	v0,1
  456d90:	afc20054 	sw	v0,84(s8)
  456d94:	8fc20054 	lw	v0,84(s8)
  456d98:	00000000 	nop
  456d9c:	afc2003c 	sw	v0,60(s8)
	    || c->eroute_owner != SOS_NOBODY	/* already notified */
	    || do_command(c, "up");	/* go ahead and notify */
    }

    /* install the route */

    if (!firewall_notified)
  456da0:	8fc2003c 	lw	v0,60(s8)
  456da4:	00000000 	nop
  456da8:	14400003 	bnez	v0,456db8 <route_and_eroute+0x314>
  456dac:	00000000 	nop
  456db0:	100000ab 	b	457060 <route_and_eroute+0x5bc>
  456db4:	00000000 	nop
    {
	/* we're in trouble -- don't do routing */
    }
    else if (ro == NULL)
  456db8:	8fc20034 	lw	v0,52(s8)
  456dbc:	00000000 	nop
  456dc0:	1440001b 	bnez	v0,456e30 <route_and_eroute+0x38c>
  456dc4:	00000000 	nop
    {
	/* a new route: no deletion required, but preparation is */
	(void) do_command(c, "prepare");	/* just in case; ignore failure */
  456dc8:	8fc40068 	lw	a0,104(s8)
  456dcc:	8f85802c 	lw	a1,-32724(gp)
  456dd0:	00000000 	nop
  456dd4:	24a50ec8 	addiu	a1,a1,3784
  456dd8:	8f998038 	lw	t9,-32712(gp)
  456ddc:	00000000 	nop
  456de0:	27390280 	addiu	t9,t9,640
  456de4:	00000000 	nop
  456de8:	0320f809 	jalr	t9
  456dec:	00000000 	nop
  456df0:	8fdc0028 	lw	gp,40(s8)
  456df4:	00000000 	nop
	route_installed = do_command(c, "route");
  456df8:	8fc40068 	lw	a0,104(s8)
  456dfc:	8f85802c 	lw	a1,-32724(gp)
  456e00:	00000000 	nop
  456e04:	24a50ed0 	addiu	a1,a1,3792
  456e08:	8f998038 	lw	t9,-32712(gp)
  456e0c:	00000000 	nop
  456e10:	27390280 	addiu	t9,t9,640
  456e14:	00000000 	nop
  456e18:	0320f809 	jalr	t9
  456e1c:	00000000 	nop
  456e20:	8fdc0028 	lw	gp,40(s8)
  456e24:	afc20040 	sw	v0,64(s8)
  456e28:	1000008d 	b	457060 <route_and_eroute+0x5bc>
  456e2c:	00000000 	nop
    }
    else if (routed(c->routing)
    || routes_agree(ro, c))
  456e30:	8fc20068 	lw	v0,104(s8)
  456e34:	00000000 	nop
  456e38:	8c42019c 	lw	v0,412(v0)
  456e3c:	00000000 	nop
  456e40:	2c420002 	sltiu	v0,v0,2
  456e44:	1040001b 	beqz	v0,456eb4 <route_and_eroute+0x410>
  456e48:	00000000 	nop
  456e4c:	8fc20034 	lw	v0,52(s8)
  456e50:	00000000 	nop
  456e54:	8c430198 	lw	v1,408(v0)
  456e58:	8fc20068 	lw	v0,104(s8)
  456e5c:	00000000 	nop
  456e60:	8c420198 	lw	v0,408(v0)
  456e64:	00000000 	nop
  456e68:	14620016 	bne	v1,v0,456ec4 <route_and_eroute+0x420>
  456e6c:	00000000 	nop
  456e70:	8fc20034 	lw	v0,52(s8)
  456e74:	00000000 	nop
  456e78:	24430074 	addiu	v1,v0,116
  456e7c:	8fc20068 	lw	v0,104(s8)
  456e80:	00000000 	nop
  456e84:	24420074 	addiu	v0,v0,116
  456e88:	00602021 	move	a0,v1
  456e8c:	00402821 	move	a1,v0
  456e90:	8f998928 	lw	t9,-30424(gp)
  456e94:	00000000 	nop
  456e98:	0320f809 	jalr	t9
  456e9c:	00000000 	nop
  456ea0:	8fdc0028 	lw	gp,40(s8)
  456ea4:	14400003 	bnez	v0,456eb4 <route_and_eroute+0x410>
  456ea8:	00000000 	nop
  456eac:	10000005 	b	456ec4 <route_and_eroute+0x420>
  456eb0:	00000000 	nop
    {
	route_installed = TRUE;	/* nothing to be done */
  456eb4:	24020001 	li	v0,1
  456eb8:	afc20040 	sw	v0,64(s8)
  456ebc:	10000068 	b	457060 <route_and_eroute+0x5bc>
  456ec0:	00000000 	nop
    }
    else
    {
	/* Some other connection must own the route
	 * and the route must disagree.  But since could_route
	 * must have allowed our stealing it, we'll do so.
	 *
	 * A feature of LINUX allows us to install the new route
	 * before deleting the old if the nexthops differ.
	 * This reduces the "window of vulnerability" when packets
	 * might flow in the clear.
	 */
	if (sameaddr(&c->this.host_nexthop, &ro->this.host_nexthop))
  456ec4:	8fc20068 	lw	v0,104(s8)
  456ec8:	00000000 	nop
  456ecc:	24430074 	addiu	v1,v0,116
  456ed0:	8fc20034 	lw	v0,52(s8)
  456ed4:	00000000 	nop
  456ed8:	24420074 	addiu	v0,v0,116
  456edc:	00602021 	move	a0,v1
  456ee0:	00402821 	move	a1,v0
  456ee4:	8f998928 	lw	t9,-30424(gp)
  456ee8:	00000000 	nop
  456eec:	0320f809 	jalr	t9
  456ef0:	00000000 	nop
  456ef4:	8fdc0028 	lw	gp,40(s8)
  456ef8:	1040001b 	beqz	v0,456f68 <route_and_eroute+0x4c4>
  456efc:	00000000 	nop
	{
	    (void) do_command(ro, "unroute");
  456f00:	8fc40034 	lw	a0,52(s8)
  456f04:	8f85802c 	lw	a1,-32724(gp)
  456f08:	00000000 	nop
  456f0c:	24a503dc 	addiu	a1,a1,988
  456f10:	8f998038 	lw	t9,-32712(gp)
  456f14:	00000000 	nop
  456f18:	27390280 	addiu	t9,t9,640
  456f1c:	00000000 	nop
  456f20:	0320f809 	jalr	t9
  456f24:	00000000 	nop
  456f28:	8fdc0028 	lw	gp,40(s8)
  456f2c:	00000000 	nop
	    route_installed = do_command(c, "route");
  456f30:	8fc40068 	lw	a0,104(s8)
  456f34:	8f85802c 	lw	a1,-32724(gp)
  456f38:	00000000 	nop
  456f3c:	24a50ed0 	addiu	a1,a1,3792
  456f40:	8f998038 	lw	t9,-32712(gp)
  456f44:	00000000 	nop
  456f48:	27390280 	addiu	t9,t9,640
  456f4c:	00000000 	nop
  456f50:	0320f809 	jalr	t9
  456f54:	00000000 	nop
  456f58:	8fdc0028 	lw	gp,40(s8)
  456f5c:	afc20040 	sw	v0,64(s8)
  456f60:	10000019 	b	456fc8 <route_and_eroute+0x524>
  456f64:	00000000 	nop
	}
	else
	{
	    route_installed = do_command(c, "route");
  456f68:	8fc40068 	lw	a0,104(s8)
  456f6c:	8f85802c 	lw	a1,-32724(gp)
  456f70:	00000000 	nop
  456f74:	24a50ed0 	addiu	a1,a1,3792
  456f78:	8f998038 	lw	t9,-32712(gp)
  456f7c:	00000000 	nop
  456f80:	27390280 	addiu	t9,t9,640
  456f84:	00000000 	nop
  456f88:	0320f809 	jalr	t9
  456f8c:	00000000 	nop
  456f90:	8fdc0028 	lw	gp,40(s8)
  456f94:	afc20040 	sw	v0,64(s8)
	    (void) do_command(ro, "unroute");
  456f98:	8fc40034 	lw	a0,52(s8)
  456f9c:	8f85802c 	lw	a1,-32724(gp)
  456fa0:	00000000 	nop
  456fa4:	24a503dc 	addiu	a1,a1,988
  456fa8:	8f998038 	lw	t9,-32712(gp)
  456fac:	00000000 	nop
  456fb0:	27390280 	addiu	t9,t9,640
  456fb4:	00000000 	nop
  456fb8:	0320f809 	jalr	t9
  456fbc:	00000000 	nop
  456fc0:	8fdc0028 	lw	gp,40(s8)
  456fc4:	00000000 	nop
	}

	/* record unrouting */
	if (route_installed)
  456fc8:	8fc20040 	lw	v0,64(s8)
  456fcc:	00000000 	nop
  456fd0:	10400023 	beqz	v0,457060 <route_and_eroute+0x5bc>
  456fd4:	00000000 	nop
	{
	    do {
		passert(!erouted(ro->routing));
  456fd8:	8fc20034 	lw	v0,52(s8)
  456fdc:	00000000 	nop
  456fe0:	8c42019c 	lw	v0,412(v0)
  456fe4:	00000000 	nop
  456fe8:	1040000e 	beqz	v0,457024 <route_and_eroute+0x580>
  456fec:	00000000 	nop
  456ff0:	8f84802c 	lw	a0,-32724(gp)
  456ff4:	00000000 	nop
  456ff8:	24840ed8 	addiu	a0,a0,3800
  456ffc:	8f85802c 	lw	a1,-32724(gp)
  457000:	00000000 	nop
  457004:	24a5fb28 	addiu	a1,a1,-1240
  457008:	24060a5b 	li	a2,2651
  45700c:	8f998bb8 	lw	t9,-29768(gp)
  457010:	00000000 	nop
  457014:	0320f809 	jalr	t9
  457018:	00000000 	nop
  45701c:	8fdc0028 	lw	gp,40(s8)
  457020:	00000000 	nop
		ro->routing = RT_UNROUTED;
  457024:	8fc20034 	lw	v0,52(s8)
  457028:	00000000 	nop
  45702c:	ac40019c 	sw	zero,412(v0)
		ro = route_owner(c, NULL);	/* no need to keep old value */
  457030:	8fc40068 	lw	a0,104(s8)
  457034:	00002821 	move	a1,zero
  457038:	8f9980fc 	lw	t9,-32516(gp)
  45703c:	00000000 	nop
  457040:	0320f809 	jalr	t9
  457044:	00000000 	nop
  457048:	8fdc0028 	lw	gp,40(s8)
  45704c:	afc20034 	sw	v0,52(s8)
	    } while (ro != NULL);
  457050:	8fc20034 	lw	v0,52(s8)
  457054:	00000000 	nop
  457058:	1440ffdf 	bnez	v0,456fd8 <route_and_eroute+0x534>
  45705c:	00000000 	nop
	}
    }

    /* all done -- clean up */
    if (route_installed)
  457060:	8fc20040 	lw	v0,64(s8)
  457064:	00000000 	nop
  457068:	10400038 	beqz	v0,45714c <route_and_eroute+0x6a8>
  45706c:	00000000 	nop
    {
	/* Success! */

	if (bspp != NULL)
  457070:	8fc20044 	lw	v0,68(s8)
  457074:	00000000 	nop
  457078:	1040000a 	beqz	v0,4570a4 <route_and_eroute+0x600>
  45707c:	00000000 	nop
	    free_bare_shunt(bspp);
  457080:	8fc40044 	lw	a0,68(s8)
  457084:	8f998038 	lw	t9,-32712(gp)
  457088:	00000000 	nop
  45708c:	273923b8 	addiu	t9,t9,9144
  457090:	00000000 	nop
  457094:	0320f809 	jalr	t9
  457098:	00000000 	nop
  45709c:	8fdc0028 	lw	gp,40(s8)
  4570a0:	00000000 	nop

	if (st == NULL)
  4570a4:	8fc2006c 	lw	v0,108(s8)
  4570a8:	00000000 	nop
  4570ac:	1440001a 	bnez	v0,457118 <route_and_eroute+0x674>
  4570b0:	00000000 	nop
	{
	    passert(c->eroute_owner == SOS_NOBODY);
  4570b4:	8fc20068 	lw	v0,104(s8)
  4570b8:	00000000 	nop
  4570bc:	8c4201ac 	lw	v0,428(v0)
  4570c0:	00000000 	nop
  4570c4:	1040000e 	beqz	v0,457100 <route_and_eroute+0x65c>
  4570c8:	00000000 	nop
  4570cc:	8f84802c 	lw	a0,-32724(gp)
  4570d0:	00000000 	nop
  4570d4:	24840ef0 	addiu	a0,a0,3824
  4570d8:	8f85802c 	lw	a1,-32724(gp)
  4570dc:	00000000 	nop
  4570e0:	24a5fb28 	addiu	a1,a1,-1240
  4570e4:	24060a6c 	li	a2,2668
  4570e8:	8f998bb8 	lw	t9,-29768(gp)
  4570ec:	00000000 	nop
  4570f0:	0320f809 	jalr	t9
  4570f4:	00000000 	nop
  4570f8:	8fdc0028 	lw	gp,40(s8)
  4570fc:	00000000 	nop
	    c->routing = RT_ROUTED_PROSPECTIVE;
  457100:	24030002 	li	v1,2
  457104:	8fc20068 	lw	v0,104(s8)
  457108:	00000000 	nop
  45710c:	ac43019c 	sw	v1,412(v0)
  457110:	1000000b 	b	457140 <route_and_eroute+0x69c>
  457114:	00000000 	nop
	}
	else
	{
	    c->routing = RT_ROUTED_TUNNEL;
  457118:	24030005 	li	v1,5
  45711c:	8fc20068 	lw	v0,104(s8)
  457120:	00000000 	nop
  457124:	ac43019c 	sw	v1,412(v0)
	    c->eroute_owner = st->st_serialno;
  457128:	8fc2006c 	lw	v0,108(s8)
  45712c:	00000000 	nop
  457130:	8c430000 	lw	v1,0(v0)
  457134:	8fc20068 	lw	v0,104(s8)
  457138:	00000000 	nop
  45713c:	ac4301ac 	sw	v1,428(v0)
	}

	return TRUE;
  457140:	24020001 	li	v0,1
  457144:	1000009c 	b	4573b8 <route_and_eroute+0x914>
  457148:	00000000 	nop
    }
    else
    {
	/* Failure!  Unwind our work. */
	if (firewall_notified && c->eroute_owner == SOS_NOBODY)
  45714c:	8fc2003c 	lw	v0,60(s8)
  457150:	00000000 	nop
  457154:	10400013 	beqz	v0,4571a4 <route_and_eroute+0x700>
  457158:	00000000 	nop
  45715c:	8fc20068 	lw	v0,104(s8)
  457160:	00000000 	nop
  457164:	8c4201ac 	lw	v0,428(v0)
  457168:	00000000 	nop
  45716c:	1440000d 	bnez	v0,4571a4 <route_and_eroute+0x700>
  457170:	00000000 	nop
	    (void) do_command(c, "down");
  457174:	8fc40068 	lw	a0,104(s8)
  457178:	8f85802c 	lw	a1,-32724(gp)
  45717c:	00000000 	nop
  457180:	24a50f10 	addiu	a1,a1,3856
  457184:	8f998038 	lw	t9,-32712(gp)
  457188:	00000000 	nop
  45718c:	27390280 	addiu	t9,t9,640
  457190:	00000000 	nop
  457194:	0320f809 	jalr	t9
  457198:	00000000 	nop
  45719c:	8fdc0028 	lw	gp,40(s8)
  4571a0:	00000000 	nop

	if (eroute_installed)
  4571a4:	8fc20038 	lw	v0,56(s8)
  4571a8:	00000000 	nop
  4571ac:	10400081 	beqz	v0,4573b4 <route_and_eroute+0x910>
  4571b0:	00000000 	nop
	{
	    /* Restore original eroute, if we can.
	     * Since there is nothing much to be done if the restoration
	     * fails, ignore success or failure.
	     */
	    if (bspp != NULL)
  4571b4:	8fc20044 	lw	v0,68(s8)
  4571b8:	00000000 	nop
  4571bc:	1040002b 	beqz	v0,45726c <route_and_eroute+0x7c8>
  4571c0:	00000000 	nop
	    {
		/* Restore old bare_shunt.
		 * I don't think that this case is very likely.
		 * Normally a bare shunt would have been assigned
		 * to a connection before we've gotten this far.
		 */
		struct bare_shunt *bs = *bspp;
  4571c4:	8fc20044 	lw	v0,68(s8)
  4571c8:	00000000 	nop
  4571cc:	8c420000 	lw	v0,0(v0)
  4571d0:	00000000 	nop
  4571d4:	afc20048 	sw	v0,72(s8)

		(void) raw_eroute(&bs->said.dst	/* should be useless */
  4571d8:	8fc20048 	lw	v0,72(s8)
  4571dc:	00000000 	nop
  4571e0:	24440040 	addiu	a0,v0,64
  4571e4:	8fc20048 	lw	v0,72(s8)
  4571e8:	00000000 	nop
  4571ec:	24460040 	addiu	a2,v0,64
  4571f0:	8fc20048 	lw	v0,72(s8)
  4571f4:	00000000 	nop
  4571f8:	24430020 	addiu	v1,v0,32
  4571fc:	8fc20048 	lw	v0,72(s8)
  457200:	00000000 	nop
  457204:	8c42005c 	lw	v0,92(v0)
  457208:	00000000 	nop
  45720c:	afa20010 	sw	v0,16(sp)
  457210:	afa00014 	sw	zero,20(sp)
  457214:	2402003d 	li	v0,61
  457218:	afa20018 	sw	v0,24(sp)
  45721c:	2402000b 	li	v0,11
  457220:	afa2001c 	sw	v0,28(sp)
  457224:	2402020e 	li	v0,526
  457228:	afa20020 	sw	v0,32(sp)
  45722c:	8f82802c 	lw	v0,-32724(gp)
  457230:	00000000 	nop
  457234:	24420f18 	addiu	v0,v0,3864
  457238:	00000000 	nop
  45723c:	afa20024 	sw	v0,36(sp)
  457240:	8fc50048 	lw	a1,72(s8)
  457244:	00603821 	move	a3,v1
  457248:	8f998038 	lw	t9,-32712(gp)
  45724c:	00000000 	nop
  457250:	27392680 	addiu	t9,t9,9856
  457254:	00000000 	nop
  457258:	0320f809 	jalr	t9
  45725c:	00000000 	nop
  457260:	8fdc0028 	lw	gp,40(s8)
  457264:	10000053 	b	4573b4 <route_and_eroute+0x910>
  457268:	00000000 	nop
		    , &bs->ours
		    , &bs->said.dst	/* should be useless */
		    , &bs->his
		    , bs->said.spi	/* network order */
		    , 0
		    , SA_INT
		    , SADB_X_SATYPE_INT
		    , ERO_REPLACE, "restore");
	    }
	    else if (ero != NULL)
  45726c:	8fc20030 	lw	v0,48(s8)
  457270:	00000000 	nop
  457274:	10400030 	beqz	v0,457338 <route_and_eroute+0x894>
  457278:	00000000 	nop
	    {
		/* restore ero's former glory */
		if (ero->eroute_owner == SOS_NOBODY)
  45727c:	8fc20030 	lw	v0,48(s8)
  457280:	00000000 	nop
  457284:	8c4201ac 	lw	v0,428(v0)
  457288:	00000000 	nop
  45728c:	1440000f 	bnez	v0,4572cc <route_and_eroute+0x828>
  457290:	00000000 	nop
		{
		    (void) shunt_eroute(ero, ERO_REPLACE, "restore");
  457294:	8fc40030 	lw	a0,48(s8)
  457298:	2405020e 	li	a1,526
  45729c:	8f86802c 	lw	a2,-32724(gp)
  4572a0:	00000000 	nop
  4572a4:	24c60f18 	addiu	a2,a2,3864
  4572a8:	8f998038 	lw	t9,-32712(gp)
  4572ac:	00000000 	nop
  4572b0:	273939d0 	addiu	t9,t9,14800
  4572b4:	00000000 	nop
  4572b8:	0320f809 	jalr	t9
  4572bc:	00000000 	nop
  4572c0:	8fdc0028 	lw	gp,40(s8)
  4572c4:	1000003b 	b	4573b4 <route_and_eroute+0x910>
  4572c8:	00000000 	nop
		}
		else
		{
		    /* Try to find state that owned eroute.
		     * Don't do anything if it cannot be found.
		     * This case isn't likely since we don't run
		     * the updown script when replacing a SA group
		     * with its successor (for the same conn).
		     */
		    struct state *ost = state_with_serialno(ero->eroute_owner);
  4572cc:	8fc20030 	lw	v0,48(s8)
  4572d0:	00000000 	nop
  4572d4:	8c4401ac 	lw	a0,428(v0)
  4572d8:	8f99873c 	lw	t9,-30916(gp)
  4572dc:	00000000 	nop
  4572e0:	0320f809 	jalr	t9
  4572e4:	00000000 	nop
  4572e8:	8fdc0028 	lw	gp,40(s8)
  4572ec:	afc20048 	sw	v0,72(s8)

		    if (ost != NULL)
  4572f0:	8fc20048 	lw	v0,72(s8)
  4572f4:	00000000 	nop
  4572f8:	1040002e 	beqz	v0,4573b4 <route_and_eroute+0x910>
  4572fc:	00000000 	nop
			(void) sag_eroute(ost, ERO_REPLACE, "restore");
  457300:	8fc40048 	lw	a0,72(s8)
  457304:	2405020e 	li	a1,526
  457308:	8f86802c 	lw	a2,-32724(gp)
  45730c:	00000000 	nop
  457310:	24c60f18 	addiu	a2,a2,3864
  457314:	8f998038 	lw	t9,-32712(gp)
  457318:	00000000 	nop
  45731c:	273937b0 	addiu	t9,t9,14256
  457320:	00000000 	nop
  457324:	0320f809 	jalr	t9
  457328:	00000000 	nop
  45732c:	8fdc0028 	lw	gp,40(s8)
  457330:	10000020 	b	4573b4 <route_and_eroute+0x910>
  457334:	00000000 	nop
		}
	    }
	    else
	    {
		/* there was no previous eroute: delete whatever we installed */
		if (st == NULL)
  457338:	8fc2006c 	lw	v0,108(s8)
  45733c:	00000000 	nop
  457340:	1440000f 	bnez	v0,457380 <route_and_eroute+0x8dc>
  457344:	00000000 	nop
		    (void) shunt_eroute(c, ERO_DELETE, "delete");
  457348:	8fc40068 	lw	a0,104(s8)
  45734c:	2405000f 	li	a1,15
  457350:	8f86802c 	lw	a2,-32724(gp)
  457354:	00000000 	nop
  457358:	24c603d4 	addiu	a2,a2,980
  45735c:	8f998038 	lw	t9,-32712(gp)
  457360:	00000000 	nop
  457364:	273939d0 	addiu	t9,t9,14800
  457368:	00000000 	nop
  45736c:	0320f809 	jalr	t9
  457370:	00000000 	nop
  457374:	8fdc0028 	lw	gp,40(s8)
  457378:	1000000e 	b	4573b4 <route_and_eroute+0x910>
  45737c:	00000000 	nop
		else
		    (void) sag_eroute(st, ERO_DELETE, "delete");
  457380:	8fc4006c 	lw	a0,108(s8)
  457384:	2405000f 	li	a1,15
  457388:	8f86802c 	lw	a2,-32724(gp)
  45738c:	00000000 	nop
  457390:	24c603d4 	addiu	a2,a2,980
  457394:	8f998038 	lw	t9,-32712(gp)
  457398:	00000000 	nop
  45739c:	273937b0 	addiu	t9,t9,14256
  4573a0:	00000000 	nop
  4573a4:	0320f809 	jalr	t9
  4573a8:	00000000 	nop
  4573ac:	8fdc0028 	lw	gp,40(s8)
  4573b0:	00000000 	nop
	    }
	}

	return FALSE;
  4573b4:	00001021 	move	v0,zero
    }
#else /* !KLIPS */
    return TRUE;
#endif /* !KLIPS */
}
  4573b8:	03c0e821 	move	sp,s8
  4573bc:	8fbf0060 	lw	ra,96(sp)
  4573c0:	8fbe005c 	lw	s8,92(sp)
  4573c4:	27bd0068 	addiu	sp,sp,104
  4573c8:	03e00008 	jr	ra
  4573cc:	00000000 	nop

004573d0 <install_ipsec_sa>:
  4573d0:	3c1c0fbb 	lui	gp,0xfbb
  4573d4:	279c55a0 	addiu	gp,gp,21920
  4573d8:	0399e021 	addu	gp,gp,t9
  4573dc:	27bdffd8 	addiu	sp,sp,-40
  4573e0:	afbc0010 	sw	gp,16(sp)
  4573e4:	afbf0020 	sw	ra,32(sp)
  4573e8:	afbe001c 	sw	s8,28(sp)
  4573ec:	afbc0018 	sw	gp,24(sp)
  4573f0:	03a0f021 	move	s8,sp
  4573f4:	afc40028 	sw	a0,40(s8)
  4573f8:	afc5002c 	sw	a1,44(s8)

bool
install_ipsec_sa(struct state *st, bool inbound_also USED_BY_KLIPS)
{
    if (!could_route(st->st_connection))
  4573fc:	8fc20028 	lw	v0,40(s8)
  457400:	00000000 	nop
  457404:	8c44000c 	lw	a0,12(v0)
  457408:	8f998038 	lw	t9,-32712(gp)
  45740c:	00000000 	nop
  457410:	27390f5c 	addiu	t9,t9,3932
  457414:	00000000 	nop
  457418:	0320f809 	jalr	t9
  45741c:	00000000 	nop
  457420:	8fdc0010 	lw	gp,16(s8)
  457424:	14400004 	bnez	v0,457438 <install_ipsec_sa+0x68>
  457428:	00000000 	nop
	return FALSE;
  45742c:	00001021 	move	v0,zero
  457430:	10000039 	b	457518 <install_ipsec_sa+0x148>
  457434:	00000000 	nop

#ifdef KLIPS
    /* (attempt to) actually set up the SA group */
    if ((inbound_also && !setup_half_ipsec_sa(st, TRUE))
    || !setup_half_ipsec_sa(st, FALSE))
  457438:	8fc2002c 	lw	v0,44(s8)
  45743c:	00000000 	nop
  457440:	1040000e 	beqz	v0,45747c <install_ipsec_sa+0xac>
  457444:	00000000 	nop
  457448:	8fc40028 	lw	a0,40(s8)
  45744c:	24050001 	li	a1,1
  457450:	8f998038 	lw	t9,-32712(gp)
  457454:	00000000 	nop
  457458:	27394a28 	addiu	t9,t9,18984
  45745c:	00000000 	nop
  457460:	0320f809 	jalr	t9
  457464:	00000000 	nop
  457468:	8fdc0010 	lw	gp,16(s8)
  45746c:	14400003 	bnez	v0,45747c <install_ipsec_sa+0xac>
  457470:	00000000 	nop
  457474:	1000000c 	b	4574a8 <install_ipsec_sa+0xd8>
  457478:	00000000 	nop
  45747c:	8fc40028 	lw	a0,40(s8)
  457480:	00002821 	move	a1,zero
  457484:	8f998038 	lw	t9,-32712(gp)
  457488:	00000000 	nop
  45748c:	27394a28 	addiu	t9,t9,18984
  457490:	00000000 	nop
  457494:	0320f809 	jalr	t9
  457498:	00000000 	nop
  45749c:	8fdc0010 	lw	gp,16(s8)
  4574a0:	14400004 	bnez	v0,4574b4 <install_ipsec_sa+0xe4>
  4574a4:	00000000 	nop
	return FALSE;
  4574a8:	00001021 	move	v0,zero
  4574ac:	1000001a 	b	457518 <install_ipsec_sa+0x148>
  4574b0:	00000000 	nop

    if (!route_and_eroute(st->st_connection, st))
  4574b4:	8fc20028 	lw	v0,40(s8)
  4574b8:	00000000 	nop
  4574bc:	8c44000c 	lw	a0,12(v0)
  4574c0:	8fc50028 	lw	a1,40(s8)
  4574c4:	8f998038 	lw	t9,-32712(gp)
  4574c8:	00000000 	nop
  4574cc:	27396aa4 	addiu	t9,t9,27300
  4574d0:	00000000 	nop
  4574d4:	0320f809 	jalr	t9
  4574d8:	00000000 	nop
  4574dc:	8fdc0010 	lw	gp,16(s8)
  4574e0:	1440000c 	bnez	v0,457514 <install_ipsec_sa+0x144>
  4574e4:	00000000 	nop
    {
	delete_ipsec_sa(st, FALSE);
  4574e8:	8fc40028 	lw	a0,40(s8)
  4574ec:	00002821 	move	a1,zero
  4574f0:	8f9989d4 	lw	t9,-30252(gp)
  4574f4:	00000000 	nop
  4574f8:	0320f809 	jalr	t9
  4574fc:	00000000 	nop
  457500:	8fdc0010 	lw	gp,16(s8)
  457504:	00000000 	nop
	return FALSE;
  457508:	00001021 	move	v0,zero
  45750c:	10000002 	b	457518 <install_ipsec_sa+0x148>
  457510:	00000000 	nop
    }
#else /* !KLIPS */
    if (!could_route(st->st_connection))
	return FALSE;

    DBG(DBG_CONTROL, DBG_log("install_ipsec_sa() %s"
	, inbound_also? "inbound and oubound" : "outbound only"));
#endif /* !KLIPS */

    return TRUE;
  457514:	24020001 	li	v0,1
}
  457518:	03c0e821 	move	sp,s8
  45751c:	8fbf0020 	lw	ra,32(sp)
  457520:	8fbe001c 	lw	s8,28(sp)
  457524:	27bd0028 	addiu	sp,sp,40
  457528:	03e00008 	jr	ra
  45752c:	00000000 	nop

00457530 <delete_ipsec_sa>:
  457530:	3c1c0fbb 	lui	gp,0xfbb
  457534:	279c5440 	addiu	gp,gp,21568
  457538:	0399e021 	addu	gp,gp,t9
  45753c:	27bdffc8 	addiu	sp,sp,-56
  457540:	afbc0010 	sw	gp,16(sp)
  457544:	afbf0030 	sw	ra,48(sp)
  457548:	afbe002c 	sw	s8,44(sp)
  45754c:	afbc0028 	sw	gp,40(sp)
  457550:	03a0f021 	move	s8,sp
  457554:	afc40038 	sw	a0,56(s8)
  457558:	afc5003c 	sw	a1,60(s8)

/* delete an IPSEC SA.
 * we may not succeed, but we bull ahead anyway because
 * we cannot do anything better by recognizing failure
 */
void
delete_ipsec_sa(struct state *st USED_BY_KLIPS, bool inbound_only USED_BY_KLIPS)
{
#ifdef KLIPS
    if (inbound_only)
  45755c:	8fc2003c 	lw	v0,60(s8)
  457560:	00000000 	nop
  457564:	1040000c 	beqz	v0,457598 <delete_ipsec_sa+0x68>
  457568:	00000000 	nop
    {
	(void) teardown_half_ipsec_sa(st, TRUE);
  45756c:	8fc40038 	lw	a0,56(s8)
  457570:	24050001 	li	a1,1
  457574:	8f998038 	lw	t9,-32712(gp)
  457578:	00000000 	nop
  45757c:	2739661c 	addiu	t9,t9,26140
  457580:	00000000 	nop
  457584:	0320f809 	jalr	t9
  457588:	00000000 	nop
  45758c:	8fdc0010 	lw	gp,16(s8)
  457590:	1000006b 	b	457740 <delete_ipsec_sa+0x210>
  457594:	00000000 	nop
    }
    else
    {
	struct connection *c = st->st_connection;
  457598:	8fc20038 	lw	v0,56(s8)
  45759c:	00000000 	nop
  4575a0:	8c42000c 	lw	v0,12(v0)
  4575a4:	00000000 	nop
  4575a8:	afc20018 	sw	v0,24(s8)

	if (c->eroute_owner == st->st_serialno)
  4575ac:	8fc20018 	lw	v0,24(s8)
  4575b0:	00000000 	nop
  4575b4:	8c4301ac 	lw	v1,428(v0)
  4575b8:	8fc20038 	lw	v0,56(s8)
  4575bc:	00000000 	nop
  4575c0:	8c420000 	lw	v0,0(v0)
  4575c4:	00000000 	nop
  4575c8:	14620049 	bne	v1,v0,4576f0 <delete_ipsec_sa+0x1c0>
  4575cc:	00000000 	nop
	{
	    passert(c->routing == RT_ROUTED_TUNNEL);
  4575d0:	8fc20018 	lw	v0,24(s8)
  4575d4:	00000000 	nop
  4575d8:	8c43019c 	lw	v1,412(v0)
  4575dc:	24020005 	li	v0,5
  4575e0:	1062000e 	beq	v1,v0,45761c <delete_ipsec_sa+0xec>
  4575e4:	00000000 	nop
  4575e8:	8f84802c 	lw	a0,-32724(gp)
  4575ec:	00000000 	nop
  4575f0:	24840f20 	addiu	a0,a0,3872
  4575f4:	8f85802c 	lw	a1,-32724(gp)
  4575f8:	00000000 	nop
  4575fc:	24a5fb28 	addiu	a1,a1,-1240
  457600:	24060aea 	li	a2,2794
  457604:	8f998bb8 	lw	t9,-29768(gp)
  457608:	00000000 	nop
  45760c:	0320f809 	jalr	t9
  457610:	00000000 	nop
  457614:	8fdc0010 	lw	gp,16(s8)
  457618:	00000000 	nop
	    c->eroute_owner = SOS_NOBODY;
  45761c:	8fc20018 	lw	v0,24(s8)
  457620:	00000000 	nop
  457624:	ac4001ac 	sw	zero,428(v0)

	    /* strictly speaking, routing should become RT_ROUTED_FAILURE,
	     * but it is perhaps simpler to use RT_ROUTED_PROSPECTIVE
	     * if the shunt will be TRAP.
	     */
	    c->routing = (c->policy & POLICY_OPPO_MASK) == LEMPTY
  457628:	8fc20018 	lw	v0,24(s8)
  45762c:	00000000 	nop
  457630:	afc2001c 	sw	v0,28(s8)
  457634:	8fc20018 	lw	v0,24(s8)
  457638:	00000000 	nop
  45763c:	8c440008 	lw	a0,8(v0)
  457640:	8c45000c 	lw	a1,12(v0)
  457644:	24020000 	li	v0,0
  457648:	24030300 	li	v1,768
  45764c:	00822024 	and	a0,a0,v0
  457650:	00a32824 	and	a1,a1,v1
  457654:	00801021 	move	v0,a0
  457658:	00451025 	or	v0,v0,a1
  45765c:	14400005 	bnez	v0,457674 <delete_ipsec_sa+0x144>
  457660:	00000000 	nop
  457664:	24030002 	li	v1,2
  457668:	afc30020 	sw	v1,32(s8)
  45766c:	10000003 	b	45767c <delete_ipsec_sa+0x14c>
  457670:	00000000 	nop
  457674:	24020004 	li	v0,4
  457678:	afc20020 	sw	v0,32(s8)
  45767c:	8fc20020 	lw	v0,32(s8)
  457680:	8fc3001c 	lw	v1,28(s8)
  457684:	00000000 	nop
  457688:	ac62019c 	sw	v0,412(v1)
		? RT_ROUTED_PROSPECTIVE : RT_ROUTED_FAILURE;

	    (void) do_command(c, "down");
  45768c:	8fc40018 	lw	a0,24(s8)
  457690:	8f85802c 	lw	a1,-32724(gp)
  457694:	00000000 	nop
  457698:	24a50f10 	addiu	a1,a1,3856
  45769c:	8f998038 	lw	t9,-32712(gp)
  4576a0:	00000000 	nop
  4576a4:	27390280 	addiu	t9,t9,640
  4576a8:	00000000 	nop
  4576ac:	0320f809 	jalr	t9
  4576b0:	00000000 	nop
  4576b4:	8fdc0010 	lw	gp,16(s8)
  4576b8:	00000000 	nop
	    (void) shunt_eroute(c, ERO_REPLACE, "replace with shunt");
  4576bc:	8fc40018 	lw	a0,24(s8)
  4576c0:	2405020e 	li	a1,526
  4576c4:	8f86802c 	lw	a2,-32724(gp)
  4576c8:	00000000 	nop
  4576cc:	24c60f40 	addiu	a2,a2,3904
  4576d0:	8f998038 	lw	t9,-32712(gp)
  4576d4:	00000000 	nop
  4576d8:	273939d0 	addiu	t9,t9,14800
  4576dc:	00000000 	nop
  4576e0:	0320f809 	jalr	t9
  4576e4:	00000000 	nop
  4576e8:	8fdc0010 	lw	gp,16(s8)
  4576ec:	00000000 	nop
	}
	(void) teardown_half_ipsec_sa(st, FALSE);
  4576f0:	8fc40038 	lw	a0,56(s8)
  4576f4:	00002821 	move	a1,zero
  4576f8:	8f998038 	lw	t9,-32712(gp)
  4576fc:	00000000 	nop
  457700:	2739661c 	addiu	t9,t9,26140
  457704:	00000000 	nop
  457708:	0320f809 	jalr	t9
  45770c:	00000000 	nop
  457710:	8fdc0010 	lw	gp,16(s8)
  457714:	00000000 	nop
	(void) teardown_half_ipsec_sa(st, TRUE);
  457718:	8fc40038 	lw	a0,56(s8)
  45771c:	24050001 	li	a1,1
  457720:	8f998038 	lw	t9,-32712(gp)
  457724:	00000000 	nop
  457728:	2739661c 	addiu	t9,t9,26140
  45772c:	00000000 	nop
  457730:	0320f809 	jalr	t9
  457734:	00000000 	nop
  457738:	8fdc0010 	lw	gp,16(s8)
  45773c:	00000000 	nop
    }

    return;
#else /* !KLIPS */
    DBG(DBG_CONTROL, DBG_log("if I knew how, I'd eroute() and teardown_ipsec_sa()"));
    return;
#endif /* !KLIPS */
}
  457740:	03c0e821 	move	sp,s8
  457744:	8fbf0030 	lw	ra,48(sp)
  457748:	8fbe002c 	lw	s8,44(sp)
  45774c:	27bd0038 	addiu	sp,sp,56
  457750:	03e00008 	jr	ra
  457754:	00000000 	nop

00457758 <update_nat_t_ipsec_esp_sa>:
  457758:	3c1c0fbb 	lui	gp,0xfbb
  45775c:	279c5218 	addiu	gp,gp,21016
  457760:	0399e021 	addu	gp,gp,t9
  457764:	27bdfe60 	addiu	sp,sp,-416
  457768:	afbc0020 	sw	gp,32(sp)
  45776c:	afbf0198 	sw	ra,408(sp)
  457770:	afbe0194 	sw	s8,404(sp)
  457774:	afbc0190 	sw	gp,400(sp)
  457778:	03a0f021 	move	s8,sp
  45777c:	afc401a0 	sw	a0,416(s8)
  457780:	afc501a4 	sw	a1,420(s8)

#ifdef NAT_TRAVERSAL
#ifdef KLIPS
static bool update_nat_t_ipsec_esp_sa (struct state *st, bool inbound)
{
	struct connection *c = st->st_connection;
  457784:	8fc201a0 	lw	v0,416(s8)
  457788:	00000000 	nop
  45778c:	8c42000c 	lw	v0,12(v0)
  457790:	00000000 	nop
  457794:	afc20028 	sw	v0,40(s8)
	ip_address
		src = inbound? c->that.host_addr : c->this.host_addr,
  457798:	8fc201a4 	lw	v0,420(s8)
  45779c:	00000000 	nop
  4577a0:	1040001a 	beqz	v0,45780c <update_nat_t_ipsec_esp_sa+0xb4>
  4577a4:	00000000 	nop
  4577a8:	8fc30028 	lw	v1,40(s8)
  4577ac:	00000000 	nop
  4577b0:	8c620108 	lw	v0,264(v1)
  4577b4:	00000000 	nop
  4577b8:	afc20030 	sw	v0,48(s8)
  4577bc:	8c62010c 	lw	v0,268(v1)
  4577c0:	00000000 	nop
  4577c4:	afc20034 	sw	v0,52(s8)
  4577c8:	8c620110 	lw	v0,272(v1)
  4577cc:	00000000 	nop
  4577d0:	afc20038 	sw	v0,56(s8)
  4577d4:	8c620114 	lw	v0,276(v1)
  4577d8:	00000000 	nop
  4577dc:	afc2003c 	sw	v0,60(s8)
  4577e0:	8c620118 	lw	v0,280(v1)
  4577e4:	00000000 	nop
  4577e8:	afc20040 	sw	v0,64(s8)
  4577ec:	8c62011c 	lw	v0,284(v1)
  4577f0:	00000000 	nop
  4577f4:	afc20044 	sw	v0,68(s8)
  4577f8:	8c620120 	lw	v0,288(v1)
  4577fc:	00000000 	nop
  457800:	afc20048 	sw	v0,72(s8)
  457804:	10000018 	b	457868 <update_nat_t_ipsec_esp_sa+0x110>
  457808:	00000000 	nop
  45780c:	8fc30028 	lw	v1,40(s8)
  457810:	00000000 	nop
  457814:	8c620058 	lw	v0,88(v1)
  457818:	00000000 	nop
  45781c:	afc20030 	sw	v0,48(s8)
  457820:	8c62005c 	lw	v0,92(v1)
  457824:	00000000 	nop
  457828:	afc20034 	sw	v0,52(s8)
  45782c:	8c620060 	lw	v0,96(v1)
  457830:	00000000 	nop
  457834:	afc20038 	sw	v0,56(s8)
  457838:	8c620064 	lw	v0,100(v1)
  45783c:	00000000 	nop
  457840:	afc2003c 	sw	v0,60(s8)
  457844:	8c620068 	lw	v0,104(v1)
  457848:	00000000 	nop
  45784c:	afc20040 	sw	v0,64(s8)
  457850:	8c62006c 	lw	v0,108(v1)
  457854:	00000000 	nop
  457858:	afc20044 	sw	v0,68(s8)
  45785c:	8c620070 	lw	v0,112(v1)
  457860:	00000000 	nop
  457864:	afc20048 	sw	v0,72(s8)
		dst = inbound? c->this.host_addr : c->that.host_addr;
  457868:	8fc201a4 	lw	v0,420(s8)
  45786c:	00000000 	nop
  457870:	1040001a 	beqz	v0,4578dc <update_nat_t_ipsec_esp_sa+0x184>
  457874:	00000000 	nop
  457878:	8fc30028 	lw	v1,40(s8)
  45787c:	00000000 	nop
  457880:	8c620058 	lw	v0,88(v1)
  457884:	00000000 	nop
  457888:	afc20050 	sw	v0,80(s8)
  45788c:	8c62005c 	lw	v0,92(v1)
  457890:	00000000 	nop
  457894:	afc20054 	sw	v0,84(s8)
  457898:	8c620060 	lw	v0,96(v1)
  45789c:	00000000 	nop
  4578a0:	afc20058 	sw	v0,88(s8)
  4578a4:	8c620064 	lw	v0,100(v1)
  4578a8:	00000000 	nop
  4578ac:	afc2005c 	sw	v0,92(s8)
  4578b0:	8c620068 	lw	v0,104(v1)
  4578b4:	00000000 	nop
  4578b8:	afc20060 	sw	v0,96(s8)
  4578bc:	8c62006c 	lw	v0,108(v1)
  4578c0:	00000000 	nop
  4578c4:	afc20064 	sw	v0,100(s8)
  4578c8:	8c620070 	lw	v0,112(v1)
  4578cc:	00000000 	nop
  4578d0:	afc20068 	sw	v0,104(s8)
  4578d4:	10000018 	b	457938 <update_nat_t_ipsec_esp_sa+0x1e0>
  4578d8:	00000000 	nop
  4578dc:	8fc30028 	lw	v1,40(s8)
  4578e0:	00000000 	nop
  4578e4:	8c620108 	lw	v0,264(v1)
  4578e8:	00000000 	nop
  4578ec:	afc20050 	sw	v0,80(s8)
  4578f0:	8c62010c 	lw	v0,268(v1)
  4578f4:	00000000 	nop
  4578f8:	afc20054 	sw	v0,84(s8)
  4578fc:	8c620110 	lw	v0,272(v1)
  457900:	00000000 	nop
  457904:	afc20058 	sw	v0,88(s8)
  457908:	8c620114 	lw	v0,276(v1)
  45790c:	00000000 	nop
  457910:	afc2005c 	sw	v0,92(s8)
  457914:	8c620118 	lw	v0,280(v1)
  457918:	00000000 	nop
  45791c:	afc20060 	sw	v0,96(s8)
  457920:	8c62011c 	lw	v0,284(v1)
  457924:	00000000 	nop
  457928:	afc20064 	sw	v0,100(s8)
  45792c:	8c620120 	lw	v0,288(v1)
  457930:	00000000 	nop
  457934:	afc20068 	sw	v0,104(s8)
	
	struct sadb_ext *extensions[SADB_EXT_MAX + 1];
	char text_said[SATOT_BUF];

	ipsec_spi_t esp_spi = inbound? st->st_esp.our_spi : st->st_esp.attrs.spi;
  457938:	8fc201a4 	lw	v0,420(s8)
  45793c:	00000000 	nop
  457940:	10400008 	beqz	v0,457964 <update_nat_t_ipsec_esp_sa+0x20c>
  457944:	00000000 	nop
  457948:	8fc201a0 	lw	v0,416(s8)
  45794c:	00000000 	nop
  457950:	8c420084 	lw	v0,132(v0)
  457954:	00000000 	nop
  457958:	afc20180 	sw	v0,384(s8)
  45795c:	10000006 	b	457978 <update_nat_t_ipsec_esp_sa+0x220>
  457960:	00000000 	nop
  457964:	8fc201a0 	lw	v0,416(s8)
  457968:	00000000 	nop
  45796c:	8c420070 	lw	v0,112(v0)
  457970:	00000000 	nop
  457974:	afc20180 	sw	v0,384(s8)
  457978:	8fc20180 	lw	v0,384(s8)
  45797c:	00000000 	nop
  457980:	afc20158 	sw	v0,344(s8)

	u_int16_t
		natt_sport = inbound? c->that.host_port : c->this.host_port,
  457984:	8fc201a4 	lw	v0,420(s8)
  457988:	00000000 	nop
  45798c:	10400008 	beqz	v0,4579b0 <update_nat_t_ipsec_esp_sa+0x258>
  457990:	00000000 	nop
  457994:	8fc20028 	lw	v0,40(s8)
  457998:	00000000 	nop
  45799c:	94420178 	lhu	v0,376(v0)
  4579a0:	00000000 	nop
  4579a4:	a7c20184 	sh	v0,388(s8)
  4579a8:	10000006 	b	4579c4 <update_nat_t_ipsec_esp_sa+0x26c>
  4579ac:	00000000 	nop
  4579b0:	8fc20028 	lw	v0,40(s8)
  4579b4:	00000000 	nop
  4579b8:	944200c8 	lhu	v0,200(v0)
  4579bc:	00000000 	nop
  4579c0:	a7c20184 	sh	v0,388(s8)
  4579c4:	97c20184 	lhu	v0,388(s8)
  4579c8:	00000000 	nop
  4579cc:	a7c2015c 	sh	v0,348(s8)
		natt_dport = inbound? c->this.host_port : c->that.host_port;
  4579d0:	8fc201a4 	lw	v0,420(s8)
  4579d4:	00000000 	nop
  4579d8:	10400008 	beqz	v0,4579fc <update_nat_t_ipsec_esp_sa+0x2a4>
  4579dc:	00000000 	nop
  4579e0:	8fc20028 	lw	v0,40(s8)
  4579e4:	00000000 	nop
  4579e8:	944200c8 	lhu	v0,200(v0)
  4579ec:	00000000 	nop
  4579f0:	a7c20186 	sh	v0,390(s8)
  4579f4:	10000006 	b	457a10 <update_nat_t_ipsec_esp_sa+0x2b8>
  4579f8:	00000000 	nop
  4579fc:	8fc20028 	lw	v0,40(s8)
  457a00:	00000000 	nop
  457a04:	94420178 	lhu	v0,376(v0)
  457a08:	00000000 	nop
  457a0c:	a7c20186 	sh	v0,390(s8)
  457a10:	97c20186 	lhu	v0,390(s8)
  457a14:	00000000 	nop
  457a18:	a7c2015e 	sh	v0,350(s8)

	set_text_said(text_said, &dst, esp_spi, SA_ESP);
  457a1c:	27c400f0 	addiu	a0,s8,240
  457a20:	27c50050 	addiu	a1,s8,80
  457a24:	8fc60158 	lw	a2,344(s8)
  457a28:	24070032 	li	a3,50
  457a2c:	8f998038 	lw	t9,-32712(gp)
  457a30:	00000000 	nop
  457a34:	273914c8 	addiu	t9,t9,5320
  457a38:	00000000 	nop
  457a3c:	0320f809 	jalr	t9
  457a40:	00000000 	nop
  457a44:	8fdc0020 	lw	gp,32(s8)
  457a48:	00000000 	nop

	return (!(pfkey_msg_start(SADB_UPDATE, SADB_SATYPE_ESP
  457a4c:	afc00188 	sw	zero,392(s8)
  457a50:	27c20070 	addiu	v0,s8,112
  457a54:	afa20010 	sw	v0,16(sp)
  457a58:	24040002 	li	a0,2
  457a5c:	24050003 	li	a1,3
  457a60:	8f86802c 	lw	a2,-32724(gp)
  457a64:	00000000 	nop
  457a68:	24c60f54 	addiu	a2,a2,3924
  457a6c:	27c700f0 	addiu	a3,s8,240
  457a70:	8f998038 	lw	t9,-32712(gp)
  457a74:	00000000 	nop
  457a78:	27391628 	addiu	t9,t9,5672
  457a7c:	00000000 	nop
  457a80:	0320f809 	jalr	t9
  457a84:	00000000 	nop
  457a88:	8fdc0020 	lw	gp,32(s8)
  457a8c:	1040008f 	beqz	v0,457ccc <update_nat_t_ipsec_esp_sa+0x574>
  457a90:	00000000 	nop
  457a94:	27c20070 	addiu	v0,s8,112
  457a98:	24430004 	addiu	v1,v0,4
  457a9c:	24020001 	li	v0,1
  457aa0:	afa20010 	sw	v0,16(sp)
  457aa4:	8fc201a0 	lw	v0,416(s8)
  457aa8:	00000000 	nop
  457aac:	9042007f 	lbu	v0,127(v0)
  457ab0:	00000000 	nop
  457ab4:	afa20014 	sw	v0,20(sp)
  457ab8:	8fc201a0 	lw	v0,416(s8)
  457abc:	00000000 	nop
  457ac0:	9042006c 	lbu	v0,108(v0)
  457ac4:	00000000 	nop
  457ac8:	afa20018 	sw	v0,24(sp)
  457acc:	afa0001c 	sw	zero,28(sp)
  457ad0:	00602021 	move	a0,v1
  457ad4:	24050001 	li	a1,1
  457ad8:	8fc60158 	lw	a2,344(s8)
  457adc:	00003821 	move	a3,zero
  457ae0:	8f998804 	lw	t9,-30716(gp)
  457ae4:	00000000 	nop
  457ae8:	0320f809 	jalr	t9
  457aec:	00000000 	nop
  457af0:	8fdc0020 	lw	gp,32(s8)
  457af4:	00402021 	move	a0,v0
  457af8:	8f85802c 	lw	a1,-32724(gp)
  457afc:	00000000 	nop
  457b00:	24a50f70 	addiu	a1,a1,3952
  457b04:	27c600f0 	addiu	a2,s8,240
  457b08:	27c70070 	addiu	a3,s8,112
  457b0c:	8f998038 	lw	t9,-32712(gp)
  457b10:	00000000 	nop
  457b14:	27391564 	addiu	t9,t9,5476
  457b18:	00000000 	nop
  457b1c:	0320f809 	jalr	t9
  457b20:	00000000 	nop
  457b24:	8fdc0020 	lw	gp,32(s8)
  457b28:	10400068 	beqz	v0,457ccc <update_nat_t_ipsec_esp_sa+0x574>
  457b2c:	00000000 	nop
  457b30:	27c20070 	addiu	v0,s8,112
  457b34:	afa20010 	sw	v0,16(sp)
  457b38:	24040005 	li	a0,5
  457b3c:	27c50030 	addiu	a1,s8,48
  457b40:	8f86802c 	lw	a2,-32724(gp)
  457b44:	00000000 	nop
  457b48:	24c60f88 	addiu	a2,a2,3976
  457b4c:	27c700f0 	addiu	a3,s8,240
  457b50:	8f998038 	lw	t9,-32712(gp)
  457b54:	00000000 	nop
  457b58:	27391734 	addiu	t9,t9,5940
  457b5c:	00000000 	nop
  457b60:	0320f809 	jalr	t9
  457b64:	00000000 	nop
  457b68:	8fdc0020 	lw	gp,32(s8)
  457b6c:	10400057 	beqz	v0,457ccc <update_nat_t_ipsec_esp_sa+0x574>
  457b70:	00000000 	nop
  457b74:	27c20070 	addiu	v0,s8,112
  457b78:	afa20010 	sw	v0,16(sp)
  457b7c:	24040006 	li	a0,6
  457b80:	27c50050 	addiu	a1,s8,80
  457b84:	8f86802c 	lw	a2,-32724(gp)
  457b88:	00000000 	nop
  457b8c:	24c60fa4 	addiu	a2,a2,4004
  457b90:	27c700f0 	addiu	a3,s8,240
  457b94:	8f998038 	lw	t9,-32712(gp)
  457b98:	00000000 	nop
  457b9c:	27391734 	addiu	t9,t9,5940
  457ba0:	00000000 	nop
  457ba4:	0320f809 	jalr	t9
  457ba8:	00000000 	nop
  457bac:	8fdc0020 	lw	gp,32(s8)
  457bb0:	10400046 	beqz	v0,457ccc <update_nat_t_ipsec_esp_sa+0x574>
  457bb4:	00000000 	nop
  457bb8:	27c20070 	addiu	v0,s8,112
  457bbc:	24420070 	addiu	v0,v0,112
  457bc0:	97c3015c 	lhu	v1,348(s8)
  457bc4:	00402021 	move	a0,v0
  457bc8:	2405001c 	li	a1,28
  457bcc:	00603021 	move	a2,v1
  457bd0:	8f9989ec 	lw	t9,-30228(gp)
  457bd4:	00000000 	nop
  457bd8:	0320f809 	jalr	t9
  457bdc:	00000000 	nop
  457be0:	8fdc0020 	lw	gp,32(s8)
  457be4:	00402021 	move	a0,v0
  457be8:	8f85802c 	lw	a1,-32724(gp)
  457bec:	00000000 	nop
  457bf0:	24a50fc0 	addiu	a1,a1,4032
  457bf4:	27c600f0 	addiu	a2,s8,240
  457bf8:	27c70070 	addiu	a3,s8,112
  457bfc:	8f998038 	lw	t9,-32712(gp)
  457c00:	00000000 	nop
  457c04:	27391564 	addiu	t9,t9,5476
  457c08:	00000000 	nop
  457c0c:	0320f809 	jalr	t9
  457c10:	00000000 	nop
  457c14:	8fdc0020 	lw	gp,32(s8)
  457c18:	1040002c 	beqz	v0,457ccc <update_nat_t_ipsec_esp_sa+0x574>
  457c1c:	00000000 	nop
  457c20:	27c20070 	addiu	v0,s8,112
  457c24:	24420074 	addiu	v0,v0,116
  457c28:	97c3015e 	lhu	v1,350(s8)
  457c2c:	00402021 	move	a0,v0
  457c30:	2405001d 	li	a1,29
  457c34:	00603021 	move	a2,v1
  457c38:	8f9989ec 	lw	t9,-30228(gp)
  457c3c:	00000000 	nop
  457c40:	0320f809 	jalr	t9
  457c44:	00000000 	nop
  457c48:	8fdc0020 	lw	gp,32(s8)
  457c4c:	00402021 	move	a0,v0
  457c50:	8f85802c 	lw	a1,-32724(gp)
  457c54:	00000000 	nop
  457c58:	24a50fe0 	addiu	a1,a1,4064
  457c5c:	27c600f0 	addiu	a2,s8,240
  457c60:	27c70070 	addiu	a3,s8,112
  457c64:	8f998038 	lw	t9,-32712(gp)
  457c68:	00000000 	nop
  457c6c:	27391564 	addiu	t9,t9,5476
  457c70:	00000000 	nop
  457c74:	0320f809 	jalr	t9
  457c78:	00000000 	nop
  457c7c:	8fdc0020 	lw	gp,32(s8)
  457c80:	10400012 	beqz	v0,457ccc <update_nat_t_ipsec_esp_sa+0x574>
  457c84:	00000000 	nop
  457c88:	27c40070 	addiu	a0,s8,112
  457c8c:	8f85802c 	lw	a1,-32724(gp)
  457c90:	00000000 	nop
  457c94:	24a51000 	addiu	a1,a1,4096
  457c98:	27c600f0 	addiu	a2,s8,240
  457c9c:	00003821 	move	a3,zero
  457ca0:	8f998038 	lw	t9,-32712(gp)
  457ca4:	00000000 	nop
  457ca8:	27391940 	addiu	t9,t9,6464
  457cac:	00000000 	nop
  457cb0:	0320f809 	jalr	t9
  457cb4:	00000000 	nop
  457cb8:	8fdc0020 	lw	gp,32(s8)
  457cbc:	10400003 	beqz	v0,457ccc <update_nat_t_ipsec_esp_sa+0x574>
  457cc0:	00000000 	nop
  457cc4:	24020001 	li	v0,1
  457cc8:	afc20188 	sw	v0,392(s8)
  457ccc:	8fc20188 	lw	v0,392(s8)
  457cd0:	00000000 	nop
		, "pfkey_msg_hdr Update ESP SA", text_said, extensions)

	&& pfkey_build(pfkey_sa_build(&extensions[SADB_EXT_SA]
		, SADB_EXT_SA
		, esp_spi   /* in network order */
		, 0, SADB_SASTATE_MATURE, st->st_esp.attrs.auth /* dummy, not used */,
			st->st_esp.attrs.transid /* dummy, not used */, 0)
		, "pfkey_sa Update ESP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_SRC, &src
		, "pfkey_addr_s Update ESP SA", text_said, extensions)

	&& pfkeyext_address(SADB_EXT_ADDRESS_DST, &dst
		, "pfkey_addr_d Update ESP SA", text_said, extensions)

	&& pfkey_build(pfkey_x_nat_t_port_build(
		&extensions[SADB_X_EXT_NAT_T_SPORT], SADB_X_EXT_NAT_T_SPORT,
		natt_sport), "pfkey_nat_t_sport Update ESP SA", text_said,
		extensions)

	&& pfkey_build(pfkey_x_nat_t_port_build(
		&extensions[SADB_X_EXT_NAT_T_DPORT], SADB_X_EXT_NAT_T_DPORT,
		natt_dport), "pfkey_nat_t_dport Update ESP SA", text_said,
		extensions)

	&& finish_pfkey_msg(extensions, "Update ESP SA", text_said, NULL)))

	? FALSE : TRUE;
}
  457cd4:	03c0e821 	move	sp,s8
  457cd8:	8fbf0198 	lw	ra,408(sp)
  457cdc:	8fbe0194 	lw	s8,404(sp)
  457ce0:	27bd01a0 	addiu	sp,sp,416
  457ce4:	03e00008 	jr	ra
  457ce8:	00000000 	nop

00457cec <update_ipsec_sa>:
  457cec:	3c1c0fbb 	lui	gp,0xfbb
  457cf0:	279c4c84 	addiu	gp,gp,19588
  457cf4:	0399e021 	addu	gp,gp,t9
  457cf8:	27bdffd8 	addiu	sp,sp,-40
  457cfc:	afbc0010 	sw	gp,16(sp)
  457d00:	afbf0020 	sw	ra,32(sp)
  457d04:	afbe001c 	sw	s8,28(sp)
  457d08:	afbc0018 	sw	gp,24(sp)
  457d0c:	03a0f021 	move	s8,sp
  457d10:	afc40028 	sw	a0,40(s8)
#endif

bool update_ipsec_sa (struct state *st USED_BY_KLIPS)
{
#ifdef KLIPS
	if (IS_IPSEC_SA_ESTABLISHED(st->st_state)) {
  457d14:	8fc20028 	lw	v0,40(s8)
  457d18:	00000000 	nop
  457d1c:	8c43014c 	lw	v1,332(v0)
  457d20:	24020018 	li	v0,24
  457d24:	10620009 	beq	v1,v0,457d4c <update_ipsec_sa+0x60>
  457d28:	00000000 	nop
  457d2c:	8fc20028 	lw	v0,40(s8)
  457d30:	00000000 	nop
  457d34:	8c43014c 	lw	v1,332(v0)
  457d38:	24020019 	li	v0,25
  457d3c:	10620003 	beq	v1,v0,457d4c <update_ipsec_sa+0x60>
  457d40:	00000000 	nop
  457d44:	10000020 	b	457dc8 <update_ipsec_sa+0xdc>
  457d48:	00000000 	nop
		if ((st->st_esp.present) && (
			(!update_nat_t_ipsec_esp_sa (st, TRUE)) ||
			(!update_nat_t_ipsec_esp_sa (st, FALSE)))) {
  457d4c:	8fc20028 	lw	v0,40(s8)
  457d50:	00000000 	nop
  457d54:	8c420068 	lw	v0,104(v0)
  457d58:	00000000 	nop
  457d5c:	10400047 	beqz	v0,457e7c <update_ipsec_sa+0x190>
  457d60:	00000000 	nop
  457d64:	8fc40028 	lw	a0,40(s8)
  457d68:	24050001 	li	a1,1
  457d6c:	8f998038 	lw	t9,-32712(gp)
  457d70:	00000000 	nop
  457d74:	27397758 	addiu	t9,t9,30552
  457d78:	00000000 	nop
  457d7c:	0320f809 	jalr	t9
  457d80:	00000000 	nop
  457d84:	8fdc0010 	lw	gp,16(s8)
  457d88:	1040000c 	beqz	v0,457dbc <update_ipsec_sa+0xd0>
  457d8c:	00000000 	nop
  457d90:	8fc40028 	lw	a0,40(s8)
  457d94:	00002821 	move	a1,zero
  457d98:	8f998038 	lw	t9,-32712(gp)
  457d9c:	00000000 	nop
  457da0:	27397758 	addiu	t9,t9,30552
  457da4:	00000000 	nop
  457da8:	0320f809 	jalr	t9
  457dac:	00000000 	nop
  457db0:	8fdc0010 	lw	gp,16(s8)
  457db4:	14400031 	bnez	v0,457e7c <update_ipsec_sa+0x190>
  457db8:	00000000 	nop
			return FALSE;
  457dbc:	00001021 	move	v0,zero
  457dc0:	1000002f 	b	457e80 <update_ipsec_sa+0x194>
  457dc4:	00000000 	nop
		}
	}
	else if (IS_ONLY_INBOUND_IPSEC_SA_ESTABLISHED(st->st_state)) {
  457dc8:	8fc20028 	lw	v0,40(s8)
  457dcc:	00000000 	nop
  457dd0:	8c43014c 	lw	v1,332(v0)
  457dd4:	24020017 	li	v0,23
  457dd8:	14620015 	bne	v1,v0,457e30 <update_ipsec_sa+0x144>
  457ddc:	00000000 	nop
		if ((st->st_esp.present) && (!update_nat_t_ipsec_esp_sa (st, FALSE))) {
  457de0:	8fc20028 	lw	v0,40(s8)
  457de4:	00000000 	nop
  457de8:	8c420068 	lw	v0,104(v0)
  457dec:	00000000 	nop
  457df0:	10400022 	beqz	v0,457e7c <update_ipsec_sa+0x190>
  457df4:	00000000 	nop
  457df8:	8fc40028 	lw	a0,40(s8)
  457dfc:	00002821 	move	a1,zero
  457e00:	8f998038 	lw	t9,-32712(gp)
  457e04:	00000000 	nop
  457e08:	27397758 	addiu	t9,t9,30552
  457e0c:	00000000 	nop
  457e10:	0320f809 	jalr	t9
  457e14:	00000000 	nop
  457e18:	8fdc0010 	lw	gp,16(s8)
  457e1c:	14400017 	bnez	v0,457e7c <update_ipsec_sa+0x190>
  457e20:	00000000 	nop
			return FALSE;
  457e24:	00001021 	move	v0,zero
  457e28:	10000015 	b	457e80 <update_ipsec_sa+0x194>
  457e2c:	00000000 	nop
		}
	}
	else {
		DBG_log("assert failed at %s:%d st_state=%d", __FILE__, __LINE__,
  457e30:	8f84802c 	lw	a0,-32724(gp)
  457e34:	00000000 	nop
  457e38:	24841010 	addiu	a0,a0,4112
  457e3c:	8f85802c 	lw	a1,-32724(gp)
  457e40:	00000000 	nop
  457e44:	24a5fb28 	addiu	a1,a1,-1240
  457e48:	24060b46 	li	a2,2886
  457e4c:	8fc20028 	lw	v0,40(s8)
  457e50:	00000000 	nop
  457e54:	8c47014c 	lw	a3,332(v0)
  457e58:	8f9983b8 	lw	t9,-31816(gp)
  457e5c:	00000000 	nop
  457e60:	0320f809 	jalr	t9
  457e64:	00000000 	nop
  457e68:	8fdc0010 	lw	gp,16(s8)
  457e6c:	00000000 	nop
			st->st_state);
		return FALSE;
  457e70:	00001021 	move	v0,zero
  457e74:	10000002 	b	457e80 <update_ipsec_sa+0x194>
  457e78:	00000000 	nop
	}
	return TRUE;
  457e7c:	24020001 	li	v0,1
#else /* !KLIPS */
    DBG(DBG_CONTROL, DBG_log("if I knew how, I'd update_ipsec_sa()"));
    return TRUE;
#endif /* !KLIPS */
}
  457e80:	03c0e821 	move	sp,s8
  457e84:	8fbf0020 	lw	ra,32(sp)
  457e88:	8fbe001c 	lw	s8,28(sp)
  457e8c:	27bd0028 	addiu	sp,sp,40
  457e90:	03e00008 	jr	ra
  457e94:	00000000 	nop

00457e98 <was_eroute_idle>:
  457e98:	3c1c0fbb 	lui	gp,0xfbb
  457e9c:	279c4ad8 	addiu	gp,gp,19160
  457ea0:	0399e021 	addu	gp,gp,t9
  457ea4:	27bdfaf8 	addiu	sp,sp,-1288
  457ea8:	afbc0010 	sw	gp,16(sp)
  457eac:	afbf0500 	sw	ra,1280(sp)
  457eb0:	afbe04fc 	sw	s8,1276(sp)
  457eb4:	afbc04f8 	sw	gp,1272(sp)
  457eb8:	03a0f021 	move	s8,sp
  457ebc:	afc40508 	sw	a0,1288(s8)
  457ec0:	afc5050c 	sw	a1,1292(s8)
#endif

#ifdef DPD
/* Check if there was traffic on given SA during the last idle_max 
 * seconds. If TRUE, the SA was idle and DPD exchange should be performed.
 * If FALSE, DPD is not necessary. We also return TRUE for errors, as they
 * could mean that the SA is broken and needs to be replace anyway.
 */
bool was_eroute_idle(struct state *st, time_t idle_max) {
	static const char procname[] = "/proc/net/ipsec_spi";
	FILE *f;
	char buf[1024];
	int ret = TRUE;
  457ec4:	24020001 	li	v0,1
  457ec8:	afc20420 	sw	v0,1056(s8)

	passert(st != NULL);
  457ecc:	8fc20508 	lw	v0,1288(s8)
  457ed0:	00000000 	nop
  457ed4:	1440000e 	bnez	v0,457f10 <was_eroute_idle+0x78>
  457ed8:	00000000 	nop
  457edc:	8f84802c 	lw	a0,-32724(gp)
  457ee0:	00000000 	nop
  457ee4:	24841050 	addiu	a0,a0,4176
  457ee8:	8f85802c 	lw	a1,-32724(gp)
  457eec:	00000000 	nop
  457ef0:	24a5fb28 	addiu	a1,a1,-1240
  457ef4:	24060b5e 	li	a2,2910
  457ef8:	8f998bb8 	lw	t9,-29768(gp)
  457efc:	00000000 	nop
  457f00:	0320f809 	jalr	t9
  457f04:	00000000 	nop
  457f08:	8fdc0010 	lw	gp,16(s8)
  457f0c:	00000000 	nop

	f = fopen(procname, "r");
  457f10:	8f84802c 	lw	a0,-32724(gp)
  457f14:	00000000 	nop
  457f18:	24841034 	addiu	a0,a0,4148
  457f1c:	8f85802c 	lw	a1,-32724(gp)
  457f20:	00000000 	nop
  457f24:	24a501d4 	addiu	a1,a1,468
  457f28:	8f99850c 	lw	t9,-31476(gp)
  457f2c:	00000000 	nop
  457f30:	0320f809 	jalr	t9
  457f34:	00000000 	nop
  457f38:	8fdc0010 	lw	gp,16(s8)
  457f3c:	afc20018 	sw	v0,24(s8)
	if(f == NULL)
  457f40:	8fc20018 	lw	v0,24(s8)
  457f44:	00000000 	nop
  457f48:	14400003 	bnez	v0,457f58 <was_eroute_idle+0xc0>
  457f4c:	00000000 	nop
		ret = TRUE;
  457f50:	24020001 	li	v0,1
  457f54:	afc20420 	sw	v0,1056(s8)
  457f58:	00000000 	nop

	while(f != NULL) {
  457f5c:	8fc20018 	lw	v0,24(s8)
  457f60:	00000000 	nop
  457f64:	14400003 	bnez	v0,457f74 <was_eroute_idle+0xdc>
  457f68:	00000000 	nop
  457f6c:	100000c5 	b	458284 <was_eroute_idle+0x3ec>
  457f70:	00000000 	nop
		char *line;
		char text_said[SATOT_BUF];
		u_int8_t proto = 0;
  457f74:	a3c00490 	sb	zero,1168(s8)
		ip_address dst;
		ip_said said;
		ipsec_spi_t spi = 0;
  457f78:	afc004e0 	sw	zero,1248(s8)
		static const char idle[] = "idle=";
		time_t idle_time; /* idle time we read from /proc */

		dst = st->st_connection->this.host_addr; /* inbound SA */
  457f7c:	8fc20508 	lw	v0,1288(s8)
  457f80:	00000000 	nop
  457f84:	8c43000c 	lw	v1,12(v0)
  457f88:	00000000 	nop
  457f8c:	8c620058 	lw	v0,88(v1)
  457f90:	00000000 	nop
  457f94:	afc20498 	sw	v0,1176(s8)
  457f98:	8c62005c 	lw	v0,92(v1)
  457f9c:	00000000 	nop
  457fa0:	afc2049c 	sw	v0,1180(s8)
  457fa4:	8c620060 	lw	v0,96(v1)
  457fa8:	00000000 	nop
  457fac:	afc204a0 	sw	v0,1184(s8)
  457fb0:	8c620064 	lw	v0,100(v1)
  457fb4:	00000000 	nop
  457fb8:	afc204a4 	sw	v0,1188(s8)
  457fbc:	8c620068 	lw	v0,104(v1)
  457fc0:	00000000 	nop
  457fc4:	afc204a8 	sw	v0,1192(s8)
  457fc8:	8c62006c 	lw	v0,108(v1)
  457fcc:	00000000 	nop
  457fd0:	afc204ac 	sw	v0,1196(s8)
  457fd4:	8c620070 	lw	v0,112(v1)
  457fd8:	00000000 	nop
  457fdc:	afc204b0 	sw	v0,1200(s8)
		if(st->st_ah.present) {
  457fe0:	8fc20508 	lw	v0,1288(s8)
  457fe4:	00000000 	nop
  457fe8:	8c42003c 	lw	v0,60(v0)
  457fec:	00000000 	nop
  457ff0:	10400008 	beqz	v0,458014 <was_eroute_idle+0x17c>
  457ff4:	00000000 	nop
			proto = SA_AH;
  457ff8:	24020033 	li	v0,51
  457ffc:	a3c20490 	sb	v0,1168(s8)
			spi = st->st_ah.our_spi;
  458000:	8fc20508 	lw	v0,1288(s8)
  458004:	00000000 	nop
  458008:	8c420058 	lw	v0,88(v0)
  45800c:	00000000 	nop
  458010:	afc204e0 	sw	v0,1248(s8)
		}
		if(st->st_esp.present) {
  458014:	8fc20508 	lw	v0,1288(s8)
  458018:	00000000 	nop
  45801c:	8c420068 	lw	v0,104(v0)
  458020:	00000000 	nop
  458024:	10400008 	beqz	v0,458048 <was_eroute_idle+0x1b0>
  458028:	00000000 	nop
			proto = SA_ESP;
  45802c:	24020032 	li	v0,50
  458030:	a3c20490 	sb	v0,1168(s8)
			spi = st->st_esp.our_spi;
  458034:	8fc20508 	lw	v0,1288(s8)
  458038:	00000000 	nop
  45803c:	8c420084 	lw	v0,132(v0)
  458040:	00000000 	nop
  458044:	afc204e0 	sw	v0,1248(s8)
		}
		
		if(proto == 0 && spi == 0) {
  458048:	93c20490 	lbu	v0,1168(s8)
  45804c:	00000000 	nop
  458050:	14400009 	bnez	v0,458078 <was_eroute_idle+0x1e0>
  458054:	00000000 	nop
  458058:	8fc204e0 	lw	v0,1248(s8)
  45805c:	00000000 	nop
  458060:	14400005 	bnez	v0,458078 <was_eroute_idle+0x1e0>
  458064:	00000000 	nop
			ret = TRUE;
  458068:	24020001 	li	v0,1
  45806c:	afc20420 	sw	v0,1056(s8)
			break;
  458070:	10000084 	b	458284 <was_eroute_idle+0x3ec>
  458074:	00000000 	nop
		}

		initsaid(&dst, spi, proto, &said);
  458078:	93c20490 	lbu	v0,1168(s8)
  45807c:	27c40498 	addiu	a0,s8,1176
  458080:	8fc504e0 	lw	a1,1248(s8)
  458084:	00403021 	move	a2,v0
  458088:	27c704b8 	addiu	a3,s8,1208
  45808c:	8f99817c 	lw	t9,-32388(gp)
  458090:	00000000 	nop
  458094:	0320f809 	jalr	t9
  458098:	00000000 	nop
  45809c:	8fdc0010 	lw	gp,16(s8)
  4580a0:	00000000 	nop
		satot(&said, 'x', text_said, SATOT_BUF);
  4580a4:	27c404b8 	addiu	a0,s8,1208
  4580a8:	24050078 	li	a1,120
  4580ac:	27c60428 	addiu	a2,s8,1064
  4580b0:	24070064 	li	a3,100
  4580b4:	8f998a3c 	lw	t9,-30148(gp)
  4580b8:	00000000 	nop
  4580bc:	0320f809 	jalr	t9
  4580c0:	00000000 	nop
  4580c4:	8fdc0010 	lw	gp,16(s8)
  4580c8:	00000000 	nop

		line = fgets(buf, sizeof(buf), f);
  4580cc:	27c40020 	addiu	a0,s8,32
  4580d0:	24050400 	li	a1,1024
  4580d4:	8fc60018 	lw	a2,24(s8)
  4580d8:	8f998a70 	lw	t9,-30096(gp)
  4580dc:	00000000 	nop
  4580e0:	0320f809 	jalr	t9
  4580e4:	00000000 	nop
  4580e8:	8fdc0010 	lw	gp,16(s8)
  4580ec:	afc20424 	sw	v0,1060(s8)
		if(line == NULL) { /* Reached end of list */
  4580f0:	8fc20424 	lw	v0,1060(s8)
  4580f4:	00000000 	nop
  4580f8:	14400005 	bnez	v0,458110 <was_eroute_idle+0x278>
  4580fc:	00000000 	nop
			ret = TRUE; 
  458100:	24020001 	li	v0,1
  458104:	afc20420 	sw	v0,1056(s8)
			break;
  458108:	1000005e 	b	458284 <was_eroute_idle+0x3ec>
  45810c:	00000000 	nop
		}

		if(strncmp(line, text_said, strlen(text_said)) == 0) {
  458110:	27c40428 	addiu	a0,s8,1064
  458114:	8f998188 	lw	t9,-32376(gp)
  458118:	00000000 	nop
  45811c:	0320f809 	jalr	t9
  458120:	00000000 	nop
  458124:	8fdc0010 	lw	gp,16(s8)
  458128:	8fc40424 	lw	a0,1060(s8)
  45812c:	27c50428 	addiu	a1,s8,1064
  458130:	00403021 	move	a2,v0
  458134:	8f99864c 	lw	t9,-31156(gp)
  458138:	00000000 	nop
  45813c:	0320f809 	jalr	t9
  458140:	00000000 	nop
  458144:	8fdc0010 	lw	gp,16(s8)
  458148:	1440ff84 	bnez	v0,457f5c <was_eroute_idle+0xc4>
  45814c:	00000000 	nop
			/* we found a match, now try to find idle= */
			char *p = strstr(line, idle);
  458150:	8fc40424 	lw	a0,1060(s8)
  458154:	8f85802c 	lw	a1,-32724(gp)
  458158:	00000000 	nop
  45815c:	24a51048 	addiu	a1,a1,4168
  458160:	8f998694 	lw	t9,-31084(gp)
  458164:	00000000 	nop
  458168:	0320f809 	jalr	t9
  45816c:	00000000 	nop
  458170:	8fdc0010 	lw	gp,16(s8)
  458174:	afc204e8 	sw	v0,1256(s8)
			if(p == NULL) { /* SAs which haven't been used yet
  458178:	8fc204e8 	lw	v0,1256(s8)
  45817c:	00000000 	nop
  458180:	14400005 	bnez	v0,458198 <was_eroute_idle+0x300>
  458184:	00000000 	nop
					 don't have it */
				ret = TRUE; /* it didn't have traffic */
  458188:	24020001 	li	v0,1
  45818c:	afc20420 	sw	v0,1056(s8)
				break;
  458190:	1000003c 	b	458284 <was_eroute_idle+0x3ec>
  458194:	00000000 	nop
			}
			p += sizeof(idle)-1;
  458198:	8fc204e8 	lw	v0,1256(s8)
  45819c:	00000000 	nop
  4581a0:	24420005 	addiu	v0,v0,5
  4581a4:	afc204e8 	sw	v0,1256(s8)
			if(*p == '\0') {
  4581a8:	8fc204e8 	lw	v0,1256(s8)
  4581ac:	00000000 	nop
  4581b0:	80420000 	lb	v0,0(v0)
  4581b4:	00000000 	nop
  4581b8:	14400005 	bnez	v0,4581d0 <was_eroute_idle+0x338>
  4581bc:	00000000 	nop
				ret = TRUE; /* be paranoid */
  4581c0:	24020001 	li	v0,1
  4581c4:	afc20420 	sw	v0,1056(s8)
				break;
  4581c8:	1000002e 	b	458284 <was_eroute_idle+0x3ec>
  4581cc:	00000000 	nop
			}
			if(sscanf(p, "%d", (int *) &idle_time) <= 0) {
  4581d0:	8fc404e8 	lw	a0,1256(s8)
  4581d4:	8f85802c 	lw	a1,-32724(gp)
  4581d8:	00000000 	nop
  4581dc:	24a5105c 	addiu	a1,a1,4188
  4581e0:	27c604e4 	addiu	a2,s8,1252
  4581e4:	8f99859c 	lw	t9,-31332(gp)
  4581e8:	00000000 	nop
  4581ec:	0320f809 	jalr	t9
  4581f0:	00000000 	nop
  4581f4:	8fdc0010 	lw	gp,16(s8)
  4581f8:	1c400005 	bgtz	v0,458210 <was_eroute_idle+0x378>
  4581fc:	00000000 	nop
				ret = TRUE;
  458200:	24020001 	li	v0,1
  458204:	afc20420 	sw	v0,1056(s8)
				break;
  458208:	1000001e 	b	458284 <was_eroute_idle+0x3ec>
  45820c:	00000000 	nop
			}
			if(idle_time > idle_max) {
  458210:	8fc2050c 	lw	v0,1292(s8)
  458214:	8fc304e4 	lw	v1,1252(s8)
  458218:	00000000 	nop
  45821c:	0043102a 	slt	v0,v0,v1
  458220:	10400017 	beqz	v0,458280 <was_eroute_idle+0x3e8>
  458224:	00000000 	nop
				DBG(DBG_KLIPS,
  458228:	8f8284f8 	lw	v0,-31496(gp)
  45822c:	00000000 	nop
  458230:	8c420000 	lw	v0,0(v0)
  458234:	00000000 	nop
  458238:	30420040 	andi	v0,v0,0x40
  45823c:	1040000c 	beqz	v0,458270 <was_eroute_idle+0x3d8>
  458240:	00000000 	nop
  458244:	8f84802c 	lw	a0,-32724(gp)
  458248:	00000000 	nop
  45824c:	24841060 	addiu	a0,a0,4192
  458250:	27c50428 	addiu	a1,s8,1064
  458254:	8fc6050c 	lw	a2,1292(s8)
  458258:	8f9983b8 	lw	t9,-31816(gp)
  45825c:	00000000 	nop
  458260:	0320f809 	jalr	t9
  458264:	00000000 	nop
  458268:	8fdc0010 	lw	gp,16(s8)
  45826c:	00000000 	nop
	    			DBG_log("SA %s found idle for more than %ld sec",
					text_said, idle_max));
				ret = TRUE;
  458270:	24020001 	li	v0,1
  458274:	afc20420 	sw	v0,1056(s8)
				break;
  458278:	10000002 	b	458284 <was_eroute_idle+0x3ec>
  45827c:	00000000 	nop
			}
			else {
				ret = FALSE;
  458280:	afc00420 	sw	zero,1056(s8)
				break;
			}
		}

	}

	fclose(f);
  458284:	8fc40018 	lw	a0,24(s8)
  458288:	8f9984c0 	lw	t9,-31552(gp)
  45828c:	00000000 	nop
  458290:	0320f809 	jalr	t9
  458294:	00000000 	nop
  458298:	8fdc0010 	lw	gp,16(s8)
  45829c:	00000000 	nop
	return ret;
  4582a0:	8fc20420 	lw	v0,1056(s8)
  4582a4:	00000000 	nop
}
  4582a8:	03c0e821 	move	sp,s8
  4582ac:	8fbf0500 	lw	ra,1280(sp)
  4582b0:	8fbe04fc 	lw	s8,1276(sp)
  4582b4:	27bd0508 	addiu	sp,sp,1288
  4582b8:	03e00008 	jr	ra
  4582bc:	00000000 	nop

004582c0 <unpack_str>:
  4582c0:	3c1c0fbb 	lui	gp,0xfbb
  4582c4:	279c46b0 	addiu	gp,gp,18096
  4582c8:	0399e021 	addu	gp,gp,t9
  4582cc:	27bdffc8 	addiu	sp,sp,-56
  4582d0:	afbc0010 	sw	gp,16(sp)
  4582d4:	afbf0030 	sw	ra,48(sp)
  4582d8:	afbe002c 	sw	s8,44(sp)
  4582dc:	afbc0028 	sw	gp,40(sp)
  4582e0:	03a0f021 	move	s8,sp
  4582e4:	afc40038 	sw	a0,56(s8)

static bool
unpack_str(char **p)
{
    char *end = memchr(next_str, '\0', str_roof - next_str);
  4582e8:	8f838018 	lw	v1,-32744(gp)
  4582ec:	00000000 	nop
  4582f0:	24637674 	addiu	v1,v1,30324
  4582f4:	8c630000 	lw	v1,0(v1)
  4582f8:	8f828018 	lw	v0,-32744(gp)
  4582fc:	00000000 	nop
  458300:	24427670 	addiu	v0,v0,30320
  458304:	8c420000 	lw	v0,0(v0)
  458308:	00000000 	nop
  45830c:	00621023 	subu	v0,v1,v0
  458310:	8f848018 	lw	a0,-32744(gp)
  458314:	00000000 	nop
  458318:	24847670 	addiu	a0,a0,30320
  45831c:	8c840000 	lw	a0,0(a0)
  458320:	00002821 	move	a1,zero
  458324:	00403021 	move	a2,v0
  458328:	8f9986e0 	lw	t9,-31008(gp)
  45832c:	00000000 	nop
  458330:	0320f809 	jalr	t9
  458334:	00000000 	nop
  458338:	8fdc0010 	lw	gp,16(s8)
  45833c:	afc20018 	sw	v0,24(s8)

    if (end == NULL)
  458340:	8fc20018 	lw	v0,24(s8)
  458344:	00000000 	nop
  458348:	14400004 	bnez	v0,45835c <unpack_str+0x9c>
  45834c:	00000000 	nop
    {
	return FALSE;	/* fishy: no end found */
  458350:	00001021 	move	v0,zero
  458354:	10000021 	b	4583dc <unpack_str+0x11c>
  458358:	00000000 	nop
    }
    else
    {
	*p = next_str == end? NULL : next_str;
  45835c:	8fc20038 	lw	v0,56(s8)
  458360:	00000000 	nop
  458364:	afc2001c 	sw	v0,28(s8)
  458368:	8f838018 	lw	v1,-32744(gp)
  45836c:	00000000 	nop
  458370:	24637670 	addiu	v1,v1,30320
  458374:	8c630000 	lw	v1,0(v1)
  458378:	8fc20018 	lw	v0,24(s8)
  45837c:	00000000 	nop
  458380:	10620009 	beq	v1,v0,4583a8 <unpack_str+0xe8>
  458384:	00000000 	nop
  458388:	8f838018 	lw	v1,-32744(gp)
  45838c:	00000000 	nop
  458390:	24637670 	addiu	v1,v1,30320
  458394:	8c630000 	lw	v1,0(v1)
  458398:	00000000 	nop
  45839c:	afc30020 	sw	v1,32(s8)
  4583a0:	10000002 	b	4583ac <unpack_str+0xec>
  4583a4:	00000000 	nop
  4583a8:	afc00020 	sw	zero,32(s8)
  4583ac:	8fc30020 	lw	v1,32(s8)
  4583b0:	8fc2001c 	lw	v0,28(s8)
  4583b4:	00000000 	nop
  4583b8:	ac430000 	sw	v1,0(v0)
	next_str = end + 1;
  4583bc:	8fc20018 	lw	v0,24(s8)
  4583c0:	00000000 	nop
  4583c4:	24420001 	addiu	v0,v0,1
  4583c8:	8f818018 	lw	at,-32744(gp)
  4583cc:	00000000 	nop
  4583d0:	24217670 	addiu	at,at,30320
  4583d4:	ac220000 	sw	v0,0(at)
	return TRUE;
  4583d8:	24020001 	li	v0,1
    }
}
  4583dc:	03c0e821 	move	sp,s8
  4583e0:	8fbf0030 	lw	ra,48(sp)
  4583e4:	8fbe002c 	lw	s8,44(sp)
  4583e8:	27bd0038 	addiu	sp,sp,56
  4583ec:	03e00008 	jr	ra
  4583f0:	00000000 	nop

004583f4 <key_add_ugh>:
  4583f4:	3c1c0fbb 	lui	gp,0xfbb
  4583f8:	279c457c 	addiu	gp,gp,17788
  4583fc:	0399e021 	addu	gp,gp,t9
  458400:	27bdfdd8 	addiu	sp,sp,-552
  458404:	afbc0010 	sw	gp,16(sp)
  458408:	afbf0220 	sw	ra,544(sp)
  45840c:	afbe021c 	sw	s8,540(sp)
  458410:	afbc0218 	sw	gp,536(sp)
  458414:	03a0f021 	move	s8,sp
  458418:	afc40228 	sw	a0,552(s8)
  45841c:	afc5022c 	sw	a1,556(s8)

/* bits loading keys from asynchronous DNS */

struct key_add_continuation {
    struct adns_continuation ac;
    int whack_fd;
};

static void
key_add_ugh(const struct id *keyid, err_t ugh)
{
    char name[IDTOA_BUF];	/* longer IDs will be truncated in message */

    (void)idtoa(keyid, name, sizeof(name));
  458420:	8fc40228 	lw	a0,552(s8)
  458424:	27c50018 	addiu	a1,s8,24
  458428:	24060200 	li	a2,512
  45842c:	8f998798 	lw	t9,-30824(gp)
  458430:	00000000 	nop
  458434:	0320f809 	jalr	t9
  458438:	00000000 	nop
  45843c:	8fdc0010 	lw	gp,16(s8)
  458440:	00000000 	nop
    loglog(RC_NOKEY
  458444:	2404001c 	li	a0,28
  458448:	8f85802c 	lw	a1,-32724(gp)
  45844c:	00000000 	nop
  458450:	24a51090 	addiu	a1,a1,4240
  458454:	27c60018 	addiu	a2,s8,24
  458458:	8fc7022c 	lw	a3,556(s8)
  45845c:	8f998c48 	lw	t9,-29624(gp)
  458460:	00000000 	nop
  458464:	0320f809 	jalr	t9
  458468:	00000000 	nop
  45846c:	8fdc0010 	lw	gp,16(s8)
  458470:	00000000 	nop
	, "failure to fetch key for %s from DNS: %s", name, ugh);
}
  458474:	03c0e821 	move	sp,s8
  458478:	8fbf0220 	lw	ra,544(sp)
  45847c:	8fbe021c 	lw	s8,540(sp)
  458480:	27bd0228 	addiu	sp,sp,552
  458484:	03e00008 	jr	ra
  458488:	00000000 	nop

0045848c <key_add_continue>:
  45848c:	3c1c0fbb 	lui	gp,0xfbb
  458490:	279c44e4 	addiu	gp,gp,17636
  458494:	0399e021 	addu	gp,gp,t9
  458498:	27bdffd0 	addiu	sp,sp,-48
  45849c:	afbc0010 	sw	gp,16(sp)
  4584a0:	afbf0028 	sw	ra,40(sp)
  4584a4:	afbe0024 	sw	s8,36(sp)
  4584a8:	afbc0020 	sw	gp,32(sp)
  4584ac:	03a0f021 	move	s8,sp
  4584b0:	afc40030 	sw	a0,48(s8)
  4584b4:	afc50034 	sw	a1,52(s8)

static void
key_add_continue(struct adns_continuation *ac, err_t ugh)
{
    struct key_add_continuation *kc = (void *) ac;
  4584b8:	8fc20030 	lw	v0,48(s8)
  4584bc:	00000000 	nop
  4584c0:	afc20018 	sw	v0,24(s8)

    whack_log_fd = kc->whack_fd;
  4584c4:	8fc20018 	lw	v0,24(s8)
  4584c8:	00000000 	nop
  4584cc:	8c420480 	lw	v0,1152(v0)
  4584d0:	8f818994 	lw	at,-30316(gp)
  4584d4:	00000000 	nop
  4584d8:	ac220000 	sw	v0,0(at)
    if (ugh != NULL)
  4584dc:	8fc20034 	lw	v0,52(s8)
  4584e0:	00000000 	nop
  4584e4:	1040000f 	beqz	v0,458524 <key_add_continue+0x98>
  4584e8:	00000000 	nop
    {
	key_add_ugh(&ac->id, ugh);
  4584ec:	8fc20030 	lw	v0,48(s8)
  4584f0:	00000000 	nop
  4584f4:	24420428 	addiu	v0,v0,1064
  4584f8:	00402021 	move	a0,v0
  4584fc:	8fc50034 	lw	a1,52(s8)
  458500:	8f99803c 	lw	t9,-32708(gp)
  458504:	00000000 	nop
  458508:	273983f4 	addiu	t9,t9,-31756
  45850c:	00000000 	nop
  458510:	0320f809 	jalr	t9
  458514:	00000000 	nop
  458518:	8fdc0010 	lw	gp,16(s8)
  45851c:	10000008 	b	458540 <key_add_continue+0xb4>
  458520:	00000000 	nop
    }
    else
    {
	remember_public_keys(&keys_from_dns);
  458524:	8f848394 	lw	a0,-31852(gp)
  458528:	8f998390 	lw	t9,-31856(gp)
  45852c:	00000000 	nop
  458530:	0320f809 	jalr	t9
  458534:	00000000 	nop
  458538:	8fdc0010 	lw	gp,16(s8)
  45853c:	00000000 	nop
    }
    close_any(whack_log_fd);
  458540:	8f838994 	lw	v1,-30316(gp)
  458544:	00000000 	nop
  458548:	8c630000 	lw	v1,0(v1)
  45854c:	2402ffff 	li	v0,-1
  458550:	1062000d 	beq	v1,v0,458588 <key_add_continue+0xfc>
  458554:	00000000 	nop
  458558:	8f848994 	lw	a0,-30316(gp)
  45855c:	00000000 	nop
  458560:	8c840000 	lw	a0,0(a0)
  458564:	8f9980c8 	lw	t9,-32568(gp)
  458568:	00000000 	nop
  45856c:	0320f809 	jalr	t9
  458570:	00000000 	nop
  458574:	8fdc0010 	lw	gp,16(s8)
  458578:	2402ffff 	li	v0,-1
  45857c:	8f818994 	lw	at,-30316(gp)
  458580:	00000000 	nop
  458584:	ac220000 	sw	v0,0(at)
}
  458588:	03c0e821 	move	sp,s8
  45858c:	8fbf0028 	lw	ra,40(sp)
  458590:	8fbe0024 	lw	s8,36(sp)
  458594:	27bd0030 	addiu	sp,sp,48
  458598:	03e00008 	jr	ra
  45859c:	00000000 	nop

004585a0 <whack_handle>:
  4585a0:	3c1c0fbb 	lui	gp,0xfbb
  4585a4:	279c43d0 	addiu	gp,gp,17360
  4585a8:	0399e021 	addu	gp,gp,t9
  4585ac:	27bdf528 	addiu	sp,sp,-2776
  4585b0:	afbc0018 	sw	gp,24(sp)
  4585b4:	afbf0ad0 	sw	ra,2768(sp)
  4585b8:	afbe0acc 	sw	s8,2764(sp)
  4585bc:	afbc0ac8 	sw	gp,2760(sp)
  4585c0:	03a0f021 	move	s8,sp
  4585c4:	afc40ad8 	sw	a0,2776(s8)

/* Handle a kernel request. Supposedly, there's a message in
 * the kernelsock socket.
 */
void
whack_handle(int whackctlfd)
{
    struct whack_message msg;
    struct sockaddr_un whackaddr;
    int whackaddrlen = sizeof(whackaddr);
  4585c8:	2402006e 	li	v0,110
  4585cc:	afc20a80 	sw	v0,2688(s8)
    int whackfd = accept(whackctlfd, (struct sockaddr *)&whackaddr, &whackaddrlen);
  4585d0:	8fc40ad8 	lw	a0,2776(s8)
  4585d4:	27c50a10 	addiu	a1,s8,2576
  4585d8:	27c60a80 	addiu	a2,s8,2688
  4585dc:	8f998818 	lw	t9,-30696(gp)
  4585e0:	00000000 	nop
  4585e4:	0320f809 	jalr	t9
  4585e8:	00000000 	nop
  4585ec:	8fdc0018 	lw	gp,24(s8)
  4585f0:	afc20a84 	sw	v0,2692(s8)
    ssize_t n;

    if (whackfd < 0)
  4585f4:	8fc20a84 	lw	v0,2692(s8)
  4585f8:	00000000 	nop
  4585fc:	04410015 	bgez	v0,458654 <whack_handle+0xb4>
  458600:	00000000 	nop
    {
	log_errno((e, "accept() failed in whack_handle()"));
  458604:	8f998234 	lw	t9,-32204(gp)
  458608:	00000000 	nop
  45860c:	0320f809 	jalr	t9
  458610:	00000000 	nop
  458614:	8fdc0018 	lw	gp,24(s8)
  458618:	8c420000 	lw	v0,0(v0)
  45861c:	00000000 	nop
  458620:	afc20a8c 	sw	v0,2700(s8)
  458624:	8fc40a8c 	lw	a0,2700(s8)
  458628:	8f85802c 	lw	a1,-32724(gp)
  45862c:	00000000 	nop
  458630:	24a510bc 	addiu	a1,a1,4284
  458634:	8f9988ec 	lw	t9,-30484(gp)
  458638:	00000000 	nop
  45863c:	0320f809 	jalr	t9
  458640:	00000000 	nop
  458644:	8fdc0018 	lw	gp,24(s8)
  458648:	00000000 	nop
	return;
  45864c:	100004a7 	b	4598ec <whack_handle+0x134c>
  458650:	00000000 	nop
    }
    n = read(whackfd, &msg, sizeof(msg));
  458654:	8fc40a84 	lw	a0,2692(s8)
  458658:	27c50020 	addiu	a1,s8,32
  45865c:	240609f0 	li	a2,2544
  458660:	8f998664 	lw	t9,-31132(gp)
  458664:	00000000 	nop
  458668:	0320f809 	jalr	t9
  45866c:	00000000 	nop
  458670:	8fdc0018 	lw	gp,24(s8)
  458674:	afc20a88 	sw	v0,2696(s8)
    if (n == -1)
  458678:	8fc30a88 	lw	v1,2696(s8)
  45867c:	2402ffff 	li	v0,-1
  458680:	1462001c 	bne	v1,v0,4586f4 <whack_handle+0x154>
  458684:	00000000 	nop
    {
	log_errno((e, "read() failed in whack_handle()"));
  458688:	8f998234 	lw	t9,-32204(gp)
  45868c:	00000000 	nop
  458690:	0320f809 	jalr	t9
  458694:	00000000 	nop
  458698:	8fdc0018 	lw	gp,24(s8)
  45869c:	8c420000 	lw	v0,0(v0)
  4586a0:	00000000 	nop
  4586a4:	afc20a8c 	sw	v0,2700(s8)
  4586a8:	8fc40a8c 	lw	a0,2700(s8)
  4586ac:	8f85802c 	lw	a1,-32724(gp)
  4586b0:	00000000 	nop
  4586b4:	24a510e0 	addiu	a1,a1,4320
  4586b8:	8f9988ec 	lw	t9,-30484(gp)
  4586bc:	00000000 	nop
  4586c0:	0320f809 	jalr	t9
  4586c4:	00000000 	nop
  4586c8:	8fdc0018 	lw	gp,24(s8)
  4586cc:	00000000 	nop
	close(whackfd);
  4586d0:	8fc40a84 	lw	a0,2692(s8)
  4586d4:	8f9980c8 	lw	t9,-32568(gp)
  4586d8:	00000000 	nop
  4586dc:	0320f809 	jalr	t9
  4586e0:	00000000 	nop
  4586e4:	8fdc0018 	lw	gp,24(s8)
  4586e8:	00000000 	nop
	return;
  4586ec:	1000047f 	b	4598ec <whack_handle+0x134c>
  4586f0:	00000000 	nop
    }

    whack_log_fd = whackfd;
  4586f4:	8fc20a84 	lw	v0,2692(s8)
  4586f8:	8f818994 	lw	at,-30316(gp)
  4586fc:	00000000 	nop
  458700:	ac220000 	sw	v0,0(at)

    /* sanity check message */
    {
	err_t ugh = NULL;
  458704:	afc00a8c 	sw	zero,2700(s8)

	next_str = msg.string;
  458708:	27c20210 	addiu	v0,s8,528
  45870c:	8f818018 	lw	at,-32744(gp)
  458710:	00000000 	nop
  458714:	24217670 	addiu	at,at,30320
  458718:	ac220000 	sw	v0,0(at)
	str_roof = (char *)&msg + n;
  45871c:	27c30020 	addiu	v1,s8,32
  458720:	8fc20a88 	lw	v0,2696(s8)
  458724:	00000000 	nop
  458728:	00621021 	addu	v0,v1,v0
  45872c:	8f818018 	lw	at,-32744(gp)
  458730:	00000000 	nop
  458734:	24217674 	addiu	at,at,30324
  458738:	ac220000 	sw	v0,0(at)

	if (next_str > str_roof)
  45873c:	8f838018 	lw	v1,-32744(gp)
  458740:	00000000 	nop
  458744:	24637674 	addiu	v1,v1,30324
  458748:	8c630000 	lw	v1,0(v1)
  45874c:	8f828018 	lw	v0,-32744(gp)
  458750:	00000000 	nop
  458754:	24427670 	addiu	v0,v0,30320
  458758:	8c420000 	lw	v0,0(v0)
  45875c:	00000000 	nop
  458760:	0062102b 	sltu	v0,v1,v0
  458764:	1040000e 	beqz	v0,4587a0 <whack_handle+0x200>
  458768:	00000000 	nop
	{
	    ugh = builddiag("truncated message from whack: got %d bytes; expected %d.  Message ignored."
  45876c:	8f84802c 	lw	a0,-32724(gp)
  458770:	00000000 	nop
  458774:	24841100 	addiu	a0,a0,4352
  458778:	8fc50a88 	lw	a1,2696(s8)
  45877c:	240609f0 	li	a2,2544
  458780:	8f9986dc 	lw	t9,-31012(gp)
  458784:	00000000 	nop
  458788:	0320f809 	jalr	t9
  45878c:	00000000 	nop
  458790:	8fdc0018 	lw	gp,24(s8)
  458794:	afc20a8c 	sw	v0,2700(s8)
  458798:	100000bd 	b	458a90 <whack_handle+0x4f0>
  45879c:	00000000 	nop
		, (int)n, (int) sizeof(msg));
	}
	else if (msg.magic != WHACK_MAGIC)
  4587a0:	8fc30020 	lw	v1,32(s8)
  4587a4:	3c027768 	lui	v0,0x7768
  4587a8:	34426b13 	ori	v0,v0,0x6b13
  4587ac:	1062000f 	beq	v1,v0,4587ec <whack_handle+0x24c>
  4587b0:	00000000 	nop
	{
	    ugh = builddiag("message from whack has bad magic %d; should be %d; probably wrong version.  Message ignored"
  4587b4:	8f84802c 	lw	a0,-32724(gp)
  4587b8:	00000000 	nop
  4587bc:	2484114c 	addiu	a0,a0,4428
  4587c0:	8fc50020 	lw	a1,32(s8)
  4587c4:	3c067768 	lui	a2,0x7768
  4587c8:	34c66b13 	ori	a2,a2,0x6b13
  4587cc:	8f9986dc 	lw	t9,-31012(gp)
  4587d0:	00000000 	nop
  4587d4:	0320f809 	jalr	t9
  4587d8:	00000000 	nop
  4587dc:	8fdc0018 	lw	gp,24(s8)
  4587e0:	afc20a8c 	sw	v0,2700(s8)
  4587e4:	100000aa 	b	458a90 <whack_handle+0x4f0>
  4587e8:	00000000 	nop
		, msg.magic, WHACK_MAGIC);
	}
	else if (!unpack_str(&msg.name)		/* string 1 */
	|| !unpack_str(&msg.left.id)		/* string 2 */
	|| !unpack_str(&msg.left.cert)		/* string 3 */
	|| !unpack_str(&msg.left.ca)            /* string 4 */
	|| !unpack_str(&msg.left.updown)	/* string 5 */
#ifdef VIRTUAL_IP
	|| !unpack_str(&msg.left.virt)		/* string   */
#endif
	|| !unpack_str(&msg.right.id)		/* string 6 */
	|| !unpack_str(&msg.right.cert)		/* string 7 */
	|| !unpack_str(&msg.right.ca)           /* string 8 */
	|| !unpack_str(&msg.right.updown)	/* string 9 */
#ifdef VIRTUAL_IP
	|| !unpack_str(&msg.right.virt)		/* string   */
#endif
	|| !unpack_str(&msg.keyid)		/* string 10 */
	|| !unpack_str(&msg.ike)		/* string 11 */
	|| !unpack_str(&msg.esp)		/* string 12 */
	|| str_roof - next_str != (ptrdiff_t)msg.keyval.len)	/* check chunk */
  4587ec:	27c40028 	addiu	a0,s8,40
  4587f0:	8f99803c 	lw	t9,-32708(gp)
  4587f4:	00000000 	nop
  4587f8:	273982c0 	addiu	t9,t9,-32064
  4587fc:	00000000 	nop
  458800:	0320f809 	jalr	t9
  458804:	00000000 	nop
  458808:	8fdc0018 	lw	gp,24(s8)
  45880c:	10400093 	beqz	v0,458a5c <whack_handle+0x4bc>
  458810:	00000000 	nop
  458814:	27c4006c 	addiu	a0,s8,108
  458818:	8f99803c 	lw	t9,-32708(gp)
  45881c:	00000000 	nop
  458820:	273982c0 	addiu	t9,t9,-32064
  458824:	00000000 	nop
  458828:	0320f809 	jalr	t9
  45882c:	00000000 	nop
  458830:	8fdc0018 	lw	gp,24(s8)
  458834:	10400089 	beqz	v0,458a5c <whack_handle+0x4bc>
  458838:	00000000 	nop
  45883c:	27c40070 	addiu	a0,s8,112
  458840:	8f99803c 	lw	t9,-32708(gp)
  458844:	00000000 	nop
  458848:	273982c0 	addiu	t9,t9,-32064
  45884c:	00000000 	nop
  458850:	0320f809 	jalr	t9
  458854:	00000000 	nop
  458858:	8fdc0018 	lw	gp,24(s8)
  45885c:	1040007f 	beqz	v0,458a5c <whack_handle+0x4bc>
  458860:	00000000 	nop
  458864:	27c40074 	addiu	a0,s8,116
  458868:	8f99803c 	lw	t9,-32708(gp)
  45886c:	00000000 	nop
  458870:	273982c0 	addiu	t9,t9,-32064
  458874:	00000000 	nop
  458878:	0320f809 	jalr	t9
  45887c:	00000000 	nop
  458880:	8fdc0018 	lw	gp,24(s8)
  458884:	10400075 	beqz	v0,458a5c <whack_handle+0x4bc>
  458888:	00000000 	nop
  45888c:	27c400e0 	addiu	a0,s8,224
  458890:	8f99803c 	lw	t9,-32708(gp)
  458894:	00000000 	nop
  458898:	273982c0 	addiu	t9,t9,-32064
  45889c:	00000000 	nop
  4588a0:	0320f809 	jalr	t9
  4588a4:	00000000 	nop
  4588a8:	8fdc0018 	lw	gp,24(s8)
  4588ac:	1040006b 	beqz	v0,458a5c <whack_handle+0x4bc>
  4588b0:	00000000 	nop
  4588b4:	27c400ec 	addiu	a0,s8,236
  4588b8:	8f99803c 	lw	t9,-32708(gp)
  4588bc:	00000000 	nop
  4588c0:	273982c0 	addiu	t9,t9,-32064
  4588c4:	00000000 	nop
  4588c8:	0320f809 	jalr	t9
  4588cc:	00000000 	nop
  4588d0:	8fdc0018 	lw	gp,24(s8)
  4588d4:	10400061 	beqz	v0,458a5c <whack_handle+0x4bc>
  4588d8:	00000000 	nop
  4588dc:	27c400f0 	addiu	a0,s8,240
  4588e0:	8f99803c 	lw	t9,-32708(gp)
  4588e4:	00000000 	nop
  4588e8:	273982c0 	addiu	t9,t9,-32064
  4588ec:	00000000 	nop
  4588f0:	0320f809 	jalr	t9
  4588f4:	00000000 	nop
  4588f8:	8fdc0018 	lw	gp,24(s8)
  4588fc:	10400057 	beqz	v0,458a5c <whack_handle+0x4bc>
  458900:	00000000 	nop
  458904:	27c400f4 	addiu	a0,s8,244
  458908:	8f99803c 	lw	t9,-32708(gp)
  45890c:	00000000 	nop
  458910:	273982c0 	addiu	t9,t9,-32064
  458914:	00000000 	nop
  458918:	0320f809 	jalr	t9
  45891c:	00000000 	nop
  458920:	8fdc0018 	lw	gp,24(s8)
  458924:	1040004d 	beqz	v0,458a5c <whack_handle+0x4bc>
  458928:	00000000 	nop
  45892c:	27c400f8 	addiu	a0,s8,248
  458930:	8f99803c 	lw	t9,-32708(gp)
  458934:	00000000 	nop
  458938:	273982c0 	addiu	t9,t9,-32064
  45893c:	00000000 	nop
  458940:	0320f809 	jalr	t9
  458944:	00000000 	nop
  458948:	8fdc0018 	lw	gp,24(s8)
  45894c:	10400043 	beqz	v0,458a5c <whack_handle+0x4bc>
  458950:	00000000 	nop
  458954:	27c40164 	addiu	a0,s8,356
  458958:	8f99803c 	lw	t9,-32708(gp)
  45895c:	00000000 	nop
  458960:	273982c0 	addiu	t9,t9,-32064
  458964:	00000000 	nop
  458968:	0320f809 	jalr	t9
  45896c:	00000000 	nop
  458970:	8fdc0018 	lw	gp,24(s8)
  458974:	10400039 	beqz	v0,458a5c <whack_handle+0x4bc>
  458978:	00000000 	nop
  45897c:	27c40170 	addiu	a0,s8,368
  458980:	8f99803c 	lw	t9,-32708(gp)
  458984:	00000000 	nop
  458988:	273982c0 	addiu	t9,t9,-32064
  45898c:	00000000 	nop
  458990:	0320f809 	jalr	t9
  458994:	00000000 	nop
  458998:	8fdc0018 	lw	gp,24(s8)
  45899c:	1040002f 	beqz	v0,458a5c <whack_handle+0x4bc>
  4589a0:	00000000 	nop
  4589a4:	27c4018c 	addiu	a0,s8,396
  4589a8:	8f99803c 	lw	t9,-32708(gp)
  4589ac:	00000000 	nop
  4589b0:	273982c0 	addiu	t9,t9,-32064
  4589b4:	00000000 	nop
  4589b8:	0320f809 	jalr	t9
  4589bc:	00000000 	nop
  4589c0:	8fdc0018 	lw	gp,24(s8)
  4589c4:	10400025 	beqz	v0,458a5c <whack_handle+0x4bc>
  4589c8:	00000000 	nop
  4589cc:	27c40178 	addiu	a0,s8,376
  4589d0:	8f99803c 	lw	t9,-32708(gp)
  4589d4:	00000000 	nop
  4589d8:	273982c0 	addiu	t9,t9,-32064
  4589dc:	00000000 	nop
  4589e0:	0320f809 	jalr	t9
  4589e4:	00000000 	nop
  4589e8:	8fdc0018 	lw	gp,24(s8)
  4589ec:	1040001b 	beqz	v0,458a5c <whack_handle+0x4bc>
  4589f0:	00000000 	nop
  4589f4:	27c40180 	addiu	a0,s8,384
  4589f8:	8f99803c 	lw	t9,-32708(gp)
  4589fc:	00000000 	nop
  458a00:	273982c0 	addiu	t9,t9,-32064
  458a04:	00000000 	nop
  458a08:	0320f809 	jalr	t9
  458a0c:	00000000 	nop
  458a10:	8fdc0018 	lw	gp,24(s8)
  458a14:	10400011 	beqz	v0,458a5c <whack_handle+0x4bc>
  458a18:	00000000 	nop
  458a1c:	8f838018 	lw	v1,-32744(gp)
  458a20:	00000000 	nop
  458a24:	24637674 	addiu	v1,v1,30324
  458a28:	8c630000 	lw	v1,0(v1)
  458a2c:	8f828018 	lw	v0,-32744(gp)
  458a30:	00000000 	nop
  458a34:	24427670 	addiu	v0,v0,30320
  458a38:	8c420000 	lw	v0,0(v0)
  458a3c:	00000000 	nop
  458a40:	00621823 	subu	v1,v1,v0
  458a44:	8fc20198 	lw	v0,408(s8)
  458a48:	00000000 	nop
  458a4c:	14620003 	bne	v1,v0,458a5c <whack_handle+0x4bc>
  458a50:	00000000 	nop
  458a54:	10000008 	b	458a78 <whack_handle+0x4d8>
  458a58:	00000000 	nop
	{
	    ugh = "message from whack contains bad string";
  458a5c:	8f82802c 	lw	v0,-32724(gp)
  458a60:	00000000 	nop
  458a64:	244211a8 	addiu	v0,v0,4520
  458a68:	00000000 	nop
  458a6c:	afc20a8c 	sw	v0,2700(s8)
  458a70:	10000007 	b	458a90 <whack_handle+0x4f0>
  458a74:	00000000 	nop
	}
	else
	{
	    msg.keyval.ptr = next_str;	/* grab chunk */
  458a78:	8f828018 	lw	v0,-32744(gp)
  458a7c:	00000000 	nop
  458a80:	24427670 	addiu	v0,v0,30320
  458a84:	8c420000 	lw	v0,0(v0)
  458a88:	00000000 	nop
  458a8c:	afc20194 	sw	v0,404(s8)
	}

	if (ugh != NULL)
  458a90:	8fc20a8c 	lw	v0,2700(s8)
  458a94:	00000000 	nop
  458a98:	10400019 	beqz	v0,458b00 <whack_handle+0x560>
  458a9c:	00000000 	nop
	{
	    loglog(RC_BADWHACKMESSAGE, "%s", ugh);
  458aa0:	2404001e 	li	a0,30
  458aa4:	8f85802c 	lw	a1,-32724(gp)
  458aa8:	00000000 	nop
  458aac:	24a511d0 	addiu	a1,a1,4560
  458ab0:	8fc60a8c 	lw	a2,2700(s8)
  458ab4:	8f998c48 	lw	t9,-29624(gp)
  458ab8:	00000000 	nop
  458abc:	0320f809 	jalr	t9
  458ac0:	00000000 	nop
  458ac4:	8fdc0018 	lw	gp,24(s8)
  458ac8:	00000000 	nop
	    whack_log_fd = NULL_FD;
  458acc:	2402ffff 	li	v0,-1
  458ad0:	8f818994 	lw	at,-30316(gp)
  458ad4:	00000000 	nop
  458ad8:	ac220000 	sw	v0,0(at)
	    close(whackfd);
  458adc:	8fc40a84 	lw	a0,2692(s8)
  458ae0:	8f9980c8 	lw	t9,-32568(gp)
  458ae4:	00000000 	nop
  458ae8:	0320f809 	jalr	t9
  458aec:	00000000 	nop
  458af0:	8fdc0018 	lw	gp,24(s8)
  458af4:	00000000 	nop
	    return;
  458af8:	1000037c 	b	4598ec <whack_handle+0x134c>
  458afc:	00000000 	nop
	}
    }

    if (msg.whack_options)
  458b00:	8fc2002c 	lw	v0,44(s8)
  458b04:	00000000 	nop
  458b08:	10400068 	beqz	v0,458cac <whack_handle+0x70c>
  458b0c:	00000000 	nop
    {
#ifdef DEBUG
	if (msg.name == NULL)
  458b10:	8fc20028 	lw	v0,40(s8)
  458b14:	00000000 	nop
  458b18:	1440002f 	bnez	v0,458bd8 <whack_handle+0x638>
  458b1c:	00000000 	nop
	{
	    /* we do a two-step so that if either old or new would
	     * cause the message to print, it will be printed.
	     */
	    cur_debugging |= msg.debugging;
  458b20:	8f8384f8 	lw	v1,-31496(gp)
  458b24:	00000000 	nop
  458b28:	8c630000 	lw	v1,0(v1)
  458b2c:	8fc20030 	lw	v0,48(s8)
  458b30:	00000000 	nop
  458b34:	00621025 	or	v0,v1,v0
  458b38:	8f8184f8 	lw	at,-31496(gp)
  458b3c:	00000000 	nop
  458b40:	ac220000 	sw	v0,0(at)
	    DBG(DBG_CONTROL
  458b44:	8f8284f8 	lw	v0,-31496(gp)
  458b48:	00000000 	nop
  458b4c:	8c420000 	lw	v0,0(v0)
  458b50:	00000000 	nop
  458b54:	30420010 	andi	v0,v0,0x10
  458b58:	10400016 	beqz	v0,458bb4 <whack_handle+0x614>
  458b5c:	00000000 	nop
  458b60:	8fc30030 	lw	v1,48(s8)
  458b64:	00001021 	move	v0,zero
  458b68:	8f848b98 	lw	a0,-29800(gp)
  458b6c:	00403021 	move	a2,v0
  458b70:	00603821 	move	a3,v1
  458b74:	8f9988c4 	lw	t9,-30524(gp)
  458b78:	00000000 	nop
  458b7c:	0320f809 	jalr	t9
  458b80:	00000000 	nop
  458b84:	8fdc0018 	lw	gp,24(s8)
  458b88:	00000000 	nop
  458b8c:	8f84802c 	lw	a0,-32724(gp)
  458b90:	00000000 	nop
  458b94:	248411d4 	addiu	a0,a0,4564
  458b98:	00402821 	move	a1,v0
  458b9c:	8f9983b8 	lw	t9,-31816(gp)
  458ba0:	00000000 	nop
  458ba4:	0320f809 	jalr	t9
  458ba8:	00000000 	nop
  458bac:	8fdc0018 	lw	gp,24(s8)
  458bb0:	00000000 	nop
		, DBG_log("base debugging = %s"
		    , bitnamesof(debug_bit_names, msg.debugging)));
	    cur_debugging = base_debugging = msg.debugging;
  458bb4:	8fc20030 	lw	v0,48(s8)
  458bb8:	8f81830c 	lw	at,-31988(gp)
  458bbc:	00000000 	nop
  458bc0:	ac220000 	sw	v0,0(at)
  458bc4:	8f8184f8 	lw	at,-31496(gp)
  458bc8:	00000000 	nop
  458bcc:	ac220000 	sw	v0,0(at)
  458bd0:	10000036 	b	458cac <whack_handle+0x70c>
  458bd4:	00000000 	nop
	}
	else if (!msg.whack_connection)
  458bd8:	8fc20034 	lw	v0,52(s8)
  458bdc:	00000000 	nop
  458be0:	14400032 	bnez	v0,458cac <whack_handle+0x70c>
  458be4:	00000000 	nop
	{
	    struct connection *c = con_by_name(msg.name, TRUE);
  458be8:	8fc40028 	lw	a0,40(s8)
  458bec:	24050001 	li	a1,1
  458bf0:	8f998be8 	lw	t9,-29720(gp)
  458bf4:	00000000 	nop
  458bf8:	0320f809 	jalr	t9
  458bfc:	00000000 	nop
  458c00:	8fdc0018 	lw	gp,24(s8)
  458c04:	afc20a8c 	sw	v0,2700(s8)

	    if (c != NULL)
  458c08:	8fc20a8c 	lw	v0,2700(s8)
  458c0c:	00000000 	nop
  458c10:	10400026 	beqz	v0,458cac <whack_handle+0x70c>
  458c14:	00000000 	nop
	    {
		c->extra_debugging = msg.debugging;
  458c18:	8fc30030 	lw	v1,48(s8)
  458c1c:	8fc20a8c 	lw	v0,2700(s8)
  458c20:	00000000 	nop
  458c24:	ac4301b0 	sw	v1,432(v0)
		DBG(DBG_CONTROL
  458c28:	8f8284f8 	lw	v0,-31496(gp)
  458c2c:	00000000 	nop
  458c30:	8c420000 	lw	v0,0(v0)
  458c34:	00000000 	nop
  458c38:	30420010 	andi	v0,v0,0x10
  458c3c:	1040001b 	beqz	v0,458cac <whack_handle+0x70c>
  458c40:	00000000 	nop
  458c44:	8fc40a8c 	lw	a0,2700(s8)
  458c48:	00000000 	nop
  458c4c:	8c8301b0 	lw	v1,432(a0)
  458c50:	00001021 	move	v0,zero
  458c54:	8f848b98 	lw	a0,-29800(gp)
  458c58:	00403021 	move	a2,v0
  458c5c:	00603821 	move	a3,v1
  458c60:	8f9988c4 	lw	t9,-30524(gp)
  458c64:	00000000 	nop
  458c68:	0320f809 	jalr	t9
  458c6c:	00000000 	nop
  458c70:	8fdc0018 	lw	gp,24(s8)
  458c74:	00401821 	move	v1,v0
  458c78:	8f84802c 	lw	a0,-32724(gp)
  458c7c:	00000000 	nop
  458c80:	248411e8 	addiu	a0,a0,4584
  458c84:	8fc20a8c 	lw	v0,2700(s8)
  458c88:	00000000 	nop
  458c8c:	8c450000 	lw	a1,0(v0)
  458c90:	00603021 	move	a2,v1
  458c94:	8f9983b8 	lw	t9,-31816(gp)
  458c98:	00000000 	nop
  458c9c:	0320f809 	jalr	t9
  458ca0:	00000000 	nop
  458ca4:	8fdc0018 	lw	gp,24(s8)
  458ca8:	00000000 	nop
		    , DBG_log("\"%s\" extra_debugging = %s"
			, c->name
			, bitnamesof(debug_bit_names, c->extra_debugging)));
	    }
	}
#endif
    }

    /* Deleting combined with adding a connection works as replace.
     * To make this more useful, in only this combination,
     * delete will silently ignore the lack of the connection.
     */
    if (msg.whack_delete)
  458cac:	8fc201e8 	lw	v0,488(s8)
  458cb0:	00000000 	nop
  458cb4:	10400025 	beqz	v0,458d4c <whack_handle+0x7ac>
  458cb8:	00000000 	nop
    {
	struct connection *c = con_by_name(msg.name, !msg.whack_connection);
  458cbc:	8fc20034 	lw	v0,52(s8)
  458cc0:	00000000 	nop
  458cc4:	38420000 	xori	v0,v0,0x0
  458cc8:	2c420001 	sltiu	v0,v0,1
  458ccc:	8fc40028 	lw	a0,40(s8)
  458cd0:	00402821 	move	a1,v0
  458cd4:	8f998be8 	lw	t9,-29720(gp)
  458cd8:	00000000 	nop
  458cdc:	0320f809 	jalr	t9
  458ce0:	00000000 	nop
  458ce4:	8fdc0018 	lw	gp,24(s8)
  458ce8:	afc20a8c 	sw	v0,2700(s8)

	/* note: this is a "while" because road warrior
	 * leads to multiple connections with the same name.
	 */
	for (; c != NULL; c = con_by_name(msg.name, FALSE))
  458cec:	8fc20a8c 	lw	v0,2700(s8)
  458cf0:	00000000 	nop
  458cf4:	14400003 	bnez	v0,458d04 <whack_handle+0x764>
  458cf8:	00000000 	nop
  458cfc:	10000013 	b	458d4c <whack_handle+0x7ac>
  458d00:	00000000 	nop
	    delete_connection(c, FALSE);
  458d04:	8fc40a8c 	lw	a0,2700(s8)
  458d08:	00002821 	move	a1,zero
  458d0c:	8f998b28 	lw	t9,-29912(gp)
  458d10:	00000000 	nop
  458d14:	0320f809 	jalr	t9
  458d18:	00000000 	nop
  458d1c:	8fdc0018 	lw	gp,24(s8)
  458d20:	00000000 	nop
  458d24:	8fc40028 	lw	a0,40(s8)
  458d28:	00002821 	move	a1,zero
  458d2c:	8f998be8 	lw	t9,-29720(gp)
  458d30:	00000000 	nop
  458d34:	0320f809 	jalr	t9
  458d38:	00000000 	nop
  458d3c:	8fdc0018 	lw	gp,24(s8)
  458d40:	afc20a8c 	sw	v0,2700(s8)
  458d44:	1000ffe9 	b	458cec <whack_handle+0x74c>
  458d48:	00000000 	nop
    }

    if (msg.whack_deletestate)
  458d4c:	8fc201ec 	lw	v0,492(s8)
  458d50:	00000000 	nop
  458d54:	1040001f 	beqz	v0,458dd4 <whack_handle+0x834>
  458d58:	00000000 	nop
    {
	struct state *st = state_with_serialno(msg.whack_deletestateno);
  458d5c:	8fc401f0 	lw	a0,496(s8)
  458d60:	8f99873c 	lw	t9,-30916(gp)
  458d64:	00000000 	nop
  458d68:	0320f809 	jalr	t9
  458d6c:	00000000 	nop
  458d70:	8fdc0018 	lw	gp,24(s8)
  458d74:	afc20a8c 	sw	v0,2700(s8)

	if (st == NULL)
  458d78:	8fc20a8c 	lw	v0,2700(s8)
  458d7c:	00000000 	nop
  458d80:	1440000d 	bnez	v0,458db8 <whack_handle+0x818>
  458d84:	00000000 	nop
	{
	    loglog(RC_UNKNOWN_NAME, "no state #%lu to delete"
  458d88:	24040015 	li	a0,21
  458d8c:	8f85802c 	lw	a1,-32724(gp)
  458d90:	00000000 	nop
  458d94:	24a51204 	addiu	a1,a1,4612
  458d98:	8fc601f0 	lw	a2,496(s8)
  458d9c:	8f998c48 	lw	t9,-29624(gp)
  458da0:	00000000 	nop
  458da4:	0320f809 	jalr	t9
  458da8:	00000000 	nop
  458dac:	8fdc0018 	lw	gp,24(s8)
  458db0:	10000008 	b	458dd4 <whack_handle+0x834>
  458db4:	00000000 	nop
		, msg.whack_deletestateno);
	}
	else
	{
	    delete_state(st);
  458db8:	8fc40a8c 	lw	a0,2700(s8)
  458dbc:	8f998b70 	lw	t9,-29840(gp)
  458dc0:	00000000 	nop
  458dc4:	0320f809 	jalr	t9
  458dc8:	00000000 	nop
  458dcc:	8fdc0018 	lw	gp,24(s8)
  458dd0:	00000000 	nop
	}
    }

    if (msg.whack_connection)
  458dd4:	8fc20034 	lw	v0,52(s8)
  458dd8:	00000000 	nop
  458ddc:	10400008 	beqz	v0,458e00 <whack_handle+0x860>
  458de0:	00000000 	nop
	add_connection(&msg);
  458de4:	27c40020 	addiu	a0,s8,32
  458de8:	8f998a0c 	lw	t9,-30196(gp)
  458dec:	00000000 	nop
  458df0:	0320f809 	jalr	t9
  458df4:	00000000 	nop
  458df8:	8fdc0018 	lw	gp,24(s8)
  458dfc:	00000000 	nop

    /* process "listen" before any operation that could require it */
    if (msg.whack_listen)
  458e00:	8fc201f4 	lw	v0,500(s8)
  458e04:	00000000 	nop
  458e08:	1040001a 	beqz	v0,458e74 <whack_handle+0x8d4>
  458e0c:	00000000 	nop
    {
	plog("listening for IKE messages");
  458e10:	8f84802c 	lw	a0,-32724(gp)
  458e14:	00000000 	nop
  458e18:	2484121c 	addiu	a0,a0,4636
  458e1c:	8f998abc 	lw	t9,-30020(gp)
  458e20:	00000000 	nop
  458e24:	0320f809 	jalr	t9
  458e28:	00000000 	nop
  458e2c:	8fdc0018 	lw	gp,24(s8)
  458e30:	00000000 	nop
	listening = TRUE;
  458e34:	24020001 	li	v0,1
  458e38:	8f818314 	lw	at,-31980(gp)
  458e3c:	00000000 	nop
  458e40:	ac220000 	sw	v0,0(at)
	find_ifaces();
  458e44:	8f998720 	lw	t9,-30944(gp)
  458e48:	00000000 	nop
  458e4c:	0320f809 	jalr	t9
  458e50:	00000000 	nop
  458e54:	8fdc0018 	lw	gp,24(s8)
  458e58:	00000000 	nop
	load_preshared_secrets();
  458e5c:	8f9981ac 	lw	t9,-32340(gp)
  458e60:	00000000 	nop
  458e64:	0320f809 	jalr	t9
  458e68:	00000000 	nop
  458e6c:	8fdc0018 	lw	gp,24(s8)
  458e70:	00000000 	nop
    }
    if (msg.whack_unlisten)
  458e74:	8fc201f8 	lw	v0,504(s8)
  458e78:	00000000 	nop
  458e7c:	1040000d 	beqz	v0,458eb4 <whack_handle+0x914>
  458e80:	00000000 	nop
    {
	plog("no longer listening for IKE messages");
  458e84:	8f84802c 	lw	a0,-32724(gp)
  458e88:	00000000 	nop
  458e8c:	24841238 	addiu	a0,a0,4664
  458e90:	8f998abc 	lw	t9,-30020(gp)
  458e94:	00000000 	nop
  458e98:	0320f809 	jalr	t9
  458e9c:	00000000 	nop
  458ea0:	8fdc0018 	lw	gp,24(s8)
  458ea4:	00000000 	nop
	listening = FALSE;
  458ea8:	8f818314 	lw	at,-31980(gp)
  458eac:	00000000 	nop
  458eb0:	ac200000 	sw	zero,0(at)
    }

    if (msg.whack_reread & REREAD_SECRETS)
  458eb4:	93c20201 	lbu	v0,513(s8)
  458eb8:	00000000 	nop
  458ebc:	30420001 	andi	v0,v0,0x1
  458ec0:	304200ff 	andi	v0,v0,0xff
  458ec4:	10400007 	beqz	v0,458ee4 <whack_handle+0x944>
  458ec8:	00000000 	nop
    {
	load_preshared_secrets();
  458ecc:	8f9981ac 	lw	t9,-32340(gp)
  458ed0:	00000000 	nop
  458ed4:	0320f809 	jalr	t9
  458ed8:	00000000 	nop
  458edc:	8fdc0018 	lw	gp,24(s8)
  458ee0:	00000000 	nop
    }

   if (msg.whack_reread & REREAD_MYCERT)
  458ee4:	93c20201 	lbu	v0,513(s8)
  458ee8:	00000000 	nop
  458eec:	30420002 	andi	v0,v0,0x2
  458ef0:	304200ff 	andi	v0,v0,0xff
  458ef4:	10400007 	beqz	v0,458f14 <whack_handle+0x974>
  458ef8:	00000000 	nop
    {
	load_mycert();
  458efc:	8f99889c 	lw	t9,-30564(gp)
  458f00:	00000000 	nop
  458f04:	0320f809 	jalr	t9
  458f08:	00000000 	nop
  458f0c:	8fdc0018 	lw	gp,24(s8)
  458f10:	00000000 	nop
    }

   if (msg.whack_reread & REREAD_CACERTS)
  458f14:	93c20201 	lbu	v0,513(s8)
  458f18:	00000000 	nop
  458f1c:	30420004 	andi	v0,v0,0x4
  458f20:	304200ff 	andi	v0,v0,0xff
  458f24:	10400007 	beqz	v0,458f44 <whack_handle+0x9a4>
  458f28:	00000000 	nop
    {
	load_cacerts();
  458f2c:	8f998128 	lw	t9,-32472(gp)
  458f30:	00000000 	nop
  458f34:	0320f809 	jalr	t9
  458f38:	00000000 	nop
  458f3c:	8fdc0018 	lw	gp,24(s8)
  458f40:	00000000 	nop
    }

   if (msg.whack_reread & REREAD_CRLS)
  458f44:	93c20201 	lbu	v0,513(s8)
  458f48:	00000000 	nop
  458f4c:	30420008 	andi	v0,v0,0x8
  458f50:	304200ff 	andi	v0,v0,0xff
  458f54:	10400007 	beqz	v0,458f74 <whack_handle+0x9d4>
  458f58:	00000000 	nop
    {
	load_crls();
  458f5c:	8f998944 	lw	t9,-30396(gp)
  458f60:	00000000 	nop
  458f64:	0320f809 	jalr	t9
  458f68:	00000000 	nop
  458f6c:	8fdc0018 	lw	gp,24(s8)
  458f70:	00000000 	nop
    }

   if (msg.whack_list & LIST_PUBKEYS)
  458f74:	93c20200 	lbu	v0,512(s8)
  458f78:	00000000 	nop
  458f7c:	30420001 	andi	v0,v0,0x1
  458f80:	304200ff 	andi	v0,v0,0xff
  458f84:	10400008 	beqz	v0,458fa8 <whack_handle+0xa08>
  458f88:	00000000 	nop
    {
	list_public_keys(msg.whack_utc);
  458f8c:	8fc401fc 	lw	a0,508(s8)
  458f90:	8f998bac 	lw	t9,-29780(gp)
  458f94:	00000000 	nop
  458f98:	0320f809 	jalr	t9
  458f9c:	00000000 	nop
  458fa0:	8fdc0018 	lw	gp,24(s8)
  458fa4:	00000000 	nop
    }

    if (msg.whack_list & LIST_CERTS)
  458fa8:	93c20200 	lbu	v0,512(s8)
  458fac:	00000000 	nop
  458fb0:	30420002 	andi	v0,v0,0x2
  458fb4:	304200ff 	andi	v0,v0,0xff
  458fb8:	10400008 	beqz	v0,458fdc <whack_handle+0xa3c>
  458fbc:	00000000 	nop
    {
	list_certs(msg.whack_utc);
  458fc0:	8fc401fc 	lw	a0,508(s8)
  458fc4:	8f998404 	lw	t9,-31740(gp)
  458fc8:	00000000 	nop
  458fcc:	0320f809 	jalr	t9
  458fd0:	00000000 	nop
  458fd4:	8fdc0018 	lw	gp,24(s8)
  458fd8:	00000000 	nop
    }

    if (msg.whack_list & LIST_CACERTS)
  458fdc:	93c20200 	lbu	v0,512(s8)
  458fe0:	00000000 	nop
  458fe4:	30420004 	andi	v0,v0,0x4
  458fe8:	304200ff 	andi	v0,v0,0xff
  458fec:	10400008 	beqz	v0,459010 <whack_handle+0xa70>
  458ff0:	00000000 	nop
    {
	list_cacerts(msg.whack_utc);
  458ff4:	8fc401fc 	lw	a0,508(s8)
  458ff8:	8f99818c 	lw	t9,-32372(gp)
  458ffc:	00000000 	nop
  459000:	0320f809 	jalr	t9
  459004:	00000000 	nop
  459008:	8fdc0018 	lw	gp,24(s8)
  45900c:	00000000 	nop
    }

    if (msg.whack_list & LIST_CRLS)
  459010:	93c20200 	lbu	v0,512(s8)
  459014:	00000000 	nop
  459018:	30420008 	andi	v0,v0,0x8
  45901c:	304200ff 	andi	v0,v0,0xff
  459020:	1040000b 	beqz	v0,459050 <whack_handle+0xab0>
  459024:	00000000 	nop
    {
	list_crls(msg.whack_utc, strict_crl_policy);
  459028:	8fc401fc 	lw	a0,508(s8)
  45902c:	8f858aac 	lw	a1,-30036(gp)
  459030:	00000000 	nop
  459034:	8ca50000 	lw	a1,0(a1)
  459038:	8f998838 	lw	t9,-30664(gp)
  45903c:	00000000 	nop
  459040:	0320f809 	jalr	t9
  459044:	00000000 	nop
  459048:	8fdc0018 	lw	gp,24(s8)
  45904c:	00000000 	nop
    }

    if (msg.whack_key)
  459050:	8fc20184 	lw	v0,388(s8)
  459054:	00000000 	nop
  459058:	1040008e 	beqz	v0,459294 <whack_handle+0xcf4>
  45905c:	00000000 	nop
    {
	/* add a public key */
	struct id keyid;
	err_t ugh = atoid(msg.keyid, &keyid);
  459060:	8fc4018c 	lw	a0,396(s8)
  459064:	27c50a90 	addiu	a1,s8,2704
  459068:	8f998adc 	lw	t9,-29988(gp)
  45906c:	00000000 	nop
  459070:	0320f809 	jalr	t9
  459074:	00000000 	nop
  459078:	8fdc0018 	lw	gp,24(s8)
  45907c:	afc20a8c 	sw	v0,2700(s8)

	if (ugh != NULL)
  459080:	8fc20a8c 	lw	v0,2700(s8)
  459084:	00000000 	nop
  459088:	1040000e 	beqz	v0,4590c4 <whack_handle+0xb24>
  45908c:	00000000 	nop
	{
	    loglog(RC_BADID, "bad --keyid \"%s\": %s", msg.keyid, ugh);
  459090:	2404001b 	li	a0,27
  459094:	8f85802c 	lw	a1,-32724(gp)
  459098:	00000000 	nop
  45909c:	24a51260 	addiu	a1,a1,4704
  4590a0:	8fc6018c 	lw	a2,396(s8)
  4590a4:	8fc70a8c 	lw	a3,2700(s8)
  4590a8:	8f998c48 	lw	t9,-29624(gp)
  4590ac:	00000000 	nop
  4590b0:	0320f809 	jalr	t9
  4590b4:	00000000 	nop
  4590b8:	8fdc0018 	lw	gp,24(s8)
  4590bc:	10000075 	b	459294 <whack_handle+0xcf4>
  4590c0:	00000000 	nop
	}
	else
	{
	    if (!msg.whack_addkey)
  4590c4:	8fc20188 	lw	v0,392(s8)
  4590c8:	00000000 	nop
  4590cc:	14400009 	bnez	v0,4590f4 <whack_handle+0xb54>
  4590d0:	00000000 	nop
		delete_public_keys(&keyid, msg.pubkey_alg);
  4590d4:	27c40a90 	addiu	a0,s8,2704
  4590d8:	8fc50190 	lw	a1,400(s8)
  4590dc:	8f998230 	lw	t9,-32208(gp)
  4590e0:	00000000 	nop
  4590e4:	0320f809 	jalr	t9
  4590e8:	00000000 	nop
  4590ec:	8fdc0018 	lw	gp,24(s8)
  4590f0:	00000000 	nop

	    if (msg.keyval.len == 0)
  4590f4:	8fc20198 	lw	v0,408(s8)
  4590f8:	00000000 	nop
  4590fc:	14400049 	bnez	v0,459224 <whack_handle+0xc84>
  459100:	00000000 	nop
	    {
		struct key_add_continuation *kc
		    = alloc_thing(struct key_add_continuation
  459104:	24040488 	li	a0,1160
  459108:	8f85802c 	lw	a1,-32724(gp)
  45910c:	00000000 	nop
  459110:	24a51278 	addiu	a1,a1,4728
  459114:	8f998084 	lw	t9,-32636(gp)
  459118:	00000000 	nop
  45911c:	0320f809 	jalr	t9
  459120:	00000000 	nop
  459124:	8fdc0018 	lw	gp,24(s8)
  459128:	afc20ab8 	sw	v0,2744(s8)
			, "key add continuation");
		int wfd = dup_any(whackfd);
  45912c:	8fc30a84 	lw	v1,2692(s8)
  459130:	2402ffff 	li	v0,-1
  459134:	1062000a 	beq	v1,v0,459160 <whack_handle+0xbc0>
  459138:	00000000 	nop
  45913c:	8fc40a84 	lw	a0,2692(s8)
  459140:	8f99840c 	lw	t9,-31732(gp)
  459144:	00000000 	nop
  459148:	0320f809 	jalr	t9
  45914c:	00000000 	nop
  459150:	8fdc0018 	lw	gp,24(s8)
  459154:	afc20abc 	sw	v0,2748(s8)
  459158:	10000003 	b	459168 <whack_handle+0xbc8>
  45915c:	00000000 	nop
  459160:	2402ffff 	li	v0,-1
  459164:	afc20abc 	sw	v0,2748(s8)

		kc->whack_fd = wfd;
  459168:	8fc30abc 	lw	v1,2748(s8)
  45916c:	8fc20ab8 	lw	v0,2744(s8)
  459170:	00000000 	nop
  459174:	ac430480 	sw	v1,1152(v0)
		ugh = start_adns_query(&keyid
  459178:	8fc20ab8 	lw	v0,2744(s8)
  45917c:	00000000 	nop
  459180:	afa20010 	sw	v0,16(sp)
  459184:	27c40a90 	addiu	a0,s8,2704
  459188:	00002821 	move	a1,zero
  45918c:	24060019 	li	a2,25
  459190:	8f87803c 	lw	a3,-32708(gp)
  459194:	00000000 	nop
  459198:	24e7848c 	addiu	a3,a3,-31604
  45919c:	8f998b34 	lw	t9,-29900(gp)
  4591a0:	00000000 	nop
  4591a4:	0320f809 	jalr	t9
  4591a8:	00000000 	nop
  4591ac:	8fdc0018 	lw	gp,24(s8)
  4591b0:	afc20a8c 	sw	v0,2700(s8)
		    , NULL
		    , T_KEY
		    , key_add_continue
		    , &kc->ac);

		if (ugh != NULL)
  4591b4:	8fc20a8c 	lw	v0,2700(s8)
  4591b8:	00000000 	nop
  4591bc:	10400035 	beqz	v0,459294 <whack_handle+0xcf4>
  4591c0:	00000000 	nop
		{
		    key_add_ugh(&keyid, ugh);
  4591c4:	27c40a90 	addiu	a0,s8,2704
  4591c8:	8fc50a8c 	lw	a1,2700(s8)
  4591cc:	8f99803c 	lw	t9,-32708(gp)
  4591d0:	00000000 	nop
  4591d4:	273983f4 	addiu	t9,t9,-31756
  4591d8:	00000000 	nop
  4591dc:	0320f809 	jalr	t9
  4591e0:	00000000 	nop
  4591e4:	8fdc0018 	lw	gp,24(s8)
  4591e8:	00000000 	nop
		    close_any(wfd);
  4591ec:	8fc30abc 	lw	v1,2748(s8)
  4591f0:	2402ffff 	li	v0,-1
  4591f4:	10620027 	beq	v1,v0,459294 <whack_handle+0xcf4>
  4591f8:	00000000 	nop
  4591fc:	8fc40abc 	lw	a0,2748(s8)
  459200:	8f9980c8 	lw	t9,-32568(gp)
  459204:	00000000 	nop
  459208:	0320f809 	jalr	t9
  45920c:	00000000 	nop
  459210:	8fdc0018 	lw	gp,24(s8)
  459214:	2402ffff 	li	v0,-1
  459218:	afc20abc 	sw	v0,2748(s8)
  45921c:	1000001d 	b	459294 <whack_handle+0xcf4>
  459220:	00000000 	nop
		}
	    }
	    else
	    {
		ugh = add_public_key(&keyid, DAL_LOCAL, msg.pubkey_alg
  459224:	8f8287a8 	lw	v0,-30808(gp)
  459228:	00000000 	nop
  45922c:	afa20010 	sw	v0,16(sp)
  459230:	27c40a90 	addiu	a0,s8,2704
  459234:	24050003 	li	a1,3
  459238:	8fc60190 	lw	a2,400(s8)
  45923c:	27c70194 	addiu	a3,s8,404
  459240:	8f998904 	lw	t9,-30460(gp)
  459244:	00000000 	nop
  459248:	0320f809 	jalr	t9
  45924c:	00000000 	nop
  459250:	8fdc0018 	lw	gp,24(s8)
  459254:	afc20a8c 	sw	v0,2700(s8)
		    , &msg.keyval, &pubkeys);
		if (ugh != NULL)
  459258:	8fc20a8c 	lw	v0,2700(s8)
  45925c:	00000000 	nop
  459260:	1040000c 	beqz	v0,459294 <whack_handle+0xcf4>
  459264:	00000000 	nop
		    loglog(RC_LOG_SERIOUS, "%s", ugh);
  459268:	24040003 	li	a0,3
  45926c:	8f85802c 	lw	a1,-32724(gp)
  459270:	00000000 	nop
  459274:	24a511d0 	addiu	a1,a1,4560
  459278:	8fc60a8c 	lw	a2,2700(s8)
  45927c:	8f998c48 	lw	t9,-29624(gp)
  459280:	00000000 	nop
  459284:	0320f809 	jalr	t9
  459288:	00000000 	nop
  45928c:	8fdc0018 	lw	gp,24(s8)
  459290:	00000000 	nop
	    }
	}
    }

    if (msg.whack_route)
  459294:	8fc2019c 	lw	v0,412(s8)
  459298:	00000000 	nop
  45929c:	10400055 	beqz	v0,4593f4 <whack_handle+0xe54>
  4592a0:	00000000 	nop
    {
	if (!listening)
  4592a4:	8f828314 	lw	v0,-31980(gp)
  4592a8:	00000000 	nop
  4592ac:	8c420000 	lw	v0,0(v0)
  4592b0:	00000000 	nop
  4592b4:	1440000c 	bnez	v0,4592e8 <whack_handle+0xd48>
  4592b8:	00000000 	nop
	    whack_log(RC_DEAF, "need --listen before --route");
  4592bc:	24040018 	li	a0,24
  4592c0:	8f85802c 	lw	a1,-32724(gp)
  4592c4:	00000000 	nop
  4592c8:	24a51290 	addiu	a1,a1,4752
  4592cc:	8f9982a8 	lw	t9,-32088(gp)
  4592d0:	00000000 	nop
  4592d4:	0320f809 	jalr	t9
  4592d8:	00000000 	nop
  4592dc:	8fdc0018 	lw	gp,24(s8)
  4592e0:	10000044 	b	4593f4 <whack_handle+0xe54>
  4592e4:	00000000 	nop
	else
	{
	    struct connection *c = con_by_name(msg.name, TRUE);
  4592e8:	8fc40028 	lw	a0,40(s8)
  4592ec:	24050001 	li	a1,1
  4592f0:	8f998be8 	lw	t9,-29720(gp)
  4592f4:	00000000 	nop
  4592f8:	0320f809 	jalr	t9
  4592fc:	00000000 	nop
  459300:	8fdc0018 	lw	gp,24(s8)
  459304:	afc20abc 	sw	v0,2748(s8)

	    if (c != NULL)
  459308:	8fc20abc 	lw	v0,2748(s8)
  45930c:	00000000 	nop
  459310:	10400038 	beqz	v0,4593f4 <whack_handle+0xe54>
  459314:	00000000 	nop
	    {
		set_cur_connection(c);
  459318:	8fc20abc 	lw	v0,2748(s8)
  45931c:	8f8188c8 	lw	at,-30520(gp)
  459320:	00000000 	nop
  459324:	ac220000 	sw	v0,0(at)
  459328:	8fc40abc 	lw	a0,2748(s8)
  45932c:	8f998be4 	lw	t9,-29724(gp)
  459330:	00000000 	nop
  459334:	0320f809 	jalr	t9
  459338:	00000000 	nop
  45933c:	8fdc0018 	lw	gp,24(s8)
  459340:	00000000 	nop
		if (!oriented(*c))
  459344:	8fc20abc 	lw	v0,2748(s8)
  459348:	00000000 	nop
  45934c:	8c420198 	lw	v0,408(v0)
  459350:	00000000 	nop
  459354:	1440000c 	bnez	v0,459388 <whack_handle+0xde8>
  459358:	00000000 	nop
		    whack_log(RC_ORIENT
  45935c:	24040016 	li	a0,22
  459360:	8f85802c 	lw	a1,-32724(gp)
  459364:	00000000 	nop
  459368:	24a512b0 	addiu	a1,a1,4784
  45936c:	8f9982a8 	lw	t9,-32088(gp)
  459370:	00000000 	nop
  459374:	0320f809 	jalr	t9
  459378:	00000000 	nop
  45937c:	8fdc0018 	lw	gp,24(s8)
  459380:	10000013 	b	4593d0 <whack_handle+0xe30>
  459384:	00000000 	nop
			, "we have no ipsecN interface for either end of this connection");
		else if (!trap_connection(c))
  459388:	8fc40abc 	lw	a0,2748(s8)
  45938c:	8f99835c 	lw	t9,-31908(gp)
  459390:	00000000 	nop
  459394:	0320f809 	jalr	t9
  459398:	00000000 	nop
  45939c:	8fdc0018 	lw	gp,24(s8)
  4593a0:	1440000b 	bnez	v0,4593d0 <whack_handle+0xe30>
  4593a4:	00000000 	nop
		    whack_log(RC_ROUTE, "could not route");
  4593a8:	24040019 	li	a0,25
  4593ac:	8f85802c 	lw	a1,-32724(gp)
  4593b0:	00000000 	nop
  4593b4:	24a512f0 	addiu	a1,a1,4848
  4593b8:	8f9982a8 	lw	t9,-32088(gp)
  4593bc:	00000000 	nop
  4593c0:	0320f809 	jalr	t9
  4593c4:	00000000 	nop
  4593c8:	8fdc0018 	lw	gp,24(s8)
  4593cc:	00000000 	nop
		reset_cur_connection();
  4593d0:	8f8188c8 	lw	at,-30520(gp)
  4593d4:	00000000 	nop
  4593d8:	ac200000 	sw	zero,0(at)
  4593dc:	8f82830c 	lw	v0,-31988(gp)
  4593e0:	00000000 	nop
  4593e4:	8c420000 	lw	v0,0(v0)
  4593e8:	8f8184f8 	lw	at,-31496(gp)
  4593ec:	00000000 	nop
  4593f0:	ac220000 	sw	v0,0(at)
	    }
	}
    }

    if (msg.whack_unroute)
  4593f4:	8fc201a0 	lw	v0,416(s8)
  4593f8:	00000000 	nop
  4593fc:	1040003a 	beqz	v0,4594e8 <whack_handle+0xf48>
  459400:	00000000 	nop
    {
	struct connection *c = con_by_name(msg.name, TRUE);
  459404:	8fc40028 	lw	a0,40(s8)
  459408:	24050001 	li	a1,1
  45940c:	8f998be8 	lw	t9,-29720(gp)
  459410:	00000000 	nop
  459414:	0320f809 	jalr	t9
  459418:	00000000 	nop
  45941c:	8fdc0018 	lw	gp,24(s8)
  459420:	afc20abc 	sw	v0,2748(s8)

	if (c != NULL)
  459424:	8fc20abc 	lw	v0,2748(s8)
  459428:	00000000 	nop
  45942c:	1040002e 	beqz	v0,4594e8 <whack_handle+0xf48>
  459430:	00000000 	nop
	{
	    set_cur_connection(c);
  459434:	8fc20abc 	lw	v0,2748(s8)
  459438:	8f8188c8 	lw	at,-30520(gp)
  45943c:	00000000 	nop
  459440:	ac220000 	sw	v0,0(at)
  459444:	8fc40abc 	lw	a0,2748(s8)
  459448:	8f998be4 	lw	t9,-29724(gp)
  45944c:	00000000 	nop
  459450:	0320f809 	jalr	t9
  459454:	00000000 	nop
  459458:	8fdc0018 	lw	gp,24(s8)
  45945c:	00000000 	nop
	    if (c->routing >= RT_ROUTED_TUNNEL)
  459460:	8fc20abc 	lw	v0,2748(s8)
  459464:	00000000 	nop
  459468:	8c42019c 	lw	v0,412(v0)
  45946c:	00000000 	nop
  459470:	2c420005 	sltiu	v0,v0,5
  459474:	1440000c 	bnez	v0,4594a8 <whack_handle+0xf08>
  459478:	00000000 	nop
		whack_log(RC_RTBUSY, "cannot unroute: route busy");
  45947c:	2404001a 	li	a0,26
  459480:	8f85802c 	lw	a1,-32724(gp)
  459484:	00000000 	nop
  459488:	24a51300 	addiu	a1,a1,4864
  45948c:	8f9982a8 	lw	t9,-32088(gp)
  459490:	00000000 	nop
  459494:	0320f809 	jalr	t9
  459498:	00000000 	nop
  45949c:	8fdc0018 	lw	gp,24(s8)
  4594a0:	10000008 	b	4594c4 <whack_handle+0xf24>
  4594a4:	00000000 	nop
	    else
		unroute_connection(c);
  4594a8:	8fc40abc 	lw	a0,2748(s8)
  4594ac:	8f9983a0 	lw	t9,-31840(gp)
  4594b0:	00000000 	nop
  4594b4:	0320f809 	jalr	t9
  4594b8:	00000000 	nop
  4594bc:	8fdc0018 	lw	gp,24(s8)
  4594c0:	00000000 	nop
	    reset_cur_connection();
  4594c4:	8f8188c8 	lw	at,-30520(gp)
  4594c8:	00000000 	nop
  4594cc:	ac200000 	sw	zero,0(at)
  4594d0:	8f82830c 	lw	v0,-31988(gp)
  4594d4:	00000000 	nop
  4594d8:	8c420000 	lw	v0,0(v0)
  4594dc:	8f8184f8 	lw	at,-31496(gp)
  4594e0:	00000000 	nop
  4594e4:	ac220000 	sw	v0,0(at)
	}
    }

    if (msg.whack_initiate)
  4594e8:	8fc201a4 	lw	v0,420(s8)
  4594ec:	00000000 	nop
  4594f0:	10400031 	beqz	v0,4595b8 <whack_handle+0x1018>
  4594f4:	00000000 	nop
    {
	if (!listening)
  4594f8:	8f828314 	lw	v0,-31980(gp)
  4594fc:	00000000 	nop
  459500:	8c420000 	lw	v0,0(v0)
  459504:	00000000 	nop
  459508:	1440000c 	bnez	v0,45953c <whack_handle+0xf9c>
  45950c:	00000000 	nop
	    whack_log(RC_DEAF, "need --listen before --initiate");
  459510:	24040018 	li	a0,24
  459514:	8f85802c 	lw	a1,-32724(gp)
  459518:	00000000 	nop
  45951c:	24a5131c 	addiu	a1,a1,4892
  459520:	8f9982a8 	lw	t9,-32088(gp)
  459524:	00000000 	nop
  459528:	0320f809 	jalr	t9
  45952c:	00000000 	nop
  459530:	8fdc0018 	lw	gp,24(s8)
  459534:	10000020 	b	4595b8 <whack_handle+0x1018>
  459538:	00000000 	nop
	else
	    initiate_connection(msg.name
  45953c:	8fc20038 	lw	v0,56(s8)
  459540:	00000000 	nop
  459544:	14400012 	bnez	v0,459590 <whack_handle+0xff0>
  459548:	00000000 	nop
  45954c:	8fc30a84 	lw	v1,2692(s8)
  459550:	2402ffff 	li	v0,-1
  459554:	1062000a 	beq	v1,v0,459580 <whack_handle+0xfe0>
  459558:	00000000 	nop
  45955c:	8fc40a84 	lw	a0,2692(s8)
  459560:	8f99840c 	lw	t9,-31732(gp)
  459564:	00000000 	nop
  459568:	0320f809 	jalr	t9
  45956c:	00000000 	nop
  459570:	8fdc0018 	lw	gp,24(s8)
  459574:	afc20ac0 	sw	v0,2752(s8)
  459578:	10000007 	b	459598 <whack_handle+0xff8>
  45957c:	00000000 	nop
  459580:	2402ffff 	li	v0,-1
  459584:	afc20ac0 	sw	v0,2752(s8)
  459588:	10000003 	b	459598 <whack_handle+0xff8>
  45958c:	00000000 	nop
  459590:	2402ffff 	li	v0,-1
  459594:	afc20ac0 	sw	v0,2752(s8)
  459598:	8fc40028 	lw	a0,40(s8)
  45959c:	8fc50ac0 	lw	a1,2752(s8)
  4595a0:	8f9983ec 	lw	t9,-31764(gp)
  4595a4:	00000000 	nop
  4595a8:	0320f809 	jalr	t9
  4595ac:	00000000 	nop
  4595b0:	8fdc0018 	lw	gp,24(s8)
  4595b4:	00000000 	nop
		, msg.whack_async? NULL_FD : dup_any(whackfd));
    }

    if (msg.whack_oppo_initiate)
  4595b8:	8fc201a8 	lw	v0,424(s8)
  4595bc:	00000000 	nop
  4595c0:	10400036 	beqz	v0,45969c <whack_handle+0x10fc>
  4595c4:	00000000 	nop
    {
	if (!listening)
  4595c8:	8f828314 	lw	v0,-31980(gp)
  4595cc:	00000000 	nop
  4595d0:	8c420000 	lw	v0,0(v0)
  4595d4:	00000000 	nop
  4595d8:	1440000c 	bnez	v0,45960c <whack_handle+0x106c>
  4595dc:	00000000 	nop
	    whack_log(RC_DEAF, "need --listen before opportunistic initiation");
  4595e0:	24040018 	li	a0,24
  4595e4:	8f85802c 	lw	a1,-32724(gp)
  4595e8:	00000000 	nop
  4595ec:	24a5133c 	addiu	a1,a1,4924
  4595f0:	8f9982a8 	lw	t9,-32088(gp)
  4595f4:	00000000 	nop
  4595f8:	0320f809 	jalr	t9
  4595fc:	00000000 	nop
  459600:	8fdc0018 	lw	gp,24(s8)
  459604:	10000025 	b	45969c <whack_handle+0x10fc>
  459608:	00000000 	nop
	else
	    initiate_opportunistic(&msg.oppo_my_client, &msg.oppo_peer_client, 0
  45960c:	8fc20038 	lw	v0,56(s8)
  459610:	00000000 	nop
  459614:	14400012 	bnez	v0,459660 <whack_handle+0x10c0>
  459618:	00000000 	nop
  45961c:	8fc30a84 	lw	v1,2692(s8)
  459620:	2402ffff 	li	v0,-1
  459624:	1062000a 	beq	v1,v0,459650 <whack_handle+0x10b0>
  459628:	00000000 	nop
  45962c:	8fc40a84 	lw	a0,2692(s8)
  459630:	8f99840c 	lw	t9,-31732(gp)
  459634:	00000000 	nop
  459638:	0320f809 	jalr	t9
  45963c:	00000000 	nop
  459640:	8fdc0018 	lw	gp,24(s8)
  459644:	afc20ac4 	sw	v0,2756(s8)
  459648:	10000007 	b	459668 <whack_handle+0x10c8>
  45964c:	00000000 	nop
  459650:	2402ffff 	li	v0,-1
  459654:	afc20ac4 	sw	v0,2756(s8)
  459658:	10000003 	b	459668 <whack_handle+0x10c8>
  45965c:	00000000 	nop
  459660:	2402ffff 	li	v0,-1
  459664:	afc20ac4 	sw	v0,2756(s8)
  459668:	8fc20ac4 	lw	v0,2756(s8)
  45966c:	00000000 	nop
  459670:	afa20010 	sw	v0,16(sp)
  459674:	27c401ac 	addiu	a0,s8,428
  459678:	27c501c8 	addiu	a1,s8,456
  45967c:	00003021 	move	a2,zero
  459680:	00003821 	move	a3,zero
  459684:	8f998468 	lw	t9,-31640(gp)
  459688:	00000000 	nop
  45968c:	0320f809 	jalr	t9
  459690:	00000000 	nop
  459694:	8fdc0018 	lw	gp,24(s8)
  459698:	00000000 	nop
		, FALSE
		, msg.whack_async? NULL_FD : dup_any(whackfd));
    }

    if (msg.whack_terminate)
  45969c:	8fc201e4 	lw	v0,484(s8)
  4596a0:	00000000 	nop
  4596a4:	10400008 	beqz	v0,4596c8 <whack_handle+0x1128>
  4596a8:	00000000 	nop
	terminate_connection(msg.name);
  4596ac:	8fc40028 	lw	a0,40(s8)
  4596b0:	8f998334 	lw	t9,-31948(gp)
  4596b4:	00000000 	nop
  4596b8:	0320f809 	jalr	t9
  4596bc:	00000000 	nop
  4596c0:	8fdc0018 	lw	gp,24(s8)
  4596c4:	00000000 	nop

    if (msg.whack_status)
  4596c8:	8fc20204 	lw	v0,516(s8)
  4596cc:	00000000 	nop
  4596d0:	10400067 	beqz	v0,459870 <whack_handle+0x12d0>
  4596d4:	00000000 	nop
    {
	show_ifaces_status();
  4596d8:	8f998a64 	lw	t9,-30108(gp)
  4596dc:	00000000 	nop
  4596e0:	0320f809 	jalr	t9
  4596e4:	00000000 	nop
  4596e8:	8fdc0018 	lw	gp,24(s8)
  4596ec:	00000000 	nop
	whack_log(RC_COMMENT, BLANK_FORMAT);	/* spacer */
  4596f0:	00002021 	move	a0,zero
  4596f4:	8f85802c 	lw	a1,-32724(gp)
  4596f8:	00000000 	nop
  4596fc:	24a5136c 	addiu	a1,a1,4972
  459700:	8f9982a8 	lw	t9,-32088(gp)
  459704:	00000000 	nop
  459708:	0320f809 	jalr	t9
  45970c:	00000000 	nop
  459710:	8fdc0018 	lw	gp,24(s8)
  459714:	00000000 	nop
#ifndef NO_KERNEL_ALG
	kernel_alg_show_status();
  459718:	8f9984e0 	lw	t9,-31520(gp)
  45971c:	00000000 	nop
  459720:	0320f809 	jalr	t9
  459724:	00000000 	nop
  459728:	8fdc0018 	lw	gp,24(s8)
  45972c:	00000000 	nop
	whack_log(RC_COMMENT, BLANK_FORMAT);	/* spacer */
  459730:	00002021 	move	a0,zero
  459734:	8f85802c 	lw	a1,-32724(gp)
  459738:	00000000 	nop
  45973c:	24a5136c 	addiu	a1,a1,4972
  459740:	8f9982a8 	lw	t9,-32088(gp)
  459744:	00000000 	nop
  459748:	0320f809 	jalr	t9
  45974c:	00000000 	nop
  459750:	8fdc0018 	lw	gp,24(s8)
  459754:	00000000 	nop
#endif
#ifndef NO_IKE_ALG
	ike_alg_show_status();
  459758:	8f998c2c 	lw	t9,-29652(gp)
  45975c:	00000000 	nop
  459760:	0320f809 	jalr	t9
  459764:	00000000 	nop
  459768:	8fdc0018 	lw	gp,24(s8)
  45976c:	00000000 	nop
	whack_log(RC_COMMENT, BLANK_FORMAT);	/* spacer */
  459770:	00002021 	move	a0,zero
  459774:	8f85802c 	lw	a1,-32724(gp)
  459778:	00000000 	nop
  45977c:	24a5136c 	addiu	a1,a1,4972
  459780:	8f9982a8 	lw	t9,-32088(gp)
  459784:	00000000 	nop
  459788:	0320f809 	jalr	t9
  45978c:	00000000 	nop
  459790:	8fdc0018 	lw	gp,24(s8)
  459794:	00000000 	nop
#endif
#ifndef NO_DB_OPS_STATS
	db_ops_show_status();
  459798:	8f99853c 	lw	t9,-31428(gp)
  45979c:	00000000 	nop
  4597a0:	0320f809 	jalr	t9
  4597a4:	00000000 	nop
  4597a8:	8fdc0018 	lw	gp,24(s8)
  4597ac:	00000000 	nop
	whack_log(RC_COMMENT, BLANK_FORMAT);	/* spacer */
  4597b0:	00002021 	move	a0,zero
  4597b4:	8f85802c 	lw	a1,-32724(gp)
  4597b8:	00000000 	nop
  4597bc:	24a5136c 	addiu	a1,a1,4972
  4597c0:	8f9982a8 	lw	t9,-32088(gp)
  4597c4:	00000000 	nop
  4597c8:	0320f809 	jalr	t9
  4597cc:	00000000 	nop
  4597d0:	8fdc0018 	lw	gp,24(s8)
  4597d4:	00000000 	nop
#endif
	show_connections_status();
  4597d8:	8f998470 	lw	t9,-31632(gp)
  4597dc:	00000000 	nop
  4597e0:	0320f809 	jalr	t9
  4597e4:	00000000 	nop
  4597e8:	8fdc0018 	lw	gp,24(s8)
  4597ec:	00000000 	nop
	whack_log(RC_COMMENT, BLANK_FORMAT);	/* spacer */
  4597f0:	00002021 	move	a0,zero
  4597f4:	8f85802c 	lw	a1,-32724(gp)
  4597f8:	00000000 	nop
  4597fc:	24a5136c 	addiu	a1,a1,4972
  459800:	8f9982a8 	lw	t9,-32088(gp)
  459804:	00000000 	nop
  459808:	0320f809 	jalr	t9
  45980c:	00000000 	nop
  459810:	8fdc0018 	lw	gp,24(s8)
  459814:	00000000 	nop
	show_states_status();
  459818:	8f998b90 	lw	t9,-29808(gp)
  45981c:	00000000 	nop
  459820:	0320f809 	jalr	t9
  459824:	00000000 	nop
  459828:	8fdc0018 	lw	gp,24(s8)
  45982c:	00000000 	nop
#ifdef KLIPS
	whack_log(RC_COMMENT, BLANK_FORMAT);	/* spacer */
  459830:	00002021 	move	a0,zero
  459834:	8f85802c 	lw	a1,-32724(gp)
  459838:	00000000 	nop
  45983c:	24a5136c 	addiu	a1,a1,4972
  459840:	8f9982a8 	lw	t9,-32088(gp)
  459844:	00000000 	nop
  459848:	0320f809 	jalr	t9
  45984c:	00000000 	nop
  459850:	8fdc0018 	lw	gp,24(s8)
  459854:	00000000 	nop
	show_shunt_status();
  459858:	8f9986a4 	lw	t9,-31068(gp)
  45985c:	00000000 	nop
  459860:	0320f809 	jalr	t9
  459864:	00000000 	nop
  459868:	8fdc0018 	lw	gp,24(s8)
  45986c:	00000000 	nop
#endif
    }

    if (msg.whack_shutdown)
  459870:	8fc20208 	lw	v0,520(s8)
  459874:	00000000 	nop
  459878:	10400011 	beqz	v0,4598c0 <whack_handle+0x1320>
  45987c:	00000000 	nop
    {
	plog("shutting down");
  459880:	8f84802c 	lw	a0,-32724(gp)
  459884:	00000000 	nop
  459888:	24841370 	addiu	a0,a0,4976
  45988c:	8f998abc 	lw	t9,-30020(gp)
  459890:	00000000 	nop
  459894:	0320f809 	jalr	t9
  459898:	00000000 	nop
  45989c:	8fdc0018 	lw	gp,24(s8)
  4598a0:	00000000 	nop
	exit_pluto(0);	/* delete lock and leave, with 0 status */
  4598a4:	00002021 	move	a0,zero
  4598a8:	8f99810c 	lw	t9,-32500(gp)
  4598ac:	00000000 	nop
  4598b0:	0320f809 	jalr	t9
  4598b4:	00000000 	nop
  4598b8:	8fdc0018 	lw	gp,24(s8)
  4598bc:	00000000 	nop
    }

    whack_log_fd = NULL_FD;
  4598c0:	2402ffff 	li	v0,-1
  4598c4:	8f818994 	lw	at,-30316(gp)
  4598c8:	00000000 	nop
  4598cc:	ac220000 	sw	v0,0(at)
    close(whackfd);
  4598d0:	8fc40a84 	lw	a0,2692(s8)
  4598d4:	8f9980c8 	lw	t9,-32568(gp)
  4598d8:	00000000 	nop
  4598dc:	0320f809 	jalr	t9
  4598e0:	00000000 	nop
  4598e4:	8fdc0018 	lw	gp,24(s8)
  4598e8:	00000000 	nop
}
  4598ec:	03c0e821 	move	sp,s8
  4598f0:	8fbf0ad0 	lw	ra,2768(sp)
  4598f4:	8fbe0acc 	lw	s8,2764(sp)
  4598f8:	27bd0ad8 	addiu	sp,sp,2776
  4598fc:	03e00008 	jr	ra
  459900:	00000000 	nop
	...

00459910 <init_demux>:
  459910:	3c1c0fbb 	lui	gp,0xfbb
  459914:	279c3060 	addiu	gp,gp,12384
  459918:	0399e021 	addu	gp,gp,t9
  45991c:	27bdffd0 	addiu	sp,sp,-48
  459920:	afbc0010 	sw	gp,16(sp)
  459924:	afbf0028 	sw	ra,40(sp)
  459928:	afbe0024 	sw	s8,36(sp)
  45992c:	afbc0020 	sw	gp,32(sp)
  459930:	03a0f021 	move	s8,sp
     * For what it's worth, this routine is idempotent.
     */
    const struct state_microcode *t;

    for (t = &state_microcode_table[elemsof(state_microcode_table) - 1];;)
  459934:	8f828018 	lw	v0,-32744(gp)
  459938:	00000000 	nop
  45993c:	24422990 	addiu	v0,v0,10640
  459940:	afc20018 	sw	v0,24(s8)
    {
	passert(STATE_IKE_FLOOR <= t->state && t->state < STATE_IKE_ROOF);
  459944:	8fc20018 	lw	v0,24(s8)
  459948:	00000000 	nop
  45994c:	8c420000 	lw	v0,0(v0)
  459950:	00000000 	nop
  459954:	2c420003 	sltiu	v0,v0,3
  459958:	1440000a 	bnez	v0,459984 <init_demux+0x74>
  45995c:	00000000 	nop
  459960:	8fc20018 	lw	v0,24(s8)
  459964:	00000000 	nop
  459968:	8c420000 	lw	v0,0(v0)
  45996c:	00000000 	nop
  459970:	2c42001c 	sltiu	v0,v0,28
  459974:	10400003 	beqz	v0,459984 <init_demux+0x74>
  459978:	00000000 	nop
  45997c:	1000000e 	b	4599b8 <init_demux+0xa8>
  459980:	00000000 	nop
  459984:	8f84802c 	lw	a0,-32724(gp)
  459988:	00000000 	nop
  45998c:	24841380 	addiu	a0,a0,4992
  459990:	8f85802c 	lw	a1,-32724(gp)
  459994:	00000000 	nop
  459998:	24a513bc 	addiu	a1,a1,5052
  45999c:	24060230 	li	a2,560
  4599a0:	8f998bb8 	lw	t9,-29768(gp)
  4599a4:	00000000 	nop
  4599a8:	0320f809 	jalr	t9
  4599ac:	00000000 	nop
  4599b0:	8fdc0010 	lw	gp,16(s8)
  4599b4:	00000000 	nop
	ike_microcode_index[t->state - STATE_IKE_FLOOR] = t;
  4599b8:	8fc20018 	lw	v0,24(s8)
  4599bc:	00000000 	nop
  4599c0:	8c420000 	lw	v0,0(v0)
  4599c4:	00000000 	nop
  4599c8:	2442fffd 	addiu	v0,v0,-3
  4599cc:	00021080 	sll	v0,v0,0x2
  4599d0:	8f838018 	lw	v1,-32744(gp)
  4599d4:	00000000 	nop
  4599d8:	24637b78 	addiu	v1,v1,31608
  4599dc:	00621821 	addu	v1,v1,v0
  4599e0:	8fc20018 	lw	v0,24(s8)
  4599e4:	00000000 	nop
  4599e8:	ac620000 	sw	v0,0(v1)
	if (t == state_microcode_table)
  4599ec:	8fc30018 	lw	v1,24(s8)
  4599f0:	8f828018 	lw	v0,-32744(gp)
  4599f4:	00000000 	nop
  4599f8:	24422480 	addiu	v0,v0,9344
  4599fc:	00000000 	nop
  459a00:	14620003 	bne	v1,v0,459a10 <init_demux+0x100>
  459a04:	00000000 	nop
	    break;
  459a08:	1000001d 	b	459a80 <init_demux+0x170>
  459a0c:	00000000 	nop
	t--;
  459a10:	8fc20018 	lw	v0,24(s8)
  459a14:	00000000 	nop
  459a18:	2442ffd0 	addiu	v0,v0,-48
  459a1c:	afc20018 	sw	v0,24(s8)
	passert(t[0].state <= t[1].state);
  459a20:	8fc20018 	lw	v0,24(s8)
  459a24:	00000000 	nop
  459a28:	24440030 	addiu	a0,v0,48
  459a2c:	8fc20018 	lw	v0,24(s8)
  459a30:	00000000 	nop
  459a34:	8c430000 	lw	v1,0(v0)
  459a38:	8c820000 	lw	v0,0(a0)
  459a3c:	00000000 	nop
  459a40:	0043102b 	sltu	v0,v0,v1
  459a44:	1040ffbf 	beqz	v0,459944 <init_demux+0x34>
  459a48:	00000000 	nop
  459a4c:	8f84802c 	lw	a0,-32724(gp)
  459a50:	00000000 	nop
  459a54:	248413c4 	addiu	a0,a0,5060
  459a58:	8f85802c 	lw	a1,-32724(gp)
  459a5c:	00000000 	nop
  459a60:	24a513bc 	addiu	a1,a1,5052
  459a64:	24060235 	li	a2,565
  459a68:	8f998bb8 	lw	t9,-29768(gp)
  459a6c:	00000000 	nop
  459a70:	0320f809 	jalr	t9
  459a74:	00000000 	nop
  459a78:	8fdc0010 	lw	gp,16(s8)
  459a7c:	00000000 	nop
    }
}
  459a80:	03c0e821 	move	sp,s8
  459a84:	8fbf0028 	lw	ra,40(sp)
  459a88:	8fbe0024 	lw	s8,36(sp)
  459a8c:	27bd0030 	addiu	sp,sp,48
  459a90:	03e00008 	jr	ra
  459a94:	00000000 	nop

00459a98 <check_msg_errqueue>:
  459a98:	3c1c0fbb 	lui	gp,0xfbb
  459a9c:	279c2ed8 	addiu	gp,gp,11992
  459aa0:	0399e021 	addu	gp,gp,t9
  459aa4:	27bdf1a0 	addiu	sp,sp,-3680
  459aa8:	afbc0020 	sw	gp,32(sp)
  459aac:	afbf0e58 	sw	ra,3672(sp)
  459ab0:	afbe0e54 	sw	s8,3668(sp)
  459ab4:	afbc0e50 	sw	gp,3664(sp)
  459ab8:	03a0f021 	move	s8,sp
  459abc:	afc40e60 	sw	a0,3680(s8)
  459ac0:	00a01021 	move	v0,a1
  459ac4:	a7c20028 	sh	v0,40(s8)

/* Process any message on the MSG_ERRQUEUE
 *
 * This information is generated because of the IP_RECVERR socket option.
 * The API is sparsely documented, and may be LINUX-only, and only on
 * fairly recent versions at that (hence the conditional compilation).
 *
 * - ip(7) describes IP_RECVERR
 * - recvmsg(2) describes MSG_ERRQUEUE
 * - readv(2) describes iovec
 * - cmsg(3) describes how to process auxilliary messages
 *
 * ??? we should link this message with one we've sent
 * so that the diagnostic can refer to that negotiation.
 *
 * ??? how long can the messge be?
 *
 * ??? poll(2) has a very incomplete description of the POLL* events.
 * We assume that POLLIN, POLLOUT, and POLLERR are all we need to deal with
 * and that POLLERR will be on iff there is a MSG_ERRQUEUE message.
 *
 * We have to code around a couple of surprises:
 *
 * - Select can say that a socket is ready to read from, and
 *   yet a read will hang.  It turns out that a message available on the
 *   MSG_ERRQUEUE will cause select to say something is pending, but
 *   a normal read will hang.  poll(2) can tell when a MSG_ERRQUEUE
 *   message is pending.
 *
 *   This is dealt with by calling check_msg_errqueue after select
 *   has indicated that there is something to read, but before the
 *   read is performed.  check_msg_errqueue will return TRUE if there
 *   is something left to read.
 *
 * - A write to a socket may fail because there is a pending MSG_ERRQUEUE
 *   message, without there being anything wrong with the write.  This
 *   makes for confusing diagnostics.
 *
 *   To avoid this, we call check_msg_errqueue before a write.  True,
 *   there is a race condition (a MSG_ERRQUEUE message might arrive
 *   between the check and the write), but we should eliminate many
 *   of the problematic events.  To narrow the window, the poll(2)
 *   will await until an event happens (in the case or a write,
 *   POLLOUT; this should be benign for POLLIN).
 */

#if defined(IP_RECVERR) && defined(MSG_ERRQUEUE)
static bool
check_msg_errqueue(const struct iface *ifp, short interest)
{
    struct pollfd pfd;

    pfd.fd = ifp->fd;
  459ac8:	8fc20e60 	lw	v0,3680(s8)
  459acc:	00000000 	nop
  459ad0:	8c420024 	lw	v0,36(v0)
  459ad4:	00000000 	nop
  459ad8:	afc20030 	sw	v0,48(s8)
    pfd.events = interest | POLLPRI | POLLOUT;
  459adc:	97c20028 	lhu	v0,40(s8)
  459ae0:	00000000 	nop
  459ae4:	34420006 	ori	v0,v0,0x6
  459ae8:	a7c20034 	sh	v0,52(s8)

    while (pfd.revents = 0
    , poll(&pfd, 1, -1) > 0 && (pfd.revents & POLLERR))
  459aec:	a7c00036 	sh	zero,54(s8)
  459af0:	27c40030 	addiu	a0,s8,48
  459af4:	24050001 	li	a1,1
  459af8:	2406ffff 	li	a2,-1
  459afc:	8f99849c 	lw	t9,-31588(gp)
  459b00:	00000000 	nop
  459b04:	0320f809 	jalr	t9
  459b08:	00000000 	nop
  459b0c:	8fdc0020 	lw	gp,32(s8)
  459b10:	1840023f 	blez	v0,45a410 <check_msg_errqueue+0x978>
  459b14:	00000000 	nop
  459b18:	97c20036 	lhu	v0,54(s8)
  459b1c:	00000000 	nop
  459b20:	30420008 	andi	v0,v0,0x8
  459b24:	00021400 	sll	v0,v0,0x10
  459b28:	00021403 	sra	v0,v0,0x10
  459b2c:	14400003 	bnez	v0,459b3c <check_msg_errqueue+0xa4>
  459b30:	00000000 	nop
  459b34:	10000236 	b	45a410 <check_msg_errqueue+0x978>
  459b38:	00000000 	nop
    {
	u_int8_t buffer[3000];	/* hope that this is big enough */
	union
	{
	    struct sockaddr sa;
	    struct sockaddr_in sa_in4;
	    struct sockaddr_in6 sa_in6;
	} from;

	int from_len = sizeof(from);
  459b3c:	2402001c 	li	v0,28
  459b40:	afc20c10 	sw	v0,3088(s8)

	int packet_len;

	struct msghdr emh;
	struct iovec eiov;
	union {
	    /* force alignment (not documented as necessary) */
	    struct cmsghdr ecms;

	    /* how much space is enough? */
	    unsigned char space[256];
	} ecms_buf;

	struct cmsghdr *cm;
	char fromstr[sizeof(" for message to  port 65536") + INET6_ADDRSTRLEN];
	struct state *sender = NULL;
  459b44:	afc00d98 	sw	zero,3480(s8)

	zero(&from.sa);
  459b48:	27c40bf0 	addiu	a0,s8,3056
  459b4c:	00002821 	move	a1,zero
  459b50:	24060010 	li	a2,16
  459b54:	8f998500 	lw	t9,-31488(gp)
  459b58:	00000000 	nop
  459b5c:	0320f809 	jalr	t9
  459b60:	00000000 	nop
  459b64:	8fdc0020 	lw	gp,32(s8)
  459b68:	00000000 	nop
	from_len = sizeof(from);
  459b6c:	2402001c 	li	v0,28
  459b70:	afc20c10 	sw	v0,3088(s8)

	emh.msg_name = &from.sa;	/* ??? filled in? */
  459b74:	27c20bf0 	addiu	v0,s8,3056
  459b78:	afc20c18 	sw	v0,3096(s8)
	emh.msg_namelen = sizeof(from);
  459b7c:	2402001c 	li	v0,28
  459b80:	afc20c1c 	sw	v0,3100(s8)
	emh.msg_iov = &eiov;
  459b84:	27c20c38 	addiu	v0,s8,3128
  459b88:	afc20c20 	sw	v0,3104(s8)
	emh.msg_iovlen = 1;
  459b8c:	24020001 	li	v0,1
  459b90:	afc20c24 	sw	v0,3108(s8)
	emh.msg_control = &ecms_buf;
  459b94:	27c20c40 	addiu	v0,s8,3136
  459b98:	afc20c28 	sw	v0,3112(s8)
	emh.msg_controllen = sizeof(ecms_buf);
  459b9c:	24020100 	li	v0,256
  459ba0:	afc20c2c 	sw	v0,3116(s8)
	emh.msg_flags = 0;
  459ba4:	afc00c30 	sw	zero,3120(s8)

	eiov.iov_base = buffer;	/* see readv(2) */
  459ba8:	27c20038 	addiu	v0,s8,56
  459bac:	afc20c38 	sw	v0,3128(s8)
	eiov.iov_len = sizeof(buffer);
  459bb0:	24020bb8 	li	v0,3000
  459bb4:	afc20c3c 	sw	v0,3132(s8)

	packet_len = recvmsg(ifp->fd, &emh, MSG_ERRQUEUE);
  459bb8:	8fc20e60 	lw	v0,3680(s8)
  459bbc:	00000000 	nop
  459bc0:	8c440024 	lw	a0,36(v0)
  459bc4:	27c50c18 	addiu	a1,s8,3096
  459bc8:	24062000 	li	a2,8192
  459bcc:	8f9980f8 	lw	t9,-32520(gp)
  459bd0:	00000000 	nop
  459bd4:	0320f809 	jalr	t9
  459bd8:	00000000 	nop
  459bdc:	8fdc0020 	lw	gp,32(s8)
  459be0:	afc20c14 	sw	v0,3092(s8)

	if (packet_len == -1)
  459be4:	8fc30c14 	lw	v1,3092(s8)
  459be8:	2402ffff 	li	v0,-1
  459bec:	14620018 	bne	v1,v0,459c50 <check_msg_errqueue+0x1b8>
  459bf0:	00000000 	nop
	{
	    log_errno((e, "recvmsg(,, MSG_ERRQUEUE) on %s failed in comm_handle"
  459bf4:	8f998234 	lw	t9,-32204(gp)
  459bf8:	00000000 	nop
  459bfc:	0320f809 	jalr	t9
  459c00:	00000000 	nop
  459c04:	8fdc0020 	lw	gp,32(s8)
  459c08:	8c420000 	lw	v0,0(v0)
  459c0c:	00000000 	nop
  459c10:	afc20d9c 	sw	v0,3484(s8)
  459c14:	8fc40d9c 	lw	a0,3484(s8)
  459c18:	8f85802c 	lw	a1,-32724(gp)
  459c1c:	00000000 	nop
  459c20:	24a513e0 	addiu	a1,a1,5088
  459c24:	8fc20e60 	lw	v0,3680(s8)
  459c28:	00000000 	nop
  459c2c:	8c460004 	lw	a2,4(v0)
  459c30:	8f9988ec 	lw	t9,-30484(gp)
  459c34:	00000000 	nop
  459c38:	0320f809 	jalr	t9
  459c3c:	00000000 	nop
  459c40:	8fdc0020 	lw	gp,32(s8)
  459c44:	00000000 	nop
		, ifp->rname));
	    break;
  459c48:	100001f1 	b	45a410 <check_msg_errqueue+0x978>
  459c4c:	00000000 	nop
	}
	else if (packet_len == sizeof(buffer))
  459c50:	8fc30c14 	lw	v1,3092(s8)
  459c54:	24020bb8 	li	v0,3000
  459c58:	1462000c 	bne	v1,v0,459c8c <check_msg_errqueue+0x1f4>
  459c5c:	00000000 	nop
	{
	    plog("MSG_ERRQUEUE message longer than %lu bytes; truncated"
  459c60:	8f84802c 	lw	a0,-32724(gp)
  459c64:	00000000 	nop
  459c68:	24841418 	addiu	a0,a0,5144
  459c6c:	24050bb8 	li	a1,3000
  459c70:	8f998abc 	lw	t9,-30020(gp)
  459c74:	00000000 	nop
  459c78:	0320f809 	jalr	t9
  459c7c:	00000000 	nop
  459c80:	8fdc0020 	lw	gp,32(s8)
  459c84:	10000009 	b	459cac <check_msg_errqueue+0x214>
  459c88:	00000000 	nop
		, (unsigned long) sizeof(buffer));
	}
	else
	{
	    sender = find_sender((size_t) packet_len, buffer);
  459c8c:	8fc40c14 	lw	a0,3092(s8)
  459c90:	27c50038 	addiu	a1,s8,56
  459c94:	8f99808c 	lw	t9,-32628(gp)
  459c98:	00000000 	nop
  459c9c:	0320f809 	jalr	t9
  459ca0:	00000000 	nop
  459ca4:	8fdc0020 	lw	gp,32(s8)
  459ca8:	afc20d98 	sw	v0,3480(s8)
	}

	DBG_cond_dump(DBG_ALL, "rejected packet:\n", buffer, packet_len);
  459cac:	8f8284f8 	lw	v0,-31496(gp)
  459cb0:	00000000 	nop
  459cb4:	8c420000 	lw	v0,0(v0)
  459cb8:	00000000 	nop
  459cbc:	304201ff 	andi	v0,v0,0x1ff
  459cc0:	1040000c 	beqz	v0,459cf4 <check_msg_errqueue+0x25c>
  459cc4:	00000000 	nop
  459cc8:	8f84802c 	lw	a0,-32724(gp)
  459ccc:	00000000 	nop
  459cd0:	24841450 	addiu	a0,a0,5200
  459cd4:	27c50038 	addiu	a1,s8,56
  459cd8:	8fc60c14 	lw	a2,3092(s8)
  459cdc:	8f9984ec 	lw	t9,-31508(gp)
  459ce0:	00000000 	nop
  459ce4:	0320f809 	jalr	t9
  459ce8:	00000000 	nop
  459cec:	8fdc0020 	lw	gp,32(s8)
  459cf0:	00000000 	nop
	DBG_cond_dump(DBG_ALL, "control:\n", emh.msg_control, emh.msg_controllen);
  459cf4:	8f8284f8 	lw	v0,-31496(gp)
  459cf8:	00000000 	nop
  459cfc:	8c420000 	lw	v0,0(v0)
  459d00:	00000000 	nop
  459d04:	304201ff 	andi	v0,v0,0x1ff
  459d08:	1040000c 	beqz	v0,459d3c <check_msg_errqueue+0x2a4>
  459d0c:	00000000 	nop
  459d10:	8f84802c 	lw	a0,-32724(gp)
  459d14:	00000000 	nop
  459d18:	24841464 	addiu	a0,a0,5220
  459d1c:	8fc50c28 	lw	a1,3112(s8)
  459d20:	8fc60c2c 	lw	a2,3116(s8)
  459d24:	8f9984ec 	lw	t9,-31508(gp)
  459d28:	00000000 	nop
  459d2c:	0320f809 	jalr	t9
  459d30:	00000000 	nop
  459d34:	8fdc0020 	lw	gp,32(s8)
  459d38:	00000000 	nop
	/* ??? Andi Kleen <ak@suse.de> and misc documentation
	 * suggests that name will have the original destination
	 * of the packet.  We seem to see msg_namelen == 0.
	 * Andi says that this is a kernel bug and has fixed it.
	 * Perhaps in 2.2.18/2.4.0.
	 */
	passert(emh.msg_name == &from.sa);
  459d3c:	8fc30c18 	lw	v1,3096(s8)
  459d40:	27c20bf0 	addiu	v0,s8,3056
  459d44:	1062000e 	beq	v1,v0,459d80 <check_msg_errqueue+0x2e8>
  459d48:	00000000 	nop
  459d4c:	8f84802c 	lw	a0,-32724(gp)
  459d50:	00000000 	nop
  459d54:	24841470 	addiu	a0,a0,5232
  459d58:	8f85802c 	lw	a1,-32724(gp)
  459d5c:	00000000 	nop
  459d60:	24a513bc 	addiu	a1,a1,5052
  459d64:	240602b4 	li	a2,692
  459d68:	8f998bb8 	lw	t9,-29768(gp)
  459d6c:	00000000 	nop
  459d70:	0320f809 	jalr	t9
  459d74:	00000000 	nop
  459d78:	8fdc0020 	lw	gp,32(s8)
  459d7c:	00000000 	nop
	DBG_cond_dump(DBG_ALL, "name:\n", emh.msg_name
  459d80:	8f8284f8 	lw	v0,-31496(gp)
  459d84:	00000000 	nop
  459d88:	8c420000 	lw	v0,0(v0)
  459d8c:	00000000 	nop
  459d90:	304201ff 	andi	v0,v0,0x1ff
  459d94:	1040000c 	beqz	v0,459dc8 <check_msg_errqueue+0x330>
  459d98:	00000000 	nop
  459d9c:	8f84802c 	lw	a0,-32724(gp)
  459da0:	00000000 	nop
  459da4:	2484148c 	addiu	a0,a0,5260
  459da8:	8fc50c18 	lw	a1,3096(s8)
  459dac:	8fc60c1c 	lw	a2,3100(s8)
  459db0:	8f9984ec 	lw	t9,-31508(gp)
  459db4:	00000000 	nop
  459db8:	0320f809 	jalr	t9
  459dbc:	00000000 	nop
  459dc0:	8fdc0020 	lw	gp,32(s8)
  459dc4:	00000000 	nop
	    , emh.msg_namelen);

	fromstr[0] = '\0';	/* usual case :-( */
  459dc8:	a3c00d48 	sb	zero,3400(s8)
	switch (from.sa.sa_family)
  459dcc:	97c20bf0 	lhu	v0,3056(s8)
  459dd0:	00000000 	nop
  459dd4:	afc20e44 	sw	v0,3652(s8)
  459dd8:	24020002 	li	v0,2
  459ddc:	8fc30e44 	lw	v1,3652(s8)
  459de0:	00000000 	nop
  459de4:	10620008 	beq	v1,v0,459e08 <check_msg_errqueue+0x370>
  459de8:	00000000 	nop
  459dec:	2402000a 	li	v0,10
  459df0:	8fc30e44 	lw	v1,3652(s8)
  459df4:	00000000 	nop
  459df8:	10620025 	beq	v1,v0,459e90 <check_msg_errqueue+0x3f8>
  459dfc:	00000000 	nop
  459e00:	10000043 	b	459f10 <check_msg_errqueue+0x478>
  459e04:	00000000 	nop
	{
	char as[INET6_ADDRSTRLEN];

	case AF_INET:
	    if (emh.msg_namelen == sizeof(struct sockaddr_in))
  459e08:	8fc30c1c 	lw	v1,3100(s8)
  459e0c:	24020010 	li	v0,16
  459e10:	1462003f 	bne	v1,v0,459f10 <check_msg_errqueue+0x478>
  459e14:	00000000 	nop
		snprintf(fromstr, sizeof(fromstr)
  459e18:	97c30bf0 	lhu	v1,3056(s8)
  459e1c:	27c20bf0 	addiu	v0,s8,3056
  459e20:	24420004 	addiu	v0,v0,4
  459e24:	00602021 	move	a0,v1
  459e28:	00402821 	move	a1,v0
  459e2c:	27c60da0 	addiu	a2,s8,3488
  459e30:	2407002e 	li	a3,46
  459e34:	8f9981fc 	lw	t9,-32260(gp)
  459e38:	00000000 	nop
  459e3c:	0320f809 	jalr	t9
  459e40:	00000000 	nop
  459e44:	8fdc0020 	lw	gp,32(s8)
  459e48:	00401821 	move	v1,v0
  459e4c:	97c20bf2 	lhu	v0,3058(s8)
  459e50:	00000000 	nop
  459e54:	afa20010 	sw	v0,16(sp)
  459e58:	27c40d48 	addiu	a0,s8,3400
  459e5c:	2405004a 	li	a1,74
  459e60:	8f86802c 	lw	a2,-32724(gp)
  459e64:	00000000 	nop
  459e68:	24c61494 	addiu	a2,a2,5268
  459e6c:	00603821 	move	a3,v1
  459e70:	8f998b38 	lw	t9,-29896(gp)
  459e74:	00000000 	nop
  459e78:	0320f809 	jalr	t9
  459e7c:	00000000 	nop
  459e80:	8fdc0020 	lw	gp,32(s8)
  459e84:	00000000 	nop
		, " for message to %s port %u"
		    , inet_ntop(from.sa.sa_family
		    , &from.sa_in4.sin_addr, as, sizeof(as))
		    , ntohs(from.sa_in4.sin_port));
	    break;
  459e88:	10000021 	b	459f10 <check_msg_errqueue+0x478>
  459e8c:	00000000 	nop
	case AF_INET6:
	    if (emh.msg_namelen == sizeof(struct sockaddr_in6))
  459e90:	8fc30c1c 	lw	v1,3100(s8)
  459e94:	2402001c 	li	v0,28
  459e98:	1462001d 	bne	v1,v0,459f10 <check_msg_errqueue+0x478>
  459e9c:	00000000 	nop
		snprintf(fromstr, sizeof(fromstr)
  459ea0:	97c30bf0 	lhu	v1,3056(s8)
  459ea4:	27c20bf0 	addiu	v0,s8,3056
  459ea8:	24420008 	addiu	v0,v0,8
  459eac:	00602021 	move	a0,v1
  459eb0:	00402821 	move	a1,v0
  459eb4:	27c60da0 	addiu	a2,s8,3488
  459eb8:	2407002e 	li	a3,46
  459ebc:	8f9981fc 	lw	t9,-32260(gp)
  459ec0:	00000000 	nop
  459ec4:	0320f809 	jalr	t9
  459ec8:	00000000 	nop
  459ecc:	8fdc0020 	lw	gp,32(s8)
  459ed0:	00401821 	move	v1,v0
  459ed4:	97c20bf2 	lhu	v0,3058(s8)
  459ed8:	00000000 	nop
  459edc:	afa20010 	sw	v0,16(sp)
  459ee0:	27c40d48 	addiu	a0,s8,3400
  459ee4:	2405004a 	li	a1,74
  459ee8:	8f86802c 	lw	a2,-32724(gp)
  459eec:	00000000 	nop
  459ef0:	24c61494 	addiu	a2,a2,5268
  459ef4:	00603821 	move	a3,v1
  459ef8:	8f998b38 	lw	t9,-29896(gp)
  459efc:	00000000 	nop
  459f00:	0320f809 	jalr	t9
  459f04:	00000000 	nop
  459f08:	8fdc0020 	lw	gp,32(s8)
  459f0c:	00000000 	nop
		    , " for message to %s port %u"
		    , inet_ntop(from.sa.sa_family
		    , &from.sa_in6.sin6_addr, as, sizeof(as))
		    , ntohs(from.sa_in6.sin6_port));
	    break;
	}

	for (cm = CMSG_FIRSTHDR(&emh)
	; cm != NULL
  459f10:	8fc20c2c 	lw	v0,3116(s8)
  459f14:	00000000 	nop
  459f18:	2c42000c 	sltiu	v0,v0,12
  459f1c:	14400006 	bnez	v0,459f38 <check_msg_errqueue+0x4a0>
  459f20:	00000000 	nop
  459f24:	8fc20c28 	lw	v0,3112(s8)
  459f28:	00000000 	nop
  459f2c:	afc20d40 	sw	v0,3392(s8)
  459f30:	10000002 	b	459f3c <check_msg_errqueue+0x4a4>
  459f34:	00000000 	nop
  459f38:	afc00d40 	sw	zero,3392(s8)
  459f3c:	00000000 	nop
  459f40:	8fc20d40 	lw	v0,3392(s8)
  459f44:	00000000 	nop
  459f48:	14400003 	bnez	v0,459f58 <check_msg_errqueue+0x4c0>
  459f4c:	00000000 	nop
  459f50:	1000fee6 	b	459aec <check_msg_errqueue+0x54>
  459f54:	00000000 	nop
	; cm = CMSG_NXTHDR(&emh,cm)
	)
	{
	    if (cm->cmsg_level == SOL_IP
	    && cm->cmsg_type == IP_RECVERR)
  459f58:	8fc20d40 	lw	v0,3392(s8)
  459f5c:	00000000 	nop
  459f60:	8c420004 	lw	v0,4(v0)
  459f64:	00000000 	nop
  459f68:	1440010d 	bnez	v0,45a3a0 <check_msg_errqueue+0x908>
  459f6c:	00000000 	nop
  459f70:	8fc20d40 	lw	v0,3392(s8)
  459f74:	00000000 	nop
  459f78:	8c430008 	lw	v1,8(v0)
  459f7c:	2402000b 	li	v0,11
  459f80:	14620107 	bne	v1,v0,45a3a0 <check_msg_errqueue+0x908>
  459f84:	00000000 	nop
	    {
		/* ip(7) and recvmsg(2) specify:
		 * ee_origin is SO_EE_ORIGIN_ICMP for ICMP
		 *  or SO_EE_ORIGIN_LOCAL for locally generated errors.
		 * ee_type and ee_code are from the ICMP header.
		 * ee_info is the discovered MTU for EMSGSIZE errors
		 * ee_data is not used.
		 *
		 * ??? recvmsg(2) says "SOCK_EE_OFFENDER" but
		 * means "SO_EE_OFFENDER".  The OFFENDER is really
		 * the router that complained.  As such, the port
		 * is meaningless.
		 */

		/* ??? cmsg(3) claims that CMSG_DATA returns
		 * void *, but RFC 2292 and /usr/include/bits/socket.h
		 * say unsigned char *.  The manual is being fixed.
		 */
		struct sock_extended_err *ee = (void *)CMSG_DATA(cm);
  459f88:	8fc20d40 	lw	v0,3392(s8)
  459f8c:	00000000 	nop
  459f90:	2442000c 	addiu	v0,v0,12
  459f94:	afc20d9c 	sw	v0,3484(s8)
		const char *offstr = "unspecified";
  459f98:	8f82802c 	lw	v0,-32724(gp)
  459f9c:	00000000 	nop
  459fa0:	244214b0 	addiu	v0,v0,5296
  459fa4:	00000000 	nop
  459fa8:	afc20dd0 	sw	v0,3536(s8)
		char offstrspace[INET6_ADDRSTRLEN];
		char orname[50];

		if (cm->cmsg_len > CMSG_LEN(sizeof(struct sock_extended_err)))
  459fac:	8fc20d40 	lw	v0,3392(s8)
  459fb0:	00000000 	nop
  459fb4:	8c420000 	lw	v0,0(v0)
  459fb8:	00000000 	nop
  459fbc:	2c42001d 	sltiu	v0,v0,29
  459fc0:	1440003f 	bnez	v0,45a0c0 <check_msg_errqueue+0x628>
  459fc4:	00000000 	nop
		{
		    const struct sockaddr *offender = SO_EE_OFFENDER(ee);
  459fc8:	8fc20d9c 	lw	v0,3484(s8)
  459fcc:	00000000 	nop
  459fd0:	24420010 	addiu	v0,v0,16
  459fd4:	afc20e40 	sw	v0,3648(s8)

		    switch (offender->sa_family)
  459fd8:	8fc20e40 	lw	v0,3648(s8)
  459fdc:	00000000 	nop
  459fe0:	94420000 	lhu	v0,0(v0)
  459fe4:	00000000 	nop
  459fe8:	afc20e48 	sw	v0,3656(s8)
  459fec:	24020002 	li	v0,2
  459ff0:	8fc30e48 	lw	v1,3656(s8)
  459ff4:	00000000 	nop
  459ff8:	10620008 	beq	v1,v0,45a01c <check_msg_errqueue+0x584>
  459ffc:	00000000 	nop
  45a000:	2402000a 	li	v0,10
  45a004:	8fc30e48 	lw	v1,3656(s8)
  45a008:	00000000 	nop
  45a00c:	10620015 	beq	v1,v0,45a064 <check_msg_errqueue+0x5cc>
  45a010:	00000000 	nop
  45a014:	10000025 	b	45a0ac <check_msg_errqueue+0x614>
  45a018:	00000000 	nop
		    {
		    case AF_INET:
			offstr = inet_ntop(offender->sa_family
  45a01c:	8fc20e40 	lw	v0,3648(s8)
  45a020:	00000000 	nop
  45a024:	94430000 	lhu	v1,0(v0)
  45a028:	8fc20e40 	lw	v0,3648(s8)
  45a02c:	00000000 	nop
  45a030:	24420004 	addiu	v0,v0,4
  45a034:	00602021 	move	a0,v1
  45a038:	00402821 	move	a1,v0
  45a03c:	27c60dd8 	addiu	a2,s8,3544
  45a040:	2407002e 	li	a3,46
  45a044:	8f9981fc 	lw	t9,-32260(gp)
  45a048:	00000000 	nop
  45a04c:	0320f809 	jalr	t9
  45a050:	00000000 	nop
  45a054:	8fdc0020 	lw	gp,32(s8)
  45a058:	afc20dd0 	sw	v0,3536(s8)
			    , &((const struct sockaddr_in *)offender)->sin_addr
			    , offstrspace, sizeof(offstrspace));
			break;
  45a05c:	10000018 	b	45a0c0 <check_msg_errqueue+0x628>
  45a060:	00000000 	nop
		    case AF_INET6:
			offstr = inet_ntop(offender->sa_family
  45a064:	8fc20e40 	lw	v0,3648(s8)
  45a068:	00000000 	nop
  45a06c:	94430000 	lhu	v1,0(v0)
  45a070:	8fc20e40 	lw	v0,3648(s8)
  45a074:	00000000 	nop
  45a078:	24420008 	addiu	v0,v0,8
  45a07c:	00602021 	move	a0,v1
  45a080:	00402821 	move	a1,v0
  45a084:	27c60dd8 	addiu	a2,s8,3544
  45a088:	2407002e 	li	a3,46
  45a08c:	8f9981fc 	lw	t9,-32260(gp)
  45a090:	00000000 	nop
  45a094:	0320f809 	jalr	t9
  45a098:	00000000 	nop
  45a09c:	8fdc0020 	lw	gp,32(s8)
  45a0a0:	afc20dd0 	sw	v0,3536(s8)
			    , &((const struct sockaddr_in6 *)offender)->sin6_addr
			    , offstrspace, sizeof(offstrspace));
			break;
  45a0a4:	10000006 	b	45a0c0 <check_msg_errqueue+0x628>
  45a0a8:	00000000 	nop
		    default:
			offstr = "unknown";
  45a0ac:	8f82802c 	lw	v0,-32724(gp)
  45a0b0:	00000000 	nop
  45a0b4:	244214bc 	addiu	v0,v0,5308
  45a0b8:	00000000 	nop
  45a0bc:	afc20dd0 	sw	v0,3536(s8)
			break;
		    }
		}

		switch (ee->ee_origin)
  45a0c0:	8fc20d9c 	lw	v0,3484(s8)
  45a0c4:	00000000 	nop
  45a0c8:	90420004 	lbu	v0,4(v0)
  45a0cc:	00000000 	nop
  45a0d0:	afc20e4c 	sw	v0,3660(s8)
  45a0d4:	24020001 	li	v0,1
  45a0d8:	8fc30e4c 	lw	v1,3660(s8)
  45a0dc:	00000000 	nop
  45a0e0:	10620025 	beq	v1,v0,45a178 <check_msg_errqueue+0x6e0>
  45a0e4:	00000000 	nop
  45a0e8:	8fc30e4c 	lw	v1,3660(s8)
  45a0ec:	00000000 	nop
  45a0f0:	28620002 	slti	v0,v1,2
  45a0f4:	10400007 	beqz	v0,45a114 <check_msg_errqueue+0x67c>
  45a0f8:	00000000 	nop
  45a0fc:	8fc20e4c 	lw	v0,3660(s8)
  45a100:	00000000 	nop
  45a104:	1040000f 	beqz	v0,45a144 <check_msg_errqueue+0x6ac>
  45a108:	00000000 	nop
  45a10c:	10000053 	b	45a25c <check_msg_errqueue+0x7c4>
  45a110:	00000000 	nop
  45a114:	24020002 	li	v0,2
  45a118:	8fc30e4c 	lw	v1,3660(s8)
  45a11c:	00000000 	nop
  45a120:	10620022 	beq	v1,v0,45a1ac <check_msg_errqueue+0x714>
  45a124:	00000000 	nop
  45a128:	24020003 	li	v0,3
  45a12c:	8fc30e4c 	lw	v1,3660(s8)
  45a130:	00000000 	nop
  45a134:	10620033 	beq	v1,v0,45a204 <check_msg_errqueue+0x76c>
  45a138:	00000000 	nop
  45a13c:	10000047 	b	45a25c <check_msg_errqueue+0x7c4>
  45a140:	00000000 	nop
		{
		case SO_EE_ORIGIN_NONE:
		    snprintf(orname, sizeof(orname), "none");
  45a144:	27c40e08 	addiu	a0,s8,3592
  45a148:	24050032 	li	a1,50
  45a14c:	8f86802c 	lw	a2,-32724(gp)
  45a150:	00000000 	nop
  45a154:	24c614c4 	addiu	a2,a2,5316
  45a158:	8f998b38 	lw	t9,-29896(gp)
  45a15c:	00000000 	nop
  45a160:	0320f809 	jalr	t9
  45a164:	00000000 	nop
  45a168:	8fdc0020 	lw	gp,32(s8)
  45a16c:	00000000 	nop
		    break;
  45a170:	10000049 	b	45a298 <check_msg_errqueue+0x800>
  45a174:	00000000 	nop
		case SO_EE_ORIGIN_LOCAL:
		    snprintf(orname, sizeof(orname), "local");
  45a178:	27c40e08 	addiu	a0,s8,3592
  45a17c:	24050032 	li	a1,50
  45a180:	8f86802c 	lw	a2,-32724(gp)
  45a184:	00000000 	nop
  45a188:	24c614cc 	addiu	a2,a2,5324
  45a18c:	8f998b38 	lw	t9,-29896(gp)
  45a190:	00000000 	nop
  45a194:	0320f809 	jalr	t9
  45a198:	00000000 	nop
  45a19c:	8fdc0020 	lw	gp,32(s8)
  45a1a0:	00000000 	nop
		    break;
  45a1a4:	1000003c 	b	45a298 <check_msg_errqueue+0x800>
  45a1a8:	00000000 	nop
		case SO_EE_ORIGIN_ICMP:
		    snprintf(orname, sizeof(orname)
  45a1ac:	8fc20d9c 	lw	v0,3484(s8)
  45a1b0:	00000000 	nop
  45a1b4:	90430005 	lbu	v1,5(v0)
  45a1b8:	8fc20d9c 	lw	v0,3484(s8)
  45a1bc:	00000000 	nop
  45a1c0:	90420006 	lbu	v0,6(v0)
  45a1c4:	00000000 	nop
  45a1c8:	afa20010 	sw	v0,16(sp)
  45a1cc:	27c40e08 	addiu	a0,s8,3592
  45a1d0:	24050032 	li	a1,50
  45a1d4:	8f86802c 	lw	a2,-32724(gp)
  45a1d8:	00000000 	nop
  45a1dc:	24c614d4 	addiu	a2,a2,5332
  45a1e0:	00603821 	move	a3,v1
  45a1e4:	8f998b38 	lw	t9,-29896(gp)
  45a1e8:	00000000 	nop
  45a1ec:	0320f809 	jalr	t9
  45a1f0:	00000000 	nop
  45a1f4:	8fdc0020 	lw	gp,32(s8)
  45a1f8:	00000000 	nop
			, "ICMP type %d code %d (not authenticated)"
			, ee->ee_type, ee->ee_code
			);
		    break;
  45a1fc:	10000026 	b	45a298 <check_msg_errqueue+0x800>
  45a200:	00000000 	nop
		case SO_EE_ORIGIN_ICMP6:
		    snprintf(orname, sizeof(orname)
  45a204:	8fc20d9c 	lw	v0,3484(s8)
  45a208:	00000000 	nop
  45a20c:	90430005 	lbu	v1,5(v0)
  45a210:	8fc20d9c 	lw	v0,3484(s8)
  45a214:	00000000 	nop
  45a218:	90420006 	lbu	v0,6(v0)
  45a21c:	00000000 	nop
  45a220:	afa20010 	sw	v0,16(sp)
  45a224:	27c40e08 	addiu	a0,s8,3592
  45a228:	24050032 	li	a1,50
  45a22c:	8f86802c 	lw	a2,-32724(gp)
  45a230:	00000000 	nop
  45a234:	24c61500 	addiu	a2,a2,5376
  45a238:	00603821 	move	a3,v1
  45a23c:	8f998b38 	lw	t9,-29896(gp)
  45a240:	00000000 	nop
  45a244:	0320f809 	jalr	t9
  45a248:	00000000 	nop
  45a24c:	8fdc0020 	lw	gp,32(s8)
  45a250:	00000000 	nop
			, "ICMP6 type %d code %d (not authenticated)"
			, ee->ee_type, ee->ee_code
			);
		    break;
  45a254:	10000010 	b	45a298 <check_msg_errqueue+0x800>
  45a258:	00000000 	nop
		default:
		    snprintf(orname, sizeof(orname), "invalid origin %lu"
  45a25c:	8fc20d9c 	lw	v0,3484(s8)
  45a260:	00000000 	nop
  45a264:	90420004 	lbu	v0,4(v0)
  45a268:	27c40e08 	addiu	a0,s8,3592
  45a26c:	24050032 	li	a1,50
  45a270:	8f86802c 	lw	a2,-32724(gp)
  45a274:	00000000 	nop
  45a278:	24c6152c 	addiu	a2,a2,5420
  45a27c:	00403821 	move	a3,v0
  45a280:	8f998b38 	lw	t9,-29896(gp)
  45a284:	00000000 	nop
  45a288:	0320f809 	jalr	t9
  45a28c:	00000000 	nop
  45a290:	8fdc0020 	lw	gp,32(s8)
  45a294:	00000000 	nop
			, (unsigned long) ee->ee_origin);
		    break;
		}

		{
		    struct state *old_state = cur_state;
  45a298:	8f8287f8 	lw	v0,-30728(gp)
  45a29c:	00000000 	nop
  45a2a0:	8c420000 	lw	v0,0(v0)
  45a2a4:	00000000 	nop
  45a2a8:	afc20e40 	sw	v0,3648(s8)

		    cur_state = sender;
  45a2ac:	8fc20d98 	lw	v0,3480(s8)
  45a2b0:	8f8187f8 	lw	at,-30728(gp)
  45a2b4:	00000000 	nop
  45a2b8:	ac220000 	sw	v0,0(at)

		    /* note dirty trick to suppress ~ at start of format
		     * if we know what state to blame.
		     */
#ifdef NAT_TRAVERSAL
		    if ((packet_len == 1) && (buffer[0] = 0xff)
#ifdef DEBUG
			&& ((cur_debugging & DBG_NATT) == 0)
#endif
			) {
  45a2bc:	8fc30c14 	lw	v1,3092(s8)
  45a2c0:	24020001 	li	v0,1
  45a2c4:	1462000c 	bne	v1,v0,45a2f8 <check_msg_errqueue+0x860>
  45a2c8:	00000000 	nop
  45a2cc:	240200ff 	li	v0,255
  45a2d0:	a3c20038 	sb	v0,56(s8)
  45a2d4:	8f8284f8 	lw	v0,-31496(gp)
  45a2d8:	00000000 	nop
  45a2dc:	8c420000 	lw	v0,0(v0)
  45a2e0:	00000000 	nop
  45a2e4:	30420080 	andi	v0,v0,0x80
  45a2e8:	14400003 	bnez	v0,45a2f8 <check_msg_errqueue+0x860>
  45a2ec:	00000000 	nop
  45a2f0:	10000025 	b	45a388 <check_msg_errqueue+0x8f0>
  45a2f4:	00000000 	nop
			/* don't log NAT-T keepalive related errors unless NATT debug is
			 * enabled
			 */
		    }
		    else
#endif
		    plog((sender != NULL) + "~"
  45a2f8:	8fc20d9c 	lw	v0,3484(s8)
  45a2fc:	00000000 	nop
  45a300:	8c440000 	lw	a0,0(v0)
  45a304:	8f998b8c 	lw	t9,-29812(gp)
  45a308:	00000000 	nop
  45a30c:	0320f809 	jalr	t9
  45a310:	00000000 	nop
  45a314:	8fdc0020 	lw	gp,32(s8)
  45a318:	00402021 	move	a0,v0
  45a31c:	8fc20d98 	lw	v0,3480(s8)
  45a320:	00000000 	nop
  45a324:	0002182b 	sltu	v1,zero,v0
  45a328:	8f81802c 	lw	at,-32724(gp)
  45a32c:	00000000 	nop
  45a330:	24211540 	addiu	at,at,5440
  45a334:	00231821 	addu	v1,at,v1
  45a338:	afa40010 	sw	a0,16(sp)
  45a33c:	8fc20d9c 	lw	v0,3484(s8)
  45a340:	00000000 	nop
  45a344:	8c420000 	lw	v0,0(v0)
  45a348:	00000000 	nop
  45a34c:	afa20014 	sw	v0,20(sp)
  45a350:	27c20e08 	addiu	v0,s8,3592
  45a354:	afa20018 	sw	v0,24(sp)
  45a358:	00602021 	move	a0,v1
  45a35c:	8fc20e60 	lw	v0,3680(s8)
  45a360:	00000000 	nop
  45a364:	8c450004 	lw	a1,4(v0)
  45a368:	27c60d48 	addiu	a2,s8,3400
  45a36c:	8fc70dd0 	lw	a3,3536(s8)
  45a370:	8f998abc 	lw	t9,-30020(gp)
  45a374:	00000000 	nop
  45a378:	0320f809 	jalr	t9
  45a37c:	00000000 	nop
  45a380:	8fdc0020 	lw	gp,32(s8)
  45a384:	00000000 	nop
			"ERROR: asynchronous network error report on %s"
			"%s"
			", complainant %s"
			": %s"
			" [errno %lu, origin %s"
			/* ", pad %d, info %ld" */
			/* ", data %ld" */
			"]"
			, ifp->rname
			, fromstr
			, offstr
			, strerror(ee->ee_errno)
			, (unsigned long) ee->ee_errno
			, orname
			/* , ee->ee_pad, (unsigned long)ee->ee_info */
			/* , (unsigned long)ee->ee_data */
			);
		    cur_state = old_state;
  45a388:	8fc20e40 	lw	v0,3648(s8)
  45a38c:	8f8187f8 	lw	at,-30728(gp)
  45a390:	00000000 	nop
  45a394:	ac220000 	sw	v0,0(at)
  45a398:	10000013 	b	45a3e8 <check_msg_errqueue+0x950>
  45a39c:	00000000 	nop
		}
	    }
	    else
	    {
		plog("unknown cmsg: level %d, type %d, len %d"
  45a3a0:	8f84802c 	lw	a0,-32724(gp)
  45a3a4:	00000000 	nop
  45a3a8:	248415a0 	addiu	a0,a0,5536
  45a3ac:	8fc20d40 	lw	v0,3392(s8)
  45a3b0:	00000000 	nop
  45a3b4:	8c450004 	lw	a1,4(v0)
  45a3b8:	8fc20d40 	lw	v0,3392(s8)
  45a3bc:	00000000 	nop
  45a3c0:	8c460008 	lw	a2,8(v0)
  45a3c4:	8fc20d40 	lw	v0,3392(s8)
  45a3c8:	00000000 	nop
  45a3cc:	8c470000 	lw	a3,0(v0)
  45a3d0:	8f998abc 	lw	t9,-30020(gp)
  45a3d4:	00000000 	nop
  45a3d8:	0320f809 	jalr	t9
  45a3dc:	00000000 	nop
  45a3e0:	8fdc0020 	lw	gp,32(s8)
  45a3e4:	00000000 	nop
  45a3e8:	27c40c18 	addiu	a0,s8,3096
  45a3ec:	8fc50d40 	lw	a1,3392(s8)
  45a3f0:	8f998634 	lw	t9,-31180(gp)
  45a3f4:	00000000 	nop
  45a3f8:	0320f809 	jalr	t9
  45a3fc:	00000000 	nop
  45a400:	8fdc0020 	lw	gp,32(s8)
  45a404:	afc20d40 	sw	v0,3392(s8)
  45a408:	1000fecd 	b	459f40 <check_msg_errqueue+0x4a8>
  45a40c:	00000000 	nop
		    , cm->cmsg_level, cm->cmsg_type, (int)cm->cmsg_len);
	    }
	}
    }
    return (pfd.revents & interest) != 0;
  45a410:	97c30036 	lhu	v1,54(s8)
  45a414:	97c20028 	lhu	v0,40(s8)
  45a418:	00000000 	nop
  45a41c:	00621024 	and	v0,v1,v0
  45a420:	00021400 	sll	v0,v0,0x10
  45a424:	00021403 	sra	v0,v0,0x10
  45a428:	0002102b 	sltu	v0,zero,v0
}
  45a42c:	03c0e821 	move	sp,s8
  45a430:	8fbf0e58 	lw	ra,3672(sp)
  45a434:	8fbe0e54 	lw	s8,3668(sp)
  45a438:	27bd0e60 	addiu	sp,sp,3680
  45a43c:	03e00008 	jr	ra
  45a440:	00000000 	nop

0045a444 <_send_packet>:
  45a444:	3c1c0fbb 	lui	gp,0xfbb
  45a448:	279c252c 	addiu	gp,gp,9516
  45a44c:	0399e021 	addu	gp,gp,t9
  45a450:	3c010001 	lui	at,0x1
  45a454:	34210050 	ori	at,at,0x50
  45a458:	03a1e823 	subu	sp,sp,at
  45a45c:	afbc0018 	sw	gp,24(sp)
  45a460:	3c0d0001 	lui	t5,0x1
  45a464:	35ad004c 	ori	t5,t5,0x4c
  45a468:	01bd6821 	addu	t5,t5,sp
  45a46c:	adbf0000 	sw	ra,0(t5)
  45a470:	adbefffc 	sw	s8,-4(t5)
  45a474:	adbcfff8 	sw	gp,-8(t5)
  45a478:	adb0fff4 	sw	s0,-12(t5)
  45a47c:	03a0f021 	move	s8,sp
  45a480:	3c010001 	lui	at,0x1
  45a484:	003e0821 	addu	at,at,s8
  45a488:	ac240050 	sw	a0,80(at)
  45a48c:	3c010001 	lui	at,0x1
  45a490:	003e0821 	addu	at,at,s8
  45a494:	ac250054 	sw	a1,84(at)
  45a498:	3c010001 	lui	at,0x1
  45a49c:	003e0821 	addu	at,at,s8
  45a4a0:	ac260058 	sw	a2,88(at)
#endif /* defined(IP_RECVERR) && defined(MSG_ERRQUEUE) */

bool
#ifdef NAT_TRAVERSAL
_send_packet(struct state *st, const char *where, bool verbose)
#else
send_packet(struct state *st, const char *where)
#endif
{
    struct connection *c = st->st_connection;
  45a4a4:	3c020001 	lui	v0,0x1
  45a4a8:	005e1021 	addu	v0,v0,s8
  45a4ac:	8c420050 	lw	v0,80(v0)
  45a4b0:	00000000 	nop
  45a4b4:	8c42000c 	lw	v0,12(v0)
  45a4b8:	00000000 	nop
  45a4bc:	afc20020 	sw	v0,32(s8)
    int port_buf;
    bool err;

#ifdef NAT_TRAVERSAL
    u_int8_t ike_pkt[MAX_OUTPUT_UDP_SIZE];
    u_int8_t *ptr;
    unsigned long len;

    if ((c->interface->ike_float == TRUE) && (st->st_tpacket.len != 1)) {
  45a4c0:	8fc20020 	lw	v0,32(s8)
  45a4c4:	00000000 	nop
  45a4c8:	8c420198 	lw	v0,408(v0)
  45a4cc:	00000000 	nop
  45a4d0:	8c43002c 	lw	v1,44(v0)
  45a4d4:	24020001 	li	v0,1
  45a4d8:	1462004a 	bne	v1,v0,45a604 <_send_packet+0x1c0>
  45a4dc:	00000000 	nop
  45a4e0:	3c020001 	lui	v0,0x1
  45a4e4:	005e1021 	addu	v0,v0,s8
  45a4e8:	8c420050 	lw	v0,80(v0)
  45a4ec:	00000000 	nop
  45a4f0:	8c43011c 	lw	v1,284(v0)
  45a4f4:	24020001 	li	v0,1
  45a4f8:	10620042 	beq	v1,v0,45a604 <_send_packet+0x1c0>
  45a4fc:	00000000 	nop
	if ((unsigned long) st->st_tpacket.len >
	    (MAX_OUTPUT_UDP_SIZE-sizeof(u_int32_t))) {
  45a500:	3c020001 	lui	v0,0x1
  45a504:	005e1021 	addu	v0,v0,s8
  45a508:	8c420050 	lw	v0,80(v0)
  45a50c:	00000000 	nop
  45a510:	8c43011c 	lw	v1,284(v0)
  45a514:	3402fffc 	li	v0,0xfffc
  45a518:	0043102b 	sltu	v0,v0,v1
  45a51c:	1040000d 	beqz	v0,45a554 <_send_packet+0x110>
  45a520:	00000000 	nop
	    DBG_log("send_packet(): really too big");
  45a524:	8f84802c 	lw	a0,-32724(gp)
  45a528:	00000000 	nop
  45a52c:	248415c8 	addiu	a0,a0,5576
  45a530:	8f9983b8 	lw	t9,-31816(gp)
  45a534:	00000000 	nop
  45a538:	0320f809 	jalr	t9
  45a53c:	00000000 	nop
  45a540:	8fdc0018 	lw	gp,24(s8)
  45a544:	00000000 	nop
	    return FALSE;
  45a548:	00001021 	move	v0,zero
  45a54c:	10000114 	b	45a9a0 <_send_packet+0x55c>
  45a550:	00000000 	nop
	}
	ptr = ike_pkt;
  45a554:	27c20030 	addiu	v0,s8,48
  45a558:	3c010001 	lui	at,0x1
  45a55c:	003e0821 	addu	at,at,s8
  45a560:	ac220030 	sw	v0,48(at)
	/** Add Non-ESP marker **/
	memset(ike_pkt, 0, sizeof(u_int32_t));
  45a564:	27c40030 	addiu	a0,s8,48
  45a568:	00002821 	move	a1,zero
  45a56c:	24060004 	li	a2,4
  45a570:	8f998500 	lw	t9,-31488(gp)
  45a574:	00000000 	nop
  45a578:	0320f809 	jalr	t9
  45a57c:	00000000 	nop
  45a580:	8fdc0018 	lw	gp,24(s8)
  45a584:	00000000 	nop
	memcpy(ike_pkt + sizeof(u_int32_t), st->st_tpacket.ptr,
  45a588:	27c20030 	addiu	v0,s8,48
  45a58c:	24420004 	addiu	v0,v0,4
  45a590:	00402021 	move	a0,v0
  45a594:	3c020001 	lui	v0,0x1
  45a598:	005e1021 	addu	v0,v0,s8
  45a59c:	8c420050 	lw	v0,80(v0)
  45a5a0:	00000000 	nop
  45a5a4:	8c450118 	lw	a1,280(v0)
  45a5a8:	3c020001 	lui	v0,0x1
  45a5ac:	005e1021 	addu	v0,v0,s8
  45a5b0:	8c420050 	lw	v0,80(v0)
  45a5b4:	00000000 	nop
  45a5b8:	8c46011c 	lw	a2,284(v0)
  45a5bc:	8f998a30 	lw	t9,-30160(gp)
  45a5c0:	00000000 	nop
  45a5c4:	0320f809 	jalr	t9
  45a5c8:	00000000 	nop
  45a5cc:	8fdc0018 	lw	gp,24(s8)
  45a5d0:	00000000 	nop
	    (unsigned long)st->st_tpacket.len);
	len = (unsigned long) st->st_tpacket.len + sizeof(u_int32_t);
  45a5d4:	3c020001 	lui	v0,0x1
  45a5d8:	005e1021 	addu	v0,v0,s8
  45a5dc:	8c420050 	lw	v0,80(v0)
  45a5e0:	00000000 	nop
  45a5e4:	8c42011c 	lw	v0,284(v0)
  45a5e8:	00000000 	nop
  45a5ec:	24420004 	addiu	v0,v0,4
  45a5f0:	3c010001 	lui	at,0x1
  45a5f4:	003e0821 	addu	at,at,s8
  45a5f8:	ac220034 	sw	v0,52(at)
  45a5fc:	10000011 	b	45a644 <_send_packet+0x200>
  45a600:	00000000 	nop
    }
    else {
	ptr = st->st_tpacket.ptr;
  45a604:	3c020001 	lui	v0,0x1
  45a608:	005e1021 	addu	v0,v0,s8
  45a60c:	8c420050 	lw	v0,80(v0)
  45a610:	00000000 	nop
  45a614:	8c420118 	lw	v0,280(v0)
  45a618:	3c010001 	lui	at,0x1
  45a61c:	003e0821 	addu	at,at,s8
  45a620:	ac220030 	sw	v0,48(at)
	len = (unsigned long) st->st_tpacket.len;
  45a624:	3c020001 	lui	v0,0x1
  45a628:	005e1021 	addu	v0,v0,s8
  45a62c:	8c420050 	lw	v0,80(v0)
  45a630:	00000000 	nop
  45a634:	8c42011c 	lw	v0,284(v0)
  45a638:	3c010001 	lui	at,0x1
  45a63c:	003e0821 	addu	at,at,s8
  45a640:	ac220034 	sw	v0,52(at)
    }
#endif

    DBG(DBG_RAW,
  45a644:	8f8284f8 	lw	v0,-31496(gp)
  45a648:	00000000 	nop
  45a64c:	8c420000 	lw	v0,0(v0)
  45a650:	00000000 	nop
  45a654:	30420001 	andi	v0,v0,0x1
  45a658:	10400036 	beqz	v0,45a734 <_send_packet+0x2f0>
  45a65c:	00000000 	nop
  45a660:	8fc20020 	lw	v0,32(s8)
  45a664:	00000000 	nop
  45a668:	24420108 	addiu	v0,v0,264
  45a66c:	00402021 	move	a0,v0
  45a670:	8f998100 	lw	t9,-32512(gp)
  45a674:	00000000 	nop
  45a678:	0320f809 	jalr	t9
  45a67c:	00000000 	nop
  45a680:	8fdc0018 	lw	gp,24(s8)
  45a684:	00401821 	move	v1,v0
  45a688:	8fc20020 	lw	v0,32(s8)
  45a68c:	00000000 	nop
  45a690:	8c470198 	lw	a3,408(v0)
  45a694:	afa30010 	sw	v1,16(sp)
  45a698:	8fc20020 	lw	v0,32(s8)
  45a69c:	00000000 	nop
  45a6a0:	94420178 	lhu	v0,376(v0)
  45a6a4:	00000000 	nop
  45a6a8:	afa20014 	sw	v0,20(sp)
  45a6ac:	8f84802c 	lw	a0,-32724(gp)
  45a6b0:	00000000 	nop
  45a6b4:	248415e8 	addiu	a0,a0,5608
  45a6b8:	3c020001 	lui	v0,0x1
  45a6bc:	005e1021 	addu	v0,v0,s8
  45a6c0:	8c420050 	lw	v0,80(v0)
  45a6c4:	00000000 	nop
  45a6c8:	8c45011c 	lw	a1,284(v0)
  45a6cc:	3c060001 	lui	a2,0x1
  45a6d0:	00de3021 	addu	a2,a2,s8
  45a6d4:	8cc60054 	lw	a2,84(a2)
  45a6d8:	8ce70004 	lw	a3,4(a3)
  45a6dc:	8f9983b8 	lw	t9,-31816(gp)
  45a6e0:	00000000 	nop
  45a6e4:	0320f809 	jalr	t9
  45a6e8:	00000000 	nop
  45a6ec:	8fdc0018 	lw	gp,24(s8)
  45a6f0:	00002021 	move	a0,zero
  45a6f4:	3c020001 	lui	v0,0x1
  45a6f8:	005e1021 	addu	v0,v0,s8
  45a6fc:	8c420050 	lw	v0,80(v0)
  45a700:	00000000 	nop
  45a704:	8c450118 	lw	a1,280(v0)
  45a708:	3c020001 	lui	v0,0x1
  45a70c:	005e1021 	addu	v0,v0,s8
  45a710:	8c420050 	lw	v0,80(v0)
  45a714:	00000000 	nop
  45a718:	8c46011c 	lw	a2,284(v0)
  45a71c:	8f9984ec 	lw	t9,-31508(gp)
  45a720:	00000000 	nop
  45a724:	0320f809 	jalr	t9
  45a728:	00000000 	nop
  45a72c:	8fdc0018 	lw	gp,24(s8)
  45a730:	00000000 	nop
	{
	    DBG_log("sending %lu bytes for %s through %s to %s:%u:"
		, (unsigned long) st->st_tpacket.len
		, where
		, c->interface->rname
		, ip_str(&c->that.host_addr)
		, (unsigned)c->that.host_port);
	    DBG_dump_chunk(NULL, st->st_tpacket);
	});

      /* XXX: Not very clean.  We manipulate the port of the ip_address to
      * have a port in the sockaddr*, but we retain the original port
      * and restore it afterwards.
       */
  
      port_buf = portof(&c->that.host_addr);
  45a734:	8fc20020 	lw	v0,32(s8)
  45a738:	00000000 	nop
  45a73c:	24420108 	addiu	v0,v0,264
  45a740:	00402021 	move	a0,v0
  45a744:	8f998a60 	lw	t9,-30112(gp)
  45a748:	00000000 	nop
  45a74c:	0320f809 	jalr	t9
  45a750:	00000000 	nop
  45a754:	8fdc0018 	lw	gp,24(s8)
  45a758:	afc20024 	sw	v0,36(s8)
      setportof(htons(c->that.host_port), &c->that.host_addr);
  45a75c:	8fc20020 	lw	v0,32(s8)
  45a760:	00000000 	nop
  45a764:	94430178 	lhu	v1,376(v0)
  45a768:	8fc20020 	lw	v0,32(s8)
  45a76c:	00000000 	nop
  45a770:	24420108 	addiu	v0,v0,264
  45a774:	00602021 	move	a0,v1
  45a778:	00402821 	move	a1,v0
  45a77c:	8f9988e0 	lw	t9,-30496(gp)
  45a780:	00000000 	nop
  45a784:	0320f809 	jalr	t9
  45a788:	00000000 	nop
  45a78c:	8fdc0018 	lw	gp,24(s8)
  45a790:	00000000 	nop
  

#if defined(IP_RECVERR) && defined(MSG_ERRQUEUE)
    (void) check_msg_errqueue(c->interface, POLLOUT);
  45a794:	8fc20020 	lw	v0,32(s8)
  45a798:	00000000 	nop
  45a79c:	8c440198 	lw	a0,408(v0)
  45a7a0:	24050004 	li	a1,4
  45a7a4:	8f99803c 	lw	t9,-32708(gp)
  45a7a8:	00000000 	nop
  45a7ac:	27399a98 	addiu	t9,t9,-25960
  45a7b0:	00000000 	nop
  45a7b4:	0320f809 	jalr	t9
  45a7b8:	00000000 	nop
  45a7bc:	8fdc0018 	lw	gp,24(s8)
  45a7c0:	00000000 	nop
#endif /* defined(IP_RECVERR) && defined(MSG_ERRQUEUE) */


#ifdef NAT_TRAVERSAL
    err = sendto(c->interface->fd
  45a7c4:	8fc20020 	lw	v0,32(s8)
  45a7c8:	00000000 	nop
  45a7cc:	24420108 	addiu	v0,v0,264
  45a7d0:	00402021 	move	a0,v0
  45a7d4:	8f9982d4 	lw	t9,-32044(gp)
  45a7d8:	00000000 	nop
  45a7dc:	0320f809 	jalr	t9
  45a7e0:	00000000 	nop
  45a7e4:	8fdc0018 	lw	gp,24(s8)
  45a7e8:	00408021 	move	s0,v0
  45a7ec:	8fc20020 	lw	v0,32(s8)
  45a7f0:	00000000 	nop
  45a7f4:	24420108 	addiu	v0,v0,264
  45a7f8:	00402021 	move	a0,v0
  45a7fc:	8f9981e8 	lw	t9,-32280(gp)
  45a800:	00000000 	nop
  45a804:	0320f809 	jalr	t9
  45a808:	00000000 	nop
  45a80c:	8fdc0018 	lw	gp,24(s8)
  45a810:	00401821 	move	v1,v0
  45a814:	8fc20020 	lw	v0,32(s8)
  45a818:	00000000 	nop
  45a81c:	8c420198 	lw	v0,408(v0)
  45a820:	afb00010 	sw	s0,16(sp)
  45a824:	afa30014 	sw	v1,20(sp)
  45a828:	8c440024 	lw	a0,36(v0)
  45a82c:	3c050001 	lui	a1,0x1
  45a830:	00be2821 	addu	a1,a1,s8
  45a834:	8ca50030 	lw	a1,48(a1)
  45a838:	3c060001 	lui	a2,0x1
  45a83c:	00de3021 	addu	a2,a2,s8
  45a840:	8cc60034 	lw	a2,52(a2)
  45a844:	00003821 	move	a3,zero
  45a848:	8f998610 	lw	t9,-31216(gp)
  45a84c:	00000000 	nop
  45a850:	0320f809 	jalr	t9
  45a854:	00000000 	nop
  45a858:	8fdc0018 	lw	gp,24(s8)
  45a85c:	00401821 	move	v1,v0
  45a860:	3c020001 	lui	v0,0x1
  45a864:	005e1021 	addu	v0,v0,s8
  45a868:	8c420034 	lw	v0,52(v0)
  45a86c:	00000000 	nop
  45a870:	00621026 	xor	v0,v1,v0
  45a874:	0002102b 	sltu	v0,zero,v0
  45a878:	afc20028 	sw	v0,40(s8)
    , ptr, len, 0
    , sockaddrof(&c->that.host_addr)
    , sockaddrlenof(&c->that.host_addr)) != (ssize_t)len;
#else
    err = sendto(c->interface->fd
         , st->st_tpacket.ptr, st->st_tpacket.len, 0
         , sockaddrof(&c->that.host_addr)
         , sockaddrlenof(&c->that.host_addr)) != (ssize_t)st->st_tpacket.len;
#endif
     /* restore port */
     setportof(port_buf, &c->that.host_addr);
  45a87c:	8fc20020 	lw	v0,32(s8)
  45a880:	00000000 	nop
  45a884:	24420108 	addiu	v0,v0,264
  45a888:	8fc40024 	lw	a0,36(s8)
  45a88c:	00402821 	move	a1,v0
  45a890:	8f9988e0 	lw	t9,-30496(gp)
  45a894:	00000000 	nop
  45a898:	0320f809 	jalr	t9
  45a89c:	00000000 	nop
  45a8a0:	8fdc0018 	lw	gp,24(s8)
  45a8a4:	00000000 	nop
 
     if (err)
  45a8a8:	8fc20028 	lw	v0,40(s8)
  45a8ac:	00000000 	nop
  45a8b0:	1040003a 	beqz	v0,45a99c <_send_packet+0x558>
  45a8b4:	00000000 	nop
	{
#ifdef NAT_TRAVERSAL
	/* do not log NAT-T Keep Alive packets */
	if (!verbose)
  45a8b8:	3c020001 	lui	v0,0x1
  45a8bc:	005e1021 	addu	v0,v0,s8
  45a8c0:	8c420058 	lw	v0,88(v0)
  45a8c4:	00000000 	nop
  45a8c8:	14400004 	bnez	v0,45a8dc <_send_packet+0x498>
  45a8cc:	00000000 	nop
	    return FALSE;
  45a8d0:	00001021 	move	v0,zero
  45a8d4:	10000032 	b	45a9a0 <_send_packet+0x55c>
  45a8d8:	00000000 	nop
#endif

	log_errno((e, "sendto on %s to %s:%u failed in %s"
  45a8dc:	8f998234 	lw	t9,-32204(gp)
  45a8e0:	00000000 	nop
  45a8e4:	0320f809 	jalr	t9
  45a8e8:	00000000 	nop
  45a8ec:	8fdc0018 	lw	gp,24(s8)
  45a8f0:	8c420000 	lw	v0,0(v0)
  45a8f4:	3c010001 	lui	at,0x1
  45a8f8:	003e0821 	addu	at,at,s8
  45a8fc:	ac220038 	sw	v0,56(at)
  45a900:	8fc20020 	lw	v0,32(s8)
  45a904:	00000000 	nop
  45a908:	24420108 	addiu	v0,v0,264
  45a90c:	00402021 	move	a0,v0
  45a910:	8f998100 	lw	t9,-32512(gp)
  45a914:	00000000 	nop
  45a918:	0320f809 	jalr	t9
  45a91c:	00000000 	nop
  45a920:	8fdc0018 	lw	gp,24(s8)
  45a924:	00403821 	move	a3,v0
  45a928:	8fc20020 	lw	v0,32(s8)
  45a92c:	00000000 	nop
  45a930:	8c430198 	lw	v1,408(v0)
  45a934:	8fc20020 	lw	v0,32(s8)
  45a938:	00000000 	nop
  45a93c:	94420178 	lhu	v0,376(v0)
  45a940:	00000000 	nop
  45a944:	afa20010 	sw	v0,16(sp)
  45a948:	3c020001 	lui	v0,0x1
  45a94c:	005e1021 	addu	v0,v0,s8
  45a950:	8c420054 	lw	v0,84(v0)
  45a954:	00000000 	nop
  45a958:	afa20014 	sw	v0,20(sp)
  45a95c:	3c040001 	lui	a0,0x1
  45a960:	009e2021 	addu	a0,a0,s8
  45a964:	8c840038 	lw	a0,56(a0)
  45a968:	8f85802c 	lw	a1,-32724(gp)
  45a96c:	00000000 	nop
  45a970:	24a51618 	addiu	a1,a1,5656
  45a974:	8c660004 	lw	a2,4(v1)
  45a978:	8f9988ec 	lw	t9,-30484(gp)
  45a97c:	00000000 	nop
  45a980:	0320f809 	jalr	t9
  45a984:	00000000 	nop
  45a988:	8fdc0018 	lw	gp,24(s8)
  45a98c:	00000000 	nop
	    , c->interface->rname
	    , ip_str(&c->that.host_addr)
	    , (unsigned)c->that.host_port
	    , where));
	return FALSE;
  45a990:	00001021 	move	v0,zero
  45a994:	10000002 	b	45a9a0 <_send_packet+0x55c>
  45a998:	00000000 	nop
    }
    else
    {
	return TRUE;
  45a99c:	24020001 	li	v0,1
    }
}
  45a9a0:	3c0c0001 	lui	t4,0x1
  45a9a4:	358c0050 	ori	t4,t4,0x50
  45a9a8:	03c0e821 	move	sp,s8
  45a9ac:	019d6821 	addu	t5,t4,sp
  45a9b0:	8dbffffc 	lw	ra,-4(t5)
  45a9b4:	8dbefff8 	lw	s8,-8(t5)
  45a9b8:	8db0fff0 	lw	s0,-16(t5)
  45a9bc:	03ace821 	addu	sp,sp,t4
  45a9c0:	03e00008 	jr	ra
  45a9c4:	00000000 	nop

0045a9c8 <unexpected>:
  45a9c8:	3c1c0fbb 	lui	gp,0xfbb
  45a9cc:	279c1fa8 	addiu	gp,gp,8104
  45a9d0:	0399e021 	addu	gp,gp,t9
  45a9d4:	27bdffd8 	addiu	sp,sp,-40
  45a9d8:	afbc0010 	sw	gp,16(sp)
  45a9dc:	afbf0020 	sw	ra,32(sp)
  45a9e0:	afbe001c 	sw	s8,28(sp)
  45a9e4:	afbc0018 	sw	gp,24(sp)
  45a9e8:	03a0f021 	move	s8,sp
  45a9ec:	afc40028 	sw	a0,40(s8)

static stf_status
unexpected(struct msg_digest *md)
{
    loglog(RC_LOG_SERIOUS, "unexpected message received in state %s"
  45a9f0:	8fc20028 	lw	v0,40(s8)
  45a9f4:	00000000 	nop
  45a9f8:	8c420098 	lw	v0,152(v0)
  45a9fc:	8f8483b0 	lw	a0,-31824(gp)
  45aa00:	8c45014c 	lw	a1,332(v0)
  45aa04:	8f9984bc 	lw	t9,-31556(gp)
  45aa08:	00000000 	nop
  45aa0c:	0320f809 	jalr	t9
  45aa10:	00000000 	nop
  45aa14:	8fdc0010 	lw	gp,16(s8)
  45aa18:	24040003 	li	a0,3
  45aa1c:	8f85802c 	lw	a1,-32724(gp)
  45aa20:	00000000 	nop
  45aa24:	24a5163c 	addiu	a1,a1,5692
  45aa28:	00403021 	move	a2,v0
  45aa2c:	8f998c48 	lw	t9,-29624(gp)
  45aa30:	00000000 	nop
  45aa34:	0320f809 	jalr	t9
  45aa38:	00000000 	nop
  45aa3c:	8fdc0010 	lw	gp,16(s8)
  45aa40:	00000000 	nop
	, enum_name(&state_names, md->st->st_state));
    return STF_IGNORE;
  45aa44:	00001021 	move	v0,zero
}
  45aa48:	03c0e821 	move	sp,s8
  45aa4c:	8fbf0020 	lw	ra,32(sp)
  45aa50:	8fbe001c 	lw	s8,28(sp)
  45aa54:	27bd0028 	addiu	sp,sp,40
  45aa58:	03e00008 	jr	ra
  45aa5c:	00000000 	nop

0045aa60 <informational>:
  45aa60:	3c1c0fbb 	lui	gp,0xfbb
  45aa64:	279c1f10 	addiu	gp,gp,7952
  45aa68:	0399e021 	addu	gp,gp,t9
  45aa6c:	27bdfef8 	addiu	sp,sp,-264
  45aa70:	afbc0010 	sw	gp,16(sp)
  45aa74:	afbf0100 	sw	ra,256(sp)
  45aa78:	afbe00fc 	sw	s8,252(sp)
  45aa7c:	afbc00f8 	sw	gp,248(sp)
  45aa80:	03a0f021 	move	s8,sp
  45aa84:	afc40108 	sw	a0,264(s8)

static stf_status
informational(struct msg_digest *md UNUSED)
{
#ifdef DPD
    struct payload_digest *const n_pld = md->chain[ISAKMP_NEXT_N];
  45aa88:	8fc20108 	lw	v0,264(s8)
  45aa8c:	00000000 	nop
  45aa90:	8c4204d4 	lw	v0,1236(v0)
  45aa94:	00000000 	nop
  45aa98:	afc20018 	sw	v0,24(s8)

    /* If the Notification Payload is not null... */
    if (n_pld != NULL)
  45aa9c:	8fc20018 	lw	v0,24(s8)
  45aaa0:	00000000 	nop
  45aaa4:	10400059 	beqz	v0,45ac0c <informational+0x1ac>
  45aaa8:	00000000 	nop
    {
	pb_stream *const n_pbs = &n_pld->pbs;
  45aaac:	8fc20018 	lw	v0,24(s8)
  45aab0:	00000000 	nop
  45aab4:	afc2001c 	sw	v0,28(s8)
	struct isakmp_notification *const n = &n_pld->payload.notification;
  45aab8:	8fc20018 	lw	v0,24(s8)
  45aabc:	00000000 	nop
  45aac0:	24420020 	addiu	v0,v0,32
  45aac4:	afc20020 	sw	v0,32(s8)
	int disp_len;
	char disp_buf[200];

	/* Switch on Notification Type (enum) */
	switch (n->isan_type)
  45aac8:	8fc20020 	lw	v0,32(s8)
  45aacc:	00000000 	nop
  45aad0:	9442000a 	lhu	v0,10(v0)
  45aad4:	00000000 	nop
  45aad8:	afc200f0 	sw	v0,240(s8)
  45aadc:	34028d28 	li	v0,0x8d28
  45aae0:	8fc300f0 	lw	v1,240(s8)
  45aae4:	00000000 	nop
  45aae8:	10620008 	beq	v1,v0,45ab0c <informational+0xac>
  45aaec:	00000000 	nop
  45aaf0:	34028d29 	li	v0,0x8d29
  45aaf4:	8fc300f0 	lw	v1,240(s8)
  45aaf8:	00000000 	nop
  45aafc:	1062000f 	beq	v1,v0,45ab3c <informational+0xdc>
  45ab00:	00000000 	nop
  45ab04:	10000019 	b	45ab6c <informational+0x10c>
  45ab08:	00000000 	nop
	{
	case R_U_THERE:
	    return dpd_inI_outR(md->st, n, n_pbs);
  45ab0c:	8fc20108 	lw	v0,264(s8)
  45ab10:	00000000 	nop
  45ab14:	8c440098 	lw	a0,152(v0)
  45ab18:	8fc50020 	lw	a1,32(s8)
  45ab1c:	8fc6001c 	lw	a2,28(s8)
  45ab20:	8f998624 	lw	t9,-31196(gp)
  45ab24:	00000000 	nop
  45ab28:	0320f809 	jalr	t9
  45ab2c:	00000000 	nop
  45ab30:	8fdc0010 	lw	gp,16(s8)
  45ab34:	10000040 	b	45ac38 <informational+0x1d8>
  45ab38:	00000000 	nop

	case R_U_THERE_ACK:
	    return dpd_inR(md->st, n, n_pbs);
  45ab3c:	8fc20108 	lw	v0,264(s8)
  45ab40:	00000000 	nop
  45ab44:	8c440098 	lw	a0,152(v0)
  45ab48:	8fc50020 	lw	a1,32(s8)
  45ab4c:	8fc6001c 	lw	a2,28(s8)
  45ab50:	8f998828 	lw	t9,-30680(gp)
  45ab54:	00000000 	nop
  45ab58:	0320f809 	jalr	t9
  45ab5c:	00000000 	nop
  45ab60:	8fdc0010 	lw	gp,16(s8)
  45ab64:	10000034 	b	45ac38 <informational+0x1d8>
  45ab68:	00000000 	nop

	default:
	    if (pbs_left(n_pbs) >= sizeof(disp_buf)-1)
  45ab6c:	8fc2001c 	lw	v0,28(s8)
  45ab70:	00000000 	nop
  45ab74:	8c430014 	lw	v1,20(v0)
  45ab78:	8fc2001c 	lw	v0,28(s8)
  45ab7c:	00000000 	nop
  45ab80:	8c420010 	lw	v0,16(v0)
  45ab84:	00000000 	nop
  45ab88:	00621023 	subu	v0,v1,v0
  45ab8c:	2c4200c7 	sltiu	v0,v0,199
  45ab90:	14400005 	bnez	v0,45aba8 <informational+0x148>
  45ab94:	00000000 	nop
		disp_len = sizeof(disp_buf)-1;
  45ab98:	240200c7 	li	v0,199
  45ab9c:	afc20024 	sw	v0,36(s8)
  45aba0:	1000000a 	b	45abcc <informational+0x16c>
  45aba4:	00000000 	nop
	    else
		disp_len = pbs_left(n_pbs);
  45aba8:	8fc2001c 	lw	v0,28(s8)
  45abac:	00000000 	nop
  45abb0:	8c430014 	lw	v1,20(v0)
  45abb4:	8fc2001c 	lw	v0,28(s8)
  45abb8:	00000000 	nop
  45abbc:	8c420010 	lw	v0,16(v0)
  45abc0:	00000000 	nop
  45abc4:	00621023 	subu	v0,v1,v0
  45abc8:	afc20024 	sw	v0,36(s8)
	    memcpy(disp_buf, n_pbs->cur, disp_len);
  45abcc:	27c40028 	addiu	a0,s8,40
  45abd0:	8fc2001c 	lw	v0,28(s8)
  45abd4:	00000000 	nop
  45abd8:	8c450010 	lw	a1,16(v0)
  45abdc:	8fc60024 	lw	a2,36(s8)
  45abe0:	8f998a30 	lw	t9,-30160(gp)
  45abe4:	00000000 	nop
  45abe8:	0320f809 	jalr	t9
  45abec:	00000000 	nop
  45abf0:	8fdc0010 	lw	gp,16(s8)
  45abf4:	00000000 	nop
	    disp_buf[disp_len] = '\0';
  45abf8:	27c30028 	addiu	v1,s8,40
  45abfc:	8fc20024 	lw	v0,36(s8)
  45ac00:	00000000 	nop
  45ac04:	00621021 	addu	v0,v1,v0
  45ac08:	a0400000 	sb	zero,0(v0)

	    /* should indicate from where... FIXME */
/*	    plog("Notification: Pid=%d SPIsz=%d Type=%d Val=%s\n" 
		, n->isan_protoid, n->isan_spisize, n->isan_type
		, disp_buf);
*/
	    break;
	}
    }
#endif
    loglog(RC_LOG_SERIOUS, "received and ignored informational message");
  45ac0c:	24040003 	li	a0,3
  45ac10:	8f85802c 	lw	a1,-32724(gp)
  45ac14:	00000000 	nop
  45ac18:	24a51664 	addiu	a1,a1,5732
  45ac1c:	8f998c48 	lw	t9,-29624(gp)
  45ac20:	00000000 	nop
  45ac24:	0320f809 	jalr	t9
  45ac28:	00000000 	nop
  45ac2c:	8fdc0010 	lw	gp,16(s8)
  45ac30:	00000000 	nop
    return STF_IGNORE;
  45ac34:	00001021 	move	v0,zero
}
  45ac38:	03c0e821 	move	sp,s8
  45ac3c:	8fbf0100 	lw	ra,256(sp)
  45ac40:	8fbe00fc 	lw	s8,252(sp)
  45ac44:	27bd0108 	addiu	sp,sp,264
  45ac48:	03e00008 	jr	ra
  45ac4c:	00000000 	nop

0045ac50 <free_md_pool>:
  45ac50:	3c1c0fbb 	lui	gp,0xfbb
  45ac54:	279c1d20 	addiu	gp,gp,7456
  45ac58:	0399e021 	addu	gp,gp,t9
  45ac5c:	27bdffd0 	addiu	sp,sp,-48
  45ac60:	afbc0010 	sw	gp,16(sp)
  45ac64:	afbf0028 	sw	ra,40(sp)
  45ac68:	afbe0024 	sw	s8,36(sp)
  45ac6c:	afbc0020 	sw	gp,32(sp)
  45ac70:	03a0f021 	move	s8,sp
  45ac74:	00000000 	nop

/* message digest allocation and deallocation */

static struct msg_digest *md_pool = NULL;

/* free_md_pool is only used to avoid leak reports */
void
free_md_pool(void)
{
    for (;;)
    {
	struct msg_digest *md = md_pool;
  45ac78:	8f828018 	lw	v0,-32744(gp)
  45ac7c:	00000000 	nop
  45ac80:	244229c0 	addiu	v0,v0,10688
  45ac84:	8c420000 	lw	v0,0(v0)
  45ac88:	00000000 	nop
  45ac8c:	afc20018 	sw	v0,24(s8)

	if (md == NULL)
  45ac90:	8fc20018 	lw	v0,24(s8)
  45ac94:	00000000 	nop
  45ac98:	14400003 	bnez	v0,45aca8 <free_md_pool+0x58>
  45ac9c:	00000000 	nop
	    break;
  45aca0:	10000011 	b	45ace8 <free_md_pool+0x98>
  45aca4:	00000000 	nop
	md_pool = md->next;
  45aca8:	8fc20018 	lw	v0,24(s8)
  45acac:	00000000 	nop
  45acb0:	8c420000 	lw	v0,0(v0)
  45acb4:	8f818018 	lw	at,-32744(gp)
  45acb8:	00000000 	nop
  45acbc:	242129c0 	addiu	at,at,10688
  45acc0:	ac220000 	sw	v0,0(at)
	pfree(md);
  45acc4:	8fc40018 	lw	a0,24(s8)
  45acc8:	8f998094 	lw	t9,-32620(gp)
  45accc:	00000000 	nop
  45acd0:	0320f809 	jalr	t9
  45acd4:	00000000 	nop
  45acd8:	8fdc0010 	lw	gp,16(s8)
  45acdc:	00000000 	nop
  45ace0:	1000ffe5 	b	45ac78 <free_md_pool+0x28>
  45ace4:	00000000 	nop
    }
}
  45ace8:	03c0e821 	move	sp,s8
  45acec:	8fbf0028 	lw	ra,40(sp)
  45acf0:	8fbe0024 	lw	s8,36(sp)
  45acf4:	27bd0030 	addiu	sp,sp,48
  45acf8:	03e00008 	jr	ra
  45acfc:	00000000 	nop

0045ad00 <alloc_md>:
  45ad00:	3c1c0fbb 	lui	gp,0xfbb
  45ad04:	279c1c70 	addiu	gp,gp,7280
  45ad08:	0399e021 	addu	gp,gp,t9
  45ad0c:	27bdffd0 	addiu	sp,sp,-48
  45ad10:	afbc0010 	sw	gp,16(sp)
  45ad14:	afbf0028 	sw	ra,40(sp)
  45ad18:	afbe0024 	sw	s8,36(sp)
  45ad1c:	afbc0020 	sw	gp,32(sp)
  45ad20:	03a0f021 	move	s8,sp

static struct msg_digest *
alloc_md(void)
{
    struct msg_digest *md = md_pool;
  45ad24:	8f828018 	lw	v0,-32744(gp)
  45ad28:	00000000 	nop
  45ad2c:	244229c0 	addiu	v0,v0,10688
  45ad30:	8c420000 	lw	v0,0(v0)
  45ad34:	00000000 	nop
  45ad38:	afc20018 	sw	v0,24(s8)

    /* convenient initializer:
     * - all pointers NULL
     * - .note = NOTHING_WRONG
     * - .encrypted = FALSE
     */
    static const struct msg_digest blank_md;

    if (md == NULL)
  45ad3c:	8fc20018 	lw	v0,24(s8)
  45ad40:	00000000 	nop
  45ad44:	1440000d 	bnez	v0,45ad7c <alloc_md+0x7c>
  45ad48:	00000000 	nop
	md = alloc_thing(struct msg_digest, "msg_digest");
  45ad4c:	240404f4 	li	a0,1268
  45ad50:	8f85802c 	lw	a1,-32724(gp)
  45ad54:	00000000 	nop
  45ad58:	24a51690 	addiu	a1,a1,5776
  45ad5c:	8f998084 	lw	t9,-32636(gp)
  45ad60:	00000000 	nop
  45ad64:	0320f809 	jalr	t9
  45ad68:	00000000 	nop
  45ad6c:	8fdc0010 	lw	gp,16(s8)
  45ad70:	afc20018 	sw	v0,24(s8)
  45ad74:	10000008 	b	45ad98 <alloc_md+0x98>
  45ad78:	00000000 	nop
    else
	md_pool = md->next;
  45ad7c:	8fc20018 	lw	v0,24(s8)
  45ad80:	00000000 	nop
  45ad84:	8c420000 	lw	v0,0(v0)
  45ad88:	8f818018 	lw	at,-32744(gp)
  45ad8c:	00000000 	nop
  45ad90:	242129c0 	addiu	at,at,10688
  45ad94:	ac220000 	sw	v0,0(at)

    *md = blank_md;
  45ad98:	8fc20018 	lw	v0,24(s8)
  45ad9c:	00000000 	nop
  45ada0:	00402021 	move	a0,v0
  45ada4:	8f858018 	lw	a1,-32744(gp)
  45ada8:	00000000 	nop
  45adac:	24a57680 	addiu	a1,a1,30336
  45adb0:	240604f4 	li	a2,1268
  45adb4:	8f998a30 	lw	t9,-30160(gp)
  45adb8:	00000000 	nop
  45adbc:	0320f809 	jalr	t9
  45adc0:	00000000 	nop
  45adc4:	8fdc0010 	lw	gp,16(s8)
  45adc8:	00000000 	nop
    md->digest_roof = md->digest;
  45adcc:	8fc20018 	lw	v0,24(s8)
  45add0:	00000000 	nop
  45add4:	244300e4 	addiu	v1,v0,228
  45add8:	8fc20018 	lw	v0,24(s8)
  45addc:	00000000 	nop
  45ade0:	ac4304a4 	sw	v1,1188(v0)

    /* note: although there may be multiple msg_digests at once
     * (due to suspended state transitions), there is a single
     * global reply_buffer.  It will need to be saved and restored.
     */
    init_pbs(&md->reply, reply_buffer, sizeof(reply_buffer), "reply packet");
  45ade4:	8fc20018 	lw	v0,24(s8)
  45ade8:	00000000 	nop
  45adec:	2442009c 	addiu	v0,v0,156
  45adf0:	00402021 	move	a0,v0
  45adf4:	8f858134 	lw	a1,-32460(gp)
  45adf8:	3c060001 	lui	a2,0x1
  45adfc:	8f87802c 	lw	a3,-32724(gp)
  45ae00:	00000000 	nop
  45ae04:	24e7169c 	addiu	a3,a3,5788
  45ae08:	8f998364 	lw	t9,-31900(gp)
  45ae0c:	00000000 	nop
  45ae10:	0320f809 	jalr	t9
  45ae14:	00000000 	nop
  45ae18:	8fdc0010 	lw	gp,16(s8)
  45ae1c:	00000000 	nop

    return md;
  45ae20:	8fc20018 	lw	v0,24(s8)
  45ae24:	00000000 	nop
}
  45ae28:	03c0e821 	move	sp,s8
  45ae2c:	8fbf0028 	lw	ra,40(sp)
  45ae30:	8fbe0024 	lw	s8,36(sp)
  45ae34:	27bd0030 	addiu	sp,sp,48
  45ae38:	03e00008 	jr	ra
  45ae3c:	00000000 	nop

0045ae40 <release_md>:
  45ae40:	3c1c0fbb 	lui	gp,0xfbb
  45ae44:	279c1b30 	addiu	gp,gp,6960
  45ae48:	0399e021 	addu	gp,gp,t9
  45ae4c:	27bdffd8 	addiu	sp,sp,-40
  45ae50:	afbc0010 	sw	gp,16(sp)
  45ae54:	afbf0020 	sw	ra,32(sp)
  45ae58:	afbe001c 	sw	s8,28(sp)
  45ae5c:	afbc0018 	sw	gp,24(sp)
  45ae60:	03a0f021 	move	s8,sp
  45ae64:	afc40028 	sw	a0,40(s8)

void
release_md(struct msg_digest *md)
{
    freeanychunk(md->raw_packet);
  45ae68:	8fc20028 	lw	v0,40(s8)
  45ae6c:	00000000 	nop
  45ae70:	8c420004 	lw	v0,4(v0)
  45ae74:	00000000 	nop
  45ae78:	10400009 	beqz	v0,45aea0 <release_md+0x60>
  45ae7c:	00000000 	nop
  45ae80:	8fc20028 	lw	v0,40(s8)
  45ae84:	00000000 	nop
  45ae88:	8c440004 	lw	a0,4(v0)
  45ae8c:	8f998094 	lw	t9,-32620(gp)
  45ae90:	00000000 	nop
  45ae94:	0320f809 	jalr	t9
  45ae98:	00000000 	nop
  45ae9c:	8fdc0010 	lw	gp,16(s8)
  45aea0:	8fc20028 	lw	v0,40(s8)
  45aea4:	00000000 	nop
  45aea8:	ac400004 	sw	zero,4(v0)
    pfreeany(md->packet_pbs.start);
  45aeac:	8fc20028 	lw	v0,40(s8)
  45aeb0:	00000000 	nop
  45aeb4:	8c42003c 	lw	v0,60(v0)
  45aeb8:	00000000 	nop
  45aebc:	1040000a 	beqz	v0,45aee8 <release_md+0xa8>
  45aec0:	00000000 	nop
  45aec4:	8fc20028 	lw	v0,40(s8)
  45aec8:	00000000 	nop
  45aecc:	8c44003c 	lw	a0,60(v0)
  45aed0:	8f998094 	lw	t9,-32620(gp)
  45aed4:	00000000 	nop
  45aed8:	0320f809 	jalr	t9
  45aedc:	00000000 	nop
  45aee0:	8fdc0010 	lw	gp,16(s8)
  45aee4:	00000000 	nop
    md->packet_pbs.start = NULL;
  45aee8:	8fc20028 	lw	v0,40(s8)
  45aeec:	00000000 	nop
  45aef0:	ac40003c 	sw	zero,60(v0)
    md->next = md_pool;
  45aef4:	8f838018 	lw	v1,-32744(gp)
  45aef8:	00000000 	nop
  45aefc:	246329c0 	addiu	v1,v1,10688
  45af00:	8c630000 	lw	v1,0(v1)
  45af04:	8fc20028 	lw	v0,40(s8)
  45af08:	00000000 	nop
  45af0c:	ac430000 	sw	v1,0(v0)
    md_pool = md;
  45af10:	8fc20028 	lw	v0,40(s8)
  45af14:	8f818018 	lw	at,-32744(gp)
  45af18:	00000000 	nop
  45af1c:	242129c0 	addiu	at,at,10688
  45af20:	ac220000 	sw	v0,0(at)
}
  45af24:	03c0e821 	move	sp,s8
  45af28:	8fbf0020 	lw	ra,32(sp)
  45af2c:	8fbe001c 	lw	s8,28(sp)
  45af30:	27bd0028 	addiu	sp,sp,40
  45af34:	03e00008 	jr	ra
  45af38:	00000000 	nop

0045af3c <comm_handle>:
  45af3c:	3c1c0fbb 	lui	gp,0xfbb
  45af40:	279c1a34 	addiu	gp,gp,6708
  45af44:	0399e021 	addu	gp,gp,t9
  45af48:	27bdffd8 	addiu	sp,sp,-40
  45af4c:	afbc0010 	sw	gp,16(sp)
  45af50:	afbf0020 	sw	ra,32(sp)
  45af54:	afbe001c 	sw	s8,28(sp)
  45af58:	afbc0018 	sw	gp,24(sp)
  45af5c:	03a0f021 	move	s8,sp
  45af60:	afc40028 	sw	a0,40(s8)

/* wrapper for read_packet and process_packet
 *
 * The main purpose of this wrapper is to factor out teardown code
 * from the many return points in process_packet.  This amounts to
 * releasing the msg_digest and resetting global variables.
 *
 * When processing of a packet is suspended (STF_SUSPEND),
 * process_packet sets md to NULL to prevent the msg_digest being freed.
 * Someone else must ensure that msg_digest is freed eventually.
 *
 * read_packet is broken out to minimize the lifetime of the
 * enormous input packet buffer, an auto.
 */
void
comm_handle(const struct iface *ifp)
{
    static struct msg_digest *md;

#if defined(IP_RECVERR) && defined(MSG_ERRQUEUE)
    /* Even though select(2) says that there is a message,
     * it might only be a MSG_ERRQUEUE message.  At least
     * sometimes that leads to a hanging recvfrom.  To avoid
     * what appears to be a kernel bug, check_msg_errqueue
     * uses poll(2) and tells us if there is anything for us
     * to read.
     *
     * This is early enough that teardown isn't required:
     * just return on failure.
     */
    if (!check_msg_errqueue(ifp, POLLIN))
  45af64:	8fc40028 	lw	a0,40(s8)
  45af68:	24050001 	li	a1,1
  45af6c:	8f99803c 	lw	t9,-32708(gp)
  45af70:	00000000 	nop
  45af74:	27399a98 	addiu	t9,t9,-25960
  45af78:	00000000 	nop
  45af7c:	0320f809 	jalr	t9
  45af80:	00000000 	nop
  45af84:	8fdc0010 	lw	gp,16(s8)
  45af88:	14400003 	bnez	v0,45af98 <comm_handle+0x5c>
  45af8c:	00000000 	nop
	return;	/* no normal message to read */
  45af90:	1000004c 	b	45b0c4 <comm_handle+0x188>
  45af94:	00000000 	nop
#endif /* defined(IP_RECVERR) && defined(MSG_ERRQUEUE) */

    md = alloc_md();
  45af98:	8f99803c 	lw	t9,-32708(gp)
  45af9c:	00000000 	nop
  45afa0:	2739ad00 	addiu	t9,t9,-21248
  45afa4:	00000000 	nop
  45afa8:	0320f809 	jalr	t9
  45afac:	00000000 	nop
  45afb0:	8fdc0010 	lw	gp,16(s8)
  45afb4:	00000000 	nop
  45afb8:	8f818018 	lw	at,-32744(gp)
  45afbc:	00000000 	nop
  45afc0:	24217b74 	addiu	at,at,31604
  45afc4:	ac220000 	sw	v0,0(at)
    md->iface = ifp;
  45afc8:	8fc30028 	lw	v1,40(s8)
  45afcc:	8f828018 	lw	v0,-32744(gp)
  45afd0:	00000000 	nop
  45afd4:	24427b74 	addiu	v0,v0,31604
  45afd8:	8c420000 	lw	v0,0(v0)
  45afdc:	00000000 	nop
  45afe0:	ac43000c 	sw	v1,12(v0)

    if (read_packet(md))
  45afe4:	8f848018 	lw	a0,-32744(gp)
  45afe8:	00000000 	nop
  45afec:	24847b74 	addiu	a0,a0,31604
  45aff0:	8c840000 	lw	a0,0(a0)
  45aff4:	8f99803c 	lw	t9,-32708(gp)
  45aff8:	00000000 	nop
  45affc:	2739b0dc 	addiu	t9,t9,-20260
  45b000:	00000000 	nop
  45b004:	0320f809 	jalr	t9
  45b008:	00000000 	nop
  45b00c:	8fdc0010 	lw	gp,16(s8)
  45b010:	1040000c 	beqz	v0,45b044 <comm_handle+0x108>
  45b014:	00000000 	nop
	process_packet(&md);
  45b018:	8f848018 	lw	a0,-32744(gp)
  45b01c:	00000000 	nop
  45b020:	24847b74 	addiu	a0,a0,31604
  45b024:	8f99803c 	lw	t9,-32708(gp)
  45b028:	00000000 	nop
  45b02c:	2739bc50 	addiu	t9,t9,-17328
  45b030:	00000000 	nop
  45b034:	0320f809 	jalr	t9
  45b038:	00000000 	nop
  45b03c:	8fdc0010 	lw	gp,16(s8)
  45b040:	00000000 	nop

    if (md != NULL)
  45b044:	8f828018 	lw	v0,-32744(gp)
  45b048:	00000000 	nop
  45b04c:	24427b74 	addiu	v0,v0,31604
  45b050:	8c420000 	lw	v0,0(v0)
  45b054:	00000000 	nop
  45b058:	1040000b 	beqz	v0,45b088 <comm_handle+0x14c>
  45b05c:	00000000 	nop
	release_md(md);
  45b060:	8f848018 	lw	a0,-32744(gp)
  45b064:	00000000 	nop
  45b068:	24847b74 	addiu	a0,a0,31604
  45b06c:	8c840000 	lw	a0,0(a0)
  45b070:	8f998218 	lw	t9,-32232(gp)
  45b074:	00000000 	nop
  45b078:	0320f809 	jalr	t9
  45b07c:	00000000 	nop
  45b080:	8fdc0010 	lw	gp,16(s8)
  45b084:	00000000 	nop

    cur_state = NULL;
  45b088:	8f8187f8 	lw	at,-30728(gp)
  45b08c:	00000000 	nop
  45b090:	ac200000 	sw	zero,0(at)
    reset_cur_connection();
  45b094:	8f8188c8 	lw	at,-30520(gp)
  45b098:	00000000 	nop
  45b09c:	ac200000 	sw	zero,0(at)
  45b0a0:	8f82830c 	lw	v0,-31988(gp)
  45b0a4:	00000000 	nop
  45b0a8:	8c420000 	lw	v0,0(v0)
  45b0ac:	8f8184f8 	lw	at,-31496(gp)
  45b0b0:	00000000 	nop
  45b0b4:	ac220000 	sw	v0,0(at)
    cur_from = NULL;
  45b0b8:	8f818748 	lw	at,-30904(gp)
  45b0bc:	00000000 	nop
  45b0c0:	ac200000 	sw	zero,0(at)
}
  45b0c4:	03c0e821 	move	sp,s8
  45b0c8:	8fbf0020 	lw	ra,32(sp)
  45b0cc:	8fbe001c 	lw	s8,28(sp)
  45b0d0:	27bd0028 	addiu	sp,sp,40
  45b0d4:	03e00008 	jr	ra
  45b0d8:	00000000 	nop

0045b0dc <read_packet>:
  45b0dc:	3c1c0fbb 	lui	gp,0xfbb
  45b0e0:	279c1894 	addiu	gp,gp,6292
  45b0e4:	0399e021 	addu	gp,gp,t9
  45b0e8:	3c010001 	lui	at,0x1
  45b0ec:	34210070 	ori	at,at,0x70
  45b0f0:	03a1e823 	subu	sp,sp,at
  45b0f4:	afbc0018 	sw	gp,24(sp)
  45b0f8:	3c0d0001 	lui	t5,0x1
  45b0fc:	35ad0068 	ori	t5,t5,0x68
  45b100:	01bd6821 	addu	t5,t5,sp
  45b104:	adbf0000 	sw	ra,0(t5)
  45b108:	adbefffc 	sw	s8,-4(t5)
  45b10c:	adbcfff8 	sw	gp,-8(t5)
  45b110:	03a0f021 	move	s8,sp
  45b114:	3c010001 	lui	at,0x1
  45b118:	003e0821 	addu	at,at,s8
  45b11c:	ac240070 	sw	a0,112(at)

/* read the message.
 * Since we don't know its size, we read it into
 * an overly large buffer and then copy it to a
 * new, properly sized buffer.
 */
static bool
read_packet(struct msg_digest *md)
{
    const struct iface *ifp = md->iface;
  45b120:	3c020001 	lui	v0,0x1
  45b124:	005e1021 	addu	v0,v0,s8
  45b128:	8c420070 	lw	v0,112(v0)
  45b12c:	00000000 	nop
  45b130:	8c42000c 	lw	v0,12(v0)
  45b134:	00000000 	nop
  45b138:	afc20020 	sw	v0,32(s8)
    int packet_len;
    /* ??? this buffer seems *way* too big */
    u_int8_t bigbuffer[MAX_INPUT_UDP_SIZE];
#ifdef NAT_TRAVERSAL
    u_int8_t *_buffer = bigbuffer;
  45b13c:	27c20028 	addiu	v0,s8,40
  45b140:	3c010001 	lui	at,0x1
  45b144:	003e0821 	addu	at,at,s8
  45b148:	ac220028 	sw	v0,40(at)
#endif
    union
    {
	struct sockaddr sa;
	struct sockaddr_in sa_in4;
	struct sockaddr_in6 sa_in6;
    } from;
    int from_len = sizeof(from);
  45b14c:	2402001c 	li	v0,28
  45b150:	3c010001 	lui	at,0x1
  45b154:	003e0821 	addu	at,at,s8
  45b158:	ac220050 	sw	v0,80(at)
    err_t from_ugh = NULL;
  45b15c:	3c010001 	lui	at,0x1
  45b160:	003e0821 	addu	at,at,s8
  45b164:	ac200054 	sw	zero,84(at)
    static const char undisclosed[] = "unknown source";

    happy(anyaddr(addrtypeof(&ifp->addr), &md->sender));
  45b168:	8fc20020 	lw	v0,32(s8)
  45b16c:	00000000 	nop
  45b170:	24420008 	addiu	v0,v0,8
  45b174:	00402021 	move	a0,v0
  45b178:	8f9985d4 	lw	t9,-31276(gp)
  45b17c:	00000000 	nop
  45b180:	0320f809 	jalr	t9
  45b184:	00000000 	nop
  45b188:	8fdc0018 	lw	gp,24(s8)
  45b18c:	00401821 	move	v1,v0
  45b190:	3c020001 	lui	v0,0x1
  45b194:	005e1021 	addu	v0,v0,s8
  45b198:	8c420070 	lw	v0,112(v0)
  45b19c:	00000000 	nop
  45b1a0:	24420010 	addiu	v0,v0,16
  45b1a4:	00602021 	move	a0,v1
  45b1a8:	00402821 	move	a1,v0
  45b1ac:	8f998814 	lw	t9,-30700(gp)
  45b1b0:	00000000 	nop
  45b1b4:	0320f809 	jalr	t9
  45b1b8:	00000000 	nop
  45b1bc:	8fdc0018 	lw	gp,24(s8)
  45b1c0:	3c010001 	lui	at,0x1
  45b1c4:	003e0821 	addu	at,at,s8
  45b1c8:	ac220058 	sw	v0,88(at)
  45b1cc:	3c020001 	lui	v0,0x1
  45b1d0:	005e1021 	addu	v0,v0,s8
  45b1d4:	8c420058 	lw	v0,88(v0)
  45b1d8:	00000000 	nop
  45b1dc:	1040000e 	beqz	v0,45b218 <read_packet+0x13c>
  45b1e0:	00000000 	nop
  45b1e4:	3c040001 	lui	a0,0x1
  45b1e8:	009e2021 	addu	a0,a0,s8
  45b1ec:	8c840058 	lw	a0,88(a0)
  45b1f0:	8f85802c 	lw	a1,-32724(gp)
  45b1f4:	00000000 	nop
  45b1f8:	24a513bc 	addiu	a1,a1,5052
  45b1fc:	24060466 	li	a2,1126
  45b200:	8f998bb8 	lw	t9,-29768(gp)
  45b204:	00000000 	nop
  45b208:	0320f809 	jalr	t9
  45b20c:	00000000 	nop
  45b210:	8fdc0018 	lw	gp,24(s8)
  45b214:	00000000 	nop
    zero(&from.sa);
  45b218:	27c20020 	addiu	v0,s8,32
  45b21c:	3c010001 	lui	at,0x1
  45b220:	34210010 	ori	at,at,0x10
  45b224:	00221021 	addu	v0,at,v0
  45b228:	00402021 	move	a0,v0
  45b22c:	00002821 	move	a1,zero
  45b230:	24060010 	li	a2,16
  45b234:	8f998500 	lw	t9,-31488(gp)
  45b238:	00000000 	nop
  45b23c:	0320f809 	jalr	t9
  45b240:	00000000 	nop
  45b244:	8fdc0018 	lw	gp,24(s8)
  45b248:	00000000 	nop
    packet_len = recvfrom(ifp->fd, bigbuffer, sizeof(bigbuffer), 0
  45b24c:	27c20020 	addiu	v0,s8,32
  45b250:	3c010001 	lui	at,0x1
  45b254:	34210010 	ori	at,at,0x10
  45b258:	00221021 	addu	v0,at,v0
  45b25c:	afa20010 	sw	v0,16(sp)
  45b260:	27c20020 	addiu	v0,s8,32
  45b264:	3c010001 	lui	at,0x1
  45b268:	34210030 	ori	at,at,0x30
  45b26c:	00221021 	addu	v0,at,v0
  45b270:	afa20014 	sw	v0,20(sp)
  45b274:	8fc20020 	lw	v0,32(s8)
  45b278:	00000000 	nop
  45b27c:	8c440024 	lw	a0,36(v0)
  45b280:	27c50028 	addiu	a1,s8,40
  45b284:	3c060001 	lui	a2,0x1
  45b288:	00003821 	move	a3,zero
  45b28c:	8f99897c 	lw	t9,-30340(gp)
  45b290:	00000000 	nop
  45b294:	0320f809 	jalr	t9
  45b298:	00000000 	nop
  45b29c:	8fdc0018 	lw	gp,24(s8)
  45b2a0:	afc20024 	sw	v0,36(s8)
	, &from.sa, &from_len);

    /* First: digest the from address.
     * We presume that nothing here disturbs errno.
     */
    if (packet_len == -1
    && from_len == sizeof(from)
    && all_zero((const void *)&from.sa, sizeof(from)))
  45b2a4:	8fc30024 	lw	v1,36(s8)
  45b2a8:	2402ffff 	li	v0,-1
  45b2ac:	1462001c 	bne	v1,v0,45b320 <read_packet+0x244>
  45b2b0:	00000000 	nop
  45b2b4:	3c030001 	lui	v1,0x1
  45b2b8:	007e1821 	addu	v1,v1,s8
  45b2bc:	8c630050 	lw	v1,80(v1)
  45b2c0:	2402001c 	li	v0,28
  45b2c4:	14620016 	bne	v1,v0,45b320 <read_packet+0x244>
  45b2c8:	00000000 	nop
  45b2cc:	27c20020 	addiu	v0,s8,32
  45b2d0:	3c010001 	lui	at,0x1
  45b2d4:	34210010 	ori	at,at,0x10
  45b2d8:	00221021 	addu	v0,at,v0
  45b2dc:	00402021 	move	a0,v0
  45b2e0:	2405001c 	li	a1,28
  45b2e4:	8f99863c 	lw	t9,-31172(gp)
  45b2e8:	00000000 	nop
  45b2ec:	0320f809 	jalr	t9
  45b2f0:	00000000 	nop
  45b2f4:	8fdc0018 	lw	gp,24(s8)
  45b2f8:	10400009 	beqz	v0,45b320 <read_packet+0x244>
  45b2fc:	00000000 	nop
    {
	/* "from" is untouched -- not set by recvfrom */
	from_ugh = undisclosed;
  45b300:	8f82802c 	lw	v0,-32724(gp)
  45b304:	00000000 	nop
  45b308:	244216ac 	addiu	v0,v0,5804
  45b30c:	3c010001 	lui	at,0x1
  45b310:	003e0821 	addu	at,at,s8
  45b314:	ac220054 	sw	v0,84(at)
  45b318:	10000092 	b	45b564 <read_packet+0x488>
  45b31c:	00000000 	nop
    }
    else if (from_len
    < (int) (offsetof(struct sockaddr, sa_family) + sizeof(from.sa.sa_family)))
  45b320:	3c020001 	lui	v0,0x1
  45b324:	005e1021 	addu	v0,v0,s8
  45b328:	8c420050 	lw	v0,80(v0)
  45b32c:	00000000 	nop
  45b330:	28420002 	slti	v0,v0,2
  45b334:	10400009 	beqz	v0,45b35c <read_packet+0x280>
  45b338:	00000000 	nop
    {
	from_ugh = "truncated";
  45b33c:	8f82802c 	lw	v0,-32724(gp)
  45b340:	00000000 	nop
  45b344:	244216bc 	addiu	v0,v0,5820
  45b348:	3c010001 	lui	at,0x1
  45b34c:	003e0821 	addu	at,at,s8
  45b350:	ac220054 	sw	v0,84(at)
  45b354:	10000083 	b	45b564 <read_packet+0x488>
  45b358:	00000000 	nop
    }
    else
    {
	const struct af_info *afi = aftoinfo(from.sa.sa_family);
  45b35c:	3c020001 	lui	v0,0x1
  45b360:	005e1021 	addu	v0,v0,s8
  45b364:	94420030 	lhu	v0,48(v0)
  45b368:	00000000 	nop
  45b36c:	00402021 	move	a0,v0
  45b370:	8f998b94 	lw	t9,-29804(gp)
  45b374:	00000000 	nop
  45b378:	0320f809 	jalr	t9
  45b37c:	00000000 	nop
  45b380:	8fdc0018 	lw	gp,24(s8)
  45b384:	3c010001 	lui	at,0x1
  45b388:	003e0821 	addu	at,at,s8
  45b38c:	ac220058 	sw	v0,88(at)

	if (afi == NULL)
  45b390:	3c020001 	lui	v0,0x1
  45b394:	005e1021 	addu	v0,v0,s8
  45b398:	8c420058 	lw	v0,88(v0)
  45b39c:	00000000 	nop
  45b3a0:	14400009 	bnez	v0,45b3c8 <read_packet+0x2ec>
  45b3a4:	00000000 	nop
	{
	    from_ugh = "unexpected Address Family";
  45b3a8:	8f82802c 	lw	v0,-32724(gp)
  45b3ac:	00000000 	nop
  45b3b0:	244216c8 	addiu	v0,v0,5832
  45b3b4:	3c010001 	lui	at,0x1
  45b3b8:	003e0821 	addu	at,at,s8
  45b3bc:	ac220054 	sw	v0,84(at)
  45b3c0:	10000068 	b	45b564 <read_packet+0x488>
  45b3c4:	00000000 	nop
	}
	else if (from_len != (int)afi->sa_sz)
  45b3c8:	3c020001 	lui	v0,0x1
  45b3cc:	005e1021 	addu	v0,v0,s8
  45b3d0:	8c420058 	lw	v0,88(v0)
  45b3d4:	00000000 	nop
  45b3d8:	8c43000c 	lw	v1,12(v0)
  45b3dc:	3c020001 	lui	v0,0x1
  45b3e0:	005e1021 	addu	v0,v0,s8
  45b3e4:	8c420050 	lw	v0,80(v0)
  45b3e8:	00000000 	nop
  45b3ec:	10430009 	beq	v0,v1,45b414 <read_packet+0x338>
  45b3f0:	00000000 	nop
	{
	    from_ugh = "wrong length";
  45b3f4:	8f82802c 	lw	v0,-32724(gp)
  45b3f8:	00000000 	nop
  45b3fc:	244216e4 	addiu	v0,v0,5860
  45b400:	3c010001 	lui	at,0x1
  45b404:	003e0821 	addu	at,at,s8
  45b408:	ac220054 	sw	v0,84(at)
  45b40c:	10000055 	b	45b564 <read_packet+0x488>
  45b410:	00000000 	nop
	}
	else
	{
	    switch (from.sa.sa_family)
  45b414:	3c020001 	lui	v0,0x1
  45b418:	005e1021 	addu	v0,v0,s8
  45b41c:	94420030 	lhu	v0,48(v0)
  45b420:	3c010001 	lui	at,0x1
  45b424:	003e0821 	addu	at,at,s8
  45b428:	ac22005c 	sw	v0,92(at)
  45b42c:	24020002 	li	v0,2
  45b430:	3c030001 	lui	v1,0x1
  45b434:	007e1821 	addu	v1,v1,s8
  45b438:	8c63005c 	lw	v1,92(v1)
  45b43c:	00000000 	nop
  45b440:	1062000a 	beq	v1,v0,45b46c <read_packet+0x390>
  45b444:	00000000 	nop
  45b448:	2402000a 	li	v0,10
  45b44c:	3c030001 	lui	v1,0x1
  45b450:	007e1821 	addu	v1,v1,s8
  45b454:	8c63005c 	lw	v1,92(v1)
  45b458:	00000000 	nop
  45b45c:	10620023 	beq	v1,v0,45b4ec <read_packet+0x410>
  45b460:	00000000 	nop
  45b464:	1000003f 	b	45b564 <read_packet+0x488>
  45b468:	00000000 	nop
	    {
	    case AF_INET:
		from_ugh = initaddr((void *) &from.sa_in4.sin_addr
  45b46c:	27c20020 	addiu	v0,s8,32
  45b470:	3c010001 	lui	at,0x1
  45b474:	34210010 	ori	at,at,0x10
  45b478:	00221021 	addu	v0,at,v0
  45b47c:	24430004 	addiu	v1,v0,4
  45b480:	3c020001 	lui	v0,0x1
  45b484:	005e1021 	addu	v0,v0,s8
  45b488:	8c420070 	lw	v0,112(v0)
  45b48c:	00000000 	nop
  45b490:	24420010 	addiu	v0,v0,16
  45b494:	00602021 	move	a0,v1
  45b498:	24050004 	li	a1,4
  45b49c:	24060002 	li	a2,2
  45b4a0:	00403821 	move	a3,v0
  45b4a4:	8f998b78 	lw	t9,-29832(gp)
  45b4a8:	00000000 	nop
  45b4ac:	0320f809 	jalr	t9
  45b4b0:	00000000 	nop
  45b4b4:	8fdc0018 	lw	gp,24(s8)
  45b4b8:	3c010001 	lui	at,0x1
  45b4bc:	003e0821 	addu	at,at,s8
  45b4c0:	ac220054 	sw	v0,84(at)
		    , sizeof(from.sa_in4.sin_addr), AF_INET, &md->sender);
		md->sender_port = ntohs(from.sa_in4.sin_port);
  45b4c4:	3c030001 	lui	v1,0x1
  45b4c8:	007e1821 	addu	v1,v1,s8
  45b4cc:	94630032 	lhu	v1,50(v1)
  45b4d0:	3c020001 	lui	v0,0x1
  45b4d4:	005e1021 	addu	v0,v0,s8
  45b4d8:	8c420070 	lw	v0,112(v0)
  45b4dc:	00000000 	nop
  45b4e0:	a443002c 	sh	v1,44(v0)
		break;
  45b4e4:	1000001f 	b	45b564 <read_packet+0x488>
  45b4e8:	00000000 	nop
	    case AF_INET6:
		from_ugh = initaddr((void *) &from.sa_in6.sin6_addr
  45b4ec:	27c20020 	addiu	v0,s8,32
  45b4f0:	3c010001 	lui	at,0x1
  45b4f4:	34210010 	ori	at,at,0x10
  45b4f8:	00221021 	addu	v0,at,v0
  45b4fc:	24430008 	addiu	v1,v0,8
  45b500:	3c020001 	lui	v0,0x1
  45b504:	005e1021 	addu	v0,v0,s8
  45b508:	8c420070 	lw	v0,112(v0)
  45b50c:	00000000 	nop
  45b510:	24420010 	addiu	v0,v0,16
  45b514:	00602021 	move	a0,v1
  45b518:	24050010 	li	a1,16
  45b51c:	2406000a 	li	a2,10
  45b520:	00403821 	move	a3,v0
  45b524:	8f998b78 	lw	t9,-29832(gp)
  45b528:	00000000 	nop
  45b52c:	0320f809 	jalr	t9
  45b530:	00000000 	nop
  45b534:	8fdc0018 	lw	gp,24(s8)
  45b538:	3c010001 	lui	at,0x1
  45b53c:	003e0821 	addu	at,at,s8
  45b540:	ac220054 	sw	v0,84(at)
		    , sizeof(from.sa_in6.sin6_addr), AF_INET6, &md->sender);
		md->sender_port = ntohs(from.sa_in6.sin6_port);
  45b544:	3c030001 	lui	v1,0x1
  45b548:	007e1821 	addu	v1,v1,s8
  45b54c:	94630032 	lhu	v1,50(v1)
  45b550:	3c020001 	lui	v0,0x1
  45b554:	005e1021 	addu	v0,v0,s8
  45b558:	8c420070 	lw	v0,112(v0)
  45b55c:	00000000 	nop
  45b560:	a443002c 	sh	v1,44(v0)
		break;
	    }
	}
    }

    /* now we report any actual I/O error */
    if (packet_len == -1)
  45b564:	8fc30024 	lw	v1,36(s8)
  45b568:	2402ffff 	li	v0,-1
  45b56c:	1462006e 	bne	v1,v0,45b728 <read_packet+0x64c>
  45b570:	00000000 	nop
    {
	if (from_ugh == undisclosed
	&& errno == ECONNREFUSED)
  45b574:	3c030001 	lui	v1,0x1
  45b578:	007e1821 	addu	v1,v1,s8
  45b57c:	8c630054 	lw	v1,84(v1)
  45b580:	8f82802c 	lw	v0,-32724(gp)
  45b584:	00000000 	nop
  45b588:	244216ac 	addiu	v0,v0,5804
  45b58c:	00000000 	nop
  45b590:	14620014 	bne	v1,v0,45b5e4 <read_packet+0x508>
  45b594:	00000000 	nop
  45b598:	8f998234 	lw	t9,-32204(gp)
  45b59c:	00000000 	nop
  45b5a0:	0320f809 	jalr	t9
  45b5a4:	00000000 	nop
  45b5a8:	8fdc0018 	lw	gp,24(s8)
  45b5ac:	8c430000 	lw	v1,0(v0)
  45b5b0:	24020092 	li	v0,146
  45b5b4:	1462000b 	bne	v1,v0,45b5e4 <read_packet+0x508>
  45b5b8:	00000000 	nop
	{
	    /* Tone down scary message for vague event:
	     * We get "connection refused" in response to some
	     * datagram we sent, but we cannot tell which one.
	     */
	    plog("some IKE message we sent has been rejected with ECONNREFUSED (kernel supplied no details)");
  45b5bc:	8f84802c 	lw	a0,-32724(gp)
  45b5c0:	00000000 	nop
  45b5c4:	248416f4 	addiu	a0,a0,5876
  45b5c8:	8f998abc 	lw	t9,-30020(gp)
  45b5cc:	00000000 	nop
  45b5d0:	0320f809 	jalr	t9
  45b5d4:	00000000 	nop
  45b5d8:	8fdc0018 	lw	gp,24(s8)
  45b5dc:	1000004f 	b	45b71c <read_packet+0x640>
  45b5e0:	00000000 	nop
	}
	else if (from_ugh != NULL)
  45b5e4:	3c020001 	lui	v0,0x1
  45b5e8:	005e1021 	addu	v0,v0,s8
  45b5ec:	8c420054 	lw	v0,84(v0)
  45b5f0:	00000000 	nop
  45b5f4:	1040001d 	beqz	v0,45b66c <read_packet+0x590>
  45b5f8:	00000000 	nop
	{
	    log_errno((e, "recvfrom on %s failed; Pluto cannot decode source sockaddr in rejection: %s"
  45b5fc:	8f998234 	lw	t9,-32204(gp)
  45b600:	00000000 	nop
  45b604:	0320f809 	jalr	t9
  45b608:	00000000 	nop
  45b60c:	8fdc0018 	lw	gp,24(s8)
  45b610:	8c420000 	lw	v0,0(v0)
  45b614:	3c010001 	lui	at,0x1
  45b618:	003e0821 	addu	at,at,s8
  45b61c:	ac220058 	sw	v0,88(at)
  45b620:	3c040001 	lui	a0,0x1
  45b624:	009e2021 	addu	a0,a0,s8
  45b628:	8c840058 	lw	a0,88(a0)
  45b62c:	8f85802c 	lw	a1,-32724(gp)
  45b630:	00000000 	nop
  45b634:	24a51750 	addiu	a1,a1,5968
  45b638:	8fc20020 	lw	v0,32(s8)
  45b63c:	00000000 	nop
  45b640:	8c460004 	lw	a2,4(v0)
  45b644:	3c070001 	lui	a3,0x1
  45b648:	00fe3821 	addu	a3,a3,s8
  45b64c:	8ce70054 	lw	a3,84(a3)
  45b650:	8f9988ec 	lw	t9,-30484(gp)
  45b654:	00000000 	nop
  45b658:	0320f809 	jalr	t9
  45b65c:	00000000 	nop
  45b660:	8fdc0018 	lw	gp,24(s8)
  45b664:	1000002d 	b	45b71c <read_packet+0x640>
  45b668:	00000000 	nop
		, ifp->rname, from_ugh));
	}
	else
	{
	    log_errno((e, "recvfrom on %s from %s:%u failed"
  45b66c:	8f998234 	lw	t9,-32204(gp)
  45b670:	00000000 	nop
  45b674:	0320f809 	jalr	t9
  45b678:	00000000 	nop
  45b67c:	8fdc0018 	lw	gp,24(s8)
  45b680:	8c420000 	lw	v0,0(v0)
  45b684:	3c010001 	lui	at,0x1
  45b688:	003e0821 	addu	at,at,s8
  45b68c:	ac220058 	sw	v0,88(at)
  45b690:	3c020001 	lui	v0,0x1
  45b694:	005e1021 	addu	v0,v0,s8
  45b698:	8c420070 	lw	v0,112(v0)
  45b69c:	00000000 	nop
  45b6a0:	24420010 	addiu	v0,v0,16
  45b6a4:	00402021 	move	a0,v0
  45b6a8:	8f998100 	lw	t9,-32512(gp)
  45b6ac:	00000000 	nop
  45b6b0:	0320f809 	jalr	t9
  45b6b4:	00000000 	nop
  45b6b8:	8fdc0018 	lw	gp,24(s8)
  45b6bc:	00401821 	move	v1,v0
  45b6c0:	3c020001 	lui	v0,0x1
  45b6c4:	005e1021 	addu	v0,v0,s8
  45b6c8:	8c420070 	lw	v0,112(v0)
  45b6cc:	00000000 	nop
  45b6d0:	9442002c 	lhu	v0,44(v0)
  45b6d4:	00000000 	nop
  45b6d8:	afa20010 	sw	v0,16(sp)
  45b6dc:	3c040001 	lui	a0,0x1
  45b6e0:	009e2021 	addu	a0,a0,s8
  45b6e4:	8c840058 	lw	a0,88(a0)
  45b6e8:	8f85802c 	lw	a1,-32724(gp)
  45b6ec:	00000000 	nop
  45b6f0:	24a5179c 	addiu	a1,a1,6044
  45b6f4:	8fc20020 	lw	v0,32(s8)
  45b6f8:	00000000 	nop
  45b6fc:	8c460004 	lw	a2,4(v0)
  45b700:	00603821 	move	a3,v1
  45b704:	8f9988ec 	lw	t9,-30484(gp)
  45b708:	00000000 	nop
  45b70c:	0320f809 	jalr	t9
  45b710:	00000000 	nop
  45b714:	8fdc0018 	lw	gp,24(s8)
  45b718:	00000000 	nop
		, ifp->rname
		, ip_str(&md->sender), (unsigned)md->sender_port));
	}

	return FALSE;
  45b71c:	00001021 	move	v0,zero
  45b720:	10000142 	b	45bc2c <read_packet+0xb50>
  45b724:	00000000 	nop
    }
    else if (from_ugh != NULL)
  45b728:	3c020001 	lui	v0,0x1
  45b72c:	005e1021 	addu	v0,v0,s8
  45b730:	8c420054 	lw	v0,84(v0)
  45b734:	00000000 	nop
  45b738:	10400013 	beqz	v0,45b788 <read_packet+0x6ac>
  45b73c:	00000000 	nop
    {
	plog("recvfrom on %s returned misformed source sockaddr: %s"
  45b740:	8f84802c 	lw	a0,-32724(gp)
  45b744:	00000000 	nop
  45b748:	248417c0 	addiu	a0,a0,6080
  45b74c:	8fc20020 	lw	v0,32(s8)
  45b750:	00000000 	nop
  45b754:	8c450004 	lw	a1,4(v0)
  45b758:	3c060001 	lui	a2,0x1
  45b75c:	00de3021 	addu	a2,a2,s8
  45b760:	8cc60054 	lw	a2,84(a2)
  45b764:	8f998abc 	lw	t9,-30020(gp)
  45b768:	00000000 	nop
  45b76c:	0320f809 	jalr	t9
  45b770:	00000000 	nop
  45b774:	8fdc0018 	lw	gp,24(s8)
  45b778:	00000000 	nop
	    , ifp->rname, from_ugh);
	return FALSE;
  45b77c:	00001021 	move	v0,zero
  45b780:	1000012a 	b	45bc2c <read_packet+0xb50>
  45b784:	00000000 	nop
    }
    cur_from = &md->sender;
  45b788:	3c020001 	lui	v0,0x1
  45b78c:	005e1021 	addu	v0,v0,s8
  45b790:	8c420070 	lw	v0,112(v0)
  45b794:	00000000 	nop
  45b798:	24420010 	addiu	v0,v0,16
  45b79c:	8f818748 	lw	at,-30904(gp)
  45b7a0:	00000000 	nop
  45b7a4:	ac220000 	sw	v0,0(at)
    cur_from_port = md->sender_port;
  45b7a8:	3c020001 	lui	v0,0x1
  45b7ac:	005e1021 	addu	v0,v0,s8
  45b7b0:	8c420070 	lw	v0,112(v0)
  45b7b4:	00000000 	nop
  45b7b8:	9442002c 	lhu	v0,44(v0)
  45b7bc:	8f8185ac 	lw	at,-31316(gp)
  45b7c0:	00000000 	nop
  45b7c4:	a4220000 	sh	v0,0(at)

#ifdef NAT_TRAVERSAL
    if (ifp->ike_float == TRUE) {
  45b7c8:	8fc20020 	lw	v0,32(s8)
  45b7cc:	00000000 	nop
  45b7d0:	8c43002c 	lw	v1,44(v0)
  45b7d4:	24020001 	li	v0,1
  45b7d8:	1462005c 	bne	v1,v0,45b94c <read_packet+0x870>
  45b7dc:	00000000 	nop
	u_int32_t non_esp;
	if (packet_len < (int)sizeof(u_int32_t)) {
  45b7e0:	8fc20024 	lw	v0,36(s8)
  45b7e4:	00000000 	nop
  45b7e8:	28420004 	slti	v0,v0,4
  45b7ec:	1040001c 	beqz	v0,45b860 <read_packet+0x784>
  45b7f0:	00000000 	nop
	    plog("recvfrom %s:%u too small packet (%d)"
  45b7f4:	8f848748 	lw	a0,-30904(gp)
  45b7f8:	00000000 	nop
  45b7fc:	8c840000 	lw	a0,0(a0)
  45b800:	8f998100 	lw	t9,-32512(gp)
  45b804:	00000000 	nop
  45b808:	0320f809 	jalr	t9
  45b80c:	00000000 	nop
  45b810:	8fdc0018 	lw	gp,24(s8)
  45b814:	00000000 	nop
  45b818:	8f8385ac 	lw	v1,-31316(gp)
  45b81c:	00000000 	nop
  45b820:	94630000 	lhu	v1,0(v1)
  45b824:	8f84802c 	lw	a0,-32724(gp)
  45b828:	00000000 	nop
  45b82c:	248417f8 	addiu	a0,a0,6136
  45b830:	00402821 	move	a1,v0
  45b834:	00603021 	move	a2,v1
  45b838:	8fc70024 	lw	a3,36(s8)
  45b83c:	8f998abc 	lw	t9,-30020(gp)
  45b840:	00000000 	nop
  45b844:	0320f809 	jalr	t9
  45b848:	00000000 	nop
  45b84c:	8fdc0018 	lw	gp,24(s8)
  45b850:	00000000 	nop
		, ip_str(cur_from), (unsigned) cur_from_port, packet_len);
	    return FALSE;
  45b854:	00001021 	move	v0,zero
  45b858:	100000f4 	b	45bc2c <read_packet+0xb50>
  45b85c:	00000000 	nop
	}
	memcpy(&non_esp, _buffer, sizeof(u_int32_t));
  45b860:	27c20020 	addiu	v0,s8,32
  45b864:	3c010001 	lui	at,0x1
  45b868:	34210038 	ori	at,at,0x38
  45b86c:	00221021 	addu	v0,at,v0
  45b870:	00402021 	move	a0,v0
  45b874:	3c050001 	lui	a1,0x1
  45b878:	00be2821 	addu	a1,a1,s8
  45b87c:	8ca50028 	lw	a1,40(a1)
  45b880:	24060004 	li	a2,4
  45b884:	8f998a30 	lw	t9,-30160(gp)
  45b888:	00000000 	nop
  45b88c:	0320f809 	jalr	t9
  45b890:	00000000 	nop
  45b894:	8fdc0018 	lw	gp,24(s8)
  45b898:	00000000 	nop
	if (non_esp != 0) {
  45b89c:	3c020001 	lui	v0,0x1
  45b8a0:	005e1021 	addu	v0,v0,s8
  45b8a4:	8c420058 	lw	v0,88(v0)
  45b8a8:	00000000 	nop
  45b8ac:	1040001b 	beqz	v0,45b91c <read_packet+0x840>
  45b8b0:	00000000 	nop
	    plog("recvfrom %s:%u has no Non-ESP marker"
  45b8b4:	8f848748 	lw	a0,-30904(gp)
  45b8b8:	00000000 	nop
  45b8bc:	8c840000 	lw	a0,0(a0)
  45b8c0:	8f998100 	lw	t9,-32512(gp)
  45b8c4:	00000000 	nop
  45b8c8:	0320f809 	jalr	t9
  45b8cc:	00000000 	nop
  45b8d0:	8fdc0018 	lw	gp,24(s8)
  45b8d4:	00000000 	nop
  45b8d8:	8f8385ac 	lw	v1,-31316(gp)
  45b8dc:	00000000 	nop
  45b8e0:	94630000 	lhu	v1,0(v1)
  45b8e4:	8f84802c 	lw	a0,-32724(gp)
  45b8e8:	00000000 	nop
  45b8ec:	24841820 	addiu	a0,a0,6176
  45b8f0:	00402821 	move	a1,v0
  45b8f4:	00603021 	move	a2,v1
  45b8f8:	8f998abc 	lw	t9,-30020(gp)
  45b8fc:	00000000 	nop
  45b900:	0320f809 	jalr	t9
  45b904:	00000000 	nop
  45b908:	8fdc0018 	lw	gp,24(s8)
  45b90c:	00000000 	nop
		, ip_str(cur_from), (unsigned) cur_from_port);
	    return FALSE;
  45b910:	00001021 	move	v0,zero
  45b914:	100000c5 	b	45bc2c <read_packet+0xb50>
  45b918:	00000000 	nop
	}
	_buffer += sizeof(u_int32_t);
  45b91c:	3c020001 	lui	v0,0x1
  45b920:	005e1021 	addu	v0,v0,s8
  45b924:	8c420028 	lw	v0,40(v0)
  45b928:	00000000 	nop
  45b92c:	24420004 	addiu	v0,v0,4
  45b930:	3c010001 	lui	at,0x1
  45b934:	003e0821 	addu	at,at,s8
  45b938:	ac220028 	sw	v0,40(at)
	packet_len -= sizeof(u_int32_t);
  45b93c:	8fc20024 	lw	v0,36(s8)
  45b940:	00000000 	nop
  45b944:	2442fffc 	addiu	v0,v0,-4
  45b948:	afc20024 	sw	v0,36(s8)
    }
#endif

    /* Clone actual message contents
     * and set up md->packet_pbs to describe it.
     */
    init_pbs(&md->packet_pbs,
  45b94c:	3c040001 	lui	a0,0x1
  45b950:	009e2021 	addu	a0,a0,s8
  45b954:	8c840028 	lw	a0,40(a0)
  45b958:	8fc50024 	lw	a1,36(s8)
  45b95c:	8f86802c 	lw	a2,-32724(gp)
  45b960:	00000000 	nop
  45b964:	24c61848 	addiu	a2,a2,6216
  45b968:	8f998c04 	lw	t9,-29692(gp)
  45b96c:	00000000 	nop
  45b970:	0320f809 	jalr	t9
  45b974:	00000000 	nop
  45b978:	8fdc0018 	lw	gp,24(s8)
  45b97c:	00401821 	move	v1,v0
  45b980:	3c020001 	lui	v0,0x1
  45b984:	005e1021 	addu	v0,v0,s8
  45b988:	8c420070 	lw	v0,112(v0)
  45b98c:	00000000 	nop
  45b990:	24420030 	addiu	v0,v0,48
  45b994:	00402021 	move	a0,v0
  45b998:	00602821 	move	a1,v1
  45b99c:	8fc60024 	lw	a2,36(s8)
  45b9a0:	8f87802c 	lw	a3,-32724(gp)
  45b9a4:	00000000 	nop
  45b9a8:	24e71868 	addiu	a3,a3,6248
  45b9ac:	8f998364 	lw	t9,-31900(gp)
  45b9b0:	00000000 	nop
  45b9b4:	0320f809 	jalr	t9
  45b9b8:	00000000 	nop
  45b9bc:	8fdc0018 	lw	gp,24(s8)
  45b9c0:	00000000 	nop
#ifdef NAT_TRAVERSAL
	clone_bytes(_buffer, packet_len, "message buffer in comm_handle()"),
#else
	clone_bytes(bigbuffer, packet_len, "message buffer in comm_handle()"),
#endif
	packet_len, "packet");

    DBG(DBG_RAW | DBG_CRYPT | DBG_PARSING | DBG_CONTROL,
  45b9c4:	8f8284f8 	lw	v0,-31496(gp)
  45b9c8:	00000000 	nop
  45b9cc:	8c420000 	lw	v0,0(v0)
  45b9d0:	00000000 	nop
  45b9d4:	30420017 	andi	v0,v0,0x17
  45b9d8:	10400033 	beqz	v0,45baa8 <read_packet+0x9cc>
  45b9dc:	00000000 	nop
  45b9e0:	8f84802c 	lw	a0,-32724(gp)
  45b9e4:	00000000 	nop
  45b9e8:	24841870 	addiu	a0,a0,6256
  45b9ec:	8f9983b8 	lw	t9,-31816(gp)
  45b9f0:	00000000 	nop
  45b9f4:	0320f809 	jalr	t9
  45b9f8:	00000000 	nop
  45b9fc:	8fdc0018 	lw	gp,24(s8)
  45ba00:	00000000 	nop
  45ba04:	8f848748 	lw	a0,-30904(gp)
  45ba08:	00000000 	nop
  45ba0c:	8c840000 	lw	a0,0(a0)
  45ba10:	8f998100 	lw	t9,-32512(gp)
  45ba14:	00000000 	nop
  45ba18:	0320f809 	jalr	t9
  45ba1c:	00000000 	nop
  45ba20:	8fdc0018 	lw	gp,24(s8)
  45ba24:	00403021 	move	a2,v0
  45ba28:	3c020001 	lui	v0,0x1
  45ba2c:	005e1021 	addu	v0,v0,s8
  45ba30:	8c420070 	lw	v0,112(v0)
  45ba34:	00000000 	nop
  45ba38:	24430030 	addiu	v1,v0,48
  45ba3c:	3c020001 	lui	v0,0x1
  45ba40:	005e1021 	addu	v0,v0,s8
  45ba44:	8c420070 	lw	v0,112(v0)
  45ba48:	00000000 	nop
  45ba4c:	24420030 	addiu	v0,v0,48
  45ba50:	8c630014 	lw	v1,20(v1)
  45ba54:	8c42000c 	lw	v0,12(v0)
  45ba58:	00000000 	nop
  45ba5c:	00621823 	subu	v1,v1,v0
  45ba60:	8f8785ac 	lw	a3,-31316(gp)
  45ba64:	00000000 	nop
  45ba68:	94e70000 	lhu	a3,0(a3)
  45ba6c:	8fc20020 	lw	v0,32(s8)
  45ba70:	00000000 	nop
  45ba74:	8c420004 	lw	v0,4(v0)
  45ba78:	00000000 	nop
  45ba7c:	afa20010 	sw	v0,16(sp)
  45ba80:	8f84802c 	lw	a0,-32724(gp)
  45ba84:	00000000 	nop
  45ba88:	24841874 	addiu	a0,a0,6260
  45ba8c:	00602821 	move	a1,v1
  45ba90:	8f9983b8 	lw	t9,-31816(gp)
  45ba94:	00000000 	nop
  45ba98:	0320f809 	jalr	t9
  45ba9c:	00000000 	nop
  45baa0:	8fdc0018 	lw	gp,24(s8)
  45baa4:	00000000 	nop
	{
	    DBG_log(BLANK_FORMAT);
	    DBG_log("*received %d bytes from %s:%u on %s"
		, (int) pbs_room(&md->packet_pbs)
		, ip_str(cur_from), (unsigned) cur_from_port
		, ifp->rname);
	});

    DBG(DBG_RAW,
  45baa8:	8f8284f8 	lw	v0,-31496(gp)
  45baac:	00000000 	nop
  45bab0:	8c420000 	lw	v0,0(v0)
  45bab4:	00000000 	nop
  45bab8:	30420001 	andi	v0,v0,0x1
  45babc:	1040001e 	beqz	v0,45bb38 <read_packet+0xa5c>
  45bac0:	00000000 	nop
  45bac4:	3c020001 	lui	v0,0x1
  45bac8:	005e1021 	addu	v0,v0,s8
  45bacc:	8c420070 	lw	v0,112(v0)
  45bad0:	00000000 	nop
  45bad4:	24430030 	addiu	v1,v0,48
  45bad8:	3c020001 	lui	v0,0x1
  45badc:	005e1021 	addu	v0,v0,s8
  45bae0:	8c420070 	lw	v0,112(v0)
  45bae4:	00000000 	nop
  45bae8:	24420030 	addiu	v0,v0,48
  45baec:	8c630014 	lw	v1,20(v1)
  45baf0:	8c42000c 	lw	v0,12(v0)
  45baf4:	00000000 	nop
  45baf8:	00621823 	subu	v1,v1,v0
  45bafc:	8f84802c 	lw	a0,-32724(gp)
  45bb00:	00000000 	nop
  45bb04:	24841898 	addiu	a0,a0,6296
  45bb08:	3c020001 	lui	v0,0x1
  45bb0c:	005e1021 	addu	v0,v0,s8
  45bb10:	8c420070 	lw	v0,112(v0)
  45bb14:	00000000 	nop
  45bb18:	8c45003c 	lw	a1,60(v0)
  45bb1c:	00603021 	move	a2,v1
  45bb20:	8f9984ec 	lw	t9,-31508(gp)
  45bb24:	00000000 	nop
  45bb28:	0320f809 	jalr	t9
  45bb2c:	00000000 	nop
  45bb30:	8fdc0018 	lw	gp,24(s8)
  45bb34:	00000000 	nop
	DBG_dump("", md->packet_pbs.start, pbs_room(&md->packet_pbs)));

#ifdef NAT_TRAVERSAL
	if ((pbs_room(&md->packet_pbs)==1) && (md->packet_pbs.start[0]==0xff)) {
  45bb38:	3c020001 	lui	v0,0x1
  45bb3c:	005e1021 	addu	v0,v0,s8
  45bb40:	8c420070 	lw	v0,112(v0)
  45bb44:	00000000 	nop
  45bb48:	24430030 	addiu	v1,v0,48
  45bb4c:	3c020001 	lui	v0,0x1
  45bb50:	005e1021 	addu	v0,v0,s8
  45bb54:	8c420070 	lw	v0,112(v0)
  45bb58:	00000000 	nop
  45bb5c:	24420030 	addiu	v0,v0,48
  45bb60:	8c630014 	lw	v1,20(v1)
  45bb64:	8c42000c 	lw	v0,12(v0)
  45bb68:	00000000 	nop
  45bb6c:	00621823 	subu	v1,v1,v0
  45bb70:	24020001 	li	v0,1
  45bb74:	1462002c 	bne	v1,v0,45bc28 <read_packet+0xb4c>
  45bb78:	00000000 	nop
  45bb7c:	3c020001 	lui	v0,0x1
  45bb80:	005e1021 	addu	v0,v0,s8
  45bb84:	8c420070 	lw	v0,112(v0)
  45bb88:	00000000 	nop
  45bb8c:	8c42003c 	lw	v0,60(v0)
  45bb90:	00000000 	nop
  45bb94:	90430000 	lbu	v1,0(v0)
  45bb98:	240200ff 	li	v0,255
  45bb9c:	14620022 	bne	v1,v0,45bc28 <read_packet+0xb4c>
  45bba0:	00000000 	nop
		/**
		 * NAT-T Keep-alive packets should be discared by kernel ESPinUDP
		 * layer. But boggus keep-alive packets (sent with a non-esp marker)
		 * can reach this point. Complain and discard them.
		 */
		DBG(DBG_NATT,
  45bba4:	8f8284f8 	lw	v0,-31496(gp)
  45bba8:	00000000 	nop
  45bbac:	8c420000 	lw	v0,0(v0)
  45bbb0:	00000000 	nop
  45bbb4:	30420080 	andi	v0,v0,0x80
  45bbb8:	10400018 	beqz	v0,45bc1c <read_packet+0xb40>
  45bbbc:	00000000 	nop
  45bbc0:	8f848748 	lw	a0,-30904(gp)
  45bbc4:	00000000 	nop
  45bbc8:	8c840000 	lw	a0,0(a0)
  45bbcc:	8f998100 	lw	t9,-32512(gp)
  45bbd0:	00000000 	nop
  45bbd4:	0320f809 	jalr	t9
  45bbd8:	00000000 	nop
  45bbdc:	8fdc0018 	lw	gp,24(s8)
  45bbe0:	00000000 	nop
  45bbe4:	8f8385ac 	lw	v1,-31316(gp)
  45bbe8:	00000000 	nop
  45bbec:	94630000 	lhu	v1,0(v1)
  45bbf0:	8f84802c 	lw	a0,-32724(gp)
  45bbf4:	00000000 	nop
  45bbf8:	2484189c 	addiu	a0,a0,6300
  45bbfc:	00402821 	move	a1,v0
  45bc00:	00603021 	move	a2,v1
  45bc04:	8f9983b8 	lw	t9,-31816(gp)
  45bc08:	00000000 	nop
  45bc0c:	0320f809 	jalr	t9
  45bc10:	00000000 	nop
  45bc14:	8fdc0018 	lw	gp,24(s8)
  45bc18:	00000000 	nop
			DBG_log("NAT-T keep-alive (boggus ?) should not reach this point. "
				"Ignored. Sender: %s:%u", ip_str(cur_from),
				(unsigned) cur_from_port);
			);
		return FALSE;
  45bc1c:	00001021 	move	v0,zero
  45bc20:	10000002 	b	45bc2c <read_packet+0xb50>
  45bc24:	00000000 	nop
	}
#endif

    return TRUE;
  45bc28:	24020001 	li	v0,1
}
  45bc2c:	3c0c0001 	lui	t4,0x1
  45bc30:	358c0070 	ori	t4,t4,0x70
  45bc34:	03c0e821 	move	sp,s8
  45bc38:	019d6821 	addu	t5,t4,sp
  45bc3c:	8dbffff8 	lw	ra,-8(t5)
  45bc40:	8dbefff4 	lw	s8,-12(t5)
  45bc44:	03ace821 	addu	sp,sp,t4
  45bc48:	03e00008 	jr	ra
  45bc4c:	00000000 	nop

0045bc50 <process_packet>:
  45bc50:	3c1c0fbb 	lui	gp,0xfbb
  45bc54:	279c0d20 	addiu	gp,gp,3360
  45bc58:	0399e021 	addu	gp,gp,t9
  45bc5c:	27bdff70 	addiu	sp,sp,-144
  45bc60:	afbc0018 	sw	gp,24(sp)
  45bc64:	afbf008c 	sw	ra,140(sp)
  45bc68:	afbe0088 	sw	s8,136(sp)
  45bc6c:	afbc0084 	sw	gp,132(sp)
  45bc70:	afb00080 	sw	s0,128(sp)
  45bc74:	03a0f021 	move	s8,sp
  45bc78:	afc40090 	sw	a0,144(s8)

/* process an input packet, possibly generating a reply.
 *
 * If all goes well, this routine eventually calls a state-specific
 * transition function.
 */
static void
process_packet(struct msg_digest **mdp)
{
    struct msg_digest *md = *mdp;
  45bc7c:	8fc20090 	lw	v0,144(s8)
  45bc80:	00000000 	nop
  45bc84:	8c420000 	lw	v0,0(v0)
  45bc88:	00000000 	nop
  45bc8c:	afc20020 	sw	v0,32(s8)
    const struct state_microcode *smc;
    bool new_iv_set = FALSE;
  45bc90:	afc00028 	sw	zero,40(s8)
    struct state *st = NULL;
  45bc94:	afc0002c 	sw	zero,44(s8)
    enum state_kind from_state = STATE_UNDEFINED;	/* state we started in */
  45bc98:	afc00030 	sw	zero,48(s8)

#define SEND_NOTIFICATION(t) { \
    if (st) send_notification_from_state(st, from_state, t); \
    else send_notification_from_md(md, t); }

    if (!in_struct(&md->hdr, &isakmp_hdr_desc, &md->packet_pbs, &md->message_pbs))
  45bc9c:	8fc20020 	lw	v0,32(s8)
  45bca0:	00000000 	nop
  45bca4:	24430070 	addiu	v1,v0,112
  45bca8:	8fc20020 	lw	v0,32(s8)
  45bcac:	00000000 	nop
  45bcb0:	24460030 	addiu	a2,v0,48
  45bcb4:	8fc20020 	lw	v0,32(s8)
  45bcb8:	00000000 	nop
  45bcbc:	24420050 	addiu	v0,v0,80
  45bcc0:	00602021 	move	a0,v1
  45bcc4:	8f858688 	lw	a1,-31096(gp)
  45bcc8:	00403821 	move	a3,v0
  45bccc:	8f998b3c 	lw	t9,-29892(gp)
  45bcd0:	00000000 	nop
  45bcd4:	0320f809 	jalr	t9
  45bcd8:	00000000 	nop
  45bcdc:	8fdc0018 	lw	gp,24(s8)
  45bce0:	1440006e 	bnez	v0,45be9c <process_packet+0x24c>
  45bce4:	00000000 	nop
    {
	/* Identify specific failures:
	 * - bad ISAKMP major/minor version numbers
	 */
	if (md->packet_pbs.roof - md->packet_pbs.cur >= (ptrdiff_t)isakmp_hdr_desc.size) {
  45bce8:	8fc20020 	lw	v0,32(s8)
  45bcec:	00000000 	nop
  45bcf0:	8c430044 	lw	v1,68(v0)
  45bcf4:	8fc20020 	lw	v0,32(s8)
  45bcf8:	00000000 	nop
  45bcfc:	8c420040 	lw	v0,64(v0)
  45bd00:	00000000 	nop
  45bd04:	00621823 	subu	v1,v1,v0
  45bd08:	8f828688 	lw	v0,-31096(gp)
  45bd0c:	00000000 	nop
  45bd10:	8c420008 	lw	v0,8(v0)
  45bd14:	00000000 	nop
  45bd18:	0062102a 	slt	v0,v1,v0
  45bd1c:	14400047 	bnez	v0,45be3c <process_packet+0x1ec>
  45bd20:	00000000 	nop
	    struct isakmp_hdr *hdr = (struct isakmp_hdr *)md->packet_pbs.cur;
  45bd24:	8fc20020 	lw	v0,32(s8)
  45bd28:	00000000 	nop
  45bd2c:	8c420040 	lw	v0,64(v0)
  45bd30:	00000000 	nop
  45bd34:	afc20034 	sw	v0,52(s8)
	    if ((hdr->isa_version >> ISA_MAJ_SHIFT) != ISAKMP_MAJOR_VERSION) {
  45bd38:	8fc20034 	lw	v0,52(s8)
  45bd3c:	00000000 	nop
  45bd40:	90420011 	lbu	v0,17(v0)
  45bd44:	00000000 	nop
  45bd48:	00021102 	srl	v0,v0,0x4
  45bd4c:	304300ff 	andi	v1,v0,0xff
  45bd50:	24020001 	li	v0,1
  45bd54:	10620019 	beq	v1,v0,45bdbc <process_packet+0x16c>
  45bd58:	00000000 	nop
		SEND_NOTIFICATION(INVALID_MAJOR_VERSION);
  45bd5c:	8fc2002c 	lw	v0,44(s8)
  45bd60:	00000000 	nop
  45bd64:	1040000b 	beqz	v0,45bd94 <process_packet+0x144>
  45bd68:	00000000 	nop
  45bd6c:	8fc4002c 	lw	a0,44(s8)
  45bd70:	8fc50030 	lw	a1,48(s8)
  45bd74:	24060005 	li	a2,5
  45bd78:	8f998744 	lw	t9,-30908(gp)
  45bd7c:	00000000 	nop
  45bd80:	0320f809 	jalr	t9
  45bd84:	00000000 	nop
  45bd88:	8fdc0018 	lw	gp,24(s8)
  45bd8c:	10000b6d 	b	45eb44 <process_packet+0x2ef4>
  45bd90:	00000000 	nop
  45bd94:	8fc40020 	lw	a0,32(s8)
  45bd98:	24050005 	li	a1,5
  45bd9c:	8f998908 	lw	t9,-30456(gp)
  45bda0:	00000000 	nop
  45bda4:	0320f809 	jalr	t9
  45bda8:	00000000 	nop
  45bdac:	8fdc0018 	lw	gp,24(s8)
  45bdb0:	00000000 	nop
		return;
  45bdb4:	10000b63 	b	45eb44 <process_packet+0x2ef4>
  45bdb8:	00000000 	nop
	    }
	    else if ((hdr->isa_version & ISA_MIN_MASK) != ISAKMP_MINOR_VERSION) {
  45bdbc:	8fc20034 	lw	v0,52(s8)
  45bdc0:	00000000 	nop
  45bdc4:	90420011 	lbu	v0,17(v0)
  45bdc8:	00000000 	nop
  45bdcc:	3042000f 	andi	v0,v0,0xf
  45bdd0:	304200ff 	andi	v0,v0,0xff
  45bdd4:	10400019 	beqz	v0,45be3c <process_packet+0x1ec>
  45bdd8:	00000000 	nop
		SEND_NOTIFICATION(INVALID_MINOR_VERSION);
  45bddc:	8fc2002c 	lw	v0,44(s8)
  45bde0:	00000000 	nop
  45bde4:	1040000b 	beqz	v0,45be14 <process_packet+0x1c4>
  45bde8:	00000000 	nop
  45bdec:	8fc4002c 	lw	a0,44(s8)
  45bdf0:	8fc50030 	lw	a1,48(s8)
  45bdf4:	24060006 	li	a2,6
  45bdf8:	8f998744 	lw	t9,-30908(gp)
  45bdfc:	00000000 	nop
  45be00:	0320f809 	jalr	t9
  45be04:	00000000 	nop
  45be08:	8fdc0018 	lw	gp,24(s8)
  45be0c:	10000b4d 	b	45eb44 <process_packet+0x2ef4>
  45be10:	00000000 	nop
  45be14:	8fc40020 	lw	a0,32(s8)
  45be18:	24050006 	li	a1,6
  45be1c:	8f998908 	lw	t9,-30456(gp)
  45be20:	00000000 	nop
  45be24:	0320f809 	jalr	t9
  45be28:	00000000 	nop
  45be2c:	8fdc0018 	lw	gp,24(s8)
  45be30:	00000000 	nop
		return;
  45be34:	10000b43 	b	45eb44 <process_packet+0x2ef4>
  45be38:	00000000 	nop
	    }
	}
	SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45be3c:	8fc2002c 	lw	v0,44(s8)
  45be40:	00000000 	nop
  45be44:	1040000b 	beqz	v0,45be74 <process_packet+0x224>
  45be48:	00000000 	nop
  45be4c:	8fc4002c 	lw	a0,44(s8)
  45be50:	8fc50030 	lw	a1,48(s8)
  45be54:	24060010 	li	a2,16
  45be58:	8f998744 	lw	t9,-30908(gp)
  45be5c:	00000000 	nop
  45be60:	0320f809 	jalr	t9
  45be64:	00000000 	nop
  45be68:	8fdc0018 	lw	gp,24(s8)
  45be6c:	10000b35 	b	45eb44 <process_packet+0x2ef4>
  45be70:	00000000 	nop
  45be74:	8fc40020 	lw	a0,32(s8)
  45be78:	24050010 	li	a1,16
  45be7c:	8f998908 	lw	t9,-30456(gp)
  45be80:	00000000 	nop
  45be84:	0320f809 	jalr	t9
  45be88:	00000000 	nop
  45be8c:	8fdc0018 	lw	gp,24(s8)
  45be90:	00000000 	nop
	return;
  45be94:	10000b2b 	b	45eb44 <process_packet+0x2ef4>
  45be98:	00000000 	nop
    }

    if (md->packet_pbs.roof != md->message_pbs.roof)
  45be9c:	8fc20020 	lw	v0,32(s8)
  45bea0:	00000000 	nop
  45bea4:	8c430044 	lw	v1,68(v0)
  45bea8:	8fc20020 	lw	v0,32(s8)
  45beac:	00000000 	nop
  45beb0:	8c420064 	lw	v0,100(v0)
  45beb4:	00000000 	nop
  45beb8:	10620030 	beq	v1,v0,45bf7c <process_packet+0x32c>
  45bebc:	00000000 	nop
    {
	plog("size (%u) differs from size specified in ISAKMP HDR (%u)"
  45bec0:	8fc20020 	lw	v0,32(s8)
  45bec4:	00000000 	nop
  45bec8:	24430030 	addiu	v1,v0,48
  45becc:	8fc20020 	lw	v0,32(s8)
  45bed0:	00000000 	nop
  45bed4:	24420030 	addiu	v0,v0,48
  45bed8:	8c630014 	lw	v1,20(v1)
  45bedc:	8c42000c 	lw	v0,12(v0)
  45bee0:	00000000 	nop
  45bee4:	00621023 	subu	v0,v1,v0
  45bee8:	8f84802c 	lw	a0,-32724(gp)
  45beec:	00000000 	nop
  45bef0:	248418ec 	addiu	a0,a0,6380
  45bef4:	00402821 	move	a1,v0
  45bef8:	8fc20020 	lw	v0,32(s8)
  45befc:	00000000 	nop
  45bf00:	8c460088 	lw	a2,136(v0)
  45bf04:	8f998abc 	lw	t9,-30020(gp)
  45bf08:	00000000 	nop
  45bf0c:	0320f809 	jalr	t9
  45bf10:	00000000 	nop
  45bf14:	8fdc0018 	lw	gp,24(s8)
  45bf18:	00000000 	nop
	    , (unsigned) pbs_room(&md->packet_pbs), md->hdr.isa_length);
	SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45bf1c:	8fc2002c 	lw	v0,44(s8)
  45bf20:	00000000 	nop
  45bf24:	1040000b 	beqz	v0,45bf54 <process_packet+0x304>
  45bf28:	00000000 	nop
  45bf2c:	8fc4002c 	lw	a0,44(s8)
  45bf30:	8fc50030 	lw	a1,48(s8)
  45bf34:	24060010 	li	a2,16
  45bf38:	8f998744 	lw	t9,-30908(gp)
  45bf3c:	00000000 	nop
  45bf40:	0320f809 	jalr	t9
  45bf44:	00000000 	nop
  45bf48:	8fdc0018 	lw	gp,24(s8)
  45bf4c:	10000afd 	b	45eb44 <process_packet+0x2ef4>
  45bf50:	00000000 	nop
  45bf54:	8fc40020 	lw	a0,32(s8)
  45bf58:	24050010 	li	a1,16
  45bf5c:	8f998908 	lw	t9,-30456(gp)
  45bf60:	00000000 	nop
  45bf64:	0320f809 	jalr	t9
  45bf68:	00000000 	nop
  45bf6c:	8fdc0018 	lw	gp,24(s8)
  45bf70:	00000000 	nop
	return;
  45bf74:	10000af3 	b	45eb44 <process_packet+0x2ef4>
  45bf78:	00000000 	nop
    }


     DBG(DBG_PARSING, DBG_log("The xchg type is %s (%d)"
  45bf7c:	8f8284f8 	lw	v0,-31496(gp)
  45bf80:	00000000 	nop
  45bf84:	8c420000 	lw	v0,0(v0)
  45bf88:	00000000 	nop
  45bf8c:	30420004 	andi	v0,v0,0x4
  45bf90:	1040001a 	beqz	v0,45bffc <process_packet+0x3ac>
  45bf94:	00000000 	nop
  45bf98:	8fc20020 	lw	v0,32(s8)
  45bf9c:	00000000 	nop
  45bfa0:	90420082 	lbu	v0,130(v0)
  45bfa4:	8f8480c4 	lw	a0,-32572(gp)
  45bfa8:	00402821 	move	a1,v0
  45bfac:	8f9987fc 	lw	t9,-30724(gp)
  45bfb0:	00000000 	nop
  45bfb4:	0320f809 	jalr	t9
  45bfb8:	00000000 	nop
  45bfbc:	8fdc0018 	lw	gp,24(s8)
  45bfc0:	00401821 	move	v1,v0
  45bfc4:	8fc20020 	lw	v0,32(s8)
  45bfc8:	00000000 	nop
  45bfcc:	90420082 	lbu	v0,130(v0)
  45bfd0:	8f84802c 	lw	a0,-32724(gp)
  45bfd4:	00000000 	nop
  45bfd8:	24841928 	addiu	a0,a0,6440
  45bfdc:	00602821 	move	a1,v1
  45bfe0:	00403021 	move	a2,v0
  45bfe4:	8f9983b8 	lw	t9,-31816(gp)
  45bfe8:	00000000 	nop
  45bfec:	0320f809 	jalr	t9
  45bff0:	00000000 	nop
  45bff4:	8fdc0018 	lw	gp,24(s8)
  45bff8:	00000000 	nop
	 , enum_show(&exchange_names, md->hdr.isa_xchg)
	 , md->hdr.isa_xchg));

    switch (md->hdr.isa_xchg)
  45bffc:	8fc20020 	lw	v0,32(s8)
  45c000:	00000000 	nop
  45c004:	90420082 	lbu	v0,130(v0)
  45c008:	00000000 	nop
  45c00c:	afc20060 	sw	v0,96(s8)
  45c010:	24020004 	li	v0,4
  45c014:	8fc30060 	lw	v1,96(s8)
  45c018:	00000000 	nop
  45c01c:	10620019 	beq	v1,v0,45c084 <process_packet+0x434>
  45c020:	00000000 	nop
  45c024:	8fc60060 	lw	a2,96(s8)
  45c028:	00000000 	nop
  45c02c:	28c20005 	slti	v0,a2,5
  45c030:	10400008 	beqz	v0,45c054 <process_packet+0x404>
  45c034:	00000000 	nop
  45c038:	24020002 	li	v0,2
  45c03c:	8fc70060 	lw	a3,96(s8)
  45c040:	00000000 	nop
  45c044:	10e2000f 	beq	a3,v0,45c084 <process_packet+0x434>
  45c048:	00000000 	nop
  45c04c:	1000033a 	b	45cd38 <process_packet+0x10e8>
  45c050:	00000000 	nop
  45c054:	24020005 	li	v0,5
  45c058:	8fc80060 	lw	t0,96(s8)
  45c05c:	00000000 	nop
  45c060:	110200f2 	beq	t0,v0,45c42c <process_packet+0x7dc>
  45c064:	00000000 	nop
  45c068:	24020020 	li	v0,32
  45c06c:	8fc90060 	lw	t1,96(s8)
  45c070:	00000000 	nop
  45c074:	112201ce 	beq	t1,v0,45c7b0 <process_packet+0xb60>
  45c078:	00000000 	nop
  45c07c:	1000032e 	b	45cd38 <process_packet+0x10e8>
  45c080:	00000000 	nop
    {
#ifdef NOTYET
    case ISAKMP_XCHG_NONE:
    case ISAKMP_XCHG_BASE:
#endif

    case ISAKMP_XCHG_AGGR:
    case ISAKMP_XCHG_IDPROT:	/* part of a Main Mode exchange */
	if (md->hdr.isa_msgid != 0)
  45c084:	8fc20020 	lw	v0,32(s8)
  45c088:	00000000 	nop
  45c08c:	8c420084 	lw	v0,132(v0)
  45c090:	00000000 	nop
  45c094:	10400025 	beqz	v0,45c12c <process_packet+0x4dc>
  45c098:	00000000 	nop
	{
	    plog("Message ID was 0x%08lx but should be zero in Phase 1",
  45c09c:	8f84802c 	lw	a0,-32724(gp)
  45c0a0:	00000000 	nop
  45c0a4:	24841944 	addiu	a0,a0,6468
  45c0a8:	8fc20020 	lw	v0,32(s8)
  45c0ac:	00000000 	nop
  45c0b0:	8c450084 	lw	a1,132(v0)
  45c0b4:	8f998abc 	lw	t9,-30020(gp)
  45c0b8:	00000000 	nop
  45c0bc:	0320f809 	jalr	t9
  45c0c0:	00000000 	nop
  45c0c4:	8fdc0018 	lw	gp,24(s8)
  45c0c8:	00000000 	nop
		(unsigned long) md->hdr.isa_msgid);
 	    SEND_NOTIFICATION(INVALID_MESSAGE_ID);
  45c0cc:	8fc2002c 	lw	v0,44(s8)
  45c0d0:	00000000 	nop
  45c0d4:	1040000b 	beqz	v0,45c104 <process_packet+0x4b4>
  45c0d8:	00000000 	nop
  45c0dc:	8fc4002c 	lw	a0,44(s8)
  45c0e0:	8fc50030 	lw	a1,48(s8)
  45c0e4:	24060009 	li	a2,9
  45c0e8:	8f998744 	lw	t9,-30908(gp)
  45c0ec:	00000000 	nop
  45c0f0:	0320f809 	jalr	t9
  45c0f4:	00000000 	nop
  45c0f8:	8fdc0018 	lw	gp,24(s8)
  45c0fc:	10000a91 	b	45eb44 <process_packet+0x2ef4>
  45c100:	00000000 	nop
  45c104:	8fc40020 	lw	a0,32(s8)
  45c108:	24050009 	li	a1,9
  45c10c:	8f998908 	lw	t9,-30456(gp)
  45c110:	00000000 	nop
  45c114:	0320f809 	jalr	t9
  45c118:	00000000 	nop
  45c11c:	8fdc0018 	lw	gp,24(s8)
  45c120:	00000000 	nop
	    return;
  45c124:	10000a87 	b	45eb44 <process_packet+0x2ef4>
  45c128:	00000000 	nop
	}

	if (is_zero_cookie(md->hdr.isa_icookie))
  45c12c:	8fc20020 	lw	v0,32(s8)
  45c130:	00000000 	nop
  45c134:	24420070 	addiu	v0,v0,112
  45c138:	00402021 	move	a0,v0
  45c13c:	24050008 	li	a1,8
  45c140:	8f99863c 	lw	t9,-31172(gp)
  45c144:	00000000 	nop
  45c148:	0320f809 	jalr	t9
  45c14c:	00000000 	nop
  45c150:	8fdc0018 	lw	gp,24(s8)
  45c154:	10400022 	beqz	v0,45c1e0 <process_packet+0x590>
  45c158:	00000000 	nop
	{
	    plog("Initiator Cookie must not be zero in Phase 1 message");
  45c15c:	8f84802c 	lw	a0,-32724(gp)
  45c160:	00000000 	nop
  45c164:	2484197c 	addiu	a0,a0,6524
  45c168:	8f998abc 	lw	t9,-30020(gp)
  45c16c:	00000000 	nop
  45c170:	0320f809 	jalr	t9
  45c174:	00000000 	nop
  45c178:	8fdc0018 	lw	gp,24(s8)
  45c17c:	00000000 	nop
	    SEND_NOTIFICATION(INVALID_COOKIE);
  45c180:	8fc2002c 	lw	v0,44(s8)
  45c184:	00000000 	nop
  45c188:	1040000b 	beqz	v0,45c1b8 <process_packet+0x568>
  45c18c:	00000000 	nop
  45c190:	8fc4002c 	lw	a0,44(s8)
  45c194:	8fc50030 	lw	a1,48(s8)
  45c198:	24060004 	li	a2,4
  45c19c:	8f998744 	lw	t9,-30908(gp)
  45c1a0:	00000000 	nop
  45c1a4:	0320f809 	jalr	t9
  45c1a8:	00000000 	nop
  45c1ac:	8fdc0018 	lw	gp,24(s8)
  45c1b0:	10000a64 	b	45eb44 <process_packet+0x2ef4>
  45c1b4:	00000000 	nop
  45c1b8:	8fc40020 	lw	a0,32(s8)
  45c1bc:	24050004 	li	a1,4
  45c1c0:	8f998908 	lw	t9,-30456(gp)
  45c1c4:	00000000 	nop
  45c1c8:	0320f809 	jalr	t9
  45c1cc:	00000000 	nop
  45c1d0:	8fdc0018 	lw	gp,24(s8)
  45c1d4:	00000000 	nop
	    return;
  45c1d8:	10000a5a 	b	45eb44 <process_packet+0x2ef4>
  45c1dc:	00000000 	nop
	}

	if (is_zero_cookie(md->hdr.isa_rcookie))
  45c1e0:	8fc20020 	lw	v0,32(s8)
  45c1e4:	00000000 	nop
  45c1e8:	24420078 	addiu	v0,v0,120
  45c1ec:	00402021 	move	a0,v0
  45c1f0:	24050008 	li	a1,8
  45c1f4:	8f99863c 	lw	t9,-31172(gp)
  45c1f8:	00000000 	nop
  45c1fc:	0320f809 	jalr	t9
  45c200:	00000000 	nop
  45c204:	8fdc0018 	lw	gp,24(s8)
  45c208:	1040003b 	beqz	v0,45c2f8 <process_packet+0x6a8>
  45c20c:	00000000 	nop
	{
	    /* initial message from initiator
	     * ??? what if this is a duplicate of another message?
	     */
	    if (md->hdr.isa_flags & ISAKMP_FLAG_ENCRYPTION)
  45c210:	8fc20020 	lw	v0,32(s8)
  45c214:	00000000 	nop
  45c218:	90420083 	lbu	v0,131(v0)
  45c21c:	00000000 	nop
  45c220:	30420001 	andi	v0,v0,0x1
  45c224:	304200ff 	andi	v0,v0,0xff
  45c228:	10400022 	beqz	v0,45c2b4 <process_packet+0x664>
  45c22c:	00000000 	nop
	    {
		plog("initial Phase 1 message is invalid:"
  45c230:	8f84802c 	lw	a0,-32724(gp)
  45c234:	00000000 	nop
  45c238:	248419b4 	addiu	a0,a0,6580
  45c23c:	8f998abc 	lw	t9,-30020(gp)
  45c240:	00000000 	nop
  45c244:	0320f809 	jalr	t9
  45c248:	00000000 	nop
  45c24c:	8fdc0018 	lw	gp,24(s8)
  45c250:	00000000 	nop
		    " its Encrypted Flag is on");
		SEND_NOTIFICATION(INVALID_FLAGS);
  45c254:	8fc2002c 	lw	v0,44(s8)
  45c258:	00000000 	nop
  45c25c:	1040000b 	beqz	v0,45c28c <process_packet+0x63c>
  45c260:	00000000 	nop
  45c264:	8fc4002c 	lw	a0,44(s8)
  45c268:	8fc50030 	lw	a1,48(s8)
  45c26c:	24060008 	li	a2,8
  45c270:	8f998744 	lw	t9,-30908(gp)
  45c274:	00000000 	nop
  45c278:	0320f809 	jalr	t9
  45c27c:	00000000 	nop
  45c280:	8fdc0018 	lw	gp,24(s8)
  45c284:	10000a2f 	b	45eb44 <process_packet+0x2ef4>
  45c288:	00000000 	nop
  45c28c:	8fc40020 	lw	a0,32(s8)
  45c290:	24050008 	li	a1,8
  45c294:	8f998908 	lw	t9,-30456(gp)
  45c298:	00000000 	nop
  45c29c:	0320f809 	jalr	t9
  45c2a0:	00000000 	nop
  45c2a4:	8fdc0018 	lw	gp,24(s8)
  45c2a8:	00000000 	nop
		return;
  45c2ac:	10000a25 	b	45eb44 <process_packet+0x2ef4>
  45c2b0:	00000000 	nop
	    }

	    /* don't build a state until the message looks tasty */
	    from_state = (md->hdr.isa_xchg == ISAKMP_XCHG_IDPROT
  45c2b4:	8fc20020 	lw	v0,32(s8)
  45c2b8:	00000000 	nop
  45c2bc:	90430082 	lbu	v1,130(v0)
  45c2c0:	24020002 	li	v0,2
  45c2c4:	14620005 	bne	v1,v0,45c2dc <process_packet+0x68c>
  45c2c8:	00000000 	nop
  45c2cc:	24020003 	li	v0,3
  45c2d0:	afc2005c 	sw	v0,92(s8)
  45c2d4:	10000003 	b	45c2e4 <process_packet+0x694>
  45c2d8:	00000000 	nop
  45c2dc:	2403000b 	li	v1,11
  45c2e0:	afc3005c 	sw	v1,92(s8)
  45c2e4:	8fc6005c 	lw	a2,92(s8)
  45c2e8:	00000000 	nop
  45c2ec:	afc60030 	sw	a2,48(s8)
  45c2f0:	100002be 	b	45cdec <process_packet+0x119c>
  45c2f4:	00000000 	nop
			    ? STATE_MAIN_R0 : STATE_AGGR_R0);
	}
	else
	{
	    /* not an initial message */

	    st = find_state(md->hdr.isa_icookie, md->hdr.isa_rcookie
  45c2f8:	8fc20020 	lw	v0,32(s8)
  45c2fc:	00000000 	nop
  45c300:	24440070 	addiu	a0,v0,112
  45c304:	8fc20020 	lw	v0,32(s8)
  45c308:	00000000 	nop
  45c30c:	24430078 	addiu	v1,v0,120
  45c310:	8fc20020 	lw	v0,32(s8)
  45c314:	00000000 	nop
  45c318:	24420010 	addiu	v0,v0,16
  45c31c:	00602821 	move	a1,v1
  45c320:	00403021 	move	a2,v0
  45c324:	8fc20020 	lw	v0,32(s8)
  45c328:	00000000 	nop
  45c32c:	8c470084 	lw	a3,132(v0)
  45c330:	8f9983c0 	lw	t9,-31808(gp)
  45c334:	00000000 	nop
  45c338:	0320f809 	jalr	t9
  45c33c:	00000000 	nop
  45c340:	8fdc0018 	lw	gp,24(s8)
  45c344:	afc2002c 	sw	v0,44(s8)
		, &md->sender, md->hdr.isa_msgid);

	    if (st == NULL)
  45c348:	8fc2002c 	lw	v0,44(s8)
  45c34c:	00000000 	nop
  45c350:	14400022 	bnez	v0,45c3dc <process_packet+0x78c>
  45c354:	00000000 	nop
	    {
		/* perhaps this is a first message from the responder
		 * and contains a responder cookie that we've not yet seen.
		 */
		st = find_state(md->hdr.isa_icookie, zero_cookie
  45c358:	8fc20020 	lw	v0,32(s8)
  45c35c:	00000000 	nop
  45c360:	24430070 	addiu	v1,v0,112
  45c364:	8fc20020 	lw	v0,32(s8)
  45c368:	00000000 	nop
  45c36c:	24420010 	addiu	v0,v0,16
  45c370:	00602021 	move	a0,v1
  45c374:	8f858b4c 	lw	a1,-29876(gp)
  45c378:	00403021 	move	a2,v0
  45c37c:	8fc20020 	lw	v0,32(s8)
  45c380:	00000000 	nop
  45c384:	8c470084 	lw	a3,132(v0)
  45c388:	8f9983c0 	lw	t9,-31808(gp)
  45c38c:	00000000 	nop
  45c390:	0320f809 	jalr	t9
  45c394:	00000000 	nop
  45c398:	8fdc0018 	lw	gp,24(s8)
  45c39c:	afc2002c 	sw	v0,44(s8)
		    , &md->sender, md->hdr.isa_msgid);

		if (st == NULL)
  45c3a0:	8fc2002c 	lw	v0,44(s8)
  45c3a4:	00000000 	nop
  45c3a8:	1440000c 	bnez	v0,45c3dc <process_packet+0x78c>
  45c3ac:	00000000 	nop
		{
		    plog("Phase 1 message is part of an unknown exchange");
  45c3b0:	8f84802c 	lw	a0,-32724(gp)
  45c3b4:	00000000 	nop
  45c3b8:	248419f4 	addiu	a0,a0,6644
  45c3bc:	8f998abc 	lw	t9,-30020(gp)
  45c3c0:	00000000 	nop
  45c3c4:	0320f809 	jalr	t9
  45c3c8:	00000000 	nop
  45c3cc:	8fdc0018 	lw	gp,24(s8)
  45c3d0:	00000000 	nop
		    /* XXX Could send notification back */
		    return;
  45c3d4:	100009db 	b	45eb44 <process_packet+0x2ef4>
  45c3d8:	00000000 	nop
		}
	    }
	    set_cur_state(st);
  45c3dc:	8fc2002c 	lw	v0,44(s8)
  45c3e0:	8f8187f8 	lw	at,-30728(gp)
  45c3e4:	00000000 	nop
  45c3e8:	ac220000 	sw	v0,0(at)
  45c3ec:	8fc2002c 	lw	v0,44(s8)
  45c3f0:	00000000 	nop
  45c3f4:	8c44000c 	lw	a0,12(v0)
  45c3f8:	8f998be4 	lw	t9,-29724(gp)
  45c3fc:	00000000 	nop
  45c400:	0320f809 	jalr	t9
  45c404:	00000000 	nop
  45c408:	8fdc0018 	lw	gp,24(s8)
  45c40c:	00000000 	nop
	    from_state = st->st_state;
  45c410:	8fc2002c 	lw	v0,44(s8)
  45c414:	00000000 	nop
  45c418:	8c42014c 	lw	v0,332(v0)
  45c41c:	00000000 	nop
  45c420:	afc20030 	sw	v0,48(s8)
	}
	break;
  45c424:	10000271 	b	45cdec <process_packet+0x119c>
  45c428:	00000000 	nop

#ifdef NOTYET
    case ISAKMP_XCHG_AO:
#endif

    case ISAKMP_XCHG_INFO:	/* an informational exchange */
	st = find_state(md->hdr.isa_icookie, md->hdr.isa_rcookie
  45c42c:	8fc20020 	lw	v0,32(s8)
  45c430:	00000000 	nop
  45c434:	24440070 	addiu	a0,v0,112
  45c438:	8fc20020 	lw	v0,32(s8)
  45c43c:	00000000 	nop
  45c440:	24430078 	addiu	v1,v0,120
  45c444:	8fc20020 	lw	v0,32(s8)
  45c448:	00000000 	nop
  45c44c:	24420010 	addiu	v0,v0,16
  45c450:	00602821 	move	a1,v1
  45c454:	00403021 	move	a2,v0
  45c458:	00003821 	move	a3,zero
  45c45c:	8f9983c0 	lw	t9,-31808(gp)
  45c460:	00000000 	nop
  45c464:	0320f809 	jalr	t9
  45c468:	00000000 	nop
  45c46c:	8fdc0018 	lw	gp,24(s8)
  45c470:	afc2002c 	sw	v0,44(s8)
	    , &md->sender, 0);

	if (st != NULL)
  45c474:	8fc2002c 	lw	v0,44(s8)
  45c478:	00000000 	nop
  45c47c:	1040000e 	beqz	v0,45c4b8 <process_packet+0x868>
  45c480:	00000000 	nop
	    set_cur_state(st);
  45c484:	8fc2002c 	lw	v0,44(s8)
  45c488:	8f8187f8 	lw	at,-30728(gp)
  45c48c:	00000000 	nop
  45c490:	ac220000 	sw	v0,0(at)
  45c494:	8fc2002c 	lw	v0,44(s8)
  45c498:	00000000 	nop
  45c49c:	8c44000c 	lw	a0,12(v0)
  45c4a0:	8f998be4 	lw	t9,-29724(gp)
  45c4a4:	00000000 	nop
  45c4a8:	0320f809 	jalr	t9
  45c4ac:	00000000 	nop
  45c4b0:	8fdc0018 	lw	gp,24(s8)
  45c4b4:	00000000 	nop

	if (md->hdr.isa_flags & ISAKMP_FLAG_ENCRYPTION)
  45c4b8:	8fc20020 	lw	v0,32(s8)
  45c4bc:	00000000 	nop
  45c4c0:	90420083 	lbu	v0,131(v0)
  45c4c4:	00000000 	nop
  45c4c8:	30420001 	andi	v0,v0,0x1
  45c4cc:	304200ff 	andi	v0,v0,0xff
  45c4d0:	1040007d 	beqz	v0,45c6c8 <process_packet+0xa78>
  45c4d4:	00000000 	nop
	{
	    if (st == NULL)
  45c4d8:	8fc2002c 	lw	v0,44(s8)
  45c4dc:	00000000 	nop
  45c4e0:	1440000c 	bnez	v0,45c514 <process_packet+0x8c4>
  45c4e4:	00000000 	nop
	    {
		plog("Informational Exchange is for an unknown (expired?) SA");
  45c4e8:	8f84802c 	lw	a0,-32724(gp)
  45c4ec:	00000000 	nop
  45c4f0:	24841a24 	addiu	a0,a0,6692
  45c4f4:	8f998abc 	lw	t9,-30020(gp)
  45c4f8:	00000000 	nop
  45c4fc:	0320f809 	jalr	t9
  45c500:	00000000 	nop
  45c504:	8fdc0018 	lw	gp,24(s8)
  45c508:	00000000 	nop
		/* XXX Could send notification back */
		return;
  45c50c:	1000098d 	b	45eb44 <process_packet+0x2ef4>
  45c510:	00000000 	nop
	    }

	    if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  45c514:	8fc2002c 	lw	v0,44(s8)
  45c518:	00000000 	nop
  45c51c:	8c43014c 	lw	v1,332(v0)
  45c520:	24020009 	li	v0,9
  45c524:	1062002b 	beq	v1,v0,45c5d4 <process_packet+0x984>
  45c528:	00000000 	nop
  45c52c:	8fc2002c 	lw	v0,44(s8)
  45c530:	00000000 	nop
  45c534:	8c43014c 	lw	v1,332(v0)
  45c538:	2402000a 	li	v0,10
  45c53c:	10620025 	beq	v1,v0,45c5d4 <process_packet+0x984>
  45c540:	00000000 	nop
  45c544:	8fc2002c 	lw	v0,44(s8)
  45c548:	00000000 	nop
  45c54c:	8c43014c 	lw	v1,332(v0)
  45c550:	2402000e 	li	v0,14
  45c554:	1062001f 	beq	v1,v0,45c5d4 <process_packet+0x984>
  45c558:	00000000 	nop
  45c55c:	8fc2002c 	lw	v0,44(s8)
  45c560:	00000000 	nop
  45c564:	8c43014c 	lw	v1,332(v0)
  45c568:	2402000f 	li	v0,15
  45c56c:	10620019 	beq	v1,v0,45c5d4 <process_packet+0x984>
  45c570:	00000000 	nop
  45c574:	8fc2002c 	lw	v0,44(s8)
  45c578:	00000000 	nop
  45c57c:	8c43014c 	lw	v1,332(v0)
  45c580:	24020010 	li	v0,16
  45c584:	10620013 	beq	v1,v0,45c5d4 <process_packet+0x984>
  45c588:	00000000 	nop
  45c58c:	8fc2002c 	lw	v0,44(s8)
  45c590:	00000000 	nop
  45c594:	8c43014c 	lw	v1,332(v0)
  45c598:	24020011 	li	v0,17
  45c59c:	1062000d 	beq	v1,v0,45c5d4 <process_packet+0x984>
  45c5a0:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "encrypted Informational Exchange message is invalid"
  45c5a4:	24040003 	li	a0,3
  45c5a8:	8f85802c 	lw	a1,-32724(gp)
  45c5ac:	00000000 	nop
  45c5b0:	24a51a5c 	addiu	a1,a1,6748
  45c5b4:	8f998c48 	lw	t9,-29624(gp)
  45c5b8:	00000000 	nop
  45c5bc:	0320f809 	jalr	t9
  45c5c0:	00000000 	nop
  45c5c4:	8fdc0018 	lw	gp,24(s8)
  45c5c8:	00000000 	nop
		    " because it is for incomplete ISAKMP SA");
		/* XXX Could send notification back */
		return;
  45c5cc:	1000095d 	b	45eb44 <process_packet+0x2ef4>
  45c5d0:	00000000 	nop
	    }

	    if (md->hdr.isa_msgid == 0)
  45c5d4:	8fc20020 	lw	v0,32(s8)
  45c5d8:	00000000 	nop
  45c5dc:	8c420084 	lw	v0,132(v0)
  45c5e0:	00000000 	nop
  45c5e4:	1440000d 	bnez	v0,45c61c <process_packet+0x9cc>
  45c5e8:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "Informational Exchange message is invalid because"
  45c5ec:	24040003 	li	a0,3
  45c5f0:	8f85802c 	lw	a1,-32724(gp)
  45c5f4:	00000000 	nop
  45c5f8:	24a51ab8 	addiu	a1,a1,6840
  45c5fc:	8f998c48 	lw	t9,-29624(gp)
  45c600:	00000000 	nop
  45c604:	0320f809 	jalr	t9
  45c608:	00000000 	nop
  45c60c:	8fdc0018 	lw	gp,24(s8)
  45c610:	00000000 	nop
		    " it has a Message ID of 0");
		/* XXX Could send notification back */
		return;
  45c614:	1000094b 	b	45eb44 <process_packet+0x2ef4>
  45c618:	00000000 	nop
	    }

	    if (!reserve_msgid(st, md->hdr.isa_msgid))
  45c61c:	8fc4002c 	lw	a0,44(s8)
  45c620:	8fc20020 	lw	v0,32(s8)
  45c624:	00000000 	nop
  45c628:	8c450084 	lw	a1,132(v0)
  45c62c:	8f9982e0 	lw	t9,-32032(gp)
  45c630:	00000000 	nop
  45c634:	0320f809 	jalr	t9
  45c638:	00000000 	nop
  45c63c:	8fdc0018 	lw	gp,24(s8)
  45c640:	14400010 	bnez	v0,45c684 <process_packet+0xa34>
  45c644:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "Informational Exchange message is invalid because"
  45c648:	24040003 	li	a0,3
  45c64c:	8f85802c 	lw	a1,-32724(gp)
  45c650:	00000000 	nop
  45c654:	24a51b04 	addiu	a1,a1,6916
  45c658:	8fc20020 	lw	v0,32(s8)
  45c65c:	00000000 	nop
  45c660:	8c460084 	lw	a2,132(v0)
  45c664:	8f998c48 	lw	t9,-29624(gp)
  45c668:	00000000 	nop
  45c66c:	0320f809 	jalr	t9
  45c670:	00000000 	nop
  45c674:	8fdc0018 	lw	gp,24(s8)
  45c678:	00000000 	nop
		    " it has a previously used Message ID (0x%08lx)"
		    , (unsigned long)md->hdr.isa_msgid);
		/* XXX Could send notification back */
		return;
  45c67c:	10000931 	b	45eb44 <process_packet+0x2ef4>
  45c680:	00000000 	nop
	    }

	    init_phase2_iv(st, &md->hdr.isa_msgid);
  45c684:	8fc20020 	lw	v0,32(s8)
  45c688:	00000000 	nop
  45c68c:	24420084 	addiu	v0,v0,132
  45c690:	8fc4002c 	lw	a0,44(s8)
  45c694:	00402821 	move	a1,v0
  45c698:	8f998bc8 	lw	t9,-29752(gp)
  45c69c:	00000000 	nop
  45c6a0:	0320f809 	jalr	t9
  45c6a4:	00000000 	nop
  45c6a8:	8fdc0018 	lw	gp,24(s8)
  45c6ac:	00000000 	nop
	    new_iv_set = TRUE;
  45c6b0:	24020001 	li	v0,1
  45c6b4:	afc20028 	sw	v0,40(s8)

	    from_state = STATE_INFO_PROTECTED;
  45c6b8:	2402001b 	li	v0,27
  45c6bc:	afc20030 	sw	v0,48(s8)
  45c6c0:	100001ca 	b	45cdec <process_packet+0x119c>
  45c6c4:	00000000 	nop
	}
	else
	{
	    if (st != NULL && IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  45c6c8:	8fc2002c 	lw	v0,44(s8)
  45c6cc:	00000000 	nop
  45c6d0:	10400033 	beqz	v0,45c7a0 <process_packet+0xb50>
  45c6d4:	00000000 	nop
  45c6d8:	8fc2002c 	lw	v0,44(s8)
  45c6dc:	00000000 	nop
  45c6e0:	8c43014c 	lw	v1,332(v0)
  45c6e4:	24020009 	li	v0,9
  45c6e8:	10620021 	beq	v1,v0,45c770 <process_packet+0xb20>
  45c6ec:	00000000 	nop
  45c6f0:	8fc2002c 	lw	v0,44(s8)
  45c6f4:	00000000 	nop
  45c6f8:	8c43014c 	lw	v1,332(v0)
  45c6fc:	2402000a 	li	v0,10
  45c700:	1062001b 	beq	v1,v0,45c770 <process_packet+0xb20>
  45c704:	00000000 	nop
  45c708:	8fc2002c 	lw	v0,44(s8)
  45c70c:	00000000 	nop
  45c710:	8c43014c 	lw	v1,332(v0)
  45c714:	2402000e 	li	v0,14
  45c718:	10620015 	beq	v1,v0,45c770 <process_packet+0xb20>
  45c71c:	00000000 	nop
  45c720:	8fc2002c 	lw	v0,44(s8)
  45c724:	00000000 	nop
  45c728:	8c43014c 	lw	v1,332(v0)
  45c72c:	2402000f 	li	v0,15
  45c730:	1062000f 	beq	v1,v0,45c770 <process_packet+0xb20>
  45c734:	00000000 	nop
  45c738:	8fc2002c 	lw	v0,44(s8)
  45c73c:	00000000 	nop
  45c740:	8c43014c 	lw	v1,332(v0)
  45c744:	24020010 	li	v0,16
  45c748:	10620009 	beq	v1,v0,45c770 <process_packet+0xb20>
  45c74c:	00000000 	nop
  45c750:	8fc2002c 	lw	v0,44(s8)
  45c754:	00000000 	nop
  45c758:	8c43014c 	lw	v1,332(v0)
  45c75c:	24020011 	li	v0,17
  45c760:	10620003 	beq	v1,v0,45c770 <process_packet+0xb20>
  45c764:	00000000 	nop
  45c768:	1000000d 	b	45c7a0 <process_packet+0xb50>
  45c76c:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "Informational Exchange message for"
  45c770:	24040003 	li	a0,3
  45c774:	8f85802c 	lw	a1,-32724(gp)
  45c778:	00000000 	nop
  45c77c:	24a51b64 	addiu	a1,a1,7012
  45c780:	8f998c48 	lw	t9,-29624(gp)
  45c784:	00000000 	nop
  45c788:	0320f809 	jalr	t9
  45c78c:	00000000 	nop
  45c790:	8fdc0018 	lw	gp,24(s8)
  45c794:	00000000 	nop
		    " an established ISAKMP SA must be encrypted");
		/* XXX Could send notification back */
		return;
  45c798:	100008ea 	b	45eb44 <process_packet+0x2ef4>
  45c79c:	00000000 	nop
	    }
	    from_state = STATE_INFO;
  45c7a0:	2402001a 	li	v0,26
  45c7a4:	afc20030 	sw	v0,48(s8)
	}
	break;
  45c7a8:	10000190 	b	45cdec <process_packet+0x119c>
  45c7ac:	00000000 	nop

    case ISAKMP_XCHG_QUICK:	/* part of a Quick Mode exchange */
	if (is_zero_cookie(md->hdr.isa_icookie))
  45c7b0:	8fc20020 	lw	v0,32(s8)
  45c7b4:	00000000 	nop
  45c7b8:	24420070 	addiu	v0,v0,112
  45c7bc:	00402021 	move	a0,v0
  45c7c0:	24050008 	li	a1,8
  45c7c4:	8f99863c 	lw	t9,-31172(gp)
  45c7c8:	00000000 	nop
  45c7cc:	0320f809 	jalr	t9
  45c7d0:	00000000 	nop
  45c7d4:	8fdc0018 	lw	gp,24(s8)
  45c7d8:	10400022 	beqz	v0,45c864 <process_packet+0xc14>
  45c7dc:	00000000 	nop
	{
	    plog("Quick Mode message is invalid because"
  45c7e0:	8f84802c 	lw	a0,-32724(gp)
  45c7e4:	00000000 	nop
  45c7e8:	24841bb4 	addiu	a0,a0,7092
  45c7ec:	8f998abc 	lw	t9,-30020(gp)
  45c7f0:	00000000 	nop
  45c7f4:	0320f809 	jalr	t9
  45c7f8:	00000000 	nop
  45c7fc:	8fdc0018 	lw	gp,24(s8)
  45c800:	00000000 	nop
		" it has an Initiator Cookie of 0");
	    SEND_NOTIFICATION(INVALID_COOKIE);
  45c804:	8fc2002c 	lw	v0,44(s8)
  45c808:	00000000 	nop
  45c80c:	1040000b 	beqz	v0,45c83c <process_packet+0xbec>
  45c810:	00000000 	nop
  45c814:	8fc4002c 	lw	a0,44(s8)
  45c818:	8fc50030 	lw	a1,48(s8)
  45c81c:	24060004 	li	a2,4
  45c820:	8f998744 	lw	t9,-30908(gp)
  45c824:	00000000 	nop
  45c828:	0320f809 	jalr	t9
  45c82c:	00000000 	nop
  45c830:	8fdc0018 	lw	gp,24(s8)
  45c834:	100008c3 	b	45eb44 <process_packet+0x2ef4>
  45c838:	00000000 	nop
  45c83c:	8fc40020 	lw	a0,32(s8)
  45c840:	24050004 	li	a1,4
  45c844:	8f998908 	lw	t9,-30456(gp)
  45c848:	00000000 	nop
  45c84c:	0320f809 	jalr	t9
  45c850:	00000000 	nop
  45c854:	8fdc0018 	lw	gp,24(s8)
  45c858:	00000000 	nop
	    return;
  45c85c:	100008b9 	b	45eb44 <process_packet+0x2ef4>
  45c860:	00000000 	nop
	}

	if (is_zero_cookie(md->hdr.isa_rcookie))
  45c864:	8fc20020 	lw	v0,32(s8)
  45c868:	00000000 	nop
  45c86c:	24420078 	addiu	v0,v0,120
  45c870:	00402021 	move	a0,v0
  45c874:	24050008 	li	a1,8
  45c878:	8f99863c 	lw	t9,-31172(gp)
  45c87c:	00000000 	nop
  45c880:	0320f809 	jalr	t9
  45c884:	00000000 	nop
  45c888:	8fdc0018 	lw	gp,24(s8)
  45c88c:	10400022 	beqz	v0,45c918 <process_packet+0xcc8>
  45c890:	00000000 	nop
	{
	    plog("Quick Mode message is invalid because"
  45c894:	8f84802c 	lw	a0,-32724(gp)
  45c898:	00000000 	nop
  45c89c:	24841bfc 	addiu	a0,a0,7164
  45c8a0:	8f998abc 	lw	t9,-30020(gp)
  45c8a4:	00000000 	nop
  45c8a8:	0320f809 	jalr	t9
  45c8ac:	00000000 	nop
  45c8b0:	8fdc0018 	lw	gp,24(s8)
  45c8b4:	00000000 	nop
		" it has a Responder Cookie of 0");
	    SEND_NOTIFICATION(INVALID_COOKIE);
  45c8b8:	8fc2002c 	lw	v0,44(s8)
  45c8bc:	00000000 	nop
  45c8c0:	1040000b 	beqz	v0,45c8f0 <process_packet+0xca0>
  45c8c4:	00000000 	nop
  45c8c8:	8fc4002c 	lw	a0,44(s8)
  45c8cc:	8fc50030 	lw	a1,48(s8)
  45c8d0:	24060004 	li	a2,4
  45c8d4:	8f998744 	lw	t9,-30908(gp)
  45c8d8:	00000000 	nop
  45c8dc:	0320f809 	jalr	t9
  45c8e0:	00000000 	nop
  45c8e4:	8fdc0018 	lw	gp,24(s8)
  45c8e8:	10000896 	b	45eb44 <process_packet+0x2ef4>
  45c8ec:	00000000 	nop
  45c8f0:	8fc40020 	lw	a0,32(s8)
  45c8f4:	24050004 	li	a1,4
  45c8f8:	8f998908 	lw	t9,-30456(gp)
  45c8fc:	00000000 	nop
  45c900:	0320f809 	jalr	t9
  45c904:	00000000 	nop
  45c908:	8fdc0018 	lw	gp,24(s8)
  45c90c:	00000000 	nop
	    return;
  45c910:	1000088c 	b	45eb44 <process_packet+0x2ef4>
  45c914:	00000000 	nop
	}

	if (md->hdr.isa_msgid == 0)
  45c918:	8fc20020 	lw	v0,32(s8)
  45c91c:	00000000 	nop
  45c920:	8c420084 	lw	v0,132(v0)
  45c924:	00000000 	nop
  45c928:	14400022 	bnez	v0,45c9b4 <process_packet+0xd64>
  45c92c:	00000000 	nop
	{
	    plog("Quick Mode message is invalid because"
  45c930:	8f84802c 	lw	a0,-32724(gp)
  45c934:	00000000 	nop
  45c938:	24841c44 	addiu	a0,a0,7236
  45c93c:	8f998abc 	lw	t9,-30020(gp)
  45c940:	00000000 	nop
  45c944:	0320f809 	jalr	t9
  45c948:	00000000 	nop
  45c94c:	8fdc0018 	lw	gp,24(s8)
  45c950:	00000000 	nop
		" it has a Message ID of 0");
	    SEND_NOTIFICATION(INVALID_MESSAGE_ID);
  45c954:	8fc2002c 	lw	v0,44(s8)
  45c958:	00000000 	nop
  45c95c:	1040000b 	beqz	v0,45c98c <process_packet+0xd3c>
  45c960:	00000000 	nop
  45c964:	8fc4002c 	lw	a0,44(s8)
  45c968:	8fc50030 	lw	a1,48(s8)
  45c96c:	24060009 	li	a2,9
  45c970:	8f998744 	lw	t9,-30908(gp)
  45c974:	00000000 	nop
  45c978:	0320f809 	jalr	t9
  45c97c:	00000000 	nop
  45c980:	8fdc0018 	lw	gp,24(s8)
  45c984:	1000086f 	b	45eb44 <process_packet+0x2ef4>
  45c988:	00000000 	nop
  45c98c:	8fc40020 	lw	a0,32(s8)
  45c990:	24050009 	li	a1,9
  45c994:	8f998908 	lw	t9,-30456(gp)
  45c998:	00000000 	nop
  45c99c:	0320f809 	jalr	t9
  45c9a0:	00000000 	nop
  45c9a4:	8fdc0018 	lw	gp,24(s8)
  45c9a8:	00000000 	nop
	    return;
  45c9ac:	10000865 	b	45eb44 <process_packet+0x2ef4>
  45c9b0:	00000000 	nop
	}

	st = find_state(md->hdr.isa_icookie, md->hdr.isa_rcookie
  45c9b4:	8fc20020 	lw	v0,32(s8)
  45c9b8:	00000000 	nop
  45c9bc:	24440070 	addiu	a0,v0,112
  45c9c0:	8fc20020 	lw	v0,32(s8)
  45c9c4:	00000000 	nop
  45c9c8:	24430078 	addiu	v1,v0,120
  45c9cc:	8fc20020 	lw	v0,32(s8)
  45c9d0:	00000000 	nop
  45c9d4:	24420010 	addiu	v0,v0,16
  45c9d8:	00602821 	move	a1,v1
  45c9dc:	00403021 	move	a2,v0
  45c9e0:	8fc20020 	lw	v0,32(s8)
  45c9e4:	00000000 	nop
  45c9e8:	8c470084 	lw	a3,132(v0)
  45c9ec:	8f9983c0 	lw	t9,-31808(gp)
  45c9f0:	00000000 	nop
  45c9f4:	0320f809 	jalr	t9
  45c9f8:	00000000 	nop
  45c9fc:	8fdc0018 	lw	gp,24(s8)
  45ca00:	afc2002c 	sw	v0,44(s8)
	    , &md->sender, md->hdr.isa_msgid);

	if (st == NULL)
  45ca04:	8fc2002c 	lw	v0,44(s8)
  45ca08:	00000000 	nop
  45ca0c:	144000b6 	bnez	v0,45cce8 <process_packet+0x1098>
  45ca10:	00000000 	nop
	{
	    /* No appropriate Quick Mode state.
	     * See if we have a Main Mode state.
	     * ??? what if this is a duplicate of another message?
	     */
	    st = find_state(md->hdr.isa_icookie, md->hdr.isa_rcookie
  45ca14:	8fc20020 	lw	v0,32(s8)
  45ca18:	00000000 	nop
  45ca1c:	24440070 	addiu	a0,v0,112
  45ca20:	8fc20020 	lw	v0,32(s8)
  45ca24:	00000000 	nop
  45ca28:	24430078 	addiu	v1,v0,120
  45ca2c:	8fc20020 	lw	v0,32(s8)
  45ca30:	00000000 	nop
  45ca34:	24420010 	addiu	v0,v0,16
  45ca38:	00602821 	move	a1,v1
  45ca3c:	00403021 	move	a2,v0
  45ca40:	00003821 	move	a3,zero
  45ca44:	8f9983c0 	lw	t9,-31808(gp)
  45ca48:	00000000 	nop
  45ca4c:	0320f809 	jalr	t9
  45ca50:	00000000 	nop
  45ca54:	8fdc0018 	lw	gp,24(s8)
  45ca58:	afc2002c 	sw	v0,44(s8)
		, &md->sender, 0);

	    if (st == NULL)
  45ca5c:	8fc2002c 	lw	v0,44(s8)
  45ca60:	00000000 	nop
  45ca64:	1440000c 	bnez	v0,45ca98 <process_packet+0xe48>
  45ca68:	00000000 	nop
	    {
		plog("Quick Mode message is for a non-existent (expired?)"
  45ca6c:	8f84802c 	lw	a0,-32724(gp)
  45ca70:	00000000 	nop
  45ca74:	24841c84 	addiu	a0,a0,7300
  45ca78:	8f998abc 	lw	t9,-30020(gp)
  45ca7c:	00000000 	nop
  45ca80:	0320f809 	jalr	t9
  45ca84:	00000000 	nop
  45ca88:	8fdc0018 	lw	gp,24(s8)
  45ca8c:	00000000 	nop
		    " ISAKMP SA");
		/* XXX Could send notification back */
		return;
  45ca90:	1000082c 	b	45eb44 <process_packet+0x2ef4>
  45ca94:	00000000 	nop
	    }
#ifdef XAUTH
	    if(st->st_oakley.xauth != 0)
	    {
		plog("Cannot do Quick Mode until XAUTH done.");
		return;
	    }
#endif
#ifdef MODECFG

	    if(st->st_state == STATE_MODE_CFG_R2)   /* Have we just given an IP address to peer? */
	    {
		st->st_state = STATE_MAIN_R3;	    /* ISAKMP is up... */
	    }
#endif
	    set_cur_state(st);
  45ca98:	8fc2002c 	lw	v0,44(s8)
  45ca9c:	8f8187f8 	lw	at,-30728(gp)
  45caa0:	00000000 	nop
  45caa4:	ac220000 	sw	v0,0(at)
  45caa8:	8fc2002c 	lw	v0,44(s8)
  45caac:	00000000 	nop
  45cab0:	8c44000c 	lw	a0,12(v0)
  45cab4:	8f998be4 	lw	t9,-29724(gp)
  45cab8:	00000000 	nop
  45cabc:	0320f809 	jalr	t9
  45cac0:	00000000 	nop
  45cac4:	8fdc0018 	lw	gp,24(s8)
  45cac8:	00000000 	nop

	    if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  45cacc:	8fc2002c 	lw	v0,44(s8)
  45cad0:	00000000 	nop
  45cad4:	8c43014c 	lw	v1,332(v0)
  45cad8:	24020009 	li	v0,9
  45cadc:	10620041 	beq	v1,v0,45cbe4 <process_packet+0xf94>
  45cae0:	00000000 	nop
  45cae4:	8fc2002c 	lw	v0,44(s8)
  45cae8:	00000000 	nop
  45caec:	8c43014c 	lw	v1,332(v0)
  45caf0:	2402000a 	li	v0,10
  45caf4:	1062003b 	beq	v1,v0,45cbe4 <process_packet+0xf94>
  45caf8:	00000000 	nop
  45cafc:	8fc2002c 	lw	v0,44(s8)
  45cb00:	00000000 	nop
  45cb04:	8c43014c 	lw	v1,332(v0)
  45cb08:	2402000e 	li	v0,14
  45cb0c:	10620035 	beq	v1,v0,45cbe4 <process_packet+0xf94>
  45cb10:	00000000 	nop
  45cb14:	8fc2002c 	lw	v0,44(s8)
  45cb18:	00000000 	nop
  45cb1c:	8c43014c 	lw	v1,332(v0)
  45cb20:	2402000f 	li	v0,15
  45cb24:	1062002f 	beq	v1,v0,45cbe4 <process_packet+0xf94>
  45cb28:	00000000 	nop
  45cb2c:	8fc2002c 	lw	v0,44(s8)
  45cb30:	00000000 	nop
  45cb34:	8c43014c 	lw	v1,332(v0)
  45cb38:	24020010 	li	v0,16
  45cb3c:	10620029 	beq	v1,v0,45cbe4 <process_packet+0xf94>
  45cb40:	00000000 	nop
  45cb44:	8fc2002c 	lw	v0,44(s8)
  45cb48:	00000000 	nop
  45cb4c:	8c43014c 	lw	v1,332(v0)
  45cb50:	24020011 	li	v0,17
  45cb54:	10620023 	beq	v1,v0,45cbe4 <process_packet+0xf94>
  45cb58:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "Quick Mode message is unacceptable because"
  45cb5c:	24040003 	li	a0,3
  45cb60:	8f85802c 	lw	a1,-32724(gp)
  45cb64:	00000000 	nop
  45cb68:	24a51cc4 	addiu	a1,a1,7364
  45cb6c:	8f998c48 	lw	t9,-29624(gp)
  45cb70:	00000000 	nop
  45cb74:	0320f809 	jalr	t9
  45cb78:	00000000 	nop
  45cb7c:	8fdc0018 	lw	gp,24(s8)
  45cb80:	00000000 	nop
		    " it is for an incomplete ISAKMP SA");
		SEND_NOTIFICATION(PAYLOAD_MALFORMED /* XXX ? */);
  45cb84:	8fc2002c 	lw	v0,44(s8)
  45cb88:	00000000 	nop
  45cb8c:	1040000b 	beqz	v0,45cbbc <process_packet+0xf6c>
  45cb90:	00000000 	nop
  45cb94:	8fc4002c 	lw	a0,44(s8)
  45cb98:	8fc50030 	lw	a1,48(s8)
  45cb9c:	24060010 	li	a2,16
  45cba0:	8f998744 	lw	t9,-30908(gp)
  45cba4:	00000000 	nop
  45cba8:	0320f809 	jalr	t9
  45cbac:	00000000 	nop
  45cbb0:	8fdc0018 	lw	gp,24(s8)
  45cbb4:	100007e3 	b	45eb44 <process_packet+0x2ef4>
  45cbb8:	00000000 	nop
  45cbbc:	8fc40020 	lw	a0,32(s8)
  45cbc0:	24050010 	li	a1,16
  45cbc4:	8f998908 	lw	t9,-30456(gp)
  45cbc8:	00000000 	nop
  45cbcc:	0320f809 	jalr	t9
  45cbd0:	00000000 	nop
  45cbd4:	8fdc0018 	lw	gp,24(s8)
  45cbd8:	00000000 	nop
		return;
  45cbdc:	100007d9 	b	45eb44 <process_packet+0x2ef4>
  45cbe0:	00000000 	nop
	    }

	    /* only accept this new Quick Mode exchange if it has a unique message ID */
	    if (!reserve_msgid(st, md->hdr.isa_msgid))
  45cbe4:	8fc4002c 	lw	a0,44(s8)
  45cbe8:	8fc20020 	lw	v0,32(s8)
  45cbec:	00000000 	nop
  45cbf0:	8c450084 	lw	a1,132(v0)
  45cbf4:	8f9982e0 	lw	t9,-32032(gp)
  45cbf8:	00000000 	nop
  45cbfc:	0320f809 	jalr	t9
  45cc00:	00000000 	nop
  45cc04:	8fdc0018 	lw	gp,24(s8)
  45cc08:	14400026 	bnez	v0,45cca4 <process_packet+0x1054>
  45cc0c:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "Quick Mode I1 message is unacceptable because"
  45cc10:	24040003 	li	a0,3
  45cc14:	8f85802c 	lw	a1,-32724(gp)
  45cc18:	00000000 	nop
  45cc1c:	24a51d14 	addiu	a1,a1,7444
  45cc20:	8fc20020 	lw	v0,32(s8)
  45cc24:	00000000 	nop
  45cc28:	8c460084 	lw	a2,132(v0)
  45cc2c:	8f998c48 	lw	t9,-29624(gp)
  45cc30:	00000000 	nop
  45cc34:	0320f809 	jalr	t9
  45cc38:	00000000 	nop
  45cc3c:	8fdc0018 	lw	gp,24(s8)
  45cc40:	00000000 	nop
		    " it uses a previously used Message ID 0x%08lx"
		    " (perhaps this is a duplicated packet)"
		    , (unsigned long) md->hdr.isa_msgid);
		SEND_NOTIFICATION(INVALID_MESSAGE_ID);
  45cc44:	8fc2002c 	lw	v0,44(s8)
  45cc48:	00000000 	nop
  45cc4c:	1040000b 	beqz	v0,45cc7c <process_packet+0x102c>
  45cc50:	00000000 	nop
  45cc54:	8fc4002c 	lw	a0,44(s8)
  45cc58:	8fc50030 	lw	a1,48(s8)
  45cc5c:	24060009 	li	a2,9
  45cc60:	8f998744 	lw	t9,-30908(gp)
  45cc64:	00000000 	nop
  45cc68:	0320f809 	jalr	t9
  45cc6c:	00000000 	nop
  45cc70:	8fdc0018 	lw	gp,24(s8)
  45cc74:	100007b3 	b	45eb44 <process_packet+0x2ef4>
  45cc78:	00000000 	nop
  45cc7c:	8fc40020 	lw	a0,32(s8)
  45cc80:	24050009 	li	a1,9
  45cc84:	8f998908 	lw	t9,-30456(gp)
  45cc88:	00000000 	nop
  45cc8c:	0320f809 	jalr	t9
  45cc90:	00000000 	nop
  45cc94:	8fdc0018 	lw	gp,24(s8)
  45cc98:	00000000 	nop
		return;
  45cc9c:	100007a9 	b	45eb44 <process_packet+0x2ef4>
  45cca0:	00000000 	nop
	    }

	    /* Quick Mode Initial IV */
	    init_phase2_iv(st, &md->hdr.isa_msgid);
  45cca4:	8fc20020 	lw	v0,32(s8)
  45cca8:	00000000 	nop
  45ccac:	24420084 	addiu	v0,v0,132
  45ccb0:	8fc4002c 	lw	a0,44(s8)
  45ccb4:	00402821 	move	a1,v0
  45ccb8:	8f998bc8 	lw	t9,-29752(gp)
  45ccbc:	00000000 	nop
  45ccc0:	0320f809 	jalr	t9
  45ccc4:	00000000 	nop
  45ccc8:	8fdc0018 	lw	gp,24(s8)
  45cccc:	00000000 	nop
	    new_iv_set = TRUE;
  45ccd0:	24020001 	li	v0,1
  45ccd4:	afc20028 	sw	v0,40(s8)

	    from_state = STATE_QUICK_R0;
  45ccd8:	24020015 	li	v0,21
  45ccdc:	afc20030 	sw	v0,48(s8)
  45cce0:	10000042 	b	45cdec <process_packet+0x119c>
  45cce4:	00000000 	nop
	}
	else
	{
#ifdef XAUTH
	    if(st->st_oakley.xauth != 0)
	    {
		plog("Cannot do Quick Mode until XAUTH done.");
		return;
	    }
#endif
	    set_cur_state(st);
  45cce8:	8fc2002c 	lw	v0,44(s8)
  45ccec:	8f8187f8 	lw	at,-30728(gp)
  45ccf0:	00000000 	nop
  45ccf4:	ac220000 	sw	v0,0(at)
  45ccf8:	8fc2002c 	lw	v0,44(s8)
  45ccfc:	00000000 	nop
  45cd00:	8c44000c 	lw	a0,12(v0)
  45cd04:	8f998be4 	lw	t9,-29724(gp)
  45cd08:	00000000 	nop
  45cd0c:	0320f809 	jalr	t9
  45cd10:	00000000 	nop
  45cd14:	8fdc0018 	lw	gp,24(s8)
  45cd18:	00000000 	nop
	    from_state = st->st_state;
  45cd1c:	8fc2002c 	lw	v0,44(s8)
  45cd20:	00000000 	nop
  45cd24:	8c42014c 	lw	v0,332(v0)
  45cd28:	00000000 	nop
  45cd2c:	afc20030 	sw	v0,48(s8)
	}

	break;
  45cd30:	1000002e 	b	45cdec <process_packet+0x119c>
  45cd34:	00000000 	nop

#ifdef MODECFG

    case ISAKMP_XCHG_MODE_CFG:
	if (is_zero_cookie(md->hdr.isa_icookie))
	{
	    plog("Mode Config message is invalid because"
		" it has an Initiator Cookie of 0");
	    /* XXX Could send notification back */
	    return;
	}

	if (is_zero_cookie(md->hdr.isa_rcookie))
	{
	    plog("Mode Config message is invalid because"
		" it has a Responder Cookie of 0");
	    /* XXX Could send notification back */
	    return;
	}

	if (md->hdr.isa_msgid == 0)
	{
	    plog("Mode Config message is invalid because"
		" it has a Message ID of 0");
	    /* XXX Could send notification back */
	    return;
	}

	st = find_state(md->hdr.isa_icookie, md->hdr.isa_rcookie
	    , &md->sender, md->hdr.isa_msgid);

	if (st == NULL)
	{

	    /* No appropriate Mode Config state.
	     * See if we have a Main Mode state.
	     * ??? what if this is a duplicate of another message?
	     */
	    st = find_state(md->hdr.isa_icookie, md->hdr.isa_rcookie
		, &md->sender, 0);

	    if (st == NULL)
	    {
		plog("Mode Config message is for a non-existent (expired?)"
		    " ISAKMP SA");
		/* XXX Could send notification back */
		return;
	    }

	    set_cur_state(st);

	    if (!IS_ISAKMP_SA_ESTABLISHED(st->st_state))
	    {
		loglog(RC_LOG_SERIOUS, "Mode Config message is unacceptable because"
		       " it is for an incomplete ISAKMP SA (state=%s)"
		       , enum_name(&state_names, st->st_state));
		/* XXX Could send notification back */
		return;
	    }
	    init_phase2_iv(st, &md->hdr.isa_msgid);
	    new_iv_set = TRUE;
	    from_state = STATE_MODE_CFG_R0;
	    if(st->st_state == STATE_XAUTH_R1)
	    {
		from_state = STATE_XAUTH_R1;
	    } else { 
		if (st->st_state == STATE_MODE_CFG_R0) {
		from_state = STATE_MODE_CFG_R0;
		} else {

			plog("Came from an invalid state (%s)  Resetting to STATE_MODE_CFG_R0",enum_name(&state_names, st->st_state));
			from_state = STATE_MODE_CFG_R0;
	    	}
	    }
	}
	else
	{
	    if(IS_PHASE1(st->st_state))	/* Switch from Phase1 to Mode Config */
	    {
		plog("We were in phase 1, with no state, so we went to XAUTH_R0");
		st->st_state = STATE_XAUTH_R0;
	    }
	    set_cur_state(st);
	    from_state = st->st_state;
	}

	break;

#endif

#ifdef NOTYET
    case ISAKMP_XCHG_NGRP:
    case ISAKMP_XCHG_ACK_INFO:
#endif
    default:
	plog("unsupported exchange type %s in message"
  45cd38:	8fc20020 	lw	v0,32(s8)
  45cd3c:	00000000 	nop
  45cd40:	90420082 	lbu	v0,130(v0)
  45cd44:	8f8480c4 	lw	a0,-32572(gp)
  45cd48:	00402821 	move	a1,v0
  45cd4c:	8f9987fc 	lw	t9,-30724(gp)
  45cd50:	00000000 	nop
  45cd54:	0320f809 	jalr	t9
  45cd58:	00000000 	nop
  45cd5c:	8fdc0018 	lw	gp,24(s8)
  45cd60:	00000000 	nop
  45cd64:	8f84802c 	lw	a0,-32724(gp)
  45cd68:	00000000 	nop
  45cd6c:	24841d98 	addiu	a0,a0,7576
  45cd70:	00402821 	move	a1,v0
  45cd74:	8f998abc 	lw	t9,-30020(gp)
  45cd78:	00000000 	nop
  45cd7c:	0320f809 	jalr	t9
  45cd80:	00000000 	nop
  45cd84:	8fdc0018 	lw	gp,24(s8)
  45cd88:	00000000 	nop
	    , enum_show(&exchange_names, md->hdr.isa_xchg));
	SEND_NOTIFICATION(UNSUPPORTED_EXCHANGE_TYPE);
  45cd8c:	8fc2002c 	lw	v0,44(s8)
  45cd90:	00000000 	nop
  45cd94:	1040000b 	beqz	v0,45cdc4 <process_packet+0x1174>
  45cd98:	00000000 	nop
  45cd9c:	8fc4002c 	lw	a0,44(s8)
  45cda0:	8fc50030 	lw	a1,48(s8)
  45cda4:	2406001d 	li	a2,29
  45cda8:	8f998744 	lw	t9,-30908(gp)
  45cdac:	00000000 	nop
  45cdb0:	0320f809 	jalr	t9
  45cdb4:	00000000 	nop
  45cdb8:	8fdc0018 	lw	gp,24(s8)
  45cdbc:	10000761 	b	45eb44 <process_packet+0x2ef4>
  45cdc0:	00000000 	nop
  45cdc4:	8fc40020 	lw	a0,32(s8)
  45cdc8:	2405001d 	li	a1,29
  45cdcc:	8f998908 	lw	t9,-30456(gp)
  45cdd0:	00000000 	nop
  45cdd4:	0320f809 	jalr	t9
  45cdd8:	00000000 	nop
  45cddc:	8fdc0018 	lw	gp,24(s8)
  45cde0:	00000000 	nop
	return;
  45cde4:	10000757 	b	45eb44 <process_packet+0x2ef4>
  45cde8:	00000000 	nop
    }

    /* We have found a from_state, and perhaps a state object.
     * If we need to build a new state object,
     * we wait until the packet has been sanity checked.
     */

    /* We don't support the Commit Flag.  It is such a bad feature.
     * It isn't protected -- neither encrypted nor authenticated.
     * A man in the middle turns it on, leading to DoS.
     * We just ignore it, with a warning.
     * By placing the check here, we could easily add a policy bit
     * to a connection to suppress the warning.  This might be useful
     * because the Commit Flag is expected from some peers.
     */
    if (md->hdr.isa_flags & ISAKMP_FLAG_COMMIT)
  45cdec:	8fc20020 	lw	v0,32(s8)
  45cdf0:	00000000 	nop
  45cdf4:	90420083 	lbu	v0,131(v0)
  45cdf8:	00000000 	nop
  45cdfc:	30420002 	andi	v0,v0,0x2
  45ce00:	304200ff 	andi	v0,v0,0xff
  45ce04:	1040000a 	beqz	v0,45ce30 <process_packet+0x11e0>
  45ce08:	00000000 	nop
    {
	plog("IKE message has the Commit Flag set but Pluto doesn't implement this feature; ignoring flag");
  45ce0c:	8f84802c 	lw	a0,-32724(gp)
  45ce10:	00000000 	nop
  45ce14:	24841dc0 	addiu	a0,a0,7616
  45ce18:	8f998abc 	lw	t9,-30020(gp)
  45ce1c:	00000000 	nop
  45ce20:	0320f809 	jalr	t9
  45ce24:	00000000 	nop
  45ce28:	8fdc0018 	lw	gp,24(s8)
  45ce2c:	00000000 	nop
    }

    /* Set smc to describe this state's properties.
     * Look up the appropriate microcode based on state and
     * possibly Oakley Auth type.
     */
    passert(STATE_IKE_FLOOR <= from_state && from_state <= STATE_IKE_ROOF);
  45ce30:	8fc20030 	lw	v0,48(s8)
  45ce34:	00000000 	nop
  45ce38:	2c420003 	sltiu	v0,v0,3
  45ce3c:	14400008 	bnez	v0,45ce60 <process_packet+0x1210>
  45ce40:	00000000 	nop
  45ce44:	8fc20030 	lw	v0,48(s8)
  45ce48:	00000000 	nop
  45ce4c:	2c42001d 	sltiu	v0,v0,29
  45ce50:	10400003 	beqz	v0,45ce60 <process_packet+0x1210>
  45ce54:	00000000 	nop
  45ce58:	1000000e 	b	45ce94 <process_packet+0x1244>
  45ce5c:	00000000 	nop
  45ce60:	8f84802c 	lw	a0,-32724(gp)
  45ce64:	00000000 	nop
  45ce68:	24841e1c 	addiu	a0,a0,7708
  45ce6c:	8f85802c 	lw	a1,-32724(gp)
  45ce70:	00000000 	nop
  45ce74:	24a513bc 	addiu	a1,a1,5052
  45ce78:	2406068c 	li	a2,1676
  45ce7c:	8f998bb8 	lw	t9,-29768(gp)
  45ce80:	00000000 	nop
  45ce84:	0320f809 	jalr	t9
  45ce88:	00000000 	nop
  45ce8c:	8fdc0018 	lw	gp,24(s8)
  45ce90:	00000000 	nop
    smc = ike_microcode_index[from_state - STATE_IKE_FLOOR];
  45ce94:	8fc20030 	lw	v0,48(s8)
  45ce98:	00000000 	nop
  45ce9c:	2442fffd 	addiu	v0,v0,-3
  45cea0:	00021080 	sll	v0,v0,0x2
  45cea4:	8f818018 	lw	at,-32744(gp)
  45cea8:	00000000 	nop
  45ceac:	24217b78 	addiu	at,at,31608
  45ceb0:	00221021 	addu	v0,at,v0
  45ceb4:	8c420000 	lw	v0,0(v0)
  45ceb8:	00000000 	nop
  45cebc:	afc20024 	sw	v0,36(s8)

    if (st != NULL)
  45cec0:	8fc2002c 	lw	v0,44(s8)
  45cec4:	00000000 	nop
  45cec8:	10400039 	beqz	v0,45cfb0 <process_packet+0x1360>
  45cecc:	00000000 	nop
    {
	while ((smc->flags & LELEM(st->st_oakley.auth)) == 0)
  45ced0:	8fc2002c 	lw	v0,44(s8)
  45ced4:	00000000 	nop
  45ced8:	9444002c 	lhu	a0,44(v0)
  45cedc:	24020000 	li	v0,0
  45cee0:	24030001 	li	v1,1
  45cee4:	00043680 	sll	a2,a0,0x1a
  45cee8:	04c10004 	bgez	a2,45cefc <process_packet+0x12ac>
  45ceec:	00000000 	nop
  45cef0:	00834004 	sllv	t0,v1,a0
  45cef4:	10000007 	b	45cf14 <process_packet+0x12c4>
  45cef8:	00004821 	move	t1,zero
  45cefc:	10c00004 	beqz	a2,45cf10 <process_packet+0x12c0>
  45cf00:	00824004 	sllv	t0,v0,a0
  45cf04:	00043023 	negu	a2,a0
  45cf08:	00c33006 	srlv	a2,v1,a2
  45cf0c:	01064025 	or	t0,t0,a2
  45cf10:	00834804 	sllv	t1,v1,a0
  45cf14:	01002021 	move	a0,t0
  45cf18:	01202821 	move	a1,t1
  45cf1c:	8fc20024 	lw	v0,36(s8)
  45cf20:	00000000 	nop
  45cf24:	8c43000c 	lw	v1,12(v0)
  45cf28:	8c420008 	lw	v0,8(v0)
  45cf2c:	00000000 	nop
  45cf30:	00822024 	and	a0,a0,v0
  45cf34:	00a32824 	and	a1,a1,v1
  45cf38:	00801021 	move	v0,a0
  45cf3c:	00451025 	or	v0,v0,a1
  45cf40:	10400003 	beqz	v0,45cf50 <process_packet+0x1300>
  45cf44:	00000000 	nop
  45cf48:	10000019 	b	45cfb0 <process_packet+0x1360>
  45cf4c:	00000000 	nop
	{
	    smc++;
  45cf50:	8fc20024 	lw	v0,36(s8)
  45cf54:	00000000 	nop
  45cf58:	24420030 	addiu	v0,v0,48
  45cf5c:	afc20024 	sw	v0,36(s8)
	    passert(smc->state == from_state);
  45cf60:	8fc20024 	lw	v0,36(s8)
  45cf64:	00000000 	nop
  45cf68:	8c430000 	lw	v1,0(v0)
  45cf6c:	8fc20030 	lw	v0,48(s8)
  45cf70:	00000000 	nop
  45cf74:	1062ffd6 	beq	v1,v0,45ced0 <process_packet+0x1280>
  45cf78:	00000000 	nop
  45cf7c:	8f84802c 	lw	a0,-32724(gp)
  45cf80:	00000000 	nop
  45cf84:	24841e5c 	addiu	a0,a0,7772
  45cf88:	8f85802c 	lw	a1,-32724(gp)
  45cf8c:	00000000 	nop
  45cf90:	24a513bc 	addiu	a1,a1,5052
  45cf94:	24060694 	li	a2,1684
  45cf98:	8f998bb8 	lw	t9,-29768(gp)
  45cf9c:	00000000 	nop
  45cfa0:	0320f809 	jalr	t9
  45cfa4:	00000000 	nop
  45cfa8:	8fdc0018 	lw	gp,24(s8)
  45cfac:	00000000 	nop
	}
    }

    /* Ignore a packet if the state has a suspended state transition
     * Probably a duplicated packet but the original packet is not yet
     * recorded in st->st_rpacket, so duplicate checking won't catch.
     * ??? Should the packet be recorded earlier to improve diagnosis?
     */
    if (st != NULL && st->st_suspended_md != NULL)
  45cfb0:	8fc2002c 	lw	v0,44(s8)
  45cfb4:	00000000 	nop
  45cfb8:	10400013 	beqz	v0,45d008 <process_packet+0x13b8>
  45cfbc:	00000000 	nop
  45cfc0:	8fc2002c 	lw	v0,44(s8)
  45cfc4:	00000000 	nop
  45cfc8:	8c420018 	lw	v0,24(v0)
  45cfcc:	00000000 	nop
  45cfd0:	1040000d 	beqz	v0,45d008 <process_packet+0x13b8>
  45cfd4:	00000000 	nop
    {
	loglog(RC_LOG, "discarding packet received during DNS lookup");
  45cfd8:	24040002 	li	a0,2
  45cfdc:	8f85802c 	lw	a1,-32724(gp)
  45cfe0:	00000000 	nop
  45cfe4:	24a51e78 	addiu	a1,a1,7800
  45cfe8:	8f998c48 	lw	t9,-29624(gp)
  45cfec:	00000000 	nop
  45cff0:	0320f809 	jalr	t9
  45cff4:	00000000 	nop
  45cff8:	8fdc0018 	lw	gp,24(s8)
  45cffc:	00000000 	nop
	return;
  45d000:	100006d0 	b	45eb44 <process_packet+0x2ef4>
  45d004:	00000000 	nop
    }

    /* Detect and handle duplicated packets.
     * This won't work for the initial packet of an exchange
     * because we won't have a state object to remember it.
     * If we are in a non-receiving state (terminal), and the preceding
     * state did transmit, then the duplicate may indicate that that
     * transmission wasn't received -- retransmit it.
     * Otherwise, just discard it.
     * ??? Notification packets are like exchanges -- I hope that
     * they are idempotent!
     */
    if (st != NULL
    && st->st_rpacket.ptr != NULL
    && st->st_rpacket.len == pbs_room(&md->packet_pbs)
    && memcmp(st->st_rpacket.ptr, md->packet_pbs.start, st->st_rpacket.len) == 0)
  45d008:	8fc2002c 	lw	v0,44(s8)
  45d00c:	00000000 	nop
  45d010:	1040008d 	beqz	v0,45d248 <process_packet+0x15f8>
  45d014:	00000000 	nop
  45d018:	8fc2002c 	lw	v0,44(s8)
  45d01c:	00000000 	nop
  45d020:	8c420124 	lw	v0,292(v0)
  45d024:	00000000 	nop
  45d028:	10400087 	beqz	v0,45d248 <process_packet+0x15f8>
  45d02c:	00000000 	nop
  45d030:	8fc20020 	lw	v0,32(s8)
  45d034:	00000000 	nop
  45d038:	24430030 	addiu	v1,v0,48
  45d03c:	8fc20020 	lw	v0,32(s8)
  45d040:	00000000 	nop
  45d044:	24420030 	addiu	v0,v0,48
  45d048:	8c630014 	lw	v1,20(v1)
  45d04c:	8c42000c 	lw	v0,12(v0)
  45d050:	00000000 	nop
  45d054:	00621823 	subu	v1,v1,v0
  45d058:	8fc2002c 	lw	v0,44(s8)
  45d05c:	00000000 	nop
  45d060:	8c420128 	lw	v0,296(v0)
  45d064:	00000000 	nop
  45d068:	14430077 	bne	v0,v1,45d248 <process_packet+0x15f8>
  45d06c:	00000000 	nop
  45d070:	8fc2002c 	lw	v0,44(s8)
  45d074:	00000000 	nop
  45d078:	8c440124 	lw	a0,292(v0)
  45d07c:	8fc20020 	lw	v0,32(s8)
  45d080:	00000000 	nop
  45d084:	8c45003c 	lw	a1,60(v0)
  45d088:	8fc2002c 	lw	v0,44(s8)
  45d08c:	00000000 	nop
  45d090:	8c460128 	lw	a2,296(v0)
  45d094:	8f9985c8 	lw	t9,-31288(gp)
  45d098:	00000000 	nop
  45d09c:	0320f809 	jalr	t9
  45d0a0:	00000000 	nop
  45d0a4:	8fdc0018 	lw	gp,24(s8)
  45d0a8:	14400067 	bnez	v0,45d248 <process_packet+0x15f8>
  45d0ac:	00000000 	nop
    {
	if (smc->flags & SMF_RETRANSMIT_ON_DUPLICATE)
  45d0b0:	8fc20024 	lw	v0,36(s8)
  45d0b4:	00000000 	nop
  45d0b8:	8c440008 	lw	a0,8(v0)
  45d0bc:	8c45000c 	lw	a1,12(v0)
  45d0c0:	24020000 	li	v0,0
  45d0c4:	24031000 	li	v1,4096
  45d0c8:	00822024 	and	a0,a0,v0
  45d0cc:	00a32824 	and	a1,a1,v1
  45d0d0:	00801021 	move	v0,a0
  45d0d4:	00451025 	or	v0,v0,a1
  45d0d8:	10400045 	beqz	v0,45d1f0 <process_packet+0x15a0>
  45d0dc:	00000000 	nop
	{
	    if (st->st_retransmit < MAXIMUM_RETRANSMISSIONS)
  45d0e0:	8fc2002c 	lw	v0,44(s8)
  45d0e4:	00000000 	nop
  45d0e8:	90420150 	lbu	v0,336(v0)
  45d0ec:	00000000 	nop
  45d0f0:	2c420002 	sltiu	v0,v0,2
  45d0f4:	10400029 	beqz	v0,45d19c <process_packet+0x154c>
  45d0f8:	00000000 	nop
	    {
		st->st_retransmit++;
  45d0fc:	8fc2002c 	lw	v0,44(s8)
  45d100:	00000000 	nop
  45d104:	90420150 	lbu	v0,336(v0)
  45d108:	00000000 	nop
  45d10c:	24430001 	addiu	v1,v0,1
  45d110:	8fc2002c 	lw	v0,44(s8)
  45d114:	00000000 	nop
  45d118:	a0430150 	sb	v1,336(v0)
		loglog(RC_RETRANSMISSION
  45d11c:	8f8483b0 	lw	a0,-31824(gp)
  45d120:	8fc2002c 	lw	v0,44(s8)
  45d124:	00000000 	nop
  45d128:	8c45014c 	lw	a1,332(v0)
  45d12c:	8f9984bc 	lw	t9,-31556(gp)
  45d130:	00000000 	nop
  45d134:	0320f809 	jalr	t9
  45d138:	00000000 	nop
  45d13c:	8fdc0018 	lw	gp,24(s8)
  45d140:	2404000a 	li	a0,10
  45d144:	8f85802c 	lw	a1,-32724(gp)
  45d148:	00000000 	nop
  45d14c:	24a51ea8 	addiu	a1,a1,7848
  45d150:	00403021 	move	a2,v0
  45d154:	8f998c48 	lw	t9,-29624(gp)
  45d158:	00000000 	nop
  45d15c:	0320f809 	jalr	t9
  45d160:	00000000 	nop
  45d164:	8fdc0018 	lw	gp,24(s8)
  45d168:	00000000 	nop
		    , "retransmitting in response to duplicate packet; already %s"
		    , enum_name(&state_names, st->st_state));
		send_packet(st, "retransmit in response to duplicate");
  45d16c:	8fc4002c 	lw	a0,44(s8)
  45d170:	8f85802c 	lw	a1,-32724(gp)
  45d174:	00000000 	nop
  45d178:	24a51ee4 	addiu	a1,a1,7908
  45d17c:	24060001 	li	a2,1
  45d180:	8f9987f0 	lw	t9,-30736(gp)
  45d184:	00000000 	nop
  45d188:	0320f809 	jalr	t9
  45d18c:	00000000 	nop
  45d190:	8fdc0018 	lw	gp,24(s8)
  45d194:	1000066b 	b	45eb44 <process_packet+0x2ef4>
  45d198:	00000000 	nop
	    }
	    else
	    {
		loglog(RC_LOG_SERIOUS, "discarding duplicate packet -- exhausted retransmission; already %s"
  45d19c:	8f8483b0 	lw	a0,-31824(gp)
  45d1a0:	8fc2002c 	lw	v0,44(s8)
  45d1a4:	00000000 	nop
  45d1a8:	8c45014c 	lw	a1,332(v0)
  45d1ac:	8f9984bc 	lw	t9,-31556(gp)
  45d1b0:	00000000 	nop
  45d1b4:	0320f809 	jalr	t9
  45d1b8:	00000000 	nop
  45d1bc:	8fdc0018 	lw	gp,24(s8)
  45d1c0:	24040003 	li	a0,3
  45d1c4:	8f85802c 	lw	a1,-32724(gp)
  45d1c8:	00000000 	nop
  45d1cc:	24a51f08 	addiu	a1,a1,7944
  45d1d0:	00403021 	move	a2,v0
  45d1d4:	8f998c48 	lw	t9,-29624(gp)
  45d1d8:	00000000 	nop
  45d1dc:	0320f809 	jalr	t9
  45d1e0:	00000000 	nop
  45d1e4:	8fdc0018 	lw	gp,24(s8)
  45d1e8:	10000656 	b	45eb44 <process_packet+0x2ef4>
  45d1ec:	00000000 	nop
		    , enum_name(&state_names, st->st_state));
	    }
	}
	else
	{
	    loglog(RC_LOG_SERIOUS, "discarding duplicate packet; already %s"
  45d1f0:	8f8483b0 	lw	a0,-31824(gp)
  45d1f4:	8fc2002c 	lw	v0,44(s8)
  45d1f8:	00000000 	nop
  45d1fc:	8c45014c 	lw	a1,332(v0)
  45d200:	8f9984bc 	lw	t9,-31556(gp)
  45d204:	00000000 	nop
  45d208:	0320f809 	jalr	t9
  45d20c:	00000000 	nop
  45d210:	8fdc0018 	lw	gp,24(s8)
  45d214:	24040003 	li	a0,3
  45d218:	8f85802c 	lw	a1,-32724(gp)
  45d21c:	00000000 	nop
  45d220:	24a51f4c 	addiu	a1,a1,8012
  45d224:	00403021 	move	a2,v0
  45d228:	8f998c48 	lw	t9,-29624(gp)
  45d22c:	00000000 	nop
  45d230:	0320f809 	jalr	t9
  45d234:	00000000 	nop
  45d238:	8fdc0018 	lw	gp,24(s8)
  45d23c:	00000000 	nop
		, enum_name(&state_names, st->st_state));
	}
	return;
  45d240:	10000640 	b	45eb44 <process_packet+0x2ef4>
  45d244:	00000000 	nop
    }

    if (md->hdr.isa_flags & ISAKMP_FLAG_ENCRYPTION)
  45d248:	8fc20020 	lw	v0,32(s8)
  45d24c:	00000000 	nop
  45d250:	90420083 	lbu	v0,131(v0)
  45d254:	00000000 	nop
  45d258:	30420001 	andi	v0,v0,0x1
  45d25c:	304200ff 	andi	v0,v0,0xff
  45d260:	1040017d 	beqz	v0,45d858 <process_packet+0x1c08>
  45d264:	00000000 	nop
    {
	DBG(DBG_CRYPT, DBG_log("received encrypted packet from %s:%u"
  45d268:	8f8284f8 	lw	v0,-31496(gp)
  45d26c:	00000000 	nop
  45d270:	8c420000 	lw	v0,0(v0)
  45d274:	00000000 	nop
  45d278:	30420002 	andi	v0,v0,0x2
  45d27c:	10400019 	beqz	v0,45d2e4 <process_packet+0x1694>
  45d280:	00000000 	nop
  45d284:	8fc20020 	lw	v0,32(s8)
  45d288:	00000000 	nop
  45d28c:	24420010 	addiu	v0,v0,16
  45d290:	00402021 	move	a0,v0
  45d294:	8f998100 	lw	t9,-32512(gp)
  45d298:	00000000 	nop
  45d29c:	0320f809 	jalr	t9
  45d2a0:	00000000 	nop
  45d2a4:	8fdc0018 	lw	gp,24(s8)
  45d2a8:	00401821 	move	v1,v0
  45d2ac:	8fc20020 	lw	v0,32(s8)
  45d2b0:	00000000 	nop
  45d2b4:	9442002c 	lhu	v0,44(v0)
  45d2b8:	8f84802c 	lw	a0,-32724(gp)
  45d2bc:	00000000 	nop
  45d2c0:	24841f74 	addiu	a0,a0,8052
  45d2c4:	00602821 	move	a1,v1
  45d2c8:	00403021 	move	a2,v0
  45d2cc:	8f9983b8 	lw	t9,-31816(gp)
  45d2d0:	00000000 	nop
  45d2d4:	0320f809 	jalr	t9
  45d2d8:	00000000 	nop
  45d2dc:	8fdc0018 	lw	gp,24(s8)
  45d2e0:	00000000 	nop
	    , ip_str(&md->sender), (unsigned)md->sender_port));

	if (st == NULL)
  45d2e4:	8fc2002c 	lw	v0,44(s8)
  45d2e8:	00000000 	nop
  45d2ec:	14400022 	bnez	v0,45d378 <process_packet+0x1728>
  45d2f0:	00000000 	nop
	{
	    plog("discarding encrypted message for an unknown ISAKMP SA");
  45d2f4:	8f84802c 	lw	a0,-32724(gp)
  45d2f8:	00000000 	nop
  45d2fc:	24841f9c 	addiu	a0,a0,8092
  45d300:	8f998abc 	lw	t9,-30020(gp)
  45d304:	00000000 	nop
  45d308:	0320f809 	jalr	t9
  45d30c:	00000000 	nop
  45d310:	8fdc0018 	lw	gp,24(s8)
  45d314:	00000000 	nop
	    SEND_NOTIFICATION(PAYLOAD_MALFORMED /* XXX ? */);
  45d318:	8fc2002c 	lw	v0,44(s8)
  45d31c:	00000000 	nop
  45d320:	1040000b 	beqz	v0,45d350 <process_packet+0x1700>
  45d324:	00000000 	nop
  45d328:	8fc4002c 	lw	a0,44(s8)
  45d32c:	8fc50030 	lw	a1,48(s8)
  45d330:	24060010 	li	a2,16
  45d334:	8f998744 	lw	t9,-30908(gp)
  45d338:	00000000 	nop
  45d33c:	0320f809 	jalr	t9
  45d340:	00000000 	nop
  45d344:	8fdc0018 	lw	gp,24(s8)
  45d348:	100005fe 	b	45eb44 <process_packet+0x2ef4>
  45d34c:	00000000 	nop
  45d350:	8fc40020 	lw	a0,32(s8)
  45d354:	24050010 	li	a1,16
  45d358:	8f998908 	lw	t9,-30456(gp)
  45d35c:	00000000 	nop
  45d360:	0320f809 	jalr	t9
  45d364:	00000000 	nop
  45d368:	8fdc0018 	lw	gp,24(s8)
  45d36c:	00000000 	nop
	    return;
  45d370:	100005f4 	b	45eb44 <process_packet+0x2ef4>
  45d374:	00000000 	nop
	}
	if (st->st_skeyid_e.ptr == (u_char *) NULL)
  45d378:	8fc2002c 	lw	v0,44(s8)
  45d37c:	00000000 	nop
  45d380:	8c42017c 	lw	v0,380(v0)
  45d384:	00000000 	nop
  45d388:	14400023 	bnez	v0,45d418 <process_packet+0x17c8>
  45d38c:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "discarding encrypted message"
  45d390:	24040003 	li	a0,3
  45d394:	8f85802c 	lw	a1,-32724(gp)
  45d398:	00000000 	nop
  45d39c:	24a51fd4 	addiu	a1,a1,8148
  45d3a0:	8f998c48 	lw	t9,-29624(gp)
  45d3a4:	00000000 	nop
  45d3a8:	0320f809 	jalr	t9
  45d3ac:	00000000 	nop
  45d3b0:	8fdc0018 	lw	gp,24(s8)
  45d3b4:	00000000 	nop
		" because we haven't yet negotiated keying materiel");
	    SEND_NOTIFICATION(INVALID_FLAGS);
  45d3b8:	8fc2002c 	lw	v0,44(s8)
  45d3bc:	00000000 	nop
  45d3c0:	1040000b 	beqz	v0,45d3f0 <process_packet+0x17a0>
  45d3c4:	00000000 	nop
  45d3c8:	8fc4002c 	lw	a0,44(s8)
  45d3cc:	8fc50030 	lw	a1,48(s8)
  45d3d0:	24060008 	li	a2,8
  45d3d4:	8f998744 	lw	t9,-30908(gp)
  45d3d8:	00000000 	nop
  45d3dc:	0320f809 	jalr	t9
  45d3e0:	00000000 	nop
  45d3e4:	8fdc0018 	lw	gp,24(s8)
  45d3e8:	100005d6 	b	45eb44 <process_packet+0x2ef4>
  45d3ec:	00000000 	nop
  45d3f0:	8fc40020 	lw	a0,32(s8)
  45d3f4:	24050008 	li	a1,8
  45d3f8:	8f998908 	lw	t9,-30456(gp)
  45d3fc:	00000000 	nop
  45d400:	0320f809 	jalr	t9
  45d404:	00000000 	nop
  45d408:	8fdc0018 	lw	gp,24(s8)
  45d40c:	00000000 	nop
	    return;
  45d410:	100005cc 	b	45eb44 <process_packet+0x2ef4>
  45d414:	00000000 	nop
	}

	/* Mark as encrypted */
	md->encrypted = TRUE;
  45d418:	24030001 	li	v1,1
  45d41c:	8fc20020 	lw	v0,32(s8)
  45d420:	00000000 	nop
  45d424:	ac43008c 	sw	v1,140(v0)

	DBG(DBG_CRYPT, DBG_log("decrypting %u bytes using algorithm %s",
  45d428:	8f8284f8 	lw	v0,-31496(gp)
  45d42c:	00000000 	nop
  45d430:	8c420000 	lw	v0,0(v0)
  45d434:	00000000 	nop
  45d438:	30420002 	andi	v0,v0,0x2
  45d43c:	10400020 	beqz	v0,45d4c0 <process_packet+0x1870>
  45d440:	00000000 	nop
  45d444:	8fc2002c 	lw	v0,44(s8)
  45d448:	00000000 	nop
  45d44c:	9442001c 	lhu	v0,28(v0)
  45d450:	8f848a50 	lw	a0,-30128(gp)
  45d454:	00402821 	move	a1,v0
  45d458:	8f9987fc 	lw	t9,-30724(gp)
  45d45c:	00000000 	nop
  45d460:	0320f809 	jalr	t9
  45d464:	00000000 	nop
  45d468:	8fdc0018 	lw	gp,24(s8)
  45d46c:	00403021 	move	a2,v0
  45d470:	8fc20020 	lw	v0,32(s8)
  45d474:	00000000 	nop
  45d478:	24430050 	addiu	v1,v0,80
  45d47c:	8fc20020 	lw	v0,32(s8)
  45d480:	00000000 	nop
  45d484:	24420050 	addiu	v0,v0,80
  45d488:	8c630014 	lw	v1,20(v1)
  45d48c:	8c420010 	lw	v0,16(v0)
  45d490:	00000000 	nop
  45d494:	00621023 	subu	v0,v1,v0
  45d498:	8f84802c 	lw	a0,-32724(gp)
  45d49c:	00000000 	nop
  45d4a0:	24842024 	addiu	a0,a0,8228
  45d4a4:	00402821 	move	a1,v0
  45d4a8:	8f9983b8 	lw	t9,-31816(gp)
  45d4ac:	00000000 	nop
  45d4b0:	0320f809 	jalr	t9
  45d4b4:	00000000 	nop
  45d4b8:	8fdc0018 	lw	gp,24(s8)
  45d4bc:	00000000 	nop
	    (unsigned) pbs_left(&md->message_pbs),
	    enum_show(&oakley_enc_names, st->st_oakley.encrypt)));

	/* do the specified decryption
	 *
	 * IV is from st->st_iv or (if new_iv_set) st->st_new_iv.
	 * The new IV is placed in st->st_new_iv
	 *
	 * See draft-ietf-ipsec-isakmp-oakley-07.txt Appendix B
	 *
	 * XXX The IV should only be updated really if the packet
	 * is successfully processed.
	 * We should keep this value, check for a success return
	 * value from the parsing routines and then replace.
	 *
	 * Each post phase 1 exchange generates IVs from
	 * the last phase 1 block, not the last block sent.
	 */
	{
	    const struct encrypt_desc *e = st->st_oakley.encrypter;
  45d4c0:	8fc2002c 	lw	v0,44(s8)
  45d4c4:	00000000 	nop
  45d4c8:	8c420020 	lw	v0,32(v0)
  45d4cc:	00000000 	nop
  45d4d0:	afc20034 	sw	v0,52(s8)

	    if (pbs_left(&md->message_pbs) % e->enc_blocksize != 0)
  45d4d4:	8fc20020 	lw	v0,32(s8)
  45d4d8:	00000000 	nop
  45d4dc:	24430050 	addiu	v1,v0,80
  45d4e0:	8fc20020 	lw	v0,32(s8)
  45d4e4:	00000000 	nop
  45d4e8:	24420050 	addiu	v0,v0,80
  45d4ec:	8c630014 	lw	v1,20(v1)
  45d4f0:	8c420010 	lw	v0,16(v0)
  45d4f4:	00000000 	nop
  45d4f8:	00621823 	subu	v1,v1,v0
  45d4fc:	8fc20034 	lw	v0,52(s8)
  45d500:	00000000 	nop
  45d504:	8c42000c 	lw	v0,12(v0)
  45d508:	00000000 	nop
  45d50c:	0062001b 	divu	zero,v1,v0
  45d510:	00001810 	mfhi	v1
  45d514:	14400002 	bnez	v0,45d520 <process_packet+0x18d0>
  45d518:	00000000 	nop
  45d51c:	0007000d 	break	0x7
  45d520:	10600023 	beqz	v1,45d5b0 <process_packet+0x1960>
  45d524:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "malformed message: not a multiple of encryption blocksize");
  45d528:	24040003 	li	a0,3
  45d52c:	8f85802c 	lw	a1,-32724(gp)
  45d530:	00000000 	nop
  45d534:	24a5204c 	addiu	a1,a1,8268
  45d538:	8f998c48 	lw	t9,-29624(gp)
  45d53c:	00000000 	nop
  45d540:	0320f809 	jalr	t9
  45d544:	00000000 	nop
  45d548:	8fdc0018 	lw	gp,24(s8)
  45d54c:	00000000 	nop
		SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45d550:	8fc2002c 	lw	v0,44(s8)
  45d554:	00000000 	nop
  45d558:	1040000b 	beqz	v0,45d588 <process_packet+0x1938>
  45d55c:	00000000 	nop
  45d560:	8fc4002c 	lw	a0,44(s8)
  45d564:	8fc50030 	lw	a1,48(s8)
  45d568:	24060010 	li	a2,16
  45d56c:	8f998744 	lw	t9,-30908(gp)
  45d570:	00000000 	nop
  45d574:	0320f809 	jalr	t9
  45d578:	00000000 	nop
  45d57c:	8fdc0018 	lw	gp,24(s8)
  45d580:	10000570 	b	45eb44 <process_packet+0x2ef4>
  45d584:	00000000 	nop
  45d588:	8fc40020 	lw	a0,32(s8)
  45d58c:	24050010 	li	a1,16
  45d590:	8f998908 	lw	t9,-30456(gp)
  45d594:	00000000 	nop
  45d598:	0320f809 	jalr	t9
  45d59c:	00000000 	nop
  45d5a0:	8fdc0018 	lw	gp,24(s8)
  45d5a4:	00000000 	nop
		return;
  45d5a8:	10000566 	b	45eb44 <process_packet+0x2ef4>
  45d5ac:	00000000 	nop
	    }

	    /* XXX Detect weak keys */

	    /* grab a copy of raw packet (for duplicate packet detection) */
	    clonetochunk(md->raw_packet, md->packet_pbs.start
  45d5b0:	8fd00020 	lw	s0,32(s8)
  45d5b4:	8fc40020 	lw	a0,32(s8)
  45d5b8:	8fc20020 	lw	v0,32(s8)
  45d5bc:	00000000 	nop
  45d5c0:	24430030 	addiu	v1,v0,48
  45d5c4:	8fc20020 	lw	v0,32(s8)
  45d5c8:	00000000 	nop
  45d5cc:	24420030 	addiu	v0,v0,48
  45d5d0:	8c630014 	lw	v1,20(v1)
  45d5d4:	8c42000c 	lw	v0,12(v0)
  45d5d8:	00000000 	nop
  45d5dc:	00621023 	subu	v0,v1,v0
  45d5e0:	00401821 	move	v1,v0
  45d5e4:	8fc20020 	lw	v0,32(s8)
  45d5e8:	00000000 	nop
  45d5ec:	ac430008 	sw	v1,8(v0)
  45d5f0:	8c84003c 	lw	a0,60(a0)
  45d5f4:	00602821 	move	a1,v1
  45d5f8:	8f86802c 	lw	a2,-32724(gp)
  45d5fc:	00000000 	nop
  45d600:	24c62088 	addiu	a2,a2,8328
  45d604:	8f998c04 	lw	t9,-29692(gp)
  45d608:	00000000 	nop
  45d60c:	0320f809 	jalr	t9
  45d610:	00000000 	nop
  45d614:	8fdc0018 	lw	gp,24(s8)
  45d618:	ae020004 	sw	v0,4(s0)
		, pbs_room(&md->packet_pbs), "raw packet");

	    /* Decrypt everything after header */
	    if (!new_iv_set)
  45d61c:	8fc20028 	lw	v0,40(s8)
  45d620:	00000000 	nop
  45d624:	1440003f 	bnez	v0,45d724 <process_packet+0x1ad4>
  45d628:	00000000 	nop
	    {
		/* use old IV */
		passert(st->st_iv_len <= sizeof(st->st_new_iv));
  45d62c:	8fc2002c 	lw	v0,44(s8)
  45d630:	00000000 	nop
  45d634:	8c420244 	lw	v0,580(v0)
  45d638:	00000000 	nop
  45d63c:	2c420041 	sltiu	v0,v0,65
  45d640:	1440000e 	bnez	v0,45d67c <process_packet+0x1a2c>
  45d644:	00000000 	nop
  45d648:	8f84802c 	lw	a0,-32724(gp)
  45d64c:	00000000 	nop
  45d650:	24842094 	addiu	a0,a0,8340
  45d654:	8f85802c 	lw	a1,-32724(gp)
  45d658:	00000000 	nop
  45d65c:	24a513bc 	addiu	a1,a1,5052
  45d660:	24060707 	li	a2,1799
  45d664:	8f998bb8 	lw	t9,-29768(gp)
  45d668:	00000000 	nop
  45d66c:	0320f809 	jalr	t9
  45d670:	00000000 	nop
  45d674:	8fdc0018 	lw	gp,24(s8)
  45d678:	00000000 	nop
		st->st_new_iv_len = st->st_iv_len;
  45d67c:	8fc2002c 	lw	v0,44(s8)
  45d680:	00000000 	nop
  45d684:	8c430244 	lw	v1,580(v0)
  45d688:	8fc2002c 	lw	v0,44(s8)
  45d68c:	00000000 	nop
  45d690:	ac430248 	sw	v1,584(v0)
		init_new_iv(st);
  45d694:	8fc2002c 	lw	v0,44(s8)
  45d698:	00000000 	nop
  45d69c:	8c420248 	lw	v0,584(v0)
  45d6a0:	00000000 	nop
  45d6a4:	2c420040 	sltiu	v0,v0,64
  45d6a8:	1440000d 	bnez	v0,45d6e0 <process_packet+0x1a90>
  45d6ac:	00000000 	nop
  45d6b0:	8f84802c 	lw	a0,-32724(gp)
  45d6b4:	00000000 	nop
  45d6b8:	248420bc 	addiu	a0,a0,8380
  45d6bc:	8f85802c 	lw	a1,-32724(gp)
  45d6c0:	00000000 	nop
  45d6c4:	24a513bc 	addiu	a1,a1,5052
  45d6c8:	24060709 	li	a2,1801
  45d6cc:	8f998bb8 	lw	t9,-29768(gp)
  45d6d0:	00000000 	nop
  45d6d4:	0320f809 	jalr	t9
  45d6d8:	00000000 	nop
  45d6dc:	8fdc0018 	lw	gp,24(s8)
  45d6e0:	8fc2002c 	lw	v0,44(s8)
  45d6e4:	00000000 	nop
  45d6e8:	244301c4 	addiu	v1,v0,452
  45d6ec:	8fc2002c 	lw	v0,44(s8)
  45d6f0:	00000000 	nop
  45d6f4:	24420184 	addiu	v0,v0,388
  45d6f8:	00602021 	move	a0,v1
  45d6fc:	00402821 	move	a1,v0
  45d700:	8fc2002c 	lw	v0,44(s8)
  45d704:	00000000 	nop
  45d708:	8c460248 	lw	a2,584(v0)
  45d70c:	8f998a30 	lw	t9,-30160(gp)
  45d710:	00000000 	nop
  45d714:	0320f809 	jalr	t9
  45d718:	00000000 	nop
  45d71c:	8fdc0018 	lw	gp,24(s8)
  45d720:	00000000 	nop
	    }
	    crypto_cbc_encrypt(e, FALSE, md->message_pbs.cur, 
  45d724:	8fc20020 	lw	v0,32(s8)
  45d728:	00000000 	nop
  45d72c:	24430050 	addiu	v1,v0,80
  45d730:	8fc20020 	lw	v0,32(s8)
  45d734:	00000000 	nop
  45d738:	24420050 	addiu	v0,v0,80
  45d73c:	8c630014 	lw	v1,20(v1)
  45d740:	8c420010 	lw	v0,16(v0)
  45d744:	00000000 	nop
  45d748:	00621823 	subu	v1,v1,v0
  45d74c:	8fc2002c 	lw	v0,44(s8)
  45d750:	00000000 	nop
  45d754:	afa20010 	sw	v0,16(sp)
  45d758:	8fc40034 	lw	a0,52(s8)
  45d75c:	00002821 	move	a1,zero
  45d760:	8fc20020 	lw	v0,32(s8)
  45d764:	00000000 	nop
  45d768:	8c460060 	lw	a2,96(v0)
  45d76c:	00603821 	move	a3,v1
  45d770:	8f9983ac 	lw	t9,-31828(gp)
  45d774:	00000000 	nop
  45d778:	0320f809 	jalr	t9
  45d77c:	00000000 	nop
  45d780:	8fdc0018 	lw	gp,24(s8)
  45d784:	00000000 	nop
			    pbs_left(&md->message_pbs) , st);
	}

	DBG_cond_dump(DBG_CRYPT, "decrypted:\n", md->message_pbs.cur,
  45d788:	8f8284f8 	lw	v0,-31496(gp)
  45d78c:	00000000 	nop
  45d790:	8c420000 	lw	v0,0(v0)
  45d794:	00000000 	nop
  45d798:	30420002 	andi	v0,v0,0x2
  45d79c:	10400016 	beqz	v0,45d7f8 <process_packet+0x1ba8>
  45d7a0:	00000000 	nop
  45d7a4:	8fc20020 	lw	v0,32(s8)
  45d7a8:	00000000 	nop
  45d7ac:	8c430064 	lw	v1,100(v0)
  45d7b0:	8fc20020 	lw	v0,32(s8)
  45d7b4:	00000000 	nop
  45d7b8:	8c420060 	lw	v0,96(v0)
  45d7bc:	00000000 	nop
  45d7c0:	00621823 	subu	v1,v1,v0
  45d7c4:	8f84802c 	lw	a0,-32724(gp)
  45d7c8:	00000000 	nop
  45d7cc:	248420e8 	addiu	a0,a0,8424
  45d7d0:	8fc20020 	lw	v0,32(s8)
  45d7d4:	00000000 	nop
  45d7d8:	8c450060 	lw	a1,96(v0)
  45d7dc:	00603021 	move	a2,v1
  45d7e0:	8f9984ec 	lw	t9,-31508(gp)
  45d7e4:	00000000 	nop
  45d7e8:	0320f809 	jalr	t9
  45d7ec:	00000000 	nop
  45d7f0:	8fdc0018 	lw	gp,24(s8)
  45d7f4:	00000000 	nop
	    md->message_pbs.roof - md->message_pbs.cur);

	DBG_cond_dump(DBG_CRYPT, "next IV:"
  45d7f8:	8f8284f8 	lw	v0,-31496(gp)
  45d7fc:	00000000 	nop
  45d800:	8c420000 	lw	v0,0(v0)
  45d804:	00000000 	nop
  45d808:	30420002 	andi	v0,v0,0x2
  45d80c:	10400044 	beqz	v0,45d920 <process_packet+0x1cd0>
  45d810:	00000000 	nop
  45d814:	8fc2002c 	lw	v0,44(s8)
  45d818:	00000000 	nop
  45d81c:	244201c4 	addiu	v0,v0,452
  45d820:	8f84802c 	lw	a0,-32724(gp)
  45d824:	00000000 	nop
  45d828:	248420f4 	addiu	a0,a0,8436
  45d82c:	00402821 	move	a1,v0
  45d830:	8fc2002c 	lw	v0,44(s8)
  45d834:	00000000 	nop
  45d838:	8c460248 	lw	a2,584(v0)
  45d83c:	8f9984ec 	lw	t9,-31508(gp)
  45d840:	00000000 	nop
  45d844:	0320f809 	jalr	t9
  45d848:	00000000 	nop
  45d84c:	8fdc0018 	lw	gp,24(s8)
  45d850:	10000033 	b	45d920 <process_packet+0x1cd0>
  45d854:	00000000 	nop
	    , st->st_new_iv, st->st_new_iv_len);
    }
    else
    {
	/* packet was not encryped -- should it have been? */

	if ((smc->flags & SMF_INPUT_ENCRYPTED) && (from_state != STATE_AGGR_R1))
  45d858:	8fc20024 	lw	v0,36(s8)
  45d85c:	00000000 	nop
  45d860:	8c440008 	lw	a0,8(v0)
  45d864:	8c45000c 	lw	a1,12(v0)
  45d868:	24020000 	li	v0,0
  45d86c:	24030400 	li	v1,1024
  45d870:	00822024 	and	a0,a0,v0
  45d874:	00a32824 	and	a1,a1,v1
  45d878:	00801021 	move	v0,a0
  45d87c:	00451025 	or	v0,v0,a1
  45d880:	10400027 	beqz	v0,45d920 <process_packet+0x1cd0>
  45d884:	00000000 	nop
  45d888:	8fc30030 	lw	v1,48(s8)
  45d88c:	2402000d 	li	v0,13
  45d890:	10620023 	beq	v1,v0,45d920 <process_packet+0x1cd0>
  45d894:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "packet rejected: should have been encrypted");
  45d898:	24040003 	li	a0,3
  45d89c:	8f85802c 	lw	a1,-32724(gp)
  45d8a0:	00000000 	nop
  45d8a4:	24a52100 	addiu	a1,a1,8448
  45d8a8:	8f998c48 	lw	t9,-29624(gp)
  45d8ac:	00000000 	nop
  45d8b0:	0320f809 	jalr	t9
  45d8b4:	00000000 	nop
  45d8b8:	8fdc0018 	lw	gp,24(s8)
  45d8bc:	00000000 	nop
	    SEND_NOTIFICATION(INVALID_FLAGS);
  45d8c0:	8fc2002c 	lw	v0,44(s8)
  45d8c4:	00000000 	nop
  45d8c8:	1040000b 	beqz	v0,45d8f8 <process_packet+0x1ca8>
  45d8cc:	00000000 	nop
  45d8d0:	8fc4002c 	lw	a0,44(s8)
  45d8d4:	8fc50030 	lw	a1,48(s8)
  45d8d8:	24060008 	li	a2,8
  45d8dc:	8f998744 	lw	t9,-30908(gp)
  45d8e0:	00000000 	nop
  45d8e4:	0320f809 	jalr	t9
  45d8e8:	00000000 	nop
  45d8ec:	8fdc0018 	lw	gp,24(s8)
  45d8f0:	10000494 	b	45eb44 <process_packet+0x2ef4>
  45d8f4:	00000000 	nop
  45d8f8:	8fc40020 	lw	a0,32(s8)
  45d8fc:	24050008 	li	a1,8
  45d900:	8f998908 	lw	t9,-30456(gp)
  45d904:	00000000 	nop
  45d908:	0320f809 	jalr	t9
  45d90c:	00000000 	nop
  45d910:	8fdc0018 	lw	gp,24(s8)
  45d914:	00000000 	nop
	    return;
  45d918:	1000048a 	b	45eb44 <process_packet+0x2ef4>
  45d91c:	00000000 	nop
	}
    }

    /* Digest the message.
     * Padding must be removed to make hashing work.
     * Padding comes from encryption (so this code must be after decryption).
     * Padding rules are described before the definition of
     * struct isakmp_hdr in packet.h.
     */
    {
	struct payload_digest *pd = md->digest;
  45d920:	8fc20020 	lw	v0,32(s8)
  45d924:	00000000 	nop
  45d928:	244200e4 	addiu	v0,v0,228
  45d92c:	afc20034 	sw	v0,52(s8)
	int np = md->hdr.isa_np;
  45d930:	8fc20020 	lw	v0,32(s8)
  45d934:	00000000 	nop
  45d938:	90420080 	lbu	v0,128(v0)
  45d93c:	00000000 	nop
  45d940:	afc20038 	sw	v0,56(s8)
	lset_t needed = smc->req_payloads;
  45d944:	8fc20024 	lw	v0,36(s8)
  45d948:	00000000 	nop
  45d94c:	8c430014 	lw	v1,20(v0)
  45d950:	8c420010 	lw	v0,16(v0)
  45d954:	00000000 	nop
  45d958:	afc20040 	sw	v0,64(s8)
  45d95c:	afc30044 	sw	v1,68(s8)
	const char *excuse
	    = LALLIN(smc->flags, SMF_PSK_AUTH | SMF_FIRST_ENCRYPTED_INPUT)
  45d960:	8fc20024 	lw	v0,36(s8)
  45d964:	00000000 	nop
  45d968:	8c440008 	lw	a0,8(v0)
  45d96c:	8c45000c 	lw	a1,12(v0)
  45d970:	24020000 	li	v0,0
  45d974:	24030202 	li	v1,514
  45d978:	00822024 	and	a0,a0,v0
  45d97c:	00a32824 	and	a1,a1,v1
  45d980:	afc40070 	sw	a0,112(s8)
  45d984:	afc50074 	sw	a1,116(s8)
  45d988:	8fc20070 	lw	v0,112(s8)
  45d98c:	00000000 	nop
  45d990:	1440000d 	bnez	v0,45d9c8 <process_packet+0x1d78>
  45d994:	00000000 	nop
  45d998:	24020202 	li	v0,514
  45d99c:	8fc30074 	lw	v1,116(s8)
  45d9a0:	00000000 	nop
  45d9a4:	14620008 	bne	v1,v0,45d9c8 <process_packet+0x1d78>
  45d9a8:	00000000 	nop
  45d9ac:	8f86802c 	lw	a2,-32724(gp)
  45d9b0:	00000000 	nop
  45d9b4:	24c6212c 	addiu	a2,a2,8492
  45d9b8:	00000000 	nop
  45d9bc:	afc60068 	sw	a2,104(s8)
  45d9c0:	10000006 	b	45d9dc <process_packet+0x1d8c>
  45d9c4:	00000000 	nop
  45d9c8:	8f87802c 	lw	a3,-32724(gp)
  45d9cc:	00000000 	nop
  45d9d0:	24e71898 	addiu	a3,a3,6296
  45d9d4:	00000000 	nop
  45d9d8:	afc70068 	sw	a3,104(s8)
  45d9dc:	8fc80068 	lw	t0,104(s8)
  45d9e0:	00000000 	nop
  45d9e4:	afc80048 	sw	t0,72(s8)
		? "probable authentication failure (mismatch of preshared secrets?): "
		: "";

	while (np != ISAKMP_NEXT_NONE)
  45d9e8:	8fc20038 	lw	v0,56(s8)
  45d9ec:	00000000 	nop
  45d9f0:	14400003 	bnez	v0,45da00 <process_packet+0x1db0>
  45d9f4:	00000000 	nop
  45d9f8:	100001a5 	b	45e090 <process_packet+0x2440>
  45d9fc:	00000000 	nop
	{
	    struct_desc *sd;

#ifndef NO_MSL2TP_HACK
	    /* 
	     * jjo: very ugly M$L2TP hack...
	     * 
	     * sometimes M$L2TP sends ISAKMP_NEXT_VID instead of 
	     * ISAKMP_NEXT_NONE in last payload
	     */
	    if (np == ISAKMP_NEXT_VID && md->message_pbs.roof == md->message_pbs.cur) {
  45da00:	8fc30038 	lw	v1,56(s8)
  45da04:	2402000d 	li	v0,13
  45da08:	14620017 	bne	v1,v0,45da68 <process_packet+0x1e18>
  45da0c:	00000000 	nop
  45da10:	8fc20020 	lw	v0,32(s8)
  45da14:	00000000 	nop
  45da18:	8c430064 	lw	v1,100(v0)
  45da1c:	8fc20020 	lw	v0,32(s8)
  45da20:	00000000 	nop
  45da24:	8c420060 	lw	v0,96(v0)
  45da28:	00000000 	nop
  45da2c:	1462000e 	bne	v1,v0,45da68 <process_packet+0x1e18>
  45da30:	00000000 	nop
		    loglog(RC_LOG_SERIOUS, "PAYLOAD_MALFORMED: peer specified ISAKMP_NEXT_VID instead of ISAKMP_NEXT_NONE in last payload: MSL2TP_HACK enabled");
  45da34:	24040003 	li	a0,3
  45da38:	8f85802c 	lw	a1,-32724(gp)
  45da3c:	00000000 	nop
  45da40:	24a52170 	addiu	a1,a1,8560
  45da44:	8f998c48 	lw	t9,-29624(gp)
  45da48:	00000000 	nop
  45da4c:	0320f809 	jalr	t9
  45da50:	00000000 	nop
  45da54:	8fdc0018 	lw	gp,24(s8)
  45da58:	00000000 	nop
		    np = ISAKMP_NEXT_NONE;
  45da5c:	afc00038 	sw	zero,56(s8)
		    break;
  45da60:	1000018b 	b	45e090 <process_packet+0x2440>
  45da64:	00000000 	nop
	    }
#endif

	    sd = np < ISAKMP_NEXT_ROOF? payload_descs[np] : NULL;
  45da68:	8fc20038 	lw	v0,56(s8)
  45da6c:	00000000 	nop
  45da70:	28420011 	slti	v0,v0,17
  45da74:	1040000c 	beqz	v0,45daa8 <process_packet+0x1e58>
  45da78:	00000000 	nop
  45da7c:	8fc20038 	lw	v0,56(s8)
  45da80:	00000000 	nop
  45da84:	00021080 	sll	v0,v0,0x2
  45da88:	8f8184c8 	lw	at,-31544(gp)
  45da8c:	00000000 	nop
  45da90:	00221021 	addu	v0,at,v0
  45da94:	8c420000 	lw	v0,0(v0)
  45da98:	00000000 	nop
  45da9c:	afc2004c 	sw	v0,76(s8)
  45daa0:	10000002 	b	45daac <process_packet+0x1e5c>
  45daa4:	00000000 	nop
  45daa8:	afc0004c 	sw	zero,76(s8)

	    if (pd == &md->digest[PAYLIMIT])
  45daac:	8fc20020 	lw	v0,32(s8)
  45dab0:	00000000 	nop
  45dab4:	244304a4 	addiu	v1,v0,1188
  45dab8:	8fc20034 	lw	v0,52(s8)
  45dabc:	00000000 	nop
  45dac0:	14430024 	bne	v0,v1,45db54 <process_packet+0x1f04>
  45dac4:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "more than %d payloads in message; ignored", PAYLIMIT);
  45dac8:	24040003 	li	a0,3
  45dacc:	8f85802c 	lw	a1,-32724(gp)
  45dad0:	00000000 	nop
  45dad4:	24a521e4 	addiu	a1,a1,8676
  45dad8:	24060014 	li	a2,20
  45dadc:	8f998c48 	lw	t9,-29624(gp)
  45dae0:	00000000 	nop
  45dae4:	0320f809 	jalr	t9
  45dae8:	00000000 	nop
  45daec:	8fdc0018 	lw	gp,24(s8)
  45daf0:	00000000 	nop
		SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45daf4:	8fc2002c 	lw	v0,44(s8)
  45daf8:	00000000 	nop
  45dafc:	1040000b 	beqz	v0,45db2c <process_packet+0x1edc>
  45db00:	00000000 	nop
  45db04:	8fc4002c 	lw	a0,44(s8)
  45db08:	8fc50030 	lw	a1,48(s8)
  45db0c:	24060010 	li	a2,16
  45db10:	8f998744 	lw	t9,-30908(gp)
  45db14:	00000000 	nop
  45db18:	0320f809 	jalr	t9
  45db1c:	00000000 	nop
  45db20:	8fdc0018 	lw	gp,24(s8)
  45db24:	10000407 	b	45eb44 <process_packet+0x2ef4>
  45db28:	00000000 	nop
  45db2c:	8fc40020 	lw	a0,32(s8)
  45db30:	24050010 	li	a1,16
  45db34:	8f998908 	lw	t9,-30456(gp)
  45db38:	00000000 	nop
  45db3c:	0320f809 	jalr	t9
  45db40:	00000000 	nop
  45db44:	8fdc0018 	lw	gp,24(s8)
  45db48:	00000000 	nop
		return;
  45db4c:	100003fd 	b	45eb44 <process_packet+0x2ef4>
  45db50:	00000000 	nop
	    }

#ifdef NAT_TRAVERSAL
	    switch (np)
  45db54:	8fc90038 	lw	t1,56(s8)
  45db58:	00000000 	nop
  45db5c:	afc90078 	sw	t1,120(s8)
  45db60:	8fc30078 	lw	v1,120(s8)
  45db64:	00000000 	nop
  45db68:	28620011 	slti	v0,v1,17
  45db6c:	10400012 	beqz	v0,45dbb8 <process_packet+0x1f68>
  45db70:	00000000 	nop
  45db74:	8fc60078 	lw	a2,120(s8)
  45db78:	00000000 	nop
  45db7c:	28c2000f 	slti	v0,a2,15
  45db80:	1440000d 	bnez	v0,45dbb8 <process_packet+0x1f68>
  45db84:	00000000 	nop
	    {
		case ISAKMP_NEXT_NATD_RFC:
		case ISAKMP_NEXT_NATOA_RFC:
		    if ((!st) || (!(st->nat_traversal & NAT_T_WITH_RFC_VALUES))) {
  45db88:	8fc2002c 	lw	v0,44(s8)
  45db8c:	00000000 	nop
  45db90:	10400008 	beqz	v0,45dbb4 <process_packet+0x1f64>
  45db94:	00000000 	nop
  45db98:	8fc2002c 	lw	v0,44(s8)
  45db9c:	00000000 	nop
  45dba0:	8c420264 	lw	v0,612(v0)
  45dba4:	00000000 	nop
  45dba8:	30420008 	andi	v0,v0,0x8
  45dbac:	14400002 	bnez	v0,45dbb8 <process_packet+0x1f68>
  45dbb0:	00000000 	nop
			/*
			 * don't accept NAT-D/NAT-OA reloc directly in message, unless
			 * we're using NAT-T RFC
			 */
			sd = NULL;
  45dbb4:	afc0004c 	sw	zero,76(s8)
		    }
		    break;
	    }
#endif

	    if (sd == NULL)
  45dbb8:	8fc2004c 	lw	v0,76(s8)
  45dbbc:	00000000 	nop
  45dbc0:	14400075 	bnez	v0,45dd98 <process_packet+0x2148>
  45dbc4:	00000000 	nop
	    {
		/* payload type is out of range or requires special handling */
		switch (np)
  45dbc8:	8fc70038 	lw	a3,56(s8)
  45dbcc:	00000000 	nop
  45dbd0:	afc7007c 	sw	a3,124(s8)
  45dbd4:	24020082 	li	v0,130
  45dbd8:	8fc8007c 	lw	t0,124(s8)
  45dbdc:	00000000 	nop
  45dbe0:	11020028 	beq	t0,v0,45dc84 <process_packet+0x2034>
  45dbe4:	00000000 	nop
  45dbe8:	8fc9007c 	lw	t1,124(s8)
  45dbec:	00000000 	nop
  45dbf0:	29220083 	slti	v0,t1,131
  45dbf4:	10400008 	beqz	v0,45dc18 <process_packet+0x1fc8>
  45dbf8:	00000000 	nop
  45dbfc:	24020005 	li	v0,5
  45dc00:	8fc3007c 	lw	v1,124(s8)
  45dc04:	00000000 	nop
  45dc08:	1062000a 	beq	v1,v0,45dc34 <process_packet+0x1fe4>
  45dc0c:	00000000 	nop
  45dc10:	10000036 	b	45dcec <process_packet+0x209c>
  45dc14:	00000000 	nop
  45dc18:	24020083 	li	v0,131
  45dc1c:	8fc6007c 	lw	a2,124(s8)
  45dc20:	00000000 	nop
  45dc24:	10c20024 	beq	a2,v0,45dcb8 <process_packet+0x2068>
  45dc28:	00000000 	nop
  45dc2c:	1000002f 	b	45dcec <process_packet+0x209c>
  45dc30:	00000000 	nop
		{
		case ISAKMP_NEXT_ID:
		    sd = IS_PHASE1(from_state)
  45dc34:	8fc20030 	lw	v0,48(s8)
  45dc38:	00000000 	nop
  45dc3c:	2c420003 	sltiu	v0,v0,3
  45dc40:	1440000b 	bnez	v0,45dc70 <process_packet+0x2020>
  45dc44:	00000000 	nop
  45dc48:	8fc20030 	lw	v0,48(s8)
  45dc4c:	00000000 	nop
  45dc50:	2c420010 	sltiu	v0,v0,16
  45dc54:	10400006 	beqz	v0,45dc70 <process_packet+0x2020>
  45dc58:	00000000 	nop
  45dc5c:	8f828074 	lw	v0,-32652(gp)
  45dc60:	00000000 	nop
  45dc64:	afc2004c 	sw	v0,76(s8)
  45dc68:	1000004b 	b	45dd98 <process_packet+0x2148>
  45dc6c:	00000000 	nop
  45dc70:	8f828988 	lw	v0,-30328(gp)
  45dc74:	00000000 	nop
  45dc78:	afc2004c 	sw	v0,76(s8)
			? &isakmp_identification_desc : &isakmp_ipsec_identification_desc;
		    break;
  45dc7c:	10000046 	b	45dd98 <process_packet+0x2148>
  45dc80:	00000000 	nop
#ifdef NAT_TRAVERSAL
		case ISAKMP_NEXT_NATD_DRAFTS:
		    np = ISAKMP_NEXT_NATD_RFC;  /* NAT-D relocated */
  45dc84:	2402000f 	li	v0,15
  45dc88:	afc20038 	sw	v0,56(s8)
		    sd = payload_descs[np];
  45dc8c:	8fc20038 	lw	v0,56(s8)
  45dc90:	00000000 	nop
  45dc94:	00021080 	sll	v0,v0,0x2
  45dc98:	8f8184c8 	lw	at,-31544(gp)
  45dc9c:	00000000 	nop
  45dca0:	00221021 	addu	v0,at,v0
  45dca4:	8c420000 	lw	v0,0(v0)
  45dca8:	00000000 	nop
  45dcac:	afc2004c 	sw	v0,76(s8)
		    break;
  45dcb0:	10000039 	b	45dd98 <process_packet+0x2148>
  45dcb4:	00000000 	nop
		case ISAKMP_NEXT_NATOA_DRAFTS:
		    np = ISAKMP_NEXT_NATOA_RFC;  /* NAT-OA relocated */
  45dcb8:	24020010 	li	v0,16
  45dcbc:	afc20038 	sw	v0,56(s8)
		    sd = payload_descs[np];
  45dcc0:	8fc20038 	lw	v0,56(s8)
  45dcc4:	00000000 	nop
  45dcc8:	00021080 	sll	v0,v0,0x2
  45dccc:	8f8184c8 	lw	at,-31544(gp)
  45dcd0:	00000000 	nop
  45dcd4:	00221021 	addu	v0,at,v0
  45dcd8:	8c420000 	lw	v0,0(v0)
  45dcdc:	00000000 	nop
  45dce0:	afc2004c 	sw	v0,76(s8)
		    break;
  45dce4:	1000002c 	b	45dd98 <process_packet+0x2148>
  45dce8:	00000000 	nop
#endif
		default:
		    loglog(RC_LOG_SERIOUS, "%smessage ignored because it contains an unknown or"
  45dcec:	8f8483f4 	lw	a0,-31756(gp)
  45dcf0:	8fc50038 	lw	a1,56(s8)
  45dcf4:	8f9987fc 	lw	t9,-30724(gp)
  45dcf8:	00000000 	nop
  45dcfc:	0320f809 	jalr	t9
  45dd00:	00000000 	nop
  45dd04:	8fdc0018 	lw	gp,24(s8)
  45dd08:	24040003 	li	a0,3
  45dd0c:	8f85802c 	lw	a1,-32724(gp)
  45dd10:	00000000 	nop
  45dd14:	24a52210 	addiu	a1,a1,8720
  45dd18:	8fc60048 	lw	a2,72(s8)
  45dd1c:	00403821 	move	a3,v0
  45dd20:	8f998c48 	lw	t9,-29624(gp)
  45dd24:	00000000 	nop
  45dd28:	0320f809 	jalr	t9
  45dd2c:	00000000 	nop
  45dd30:	8fdc0018 	lw	gp,24(s8)
  45dd34:	00000000 	nop
			" unexpected payload type (%s) at the outermost level"
			, excuse, enum_show(&payload_names, np));
		    SEND_NOTIFICATION(INVALID_PAYLOAD_TYPE);
  45dd38:	8fc2002c 	lw	v0,44(s8)
  45dd3c:	00000000 	nop
  45dd40:	1040000b 	beqz	v0,45dd70 <process_packet+0x2120>
  45dd44:	00000000 	nop
  45dd48:	8fc4002c 	lw	a0,44(s8)
  45dd4c:	8fc50030 	lw	a1,48(s8)
  45dd50:	24060001 	li	a2,1
  45dd54:	8f998744 	lw	t9,-30908(gp)
  45dd58:	00000000 	nop
  45dd5c:	0320f809 	jalr	t9
  45dd60:	00000000 	nop
  45dd64:	8fdc0018 	lw	gp,24(s8)
  45dd68:	10000376 	b	45eb44 <process_packet+0x2ef4>
  45dd6c:	00000000 	nop
  45dd70:	8fc40020 	lw	a0,32(s8)
  45dd74:	24050001 	li	a1,1
  45dd78:	8f998908 	lw	t9,-30456(gp)
  45dd7c:	00000000 	nop
  45dd80:	0320f809 	jalr	t9
  45dd84:	00000000 	nop
  45dd88:	8fdc0018 	lw	gp,24(s8)
  45dd8c:	00000000 	nop
		    return;
  45dd90:	1000036c 	b	45eb44 <process_packet+0x2ef4>
  45dd94:	00000000 	nop
		}
	    }

	    {
		lset_t s = LELEM(np);
  45dd98:	24020000 	li	v0,0
  45dd9c:	24030001 	li	v1,1
  45dda0:	8fc40038 	lw	a0,56(s8)
  45dda4:	00000000 	nop
  45dda8:	00042e80 	sll	a1,a0,0x1a
  45ddac:	04a10004 	bgez	a1,45ddc0 <process_packet+0x2170>
  45ddb0:	00000000 	nop
  45ddb4:	00834004 	sllv	t0,v1,a0
  45ddb8:	10000007 	b	45ddd8 <process_packet+0x2188>
  45ddbc:	00004821 	move	t1,zero
  45ddc0:	10a00004 	beqz	a1,45ddd4 <process_packet+0x2184>
  45ddc4:	00824004 	sllv	t0,v0,a0
  45ddc8:	00042823 	negu	a1,a0
  45ddcc:	00a32806 	srlv	a1,v1,a1
  45ddd0:	01054025 	or	t0,t0,a1
  45ddd4:	00834804 	sllv	t1,v1,a0
  45ddd8:	01001021 	move	v0,t0
  45dddc:	01201821 	move	v1,t1
  45dde0:	afc20050 	sw	v0,80(s8)
  45dde4:	afc30054 	sw	v1,84(s8)

		if (0 == (s & (needed | smc->opt_payloads
		| LELEM(ISAKMP_NEXT_N) | LELEM(ISAKMP_NEXT_D))))
  45dde8:	8fc20024 	lw	v0,36(s8)
  45ddec:	00000000 	nop
  45ddf0:	8c440018 	lw	a0,24(v0)
  45ddf4:	8c45001c 	lw	a1,28(v0)
  45ddf8:	8fc20040 	lw	v0,64(s8)
  45ddfc:	8fc30044 	lw	v1,68(s8)
  45de00:	00442025 	or	a0,v0,a0
  45de04:	00652825 	or	a1,v1,a1
  45de08:	24020000 	li	v0,0
  45de0c:	24031800 	li	v1,6144
  45de10:	00822025 	or	a0,a0,v0
  45de14:	00a32825 	or	a1,a1,v1
  45de18:	8fc20050 	lw	v0,80(s8)
  45de1c:	8fc30054 	lw	v1,84(s8)
  45de20:	00822024 	and	a0,a0,v0
  45de24:	00a32824 	and	a1,a1,v1
  45de28:	00801021 	move	v0,a0
  45de2c:	00451025 	or	v0,v0,a1
  45de30:	1440002c 	bnez	v0,45dee4 <process_packet+0x2294>
  45de34:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "%smessage ignored because it "
  45de38:	8f8483f4 	lw	a0,-31756(gp)
  45de3c:	8fc50038 	lw	a1,56(s8)
  45de40:	8f9987fc 	lw	t9,-30724(gp)
  45de44:	00000000 	nop
  45de48:	0320f809 	jalr	t9
  45de4c:	00000000 	nop
  45de50:	8fdc0018 	lw	gp,24(s8)
  45de54:	24040003 	li	a0,3
  45de58:	8f85802c 	lw	a1,-32724(gp)
  45de5c:	00000000 	nop
  45de60:	24a52278 	addiu	a1,a1,8824
  45de64:	8fc60048 	lw	a2,72(s8)
  45de68:	00403821 	move	a3,v0
  45de6c:	8f998c48 	lw	t9,-29624(gp)
  45de70:	00000000 	nop
  45de74:	0320f809 	jalr	t9
  45de78:	00000000 	nop
  45de7c:	8fdc0018 	lw	gp,24(s8)
  45de80:	00000000 	nop
			"contains an unexpected payload type (%s)."
			, excuse, enum_show(&payload_names, np));
		    SEND_NOTIFICATION(INVALID_PAYLOAD_TYPE);
  45de84:	8fc2002c 	lw	v0,44(s8)
  45de88:	00000000 	nop
  45de8c:	1040000b 	beqz	v0,45debc <process_packet+0x226c>
  45de90:	00000000 	nop
  45de94:	8fc4002c 	lw	a0,44(s8)
  45de98:	8fc50030 	lw	a1,48(s8)
  45de9c:	24060001 	li	a2,1
  45dea0:	8f998744 	lw	t9,-30908(gp)
  45dea4:	00000000 	nop
  45dea8:	0320f809 	jalr	t9
  45deac:	00000000 	nop
  45deb0:	8fdc0018 	lw	gp,24(s8)
  45deb4:	10000323 	b	45eb44 <process_packet+0x2ef4>
  45deb8:	00000000 	nop
  45debc:	8fc40020 	lw	a0,32(s8)
  45dec0:	24050001 	li	a1,1
  45dec4:	8f998908 	lw	t9,-30456(gp)
  45dec8:	00000000 	nop
  45decc:	0320f809 	jalr	t9
  45ded0:	00000000 	nop
  45ded4:	8fdc0018 	lw	gp,24(s8)
  45ded8:	00000000 	nop
		    return;
  45dedc:	10000319 	b	45eb44 <process_packet+0x2ef4>
  45dee0:	00000000 	nop
		}
		needed &= ~s;
  45dee4:	8fc20050 	lw	v0,80(s8)
  45dee8:	8fc30054 	lw	v1,84(s8)
  45deec:	00022027 	nor	a0,zero,v0
  45def0:	00032827 	nor	a1,zero,v1
  45def4:	8fc20040 	lw	v0,64(s8)
  45def8:	8fc30044 	lw	v1,68(s8)
  45defc:	00441024 	and	v0,v0,a0
  45df00:	00651824 	and	v1,v1,a1
  45df04:	afc20040 	sw	v0,64(s8)
  45df08:	afc30044 	sw	v1,68(s8)
	    }

	    if (!in_struct(&pd->payload, sd, &md->message_pbs, &pd->pbs))
  45df0c:	8fc20034 	lw	v0,52(s8)
  45df10:	00000000 	nop
  45df14:	24430020 	addiu	v1,v0,32
  45df18:	8fc20020 	lw	v0,32(s8)
  45df1c:	00000000 	nop
  45df20:	24420050 	addiu	v0,v0,80
  45df24:	00602021 	move	a0,v1
  45df28:	8fc5004c 	lw	a1,76(s8)
  45df2c:	00403021 	move	a2,v0
  45df30:	8fc70034 	lw	a3,52(s8)
  45df34:	8f998b3c 	lw	t9,-29892(gp)
  45df38:	00000000 	nop
  45df3c:	0320f809 	jalr	t9
  45df40:	00000000 	nop
  45df44:	8fdc0018 	lw	gp,24(s8)
  45df48:	14400024 	bnez	v0,45dfdc <process_packet+0x238c>
  45df4c:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%smalformed payload in packet", excuse);
  45df50:	24040003 	li	a0,3
  45df54:	8f85802c 	lw	a1,-32724(gp)
  45df58:	00000000 	nop
  45df5c:	24a522c0 	addiu	a1,a1,8896
  45df60:	8fc60048 	lw	a2,72(s8)
  45df64:	8f998c48 	lw	t9,-29624(gp)
  45df68:	00000000 	nop
  45df6c:	0320f809 	jalr	t9
  45df70:	00000000 	nop
  45df74:	8fdc0018 	lw	gp,24(s8)
  45df78:	00000000 	nop
		SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45df7c:	8fc2002c 	lw	v0,44(s8)
  45df80:	00000000 	nop
  45df84:	1040000b 	beqz	v0,45dfb4 <process_packet+0x2364>
  45df88:	00000000 	nop
  45df8c:	8fc4002c 	lw	a0,44(s8)
  45df90:	8fc50030 	lw	a1,48(s8)
  45df94:	24060010 	li	a2,16
  45df98:	8f998744 	lw	t9,-30908(gp)
  45df9c:	00000000 	nop
  45dfa0:	0320f809 	jalr	t9
  45dfa4:	00000000 	nop
  45dfa8:	8fdc0018 	lw	gp,24(s8)
  45dfac:	100002e5 	b	45eb44 <process_packet+0x2ef4>
  45dfb0:	00000000 	nop
  45dfb4:	8fc40020 	lw	a0,32(s8)
  45dfb8:	24050010 	li	a1,16
  45dfbc:	8f998908 	lw	t9,-30456(gp)
  45dfc0:	00000000 	nop
  45dfc4:	0320f809 	jalr	t9
  45dfc8:	00000000 	nop
  45dfcc:	8fdc0018 	lw	gp,24(s8)
  45dfd0:	00000000 	nop
		return;
  45dfd4:	100002db 	b	45eb44 <process_packet+0x2ef4>
  45dfd8:	00000000 	nop
	    }

	    /* place this payload at the end of the chain for this type */
	    {
		struct payload_digest **p;

		for (p = &md->chain[np]; *p != NULL; p = &(*p)->next)
  45dfdc:	8fc20038 	lw	v0,56(s8)
  45dfe0:	00000000 	nop
  45dfe4:	00021880 	sll	v1,v0,0x2
  45dfe8:	8fc20020 	lw	v0,32(s8)
  45dfec:	00000000 	nop
  45dff0:	00621021 	addu	v0,v1,v0
  45dff4:	244204a8 	addiu	v0,v0,1192
  45dff8:	afc20058 	sw	v0,88(s8)
  45dffc:	8fc20058 	lw	v0,88(s8)
  45e000:	00000000 	nop
  45e004:	8c420000 	lw	v0,0(v0)
  45e008:	00000000 	nop
  45e00c:	14400018 	bnez	v0,45e070 <process_packet+0x2420>
  45e010:	00000000 	nop
		    ;
		*p = pd;
  45e014:	8fc30034 	lw	v1,52(s8)
  45e018:	8fc20058 	lw	v0,88(s8)
  45e01c:	00000000 	nop
  45e020:	ac430000 	sw	v1,0(v0)
		pd->next = NULL;
  45e024:	8fc20034 	lw	v0,52(s8)
  45e028:	00000000 	nop
  45e02c:	ac40002c 	sw	zero,44(v0)
	    }

	    np = pd->payload.generic.isag_np;
  45e030:	8fc20034 	lw	v0,52(s8)
  45e034:	00000000 	nop
  45e038:	90420020 	lbu	v0,32(v0)
  45e03c:	00000000 	nop
  45e040:	afc20038 	sw	v0,56(s8)
	    pd++;
  45e044:	8fc20034 	lw	v0,52(s8)
  45e048:	00000000 	nop
  45e04c:	24420030 	addiu	v0,v0,48
  45e050:	afc20034 	sw	v0,52(s8)

	    /* since we've digested one payload happily, it is probably
	     * the case that any decryption worked.  So we will not suggest
	     * encryption failure as an excuse for subsequent payload
	     * problems.
	     */
	    excuse = "";
  45e054:	8f82802c 	lw	v0,-32724(gp)
  45e058:	00000000 	nop
  45e05c:	24421898 	addiu	v0,v0,6296
  45e060:	00000000 	nop
  45e064:	afc20048 	sw	v0,72(s8)
  45e068:	1000fe5f 	b	45d9e8 <process_packet+0x1d98>
  45e06c:	00000000 	nop
  45e070:	8fc20058 	lw	v0,88(s8)
  45e074:	00000000 	nop
  45e078:	8c420000 	lw	v0,0(v0)
  45e07c:	00000000 	nop
  45e080:	2442002c 	addiu	v0,v0,44
  45e084:	afc20058 	sw	v0,88(s8)
  45e088:	1000ffdc 	b	45dffc <process_packet+0x23ac>
  45e08c:	00000000 	nop
	}

	md->digest_roof = pd;
  45e090:	8fc30034 	lw	v1,52(s8)
  45e094:	8fc20020 	lw	v0,32(s8)
  45e098:	00000000 	nop
  45e09c:	ac4304a4 	sw	v1,1188(v0)

	DBG(DBG_PARSING,
  45e0a0:	8f8284f8 	lw	v0,-31496(gp)
  45e0a4:	00000000 	nop
  45e0a8:	8c420000 	lw	v0,0(v0)
  45e0ac:	00000000 	nop
  45e0b0:	30420004 	andi	v0,v0,0x4
  45e0b4:	10400020 	beqz	v0,45e138 <process_packet+0x24e8>
  45e0b8:	00000000 	nop
  45e0bc:	8fc20020 	lw	v0,32(s8)
  45e0c0:	00000000 	nop
  45e0c4:	24430050 	addiu	v1,v0,80
  45e0c8:	8fc20020 	lw	v0,32(s8)
  45e0cc:	00000000 	nop
  45e0d0:	24420050 	addiu	v0,v0,80
  45e0d4:	8c630014 	lw	v1,20(v1)
  45e0d8:	8c420010 	lw	v0,16(v0)
  45e0dc:	00000000 	nop
  45e0e0:	10620015 	beq	v1,v0,45e138 <process_packet+0x24e8>
  45e0e4:	00000000 	nop
  45e0e8:	8fc20020 	lw	v0,32(s8)
  45e0ec:	00000000 	nop
  45e0f0:	24430050 	addiu	v1,v0,80
  45e0f4:	8fc20020 	lw	v0,32(s8)
  45e0f8:	00000000 	nop
  45e0fc:	24420050 	addiu	v0,v0,80
  45e100:	8c630014 	lw	v1,20(v1)
  45e104:	8c420010 	lw	v0,16(v0)
  45e108:	00000000 	nop
  45e10c:	00621023 	subu	v0,v1,v0
  45e110:	8f84802c 	lw	a0,-32724(gp)
  45e114:	00000000 	nop
  45e118:	248422e0 	addiu	a0,a0,8928
  45e11c:	00402821 	move	a1,v0
  45e120:	8f9983b8 	lw	t9,-31816(gp)
  45e124:	00000000 	nop
  45e128:	0320f809 	jalr	t9
  45e12c:	00000000 	nop
  45e130:	8fdc0018 	lw	gp,24(s8)
  45e134:	00000000 	nop
	    if (pbs_left(&md->message_pbs) != 0)
		DBG_log("removing %d bytes of padding", (int) pbs_left(&md->message_pbs)));

	md->message_pbs.roof = md->message_pbs.cur;
  45e138:	8fc20020 	lw	v0,32(s8)
  45e13c:	00000000 	nop
  45e140:	8c430060 	lw	v1,96(v0)
  45e144:	8fc20020 	lw	v0,32(s8)
  45e148:	00000000 	nop
  45e14c:	ac430064 	sw	v1,100(v0)

	/* check that all mandatory payloads appeared */

	if (needed != 0)
  45e150:	8fc20040 	lw	v0,64(s8)
  45e154:	8fc30044 	lw	v1,68(s8)
  45e158:	00000000 	nop
  45e15c:	00431025 	or	v0,v0,v1
  45e160:	10400035 	beqz	v0,45e238 <process_packet+0x25e8>
  45e164:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "message for %s is missing payloads %s"
  45e168:	8f8483b0 	lw	a0,-31824(gp)
  45e16c:	8fc50030 	lw	a1,48(s8)
  45e170:	8f9987fc 	lw	t9,-30724(gp)
  45e174:	00000000 	nop
  45e178:	0320f809 	jalr	t9
  45e17c:	00000000 	nop
  45e180:	8fdc0018 	lw	gp,24(s8)
  45e184:	00408021 	move	s0,v0
  45e188:	8f8487d4 	lw	a0,-30764(gp)
  45e18c:	8fc60040 	lw	a2,64(s8)
  45e190:	8fc70044 	lw	a3,68(s8)
  45e194:	8f9988c4 	lw	t9,-30524(gp)
  45e198:	00000000 	nop
  45e19c:	0320f809 	jalr	t9
  45e1a0:	00000000 	nop
  45e1a4:	8fdc0018 	lw	gp,24(s8)
  45e1a8:	24040003 	li	a0,3
  45e1ac:	8f85802c 	lw	a1,-32724(gp)
  45e1b0:	00000000 	nop
  45e1b4:	24a52300 	addiu	a1,a1,8960
  45e1b8:	02003021 	move	a2,s0
  45e1bc:	00403821 	move	a3,v0
  45e1c0:	8f998c48 	lw	t9,-29624(gp)
  45e1c4:	00000000 	nop
  45e1c8:	0320f809 	jalr	t9
  45e1cc:	00000000 	nop
  45e1d0:	8fdc0018 	lw	gp,24(s8)
  45e1d4:	00000000 	nop
		, enum_show(&state_names, from_state)
		, bitnamesof(payload_name, needed));
	    SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45e1d8:	8fc2002c 	lw	v0,44(s8)
  45e1dc:	00000000 	nop
  45e1e0:	1040000b 	beqz	v0,45e210 <process_packet+0x25c0>
  45e1e4:	00000000 	nop
  45e1e8:	8fc4002c 	lw	a0,44(s8)
  45e1ec:	8fc50030 	lw	a1,48(s8)
  45e1f0:	24060010 	li	a2,16
  45e1f4:	8f998744 	lw	t9,-30908(gp)
  45e1f8:	00000000 	nop
  45e1fc:	0320f809 	jalr	t9
  45e200:	00000000 	nop
  45e204:	8fdc0018 	lw	gp,24(s8)
  45e208:	1000024e 	b	45eb44 <process_packet+0x2ef4>
  45e20c:	00000000 	nop
  45e210:	8fc40020 	lw	a0,32(s8)
  45e214:	24050010 	li	a1,16
  45e218:	8f998908 	lw	t9,-30456(gp)
  45e21c:	00000000 	nop
  45e220:	0320f809 	jalr	t9
  45e224:	00000000 	nop
  45e228:	8fdc0018 	lw	gp,24(s8)
  45e22c:	00000000 	nop
	    return;
  45e230:	10000244 	b	45eb44 <process_packet+0x2ef4>
  45e234:	00000000 	nop
	}
    }

    /* more sanity checking: enforce most ordering constraints */

    if (IS_PHASE1(from_state))
  45e238:	8fc20030 	lw	v0,48(s8)
  45e23c:	00000000 	nop
  45e240:	2c420003 	sltiu	v0,v0,3
  45e244:	14400034 	bnez	v0,45e318 <process_packet+0x26c8>
  45e248:	00000000 	nop
  45e24c:	8fc20030 	lw	v0,48(s8)
  45e250:	00000000 	nop
  45e254:	2c420010 	sltiu	v0,v0,16
  45e258:	1040002f 	beqz	v0,45e318 <process_packet+0x26c8>
  45e25c:	00000000 	nop
    {
	/* rfc2409: The Internet Key Exchange (IKE), 5 Exchanges:
	 * "The SA payload MUST precede all other payloads in a phase 1 exchange."
	 */
	if (md->chain[ISAKMP_NEXT_SA] != NULL
	&& md->hdr.isa_np != ISAKMP_NEXT_SA)
  45e260:	8fc20020 	lw	v0,32(s8)
  45e264:	00000000 	nop
  45e268:	8c4204ac 	lw	v0,1196(v0)
  45e26c:	00000000 	nop
  45e270:	10400109 	beqz	v0,45e698 <process_packet+0x2a48>
  45e274:	00000000 	nop
  45e278:	8fc20020 	lw	v0,32(s8)
  45e27c:	00000000 	nop
  45e280:	90430080 	lbu	v1,128(v0)
  45e284:	24020001 	li	v0,1
  45e288:	10620103 	beq	v1,v0,45e698 <process_packet+0x2a48>
  45e28c:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "malformed Phase 1 message: does not start with an SA payload");
  45e290:	24040003 	li	a0,3
  45e294:	8f85802c 	lw	a1,-32724(gp)
  45e298:	00000000 	nop
  45e29c:	24a52328 	addiu	a1,a1,9000
  45e2a0:	8f998c48 	lw	t9,-29624(gp)
  45e2a4:	00000000 	nop
  45e2a8:	0320f809 	jalr	t9
  45e2ac:	00000000 	nop
  45e2b0:	8fdc0018 	lw	gp,24(s8)
  45e2b4:	00000000 	nop
	    SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45e2b8:	8fc2002c 	lw	v0,44(s8)
  45e2bc:	00000000 	nop
  45e2c0:	1040000b 	beqz	v0,45e2f0 <process_packet+0x26a0>
  45e2c4:	00000000 	nop
  45e2c8:	8fc4002c 	lw	a0,44(s8)
  45e2cc:	8fc50030 	lw	a1,48(s8)
  45e2d0:	24060010 	li	a2,16
  45e2d4:	8f998744 	lw	t9,-30908(gp)
  45e2d8:	00000000 	nop
  45e2dc:	0320f809 	jalr	t9
  45e2e0:	00000000 	nop
  45e2e4:	8fdc0018 	lw	gp,24(s8)
  45e2e8:	10000216 	b	45eb44 <process_packet+0x2ef4>
  45e2ec:	00000000 	nop
  45e2f0:	8fc40020 	lw	a0,32(s8)
  45e2f4:	24050010 	li	a1,16
  45e2f8:	8f998908 	lw	t9,-30456(gp)
  45e2fc:	00000000 	nop
  45e300:	0320f809 	jalr	t9
  45e304:	00000000 	nop
  45e308:	8fdc0018 	lw	gp,24(s8)
  45e30c:	00000000 	nop
	    return;
  45e310:	1000020c 	b	45eb44 <process_packet+0x2ef4>
  45e314:	00000000 	nop
	}
    }
    else if (IS_QUICK(from_state))
  45e318:	8fc20030 	lw	v0,48(s8)
  45e31c:	00000000 	nop
  45e320:	2c420015 	sltiu	v0,v0,21
  45e324:	144000dc 	bnez	v0,45e698 <process_packet+0x2a48>
  45e328:	00000000 	nop
  45e32c:	8fc20030 	lw	v0,48(s8)
  45e330:	00000000 	nop
  45e334:	2c42001a 	sltiu	v0,v0,26
  45e338:	104000d7 	beqz	v0,45e698 <process_packet+0x2a48>
  45e33c:	00000000 	nop
    {
	/* rfc2409: The Internet Key Exchange (IKE), 5.5 Phase 2 - Quick Mode
	 *
	 * "In Quick Mode, a HASH payload MUST immediately follow the ISAKMP
	 *  header and a SA payload MUST immediately follow the HASH."
	 * [NOTE: there may be more than one SA payload, so this is not
	 *  totally reasonable.  Probably all SAs should be so constrained.]
	 *
	 * "If ISAKMP is acting as a client negotiator on behalf of another
	 *  party, the identities of the parties MUST be passed as IDci and
	 *  then IDcr."
	 *
	 * "With the exception of the HASH, SA, and the optional ID payloads,
	 *  there are no payload ordering restrictions on Quick Mode."
	 */

	if (md->hdr.isa_np != ISAKMP_NEXT_HASH)
  45e340:	8fc20020 	lw	v0,32(s8)
  45e344:	00000000 	nop
  45e348:	90430080 	lbu	v1,128(v0)
  45e34c:	24020008 	li	v0,8
  45e350:	10620023 	beq	v1,v0,45e3e0 <process_packet+0x2790>
  45e354:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "malformed Quick Mode message: does not start with a HASH payload");
  45e358:	24040003 	li	a0,3
  45e35c:	8f85802c 	lw	a1,-32724(gp)
  45e360:	00000000 	nop
  45e364:	24a52368 	addiu	a1,a1,9064
  45e368:	8f998c48 	lw	t9,-29624(gp)
  45e36c:	00000000 	nop
  45e370:	0320f809 	jalr	t9
  45e374:	00000000 	nop
  45e378:	8fdc0018 	lw	gp,24(s8)
  45e37c:	00000000 	nop
	    SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45e380:	8fc2002c 	lw	v0,44(s8)
  45e384:	00000000 	nop
  45e388:	1040000b 	beqz	v0,45e3b8 <process_packet+0x2768>
  45e38c:	00000000 	nop
  45e390:	8fc4002c 	lw	a0,44(s8)
  45e394:	8fc50030 	lw	a1,48(s8)
  45e398:	24060010 	li	a2,16
  45e39c:	8f998744 	lw	t9,-30908(gp)
  45e3a0:	00000000 	nop
  45e3a4:	0320f809 	jalr	t9
  45e3a8:	00000000 	nop
  45e3ac:	8fdc0018 	lw	gp,24(s8)
  45e3b0:	100001e4 	b	45eb44 <process_packet+0x2ef4>
  45e3b4:	00000000 	nop
  45e3b8:	8fc40020 	lw	a0,32(s8)
  45e3bc:	24050010 	li	a1,16
  45e3c0:	8f998908 	lw	t9,-30456(gp)
  45e3c4:	00000000 	nop
  45e3c8:	0320f809 	jalr	t9
  45e3cc:	00000000 	nop
  45e3d0:	8fdc0018 	lw	gp,24(s8)
  45e3d4:	00000000 	nop
	    return;
  45e3d8:	100001da 	b	45eb44 <process_packet+0x2ef4>
  45e3dc:	00000000 	nop
	}

	{
	    struct payload_digest *p;
	    int i;

	    for (p = md->chain[ISAKMP_NEXT_SA], i = 1; p != NULL
  45e3e0:	8fc20020 	lw	v0,32(s8)
  45e3e4:	00000000 	nop
  45e3e8:	8c4204ac 	lw	v0,1196(v0)
  45e3ec:	00000000 	nop
  45e3f0:	afc20058 	sw	v0,88(s8)
  45e3f4:	24020001 	li	v0,1
  45e3f8:	afc2004c 	sw	v0,76(s8)
  45e3fc:	8fc20058 	lw	v0,88(s8)
  45e400:	00000000 	nop
  45e404:	14400003 	bnez	v0,45e414 <process_packet+0x27c4>
  45e408:	00000000 	nop
  45e40c:	1000003c 	b	45e500 <process_packet+0x28b0>
  45e410:	00000000 	nop
	    ; p = p->next, i++)
	    {
		if (p != &md->digest[i])
  45e414:	8fc3004c 	lw	v1,76(s8)
  45e418:	00000000 	nop
  45e41c:	00601021 	move	v0,v1
  45e420:	00021040 	sll	v0,v0,0x1
  45e424:	00431021 	addu	v0,v0,v1
  45e428:	00021900 	sll	v1,v0,0x4
  45e42c:	8fc20020 	lw	v0,32(s8)
  45e430:	00000000 	nop
  45e434:	00621021 	addu	v0,v1,v0
  45e438:	244300e4 	addiu	v1,v0,228
  45e43c:	8fc20058 	lw	v0,88(s8)
  45e440:	00000000 	nop
  45e444:	10430023 	beq	v0,v1,45e4d4 <process_packet+0x2884>
  45e448:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "malformed Quick Mode message: SA payload is in wrong position");
  45e44c:	24040003 	li	a0,3
  45e450:	8f85802c 	lw	a1,-32724(gp)
  45e454:	00000000 	nop
  45e458:	24a523ac 	addiu	a1,a1,9132
  45e45c:	8f998c48 	lw	t9,-29624(gp)
  45e460:	00000000 	nop
  45e464:	0320f809 	jalr	t9
  45e468:	00000000 	nop
  45e46c:	8fdc0018 	lw	gp,24(s8)
  45e470:	00000000 	nop
		    SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45e474:	8fc2002c 	lw	v0,44(s8)
  45e478:	00000000 	nop
  45e47c:	1040000b 	beqz	v0,45e4ac <process_packet+0x285c>
  45e480:	00000000 	nop
  45e484:	8fc4002c 	lw	a0,44(s8)
  45e488:	8fc50030 	lw	a1,48(s8)
  45e48c:	24060010 	li	a2,16
  45e490:	8f998744 	lw	t9,-30908(gp)
  45e494:	00000000 	nop
  45e498:	0320f809 	jalr	t9
  45e49c:	00000000 	nop
  45e4a0:	8fdc0018 	lw	gp,24(s8)
  45e4a4:	100001a7 	b	45eb44 <process_packet+0x2ef4>
  45e4a8:	00000000 	nop
  45e4ac:	8fc40020 	lw	a0,32(s8)
  45e4b0:	24050010 	li	a1,16
  45e4b4:	8f998908 	lw	t9,-30456(gp)
  45e4b8:	00000000 	nop
  45e4bc:	0320f809 	jalr	t9
  45e4c0:	00000000 	nop
  45e4c4:	8fdc0018 	lw	gp,24(s8)
  45e4c8:	00000000 	nop
		    return;
  45e4cc:	1000019d 	b	45eb44 <process_packet+0x2ef4>
  45e4d0:	00000000 	nop
  45e4d4:	8fc20058 	lw	v0,88(s8)
  45e4d8:	00000000 	nop
  45e4dc:	8c42002c 	lw	v0,44(v0)
  45e4e0:	00000000 	nop
  45e4e4:	afc20058 	sw	v0,88(s8)
  45e4e8:	8fc2004c 	lw	v0,76(s8)
  45e4ec:	00000000 	nop
  45e4f0:	24420001 	addiu	v0,v0,1
  45e4f4:	afc2004c 	sw	v0,76(s8)
  45e4f8:	1000ffc0 	b	45e3fc <process_packet+0x27ac>
  45e4fc:	00000000 	nop
		}
	    }
	}

	/* rfc2409: The Internet Key Exchange (IKE), 5.5 Phase 2 - Quick Mode:
	 * "If ISAKMP is acting as a client negotiator on behalf of another
	 *  party, the identities of the parties MUST be passed as IDci and
	 *  then IDcr."
	 */
	{
	    struct payload_digest *id = md->chain[ISAKMP_NEXT_ID];
  45e500:	8fc20020 	lw	v0,32(s8)
  45e504:	00000000 	nop
  45e508:	8c4204bc 	lw	v0,1212(v0)
  45e50c:	00000000 	nop
  45e510:	afc20058 	sw	v0,88(s8)

	    if (id != NULL)
  45e514:	8fc20058 	lw	v0,88(s8)
  45e518:	00000000 	nop
  45e51c:	1040005e 	beqz	v0,45e698 <process_packet+0x2a48>
  45e520:	00000000 	nop
	    {
		if (id->next == NULL || id->next->next != NULL)
  45e524:	8fc20058 	lw	v0,88(s8)
  45e528:	00000000 	nop
  45e52c:	8c42002c 	lw	v0,44(v0)
  45e530:	00000000 	nop
  45e534:	1040000b 	beqz	v0,45e564 <process_packet+0x2914>
  45e538:	00000000 	nop
  45e53c:	8fc20058 	lw	v0,88(s8)
  45e540:	00000000 	nop
  45e544:	8c42002c 	lw	v0,44(v0)
  45e548:	00000000 	nop
  45e54c:	8c42002c 	lw	v0,44(v0)
  45e550:	00000000 	nop
  45e554:	14400003 	bnez	v0,45e564 <process_packet+0x2914>
  45e558:	00000000 	nop
  45e55c:	10000023 	b	45e5ec <process_packet+0x299c>
  45e560:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "malformed Quick Mode message:"
  45e564:	24040003 	li	a0,3
  45e568:	8f85802c 	lw	a1,-32724(gp)
  45e56c:	00000000 	nop
  45e570:	24a523ec 	addiu	a1,a1,9196
  45e574:	8f998c48 	lw	t9,-29624(gp)
  45e578:	00000000 	nop
  45e57c:	0320f809 	jalr	t9
  45e580:	00000000 	nop
  45e584:	8fdc0018 	lw	gp,24(s8)
  45e588:	00000000 	nop
			" if any ID payload is present,"
			" there must be exactly two");
		    SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45e58c:	8fc2002c 	lw	v0,44(s8)
  45e590:	00000000 	nop
  45e594:	1040000b 	beqz	v0,45e5c4 <process_packet+0x2974>
  45e598:	00000000 	nop
  45e59c:	8fc4002c 	lw	a0,44(s8)
  45e5a0:	8fc50030 	lw	a1,48(s8)
  45e5a4:	24060010 	li	a2,16
  45e5a8:	8f998744 	lw	t9,-30908(gp)
  45e5ac:	00000000 	nop
  45e5b0:	0320f809 	jalr	t9
  45e5b4:	00000000 	nop
  45e5b8:	8fdc0018 	lw	gp,24(s8)
  45e5bc:	10000161 	b	45eb44 <process_packet+0x2ef4>
  45e5c0:	00000000 	nop
  45e5c4:	8fc40020 	lw	a0,32(s8)
  45e5c8:	24050010 	li	a1,16
  45e5cc:	8f998908 	lw	t9,-30456(gp)
  45e5d0:	00000000 	nop
  45e5d4:	0320f809 	jalr	t9
  45e5d8:	00000000 	nop
  45e5dc:	8fdc0018 	lw	gp,24(s8)
  45e5e0:	00000000 	nop
		    return;
  45e5e4:	10000157 	b	45eb44 <process_packet+0x2ef4>
  45e5e8:	00000000 	nop
		}
		if (id+1 != id->next)
  45e5ec:	8fc20058 	lw	v0,88(s8)
  45e5f0:	00000000 	nop
  45e5f4:	24430030 	addiu	v1,v0,48
  45e5f8:	8fc20058 	lw	v0,88(s8)
  45e5fc:	00000000 	nop
  45e600:	8c42002c 	lw	v0,44(v0)
  45e604:	00000000 	nop
  45e608:	10620023 	beq	v1,v0,45e698 <process_packet+0x2a48>
  45e60c:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "malformed Quick Mode message:"
  45e610:	24040003 	li	a0,3
  45e614:	8f85802c 	lw	a1,-32724(gp)
  45e618:	00000000 	nop
  45e61c:	24a52444 	addiu	a1,a1,9284
  45e620:	8f998c48 	lw	t9,-29624(gp)
  45e624:	00000000 	nop
  45e628:	0320f809 	jalr	t9
  45e62c:	00000000 	nop
  45e630:	8fdc0018 	lw	gp,24(s8)
  45e634:	00000000 	nop
			" the ID payloads are not adjacent");
		    SEND_NOTIFICATION(PAYLOAD_MALFORMED);
  45e638:	8fc2002c 	lw	v0,44(s8)
  45e63c:	00000000 	nop
  45e640:	1040000b 	beqz	v0,45e670 <process_packet+0x2a20>
  45e644:	00000000 	nop
  45e648:	8fc4002c 	lw	a0,44(s8)
  45e64c:	8fc50030 	lw	a1,48(s8)
  45e650:	24060010 	li	a2,16
  45e654:	8f998744 	lw	t9,-30908(gp)
  45e658:	00000000 	nop
  45e65c:	0320f809 	jalr	t9
  45e660:	00000000 	nop
  45e664:	8fdc0018 	lw	gp,24(s8)
  45e668:	10000136 	b	45eb44 <process_packet+0x2ef4>
  45e66c:	00000000 	nop
  45e670:	8fc40020 	lw	a0,32(s8)
  45e674:	24050010 	li	a1,16
  45e678:	8f998908 	lw	t9,-30456(gp)
  45e67c:	00000000 	nop
  45e680:	0320f809 	jalr	t9
  45e684:	00000000 	nop
  45e688:	8fdc0018 	lw	gp,24(s8)
  45e68c:	00000000 	nop
		    return;
  45e690:	1000012c 	b	45eb44 <process_packet+0x2ef4>
  45e694:	00000000 	nop
		}
	    }
	}
    }

    md->from_state = from_state;
  45e698:	8fc30030 	lw	v1,48(s8)
  45e69c:	8fc20020 	lw	v0,32(s8)
  45e6a0:	00000000 	nop
  45e6a4:	ac430090 	sw	v1,144(v0)
    md->smc = smc;
  45e6a8:	8fc30024 	lw	v1,36(s8)
  45e6ac:	8fc20020 	lw	v0,32(s8)
  45e6b0:	00000000 	nop
  45e6b4:	ac430094 	sw	v1,148(v0)
    md->st = st;
  45e6b8:	8fc3002c 	lw	v1,44(s8)
  45e6bc:	8fc20020 	lw	v0,32(s8)
  45e6c0:	00000000 	nop
  45e6c4:	ac430098 	sw	v1,152(v0)

    /* Handle Delete/Notification Payloads */
    /* Handle VendorID Payloads */
    /* XXX Handle deletions */
    /* XXX Handle Notifications */
    {
	struct payload_digest *p;

	for (p = md->chain[ISAKMP_NEXT_N]; p != NULL; p = p->next)
  45e6c8:	8fc20020 	lw	v0,32(s8)
  45e6cc:	00000000 	nop
  45e6d0:	8c4204d4 	lw	v0,1236(v0)
  45e6d4:	00000000 	nop
  45e6d8:	afc20058 	sw	v0,88(s8)
  45e6dc:	8fc20058 	lw	v0,88(s8)
  45e6e0:	00000000 	nop
  45e6e4:	14400003 	bnez	v0,45e6f4 <process_packet+0x2aa4>
  45e6e8:	00000000 	nop
  45e6ec:	1000006a 	b	45e898 <process_packet+0x2c48>
  45e6f0:	00000000 	nop
	{
#ifdef DPD
		/* XXX This should use defines instead of raw numbers,
		 * but it's faster than digging through structures to
		 * find the right number -kravietz
		 */
		if(p->payload.notification.isan_type != 36136
		&& p->payload.notification.isan_type != 36137)
  45e6f4:	8fc20058 	lw	v0,88(s8)
  45e6f8:	00000000 	nop
  45e6fc:	9443002a 	lhu	v1,42(v0)
  45e700:	34028d28 	li	v0,0x8d28
  45e704:	10620041 	beq	v1,v0,45e80c <process_packet+0x2bbc>
  45e708:	00000000 	nop
  45e70c:	8fc20058 	lw	v0,88(s8)
  45e710:	00000000 	nop
  45e714:	9443002a 	lhu	v1,42(v0)
  45e718:	34028d29 	li	v0,0x8d29
  45e71c:	1062003b 	beq	v1,v0,45e80c <process_packet+0x2bbc>
  45e720:	00000000 	nop
#endif

#ifdef KENNY_INITIAL_CONTACT
		if(p->payload.notification.isan_type == IPSEC_INITIAL_CONTACT) {
  45e724:	8fc20058 	lw	v0,88(s8)
  45e728:	00000000 	nop
  45e72c:	9443002a 	lhu	v1,42(v0)
  45e730:	24026002 	li	v0,24578
  45e734:	14620020 	bne	v1,v0,45e7b8 <process_packet+0x2b68>
  45e738:	00000000 	nop
	    		loglog(RC_LOG_SERIOUS, "kenny: handling informational payload, type %s"
  45e73c:	8fc20058 	lw	v0,88(s8)
  45e740:	00000000 	nop
  45e744:	9442002a 	lhu	v0,42(v0)
  45e748:	8f848b2c 	lw	a0,-29908(gp)
  45e74c:	00402821 	move	a1,v0
  45e750:	8f9987fc 	lw	t9,-30724(gp)
  45e754:	00000000 	nop
  45e758:	0320f809 	jalr	t9
  45e75c:	00000000 	nop
  45e760:	8fdc0018 	lw	gp,24(s8)
  45e764:	24040003 	li	a0,3
  45e768:	8f85802c 	lw	a1,-32724(gp)
  45e76c:	00000000 	nop
  45e770:	24a52484 	addiu	a1,a1,9348
  45e774:	00403021 	move	a2,v0
  45e778:	8f998c48 	lw	t9,-29624(gp)
  45e77c:	00000000 	nop
  45e780:	0320f809 	jalr	t9
  45e784:	00000000 	nop
  45e788:	8fdc0018 	lw	gp,24(s8)
  45e78c:	00000000 	nop
				, enum_show(&ipsec_notification_names, p->payload.notification.isan_type));
			handle_initial_contact(st, md, p);
  45e790:	8fc4002c 	lw	a0,44(s8)
  45e794:	8fc50020 	lw	a1,32(s8)
  45e798:	8fc60058 	lw	a2,88(s8)
  45e79c:	8f9989dc 	lw	t9,-30244(gp)
  45e7a0:	00000000 	nop
  45e7a4:	0320f809 	jalr	t9
  45e7a8:	00000000 	nop
  45e7ac:	8fdc0018 	lw	gp,24(s8)
  45e7b0:	10000016 	b	45e80c <process_packet+0x2bbc>
  45e7b4:	00000000 	nop

		} else
#endif /*  KENNY_INITIAL_CONTACT */
	    loglog(RC_LOG_SERIOUS, "ignoring informational payload, type %s"
  45e7b8:	8fc20058 	lw	v0,88(s8)
  45e7bc:	00000000 	nop
  45e7c0:	9442002a 	lhu	v0,42(v0)
  45e7c4:	8f848b2c 	lw	a0,-29908(gp)
  45e7c8:	00402821 	move	a1,v0
  45e7cc:	8f9987fc 	lw	t9,-30724(gp)
  45e7d0:	00000000 	nop
  45e7d4:	0320f809 	jalr	t9
  45e7d8:	00000000 	nop
  45e7dc:	8fdc0018 	lw	gp,24(s8)
  45e7e0:	24040003 	li	a0,3
  45e7e4:	8f85802c 	lw	a1,-32724(gp)
  45e7e8:	00000000 	nop
  45e7ec:	24a524b4 	addiu	a1,a1,9396
  45e7f0:	00403021 	move	a2,v0
  45e7f4:	8f998c48 	lw	t9,-29624(gp)
  45e7f8:	00000000 	nop
  45e7fc:	0320f809 	jalr	t9
  45e800:	00000000 	nop
  45e804:	8fdc0018 	lw	gp,24(s8)
  45e808:	00000000 	nop
		, enum_show(&ipsec_notification_names, p->payload.notification.isan_type));
	    DBG_cond_dump(DBG_PARSING, "info:", p->pbs.cur, pbs_left(&p->pbs));
  45e80c:	8f8284f8 	lw	v0,-31496(gp)
  45e810:	00000000 	nop
  45e814:	8c420000 	lw	v0,0(v0)
  45e818:	00000000 	nop
  45e81c:	30420004 	andi	v0,v0,0x4
  45e820:	10400016 	beqz	v0,45e87c <process_packet+0x2c2c>
  45e824:	00000000 	nop
  45e828:	8fc20058 	lw	v0,88(s8)
  45e82c:	00000000 	nop
  45e830:	8c430014 	lw	v1,20(v0)
  45e834:	8fc20058 	lw	v0,88(s8)
  45e838:	00000000 	nop
  45e83c:	8c420010 	lw	v0,16(v0)
  45e840:	00000000 	nop
  45e844:	00621823 	subu	v1,v1,v0
  45e848:	8f84802c 	lw	a0,-32724(gp)
  45e84c:	00000000 	nop
  45e850:	248424dc 	addiu	a0,a0,9436
  45e854:	8fc20058 	lw	v0,88(s8)
  45e858:	00000000 	nop
  45e85c:	8c450010 	lw	a1,16(v0)
  45e860:	00603021 	move	a2,v1
  45e864:	8f9984ec 	lw	t9,-31508(gp)
  45e868:	00000000 	nop
  45e86c:	0320f809 	jalr	t9
  45e870:	00000000 	nop
  45e874:	8fdc0018 	lw	gp,24(s8)
  45e878:	00000000 	nop
  45e87c:	8fc20058 	lw	v0,88(s8)
  45e880:	00000000 	nop
  45e884:	8c42002c 	lw	v0,44(v0)
  45e888:	00000000 	nop
  45e88c:	afc20058 	sw	v0,88(s8)
  45e890:	1000ff92 	b	45e6dc <process_packet+0x2a8c>
  45e894:	00000000 	nop
	}

	for (p = md->chain[ISAKMP_NEXT_D]; p != NULL; p = p->next)
  45e898:	8fc20020 	lw	v0,32(s8)
  45e89c:	00000000 	nop
  45e8a0:	8c4204d8 	lw	v0,1240(v0)
  45e8a4:	00000000 	nop
  45e8a8:	afc20058 	sw	v0,88(s8)
  45e8ac:	8fc20058 	lw	v0,88(s8)
  45e8b0:	00000000 	nop
  45e8b4:	14400003 	bnez	v0,45e8c4 <process_packet+0x2c74>
  45e8b8:	00000000 	nop
  45e8bc:	10000035 	b	45e994 <process_packet+0x2d44>
  45e8c0:	00000000 	nop
	{
		struct state *ist = st;
  45e8c4:	8fc2002c 	lw	v0,44(s8)
  45e8c8:	00000000 	nop
  45e8cc:	afc2004c 	sw	v0,76(s8)
		const struct connection *c = ist->st_connection;
  45e8d0:	8fc2004c 	lw	v0,76(s8)
  45e8d4:	00000000 	nop
  45e8d8:	8c42000c 	lw	v0,12(v0)
  45e8dc:	00000000 	nop
  45e8e0:	afc20048 	sw	v0,72(s8)
#if 0 // kenny debug		
		loglog(RC_LOG_SERIOUS, "D: #%u(%u) in %s c.name=%s c.this=%x c.that=%x", ist->st_serialno, ist->st_clonedfrom, enum_name(&state_names, ist->st_state), c->name, c->this.host_addr.u.v4.sin_addr.s_addr, c->that.host_addr.u.v4.sin_addr.s_addr );
	    loglog(RC_LOG_SERIOUS, "dump_states start 1-----------------");
	    dump_states();
	    delete_phase1_states();
	    loglog(RC_LOG_SERIOUS, "dump_states start 2-----------------");
	    dump_states();
	    loglog(RC_LOG_SERIOUS, "dump_states end  -----------------");
#else	    
	    accept_delete(st, md, p);
  45e8e4:	8fc4002c 	lw	a0,44(s8)
  45e8e8:	8fc50020 	lw	a1,32(s8)
  45e8ec:	8fc60058 	lw	a2,88(s8)
  45e8f0:	8f99829c 	lw	t9,-32100(gp)
  45e8f4:	00000000 	nop
  45e8f8:	0320f809 	jalr	t9
  45e8fc:	00000000 	nop
  45e900:	8fdc0018 	lw	gp,24(s8)
  45e904:	00000000 	nop
	    DBG_cond_dump(DBG_PARSING, "del:", p->pbs.cur, pbs_left(&p->pbs));
  45e908:	8f8284f8 	lw	v0,-31496(gp)
  45e90c:	00000000 	nop
  45e910:	8c420000 	lw	v0,0(v0)
  45e914:	00000000 	nop
  45e918:	30420004 	andi	v0,v0,0x4
  45e91c:	10400016 	beqz	v0,45e978 <process_packet+0x2d28>
  45e920:	00000000 	nop
  45e924:	8fc20058 	lw	v0,88(s8)
  45e928:	00000000 	nop
  45e92c:	8c430014 	lw	v1,20(v0)
  45e930:	8fc20058 	lw	v0,88(s8)
  45e934:	00000000 	nop
  45e938:	8c420010 	lw	v0,16(v0)
  45e93c:	00000000 	nop
  45e940:	00621823 	subu	v1,v1,v0
  45e944:	8f84802c 	lw	a0,-32724(gp)
  45e948:	00000000 	nop
  45e94c:	248424e4 	addiu	a0,a0,9444
  45e950:	8fc20058 	lw	v0,88(s8)
  45e954:	00000000 	nop
  45e958:	8c450010 	lw	a1,16(v0)
  45e95c:	00603021 	move	a2,v1
  45e960:	8f9984ec 	lw	t9,-31508(gp)
  45e964:	00000000 	nop
  45e968:	0320f809 	jalr	t9
  45e96c:	00000000 	nop
  45e970:	8fdc0018 	lw	gp,24(s8)
  45e974:	00000000 	nop
  45e978:	8fc20058 	lw	v0,88(s8)
  45e97c:	00000000 	nop
  45e980:	8c42002c 	lw	v0,44(v0)
  45e984:	00000000 	nop
  45e988:	afc20058 	sw	v0,88(s8)
  45e98c:	1000ffc7 	b	45e8ac <process_packet+0x2c5c>
  45e990:	00000000 	nop
#endif	
	}

	for (p = md->chain[ISAKMP_NEXT_VID]; p != NULL; p = p->next)
  45e994:	8fc20020 	lw	v0,32(s8)
  45e998:	00000000 	nop
  45e99c:	8c4204dc 	lw	v0,1244(v0)
  45e9a0:	00000000 	nop
  45e9a4:	afc20058 	sw	v0,88(s8)
  45e9a8:	8fc20058 	lw	v0,88(s8)
  45e9ac:	00000000 	nop
  45e9b0:	14400003 	bnez	v0,45e9c0 <process_packet+0x2d70>
  45e9b4:	00000000 	nop
  45e9b8:	10000037 	b	45ea98 <process_packet+0x2e48>
  45e9bc:	00000000 	nop
        {
	    handle_vendorid(md, p->pbs.cur, pbs_left(&p->pbs));
  45e9c0:	8fc20058 	lw	v0,88(s8)
  45e9c4:	00000000 	nop
  45e9c8:	8c430014 	lw	v1,20(v0)
  45e9cc:	8fc20058 	lw	v0,88(s8)
  45e9d0:	00000000 	nop
  45e9d4:	8c420010 	lw	v0,16(v0)
  45e9d8:	00000000 	nop
  45e9dc:	00621823 	subu	v1,v1,v0
  45e9e0:	8fc40020 	lw	a0,32(s8)
  45e9e4:	8fc20058 	lw	v0,88(s8)
  45e9e8:	00000000 	nop
  45e9ec:	8c450010 	lw	a1,16(v0)
  45e9f0:	00603021 	move	a2,v1
  45e9f4:	8f998578 	lw	t9,-31368(gp)
  45e9f8:	00000000 	nop
  45e9fc:	0320f809 	jalr	t9
  45ea00:	00000000 	nop
  45ea04:	8fdc0018 	lw	gp,24(s8)
  45ea08:	00000000 	nop
	    DBG_cond_dump(DBG_PARSING, "VID:", p->pbs.cur, pbs_left(&p->pbs));
  45ea0c:	8f8284f8 	lw	v0,-31496(gp)
  45ea10:	00000000 	nop
  45ea14:	8c420000 	lw	v0,0(v0)
  45ea18:	00000000 	nop
  45ea1c:	30420004 	andi	v0,v0,0x4
  45ea20:	10400016 	beqz	v0,45ea7c <process_packet+0x2e2c>
  45ea24:	00000000 	nop
  45ea28:	8fc20058 	lw	v0,88(s8)
  45ea2c:	00000000 	nop
  45ea30:	8c430014 	lw	v1,20(v0)
  45ea34:	8fc20058 	lw	v0,88(s8)
  45ea38:	00000000 	nop
  45ea3c:	8c420010 	lw	v0,16(v0)
  45ea40:	00000000 	nop
  45ea44:	00621823 	subu	v1,v1,v0
  45ea48:	8f84802c 	lw	a0,-32724(gp)
  45ea4c:	00000000 	nop
  45ea50:	248424ec 	addiu	a0,a0,9452
  45ea54:	8fc20058 	lw	v0,88(s8)
  45ea58:	00000000 	nop
  45ea5c:	8c450010 	lw	a1,16(v0)
  45ea60:	00603021 	move	a2,v1
  45ea64:	8f9984ec 	lw	t9,-31508(gp)
  45ea68:	00000000 	nop
  45ea6c:	0320f809 	jalr	t9
  45ea70:	00000000 	nop
  45ea74:	8fdc0018 	lw	gp,24(s8)
  45ea78:	00000000 	nop
  45ea7c:	8fc20058 	lw	v0,88(s8)
  45ea80:	00000000 	nop
  45ea84:	8c42002c 	lw	v0,44(v0)
  45ea88:	00000000 	nop
  45ea8c:	afc20058 	sw	v0,88(s8)
  45ea90:	1000ffc5 	b	45e9a8 <process_packet+0x2d58>
  45ea94:	00000000 	nop
	}
    }

    /* possibly fill in hdr */
    if (smc->first_out_payload != ISAKMP_NEXT_NONE)
  45ea98:	8fc20024 	lw	v0,36(s8)
  45ea9c:	00000000 	nop
  45eaa0:	90420020 	lbu	v0,32(v0)
  45eaa4:	00000000 	nop
  45eaa8:	10400016 	beqz	v0,45eb04 <process_packet+0x2eb4>
  45eaac:	00000000 	nop
	echo_hdr(md, (smc->flags & SMF_OUTPUT_ENCRYPTED) != 0
  45eab0:	8fc20024 	lw	v0,36(s8)
  45eab4:	00000000 	nop
  45eab8:	8c43000c 	lw	v1,12(v0)
  45eabc:	8c420008 	lw	v0,8(v0)
  45eac0:	00031ac2 	srl	v1,v1,0xb
  45eac4:	00022540 	sll	a0,v0,0x15
  45eac8:	00641825 	or	v1,v1,a0
  45eacc:	000212c2 	srl	v0,v0,0xb
  45ead0:	30630001 	andi	v1,v1,0x1
  45ead4:	8fc20024 	lw	v0,36(s8)
  45ead8:	00000000 	nop
  45eadc:	90420020 	lbu	v0,32(v0)
  45eae0:	8fc40020 	lw	a0,32(s8)
  45eae4:	00602821 	move	a1,v1
  45eae8:	00403021 	move	a2,v0
  45eaec:	8f998194 	lw	t9,-32364(gp)
  45eaf0:	00000000 	nop
  45eaf4:	0320f809 	jalr	t9
  45eaf8:	00000000 	nop
  45eafc:	8fdc0018 	lw	gp,24(s8)
  45eb00:	00000000 	nop
	    , smc->first_out_payload);

    complete_state_transition(mdp, smc->processor(md));
  45eb04:	8fc20024 	lw	v0,36(s8)
  45eb08:	00000000 	nop
  45eb0c:	8c420028 	lw	v0,40(v0)
  45eb10:	8fc40020 	lw	a0,32(s8)
  45eb14:	0040c821 	move	t9,v0
  45eb18:	0320f809 	jalr	t9
  45eb1c:	00000000 	nop
  45eb20:	8fdc0018 	lw	gp,24(s8)
  45eb24:	8fc40090 	lw	a0,144(s8)
  45eb28:	00402821 	move	a1,v0
  45eb2c:	8f998130 	lw	t9,-32464(gp)
  45eb30:	00000000 	nop
  45eb34:	0320f809 	jalr	t9
  45eb38:	00000000 	nop
  45eb3c:	8fdc0018 	lw	gp,24(s8)
  45eb40:	00000000 	nop
}
  45eb44:	03c0e821 	move	sp,s8
  45eb48:	8fbf008c 	lw	ra,140(sp)
  45eb4c:	8fbe0088 	lw	s8,136(sp)
  45eb50:	8fb00080 	lw	s0,128(sp)
  45eb54:	27bd0090 	addiu	sp,sp,144
  45eb58:	03e00008 	jr	ra
  45eb5c:	00000000 	nop

0045eb60 <complete_state_transition>:
  45eb60:	3c1c0fbb 	lui	gp,0xfbb
  45eb64:	279cde10 	addiu	gp,gp,-8688
  45eb68:	0399e021 	addu	gp,gp,t9
  45eb6c:	27bdff90 	addiu	sp,sp,-112
  45eb70:	afbc0010 	sw	gp,16(sp)
  45eb74:	afbf0068 	sw	ra,104(sp)
  45eb78:	afbe0064 	sw	s8,100(sp)
  45eb7c:	afbc0060 	sw	gp,96(sp)
  45eb80:	afb1005c 	sw	s1,92(sp)
  45eb84:	afb00058 	sw	s0,88(sp)
  45eb88:	03a0f021 	move	s8,sp
  45eb8c:	afc40070 	sw	a0,112(s8)
  45eb90:	afc50074 	sw	a1,116(s8)


/* complete job started by the state-specific state transition function */

void
complete_state_transition(struct msg_digest **mdp, stf_status result)
{
    struct msg_digest *md = *mdp;
  45eb94:	8fc20070 	lw	v0,112(s8)
  45eb98:	00000000 	nop
  45eb9c:	8c420000 	lw	v0,0(v0)
  45eba0:	00000000 	nop
  45eba4:	afc20018 	sw	v0,24(s8)
    const struct state_microcode *smc = md->smc;
  45eba8:	8fc20018 	lw	v0,24(s8)
  45ebac:	00000000 	nop
  45ebb0:	8c420094 	lw	v0,148(v0)
  45ebb4:	00000000 	nop
  45ebb8:	afc2001c 	sw	v0,28(s8)
    enum state_kind from_state = md->from_state;
  45ebbc:	8fc20018 	lw	v0,24(s8)
  45ebc0:	00000000 	nop
  45ebc4:	8c420090 	lw	v0,144(v0)
  45ebc8:	00000000 	nop
  45ebcc:	afc20020 	sw	v0,32(s8)
    struct state *st;

    cur_state = st = md->st;	/* might have changed */
  45ebd0:	8fc20018 	lw	v0,24(s8)
  45ebd4:	00000000 	nop
  45ebd8:	8c420098 	lw	v0,152(v0)
  45ebdc:	00000000 	nop
  45ebe0:	afc20024 	sw	v0,36(s8)
  45ebe4:	8f8187f8 	lw	at,-30728(gp)
  45ebe8:	00000000 	nop
  45ebec:	ac220000 	sw	v0,0(at)

#ifdef DPD
    if( st && md->dpd)
  45ebf0:	8fc20024 	lw	v0,36(s8)
  45ebf4:	00000000 	nop
  45ebf8:	1040000d 	beqz	v0,45ec30 <complete_state_transition+0xd0>
  45ebfc:	00000000 	nop
  45ec00:	8fc20018 	lw	v0,24(s8)
  45ec04:	00000000 	nop
  45ec08:	8c4200e0 	lw	v0,224(v0)
  45ec0c:	00000000 	nop
  45ec10:	10400007 	beqz	v0,45ec30 <complete_state_transition+0xd0>
  45ec14:	00000000 	nop
	    st->st_dpd = md->dpd;
  45ec18:	8fc20018 	lw	v0,24(s8)
  45ec1c:	00000000 	nop
  45ec20:	8c4300e0 	lw	v1,224(v0)
  45ec24:	8fc20024 	lw	v0,36(s8)
  45ec28:	00000000 	nop
  45ec2c:	ac430284 	sw	v1,644(v0)
#endif

    switch (result)
  45ec30:	8fc20074 	lw	v0,116(s8)
  45ec34:	00000000 	nop
  45ec38:	2c420005 	sltiu	v0,v0,5
  45ec3c:	104003a2 	beqz	v0,45fac8 <complete_state_transition+0xf68>
  45ec40:	00000000 	nop
  45ec44:	8fc20074 	lw	v0,116(s8)
  45ec48:	00000000 	nop
  45ec4c:	00021080 	sll	v0,v0,0x2
  45ec50:	8f81802c 	lw	at,-32724(gp)
  45ec54:	00000000 	nop
  45ec58:	242125f0 	addiu	at,at,9712
  45ec5c:	00221021 	addu	v0,at,v0
  45ec60:	8c420000 	lw	v0,0(v0)
  45ec64:	00000000 	nop
  45ec68:	005c1021 	addu	v0,v0,gp
  45ec6c:	00400008 	jr	v0
  45ec70:	00000000 	nop
    {
	case STF_IGNORE:
	    break;

	case STF_SUSPEND:
	    /* the stf didn't complete its job: don't relase md */
	    *mdp = NULL;
  45ec74:	8fc20070 	lw	v0,112(s8)
  45ec78:	00000000 	nop
  45ec7c:	ac400000 	sw	zero,0(v0)
	    break;
  45ec80:	10000410 	b	45fcc4 <complete_state_transition+0x1164>
  45ec84:	00000000 	nop

	case STF_OK:
	    /* advance the state */
	    plog("transition from state %s to state %s"
  45ec88:	8f8483b0 	lw	a0,-31824(gp)
  45ec8c:	8fc20024 	lw	v0,36(s8)
  45ec90:	00000000 	nop
  45ec94:	8c45014c 	lw	a1,332(v0)
  45ec98:	8f9984bc 	lw	t9,-31556(gp)
  45ec9c:	00000000 	nop
  45eca0:	0320f809 	jalr	t9
  45eca4:	00000000 	nop
  45eca8:	8fdc0010 	lw	gp,16(s8)
  45ecac:	00408021 	move	s0,v0
  45ecb0:	8f8483b0 	lw	a0,-31824(gp)
  45ecb4:	8fc2001c 	lw	v0,28(s8)
  45ecb8:	00000000 	nop
  45ecbc:	8c450004 	lw	a1,4(v0)
  45ecc0:	8f9984bc 	lw	t9,-31556(gp)
  45ecc4:	00000000 	nop
  45ecc8:	0320f809 	jalr	t9
  45eccc:	00000000 	nop
  45ecd0:	8fdc0010 	lw	gp,16(s8)
  45ecd4:	00000000 	nop
  45ecd8:	8f84802c 	lw	a0,-32724(gp)
  45ecdc:	00000000 	nop
  45ece0:	248424f4 	addiu	a0,a0,9460
  45ece4:	02002821 	move	a1,s0
  45ece8:	00403021 	move	a2,v0
  45ecec:	8f998abc 	lw	t9,-30020(gp)
  45ecf0:	00000000 	nop
  45ecf4:	0320f809 	jalr	t9
  45ecf8:	00000000 	nop
  45ecfc:	8fdc0010 	lw	gp,16(s8)
  45ed00:	00000000 	nop
		 , enum_name(&state_names, st->st_state)
		 , enum_name(&state_names, smc->next_state));

	    st->st_state = smc->next_state;
  45ed04:	8fc2001c 	lw	v0,28(s8)
  45ed08:	00000000 	nop
  45ed0c:	8c430004 	lw	v1,4(v0)
  45ed10:	8fc20024 	lw	v0,36(s8)
  45ed14:	00000000 	nop
  45ed18:	ac43014c 	sw	v1,332(v0)

	    /* Delete previous retransmission event.
	     * New event will be scheduled below.
	     */
	    delete_event(st);
  45ed1c:	8fc40024 	lw	a0,36(s8)
  45ed20:	8f9985b4 	lw	t9,-31308(gp)
  45ed24:	00000000 	nop
  45ed28:	0320f809 	jalr	t9
  45ed2c:	00000000 	nop
  45ed30:	8fdc0010 	lw	gp,16(s8)
  45ed34:	00000000 	nop

	    /* replace previous receive packet with latest */

	    pfreeany(st->st_rpacket.ptr);
  45ed38:	8fc20024 	lw	v0,36(s8)
  45ed3c:	00000000 	nop
  45ed40:	8c420124 	lw	v0,292(v0)
  45ed44:	00000000 	nop
  45ed48:	1040000a 	beqz	v0,45ed74 <complete_state_transition+0x214>
  45ed4c:	00000000 	nop
  45ed50:	8fc20024 	lw	v0,36(s8)
  45ed54:	00000000 	nop
  45ed58:	8c440124 	lw	a0,292(v0)
  45ed5c:	8f998094 	lw	t9,-32620(gp)
  45ed60:	00000000 	nop
  45ed64:	0320f809 	jalr	t9
  45ed68:	00000000 	nop
  45ed6c:	8fdc0010 	lw	gp,16(s8)
  45ed70:	00000000 	nop

	    if (md->encrypted)
  45ed74:	8fc20018 	lw	v0,24(s8)
  45ed78:	00000000 	nop
  45ed7c:	8c42008c 	lw	v0,140(v0)
  45ed80:	00000000 	nop
  45ed84:	1040000f 	beqz	v0,45edc4 <complete_state_transition+0x264>
  45ed88:	00000000 	nop
	    {
		/* if encrypted, duplication already done */
		st->st_rpacket = md->raw_packet;
  45ed8c:	8fc40024 	lw	a0,36(s8)
  45ed90:	8fc30018 	lw	v1,24(s8)
  45ed94:	00000000 	nop
  45ed98:	8c620004 	lw	v0,4(v1)
  45ed9c:	00000000 	nop
  45eda0:	ac820124 	sw	v0,292(a0)
  45eda4:	8c620008 	lw	v0,8(v1)
  45eda8:	00000000 	nop
  45edac:	ac820128 	sw	v0,296(a0)
		md->raw_packet.ptr = NULL;
  45edb0:	8fc20018 	lw	v0,24(s8)
  45edb4:	00000000 	nop
  45edb8:	ac400004 	sw	zero,4(v0)
  45edbc:	1000001c 	b	45ee30 <complete_state_transition+0x2d0>
  45edc0:	00000000 	nop
	    }
	    else
	    {
		clonetochunk(st->st_rpacket
  45edc4:	8fd00024 	lw	s0,36(s8)
  45edc8:	8fc40018 	lw	a0,24(s8)
  45edcc:	8fc20018 	lw	v0,24(s8)
  45edd0:	00000000 	nop
  45edd4:	24430030 	addiu	v1,v0,48
  45edd8:	8fc20018 	lw	v0,24(s8)
  45eddc:	00000000 	nop
  45ede0:	24420030 	addiu	v0,v0,48
  45ede4:	8c630014 	lw	v1,20(v1)
  45ede8:	8c42000c 	lw	v0,12(v0)
  45edec:	00000000 	nop
  45edf0:	00621023 	subu	v0,v1,v0
  45edf4:	00401821 	move	v1,v0
  45edf8:	8fc20024 	lw	v0,36(s8)
  45edfc:	00000000 	nop
  45ee00:	ac430128 	sw	v1,296(v0)
  45ee04:	8c84003c 	lw	a0,60(a0)
  45ee08:	00602821 	move	a1,v1
  45ee0c:	8f86802c 	lw	a2,-32724(gp)
  45ee10:	00000000 	nop
  45ee14:	24c62088 	addiu	a2,a2,8328
  45ee18:	8f998c04 	lw	t9,-29692(gp)
  45ee1c:	00000000 	nop
  45ee20:	0320f809 	jalr	t9
  45ee24:	00000000 	nop
  45ee28:	8fdc0010 	lw	gp,16(s8)
  45ee2c:	ae020124 	sw	v0,292(s0)
		    , md->packet_pbs.start
		    , pbs_room(&md->packet_pbs), "raw packet");
	    }

	    /* free previous transmit packet */
	    freeanychunk(st->st_tpacket);
  45ee30:	8fc20024 	lw	v0,36(s8)
  45ee34:	00000000 	nop
  45ee38:	8c420118 	lw	v0,280(v0)
  45ee3c:	00000000 	nop
  45ee40:	10400009 	beqz	v0,45ee68 <complete_state_transition+0x308>
  45ee44:	00000000 	nop
  45ee48:	8fc20024 	lw	v0,36(s8)
  45ee4c:	00000000 	nop
  45ee50:	8c440118 	lw	a0,280(v0)
  45ee54:	8f998094 	lw	t9,-32620(gp)
  45ee58:	00000000 	nop
  45ee5c:	0320f809 	jalr	t9
  45ee60:	00000000 	nop
  45ee64:	8fdc0010 	lw	gp,16(s8)
  45ee68:	8fc20024 	lw	v0,36(s8)
  45ee6c:	00000000 	nop
  45ee70:	ac400118 	sw	zero,280(v0)

	    /* if requested, send the new reply packet */
	    if (smc->flags & SMF_REPLY)
  45ee74:	8fc2001c 	lw	v0,28(s8)
  45ee78:	00000000 	nop
  45ee7c:	8c440008 	lw	a0,8(v0)
  45ee80:	8c45000c 	lw	a1,12(v0)
  45ee84:	24020000 	li	v0,0
  45ee88:	24032000 	li	v1,8192
  45ee8c:	00822024 	and	a0,a0,v0
  45ee90:	00a32824 	and	a1,a1,v1
  45ee94:	00801021 	move	v0,a0
  45ee98:	00451025 	or	v0,v0,a1
  45ee9c:	10400046 	beqz	v0,45efb8 <complete_state_transition+0x458>
  45eea0:	00000000 	nop
	    {
		close_output_pbs(&md->reply);   /* good form, but actually a no-op */
  45eea4:	8fc20018 	lw	v0,24(s8)
  45eea8:	00000000 	nop
  45eeac:	2442009c 	addiu	v0,v0,156
  45eeb0:	00402021 	move	a0,v0
  45eeb4:	8f998228 	lw	t9,-32216(gp)
  45eeb8:	00000000 	nop
  45eebc:	0320f809 	jalr	t9
  45eec0:	00000000 	nop
  45eec4:	8fdc0010 	lw	gp,16(s8)
  45eec8:	00000000 	nop

		clonetochunk(st->st_tpacket, md->reply.start
  45eecc:	8fd00024 	lw	s0,36(s8)
  45eed0:	8fc40018 	lw	a0,24(s8)
  45eed4:	8fc20018 	lw	v0,24(s8)
  45eed8:	00000000 	nop
  45eedc:	2443009c 	addiu	v1,v0,156
  45eee0:	8fc20018 	lw	v0,24(s8)
  45eee4:	00000000 	nop
  45eee8:	2442009c 	addiu	v0,v0,156
  45eeec:	8c630010 	lw	v1,16(v1)
  45eef0:	8c42000c 	lw	v0,12(v0)
  45eef4:	00000000 	nop
  45eef8:	00621023 	subu	v0,v1,v0
  45eefc:	00401821 	move	v1,v0
  45ef00:	8fc20024 	lw	v0,36(s8)
  45ef04:	00000000 	nop
  45ef08:	ac43011c 	sw	v1,284(v0)
  45ef0c:	8c8400a8 	lw	a0,168(a0)
  45ef10:	00602821 	move	a1,v1
  45ef14:	8f86802c 	lw	a2,-32724(gp)
  45ef18:	00000000 	nop
  45ef1c:	24c6169c 	addiu	a2,a2,5788
  45ef20:	8f998c04 	lw	t9,-29692(gp)
  45ef24:	00000000 	nop
  45ef28:	0320f809 	jalr	t9
  45ef2c:	00000000 	nop
  45ef30:	8fdc0010 	lw	gp,16(s8)
  45ef34:	ae020118 	sw	v0,280(s0)
		    , pbs_offset(&md->reply), "reply packet");

#ifdef NAT_TRAVERSAL
		if (nat_traversal_enabled) {
  45ef38:	8f82837c 	lw	v0,-31876(gp)
  45ef3c:	00000000 	nop
  45ef40:	8c420000 	lw	v0,0(v0)
  45ef44:	00000000 	nop
  45ef48:	1040000b 	beqz	v0,45ef78 <complete_state_transition+0x418>
  45ef4c:	00000000 	nop
		    nat_traversal_change_port_lookup(md, md->st);
  45ef50:	8fc40018 	lw	a0,24(s8)
  45ef54:	8fc20018 	lw	v0,24(s8)
  45ef58:	00000000 	nop
  45ef5c:	8c450098 	lw	a1,152(v0)
  45ef60:	8f9983f8 	lw	t9,-31752(gp)
  45ef64:	00000000 	nop
  45ef68:	0320f809 	jalr	t9
  45ef6c:	00000000 	nop
  45ef70:	8fdc0010 	lw	gp,16(s8)
  45ef74:	00000000 	nop
		}
#endif

		/* actually send the packet
		 * Note: this is a great place to implement "impairments"
		 * for testing purposes.  Suppress or duplicate the
		 * send_packet call depending on st->st_state.
		 */
		send_packet(st, enum_name(&state_names, from_state));
  45ef78:	8f8483b0 	lw	a0,-31824(gp)
  45ef7c:	8fc50020 	lw	a1,32(s8)
  45ef80:	8f9984bc 	lw	t9,-31556(gp)
  45ef84:	00000000 	nop
  45ef88:	0320f809 	jalr	t9
  45ef8c:	00000000 	nop
  45ef90:	8fdc0010 	lw	gp,16(s8)
  45ef94:	8fc40024 	lw	a0,36(s8)
  45ef98:	00402821 	move	a1,v0
  45ef9c:	24060001 	li	a2,1
  45efa0:	8f9987f0 	lw	t9,-30736(gp)
  45efa4:	00000000 	nop
  45efa8:	0320f809 	jalr	t9
  45efac:	00000000 	nop
  45efb0:	8fdc0010 	lw	gp,16(s8)
  45efb4:	00000000 	nop
	    }

	    /* Schedule for whatever timeout is specified */
	    {
		time_t delay;
		enum event_type kind = smc->timeout_event;
  45efb8:	8fc2001c 	lw	v0,28(s8)
  45efbc:	00000000 	nop
  45efc0:	8c420024 	lw	v0,36(v0)
  45efc4:	00000000 	nop
  45efc8:	afc2002c 	sw	v0,44(s8)
		bool agreed_time = FALSE;
  45efcc:	afc00030 	sw	zero,48(s8)

		switch (kind)
  45efd0:	8fc2002c 	lw	v0,44(s8)
  45efd4:	00000000 	nop
  45efd8:	afc20050 	sw	v0,80(s8)
  45efdc:	24020004 	li	v0,4
  45efe0:	8fc30050 	lw	v1,80(s8)
  45efe4:	00000000 	nop
  45efe8:	10620014 	beq	v1,v0,45f03c <complete_state_transition+0x4dc>
  45efec:	00000000 	nop
  45eff0:	8fc30050 	lw	v1,80(s8)
  45eff4:	00000000 	nop
  45eff8:	2c620005 	sltiu	v0,v1,5
  45effc:	10400008 	beqz	v0,45f020 <complete_state_transition+0x4c0>
  45f000:	00000000 	nop
  45f004:	8fc30050 	lw	v1,80(s8)
  45f008:	00000000 	nop
  45f00c:	2c620002 	sltiu	v0,v1,2
  45f010:	1040013c 	beqz	v0,45f504 <complete_state_transition+0x9a4>
  45f014:	00000000 	nop
  45f018:	1000013a 	b	45f504 <complete_state_transition+0x9a4>
  45f01c:	00000000 	nop
  45f020:	24020005 	li	v0,5
  45f024:	8fc30050 	lw	v1,80(s8)
  45f028:	00000000 	nop
  45f02c:	10620007 	beq	v1,v0,45f04c <complete_state_transition+0x4ec>
  45f030:	00000000 	nop
  45f034:	10000133 	b	45f504 <complete_state_transition+0x9a4>
  45f038:	00000000 	nop
		{
		case EVENT_RETRANSMIT:	/* Retransmit packet */
		    delay = EVENT_RETRANSMIT_DELAY_0;
  45f03c:	2402000a 	li	v0,10
  45f040:	afc20028 	sw	v0,40(s8)
		    break;
  45f044:	1000013c 	b	45f538 <complete_state_transition+0x9d8>
  45f048:	00000000 	nop

		case EVENT_SA_REPLACE:	/* SA replacement event */
		    if (IS_PHASE1(st->st_state))
  45f04c:	8fc20024 	lw	v0,36(s8)
  45f050:	00000000 	nop
  45f054:	8c42014c 	lw	v0,332(v0)
  45f058:	00000000 	nop
  45f05c:	2c420003 	sltiu	v0,v0,3
  45f060:	14400030 	bnez	v0,45f124 <complete_state_transition+0x5c4>
  45f064:	00000000 	nop
  45f068:	8fc20024 	lw	v0,36(s8)
  45f06c:	00000000 	nop
  45f070:	8c42014c 	lw	v0,332(v0)
  45f074:	00000000 	nop
  45f078:	2c420010 	sltiu	v0,v0,16
  45f07c:	10400029 	beqz	v0,45f124 <complete_state_transition+0x5c4>
  45f080:	00000000 	nop
		    {
			/* Note: we will defer to the "negotiated" (dictated)
			 * lifetime if we are POLICY_DONT_REKEY.
			 * This allows the other side to dictate
			 * a time we would not otherwise accept
			 * but it prevents us from having to initiate
			 * rekeying.  The negative consequences seem
			 * minor.
			 */
			delay = st->st_connection->sa_ike_life_seconds;
  45f084:	8fc20024 	lw	v0,36(s8)
  45f088:	00000000 	nop
  45f08c:	8c42000c 	lw	v0,12(v0)
  45f090:	00000000 	nop
  45f094:	8c420010 	lw	v0,16(v0)
  45f098:	00000000 	nop
  45f09c:	afc20028 	sw	v0,40(s8)
			if ((st->st_connection->policy & POLICY_DONT_REKEY)
			|| delay >= st->st_oakley.life_seconds)
  45f0a0:	8fc20024 	lw	v0,36(s8)
  45f0a4:	00000000 	nop
  45f0a8:	8c42000c 	lw	v0,12(v0)
  45f0ac:	00000000 	nop
  45f0b0:	8c440008 	lw	a0,8(v0)
  45f0b4:	8c45000c 	lw	a1,12(v0)
  45f0b8:	24020000 	li	v0,0
  45f0bc:	24030400 	li	v1,1024
  45f0c0:	00822024 	and	a0,a0,v0
  45f0c4:	00a32824 	and	a1,a1,v1
  45f0c8:	00801021 	move	v0,a0
  45f0cc:	00451025 	or	v0,v0,a1
  45f0d0:	1440000b 	bnez	v0,45f100 <complete_state_transition+0x5a0>
  45f0d4:	00000000 	nop
  45f0d8:	8fc20024 	lw	v0,36(s8)
  45f0dc:	00000000 	nop
  45f0e0:	8c430034 	lw	v1,52(v0)
  45f0e4:	8fc20028 	lw	v0,40(s8)
  45f0e8:	00000000 	nop
  45f0ec:	0043102a 	slt	v0,v0,v1
  45f0f0:	10400003 	beqz	v0,45f100 <complete_state_transition+0x5a0>
  45f0f4:	00000000 	nop
  45f0f8:	10000050 	b	45f23c <complete_state_transition+0x6dc>
  45f0fc:	00000000 	nop
			{
			    agreed_time = TRUE;
  45f100:	24020001 	li	v0,1
  45f104:	afc20030 	sw	v0,48(s8)
			    delay = st->st_oakley.life_seconds;
  45f108:	8fc20024 	lw	v0,36(s8)
  45f10c:	00000000 	nop
  45f110:	8c420034 	lw	v0,52(v0)
  45f114:	00000000 	nop
  45f118:	afc20028 	sw	v0,40(s8)
  45f11c:	10000047 	b	45f23c <complete_state_transition+0x6dc>
  45f120:	00000000 	nop
			}
		    }
		    else
		    {
			/* Delay is min of up to four things:
			 * each can limit the lifetime.
			 */
			delay = st->st_connection->sa_ipsec_life_seconds;
  45f124:	8fc20024 	lw	v0,36(s8)
  45f128:	00000000 	nop
  45f12c:	8c42000c 	lw	v0,12(v0)
  45f130:	00000000 	nop
  45f134:	8c420014 	lw	v0,20(v0)
  45f138:	00000000 	nop
  45f13c:	afc20028 	sw	v0,40(s8)
			if (st->st_ah.present
			&& delay >= st->st_ah.attrs.life_seconds)
  45f140:	8fc20024 	lw	v0,36(s8)
  45f144:	00000000 	nop
  45f148:	8c42003c 	lw	v0,60(v0)
  45f14c:	00000000 	nop
  45f150:	10400010 	beqz	v0,45f194 <complete_state_transition+0x634>
  45f154:	00000000 	nop
  45f158:	8fc20024 	lw	v0,36(s8)
  45f15c:	00000000 	nop
  45f160:	8c430048 	lw	v1,72(v0)
  45f164:	8fc20028 	lw	v0,40(s8)
  45f168:	00000000 	nop
  45f16c:	0043102a 	slt	v0,v0,v1
  45f170:	14400008 	bnez	v0,45f194 <complete_state_transition+0x634>
  45f174:	00000000 	nop
			{
			    agreed_time = TRUE;
  45f178:	24020001 	li	v0,1
  45f17c:	afc20030 	sw	v0,48(s8)
			    delay = st->st_ah.attrs.life_seconds;
  45f180:	8fc20024 	lw	v0,36(s8)
  45f184:	00000000 	nop
  45f188:	8c420048 	lw	v0,72(v0)
  45f18c:	00000000 	nop
  45f190:	afc20028 	sw	v0,40(s8)
			}
			if (st->st_esp.present
			&& delay >= st->st_esp.attrs.life_seconds)
  45f194:	8fc20024 	lw	v0,36(s8)
  45f198:	00000000 	nop
  45f19c:	8c420068 	lw	v0,104(v0)
  45f1a0:	00000000 	nop
  45f1a4:	10400010 	beqz	v0,45f1e8 <complete_state_transition+0x688>
  45f1a8:	00000000 	nop
  45f1ac:	8fc20024 	lw	v0,36(s8)
  45f1b0:	00000000 	nop
  45f1b4:	8c430074 	lw	v1,116(v0)
  45f1b8:	8fc20028 	lw	v0,40(s8)
  45f1bc:	00000000 	nop
  45f1c0:	0043102a 	slt	v0,v0,v1
  45f1c4:	14400008 	bnez	v0,45f1e8 <complete_state_transition+0x688>
  45f1c8:	00000000 	nop
			{
			    agreed_time = TRUE;
  45f1cc:	24020001 	li	v0,1
  45f1d0:	afc20030 	sw	v0,48(s8)
			    delay = st->st_esp.attrs.life_seconds;
  45f1d4:	8fc20024 	lw	v0,36(s8)
  45f1d8:	00000000 	nop
  45f1dc:	8c420074 	lw	v0,116(v0)
  45f1e0:	00000000 	nop
  45f1e4:	afc20028 	sw	v0,40(s8)
			}
			if (st->st_ipcomp.present
			&& delay >= st->st_ipcomp.attrs.life_seconds)
  45f1e8:	8fc20024 	lw	v0,36(s8)
  45f1ec:	00000000 	nop
  45f1f0:	8c420094 	lw	v0,148(v0)
  45f1f4:	00000000 	nop
  45f1f8:	10400010 	beqz	v0,45f23c <complete_state_transition+0x6dc>
  45f1fc:	00000000 	nop
  45f200:	8fc20024 	lw	v0,36(s8)
  45f204:	00000000 	nop
  45f208:	8c4300a0 	lw	v1,160(v0)
  45f20c:	8fc20028 	lw	v0,40(s8)
  45f210:	00000000 	nop
  45f214:	0043102a 	slt	v0,v0,v1
  45f218:	14400008 	bnez	v0,45f23c <complete_state_transition+0x6dc>
  45f21c:	00000000 	nop
			{
			    agreed_time = TRUE;
  45f220:	24020001 	li	v0,1
  45f224:	afc20030 	sw	v0,48(s8)
			    delay = st->st_ipcomp.attrs.life_seconds;
  45f228:	8fc20024 	lw	v0,36(s8)
  45f22c:	00000000 	nop
  45f230:	8c4200a0 	lw	v0,160(v0)
  45f234:	00000000 	nop
  45f238:	afc20028 	sw	v0,40(s8)
			}
		    }

		    /* If we have enough time, save some for
		     * replacement.  Otherwise, don't attempt.
		     * In fact, we should always have time.
		     * Whack enforces this restriction on our
		     * own lifetime.  If a smaller liftime comes
		     * from the other IKE, we won't have
		     * EVENT_SA_REPLACE.
		     *
		     * Important policy lies buried here.
		     * For example, we favour the initiator over the
		     * responder by making the initiator start rekeying
		     * sooner.  Also, fuzz is only added to the
		     * initiator's margin.
		     *
		     * If POLICY_DONT_REKEY, and we are willing to use
		     * the agreed time, we'll just let the SA expire.
		     * Note: for ISAKMP SA, we let the negotiated
		     * time stand.
		     */
		    if (agreed_time
		    && (st->st_connection->policy & POLICY_DONT_REKEY))
  45f23c:	8fc20030 	lw	v0,48(s8)
  45f240:	00000000 	nop
  45f244:	10400013 	beqz	v0,45f294 <complete_state_transition+0x734>
  45f248:	00000000 	nop
  45f24c:	8fc20024 	lw	v0,36(s8)
  45f250:	00000000 	nop
  45f254:	8c42000c 	lw	v0,12(v0)
  45f258:	00000000 	nop
  45f25c:	8c440008 	lw	a0,8(v0)
  45f260:	8c45000c 	lw	a1,12(v0)
  45f264:	24020000 	li	v0,0
  45f268:	24030400 	li	v1,1024
  45f26c:	00822024 	and	a0,a0,v0
  45f270:	00a32824 	and	a1,a1,v1
  45f274:	00801021 	move	v0,a0
  45f278:	00451025 	or	v0,v0,a1
  45f27c:	10400005 	beqz	v0,45f294 <complete_state_transition+0x734>
  45f280:	00000000 	nop
		    {
			kind = EVENT_SA_EXPIRE;
  45f284:	24020006 	li	v0,6
  45f288:	afc2002c 	sw	v0,44(s8)
  45f28c:	100000aa 	b	45f538 <complete_state_transition+0x9d8>
  45f290:	00000000 	nop
		    }
		    else
		    {
			unsigned long marg = st->st_connection->sa_rekey_margin;
  45f294:	8fc20024 	lw	v0,36(s8)
  45f298:	00000000 	nop
  45f29c:	8c42000c 	lw	v0,12(v0)
  45f2a0:	00000000 	nop
  45f2a4:	8c420018 	lw	v0,24(v0)
  45f2a8:	00000000 	nop
  45f2ac:	afc20034 	sw	v0,52(s8)

			if (smc->flags & SMF_INITIATOR)
  45f2b0:	8fc2001c 	lw	v0,28(s8)
  45f2b4:	00000000 	nop
  45f2b8:	8c440008 	lw	a0,8(v0)
  45f2bc:	8c45000c 	lw	a1,12(v0)
  45f2c0:	24020000 	li	v0,0
  45f2c4:	24030100 	li	v1,256
  45f2c8:	00822024 	and	a0,a0,v0
  45f2cc:	00a32824 	and	a1,a1,v1
  45f2d0:	00801021 	move	v0,a0
  45f2d4:	00451025 	or	v0,v0,a1
  45f2d8:	10400071 	beqz	v0,45f4a0 <complete_state_transition+0x940>
  45f2dc:	00000000 	nop
			    marg += marg
  45f2e0:	8fc40034 	lw	a0,52(s8)
  45f2e4:	8f9987f4 	lw	t9,-30732(gp)
  45f2e8:	00000000 	nop
  45f2ec:	0320f809 	jalr	t9
  45f2f0:	00000000 	nop
  45f2f4:	8fdc0010 	lw	gp,16(s8)
  45f2f8:	afc20040 	sw	v0,64(s8)
  45f2fc:	afc30044 	sw	v1,68(s8)
  45f300:	8fc20034 	lw	v0,52(s8)
  45f304:	00000000 	nop
  45f308:	0441000c 	bgez	v0,45f33c <complete_state_transition+0x7dc>
  45f30c:	00000000 	nop
  45f310:	8fc40040 	lw	a0,64(s8)
  45f314:	8fc50044 	lw	a1,68(s8)
  45f318:	3c0641f0 	lui	a2,0x41f0
  45f31c:	00003821 	move	a3,zero
  45f320:	8f9985b8 	lw	t9,-31304(gp)
  45f324:	00000000 	nop
  45f328:	0320f809 	jalr	t9
  45f32c:	00000000 	nop
  45f330:	8fdc0010 	lw	gp,16(s8)
  45f334:	afc20040 	sw	v0,64(s8)
  45f338:	afc30044 	sw	v1,68(s8)
  45f33c:	8fc20024 	lw	v0,36(s8)
  45f340:	00000000 	nop
  45f344:	8c42000c 	lw	v0,12(v0)
  45f348:	00000000 	nop
  45f34c:	8c43001c 	lw	v1,28(v0)
  45f350:	8fc20034 	lw	v0,52(s8)
  45f354:	00000000 	nop
  45f358:	00430018 	mult	v0,v1
  45f35c:	00008012 	mflo	s0
  45f360:	02002021 	move	a0,s0
  45f364:	8f9987f4 	lw	t9,-30732(gp)
  45f368:	00000000 	nop
  45f36c:	0320f809 	jalr	t9
  45f370:	00000000 	nop
  45f374:	8fdc0010 	lw	gp,16(s8)
  45f378:	afc20048 	sw	v0,72(s8)
  45f37c:	afc3004c 	sw	v1,76(s8)
  45f380:	0601000c 	bgez	s0,45f3b4 <complete_state_transition+0x854>
  45f384:	00000000 	nop
  45f388:	8fc40048 	lw	a0,72(s8)
  45f38c:	8fc5004c 	lw	a1,76(s8)
  45f390:	3c0641f0 	lui	a2,0x41f0
  45f394:	00003821 	move	a3,zero
  45f398:	8f9985b8 	lw	t9,-31304(gp)
  45f39c:	00000000 	nop
  45f3a0:	0320f809 	jalr	t9
  45f3a4:	00000000 	nop
  45f3a8:	8fdc0010 	lw	gp,16(s8)
  45f3ac:	afc20048 	sw	v0,72(s8)
  45f3b0:	afc3004c 	sw	v1,76(s8)
  45f3b4:	8fc40048 	lw	a0,72(s8)
  45f3b8:	8fc5004c 	lw	a1,76(s8)
  45f3bc:	3c064059 	lui	a2,0x4059
  45f3c0:	00003821 	move	a3,zero
  45f3c4:	8f998810 	lw	t9,-30704(gp)
  45f3c8:	00000000 	nop
  45f3cc:	0320f809 	jalr	t9
  45f3d0:	00000000 	nop
  45f3d4:	8fdc0010 	lw	gp,16(s8)
  45f3d8:	00408021 	move	s0,v0
  45f3dc:	00608821 	move	s1,v1
  45f3e0:	8f998674 	lw	t9,-31116(gp)
  45f3e4:	00000000 	nop
  45f3e8:	0320f809 	jalr	t9
  45f3ec:	00000000 	nop
  45f3f0:	8fdc0010 	lw	gp,16(s8)
  45f3f4:	00402021 	move	a0,v0
  45f3f8:	8f9987f4 	lw	t9,-30732(gp)
  45f3fc:	00000000 	nop
  45f400:	0320f809 	jalr	t9
  45f404:	00000000 	nop
  45f408:	8fdc0010 	lw	gp,16(s8)
  45f40c:	00402021 	move	a0,v0
  45f410:	00602821 	move	a1,v1
  45f414:	3c0641e0 	lui	a2,0x41e0
  45f418:	00003821 	move	a3,zero
  45f41c:	8f998810 	lw	t9,-30704(gp)
  45f420:	00000000 	nop
  45f424:	0320f809 	jalr	t9
  45f428:	00000000 	nop
  45f42c:	8fdc0010 	lw	gp,16(s8)
  45f430:	02002021 	move	a0,s0
  45f434:	02202821 	move	a1,s1
  45f438:	00403021 	move	a2,v0
  45f43c:	00603821 	move	a3,v1
  45f440:	8f9989e8 	lw	t9,-30232(gp)
  45f444:	00000000 	nop
  45f448:	0320f809 	jalr	t9
  45f44c:	00000000 	nop
  45f450:	8fdc0010 	lw	gp,16(s8)
  45f454:	8fc40040 	lw	a0,64(s8)
  45f458:	8fc50044 	lw	a1,68(s8)
  45f45c:	00403021 	move	a2,v0
  45f460:	00603821 	move	a3,v1
  45f464:	8f9985b8 	lw	t9,-31304(gp)
  45f468:	00000000 	nop
  45f46c:	0320f809 	jalr	t9
  45f470:	00000000 	nop
  45f474:	8fdc0010 	lw	gp,16(s8)
  45f478:	00402021 	move	a0,v0
  45f47c:	00602821 	move	a1,v1
  45f480:	8f998888 	lw	t9,-30584(gp)
  45f484:	00000000 	nop
  45f488:	0320f809 	jalr	t9
  45f48c:	00000000 	nop
  45f490:	8fdc0010 	lw	gp,16(s8)
  45f494:	afc20034 	sw	v0,52(s8)
  45f498:	10000005 	b	45f4b0 <complete_state_transition+0x950>
  45f49c:	00000000 	nop
				* st->st_connection->sa_rekey_fuzz / 100.E0
				* (rand() / (RAND_MAX + 1.E0));
			else
			    marg /= 2;
  45f4a0:	8fc20034 	lw	v0,52(s8)
  45f4a4:	00000000 	nop
  45f4a8:	00021042 	srl	v0,v0,0x1
  45f4ac:	afc20034 	sw	v0,52(s8)

			if ((unsigned long)delay > marg)
  45f4b0:	8fc20034 	lw	v0,52(s8)
  45f4b4:	8fc30028 	lw	v1,40(s8)
  45f4b8:	00000000 	nop
  45f4bc:	0043102b 	sltu	v0,v0,v1
  45f4c0:	1040000c 	beqz	v0,45f4f4 <complete_state_transition+0x994>
  45f4c4:	00000000 	nop
			{
			    delay -= marg;
  45f4c8:	8fc30028 	lw	v1,40(s8)
  45f4cc:	8fc20034 	lw	v0,52(s8)
  45f4d0:	00000000 	nop
  45f4d4:	00621023 	subu	v0,v1,v0
  45f4d8:	afc20028 	sw	v0,40(s8)
			    st->st_margin = marg;
  45f4dc:	8fc30034 	lw	v1,52(s8)
  45f4e0:	8fc20024 	lw	v0,36(s8)
  45f4e4:	00000000 	nop
  45f4e8:	ac430158 	sw	v1,344(v0)
  45f4ec:	10000012 	b	45f538 <complete_state_transition+0x9d8>
  45f4f0:	00000000 	nop
			}
			else
			{
			    kind = EVENT_SA_EXPIRE;
  45f4f4:	24020006 	li	v0,6
  45f4f8:	afc2002c 	sw	v0,44(s8)
			}
		    }
		    break;
  45f4fc:	1000000e 	b	45f538 <complete_state_transition+0x9d8>
  45f500:	00000000 	nop

		case EVENT_NULL:	/* non-event */
		case EVENT_REINIT_SECRET:	/* Refresh cookie secret */
		default:
		    impossible();
  45f504:	8f84802c 	lw	a0,-32724(gp)
  45f508:	00000000 	nop
  45f50c:	2484251c 	addiu	a0,a0,9500
  45f510:	8f85802c 	lw	a1,-32724(gp)
  45f514:	00000000 	nop
  45f518:	24a513bc 	addiu	a1,a1,5052
  45f51c:	2406090c 	li	a2,2316
  45f520:	8f998bb8 	lw	t9,-29768(gp)
  45f524:	00000000 	nop
  45f528:	0320f809 	jalr	t9
  45f52c:	00000000 	nop
  45f530:	8fdc0010 	lw	gp,16(s8)
  45f534:	00000000 	nop
		}
		event_schedule(kind, delay, st);
  45f538:	8fc4002c 	lw	a0,44(s8)
  45f53c:	8fc50028 	lw	a1,40(s8)
  45f540:	8fc60024 	lw	a2,36(s8)
  45f544:	8f998410 	lw	t9,-31728(gp)
  45f548:	00000000 	nop
  45f54c:	0320f809 	jalr	t9
  45f550:	00000000 	nop
  45f554:	8fdc0010 	lw	gp,16(s8)
  45f558:	00000000 	nop
	    }

	    /* tell whack and log of progress */
	    {
		const char *story = state_story[st->st_state - STATE_MAIN_R0];
  45f55c:	8fc20024 	lw	v0,36(s8)
  45f560:	00000000 	nop
  45f564:	8c42014c 	lw	v0,332(v0)
  45f568:	00000000 	nop
  45f56c:	2442fffd 	addiu	v0,v0,-3
  45f570:	00021080 	sll	v0,v0,0x2
  45f574:	8f818b1c 	lw	at,-29924(gp)
  45f578:	00000000 	nop
  45f57c:	00221021 	addu	v0,at,v0
  45f580:	8c420000 	lw	v0,0(v0)
  45f584:	00000000 	nop
  45f588:	afc20034 	sw	v0,52(s8)
		enum rc_type w = RC_NEW_STATE + st->st_state;
  45f58c:	8fc20024 	lw	v0,36(s8)
  45f590:	00000000 	nop
  45f594:	8c42014c 	lw	v0,332(v0)
  45f598:	00000000 	nop
  45f59c:	24420064 	addiu	v0,v0,100
  45f5a0:	afc20030 	sw	v0,48(s8)

		if (IS_ISAKMP_SA_ESTABLISHED(st->st_state)
		|| IS_IPSEC_SA_ESTABLISHED(st->st_state))
  45f5a4:	8fc20024 	lw	v0,36(s8)
  45f5a8:	00000000 	nop
  45f5ac:	8c43014c 	lw	v1,332(v0)
  45f5b0:	24020009 	li	v0,9
  45f5b4:	1062002d 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f5b8:	00000000 	nop
  45f5bc:	8fc20024 	lw	v0,36(s8)
  45f5c0:	00000000 	nop
  45f5c4:	8c43014c 	lw	v1,332(v0)
  45f5c8:	2402000a 	li	v0,10
  45f5cc:	10620027 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f5d0:	00000000 	nop
  45f5d4:	8fc20024 	lw	v0,36(s8)
  45f5d8:	00000000 	nop
  45f5dc:	8c43014c 	lw	v1,332(v0)
  45f5e0:	2402000e 	li	v0,14
  45f5e4:	10620021 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f5e8:	00000000 	nop
  45f5ec:	8fc20024 	lw	v0,36(s8)
  45f5f0:	00000000 	nop
  45f5f4:	8c43014c 	lw	v1,332(v0)
  45f5f8:	2402000f 	li	v0,15
  45f5fc:	1062001b 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f600:	00000000 	nop
  45f604:	8fc20024 	lw	v0,36(s8)
  45f608:	00000000 	nop
  45f60c:	8c43014c 	lw	v1,332(v0)
  45f610:	24020010 	li	v0,16
  45f614:	10620015 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f618:	00000000 	nop
  45f61c:	8fc20024 	lw	v0,36(s8)
  45f620:	00000000 	nop
  45f624:	8c43014c 	lw	v1,332(v0)
  45f628:	24020011 	li	v0,17
  45f62c:	1062000f 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f630:	00000000 	nop
  45f634:	8fc20024 	lw	v0,36(s8)
  45f638:	00000000 	nop
  45f63c:	8c43014c 	lw	v1,332(v0)
  45f640:	24020018 	li	v0,24
  45f644:	10620009 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f648:	00000000 	nop
  45f64c:	8fc20024 	lw	v0,36(s8)
  45f650:	00000000 	nop
  45f654:	8c43014c 	lw	v1,332(v0)
  45f658:	24020019 	li	v0,25
  45f65c:	10620003 	beq	v1,v0,45f66c <complete_state_transition+0xb0c>
  45f660:	00000000 	nop
  45f664:	1000000d 	b	45f69c <complete_state_transition+0xb3c>
  45f668:	00000000 	nop
		{
		    /* log our success */
		    plog("%s", story);
  45f66c:	8f84802c 	lw	a0,-32724(gp)
  45f670:	00000000 	nop
  45f674:	24842528 	addiu	a0,a0,9512
  45f678:	8fc50034 	lw	a1,52(s8)
  45f67c:	8f998abc 	lw	t9,-30020(gp)
  45f680:	00000000 	nop
  45f684:	0320f809 	jalr	t9
  45f688:	00000000 	nop
  45f68c:	8fdc0010 	lw	gp,16(s8)
  45f690:	00000000 	nop
		    w = RC_SUCCESS;
  45f694:	24020004 	li	v0,4
  45f698:	afc20030 	sw	v0,48(s8)
		}

		/* tell whack our progress */
		whack_log(w
  45f69c:	8f8483b0 	lw	a0,-31824(gp)
  45f6a0:	8fc20024 	lw	v0,36(s8)
  45f6a4:	00000000 	nop
  45f6a8:	8c45014c 	lw	a1,332(v0)
  45f6ac:	8f9984bc 	lw	t9,-31556(gp)
  45f6b0:	00000000 	nop
  45f6b4:	0320f809 	jalr	t9
  45f6b8:	00000000 	nop
  45f6bc:	8fdc0010 	lw	gp,16(s8)
  45f6c0:	8fc40030 	lw	a0,48(s8)
  45f6c4:	8f85802c 	lw	a1,-32724(gp)
  45f6c8:	00000000 	nop
  45f6cc:	24a5252c 	addiu	a1,a1,9516
  45f6d0:	00403021 	move	a2,v0
  45f6d4:	8fc70034 	lw	a3,52(s8)
  45f6d8:	8f9982a8 	lw	t9,-32088(gp)
  45f6dc:	00000000 	nop
  45f6e0:	0320f809 	jalr	t9
  45f6e4:	00000000 	nop
  45f6e8:	8fdc0010 	lw	gp,16(s8)
  45f6ec:	00000000 	nop
		    , "%s: %s"
		    , enum_name(&state_names, st->st_state)
		    , story);
	    }

	    if (smc->flags & SMF_RELEASE_PENDING_P2)
  45f6f0:	8fc2001c 	lw	v0,28(s8)
  45f6f4:	00000000 	nop
  45f6f8:	8c440008 	lw	a0,8(v0)
  45f6fc:	8c45000c 	lw	a1,12(v0)
  45f700:	24020000 	li	v0,0
  45f704:	24034000 	li	v1,16384
  45f708:	00822024 	and	a0,a0,v0
  45f70c:	00a32824 	and	a1,a1,v1
  45f710:	00801021 	move	v0,a0
  45f714:	00451025 	or	v0,v0,a1
  45f718:	10400008 	beqz	v0,45f73c <complete_state_transition+0xbdc>
  45f71c:	00000000 	nop
	    {
		/* Initiate any Quick Mode negotiations that
		 * were waiting to piggyback on this Keying Channel.
		 *
		 * ??? there is a potential race condition
		 * if we are the responder: the initial Phase 2
		 * message might outrun the final Phase 1 message.
		 * I think that retransmission will recover.
		 */
		unpend(st);
  45f720:	8fc40024 	lw	a0,36(s8)
  45f724:	8f998160 	lw	t9,-32416(gp)
  45f728:	00000000 	nop
  45f72c:	0320f809 	jalr	t9
  45f730:	00000000 	nop
  45f734:	8fdc0010 	lw	gp,16(s8)
  45f738:	00000000 	nop
	    }

	    if (IS_ISAKMP_SA_ESTABLISHED(st->st_state)
		|| IS_IPSEC_SA_ESTABLISHED(st->st_state))
  45f73c:	8fc20024 	lw	v0,36(s8)
  45f740:	00000000 	nop
  45f744:	8c43014c 	lw	v1,332(v0)
  45f748:	24020009 	li	v0,9
  45f74c:	1062002d 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f750:	00000000 	nop
  45f754:	8fc20024 	lw	v0,36(s8)
  45f758:	00000000 	nop
  45f75c:	8c43014c 	lw	v1,332(v0)
  45f760:	2402000a 	li	v0,10
  45f764:	10620027 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f768:	00000000 	nop
  45f76c:	8fc20024 	lw	v0,36(s8)
  45f770:	00000000 	nop
  45f774:	8c43014c 	lw	v1,332(v0)
  45f778:	2402000e 	li	v0,14
  45f77c:	10620021 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f780:	00000000 	nop
  45f784:	8fc20024 	lw	v0,36(s8)
  45f788:	00000000 	nop
  45f78c:	8c43014c 	lw	v1,332(v0)
  45f790:	2402000f 	li	v0,15
  45f794:	1062001b 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f798:	00000000 	nop
  45f79c:	8fc20024 	lw	v0,36(s8)
  45f7a0:	00000000 	nop
  45f7a4:	8c43014c 	lw	v1,332(v0)
  45f7a8:	24020010 	li	v0,16
  45f7ac:	10620015 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f7b0:	00000000 	nop
  45f7b4:	8fc20024 	lw	v0,36(s8)
  45f7b8:	00000000 	nop
  45f7bc:	8c43014c 	lw	v1,332(v0)
  45f7c0:	24020011 	li	v0,17
  45f7c4:	1062000f 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f7c8:	00000000 	nop
  45f7cc:	8fc20024 	lw	v0,36(s8)
  45f7d0:	00000000 	nop
  45f7d4:	8c43014c 	lw	v1,332(v0)
  45f7d8:	24020018 	li	v0,24
  45f7dc:	10620009 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f7e0:	00000000 	nop
  45f7e4:	8fc20024 	lw	v0,36(s8)
  45f7e8:	00000000 	nop
  45f7ec:	8c43014c 	lw	v1,332(v0)
  45f7f0:	24020019 	li	v0,25
  45f7f4:	10620003 	beq	v1,v0,45f804 <complete_state_transition+0xca4>
  45f7f8:	00000000 	nop
  45f7fc:	10000008 	b	45f820 <complete_state_transition+0xcc0>
  45f800:	00000000 	nop
		release_whack(st);
  45f804:	8fc40024 	lw	a0,36(s8)
  45f808:	8f998750 	lw	t9,-30896(gp)
  45f80c:	00000000 	nop
  45f810:	0320f809 	jalr	t9
  45f814:	00000000 	nop
  45f818:	8fdc0010 	lw	gp,16(s8)
  45f81c:	00000000 	nop

	    /* Special case for Xauth */
	    if((st->st_oakley.xauth != 0)
		&& IS_ISAKMP_SA_ESTABLISHED(st->st_state))
  45f820:	8fc20024 	lw	v0,36(s8)
  45f824:	00000000 	nop
  45f828:	9442002e 	lhu	v0,46(v0)
  45f82c:	00000000 	nop
  45f830:	10400032 	beqz	v0,45f8fc <complete_state_transition+0xd9c>
  45f834:	00000000 	nop
  45f838:	8fc20024 	lw	v0,36(s8)
  45f83c:	00000000 	nop
  45f840:	8c43014c 	lw	v1,332(v0)
  45f844:	24020009 	li	v0,9
  45f848:	10620021 	beq	v1,v0,45f8d0 <complete_state_transition+0xd70>
  45f84c:	00000000 	nop
  45f850:	8fc20024 	lw	v0,36(s8)
  45f854:	00000000 	nop
  45f858:	8c43014c 	lw	v1,332(v0)
  45f85c:	2402000a 	li	v0,10
  45f860:	1062001b 	beq	v1,v0,45f8d0 <complete_state_transition+0xd70>
  45f864:	00000000 	nop
  45f868:	8fc20024 	lw	v0,36(s8)
  45f86c:	00000000 	nop
  45f870:	8c43014c 	lw	v1,332(v0)
  45f874:	2402000e 	li	v0,14
  45f878:	10620015 	beq	v1,v0,45f8d0 <complete_state_transition+0xd70>
  45f87c:	00000000 	nop
  45f880:	8fc20024 	lw	v0,36(s8)
  45f884:	00000000 	nop
  45f888:	8c43014c 	lw	v1,332(v0)
  45f88c:	2402000f 	li	v0,15
  45f890:	1062000f 	beq	v1,v0,45f8d0 <complete_state_transition+0xd70>
  45f894:	00000000 	nop
  45f898:	8fc20024 	lw	v0,36(s8)
  45f89c:	00000000 	nop
  45f8a0:	8c43014c 	lw	v1,332(v0)
  45f8a4:	24020010 	li	v0,16
  45f8a8:	10620009 	beq	v1,v0,45f8d0 <complete_state_transition+0xd70>
  45f8ac:	00000000 	nop
  45f8b0:	8fc20024 	lw	v0,36(s8)
  45f8b4:	00000000 	nop
  45f8b8:	8c43014c 	lw	v1,332(v0)
  45f8bc:	24020011 	li	v0,17
  45f8c0:	10620003 	beq	v1,v0,45f8d0 <complete_state_transition+0xd70>
  45f8c4:	00000000 	nop
  45f8c8:	1000000c 	b	45f8fc <complete_state_transition+0xd9c>
  45f8cc:	00000000 	nop
	    {
#ifdef XAUTH
		plog("XAUTH: Sending XAUTH Login/Password Request");
		xauth_send_request(st);
#else
		plog("XAUTH Support not enabled.  See README.XAUTH");
  45f8d0:	8f84802c 	lw	a0,-32724(gp)
  45f8d4:	00000000 	nop
  45f8d8:	24842534 	addiu	a0,a0,9524
  45f8dc:	8f998abc 	lw	t9,-30020(gp)
  45f8e0:	00000000 	nop
  45f8e4:	0320f809 	jalr	t9
  45f8e8:	00000000 	nop
  45f8ec:	8fdc0010 	lw	gp,16(s8)
  45f8f0:	00000000 	nop
#endif
		break;
  45f8f4:	100000f3 	b	45fcc4 <complete_state_transition+0x1164>
  45f8f8:	00000000 	nop
	    }

	    if (IS_QUICK(st->st_state))
  45f8fc:	8fc20024 	lw	v0,36(s8)
  45f900:	00000000 	nop
  45f904:	8c42014c 	lw	v0,332(v0)
  45f908:	00000000 	nop
  45f90c:	2c420015 	sltiu	v0,v0,21
  45f910:	1440000a 	bnez	v0,45f93c <complete_state_transition+0xddc>
  45f914:	00000000 	nop
  45f918:	8fc20024 	lw	v0,36(s8)
  45f91c:	00000000 	nop
  45f920:	8c42014c 	lw	v0,332(v0)
  45f924:	00000000 	nop
  45f928:	2c42001a 	sltiu	v0,v0,26
  45f92c:	10400003 	beqz	v0,45f93c <complete_state_transition+0xddc>
  45f930:	00000000 	nop
	      break;
  45f934:	100000e3 	b	45fcc4 <complete_state_transition+0x1164>
  45f938:	00000000 	nop

	    /* Should we set the peer's IP address ? */
	    if(st->st_connection->that.use_mode_config 
		   && IS_ISAKMP_SA_ESTABLISHED(st->st_state)) 
  45f93c:	8fc20024 	lw	v0,36(s8)
  45f940:	00000000 	nop
  45f944:	8c42000c 	lw	v0,12(v0)
  45f948:	00000000 	nop
  45f94c:	8c420170 	lw	v0,368(v0)
  45f950:	00000000 	nop
  45f954:	104000db 	beqz	v0,45fcc4 <complete_state_transition+0x1164>
  45f958:	00000000 	nop
  45f95c:	8fc20024 	lw	v0,36(s8)
  45f960:	00000000 	nop
  45f964:	8c43014c 	lw	v1,332(v0)
  45f968:	24020009 	li	v0,9
  45f96c:	106200d5 	beq	v1,v0,45fcc4 <complete_state_transition+0x1164>
  45f970:	00000000 	nop
  45f974:	8fc20024 	lw	v0,36(s8)
  45f978:	00000000 	nop
  45f97c:	8c43014c 	lw	v1,332(v0)
  45f980:	2402000a 	li	v0,10
  45f984:	106200cf 	beq	v1,v0,45fcc4 <complete_state_transition+0x1164>
  45f988:	00000000 	nop
  45f98c:	8fc20024 	lw	v0,36(s8)
  45f990:	00000000 	nop
  45f994:	8c43014c 	lw	v1,332(v0)
  45f998:	2402000e 	li	v0,14
  45f99c:	106200c9 	beq	v1,v0,45fcc4 <complete_state_transition+0x1164>
  45f9a0:	00000000 	nop
  45f9a4:	8fc20024 	lw	v0,36(s8)
  45f9a8:	00000000 	nop
  45f9ac:	8c43014c 	lw	v1,332(v0)
  45f9b0:	2402000f 	li	v0,15
  45f9b4:	106200c3 	beq	v1,v0,45fcc4 <complete_state_transition+0x1164>
  45f9b8:	00000000 	nop
  45f9bc:	8fc20024 	lw	v0,36(s8)
  45f9c0:	00000000 	nop
  45f9c4:	8c43014c 	lw	v1,332(v0)
  45f9c8:	24020010 	li	v0,16
  45f9cc:	106200bd 	beq	v1,v0,45fcc4 <complete_state_transition+0x1164>
  45f9d0:	00000000 	nop
  45f9d4:	8fc20024 	lw	v0,36(s8)
  45f9d8:	00000000 	nop
  45f9dc:	8c43014c 	lw	v1,332(v0)
  45f9e0:	24020011 	li	v0,17
  45f9e4:	106200b7 	beq	v1,v0,45fcc4 <complete_state_transition+0x1164>
  45f9e8:	00000000 	nop
  45f9ec:	100000b5 	b	45fcc4 <complete_state_transition+0x1164>
  45f9f0:	00000000 	nop
	    {
#ifdef XAUTH
#ifdef MODECFG
		    plog("IKE-MODE-CONFIG: Assigning IP Address");
		    modecfg_send_set(st);
#else
		    plog("IKE-MODE-CONFIG: Requested but support not compiled in.  See README.XAUTH");
#endif
#endif
		    break;
	    }

	    /* If we are the responder and the client is in "Contivity mode",
	       we need to initiate Quick mode */
	    /* Relies on fugly hack, so removed for now.  Plus, we don't
	       do Aggr Responder, so Nortel won't work anyways */
/*
	    if (!(smc->flags & SMF_INITIATOR)
		&& IS_MODE_CFG_ESTABLISHED(st->st_state)
		&& (st->st_seen_vendorid & LELEM(NORTEL_VID))) 
	    {
		st->st_state = STATE_MAIN_R3;
	        set_cur_state(st);
	        quick_outI1(st->st_whack_sock, st, st->st_connection, st->st_connection->policy, 1, SOS_NOBODY);
		break;
	    }	
*/

	    break;

	case STF_INTERNAL_ERROR:
	    whack_log(RC_INTERNALERR + md->note
  45f9f4:	8f8483b0 	lw	a0,-31824(gp)
  45f9f8:	8fc20024 	lw	v0,36(s8)
  45f9fc:	00000000 	nop
  45fa00:	8c45014c 	lw	a1,332(v0)
  45fa04:	8f9984bc 	lw	t9,-31556(gp)
  45fa08:	00000000 	nop
  45fa0c:	0320f809 	jalr	t9
  45fa10:	00000000 	nop
  45fa14:	8fdc0010 	lw	gp,16(s8)
  45fa18:	00401821 	move	v1,v0
  45fa1c:	8fc20018 	lw	v0,24(s8)
  45fa20:	00000000 	nop
  45fa24:	8c4200dc 	lw	v0,220(v0)
  45fa28:	00000000 	nop
  45fa2c:	24420020 	addiu	v0,v0,32
  45fa30:	00402021 	move	a0,v0
  45fa34:	8f85802c 	lw	a1,-32724(gp)
  45fa38:	00000000 	nop
  45fa3c:	24a52564 	addiu	a1,a1,9572
  45fa40:	00603021 	move	a2,v1
  45fa44:	8f9982a8 	lw	t9,-32088(gp)
  45fa48:	00000000 	nop
  45fa4c:	0320f809 	jalr	t9
  45fa50:	00000000 	nop
  45fa54:	8fdc0010 	lw	gp,16(s8)
  45fa58:	00000000 	nop
		, "%s: internal error"
		, enum_name(&state_names, st->st_state));

	    DBG(DBG_CONTROL,
  45fa5c:	8f8284f8 	lw	v0,-31496(gp)
  45fa60:	00000000 	nop
  45fa64:	8c420000 	lw	v0,0(v0)
  45fa68:	00000000 	nop
  45fa6c:	30420010 	andi	v0,v0,0x10
  45fa70:	10400094 	beqz	v0,45fcc4 <complete_state_transition+0x1164>
  45fa74:	00000000 	nop
  45fa78:	8f8483b0 	lw	a0,-31824(gp)
  45fa7c:	8fc50020 	lw	a1,32(s8)
  45fa80:	8f9984bc 	lw	t9,-31556(gp)
  45fa84:	00000000 	nop
  45fa88:	0320f809 	jalr	t9
  45fa8c:	00000000 	nop
  45fa90:	8fdc0010 	lw	gp,16(s8)
  45fa94:	00000000 	nop
  45fa98:	8f84802c 	lw	a0,-32724(gp)
  45fa9c:	00000000 	nop
  45faa0:	24842578 	addiu	a0,a0,9592
  45faa4:	00402821 	move	a1,v0
  45faa8:	8f9983b8 	lw	t9,-31816(gp)
  45faac:	00000000 	nop
  45fab0:	0320f809 	jalr	t9
  45fab4:	00000000 	nop
  45fab8:	8fdc0010 	lw	gp,16(s8)
  45fabc:	00000000 	nop
		DBG_log("state transition function for %s had internal error",
		    enum_name(&state_names, from_state)));
	    break;
  45fac0:	10000080 	b	45fcc4 <complete_state_transition+0x1164>
  45fac4:	00000000 	nop

#ifdef DODGE_DH_MISSING_ZERO_BUG
	case STF_REPLACE_DOOMED_EXCHANGE:
	    /* we've got a distateful DH shared secret --
	     * let's renegotiate.
	     */
	    loglog(RC_LOG_SERIOUS, "dropping and reinitiating exchange"
		" to avoid Pluto 1.0 bug handling DH shared secret"
		" with leading zero byte");
	    ipsecdoi_replace(st, st->st_try);
	    delete_state(st);
	    st = NULL;
	    break;
#endif

	default:	/* a shortcut to STF_FAIL, setting md->note */
	    passert(result > STF_FAIL);
  45fac8:	8fc20074 	lw	v0,116(s8)
  45facc:	00000000 	nop
  45fad0:	2c420005 	sltiu	v0,v0,5
  45fad4:	1040000e 	beqz	v0,45fb10 <complete_state_transition+0xfb0>
  45fad8:	00000000 	nop
  45fadc:	8f84802c 	lw	a0,-32724(gp)
  45fae0:	00000000 	nop
  45fae4:	248425ac 	addiu	a0,a0,9644
  45fae8:	8f85802c 	lw	a1,-32724(gp)
  45faec:	00000000 	nop
  45faf0:	24a513bc 	addiu	a1,a1,5052
  45faf4:	24060980 	li	a2,2432
  45faf8:	8f998bb8 	lw	t9,-29768(gp)
  45fafc:	00000000 	nop
  45fb00:	0320f809 	jalr	t9
  45fb04:	00000000 	nop
  45fb08:	8fdc0010 	lw	gp,16(s8)
  45fb0c:	00000000 	nop
	    md->note = result - STF_FAIL;
  45fb10:	8fc20074 	lw	v0,116(s8)
  45fb14:	00000000 	nop
  45fb18:	2443fffc 	addiu	v1,v0,-4
  45fb1c:	8fc20018 	lw	v0,24(s8)
  45fb20:	00000000 	nop
  45fb24:	ac4300dc 	sw	v1,220(v0)
	    result = STF_FAIL;
  45fb28:	24020004 	li	v0,4
  45fb2c:	afc20074 	sw	v0,116(s8)
	    /* FALL THROUGH ... */
	case STF_FAIL:
	    /* As it is, we act as if this message never happened:
	     * whatever retrying was in place, remains in place.
	     */
	    whack_log(RC_NOTIFICATION + md->note
  45fb30:	8f8483b0 	lw	a0,-31824(gp)
  45fb34:	8fc20024 	lw	v0,36(s8)
  45fb38:	00000000 	nop
  45fb3c:	8c45014c 	lw	a1,332(v0)
  45fb40:	8f9984bc 	lw	t9,-31556(gp)
  45fb44:	00000000 	nop
  45fb48:	0320f809 	jalr	t9
  45fb4c:	00000000 	nop
  45fb50:	8fdc0010 	lw	gp,16(s8)
  45fb54:	00408021 	move	s0,v0
  45fb58:	8f848b2c 	lw	a0,-29908(gp)
  45fb5c:	8fc20018 	lw	v0,24(s8)
  45fb60:	00000000 	nop
  45fb64:	8c4500dc 	lw	a1,220(v0)
  45fb68:	8f9984bc 	lw	t9,-31556(gp)
  45fb6c:	00000000 	nop
  45fb70:	0320f809 	jalr	t9
  45fb74:	00000000 	nop
  45fb78:	8fdc0010 	lw	gp,16(s8)
  45fb7c:	00401821 	move	v1,v0
  45fb80:	8fc20018 	lw	v0,24(s8)
  45fb84:	00000000 	nop
  45fb88:	8c4200dc 	lw	v0,220(v0)
  45fb8c:	00000000 	nop
  45fb90:	244200c8 	addiu	v0,v0,200
  45fb94:	00402021 	move	a0,v0
  45fb98:	8f85802c 	lw	a1,-32724(gp)
  45fb9c:	00000000 	nop
  45fba0:	24a5252c 	addiu	a1,a1,9516
  45fba4:	02003021 	move	a2,s0
  45fba8:	00603821 	move	a3,v1
  45fbac:	8f9982a8 	lw	t9,-32088(gp)
  45fbb0:	00000000 	nop
  45fbb4:	0320f809 	jalr	t9
  45fbb8:	00000000 	nop
  45fbbc:	8fdc0010 	lw	gp,16(s8)
  45fbc0:	00000000 	nop
		, "%s: %s", enum_name(&state_names, st->st_state)
		, enum_name(&ipsec_notification_names, md->note));

	    SEND_NOTIFICATION(md->note);
  45fbc4:	8fc20024 	lw	v0,36(s8)
  45fbc8:	00000000 	nop
  45fbcc:	1040000e 	beqz	v0,45fc08 <complete_state_transition+0x10a8>
  45fbd0:	00000000 	nop
  45fbd4:	8fc20018 	lw	v0,24(s8)
  45fbd8:	00000000 	nop
  45fbdc:	944200de 	lhu	v0,222(v0)
  45fbe0:	8fc40024 	lw	a0,36(s8)
  45fbe4:	8fc50020 	lw	a1,32(s8)
  45fbe8:	00403021 	move	a2,v0
  45fbec:	8f998744 	lw	t9,-30908(gp)
  45fbf0:	00000000 	nop
  45fbf4:	0320f809 	jalr	t9
  45fbf8:	00000000 	nop
  45fbfc:	8fdc0010 	lw	gp,16(s8)
  45fc00:	1000000c 	b	45fc34 <complete_state_transition+0x10d4>
  45fc04:	00000000 	nop
  45fc08:	8fc20018 	lw	v0,24(s8)
  45fc0c:	00000000 	nop
  45fc10:	944200de 	lhu	v0,222(v0)
  45fc14:	8fc40018 	lw	a0,24(s8)
  45fc18:	00402821 	move	a1,v0
  45fc1c:	8f998908 	lw	t9,-30456(gp)
  45fc20:	00000000 	nop
  45fc24:	0320f809 	jalr	t9
  45fc28:	00000000 	nop
  45fc2c:	8fdc0010 	lw	gp,16(s8)
  45fc30:	00000000 	nop

	    DBG(DBG_CONTROL,
  45fc34:	8f8284f8 	lw	v0,-31496(gp)
  45fc38:	00000000 	nop
  45fc3c:	8c420000 	lw	v0,0(v0)
  45fc40:	00000000 	nop
  45fc44:	30420010 	andi	v0,v0,0x10
  45fc48:	1040001e 	beqz	v0,45fcc4 <complete_state_transition+0x1164>
  45fc4c:	00000000 	nop
  45fc50:	8f8483b0 	lw	a0,-31824(gp)
  45fc54:	8fc50020 	lw	a1,32(s8)
  45fc58:	8f9984bc 	lw	t9,-31556(gp)
  45fc5c:	00000000 	nop
  45fc60:	0320f809 	jalr	t9
  45fc64:	00000000 	nop
  45fc68:	8fdc0010 	lw	gp,16(s8)
  45fc6c:	00408021 	move	s0,v0
  45fc70:	8f848b2c 	lw	a0,-29908(gp)
  45fc74:	8fc20018 	lw	v0,24(s8)
  45fc78:	00000000 	nop
  45fc7c:	8c4500dc 	lw	a1,220(v0)
  45fc80:	8f9984bc 	lw	t9,-31556(gp)
  45fc84:	00000000 	nop
  45fc88:	0320f809 	jalr	t9
  45fc8c:	00000000 	nop
  45fc90:	8fdc0010 	lw	gp,16(s8)
  45fc94:	00000000 	nop
  45fc98:	8f84802c 	lw	a0,-32724(gp)
  45fc9c:	00000000 	nop
  45fca0:	248425c0 	addiu	a0,a0,9664
  45fca4:	02002821 	move	a1,s0
  45fca8:	00403021 	move	a2,v0
  45fcac:	8f9983b8 	lw	t9,-31816(gp)
  45fcb0:	00000000 	nop
  45fcb4:	0320f809 	jalr	t9
  45fcb8:	00000000 	nop
  45fcbc:	8fdc0010 	lw	gp,16(s8)
  45fcc0:	00000000 	nop
		DBG_log("state transition function for %s failed: %s"
		    , enum_name(&state_names, from_state)
		    , enum_name(&ipsec_notification_names, md->note)));
	    break;
    }
}
  45fcc4:	03c0e821 	move	sp,s8
  45fcc8:	8fbf0068 	lw	ra,104(sp)
  45fccc:	8fbe0064 	lw	s8,100(sp)
  45fcd0:	8fb1005c 	lw	s1,92(sp)
  45fcd4:	8fb00058 	lw	s0,88(sp)
  45fcd8:	27bd0070 	addiu	sp,sp,112
  45fcdc:	03e00008 	jr	ra
  45fce0:	00000000 	nop
	...

0045fcf0 <init_pbs>:
  45fcf0:	3c1c0fbb 	lui	gp,0xfbb
  45fcf4:	279ccc80 	addiu	gp,gp,-13184
  45fcf8:	0399e021 	addu	gp,gp,t9
  45fcfc:	27bdfff0 	addiu	sp,sp,-16
  45fd00:	afbc0000 	sw	gp,0(sp)
  45fd04:	afbe000c 	sw	s8,12(sp)
  45fd08:	afbc0008 	sw	gp,8(sp)
  45fd0c:	03a0f021 	move	s8,sp
  45fd10:	afc40010 	sw	a0,16(s8)
  45fd14:	afc50014 	sw	a1,20(s8)
  45fd18:	afc60018 	sw	a2,24(s8)
  45fd1c:	afc7001c 	sw	a3,28(s8)

void
init_pbs(pb_stream *pbs, u_int8_t *start, size_t len, const char *name)
{
    pbs->container = NULL;
  45fd20:	8fc20010 	lw	v0,16(s8)
  45fd24:	00000000 	nop
  45fd28:	ac400000 	sw	zero,0(v0)
    pbs->desc = NULL;
  45fd2c:	8fc20010 	lw	v0,16(s8)
  45fd30:	00000000 	nop
  45fd34:	ac400004 	sw	zero,4(v0)
    pbs->name = name;
  45fd38:	8fc3001c 	lw	v1,28(s8)
  45fd3c:	8fc20010 	lw	v0,16(s8)
  45fd40:	00000000 	nop
  45fd44:	ac430008 	sw	v1,8(v0)
    pbs->start = pbs->cur = start;
  45fd48:	8fc40010 	lw	a0,16(s8)
  45fd4c:	8fc30014 	lw	v1,20(s8)
  45fd50:	8fc20010 	lw	v0,16(s8)
  45fd54:	00000000 	nop
  45fd58:	ac430010 	sw	v1,16(v0)
  45fd5c:	ac83000c 	sw	v1,12(a0)
    pbs->roof = start + len;
  45fd60:	8fc30014 	lw	v1,20(s8)
  45fd64:	8fc20018 	lw	v0,24(s8)
  45fd68:	00000000 	nop
  45fd6c:	00621821 	addu	v1,v1,v0
  45fd70:	8fc20010 	lw	v0,16(s8)
  45fd74:	00000000 	nop
  45fd78:	ac430014 	sw	v1,20(v0)
    pbs->lenfld = NULL;
  45fd7c:	8fc20010 	lw	v0,16(s8)
  45fd80:	00000000 	nop
  45fd84:	ac400018 	sw	zero,24(v0)
    pbs->lenfld_desc = NULL;
  45fd88:	8fc20010 	lw	v0,16(s8)
  45fd8c:	00000000 	nop
  45fd90:	ac40001c 	sw	zero,28(v0)
}
  45fd94:	03c0e821 	move	sp,s8
  45fd98:	8fbe000c 	lw	s8,12(sp)
  45fd9c:	27bd0010 	addiu	sp,sp,16
  45fda0:	03e00008 	jr	ra
  45fda4:	00000000 	nop

0045fda8 <DBG_print_struct>:
  45fda8:	3c1c0fbb 	lui	gp,0xfbb
  45fdac:	279ccbc8 	addiu	gp,gp,-13368
  45fdb0:	0399e021 	addu	gp,gp,t9
  45fdb4:	27bdff78 	addiu	sp,sp,-136
  45fdb8:	afbc0010 	sw	gp,16(sp)
  45fdbc:	afbf0080 	sw	ra,128(sp)
  45fdc0:	afbe007c 	sw	s8,124(sp)
  45fdc4:	afbc0078 	sw	gp,120(sp)
  45fdc8:	03a0f021 	move	s8,sp
  45fdcc:	afc40088 	sw	a0,136(s8)
  45fdd0:	afc5008c 	sw	a1,140(s8)
  45fdd4:	afc60090 	sw	a2,144(s8)
  45fdd8:	afc70094 	sw	a3,148(s8)

#ifdef DEBUG

/* print a host struct
 *
 * This code assumes that the network and host structure
 * members have the same alignment and size!  This requires
 * that all padding be explicit.
 */
void
DBG_print_struct(const char *label, const void *struct_ptr
, struct_desc *sd, bool len_meaningful)
{
    bool immediate = FALSE;
  45fddc:	afc00018 	sw	zero,24(s8)
    const u_int8_t *inp = struct_ptr;
  45fde0:	8fc2008c 	lw	v0,140(s8)
  45fde4:	00000000 	nop
  45fde8:	afc2001c 	sw	v0,28(s8)
    field_desc *fp;

    DBG_log("%s%s:", label, sd->name);
  45fdec:	8f84802c 	lw	a0,-32724(gp)
  45fdf0:	00000000 	nop
  45fdf4:	24842a84 	addiu	a0,a0,10884
  45fdf8:	8fc50088 	lw	a1,136(s8)
  45fdfc:	8fc20090 	lw	v0,144(s8)
  45fe00:	00000000 	nop
  45fe04:	8c460000 	lw	a2,0(v0)
  45fe08:	8f9983b8 	lw	t9,-31816(gp)
  45fe0c:	00000000 	nop
  45fe10:	0320f809 	jalr	t9
  45fe14:	00000000 	nop
  45fe18:	8fdc0010 	lw	gp,16(s8)
  45fe1c:	00000000 	nop

    for (fp = sd->fields; fp->field_type != ft_end; fp++) {
  45fe20:	8fc20090 	lw	v0,144(s8)
  45fe24:	00000000 	nop
  45fe28:	8c420004 	lw	v0,4(v0)
  45fe2c:	00000000 	nop
  45fe30:	afc20020 	sw	v0,32(s8)
  45fe34:	8fc20020 	lw	v0,32(s8)
  45fe38:	00000000 	nop
  45fe3c:	8c430000 	lw	v1,0(v0)
  45fe40:	24020009 	li	v0,9
  45fe44:	14620003 	bne	v1,v0,45fe54 <DBG_print_struct+0xac>
  45fe48:	00000000 	nop
  45fe4c:	1000010e 	b	460288 <DBG_print_struct+0x4e0>
  45fe50:	00000000 	nop
	int i = fp->size;
  45fe54:	8fc20020 	lw	v0,32(s8)
  45fe58:	00000000 	nop
  45fe5c:	8c420004 	lw	v0,4(v0)
  45fe60:	00000000 	nop
  45fe64:	afc20024 	sw	v0,36(s8)
	u_int32_t n = 0;
  45fe68:	afc00028 	sw	zero,40(s8)

	switch (fp->field_type) {
  45fe6c:	8fc20020 	lw	v0,32(s8)
  45fe70:	00000000 	nop
  45fe74:	8c420000 	lw	v0,0(v0)
  45fe78:	00000000 	nop
  45fe7c:	afc20070 	sw	v0,112(s8)
  45fe80:	8fc30070 	lw	v1,112(s8)
  45fe84:	00000000 	nop
  45fe88:	2c620008 	sltiu	v0,v1,8
  45fe8c:	1040000d 	beqz	v0,45fec4 <DBG_print_struct+0x11c>
  45fe90:	00000000 	nop
  45fe94:	8fc30070 	lw	v1,112(s8)
  45fe98:	00000000 	nop
  45fe9c:	2c620001 	sltiu	v0,v1,1
  45fea0:	1040001a 	beqz	v0,45ff0c <DBG_print_struct+0x164>
  45fea4:	00000000 	nop
	case ft_mbz:	/* must be zero */
	    inp += i;
  45fea8:	8fc2001c 	lw	v0,28(s8)
  45feac:	8fc30024 	lw	v1,36(s8)
  45feb0:	00000000 	nop
  45feb4:	00431021 	addu	v0,v0,v1
  45feb8:	afc2001c 	sw	v0,28(s8)
	    break;
  45febc:	100000ec 	b	460270 <DBG_print_struct+0x4c8>
  45fec0:	00000000 	nop
  45fec4:	24020008 	li	v0,8
  45fec8:	8fc30070 	lw	v1,112(s8)
  45fecc:	00000000 	nop
  45fed0:	106200cb 	beq	v1,v0,460200 <DBG_print_struct+0x458>
  45fed4:	00000000 	nop
	case ft_nat:	/* natural number (may be 0) */
	case ft_len:	/* length of this struct and any following crud */
	case ft_lv:	/* length/value field of attribute */
	case ft_enum:	/* value from an enumeration */
	case ft_loose_enum:	/* value from an enumeration with only some names known */
	case ft_af_enum:	/* Attribute Format + value from an enumeration */
	case ft_set:	/* bits representing set */
	    switch (i) {
	    case 8/BITS_PER_BYTE:
		n = *(const u_int8_t *)inp;
		break;
	    case 16/BITS_PER_BYTE:
		n = *(const u_int16_t *)inp;
		break;
	    case 32/BITS_PER_BYTE:
		n = *(const u_int32_t *)inp;
		break;
	    default:
		impossible();
	    }
	    switch (fp->field_type) {
	    case ft_len:	/* length of this struct and any following crud */
	    case ft_lv:		/* length/value field of attribute */
		if (!immediate && !len_meaningful)
		    break;
		/* FALL THROUGH */
	    case ft_nat:	/* natural number (may be 0) */
		DBG_log("   %s: %lu", fp->name, (unsigned long)n);
		break;
	    case ft_af_enum:	/* Attribute Format + value from an enumeration */
		if ((n & ISAKMP_ATTR_AF_MASK) == ISAKMP_ATTR_AF_TV)
		    immediate = TRUE;
		/* FALL THROUGH */
	    case ft_enum:	/* value from an enumeration */
	    case ft_loose_enum:	/* value from an enumeration with only some names known */
		DBG_log("   %s: %s", fp->name, enum_show(fp->desc, n));
		break;
	    case ft_set:	/* bits representing set */
		DBG_log("   %s: %s", fp->name, bitnamesof(fp->desc, n));
		break;
	    default:
		impossible();
		break;
	    }
	    inp += i;
	    break;

	case ft_raw:	/* bytes to be left in network-order */
	    {
		char m[50];	/* arbitrary limit on name width in log */

		snprintf(m, sizeof(m), "   %s:", fp->name);
		DBG_dump(m, inp, i);
		inp += i;
	    }
	    break;
	default:
	    impossible();
  45fed8:	8f84802c 	lw	a0,-32724(gp)
  45fedc:	00000000 	nop
  45fee0:	24842a8c 	addiu	a0,a0,10892
  45fee4:	8f85802c 	lw	a1,-32724(gp)
  45fee8:	00000000 	nop
  45feec:	24a52a98 	addiu	a1,a1,10904
  45fef0:	240602cb 	li	a2,715
  45fef4:	8f998bb8 	lw	t9,-29768(gp)
  45fef8:	00000000 	nop
  45fefc:	0320f809 	jalr	t9
  45ff00:	00000000 	nop
  45ff04:	8fdc0010 	lw	gp,16(s8)
  45ff08:	00000000 	nop
  45ff0c:	8fc20024 	lw	v0,36(s8)
  45ff10:	00000000 	nop
  45ff14:	afc20068 	sw	v0,104(s8)
  45ff18:	24020002 	li	v0,2
  45ff1c:	8fc30068 	lw	v1,104(s8)
  45ff20:	00000000 	nop
  45ff24:	1062001b 	beq	v1,v0,45ff94 <DBG_print_struct+0x1ec>
  45ff28:	00000000 	nop
  45ff2c:	8fc30068 	lw	v1,104(s8)
  45ff30:	00000000 	nop
  45ff34:	28620003 	slti	v0,v1,3
  45ff38:	10400008 	beqz	v0,45ff5c <DBG_print_struct+0x1b4>
  45ff3c:	00000000 	nop
  45ff40:	24020001 	li	v0,1
  45ff44:	8fc30068 	lw	v1,104(s8)
  45ff48:	00000000 	nop
  45ff4c:	1062000a 	beq	v1,v0,45ff78 <DBG_print_struct+0x1d0>
  45ff50:	00000000 	nop
  45ff54:	1000001d 	b	45ffcc <DBG_print_struct+0x224>
  45ff58:	00000000 	nop
  45ff5c:	24020004 	li	v0,4
  45ff60:	8fc30068 	lw	v1,104(s8)
  45ff64:	00000000 	nop
  45ff68:	10620011 	beq	v1,v0,45ffb0 <DBG_print_struct+0x208>
  45ff6c:	00000000 	nop
  45ff70:	10000016 	b	45ffcc <DBG_print_struct+0x224>
  45ff74:	00000000 	nop
  45ff78:	8fc2001c 	lw	v0,28(s8)
  45ff7c:	00000000 	nop
  45ff80:	90420000 	lbu	v0,0(v0)
  45ff84:	00000000 	nop
  45ff88:	afc20028 	sw	v0,40(s8)
  45ff8c:	1000001c 	b	460000 <DBG_print_struct+0x258>
  45ff90:	00000000 	nop
  45ff94:	8fc2001c 	lw	v0,28(s8)
  45ff98:	00000000 	nop
  45ff9c:	94420000 	lhu	v0,0(v0)
  45ffa0:	00000000 	nop
  45ffa4:	afc20028 	sw	v0,40(s8)
  45ffa8:	10000015 	b	460000 <DBG_print_struct+0x258>
  45ffac:	00000000 	nop
  45ffb0:	8fc2001c 	lw	v0,28(s8)
  45ffb4:	00000000 	nop
  45ffb8:	8c420000 	lw	v0,0(v0)
  45ffbc:	00000000 	nop
  45ffc0:	afc20028 	sw	v0,40(s8)
  45ffc4:	1000000e 	b	460000 <DBG_print_struct+0x258>
  45ffc8:	00000000 	nop
  45ffcc:	8f84802c 	lw	a0,-32724(gp)
  45ffd0:	00000000 	nop
  45ffd4:	24842a8c 	addiu	a0,a0,10892
  45ffd8:	8f85802c 	lw	a1,-32724(gp)
  45ffdc:	00000000 	nop
  45ffe0:	24a52a98 	addiu	a1,a1,10904
  45ffe4:	240602a4 	li	a2,676
  45ffe8:	8f998bb8 	lw	t9,-29768(gp)
  45ffec:	00000000 	nop
  45fff0:	0320f809 	jalr	t9
  45fff4:	00000000 	nop
  45fff8:	8fdc0010 	lw	gp,16(s8)
  45fffc:	00000000 	nop
  460000:	8fc20020 	lw	v0,32(s8)
  460004:	00000000 	nop
  460008:	8c420000 	lw	v0,0(v0)
  46000c:	00000000 	nop
  460010:	2442ffff 	addiu	v0,v0,-1
  460014:	afc2006c 	sw	v0,108(s8)
  460018:	8fc3006c 	lw	v1,108(s8)
  46001c:	00000000 	nop
  460020:	2c620007 	sltiu	v0,v1,7
  460024:	10400062 	beqz	v0,4601b0 <DBG_print_struct+0x408>
  460028:	00000000 	nop
  46002c:	8fc2006c 	lw	v0,108(s8)
  460030:	00000000 	nop
  460034:	00021080 	sll	v0,v0,0x2
  460038:	8f81802c 	lw	at,-32724(gp)
  46003c:	00000000 	nop
  460040:	24212ac8 	addiu	at,at,10952
  460044:	00221021 	addu	v0,at,v0
  460048:	8c420000 	lw	v0,0(v0)
  46004c:	00000000 	nop
  460050:	005c1021 	addu	v0,v0,gp
  460054:	00400008 	jr	v0
  460058:	00000000 	nop
  46005c:	8fc20018 	lw	v0,24(s8)
  460060:	00000000 	nop
  460064:	14400007 	bnez	v0,460084 <DBG_print_struct+0x2dc>
  460068:	00000000 	nop
  46006c:	8fc20094 	lw	v0,148(s8)
  460070:	00000000 	nop
  460074:	14400003 	bnez	v0,460084 <DBG_print_struct+0x2dc>
  460078:	00000000 	nop
  46007c:	10000059 	b	4601e4 <DBG_print_struct+0x43c>
  460080:	00000000 	nop
  460084:	8f84802c 	lw	a0,-32724(gp)
  460088:	00000000 	nop
  46008c:	24842aa4 	addiu	a0,a0,10916
  460090:	8fc20020 	lw	v0,32(s8)
  460094:	00000000 	nop
  460098:	8c450008 	lw	a1,8(v0)
  46009c:	8fc60028 	lw	a2,40(s8)
  4600a0:	8f9983b8 	lw	t9,-31816(gp)
  4600a4:	00000000 	nop
  4600a8:	0320f809 	jalr	t9
  4600ac:	00000000 	nop
  4600b0:	8fdc0010 	lw	gp,16(s8)
  4600b4:	00000000 	nop
  4600b8:	1000004a 	b	4601e4 <DBG_print_struct+0x43c>
  4600bc:	00000000 	nop
  4600c0:	8fc20028 	lw	v0,40(s8)
  4600c4:	00000000 	nop
  4600c8:	30428000 	andi	v0,v0,0x8000
  4600cc:	10400003 	beqz	v0,4600dc <DBG_print_struct+0x334>
  4600d0:	00000000 	nop
  4600d4:	24020001 	li	v0,1
  4600d8:	afc20018 	sw	v0,24(s8)
  4600dc:	8fc20020 	lw	v0,32(s8)
  4600e0:	00000000 	nop
  4600e4:	8c44000c 	lw	a0,12(v0)
  4600e8:	8fc50028 	lw	a1,40(s8)
  4600ec:	8f9987fc 	lw	t9,-30724(gp)
  4600f0:	00000000 	nop
  4600f4:	0320f809 	jalr	t9
  4600f8:	00000000 	nop
  4600fc:	8fdc0010 	lw	gp,16(s8)
  460100:	00401821 	move	v1,v0
  460104:	8f84802c 	lw	a0,-32724(gp)
  460108:	00000000 	nop
  46010c:	24842ab0 	addiu	a0,a0,10928
  460110:	8fc20020 	lw	v0,32(s8)
  460114:	00000000 	nop
  460118:	8c450008 	lw	a1,8(v0)
  46011c:	00603021 	move	a2,v1
  460120:	8f9983b8 	lw	t9,-31816(gp)
  460124:	00000000 	nop
  460128:	0320f809 	jalr	t9
  46012c:	00000000 	nop
  460130:	8fdc0010 	lw	gp,16(s8)
  460134:	00000000 	nop
  460138:	1000002a 	b	4601e4 <DBG_print_struct+0x43c>
  46013c:	00000000 	nop
  460140:	8fc30028 	lw	v1,40(s8)
  460144:	00001021 	move	v0,zero
  460148:	8fc40020 	lw	a0,32(s8)
  46014c:	00000000 	nop
  460150:	8c84000c 	lw	a0,12(a0)
  460154:	00403021 	move	a2,v0
  460158:	00603821 	move	a3,v1
  46015c:	8f9988c4 	lw	t9,-30524(gp)
  460160:	00000000 	nop
  460164:	0320f809 	jalr	t9
  460168:	00000000 	nop
  46016c:	8fdc0010 	lw	gp,16(s8)
  460170:	00401821 	move	v1,v0
  460174:	8f84802c 	lw	a0,-32724(gp)
  460178:	00000000 	nop
  46017c:	24842ab0 	addiu	a0,a0,10928
  460180:	8fc20020 	lw	v0,32(s8)
  460184:	00000000 	nop
  460188:	8c450008 	lw	a1,8(v0)
  46018c:	00603021 	move	a2,v1
  460190:	8f9983b8 	lw	t9,-31816(gp)
  460194:	00000000 	nop
  460198:	0320f809 	jalr	t9
  46019c:	00000000 	nop
  4601a0:	8fdc0010 	lw	gp,16(s8)
  4601a4:	00000000 	nop
  4601a8:	1000000e 	b	4601e4 <DBG_print_struct+0x43c>
  4601ac:	00000000 	nop
  4601b0:	8f84802c 	lw	a0,-32724(gp)
  4601b4:	00000000 	nop
  4601b8:	24842a8c 	addiu	a0,a0,10892
  4601bc:	8f85802c 	lw	a1,-32724(gp)
  4601c0:	00000000 	nop
  4601c4:	24a52a98 	addiu	a1,a1,10904
  4601c8:	240602bb 	li	a2,699
  4601cc:	8f998bb8 	lw	t9,-29768(gp)
  4601d0:	00000000 	nop
  4601d4:	0320f809 	jalr	t9
  4601d8:	00000000 	nop
  4601dc:	8fdc0010 	lw	gp,16(s8)
  4601e0:	00000000 	nop
  4601e4:	8fc2001c 	lw	v0,28(s8)
  4601e8:	8fc30024 	lw	v1,36(s8)
  4601ec:	00000000 	nop
  4601f0:	00431021 	addu	v0,v0,v1
  4601f4:	afc2001c 	sw	v0,28(s8)
  4601f8:	1000001d 	b	460270 <DBG_print_struct+0x4c8>
  4601fc:	00000000 	nop
  460200:	27c40030 	addiu	a0,s8,48
  460204:	24050032 	li	a1,50
  460208:	8f86802c 	lw	a2,-32724(gp)
  46020c:	00000000 	nop
  460210:	24c62abc 	addiu	a2,a2,10940
  460214:	8fc20020 	lw	v0,32(s8)
  460218:	00000000 	nop
  46021c:	8c470008 	lw	a3,8(v0)
  460220:	8f998b38 	lw	t9,-29896(gp)
  460224:	00000000 	nop
  460228:	0320f809 	jalr	t9
  46022c:	00000000 	nop
  460230:	8fdc0010 	lw	gp,16(s8)
  460234:	00000000 	nop
  460238:	27c40030 	addiu	a0,s8,48
  46023c:	8fc5001c 	lw	a1,28(s8)
  460240:	8fc60024 	lw	a2,36(s8)
  460244:	8f9984ec 	lw	t9,-31508(gp)
  460248:	00000000 	nop
  46024c:	0320f809 	jalr	t9
  460250:	00000000 	nop
  460254:	8fdc0010 	lw	gp,16(s8)
  460258:	00000000 	nop
  46025c:	8fc3001c 	lw	v1,28(s8)
  460260:	8fc20024 	lw	v0,36(s8)
  460264:	00000000 	nop
  460268:	00621021 	addu	v0,v1,v0
  46026c:	afc2001c 	sw	v0,28(s8)
  460270:	8fc20020 	lw	v0,32(s8)
  460274:	00000000 	nop
  460278:	24420010 	addiu	v0,v0,16
  46027c:	afc20020 	sw	v0,32(s8)
  460280:	1000feec 	b	45fe34 <DBG_print_struct+0x8c>
  460284:	00000000 	nop
	    break;
	}
    }
}
  460288:	03c0e821 	move	sp,s8
  46028c:	8fbf0080 	lw	ra,128(sp)
  460290:	8fbe007c 	lw	s8,124(sp)
  460294:	27bd0088 	addiu	sp,sp,136
  460298:	03e00008 	jr	ra
  46029c:	00000000 	nop

004602a0 <DBG_prefix_print_struct>:
  4602a0:	3c1c0fbb 	lui	gp,0xfbb
  4602a4:	279cc6d0 	addiu	gp,gp,-14640
  4602a8:	0399e021 	addu	gp,gp,t9
  4602ac:	27bdffa0 	addiu	sp,sp,-96
  4602b0:	afbc0010 	sw	gp,16(sp)
  4602b4:	afbf0058 	sw	ra,88(sp)
  4602b8:	afbe0054 	sw	s8,84(sp)
  4602bc:	afbc0050 	sw	gp,80(sp)
  4602c0:	03a0f021 	move	s8,sp
  4602c4:	afc40060 	sw	a0,96(s8)
  4602c8:	afc50064 	sw	a1,100(s8)
  4602cc:	afc60068 	sw	a2,104(s8)
  4602d0:	afc7006c 	sw	a3,108(s8)

static void
DBG_prefix_print_struct(const pb_stream *pbs
, const char *label, const void *struct_ptr
, struct_desc *sd, bool len_meaningful)
{
    /* print out a title, with a prefix of asterisks to show
     * the nesting level.
     */
    char space[40];	/* arbitrary limit on label+flock-of-* */
    size_t len = strlen(label);
  4602d4:	8fc40064 	lw	a0,100(s8)
  4602d8:	8f998188 	lw	t9,-32376(gp)
  4602dc:	00000000 	nop
  4602e0:	0320f809 	jalr	t9
  4602e4:	00000000 	nop
  4602e8:	8fdc0010 	lw	gp,16(s8)
  4602ec:	afc20040 	sw	v0,64(s8)

    if (sizeof(space) <= len)
  4602f0:	8fc20040 	lw	v0,64(s8)
  4602f4:	00000000 	nop
  4602f8:	2c420028 	sltiu	v0,v0,40
  4602fc:	1440000c 	bnez	v0,460330 <DBG_prefix_print_struct+0x90>
  460300:	00000000 	nop
    {
	DBG_print_struct(label, struct_ptr, sd, len_meaningful);
  460304:	8fc40064 	lw	a0,100(s8)
  460308:	8fc50068 	lw	a1,104(s8)
  46030c:	8fc6006c 	lw	a2,108(s8)
  460310:	8fc70070 	lw	a3,112(s8)
  460314:	8f9980b0 	lw	t9,-32592(gp)
  460318:	00000000 	nop
  46031c:	0320f809 	jalr	t9
  460320:	00000000 	nop
  460324:	8fdc0010 	lw	gp,16(s8)
  460328:	10000038 	b	46040c <DBG_prefix_print_struct+0x16c>
  46032c:	00000000 	nop
    }
    else
    {
	const pb_stream *p = pbs;
  460330:	8fc20060 	lw	v0,96(s8)
  460334:	00000000 	nop
  460338:	afc20044 	sw	v0,68(s8)
	char *pre = &space[sizeof(space) - (len + 1)];
  46033c:	27c30018 	addiu	v1,s8,24
  460340:	8fc20040 	lw	v0,64(s8)
  460344:	00000000 	nop
  460348:	00621023 	subu	v0,v1,v0
  46034c:	24420027 	addiu	v0,v0,39
  460350:	afc20048 	sw	v0,72(s8)

	strcpy(pre, label);
  460354:	8fc40048 	lw	a0,72(s8)
  460358:	8fc50064 	lw	a1,100(s8)
  46035c:	8f998c58 	lw	t9,-29608(gp)
  460360:	00000000 	nop
  460364:	0320f809 	jalr	t9
  460368:	00000000 	nop
  46036c:	8fdc0010 	lw	gp,16(s8)
  460370:	00000000 	nop

	/* put at least one * out */
	for (;;)
	{
	    if (pre <= space)
  460374:	27c20018 	addiu	v0,s8,24
  460378:	8fc30048 	lw	v1,72(s8)
  46037c:	00000000 	nop
  460380:	0043102b 	sltu	v0,v0,v1
  460384:	14400003 	bnez	v0,460394 <DBG_prefix_print_struct+0xf4>
  460388:	00000000 	nop
		break;
  46038c:	10000015 	b	4603e4 <DBG_prefix_print_struct+0x144>
  460390:	00000000 	nop
	    *--pre = '*';
  460394:	8fc20048 	lw	v0,72(s8)
  460398:	00000000 	nop
  46039c:	2442ffff 	addiu	v0,v0,-1
  4603a0:	00401821 	move	v1,v0
  4603a4:	afc30048 	sw	v1,72(s8)
  4603a8:	2402002a 	li	v0,42
  4603ac:	a0620000 	sb	v0,0(v1)
	    if (p == NULL)
  4603b0:	8fc20044 	lw	v0,68(s8)
  4603b4:	00000000 	nop
  4603b8:	14400003 	bnez	v0,4603c8 <DBG_prefix_print_struct+0x128>
  4603bc:	00000000 	nop
		break;
  4603c0:	10000008 	b	4603e4 <DBG_prefix_print_struct+0x144>
  4603c4:	00000000 	nop
	    p = p->container;
  4603c8:	8fc20044 	lw	v0,68(s8)
  4603cc:	00000000 	nop
  4603d0:	8c420000 	lw	v0,0(v0)
  4603d4:	00000000 	nop
  4603d8:	afc20044 	sw	v0,68(s8)
  4603dc:	1000ffe5 	b	460374 <DBG_prefix_print_struct+0xd4>
  4603e0:	00000000 	nop
	}
	DBG_print_struct(pre, struct_ptr, sd, len_meaningful);
  4603e4:	8fc40048 	lw	a0,72(s8)
  4603e8:	8fc50068 	lw	a1,104(s8)
  4603ec:	8fc6006c 	lw	a2,108(s8)
  4603f0:	8fc70070 	lw	a3,112(s8)
  4603f4:	8f9980b0 	lw	t9,-32592(gp)
  4603f8:	00000000 	nop
  4603fc:	0320f809 	jalr	t9
  460400:	00000000 	nop
  460404:	8fdc0010 	lw	gp,16(s8)
  460408:	00000000 	nop
    }
}
  46040c:	03c0e821 	move	sp,s8
  460410:	8fbf0058 	lw	ra,88(sp)
  460414:	8fbe0054 	lw	s8,84(sp)
  460418:	27bd0060 	addiu	sp,sp,96
  46041c:	03e00008 	jr	ra
  460420:	00000000 	nop

00460424 <in_struct>:
  460424:	3c1c0fbb 	lui	gp,0xfbb
  460428:	279cc54c 	addiu	gp,gp,-15028
  46042c:	0399e021 	addu	gp,gp,t9
  460430:	27bdff98 	addiu	sp,sp,-104
  460434:	afbc0018 	sw	gp,24(sp)
  460438:	afbf0060 	sw	ra,96(sp)
  46043c:	afbe005c 	sw	s8,92(sp)
  460440:	afbc0058 	sw	gp,88(sp)
  460444:	03a0f021 	move	s8,sp
  460448:	afc40068 	sw	a0,104(s8)
  46044c:	afc5006c 	sw	a1,108(s8)
  460450:	afc60070 	sw	a2,112(s8)
  460454:	afc70074 	sw	a3,116(s8)

#endif

/* "parse" a network struct into a host struct.
 *
 * This code assumes that the network and host structure
 * members have the same alignment and size!  This requires
 * that all padding be explicit.
 *
 * If obj_pbs is supplied, a new pb_stream is created for the
 * variable part of the structure (this depends on their
 * being one length field in the structure).  The cursor of this
 * new PBS is set to after the parsed part of the struct.
 *
 * This routine returns TRUE iff it succeeds.
 */

bool
in_struct(void *struct_ptr, struct_desc *sd
, pb_stream *ins, pb_stream *obj_pbs)
{
    err_t ugh = NULL;
  460458:	afc00020 	sw	zero,32(s8)
    u_int8_t *cur = ins->cur;
  46045c:	8fc20070 	lw	v0,112(s8)
  460460:	00000000 	nop
  460464:	8c420010 	lw	v0,16(v0)
  460468:	00000000 	nop
  46046c:	afc20024 	sw	v0,36(s8)

    if (ins->roof - cur < (ptrdiff_t)sd->size) {
  460470:	8fc20070 	lw	v0,112(s8)
  460474:	00000000 	nop
  460478:	8c430014 	lw	v1,20(v0)
  46047c:	8fc20024 	lw	v0,36(s8)
  460480:	00000000 	nop
  460484:	00621823 	subu	v1,v1,v0
  460488:	8fc2006c 	lw	v0,108(s8)
  46048c:	00000000 	nop
  460490:	8c420008 	lw	v0,8(v0)
  460494:	00000000 	nop
  460498:	0062102a 	slt	v0,v1,v0
  46049c:	10400019 	beqz	v0,460504 <in_struct+0xe0>
  4604a0:	00000000 	nop
	ugh = builddiag("not enough room in input packet for %s"
  4604a4:	8fc20070 	lw	v0,112(s8)
  4604a8:	00000000 	nop
  4604ac:	8c430014 	lw	v1,20(v0)
  4604b0:	8fc20024 	lw	v0,36(s8)
  4604b4:	00000000 	nop
  4604b8:	00621823 	subu	v1,v1,v0
  4604bc:	8f84802c 	lw	a0,-32724(gp)
  4604c0:	00000000 	nop
  4604c4:	24842ae4 	addiu	a0,a0,10980
  4604c8:	8fc2006c 	lw	v0,108(s8)
  4604cc:	00000000 	nop
  4604d0:	8c450000 	lw	a1,0(v0)
  4604d4:	00603021 	move	a2,v1
  4604d8:	8fc2006c 	lw	v0,108(s8)
  4604dc:	00000000 	nop
  4604e0:	8c470008 	lw	a3,8(v0)
  4604e4:	8f9986dc 	lw	t9,-31012(gp)
  4604e8:	00000000 	nop
  4604ec:	0320f809 	jalr	t9
  4604f0:	00000000 	nop
  4604f4:	8fdc0018 	lw	gp,24(s8)
  4604f8:	afc20020 	sw	v0,32(s8)
  4604fc:	10000262 	b	460e88 <in_struct+0xa64>
  460500:	00000000 	nop
			" (remain=%d, sd->size=%d)"
			, sd->name, (int) (ins->roof - cur), (int) sd->size);
    } else {
	u_int8_t *roof = cur + sd->size;    /* may be changed by a length field */
  460504:	8fc2006c 	lw	v0,108(s8)
  460508:	00000000 	nop
  46050c:	8c430008 	lw	v1,8(v0)
  460510:	8fc20024 	lw	v0,36(s8)
  460514:	00000000 	nop
  460518:	00431021 	addu	v0,v0,v1
  46051c:	afc20028 	sw	v0,40(s8)
	u_int8_t *outp = struct_ptr;
  460520:	8fc20068 	lw	v0,104(s8)
  460524:	00000000 	nop
  460528:	afc2002c 	sw	v0,44(s8)
	bool immediate = FALSE;
  46052c:	afc00030 	sw	zero,48(s8)
	field_desc *fp;

	for (fp = sd->fields; ugh == NULL; fp++) {
  460530:	8fc2006c 	lw	v0,108(s8)
  460534:	00000000 	nop
  460538:	8c420004 	lw	v0,4(v0)
  46053c:	00000000 	nop
  460540:	afc20034 	sw	v0,52(s8)
  460544:	8fc20020 	lw	v0,32(s8)
  460548:	00000000 	nop
  46054c:	10400003 	beqz	v0,46055c <in_struct+0x138>
  460550:	00000000 	nop
  460554:	1000024c 	b	460e88 <in_struct+0xa64>
  460558:	00000000 	nop
	    size_t i = fp->size;
  46055c:	8fc20034 	lw	v0,52(s8)
  460560:	00000000 	nop
  460564:	8c420004 	lw	v0,4(v0)
  460568:	00000000 	nop
  46056c:	afc20038 	sw	v0,56(s8)

	    passert(ins->roof - cur >= (ptrdiff_t)i);
  460570:	8fc20070 	lw	v0,112(s8)
  460574:	00000000 	nop
  460578:	8c430014 	lw	v1,20(v0)
  46057c:	8fc20024 	lw	v0,36(s8)
  460580:	00000000 	nop
  460584:	00621823 	subu	v1,v1,v0
  460588:	8fc20038 	lw	v0,56(s8)
  46058c:	00000000 	nop
  460590:	0062102a 	slt	v0,v1,v0
  460594:	1040000e 	beqz	v0,4605d0 <in_struct+0x1ac>
  460598:	00000000 	nop
  46059c:	8f84802c 	lw	a0,-32724(gp)
  4605a0:	00000000 	nop
  4605a4:	24842b24 	addiu	a0,a0,11044
  4605a8:	8f85802c 	lw	a1,-32724(gp)
  4605ac:	00000000 	nop
  4605b0:	24a52a98 	addiu	a1,a1,10904
  4605b4:	24060319 	li	a2,793
  4605b8:	8f998bb8 	lw	t9,-29768(gp)
  4605bc:	00000000 	nop
  4605c0:	0320f809 	jalr	t9
  4605c4:	00000000 	nop
  4605c8:	8fdc0018 	lw	gp,24(s8)
  4605cc:	00000000 	nop
	    passert(cur - ins->cur <= (ptrdiff_t)(sd->size - i));
  4605d0:	8fc20070 	lw	v0,112(s8)
  4605d4:	00000000 	nop
  4605d8:	8c430010 	lw	v1,16(v0)
  4605dc:	8fc20024 	lw	v0,36(s8)
  4605e0:	00000000 	nop
  4605e4:	00432023 	subu	a0,v0,v1
  4605e8:	8fc2006c 	lw	v0,108(s8)
  4605ec:	00000000 	nop
  4605f0:	8c430008 	lw	v1,8(v0)
  4605f4:	8fc20038 	lw	v0,56(s8)
  4605f8:	00000000 	nop
  4605fc:	00621023 	subu	v0,v1,v0
  460600:	0044102a 	slt	v0,v0,a0
  460604:	1040000e 	beqz	v0,460640 <in_struct+0x21c>
  460608:	00000000 	nop
  46060c:	8f84802c 	lw	a0,-32724(gp)
  460610:	00000000 	nop
  460614:	24842b44 	addiu	a0,a0,11076
  460618:	8f85802c 	lw	a1,-32724(gp)
  46061c:	00000000 	nop
  460620:	24a52a98 	addiu	a1,a1,10904
  460624:	2406031a 	li	a2,794
  460628:	8f998bb8 	lw	t9,-29768(gp)
  46062c:	00000000 	nop
  460630:	0320f809 	jalr	t9
  460634:	00000000 	nop
  460638:	8fdc0018 	lw	gp,24(s8)
  46063c:	00000000 	nop
	    passert(outp - (cur - ins->cur) == struct_ptr);
  460640:	8fc20070 	lw	v0,112(s8)
  460644:	00000000 	nop
  460648:	8c430010 	lw	v1,16(v0)
  46064c:	8fc20024 	lw	v0,36(s8)
  460650:	00000000 	nop
  460654:	00431823 	subu	v1,v0,v1
  460658:	8fc2002c 	lw	v0,44(s8)
  46065c:	00000000 	nop
  460660:	00431823 	subu	v1,v0,v1
  460664:	8fc20068 	lw	v0,104(s8)
  460668:	00000000 	nop
  46066c:	1062000e 	beq	v1,v0,4606a8 <in_struct+0x284>
  460670:	00000000 	nop
  460674:	8f84802c 	lw	a0,-32724(gp)
  460678:	00000000 	nop
  46067c:	24842b70 	addiu	a0,a0,11120
  460680:	8f85802c 	lw	a1,-32724(gp)
  460684:	00000000 	nop
  460688:	24a52a98 	addiu	a1,a1,10904
  46068c:	2406031b 	li	a2,795
  460690:	8f998bb8 	lw	t9,-29768(gp)
  460694:	00000000 	nop
  460698:	0320f809 	jalr	t9
  46069c:	00000000 	nop
  4606a0:	8fdc0018 	lw	gp,24(s8)
  4606a4:	00000000 	nop

#if 0
	    DBG(DBG_PARSING, DBG_log("%d %s"
		, (int) (cur - ins->cur), fp->name == NULL? "" : fp->name));
#endif
	    switch (fp->field_type) {
  4606a8:	8fc20034 	lw	v0,52(s8)
  4606ac:	00000000 	nop
  4606b0:	afc20050 	sw	v0,80(s8)
  4606b4:	8fc30050 	lw	v1,80(s8)
  4606b8:	00000000 	nop
  4606bc:	8c620000 	lw	v0,0(v1)
  4606c0:	00000000 	nop
  4606c4:	2c42000a 	sltiu	v0,v0,10
  4606c8:	104001dc 	beqz	v0,460e3c <in_struct+0xa18>
  4606cc:	00000000 	nop
  4606d0:	8fc30050 	lw	v1,80(s8)
  4606d4:	00000000 	nop
  4606d8:	8c620000 	lw	v0,0(v1)
  4606dc:	00000000 	nop
  4606e0:	00021080 	sll	v0,v0,0x2
  4606e4:	8f81802c 	lw	at,-32724(gp)
  4606e8:	00000000 	nop
  4606ec:	24212c78 	addiu	at,at,11384
  4606f0:	00221021 	addu	v0,at,v0
  4606f4:	8c420000 	lw	v0,0(v0)
  4606f8:	00000000 	nop
  4606fc:	005c1021 	addu	v0,v0,gp
  460700:	00400008 	jr	v0
  460704:	00000000 	nop
  460708:	00000000 	nop
	    case ft_mbz:	/* must be zero */
		for (; i != 0; i--) {
  46070c:	8fc20038 	lw	v0,56(s8)
  460710:	00000000 	nop
  460714:	14400003 	bnez	v0,460724 <in_struct+0x300>
  460718:	00000000 	nop
  46071c:	100001d4 	b	460e70 <in_struct+0xa4c>
  460720:	00000000 	nop
		    if (*cur++ != 0) {
  460724:	27c30024 	addiu	v1,s8,36
  460728:	8c620000 	lw	v0,0(v1)
  46072c:	00000000 	nop
  460730:	90440000 	lbu	a0,0(v0)
  460734:	24420001 	addiu	v0,v0,1
  460738:	ac620000 	sw	v0,0(v1)
  46073c:	308200ff 	andi	v0,a0,0xff
  460740:	10400016 	beqz	v0,46079c <in_struct+0x378>
  460744:	00000000 	nop
			ugh = builddiag("byte %d of %s must be zero, but is not"
  460748:	8fc20070 	lw	v0,112(s8)
  46074c:	00000000 	nop
  460750:	8c430010 	lw	v1,16(v0)
  460754:	8fc20024 	lw	v0,36(s8)
  460758:	00000000 	nop
  46075c:	00431023 	subu	v0,v0,v1
  460760:	8f84802c 	lw	a0,-32724(gp)
  460764:	00000000 	nop
  460768:	24842b98 	addiu	a0,a0,11160
  46076c:	00402821 	move	a1,v0
  460770:	8fc2006c 	lw	v0,108(s8)
  460774:	00000000 	nop
  460778:	8c460000 	lw	a2,0(v0)
  46077c:	8f9986dc 	lw	t9,-31012(gp)
  460780:	00000000 	nop
  460784:	0320f809 	jalr	t9
  460788:	00000000 	nop
  46078c:	8fdc0018 	lw	gp,24(s8)
  460790:	afc20020 	sw	v0,32(s8)
			    , (int) (cur - ins->cur), sd->name);
			break;
  460794:	100001b6 	b	460e70 <in_struct+0xa4c>
  460798:	00000000 	nop
		    }
		    *outp++ = '\0';	/* probably redundant */
  46079c:	27c4002c 	addiu	a0,s8,44
  4607a0:	8c820000 	lw	v0,0(a0)
  4607a4:	00000000 	nop
  4607a8:	00401821 	move	v1,v0
  4607ac:	a0600000 	sb	zero,0(v1)
  4607b0:	24420001 	addiu	v0,v0,1
  4607b4:	ac820000 	sw	v0,0(a0)
  4607b8:	8fc20038 	lw	v0,56(s8)
  4607bc:	00000000 	nop
  4607c0:	2442ffff 	addiu	v0,v0,-1
  4607c4:	afc20038 	sw	v0,56(s8)
  4607c8:	1000ffd0 	b	46070c <in_struct+0x2e8>
  4607cc:	00000000 	nop
		}
		break;

	    case ft_nat:	/* natural number (may be 0) */
	    case ft_len:	/* length of this struct and any following crud */
	    case ft_lv:		/* length/value field of attribute */
	    case ft_enum:	/* value from an enumeration */
	    case ft_loose_enum:	/* value from an enumeration with only some names known */
	    case ft_af_enum:	/* Attribute Format + value from an enumeration */
	    case ft_set:	/* bits representing set */
	    {
		u_int32_t n = 0;
  4607d0:	afc0003c 	sw	zero,60(s8)

		for (; i != 0; i--)
  4607d4:	8fc20038 	lw	v0,56(s8)
  4607d8:	00000000 	nop
  4607dc:	14400003 	bnez	v0,4607ec <in_struct+0x3c8>
  4607e0:	00000000 	nop
  4607e4:	10000014 	b	460838 <in_struct+0x414>
  4607e8:	00000000 	nop
		    n = (n << BITS_PER_BYTE) | *cur++;
  4607ec:	8fc2003c 	lw	v0,60(s8)
  4607f0:	00000000 	nop
  4607f4:	00022a00 	sll	a1,v0,0x8
  4607f8:	27c40024 	addiu	a0,s8,36
  4607fc:	8c830000 	lw	v1,0(a0)
  460800:	00000000 	nop
  460804:	00601021 	move	v0,v1
  460808:	90420000 	lbu	v0,0(v0)
  46080c:	00000000 	nop
  460810:	00a21025 	or	v0,a1,v0
  460814:	afc2003c 	sw	v0,60(s8)
  460818:	24630001 	addiu	v1,v1,1
  46081c:	ac830000 	sw	v1,0(a0)
  460820:	8fc20038 	lw	v0,56(s8)
  460824:	00000000 	nop
  460828:	2442ffff 	addiu	v0,v0,-1
  46082c:	afc20038 	sw	v0,56(s8)
  460830:	1000ffe8 	b	4607d4 <in_struct+0x3b0>
  460834:	00000000 	nop

		switch (fp->field_type) {
  460838:	8fc20034 	lw	v0,52(s8)
  46083c:	00000000 	nop
  460840:	8c420000 	lw	v0,0(v0)
  460844:	00000000 	nop
  460848:	2442fffe 	addiu	v0,v0,-2
  46084c:	afc20048 	sw	v0,72(s8)
  460850:	8fc30048 	lw	v1,72(s8)
  460854:	00000000 	nop
  460858:	2c620006 	sltiu	v0,v1,6
  46085c:	104000bc 	beqz	v0,460b50 <in_struct+0x72c>
  460860:	00000000 	nop
  460864:	8fc20048 	lw	v0,72(s8)
  460868:	00000000 	nop
  46086c:	00021080 	sll	v0,v0,0x2
  460870:	8f81802c 	lw	at,-32724(gp)
  460874:	00000000 	nop
  460878:	24212ca0 	addiu	at,at,11424
  46087c:	00221021 	addu	v0,at,v0
  460880:	8c420000 	lw	v0,0(v0)
  460884:	00000000 	nop
  460888:	005c1021 	addu	v0,v0,gp
  46088c:	00400008 	jr	v0
  460890:	00000000 	nop
		case ft_len:	/* length of this struct and any following crud */
		case ft_lv:	/* length/value field of attribute */
		{
		    u_int32_t len = fp->field_type == ft_len? n
  460894:	8fc20034 	lw	v0,52(s8)
  460898:	00000000 	nop
  46089c:	8c430000 	lw	v1,0(v0)
  4608a0:	24020002 	li	v0,2
  4608a4:	10620015 	beq	v1,v0,4608fc <in_struct+0x4d8>
  4608a8:	00000000 	nop
  4608ac:	8fc20030 	lw	v0,48(s8)
  4608b0:	00000000 	nop
  4608b4:	10400008 	beqz	v0,4608d8 <in_struct+0x4b4>
  4608b8:	00000000 	nop
  4608bc:	8fc2006c 	lw	v0,108(s8)
  4608c0:	00000000 	nop
  4608c4:	8c420008 	lw	v0,8(v0)
  4608c8:	00000000 	nop
  4608cc:	afc20044 	sw	v0,68(s8)
  4608d0:	1000000d 	b	460908 <in_struct+0x4e4>
  4608d4:	00000000 	nop
  4608d8:	8fc2006c 	lw	v0,108(s8)
  4608dc:	00000000 	nop
  4608e0:	8c430008 	lw	v1,8(v0)
  4608e4:	8fc2003c 	lw	v0,60(s8)
  4608e8:	00000000 	nop
  4608ec:	00431021 	addu	v0,v0,v1
  4608f0:	afc20044 	sw	v0,68(s8)
  4608f4:	10000004 	b	460908 <in_struct+0x4e4>
  4608f8:	00000000 	nop
  4608fc:	8fc2003c 	lw	v0,60(s8)
  460900:	00000000 	nop
  460904:	afc20044 	sw	v0,68(s8)
  460908:	8fc30044 	lw	v1,68(s8)
  46090c:	00000000 	nop
  460910:	afc30040 	sw	v1,64(s8)
			: immediate? sd->size : n + sd->size;

		    if (len < sd->size) {
  460914:	8fc2006c 	lw	v0,108(s8)
  460918:	00000000 	nop
  46091c:	8c430008 	lw	v1,8(v0)
  460920:	8fc20040 	lw	v0,64(s8)
  460924:	00000000 	nop
  460928:	0043102b 	sltu	v0,v0,v1
  46092c:	10400012 	beqz	v0,460978 <in_struct+0x554>
  460930:	00000000 	nop
			ugh = builddiag("%s of %s is smaller than minimum"
  460934:	8f84802c 	lw	a0,-32724(gp)
  460938:	00000000 	nop
  46093c:	24842bc0 	addiu	a0,a0,11200
  460940:	8fc20034 	lw	v0,52(s8)
  460944:	00000000 	nop
  460948:	8c450008 	lw	a1,8(v0)
  46094c:	8fc2006c 	lw	v0,108(s8)
  460950:	00000000 	nop
  460954:	8c460000 	lw	a2,0(v0)
  460958:	8f9986dc 	lw	t9,-31012(gp)
  46095c:	00000000 	nop
  460960:	0320f809 	jalr	t9
  460964:	00000000 	nop
  460968:	8fdc0018 	lw	gp,24(s8)
  46096c:	afc20020 	sw	v0,32(s8)
  460970:	10000077 	b	460b50 <in_struct+0x72c>
  460974:	00000000 	nop
			    , fp->name, sd->name);
		    } else if (pbs_left(ins) < len) {
  460978:	8fc20070 	lw	v0,112(s8)
  46097c:	00000000 	nop
  460980:	8c430014 	lw	v1,20(v0)
  460984:	8fc20070 	lw	v0,112(s8)
  460988:	00000000 	nop
  46098c:	8c420010 	lw	v0,16(v0)
  460990:	00000000 	nop
  460994:	00621823 	subu	v1,v1,v0
  460998:	8fc20040 	lw	v0,64(s8)
  46099c:	00000000 	nop
  4609a0:	0062102b 	sltu	v0,v1,v0
  4609a4:	10400012 	beqz	v0,4609f0 <in_struct+0x5cc>
  4609a8:	00000000 	nop
			ugh = builddiag("%s of %s is larger than can fit"
  4609ac:	8f84802c 	lw	a0,-32724(gp)
  4609b0:	00000000 	nop
  4609b4:	24842be4 	addiu	a0,a0,11236
  4609b8:	8fc20034 	lw	v0,52(s8)
  4609bc:	00000000 	nop
  4609c0:	8c450008 	lw	a1,8(v0)
  4609c4:	8fc2006c 	lw	v0,108(s8)
  4609c8:	00000000 	nop
  4609cc:	8c460000 	lw	a2,0(v0)
  4609d0:	8f9986dc 	lw	t9,-31012(gp)
  4609d4:	00000000 	nop
  4609d8:	0320f809 	jalr	t9
  4609dc:	00000000 	nop
  4609e0:	8fdc0018 	lw	gp,24(s8)
  4609e4:	afc20020 	sw	v0,32(s8)
  4609e8:	10000059 	b	460b50 <in_struct+0x72c>
  4609ec:	00000000 	nop
			    , fp->name, sd->name);
		    } else {
			roof = ins->cur + len;
  4609f0:	8fc20070 	lw	v0,112(s8)
  4609f4:	00000000 	nop
  4609f8:	8c430010 	lw	v1,16(v0)
  4609fc:	8fc20040 	lw	v0,64(s8)
  460a00:	00000000 	nop
  460a04:	00621021 	addu	v0,v1,v0
  460a08:	afc20028 	sw	v0,40(s8)
		    }
		    break;
  460a0c:	10000050 	b	460b50 <in_struct+0x72c>
  460a10:	00000000 	nop
		}
		case ft_af_enum:	/* Attribute Format + value from an enumeration */
		    if ((n & ISAKMP_ATTR_AF_MASK) == ISAKMP_ATTR_AF_TV)
  460a14:	8fc2003c 	lw	v0,60(s8)
  460a18:	00000000 	nop
  460a1c:	30428000 	andi	v0,v0,0x8000
  460a20:	10400003 	beqz	v0,460a30 <in_struct+0x60c>
  460a24:	00000000 	nop
			immediate = TRUE;
  460a28:	24020001 	li	v0,1
  460a2c:	afc20030 	sw	v0,48(s8)
		    /* FALL THROUGH */
		case ft_enum:	/* value from an enumeration */
		    if (enum_name(fp->desc, n) == NULL) {
  460a30:	8fc20034 	lw	v0,52(s8)
  460a34:	00000000 	nop
  460a38:	8c44000c 	lw	a0,12(v0)
  460a3c:	8fc5003c 	lw	a1,60(s8)
  460a40:	8f9984bc 	lw	t9,-31556(gp)
  460a44:	00000000 	nop
  460a48:	0320f809 	jalr	t9
  460a4c:	00000000 	nop
  460a50:	8fdc0018 	lw	gp,24(s8)
  460a54:	1440003e 	bnez	v0,460b50 <in_struct+0x72c>
  460a58:	00000000 	nop
			ugh = builddiag("%s of %s has an unknown value: %lu"
  460a5c:	8f84802c 	lw	a0,-32724(gp)
  460a60:	00000000 	nop
  460a64:	24842c04 	addiu	a0,a0,11268
  460a68:	8fc20034 	lw	v0,52(s8)
  460a6c:	00000000 	nop
  460a70:	8c450008 	lw	a1,8(v0)
  460a74:	8fc2006c 	lw	v0,108(s8)
  460a78:	00000000 	nop
  460a7c:	8c460000 	lw	a2,0(v0)
  460a80:	8fc7003c 	lw	a3,60(s8)
  460a84:	8f9986dc 	lw	t9,-31012(gp)
  460a88:	00000000 	nop
  460a8c:	0320f809 	jalr	t9
  460a90:	00000000 	nop
  460a94:	8fdc0018 	lw	gp,24(s8)
  460a98:	afc20020 	sw	v0,32(s8)
			    , fp->name, sd->name, (unsigned long)n);
		    }
		    /* FALL THROUGH */
		case ft_loose_enum:	/* value from an enumeration with only some names known */
		    break;
  460a9c:	1000002c 	b	460b50 <in_struct+0x72c>
  460aa0:	00000000 	nop
		case ft_set:	/* bits representing set */
		    if (!testset(fp->desc, n)) {
  460aa4:	8fc3003c 	lw	v1,60(s8)
  460aa8:	00001021 	move	v0,zero
  460aac:	8fc40034 	lw	a0,52(s8)
  460ab0:	00000000 	nop
  460ab4:	8c84000c 	lw	a0,12(a0)
  460ab8:	00403021 	move	a2,v0
  460abc:	00603821 	move	a3,v1
  460ac0:	8f9982c4 	lw	t9,-32060(gp)
  460ac4:	00000000 	nop
  460ac8:	0320f809 	jalr	t9
  460acc:	00000000 	nop
  460ad0:	8fdc0018 	lw	gp,24(s8)
  460ad4:	1440001e 	bnez	v0,460b50 <in_struct+0x72c>
  460ad8:	00000000 	nop
			ugh = builddiag("bitset %s of %s has unknown member(s): %s"
  460adc:	8fc3003c 	lw	v1,60(s8)
  460ae0:	00001021 	move	v0,zero
  460ae4:	8fc40034 	lw	a0,52(s8)
  460ae8:	00000000 	nop
  460aec:	8c84000c 	lw	a0,12(a0)
  460af0:	00403021 	move	a2,v0
  460af4:	00603821 	move	a3,v1
  460af8:	8f9988c4 	lw	t9,-30524(gp)
  460afc:	00000000 	nop
  460b00:	0320f809 	jalr	t9
  460b04:	00000000 	nop
  460b08:	8fdc0018 	lw	gp,24(s8)
  460b0c:	00401821 	move	v1,v0
  460b10:	8f84802c 	lw	a0,-32724(gp)
  460b14:	00000000 	nop
  460b18:	24842c28 	addiu	a0,a0,11304
  460b1c:	8fc20034 	lw	v0,52(s8)
  460b20:	00000000 	nop
  460b24:	8c450008 	lw	a1,8(v0)
  460b28:	8fc2006c 	lw	v0,108(s8)
  460b2c:	00000000 	nop
  460b30:	8c460000 	lw	a2,0(v0)
  460b34:	00603821 	move	a3,v1
  460b38:	8f9986dc 	lw	t9,-31012(gp)
  460b3c:	00000000 	nop
  460b40:	0320f809 	jalr	t9
  460b44:	00000000 	nop
  460b48:	8fdc0018 	lw	gp,24(s8)
  460b4c:	afc20020 	sw	v0,32(s8)
			    , fp->name, sd->name, bitnamesof(fp->desc, n));
		    }
		    break;
		default:
			break;
		}
		i = fp->size;
  460b50:	8fc20034 	lw	v0,52(s8)
  460b54:	00000000 	nop
  460b58:	8c420004 	lw	v0,4(v0)
  460b5c:	00000000 	nop
  460b60:	afc20038 	sw	v0,56(s8)
		switch (i) {
  460b64:	8fc20038 	lw	v0,56(s8)
  460b68:	00000000 	nop
  460b6c:	afc2004c 	sw	v0,76(s8)
  460b70:	24020002 	li	v0,2
  460b74:	8fc3004c 	lw	v1,76(s8)
  460b78:	00000000 	nop
  460b7c:	1062001a 	beq	v1,v0,460be8 <in_struct+0x7c4>
  460b80:	00000000 	nop
  460b84:	8fc3004c 	lw	v1,76(s8)
  460b88:	00000000 	nop
  460b8c:	2c620003 	sltiu	v0,v1,3
  460b90:	10400008 	beqz	v0,460bb4 <in_struct+0x790>
  460b94:	00000000 	nop
  460b98:	24020001 	li	v0,1
  460b9c:	8fc3004c 	lw	v1,76(s8)
  460ba0:	00000000 	nop
  460ba4:	1062000a 	beq	v1,v0,460bd0 <in_struct+0x7ac>
  460ba8:	00000000 	nop
  460bac:	1000001a 	b	460c18 <in_struct+0x7f4>
  460bb0:	00000000 	nop
  460bb4:	24020004 	li	v0,4
  460bb8:	8fc3004c 	lw	v1,76(s8)
  460bbc:	00000000 	nop
  460bc0:	1062000f 	beq	v1,v0,460c00 <in_struct+0x7dc>
  460bc4:	00000000 	nop
  460bc8:	10000013 	b	460c18 <in_struct+0x7f4>
  460bcc:	00000000 	nop
		case 8/BITS_PER_BYTE:
		    *(u_int8_t *)outp = n;
  460bd0:	93c3003f 	lbu	v1,63(s8)
  460bd4:	8fc2002c 	lw	v0,44(s8)
  460bd8:	00000000 	nop
  460bdc:	a0430000 	sb	v1,0(v0)
		    break;
  460be0:	1000001a 	b	460c4c <in_struct+0x828>
  460be4:	00000000 	nop
		case 16/BITS_PER_BYTE:
		    *(u_int16_t *)outp = n;
  460be8:	97c3003e 	lhu	v1,62(s8)
  460bec:	8fc2002c 	lw	v0,44(s8)
  460bf0:	00000000 	nop
  460bf4:	a4430000 	sh	v1,0(v0)
		    break;
  460bf8:	10000014 	b	460c4c <in_struct+0x828>
  460bfc:	00000000 	nop
		case 32/BITS_PER_BYTE:
		    *(u_int32_t *)outp = n;
  460c00:	8fc3003c 	lw	v1,60(s8)
  460c04:	8fc2002c 	lw	v0,44(s8)
  460c08:	00000000 	nop
  460c0c:	ac430000 	sw	v1,0(v0)
		    break;
  460c10:	1000000e 	b	460c4c <in_struct+0x828>
  460c14:	00000000 	nop
		default:
		    impossible();
  460c18:	8f84802c 	lw	a0,-32724(gp)
  460c1c:	00000000 	nop
  460c20:	24842a8c 	addiu	a0,a0,10892
  460c24:	8f85802c 	lw	a1,-32724(gp)
  460c28:	00000000 	nop
  460c2c:	24a52a98 	addiu	a1,a1,10904
  460c30:	2406036d 	li	a2,877
  460c34:	8f998bb8 	lw	t9,-29768(gp)
  460c38:	00000000 	nop
  460c3c:	0320f809 	jalr	t9
  460c40:	00000000 	nop
  460c44:	8fdc0018 	lw	gp,24(s8)
  460c48:	00000000 	nop
		}
		outp += i;
  460c4c:	8fc2002c 	lw	v0,44(s8)
  460c50:	8fc30038 	lw	v1,56(s8)
  460c54:	00000000 	nop
  460c58:	00431021 	addu	v0,v0,v1
  460c5c:	afc2002c 	sw	v0,44(s8)
		break;
  460c60:	10000083 	b	460e70 <in_struct+0xa4c>
  460c64:	00000000 	nop
  460c68:	00000000 	nop
	    }

	    case ft_raw:	/* bytes to be left in network-order */
		for (; i != 0; i--) {
  460c6c:	8fc20038 	lw	v0,56(s8)
  460c70:	00000000 	nop
  460c74:	14400003 	bnez	v0,460c84 <in_struct+0x860>
  460c78:	00000000 	nop
  460c7c:	1000007c 	b	460e70 <in_struct+0xa4c>
  460c80:	00000000 	nop
		    *outp++ = *cur++;
  460c84:	27c7002c 	addiu	a3,s8,44
  460c88:	8ce40000 	lw	a0,0(a3)
  460c8c:	27c60024 	addiu	a2,s8,36
  460c90:	8cc30000 	lw	v1,0(a2)
  460c94:	00802821 	move	a1,a0
  460c98:	00601021 	move	v0,v1
  460c9c:	90420000 	lbu	v0,0(v0)
  460ca0:	00000000 	nop
  460ca4:	a0a20000 	sb	v0,0(a1)
  460ca8:	24630001 	addiu	v1,v1,1
  460cac:	acc30000 	sw	v1,0(a2)
  460cb0:	24840001 	addiu	a0,a0,1
  460cb4:	ace40000 	sw	a0,0(a3)
  460cb8:	8fc20038 	lw	v0,56(s8)
  460cbc:	00000000 	nop
  460cc0:	2442ffff 	addiu	v0,v0,-1
  460cc4:	afc20038 	sw	v0,56(s8)
  460cc8:	1000ffe8 	b	460c6c <in_struct+0x848>
  460ccc:	00000000 	nop
		}
		break;

	    case ft_end:	/* end of field list */
		passert(cur == ins->cur + sd->size);
  460cd0:	8fc20070 	lw	v0,112(s8)
  460cd4:	00000000 	nop
  460cd8:	8c430010 	lw	v1,16(v0)
  460cdc:	8fc2006c 	lw	v0,108(s8)
  460ce0:	00000000 	nop
  460ce4:	8c420008 	lw	v0,8(v0)
  460ce8:	00000000 	nop
  460cec:	00621821 	addu	v1,v1,v0
  460cf0:	8fc20024 	lw	v0,36(s8)
  460cf4:	00000000 	nop
  460cf8:	1043000e 	beq	v0,v1,460d34 <in_struct+0x910>
  460cfc:	00000000 	nop
  460d00:	8f84802c 	lw	a0,-32724(gp)
  460d04:	00000000 	nop
  460d08:	24842c54 	addiu	a0,a0,11348
  460d0c:	8f85802c 	lw	a1,-32724(gp)
  460d10:	00000000 	nop
  460d14:	24a52a98 	addiu	a1,a1,10904
  460d18:	2406037a 	li	a2,890
  460d1c:	8f998bb8 	lw	t9,-29768(gp)
  460d20:	00000000 	nop
  460d24:	0320f809 	jalr	t9
  460d28:	00000000 	nop
  460d2c:	8fdc0018 	lw	gp,24(s8)
  460d30:	00000000 	nop
		if (obj_pbs != NULL) {
  460d34:	8fc20074 	lw	v0,116(s8)
  460d38:	00000000 	nop
  460d3c:	10400021 	beqz	v0,460dc4 <in_struct+0x9a0>
  460d40:	00000000 	nop
		    init_pbs(obj_pbs, ins->cur, roof - ins->cur, sd->name);
  460d44:	8fc20070 	lw	v0,112(s8)
  460d48:	00000000 	nop
  460d4c:	8c430010 	lw	v1,16(v0)
  460d50:	8fc20028 	lw	v0,40(s8)
  460d54:	00000000 	nop
  460d58:	00431823 	subu	v1,v0,v1
  460d5c:	8fc40074 	lw	a0,116(s8)
  460d60:	8fc20070 	lw	v0,112(s8)
  460d64:	00000000 	nop
  460d68:	8c450010 	lw	a1,16(v0)
  460d6c:	00603021 	move	a2,v1
  460d70:	8fc2006c 	lw	v0,108(s8)
  460d74:	00000000 	nop
  460d78:	8c470000 	lw	a3,0(v0)
  460d7c:	8f998364 	lw	t9,-31900(gp)
  460d80:	00000000 	nop
  460d84:	0320f809 	jalr	t9
  460d88:	00000000 	nop
  460d8c:	8fdc0018 	lw	gp,24(s8)
  460d90:	00000000 	nop
		    obj_pbs->container = ins;
  460d94:	8fc30070 	lw	v1,112(s8)
  460d98:	8fc20074 	lw	v0,116(s8)
  460d9c:	00000000 	nop
  460da0:	ac430000 	sw	v1,0(v0)
		    obj_pbs->desc = sd;
  460da4:	8fc3006c 	lw	v1,108(s8)
  460da8:	8fc20074 	lw	v0,116(s8)
  460dac:	00000000 	nop
  460db0:	ac430004 	sw	v1,4(v0)
		    obj_pbs->cur = cur;
  460db4:	8fc30024 	lw	v1,36(s8)
  460db8:	8fc20074 	lw	v0,116(s8)
  460dbc:	00000000 	nop
  460dc0:	ac430010 	sw	v1,16(v0)
		}
		ins->cur = roof;
  460dc4:	8fc30028 	lw	v1,40(s8)
  460dc8:	8fc20070 	lw	v0,112(s8)
  460dcc:	00000000 	nop
  460dd0:	ac430010 	sw	v1,16(v0)
		DBG(DBG_PARSING
  460dd4:	8f8284f8 	lw	v0,-31496(gp)
  460dd8:	00000000 	nop
  460ddc:	8c420000 	lw	v0,0(v0)
  460de0:	00000000 	nop
  460de4:	30420004 	andi	v0,v0,0x4
  460de8:	10400011 	beqz	v0,460e30 <in_struct+0xa0c>
  460dec:	00000000 	nop
  460df0:	24020001 	li	v0,1
  460df4:	afa20010 	sw	v0,16(sp)
  460df8:	8fc40070 	lw	a0,112(s8)
  460dfc:	8f85802c 	lw	a1,-32724(gp)
  460e00:	00000000 	nop
  460e04:	24a52c70 	addiu	a1,a1,11376
  460e08:	8fc60068 	lw	a2,104(s8)
  460e0c:	8fc7006c 	lw	a3,108(s8)
  460e10:	8f99803c 	lw	t9,-32708(gp)
  460e14:	00000000 	nop
  460e18:	273902a0 	addiu	t9,t9,672
  460e1c:	00000000 	nop
  460e20:	0320f809 	jalr	t9
  460e24:	00000000 	nop
  460e28:	8fdc0018 	lw	gp,24(s8)
  460e2c:	00000000 	nop
		    , DBG_prefix_print_struct(ins, "parse ", struct_ptr, sd, TRUE));
		return TRUE;
  460e30:	24020001 	li	v0,1
  460e34:	1000001d 	b	460eac <in_struct+0xa88>
  460e38:	00000000 	nop

	    default:
		impossible();
  460e3c:	8f84802c 	lw	a0,-32724(gp)
  460e40:	00000000 	nop
  460e44:	24842a8c 	addiu	a0,a0,10892
  460e48:	8f85802c 	lw	a1,-32724(gp)
  460e4c:	00000000 	nop
  460e50:	24a52a98 	addiu	a1,a1,10904
  460e54:	24060387 	li	a2,903
  460e58:	8f998bb8 	lw	t9,-29768(gp)
  460e5c:	00000000 	nop
  460e60:	0320f809 	jalr	t9
  460e64:	00000000 	nop
  460e68:	8fdc0018 	lw	gp,24(s8)
  460e6c:	00000000 	nop
  460e70:	8fc20034 	lw	v0,52(s8)
  460e74:	00000000 	nop
  460e78:	24420010 	addiu	v0,v0,16
  460e7c:	afc20034 	sw	v0,52(s8)
  460e80:	1000fdb0 	b	460544 <in_struct+0x120>
  460e84:	00000000 	nop
	    }
	}
    }

    /* some failure got us here: report it */
    loglog(RC_LOG_SERIOUS, ugh);
  460e88:	24040003 	li	a0,3
  460e8c:	8fc50020 	lw	a1,32(s8)
  460e90:	8f998c48 	lw	t9,-29624(gp)
  460e94:	00000000 	nop
  460e98:	0320f809 	jalr	t9
  460e9c:	00000000 	nop
  460ea0:	8fdc0018 	lw	gp,24(s8)
  460ea4:	00000000 	nop
    return FALSE;
  460ea8:	00001021 	move	v0,zero
}
  460eac:	03c0e821 	move	sp,s8
  460eb0:	8fbf0060 	lw	ra,96(sp)
  460eb4:	8fbe005c 	lw	s8,92(sp)
  460eb8:	27bd0068 	addiu	sp,sp,104
  460ebc:	03e00008 	jr	ra
  460ec0:	00000000 	nop

00460ec4 <in_raw>:
  460ec4:	3c1c0fbb 	lui	gp,0xfbb
  460ec8:	279cbaac 	addiu	gp,gp,-17748
  460ecc:	0399e021 	addu	gp,gp,t9
  460ed0:	27bdffd8 	addiu	sp,sp,-40
  460ed4:	afbc0010 	sw	gp,16(sp)
  460ed8:	afbf0020 	sw	ra,32(sp)
  460edc:	afbe001c 	sw	s8,28(sp)
  460ee0:	afbc0018 	sw	gp,24(sp)
  460ee4:	03a0f021 	move	s8,sp
  460ee8:	afc40028 	sw	a0,40(s8)
  460eec:	afc5002c 	sw	a1,44(s8)
  460ef0:	afc60030 	sw	a2,48(s8)
  460ef4:	afc70034 	sw	a3,52(s8)

bool
in_raw(void *bytes, size_t len, pb_stream *ins, const char *name)
{
    if (pbs_left(ins) < len)
  460ef8:	8fc20030 	lw	v0,48(s8)
  460efc:	00000000 	nop
  460f00:	8c430014 	lw	v1,20(v0)
  460f04:	8fc20030 	lw	v0,48(s8)
  460f08:	00000000 	nop
  460f0c:	8c420010 	lw	v0,16(v0)
  460f10:	00000000 	nop
  460f14:	00621823 	subu	v1,v1,v0
  460f18:	8fc2002c 	lw	v0,44(s8)
  460f1c:	00000000 	nop
  460f20:	0062102b 	sltu	v0,v1,v0
  460f24:	10400012 	beqz	v0,460f70 <in_raw+0xac>
  460f28:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "not enough bytes left to get %s from %s", name, ins->name);
  460f2c:	24040003 	li	a0,3
  460f30:	8f85802c 	lw	a1,-32724(gp)
  460f34:	00000000 	nop
  460f38:	24a52cb8 	addiu	a1,a1,11448
  460f3c:	8fc60034 	lw	a2,52(s8)
  460f40:	8fc20030 	lw	v0,48(s8)
  460f44:	00000000 	nop
  460f48:	8c470008 	lw	a3,8(v0)
  460f4c:	8f998c48 	lw	t9,-29624(gp)
  460f50:	00000000 	nop
  460f54:	0320f809 	jalr	t9
  460f58:	00000000 	nop
  460f5c:	8fdc0010 	lw	gp,16(s8)
  460f60:	00000000 	nop
	return FALSE;
  460f64:	00001021 	move	v0,zero
  460f68:	10000057 	b	4610c8 <in_raw+0x204>
  460f6c:	00000000 	nop
    }
    else
    {
	if (bytes == NULL)
  460f70:	8fc20028 	lw	v0,40(s8)
  460f74:	00000000 	nop
  460f78:	14400021 	bnez	v0,461000 <in_raw+0x13c>
  460f7c:	00000000 	nop
	{
	    DBG(DBG_PARSING
  460f80:	8f8284f8 	lw	v0,-31496(gp)
  460f84:	00000000 	nop
  460f88:	8c420000 	lw	v0,0(v0)
  460f8c:	00000000 	nop
  460f90:	30420004 	andi	v0,v0,0x4
  460f94:	10400042 	beqz	v0,4610a0 <in_raw+0x1dc>
  460f98:	00000000 	nop
  460f9c:	8f84802c 	lw	a0,-32724(gp)
  460fa0:	00000000 	nop
  460fa4:	24842ce0 	addiu	a0,a0,11488
  460fa8:	8fc5002c 	lw	a1,44(s8)
  460fac:	8fc20030 	lw	v0,48(s8)
  460fb0:	00000000 	nop
  460fb4:	8c460008 	lw	a2,8(v0)
  460fb8:	8fc70034 	lw	a3,52(s8)
  460fbc:	8f9983b8 	lw	t9,-31816(gp)
  460fc0:	00000000 	nop
  460fc4:	0320f809 	jalr	t9
  460fc8:	00000000 	nop
  460fcc:	8fdc0010 	lw	gp,16(s8)
  460fd0:	8fc40034 	lw	a0,52(s8)
  460fd4:	8fc20030 	lw	v0,48(s8)
  460fd8:	00000000 	nop
  460fdc:	8c450010 	lw	a1,16(v0)
  460fe0:	8fc6002c 	lw	a2,44(s8)
  460fe4:	8f9984ec 	lw	t9,-31508(gp)
  460fe8:	00000000 	nop
  460fec:	0320f809 	jalr	t9
  460ff0:	00000000 	nop
  460ff4:	8fdc0010 	lw	gp,16(s8)
  460ff8:	10000029 	b	4610a0 <in_raw+0x1dc>
  460ffc:	00000000 	nop
		, DBG_log("skipping %u raw bytes of %s (%s)"
		    , (unsigned) len, ins->name, name);
		  DBG_dump(name, ins->cur, len));
	}
	else
	{
	    memcpy(bytes, ins->cur, len);
  461000:	8fc40028 	lw	a0,40(s8)
  461004:	8fc20030 	lw	v0,48(s8)
  461008:	00000000 	nop
  46100c:	8c450010 	lw	a1,16(v0)
  461010:	8fc6002c 	lw	a2,44(s8)
  461014:	8f998a30 	lw	t9,-30160(gp)
  461018:	00000000 	nop
  46101c:	0320f809 	jalr	t9
  461020:	00000000 	nop
  461024:	8fdc0010 	lw	gp,16(s8)
  461028:	00000000 	nop
	    DBG(DBG_PARSING
  46102c:	8f8284f8 	lw	v0,-31496(gp)
  461030:	00000000 	nop
  461034:	8c420000 	lw	v0,0(v0)
  461038:	00000000 	nop
  46103c:	30420004 	andi	v0,v0,0x4
  461040:	10400017 	beqz	v0,4610a0 <in_raw+0x1dc>
  461044:	00000000 	nop
  461048:	8f84802c 	lw	a0,-32724(gp)
  46104c:	00000000 	nop
  461050:	24842d04 	addiu	a0,a0,11524
  461054:	8fc5002c 	lw	a1,44(s8)
  461058:	8fc20030 	lw	v0,48(s8)
  46105c:	00000000 	nop
  461060:	8c460008 	lw	a2,8(v0)
  461064:	8fc70034 	lw	a3,52(s8)
  461068:	8f9983b8 	lw	t9,-31816(gp)
  46106c:	00000000 	nop
  461070:	0320f809 	jalr	t9
  461074:	00000000 	nop
  461078:	8fdc0010 	lw	gp,16(s8)
  46107c:	8fc40034 	lw	a0,52(s8)
  461080:	8fc50028 	lw	a1,40(s8)
  461084:	8fc6002c 	lw	a2,44(s8)
  461088:	8f9984ec 	lw	t9,-31508(gp)
  46108c:	00000000 	nop
  461090:	0320f809 	jalr	t9
  461094:	00000000 	nop
  461098:	8fdc0010 	lw	gp,16(s8)
  46109c:	00000000 	nop
		, DBG_log("parsing %u raw bytes of %s into %s"
		    , (unsigned) len, ins->name, name);
		  DBG_dump(name, bytes, len));
	}
	ins->cur += len;
  4610a0:	8fc20030 	lw	v0,48(s8)
  4610a4:	00000000 	nop
  4610a8:	8c430010 	lw	v1,16(v0)
  4610ac:	8fc2002c 	lw	v0,44(s8)
  4610b0:	00000000 	nop
  4610b4:	00621821 	addu	v1,v1,v0
  4610b8:	8fc20030 	lw	v0,48(s8)
  4610bc:	00000000 	nop
  4610c0:	ac430010 	sw	v1,16(v0)
	return TRUE;
  4610c4:	24020001 	li	v0,1
    }
}
  4610c8:	03c0e821 	move	sp,s8
  4610cc:	8fbf0020 	lw	ra,32(sp)
  4610d0:	8fbe001c 	lw	s8,28(sp)
  4610d4:	27bd0028 	addiu	sp,sp,40
  4610d8:	03e00008 	jr	ra
  4610dc:	00000000 	nop

004610e0 <out_struct>:
  4610e0:	3c1c0fbb 	lui	gp,0xfbb
  4610e4:	279cb890 	addiu	gp,gp,-18288
  4610e8:	0399e021 	addu	gp,gp,t9
  4610ec:	27bdff80 	addiu	sp,sp,-128
  4610f0:	afbc0018 	sw	gp,24(sp)
  4610f4:	afbf0078 	sw	ra,120(sp)
  4610f8:	afbe0074 	sw	s8,116(sp)
  4610fc:	afbc0070 	sw	gp,112(sp)
  461100:	03a0f021 	move	s8,sp
  461104:	afc40080 	sw	a0,128(s8)
  461108:	afc50084 	sw	a1,132(s8)
  46110c:	afc60088 	sw	a2,136(s8)
  461110:	afc7008c 	sw	a3,140(s8)

/* "emit" a host struct into a network packet.
 *
 * This code assumes that the network and host structure
 * members have the same alignment and size!  This requires
 * that all padding be explicit.
 *
 * If obj_pbs is non-NULL, its pbs describes a new output stream set up
 * to contain the object.  The cursor will be left at the variable part.
 * This new stream must subsequently be finalized by close_output_pbs().
 *
 * The value of any field of type ft_len is computed, not taken
 * from the input struct.  The length is actually filled in when
 * the object's output stream is finalized.  If obj_pbs is NULL,
 * finalization is done by out_struct before it returns.
 *
 * This routine returns TRUE iff it succeeds.
 */

bool
out_struct(const void *struct_ptr, struct_desc *sd
, pb_stream *outs, pb_stream *obj_pbs)
{
    err_t ugh = NULL;
  461114:	afc00020 	sw	zero,32(s8)
    const u_int8_t *inp = struct_ptr;
  461118:	8fc20080 	lw	v0,128(s8)
  46111c:	00000000 	nop
  461120:	afc20024 	sw	v0,36(s8)
    u_int8_t *cur = outs->cur;
  461124:	8fc20088 	lw	v0,136(s8)
  461128:	00000000 	nop
  46112c:	8c420010 	lw	v0,16(v0)
  461130:	00000000 	nop
  461134:	afc20028 	sw	v0,40(s8)

    DBG(DBG_EMITTING
  461138:	8f8284f8 	lw	v0,-31496(gp)
  46113c:	00000000 	nop
  461140:	8c420000 	lw	v0,0(v0)
  461144:	00000000 	nop
  461148:	30420008 	andi	v0,v0,0x8
  46114c:	10400014 	beqz	v0,4611a0 <out_struct+0xc0>
  461150:	00000000 	nop
  461154:	8fc2008c 	lw	v0,140(s8)
  461158:	00000000 	nop
  46115c:	38420000 	xori	v0,v0,0x0
  461160:	2c420001 	sltiu	v0,v0,1
  461164:	afa20010 	sw	v0,16(sp)
  461168:	8fc40088 	lw	a0,136(s8)
  46116c:	8f85802c 	lw	a1,-32724(gp)
  461170:	00000000 	nop
  461174:	24a52d28 	addiu	a1,a1,11560
  461178:	8fc60080 	lw	a2,128(s8)
  46117c:	8fc70084 	lw	a3,132(s8)
  461180:	8f99803c 	lw	t9,-32708(gp)
  461184:	00000000 	nop
  461188:	273902a0 	addiu	t9,t9,672
  46118c:	00000000 	nop
  461190:	0320f809 	jalr	t9
  461194:	00000000 	nop
  461198:	8fdc0018 	lw	gp,24(s8)
  46119c:	00000000 	nop
	, DBG_prefix_print_struct(outs, "emit ", struct_ptr, sd, obj_pbs==NULL));

    if (outs->roof - cur < (ptrdiff_t)sd->size) {
  4611a0:	8fc20088 	lw	v0,136(s8)
  4611a4:	00000000 	nop
  4611a8:	8c430014 	lw	v1,20(v0)
  4611ac:	8fc20028 	lw	v0,40(s8)
  4611b0:	00000000 	nop
  4611b4:	00621823 	subu	v1,v1,v0
  4611b8:	8fc20084 	lw	v0,132(s8)
  4611bc:	00000000 	nop
  4611c0:	8c420008 	lw	v0,8(v0)
  4611c4:	00000000 	nop
  4611c8:	0062102a 	slt	v0,v1,v0
  4611cc:	1040000f 	beqz	v0,46120c <out_struct+0x12c>
  4611d0:	00000000 	nop
	ugh = builddiag("not enough room left in output packet to place %s"
  4611d4:	8f84802c 	lw	a0,-32724(gp)
  4611d8:	00000000 	nop
  4611dc:	24842d30 	addiu	a0,a0,11568
  4611e0:	8fc20084 	lw	v0,132(s8)
  4611e4:	00000000 	nop
  4611e8:	8c450000 	lw	a1,0(v0)
  4611ec:	8f9986dc 	lw	t9,-31012(gp)
  4611f0:	00000000 	nop
  4611f4:	0320f809 	jalr	t9
  4611f8:	00000000 	nop
  4611fc:	8fdc0018 	lw	gp,24(s8)
  461200:	afc20020 	sw	v0,32(s8)
  461204:	10000207 	b	461a24 <out_struct+0x944>
  461208:	00000000 	nop
	    , sd->name);
    } else {
	bool immediate = FALSE;
  46120c:	afc0002c 	sw	zero,44(s8)
	pb_stream obj;
	field_desc *fp;

	obj.lenfld = NULL;  /* until a length field is discovered */
  461210:	afc00048 	sw	zero,72(s8)
	obj.lenfld_desc = NULL;
  461214:	afc0004c 	sw	zero,76(s8)

	for (fp = sd->fields; ugh == NULL; fp++) {
  461218:	8fc20084 	lw	v0,132(s8)
  46121c:	00000000 	nop
  461220:	8c420004 	lw	v0,4(v0)
  461224:	00000000 	nop
  461228:	afc20050 	sw	v0,80(s8)
  46122c:	8fc20020 	lw	v0,32(s8)
  461230:	00000000 	nop
  461234:	10400003 	beqz	v0,461244 <out_struct+0x164>
  461238:	00000000 	nop
  46123c:	100001f9 	b	461a24 <out_struct+0x944>
  461240:	00000000 	nop
	    size_t i = fp->size;
  461244:	8fc20050 	lw	v0,80(s8)
  461248:	00000000 	nop
  46124c:	8c420004 	lw	v0,4(v0)
  461250:	00000000 	nop
  461254:	afc20054 	sw	v0,84(s8)

	    passert(outs->roof - cur >= (ptrdiff_t)i);
  461258:	8fc20088 	lw	v0,136(s8)
  46125c:	00000000 	nop
  461260:	8c430014 	lw	v1,20(v0)
  461264:	8fc20028 	lw	v0,40(s8)
  461268:	00000000 	nop
  46126c:	00621823 	subu	v1,v1,v0
  461270:	8fc20054 	lw	v0,84(s8)
  461274:	00000000 	nop
  461278:	0062102a 	slt	v0,v1,v0
  46127c:	1040000e 	beqz	v0,4612b8 <out_struct+0x1d8>
  461280:	00000000 	nop
  461284:	8f84802c 	lw	a0,-32724(gp)
  461288:	00000000 	nop
  46128c:	24842d64 	addiu	a0,a0,11620
  461290:	8f85802c 	lw	a1,-32724(gp)
  461294:	00000000 	nop
  461298:	24a52a98 	addiu	a1,a1,10904
  46129c:	240603da 	li	a2,986
  4612a0:	8f998bb8 	lw	t9,-29768(gp)
  4612a4:	00000000 	nop
  4612a8:	0320f809 	jalr	t9
  4612ac:	00000000 	nop
  4612b0:	8fdc0018 	lw	gp,24(s8)
  4612b4:	00000000 	nop
	    passert(cur - outs->cur <= (ptrdiff_t)(sd->size - i));
  4612b8:	8fc20088 	lw	v0,136(s8)
  4612bc:	00000000 	nop
  4612c0:	8c430010 	lw	v1,16(v0)
  4612c4:	8fc20028 	lw	v0,40(s8)
  4612c8:	00000000 	nop
  4612cc:	00432023 	subu	a0,v0,v1
  4612d0:	8fc20084 	lw	v0,132(s8)
  4612d4:	00000000 	nop
  4612d8:	8c430008 	lw	v1,8(v0)
  4612dc:	8fc20054 	lw	v0,84(s8)
  4612e0:	00000000 	nop
  4612e4:	00621023 	subu	v0,v1,v0
  4612e8:	0044102a 	slt	v0,v0,a0
  4612ec:	1040000e 	beqz	v0,461328 <out_struct+0x248>
  4612f0:	00000000 	nop
  4612f4:	8f84802c 	lw	a0,-32724(gp)
  4612f8:	00000000 	nop
  4612fc:	24842d88 	addiu	a0,a0,11656
  461300:	8f85802c 	lw	a1,-32724(gp)
  461304:	00000000 	nop
  461308:	24a52a98 	addiu	a1,a1,10904
  46130c:	240603db 	li	a2,987
  461310:	8f998bb8 	lw	t9,-29768(gp)
  461314:	00000000 	nop
  461318:	0320f809 	jalr	t9
  46131c:	00000000 	nop
  461320:	8fdc0018 	lw	gp,24(s8)
  461324:	00000000 	nop
	    passert(inp - (cur - outs->cur) == struct_ptr);
  461328:	8fc20088 	lw	v0,136(s8)
  46132c:	00000000 	nop
  461330:	8c430010 	lw	v1,16(v0)
  461334:	8fc20028 	lw	v0,40(s8)
  461338:	00000000 	nop
  46133c:	00431823 	subu	v1,v0,v1
  461340:	8fc20024 	lw	v0,36(s8)
  461344:	00000000 	nop
  461348:	00431823 	subu	v1,v0,v1
  46134c:	8fc20080 	lw	v0,128(s8)
  461350:	00000000 	nop
  461354:	1062000e 	beq	v1,v0,461390 <out_struct+0x2b0>
  461358:	00000000 	nop
  46135c:	8f84802c 	lw	a0,-32724(gp)
  461360:	00000000 	nop
  461364:	24842db8 	addiu	a0,a0,11704
  461368:	8f85802c 	lw	a1,-32724(gp)
  46136c:	00000000 	nop
  461370:	24a52a98 	addiu	a1,a1,10904
  461374:	240603dc 	li	a2,988
  461378:	8f998bb8 	lw	t9,-29768(gp)
  46137c:	00000000 	nop
  461380:	0320f809 	jalr	t9
  461384:	00000000 	nop
  461388:	8fdc0018 	lw	gp,24(s8)
  46138c:	00000000 	nop

#if 0
	    DBG(DBG_EMITTING, DBG_log("%d %s"
		, (int) (cur - outs->cur), fp->name == NULL? "" : fp->name);
#endif
	    switch (fp->field_type) {
  461390:	8fc20050 	lw	v0,80(s8)
  461394:	00000000 	nop
  461398:	afc2006c 	sw	v0,108(s8)
  46139c:	8fc3006c 	lw	v1,108(s8)
  4613a0:	00000000 	nop
  4613a4:	8c620000 	lw	v0,0(v1)
  4613a8:	00000000 	nop
  4613ac:	2c42000a 	sltiu	v0,v0,10
  4613b0:	10400189 	beqz	v0,4619d8 <out_struct+0x8f8>
  4613b4:	00000000 	nop
  4613b8:	8fc3006c 	lw	v1,108(s8)
  4613bc:	00000000 	nop
  4613c0:	8c620000 	lw	v0,0(v1)
  4613c4:	00000000 	nop
  4613c8:	00021080 	sll	v0,v0,0x2
  4613cc:	8f81802c 	lw	at,-32724(gp)
  4613d0:	00000000 	nop
  4613d4:	24212e10 	addiu	at,at,11792
  4613d8:	00221021 	addu	v0,at,v0
  4613dc:	8c420000 	lw	v0,0(v0)
  4613e0:	00000000 	nop
  4613e4:	005c1021 	addu	v0,v0,gp
  4613e8:	00400008 	jr	v0
  4613ec:	00000000 	nop
	    case ft_mbz:	/* must be zero */
		inp += i;
  4613f0:	8fc20024 	lw	v0,36(s8)
  4613f4:	8fc30054 	lw	v1,84(s8)
  4613f8:	00000000 	nop
  4613fc:	00431021 	addu	v0,v0,v1
  461400:	afc20024 	sw	v0,36(s8)
		for (; i != 0; i--)
  461404:	8fc20054 	lw	v0,84(s8)
  461408:	00000000 	nop
  46140c:	14400003 	bnez	v0,46141c <out_struct+0x33c>
  461410:	00000000 	nop
  461414:	1000017d 	b	461a0c <out_struct+0x92c>
  461418:	00000000 	nop
		    *cur++ = '\0';
  46141c:	27c40028 	addiu	a0,s8,40
  461420:	8c820000 	lw	v0,0(a0)
  461424:	00000000 	nop
  461428:	00401821 	move	v1,v0
  46142c:	a0600000 	sb	zero,0(v1)
  461430:	24420001 	addiu	v0,v0,1
  461434:	ac820000 	sw	v0,0(a0)
  461438:	8fc20054 	lw	v0,84(s8)
  46143c:	00000000 	nop
  461440:	2442ffff 	addiu	v0,v0,-1
  461444:	afc20054 	sw	v0,84(s8)
  461448:	1000ffee 	b	461404 <out_struct+0x324>
  46144c:	00000000 	nop
		break;
	    case ft_nat:	/* natural number (may be 0) */
	    case ft_len:	/* length of this struct and any following crud */
	    case ft_lv:		/* length/value field of attribute */
	    case ft_enum:	/* value from an enumeration */
	    case ft_loose_enum:	/* value from an enumeration with only some names known */
	    case ft_af_enum:	/* Attribute Format + value from an enumeration */
	    case ft_set:	/* bits representing set */
	    {
		u_int32_t n = 0;
  461450:	afc00058 	sw	zero,88(s8)

		switch (i) {
  461454:	8fc20054 	lw	v0,84(s8)
  461458:	00000000 	nop
  46145c:	afc2005c 	sw	v0,92(s8)
  461460:	24020002 	li	v0,2
  461464:	8fc3005c 	lw	v1,92(s8)
  461468:	00000000 	nop
  46146c:	1062001b 	beq	v1,v0,4614dc <out_struct+0x3fc>
  461470:	00000000 	nop
  461474:	8fc3005c 	lw	v1,92(s8)
  461478:	00000000 	nop
  46147c:	2c620003 	sltiu	v0,v1,3
  461480:	10400008 	beqz	v0,4614a4 <out_struct+0x3c4>
  461484:	00000000 	nop
  461488:	24020001 	li	v0,1
  46148c:	8fc3005c 	lw	v1,92(s8)
  461490:	00000000 	nop
  461494:	1062000a 	beq	v1,v0,4614c0 <out_struct+0x3e0>
  461498:	00000000 	nop
  46149c:	1000001d 	b	461514 <out_struct+0x434>
  4614a0:	00000000 	nop
  4614a4:	24020004 	li	v0,4
  4614a8:	8fc3005c 	lw	v1,92(s8)
  4614ac:	00000000 	nop
  4614b0:	10620011 	beq	v1,v0,4614f8 <out_struct+0x418>
  4614b4:	00000000 	nop
  4614b8:	10000016 	b	461514 <out_struct+0x434>
  4614bc:	00000000 	nop
		case 8/BITS_PER_BYTE:
		    n = *(const u_int8_t *)inp;
  4614c0:	8fc20024 	lw	v0,36(s8)
  4614c4:	00000000 	nop
  4614c8:	90420000 	lbu	v0,0(v0)
  4614cc:	00000000 	nop
  4614d0:	afc20058 	sw	v0,88(s8)
		    break;
  4614d4:	1000001c 	b	461548 <out_struct+0x468>
  4614d8:	00000000 	nop
		case 16/BITS_PER_BYTE:
		    n = *(const u_int16_t *)inp;
  4614dc:	8fc20024 	lw	v0,36(s8)
  4614e0:	00000000 	nop
  4614e4:	94420000 	lhu	v0,0(v0)
  4614e8:	00000000 	nop
  4614ec:	afc20058 	sw	v0,88(s8)
		    break;
  4614f0:	10000015 	b	461548 <out_struct+0x468>
  4614f4:	00000000 	nop
		case 32/BITS_PER_BYTE:
		    n = *(const u_int32_t *)inp;
  4614f8:	8fc20024 	lw	v0,36(s8)
  4614fc:	00000000 	nop
  461500:	8c420000 	lw	v0,0(v0)
  461504:	00000000 	nop
  461508:	afc20058 	sw	v0,88(s8)
		    break;
  46150c:	1000000e 	b	461548 <out_struct+0x468>
  461510:	00000000 	nop
		default:
		    impossible();
  461514:	8f84802c 	lw	a0,-32724(gp)
  461518:	00000000 	nop
  46151c:	24842a8c 	addiu	a0,a0,10892
  461520:	8f85802c 	lw	a1,-32724(gp)
  461524:	00000000 	nop
  461528:	24a52a98 	addiu	a1,a1,10904
  46152c:	240603fd 	li	a2,1021
  461530:	8f998bb8 	lw	t9,-29768(gp)
  461534:	00000000 	nop
  461538:	0320f809 	jalr	t9
  46153c:	00000000 	nop
  461540:	8fdc0018 	lw	gp,24(s8)
  461544:	00000000 	nop
		}

		switch (fp->field_type) {
  461548:	8fc20050 	lw	v0,80(s8)
  46154c:	00000000 	nop
  461550:	8c420000 	lw	v0,0(v0)
  461554:	00000000 	nop
  461558:	2442fffe 	addiu	v0,v0,-2
  46155c:	afc20060 	sw	v0,96(s8)
  461560:	8fc30060 	lw	v1,96(s8)
  461564:	00000000 	nop
  461568:	2c620006 	sltiu	v0,v1,6
  46156c:	1040007b 	beqz	v0,46175c <out_struct+0x67c>
  461570:	00000000 	nop
  461574:	8fc20060 	lw	v0,96(s8)
  461578:	00000000 	nop
  46157c:	00021080 	sll	v0,v0,0x2
  461580:	8f81802c 	lw	at,-32724(gp)
  461584:	00000000 	nop
  461588:	24212e38 	addiu	at,at,11832
  46158c:	00221021 	addu	v0,at,v0
  461590:	8c420000 	lw	v0,0(v0)
  461594:	00000000 	nop
  461598:	005c1021 	addu	v0,v0,gp
  46159c:	00400008 	jr	v0
  4615a0:	00000000 	nop
		case ft_len:	/* length of this struct and any following crud */
		case ft_lv:	/* length/value field of attribute */
		    if (immediate)
  4615a4:	8fc2002c 	lw	v0,44(s8)
  4615a8:	00000000 	nop
  4615ac:	10400003 	beqz	v0,4615bc <out_struct+0x4dc>
  4615b0:	00000000 	nop
			break;	/* not a length */
  4615b4:	10000069 	b	46175c <out_struct+0x67c>
  4615b8:	00000000 	nop
		    /* We can't check the length because it will likely
		     * be filled in after variable part is supplied.
		     * We do record where this is so that it can be
		     * filled in by a subsequent close_output_pbs().
		     */
		    passert(obj.lenfld == NULL);	/* only one ft_len allowed */
  4615bc:	8fc20048 	lw	v0,72(s8)
  4615c0:	00000000 	nop
  4615c4:	1040000e 	beqz	v0,461600 <out_struct+0x520>
  4615c8:	00000000 	nop
  4615cc:	8f84802c 	lw	a0,-32724(gp)
  4615d0:	00000000 	nop
  4615d4:	24842de0 	addiu	a0,a0,11744
  4615d8:	8f85802c 	lw	a1,-32724(gp)
  4615dc:	00000000 	nop
  4615e0:	24a52a98 	addiu	a1,a1,10904
  4615e4:	2406040a 	li	a2,1034
  4615e8:	8f998bb8 	lw	t9,-29768(gp)
  4615ec:	00000000 	nop
  4615f0:	0320f809 	jalr	t9
  4615f4:	00000000 	nop
  4615f8:	8fdc0018 	lw	gp,24(s8)
  4615fc:	00000000 	nop
		    obj.lenfld = cur;
  461600:	8fc20028 	lw	v0,40(s8)
  461604:	00000000 	nop
  461608:	afc20048 	sw	v0,72(s8)
		    obj.lenfld_desc = fp;
  46160c:	8fc20050 	lw	v0,80(s8)
  461610:	00000000 	nop
  461614:	afc2004c 	sw	v0,76(s8)
		    break;
  461618:	10000050 	b	46175c <out_struct+0x67c>
  46161c:	00000000 	nop
		case ft_af_enum:	/* Attribute Format + value from an enumeration */
		    if ((n & ISAKMP_ATTR_AF_MASK) == ISAKMP_ATTR_AF_TV)
  461620:	8fc20058 	lw	v0,88(s8)
  461624:	00000000 	nop
  461628:	30428000 	andi	v0,v0,0x8000
  46162c:	10400003 	beqz	v0,46163c <out_struct+0x55c>
  461630:	00000000 	nop
			immediate = TRUE;
  461634:	24020001 	li	v0,1
  461638:	afc2002c 	sw	v0,44(s8)
		    /* FALL THROUGH */
		case ft_enum:	/* value from an enumeration */
		    if (enum_name(fp->desc, n) == NULL) {
  46163c:	8fc20050 	lw	v0,80(s8)
  461640:	00000000 	nop
  461644:	8c44000c 	lw	a0,12(v0)
  461648:	8fc50058 	lw	a1,88(s8)
  46164c:	8f9984bc 	lw	t9,-31556(gp)
  461650:	00000000 	nop
  461654:	0320f809 	jalr	t9
  461658:	00000000 	nop
  46165c:	8fdc0018 	lw	gp,24(s8)
  461660:	1440003e 	bnez	v0,46175c <out_struct+0x67c>
  461664:	00000000 	nop
			ugh = builddiag("%s of %s has an unknown value: %lu"
  461668:	8f84802c 	lw	a0,-32724(gp)
  46166c:	00000000 	nop
  461670:	24842c04 	addiu	a0,a0,11268
  461674:	8fc20050 	lw	v0,80(s8)
  461678:	00000000 	nop
  46167c:	8c450008 	lw	a1,8(v0)
  461680:	8fc20084 	lw	v0,132(s8)
  461684:	00000000 	nop
  461688:	8c460000 	lw	a2,0(v0)
  46168c:	8fc70058 	lw	a3,88(s8)
  461690:	8f9986dc 	lw	t9,-31012(gp)
  461694:	00000000 	nop
  461698:	0320f809 	jalr	t9
  46169c:	00000000 	nop
  4616a0:	8fdc0018 	lw	gp,24(s8)
  4616a4:	afc20020 	sw	v0,32(s8)
			    , fp->name, sd->name, (unsigned long)n);
		    }
		    /* FALL THROUGH */
		case ft_loose_enum:	/* value from an enumeration with only some names known */
		    break;
  4616a8:	1000002c 	b	46175c <out_struct+0x67c>
  4616ac:	00000000 	nop
		case ft_set:	/* bits representing set */
		    if (!testset(fp->desc, n)) {
  4616b0:	8fc30058 	lw	v1,88(s8)
  4616b4:	00001021 	move	v0,zero
  4616b8:	8fc40050 	lw	a0,80(s8)
  4616bc:	00000000 	nop
  4616c0:	8c84000c 	lw	a0,12(a0)
  4616c4:	00403021 	move	a2,v0
  4616c8:	00603821 	move	a3,v1
  4616cc:	8f9982c4 	lw	t9,-32060(gp)
  4616d0:	00000000 	nop
  4616d4:	0320f809 	jalr	t9
  4616d8:	00000000 	nop
  4616dc:	8fdc0018 	lw	gp,24(s8)
  4616e0:	1440001e 	bnez	v0,46175c <out_struct+0x67c>
  4616e4:	00000000 	nop
			ugh = builddiag("bitset %s of %s has unknown member(s): %s"
  4616e8:	8fc30058 	lw	v1,88(s8)
  4616ec:	00001021 	move	v0,zero
  4616f0:	8fc40050 	lw	a0,80(s8)
  4616f4:	00000000 	nop
  4616f8:	8c84000c 	lw	a0,12(a0)
  4616fc:	00403021 	move	a2,v0
  461700:	00603821 	move	a3,v1
  461704:	8f9988c4 	lw	t9,-30524(gp)
  461708:	00000000 	nop
  46170c:	0320f809 	jalr	t9
  461710:	00000000 	nop
  461714:	8fdc0018 	lw	gp,24(s8)
  461718:	00401821 	move	v1,v0
  46171c:	8f84802c 	lw	a0,-32724(gp)
  461720:	00000000 	nop
  461724:	24842c28 	addiu	a0,a0,11304
  461728:	8fc20050 	lw	v0,80(s8)
  46172c:	00000000 	nop
  461730:	8c450008 	lw	a1,8(v0)
  461734:	8fc20084 	lw	v0,132(s8)
  461738:	00000000 	nop
  46173c:	8c460000 	lw	a2,0(v0)
  461740:	00603821 	move	a3,v1
  461744:	8f9986dc 	lw	t9,-31012(gp)
  461748:	00000000 	nop
  46174c:	0320f809 	jalr	t9
  461750:	00000000 	nop
  461754:	8fdc0018 	lw	gp,24(s8)
  461758:	afc20020 	sw	v0,32(s8)
			    , fp->name, sd->name, bitnamesof(fp->desc, n));
		    }
		    break;
		default:
		    break;
  46175c:	00000000 	nop
		}

		while (i-- != 0) {
  461760:	8fc20054 	lw	v0,84(s8)
  461764:	00000000 	nop
  461768:	2442ffff 	addiu	v0,v0,-1
  46176c:	00401821 	move	v1,v0
  461770:	afc30054 	sw	v1,84(s8)
  461774:	2402ffff 	li	v0,-1
  461778:	14620011 	bne	v1,v0,4617c0 <out_struct+0x6e0>
  46177c:	00000000 	nop
		    cur[i] = (u_int8_t)n;
		    n >>= BITS_PER_BYTE;
		}
		inp += fp->size;
  461780:	8fc20050 	lw	v0,80(s8)
  461784:	00000000 	nop
  461788:	8c430004 	lw	v1,4(v0)
  46178c:	8fc20024 	lw	v0,36(s8)
  461790:	00000000 	nop
  461794:	00431021 	addu	v0,v0,v1
  461798:	afc20024 	sw	v0,36(s8)
		cur += fp->size;
  46179c:	8fc20050 	lw	v0,80(s8)
  4617a0:	00000000 	nop
  4617a4:	8c430004 	lw	v1,4(v0)
  4617a8:	8fc20028 	lw	v0,40(s8)
  4617ac:	00000000 	nop
  4617b0:	00431021 	addu	v0,v0,v1
  4617b4:	afc20028 	sw	v0,40(s8)
		break;
  4617b8:	10000094 	b	461a0c <out_struct+0x92c>
  4617bc:	00000000 	nop
  4617c0:	8fc30028 	lw	v1,40(s8)
  4617c4:	8fc20054 	lw	v0,84(s8)
  4617c8:	00000000 	nop
  4617cc:	00621821 	addu	v1,v1,v0
  4617d0:	93c2005b 	lbu	v0,91(s8)
  4617d4:	00000000 	nop
  4617d8:	a0620000 	sb	v0,0(v1)
  4617dc:	8fc20058 	lw	v0,88(s8)
  4617e0:	00000000 	nop
  4617e4:	00021202 	srl	v0,v0,0x8
  4617e8:	afc20058 	sw	v0,88(s8)
  4617ec:	1000ffdc 	b	461760 <out_struct+0x680>
  4617f0:	00000000 	nop
  4617f4:	00000000 	nop
	    }
	    case ft_raw:	/* bytes to be left in network-order */
		for (; i != 0; i--) {
  4617f8:	8fc20054 	lw	v0,84(s8)
  4617fc:	00000000 	nop
  461800:	14400003 	bnez	v0,461810 <out_struct+0x730>
  461804:	00000000 	nop
  461808:	10000080 	b	461a0c <out_struct+0x92c>
  46180c:	00000000 	nop
		    *cur++ = *inp++;
  461810:	27c70028 	addiu	a3,s8,40
  461814:	8ce40000 	lw	a0,0(a3)
  461818:	27c60024 	addiu	a2,s8,36
  46181c:	8cc30000 	lw	v1,0(a2)
  461820:	00802821 	move	a1,a0
  461824:	00601021 	move	v0,v1
  461828:	90420000 	lbu	v0,0(v0)
  46182c:	00000000 	nop
  461830:	a0a20000 	sb	v0,0(a1)
  461834:	24630001 	addiu	v1,v1,1
  461838:	acc30000 	sw	v1,0(a2)
  46183c:	24840001 	addiu	a0,a0,1
  461840:	ace40000 	sw	a0,0(a3)
  461844:	8fc20054 	lw	v0,84(s8)
  461848:	00000000 	nop
  46184c:	2442ffff 	addiu	v0,v0,-1
  461850:	afc20054 	sw	v0,84(s8)
  461854:	1000ffe8 	b	4617f8 <out_struct+0x718>
  461858:	00000000 	nop
		}
		break;
	    case ft_end:	/* end of field list */
		passert(cur == outs->cur + sd->size);
  46185c:	8fc20088 	lw	v0,136(s8)
  461860:	00000000 	nop
  461864:	8c430010 	lw	v1,16(v0)
  461868:	8fc20084 	lw	v0,132(s8)
  46186c:	00000000 	nop
  461870:	8c420008 	lw	v0,8(v0)
  461874:	00000000 	nop
  461878:	00621821 	addu	v1,v1,v0
  46187c:	8fc20028 	lw	v0,40(s8)
  461880:	00000000 	nop
  461884:	1043000e 	beq	v0,v1,4618c0 <out_struct+0x7e0>
  461888:	00000000 	nop
  46188c:	8f84802c 	lw	a0,-32724(gp)
  461890:	00000000 	nop
  461894:	24842df4 	addiu	a0,a0,11764
  461898:	8f85802c 	lw	a1,-32724(gp)
  46189c:	00000000 	nop
  4618a0:	24a52a98 	addiu	a1,a1,10904
  4618a4:	24060432 	li	a2,1074
  4618a8:	8f998bb8 	lw	t9,-29768(gp)
  4618ac:	00000000 	nop
  4618b0:	0320f809 	jalr	t9
  4618b4:	00000000 	nop
  4618b8:	8fdc0018 	lw	gp,24(s8)
  4618bc:	00000000 	nop

		obj.container = outs;
  4618c0:	8fc20088 	lw	v0,136(s8)
  4618c4:	00000000 	nop
  4618c8:	afc20030 	sw	v0,48(s8)
		obj.desc = sd;
  4618cc:	8fc20084 	lw	v0,132(s8)
  4618d0:	00000000 	nop
  4618d4:	afc20034 	sw	v0,52(s8)
		obj.name = sd->name;
  4618d8:	8fc20084 	lw	v0,132(s8)
  4618dc:	00000000 	nop
  4618e0:	8c420000 	lw	v0,0(v0)
  4618e4:	00000000 	nop
  4618e8:	afc20038 	sw	v0,56(s8)
		obj.start = outs->cur;
  4618ec:	8fc20088 	lw	v0,136(s8)
  4618f0:	00000000 	nop
  4618f4:	8c420010 	lw	v0,16(v0)
  4618f8:	00000000 	nop
  4618fc:	afc2003c 	sw	v0,60(s8)
		obj.cur = cur;
  461900:	8fc20028 	lw	v0,40(s8)
  461904:	00000000 	nop
  461908:	afc20040 	sw	v0,64(s8)
		obj.roof = outs->roof;	/* limit of possible */
  46190c:	8fc20088 	lw	v0,136(s8)
  461910:	00000000 	nop
  461914:	8c420014 	lw	v0,20(v0)
  461918:	00000000 	nop
  46191c:	afc20044 	sw	v0,68(s8)
		/* obj.lenfld and obj.lenfld_desc already set */

		if (obj_pbs == NULL) {
  461920:	8fc2008c 	lw	v0,140(s8)
  461924:	00000000 	nop
  461928:	14400009 	bnez	v0,461950 <out_struct+0x870>
  46192c:	00000000 	nop
		    close_output_pbs(&obj); /* fill in length field, if any */
  461930:	27c40030 	addiu	a0,s8,48
  461934:	8f998228 	lw	t9,-32216(gp)
  461938:	00000000 	nop
  46193c:	0320f809 	jalr	t9
  461940:	00000000 	nop
  461944:	8fdc0018 	lw	gp,24(s8)
  461948:	10000020 	b	4619cc <out_struct+0x8ec>
  46194c:	00000000 	nop
		} else {
		    /* We set outs->cur to outs->roof so that
		     * any attempt to output something into outs
		     * before obj is closed will trigger an error.
		     */
		    outs->cur = outs->roof;
  461950:	8fc20088 	lw	v0,136(s8)
  461954:	00000000 	nop
  461958:	8c430014 	lw	v1,20(v0)
  46195c:	8fc20088 	lw	v0,136(s8)
  461960:	00000000 	nop
  461964:	ac430010 	sw	v1,16(v0)

		    *obj_pbs = obj;
  461968:	8fc3008c 	lw	v1,140(s8)
  46196c:	8fc20030 	lw	v0,48(s8)
  461970:	00000000 	nop
  461974:	ac620000 	sw	v0,0(v1)
  461978:	8fc20034 	lw	v0,52(s8)
  46197c:	00000000 	nop
  461980:	ac620004 	sw	v0,4(v1)
  461984:	8fc20038 	lw	v0,56(s8)
  461988:	00000000 	nop
  46198c:	ac620008 	sw	v0,8(v1)
  461990:	8fc2003c 	lw	v0,60(s8)
  461994:	00000000 	nop
  461998:	ac62000c 	sw	v0,12(v1)
  46199c:	8fc20040 	lw	v0,64(s8)
  4619a0:	00000000 	nop
  4619a4:	ac620010 	sw	v0,16(v1)
  4619a8:	8fc20044 	lw	v0,68(s8)
  4619ac:	00000000 	nop
  4619b0:	ac620014 	sw	v0,20(v1)
  4619b4:	8fc20048 	lw	v0,72(s8)
  4619b8:	00000000 	nop
  4619bc:	ac620018 	sw	v0,24(v1)
  4619c0:	8fc2004c 	lw	v0,76(s8)
  4619c4:	00000000 	nop
  4619c8:	ac62001c 	sw	v0,28(v1)
		}
		return TRUE;
  4619cc:	24020001 	li	v0,1
  4619d0:	1000001d 	b	461a48 <out_struct+0x968>
  4619d4:	00000000 	nop

	    default:
		impossible();
  4619d8:	8f84802c 	lw	a0,-32724(gp)
  4619dc:	00000000 	nop
  4619e0:	24842a8c 	addiu	a0,a0,10892
  4619e4:	8f85802c 	lw	a1,-32724(gp)
  4619e8:	00000000 	nop
  4619ec:	24a52a98 	addiu	a1,a1,10904
  4619f0:	2406044a 	li	a2,1098
  4619f4:	8f998bb8 	lw	t9,-29768(gp)
  4619f8:	00000000 	nop
  4619fc:	0320f809 	jalr	t9
  461a00:	00000000 	nop
  461a04:	8fdc0018 	lw	gp,24(s8)
  461a08:	00000000 	nop
  461a0c:	8fc20050 	lw	v0,80(s8)
  461a10:	00000000 	nop
  461a14:	24420010 	addiu	v0,v0,16
  461a18:	afc20050 	sw	v0,80(s8)
  461a1c:	1000fe03 	b	46122c <out_struct+0x14c>
  461a20:	00000000 	nop
		break;
	    }
	}
    }

    /* some failure got us here: report it */
    loglog(RC_LOG_SERIOUS, ugh);	/* ??? serious, but errno not relevant */
  461a24:	24040003 	li	a0,3
  461a28:	8fc50020 	lw	a1,32(s8)
  461a2c:	8f998c48 	lw	t9,-29624(gp)
  461a30:	00000000 	nop
  461a34:	0320f809 	jalr	t9
  461a38:	00000000 	nop
  461a3c:	8fdc0018 	lw	gp,24(s8)
  461a40:	00000000 	nop
    return FALSE;
  461a44:	00001021 	move	v0,zero
}
  461a48:	03c0e821 	move	sp,s8
  461a4c:	8fbf0078 	lw	ra,120(sp)
  461a50:	8fbe0074 	lw	s8,116(sp)
  461a54:	27bd0080 	addiu	sp,sp,128
  461a58:	03e00008 	jr	ra
  461a5c:	00000000 	nop

00461a60 <out_generic>:
  461a60:	3c1c0fbb 	lui	gp,0xfbb
  461a64:	279caf10 	addiu	gp,gp,-20720
  461a68:	0399e021 	addu	gp,gp,t9
  461a6c:	27bdffc8 	addiu	sp,sp,-56
  461a70:	afbc0010 	sw	gp,16(sp)
  461a74:	afbf0030 	sw	ra,48(sp)
  461a78:	afbe002c 	sw	s8,44(sp)
  461a7c:	afbc0028 	sw	gp,40(sp)
  461a80:	03a0f021 	move	s8,sp
  461a84:	00801021 	move	v0,a0
  461a88:	afc5003c 	sw	a1,60(s8)
  461a8c:	afc60040 	sw	a2,64(s8)
  461a90:	afc70044 	sw	a3,68(s8)
  461a94:	a3c20018 	sb	v0,24(s8)

bool
out_generic(u_int8_t np, struct_desc *sd
, pb_stream *outs, pb_stream *obj_pbs)
{
    struct isakmp_generic gen;

    passert(sd->fields == isakmp_generic_desc.fields);
  461a98:	8fc2003c 	lw	v0,60(s8)
  461a9c:	00000000 	nop
  461aa0:	8c430004 	lw	v1,4(v0)
  461aa4:	8f828420 	lw	v0,-31712(gp)
  461aa8:	00000000 	nop
  461aac:	8c420004 	lw	v0,4(v0)
  461ab0:	00000000 	nop
  461ab4:	1062000e 	beq	v1,v0,461af0 <out_generic+0x90>
  461ab8:	00000000 	nop
  461abc:	8f84802c 	lw	a0,-32724(gp)
  461ac0:	00000000 	nop
  461ac4:	24842e50 	addiu	a0,a0,11856
  461ac8:	8f85802c 	lw	a1,-32724(gp)
  461acc:	00000000 	nop
  461ad0:	24a52a98 	addiu	a1,a1,10904
  461ad4:	2406045b 	li	a2,1115
  461ad8:	8f998bb8 	lw	t9,-29768(gp)
  461adc:	00000000 	nop
  461ae0:	0320f809 	jalr	t9
  461ae4:	00000000 	nop
  461ae8:	8fdc0010 	lw	gp,16(s8)
  461aec:	00000000 	nop
    gen.isag_np = np;
  461af0:	93c20018 	lbu	v0,24(s8)
  461af4:	00000000 	nop
  461af8:	a3c20020 	sb	v0,32(s8)
    return out_struct(&gen, sd, outs, obj_pbs);
  461afc:	27c40020 	addiu	a0,s8,32
  461b00:	8fc5003c 	lw	a1,60(s8)
  461b04:	8fc60040 	lw	a2,64(s8)
  461b08:	8fc70044 	lw	a3,68(s8)
  461b0c:	8f998ba0 	lw	t9,-29792(gp)
  461b10:	00000000 	nop
  461b14:	0320f809 	jalr	t9
  461b18:	00000000 	nop
  461b1c:	8fdc0010 	lw	gp,16(s8)
  461b20:	00000000 	nop
}
  461b24:	03c0e821 	move	sp,s8
  461b28:	8fbf0030 	lw	ra,48(sp)
  461b2c:	8fbe002c 	lw	s8,44(sp)
  461b30:	27bd0038 	addiu	sp,sp,56
  461b34:	03e00008 	jr	ra
  461b38:	00000000 	nop

00461b3c <out_generic_raw>:
  461b3c:	3c1c0fbb 	lui	gp,0xfbb
  461b40:	279cae34 	addiu	gp,gp,-20940
  461b44:	0399e021 	addu	gp,gp,t9
  461b48:	27bdffb0 	addiu	sp,sp,-80
  461b4c:	afbc0010 	sw	gp,16(sp)
  461b50:	afbf0048 	sw	ra,72(sp)
  461b54:	afbe0044 	sw	s8,68(sp)
  461b58:	afbc0040 	sw	gp,64(sp)
  461b5c:	03a0f021 	move	s8,sp
  461b60:	00801021 	move	v0,a0
  461b64:	afc50054 	sw	a1,84(s8)
  461b68:	afc60058 	sw	a2,88(s8)
  461b6c:	afc7005c 	sw	a3,92(s8)
  461b70:	a3c20018 	sb	v0,24(s8)

bool
out_generic_raw(u_int8_t np, struct_desc *sd
, pb_stream *outs, const void *bytes, size_t len, const char *name)
{
    pb_stream pbs;

    if (!out_generic(np, sd, outs, &pbs)
    || !out_raw(bytes, len, &pbs, name))
  461b74:	93c20018 	lbu	v0,24(s8)
  461b78:	00000000 	nop
  461b7c:	00402021 	move	a0,v0
  461b80:	8fc50054 	lw	a1,84(s8)
  461b84:	8fc60058 	lw	a2,88(s8)
  461b88:	27c70020 	addiu	a3,s8,32
  461b8c:	8f9986d4 	lw	t9,-31020(gp)
  461b90:	00000000 	nop
  461b94:	0320f809 	jalr	t9
  461b98:	00000000 	nop
  461b9c:	8fdc0010 	lw	gp,16(s8)
  461ba0:	1040000c 	beqz	v0,461bd4 <out_generic_raw+0x98>
  461ba4:	00000000 	nop
  461ba8:	8fc4005c 	lw	a0,92(s8)
  461bac:	8fc50060 	lw	a1,96(s8)
  461bb0:	27c60020 	addiu	a2,s8,32
  461bb4:	8fc70064 	lw	a3,100(s8)
  461bb8:	8f998308 	lw	t9,-31992(gp)
  461bbc:	00000000 	nop
  461bc0:	0320f809 	jalr	t9
  461bc4:	00000000 	nop
  461bc8:	8fdc0010 	lw	gp,16(s8)
  461bcc:	14400004 	bnez	v0,461be0 <out_generic_raw+0xa4>
  461bd0:	00000000 	nop
	return FALSE;
  461bd4:	00001021 	move	v0,zero
  461bd8:	10000009 	b	461c00 <out_generic_raw+0xc4>
  461bdc:	00000000 	nop
    close_output_pbs(&pbs);
  461be0:	27c40020 	addiu	a0,s8,32
  461be4:	8f998228 	lw	t9,-32216(gp)
  461be8:	00000000 	nop
  461bec:	0320f809 	jalr	t9
  461bf0:	00000000 	nop
  461bf4:	8fdc0010 	lw	gp,16(s8)
  461bf8:	00000000 	nop
    return TRUE;
  461bfc:	24020001 	li	v0,1
}
  461c00:	03c0e821 	move	sp,s8
  461c04:	8fbf0048 	lw	ra,72(sp)
  461c08:	8fbe0044 	lw	s8,68(sp)
  461c0c:	27bd0050 	addiu	sp,sp,80
  461c10:	03e00008 	jr	ra
  461c14:	00000000 	nop

00461c18 <out_modify_previous_np>:
  461c18:	3c1c0fbb 	lui	gp,0xfbb
  461c1c:	279cad58 	addiu	gp,gp,-21160
  461c20:	0399e021 	addu	gp,gp,t9
  461c24:	27bdffe0 	addiu	sp,sp,-32
  461c28:	afbc0000 	sw	gp,0(sp)
  461c2c:	afbe001c 	sw	s8,28(sp)
  461c30:	afbc0018 	sw	gp,24(sp)
  461c34:	03a0f021 	move	s8,sp
  461c38:	00801021 	move	v0,a0
  461c3c:	afc50024 	sw	a1,36(s8)
  461c40:	a3c20008 	sb	v0,8(s8)

#if 1
bool
out_modify_previous_np(u_int8_t np, pb_stream *outs)
{
	size_t len = (outs->cur - outs->start), offset;
  461c44:	8fc20024 	lw	v0,36(s8)
  461c48:	00000000 	nop
  461c4c:	8c430010 	lw	v1,16(v0)
  461c50:	8fc20024 	lw	v0,36(s8)
  461c54:	00000000 	nop
  461c58:	8c42000c 	lw	v0,12(v0)
  461c5c:	00000000 	nop
  461c60:	00621023 	subu	v0,v1,v0
  461c64:	afc2000c 	sw	v0,12(s8)
	if (len < sizeof(struct isakmp_hdr)) {
  461c68:	8fc2000c 	lw	v0,12(s8)
  461c6c:	00000000 	nop
  461c70:	2c42001c 	sltiu	v0,v0,28
  461c74:	10400004 	beqz	v0,461c88 <out_modify_previous_np+0x70>
  461c78:	00000000 	nop
		return FALSE;
  461c7c:	00001021 	move	v0,zero
  461c80:	10000055 	b	461dd8 <out_modify_previous_np+0x1c0>
  461c84:	00000000 	nop
	}
	else if (len == sizeof(struct isakmp_hdr)) {
  461c88:	8fc3000c 	lw	v1,12(s8)
  461c8c:	2402001c 	li	v0,28
  461c90:	1462000d 	bne	v1,v0,461cc8 <out_modify_previous_np+0xb0>
  461c94:	00000000 	nop
		struct isakmp_hdr *hdr = (struct isakmp_hdr *)outs->start;
  461c98:	8fc20024 	lw	v0,36(s8)
  461c9c:	00000000 	nop
  461ca0:	8c42000c 	lw	v0,12(v0)
  461ca4:	00000000 	nop
  461ca8:	afc20014 	sw	v0,20(s8)
		hdr->isa_np = np;
  461cac:	93c30008 	lbu	v1,8(s8)
  461cb0:	8fc20014 	lw	v0,20(s8)
  461cb4:	00000000 	nop
  461cb8:	a0430010 	sb	v1,16(v0)
		return TRUE;
  461cbc:	24020001 	li	v0,1
  461cc0:	10000045 	b	461dd8 <out_modify_previous_np+0x1c0>
  461cc4:	00000000 	nop
	}
	else {
		struct isakmp_generic *hdr;
		for (offset = sizeof(struct isakmp_hdr); offset < len ;
  461cc8:	2402001c 	li	v0,28
  461ccc:	afc20010 	sw	v0,16(s8)
  461cd0:	8fc20010 	lw	v0,16(s8)
  461cd4:	8fc3000c 	lw	v1,12(s8)
  461cd8:	00000000 	nop
  461cdc:	0043102b 	sltu	v0,v0,v1
  461ce0:	14400003 	bnez	v0,461cf0 <out_modify_previous_np+0xd8>
  461ce4:	00000000 	nop
  461ce8:	1000003a 	b	461dd4 <out_modify_previous_np+0x1bc>
  461cec:	00000000 	nop
			offset += ntohs(hdr->isag_length)) {
			if ((len - offset) < sizeof(struct isakmp_generic))
  461cf0:	8fc3000c 	lw	v1,12(s8)
  461cf4:	8fc20010 	lw	v0,16(s8)
  461cf8:	00000000 	nop
  461cfc:	00621023 	subu	v0,v1,v0
  461d00:	2c420004 	sltiu	v0,v0,4
  461d04:	10400004 	beqz	v0,461d18 <out_modify_previous_np+0x100>
  461d08:	00000000 	nop
				return FALSE;
  461d0c:	00001021 	move	v0,zero
  461d10:	10000031 	b	461dd8 <out_modify_previous_np+0x1c0>
  461d14:	00000000 	nop
			hdr = (struct isakmp_generic *)(outs->start+offset);
  461d18:	8fc20024 	lw	v0,36(s8)
  461d1c:	00000000 	nop
  461d20:	8c43000c 	lw	v1,12(v0)
  461d24:	8fc20010 	lw	v0,16(s8)
  461d28:	00000000 	nop
  461d2c:	00621021 	addu	v0,v1,v0
  461d30:	afc20014 	sw	v0,20(s8)
			if ((len - offset) < ntohs(hdr->isag_length))
  461d34:	8fc3000c 	lw	v1,12(s8)
  461d38:	8fc20010 	lw	v0,16(s8)
  461d3c:	00000000 	nop
  461d40:	00621823 	subu	v1,v1,v0
  461d44:	8fc20014 	lw	v0,20(s8)
  461d48:	00000000 	nop
  461d4c:	94420002 	lhu	v0,2(v0)
  461d50:	00000000 	nop
  461d54:	0062102b 	sltu	v0,v1,v0
  461d58:	10400004 	beqz	v0,461d6c <out_modify_previous_np+0x154>
  461d5c:	00000000 	nop
				return FALSE;
  461d60:	00001021 	move	v0,zero
  461d64:	1000001c 	b	461dd8 <out_modify_previous_np+0x1c0>
  461d68:	00000000 	nop
			if ((len - offset) == ntohs(hdr->isag_length)) {
  461d6c:	8fc3000c 	lw	v1,12(s8)
  461d70:	8fc20010 	lw	v0,16(s8)
  461d74:	00000000 	nop
  461d78:	00621823 	subu	v1,v1,v0
  461d7c:	8fc20014 	lw	v0,20(s8)
  461d80:	00000000 	nop
  461d84:	94420002 	lhu	v0,2(v0)
  461d88:	00000000 	nop
  461d8c:	14620008 	bne	v1,v0,461db0 <out_modify_previous_np+0x198>
  461d90:	00000000 	nop
				hdr->isag_np = np;
  461d94:	93c30008 	lbu	v1,8(s8)
  461d98:	8fc20014 	lw	v0,20(s8)
  461d9c:	00000000 	nop
  461da0:	a0430000 	sb	v1,0(v0)
				return TRUE;
  461da4:	24020001 	li	v0,1
  461da8:	1000000b 	b	461dd8 <out_modify_previous_np+0x1c0>
  461dac:	00000000 	nop
  461db0:	8fc20014 	lw	v0,20(s8)
  461db4:	00000000 	nop
  461db8:	94430002 	lhu	v1,2(v0)
  461dbc:	8fc20010 	lw	v0,16(s8)
  461dc0:	00000000 	nop
  461dc4:	00431021 	addu	v0,v0,v1
  461dc8:	afc20010 	sw	v0,16(s8)
  461dcc:	1000ffc0 	b	461cd0 <out_modify_previous_np+0xb8>
  461dd0:	00000000 	nop
			}
		}
	}
	return FALSE;
  461dd4:	00001021 	move	v0,zero
}
  461dd8:	03c0e821 	move	sp,s8
  461ddc:	8fbe001c 	lw	s8,28(sp)
  461de0:	27bd0020 	addiu	sp,sp,32
  461de4:	03e00008 	jr	ra
  461de8:	00000000 	nop

00461dec <out_raw>:
  461dec:	3c1c0fbb 	lui	gp,0xfbb
  461df0:	279cab84 	addiu	gp,gp,-21628
  461df4:	0399e021 	addu	gp,gp,t9
  461df8:	27bdffd0 	addiu	sp,sp,-48
  461dfc:	afbc0018 	sw	gp,24(sp)
  461e00:	afbf0028 	sw	ra,40(sp)
  461e04:	afbe0024 	sw	s8,36(sp)
  461e08:	afbc0020 	sw	gp,32(sp)
  461e0c:	03a0f021 	move	s8,sp
  461e10:	afc40030 	sw	a0,48(s8)
  461e14:	afc50034 	sw	a1,52(s8)
  461e18:	afc60038 	sw	a2,56(s8)
  461e1c:	afc7003c 	sw	a3,60(s8)
#endif

bool
out_raw(const void *bytes, size_t len, pb_stream *outs, const char *name)
{
    if (pbs_left(outs) < len)
  461e20:	8fc20038 	lw	v0,56(s8)
  461e24:	00000000 	nop
  461e28:	8c430014 	lw	v1,20(v0)
  461e2c:	8fc20038 	lw	v0,56(s8)
  461e30:	00000000 	nop
  461e34:	8c420010 	lw	v0,16(v0)
  461e38:	00000000 	nop
  461e3c:	00621823 	subu	v1,v1,v0
  461e40:	8fc20034 	lw	v0,52(s8)
  461e44:	00000000 	nop
  461e48:	0062102b 	sltu	v0,v1,v0
  461e4c:	10400015 	beqz	v0,461ea4 <out_raw+0xb8>
  461e50:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "not enough room left to place %lu bytes of %s in %s"
  461e54:	8fc20038 	lw	v0,56(s8)
  461e58:	00000000 	nop
  461e5c:	8c420008 	lw	v0,8(v0)
  461e60:	00000000 	nop
  461e64:	afa20010 	sw	v0,16(sp)
  461e68:	24040003 	li	a0,3
  461e6c:	8f85802c 	lw	a1,-32724(gp)
  461e70:	00000000 	nop
  461e74:	24a52e7c 	addiu	a1,a1,11900
  461e78:	8fc60034 	lw	a2,52(s8)
  461e7c:	8fc7003c 	lw	a3,60(s8)
  461e80:	8f998c48 	lw	t9,-29624(gp)
  461e84:	00000000 	nop
  461e88:	0320f809 	jalr	t9
  461e8c:	00000000 	nop
  461e90:	8fdc0018 	lw	gp,24(s8)
  461e94:	00000000 	nop
	    , (unsigned long) len, name, outs->name);
	return FALSE;
  461e98:	00001021 	move	v0,zero
  461e9c:	10000033 	b	461f6c <out_raw+0x180>
  461ea0:	00000000 	nop
    }
    else
    {
	DBG(DBG_EMITTING
  461ea4:	8f8284f8 	lw	v0,-31496(gp)
  461ea8:	00000000 	nop
  461eac:	8c420000 	lw	v0,0(v0)
  461eb0:	00000000 	nop
  461eb4:	30420008 	andi	v0,v0,0x8
  461eb8:	10400017 	beqz	v0,461f18 <out_raw+0x12c>
  461ebc:	00000000 	nop
  461ec0:	8f84802c 	lw	a0,-32724(gp)
  461ec4:	00000000 	nop
  461ec8:	24842eb0 	addiu	a0,a0,11952
  461ecc:	8fc50034 	lw	a1,52(s8)
  461ed0:	8fc6003c 	lw	a2,60(s8)
  461ed4:	8fc20038 	lw	v0,56(s8)
  461ed8:	00000000 	nop
  461edc:	8c470008 	lw	a3,8(v0)
  461ee0:	8f9983b8 	lw	t9,-31816(gp)
  461ee4:	00000000 	nop
  461ee8:	0320f809 	jalr	t9
  461eec:	00000000 	nop
  461ef0:	8fdc0018 	lw	gp,24(s8)
  461ef4:	8fc4003c 	lw	a0,60(s8)
  461ef8:	8fc50030 	lw	a1,48(s8)
  461efc:	8fc60034 	lw	a2,52(s8)
  461f00:	8f9984ec 	lw	t9,-31508(gp)
  461f04:	00000000 	nop
  461f08:	0320f809 	jalr	t9
  461f0c:	00000000 	nop
  461f10:	8fdc0018 	lw	gp,24(s8)
  461f14:	00000000 	nop
	    , DBG_log("emitting %u raw bytes of %s into %s"
		, (unsigned) len, name, outs->name);
	      DBG_dump(name, bytes, len));
	memcpy(outs->cur, bytes, len);
  461f18:	8fc20038 	lw	v0,56(s8)
  461f1c:	00000000 	nop
  461f20:	8c440010 	lw	a0,16(v0)
  461f24:	8fc50030 	lw	a1,48(s8)
  461f28:	8fc60034 	lw	a2,52(s8)
  461f2c:	8f998a30 	lw	t9,-30160(gp)
  461f30:	00000000 	nop
  461f34:	0320f809 	jalr	t9
  461f38:	00000000 	nop
  461f3c:	8fdc0018 	lw	gp,24(s8)
  461f40:	00000000 	nop
	outs->cur += len;
  461f44:	8fc20038 	lw	v0,56(s8)
  461f48:	00000000 	nop
  461f4c:	8c430010 	lw	v1,16(v0)
  461f50:	8fc20034 	lw	v0,52(s8)
  461f54:	00000000 	nop
  461f58:	00621821 	addu	v1,v1,v0
  461f5c:	8fc20038 	lw	v0,56(s8)
  461f60:	00000000 	nop
  461f64:	ac430010 	sw	v1,16(v0)
	return TRUE;
  461f68:	24020001 	li	v0,1
    }
}
  461f6c:	03c0e821 	move	sp,s8
  461f70:	8fbf0028 	lw	ra,40(sp)
  461f74:	8fbe0024 	lw	s8,36(sp)
  461f78:	27bd0030 	addiu	sp,sp,48
  461f7c:	03e00008 	jr	ra
  461f80:	00000000 	nop

00461f84 <out_zero>:
  461f84:	3c1c0fbb 	lui	gp,0xfbb
  461f88:	279ca9ec 	addiu	gp,gp,-22036
  461f8c:	0399e021 	addu	gp,gp,t9
  461f90:	27bdffd8 	addiu	sp,sp,-40
  461f94:	afbc0010 	sw	gp,16(sp)
  461f98:	afbf0020 	sw	ra,32(sp)
  461f9c:	afbe001c 	sw	s8,28(sp)
  461fa0:	afbc0018 	sw	gp,24(sp)
  461fa4:	03a0f021 	move	s8,sp
  461fa8:	afc40028 	sw	a0,40(s8)
  461fac:	afc5002c 	sw	a1,44(s8)
  461fb0:	afc60030 	sw	a2,48(s8)

bool
out_zero(size_t len, pb_stream *outs, const char *name)
{
    if (pbs_left(outs) < len)
  461fb4:	8fc2002c 	lw	v0,44(s8)
  461fb8:	00000000 	nop
  461fbc:	8c430014 	lw	v1,20(v0)
  461fc0:	8fc2002c 	lw	v0,44(s8)
  461fc4:	00000000 	nop
  461fc8:	8c420010 	lw	v0,16(v0)
  461fcc:	00000000 	nop
  461fd0:	00621823 	subu	v1,v1,v0
  461fd4:	8fc20028 	lw	v0,40(s8)
  461fd8:	00000000 	nop
  461fdc:	0062102b 	sltu	v0,v1,v0
  461fe0:	10400012 	beqz	v0,46202c <out_zero+0xa8>
  461fe4:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "not enough room left to place %s in %s", name, outs->name);
  461fe8:	24040003 	li	a0,3
  461fec:	8f85802c 	lw	a1,-32724(gp)
  461ff0:	00000000 	nop
  461ff4:	24a52ed4 	addiu	a1,a1,11988
  461ff8:	8fc60030 	lw	a2,48(s8)
  461ffc:	8fc2002c 	lw	v0,44(s8)
  462000:	00000000 	nop
  462004:	8c470008 	lw	a3,8(v0)
  462008:	8f998c48 	lw	t9,-29624(gp)
  46200c:	00000000 	nop
  462010:	0320f809 	jalr	t9
  462014:	00000000 	nop
  462018:	8fdc0010 	lw	gp,16(s8)
  46201c:	00000000 	nop
	return FALSE;
  462020:	00001021 	move	v0,zero
  462024:	1000002b 	b	4620d4 <out_zero+0x150>
  462028:	00000000 	nop
    }
    else
    {
	DBG(DBG_EMITTING, DBG_log("emitting %u zero bytes of %s into %s"
  46202c:	8f8284f8 	lw	v0,-31496(gp)
  462030:	00000000 	nop
  462034:	8c420000 	lw	v0,0(v0)
  462038:	00000000 	nop
  46203c:	30420008 	andi	v0,v0,0x8
  462040:	1040000f 	beqz	v0,462080 <out_zero+0xfc>
  462044:	00000000 	nop
  462048:	8f84802c 	lw	a0,-32724(gp)
  46204c:	00000000 	nop
  462050:	24842efc 	addiu	a0,a0,12028
  462054:	8fc50028 	lw	a1,40(s8)
  462058:	8fc60030 	lw	a2,48(s8)
  46205c:	8fc2002c 	lw	v0,44(s8)
  462060:	00000000 	nop
  462064:	8c470008 	lw	a3,8(v0)
  462068:	8f9983b8 	lw	t9,-31816(gp)
  46206c:	00000000 	nop
  462070:	0320f809 	jalr	t9
  462074:	00000000 	nop
  462078:	8fdc0010 	lw	gp,16(s8)
  46207c:	00000000 	nop
	    , (unsigned) len, name, outs->name));
	memset(outs->cur, 0x00, len);
  462080:	8fc2002c 	lw	v0,44(s8)
  462084:	00000000 	nop
  462088:	8c440010 	lw	a0,16(v0)
  46208c:	00002821 	move	a1,zero
  462090:	8fc60028 	lw	a2,40(s8)
  462094:	8f998500 	lw	t9,-31488(gp)
  462098:	00000000 	nop
  46209c:	0320f809 	jalr	t9
  4620a0:	00000000 	nop
  4620a4:	8fdc0010 	lw	gp,16(s8)
  4620a8:	00000000 	nop
	outs->cur += len;
  4620ac:	8fc2002c 	lw	v0,44(s8)
  4620b0:	00000000 	nop
  4620b4:	8c430010 	lw	v1,16(v0)
  4620b8:	8fc20028 	lw	v0,40(s8)
  4620bc:	00000000 	nop
  4620c0:	00621821 	addu	v1,v1,v0
  4620c4:	8fc2002c 	lw	v0,44(s8)
  4620c8:	00000000 	nop
  4620cc:	ac430010 	sw	v1,16(v0)
	return TRUE;
  4620d0:	24020001 	li	v0,1
    }
}
  4620d4:	03c0e821 	move	sp,s8
  4620d8:	8fbf0020 	lw	ra,32(sp)
  4620dc:	8fbe001c 	lw	s8,28(sp)
  4620e0:	27bd0028 	addiu	sp,sp,40
  4620e4:	03e00008 	jr	ra
  4620e8:	00000000 	nop

004620ec <close_output_pbs>:
  4620ec:	3c1c0fbb 	lui	gp,0xfbb
  4620f0:	279ca884 	addiu	gp,gp,-22396
  4620f4:	0399e021 	addu	gp,gp,t9
  4620f8:	27bdffd0 	addiu	sp,sp,-48
  4620fc:	afbc0010 	sw	gp,16(sp)
  462100:	afbf0028 	sw	ra,40(sp)
  462104:	afbe0024 	sw	s8,36(sp)
  462108:	afbc0020 	sw	gp,32(sp)
  46210c:	03a0f021 	move	s8,sp
  462110:	afc40030 	sw	a0,48(s8)

/* Record current length.
 * Note: currently, this may be repeated any number of times;
 * the last one wins.
 */
void
close_output_pbs(pb_stream *pbs)
{
    if (pbs->lenfld != NULL)
  462114:	8fc20030 	lw	v0,48(s8)
  462118:	00000000 	nop
  46211c:	8c420018 	lw	v0,24(v0)
  462120:	00000000 	nop
  462124:	1040004a 	beqz	v0,462250 <close_output_pbs+0x164>
  462128:	00000000 	nop
    {
	u_int32_t len = pbs_offset(pbs);
  46212c:	8fc20030 	lw	v0,48(s8)
  462130:	00000000 	nop
  462134:	8c430010 	lw	v1,16(v0)
  462138:	8fc20030 	lw	v0,48(s8)
  46213c:	00000000 	nop
  462140:	8c42000c 	lw	v0,12(v0)
  462144:	00000000 	nop
  462148:	00621023 	subu	v0,v1,v0
  46214c:	afc20018 	sw	v0,24(s8)
	int i = pbs->lenfld_desc->size;
  462150:	8fc20030 	lw	v0,48(s8)
  462154:	00000000 	nop
  462158:	8c42001c 	lw	v0,28(v0)
  46215c:	00000000 	nop
  462160:	8c420004 	lw	v0,4(v0)
  462164:	00000000 	nop
  462168:	afc2001c 	sw	v0,28(s8)

	if (pbs->lenfld_desc->field_type == ft_lv)
  46216c:	8fc20030 	lw	v0,48(s8)
  462170:	00000000 	nop
  462174:	8c42001c 	lw	v0,28(v0)
  462178:	00000000 	nop
  46217c:	8c430000 	lw	v1,0(v0)
  462180:	24020003 	li	v0,3
  462184:	14620005 	bne	v1,v0,46219c <close_output_pbs+0xb0>
  462188:	00000000 	nop
	    len -= sizeof(struct isakmp_attribute);
  46218c:	8fc20018 	lw	v0,24(s8)
  462190:	00000000 	nop
  462194:	2442fffc 	addiu	v0,v0,-4
  462198:	afc20018 	sw	v0,24(s8)
	DBG(DBG_EMITTING, DBG_log("emitting length of %s: %lu"
  46219c:	8f8284f8 	lw	v0,-31496(gp)
  4621a0:	00000000 	nop
  4621a4:	8c420000 	lw	v0,0(v0)
  4621a8:	00000000 	nop
  4621ac:	30420008 	andi	v0,v0,0x8
  4621b0:	1040000d 	beqz	v0,4621e8 <close_output_pbs+0xfc>
  4621b4:	00000000 	nop
  4621b8:	8f84802c 	lw	a0,-32724(gp)
  4621bc:	00000000 	nop
  4621c0:	24842f24 	addiu	a0,a0,12068
  4621c4:	8fc20030 	lw	v0,48(s8)
  4621c8:	00000000 	nop
  4621cc:	8c450008 	lw	a1,8(v0)
  4621d0:	8fc60018 	lw	a2,24(s8)
  4621d4:	8f9983b8 	lw	t9,-31816(gp)
  4621d8:	00000000 	nop
  4621dc:	0320f809 	jalr	t9
  4621e0:	00000000 	nop
  4621e4:	8fdc0010 	lw	gp,16(s8)
  4621e8:	00000000 	nop
	    , pbs->name, (unsigned long) len));
	while (i-- != 0) {
  4621ec:	8fc2001c 	lw	v0,28(s8)
  4621f0:	00000000 	nop
  4621f4:	2442ffff 	addiu	v0,v0,-1
  4621f8:	00401821 	move	v1,v0
  4621fc:	afc3001c 	sw	v1,28(s8)
  462200:	2402ffff 	li	v0,-1
  462204:	14620003 	bne	v1,v0,462214 <close_output_pbs+0x128>
  462208:	00000000 	nop
  46220c:	10000010 	b	462250 <close_output_pbs+0x164>
  462210:	00000000 	nop
	    pbs->lenfld[i] = (u_int8_t)len;
  462214:	8fc20030 	lw	v0,48(s8)
  462218:	00000000 	nop
  46221c:	8c430018 	lw	v1,24(v0)
  462220:	8fc2001c 	lw	v0,28(s8)
  462224:	00000000 	nop
  462228:	00621821 	addu	v1,v1,v0
  46222c:	93c2001b 	lbu	v0,27(s8)
  462230:	00000000 	nop
  462234:	a0620000 	sb	v0,0(v1)
	    len >>= BITS_PER_BYTE;
  462238:	8fc20018 	lw	v0,24(s8)
  46223c:	00000000 	nop
  462240:	00021202 	srl	v0,v0,0x8
  462244:	afc20018 	sw	v0,24(s8)
  462248:	1000ffe8 	b	4621ec <close_output_pbs+0x100>
  46224c:	00000000 	nop
	}
    }
    if (pbs->container != NULL)
  462250:	8fc20030 	lw	v0,48(s8)
  462254:	00000000 	nop
  462258:	8c420000 	lw	v0,0(v0)
  46225c:	00000000 	nop
  462260:	10400009 	beqz	v0,462288 <close_output_pbs+0x19c>
  462264:	00000000 	nop
	pbs->container->cur = pbs->cur;	/* pass space utilization up */
  462268:	8fc20030 	lw	v0,48(s8)
  46226c:	00000000 	nop
  462270:	8c430000 	lw	v1,0(v0)
  462274:	8fc20030 	lw	v0,48(s8)
  462278:	00000000 	nop
  46227c:	8c420010 	lw	v0,16(v0)
  462280:	00000000 	nop
  462284:	ac620010 	sw	v0,16(v1)
}
  462288:	03c0e821 	move	sp,s8
  46228c:	8fbf0028 	lw	ra,40(sp)
  462290:	8fbe0024 	lw	s8,36(sp)
  462294:	27bd0030 	addiu	sp,sp,48
  462298:	03e00008 	jr	ra
  46229c:	00000000 	nop

004622a0 <RSA_show_key_fields>:
  4622a0:	3c1c0fbb 	lui	gp,0xfbb
  4622a4:	279ca6d0 	addiu	gp,gp,-22832
  4622a8:	0399e021 	addu	gp,gp,t9
  4622ac:	27bdfdc0 	addiu	sp,sp,-576
  4622b0:	afbc0010 	sw	gp,16(sp)
  4622b4:	afbf0238 	sw	ra,568(sp)
  4622b8:	afbe0234 	sw	s8,564(sp)
  4622bc:	afbc0230 	sw	gp,560(sp)
  4622c0:	03a0f021 	move	s8,sp
  4622c4:	afc40240 	sw	a0,576(s8)
  4622c8:	afc50244 	sw	a1,580(s8)
RSA_show_key_fields(struct RSA_private_key *k, int fieldcnt)
{
    const struct fld *p;

    DBG_log(" keyid: *%s", k->pub.keyid);
  4622cc:	8f84802c 	lw	a0,-32724(gp)
  4622d0:	00000000 	nop
  4622d4:	24842f9c 	addiu	a0,a0,12188
  4622d8:	8fc50240 	lw	a1,576(s8)
  4622dc:	8f9983b8 	lw	t9,-31816(gp)
  4622e0:	00000000 	nop
  4622e4:	0320f809 	jalr	t9
  4622e8:	00000000 	nop
  4622ec:	8fdc0010 	lw	gp,16(s8)
  4622f0:	00000000 	nop

    for (p = RSA_private_field; p < &RSA_private_field[fieldcnt]; p++)
  4622f4:	8f828018 	lw	v0,-32744(gp)
  4622f8:	00000000 	nop
  4622fc:	244232b0 	addiu	v0,v0,12976
  462300:	00000000 	nop
  462304:	afc20018 	sw	v0,24(s8)
  462308:	8fc20244 	lw	v0,580(s8)
  46230c:	00000000 	nop
  462310:	000210c0 	sll	v0,v0,0x3
  462314:	8f838018 	lw	v1,-32744(gp)
  462318:	00000000 	nop
  46231c:	246332b0 	addiu	v1,v1,12976
  462320:	00621821 	addu	v1,v1,v0
  462324:	8fc20018 	lw	v0,24(s8)
  462328:	00000000 	nop
  46232c:	0043102b 	sltu	v0,v0,v1
  462330:	14400003 	bnez	v0,462340 <RSA_show_key_fields+0xa0>
  462334:	00000000 	nop
  462338:	1000003e 	b	462434 <RSA_show_key_fields+0x194>
  46233c:	00000000 	nop
    {
	MP_INT *n = (MP_INT *) ((char *)k + p->offset);
  462340:	8fc20018 	lw	v0,24(s8)
  462344:	00000000 	nop
  462348:	8c430004 	lw	v1,4(v0)
  46234c:	8fc20240 	lw	v0,576(s8)
  462350:	00000000 	nop
  462354:	00431021 	addu	v0,v0,v1
  462358:	afc2001c 	sw	v0,28(s8)
	size_t sz = mpz_sizeinbase(n, 16);
  46235c:	8fc4001c 	lw	a0,28(s8)
  462360:	24050010 	li	a1,16
  462364:	8f998520 	lw	t9,-31456(gp)
  462368:	00000000 	nop
  46236c:	0320f809 	jalr	t9
  462370:	00000000 	nop
  462374:	8fdc0010 	lw	gp,16(s8)
  462378:	afc20020 	sw	v0,32(s8)
	char buf[2048/4 + 2];	/* ought to be big enough */

	passert(sz <= sizeof(buf));
  46237c:	8fc20020 	lw	v0,32(s8)
  462380:	00000000 	nop
  462384:	2c420203 	sltiu	v0,v0,515
  462388:	1440000e 	bnez	v0,4623c4 <RSA_show_key_fields+0x124>
  46238c:	00000000 	nop
  462390:	8f84802c 	lw	a0,-32724(gp)
  462394:	00000000 	nop
  462398:	24842fa8 	addiu	a0,a0,12200
  46239c:	8f85802c 	lw	a1,-32724(gp)
  4623a0:	00000000 	nop
  4623a4:	24a52fbc 	addiu	a1,a1,12220
  4623a8:	2406005c 	li	a2,92
  4623ac:	8f998bb8 	lw	t9,-29768(gp)
  4623b0:	00000000 	nop
  4623b4:	0320f809 	jalr	t9
  4623b8:	00000000 	nop
  4623bc:	8fdc0010 	lw	gp,16(s8)
  4623c0:	00000000 	nop
	mpz_get_str(buf, 16, n);
  4623c4:	27c40028 	addiu	a0,s8,40
  4623c8:	24050010 	li	a1,16
  4623cc:	8fc6001c 	lw	a2,28(s8)
  4623d0:	8f998120 	lw	t9,-32480(gp)
  4623d4:	00000000 	nop
  4623d8:	0320f809 	jalr	t9
  4623dc:	00000000 	nop
  4623e0:	8fdc0010 	lw	gp,16(s8)
  4623e4:	00000000 	nop

	DBG_log(" %s: %s", p->name, buf);
  4623e8:	8f84802c 	lw	a0,-32724(gp)
  4623ec:	00000000 	nop
  4623f0:	24842fc8 	addiu	a0,a0,12232
  4623f4:	8fc20018 	lw	v0,24(s8)
  4623f8:	00000000 	nop
  4623fc:	8c450000 	lw	a1,0(v0)
  462400:	27c60028 	addiu	a2,s8,40
  462404:	8f9983b8 	lw	t9,-31816(gp)
  462408:	00000000 	nop
  46240c:	0320f809 	jalr	t9
  462410:	00000000 	nop
  462414:	8fdc0010 	lw	gp,16(s8)
  462418:	00000000 	nop
  46241c:	8fc20018 	lw	v0,24(s8)
  462420:	00000000 	nop
  462424:	24420008 	addiu	v0,v0,8
  462428:	afc20018 	sw	v0,24(s8)
  46242c:	1000ffb6 	b	462308 <RSA_show_key_fields+0x68>
  462430:	00000000 	nop
    }
}
  462434:	03c0e821 	move	sp,s8
  462438:	8fbf0238 	lw	ra,568(sp)
  46243c:	8fbe0234 	lw	s8,564(sp)
  462440:	27bd0240 	addiu	sp,sp,576
  462444:	03e00008 	jr	ra
  462448:	00000000 	nop

0046244c <RSA_show_private_key>:
  46244c:	3c1c0fbb 	lui	gp,0xfbb
  462450:	279ca524 	addiu	gp,gp,-23260
  462454:	0399e021 	addu	gp,gp,t9
  462458:	27bdffd8 	addiu	sp,sp,-40
  46245c:	afbc0010 	sw	gp,16(sp)
  462460:	afbf0020 	sw	ra,32(sp)
  462464:	afbe001c 	sw	s8,28(sp)
  462468:	afbc0018 	sw	gp,24(sp)
  46246c:	03a0f021 	move	s8,sp
  462470:	afc40028 	sw	a0,40(s8)

/* debugging info that compromises security! */
static void
RSA_show_private_key(struct RSA_private_key *k)
{
    RSA_show_key_fields(k, elemsof(RSA_private_field));
  462474:	8fc40028 	lw	a0,40(s8)
  462478:	24050008 	li	a1,8
  46247c:	8f99803c 	lw	t9,-32708(gp)
  462480:	00000000 	nop
  462484:	273922a0 	addiu	t9,t9,8864
  462488:	00000000 	nop
  46248c:	0320f809 	jalr	t9
  462490:	00000000 	nop
  462494:	8fdc0010 	lw	gp,16(s8)
  462498:	00000000 	nop
}
  46249c:	03c0e821 	move	sp,s8
  4624a0:	8fbf0020 	lw	ra,32(sp)
  4624a4:	8fbe001c 	lw	s8,28(sp)
  4624a8:	27bd0028 	addiu	sp,sp,40
  4624ac:	03e00008 	jr	ra
  4624b0:	00000000 	nop

004624b4 <RSA_show_public_key>:
  4624b4:	3c1c0fbb 	lui	gp,0xfbb
  4624b8:	279ca4bc 	addiu	gp,gp,-23364
  4624bc:	0399e021 	addu	gp,gp,t9
  4624c0:	27bdffd8 	addiu	sp,sp,-40
  4624c4:	afbc0010 	sw	gp,16(sp)
  4624c8:	afbf0020 	sw	ra,32(sp)
  4624cc:	afbe001c 	sw	s8,28(sp)
  4624d0:	afbc0018 	sw	gp,24(sp)
  4624d4:	03a0f021 	move	s8,sp
  4624d8:	afc40028 	sw	a0,40(s8)

static void
RSA_show_public_key(struct RSA_public_key *k)
{
    /* Kludge: pretend that it is a private key, but only display the
     * first two fields (which are the public key).
     */
    passert(offsetof(struct RSA_private_key, pub) == 0);
    RSA_show_key_fields((struct RSA_private_key *)k, 2);
  4624dc:	8fc40028 	lw	a0,40(s8)
  4624e0:	24050002 	li	a1,2
  4624e4:	8f99803c 	lw	t9,-32708(gp)
  4624e8:	00000000 	nop
  4624ec:	273922a0 	addiu	t9,t9,8864
  4624f0:	00000000 	nop
  4624f4:	0320f809 	jalr	t9
  4624f8:	00000000 	nop
  4624fc:	8fdc0010 	lw	gp,16(s8)
  462500:	00000000 	nop
}
  462504:	03c0e821 	move	sp,s8
  462508:	8fbf0020 	lw	ra,32(sp)
  46250c:	8fbe001c 	lw	s8,28(sp)
  462510:	27bd0028 	addiu	sp,sp,40
  462514:	03e00008 	jr	ra
  462518:	00000000 	nop

0046251c <RSA_private_key_sanity>:
  46251c:	3c1c0fbb 	lui	gp,0xfbb
  462520:	279ca454 	addiu	gp,gp,-23468
  462524:	0399e021 	addu	gp,gp,t9
  462528:	27bdffa0 	addiu	sp,sp,-96
  46252c:	afbc0010 	sw	gp,16(sp)
  462530:	afbf0058 	sw	ra,88(sp)
  462534:	afbe0054 	sw	s8,84(sp)
  462538:	afbc0050 	sw	gp,80(sp)
  46253c:	03a0f021 	move	s8,sp
  462540:	afc40060 	sw	a0,96(s8)
#endif

static const char *
RSA_private_key_sanity(struct RSA_private_key *k)
{
    /* note that the *last* error found is reported */
    err_t ugh = NULL;
  462544:	afc00018 	sw	zero,24(s8)
    mpz_t t, u, q1;

#ifdef DEBUG	/* debugging info that compromises security */
    DBG(DBG_PRIVATE, RSA_show_private_key(k));
  462548:	8f8284f8 	lw	v0,-31496(gp)
  46254c:	00000000 	nop
  462550:	8c420000 	lw	v0,0(v0)
  462554:	00000000 	nop
  462558:	30420200 	andi	v0,v0,0x200
  46255c:	1040000a 	beqz	v0,462588 <RSA_private_key_sanity+0x6c>
  462560:	00000000 	nop
  462564:	8fc40060 	lw	a0,96(s8)
  462568:	8f99803c 	lw	t9,-32708(gp)
  46256c:	00000000 	nop
  462570:	2739244c 	addiu	t9,t9,9292
  462574:	00000000 	nop
  462578:	0320f809 	jalr	t9
  46257c:	00000000 	nop
  462580:	8fdc0010 	lw	gp,16(s8)
  462584:	00000000 	nop
#endif

    /* PKCS#1 1.5 section 6 requires modulus to have at least 12 octets.
     * We actually require more (for security).
     */
    if (k->pub.k < RSA_MIN_OCTETS)
  462588:	8fc20060 	lw	v0,96(s8)
  46258c:	00000000 	nop
  462590:	8c42000c 	lw	v0,12(v0)
  462594:	00000000 	nop
  462598:	2c420040 	sltiu	v0,v0,64
  46259c:	10400006 	beqz	v0,4625b8 <RSA_private_key_sanity+0x9c>
  4625a0:	00000000 	nop
	return RSA_MIN_OCTETS_UGH;
  4625a4:	8f82802c 	lw	v0,-32724(gp)
  4625a8:	00000000 	nop
  4625ac:	24422fd0 	addiu	v0,v0,12240
  4625b0:	1000017b 	b	462ba0 <RSA_private_key_sanity+0x684>
  4625b4:	00000000 	nop

    /* we picked a max modulus size to simplify buffer allocation */
    if (k->pub.k > RSA_MAX_OCTETS)
  4625b8:	8fc20060 	lw	v0,96(s8)
  4625bc:	00000000 	nop
  4625c0:	8c42000c 	lw	v0,12(v0)
  4625c4:	00000000 	nop
  4625c8:	2c420201 	sltiu	v0,v0,513
  4625cc:	14400006 	bnez	v0,4625e8 <RSA_private_key_sanity+0xcc>
  4625d0:	00000000 	nop
	return RSA_MAX_OCTETS_UGH;
  4625d4:	8f82802c 	lw	v0,-32724(gp)
  4625d8:	00000000 	nop
  4625dc:	24423008 	addiu	v0,v0,12296
  4625e0:	1000016f 	b	462ba0 <RSA_private_key_sanity+0x684>
  4625e4:	00000000 	nop

    mpz_init(t);
  4625e8:	27c40020 	addiu	a0,s8,32
  4625ec:	8f998734 	lw	t9,-30924(gp)
  4625f0:	00000000 	nop
  4625f4:	0320f809 	jalr	t9
  4625f8:	00000000 	nop
  4625fc:	8fdc0010 	lw	gp,16(s8)
  462600:	00000000 	nop
    mpz_init(u);
  462604:	27c40030 	addiu	a0,s8,48
  462608:	8f998734 	lw	t9,-30924(gp)
  46260c:	00000000 	nop
  462610:	0320f809 	jalr	t9
  462614:	00000000 	nop
  462618:	8fdc0010 	lw	gp,16(s8)
  46261c:	00000000 	nop
    mpz_init(q1);
  462620:	27c40040 	addiu	a0,s8,64
  462624:	8f998734 	lw	t9,-30924(gp)
  462628:	00000000 	nop
  46262c:	0320f809 	jalr	t9
  462630:	00000000 	nop
  462634:	8fdc0010 	lw	gp,16(s8)
  462638:	00000000 	nop

    /* check that n == p * q */
    mpz_mul(u, &k->p, &k->q);
  46263c:	8fc20060 	lw	v0,96(s8)
  462640:	00000000 	nop
  462644:	24430034 	addiu	v1,v0,52
  462648:	8fc20060 	lw	v0,96(s8)
  46264c:	00000000 	nop
  462650:	24420040 	addiu	v0,v0,64
  462654:	27c40030 	addiu	a0,s8,48
  462658:	00602821 	move	a1,v1
  46265c:	00403021 	move	a2,v0
  462660:	8f99886c 	lw	t9,-30612(gp)
  462664:	00000000 	nop
  462668:	0320f809 	jalr	t9
  46266c:	00000000 	nop
  462670:	8fdc0010 	lw	gp,16(s8)
  462674:	00000000 	nop
    if (mpz_cmp(u, &k->pub.n) != 0)
  462678:	8fc20060 	lw	v0,96(s8)
  46267c:	00000000 	nop
  462680:	24420010 	addiu	v0,v0,16
  462684:	27c40030 	addiu	a0,s8,48
  462688:	00402821 	move	a1,v0
  46268c:	8f998950 	lw	t9,-30384(gp)
  462690:	00000000 	nop
  462694:	0320f809 	jalr	t9
  462698:	00000000 	nop
  46269c:	8fdc0010 	lw	gp,16(s8)
  4626a0:	10400006 	beqz	v0,4626bc <RSA_private_key_sanity+0x1a0>
  4626a4:	00000000 	nop
	ugh = "n != p * q";
  4626a8:	8f82802c 	lw	v0,-32724(gp)
  4626ac:	00000000 	nop
  4626b0:	24423034 	addiu	v0,v0,12340
  4626b4:	00000000 	nop
  4626b8:	afc20018 	sw	v0,24(s8)

    /* check that e divides neither p-1 nor q-1 */
    mpz_sub_ui(t, &k->p, 1);
  4626bc:	8fc20060 	lw	v0,96(s8)
  4626c0:	00000000 	nop
  4626c4:	24420034 	addiu	v0,v0,52
  4626c8:	27c40020 	addiu	a0,s8,32
  4626cc:	00402821 	move	a1,v0
  4626d0:	24060001 	li	a2,1
  4626d4:	8f9987cc 	lw	t9,-30772(gp)
  4626d8:	00000000 	nop
  4626dc:	0320f809 	jalr	t9
  4626e0:	00000000 	nop
  4626e4:	8fdc0010 	lw	gp,16(s8)
  4626e8:	00000000 	nop
    mpz_mod(t, t, &k->pub.e);
  4626ec:	8fc20060 	lw	v0,96(s8)
  4626f0:	00000000 	nop
  4626f4:	2442001c 	addiu	v0,v0,28
  4626f8:	27c40020 	addiu	a0,s8,32
  4626fc:	27c50020 	addiu	a1,s8,32
  462700:	00403021 	move	a2,v0
  462704:	8f998bd8 	lw	t9,-29736(gp)
  462708:	00000000 	nop
  46270c:	0320f809 	jalr	t9
  462710:	00000000 	nop
  462714:	8fdc0010 	lw	gp,16(s8)
  462718:	00000000 	nop
    if (mpz_cmp_ui(t, 0) == 0)
  46271c:	8fc20024 	lw	v0,36(s8)
  462720:	00000000 	nop
  462724:	0440000c 	bltz	v0,462758 <RSA_private_key_sanity+0x23c>
  462728:	00000000 	nop
  46272c:	8fc20024 	lw	v0,36(s8)
  462730:	00000000 	nop
  462734:	18400003 	blez	v0,462744 <RSA_private_key_sanity+0x228>
  462738:	00000000 	nop
  46273c:	10000006 	b	462758 <RSA_private_key_sanity+0x23c>
  462740:	00000000 	nop
	ugh = "e divides p-1";
  462744:	8f82802c 	lw	v0,-32724(gp)
  462748:	00000000 	nop
  46274c:	24423040 	addiu	v0,v0,12352
  462750:	00000000 	nop
  462754:	afc20018 	sw	v0,24(s8)

    mpz_sub_ui(t, &k->q, 1);
  462758:	8fc20060 	lw	v0,96(s8)
  46275c:	00000000 	nop
  462760:	24420040 	addiu	v0,v0,64
  462764:	27c40020 	addiu	a0,s8,32
  462768:	00402821 	move	a1,v0
  46276c:	24060001 	li	a2,1
  462770:	8f9987cc 	lw	t9,-30772(gp)
  462774:	00000000 	nop
  462778:	0320f809 	jalr	t9
  46277c:	00000000 	nop
  462780:	8fdc0010 	lw	gp,16(s8)
  462784:	00000000 	nop
    mpz_mod(t, t, &k->pub.e);
  462788:	8fc20060 	lw	v0,96(s8)
  46278c:	00000000 	nop
  462790:	2442001c 	addiu	v0,v0,28
  462794:	27c40020 	addiu	a0,s8,32
  462798:	27c50020 	addiu	a1,s8,32
  46279c:	00403021 	move	a2,v0
  4627a0:	8f998bd8 	lw	t9,-29736(gp)
  4627a4:	00000000 	nop
  4627a8:	0320f809 	jalr	t9
  4627ac:	00000000 	nop
  4627b0:	8fdc0010 	lw	gp,16(s8)
  4627b4:	00000000 	nop
    if (mpz_cmp_ui(t, 0) == 0)
  4627b8:	8fc20024 	lw	v0,36(s8)
  4627bc:	00000000 	nop
  4627c0:	0440000c 	bltz	v0,4627f4 <RSA_private_key_sanity+0x2d8>
  4627c4:	00000000 	nop
  4627c8:	8fc20024 	lw	v0,36(s8)
  4627cc:	00000000 	nop
  4627d0:	18400003 	blez	v0,4627e0 <RSA_private_key_sanity+0x2c4>
  4627d4:	00000000 	nop
  4627d8:	10000006 	b	4627f4 <RSA_private_key_sanity+0x2d8>
  4627dc:	00000000 	nop
	ugh = "e divides q-1";
  4627e0:	8f82802c 	lw	v0,-32724(gp)
  4627e4:	00000000 	nop
  4627e8:	24423050 	addiu	v0,v0,12368
  4627ec:	00000000 	nop
  4627f0:	afc20018 	sw	v0,24(s8)

    /* check that d is e^-1 (mod lcm(p-1, q-1)) */
    /* see PKCS#1v2, aka RFC 2437, for the "lcm" */
    mpz_sub_ui(q1, &k->q, 1);
  4627f4:	8fc20060 	lw	v0,96(s8)
  4627f8:	00000000 	nop
  4627fc:	24420040 	addiu	v0,v0,64
  462800:	27c40040 	addiu	a0,s8,64
  462804:	00402821 	move	a1,v0
  462808:	24060001 	li	a2,1
  46280c:	8f9987cc 	lw	t9,-30772(gp)
  462810:	00000000 	nop
  462814:	0320f809 	jalr	t9
  462818:	00000000 	nop
  46281c:	8fdc0010 	lw	gp,16(s8)
  462820:	00000000 	nop
    mpz_sub_ui(u, &k->p, 1);
  462824:	8fc20060 	lw	v0,96(s8)
  462828:	00000000 	nop
  46282c:	24420034 	addiu	v0,v0,52
  462830:	27c40030 	addiu	a0,s8,48
  462834:	00402821 	move	a1,v0
  462838:	24060001 	li	a2,1
  46283c:	8f9987cc 	lw	t9,-30772(gp)
  462840:	00000000 	nop
  462844:	0320f809 	jalr	t9
  462848:	00000000 	nop
  46284c:	8fdc0010 	lw	gp,16(s8)
  462850:	00000000 	nop
    mpz_gcd(t, u, q1);		/* t := gcd(p-1, q-1) */
  462854:	27c40020 	addiu	a0,s8,32
  462858:	27c50030 	addiu	a1,s8,48
  46285c:	27c60040 	addiu	a2,s8,64
  462860:	8f99887c 	lw	t9,-30596(gp)
  462864:	00000000 	nop
  462868:	0320f809 	jalr	t9
  46286c:	00000000 	nop
  462870:	8fdc0010 	lw	gp,16(s8)
  462874:	00000000 	nop
    mpz_mul(u, u, q1);		/* u := (p-1) * (q-1) */
  462878:	27c40030 	addiu	a0,s8,48
  46287c:	27c50030 	addiu	a1,s8,48
  462880:	27c60040 	addiu	a2,s8,64
  462884:	8f99886c 	lw	t9,-30612(gp)
  462888:	00000000 	nop
  46288c:	0320f809 	jalr	t9
  462890:	00000000 	nop
  462894:	8fdc0010 	lw	gp,16(s8)
  462898:	00000000 	nop
    mpz_divexact(u, u, t);	/* u := lcm(p-1, q-1) */
  46289c:	27c40030 	addiu	a0,s8,48
  4628a0:	27c50030 	addiu	a1,s8,48
  4628a4:	27c60020 	addiu	a2,s8,32
  4628a8:	8f998af8 	lw	t9,-29960(gp)
  4628ac:	00000000 	nop
  4628b0:	0320f809 	jalr	t9
  4628b4:	00000000 	nop
  4628b8:	8fdc0010 	lw	gp,16(s8)
  4628bc:	00000000 	nop

    mpz_mul(t, &k->d, &k->pub.e);
  4628c0:	8fc20060 	lw	v0,96(s8)
  4628c4:	00000000 	nop
  4628c8:	24430028 	addiu	v1,v0,40
  4628cc:	8fc20060 	lw	v0,96(s8)
  4628d0:	00000000 	nop
  4628d4:	2442001c 	addiu	v0,v0,28
  4628d8:	27c40020 	addiu	a0,s8,32
  4628dc:	00602821 	move	a1,v1
  4628e0:	00403021 	move	a2,v0
  4628e4:	8f99886c 	lw	t9,-30612(gp)
  4628e8:	00000000 	nop
  4628ec:	0320f809 	jalr	t9
  4628f0:	00000000 	nop
  4628f4:	8fdc0010 	lw	gp,16(s8)
  4628f8:	00000000 	nop
    mpz_mod(t, t, u);
  4628fc:	27c40020 	addiu	a0,s8,32
  462900:	27c50020 	addiu	a1,s8,32
  462904:	27c60030 	addiu	a2,s8,48
  462908:	8f998bd8 	lw	t9,-29736(gp)
  46290c:	00000000 	nop
  462910:	0320f809 	jalr	t9
  462914:	00000000 	nop
  462918:	8fdc0010 	lw	gp,16(s8)
  46291c:	00000000 	nop
    if (mpz_cmp_ui(t, 1) != 0)
  462920:	27c40020 	addiu	a0,s8,32
  462924:	24050001 	li	a1,1
  462928:	8f998788 	lw	t9,-30840(gp)
  46292c:	00000000 	nop
  462930:	0320f809 	jalr	t9
  462934:	00000000 	nop
  462938:	8fdc0010 	lw	gp,16(s8)
  46293c:	10400006 	beqz	v0,462958 <RSA_private_key_sanity+0x43c>
  462940:	00000000 	nop
	ugh = "(d * e) mod (lcm(p-1, q-1)) != 1";
  462944:	8f82802c 	lw	v0,-32724(gp)
  462948:	00000000 	nop
  46294c:	24423060 	addiu	v0,v0,12384
  462950:	00000000 	nop
  462954:	afc20018 	sw	v0,24(s8)

    /* check that dP is d mod (p-1) */
    mpz_sub_ui(u, &k->p, 1);
  462958:	8fc20060 	lw	v0,96(s8)
  46295c:	00000000 	nop
  462960:	24420034 	addiu	v0,v0,52
  462964:	27c40030 	addiu	a0,s8,48
  462968:	00402821 	move	a1,v0
  46296c:	24060001 	li	a2,1
  462970:	8f9987cc 	lw	t9,-30772(gp)
  462974:	00000000 	nop
  462978:	0320f809 	jalr	t9
  46297c:	00000000 	nop
  462980:	8fdc0010 	lw	gp,16(s8)
  462984:	00000000 	nop
    mpz_mod(t, &k->d, u);
  462988:	8fc20060 	lw	v0,96(s8)
  46298c:	00000000 	nop
  462990:	24420028 	addiu	v0,v0,40
  462994:	27c40020 	addiu	a0,s8,32
  462998:	00402821 	move	a1,v0
  46299c:	27c60030 	addiu	a2,s8,48
  4629a0:	8f998bd8 	lw	t9,-29736(gp)
  4629a4:	00000000 	nop
  4629a8:	0320f809 	jalr	t9
  4629ac:	00000000 	nop
  4629b0:	8fdc0010 	lw	gp,16(s8)
  4629b4:	00000000 	nop
    if (mpz_cmp(t, &k->dP) != 0)
  4629b8:	8fc20060 	lw	v0,96(s8)
  4629bc:	00000000 	nop
  4629c0:	2442004c 	addiu	v0,v0,76
  4629c4:	27c40020 	addiu	a0,s8,32
  4629c8:	00402821 	move	a1,v0
  4629cc:	8f998950 	lw	t9,-30384(gp)
  4629d0:	00000000 	nop
  4629d4:	0320f809 	jalr	t9
  4629d8:	00000000 	nop
  4629dc:	8fdc0010 	lw	gp,16(s8)
  4629e0:	10400006 	beqz	v0,4629fc <RSA_private_key_sanity+0x4e0>
  4629e4:	00000000 	nop
	ugh = "dP is not congruent to d mod (p-1)";
  4629e8:	8f82802c 	lw	v0,-32724(gp)
  4629ec:	00000000 	nop
  4629f0:	24423084 	addiu	v0,v0,12420
  4629f4:	00000000 	nop
  4629f8:	afc20018 	sw	v0,24(s8)

    /* check that dQ is d mod (q-1) */
    mpz_sub_ui(u, &k->q, 1);
  4629fc:	8fc20060 	lw	v0,96(s8)
  462a00:	00000000 	nop
  462a04:	24420040 	addiu	v0,v0,64
  462a08:	27c40030 	addiu	a0,s8,48
  462a0c:	00402821 	move	a1,v0
  462a10:	24060001 	li	a2,1
  462a14:	8f9987cc 	lw	t9,-30772(gp)
  462a18:	00000000 	nop
  462a1c:	0320f809 	jalr	t9
  462a20:	00000000 	nop
  462a24:	8fdc0010 	lw	gp,16(s8)
  462a28:	00000000 	nop
    mpz_mod(t, &k->d, u);
  462a2c:	8fc20060 	lw	v0,96(s8)
  462a30:	00000000 	nop
  462a34:	24420028 	addiu	v0,v0,40
  462a38:	27c40020 	addiu	a0,s8,32
  462a3c:	00402821 	move	a1,v0
  462a40:	27c60030 	addiu	a2,s8,48
  462a44:	8f998bd8 	lw	t9,-29736(gp)
  462a48:	00000000 	nop
  462a4c:	0320f809 	jalr	t9
  462a50:	00000000 	nop
  462a54:	8fdc0010 	lw	gp,16(s8)
  462a58:	00000000 	nop
    if (mpz_cmp(t, &k->dQ) != 0)
  462a5c:	8fc20060 	lw	v0,96(s8)
  462a60:	00000000 	nop
  462a64:	24420058 	addiu	v0,v0,88
  462a68:	27c40020 	addiu	a0,s8,32
  462a6c:	00402821 	move	a1,v0
  462a70:	8f998950 	lw	t9,-30384(gp)
  462a74:	00000000 	nop
  462a78:	0320f809 	jalr	t9
  462a7c:	00000000 	nop
  462a80:	8fdc0010 	lw	gp,16(s8)
  462a84:	10400006 	beqz	v0,462aa0 <RSA_private_key_sanity+0x584>
  462a88:	00000000 	nop
	ugh = "dQ is not congruent to d mod (q-1)";
  462a8c:	8f82802c 	lw	v0,-32724(gp)
  462a90:	00000000 	nop
  462a94:	244230a8 	addiu	v0,v0,12456
  462a98:	00000000 	nop
  462a9c:	afc20018 	sw	v0,24(s8)

    /* check that qInv is (q^-1) mod p */
    mpz_mul(t, &k->qInv, &k->q);
  462aa0:	8fc20060 	lw	v0,96(s8)
  462aa4:	00000000 	nop
  462aa8:	24430064 	addiu	v1,v0,100
  462aac:	8fc20060 	lw	v0,96(s8)
  462ab0:	00000000 	nop
  462ab4:	24420040 	addiu	v0,v0,64
  462ab8:	27c40020 	addiu	a0,s8,32
  462abc:	00602821 	move	a1,v1
  462ac0:	00403021 	move	a2,v0
  462ac4:	8f99886c 	lw	t9,-30612(gp)
  462ac8:	00000000 	nop
  462acc:	0320f809 	jalr	t9
  462ad0:	00000000 	nop
  462ad4:	8fdc0010 	lw	gp,16(s8)
  462ad8:	00000000 	nop
    mpz_mod(t, t, &k->p);
  462adc:	8fc20060 	lw	v0,96(s8)
  462ae0:	00000000 	nop
  462ae4:	24420034 	addiu	v0,v0,52
  462ae8:	27c40020 	addiu	a0,s8,32
  462aec:	27c50020 	addiu	a1,s8,32
  462af0:	00403021 	move	a2,v0
  462af4:	8f998bd8 	lw	t9,-29736(gp)
  462af8:	00000000 	nop
  462afc:	0320f809 	jalr	t9
  462b00:	00000000 	nop
  462b04:	8fdc0010 	lw	gp,16(s8)
  462b08:	00000000 	nop
    if (mpz_cmp_ui(t, 1) != 0)
  462b0c:	27c40020 	addiu	a0,s8,32
  462b10:	24050001 	li	a1,1
  462b14:	8f998788 	lw	t9,-30840(gp)
  462b18:	00000000 	nop
  462b1c:	0320f809 	jalr	t9
  462b20:	00000000 	nop
  462b24:	8fdc0010 	lw	gp,16(s8)
  462b28:	10400006 	beqz	v0,462b44 <RSA_private_key_sanity+0x628>
  462b2c:	00000000 	nop
	ugh = "qInv is not conguent ot (q^-1) mod p";
  462b30:	8f82802c 	lw	v0,-32724(gp)
  462b34:	00000000 	nop
  462b38:	244230cc 	addiu	v0,v0,12492
  462b3c:	00000000 	nop
  462b40:	afc20018 	sw	v0,24(s8)

    mpz_clear(t);
  462b44:	27c40020 	addiu	a0,s8,32
  462b48:	8f998c40 	lw	t9,-29632(gp)
  462b4c:	00000000 	nop
  462b50:	0320f809 	jalr	t9
  462b54:	00000000 	nop
  462b58:	8fdc0010 	lw	gp,16(s8)
  462b5c:	00000000 	nop
    mpz_clear(u);
  462b60:	27c40030 	addiu	a0,s8,48
  462b64:	8f998c40 	lw	t9,-29632(gp)
  462b68:	00000000 	nop
  462b6c:	0320f809 	jalr	t9
  462b70:	00000000 	nop
  462b74:	8fdc0010 	lw	gp,16(s8)
  462b78:	00000000 	nop
    mpz_clear(q1);
  462b7c:	27c40040 	addiu	a0,s8,64
  462b80:	8f998c40 	lw	t9,-29632(gp)
  462b84:	00000000 	nop
  462b88:	0320f809 	jalr	t9
  462b8c:	00000000 	nop
  462b90:	8fdc0010 	lw	gp,16(s8)
  462b94:	00000000 	nop
    return ugh;
  462b98:	8fc20018 	lw	v0,24(s8)
  462b9c:	00000000 	nop
}
  462ba0:	03c0e821 	move	sp,s8
  462ba4:	8fbf0058 	lw	ra,88(sp)
  462ba8:	8fbe0054 	lw	s8,84(sp)
  462bac:	27bd0060 	addiu	sp,sp,96
  462bb0:	03e00008 	jr	ra
  462bb4:	00000000 	nop

00462bb8 <form_keyid>:
  462bb8:	3c1c0fbb 	lui	gp,0xfbb
  462bbc:	279c9db8 	addiu	gp,gp,-25160
  462bc0:	0399e021 	addu	gp,gp,t9
  462bc4:	27bdffd0 	addiu	sp,sp,-48
  462bc8:	afbc0018 	sw	gp,24(sp)
  462bcc:	afbf0028 	sw	ra,40(sp)
  462bd0:	afbe0024 	sw	s8,36(sp)
  462bd4:	afbc0020 	sw	gp,32(sp)
  462bd8:	03a0f021 	move	s8,sp
  462bdc:	afc40030 	sw	a0,48(s8)
  462be0:	afc50034 	sw	a1,52(s8)
  462be4:	afc60038 	sw	a2,56(s8)
  462be8:	afc7003c 	sw	a3,60(s8)

const char *shared_secrets_file = SHARED_SECRETS_FILE;

struct id_list {
    struct id id;
    struct id_list *next;
};

struct secret {
    struct id_list *ids;
    enum PrivateKeyKind kind;
    union {
	chunk_t preshared_secret;
	struct RSA_private_key RSA_private_key;
    } u;
    struct secret *next;
};

/*
 * forms the keyid from the public exponent e and modulus n
 */
void
form_keyid(chunk_t e, chunk_t n, char* keyid, unsigned *keysize)
{
    /* eliminate leading zero byte in modulus from ASN.1 coding */
    if (*n.ptr == 0x00)
  462bec:	8fc20038 	lw	v0,56(s8)
  462bf0:	00000000 	nop
  462bf4:	90420000 	lbu	v0,0(v0)
  462bf8:	00000000 	nop
  462bfc:	14400009 	bnez	v0,462c24 <form_keyid+0x6c>
  462c00:	00000000 	nop
    {
	n.ptr++;  n.len--;
  462c04:	8fc20038 	lw	v0,56(s8)
  462c08:	00000000 	nop
  462c0c:	24420001 	addiu	v0,v0,1
  462c10:	afc20038 	sw	v0,56(s8)
  462c14:	8fc2003c 	lw	v0,60(s8)
  462c18:	00000000 	nop
  462c1c:	2442ffff 	addiu	v0,v0,-1
  462c20:	afc2003c 	sw	v0,60(s8)
    }

    /* create the Openswan keyid */
    keyid[0] = '\0';	/* in case of splitkeytoid failure */
  462c24:	8fc20040 	lw	v0,64(s8)
  462c28:	00000000 	nop
  462c2c:	a0400000 	sb	zero,0(v0)
    splitkeytoid(e.ptr, e.len, n.ptr, n.len, keyid, KEYID_BUF);
  462c30:	8fc20040 	lw	v0,64(s8)
  462c34:	00000000 	nop
  462c38:	afa20010 	sw	v0,16(sp)
  462c3c:	2402000a 	li	v0,10
  462c40:	afa20014 	sw	v0,20(sp)
  462c44:	8fc40030 	lw	a0,48(s8)
  462c48:	8fc50034 	lw	a1,52(s8)
  462c4c:	8fc60038 	lw	a2,56(s8)
  462c50:	8fc7003c 	lw	a3,60(s8)
  462c54:	8f9984a8 	lw	t9,-31576(gp)
  462c58:	00000000 	nop
  462c5c:	0320f809 	jalr	t9
  462c60:	00000000 	nop
  462c64:	8fdc0018 	lw	gp,24(s8)
  462c68:	00000000 	nop

    /* return the RSA modulus size in octets */
    *keysize = n.len;
  462c6c:	8fc3003c 	lw	v1,60(s8)
  462c70:	8fc20044 	lw	v0,68(s8)
  462c74:	00000000 	nop
  462c78:	ac430000 	sw	v1,0(v0)
}
  462c7c:	03c0e821 	move	sp,s8
  462c80:	8fbf0028 	lw	ra,40(sp)
  462c84:	8fbe0024 	lw	s8,36(sp)
  462c88:	27bd0030 	addiu	sp,sp,48
  462c8c:	03e00008 	jr	ra
  462c90:	00000000 	nop

00462c94 <allocate_RSA_public_key>:
  462c94:	3c1c0fbb 	lui	gp,0xfbb
  462c98:	279c9cdc 	addiu	gp,gp,-25380
  462c9c:	0399e021 	addu	gp,gp,t9
  462ca0:	27bdffa0 	addiu	sp,sp,-96
  462ca4:	afbc0018 	sw	gp,24(sp)
  462ca8:	afbf0058 	sw	ra,88(sp)
  462cac:	afbe0054 	sw	s8,84(sp)
  462cb0:	afbc0050 	sw	gp,80(sp)
  462cb4:	03a0f021 	move	s8,sp
  462cb8:	afc40060 	sw	a0,96(s8)


static struct pubkeyrec*
allocate_RSA_public_key(const x509cert_t *cert)
{
    struct pubkeyrec *p = alloc_thing(struct pubkeyrec, "pubkeyrec");
  462cbc:	2404006c 	li	a0,108
  462cc0:	8f85802c 	lw	a1,-32724(gp)
  462cc4:	00000000 	nop
  462cc8:	24a53108 	addiu	a1,a1,12552
  462ccc:	8f998084 	lw	t9,-32636(gp)
  462cd0:	00000000 	nop
  462cd4:	0320f809 	jalr	t9
  462cd8:	00000000 	nop
  462cdc:	8fdc0018 	lw	gp,24(s8)
  462ce0:	afc20020 	sw	v0,32(s8)
    chunk_t e = cert->publicExponent;
  462ce4:	8fc30060 	lw	v1,96(s8)
  462ce8:	00000000 	nop
  462cec:	8c620054 	lw	v0,84(v1)
  462cf0:	00000000 	nop
  462cf4:	afc20028 	sw	v0,40(s8)
  462cf8:	8c620058 	lw	v0,88(v1)
  462cfc:	00000000 	nop
  462d00:	afc2002c 	sw	v0,44(s8)
    chunk_t n = cert->modulus;
  462d04:	8fc30060 	lw	v1,96(s8)
  462d08:	00000000 	nop
  462d0c:	8c62004c 	lw	v0,76(v1)
  462d10:	00000000 	nop
  462d14:	afc20030 	sw	v0,48(s8)
  462d18:	8c620050 	lw	v0,80(v1)
  462d1c:	00000000 	nop
  462d20:	afc20034 	sw	v0,52(s8)

    n_to_mpz(&p->u.rsa.e, e.ptr, e.len);
  462d24:	8fc20020 	lw	v0,32(s8)
  462d28:	00000000 	nop
  462d2c:	2442005c 	addiu	v0,v0,92
  462d30:	00402021 	move	a0,v0
  462d34:	8fc50028 	lw	a1,40(s8)
  462d38:	8fc6002c 	lw	a2,44(s8)
  462d3c:	8f998358 	lw	t9,-31912(gp)
  462d40:	00000000 	nop
  462d44:	0320f809 	jalr	t9
  462d48:	00000000 	nop
  462d4c:	8fdc0018 	lw	gp,24(s8)
  462d50:	00000000 	nop
    n_to_mpz(&p->u.rsa.n, n.ptr, n.len);
  462d54:	8fc20020 	lw	v0,32(s8)
  462d58:	00000000 	nop
  462d5c:	24420050 	addiu	v0,v0,80
  462d60:	00402021 	move	a0,v0
  462d64:	8fc50030 	lw	a1,48(s8)
  462d68:	8fc60034 	lw	a2,52(s8)
  462d6c:	8f998358 	lw	t9,-31912(gp)
  462d70:	00000000 	nop
  462d74:	0320f809 	jalr	t9
  462d78:	00000000 	nop
  462d7c:	8fdc0018 	lw	gp,24(s8)
  462d80:	00000000 	nop

    form_keyid(e, n, p->u.rsa.keyid, &p->u.rsa.k);
  462d84:	8fc20020 	lw	v0,32(s8)
  462d88:	00000000 	nop
  462d8c:	24420040 	addiu	v0,v0,64
  462d90:	afa20010 	sw	v0,16(sp)
  462d94:	8fc20020 	lw	v0,32(s8)
  462d98:	00000000 	nop
  462d9c:	2442004c 	addiu	v0,v0,76
  462da0:	afa20014 	sw	v0,20(sp)
  462da4:	8fc40028 	lw	a0,40(s8)
  462da8:	8fc5002c 	lw	a1,44(s8)
  462dac:	8fc60030 	lw	a2,48(s8)
  462db0:	8fc70034 	lw	a3,52(s8)
  462db4:	8f998b18 	lw	t9,-29928(gp)
  462db8:	00000000 	nop
  462dbc:	0320f809 	jalr	t9
  462dc0:	00000000 	nop
  462dc4:	8fdc0018 	lw	gp,24(s8)
  462dc8:	00000000 	nop

#ifdef DEBUG
    DBG(DBG_PRIVATE, RSA_show_public_key(&p->u.rsa));
  462dcc:	8f8284f8 	lw	v0,-31496(gp)
  462dd0:	00000000 	nop
  462dd4:	8c420000 	lw	v0,0(v0)
  462dd8:	00000000 	nop
  462ddc:	30420200 	andi	v0,v0,0x200
  462de0:	1040000d 	beqz	v0,462e18 <allocate_RSA_public_key+0x184>
  462de4:	00000000 	nop
  462de8:	8fc20020 	lw	v0,32(s8)
  462dec:	00000000 	nop
  462df0:	24420040 	addiu	v0,v0,64
  462df4:	00402021 	move	a0,v0
  462df8:	8f99803c 	lw	t9,-32708(gp)
  462dfc:	00000000 	nop
  462e00:	273924b4 	addiu	t9,t9,9396
  462e04:	00000000 	nop
  462e08:	0320f809 	jalr	t9
  462e0c:	00000000 	nop
  462e10:	8fdc0018 	lw	gp,24(s8)
  462e14:	00000000 	nop
#endif

    p->alg = PUBKEY_ALG_RSA;
  462e18:	24030001 	li	v1,1
  462e1c:	8fc20020 	lw	v0,32(s8)
  462e20:	00000000 	nop
  462e24:	ac43003c 	sw	v1,60(v0)
    p->id  = empty_id;
  462e28:	8fc20020 	lw	v0,32(s8)
  462e2c:	00000000 	nop
  462e30:	00402021 	move	a0,v0
  462e34:	8f8582d8 	lw	a1,-32040(gp)
  462e38:	24060028 	li	a2,40
  462e3c:	8f998a30 	lw	t9,-30160(gp)
  462e40:	00000000 	nop
  462e44:	0320f809 	jalr	t9
  462e48:	00000000 	nop
  462e4c:	8fdc0018 	lw	gp,24(s8)
  462e50:	00000000 	nop
    p->issuer = empty_chunk;
  462e54:	8fc30020 	lw	v1,32(s8)
  462e58:	8f828708 	lw	v0,-30968(gp)
  462e5c:	00000000 	nop
  462e60:	8c420000 	lw	v0,0(v0)
  462e64:	00000000 	nop
  462e68:	ac620030 	sw	v0,48(v1)
  462e6c:	8f828708 	lw	v0,-30968(gp)
  462e70:	00000000 	nop
  462e74:	8c420004 	lw	v0,4(v0)
  462e78:	00000000 	nop
  462e7c:	ac620034 	sw	v0,52(v1)

    return p;
  462e80:	8fc20020 	lw	v0,32(s8)
  462e84:	00000000 	nop
}
  462e88:	03c0e821 	move	sp,s8
  462e8c:	8fbf0058 	lw	ra,88(sp)
  462e90:	8fbe0054 	lw	s8,84(sp)
  462e94:	27bd0060 	addiu	sp,sp,96
  462e98:	03e00008 	jr	ra
  462e9c:	00000000 	nop

00462ea0 <get_secret>:
  462ea0:	3c1c0fbb 	lui	gp,0xfbb
  462ea4:	279c9ad0 	addiu	gp,gp,-25904
  462ea8:	0399e021 	addu	gp,gp,t9
  462eac:	27bdff88 	addiu	sp,sp,-120
  462eb0:	afbc0010 	sw	gp,16(sp)
  462eb4:	afbf0070 	sw	ra,112(sp)
  462eb8:	afbe006c 	sw	s8,108(sp)
  462ebc:	afbc0068 	sw	gp,104(sp)
  462ec0:	03a0f021 	move	s8,sp
  462ec4:	afc40078 	sw	a0,120(s8)
  462ec8:	afc5007c 	sw	a1,124(s8)
  462ecc:	afc60080 	sw	a2,128(s8)

struct secret *secrets = NULL;

/* find the struct secret associated with the combination of
 * me and the peer.  We match the Id (if none, the IP address).
 * Failure is indicated by a NULL.
 */
static const struct secret *
get_secret(struct connection *c, enum PrivateKeyKind kind, bool asym)
{
    enum {
	match_default = 0x01,
	match_him = 	0x02,
	match_me = 	0x04,
    };

    unsigned int best_match = 0;
  462ed0:	afc00018 	sw	zero,24(s8)
    struct secret *best = NULL;
  462ed4:	afc0001c 	sw	zero,28(s8)
    struct secret *s;
    struct id *my_id = &c->this.id
  462ed8:	8fc20078 	lw	v0,120(s8)
  462edc:	00000000 	nop
  462ee0:	24420030 	addiu	v0,v0,48
  462ee4:	afc20024 	sw	v0,36(s8)
	, rw_id
	, *his_id = &c->that.id;
  462ee8:	8fc20078 	lw	v0,120(s8)
  462eec:	00000000 	nop
  462ef0:	244200e0 	addiu	v0,v0,224
  462ef4:	afc20050 	sw	v0,80(s8)

    /* is there a certificate assigned to this connection? */
    if (kind == PPK_RSA && c->this.cert != NULL)
  462ef8:	8fc3007c 	lw	v1,124(s8)
  462efc:	24020001 	li	v0,1
  462f00:	14620049 	bne	v1,v0,463028 <get_secret+0x188>
  462f04:	00000000 	nop
  462f08:	8fc20078 	lw	v0,120(s8)
  462f0c:	00000000 	nop
  462f10:	8c4200d0 	lw	v0,208(v0)
  462f14:	00000000 	nop
  462f18:	10400043 	beqz	v0,463028 <get_secret+0x188>
  462f1c:	00000000 	nop
    {
	struct pubkeyrec *my_public_key = allocate_RSA_public_key(c->this.cert);
  462f20:	8fc20078 	lw	v0,120(s8)
  462f24:	00000000 	nop
  462f28:	8c4400d0 	lw	a0,208(v0)
  462f2c:	8f99803c 	lw	t9,-32708(gp)
  462f30:	00000000 	nop
  462f34:	27392c94 	addiu	t9,t9,11412
  462f38:	00000000 	nop
  462f3c:	0320f809 	jalr	t9
  462f40:	00000000 	nop
  462f44:	8fdc0010 	lw	gp,16(s8)
  462f48:	afc20054 	sw	v0,84(s8)
    
	for (s = secrets; s != NULL; s = s->next)
  462f4c:	8f828b7c 	lw	v0,-29828(gp)
  462f50:	00000000 	nop
  462f54:	8c420000 	lw	v0,0(v0)
  462f58:	00000000 	nop
  462f5c:	afc20020 	sw	v0,32(s8)
  462f60:	8fc20020 	lw	v0,32(s8)
  462f64:	00000000 	nop
  462f68:	14400003 	bnez	v0,462f78 <get_secret+0xd8>
  462f6c:	00000000 	nop
  462f70:	10000023 	b	463000 <get_secret+0x160>
  462f74:	00000000 	nop
	{
	    if (s->kind == kind &&
		same_RSA_public_key(&s->u.RSA_private_key.pub, &my_public_key->u.rsa))
  462f78:	8fc20020 	lw	v0,32(s8)
  462f7c:	00000000 	nop
  462f80:	8c430004 	lw	v1,4(v0)
  462f84:	8fc2007c 	lw	v0,124(s8)
  462f88:	00000000 	nop
  462f8c:	14620015 	bne	v1,v0,462fe4 <get_secret+0x144>
  462f90:	00000000 	nop
  462f94:	8fc20020 	lw	v0,32(s8)
  462f98:	00000000 	nop
  462f9c:	24430008 	addiu	v1,v0,8
  462fa0:	8fc20054 	lw	v0,84(s8)
  462fa4:	00000000 	nop
  462fa8:	24420040 	addiu	v0,v0,64
  462fac:	00602021 	move	a0,v1
  462fb0:	00402821 	move	a1,v0
  462fb4:	8f998c68 	lw	t9,-29592(gp)
  462fb8:	00000000 	nop
  462fbc:	0320f809 	jalr	t9
  462fc0:	00000000 	nop
  462fc4:	8fdc0010 	lw	gp,16(s8)
  462fc8:	10400006 	beqz	v0,462fe4 <get_secret+0x144>
  462fcc:	00000000 	nop
	    {
		best = s;
  462fd0:	8fc20020 	lw	v0,32(s8)
  462fd4:	00000000 	nop
  462fd8:	afc2001c 	sw	v0,28(s8)
		break; /* we have found the private key - no sense in searching further */
  462fdc:	10000008 	b	463000 <get_secret+0x160>
  462fe0:	00000000 	nop
  462fe4:	8fc20020 	lw	v0,32(s8)
  462fe8:	00000000 	nop
  462fec:	8c420078 	lw	v0,120(v0)
  462ff0:	00000000 	nop
  462ff4:	afc20020 	sw	v0,32(s8)
  462ff8:	1000ffd9 	b	462f60 <get_secret+0xc0>
  462ffc:	00000000 	nop
	    }
	}
	free_public_key(my_public_key);
  463000:	8fc40054 	lw	a0,84(s8)
  463004:	8f9985f4 	lw	t9,-31244(gp)
  463008:	00000000 	nop
  46300c:	0320f809 	jalr	t9
  463010:	00000000 	nop
  463014:	8fdc0010 	lw	gp,16(s8)
  463018:	00000000 	nop
	return best;
  46301c:	8fc2001c 	lw	v0,28(s8)
  463020:	100001ac 	b	4636d4 <get_secret+0x834>
  463024:	00000000 	nop
    }

    if (his_id_was_instantiated(c))
  463028:	8fc20078 	lw	v0,120(s8)
  46302c:	00000000 	nop
  463030:	8c430194 	lw	v1,404(v0)
  463034:	24020002 	li	v0,2
  463038:	14620058 	bne	v1,v0,46319c <get_secret+0x2fc>
  46303c:	00000000 	nop
  463040:	8fc20078 	lw	v0,120(s8)
  463044:	00000000 	nop
  463048:	244200e0 	addiu	v0,v0,224
  46304c:	8c430000 	lw	v1,0(v0)
  463050:	24020001 	li	v0,1
  463054:	1062000a 	beq	v1,v0,463080 <get_secret+0x1e0>
  463058:	00000000 	nop
  46305c:	8fc20078 	lw	v0,120(s8)
  463060:	00000000 	nop
  463064:	244200e0 	addiu	v0,v0,224
  463068:	8c430000 	lw	v1,0(v0)
  46306c:	24020005 	li	v0,5
  463070:	10620003 	beq	v1,v0,463080 <get_secret+0x1e0>
  463074:	00000000 	nop
  463078:	10000012 	b	4630c4 <get_secret+0x224>
  46307c:	00000000 	nop
  463080:	8fc20078 	lw	v0,120(s8)
  463084:	00000000 	nop
  463088:	244300e4 	addiu	v1,v0,228
  46308c:	8fc20078 	lw	v0,120(s8)
  463090:	00000000 	nop
  463094:	24420108 	addiu	v0,v0,264
  463098:	00602021 	move	a0,v1
  46309c:	00402821 	move	a1,v0
  4630a0:	8f998928 	lw	t9,-30424(gp)
  4630a4:	00000000 	nop
  4630a8:	0320f809 	jalr	t9
  4630ac:	00000000 	nop
  4630b0:	8fdc0010 	lw	gp,16(s8)
  4630b4:	14400003 	bnez	v0,4630c4 <get_secret+0x224>
  4630b8:	00000000 	nop
  4630bc:	10000037 	b	46319c <get_secret+0x2fc>
  4630c0:	00000000 	nop
    {
	/* roadwarrior: replace him with 0.0.0.0 */
	rw_id.kind = c->that.id.kind;
  4630c4:	8fc20078 	lw	v0,120(s8)
  4630c8:	00000000 	nop
  4630cc:	8c4200e0 	lw	v0,224(v0)
  4630d0:	00000000 	nop
  4630d4:	afc20028 	sw	v0,40(s8)
	rw_id.name.ptr = c->that.id.name.ptr;
  4630d8:	8fc20078 	lw	v0,120(s8)
  4630dc:	00000000 	nop
  4630e0:	8c420100 	lw	v0,256(v0)
  4630e4:	00000000 	nop
  4630e8:	afc20048 	sw	v0,72(s8)
	rw_id.name.len = c->that.id.name.len;
  4630ec:	8fc20078 	lw	v0,120(s8)
  4630f0:	00000000 	nop
  4630f4:	8c420104 	lw	v0,260(v0)
  4630f8:	00000000 	nop
  4630fc:	afc2004c 	sw	v0,76(s8)

	happy(anyaddr(addrtypeof(&c->that.host_addr), &rw_id.ip_addr));
  463100:	8fc20078 	lw	v0,120(s8)
  463104:	00000000 	nop
  463108:	24420108 	addiu	v0,v0,264
  46310c:	00402021 	move	a0,v0
  463110:	8f9985d4 	lw	t9,-31276(gp)
  463114:	00000000 	nop
  463118:	0320f809 	jalr	t9
  46311c:	00000000 	nop
  463120:	8fdc0010 	lw	gp,16(s8)
  463124:	00401821 	move	v1,v0
  463128:	27c20028 	addiu	v0,s8,40
  46312c:	24420004 	addiu	v0,v0,4
  463130:	00602021 	move	a0,v1
  463134:	00402821 	move	a1,v0
  463138:	8f998814 	lw	t9,-30700(gp)
  46313c:	00000000 	nop
  463140:	0320f809 	jalr	t9
  463144:	00000000 	nop
  463148:	8fdc0010 	lw	gp,16(s8)
  46314c:	afc20054 	sw	v0,84(s8)
  463150:	8fc20054 	lw	v0,84(s8)
  463154:	00000000 	nop
  463158:	1040000c 	beqz	v0,46318c <get_secret+0x2ec>
  46315c:	00000000 	nop
  463160:	8fc40054 	lw	a0,84(s8)
  463164:	8f85802c 	lw	a1,-32724(gp)
  463168:	00000000 	nop
  46316c:	24a52fbc 	addiu	a1,a1,12220
  463170:	2406012f 	li	a2,303
  463174:	8f998bb8 	lw	t9,-29768(gp)
  463178:	00000000 	nop
  46317c:	0320f809 	jalr	t9
  463180:	00000000 	nop
  463184:	8fdc0010 	lw	gp,16(s8)
  463188:	00000000 	nop
	his_id = &rw_id;
  46318c:	27c20028 	addiu	v0,s8,40
  463190:	afc20050 	sw	v0,80(s8)
  463194:	10000060 	b	463318 <get_secret+0x478>
  463198:	00000000 	nop
    }
#ifdef NAT_TRAVERSAL
    else if ((nat_traversal_enabled) && (c->policy & POLICY_PSK) &&
	(kind == PPK_PSK) && (
	    ((c->kind == CK_TEMPLATE) && (c->that.id.kind == ID_NONE)) ||
	    ((c->kind == CK_INSTANCE) && (id_is_ipaddr(&c->that.id)))))
  46319c:	8f82837c 	lw	v0,-31876(gp)
  4631a0:	00000000 	nop
  4631a4:	8c420000 	lw	v0,0(v0)
  4631a8:	00000000 	nop
  4631ac:	1040005a 	beqz	v0,463318 <get_secret+0x478>
  4631b0:	00000000 	nop
  4631b4:	8fc20078 	lw	v0,120(s8)
  4631b8:	00000000 	nop
  4631bc:	8c440008 	lw	a0,8(v0)
  4631c0:	8c45000c 	lw	a1,12(v0)
  4631c4:	24020000 	li	v0,0
  4631c8:	24030001 	li	v1,1
  4631cc:	00821024 	and	v0,a0,v0
  4631d0:	00a31824 	and	v1,a1,v1
  4631d4:	10600050 	beqz	v1,463318 <get_secret+0x478>
  4631d8:	00000000 	nop
  4631dc:	8fc2007c 	lw	v0,124(s8)
  4631e0:	00000000 	nop
  4631e4:	1440004c 	bnez	v0,463318 <get_secret+0x478>
  4631e8:	00000000 	nop
  4631ec:	8fc20078 	lw	v0,120(s8)
  4631f0:	00000000 	nop
  4631f4:	8c420194 	lw	v0,404(v0)
  4631f8:	00000000 	nop
  4631fc:	14400009 	bnez	v0,463224 <get_secret+0x384>
  463200:	00000000 	nop
  463204:	8fc20078 	lw	v0,120(s8)
  463208:	00000000 	nop
  46320c:	8c4200e0 	lw	v0,224(v0)
  463210:	00000000 	nop
  463214:	14400003 	bnez	v0,463224 <get_secret+0x384>
  463218:	00000000 	nop
  46321c:	10000017 	b	46327c <get_secret+0x3dc>
  463220:	00000000 	nop
  463224:	8fc20078 	lw	v0,120(s8)
  463228:	00000000 	nop
  46322c:	8c430194 	lw	v1,404(v0)
  463230:	24020002 	li	v0,2
  463234:	14620038 	bne	v1,v0,463318 <get_secret+0x478>
  463238:	00000000 	nop
  46323c:	8fc20078 	lw	v0,120(s8)
  463240:	00000000 	nop
  463244:	244200e0 	addiu	v0,v0,224
  463248:	8c430000 	lw	v1,0(v0)
  46324c:	24020001 	li	v0,1
  463250:	1062000a 	beq	v1,v0,46327c <get_secret+0x3dc>
  463254:	00000000 	nop
  463258:	8fc20078 	lw	v0,120(s8)
  46325c:	00000000 	nop
  463260:	244200e0 	addiu	v0,v0,224
  463264:	8c430000 	lw	v1,0(v0)
  463268:	24020005 	li	v0,5
  46326c:	10620003 	beq	v1,v0,46327c <get_secret+0x3dc>
  463270:	00000000 	nop
  463274:	10000028 	b	463318 <get_secret+0x478>
  463278:	00000000 	nop
    {
	/* roadwarrior: replace him with 0.0.0.0 */
	rw_id.kind = ID_IPV4_ADDR;
  46327c:	24020001 	li	v0,1
  463280:	afc20028 	sw	v0,40(s8)
	happy(anyaddr(addrtypeof(&c->that.host_addr), &rw_id.ip_addr));
  463284:	8fc20078 	lw	v0,120(s8)
  463288:	00000000 	nop
  46328c:	24420108 	addiu	v0,v0,264
  463290:	00402021 	move	a0,v0
  463294:	8f9985d4 	lw	t9,-31276(gp)
  463298:	00000000 	nop
  46329c:	0320f809 	jalr	t9
  4632a0:	00000000 	nop
  4632a4:	8fdc0010 	lw	gp,16(s8)
  4632a8:	00401821 	move	v1,v0
  4632ac:	27c20028 	addiu	v0,s8,40
  4632b0:	24420004 	addiu	v0,v0,4
  4632b4:	00602021 	move	a0,v1
  4632b8:	00402821 	move	a1,v0
  4632bc:	8f998814 	lw	t9,-30700(gp)
  4632c0:	00000000 	nop
  4632c4:	0320f809 	jalr	t9
  4632c8:	00000000 	nop
  4632cc:	8fdc0010 	lw	gp,16(s8)
  4632d0:	afc20054 	sw	v0,84(s8)
  4632d4:	8fc20054 	lw	v0,84(s8)
  4632d8:	00000000 	nop
  4632dc:	1040000c 	beqz	v0,463310 <get_secret+0x470>
  4632e0:	00000000 	nop
  4632e4:	8fc40054 	lw	a0,84(s8)
  4632e8:	8f85802c 	lw	a1,-32724(gp)
  4632ec:	00000000 	nop
  4632f0:	24a52fbc 	addiu	a1,a1,12220
  4632f4:	2406013a 	li	a2,314
  4632f8:	8f998bb8 	lw	t9,-29768(gp)
  4632fc:	00000000 	nop
  463300:	0320f809 	jalr	t9
  463304:	00000000 	nop
  463308:	8fdc0010 	lw	gp,16(s8)
  46330c:	00000000 	nop
	his_id = &rw_id;
  463310:	27c20028 	addiu	v0,s8,40
  463314:	afc20050 	sw	v0,80(s8)
    }
#endif

    for (s = secrets; s != NULL; s = s->next)
  463318:	8f828b7c 	lw	v0,-29828(gp)
  46331c:	00000000 	nop
  463320:	8c420000 	lw	v0,0(v0)
  463324:	00000000 	nop
  463328:	afc20020 	sw	v0,32(s8)
  46332c:	8fc20020 	lw	v0,32(s8)
  463330:	00000000 	nop
  463334:	14400003 	bnez	v0,463344 <get_secret+0x4a4>
  463338:	00000000 	nop
  46333c:	100000e3 	b	4636cc <get_secret+0x82c>
  463340:	00000000 	nop
    {
	if (s->kind == kind)
  463344:	8fc20020 	lw	v0,32(s8)
  463348:	00000000 	nop
  46334c:	8c430004 	lw	v1,4(v0)
  463350:	8fc2007c 	lw	v0,124(s8)
  463354:	00000000 	nop
  463358:	146200d5 	bne	v1,v0,4636b0 <get_secret+0x810>
  46335c:	00000000 	nop
	{
	    unsigned int match = 0;
  463360:	afc00054 	sw	zero,84(s8)

	    if (s->ids == NULL)
  463364:	8fc20020 	lw	v0,32(s8)
  463368:	00000000 	nop
  46336c:	8c420000 	lw	v0,0(v0)
  463370:	00000000 	nop
  463374:	14400005 	bnez	v0,46338c <get_secret+0x4ec>
  463378:	00000000 	nop
	    {
		/* a default (signified by lack of ids):
		 * accept if no more specific match found
		 */
		match = match_default;
  46337c:	24020001 	li	v0,1
  463380:	afc20054 	sw	v0,84(s8)
  463384:	1000003d 	b	46347c <get_secret+0x5dc>
  463388:	00000000 	nop
	    }
	    else
	    {
		/* check if both ends match ids */
		struct id_list *i;

		for (i = s->ids; i != NULL; i = i->next)
  46338c:	8fc20020 	lw	v0,32(s8)
  463390:	00000000 	nop
  463394:	8c420000 	lw	v0,0(v0)
  463398:	00000000 	nop
  46339c:	afc20058 	sw	v0,88(s8)
  4633a0:	8fc20058 	lw	v0,88(s8)
  4633a4:	00000000 	nop
  4633a8:	14400003 	bnez	v0,4633b8 <get_secret+0x518>
  4633ac:	00000000 	nop
  4633b0:	10000022 	b	46343c <get_secret+0x59c>
  4633b4:	00000000 	nop
		{
		    if (same_id(my_id, &i->id))
  4633b8:	8fc40024 	lw	a0,36(s8)
  4633bc:	8fc50058 	lw	a1,88(s8)
  4633c0:	8f9980e4 	lw	t9,-32540(gp)
  4633c4:	00000000 	nop
  4633c8:	0320f809 	jalr	t9
  4633cc:	00000000 	nop
  4633d0:	8fdc0010 	lw	gp,16(s8)
  4633d4:	10400005 	beqz	v0,4633ec <get_secret+0x54c>
  4633d8:	00000000 	nop
			match |= match_me;
  4633dc:	8fc20054 	lw	v0,84(s8)
  4633e0:	00000000 	nop
  4633e4:	34420004 	ori	v0,v0,0x4
  4633e8:	afc20054 	sw	v0,84(s8)

		    if (same_id(his_id, &i->id))
  4633ec:	8fc40050 	lw	a0,80(s8)
  4633f0:	8fc50058 	lw	a1,88(s8)
  4633f4:	8f9980e4 	lw	t9,-32540(gp)
  4633f8:	00000000 	nop
  4633fc:	0320f809 	jalr	t9
  463400:	00000000 	nop
  463404:	8fdc0010 	lw	gp,16(s8)
  463408:	10400005 	beqz	v0,463420 <get_secret+0x580>
  46340c:	00000000 	nop
			match |= match_him;
  463410:	8fc20054 	lw	v0,84(s8)
  463414:	00000000 	nop
  463418:	34420002 	ori	v0,v0,0x2
  46341c:	afc20054 	sw	v0,84(s8)
  463420:	8fc20058 	lw	v0,88(s8)
  463424:	00000000 	nop
  463428:	8c420028 	lw	v0,40(v0)
  46342c:	00000000 	nop
  463430:	afc20058 	sw	v0,88(s8)
  463434:	1000ffda 	b	4633a0 <get_secret+0x500>
  463438:	00000000 	nop
		}

		/* If our end matched the only id in the list,
		 * default to matching any peer.
		 * A more specific match will trump this.
		 */
		if (match == match_me
		&& s->ids->next == NULL)
  46343c:	8fc30054 	lw	v1,84(s8)
  463440:	24020004 	li	v0,4
  463444:	1462000d 	bne	v1,v0,46347c <get_secret+0x5dc>
  463448:	00000000 	nop
  46344c:	8fc20020 	lw	v0,32(s8)
  463450:	00000000 	nop
  463454:	8c420000 	lw	v0,0(v0)
  463458:	00000000 	nop
  46345c:	8c420028 	lw	v0,40(v0)
  463460:	00000000 	nop
  463464:	14400005 	bnez	v0,46347c <get_secret+0x5dc>
  463468:	00000000 	nop
		    match |= match_default;
  46346c:	8fc20054 	lw	v0,84(s8)
  463470:	00000000 	nop
  463474:	34420001 	ori	v0,v0,0x1
  463478:	afc20054 	sw	v0,84(s8)
	    }

	    switch (match)
  46347c:	8fc20054 	lw	v0,84(s8)
  463480:	00000000 	nop
  463484:	afc20064 	sw	v0,100(s8)
  463488:	24020004 	li	v0,4
  46348c:	8fc30064 	lw	v1,100(s8)
  463490:	00000000 	nop
  463494:	10620014 	beq	v1,v0,4634e8 <get_secret+0x648>
  463498:	00000000 	nop
  46349c:	8fc30064 	lw	v1,100(s8)
  4634a0:	00000000 	nop
  4634a4:	2c620005 	sltiu	v0,v1,5
  4634a8:	10400008 	beqz	v0,4634cc <get_secret+0x62c>
  4634ac:	00000000 	nop
  4634b0:	24020001 	li	v0,1
  4634b4:	8fc30064 	lw	v1,100(s8)
  4634b8:	00000000 	nop
  4634bc:	10620010 	beq	v1,v0,463500 <get_secret+0x660>
  4634c0:	00000000 	nop
  4634c4:	1000007a 	b	4636b0 <get_secret+0x810>
  4634c8:	00000000 	nop
  4634cc:	8fc30064 	lw	v1,100(s8)
  4634d0:	00000000 	nop
  4634d4:	2c620007 	sltiu	v0,v1,7
  4634d8:	10400075 	beqz	v0,4636b0 <get_secret+0x810>
  4634dc:	00000000 	nop
  4634e0:	10000007 	b	463500 <get_secret+0x660>
  4634e4:	00000000 	nop
	    {
	    case match_me:
		/* if this is an asymmetric (eg. public key) system,
		 * allow this-side-only match to count, even if
		 * there are other ids in the list.
		 */
		if(!asym)
  4634e8:	8fc20080 	lw	v0,128(s8)
  4634ec:	00000000 	nop
  4634f0:	14400003 	bnez	v0,463500 <get_secret+0x660>
  4634f4:	00000000 	nop
		    break;
  4634f8:	1000006d 	b	4636b0 <get_secret+0x810>
  4634fc:	00000000 	nop
		/* FALLTHROUGH */
	    case match_default:	/* default all */
	    case match_me | match_default:	/* default peer */
	    case match_me | match_him:	/* explicit */
		if (match == best_match)
  463500:	8fc30054 	lw	v1,84(s8)
  463504:	8fc20018 	lw	v0,24(s8)
  463508:	00000000 	nop
  46350c:	1462005c 	bne	v1,v0,463680 <get_secret+0x7e0>
  463510:	00000000 	nop
		{
		    /* two good matches are equally good:
		     * do they agree?
		     */
		    bool same;

		    switch (kind)
  463514:	8fc2007c 	lw	v0,124(s8)
  463518:	00000000 	nop
  46351c:	afc20060 	sw	v0,96(s8)
  463520:	8fc30060 	lw	v1,96(s8)
  463524:	00000000 	nop
  463528:	10600013 	beqz	v1,463578 <get_secret+0x6d8>
  46352c:	00000000 	nop
  463530:	24020001 	li	v0,1
  463534:	8fc30060 	lw	v1,96(s8)
  463538:	00000000 	nop
  46353c:	1062002f 	beq	v1,v0,4635fc <get_secret+0x75c>
  463540:	00000000 	nop
		    {
		    case PPK_PSK:
			same = s->u.preshared_secret.len == best->u.preshared_secret.len
			    && memcmp(s->u.preshared_secret.ptr, best->u.preshared_secret.ptr, s->u.preshared_secret.len) == 0;
			break;
		    case PPK_RSA:
			/* Dirty trick: since we have code to compare
			 * RSA public keys, but not private keys, we
			 * make the assumption that equal public keys
			 * mean equal private keys.  This ought to work.
			 */
			same = same_RSA_public_key(&s->u.RSA_private_key.pub
			    , &best->u.RSA_private_key.pub);
			break;
		    default:
			impossible();
  463544:	8f84802c 	lw	a0,-32724(gp)
  463548:	00000000 	nop
  46354c:	24843114 	addiu	a0,a0,12564
  463550:	8f85802c 	lw	a1,-32724(gp)
  463554:	00000000 	nop
  463558:	24a52fbc 	addiu	a1,a1,12220
  46355c:	24060187 	li	a2,391
  463560:	8f998bb8 	lw	t9,-29768(gp)
  463564:	00000000 	nop
  463568:	0320f809 	jalr	t9
  46356c:	00000000 	nop
  463570:	8fdc0010 	lw	gp,16(s8)
  463574:	00000000 	nop
  463578:	afc0005c 	sw	zero,92(s8)
  46357c:	8fc20020 	lw	v0,32(s8)
  463580:	00000000 	nop
  463584:	8c43000c 	lw	v1,12(v0)
  463588:	8fc2001c 	lw	v0,28(s8)
  46358c:	00000000 	nop
  463590:	8c42000c 	lw	v0,12(v0)
  463594:	00000000 	nop
  463598:	14620013 	bne	v1,v0,4635e8 <get_secret+0x748>
  46359c:	00000000 	nop
  4635a0:	8fc20020 	lw	v0,32(s8)
  4635a4:	00000000 	nop
  4635a8:	8c440008 	lw	a0,8(v0)
  4635ac:	8fc2001c 	lw	v0,28(s8)
  4635b0:	00000000 	nop
  4635b4:	8c450008 	lw	a1,8(v0)
  4635b8:	8fc20020 	lw	v0,32(s8)
  4635bc:	00000000 	nop
  4635c0:	8c46000c 	lw	a2,12(v0)
  4635c4:	8f9985c8 	lw	t9,-31288(gp)
  4635c8:	00000000 	nop
  4635cc:	0320f809 	jalr	t9
  4635d0:	00000000 	nop
  4635d4:	8fdc0010 	lw	gp,16(s8)
  4635d8:	14400003 	bnez	v0,4635e8 <get_secret+0x748>
  4635dc:	00000000 	nop
  4635e0:	24020001 	li	v0,1
  4635e4:	afc2005c 	sw	v0,92(s8)
  4635e8:	8fc3005c 	lw	v1,92(s8)
  4635ec:	00000000 	nop
  4635f0:	afc30058 	sw	v1,88(s8)
  4635f4:	1000000f 	b	463634 <get_secret+0x794>
  4635f8:	00000000 	nop
  4635fc:	8fc20020 	lw	v0,32(s8)
  463600:	00000000 	nop
  463604:	24430008 	addiu	v1,v0,8
  463608:	8fc2001c 	lw	v0,28(s8)
  46360c:	00000000 	nop
  463610:	24420008 	addiu	v0,v0,8
  463614:	00602021 	move	a0,v1
  463618:	00402821 	move	a1,v0
  46361c:	8f998c68 	lw	t9,-29592(gp)
  463620:	00000000 	nop
  463624:	0320f809 	jalr	t9
  463628:	00000000 	nop
  46362c:	8fdc0010 	lw	gp,16(s8)
  463630:	afc20058 	sw	v0,88(s8)
		    }
		    if (!same)
  463634:	8fc20058 	lw	v0,88(s8)
  463638:	00000000 	nop
  46363c:	1440001c 	bnez	v0,4636b0 <get_secret+0x810>
  463640:	00000000 	nop
		    {
			loglog(RC_LOG_SERIOUS, "multiple ipsec.secrets entries with distinct secrets match endpoints:"
  463644:	24040003 	li	a0,3
  463648:	8f85802c 	lw	a1,-32724(gp)
  46364c:	00000000 	nop
  463650:	24a53120 	addiu	a1,a1,12576
  463654:	8f998c48 	lw	t9,-29624(gp)
  463658:	00000000 	nop
  46365c:	0320f809 	jalr	t9
  463660:	00000000 	nop
  463664:	8fdc0010 	lw	gp,16(s8)
  463668:	00000000 	nop
			    " first secret used");
			best = s;	/* list is backwards: take latest in list */
  46366c:	8fc20020 	lw	v0,32(s8)
  463670:	00000000 	nop
  463674:	afc2001c 	sw	v0,28(s8)
  463678:	1000000d 	b	4636b0 <get_secret+0x810>
  46367c:	00000000 	nop
		    }
		}
		else if (match > best_match)
  463680:	8fc20018 	lw	v0,24(s8)
  463684:	8fc30054 	lw	v1,84(s8)
  463688:	00000000 	nop
  46368c:	0043102b 	sltu	v0,v0,v1
  463690:	10400007 	beqz	v0,4636b0 <get_secret+0x810>
  463694:	00000000 	nop
		{
		    /* this is the best match so far */
		    best_match = match;
  463698:	8fc20054 	lw	v0,84(s8)
  46369c:	00000000 	nop
  4636a0:	afc20018 	sw	v0,24(s8)
		    best = s;
  4636a4:	8fc20020 	lw	v0,32(s8)
  4636a8:	00000000 	nop
  4636ac:	afc2001c 	sw	v0,28(s8)
  4636b0:	8fc20020 	lw	v0,32(s8)
  4636b4:	00000000 	nop
  4636b8:	8c420078 	lw	v0,120(v0)
  4636bc:	00000000 	nop
  4636c0:	afc20020 	sw	v0,32(s8)
  4636c4:	1000ff19 	b	46332c <get_secret+0x48c>
  4636c8:	00000000 	nop
		}
	    }
	}
    }
    return best;
  4636cc:	8fc2001c 	lw	v0,28(s8)
  4636d0:	00000000 	nop
}
  4636d4:	03c0e821 	move	sp,s8
  4636d8:	8fbf0070 	lw	ra,112(sp)
  4636dc:	8fbe006c 	lw	s8,108(sp)
  4636e0:	27bd0078 	addiu	sp,sp,120
  4636e4:	03e00008 	jr	ra
  4636e8:	00000000 	nop

004636ec <get_preshared_secret>:
  4636ec:	3c1c0fbb 	lui	gp,0xfbb
  4636f0:	279c9284 	addiu	gp,gp,-28028
  4636f4:	0399e021 	addu	gp,gp,t9
  4636f8:	27bdffd0 	addiu	sp,sp,-48
  4636fc:	afbc0010 	sw	gp,16(sp)
  463700:	afbf0028 	sw	ra,40(sp)
  463704:	afbe0024 	sw	s8,36(sp)
  463708:	afbc0020 	sw	gp,32(sp)
  46370c:	03a0f021 	move	s8,sp
  463710:	afc40030 	sw	a0,48(s8)

/* find the appropriate preshared key (see get_secret).
 * Failure is indicated by a NULL pointer.
 * Note: the result is not to be freed by the caller.
 */
const chunk_t *
get_preshared_secret(struct connection *c)
{
    const struct secret *s = get_secret(c, PPK_PSK, FALSE);
  463714:	8fc40030 	lw	a0,48(s8)
  463718:	00002821 	move	a1,zero
  46371c:	00003021 	move	a2,zero
  463720:	8f99803c 	lw	t9,-32708(gp)
  463724:	00000000 	nop
  463728:	27392ea0 	addiu	t9,t9,11936
  46372c:	00000000 	nop
  463730:	0320f809 	jalr	t9
  463734:	00000000 	nop
  463738:	8fdc0010 	lw	gp,16(s8)
  46373c:	afc20018 	sw	v0,24(s8)

#ifdef DEBUG
    DBG(DBG_PRIVATE,
  463740:	8f8284f8 	lw	v0,-31496(gp)
  463744:	00000000 	nop
  463748:	8c420000 	lw	v0,0(v0)
  46374c:	00000000 	nop
  463750:	30420200 	andi	v0,v0,0x200
  463754:	1040001e 	beqz	v0,4637d0 <get_preshared_secret+0xe4>
  463758:	00000000 	nop
  46375c:	8fc20018 	lw	v0,24(s8)
  463760:	00000000 	nop
  463764:	1440000b 	bnez	v0,463794 <get_preshared_secret+0xa8>
  463768:	00000000 	nop
  46376c:	8f84802c 	lw	a0,-32724(gp)
  463770:	00000000 	nop
  463774:	24843178 	addiu	a0,a0,12664
  463778:	8f9983b8 	lw	t9,-31816(gp)
  46377c:	00000000 	nop
  463780:	0320f809 	jalr	t9
  463784:	00000000 	nop
  463788:	8fdc0010 	lw	gp,16(s8)
  46378c:	10000010 	b	4637d0 <get_preshared_secret+0xe4>
  463790:	00000000 	nop
  463794:	8f84802c 	lw	a0,-32724(gp)
  463798:	00000000 	nop
  46379c:	24843190 	addiu	a0,a0,12688
  4637a0:	8fc20018 	lw	v0,24(s8)
  4637a4:	00000000 	nop
  4637a8:	8c450008 	lw	a1,8(v0)
  4637ac:	8fc20018 	lw	v0,24(s8)
  4637b0:	00000000 	nop
  4637b4:	8c46000c 	lw	a2,12(v0)
  4637b8:	8f9984ec 	lw	t9,-31508(gp)
  4637bc:	00000000 	nop
  4637c0:	0320f809 	jalr	t9
  4637c4:	00000000 	nop
  4637c8:	8fdc0010 	lw	gp,16(s8)
  4637cc:	00000000 	nop
	if (s == NULL)
	    DBG_log("no Preshared Key Found");
	else
	    DBG_dump_chunk("Preshared Key", s->u.preshared_secret);
	);
#endif
    return s == NULL? NULL : &s->u.preshared_secret;
  4637d0:	8fc20018 	lw	v0,24(s8)
  4637d4:	00000000 	nop
  4637d8:	10400007 	beqz	v0,4637f8 <get_preshared_secret+0x10c>
  4637dc:	00000000 	nop
  4637e0:	8fc20018 	lw	v0,24(s8)
  4637e4:	00000000 	nop
  4637e8:	24420008 	addiu	v0,v0,8
  4637ec:	afc2001c 	sw	v0,28(s8)
  4637f0:	10000002 	b	4637fc <get_preshared_secret+0x110>
  4637f4:	00000000 	nop
  4637f8:	afc0001c 	sw	zero,28(s8)
  4637fc:	8fc2001c 	lw	v0,28(s8)
  463800:	00000000 	nop
}
  463804:	03c0e821 	move	sp,s8
  463808:	8fbf0028 	lw	ra,40(sp)
  46380c:	8fbe0024 	lw	s8,36(sp)
  463810:	27bd0030 	addiu	sp,sp,48
  463814:	03e00008 	jr	ra
  463818:	00000000 	nop

0046381c <has_private_key>:
  46381c:	3c1c0fbb 	lui	gp,0xfbb
  463820:	279c9154 	addiu	gp,gp,-28332
  463824:	0399e021 	addu	gp,gp,t9
  463828:	27bdffc8 	addiu	sp,sp,-56
  46382c:	afbc0010 	sw	gp,16(sp)
  463830:	afbf0030 	sw	ra,48(sp)
  463834:	afbe002c 	sw	s8,44(sp)
  463838:	afbc0028 	sw	gp,40(sp)
  46383c:	03a0f021 	move	s8,sp
  463840:	afc40038 	sw	a0,56(s8)

/* check the existence of an RSA private key matching an RSA public
 * key contained in an X.509 certificate
 */
bool
has_private_key(const x509cert_t *cert)
{
    struct secret *s;
    bool has_key = FALSE;
  463844:	afc0001c 	sw	zero,28(s8)
    struct pubkeyrec *pubkey = allocate_RSA_public_key(cert);
  463848:	8fc40038 	lw	a0,56(s8)
  46384c:	8f99803c 	lw	t9,-32708(gp)
  463850:	00000000 	nop
  463854:	27392c94 	addiu	t9,t9,11412
  463858:	00000000 	nop
  46385c:	0320f809 	jalr	t9
  463860:	00000000 	nop
  463864:	8fdc0010 	lw	gp,16(s8)
  463868:	afc20020 	sw	v0,32(s8)

    for (s = secrets; s != NULL; s = s->next)
  46386c:	8f828b7c 	lw	v0,-29828(gp)
  463870:	00000000 	nop
  463874:	8c420000 	lw	v0,0(v0)
  463878:	00000000 	nop
  46387c:	afc20018 	sw	v0,24(s8)
  463880:	8fc20018 	lw	v0,24(s8)
  463884:	00000000 	nop
  463888:	14400003 	bnez	v0,463898 <has_private_key+0x7c>
  46388c:	00000000 	nop
  463890:	10000021 	b	463918 <has_private_key+0xfc>
  463894:	00000000 	nop
    {
	if (s->kind == PPK_RSA &&
	    same_RSA_public_key(&s->u.RSA_private_key.pub, &pubkey->u.rsa))
  463898:	8fc20018 	lw	v0,24(s8)
  46389c:	00000000 	nop
  4638a0:	8c430004 	lw	v1,4(v0)
  4638a4:	24020001 	li	v0,1
  4638a8:	14620014 	bne	v1,v0,4638fc <has_private_key+0xe0>
  4638ac:	00000000 	nop
  4638b0:	8fc20018 	lw	v0,24(s8)
  4638b4:	00000000 	nop
  4638b8:	24430008 	addiu	v1,v0,8
  4638bc:	8fc20020 	lw	v0,32(s8)
  4638c0:	00000000 	nop
  4638c4:	24420040 	addiu	v0,v0,64
  4638c8:	00602021 	move	a0,v1
  4638cc:	00402821 	move	a1,v0
  4638d0:	8f998c68 	lw	t9,-29592(gp)
  4638d4:	00000000 	nop
  4638d8:	0320f809 	jalr	t9
  4638dc:	00000000 	nop
  4638e0:	8fdc0010 	lw	gp,16(s8)
  4638e4:	10400005 	beqz	v0,4638fc <has_private_key+0xe0>
  4638e8:	00000000 	nop
	{
	    has_key = TRUE;
  4638ec:	24020001 	li	v0,1
  4638f0:	afc2001c 	sw	v0,28(s8)
	    break;
  4638f4:	10000008 	b	463918 <has_private_key+0xfc>
  4638f8:	00000000 	nop
  4638fc:	8fc20018 	lw	v0,24(s8)
  463900:	00000000 	nop
  463904:	8c420078 	lw	v0,120(v0)
  463908:	00000000 	nop
  46390c:	afc20018 	sw	v0,24(s8)
  463910:	1000ffdb 	b	463880 <has_private_key+0x64>
  463914:	00000000 	nop
	}
    }
    free_public_key(pubkey);
  463918:	8fc40020 	lw	a0,32(s8)
  46391c:	8f9985f4 	lw	t9,-31244(gp)
  463920:	00000000 	nop
  463924:	0320f809 	jalr	t9
  463928:	00000000 	nop
  46392c:	8fdc0010 	lw	gp,16(s8)
  463930:	00000000 	nop
    return has_key;
  463934:	8fc2001c 	lw	v0,28(s8)
  463938:	00000000 	nop
}
  46393c:	03c0e821 	move	sp,s8
  463940:	8fbf0030 	lw	ra,48(sp)
  463944:	8fbe002c 	lw	s8,44(sp)
  463948:	27bd0038 	addiu	sp,sp,56
  46394c:	03e00008 	jr	ra
  463950:	00000000 	nop

00463954 <get_RSA_private_key>:
  463954:	3c1c0fbb 	lui	gp,0xfbb
  463958:	279c901c 	addiu	gp,gp,-28644
  46395c:	0399e021 	addu	gp,gp,t9
  463960:	27bdffd0 	addiu	sp,sp,-48
  463964:	afbc0010 	sw	gp,16(sp)
  463968:	afbf0028 	sw	ra,40(sp)
  46396c:	afbe0024 	sw	s8,36(sp)
  463970:	afbc0020 	sw	gp,32(sp)
  463974:	03a0f021 	move	s8,sp
  463978:	afc40030 	sw	a0,48(s8)

/* find the appropriate RSA private key (see get_secret).
 * Failure is indicated by a NULL pointer.
 */
const struct RSA_private_key *
get_RSA_private_key(struct connection *c)
{
    const struct secret *s = get_secret(c, PPK_RSA, TRUE);
  46397c:	8fc40030 	lw	a0,48(s8)
  463980:	24050001 	li	a1,1
  463984:	24060001 	li	a2,1
  463988:	8f99803c 	lw	t9,-32708(gp)
  46398c:	00000000 	nop
  463990:	27392ea0 	addiu	t9,t9,11936
  463994:	00000000 	nop
  463998:	0320f809 	jalr	t9
  46399c:	00000000 	nop
  4639a0:	8fdc0010 	lw	gp,16(s8)
  4639a4:	afc20018 	sw	v0,24(s8)

    return s == NULL? NULL : &s->u.RSA_private_key;
  4639a8:	8fc20018 	lw	v0,24(s8)
  4639ac:	00000000 	nop
  4639b0:	10400007 	beqz	v0,4639d0 <get_RSA_private_key+0x7c>
  4639b4:	00000000 	nop
  4639b8:	8fc20018 	lw	v0,24(s8)
  4639bc:	00000000 	nop
  4639c0:	24420008 	addiu	v0,v0,8
  4639c4:	afc2001c 	sw	v0,28(s8)
  4639c8:	10000002 	b	4639d4 <get_RSA_private_key+0x80>
  4639cc:	00000000 	nop
  4639d0:	afc0001c 	sw	zero,28(s8)
  4639d4:	8fc2001c 	lw	v0,28(s8)
  4639d8:	00000000 	nop
}
  4639dc:	03c0e821 	move	sp,s8
  4639e0:	8fbf0028 	lw	ra,40(sp)
  4639e4:	8fbe0024 	lw	s8,36(sp)
  4639e8:	27bd0030 	addiu	sp,sp,48
  4639ec:	03e00008 	jr	ra
  4639f0:	00000000 	nop

004639f4 <shift>:
  4639f4:	3c1c0fbb 	lui	gp,0xfbb
  4639f8:	279c8f7c 	addiu	gp,gp,-28804
  4639fc:	0399e021 	addu	gp,gp,t9
  463a00:	27bdffc8 	addiu	sp,sp,-56
  463a04:	afbc0010 	sw	gp,16(sp)
  463a08:	afbf0030 	sw	ra,48(sp)
  463a0c:	afbe002c 	sw	s8,44(sp)
  463a10:	afbc0028 	sw	gp,40(sp)
  463a14:	03a0f021 	move	s8,sp

/* digest a secrets file
 *
 * The file is a sequence of records.  A record is a maximal sequence of
 * tokens such that the first, and only the first, is in the first column
 * of a line.
 *
 * Tokens are generally separated by whitespace and are key words, ids,
 * strings, or data suitable for ttodata(3).  As a nod to convention,
 * a trailing ":" on what would otherwise be a token is taken as a
 * separate token.  If preceded by whitespace, a "#" is taken as starting
 * a comment: it and the rest of the line are ignored.
 *
 * One kind of record is an include directive.  It starts with "include".
 * The filename is the only other token in the record.
 * If the filename does not start with /, it is taken to
 * be relative to the directory containing the current file.
 *
 * The other kind of record describes a key.  It starts with a
 * sequence of ids and ends with key information.  Each id
 * is an IP address, a Fully Qualified Domain Name (which will immediately
 * be resolved), or @FQDN which will be left as a name.
 *
 * The key part can be in several forms.
 *
 * The old form of the key is still supported: a simple
 * quoted strings (with no escapes) is taken as a preshred key.
 *
 * The new form starts the key part with a ":".
 *
 * For Preshared Key, use the "PSK" keyword, and follow it by a string
 * or a data token suitable for ttodata(3).
 *
 * For RSA Private Key, use the "RSA" keyword, followed by a
 * brace-enclosed list of key field keywords and data values.
 * The data values are large integers to be decoded by ttodata(3).
 * The fields are a subset of those used by BIND 8.2 and have the
 * same names.
 */

struct secrets_file_position
{
    int depth;	/* how deeply we are nested */
    char *filename;
    FILE *fp;
    enum { B_none, B_record, B_file } bdry;	/* current boundary */
    int lino;	/* line number in file */
    char buffer[2049];    /* note: one extra char for our use (jamming '"') */
    char *cur;	/* cursor */
    char under;	/* except in shift(): character orignally at *cur */
    struct secrets_file_position *previous;
};

static struct secrets_file_position *sfp = NULL;

/* Token decoding: shift() loads the next token into tok.
 * Iff a token starts at the left margin, it is considered
 * to be the first in a record.  We create a special condition,
 * Record Boundary (analogous to EOF), just before such a token.
 * We are unwilling to shift through a record boundary:
 * it must be overridden first.
 * Returns FALSE iff Record Boundary or EOF (i.e. no token);
 * tok will then be NULL.
 */

static void process_secrets_file(const char *file_pat);

static char *tok;
#define tokeq(s) (streq(tok, (s)))
#define tokeqword(s) (strcasecmp(tok, (s)) == 0)

static bool
shift(void)
{
    char *p = sfp->cur;
  463a18:	8f828018 	lw	v0,-32744(gp)
  463a1c:	00000000 	nop
  463a20:	244232f8 	addiu	v0,v0,13048
  463a24:	8c420000 	lw	v0,0(v0)
  463a28:	00000000 	nop
  463a2c:	8c420818 	lw	v0,2072(v0)
  463a30:	00000000 	nop
  463a34:	afc20018 	sw	v0,24(s8)
    char *sor = NULL;	/* start of record for any new lines */
  463a38:	afc0001c 	sw	zero,28(s8)

    passert(sfp->bdry == B_none);
  463a3c:	8f828018 	lw	v0,-32744(gp)
  463a40:	00000000 	nop
  463a44:	244232f8 	addiu	v0,v0,13048
  463a48:	8c420000 	lw	v0,0(v0)
  463a4c:	00000000 	nop
  463a50:	8c42000c 	lw	v0,12(v0)
  463a54:	00000000 	nop
  463a58:	1040000e 	beqz	v0,463a94 <shift+0xa0>
  463a5c:	00000000 	nop
  463a60:	8f84802c 	lw	a0,-32724(gp)
  463a64:	00000000 	nop
  463a68:	248431a0 	addiu	a0,a0,12704
  463a6c:	8f85802c 	lw	a1,-32724(gp)
  463a70:	00000000 	nop
  463a74:	24a52fbc 	addiu	a1,a1,12220
  463a78:	2406021e 	li	a2,542
  463a7c:	8f998bb8 	lw	t9,-29768(gp)
  463a80:	00000000 	nop
  463a84:	0320f809 	jalr	t9
  463a88:	00000000 	nop
  463a8c:	8fdc0010 	lw	gp,16(s8)
  463a90:	00000000 	nop

    *p = sfp->under;
  463a94:	8f828018 	lw	v0,-32744(gp)
  463a98:	00000000 	nop
  463a9c:	244232f8 	addiu	v0,v0,13048
  463aa0:	8c420000 	lw	v0,0(v0)
  463aa4:	00000000 	nop
  463aa8:	9043081c 	lbu	v1,2076(v0)
  463aac:	8fc20018 	lw	v0,24(s8)
  463ab0:	00000000 	nop
  463ab4:	a0430000 	sb	v1,0(v0)
    sfp->under = '\0';
  463ab8:	8f828018 	lw	v0,-32744(gp)
  463abc:	00000000 	nop
  463ac0:	244232f8 	addiu	v0,v0,13048
  463ac4:	8c420000 	lw	v0,0(v0)
  463ac8:	00000000 	nop
  463acc:	a040081c 	sb	zero,2076(v0)

    for (;;)
    {
	switch (*p)
  463ad0:	8fc20018 	lw	v0,24(s8)
  463ad4:	00000000 	nop
  463ad8:	afc20024 	sw	v0,36(s8)
  463adc:	8fc30024 	lw	v1,36(s8)
  463ae0:	00000000 	nop
  463ae4:	90620000 	lbu	v0,0(v1)
  463ae8:	00000000 	nop
  463aec:	2c420028 	sltiu	v0,v0,40
  463af0:	104000ed 	beqz	v0,463ea8 <shift+0x4b4>
  463af4:	00000000 	nop
  463af8:	8fc30024 	lw	v1,36(s8)
  463afc:	00000000 	nop
  463b00:	90620000 	lbu	v0,0(v1)
  463b04:	00000000 	nop
  463b08:	00021080 	sll	v0,v0,0x2
  463b0c:	8f81802c 	lw	at,-32724(gp)
  463b10:	00000000 	nop
  463b14:	242131d8 	addiu	at,at,12760
  463b18:	00221021 	addu	v0,at,v0
  463b1c:	8c420000 	lw	v0,0(v0)
  463b20:	00000000 	nop
  463b24:	005c1021 	addu	v0,v0,gp
  463b28:	00400008 	jr	v0
  463b2c:	00000000 	nop
	{
	case '\0':	/* end of line */
	case '#':	/* comment to end of line: treat as end of line */
	    /* get the next line */
	    if (fgets(sfp->buffer, sizeof(sfp->buffer)-1, sfp->fp) == NULL)
  463b30:	8f828018 	lw	v0,-32744(gp)
  463b34:	00000000 	nop
  463b38:	244232f8 	addiu	v0,v0,13048
  463b3c:	8c420000 	lw	v0,0(v0)
  463b40:	00000000 	nop
  463b44:	24420014 	addiu	v0,v0,20
  463b48:	00402021 	move	a0,v0
  463b4c:	24050800 	li	a1,2048
  463b50:	8f828018 	lw	v0,-32744(gp)
  463b54:	00000000 	nop
  463b58:	244232f8 	addiu	v0,v0,13048
  463b5c:	8c420000 	lw	v0,0(v0)
  463b60:	00000000 	nop
  463b64:	8c460008 	lw	a2,8(v0)
  463b68:	8f998a70 	lw	t9,-30096(gp)
  463b6c:	00000000 	nop
  463b70:	0320f809 	jalr	t9
  463b74:	00000000 	nop
  463b78:	8fdc0010 	lw	gp,16(s8)
  463b7c:	14400015 	bnez	v0,463bd4 <shift+0x1e0>
  463b80:	00000000 	nop
	    {
		sfp->bdry = B_file;
  463b84:	24020002 	li	v0,2
  463b88:	8f838018 	lw	v1,-32744(gp)
  463b8c:	00000000 	nop
  463b90:	246332f8 	addiu	v1,v1,13048
  463b94:	8c630000 	lw	v1,0(v1)
  463b98:	00000000 	nop
  463b9c:	ac62000c 	sw	v0,12(v1)
		tok = sfp->cur = NULL;
  463ba0:	8f828018 	lw	v0,-32744(gp)
  463ba4:	00000000 	nop
  463ba8:	244232f8 	addiu	v0,v0,13048
  463bac:	8c420000 	lw	v0,0(v0)
  463bb0:	00000000 	nop
  463bb4:	ac400818 	sw	zero,2072(v0)
  463bb8:	8f818018 	lw	at,-32744(gp)
  463bbc:	00000000 	nop
  463bc0:	24217be0 	addiu	at,at,31712
  463bc4:	ac200000 	sw	zero,0(at)
		return FALSE;
  463bc8:	00001021 	move	v0,zero
  463bcc:	1000013a 	b	4640b8 <shift+0x6c4>
  463bd0:	00000000 	nop
	    }
	    else
	    {
		/* strip trailing whitespace, including \n */

		for (p = sfp->buffer+strlen(sfp->buffer)-1
		; p>sfp->buffer && isspace(p[-1]); p--)
  463bd4:	8f828018 	lw	v0,-32744(gp)
  463bd8:	00000000 	nop
  463bdc:	244232f8 	addiu	v0,v0,13048
  463be0:	8c420000 	lw	v0,0(v0)
  463be4:	00000000 	nop
  463be8:	24420014 	addiu	v0,v0,20
  463bec:	00402021 	move	a0,v0
  463bf0:	8f998188 	lw	t9,-32376(gp)
  463bf4:	00000000 	nop
  463bf8:	0320f809 	jalr	t9
  463bfc:	00000000 	nop
  463c00:	8fdc0010 	lw	gp,16(s8)
  463c04:	00401821 	move	v1,v0
  463c08:	8f828018 	lw	v0,-32744(gp)
  463c0c:	00000000 	nop
  463c10:	244232f8 	addiu	v0,v0,13048
  463c14:	8c420000 	lw	v0,0(v0)
  463c18:	00000000 	nop
  463c1c:	00621021 	addu	v0,v1,v0
  463c20:	24420013 	addiu	v0,v0,19
  463c24:	afc20018 	sw	v0,24(s8)
  463c28:	8f828018 	lw	v0,-32744(gp)
  463c2c:	00000000 	nop
  463c30:	244232f8 	addiu	v0,v0,13048
  463c34:	8c420000 	lw	v0,0(v0)
  463c38:	00000000 	nop
  463c3c:	24430014 	addiu	v1,v0,20
  463c40:	8fc20018 	lw	v0,24(s8)
  463c44:	00000000 	nop
  463c48:	0062102b 	sltu	v0,v1,v0
  463c4c:	10400016 	beqz	v0,463ca8 <shift+0x2b4>
  463c50:	00000000 	nop
  463c54:	8fc20018 	lw	v0,24(s8)
  463c58:	00000000 	nop
  463c5c:	2442ffff 	addiu	v0,v0,-1
  463c60:	80420000 	lb	v0,0(v0)
  463c64:	00000000 	nop
  463c68:	00402021 	move	a0,v0
  463c6c:	8f998914 	lw	t9,-30444(gp)
  463c70:	00000000 	nop
  463c74:	0320f809 	jalr	t9
  463c78:	00000000 	nop
  463c7c:	8fdc0010 	lw	gp,16(s8)
  463c80:	14400003 	bnez	v0,463c90 <shift+0x29c>
  463c84:	00000000 	nop
  463c88:	10000007 	b	463ca8 <shift+0x2b4>
  463c8c:	00000000 	nop
  463c90:	8fc20018 	lw	v0,24(s8)
  463c94:	00000000 	nop
  463c98:	2442ffff 	addiu	v0,v0,-1
  463c9c:	afc20018 	sw	v0,24(s8)
  463ca0:	1000ffe1 	b	463c28 <shift+0x234>
  463ca4:	00000000 	nop
		    ;
		*p = '\0';
  463ca8:	8fc20018 	lw	v0,24(s8)
  463cac:	00000000 	nop
  463cb0:	a0400000 	sb	zero,0(v0)

		sfp->lino++;
  463cb4:	8f828018 	lw	v0,-32744(gp)
  463cb8:	00000000 	nop
  463cbc:	244232f8 	addiu	v0,v0,13048
  463cc0:	8c420000 	lw	v0,0(v0)
  463cc4:	00000000 	nop
  463cc8:	8c420010 	lw	v0,16(v0)
  463ccc:	00000000 	nop
  463cd0:	24430001 	addiu	v1,v0,1
  463cd4:	8f828018 	lw	v0,-32744(gp)
  463cd8:	00000000 	nop
  463cdc:	244232f8 	addiu	v0,v0,13048
  463ce0:	8c420000 	lw	v0,0(v0)
  463ce4:	00000000 	nop
  463ce8:	ac430010 	sw	v1,16(v0)
		sor = p = sfp->buffer;
  463cec:	8f828018 	lw	v0,-32744(gp)
  463cf0:	00000000 	nop
  463cf4:	244232f8 	addiu	v0,v0,13048
  463cf8:	8c420000 	lw	v0,0(v0)
  463cfc:	00000000 	nop
  463d00:	24420014 	addiu	v0,v0,20
  463d04:	afc20018 	sw	v0,24(s8)
  463d08:	afc2001c 	sw	v0,28(s8)
	    }
	    break;	/* try again for a token */
  463d0c:	1000ff70 	b	463ad0 <shift+0xdc>
  463d10:	00000000 	nop

	case ' ':	/* whitespace */
	case '\t':
	    p++;
  463d14:	8fc20018 	lw	v0,24(s8)
  463d18:	00000000 	nop
  463d1c:	24420001 	addiu	v0,v0,1
  463d20:	afc20018 	sw	v0,24(s8)
	    break;	/* try again for a token */
  463d24:	1000ff6a 	b	463ad0 <shift+0xdc>
  463d28:	00000000 	nop

	case '"':	/* quoted token */
	case '\'':
	    if (p != sor)
  463d2c:	8fc30018 	lw	v1,24(s8)
  463d30:	8fc2001c 	lw	v0,28(s8)
  463d34:	00000000 	nop
  463d38:	1062005b 	beq	v1,v0,463ea8 <shift+0x4b4>
  463d3c:	00000000 	nop
	    {
		/* we have a quoted token: note and advance to its end */
		tok = p;
  463d40:	8fc20018 	lw	v0,24(s8)
  463d44:	8f818018 	lw	at,-32744(gp)
  463d48:	00000000 	nop
  463d4c:	24217be0 	addiu	at,at,31712
  463d50:	ac220000 	sw	v0,0(at)
		p = strchr(p+1, *p);
  463d54:	8fc20018 	lw	v0,24(s8)
  463d58:	00000000 	nop
  463d5c:	24430001 	addiu	v1,v0,1
  463d60:	8fc20018 	lw	v0,24(s8)
  463d64:	00000000 	nop
  463d68:	80420000 	lb	v0,0(v0)
  463d6c:	00602021 	move	a0,v1
  463d70:	00402821 	move	a1,v0
  463d74:	8f99813c 	lw	t9,-32452(gp)
  463d78:	00000000 	nop
  463d7c:	0320f809 	jalr	t9
  463d80:	00000000 	nop
  463d84:	8fdc0010 	lw	gp,16(s8)
  463d88:	afc20018 	sw	v0,24(s8)
		if (p == NULL)
  463d8c:	8fc20018 	lw	v0,24(s8)
  463d90:	00000000 	nop
  463d94:	1440002a 	bnez	v0,463e40 <shift+0x44c>
  463d98:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "\"%s\" line %d: unterminated string"
  463d9c:	24040003 	li	a0,3
  463da0:	8f85802c 	lw	a1,-32724(gp)
  463da4:	00000000 	nop
  463da8:	24a531b4 	addiu	a1,a1,12724
  463dac:	8f828018 	lw	v0,-32744(gp)
  463db0:	00000000 	nop
  463db4:	244232f8 	addiu	v0,v0,13048
  463db8:	8c420000 	lw	v0,0(v0)
  463dbc:	00000000 	nop
  463dc0:	8c460004 	lw	a2,4(v0)
  463dc4:	8f828018 	lw	v0,-32744(gp)
  463dc8:	00000000 	nop
  463dcc:	244232f8 	addiu	v0,v0,13048
  463dd0:	8c420000 	lw	v0,0(v0)
  463dd4:	00000000 	nop
  463dd8:	8c470010 	lw	a3,16(v0)
  463ddc:	8f998c48 	lw	t9,-29624(gp)
  463de0:	00000000 	nop
  463de4:	0320f809 	jalr	t9
  463de8:	00000000 	nop
  463dec:	8fdc0010 	lw	gp,16(s8)
  463df0:	00000000 	nop
			, sfp->filename, sfp->lino);
		    p = tok + strlen(tok);
  463df4:	8f848018 	lw	a0,-32744(gp)
  463df8:	00000000 	nop
  463dfc:	24847be0 	addiu	a0,a0,31712
  463e00:	8c840000 	lw	a0,0(a0)
  463e04:	8f998188 	lw	t9,-32376(gp)
  463e08:	00000000 	nop
  463e0c:	0320f809 	jalr	t9
  463e10:	00000000 	nop
  463e14:	8fdc0010 	lw	gp,16(s8)
  463e18:	00401821 	move	v1,v0
  463e1c:	8f828018 	lw	v0,-32744(gp)
  463e20:	00000000 	nop
  463e24:	24427be0 	addiu	v0,v0,31712
  463e28:	8c420000 	lw	v0,0(v0)
  463e2c:	00000000 	nop
  463e30:	00431021 	addu	v0,v0,v1
  463e34:	afc20018 	sw	v0,24(s8)
  463e38:	10000005 	b	463e50 <shift+0x45c>
  463e3c:	00000000 	nop
		}
		else
		{
		    p++;	/* include delimiter in token */
  463e40:	8fc20018 	lw	v0,24(s8)
  463e44:	00000000 	nop
  463e48:	24420001 	addiu	v0,v0,1
  463e4c:	afc20018 	sw	v0,24(s8)
		}

		/* remember token delimiter and replace with '\0' */
		sfp->under = *p;
  463e50:	8fc20018 	lw	v0,24(s8)
  463e54:	00000000 	nop
  463e58:	90430000 	lbu	v1,0(v0)
  463e5c:	8f828018 	lw	v0,-32744(gp)
  463e60:	00000000 	nop
  463e64:	244232f8 	addiu	v0,v0,13048
  463e68:	8c420000 	lw	v0,0(v0)
  463e6c:	00000000 	nop
  463e70:	a043081c 	sb	v1,2076(v0)
		*p = '\0';
  463e74:	8fc20018 	lw	v0,24(s8)
  463e78:	00000000 	nop
  463e7c:	a0400000 	sb	zero,0(v0)
		sfp->cur = p;
  463e80:	8fc30018 	lw	v1,24(s8)
  463e84:	8f828018 	lw	v0,-32744(gp)
  463e88:	00000000 	nop
  463e8c:	244232f8 	addiu	v0,v0,13048
  463e90:	8c420000 	lw	v0,0(v0)
  463e94:	00000000 	nop
  463e98:	ac430818 	sw	v1,2072(v0)
		return TRUE;
  463e9c:	24020001 	li	v0,1
  463ea0:	10000085 	b	4640b8 <shift+0x6c4>
  463ea4:	00000000 	nop
	    }
	    /* FALL THROUGH */
	default:
	    if (p != sor)
  463ea8:	8fc30018 	lw	v1,24(s8)
  463eac:	8fc2001c 	lw	v0,28(s8)
  463eb0:	00000000 	nop
  463eb4:	10620064 	beq	v1,v0,464048 <shift+0x654>
  463eb8:	00000000 	nop
	    {
		/* we seem to have a token: note and advance to its end */
		tok = p;
  463ebc:	8fc20018 	lw	v0,24(s8)
  463ec0:	8f818018 	lw	at,-32744(gp)
  463ec4:	00000000 	nop
  463ec8:	24217be0 	addiu	at,at,31712
  463ecc:	ac220000 	sw	v0,0(at)

		if (p[0] == '0' && p[1] == 't')
  463ed0:	8fc20018 	lw	v0,24(s8)
  463ed4:	00000000 	nop
  463ed8:	80430000 	lb	v1,0(v0)
  463edc:	24020030 	li	v0,48
  463ee0:	14620015 	bne	v1,v0,463f38 <shift+0x544>
  463ee4:	00000000 	nop
  463ee8:	8fc20018 	lw	v0,24(s8)
  463eec:	00000000 	nop
  463ef0:	24420001 	addiu	v0,v0,1
  463ef4:	80430000 	lb	v1,0(v0)
  463ef8:	24020074 	li	v0,116
  463efc:	1462000e 	bne	v1,v0,463f38 <shift+0x544>
  463f00:	00000000 	nop
		{
		    /* 0t... token goes to end of line */
		    p += strlen(p);
  463f04:	8fc40018 	lw	a0,24(s8)
  463f08:	8f998188 	lw	t9,-32376(gp)
  463f0c:	00000000 	nop
  463f10:	0320f809 	jalr	t9
  463f14:	00000000 	nop
  463f18:	8fdc0010 	lw	gp,16(s8)
  463f1c:	00401821 	move	v1,v0
  463f20:	8fc20018 	lw	v0,24(s8)
  463f24:	00000000 	nop
  463f28:	00431021 	addu	v0,v0,v1
  463f2c:	afc20018 	sw	v0,24(s8)
  463f30:	1000002f 	b	463ff0 <shift+0x5fc>
  463f34:	00000000 	nop
		}
		else
		{
		    /* "ordinary" token: up to whitespace or end of line */
		    do {
			p++;
  463f38:	8fc20018 	lw	v0,24(s8)
  463f3c:	00000000 	nop
  463f40:	24420001 	addiu	v0,v0,1
  463f44:	afc20018 	sw	v0,24(s8)
		    } while (*p != '\0' && !isspace(*p))
  463f48:	8fc20018 	lw	v0,24(s8)
  463f4c:	00000000 	nop
  463f50:	80420000 	lb	v0,0(v0)
  463f54:	00000000 	nop
  463f58:	1040000f 	beqz	v0,463f98 <shift+0x5a4>
  463f5c:	00000000 	nop
  463f60:	8fc20018 	lw	v0,24(s8)
  463f64:	00000000 	nop
  463f68:	80420000 	lb	v0,0(v0)
  463f6c:	00000000 	nop
  463f70:	00402021 	move	a0,v0
  463f74:	8f998914 	lw	t9,-30444(gp)
  463f78:	00000000 	nop
  463f7c:	0320f809 	jalr	t9
  463f80:	00000000 	nop
  463f84:	8fdc0010 	lw	gp,16(s8)
  463f88:	14400003 	bnez	v0,463f98 <shift+0x5a4>
  463f8c:	00000000 	nop
  463f90:	1000ffe9 	b	463f38 <shift+0x544>
  463f94:	00000000 	nop
			;

		    /* fudge to separate ':' from a preceding adjacent token */
		    if (p-1 > tok && p[-1] == ':')
  463f98:	8fc20018 	lw	v0,24(s8)
  463f9c:	00000000 	nop
  463fa0:	2443ffff 	addiu	v1,v0,-1
  463fa4:	8f828018 	lw	v0,-32744(gp)
  463fa8:	00000000 	nop
  463fac:	24427be0 	addiu	v0,v0,31712
  463fb0:	8c420000 	lw	v0,0(v0)
  463fb4:	00000000 	nop
  463fb8:	0043102b 	sltu	v0,v0,v1
  463fbc:	1040000c 	beqz	v0,463ff0 <shift+0x5fc>
  463fc0:	00000000 	nop
  463fc4:	8fc20018 	lw	v0,24(s8)
  463fc8:	00000000 	nop
  463fcc:	2442ffff 	addiu	v0,v0,-1
  463fd0:	80430000 	lb	v1,0(v0)
  463fd4:	2402003a 	li	v0,58
  463fd8:	14620005 	bne	v1,v0,463ff0 <shift+0x5fc>
  463fdc:	00000000 	nop
			p--;
  463fe0:	8fc20018 	lw	v0,24(s8)
  463fe4:	00000000 	nop
  463fe8:	2442ffff 	addiu	v0,v0,-1
  463fec:	afc20018 	sw	v0,24(s8)
		}

		/* remember token delimiter and replace with '\0' */
		sfp->under = *p;
  463ff0:	8fc20018 	lw	v0,24(s8)
  463ff4:	00000000 	nop
  463ff8:	90430000 	lbu	v1,0(v0)
  463ffc:	8f828018 	lw	v0,-32744(gp)
  464000:	00000000 	nop
  464004:	244232f8 	addiu	v0,v0,13048
  464008:	8c420000 	lw	v0,0(v0)
  46400c:	00000000 	nop
  464010:	a043081c 	sb	v1,2076(v0)
		*p = '\0';
  464014:	8fc20018 	lw	v0,24(s8)
  464018:	00000000 	nop
  46401c:	a0400000 	sb	zero,0(v0)
		sfp->cur = p;
  464020:	8fc30018 	lw	v1,24(s8)
  464024:	8f828018 	lw	v0,-32744(gp)
  464028:	00000000 	nop
  46402c:	244232f8 	addiu	v0,v0,13048
  464030:	8c420000 	lw	v0,0(v0)
  464034:	00000000 	nop
  464038:	ac430818 	sw	v1,2072(v0)
		return TRUE;
  46403c:	24020001 	li	v0,1
  464040:	1000001d 	b	4640b8 <shift+0x6c4>
  464044:	00000000 	nop
	    }

	    /* we have a start-of-record: return it, deferring "real" token */
	    sfp->bdry = B_record;
  464048:	24030001 	li	v1,1
  46404c:	8f828018 	lw	v0,-32744(gp)
  464050:	00000000 	nop
  464054:	244232f8 	addiu	v0,v0,13048
  464058:	8c420000 	lw	v0,0(v0)
  46405c:	00000000 	nop
  464060:	ac43000c 	sw	v1,12(v0)
	    tok = NULL;
  464064:	8f818018 	lw	at,-32744(gp)
  464068:	00000000 	nop
  46406c:	24217be0 	addiu	at,at,31712
  464070:	ac200000 	sw	zero,0(at)
	    sfp->under = *p;
  464074:	8fc20018 	lw	v0,24(s8)
  464078:	00000000 	nop
  46407c:	90430000 	lbu	v1,0(v0)
  464080:	8f828018 	lw	v0,-32744(gp)
  464084:	00000000 	nop
  464088:	244232f8 	addiu	v0,v0,13048
  46408c:	8c420000 	lw	v0,0(v0)
  464090:	00000000 	nop
  464094:	a043081c 	sb	v1,2076(v0)
	    sfp->cur = p;
  464098:	8fc30018 	lw	v1,24(s8)
  46409c:	8f828018 	lw	v0,-32744(gp)
  4640a0:	00000000 	nop
  4640a4:	244232f8 	addiu	v0,v0,13048
  4640a8:	8c420000 	lw	v0,0(v0)
  4640ac:	00000000 	nop
  4640b0:	ac430818 	sw	v1,2072(v0)
	    return FALSE;
  4640b4:	00001021 	move	v0,zero
	}
    }
}
  4640b8:	03c0e821 	move	sp,s8
  4640bc:	8fbf0030 	lw	ra,48(sp)
  4640c0:	8fbe002c 	lw	s8,44(sp)
  4640c4:	27bd0038 	addiu	sp,sp,56
  4640c8:	03e00008 	jr	ra
  4640cc:	00000000 	nop

004640d0 <flushline>:
  4640d0:	3c1c0fbb 	lui	gp,0xfbb
  4640d4:	279c88a0 	addiu	gp,gp,-30560
  4640d8:	0399e021 	addu	gp,gp,t9
  4640dc:	27bdffd0 	addiu	sp,sp,-48
  4640e0:	afbc0018 	sw	gp,24(sp)
  4640e4:	afbf0028 	sw	ra,40(sp)
  4640e8:	afbe0024 	sw	s8,36(sp)
  4640ec:	afbc0020 	sw	gp,32(sp)
  4640f0:	03a0f021 	move	s8,sp
  4640f4:	afc40030 	sw	a0,48(s8)

/* ensures we are at a Record (or File) boundary, optionally warning if not */

static bool
flushline(const char *m)
{
    if (sfp->bdry != B_none)
  4640f8:	8f828018 	lw	v0,-32744(gp)
  4640fc:	00000000 	nop
  464100:	244232f8 	addiu	v0,v0,13048
  464104:	8c420000 	lw	v0,0(v0)
  464108:	00000000 	nop
  46410c:	8c42000c 	lw	v0,12(v0)
  464110:	00000000 	nop
  464114:	10400004 	beqz	v0,464128 <flushline+0x58>
  464118:	00000000 	nop
    {
	return TRUE;
  46411c:	24020001 	li	v0,1
  464120:	10000028 	b	4641c4 <flushline+0xf4>
  464124:	00000000 	nop
    }
    else
    {
	if (m != NULL)
  464128:	8fc20030 	lw	v0,48(s8)
  46412c:	00000000 	nop
  464130:	10400019 	beqz	v0,464198 <flushline+0xc8>
  464134:	00000000 	nop
	    loglog(RC_LOG_SERIOUS, "\"%s\" line %d: %s", sfp->filename, sfp->lino, m);
  464138:	8fc20030 	lw	v0,48(s8)
  46413c:	00000000 	nop
  464140:	afa20010 	sw	v0,16(sp)
  464144:	24040003 	li	a0,3
  464148:	8f85802c 	lw	a1,-32724(gp)
  46414c:	00000000 	nop
  464150:	24a53278 	addiu	a1,a1,12920
  464154:	8f828018 	lw	v0,-32744(gp)
  464158:	00000000 	nop
  46415c:	244232f8 	addiu	v0,v0,13048
  464160:	8c420000 	lw	v0,0(v0)
  464164:	00000000 	nop
  464168:	8c460004 	lw	a2,4(v0)
  46416c:	8f828018 	lw	v0,-32744(gp)
  464170:	00000000 	nop
  464174:	244232f8 	addiu	v0,v0,13048
  464178:	8c420000 	lw	v0,0(v0)
  46417c:	00000000 	nop
  464180:	8c470010 	lw	a3,16(v0)
  464184:	8f998c48 	lw	t9,-29624(gp)
  464188:	00000000 	nop
  46418c:	0320f809 	jalr	t9
  464190:	00000000 	nop
  464194:	8fdc0018 	lw	gp,24(s8)
  464198:	00000000 	nop
	do ; while (shift());
  46419c:	8f99803c 	lw	t9,-32708(gp)
  4641a0:	00000000 	nop
  4641a4:	273939f4 	addiu	t9,t9,14836
  4641a8:	00000000 	nop
  4641ac:	0320f809 	jalr	t9
  4641b0:	00000000 	nop
  4641b4:	8fdc0018 	lw	gp,24(s8)
  4641b8:	1440fff8 	bnez	v0,46419c <flushline+0xcc>
  4641bc:	00000000 	nop
	return FALSE;
  4641c0:	00001021 	move	v0,zero
    }
}
  4641c4:	03c0e821 	move	sp,s8
  4641c8:	8fbf0028 	lw	ra,40(sp)
  4641cc:	8fbe0024 	lw	s8,36(sp)
  4641d0:	27bd0030 	addiu	sp,sp,48
  4641d4:	03e00008 	jr	ra
  4641d8:	00000000 	nop

004641dc <process_psk_secret>:
  4641dc:	3c1c0fbb 	lui	gp,0xfbb
  4641e0:	279c8794 	addiu	gp,gp,-30828
  4641e4:	0399e021 	addu	gp,gp,t9
  4641e8:	27bdf7b8 	addiu	sp,sp,-2120
  4641ec:	afbc0020 	sw	gp,32(sp)
  4641f0:	afbf0844 	sw	ra,2116(sp)
  4641f4:	afbe0840 	sw	s8,2112(sp)
  4641f8:	afbc083c 	sw	gp,2108(sp)
  4641fc:	afb00838 	sw	s0,2104(sp)
  464200:	03a0f021 	move	s8,sp
  464204:	afc40848 	sw	a0,2120(s8)

/* parse PSK from file */
static err_t
process_psk_secret(chunk_t *psk)
{
    err_t ugh = NULL;
  464208:	afc00028 	sw	zero,40(s8)

    if (*tok == '"' || *tok == '\'')
  46420c:	8f828018 	lw	v0,-32744(gp)
  464210:	00000000 	nop
  464214:	24427be0 	addiu	v0,v0,31712
  464218:	8c420000 	lw	v0,0(v0)
  46421c:	00000000 	nop
  464220:	80430000 	lb	v1,0(v0)
  464224:	24020022 	li	v0,34
  464228:	1062000c 	beq	v1,v0,46425c <process_psk_secret+0x80>
  46422c:	00000000 	nop
  464230:	8f828018 	lw	v0,-32744(gp)
  464234:	00000000 	nop
  464238:	24427be0 	addiu	v0,v0,31712
  46423c:	8c420000 	lw	v0,0(v0)
  464240:	00000000 	nop
  464244:	80430000 	lb	v1,0(v0)
  464248:	24020027 	li	v0,39
  46424c:	10620003 	beq	v1,v0,46425c <process_psk_secret+0x80>
  464250:	00000000 	nop
  464254:	1000002c 	b	464308 <process_psk_secret+0x12c>
  464258:	00000000 	nop
    {
	clonetochunk(*psk, tok+1, sfp->cur - tok  - 2, "PSK");
  46425c:	8fd00848 	lw	s0,2120(s8)
  464260:	8f828018 	lw	v0,-32744(gp)
  464264:	00000000 	nop
  464268:	24427be0 	addiu	v0,v0,31712
  46426c:	8c420000 	lw	v0,0(v0)
  464270:	00000000 	nop
  464274:	24440001 	addiu	a0,v0,1
  464278:	8f828018 	lw	v0,-32744(gp)
  46427c:	00000000 	nop
  464280:	244232f8 	addiu	v0,v0,13048
  464284:	8c420000 	lw	v0,0(v0)
  464288:	00000000 	nop
  46428c:	8c430818 	lw	v1,2072(v0)
  464290:	8f828018 	lw	v0,-32744(gp)
  464294:	00000000 	nop
  464298:	24427be0 	addiu	v0,v0,31712
  46429c:	8c420000 	lw	v0,0(v0)
  4642a0:	00000000 	nop
  4642a4:	00621023 	subu	v0,v1,v0
  4642a8:	2442fffe 	addiu	v0,v0,-2
  4642ac:	00401821 	move	v1,v0
  4642b0:	8fc20848 	lw	v0,2120(s8)
  4642b4:	00000000 	nop
  4642b8:	ac430004 	sw	v1,4(v0)
  4642bc:	00602821 	move	a1,v1
  4642c0:	8f86802c 	lw	a2,-32724(gp)
  4642c4:	00000000 	nop
  4642c8:	24c6328c 	addiu	a2,a2,12940
  4642cc:	8f998c04 	lw	t9,-29692(gp)
  4642d0:	00000000 	nop
  4642d4:	0320f809 	jalr	t9
  4642d8:	00000000 	nop
  4642dc:	8fdc0020 	lw	gp,32(s8)
  4642e0:	ae020000 	sw	v0,0(s0)
	(void) shift();
  4642e4:	8f99803c 	lw	t9,-32708(gp)
  4642e8:	00000000 	nop
  4642ec:	273939f4 	addiu	t9,t9,14836
  4642f0:	00000000 	nop
  4642f4:	0320f809 	jalr	t9
  4642f8:	00000000 	nop
  4642fc:	8fdc0020 	lw	gp,32(s8)
  464300:	1000004f 	b	464440 <process_psk_secret+0x264>
  464304:	00000000 	nop
    }
    else
    {
	char buf[2048];	/* limit on size of binary representation of key */
	size_t sz;

	ugh = ttodatav(tok, sfp->cur - tok, 0, buf, sizeof(buf), &sz
  464308:	8f828018 	lw	v0,-32744(gp)
  46430c:	00000000 	nop
  464310:	244232f8 	addiu	v0,v0,13048
  464314:	8c420000 	lw	v0,0(v0)
  464318:	00000000 	nop
  46431c:	8c430818 	lw	v1,2072(v0)
  464320:	8f828018 	lw	v0,-32744(gp)
  464324:	00000000 	nop
  464328:	24427be0 	addiu	v0,v0,31712
  46432c:	8c420000 	lw	v0,0(v0)
  464330:	00000000 	nop
  464334:	00621823 	subu	v1,v1,v0
  464338:	24020800 	li	v0,2048
  46433c:	afa20010 	sw	v0,16(sp)
  464340:	27c20830 	addiu	v0,s8,2096
  464344:	afa20014 	sw	v0,20(sp)
  464348:	8f8288e4 	lw	v0,-30492(gp)
  46434c:	00000000 	nop
  464350:	afa20018 	sw	v0,24(sp)
  464354:	24020400 	li	v0,1024
  464358:	afa2001c 	sw	v0,28(sp)
  46435c:	8f848018 	lw	a0,-32744(gp)
  464360:	00000000 	nop
  464364:	24847be0 	addiu	a0,a0,31712
  464368:	8c840000 	lw	a0,0(a0)
  46436c:	00602821 	move	a1,v1
  464370:	00003021 	move	a2,zero
  464374:	27c70030 	addiu	a3,s8,48
  464378:	8f998998 	lw	t9,-30312(gp)
  46437c:	00000000 	nop
  464380:	0320f809 	jalr	t9
  464384:	00000000 	nop
  464388:	8fdc0020 	lw	gp,32(s8)
  46438c:	afc20028 	sw	v0,40(s8)
	    , diag_space, sizeof(diag_space));
	if (ugh != NULL)
  464390:	8fc20028 	lw	v0,40(s8)
  464394:	00000000 	nop
  464398:	10400011 	beqz	v0,4643e0 <process_psk_secret+0x204>
  46439c:	00000000 	nop
	{
	    /* ttodata didn't like PSK data */
	    ugh = builddiag("PSK data malformed (%s): %s", ugh, tok);
  4643a0:	8f84802c 	lw	a0,-32724(gp)
  4643a4:	00000000 	nop
  4643a8:	24843290 	addiu	a0,a0,12944
  4643ac:	8fc50028 	lw	a1,40(s8)
  4643b0:	8f868018 	lw	a2,-32744(gp)
  4643b4:	00000000 	nop
  4643b8:	24c67be0 	addiu	a2,a2,31712
  4643bc:	8cc60000 	lw	a2,0(a2)
  4643c0:	8f9986dc 	lw	t9,-31012(gp)
  4643c4:	00000000 	nop
  4643c8:	0320f809 	jalr	t9
  4643cc:	00000000 	nop
  4643d0:	8fdc0020 	lw	gp,32(s8)
  4643d4:	afc20028 	sw	v0,40(s8)
  4643d8:	10000019 	b	464440 <process_psk_secret+0x264>
  4643dc:	00000000 	nop
	}
	else
	{
	    clonetochunk(*psk, buf, sz, "PSK");
  4643e0:	8fd00848 	lw	s0,2120(s8)
  4643e4:	8fc30830 	lw	v1,2096(s8)
  4643e8:	8fc20848 	lw	v0,2120(s8)
  4643ec:	00000000 	nop
  4643f0:	ac430004 	sw	v1,4(v0)
  4643f4:	27c40030 	addiu	a0,s8,48
  4643f8:	00602821 	move	a1,v1
  4643fc:	8f86802c 	lw	a2,-32724(gp)
  464400:	00000000 	nop
  464404:	24c6328c 	addiu	a2,a2,12940
  464408:	8f998c04 	lw	t9,-29692(gp)
  46440c:	00000000 	nop
  464410:	0320f809 	jalr	t9
  464414:	00000000 	nop
  464418:	8fdc0020 	lw	gp,32(s8)
  46441c:	ae020000 	sw	v0,0(s0)
	    (void) shift();
  464420:	8f99803c 	lw	t9,-32708(gp)
  464424:	00000000 	nop
  464428:	273939f4 	addiu	t9,t9,14836
  46442c:	00000000 	nop
  464430:	0320f809 	jalr	t9
  464434:	00000000 	nop
  464438:	8fdc0020 	lw	gp,32(s8)
  46443c:	00000000 	nop
	}
    }
    return ugh;
  464440:	8fc20028 	lw	v0,40(s8)
  464444:	00000000 	nop
}
  464448:	03c0e821 	move	sp,s8
  46444c:	8fbf0844 	lw	ra,2116(sp)
  464450:	8fbe0840 	lw	s8,2112(sp)
  464454:	8fb00838 	lw	s0,2104(sp)
  464458:	27bd0848 	addiu	sp,sp,2120
  46445c:	03e00008 	jr	ra
  464460:	00000000 	nop

00464464 <process_rsa_secret>:
  464464:	3c1c0fbb 	lui	gp,0xfbb
  464468:	279c850c 	addiu	gp,gp,-31476
  46446c:	0399e021 	addu	gp,gp,t9
  464470:	27bdef98 	addiu	sp,sp,-4200
  464474:	afbc0020 	sw	gp,32(sp)
  464478:	afbf1060 	sw	ra,4192(sp)
  46447c:	afbe105c 	sw	s8,4188(sp)
  464480:	afbc1058 	sw	gp,4184(sp)
  464484:	03a0f021 	move	s8,sp
  464488:	afc41068 	sw	a0,4200(s8)

/* Parse fields of RSA private key.
 * A braced list of keyword and value pairs.
 * At the moment, each field is required, in order.
 * The fields come from BIND 8.2's representation
 */
static err_t
process_rsa_secret(struct RSA_private_key *rsak)
{
    char buf[2048];	/* limit on size of binary representation of key */
    const struct fld *p;

    /* save bytes of Modulus and PublicExponent for keyid calculation */
    unsigned char ebytes[sizeof(buf)];
    unsigned char *eb_next = ebytes;
  46448c:	27c20830 	addiu	v0,s8,2096
  464490:	afc21030 	sw	v0,4144(s8)
    chunk_t pub_bytes[2];
    chunk_t *pb_next = &pub_bytes[0];
  464494:	27c21038 	addiu	v0,s8,4152
  464498:	afc21048 	sw	v0,4168(s8)

    for (p = RSA_private_field; p < &RSA_private_field[elemsof(RSA_private_field)]; p++)
  46449c:	8f828018 	lw	v0,-32744(gp)
  4644a0:	00000000 	nop
  4644a4:	244232b0 	addiu	v0,v0,12976
  4644a8:	00000000 	nop
  4644ac:	afc20828 	sw	v0,2088(s8)
  4644b0:	8fc20828 	lw	v0,2088(s8)
  4644b4:	8f838018 	lw	v1,-32744(gp)
  4644b8:	00000000 	nop
  4644bc:	246332f0 	addiu	v1,v1,13040
  4644c0:	0043102b 	sltu	v0,v0,v1
  4644c4:	14400003 	bnez	v0,4644d4 <process_rsa_secret+0x70>
  4644c8:	00000000 	nop
  4644cc:	100000c9 	b	4647f4 <process_rsa_secret+0x390>
  4644d0:	00000000 	nop
    {
	size_t sz;
	err_t ugh;

	if (!shift())
  4644d4:	8f99803c 	lw	t9,-32708(gp)
  4644d8:	00000000 	nop
  4644dc:	273939f4 	addiu	t9,t9,14836
  4644e0:	00000000 	nop
  4644e4:	0320f809 	jalr	t9
  4644e8:	00000000 	nop
  4644ec:	8fdc0020 	lw	gp,32(s8)
  4644f0:	14400006 	bnez	v0,46450c <process_rsa_secret+0xa8>
  4644f4:	00000000 	nop
	{
	    return "premature end of RSA key";
  4644f8:	8f82802c 	lw	v0,-32724(gp)
  4644fc:	00000000 	nop
  464500:	244232ac 	addiu	v0,v0,12972
  464504:	10000114 	b	464958 <process_rsa_secret+0x4f4>
  464508:	00000000 	nop
	}
	else if (!tokeqword(p->name))
  46450c:	8f848018 	lw	a0,-32744(gp)
  464510:	00000000 	nop
  464514:	24847be0 	addiu	a0,a0,31712
  464518:	8c840000 	lw	a0,0(a0)
  46451c:	8fc20828 	lw	v0,2088(s8)
  464520:	00000000 	nop
  464524:	8c450000 	lw	a1,0(v0)
  464528:	8f998614 	lw	t9,-31212(gp)
  46452c:	00000000 	nop
  464530:	0320f809 	jalr	t9
  464534:	00000000 	nop
  464538:	8fdc0020 	lw	gp,32(s8)
  46453c:	1040000e 	beqz	v0,464578 <process_rsa_secret+0x114>
  464540:	00000000 	nop
	{
	    return builddiag("%s keyword not found where expected in RSA key"
  464544:	8f84802c 	lw	a0,-32724(gp)
  464548:	00000000 	nop
  46454c:	248432c8 	addiu	a0,a0,13000
  464550:	8fc20828 	lw	v0,2088(s8)
  464554:	00000000 	nop
  464558:	8c450000 	lw	a1,0(v0)
  46455c:	8f9986dc 	lw	t9,-31012(gp)
  464560:	00000000 	nop
  464564:	0320f809 	jalr	t9
  464568:	00000000 	nop
  46456c:	8fdc0020 	lw	gp,32(s8)
  464570:	100000f9 	b	464958 <process_rsa_secret+0x4f4>
  464574:	00000000 	nop
		, p->name);
	}
	else if (!(shift()
	&& (!tokeq(":") || shift())))	/* ignore optional ":" */
  464578:	8f99803c 	lw	t9,-32708(gp)
  46457c:	00000000 	nop
  464580:	273939f4 	addiu	t9,t9,14836
  464584:	00000000 	nop
  464588:	0320f809 	jalr	t9
  46458c:	00000000 	nop
  464590:	8fdc0020 	lw	gp,32(s8)
  464594:	10400018 	beqz	v0,4645f8 <process_rsa_secret+0x194>
  464598:	00000000 	nop
  46459c:	8f848018 	lw	a0,-32744(gp)
  4645a0:	00000000 	nop
  4645a4:	24847be0 	addiu	a0,a0,31712
  4645a8:	8c840000 	lw	a0,0(a0)
  4645ac:	8f85802c 	lw	a1,-32724(gp)
  4645b0:	00000000 	nop
  4645b4:	24a532f8 	addiu	a1,a1,13048
  4645b8:	8f998428 	lw	t9,-31704(gp)
  4645bc:	00000000 	nop
  4645c0:	0320f809 	jalr	t9
  4645c4:	00000000 	nop
  4645c8:	8fdc0020 	lw	gp,32(s8)
  4645cc:	1440000f 	bnez	v0,46460c <process_rsa_secret+0x1a8>
  4645d0:	00000000 	nop
  4645d4:	8f99803c 	lw	t9,-32708(gp)
  4645d8:	00000000 	nop
  4645dc:	273939f4 	addiu	t9,t9,14836
  4645e0:	00000000 	nop
  4645e4:	0320f809 	jalr	t9
  4645e8:	00000000 	nop
  4645ec:	8fdc0020 	lw	gp,32(s8)
  4645f0:	14400006 	bnez	v0,46460c <process_rsa_secret+0x1a8>
  4645f4:	00000000 	nop
	{
	    return "premature end of RSA key";
  4645f8:	8f82802c 	lw	v0,-32724(gp)
  4645fc:	00000000 	nop
  464600:	244232ac 	addiu	v0,v0,12972
  464604:	100000d4 	b	464958 <process_rsa_secret+0x4f4>
  464608:	00000000 	nop
	}
	else if (NULL != (ugh = ttodatav(tok, sfp->cur - tok
	, 0, buf, sizeof(buf), &sz, diag_space, sizeof(diag_space))))
  46460c:	8f828018 	lw	v0,-32744(gp)
  464610:	00000000 	nop
  464614:	244232f8 	addiu	v0,v0,13048
  464618:	8c420000 	lw	v0,0(v0)
  46461c:	00000000 	nop
  464620:	8c430818 	lw	v1,2072(v0)
  464624:	8f828018 	lw	v0,-32744(gp)
  464628:	00000000 	nop
  46462c:	24427be0 	addiu	v0,v0,31712
  464630:	8c420000 	lw	v0,0(v0)
  464634:	00000000 	nop
  464638:	00621823 	subu	v1,v1,v0
  46463c:	24020800 	li	v0,2048
  464640:	afa20010 	sw	v0,16(sp)
  464644:	27c2104c 	addiu	v0,s8,4172
  464648:	afa20014 	sw	v0,20(sp)
  46464c:	8f8288e4 	lw	v0,-30492(gp)
  464650:	00000000 	nop
  464654:	afa20018 	sw	v0,24(sp)
  464658:	24020400 	li	v0,1024
  46465c:	afa2001c 	sw	v0,28(sp)
  464660:	8f848018 	lw	a0,-32744(gp)
  464664:	00000000 	nop
  464668:	24847be0 	addiu	a0,a0,31712
  46466c:	8c840000 	lw	a0,0(a0)
  464670:	00602821 	move	a1,v1
  464674:	00003021 	move	a2,zero
  464678:	27c70028 	addiu	a3,s8,40
  46467c:	8f998998 	lw	t9,-30312(gp)
  464680:	00000000 	nop
  464684:	0320f809 	jalr	t9
  464688:	00000000 	nop
  46468c:	8fdc0020 	lw	gp,32(s8)
  464690:	afc21050 	sw	v0,4176(s8)
  464694:	8fc21050 	lw	v0,4176(s8)
  464698:	00000000 	nop
  46469c:	10400010 	beqz	v0,4646e0 <process_rsa_secret+0x27c>
  4646a0:	00000000 	nop
	{
	    /* in RSA key, ttodata didn't like */
	    return builddiag("RSA data malformed (%s): %s", ugh, tok);
  4646a4:	8f84802c 	lw	a0,-32724(gp)
  4646a8:	00000000 	nop
  4646ac:	248432fc 	addiu	a0,a0,13052
  4646b0:	8fc51050 	lw	a1,4176(s8)
  4646b4:	8f868018 	lw	a2,-32744(gp)
  4646b8:	00000000 	nop
  4646bc:	24c67be0 	addiu	a2,a2,31712
  4646c0:	8cc60000 	lw	a2,0(a2)
  4646c4:	8f9986dc 	lw	t9,-31012(gp)
  4646c8:	00000000 	nop
  4646cc:	0320f809 	jalr	t9
  4646d0:	00000000 	nop
  4646d4:	8fdc0020 	lw	gp,32(s8)
  4646d8:	1000009f 	b	464958 <process_rsa_secret+0x4f4>
  4646dc:	00000000 	nop
	}
	else
	{
	    MP_INT *n = (MP_INT *) ((char *)rsak + p->offset);
  4646e0:	8fc20828 	lw	v0,2088(s8)
  4646e4:	00000000 	nop
  4646e8:	8c430004 	lw	v1,4(v0)
  4646ec:	8fc21068 	lw	v0,4200(s8)
  4646f0:	00000000 	nop
  4646f4:	00431021 	addu	v0,v0,v1
  4646f8:	afc21054 	sw	v0,4180(s8)

	    n_to_mpz(n, buf, sz);
  4646fc:	8fc41054 	lw	a0,4180(s8)
  464700:	27c50028 	addiu	a1,s8,40
  464704:	8fc6104c 	lw	a2,4172(s8)
  464708:	8f998358 	lw	t9,-31912(gp)
  46470c:	00000000 	nop
  464710:	0320f809 	jalr	t9
  464714:	00000000 	nop
  464718:	8fdc0020 	lw	gp,32(s8)
  46471c:	00000000 	nop
	    if (pb_next < &pub_bytes[elemsof(pub_bytes)])
  464720:	27c21038 	addiu	v0,s8,4152
  464724:	24430010 	addiu	v1,v0,16
  464728:	8fc21048 	lw	v0,4168(s8)
  46472c:	00000000 	nop
  464730:	0043102b 	sltu	v0,v0,v1
  464734:	10400029 	beqz	v0,4647dc <process_rsa_secret+0x378>
  464738:	00000000 	nop
	    {
		if (eb_next - ebytes + sz > sizeof(ebytes))
  46473c:	8fc31030 	lw	v1,4144(s8)
  464740:	27c20830 	addiu	v0,s8,2096
  464744:	00621823 	subu	v1,v1,v0
  464748:	8fc2104c 	lw	v0,4172(s8)
  46474c:	00000000 	nop
  464750:	00621021 	addu	v0,v1,v0
  464754:	2c420801 	sltiu	v0,v0,2049
  464758:	14400006 	bnez	v0,464774 <process_rsa_secret+0x310>
  46475c:	00000000 	nop
		    return "public key takes too many bytes";
  464760:	8f82802c 	lw	v0,-32724(gp)
  464764:	00000000 	nop
  464768:	24423318 	addiu	v0,v0,13080
  46476c:	1000007a 	b	464958 <process_rsa_secret+0x4f4>
  464770:	00000000 	nop

		setchunk(*pb_next, eb_next, sz);
  464774:	8fc31030 	lw	v1,4144(s8)
  464778:	8fc21048 	lw	v0,4168(s8)
  46477c:	00000000 	nop
  464780:	ac430000 	sw	v1,0(v0)
  464784:	8fc3104c 	lw	v1,4172(s8)
  464788:	8fc21048 	lw	v0,4168(s8)
  46478c:	00000000 	nop
  464790:	ac430004 	sw	v1,4(v0)
		memcpy(eb_next, buf, sz);
  464794:	8fc41030 	lw	a0,4144(s8)
  464798:	27c50028 	addiu	a1,s8,40
  46479c:	8fc6104c 	lw	a2,4172(s8)
  4647a0:	8f998a30 	lw	t9,-30160(gp)
  4647a4:	00000000 	nop
  4647a8:	0320f809 	jalr	t9
  4647ac:	00000000 	nop
  4647b0:	8fdc0020 	lw	gp,32(s8)
  4647b4:	00000000 	nop
		eb_next += sz;
  4647b8:	8fc31030 	lw	v1,4144(s8)
  4647bc:	8fc2104c 	lw	v0,4172(s8)
  4647c0:	00000000 	nop
  4647c4:	00621021 	addu	v0,v1,v0
  4647c8:	afc21030 	sw	v0,4144(s8)
		pb_next++;
  4647cc:	8fc21048 	lw	v0,4168(s8)
  4647d0:	00000000 	nop
  4647d4:	24420008 	addiu	v0,v0,8
  4647d8:	afc21048 	sw	v0,4168(s8)
  4647dc:	8fc20828 	lw	v0,2088(s8)
  4647e0:	00000000 	nop
  4647e4:	24420008 	addiu	v0,v0,8
  4647e8:	afc20828 	sw	v0,2088(s8)
  4647ec:	1000ff30 	b	4644b0 <process_rsa_secret+0x4c>
  4647f0:	00000000 	nop
	    }
#if 0	/* debugging info that compromises security */
	    {
		size_t sz = mpz_sizeinbase(n, 16);
		char buf[2048/4 + 2];	/* ought to be big enough */

		passert(sz <= sizeof(buf));
		mpz_get_str(buf, 16, n);

		loglog(RC_LOG_SERIOUS, "%s: %s", p->name, buf);
	    }
#endif
	}
    }

    /* We require an (indented) '}' and the end of the record.
     * We break down the test so that the diagnostic will be
     * more helpful.  Some people don't seem to wish to indent
     * the brace!
     */
    if (!shift() || !tokeq("}"))
  4647f4:	8f99803c 	lw	t9,-32708(gp)
  4647f8:	00000000 	nop
  4647fc:	273939f4 	addiu	t9,t9,14836
  464800:	00000000 	nop
  464804:	0320f809 	jalr	t9
  464808:	00000000 	nop
  46480c:	8fdc0020 	lw	gp,32(s8)
  464810:	10400011 	beqz	v0,464858 <process_rsa_secret+0x3f4>
  464814:	00000000 	nop
  464818:	8f848018 	lw	a0,-32744(gp)
  46481c:	00000000 	nop
  464820:	24847be0 	addiu	a0,a0,31712
  464824:	8c840000 	lw	a0,0(a0)
  464828:	8f85802c 	lw	a1,-32724(gp)
  46482c:	00000000 	nop
  464830:	24a53338 	addiu	a1,a1,13112
  464834:	8f998428 	lw	t9,-31704(gp)
  464838:	00000000 	nop
  46483c:	0320f809 	jalr	t9
  464840:	00000000 	nop
  464844:	8fdc0020 	lw	gp,32(s8)
  464848:	14400003 	bnez	v0,464858 <process_rsa_secret+0x3f4>
  46484c:	00000000 	nop
  464850:	10000006 	b	46486c <process_rsa_secret+0x408>
  464854:	00000000 	nop
    {
	return "malformed end of RSA private key -- indented '}' required";
  464858:	8f82802c 	lw	v0,-32724(gp)
  46485c:	00000000 	nop
  464860:	2442333c 	addiu	v0,v0,13116
  464864:	1000003c 	b	464958 <process_rsa_secret+0x4f4>
  464868:	00000000 	nop
    }
    else if (shift())
  46486c:	8f99803c 	lw	t9,-32708(gp)
  464870:	00000000 	nop
  464874:	273939f4 	addiu	t9,t9,14836
  464878:	00000000 	nop
  46487c:	0320f809 	jalr	t9
  464880:	00000000 	nop
  464884:	8fdc0020 	lw	gp,32(s8)
  464888:	10400006 	beqz	v0,4648a4 <process_rsa_secret+0x440>
  46488c:	00000000 	nop
    {
	return "malformed end of RSA private key -- unexpected token after '}'";
  464890:	8f82802c 	lw	v0,-32724(gp)
  464894:	00000000 	nop
  464898:	24423378 	addiu	v0,v0,13176
  46489c:	1000002e 	b	464958 <process_rsa_secret+0x4f4>
  4648a0:	00000000 	nop
    }
    else
    {
	unsigned bits = mpz_sizeinbase(&rsak->pub.n, 2);
  4648a4:	8fc21068 	lw	v0,4200(s8)
  4648a8:	00000000 	nop
  4648ac:	24420010 	addiu	v0,v0,16
  4648b0:	00402021 	move	a0,v0
  4648b4:	24050002 	li	a1,2
  4648b8:	8f998520 	lw	t9,-31456(gp)
  4648bc:	00000000 	nop
  4648c0:	0320f809 	jalr	t9
  4648c4:	00000000 	nop
  4648c8:	8fdc0020 	lw	gp,32(s8)
  4648cc:	afc21054 	sw	v0,4180(s8)

	rsak->pub.k = (bits + BITS_PER_BYTE - 1) / BITS_PER_BYTE;
  4648d0:	8fc21054 	lw	v0,4180(s8)
  4648d4:	00000000 	nop
  4648d8:	24420007 	addiu	v0,v0,7
  4648dc:	000218c2 	srl	v1,v0,0x3
  4648e0:	8fc21068 	lw	v0,4200(s8)
  4648e4:	00000000 	nop
  4648e8:	ac43000c 	sw	v1,12(v0)
	rsak->pub.keyid[0] = '\0';	/* in case of splitkeytoid failure */
  4648ec:	8fc21068 	lw	v0,4200(s8)
  4648f0:	00000000 	nop
  4648f4:	a0400000 	sb	zero,0(v0)
	splitkeytoid(pub_bytes[1].ptr, pub_bytes[1].len
  4648f8:	8fc21068 	lw	v0,4200(s8)
  4648fc:	00000000 	nop
  464900:	afa20010 	sw	v0,16(sp)
  464904:	2402000a 	li	v0,10
  464908:	afa20014 	sw	v0,20(sp)
  46490c:	8fc41040 	lw	a0,4160(s8)
  464910:	8fc51044 	lw	a1,4164(s8)
  464914:	8fc61038 	lw	a2,4152(s8)
  464918:	8fc7103c 	lw	a3,4156(s8)
  46491c:	8f9984a8 	lw	t9,-31576(gp)
  464920:	00000000 	nop
  464924:	0320f809 	jalr	t9
  464928:	00000000 	nop
  46492c:	8fdc0020 	lw	gp,32(s8)
  464930:	00000000 	nop
	    , pub_bytes[0].ptr, pub_bytes[0].len
	    , rsak->pub.keyid, sizeof(rsak->pub.keyid));
	return RSA_private_key_sanity(rsak);
  464934:	8fc41068 	lw	a0,4200(s8)
  464938:	8f99803c 	lw	t9,-32708(gp)
  46493c:	00000000 	nop
  464940:	2739251c 	addiu	t9,t9,9500
  464944:	00000000 	nop
  464948:	0320f809 	jalr	t9
  46494c:	00000000 	nop
  464950:	8fdc0020 	lw	gp,32(s8)
  464954:	00000000 	nop
    }
}
  464958:	03c0e821 	move	sp,s8
  46495c:	8fbf1060 	lw	ra,4192(sp)
  464960:	8fbe105c 	lw	s8,4188(sp)
  464964:	27bd1068 	addiu	sp,sp,4200
  464968:	03e00008 	jr	ra
  46496c:	00000000 	nop

00464970 <process_secret>:
  464970:	3c1c0fbb 	lui	gp,0xfbb
  464974:	279c8000 	addiu	gp,gp,-32768
  464978:	0399e021 	addu	gp,gp,t9
  46497c:	27bdfdb8 	addiu	sp,sp,-584
  464980:	afbc0018 	sw	gp,24(sp)
  464984:	afbf0240 	sw	ra,576(sp)
  464988:	afbe023c 	sw	s8,572(sp)
  46498c:	afbc0238 	sw	gp,568(sp)
  464990:	03a0f021 	move	s8,sp
  464994:	afc40248 	sw	a0,584(s8)

static void
process_secret(struct secret *s)
{
    err_t ugh = NULL;
  464998:	afc00020 	sw	zero,32(s8)

    s->kind = PPK_PSK;	/* default */
  46499c:	8fc20248 	lw	v0,584(s8)
  4649a0:	00000000 	nop
  4649a4:	ac400004 	sw	zero,4(v0)
    if (*tok == '"' || *tok == '\'')
  4649a8:	8f828018 	lw	v0,-32744(gp)
  4649ac:	00000000 	nop
  4649b0:	24427be0 	addiu	v0,v0,31712
  4649b4:	8c420000 	lw	v0,0(v0)
  4649b8:	00000000 	nop
  4649bc:	80430000 	lb	v1,0(v0)
  4649c0:	24020022 	li	v0,34
  4649c4:	1062000c 	beq	v1,v0,4649f8 <process_secret+0x88>
  4649c8:	00000000 	nop
  4649cc:	8f828018 	lw	v0,-32744(gp)
  4649d0:	00000000 	nop
  4649d4:	24427be0 	addiu	v0,v0,31712
  4649d8:	8c420000 	lw	v0,0(v0)
  4649dc:	00000000 	nop
  4649e0:	80430000 	lb	v1,0(v0)
  4649e4:	24020027 	li	v0,39
  4649e8:	10620003 	beq	v1,v0,4649f8 <process_secret+0x88>
  4649ec:	00000000 	nop
  4649f0:	1000000f 	b	464a30 <process_secret+0xc0>
  4649f4:	00000000 	nop
    {
	/* old PSK format: just a string */
	ugh = process_psk_secret(&s->u.preshared_secret);
  4649f8:	8fc20248 	lw	v0,584(s8)
  4649fc:	00000000 	nop
  464a00:	24420008 	addiu	v0,v0,8
  464a04:	00402021 	move	a0,v0
  464a08:	8f99803c 	lw	t9,-32708(gp)
  464a0c:	00000000 	nop
  464a10:	273941dc 	addiu	t9,t9,16860
  464a14:	00000000 	nop
  464a18:	0320f809 	jalr	t9
  464a1c:	00000000 	nop
  464a20:	8fdc0018 	lw	gp,24(s8)
  464a24:	afc20020 	sw	v0,32(s8)
  464a28:	100001b0 	b	4650ec <process_secret+0x77c>
  464a2c:	00000000 	nop
    }
    else if (tokeqword("psk"))
  464a30:	8f848018 	lw	a0,-32744(gp)
  464a34:	00000000 	nop
  464a38:	24847be0 	addiu	a0,a0,31712
  464a3c:	8c840000 	lw	a0,0(a0)
  464a40:	8f85802c 	lw	a1,-32724(gp)
  464a44:	00000000 	nop
  464a48:	24a533b8 	addiu	a1,a1,13240
  464a4c:	8f998614 	lw	t9,-31212(gp)
  464a50:	00000000 	nop
  464a54:	0320f809 	jalr	t9
  464a58:	00000000 	nop
  464a5c:	8fdc0018 	lw	gp,24(s8)
  464a60:	14400022 	bnez	v0,464aec <process_secret+0x17c>
  464a64:	00000000 	nop
    {
	/* preshared key: quoted string or ttodata format */
	ugh = !shift()? "unexpected end of record in PSK"
  464a68:	8f99803c 	lw	t9,-32708(gp)
  464a6c:	00000000 	nop
  464a70:	273939f4 	addiu	t9,t9,14836
  464a74:	00000000 	nop
  464a78:	0320f809 	jalr	t9
  464a7c:	00000000 	nop
  464a80:	8fdc0018 	lw	gp,24(s8)
  464a84:	1040000f 	beqz	v0,464ac4 <process_secret+0x154>
  464a88:	00000000 	nop
  464a8c:	8fc20248 	lw	v0,584(s8)
  464a90:	00000000 	nop
  464a94:	24420008 	addiu	v0,v0,8
  464a98:	00402021 	move	a0,v0
  464a9c:	8f99803c 	lw	t9,-32708(gp)
  464aa0:	00000000 	nop
  464aa4:	273941dc 	addiu	t9,t9,16860
  464aa8:	00000000 	nop
  464aac:	0320f809 	jalr	t9
  464ab0:	00000000 	nop
  464ab4:	8fdc0018 	lw	gp,24(s8)
  464ab8:	afc20234 	sw	v0,564(s8)
  464abc:	10000006 	b	464ad8 <process_secret+0x168>
  464ac0:	00000000 	nop
  464ac4:	8f82802c 	lw	v0,-32724(gp)
  464ac8:	00000000 	nop
  464acc:	244233bc 	addiu	v0,v0,13244
  464ad0:	00000000 	nop
  464ad4:	afc20234 	sw	v0,564(s8)
  464ad8:	8fc20234 	lw	v0,564(s8)
  464adc:	00000000 	nop
  464ae0:	afc20020 	sw	v0,32(s8)
  464ae4:	10000181 	b	4650ec <process_secret+0x77c>
  464ae8:	00000000 	nop
	    : process_psk_secret(&s->u.preshared_secret);
    }
    else if (tokeqword("rsa"))
  464aec:	8f848018 	lw	a0,-32744(gp)
  464af0:	00000000 	nop
  464af4:	24847be0 	addiu	a0,a0,31712
  464af8:	8c840000 	lw	a0,0(a0)
  464afc:	8f85802c 	lw	a1,-32724(gp)
  464b00:	00000000 	nop
  464b04:	24a533dc 	addiu	a1,a1,13276
  464b08:	8f998614 	lw	t9,-31212(gp)
  464b0c:	00000000 	nop
  464b10:	0320f809 	jalr	t9
  464b14:	00000000 	nop
  464b18:	8fdc0018 	lw	gp,24(s8)
  464b1c:	14400166 	bnez	v0,4650b8 <process_secret+0x748>
  464b20:	00000000 	nop
    {
	/* RSA key: the fun begins.
	 * A braced list of keyword and value pairs.
	 */
	s->kind = PPK_RSA;
  464b24:	24020001 	li	v0,1
  464b28:	8fc30248 	lw	v1,584(s8)
  464b2c:	00000000 	nop
  464b30:	ac620004 	sw	v0,4(v1)
	if (!shift())
  464b34:	8f99803c 	lw	t9,-32708(gp)
  464b38:	00000000 	nop
  464b3c:	273939f4 	addiu	t9,t9,14836
  464b40:	00000000 	nop
  464b44:	0320f809 	jalr	t9
  464b48:	00000000 	nop
  464b4c:	8fdc0018 	lw	gp,24(s8)
  464b50:	14400008 	bnez	v0,464b74 <process_secret+0x204>
  464b54:	00000000 	nop
	{
	    ugh = "bad RSA key syntax";
  464b58:	8f82802c 	lw	v0,-32724(gp)
  464b5c:	00000000 	nop
  464b60:	244233e0 	addiu	v0,v0,13280
  464b64:	00000000 	nop
  464b68:	afc20020 	sw	v0,32(s8)
  464b6c:	1000015f 	b	4650ec <process_secret+0x77c>
  464b70:	00000000 	nop
	}
	else if (tokeq("{"))
  464b74:	8f848018 	lw	a0,-32744(gp)
  464b78:	00000000 	nop
  464b7c:	24847be0 	addiu	a0,a0,31712
  464b80:	8c840000 	lw	a0,0(a0)
  464b84:	8f85802c 	lw	a1,-32724(gp)
  464b88:	00000000 	nop
  464b8c:	24a533f4 	addiu	a1,a1,13300
  464b90:	8f998428 	lw	t9,-31704(gp)
  464b94:	00000000 	nop
  464b98:	0320f809 	jalr	t9
  464b9c:	00000000 	nop
  464ba0:	8fdc0018 	lw	gp,24(s8)
  464ba4:	1440000f 	bnez	v0,464be4 <process_secret+0x274>
  464ba8:	00000000 	nop
	{
	    ugh = process_rsa_secret(&s->u.RSA_private_key);
  464bac:	8fc20248 	lw	v0,584(s8)
  464bb0:	00000000 	nop
  464bb4:	24420008 	addiu	v0,v0,8
  464bb8:	00402021 	move	a0,v0
  464bbc:	8f99803c 	lw	t9,-32708(gp)
  464bc0:	00000000 	nop
  464bc4:	27394464 	addiu	t9,t9,17508
  464bc8:	00000000 	nop
  464bcc:	0320f809 	jalr	t9
  464bd0:	00000000 	nop
  464bd4:	8fdc0018 	lw	gp,24(s8)
  464bd8:	afc20020 	sw	v0,32(s8)
  464bdc:	10000143 	b	4650ec <process_secret+0x77c>
  464be0:	00000000 	nop
	}
	else
	{
	    /* we expect the filename of a PKCS#1 private key file */
	    char filename[BUF_LEN];
	    char passphrase[BUF_LEN];
	    pkcs1privkey_t *key = NULL;
  464be4:	afc00228 	sw	zero,552(s8)

	    memset(filename,   '\0', BUF_LEN);
  464be8:	27c40028 	addiu	a0,s8,40
  464bec:	00002821 	move	a1,zero
  464bf0:	24060100 	li	a2,256
  464bf4:	8f998500 	lw	t9,-31488(gp)
  464bf8:	00000000 	nop
  464bfc:	0320f809 	jalr	t9
  464c00:	00000000 	nop
  464c04:	8fdc0018 	lw	gp,24(s8)
  464c08:	00000000 	nop
	    memset(passphrase, '\0', BUF_LEN);
  464c0c:	27c40128 	addiu	a0,s8,296
  464c10:	00002821 	move	a1,zero
  464c14:	24060100 	li	a2,256
  464c18:	8f998500 	lw	t9,-31488(gp)
  464c1c:	00000000 	nop
  464c20:	0320f809 	jalr	t9
  464c24:	00000000 	nop
  464c28:	8fdc0018 	lw	gp,24(s8)
  464c2c:	00000000 	nop

	    if (*tok == '"' || *tok == '\'')  /* quoted filename */
  464c30:	8f828018 	lw	v0,-32744(gp)
  464c34:	00000000 	nop
  464c38:	24427be0 	addiu	v0,v0,31712
  464c3c:	8c420000 	lw	v0,0(v0)
  464c40:	00000000 	nop
  464c44:	80430000 	lb	v1,0(v0)
  464c48:	24020022 	li	v0,34
  464c4c:	1062000c 	beq	v1,v0,464c80 <process_secret+0x310>
  464c50:	00000000 	nop
  464c54:	8f828018 	lw	v0,-32744(gp)
  464c58:	00000000 	nop
  464c5c:	24427be0 	addiu	v0,v0,31712
  464c60:	8c420000 	lw	v0,0(v0)
  464c64:	00000000 	nop
  464c68:	80430000 	lb	v1,0(v0)
  464c6c:	24020027 	li	v0,39
  464c70:	10620003 	beq	v1,v0,464c80 <process_secret+0x310>
  464c74:	00000000 	nop
  464c78:	1000001d 	b	464cf0 <process_secret+0x380>
  464c7c:	00000000 	nop
		memcpy(filename, tok+1, sfp->cur - tok - 2);
  464c80:	8f828018 	lw	v0,-32744(gp)
  464c84:	00000000 	nop
  464c88:	24427be0 	addiu	v0,v0,31712
  464c8c:	8c420000 	lw	v0,0(v0)
  464c90:	00000000 	nop
  464c94:	24450001 	addiu	a1,v0,1
  464c98:	8f828018 	lw	v0,-32744(gp)
  464c9c:	00000000 	nop
  464ca0:	244232f8 	addiu	v0,v0,13048
  464ca4:	8c420000 	lw	v0,0(v0)
  464ca8:	00000000 	nop
  464cac:	8c430818 	lw	v1,2072(v0)
  464cb0:	8f828018 	lw	v0,-32744(gp)
  464cb4:	00000000 	nop
  464cb8:	24427be0 	addiu	v0,v0,31712
  464cbc:	8c420000 	lw	v0,0(v0)
  464cc0:	00000000 	nop
  464cc4:	00621023 	subu	v0,v1,v0
  464cc8:	2442fffe 	addiu	v0,v0,-2
  464ccc:	27c40028 	addiu	a0,s8,40
  464cd0:	00403021 	move	a2,v0
  464cd4:	8f998a30 	lw	t9,-30160(gp)
  464cd8:	00000000 	nop
  464cdc:	0320f809 	jalr	t9
  464ce0:	00000000 	nop
  464ce4:	8fdc0018 	lw	gp,24(s8)
  464ce8:	10000019 	b	464d50 <process_secret+0x3e0>
  464cec:	00000000 	nop
	    else
	    	memcpy(filename, tok, sfp->cur - tok);
  464cf0:	8f828018 	lw	v0,-32744(gp)
  464cf4:	00000000 	nop
  464cf8:	244232f8 	addiu	v0,v0,13048
  464cfc:	8c420000 	lw	v0,0(v0)
  464d00:	00000000 	nop
  464d04:	8c430818 	lw	v1,2072(v0)
  464d08:	8f828018 	lw	v0,-32744(gp)
  464d0c:	00000000 	nop
  464d10:	24427be0 	addiu	v0,v0,31712
  464d14:	8c420000 	lw	v0,0(v0)
  464d18:	00000000 	nop
  464d1c:	00621023 	subu	v0,v1,v0
  464d20:	27c40028 	addiu	a0,s8,40
  464d24:	8f858018 	lw	a1,-32744(gp)
  464d28:	00000000 	nop
  464d2c:	24a57be0 	addiu	a1,a1,31712
  464d30:	8ca50000 	lw	a1,0(a1)
  464d34:	00403021 	move	a2,v0
  464d38:	8f998a30 	lw	t9,-30160(gp)
  464d3c:	00000000 	nop
  464d40:	0320f809 	jalr	t9
  464d44:	00000000 	nop
  464d48:	8fdc0018 	lw	gp,24(s8)
  464d4c:	00000000 	nop

	    if (shift())
  464d50:	8f99803c 	lw	t9,-32708(gp)
  464d54:	00000000 	nop
  464d58:	273939f4 	addiu	t9,t9,14836
  464d5c:	00000000 	nop
  464d60:	0320f809 	jalr	t9
  464d64:	00000000 	nop
  464d68:	8fdc0018 	lw	gp,24(s8)
  464d6c:	10400057 	beqz	v0,464ecc <process_secret+0x55c>
  464d70:	00000000 	nop
	    {
		/* we expect an appended passphrase */
		if (*tok == '"' || *tok == '\'') /* quoted passphrase */
  464d74:	8f828018 	lw	v0,-32744(gp)
  464d78:	00000000 	nop
  464d7c:	24427be0 	addiu	v0,v0,31712
  464d80:	8c420000 	lw	v0,0(v0)
  464d84:	00000000 	nop
  464d88:	80430000 	lb	v1,0(v0)
  464d8c:	24020022 	li	v0,34
  464d90:	1062000c 	beq	v1,v0,464dc4 <process_secret+0x454>
  464d94:	00000000 	nop
  464d98:	8f828018 	lw	v0,-32744(gp)
  464d9c:	00000000 	nop
  464da0:	24427be0 	addiu	v0,v0,31712
  464da4:	8c420000 	lw	v0,0(v0)
  464da8:	00000000 	nop
  464dac:	80430000 	lb	v1,0(v0)
  464db0:	24020027 	li	v0,39
  464db4:	10620003 	beq	v1,v0,464dc4 <process_secret+0x454>
  464db8:	00000000 	nop
  464dbc:	1000001d 	b	464e34 <process_secret+0x4c4>
  464dc0:	00000000 	nop
		   memcpy(passphrase, tok+1, sfp->cur - tok - 2);
  464dc4:	8f828018 	lw	v0,-32744(gp)
  464dc8:	00000000 	nop
  464dcc:	24427be0 	addiu	v0,v0,31712
  464dd0:	8c420000 	lw	v0,0(v0)
  464dd4:	00000000 	nop
  464dd8:	24450001 	addiu	a1,v0,1
  464ddc:	8f828018 	lw	v0,-32744(gp)
  464de0:	00000000 	nop
  464de4:	244232f8 	addiu	v0,v0,13048
  464de8:	8c420000 	lw	v0,0(v0)
  464dec:	00000000 	nop
  464df0:	8c430818 	lw	v1,2072(v0)
  464df4:	8f828018 	lw	v0,-32744(gp)
  464df8:	00000000 	nop
  464dfc:	24427be0 	addiu	v0,v0,31712
  464e00:	8c420000 	lw	v0,0(v0)
  464e04:	00000000 	nop
  464e08:	00621023 	subu	v0,v1,v0
  464e0c:	2442fffe 	addiu	v0,v0,-2
  464e10:	27c40128 	addiu	a0,s8,296
  464e14:	00403021 	move	a2,v0
  464e18:	8f998a30 	lw	t9,-30160(gp)
  464e1c:	00000000 	nop
  464e20:	0320f809 	jalr	t9
  464e24:	00000000 	nop
  464e28:	8fdc0018 	lw	gp,24(s8)
  464e2c:	10000019 	b	464e94 <process_secret+0x524>
  464e30:	00000000 	nop
		else
		   memcpy(passphrase, tok, sfp->cur - tok);
  464e34:	8f828018 	lw	v0,-32744(gp)
  464e38:	00000000 	nop
  464e3c:	244232f8 	addiu	v0,v0,13048
  464e40:	8c420000 	lw	v0,0(v0)
  464e44:	00000000 	nop
  464e48:	8c430818 	lw	v1,2072(v0)
  464e4c:	8f828018 	lw	v0,-32744(gp)
  464e50:	00000000 	nop
  464e54:	24427be0 	addiu	v0,v0,31712
  464e58:	8c420000 	lw	v0,0(v0)
  464e5c:	00000000 	nop
  464e60:	00621023 	subu	v0,v1,v0
  464e64:	27c40128 	addiu	a0,s8,296
  464e68:	8f858018 	lw	a1,-32744(gp)
  464e6c:	00000000 	nop
  464e70:	24a57be0 	addiu	a1,a1,31712
  464e74:	8ca50000 	lw	a1,0(a1)
  464e78:	00403021 	move	a2,v0
  464e7c:	8f998a30 	lw	t9,-30160(gp)
  464e80:	00000000 	nop
  464e84:	0320f809 	jalr	t9
  464e88:	00000000 	nop
  464e8c:	8fdc0018 	lw	gp,24(s8)
  464e90:	00000000 	nop

		if (shift())
  464e94:	8f99803c 	lw	t9,-32708(gp)
  464e98:	00000000 	nop
  464e9c:	273939f4 	addiu	t9,t9,14836
  464ea0:	00000000 	nop
  464ea4:	0320f809 	jalr	t9
  464ea8:	00000000 	nop
  464eac:	8fdc0018 	lw	gp,24(s8)
  464eb0:	10400006 	beqz	v0,464ecc <process_secret+0x55c>
  464eb4:	00000000 	nop
		{
		    ugh = "RSA private key file -- unexpected token after passphrase";
  464eb8:	8f82802c 	lw	v0,-32724(gp)
  464ebc:	00000000 	nop
  464ec0:	244233f8 	addiu	v0,v0,13304
  464ec4:	00000000 	nop
  464ec8:	afc20020 	sw	v0,32(s8)
		}
	    }

	    key = load_pkcs1_private_key(filename, passphrase);
  464ecc:	27c40028 	addiu	a0,s8,40
  464ed0:	27c50128 	addiu	a1,s8,296
  464ed4:	8f9983c4 	lw	t9,-31804(gp)
  464ed8:	00000000 	nop
  464edc:	0320f809 	jalr	t9
  464ee0:	00000000 	nop
  464ee4:	8fdc0018 	lw	gp,24(s8)
  464ee8:	afc20228 	sw	v0,552(s8)

	    if (key == NULL)
  464eec:	8fc20228 	lw	v0,552(s8)
  464ef0:	00000000 	nop
  464ef4:	14400008 	bnez	v0,464f18 <process_secret+0x5a8>
  464ef8:	00000000 	nop
		ugh = "error loading RSA private key file";
  464efc:	8f82802c 	lw	v0,-32724(gp)
  464f00:	00000000 	nop
  464f04:	24423434 	addiu	v0,v0,13364
  464f08:	00000000 	nop
  464f0c:	afc20020 	sw	v0,32(s8)
  464f10:	10000076 	b	4650ec <process_secret+0x77c>
  464f14:	00000000 	nop
	    else
	    {
		u_int i;

		for (i = 0; ugh == NULL && i < elemsof(RSA_private_field); i++)
  464f18:	afc0022c 	sw	zero,556(s8)
  464f1c:	8fc20020 	lw	v0,32(s8)
  464f20:	00000000 	nop
  464f24:	14400033 	bnez	v0,464ff4 <process_secret+0x684>
  464f28:	00000000 	nop
  464f2c:	8fc2022c 	lw	v0,556(s8)
  464f30:	00000000 	nop
  464f34:	2c420008 	sltiu	v0,v0,8
  464f38:	14400003 	bnez	v0,464f48 <process_secret+0x5d8>
  464f3c:	00000000 	nop
  464f40:	1000002c 	b	464ff4 <process_secret+0x684>
  464f44:	00000000 	nop
		{
		    MP_INT *n = (MP_INT *) ((char *)&s->u.RSA_private_key +
  464f48:	8fc2022c 	lw	v0,556(s8)
  464f4c:	00000000 	nop
  464f50:	000210c0 	sll	v0,v0,0x3
  464f54:	8f818018 	lw	at,-32744(gp)
  464f58:	00000000 	nop
  464f5c:	242132b4 	addiu	at,at,12980
  464f60:	00221021 	addu	v0,at,v0
  464f64:	8c430000 	lw	v1,0(v0)
  464f68:	8fc20248 	lw	v0,584(s8)
  464f6c:	00000000 	nop
  464f70:	00431021 	addu	v0,v0,v1
  464f74:	24420008 	addiu	v0,v0,8
  464f78:	afc20230 	sw	v0,560(s8)
							  RSA_private_field[i].offset);
		    n_to_mpz(n, key->field[i].ptr, key->field[i].len);
  464f7c:	8fc2022c 	lw	v0,556(s8)
  464f80:	00000000 	nop
  464f84:	000210c0 	sll	v0,v0,0x3
  464f88:	24430008 	addiu	v1,v0,8
  464f8c:	8fc20228 	lw	v0,552(s8)
  464f90:	00000000 	nop
  464f94:	00432821 	addu	a1,v0,v1
  464f98:	8fc2022c 	lw	v0,556(s8)
  464f9c:	00000000 	nop
  464fa0:	000210c0 	sll	v0,v0,0x3
  464fa4:	24430008 	addiu	v1,v0,8
  464fa8:	8fc20228 	lw	v0,552(s8)
  464fac:	00000000 	nop
  464fb0:	24420004 	addiu	v0,v0,4
  464fb4:	00431021 	addu	v0,v0,v1
  464fb8:	8fc40230 	lw	a0,560(s8)
  464fbc:	8ca50000 	lw	a1,0(a1)
  464fc0:	8c460000 	lw	a2,0(v0)
  464fc4:	8f998358 	lw	t9,-31912(gp)
  464fc8:	00000000 	nop
  464fcc:	0320f809 	jalr	t9
  464fd0:	00000000 	nop
  464fd4:	8fdc0018 	lw	gp,24(s8)
  464fd8:	00000000 	nop
  464fdc:	8fc2022c 	lw	v0,556(s8)
  464fe0:	00000000 	nop
  464fe4:	24420001 	addiu	v0,v0,1
  464fe8:	afc2022c 	sw	v0,556(s8)
  464fec:	1000ffcb 	b	464f1c <process_secret+0x5ac>
  464ff0:	00000000 	nop
		}
		form_keyid(key->field[1], key->field[0], s->u.RSA_private_key.pub.keyid,
  464ff4:	8fc30228 	lw	v1,552(s8)
  464ff8:	8fc70228 	lw	a3,552(s8)
  464ffc:	8fc20248 	lw	v0,584(s8)
  465000:	00000000 	nop
  465004:	24420008 	addiu	v0,v0,8
  465008:	afa20010 	sw	v0,16(sp)
  46500c:	8fc20248 	lw	v0,584(s8)
  465010:	00000000 	nop
  465014:	24420014 	addiu	v0,v0,20
  465018:	afa20014 	sw	v0,20(sp)
  46501c:	8c640010 	lw	a0,16(v1)
  465020:	8c650014 	lw	a1,20(v1)
  465024:	8ce60008 	lw	a2,8(a3)
  465028:	8ce7000c 	lw	a3,12(a3)
  46502c:	8f998b18 	lw	t9,-29928(gp)
  465030:	00000000 	nop
  465034:	0320f809 	jalr	t9
  465038:	00000000 	nop
  46503c:	8fdc0018 	lw	gp,24(s8)
  465040:	00000000 	nop
			   &s->u.RSA_private_key.pub.k);
		ugh = RSA_private_key_sanity(&s->u.RSA_private_key);
  465044:	8fc20248 	lw	v0,584(s8)
  465048:	00000000 	nop
  46504c:	24420008 	addiu	v0,v0,8
  465050:	00402021 	move	a0,v0
  465054:	8f99803c 	lw	t9,-32708(gp)
  465058:	00000000 	nop
  46505c:	2739251c 	addiu	t9,t9,9500
  465060:	00000000 	nop
  465064:	0320f809 	jalr	t9
  465068:	00000000 	nop
  46506c:	8fdc0018 	lw	gp,24(s8)
  465070:	afc20020 	sw	v0,32(s8)
		pfree(key->pkcs1object.ptr);
  465074:	8fc20228 	lw	v0,552(s8)
  465078:	00000000 	nop
  46507c:	8c440000 	lw	a0,0(v0)
  465080:	8f998094 	lw	t9,-32620(gp)
  465084:	00000000 	nop
  465088:	0320f809 	jalr	t9
  46508c:	00000000 	nop
  465090:	8fdc0018 	lw	gp,24(s8)
  465094:	00000000 	nop
		pfree(key);
  465098:	8fc40228 	lw	a0,552(s8)
  46509c:	8f998094 	lw	t9,-32620(gp)
  4650a0:	00000000 	nop
  4650a4:	0320f809 	jalr	t9
  4650a8:	00000000 	nop
  4650ac:	8fdc0018 	lw	gp,24(s8)
  4650b0:	1000000e 	b	4650ec <process_secret+0x77c>
  4650b4:	00000000 	nop
	    }
	}
    }
    else
    {
	ugh = builddiag("unrecognized key format: %s", tok);
  4650b8:	8f84802c 	lw	a0,-32724(gp)
  4650bc:	00000000 	nop
  4650c0:	24843458 	addiu	a0,a0,13400
  4650c4:	8f858018 	lw	a1,-32744(gp)
  4650c8:	00000000 	nop
  4650cc:	24a57be0 	addiu	a1,a1,31712
  4650d0:	8ca50000 	lw	a1,0(a1)
  4650d4:	8f9986dc 	lw	t9,-31012(gp)
  4650d8:	00000000 	nop
  4650dc:	0320f809 	jalr	t9
  4650e0:	00000000 	nop
  4650e4:	8fdc0018 	lw	gp,24(s8)
  4650e8:	afc20020 	sw	v0,32(s8)
    }

    if (ugh != NULL)
  4650ec:	8fc20020 	lw	v0,32(s8)
  4650f0:	00000000 	nop
  4650f4:	1040001b 	beqz	v0,465164 <process_secret+0x7f4>
  4650f8:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "\"%s\" line %d: %s"
  4650fc:	8fc20020 	lw	v0,32(s8)
  465100:	00000000 	nop
  465104:	afa20010 	sw	v0,16(sp)
  465108:	24040003 	li	a0,3
  46510c:	8f85802c 	lw	a1,-32724(gp)
  465110:	00000000 	nop
  465114:	24a53278 	addiu	a1,a1,12920
  465118:	8f828018 	lw	v0,-32744(gp)
  46511c:	00000000 	nop
  465120:	244232f8 	addiu	v0,v0,13048
  465124:	8c420000 	lw	v0,0(v0)
  465128:	00000000 	nop
  46512c:	8c460004 	lw	a2,4(v0)
  465130:	8f828018 	lw	v0,-32744(gp)
  465134:	00000000 	nop
  465138:	244232f8 	addiu	v0,v0,13048
  46513c:	8c420000 	lw	v0,0(v0)
  465140:	00000000 	nop
  465144:	8c470010 	lw	a3,16(v0)
  465148:	8f998c48 	lw	t9,-29624(gp)
  46514c:	00000000 	nop
  465150:	0320f809 	jalr	t9
  465154:	00000000 	nop
  465158:	8fdc0018 	lw	gp,24(s8)
  46515c:	10000017 	b	4651bc <process_secret+0x84c>
  465160:	00000000 	nop
	    , sfp->filename, sfp->lino, ugh);
    }
    else if (flushline("expected record boundary in key"))
  465164:	8f84802c 	lw	a0,-32724(gp)
  465168:	00000000 	nop
  46516c:	24843474 	addiu	a0,a0,13428
  465170:	8f99803c 	lw	t9,-32708(gp)
  465174:	00000000 	nop
  465178:	273940d0 	addiu	t9,t9,16592
  46517c:	00000000 	nop
  465180:	0320f809 	jalr	t9
  465184:	00000000 	nop
  465188:	8fdc0018 	lw	gp,24(s8)
  46518c:	1040000b 	beqz	v0,4651bc <process_secret+0x84c>
  465190:	00000000 	nop
    {
	/* gauntlet has been run: install new secret */
	s->next = secrets;
  465194:	8f828b7c 	lw	v0,-29828(gp)
  465198:	00000000 	nop
  46519c:	8c420000 	lw	v0,0(v0)
  4651a0:	8fc30248 	lw	v1,584(s8)
  4651a4:	00000000 	nop
  4651a8:	ac620078 	sw	v0,120(v1)
	secrets = s;
  4651ac:	8fc20248 	lw	v0,584(s8)
  4651b0:	8f818b7c 	lw	at,-29828(gp)
  4651b4:	00000000 	nop
  4651b8:	ac220000 	sw	v0,0(at)
    }
}
  4651bc:	03c0e821 	move	sp,s8
  4651c0:	8fbf0240 	lw	ra,576(sp)
  4651c4:	8fbe023c 	lw	s8,572(sp)
  4651c8:	27bd0248 	addiu	sp,sp,584
  4651cc:	03e00008 	jr	ra
  4651d0:	00000000 	nop

004651d4 <process_secret_records>:
  4651d4:	3c1c0fba 	lui	gp,0xfba
  4651d8:	279c779c 	addiu	gp,gp,30620
  4651dc:	0399e021 	addu	gp,gp,t9
  4651e0:	27bdf798 	addiu	sp,sp,-2152
  4651e4:	afbc0018 	sw	gp,24(sp)
  4651e8:	afbf0860 	sw	ra,2144(sp)
  4651ec:	afbe085c 	sw	s8,2140(sp)
  4651f0:	afbc0858 	sw	gp,2136(sp)
  4651f4:	03a0f021 	move	s8,sp
  4651f8:	00000000 	nop

static void
process_secret_records(void)
{
    /* read records from ipsec.secrets and load them into our table */
    for (;;)
    {
	(void)flushline(NULL);	/* silently ditch leftovers, if any */
  4651fc:	00002021 	move	a0,zero
  465200:	8f99803c 	lw	t9,-32708(gp)
  465204:	00000000 	nop
  465208:	273940d0 	addiu	t9,t9,16592
  46520c:	00000000 	nop
  465210:	0320f809 	jalr	t9
  465214:	00000000 	nop
  465218:	8fdc0018 	lw	gp,24(s8)
  46521c:	00000000 	nop
	if (sfp->bdry == B_file)
  465220:	8f828018 	lw	v0,-32744(gp)
  465224:	00000000 	nop
  465228:	244232f8 	addiu	v0,v0,13048
  46522c:	8c420000 	lw	v0,0(v0)
  465230:	00000000 	nop
  465234:	8c43000c 	lw	v1,12(v0)
  465238:	24020002 	li	v0,2
  46523c:	14620003 	bne	v1,v0,46524c <process_secret_records+0x78>
  465240:	00000000 	nop
	    break;
  465244:	100001f2 	b	465a10 <process_secret_records+0x83c>
  465248:	00000000 	nop

	sfp->bdry = B_none;	/* eat the Record Boundary */
  46524c:	8f828018 	lw	v0,-32744(gp)
  465250:	00000000 	nop
  465254:	244232f8 	addiu	v0,v0,13048
  465258:	8c420000 	lw	v0,0(v0)
  46525c:	00000000 	nop
  465260:	ac40000c 	sw	zero,12(v0)
	(void)shift();	/* get real first token */
  465264:	8f99803c 	lw	t9,-32708(gp)
  465268:	00000000 	nop
  46526c:	273939f4 	addiu	t9,t9,14836
  465270:	00000000 	nop
  465274:	0320f809 	jalr	t9
  465278:	00000000 	nop
  46527c:	8fdc0018 	lw	gp,24(s8)
  465280:	00000000 	nop

	if (tokeqword("include"))
  465284:	8f848018 	lw	a0,-32744(gp)
  465288:	00000000 	nop
  46528c:	24847be0 	addiu	a0,a0,31712
  465290:	8c840000 	lw	a0,0(a0)
  465294:	8f85802c 	lw	a1,-32724(gp)
  465298:	00000000 	nop
  46529c:	24a53494 	addiu	a1,a1,13460
  4652a0:	8f998614 	lw	t9,-31212(gp)
  4652a4:	00000000 	nop
  4652a8:	0320f809 	jalr	t9
  4652ac:	00000000 	nop
  4652b0:	8fdc0018 	lw	gp,24(s8)
  4652b4:	144000bd 	bnez	v0,4655ac <process_secret_records+0x3d8>
  4652b8:	00000000 	nop
	{
	    /* an include directive */
	    char fn[2048];	/* space for filename (I hope) */
	    char *p = fn;
  4652bc:	27c20020 	addiu	v0,s8,32
  4652c0:	afc20820 	sw	v0,2080(s8)
	    char *end_prefix = strrchr(sfp->filename, '/');
  4652c4:	8f828018 	lw	v0,-32744(gp)
  4652c8:	00000000 	nop
  4652cc:	244232f8 	addiu	v0,v0,13048
  4652d0:	8c420000 	lw	v0,0(v0)
  4652d4:	00000000 	nop
  4652d8:	8c440004 	lw	a0,4(v0)
  4652dc:	2405002f 	li	a1,47
  4652e0:	8f9987e8 	lw	t9,-30744(gp)
  4652e4:	00000000 	nop
  4652e8:	0320f809 	jalr	t9
  4652ec:	00000000 	nop
  4652f0:	8fdc0018 	lw	gp,24(s8)
  4652f4:	afc20824 	sw	v0,2084(s8)

	    if (!shift())
  4652f8:	8f99803c 	lw	t9,-32708(gp)
  4652fc:	00000000 	nop
  465300:	273939f4 	addiu	t9,t9,14836
  465304:	00000000 	nop
  465308:	0320f809 	jalr	t9
  46530c:	00000000 	nop
  465310:	8fdc0018 	lw	gp,24(s8)
  465314:	14400019 	bnez	v0,46537c <process_secret_records+0x1a8>
  465318:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "\"%s\" line %d: unexpected end of include directive"
  46531c:	24040003 	li	a0,3
  465320:	8f85802c 	lw	a1,-32724(gp)
  465324:	00000000 	nop
  465328:	24a5349c 	addiu	a1,a1,13468
  46532c:	8f828018 	lw	v0,-32744(gp)
  465330:	00000000 	nop
  465334:	244232f8 	addiu	v0,v0,13048
  465338:	8c420000 	lw	v0,0(v0)
  46533c:	00000000 	nop
  465340:	8c460004 	lw	a2,4(v0)
  465344:	8f828018 	lw	v0,-32744(gp)
  465348:	00000000 	nop
  46534c:	244232f8 	addiu	v0,v0,13048
  465350:	8c420000 	lw	v0,0(v0)
  465354:	00000000 	nop
  465358:	8c470010 	lw	a3,16(v0)
  46535c:	8f998c48 	lw	t9,-29624(gp)
  465360:	00000000 	nop
  465364:	0320f809 	jalr	t9
  465368:	00000000 	nop
  46536c:	8fdc0018 	lw	gp,24(s8)
  465370:	00000000 	nop
		    , sfp->filename, sfp->lino);
		continue;   /* abandon this record */
  465374:	1000ffa1 	b	4651fc <process_secret_records+0x28>
  465378:	00000000 	nop
	    }

	    /* if path is relative and including file's pathname has
	     * a non-empty dirname, prefix this path with that dirname.
	     */
	    if (tok[0] != '/' && end_prefix != NULL)
  46537c:	8f828018 	lw	v0,-32744(gp)
  465380:	00000000 	nop
  465384:	24427be0 	addiu	v0,v0,31712
  465388:	8c420000 	lw	v0,0(v0)
  46538c:	00000000 	nop
  465390:	80430000 	lb	v1,0(v0)
  465394:	2402002f 	li	v0,47
  465398:	1062002a 	beq	v1,v0,465444 <process_secret_records+0x270>
  46539c:	00000000 	nop
  4653a0:	8fc20824 	lw	v0,2084(s8)
  4653a4:	00000000 	nop
  4653a8:	10400026 	beqz	v0,465444 <process_secret_records+0x270>
  4653ac:	00000000 	nop
	    {
		size_t pl = end_prefix - sfp->filename + 1;
  4653b0:	8f828018 	lw	v0,-32744(gp)
  4653b4:	00000000 	nop
  4653b8:	244232f8 	addiu	v0,v0,13048
  4653bc:	8c420000 	lw	v0,0(v0)
  4653c0:	00000000 	nop
  4653c4:	8c430004 	lw	v1,4(v0)
  4653c8:	8fc20824 	lw	v0,2084(s8)
  4653cc:	00000000 	nop
  4653d0:	00431023 	subu	v0,v0,v1
  4653d4:	24420001 	addiu	v0,v0,1
  4653d8:	afc20828 	sw	v0,2088(s8)

		/* "clamp" length to prevent problems now;
		 * will be rediscovered and reported later.
		 */
		if (pl > sizeof(fn))
  4653dc:	8fc20828 	lw	v0,2088(s8)
  4653e0:	00000000 	nop
  4653e4:	2c420801 	sltiu	v0,v0,2049
  4653e8:	14400003 	bnez	v0,4653f8 <process_secret_records+0x224>
  4653ec:	00000000 	nop
		    pl = sizeof(fn);
  4653f0:	24020800 	li	v0,2048
  4653f4:	afc20828 	sw	v0,2088(s8)
		memcpy(fn, sfp->filename, pl);
  4653f8:	27c40020 	addiu	a0,s8,32
  4653fc:	8f828018 	lw	v0,-32744(gp)
  465400:	00000000 	nop
  465404:	244232f8 	addiu	v0,v0,13048
  465408:	8c420000 	lw	v0,0(v0)
  46540c:	00000000 	nop
  465410:	8c450004 	lw	a1,4(v0)
  465414:	8fc60828 	lw	a2,2088(s8)
  465418:	8f998a30 	lw	t9,-30160(gp)
  46541c:	00000000 	nop
  465420:	0320f809 	jalr	t9
  465424:	00000000 	nop
  465428:	8fdc0018 	lw	gp,24(s8)
  46542c:	00000000 	nop
		p += pl;
  465430:	8fc30820 	lw	v1,2080(s8)
  465434:	8fc20828 	lw	v0,2088(s8)
  465438:	00000000 	nop
  46543c:	00621021 	addu	v0,v1,v0
  465440:	afc20820 	sw	v0,2080(s8)
	    }
	    if (sfp->cur - tok >= &fn[sizeof(fn)] - p)
  465444:	8f828018 	lw	v0,-32744(gp)
  465448:	00000000 	nop
  46544c:	244232f8 	addiu	v0,v0,13048
  465450:	8c420000 	lw	v0,0(v0)
  465454:	00000000 	nop
  465458:	8c430818 	lw	v1,2072(v0)
  46545c:	8f828018 	lw	v0,-32744(gp)
  465460:	00000000 	nop
  465464:	24427be0 	addiu	v0,v0,31712
  465468:	8c420000 	lw	v0,0(v0)
  46546c:	00000000 	nop
  465470:	00622023 	subu	a0,v1,v0
  465474:	27c30020 	addiu	v1,s8,32
  465478:	8fc20820 	lw	v0,2080(s8)
  46547c:	00000000 	nop
  465480:	00621023 	subu	v0,v1,v0
  465484:	24420800 	addiu	v0,v0,2048
  465488:	0082102a 	slt	v0,a0,v0
  46548c:	14400019 	bnez	v0,4654f4 <process_secret_records+0x320>
  465490:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "\"%s\" line %d: include pathname too long"
  465494:	24040003 	li	a0,3
  465498:	8f85802c 	lw	a1,-32724(gp)
  46549c:	00000000 	nop
  4654a0:	24a534d0 	addiu	a1,a1,13520
  4654a4:	8f828018 	lw	v0,-32744(gp)
  4654a8:	00000000 	nop
  4654ac:	244232f8 	addiu	v0,v0,13048
  4654b0:	8c420000 	lw	v0,0(v0)
  4654b4:	00000000 	nop
  4654b8:	8c460004 	lw	a2,4(v0)
  4654bc:	8f828018 	lw	v0,-32744(gp)
  4654c0:	00000000 	nop
  4654c4:	244232f8 	addiu	v0,v0,13048
  4654c8:	8c420000 	lw	v0,0(v0)
  4654cc:	00000000 	nop
  4654d0:	8c470010 	lw	a3,16(v0)
  4654d4:	8f998c48 	lw	t9,-29624(gp)
  4654d8:	00000000 	nop
  4654dc:	0320f809 	jalr	t9
  4654e0:	00000000 	nop
  4654e4:	8fdc0018 	lw	gp,24(s8)
  4654e8:	00000000 	nop
		    , sfp->filename, sfp->lino);
		continue;   /* abandon this record */
  4654ec:	1000ff43 	b	4651fc <process_secret_records+0x28>
  4654f0:	00000000 	nop
	    }
	    strcpy(p, tok);
  4654f4:	8fc40820 	lw	a0,2080(s8)
  4654f8:	8f858018 	lw	a1,-32744(gp)
  4654fc:	00000000 	nop
  465500:	24a57be0 	addiu	a1,a1,31712
  465504:	8ca50000 	lw	a1,0(a1)
  465508:	8f998c58 	lw	t9,-29608(gp)
  46550c:	00000000 	nop
  465510:	0320f809 	jalr	t9
  465514:	00000000 	nop
  465518:	8fdc0018 	lw	gp,24(s8)
  46551c:	00000000 	nop
	    (void) shift();	/* move to Record Boundary, we hope */
  465520:	8f99803c 	lw	t9,-32708(gp)
  465524:	00000000 	nop
  465528:	273939f4 	addiu	t9,t9,14836
  46552c:	00000000 	nop
  465530:	0320f809 	jalr	t9
  465534:	00000000 	nop
  465538:	8fdc0018 	lw	gp,24(s8)
  46553c:	00000000 	nop
	    if (flushline("ignoring malformed INCLUDE -- expected Record Boundary after filename"))
  465540:	8f84802c 	lw	a0,-32724(gp)
  465544:	00000000 	nop
  465548:	248434f8 	addiu	a0,a0,13560
  46554c:	8f99803c 	lw	t9,-32708(gp)
  465550:	00000000 	nop
  465554:	273940d0 	addiu	t9,t9,16592
  465558:	00000000 	nop
  46555c:	0320f809 	jalr	t9
  465560:	00000000 	nop
  465564:	8fdc0018 	lw	gp,24(s8)
  465568:	1040ff24 	beqz	v0,4651fc <process_secret_records+0x28>
  46556c:	00000000 	nop
	    {
		process_secrets_file(fn);
  465570:	27c40020 	addiu	a0,s8,32
  465574:	8f99803c 	lw	t9,-32708(gp)
  465578:	00000000 	nop
  46557c:	27395a9c 	addiu	t9,t9,23196
  465580:	00000000 	nop
  465584:	0320f809 	jalr	t9
  465588:	00000000 	nop
  46558c:	8fdc0018 	lw	gp,24(s8)
  465590:	00000000 	nop
		tok = NULL;	/* correct, but probably redundant */
  465594:	8f818018 	lw	at,-32744(gp)
  465598:	00000000 	nop
  46559c:	24217be0 	addiu	at,at,31712
  4655a0:	ac200000 	sw	zero,0(at)
  4655a4:	1000ff15 	b	4651fc <process_secret_records+0x28>
  4655a8:	00000000 	nop
	    }
	}
	else
	{
	    /* expecting a list of indices and then the key info */
	    struct secret *s = alloc_thing(struct secret, "secret");
  4655ac:	2404007c 	li	a0,124
  4655b0:	8f85802c 	lw	a1,-32724(gp)
  4655b4:	00000000 	nop
  4655b8:	24a53540 	addiu	a1,a1,13632
  4655bc:	8f998084 	lw	t9,-32636(gp)
  4655c0:	00000000 	nop
  4655c4:	0320f809 	jalr	t9
  4655c8:	00000000 	nop
  4655cc:	8fdc0018 	lw	gp,24(s8)
  4655d0:	afc20828 	sw	v0,2088(s8)

	    s->ids = NULL;
  4655d4:	8fc20828 	lw	v0,2088(s8)
  4655d8:	00000000 	nop
  4655dc:	ac400000 	sw	zero,0(v0)
	    s->kind = PPK_PSK;	/* default */
  4655e0:	8fc20828 	lw	v0,2088(s8)
  4655e4:	00000000 	nop
  4655e8:	ac400004 	sw	zero,4(v0)
	    setchunk(s->u.preshared_secret, NULL, 0);
  4655ec:	8fc20828 	lw	v0,2088(s8)
  4655f0:	00000000 	nop
  4655f4:	ac400008 	sw	zero,8(v0)
  4655f8:	8fc20828 	lw	v0,2088(s8)
  4655fc:	00000000 	nop
  465600:	ac40000c 	sw	zero,12(v0)
	    s->next = NULL;
  465604:	8fc20828 	lw	v0,2088(s8)
  465608:	00000000 	nop
  46560c:	ac400078 	sw	zero,120(v0)

	    for (;;)
	    {
		if (tok[0] == '"' || tok[0] == '\'')
  465610:	8f828018 	lw	v0,-32744(gp)
  465614:	00000000 	nop
  465618:	24427be0 	addiu	v0,v0,31712
  46561c:	8c420000 	lw	v0,0(v0)
  465620:	00000000 	nop
  465624:	80430000 	lb	v1,0(v0)
  465628:	24020022 	li	v0,34
  46562c:	1062000c 	beq	v1,v0,465660 <process_secret_records+0x48c>
  465630:	00000000 	nop
  465634:	8f828018 	lw	v0,-32744(gp)
  465638:	00000000 	nop
  46563c:	24427be0 	addiu	v0,v0,31712
  465640:	8c420000 	lw	v0,0(v0)
  465644:	00000000 	nop
  465648:	80430000 	lb	v1,0(v0)
  46564c:	24020027 	li	v0,39
  465650:	10620003 	beq	v1,v0,465660 <process_secret_records+0x48c>
  465654:	00000000 	nop
  465658:	1000000c 	b	46568c <process_secret_records+0x4b8>
  46565c:	00000000 	nop
		{
		    /* found key part */
		    process_secret(s);
  465660:	8fc40828 	lw	a0,2088(s8)
  465664:	8f99803c 	lw	t9,-32708(gp)
  465668:	00000000 	nop
  46566c:	27394970 	addiu	t9,t9,18800
  465670:	00000000 	nop
  465674:	0320f809 	jalr	t9
  465678:	00000000 	nop
  46567c:	8fdc0018 	lw	gp,24(s8)
  465680:	00000000 	nop
		    break;
  465684:	1000fedd 	b	4651fc <process_secret_records+0x28>
  465688:	00000000 	nop
		}
		else if (tokeq(":"))
  46568c:	8f848018 	lw	a0,-32744(gp)
  465690:	00000000 	nop
  465694:	24847be0 	addiu	a0,a0,31712
  465698:	8c840000 	lw	a0,0(a0)
  46569c:	8f85802c 	lw	a1,-32724(gp)
  4656a0:	00000000 	nop
  4656a4:	24a532f8 	addiu	a1,a1,13048
  4656a8:	8f998428 	lw	t9,-31704(gp)
  4656ac:	00000000 	nop
  4656b0:	0320f809 	jalr	t9
  4656b4:	00000000 	nop
  4656b8:	8fdc0018 	lw	gp,24(s8)
  4656bc:	14400014 	bnez	v0,465710 <process_secret_records+0x53c>
  4656c0:	00000000 	nop
		{
		    /* found key part */
		    shift();	/* discard explicit separator */
  4656c4:	8f99803c 	lw	t9,-32708(gp)
  4656c8:	00000000 	nop
  4656cc:	273939f4 	addiu	t9,t9,14836
  4656d0:	00000000 	nop
  4656d4:	0320f809 	jalr	t9
  4656d8:	00000000 	nop
  4656dc:	8fdc0018 	lw	gp,24(s8)
  4656e0:	00000000 	nop
		    process_secret(s);
  4656e4:	8fc40828 	lw	a0,2088(s8)
  4656e8:	8f99803c 	lw	t9,-32708(gp)
  4656ec:	00000000 	nop
  4656f0:	27394970 	addiu	t9,t9,18800
  4656f4:	00000000 	nop
  4656f8:	0320f809 	jalr	t9
  4656fc:	00000000 	nop
  465700:	8fdc0018 	lw	gp,24(s8)
  465704:	00000000 	nop
		    break;
  465708:	1000febc 	b	4651fc <process_secret_records+0x28>
  46570c:	00000000 	nop
		}
		else
		{
		    /* an id
		     * See RFC2407 IPsec Domain of Interpretation 4.6.2
		     */
		    struct id id;
		    err_t ugh;

		    if (tokeq("%any"))
  465710:	8f848018 	lw	a0,-32744(gp)
  465714:	00000000 	nop
  465718:	24847be0 	addiu	a0,a0,31712
  46571c:	8c840000 	lw	a0,0(a0)
  465720:	8f85802c 	lw	a1,-32724(gp)
  465724:	00000000 	nop
  465728:	24a53548 	addiu	a1,a1,13640
  46572c:	8f998428 	lw	t9,-31704(gp)
  465730:	00000000 	nop
  465734:	0320f809 	jalr	t9
  465738:	00000000 	nop
  46573c:	8fdc0018 	lw	gp,24(s8)
  465740:	14400018 	bnez	v0,4657a4 <process_secret_records+0x5d0>
  465744:	00000000 	nop
		    {
			id = empty_id;
  465748:	27c40830 	addiu	a0,s8,2096
  46574c:	8f8582d8 	lw	a1,-32040(gp)
  465750:	24060028 	li	a2,40
  465754:	8f998a30 	lw	t9,-30160(gp)
  465758:	00000000 	nop
  46575c:	0320f809 	jalr	t9
  465760:	00000000 	nop
  465764:	8fdc0018 	lw	gp,24(s8)
  465768:	00000000 	nop
			id.kind = ID_IPV4_ADDR;
  46576c:	24020001 	li	v0,1
  465770:	afc20830 	sw	v0,2096(s8)
			ugh = anyaddr(AF_INET, &id.ip_addr);
  465774:	27c20830 	addiu	v0,s8,2096
  465778:	24420004 	addiu	v0,v0,4
  46577c:	24040002 	li	a0,2
  465780:	00402821 	move	a1,v0
  465784:	8f998814 	lw	t9,-30700(gp)
  465788:	00000000 	nop
  46578c:	0320f809 	jalr	t9
  465790:	00000000 	nop
  465794:	8fdc0018 	lw	gp,24(s8)
  465798:	afc20824 	sw	v0,2084(s8)
  46579c:	10000031 	b	465864 <process_secret_records+0x690>
  4657a0:	00000000 	nop
		    }
		    else if (tokeq("%any6"))
  4657a4:	8f848018 	lw	a0,-32744(gp)
  4657a8:	00000000 	nop
  4657ac:	24847be0 	addiu	a0,a0,31712
  4657b0:	8c840000 	lw	a0,0(a0)
  4657b4:	8f85802c 	lw	a1,-32724(gp)
  4657b8:	00000000 	nop
  4657bc:	24a53550 	addiu	a1,a1,13648
  4657c0:	8f998428 	lw	t9,-31704(gp)
  4657c4:	00000000 	nop
  4657c8:	0320f809 	jalr	t9
  4657cc:	00000000 	nop
  4657d0:	8fdc0018 	lw	gp,24(s8)
  4657d4:	14400018 	bnez	v0,465838 <process_secret_records+0x664>
  4657d8:	00000000 	nop
		    {
			id = empty_id;
  4657dc:	27c40830 	addiu	a0,s8,2096
  4657e0:	8f8582d8 	lw	a1,-32040(gp)
  4657e4:	24060028 	li	a2,40
  4657e8:	8f998a30 	lw	t9,-30160(gp)
  4657ec:	00000000 	nop
  4657f0:	0320f809 	jalr	t9
  4657f4:	00000000 	nop
  4657f8:	8fdc0018 	lw	gp,24(s8)
  4657fc:	00000000 	nop
			id.kind = ID_IPV6_ADDR;
  465800:	24020005 	li	v0,5
  465804:	afc20830 	sw	v0,2096(s8)
			ugh = anyaddr(AF_INET6, &id.ip_addr);
  465808:	27c20830 	addiu	v0,s8,2096
  46580c:	24420004 	addiu	v0,v0,4
  465810:	2404000a 	li	a0,10
  465814:	00402821 	move	a1,v0
  465818:	8f998814 	lw	t9,-30700(gp)
  46581c:	00000000 	nop
  465820:	0320f809 	jalr	t9
  465824:	00000000 	nop
  465828:	8fdc0018 	lw	gp,24(s8)
  46582c:	afc20824 	sw	v0,2084(s8)
  465830:	1000000c 	b	465864 <process_secret_records+0x690>
  465834:	00000000 	nop
		    }
		    else
		    {
			ugh = atoid(tok, &id);
  465838:	8f848018 	lw	a0,-32744(gp)
  46583c:	00000000 	nop
  465840:	24847be0 	addiu	a0,a0,31712
  465844:	8c840000 	lw	a0,0(a0)
  465848:	27c50830 	addiu	a1,s8,2096
  46584c:	8f998adc 	lw	t9,-29988(gp)
  465850:	00000000 	nop
  465854:	0320f809 	jalr	t9
  465858:	00000000 	nop
  46585c:	8fdc0018 	lw	gp,24(s8)
  465860:	afc20824 	sw	v0,2084(s8)
		    }

		    if (ugh != NULL)
  465864:	8fc20824 	lw	v0,2084(s8)
  465868:	00000000 	nop
  46586c:	10400021 	beqz	v0,4658f4 <process_secret_records+0x720>
  465870:	00000000 	nop
		    {
			loglog(RC_LOG_SERIOUS, "\"%s\" line %d: %s \"%s\""
  465874:	8fc20824 	lw	v0,2084(s8)
  465878:	00000000 	nop
  46587c:	afa20010 	sw	v0,16(sp)
  465880:	8f828018 	lw	v0,-32744(gp)
  465884:	00000000 	nop
  465888:	24427be0 	addiu	v0,v0,31712
  46588c:	8c420000 	lw	v0,0(v0)
  465890:	00000000 	nop
  465894:	afa20014 	sw	v0,20(sp)
  465898:	24040003 	li	a0,3
  46589c:	8f85802c 	lw	a1,-32724(gp)
  4658a0:	00000000 	nop
  4658a4:	24a53558 	addiu	a1,a1,13656
  4658a8:	8f828018 	lw	v0,-32744(gp)
  4658ac:	00000000 	nop
  4658b0:	244232f8 	addiu	v0,v0,13048
  4658b4:	8c420000 	lw	v0,0(v0)
  4658b8:	00000000 	nop
  4658bc:	8c460004 	lw	a2,4(v0)
  4658c0:	8f828018 	lw	v0,-32744(gp)
  4658c4:	00000000 	nop
  4658c8:	244232f8 	addiu	v0,v0,13048
  4658cc:	8c420000 	lw	v0,0(v0)
  4658d0:	00000000 	nop
  4658d4:	8c470010 	lw	a3,16(v0)
  4658d8:	8f998c48 	lw	t9,-29624(gp)
  4658dc:	00000000 	nop
  4658e0:	0320f809 	jalr	t9
  4658e4:	00000000 	nop
  4658e8:	8fdc0018 	lw	gp,24(s8)
  4658ec:	10000027 	b	46598c <process_secret_records+0x7b8>
  4658f0:	00000000 	nop
			    , sfp->filename, sfp->lino, ugh, tok);
		    }
		    else
		    {
			struct id_list *i = alloc_thing(struct id_list
  4658f4:	2404002c 	li	a0,44
  4658f8:	8f85802c 	lw	a1,-32724(gp)
  4658fc:	00000000 	nop
  465900:	24a53570 	addiu	a1,a1,13680
  465904:	8f998084 	lw	t9,-32636(gp)
  465908:	00000000 	nop
  46590c:	0320f809 	jalr	t9
  465910:	00000000 	nop
  465914:	8fdc0018 	lw	gp,24(s8)
  465918:	afc20820 	sw	v0,2080(s8)
			    , "id_list");

			i->id = id;
  46591c:	8fc20820 	lw	v0,2080(s8)
  465920:	00000000 	nop
  465924:	00402021 	move	a0,v0
  465928:	27c50830 	addiu	a1,s8,2096
  46592c:	24060028 	li	a2,40
  465930:	8f998a30 	lw	t9,-30160(gp)
  465934:	00000000 	nop
  465938:	0320f809 	jalr	t9
  46593c:	00000000 	nop
  465940:	8fdc0018 	lw	gp,24(s8)
  465944:	00000000 	nop
			unshare_id_content(&i->id);
  465948:	8fc40820 	lw	a0,2080(s8)
  46594c:	8f99847c 	lw	t9,-31620(gp)
  465950:	00000000 	nop
  465954:	0320f809 	jalr	t9
  465958:	00000000 	nop
  46595c:	8fdc0018 	lw	gp,24(s8)
  465960:	00000000 	nop
			i->next = s->ids;
  465964:	8fc20828 	lw	v0,2088(s8)
  465968:	00000000 	nop
  46596c:	8c430000 	lw	v1,0(v0)
  465970:	8fc20820 	lw	v0,2080(s8)
  465974:	00000000 	nop
  465978:	ac430028 	sw	v1,40(v0)
			s->ids = i;
  46597c:	8fc30820 	lw	v1,2080(s8)
  465980:	8fc20828 	lw	v0,2088(s8)
  465984:	00000000 	nop
  465988:	ac430000 	sw	v1,0(v0)
			/* DBG_log("id type %d: %s %.*s", i->kind, ip_str(&i->ip_addr), (int)i->name.len, i->name.ptr); */
		    }
		    if (!shift())
  46598c:	8f99803c 	lw	t9,-32708(gp)
  465990:	00000000 	nop
  465994:	273939f4 	addiu	t9,t9,14836
  465998:	00000000 	nop
  46599c:	0320f809 	jalr	t9
  4659a0:	00000000 	nop
  4659a4:	8fdc0018 	lw	gp,24(s8)
  4659a8:	1440ff19 	bnez	v0,465610 <process_secret_records+0x43c>
  4659ac:	00000000 	nop
		    {
			/* unexpected Record Boundary or EOF */
			loglog(RC_LOG_SERIOUS, "\"%s\" line %d: unexpected end of id list"
  4659b0:	24040003 	li	a0,3
  4659b4:	8f85802c 	lw	a1,-32724(gp)
  4659b8:	00000000 	nop
  4659bc:	24a53578 	addiu	a1,a1,13688
  4659c0:	8f828018 	lw	v0,-32744(gp)
  4659c4:	00000000 	nop
  4659c8:	244232f8 	addiu	v0,v0,13048
  4659cc:	8c420000 	lw	v0,0(v0)
  4659d0:	00000000 	nop
  4659d4:	8c460004 	lw	a2,4(v0)
  4659d8:	8f828018 	lw	v0,-32744(gp)
  4659dc:	00000000 	nop
  4659e0:	244232f8 	addiu	v0,v0,13048
  4659e4:	8c420000 	lw	v0,0(v0)
  4659e8:	00000000 	nop
  4659ec:	8c470010 	lw	a3,16(v0)
  4659f0:	8f998c48 	lw	t9,-29624(gp)
  4659f4:	00000000 	nop
  4659f8:	0320f809 	jalr	t9
  4659fc:	00000000 	nop
  465a00:	8fdc0018 	lw	gp,24(s8)
  465a04:	00000000 	nop
			    , sfp->filename, sfp->lino);
			break;
  465a08:	1000fdfc 	b	4651fc <process_secret_records+0x28>
  465a0c:	00000000 	nop
		    }
		}
	    }
	}
    }
}
  465a10:	03c0e821 	move	sp,s8
  465a14:	8fbf0860 	lw	ra,2144(sp)
  465a18:	8fbe085c 	lw	s8,2140(sp)
  465a1c:	27bd0868 	addiu	sp,sp,2152
  465a20:	03e00008 	jr	ra
  465a24:	00000000 	nop

00465a28 <globugh>:
  465a28:	3c1c0fba 	lui	gp,0xfba
  465a2c:	279c6f48 	addiu	gp,gp,28488
  465a30:	0399e021 	addu	gp,gp,t9
  465a34:	27bdffd8 	addiu	sp,sp,-40
  465a38:	afbc0010 	sw	gp,16(sp)
  465a3c:	afbf0020 	sw	ra,32(sp)
  465a40:	afbe001c 	sw	s8,28(sp)
  465a44:	afbc0018 	sw	gp,24(sp)
  465a48:	03a0f021 	move	s8,sp
  465a4c:	afc40028 	sw	a0,40(s8)
  465a50:	afc5002c 	sw	a1,44(s8)

static int
globugh(const char *epath, int eerrno)
{
    log_errno_routine(eerrno, "problem with secrets file \"%s\"", epath);
  465a54:	8fc4002c 	lw	a0,44(s8)
  465a58:	8f85802c 	lw	a1,-32724(gp)
  465a5c:	00000000 	nop
  465a60:	24a535a0 	addiu	a1,a1,13728
  465a64:	8fc60028 	lw	a2,40(s8)
  465a68:	8f9988ec 	lw	t9,-30484(gp)
  465a6c:	00000000 	nop
  465a70:	0320f809 	jalr	t9
  465a74:	00000000 	nop
  465a78:	8fdc0010 	lw	gp,16(s8)
  465a7c:	00000000 	nop
    return 1;	/* stop glob */
  465a80:	24020001 	li	v0,1
}
  465a84:	03c0e821 	move	sp,s8
  465a88:	8fbf0020 	lw	ra,32(sp)
  465a8c:	8fbe001c 	lw	s8,28(sp)
  465a90:	27bd0028 	addiu	sp,sp,40
  465a94:	03e00008 	jr	ra
  465a98:	00000000 	nop

00465a9c <process_secrets_file>:
  465a9c:	3c1c0fba 	lui	gp,0xfba
  465aa0:	279c6ed4 	addiu	gp,gp,28372
  465aa4:	0399e021 	addu	gp,gp,t9
  465aa8:	27bdf770 	addiu	sp,sp,-2192
  465aac:	afbc0010 	sw	gp,16(sp)
  465ab0:	afbf0888 	sw	ra,2184(sp)
  465ab4:	afbe0884 	sw	s8,2180(sp)
  465ab8:	afbc0880 	sw	gp,2176(sp)
  465abc:	03a0f021 	move	s8,sp
  465ac0:	afc40890 	sw	a0,2192(s8)

static void
process_secrets_file(const char *file_pat)
{
    struct secrets_file_position pos;
    char **fnp;
    glob_t globbuf;

    pos.depth = sfp == NULL? 0 : sfp->depth + 1;
  465ac4:	8f828018 	lw	v0,-32744(gp)
  465ac8:	00000000 	nop
  465acc:	244232f8 	addiu	v0,v0,13048
  465ad0:	8c420000 	lw	v0,0(v0)
  465ad4:	00000000 	nop
  465ad8:	1040000c 	beqz	v0,465b0c <process_secrets_file+0x70>
  465adc:	00000000 	nop
  465ae0:	8f828018 	lw	v0,-32744(gp)
  465ae4:	00000000 	nop
  465ae8:	244232f8 	addiu	v0,v0,13048
  465aec:	8c420000 	lw	v0,0(v0)
  465af0:	00000000 	nop
  465af4:	8c420000 	lw	v0,0(v0)
  465af8:	00000000 	nop
  465afc:	24420001 	addiu	v0,v0,1
  465b00:	afc20874 	sw	v0,2164(s8)
  465b04:	10000002 	b	465b10 <process_secrets_file+0x74>
  465b08:	00000000 	nop
  465b0c:	afc00874 	sw	zero,2164(s8)
  465b10:	8fc20874 	lw	v0,2164(s8)
  465b14:	00000000 	nop
  465b18:	afc20018 	sw	v0,24(s8)

    if (pos.depth > 10)
  465b1c:	8fc20018 	lw	v0,24(s8)
  465b20:	00000000 	nop
  465b24:	2842000b 	slti	v0,v0,11
  465b28:	1440000e 	bnez	v0,465b64 <process_secrets_file+0xc8>
  465b2c:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "preshared secrets file \"%s\" nested too deeply", file_pat);
  465b30:	24040003 	li	a0,3
  465b34:	8f85802c 	lw	a1,-32724(gp)
  465b38:	00000000 	nop
  465b3c:	24a535c0 	addiu	a1,a1,13760
  465b40:	8fc60890 	lw	a2,2192(s8)
  465b44:	8f998c48 	lw	t9,-29624(gp)
  465b48:	00000000 	nop
  465b4c:	0320f809 	jalr	t9
  465b50:	00000000 	nop
  465b54:	8fdc0010 	lw	gp,16(s8)
  465b58:	00000000 	nop
	return;
  465b5c:	100000d7 	b	465ebc <process_secrets_file+0x420>
  465b60:	00000000 	nop
    }

    /* do globbing */
    {
	int r = glob(file_pat, GLOB_ERR, globugh, &globbuf);
  465b64:	8fc40890 	lw	a0,2192(s8)
  465b68:	24050001 	li	a1,1
  465b6c:	8f86803c 	lw	a2,-32708(gp)
  465b70:	00000000 	nop
  465b74:	24c65a28 	addiu	a2,a2,23080
  465b78:	27c70848 	addiu	a3,s8,2120
  465b7c:	8f998a18 	lw	t9,-30184(gp)
  465b80:	00000000 	nop
  465b84:	0320f809 	jalr	t9
  465b88:	00000000 	nop
  465b8c:	8fdc0010 	lw	gp,16(s8)
  465b90:	afc20870 	sw	v0,2160(s8)

	if (r != 0)
  465b94:	8fc20870 	lw	v0,2160(s8)
  465b98:	00000000 	nop
  465b9c:	1040004a 	beqz	v0,465cc8 <process_secrets_file+0x22c>
  465ba0:	00000000 	nop
	{
	    switch (r)
  465ba4:	8fc30870 	lw	v1,2160(s8)
  465ba8:	00000000 	nop
  465bac:	afc30878 	sw	v1,2168(s8)
  465bb0:	24020002 	li	v0,2
  465bb4:	8fc30878 	lw	v1,2168(s8)
  465bb8:	00000000 	nop
  465bbc:	10620039 	beq	v1,v0,465ca4 <process_secrets_file+0x208>
  465bc0:	00000000 	nop
  465bc4:	8fc30878 	lw	v1,2168(s8)
  465bc8:	00000000 	nop
  465bcc:	28620003 	slti	v0,v1,3
  465bd0:	10400008 	beqz	v0,465bf4 <process_secrets_file+0x158>
  465bd4:	00000000 	nop
  465bd8:	24020001 	li	v0,1
  465bdc:	8fc30878 	lw	v1,2168(s8)
  465be0:	00000000 	nop
  465be4:	1062000a 	beq	v1,v0,465c10 <process_secrets_file+0x174>
  465be8:	00000000 	nop
  465bec:	10000022 	b	465c78 <process_secrets_file+0x1dc>
  465bf0:	00000000 	nop
  465bf4:	24020003 	li	v0,3
  465bf8:	8fc30878 	lw	v1,2168(s8)
  465bfc:	00000000 	nop
  465c00:	10620010 	beq	v1,v0,465c44 <process_secrets_file+0x1a8>
  465c04:	00000000 	nop
  465c08:	1000001b 	b	465c78 <process_secrets_file+0x1dc>
  465c0c:	00000000 	nop
	    {
	    case GLOB_NOSPACE:
		loglog(RC_LOG_SERIOUS, "out of space processing secrets filename \"%s\"", file_pat);
  465c10:	24040003 	li	a0,3
  465c14:	8f85802c 	lw	a1,-32724(gp)
  465c18:	00000000 	nop
  465c1c:	24a535f0 	addiu	a1,a1,13808
  465c20:	8fc60890 	lw	a2,2192(s8)
  465c24:	8f998c48 	lw	t9,-29624(gp)
  465c28:	00000000 	nop
  465c2c:	0320f809 	jalr	t9
  465c30:	00000000 	nop
  465c34:	8fdc0010 	lw	gp,16(s8)
  465c38:	00000000 	nop
		break;
  465c3c:	10000019 	b	465ca4 <process_secrets_file+0x208>
  465c40:	00000000 	nop
	    case GLOB_ABORTED:
		break;	/* already logged */
	    case GLOB_NOMATCH:
		loglog(RC_LOG_SERIOUS, "no secrets filename matched \"%s\"", file_pat);
  465c44:	24040003 	li	a0,3
  465c48:	8f85802c 	lw	a1,-32724(gp)
  465c4c:	00000000 	nop
  465c50:	24a53620 	addiu	a1,a1,13856
  465c54:	8fc60890 	lw	a2,2192(s8)
  465c58:	8f998c48 	lw	t9,-29624(gp)
  465c5c:	00000000 	nop
  465c60:	0320f809 	jalr	t9
  465c64:	00000000 	nop
  465c68:	8fdc0010 	lw	gp,16(s8)
  465c6c:	00000000 	nop
		break;
  465c70:	1000000c 	b	465ca4 <process_secrets_file+0x208>
  465c74:	00000000 	nop
	    default:
		loglog(RC_LOG_SERIOUS, "unknown glob error %d", r);
  465c78:	24040003 	li	a0,3
  465c7c:	8f85802c 	lw	a1,-32724(gp)
  465c80:	00000000 	nop
  465c84:	24a53644 	addiu	a1,a1,13892
  465c88:	8fc60870 	lw	a2,2160(s8)
  465c8c:	8f998c48 	lw	t9,-29624(gp)
  465c90:	00000000 	nop
  465c94:	0320f809 	jalr	t9
  465c98:	00000000 	nop
  465c9c:	8fdc0010 	lw	gp,16(s8)
  465ca0:	00000000 	nop
		break;
	    }
	    globfree(&globbuf);
  465ca4:	27c40848 	addiu	a0,s8,2120
  465ca8:	8f9982ec 	lw	t9,-32020(gp)
  465cac:	00000000 	nop
  465cb0:	0320f809 	jalr	t9
  465cb4:	00000000 	nop
  465cb8:	8fdc0010 	lw	gp,16(s8)
  465cbc:	00000000 	nop
	    return;
  465cc0:	1000007e 	b	465ebc <process_secrets_file+0x420>
  465cc4:	00000000 	nop
	}
    }

    pos.previous = sfp;
  465cc8:	8f828018 	lw	v0,-32744(gp)
  465ccc:	00000000 	nop
  465cd0:	244232f8 	addiu	v0,v0,13048
  465cd4:	8c420000 	lw	v0,0(v0)
  465cd8:	00000000 	nop
  465cdc:	afc20838 	sw	v0,2104(s8)
    sfp = &pos;
  465ce0:	27c20018 	addiu	v0,s8,24
  465ce4:	8f818018 	lw	at,-32744(gp)
  465ce8:	00000000 	nop
  465cec:	242132f8 	addiu	at,at,13048
  465cf0:	ac220000 	sw	v0,0(at)

    /* for each file... */
    for (fnp = globbuf.gl_pathv; *fnp != NULL; fnp++)
  465cf4:	8fc2084c 	lw	v0,2124(s8)
  465cf8:	00000000 	nop
  465cfc:	afc20840 	sw	v0,2112(s8)
  465d00:	8fc20840 	lw	v0,2112(s8)
  465d04:	00000000 	nop
  465d08:	8c420000 	lw	v0,0(v0)
  465d0c:	00000000 	nop
  465d10:	14400003 	bnez	v0,465d20 <process_secrets_file+0x284>
  465d14:	00000000 	nop
  465d18:	10000063 	b	465ea8 <process_secrets_file+0x40c>
  465d1c:	00000000 	nop
    {
	pos.filename = *fnp;
  465d20:	8fc20840 	lw	v0,2112(s8)
  465d24:	00000000 	nop
  465d28:	8c420000 	lw	v0,0(v0)
  465d2c:	00000000 	nop
  465d30:	afc2001c 	sw	v0,28(s8)
	pos.fp = fopen(pos.filename, "r");
  465d34:	8fc4001c 	lw	a0,28(s8)
  465d38:	8f85802c 	lw	a1,-32724(gp)
  465d3c:	00000000 	nop
  465d40:	24a5365c 	addiu	a1,a1,13916
  465d44:	8f99850c 	lw	t9,-31476(gp)
  465d48:	00000000 	nop
  465d4c:	0320f809 	jalr	t9
  465d50:	00000000 	nop
  465d54:	8fdc0010 	lw	gp,16(s8)
  465d58:	afc20020 	sw	v0,32(s8)
	if (pos.fp == NULL)
  465d5c:	8fc20020 	lw	v0,32(s8)
  465d60:	00000000 	nop
  465d64:	14400016 	bnez	v0,465dc0 <process_secrets_file+0x324>
  465d68:	00000000 	nop
	{
	    log_errno((e, "could not open \"%s\"", pos.filename));
  465d6c:	8f998234 	lw	t9,-32204(gp)
  465d70:	00000000 	nop
  465d74:	0320f809 	jalr	t9
  465d78:	00000000 	nop
  465d7c:	8fdc0010 	lw	gp,16(s8)
  465d80:	8c420000 	lw	v0,0(v0)
  465d84:	00000000 	nop
  465d88:	afc20870 	sw	v0,2160(s8)
  465d8c:	8fc40870 	lw	a0,2160(s8)
  465d90:	8f85802c 	lw	a1,-32724(gp)
  465d94:	00000000 	nop
  465d98:	24a53660 	addiu	a1,a1,13920
  465d9c:	8fc6001c 	lw	a2,28(s8)
  465da0:	8f9988ec 	lw	t9,-30484(gp)
  465da4:	00000000 	nop
  465da8:	0320f809 	jalr	t9
  465dac:	00000000 	nop
  465db0:	8fdc0010 	lw	gp,16(s8)
  465db4:	00000000 	nop
	    continue;	/* try the next one */
  465db8:	10000035 	b	465e90 <process_secrets_file+0x3f4>
  465dbc:	00000000 	nop
	}

	plog("loading secrets from \"%s\"", pos.filename);
  465dc0:	8f84802c 	lw	a0,-32724(gp)
  465dc4:	00000000 	nop
  465dc8:	24843674 	addiu	a0,a0,13940
  465dcc:	8fc5001c 	lw	a1,28(s8)
  465dd0:	8f998abc 	lw	t9,-30020(gp)
  465dd4:	00000000 	nop
  465dd8:	0320f809 	jalr	t9
  465ddc:	00000000 	nop
  465de0:	8fdc0010 	lw	gp,16(s8)
  465de4:	00000000 	nop

	pos.lino = 0;
  465de8:	afc00028 	sw	zero,40(s8)
	pos.bdry = B_none;
  465dec:	afc00024 	sw	zero,36(s8)

	pos.cur = pos.buffer;	/* nothing loaded yet */
  465df0:	27c2002c 	addiu	v0,s8,44
  465df4:	afc20830 	sw	v0,2096(s8)
	pos.under = *pos.cur = '\0';
  465df8:	8fc20830 	lw	v0,2096(s8)
  465dfc:	00000000 	nop
  465e00:	a0400000 	sb	zero,0(v0)
  465e04:	a3c00834 	sb	zero,2100(s8)

	(void) shift();	/* prime tok */
  465e08:	8f99803c 	lw	t9,-32708(gp)
  465e0c:	00000000 	nop
  465e10:	273939f4 	addiu	t9,t9,14836
  465e14:	00000000 	nop
  465e18:	0320f809 	jalr	t9
  465e1c:	00000000 	nop
  465e20:	8fdc0010 	lw	gp,16(s8)
  465e24:	00000000 	nop
	(void) flushline("file starts with indentation (continuation notation)");
  465e28:	8f84802c 	lw	a0,-32724(gp)
  465e2c:	00000000 	nop
  465e30:	24843690 	addiu	a0,a0,13968
  465e34:	8f99803c 	lw	t9,-32708(gp)
  465e38:	00000000 	nop
  465e3c:	273940d0 	addiu	t9,t9,16592
  465e40:	00000000 	nop
  465e44:	0320f809 	jalr	t9
  465e48:	00000000 	nop
  465e4c:	8fdc0010 	lw	gp,16(s8)
  465e50:	00000000 	nop
	process_secret_records();
  465e54:	8f99803c 	lw	t9,-32708(gp)
  465e58:	00000000 	nop
  465e5c:	273951d4 	addiu	t9,t9,20948
  465e60:	00000000 	nop
  465e64:	0320f809 	jalr	t9
  465e68:	00000000 	nop
  465e6c:	8fdc0010 	lw	gp,16(s8)
  465e70:	00000000 	nop
	fclose(pos.fp);
  465e74:	8fc40020 	lw	a0,32(s8)
  465e78:	8f9984c0 	lw	t9,-31552(gp)
  465e7c:	00000000 	nop
  465e80:	0320f809 	jalr	t9
  465e84:	00000000 	nop
  465e88:	8fdc0010 	lw	gp,16(s8)
  465e8c:	00000000 	nop
  465e90:	8fc20840 	lw	v0,2112(s8)
  465e94:	00000000 	nop
  465e98:	24420004 	addiu	v0,v0,4
  465e9c:	afc20840 	sw	v0,2112(s8)
  465ea0:	1000ff97 	b	465d00 <process_secrets_file+0x264>
  465ea4:	00000000 	nop
    }

    sfp = pos.previous;	/* restore old state */
  465ea8:	8fc20838 	lw	v0,2104(s8)
  465eac:	8f818018 	lw	at,-32744(gp)
  465eb0:	00000000 	nop
  465eb4:	242132f8 	addiu	at,at,13048
  465eb8:	ac220000 	sw	v0,0(at)
}
  465ebc:	03c0e821 	move	sp,s8
  465ec0:	8fbf0888 	lw	ra,2184(sp)
  465ec4:	8fbe0884 	lw	s8,2180(sp)
  465ec8:	27bd0890 	addiu	sp,sp,2192
  465ecc:	03e00008 	jr	ra
  465ed0:	00000000 	nop

00465ed4 <free_preshared_secrets>:
  465ed4:	3c1c0fba 	lui	gp,0xfba
  465ed8:	279c6a9c 	addiu	gp,gp,27292
  465edc:	0399e021 	addu	gp,gp,t9
  465ee0:	27bdffc0 	addiu	sp,sp,-64
  465ee4:	afbc0010 	sw	gp,16(sp)
  465ee8:	afbf0038 	sw	ra,56(sp)
  465eec:	afbe0034 	sw	s8,52(sp)
  465ef0:	afbc0030 	sw	gp,48(sp)
  465ef4:	03a0f021 	move	s8,sp

void
free_preshared_secrets(void)
{
    if (secrets != NULL)
  465ef8:	8f828b7c 	lw	v0,-29828(gp)
  465efc:	00000000 	nop
  465f00:	8c420000 	lw	v0,0(v0)
  465f04:	00000000 	nop
  465f08:	104000b8 	beqz	v0,4661ec <free_preshared_secrets+0x318>
  465f0c:	00000000 	nop
    {
	struct secret *s, *ns;

	plog("forgetting secrets");
  465f10:	8f84802c 	lw	a0,-32724(gp)
  465f14:	00000000 	nop
  465f18:	248436c8 	addiu	a0,a0,14024
  465f1c:	8f998abc 	lw	t9,-30020(gp)
  465f20:	00000000 	nop
  465f24:	0320f809 	jalr	t9
  465f28:	00000000 	nop
  465f2c:	8fdc0010 	lw	gp,16(s8)
  465f30:	00000000 	nop

	for (s = secrets; s != NULL; s = ns)
  465f34:	8f828b7c 	lw	v0,-29828(gp)
  465f38:	00000000 	nop
  465f3c:	8c420000 	lw	v0,0(v0)
  465f40:	00000000 	nop
  465f44:	afc20018 	sw	v0,24(s8)
  465f48:	8fc20018 	lw	v0,24(s8)
  465f4c:	00000000 	nop
  465f50:	14400003 	bnez	v0,465f60 <free_preshared_secrets+0x8c>
  465f54:	00000000 	nop
  465f58:	100000a1 	b	4661e0 <free_preshared_secrets+0x30c>
  465f5c:	00000000 	nop
	{
	    struct id_list *i, *ni;

	    ns = s->next;	/* grab before freeing s */
  465f60:	8fc20018 	lw	v0,24(s8)
  465f64:	00000000 	nop
  465f68:	8c420078 	lw	v0,120(v0)
  465f6c:	00000000 	nop
  465f70:	afc2001c 	sw	v0,28(s8)
	    for (i = s->ids; i != NULL; i = ni)
  465f74:	8fc20018 	lw	v0,24(s8)
  465f78:	00000000 	nop
  465f7c:	8c420000 	lw	v0,0(v0)
  465f80:	00000000 	nop
  465f84:	afc20020 	sw	v0,32(s8)
  465f88:	8fc20020 	lw	v0,32(s8)
  465f8c:	00000000 	nop
  465f90:	14400003 	bnez	v0,465fa0 <free_preshared_secrets+0xcc>
  465f94:	00000000 	nop
  465f98:	10000019 	b	466000 <free_preshared_secrets+0x12c>
  465f9c:	00000000 	nop
	    {
		ni = i->next;	/* grab before freeing i */
  465fa0:	8fc20020 	lw	v0,32(s8)
  465fa4:	00000000 	nop
  465fa8:	8c420028 	lw	v0,40(v0)
  465fac:	00000000 	nop
  465fb0:	afc20024 	sw	v0,36(s8)
		free_id_content(&i->id);
  465fb4:	8fc40020 	lw	a0,32(s8)
  465fb8:	8f9982f0 	lw	t9,-32016(gp)
  465fbc:	00000000 	nop
  465fc0:	0320f809 	jalr	t9
  465fc4:	00000000 	nop
  465fc8:	8fdc0010 	lw	gp,16(s8)
  465fcc:	00000000 	nop
		pfree(i);
  465fd0:	8fc40020 	lw	a0,32(s8)
  465fd4:	8f998094 	lw	t9,-32620(gp)
  465fd8:	00000000 	nop
  465fdc:	0320f809 	jalr	t9
  465fe0:	00000000 	nop
  465fe4:	8fdc0010 	lw	gp,16(s8)
  465fe8:	00000000 	nop
  465fec:	8fc20024 	lw	v0,36(s8)
  465ff0:	00000000 	nop
  465ff4:	afc20020 	sw	v0,32(s8)
  465ff8:	1000ffe3 	b	465f88 <free_preshared_secrets+0xb4>
  465ffc:	00000000 	nop
	    }
	    switch (s->kind)
  466000:	8fc20018 	lw	v0,24(s8)
  466004:	00000000 	nop
  466008:	8c420004 	lw	v0,4(v0)
  46600c:	00000000 	nop
  466010:	afc20028 	sw	v0,40(s8)
  466014:	8fc20028 	lw	v0,40(s8)
  466018:	00000000 	nop
  46601c:	10400013 	beqz	v0,46606c <free_preshared_secrets+0x198>
  466020:	00000000 	nop
  466024:	24020001 	li	v0,1
  466028:	8fc30028 	lw	v1,40(s8)
  46602c:	00000000 	nop
  466030:	10620019 	beq	v1,v0,466098 <free_preshared_secrets+0x1c4>
  466034:	00000000 	nop
	    {
	    case PPK_PSK:
		pfree(s->u.preshared_secret.ptr);
		break;
	    case PPK_RSA:
		free_RSA_public_content(&s->u.RSA_private_key.pub);
		mpz_clear(&s->u.RSA_private_key.d);
		mpz_clear(&s->u.RSA_private_key.p);
		mpz_clear(&s->u.RSA_private_key.q);
		mpz_clear(&s->u.RSA_private_key.dP);
		mpz_clear(&s->u.RSA_private_key.dQ);
		mpz_clear(&s->u.RSA_private_key.qInv);
		break;
	    default:
		impossible();
  466038:	8f84802c 	lw	a0,-32724(gp)
  46603c:	00000000 	nop
  466040:	24843114 	addiu	a0,a0,12564
  466044:	8f85802c 	lw	a1,-32724(gp)
  466048:	00000000 	nop
  46604c:	24a52fbc 	addiu	a1,a1,12220
  466050:	24060474 	li	a2,1140
  466054:	8f998bb8 	lw	t9,-29768(gp)
  466058:	00000000 	nop
  46605c:	0320f809 	jalr	t9
  466060:	00000000 	nop
  466064:	8fdc0010 	lw	gp,16(s8)
  466068:	00000000 	nop
  46606c:	8fc20018 	lw	v0,24(s8)
  466070:	00000000 	nop
  466074:	8c440008 	lw	a0,8(v0)
  466078:	8f998094 	lw	t9,-32620(gp)
  46607c:	00000000 	nop
  466080:	0320f809 	jalr	t9
  466084:	00000000 	nop
  466088:	8fdc0010 	lw	gp,16(s8)
  46608c:	00000000 	nop
  466090:	10000047 	b	4661b0 <free_preshared_secrets+0x2dc>
  466094:	00000000 	nop
  466098:	8fc20018 	lw	v0,24(s8)
  46609c:	00000000 	nop
  4660a0:	24420008 	addiu	v0,v0,8
  4660a4:	00402021 	move	a0,v0
  4660a8:	8f9986ac 	lw	t9,-31060(gp)
  4660ac:	00000000 	nop
  4660b0:	0320f809 	jalr	t9
  4660b4:	00000000 	nop
  4660b8:	8fdc0010 	lw	gp,16(s8)
  4660bc:	00000000 	nop
  4660c0:	8fc20018 	lw	v0,24(s8)
  4660c4:	00000000 	nop
  4660c8:	24420030 	addiu	v0,v0,48
  4660cc:	00402021 	move	a0,v0
  4660d0:	8f998c40 	lw	t9,-29632(gp)
  4660d4:	00000000 	nop
  4660d8:	0320f809 	jalr	t9
  4660dc:	00000000 	nop
  4660e0:	8fdc0010 	lw	gp,16(s8)
  4660e4:	00000000 	nop
  4660e8:	8fc20018 	lw	v0,24(s8)
  4660ec:	00000000 	nop
  4660f0:	2442003c 	addiu	v0,v0,60
  4660f4:	00402021 	move	a0,v0
  4660f8:	8f998c40 	lw	t9,-29632(gp)
  4660fc:	00000000 	nop
  466100:	0320f809 	jalr	t9
  466104:	00000000 	nop
  466108:	8fdc0010 	lw	gp,16(s8)
  46610c:	00000000 	nop
  466110:	8fc20018 	lw	v0,24(s8)
  466114:	00000000 	nop
  466118:	24420048 	addiu	v0,v0,72
  46611c:	00402021 	move	a0,v0
  466120:	8f998c40 	lw	t9,-29632(gp)
  466124:	00000000 	nop
  466128:	0320f809 	jalr	t9
  46612c:	00000000 	nop
  466130:	8fdc0010 	lw	gp,16(s8)
  466134:	00000000 	nop
  466138:	8fc20018 	lw	v0,24(s8)
  46613c:	00000000 	nop
  466140:	24420054 	addiu	v0,v0,84
  466144:	00402021 	move	a0,v0
  466148:	8f998c40 	lw	t9,-29632(gp)
  46614c:	00000000 	nop
  466150:	0320f809 	jalr	t9
  466154:	00000000 	nop
  466158:	8fdc0010 	lw	gp,16(s8)
  46615c:	00000000 	nop
  466160:	8fc20018 	lw	v0,24(s8)
  466164:	00000000 	nop
  466168:	24420060 	addiu	v0,v0,96
  46616c:	00402021 	move	a0,v0
  466170:	8f998c40 	lw	t9,-29632(gp)
  466174:	00000000 	nop
  466178:	0320f809 	jalr	t9
  46617c:	00000000 	nop
  466180:	8fdc0010 	lw	gp,16(s8)
  466184:	00000000 	nop
  466188:	8fc20018 	lw	v0,24(s8)
  46618c:	00000000 	nop
  466190:	2442006c 	addiu	v0,v0,108
  466194:	00402021 	move	a0,v0
  466198:	8f998c40 	lw	t9,-29632(gp)
  46619c:	00000000 	nop
  4661a0:	0320f809 	jalr	t9
  4661a4:	00000000 	nop
  4661a8:	8fdc0010 	lw	gp,16(s8)
  4661ac:	00000000 	nop
	    }
	    pfree(s);
  4661b0:	8fc40018 	lw	a0,24(s8)
  4661b4:	8f998094 	lw	t9,-32620(gp)
  4661b8:	00000000 	nop
  4661bc:	0320f809 	jalr	t9
  4661c0:	00000000 	nop
  4661c4:	8fdc0010 	lw	gp,16(s8)
  4661c8:	00000000 	nop
  4661cc:	8fc2001c 	lw	v0,28(s8)
  4661d0:	00000000 	nop
  4661d4:	afc20018 	sw	v0,24(s8)
  4661d8:	1000ff5b 	b	465f48 <free_preshared_secrets+0x74>
  4661dc:	00000000 	nop
	}
	secrets = NULL;
  4661e0:	8f818b7c 	lw	at,-29828(gp)
  4661e4:	00000000 	nop
  4661e8:	ac200000 	sw	zero,0(at)
    }
}
  4661ec:	03c0e821 	move	sp,s8
  4661f0:	8fbf0038 	lw	ra,56(sp)
  4661f4:	8fbe0034 	lw	s8,52(sp)
  4661f8:	27bd0040 	addiu	sp,sp,64
  4661fc:	03e00008 	jr	ra
  466200:	00000000 	nop

00466204 <load_preshared_secrets>:
  466204:	3c1c0fba 	lui	gp,0xfba
  466208:	279c676c 	addiu	gp,gp,26476
  46620c:	0399e021 	addu	gp,gp,t9
  466210:	27bdffd8 	addiu	sp,sp,-40
  466214:	afbc0010 	sw	gp,16(sp)
  466218:	afbf0020 	sw	ra,32(sp)
  46621c:	afbe001c 	sw	s8,28(sp)
  466220:	afbc0018 	sw	gp,24(sp)
  466224:	03a0f021 	move	s8,sp

void
load_preshared_secrets(void)
{
    free_preshared_secrets();
  466228:	8f998bcc 	lw	t9,-29748(gp)
  46622c:	00000000 	nop
  466230:	0320f809 	jalr	t9
  466234:	00000000 	nop
  466238:	8fdc0010 	lw	gp,16(s8)
  46623c:	00000000 	nop
    (void) process_secrets_file(shared_secrets_file);
  466240:	8f848104 	lw	a0,-32508(gp)
  466244:	00000000 	nop
  466248:	8c840000 	lw	a0,0(a0)
  46624c:	8f99803c 	lw	t9,-32708(gp)
  466250:	00000000 	nop
  466254:	27395a9c 	addiu	t9,t9,23196
  466258:	00000000 	nop
  46625c:	0320f809 	jalr	t9
  466260:	00000000 	nop
  466264:	8fdc0010 	lw	gp,16(s8)
  466268:	00000000 	nop
}
  46626c:	03c0e821 	move	sp,s8
  466270:	8fbf0020 	lw	ra,32(sp)
  466274:	8fbe001c 	lw	s8,28(sp)
  466278:	27bd0028 	addiu	sp,sp,40
  46627c:	03e00008 	jr	ra
  466280:	00000000 	nop

00466284 <public_key_from_rsa>:
  466284:	3c1c0fba 	lui	gp,0xfba
  466288:	279c66ec 	addiu	gp,gp,26348
  46628c:	0399e021 	addu	gp,gp,t9
  466290:	27bdffc8 	addiu	sp,sp,-56
  466294:	afbc0010 	sw	gp,16(sp)
  466298:	afbf0030 	sw	ra,48(sp)
  46629c:	afbe002c 	sw	s8,44(sp)
  4662a0:	afbc0028 	sw	gp,40(sp)
  4662a4:	03a0f021 	move	s8,sp
  4662a8:	afc40038 	sw	a0,56(s8)

/* public key machinery */

struct pubkeyrec *
public_key_from_rsa(const struct RSA_public_key *k)
{
    struct pubkeyrec *p = alloc_thing(struct pubkeyrec, "pubkeyrec");
  4662ac:	2404006c 	li	a0,108
  4662b0:	8f85802c 	lw	a1,-32724(gp)
  4662b4:	00000000 	nop
  4662b8:	24a53108 	addiu	a1,a1,12552
  4662bc:	8f998084 	lw	t9,-32636(gp)
  4662c0:	00000000 	nop
  4662c4:	0320f809 	jalr	t9
  4662c8:	00000000 	nop
  4662cc:	8fdc0010 	lw	gp,16(s8)
  4662d0:	afc20018 	sw	v0,24(s8)

    p->id = empty_id;	/* don't know, doesn't matter */
  4662d4:	8fc20018 	lw	v0,24(s8)
  4662d8:	00000000 	nop
  4662dc:	00402021 	move	a0,v0
  4662e0:	8f8582d8 	lw	a1,-32040(gp)
  4662e4:	24060028 	li	a2,40
  4662e8:	8f998a30 	lw	t9,-30160(gp)
  4662ec:	00000000 	nop
  4662f0:	0320f809 	jalr	t9
  4662f4:	00000000 	nop
  4662f8:	8fdc0010 	lw	gp,16(s8)
  4662fc:	00000000 	nop
    p->issuer = empty_chunk;
  466300:	8fc30018 	lw	v1,24(s8)
  466304:	8f828708 	lw	v0,-30968(gp)
  466308:	00000000 	nop
  46630c:	8c420000 	lw	v0,0(v0)
  466310:	00000000 	nop
  466314:	ac620030 	sw	v0,48(v1)
  466318:	8f828708 	lw	v0,-30968(gp)
  46631c:	00000000 	nop
  466320:	8c420004 	lw	v0,4(v0)
  466324:	00000000 	nop
  466328:	ac620034 	sw	v0,52(v1)
    p->alg = PUBKEY_ALG_RSA;
  46632c:	24030001 	li	v1,1
  466330:	8fc20018 	lw	v0,24(s8)
  466334:	00000000 	nop
  466338:	ac43003c 	sw	v1,60(v0)

    p->u.rsa.k = k->k;
  46633c:	8fc20038 	lw	v0,56(s8)
  466340:	00000000 	nop
  466344:	8c43000c 	lw	v1,12(v0)
  466348:	8fc20018 	lw	v0,24(s8)
  46634c:	00000000 	nop
  466350:	ac43004c 	sw	v1,76(v0)
    mpz_init_set(&p->u.rsa.e, &k->e);
  466354:	8fc20018 	lw	v0,24(s8)
  466358:	00000000 	nop
  46635c:	2443005c 	addiu	v1,v0,92
  466360:	8fc20038 	lw	v0,56(s8)
  466364:	00000000 	nop
  466368:	2442001c 	addiu	v0,v0,28
  46636c:	00602021 	move	a0,v1
  466370:	00402821 	move	a1,v0
  466374:	8f998b54 	lw	t9,-29868(gp)
  466378:	00000000 	nop
  46637c:	0320f809 	jalr	t9
  466380:	00000000 	nop
  466384:	8fdc0010 	lw	gp,16(s8)
  466388:	00000000 	nop
    mpz_init_set(&p->u.rsa.n, &k->n);
  46638c:	8fc20018 	lw	v0,24(s8)
  466390:	00000000 	nop
  466394:	24430050 	addiu	v1,v0,80
  466398:	8fc20038 	lw	v0,56(s8)
  46639c:	00000000 	nop
  4663a0:	24420010 	addiu	v0,v0,16
  4663a4:	00602021 	move	a0,v1
  4663a8:	00402821 	move	a1,v0
  4663ac:	8f998b54 	lw	t9,-29868(gp)
  4663b0:	00000000 	nop
  4663b4:	0320f809 	jalr	t9
  4663b8:	00000000 	nop
  4663bc:	8fdc0010 	lw	gp,16(s8)
  4663c0:	00000000 	nop

    p->next = NULL;
  4663c4:	8fc20018 	lw	v0,24(s8)
  4663c8:	00000000 	nop
  4663cc:	ac400068 	sw	zero,104(v0)
    return p;
  4663d0:	8fc20018 	lw	v0,24(s8)
  4663d4:	00000000 	nop
}
  4663d8:	03c0e821 	move	sp,s8
  4663dc:	8fbf0030 	lw	ra,48(sp)
  4663e0:	8fbe002c 	lw	s8,44(sp)
  4663e4:	27bd0038 	addiu	sp,sp,56
  4663e8:	03e00008 	jr	ra
  4663ec:	00000000 	nop

004663f0 <free_RSA_public_content>:
  4663f0:	3c1c0fba 	lui	gp,0xfba
  4663f4:	279c6580 	addiu	gp,gp,25984
  4663f8:	0399e021 	addu	gp,gp,t9
  4663fc:	27bdffd8 	addiu	sp,sp,-40
  466400:	afbc0010 	sw	gp,16(sp)
  466404:	afbf0020 	sw	ra,32(sp)
  466408:	afbe001c 	sw	s8,28(sp)
  46640c:	afbc0018 	sw	gp,24(sp)
  466410:	03a0f021 	move	s8,sp
  466414:	afc40028 	sw	a0,40(s8)

void free_RSA_public_content(struct RSA_public_key *rsa)
{
    mpz_clear(&rsa->n);
  466418:	8fc20028 	lw	v0,40(s8)
  46641c:	00000000 	nop
  466420:	24420010 	addiu	v0,v0,16
  466424:	00402021 	move	a0,v0
  466428:	8f998c40 	lw	t9,-29632(gp)
  46642c:	00000000 	nop
  466430:	0320f809 	jalr	t9
  466434:	00000000 	nop
  466438:	8fdc0010 	lw	gp,16(s8)
  46643c:	00000000 	nop
    mpz_clear(&rsa->e);
  466440:	8fc20028 	lw	v0,40(s8)
  466444:	00000000 	nop
  466448:	2442001c 	addiu	v0,v0,28
  46644c:	00402021 	move	a0,v0
  466450:	8f998c40 	lw	t9,-29632(gp)
  466454:	00000000 	nop
  466458:	0320f809 	jalr	t9
  46645c:	00000000 	nop
  466460:	8fdc0010 	lw	gp,16(s8)
  466464:	00000000 	nop
}
  466468:	03c0e821 	move	sp,s8
  46646c:	8fbf0020 	lw	ra,32(sp)
  466470:	8fbe001c 	lw	s8,28(sp)
  466474:	27bd0028 	addiu	sp,sp,40
  466478:	03e00008 	jr	ra
  46647c:	00000000 	nop

00466480 <free_public_key>:
  466480:	3c1c0fba 	lui	gp,0xfba
  466484:	279c64f0 	addiu	gp,gp,25840
  466488:	0399e021 	addu	gp,gp,t9
  46648c:	27bdffd0 	addiu	sp,sp,-48
  466490:	afbc0010 	sw	gp,16(sp)
  466494:	afbf0028 	sw	ra,40(sp)
  466498:	afbe0024 	sw	s8,36(sp)
  46649c:	afbc0020 	sw	gp,32(sp)
  4664a0:	03a0f021 	move	s8,sp
  4664a4:	afc40030 	sw	a0,48(s8)

/* Free a public key record.
 * As a convenience, this returns a pointer to next.
 */
struct pubkeyrec *
free_public_key(struct pubkeyrec *p)
{
    struct pubkeyrec *nxt = p->next;
  4664a8:	8fc20030 	lw	v0,48(s8)
  4664ac:	00000000 	nop
  4664b0:	8c420068 	lw	v0,104(v0)
  4664b4:	00000000 	nop
  4664b8:	afc20018 	sw	v0,24(s8)

    free_id_content(&p->id);
  4664bc:	8fc40030 	lw	a0,48(s8)
  4664c0:	8f9982f0 	lw	t9,-32016(gp)
  4664c4:	00000000 	nop
  4664c8:	0320f809 	jalr	t9
  4664cc:	00000000 	nop
  4664d0:	8fdc0010 	lw	gp,16(s8)
  4664d4:	00000000 	nop
    freeanychunk(p->issuer);
  4664d8:	8fc20030 	lw	v0,48(s8)
  4664dc:	00000000 	nop
  4664e0:	8c420030 	lw	v0,48(v0)
  4664e4:	00000000 	nop
  4664e8:	10400009 	beqz	v0,466510 <free_public_key+0x90>
  4664ec:	00000000 	nop
  4664f0:	8fc20030 	lw	v0,48(s8)
  4664f4:	00000000 	nop
  4664f8:	8c440030 	lw	a0,48(v0)
  4664fc:	8f998094 	lw	t9,-32620(gp)
  466500:	00000000 	nop
  466504:	0320f809 	jalr	t9
  466508:	00000000 	nop
  46650c:	8fdc0010 	lw	gp,16(s8)
  466510:	8fc20030 	lw	v0,48(s8)
  466514:	00000000 	nop
  466518:	ac400030 	sw	zero,48(v0)

    /* algorithm-specific freeing */
    switch (p->alg)
  46651c:	8fc20030 	lw	v0,48(s8)
  466520:	00000000 	nop
  466524:	8c43003c 	lw	v1,60(v0)
  466528:	24020001 	li	v0,1
  46652c:	1062000e 	beq	v1,v0,466568 <free_public_key+0xe8>
  466530:	00000000 	nop
    {
    case PUBKEY_ALG_RSA:
	free_RSA_public_content(&p->u.rsa);
	break;
    default:
	impossible();
  466534:	8f84802c 	lw	a0,-32724(gp)
  466538:	00000000 	nop
  46653c:	24843114 	addiu	a0,a0,12564
  466540:	8f85802c 	lw	a1,-32724(gp)
  466544:	00000000 	nop
  466548:	24a52fbc 	addiu	a1,a1,12220
  46654c:	240604ae 	li	a2,1198
  466550:	8f998bb8 	lw	t9,-29768(gp)
  466554:	00000000 	nop
  466558:	0320f809 	jalr	t9
  46655c:	00000000 	nop
  466560:	8fdc0010 	lw	gp,16(s8)
  466564:	00000000 	nop
  466568:	8fc20030 	lw	v0,48(s8)
  46656c:	00000000 	nop
  466570:	24420040 	addiu	v0,v0,64
  466574:	00402021 	move	a0,v0
  466578:	8f9986ac 	lw	t9,-31060(gp)
  46657c:	00000000 	nop
  466580:	0320f809 	jalr	t9
  466584:	00000000 	nop
  466588:	8fdc0010 	lw	gp,16(s8)
  46658c:	00000000 	nop
    }

    pfree(p);
  466590:	8fc40030 	lw	a0,48(s8)
  466594:	8f998094 	lw	t9,-32620(gp)
  466598:	00000000 	nop
  46659c:	0320f809 	jalr	t9
  4665a0:	00000000 	nop
  4665a4:	8fdc0010 	lw	gp,16(s8)
  4665a8:	00000000 	nop
    return nxt;
  4665ac:	8fc20018 	lw	v0,24(s8)
  4665b0:	00000000 	nop
}
  4665b4:	03c0e821 	move	sp,s8
  4665b8:	8fbf0028 	lw	ra,40(sp)
  4665bc:	8fbe0024 	lw	s8,36(sp)
  4665c0:	27bd0030 	addiu	sp,sp,48
  4665c4:	03e00008 	jr	ra
  4665c8:	00000000 	nop

004665cc <free_public_keys>:
  4665cc:	3c1c0fba 	lui	gp,0xfba
  4665d0:	279c63a4 	addiu	gp,gp,25508
  4665d4:	0399e021 	addu	gp,gp,t9
  4665d8:	27bdffd8 	addiu	sp,sp,-40
  4665dc:	afbc0010 	sw	gp,16(sp)
  4665e0:	afbf0020 	sw	ra,32(sp)
  4665e4:	afbe001c 	sw	s8,28(sp)
  4665e8:	afbc0018 	sw	gp,24(sp)
  4665ec:	03a0f021 	move	s8,sp
  4665f0:	afc40028 	sw	a0,40(s8)

void
free_public_keys(struct pubkeyrec **keys)
{
    while (*keys != NULL)
  4665f4:	8fc20028 	lw	v0,40(s8)
  4665f8:	00000000 	nop
  4665fc:	8c420000 	lw	v0,0(v0)
  466600:	00000000 	nop
  466604:	14400003 	bnez	v0,466614 <free_public_keys+0x48>
  466608:	00000000 	nop
  46660c:	1000000f 	b	46664c <free_public_keys+0x80>
  466610:	00000000 	nop
	*keys = free_public_key(*keys);
  466614:	8fc20028 	lw	v0,40(s8)
  466618:	00000000 	nop
  46661c:	8c440000 	lw	a0,0(v0)
  466620:	8f9985f4 	lw	t9,-31244(gp)
  466624:	00000000 	nop
  466628:	0320f809 	jalr	t9
  46662c:	00000000 	nop
  466630:	8fdc0010 	lw	gp,16(s8)
  466634:	00401821 	move	v1,v0
  466638:	8fc20028 	lw	v0,40(s8)
  46663c:	00000000 	nop
  466640:	ac430000 	sw	v1,0(v0)
  466644:	1000ffeb 	b	4665f4 <free_public_keys+0x28>
  466648:	00000000 	nop
}
  46664c:	03c0e821 	move	sp,s8
  466650:	8fbf0020 	lw	ra,32(sp)
  466654:	8fbe001c 	lw	s8,28(sp)
  466658:	27bd0028 	addiu	sp,sp,40
  46665c:	03e00008 	jr	ra
  466660:	00000000 	nop

00466664 <free_remembered_public_keys>:
  466664:	3c1c0fba 	lui	gp,0xfba
  466668:	279c630c 	addiu	gp,gp,25356
  46666c:	0399e021 	addu	gp,gp,t9
  466670:	27bdffd8 	addiu	sp,sp,-40
  466674:	afbc0010 	sw	gp,16(sp)
  466678:	afbf0020 	sw	ra,32(sp)
  46667c:	afbe001c 	sw	s8,28(sp)
  466680:	afbc0018 	sw	gp,24(sp)
  466684:	03a0f021 	move	s8,sp

/* root of chained public key list */

struct pubkeyrec *pubkeys = NULL;	/* keys from ipsec.conf */

void
free_remembered_public_keys(void)
{
    free_public_keys(&pubkeys);
  466688:	8f8487a8 	lw	a0,-30808(gp)
  46668c:	8f998a5c 	lw	t9,-30116(gp)
  466690:	00000000 	nop
  466694:	0320f809 	jalr	t9
  466698:	00000000 	nop
  46669c:	8fdc0010 	lw	gp,16(s8)
  4666a0:	00000000 	nop
}
  4666a4:	03c0e821 	move	sp,s8
  4666a8:	8fbf0020 	lw	ra,32(sp)
  4666ac:	8fbe001c 	lw	s8,28(sp)
  4666b0:	27bd0028 	addiu	sp,sp,40
  4666b4:	03e00008 	jr	ra
  4666b8:	00000000 	nop

004666bc <remember_public_keys>:
  4666bc:	3c1c0fba 	lui	gp,0xfba
  4666c0:	279c62b4 	addiu	gp,gp,25268
  4666c4:	0399e021 	addu	gp,gp,t9
  4666c8:	27bdffe8 	addiu	sp,sp,-24
  4666cc:	afbc0000 	sw	gp,0(sp)
  4666d0:	afbe0014 	sw	s8,20(sp)
  4666d4:	afbc0010 	sw	gp,16(sp)
  4666d8:	03a0f021 	move	s8,sp
  4666dc:	afc40018 	sw	a0,24(s8)

/* transfer public keys from *keys list to front of pubkeys list */
void
remember_public_keys(struct pubkeyrec **keys)
{
    struct pubkeyrec **pp = keys;
  4666e0:	8fc20018 	lw	v0,24(s8)
  4666e4:	00000000 	nop
  4666e8:	afc20008 	sw	v0,8(s8)

    while (*pp != NULL)
  4666ec:	8fc20008 	lw	v0,8(s8)
  4666f0:	00000000 	nop
  4666f4:	8c420000 	lw	v0,0(v0)
  4666f8:	00000000 	nop
  4666fc:	14400003 	bnez	v0,46670c <remember_public_keys+0x50>
  466700:	00000000 	nop
  466704:	10000009 	b	46672c <remember_public_keys+0x70>
  466708:	00000000 	nop
	pp = &(*pp)->next;
  46670c:	8fc20008 	lw	v0,8(s8)
  466710:	00000000 	nop
  466714:	8c420000 	lw	v0,0(v0)
  466718:	00000000 	nop
  46671c:	24420068 	addiu	v0,v0,104
  466720:	afc20008 	sw	v0,8(s8)
  466724:	1000fff1 	b	4666ec <remember_public_keys+0x30>
  466728:	00000000 	nop
    *pp = pubkeys;
  46672c:	8f8387a8 	lw	v1,-30808(gp)
  466730:	00000000 	nop
  466734:	8c630000 	lw	v1,0(v1)
  466738:	8fc20008 	lw	v0,8(s8)
  46673c:	00000000 	nop
  466740:	ac430000 	sw	v1,0(v0)
    pubkeys = *keys;
  466744:	8fc20018 	lw	v0,24(s8)
  466748:	00000000 	nop
  46674c:	8c420000 	lw	v0,0(v0)
  466750:	8f8187a8 	lw	at,-30808(gp)
  466754:	00000000 	nop
  466758:	ac220000 	sw	v0,0(at)
    *keys = NULL;
  46675c:	8fc20018 	lw	v0,24(s8)
  466760:	00000000 	nop
  466764:	ac400000 	sw	zero,0(v0)
}
  466768:	03c0e821 	move	sp,s8
  46676c:	8fbe0014 	lw	s8,20(sp)
  466770:	27bd0018 	addiu	sp,sp,24
  466774:	03e00008 	jr	ra
  466778:	00000000 	nop

0046677c <unpack_RSA_public_key>:
  46677c:	3c1c0fba 	lui	gp,0xfba
  466780:	279c61f4 	addiu	gp,gp,25076
  466784:	0399e021 	addu	gp,gp,t9
  466788:	27bdffc8 	addiu	sp,sp,-56
  46678c:	afbc0010 	sw	gp,16(sp)
  466790:	afbf0030 	sw	ra,48(sp)
  466794:	afbe002c 	sw	s8,44(sp)
  466798:	afbc0028 	sw	gp,40(sp)
  46679c:	03a0f021 	move	s8,sp
  4667a0:	afc40038 	sw	a0,56(s8)
  4667a4:	afc5003c 	sw	a1,60(s8)

/* decode of RSA pubkey chunk
 * - format specified in RFC 2537 RSA/MD5 Keys and SIGs in the DNS
 * - exponent length in bytes (1 or 3 octets)
 *   + 1 byte if in [1, 255]
 *   + otherwise 0x00 followed by 2 bytes of length
 * - exponent
 * - modulus
 */
err_t
unpack_RSA_public_key(struct RSA_public_key *rsa, chunk_t *pubkey)
{
    chunk_t exp;
    chunk_t mod;

    rsa->keyid[0] = '\0';	/* in case of keybolbtoid failure */
  4667a8:	8fc20038 	lw	v0,56(s8)
  4667ac:	00000000 	nop
  4667b0:	a0400000 	sb	zero,0(v0)

    if (pubkey->len < 3)
  4667b4:	8fc2003c 	lw	v0,60(s8)
  4667b8:	00000000 	nop
  4667bc:	8c420004 	lw	v0,4(v0)
  4667c0:	00000000 	nop
  4667c4:	2c420003 	sltiu	v0,v0,3
  4667c8:	10400006 	beqz	v0,4667e4 <unpack_RSA_public_key+0x68>
  4667cc:	00000000 	nop
	return "RSA public key blob way to short";	/* not even room for length! */
  4667d0:	8f82802c 	lw	v0,-32724(gp)
  4667d4:	00000000 	nop
  4667d8:	244236dc 	addiu	v0,v0,14044
  4667dc:	100000d8 	b	466b40 <unpack_RSA_public_key+0x3c4>
  4667e0:	00000000 	nop

    if (pubkey->ptr[0] != 0x00)
  4667e4:	8fc2003c 	lw	v0,60(s8)
  4667e8:	00000000 	nop
  4667ec:	8c420000 	lw	v0,0(v0)
  4667f0:	00000000 	nop
  4667f4:	90420000 	lbu	v0,0(v0)
  4667f8:	00000000 	nop
  4667fc:	10400010 	beqz	v0,466840 <unpack_RSA_public_key+0xc4>
  466800:	00000000 	nop
    {
	setchunk(exp, pubkey->ptr + 1, pubkey->ptr[0]);
  466804:	8fc2003c 	lw	v0,60(s8)
  466808:	00000000 	nop
  46680c:	8c420000 	lw	v0,0(v0)
  466810:	00000000 	nop
  466814:	24420001 	addiu	v0,v0,1
  466818:	afc20018 	sw	v0,24(s8)
  46681c:	8fc2003c 	lw	v0,60(s8)
  466820:	00000000 	nop
  466824:	8c420000 	lw	v0,0(v0)
  466828:	00000000 	nop
  46682c:	90420000 	lbu	v0,0(v0)
  466830:	00000000 	nop
  466834:	afc2001c 	sw	v0,28(s8)
  466838:	10000018 	b	46689c <unpack_RSA_public_key+0x120>
  46683c:	00000000 	nop
    }
    else
    {
	setchunk(exp, pubkey->ptr + 3
  466840:	8fc2003c 	lw	v0,60(s8)
  466844:	00000000 	nop
  466848:	8c420000 	lw	v0,0(v0)
  46684c:	00000000 	nop
  466850:	24420003 	addiu	v0,v0,3
  466854:	afc20018 	sw	v0,24(s8)
  466858:	8fc2003c 	lw	v0,60(s8)
  46685c:	00000000 	nop
  466860:	8c420000 	lw	v0,0(v0)
  466864:	00000000 	nop
  466868:	24420001 	addiu	v0,v0,1
  46686c:	90420000 	lbu	v0,0(v0)
  466870:	00000000 	nop
  466874:	00021a00 	sll	v1,v0,0x8
  466878:	8fc2003c 	lw	v0,60(s8)
  46687c:	00000000 	nop
  466880:	8c420000 	lw	v0,0(v0)
  466884:	00000000 	nop
  466888:	24420002 	addiu	v0,v0,2
  46688c:	90420000 	lbu	v0,0(v0)
  466890:	00000000 	nop
  466894:	00621021 	addu	v0,v1,v0
  466898:	afc2001c 	sw	v0,28(s8)
	    , (pubkey->ptr[1] << BITS_PER_BYTE) + pubkey->ptr[2]);
    }

    if (pubkey->len - (exp.ptr - pubkey->ptr) < exp.len + RSA_MIN_OCTETS_RFC)
  46689c:	8fc2003c 	lw	v0,60(s8)
  4668a0:	00000000 	nop
  4668a4:	8c430000 	lw	v1,0(v0)
  4668a8:	8fc20018 	lw	v0,24(s8)
  4668ac:	00000000 	nop
  4668b0:	00431823 	subu	v1,v0,v1
  4668b4:	8fc2003c 	lw	v0,60(s8)
  4668b8:	00000000 	nop
  4668bc:	8c420004 	lw	v0,4(v0)
  4668c0:	00000000 	nop
  4668c4:	00431823 	subu	v1,v0,v1
  4668c8:	8fc2001c 	lw	v0,28(s8)
  4668cc:	00000000 	nop
  4668d0:	2442000c 	addiu	v0,v0,12
  4668d4:	0062102b 	sltu	v0,v1,v0
  4668d8:	10400006 	beqz	v0,4668f4 <unpack_RSA_public_key+0x178>
  4668dc:	00000000 	nop
	return "RSA public key blob too short";
  4668e0:	8f82802c 	lw	v0,-32724(gp)
  4668e4:	00000000 	nop
  4668e8:	24423700 	addiu	v0,v0,14080
  4668ec:	10000094 	b	466b40 <unpack_RSA_public_key+0x3c4>
  4668f0:	00000000 	nop

    mod.ptr = exp.ptr + exp.len;
  4668f4:	8fc30018 	lw	v1,24(s8)
  4668f8:	8fc2001c 	lw	v0,28(s8)
  4668fc:	00000000 	nop
  466900:	00621021 	addu	v0,v1,v0
  466904:	afc20020 	sw	v0,32(s8)
    mod.len = &pubkey->ptr[pubkey->len] - mod.ptr;
  466908:	8fc2003c 	lw	v0,60(s8)
  46690c:	00000000 	nop
  466910:	8c430000 	lw	v1,0(v0)
  466914:	8fc2003c 	lw	v0,60(s8)
  466918:	00000000 	nop
  46691c:	8c420004 	lw	v0,4(v0)
  466920:	00000000 	nop
  466924:	00621821 	addu	v1,v1,v0
  466928:	8fc20020 	lw	v0,32(s8)
  46692c:	00000000 	nop
  466930:	00621023 	subu	v0,v1,v0
  466934:	afc20024 	sw	v0,36(s8)

    if (mod.len < RSA_MIN_OCTETS)
  466938:	8fc20024 	lw	v0,36(s8)
  46693c:	00000000 	nop
  466940:	2c420040 	sltiu	v0,v0,64
  466944:	10400006 	beqz	v0,466960 <unpack_RSA_public_key+0x1e4>
  466948:	00000000 	nop
	return RSA_MIN_OCTETS_UGH;
  46694c:	8f82802c 	lw	v0,-32724(gp)
  466950:	00000000 	nop
  466954:	24422fd0 	addiu	v0,v0,12240
  466958:	10000079 	b	466b40 <unpack_RSA_public_key+0x3c4>
  46695c:	00000000 	nop

    if (mod.len > RSA_MAX_OCTETS)
  466960:	8fc20024 	lw	v0,36(s8)
  466964:	00000000 	nop
  466968:	2c420201 	sltiu	v0,v0,513
  46696c:	14400006 	bnez	v0,466988 <unpack_RSA_public_key+0x20c>
  466970:	00000000 	nop
	return RSA_MAX_OCTETS_UGH;
  466974:	8f82802c 	lw	v0,-32724(gp)
  466978:	00000000 	nop
  46697c:	24423008 	addiu	v0,v0,12296
  466980:	1000006f 	b	466b40 <unpack_RSA_public_key+0x3c4>
  466984:	00000000 	nop

    n_to_mpz(&rsa->e, exp.ptr, exp.len);
  466988:	8fc20038 	lw	v0,56(s8)
  46698c:	00000000 	nop
  466990:	2442001c 	addiu	v0,v0,28
  466994:	00402021 	move	a0,v0
  466998:	8fc50018 	lw	a1,24(s8)
  46699c:	8fc6001c 	lw	a2,28(s8)
  4669a0:	8f998358 	lw	t9,-31912(gp)
  4669a4:	00000000 	nop
  4669a8:	0320f809 	jalr	t9
  4669ac:	00000000 	nop
  4669b0:	8fdc0010 	lw	gp,16(s8)
  4669b4:	00000000 	nop
    n_to_mpz(&rsa->n, mod.ptr, mod.len);
  4669b8:	8fc20038 	lw	v0,56(s8)
  4669bc:	00000000 	nop
  4669c0:	24420010 	addiu	v0,v0,16
  4669c4:	00402021 	move	a0,v0
  4669c8:	8fc50020 	lw	a1,32(s8)
  4669cc:	8fc60024 	lw	a2,36(s8)
  4669d0:	8f998358 	lw	t9,-31912(gp)
  4669d4:	00000000 	nop
  4669d8:	0320f809 	jalr	t9
  4669dc:	00000000 	nop
  4669e0:	8fdc0010 	lw	gp,16(s8)
  4669e4:	00000000 	nop

    keyblobtoid(pubkey->ptr, pubkey->len, rsa->keyid, sizeof(rsa->keyid));
  4669e8:	8fc2003c 	lw	v0,60(s8)
  4669ec:	00000000 	nop
  4669f0:	8c440000 	lw	a0,0(v0)
  4669f4:	8fc2003c 	lw	v0,60(s8)
  4669f8:	00000000 	nop
  4669fc:	8c450004 	lw	a1,4(v0)
  466a00:	8fc60038 	lw	a2,56(s8)
  466a04:	2407000a 	li	a3,10
  466a08:	8f998b04 	lw	t9,-29948(gp)
  466a0c:	00000000 	nop
  466a10:	0320f809 	jalr	t9
  466a14:	00000000 	nop
  466a18:	8fdc0010 	lw	gp,16(s8)
  466a1c:	00000000 	nop

#ifdef DEBUG
    DBG(DBG_PRIVATE, RSA_show_public_key(rsa));
  466a20:	8f8284f8 	lw	v0,-31496(gp)
  466a24:	00000000 	nop
  466a28:	8c420000 	lw	v0,0(v0)
  466a2c:	00000000 	nop
  466a30:	30420200 	andi	v0,v0,0x200
  466a34:	1040000a 	beqz	v0,466a60 <unpack_RSA_public_key+0x2e4>
  466a38:	00000000 	nop
  466a3c:	8fc40038 	lw	a0,56(s8)
  466a40:	8f99803c 	lw	t9,-32708(gp)
  466a44:	00000000 	nop
  466a48:	273924b4 	addiu	t9,t9,9396
  466a4c:	00000000 	nop
  466a50:	0320f809 	jalr	t9
  466a54:	00000000 	nop
  466a58:	8fdc0010 	lw	gp,16(s8)
  466a5c:	00000000 	nop
#endif


    rsa->k = mpz_sizeinbase(&rsa->n, 2);	/* size in bits, for a start */
  466a60:	8fc20038 	lw	v0,56(s8)
  466a64:	00000000 	nop
  466a68:	24420010 	addiu	v0,v0,16
  466a6c:	00402021 	move	a0,v0
  466a70:	24050002 	li	a1,2
  466a74:	8f998520 	lw	t9,-31456(gp)
  466a78:	00000000 	nop
  466a7c:	0320f809 	jalr	t9
  466a80:	00000000 	nop
  466a84:	8fdc0010 	lw	gp,16(s8)
  466a88:	00401821 	move	v1,v0
  466a8c:	8fc20038 	lw	v0,56(s8)
  466a90:	00000000 	nop
  466a94:	ac43000c 	sw	v1,12(v0)
    rsa->k = (rsa->k + BITS_PER_BYTE - 1) / BITS_PER_BYTE;	/* now octets */
  466a98:	8fc20038 	lw	v0,56(s8)
  466a9c:	00000000 	nop
  466aa0:	8c42000c 	lw	v0,12(v0)
  466aa4:	00000000 	nop
  466aa8:	24420007 	addiu	v0,v0,7
  466aac:	000218c2 	srl	v1,v0,0x3
  466ab0:	8fc20038 	lw	v0,56(s8)
  466ab4:	00000000 	nop
  466ab8:	ac43000c 	sw	v1,12(v0)

    if (rsa->k != mod.len)
  466abc:	8fc20038 	lw	v0,56(s8)
  466ac0:	00000000 	nop
  466ac4:	8c43000c 	lw	v1,12(v0)
  466ac8:	8fc20024 	lw	v0,36(s8)
  466acc:	00000000 	nop
  466ad0:	1062001a 	beq	v1,v0,466b3c <unpack_RSA_public_key+0x3c0>
  466ad4:	00000000 	nop
    {
	mpz_clear(&rsa->e);
  466ad8:	8fc20038 	lw	v0,56(s8)
  466adc:	00000000 	nop
  466ae0:	2442001c 	addiu	v0,v0,28
  466ae4:	00402021 	move	a0,v0
  466ae8:	8f998c40 	lw	t9,-29632(gp)
  466aec:	00000000 	nop
  466af0:	0320f809 	jalr	t9
  466af4:	00000000 	nop
  466af8:	8fdc0010 	lw	gp,16(s8)
  466afc:	00000000 	nop
	mpz_clear(&rsa->n);
  466b00:	8fc20038 	lw	v0,56(s8)
  466b04:	00000000 	nop
  466b08:	24420010 	addiu	v0,v0,16
  466b0c:	00402021 	move	a0,v0
  466b10:	8f998c40 	lw	t9,-29632(gp)
  466b14:	00000000 	nop
  466b18:	0320f809 	jalr	t9
  466b1c:	00000000 	nop
  466b20:	8fdc0010 	lw	gp,16(s8)
  466b24:	00000000 	nop
	return "RSA modulus shorter than specified";
  466b28:	8f82802c 	lw	v0,-32724(gp)
  466b2c:	00000000 	nop
  466b30:	24423720 	addiu	v0,v0,14112
  466b34:	10000002 	b	466b40 <unpack_RSA_public_key+0x3c4>
  466b38:	00000000 	nop
    }

    return NULL;
  466b3c:	00001021 	move	v0,zero
}
  466b40:	03c0e821 	move	sp,s8
  466b44:	8fbf0030 	lw	ra,48(sp)
  466b48:	8fbe002c 	lw	s8,44(sp)
  466b4c:	27bd0038 	addiu	sp,sp,56
  466b50:	03e00008 	jr	ra
  466b54:	00000000 	nop

00466b58 <same_RSA_public_key>:
  466b58:	3c1c0fba 	lui	gp,0xfba
  466b5c:	279c5e18 	addiu	gp,gp,24088
  466b60:	0399e021 	addu	gp,gp,t9
  466b64:	27bdffd0 	addiu	sp,sp,-48
  466b68:	afbc0010 	sw	gp,16(sp)
  466b6c:	afbf0028 	sw	ra,40(sp)
  466b70:	afbe0024 	sw	s8,36(sp)
  466b74:	afbc0020 	sw	gp,32(sp)
  466b78:	03a0f021 	move	s8,sp
  466b7c:	afc40030 	sw	a0,48(s8)
  466b80:	afc50034 	sw	a1,52(s8)

bool
same_RSA_public_key(const struct RSA_public_key *a
    , const struct RSA_public_key *b)
{
    return a == b
  466b84:	afc00018 	sw	zero,24(s8)
  466b88:	8fc30030 	lw	v1,48(s8)
  466b8c:	8fc20034 	lw	v0,52(s8)
  466b90:	00000000 	nop
  466b94:	10620028 	beq	v1,v0,466c38 <same_RSA_public_key+0xe0>
  466b98:	00000000 	nop
  466b9c:	8fc20030 	lw	v0,48(s8)
  466ba0:	00000000 	nop
  466ba4:	8c43000c 	lw	v1,12(v0)
  466ba8:	8fc20034 	lw	v0,52(s8)
  466bac:	00000000 	nop
  466bb0:	8c42000c 	lw	v0,12(v0)
  466bb4:	00000000 	nop
  466bb8:	14620021 	bne	v1,v0,466c40 <same_RSA_public_key+0xe8>
  466bbc:	00000000 	nop
  466bc0:	8fc20030 	lw	v0,48(s8)
  466bc4:	00000000 	nop
  466bc8:	24430010 	addiu	v1,v0,16
  466bcc:	8fc20034 	lw	v0,52(s8)
  466bd0:	00000000 	nop
  466bd4:	24420010 	addiu	v0,v0,16
  466bd8:	00602021 	move	a0,v1
  466bdc:	00402821 	move	a1,v0
  466be0:	8f998950 	lw	t9,-30384(gp)
  466be4:	00000000 	nop
  466be8:	0320f809 	jalr	t9
  466bec:	00000000 	nop
  466bf0:	8fdc0010 	lw	gp,16(s8)
  466bf4:	14400012 	bnez	v0,466c40 <same_RSA_public_key+0xe8>
  466bf8:	00000000 	nop
  466bfc:	8fc20030 	lw	v0,48(s8)
  466c00:	00000000 	nop
  466c04:	2443001c 	addiu	v1,v0,28
  466c08:	8fc20034 	lw	v0,52(s8)
  466c0c:	00000000 	nop
  466c10:	2442001c 	addiu	v0,v0,28
  466c14:	00602021 	move	a0,v1
  466c18:	00402821 	move	a1,v0
  466c1c:	8f998950 	lw	t9,-30384(gp)
  466c20:	00000000 	nop
  466c24:	0320f809 	jalr	t9
  466c28:	00000000 	nop
  466c2c:	8fdc0010 	lw	gp,16(s8)
  466c30:	14400003 	bnez	v0,466c40 <same_RSA_public_key+0xe8>
  466c34:	00000000 	nop
  466c38:	24020001 	li	v0,1
  466c3c:	afc20018 	sw	v0,24(s8)
  466c40:	8fc20018 	lw	v0,24(s8)
  466c44:	00000000 	nop
    || (a->k == b->k && mpz_cmp(&a->n, &b->n) == 0 && mpz_cmp(&a->e, &b->e) == 0);
}
  466c48:	03c0e821 	move	sp,s8
  466c4c:	8fbf0028 	lw	ra,40(sp)
  466c50:	8fbe0024 	lw	s8,36(sp)
  466c54:	27bd0030 	addiu	sp,sp,48
  466c58:	03e00008 	jr	ra
  466c5c:	00000000 	nop

00466c60 <install_public_key>:
  466c60:	3c1c0fba 	lui	gp,0xfba
  466c64:	279c5d10 	addiu	gp,gp,23824
  466c68:	0399e021 	addu	gp,gp,t9
  466c6c:	27bdffd8 	addiu	sp,sp,-40
  466c70:	afbc0010 	sw	gp,16(sp)
  466c74:	afbf0024 	sw	ra,36(sp)
  466c78:	afbe0020 	sw	s8,32(sp)
  466c7c:	afbc001c 	sw	gp,28(sp)
  466c80:	afb00018 	sw	s0,24(sp)
  466c84:	03a0f021 	move	s8,sp
  466c88:	afc40028 	sw	a0,40(s8)
  466c8c:	afc5002c 	sw	a1,44(s8)


static void
install_public_key(struct pubkeyrec *p, struct pubkeyrec **head)
{
    unshare_id_content(&p->id);
  466c90:	8fc40028 	lw	a0,40(s8)
  466c94:	8f99847c 	lw	t9,-31620(gp)
  466c98:	00000000 	nop
  466c9c:	0320f809 	jalr	t9
  466ca0:	00000000 	nop
  466ca4:	8fdc0010 	lw	gp,16(s8)
  466ca8:	00000000 	nop

    /* copy issuer dn */
    if (p->issuer.ptr != NULL)
  466cac:	8fc20028 	lw	v0,40(s8)
  466cb0:	00000000 	nop
  466cb4:	8c420030 	lw	v0,48(v0)
  466cb8:	00000000 	nop
  466cbc:	10400011 	beqz	v0,466d04 <install_public_key+0xa4>
  466cc0:	00000000 	nop
	p->issuer.ptr = clone_bytes(p->issuer.ptr, p->issuer.len, "issuer dn");
  466cc4:	8fd00028 	lw	s0,40(s8)
  466cc8:	8fc20028 	lw	v0,40(s8)
  466ccc:	00000000 	nop
  466cd0:	8c440030 	lw	a0,48(v0)
  466cd4:	8fc20028 	lw	v0,40(s8)
  466cd8:	00000000 	nop
  466cdc:	8c450034 	lw	a1,52(v0)
  466ce0:	8f86802c 	lw	a2,-32724(gp)
  466ce4:	00000000 	nop
  466ce8:	24c63744 	addiu	a2,a2,14148
  466cec:	8f998c04 	lw	t9,-29692(gp)
  466cf0:	00000000 	nop
  466cf4:	0320f809 	jalr	t9
  466cf8:	00000000 	nop
  466cfc:	8fdc0010 	lw	gp,16(s8)
  466d00:	ae020030 	sw	v0,48(s0)

    /* store the time the public key was installed */
    time(&p->installed);
  466d04:	8fc20028 	lw	v0,40(s8)
  466d08:	00000000 	nop
  466d0c:	24420028 	addiu	v0,v0,40
  466d10:	00402021 	move	a0,v0
  466d14:	8f9984b4 	lw	t9,-31564(gp)
  466d18:	00000000 	nop
  466d1c:	0320f809 	jalr	t9
  466d20:	00000000 	nop
  466d24:	8fdc0010 	lw	gp,16(s8)
  466d28:	00000000 	nop

    /* install new key at front */
    p->next = *head;
  466d2c:	8fc2002c 	lw	v0,44(s8)
  466d30:	00000000 	nop
  466d34:	8c430000 	lw	v1,0(v0)
  466d38:	8fc20028 	lw	v0,40(s8)
  466d3c:	00000000 	nop
  466d40:	ac430068 	sw	v1,104(v0)
    *head = p;
  466d44:	8fc30028 	lw	v1,40(s8)
  466d48:	8fc2002c 	lw	v0,44(s8)
  466d4c:	00000000 	nop
  466d50:	ac430000 	sw	v1,0(v0)
}
  466d54:	03c0e821 	move	sp,s8
  466d58:	8fbf0024 	lw	ra,36(sp)
  466d5c:	8fbe0020 	lw	s8,32(sp)
  466d60:	8fb00018 	lw	s0,24(sp)
  466d64:	27bd0028 	addiu	sp,sp,40
  466d68:	03e00008 	jr	ra
  466d6c:	00000000 	nop

00466d70 <delete_public_keys>:
  466d70:	3c1c0fba 	lui	gp,0xfba
  466d74:	279c5c00 	addiu	gp,gp,23552
  466d78:	0399e021 	addu	gp,gp,t9
  466d7c:	27bdffd0 	addiu	sp,sp,-48
  466d80:	afbc0010 	sw	gp,16(sp)
  466d84:	afbf0028 	sw	ra,40(sp)
  466d88:	afbe0024 	sw	s8,36(sp)
  466d8c:	afbc0020 	sw	gp,32(sp)
  466d90:	03a0f021 	move	s8,sp
  466d94:	afc40030 	sw	a0,48(s8)
  466d98:	afc50034 	sw	a1,52(s8)


void
delete_public_keys(const struct id *id, enum pubkey_alg alg)
{
    struct pubkeyrec **pp, *p;

    for (pp = &pubkeys; (p = *pp) != NULL; )
  466d9c:	8f8287a8 	lw	v0,-30808(gp)
  466da0:	00000000 	nop
  466da4:	afc20018 	sw	v0,24(s8)
  466da8:	8fc20018 	lw	v0,24(s8)
  466dac:	00000000 	nop
  466db0:	8c420000 	lw	v0,0(v0)
  466db4:	00000000 	nop
  466db8:	afc2001c 	sw	v0,28(s8)
  466dbc:	14400003 	bnez	v0,466dcc <delete_public_keys+0x5c>
  466dc0:	00000000 	nop
  466dc4:	10000023 	b	466e54 <delete_public_keys+0xe4>
  466dc8:	00000000 	nop
    {
	if (same_id(id, &p->id) && p->alg == alg)
  466dcc:	8fc40030 	lw	a0,48(s8)
  466dd0:	8fc5001c 	lw	a1,28(s8)
  466dd4:	8f9980e4 	lw	t9,-32540(gp)
  466dd8:	00000000 	nop
  466ddc:	0320f809 	jalr	t9
  466de0:	00000000 	nop
  466de4:	8fdc0010 	lw	gp,16(s8)
  466de8:	10400014 	beqz	v0,466e3c <delete_public_keys+0xcc>
  466dec:	00000000 	nop
  466df0:	8fc2001c 	lw	v0,28(s8)
  466df4:	00000000 	nop
  466df8:	8c43003c 	lw	v1,60(v0)
  466dfc:	8fc20034 	lw	v0,52(s8)
  466e00:	00000000 	nop
  466e04:	1462000d 	bne	v1,v0,466e3c <delete_public_keys+0xcc>
  466e08:	00000000 	nop
	    *pp = free_public_key(p);
  466e0c:	8fc4001c 	lw	a0,28(s8)
  466e10:	8f9985f4 	lw	t9,-31244(gp)
  466e14:	00000000 	nop
  466e18:	0320f809 	jalr	t9
  466e1c:	00000000 	nop
  466e20:	8fdc0010 	lw	gp,16(s8)
  466e24:	00401821 	move	v1,v0
  466e28:	8fc20018 	lw	v0,24(s8)
  466e2c:	00000000 	nop
  466e30:	ac430000 	sw	v1,0(v0)
  466e34:	1000ffdc 	b	466da8 <delete_public_keys+0x38>
  466e38:	00000000 	nop
	else
	    pp = &p->next;
  466e3c:	8fc2001c 	lw	v0,28(s8)
  466e40:	00000000 	nop
  466e44:	24420068 	addiu	v0,v0,104
  466e48:	afc20018 	sw	v0,24(s8)
  466e4c:	1000ffd6 	b	466da8 <delete_public_keys+0x38>
  466e50:	00000000 	nop
    }
}
  466e54:	03c0e821 	move	sp,s8
  466e58:	8fbf0028 	lw	ra,40(sp)
  466e5c:	8fbe0024 	lw	s8,36(sp)
  466e60:	27bd0030 	addiu	sp,sp,48
  466e64:	03e00008 	jr	ra
  466e68:	00000000 	nop

00466e6c <add_public_key>:
  466e6c:	3c1c0fba 	lui	gp,0xfba
  466e70:	279c5b04 	addiu	gp,gp,23300
  466e74:	0399e021 	addu	gp,gp,t9
  466e78:	27bdffc8 	addiu	sp,sp,-56
  466e7c:	afbc0010 	sw	gp,16(sp)
  466e80:	afbf0030 	sw	ra,48(sp)
  466e84:	afbe002c 	sw	s8,44(sp)
  466e88:	afbc0028 	sw	gp,40(sp)
  466e8c:	03a0f021 	move	s8,sp
  466e90:	afc40038 	sw	a0,56(s8)
  466e94:	afc5003c 	sw	a1,60(s8)
  466e98:	afc60040 	sw	a2,64(s8)
  466e9c:	afc70044 	sw	a3,68(s8)

err_t
add_public_key(const struct id *id
, enum dns_auth_level dns_auth_level
, enum pubkey_alg alg
, chunk_t *key
, struct pubkeyrec **head)
{
    struct pubkeyrec *p = alloc_thing(struct pubkeyrec, "pubkeyrec");
  466ea0:	2404006c 	li	a0,108
  466ea4:	8f85802c 	lw	a1,-32724(gp)
  466ea8:	00000000 	nop
  466eac:	24a53108 	addiu	a1,a1,12552
  466eb0:	8f998084 	lw	t9,-32636(gp)
  466eb4:	00000000 	nop
  466eb8:	0320f809 	jalr	t9
  466ebc:	00000000 	nop
  466ec0:	8fdc0010 	lw	gp,16(s8)
  466ec4:	afc20018 	sw	v0,24(s8)

    /* first: algorithm-specific decoding of key chunk */
    switch (alg)
  466ec8:	8fc30040 	lw	v1,64(s8)
  466ecc:	24020001 	li	v0,1
  466ed0:	1062000e 	beq	v1,v0,466f0c <add_public_key+0xa0>
  466ed4:	00000000 	nop
    {
    case PUBKEY_ALG_RSA:
	{
	    err_t ugh = unpack_RSA_public_key(&p->u.rsa, key);

	    if (ugh != NULL)
	    {
		pfree(p);
		return ugh;
	    }
	}
	break;
    default:
	impossible();
  466ed8:	8f84802c 	lw	a0,-32724(gp)
  466edc:	00000000 	nop
  466ee0:	24843114 	addiu	a0,a0,12564
  466ee4:	8f85802c 	lw	a1,-32724(gp)
  466ee8:	00000000 	nop
  466eec:	24a52fbc 	addiu	a1,a1,12220
  466ef0:	24060554 	li	a2,1364
  466ef4:	8f998bb8 	lw	t9,-29768(gp)
  466ef8:	00000000 	nop
  466efc:	0320f809 	jalr	t9
  466f00:	00000000 	nop
  466f04:	8fdc0010 	lw	gp,16(s8)
  466f08:	00000000 	nop
  466f0c:	8fc20018 	lw	v0,24(s8)
  466f10:	00000000 	nop
  466f14:	24420040 	addiu	v0,v0,64
  466f18:	00402021 	move	a0,v0
  466f1c:	8fc50044 	lw	a1,68(s8)
  466f20:	8f998bc4 	lw	t9,-29756(gp)
  466f24:	00000000 	nop
  466f28:	0320f809 	jalr	t9
  466f2c:	00000000 	nop
  466f30:	8fdc0010 	lw	gp,16(s8)
  466f34:	afc2001c 	sw	v0,28(s8)
  466f38:	8fc2001c 	lw	v0,28(s8)
  466f3c:	00000000 	nop
  466f40:	1040000b 	beqz	v0,466f70 <add_public_key+0x104>
  466f44:	00000000 	nop
  466f48:	8fc40018 	lw	a0,24(s8)
  466f4c:	8f998094 	lw	t9,-32620(gp)
  466f50:	00000000 	nop
  466f54:	0320f809 	jalr	t9
  466f58:	00000000 	nop
  466f5c:	8fdc0010 	lw	gp,16(s8)
  466f60:	00000000 	nop
  466f64:	8fc2001c 	lw	v0,28(s8)
  466f68:	1000002d 	b	467020 <add_public_key+0x1b4>
  466f6c:	00000000 	nop
    }

    p->id = *id;
  466f70:	8fc20018 	lw	v0,24(s8)
  466f74:	8fc30038 	lw	v1,56(s8)
  466f78:	00402021 	move	a0,v0
  466f7c:	00602821 	move	a1,v1
  466f80:	24060028 	li	a2,40
  466f84:	8f998a30 	lw	t9,-30160(gp)
  466f88:	00000000 	nop
  466f8c:	0320f809 	jalr	t9
  466f90:	00000000 	nop
  466f94:	8fdc0010 	lw	gp,16(s8)
  466f98:	00000000 	nop
    p->dns_auth_level = dns_auth_level;
  466f9c:	8fc3003c 	lw	v1,60(s8)
  466fa0:	8fc20018 	lw	v0,24(s8)
  466fa4:	00000000 	nop
  466fa8:	ac430038 	sw	v1,56(v0)
    p->alg = alg;
  466fac:	8fc30040 	lw	v1,64(s8)
  466fb0:	8fc20018 	lw	v0,24(s8)
  466fb4:	00000000 	nop
  466fb8:	ac43003c 	sw	v1,60(v0)
    p->until = UNDEFINED_TIME;
  466fbc:	8fc20018 	lw	v0,24(s8)
  466fc0:	00000000 	nop
  466fc4:	ac40002c 	sw	zero,44(v0)
    p->issuer = empty_chunk;
  466fc8:	8fc30018 	lw	v1,24(s8)
  466fcc:	8f828708 	lw	v0,-30968(gp)
  466fd0:	00000000 	nop
  466fd4:	8c420000 	lw	v0,0(v0)
  466fd8:	00000000 	nop
  466fdc:	ac620030 	sw	v0,48(v1)
  466fe0:	8f828708 	lw	v0,-30968(gp)
  466fe4:	00000000 	nop
  466fe8:	8c420004 	lw	v0,4(v0)
  466fec:	00000000 	nop
  466ff0:	ac620034 	sw	v0,52(v1)
    install_public_key(p, head);
  466ff4:	8fc40018 	lw	a0,24(s8)
  466ff8:	8fc50048 	lw	a1,72(s8)
  466ffc:	8f99803c 	lw	t9,-32708(gp)
  467000:	00000000 	nop
  467004:	27396c60 	addiu	t9,t9,27744
  467008:	00000000 	nop
  46700c:	0320f809 	jalr	t9
  467010:	00000000 	nop
  467014:	8fdc0010 	lw	gp,16(s8)
  467018:	00000000 	nop
    return NULL;
  46701c:	00001021 	move	v0,zero
}
  467020:	03c0e821 	move	sp,s8
  467024:	8fbf0030 	lw	ra,48(sp)
  467028:	8fbe002c 	lw	s8,44(sp)
  46702c:	27bd0038 	addiu	sp,sp,56
  467030:	03e00008 	jr	ra
  467034:	00000000 	nop

00467038 <add_x509_public_key>:
  467038:	3c1c0fba 	lui	gp,0xfba
  46703c:	279c5938 	addiu	gp,gp,22840
  467040:	0399e021 	addu	gp,gp,t9
  467044:	27bdff90 	addiu	sp,sp,-112
  467048:	afbc0010 	sw	gp,16(sp)
  46704c:	afbf0068 	sw	ra,104(sp)
  467050:	afbe0064 	sw	s8,100(sp)
  467054:	afbc0060 	sw	gp,96(sp)
  467058:	03a0f021 	move	s8,sp
  46705c:	afc40070 	sw	a0,112(s8)
  467060:	afc50074 	sw	a1,116(s8)
  467064:	afc60078 	sw	a2,120(s8)

/*  extract id and public key from x.509 certificate and insert it
 *  into a pubkeyrec
 */
void
add_x509_public_key(const x509cert_t *cert , time_t until
    , enum dns_auth_level dns_auth_level)
{
    generalName_t *gn;
    struct pubkeyrec *p;

    /* we support RSA only */
    if (cert->subjectPublicKeyAlgorithm != PUBKEY_ALG_RSA) return;
  467068:	8fc20070 	lw	v0,112(s8)
  46706c:	00000000 	nop
  467070:	8c430048 	lw	v1,72(v0)
  467074:	24020001 	li	v0,1
  467078:	10620003 	beq	v1,v0,467088 <add_x509_public_key+0x50>
  46707c:	00000000 	nop
  467080:	1000009c 	b	4672f4 <add_x509_public_key+0x2bc>
  467084:	00000000 	nop

    /* ID type: ID_DER_ASN1_DN  (X.509 subject field) */
    p = allocate_RSA_public_key(cert);
  467088:	8fc40070 	lw	a0,112(s8)
  46708c:	8f99803c 	lw	t9,-32708(gp)
  467090:	00000000 	nop
  467094:	27392c94 	addiu	t9,t9,11412
  467098:	00000000 	nop
  46709c:	0320f809 	jalr	t9
  4670a0:	00000000 	nop
  4670a4:	8fdc0010 	lw	gp,16(s8)
  4670a8:	afc2001c 	sw	v0,28(s8)
    p->id.kind = ID_DER_ASN1_DN;
  4670ac:	24030009 	li	v1,9
  4670b0:	8fc2001c 	lw	v0,28(s8)
  4670b4:	00000000 	nop
  4670b8:	ac430000 	sw	v1,0(v0)
    p->id.name = cert->subject;
  4670bc:	8fc4001c 	lw	a0,28(s8)
  4670c0:	8fc30070 	lw	v1,112(s8)
  4670c4:	00000000 	nop
  4670c8:	8c620040 	lw	v0,64(v1)
  4670cc:	00000000 	nop
  4670d0:	ac820020 	sw	v0,32(a0)
  4670d4:	8c620044 	lw	v0,68(v1)
  4670d8:	00000000 	nop
  4670dc:	ac820024 	sw	v0,36(a0)
    p->dns_auth_level = dns_auth_level;
  4670e0:	8fc30078 	lw	v1,120(s8)
  4670e4:	8fc2001c 	lw	v0,28(s8)
  4670e8:	00000000 	nop
  4670ec:	ac430038 	sw	v1,56(v0)
    p->until = until;
  4670f0:	8fc30074 	lw	v1,116(s8)
  4670f4:	8fc2001c 	lw	v0,28(s8)
  4670f8:	00000000 	nop
  4670fc:	ac43002c 	sw	v1,44(v0)
    p->issuer = cert->issuer;
  467100:	8fc4001c 	lw	a0,28(s8)
  467104:	8fc30070 	lw	v1,112(s8)
  467108:	00000000 	nop
  46710c:	8c620030 	lw	v0,48(v1)
  467110:	00000000 	nop
  467114:	ac820030 	sw	v0,48(a0)
  467118:	8c620034 	lw	v0,52(v1)
  46711c:	00000000 	nop
  467120:	ac820034 	sw	v0,52(a0)
    delete_public_keys(&p->id, p->alg);
  467124:	8fc4001c 	lw	a0,28(s8)
  467128:	8fc2001c 	lw	v0,28(s8)
  46712c:	00000000 	nop
  467130:	8c45003c 	lw	a1,60(v0)
  467134:	8f998230 	lw	t9,-32208(gp)
  467138:	00000000 	nop
  46713c:	0320f809 	jalr	t9
  467140:	00000000 	nop
  467144:	8fdc0010 	lw	gp,16(s8)
  467148:	00000000 	nop
    install_public_key(p, &pubkeys);
  46714c:	8fc4001c 	lw	a0,28(s8)
  467150:	8f8587a8 	lw	a1,-30808(gp)
  467154:	8f99803c 	lw	t9,-32708(gp)
  467158:	00000000 	nop
  46715c:	27396c60 	addiu	t9,t9,27744
  467160:	00000000 	nop
  467164:	0320f809 	jalr	t9
  467168:	00000000 	nop
  46716c:	8fdc0010 	lw	gp,16(s8)
  467170:	00000000 	nop

    gn = cert->subjectAltName;
  467174:	8fc20070 	lw	v0,112(s8)
  467178:	00000000 	nop
  46717c:	8c420078 	lw	v0,120(v0)
  467180:	00000000 	nop
  467184:	afc20018 	sw	v0,24(s8)

    while (gn != NULL) /* insert all subjectAltNames */
  467188:	8fc20018 	lw	v0,24(s8)
  46718c:	00000000 	nop
  467190:	14400003 	bnez	v0,4671a0 <add_x509_public_key+0x168>
  467194:	00000000 	nop
  467198:	10000056 	b	4672f4 <add_x509_public_key+0x2bc>
  46719c:	00000000 	nop
    {
	struct id id = empty_id;
  4671a0:	27c40020 	addiu	a0,s8,32
  4671a4:	8f8582d8 	lw	a1,-32040(gp)
  4671a8:	24060028 	li	a2,40
  4671ac:	8f998a30 	lw	t9,-30160(gp)
  4671b0:	00000000 	nop
  4671b4:	0320f809 	jalr	t9
  4671b8:	00000000 	nop
  4671bc:	8fdc0010 	lw	gp,16(s8)
  4671c0:	00000000 	nop

	gntoid(&id, gn);
  4671c4:	27c40020 	addiu	a0,s8,32
  4671c8:	8fc50018 	lw	a1,24(s8)
  4671cc:	8f998af0 	lw	t9,-29968(gp)
  4671d0:	00000000 	nop
  4671d4:	0320f809 	jalr	t9
  4671d8:	00000000 	nop
  4671dc:	8fdc0010 	lw	gp,16(s8)
  4671e0:	00000000 	nop
	if (id.kind != ID_NONE)
  4671e4:	8fc20020 	lw	v0,32(s8)
  4671e8:	00000000 	nop
  4671ec:	1040003a 	beqz	v0,4672d8 <add_x509_public_key+0x2a0>
  4671f0:	00000000 	nop
	{
	    p = allocate_RSA_public_key(cert);
  4671f4:	8fc40070 	lw	a0,112(s8)
  4671f8:	8f99803c 	lw	t9,-32708(gp)
  4671fc:	00000000 	nop
  467200:	27392c94 	addiu	t9,t9,11412
  467204:	00000000 	nop
  467208:	0320f809 	jalr	t9
  46720c:	00000000 	nop
  467210:	8fdc0010 	lw	gp,16(s8)
  467214:	afc2001c 	sw	v0,28(s8)
	    p->id = id;
  467218:	8fc2001c 	lw	v0,28(s8)
  46721c:	00000000 	nop
  467220:	00402021 	move	a0,v0
  467224:	27c50020 	addiu	a1,s8,32
  467228:	24060028 	li	a2,40
  46722c:	8f998a30 	lw	t9,-30160(gp)
  467230:	00000000 	nop
  467234:	0320f809 	jalr	t9
  467238:	00000000 	nop
  46723c:	8fdc0010 	lw	gp,16(s8)
  467240:	00000000 	nop
	    p->dns_auth_level = dns_auth_level;
  467244:	8fc30078 	lw	v1,120(s8)
  467248:	8fc2001c 	lw	v0,28(s8)
  46724c:	00000000 	nop
  467250:	ac430038 	sw	v1,56(v0)
	    p->until = until;
  467254:	8fc30074 	lw	v1,116(s8)
  467258:	8fc2001c 	lw	v0,28(s8)
  46725c:	00000000 	nop
  467260:	ac43002c 	sw	v1,44(v0)
	    p->issuer = cert->issuer;
  467264:	8fc4001c 	lw	a0,28(s8)
  467268:	8fc30070 	lw	v1,112(s8)
  46726c:	00000000 	nop
  467270:	8c620030 	lw	v0,48(v1)
  467274:	00000000 	nop
  467278:	ac820030 	sw	v0,48(a0)
  46727c:	8c620034 	lw	v0,52(v1)
  467280:	00000000 	nop
  467284:	ac820034 	sw	v0,52(a0)
	    delete_public_keys(&p->id, p->alg);
  467288:	8fc4001c 	lw	a0,28(s8)
  46728c:	8fc2001c 	lw	v0,28(s8)
  467290:	00000000 	nop
  467294:	8c45003c 	lw	a1,60(v0)
  467298:	8f998230 	lw	t9,-32208(gp)
  46729c:	00000000 	nop
  4672a0:	0320f809 	jalr	t9
  4672a4:	00000000 	nop
  4672a8:	8fdc0010 	lw	gp,16(s8)
  4672ac:	00000000 	nop
	    install_public_key(p, &pubkeys);
  4672b0:	8fc4001c 	lw	a0,28(s8)
  4672b4:	8f8587a8 	lw	a1,-30808(gp)
  4672b8:	8f99803c 	lw	t9,-32708(gp)
  4672bc:	00000000 	nop
  4672c0:	27396c60 	addiu	t9,t9,27744
  4672c4:	00000000 	nop
  4672c8:	0320f809 	jalr	t9
  4672cc:	00000000 	nop
  4672d0:	8fdc0010 	lw	gp,16(s8)
  4672d4:	00000000 	nop
	}
	gn = gn->next;
  4672d8:	8fc20018 	lw	v0,24(s8)
  4672dc:	00000000 	nop
  4672e0:	8c420000 	lw	v0,0(v0)
  4672e4:	00000000 	nop
  4672e8:	afc20018 	sw	v0,24(s8)
  4672ec:	1000ffa6 	b	467188 <add_x509_public_key+0x150>
  4672f0:	00000000 	nop
    }
}
  4672f4:	03c0e821 	move	sp,s8
  4672f8:	8fbf0068 	lw	ra,104(sp)
  4672fc:	8fbe0064 	lw	s8,100(sp)
  467300:	27bd0070 	addiu	sp,sp,112
  467304:	03e00008 	jr	ra
  467308:	00000000 	nop

0046730c <remove_x509_public_key>:
  46730c:	3c1c0fba 	lui	gp,0xfba
  467310:	279c5664 	addiu	gp,gp,22116
  467314:	0399e021 	addu	gp,gp,t9
  467318:	27bdffc8 	addiu	sp,sp,-56
  46731c:	afbc0010 	sw	gp,16(sp)
  467320:	afbf0030 	sw	ra,48(sp)
  467324:	afbe002c 	sw	s8,44(sp)
  467328:	afbc0028 	sw	gp,40(sp)
  46732c:	03a0f021 	move	s8,sp
  467330:	afc40038 	sw	a0,56(s8)

/*  when a X.509 certificate gets revoked, all instances of
 *  the corresponding public key must be removed
 */
void
remove_x509_public_key(const x509cert_t *cert)
{
    struct pubkeyrec *p, **pp, *revoked_p;

    revoked_p = allocate_RSA_public_key(cert);
  467334:	8fc40038 	lw	a0,56(s8)
  467338:	8f99803c 	lw	t9,-32708(gp)
  46733c:	00000000 	nop
  467340:	27392c94 	addiu	t9,t9,11412
  467344:	00000000 	nop
  467348:	0320f809 	jalr	t9
  46734c:	00000000 	nop
  467350:	8fdc0010 	lw	gp,16(s8)
  467354:	afc20020 	sw	v0,32(s8)
    p         = pubkeys;
  467358:	8f8287a8 	lw	v0,-30808(gp)
  46735c:	00000000 	nop
  467360:	8c420000 	lw	v0,0(v0)
  467364:	00000000 	nop
  467368:	afc20018 	sw	v0,24(s8)
    pp        = &pubkeys;
  46736c:	8f8287a8 	lw	v0,-30808(gp)
  467370:	00000000 	nop
  467374:	afc2001c 	sw	v0,28(s8)

    while(p != NULL)
  467378:	8fc20018 	lw	v0,24(s8)
  46737c:	00000000 	nop
  467380:	14400003 	bnez	v0,467390 <remove_x509_public_key+0x84>
  467384:	00000000 	nop
  467388:	10000030 	b	46744c <remove_x509_public_key+0x140>
  46738c:	00000000 	nop
   {
	if (same_RSA_public_key(&p->u.rsa, &revoked_p->u.rsa))
  467390:	8fc20018 	lw	v0,24(s8)
  467394:	00000000 	nop
  467398:	24430040 	addiu	v1,v0,64
  46739c:	8fc20020 	lw	v0,32(s8)
  4673a0:	00000000 	nop
  4673a4:	24420040 	addiu	v0,v0,64
  4673a8:	00602021 	move	a0,v1
  4673ac:	00402821 	move	a1,v0
  4673b0:	8f998c68 	lw	t9,-29592(gp)
  4673b4:	00000000 	nop
  4673b8:	0320f809 	jalr	t9
  4673bc:	00000000 	nop
  4673c0:	8fdc0010 	lw	gp,16(s8)
  4673c4:	10400016 	beqz	v0,467420 <remove_x509_public_key+0x114>
  4673c8:	00000000 	nop
	{
	    /* remove p from list and free memory */
	    *pp = free_public_key(p);
  4673cc:	8fc40018 	lw	a0,24(s8)
  4673d0:	8f9985f4 	lw	t9,-31244(gp)
  4673d4:	00000000 	nop
  4673d8:	0320f809 	jalr	t9
  4673dc:	00000000 	nop
  4673e0:	8fdc0010 	lw	gp,16(s8)
  4673e4:	00401821 	move	v1,v0
  4673e8:	8fc2001c 	lw	v0,28(s8)
  4673ec:	00000000 	nop
  4673f0:	ac430000 	sw	v1,0(v0)
	    loglog(RC_LOG_SERIOUS,
  4673f4:	24040003 	li	a0,3
  4673f8:	8f85802c 	lw	a1,-32724(gp)
  4673fc:	00000000 	nop
  467400:	24a53750 	addiu	a1,a1,14160
  467404:	8f998c48 	lw	t9,-29624(gp)
  467408:	00000000 	nop
  46740c:	0320f809 	jalr	t9
  467410:	00000000 	nop
  467414:	8fdc0010 	lw	gp,16(s8)
  467418:	10000005 	b	467430 <remove_x509_public_key+0x124>
  46741c:	00000000 	nop
		"invalid RSA public key deleted");
	}
	else
	{
	    pp = &p->next;
  467420:	8fc20018 	lw	v0,24(s8)
  467424:	00000000 	nop
  467428:	24420068 	addiu	v0,v0,104
  46742c:	afc2001c 	sw	v0,28(s8)
	}
	p =*pp;
  467430:	8fc2001c 	lw	v0,28(s8)
  467434:	00000000 	nop
  467438:	8c420000 	lw	v0,0(v0)
  46743c:	00000000 	nop
  467440:	afc20018 	sw	v0,24(s8)
  467444:	1000ffcc 	b	467378 <remove_x509_public_key+0x6c>
  467448:	00000000 	nop
    }
    free_public_key(revoked_p);
  46744c:	8fc40020 	lw	a0,32(s8)
  467450:	8f9985f4 	lw	t9,-31244(gp)
  467454:	00000000 	nop
  467458:	0320f809 	jalr	t9
  46745c:	00000000 	nop
  467460:	8fdc0010 	lw	gp,16(s8)
  467464:	00000000 	nop
}
  467468:	03c0e821 	move	sp,s8
  46746c:	8fbf0030 	lw	ra,48(sp)
  467470:	8fbe002c 	lw	s8,44(sp)
  467474:	27bd0038 	addiu	sp,sp,56
  467478:	03e00008 	jr	ra
  46747c:	00000000 	nop

00467480 <list_public_keys>:
  467480:	3c1c0fba 	lui	gp,0xfba
  467484:	279c54f0 	addiu	gp,gp,21744
  467488:	0399e021 	addu	gp,gp,t9
  46748c:	27bdfda0 	addiu	sp,sp,-608
  467490:	afbc0020 	sw	gp,32(sp)
  467494:	afbf025c 	sw	ra,604(sp)
  467498:	afbe0258 	sw	s8,600(sp)
  46749c:	afbc0254 	sw	gp,596(sp)
  4674a0:	afb00250 	sw	s0,592(sp)
  4674a4:	03a0f021 	move	s8,sp
  4674a8:	afc40260 	sw	a0,608(s8)

/*
 *  list all public keys in the chained list
 */
void list_public_keys(bool utc)
{
    struct pubkeyrec *p = pubkeys;
  4674ac:	8f8287a8 	lw	v0,-30808(gp)
  4674b0:	00000000 	nop
  4674b4:	8c420000 	lw	v0,0(v0)
  4674b8:	00000000 	nop
  4674bc:	afc20028 	sw	v0,40(s8)

    whack_log(RC_COMMENT, " ");
  4674c0:	00002021 	move	a0,zero
  4674c4:	8f85802c 	lw	a1,-32724(gp)
  4674c8:	00000000 	nop
  4674cc:	24a53770 	addiu	a1,a1,14192
  4674d0:	8f9982a8 	lw	t9,-32088(gp)
  4674d4:	00000000 	nop
  4674d8:	0320f809 	jalr	t9
  4674dc:	00000000 	nop
  4674e0:	8fdc0020 	lw	gp,32(s8)
  4674e4:	00000000 	nop
    whack_log(RC_COMMENT, "List of Public Keys:");
  4674e8:	00002021 	move	a0,zero
  4674ec:	8f85802c 	lw	a1,-32724(gp)
  4674f0:	00000000 	nop
  4674f4:	24a53774 	addiu	a1,a1,14196
  4674f8:	8f9982a8 	lw	t9,-32088(gp)
  4674fc:	00000000 	nop
  467500:	0320f809 	jalr	t9
  467504:	00000000 	nop
  467508:	8fdc0020 	lw	gp,32(s8)
  46750c:	00000000 	nop
    whack_log(RC_COMMENT, " ");
  467510:	00002021 	move	a0,zero
  467514:	8f85802c 	lw	a1,-32724(gp)
  467518:	00000000 	nop
  46751c:	24a53770 	addiu	a1,a1,14192
  467520:	8f9982a8 	lw	t9,-32088(gp)
  467524:	00000000 	nop
  467528:	0320f809 	jalr	t9
  46752c:	00000000 	nop
  467530:	8fdc0020 	lw	gp,32(s8)
  467534:	00000000 	nop

    while (p != NULL)
  467538:	8fc20028 	lw	v0,40(s8)
  46753c:	00000000 	nop
  467540:	14400003 	bnez	v0,467550 <list_public_keys+0xd0>
  467544:	00000000 	nop
  467548:	10000087 	b	467768 <list_public_keys+0x2e8>
  46754c:	00000000 	nop
    {
	if (p->alg == PUBKEY_ALG_RSA)
  467550:	8fc20028 	lw	v0,40(s8)
  467554:	00000000 	nop
  467558:	8c43003c 	lw	v1,60(v0)
  46755c:	24020001 	li	v0,1
  467560:	1462007a 	bne	v1,v0,46774c <list_public_keys+0x2cc>
  467564:	00000000 	nop
	{
	    char id_buf[IDTOA_BUF];
	    char expires_buf[TIMETOA_BUF];

	    idtoa(&p->id, id_buf, IDTOA_BUF);
  467568:	8fc40028 	lw	a0,40(s8)
  46756c:	27c50030 	addiu	a1,s8,48
  467570:	24060200 	li	a2,512
  467574:	8f998798 	lw	t9,-30824(gp)
  467578:	00000000 	nop
  46757c:	0320f809 	jalr	t9
  467580:	00000000 	nop
  467584:	8fdc0020 	lw	gp,32(s8)
  467588:	00000000 	nop
	    strcpy(expires_buf, timetoa(&p->until, utc));
  46758c:	8fc20028 	lw	v0,40(s8)
  467590:	00000000 	nop
  467594:	2442002c 	addiu	v0,v0,44
  467598:	00402021 	move	a0,v0
  46759c:	8fc50260 	lw	a1,608(s8)
  4675a0:	8f998b80 	lw	t9,-29824(gp)
  4675a4:	00000000 	nop
  4675a8:	0320f809 	jalr	t9
  4675ac:	00000000 	nop
  4675b0:	8fdc0020 	lw	gp,32(s8)
  4675b4:	27c40230 	addiu	a0,s8,560
  4675b8:	00402821 	move	a1,v0
  4675bc:	8f998c58 	lw	t9,-29608(gp)
  4675c0:	00000000 	nop
  4675c4:	0320f809 	jalr	t9
  4675c8:	00000000 	nop
  4675cc:	8fdc0020 	lw	gp,32(s8)
  4675d0:	00000000 	nop

	    whack_log(RC_COMMENT, "%s, %4d RSA Key %s, until %s %s",
  4675d4:	8fc20028 	lw	v0,40(s8)
  4675d8:	00000000 	nop
  4675dc:	24420028 	addiu	v0,v0,40
  4675e0:	00402021 	move	a0,v0
  4675e4:	8fc50260 	lw	a1,608(s8)
  4675e8:	8f998b80 	lw	t9,-29824(gp)
  4675ec:	00000000 	nop
  4675f0:	0320f809 	jalr	t9
  4675f4:	00000000 	nop
  4675f8:	8fdc0020 	lw	gp,32(s8)
  4675fc:	00408021 	move	s0,v0
  467600:	8fc20028 	lw	v0,40(s8)
  467604:	00000000 	nop
  467608:	8c44002c 	lw	a0,44(v0)
  46760c:	24050007 	li	a1,7
  467610:	24060001 	li	a2,1
  467614:	8f9980d8 	lw	t9,-32552(gp)
  467618:	00000000 	nop
  46761c:	0320f809 	jalr	t9
  467620:	00000000 	nop
  467624:	8fdc0020 	lw	gp,32(s8)
  467628:	00401821 	move	v1,v0
  46762c:	8fc20028 	lw	v0,40(s8)
  467630:	00000000 	nop
  467634:	8c42004c 	lw	v0,76(v0)
  467638:	00000000 	nop
  46763c:	000238c0 	sll	a3,v0,0x3
  467640:	8fc20028 	lw	v0,40(s8)
  467644:	00000000 	nop
  467648:	24420040 	addiu	v0,v0,64
  46764c:	afa20010 	sw	v0,16(sp)
  467650:	27c20230 	addiu	v0,s8,560
  467654:	afa20014 	sw	v0,20(sp)
  467658:	afa30018 	sw	v1,24(sp)
  46765c:	00002021 	move	a0,zero
  467660:	8f85802c 	lw	a1,-32724(gp)
  467664:	00000000 	nop
  467668:	24a5378c 	addiu	a1,a1,14220
  46766c:	02003021 	move	a2,s0
  467670:	8f9982a8 	lw	t9,-32088(gp)
  467674:	00000000 	nop
  467678:	0320f809 	jalr	t9
  46767c:	00000000 	nop
  467680:	8fdc0020 	lw	gp,32(s8)
  467684:	00000000 	nop
		timetoa(&p->installed, utc), 8*p->u.rsa.k, p->u.rsa.keyid,
		expires_buf,
		check_expiry(p->until, PUBKEY_WARNING_INTERVAL, TRUE));
	    whack_log(RC_COMMENT,"       %s '%s'",
  467688:	8f84877c 	lw	a0,-30852(gp)
  46768c:	8fc20028 	lw	v0,40(s8)
  467690:	00000000 	nop
  467694:	8c450000 	lw	a1,0(v0)
  467698:	8f9987fc 	lw	t9,-30724(gp)
  46769c:	00000000 	nop
  4676a0:	0320f809 	jalr	t9
  4676a4:	00000000 	nop
  4676a8:	8fdc0020 	lw	gp,32(s8)
  4676ac:	00002021 	move	a0,zero
  4676b0:	8f85802c 	lw	a1,-32724(gp)
  4676b4:	00000000 	nop
  4676b8:	24a537ac 	addiu	a1,a1,14252
  4676bc:	00403021 	move	a2,v0
  4676c0:	27c70030 	addiu	a3,s8,48
  4676c4:	8f9982a8 	lw	t9,-32088(gp)
  4676c8:	00000000 	nop
  4676cc:	0320f809 	jalr	t9
  4676d0:	00000000 	nop
  4676d4:	8fdc0020 	lw	gp,32(s8)
  4676d8:	00000000 	nop
		enum_show(&ident_names, p->id.kind), id_buf);
	    if (p->issuer.len > 0)
  4676dc:	8fc20028 	lw	v0,40(s8)
  4676e0:	00000000 	nop
  4676e4:	8c420034 	lw	v0,52(v0)
  4676e8:	00000000 	nop
  4676ec:	10400017 	beqz	v0,46774c <list_public_keys+0x2cc>
  4676f0:	00000000 	nop
	    {
		dntoa(id_buf, IDTOA_BUF, p->issuer);
  4676f4:	8fc20028 	lw	v0,40(s8)
  4676f8:	27c40030 	addiu	a0,s8,48
  4676fc:	24050200 	li	a1,512
  467700:	8c460030 	lw	a2,48(v0)
  467704:	8c470034 	lw	a3,52(v0)
  467708:	8f9982bc 	lw	t9,-32068(gp)
  46770c:	00000000 	nop
  467710:	0320f809 	jalr	t9
  467714:	00000000 	nop
  467718:	8fdc0020 	lw	gp,32(s8)
  46771c:	00000000 	nop
		whack_log(RC_COMMENT,"       Issuer '%s'", id_buf);
  467720:	00002021 	move	a0,zero
  467724:	8f85802c 	lw	a1,-32724(gp)
  467728:	00000000 	nop
  46772c:	24a537bc 	addiu	a1,a1,14268
  467730:	27c60030 	addiu	a2,s8,48
  467734:	8f9982a8 	lw	t9,-32088(gp)
  467738:	00000000 	nop
  46773c:	0320f809 	jalr	t9
  467740:	00000000 	nop
  467744:	8fdc0020 	lw	gp,32(s8)
  467748:	00000000 	nop
	    }
	}
	p = p->next;
  46774c:	8fc20028 	lw	v0,40(s8)
  467750:	00000000 	nop
  467754:	8c420068 	lw	v0,104(v0)
  467758:	00000000 	nop
  46775c:	afc20028 	sw	v0,40(s8)
  467760:	1000ff75 	b	467538 <list_public_keys+0xb8>
  467764:	00000000 	nop
    }
}
  467768:	03c0e821 	move	sp,s8
  46776c:	8fbf025c 	lw	ra,604(sp)
  467770:	8fbe0258 	lw	s8,600(sp)
  467774:	8fb00250 	lw	s0,592(sp)
  467778:	27bd0260 	addiu	sp,sp,608
  46777c:	03e00008 	jr	ra
  467780:	00000000 	nop
	...

00467790 <init_adns>:
  467790:	3c1c0fba 	lui	gp,0xfba
  467794:	279c51e0 	addiu	gp,gp,20960
  467798:	0399e021 	addu	gp,gp,t9
  46779c:	27bdef80 	addiu	sp,sp,-4224
  4677a0:	afbc0018 	sw	gp,24(sp)
  4677a4:	afbf1078 	sw	ra,4216(sp)
  4677a8:	afbe1074 	sw	s8,4212(sp)
  4677ac:	afbc1070 	sw	gp,4208(sp)
  4677b0:	03a0f021 	move	s8,sp

void
init_adns(void)
{
    const char *adns_path = pluto_adns_option;
  4677b4:	8f8287e0 	lw	v0,-30752(gp)
  4677b8:	00000000 	nop
  4677bc:	8c420000 	lw	v0,0(v0)
  4677c0:	00000000 	nop
  4677c4:	afc20020 	sw	v0,32(s8)
    static const char adns_name[] = "_pluto_adns";
    char adns_path_space[4096];	/* plenty long? */
    int qfds[2];
    int afds[2];

    /* find a pathname to the ADNS program */
    if (adns_path == NULL)
  4677c8:	8fc20020 	lw	v0,32(s8)
  4677cc:	00000000 	nop
  4677d0:	14400091 	bnez	v0,467a18 <init_adns+0x288>
  4677d4:	00000000 	nop
    {
	/* pathname was not specified as an option: build it.
	 * First, figure out the directory to be used.
	 */
	const char *ipsec_dir = getenv("IPSEC_DIR");
  4677d8:	8f84802c 	lw	a0,-32724(gp)
  4677dc:	00000000 	nop
  4677e0:	248437dc 	addiu	a0,a0,14300
  4677e4:	8f998ae4 	lw	t9,-29980(gp)
  4677e8:	00000000 	nop
  4677ec:	0320f809 	jalr	t9
  4677f0:	00000000 	nop
  4677f4:	8fdc0018 	lw	gp,24(s8)
  4677f8:	afc21038 	sw	v0,4152(s8)
	ssize_t n;

	if (ipsec_dir != NULL)
  4677fc:	8fc21038 	lw	v0,4152(s8)
  467800:	00000000 	nop
  467804:	1040002d 	beqz	v0,4678bc <init_adns+0x12c>
  467808:	00000000 	nop
	{
	    /* IPSEC_DIR specifies the directory */
	    n = strlen(ipsec_dir);
  46780c:	8fc41038 	lw	a0,4152(s8)
  467810:	8f998188 	lw	t9,-32376(gp)
  467814:	00000000 	nop
  467818:	0320f809 	jalr	t9
  46781c:	00000000 	nop
  467820:	8fdc0018 	lw	gp,24(s8)
  467824:	afc2103c 	sw	v0,4156(s8)
	    if ((size_t)n <= sizeof(adns_path_space) - sizeof(adns_name))
  467828:	8fc2103c 	lw	v0,4156(s8)
  46782c:	00000000 	nop
  467830:	2c420ff5 	sltiu	v0,v0,4085
  467834:	10400042 	beqz	v0,467940 <init_adns+0x1b0>
  467838:	00000000 	nop
	    {
		strcpy(adns_path_space, ipsec_dir);
  46783c:	27c40028 	addiu	a0,s8,40
  467840:	8fc51038 	lw	a1,4152(s8)
  467844:	8f998c58 	lw	t9,-29608(gp)
  467848:	00000000 	nop
  46784c:	0320f809 	jalr	t9
  467850:	00000000 	nop
  467854:	8fdc0018 	lw	gp,24(s8)
  467858:	00000000 	nop
		if (n > 0 && adns_path_space[n -1] != '/')
  46785c:	8fc2103c 	lw	v0,4156(s8)
  467860:	00000000 	nop
  467864:	18400036 	blez	v0,467940 <init_adns+0x1b0>
  467868:	00000000 	nop
  46786c:	8fc2103c 	lw	v0,4156(s8)
  467870:	00000000 	nop
  467874:	2443ffff 	addiu	v1,v0,-1
  467878:	27c20028 	addiu	v0,s8,40
  46787c:	00431021 	addu	v0,v0,v1
  467880:	80430000 	lb	v1,0(v0)
  467884:	2402002f 	li	v0,47
  467888:	1062002d 	beq	v1,v0,467940 <init_adns+0x1b0>
  46788c:	00000000 	nop
		    adns_path_space[n++] = '/';
  467890:	27c5103c 	addiu	a1,s8,4156
  467894:	8ca30000 	lw	v1,0(a1)
  467898:	27c40028 	addiu	a0,s8,40
  46789c:	00601021 	move	v0,v1
  4678a0:	00822021 	addu	a0,a0,v0
  4678a4:	2402002f 	li	v0,47
  4678a8:	a0820000 	sb	v0,0(a0)
  4678ac:	24630001 	addiu	v1,v1,1
  4678b0:	aca30000 	sw	v1,0(a1)
  4678b4:	10000022 	b	467940 <init_adns+0x1b0>
  4678b8:	00000000 	nop
	    }
	}
	else
	{
	    /* The program will be in the same directory as Pluto,
	     * so we use the sympolic link /proc/self/exe to
	     * tell us of the path prefix.
	     */
	    n = readlink("/proc/self/exe", adns_path_space, sizeof(adns_path_space));
  4678bc:	8f84802c 	lw	a0,-32724(gp)
  4678c0:	00000000 	nop
  4678c4:	248437e8 	addiu	a0,a0,14312
  4678c8:	27c50028 	addiu	a1,s8,40
  4678cc:	24061000 	li	a2,4096
  4678d0:	8f998a10 	lw	t9,-30192(gp)
  4678d4:	00000000 	nop
  4678d8:	0320f809 	jalr	t9
  4678dc:	00000000 	nop
  4678e0:	8fdc0018 	lw	gp,24(s8)
  4678e4:	afc2103c 	sw	v0,4156(s8)

	    if (n < 0)
  4678e8:	8fc2103c 	lw	v0,4156(s8)
  4678ec:	00000000 	nop
  4678f0:	04410013 	bgez	v0,467940 <init_adns+0x1b0>
  4678f4:	00000000 	nop
		exit_log_errno((e
  4678f8:	8f998234 	lw	t9,-32204(gp)
  4678fc:	00000000 	nop
  467900:	0320f809 	jalr	t9
  467904:	00000000 	nop
  467908:	8fdc0018 	lw	gp,24(s8)
  46790c:	8c420000 	lw	v0,0(v0)
  467910:	00000000 	nop
  467914:	afc21040 	sw	v0,4160(s8)
  467918:	8fc41040 	lw	a0,4160(s8)
  46791c:	8f85802c 	lw	a1,-32724(gp)
  467920:	00000000 	nop
  467924:	24a537f8 	addiu	a1,a1,14328
  467928:	8f998154 	lw	t9,-32428(gp)
  46792c:	00000000 	nop
  467930:	0320f809 	jalr	t9
  467934:	00000000 	nop
  467938:	8fdc0018 	lw	gp,24(s8)
  46793c:	00000000 	nop
		    , "readlink(\"/proc/self/exe\") failed in init_adns()"));

	}

	if ((size_t)n > sizeof(adns_path_space) - sizeof(adns_name))
  467940:	8fc2103c 	lw	v0,4156(s8)
  467944:	00000000 	nop
  467948:	2c420ff5 	sltiu	v0,v0,4085
  46794c:	1440000c 	bnez	v0,467980 <init_adns+0x1f0>
  467950:	00000000 	nop
	    exit_log("path to %s is too long", adns_name);
  467954:	8f84802c 	lw	a0,-32724(gp)
  467958:	00000000 	nop
  46795c:	2484382c 	addiu	a0,a0,14380
  467960:	8f85802c 	lw	a1,-32724(gp)
  467964:	00000000 	nop
  467968:	24a537d0 	addiu	a1,a1,14288
  46796c:	8f998854 	lw	t9,-30636(gp)
  467970:	00000000 	nop
  467974:	0320f809 	jalr	t9
  467978:	00000000 	nop
  46797c:	8fdc0018 	lw	gp,24(s8)
  467980:	00000000 	nop

	while (n > 0 && adns_path_space[n - 1] != '/')
  467984:	8fc2103c 	lw	v0,4156(s8)
  467988:	00000000 	nop
  46798c:	18400012 	blez	v0,4679d8 <init_adns+0x248>
  467990:	00000000 	nop
  467994:	8fc2103c 	lw	v0,4156(s8)
  467998:	00000000 	nop
  46799c:	2443ffff 	addiu	v1,v0,-1
  4679a0:	27c20028 	addiu	v0,s8,40
  4679a4:	00431021 	addu	v0,v0,v1
  4679a8:	80430000 	lb	v1,0(v0)
  4679ac:	2402002f 	li	v0,47
  4679b0:	14620003 	bne	v1,v0,4679c0 <init_adns+0x230>
  4679b4:	00000000 	nop
  4679b8:	10000007 	b	4679d8 <init_adns+0x248>
  4679bc:	00000000 	nop
	    n--;
  4679c0:	8fc2103c 	lw	v0,4156(s8)
  4679c4:	00000000 	nop
  4679c8:	2442ffff 	addiu	v0,v0,-1
  4679cc:	afc2103c 	sw	v0,4156(s8)
  4679d0:	1000ffec 	b	467984 <init_adns+0x1f4>
  4679d4:	00000000 	nop

	strcpy(adns_path_space + n, adns_name);
  4679d8:	27c30028 	addiu	v1,s8,40
  4679dc:	8fc2103c 	lw	v0,4156(s8)
  4679e0:	00000000 	nop
  4679e4:	00621021 	addu	v0,v1,v0
  4679e8:	00402021 	move	a0,v0
  4679ec:	8f85802c 	lw	a1,-32724(gp)
  4679f0:	00000000 	nop
  4679f4:	24a537d0 	addiu	a1,a1,14288
  4679f8:	8f998c58 	lw	t9,-29608(gp)
  4679fc:	00000000 	nop
  467a00:	0320f809 	jalr	t9
  467a04:	00000000 	nop
  467a08:	8fdc0018 	lw	gp,24(s8)
  467a0c:	00000000 	nop
	adns_path = adns_path_space;
  467a10:	27c20028 	addiu	v0,s8,40
  467a14:	afc20020 	sw	v0,32(s8)
    }
    if (access(adns_path, X_OK) < 0)
  467a18:	8fc40020 	lw	a0,32(s8)
  467a1c:	24050001 	li	a1,1
  467a20:	8f9982a4 	lw	t9,-32092(gp)
  467a24:	00000000 	nop
  467a28:	0320f809 	jalr	t9
  467a2c:	00000000 	nop
  467a30:	8fdc0018 	lw	gp,24(s8)
  467a34:	04410014 	bgez	v0,467a88 <init_adns+0x2f8>
  467a38:	00000000 	nop
	exit_log_errno((e, "%s missing or not executable", adns_path));
  467a3c:	8f998234 	lw	t9,-32204(gp)
  467a40:	00000000 	nop
  467a44:	0320f809 	jalr	t9
  467a48:	00000000 	nop
  467a4c:	8fdc0018 	lw	gp,24(s8)
  467a50:	8c420000 	lw	v0,0(v0)
  467a54:	00000000 	nop
  467a58:	afc21040 	sw	v0,4160(s8)
  467a5c:	8fc41040 	lw	a0,4160(s8)
  467a60:	8f85802c 	lw	a1,-32724(gp)
  467a64:	00000000 	nop
  467a68:	24a53844 	addiu	a1,a1,14404
  467a6c:	8fc60020 	lw	a2,32(s8)
  467a70:	8f998154 	lw	t9,-32428(gp)
  467a74:	00000000 	nop
  467a78:	0320f809 	jalr	t9
  467a7c:	00000000 	nop
  467a80:	8fdc0018 	lw	gp,24(s8)
  467a84:	00000000 	nop


    if (pipe(qfds) != 0 || pipe(afds) != 0)
  467a88:	27c41028 	addiu	a0,s8,4136
  467a8c:	8f998840 	lw	t9,-30656(gp)
  467a90:	00000000 	nop
  467a94:	0320f809 	jalr	t9
  467a98:	00000000 	nop
  467a9c:	8fdc0018 	lw	gp,24(s8)
  467aa0:	1440000b 	bnez	v0,467ad0 <init_adns+0x340>
  467aa4:	00000000 	nop
  467aa8:	27c41030 	addiu	a0,s8,4144
  467aac:	8f998840 	lw	t9,-30656(gp)
  467ab0:	00000000 	nop
  467ab4:	0320f809 	jalr	t9
  467ab8:	00000000 	nop
  467abc:	8fdc0018 	lw	gp,24(s8)
  467ac0:	14400003 	bnez	v0,467ad0 <init_adns+0x340>
  467ac4:	00000000 	nop
  467ac8:	10000013 	b	467b18 <init_adns+0x388>
  467acc:	00000000 	nop
	exit_log_errno((e, "pipe(2) failed in init_adns()"));
  467ad0:	8f998234 	lw	t9,-32204(gp)
  467ad4:	00000000 	nop
  467ad8:	0320f809 	jalr	t9
  467adc:	00000000 	nop
  467ae0:	8fdc0018 	lw	gp,24(s8)
  467ae4:	8c420000 	lw	v0,0(v0)
  467ae8:	00000000 	nop
  467aec:	afc21040 	sw	v0,4160(s8)
  467af0:	8fc41040 	lw	a0,4160(s8)
  467af4:	8f85802c 	lw	a1,-32724(gp)
  467af8:	00000000 	nop
  467afc:	24a53864 	addiu	a1,a1,14436
  467b00:	8f998154 	lw	t9,-32428(gp)
  467b04:	00000000 	nop
  467b08:	0320f809 	jalr	t9
  467b0c:	00000000 	nop
  467b10:	8fdc0018 	lw	gp,24(s8)
  467b14:	00000000 	nop

    adns_pid = fork();
  467b18:	8f9985a0 	lw	t9,-31328(gp)
  467b1c:	00000000 	nop
  467b20:	0320f809 	jalr	t9
  467b24:	00000000 	nop
  467b28:	8fdc0018 	lw	gp,24(s8)
  467b2c:	00000000 	nop
  467b30:	8f818018 	lw	at,-32744(gp)
  467b34:	00000000 	nop
  467b38:	24213308 	addiu	at,at,13064
  467b3c:	ac220000 	sw	v0,0(at)
    switch (adns_pid)
  467b40:	8f828018 	lw	v0,-32744(gp)
  467b44:	00000000 	nop
  467b48:	24423308 	addiu	v0,v0,13064
  467b4c:	8c420000 	lw	v0,0(v0)
  467b50:	00000000 	nop
  467b54:	afc21068 	sw	v0,4200(s8)
  467b58:	2402ffff 	li	v0,-1
  467b5c:	8fc31068 	lw	v1,4200(s8)
  467b60:	00000000 	nop
  467b64:	10620007 	beq	v1,v0,467b84 <init_adns+0x3f4>
  467b68:	00000000 	nop
  467b6c:	8fc21068 	lw	v0,4200(s8)
  467b70:	00000000 	nop
  467b74:	10400015 	beqz	v0,467bcc <init_adns+0x43c>
  467b78:	00000000 	nop
  467b7c:	10000072 	b	467d48 <init_adns+0x5b8>
  467b80:	00000000 	nop
    {
    case -1:
	exit_log_errno((e, "fork() failed in init_adns()"));
  467b84:	8f998234 	lw	t9,-32204(gp)
  467b88:	00000000 	nop
  467b8c:	0320f809 	jalr	t9
  467b90:	00000000 	nop
  467b94:	8fdc0018 	lw	gp,24(s8)
  467b98:	8c420000 	lw	v0,0(v0)
  467b9c:	00000000 	nop
  467ba0:	afc21040 	sw	v0,4160(s8)
  467ba4:	8fc41040 	lw	a0,4160(s8)
  467ba8:	8f85802c 	lw	a1,-32724(gp)
  467bac:	00000000 	nop
  467bb0:	24a53884 	addiu	a1,a1,14468
  467bb4:	8f998154 	lw	t9,-32428(gp)
  467bb8:	00000000 	nop
  467bbc:	0320f809 	jalr	t9
  467bc0:	00000000 	nop
  467bc4:	8fdc0018 	lw	gp,24(s8)
  467bc8:	00000000 	nop

    case 0:
	/* child */
	{
	    char qfd_str[10];
	    char afd_str[10];

	    snprintf(qfd_str, sizeof(qfd_str), "%d", qfds[0]);
  467bcc:	27c41048 	addiu	a0,s8,4168
  467bd0:	2405000a 	li	a1,10
  467bd4:	8f86802c 	lw	a2,-32724(gp)
  467bd8:	00000000 	nop
  467bdc:	24c638a4 	addiu	a2,a2,14500
  467be0:	8fc71028 	lw	a3,4136(s8)
  467be4:	8f998b38 	lw	t9,-29896(gp)
  467be8:	00000000 	nop
  467bec:	0320f809 	jalr	t9
  467bf0:	00000000 	nop
  467bf4:	8fdc0018 	lw	gp,24(s8)
  467bf8:	00000000 	nop
	    close(qfds[1]);
  467bfc:	8fc4102c 	lw	a0,4140(s8)
  467c00:	8f9980c8 	lw	t9,-32568(gp)
  467c04:	00000000 	nop
  467c08:	0320f809 	jalr	t9
  467c0c:	00000000 	nop
  467c10:	8fdc0018 	lw	gp,24(s8)
  467c14:	00000000 	nop
	    close(afds[0]);
  467c18:	8fc41030 	lw	a0,4144(s8)
  467c1c:	8f9980c8 	lw	t9,-32568(gp)
  467c20:	00000000 	nop
  467c24:	0320f809 	jalr	t9
  467c28:	00000000 	nop
  467c2c:	8fdc0018 	lw	gp,24(s8)
  467c30:	00000000 	nop
	    snprintf(afd_str, sizeof(afd_str), "%d", afds[1]);
  467c34:	27c41058 	addiu	a0,s8,4184
  467c38:	2405000a 	li	a1,10
  467c3c:	8f86802c 	lw	a2,-32724(gp)
  467c40:	00000000 	nop
  467c44:	24c638a4 	addiu	a2,a2,14500
  467c48:	8fc71034 	lw	a3,4148(s8)
  467c4c:	8f998b38 	lw	t9,-29896(gp)
  467c50:	00000000 	nop
  467c54:	0320f809 	jalr	t9
  467c58:	00000000 	nop
  467c5c:	8fdc0018 	lw	gp,24(s8)
  467c60:	00000000 	nop
#ifdef DEBUG
	    /* this isn't elegantly covered by our macros */
	    if (cur_debugging & DBG_DNS)
  467c64:	8f8284f8 	lw	v0,-31496(gp)
  467c68:	00000000 	nop
  467c6c:	8c420000 	lw	v0,0(v0)
  467c70:	00000000 	nop
  467c74:	30420100 	andi	v0,v0,0x100
  467c78:	10400013 	beqz	v0,467cc8 <init_adns+0x538>
  467c7c:	00000000 	nop
		execlp(adns_path, adns_name, "-d", qfd_str, afd_str, NULL);
  467c80:	27c21058 	addiu	v0,s8,4184
  467c84:	afa20010 	sw	v0,16(sp)
  467c88:	afa00014 	sw	zero,20(sp)
  467c8c:	8fc40020 	lw	a0,32(s8)
  467c90:	8f85802c 	lw	a1,-32724(gp)
  467c94:	00000000 	nop
  467c98:	24a537d0 	addiu	a1,a1,14288
  467c9c:	8f86802c 	lw	a2,-32724(gp)
  467ca0:	00000000 	nop
  467ca4:	24c638a8 	addiu	a2,a2,14504
  467ca8:	27c71048 	addiu	a3,s8,4168
  467cac:	8f99857c 	lw	t9,-31364(gp)
  467cb0:	00000000 	nop
  467cb4:	0320f809 	jalr	t9
  467cb8:	00000000 	nop
  467cbc:	8fdc0018 	lw	gp,24(s8)
  467cc0:	1000000e 	b	467cfc <init_adns+0x56c>
  467cc4:	00000000 	nop
	    else
		execlp(adns_path, adns_name, qfd_str, afd_str, NULL);
  467cc8:	afa00010 	sw	zero,16(sp)
  467ccc:	8fc40020 	lw	a0,32(s8)
  467cd0:	8f85802c 	lw	a1,-32724(gp)
  467cd4:	00000000 	nop
  467cd8:	24a537d0 	addiu	a1,a1,14288
  467cdc:	27c61048 	addiu	a2,s8,4168
  467ce0:	27c71058 	addiu	a3,s8,4184
  467ce4:	8f99857c 	lw	t9,-31364(gp)
  467ce8:	00000000 	nop
  467cec:	0320f809 	jalr	t9
  467cf0:	00000000 	nop
  467cf4:	8fdc0018 	lw	gp,24(s8)
  467cf8:	00000000 	nop
#else
	    execlp(adns_path, adns_name, qfd_str, afd_str, NULL);
#endif
	    exit_log_errno((e, "execlp of %s failed", adns_path));
  467cfc:	8f998234 	lw	t9,-32204(gp)
  467d00:	00000000 	nop
  467d04:	0320f809 	jalr	t9
  467d08:	00000000 	nop
  467d0c:	8fdc0018 	lw	gp,24(s8)
  467d10:	8c420000 	lw	v0,0(v0)
  467d14:	00000000 	nop
  467d18:	afc21040 	sw	v0,4160(s8)
  467d1c:	8fc41040 	lw	a0,4160(s8)
  467d20:	8f85802c 	lw	a1,-32724(gp)
  467d24:	00000000 	nop
  467d28:	24a538ac 	addiu	a1,a1,14508
  467d2c:	8fc60020 	lw	a2,32(s8)
  467d30:	8f998154 	lw	t9,-32428(gp)
  467d34:	00000000 	nop
  467d38:	0320f809 	jalr	t9
  467d3c:	00000000 	nop
  467d40:	8fdc0018 	lw	gp,24(s8)
  467d44:	00000000 	nop
	}

    default:
	/* parent */
	close(qfds[0]);
  467d48:	8fc41028 	lw	a0,4136(s8)
  467d4c:	8f9980c8 	lw	t9,-32568(gp)
  467d50:	00000000 	nop
  467d54:	0320f809 	jalr	t9
  467d58:	00000000 	nop
  467d5c:	8fdc0018 	lw	gp,24(s8)
  467d60:	00000000 	nop
	adns_qfd = qfds[1];
  467d64:	8fc2102c 	lw	v0,4140(s8)
  467d68:	8f818a00 	lw	at,-30208(gp)
  467d6c:	00000000 	nop
  467d70:	ac220000 	sw	v0,0(at)
	adns_afd = afds[0];
  467d74:	8fc21030 	lw	v0,4144(s8)
  467d78:	8f818764 	lw	at,-30876(gp)
  467d7c:	00000000 	nop
  467d80:	ac220000 	sw	v0,0(at)
	close(afds[1]);
  467d84:	8fc41034 	lw	a0,4148(s8)
  467d88:	8f9980c8 	lw	t9,-32568(gp)
  467d8c:	00000000 	nop
  467d90:	0320f809 	jalr	t9
  467d94:	00000000 	nop
  467d98:	8fdc0018 	lw	gp,24(s8)
  467d9c:	00000000 	nop
	break;
    }
}
  467da0:	03c0e821 	move	sp,s8
  467da4:	8fbf1078 	lw	ra,4216(sp)
  467da8:	8fbe1074 	lw	s8,4212(sp)
  467dac:	27bd1080 	addiu	sp,sp,4224
  467db0:	03e00008 	jr	ra
  467db4:	00000000 	nop

00467db8 <stop_adns>:
  467db8:	3c1c0fba 	lui	gp,0xfba
  467dbc:	279c4bb8 	addiu	gp,gp,19384
  467dc0:	0399e021 	addu	gp,gp,t9
  467dc4:	27bdffc0 	addiu	sp,sp,-64
  467dc8:	afbc0010 	sw	gp,16(sp)
  467dcc:	afbf0038 	sw	ra,56(sp)
  467dd0:	afbe0034 	sw	s8,52(sp)
  467dd4:	afbc0030 	sw	gp,48(sp)
  467dd8:	03a0f021 	move	s8,sp

void
stop_adns(void)
{
    close_any(adns_qfd);
  467ddc:	8f838a00 	lw	v1,-30208(gp)
  467de0:	00000000 	nop
  467de4:	8c630000 	lw	v1,0(v1)
  467de8:	2402ffff 	li	v0,-1
  467dec:	1062000d 	beq	v1,v0,467e24 <stop_adns+0x6c>
  467df0:	00000000 	nop
  467df4:	8f848a00 	lw	a0,-30208(gp)
  467df8:	00000000 	nop
  467dfc:	8c840000 	lw	a0,0(a0)
  467e00:	8f9980c8 	lw	t9,-32568(gp)
  467e04:	00000000 	nop
  467e08:	0320f809 	jalr	t9
  467e0c:	00000000 	nop
  467e10:	8fdc0010 	lw	gp,16(s8)
  467e14:	2402ffff 	li	v0,-1
  467e18:	8f818a00 	lw	at,-30208(gp)
  467e1c:	00000000 	nop
  467e20:	ac220000 	sw	v0,0(at)
    close_any(adns_afd);
  467e24:	8f838764 	lw	v1,-30876(gp)
  467e28:	00000000 	nop
  467e2c:	8c630000 	lw	v1,0(v1)
  467e30:	2402ffff 	li	v0,-1
  467e34:	1062000d 	beq	v1,v0,467e6c <stop_adns+0xb4>
  467e38:	00000000 	nop
  467e3c:	8f848764 	lw	a0,-30876(gp)
  467e40:	00000000 	nop
  467e44:	8c840000 	lw	a0,0(a0)
  467e48:	8f9980c8 	lw	t9,-32568(gp)
  467e4c:	00000000 	nop
  467e50:	0320f809 	jalr	t9
  467e54:	00000000 	nop
  467e58:	8fdc0010 	lw	gp,16(s8)
  467e5c:	2402ffff 	li	v0,-1
  467e60:	8f818764 	lw	at,-30876(gp)
  467e64:	00000000 	nop
  467e68:	ac220000 	sw	v0,0(at)
    if (adns_pid != 0)
  467e6c:	8f828018 	lw	v0,-32744(gp)
  467e70:	00000000 	nop
  467e74:	24423308 	addiu	v0,v0,13064
  467e78:	8c420000 	lw	v0,0(v0)
  467e7c:	00000000 	nop
  467e80:	1040007a 	beqz	v0,46806c <stop_adns+0x2b4>
  467e84:	00000000 	nop
    {
	int status;
	pid_t p = waitpid(adns_pid, &status, 0);
  467e88:	8f848018 	lw	a0,-32744(gp)
  467e8c:	00000000 	nop
  467e90:	24843308 	addiu	a0,a0,13064
  467e94:	8c840000 	lw	a0,0(a0)
  467e98:	27c50018 	addiu	a1,s8,24
  467e9c:	00003021 	move	a2,zero
  467ea0:	8f998c30 	lw	t9,-29648(gp)
  467ea4:	00000000 	nop
  467ea8:	0320f809 	jalr	t9
  467eac:	00000000 	nop
  467eb0:	8fdc0010 	lw	gp,16(s8)
  467eb4:	afc2001c 	sw	v0,28(s8)

	if (p == -1)
  467eb8:	8fc3001c 	lw	v1,28(s8)
  467ebc:	2402ffff 	li	v0,-1
  467ec0:	14620014 	bne	v1,v0,467f14 <stop_adns+0x15c>
  467ec4:	00000000 	nop
	{
	    log_errno((e, "waitpid for ADNS process failed"));
  467ec8:	8f998234 	lw	t9,-32204(gp)
  467ecc:	00000000 	nop
  467ed0:	0320f809 	jalr	t9
  467ed4:	00000000 	nop
  467ed8:	8fdc0010 	lw	gp,16(s8)
  467edc:	8c420000 	lw	v0,0(v0)
  467ee0:	00000000 	nop
  467ee4:	afc20020 	sw	v0,32(s8)
  467ee8:	8fc40020 	lw	a0,32(s8)
  467eec:	8f85802c 	lw	a1,-32724(gp)
  467ef0:	00000000 	nop
  467ef4:	24a538c0 	addiu	a1,a1,14528
  467ef8:	8f9988ec 	lw	t9,-30484(gp)
  467efc:	00000000 	nop
  467f00:	0320f809 	jalr	t9
  467f04:	00000000 	nop
  467f08:	8fdc0010 	lw	gp,16(s8)
  467f0c:	10000057 	b	46806c <stop_adns+0x2b4>
  467f10:	00000000 	nop
	}
	else if (WIFEXITED(status))
  467f14:	8fc20018 	lw	v0,24(s8)
  467f18:	00000000 	nop
  467f1c:	afc20024 	sw	v0,36(s8)
  467f20:	8fc20024 	lw	v0,36(s8)
  467f24:	00000000 	nop
  467f28:	3042007f 	andi	v0,v0,0x7f
  467f2c:	1440001c 	bnez	v0,467fa0 <stop_adns+0x1e8>
  467f30:	00000000 	nop
	{
	    if (WEXITSTATUS(status) != 0)
  467f34:	8fc20018 	lw	v0,24(s8)
  467f38:	00000000 	nop
  467f3c:	afc20024 	sw	v0,36(s8)
  467f40:	8fc20024 	lw	v0,36(s8)
  467f44:	00000000 	nop
  467f48:	3042ff00 	andi	v0,v0,0xff00
  467f4c:	00021203 	sra	v0,v0,0x8
  467f50:	10400046 	beqz	v0,46806c <stop_adns+0x2b4>
  467f54:	00000000 	nop
		plog("ADNS process exited with status %d"
		    , (int) WEXITSTATUS(status));
  467f58:	8fc20018 	lw	v0,24(s8)
  467f5c:	00000000 	nop
  467f60:	afc20024 	sw	v0,36(s8)
  467f64:	8fc20024 	lw	v0,36(s8)
  467f68:	00000000 	nop
  467f6c:	3042ff00 	andi	v0,v0,0xff00
  467f70:	00021203 	sra	v0,v0,0x8
  467f74:	8f84802c 	lw	a0,-32724(gp)
  467f78:	00000000 	nop
  467f7c:	248438e0 	addiu	a0,a0,14560
  467f80:	00402821 	move	a1,v0
  467f84:	8f998abc 	lw	t9,-30020(gp)
  467f88:	00000000 	nop
  467f8c:	0320f809 	jalr	t9
  467f90:	00000000 	nop
  467f94:	8fdc0010 	lw	gp,16(s8)
  467f98:	10000034 	b	46806c <stop_adns+0x2b4>
  467f9c:	00000000 	nop
	}
	else if (WIFSIGNALED(status))
  467fa0:	8fc20018 	lw	v0,24(s8)
  467fa4:	00000000 	nop
  467fa8:	afc20024 	sw	v0,36(s8)
  467fac:	8fc20024 	lw	v0,36(s8)
  467fb0:	00000000 	nop
  467fb4:	afc20020 	sw	v0,32(s8)
  467fb8:	afc00028 	sw	zero,40(s8)
  467fbc:	8fc20020 	lw	v0,32(s8)
  467fc0:	00000000 	nop
  467fc4:	304300ff 	andi	v1,v0,0xff
  467fc8:	2402007f 	li	v0,127
  467fcc:	10620008 	beq	v1,v0,467ff0 <stop_adns+0x238>
  467fd0:	00000000 	nop
  467fd4:	8fc20020 	lw	v0,32(s8)
  467fd8:	00000000 	nop
  467fdc:	3042007f 	andi	v0,v0,0x7f
  467fe0:	10400003 	beqz	v0,467ff0 <stop_adns+0x238>
  467fe4:	00000000 	nop
  467fe8:	24020001 	li	v0,1
  467fec:	afc20028 	sw	v0,40(s8)
  467ff0:	8fc20028 	lw	v0,40(s8)
  467ff4:	00000000 	nop
  467ff8:	10400012 	beqz	v0,468044 <stop_adns+0x28c>
  467ffc:	00000000 	nop
	{
	    plog("ADNS process terminated by signal %d", (int)WTERMSIG(status));
  468000:	8fc20018 	lw	v0,24(s8)
  468004:	00000000 	nop
  468008:	afc20024 	sw	v0,36(s8)
  46800c:	8fc20024 	lw	v0,36(s8)
  468010:	00000000 	nop
  468014:	3042007f 	andi	v0,v0,0x7f
  468018:	8f84802c 	lw	a0,-32724(gp)
  46801c:	00000000 	nop
  468020:	24843904 	addiu	a0,a0,14596
  468024:	00402821 	move	a1,v0
  468028:	8f998abc 	lw	t9,-30020(gp)
  46802c:	00000000 	nop
  468030:	0320f809 	jalr	t9
  468034:	00000000 	nop
  468038:	8fdc0010 	lw	gp,16(s8)
  46803c:	1000000b 	b	46806c <stop_adns+0x2b4>
  468040:	00000000 	nop
	}
	else
	{
	    plog("wait for end of ADNS process returned odd status 0x%x\n"
  468044:	8f84802c 	lw	a0,-32724(gp)
  468048:	00000000 	nop
  46804c:	2484392c 	addiu	a0,a0,14636
  468050:	8fc50018 	lw	a1,24(s8)
  468054:	8f998abc 	lw	t9,-30020(gp)
  468058:	00000000 	nop
  46805c:	0320f809 	jalr	t9
  468060:	00000000 	nop
  468064:	8fdc0010 	lw	gp,16(s8)
  468068:	00000000 	nop
		, status);
	}
    }
}
  46806c:	03c0e821 	move	sp,s8
  468070:	8fbf0038 	lw	ra,56(sp)
  468074:	8fbe0034 	lw	s8,52(sp)
  468078:	27bd0040 	addiu	sp,sp,64
  46807c:	03e00008 	jr	ra
  468080:	00000000 	nop

00468084 <rr_typename>:
  468084:	3c1c0fba 	lui	gp,0xfba
  468088:	279c48ec 	addiu	gp,gp,18668
  46808c:	0399e021 	addu	gp,gp,t9
  468090:	27bdffe8 	addiu	sp,sp,-24
  468094:	afbc0000 	sw	gp,0(sp)
  468098:	afbe0014 	sw	s8,20(sp)
  46809c:	afbc0010 	sw	gp,16(sp)
  4680a0:	03a0f021 	move	s8,sp
  4680a4:	afc40018 	sw	a0,24(s8)



/* tricky macro to pass any hot potato */
#define TRY(x)	{ err_t ugh = x; if (ugh != NULL) return ugh; }


/* structure of Query Reply (RFC 1035 4.1.1):
 *
 *  +---------------------+
 *  |        Header       |
 *  +---------------------+
 *  |       Question      | the question for the name server
 *  +---------------------+
 *  |        Answer       | RRs answering the question
 *  +---------------------+
 *  |      Authority      | RRs pointing toward an authority
 *  +---------------------+
 *  |      Additional     | RRs holding additional information
 *  +---------------------+
 */

/* Header section format (as modified by RFC 2535 6.1):
 *                                  1  1  1  1  1  1
 *    0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 *  |                      ID                       |
 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 *  |QR|   Opcode  |AA|TC|RD|RA| Z|AD|CD|   RCODE   |
 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 *  |                    QDCOUNT                    |
 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 *  |                    ANCOUNT                    |
 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 *  |                    NSCOUNT                    |
 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 *  |                    ARCOUNT                    |
 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 */
struct qr_header {
    u_int16_t	id;	/* 16-bit identifier to match query */

    u_int16_t	stuff;	/* packed crud: */

#define QRS_QR	0x8000	/* QR: on if this is a response */

#define QRS_OPCODE_SHIFT	11  /* OPCODE field */
#define QRS_OPCODE_MASK	0xF
#define QRSO_QUERY	0   /* standard query */
#define QRSO_IQUERY	1   /* inverse query */
#define QRSO_STATUS	2   /* server status request query */

#define QRS_AA 0x0400	/* AA: on if Authoritative Answer */
#define QRS_TC 0x0200	/* TC: on if truncation happened */
#define QRS_RD 0x0100	/* RD: on if recursion desired */
#define QRS_RA 0x0080	/* RA: on if recursion available */
#define QRS_Z  0x0040	/* Z: reserved; must be zero */
#define QRS_AD 0x0020	/* AD: on if authentic data (RFC 2535) */
#define QRS_CD 0x0010	/* AD: on if checking disabled (RFC 2535) */

#define QRS_RCODE_SHIFT	0 /* RCODE field: response code */
#define QRS_RCODE_MASK	0xF
#define QRSR_OK	    0


    u_int16_t qdcount;	    /* number of entries in question section */
    u_int16_t ancount;	    /* number of resource records in answer section */
    u_int16_t nscount;	    /* number of name server resource records in authority section */
    u_int16_t arcount;	    /* number of resource records in additional records section */
};

static field_desc qr_header_fields[] = {
    { ft_nat, 16/BITS_PER_BYTE, "ID", NULL },
    { ft_nat, 16/BITS_PER_BYTE, "stuff", NULL },
    { ft_nat, 16/BITS_PER_BYTE, "QD Count", NULL },
    { ft_nat, 16/BITS_PER_BYTE, "Answer Count", NULL },
    { ft_nat, 16/BITS_PER_BYTE, "Authority Count", NULL },
    { ft_nat, 16/BITS_PER_BYTE, "Additional Count", NULL },
    { ft_end, 0, NULL, NULL }
};

static struct_desc qr_header_desc = {
    "Query Response Header",
    qr_header_fields,
    sizeof(struct qr_header)
};

/* Messages for codes in RCODE (see RFC 1035 4.1.1) */
static const err_t rcode_text[QRS_RCODE_MASK + 1] = {
    NULL,   /* not an error */
    "Format error - The name server was unable to interpret the query",
    "Server failure - The name server was unable to process this query"
	" due to a problem with the name server",
    "Name Error - Meaningful only for responses from an authoritative name"
	" server, this code signifies that the domain name referenced in"
	" the query does not exist",
    "Not Implemented - The name server does not support the requested"
	" kind of query",
    "Refused - The name server refuses to perform the specified operation"
	" for policy reasons",
    /* the rest are reserved for future use */
    };

static const char *
rr_typename(int type)
{
    switch (type)
  4680a8:	8fc20018 	lw	v0,24(s8)
  4680ac:	00000000 	nop
  4680b0:	afc20008 	sw	v0,8(s8)
  4680b4:	24020010 	li	v0,16
  4680b8:	8fc30008 	lw	v1,8(s8)
  4680bc:	00000000 	nop
  4680c0:	10620008 	beq	v1,v0,4680e4 <rr_typename+0x60>
  4680c4:	00000000 	nop
  4680c8:	24020019 	li	v0,25
  4680cc:	8fc30008 	lw	v1,8(s8)
  4680d0:	00000000 	nop
  4680d4:	10620008 	beq	v1,v0,4680f8 <rr_typename+0x74>
  4680d8:	00000000 	nop
  4680dc:	1000000b 	b	46810c <rr_typename+0x88>
  4680e0:	00000000 	nop
    {
    case T_TXT:
	return "TXT";
  4680e4:	8f82802c 	lw	v0,-32724(gp)
  4680e8:	00000000 	nop
  4680ec:	24423bbc 	addiu	v0,v0,15292
  4680f0:	1000000a 	b	46811c <rr_typename+0x98>
  4680f4:	00000000 	nop
    case T_KEY:
	return "KEY";
  4680f8:	8f82802c 	lw	v0,-32724(gp)
  4680fc:	00000000 	nop
  468100:	24423bc0 	addiu	v0,v0,15296
  468104:	10000005 	b	46811c <rr_typename+0x98>
  468108:	00000000 	nop
    default:
	return "???";
  46810c:	8f82802c 	lw	v0,-32724(gp)
  468110:	00000000 	nop
  468114:	24423bc4 	addiu	v0,v0,15300
  468118:	00000000 	nop
    }
}
  46811c:	03c0e821 	move	sp,s8
  468120:	8fbe0014 	lw	s8,20(sp)
  468124:	27bd0018 	addiu	sp,sp,24
  468128:	03e00008 	jr	ra
  46812c:	00000000 	nop

00468130 <eat_name>:
  468130:	3c1c0fba 	lui	gp,0xfba
  468134:	279c4840 	addiu	gp,gp,18496
  468138:	0399e021 	addu	gp,gp,t9
  46813c:	27bdfbb8 	addiu	sp,sp,-1096
  468140:	afbc0010 	sw	gp,16(sp)
  468144:	afbf0440 	sw	ra,1088(sp)
  468148:	afbe043c 	sw	s8,1084(sp)
  46814c:	afbc0438 	sw	gp,1080(sp)
  468150:	03a0f021 	move	s8,sp
  468154:	afc40448 	sw	a0,1096(s8)

/* throw away a possibly compressed domain name */

static err_t
eat_name(pb_stream *pbs)
{
    u_char name_buf[NS_MAXDNAME + 2];
    u_char *ip = pbs->cur;
  468158:	8fc20448 	lw	v0,1096(s8)
  46815c:	00000000 	nop
  468160:	8c420010 	lw	v0,16(v0)
  468164:	00000000 	nop
  468168:	afc20420 	sw	v0,1056(s8)
    unsigned oi = 0;
  46816c:	afc00424 	sw	zero,1060(s8)
    unsigned jump_count = 0;
  468170:	afc00428 	sw	zero,1064(s8)

    for (;;)
    {
	u_int8_t b;

	if (ip >= pbs->roof)
  468174:	8fc20448 	lw	v0,1096(s8)
  468178:	00000000 	nop
  46817c:	8c430014 	lw	v1,20(v0)
  468180:	8fc20420 	lw	v0,1056(s8)
  468184:	00000000 	nop
  468188:	0043102b 	sltu	v0,v0,v1
  46818c:	14400006 	bnez	v0,4681a8 <eat_name+0x78>
  468190:	00000000 	nop
	    return "ran out of message while skipping domain name";
  468194:	8f82802c 	lw	v0,-32724(gp)
  468198:	00000000 	nop
  46819c:	24423bc8 	addiu	v0,v0,15304
  4681a0:	100000e8 	b	468544 <eat_name+0x414>
  4681a4:	00000000 	nop

	b = *ip++;
  4681a8:	27c40420 	addiu	a0,s8,1056
  4681ac:	8c820000 	lw	v0,0(a0)
  4681b0:	00000000 	nop
  4681b4:	00401821 	move	v1,v0
  4681b8:	90630000 	lbu	v1,0(v1)
  4681bc:	00000000 	nop
  4681c0:	a3c3042c 	sb	v1,1068(s8)
  4681c4:	24420001 	addiu	v0,v0,1
  4681c8:	ac820000 	sw	v0,0(a0)
	if (jump_count == 0)
  4681cc:	8fc20428 	lw	v0,1064(s8)
  4681d0:	00000000 	nop
  4681d4:	14400005 	bnez	v0,4681ec <eat_name+0xbc>
  4681d8:	00000000 	nop
	    pbs->cur = ip;
  4681dc:	8fc30420 	lw	v1,1056(s8)
  4681e0:	8fc20448 	lw	v0,1096(s8)
  4681e4:	00000000 	nop
  4681e8:	ac430010 	sw	v1,16(v0)

	if (b == 0)
  4681ec:	93c2042c 	lbu	v0,1068(s8)
  4681f0:	00000000 	nop
  4681f4:	14400003 	bnez	v0,468204 <eat_name+0xd4>
  4681f8:	00000000 	nop
	    break;
  4681fc:	100000b5 	b	4684d4 <eat_name+0x3a4>
  468200:	00000000 	nop

	switch (b & 0xC0)
  468204:	93c2042c 	lbu	v0,1068(s8)
  468208:	00000000 	nop
  46820c:	304200c0 	andi	v0,v0,0xc0
  468210:	304200ff 	andi	v0,v0,0xff
  468214:	afc20434 	sw	v0,1076(s8)
  468218:	8fc20434 	lw	v0,1076(s8)
  46821c:	00000000 	nop
  468220:	1040000b 	beqz	v0,468250 <eat_name+0x120>
  468224:	00000000 	nop
  468228:	240200c0 	li	v0,192
  46822c:	8fc30434 	lw	v1,1076(s8)
  468230:	00000000 	nop
  468234:	10620053 	beq	v1,v0,468384 <eat_name+0x254>
  468238:	00000000 	nop
	{
	    case 0x00:
		/* we grab the next b characters */
		if (oi + b > NS_MAXDNAME)
		    return "domain name too long";

		if (pbs->roof - ip <= b)
		    return "domain name falls off end of message";

		if (oi != 0)
		    name_buf[oi++] = '.';

		memcpy(name_buf + oi, ip, b);
		oi += b;
		ip += b;
		if (jump_count == 0)
		    pbs->cur = ip;
		break;

	    case 0xC0:
		{
		    unsigned ix;

		    if (ip >= pbs->roof)
			return "ran out of message in middle of compressed domain name";

		    ix = ((b & ~0xC0u) << 8) | *ip++;
		    if (jump_count == 0)
			pbs->cur = ip;

		    if (ix >= pbs_room(pbs))
			return "impossible compressed domain name";

		    /* Avoid infinite loop.
		     * There can be no more jumps than there are bytes
		     * in the packet.  Not a tight limit, but good enough.
		     */
		    jump_count++;
		    if (jump_count > pbs_room(pbs))
			return "loop in compressed domain name";

		    ip = pbs->start + ix;
		}
		break;

	    default:
		return "invalid code in label";
  46823c:	8f82802c 	lw	v0,-32724(gp)
  468240:	00000000 	nop
  468244:	24423bf8 	addiu	v0,v0,15352
  468248:	100000be 	b	468544 <eat_name+0x414>
  46824c:	00000000 	nop
  468250:	93c3042c 	lbu	v1,1068(s8)
  468254:	8fc20424 	lw	v0,1060(s8)
  468258:	00000000 	nop
  46825c:	00621021 	addu	v0,v1,v0
  468260:	2c420402 	sltiu	v0,v0,1026
  468264:	14400006 	bnez	v0,468280 <eat_name+0x150>
  468268:	00000000 	nop
  46826c:	8f82802c 	lw	v0,-32724(gp)
  468270:	00000000 	nop
  468274:	24423c10 	addiu	v0,v0,15376
  468278:	100000b2 	b	468544 <eat_name+0x414>
  46827c:	00000000 	nop
  468280:	8fc20448 	lw	v0,1096(s8)
  468284:	00000000 	nop
  468288:	8c430014 	lw	v1,20(v0)
  46828c:	8fc20420 	lw	v0,1056(s8)
  468290:	00000000 	nop
  468294:	00621823 	subu	v1,v1,v0
  468298:	93c2042c 	lbu	v0,1068(s8)
  46829c:	00000000 	nop
  4682a0:	0043102a 	slt	v0,v0,v1
  4682a4:	14400006 	bnez	v0,4682c0 <eat_name+0x190>
  4682a8:	00000000 	nop
  4682ac:	8f82802c 	lw	v0,-32724(gp)
  4682b0:	00000000 	nop
  4682b4:	24423c28 	addiu	v0,v0,15400
  4682b8:	100000a2 	b	468544 <eat_name+0x414>
  4682bc:	00000000 	nop
  4682c0:	8fc20424 	lw	v0,1060(s8)
  4682c4:	00000000 	nop
  4682c8:	1040000c 	beqz	v0,4682fc <eat_name+0x1cc>
  4682cc:	00000000 	nop
  4682d0:	27c50424 	addiu	a1,s8,1060
  4682d4:	8ca30000 	lw	v1,0(a1)
  4682d8:	00000000 	nop
  4682dc:	00601021 	move	v0,v1
  4682e0:	00402021 	move	a0,v0
  4682e4:	27c20018 	addiu	v0,s8,24
  4682e8:	00442021 	addu	a0,v0,a0
  4682ec:	2402002e 	li	v0,46
  4682f0:	a0820000 	sb	v0,0(a0)
  4682f4:	24630001 	addiu	v1,v1,1
  4682f8:	aca30000 	sw	v1,0(a1)
  4682fc:	27c30018 	addiu	v1,s8,24
  468300:	8fc20424 	lw	v0,1060(s8)
  468304:	00000000 	nop
  468308:	00621021 	addu	v0,v1,v0
  46830c:	93c3042c 	lbu	v1,1068(s8)
  468310:	00402021 	move	a0,v0
  468314:	8fc50420 	lw	a1,1056(s8)
  468318:	00603021 	move	a2,v1
  46831c:	8f998a30 	lw	t9,-30160(gp)
  468320:	00000000 	nop
  468324:	0320f809 	jalr	t9
  468328:	00000000 	nop
  46832c:	8fdc0010 	lw	gp,16(s8)
  468330:	00000000 	nop
  468334:	93c3042c 	lbu	v1,1068(s8)
  468338:	8fc20424 	lw	v0,1060(s8)
  46833c:	00000000 	nop
  468340:	00431021 	addu	v0,v0,v1
  468344:	afc20424 	sw	v0,1060(s8)
  468348:	93c3042c 	lbu	v1,1068(s8)
  46834c:	8fc20420 	lw	v0,1056(s8)
  468350:	00000000 	nop
  468354:	00431021 	addu	v0,v0,v1
  468358:	afc20420 	sw	v0,1056(s8)
  46835c:	8fc20428 	lw	v0,1064(s8)
  468360:	00000000 	nop
  468364:	1440ff83 	bnez	v0,468174 <eat_name+0x44>
  468368:	00000000 	nop
  46836c:	8fc30420 	lw	v1,1056(s8)
  468370:	8fc20448 	lw	v0,1096(s8)
  468374:	00000000 	nop
  468378:	ac430010 	sw	v1,16(v0)
  46837c:	1000ff7d 	b	468174 <eat_name+0x44>
  468380:	00000000 	nop
  468384:	8fc20448 	lw	v0,1096(s8)
  468388:	00000000 	nop
  46838c:	8c430014 	lw	v1,20(v0)
  468390:	8fc20420 	lw	v0,1056(s8)
  468394:	00000000 	nop
  468398:	0043102b 	sltu	v0,v0,v1
  46839c:	14400006 	bnez	v0,4683b8 <eat_name+0x288>
  4683a0:	00000000 	nop
  4683a4:	8f82802c 	lw	v0,-32724(gp)
  4683a8:	00000000 	nop
  4683ac:	24423c50 	addiu	v0,v0,15440
  4683b0:	10000064 	b	468544 <eat_name+0x414>
  4683b4:	00000000 	nop
  4683b8:	93c3042c 	lbu	v1,1068(s8)
  4683bc:	2402ff3f 	li	v0,-193
  4683c0:	00621024 	and	v0,v1,v0
  4683c4:	00022a00 	sll	a1,v0,0x8
  4683c8:	27c40420 	addiu	a0,s8,1056
  4683cc:	8c830000 	lw	v1,0(a0)
  4683d0:	00000000 	nop
  4683d4:	00601021 	move	v0,v1
  4683d8:	90420000 	lbu	v0,0(v0)
  4683dc:	00000000 	nop
  4683e0:	00a21025 	or	v0,a1,v0
  4683e4:	afc20430 	sw	v0,1072(s8)
  4683e8:	24630001 	addiu	v1,v1,1
  4683ec:	ac830000 	sw	v1,0(a0)
  4683f0:	8fc20428 	lw	v0,1064(s8)
  4683f4:	00000000 	nop
  4683f8:	14400005 	bnez	v0,468410 <eat_name+0x2e0>
  4683fc:	00000000 	nop
  468400:	8fc30420 	lw	v1,1056(s8)
  468404:	8fc20448 	lw	v0,1096(s8)
  468408:	00000000 	nop
  46840c:	ac430010 	sw	v1,16(v0)
  468410:	8fc20448 	lw	v0,1096(s8)
  468414:	00000000 	nop
  468418:	8c430014 	lw	v1,20(v0)
  46841c:	8fc20448 	lw	v0,1096(s8)
  468420:	00000000 	nop
  468424:	8c42000c 	lw	v0,12(v0)
  468428:	00000000 	nop
  46842c:	00621823 	subu	v1,v1,v0
  468430:	8fc20430 	lw	v0,1072(s8)
  468434:	00000000 	nop
  468438:	0043102b 	sltu	v0,v0,v1
  46843c:	14400006 	bnez	v0,468458 <eat_name+0x328>
  468440:	00000000 	nop
  468444:	8f82802c 	lw	v0,-32724(gp)
  468448:	00000000 	nop
  46844c:	24423c88 	addiu	v0,v0,15496
  468450:	1000003c 	b	468544 <eat_name+0x414>
  468454:	00000000 	nop
  468458:	8fc20428 	lw	v0,1064(s8)
  46845c:	00000000 	nop
  468460:	24420001 	addiu	v0,v0,1
  468464:	afc20428 	sw	v0,1064(s8)
  468468:	8fc20448 	lw	v0,1096(s8)
  46846c:	00000000 	nop
  468470:	8c430014 	lw	v1,20(v0)
  468474:	8fc20448 	lw	v0,1096(s8)
  468478:	00000000 	nop
  46847c:	8c42000c 	lw	v0,12(v0)
  468480:	00000000 	nop
  468484:	00621823 	subu	v1,v1,v0
  468488:	8fc20428 	lw	v0,1064(s8)
  46848c:	00000000 	nop
  468490:	0062102b 	sltu	v0,v1,v0
  468494:	10400006 	beqz	v0,4684b0 <eat_name+0x380>
  468498:	00000000 	nop
  46849c:	8f82802c 	lw	v0,-32724(gp)
  4684a0:	00000000 	nop
  4684a4:	24423cac 	addiu	v0,v0,15532
  4684a8:	10000026 	b	468544 <eat_name+0x414>
  4684ac:	00000000 	nop
  4684b0:	8fc20448 	lw	v0,1096(s8)
  4684b4:	00000000 	nop
  4684b8:	8c43000c 	lw	v1,12(v0)
  4684bc:	8fc20430 	lw	v0,1072(s8)
  4684c0:	00000000 	nop
  4684c4:	00621021 	addu	v0,v1,v0
  4684c8:	afc20420 	sw	v0,1056(s8)
  4684cc:	1000ff29 	b	468174 <eat_name+0x44>
  4684d0:	00000000 	nop
	}
    }

    name_buf[oi++] = '\0';
  4684d4:	27c50424 	addiu	a1,s8,1060
  4684d8:	8ca30000 	lw	v1,0(a1)
  4684dc:	00000000 	nop
  4684e0:	00601021 	move	v0,v1
  4684e4:	00402021 	move	a0,v0
  4684e8:	27c20018 	addiu	v0,s8,24
  4684ec:	00441021 	addu	v0,v0,a0
  4684f0:	a0400000 	sb	zero,0(v0)
  4684f4:	24630001 	addiu	v1,v1,1
  4684f8:	aca30000 	sw	v1,0(a1)

    DBG(DBG_DNS, DBG_log("skipping name %s", name_buf));
  4684fc:	8f8284f8 	lw	v0,-31496(gp)
  468500:	00000000 	nop
  468504:	8c420000 	lw	v0,0(v0)
  468508:	00000000 	nop
  46850c:	30420100 	andi	v0,v0,0x100
  468510:	1040000b 	beqz	v0,468540 <eat_name+0x410>
  468514:	00000000 	nop
  468518:	8f84802c 	lw	a0,-32724(gp)
  46851c:	00000000 	nop
  468520:	24843ccc 	addiu	a0,a0,15564
  468524:	27c50018 	addiu	a1,s8,24
  468528:	8f9983b8 	lw	t9,-31816(gp)
  46852c:	00000000 	nop
  468530:	0320f809 	jalr	t9
  468534:	00000000 	nop
  468538:	8fdc0010 	lw	gp,16(s8)
  46853c:	00000000 	nop

    return NULL;
  468540:	00001021 	move	v0,zero
}
  468544:	03c0e821 	move	sp,s8
  468548:	8fbf0440 	lw	ra,1088(sp)
  46854c:	8fbe043c 	lw	s8,1084(sp)
  468550:	27bd0448 	addiu	sp,sp,1096
  468554:	03e00008 	jr	ra
  468558:	00000000 	nop

0046855c <eat_name_helpfully>:
  46855c:	3c1c0fba 	lui	gp,0xfba
  468560:	279c4414 	addiu	gp,gp,17428
  468564:	0399e021 	addu	gp,gp,t9
  468568:	27bdffd0 	addiu	sp,sp,-48
  46856c:	afbc0010 	sw	gp,16(sp)
  468570:	afbf0028 	sw	ra,40(sp)
  468574:	afbe0024 	sw	s8,36(sp)
  468578:	afbc0020 	sw	gp,32(sp)
  46857c:	03a0f021 	move	s8,sp
  468580:	afc40030 	sw	a0,48(s8)
  468584:	afc50034 	sw	a1,52(s8)

static err_t
eat_name_helpfully(pb_stream *pbs, const char *context)
{
    err_t ugh = eat_name(pbs);
  468588:	8fc40030 	lw	a0,48(s8)
  46858c:	8f998040 	lw	t9,-32704(gp)
  468590:	00000000 	nop
  468594:	27398130 	addiu	t9,t9,-32464
  468598:	00000000 	nop
  46859c:	0320f809 	jalr	t9
  4685a0:	00000000 	nop
  4685a4:	8fdc0010 	lw	gp,16(s8)
  4685a8:	afc20018 	sw	v0,24(s8)

    return ugh == NULL? ugh
  4685ac:	8fc20018 	lw	v0,24(s8)
  4685b0:	00000000 	nop
  4685b4:	afc2001c 	sw	v0,28(s8)
  4685b8:	8fc20018 	lw	v0,24(s8)
  4685bc:	00000000 	nop
  4685c0:	1040000c 	beqz	v0,4685f4 <eat_name_helpfully+0x98>
  4685c4:	00000000 	nop
  4685c8:	8f84802c 	lw	a0,-32724(gp)
  4685cc:	00000000 	nop
  4685d0:	24843ce0 	addiu	a0,a0,15584
  4685d4:	8fc50034 	lw	a1,52(s8)
  4685d8:	8fc60018 	lw	a2,24(s8)
  4685dc:	8f9986dc 	lw	t9,-31012(gp)
  4685e0:	00000000 	nop
  4685e4:	0320f809 	jalr	t9
  4685e8:	00000000 	nop
  4685ec:	8fdc0010 	lw	gp,16(s8)
  4685f0:	afc2001c 	sw	v0,28(s8)
  4685f4:	8fc2001c 	lw	v0,28(s8)
  4685f8:	00000000 	nop
	: builddiag("malformed name within DNS record of %s: %s", context, ugh);
}
  4685fc:	03c0e821 	move	sp,s8
  468600:	8fbf0028 	lw	ra,40(sp)
  468604:	8fbe0024 	lw	s8,36(sp)
  468608:	27bd0030 	addiu	sp,sp,48
  46860c:	03e00008 	jr	ra
  468610:	00000000 	nop

00468614 <build_dns_name>:
  468614:	3c1c0fba 	lui	gp,0xfba
  468618:	279c435c 	addiu	gp,gp,17244
  46861c:	0399e021 	addu	gp,gp,t9
  468620:	27bdffb0 	addiu	sp,sp,-80
  468624:	afbc0020 	sw	gp,32(sp)
  468628:	afbf0048 	sw	ra,72(sp)
  46862c:	afbe0044 	sw	s8,68(sp)
  468630:	afbc0040 	sw	gp,64(sp)
  468634:	03a0f021 	move	s8,sp
  468638:	afc40050 	sw	a0,80(s8)
  46863c:	afc50054 	sw	a1,84(s8)
  468640:	afc60058 	sw	a2,88(s8)

/* non-variable part of 4.1.2 Question Section entry:
 *                                 1  1  1  1  1  1
 *   0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                                               |
 * /                     QNAME                     /
 * /                                               /
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                     QTYPE                     |
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                     QCLASS                    |
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 */

struct qs_fixed {
    u_int16_t qtype;
    u_int16_t qclass;
};

static field_desc qs_fixed_fields[] = {
    { ft_loose_enum, 16/BITS_PER_BYTE, "QTYPE", &rr_qtype_names },
    { ft_loose_enum, 16/BITS_PER_BYTE, "QCLASS", &rr_class_names },
    { ft_end, 0, NULL, NULL }
};

static struct_desc qs_fixed_desc = {
    "Question Section entry fixed part",
    qs_fixed_fields,
    sizeof(struct qs_fixed)
};

/* 4.1.3. Resource record format:
 *                                 1  1  1  1  1  1
 *   0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                                               |
 * /                                               /
 * /                      NAME                     /
 * |                                               |
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                      TYPE                     |
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                     CLASS                     |
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                      TTL                      |
 * |                                               |
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 * |                   RDLENGTH                    |
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
 * /                     RDATA                     /
 * /                                               /
 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 */

struct rr_fixed {
    u_int16_t type;
    u_int16_t class;
    u_int32_t ttl;	/* actually signed */
    u_int16_t rdlength;
};


static field_desc rr_fixed_fields[] = {
    { ft_loose_enum, 16/BITS_PER_BYTE, "type", &rr_type_names },
    { ft_loose_enum, 16/BITS_PER_BYTE, "class", &rr_class_names },
    { ft_nat, 32/BITS_PER_BYTE, "TTL", NULL },
    { ft_nat, 16/BITS_PER_BYTE, "RD length", NULL },
    { ft_end, 0, NULL, NULL }
};

static struct_desc rr_fixed_desc = {
    "Resource Record fixed part",
    rr_fixed_fields,
    /* note: following is tricky: avoids padding problems */
    offsetof(struct rr_fixed, rdlength) + sizeof(u_int16_t)
};

/* RFC 1035 3.3.14: TXT RRs have text in the RDATA field.
 * It is in the form of a sequence of <character-string>s as described in 3.3.
 * unpack_txt_rdata() deals with this peculiar representation.
 */

/* RFC 2535 3.1 KEY RDATA format:
 *
 *                      1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |             flags             |    protocol   |   algorithm   |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |                                                               /
 * /                          public key                           /
 * /                                                               /
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
 */

struct key_rdata {
    u_int16_t flags;
    u_int8_t protocol;
    u_int8_t algorithm;
};

static field_desc key_rdata_fields[] = {
    { ft_nat, 16/BITS_PER_BYTE, "flags", NULL },
    { ft_nat, 8/BITS_PER_BYTE, "protocol", NULL },
    { ft_nat, 8/BITS_PER_BYTE, "algorithm", NULL },
    { ft_end, 0, NULL, NULL }
};

static struct_desc key_rdata_desc = {
    "KEY RR RData fixed part",
    key_rdata_fields,
    sizeof(struct key_rdata)
};

/* RFC 2535 4.1 SIG RDATA format:
 *
 *                      1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |        type covered           |  algorithm    |     labels    |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |                         original TTL                          |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |                      signature expiration                     |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |                      signature inception                      |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * |            key  tag           |                               |
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         signer's name         +
 * |                                                               /
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/
 * /                                                               /
 * /                            signature                          /
 * /                                                               /
 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 */

struct sig_rdata {
    u_int16_t type_covered;
    u_int8_t algorithm;
    u_int8_t labels;
    u_int32_t original_ttl;
    u_int32_t sig_expiration;
    u_int32_t sig_inception;
    u_int16_t key_tag;
};

static field_desc sig_rdata_fields[] = {
    { ft_nat, 16/BITS_PER_BYTE, "type_covered", NULL},
    { ft_nat, 8/BITS_PER_BYTE, "algorithm", NULL},
    { ft_nat, 8/BITS_PER_BYTE, "labels", NULL},
    { ft_nat, 32/BITS_PER_BYTE, "original ttl", NULL},
    { ft_nat, 32/BITS_PER_BYTE, "sig expiration", NULL},
    { ft_nat, 32/BITS_PER_BYTE, "sig inception", NULL},
    { ft_nat, 16/BITS_PER_BYTE, "key tag", NULL},
    { ft_end, 0, NULL, NULL }
};

static struct_desc sig_rdata_desc = {
    "SIG RR RData fixed part",
    sig_rdata_fields,
    sizeof(struct sig_rdata)
};

/****************************************************************/

static err_t
build_dns_name(u_char name_buf[NS_MAXDNAME + 2]
, const struct id *id
, const char *typename USED_BY_DEBUG)
{
    /* note: all end in "." to suppress relative searches */
    switch (id->kind)
  468644:	8fc20054 	lw	v0,84(s8)
  468648:	00000000 	nop
  46864c:	8c420000 	lw	v0,0(v0)
  468650:	00000000 	nop
  468654:	afc20038 	sw	v0,56(s8)
  468658:	24020002 	li	v0,2
  46865c:	8fc30038 	lw	v1,56(s8)
  468660:	00000000 	nop
  468664:	106200a4 	beq	v1,v0,4688f8 <build_dns_name+0x2e4>
  468668:	00000000 	nop
  46866c:	8fc30038 	lw	v1,56(s8)
  468670:	00000000 	nop
  468674:	28620003 	slti	v0,v1,3
  468678:	10400008 	beqz	v0,46869c <build_dns_name+0x88>
  46867c:	00000000 	nop
  468680:	24020001 	li	v0,1
  468684:	8fc30038 	lw	v1,56(s8)
  468688:	00000000 	nop
  46868c:	1062000a 	beq	v1,v0,4686b8 <build_dns_name+0xa4>
  468690:	00000000 	nop
  468694:	100000c3 	b	4689a4 <build_dns_name+0x390>
  468698:	00000000 	nop
  46869c:	24020005 	li	v0,5
  4686a0:	8fc30038 	lw	v1,56(s8)
  4686a4:	00000000 	nop
  4686a8:	10620042 	beq	v1,v0,4687b4 <build_dns_name+0x1a0>
  4686ac:	00000000 	nop
  4686b0:	100000bc 	b	4689a4 <build_dns_name+0x390>
  4686b4:	00000000 	nop
    {
    case ID_IPV4_ADDR:
    {
	/* XXX: this is really ugly and only temporary until addrtot can
	 *      generate the correct format
	 */
	const unsigned char *b;
	size_t bl USED_BY_DEBUG = addrbytesptr(&id->ip_addr, &b);
  4686b8:	8fc20054 	lw	v0,84(s8)
  4686bc:	00000000 	nop
  4686c0:	24420004 	addiu	v0,v0,4
  4686c4:	00402021 	move	a0,v0
  4686c8:	27c50028 	addiu	a1,s8,40
  4686cc:	8f998768 	lw	t9,-30872(gp)
  4686d0:	00000000 	nop
  4686d4:	0320f809 	jalr	t9
  4686d8:	00000000 	nop
  4686dc:	8fdc0020 	lw	gp,32(s8)
  4686e0:	afc2002c 	sw	v0,44(s8)

	passert(bl == 4);
  4686e4:	8fc3002c 	lw	v1,44(s8)
  4686e8:	24020004 	li	v0,4
  4686ec:	1062000e 	beq	v1,v0,468728 <build_dns_name+0x114>
  4686f0:	00000000 	nop
  4686f4:	8f84802c 	lw	a0,-32724(gp)
  4686f8:	00000000 	nop
  4686fc:	24843e28 	addiu	a0,a0,15912
  468700:	8f85802c 	lw	a1,-32724(gp)
  468704:	00000000 	nop
  468708:	24a53e30 	addiu	a1,a1,15920
  46870c:	2406023a 	li	a2,570
  468710:	8f998bb8 	lw	t9,-29768(gp)
  468714:	00000000 	nop
  468718:	0320f809 	jalr	t9
  46871c:	00000000 	nop
  468720:	8fdc0020 	lw	gp,32(s8)
  468724:	00000000 	nop
	snprintf(name_buf, NS_MAXDNAME + 2, "%d.%d.%d.%d.in-addr.arpa."
  468728:	8fc20028 	lw	v0,40(s8)
  46872c:	00000000 	nop
  468730:	24420003 	addiu	v0,v0,3
  468734:	90430000 	lbu	v1,0(v0)
  468738:	8fc20028 	lw	v0,40(s8)
  46873c:	00000000 	nop
  468740:	24420002 	addiu	v0,v0,2
  468744:	90420000 	lbu	v0,0(v0)
  468748:	00000000 	nop
  46874c:	afa20010 	sw	v0,16(sp)
  468750:	8fc20028 	lw	v0,40(s8)
  468754:	00000000 	nop
  468758:	24420001 	addiu	v0,v0,1
  46875c:	90420000 	lbu	v0,0(v0)
  468760:	00000000 	nop
  468764:	afa20014 	sw	v0,20(sp)
  468768:	8fc20028 	lw	v0,40(s8)
  46876c:	00000000 	nop
  468770:	90420000 	lbu	v0,0(v0)
  468774:	00000000 	nop
  468778:	afa20018 	sw	v0,24(sp)
  46877c:	8fc40050 	lw	a0,80(s8)
  468780:	24050403 	li	a1,1027
  468784:	8f86802c 	lw	a2,-32724(gp)
  468788:	00000000 	nop
  46878c:	24c63e3c 	addiu	a2,a2,15932
  468790:	00603821 	move	a3,v1
  468794:	8f998b38 	lw	t9,-29896(gp)
  468798:	00000000 	nop
  46879c:	0320f809 	jalr	t9
  4687a0:	00000000 	nop
  4687a4:	8fdc0020 	lw	gp,32(s8)
  4687a8:	00000000 	nop
	    , b[3], b[2], b[1], b[0]);
	break;
  4687ac:	10000082 	b	4689b8 <build_dns_name+0x3a4>
  4687b0:	00000000 	nop
    }

    case ID_IPV6_ADDR:
    {
	/* ??? is this correct? */
	const unsigned char *b;
	size_t bl;
	u_char *op = name_buf;
  4687b4:	8fc20050 	lw	v0,80(s8)
  4687b8:	00000000 	nop
  4687bc:	afc20034 	sw	v0,52(s8)
	static const char suffix[] = "IP6.INT.";

	for (bl = addrbytesptr(&id->ip_addr, &b); bl-- != 0; )
  4687c0:	8fc20054 	lw	v0,84(s8)
  4687c4:	00000000 	nop
  4687c8:	24420004 	addiu	v0,v0,4
  4687cc:	00402021 	move	a0,v0
  4687d0:	27c5002c 	addiu	a1,s8,44
  4687d4:	8f998768 	lw	t9,-30872(gp)
  4687d8:	00000000 	nop
  4687dc:	0320f809 	jalr	t9
  4687e0:	00000000 	nop
  4687e4:	8fdc0020 	lw	gp,32(s8)
  4687e8:	afc20030 	sw	v0,48(s8)
  4687ec:	8fc20030 	lw	v0,48(s8)
  4687f0:	00000000 	nop
  4687f4:	2442ffff 	addiu	v0,v0,-1
  4687f8:	00401821 	move	v1,v0
  4687fc:	afc30030 	sw	v1,48(s8)
  468800:	2402ffff 	li	v0,-1
  468804:	1462000d 	bne	v1,v0,46883c <build_dns_name+0x228>
  468808:	00000000 	nop
	{
	    if (op + 4 + sizeof(suffix) >= name_buf + NS_MAXDNAME + 1)
		return "IPv6 reverse name too long";
	    op += sprintf(op, "%x.%x.", b[bl] & 0xF, b[bl] >> 4);
	}
	strcpy(op, suffix);
  46880c:	8fc40034 	lw	a0,52(s8)
  468810:	8f85802c 	lw	a1,-32724(gp)
  468814:	00000000 	nop
  468818:	24a53e1c 	addiu	a1,a1,15900
  46881c:	8f998c58 	lw	t9,-29608(gp)
  468820:	00000000 	nop
  468824:	0320f809 	jalr	t9
  468828:	00000000 	nop
  46882c:	8fdc0020 	lw	gp,32(s8)
  468830:	00000000 	nop
	break;
  468834:	10000060 	b	4689b8 <build_dns_name+0x3a4>
  468838:	00000000 	nop
  46883c:	8fc20034 	lw	v0,52(s8)
  468840:	00000000 	nop
  468844:	2443000d 	addiu	v1,v0,13
  468848:	8fc20050 	lw	v0,80(s8)
  46884c:	00000000 	nop
  468850:	24420402 	addiu	v0,v0,1026
  468854:	0062102b 	sltu	v0,v1,v0
  468858:	14400006 	bnez	v0,468874 <build_dns_name+0x260>
  46885c:	00000000 	nop
  468860:	8f82802c 	lw	v0,-32724(gp)
  468864:	00000000 	nop
  468868:	24423e58 	addiu	v0,v0,15960
  46886c:	10000065 	b	468a04 <build_dns_name+0x3f0>
  468870:	00000000 	nop
  468874:	8fc3002c 	lw	v1,44(s8)
  468878:	8fc20030 	lw	v0,48(s8)
  46887c:	00000000 	nop
  468880:	00621021 	addu	v0,v1,v0
  468884:	90420000 	lbu	v0,0(v0)
  468888:	00000000 	nop
  46888c:	3042000f 	andi	v0,v0,0xf
  468890:	304600ff 	andi	a2,v0,0xff
  468894:	8fc3002c 	lw	v1,44(s8)
  468898:	8fc20030 	lw	v0,48(s8)
  46889c:	00000000 	nop
  4688a0:	00621021 	addu	v0,v1,v0
  4688a4:	90420000 	lbu	v0,0(v0)
  4688a8:	00000000 	nop
  4688ac:	00021102 	srl	v0,v0,0x4
  4688b0:	304200ff 	andi	v0,v0,0xff
  4688b4:	8fc40034 	lw	a0,52(s8)
  4688b8:	8f85802c 	lw	a1,-32724(gp)
  4688bc:	00000000 	nop
  4688c0:	24a53e74 	addiu	a1,a1,15988
  4688c4:	00403821 	move	a3,v0
  4688c8:	8f9983d0 	lw	t9,-31792(gp)
  4688cc:	00000000 	nop
  4688d0:	0320f809 	jalr	t9
  4688d4:	00000000 	nop
  4688d8:	8fdc0020 	lw	gp,32(s8)
  4688dc:	00401821 	move	v1,v0
  4688e0:	8fc20034 	lw	v0,52(s8)
  4688e4:	00000000 	nop
  4688e8:	00431021 	addu	v0,v0,v1
  4688ec:	afc20034 	sw	v0,52(s8)
  4688f0:	1000ffbe 	b	4687ec <build_dns_name+0x1d8>
  4688f4:	00000000 	nop
    }

    case ID_FQDN:
	if (id->name.len > NS_MAXDNAME)
  4688f8:	8fc20054 	lw	v0,84(s8)
  4688fc:	00000000 	nop
  468900:	8c420024 	lw	v0,36(v0)
  468904:	00000000 	nop
  468908:	2c420402 	sltiu	v0,v0,1026
  46890c:	14400006 	bnez	v0,468928 <build_dns_name+0x314>
  468910:	00000000 	nop
	    return "FQDN too long for domain name";
  468914:	8f82802c 	lw	v0,-32724(gp)
  468918:	00000000 	nop
  46891c:	24423e7c 	addiu	v0,v0,15996
  468920:	10000038 	b	468a04 <build_dns_name+0x3f0>
  468924:	00000000 	nop

	memcpy(name_buf, id->name.ptr, id->name.len);
  468928:	8fc40050 	lw	a0,80(s8)
  46892c:	8fc20054 	lw	v0,84(s8)
  468930:	00000000 	nop
  468934:	8c450020 	lw	a1,32(v0)
  468938:	8fc20054 	lw	v0,84(s8)
  46893c:	00000000 	nop
  468940:	8c460024 	lw	a2,36(v0)
  468944:	8f998a30 	lw	t9,-30160(gp)
  468948:	00000000 	nop
  46894c:	0320f809 	jalr	t9
  468950:	00000000 	nop
  468954:	8fdc0020 	lw	gp,32(s8)
  468958:	00000000 	nop
	strcpy(name_buf + id->name.len, ".");
  46895c:	8fc20054 	lw	v0,84(s8)
  468960:	00000000 	nop
  468964:	8c430024 	lw	v1,36(v0)
  468968:	8fc20050 	lw	v0,80(s8)
  46896c:	00000000 	nop
  468970:	00431021 	addu	v0,v0,v1
  468974:	00402021 	move	a0,v0
  468978:	8f85802c 	lw	a1,-32724(gp)
  46897c:	00000000 	nop
  468980:	24a53e9c 	addiu	a1,a1,16028
  468984:	8f998c58 	lw	t9,-29608(gp)
  468988:	00000000 	nop
  46898c:	0320f809 	jalr	t9
  468990:	00000000 	nop
  468994:	8fdc0020 	lw	gp,32(s8)
  468998:	00000000 	nop
	break;
  46899c:	10000006 	b	4689b8 <build_dns_name+0x3a4>
  4689a0:	00000000 	nop

    default:
	return "can only query DNS for key for ID that is a FQDN, IPV4_ADDR, or IPV6_ADDR";
  4689a4:	8f82802c 	lw	v0,-32724(gp)
  4689a8:	00000000 	nop
  4689ac:	24423ea0 	addiu	v0,v0,16032
  4689b0:	10000014 	b	468a04 <build_dns_name+0x3f0>
  4689b4:	00000000 	nop
    }

    DBG(DBG_CONTROL | DBG_DNS, DBG_log("Querying DNS for %s for %s"
  4689b8:	8f8284f8 	lw	v0,-31496(gp)
  4689bc:	00000000 	nop
  4689c0:	8c420000 	lw	v0,0(v0)
  4689c4:	00000000 	nop
  4689c8:	30420110 	andi	v0,v0,0x110
  4689cc:	1040000c 	beqz	v0,468a00 <build_dns_name+0x3ec>
  4689d0:	00000000 	nop
  4689d4:	8f84802c 	lw	a0,-32724(gp)
  4689d8:	00000000 	nop
  4689dc:	24843eec 	addiu	a0,a0,16108
  4689e0:	8fc50058 	lw	a1,88(s8)
  4689e4:	8fc60050 	lw	a2,80(s8)
  4689e8:	8f9983b8 	lw	t9,-31816(gp)
  4689ec:	00000000 	nop
  4689f0:	0320f809 	jalr	t9
  4689f4:	00000000 	nop
  4689f8:	8fdc0020 	lw	gp,32(s8)
  4689fc:	00000000 	nop
	, typename, name_buf));
    return NULL;
  468a00:	00001021 	move	v0,zero
}
  468a04:	03c0e821 	move	sp,s8
  468a08:	8fbf0048 	lw	ra,72(sp)
  468a0c:	8fbe0044 	lw	s8,68(sp)
  468a10:	27bd0050 	addiu	sp,sp,80
  468a14:	03e00008 	jr	ra
  468a18:	00000000 	nop

00468a1c <process_key_rr>:
  468a1c:	3c1c0fba 	lui	gp,0xfba
  468a20:	279c3f54 	addiu	gp,gp,16212
  468a24:	0399e021 	addu	gp,gp,t9
  468a28:	27bdff98 	addiu	sp,sp,-104
  468a2c:	afbc0018 	sw	gp,24(sp)
  468a30:	afbf0060 	sw	ra,96(sp)
  468a34:	afbe005c 	sw	s8,92(sp)
  468a38:	afbc0058 	sw	gp,88(sp)
  468a3c:	03a0f021 	move	s8,sp
  468a40:	afc40068 	sw	a0,104(s8)
  468a44:	afc5006c 	sw	a1,108(s8)
  468a48:	afc60070 	sw	a2,112(s8)
  468a4c:	afc70074 	sw	a3,116(s8)

/* handle a key Resource Record. */

struct pubkeyrec *keys_from_dns = NULL;	/* ephemeral! extracted keys */

static err_t
process_key_rr(u_char *ptr, size_t len
, bool doit	/* should we capture information? */
, enum dns_auth_level dns_auth_level
, int *goodies	/* where we count accepted RRs */
, const struct id *id)	/* subject of query (i.e. client) */
{
    pb_stream pbs;
    struct key_rdata kr;

    if (len < sizeof(struct key_rdata))
  468a50:	8fc2006c 	lw	v0,108(s8)
  468a54:	00000000 	nop
  468a58:	2c420004 	sltiu	v0,v0,4
  468a5c:	10400006 	beqz	v0,468a78 <process_key_rr+0x5c>
  468a60:	00000000 	nop
	return "KEY Resource Record's RD Length is too small";
  468a64:	8f82802c 	lw	v0,-32724(gp)
  468a68:	00000000 	nop
  468a6c:	24423f08 	addiu	v0,v0,16136
  468a70:	1000005c 	b	468be4 <process_key_rr+0x1c8>
  468a74:	00000000 	nop

    init_pbs(&pbs, ptr, len, "KEY RR");
  468a78:	27c40020 	addiu	a0,s8,32
  468a7c:	8fc50068 	lw	a1,104(s8)
  468a80:	8fc6006c 	lw	a2,108(s8)
  468a84:	8f87802c 	lw	a3,-32724(gp)
  468a88:	00000000 	nop
  468a8c:	24e73f38 	addiu	a3,a3,16184
  468a90:	8f998364 	lw	t9,-31900(gp)
  468a94:	00000000 	nop
  468a98:	0320f809 	jalr	t9
  468a9c:	00000000 	nop
  468aa0:	8fdc0018 	lw	gp,24(s8)
  468aa4:	00000000 	nop

    if (!in_struct(&kr, &key_rdata_desc, &pbs, NULL))
  468aa8:	27c40040 	addiu	a0,s8,64
  468aac:	8f858018 	lw	a1,-32744(gp)
  468ab0:	00000000 	nop
  468ab4:	24a534a4 	addiu	a1,a1,13476
  468ab8:	27c60020 	addiu	a2,s8,32
  468abc:	00003821 	move	a3,zero
  468ac0:	8f998b3c 	lw	t9,-29892(gp)
  468ac4:	00000000 	nop
  468ac8:	0320f809 	jalr	t9
  468acc:	00000000 	nop
  468ad0:	8fdc0018 	lw	gp,24(s8)
  468ad4:	14400006 	bnez	v0,468af0 <process_key_rr+0xd4>
  468ad8:	00000000 	nop
	return "failed to get fixed part of KEY Resource Record RDATA";
  468adc:	8f82802c 	lw	v0,-32724(gp)
  468ae0:	00000000 	nop
  468ae4:	24423f40 	addiu	v0,v0,16192
  468ae8:	1000003e 	b	468be4 <process_key_rr+0x1c8>
  468aec:	00000000 	nop

    if (kr.protocol == 4	/* IPSEC (RFC 2535 3.1.3) */
    && kr.algorithm == 1	/* RSA/MD5 (RFC 2535 3.2) */
    && (kr.flags & 0x8000) == 0	/* use for authentication (3.1.2) */
    && (kr.flags & 0x2CF0) == 0)	/* must be zero */
  468af0:	93c30042 	lbu	v1,66(s8)
  468af4:	24020004 	li	v0,4
  468af8:	14620039 	bne	v1,v0,468be0 <process_key_rr+0x1c4>
  468afc:	00000000 	nop
  468b00:	93c30043 	lbu	v1,67(s8)
  468b04:	24020001 	li	v0,1
  468b08:	14620035 	bne	v1,v0,468be0 <process_key_rr+0x1c4>
  468b0c:	00000000 	nop
  468b10:	97c20040 	lhu	v0,64(s8)
  468b14:	00000000 	nop
  468b18:	30428000 	andi	v0,v0,0x8000
  468b1c:	3042ffff 	andi	v0,v0,0xffff
  468b20:	1440002f 	bnez	v0,468be0 <process_key_rr+0x1c4>
  468b24:	00000000 	nop
  468b28:	97c20040 	lhu	v0,64(s8)
  468b2c:	00000000 	nop
  468b30:	30422cf0 	andi	v0,v0,0x2cf0
  468b34:	3042ffff 	andi	v0,v0,0xffff
  468b38:	14400029 	bnez	v0,468be0 <process_key_rr+0x1c4>
  468b3c:	00000000 	nop
    {
	/* we have what seems to be a tasty key */
	(*goodies)++;
  468b40:	8fc20078 	lw	v0,120(s8)
  468b44:	00000000 	nop
  468b48:	8c420000 	lw	v0,0(v0)
  468b4c:	00000000 	nop
  468b50:	24430001 	addiu	v1,v0,1
  468b54:	8fc20078 	lw	v0,120(s8)
  468b58:	00000000 	nop
  468b5c:	ac430000 	sw	v1,0(v0)

	if (doit)
  468b60:	8fc20070 	lw	v0,112(s8)
  468b64:	00000000 	nop
  468b68:	1040001d 	beqz	v0,468be0 <process_key_rr+0x1c4>
  468b6c:	00000000 	nop
	{
	    chunk_t k;

	    setchunk(k, pbs.cur, pbs_left(&pbs));
  468b70:	8fc20030 	lw	v0,48(s8)
  468b74:	00000000 	nop
  468b78:	afc20048 	sw	v0,72(s8)
  468b7c:	8fc30034 	lw	v1,52(s8)
  468b80:	8fc20030 	lw	v0,48(s8)
  468b84:	00000000 	nop
  468b88:	00621023 	subu	v0,v1,v0
  468b8c:	afc2004c 	sw	v0,76(s8)
	    TRY(add_public_key(id, dns_auth_level, PUBKEY_ALG_RSA, &k
  468b90:	8f828394 	lw	v0,-31852(gp)
  468b94:	00000000 	nop
  468b98:	afa20010 	sw	v0,16(sp)
  468b9c:	8fc4007c 	lw	a0,124(s8)
  468ba0:	8fc50074 	lw	a1,116(s8)
  468ba4:	24060001 	li	a2,1
  468ba8:	27c70048 	addiu	a3,s8,72
  468bac:	8f998904 	lw	t9,-30460(gp)
  468bb0:	00000000 	nop
  468bb4:	0320f809 	jalr	t9
  468bb8:	00000000 	nop
  468bbc:	8fdc0018 	lw	gp,24(s8)
  468bc0:	afc20050 	sw	v0,80(s8)
  468bc4:	8fc20050 	lw	v0,80(s8)
  468bc8:	00000000 	nop
  468bcc:	10400004 	beqz	v0,468be0 <process_key_rr+0x1c4>
  468bd0:	00000000 	nop
  468bd4:	8fc20050 	lw	v0,80(s8)
  468bd8:	10000002 	b	468be4 <process_key_rr+0x1c8>
  468bdc:	00000000 	nop
		, &keys_from_dns));
	}
    }
    return NULL;
  468be0:	00001021 	move	v0,zero
}
  468be4:	03c0e821 	move	sp,s8
  468be8:	8fbf0060 	lw	ra,96(sp)
  468bec:	8fbe005c 	lw	s8,92(sp)
  468bf0:	27bd0068 	addiu	sp,sp,104
  468bf4:	03e00008 	jr	ra
  468bf8:	00000000 	nop

00468bfc <unpack_txt_rdata>:
  468bfc:	3c1c0fba 	lui	gp,0xfba
  468c00:	279c3d74 	addiu	gp,gp,15732
  468c04:	0399e021 	addu	gp,gp,t9
  468c08:	27bdffc8 	addiu	sp,sp,-56
  468c0c:	afbc0010 	sw	gp,16(sp)
  468c10:	afbf0030 	sw	ra,48(sp)
  468c14:	afbe002c 	sw	s8,44(sp)
  468c18:	afbc0028 	sw	gp,40(sp)
  468c1c:	03a0f021 	move	s8,sp
  468c20:	afc40038 	sw	a0,56(s8)
  468c24:	afc5003c 	sw	a1,60(s8)
  468c28:	afc60040 	sw	a2,64(s8)
  468c2c:	afc70044 	sw	a3,68(s8)


/* Process TXT X-IPsec-Server record, accumulating relevant ones
 * in gateways_from_dns, a list sorted by "preference".
 *
 * Format of TXT record body: X-IPsec-Server ( nnn ) = iii kkk
 *  nnn is a 16-bit unsigned integer preference
 *  iii is @FQDN or dotted-decimal IPv4 address or colon-hex IPv6 address
 *  kkk is an optional RSA public signing key in base 64.
 *
 * NOTE: we've got to be very wary of anything we find -- bad guys
 * might have prepared it.
 */

#define our_TXT_attr_string "X-IPsec-Server"
static const char our_TXT_attr[] = our_TXT_attr_string;

struct gw_info *gateways_from_dns = NULL;	/* ephemeral! */

/* unpack TXT rr RDATA into C string.
 * A sequence of <character-string>s as described in RFC 1035 3.3.
 * We concatenate them.
 */
static err_t
unpack_txt_rdata(u_char *d, size_t dlen, const u_char *s, size_t slen)
{
    size_t i = 0
  468c30:	afc00018 	sw	zero,24(s8)
	, o = 0;
  468c34:	afc0001c 	sw	zero,28(s8)

    while (i < slen)
  468c38:	8fc20018 	lw	v0,24(s8)
  468c3c:	8fc30044 	lw	v1,68(s8)
  468c40:	00000000 	nop
  468c44:	0043102b 	sltu	v0,v0,v1
  468c48:	14400003 	bnez	v0,468c58 <unpack_txt_rdata+0x5c>
  468c4c:	00000000 	nop
  468c50:	10000044 	b	468d64 <unpack_txt_rdata+0x168>
  468c54:	00000000 	nop
    {
	size_t cl = s[i++];
  468c58:	8fc30018 	lw	v1,24(s8)
  468c5c:	00000000 	nop
  468c60:	00602021 	move	a0,v1
  468c64:	8fc20040 	lw	v0,64(s8)
  468c68:	00000000 	nop
  468c6c:	00821021 	addu	v0,a0,v0
  468c70:	90420000 	lbu	v0,0(v0)
  468c74:	00000000 	nop
  468c78:	afc20020 	sw	v0,32(s8)
  468c7c:	24630001 	addiu	v1,v1,1
  468c80:	afc30018 	sw	v1,24(s8)

	if (i + cl > slen)
  468c84:	8fc30018 	lw	v1,24(s8)
  468c88:	8fc20020 	lw	v0,32(s8)
  468c8c:	00000000 	nop
  468c90:	00621821 	addu	v1,v1,v0
  468c94:	8fc20044 	lw	v0,68(s8)
  468c98:	00000000 	nop
  468c9c:	0043102b 	sltu	v0,v0,v1
  468ca0:	10400006 	beqz	v0,468cbc <unpack_txt_rdata+0xc0>
  468ca4:	00000000 	nop
	    return "TXT rr RDATA representation malformed";
  468ca8:	8f82802c 	lw	v0,-32724(gp)
  468cac:	00000000 	nop
  468cb0:	24423f88 	addiu	v0,v0,16264
  468cb4:	10000041 	b	468dbc <unpack_txt_rdata+0x1c0>
  468cb8:	00000000 	nop

	if (o + cl >= dlen)
  468cbc:	8fc3001c 	lw	v1,28(s8)
  468cc0:	8fc20020 	lw	v0,32(s8)
  468cc4:	00000000 	nop
  468cc8:	00621821 	addu	v1,v1,v0
  468ccc:	8fc2003c 	lw	v0,60(s8)
  468cd0:	00000000 	nop
  468cd4:	0062102b 	sltu	v0,v1,v0
  468cd8:	14400006 	bnez	v0,468cf4 <unpack_txt_rdata+0xf8>
  468cdc:	00000000 	nop
	    return "TXT rr RDATA too large";
  468ce0:	8f82802c 	lw	v0,-32724(gp)
  468ce4:	00000000 	nop
  468ce8:	24423fb0 	addiu	v0,v0,16304
  468cec:	10000033 	b	468dbc <unpack_txt_rdata+0x1c0>
  468cf0:	00000000 	nop

	memcpy(d + o, s + i, cl);
  468cf4:	8fc30038 	lw	v1,56(s8)
  468cf8:	8fc2001c 	lw	v0,28(s8)
  468cfc:	00000000 	nop
  468d00:	00622021 	addu	a0,v1,v0
  468d04:	8fc30040 	lw	v1,64(s8)
  468d08:	8fc20018 	lw	v0,24(s8)
  468d0c:	00000000 	nop
  468d10:	00621021 	addu	v0,v1,v0
  468d14:	00402821 	move	a1,v0
  468d18:	8fc60020 	lw	a2,32(s8)
  468d1c:	8f998a30 	lw	t9,-30160(gp)
  468d20:	00000000 	nop
  468d24:	0320f809 	jalr	t9
  468d28:	00000000 	nop
  468d2c:	8fdc0010 	lw	gp,16(s8)
  468d30:	00000000 	nop
	i += cl;
  468d34:	8fc30018 	lw	v1,24(s8)
  468d38:	8fc20020 	lw	v0,32(s8)
  468d3c:	00000000 	nop
  468d40:	00621021 	addu	v0,v1,v0
  468d44:	afc20018 	sw	v0,24(s8)
	o += cl;
  468d48:	8fc3001c 	lw	v1,28(s8)
  468d4c:	8fc20020 	lw	v0,32(s8)
  468d50:	00000000 	nop
  468d54:	00621021 	addu	v0,v1,v0
  468d58:	afc2001c 	sw	v0,28(s8)
  468d5c:	1000ffb6 	b	468c38 <unpack_txt_rdata+0x3c>
  468d60:	00000000 	nop
    }
    d[o] = '\0';
  468d64:	8fc30038 	lw	v1,56(s8)
  468d68:	8fc2001c 	lw	v0,28(s8)
  468d6c:	00000000 	nop
  468d70:	00621021 	addu	v0,v1,v0
  468d74:	a0400000 	sb	zero,0(v0)
    if (strlen(d) != o)
  468d78:	8fc40038 	lw	a0,56(s8)
  468d7c:	8f998188 	lw	t9,-32376(gp)
  468d80:	00000000 	nop
  468d84:	0320f809 	jalr	t9
  468d88:	00000000 	nop
  468d8c:	8fdc0010 	lw	gp,16(s8)
  468d90:	00401821 	move	v1,v0
  468d94:	8fc2001c 	lw	v0,28(s8)
  468d98:	00000000 	nop
  468d9c:	10620006 	beq	v1,v0,468db8 <unpack_txt_rdata+0x1bc>
  468da0:	00000000 	nop
	return "TXT rr RDATA contains a NUL";
  468da4:	8f82802c 	lw	v0,-32724(gp)
  468da8:	00000000 	nop
  468dac:	24423fc8 	addiu	v0,v0,16328
  468db0:	10000002 	b	468dbc <unpack_txt_rdata+0x1c0>
  468db4:	00000000 	nop

    return NULL;
  468db8:	00001021 	move	v0,zero
}
  468dbc:	03c0e821 	move	sp,s8
  468dc0:	8fbf0030 	lw	ra,48(sp)
  468dc4:	8fbe002c 	lw	s8,44(sp)
  468dc8:	27bd0038 	addiu	sp,sp,56
  468dcc:	03e00008 	jr	ra
  468dd0:	00000000 	nop

00468dd4 <decode_iii>:
  468dd4:	3c1c0fba 	lui	gp,0xfba
  468dd8:	279c3b9c 	addiu	gp,gp,15260
  468ddc:	0399e021 	addu	gp,gp,t9
  468de0:	27bdffa0 	addiu	sp,sp,-96
  468de4:	afbc0010 	sw	gp,16(sp)
  468de8:	afbf0058 	sw	ra,88(sp)
  468dec:	afbe0054 	sw	s8,84(sp)
  468df0:	afbc0050 	sw	gp,80(sp)
  468df4:	03a0f021 	move	s8,sp
  468df8:	afc40060 	sw	a0,96(s8)
  468dfc:	afc50064 	sw	a1,100(s8)

static err_t
decode_iii(u_char **pp, struct id *gw_id)
{
    u_char *p = *pp + strspn(*pp, " \t");
  468e00:	8fc20060 	lw	v0,96(s8)
  468e04:	00000000 	nop
  468e08:	8c440000 	lw	a0,0(v0)
  468e0c:	8f85802c 	lw	a1,-32724(gp)
  468e10:	00000000 	nop
  468e14:	24a53fe4 	addiu	a1,a1,16356
  468e18:	8f998198 	lw	t9,-32360(gp)
  468e1c:	00000000 	nop
  468e20:	0320f809 	jalr	t9
  468e24:	00000000 	nop
  468e28:	8fdc0010 	lw	gp,16(s8)
  468e2c:	00401821 	move	v1,v0
  468e30:	8fc20060 	lw	v0,96(s8)
  468e34:	00000000 	nop
  468e38:	8c420000 	lw	v0,0(v0)
  468e3c:	00000000 	nop
  468e40:	00431021 	addu	v0,v0,v1
  468e44:	afc20018 	sw	v0,24(s8)
    u_char *e = p + strcspn(p, " \t");
  468e48:	8fc40018 	lw	a0,24(s8)
  468e4c:	8f85802c 	lw	a1,-32724(gp)
  468e50:	00000000 	nop
  468e54:	24a53fe4 	addiu	a1,a1,16356
  468e58:	8f9983a8 	lw	t9,-31832(gp)
  468e5c:	00000000 	nop
  468e60:	0320f809 	jalr	t9
  468e64:	00000000 	nop
  468e68:	8fdc0010 	lw	gp,16(s8)
  468e6c:	00401821 	move	v1,v0
  468e70:	8fc20018 	lw	v0,24(s8)
  468e74:	00000000 	nop
  468e78:	00431021 	addu	v0,v0,v1
  468e7c:	afc2001c 	sw	v0,28(s8)
    u_char under = *e;
  468e80:	8fc2001c 	lw	v0,28(s8)
  468e84:	00000000 	nop
  468e88:	90420000 	lbu	v0,0(v0)
  468e8c:	00000000 	nop
  468e90:	a3c20020 	sb	v0,32(s8)

    if (p == e)
  468e94:	8fc30018 	lw	v1,24(s8)
  468e98:	8fc2001c 	lw	v0,28(s8)
  468e9c:	00000000 	nop
  468ea0:	14620006 	bne	v1,v0,468ebc <decode_iii+0xe8>
  468ea4:	00000000 	nop
	return "TXT " our_TXT_attr_string " badly formed (no gateway specified)";
  468ea8:	8f82802c 	lw	v0,-32724(gp)
  468eac:	00000000 	nop
  468eb0:	24423fe8 	addiu	v0,v0,16360
  468eb4:	10000077 	b	469094 <decode_iii+0x2c0>
  468eb8:	00000000 	nop

    *e = '\0';
  468ebc:	8fc2001c 	lw	v0,28(s8)
  468ec0:	00000000 	nop
  468ec4:	a0400000 	sb	zero,0(v0)
    if (*p == '@')
  468ec8:	8fc20018 	lw	v0,24(s8)
  468ecc:	00000000 	nop
  468ed0:	90430000 	lbu	v1,0(v0)
  468ed4:	24020040 	li	v0,64
  468ed8:	14620018 	bne	v1,v0,468f3c <decode_iii+0x168>
  468edc:	00000000 	nop
    {
	/* gateway specification in this record is @FQDN */
	err_t ugh = atoid(p, gw_id);
  468ee0:	8fc40018 	lw	a0,24(s8)
  468ee4:	8fc50064 	lw	a1,100(s8)
  468ee8:	8f998adc 	lw	t9,-29988(gp)
  468eec:	00000000 	nop
  468ef0:	0320f809 	jalr	t9
  468ef4:	00000000 	nop
  468ef8:	8fdc0010 	lw	gp,16(s8)
  468efc:	afc20024 	sw	v0,36(s8)

	if (ugh != NULL)
  468f00:	8fc20024 	lw	v0,36(s8)
  468f04:	00000000 	nop
  468f08:	1040004d 	beqz	v0,469040 <decode_iii+0x26c>
  468f0c:	00000000 	nop
	    return builddiag("malformed FQDN in TXT " our_TXT_attr_string ": %s"
  468f10:	8f84802c 	lw	a0,-32724(gp)
  468f14:	00000000 	nop
  468f18:	24844020 	addiu	a0,a0,16416
  468f1c:	8fc50024 	lw	a1,36(s8)
  468f20:	8f9986dc 	lw	t9,-31012(gp)
  468f24:	00000000 	nop
  468f28:	0320f809 	jalr	t9
  468f2c:	00000000 	nop
  468f30:	8fdc0010 	lw	gp,16(s8)
  468f34:	10000057 	b	469094 <decode_iii+0x2c0>
  468f38:	00000000 	nop
		, ugh);
    }
    else
    {
	/* gateway specification is numeric */
	ip_address ip;
	err_t ugh = tnatoaddr(p, e-p
  468f3c:	8fc40018 	lw	a0,24(s8)
  468f40:	2405003a 	li	a1,58
  468f44:	8f99813c 	lw	t9,-32452(gp)
  468f48:	00000000 	nop
  468f4c:	0320f809 	jalr	t9
  468f50:	00000000 	nop
  468f54:	8fdc0010 	lw	gp,16(s8)
  468f58:	14400005 	bnez	v0,468f70 <decode_iii+0x19c>
  468f5c:	00000000 	nop
  468f60:	24020002 	li	v0,2
  468f64:	afc20048 	sw	v0,72(s8)
  468f68:	10000003 	b	468f78 <decode_iii+0x1a4>
  468f6c:	00000000 	nop
  468f70:	2402000a 	li	v0,10
  468f74:	afc20048 	sw	v0,72(s8)
  468f78:	8fc3001c 	lw	v1,28(s8)
  468f7c:	8fc20018 	lw	v0,24(s8)
  468f80:	00000000 	nop
  468f84:	00621023 	subu	v0,v1,v0
  468f88:	8fc40018 	lw	a0,24(s8)
  468f8c:	00402821 	move	a1,v0
  468f90:	8fc60048 	lw	a2,72(s8)
  468f94:	27c70028 	addiu	a3,s8,40
  468f98:	8f998c64 	lw	t9,-29596(gp)
  468f9c:	00000000 	nop
  468fa0:	0320f809 	jalr	t9
  468fa4:	00000000 	nop
  468fa8:	8fdc0010 	lw	gp,16(s8)
  468fac:	afc20024 	sw	v0,36(s8)
	    , strchr(p, ':') == NULL? AF_INET : AF_INET6
	    , &ip);

	if (ugh != NULL)
  468fb0:	8fc20024 	lw	v0,36(s8)
  468fb4:	00000000 	nop
  468fb8:	1040000c 	beqz	v0,468fec <decode_iii+0x218>
  468fbc:	00000000 	nop
	    return builddiag("malformed IP address in TXT " our_TXT_attr_string ": %s"
  468fc0:	8f84802c 	lw	a0,-32724(gp)
  468fc4:	00000000 	nop
  468fc8:	2484404c 	addiu	a0,a0,16460
  468fcc:	8fc50024 	lw	a1,36(s8)
  468fd0:	8f9986dc 	lw	t9,-31012(gp)
  468fd4:	00000000 	nop
  468fd8:	0320f809 	jalr	t9
  468fdc:	00000000 	nop
  468fe0:	8fdc0010 	lw	gp,16(s8)
  468fe4:	1000002b 	b	469094 <decode_iii+0x2c0>
  468fe8:	00000000 	nop
		, ugh);

	if (isanyaddr(&ip))
  468fec:	27c40028 	addiu	a0,s8,40
  468ff0:	8f998628 	lw	t9,-31192(gp)
  468ff4:	00000000 	nop
  468ff8:	0320f809 	jalr	t9
  468ffc:	00000000 	nop
  469000:	8fdc0010 	lw	gp,16(s8)
  469004:	10400006 	beqz	v0,469020 <decode_iii+0x24c>
  469008:	00000000 	nop
	    return "gateway address must not be 0.0.0.0 or 0::0";
  46900c:	8f82802c 	lw	v0,-32724(gp)
  469010:	00000000 	nop
  469014:	2442407c 	addiu	v0,v0,16508
  469018:	1000001e 	b	469094 <decode_iii+0x2c0>
  46901c:	00000000 	nop

	iptoid(&ip, gw_id);
  469020:	27c40028 	addiu	a0,s8,40
  469024:	8fc50064 	lw	a1,100(s8)
  469028:	8f998a6c 	lw	t9,-30100(gp)
  46902c:	00000000 	nop
  469030:	0320f809 	jalr	t9
  469034:	00000000 	nop
  469038:	8fdc0010 	lw	gp,16(s8)
  46903c:	00000000 	nop
    }

    *e = under;
  469040:	93c30020 	lbu	v1,32(s8)
  469044:	8fc2001c 	lw	v0,28(s8)
  469048:	00000000 	nop
  46904c:	a0430000 	sb	v1,0(v0)
    *pp = e + strspn(e, " \t");
  469050:	8fc4001c 	lw	a0,28(s8)
  469054:	8f85802c 	lw	a1,-32724(gp)
  469058:	00000000 	nop
  46905c:	24a53fe4 	addiu	a1,a1,16356
  469060:	8f998198 	lw	t9,-32360(gp)
  469064:	00000000 	nop
  469068:	0320f809 	jalr	t9
  46906c:	00000000 	nop
  469070:	8fdc0010 	lw	gp,16(s8)
  469074:	00401821 	move	v1,v0
  469078:	8fc2001c 	lw	v0,28(s8)
  46907c:	00000000 	nop
  469080:	00431821 	addu	v1,v0,v1
  469084:	8fc20060 	lw	v0,96(s8)
  469088:	00000000 	nop
  46908c:	ac430000 	sw	v1,0(v0)

    return NULL;
  469090:	00001021 	move	v0,zero
}
  469094:	03c0e821 	move	sp,s8
  469098:	8fbf0058 	lw	ra,88(sp)
  46909c:	8fbe0054 	lw	s8,84(sp)
  4690a0:	27bd0060 	addiu	sp,sp,96
  4690a4:	03e00008 	jr	ra
  4690a8:	00000000 	nop

004690ac <process_txt_rr>:
  4690ac:	3c1c0fba 	lui	gp,0xfba
  4690b0:	279c38c4 	addiu	gp,gp,14532
  4690b4:	0399e021 	addu	gp,gp,t9
  4690b8:	27bde908 	addiu	sp,sp,-5880
  4690bc:	afbc0020 	sw	gp,32(sp)
  4690c0:	afbf16f4 	sw	ra,5876(sp)
  4690c4:	afbe16f0 	sw	s8,5872(sp)
  4690c8:	afbc16ec 	sw	gp,5868(sp)
  4690cc:	afb016e8 	sw	s0,5864(sp)
  4690d0:	03a0f021 	move	s8,sp
  4690d4:	afc416f8 	sw	a0,5880(s8)
  4690d8:	afc516fc 	sw	a1,5884(s8)
  4690dc:	afc61700 	sw	a2,5888(s8)
  4690e0:	afc71704 	sw	a3,5892(s8)

static err_t
process_txt_rr(u_char *rdata, size_t rdlen
, bool doit	/* should we capture information? */
, enum dns_auth_level dns_auth_level
, int *goodies	/* where we count accepted RRs */
, const struct id *client_id	/* subject of query */
, const struct id *peer_id)	/* security gateway of interest, if any */
{
    u_char str[2049];	/* space for unpacked RDATA */
    u_char *p = str;
  4690e4:	27c20028 	addiu	v0,s8,40
  4690e8:	afc20830 	sw	v0,2096(s8)
    unsigned long pref = 0;
  4690ec:	afc00834 	sw	zero,2100(s8)
    struct gw_info gi;

    TRY(unpack_txt_rdata(str, sizeof(str), rdata, rdlen));
  4690f0:	27c40028 	addiu	a0,s8,40
  4690f4:	24050801 	li	a1,2049
  4690f8:	8fc616f8 	lw	a2,5880(s8)
  4690fc:	8fc716fc 	lw	a3,5884(s8)
  469100:	8f998040 	lw	t9,-32704(gp)
  469104:	00000000 	nop
  469108:	27398bfc 	addiu	t9,t9,-29700
  46910c:	00000000 	nop
  469110:	0320f809 	jalr	t9
  469114:	00000000 	nop
  469118:	8fdc0020 	lw	gp,32(s8)
  46911c:	afc208d0 	sw	v0,2256(s8)
  469120:	8fc208d0 	lw	v0,2256(s8)
  469124:	00000000 	nop
  469128:	10400004 	beqz	v0,46913c <process_txt_rr+0x90>
  46912c:	00000000 	nop
  469130:	8fc208d0 	lw	v0,2256(s8)
  469134:	10000218 	b	469998 <process_txt_rr+0x8ec>
  469138:	00000000 	nop

    p += strspn(p, " \t");	/* ignore leading whitespace */
  46913c:	8fc40830 	lw	a0,2096(s8)
  469140:	8f85802c 	lw	a1,-32724(gp)
  469144:	00000000 	nop
  469148:	24a53fe4 	addiu	a1,a1,16356
  46914c:	8f998198 	lw	t9,-32360(gp)
  469150:	00000000 	nop
  469154:	0320f809 	jalr	t9
  469158:	00000000 	nop
  46915c:	8fdc0020 	lw	gp,32(s8)
  469160:	00401821 	move	v1,v0
  469164:	8fc20830 	lw	v0,2096(s8)
  469168:	00000000 	nop
  46916c:	00431021 	addu	v0,v0,v1
  469170:	afc20830 	sw	v0,2096(s8)

    /* is this for us? */
    if (strncasecmp(p, our_TXT_attr, sizeof(our_TXT_attr)-1) != 0)
  469174:	8fc40830 	lw	a0,2096(s8)
  469178:	8f85802c 	lw	a1,-32724(gp)
  46917c:	00000000 	nop
  469180:	24a53f78 	addiu	a1,a1,16248
  469184:	2406000e 	li	a2,14
  469188:	8f9988a8 	lw	t9,-30552(gp)
  46918c:	00000000 	nop
  469190:	0320f809 	jalr	t9
  469194:	00000000 	nop
  469198:	8fdc0020 	lw	gp,32(s8)
  46919c:	10400004 	beqz	v0,4691b0 <process_txt_rr+0x104>
  4691a0:	00000000 	nop
	return NULL;	/* neither interesting nor bad */
  4691a4:	00001021 	move	v0,zero
  4691a8:	100001fb 	b	469998 <process_txt_rr+0x8ec>
  4691ac:	00000000 	nop

    p += sizeof(our_TXT_attr) - 1;	/* ignore our attribute name */
  4691b0:	8fc20830 	lw	v0,2096(s8)
  4691b4:	00000000 	nop
  4691b8:	2442000e 	addiu	v0,v0,14
  4691bc:	afc20830 	sw	v0,2096(s8)
    p += strspn(p, " \t");	/* ignore leading whitespace */
  4691c0:	8fc40830 	lw	a0,2096(s8)
  4691c4:	8f85802c 	lw	a1,-32724(gp)
  4691c8:	00000000 	nop
  4691cc:	24a53fe4 	addiu	a1,a1,16356
  4691d0:	8f998198 	lw	t9,-32360(gp)
  4691d4:	00000000 	nop
  4691d8:	0320f809 	jalr	t9
  4691dc:	00000000 	nop
  4691e0:	8fdc0020 	lw	gp,32(s8)
  4691e4:	00401821 	move	v1,v0
  4691e8:	8fc20830 	lw	v0,2096(s8)
  4691ec:	00000000 	nop
  4691f0:	00431021 	addu	v0,v0,v1
  4691f4:	afc20830 	sw	v0,2096(s8)

    /* decode '(' nnn ')' */
    if (*p != '(')
  4691f8:	8fc20830 	lw	v0,2096(s8)
  4691fc:	00000000 	nop
  469200:	90430000 	lbu	v1,0(v0)
  469204:	24020028 	li	v0,40
  469208:	10620006 	beq	v1,v0,469224 <process_txt_rr+0x178>
  46920c:	00000000 	nop
	return "X-IPsec-Server missing '('";
  469210:	8f82802c 	lw	v0,-32724(gp)
  469214:	00000000 	nop
  469218:	244240a8 	addiu	v0,v0,16552
  46921c:	100001de 	b	469998 <process_txt_rr+0x8ec>
  469220:	00000000 	nop

    {
	char *e;

	p++;
  469224:	8fc20830 	lw	v0,2096(s8)
  469228:	00000000 	nop
  46922c:	24420001 	addiu	v0,v0,1
  469230:	afc20830 	sw	v0,2096(s8)
	pref = strtoul(p, &e, 0);
  469234:	8fc40830 	lw	a0,2096(s8)
  469238:	27c508d0 	addiu	a1,s8,2256
  46923c:	00003021 	move	a2,zero
  469240:	8f998958 	lw	t9,-30376(gp)
  469244:	00000000 	nop
  469248:	0320f809 	jalr	t9
  46924c:	00000000 	nop
  469250:	8fdc0020 	lw	gp,32(s8)
  469254:	afc20834 	sw	v0,2100(s8)
	if ((u_char *)e == p)
  469258:	8fc308d0 	lw	v1,2256(s8)
  46925c:	8fc20830 	lw	v0,2096(s8)
  469260:	00000000 	nop
  469264:	14620006 	bne	v1,v0,469280 <process_txt_rr+0x1d4>
  469268:	00000000 	nop
	    return "malformed X-IPsec-Server priority";
  46926c:	8f82802c 	lw	v0,-32724(gp)
  469270:	00000000 	nop
  469274:	244240c4 	addiu	v0,v0,16580
  469278:	100001c7 	b	469998 <process_txt_rr+0x8ec>
  46927c:	00000000 	nop

	p = e + strspn(e, " \t");
  469280:	8fc408d0 	lw	a0,2256(s8)
  469284:	8f85802c 	lw	a1,-32724(gp)
  469288:	00000000 	nop
  46928c:	24a53fe4 	addiu	a1,a1,16356
  469290:	8f998198 	lw	t9,-32360(gp)
  469294:	00000000 	nop
  469298:	0320f809 	jalr	t9
  46929c:	00000000 	nop
  4692a0:	8fdc0020 	lw	gp,32(s8)
  4692a4:	00401821 	move	v1,v0
  4692a8:	8fc208d0 	lw	v0,2256(s8)
  4692ac:	00000000 	nop
  4692b0:	00431021 	addu	v0,v0,v1
  4692b4:	afc20830 	sw	v0,2096(s8)

	if (*p != ')')
  4692b8:	8fc20830 	lw	v0,2096(s8)
  4692bc:	00000000 	nop
  4692c0:	90430000 	lbu	v1,0(v0)
  4692c4:	24020029 	li	v0,41
  4692c8:	10620006 	beq	v1,v0,4692e4 <process_txt_rr+0x238>
  4692cc:	00000000 	nop
	    return "X-IPsec-Server priority missing ')'";
  4692d0:	8f82802c 	lw	v0,-32724(gp)
  4692d4:	00000000 	nop
  4692d8:	244240e8 	addiu	v0,v0,16616
  4692dc:	100001ae 	b	469998 <process_txt_rr+0x8ec>
  4692e0:	00000000 	nop

	p++;
  4692e4:	8fc20830 	lw	v0,2096(s8)
  4692e8:	00000000 	nop
  4692ec:	24420001 	addiu	v0,v0,1
  4692f0:	afc20830 	sw	v0,2096(s8)
	p += strspn(p, " \t");
  4692f4:	8fc40830 	lw	a0,2096(s8)
  4692f8:	8f85802c 	lw	a1,-32724(gp)
  4692fc:	00000000 	nop
  469300:	24a53fe4 	addiu	a1,a1,16356
  469304:	8f998198 	lw	t9,-32360(gp)
  469308:	00000000 	nop
  46930c:	0320f809 	jalr	t9
  469310:	00000000 	nop
  469314:	8fdc0020 	lw	gp,32(s8)
  469318:	00401821 	move	v1,v0
  46931c:	8fc20830 	lw	v0,2096(s8)
  469320:	00000000 	nop
  469324:	00431021 	addu	v0,v0,v1
  469328:	afc20830 	sw	v0,2096(s8)

	if (pref > 0xFFFF)
  46932c:	3403ffff 	li	v1,0xffff
  469330:	8fc20834 	lw	v0,2100(s8)
  469334:	00000000 	nop
  469338:	0062102b 	sltu	v0,v1,v0
  46933c:	10400006 	beqz	v0,469358 <process_txt_rr+0x2ac>
  469340:	00000000 	nop
	    return "X-IPsec-Server priority larger than 0xFFFF";
  469344:	8f82802c 	lw	v0,-32724(gp)
  469348:	00000000 	nop
  46934c:	2442410c 	addiu	v0,v0,16652
  469350:	10000191 	b	469998 <process_txt_rr+0x8ec>
  469354:	00000000 	nop
    }

    /* time for '=' */

    if (*p != '=')
  469358:	8fc20830 	lw	v0,2096(s8)
  46935c:	00000000 	nop
  469360:	90430000 	lbu	v1,0(v0)
  469364:	2402003d 	li	v0,61
  469368:	10620006 	beq	v1,v0,469384 <process_txt_rr+0x2d8>
  46936c:	00000000 	nop
	return "X-IPsec-Server priority missing '='";
  469370:	8f82802c 	lw	v0,-32724(gp)
  469374:	00000000 	nop
  469378:	24424138 	addiu	v0,v0,16696
  46937c:	10000186 	b	469998 <process_txt_rr+0x8ec>
  469380:	00000000 	nop

    p++;
  469384:	8fc20830 	lw	v0,2096(s8)
  469388:	00000000 	nop
  46938c:	24420001 	addiu	v0,v0,1
  469390:	afc20830 	sw	v0,2096(s8)
    p += strspn(p, " \t");
  469394:	8fc40830 	lw	a0,2096(s8)
  469398:	8f85802c 	lw	a1,-32724(gp)
  46939c:	00000000 	nop
  4693a0:	24a53fe4 	addiu	a1,a1,16356
  4693a4:	8f998198 	lw	t9,-32360(gp)
  4693a8:	00000000 	nop
  4693ac:	0320f809 	jalr	t9
  4693b0:	00000000 	nop
  4693b4:	8fdc0020 	lw	gp,32(s8)
  4693b8:	00401821 	move	v1,v0
  4693bc:	8fc20830 	lw	v0,2096(s8)
  4693c0:	00000000 	nop
  4693c4:	00431021 	addu	v0,v0,v1
  4693c8:	afc20830 	sw	v0,2096(s8)

    /* Decode iii (Security Gateway ID). */

    zero(&gi);	/* before first use */
  4693cc:	27c40838 	addiu	a0,s8,2104
  4693d0:	00002821 	move	a1,zero
  4693d4:	24060098 	li	a2,152
  4693d8:	8f998500 	lw	t9,-31488(gp)
  4693dc:	00000000 	nop
  4693e0:	0320f809 	jalr	t9
  4693e4:	00000000 	nop
  4693e8:	8fdc0020 	lw	gp,32(s8)
  4693ec:	00000000 	nop

    TRY(decode_iii(&p, &gi.gw_id));
  4693f0:	27c20838 	addiu	v0,s8,2104
  4693f4:	24420040 	addiu	v0,v0,64
  4693f8:	27c40830 	addiu	a0,s8,2096
  4693fc:	00402821 	move	a1,v0
  469400:	8f998040 	lw	t9,-32704(gp)
  469404:	00000000 	nop
  469408:	27398dd4 	addiu	t9,t9,-29228
  46940c:	00000000 	nop
  469410:	0320f809 	jalr	t9
  469414:	00000000 	nop
  469418:	8fdc0020 	lw	gp,32(s8)
  46941c:	afc208d4 	sw	v0,2260(s8)
  469420:	8fc208d4 	lw	v0,2260(s8)
  469424:	00000000 	nop
  469428:	10400004 	beqz	v0,46943c <process_txt_rr+0x390>
  46942c:	00000000 	nop
  469430:	8fc208d4 	lw	v0,2260(s8)
  469434:	10000158 	b	469998 <process_txt_rr+0x8ec>
  469438:	00000000 	nop

    if (peer_id == NULL)
  46943c:	8fc21710 	lw	v0,5904(s8)
  469440:	00000000 	nop
  469444:	14400034 	bnez	v0,469518 <process_txt_rr+0x46c>
  469448:	00000000 	nop
    {
	/* we don't know the peer's ID (because we are initiating
	 * and we don't know who to initiate with.
	 * So we're looking for gateway specs with an IP address
	 */
	if (!id_is_ipaddr(&gi.gw_id))
  46944c:	8fc30878 	lw	v1,2168(s8)
  469450:	24020001 	li	v0,1
  469454:	1062006f 	beq	v1,v0,469614 <process_txt_rr+0x568>
  469458:	00000000 	nop
  46945c:	8fc30878 	lw	v1,2168(s8)
  469460:	24020005 	li	v0,5
  469464:	1062006b 	beq	v1,v0,469614 <process_txt_rr+0x568>
  469468:	00000000 	nop
	{
	    DBG(DBG_DNS,
  46946c:	8f8284f8 	lw	v0,-31496(gp)
  469470:	00000000 	nop
  469474:	8c420000 	lw	v0,0(v0)
  469478:	00000000 	nop
  46947c:	30420100 	andi	v0,v0,0x100
  469480:	10400022 	beqz	v0,46950c <process_txt_rr+0x460>
  469484:	00000000 	nop
  469488:	8fc4170c 	lw	a0,5900(s8)
  46948c:	27c508d8 	addiu	a1,s8,2264
  469490:	24060200 	li	a2,512
  469494:	8f998798 	lw	t9,-30824(gp)
  469498:	00000000 	nop
  46949c:	0320f809 	jalr	t9
  4694a0:	00000000 	nop
  4694a4:	8fdc0020 	lw	gp,32(s8)
  4694a8:	27c20838 	addiu	v0,s8,2104
  4694ac:	24420040 	addiu	v0,v0,64
  4694b0:	00402021 	move	a0,v0
  4694b4:	27c50ad8 	addiu	a1,s8,2776
  4694b8:	24060200 	li	a2,512
  4694bc:	8f998798 	lw	t9,-30824(gp)
  4694c0:	00000000 	nop
  4694c4:	0320f809 	jalr	t9
  4694c8:	00000000 	nop
  4694cc:	8fdc0020 	lw	gp,32(s8)
  4694d0:	00000000 	nop
  4694d4:	8f84802c 	lw	a0,-32724(gp)
  4694d8:	00000000 	nop
  4694dc:	2484415c 	addiu	a0,a0,16732
  4694e0:	8f85802c 	lw	a1,-32724(gp)
  4694e4:	00000000 	nop
  4694e8:	24a53f78 	addiu	a1,a1,16248
  4694ec:	27c608d8 	addiu	a2,s8,2264
  4694f0:	27c70ad8 	addiu	a3,s8,2776
  4694f4:	8f9983b8 	lw	t9,-31816(gp)
  4694f8:	00000000 	nop
  4694fc:	0320f809 	jalr	t9
  469500:	00000000 	nop
  469504:	8fdc0020 	lw	gp,32(s8)
  469508:	00000000 	nop
		{
		    char cidb[IDTOA_BUF];
		    char gwidb[IDTOA_BUF];

		    idtoa(client_id, cidb, sizeof(cidb));
		    idtoa(&gi.gw_id, gwidb, sizeof(gwidb));
		    DBG_log("TXT %s record for %s: security gateway %s;"
			" ignored because gateway's IP is unspecified"
			, our_TXT_attr, cidb, gwidb);
		});
	    return NULL;	/* we cannot use this record, but it isn't wrong */
  46950c:	00001021 	move	v0,zero
  469510:	10000121 	b	469998 <process_txt_rr+0x8ec>
  469514:	00000000 	nop
	}
    }
    else
    {
	/* We do know the peer's ID (because we are responding)
	 * So we're looking for gateway specs specifying this known ID.
	 */
	if (!same_id(peer_id, &gi.gw_id))
  469518:	27c20838 	addiu	v0,s8,2104
  46951c:	24420040 	addiu	v0,v0,64
  469520:	8fc41710 	lw	a0,5904(s8)
  469524:	00402821 	move	a1,v0
  469528:	8f9980e4 	lw	t9,-32540(gp)
  46952c:	00000000 	nop
  469530:	0320f809 	jalr	t9
  469534:	00000000 	nop
  469538:	8fdc0020 	lw	gp,32(s8)
  46953c:	14400035 	bnez	v0,469614 <process_txt_rr+0x568>
  469540:	00000000 	nop
	{
	    DBG(DBG_DNS,
  469544:	8f8284f8 	lw	v0,-31496(gp)
  469548:	00000000 	nop
  46954c:	8c420000 	lw	v0,0(v0)
  469550:	00000000 	nop
  469554:	30420100 	andi	v0,v0,0x100
  469558:	1040002b 	beqz	v0,469608 <process_txt_rr+0x55c>
  46955c:	00000000 	nop
  469560:	8fc4170c 	lw	a0,5900(s8)
  469564:	27c508d8 	addiu	a1,s8,2264
  469568:	24060200 	li	a2,512
  46956c:	8f998798 	lw	t9,-30824(gp)
  469570:	00000000 	nop
  469574:	0320f809 	jalr	t9
  469578:	00000000 	nop
  46957c:	8fdc0020 	lw	gp,32(s8)
  469580:	27c20838 	addiu	v0,s8,2104
  469584:	24420040 	addiu	v0,v0,64
  469588:	00402021 	move	a0,v0
  46958c:	27c50ad8 	addiu	a1,s8,2776
  469590:	24060200 	li	a2,512
  469594:	8f998798 	lw	t9,-30824(gp)
  469598:	00000000 	nop
  46959c:	0320f809 	jalr	t9
  4695a0:	00000000 	nop
  4695a4:	8fdc0020 	lw	gp,32(s8)
  4695a8:	8fc41710 	lw	a0,5904(s8)
  4695ac:	27c50cd8 	addiu	a1,s8,3288
  4695b0:	24060200 	li	a2,512
  4695b4:	8f998798 	lw	t9,-30824(gp)
  4695b8:	00000000 	nop
  4695bc:	0320f809 	jalr	t9
  4695c0:	00000000 	nop
  4695c4:	8fdc0020 	lw	gp,32(s8)
  4695c8:	27c20cd8 	addiu	v0,s8,3288
  4695cc:	afa20010 	sw	v0,16(sp)
  4695d0:	8f84802c 	lw	a0,-32724(gp)
  4695d4:	00000000 	nop
  4695d8:	248441b4 	addiu	a0,a0,16820
  4695dc:	8f85802c 	lw	a1,-32724(gp)
  4695e0:	00000000 	nop
  4695e4:	24a53f78 	addiu	a1,a1,16248
  4695e8:	27c608d8 	addiu	a2,s8,2264
  4695ec:	27c70ad8 	addiu	a3,s8,2776
  4695f0:	8f9983b8 	lw	t9,-31816(gp)
  4695f4:	00000000 	nop
  4695f8:	0320f809 	jalr	t9
  4695fc:	00000000 	nop
  469600:	8fdc0020 	lw	gp,32(s8)
  469604:	00000000 	nop
		{
		    char cidb[IDTOA_BUF];
		    char gwidb[IDTOA_BUF];
		    char pidb[IDTOA_BUF];

		    idtoa(client_id, cidb, sizeof(cidb));
		    idtoa(&gi.gw_id, gwidb, sizeof(gwidb));
		    idtoa(peer_id, pidb, sizeof(pidb));
		    DBG_log("TXT %s record for %s: security gateway %s;"
			" ignored -- looking to confirm %s as gateway"
			, our_TXT_attr, cidb, gwidb, pidb);
		});
	    return NULL;	/* we cannot use this record, but it isn't wrong */
  469608:	00001021 	move	v0,zero
  46960c:	100000e2 	b	469998 <process_txt_rr+0x8ec>
  469610:	00000000 	nop
	}
    }

    (*goodies)++;
  469614:	8fc21708 	lw	v0,5896(s8)
  469618:	00000000 	nop
  46961c:	8c420000 	lw	v0,0(v0)
  469620:	00000000 	nop
  469624:	24430001 	addiu	v1,v0,1
  469628:	8fc21708 	lw	v0,5896(s8)
  46962c:	00000000 	nop
  469630:	ac430000 	sw	v1,0(v0)

    if (doit)
  469634:	8fc21700 	lw	v0,5888(s8)
  469638:	00000000 	nop
  46963c:	104000d5 	beqz	v0,469994 <process_txt_rr+0x8e8>
  469640:	00000000 	nop
    {
	/* really accept gateway */
	u_char kb[sizeof(str)];	/* plenty of space for binary form of public key */
	chunk_t kbc;
	struct gw_info **gwip;	/* gateway insertion point */

	gi.client_id = *client_id;	/* will need to unshare_id_content */
  469644:	8fc2170c 	lw	v0,5900(s8)
  469648:	27c40850 	addiu	a0,s8,2128
  46964c:	00402821 	move	a1,v0
  469650:	24060028 	li	a2,40
  469654:	8f998a30 	lw	t9,-30160(gp)
  469658:	00000000 	nop
  46965c:	0320f809 	jalr	t9
  469660:	00000000 	nop
  469664:	8fdc0020 	lw	gp,32(s8)
  469668:	00000000 	nop

	/* decode optional key */

	gi.gw_key_present = *p != '\0';
  46966c:	8fc20830 	lw	v0,2096(s8)
  469670:	00000000 	nop
  469674:	90420000 	lbu	v0,0(v0)
  469678:	00000000 	nop
  46967c:	0002102b 	sltu	v0,zero,v0
  469680:	afc208a0 	sw	v0,2208(s8)
	if (gi.gw_key_present)
  469684:	8fc208a0 	lw	v0,2208(s8)
  469688:	00000000 	nop
  46968c:	10400051 	beqz	v0,4697d4 <process_txt_rr+0x728>
  469690:	00000000 	nop
	{
	    /* kkk is base 64 encoding of key */
	    err_t ugh = ttodatav(p, 0, 64, kb, sizeof(kb), &kbc.len
  469694:	24020801 	li	v0,2049
  469698:	afa20010 	sw	v0,16(sp)
  46969c:	27c208d8 	addiu	v0,s8,2264
  4696a0:	24420004 	addiu	v0,v0,4
  4696a4:	afa20014 	sw	v0,20(sp)
  4696a8:	8f8288e4 	lw	v0,-30492(gp)
  4696ac:	00000000 	nop
  4696b0:	afa20018 	sw	v0,24(sp)
  4696b4:	24020400 	li	v0,1024
  4696b8:	afa2001c 	sw	v0,28(sp)
  4696bc:	8fc40830 	lw	a0,2096(s8)
  4696c0:	00002821 	move	a1,zero
  4696c4:	24060040 	li	a2,64
  4696c8:	27c70ed8 	addiu	a3,s8,3800
  4696cc:	8f998998 	lw	t9,-30312(gp)
  4696d0:	00000000 	nop
  4696d4:	0320f809 	jalr	t9
  4696d8:	00000000 	nop
  4696dc:	8fdc0020 	lw	gp,32(s8)
  4696e0:	afc216e0 	sw	v0,5856(s8)
		, diag_space, sizeof(diag_space));

	    if (ugh != NULL)
  4696e4:	8fc216e0 	lw	v0,5856(s8)
  4696e8:	00000000 	nop
  4696ec:	1040000c 	beqz	v0,469720 <process_txt_rr+0x674>
  4696f0:	00000000 	nop
		return builddiag("malformed key data: %s", ugh);
  4696f4:	8f84802c 	lw	a0,-32724(gp)
  4696f8:	00000000 	nop
  4696fc:	2484420c 	addiu	a0,a0,16908
  469700:	8fc516e0 	lw	a1,5856(s8)
  469704:	8f9986dc 	lw	t9,-31012(gp)
  469708:	00000000 	nop
  46970c:	0320f809 	jalr	t9
  469710:	00000000 	nop
  469714:	8fdc0020 	lw	gp,32(s8)
  469718:	1000009f 	b	469998 <process_txt_rr+0x8ec>
  46971c:	00000000 	nop

	    passert(kbc.len < sizeof(kb));
  469720:	8fc208dc 	lw	v0,2268(s8)
  469724:	00000000 	nop
  469728:	2c420801 	sltiu	v0,v0,2049
  46972c:	1440000e 	bnez	v0,469768 <process_txt_rr+0x6bc>
  469730:	00000000 	nop
  469734:	8f84802c 	lw	a0,-32724(gp)
  469738:	00000000 	nop
  46973c:	24844224 	addiu	a0,a0,16932
  469740:	8f85802c 	lw	a1,-32724(gp)
  469744:	00000000 	nop
  469748:	24a53e30 	addiu	a1,a1,15920
  46974c:	2406036d 	li	a2,877
  469750:	8f998bb8 	lw	t9,-29768(gp)
  469754:	00000000 	nop
  469758:	0320f809 	jalr	t9
  46975c:	00000000 	nop
  469760:	8fdc0020 	lw	gp,32(s8)
  469764:	00000000 	nop

	    kbc.ptr = kb;
  469768:	27c20ed8 	addiu	v0,s8,3800
  46976c:	afc208d8 	sw	v0,2264(s8)
	    ugh = unpack_RSA_public_key(&gi.gw_key, &kbc);
  469770:	27c20838 	addiu	v0,s8,2104
  469774:	2442006c 	addiu	v0,v0,108
  469778:	00402021 	move	a0,v0
  46977c:	27c508d8 	addiu	a1,s8,2264
  469780:	8f998bc4 	lw	t9,-29756(gp)
  469784:	00000000 	nop
  469788:	0320f809 	jalr	t9
  46978c:	00000000 	nop
  469790:	8fdc0020 	lw	gp,32(s8)
  469794:	afc216e0 	sw	v0,5856(s8)
	    if (ugh != NULL)
  469798:	8fc216e0 	lw	v0,5856(s8)
  46979c:	00000000 	nop
  4697a0:	1040000c 	beqz	v0,4697d4 <process_txt_rr+0x728>
  4697a4:	00000000 	nop
		return builddiag("invalid key data: %s", ugh);
  4697a8:	8f84802c 	lw	a0,-32724(gp)
  4697ac:	00000000 	nop
  4697b0:	2484423c 	addiu	a0,a0,16956
  4697b4:	8fc516e0 	lw	a1,5856(s8)
  4697b8:	8f9986dc 	lw	t9,-31012(gp)
  4697bc:	00000000 	nop
  4697c0:	0320f809 	jalr	t9
  4697c4:	00000000 	nop
  4697c8:	8fdc0020 	lw	gp,32(s8)
  4697cc:	10000072 	b	469998 <process_txt_rr+0x8ec>
  4697d0:	00000000 	nop
	}

	/* we're home free!  Allocate everything and add to gateways list. */
	gi.refcnt = 1;
  4697d4:	24020001 	li	v0,1
  4697d8:	afc20838 	sw	v0,2104(s8)
	gi.pref = pref;
  4697dc:	8fc20834 	lw	v0,2100(s8)
  4697e0:	00000000 	nop
  4697e4:	afc2083c 	sw	v0,2108(s8)
	gi.dns_auth_level = dns_auth_level;
  4697e8:	8fc21704 	lw	v0,5892(s8)
  4697ec:	00000000 	nop
  4697f0:	afc20840 	sw	v0,2112(s8)
	gi.created_time = now();
  4697f4:	8f998b58 	lw	t9,-29864(gp)
  4697f8:	00000000 	nop
  4697fc:	0320f809 	jalr	t9
  469800:	00000000 	nop
  469804:	8fdc0020 	lw	gp,32(s8)
  469808:	afc20844 	sw	v0,2116(s8)
	gi.last_tried_time = gi.last_worked_time = NO_TIME;
  46980c:	2402fffe 	li	v0,-2
  469810:	afc2084c 	sw	v0,2124(s8)
  469814:	afc20848 	sw	v0,2120(s8)

	/* find insertion point */
	for (gwip = &gateways_from_dns; *gwip != NULL && (*gwip)->pref < pref; gwip = &(*gwip)->next)
  469818:	8f828204 	lw	v0,-32252(gp)
  46981c:	00000000 	nop
  469820:	afc208d4 	sw	v0,2260(s8)
  469824:	8fc208d4 	lw	v0,2260(s8)
  469828:	00000000 	nop
  46982c:	8c420000 	lw	v0,0(v0)
  469830:	00000000 	nop
  469834:	10400015 	beqz	v0,46988c <process_txt_rr+0x7e0>
  469838:	00000000 	nop
  46983c:	8fc208d4 	lw	v0,2260(s8)
  469840:	00000000 	nop
  469844:	8c420000 	lw	v0,0(v0)
  469848:	00000000 	nop
  46984c:	8c430004 	lw	v1,4(v0)
  469850:	8fc20834 	lw	v0,2100(s8)
  469854:	00000000 	nop
  469858:	0062102b 	sltu	v0,v1,v0
  46985c:	14400003 	bnez	v0,46986c <process_txt_rr+0x7c0>
  469860:	00000000 	nop
  469864:	10000009 	b	46988c <process_txt_rr+0x7e0>
  469868:	00000000 	nop
  46986c:	8fc208d4 	lw	v0,2260(s8)
  469870:	00000000 	nop
  469874:	8c420000 	lw	v0,0(v0)
  469878:	00000000 	nop
  46987c:	24420094 	addiu	v0,v0,148
  469880:	afc208d4 	sw	v0,2260(s8)
  469884:	1000ffe7 	b	469824 <process_txt_rr+0x778>
  469888:	00000000 	nop
	    ;

	DBG(DBG_DNS,
  46988c:	8f8284f8 	lw	v0,-31496(gp)
  469890:	00000000 	nop
  469894:	8c420000 	lw	v0,0(v0)
  469898:	00000000 	nop
  46989c:	30420100 	andi	v0,v0,0x100
  4698a0:	1040001f 	beqz	v0,469920 <process_txt_rr+0x874>
  4698a4:	00000000 	nop
  4698a8:	8fc4170c 	lw	a0,5900(s8)
  4698ac:	27c508e0 	addiu	a1,s8,2272
  4698b0:	24060200 	li	a2,512
  4698b4:	8f998798 	lw	t9,-30824(gp)
  4698b8:	00000000 	nop
  4698bc:	0320f809 	jalr	t9
  4698c0:	00000000 	nop
  4698c4:	8fdc0020 	lw	gp,32(s8)
  4698c8:	27c20838 	addiu	v0,s8,2104
  4698cc:	24420040 	addiu	v0,v0,64
  4698d0:	00402021 	move	a0,v0
  4698d4:	27c50ae0 	addiu	a1,s8,2784
  4698d8:	24060200 	li	a2,512
  4698dc:	8f998798 	lw	t9,-30824(gp)
  4698e0:	00000000 	nop
  4698e4:	0320f809 	jalr	t9
  4698e8:	00000000 	nop
  4698ec:	8fdc0020 	lw	gp,32(s8)
  4698f0:	00000000 	nop
  4698f4:	8f84802c 	lw	a0,-32724(gp)
  4698f8:	00000000 	nop
  4698fc:	24844254 	addiu	a0,a0,16980
  469900:	27c508e0 	addiu	a1,s8,2272
  469904:	27c60ae0 	addiu	a2,s8,2784
  469908:	8f9983b8 	lw	t9,-31816(gp)
  46990c:	00000000 	nop
  469910:	0320f809 	jalr	t9
  469914:	00000000 	nop
  469918:	8fdc0020 	lw	gp,32(s8)
  46991c:	00000000 	nop
	    {
		char cidb[IDTOA_BUF];
		char gwidb[IDTOA_BUF];

		idtoa(client_id, cidb, sizeof(cidb));
		idtoa(&gi.gw_id, gwidb, sizeof(gwidb));
		/* should print key, but it is too long */
		DBG_log("gateway for %s is %s"
		    , cidb, gwidb);
	    });

	gi.next = *gwip;
  469920:	8fc208d4 	lw	v0,2260(s8)
  469924:	00000000 	nop
  469928:	8c420000 	lw	v0,0(v0)
  46992c:	00000000 	nop
  469930:	afc208cc 	sw	v0,2252(s8)
	*gwip = clone_thing(gi, "gateway info");
  469934:	8fd008d4 	lw	s0,2260(s8)
  469938:	27c40838 	addiu	a0,s8,2104
  46993c:	24050098 	li	a1,152
  469940:	8f86802c 	lw	a2,-32724(gp)
  469944:	00000000 	nop
  469948:	24c6426c 	addiu	a2,a2,17004
  46994c:	8f998c04 	lw	t9,-29692(gp)
  469950:	00000000 	nop
  469954:	0320f809 	jalr	t9
  469958:	00000000 	nop
  46995c:	8fdc0020 	lw	gp,32(s8)
  469960:	ae020000 	sw	v0,0(s0)
	unshare_id_content(&gateways_from_dns->client_id);
  469964:	8f828204 	lw	v0,-32252(gp)
  469968:	00000000 	nop
  46996c:	8c420000 	lw	v0,0(v0)
  469970:	00000000 	nop
  469974:	24420018 	addiu	v0,v0,24
  469978:	00402021 	move	a0,v0
  46997c:	8f99847c 	lw	t9,-31620(gp)
  469980:	00000000 	nop
  469984:	0320f809 	jalr	t9
  469988:	00000000 	nop
  46998c:	8fdc0020 	lw	gp,32(s8)
  469990:	00000000 	nop
    }

    return NULL;
  469994:	00001021 	move	v0,zero
}
  469998:	03c0e821 	move	sp,s8
  46999c:	8fbf16f4 	lw	ra,5876(sp)
  4699a0:	8fbe16f0 	lw	s8,5872(sp)
  4699a4:	8fb016e8 	lw	s0,5864(sp)
  4699a8:	27bd16f8 	addiu	sp,sp,5880
  4699ac:	03e00008 	jr	ra
  4699b0:	00000000 	nop

004699b4 <gw_addref>:
  4699b4:	3c1c0fba 	lui	gp,0xfba
  4699b8:	279c2fbc 	addiu	gp,gp,12220
  4699bc:	0399e021 	addu	gp,gp,t9
  4699c0:	27bdffe8 	addiu	sp,sp,-24
  4699c4:	afbc0000 	sw	gp,0(sp)
  4699c8:	afbe0014 	sw	s8,20(sp)
  4699cc:	afbc0010 	sw	gp,16(sp)
  4699d0:	03a0f021 	move	s8,sp
  4699d4:	afc40018 	sw	a0,24(s8)

void
gw_addref(struct gw_info *gw)
{
    if (gw != NULL)
  4699d8:	8fc20018 	lw	v0,24(s8)
  4699dc:	00000000 	nop
  4699e0:	10400009 	beqz	v0,469a08 <gw_addref+0x54>
  4699e4:	00000000 	nop
	gw->refcnt++;
  4699e8:	8fc20018 	lw	v0,24(s8)
  4699ec:	00000000 	nop
  4699f0:	8c420000 	lw	v0,0(v0)
  4699f4:	00000000 	nop
  4699f8:	24430001 	addiu	v1,v0,1
  4699fc:	8fc20018 	lw	v0,24(s8)
  469a00:	00000000 	nop
  469a04:	ac430000 	sw	v1,0(v0)
}
  469a08:	03c0e821 	move	sp,s8
  469a0c:	8fbe0014 	lw	s8,20(sp)
  469a10:	27bd0018 	addiu	sp,sp,24
  469a14:	03e00008 	jr	ra
  469a18:	00000000 	nop

00469a1c <gw_delref>:
  469a1c:	3c1c0fba 	lui	gp,0xfba
  469a20:	279c2f54 	addiu	gp,gp,12116
  469a24:	0399e021 	addu	gp,gp,t9
  469a28:	27bdffd0 	addiu	sp,sp,-48
  469a2c:	afbc0010 	sw	gp,16(sp)
  469a30:	afbf0028 	sw	ra,40(sp)
  469a34:	afbe0024 	sw	s8,36(sp)
  469a38:	afbc0020 	sw	gp,32(sp)
  469a3c:	03a0f021 	move	s8,sp
  469a40:	afc40030 	sw	a0,48(s8)

void
gw_delref(struct gw_info **gwp)
{
    struct gw_info *gw = *gwp;
  469a44:	8fc20030 	lw	v0,48(s8)
  469a48:	00000000 	nop
  469a4c:	8c420000 	lw	v0,0(v0)
  469a50:	00000000 	nop
  469a54:	afc20018 	sw	v0,24(s8)

    if (gw != NULL)
  469a58:	8fc20018 	lw	v0,24(s8)
  469a5c:	00000000 	nop
  469a60:	1040005a 	beqz	v0,469bcc <gw_delref+0x1b0>
  469a64:	00000000 	nop
    {
	passert(gw->refcnt != 0);
  469a68:	8fc20018 	lw	v0,24(s8)
  469a6c:	00000000 	nop
  469a70:	8c420000 	lw	v0,0(v0)
  469a74:	00000000 	nop
  469a78:	1440000e 	bnez	v0,469ab4 <gw_delref+0x98>
  469a7c:	00000000 	nop
  469a80:	8f84802c 	lw	a0,-32724(gp)
  469a84:	00000000 	nop
  469a88:	2484427c 	addiu	a0,a0,17020
  469a8c:	8f85802c 	lw	a1,-32724(gp)
  469a90:	00000000 	nop
  469a94:	24a53e30 	addiu	a1,a1,15920
  469a98:	240603a2 	li	a2,930
  469a9c:	8f998bb8 	lw	t9,-29768(gp)
  469aa0:	00000000 	nop
  469aa4:	0320f809 	jalr	t9
  469aa8:	00000000 	nop
  469aac:	8fdc0010 	lw	gp,16(s8)
  469ab0:	00000000 	nop
	gw->refcnt--;
  469ab4:	8fc20018 	lw	v0,24(s8)
  469ab8:	00000000 	nop
  469abc:	8c420000 	lw	v0,0(v0)
  469ac0:	00000000 	nop
  469ac4:	2443ffff 	addiu	v1,v0,-1
  469ac8:	8fc20018 	lw	v0,24(s8)
  469acc:	00000000 	nop
  469ad0:	ac430000 	sw	v1,0(v0)
	if (gw->refcnt == 0)
  469ad4:	8fc20018 	lw	v0,24(s8)
  469ad8:	00000000 	nop
  469adc:	8c420000 	lw	v0,0(v0)
  469ae0:	00000000 	nop
  469ae4:	14400036 	bnez	v0,469bc0 <gw_delref+0x1a4>
  469ae8:	00000000 	nop
	{
	    free_id_content(&gw->client_id);
  469aec:	8fc20018 	lw	v0,24(s8)
  469af0:	00000000 	nop
  469af4:	24420018 	addiu	v0,v0,24
  469af8:	00402021 	move	a0,v0
  469afc:	8f9982f0 	lw	t9,-32016(gp)
  469b00:	00000000 	nop
  469b04:	0320f809 	jalr	t9
  469b08:	00000000 	nop
  469b0c:	8fdc0010 	lw	gp,16(s8)
  469b10:	00000000 	nop
	    free_id_content(&gw->gw_id);
  469b14:	8fc20018 	lw	v0,24(s8)
  469b18:	00000000 	nop
  469b1c:	24420040 	addiu	v0,v0,64
  469b20:	00402021 	move	a0,v0
  469b24:	8f9982f0 	lw	t9,-32016(gp)
  469b28:	00000000 	nop
  469b2c:	0320f809 	jalr	t9
  469b30:	00000000 	nop
  469b34:	8fdc0010 	lw	gp,16(s8)
  469b38:	00000000 	nop
	    if (gw->gw_key_present)
  469b3c:	8fc20018 	lw	v0,24(s8)
  469b40:	00000000 	nop
  469b44:	8c420068 	lw	v0,104(v0)
  469b48:	00000000 	nop
  469b4c:	1040000b 	beqz	v0,469b7c <gw_delref+0x160>
  469b50:	00000000 	nop
		free_RSA_public_content(&gw->gw_key);
  469b54:	8fc20018 	lw	v0,24(s8)
  469b58:	00000000 	nop
  469b5c:	2442006c 	addiu	v0,v0,108
  469b60:	00402021 	move	a0,v0
  469b64:	8f9986ac 	lw	t9,-31060(gp)
  469b68:	00000000 	nop
  469b6c:	0320f809 	jalr	t9
  469b70:	00000000 	nop
  469b74:	8fdc0010 	lw	gp,16(s8)
  469b78:	00000000 	nop
	    gw_delref(&gw->next);
  469b7c:	8fc20018 	lw	v0,24(s8)
  469b80:	00000000 	nop
  469b84:	24420094 	addiu	v0,v0,148
  469b88:	00402021 	move	a0,v0
  469b8c:	8f9983d8 	lw	t9,-31784(gp)
  469b90:	00000000 	nop
  469b94:	0320f809 	jalr	t9
  469b98:	00000000 	nop
  469b9c:	8fdc0010 	lw	gp,16(s8)
  469ba0:	00000000 	nop
	    pfree(gw);	/* trickery could make this a tail-call */
  469ba4:	8fc40018 	lw	a0,24(s8)
  469ba8:	8f998094 	lw	t9,-32620(gp)
  469bac:	00000000 	nop
  469bb0:	0320f809 	jalr	t9
  469bb4:	00000000 	nop
  469bb8:	8fdc0010 	lw	gp,16(s8)
  469bbc:	00000000 	nop
	}
	*gwp = NULL;
  469bc0:	8fc20030 	lw	v0,48(s8)
  469bc4:	00000000 	nop
  469bc8:	ac400000 	sw	zero,0(v0)
    }
}
  469bcc:	03c0e821 	move	sp,s8
  469bd0:	8fbf0028 	lw	ra,40(sp)
  469bd4:	8fbe0024 	lw	s8,36(sp)
  469bd8:	27bd0030 	addiu	sp,sp,48
  469bdc:	03e00008 	jr	ra
  469be0:	00000000 	nop

00469be4 <process_answer_section>:
  469be4:	3c1c0fba 	lui	gp,0xfba
  469be8:	279c2d8c 	addiu	gp,gp,11660
  469bec:	0399e021 	addu	gp,gp,t9
  469bf0:	27bdff80 	addiu	sp,sp,-128
  469bf4:	afbc0020 	sw	gp,32(sp)
  469bf8:	afbf0078 	sw	ra,120(sp)
  469bfc:	afbe0074 	sw	s8,116(sp)
  469c00:	afbc0070 	sw	gp,112(sp)
  469c04:	03a0f021 	move	s8,sp
  469c08:	afc40080 	sw	a0,128(s8)
  469c0c:	afc50084 	sw	a1,132(s8)
  469c10:	afc60088 	sw	a2,136(s8)
  469c14:	00e01021 	move	v0,a3
  469c18:	a7c20028 	sh	v0,40(s8)

static err_t
process_answer_section(pb_stream *pbs
, bool doit	/* should we capture information? */
, enum dns_auth_level *dns_auth_level
, u_int16_t ancount	/* number of RRs in the answer section */
, int type	/* type of RR of interest */
, const struct id *id	/* subject of query (i.e. client) */
, const struct id *sgw_id)	/* peer's ID */
{
    unsigned c;
    int goodies = 0;
  469c1c:	afc00030 	sw	zero,48(s8)

    DBG(DBG_DNS, DBG_log("*Answer Section:"));
  469c20:	8f8284f8 	lw	v0,-31496(gp)
  469c24:	00000000 	nop
  469c28:	8c420000 	lw	v0,0(v0)
  469c2c:	00000000 	nop
  469c30:	30420100 	andi	v0,v0,0x100
  469c34:	1040000a 	beqz	v0,469c60 <process_answer_section+0x7c>
  469c38:	00000000 	nop
  469c3c:	8f84802c 	lw	a0,-32724(gp)
  469c40:	00000000 	nop
  469c44:	2484428c 	addiu	a0,a0,17036
  469c48:	8f9983b8 	lw	t9,-31816(gp)
  469c4c:	00000000 	nop
  469c50:	0320f809 	jalr	t9
  469c54:	00000000 	nop
  469c58:	8fdc0020 	lw	gp,32(s8)
  469c5c:	00000000 	nop

    for (c = 0; c != ancount; c++)
  469c60:	afc0002c 	sw	zero,44(s8)
  469c64:	97c30028 	lhu	v1,40(s8)
  469c68:	8fc2002c 	lw	v0,44(s8)
  469c6c:	00000000 	nop
  469c70:	14430003 	bne	v0,v1,469c80 <process_answer_section+0x9c>
  469c74:	00000000 	nop
  469c78:	100000db 	b	469fe8 <process_answer_section+0x404>
  469c7c:	00000000 	nop
    {
	struct rr_fixed rrf;
	size_t tail;

	/* ??? do we need to match the name? */

	TRY(eat_name_helpfully(pbs, "Answer Section"));
  469c80:	8fc40080 	lw	a0,128(s8)
  469c84:	8f85802c 	lw	a1,-32724(gp)
  469c88:	00000000 	nop
  469c8c:	24a542a0 	addiu	a1,a1,17056
  469c90:	8f998040 	lw	t9,-32704(gp)
  469c94:	00000000 	nop
  469c98:	2739855c 	addiu	t9,t9,-31396
  469c9c:	00000000 	nop
  469ca0:	0320f809 	jalr	t9
  469ca4:	00000000 	nop
  469ca8:	8fdc0020 	lw	gp,32(s8)
  469cac:	afc2004c 	sw	v0,76(s8)
  469cb0:	8fc2004c 	lw	v0,76(s8)
  469cb4:	00000000 	nop
  469cb8:	10400004 	beqz	v0,469ccc <process_answer_section+0xe8>
  469cbc:	00000000 	nop
  469cc0:	8fc2004c 	lw	v0,76(s8)
  469cc4:	100000e4 	b	46a058 <process_answer_section+0x474>
  469cc8:	00000000 	nop

	if (!in_struct(&rrf, &rr_fixed_desc, pbs, NULL))
  469ccc:	27c40038 	addiu	a0,s8,56
  469cd0:	8f858018 	lw	a1,-32744(gp)
  469cd4:	00000000 	nop
  469cd8:	24a53458 	addiu	a1,a1,13400
  469cdc:	8fc60080 	lw	a2,128(s8)
  469ce0:	00003821 	move	a3,zero
  469ce4:	8f998b3c 	lw	t9,-29892(gp)
  469ce8:	00000000 	nop
  469cec:	0320f809 	jalr	t9
  469cf0:	00000000 	nop
  469cf4:	8fdc0020 	lw	gp,32(s8)
  469cf8:	14400006 	bnez	v0,469d14 <process_answer_section+0x130>
  469cfc:	00000000 	nop
	    return "failed to get fixed part of Answer Section Resource Record";
  469d00:	8f82802c 	lw	v0,-32724(gp)
  469d04:	00000000 	nop
  469d08:	244242b0 	addiu	v0,v0,17072
  469d0c:	100000d2 	b	46a058 <process_answer_section+0x474>
  469d10:	00000000 	nop

	if (rrf.rdlength > pbs_left(pbs))
  469d14:	97c40040 	lhu	a0,64(s8)
  469d18:	8fc20080 	lw	v0,128(s8)
  469d1c:	00000000 	nop
  469d20:	8c430014 	lw	v1,20(v0)
  469d24:	8fc20080 	lw	v0,128(s8)
  469d28:	00000000 	nop
  469d2c:	8c420010 	lw	v0,16(v0)
  469d30:	00000000 	nop
  469d34:	00621023 	subu	v0,v1,v0
  469d38:	0044102b 	sltu	v0,v0,a0
  469d3c:	10400006 	beqz	v0,469d58 <process_answer_section+0x174>
  469d40:	00000000 	nop
	    return "RD Length extends beyond end of message";
  469d44:	8f82802c 	lw	v0,-32724(gp)
  469d48:	00000000 	nop
  469d4c:	244242ec 	addiu	v0,v0,17132
  469d50:	100000c1 	b	46a058 <process_answer_section+0x474>
  469d54:	00000000 	nop

	/* ??? should we care about ttl? */

	tail = rrf.rdlength;
  469d58:	97c20040 	lhu	v0,64(s8)
  469d5c:	00000000 	nop
  469d60:	afc20048 	sw	v0,72(s8)

	if (rrf.type == type && rrf.class == C_IN)
  469d64:	97c30038 	lhu	v1,56(s8)
  469d68:	8fc20090 	lw	v0,144(s8)
  469d6c:	00000000 	nop
  469d70:	1462008b 	bne	v1,v0,469fa0 <process_answer_section+0x3bc>
  469d74:	00000000 	nop
  469d78:	97c3003a 	lhu	v1,58(s8)
  469d7c:	24020001 	li	v0,1
  469d80:	14620087 	bne	v1,v0,469fa0 <process_answer_section+0x3bc>
  469d84:	00000000 	nop
	{
	    err_t ugh;

	    switch (type)
  469d88:	8fc20090 	lw	v0,144(s8)
  469d8c:	00000000 	nop
  469d90:	afc20068 	sw	v0,104(s8)
  469d94:	24020018 	li	v0,24
  469d98:	8fc30068 	lw	v1,104(s8)
  469d9c:	00000000 	nop
  469da0:	10620045 	beq	v1,v0,469eb8 <process_answer_section+0x2d4>
  469da4:	00000000 	nop
  469da8:	8fc30068 	lw	v1,104(s8)
  469dac:	00000000 	nop
  469db0:	28620019 	slti	v0,v1,25
  469db4:	10400008 	beqz	v0,469dd8 <process_answer_section+0x1f4>
  469db8:	00000000 	nop
  469dbc:	24020010 	li	v0,16
  469dc0:	8fc30068 	lw	v1,104(s8)
  469dc4:	00000000 	nop
  469dc8:	10620021 	beq	v1,v0,469e50 <process_answer_section+0x26c>
  469dcc:	00000000 	nop
  469dd0:	10000062 	b	469f5c <process_answer_section+0x378>
  469dd4:	00000000 	nop
  469dd8:	24020019 	li	v0,25
  469ddc:	8fc30068 	lw	v1,104(s8)
  469de0:	00000000 	nop
  469de4:	10620003 	beq	v1,v0,469df4 <process_answer_section+0x210>
  469de8:	00000000 	nop
  469dec:	1000005b 	b	469f5c <process_answer_section+0x378>
  469df0:	00000000 	nop
	    {
	    case T_KEY:
		ugh = process_key_rr(pbs->cur, tail, doit, *dns_auth_level
  469df4:	27c20030 	addiu	v0,s8,48
  469df8:	afa20010 	sw	v0,16(sp)
  469dfc:	8fc20094 	lw	v0,148(s8)
  469e00:	00000000 	nop
  469e04:	afa20014 	sw	v0,20(sp)
  469e08:	8fc20080 	lw	v0,128(s8)
  469e0c:	00000000 	nop
  469e10:	8c440010 	lw	a0,16(v0)
  469e14:	8fc50048 	lw	a1,72(s8)
  469e18:	8fc60084 	lw	a2,132(s8)
  469e1c:	8fc20088 	lw	v0,136(s8)
  469e20:	00000000 	nop
  469e24:	8c470000 	lw	a3,0(v0)
  469e28:	8f998040 	lw	t9,-32704(gp)
  469e2c:	00000000 	nop
  469e30:	27398a1c 	addiu	t9,t9,-30180
  469e34:	00000000 	nop
  469e38:	0320f809 	jalr	t9
  469e3c:	00000000 	nop
  469e40:	8fdc0020 	lw	gp,32(s8)
  469e44:	afc2004c 	sw	v0,76(s8)
		    , &goodies, id);
		break;
  469e48:	1000004e 	b	469f84 <process_answer_section+0x3a0>
  469e4c:	00000000 	nop
	    case T_TXT:
		ugh = process_txt_rr(pbs->cur, tail, doit, *dns_auth_level
  469e50:	27c20030 	addiu	v0,s8,48
  469e54:	afa20010 	sw	v0,16(sp)
  469e58:	8fc20094 	lw	v0,148(s8)
  469e5c:	00000000 	nop
  469e60:	afa20014 	sw	v0,20(sp)
  469e64:	8fc20098 	lw	v0,152(s8)
  469e68:	00000000 	nop
  469e6c:	afa20018 	sw	v0,24(sp)
  469e70:	8fc20080 	lw	v0,128(s8)
  469e74:	00000000 	nop
  469e78:	8c440010 	lw	a0,16(v0)
  469e7c:	8fc50048 	lw	a1,72(s8)
  469e80:	8fc60084 	lw	a2,132(s8)
  469e84:	8fc20088 	lw	v0,136(s8)
  469e88:	00000000 	nop
  469e8c:	8c470000 	lw	a3,0(v0)
  469e90:	8f998040 	lw	t9,-32704(gp)
  469e94:	00000000 	nop
  469e98:	273990ac 	addiu	t9,t9,-28500
  469e9c:	00000000 	nop
  469ea0:	0320f809 	jalr	t9
  469ea4:	00000000 	nop
  469ea8:	8fdc0020 	lw	gp,32(s8)
  469eac:	afc2004c 	sw	v0,76(s8)
		    , &goodies, id, sgw_id);
		break;
  469eb0:	10000034 	b	469f84 <process_answer_section+0x3a0>
  469eb4:	00000000 	nop
	    case T_SIG:
		/* Check if SIG RR authenticates what we are learning.
		 * The RRset covered by a SIG must have the same owner,
		 * class, and type.
		 * For us, the class is always C_IN, so that matches.
		 * We decode the SIG RR's fixed part to check
		 * that the type_covered field matches our query type
		 * (this may be redundant).
		 * We don't check the owner (apparently this is the
		 * name on the record) -- we assume that it matches
		 * or we would not have been given this SIG in the
		 * Answer Section.
		 *
		 * We only look on first pass, and only if we've something
		 * to learn.  This cuts down on useless decoding.
		 */
		if (!doit && *dns_auth_level == DAL_UNSIGNED)
  469eb8:	8fc20084 	lw	v0,132(s8)
  469ebc:	00000000 	nop
  469ec0:	14400030 	bnez	v0,469f84 <process_answer_section+0x3a0>
  469ec4:	00000000 	nop
  469ec8:	8fc20088 	lw	v0,136(s8)
  469ecc:	00000000 	nop
  469ed0:	8c420000 	lw	v0,0(v0)
  469ed4:	00000000 	nop
  469ed8:	1440002a 	bnez	v0,469f84 <process_answer_section+0x3a0>
  469edc:	00000000 	nop
		{
		    struct sig_rdata sr;

		    if (!in_struct(&sr, &sig_rdata_desc, pbs, NULL))
  469ee0:	27c40050 	addiu	a0,s8,80
  469ee4:	8f858018 	lw	a1,-32744(gp)
  469ee8:	00000000 	nop
  469eec:	24a53530 	addiu	a1,a1,13616
  469ef0:	8fc60080 	lw	a2,128(s8)
  469ef4:	00003821 	move	a3,zero
  469ef8:	8f998b3c 	lw	t9,-29892(gp)
  469efc:	00000000 	nop
  469f00:	0320f809 	jalr	t9
  469f04:	00000000 	nop
  469f08:	8fdc0020 	lw	gp,32(s8)
  469f0c:	14400008 	bnez	v0,469f30 <process_answer_section+0x34c>
  469f10:	00000000 	nop
			ugh = "failed to get fixed part of SIG Resource Record RDATA";
  469f14:	8f82802c 	lw	v0,-32724(gp)
  469f18:	00000000 	nop
  469f1c:	24424314 	addiu	v0,v0,17172
  469f20:	00000000 	nop
  469f24:	afc2004c 	sw	v0,76(s8)
  469f28:	10000016 	b	469f84 <process_answer_section+0x3a0>
  469f2c:	00000000 	nop
		    else if (sr.type_covered == type)
  469f30:	97c30050 	lhu	v1,80(s8)
  469f34:	8fc20090 	lw	v0,144(s8)
  469f38:	00000000 	nop
  469f3c:	14620011 	bne	v1,v0,469f84 <process_answer_section+0x3a0>
  469f40:	00000000 	nop
			*dns_auth_level = DAL_SIGNED;
  469f44:	24030002 	li	v1,2
  469f48:	8fc20088 	lw	v0,136(s8)
  469f4c:	00000000 	nop
  469f50:	ac430000 	sw	v1,0(v0)
		}
		break;
  469f54:	1000000b 	b	469f84 <process_answer_section+0x3a0>
  469f58:	00000000 	nop
	    default:
		ugh = builddiag("unexpected RR type %d", type);
  469f5c:	8f84802c 	lw	a0,-32724(gp)
  469f60:	00000000 	nop
  469f64:	2484434c 	addiu	a0,a0,17228
  469f68:	8fc50090 	lw	a1,144(s8)
  469f6c:	8f9986dc 	lw	t9,-31012(gp)
  469f70:	00000000 	nop
  469f74:	0320f809 	jalr	t9
  469f78:	00000000 	nop
  469f7c:	8fdc0020 	lw	gp,32(s8)
  469f80:	afc2004c 	sw	v0,76(s8)
		break;
	    }
	    if (ugh != NULL)
  469f84:	8fc2004c 	lw	v0,76(s8)
  469f88:	00000000 	nop
  469f8c:	10400004 	beqz	v0,469fa0 <process_answer_section+0x3bc>
  469f90:	00000000 	nop
		return ugh;
  469f94:	8fc2004c 	lw	v0,76(s8)
  469f98:	1000002f 	b	46a058 <process_answer_section+0x474>
  469f9c:	00000000 	nop
	}
	in_raw(NULL, tail, pbs, "RR RDATA");
  469fa0:	00002021 	move	a0,zero
  469fa4:	8fc50048 	lw	a1,72(s8)
  469fa8:	8fc60080 	lw	a2,128(s8)
  469fac:	8f87802c 	lw	a3,-32724(gp)
  469fb0:	00000000 	nop
  469fb4:	24e74364 	addiu	a3,a3,17252
  469fb8:	8f99867c 	lw	t9,-31108(gp)
  469fbc:	00000000 	nop
  469fc0:	0320f809 	jalr	t9
  469fc4:	00000000 	nop
  469fc8:	8fdc0020 	lw	gp,32(s8)
  469fcc:	00000000 	nop
  469fd0:	8fc2002c 	lw	v0,44(s8)
  469fd4:	00000000 	nop
  469fd8:	24420001 	addiu	v0,v0,1
  469fdc:	afc2002c 	sw	v0,44(s8)
  469fe0:	1000ff20 	b	469c64 <process_answer_section+0x80>
  469fe4:	00000000 	nop
    }

    return goodies > 0? NULL
  469fe8:	8fc20030 	lw	v0,48(s8)
  469fec:	00000000 	nop
  469ff0:	1c400016 	bgtz	v0,46a04c <process_answer_section+0x468>
  469ff4:	00000000 	nop
  469ff8:	8fc40090 	lw	a0,144(s8)
  469ffc:	8f998040 	lw	t9,-32704(gp)
  46a000:	00000000 	nop
  46a004:	27398084 	addiu	t9,t9,-32636
  46a008:	00000000 	nop
  46a00c:	0320f809 	jalr	t9
  46a010:	00000000 	nop
  46a014:	8fdc0020 	lw	gp,32(s8)
  46a018:	00000000 	nop
  46a01c:	8f84802c 	lw	a0,-32724(gp)
  46a020:	00000000 	nop
  46a024:	24844370 	addiu	a0,a0,17264
  46a028:	00402821 	move	a1,v0
  46a02c:	8f9986dc 	lw	t9,-31012(gp)
  46a030:	00000000 	nop
  46a034:	0320f809 	jalr	t9
  46a038:	00000000 	nop
  46a03c:	8fdc0020 	lw	gp,32(s8)
  46a040:	afc2006c 	sw	v0,108(s8)
  46a044:	10000002 	b	46a050 <process_answer_section+0x46c>
  46a048:	00000000 	nop
  46a04c:	afc0006c 	sw	zero,108(s8)
  46a050:	8fc2006c 	lw	v0,108(s8)
  46a054:	00000000 	nop
	: builddiag("no suitable %s record found in DNS", rr_typename(type));
}
  46a058:	03c0e821 	move	sp,s8
  46a05c:	8fbf0078 	lw	ra,120(sp)
  46a060:	8fbe0074 	lw	s8,116(sp)
  46a064:	27bd0080 	addiu	sp,sp,128
  46a068:	03e00008 	jr	ra
  46a06c:	00000000 	nop

0046a070 <process_dns_answer>:
  46a070:	3c1c0fba 	lui	gp,0xfba
  46a074:	279c2900 	addiu	gp,gp,10496
  46a078:	0399e021 	addu	gp,gp,t9
  46a07c:	27bdff40 	addiu	sp,sp,-192
  46a080:	afbc0020 	sw	gp,32(sp)
  46a084:	afbf00b8 	sw	ra,184(sp)
  46a088:	afbe00b4 	sw	s8,180(sp)
  46a08c:	afbc00b0 	sw	gp,176(sp)
  46a090:	03a0f021 	move	s8,sp
  46a094:	afc400c0 	sw	a0,192(s8)
  46a098:	afc500c4 	sw	a1,196(s8)
  46a09c:	afc600c8 	sw	a2,200(s8)
  46a0a0:	afc700cc 	sw	a3,204(s8)

/* process DNS answer -- TXT or KEY query */

static err_t
process_dns_answer(const struct id *id	/* subject of query */
, const struct id *sgw_id	/* security gw, if fixed */
, u_char ans[], int anslen
, int type)	/* type of record being sought */
{
    int r;	/* all-purpose return value holder */
    u_int16_t c;	/* number of current RR in current answer section */
    pb_stream pbs;
    u_int8_t *ans_start;	/* saved position of answer section */
    struct qr_header qr_header;
    enum dns_auth_level dns_auth_level;

    init_pbs(&pbs, ans, anslen, "Query Response Message");
  46a0a4:	27c40030 	addiu	a0,s8,48
  46a0a8:	8fc500c8 	lw	a1,200(s8)
  46a0ac:	8fc600cc 	lw	a2,204(s8)
  46a0b0:	8f87802c 	lw	a3,-32724(gp)
  46a0b4:	00000000 	nop
  46a0b8:	24e74394 	addiu	a3,a3,17300
  46a0bc:	8f998364 	lw	t9,-31900(gp)
  46a0c0:	00000000 	nop
  46a0c4:	0320f809 	jalr	t9
  46a0c8:	00000000 	nop
  46a0cc:	8fdc0020 	lw	gp,32(s8)
  46a0d0:	00000000 	nop

    /* decode and check header */

    if (!in_struct(&qr_header, &qr_header_desc, &pbs, NULL))
  46a0d4:	27c40058 	addiu	a0,s8,88
  46a0d8:	8f858018 	lw	a1,-32744(gp)
  46a0dc:	00000000 	nop
  46a0e0:	24a53380 	addiu	a1,a1,13184
  46a0e4:	27c60030 	addiu	a2,s8,48
  46a0e8:	00003821 	move	a3,zero
  46a0ec:	8f998b3c 	lw	t9,-29892(gp)
  46a0f0:	00000000 	nop
  46a0f4:	0320f809 	jalr	t9
  46a0f8:	00000000 	nop
  46a0fc:	8fdc0020 	lw	gp,32(s8)
  46a100:	14400006 	bnez	v0,46a11c <process_dns_answer+0xac>
  46a104:	00000000 	nop
	return "malformed header";
  46a108:	8f82802c 	lw	v0,-32724(gp)
  46a10c:	00000000 	nop
  46a110:	244243ac 	addiu	v0,v0,17324
  46a114:	100001bc 	b	46a808 <process_dns_answer+0x798>
  46a118:	00000000 	nop

    /* ID: nothing to do with us */

    /* stuff -- lots of things */
    if ((qr_header.stuff & QRS_QR) == 0)
  46a11c:	97c2005a 	lhu	v0,90(s8)
  46a120:	00000000 	nop
  46a124:	30428000 	andi	v0,v0,0x8000
  46a128:	3042ffff 	andi	v0,v0,0xffff
  46a12c:	14400006 	bnez	v0,46a148 <process_dns_answer+0xd8>
  46a130:	00000000 	nop
	return "not a response?!?";
  46a134:	8f82802c 	lw	v0,-32724(gp)
  46a138:	00000000 	nop
  46a13c:	244243c0 	addiu	v0,v0,17344
  46a140:	100001b1 	b	46a808 <process_dns_answer+0x798>
  46a144:	00000000 	nop

    if (((qr_header.stuff >> QRS_OPCODE_SHIFT) & QRS_OPCODE_MASK) != QRSO_QUERY)
  46a148:	97c2005a 	lhu	v0,90(s8)
  46a14c:	00000000 	nop
  46a150:	000212c2 	srl	v0,v0,0xb
  46a154:	3042000f 	andi	v0,v0,0xf
  46a158:	3042ffff 	andi	v0,v0,0xffff
  46a15c:	10400006 	beqz	v0,46a178 <process_dns_answer+0x108>
  46a160:	00000000 	nop
	return "unexpected opcode";
  46a164:	8f82802c 	lw	v0,-32724(gp)
  46a168:	00000000 	nop
  46a16c:	244243d4 	addiu	v0,v0,17364
  46a170:	100001a5 	b	46a808 <process_dns_answer+0x798>
  46a174:	00000000 	nop

    /* I don't think we care about AA */

    if (qr_header.stuff & QRS_TC)
  46a178:	97c2005a 	lhu	v0,90(s8)
  46a17c:	00000000 	nop
  46a180:	30420200 	andi	v0,v0,0x200
  46a184:	3042ffff 	andi	v0,v0,0xffff
  46a188:	10400006 	beqz	v0,46a1a4 <process_dns_answer+0x134>
  46a18c:	00000000 	nop
	return "response truncated";
  46a190:	8f82802c 	lw	v0,-32724(gp)
  46a194:	00000000 	nop
  46a198:	244243e8 	addiu	v0,v0,17384
  46a19c:	1000019a 	b	46a808 <process_dns_answer+0x798>
  46a1a0:	00000000 	nop

    /* I don't think we care about RD, RA, or CD */

    /* AD means "authentic data" */
    dns_auth_level = qr_header.stuff & QRS_AD? DAL_UNSIGNED : DAL_NOTSEC;
  46a1a4:	97c2005a 	lhu	v0,90(s8)
  46a1a8:	00000000 	nop
  46a1ac:	00021142 	srl	v0,v0,0x5
  46a1b0:	3042ffff 	andi	v0,v0,0xffff
  46a1b4:	38420001 	xori	v0,v0,0x1
  46a1b8:	30420001 	andi	v0,v0,0x1
  46a1bc:	afc20068 	sw	v0,104(s8)

    if (qr_header.stuff & QRS_Z)
  46a1c0:	97c2005a 	lhu	v0,90(s8)
  46a1c4:	00000000 	nop
  46a1c8:	30420040 	andi	v0,v0,0x40
  46a1cc:	3042ffff 	andi	v0,v0,0xffff
  46a1d0:	10400006 	beqz	v0,46a1ec <process_dns_answer+0x17c>
  46a1d4:	00000000 	nop
	return "Z bit is not zero";
  46a1d8:	8f82802c 	lw	v0,-32724(gp)
  46a1dc:	00000000 	nop
  46a1e0:	244243fc 	addiu	v0,v0,17404
  46a1e4:	10000188 	b	46a808 <process_dns_answer+0x798>
  46a1e8:	00000000 	nop

    r = (qr_header.stuff >> QRS_RCODE_SHIFT) & QRS_RCODE_MASK;
  46a1ec:	97c2005a 	lhu	v0,90(s8)
  46a1f0:	00000000 	nop
  46a1f4:	3042000f 	andi	v0,v0,0xf
  46a1f8:	3042ffff 	andi	v0,v0,0xffff
  46a1fc:	afc20028 	sw	v0,40(s8)
    if (r != 0)
  46a200:	8fc20028 	lw	v0,40(s8)
  46a204:	00000000 	nop
  46a208:	1040001a 	beqz	v0,46a274 <process_dns_answer+0x204>
  46a20c:	00000000 	nop
	return r < (int)elemsof(rcode_text)? rcode_text[r] : "unknown rcode";
  46a210:	8fc20028 	lw	v0,40(s8)
  46a214:	00000000 	nop
  46a218:	28420010 	slti	v0,v0,16
  46a21c:	1040000d 	beqz	v0,46a254 <process_dns_answer+0x1e4>
  46a220:	00000000 	nop
  46a224:	8fc20028 	lw	v0,40(s8)
  46a228:	00000000 	nop
  46a22c:	00021080 	sll	v0,v0,0x2
  46a230:	8f818018 	lw	at,-32744(gp)
  46a234:	00000000 	nop
  46a238:	2421338c 	addiu	at,at,13196
  46a23c:	00221021 	addu	v0,at,v0
  46a240:	8c420000 	lw	v0,0(v0)
  46a244:	00000000 	nop
  46a248:	afc200a8 	sw	v0,168(s8)
  46a24c:	10000006 	b	46a268 <process_dns_answer+0x1f8>
  46a250:	00000000 	nop
  46a254:	8f82802c 	lw	v0,-32724(gp)
  46a258:	00000000 	nop
  46a25c:	24424410 	addiu	v0,v0,17424
  46a260:	00000000 	nop
  46a264:	afc200a8 	sw	v0,168(s8)
  46a268:	8fc200a8 	lw	v0,168(s8)
  46a26c:	10000166 	b	46a808 <process_dns_answer+0x798>
  46a270:	00000000 	nop

    if (qr_header.ancount == 0)
  46a274:	97c2005e 	lhu	v0,94(s8)
  46a278:	00000000 	nop
  46a27c:	14400015 	bnez	v0,46a2d4 <process_dns_answer+0x264>
  46a280:	00000000 	nop
	return builddiag("no %s RR found by DNS", rr_typename(type));
  46a284:	8fc400d0 	lw	a0,208(s8)
  46a288:	8f998040 	lw	t9,-32704(gp)
  46a28c:	00000000 	nop
  46a290:	27398084 	addiu	t9,t9,-32636
  46a294:	00000000 	nop
  46a298:	0320f809 	jalr	t9
  46a29c:	00000000 	nop
  46a2a0:	8fdc0020 	lw	gp,32(s8)
  46a2a4:	00000000 	nop
  46a2a8:	8f84802c 	lw	a0,-32724(gp)
  46a2ac:	00000000 	nop
  46a2b0:	24844420 	addiu	a0,a0,17440
  46a2b4:	00402821 	move	a1,v0
  46a2b8:	8f9986dc 	lw	t9,-31012(gp)
  46a2bc:	00000000 	nop
  46a2c0:	0320f809 	jalr	t9
  46a2c4:	00000000 	nop
  46a2c8:	8fdc0020 	lw	gp,32(s8)
  46a2cc:	1000014e 	b	46a808 <process_dns_answer+0x798>
  46a2d0:	00000000 	nop

    /* end of header checking */

    /* Question Section processing */

    /* 4.1.2. Question section format:
     *                                 1  1  1  1  1  1
     *   0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
     * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
     * |                                               |
     * /                     QNAME                     /
     * /                                               /
     * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
     * |                     QTYPE                     |
     * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
     * |                     QCLASS                    |
     * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
     */

    DBG(DBG_DNS, DBG_log("*Question Section:"));
  46a2d4:	8f8284f8 	lw	v0,-31496(gp)
  46a2d8:	00000000 	nop
  46a2dc:	8c420000 	lw	v0,0(v0)
  46a2e0:	00000000 	nop
  46a2e4:	30420100 	andi	v0,v0,0x100
  46a2e8:	1040000a 	beqz	v0,46a314 <process_dns_answer+0x2a4>
  46a2ec:	00000000 	nop
  46a2f0:	8f84802c 	lw	a0,-32724(gp)
  46a2f4:	00000000 	nop
  46a2f8:	24844438 	addiu	a0,a0,17464
  46a2fc:	8f9983b8 	lw	t9,-31816(gp)
  46a300:	00000000 	nop
  46a304:	0320f809 	jalr	t9
  46a308:	00000000 	nop
  46a30c:	8fdc0020 	lw	gp,32(s8)
  46a310:	00000000 	nop

    for (c = 0; c != qr_header.qdcount; c++)
  46a314:	a7c0002c 	sh	zero,44(s8)
  46a318:	97c3002c 	lhu	v1,44(s8)
  46a31c:	97c2005c 	lhu	v0,92(s8)
  46a320:	00000000 	nop
  46a324:	14620003 	bne	v1,v0,46a334 <process_dns_answer+0x2c4>
  46a328:	00000000 	nop
  46a32c:	1000003f 	b	46a42c <process_dns_answer+0x3bc>
  46a330:	00000000 	nop
    {
	struct qs_fixed qsf;

	TRY(eat_name_helpfully(&pbs, "Question Section"));
  46a334:	27c40030 	addiu	a0,s8,48
  46a338:	8f85802c 	lw	a1,-32724(gp)
  46a33c:	00000000 	nop
  46a340:	24a5444c 	addiu	a1,a1,17484
  46a344:	8f998040 	lw	t9,-32704(gp)
  46a348:	00000000 	nop
  46a34c:	2739855c 	addiu	t9,t9,-31396
  46a350:	00000000 	nop
  46a354:	0320f809 	jalr	t9
  46a358:	00000000 	nop
  46a35c:	8fdc0020 	lw	gp,32(s8)
  46a360:	afc20078 	sw	v0,120(s8)
  46a364:	8fc20078 	lw	v0,120(s8)
  46a368:	00000000 	nop
  46a36c:	10400004 	beqz	v0,46a380 <process_dns_answer+0x310>
  46a370:	00000000 	nop
  46a374:	8fc20078 	lw	v0,120(s8)
  46a378:	10000123 	b	46a808 <process_dns_answer+0x798>
  46a37c:	00000000 	nop

	if (!in_struct(&qsf, &qs_fixed_desc, &pbs, NULL))
  46a380:	27c40070 	addiu	a0,s8,112
  46a384:	8f858018 	lw	a1,-32744(gp)
  46a388:	00000000 	nop
  46a38c:	24a533fc 	addiu	a1,a1,13308
  46a390:	27c60030 	addiu	a2,s8,48
  46a394:	00003821 	move	a3,zero
  46a398:	8f998b3c 	lw	t9,-29892(gp)
  46a39c:	00000000 	nop
  46a3a0:	0320f809 	jalr	t9
  46a3a4:	00000000 	nop
  46a3a8:	8fdc0020 	lw	gp,32(s8)
  46a3ac:	14400006 	bnez	v0,46a3c8 <process_dns_answer+0x358>
  46a3b0:	00000000 	nop
	    return "failed to get fixed part of Question Section";
  46a3b4:	8f82802c 	lw	v0,-32724(gp)
  46a3b8:	00000000 	nop
  46a3bc:	24424460 	addiu	v0,v0,17504
  46a3c0:	10000111 	b	46a808 <process_dns_answer+0x798>
  46a3c4:	00000000 	nop

	if (qsf.qtype != type)
  46a3c8:	97c30070 	lhu	v1,112(s8)
  46a3cc:	8fc200d0 	lw	v0,208(s8)
  46a3d0:	00000000 	nop
  46a3d4:	10620006 	beq	v1,v0,46a3f0 <process_dns_answer+0x380>
  46a3d8:	00000000 	nop
	    return "unexpected QTYPE in Question Section";
  46a3dc:	8f82802c 	lw	v0,-32724(gp)
  46a3e0:	00000000 	nop
  46a3e4:	24424490 	addiu	v0,v0,17552
  46a3e8:	10000107 	b	46a808 <process_dns_answer+0x798>
  46a3ec:	00000000 	nop

	if (qsf.qclass != C_IN)
  46a3f0:	97c30072 	lhu	v1,114(s8)
  46a3f4:	24020001 	li	v0,1
  46a3f8:	10620006 	beq	v1,v0,46a414 <process_dns_answer+0x3a4>
  46a3fc:	00000000 	nop
	    return "unexpected QCLASS in Question Section";
  46a400:	8f82802c 	lw	v0,-32724(gp)
  46a404:	00000000 	nop
  46a408:	244244b8 	addiu	v0,v0,17592
  46a40c:	100000fe 	b	46a808 <process_dns_answer+0x798>
  46a410:	00000000 	nop
  46a414:	97c2002c 	lhu	v0,44(s8)
  46a418:	00000000 	nop
  46a41c:	24420001 	addiu	v0,v0,1
  46a420:	a7c2002c 	sh	v0,44(s8)
  46a424:	1000ffbc 	b	46a318 <process_dns_answer+0x2a8>
  46a428:	00000000 	nop
    }

    /* rest of sections are made up of Resource Records */

    /* Answer Section processing -- error checking, noting T_SIG */

    ans_start = pbs.cur;	/* remember start of answer section */
  46a42c:	8fc20040 	lw	v0,64(s8)
  46a430:	00000000 	nop
  46a434:	afc20050 	sw	v0,80(s8)

    TRY(process_answer_section(&pbs, FALSE, &dns_auth_level
  46a438:	97c3005e 	lhu	v1,94(s8)
  46a43c:	8fc200d0 	lw	v0,208(s8)
  46a440:	00000000 	nop
  46a444:	afa20010 	sw	v0,16(sp)
  46a448:	8fc200c0 	lw	v0,192(s8)
  46a44c:	00000000 	nop
  46a450:	afa20014 	sw	v0,20(sp)
  46a454:	8fc200c4 	lw	v0,196(s8)
  46a458:	00000000 	nop
  46a45c:	afa20018 	sw	v0,24(sp)
  46a460:	27c40030 	addiu	a0,s8,48
  46a464:	00002821 	move	a1,zero
  46a468:	27c60068 	addiu	a2,s8,104
  46a46c:	00603821 	move	a3,v1
  46a470:	8f998040 	lw	t9,-32704(gp)
  46a474:	00000000 	nop
  46a478:	27399be4 	addiu	t9,t9,-25628
  46a47c:	00000000 	nop
  46a480:	0320f809 	jalr	t9
  46a484:	00000000 	nop
  46a488:	8fdc0020 	lw	gp,32(s8)
  46a48c:	afc20078 	sw	v0,120(s8)
  46a490:	8fc20078 	lw	v0,120(s8)
  46a494:	00000000 	nop
  46a498:	10400004 	beqz	v0,46a4ac <process_dns_answer+0x43c>
  46a49c:	00000000 	nop
  46a4a0:	8fc20078 	lw	v0,120(s8)
  46a4a4:	100000d8 	b	46a808 <process_dns_answer+0x798>
  46a4a8:	00000000 	nop
	,qr_header.ancount, type, id, sgw_id));

    /* Authority Section processing (just sanity checking) */

    DBG(DBG_DNS, DBG_log("*Authority Section:"));
  46a4ac:	8f8284f8 	lw	v0,-31496(gp)
  46a4b0:	00000000 	nop
  46a4b4:	8c420000 	lw	v0,0(v0)
  46a4b8:	00000000 	nop
  46a4bc:	30420100 	andi	v0,v0,0x100
  46a4c0:	1040000a 	beqz	v0,46a4ec <process_dns_answer+0x47c>
  46a4c4:	00000000 	nop
  46a4c8:	8f84802c 	lw	a0,-32724(gp)
  46a4cc:	00000000 	nop
  46a4d0:	248444e0 	addiu	a0,a0,17632
  46a4d4:	8f9983b8 	lw	t9,-31816(gp)
  46a4d8:	00000000 	nop
  46a4dc:	0320f809 	jalr	t9
  46a4e0:	00000000 	nop
  46a4e4:	8fdc0020 	lw	gp,32(s8)
  46a4e8:	00000000 	nop

    for (c = 0; c != qr_header.nscount; c++)
  46a4ec:	a7c0002c 	sh	zero,44(s8)
  46a4f0:	97c3002c 	lhu	v1,44(s8)
  46a4f4:	97c20060 	lhu	v0,96(s8)
  46a4f8:	00000000 	nop
  46a4fc:	14620003 	bne	v1,v0,46a50c <process_dns_answer+0x49c>
  46a500:	00000000 	nop
  46a504:	10000048 	b	46a628 <process_dns_answer+0x5b8>
  46a508:	00000000 	nop
    {
	struct rr_fixed rrf;
	size_t tail;

	TRY(eat_name_helpfully(&pbs, "Authority Section"));
  46a50c:	27c40030 	addiu	a0,s8,48
  46a510:	8f85802c 	lw	a1,-32724(gp)
  46a514:	00000000 	nop
  46a518:	24a544f4 	addiu	a1,a1,17652
  46a51c:	8f998040 	lw	t9,-32704(gp)
  46a520:	00000000 	nop
  46a524:	2739855c 	addiu	t9,t9,-31396
  46a528:	00000000 	nop
  46a52c:	0320f809 	jalr	t9
  46a530:	00000000 	nop
  46a534:	8fdc0020 	lw	gp,32(s8)
  46a538:	afc20090 	sw	v0,144(s8)
  46a53c:	8fc20090 	lw	v0,144(s8)
  46a540:	00000000 	nop
  46a544:	10400004 	beqz	v0,46a558 <process_dns_answer+0x4e8>
  46a548:	00000000 	nop
  46a54c:	8fc20090 	lw	v0,144(s8)
  46a550:	100000ad 	b	46a808 <process_dns_answer+0x798>
  46a554:	00000000 	nop

	if (!in_struct(&rrf, &rr_fixed_desc, &pbs, NULL))
  46a558:	27c40080 	addiu	a0,s8,128
  46a55c:	8f858018 	lw	a1,-32744(gp)
  46a560:	00000000 	nop
  46a564:	24a53458 	addiu	a1,a1,13400
  46a568:	27c60030 	addiu	a2,s8,48
  46a56c:	00003821 	move	a3,zero
  46a570:	8f998b3c 	lw	t9,-29892(gp)
  46a574:	00000000 	nop
  46a578:	0320f809 	jalr	t9
  46a57c:	00000000 	nop
  46a580:	8fdc0020 	lw	gp,32(s8)
  46a584:	14400006 	bnez	v0,46a5a0 <process_dns_answer+0x530>
  46a588:	00000000 	nop
	    return "failed to get fixed part of Authority Section Resource Record";
  46a58c:	8f82802c 	lw	v0,-32724(gp)
  46a590:	00000000 	nop
  46a594:	24424508 	addiu	v0,v0,17672
  46a598:	1000009b 	b	46a808 <process_dns_answer+0x798>
  46a59c:	00000000 	nop

	if (rrf.rdlength > pbs_left(&pbs))
  46a5a0:	97c40088 	lhu	a0,136(s8)
  46a5a4:	8fc30044 	lw	v1,68(s8)
  46a5a8:	8fc20040 	lw	v0,64(s8)
  46a5ac:	00000000 	nop
  46a5b0:	00621023 	subu	v0,v1,v0
  46a5b4:	0044102b 	sltu	v0,v0,a0
  46a5b8:	10400006 	beqz	v0,46a5d4 <process_dns_answer+0x564>
  46a5bc:	00000000 	nop
	    return "RD Length extends beyond end of message";
  46a5c0:	8f82802c 	lw	v0,-32724(gp)
  46a5c4:	00000000 	nop
  46a5c8:	244242ec 	addiu	v0,v0,17132
  46a5cc:	1000008e 	b	46a808 <process_dns_answer+0x798>
  46a5d0:	00000000 	nop

	/* ??? should we care about ttl? */

	tail = rrf.rdlength;
  46a5d4:	97c20088 	lhu	v0,136(s8)
  46a5d8:	00000000 	nop
  46a5dc:	afc20078 	sw	v0,120(s8)

	in_raw(NULL, tail, &pbs, "RR RDATA");
  46a5e0:	00002021 	move	a0,zero
  46a5e4:	8fc50078 	lw	a1,120(s8)
  46a5e8:	27c60030 	addiu	a2,s8,48
  46a5ec:	8f87802c 	lw	a3,-32724(gp)
  46a5f0:	00000000 	nop
  46a5f4:	24e74364 	addiu	a3,a3,17252
  46a5f8:	8f99867c 	lw	t9,-31108(gp)
  46a5fc:	00000000 	nop
  46a600:	0320f809 	jalr	t9
  46a604:	00000000 	nop
  46a608:	8fdc0020 	lw	gp,32(s8)
  46a60c:	00000000 	nop
  46a610:	97c2002c 	lhu	v0,44(s8)
  46a614:	00000000 	nop
  46a618:	24420001 	addiu	v0,v0,1
  46a61c:	a7c2002c 	sh	v0,44(s8)
  46a620:	1000ffb3 	b	46a4f0 <process_dns_answer+0x480>
  46a624:	00000000 	nop
    }

    /* Additional Section processing (just sanity checking) */

    DBG(DBG_DNS, DBG_log("*Additional Section:"));
  46a628:	8f8284f8 	lw	v0,-31496(gp)
  46a62c:	00000000 	nop
  46a630:	8c420000 	lw	v0,0(v0)
  46a634:	00000000 	nop
  46a638:	30420100 	andi	v0,v0,0x100
  46a63c:	1040000a 	beqz	v0,46a668 <process_dns_answer+0x5f8>
  46a640:	00000000 	nop
  46a644:	8f84802c 	lw	a0,-32724(gp)
  46a648:	00000000 	nop
  46a64c:	24844548 	addiu	a0,a0,17736
  46a650:	8f9983b8 	lw	t9,-31816(gp)
  46a654:	00000000 	nop
  46a658:	0320f809 	jalr	t9
  46a65c:	00000000 	nop
  46a660:	8fdc0020 	lw	gp,32(s8)
  46a664:	00000000 	nop

    for (c = 0; c != qr_header.arcount; c++)
  46a668:	a7c0002c 	sh	zero,44(s8)
  46a66c:	97c3002c 	lhu	v1,44(s8)
  46a670:	97c20062 	lhu	v0,98(s8)
  46a674:	00000000 	nop
  46a678:	14620003 	bne	v1,v0,46a688 <process_dns_answer+0x618>
  46a67c:	00000000 	nop
  46a680:	10000048 	b	46a7a4 <process_dns_answer+0x734>
  46a684:	00000000 	nop
    {
	struct rr_fixed rrf;
	size_t tail;

	TRY(eat_name_helpfully(&pbs, "Additional Section"));
  46a688:	27c40030 	addiu	a0,s8,48
  46a68c:	8f85802c 	lw	a1,-32724(gp)
  46a690:	00000000 	nop
  46a694:	24a54560 	addiu	a1,a1,17760
  46a698:	8f998040 	lw	t9,-32704(gp)
  46a69c:	00000000 	nop
  46a6a0:	2739855c 	addiu	t9,t9,-31396
  46a6a4:	00000000 	nop
  46a6a8:	0320f809 	jalr	t9
  46a6ac:	00000000 	nop
  46a6b0:	8fdc0020 	lw	gp,32(s8)
  46a6b4:	afc20078 	sw	v0,120(s8)
  46a6b8:	8fc20078 	lw	v0,120(s8)
  46a6bc:	00000000 	nop
  46a6c0:	10400004 	beqz	v0,46a6d4 <process_dns_answer+0x664>
  46a6c4:	00000000 	nop
  46a6c8:	8fc20078 	lw	v0,120(s8)
  46a6cc:	1000004e 	b	46a808 <process_dns_answer+0x798>
  46a6d0:	00000000 	nop

	if (!in_struct(&rrf, &rr_fixed_desc, &pbs, NULL))
  46a6d4:	27c40098 	addiu	a0,s8,152
  46a6d8:	8f858018 	lw	a1,-32744(gp)
  46a6dc:	00000000 	nop
  46a6e0:	24a53458 	addiu	a1,a1,13400
  46a6e4:	27c60030 	addiu	a2,s8,48
  46a6e8:	00003821 	move	a3,zero
  46a6ec:	8f998b3c 	lw	t9,-29892(gp)
  46a6f0:	00000000 	nop
  46a6f4:	0320f809 	jalr	t9
  46a6f8:	00000000 	nop
  46a6fc:	8fdc0020 	lw	gp,32(s8)
  46a700:	14400006 	bnez	v0,46a71c <process_dns_answer+0x6ac>
  46a704:	00000000 	nop
	    return "failed to get fixed part of Additional Section Resource Record";
  46a708:	8f82802c 	lw	v0,-32724(gp)
  46a70c:	00000000 	nop
  46a710:	24424574 	addiu	v0,v0,17780
  46a714:	1000003c 	b	46a808 <process_dns_answer+0x798>
  46a718:	00000000 	nop

	if (rrf.rdlength > pbs_left(&pbs))
  46a71c:	97c400a0 	lhu	a0,160(s8)
  46a720:	8fc30044 	lw	v1,68(s8)
  46a724:	8fc20040 	lw	v0,64(s8)
  46a728:	00000000 	nop
  46a72c:	00621023 	subu	v0,v1,v0
  46a730:	0044102b 	sltu	v0,v0,a0
  46a734:	10400006 	beqz	v0,46a750 <process_dns_answer+0x6e0>
  46a738:	00000000 	nop
	    return "RD Length extends beyond end of message";
  46a73c:	8f82802c 	lw	v0,-32724(gp)
  46a740:	00000000 	nop
  46a744:	244242ec 	addiu	v0,v0,17132
  46a748:	1000002f 	b	46a808 <process_dns_answer+0x798>
  46a74c:	00000000 	nop

	/* ??? should we care about ttl? */

	tail = rrf.rdlength;
  46a750:	97c200a0 	lhu	v0,160(s8)
  46a754:	00000000 	nop
  46a758:	afc20090 	sw	v0,144(s8)

	in_raw(NULL, tail, &pbs, "RR RDATA");
  46a75c:	00002021 	move	a0,zero
  46a760:	8fc50090 	lw	a1,144(s8)
  46a764:	27c60030 	addiu	a2,s8,48
  46a768:	8f87802c 	lw	a3,-32724(gp)
  46a76c:	00000000 	nop
  46a770:	24e74364 	addiu	a3,a3,17252
  46a774:	8f99867c 	lw	t9,-31108(gp)
  46a778:	00000000 	nop
  46a77c:	0320f809 	jalr	t9
  46a780:	00000000 	nop
  46a784:	8fdc0020 	lw	gp,32(s8)
  46a788:	00000000 	nop
  46a78c:	97c2002c 	lhu	v0,44(s8)
  46a790:	00000000 	nop
  46a794:	24420001 	addiu	v0,v0,1
  46a798:	a7c2002c 	sh	v0,44(s8)
  46a79c:	1000ffb3 	b	46a66c <process_dns_answer+0x5fc>
  46a7a0:	00000000 	nop
    }

    /* done all sections */

    /* ??? is padding legal, or can we complain if more left in record? */

    /* process Answer Section again -- accept contents */

    pbs.cur = ans_start;	/* go back to start of answer section */
  46a7a4:	8fc20050 	lw	v0,80(s8)
  46a7a8:	00000000 	nop
  46a7ac:	afc20040 	sw	v0,64(s8)

    return process_answer_section(&pbs, TRUE, &dns_auth_level
  46a7b0:	97c3005e 	lhu	v1,94(s8)
  46a7b4:	8fc200d0 	lw	v0,208(s8)
  46a7b8:	00000000 	nop
  46a7bc:	afa20010 	sw	v0,16(sp)
  46a7c0:	8fc200c0 	lw	v0,192(s8)
  46a7c4:	00000000 	nop
  46a7c8:	afa20014 	sw	v0,20(sp)
  46a7cc:	8fc200c4 	lw	v0,196(s8)
  46a7d0:	00000000 	nop
  46a7d4:	afa20018 	sw	v0,24(sp)
  46a7d8:	27c40030 	addiu	a0,s8,48
  46a7dc:	24050001 	li	a1,1
  46a7e0:	27c60068 	addiu	a2,s8,104
  46a7e4:	00603821 	move	a3,v1
  46a7e8:	8f998040 	lw	t9,-32704(gp)
  46a7ec:	00000000 	nop
  46a7f0:	27399be4 	addiu	t9,t9,-25628
  46a7f4:	00000000 	nop
  46a7f8:	0320f809 	jalr	t9
  46a7fc:	00000000 	nop
  46a800:	8fdc0020 	lw	gp,32(s8)
  46a804:	00000000 	nop
	, qr_header.ancount, type, id, sgw_id);
}
  46a808:	03c0e821 	move	sp,s8
  46a80c:	8fbf00b8 	lw	ra,184(sp)
  46a810:	8fbe00b4 	lw	s8,180(sp)
  46a814:	27bd00c0 	addiu	sp,sp,192
  46a818:	03e00008 	jr	ra
  46a81c:	00000000 	nop

0046a820 <start_adns_query>:
  46a820:	3c1c0fba 	lui	gp,0xfba
  46a824:	279c2150 	addiu	gp,gp,8528
  46a828:	0399e021 	addu	gp,gp,t9
  46a82c:	27bdffc0 	addiu	sp,sp,-64
  46a830:	afbc0010 	sw	gp,16(sp)
  46a834:	afbf0038 	sw	ra,56(sp)
  46a838:	afbe0034 	sw	s8,52(sp)
  46a83c:	afbc0030 	sw	gp,48(sp)
  46a840:	03a0f021 	move	s8,sp
  46a844:	afc40040 	sw	a0,64(s8)
  46a848:	afc50044 	sw	a1,68(s8)
  46a84c:	afc60048 	sw	a2,72(s8)
  46a850:	afc7004c 	sw	a3,76(s8)

static int adns_in_flight = 0;	/* queries outstanding */

/* Start an asynchronous DNS query.
 *
 * For KEY record, the result will be a list in "keys_from_dns".
 * For TXT records, the result will be a list in "gateways_from_dns".
 *
 * If sgw_id is null, only consider TXT records that specify an
 * IP address for the gatway: we need this in the initiation case.
 *
 * If sgw_id is non-null, only consider TXT records that specify
 * this id as the security gatway; this is useful to the Responder
 * for confirming claims of gateways.
 *
 * Continuation cr gives information for continuing when the result shows up.
 *
 * Two kinds of errors must be handled: synchronous (immediate)
 * and asynchronous.  Synchronous errors are indicated by the returned
 * value of start_adns_query; in this case, the continuation will
 * have been freed and the continuation routine will not be called.
 * Asynchronous errors are indicated by the ugh parameter passed to the
 * continuation routine.
 *
 * After the continuation routine has completed, handle_adns_answer
 * will free the continuation.  The continuation routine should have
 * freed any axiliary resources.
 *
 * Note: in the synchronous error case, start_adns_query will have
 * freed the continuation; this means that the caller will have to
 * be very careful to release any auxiliary resources that were in
 * the continuation record without using the continuation record.
 *
 * Either there will be an error result passed to the continuation routine,
 * or the results will be in keys_from_dns or gatways_from_dns.
 * The result variables must by left NULL by the continutation routine.
 * The continuation routine is responsible for establishing and
 * disestablishing any logging context (whack_log_fd, cur_*).
 */

err_t
start_adns_query(const struct id *id	/* domain to query */
, const struct id *sgw_id	/* if non-null, any accepted gw_info must match */
, int type	/* T_TXT or T_KEY, selecting rr type of interest */
, cont_fn_t cont_fn
, struct adns_continuation *cr)
{
    ssize_t n;
    const char *typename = rr_typename(type);
  46a854:	8fc40048 	lw	a0,72(s8)
  46a858:	8f998040 	lw	t9,-32704(gp)
  46a85c:	00000000 	nop
  46a860:	27398084 	addiu	t9,t9,-32636
  46a864:	00000000 	nop
  46a868:	0320f809 	jalr	t9
  46a86c:	00000000 	nop
  46a870:	8fdc0010 	lw	gp,16(s8)
  46a874:	afc2001c 	sw	v0,28(s8)

    /* Be sure that the result lists start out empty */
    passert(gateways_from_dns == NULL && keys_from_dns == NULL);
  46a878:	8f828204 	lw	v0,-32252(gp)
  46a87c:	00000000 	nop
  46a880:	8c420000 	lw	v0,0(v0)
  46a884:	00000000 	nop
  46a888:	14400009 	bnez	v0,46a8b0 <start_adns_query+0x90>
  46a88c:	00000000 	nop
  46a890:	8f828394 	lw	v0,-31852(gp)
  46a894:	00000000 	nop
  46a898:	8c420000 	lw	v0,0(v0)
  46a89c:	00000000 	nop
  46a8a0:	14400003 	bnez	v0,46a8b0 <start_adns_query+0x90>
  46a8a4:	00000000 	nop
  46a8a8:	1000000e 	b	46a8e4 <start_adns_query+0xc4>
  46a8ac:	00000000 	nop
  46a8b0:	8f84802c 	lw	a0,-32724(gp)
  46a8b4:	00000000 	nop
  46a8b8:	248445b4 	addiu	a0,a0,17844
  46a8bc:	8f85802c 	lw	a1,-32724(gp)
  46a8c0:	00000000 	nop
  46a8c4:	24a53e30 	addiu	a1,a1,15920
  46a8c8:	240604d6 	li	a2,1238
  46a8cc:	8f998bb8 	lw	t9,-29768(gp)
  46a8d0:	00000000 	nop
  46a8d4:	0320f809 	jalr	t9
  46a8d8:	00000000 	nop
  46a8dc:	8fdc0010 	lw	gp,16(s8)
  46a8e0:	00000000 	nop

    cr->cont_fn = cont_fn;
  46a8e4:	8fc3004c 	lw	v1,76(s8)
  46a8e8:	8fc20050 	lw	v0,80(s8)
  46a8ec:	00000000 	nop
  46a8f0:	ac430000 	sw	v1,0(v0)
    cr->id = *id;
  46a8f4:	8fc20050 	lw	v0,80(s8)
  46a8f8:	00000000 	nop
  46a8fc:	24420428 	addiu	v0,v0,1064
  46a900:	8fc30040 	lw	v1,64(s8)
  46a904:	00402021 	move	a0,v0
  46a908:	00602821 	move	a1,v1
  46a90c:	24060028 	li	a2,40
  46a910:	8f998a30 	lw	t9,-30160(gp)
  46a914:	00000000 	nop
  46a918:	0320f809 	jalr	t9
  46a91c:	00000000 	nop
  46a920:	8fdc0010 	lw	gp,16(s8)
  46a924:	00000000 	nop
    cr->sgw_specified = sgw_id != NULL;
  46a928:	8fc20044 	lw	v0,68(s8)
  46a92c:	00000000 	nop
  46a930:	0002182b 	sltu	v1,zero,v0
  46a934:	8fc20050 	lw	v0,80(s8)
  46a938:	00000000 	nop
  46a93c:	ac430450 	sw	v1,1104(v0)
    cr->sgw_id = cr->sgw_specified? *sgw_id : empty_id;
  46a940:	8fc20050 	lw	v0,80(s8)
  46a944:	00000000 	nop
  46a948:	afc20028 	sw	v0,40(s8)
  46a94c:	8fc20050 	lw	v0,80(s8)
  46a950:	00000000 	nop
  46a954:	8c420450 	lw	v0,1104(v0)
  46a958:	00000000 	nop
  46a95c:	1040000f 	beqz	v0,46a99c <start_adns_query+0x17c>
  46a960:	00000000 	nop
  46a964:	8fc30028 	lw	v1,40(s8)
  46a968:	00000000 	nop
  46a96c:	24620454 	addiu	v0,v1,1108
  46a970:	8fc30044 	lw	v1,68(s8)
  46a974:	00402021 	move	a0,v0
  46a978:	00602821 	move	a1,v1
  46a97c:	24060028 	li	a2,40
  46a980:	8f998a30 	lw	t9,-30160(gp)
  46a984:	00000000 	nop
  46a988:	0320f809 	jalr	t9
  46a98c:	00000000 	nop
  46a990:	8fdc0010 	lw	gp,16(s8)
  46a994:	1000000d 	b	46a9cc <start_adns_query+0x1ac>
  46a998:	00000000 	nop
  46a99c:	8fc40028 	lw	a0,40(s8)
  46a9a0:	00000000 	nop
  46a9a4:	24820454 	addiu	v0,a0,1108
  46a9a8:	00402021 	move	a0,v0
  46a9ac:	8f8582d8 	lw	a1,-32040(gp)
  46a9b0:	24060028 	li	a2,40
  46a9b4:	8f998a30 	lw	t9,-30160(gp)
  46a9b8:	00000000 	nop
  46a9bc:	0320f809 	jalr	t9
  46a9c0:	00000000 	nop
  46a9c4:	8fdc0010 	lw	gp,16(s8)
  46a9c8:	00000000 	nop

    memset(&cr->query, '\0', sizeof(cr->query));
  46a9cc:	8fc20050 	lw	v0,80(s8)
  46a9d0:	00000000 	nop
  46a9d4:	24420008 	addiu	v0,v0,8
  46a9d8:	00402021 	move	a0,v0
  46a9dc:	00002821 	move	a1,zero
  46a9e0:	24060420 	li	a2,1056
  46a9e4:	8f998500 	lw	t9,-31488(gp)
  46a9e8:	00000000 	nop
  46a9ec:	0320f809 	jalr	t9
  46a9f0:	00000000 	nop
  46a9f4:	8fdc0010 	lw	gp,16(s8)
  46a9f8:	00000000 	nop
    cr->query.len = sizeof(cr->query);
  46a9fc:	24030420 	li	v1,1056
  46aa00:	8fc20050 	lw	v0,80(s8)
  46aa04:	00000000 	nop
  46aa08:	ac430008 	sw	v1,8(v0)
    cr->query.qmagic = ADNS_Q_MAGIC;
  46aa0c:	3c03646e 	lui	v1,0x646e
  46aa10:	34637302 	ori	v1,v1,0x7302
  46aa14:	8fc20050 	lw	v0,80(s8)
  46aa18:	00000000 	nop
  46aa1c:	ac43000c 	sw	v1,12(v0)
    cr->query.continuation = cr;
  46aa20:	8fc30050 	lw	v1,80(s8)
  46aa24:	8fc20050 	lw	v0,80(s8)
  46aa28:	00000000 	nop
  46aa2c:	ac430018 	sw	v1,24(v0)
    cr->query.impairments = LEMPTY;
  46aa30:	8fc20050 	lw	v0,80(s8)
  46aa34:	00002021 	move	a0,zero
  46aa38:	00002821 	move	a1,zero
  46aa3c:	ac440010 	sw	a0,16(v0)
  46aa40:	ac450014 	sw	a1,20(v0)
#ifdef IMPAIR_DELAY_ADNS_ANSWER
    /* if IMPAIR_DELAY_ADNS_ANSWER is defined, it is the number
     * of an adns answer we wish to delay.
     * This may be useful for testing.
     */
    {
	static int aq_cntr = IMPAIR_DELAY_ADNS_ANSWER;

	if (aq_cntr > 0)
	{
	    aq_cntr--;
	    if (aq_cntr == 0)
		cr->query.impairments |= ADNS_IB_DELAY_ANSWER;
	}
    }
#endif

    {
	err_t ugh = build_dns_name(cr->query.name_buf, id, typename);
  46aa44:	8fc20050 	lw	v0,80(s8)
  46aa48:	00000000 	nop
  46aa4c:	2442001c 	addiu	v0,v0,28
  46aa50:	00402021 	move	a0,v0
  46aa54:	8fc50040 	lw	a1,64(s8)
  46aa58:	8fc6001c 	lw	a2,28(s8)
  46aa5c:	8f998040 	lw	t9,-32704(gp)
  46aa60:	00000000 	nop
  46aa64:	27398614 	addiu	t9,t9,-31212
  46aa68:	00000000 	nop
  46aa6c:	0320f809 	jalr	t9
  46aa70:	00000000 	nop
  46aa74:	8fdc0010 	lw	gp,16(s8)
  46aa78:	afc20020 	sw	v0,32(s8)

	if (ugh != NULL)
  46aa7c:	8fc20020 	lw	v0,32(s8)
  46aa80:	00000000 	nop
  46aa84:	1040000b 	beqz	v0,46aab4 <start_adns_query+0x294>
  46aa88:	00000000 	nop
	{
	    release_adns_continuation(cr);
  46aa8c:	8fc40050 	lw	a0,80(s8)
  46aa90:	8f998ad8 	lw	t9,-29992(gp)
  46aa94:	00000000 	nop
  46aa98:	0320f809 	jalr	t9
  46aa9c:	00000000 	nop
  46aaa0:	8fdc0010 	lw	gp,16(s8)
  46aaa4:	00000000 	nop
	    return ugh;
  46aaa8:	8fc20020 	lw	v0,32(s8)
  46aaac:	10000061 	b	46ac34 <start_adns_query+0x414>
  46aab0:	00000000 	nop
	}
    }

    cr->query.type = type;
  46aab4:	8fc30048 	lw	v1,72(s8)
  46aab8:	8fc20050 	lw	v0,80(s8)
  46aabc:	00000000 	nop
  46aac0:	ac430420 	sw	v1,1056(v0)

    /* write out query, perhaps a piece at a time */
    n = 0;
  46aac4:	afc00018 	sw	zero,24(s8)
    do {
	ssize_t m = write(adns_qfd
  46aac8:	8fc30050 	lw	v1,80(s8)
  46aacc:	8fc20018 	lw	v0,24(s8)
  46aad0:	00000000 	nop
  46aad4:	00621021 	addu	v0,v1,v0
  46aad8:	24450008 	addiu	a1,v0,8
  46aadc:	24030420 	li	v1,1056
  46aae0:	8fc20018 	lw	v0,24(s8)
  46aae4:	00000000 	nop
  46aae8:	00621023 	subu	v0,v1,v0
  46aaec:	8f848a00 	lw	a0,-30208(gp)
  46aaf0:	00000000 	nop
  46aaf4:	8c840000 	lw	a0,0(a0)
  46aaf8:	00403021 	move	a2,v0
  46aafc:	8f9987b0 	lw	t9,-30800(gp)
  46ab00:	00000000 	nop
  46ab04:	0320f809 	jalr	t9
  46ab08:	00000000 	nop
  46ab0c:	8fdc0010 	lw	gp,16(s8)
  46ab10:	afc20020 	sw	v0,32(s8)
	    , (unsigned char *)&cr->query + n, sizeof(cr->query) - n);

	if (m == -1)
  46ab14:	8fc30020 	lw	v1,32(s8)
  46ab18:	2402ffff 	li	v0,-1
  46ab1c:	1462001d 	bne	v1,v0,46ab94 <start_adns_query+0x374>
  46ab20:	00000000 	nop
	{
	    if (errno != EINTR)
  46ab24:	8f998234 	lw	t9,-32204(gp)
  46ab28:	00000000 	nop
  46ab2c:	0320f809 	jalr	t9
  46ab30:	00000000 	nop
  46ab34:	8fdc0010 	lw	gp,16(s8)
  46ab38:	8c430000 	lw	v1,0(v0)
  46ab3c:	24020004 	li	v0,4
  46ab40:	10620019 	beq	v1,v0,46aba8 <start_adns_query+0x388>
  46ab44:	00000000 	nop
	    {
		log_errno((e, "error writing query to adns"));
  46ab48:	8f998234 	lw	t9,-32204(gp)
  46ab4c:	00000000 	nop
  46ab50:	0320f809 	jalr	t9
  46ab54:	00000000 	nop
  46ab58:	8fdc0010 	lw	gp,16(s8)
  46ab5c:	8c420000 	lw	v0,0(v0)
  46ab60:	00000000 	nop
  46ab64:	afc20024 	sw	v0,36(s8)
  46ab68:	8fc40024 	lw	a0,36(s8)
  46ab6c:	8f85802c 	lw	a1,-32724(gp)
  46ab70:	00000000 	nop
  46ab74:	24a545e8 	addiu	a1,a1,17896
  46ab78:	8f9988ec 	lw	t9,-30484(gp)
  46ab7c:	00000000 	nop
  46ab80:	0320f809 	jalr	t9
  46ab84:	00000000 	nop
  46ab88:	8fdc0010 	lw	gp,16(s8)
  46ab8c:	10000006 	b	46aba8 <start_adns_query+0x388>
  46ab90:	00000000 	nop
		/* ??? how can we recover? */
	    }
	}
	else
	{
	    n += m;
  46ab94:	8fc20018 	lw	v0,24(s8)
  46ab98:	8fc30020 	lw	v1,32(s8)
  46ab9c:	00000000 	nop
  46aba0:	00431021 	addu	v0,v0,v1
  46aba4:	afc20018 	sw	v0,24(s8)
	}
    } while (n != sizeof(cr->query));
  46aba8:	8fc30018 	lw	v1,24(s8)
  46abac:	24020420 	li	v0,1056
  46abb0:	1462ffc5 	bne	v1,v0,46aac8 <start_adns_query+0x2a8>
  46abb4:	00000000 	nop

    unshare_id_content(&cr->id);
  46abb8:	8fc20050 	lw	v0,80(s8)
  46abbc:	00000000 	nop
  46abc0:	24420428 	addiu	v0,v0,1064
  46abc4:	00402021 	move	a0,v0
  46abc8:	8f99847c 	lw	t9,-31620(gp)
  46abcc:	00000000 	nop
  46abd0:	0320f809 	jalr	t9
  46abd4:	00000000 	nop
  46abd8:	8fdc0010 	lw	gp,16(s8)
  46abdc:	00000000 	nop
    unshare_id_content(&cr->sgw_id);
  46abe0:	8fc20050 	lw	v0,80(s8)
  46abe4:	00000000 	nop
  46abe8:	24420454 	addiu	v0,v0,1108
  46abec:	00402021 	move	a0,v0
  46abf0:	8f99847c 	lw	t9,-31620(gp)
  46abf4:	00000000 	nop
  46abf8:	0320f809 	jalr	t9
  46abfc:	00000000 	nop
  46ac00:	8fdc0010 	lw	gp,16(s8)
  46ac04:	00000000 	nop

    adns_in_flight++;
  46ac08:	8f828018 	lw	v0,-32744(gp)
  46ac0c:	00000000 	nop
  46ac10:	24423544 	addiu	v0,v0,13636
  46ac14:	8c420000 	lw	v0,0(v0)
  46ac18:	00000000 	nop
  46ac1c:	24420001 	addiu	v0,v0,1
  46ac20:	8f818018 	lw	at,-32744(gp)
  46ac24:	00000000 	nop
  46ac28:	24213544 	addiu	at,at,13636
  46ac2c:	ac220000 	sw	v0,0(at)

    return NULL;
  46ac30:	00001021 	move	v0,zero
}
  46ac34:	03c0e821 	move	sp,s8
  46ac38:	8fbf0038 	lw	ra,56(sp)
  46ac3c:	8fbe0034 	lw	s8,52(sp)
  46ac40:	27bd0040 	addiu	sp,sp,64
  46ac44:	03e00008 	jr	ra
  46ac48:	00000000 	nop

0046ac4c <handle_adns_answer>:
  46ac4c:	3c1c0fba 	lui	gp,0xfba
  46ac50:	279c1d24 	addiu	gp,gp,7460
  46ac54:	0399e021 	addu	gp,gp,t9
  46ac58:	27bdffb0 	addiu	sp,sp,-80
  46ac5c:	afbc0018 	sw	gp,24(sp)
  46ac60:	afbf0048 	sw	ra,72(sp)
  46ac64:	afbe0044 	sw	s8,68(sp)
  46ac68:	afbc0040 	sw	gp,64(sp)
  46ac6c:	03a0f021 	move	s8,sp

void
handle_adns_answer(void)
{
    static size_t aalen = 0;	/* bytes in answer buffer */
    static struct adns_answer a;
    ssize_t n;

    passert(gateways_from_dns == NULL && keys_from_dns == NULL);
  46ac70:	8f828204 	lw	v0,-32252(gp)
  46ac74:	00000000 	nop
  46ac78:	8c420000 	lw	v0,0(v0)
  46ac7c:	00000000 	nop
  46ac80:	14400009 	bnez	v0,46aca8 <handle_adns_answer+0x5c>
  46ac84:	00000000 	nop
  46ac88:	8f828394 	lw	v0,-31852(gp)
  46ac8c:	00000000 	nop
  46ac90:	8c420000 	lw	v0,0(v0)
  46ac94:	00000000 	nop
  46ac98:	14400003 	bnez	v0,46aca8 <handle_adns_answer+0x5c>
  46ac9c:	00000000 	nop
  46aca0:	1000000e 	b	46acdc <handle_adns_answer+0x90>
  46aca4:	00000000 	nop
  46aca8:	8f84802c 	lw	a0,-32724(gp)
  46acac:	00000000 	nop
  46acb0:	248445b4 	addiu	a0,a0,17844
  46acb4:	8f85802c 	lw	a1,-32724(gp)
  46acb8:	00000000 	nop
  46acbc:	24a53e30 	addiu	a1,a1,15920
  46acc0:	24060522 	li	a2,1314
  46acc4:	8f998bb8 	lw	t9,-29768(gp)
  46acc8:	00000000 	nop
  46accc:	0320f809 	jalr	t9
  46acd0:	00000000 	nop
  46acd4:	8fdc0018 	lw	gp,24(s8)
  46acd8:	00000000 	nop
    passert(aalen < sizeof(a));
  46acdc:	8f828018 	lw	v0,-32744(gp)
  46ace0:	00000000 	nop
  46ace4:	24423548 	addiu	v0,v0,13640
  46ace8:	8c420000 	lw	v0,0(v0)
  46acec:	00000000 	nop
  46acf0:	2c421420 	sltiu	v0,v0,5152
  46acf4:	1440000e 	bnez	v0,46ad30 <handle_adns_answer+0xe4>
  46acf8:	00000000 	nop
  46acfc:	8f84802c 	lw	a0,-32724(gp)
  46ad00:	00000000 	nop
  46ad04:	24844604 	addiu	a0,a0,17924
  46ad08:	8f85802c 	lw	a1,-32724(gp)
  46ad0c:	00000000 	nop
  46ad10:	24a53e30 	addiu	a1,a1,15920
  46ad14:	24060523 	li	a2,1315
  46ad18:	8f998bb8 	lw	t9,-29768(gp)
  46ad1c:	00000000 	nop
  46ad20:	0320f809 	jalr	t9
  46ad24:	00000000 	nop
  46ad28:	8fdc0018 	lw	gp,24(s8)
  46ad2c:	00000000 	nop
    n = read(adns_afd, (unsigned char *)&a + aalen, sizeof(a) - aalen);
  46ad30:	8f828018 	lw	v0,-32744(gp)
  46ad34:	00000000 	nop
  46ad38:	24423548 	addiu	v0,v0,13640
  46ad3c:	8c420000 	lw	v0,0(v0)
  46ad40:	8f858018 	lw	a1,-32744(gp)
  46ad44:	00000000 	nop
  46ad48:	24a57bf0 	addiu	a1,a1,31728
  46ad4c:	00a22821 	addu	a1,a1,v0
  46ad50:	24031420 	li	v1,5152
  46ad54:	8f828018 	lw	v0,-32744(gp)
  46ad58:	00000000 	nop
  46ad5c:	24423548 	addiu	v0,v0,13640
  46ad60:	8c420000 	lw	v0,0(v0)
  46ad64:	00000000 	nop
  46ad68:	00621023 	subu	v0,v1,v0
  46ad6c:	8f848764 	lw	a0,-30876(gp)
  46ad70:	00000000 	nop
  46ad74:	8c840000 	lw	a0,0(a0)
  46ad78:	00403021 	move	a2,v0
  46ad7c:	8f998664 	lw	t9,-31132(gp)
  46ad80:	00000000 	nop
  46ad84:	0320f809 	jalr	t9
  46ad88:	00000000 	nop
  46ad8c:	8fdc0018 	lw	gp,24(s8)
  46ad90:	afc20020 	sw	v0,32(s8)

    if (n < 0)
  46ad94:	8fc20020 	lw	v0,32(s8)
  46ad98:	00000000 	nop
  46ad9c:	0441001f 	bgez	v0,46ae1c <handle_adns_answer+0x1d0>
  46ada0:	00000000 	nop
    {
	if (errno != EINTR)
  46ada4:	8f998234 	lw	t9,-32204(gp)
  46ada8:	00000000 	nop
  46adac:	0320f809 	jalr	t9
  46adb0:	00000000 	nop
  46adb4:	8fdc0018 	lw	gp,24(s8)
  46adb8:	8c430000 	lw	v1,0(v0)
  46adbc:	24020004 	li	v0,4
  46adc0:	10620013 	beq	v1,v0,46ae10 <handle_adns_answer+0x1c4>
  46adc4:	00000000 	nop
	{
	    log_errno((e, "error reading answer from adns"));
  46adc8:	8f998234 	lw	t9,-32204(gp)
  46adcc:	00000000 	nop
  46add0:	0320f809 	jalr	t9
  46add4:	00000000 	nop
  46add8:	8fdc0018 	lw	gp,24(s8)
  46addc:	8c420000 	lw	v0,0(v0)
  46ade0:	00000000 	nop
  46ade4:	afc20024 	sw	v0,36(s8)
  46ade8:	8fc40024 	lw	a0,36(s8)
  46adec:	8f85802c 	lw	a1,-32724(gp)
  46adf0:	00000000 	nop
  46adf4:	24a54618 	addiu	a1,a1,17944
  46adf8:	8f9988ec 	lw	t9,-30484(gp)
  46adfc:	00000000 	nop
  46ae00:	0320f809 	jalr	t9
  46ae04:	00000000 	nop
  46ae08:	8fdc0018 	lw	gp,24(s8)
  46ae0c:	00000000 	nop
	    /* ??? how can we recover? */
	}
	n = 0;	/* now n reflects amount read */
  46ae10:	afc00020 	sw	zero,32(s8)
  46ae14:	10000048 	b	46af38 <handle_adns_answer+0x2ec>
  46ae18:	00000000 	nop
    }
    else if (n == 0)
  46ae1c:	8fc20020 	lw	v0,32(s8)
  46ae20:	00000000 	nop
  46ae24:	14400030 	bnez	v0,46aee8 <handle_adns_answer+0x29c>
  46ae28:	00000000 	nop
    {
	/* EOF */
	if (adns_in_flight != 0)
  46ae2c:	8f828018 	lw	v0,-32744(gp)
  46ae30:	00000000 	nop
  46ae34:	24423544 	addiu	v0,v0,13636
  46ae38:	8c420000 	lw	v0,0(v0)
  46ae3c:	00000000 	nop
  46ae40:	1040000e 	beqz	v0,46ae7c <handle_adns_answer+0x230>
  46ae44:	00000000 	nop
	{
	    plog("EOF from adns with %d queries outstanding", adns_in_flight);
  46ae48:	8f84802c 	lw	a0,-32724(gp)
  46ae4c:	00000000 	nop
  46ae50:	24844638 	addiu	a0,a0,17976
  46ae54:	8f858018 	lw	a1,-32744(gp)
  46ae58:	00000000 	nop
  46ae5c:	24a53544 	addiu	a1,a1,13636
  46ae60:	8ca50000 	lw	a1,0(a1)
  46ae64:	8f998abc 	lw	t9,-30020(gp)
  46ae68:	00000000 	nop
  46ae6c:	0320f809 	jalr	t9
  46ae70:	00000000 	nop
  46ae74:	8fdc0018 	lw	gp,24(s8)
  46ae78:	00000000 	nop
	    /* ??? how can we recover? */
	}
	if (aalen != 0)
  46ae7c:	8f828018 	lw	v0,-32744(gp)
  46ae80:	00000000 	nop
  46ae84:	24423548 	addiu	v0,v0,13640
  46ae88:	8c420000 	lw	v0,0(v0)
  46ae8c:	00000000 	nop
  46ae90:	1040000e 	beqz	v0,46aecc <handle_adns_answer+0x280>
  46ae94:	00000000 	nop
	{
	    plog("EOF from adns with %lu bytes of a partial answer outstanding"
  46ae98:	8f84802c 	lw	a0,-32724(gp)
  46ae9c:	00000000 	nop
  46aea0:	24844664 	addiu	a0,a0,18020
  46aea4:	8f858018 	lw	a1,-32744(gp)
  46aea8:	00000000 	nop
  46aeac:	24a53548 	addiu	a1,a1,13640
  46aeb0:	8ca50000 	lw	a1,0(a1)
  46aeb4:	8f998abc 	lw	t9,-30020(gp)
  46aeb8:	00000000 	nop
  46aebc:	0320f809 	jalr	t9
  46aec0:	00000000 	nop
  46aec4:	8fdc0018 	lw	gp,24(s8)
  46aec8:	00000000 	nop
		, (unsigned long)aalen);
	    /* ??? how can we recover? */
	}
	stop_adns();
  46aecc:	8f998b24 	lw	t9,-29916(gp)
  46aed0:	00000000 	nop
  46aed4:	0320f809 	jalr	t9
  46aed8:	00000000 	nop
  46aedc:	8fdc0018 	lw	gp,24(s8)
  46aee0:	10000015 	b	46af38 <handle_adns_answer+0x2ec>
  46aee4:	00000000 	nop
    }
    else
    {
	passert(adns_in_flight > 0);
  46aee8:	8f828018 	lw	v0,-32744(gp)
  46aeec:	00000000 	nop
  46aef0:	24423544 	addiu	v0,v0,13636
  46aef4:	8c420000 	lw	v0,0(v0)
  46aef8:	00000000 	nop
  46aefc:	1c40000e 	bgtz	v0,46af38 <handle_adns_answer+0x2ec>
  46af00:	00000000 	nop
  46af04:	8f84802c 	lw	a0,-32724(gp)
  46af08:	00000000 	nop
  46af0c:	248446a4 	addiu	a0,a0,18084
  46af10:	8f85802c 	lw	a1,-32724(gp)
  46af14:	00000000 	nop
  46af18:	24a53e30 	addiu	a1,a1,15920
  46af1c:	24060541 	li	a2,1345
  46af20:	8f998bb8 	lw	t9,-29768(gp)
  46af24:	00000000 	nop
  46af28:	0320f809 	jalr	t9
  46af2c:	00000000 	nop
  46af30:	8fdc0018 	lw	gp,24(s8)
  46af34:	00000000 	nop
    }

    aalen += n;
  46af38:	8f828018 	lw	v0,-32744(gp)
  46af3c:	00000000 	nop
  46af40:	24423548 	addiu	v0,v0,13640
  46af44:	8c420000 	lw	v0,0(v0)
  46af48:	8fc30020 	lw	v1,32(s8)
  46af4c:	00000000 	nop
  46af50:	00431021 	addu	v0,v0,v1
  46af54:	8f818018 	lw	at,-32744(gp)
  46af58:	00000000 	nop
  46af5c:	24213548 	addiu	at,at,13640
  46af60:	ac220000 	sw	v0,0(at)

    while (aalen >= offsetof(struct adns_answer, ans) && aalen >= a.len)
  46af64:	8f828018 	lw	v0,-32744(gp)
  46af68:	00000000 	nop
  46af6c:	24423548 	addiu	v0,v0,13640
  46af70:	8c420000 	lw	v0,0(v0)
  46af74:	00000000 	nop
  46af78:	2c42001c 	sltiu	v0,v0,28
  46af7c:	14400165 	bnez	v0,46b514 <handle_adns_answer+0x8c8>
  46af80:	00000000 	nop
  46af84:	8f828018 	lw	v0,-32744(gp)
  46af88:	00000000 	nop
  46af8c:	24423548 	addiu	v0,v0,13640
  46af90:	8c420000 	lw	v0,0(v0)
  46af94:	8f838018 	lw	v1,-32744(gp)
  46af98:	00000000 	nop
  46af9c:	24637bf0 	addiu	v1,v1,31728
  46afa0:	8c630000 	lw	v1,0(v1)
  46afa4:	00000000 	nop
  46afa8:	0043102b 	sltu	v0,v0,v1
  46afac:	10400003 	beqz	v0,46afbc <handle_adns_answer+0x370>
  46afb0:	00000000 	nop
  46afb4:	10000157 	b	46b514 <handle_adns_answer+0x8c8>
  46afb8:	00000000 	nop
    {
	/* we've got a tasty answer -- process it */
	err_t ugh;
	struct adns_continuation *cr = a.continuation;
  46afbc:	8f828018 	lw	v0,-32744(gp)
  46afc0:	00000000 	nop
  46afc4:	24427bf0 	addiu	v0,v0,31728
  46afc8:	8c420010 	lw	v0,16(v0)
  46afcc:	00000000 	nop
  46afd0:	afc20028 	sw	v0,40(s8)
	const char *typename = rr_typename(cr->query.type);
  46afd4:	8fc20028 	lw	v0,40(s8)
  46afd8:	00000000 	nop
  46afdc:	8c440420 	lw	a0,1056(v0)
  46afe0:	8f998040 	lw	t9,-32704(gp)
  46afe4:	00000000 	nop
  46afe8:	27398084 	addiu	t9,t9,-32636
  46afec:	00000000 	nop
  46aff0:	0320f809 	jalr	t9
  46aff4:	00000000 	nop
  46aff8:	8fdc0018 	lw	gp,24(s8)
  46affc:	afc2002c 	sw	v0,44(s8)
	const char *name_buf = cr->query.name_buf;
  46b000:	8fc20028 	lw	v0,40(s8)
  46b004:	00000000 	nop
  46b008:	2442001c 	addiu	v0,v0,28
  46b00c:	afc20030 	sw	v0,48(s8)

	adns_in_flight--;
  46b010:	8f828018 	lw	v0,-32744(gp)
  46b014:	00000000 	nop
  46b018:	24423544 	addiu	v0,v0,13636
  46b01c:	8c420000 	lw	v0,0(v0)
  46b020:	00000000 	nop
  46b024:	2442ffff 	addiu	v0,v0,-1
  46b028:	8f818018 	lw	at,-32744(gp)
  46b02c:	00000000 	nop
  46b030:	24213544 	addiu	at,at,13636
  46b034:	ac220000 	sw	v0,0(at)
	if (a.result == -1)
  46b038:	8f838018 	lw	v1,-32744(gp)
  46b03c:	00000000 	nop
  46b040:	24637bf0 	addiu	v1,v1,31728
  46b044:	8c630014 	lw	v1,20(v1)
  46b048:	2402ffff 	li	v0,-1
  46b04c:	14620043 	bne	v1,v0,46b15c <handle_adns_answer+0x510>
  46b050:	00000000 	nop
	{
	    /* newer resolvers support statp->res_h_errno as well as h_errno.
	     * That might be better, but older resolvers don't.
	     * See resolver(3), if you have it.
	     * The undocumented(!) h_errno values are defined in
	     * /usr/include/netdb.h.
	     */
	    switch (a.h_errno_val)
  46b054:	8f828018 	lw	v0,-32744(gp)
  46b058:	00000000 	nop
  46b05c:	24427bf0 	addiu	v0,v0,31728
  46b060:	8c420018 	lw	v0,24(v0)
  46b064:	00000000 	nop
  46b068:	afc20034 	sw	v0,52(s8)
  46b06c:	24020001 	li	v0,1
  46b070:	8fc30034 	lw	v1,52(s8)
  46b074:	00000000 	nop
  46b078:	1062002b 	beq	v1,v0,46b128 <handle_adns_answer+0x4dc>
  46b07c:	00000000 	nop
  46b080:	24020004 	li	v0,4
  46b084:	8fc30034 	lw	v1,52(s8)
  46b088:	00000000 	nop
  46b08c:	10620019 	beq	v1,v0,46b0f4 <handle_adns_answer+0x4a8>
  46b090:	00000000 	nop
	    {
	    case NO_DATA:
		ugh = builddiag("no %s record for %s", typename, name_buf);
		break;
	    case HOST_NOT_FOUND:
		ugh = builddiag("no host %s for %s record", name_buf, typename);
		break;
	    default:
		ugh = builddiag("failure querying DNS for %s of %s: %s"
  46b094:	8f848018 	lw	a0,-32744(gp)
  46b098:	00000000 	nop
  46b09c:	24847bf0 	addiu	a0,a0,31728
  46b0a0:	8c840018 	lw	a0,24(a0)
  46b0a4:	8f9982e8 	lw	t9,-32024(gp)
  46b0a8:	00000000 	nop
  46b0ac:	0320f809 	jalr	t9
  46b0b0:	00000000 	nop
  46b0b4:	8fdc0018 	lw	gp,24(s8)
  46b0b8:	00000000 	nop
  46b0bc:	8f84802c 	lw	a0,-32724(gp)
  46b0c0:	00000000 	nop
  46b0c4:	248446b8 	addiu	a0,a0,18104
  46b0c8:	8fc5002c 	lw	a1,44(s8)
  46b0cc:	8fc60030 	lw	a2,48(s8)
  46b0d0:	00403821 	move	a3,v0
  46b0d4:	8f9986dc 	lw	t9,-31012(gp)
  46b0d8:	00000000 	nop
  46b0dc:	0320f809 	jalr	t9
  46b0e0:	00000000 	nop
  46b0e4:	8fdc0018 	lw	gp,24(s8)
  46b0e8:	afc20024 	sw	v0,36(s8)
		    , typename, name_buf, hstrerror(a.h_errno_val));
		break;
  46b0ec:	10000069 	b	46b294 <handle_adns_answer+0x648>
  46b0f0:	00000000 	nop
  46b0f4:	8f84802c 	lw	a0,-32724(gp)
  46b0f8:	00000000 	nop
  46b0fc:	248446e0 	addiu	a0,a0,18144
  46b100:	8fc5002c 	lw	a1,44(s8)
  46b104:	8fc60030 	lw	a2,48(s8)
  46b108:	8f9986dc 	lw	t9,-31012(gp)
  46b10c:	00000000 	nop
  46b110:	0320f809 	jalr	t9
  46b114:	00000000 	nop
  46b118:	8fdc0018 	lw	gp,24(s8)
  46b11c:	afc20024 	sw	v0,36(s8)
  46b120:	1000005c 	b	46b294 <handle_adns_answer+0x648>
  46b124:	00000000 	nop
  46b128:	8f84802c 	lw	a0,-32724(gp)
  46b12c:	00000000 	nop
  46b130:	248446f4 	addiu	a0,a0,18164
  46b134:	8fc50030 	lw	a1,48(s8)
  46b138:	8fc6002c 	lw	a2,44(s8)
  46b13c:	8f9986dc 	lw	t9,-31012(gp)
  46b140:	00000000 	nop
  46b144:	0320f809 	jalr	t9
  46b148:	00000000 	nop
  46b14c:	8fdc0018 	lw	gp,24(s8)
  46b150:	afc20024 	sw	v0,36(s8)
  46b154:	1000004f 	b	46b294 <handle_adns_answer+0x648>
  46b158:	00000000 	nop
	    }
	}
	else if (a.result > (int) sizeof(a.ans))
  46b15c:	8f828018 	lw	v0,-32744(gp)
  46b160:	00000000 	nop
  46b164:	24427bf0 	addiu	v0,v0,31728
  46b168:	8c420014 	lw	v0,20(v0)
  46b16c:	00000000 	nop
  46b170:	28421401 	slti	v0,v0,5121
  46b174:	14400010 	bnez	v0,46b1b8 <handle_adns_answer+0x56c>
  46b178:	00000000 	nop
	{
	    ugh = builddiag("(INTERNAL ERROR) answer too long (%ld) for buffer"
  46b17c:	8f84802c 	lw	a0,-32724(gp)
  46b180:	00000000 	nop
  46b184:	24844710 	addiu	a0,a0,18192
  46b188:	8f858018 	lw	a1,-32744(gp)
  46b18c:	00000000 	nop
  46b190:	24a57bf0 	addiu	a1,a1,31728
  46b194:	8ca50014 	lw	a1,20(a1)
  46b198:	8f9986dc 	lw	t9,-31012(gp)
  46b19c:	00000000 	nop
  46b1a0:	0320f809 	jalr	t9
  46b1a4:	00000000 	nop
  46b1a8:	8fdc0018 	lw	gp,24(s8)
  46b1ac:	afc20024 	sw	v0,36(s8)
  46b1b0:	10000038 	b	46b294 <handle_adns_answer+0x648>
  46b1b4:	00000000 	nop
		, (long)a.result);
	}
	else
	{
	    ugh = process_dns_answer(&cr->id
  46b1b8:	8fc20028 	lw	v0,40(s8)
  46b1bc:	00000000 	nop
  46b1c0:	24420428 	addiu	v0,v0,1064
  46b1c4:	afc20038 	sw	v0,56(s8)
  46b1c8:	8fc20028 	lw	v0,40(s8)
  46b1cc:	00000000 	nop
  46b1d0:	8c420450 	lw	v0,1104(v0)
  46b1d4:	00000000 	nop
  46b1d8:	10400007 	beqz	v0,46b1f8 <handle_adns_answer+0x5ac>
  46b1dc:	00000000 	nop
  46b1e0:	8fc20028 	lw	v0,40(s8)
  46b1e4:	00000000 	nop
  46b1e8:	24420454 	addiu	v0,v0,1108
  46b1ec:	afc2003c 	sw	v0,60(s8)
  46b1f0:	10000002 	b	46b1fc <handle_adns_answer+0x5b0>
  46b1f4:	00000000 	nop
  46b1f8:	afc0003c 	sw	zero,60(s8)
  46b1fc:	8fc20028 	lw	v0,40(s8)
  46b200:	00000000 	nop
  46b204:	8c420420 	lw	v0,1056(v0)
  46b208:	00000000 	nop
  46b20c:	afa20010 	sw	v0,16(sp)
  46b210:	8fc40038 	lw	a0,56(s8)
  46b214:	8fc5003c 	lw	a1,60(s8)
  46b218:	8f868018 	lw	a2,-32744(gp)
  46b21c:	00000000 	nop
  46b220:	24c67c0c 	addiu	a2,a2,31756
  46b224:	8f878018 	lw	a3,-32744(gp)
  46b228:	00000000 	nop
  46b22c:	24e77bf0 	addiu	a3,a3,31728
  46b230:	8ce70014 	lw	a3,20(a3)
  46b234:	8f998040 	lw	t9,-32704(gp)
  46b238:	00000000 	nop
  46b23c:	2739a070 	addiu	t9,t9,-24464
  46b240:	00000000 	nop
  46b244:	0320f809 	jalr	t9
  46b248:	00000000 	nop
  46b24c:	8fdc0018 	lw	gp,24(s8)
  46b250:	afc20024 	sw	v0,36(s8)
		, cr->sgw_specified? &cr->sgw_id : NULL
		, a.ans, a.result, cr->query.type);
	    if (ugh != NULL)
  46b254:	8fc20024 	lw	v0,36(s8)
  46b258:	00000000 	nop
  46b25c:	1040000d 	beqz	v0,46b294 <handle_adns_answer+0x648>
  46b260:	00000000 	nop
		ugh = builddiag("failure processing %s record of DNS answer for %s: %s"
  46b264:	8f84802c 	lw	a0,-32724(gp)
  46b268:	00000000 	nop
  46b26c:	24844744 	addiu	a0,a0,18244
  46b270:	8fc5002c 	lw	a1,44(s8)
  46b274:	8fc60030 	lw	a2,48(s8)
  46b278:	8fc70024 	lw	a3,36(s8)
  46b27c:	8f9986dc 	lw	t9,-31012(gp)
  46b280:	00000000 	nop
  46b284:	0320f809 	jalr	t9
  46b288:	00000000 	nop
  46b28c:	8fdc0018 	lw	gp,24(s8)
  46b290:	afc20024 	sw	v0,36(s8)
		    , typename, name_buf, ugh);
	}
	DBG(DBG_RAW | DBG_CRYPT | DBG_PARSING | DBG_CONTROL | DBG_DNS,
  46b294:	8f8284f8 	lw	v0,-31496(gp)
  46b298:	00000000 	nop
  46b29c:	8c420000 	lw	v0,0(v0)
  46b2a0:	00000000 	nop
  46b2a4:	30420117 	andi	v0,v0,0x117
  46b2a8:	10400023 	beqz	v0,46b338 <handle_adns_answer+0x6ec>
  46b2ac:	00000000 	nop
  46b2b0:	8f84802c 	lw	a0,-32724(gp)
  46b2b4:	00000000 	nop
  46b2b8:	2484477c 	addiu	a0,a0,18300
  46b2bc:	8f9983b8 	lw	t9,-31816(gp)
  46b2c0:	00000000 	nop
  46b2c4:	0320f809 	jalr	t9
  46b2c8:	00000000 	nop
  46b2cc:	8fdc0018 	lw	gp,24(s8)
  46b2d0:	8fc20024 	lw	v0,36(s8)
  46b2d4:	00000000 	nop
  46b2d8:	1440000d 	bnez	v0,46b310 <handle_adns_answer+0x6c4>
  46b2dc:	00000000 	nop
  46b2e0:	8f84802c 	lw	a0,-32724(gp)
  46b2e4:	00000000 	nop
  46b2e8:	24844780 	addiu	a0,a0,18304
  46b2ec:	8fc5002c 	lw	a1,44(s8)
  46b2f0:	8fc60030 	lw	a2,48(s8)
  46b2f4:	8f9983b8 	lw	t9,-31816(gp)
  46b2f8:	00000000 	nop
  46b2fc:	0320f809 	jalr	t9
  46b300:	00000000 	nop
  46b304:	8fdc0018 	lw	gp,24(s8)
  46b308:	1000000b 	b	46b338 <handle_adns_answer+0x6ec>
  46b30c:	00000000 	nop
  46b310:	8f84802c 	lw	a0,-32724(gp)
  46b314:	00000000 	nop
  46b318:	248447a0 	addiu	a0,a0,18336
  46b31c:	8fc50024 	lw	a1,36(s8)
  46b320:	8f9983b8 	lw	t9,-31816(gp)
  46b324:	00000000 	nop
  46b328:	0320f809 	jalr	t9
  46b32c:	00000000 	nop
  46b330:	8fdc0018 	lw	gp,24(s8)
  46b334:	00000000 	nop
	    DBG_log(BLANK_FORMAT);
	    if (ugh == NULL)
		DBG_log("asynch DNS answer for %s of %s", typename, name_buf);
	    else
		DBG_log("asynch DNS answer %s", ugh);
	    );

	passert(GLOBALS_ARE_RESET());
  46b338:	8f838994 	lw	v1,-30316(gp)
  46b33c:	00000000 	nop
  46b340:	8c630000 	lw	v1,0(v1)
  46b344:	2402ffff 	li	v0,-1
  46b348:	14620065 	bne	v1,v0,46b4e0 <handle_adns_answer+0x894>
  46b34c:	00000000 	nop
  46b350:	8f8287f8 	lw	v0,-30728(gp)
  46b354:	00000000 	nop
  46b358:	8c420000 	lw	v0,0(v0)
  46b35c:	00000000 	nop
  46b360:	1440005f 	bnez	v0,46b4e0 <handle_adns_answer+0x894>
  46b364:	00000000 	nop
  46b368:	8f8288c8 	lw	v0,-30520(gp)
  46b36c:	00000000 	nop
  46b370:	8c420000 	lw	v0,0(v0)
  46b374:	00000000 	nop
  46b378:	14400059 	bnez	v0,46b4e0 <handle_adns_answer+0x894>
  46b37c:	00000000 	nop
  46b380:	8f828748 	lw	v0,-30904(gp)
  46b384:	00000000 	nop
  46b388:	8c420000 	lw	v0,0(v0)
  46b38c:	00000000 	nop
  46b390:	14400053 	bnez	v0,46b4e0 <handle_adns_answer+0x894>
  46b394:	00000000 	nop
  46b398:	8f8384f8 	lw	v1,-31496(gp)
  46b39c:	00000000 	nop
  46b3a0:	8c630000 	lw	v1,0(v1)
  46b3a4:	8f82830c 	lw	v0,-31988(gp)
  46b3a8:	00000000 	nop
  46b3ac:	8c420000 	lw	v0,0(v0)
  46b3b0:	00000000 	nop
  46b3b4:	1462004a 	bne	v1,v0,46b4e0 <handle_adns_answer+0x894>
  46b3b8:	00000000 	nop
	cr->cont_fn(cr, ugh);
  46b3bc:	8fc20028 	lw	v0,40(s8)
  46b3c0:	00000000 	nop
  46b3c4:	8c420000 	lw	v0,0(v0)
  46b3c8:	8fc40028 	lw	a0,40(s8)
  46b3cc:	8fc50024 	lw	a1,36(s8)
  46b3d0:	0040c821 	move	t9,v0
  46b3d4:	0320f809 	jalr	t9
  46b3d8:	00000000 	nop
  46b3dc:	8fdc0018 	lw	gp,24(s8)
  46b3e0:	00000000 	nop
	reset_globals();
  46b3e4:	2402ffff 	li	v0,-1
  46b3e8:	8f818994 	lw	at,-30316(gp)
  46b3ec:	00000000 	nop
  46b3f0:	ac220000 	sw	v0,0(at)
  46b3f4:	8f8187f8 	lw	at,-30728(gp)
  46b3f8:	00000000 	nop
  46b3fc:	ac200000 	sw	zero,0(at)
  46b400:	8f818748 	lw	at,-30904(gp)
  46b404:	00000000 	nop
  46b408:	ac200000 	sw	zero,0(at)
  46b40c:	8f8188c8 	lw	at,-30520(gp)
  46b410:	00000000 	nop
  46b414:	ac200000 	sw	zero,0(at)
  46b418:	8f82830c 	lw	v0,-31988(gp)
  46b41c:	00000000 	nop
  46b420:	8c420000 	lw	v0,0(v0)
  46b424:	8f8184f8 	lw	at,-31496(gp)
  46b428:	00000000 	nop
  46b42c:	ac220000 	sw	v0,0(at)
	release_adns_continuation(cr);
  46b430:	8fc40028 	lw	a0,40(s8)
  46b434:	8f998ad8 	lw	t9,-29992(gp)
  46b438:	00000000 	nop
  46b43c:	0320f809 	jalr	t9
  46b440:	00000000 	nop
  46b444:	8fdc0018 	lw	gp,24(s8)
  46b448:	00000000 	nop

	/* shift out answer that we've consumed */
	aalen -= a.len;
  46b44c:	8f838018 	lw	v1,-32744(gp)
  46b450:	00000000 	nop
  46b454:	24633548 	addiu	v1,v1,13640
  46b458:	8c630000 	lw	v1,0(v1)
  46b45c:	8f828018 	lw	v0,-32744(gp)
  46b460:	00000000 	nop
  46b464:	24427bf0 	addiu	v0,v0,31728
  46b468:	8c420000 	lw	v0,0(v0)
  46b46c:	00000000 	nop
  46b470:	00621023 	subu	v0,v1,v0
  46b474:	8f818018 	lw	at,-32744(gp)
  46b478:	00000000 	nop
  46b47c:	24213548 	addiu	at,at,13640
  46b480:	ac220000 	sw	v0,0(at)
	memmove((unsigned char *)&a, (unsigned char *)&a + a.len, aalen);
  46b484:	8f828018 	lw	v0,-32744(gp)
  46b488:	00000000 	nop
  46b48c:	24427bf0 	addiu	v0,v0,31728
  46b490:	8c420000 	lw	v0,0(v0)
  46b494:	8f818018 	lw	at,-32744(gp)
  46b498:	00000000 	nop
  46b49c:	24217bf0 	addiu	at,at,31728
  46b4a0:	00221021 	addu	v0,at,v0
  46b4a4:	8f848018 	lw	a0,-32744(gp)
  46b4a8:	00000000 	nop
  46b4ac:	24847bf0 	addiu	a0,a0,31728
  46b4b0:	00402821 	move	a1,v0
  46b4b4:	8f868018 	lw	a2,-32744(gp)
  46b4b8:	00000000 	nop
  46b4bc:	24c63548 	addiu	a2,a2,13640
  46b4c0:	8cc60000 	lw	a2,0(a2)
  46b4c4:	8f998b5c 	lw	t9,-29860(gp)
  46b4c8:	00000000 	nop
  46b4cc:	0320f809 	jalr	t9
  46b4d0:	00000000 	nop
  46b4d4:	8fdc0018 	lw	gp,24(s8)
  46b4d8:	1000fea2 	b	46af64 <handle_adns_answer+0x318>
  46b4dc:	00000000 	nop
  46b4e0:	8f84802c 	lw	a0,-32724(gp)
  46b4e4:	00000000 	nop
  46b4e8:	248447b8 	addiu	a0,a0,18360
  46b4ec:	8f85802c 	lw	a1,-32724(gp)
  46b4f0:	00000000 	nop
  46b4f4:	24a53e30 	addiu	a1,a1,15920
  46b4f8:	2406057b 	li	a2,1403
  46b4fc:	8f998bb8 	lw	t9,-29768(gp)
  46b500:	00000000 	nop
  46b504:	0320f809 	jalr	t9
  46b508:	00000000 	nop
  46b50c:	8fdc0018 	lw	gp,24(s8)
  46b510:	00000000 	nop
    }
    passert(gateways_from_dns == NULL && keys_from_dns == NULL);
  46b514:	8f828204 	lw	v0,-32252(gp)
  46b518:	00000000 	nop
  46b51c:	8c420000 	lw	v0,0(v0)
  46b520:	00000000 	nop
  46b524:	14400009 	bnez	v0,46b54c <handle_adns_answer+0x900>
  46b528:	00000000 	nop
  46b52c:	8f828394 	lw	v0,-31852(gp)
  46b530:	00000000 	nop
  46b534:	8c420000 	lw	v0,0(v0)
  46b538:	00000000 	nop
  46b53c:	14400003 	bnez	v0,46b54c <handle_adns_answer+0x900>
  46b540:	00000000 	nop
  46b544:	1000000e 	b	46b580 <handle_adns_answer+0x934>
  46b548:	00000000 	nop
  46b54c:	8f84802c 	lw	a0,-32724(gp)
  46b550:	00000000 	nop
  46b554:	248445b4 	addiu	a0,a0,17844
  46b558:	8f85802c 	lw	a1,-32724(gp)
  46b55c:	00000000 	nop
  46b560:	24a53e30 	addiu	a1,a1,15920
  46b564:	24060584 	li	a2,1412
  46b568:	8f998bb8 	lw	t9,-29768(gp)
  46b56c:	00000000 	nop
  46b570:	0320f809 	jalr	t9
  46b574:	00000000 	nop
  46b578:	8fdc0018 	lw	gp,24(s8)
  46b57c:	00000000 	nop
}
  46b580:	03c0e821 	move	sp,s8
  46b584:	8fbf0048 	lw	ra,72(sp)
  46b588:	8fbe0044 	lw	s8,68(sp)
  46b58c:	27bd0050 	addiu	sp,sp,80
  46b590:	03e00008 	jr	ra
  46b594:	00000000 	nop

0046b598 <release_adns_continuation>:
  46b598:	3c1c0fba 	lui	gp,0xfba
  46b59c:	279c13d8 	addiu	gp,gp,5080
  46b5a0:	0399e021 	addu	gp,gp,t9
  46b5a4:	27bdffd8 	addiu	sp,sp,-40
  46b5a8:	afbc0010 	sw	gp,16(sp)
  46b5ac:	afbf0020 	sw	ra,32(sp)
  46b5b0:	afbe001c 	sw	s8,28(sp)
  46b5b4:	afbc0018 	sw	gp,24(sp)
  46b5b8:	03a0f021 	move	s8,sp
  46b5bc:	afc40028 	sw	a0,40(s8)

void
release_adns_continuation(struct adns_continuation *cr)
{
    passert(gateways_from_dns == NULL && keys_from_dns == NULL);
  46b5c0:	8f828204 	lw	v0,-32252(gp)
  46b5c4:	00000000 	nop
  46b5c8:	8c420000 	lw	v0,0(v0)
  46b5cc:	00000000 	nop
  46b5d0:	14400009 	bnez	v0,46b5f8 <release_adns_continuation+0x60>
  46b5d4:	00000000 	nop
  46b5d8:	8f828394 	lw	v0,-31852(gp)
  46b5dc:	00000000 	nop
  46b5e0:	8c420000 	lw	v0,0(v0)
  46b5e4:	00000000 	nop
  46b5e8:	14400003 	bnez	v0,46b5f8 <release_adns_continuation+0x60>
  46b5ec:	00000000 	nop
  46b5f0:	1000000e 	b	46b62c <release_adns_continuation+0x94>
  46b5f4:	00000000 	nop
  46b5f8:	8f84802c 	lw	a0,-32724(gp)
  46b5fc:	00000000 	nop
  46b600:	248445b4 	addiu	a0,a0,17844
  46b604:	8f85802c 	lw	a1,-32724(gp)
  46b608:	00000000 	nop
  46b60c:	24a53e30 	addiu	a1,a1,15920
  46b610:	2406058a 	li	a2,1418
  46b614:	8f998bb8 	lw	t9,-29768(gp)
  46b618:	00000000 	nop
  46b61c:	0320f809 	jalr	t9
  46b620:	00000000 	nop
  46b624:	8fdc0010 	lw	gp,16(s8)
  46b628:	00000000 	nop
    unshare_id_content(&cr->id);
  46b62c:	8fc20028 	lw	v0,40(s8)
  46b630:	00000000 	nop
  46b634:	24420428 	addiu	v0,v0,1064
  46b638:	00402021 	move	a0,v0
  46b63c:	8f99847c 	lw	t9,-31620(gp)
  46b640:	00000000 	nop
  46b644:	0320f809 	jalr	t9
  46b648:	00000000 	nop
  46b64c:	8fdc0010 	lw	gp,16(s8)
  46b650:	00000000 	nop
    unshare_id_content(&cr->sgw_id);
  46b654:	8fc20028 	lw	v0,40(s8)
  46b658:	00000000 	nop
  46b65c:	24420454 	addiu	v0,v0,1108
  46b660:	00402021 	move	a0,v0
  46b664:	8f99847c 	lw	t9,-31620(gp)
  46b668:	00000000 	nop
  46b66c:	0320f809 	jalr	t9
  46b670:	00000000 	nop
  46b674:	8fdc0010 	lw	gp,16(s8)
  46b678:	00000000 	nop
    pfree(cr);
  46b67c:	8fc40028 	lw	a0,40(s8)
  46b680:	8f998094 	lw	t9,-32620(gp)
  46b684:	00000000 	nop
  46b688:	0320f809 	jalr	t9
  46b68c:	00000000 	nop
  46b690:	8fdc0010 	lw	gp,16(s8)
  46b694:	00000000 	nop
}
  46b698:	03c0e821 	move	sp,s8
  46b69c:	8fbf0020 	lw	ra,32(sp)
  46b6a0:	8fbe001c 	lw	s8,28(sp)
  46b6a4:	27bd0028 	addiu	sp,sp,40
  46b6a8:	03e00008 	jr	ra
  46b6ac:	00000000 	nop

0046b6b0 <generate_rnd_byte>:
  46b6b0:	3c1c0fba 	lui	gp,0xfba
  46b6b4:	279c12c0 	addiu	gp,gp,4800
  46b6b8:	0399e021 	addu	gp,gp,t9
  46b6bc:	27bdffd0 	addiu	sp,sp,-48
  46b6c0:	afbc0010 	sw	gp,16(sp)
  46b6c4:	afbf0028 	sw	ra,40(sp)
  46b6c8:	afbe0024 	sw	s8,36(sp)
  46b6cc:	afbc0020 	sw	gp,32(sp)
  46b6d0:	03a0f021 	move	s8,sp
generate_rnd_byte(void)
{
    u_char c;

    if (read(random_fd, &c, sizeof(c)) == -1)
  46b6d4:	8f848018 	lw	a0,-32744(gp)
  46b6d8:	00000000 	nop
  46b6dc:	24843550 	addiu	a0,a0,13648
  46b6e0:	8c840000 	lw	a0,0(a0)
  46b6e4:	27c50018 	addiu	a1,s8,24
  46b6e8:	24060001 	li	a2,1
  46b6ec:	8f998664 	lw	t9,-31132(gp)
  46b6f0:	00000000 	nop
  46b6f4:	0320f809 	jalr	t9
  46b6f8:	00000000 	nop
  46b6fc:	8fdc0010 	lw	gp,16(s8)
  46b700:	00401821 	move	v1,v0
  46b704:	2402ffff 	li	v0,-1
  46b708:	14620013 	bne	v1,v0,46b758 <generate_rnd_byte+0xa8>
  46b70c:	00000000 	nop
	exit_log_errno((e, "read() failed in get_rnd_byte()"));
  46b710:	8f998234 	lw	t9,-32204(gp)
  46b714:	00000000 	nop
  46b718:	0320f809 	jalr	t9
  46b71c:	00000000 	nop
  46b720:	8fdc0010 	lw	gp,16(s8)
  46b724:	8c420000 	lw	v0,0(v0)
  46b728:	00000000 	nop
  46b72c:	afc2001c 	sw	v0,28(s8)
  46b730:	8fc4001c 	lw	a0,28(s8)
  46b734:	8f85802c 	lw	a1,-32724(gp)
  46b738:	00000000 	nop
  46b73c:	24a547d0 	addiu	a1,a1,18384
  46b740:	8f998154 	lw	t9,-32428(gp)
  46b744:	00000000 	nop
  46b748:	0320f809 	jalr	t9
  46b74c:	00000000 	nop
  46b750:	8fdc0010 	lw	gp,16(s8)
  46b754:	00000000 	nop

    return c;
  46b758:	93c20018 	lbu	v0,24(s8)
  46b75c:	00000000 	nop
}
  46b760:	03c0e821 	move	sp,s8
  46b764:	8fbf0028 	lw	ra,40(sp)
  46b768:	8fbe0024 	lw	s8,36(sp)
  46b76c:	27bd0030 	addiu	sp,sp,48
  46b770:	03e00008 	jr	ra
  46b774:	00000000 	nop

0046b778 <mix_pool>:
  46b778:	3c1c0fba 	lui	gp,0xfba
  46b77c:	279c11f8 	addiu	gp,gp,4600
  46b780:	0399e021 	addu	gp,gp,t9
  46b784:	27bdff78 	addiu	sp,sp,-136
  46b788:	afbc0010 	sw	gp,16(sp)
  46b78c:	afbf0080 	sw	ra,128(sp)
  46b790:	afbe007c 	sw	s8,124(sp)
  46b794:	afbc0078 	sw	gp,120(sp)
  46b798:	03a0f021 	move	s8,sp

#else /* !USE_DEV_RANDOM */

/* Generate (what we hope is) a true random byte using the clock skew trick.
 * Note: this code is not maintained!  In particular, LINUX signal(2)
 * semantics changed with glibc2 (and not for the better).  It isn't clear
 * that this code will work.  We keep the code because someday it might
 * come in handy.
 */
# error "This code is not maintained.  Please define USE_DEV_RANDOM."

static volatile sig_atomic_t i, j, k;

/* timer signal handler */
static void
rnd_handler(int ignore_me UNUSED)
{
    k <<= 1;        /* Shift left by 1 */
    j++;
    k |= (i & 0x1); /* Get lsbit of counter */

    if (j != 8)
	signal(SIGVTALRM, rnd_handler);
}

static u_char
generate_rnd_byte(void)
{
    struct itimerval tmval, ntmval;

# ifdef NEVER	/* ??? */
#  ifdef linux
    int mask = siggetmask();

    mask |= SIGVTALRM;
    sigsetmask(mask);
#  endif
# endif

    i = 0;
    j = 0;

    ntmval.it_interval.tv_sec = 0;
    ntmval.it_interval.tv_usec = 1;
    ntmval.it_value.tv_sec = 0;
    ntmval.it_value.tv_usec = 1;
    signal(SIGVTALRM, rnd_handler);
    setitimer(ITIMER_VIRTUAL, &ntmval, &tmval);

    while (j != 8)
	i++;

    setitimer(ITIMER_VIRTUAL, &tmval, &ntmval);
    signal(SIGVTALRM, SIG_IGN);

# ifdef NEVER	/* ??? */
#  ifdef linux
    mask ^= SIGVTALRM;
    sigsetmask(mask);
#  endif
# endif

    return k;
}

#endif /* !USE_DEV_RANDOM */

static void
mix_pool(void)
{
    SHA1_CTX ctx;

    SHA1Init(&ctx);
  46b79c:	27c40018 	addiu	a0,s8,24
  46b7a0:	8f998a84 	lw	t9,-30076(gp)
  46b7a4:	00000000 	nop
  46b7a8:	0320f809 	jalr	t9
  46b7ac:	00000000 	nop
  46b7b0:	8fdc0010 	lw	gp,16(s8)
  46b7b4:	00000000 	nop
    SHA1Update(&ctx, random_pool, RANDOM_POOL_SIZE);
  46b7b8:	27c40018 	addiu	a0,s8,24
  46b7bc:	8f858044 	lw	a1,-32700(gp)
  46b7c0:	00000000 	nop
  46b7c4:	24a59010 	addiu	a1,a1,-28656
  46b7c8:	24060014 	li	a2,20
  46b7cc:	8f998ae0 	lw	t9,-29984(gp)
  46b7d0:	00000000 	nop
  46b7d4:	0320f809 	jalr	t9
  46b7d8:	00000000 	nop
  46b7dc:	8fdc0010 	lw	gp,16(s8)
  46b7e0:	00000000 	nop
    SHA1Final(random_pool, &ctx);
  46b7e4:	8f848044 	lw	a0,-32700(gp)
  46b7e8:	00000000 	nop
  46b7ec:	24849010 	addiu	a0,a0,-28656
  46b7f0:	27c50018 	addiu	a1,s8,24
  46b7f4:	8f998298 	lw	t9,-32104(gp)
  46b7f8:	00000000 	nop
  46b7fc:	0320f809 	jalr	t9
  46b800:	00000000 	nop
  46b804:	8fdc0010 	lw	gp,16(s8)
  46b808:	00000000 	nop
}
  46b80c:	03c0e821 	move	sp,s8
  46b810:	8fbf0080 	lw	ra,128(sp)
  46b814:	8fbe007c 	lw	s8,124(sp)
  46b818:	27bd0088 	addiu	sp,sp,136
  46b81c:	03e00008 	jr	ra
  46b820:	00000000 	nop

0046b824 <get_rnd_byte>:
  46b824:	3c1c0fba 	lui	gp,0xfba
  46b828:	279c114c 	addiu	gp,gp,4428
  46b82c:	0399e021 	addu	gp,gp,t9
  46b830:	27bdffd8 	addiu	sp,sp,-40
  46b834:	afbc0010 	sw	gp,16(sp)
  46b838:	afbf0020 	sw	ra,32(sp)
  46b83c:	afbe001c 	sw	s8,28(sp)
  46b840:	afbc0018 	sw	gp,24(sp)
  46b844:	03a0f021 	move	s8,sp

/*
 * Get a single random byte.
 */
static u_char
get_rnd_byte(void)
{
    random_pool[RANDOM_POOL_SIZE - 1] = generate_rnd_byte();
  46b848:	8f998040 	lw	t9,-32704(gp)
  46b84c:	00000000 	nop
  46b850:	2739b6b0 	addiu	t9,t9,-18768
  46b854:	00000000 	nop
  46b858:	0320f809 	jalr	t9
  46b85c:	00000000 	nop
  46b860:	8fdc0010 	lw	gp,16(s8)
  46b864:	00000000 	nop
  46b868:	8f818044 	lw	at,-32700(gp)
  46b86c:	00000000 	nop
  46b870:	24219010 	addiu	at,at,-28656
  46b874:	a0220013 	sb	v0,19(at)
    random_pool[0] = generate_rnd_byte();
  46b878:	8f998040 	lw	t9,-32704(gp)
  46b87c:	00000000 	nop
  46b880:	2739b6b0 	addiu	t9,t9,-18768
  46b884:	00000000 	nop
  46b888:	0320f809 	jalr	t9
  46b88c:	00000000 	nop
  46b890:	8fdc0010 	lw	gp,16(s8)
  46b894:	00000000 	nop
  46b898:	8f818044 	lw	at,-32700(gp)
  46b89c:	00000000 	nop
  46b8a0:	24219010 	addiu	at,at,-28656
  46b8a4:	a0220000 	sb	v0,0(at)
    mix_pool();
  46b8a8:	8f998040 	lw	t9,-32704(gp)
  46b8ac:	00000000 	nop
  46b8b0:	2739b778 	addiu	t9,t9,-18568
  46b8b4:	00000000 	nop
  46b8b8:	0320f809 	jalr	t9
  46b8bc:	00000000 	nop
  46b8c0:	8fdc0010 	lw	gp,16(s8)
  46b8c4:	00000000 	nop
    return random_pool[0];
  46b8c8:	8f828044 	lw	v0,-32700(gp)
  46b8cc:	00000000 	nop
  46b8d0:	24429010 	addiu	v0,v0,-28656
  46b8d4:	90420000 	lbu	v0,0(v0)
  46b8d8:	00000000 	nop
}
  46b8dc:	03c0e821 	move	sp,s8
  46b8e0:	8fbf0020 	lw	ra,32(sp)
  46b8e4:	8fbe001c 	lw	s8,28(sp)
  46b8e8:	27bd0028 	addiu	sp,sp,40
  46b8ec:	03e00008 	jr	ra
  46b8f0:	00000000 	nop

0046b8f4 <get_rnd_bytes>:
  46b8f4:	3c1c0fba 	lui	gp,0xfba
  46b8f8:	279c107c 	addiu	gp,gp,4220
  46b8fc:	0399e021 	addu	gp,gp,t9
  46b900:	27bdffd0 	addiu	sp,sp,-48
  46b904:	afbc0010 	sw	gp,16(sp)
  46b908:	afbf0028 	sw	ra,40(sp)
  46b90c:	afbe0024 	sw	s8,36(sp)
  46b910:	afbc0020 	sw	gp,32(sp)
  46b914:	03a0f021 	move	s8,sp
  46b918:	afc40030 	sw	a0,48(s8)
  46b91c:	afc50034 	sw	a1,52(s8)

#endif /* !USE_ARC4RANDOM */	/**** end of large #else ****/

void
get_rnd_bytes(u_char *buffer, int length)
{
    int i;

    for (i = 0; i < length; i++)
  46b920:	afc00018 	sw	zero,24(s8)
  46b924:	8fc20018 	lw	v0,24(s8)
  46b928:	8fc30034 	lw	v1,52(s8)
  46b92c:	00000000 	nop
  46b930:	0043102a 	slt	v0,v0,v1
  46b934:	14400003 	bnez	v0,46b944 <get_rnd_bytes+0x50>
  46b938:	00000000 	nop
  46b93c:	10000014 	b	46b990 <get_rnd_bytes+0x9c>
  46b940:	00000000 	nop
	buffer[i] = get_rnd_byte();
  46b944:	8f998040 	lw	t9,-32704(gp)
  46b948:	00000000 	nop
  46b94c:	2739b824 	addiu	t9,t9,-18396
  46b950:	00000000 	nop
  46b954:	0320f809 	jalr	t9
  46b958:	00000000 	nop
  46b95c:	8fdc0010 	lw	gp,16(s8)
  46b960:	00402021 	move	a0,v0
  46b964:	8fc30030 	lw	v1,48(s8)
  46b968:	8fc20018 	lw	v0,24(s8)
  46b96c:	00000000 	nop
  46b970:	00621021 	addu	v0,v1,v0
  46b974:	a0440000 	sb	a0,0(v0)
  46b978:	8fc20018 	lw	v0,24(s8)
  46b97c:	00000000 	nop
  46b980:	24420001 	addiu	v0,v0,1
  46b984:	afc20018 	sw	v0,24(s8)
  46b988:	1000ffe6 	b	46b924 <get_rnd_bytes+0x30>
  46b98c:	00000000 	nop
}
  46b990:	03c0e821 	move	sp,s8
  46b994:	8fbf0028 	lw	ra,40(sp)
  46b998:	8fbe0024 	lw	s8,36(sp)
  46b99c:	27bd0030 	addiu	sp,sp,48
  46b9a0:	03e00008 	jr	ra
  46b9a4:	00000000 	nop

0046b9a8 <init_rnd_pool>:
  46b9a8:	3c1c0fba 	lui	gp,0xfba
  46b9ac:	279c0fc8 	addiu	gp,gp,4040
  46b9b0:	0399e021 	addu	gp,gp,t9
  46b9b4:	27bdffd0 	addiu	sp,sp,-48
  46b9b8:	afbc0010 	sw	gp,16(sp)
  46b9bc:	afbf0028 	sw	ra,40(sp)
  46b9c0:	afbe0024 	sw	s8,36(sp)
  46b9c4:	afbc0020 	sw	gp,32(sp)
  46b9c8:	03a0f021 	move	s8,sp

/*
 * Initialize the random pool.
 */
void
init_rnd_pool(void)
{
#ifndef USE_ARC4RANDOM
# ifdef USE_DEV_RANDOM
    DBG(DBG_KLIPS, DBG_log("opening %s", RANDOM_PATH));
  46b9cc:	8f8284f8 	lw	v0,-31496(gp)
  46b9d0:	00000000 	nop
  46b9d4:	8c420000 	lw	v0,0(v0)
  46b9d8:	00000000 	nop
  46b9dc:	30420040 	andi	v0,v0,0x40
  46b9e0:	1040000d 	beqz	v0,46ba18 <init_rnd_pool+0x70>
  46b9e4:	00000000 	nop
  46b9e8:	8f84802c 	lw	a0,-32724(gp)
  46b9ec:	00000000 	nop
  46b9f0:	248447f0 	addiu	a0,a0,18416
  46b9f4:	8f85802c 	lw	a1,-32724(gp)
  46b9f8:	00000000 	nop
  46b9fc:	24a547fc 	addiu	a1,a1,18428
  46ba00:	8f9983b8 	lw	t9,-31816(gp)
  46ba04:	00000000 	nop
  46ba08:	0320f809 	jalr	t9
  46ba0c:	00000000 	nop
  46ba10:	8fdc0010 	lw	gp,16(s8)
  46ba14:	00000000 	nop
    random_fd = open(RANDOM_PATH, O_RDONLY);
  46ba18:	8f84802c 	lw	a0,-32724(gp)
  46ba1c:	00000000 	nop
  46ba20:	248447fc 	addiu	a0,a0,18428
  46ba24:	00002821 	move	a1,zero
  46ba28:	8f998174 	lw	t9,-32396(gp)
  46ba2c:	00000000 	nop
  46ba30:	0320f809 	jalr	t9
  46ba34:	00000000 	nop
  46ba38:	8fdc0010 	lw	gp,16(s8)
  46ba3c:	00000000 	nop
  46ba40:	8f818018 	lw	at,-32744(gp)
  46ba44:	00000000 	nop
  46ba48:	24213550 	addiu	at,at,13648
  46ba4c:	ac220000 	sw	v0,0(at)
    if (random_fd == -1)
  46ba50:	8f838018 	lw	v1,-32744(gp)
  46ba54:	00000000 	nop
  46ba58:	24633550 	addiu	v1,v1,13648
  46ba5c:	8c630000 	lw	v1,0(v1)
  46ba60:	2402ffff 	li	v0,-1
  46ba64:	14620016 	bne	v1,v0,46bac0 <init_rnd_pool+0x118>
  46ba68:	00000000 	nop
	exit_log_errno((e, "open of %s failed in init_rnd_pool()", RANDOM_PATH));
  46ba6c:	8f998234 	lw	t9,-32204(gp)
  46ba70:	00000000 	nop
  46ba74:	0320f809 	jalr	t9
  46ba78:	00000000 	nop
  46ba7c:	8fdc0010 	lw	gp,16(s8)
  46ba80:	8c420000 	lw	v0,0(v0)
  46ba84:	00000000 	nop
  46ba88:	afc20018 	sw	v0,24(s8)
  46ba8c:	8fc40018 	lw	a0,24(s8)
  46ba90:	8f85802c 	lw	a1,-32724(gp)
  46ba94:	00000000 	nop
  46ba98:	24a5480c 	addiu	a1,a1,18444
  46ba9c:	8f86802c 	lw	a2,-32724(gp)
  46baa0:	00000000 	nop
  46baa4:	24c647fc 	addiu	a2,a2,18428
  46baa8:	8f998154 	lw	t9,-32428(gp)
  46baac:	00000000 	nop
  46bab0:	0320f809 	jalr	t9
  46bab4:	00000000 	nop
  46bab8:	8fdc0010 	lw	gp,16(s8)
  46babc:	00000000 	nop
# endif

    get_rnd_bytes(random_pool, RANDOM_POOL_SIZE);
  46bac0:	8f848044 	lw	a0,-32700(gp)
  46bac4:	00000000 	nop
  46bac8:	24849010 	addiu	a0,a0,-28656
  46bacc:	24050014 	li	a1,20
  46bad0:	8f9980bc 	lw	t9,-32580(gp)
  46bad4:	00000000 	nop
  46bad8:	0320f809 	jalr	t9
  46badc:	00000000 	nop
  46bae0:	8fdc0010 	lw	gp,16(s8)
  46bae4:	00000000 	nop
    mix_pool();
  46bae8:	8f998040 	lw	t9,-32704(gp)
  46baec:	00000000 	nop
  46baf0:	2739b778 	addiu	t9,t9,-18568
  46baf4:	00000000 	nop
  46baf8:	0320f809 	jalr	t9
  46bafc:	00000000 	nop
  46bb00:	8fdc0010 	lw	gp,16(s8)
  46bb04:	00000000 	nop
#endif /* !USE_ARC4RANDOM */

    /* start of rand(3) on the right foot */
    {
	unsigned int seed;

	get_rnd_bytes((void *)&seed, sizeof(seed));
  46bb08:	27c40018 	addiu	a0,s8,24
  46bb0c:	24050004 	li	a1,4
  46bb10:	8f9980bc 	lw	t9,-32580(gp)
  46bb14:	00000000 	nop
  46bb18:	0320f809 	jalr	t9
  46bb1c:	00000000 	nop
  46bb20:	8fdc0010 	lw	gp,16(s8)
  46bb24:	00000000 	nop
	srand(seed);
  46bb28:	8fc40018 	lw	a0,24(s8)
  46bb2c:	8f9984d8 	lw	t9,-31528(gp)
  46bb30:	00000000 	nop
  46bb34:	0320f809 	jalr	t9
  46bb38:	00000000 	nop
  46bb3c:	8fdc0010 	lw	gp,16(s8)
  46bb40:	00000000 	nop
    }
}
  46bb44:	03c0e821 	move	sp,s8
  46bb48:	8fbf0028 	lw	ra,40(sp)
  46bb4c:	8fbe0024 	lw	s8,36(sp)
  46bb50:	27bd0030 	addiu	sp,sp,48
  46bb54:	03e00008 	jr	ra
  46bb58:	00000000 	nop

0046bb5c <init_secret>:
  46bb5c:	3c1c0fba 	lui	gp,0xfba
  46bb60:	279c0e14 	addiu	gp,gp,3604
  46bb64:	0399e021 	addu	gp,gp,t9
  46bb68:	27bdffd8 	addiu	sp,sp,-40
  46bb6c:	afbc0010 	sw	gp,16(sp)
  46bb70:	afbf0020 	sw	ra,32(sp)
  46bb74:	afbe001c 	sw	s8,28(sp)
  46bb78:	afbc0018 	sw	gp,24(sp)
  46bb7c:	03a0f021 	move	s8,sp

u_char    secret_of_the_day[SHA1_DIGEST_SIZE];

void
init_secret(void)
{
    /*
     * Generate the secret value for responder cookies, and
     * schedule an event for refresh.
     */
    get_rnd_bytes(secret_of_the_day, sizeof(secret_of_the_day));
  46bb80:	8f8480dc 	lw	a0,-32548(gp)
  46bb84:	24050014 	li	a1,20
  46bb88:	8f9980bc 	lw	t9,-32580(gp)
  46bb8c:	00000000 	nop
  46bb90:	0320f809 	jalr	t9
  46bb94:	00000000 	nop
  46bb98:	8fdc0010 	lw	gp,16(s8)
  46bb9c:	00000000 	nop
    event_schedule(EVENT_REINIT_SECRET, EVENT_REINIT_SECRET_DELAY, NULL);
  46bba0:	24040001 	li	a0,1
  46bba4:	24050e10 	li	a1,3600
  46bba8:	00003021 	move	a2,zero
  46bbac:	8f998410 	lw	t9,-31728(gp)
  46bbb0:	00000000 	nop
  46bbb4:	0320f809 	jalr	t9
  46bbb8:	00000000 	nop
  46bbbc:	8fdc0010 	lw	gp,16(s8)
  46bbc0:	00000000 	nop
}
  46bbc4:	03c0e821 	move	sp,s8
  46bbc8:	8fbf0020 	lw	ra,32(sp)
  46bbcc:	8fbe001c 	lw	s8,28(sp)
  46bbd0:	27bd0028 	addiu	sp,sp,40
  46bbd4:	03e00008 	jr	ra
  46bbd8:	00000000 	nop
  46bbdc:	00000000 	nop

0046bbe0 <out_attr>:
  46bbe0:	3c1c0fba 	lui	gp,0xfba
  46bbe4:	279c0d90 	addiu	gp,gp,3472
  46bbe8:	0399e021 	addu	gp,gp,t9
  46bbec:	27bdffa8 	addiu	sp,sp,-88
  46bbf0:	afbc0010 	sw	gp,16(sp)
  46bbf4:	afbf0050 	sw	ra,80(sp)
  46bbf8:	afbe004c 	sw	s8,76(sp)
  46bbfc:	afbc0048 	sw	gp,72(sp)
  46bc00:	03a0f021 	move	s8,sp
  46bc04:	afc40058 	sw	a0,88(s8)
  46bc08:	afc5005c 	sw	a1,92(s8)
  46bc0c:	afc60060 	sw	a2,96(s8)
  46bc10:	afc70064 	sw	a3,100(s8)
, pb_stream *pbs)
{
    struct isakmp_attribute attr;

    if (val >> 16 == 0)
  46bc14:	8fc2005c 	lw	v0,92(s8)
  46bc18:	00000000 	nop
  46bc1c:	00021402 	srl	v0,v0,0x10
  46bc20:	14400016 	bnez	v0,46bc7c <out_attr+0x9c>
  46bc24:	00000000 	nop
    {
	/* short value: use TV form */
	attr.isaat_af_type = type | ISAKMP_ATTR_AF_TV;
  46bc28:	97c3005a 	lhu	v1,90(s8)
  46bc2c:	24028000 	li	v0,-32768
  46bc30:	00621025 	or	v0,v1,v0
  46bc34:	a7c20018 	sh	v0,24(s8)
	attr.isaat_lv = val;
  46bc38:	97c2005e 	lhu	v0,94(s8)
  46bc3c:	00000000 	nop
  46bc40:	a7c2001a 	sh	v0,26(s8)
	if (!out_struct(&attr, attr_desc, pbs, NULL))
  46bc44:	27c40018 	addiu	a0,s8,24
  46bc48:	8fc50060 	lw	a1,96(s8)
  46bc4c:	8fc60068 	lw	a2,104(s8)
  46bc50:	00003821 	move	a3,zero
  46bc54:	8f998ba0 	lw	t9,-29792(gp)
  46bc58:	00000000 	nop
  46bc5c:	0320f809 	jalr	t9
  46bc60:	00000000 	nop
  46bc64:	8fdc0010 	lw	gp,16(s8)
  46bc68:	1440002c 	bnez	v0,46bd1c <out_attr+0x13c>
  46bc6c:	00000000 	nop
	    return FALSE;
  46bc70:	00001021 	move	v0,zero
  46bc74:	10000051 	b	46bdbc <out_attr+0x1dc>
  46bc78:	00000000 	nop
    }
    else
    {
	/* This is a real fudge!  Since we rarely use long attributes
	 * and since this is the only place where we can cause an
	 * ISAKMP message length to be other than a multiple of 4 octets,
	 * we force the length of the value to be a multiple of 4 octets.
	 * Furthermore, we only handle values up to 4 octets in length.
	 * Voila: a fixed format!
	 */
	pb_stream val_pbs;
	u_int32_t nval = htonl(val);
  46bc7c:	8fc2005c 	lw	v0,92(s8)
  46bc80:	00000000 	nop
  46bc84:	afc20040 	sw	v0,64(s8)

	attr.isaat_af_type = type | ISAKMP_ATTR_AF_TLV;
  46bc88:	97c2005a 	lhu	v0,90(s8)
  46bc8c:	00000000 	nop
  46bc90:	a7c20018 	sh	v0,24(s8)
	if (!out_struct(&attr, attr_desc, pbs, &val_pbs)
	|| !out_raw(&nval, sizeof(nval), &val_pbs, "long attribute value"))
  46bc94:	27c40018 	addiu	a0,s8,24
  46bc98:	8fc50060 	lw	a1,96(s8)
  46bc9c:	8fc60068 	lw	a2,104(s8)
  46bca0:	27c70020 	addiu	a3,s8,32
  46bca4:	8f998ba0 	lw	t9,-29792(gp)
  46bca8:	00000000 	nop
  46bcac:	0320f809 	jalr	t9
  46bcb0:	00000000 	nop
  46bcb4:	8fdc0010 	lw	gp,16(s8)
  46bcb8:	1040000e 	beqz	v0,46bcf4 <out_attr+0x114>
  46bcbc:	00000000 	nop
  46bcc0:	27c40040 	addiu	a0,s8,64
  46bcc4:	24050004 	li	a1,4
  46bcc8:	27c60020 	addiu	a2,s8,32
  46bccc:	8f87802c 	lw	a3,-32724(gp)
  46bcd0:	00000000 	nop
  46bcd4:	24e74840 	addiu	a3,a3,18496
  46bcd8:	8f998308 	lw	t9,-31992(gp)
  46bcdc:	00000000 	nop
  46bce0:	0320f809 	jalr	t9
  46bce4:	00000000 	nop
  46bce8:	8fdc0010 	lw	gp,16(s8)
  46bcec:	14400004 	bnez	v0,46bd00 <out_attr+0x120>
  46bcf0:	00000000 	nop
	    return FALSE;
  46bcf4:	00001021 	move	v0,zero
  46bcf8:	10000030 	b	46bdbc <out_attr+0x1dc>
  46bcfc:	00000000 	nop
	close_output_pbs(&val_pbs);
  46bd00:	27c40020 	addiu	a0,s8,32
  46bd04:	8f998228 	lw	t9,-32216(gp)
  46bd08:	00000000 	nop
  46bd0c:	0320f809 	jalr	t9
  46bd10:	00000000 	nop
  46bd14:	8fdc0010 	lw	gp,16(s8)
  46bd18:	00000000 	nop
    }
    DBG(DBG_EMITTING,
  46bd1c:	8f8284f8 	lw	v0,-31496(gp)
  46bd20:	00000000 	nop
  46bd24:	8c420000 	lw	v0,0(v0)
  46bd28:	00000000 	nop
  46bd2c:	30420008 	andi	v0,v0,0x8
  46bd30:	10400021 	beqz	v0,46bdb8 <out_attr+0x1d8>
  46bd34:	00000000 	nop
  46bd38:	8fc20058 	lw	v0,88(s8)
  46bd3c:	00000000 	nop
  46bd40:	00021880 	sll	v1,v0,0x2
  46bd44:	8fc20064 	lw	v0,100(s8)
  46bd48:	00000000 	nop
  46bd4c:	00621021 	addu	v0,v1,v0
  46bd50:	8c420000 	lw	v0,0(v0)
  46bd54:	00000000 	nop
  46bd58:	afc20044 	sw	v0,68(s8)
  46bd5c:	8fc20044 	lw	v0,68(s8)
  46bd60:	00000000 	nop
  46bd64:	10400014 	beqz	v0,46bdb8 <out_attr+0x1d8>
  46bd68:	00000000 	nop
  46bd6c:	8fc40044 	lw	a0,68(s8)
  46bd70:	8fc5005c 	lw	a1,92(s8)
  46bd74:	8f9987fc 	lw	t9,-30724(gp)
  46bd78:	00000000 	nop
  46bd7c:	0320f809 	jalr	t9
  46bd80:	00000000 	nop
  46bd84:	8fdc0010 	lw	gp,16(s8)
  46bd88:	00000000 	nop
  46bd8c:	8f84802c 	lw	a0,-32724(gp)
  46bd90:	00000000 	nop
  46bd94:	24844858 	addiu	a0,a0,18520
  46bd98:	8fc5005c 	lw	a1,92(s8)
  46bd9c:	00403021 	move	a2,v0
  46bda0:	8f9983b8 	lw	t9,-31816(gp)
  46bda4:	00000000 	nop
  46bda8:	0320f809 	jalr	t9
  46bdac:	00000000 	nop
  46bdb0:	8fdc0010 	lw	gp,16(s8)
  46bdb4:	00000000 	nop
	enum_names *d = attr_val_descs[type];

	if (d != NULL)
	    DBG_log("    [%lu is %s]"
		, val, enum_show(d, val)));
    return TRUE;
  46bdb8:	24020001 	li	v0,1
}
  46bdbc:	03c0e821 	move	sp,s8
  46bdc0:	8fbf0050 	lw	ra,80(sp)
  46bdc4:	8fbe004c 	lw	s8,76(sp)
  46bdc8:	27bd0058 	addiu	sp,sp,88
  46bdcc:	03e00008 	jr	ra
  46bdd0:	00000000 	nop

0046bdd4 <out_sa>:
  46bdd4:	3c1c0fba 	lui	gp,0xfba
  46bdd8:	279c0b9c 	addiu	gp,gp,2972
  46bddc:	0399e021 	addu	gp,gp,t9
  46bde0:	27bdff00 	addiu	sp,sp,-256
  46bde4:	afbc0018 	sw	gp,24(sp)
  46bde8:	afbf00fc 	sw	ra,252(sp)
  46bdec:	afbe00f8 	sw	s8,248(sp)
  46bdf0:	afbc00f4 	sw	gp,244(sp)
  46bdf4:	afb000f0 	sw	s0,240(sp)
  46bdf8:	03a0f021 	move	s8,sp
  46bdfc:	afc40100 	sw	a0,256(s8)
  46be00:	afc50104 	sw	a1,260(s8)
  46be04:	afc60108 	sw	a2,264(s8)
  46be08:	afc7010c 	sw	a3,268(s8)
  46be0c:	8fc20114 	lw	v0,276(s8)
  46be10:	00000000 	nop
  46be14:	a3c20020 	sb	v0,32(s8)
#define return_on(var, val) do { var=val;goto return_out; } while(0);
/* Output an SA, as described by a db_sa.
 * This has the side-effect of allocating SPIs for us.
 */
bool
out_sa(pb_stream *outs
, struct db_sa *sadb
, struct state *st
, bool oakley_mode
, bool aggressive_mode
, u_int8_t np)
{
    pb_stream sa_pbs;
    int pcn;
    bool ret = FALSE;
  46be18:	afc0004c 	sw	zero,76(s8)
    bool ah_spi_generated = FALSE
  46be1c:	afc00050 	sw	zero,80(s8)
	, esp_spi_generated = FALSE
  46be20:	afc00054 	sw	zero,84(s8)
	, ipcomp_cpi_generated = FALSE;
  46be24:	afc00058 	sw	zero,88(s8)
#if !defined NO_KERNEL_ALG || !defined NO_IKE_ALG
    struct db_context *db_ctx = NULL;
  46be28:	afc0005c 	sw	zero,92(s8)
#endif

    /* SA header out */
    {
	struct isakmp_sa sa;

	sa.isasa_np = np;
  46be2c:	93c20020 	lbu	v0,32(s8)
  46be30:	00000000 	nop
  46be34:	a3c20060 	sb	v0,96(s8)
	st->st_doi = sa.isasa_doi = ISAKMP_DOI_IPSEC;	/* all we know */
  46be38:	24020001 	li	v0,1
  46be3c:	afc20064 	sw	v0,100(s8)
  46be40:	24030001 	li	v1,1
  46be44:	8fc20108 	lw	v0,264(s8)
  46be48:	00000000 	nop
  46be4c:	ac4300cc 	sw	v1,204(v0)
	if (!out_struct(&sa, &isakmp_sa_desc, outs, &sa_pbs))
  46be50:	27c40060 	addiu	a0,s8,96
  46be54:	8f858594 	lw	a1,-31340(gp)
  46be58:	8fc60100 	lw	a2,256(s8)
  46be5c:	27c70028 	addiu	a3,s8,40
  46be60:	8f998ba0 	lw	t9,-29792(gp)
  46be64:	00000000 	nop
  46be68:	0320f809 	jalr	t9
  46be6c:	00000000 	nop
  46be70:	8fdc0018 	lw	gp,24(s8)
  46be74:	14400004 	bnez	v0,46be88 <out_sa+0xb4>
  46be78:	00000000 	nop
	    return_on(ret, FALSE);
  46be7c:	afc0004c 	sw	zero,76(s8)
  46be80:	100003c3 	b	46cd90 <out_sa+0xfbc>
  46be84:	00000000 	nop
    }

    /* within SA: situation out */
    st->st_situation = SIT_IDENTITY_ONLY;
  46be88:	24030001 	li	v1,1
  46be8c:	8fc20108 	lw	v0,264(s8)
  46be90:	00000000 	nop
  46be94:	ac4300d0 	sw	v1,208(v0)
    if (!out_struct(&st->st_situation, &ipsec_sit_desc, &sa_pbs, NULL))
  46be98:	8fc20108 	lw	v0,264(s8)
  46be9c:	00000000 	nop
  46bea0:	244200d0 	addiu	v0,v0,208
  46bea4:	00402021 	move	a0,v0
  46bea8:	8f8583dc 	lw	a1,-31780(gp)
  46beac:	27c60028 	addiu	a2,s8,40
  46beb0:	00003821 	move	a3,zero
  46beb4:	8f998ba0 	lw	t9,-29792(gp)
  46beb8:	00000000 	nop
  46bebc:	0320f809 	jalr	t9
  46bec0:	00000000 	nop
  46bec4:	8fdc0018 	lw	gp,24(s8)
  46bec8:	14400004 	bnez	v0,46bedc <out_sa+0x108>
  46becc:	00000000 	nop
	return_on(ret, FALSE);
  46bed0:	afc0004c 	sw	zero,76(s8)
  46bed4:	100003ae 	b	46cd90 <out_sa+0xfbc>
  46bed8:	00000000 	nop

    /* within SA: Proposal Payloads
     *
     * Multiple Proposals with the same number are simultaneous
     * (conjuncts) and must deal with different protocols (AH or ESP).
     * Proposals with different numbers are alternatives (disjuncts),
     * in preference order.
     * Proposal numbers must be monotonic.
     * See draft-ietf-ipsec-isakmp-09.txt 4.2
     */

    for (pcn = 0; pcn != sadb->prop_conj_cnt; pcn++)
  46bedc:	afc00048 	sw	zero,72(s8)
  46bee0:	8fc20104 	lw	v0,260(s8)
  46bee4:	00000000 	nop
  46bee8:	8c430004 	lw	v1,4(v0)
  46beec:	8fc20048 	lw	v0,72(s8)
  46bef0:	00000000 	nop
  46bef4:	14430003 	bne	v0,v1,46bf04 <out_sa+0x130>
  46bef8:	00000000 	nop
  46befc:	1000039b 	b	46cd6c <out_sa+0xf98>
  46bf00:	00000000 	nop
    {
	struct db_prop_conj *pc = &sadb->prop_conjs[pcn];
  46bf04:	8fc20048 	lw	v0,72(s8)
  46bf08:	00000000 	nop
  46bf0c:	000218c0 	sll	v1,v0,0x3
  46bf10:	8fc20104 	lw	v0,260(s8)
  46bf14:	00000000 	nop
  46bf18:	8c420000 	lw	v0,0(v0)
  46bf1c:	00000000 	nop
  46bf20:	00431021 	addu	v0,v0,v1
  46bf24:	afc20068 	sw	v0,104(s8)
	int pn;

	for (pn = 0; pn != pc->prop_cnt; pn++)
  46bf28:	afc0006c 	sw	zero,108(s8)
  46bf2c:	8fc20068 	lw	v0,104(s8)
  46bf30:	00000000 	nop
  46bf34:	8c430004 	lw	v1,4(v0)
  46bf38:	8fc2006c 	lw	v0,108(s8)
  46bf3c:	00000000 	nop
  46bf40:	14430007 	bne	v0,v1,46bf60 <out_sa+0x18c>
  46bf44:	00000000 	nop
  46bf48:	8fc20048 	lw	v0,72(s8)
  46bf4c:	00000000 	nop
  46bf50:	24420001 	addiu	v0,v0,1
  46bf54:	afc20048 	sw	v0,72(s8)
  46bf58:	1000ffe1 	b	46bee0 <out_sa+0x10c>
  46bf5c:	00000000 	nop
	{
	    struct db_prop *p = &pc->props[pn];
  46bf60:	8fc3006c 	lw	v1,108(s8)
  46bf64:	00000000 	nop
  46bf68:	00601021 	move	v0,v1
  46bf6c:	00021040 	sll	v0,v0,0x1
  46bf70:	00431021 	addu	v0,v0,v1
  46bf74:	00021880 	sll	v1,v0,0x2
  46bf78:	8fc20068 	lw	v0,104(s8)
  46bf7c:	00000000 	nop
  46bf80:	8c420000 	lw	v0,0(v0)
  46bf84:	00000000 	nop
  46bf88:	00431021 	addu	v0,v0,v1
  46bf8c:	afc20070 	sw	v0,112(s8)
	    pb_stream proposal_pbs;
	    struct isakmp_proposal proposal;
	    struct_desc *trans_desc;
	    struct_desc *attr_desc;
	    enum_names **attr_val_descs;
	    int tn;

	    /* Proposal header */
	    proposal.isap_np = pcn == sadb->prop_conj_cnt-1 && pn == pc->prop_cnt-1
  46bf90:	8fc20104 	lw	v0,260(s8)
  46bf94:	00000000 	nop
  46bf98:	8c420004 	lw	v0,4(v0)
  46bf9c:	00000000 	nop
  46bfa0:	2443ffff 	addiu	v1,v0,-1
  46bfa4:	8fc20048 	lw	v0,72(s8)
  46bfa8:	00000000 	nop
  46bfac:	1443000c 	bne	v0,v1,46bfe0 <out_sa+0x20c>
  46bfb0:	00000000 	nop
  46bfb4:	8fc20068 	lw	v0,104(s8)
  46bfb8:	00000000 	nop
  46bfbc:	8c420004 	lw	v0,4(v0)
  46bfc0:	00000000 	nop
  46bfc4:	2443ffff 	addiu	v1,v0,-1
  46bfc8:	8fc2006c 	lw	v0,108(s8)
  46bfcc:	00000000 	nop
  46bfd0:	14430003 	bne	v0,v1,46bfe0 <out_sa+0x20c>
  46bfd4:	00000000 	nop
  46bfd8:	10000005 	b	46bff0 <out_sa+0x21c>
  46bfdc:	00000000 	nop
  46bfe0:	24020002 	li	v0,2
  46bfe4:	a3c200dc 	sb	v0,220(s8)
  46bfe8:	10000002 	b	46bff4 <out_sa+0x220>
  46bfec:	00000000 	nop
  46bff0:	a3c000dc 	sb	zero,220(s8)
  46bff4:	93c300dc 	lbu	v1,220(s8)
  46bff8:	00000000 	nop
  46bffc:	a3c30060 	sb	v1,96(s8)
		? ISAKMP_NEXT_NONE : ISAKMP_NEXT_P;
	    proposal.isap_proposal = pcn;
  46c000:	93c2004b 	lbu	v0,75(s8)
  46c004:	00000000 	nop
  46c008:	a3c20064 	sb	v0,100(s8)
	    proposal.isap_protoid = p->protoid;
  46c00c:	8fc20070 	lw	v0,112(s8)
  46c010:	00000000 	nop
  46c014:	90420000 	lbu	v0,0(v0)
  46c018:	00000000 	nop
  46c01c:	a3c20065 	sb	v0,101(s8)
	    proposal.isap_spisize = oakley_mode ? 0
  46c020:	8fc2010c 	lw	v0,268(s8)
  46c024:	00000000 	nop
  46c028:	1440000f 	bnez	v0,46c068 <out_sa+0x294>
  46c02c:	00000000 	nop
  46c030:	8fc20070 	lw	v0,112(s8)
  46c034:	00000000 	nop
  46c038:	90430000 	lbu	v1,0(v0)
  46c03c:	24020004 	li	v0,4
  46c040:	14620005 	bne	v1,v0,46c058 <out_sa+0x284>
  46c044:	00000000 	nop
  46c048:	24020002 	li	v0,2
  46c04c:	a3c200dd 	sb	v0,221(s8)
  46c050:	10000006 	b	46c06c <out_sa+0x298>
  46c054:	00000000 	nop
  46c058:	24030004 	li	v1,4
  46c05c:	a3c300dd 	sb	v1,221(s8)
  46c060:	10000002 	b	46c06c <out_sa+0x298>
  46c064:	00000000 	nop
  46c068:	a3c000dd 	sb	zero,221(s8)
  46c06c:	93c200dd 	lbu	v0,221(s8)
  46c070:	00000000 	nop
  46c074:	a3c20066 	sb	v0,102(s8)
		: p->protoid == PROTO_IPCOMP ? IPCOMP_CPI_SIZE
		: IPSEC_DOI_SPI_SIZE;
#ifndef NO_KERNEL_ALG
	    /*	
	     *	In quick mode ONLY, create proposal for
	     *	runtime kernel algos
	     *
	     *  replace ESP proposals
	     *  with runtime created one
	     */
	    if (!oakley_mode && p->protoid==PROTO_IPSEC_ESP && !aggressive_mode) {
  46c078:	8fc2010c 	lw	v0,268(s8)
  46c07c:	00000000 	nop
  46c080:	14400060 	bnez	v0,46c204 <out_sa+0x430>
  46c084:	00000000 	nop
  46c088:	8fc20070 	lw	v0,112(s8)
  46c08c:	00000000 	nop
  46c090:	90430000 	lbu	v1,0(v0)
  46c094:	24020003 	li	v0,3
  46c098:	1462005a 	bne	v1,v0,46c204 <out_sa+0x430>
  46c09c:	00000000 	nop
  46c0a0:	8fc20110 	lw	v0,272(s8)
  46c0a4:	00000000 	nop
  46c0a8:	14400056 	bnez	v0,46c204 <out_sa+0x430>
  46c0ac:	00000000 	nop
		    DBG(DBG_CONTROL | DBG_CRYPT, 
  46c0b0:	8f8284f8 	lw	v0,-31496(gp)
  46c0b4:	00000000 	nop
  46c0b8:	8c420000 	lw	v0,0(v0)
  46c0bc:	00000000 	nop
  46c0c0:	30420012 	andi	v0,v0,0x12
  46c0c4:	10400020 	beqz	v0,46c148 <out_sa+0x374>
  46c0c8:	00000000 	nop
  46c0cc:	8fc20108 	lw	v0,264(s8)
  46c0d0:	00000000 	nop
  46c0d4:	8c42000c 	lw	v0,12(v0)
  46c0d8:	00000000 	nop
  46c0dc:	8c4201bc 	lw	v0,444(v0)
  46c0e0:	00000000 	nop
  46c0e4:	10400018 	beqz	v0,46c148 <out_sa+0x374>
  46c0e8:	00000000 	nop
  46c0ec:	8fc20108 	lw	v0,264(s8)
  46c0f0:	00000000 	nop
  46c0f4:	8c42000c 	lw	v0,12(v0)
  46c0f8:	8f848018 	lw	a0,-32744(gp)
  46c0fc:	00000000 	nop
  46c100:	24843934 	addiu	a0,a0,14644
  46c104:	24050100 	li	a1,256
  46c108:	8c4601bc 	lw	a2,444(v0)
  46c10c:	8f998068 	lw	t9,-32664(gp)
  46c110:	00000000 	nop
  46c114:	0320f809 	jalr	t9
  46c118:	00000000 	nop
  46c11c:	8fdc0018 	lw	gp,24(s8)
  46c120:	00000000 	nop
  46c124:	8f848018 	lw	a0,-32744(gp)
  46c128:	00000000 	nop
  46c12c:	24843934 	addiu	a0,a0,14644
  46c130:	8f9983b8 	lw	t9,-31816(gp)
  46c134:	00000000 	nop
  46c138:	0320f809 	jalr	t9
  46c13c:	00000000 	nop
  46c140:	8fdc0018 	lw	gp,24(s8)
  46c144:	00000000 	nop
			if (st->st_connection->alg_info_esp) {
			    static char buf[256]="";
			    alg_info_snprint(buf, sizeof (buf), 
				    (struct alg_info *)st->st_connection->alg_info_esp);
			    DBG_log(buf);
			 }
		    );
		    db_ctx=kernel_alg_db_new(st->st_connection->alg_info_esp, st->st_policy);
  46c148:	8fc20108 	lw	v0,264(s8)
  46c14c:	00000000 	nop
  46c150:	8c42000c 	lw	v0,12(v0)
  46c154:	00000000 	nop
  46c158:	8c4401bc 	lw	a0,444(v0)
  46c15c:	8fc20108 	lw	v0,264(s8)
  46c160:	00000000 	nop
  46c164:	8c4600d8 	lw	a2,216(v0)
  46c168:	8c4700dc 	lw	a3,220(v0)
  46c16c:	8f998ac8 	lw	t9,-30008(gp)
  46c170:	00000000 	nop
  46c174:	0320f809 	jalr	t9
  46c178:	00000000 	nop
  46c17c:	8fdc0018 	lw	gp,24(s8)
  46c180:	afc2005c 	sw	v0,92(s8)
		    p = db_prop_get(db_ctx);
  46c184:	8fc4005c 	lw	a0,92(s8)
  46c188:	8f998040 	lw	t9,-32704(gp)
  46c18c:	00000000 	nop
  46c190:	27391a24 	addiu	t9,t9,6692
  46c194:	00000000 	nop
  46c198:	0320f809 	jalr	t9
  46c19c:	00000000 	nop
  46c1a0:	8fdc0018 	lw	gp,24(s8)
  46c1a4:	afc20070 	sw	v0,112(s8)

		    if (!p || p->trans_cnt==0) {
  46c1a8:	8fc20070 	lw	v0,112(s8)
  46c1ac:	00000000 	nop
  46c1b0:	10400007 	beqz	v0,46c1d0 <out_sa+0x3fc>
  46c1b4:	00000000 	nop
  46c1b8:	8fc20070 	lw	v0,112(s8)
  46c1bc:	00000000 	nop
  46c1c0:	8c420008 	lw	v0,8(v0)
  46c1c4:	00000000 	nop
  46c1c8:	1440000e 	bnez	v0,46c204 <out_sa+0x430>
  46c1cc:	00000000 	nop
			loglog(RC_LOG_SERIOUS, 
  46c1d0:	24040003 	li	a0,3
  46c1d4:	8f85802c 	lw	a1,-32724(gp)
  46c1d8:	00000000 	nop
  46c1dc:	24a54868 	addiu	a1,a1,18536
  46c1e0:	8f998c48 	lw	t9,-29624(gp)
  46c1e4:	00000000 	nop
  46c1e8:	0320f809 	jalr	t9
  46c1ec:	00000000 	nop
  46c1f0:	8fdc0018 	lw	gp,24(s8)
  46c1f4:	00000000 	nop
				"empty IPsec SA proposal to send "
				"(no kernel algorithms for esp selection)");
			return_on(ret, FALSE);
  46c1f8:	afc0004c 	sw	zero,76(s8)
  46c1fc:	100002e4 	b	46cd90 <out_sa+0xfbc>
  46c200:	00000000 	nop
		    }
	    }
#endif
#ifndef NO_IKE_ALG
	    if (oakley_mode && !aggressive_mode && p->protoid==PROTO_ISAKMP) {
  46c204:	8fc2010c 	lw	v0,268(s8)
  46c208:	00000000 	nop
  46c20c:	10400060 	beqz	v0,46c390 <out_sa+0x5bc>
  46c210:	00000000 	nop
  46c214:	8fc20110 	lw	v0,272(s8)
  46c218:	00000000 	nop
  46c21c:	1440005c 	bnez	v0,46c390 <out_sa+0x5bc>
  46c220:	00000000 	nop
  46c224:	8fc20070 	lw	v0,112(s8)
  46c228:	00000000 	nop
  46c22c:	90430000 	lbu	v1,0(v0)
  46c230:	24020001 	li	v0,1
  46c234:	14620056 	bne	v1,v0,46c390 <out_sa+0x5bc>
  46c238:	00000000 	nop
		    DBG(DBG_CONTROL | DBG_CRYPT, 
  46c23c:	8f8284f8 	lw	v0,-31496(gp)
  46c240:	00000000 	nop
  46c244:	8c420000 	lw	v0,0(v0)
  46c248:	00000000 	nop
  46c24c:	30420012 	andi	v0,v0,0x12
  46c250:	10400020 	beqz	v0,46c2d4 <out_sa+0x500>
  46c254:	00000000 	nop
  46c258:	8fc20108 	lw	v0,264(s8)
  46c25c:	00000000 	nop
  46c260:	8c42000c 	lw	v0,12(v0)
  46c264:	00000000 	nop
  46c268:	8c4201c0 	lw	v0,448(v0)
  46c26c:	00000000 	nop
  46c270:	10400018 	beqz	v0,46c2d4 <out_sa+0x500>
  46c274:	00000000 	nop
  46c278:	8fc20108 	lw	v0,264(s8)
  46c27c:	00000000 	nop
  46c280:	8c42000c 	lw	v0,12(v0)
  46c284:	8f848018 	lw	a0,-32744(gp)
  46c288:	00000000 	nop
  46c28c:	24843a34 	addiu	a0,a0,14900
  46c290:	24050100 	li	a1,256
  46c294:	8c4601c0 	lw	a2,448(v0)
  46c298:	8f998068 	lw	t9,-32664(gp)
  46c29c:	00000000 	nop
  46c2a0:	0320f809 	jalr	t9
  46c2a4:	00000000 	nop
  46c2a8:	8fdc0018 	lw	gp,24(s8)
  46c2ac:	00000000 	nop
  46c2b0:	8f848018 	lw	a0,-32744(gp)
  46c2b4:	00000000 	nop
  46c2b8:	24843a34 	addiu	a0,a0,14900
  46c2bc:	8f9983b8 	lw	t9,-31816(gp)
  46c2c0:	00000000 	nop
  46c2c4:	0320f809 	jalr	t9
  46c2c8:	00000000 	nop
  46c2cc:	8fdc0018 	lw	gp,24(s8)
  46c2d0:	00000000 	nop
			if (st->st_connection->alg_info_ike) {
			    static char buf[256]="";
			    alg_info_snprint(buf, sizeof (buf), 
				    (struct alg_info *)st->st_connection->alg_info_ike);
			    DBG_log(buf);
			 }
		    );
		    db_ctx=ike_alg_db_new(st->st_connection->alg_info_ike,
  46c2d4:	8fc20108 	lw	v0,264(s8)
  46c2d8:	00000000 	nop
  46c2dc:	8c42000c 	lw	v0,12(v0)
  46c2e0:	00000000 	nop
  46c2e4:	8c4401c0 	lw	a0,448(v0)
  46c2e8:	8fc20108 	lw	v0,264(s8)
  46c2ec:	00000000 	nop
  46c2f0:	8c4600d8 	lw	a2,216(v0)
  46c2f4:	8c4700dc 	lw	a3,220(v0)
  46c2f8:	8f9980ac 	lw	t9,-32596(gp)
  46c2fc:	00000000 	nop
  46c300:	0320f809 	jalr	t9
  46c304:	00000000 	nop
  46c308:	8fdc0018 	lw	gp,24(s8)
  46c30c:	afc2005c 	sw	v0,92(s8)
				st->st_policy);
		    p = db_prop_get(db_ctx);
  46c310:	8fc4005c 	lw	a0,92(s8)
  46c314:	8f998040 	lw	t9,-32704(gp)
  46c318:	00000000 	nop
  46c31c:	27391a24 	addiu	t9,t9,6692
  46c320:	00000000 	nop
  46c324:	0320f809 	jalr	t9
  46c328:	00000000 	nop
  46c32c:	8fdc0018 	lw	gp,24(s8)
  46c330:	afc20070 	sw	v0,112(s8)
		    if (!p || p->trans_cnt==0) {
  46c334:	8fc20070 	lw	v0,112(s8)
  46c338:	00000000 	nop
  46c33c:	10400007 	beqz	v0,46c35c <out_sa+0x588>
  46c340:	00000000 	nop
  46c344:	8fc20070 	lw	v0,112(s8)
  46c348:	00000000 	nop
  46c34c:	8c420008 	lw	v0,8(v0)
  46c350:	00000000 	nop
  46c354:	1440000e 	bnez	v0,46c390 <out_sa+0x5bc>
  46c358:	00000000 	nop
			loglog(RC_LOG_SERIOUS, 
  46c35c:	24040003 	li	a0,3
  46c360:	8f85802c 	lw	a1,-32724(gp)
  46c364:	00000000 	nop
  46c368:	24a548b4 	addiu	a1,a1,18612
  46c36c:	8f998c48 	lw	t9,-29624(gp)
  46c370:	00000000 	nop
  46c374:	0320f809 	jalr	t9
  46c378:	00000000 	nop
  46c37c:	8fdc0018 	lw	gp,24(s8)
  46c380:	00000000 	nop
					"empty ISAKMP SA proposal to send "
					"(no algorithms for ike selection?)");
			return_on(ret, FALSE);
  46c384:	afc0004c 	sw	zero,76(s8)
  46c388:	10000281 	b	46cd90 <out_sa+0xfbc>
  46c38c:	00000000 	nop
		    }
	    }
#endif
	    proposal.isap_notrans = p->trans_cnt;
  46c390:	8fc20070 	lw	v0,112(s8)
  46c394:	00000000 	nop
  46c398:	9042000b 	lbu	v0,11(v0)
  46c39c:	00000000 	nop
  46c3a0:	a3c20067 	sb	v0,103(s8)
	    if (!out_struct(&proposal, &isakmp_proposal_desc, &sa_pbs, &proposal_pbs))
  46c3a4:	27c40060 	addiu	a0,s8,96
  46c3a8:	8f85821c 	lw	a1,-32228(gp)
  46c3ac:	27c60028 	addiu	a2,s8,40
  46c3b0:	27c70078 	addiu	a3,s8,120
  46c3b4:	8f998ba0 	lw	t9,-29792(gp)
  46c3b8:	00000000 	nop
  46c3bc:	0320f809 	jalr	t9
  46c3c0:	00000000 	nop
  46c3c4:	8fdc0018 	lw	gp,24(s8)
  46c3c8:	14400004 	bnez	v0,46c3dc <out_sa+0x608>
  46c3cc:	00000000 	nop
		return_on(ret, FALSE);
  46c3d0:	afc0004c 	sw	zero,76(s8)
  46c3d4:	1000026e 	b	46cd90 <out_sa+0xfbc>
  46c3d8:	00000000 	nop

	    /* Per-protocols stuff:
	     * Set trans_desc.
	     * Set attr_desc.
	     * Set attr_val_descs.
	     * If not oakley_mode, emit SPI.
	     * We allocate SPIs on demand.
	     * All ESPs in an SA will share a single SPI.
	     * All AHs in an SAwill share a single SPI.
	     * AHs' SPI will be distinct from ESPs'.
	     * This latter is needed because KLIPS doesn't
	     * use the protocol when looking up a (dest, protocol, spi).
	     * ??? If multiple ESPs are composed, how should their SPIs
	     * be allocated?
	     */
	    {
		ipsec_spi_t *spi_ptr = NULL;
  46c3dc:	afc000a8 	sw	zero,168(s8)
		bool *spi_generated;

		switch (p->protoid)
  46c3e0:	8fc20070 	lw	v0,112(s8)
  46c3e4:	00000000 	nop
  46c3e8:	90420000 	lbu	v0,0(v0)
  46c3ec:	00000000 	nop
  46c3f0:	afc200e0 	sw	v0,224(s8)
  46c3f4:	24020002 	li	v0,2
  46c3f8:	8fc300e0 	lw	v1,224(s8)
  46c3fc:	00000000 	nop
  46c400:	10620035 	beq	v1,v0,46c4d8 <out_sa+0x704>
  46c404:	00000000 	nop
  46c408:	8fc300e0 	lw	v1,224(s8)
  46c40c:	00000000 	nop
  46c410:	28620003 	slti	v0,v1,3
  46c414:	10400008 	beqz	v0,46c438 <out_sa+0x664>
  46c418:	00000000 	nop
  46c41c:	24020001 	li	v0,1
  46c420:	8fc300e0 	lw	v1,224(s8)
  46c424:	00000000 	nop
  46c428:	1062000f 	beq	v1,v0,46c468 <out_sa+0x694>
  46c42c:	00000000 	nop
  46c430:	100000b0 	b	46c6f4 <out_sa+0x920>
  46c434:	00000000 	nop
  46c438:	24020003 	li	v0,3
  46c43c:	8fc300e0 	lw	v1,224(s8)
  46c440:	00000000 	nop
  46c444:	10620046 	beq	v1,v0,46c560 <out_sa+0x78c>
  46c448:	00000000 	nop
  46c44c:	24020004 	li	v0,4
  46c450:	8fc300e0 	lw	v1,224(s8)
  46c454:	00000000 	nop
  46c458:	10620063 	beq	v1,v0,46c5e8 <out_sa+0x814>
  46c45c:	00000000 	nop
  46c460:	100000a4 	b	46c6f4 <out_sa+0x920>
  46c464:	00000000 	nop
		{
		case PROTO_ISAKMP:
		    passert(oakley_mode);
  46c468:	8fc2010c 	lw	v0,268(s8)
  46c46c:	00000000 	nop
  46c470:	1440000e 	bnez	v0,46c4ac <out_sa+0x6d8>
  46c474:	00000000 	nop
  46c478:	8f84802c 	lw	a0,-32724(gp)
  46c47c:	00000000 	nop
  46c480:	248448f8 	addiu	a0,a0,18680
  46c484:	8f85802c 	lw	a1,-32724(gp)
  46c488:	00000000 	nop
  46c48c:	24a54904 	addiu	a1,a1,18692
  46c490:	2406024d 	li	a2,589
  46c494:	8f998bb8 	lw	t9,-29768(gp)
  46c498:	00000000 	nop
  46c49c:	0320f809 	jalr	t9
  46c4a0:	00000000 	nop
  46c4a4:	8fdc0018 	lw	gp,24(s8)
  46c4a8:	00000000 	nop
		    trans_desc = &isakmp_isakmp_transform_desc;
  46c4ac:	8f828960 	lw	v0,-30368(gp)
  46c4b0:	00000000 	nop
  46c4b4:	afc20098 	sw	v0,152(s8)
		    attr_desc = &isakmp_oakley_attribute_desc;
  46c4b8:	8f8285dc 	lw	v0,-31268(gp)
  46c4bc:	00000000 	nop
  46c4c0:	afc2009c 	sw	v0,156(s8)
		    attr_val_descs = oakley_attr_val_descs;
  46c4c4:	8f82842c 	lw	v0,-31700(gp)
  46c4c8:	00000000 	nop
  46c4cc:	afc200a0 	sw	v0,160(s8)
		    /* no SPI needed */
		    break;
  46c4d0:	10000095 	b	46c728 <out_sa+0x954>
  46c4d4:	00000000 	nop
		case PROTO_IPSEC_AH:
		    passert(!oakley_mode);
  46c4d8:	8fc2010c 	lw	v0,268(s8)
  46c4dc:	00000000 	nop
  46c4e0:	1040000e 	beqz	v0,46c51c <out_sa+0x748>
  46c4e4:	00000000 	nop
  46c4e8:	8f84802c 	lw	a0,-32724(gp)
  46c4ec:	00000000 	nop
  46c4f0:	2484490c 	addiu	a0,a0,18700
  46c4f4:	8f85802c 	lw	a1,-32724(gp)
  46c4f8:	00000000 	nop
  46c4fc:	24a54904 	addiu	a1,a1,18692
  46c500:	24060254 	li	a2,596
  46c504:	8f998bb8 	lw	t9,-29768(gp)
  46c508:	00000000 	nop
  46c50c:	0320f809 	jalr	t9
  46c510:	00000000 	nop
  46c514:	8fdc0018 	lw	gp,24(s8)
  46c518:	00000000 	nop
		    trans_desc = &isakmp_ah_transform_desc;
  46c51c:	8f8283fc 	lw	v0,-31748(gp)
  46c520:	00000000 	nop
  46c524:	afc20098 	sw	v0,152(s8)
		    attr_desc = &isakmp_ipsec_attribute_desc;
  46c528:	8f828c50 	lw	v0,-29616(gp)
  46c52c:	00000000 	nop
  46c530:	afc2009c 	sw	v0,156(s8)
		    attr_val_descs = ipsec_attr_val_descs;
  46c534:	8f8281e4 	lw	v0,-32284(gp)
  46c538:	00000000 	nop
  46c53c:	afc200a0 	sw	v0,160(s8)
		    spi_ptr = &st->st_ah.our_spi;
  46c540:	8fc20108 	lw	v0,264(s8)
  46c544:	00000000 	nop
  46c548:	24420058 	addiu	v0,v0,88
  46c54c:	afc200a8 	sw	v0,168(s8)
		    spi_generated = &ah_spi_generated;
  46c550:	27c20050 	addiu	v0,s8,80
  46c554:	afc200ac 	sw	v0,172(s8)
		    break;
  46c558:	10000073 	b	46c728 <out_sa+0x954>
  46c55c:	00000000 	nop
		case PROTO_IPSEC_ESP:
		    passert(!oakley_mode);
  46c560:	8fc2010c 	lw	v0,268(s8)
  46c564:	00000000 	nop
  46c568:	1040000e 	beqz	v0,46c5a4 <out_sa+0x7d0>
  46c56c:	00000000 	nop
  46c570:	8f84802c 	lw	a0,-32724(gp)
  46c574:	00000000 	nop
  46c578:	2484490c 	addiu	a0,a0,18700
  46c57c:	8f85802c 	lw	a1,-32724(gp)
  46c580:	00000000 	nop
  46c584:	24a54904 	addiu	a1,a1,18692
  46c588:	2406025c 	li	a2,604
  46c58c:	8f998bb8 	lw	t9,-29768(gp)
  46c590:	00000000 	nop
  46c594:	0320f809 	jalr	t9
  46c598:	00000000 	nop
  46c59c:	8fdc0018 	lw	gp,24(s8)
  46c5a0:	00000000 	nop
		    trans_desc = &isakmp_esp_transform_desc;
  46c5a4:	8f828434 	lw	v0,-31692(gp)
  46c5a8:	00000000 	nop
  46c5ac:	afc20098 	sw	v0,152(s8)
		    attr_desc = &isakmp_ipsec_attribute_desc;
  46c5b0:	8f828c50 	lw	v0,-29616(gp)
  46c5b4:	00000000 	nop
  46c5b8:	afc2009c 	sw	v0,156(s8)
		    attr_val_descs = ipsec_attr_val_descs;
  46c5bc:	8f8281e4 	lw	v0,-32284(gp)
  46c5c0:	00000000 	nop
  46c5c4:	afc200a0 	sw	v0,160(s8)
		    spi_ptr = &st->st_esp.our_spi;
  46c5c8:	8fc20108 	lw	v0,264(s8)
  46c5cc:	00000000 	nop
  46c5d0:	24420084 	addiu	v0,v0,132
  46c5d4:	afc200a8 	sw	v0,168(s8)
		    spi_generated = &esp_spi_generated;
  46c5d8:	27c20054 	addiu	v0,s8,84
  46c5dc:	afc200ac 	sw	v0,172(s8)
		    break;
  46c5e0:	10000051 	b	46c728 <out_sa+0x954>
  46c5e4:	00000000 	nop
		case PROTO_IPCOMP:
		    passert(!oakley_mode);
  46c5e8:	8fc2010c 	lw	v0,268(s8)
  46c5ec:	00000000 	nop
  46c5f0:	1040000e 	beqz	v0,46c62c <out_sa+0x858>
  46c5f4:	00000000 	nop
  46c5f8:	8f84802c 	lw	a0,-32724(gp)
  46c5fc:	00000000 	nop
  46c600:	2484490c 	addiu	a0,a0,18700
  46c604:	8f85802c 	lw	a1,-32724(gp)
  46c608:	00000000 	nop
  46c60c:	24a54904 	addiu	a1,a1,18692
  46c610:	24060264 	li	a2,612
  46c614:	8f998bb8 	lw	t9,-29768(gp)
  46c618:	00000000 	nop
  46c61c:	0320f809 	jalr	t9
  46c620:	00000000 	nop
  46c624:	8fdc0018 	lw	gp,24(s8)
  46c628:	00000000 	nop
		    trans_desc = &isakmp_ipcomp_transform_desc;
  46c62c:	8f828368 	lw	v0,-31896(gp)
  46c630:	00000000 	nop
  46c634:	afc20098 	sw	v0,152(s8)
		    attr_desc = &isakmp_ipsec_attribute_desc;
  46c638:	8f828c50 	lw	v0,-29616(gp)
  46c63c:	00000000 	nop
  46c640:	afc2009c 	sw	v0,156(s8)
		    attr_val_descs = ipsec_attr_val_descs;
  46c644:	8f8281e4 	lw	v0,-32284(gp)
  46c648:	00000000 	nop
  46c64c:	afc200a0 	sw	v0,160(s8)

		    /* a CPI isn't quite the same as an SPI
		     * so we use specialized code to emit it.
		     */
		    if (!ipcomp_cpi_generated)
  46c650:	8fc20058 	lw	v0,88(s8)
  46c654:	00000000 	nop
  46c658:	14400013 	bnez	v0,46c6a8 <out_sa+0x8d4>
  46c65c:	00000000 	nop
		    {
			st->st_ipcomp.our_spi = get_my_cpi();
  46c660:	8fd00108 	lw	s0,264(s8)
  46c664:	8f998274 	lw	t9,-32140(gp)
  46c668:	00000000 	nop
  46c66c:	0320f809 	jalr	t9
  46c670:	00000000 	nop
  46c674:	8fdc0018 	lw	gp,24(s8)
  46c678:	ae0200b0 	sw	v0,176(s0)
			if (st->st_ipcomp.our_spi == 0)
  46c67c:	8fc20108 	lw	v0,264(s8)
  46c680:	00000000 	nop
  46c684:	8c4200b0 	lw	v0,176(v0)
  46c688:	00000000 	nop
  46c68c:	14400004 	bnez	v0,46c6a0 <out_sa+0x8cc>
  46c690:	00000000 	nop
			    return_on(ret, FALSE);	/* problem generating CPI */
  46c694:	afc0004c 	sw	zero,76(s8)
  46c698:	100001bd 	b	46cd90 <out_sa+0xfbc>
  46c69c:	00000000 	nop

			ipcomp_cpi_generated = TRUE;
  46c6a0:	24020001 	li	v0,1
  46c6a4:	afc20058 	sw	v0,88(s8)
		    }
		    /* CPI is stored in network low order end of an
		     * ipsec_spi_t.  So we start a couple of bytes in.
		     */
		    if (!out_raw((u_char *)&st->st_ipcomp.our_spi
		     + IPSEC_DOI_SPI_SIZE - IPCOMP_CPI_SIZE
		    , IPCOMP_CPI_SIZE
		    , &proposal_pbs, "CPI"))
  46c6a8:	8fc20108 	lw	v0,264(s8)
  46c6ac:	00000000 	nop
  46c6b0:	244200b2 	addiu	v0,v0,178
  46c6b4:	00402021 	move	a0,v0
  46c6b8:	24050002 	li	a1,2
  46c6bc:	27c60078 	addiu	a2,s8,120
  46c6c0:	8f87802c 	lw	a3,-32724(gp)
  46c6c4:	00000000 	nop
  46c6c8:	24e7491c 	addiu	a3,a3,18716
  46c6cc:	8f998308 	lw	t9,-31992(gp)
  46c6d0:	00000000 	nop
  46c6d4:	0320f809 	jalr	t9
  46c6d8:	00000000 	nop
  46c6dc:	8fdc0018 	lw	gp,24(s8)
  46c6e0:	14400011 	bnez	v0,46c728 <out_sa+0x954>
  46c6e4:	00000000 	nop
			return_on(ret, FALSE);
  46c6e8:	afc0004c 	sw	zero,76(s8)
  46c6ec:	100001a8 	b	46cd90 <out_sa+0xfbc>
  46c6f0:	00000000 	nop
		    break;
		default:
		    impossible();
  46c6f4:	8f84802c 	lw	a0,-32724(gp)
  46c6f8:	00000000 	nop
  46c6fc:	24844920 	addiu	a0,a0,18720
  46c700:	8f85802c 	lw	a1,-32724(gp)
  46c704:	00000000 	nop
  46c708:	24a54904 	addiu	a1,a1,18692
  46c70c:	2406027e 	li	a2,638
  46c710:	8f998bb8 	lw	t9,-29768(gp)
  46c714:	00000000 	nop
  46c718:	0320f809 	jalr	t9
  46c71c:	00000000 	nop
  46c720:	8fdc0018 	lw	gp,24(s8)
  46c724:	00000000 	nop
		}
		if (spi_ptr != NULL)
  46c728:	8fc200a8 	lw	v0,168(s8)
  46c72c:	00000000 	nop
  46c730:	10400025 	beqz	v0,46c7c8 <out_sa+0x9f4>
  46c734:	00000000 	nop
		{
		    if (!*spi_generated)
  46c738:	8fc200ac 	lw	v0,172(s8)
  46c73c:	00000000 	nop
  46c740:	8c420000 	lw	v0,0(v0)
  46c744:	00000000 	nop
  46c748:	1440000f 	bnez	v0,46c788 <out_sa+0x9b4>
  46c74c:	00000000 	nop
		    {
			*spi_ptr = get_ipsec_spi(0);
  46c750:	00002021 	move	a0,zero
  46c754:	8f99854c 	lw	t9,-31412(gp)
  46c758:	00000000 	nop
  46c75c:	0320f809 	jalr	t9
  46c760:	00000000 	nop
  46c764:	8fdc0018 	lw	gp,24(s8)
  46c768:	00401821 	move	v1,v0
  46c76c:	8fc200a8 	lw	v0,168(s8)
  46c770:	00000000 	nop
  46c774:	ac430000 	sw	v1,0(v0)
			*spi_generated = TRUE;
  46c778:	24030001 	li	v1,1
  46c77c:	8fc200ac 	lw	v0,172(s8)
  46c780:	00000000 	nop
  46c784:	ac430000 	sw	v1,0(v0)
		    }
		    if (!out_raw((u_char *)spi_ptr, IPSEC_DOI_SPI_SIZE
		    , &proposal_pbs, "SPI"))
  46c788:	8fc400a8 	lw	a0,168(s8)
  46c78c:	24050004 	li	a1,4
  46c790:	27c60078 	addiu	a2,s8,120
  46c794:	8f87802c 	lw	a3,-32724(gp)
  46c798:	00000000 	nop
  46c79c:	24e7492c 	addiu	a3,a3,18732
  46c7a0:	8f998308 	lw	t9,-31992(gp)
  46c7a4:	00000000 	nop
  46c7a8:	0320f809 	jalr	t9
  46c7ac:	00000000 	nop
  46c7b0:	8fdc0018 	lw	gp,24(s8)
  46c7b4:	14400004 	bnez	v0,46c7c8 <out_sa+0x9f4>
  46c7b8:	00000000 	nop
			return_on(ret, FALSE);
  46c7bc:	afc0004c 	sw	zero,76(s8)
  46c7c0:	10000173 	b	46cd90 <out_sa+0xfbc>
  46c7c4:	00000000 	nop
		}
	    }

	    /* within proposal: Transform Payloads */
	    for (tn = 0; tn != p->trans_cnt; tn++)
  46c7c8:	afc000a4 	sw	zero,164(s8)
  46c7cc:	8fc20070 	lw	v0,112(s8)
  46c7d0:	00000000 	nop
  46c7d4:	8c430008 	lw	v1,8(v0)
  46c7d8:	8fc200a4 	lw	v0,164(s8)
  46c7dc:	00000000 	nop
  46c7e0:	1443000e 	bne	v0,v1,46c81c <out_sa+0xa48>
  46c7e4:	00000000 	nop
	    {
		struct db_trans *t = &p->trans[tn];
		pb_stream trans_pbs;
		struct isakmp_transform trans;
		int an;

		trans.isat_np = (tn == p->trans_cnt - 1)
		    ? ISAKMP_NEXT_NONE : ISAKMP_NEXT_T;
		trans.isat_transnum = tn;
		trans.isat_transid = t->transid;
		if (!out_struct(&trans, trans_desc, &proposal_pbs, &trans_pbs))
		    return_on(ret, FALSE);

		/* Within tranform: Attributes. */

		/* For Phase 2 / Quick Mode, GROUP_DESCRIPTION is
		 * automatically generated because it must be the same
		 * in every transform.  Except IPCOMP.
		 */
		if (p->protoid != PROTO_IPCOMP
		&& st->st_pfs_group != NULL)
		{
		    passert(!oakley_mode);
		    passert(st->st_pfs_group != &unset_group);
		    out_attr(GROUP_DESCRIPTION, st->st_pfs_group->group
			, attr_desc, attr_val_descs
			, &trans_pbs);
		}

		/* automatically generate duration
		 * and, for Phase 2 / Quick Mode, encapsulation.
		 */
		if (oakley_mode)
		{
		    out_attr(OAKLEY_LIFE_TYPE, OAKLEY_LIFE_SECONDS
			, attr_desc, attr_val_descs
			, &trans_pbs);
		    out_attr(OAKLEY_LIFE_DURATION
			, st->st_connection->sa_ike_life_seconds
			, attr_desc, attr_val_descs
			, &trans_pbs);
		}
		else
		{
		    /* RFC 2407 (IPSEC DOI) 4.5 specifies that
		     * the default is "unspecified (host-dependent)".
		     * This makes little sense, so we always specify it.
		     *
		     * Unlike other IPSEC transforms, IPCOMP defaults
		     * to Transport Mode, so we can exploit the default
		     * (draft-shacham-ippcp-rfc2393bis-05.txt 4.1).
		     */
		    if (p->protoid != PROTO_IPCOMP
		    || st->st_policy & POLICY_TUNNEL)
		    {
#ifdef NAT_TRAVERSAL
#ifndef I_KNOW_TRANSPORT_MODE_HAS_SECURITY_CONCERN_BUT_I_WANT_IT
			if ((st->nat_traversal & NAT_T_DETECTED) &&
				(!(st->st_policy & POLICY_TUNNEL))) {
				/* Inform user that we will not respect policy and only
				 * propose Tunnel Mode
				 */
				loglog(RC_LOG_SERIOUS, "NAT-Traversal: "
					"Transport Mode not allowed due to security concerns -- "
					"using Tunnel mode");
			}
#endif
#endif
			out_attr(ENCAPSULATION_MODE
#ifdef NAT_TRAVERSAL
#ifdef I_KNOW_TRANSPORT_MODE_HAS_SECURITY_CONCERN_BUT_I_WANT_IT
			    , NAT_T_ENCAPSULATION_MODE(st,st->st_policy)
#else
				/* If NAT-T is detected, use UDP_TUNNEL as long as Transport
				 * Mode has security concerns.
				 *
				 * User has been informed of that
				 */
			    , NAT_T_ENCAPSULATION_MODE(st,POLICY_TUNNEL)
#endif
#else /* ! NAT_TRAVERSAL */
			    , st->st_policy & POLICY_TUNNEL
			      ? ENCAPSULATION_MODE_TUNNEL : ENCAPSULATION_MODE_TRANSPORT
#endif
			    , attr_desc, attr_val_descs
			    , &trans_pbs);
		    }
		    out_attr(SA_LIFE_TYPE, SA_LIFE_TYPE_SECONDS
			, attr_desc, attr_val_descs
			, &trans_pbs);
		    out_attr(SA_LIFE_DURATION
			, st->st_connection->sa_ipsec_life_seconds
			, attr_desc, attr_val_descs
			, &trans_pbs);
		}

		/* spit out attributes from table */
		for (an = 0; an != t->attr_cnt; an++)
		{
		    struct db_attr *a = &t->attrs[an];

		    out_attr(a->type, a->val
			, attr_desc, attr_val_descs
			, &trans_pbs);
		}

		close_output_pbs(&trans_pbs);
	    }
	    close_output_pbs(&proposal_pbs);
  46c7e8:	27c40078 	addiu	a0,s8,120
  46c7ec:	8f998228 	lw	t9,-32216(gp)
  46c7f0:	00000000 	nop
  46c7f4:	0320f809 	jalr	t9
  46c7f8:	00000000 	nop
  46c7fc:	8fdc0018 	lw	gp,24(s8)
  46c800:	00000000 	nop
  46c804:	8fc2006c 	lw	v0,108(s8)
  46c808:	00000000 	nop
  46c80c:	24420001 	addiu	v0,v0,1
  46c810:	afc2006c 	sw	v0,108(s8)
  46c814:	1000fdc5 	b	46bf2c <out_sa+0x158>
  46c818:	00000000 	nop
  46c81c:	8fc300a4 	lw	v1,164(s8)
  46c820:	00000000 	nop
  46c824:	00601021 	move	v0,v1
  46c828:	00021040 	sll	v0,v0,0x1
  46c82c:	00431021 	addu	v0,v0,v1
  46c830:	00021880 	sll	v1,v0,0x2
  46c834:	8fc20070 	lw	v0,112(s8)
  46c838:	00000000 	nop
  46c83c:	8c420004 	lw	v0,4(v0)
  46c840:	00000000 	nop
  46c844:	00431021 	addu	v0,v0,v1
  46c848:	afc200ac 	sw	v0,172(s8)
  46c84c:	8fc20070 	lw	v0,112(s8)
  46c850:	00000000 	nop
  46c854:	8c420008 	lw	v0,8(v0)
  46c858:	00000000 	nop
  46c85c:	2443ffff 	addiu	v1,v0,-1
  46c860:	8fc200a4 	lw	v0,164(s8)
  46c864:	00000000 	nop
  46c868:	10430005 	beq	v0,v1,46c880 <out_sa+0xaac>
  46c86c:	00000000 	nop
  46c870:	24020003 	li	v0,3
  46c874:	a3c200e4 	sb	v0,228(s8)
  46c878:	10000002 	b	46c884 <out_sa+0xab0>
  46c87c:	00000000 	nop
  46c880:	a3c000e4 	sb	zero,228(s8)
  46c884:	93c300e4 	lbu	v1,228(s8)
  46c888:	00000000 	nop
  46c88c:	a3c300d0 	sb	v1,208(s8)
  46c890:	93c200a7 	lbu	v0,167(s8)
  46c894:	00000000 	nop
  46c898:	a3c200d4 	sb	v0,212(s8)
  46c89c:	8fc200ac 	lw	v0,172(s8)
  46c8a0:	00000000 	nop
  46c8a4:	90420000 	lbu	v0,0(v0)
  46c8a8:	00000000 	nop
  46c8ac:	a3c200d5 	sb	v0,213(s8)
  46c8b0:	27c400d0 	addiu	a0,s8,208
  46c8b4:	8fc50098 	lw	a1,152(s8)
  46c8b8:	27c60078 	addiu	a2,s8,120
  46c8bc:	27c700b0 	addiu	a3,s8,176
  46c8c0:	8f998ba0 	lw	t9,-29792(gp)
  46c8c4:	00000000 	nop
  46c8c8:	0320f809 	jalr	t9
  46c8cc:	00000000 	nop
  46c8d0:	8fdc0018 	lw	gp,24(s8)
  46c8d4:	14400004 	bnez	v0,46c8e8 <out_sa+0xb14>
  46c8d8:	00000000 	nop
  46c8dc:	afc0004c 	sw	zero,76(s8)
  46c8e0:	1000012b 	b	46cd90 <out_sa+0xfbc>
  46c8e4:	00000000 	nop
  46c8e8:	8fc20070 	lw	v0,112(s8)
  46c8ec:	00000000 	nop
  46c8f0:	90430000 	lbu	v1,0(v0)
  46c8f4:	24020004 	li	v0,4
  46c8f8:	1062003f 	beq	v1,v0,46c9f8 <out_sa+0xc24>
  46c8fc:	00000000 	nop
  46c900:	8fc20108 	lw	v0,264(s8)
  46c904:	00000000 	nop
  46c908:	8c4200c8 	lw	v0,200(v0)
  46c90c:	00000000 	nop
  46c910:	10400039 	beqz	v0,46c9f8 <out_sa+0xc24>
  46c914:	00000000 	nop
  46c918:	8fc2010c 	lw	v0,268(s8)
  46c91c:	00000000 	nop
  46c920:	1040000e 	beqz	v0,46c95c <out_sa+0xb88>
  46c924:	00000000 	nop
  46c928:	8f84802c 	lw	a0,-32724(gp)
  46c92c:	00000000 	nop
  46c930:	2484490c 	addiu	a0,a0,18700
  46c934:	8f85802c 	lw	a1,-32724(gp)
  46c938:	00000000 	nop
  46c93c:	24a54904 	addiu	a1,a1,18692
  46c940:	240602a5 	li	a2,677
  46c944:	8f998bb8 	lw	t9,-29768(gp)
  46c948:	00000000 	nop
  46c94c:	0320f809 	jalr	t9
  46c950:	00000000 	nop
  46c954:	8fdc0018 	lw	gp,24(s8)
  46c958:	00000000 	nop
  46c95c:	8fc20108 	lw	v0,264(s8)
  46c960:	00000000 	nop
  46c964:	8c4300c8 	lw	v1,200(v0)
  46c968:	8f828b40 	lw	v0,-29888(gp)
  46c96c:	00000000 	nop
  46c970:	1462000e 	bne	v1,v0,46c9ac <out_sa+0xbd8>
  46c974:	00000000 	nop
  46c978:	8f84802c 	lw	a0,-32724(gp)
  46c97c:	00000000 	nop
  46c980:	24844930 	addiu	a0,a0,18736
  46c984:	8f85802c 	lw	a1,-32724(gp)
  46c988:	00000000 	nop
  46c98c:	24a54904 	addiu	a1,a1,18692
  46c990:	240602a6 	li	a2,678
  46c994:	8f998bb8 	lw	t9,-29768(gp)
  46c998:	00000000 	nop
  46c99c:	0320f809 	jalr	t9
  46c9a0:	00000000 	nop
  46c9a4:	8fdc0018 	lw	gp,24(s8)
  46c9a8:	00000000 	nop
  46c9ac:	8fc20108 	lw	v0,264(s8)
  46c9b0:	00000000 	nop
  46c9b4:	8c4200c8 	lw	v0,200(v0)
  46c9b8:	00000000 	nop
  46c9bc:	94430000 	lhu	v1,0(v0)
  46c9c0:	27c200b0 	addiu	v0,s8,176
  46c9c4:	afa20010 	sw	v0,16(sp)
  46c9c8:	24040003 	li	a0,3
  46c9cc:	00602821 	move	a1,v1
  46c9d0:	8fc6009c 	lw	a2,156(s8)
  46c9d4:	8fc700a0 	lw	a3,160(s8)
  46c9d8:	8f998040 	lw	t9,-32704(gp)
  46c9dc:	00000000 	nop
  46c9e0:	2739bbe0 	addiu	t9,t9,-17440
  46c9e4:	00000000 	nop
  46c9e8:	0320f809 	jalr	t9
  46c9ec:	00000000 	nop
  46c9f0:	8fdc0018 	lw	gp,24(s8)
  46c9f4:	00000000 	nop
  46c9f8:	8fc2010c 	lw	v0,268(s8)
  46c9fc:	00000000 	nop
  46ca00:	10400021 	beqz	v0,46ca88 <out_sa+0xcb4>
  46ca04:	00000000 	nop
  46ca08:	27c200b0 	addiu	v0,s8,176
  46ca0c:	afa20010 	sw	v0,16(sp)
  46ca10:	2404000b 	li	a0,11
  46ca14:	24050001 	li	a1,1
  46ca18:	8fc6009c 	lw	a2,156(s8)
  46ca1c:	8fc700a0 	lw	a3,160(s8)
  46ca20:	8f998040 	lw	t9,-32704(gp)
  46ca24:	00000000 	nop
  46ca28:	2739bbe0 	addiu	t9,t9,-17440
  46ca2c:	00000000 	nop
  46ca30:	0320f809 	jalr	t9
  46ca34:	00000000 	nop
  46ca38:	8fdc0018 	lw	gp,24(s8)
  46ca3c:	00000000 	nop
  46ca40:	8fc20108 	lw	v0,264(s8)
  46ca44:	00000000 	nop
  46ca48:	8c43000c 	lw	v1,12(v0)
  46ca4c:	27c200b0 	addiu	v0,s8,176
  46ca50:	afa20010 	sw	v0,16(sp)
  46ca54:	2404000c 	li	a0,12
  46ca58:	8c650010 	lw	a1,16(v1)
  46ca5c:	8fc6009c 	lw	a2,156(s8)
  46ca60:	8fc700a0 	lw	a3,160(s8)
  46ca64:	8f998040 	lw	t9,-32704(gp)
  46ca68:	00000000 	nop
  46ca6c:	2739bbe0 	addiu	t9,t9,-17440
  46ca70:	00000000 	nop
  46ca74:	0320f809 	jalr	t9
  46ca78:	00000000 	nop
  46ca7c:	8fdc0018 	lw	gp,24(s8)
  46ca80:	10000083 	b	46cc90 <out_sa+0xebc>
  46ca84:	00000000 	nop
  46ca88:	8fc20070 	lw	v0,112(s8)
  46ca8c:	00000000 	nop
  46ca90:	90430000 	lbu	v1,0(v0)
  46ca94:	24020004 	li	v0,4
  46ca98:	1462000d 	bne	v1,v0,46cad0 <out_sa+0xcfc>
  46ca9c:	00000000 	nop
  46caa0:	8fc20108 	lw	v0,264(s8)
  46caa4:	00000000 	nop
  46caa8:	8c4400d8 	lw	a0,216(v0)
  46caac:	8c4500dc 	lw	a1,220(v0)
  46cab0:	24020000 	li	v0,0
  46cab4:	24030020 	li	v1,32
  46cab8:	00822024 	and	a0,a0,v0
  46cabc:	00a32824 	and	a1,a1,v1
  46cac0:	00801021 	move	v0,a0
  46cac4:	00451025 	or	v0,v0,a1
  46cac8:	10400052 	beqz	v0,46cc14 <out_sa+0xe40>
  46cacc:	00000000 	nop
  46cad0:	8fc20108 	lw	v0,264(s8)
  46cad4:	00000000 	nop
  46cad8:	8c430264 	lw	v1,612(v0)
  46cadc:	3c02c000 	lui	v0,0xc000
  46cae0:	00621024 	and	v0,v1,v0
  46cae4:	1040002b 	beqz	v0,46cb94 <out_sa+0xdc0>
  46cae8:	00000000 	nop
  46caec:	8fc20108 	lw	v0,264(s8)
  46caf0:	00000000 	nop
  46caf4:	8c4400d8 	lw	a0,216(v0)
  46caf8:	8c4500dc 	lw	a1,220(v0)
  46cafc:	24020000 	li	v0,0
  46cb00:	24030020 	li	v1,32
  46cb04:	00822024 	and	a0,a0,v0
  46cb08:	00a32824 	and	a1,a1,v1
  46cb0c:	00801021 	move	v0,a0
  46cb10:	00451025 	or	v0,v0,a1
  46cb14:	10400010 	beqz	v0,46cb58 <out_sa+0xd84>
  46cb18:	00000000 	nop
  46cb1c:	8fc20108 	lw	v0,264(s8)
  46cb20:	00000000 	nop
  46cb24:	8c420264 	lw	v0,612(v0)
  46cb28:	00000000 	nop
  46cb2c:	30420008 	andi	v0,v0,0x8
  46cb30:	10400005 	beqz	v0,46cb48 <out_sa+0xd74>
  46cb34:	00000000 	nop
  46cb38:	24020003 	li	v0,3
  46cb3c:	afc200e8 	sw	v0,232(s8)
  46cb40:	10000026 	b	46cbdc <out_sa+0xe08>
  46cb44:	00000000 	nop
  46cb48:	3403f003 	li	v1,0xf003
  46cb4c:	afc300e8 	sw	v1,232(s8)
  46cb50:	10000022 	b	46cbdc <out_sa+0xe08>
  46cb54:	00000000 	nop
  46cb58:	8fc20108 	lw	v0,264(s8)
  46cb5c:	00000000 	nop
  46cb60:	8c420264 	lw	v0,612(v0)
  46cb64:	00000000 	nop
  46cb68:	30420008 	andi	v0,v0,0x8
  46cb6c:	10400005 	beqz	v0,46cb84 <out_sa+0xdb0>
  46cb70:	00000000 	nop
  46cb74:	24020004 	li	v0,4
  46cb78:	afc200e8 	sw	v0,232(s8)
  46cb7c:	10000017 	b	46cbdc <out_sa+0xe08>
  46cb80:	00000000 	nop
  46cb84:	3403f004 	li	v1,0xf004
  46cb88:	afc300e8 	sw	v1,232(s8)
  46cb8c:	10000013 	b	46cbdc <out_sa+0xe08>
  46cb90:	00000000 	nop
  46cb94:	8fc20108 	lw	v0,264(s8)
  46cb98:	00000000 	nop
  46cb9c:	8c4400d8 	lw	a0,216(v0)
  46cba0:	8c4500dc 	lw	a1,220(v0)
  46cba4:	24020000 	li	v0,0
  46cba8:	24030020 	li	v1,32
  46cbac:	00822024 	and	a0,a0,v0
  46cbb0:	00a32824 	and	a1,a1,v1
  46cbb4:	00801021 	move	v0,a0
  46cbb8:	00451025 	or	v0,v0,a1
  46cbbc:	10400005 	beqz	v0,46cbd4 <out_sa+0xe00>
  46cbc0:	00000000 	nop
  46cbc4:	24020001 	li	v0,1
  46cbc8:	afc200e8 	sw	v0,232(s8)
  46cbcc:	10000003 	b	46cbdc <out_sa+0xe08>
  46cbd0:	00000000 	nop
  46cbd4:	24030002 	li	v1,2
  46cbd8:	afc300e8 	sw	v1,232(s8)
  46cbdc:	27c200b0 	addiu	v0,s8,176
  46cbe0:	afa20010 	sw	v0,16(sp)
  46cbe4:	24040004 	li	a0,4
  46cbe8:	8fc500e8 	lw	a1,232(s8)
  46cbec:	8fc6009c 	lw	a2,156(s8)
  46cbf0:	8fc700a0 	lw	a3,160(s8)
  46cbf4:	8f998040 	lw	t9,-32704(gp)
  46cbf8:	00000000 	nop
  46cbfc:	2739bbe0 	addiu	t9,t9,-17440
  46cc00:	00000000 	nop
  46cc04:	0320f809 	jalr	t9
  46cc08:	00000000 	nop
  46cc0c:	8fdc0018 	lw	gp,24(s8)
  46cc10:	00000000 	nop
  46cc14:	27c200b0 	addiu	v0,s8,176
  46cc18:	afa20010 	sw	v0,16(sp)
  46cc1c:	24040001 	li	a0,1
  46cc20:	24050001 	li	a1,1
  46cc24:	8fc6009c 	lw	a2,156(s8)
  46cc28:	8fc700a0 	lw	a3,160(s8)
  46cc2c:	8f998040 	lw	t9,-32704(gp)
  46cc30:	00000000 	nop
  46cc34:	2739bbe0 	addiu	t9,t9,-17440
  46cc38:	00000000 	nop
  46cc3c:	0320f809 	jalr	t9
  46cc40:	00000000 	nop
  46cc44:	8fdc0018 	lw	gp,24(s8)
  46cc48:	00000000 	nop
  46cc4c:	8fc20108 	lw	v0,264(s8)
  46cc50:	00000000 	nop
  46cc54:	8c43000c 	lw	v1,12(v0)
  46cc58:	27c200b0 	addiu	v0,s8,176
  46cc5c:	afa20010 	sw	v0,16(sp)
  46cc60:	24040002 	li	a0,2
  46cc64:	8c650014 	lw	a1,20(v1)
  46cc68:	8fc6009c 	lw	a2,156(s8)
  46cc6c:	8fc700a0 	lw	a3,160(s8)
  46cc70:	8f998040 	lw	t9,-32704(gp)
  46cc74:	00000000 	nop
  46cc78:	2739bbe0 	addiu	t9,t9,-17440
  46cc7c:	00000000 	nop
  46cc80:	0320f809 	jalr	t9
  46cc84:	00000000 	nop
  46cc88:	8fdc0018 	lw	gp,24(s8)
  46cc8c:	00000000 	nop
  46cc90:	afc000a8 	sw	zero,168(s8)
  46cc94:	8fc200ac 	lw	v0,172(s8)
  46cc98:	00000000 	nop
  46cc9c:	8c430008 	lw	v1,8(v0)
  46cca0:	8fc200a8 	lw	v0,168(s8)
  46cca4:	00000000 	nop
  46cca8:	1443000e 	bne	v0,v1,46cce4 <out_sa+0xf10>
  46ccac:	00000000 	nop
  46ccb0:	27c400b0 	addiu	a0,s8,176
  46ccb4:	8f998228 	lw	t9,-32216(gp)
  46ccb8:	00000000 	nop
  46ccbc:	0320f809 	jalr	t9
  46ccc0:	00000000 	nop
  46ccc4:	8fdc0018 	lw	gp,24(s8)
  46ccc8:	00000000 	nop
  46cccc:	8fc200a4 	lw	v0,164(s8)
  46ccd0:	00000000 	nop
  46ccd4:	24420001 	addiu	v0,v0,1
  46ccd8:	afc200a4 	sw	v0,164(s8)
  46ccdc:	1000febb 	b	46c7cc <out_sa+0x9f8>
  46cce0:	00000000 	nop
  46cce4:	8fc200a8 	lw	v0,168(s8)
  46cce8:	00000000 	nop
  46ccec:	00021880 	sll	v1,v0,0x2
  46ccf0:	8fc200ac 	lw	v0,172(s8)
  46ccf4:	00000000 	nop
  46ccf8:	8c420004 	lw	v0,4(v0)
  46ccfc:	00000000 	nop
  46cd00:	00431021 	addu	v0,v0,v1
  46cd04:	afc200d8 	sw	v0,216(s8)
  46cd08:	8fc200d8 	lw	v0,216(s8)
  46cd0c:	00000000 	nop
  46cd10:	94440000 	lhu	a0,0(v0)
  46cd14:	8fc200d8 	lw	v0,216(s8)
  46cd18:	00000000 	nop
  46cd1c:	94430002 	lhu	v1,2(v0)
  46cd20:	27c200b0 	addiu	v0,s8,176
  46cd24:	afa20010 	sw	v0,16(sp)
  46cd28:	00602821 	move	a1,v1
  46cd2c:	8fc6009c 	lw	a2,156(s8)
  46cd30:	8fc700a0 	lw	a3,160(s8)
  46cd34:	8f998040 	lw	t9,-32704(gp)
  46cd38:	00000000 	nop
  46cd3c:	2739bbe0 	addiu	t9,t9,-17440
  46cd40:	00000000 	nop
  46cd44:	0320f809 	jalr	t9
  46cd48:	00000000 	nop
  46cd4c:	8fdc0018 	lw	gp,24(s8)
  46cd50:	00000000 	nop
  46cd54:	8fc200a8 	lw	v0,168(s8)
  46cd58:	00000000 	nop
  46cd5c:	24420001 	addiu	v0,v0,1
  46cd60:	afc200a8 	sw	v0,168(s8)
  46cd64:	1000ffcb 	b	46cc94 <out_sa+0xec0>
  46cd68:	00000000 	nop
	}
	/* end of a conjunction of proposals */
    }
    close_output_pbs(&sa_pbs);
  46cd6c:	27c40028 	addiu	a0,s8,40
  46cd70:	8f998228 	lw	t9,-32216(gp)
  46cd74:	00000000 	nop
  46cd78:	0320f809 	jalr	t9
  46cd7c:	00000000 	nop
  46cd80:	8fdc0018 	lw	gp,24(s8)
  46cd84:	00000000 	nop
    ret = TRUE;
  46cd88:	24020001 	li	v0,1
  46cd8c:	afc2004c 	sw	v0,76(s8)

return_out:

#if !defined NO_KERNEL_ALG || !defined NO_IKE_ALG
    if (db_ctx)
  46cd90:	8fc2005c 	lw	v0,92(s8)
  46cd94:	00000000 	nop
  46cd98:	10400008 	beqz	v0,46cdbc <out_sa+0xfe8>
  46cd9c:	00000000 	nop
	    db_destroy(db_ctx);
  46cda0:	8fc4005c 	lw	a0,92(s8)
  46cda4:	8f9987d8 	lw	t9,-30760(gp)
  46cda8:	00000000 	nop
  46cdac:	0320f809 	jalr	t9
  46cdb0:	00000000 	nop
  46cdb4:	8fdc0018 	lw	gp,24(s8)
  46cdb8:	00000000 	nop
#endif
    return ret;
  46cdbc:	8fc2004c 	lw	v0,76(s8)
  46cdc0:	00000000 	nop
}
  46cdc4:	03c0e821 	move	sp,s8
  46cdc8:	8fbf00fc 	lw	ra,252(sp)
  46cdcc:	8fbe00f8 	lw	s8,248(sp)
  46cdd0:	8fb000f0 	lw	s0,240(sp)
  46cdd4:	27bd0100 	addiu	sp,sp,256
  46cdd8:	03e00008 	jr	ra
  46cddc:	00000000 	nop

0046cde0 <decode_long_duration>:
  46cde0:	3c1c0fba 	lui	gp,0xfba
  46cde4:	279cfb90 	addiu	gp,gp,-1136
  46cde8:	0399e021 	addu	gp,gp,t9
  46cdec:	27bdffd0 	addiu	sp,sp,-48
  46cdf0:	afbc0010 	sw	gp,16(sp)
  46cdf4:	afbf0028 	sw	ra,40(sp)
  46cdf8:	afbe0024 	sw	s8,36(sp)
  46cdfc:	afbc0020 	sw	gp,32(sp)
  46ce00:	03a0f021 	move	s8,sp
  46ce04:	afc40030 	sw	a0,48(s8)

/* Handle long form of duration attribute.
 * The code is can only handle values that can fit in unsigned long.
 * "Clamping" is probably an acceptable way to impose this limitation.
 */
static u_int32_t
decode_long_duration(pb_stream *pbs)
{
    u_int32_t val = 0;
  46ce08:	afc00018 	sw	zero,24(s8)

    /* ignore leading zeros */
    while (pbs_left(pbs) != 0 && *pbs->cur == '\0')
  46ce0c:	8fc20030 	lw	v0,48(s8)
  46ce10:	00000000 	nop
  46ce14:	8c430014 	lw	v1,20(v0)
  46ce18:	8fc20030 	lw	v0,48(s8)
  46ce1c:	00000000 	nop
  46ce20:	8c420010 	lw	v0,16(v0)
  46ce24:	00000000 	nop
  46ce28:	10620013 	beq	v1,v0,46ce78 <decode_long_duration+0x98>
  46ce2c:	00000000 	nop
  46ce30:	8fc20030 	lw	v0,48(s8)
  46ce34:	00000000 	nop
  46ce38:	8c420010 	lw	v0,16(v0)
  46ce3c:	00000000 	nop
  46ce40:	90420000 	lbu	v0,0(v0)
  46ce44:	00000000 	nop
  46ce48:	1440000b 	bnez	v0,46ce78 <decode_long_duration+0x98>
  46ce4c:	00000000 	nop
	pbs->cur++;
  46ce50:	8fc20030 	lw	v0,48(s8)
  46ce54:	00000000 	nop
  46ce58:	8c420010 	lw	v0,16(v0)
  46ce5c:	00000000 	nop
  46ce60:	24430001 	addiu	v1,v0,1
  46ce64:	8fc20030 	lw	v0,48(s8)
  46ce68:	00000000 	nop
  46ce6c:	ac430010 	sw	v1,16(v0)
  46ce70:	1000ffe6 	b	46ce0c <decode_long_duration+0x2c>
  46ce74:	00000000 	nop

    if (pbs_left(pbs) > sizeof(val))
  46ce78:	8fc20030 	lw	v0,48(s8)
  46ce7c:	00000000 	nop
  46ce80:	8c430014 	lw	v1,20(v0)
  46ce84:	8fc20030 	lw	v0,48(s8)
  46ce88:	00000000 	nop
  46ce8c:	8c420010 	lw	v0,16(v0)
  46ce90:	00000000 	nop
  46ce94:	00621023 	subu	v0,v1,v0
  46ce98:	2c420005 	sltiu	v0,v0,5
  46ce9c:	14400017 	bnez	v0,46cefc <decode_long_duration+0x11c>
  46cea0:	00000000 	nop
    {
	/* "clamp" too large value to max representable value */
	val -= 1;	/* portable way to get to maximum value */
  46cea4:	8fc20018 	lw	v0,24(s8)
  46cea8:	00000000 	nop
  46ceac:	2442ffff 	addiu	v0,v0,-1
  46ceb0:	afc20018 	sw	v0,24(s8)
	DBG(DBG_PARSING, DBG_log("   too large duration clamped to: %lu"
  46ceb4:	8f8284f8 	lw	v0,-31496(gp)
  46ceb8:	00000000 	nop
  46cebc:	8c420000 	lw	v0,0(v0)
  46cec0:	00000000 	nop
  46cec4:	30420004 	andi	v0,v0,0x4
  46cec8:	10400039 	beqz	v0,46cfb0 <decode_long_duration+0x1d0>
  46cecc:	00000000 	nop
  46ced0:	8f84802c 	lw	a0,-32724(gp)
  46ced4:	00000000 	nop
  46ced8:	24844954 	addiu	a0,a0,18772
  46cedc:	8fc50018 	lw	a1,24(s8)
  46cee0:	8f9983b8 	lw	t9,-31816(gp)
  46cee4:	00000000 	nop
  46cee8:	0320f809 	jalr	t9
  46ceec:	00000000 	nop
  46cef0:	8fdc0010 	lw	gp,16(s8)
  46cef4:	1000002e 	b	46cfb0 <decode_long_duration+0x1d0>
  46cef8:	00000000 	nop
	    , (unsigned long)val));
    }
    else
    {
	/* decode number */
	while (pbs_left(pbs) != 0)
  46cefc:	8fc20030 	lw	v0,48(s8)
  46cf00:	00000000 	nop
  46cf04:	8c430014 	lw	v1,20(v0)
  46cf08:	8fc20030 	lw	v0,48(s8)
  46cf0c:	00000000 	nop
  46cf10:	8c420010 	lw	v0,16(v0)
  46cf14:	00000000 	nop
  46cf18:	14620003 	bne	v1,v0,46cf28 <decode_long_duration+0x148>
  46cf1c:	00000000 	nop
  46cf20:	10000012 	b	46cf6c <decode_long_duration+0x18c>
  46cf24:	00000000 	nop
	    val = (val << BITS_PER_BYTE) | *pbs->cur++;
  46cf28:	8fc20018 	lw	v0,24(s8)
  46cf2c:	00000000 	nop
  46cf30:	00022a00 	sll	a1,v0,0x8
  46cf34:	8fc20030 	lw	v0,48(s8)
  46cf38:	00000000 	nop
  46cf3c:	24440010 	addiu	a0,v0,16
  46cf40:	8c830000 	lw	v1,0(a0)
  46cf44:	00000000 	nop
  46cf48:	00601021 	move	v0,v1
  46cf4c:	90420000 	lbu	v0,0(v0)
  46cf50:	00000000 	nop
  46cf54:	00a21025 	or	v0,a1,v0
  46cf58:	afc20018 	sw	v0,24(s8)
  46cf5c:	24630001 	addiu	v1,v1,1
  46cf60:	ac830000 	sw	v1,0(a0)
  46cf64:	1000ffe5 	b	46cefc <decode_long_duration+0x11c>
  46cf68:	00000000 	nop
	DBG(DBG_PARSING, DBG_log("   long duration: %lu", (unsigned long)val));
  46cf6c:	8f8284f8 	lw	v0,-31496(gp)
  46cf70:	00000000 	nop
  46cf74:	8c420000 	lw	v0,0(v0)
  46cf78:	00000000 	nop
  46cf7c:	30420004 	andi	v0,v0,0x4
  46cf80:	1040000b 	beqz	v0,46cfb0 <decode_long_duration+0x1d0>
  46cf84:	00000000 	nop
  46cf88:	8f84802c 	lw	a0,-32724(gp)
  46cf8c:	00000000 	nop
  46cf90:	2484497c 	addiu	a0,a0,18812
  46cf94:	8fc50018 	lw	a1,24(s8)
  46cf98:	8f9983b8 	lw	t9,-31816(gp)
  46cf9c:	00000000 	nop
  46cfa0:	0320f809 	jalr	t9
  46cfa4:	00000000 	nop
  46cfa8:	8fdc0010 	lw	gp,16(s8)
  46cfac:	00000000 	nop
    }
    return val;
  46cfb0:	8fc20018 	lw	v0,24(s8)
  46cfb4:	00000000 	nop
}
  46cfb8:	03c0e821 	move	sp,s8
  46cfbc:	8fbf0028 	lw	ra,40(sp)
  46cfc0:	8fbe0024 	lw	s8,36(sp)
  46cfc4:	27bd0030 	addiu	sp,sp,48
  46cfc8:	03e00008 	jr	ra
  46cfcc:	00000000 	nop

0046cfd0 <parse_isakmp_sa_body>:
  46cfd0:	3c1c0fba 	lui	gp,0xfba
  46cfd4:	279cf9a0 	addiu	gp,gp,-1632
  46cfd8:	0399e021 	addu	gp,gp,t9
  46cfdc:	27bdfab8 	addiu	sp,sp,-1352
  46cfe0:	afbc0018 	sw	gp,24(sp)
  46cfe4:	afbf0540 	sw	ra,1344(sp)
  46cfe8:	afbe053c 	sw	s8,1340(sp)
  46cfec:	afbc0538 	sw	gp,1336(sp)
  46cff0:	03a0f021 	move	s8,sp
  46cff4:	afc40548 	sw	a0,1352(s8)
  46cff8:	afc5054c 	sw	a1,1356(s8)
  46cffc:	afc60550 	sw	a2,1360(s8)
  46d000:	afc70554 	sw	a3,1364(s8)

/* Parse the body of an ISAKMP SA Payload (i.e. Phase 1 / Main Mode).
 * Various shortcuts are taken.  In particular, the policy, such as
 * it is, is hardwired.
 *
 * If r_sa is non-NULL, the body of an SA representing the selected
 * proposal is emitted.
 *
 * If "selection" is true, the SA is supposed to represent the
 * single tranform that the peer has accepted.
 * ??? We only check that it is acceptable, not that it is one that we offered!
 *
 * Only IPsec DOI is accepted (what is the ISAKMP DOI?).
 * Error response is rudimentary.
 *
 * This routine is used by main_inI1_outR1() and main_inR1_outI2().
 */
notification_t
parse_isakmp_sa_body(
    pb_stream *sa_pbs,	/* body of input SA Payload */
    const struct isakmp_sa *sa,	/* header of input SA Payload */
    pb_stream *r_sa_pbs,	/* if non-NULL, where to emit winning SA */
    bool selection,	/* if this SA is a selection, only one tranform can appear */
    struct state *st)	/* current state object */
{
#ifndef NO_IKE_ALG
    struct connection *c = st->st_connection;
  46d004:	8fc20558 	lw	v0,1368(s8)
  46d008:	00000000 	nop
  46d00c:	8c42000c 	lw	v0,12(v0)
  46d010:	00000000 	nop
  46d014:	afc20020 	sw	v0,32(s8)
#endif
    u_int32_t ipsecdoisit;
    pb_stream proposal_pbs;
    struct isakmp_proposal proposal;
    unsigned no_trans_left;
    int last_transnum;

    /* DOI */
    if (sa->isasa_doi != ISAKMP_DOI_IPSEC)
  46d018:	8fc2054c 	lw	v0,1356(s8)
  46d01c:	00000000 	nop
  46d020:	8c430004 	lw	v1,4(v0)
  46d024:	24020001 	li	v0,1
  46d028:	10620018 	beq	v1,v0,46d08c <parse_isakmp_sa_body+0xbc>
  46d02c:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "Unknown/unsupported DOI %s", enum_show(&doi_names, sa->isasa_doi));
  46d030:	8f8488b8 	lw	a0,-30536(gp)
  46d034:	8fc2054c 	lw	v0,1356(s8)
  46d038:	00000000 	nop
  46d03c:	8c450004 	lw	a1,4(v0)
  46d040:	8f9987fc 	lw	t9,-30724(gp)
  46d044:	00000000 	nop
  46d048:	0320f809 	jalr	t9
  46d04c:	00000000 	nop
  46d050:	8fdc0018 	lw	gp,24(s8)
  46d054:	24040003 	li	a0,3
  46d058:	8f85802c 	lw	a1,-32724(gp)
  46d05c:	00000000 	nop
  46d060:	24a54994 	addiu	a1,a1,18836
  46d064:	00403021 	move	a2,v0
  46d068:	8f998c48 	lw	t9,-29624(gp)
  46d06c:	00000000 	nop
  46d070:	0320f809 	jalr	t9
  46d074:	00000000 	nop
  46d078:	8fdc0018 	lw	gp,24(s8)
  46d07c:	00000000 	nop
	return DOI_NOT_SUPPORTED;
  46d080:	24020002 	li	v0,2
  46d084:	10000623 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d088:	00000000 	nop
    }

    /* Situation */
    if (!in_struct(&ipsecdoisit, &ipsec_sit_desc, sa_pbs, NULL))
  46d08c:	27c40024 	addiu	a0,s8,36
  46d090:	8f8583dc 	lw	a1,-31780(gp)
  46d094:	8fc60548 	lw	a2,1352(s8)
  46d098:	00003821 	move	a3,zero
  46d09c:	8f998b3c 	lw	t9,-29892(gp)
  46d0a0:	00000000 	nop
  46d0a4:	0320f809 	jalr	t9
  46d0a8:	00000000 	nop
  46d0ac:	8fdc0018 	lw	gp,24(s8)
  46d0b0:	14400004 	bnez	v0,46d0c4 <parse_isakmp_sa_body+0xf4>
  46d0b4:	00000000 	nop
    {
	return SITUATION_NOT_SUPPORTED;
  46d0b8:	24020003 	li	v0,3
  46d0bc:	10000615 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d0c0:	00000000 	nop
    }

    if (ipsecdoisit != SIT_IDENTITY_ONLY)
  46d0c4:	8fc30024 	lw	v1,36(s8)
  46d0c8:	24020001 	li	v0,1
  46d0cc:	10620019 	beq	v1,v0,46d134 <parse_isakmp_sa_body+0x164>
  46d0d0:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "unsupported IPsec DOI situation (%s)"
  46d0d4:	8fc30024 	lw	v1,36(s8)
  46d0d8:	00001021 	move	v0,zero
  46d0dc:	8f848600 	lw	a0,-31232(gp)
  46d0e0:	00403021 	move	a2,v0
  46d0e4:	00603821 	move	a3,v1
  46d0e8:	8f9988c4 	lw	t9,-30524(gp)
  46d0ec:	00000000 	nop
  46d0f0:	0320f809 	jalr	t9
  46d0f4:	00000000 	nop
  46d0f8:	8fdc0018 	lw	gp,24(s8)
  46d0fc:	24040003 	li	a0,3
  46d100:	8f85802c 	lw	a1,-32724(gp)
  46d104:	00000000 	nop
  46d108:	24a549b0 	addiu	a1,a1,18864
  46d10c:	00403021 	move	a2,v0
  46d110:	8f998c48 	lw	t9,-29624(gp)
  46d114:	00000000 	nop
  46d118:	0320f809 	jalr	t9
  46d11c:	00000000 	nop
  46d120:	8fdc0018 	lw	gp,24(s8)
  46d124:	00000000 	nop
	    , bitnamesof(sit_bit_names, ipsecdoisit));
	return SITUATION_NOT_SUPPORTED;
  46d128:	24020003 	li	v0,3
  46d12c:	100005f9 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d130:	00000000 	nop
    }

    /* The rules for ISAKMP SAs are scattered.
     * draft-ietf-ipsec-isakmp-oakley-07.txt section 5 says that there
     * can only be one SA, and it can have only one proposal in it.
     * There may well be multiple transforms.
     */
    if (!in_struct(&proposal, &isakmp_proposal_desc, sa_pbs, &proposal_pbs))
  46d134:	27c40048 	addiu	a0,s8,72
  46d138:	8f85821c 	lw	a1,-32228(gp)
  46d13c:	8fc60548 	lw	a2,1352(s8)
  46d140:	27c70028 	addiu	a3,s8,40
  46d144:	8f998b3c 	lw	t9,-29892(gp)
  46d148:	00000000 	nop
  46d14c:	0320f809 	jalr	t9
  46d150:	00000000 	nop
  46d154:	8fdc0018 	lw	gp,24(s8)
  46d158:	14400004 	bnez	v0,46d16c <parse_isakmp_sa_body+0x19c>
  46d15c:	00000000 	nop
	return PAYLOAD_MALFORMED;
  46d160:	24020010 	li	v0,16
  46d164:	100005eb 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d168:	00000000 	nop

    if (proposal.isap_np != ISAKMP_NEXT_NONE)
  46d16c:	93c20048 	lbu	v0,72(s8)
  46d170:	00000000 	nop
  46d174:	10400017 	beqz	v0,46d1d4 <parse_isakmp_sa_body+0x204>
  46d178:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "Proposal Payload must be alone in Oakley SA; found %s following Proposal"
  46d17c:	93c20048 	lbu	v0,72(s8)
  46d180:	8f8483f4 	lw	a0,-31756(gp)
  46d184:	00402821 	move	a1,v0
  46d188:	8f9987fc 	lw	t9,-30724(gp)
  46d18c:	00000000 	nop
  46d190:	0320f809 	jalr	t9
  46d194:	00000000 	nop
  46d198:	8fdc0018 	lw	gp,24(s8)
  46d19c:	24040003 	li	a0,3
  46d1a0:	8f85802c 	lw	a1,-32724(gp)
  46d1a4:	00000000 	nop
  46d1a8:	24a549d8 	addiu	a1,a1,18904
  46d1ac:	00403021 	move	a2,v0
  46d1b0:	8f998c48 	lw	t9,-29624(gp)
  46d1b4:	00000000 	nop
  46d1b8:	0320f809 	jalr	t9
  46d1bc:	00000000 	nop
  46d1c0:	8fdc0018 	lw	gp,24(s8)
  46d1c4:	00000000 	nop
	    , enum_show(&payload_names, proposal.isap_np));
	return PAYLOAD_MALFORMED;
  46d1c8:	24020010 	li	v0,16
  46d1cc:	100005d1 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d1d0:	00000000 	nop
    }

    if (proposal.isap_protoid != PROTO_ISAKMP)
  46d1d4:	93c3004d 	lbu	v1,77(s8)
  46d1d8:	24020001 	li	v0,1
  46d1dc:	10620017 	beq	v1,v0,46d23c <parse_isakmp_sa_body+0x26c>
  46d1e0:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "unexpected Protocol ID (%s) found in Oakley Proposal"
  46d1e4:	93c2004d 	lbu	v0,77(s8)
  46d1e8:	8f848ab4 	lw	a0,-30028(gp)
  46d1ec:	00402821 	move	a1,v0
  46d1f0:	8f9987fc 	lw	t9,-30724(gp)
  46d1f4:	00000000 	nop
  46d1f8:	0320f809 	jalr	t9
  46d1fc:	00000000 	nop
  46d200:	8fdc0018 	lw	gp,24(s8)
  46d204:	24040003 	li	a0,3
  46d208:	8f85802c 	lw	a1,-32724(gp)
  46d20c:	00000000 	nop
  46d210:	24a54a24 	addiu	a1,a1,18980
  46d214:	00403021 	move	a2,v0
  46d218:	8f998c48 	lw	t9,-29624(gp)
  46d21c:	00000000 	nop
  46d220:	0320f809 	jalr	t9
  46d224:	00000000 	nop
  46d228:	8fdc0018 	lw	gp,24(s8)
  46d22c:	00000000 	nop
	    , enum_show(&protocol_names, proposal.isap_protoid));
	return INVALID_PROTOCOL_ID;
  46d230:	2402000a 	li	v0,10
  46d234:	100005b7 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d238:	00000000 	nop
    }

    /* Just what should we accept for the SPI field?
     * The RFC is sort of contradictory.  We will ignore the SPI
     * as long as it is of the proper size.
     *
     * From RFC2408 2.4 Identifying Security Associations:
     *   During phase 1 negotiations, the initiator and responder cookies
     *   determine the ISAKMP SA. Therefore, the SPI field in the Proposal
     *   payload is redundant and MAY be set to 0 or it MAY contain the
     *   transmitting entity's cookie.
     *
     * From RFC2408 3.5 Proposal Payload:
     *    o  SPI Size (1 octet) - Length in octets of the SPI as defined by
     *       the Protocol-Id.  In the case of ISAKMP, the Initiator and
     *       Responder cookie pair from the ISAKMP Header is the ISAKMP SPI,
     *       therefore, the SPI Size is irrelevant and MAY be from zero (0) to
     *       sixteen (16).  If the SPI Size is non-zero, the content of the
     *       SPI field MUST be ignored.  If the SPI Size is not a multiple of
     *       4 octets it will have some impact on the SPI field and the
     *       alignment of all payloads in the message.  The Domain of
     *       Interpretation (DOI) will dictate the SPI Size for other
     *       protocols.
     */
    if (proposal.isap_spisize == 0)
  46d23c:	93c2004e 	lbu	v0,78(s8)
  46d240:	00000000 	nop
  46d244:	14400003 	bnez	v0,46d254 <parse_isakmp_sa_body+0x284>
  46d248:	00000000 	nop
  46d24c:	10000026 	b	46d2e8 <parse_isakmp_sa_body+0x318>
  46d250:	00000000 	nop
    {
	/* empty (0) SPI -- fine */
    }
    else if (proposal.isap_spisize <= MAX_ISAKMP_SPI_SIZE)
  46d254:	93c2004e 	lbu	v0,78(s8)
  46d258:	00000000 	nop
  46d25c:	2c420011 	sltiu	v0,v0,17
  46d260:	10400012 	beqz	v0,46d2ac <parse_isakmp_sa_body+0x2dc>
  46d264:	00000000 	nop
    {
	u_char junk_spi[MAX_ISAKMP_SPI_SIZE];

	if (!in_raw(junk_spi, proposal.isap_spisize, &proposal_pbs, "Oakley SPI"))
  46d268:	93c2004e 	lbu	v0,78(s8)
  46d26c:	27c40058 	addiu	a0,s8,88
  46d270:	00402821 	move	a1,v0
  46d274:	27c60028 	addiu	a2,s8,40
  46d278:	8f87802c 	lw	a3,-32724(gp)
  46d27c:	00000000 	nop
  46d280:	24e74a5c 	addiu	a3,a3,19036
  46d284:	8f99867c 	lw	t9,-31108(gp)
  46d288:	00000000 	nop
  46d28c:	0320f809 	jalr	t9
  46d290:	00000000 	nop
  46d294:	8fdc0018 	lw	gp,24(s8)
  46d298:	14400013 	bnez	v0,46d2e8 <parse_isakmp_sa_body+0x318>
  46d29c:	00000000 	nop
	    return PAYLOAD_MALFORMED;
  46d2a0:	24020010 	li	v0,16
  46d2a4:	1000059b 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d2a8:	00000000 	nop
    }
    else
    {
	loglog(RC_LOG_SERIOUS, "invalid SPI size (%u) in Oakley Proposal"
  46d2ac:	93c2004e 	lbu	v0,78(s8)
  46d2b0:	24040003 	li	a0,3
  46d2b4:	8f85802c 	lw	a1,-32724(gp)
  46d2b8:	00000000 	nop
  46d2bc:	24a54a68 	addiu	a1,a1,19048
  46d2c0:	00403021 	move	a2,v0
  46d2c4:	8f998c48 	lw	t9,-29624(gp)
  46d2c8:	00000000 	nop
  46d2cc:	0320f809 	jalr	t9
  46d2d0:	00000000 	nop
  46d2d4:	8fdc0018 	lw	gp,24(s8)
  46d2d8:	00000000 	nop
	    , (unsigned)proposal.isap_spisize);
	return INVALID_SPI;
  46d2dc:	2402000b 	li	v0,11
  46d2e0:	1000058c 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d2e4:	00000000 	nop
    }

    if (selection && proposal.isap_notrans != 1)
  46d2e8:	8fc20554 	lw	v0,1364(s8)
  46d2ec:	00000000 	nop
  46d2f0:	10400014 	beqz	v0,46d344 <parse_isakmp_sa_body+0x374>
  46d2f4:	00000000 	nop
  46d2f8:	93c3004f 	lbu	v1,79(s8)
  46d2fc:	24020001 	li	v0,1
  46d300:	10620010 	beq	v1,v0,46d344 <parse_isakmp_sa_body+0x374>
  46d304:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "a single Transform is required in a selecting Oakley Proposal; found %u"
  46d308:	93c2004f 	lbu	v0,79(s8)
  46d30c:	24040003 	li	a0,3
  46d310:	8f85802c 	lw	a1,-32724(gp)
  46d314:	00000000 	nop
  46d318:	24a54a94 	addiu	a1,a1,19092
  46d31c:	00403021 	move	a2,v0
  46d320:	8f998c48 	lw	t9,-29624(gp)
  46d324:	00000000 	nop
  46d328:	0320f809 	jalr	t9
  46d32c:	00000000 	nop
  46d330:	8fdc0018 	lw	gp,24(s8)
  46d334:	00000000 	nop
	    , (unsigned)proposal.isap_notrans);
	return BAD_PROPOSAL_SYNTAX;
  46d338:	2402000f 	li	v0,15
  46d33c:	10000575 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d340:	00000000 	nop
    }

    /* for each transform payload... */

    last_transnum = -1;
  46d344:	2402ffff 	li	v0,-1
  46d348:	afc20054 	sw	v0,84(s8)
    no_trans_left = proposal.isap_notrans;
  46d34c:	93c2004f 	lbu	v0,79(s8)
  46d350:	00000000 	nop
  46d354:	afc20050 	sw	v0,80(s8)
    for (;;)
    {
	pb_stream trans_pbs;
	u_char *attr_start;
	size_t attr_len;
	struct isakmp_transform trans;
	lset_t seen_attrs = 0
  46d358:	00001021 	move	v0,zero
  46d35c:	00001821 	move	v1,zero
  46d360:	afc20090 	sw	v0,144(s8)
  46d364:	afc30094 	sw	v1,148(s8)
	    , seen_durations = 0;
  46d368:	00002021 	move	a0,zero
  46d36c:	00002821 	move	a1,zero
  46d370:	afc40098 	sw	a0,152(s8)
  46d374:	afc5009c 	sw	a1,156(s8)
	u_int16_t life_type;
	struct oakley_trans_attrs ta;
	err_t ugh = NULL;	/* set to diagnostic when problem detected */
  46d378:	afc000c8 	sw	zero,200(s8)

	zero(&ta);
  46d37c:	27c400a8 	addiu	a0,s8,168
  46d380:	00002821 	move	a1,zero
  46d384:	24060020 	li	a2,32
  46d388:	8f998500 	lw	t9,-31488(gp)
  46d38c:	00000000 	nop
  46d390:	0320f809 	jalr	t9
  46d394:	00000000 	nop
  46d398:	8fdc0018 	lw	gp,24(s8)
  46d39c:	00000000 	nop

	/* initialize only optional field in ta */
	ta.life_seconds = OAKLEY_ISAKMP_SA_LIFETIME_DEFAULT;	/* When this SA expires (seconds) */
  46d3a0:	24020e10 	li	v0,3600
  46d3a4:	afc200c0 	sw	v0,192(s8)

	if (no_trans_left == 0)
  46d3a8:	8fc20050 	lw	v0,80(s8)
  46d3ac:	00000000 	nop
  46d3b0:	1440000e 	bnez	v0,46d3ec <parse_isakmp_sa_body+0x41c>
  46d3b4:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "number of Transform Payloads disagrees with Oakley Proposal Payload");
  46d3b8:	24040003 	li	a0,3
  46d3bc:	8f85802c 	lw	a1,-32724(gp)
  46d3c0:	00000000 	nop
  46d3c4:	24a54adc 	addiu	a1,a1,19164
  46d3c8:	8f998c48 	lw	t9,-29624(gp)
  46d3cc:	00000000 	nop
  46d3d0:	0320f809 	jalr	t9
  46d3d4:	00000000 	nop
  46d3d8:	8fdc0018 	lw	gp,24(s8)
  46d3dc:	00000000 	nop
	    return BAD_PROPOSAL_SYNTAX;
  46d3e0:	2402000f 	li	v0,15
  46d3e4:	1000054b 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d3e8:	00000000 	nop
	}

	if (!in_struct(&trans, &isakmp_isakmp_transform_desc, &proposal_pbs, &trans_pbs))
  46d3ec:	27c40058 	addiu	a0,s8,88
  46d3f0:	8f858960 	lw	a1,-30368(gp)
  46d3f4:	27c60028 	addiu	a2,s8,40
  46d3f8:	27c70068 	addiu	a3,s8,104
  46d3fc:	8f998b3c 	lw	t9,-29892(gp)
  46d400:	00000000 	nop
  46d404:	0320f809 	jalr	t9
  46d408:	00000000 	nop
  46d40c:	8fdc0018 	lw	gp,24(s8)
  46d410:	14400004 	bnez	v0,46d424 <parse_isakmp_sa_body+0x454>
  46d414:	00000000 	nop
	    return BAD_PROPOSAL_SYNTAX;
  46d418:	2402000f 	li	v0,15
  46d41c:	1000053d 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d420:	00000000 	nop

	if (trans.isat_transnum <= last_transnum)
  46d424:	93c2005c 	lbu	v0,92(s8)
  46d428:	8fc30054 	lw	v1,84(s8)
  46d42c:	00000000 	nop
  46d430:	0062102a 	slt	v0,v1,v0
  46d434:	1440000e 	bnez	v0,46d470 <parse_isakmp_sa_body+0x4a0>
  46d438:	00000000 	nop
	{
	    /* picky, picky, picky */
	    loglog(RC_LOG_SERIOUS, "Transform Numbers are not monotonically increasing"
  46d43c:	24040003 	li	a0,3
  46d440:	8f85802c 	lw	a1,-32724(gp)
  46d444:	00000000 	nop
  46d448:	24a54b20 	addiu	a1,a1,19232
  46d44c:	8f998c48 	lw	t9,-29624(gp)
  46d450:	00000000 	nop
  46d454:	0320f809 	jalr	t9
  46d458:	00000000 	nop
  46d45c:	8fdc0018 	lw	gp,24(s8)
  46d460:	00000000 	nop
		" in Oakley Proposal");
	    return BAD_PROPOSAL_SYNTAX;
  46d464:	2402000f 	li	v0,15
  46d468:	1000052a 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d46c:	00000000 	nop
	}
	last_transnum = trans.isat_transnum;
  46d470:	93c2005c 	lbu	v0,92(s8)
  46d474:	00000000 	nop
  46d478:	afc20054 	sw	v0,84(s8)

	if (trans.isat_transid != KEY_IKE)
  46d47c:	93c3005d 	lbu	v1,93(s8)
  46d480:	24020001 	li	v0,1
  46d484:	10620017 	beq	v1,v0,46d4e4 <parse_isakmp_sa_body+0x514>
  46d488:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "expected KEY_IKE but found %s in Oakley Transform"
  46d48c:	93c2005d 	lbu	v0,93(s8)
  46d490:	8f848660 	lw	a0,-31136(gp)
  46d494:	00402821 	move	a1,v0
  46d498:	8f9987fc 	lw	t9,-30724(gp)
  46d49c:	00000000 	nop
  46d4a0:	0320f809 	jalr	t9
  46d4a4:	00000000 	nop
  46d4a8:	8fdc0018 	lw	gp,24(s8)
  46d4ac:	24040003 	li	a0,3
  46d4b0:	8f85802c 	lw	a1,-32724(gp)
  46d4b4:	00000000 	nop
  46d4b8:	24a54b68 	addiu	a1,a1,19304
  46d4bc:	00403021 	move	a2,v0
  46d4c0:	8f998c48 	lw	t9,-29624(gp)
  46d4c4:	00000000 	nop
  46d4c8:	0320f809 	jalr	t9
  46d4cc:	00000000 	nop
  46d4d0:	8fdc0018 	lw	gp,24(s8)
  46d4d4:	00000000 	nop
		, enum_show(&isakmp_transformid_names, trans.isat_transid));
	    return INVALID_TRANSFORM_ID;
  46d4d8:	2402000c 	li	v0,12
  46d4dc:	1000050d 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d4e0:	00000000 	nop
	}

	attr_start = trans_pbs.cur;
  46d4e4:	8fc20078 	lw	v0,120(s8)
  46d4e8:	00000000 	nop
  46d4ec:	afc20088 	sw	v0,136(s8)
	attr_len = pbs_left(&trans_pbs);
  46d4f0:	8fc3007c 	lw	v1,124(s8)
  46d4f4:	8fc20078 	lw	v0,120(s8)
  46d4f8:	00000000 	nop
  46d4fc:	00621023 	subu	v0,v1,v0
  46d500:	afc2008c 	sw	v0,140(s8)

	/* process all the attributes that make up the transform */

	while (pbs_left(&trans_pbs) != 0)
  46d504:	8fc3007c 	lw	v1,124(s8)
  46d508:	8fc20078 	lw	v0,120(s8)
  46d50c:	00000000 	nop
  46d510:	14620003 	bne	v1,v0,46d520 <parse_isakmp_sa_body+0x550>
  46d514:	00000000 	nop
  46d518:	100003ad 	b	46e3d0 <parse_isakmp_sa_body+0x1400>
  46d51c:	00000000 	nop
	{
	    struct isakmp_attribute a;
	    pb_stream attr_pbs;
	    u_int32_t val;	/* room for larger values */

	    if (!in_struct(&a, &isakmp_oakley_attribute_desc, &trans_pbs, &attr_pbs))
  46d520:	27c40060 	addiu	a0,s8,96
  46d524:	8f8585dc 	lw	a1,-31268(gp)
  46d528:	27c60068 	addiu	a2,s8,104
  46d52c:	27c700d0 	addiu	a3,s8,208
  46d530:	8f998b3c 	lw	t9,-29892(gp)
  46d534:	00000000 	nop
  46d538:	0320f809 	jalr	t9
  46d53c:	00000000 	nop
  46d540:	8fdc0018 	lw	gp,24(s8)
  46d544:	14400004 	bnez	v0,46d558 <parse_isakmp_sa_body+0x588>
  46d548:	00000000 	nop
		return BAD_PROPOSAL_SYNTAX;
  46d54c:	2402000f 	li	v0,15
  46d550:	100004f0 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d554:	00000000 	nop

	    passert((a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK) < 32);
  46d558:	97c20060 	lhu	v0,96(s8)
  46d55c:	00000000 	nop
  46d560:	30427fff 	andi	v0,v0,0x7fff
  46d564:	3042ffff 	andi	v0,v0,0xffff
  46d568:	2c420020 	sltiu	v0,v0,32
  46d56c:	1440000e 	bnez	v0,46d5a8 <parse_isakmp_sa_body+0x5d8>
  46d570:	00000000 	nop
  46d574:	8f84802c 	lw	a0,-32724(gp)
  46d578:	00000000 	nop
  46d57c:	24844b9c 	addiu	a0,a0,19356
  46d580:	8f85802c 	lw	a1,-32724(gp)
  46d584:	00000000 	nop
  46d588:	24a54904 	addiu	a1,a1,18692
  46d58c:	240603df 	li	a2,991
  46d590:	8f998bb8 	lw	t9,-29768(gp)
  46d594:	00000000 	nop
  46d598:	0320f809 	jalr	t9
  46d59c:	00000000 	nop
  46d5a0:	8fdc0018 	lw	gp,24(s8)
  46d5a4:	00000000 	nop

	    if (seen_attrs & LELEM(a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK))
  46d5a8:	97c20060 	lhu	v0,96(s8)
  46d5ac:	00000000 	nop
  46d5b0:	30427fff 	andi	v0,v0,0x7fff
  46d5b4:	3044ffff 	andi	a0,v0,0xffff
  46d5b8:	24020000 	li	v0,0
  46d5bc:	24030001 	li	v1,1
  46d5c0:	00043680 	sll	a2,a0,0x1a
  46d5c4:	04c10004 	bgez	a2,46d5d8 <parse_isakmp_sa_body+0x608>
  46d5c8:	00000000 	nop
  46d5cc:	00834004 	sllv	t0,v1,a0
  46d5d0:	10000007 	b	46d5f0 <parse_isakmp_sa_body+0x620>
  46d5d4:	00004821 	move	t1,zero
  46d5d8:	10c00004 	beqz	a2,46d5ec <parse_isakmp_sa_body+0x61c>
  46d5dc:	00824004 	sllv	t0,v0,a0
  46d5e0:	00043023 	negu	a2,a0
  46d5e4:	00c33006 	srlv	a2,v1,a2
  46d5e8:	01064025 	or	t0,t0,a2
  46d5ec:	00834804 	sllv	t1,v1,a0
  46d5f0:	01002021 	move	a0,t0
  46d5f4:	01202821 	move	a1,t1
  46d5f8:	8fc20090 	lw	v0,144(s8)
  46d5fc:	8fc30094 	lw	v1,148(s8)
  46d600:	00822024 	and	a0,a0,v0
  46d604:	00a32824 	and	a1,a1,v1
  46d608:	00801021 	move	v0,a0
  46d60c:	00451025 	or	v0,v0,a1
  46d610:	10400019 	beqz	v0,46d678 <parse_isakmp_sa_body+0x6a8>
  46d614:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "repeated %s attribute in Oakley Transform %u"
  46d618:	97c20060 	lhu	v0,96(s8)
  46d61c:	8f8481f8 	lw	a0,-32264(gp)
  46d620:	00402821 	move	a1,v0
  46d624:	8f9987fc 	lw	t9,-30724(gp)
  46d628:	00000000 	nop
  46d62c:	0320f809 	jalr	t9
  46d630:	00000000 	nop
  46d634:	8fdc0018 	lw	gp,24(s8)
  46d638:	93c3005c 	lbu	v1,92(s8)
  46d63c:	24040003 	li	a0,3
  46d640:	8f85802c 	lw	a1,-32724(gp)
  46d644:	00000000 	nop
  46d648:	24a54bcc 	addiu	a1,a1,19404
  46d64c:	00403021 	move	a2,v0
  46d650:	00603821 	move	a3,v1
  46d654:	8f998c48 	lw	t9,-29624(gp)
  46d658:	00000000 	nop
  46d65c:	0320f809 	jalr	t9
  46d660:	00000000 	nop
  46d664:	8fdc0018 	lw	gp,24(s8)
  46d668:	00000000 	nop
		    , enum_show(&oakley_attr_names, a.isaat_af_type)
		    , trans.isat_transnum);
		return BAD_PROPOSAL_SYNTAX;
  46d66c:	2402000f 	li	v0,15
  46d670:	100004a8 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46d674:	00000000 	nop
	    }

	    seen_attrs |= LELEM(a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK);
  46d678:	97c20060 	lhu	v0,96(s8)
  46d67c:	00000000 	nop
  46d680:	30427fff 	andi	v0,v0,0x7fff
  46d684:	3044ffff 	andi	a0,v0,0xffff
  46d688:	24020000 	li	v0,0
  46d68c:	24030001 	li	v1,1
  46d690:	00043680 	sll	a2,a0,0x1a
  46d694:	04c10004 	bgez	a2,46d6a8 <parse_isakmp_sa_body+0x6d8>
  46d698:	00000000 	nop
  46d69c:	00834004 	sllv	t0,v1,a0
  46d6a0:	10000007 	b	46d6c0 <parse_isakmp_sa_body+0x6f0>
  46d6a4:	00004821 	move	t1,zero
  46d6a8:	10c00004 	beqz	a2,46d6bc <parse_isakmp_sa_body+0x6ec>
  46d6ac:	00824004 	sllv	t0,v0,a0
  46d6b0:	00043023 	negu	a2,a0
  46d6b4:	00c33006 	srlv	a2,v1,a2
  46d6b8:	01064025 	or	t0,t0,a2
  46d6bc:	00834804 	sllv	t1,v1,a0
  46d6c0:	01002021 	move	a0,t0
  46d6c4:	01202821 	move	a1,t1
  46d6c8:	8fc20090 	lw	v0,144(s8)
  46d6cc:	8fc30094 	lw	v1,148(s8)
  46d6d0:	00441025 	or	v0,v0,a0
  46d6d4:	00651825 	or	v1,v1,a1
  46d6d8:	afc20090 	sw	v0,144(s8)
  46d6dc:	afc30094 	sw	v1,148(s8)

	    val = a.isaat_lv;
  46d6e0:	97c20062 	lhu	v0,98(s8)
  46d6e4:	00000000 	nop
  46d6e8:	afc200f0 	sw	v0,240(s8)

	    DBG(DBG_PARSING,
  46d6ec:	8f8284f8 	lw	v0,-31496(gp)
  46d6f0:	00000000 	nop
  46d6f4:	8c420000 	lw	v0,0(v0)
  46d6f8:	00000000 	nop
  46d6fc:	30420004 	andi	v0,v0,0x4
  46d700:	10400027 	beqz	v0,46d7a0 <parse_isakmp_sa_body+0x7d0>
  46d704:	00000000 	nop
  46d708:	97c20060 	lhu	v0,96(s8)
  46d70c:	00000000 	nop
  46d710:	30427fff 	andi	v0,v0,0x7fff
  46d714:	3042ffff 	andi	v0,v0,0xffff
  46d718:	00021080 	sll	v0,v0,0x2
  46d71c:	8f81842c 	lw	at,-31700(gp)
  46d720:	00000000 	nop
  46d724:	00221021 	addu	v0,at,v0
  46d728:	8c420000 	lw	v0,0(v0)
  46d72c:	00000000 	nop
  46d730:	afc200f4 	sw	v0,244(s8)
  46d734:	8fc200f4 	lw	v0,244(s8)
  46d738:	00000000 	nop
  46d73c:	10400018 	beqz	v0,46d7a0 <parse_isakmp_sa_body+0x7d0>
  46d740:	00000000 	nop
  46d744:	8fc400f4 	lw	a0,244(s8)
  46d748:	8fc500f0 	lw	a1,240(s8)
  46d74c:	8f9984bc 	lw	t9,-31556(gp)
  46d750:	00000000 	nop
  46d754:	0320f809 	jalr	t9
  46d758:	00000000 	nop
  46d75c:	8fdc0018 	lw	gp,24(s8)
  46d760:	afc200f8 	sw	v0,248(s8)
  46d764:	8fc200f8 	lw	v0,248(s8)
  46d768:	00000000 	nop
  46d76c:	1040000c 	beqz	v0,46d7a0 <parse_isakmp_sa_body+0x7d0>
  46d770:	00000000 	nop
  46d774:	8f84802c 	lw	a0,-32724(gp)
  46d778:	00000000 	nop
  46d77c:	24844bfc 	addiu	a0,a0,19452
  46d780:	8fc500f0 	lw	a1,240(s8)
  46d784:	8fc600f8 	lw	a2,248(s8)
  46d788:	8f9983b8 	lw	t9,-31816(gp)
  46d78c:	00000000 	nop
  46d790:	0320f809 	jalr	t9
  46d794:	00000000 	nop
  46d798:	8fdc0018 	lw	gp,24(s8)
  46d79c:	00000000 	nop
	    {
		enum_names *vdesc = oakley_attr_val_descs
		    [a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK];

		if (vdesc != NULL)
		{
		    const char *nm = enum_name(vdesc, val);

		    if (nm != NULL)
			DBG_log("   [%u is %s]", (unsigned)val, nm);
		}
	    });

	    switch (a.isaat_af_type)
  46d7a0:	97c90060 	lhu	t1,96(s8)
  46d7a4:	00000000 	nop
  46d7a8:	afc90518 	sw	t1,1304(s8)
  46d7ac:	34028003 	li	v0,0x8003
  46d7b0:	8fc30518 	lw	v1,1304(s8)
  46d7b4:	00000000 	nop
  46d7b8:	106200b7 	beq	v1,v0,46da98 <parse_isakmp_sa_body+0xac8>
  46d7bc:	00000000 	nop
  46d7c0:	8fc40518 	lw	a0,1304(s8)
  46d7c4:	00000000 	nop
  46d7c8:	0044102a 	slt	v0,v0,a0
  46d7cc:	14400012 	bnez	v0,46d818 <parse_isakmp_sa_body+0x848>
  46d7d0:	00000000 	nop
  46d7d4:	34028001 	li	v0,0x8001
  46d7d8:	8fc50518 	lw	a1,1304(s8)
  46d7dc:	00000000 	nop
  46d7e0:	10a2002a 	beq	a1,v0,46d88c <parse_isakmp_sa_body+0x8bc>
  46d7e4:	00000000 	nop
  46d7e8:	8fc80518 	lw	t0,1304(s8)
  46d7ec:	00000000 	nop
  46d7f0:	0048102a 	slt	v0,v0,t0
  46d7f4:	14400067 	bnez	v0,46d994 <parse_isakmp_sa_body+0x9c4>
  46d7f8:	00000000 	nop
  46d7fc:	2402000c 	li	v0,12
  46d800:	8fc90518 	lw	t1,1304(s8)
  46d804:	00000000 	nop
  46d808:	11220246 	beq	t1,v0,46e124 <parse_isakmp_sa_body+0x1154>
  46d80c:	00000000 	nop
  46d810:	100002d2 	b	46e35c <parse_isakmp_sa_body+0x138c>
  46d814:	00000000 	nop
  46d818:	3402800b 	li	v0,0x800b
  46d81c:	8fc30518 	lw	v1,1304(s8)
  46d820:	00000000 	nop
  46d824:	106201d2 	beq	v1,v0,46df70 <parse_isakmp_sa_body+0xfa0>
  46d828:	00000000 	nop
  46d82c:	8fc40518 	lw	a0,1304(s8)
  46d830:	00000000 	nop
  46d834:	0044102a 	slt	v0,v0,a0
  46d838:	14400008 	bnez	v0,46d85c <parse_isakmp_sa_body+0x88c>
  46d83c:	00000000 	nop
  46d840:	34028004 	li	v0,0x8004
  46d844:	8fc50518 	lw	a1,1304(s8)
  46d848:	00000000 	nop
  46d84c:	10a201b4 	beq	a1,v0,46df20 <parse_isakmp_sa_body+0xf50>
  46d850:	00000000 	nop
  46d854:	100002c1 	b	46e35c <parse_isakmp_sa_body+0x138c>
  46d858:	00000000 	nop
  46d85c:	3402800c 	li	v0,0x800c
  46d860:	8fc80518 	lw	t0,1304(s8)
  46d864:	00000000 	nop
  46d868:	11020237 	beq	t0,v0,46e148 <parse_isakmp_sa_body+0x1178>
  46d86c:	00000000 	nop
  46d870:	3402800e 	li	v0,0x800e
  46d874:	8fc90518 	lw	t1,1304(s8)
  46d878:	00000000 	nop
  46d87c:	11220282 	beq	t1,v0,46e288 <parse_isakmp_sa_body+0x12b8>
  46d880:	00000000 	nop
  46d884:	100002b5 	b	46e35c <parse_isakmp_sa_body+0x138c>
  46d888:	00000000 	nop
	    {
		case OAKLEY_ENCRYPTION_ALGORITHM | ISAKMP_ATTR_AF_TV:
#ifndef NO_IKE_ALG
		    if (ike_alg_enc_ok(val, 0, c->alg_info_ike, &ugh)) {
  46d88c:	8fc400f0 	lw	a0,240(s8)
  46d890:	00002821 	move	a1,zero
  46d894:	8fc20020 	lw	v0,32(s8)
  46d898:	00000000 	nop
  46d89c:	8c4601c0 	lw	a2,448(v0)
  46d8a0:	27c700c8 	addiu	a3,s8,200
  46d8a4:	8f99896c 	lw	t9,-30356(gp)
  46d8a8:	00000000 	nop
  46d8ac:	0320f809 	jalr	t9
  46d8b0:	00000000 	nop
  46d8b4:	8fdc0018 	lw	gp,24(s8)
  46d8b8:	10400012 	beqz	v0,46d904 <parse_isakmp_sa_body+0x934>
  46d8bc:	00000000 	nop
		    /* if (ike_alg_enc_present(val)) { */
			ta.encrypt = val;
  46d8c0:	97c200f2 	lhu	v0,242(s8)
  46d8c4:	00000000 	nop
  46d8c8:	a7c200a8 	sh	v0,168(s8)
			ta.encrypter = crypto_get_encrypter(val);
  46d8cc:	8fc400f0 	lw	a0,240(s8)
  46d8d0:	8f99880c 	lw	t9,-30708(gp)
  46d8d4:	00000000 	nop
  46d8d8:	0320f809 	jalr	t9
  46d8dc:	00000000 	nop
  46d8e0:	8fdc0018 	lw	gp,24(s8)
  46d8e4:	afc200ac 	sw	v0,172(s8)
			ta.enckeylen = ta.encrypter->keydeflen;
  46d8e8:	8fc200ac 	lw	v0,172(s8)
  46d8ec:	00000000 	nop
  46d8f0:	94420012 	lhu	v0,18(v0)
  46d8f4:	00000000 	nop
  46d8f8:	a7c200aa 	sh	v0,170(s8)
  46d8fc:	1000029c 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46d900:	00000000 	nop
		    } else 
#endif
		    switch (val)
  46d904:	8fc300f0 	lw	v1,240(s8)
  46d908:	24020005 	li	v0,5
  46d90c:	10620015 	beq	v1,v0,46d964 <parse_isakmp_sa_body+0x994>
  46d910:	00000000 	nop
		    {
#if 0	/* we don't feel DES is safe */
		    case OAKLEY_DES_CBC:
#endif
		    case OAKLEY_3DES_CBC:
			ta.encrypt = val;
			ta.encrypter = crypto_get_encrypter(val);
			break;
		    default:
			ugh = builddiag("%s is not supported"
  46d914:	8f848a50 	lw	a0,-30128(gp)
  46d918:	8fc500f0 	lw	a1,240(s8)
  46d91c:	8f9987fc 	lw	t9,-30724(gp)
  46d920:	00000000 	nop
  46d924:	0320f809 	jalr	t9
  46d928:	00000000 	nop
  46d92c:	8fdc0018 	lw	gp,24(s8)
  46d930:	00000000 	nop
  46d934:	8f84802c 	lw	a0,-32724(gp)
  46d938:	00000000 	nop
  46d93c:	24844c0c 	addiu	a0,a0,19468
  46d940:	00402821 	move	a1,v0
  46d944:	8f9986dc 	lw	t9,-31012(gp)
  46d948:	00000000 	nop
  46d94c:	0320f809 	jalr	t9
  46d950:	00000000 	nop
  46d954:	8fdc0018 	lw	gp,24(s8)
  46d958:	afc200c8 	sw	v0,200(s8)
			    , enum_show(&oakley_enc_names, val));
		    }
		    break;
  46d95c:	10000284 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46d960:	00000000 	nop
  46d964:	97c200f2 	lhu	v0,242(s8)
  46d968:	00000000 	nop
  46d96c:	a7c200a8 	sh	v0,168(s8)
  46d970:	8fc400f0 	lw	a0,240(s8)
  46d974:	8f99880c 	lw	t9,-30708(gp)
  46d978:	00000000 	nop
  46d97c:	0320f809 	jalr	t9
  46d980:	00000000 	nop
  46d984:	8fdc0018 	lw	gp,24(s8)
  46d988:	afc200ac 	sw	v0,172(s8)
  46d98c:	10000278 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46d990:	00000000 	nop

		case OAKLEY_HASH_ALGORITHM | ISAKMP_ATTR_AF_TV:
#ifndef NO_IKE_ALG
		    if (ike_alg_hash_present(val)) {
  46d994:	8fc400f0 	lw	a0,240(s8)
  46d998:	8f9980cc 	lw	t9,-32564(gp)
  46d99c:	00000000 	nop
  46d9a0:	0320f809 	jalr	t9
  46d9a4:	00000000 	nop
  46d9a8:	8fdc0018 	lw	gp,24(s8)
  46d9ac:	1040000d 	beqz	v0,46d9e4 <parse_isakmp_sa_body+0xa14>
  46d9b0:	00000000 	nop
			ta.hash = val;
  46d9b4:	97c200f2 	lhu	v0,242(s8)
  46d9b8:	00000000 	nop
  46d9bc:	a7c200b0 	sh	v0,176(s8)
			ta.hasher = crypto_get_hasher(val);
  46d9c0:	8fc400f0 	lw	a0,240(s8)
  46d9c4:	8f9985cc 	lw	t9,-31284(gp)
  46d9c8:	00000000 	nop
  46d9cc:	0320f809 	jalr	t9
  46d9d0:	00000000 	nop
  46d9d4:	8fdc0018 	lw	gp,24(s8)
  46d9d8:	afc200b4 	sw	v0,180(s8)
  46d9dc:	10000264 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46d9e0:	00000000 	nop
		    } else 
#endif
/* #else */
		    switch (val)
  46d9e4:	8fc200f0 	lw	v0,240(s8)
  46d9e8:	00000000 	nop
  46d9ec:	afc20508 	sw	v0,1288(s8)
  46d9f0:	8fc30508 	lw	v1,1288(s8)
  46d9f4:	00000000 	nop
  46d9f8:	2c620003 	sltiu	v0,v1,3
  46d9fc:	10400012 	beqz	v0,46da48 <parse_isakmp_sa_body+0xa78>
  46da00:	00000000 	nop
  46da04:	8fc40508 	lw	a0,1288(s8)
  46da08:	00000000 	nop
  46da0c:	2c820001 	sltiu	v0,a0,1
  46da10:	1440000d 	bnez	v0,46da48 <parse_isakmp_sa_body+0xa78>
  46da14:	00000000 	nop
		    {
		    case OAKLEY_MD5:
		    case OAKLEY_SHA:
			ta.hash = val;
  46da18:	97c200f2 	lhu	v0,242(s8)
  46da1c:	00000000 	nop
  46da20:	a7c200b0 	sh	v0,176(s8)
			ta.hasher = crypto_get_hasher(val);
  46da24:	8fc400f0 	lw	a0,240(s8)
  46da28:	8f9985cc 	lw	t9,-31284(gp)
  46da2c:	00000000 	nop
  46da30:	0320f809 	jalr	t9
  46da34:	00000000 	nop
  46da38:	8fdc0018 	lw	gp,24(s8)
  46da3c:	afc200b4 	sw	v0,180(s8)
			break;
  46da40:	1000024b 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46da44:	00000000 	nop
		    default:
			ugh = builddiag("%s is not supported"
  46da48:	8f8489a0 	lw	a0,-30304(gp)
  46da4c:	8fc500f0 	lw	a1,240(s8)
  46da50:	8f9987fc 	lw	t9,-30724(gp)
  46da54:	00000000 	nop
  46da58:	0320f809 	jalr	t9
  46da5c:	00000000 	nop
  46da60:	8fdc0018 	lw	gp,24(s8)
  46da64:	00000000 	nop
  46da68:	8f84802c 	lw	a0,-32724(gp)
  46da6c:	00000000 	nop
  46da70:	24844c0c 	addiu	a0,a0,19468
  46da74:	00402821 	move	a1,v0
  46da78:	8f9986dc 	lw	t9,-31012(gp)
  46da7c:	00000000 	nop
  46da80:	0320f809 	jalr	t9
  46da84:	00000000 	nop
  46da88:	8fdc0018 	lw	gp,24(s8)
  46da8c:	afc200c8 	sw	v0,200(s8)
			    , enum_show(&oakley_hash_names, val));
		    }
/* #endif */
		    break;
  46da90:	10000237 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46da94:	00000000 	nop

		case OAKLEY_AUTHENTICATION_METHOD | ISAKMP_ATTR_AF_TV:
		    {
		    /* check that authentication method is acceptable */
		    lset_t iap = st->st_policy & POLICY_ID_AUTH_MASK;
  46da98:	8fc20558 	lw	v0,1368(s8)
  46da9c:	00000000 	nop
  46daa0:	8c4400d8 	lw	a0,216(v0)
  46daa4:	8c4500dc 	lw	a1,220(v0)
  46daa8:	24020000 	li	v0,0
  46daac:	24032003 	li	v1,8195
  46dab0:	00821024 	and	v0,a0,v0
  46dab4:	00a31824 	and	v1,a1,v1
  46dab8:	afc20100 	sw	v0,256(s8)
  46dabc:	afc30104 	sw	v1,260(s8)

		    switch (val)
  46dac0:	8fc500f0 	lw	a1,240(s8)
  46dac4:	00000000 	nop
  46dac8:	afc5050c 	sw	a1,1292(s8)
  46dacc:	24020003 	li	v0,3
  46dad0:	8fc8050c 	lw	t0,1292(s8)
  46dad4:	00000000 	nop
  46dad8:	110200d2 	beq	t0,v0,46de24 <parse_isakmp_sa_body+0xe54>
  46dadc:	00000000 	nop
  46dae0:	8fc9050c 	lw	t1,1292(s8)
  46dae4:	00000000 	nop
  46dae8:	2d220004 	sltiu	v0,t1,4
  46daec:	10400008 	beqz	v0,46db10 <parse_isakmp_sa_body+0xb40>
  46daf0:	00000000 	nop
  46daf4:	24020001 	li	v0,1
  46daf8:	8fc3050c 	lw	v1,1292(s8)
  46dafc:	00000000 	nop
  46db00:	10620025 	beq	v1,v0,46db98 <parse_isakmp_sa_body+0xbc8>
  46db04:	00000000 	nop
  46db08:	100000f1 	b	46ded0 <parse_isakmp_sa_body+0xf00>
  46db0c:	00000000 	nop
  46db10:	3402fde9 	li	v0,0xfde9
  46db14:	8fc4050c 	lw	a0,1292(s8)
  46db18:	00000000 	nop
  46db1c:	10820008 	beq	a0,v0,46db40 <parse_isakmp_sa_body+0xb70>
  46db20:	00000000 	nop
  46db24:	3402fded 	li	v0,0xfded
  46db28:	8fc5050c 	lw	a1,1292(s8)
  46db2c:	00000000 	nop
  46db30:	10a200a6 	beq	a1,v0,46ddcc <parse_isakmp_sa_body+0xdfc>
  46db34:	00000000 	nop
  46db38:	100000e5 	b	46ded0 <parse_isakmp_sa_body+0xf00>
  46db3c:	00000000 	nop
		    {
		    case XAUTHInitPreShared:
			if(!(iap & POLICY_XAUTH))
  46db40:	8fc40100 	lw	a0,256(s8)
  46db44:	8fc50104 	lw	a1,260(s8)
  46db48:	24020000 	li	v0,0
  46db4c:	24032000 	li	v1,8192
  46db50:	00822024 	and	a0,a0,v0
  46db54:	00a32824 	and	a1,a1,v1
  46db58:	00801021 	move	v0,a0
  46db5c:	00451025 	or	v0,v0,a1
  46db60:	14400008 	bnez	v0,46db84 <parse_isakmp_sa_body+0xbb4>
  46db64:	00000000 	nop
			{
			    ugh = "policy does not allow Extended Authentication (XAUTH)";
  46db68:	8f82802c 	lw	v0,-32724(gp)
  46db6c:	00000000 	nop
  46db70:	24424c20 	addiu	v0,v0,19488
  46db74:	00000000 	nop
  46db78:	afc200c8 	sw	v0,200(s8)
			    break;
  46db7c:	100001fc 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46db80:	00000000 	nop
			}
			ta.xauth = val;
  46db84:	97c200f2 	lhu	v0,242(s8)
  46db88:	00000000 	nop
  46db8c:	a7c200ba 	sh	v0,186(s8)
			val = OAKLEY_PRESHARED_KEY;
  46db90:	24020001 	li	v0,1
  46db94:	afc200f0 	sw	v0,240(s8)
			/* No break; */
		    case OAKLEY_PRESHARED_KEY:
			if((iap & POLICY_XAUTH) && ta.xauth == 0)
  46db98:	8fc40100 	lw	a0,256(s8)
  46db9c:	8fc50104 	lw	a1,260(s8)
  46dba0:	24020000 	li	v0,0
  46dba4:	24032000 	li	v1,8192
  46dba8:	00822024 	and	a0,a0,v0
  46dbac:	00a32824 	and	a1,a1,v1
  46dbb0:	00801021 	move	v0,a0
  46dbb4:	00451025 	or	v0,v0,a1
  46dbb8:	1040000c 	beqz	v0,46dbec <parse_isakmp_sa_body+0xc1c>
  46dbbc:	00000000 	nop
  46dbc0:	97c200ba 	lhu	v0,186(s8)
  46dbc4:	00000000 	nop
  46dbc8:	14400008 	bnez	v0,46dbec <parse_isakmp_sa_body+0xc1c>
  46dbcc:	00000000 	nop
			{
			    ugh = "policy mandates Extended Authentication (XAUTH)";
  46dbd0:	8f82802c 	lw	v0,-32724(gp)
  46dbd4:	00000000 	nop
  46dbd8:	24424c58 	addiu	v0,v0,19544
  46dbdc:	00000000 	nop
  46dbe0:	afc200c8 	sw	v0,200(s8)
			    break;
  46dbe4:	100001e2 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46dbe8:	00000000 	nop
			}
			if ((iap & POLICY_PSK) == LEMPTY)
  46dbec:	8fc40100 	lw	a0,256(s8)
  46dbf0:	8fc50104 	lw	a1,260(s8)
  46dbf4:	24020000 	li	v0,0
  46dbf8:	24030001 	li	v1,1
  46dbfc:	00822024 	and	a0,a0,v0
  46dc00:	00a32824 	and	a1,a1,v1
  46dc04:	00801021 	move	v0,a0
  46dc08:	00451025 	or	v0,v0,a1
  46dc0c:	14400008 	bnez	v0,46dc30 <parse_isakmp_sa_body+0xc60>
  46dc10:	00000000 	nop
			{
			    ugh = "policy does not allow OAKLEY_PRESHARED_KEY authentication";
  46dc14:	8f82802c 	lw	v0,-32724(gp)
  46dc18:	00000000 	nop
  46dc1c:	24424c88 	addiu	v0,v0,19592
  46dc20:	00000000 	nop
  46dc24:	afc200c8 	sw	v0,200(s8)
  46dc28:	100001d1 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46dc2c:	00000000 	nop
			}
			else
			{
			    /* check that we can find a preshared secret */
			    struct connection *c = st->st_connection;
  46dc30:	8fc20558 	lw	v0,1368(s8)
  46dc34:	00000000 	nop
  46dc38:	8c42000c 	lw	v0,12(v0)
  46dc3c:	00000000 	nop
  46dc40:	afc200f8 	sw	v0,248(s8)

			    if (get_preshared_secret(c) == NULL)
  46dc44:	8fc400f8 	lw	a0,248(s8)
  46dc48:	8f9985e0 	lw	t9,-31264(gp)
  46dc4c:	00000000 	nop
  46dc50:	0320f809 	jalr	t9
  46dc54:	00000000 	nop
  46dc58:	8fdc0018 	lw	gp,24(s8)
  46dc5c:	14400056 	bnez	v0,46ddb8 <parse_isakmp_sa_body+0xde8>
  46dc60:	00000000 	nop
			    {
				char mid[IDTOA_BUF]
				    , hid[IDTOA_BUF];

				idtoa(&c->this.id, mid, sizeof(mid));
  46dc64:	8fc200f8 	lw	v0,248(s8)
  46dc68:	00000000 	nop
  46dc6c:	24420030 	addiu	v0,v0,48
  46dc70:	00402021 	move	a0,v0
  46dc74:	27c50108 	addiu	a1,s8,264
  46dc78:	24060200 	li	a2,512
  46dc7c:	8f998798 	lw	t9,-30824(gp)
  46dc80:	00000000 	nop
  46dc84:	0320f809 	jalr	t9
  46dc88:	00000000 	nop
  46dc8c:	8fdc0018 	lw	gp,24(s8)
  46dc90:	00000000 	nop
				if (his_id_was_instantiated(c))
  46dc94:	8fc200f8 	lw	v0,248(s8)
  46dc98:	00000000 	nop
  46dc9c:	8c430194 	lw	v1,404(v0)
  46dca0:	24020002 	li	v0,2
  46dca4:	1462002d 	bne	v1,v0,46dd5c <parse_isakmp_sa_body+0xd8c>
  46dca8:	00000000 	nop
  46dcac:	8fc200f8 	lw	v0,248(s8)
  46dcb0:	00000000 	nop
  46dcb4:	244200e0 	addiu	v0,v0,224
  46dcb8:	8c430000 	lw	v1,0(v0)
  46dcbc:	24020001 	li	v0,1
  46dcc0:	1062000a 	beq	v1,v0,46dcec <parse_isakmp_sa_body+0xd1c>
  46dcc4:	00000000 	nop
  46dcc8:	8fc200f8 	lw	v0,248(s8)
  46dccc:	00000000 	nop
  46dcd0:	244200e0 	addiu	v0,v0,224
  46dcd4:	8c430000 	lw	v1,0(v0)
  46dcd8:	24020005 	li	v0,5
  46dcdc:	10620003 	beq	v1,v0,46dcec <parse_isakmp_sa_body+0xd1c>
  46dce0:	00000000 	nop
  46dce4:	10000012 	b	46dd30 <parse_isakmp_sa_body+0xd60>
  46dce8:	00000000 	nop
  46dcec:	8fc200f8 	lw	v0,248(s8)
  46dcf0:	00000000 	nop
  46dcf4:	244300e4 	addiu	v1,v0,228
  46dcf8:	8fc200f8 	lw	v0,248(s8)
  46dcfc:	00000000 	nop
  46dd00:	24420108 	addiu	v0,v0,264
  46dd04:	00602021 	move	a0,v1
  46dd08:	00402821 	move	a1,v0
  46dd0c:	8f998928 	lw	t9,-30424(gp)
  46dd10:	00000000 	nop
  46dd14:	0320f809 	jalr	t9
  46dd18:	00000000 	nop
  46dd1c:	8fdc0018 	lw	gp,24(s8)
  46dd20:	14400003 	bnez	v0,46dd30 <parse_isakmp_sa_body+0xd60>
  46dd24:	00000000 	nop
  46dd28:	1000000c 	b	46dd5c <parse_isakmp_sa_body+0xd8c>
  46dd2c:	00000000 	nop
				    strcpy(hid, "%any");
  46dd30:	27c40308 	addiu	a0,s8,776
  46dd34:	8f85802c 	lw	a1,-32724(gp)
  46dd38:	00000000 	nop
  46dd3c:	24a54cc4 	addiu	a1,a1,19652
  46dd40:	8f998c58 	lw	t9,-29608(gp)
  46dd44:	00000000 	nop
  46dd48:	0320f809 	jalr	t9
  46dd4c:	00000000 	nop
  46dd50:	8fdc0018 	lw	gp,24(s8)
  46dd54:	1000000d 	b	46dd8c <parse_isakmp_sa_body+0xdbc>
  46dd58:	00000000 	nop
				else
				    idtoa(&c->that.id, hid, sizeof(hid));
  46dd5c:	8fc200f8 	lw	v0,248(s8)
  46dd60:	00000000 	nop
  46dd64:	244200e0 	addiu	v0,v0,224
  46dd68:	00402021 	move	a0,v0
  46dd6c:	27c50308 	addiu	a1,s8,776
  46dd70:	24060200 	li	a2,512
  46dd74:	8f998798 	lw	t9,-30824(gp)
  46dd78:	00000000 	nop
  46dd7c:	0320f809 	jalr	t9
  46dd80:	00000000 	nop
  46dd84:	8fdc0018 	lw	gp,24(s8)
  46dd88:	00000000 	nop
				ugh = builddiag("Can't authenticate: no preshared key found for `%s' and `%s'"
  46dd8c:	8f84802c 	lw	a0,-32724(gp)
  46dd90:	00000000 	nop
  46dd94:	24844ccc 	addiu	a0,a0,19660
  46dd98:	27c50108 	addiu	a1,s8,264
  46dd9c:	27c60308 	addiu	a2,s8,776
  46dda0:	8f9986dc 	lw	t9,-31012(gp)
  46dda4:	00000000 	nop
  46dda8:	0320f809 	jalr	t9
  46ddac:	00000000 	nop
  46ddb0:	8fdc0018 	lw	gp,24(s8)
  46ddb4:	afc200c8 	sw	v0,200(s8)
				    , mid, hid);
			    }
			    ta.auth = val;
  46ddb8:	97c200f2 	lhu	v0,242(s8)
  46ddbc:	00000000 	nop
  46ddc0:	a7c200b8 	sh	v0,184(s8)
			}
			break;
  46ddc4:	1000016a 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46ddc8:	00000000 	nop
		    case XAUTHInitRSA:
			if(!(iap & POLICY_XAUTH))
  46ddcc:	8fc40100 	lw	a0,256(s8)
  46ddd0:	8fc50104 	lw	a1,260(s8)
  46ddd4:	24020000 	li	v0,0
  46ddd8:	24032000 	li	v1,8192
  46dddc:	00822024 	and	a0,a0,v0
  46dde0:	00a32824 	and	a1,a1,v1
  46dde4:	00801021 	move	v0,a0
  46dde8:	00451025 	or	v0,v0,a1
  46ddec:	14400008 	bnez	v0,46de10 <parse_isakmp_sa_body+0xe40>
  46ddf0:	00000000 	nop
			{
			    ugh = "policy does not allow Extended Authentication (XAUTH)";
  46ddf4:	8f82802c 	lw	v0,-32724(gp)
  46ddf8:	00000000 	nop
  46ddfc:	24424c20 	addiu	v0,v0,19488
  46de00:	00000000 	nop
  46de04:	afc200c8 	sw	v0,200(s8)
			    break;
  46de08:	10000159 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46de0c:	00000000 	nop
			}
			ta.xauth = val;
  46de10:	97c200f2 	lhu	v0,242(s8)
  46de14:	00000000 	nop
  46de18:	a7c200ba 	sh	v0,186(s8)
			val = OAKLEY_RSA_SIG;
  46de1c:	24020003 	li	v0,3
  46de20:	afc200f0 	sw	v0,240(s8)
			/* No break; */
		    case OAKLEY_RSA_SIG:
			if((iap & POLICY_XAUTH) && ta.xauth == 0)
  46de24:	8fc40100 	lw	a0,256(s8)
  46de28:	8fc50104 	lw	a1,260(s8)
  46de2c:	24020000 	li	v0,0
  46de30:	24032000 	li	v1,8192
  46de34:	00822024 	and	a0,a0,v0
  46de38:	00a32824 	and	a1,a1,v1
  46de3c:	00801021 	move	v0,a0
  46de40:	00451025 	or	v0,v0,a1
  46de44:	1040000c 	beqz	v0,46de78 <parse_isakmp_sa_body+0xea8>
  46de48:	00000000 	nop
  46de4c:	97c200ba 	lhu	v0,186(s8)
  46de50:	00000000 	nop
  46de54:	14400008 	bnez	v0,46de78 <parse_isakmp_sa_body+0xea8>
  46de58:	00000000 	nop
			{
			    ugh = "policy mandates Extended Authentication (XAUTH)";
  46de5c:	8f82802c 	lw	v0,-32724(gp)
  46de60:	00000000 	nop
  46de64:	24424c58 	addiu	v0,v0,19544
  46de68:	00000000 	nop
  46de6c:	afc200c8 	sw	v0,200(s8)
			    break;
  46de70:	1000013f 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46de74:	00000000 	nop
			}
			/* Accept if policy specifies RSASIG or is default */
			if ((iap & POLICY_RSASIG) == LEMPTY)
  46de78:	8fc40100 	lw	a0,256(s8)
  46de7c:	8fc50104 	lw	a1,260(s8)
  46de80:	24020000 	li	v0,0
  46de84:	24030002 	li	v1,2
  46de88:	00822024 	and	a0,a0,v0
  46de8c:	00a32824 	and	a1,a1,v1
  46de90:	00801021 	move	v0,a0
  46de94:	00451025 	or	v0,v0,a1
  46de98:	14400008 	bnez	v0,46debc <parse_isakmp_sa_body+0xeec>
  46de9c:	00000000 	nop
			{
			    ugh = "policy does not allow OAKLEY_RSA_SIG authentication";
  46dea0:	8f82802c 	lw	v0,-32724(gp)
  46dea4:	00000000 	nop
  46dea8:	24424d0c 	addiu	v0,v0,19724
  46deac:	00000000 	nop
  46deb0:	afc200c8 	sw	v0,200(s8)
  46deb4:	1000012e 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46deb8:	00000000 	nop
			}
			else
			{
			    /* We'd like to check that we can find a public
			     * key for him and a private key for us that is
			     * suitable, but we don't yet have his
			     * Id Payload, so it seems futile to try.
			     * We can assume that if he proposes it, he
			     * thinks we've got it.  If we proposed it,
			     * perhaps we know what we're doing.
			     */
			    ta.auth = val;
  46debc:	97c200f2 	lhu	v0,242(s8)
  46dec0:	00000000 	nop
  46dec4:	a7c200b8 	sh	v0,184(s8)
			}
			break;
  46dec8:	10000129 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46decc:	00000000 	nop

		    default:
			ugh = builddiag("Pluto does not support %s authentication"
  46ded0:	8f84866c 	lw	a0,-31124(gp)
  46ded4:	8fc500f0 	lw	a1,240(s8)
  46ded8:	8f9987fc 	lw	t9,-30724(gp)
  46dedc:	00000000 	nop
  46dee0:	0320f809 	jalr	t9
  46dee4:	00000000 	nop
  46dee8:	8fdc0018 	lw	gp,24(s8)
  46deec:	00000000 	nop
  46def0:	8f84802c 	lw	a0,-32724(gp)
  46def4:	00000000 	nop
  46def8:	24844d40 	addiu	a0,a0,19776
  46defc:	00402821 	move	a1,v0
  46df00:	8f9986dc 	lw	t9,-31012(gp)
  46df04:	00000000 	nop
  46df08:	0320f809 	jalr	t9
  46df0c:	00000000 	nop
  46df10:	8fdc0018 	lw	gp,24(s8)
  46df14:	afc200c8 	sw	v0,200(s8)
			    , enum_show(&oakley_auth_names, val));
			break;
  46df18:	10000115 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46df1c:	00000000 	nop
		    }
		    }
		    break;

		case OAKLEY_GROUP_DESCRIPTION | ISAKMP_ATTR_AF_TV:
		    ta.group = lookup_group(val);
  46df20:	97c200f2 	lhu	v0,242(s8)
  46df24:	00000000 	nop
  46df28:	00402021 	move	a0,v0
  46df2c:	8f998b88 	lw	t9,-29816(gp)
  46df30:	00000000 	nop
  46df34:	0320f809 	jalr	t9
  46df38:	00000000 	nop
  46df3c:	8fdc0018 	lw	gp,24(s8)
  46df40:	afc200bc 	sw	v0,188(s8)
		    if (ta.group == NULL)
  46df44:	8fc200bc 	lw	v0,188(s8)
  46df48:	00000000 	nop
  46df4c:	14400108 	bnez	v0,46e370 <parse_isakmp_sa_body+0x13a0>
  46df50:	00000000 	nop
		    {
			ugh = "only OAKLEY_GROUP_MODP768,1024,1536,2048,3072,4096,6144,8192 supported";
  46df54:	8f82802c 	lw	v0,-32724(gp)
  46df58:	00000000 	nop
  46df5c:	24424d6c 	addiu	v0,v0,19820
  46df60:	00000000 	nop
  46df64:	afc200c8 	sw	v0,200(s8)
			break;
  46df68:	10000101 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46df6c:	00000000 	nop
		    }
		    break;

		case OAKLEY_LIFE_TYPE | ISAKMP_ATTR_AF_TV:
		    switch (val)
  46df70:	8fc800f0 	lw	t0,240(s8)
  46df74:	00000000 	nop
  46df78:	afc80510 	sw	t0,1296(s8)
  46df7c:	8fc90510 	lw	t1,1296(s8)
  46df80:	00000000 	nop
  46df84:	2d220003 	sltiu	v0,t1,3
  46df88:	10400052 	beqz	v0,46e0d4 <parse_isakmp_sa_body+0x1104>
  46df8c:	00000000 	nop
  46df90:	8fc30510 	lw	v1,1296(s8)
  46df94:	00000000 	nop
  46df98:	2c620001 	sltiu	v0,v1,1
  46df9c:	1440004d 	bnez	v0,46e0d4 <parse_isakmp_sa_body+0x1104>
  46dfa0:	00000000 	nop
		    {
		    case OAKLEY_LIFE_SECONDS:
		    case OAKLEY_LIFE_KILOBYTES:
			if (seen_durations & LELEM(val))
  46dfa4:	24020000 	li	v0,0
  46dfa8:	24030001 	li	v1,1
  46dfac:	8fc400f0 	lw	a0,240(s8)
  46dfb0:	00000000 	nop
  46dfb4:	00043680 	sll	a2,a0,0x1a
  46dfb8:	04c10004 	bgez	a2,46dfcc <parse_isakmp_sa_body+0xffc>
  46dfbc:	00000000 	nop
  46dfc0:	00834004 	sllv	t0,v1,a0
  46dfc4:	10000007 	b	46dfe4 <parse_isakmp_sa_body+0x1014>
  46dfc8:	00004821 	move	t1,zero
  46dfcc:	10c00004 	beqz	a2,46dfe0 <parse_isakmp_sa_body+0x1010>
  46dfd0:	00824004 	sllv	t0,v0,a0
  46dfd4:	00043023 	negu	a2,a0
  46dfd8:	00c33006 	srlv	a2,v1,a2
  46dfdc:	01064025 	or	t0,t0,a2
  46dfe0:	00834804 	sllv	t1,v1,a0
  46dfe4:	01002021 	move	a0,t0
  46dfe8:	01202821 	move	a1,t1
  46dfec:	8fc20098 	lw	v0,152(s8)
  46dff0:	8fc3009c 	lw	v1,156(s8)
  46dff4:	00822024 	and	a0,a0,v0
  46dff8:	00a32824 	and	a1,a1,v1
  46dffc:	00801021 	move	v0,a0
  46e000:	00451025 	or	v0,v0,a1
  46e004:	10400016 	beqz	v0,46e060 <parse_isakmp_sa_body+0x1090>
  46e008:	00000000 	nop
			{
			    loglog(RC_LOG_SERIOUS
  46e00c:	8f848438 	lw	a0,-31688(gp)
  46e010:	8fc500f0 	lw	a1,240(s8)
  46e014:	8f9987fc 	lw	t9,-30724(gp)
  46e018:	00000000 	nop
  46e01c:	0320f809 	jalr	t9
  46e020:	00000000 	nop
  46e024:	8fdc0018 	lw	gp,24(s8)
  46e028:	24040003 	li	a0,3
  46e02c:	8f85802c 	lw	a1,-32724(gp)
  46e030:	00000000 	nop
  46e034:	24a54db4 	addiu	a1,a1,19892
  46e038:	00403021 	move	a2,v0
  46e03c:	8f998c48 	lw	t9,-29624(gp)
  46e040:	00000000 	nop
  46e044:	0320f809 	jalr	t9
  46e048:	00000000 	nop
  46e04c:	8fdc0018 	lw	gp,24(s8)
  46e050:	00000000 	nop
				, "attribute OAKLEY_LIFE_TYPE value %s repeated"
				, enum_show(&oakley_lifetime_names, val));
			    return BAD_PROPOSAL_SYNTAX;
  46e054:	2402000f 	li	v0,15
  46e058:	1000022e 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46e05c:	00000000 	nop
			}
			seen_durations |= LELEM(val);
  46e060:	24020000 	li	v0,0
  46e064:	24030001 	li	v1,1
  46e068:	8fc400f0 	lw	a0,240(s8)
  46e06c:	00000000 	nop
  46e070:	00043680 	sll	a2,a0,0x1a
  46e074:	04c10004 	bgez	a2,46e088 <parse_isakmp_sa_body+0x10b8>
  46e078:	00000000 	nop
  46e07c:	00834004 	sllv	t0,v1,a0
  46e080:	10000007 	b	46e0a0 <parse_isakmp_sa_body+0x10d0>
  46e084:	00004821 	move	t1,zero
  46e088:	10c00004 	beqz	a2,46e09c <parse_isakmp_sa_body+0x10cc>
  46e08c:	00824004 	sllv	t0,v0,a0
  46e090:	00043023 	negu	a2,a0
  46e094:	00c33006 	srlv	a2,v1,a2
  46e098:	01064025 	or	t0,t0,a2
  46e09c:	00834804 	sllv	t1,v1,a0
  46e0a0:	01002021 	move	a0,t0
  46e0a4:	01202821 	move	a1,t1
  46e0a8:	8fc20098 	lw	v0,152(s8)
  46e0ac:	8fc3009c 	lw	v1,156(s8)
  46e0b0:	00441025 	or	v0,v0,a0
  46e0b4:	00651825 	or	v1,v1,a1
  46e0b8:	afc20098 	sw	v0,152(s8)
  46e0bc:	afc3009c 	sw	v1,156(s8)
			life_type = val;
  46e0c0:	97c200f2 	lhu	v0,242(s8)
  46e0c4:	00000000 	nop
  46e0c8:	a7c200a0 	sh	v0,160(s8)
			break;
  46e0cc:	100000a8 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e0d0:	00000000 	nop
		    default:
			ugh = builddiag("unknown value %s"
  46e0d4:	8f848438 	lw	a0,-31688(gp)
  46e0d8:	8fc500f0 	lw	a1,240(s8)
  46e0dc:	8f9987fc 	lw	t9,-30724(gp)
  46e0e0:	00000000 	nop
  46e0e4:	0320f809 	jalr	t9
  46e0e8:	00000000 	nop
  46e0ec:	8fdc0018 	lw	gp,24(s8)
  46e0f0:	00000000 	nop
  46e0f4:	8f84802c 	lw	a0,-32724(gp)
  46e0f8:	00000000 	nop
  46e0fc:	24844de4 	addiu	a0,a0,19940
  46e100:	00402821 	move	a1,v0
  46e104:	8f9986dc 	lw	t9,-31012(gp)
  46e108:	00000000 	nop
  46e10c:	0320f809 	jalr	t9
  46e110:	00000000 	nop
  46e114:	8fdc0018 	lw	gp,24(s8)
  46e118:	afc200c8 	sw	v0,200(s8)
			    , enum_show(&oakley_lifetime_names, val));
			break;
  46e11c:	10000094 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e120:	00000000 	nop
		    }
		    break;

		case OAKLEY_LIFE_DURATION | ISAKMP_ATTR_AF_TLV:
		    val = decode_long_duration(&attr_pbs);
  46e124:	27c400d0 	addiu	a0,s8,208
  46e128:	8f998040 	lw	t9,-32704(gp)
  46e12c:	00000000 	nop
  46e130:	2739cde0 	addiu	t9,t9,-12832
  46e134:	00000000 	nop
  46e138:	0320f809 	jalr	t9
  46e13c:	00000000 	nop
  46e140:	8fdc0018 	lw	gp,24(s8)
  46e144:	afc200f0 	sw	v0,240(s8)
		    /* fall through */
		case OAKLEY_LIFE_DURATION | ISAKMP_ATTR_AF_TV:
		    if ((seen_attrs & LELEM(OAKLEY_LIFE_TYPE)) == 0)
  46e148:	8fc40090 	lw	a0,144(s8)
  46e14c:	8fc50094 	lw	a1,148(s8)
  46e150:	24020000 	li	v0,0
  46e154:	24030800 	li	v1,2048
  46e158:	00822024 	and	a0,a0,v0
  46e15c:	00a32824 	and	a1,a1,v1
  46e160:	00801021 	move	v0,a0
  46e164:	00451025 	or	v0,v0,a1
  46e168:	14400008 	bnez	v0,46e18c <parse_isakmp_sa_body+0x11bc>
  46e16c:	00000000 	nop
		    {
			ugh = "OAKLEY_LIFE_DURATION attribute not preceded by OAKLEY_LIFE_TYPE attribute";
  46e170:	8f82802c 	lw	v0,-32724(gp)
  46e174:	00000000 	nop
  46e178:	24424df8 	addiu	v0,v0,19960
  46e17c:	00000000 	nop
  46e180:	afc200c8 	sw	v0,200(s8)
			break;
  46e184:	1000007a 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e188:	00000000 	nop
		    }
		    seen_attrs &= ~(LELEM(OAKLEY_LIFE_DURATION) | LELEM(OAKLEY_LIFE_TYPE));
  46e18c:	8fc40090 	lw	a0,144(s8)
  46e190:	8fc50094 	lw	a1,148(s8)
  46e194:	2402ffff 	li	v0,-1
  46e198:	2403e7ff 	li	v1,-6145
  46e19c:	00821024 	and	v0,a0,v0
  46e1a0:	00a31824 	and	v1,a1,v1
  46e1a4:	afc20090 	sw	v0,144(s8)
  46e1a8:	afc30094 	sw	v1,148(s8)

		    switch (life_type)
  46e1ac:	97c900a0 	lhu	t1,160(s8)
  46e1b0:	00000000 	nop
  46e1b4:	afc90514 	sw	t1,1300(s8)
  46e1b8:	24020001 	li	v0,1
  46e1bc:	8fc30514 	lw	v1,1300(s8)
  46e1c0:	00000000 	nop
  46e1c4:	10620013 	beq	v1,v0,46e214 <parse_isakmp_sa_body+0x1244>
  46e1c8:	00000000 	nop
  46e1cc:	24020002 	li	v0,2
  46e1d0:	8fc40514 	lw	a0,1300(s8)
  46e1d4:	00000000 	nop
  46e1d8:	10820026 	beq	a0,v0,46e274 <parse_isakmp_sa_body+0x12a4>
  46e1dc:	00000000 	nop
		    {
			case OAKLEY_LIFE_SECONDS:
			    if (val > OAKLEY_ISAKMP_SA_LIFETIME_MAXIMUM)
				ugh = builddiag("peer requested %lu seconds"
				    " which exceeds our limit %d seconds"
				    , (long) val
				    , OAKLEY_ISAKMP_SA_LIFETIME_MAXIMUM);
			    ta.life_seconds = val;
			    break;
			case OAKLEY_LIFE_KILOBYTES:
			    ta.life_kilobytes = val;
			    break;
			default:
			    impossible();
  46e1e0:	8f84802c 	lw	a0,-32724(gp)
  46e1e4:	00000000 	nop
  46e1e8:	24844920 	addiu	a0,a0,18720
  46e1ec:	8f85802c 	lw	a1,-32724(gp)
  46e1f0:	00000000 	nop
  46e1f4:	24a54904 	addiu	a1,a1,18692
  46e1f8:	240604bc 	li	a2,1212
  46e1fc:	8f998bb8 	lw	t9,-29768(gp)
  46e200:	00000000 	nop
  46e204:	0320f809 	jalr	t9
  46e208:	00000000 	nop
  46e20c:	8fdc0018 	lw	gp,24(s8)
  46e210:	00000000 	nop
  46e214:	3c020001 	lui	v0,0x1
  46e218:	34425180 	ori	v0,v0,0x5180
  46e21c:	8fc300f0 	lw	v1,240(s8)
  46e220:	00000000 	nop
  46e224:	0043102b 	sltu	v0,v0,v1
  46e228:	1040000d 	beqz	v0,46e260 <parse_isakmp_sa_body+0x1290>
  46e22c:	00000000 	nop
  46e230:	8f84802c 	lw	a0,-32724(gp)
  46e234:	00000000 	nop
  46e238:	24844e44 	addiu	a0,a0,20036
  46e23c:	8fc500f0 	lw	a1,240(s8)
  46e240:	3c060001 	lui	a2,0x1
  46e244:	34c65180 	ori	a2,a2,0x5180
  46e248:	8f9986dc 	lw	t9,-31012(gp)
  46e24c:	00000000 	nop
  46e250:	0320f809 	jalr	t9
  46e254:	00000000 	nop
  46e258:	8fdc0018 	lw	gp,24(s8)
  46e25c:	afc200c8 	sw	v0,200(s8)
  46e260:	8fc200f0 	lw	v0,240(s8)
  46e264:	00000000 	nop
  46e268:	afc200c0 	sw	v0,192(s8)
  46e26c:	10000040 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e270:	00000000 	nop
  46e274:	8fc200f0 	lw	v0,240(s8)
  46e278:	00000000 	nop
  46e27c:	afc200c4 	sw	v0,196(s8)
  46e280:	1000003b 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e284:	00000000 	nop
		    }
		    break;

#ifndef NO_IKE_ALG
		case OAKLEY_KEY_LENGTH | ISAKMP_ATTR_AF_TV:
		    if ((seen_attrs & LELEM(OAKLEY_ENCRYPTION_ALGORITHM)) == 0)
  46e288:	8fc40090 	lw	a0,144(s8)
  46e28c:	8fc50094 	lw	a1,148(s8)
  46e290:	24020000 	li	v0,0
  46e294:	24030002 	li	v1,2
  46e298:	00822024 	and	a0,a0,v0
  46e29c:	00a32824 	and	a1,a1,v1
  46e2a0:	00801021 	move	v0,a0
  46e2a4:	00451025 	or	v0,v0,a1
  46e2a8:	14400008 	bnez	v0,46e2cc <parse_isakmp_sa_body+0x12fc>
  46e2ac:	00000000 	nop
		    {
			ugh = "OAKLEY_KEY_LENGTH attribute not preceded by OAKLEY_ENCRYPTION_ALGORITHM attribute";
  46e2b0:	8f82802c 	lw	v0,-32724(gp)
  46e2b4:	00000000 	nop
  46e2b8:	24424e84 	addiu	v0,v0,20100
  46e2bc:	00000000 	nop
  46e2c0:	afc200c8 	sw	v0,200(s8)
			break;
  46e2c4:	1000002a 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e2c8:	00000000 	nop
		    }
		    if (ta.encrypter == NULL)
  46e2cc:	8fc200ac 	lw	v0,172(s8)
  46e2d0:	00000000 	nop
  46e2d4:	14400008 	bnez	v0,46e2f8 <parse_isakmp_sa_body+0x1328>
  46e2d8:	00000000 	nop
		    {
			ugh = "NULL encrypter with seen OAKLEY_ENCRYPTION_ALGORITHM";
  46e2dc:	8f82802c 	lw	v0,-32724(gp)
  46e2e0:	00000000 	nop
  46e2e4:	24424ed8 	addiu	v0,v0,20184
  46e2e8:	00000000 	nop
  46e2ec:	afc200c8 	sw	v0,200(s8)
		        break;
  46e2f0:	1000001f 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e2f4:	00000000 	nop
		    }
		    /*
		     * check if this keylen is compatible with 
		     * specified alg_info_ike
		     */
		    if (!ike_alg_enc_ok(ta.encrypt, val, c->alg_info_ike, &ugh)) {
  46e2f8:	97c200a8 	lhu	v0,168(s8)
  46e2fc:	00000000 	nop
  46e300:	00402021 	move	a0,v0
  46e304:	8fc500f0 	lw	a1,240(s8)
  46e308:	8fc20020 	lw	v0,32(s8)
  46e30c:	00000000 	nop
  46e310:	8c4601c0 	lw	a2,448(v0)
  46e314:	27c700c8 	addiu	a3,s8,200
  46e318:	8f99896c 	lw	t9,-30356(gp)
  46e31c:	00000000 	nop
  46e320:	0320f809 	jalr	t9
  46e324:	00000000 	nop
  46e328:	8fdc0018 	lw	gp,24(s8)
  46e32c:	14400006 	bnez	v0,46e348 <parse_isakmp_sa_body+0x1378>
  46e330:	00000000 	nop
			ugh = "peer proposed key_len not valid for encrypt algo setup specified";
  46e334:	8f82802c 	lw	v0,-32724(gp)
  46e338:	00000000 	nop
  46e33c:	24424f10 	addiu	v0,v0,20240
  46e340:	00000000 	nop
  46e344:	afc200c8 	sw	v0,200(s8)
		    }
		    ta.enckeylen=val;
  46e348:	97c200f2 	lhu	v0,242(s8)
  46e34c:	00000000 	nop
  46e350:	a7c200aa 	sh	v0,170(s8)
		    break;
  46e354:	10000006 	b	46e370 <parse_isakmp_sa_body+0x13a0>
  46e358:	00000000 	nop
#else
		case OAKLEY_KEY_LENGTH | ISAKMP_ATTR_AF_TV:
#endif
#if 0 /* not yet supported */
		case OAKLEY_GROUP_TYPE | ISAKMP_ATTR_AF_TV:
		case OAKLEY_PRF | ISAKMP_ATTR_AF_TV:
		case OAKLEY_FIELD_SIZE | ISAKMP_ATTR_AF_TV:

		case OAKLEY_GROUP_PRIME | ISAKMP_ATTR_AF_TV:
		case OAKLEY_GROUP_PRIME | ISAKMP_ATTR_AF_TLV:
		case OAKLEY_GROUP_GENERATOR_ONE | ISAKMP_ATTR_AF_TV:
		case OAKLEY_GROUP_GENERATOR_ONE | ISAKMP_ATTR_AF_TLV:
		case OAKLEY_GROUP_GENERATOR_TWO | ISAKMP_ATTR_AF_TV:
		case OAKLEY_GROUP_GENERATOR_TWO | ISAKMP_ATTR_AF_TLV:
		case OAKLEY_GROUP_CURVE_A | ISAKMP_ATTR_AF_TV:
		case OAKLEY_GROUP_CURVE_A | ISAKMP_ATTR_AF_TLV:
		case OAKLEY_GROUP_CURVE_B | ISAKMP_ATTR_AF_TV:
		case OAKLEY_GROUP_CURVE_B | ISAKMP_ATTR_AF_TLV:
		case OAKLEY_GROUP_ORDER | ISAKMP_ATTR_AF_TV:
		case OAKLEY_GROUP_ORDER | ISAKMP_ATTR_AF_TLV:
#endif
		default:
		    ugh = "unsupported OAKLEY attribute";
  46e35c:	8f82802c 	lw	v0,-32724(gp)
  46e360:	00000000 	nop
  46e364:	24424f54 	addiu	v0,v0,20308
  46e368:	00000000 	nop
  46e36c:	afc200c8 	sw	v0,200(s8)
		    break;
	    }

	    if (ugh != NULL)
  46e370:	8fc200c8 	lw	v0,200(s8)
  46e374:	00000000 	nop
  46e378:	1040fc62 	beqz	v0,46d504 <parse_isakmp_sa_body+0x534>
  46e37c:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "%s.  Attribute %s"
  46e380:	97c20060 	lhu	v0,96(s8)
  46e384:	8f8481f8 	lw	a0,-32264(gp)
  46e388:	00402821 	move	a1,v0
  46e38c:	8f9987fc 	lw	t9,-30724(gp)
  46e390:	00000000 	nop
  46e394:	0320f809 	jalr	t9
  46e398:	00000000 	nop
  46e39c:	8fdc0018 	lw	gp,24(s8)
  46e3a0:	24040003 	li	a0,3
  46e3a4:	8f85802c 	lw	a1,-32724(gp)
  46e3a8:	00000000 	nop
  46e3ac:	24a54f74 	addiu	a1,a1,20340
  46e3b0:	8fc600c8 	lw	a2,200(s8)
  46e3b4:	00403821 	move	a3,v0
  46e3b8:	8f998c48 	lw	t9,-29624(gp)
  46e3bc:	00000000 	nop
  46e3c0:	0320f809 	jalr	t9
  46e3c4:	00000000 	nop
  46e3c8:	8fdc0018 	lw	gp,24(s8)
  46e3cc:	00000000 	nop
		    , ugh, enum_show(&oakley_attr_names, a.isaat_af_type));
		break;
	    }
	}

#ifndef NO_IKE_ALG
	/* 
	 * ML: at last check for allowed transforms in alg_info_ike 
	 *     (ALG_INFO_F_STRICT flag)
	 */
	if (ugh == NULL)
  46e3d0:	8fc200c8 	lw	v0,200(s8)
  46e3d4:	00000000 	nop
  46e3d8:	1440002c 	bnez	v0,46e48c <parse_isakmp_sa_body+0x14bc>
  46e3dc:	00000000 	nop
	{
		if (!ike_alg_ok_final(ta.encrypt, ta.enckeylen, ta.hash,
			ta.group ? ta.group->group : -1, c->alg_info_ike)) {
  46e3e0:	97c500a8 	lhu	a1,168(s8)
  46e3e4:	00000000 	nop
  46e3e8:	afc5051c 	sw	a1,1308(s8)
  46e3ec:	97c800aa 	lhu	t0,170(s8)
  46e3f0:	00000000 	nop
  46e3f4:	afc80520 	sw	t0,1312(s8)
  46e3f8:	97c900b0 	lhu	t1,176(s8)
  46e3fc:	00000000 	nop
  46e400:	afc90524 	sw	t1,1316(s8)
  46e404:	8fc200bc 	lw	v0,188(s8)
  46e408:	00000000 	nop
  46e40c:	10400008 	beqz	v0,46e430 <parse_isakmp_sa_body+0x1460>
  46e410:	00000000 	nop
  46e414:	8fc200bc 	lw	v0,188(s8)
  46e418:	00000000 	nop
  46e41c:	94420000 	lhu	v0,0(v0)
  46e420:	00000000 	nop
  46e424:	afc20528 	sw	v0,1320(s8)
  46e428:	10000003 	b	46e438 <parse_isakmp_sa_body+0x1468>
  46e42c:	00000000 	nop
  46e430:	2402ffff 	li	v0,-1
  46e434:	afc20528 	sw	v0,1320(s8)
  46e438:	8fc20020 	lw	v0,32(s8)
  46e43c:	00000000 	nop
  46e440:	8c4201c0 	lw	v0,448(v0)
  46e444:	00000000 	nop
  46e448:	afa20010 	sw	v0,16(sp)
  46e44c:	8fc4051c 	lw	a0,1308(s8)
  46e450:	8fc50520 	lw	a1,1312(s8)
  46e454:	8fc60524 	lw	a2,1316(s8)
  46e458:	8fc70528 	lw	a3,1320(s8)
  46e45c:	8f9987bc 	lw	t9,-30788(gp)
  46e460:	00000000 	nop
  46e464:	0320f809 	jalr	t9
  46e468:	00000000 	nop
  46e46c:	8fdc0018 	lw	gp,24(s8)
  46e470:	14400006 	bnez	v0,46e48c <parse_isakmp_sa_body+0x14bc>
  46e474:	00000000 	nop
			ugh = "OAKLEY proposal refused";
  46e478:	8f82802c 	lw	v0,-32724(gp)
  46e47c:	00000000 	nop
  46e480:	24424f88 	addiu	v0,v0,20360
  46e484:	00000000 	nop
  46e488:	afc200c8 	sw	v0,200(s8)
		}
	}
#endif

	if (ugh == NULL)
  46e48c:	8fc200c8 	lw	v0,200(s8)
  46e490:	00000000 	nop
  46e494:	144000e1 	bnez	v0,46e81c <parse_isakmp_sa_body+0x184c>
  46e498:	00000000 	nop
	{
	    /* a little more checking is in order */
	    {
		unsigned long missing
		    = ~seen_attrs
  46e49c:	8fc20094 	lw	v0,148(s8)
  46e4a0:	00000000 	nop
  46e4a4:	00021027 	nor	v0,zero,v0
  46e4a8:	3042001e 	andi	v0,v0,0x1e
  46e4ac:	afc200f8 	sw	v0,248(s8)
		    & (LELEM(OAKLEY_ENCRYPTION_ALGORITHM)
		      | LELEM(OAKLEY_HASH_ALGORITHM)
		      | LELEM(OAKLEY_AUTHENTICATION_METHOD)
		      | LELEM(OAKLEY_GROUP_DESCRIPTION));

		if (missing)
  46e4b0:	8fc200f8 	lw	v0,248(s8)
  46e4b4:	00000000 	nop
  46e4b8:	1040001b 	beqz	v0,46e528 <parse_isakmp_sa_body+0x1558>
  46e4bc:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "missing mandatory attribute(s) %s in Oakley Transform %u"
  46e4c0:	8fc300f8 	lw	v1,248(s8)
  46e4c4:	00001021 	move	v0,zero
  46e4c8:	8f848644 	lw	a0,-31164(gp)
  46e4cc:	00403021 	move	a2,v0
  46e4d0:	00603821 	move	a3,v1
  46e4d4:	8f9988c4 	lw	t9,-30524(gp)
  46e4d8:	00000000 	nop
  46e4dc:	0320f809 	jalr	t9
  46e4e0:	00000000 	nop
  46e4e4:	8fdc0018 	lw	gp,24(s8)
  46e4e8:	93c3005c 	lbu	v1,92(s8)
  46e4ec:	24040003 	li	a0,3
  46e4f0:	8f85802c 	lw	a1,-32724(gp)
  46e4f4:	00000000 	nop
  46e4f8:	24a54fa0 	addiu	a1,a1,20384
  46e4fc:	00403021 	move	a2,v0
  46e500:	00603821 	move	a3,v1
  46e504:	8f998c48 	lw	t9,-29624(gp)
  46e508:	00000000 	nop
  46e50c:	0320f809 	jalr	t9
  46e510:	00000000 	nop
  46e514:	8fdc0018 	lw	gp,24(s8)
  46e518:	00000000 	nop
			, bitnamesof(oakley_attr_bit_names, missing)
			, trans.isat_transnum);
		    return BAD_PROPOSAL_SYNTAX;
  46e51c:	2402000f 	li	v0,15
  46e520:	100000fc 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46e524:	00000000 	nop
		}
	    }
	    /* We must have liked this transform.
	     * Lets finish early and leave.
	     */

	    DBG(DBG_PARSING | DBG_CRYPT
  46e528:	8f8284f8 	lw	v0,-31496(gp)
  46e52c:	00000000 	nop
  46e530:	8c420000 	lw	v0,0(v0)
  46e534:	00000000 	nop
  46e538:	30420006 	andi	v0,v0,0x6
  46e53c:	1040000c 	beqz	v0,46e570 <parse_isakmp_sa_body+0x15a0>
  46e540:	00000000 	nop
  46e544:	93c2005c 	lbu	v0,92(s8)
  46e548:	8f84802c 	lw	a0,-32724(gp)
  46e54c:	00000000 	nop
  46e550:	24844fdc 	addiu	a0,a0,20444
  46e554:	00402821 	move	a1,v0
  46e558:	8f9983b8 	lw	t9,-31816(gp)
  46e55c:	00000000 	nop
  46e560:	0320f809 	jalr	t9
  46e564:	00000000 	nop
  46e568:	8fdc0018 	lw	gp,24(s8)
  46e56c:	00000000 	nop
		, DBG_log("Oakley Transform %u accepted", trans.isat_transnum));

	    if (r_sa_pbs != NULL)
  46e570:	8fc20550 	lw	v0,1360(s8)
  46e574:	00000000 	nop
  46e578:	1040008c 	beqz	v0,46e7ac <parse_isakmp_sa_body+0x17dc>
  46e57c:	00000000 	nop
	    {
		struct isakmp_proposal r_proposal = proposal;
  46e580:	87c30048 	lh	v1,72(s8)
  46e584:	87c4004a 	lh	a0,74(s8)
  46e588:	87c5004c 	lh	a1,76(s8)
  46e58c:	87c8004e 	lh	t0,78(s8)
  46e590:	a7c30308 	sh	v1,776(s8)
  46e594:	a7c4030a 	sh	a0,778(s8)
  46e598:	a7c5030c 	sh	a1,780(s8)
  46e59c:	a7c8030e 	sh	t0,782(s8)
		pb_stream r_proposal_pbs;
		struct isakmp_transform r_trans = trans;
  46e5a0:	87c90058 	lh	t1,88(s8)
  46e5a4:	87c2005a 	lh	v0,90(s8)
  46e5a8:	87c3005c 	lh	v1,92(s8)
  46e5ac:	87c4005e 	lh	a0,94(s8)
  46e5b0:	a7c90330 	sh	t1,816(s8)
  46e5b4:	a7c20332 	sh	v0,818(s8)
  46e5b8:	a7c30334 	sh	v1,820(s8)
  46e5bc:	a7c40336 	sh	a0,822(s8)
		pb_stream r_trans_pbs;

		/* Situation */
		if (!out_struct(&ipsecdoisit, &ipsec_sit_desc, r_sa_pbs, NULL))
  46e5c0:	27c40024 	addiu	a0,s8,36
  46e5c4:	8f8583dc 	lw	a1,-31780(gp)
  46e5c8:	8fc60550 	lw	a2,1360(s8)
  46e5cc:	00003821 	move	a3,zero
  46e5d0:	8f998ba0 	lw	t9,-29792(gp)
  46e5d4:	00000000 	nop
  46e5d8:	0320f809 	jalr	t9
  46e5dc:	00000000 	nop
  46e5e0:	8fdc0018 	lw	gp,24(s8)
  46e5e4:	1440000e 	bnez	v0,46e620 <parse_isakmp_sa_body+0x1650>
  46e5e8:	00000000 	nop
		    impossible();
  46e5ec:	8f84802c 	lw	a0,-32724(gp)
  46e5f0:	00000000 	nop
  46e5f4:	24844920 	addiu	a0,a0,18720
  46e5f8:	8f85802c 	lw	a1,-32724(gp)
  46e5fc:	00000000 	nop
  46e600:	24a54904 	addiu	a1,a1,18692
  46e604:	24060528 	li	a2,1320
  46e608:	8f998bb8 	lw	t9,-29768(gp)
  46e60c:	00000000 	nop
  46e610:	0320f809 	jalr	t9
  46e614:	00000000 	nop
  46e618:	8fdc0018 	lw	gp,24(s8)
  46e61c:	00000000 	nop

		/* Proposal */
#ifdef EMIT_ISAKMP_SPI
		r_proposal.isap_spisize = COOKIE_SIZE;
#else
		r_proposal.isap_spisize = 0;
  46e620:	a3c0030e 	sb	zero,782(s8)
#endif
		r_proposal.isap_notrans = 1;
  46e624:	24020001 	li	v0,1
  46e628:	a3c2030f 	sb	v0,783(s8)
		if (!out_struct(&r_proposal, &isakmp_proposal_desc, r_sa_pbs, &r_proposal_pbs))
  46e62c:	27c40308 	addiu	a0,s8,776
  46e630:	8f85821c 	lw	a1,-32228(gp)
  46e634:	8fc60550 	lw	a2,1360(s8)
  46e638:	27c70310 	addiu	a3,s8,784
  46e63c:	8f998ba0 	lw	t9,-29792(gp)
  46e640:	00000000 	nop
  46e644:	0320f809 	jalr	t9
  46e648:	00000000 	nop
  46e64c:	8fdc0018 	lw	gp,24(s8)
  46e650:	1440000e 	bnez	v0,46e68c <parse_isakmp_sa_body+0x16bc>
  46e654:	00000000 	nop
		    impossible();
  46e658:	8f84802c 	lw	a0,-32724(gp)
  46e65c:	00000000 	nop
  46e660:	24844920 	addiu	a0,a0,18720
  46e664:	8f85802c 	lw	a1,-32724(gp)
  46e668:	00000000 	nop
  46e66c:	24a54904 	addiu	a1,a1,18692
  46e670:	24060532 	li	a2,1330
  46e674:	8f998bb8 	lw	t9,-29768(gp)
  46e678:	00000000 	nop
  46e67c:	0320f809 	jalr	t9
  46e680:	00000000 	nop
  46e684:	8fdc0018 	lw	gp,24(s8)
  46e688:	00000000 	nop

		/* SPI */
#ifdef EMIT_ISAKMP_SPI
		if (!out_raw(my_cookie, COOKIE_SIZE, &r_proposal_pbs, "SPI"))
		    impossible();
		r_proposal.isap_spisize = COOKIE_SIZE;
#else
		/* none (0) */
#endif

		/* Transform */
		r_trans.isat_np = ISAKMP_NEXT_NONE;
  46e68c:	a3c00330 	sb	zero,816(s8)
		if (!out_struct(&r_trans, &isakmp_isakmp_transform_desc, &r_proposal_pbs, &r_trans_pbs))
  46e690:	27c40330 	addiu	a0,s8,816
  46e694:	8f858960 	lw	a1,-30368(gp)
  46e698:	27c60310 	addiu	a2,s8,784
  46e69c:	27c70338 	addiu	a3,s8,824
  46e6a0:	8f998ba0 	lw	t9,-29792(gp)
  46e6a4:	00000000 	nop
  46e6a8:	0320f809 	jalr	t9
  46e6ac:	00000000 	nop
  46e6b0:	8fdc0018 	lw	gp,24(s8)
  46e6b4:	1440000e 	bnez	v0,46e6f0 <parse_isakmp_sa_body+0x1720>
  46e6b8:	00000000 	nop
		    impossible();
  46e6bc:	8f84802c 	lw	a0,-32724(gp)
  46e6c0:	00000000 	nop
  46e6c4:	24844920 	addiu	a0,a0,18720
  46e6c8:	8f85802c 	lw	a1,-32724(gp)
  46e6cc:	00000000 	nop
  46e6d0:	24a54904 	addiu	a1,a1,18692
  46e6d4:	24060540 	li	a2,1344
  46e6d8:	8f998bb8 	lw	t9,-29768(gp)
  46e6dc:	00000000 	nop
  46e6e0:	0320f809 	jalr	t9
  46e6e4:	00000000 	nop
  46e6e8:	8fdc0018 	lw	gp,24(s8)
  46e6ec:	00000000 	nop

		if (!out_raw(attr_start, attr_len, &r_trans_pbs, "attributes"))
  46e6f0:	8fc40088 	lw	a0,136(s8)
  46e6f4:	8fc5008c 	lw	a1,140(s8)
  46e6f8:	27c60338 	addiu	a2,s8,824
  46e6fc:	8f87802c 	lw	a3,-32724(gp)
  46e700:	00000000 	nop
  46e704:	24e74ffc 	addiu	a3,a3,20476
  46e708:	8f998308 	lw	t9,-31992(gp)
  46e70c:	00000000 	nop
  46e710:	0320f809 	jalr	t9
  46e714:	00000000 	nop
  46e718:	8fdc0018 	lw	gp,24(s8)
  46e71c:	1440000e 	bnez	v0,46e758 <parse_isakmp_sa_body+0x1788>
  46e720:	00000000 	nop
		    impossible();
  46e724:	8f84802c 	lw	a0,-32724(gp)
  46e728:	00000000 	nop
  46e72c:	24844920 	addiu	a0,a0,18720
  46e730:	8f85802c 	lw	a1,-32724(gp)
  46e734:	00000000 	nop
  46e738:	24a54904 	addiu	a1,a1,18692
  46e73c:	24060543 	li	a2,1347
  46e740:	8f998bb8 	lw	t9,-29768(gp)
  46e744:	00000000 	nop
  46e748:	0320f809 	jalr	t9
  46e74c:	00000000 	nop
  46e750:	8fdc0018 	lw	gp,24(s8)
  46e754:	00000000 	nop
		close_output_pbs(&r_trans_pbs);
  46e758:	27c40338 	addiu	a0,s8,824
  46e75c:	8f998228 	lw	t9,-32216(gp)
  46e760:	00000000 	nop
  46e764:	0320f809 	jalr	t9
  46e768:	00000000 	nop
  46e76c:	8fdc0018 	lw	gp,24(s8)
  46e770:	00000000 	nop
		close_output_pbs(&r_proposal_pbs);
  46e774:	27c40310 	addiu	a0,s8,784
  46e778:	8f998228 	lw	t9,-32216(gp)
  46e77c:	00000000 	nop
  46e780:	0320f809 	jalr	t9
  46e784:	00000000 	nop
  46e788:	8fdc0018 	lw	gp,24(s8)
  46e78c:	00000000 	nop
		close_output_pbs(r_sa_pbs);
  46e790:	8fc40550 	lw	a0,1360(s8)
  46e794:	8f998228 	lw	t9,-32216(gp)
  46e798:	00000000 	nop
  46e79c:	0320f809 	jalr	t9
  46e7a0:	00000000 	nop
  46e7a4:	8fdc0018 	lw	gp,24(s8)
  46e7a8:	00000000 	nop
	    }

	    /* ??? If selection, we used to save the proposal in state.
	     * We never used it.  From proposal_pbs.start,
	     * length pbs_room(&proposal_pbs)
	     */

	    /* copy over the results */
	    st->st_oakley = ta;
  46e7ac:	8fc30558 	lw	v1,1368(s8)
  46e7b0:	8fc200a8 	lw	v0,168(s8)
  46e7b4:	00000000 	nop
  46e7b8:	ac62001c 	sw	v0,28(v1)
  46e7bc:	8fc200ac 	lw	v0,172(s8)
  46e7c0:	00000000 	nop
  46e7c4:	ac620020 	sw	v0,32(v1)
  46e7c8:	8fc200b0 	lw	v0,176(s8)
  46e7cc:	00000000 	nop
  46e7d0:	ac620024 	sw	v0,36(v1)
  46e7d4:	8fc200b4 	lw	v0,180(s8)
  46e7d8:	00000000 	nop
  46e7dc:	ac620028 	sw	v0,40(v1)
  46e7e0:	8fc200b8 	lw	v0,184(s8)
  46e7e4:	00000000 	nop
  46e7e8:	ac62002c 	sw	v0,44(v1)
  46e7ec:	8fc200bc 	lw	v0,188(s8)
  46e7f0:	00000000 	nop
  46e7f4:	ac620030 	sw	v0,48(v1)
  46e7f8:	8fc200c0 	lw	v0,192(s8)
  46e7fc:	00000000 	nop
  46e800:	ac620034 	sw	v0,52(v1)
  46e804:	8fc200c4 	lw	v0,196(s8)
  46e808:	00000000 	nop
  46e80c:	ac620038 	sw	v0,56(v1)
	    return NOTHING_WRONG;
  46e810:	00001021 	move	v0,zero
  46e814:	1000003f 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46e818:	00000000 	nop
	}

	/* on to next transform */
	no_trans_left--;
  46e81c:	8fc20050 	lw	v0,80(s8)
  46e820:	00000000 	nop
  46e824:	2442ffff 	addiu	v0,v0,-1
  46e828:	afc20050 	sw	v0,80(s8)

	if (trans.isat_np == ISAKMP_NEXT_NONE)
  46e82c:	93c20058 	lbu	v0,88(s8)
  46e830:	00000000 	nop
  46e834:	14400012 	bnez	v0,46e880 <parse_isakmp_sa_body+0x18b0>
  46e838:	00000000 	nop
	{
	    if (no_trans_left != 0)
  46e83c:	8fc20050 	lw	v0,80(s8)
  46e840:	00000000 	nop
  46e844:	10400028 	beqz	v0,46e8e8 <parse_isakmp_sa_body+0x1918>
  46e848:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "number of Transform Payloads disagrees with Oakley Proposal Payload");
  46e84c:	24040003 	li	a0,3
  46e850:	8f85802c 	lw	a1,-32724(gp)
  46e854:	00000000 	nop
  46e858:	24a54adc 	addiu	a1,a1,19164
  46e85c:	8f998c48 	lw	t9,-29624(gp)
  46e860:	00000000 	nop
  46e864:	0320f809 	jalr	t9
  46e868:	00000000 	nop
  46e86c:	8fdc0018 	lw	gp,24(s8)
  46e870:	00000000 	nop
		return BAD_PROPOSAL_SYNTAX;
  46e874:	2402000f 	li	v0,15
  46e878:	10000026 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46e87c:	00000000 	nop
	    }
	    break;
	}
	if (trans.isat_np != ISAKMP_NEXT_T)
  46e880:	93c30058 	lbu	v1,88(s8)
  46e884:	24020003 	li	v0,3
  46e888:	1062fab3 	beq	v1,v0,46d358 <parse_isakmp_sa_body+0x388>
  46e88c:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "unexpected %s payload in Oakley Proposal"
  46e890:	93c20048 	lbu	v0,72(s8)
  46e894:	8f8483f4 	lw	a0,-31756(gp)
  46e898:	00402821 	move	a1,v0
  46e89c:	8f9987fc 	lw	t9,-30724(gp)
  46e8a0:	00000000 	nop
  46e8a4:	0320f809 	jalr	t9
  46e8a8:	00000000 	nop
  46e8ac:	8fdc0018 	lw	gp,24(s8)
  46e8b0:	24040003 	li	a0,3
  46e8b4:	8f85802c 	lw	a1,-32724(gp)
  46e8b8:	00000000 	nop
  46e8bc:	24a55008 	addiu	a1,a1,20488
  46e8c0:	00403021 	move	a2,v0
  46e8c4:	8f998c48 	lw	t9,-29624(gp)
  46e8c8:	00000000 	nop
  46e8cc:	0320f809 	jalr	t9
  46e8d0:	00000000 	nop
  46e8d4:	8fdc0018 	lw	gp,24(s8)
  46e8d8:	00000000 	nop
		, enum_show(&payload_names, proposal.isap_np));
	    return BAD_PROPOSAL_SYNTAX;
  46e8dc:	2402000f 	li	v0,15
  46e8e0:	1000000c 	b	46e914 <parse_isakmp_sa_body+0x1944>
  46e8e4:	00000000 	nop
	}
    }
    loglog(RC_LOG_SERIOUS, "no acceptable Oakley Transform");
  46e8e8:	24040003 	li	a0,3
  46e8ec:	8f85802c 	lw	a1,-32724(gp)
  46e8f0:	00000000 	nop
  46e8f4:	24a55034 	addiu	a1,a1,20532
  46e8f8:	8f998c48 	lw	t9,-29624(gp)
  46e8fc:	00000000 	nop
  46e900:	0320f809 	jalr	t9
  46e904:	00000000 	nop
  46e908:	8fdc0018 	lw	gp,24(s8)
  46e90c:	00000000 	nop
    return NO_PROPOSAL_CHOSEN;
  46e910:	2402000e 	li	v0,14
}
  46e914:	03c0e821 	move	sp,s8
  46e918:	8fbf0540 	lw	ra,1344(sp)
  46e91c:	8fbe053c 	lw	s8,1340(sp)
  46e920:	27bd0548 	addiu	sp,sp,1352
  46e924:	03e00008 	jr	ra
  46e928:	00000000 	nop

0046e92c <init_st_oakley>:
  46e92c:	3c1c0fba 	lui	gp,0xfba
  46e930:	279ce044 	addiu	gp,gp,-8124
  46e934:	0399e021 	addu	gp,gp,t9
  46e938:	27bdffb0 	addiu	sp,sp,-80
  46e93c:	afbc0010 	sw	gp,16(sp)
  46e940:	afbf0048 	sw	ra,72(sp)
  46e944:	afbe0044 	sw	s8,68(sp)
  46e948:	afbc0040 	sw	gp,64(sp)
  46e94c:	03a0f021 	move	s8,sp
  46e950:	afc40050 	sw	a0,80(s8)
  46e954:	afc60058 	sw	a2,88(s8)
  46e958:	afc7005c 	sw	a3,92(s8)

/* Initialize st_oakley field of state for use when initiating in
 * aggressive mode.
 *
 * This should probably get more of its parameters, like what group to use,
 * from the connection specification, but it's not there yet.
 * This should ideally be done by passing them via whack.
 * 
 */
bool
init_st_oakley(struct state *st, lset_t policy)
{
    struct oakley_trans_attrs ta;

    policy &= POLICY_ISAKMP_MASK;
  46e95c:	8fc40058 	lw	a0,88(s8)
  46e960:	8fc5005c 	lw	a1,92(s8)
  46e964:	24020000 	li	v0,0
  46e968:	24032003 	li	v1,8195
  46e96c:	00821024 	and	v0,a0,v0
  46e970:	00a31824 	and	v1,a1,v1
  46e974:	afc20058 	sw	v0,88(s8)
  46e978:	afc3005c 	sw	v1,92(s8)

    /* When this SA expires (seconds) */
    ta.life_seconds = st->st_connection->sa_ike_life_seconds;
  46e97c:	8fc20050 	lw	v0,80(s8)
  46e980:	00000000 	nop
  46e984:	8c42000c 	lw	v0,12(v0)
  46e988:	00000000 	nop
  46e98c:	8c420010 	lw	v0,16(v0)
  46e990:	00000000 	nop
  46e994:	afc20030 	sw	v0,48(s8)
    ta.life_kilobytes = 1000000;
  46e998:	3c02000f 	lui	v0,0xf
  46e99c:	34424240 	ori	v0,v0,0x4240
  46e9a0:	afc20034 	sw	v0,52(s8)

    ta.encrypt = oakley_tr_am[0].val; /* OAKLEY_ENCRYPTION_ALGORITHM */
  46e9a4:	8f828070 	lw	v0,-32656(gp)
  46e9a8:	00000000 	nop
  46e9ac:	94420002 	lhu	v0,2(v0)
  46e9b0:	00000000 	nop
  46e9b4:	a7c20018 	sh	v0,24(s8)
    ta.encrypter = crypto_get_encrypter(ta.encrypt);
  46e9b8:	97c20018 	lhu	v0,24(s8)
  46e9bc:	00000000 	nop
  46e9c0:	00402021 	move	a0,v0
  46e9c4:	8f99880c 	lw	t9,-30708(gp)
  46e9c8:	00000000 	nop
  46e9cc:	0320f809 	jalr	t9
  46e9d0:	00000000 	nop
  46e9d4:	8fdc0010 	lw	gp,16(s8)
  46e9d8:	afc2001c 	sw	v0,28(s8)
    ta.enckeylen = ta.encrypter->keydeflen;
  46e9dc:	8fc2001c 	lw	v0,28(s8)
  46e9e0:	00000000 	nop
  46e9e4:	94420012 	lhu	v0,18(v0)
  46e9e8:	00000000 	nop
  46e9ec:	a7c2001a 	sh	v0,26(s8)
    ta.hash = oakley_tr_am[1].val;  /* OAKLEY_HASH_ALGORITHM */
  46e9f0:	8f828070 	lw	v0,-32656(gp)
  46e9f4:	00000000 	nop
  46e9f8:	94420006 	lhu	v0,6(v0)
  46e9fc:	00000000 	nop
  46ea00:	a7c20020 	sh	v0,32(s8)
    ta.hasher = crypto_get_hasher(ta.hash);
  46ea04:	97c20020 	lhu	v0,32(s8)
  46ea08:	00000000 	nop
  46ea0c:	00402021 	move	a0,v0
  46ea10:	8f9985cc 	lw	t9,-31284(gp)
  46ea14:	00000000 	nop
  46ea18:	0320f809 	jalr	t9
  46ea1c:	00000000 	nop
  46ea20:	8fdc0010 	lw	gp,16(s8)
  46ea24:	afc20024 	sw	v0,36(s8)

    if (policy&POLICY_PSK)
  46ea28:	8fc40058 	lw	a0,88(s8)
  46ea2c:	8fc5005c 	lw	a1,92(s8)
  46ea30:	24020000 	li	v0,0
  46ea34:	24030001 	li	v1,1
  46ea38:	00821024 	and	v0,a0,v0
  46ea3c:	00a31824 	and	v1,a1,v1
  46ea40:	10600005 	beqz	v1,46ea58 <init_st_oakley+0x12c>
  46ea44:	00000000 	nop
	ta.auth = OAKLEY_PRESHARED_KEY;
  46ea48:	24020001 	li	v0,1
  46ea4c:	a7c20028 	sh	v0,40(s8)
  46ea50:	10000012 	b	46ea9c <init_st_oakley+0x170>
  46ea54:	00000000 	nop
    else if (policy&POLICY_RSASIG)
  46ea58:	8fc40058 	lw	a0,88(s8)
  46ea5c:	8fc5005c 	lw	a1,92(s8)
  46ea60:	24020000 	li	v0,0
  46ea64:	24030002 	li	v1,2
  46ea68:	00822024 	and	a0,a0,v0
  46ea6c:	00a32824 	and	a1,a1,v1
  46ea70:	00801021 	move	v0,a0
  46ea74:	00451025 	or	v0,v0,a1
  46ea78:	10400005 	beqz	v0,46ea90 <init_st_oakley+0x164>
  46ea7c:	00000000 	nop
	ta.auth = OAKLEY_RSA_SIG;
  46ea80:	24020003 	li	v0,3
  46ea84:	a7c20028 	sh	v0,40(s8)
  46ea88:	10000004 	b	46ea9c <init_st_oakley+0x170>
  46ea8c:	00000000 	nop
    else
	return FALSE;
  46ea90:	00001021 	move	v0,zero
  46ea94:	1000002a 	b	46eb40 <init_st_oakley+0x214>
  46ea98:	00000000 	nop
    oakley_tr_am[2].val = ta.auth; /* OAKLEY_AUTHENTICATION_METHOD */
  46ea9c:	97c20028 	lhu	v0,40(s8)
  46eaa0:	8f818070 	lw	at,-32656(gp)
  46eaa4:	00000000 	nop
  46eaa8:	a422000a 	sh	v0,10(at)

    ta.group = lookup_group(oakley_tr_am[3].val); /* OAKLEY_GROUP_DESCRIPTION */
  46eaac:	8f828070 	lw	v0,-32656(gp)
  46eab0:	00000000 	nop
  46eab4:	9442000e 	lhu	v0,14(v0)
  46eab8:	00000000 	nop
  46eabc:	00402021 	move	a0,v0
  46eac0:	8f998b88 	lw	t9,-29816(gp)
  46eac4:	00000000 	nop
  46eac8:	0320f809 	jalr	t9
  46eacc:	00000000 	nop
  46ead0:	8fdc0010 	lw	gp,16(s8)
  46ead4:	afc2002c 	sw	v0,44(s8)

    st->st_oakley = ta;
  46ead8:	8fc30050 	lw	v1,80(s8)
  46eadc:	8fc20018 	lw	v0,24(s8)
  46eae0:	00000000 	nop
  46eae4:	ac62001c 	sw	v0,28(v1)
  46eae8:	8fc2001c 	lw	v0,28(s8)
  46eaec:	00000000 	nop
  46eaf0:	ac620020 	sw	v0,32(v1)
  46eaf4:	8fc20020 	lw	v0,32(s8)
  46eaf8:	00000000 	nop
  46eafc:	ac620024 	sw	v0,36(v1)
  46eb00:	8fc20024 	lw	v0,36(s8)
  46eb04:	00000000 	nop
  46eb08:	ac620028 	sw	v0,40(v1)
  46eb0c:	8fc20028 	lw	v0,40(s8)
  46eb10:	00000000 	nop
  46eb14:	ac62002c 	sw	v0,44(v1)
  46eb18:	8fc2002c 	lw	v0,44(s8)
  46eb1c:	00000000 	nop
  46eb20:	ac620030 	sw	v0,48(v1)
  46eb24:	8fc20030 	lw	v0,48(s8)
  46eb28:	00000000 	nop
  46eb2c:	ac620034 	sw	v0,52(v1)
  46eb30:	8fc20034 	lw	v0,52(s8)
  46eb34:	00000000 	nop
  46eb38:	ac620038 	sw	v0,56(v1)

    return TRUE;
  46eb3c:	24020001 	li	v0,1
}
  46eb40:	03c0e821 	move	sp,s8
  46eb44:	8fbf0048 	lw	ra,72(sp)
  46eb48:	8fbe0044 	lw	s8,68(sp)
  46eb4c:	27bd0050 	addiu	sp,sp,80
  46eb50:	03e00008 	jr	ra
  46eb54:	00000000 	nop

0046eb58 <parse_ipsec_transform>:
  46eb58:	3c1c0fba 	lui	gp,0xfba
  46eb5c:	279cde18 	addiu	gp,gp,-8680
  46eb60:	0399e021 	addu	gp,gp,t9
  46eb64:	27bdff68 	addiu	sp,sp,-152
  46eb68:	afbc0010 	sw	gp,16(sp)
  46eb6c:	afbf0090 	sw	ra,144(sp)
  46eb70:	afbe008c 	sw	s8,140(sp)
  46eb74:	afbc0088 	sw	gp,136(sp)
  46eb78:	03a0f021 	move	s8,sp
  46eb7c:	afc40098 	sw	a0,152(s8)
  46eb80:	afc5009c 	sw	a1,156(s8)
  46eb84:	afc600a0 	sw	a2,160(s8)
  46eb88:	afc700a4 	sw	a3,164(s8)


/* Parse the body of an IPsec SA Payload (i.e. Phase 2 / Quick Mode).
 *
 * The main routine is parse_ipsec_sa_body; other functions defined
 * between here and there are just helpers.
 *
 * Various shortcuts are taken.  In particular, the policy, such as
 * it is, is hardwired.
 *
 * If r_sa is non-NULL, the body of an SA representing the selected
 * proposal is emitted into it.
 *
 * If "selection" is true, the SA is supposed to represent the
 * single tranform that the peer has accepted.
 * ??? We only check that it is acceptable, not that it is one that we offered!
 *
 * Only IPsec DOI is accepted (what is the ISAKMP DOI?).
 * Error response is rudimentary.
 *
 * Since all ISAKMP groups in all SA Payloads must match, st->st_pfs_group
 * holds this across multiple payloads.
 * &unset_group signifies not yet "set"; NULL signifies NONE.
 *
 * This routine is used by quick_inI1_outR1() and quick_inR1_outI2().
 */

static const struct ipsec_trans_attrs null_ipsec_trans_attrs = {
    0,					/* transid (NULL, for now) */
    0,					/* spi */
    SA_LIFE_DURATION_DEFAULT,		/* life_seconds */
    SA_LIFE_DURATION_K_DEFAULT,		/* life_kilobytes */
    ENCAPSULATION_MODE_UNSPECIFIED,	/* encapsulation */
    AUTH_ALGORITHM_NONE,		/* auth */
    0,					/* key_len */
    0,					/* key_rounds */
};

static bool
parse_ipsec_transform(struct isakmp_transform *trans
, struct ipsec_trans_attrs *attrs
, pb_stream *prop_pbs
, pb_stream *trans_pbs
, struct_desc *trans_desc
, int previous_transnum	/* or -1 if none */
, bool selection
, bool is_last
, bool is_ipcomp
, struct state *st)	/* current state object */
{
    lset_t seen_attrs = 0
  46eb8c:	00001021 	move	v0,zero
  46eb90:	00001821 	move	v1,zero
  46eb94:	afc20018 	sw	v0,24(s8)
  46eb98:	afc3001c 	sw	v1,28(s8)
	, seen_durations = 0;
  46eb9c:	00004021 	move	t0,zero
  46eba0:	00004821 	move	t1,zero
  46eba4:	afc80020 	sw	t0,32(s8)
  46eba8:	afc90024 	sw	t1,36(s8)
    u_int16_t life_type;
    const struct oakley_group_desc *pfs_group = NULL;
  46ebac:	afc0002c 	sw	zero,44(s8)

    if (!in_struct(trans, trans_desc, prop_pbs, trans_pbs))
  46ebb0:	8fc40098 	lw	a0,152(s8)
  46ebb4:	8fc500a8 	lw	a1,168(s8)
  46ebb8:	8fc600a0 	lw	a2,160(s8)
  46ebbc:	8fc700a4 	lw	a3,164(s8)
  46ebc0:	8f998b3c 	lw	t9,-29892(gp)
  46ebc4:	00000000 	nop
  46ebc8:	0320f809 	jalr	t9
  46ebcc:	00000000 	nop
  46ebd0:	8fdc0010 	lw	gp,16(s8)
  46ebd4:	14400004 	bnez	v0,46ebe8 <parse_ipsec_transform+0x90>
  46ebd8:	00000000 	nop
	return FALSE;
  46ebdc:	00001021 	move	v0,zero
  46ebe0:	100003e3 	b	46fb70 <parse_ipsec_transform+0x1018>
  46ebe4:	00000000 	nop

    if (trans->isat_transnum <= previous_transnum)
  46ebe8:	8fc20098 	lw	v0,152(s8)
  46ebec:	00000000 	nop
  46ebf0:	90430004 	lbu	v1,4(v0)
  46ebf4:	8fc200ac 	lw	v0,172(s8)
  46ebf8:	00000000 	nop
  46ebfc:	0043102a 	slt	v0,v0,v1
  46ec00:	1440000e 	bnez	v0,46ec3c <parse_ipsec_transform+0xe4>
  46ec04:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "Transform Numbers in Proposal are not monotonically increasing");
  46ec08:	24040003 	li	a0,3
  46ec0c:	8f85802c 	lw	a1,-32724(gp)
  46ec10:	00000000 	nop
  46ec14:	24a5506c 	addiu	a1,a1,20588
  46ec18:	8f998c48 	lw	t9,-29624(gp)
  46ec1c:	00000000 	nop
  46ec20:	0320f809 	jalr	t9
  46ec24:	00000000 	nop
  46ec28:	8fdc0010 	lw	gp,16(s8)
  46ec2c:	00000000 	nop
	return FALSE;
  46ec30:	00001021 	move	v0,zero
  46ec34:	100003ce 	b	46fb70 <parse_ipsec_transform+0x1018>
  46ec38:	00000000 	nop
    }

    switch (trans->isat_np)
  46ec3c:	8fc20098 	lw	v0,152(s8)
  46ec40:	00000000 	nop
  46ec44:	90420000 	lbu	v0,0(v0)
  46ec48:	00000000 	nop
  46ec4c:	afc20064 	sw	v0,100(s8)
  46ec50:	8fc90064 	lw	t1,100(s8)
  46ec54:	00000000 	nop
  46ec58:	1120002f 	beqz	t1,46ed18 <parse_ipsec_transform+0x1c0>
  46ec5c:	00000000 	nop
  46ec60:	24020003 	li	v0,3
  46ec64:	8fc30064 	lw	v1,100(s8)
  46ec68:	00000000 	nop
  46ec6c:	10620019 	beq	v1,v0,46ecd4 <parse_ipsec_transform+0x17c>
  46ec70:	00000000 	nop
    {
	case ISAKMP_NEXT_T:
	    if (is_last)
	    {
		loglog(RC_LOG_SERIOUS, "Proposal Payload has more Transforms than specified");
		return FALSE;
	    }
	    break;
	case ISAKMP_NEXT_NONE:
	    if (!is_last)
	    {
		loglog(RC_LOG_SERIOUS, "Proposal Payload has fewer Transforms than specified");
		return FALSE;
	    }
	    break;
	default:
	    loglog(RC_LOG_SERIOUS, "expecting Transform Payload, but found %s in Proposal"
  46ec74:	8fc20098 	lw	v0,152(s8)
  46ec78:	00000000 	nop
  46ec7c:	90420000 	lbu	v0,0(v0)
  46ec80:	8f8483f4 	lw	a0,-31756(gp)
  46ec84:	00402821 	move	a1,v0
  46ec88:	8f9987fc 	lw	t9,-30724(gp)
  46ec8c:	00000000 	nop
  46ec90:	0320f809 	jalr	t9
  46ec94:	00000000 	nop
  46ec98:	8fdc0010 	lw	gp,16(s8)
  46ec9c:	24040003 	li	a0,3
  46eca0:	8f85802c 	lw	a1,-32724(gp)
  46eca4:	00000000 	nop
  46eca8:	24a550ac 	addiu	a1,a1,20652
  46ecac:	00403021 	move	a2,v0
  46ecb0:	8f998c48 	lw	t9,-29624(gp)
  46ecb4:	00000000 	nop
  46ecb8:	0320f809 	jalr	t9
  46ecbc:	00000000 	nop
  46ecc0:	8fdc0010 	lw	gp,16(s8)
  46ecc4:	00000000 	nop
		, enum_show(&payload_names, trans->isat_np));
	    return FALSE;
  46ecc8:	00001021 	move	v0,zero
  46eccc:	100003a8 	b	46fb70 <parse_ipsec_transform+0x1018>
  46ecd0:	00000000 	nop
  46ecd4:	8fc200b4 	lw	v0,180(s8)
  46ecd8:	00000000 	nop
  46ecdc:	1040001f 	beqz	v0,46ed5c <parse_ipsec_transform+0x204>
  46ece0:	00000000 	nop
  46ece4:	24040003 	li	a0,3
  46ece8:	8f85802c 	lw	a1,-32724(gp)
  46ecec:	00000000 	nop
  46ecf0:	24a550e4 	addiu	a1,a1,20708
  46ecf4:	8f998c48 	lw	t9,-29624(gp)
  46ecf8:	00000000 	nop
  46ecfc:	0320f809 	jalr	t9
  46ed00:	00000000 	nop
  46ed04:	8fdc0010 	lw	gp,16(s8)
  46ed08:	00000000 	nop
  46ed0c:	00001021 	move	v0,zero
  46ed10:	10000397 	b	46fb70 <parse_ipsec_transform+0x1018>
  46ed14:	00000000 	nop
  46ed18:	8fc200b4 	lw	v0,180(s8)
  46ed1c:	00000000 	nop
  46ed20:	1440000e 	bnez	v0,46ed5c <parse_ipsec_transform+0x204>
  46ed24:	00000000 	nop
  46ed28:	24040003 	li	a0,3
  46ed2c:	8f85802c 	lw	a1,-32724(gp)
  46ed30:	00000000 	nop
  46ed34:	24a55118 	addiu	a1,a1,20760
  46ed38:	8f998c48 	lw	t9,-29624(gp)
  46ed3c:	00000000 	nop
  46ed40:	0320f809 	jalr	t9
  46ed44:	00000000 	nop
  46ed48:	8fdc0010 	lw	gp,16(s8)
  46ed4c:	00000000 	nop
  46ed50:	00001021 	move	v0,zero
  46ed54:	10000386 	b	46fb70 <parse_ipsec_transform+0x1018>
  46ed58:	00000000 	nop
    }

    *attrs = null_ipsec_trans_attrs;
  46ed5c:	8fc4009c 	lw	a0,156(s8)
  46ed60:	8f83802c 	lw	v1,-32724(gp)
  46ed64:	00000000 	nop
  46ed68:	24635054 	addiu	v1,v1,20564
  46ed6c:	00000000 	nop
  46ed70:	8c620000 	lw	v0,0(v1)
  46ed74:	00000000 	nop
  46ed78:	ac820000 	sw	v0,0(a0)
  46ed7c:	8c620004 	lw	v0,4(v1)
  46ed80:	00000000 	nop
  46ed84:	ac820004 	sw	v0,4(a0)
  46ed88:	8c620008 	lw	v0,8(v1)
  46ed8c:	00000000 	nop
  46ed90:	ac820008 	sw	v0,8(a0)
  46ed94:	8c62000c 	lw	v0,12(v1)
  46ed98:	00000000 	nop
  46ed9c:	ac82000c 	sw	v0,12(a0)
  46eda0:	8c620010 	lw	v0,16(v1)
  46eda4:	00000000 	nop
  46eda8:	ac820010 	sw	v0,16(a0)
  46edac:	8c620014 	lw	v0,20(v1)
  46edb0:	00000000 	nop
  46edb4:	ac820014 	sw	v0,20(a0)
    attrs->transid = trans->isat_transid;
  46edb8:	8fc20098 	lw	v0,152(s8)
  46edbc:	00000000 	nop
  46edc0:	90430005 	lbu	v1,5(v0)
  46edc4:	8fc2009c 	lw	v0,156(s8)
  46edc8:	00000000 	nop
  46edcc:	a0430000 	sb	v1,0(v0)

    while (pbs_left(trans_pbs) != 0)
  46edd0:	8fc200a4 	lw	v0,164(s8)
  46edd4:	00000000 	nop
  46edd8:	8c430014 	lw	v1,20(v0)
  46eddc:	8fc200a4 	lw	v0,164(s8)
  46ede0:	00000000 	nop
  46ede4:	8c420010 	lw	v0,16(v0)
  46ede8:	00000000 	nop
  46edec:	14620003 	bne	v1,v0,46edfc <parse_ipsec_transform+0x2a4>
  46edf0:	00000000 	nop
  46edf4:	100002eb 	b	46f9a4 <parse_ipsec_transform+0xe4c>
  46edf8:	00000000 	nop
    {
	struct isakmp_attribute a;
	pb_stream attr_pbs;
	enum_names *vdesc;
	u_int32_t val;	/* room for larger value */
	bool ipcomp_inappropriate = is_ipcomp;	/* will get reset if OK */
  46edfc:	8fc200b8 	lw	v0,184(s8)
  46ee00:	00000000 	nop
  46ee04:	afc20060 	sw	v0,96(s8)

	if (!in_struct(&a, &isakmp_ipsec_attribute_desc, trans_pbs, &attr_pbs))
  46ee08:	27c40030 	addiu	a0,s8,48
  46ee0c:	8f858c50 	lw	a1,-29616(gp)
  46ee10:	8fc600a4 	lw	a2,164(s8)
  46ee14:	27c70038 	addiu	a3,s8,56
  46ee18:	8f998b3c 	lw	t9,-29892(gp)
  46ee1c:	00000000 	nop
  46ee20:	0320f809 	jalr	t9
  46ee24:	00000000 	nop
  46ee28:	8fdc0010 	lw	gp,16(s8)
  46ee2c:	14400004 	bnez	v0,46ee40 <parse_ipsec_transform+0x2e8>
  46ee30:	00000000 	nop
	    return FALSE;
  46ee34:	00001021 	move	v0,zero
  46ee38:	1000034d 	b	46fb70 <parse_ipsec_transform+0x1018>
  46ee3c:	00000000 	nop

	passert((a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK) < 32);
  46ee40:	97c20030 	lhu	v0,48(s8)
  46ee44:	00000000 	nop
  46ee48:	30427fff 	andi	v0,v0,0x7fff
  46ee4c:	3042ffff 	andi	v0,v0,0xffff
  46ee50:	2c420020 	sltiu	v0,v0,32
  46ee54:	1440000e 	bnez	v0,46ee90 <parse_ipsec_transform+0x338>
  46ee58:	00000000 	nop
  46ee5c:	8f84802c 	lw	a0,-32724(gp)
  46ee60:	00000000 	nop
  46ee64:	24844b9c 	addiu	a0,a0,19356
  46ee68:	8f85802c 	lw	a1,-32724(gp)
  46ee6c:	00000000 	nop
  46ee70:	24a54904 	addiu	a1,a1,18692
  46ee74:	240605f5 	li	a2,1525
  46ee78:	8f998bb8 	lw	t9,-29768(gp)
  46ee7c:	00000000 	nop
  46ee80:	0320f809 	jalr	t9
  46ee84:	00000000 	nop
  46ee88:	8fdc0010 	lw	gp,16(s8)
  46ee8c:	00000000 	nop

	if (seen_attrs & LELEM(a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK))
  46ee90:	97c20030 	lhu	v0,48(s8)
  46ee94:	00000000 	nop
  46ee98:	30427fff 	andi	v0,v0,0x7fff
  46ee9c:	3044ffff 	andi	a0,v0,0xffff
  46eea0:	24020000 	li	v0,0
  46eea4:	24030001 	li	v1,1
  46eea8:	00043680 	sll	a2,a0,0x1a
  46eeac:	04c10004 	bgez	a2,46eec0 <parse_ipsec_transform+0x368>
  46eeb0:	00000000 	nop
  46eeb4:	00834004 	sllv	t0,v1,a0
  46eeb8:	10000007 	b	46eed8 <parse_ipsec_transform+0x380>
  46eebc:	00004821 	move	t1,zero
  46eec0:	10c00004 	beqz	a2,46eed4 <parse_ipsec_transform+0x37c>
  46eec4:	00824004 	sllv	t0,v0,a0
  46eec8:	00043023 	negu	a2,a0
  46eecc:	00c33006 	srlv	a2,v1,a2
  46eed0:	01064025 	or	t0,t0,a2
  46eed4:	00834804 	sllv	t1,v1,a0
  46eed8:	01002021 	move	a0,t0
  46eedc:	01202821 	move	a1,t1
  46eee0:	8fc20018 	lw	v0,24(s8)
  46eee4:	8fc3001c 	lw	v1,28(s8)
  46eee8:	00822024 	and	a0,a0,v0
  46eeec:	00a32824 	and	a1,a1,v1
  46eef0:	00801021 	move	v0,a0
  46eef4:	00451025 	or	v0,v0,a1
  46eef8:	1040001c 	beqz	v0,46ef6c <parse_ipsec_transform+0x414>
  46eefc:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "repeated %s attribute in IPsec Transform %u"
  46ef00:	97c20030 	lhu	v0,48(s8)
  46ef04:	8f8485d8 	lw	a0,-31272(gp)
  46ef08:	00402821 	move	a1,v0
  46ef0c:	8f9987fc 	lw	t9,-30724(gp)
  46ef10:	00000000 	nop
  46ef14:	0320f809 	jalr	t9
  46ef18:	00000000 	nop
  46ef1c:	8fdc0010 	lw	gp,16(s8)
  46ef20:	00401821 	move	v1,v0
  46ef24:	8fc20098 	lw	v0,152(s8)
  46ef28:	00000000 	nop
  46ef2c:	90420004 	lbu	v0,4(v0)
  46ef30:	24040003 	li	a0,3
  46ef34:	8f85802c 	lw	a1,-32724(gp)
  46ef38:	00000000 	nop
  46ef3c:	24a55150 	addiu	a1,a1,20816
  46ef40:	00603021 	move	a2,v1
  46ef44:	00403821 	move	a3,v0
  46ef48:	8f998c48 	lw	t9,-29624(gp)
  46ef4c:	00000000 	nop
  46ef50:	0320f809 	jalr	t9
  46ef54:	00000000 	nop
  46ef58:	8fdc0010 	lw	gp,16(s8)
  46ef5c:	00000000 	nop
		, enum_show(&ipsec_attr_names, a.isaat_af_type)
		, trans->isat_transnum);
	    return FALSE;
  46ef60:	00001021 	move	v0,zero
  46ef64:	10000302 	b	46fb70 <parse_ipsec_transform+0x1018>
  46ef68:	00000000 	nop
	}

	seen_attrs |= LELEM(a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK);
  46ef6c:	97c20030 	lhu	v0,48(s8)
  46ef70:	00000000 	nop
  46ef74:	30427fff 	andi	v0,v0,0x7fff
  46ef78:	3044ffff 	andi	a0,v0,0xffff
  46ef7c:	24020000 	li	v0,0
  46ef80:	24030001 	li	v1,1
  46ef84:	00043680 	sll	a2,a0,0x1a
  46ef88:	04c10004 	bgez	a2,46ef9c <parse_ipsec_transform+0x444>
  46ef8c:	00000000 	nop
  46ef90:	00834004 	sllv	t0,v1,a0
  46ef94:	10000007 	b	46efb4 <parse_ipsec_transform+0x45c>
  46ef98:	00004821 	move	t1,zero
  46ef9c:	10c00004 	beqz	a2,46efb0 <parse_ipsec_transform+0x458>
  46efa0:	00824004 	sllv	t0,v0,a0
  46efa4:	00043023 	negu	a2,a0
  46efa8:	00c33006 	srlv	a2,v1,a2
  46efac:	01064025 	or	t0,t0,a2
  46efb0:	00834804 	sllv	t1,v1,a0
  46efb4:	01002021 	move	a0,t0
  46efb8:	01202821 	move	a1,t1
  46efbc:	8fc20018 	lw	v0,24(s8)
  46efc0:	8fc3001c 	lw	v1,28(s8)
  46efc4:	00441025 	or	v0,v0,a0
  46efc8:	00651825 	or	v1,v1,a1
  46efcc:	afc20018 	sw	v0,24(s8)
  46efd0:	afc3001c 	sw	v1,28(s8)

	val = a.isaat_lv;
  46efd4:	97c20032 	lhu	v0,50(s8)
  46efd8:	00000000 	nop
  46efdc:	afc2005c 	sw	v0,92(s8)

	vdesc  = ipsec_attr_val_descs[a.isaat_af_type & ISAKMP_ATTR_RTYPE_MASK];
  46efe0:	97c20030 	lhu	v0,48(s8)
  46efe4:	00000000 	nop
  46efe8:	30427fff 	andi	v0,v0,0x7fff
  46efec:	3042ffff 	andi	v0,v0,0xffff
  46eff0:	00021080 	sll	v0,v0,0x2
  46eff4:	8f8181e4 	lw	at,-32284(gp)
  46eff8:	00000000 	nop
  46effc:	00221021 	addu	v0,at,v0
  46f000:	8c420000 	lw	v0,0(v0)
  46f004:	00000000 	nop
  46f008:	afc20058 	sw	v0,88(s8)
	if (vdesc != NULL)
  46f00c:	8fc20058 	lw	v0,88(s8)
  46f010:	00000000 	nop
  46f014:	10400041 	beqz	v0,46f11c <parse_ipsec_transform+0x5c4>
  46f018:	00000000 	nop
	{
	    if (enum_name(vdesc, val) == NULL)
  46f01c:	8fc40058 	lw	a0,88(s8)
  46f020:	8fc5005c 	lw	a1,92(s8)
  46f024:	8f9984bc 	lw	t9,-31556(gp)
  46f028:	00000000 	nop
  46f02c:	0320f809 	jalr	t9
  46f030:	00000000 	nop
  46f034:	8fdc0010 	lw	gp,16(s8)
  46f038:	14400018 	bnez	v0,46f09c <parse_ipsec_transform+0x544>
  46f03c:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "invalid value %u for attribute %s in IPsec Transform"
  46f040:	97c20030 	lhu	v0,48(s8)
  46f044:	8f8485d8 	lw	a0,-31272(gp)
  46f048:	00402821 	move	a1,v0
  46f04c:	8f9987fc 	lw	t9,-30724(gp)
  46f050:	00000000 	nop
  46f054:	0320f809 	jalr	t9
  46f058:	00000000 	nop
  46f05c:	8fdc0010 	lw	gp,16(s8)
  46f060:	24040003 	li	a0,3
  46f064:	8f85802c 	lw	a1,-32724(gp)
  46f068:	00000000 	nop
  46f06c:	24a5517c 	addiu	a1,a1,20860
  46f070:	8fc6005c 	lw	a2,92(s8)
  46f074:	00403821 	move	a3,v0
  46f078:	8f998c48 	lw	t9,-29624(gp)
  46f07c:	00000000 	nop
  46f080:	0320f809 	jalr	t9
  46f084:	00000000 	nop
  46f088:	8fdc0010 	lw	gp,16(s8)
  46f08c:	00000000 	nop
		    , (unsigned)val, enum_show(&ipsec_attr_names, a.isaat_af_type));
		return FALSE;
  46f090:	00001021 	move	v0,zero
  46f094:	100002b6 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f098:	00000000 	nop
	    }
	    DBG(DBG_PARSING
  46f09c:	8f8284f8 	lw	v0,-31496(gp)
  46f0a0:	00000000 	nop
  46f0a4:	8c420000 	lw	v0,0(v0)
  46f0a8:	00000000 	nop
  46f0ac:	30420004 	andi	v0,v0,0x4
  46f0b0:	1040001a 	beqz	v0,46f11c <parse_ipsec_transform+0x5c4>
  46f0b4:	00000000 	nop
  46f0b8:	97c20030 	lhu	v0,48(s8)
  46f0bc:	00000000 	nop
  46f0c0:	30428000 	andi	v0,v0,0x8000
  46f0c4:	3042ffff 	andi	v0,v0,0xffff
  46f0c8:	10400014 	beqz	v0,46f11c <parse_ipsec_transform+0x5c4>
  46f0cc:	00000000 	nop
  46f0d0:	8fc40058 	lw	a0,88(s8)
  46f0d4:	8fc5005c 	lw	a1,92(s8)
  46f0d8:	8f9987fc 	lw	t9,-30724(gp)
  46f0dc:	00000000 	nop
  46f0e0:	0320f809 	jalr	t9
  46f0e4:	00000000 	nop
  46f0e8:	8fdc0010 	lw	gp,16(s8)
  46f0ec:	00000000 	nop
  46f0f0:	8f84802c 	lw	a0,-32724(gp)
  46f0f4:	00000000 	nop
  46f0f8:	24844bfc 	addiu	a0,a0,19452
  46f0fc:	8fc5005c 	lw	a1,92(s8)
  46f100:	00403021 	move	a2,v0
  46f104:	8f9983b8 	lw	t9,-31816(gp)
  46f108:	00000000 	nop
  46f10c:	0320f809 	jalr	t9
  46f110:	00000000 	nop
  46f114:	8fdc0010 	lw	gp,16(s8)
  46f118:	00000000 	nop
		, if ((a.isaat_af_type & ISAKMP_ATTR_AF_MASK) == ISAKMP_ATTR_AF_TV)
		    DBG_log("   [%u is %s]"
			, (unsigned)val, enum_show(vdesc, val)));
	}

	switch (a.isaat_af_type)
  46f11c:	97c90030 	lhu	t1,48(s8)
  46f120:	00000000 	nop
  46f124:	afc90080 	sw	t1,128(s8)
  46f128:	34028003 	li	v0,0x8003
  46f12c:	8fc30080 	lw	v1,128(s8)
  46f130:	00000000 	nop
  46f134:	106200d9 	beq	v1,v0,46f49c <parse_ipsec_transform+0x944>
  46f138:	00000000 	nop
  46f13c:	8fc80080 	lw	t0,128(s8)
  46f140:	00000000 	nop
  46f144:	0048102a 	slt	v0,v0,t0
  46f148:	14400012 	bnez	v0,46f194 <parse_ipsec_transform+0x63c>
  46f14c:	00000000 	nop
  46f150:	34028001 	li	v0,0x8001
  46f154:	8fc90080 	lw	t1,128(s8)
  46f158:	00000000 	nop
  46f15c:	11220023 	beq	t1,v0,46f1ec <parse_ipsec_transform+0x694>
  46f160:	00000000 	nop
  46f164:	8fc30080 	lw	v1,128(s8)
  46f168:	00000000 	nop
  46f16c:	0043102a 	slt	v0,v0,v1
  46f170:	14400074 	bnez	v0,46f344 <parse_ipsec_transform+0x7ec>
  46f174:	00000000 	nop
  46f178:	24020002 	li	v0,2
  46f17c:	8fc80080 	lw	t0,128(s8)
  46f180:	00000000 	nop
  46f184:	11020066 	beq	t0,v0,46f320 <parse_ipsec_transform+0x7c8>
  46f188:	00000000 	nop
  46f18c:	100001d5 	b	46f8e4 <parse_ipsec_transform+0xd8c>
  46f190:	00000000 	nop
  46f194:	34028005 	li	v0,0x8005
  46f198:	8fc90080 	lw	t1,128(s8)
  46f19c:	00000000 	nop
  46f1a0:	112201be 	beq	t1,v0,46f89c <parse_ipsec_transform+0xd44>
  46f1a4:	00000000 	nop
  46f1a8:	8fc30080 	lw	v1,128(s8)
  46f1ac:	00000000 	nop
  46f1b0:	0062102a 	slt	v0,v1,v0
  46f1b4:	144000e2 	bnez	v0,46f540 <parse_ipsec_transform+0x9e8>
  46f1b8:	00000000 	nop
  46f1bc:	34028006 	li	v0,0x8006
  46f1c0:	8fc80080 	lw	t0,128(s8)
  46f1c4:	00000000 	nop
  46f1c8:	110201ba 	beq	t0,v0,46f8b4 <parse_ipsec_transform+0xd5c>
  46f1cc:	00000000 	nop
  46f1d0:	34028007 	li	v0,0x8007
  46f1d4:	8fc90080 	lw	t1,128(s8)
  46f1d8:	00000000 	nop
  46f1dc:	112201bb 	beq	t1,v0,46f8cc <parse_ipsec_transform+0xd74>
  46f1e0:	00000000 	nop
  46f1e4:	100001bf 	b	46f8e4 <parse_ipsec_transform+0xd8c>
  46f1e8:	00000000 	nop
	{
	    case SA_LIFE_TYPE | ISAKMP_ATTR_AF_TV:
		ipcomp_inappropriate = FALSE;
  46f1ec:	afc00060 	sw	zero,96(s8)
		if (seen_durations & LELEM(val))
  46f1f0:	24020000 	li	v0,0
  46f1f4:	24030001 	li	v1,1
  46f1f8:	8fc4005c 	lw	a0,92(s8)
  46f1fc:	00000000 	nop
  46f200:	00043680 	sll	a2,a0,0x1a
  46f204:	04c10004 	bgez	a2,46f218 <parse_ipsec_transform+0x6c0>
  46f208:	00000000 	nop
  46f20c:	00834004 	sllv	t0,v1,a0
  46f210:	10000007 	b	46f230 <parse_ipsec_transform+0x6d8>
  46f214:	00004821 	move	t1,zero
  46f218:	10c00004 	beqz	a2,46f22c <parse_ipsec_transform+0x6d4>
  46f21c:	00824004 	sllv	t0,v0,a0
  46f220:	00043023 	negu	a2,a0
  46f224:	00c33006 	srlv	a2,v1,a2
  46f228:	01064025 	or	t0,t0,a2
  46f22c:	00834804 	sllv	t1,v1,a0
  46f230:	01002021 	move	a0,t0
  46f234:	01202821 	move	a1,t1
  46f238:	8fc20020 	lw	v0,32(s8)
  46f23c:	8fc30024 	lw	v1,36(s8)
  46f240:	00822024 	and	a0,a0,v0
  46f244:	00a32824 	and	a1,a1,v1
  46f248:	00801021 	move	v0,a0
  46f24c:	00451025 	or	v0,v0,a1
  46f250:	10400016 	beqz	v0,46f2ac <parse_ipsec_transform+0x754>
  46f254:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "attribute SA_LIFE_TYPE value %s repeated in message"
  46f258:	8f8489f4 	lw	a0,-30220(gp)
  46f25c:	8fc5005c 	lw	a1,92(s8)
  46f260:	8f9987fc 	lw	t9,-30724(gp)
  46f264:	00000000 	nop
  46f268:	0320f809 	jalr	t9
  46f26c:	00000000 	nop
  46f270:	8fdc0010 	lw	gp,16(s8)
  46f274:	24040003 	li	a0,3
  46f278:	8f85802c 	lw	a1,-32724(gp)
  46f27c:	00000000 	nop
  46f280:	24a551b4 	addiu	a1,a1,20916
  46f284:	00403021 	move	a2,v0
  46f288:	8f998c48 	lw	t9,-29624(gp)
  46f28c:	00000000 	nop
  46f290:	0320f809 	jalr	t9
  46f294:	00000000 	nop
  46f298:	8fdc0010 	lw	gp,16(s8)
  46f29c:	00000000 	nop
			, enum_show(&sa_lifetime_names, val));
		    return FALSE;
  46f2a0:	00001021 	move	v0,zero
  46f2a4:	10000232 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f2a8:	00000000 	nop
		}
		seen_durations |= LELEM(val);
  46f2ac:	24020000 	li	v0,0
  46f2b0:	24030001 	li	v1,1
  46f2b4:	8fc4005c 	lw	a0,92(s8)
  46f2b8:	00000000 	nop
  46f2bc:	00043680 	sll	a2,a0,0x1a
  46f2c0:	04c10004 	bgez	a2,46f2d4 <parse_ipsec_transform+0x77c>
  46f2c4:	00000000 	nop
  46f2c8:	00834004 	sllv	t0,v1,a0
  46f2cc:	10000007 	b	46f2ec <parse_ipsec_transform+0x794>
  46f2d0:	00004821 	move	t1,zero
  46f2d4:	10c00004 	beqz	a2,46f2e8 <parse_ipsec_transform+0x790>
  46f2d8:	00824004 	sllv	t0,v0,a0
  46f2dc:	00043023 	negu	a2,a0
  46f2e0:	00c33006 	srlv	a2,v1,a2
  46f2e4:	01064025 	or	t0,t0,a2
  46f2e8:	00834804 	sllv	t1,v1,a0
  46f2ec:	01002021 	move	a0,t0
  46f2f0:	01202821 	move	a1,t1
  46f2f4:	8fc20020 	lw	v0,32(s8)
  46f2f8:	8fc30024 	lw	v1,36(s8)
  46f2fc:	00441025 	or	v0,v0,a0
  46f300:	00651825 	or	v1,v1,a1
  46f304:	afc20020 	sw	v0,32(s8)
  46f308:	afc30024 	sw	v1,36(s8)
		life_type = val;
  46f30c:	97c2005e 	lhu	v0,94(s8)
  46f310:	00000000 	nop
  46f314:	a7c20028 	sh	v0,40(s8)
		break;
  46f318:	10000188 	b	46f93c <parse_ipsec_transform+0xde4>
  46f31c:	00000000 	nop
	    case SA_LIFE_DURATION | ISAKMP_ATTR_AF_TLV:
		val = decode_long_duration(&attr_pbs);
  46f320:	27c40038 	addiu	a0,s8,56
  46f324:	8f998040 	lw	t9,-32704(gp)
  46f328:	00000000 	nop
  46f32c:	2739cde0 	addiu	t9,t9,-12832
  46f330:	00000000 	nop
  46f334:	0320f809 	jalr	t9
  46f338:	00000000 	nop
  46f33c:	8fdc0010 	lw	gp,16(s8)
  46f340:	afc2005c 	sw	v0,92(s8)
		/* fall through */
	    case SA_LIFE_DURATION | ISAKMP_ATTR_AF_TV:
		ipcomp_inappropriate = FALSE;
  46f344:	afc00060 	sw	zero,96(s8)
		if ((seen_attrs & LELEM(SA_LIFE_DURATION)) == 0)
  46f348:	8fc40018 	lw	a0,24(s8)
  46f34c:	8fc5001c 	lw	a1,28(s8)
  46f350:	24020000 	li	v0,0
  46f354:	24030004 	li	v1,4
  46f358:	00822024 	and	a0,a0,v0
  46f35c:	00a32824 	and	a1,a1,v1
  46f360:	00801021 	move	v0,a0
  46f364:	00451025 	or	v0,v0,a1
  46f368:	1440000e 	bnez	v0,46f3a4 <parse_ipsec_transform+0x84c>
  46f36c:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "SA_LIFE_DURATION IPsec attribute not preceded by SA_LIFE_TYPE attribute");
  46f370:	24040003 	li	a0,3
  46f374:	8f85802c 	lw	a1,-32724(gp)
  46f378:	00000000 	nop
  46f37c:	24a551e8 	addiu	a1,a1,20968
  46f380:	8f998c48 	lw	t9,-29624(gp)
  46f384:	00000000 	nop
  46f388:	0320f809 	jalr	t9
  46f38c:	00000000 	nop
  46f390:	8fdc0010 	lw	gp,16(s8)
  46f394:	00000000 	nop
		    return FALSE;
  46f398:	00001021 	move	v0,zero
  46f39c:	100001f4 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f3a0:	00000000 	nop
		}
		seen_attrs &= ~(LELEM(SA_LIFE_DURATION) | LELEM(SA_LIFE_TYPE));
  46f3a4:	8fc40018 	lw	a0,24(s8)
  46f3a8:	8fc5001c 	lw	a1,28(s8)
  46f3ac:	2402ffff 	li	v0,-1
  46f3b0:	2403fff9 	li	v1,-7
  46f3b4:	00821024 	and	v0,a0,v0
  46f3b8:	00a31824 	and	v1,a1,v1
  46f3bc:	afc20018 	sw	v0,24(s8)
  46f3c0:	afc3001c 	sw	v1,28(s8)

		switch (life_type)
  46f3c4:	97c90028 	lhu	t1,40(s8)
  46f3c8:	00000000 	nop
  46f3cc:	afc90078 	sw	t1,120(s8)
  46f3d0:	24020001 	li	v0,1
  46f3d4:	8fc30078 	lw	v1,120(s8)
  46f3d8:	00000000 	nop
  46f3dc:	10620013 	beq	v1,v0,46f42c <parse_ipsec_transform+0x8d4>
  46f3e0:	00000000 	nop
  46f3e4:	24020002 	li	v0,2
  46f3e8:	8fc80078 	lw	t0,120(s8)
  46f3ec:	00000000 	nop
  46f3f0:	11020024 	beq	t0,v0,46f484 <parse_ipsec_transform+0x92c>
  46f3f4:	00000000 	nop
		{
		    case SA_LIFE_TYPE_SECONDS:
			/* silently limit duration to our maximum */
			attrs->life_seconds = val <= SA_LIFE_DURATION_MAXIMUM
			    ? val : SA_LIFE_DURATION_MAXIMUM;
			break;
		    case SA_LIFE_TYPE_KBYTES:
			attrs->life_kilobytes = val;
			break;
		    default:
			impossible();
  46f3f8:	8f84802c 	lw	a0,-32724(gp)
  46f3fc:	00000000 	nop
  46f400:	24844920 	addiu	a0,a0,18720
  46f404:	8f85802c 	lw	a1,-32724(gp)
  46f408:	00000000 	nop
  46f40c:	24a54904 	addiu	a1,a1,18692
  46f410:	24060636 	li	a2,1590
  46f414:	8f998bb8 	lw	t9,-29768(gp)
  46f418:	00000000 	nop
  46f41c:	0320f809 	jalr	t9
  46f420:	00000000 	nop
  46f424:	8fdc0010 	lw	gp,16(s8)
  46f428:	00000000 	nop
  46f42c:	8fc9009c 	lw	t1,156(s8)
  46f430:	00000000 	nop
  46f434:	afc90070 	sw	t1,112(s8)
  46f438:	8fc2005c 	lw	v0,92(s8)
  46f43c:	00000000 	nop
  46f440:	afc20074 	sw	v0,116(s8)
  46f444:	3c020001 	lui	v0,0x1
  46f448:	34425180 	ori	v0,v0,0x5180
  46f44c:	8fc30074 	lw	v1,116(s8)
  46f450:	00000000 	nop
  46f454:	0043102b 	sltu	v0,v0,v1
  46f458:	10400004 	beqz	v0,46f46c <parse_ipsec_transform+0x914>
  46f45c:	00000000 	nop
  46f460:	3c080001 	lui	t0,0x1
  46f464:	35085180 	ori	t0,t0,0x5180
  46f468:	afc80074 	sw	t0,116(s8)
  46f46c:	8fc20074 	lw	v0,116(s8)
  46f470:	8fc90070 	lw	t1,112(s8)
  46f474:	00000000 	nop
  46f478:	ad220008 	sw	v0,8(t1)
  46f47c:	1000012f 	b	46f93c <parse_ipsec_transform+0xde4>
  46f480:	00000000 	nop
  46f484:	8fc3005c 	lw	v1,92(s8)
  46f488:	8fc2009c 	lw	v0,156(s8)
  46f48c:	00000000 	nop
  46f490:	ac43000c 	sw	v1,12(v0)
  46f494:	10000129 	b	46f93c <parse_ipsec_transform+0xde4>
  46f498:	00000000 	nop
		}
		break;
	    case GROUP_DESCRIPTION | ISAKMP_ATTR_AF_TV:
		if (is_ipcomp)
  46f49c:	8fc200b8 	lw	v0,184(s8)
  46f4a0:	00000000 	nop
  46f4a4:	1040000c 	beqz	v0,46f4d8 <parse_ipsec_transform+0x980>
  46f4a8:	00000000 	nop
		{
		    /* Accept reluctantly.  Should not happen, according to
		     * draft-shacham-ippcp-rfc2393bis-05.txt 4.1.
		     */
		    ipcomp_inappropriate = FALSE;
  46f4ac:	afc00060 	sw	zero,96(s8)
		    loglog(RC_COMMENT
  46f4b0:	00002021 	move	a0,zero
  46f4b4:	8f85802c 	lw	a1,-32724(gp)
  46f4b8:	00000000 	nop
  46f4bc:	24a55230 	addiu	a1,a1,21040
  46f4c0:	8f998c48 	lw	t9,-29624(gp)
  46f4c4:	00000000 	nop
  46f4c8:	0320f809 	jalr	t9
  46f4cc:	00000000 	nop
  46f4d0:	8fdc0010 	lw	gp,16(s8)
  46f4d4:	00000000 	nop
			, "IPCA (IPcomp SA) contains GROUP_DESCRIPTION."
			"  Ignoring inapproprate attribute.");
		}
		pfs_group = lookup_group(val);
  46f4d8:	97c2005e 	lhu	v0,94(s8)
  46f4dc:	00000000 	nop
  46f4e0:	00402021 	move	a0,v0
  46f4e4:	8f998b88 	lw	t9,-29816(gp)
  46f4e8:	00000000 	nop
  46f4ec:	0320f809 	jalr	t9
  46f4f0:	00000000 	nop
  46f4f4:	8fdc0010 	lw	gp,16(s8)
  46f4f8:	afc2002c 	sw	v0,44(s8)
		if (pfs_group == NULL)
  46f4fc:	8fc2002c 	lw	v0,44(s8)
  46f500:	00000000 	nop
  46f504:	1440010d 	bnez	v0,46f93c <parse_ipsec_transform+0xde4>
  46f508:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "only OAKLEY_GROUP_MODP768,1024,1536,2048,3072,4096,6144,8192 supported for PFS");
  46f50c:	24040003 	li	a0,3
  46f510:	8f85802c 	lw	a1,-32724(gp)
  46f514:	00000000 	nop
  46f518:	24a55280 	addiu	a1,a1,21120
  46f51c:	8f998c48 	lw	t9,-29624(gp)
  46f520:	00000000 	nop
  46f524:	0320f809 	jalr	t9
  46f528:	00000000 	nop
  46f52c:	8fdc0010 	lw	gp,16(s8)
  46f530:	00000000 	nop
		    return FALSE;
  46f534:	00001021 	move	v0,zero
  46f538:	1000018d 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f53c:	00000000 	nop
		}
		break;
	    case ENCAPSULATION_MODE | ISAKMP_ATTR_AF_TV:
		ipcomp_inappropriate = FALSE;
  46f540:	afc00060 	sw	zero,96(s8)
#ifdef NAT_TRAVERSAL
		switch (val) {
  46f544:	8fc3005c 	lw	v1,92(s8)
  46f548:	00000000 	nop
  46f54c:	afc3007c 	sw	v1,124(s8)
  46f550:	8fc8007c 	lw	t0,124(s8)
  46f554:	00000000 	nop
  46f558:	2d020005 	sltiu	v0,t0,5
  46f55c:	1040000d 	beqz	v0,46f594 <parse_ipsec_transform+0xa3c>
  46f560:	00000000 	nop
  46f564:	8fc9007c 	lw	t1,124(s8)
  46f568:	00000000 	nop
  46f56c:	2d220003 	sltiu	v0,t1,3
  46f570:	10400075 	beqz	v0,46f748 <parse_ipsec_transform+0xbf0>
  46f574:	00000000 	nop
  46f578:	8fc3007c 	lw	v1,124(s8)
  46f57c:	00000000 	nop
  46f580:	2c620001 	sltiu	v0,v1,1
  46f584:	144000b7 	bnez	v0,46f864 <parse_ipsec_transform+0xd0c>
  46f588:	00000000 	nop
  46f58c:	1000000f 	b	46f5cc <parse_ipsec_transform+0xa74>
  46f590:	00000000 	nop
  46f594:	3402f004 	li	v0,0xf004
  46f598:	8fc8007c 	lw	t0,124(s8)
  46f59c:	00000000 	nop
  46f5a0:	0048102b 	sltu	v0,v0,t0
  46f5a4:	144000af 	bnez	v0,46f864 <parse_ipsec_transform+0xd0c>
  46f5a8:	00000000 	nop
  46f5ac:	3402f003 	li	v0,0xf003
  46f5b0:	8fc9007c 	lw	t1,124(s8)
  46f5b4:	00000000 	nop
  46f5b8:	0122102b 	sltu	v0,t1,v0
  46f5bc:	144000a9 	bnez	v0,46f864 <parse_ipsec_transform+0xd0c>
  46f5c0:	00000000 	nop
  46f5c4:	10000020 	b	46f648 <parse_ipsec_transform+0xaf0>
  46f5c8:	00000000 	nop
			case ENCAPSULATION_MODE_TUNNEL:
			case ENCAPSULATION_MODE_TRANSPORT:
				if (st->nat_traversal & NAT_T_DETECTED) {
  46f5cc:	8fc200bc 	lw	v0,188(s8)
  46f5d0:	00000000 	nop
  46f5d4:	8c430264 	lw	v1,612(v0)
  46f5d8:	3c02c000 	lui	v0,0xc000
  46f5dc:	00621024 	and	v0,v1,v0
  46f5e0:	10400013 	beqz	v0,46f630 <parse_ipsec_transform+0xad8>
  46f5e4:	00000000 	nop
					loglog(RC_LOG_SERIOUS,
  46f5e8:	8f8488d0 	lw	a0,-30512(gp)
  46f5ec:	8fc5005c 	lw	a1,92(s8)
  46f5f0:	8f9984bc 	lw	t9,-31556(gp)
  46f5f4:	00000000 	nop
  46f5f8:	0320f809 	jalr	t9
  46f5fc:	00000000 	nop
  46f600:	8fdc0010 	lw	gp,16(s8)
  46f604:	24040003 	li	a0,3
  46f608:	8f85802c 	lw	a1,-32724(gp)
  46f60c:	00000000 	nop
  46f610:	24a552d0 	addiu	a1,a1,21200
  46f614:	00403021 	move	a2,v0
  46f618:	8f998c48 	lw	t9,-29624(gp)
  46f61c:	00000000 	nop
  46f620:	0320f809 	jalr	t9
  46f624:	00000000 	nop
  46f628:	8fdc0010 	lw	gp,16(s8)
  46f62c:	00000000 	nop
						"%s must only be used if "
						"NAT-Traversal is not detected",
						enum_name(&enc_mode_names, val));
					/*
					 * Accept it anyway because SSH-Sentinel does not
					 * use UDP_TUNNEL or UDP_TRANSPORT for the diagnostic.
					 *
					 * remove when SSH-Sentinel is fixed
					 */
#ifdef I_DONT_CARE_OF_SSH_SENTINEL
					return FALSE;
#endif
				}
				attrs->encapsulation = val;
  46f630:	97c3005e 	lhu	v1,94(s8)
  46f634:	8fc2009c 	lw	v0,156(s8)
  46f638:	00000000 	nop
  46f63c:	a4430010 	sh	v1,16(v0)
				break;
  46f640:	100000be 	b	46f93c <parse_ipsec_transform+0xde4>
  46f644:	00000000 	nop
			case ENCAPSULATION_MODE_UDP_TRANSPORT_DRAFTS:
#ifndef I_KNOW_TRANSPORT_MODE_HAS_SECURITY_CONCERN_BUT_I_WANT_IT
				loglog(RC_LOG_SERIOUS,
					"NAT-Traversal: Transport mode disabled due "
					"to security concerns");
				return FALSE;
				break;
#endif
			case ENCAPSULATION_MODE_UDP_TUNNEL_DRAFTS:
				if (st->nat_traversal & NAT_T_WITH_RFC_VALUES) {
  46f648:	8fc200bc 	lw	v0,188(s8)
  46f64c:	00000000 	nop
  46f650:	8c420264 	lw	v0,612(v0)
  46f654:	00000000 	nop
  46f658:	30420008 	andi	v0,v0,0x8
  46f65c:	10400016 	beqz	v0,46f6b8 <parse_ipsec_transform+0xb60>
  46f660:	00000000 	nop
					loglog(RC_LOG_SERIOUS,
  46f664:	8f8488d0 	lw	a0,-30512(gp)
  46f668:	8fc5005c 	lw	a1,92(s8)
  46f66c:	8f9984bc 	lw	t9,-31556(gp)
  46f670:	00000000 	nop
  46f674:	0320f809 	jalr	t9
  46f678:	00000000 	nop
  46f67c:	8fdc0010 	lw	gp,16(s8)
  46f680:	24040003 	li	a0,3
  46f684:	8f85802c 	lw	a1,-32724(gp)
  46f688:	00000000 	nop
  46f68c:	24a55308 	addiu	a1,a1,21256
  46f690:	00403021 	move	a2,v0
  46f694:	8f998c48 	lw	t9,-29624(gp)
  46f698:	00000000 	nop
  46f69c:	0320f809 	jalr	t9
  46f6a0:	00000000 	nop
  46f6a4:	8fdc0010 	lw	gp,16(s8)
  46f6a8:	00000000 	nop
						"%s must only be used with old IETF drafts",
						enum_name(&enc_mode_names, val));
					return FALSE;
  46f6ac:	00001021 	move	v0,zero
  46f6b0:	1000012f 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f6b4:	00000000 	nop
				}
				else if (st->nat_traversal & NAT_T_DETECTED) {
  46f6b8:	8fc200bc 	lw	v0,188(s8)
  46f6bc:	00000000 	nop
  46f6c0:	8c430264 	lw	v1,612(v0)
  46f6c4:	3c02c000 	lui	v0,0xc000
  46f6c8:	00621024 	and	v0,v1,v0
  46f6cc:	10400009 	beqz	v0,46f6f4 <parse_ipsec_transform+0xb9c>
  46f6d0:	00000000 	nop
					attrs->encapsulation = val - ENCAPSULATION_MODE_UDP_TUNNEL_DRAFTS + ENCAPSULATION_MODE_TUNNEL;
  46f6d4:	97c2005e 	lhu	v0,94(s8)
  46f6d8:	00000000 	nop
  46f6dc:	24430ffe 	addiu	v1,v0,4094
  46f6e0:	8fc2009c 	lw	v0,156(s8)
  46f6e4:	00000000 	nop
  46f6e8:	a4430010 	sh	v1,16(v0)
  46f6ec:	10000093 	b	46f93c <parse_ipsec_transform+0xde4>
  46f6f0:	00000000 	nop
				}
				else {
					loglog(RC_LOG_SERIOUS,
  46f6f4:	8f8488d0 	lw	a0,-30512(gp)
  46f6f8:	8fc5005c 	lw	a1,92(s8)
  46f6fc:	8f9984bc 	lw	t9,-31556(gp)
  46f700:	00000000 	nop
  46f704:	0320f809 	jalr	t9
  46f708:	00000000 	nop
  46f70c:	8fdc0010 	lw	gp,16(s8)
  46f710:	24040003 	li	a0,3
  46f714:	8f85802c 	lw	a1,-32724(gp)
  46f718:	00000000 	nop
  46f71c:	24a55334 	addiu	a1,a1,21300
  46f720:	00403021 	move	a2,v0
  46f724:	8f998c48 	lw	t9,-29624(gp)
  46f728:	00000000 	nop
  46f72c:	0320f809 	jalr	t9
  46f730:	00000000 	nop
  46f734:	8fdc0010 	lw	gp,16(s8)
  46f738:	00000000 	nop
						"%s must only be used if "
						"NAT-Traversal is detected",
						enum_name(&enc_mode_names, val));
					return FALSE;
  46f73c:	00001021 	move	v0,zero
  46f740:	1000010b 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f744:	00000000 	nop
				}
				break;
			case ENCAPSULATION_MODE_UDP_TRANSPORT_RFC:
#ifndef I_KNOW_TRANSPORT_MODE_HAS_SECURITY_CONCERN_BUT_I_WANT_IT
				loglog(RC_LOG_SERIOUS,
					"NAT-Traversal: Transport mode disabled due "
					"to security concerns");
				return FALSE;
				break;
#endif
			case ENCAPSULATION_MODE_UDP_TUNNEL_RFC:
				if ((st->nat_traversal & NAT_T_DETECTED) &&
					(st->nat_traversal & NAT_T_WITH_RFC_VALUES)) {
  46f748:	8fc200bc 	lw	v0,188(s8)
  46f74c:	00000000 	nop
  46f750:	8c430264 	lw	v1,612(v0)
  46f754:	3c02c000 	lui	v0,0xc000
  46f758:	00621024 	and	v0,v1,v0
  46f75c:	10400010 	beqz	v0,46f7a0 <parse_ipsec_transform+0xc48>
  46f760:	00000000 	nop
  46f764:	8fc200bc 	lw	v0,188(s8)
  46f768:	00000000 	nop
  46f76c:	8c420264 	lw	v0,612(v0)
  46f770:	00000000 	nop
  46f774:	30420008 	andi	v0,v0,0x8
  46f778:	10400009 	beqz	v0,46f7a0 <parse_ipsec_transform+0xc48>
  46f77c:	00000000 	nop
					attrs->encapsulation = val - ENCAPSULATION_MODE_UDP_TUNNEL_RFC + ENCAPSULATION_MODE_TUNNEL;
  46f780:	97c2005e 	lhu	v0,94(s8)
  46f784:	3403fffe 	li	v1,0xfffe
  46f788:	00621821 	addu	v1,v1,v0
  46f78c:	8fc2009c 	lw	v0,156(s8)
  46f790:	00000000 	nop
  46f794:	a4430010 	sh	v1,16(v0)
  46f798:	10000068 	b	46f93c <parse_ipsec_transform+0xde4>
  46f79c:	00000000 	nop
				}
				else if (st->nat_traversal & NAT_T_DETECTED) {
  46f7a0:	8fc200bc 	lw	v0,188(s8)
  46f7a4:	00000000 	nop
  46f7a8:	8c430264 	lw	v1,612(v0)
  46f7ac:	3c02c000 	lui	v0,0xc000
  46f7b0:	00621024 	and	v0,v1,v0
  46f7b4:	10400016 	beqz	v0,46f810 <parse_ipsec_transform+0xcb8>
  46f7b8:	00000000 	nop
					loglog(RC_LOG_SERIOUS,
  46f7bc:	8f8488d0 	lw	a0,-30512(gp)
  46f7c0:	8fc5005c 	lw	a1,92(s8)
  46f7c4:	8f9984bc 	lw	t9,-31556(gp)
  46f7c8:	00000000 	nop
  46f7cc:	0320f809 	jalr	t9
  46f7d0:	00000000 	nop
  46f7d4:	8fdc0010 	lw	gp,16(s8)
  46f7d8:	24040003 	li	a0,3
  46f7dc:	8f85802c 	lw	a1,-32724(gp)
  46f7e0:	00000000 	nop
  46f7e4:	24a55368 	addiu	a1,a1,21352
  46f7e8:	00403021 	move	a2,v0
  46f7ec:	8f998c48 	lw	t9,-29624(gp)
  46f7f0:	00000000 	nop
  46f7f4:	0320f809 	jalr	t9
  46f7f8:	00000000 	nop
  46f7fc:	8fdc0010 	lw	gp,16(s8)
  46f800:	00000000 	nop
						"%s must only be used with NAT-T RFC",
						enum_name(&enc_mode_names, val));
					return FALSE;
  46f804:	00001021 	move	v0,zero
  46f808:	100000d9 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f80c:	00000000 	nop
				}
				else {
					loglog(RC_LOG_SERIOUS,
  46f810:	8f8488d0 	lw	a0,-30512(gp)
  46f814:	8fc5005c 	lw	a1,92(s8)
  46f818:	8f9984bc 	lw	t9,-31556(gp)
  46f81c:	00000000 	nop
  46f820:	0320f809 	jalr	t9
  46f824:	00000000 	nop
  46f828:	8fdc0010 	lw	gp,16(s8)
  46f82c:	24040003 	li	a0,3
  46f830:	8f85802c 	lw	a1,-32724(gp)
  46f834:	00000000 	nop
  46f838:	24a55334 	addiu	a1,a1,21300
  46f83c:	00403021 	move	a2,v0
  46f840:	8f998c48 	lw	t9,-29624(gp)
  46f844:	00000000 	nop
  46f848:	0320f809 	jalr	t9
  46f84c:	00000000 	nop
  46f850:	8fdc0010 	lw	gp,16(s8)
  46f854:	00000000 	nop
						"%s must only be used if "
						"NAT-Traversal is detected",
						enum_name(&enc_mode_names, val));
					return FALSE;
  46f858:	00001021 	move	v0,zero
  46f85c:	100000c4 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f860:	00000000 	nop
				}
				break;
			default:
				loglog(RC_LOG_SERIOUS,
  46f864:	24040003 	li	a0,3
  46f868:	8f85802c 	lw	a1,-32724(gp)
  46f86c:	00000000 	nop
  46f870:	24a5538c 	addiu	a1,a1,21388
  46f874:	8fc6005c 	lw	a2,92(s8)
  46f878:	8f998c48 	lw	t9,-29624(gp)
  46f87c:	00000000 	nop
  46f880:	0320f809 	jalr	t9
  46f884:	00000000 	nop
  46f888:	8fdc0010 	lw	gp,16(s8)
  46f88c:	00000000 	nop
					"unknown ENCAPSULATION_MODE %d in IPsec SA", val);
				return FALSE;
  46f890:	00001021 	move	v0,zero
  46f894:	100000b6 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f898:	00000000 	nop
				break;
		}
#else
		attrs->encapsulation = val;
#endif
		break;
	    case AUTH_ALGORITHM | ISAKMP_ATTR_AF_TV:
		attrs->auth = val;
  46f89c:	97c3005e 	lhu	v1,94(s8)
  46f8a0:	8fc2009c 	lw	v0,156(s8)
  46f8a4:	00000000 	nop
  46f8a8:	a4430012 	sh	v1,18(v0)
		break;
  46f8ac:	10000023 	b	46f93c <parse_ipsec_transform+0xde4>
  46f8b0:	00000000 	nop
	    case KEY_LENGTH | ISAKMP_ATTR_AF_TV:
		attrs->key_len = val;
  46f8b4:	97c3005e 	lhu	v1,94(s8)
  46f8b8:	8fc2009c 	lw	v0,156(s8)
  46f8bc:	00000000 	nop
  46f8c0:	a4430014 	sh	v1,20(v0)
		break;
  46f8c4:	1000001d 	b	46f93c <parse_ipsec_transform+0xde4>
  46f8c8:	00000000 	nop
	    case KEY_ROUNDS | ISAKMP_ATTR_AF_TV:
		attrs->key_rounds = val;
  46f8cc:	97c3005e 	lhu	v1,94(s8)
  46f8d0:	8fc2009c 	lw	v0,156(s8)
  46f8d4:	00000000 	nop
  46f8d8:	a4430016 	sh	v1,22(v0)
		break;
  46f8dc:	10000017 	b	46f93c <parse_ipsec_transform+0xde4>
  46f8e0:	00000000 	nop
#if 0 /* not yet implemented */
	    case COMPRESS_DICT_SIZE | ISAKMP_ATTR_AF_TV:
		break;
	    case COMPRESS_PRIVATE_ALG | ISAKMP_ATTR_AF_TV:
		break;

	    case SA_LIFE_DURATION | ISAKMP_ATTR_AF_TLV:
		break;
	    case COMPRESS_PRIVATE_ALG | ISAKMP_ATTR_AF_TLV:
		break;
#endif
	    default:
		loglog(RC_LOG_SERIOUS, "unsupported IPsec attribute %s"
  46f8e4:	97c20030 	lhu	v0,48(s8)
  46f8e8:	8f8485d8 	lw	a0,-31272(gp)
  46f8ec:	00402821 	move	a1,v0
  46f8f0:	8f9987fc 	lw	t9,-30724(gp)
  46f8f4:	00000000 	nop
  46f8f8:	0320f809 	jalr	t9
  46f8fc:	00000000 	nop
  46f900:	8fdc0010 	lw	gp,16(s8)
  46f904:	24040003 	li	a0,3
  46f908:	8f85802c 	lw	a1,-32724(gp)
  46f90c:	00000000 	nop
  46f910:	24a553b8 	addiu	a1,a1,21432
  46f914:	00403021 	move	a2,v0
  46f918:	8f998c48 	lw	t9,-29624(gp)
  46f91c:	00000000 	nop
  46f920:	0320f809 	jalr	t9
  46f924:	00000000 	nop
  46f928:	8fdc0010 	lw	gp,16(s8)
  46f92c:	00000000 	nop
		    , enum_show(&ipsec_attr_names, a.isaat_af_type));
		return FALSE;
  46f930:	00001021 	move	v0,zero
  46f934:	1000008e 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f938:	00000000 	nop
	}
	if (ipcomp_inappropriate)
  46f93c:	8fc20060 	lw	v0,96(s8)
  46f940:	00000000 	nop
  46f944:	1040fd22 	beqz	v0,46edd0 <parse_ipsec_transform+0x278>
  46f948:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "IPsec attribute %s inappropriate for IPCOMP"
  46f94c:	97c20030 	lhu	v0,48(s8)
  46f950:	8f8485d8 	lw	a0,-31272(gp)
  46f954:	00402821 	move	a1,v0
  46f958:	8f9987fc 	lw	t9,-30724(gp)
  46f95c:	00000000 	nop
  46f960:	0320f809 	jalr	t9
  46f964:	00000000 	nop
  46f968:	8fdc0010 	lw	gp,16(s8)
  46f96c:	24040003 	li	a0,3
  46f970:	8f85802c 	lw	a1,-32724(gp)
  46f974:	00000000 	nop
  46f978:	24a553d8 	addiu	a1,a1,21464
  46f97c:	00403021 	move	a2,v0
  46f980:	8f998c48 	lw	t9,-29624(gp)
  46f984:	00000000 	nop
  46f988:	0320f809 	jalr	t9
  46f98c:	00000000 	nop
  46f990:	8fdc0010 	lw	gp,16(s8)
  46f994:	00000000 	nop
		, enum_show(&ipsec_attr_names, a.isaat_af_type));
	    return FALSE;
  46f998:	00001021 	move	v0,zero
  46f99c:	10000074 	b	46fb70 <parse_ipsec_transform+0x1018>
  46f9a0:	00000000 	nop
	}
    }

    /* Although an IPCOMP SA (IPCA) ought not to have a pfs_group,
     * if it does, demand that it be consistent.
     * See draft-shacham-ippcp-rfc2393bis-05.txt 4.1.
     */
    if (!is_ipcomp || pfs_group != NULL)
  46f9a4:	8fc200b8 	lw	v0,184(s8)
  46f9a8:	00000000 	nop
  46f9ac:	10400007 	beqz	v0,46f9cc <parse_ipsec_transform+0xe74>
  46f9b0:	00000000 	nop
  46f9b4:	8fc2002c 	lw	v0,44(s8)
  46f9b8:	00000000 	nop
  46f9bc:	14400003 	bnez	v0,46f9cc <parse_ipsec_transform+0xe74>
  46f9c0:	00000000 	nop
  46f9c4:	10000031 	b	46fa8c <parse_ipsec_transform+0xf34>
  46f9c8:	00000000 	nop
    {
	if (st->st_pfs_group == &unset_group)
  46f9cc:	8fc200bc 	lw	v0,188(s8)
  46f9d0:	00000000 	nop
  46f9d4:	8c4300c8 	lw	v1,200(v0)
  46f9d8:	8f828b40 	lw	v0,-29888(gp)
  46f9dc:	00000000 	nop
  46f9e0:	14620005 	bne	v1,v0,46f9f8 <parse_ipsec_transform+0xea0>
  46f9e4:	00000000 	nop
	    st->st_pfs_group = pfs_group;
  46f9e8:	8fc3002c 	lw	v1,44(s8)
  46f9ec:	8fc200bc 	lw	v0,188(s8)
  46f9f0:	00000000 	nop
  46f9f4:	ac4300c8 	sw	v1,200(v0)

	if (st->st_pfs_group != pfs_group)
  46f9f8:	8fc200bc 	lw	v0,188(s8)
  46f9fc:	00000000 	nop
  46fa00:	8c4300c8 	lw	v1,200(v0)
  46fa04:	8fc2002c 	lw	v0,44(s8)
  46fa08:	00000000 	nop
  46fa0c:	1062001f 	beq	v1,v0,46fa8c <parse_ipsec_transform+0xf34>
  46fa10:	00000000 	nop
	{
	    loglog(RC_LOG_SERIOUS, "GROUP_DESCRIPTION inconsistent with that of %s in IPsec SA"
  46fa14:	8fc200b0 	lw	v0,176(s8)
  46fa18:	00000000 	nop
  46fa1c:	10400008 	beqz	v0,46fa40 <parse_ipsec_transform+0xee8>
  46fa20:	00000000 	nop
  46fa24:	8f82802c 	lw	v0,-32724(gp)
  46fa28:	00000000 	nop
  46fa2c:	24425404 	addiu	v0,v0,21508
  46fa30:	00000000 	nop
  46fa34:	afc20084 	sw	v0,132(s8)
  46fa38:	10000006 	b	46fa54 <parse_ipsec_transform+0xefc>
  46fa3c:	00000000 	nop
  46fa40:	8f83802c 	lw	v1,-32724(gp)
  46fa44:	00000000 	nop
  46fa48:	24635414 	addiu	v1,v1,21524
  46fa4c:	00000000 	nop
  46fa50:	afc30084 	sw	v1,132(s8)
  46fa54:	24040003 	li	a0,3
  46fa58:	8f85802c 	lw	a1,-32724(gp)
  46fa5c:	00000000 	nop
  46fa60:	24a5542c 	addiu	a1,a1,21548
  46fa64:	8fc60084 	lw	a2,132(s8)
  46fa68:	8f998c48 	lw	t9,-29624(gp)
  46fa6c:	00000000 	nop
  46fa70:	0320f809 	jalr	t9
  46fa74:	00000000 	nop
  46fa78:	8fdc0010 	lw	gp,16(s8)
  46fa7c:	00000000 	nop
		, selection? "the Proposal" : "a previous Transform");
	    return FALSE;
  46fa80:	00001021 	move	v0,zero
  46fa84:	1000003a 	b	46fb70 <parse_ipsec_transform+0x1018>
  46fa88:	00000000 	nop
	}
    }

    if ((seen_attrs & LELEM(SA_LIFE_DURATION)) != 0)
  46fa8c:	8fc40018 	lw	a0,24(s8)
  46fa90:	8fc5001c 	lw	a1,28(s8)
  46fa94:	24020000 	li	v0,0
  46fa98:	24030004 	li	v1,4
  46fa9c:	00822024 	and	a0,a0,v0
  46faa0:	00a32824 	and	a1,a1,v1
  46faa4:	00801021 	move	v0,a0
  46faa8:	00451025 	or	v0,v0,a1
  46faac:	1040000e 	beqz	v0,46fae8 <parse_ipsec_transform+0xf90>
  46fab0:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "SA_LIFE_TYPE IPsec attribute not followed by SA_LIFE_DURATION attribute in message");
  46fab4:	24040003 	li	a0,3
  46fab8:	8f85802c 	lw	a1,-32724(gp)
  46fabc:	00000000 	nop
  46fac0:	24a55468 	addiu	a1,a1,21608
  46fac4:	8f998c48 	lw	t9,-29624(gp)
  46fac8:	00000000 	nop
  46facc:	0320f809 	jalr	t9
  46fad0:	00000000 	nop
  46fad4:	8fdc0010 	lw	gp,16(s8)
  46fad8:	00000000 	nop
	return FALSE;
  46fadc:	00001021 	move	v0,zero
  46fae0:	10000023 	b	46fb70 <parse_ipsec_transform+0x1018>
  46fae4:	00000000 	nop
    }

    if ((seen_attrs & LELEM(ENCAPSULATION_MODE)) == 0)
  46fae8:	8fc40018 	lw	a0,24(s8)
  46faec:	8fc5001c 	lw	a1,28(s8)
  46faf0:	24020000 	li	v0,0
  46faf4:	24030010 	li	v1,16
  46faf8:	00822024 	and	a0,a0,v0
  46fafc:	00a32824 	and	a1,a1,v1
  46fb00:	00801021 	move	v0,a0
  46fb04:	00451025 	or	v0,v0,a1
  46fb08:	14400018 	bnez	v0,46fb6c <parse_ipsec_transform+0x1014>
  46fb0c:	00000000 	nop
    {
	if (is_ipcomp)
  46fb10:	8fc200b8 	lw	v0,184(s8)
  46fb14:	00000000 	nop
  46fb18:	10400007 	beqz	v0,46fb38 <parse_ipsec_transform+0xfe0>
  46fb1c:	00000000 	nop
	{
	    /* draft-shacham-ippcp-rfc2393bis-05.txt 4.1:
	     * "If the Encapsulation Mode is unspecified,
	     * the default value of Transport Mode is assumed."
	     * This contradicts/overrides the DOI (quuoted below).
	     */
	    attrs->encapsulation = ENCAPSULATION_MODE_TRANSPORT;
  46fb20:	24030002 	li	v1,2
  46fb24:	8fc2009c 	lw	v0,156(s8)
  46fb28:	00000000 	nop
  46fb2c:	a4430010 	sh	v1,16(v0)
  46fb30:	1000000e 	b	46fb6c <parse_ipsec_transform+0x1014>
  46fb34:	00000000 	nop
	}
	else
	{
	    /* ??? Technically, RFC 2407 (IPSEC DOI) 4.5 specifies that
	     * the default is "unspecified (host-dependent)".
	     * This makes little sense, so we demand that it be specified.
	     */
	    loglog(RC_LOG_SERIOUS, "IPsec Transform must specify ENCAPSULATION_MODE");
  46fb38:	24040003 	li	a0,3
  46fb3c:	8f85802c 	lw	a1,-32724(gp)
  46fb40:	00000000 	nop
  46fb44:	24a554bc 	addiu	a1,a1,21692
  46fb48:	8f998c48 	lw	t9,-29624(gp)
  46fb4c:	00000000 	nop
  46fb50:	0320f809 	jalr	t9
  46fb54:	00000000 	nop
  46fb58:	8fdc0010 	lw	gp,16(s8)
  46fb5c:	00000000 	nop
	    return FALSE;
  46fb60:	00001021 	move	v0,zero
  46fb64:	10000002 	b	46fb70 <parse_ipsec_transform+0x1018>
  46fb68:	00000000 	nop
	}
    }

    /* ??? should check for key_len and/or key_rounds if required */

    return TRUE;
  46fb6c:	24020001 	li	v0,1
}
  46fb70:	03c0e821 	move	sp,s8
  46fb74:	8fbf0090 	lw	ra,144(sp)
  46fb78:	8fbe008c 	lw	s8,140(sp)
  46fb7c:	27bd0098 	addiu	sp,sp,152
  46fb80:	03e00008 	jr	ra
  46fb84:	00000000 	nop

0046fb88 <echo_proposal>:
  46fb88:	3c1c0fba 	lui	gp,0xfba
  46fb8c:	279ccde8 	addiu	gp,gp,-12824
  46fb90:	0399e021 	addu	gp,gp,t9
  46fb94:	27bdff90 	addiu	sp,sp,-112
  46fb98:	afbc0010 	sw	gp,16(sp)
  46fb9c:	afbf006c 	sw	ra,108(sp)
  46fba0:	afbe0068 	sw	s8,104(sp)
  46fba4:	afbc0064 	sw	gp,100(sp)
  46fba8:	afb00060 	sw	s0,96(sp)
  46fbac:	03a0f021 	move	s8,sp
  46fbb0:	afc40070 	sw	a0,112(s8)
  46fbb4:	afc50074 	sw	a1,116(s8)
  46fbb8:	afc60078 	sw	a2,120(s8)
  46fbbc:	afc7007c 	sw	a3,124(s8)
  46fbc0:	8fc20080 	lw	v0,128(s8)
  46fbc4:	00000000 	nop
  46fbc8:	a3c20018 	sb	v0,24(s8)

static void
echo_proposal(
    struct isakmp_proposal r_proposal,	/* proposal to emit */
    struct isakmp_transform r_trans,	/* winning transformation within it */
    u_int8_t np,			/* Next Payload for proposal */
    pb_stream *r_sa_pbs,		/* SA PBS into which to emit */
    struct ipsec_proto_info *pi,	/* info about this protocol instance */
    struct_desc *trans_desc,		/* descriptor for this transformation */
    pb_stream *trans_pbs)		/* PBS for incoming transform */
{
    pb_stream r_proposal_pbs;
    pb_stream r_trans_pbs;

    /* Proposal */
    r_proposal.isap_np = np;
  46fbcc:	93c20018 	lbu	v0,24(s8)
  46fbd0:	00000000 	nop
  46fbd4:	a3c20070 	sb	v0,112(s8)
    r_proposal.isap_notrans = 1;
  46fbd8:	24020001 	li	v0,1
  46fbdc:	a3c20077 	sb	v0,119(s8)
    if (!out_struct(&r_proposal, &isakmp_proposal_desc, r_sa_pbs, &r_proposal_pbs))
  46fbe0:	27c20070 	addiu	v0,s8,112
  46fbe4:	00402021 	move	a0,v0
  46fbe8:	8f85821c 	lw	a1,-32228(gp)
  46fbec:	8fc60084 	lw	a2,132(s8)
  46fbf0:	27c70020 	addiu	a3,s8,32
  46fbf4:	8f998ba0 	lw	t9,-29792(gp)
  46fbf8:	00000000 	nop
  46fbfc:	0320f809 	jalr	t9
  46fc00:	00000000 	nop
  46fc04:	8fdc0010 	lw	gp,16(s8)
  46fc08:	1440000e 	bnez	v0,46fc44 <echo_proposal+0xbc>
  46fc0c:	00000000 	nop
	impossible();
  46fc10:	8f84802c 	lw	a0,-32724(gp)
  46fc14:	00000000 	nop
  46fc18:	24844920 	addiu	a0,a0,18720
  46fc1c:	8f85802c 	lw	a1,-32724(gp)
  46fc20:	00000000 	nop
  46fc24:	24a54904 	addiu	a1,a1,18692
  46fc28:	24060705 	li	a2,1797
  46fc2c:	8f998bb8 	lw	t9,-29768(gp)
  46fc30:	00000000 	nop
  46fc34:	0320f809 	jalr	t9
  46fc38:	00000000 	nop
  46fc3c:	8fdc0010 	lw	gp,16(s8)
  46fc40:	00000000 	nop

    /* allocate and emit our CPI/SPI */
    if (r_proposal.isap_protoid == PROTO_IPCOMP)
  46fc44:	93c30075 	lbu	v1,117(s8)
  46fc48:	24020004 	li	v0,4
  46fc4c:	14620018 	bne	v1,v0,46fcb0 <echo_proposal+0x128>
  46fc50:	00000000 	nop
    {
	/* CPI is stored in network low order end of an
	 * ipsec_spi_t.  So we start a couple of bytes in.
	 * Note: we may fail to generate a satisfactory CPI,
	 * but we'll ignore that.
	 */
	pi->our_spi = get_my_cpi();
  46fc54:	8fd00088 	lw	s0,136(s8)
  46fc58:	8f998274 	lw	t9,-32140(gp)
  46fc5c:	00000000 	nop
  46fc60:	0320f809 	jalr	t9
  46fc64:	00000000 	nop
  46fc68:	8fdc0010 	lw	gp,16(s8)
  46fc6c:	ae02001c 	sw	v0,28(s0)
	out_raw((u_char *) &pi->our_spi
  46fc70:	8fc20088 	lw	v0,136(s8)
  46fc74:	00000000 	nop
  46fc78:	2442001e 	addiu	v0,v0,30
  46fc7c:	00402021 	move	a0,v0
  46fc80:	24050002 	li	a1,2
  46fc84:	27c60020 	addiu	a2,s8,32
  46fc88:	8f87802c 	lw	a3,-32724(gp)
  46fc8c:	00000000 	nop
  46fc90:	24e7491c 	addiu	a3,a3,18716
  46fc94:	8f998308 	lw	t9,-31992(gp)
  46fc98:	00000000 	nop
  46fc9c:	0320f809 	jalr	t9
  46fca0:	00000000 	nop
  46fca4:	8fdc0010 	lw	gp,16(s8)
  46fca8:	1000001a 	b	46fd14 <echo_proposal+0x18c>
  46fcac:	00000000 	nop
	     + IPSEC_DOI_SPI_SIZE - IPCOMP_CPI_SIZE
	    , IPCOMP_CPI_SIZE
	    , &r_proposal_pbs, "CPI");
    }
    else
    {
	pi->our_spi = get_ipsec_spi(pi->attrs.spi);
  46fcb0:	8fd00088 	lw	s0,136(s8)
  46fcb4:	8fc20088 	lw	v0,136(s8)
  46fcb8:	00000000 	nop
  46fcbc:	8c440008 	lw	a0,8(v0)
  46fcc0:	8f99854c 	lw	t9,-31412(gp)
  46fcc4:	00000000 	nop
  46fcc8:	0320f809 	jalr	t9
  46fccc:	00000000 	nop
  46fcd0:	8fdc0010 	lw	gp,16(s8)
  46fcd4:	ae02001c 	sw	v0,28(s0)
	out_raw((u_char *) &pi->our_spi, IPSEC_DOI_SPI_SIZE
  46fcd8:	8fc20088 	lw	v0,136(s8)
  46fcdc:	00000000 	nop
  46fce0:	2442001c 	addiu	v0,v0,28
  46fce4:	00402021 	move	a0,v0
  46fce8:	24050004 	li	a1,4
  46fcec:	27c60020 	addiu	a2,s8,32
  46fcf0:	8f87802c 	lw	a3,-32724(gp)
  46fcf4:	00000000 	nop
  46fcf8:	24e7492c 	addiu	a3,a3,18732
  46fcfc:	8f998308 	lw	t9,-31992(gp)
  46fd00:	00000000 	nop
  46fd04:	0320f809 	jalr	t9
  46fd08:	00000000 	nop
  46fd0c:	8fdc0010 	lw	gp,16(s8)
  46fd10:	00000000 	nop
	    , &r_proposal_pbs, "SPI");
    }

    /* Transform */
    r_trans.isat_np = ISAKMP_NEXT_NONE;
  46fd14:	a3c00078 	sb	zero,120(s8)
    if (!out_struct(&r_trans, trans_desc, &r_proposal_pbs, &r_trans_pbs))
  46fd18:	27c40078 	addiu	a0,s8,120
  46fd1c:	8fc5008c 	lw	a1,140(s8)
  46fd20:	27c60020 	addiu	a2,s8,32
  46fd24:	27c70040 	addiu	a3,s8,64
  46fd28:	8f998ba0 	lw	t9,-29792(gp)
  46fd2c:	00000000 	nop
  46fd30:	0320f809 	jalr	t9
  46fd34:	00000000 	nop
  46fd38:	8fdc0010 	lw	gp,16(s8)
  46fd3c:	1440000e 	bnez	v0,46fd78 <echo_proposal+0x1f0>
  46fd40:	00000000 	nop
	impossible();
  46fd44:	8f84802c 	lw	a0,-32724(gp)
  46fd48:	00000000 	nop
  46fd4c:	24844920 	addiu	a0,a0,18720
  46fd50:	8f85802c 	lw	a1,-32724(gp)
  46fd54:	00000000 	nop
  46fd58:	24a54904 	addiu	a1,a1,18692
  46fd5c:	2406071f 	li	a2,1823
  46fd60:	8f998bb8 	lw	t9,-29768(gp)
  46fd64:	00000000 	nop
  46fd68:	0320f809 	jalr	t9
  46fd6c:	00000000 	nop
  46fd70:	8fdc0010 	lw	gp,16(s8)
  46fd74:	00000000 	nop

    /* Transform Attributes: pure echo */
    trans_pbs->cur = trans_pbs->start + sizeof(struct isakmp_transform);
  46fd78:	8fc20090 	lw	v0,144(s8)
  46fd7c:	00000000 	nop
  46fd80:	8c42000c 	lw	v0,12(v0)
  46fd84:	00000000 	nop
  46fd88:	24430008 	addiu	v1,v0,8
  46fd8c:	8fc20090 	lw	v0,144(s8)
  46fd90:	00000000 	nop
  46fd94:	ac430010 	sw	v1,16(v0)
    if (!out_raw(trans_pbs->cur, pbs_left(trans_pbs)
    , &r_trans_pbs, "attributes"))
  46fd98:	8fc20090 	lw	v0,144(s8)
  46fd9c:	00000000 	nop
  46fda0:	8c430014 	lw	v1,20(v0)
  46fda4:	8fc20090 	lw	v0,144(s8)
  46fda8:	00000000 	nop
  46fdac:	8c420010 	lw	v0,16(v0)
  46fdb0:	00000000 	nop
  46fdb4:	00621823 	subu	v1,v1,v0
  46fdb8:	8fc20090 	lw	v0,144(s8)
  46fdbc:	00000000 	nop
  46fdc0:	8c440010 	lw	a0,16(v0)
  46fdc4:	00602821 	move	a1,v1
  46fdc8:	27c60040 	addiu	a2,s8,64
  46fdcc:	8f87802c 	lw	a3,-32724(gp)
  46fdd0:	00000000 	nop
  46fdd4:	24e74ffc 	addiu	a3,a3,20476
  46fdd8:	8f998308 	lw	t9,-31992(gp)
  46fddc:	00000000 	nop
  46fde0:	0320f809 	jalr	t9
  46fde4:	00000000 	nop
  46fde8:	8fdc0010 	lw	gp,16(s8)
  46fdec:	1440000e 	bnez	v0,46fe28 <echo_proposal+0x2a0>
  46fdf0:	00000000 	nop
	impossible();
  46fdf4:	8f84802c 	lw	a0,-32724(gp)
  46fdf8:	00000000 	nop
  46fdfc:	24844920 	addiu	a0,a0,18720
  46fe00:	8f85802c 	lw	a1,-32724(gp)
  46fe04:	00000000 	nop
  46fe08:	24a54904 	addiu	a1,a1,18692
  46fe0c:	24060725 	li	a2,1829
  46fe10:	8f998bb8 	lw	t9,-29768(gp)
  46fe14:	00000000 	nop
  46fe18:	0320f809 	jalr	t9
  46fe1c:	00000000 	nop
  46fe20:	8fdc0010 	lw	gp,16(s8)
  46fe24:	00000000 	nop

    close_output_pbs(&r_trans_pbs);
  46fe28:	27c40040 	addiu	a0,s8,64
  46fe2c:	8f998228 	lw	t9,-32216(gp)
  46fe30:	00000000 	nop
  46fe34:	0320f809 	jalr	t9
  46fe38:	00000000 	nop
  46fe3c:	8fdc0010 	lw	gp,16(s8)
  46fe40:	00000000 	nop
    close_output_pbs(&r_proposal_pbs);
  46fe44:	27c40020 	addiu	a0,s8,32
  46fe48:	8f998228 	lw	t9,-32216(gp)
  46fe4c:	00000000 	nop
  46fe50:	0320f809 	jalr	t9
  46fe54:	00000000 	nop
  46fe58:	8fdc0010 	lw	gp,16(s8)
  46fe5c:	00000000 	nop
}
  46fe60:	03c0e821 	move	sp,s8
  46fe64:	8fbf006c 	lw	ra,108(sp)
  46fe68:	8fbe0068 	lw	s8,104(sp)
  46fe6c:	8fb00060 	lw	s0,96(sp)
  46fe70:	27bd0070 	addiu	sp,sp,112
  46fe74:	03e00008 	jr	ra
  46fe78:	00000000 	nop

0046fe7c <parse_ipsec_sa_body>:
  46fe7c:	3c1c0fba 	lui	gp,0xfba
  46fe80:	279ccaf4 	addiu	gp,gp,-13580
  46fe84:	0399e021 	addu	gp,gp,t9
  46fe88:	27bdfda0 	addiu	sp,sp,-608
  46fe8c:	afbc0028 	sw	gp,40(sp)
  46fe90:	afbf0258 	sw	ra,600(sp)
  46fe94:	afbe0254 	sw	s8,596(sp)
  46fe98:	afbc0250 	sw	gp,592(sp)
  46fe9c:	afb1024c 	sw	s1,588(sp)
  46fea0:	afb00248 	sw	s0,584(sp)
  46fea4:	03a0f021 	move	s8,sp
  46fea8:	afc40260 	sw	a0,608(s8)
  46feac:	afc50264 	sw	a1,612(s8)
  46feb0:	afc60268 	sw	a2,616(s8)
  46feb4:	afc7026c 	sw	a3,620(s8)

notification_t
parse_ipsec_sa_body(
    pb_stream *sa_pbs,		/* body of input SA Payload */
    const struct isakmp_sa *sa,	/* header of input SA Payload */
    pb_stream *r_sa_pbs,	/* if non-NULL, where to emit body of winning SA */
    bool selection,		/* if this SA is a selection, only one transform may appear */
    struct state *st)		/* current state object */
{
    const struct connection *c = st->st_connection;
  46feb8:	8fc20270 	lw	v0,624(s8)
  46febc:	00000000 	nop
  46fec0:	8c42000c 	lw	v0,12(v0)
  46fec4:	00000000 	nop
  46fec8:	afc20030 	sw	v0,48(s8)
    u_int32_t ipsecdoisit;
    pb_stream next_proposal_pbs;

    struct isakmp_proposal next_proposal;
    ipsec_spi_t next_spi;

    bool next_full = TRUE;
  46fecc:	24020001 	li	v0,1
  46fed0:	afc20064 	sw	v0,100(s8)

    /* DOI */
    if (sa->isasa_doi != ISAKMP_DOI_IPSEC)
  46fed4:	8fc20264 	lw	v0,612(s8)
  46fed8:	00000000 	nop
  46fedc:	8c430004 	lw	v1,4(v0)
  46fee0:	24020001 	li	v0,1
  46fee4:	10620018 	beq	v1,v0,46ff48 <parse_ipsec_sa_body+0xcc>
  46fee8:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "Unknown or unsupported DOI %s", enum_show(&doi_names, sa->isasa_doi));
  46feec:	8f8488b8 	lw	a0,-30536(gp)
  46fef0:	8fc20264 	lw	v0,612(s8)
  46fef4:	00000000 	nop
  46fef8:	8c450004 	lw	a1,4(v0)
  46fefc:	8f9987fc 	lw	t9,-30724(gp)
  46ff00:	00000000 	nop
  46ff04:	0320f809 	jalr	t9
  46ff08:	00000000 	nop
  46ff0c:	8fdc0028 	lw	gp,40(s8)
  46ff10:	24040003 	li	a0,3
  46ff14:	8f85802c 	lw	a1,-32724(gp)
  46ff18:	00000000 	nop
  46ff1c:	24a554ec 	addiu	a1,a1,21740
  46ff20:	00403021 	move	a2,v0
  46ff24:	8f998c48 	lw	t9,-29624(gp)
  46ff28:	00000000 	nop
  46ff2c:	0320f809 	jalr	t9
  46ff30:	00000000 	nop
  46ff34:	8fdc0028 	lw	gp,40(s8)
  46ff38:	00000000 	nop
	return DOI_NOT_SUPPORTED;
  46ff3c:	24020002 	li	v0,2
  46ff40:	100006b0 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  46ff44:	00000000 	nop
    }

    /* Situation */
    if (!in_struct(&ipsecdoisit, &ipsec_sit_desc, sa_pbs, NULL))
  46ff48:	27c40034 	addiu	a0,s8,52
  46ff4c:	8f8583dc 	lw	a1,-31780(gp)
  46ff50:	8fc60260 	lw	a2,608(s8)
  46ff54:	00003821 	move	a3,zero
  46ff58:	8f998b3c 	lw	t9,-29892(gp)
  46ff5c:	00000000 	nop
  46ff60:	0320f809 	jalr	t9
  46ff64:	00000000 	nop
  46ff68:	8fdc0028 	lw	gp,40(s8)
  46ff6c:	14400004 	bnez	v0,46ff80 <parse_ipsec_sa_body+0x104>
  46ff70:	00000000 	nop
	return SITUATION_NOT_SUPPORTED;
  46ff74:	24020003 	li	v0,3
  46ff78:	100006a2 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  46ff7c:	00000000 	nop

    if (ipsecdoisit != SIT_IDENTITY_ONLY)
  46ff80:	8fc30034 	lw	v1,52(s8)
  46ff84:	24020001 	li	v0,1
  46ff88:	10620019 	beq	v1,v0,46fff0 <parse_ipsec_sa_body+0x174>
  46ff8c:	00000000 	nop
    {
	loglog(RC_LOG_SERIOUS, "unsupported IPsec DOI situation (%s)"
  46ff90:	8fc30034 	lw	v1,52(s8)
  46ff94:	00001021 	move	v0,zero
  46ff98:	8f848600 	lw	a0,-31232(gp)
  46ff9c:	00403021 	move	a2,v0
  46ffa0:	00603821 	move	a3,v1
  46ffa4:	8f9988c4 	lw	t9,-30524(gp)
  46ffa8:	00000000 	nop
  46ffac:	0320f809 	jalr	t9
  46ffb0:	00000000 	nop
  46ffb4:	8fdc0028 	lw	gp,40(s8)
  46ffb8:	24040003 	li	a0,3
  46ffbc:	8f85802c 	lw	a1,-32724(gp)
  46ffc0:	00000000 	nop
  46ffc4:	24a549b0 	addiu	a1,a1,18864
  46ffc8:	00403021 	move	a2,v0
  46ffcc:	8f998c48 	lw	t9,-29624(gp)
  46ffd0:	00000000 	nop
  46ffd4:	0320f809 	jalr	t9
  46ffd8:	00000000 	nop
  46ffdc:	8fdc0028 	lw	gp,40(s8)
  46ffe0:	00000000 	nop
	    , bitnamesof(sit_bit_names, ipsecdoisit));
	return SITUATION_NOT_SUPPORTED;
  46ffe4:	24020003 	li	v0,3
  46ffe8:	10000686 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  46ffec:	00000000 	nop
    }

    /* The rules for IPsec SAs are scattered.
     * draft-ietf-ipsec-isakmp-09.txt section 4.2 gives some info.
     * There may be multiple proposals.  Those with identical proposal
     * numbers must be considered as conjuncts.  Those with different
     * numbers are disjuncts.
     * Each proposal may have several transforms, each considered
     * an alternative.
     * Each transform may have several attributes, all applying.
     *
     * To handle the way proposals are combined, we need to do a
     * look-ahead.
     */

    if (!in_struct(&next_proposal, &isakmp_proposal_desc, sa_pbs, &next_proposal_pbs))
  46fff0:	27c40058 	addiu	a0,s8,88
  46fff4:	8f85821c 	lw	a1,-32228(gp)
  46fff8:	8fc60260 	lw	a2,608(s8)
  46fffc:	27c70038 	addiu	a3,s8,56
  470000:	8f998b3c 	lw	t9,-29892(gp)
  470004:	00000000 	nop
  470008:	0320f809 	jalr	t9
  47000c:	00000000 	nop
  470010:	8fdc0028 	lw	gp,40(s8)
  470014:	14400004 	bnez	v0,470028 <parse_ipsec_sa_body+0x1ac>
  470018:	00000000 	nop
	return BAD_PROPOSAL_SYNTAX;
  47001c:	2402000f 	li	v0,15
  470020:	10000678 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470024:	00000000 	nop
  470028:	00000000 	nop

    /* for each conjunction of proposals... */
    while (next_full)
  47002c:	8fc20064 	lw	v0,100(s8)
  470030:	00000000 	nop
  470034:	14400003 	bnez	v0,470044 <parse_ipsec_sa_body+0x1c8>
  470038:	00000000 	nop
  47003c:	10000666 	b	4719d8 <parse_ipsec_sa_body+0x1b5c>
  470040:	00000000 	nop
    {
	int propno = next_proposal.isap_proposal;
  470044:	93c2005c 	lbu	v0,92(s8)
  470048:	00000000 	nop
  47004c:	afc20068 	sw	v0,104(s8)
	pb_stream ah_prop_pbs, esp_prop_pbs, ipcomp_prop_pbs;
	struct isakmp_proposal ah_proposal, esp_proposal, ipcomp_proposal;
	ipsec_spi_t ah_spi, esp_spi, ipcomp_cpi;
	bool ah_seen = FALSE, esp_seen = FALSE, ipcomp_seen = FALSE;
  470050:	afc000f4 	sw	zero,244(s8)
  470054:	afc000f8 	sw	zero,248(s8)
  470058:	afc000fc 	sw	zero,252(s8)
	u_int16_t well_known_cpi = 0;
  47005c:	a7c00100 	sh	zero,256(s8)

	pb_stream ah_trans_pbs, esp_trans_pbs, ipcomp_trans_pbs;
	struct isakmp_transform ah_trans, esp_trans, ipcomp_trans;
	struct ipsec_trans_attrs ah_attrs, esp_attrs, ipcomp_attrs;

	/* for each proposal in the conjunction */
	do {

	    if (next_proposal.isap_protoid == PROTO_IPCOMP)
  470060:	93c3005d 	lbu	v1,93(s8)
  470064:	24020004 	li	v0,4
  470068:	14620089 	bne	v1,v0,470290 <parse_ipsec_sa_body+0x414>
  47006c:	00000000 	nop
	    {
		/* IPCOMP CPI */
		if (next_proposal.isap_spisize == IPSEC_DOI_SPI_SIZE)
  470070:	93c3005e 	lbu	v1,94(s8)
  470074:	00000000 	nop
  470078:	1462001a 	bne	v1,v0,4700e4 <parse_ipsec_sa_body+0x268>
  47007c:	00000000 	nop
		{
		    /* This code is to accommodate those peculiar
		     * implementations that send a CPI in the bottom of an
		     * SPI-sized field.
		     * See draft-shacham-ippcp-rfc2393bis-05.txt 4.1
		     */
		    u_int8_t filler[IPSEC_DOI_SPI_SIZE - IPCOMP_CPI_SIZE];

		    if (!in_raw(filler, sizeof(filler)
		     , &next_proposal_pbs, "CPI filler")
		    || !all_zero(filler, sizeof(filler)))
  470080:	27c401c8 	addiu	a0,s8,456
  470084:	24050002 	li	a1,2
  470088:	27c60038 	addiu	a2,s8,56
  47008c:	8f87802c 	lw	a3,-32724(gp)
  470090:	00000000 	nop
  470094:	24e7550c 	addiu	a3,a3,21772
  470098:	8f99867c 	lw	t9,-31108(gp)
  47009c:	00000000 	nop
  4700a0:	0320f809 	jalr	t9
  4700a4:	00000000 	nop
  4700a8:	8fdc0028 	lw	gp,40(s8)
  4700ac:	1040000a 	beqz	v0,4700d8 <parse_ipsec_sa_body+0x25c>
  4700b0:	00000000 	nop
  4700b4:	27c401c8 	addiu	a0,s8,456
  4700b8:	24050002 	li	a1,2
  4700bc:	8f99863c 	lw	t9,-31172(gp)
  4700c0:	00000000 	nop
  4700c4:	0320f809 	jalr	t9
  4700c8:	00000000 	nop
  4700cc:	8fdc0028 	lw	gp,40(s8)
  4700d0:	14400017 	bnez	v0,470130 <parse_ipsec_sa_body+0x2b4>
  4700d4:	00000000 	nop
			return INVALID_SPI;
  4700d8:	2402000b 	li	v0,11
  4700dc:	10000649 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  4700e0:	00000000 	nop
		}
		else if (next_proposal.isap_spisize != IPCOMP_CPI_SIZE)
  4700e4:	93c3005e 	lbu	v1,94(s8)
  4700e8:	24020002 	li	v0,2
  4700ec:	10620010 	beq	v1,v0,470130 <parse_ipsec_sa_body+0x2b4>
  4700f0:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "IPsec Proposal with improper CPI size (%u)"
  4700f4:	93c2005e 	lbu	v0,94(s8)
  4700f8:	24040003 	li	a0,3
  4700fc:	8f85802c 	lw	a1,-32724(gp)
  470100:	00000000 	nop
  470104:	24a55518 	addiu	a1,a1,21784
  470108:	00403021 	move	a2,v0
  47010c:	8f998c48 	lw	t9,-29624(gp)
  470110:	00000000 	nop
  470114:	0320f809 	jalr	t9
  470118:	00000000 	nop
  47011c:	8fdc0028 	lw	gp,40(s8)
  470120:	00000000 	nop
			, next_proposal.isap_spisize);
		    return INVALID_SPI;
  470124:	2402000b 	li	v0,11
  470128:	10000636 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  47012c:	00000000 	nop
		}

		/* We store CPI in the low order of a network order
		 * ipsec_spi_t.  So we start a couple of bytes in.
		 */
		zero(&next_spi);
  470130:	27c40060 	addiu	a0,s8,96
  470134:	00002821 	move	a1,zero
  470138:	24060004 	li	a2,4
  47013c:	8f998500 	lw	t9,-31488(gp)
  470140:	00000000 	nop
  470144:	0320f809 	jalr	t9
  470148:	00000000 	nop
  47014c:	8fdc0028 	lw	gp,40(s8)
  470150:	00000000 	nop
		if (!in_raw((u_char *)&next_spi
		  + IPSEC_DOI_SPI_SIZE - IPCOMP_CPI_SIZE
		, IPCOMP_CPI_SIZE, &next_proposal_pbs, "CPI"))
  470154:	27c20060 	addiu	v0,s8,96
  470158:	24420002 	addiu	v0,v0,2
  47015c:	00402021 	move	a0,v0
  470160:	24050002 	li	a1,2
  470164:	27c60038 	addiu	a2,s8,56
  470168:	8f87802c 	lw	a3,-32724(gp)
  47016c:	00000000 	nop
  470170:	24e7491c 	addiu	a3,a3,18716
  470174:	8f99867c 	lw	t9,-31108(gp)
  470178:	00000000 	nop
  47017c:	0320f809 	jalr	t9
  470180:	00000000 	nop
  470184:	8fdc0028 	lw	gp,40(s8)
  470188:	14400004 	bnez	v0,47019c <parse_ipsec_sa_body+0x320>
  47018c:	00000000 	nop
		    return INVALID_SPI;
  470190:	2402000b 	li	v0,11
  470194:	1000061b 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470198:	00000000 	nop

		/* If sanity ruled, CPIs would have to be such that
		 * the SAID (the triple (CPI, IPCOM, destination IP))
		 * would be unique, just like for SPIs.  But there is a
		 * perversion where CPIs can be well-known and consequently
		 * the triple is not unique.  We hide this fact from
		 * ourselves by fudging the top 16 bits to make
		 * the property true internally!
		 */
		switch (ntohl(next_spi))
  47019c:	8fc30060 	lw	v1,96(s8)
  4701a0:	24020002 	li	v0,2
  4701a4:	10620003 	beq	v1,v0,4701b4 <parse_ipsec_sa_body+0x338>
  4701a8:	00000000 	nop
  4701ac:	1000001d 	b	470224 <parse_ipsec_sa_body+0x3a8>
  4701b0:	00000000 	nop
		{
		case IPCOMP_DEFLATE:
		    well_known_cpi = ntohl(next_spi);
  4701b4:	97c20062 	lhu	v0,98(s8)
  4701b8:	00000000 	nop
  4701bc:	a7c20100 	sh	v0,256(s8)
		    next_spi = uniquify_his_cpi(next_spi, st);
  4701c0:	8fc40060 	lw	a0,96(s8)
  4701c4:	8fc50270 	lw	a1,624(s8)
  4701c8:	8f998144 	lw	t9,-32444(gp)
  4701cc:	00000000 	nop
  4701d0:	0320f809 	jalr	t9
  4701d4:	00000000 	nop
  4701d8:	8fdc0028 	lw	gp,40(s8)
  4701dc:	afc20060 	sw	v0,96(s8)
		    if (next_spi == 0)
  4701e0:	8fc20060 	lw	v0,96(s8)
  4701e4:	00000000 	nop
  4701e8:	1440005f 	bnez	v0,470368 <parse_ipsec_sa_body+0x4ec>
  4701ec:	00000000 	nop
		    {
			loglog(RC_LOG_SERIOUS
  4701f0:	24040003 	li	a0,3
  4701f4:	8f85802c 	lw	a1,-32724(gp)
  4701f8:	00000000 	nop
  4701fc:	24a55544 	addiu	a1,a1,21828
  470200:	8f998c48 	lw	t9,-29624(gp)
  470204:	00000000 	nop
  470208:	0320f809 	jalr	t9
  47020c:	00000000 	nop
  470210:	8fdc0028 	lw	gp,40(s8)
  470214:	00000000 	nop
			    , "IPsec Proposal contains well-known CPI that I cannot uniquify");
			return INVALID_SPI;
  470218:	2402000b 	li	v0,11
  47021c:	100005f9 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470220:	00000000 	nop
		    }
		    break;
		default:
		    if (ntohl(next_spi) < IPCOMP_FIRST_NEGOTIATED
		    || ntohl(next_spi) > IPCOMP_LAST_NEGOTIATED)
  470224:	8fc20060 	lw	v0,96(s8)
  470228:	00000000 	nop
  47022c:	2c420100 	sltiu	v0,v0,256
  470230:	14400009 	bnez	v0,470258 <parse_ipsec_sa_body+0x3dc>
  470234:	00000000 	nop
  470238:	3402efff 	li	v0,0xefff
  47023c:	8fc30060 	lw	v1,96(s8)
  470240:	00000000 	nop
  470244:	0043102b 	sltu	v0,v0,v1
  470248:	14400003 	bnez	v0,470258 <parse_ipsec_sa_body+0x3dc>
  47024c:	00000000 	nop
  470250:	10000045 	b	470368 <parse_ipsec_sa_body+0x4ec>
  470254:	00000000 	nop
		    {
			loglog(RC_LOG_SERIOUS, "IPsec Proposal contains CPI from non-negotiated range (0x%lx)"
  470258:	24040003 	li	a0,3
  47025c:	8f85802c 	lw	a1,-32724(gp)
  470260:	00000000 	nop
  470264:	24a55584 	addiu	a1,a1,21892
  470268:	8fc60060 	lw	a2,96(s8)
  47026c:	8f998c48 	lw	t9,-29624(gp)
  470270:	00000000 	nop
  470274:	0320f809 	jalr	t9
  470278:	00000000 	nop
  47027c:	8fdc0028 	lw	gp,40(s8)
  470280:	00000000 	nop
			    , (unsigned long) ntohl(next_spi));
			return INVALID_SPI;
  470284:	2402000b 	li	v0,11
  470288:	100005de 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  47028c:	00000000 	nop
		    }
		    break;
		}
	    }
	    else
	    {
		/* AH or ESP SPI */
		if (next_proposal.isap_spisize != IPSEC_DOI_SPI_SIZE)
  470290:	93c3005e 	lbu	v1,94(s8)
  470294:	24020004 	li	v0,4
  470298:	10620010 	beq	v1,v0,4702dc <parse_ipsec_sa_body+0x460>
  47029c:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "IPsec Proposal with improper SPI size (%u)"
  4702a0:	93c2005e 	lbu	v0,94(s8)
  4702a4:	24040003 	li	a0,3
  4702a8:	8f85802c 	lw	a1,-32724(gp)
  4702ac:	00000000 	nop
  4702b0:	24a555c4 	addiu	a1,a1,21956
  4702b4:	00403021 	move	a2,v0
  4702b8:	8f998c48 	lw	t9,-29624(gp)
  4702bc:	00000000 	nop
  4702c0:	0320f809 	jalr	t9
  4702c4:	00000000 	nop
  4702c8:	8fdc0028 	lw	gp,40(s8)
  4702cc:	00000000 	nop
			, next_proposal.isap_spisize);
		    return INVALID_SPI;
  4702d0:	2402000b 	li	v0,11
  4702d4:	100005cb 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  4702d8:	00000000 	nop
		}

		if (!in_raw((u_char *)&next_spi, sizeof(next_spi), &next_proposal_pbs, "SPI"))
  4702dc:	27c40060 	addiu	a0,s8,96
  4702e0:	24050004 	li	a1,4
  4702e4:	27c60038 	addiu	a2,s8,56
  4702e8:	8f87802c 	lw	a3,-32724(gp)
  4702ec:	00000000 	nop
  4702f0:	24e7492c 	addiu	a3,a3,18732
  4702f4:	8f99867c 	lw	t9,-31108(gp)
  4702f8:	00000000 	nop
  4702fc:	0320f809 	jalr	t9
  470300:	00000000 	nop
  470304:	8fdc0028 	lw	gp,40(s8)
  470308:	14400004 	bnez	v0,47031c <parse_ipsec_sa_body+0x4a0>
  47030c:	00000000 	nop
		    return INVALID_SPI;
  470310:	2402000b 	li	v0,11
  470314:	100005bb 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470318:	00000000 	nop

		/* SPI value 0 is invalid and values 1-255 are reserved to IANA.
		 * RFC 2402 (ESP) 2.4, RFC 2406 (AH) 2.1
		 * IPCOMP???
		 */
		if (ntohl(next_spi) < IPSEC_DOI_SPI_MIN)
  47031c:	8fc20060 	lw	v0,96(s8)
  470320:	00000000 	nop
  470324:	2c420100 	sltiu	v0,v0,256
  470328:	1040000f 	beqz	v0,470368 <parse_ipsec_sa_body+0x4ec>
  47032c:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "IPsec Proposal contains invalid SPI (0x%lx)"
  470330:	24040003 	li	a0,3
  470334:	8f85802c 	lw	a1,-32724(gp)
  470338:	00000000 	nop
  47033c:	24a555f0 	addiu	a1,a1,22000
  470340:	8fc60060 	lw	a2,96(s8)
  470344:	8f998c48 	lw	t9,-29624(gp)
  470348:	00000000 	nop
  47034c:	0320f809 	jalr	t9
  470350:	00000000 	nop
  470354:	8fdc0028 	lw	gp,40(s8)
  470358:	00000000 	nop
			, (unsigned long) ntohl(next_spi));
		    return INVALID_SPI;
  47035c:	2402000b 	li	v0,11
  470360:	100005a8 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470364:	00000000 	nop
		}
	    }

	    if (next_proposal.isap_notrans == 0)
  470368:	93c2005f 	lbu	v0,95(s8)
  47036c:	00000000 	nop
  470370:	1440000e 	bnez	v0,4703ac <parse_ipsec_sa_body+0x530>
  470374:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "IPsec Proposal contains no Transforms");
  470378:	24040003 	li	a0,3
  47037c:	8f85802c 	lw	a1,-32724(gp)
  470380:	00000000 	nop
  470384:	24a5561c 	addiu	a1,a1,22044
  470388:	8f998c48 	lw	t9,-29624(gp)
  47038c:	00000000 	nop
  470390:	0320f809 	jalr	t9
  470394:	00000000 	nop
  470398:	8fdc0028 	lw	gp,40(s8)
  47039c:	00000000 	nop
		return BAD_PROPOSAL_SYNTAX;
  4703a0:	2402000f 	li	v0,15
  4703a4:	10000597 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  4703a8:	00000000 	nop
	    }

	    switch (next_proposal.isap_protoid)
  4703ac:	93c2005d 	lbu	v0,93(s8)
  4703b0:	00000000 	nop
  4703b4:	afc201f8 	sw	v0,504(s8)
  4703b8:	24020003 	li	v0,3
  4703bc:	8fc301f8 	lw	v1,504(s8)
  4703c0:	00000000 	nop
  4703c4:	1062004c 	beq	v1,v0,4704f8 <parse_ipsec_sa_body+0x67c>
  4703c8:	00000000 	nop
  4703cc:	8fc401f8 	lw	a0,504(s8)
  4703d0:	00000000 	nop
  4703d4:	28820004 	slti	v0,a0,4
  4703d8:	10400008 	beqz	v0,4703fc <parse_ipsec_sa_body+0x580>
  4703dc:	00000000 	nop
  4703e0:	24020002 	li	v0,2
  4703e4:	8fc501f8 	lw	a1,504(s8)
  4703e8:	00000000 	nop
  4703ec:	10a2000a 	beq	a1,v0,470418 <parse_ipsec_sa_body+0x59c>
  4703f0:	00000000 	nop
  4703f4:	100000b0 	b	4706b8 <parse_ipsec_sa_body+0x83c>
  4703f8:	00000000 	nop
  4703fc:	24020004 	li	v0,4
  470400:	8fc301f8 	lw	v1,504(s8)
  470404:	00000000 	nop
  470408:	10620073 	beq	v1,v0,4705d8 <parse_ipsec_sa_body+0x75c>
  47040c:	00000000 	nop
  470410:	100000a9 	b	4706b8 <parse_ipsec_sa_body+0x83c>
  470414:	00000000 	nop
	    {
	    case PROTO_IPSEC_AH:
		if (ah_seen)
  470418:	8fc200f4 	lw	v0,244(s8)
  47041c:	00000000 	nop
  470420:	1040000e 	beqz	v0,47045c <parse_ipsec_sa_body+0x5e0>
  470424:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "IPsec SA contains two simultaneous AH Proposals");
  470428:	24040003 	li	a0,3
  47042c:	8f85802c 	lw	a1,-32724(gp)
  470430:	00000000 	nop
  470434:	24a55644 	addiu	a1,a1,22084
  470438:	8f998c48 	lw	t9,-29624(gp)
  47043c:	00000000 	nop
  470440:	0320f809 	jalr	t9
  470444:	00000000 	nop
  470448:	8fdc0028 	lw	gp,40(s8)
  47044c:	00000000 	nop
		    return BAD_PROPOSAL_SYNTAX;
  470450:	2402000f 	li	v0,15
  470454:	1000056b 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470458:	00000000 	nop
		}
		ah_seen = TRUE;
  47045c:	24020001 	li	v0,1
  470460:	afc200f4 	sw	v0,244(s8)
		ah_prop_pbs = next_proposal_pbs;
  470464:	8fc20038 	lw	v0,56(s8)
  470468:	00000000 	nop
  47046c:	afc20070 	sw	v0,112(s8)
  470470:	8fc2003c 	lw	v0,60(s8)
  470474:	00000000 	nop
  470478:	afc20074 	sw	v0,116(s8)
  47047c:	8fc20040 	lw	v0,64(s8)
  470480:	00000000 	nop
  470484:	afc20078 	sw	v0,120(s8)
  470488:	8fc20044 	lw	v0,68(s8)
  47048c:	00000000 	nop
  470490:	afc2007c 	sw	v0,124(s8)
  470494:	8fc20048 	lw	v0,72(s8)
  470498:	00000000 	nop
  47049c:	afc20080 	sw	v0,128(s8)
  4704a0:	8fc2004c 	lw	v0,76(s8)
  4704a4:	00000000 	nop
  4704a8:	afc20084 	sw	v0,132(s8)
  4704ac:	8fc20050 	lw	v0,80(s8)
  4704b0:	00000000 	nop
  4704b4:	afc20088 	sw	v0,136(s8)
  4704b8:	8fc20054 	lw	v0,84(s8)
  4704bc:	00000000 	nop
  4704c0:	afc2008c 	sw	v0,140(s8)
		ah_proposal = next_proposal;
  4704c4:	87c40058 	lh	a0,88(s8)
  4704c8:	87c5005a 	lh	a1,90(s8)
  4704cc:	87c2005c 	lh	v0,92(s8)
  4704d0:	87c3005e 	lh	v1,94(s8)
  4704d4:	a7c400d0 	sh	a0,208(s8)
  4704d8:	a7c500d2 	sh	a1,210(s8)
  4704dc:	a7c200d4 	sh	v0,212(s8)
  4704e0:	a7c300d6 	sh	v1,214(s8)
		ah_spi = next_spi;
  4704e4:	8fc20060 	lw	v0,96(s8)
  4704e8:	00000000 	nop
  4704ec:	afc200e8 	sw	v0,232(s8)
		break;
  4704f0:	10000087 	b	470710 <parse_ipsec_sa_body+0x894>
  4704f4:	00000000 	nop

	    case PROTO_IPSEC_ESP:
		if (esp_seen)
  4704f8:	8fc200f8 	lw	v0,248(s8)
  4704fc:	00000000 	nop
  470500:	1040000e 	beqz	v0,47053c <parse_ipsec_sa_body+0x6c0>
  470504:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "IPsec SA contains two simultaneous ESP Proposals");
  470508:	24040003 	li	a0,3
  47050c:	8f85802c 	lw	a1,-32724(gp)
  470510:	00000000 	nop
  470514:	24a55674 	addiu	a1,a1,22132
  470518:	8f998c48 	lw	t9,-29624(gp)
  47051c:	00000000 	nop
  470520:	0320f809 	jalr	t9
  470524:	00000000 	nop
  470528:	8fdc0028 	lw	gp,40(s8)
  47052c:	00000000 	nop
		    return BAD_PROPOSAL_SYNTAX;
  470530:	2402000f 	li	v0,15
  470534:	10000533 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470538:	00000000 	nop
		}
		esp_seen = TRUE;
  47053c:	24020001 	li	v0,1
  470540:	afc200f8 	sw	v0,248(s8)
		esp_prop_pbs = next_proposal_pbs;
  470544:	8fc20038 	lw	v0,56(s8)
  470548:	00000000 	nop
  47054c:	afc20090 	sw	v0,144(s8)
  470550:	8fc2003c 	lw	v0,60(s8)
  470554:	00000000 	nop
  470558:	afc20094 	sw	v0,148(s8)
  47055c:	8fc20040 	lw	v0,64(s8)
  470560:	00000000 	nop
  470564:	afc20098 	sw	v0,152(s8)
  470568:	8fc20044 	lw	v0,68(s8)
  47056c:	00000000 	nop
  470570:	afc2009c 	sw	v0,156(s8)
  470574:	8fc20048 	lw	v0,72(s8)
  470578:	00000000 	nop
  47057c:	afc200a0 	sw	v0,160(s8)
  470580:	8fc2004c 	lw	v0,76(s8)
  470584:	00000000 	nop
  470588:	afc200a4 	sw	v0,164(s8)
  47058c:	8fc20050 	lw	v0,80(s8)
  470590:	00000000 	nop
  470594:	afc200a8 	sw	v0,168(s8)
  470598:	8fc20054 	lw	v0,84(s8)
  47059c:	00000000 	nop
  4705a0:	afc200ac 	sw	v0,172(s8)
		esp_proposal = next_proposal;
  4705a4:	87c40058 	lh	a0,88(s8)
  4705a8:	87c5005a 	lh	a1,90(s8)
  4705ac:	87c2005c 	lh	v0,92(s8)
  4705b0:	87c3005e 	lh	v1,94(s8)
  4705b4:	a7c400d8 	sh	a0,216(s8)
  4705b8:	a7c500da 	sh	a1,218(s8)
  4705bc:	a7c200dc 	sh	v0,220(s8)
  4705c0:	a7c300de 	sh	v1,222(s8)
		esp_spi = next_spi;
  4705c4:	8fc20060 	lw	v0,96(s8)
  4705c8:	00000000 	nop
  4705cc:	afc200ec 	sw	v0,236(s8)
		break;
  4705d0:	1000004f 	b	470710 <parse_ipsec_sa_body+0x894>
  4705d4:	00000000 	nop

	    case PROTO_IPCOMP:
		if (ipcomp_seen)
  4705d8:	8fc200fc 	lw	v0,252(s8)
  4705dc:	00000000 	nop
  4705e0:	1040000e 	beqz	v0,47061c <parse_ipsec_sa_body+0x7a0>
  4705e4:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "IPsec SA contains two simultaneous IPCOMP Proposals");
  4705e8:	24040003 	li	a0,3
  4705ec:	8f85802c 	lw	a1,-32724(gp)
  4705f0:	00000000 	nop
  4705f4:	24a556a8 	addiu	a1,a1,22184
  4705f8:	8f998c48 	lw	t9,-29624(gp)
  4705fc:	00000000 	nop
  470600:	0320f809 	jalr	t9
  470604:	00000000 	nop
  470608:	8fdc0028 	lw	gp,40(s8)
  47060c:	00000000 	nop
		    return BAD_PROPOSAL_SYNTAX;
  470610:	2402000f 	li	v0,15
  470614:	100004fb 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470618:	00000000 	nop
		}
		ipcomp_seen = TRUE;
  47061c:	24020001 	li	v0,1
  470620:	afc200fc 	sw	v0,252(s8)
		ipcomp_prop_pbs = next_proposal_pbs;
  470624:	8fc20038 	lw	v0,56(s8)
  470628:	00000000 	nop
  47062c:	afc200b0 	sw	v0,176(s8)
  470630:	8fc2003c 	lw	v0,60(s8)
  470634:	00000000 	nop
  470638:	afc200b4 	sw	v0,180(s8)
  47063c:	8fc20040 	lw	v0,64(s8)
  470640:	00000000 	nop
  470644:	afc200b8 	sw	v0,184(s8)
  470648:	8fc20044 	lw	v0,68(s8)
  47064c:	00000000 	nop
  470650:	afc200bc 	sw	v0,188(s8)
  470654:	8fc20048 	lw	v0,72(s8)
  470658:	00000000 	nop
  47065c:	afc200c0 	sw	v0,192(s8)
  470660:	8fc2004c 	lw	v0,76(s8)
  470664:	00000000 	nop
  470668:	afc200c4 	sw	v0,196(s8)
  47066c:	8fc20050 	lw	v0,80(s8)
  470670:	00000000 	nop
  470674:	afc200c8 	sw	v0,200(s8)
  470678:	8fc20054 	lw	v0,84(s8)
  47067c:	00000000 	nop
  470680:	afc200cc 	sw	v0,204(s8)
		ipcomp_proposal = next_proposal;
  470684:	87c40058 	lh	a0,88(s8)
  470688:	87c5005a 	lh	a1,90(s8)
  47068c:	87c2005c 	lh	v0,92(s8)
  470690:	87c3005e 	lh	v1,94(s8)
  470694:	a7c400e0 	sh	a0,224(s8)
  470698:	a7c500e2 	sh	a1,226(s8)
  47069c:	a7c200e4 	sh	v0,228(s8)
  4706a0:	a7c300e6 	sh	v1,230(s8)
		ipcomp_cpi = next_spi;
  4706a4:	8fc20060 	lw	v0,96(s8)
  4706a8:	00000000 	nop
  4706ac:	afc200f0 	sw	v0,240(s8)
		break;
  4706b0:	10000017 	b	470710 <parse_ipsec_sa_body+0x894>
  4706b4:	00000000 	nop

	    default:
		loglog(RC_LOG_SERIOUS, "unexpected Protocol ID (%s) in IPsec Proposal"
  4706b8:	93c2005d 	lbu	v0,93(s8)
  4706bc:	8f848ab4 	lw	a0,-30028(gp)
  4706c0:	00402821 	move	a1,v0
  4706c4:	8f9987fc 	lw	t9,-30724(gp)
  4706c8:	00000000 	nop
  4706cc:	0320f809 	jalr	t9
  4706d0:	00000000 	nop
  4706d4:	8fdc0028 	lw	gp,40(s8)
  4706d8:	24040003 	li	a0,3
  4706dc:	8f85802c 	lw	a1,-32724(gp)
  4706e0:	00000000 	nop
  4706e4:	24a556dc 	addiu	a1,a1,22236
  4706e8:	00403021 	move	a2,v0
  4706ec:	8f998c48 	lw	t9,-29624(gp)
  4706f0:	00000000 	nop
  4706f4:	0320f809 	jalr	t9
  4706f8:	00000000 	nop
  4706fc:	8fdc0028 	lw	gp,40(s8)
  470700:	00000000 	nop
		    , enum_show(&protocol_names, next_proposal.isap_protoid));
		return INVALID_PROTOCOL_ID;
  470704:	2402000a 	li	v0,10
  470708:	100004be 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  47070c:	00000000 	nop
	    }

	    /* refill next_proposal */
	    if (next_proposal.isap_np == ISAKMP_NEXT_NONE)
  470710:	93c20058 	lbu	v0,88(s8)
  470714:	00000000 	nop
  470718:	14400004 	bnez	v0,47072c <parse_ipsec_sa_body+0x8b0>
  47071c:	00000000 	nop
	    {
		next_full = FALSE;
  470720:	afc00064 	sw	zero,100(s8)
		break;
  470724:	1000002e 	b	4707e0 <parse_ipsec_sa_body+0x964>
  470728:	00000000 	nop
	    }
	    else if (next_proposal.isap_np != ISAKMP_NEXT_P)
  47072c:	93c30058 	lbu	v1,88(s8)
  470730:	24020002 	li	v0,2
  470734:	10620017 	beq	v1,v0,470794 <parse_ipsec_sa_body+0x918>
  470738:	00000000 	nop
	    {
		loglog(RC_LOG_SERIOUS, "unexpected in Proposal: %s"
  47073c:	93c20058 	lbu	v0,88(s8)
  470740:	8f8483f4 	lw	a0,-31756(gp)
  470744:	00402821 	move	a1,v0
  470748:	8f9987fc 	lw	t9,-30724(gp)
  47074c:	00000000 	nop
  470750:	0320f809 	jalr	t9
  470754:	00000000 	nop
  470758:	8fdc0028 	lw	gp,40(s8)
  47075c:	24040003 	li	a0,3
  470760:	8f85802c 	lw	a1,-32724(gp)
  470764:	00000000 	nop
  470768:	24a5570c 	addiu	a1,a1,22284
  47076c:	00403021 	move	a2,v0
  470770:	8f998c48 	lw	t9,-29624(gp)
  470774:	00000000 	nop
  470778:	0320f809 	jalr	t9
  47077c:	00000000 	nop
  470780:	8fdc0028 	lw	gp,40(s8)
  470784:	00000000 	nop
		    , enum_show(&payload_names, next_proposal.isap_np));
		return BAD_PROPOSAL_SYNTAX;
  470788:	2402000f 	li	v0,15
  47078c:	1000049d 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470790:	00000000 	nop
	    }

	    if (!in_struct(&next_proposal, &isakmp_proposal_desc, sa_pbs, &next_proposal_pbs))
  470794:	27c40058 	addiu	a0,s8,88
  470798:	8f85821c 	lw	a1,-32228(gp)
  47079c:	8fc60260 	lw	a2,608(s8)
  4707a0:	27c70038 	addiu	a3,s8,56
  4707a4:	8f998b3c 	lw	t9,-29892(gp)
  4707a8:	00000000 	nop
  4707ac:	0320f809 	jalr	t9
  4707b0:	00000000 	nop
  4707b4:	8fdc0028 	lw	gp,40(s8)
  4707b8:	14400004 	bnez	v0,4707cc <parse_ipsec_sa_body+0x950>
  4707bc:	00000000 	nop
		return BAD_PROPOSAL_SYNTAX;
  4707c0:	2402000f 	li	v0,15
  4707c4:	1000048f 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  4707c8:	00000000 	nop
	} while (next_proposal.isap_proposal == propno);
  4707cc:	93c3005c 	lbu	v1,92(s8)
  4707d0:	8fc20068 	lw	v0,104(s8)
  4707d4:	00000000 	nop
  4707d8:	1062fe21 	beq	v1,v0,470060 <parse_ipsec_sa_body+0x1e4>
  4707dc:	00000000 	nop

	/* Now that we have all conjuncts, we should try
	 * the Cartesian product of eachs tranforms!
	 * At the moment, we take short-cuts on account of
	 * our rudimentary hard-wired policy.
	 * For now, we find an acceptable AH (if any)
	 * and then an acceptable ESP.  The only interaction
	 * is that the ESP acceptance can know whether there
	 * was an acceptable AH and hence not require an AUTH.
	 */

	if (ah_seen)
  4707e0:	8fc200f4 	lw	v0,244(s8)
  4707e4:	00000000 	nop
  4707e8:	104000cc 	beqz	v0,470b1c <parse_ipsec_sa_body+0xca0>
  4707ec:	00000000 	nop
	{
	    int previous_transnum = -1;
  4707f0:	2402ffff 	li	v0,-1
  4707f4:	afc201d0 	sw	v0,464(s8)
	    int tn;

	    for (tn = 0; tn != ah_proposal.isap_notrans; tn++)
  4707f8:	afc001d4 	sw	zero,468(s8)
  4707fc:	93c300d7 	lbu	v1,215(s8)
  470800:	8fc201d4 	lw	v0,468(s8)
  470804:	00000000 	nop
  470808:	14430003 	bne	v0,v1,470818 <parse_ipsec_sa_body+0x99c>
  47080c:	00000000 	nop
  470810:	100000b8 	b	470af4 <parse_ipsec_sa_body+0xc78>
  470814:	00000000 	nop
	    {
		int ok_transid = 0;
  470818:	afc001d8 	sw	zero,472(s8)
		bool ok_auth = FALSE;
  47081c:	afc001dc 	sw	zero,476(s8)

		if (!parse_ipsec_transform(&ah_trans
		, &ah_attrs
		, &ah_prop_pbs
		, &ah_trans_pbs
		, &isakmp_ah_transform_desc
		, previous_transnum
		, selection
		, tn == ah_proposal.isap_notrans - 1
		, FALSE
		, st))
  470820:	8f8283fc 	lw	v0,-31748(gp)
  470824:	00000000 	nop
  470828:	afa20010 	sw	v0,16(sp)
  47082c:	8fc201d0 	lw	v0,464(s8)
  470830:	00000000 	nop
  470834:	afa20014 	sw	v0,20(sp)
  470838:	8fc2026c 	lw	v0,620(s8)
  47083c:	00000000 	nop
  470840:	afa20018 	sw	v0,24(sp)
  470844:	93c200d7 	lbu	v0,215(s8)
  470848:	00000000 	nop
  47084c:	2443ffff 	addiu	v1,v0,-1
  470850:	8fc201d4 	lw	v0,468(s8)
  470854:	00000000 	nop
  470858:	00431026 	xor	v0,v0,v1
  47085c:	2c420001 	sltiu	v0,v0,1
  470860:	afa2001c 	sw	v0,28(sp)
  470864:	afa00020 	sw	zero,32(sp)
  470868:	8fc20270 	lw	v0,624(s8)
  47086c:	00000000 	nop
  470870:	afa20024 	sw	v0,36(sp)
  470874:	27c40168 	addiu	a0,s8,360
  470878:	27c50180 	addiu	a1,s8,384
  47087c:	27c60070 	addiu	a2,s8,112
  470880:	27c70108 	addiu	a3,s8,264
  470884:	8f998040 	lw	t9,-32704(gp)
  470888:	00000000 	nop
  47088c:	2739eb58 	addiu	t9,t9,-5288
  470890:	00000000 	nop
  470894:	0320f809 	jalr	t9
  470898:	00000000 	nop
  47089c:	8fdc0028 	lw	gp,40(s8)
  4708a0:	14400004 	bnez	v0,4708b4 <parse_ipsec_sa_body+0xa38>
  4708a4:	00000000 	nop
		    return BAD_PROPOSAL_SYNTAX;
  4708a8:	2402000f 	li	v0,15
  4708ac:	10000455 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  4708b0:	00000000 	nop

		previous_transnum = ah_trans.isat_transnum;
  4708b4:	93c2016c 	lbu	v0,364(s8)
  4708b8:	00000000 	nop
  4708bc:	afc201d0 	sw	v0,464(s8)

		/* we must understand ah_attrs.transid
		 * COMBINED with ah_attrs.auth.
		 * See draft-ietf-ipsec-ipsec-doi-08.txt 4.4.3
		 * The following combinations are legal,
		 * but we don't implement all of them:
		 * It seems as if each auth algorithm
		 * only applies to one ah transid.
		 * AH_MD5, AUTH_ALGORITHM_HMAC_MD5
		 * AH_MD5, AUTH_ALGORITHM_KPDK (unimplemented)
		 * AH_SHA, AUTH_ALGORITHM_HMAC_SHA1
		 * AH_DES, AUTH_ALGORITHM_DES_MAC (unimplemented)
		 */
		switch (ah_attrs.auth)
  4708c0:	97c40192 	lhu	a0,402(s8)
  4708c4:	00000000 	nop
  4708c8:	afc401fc 	sw	a0,508(s8)
  4708cc:	8fc501fc 	lw	a1,508(s8)
  4708d0:	00000000 	nop
  4708d4:	2ca20005 	sltiu	v0,a1,5
  4708d8:	10400028 	beqz	v0,47097c <parse_ipsec_sa_body+0xb00>
  4708dc:	00000000 	nop
  4708e0:	8fc201fc 	lw	v0,508(s8)
  4708e4:	00000000 	nop
  4708e8:	00021080 	sll	v0,v0,0x2
  4708ec:	8f81802c 	lw	at,-32724(gp)
  4708f0:	00000000 	nop
  4708f4:	24215af0 	addiu	at,at,23280
  4708f8:	00221021 	addu	v0,at,v0
  4708fc:	8c420000 	lw	v0,0(v0)
  470900:	00000000 	nop
  470904:	005c1021 	addu	v0,v0,gp
  470908:	00400008 	jr	v0
  47090c:	00000000 	nop
		{
		    case AUTH_ALGORITHM_NONE:
			loglog(RC_LOG_SERIOUS, "AUTH_ALGORITHM attribute missing in AH Transform");
  470910:	24040003 	li	a0,3
  470914:	8f85802c 	lw	a1,-32724(gp)
  470918:	00000000 	nop
  47091c:	24a55728 	addiu	a1,a1,22312
  470920:	8f998c48 	lw	t9,-29624(gp)
  470924:	00000000 	nop
  470928:	0320f809 	jalr	t9
  47092c:	00000000 	nop
  470930:	8fdc0028 	lw	gp,40(s8)
  470934:	00000000 	nop
			return BAD_PROPOSAL_SYNTAX;
  470938:	2402000f 	li	v0,15
  47093c:	10000431 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470940:	00000000 	nop

		    case AUTH_ALGORITHM_HMAC_MD5:
			ok_auth = TRUE;
  470944:	24020001 	li	v0,1
  470948:	afc201dc 	sw	v0,476(s8)
			/* fall through */
		    case AUTH_ALGORITHM_KPDK:
			ok_transid = AH_MD5;
  47094c:	24020002 	li	v0,2
  470950:	afc201d8 	sw	v0,472(s8)
			break;
  470954:	10000009 	b	47097c <parse_ipsec_sa_body+0xb00>
  470958:	00000000 	nop

		    case AUTH_ALGORITHM_HMAC_SHA1:
			ok_auth = TRUE;
  47095c:	24020001 	li	v0,1
  470960:	afc201dc 	sw	v0,476(s8)
			ok_transid = AH_SHA;
  470964:	24020003 	li	v0,3
  470968:	afc201d8 	sw	v0,472(s8)
			break;
  47096c:	10000003 	b	47097c <parse_ipsec_sa_body+0xb00>
  470970:	00000000 	nop

		    case AUTH_ALGORITHM_DES_MAC:
			ok_transid = AH_DES;
  470974:	24020004 	li	v0,4
  470978:	afc201d8 	sw	v0,472(s8)
			break;
		}
		if (ah_attrs.transid != ok_transid)
  47097c:	93c30180 	lbu	v1,384(s8)
  470980:	8fc201d8 	lw	v0,472(s8)
  470984:	00000000 	nop
  470988:	10620021 	beq	v1,v0,470a10 <parse_ipsec_sa_body+0xb94>
  47098c:	00000000 	nop
		{
		    loglog(RC_LOG_SERIOUS, "%s attribute inappropriate in %s Transform"
  470990:	97c20192 	lhu	v0,402(s8)
  470994:	8f848424 	lw	a0,-31708(gp)
  470998:	00402821 	move	a1,v0
  47099c:	8f9984bc 	lw	t9,-31556(gp)
  4709a0:	00000000 	nop
  4709a4:	0320f809 	jalr	t9
  4709a8:	00000000 	nop
  4709ac:	8fdc0028 	lw	gp,40(s8)
  4709b0:	00408021 	move	s0,v0
  4709b4:	93c20180 	lbu	v0,384(s8)
  4709b8:	8f8487a4 	lw	a0,-30812(gp)
  4709bc:	00402821 	move	a1,v0
  4709c0:	8f9987fc 	lw	t9,-30724(gp)
  4709c4:	00000000 	nop
  4709c8:	0320f809 	jalr	t9
  4709cc:	00000000 	nop
  4709d0:	8fdc0028 	lw	gp,40(s8)
  4709d4:	24040003 	li	a0,3
  4709d8:	8f85802c 	lw	a1,-32724(gp)
  4709dc:	00000000 	nop
  4709e0:	24a5575c 	addiu	a1,a1,22364
  4709e4:	02003021 	move	a2,s0
  4709e8:	00403821 	move	a3,v0
  4709ec:	8f998c48 	lw	t9,-29624(gp)
  4709f0:	00000000 	nop
  4709f4:	0320f809 	jalr	t9
  4709f8:	00000000 	nop
  4709fc:	8fdc0028 	lw	gp,40(s8)
  470a00:	00000000 	nop
			, enum_name(&auth_alg_names, ah_attrs.auth)
			, enum_show(&ah_transformid_names, ah_attrs.transid));
		    return BAD_PROPOSAL_SYNTAX;
  470a04:	2402000f 	li	v0,15
  470a08:	100003fe 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470a0c:	00000000 	nop
		}
		if (!ok_auth)
  470a10:	8fc201dc 	lw	v0,476(s8)
  470a14:	00000000 	nop
  470a18:	14400036 	bnez	v0,470af4 <parse_ipsec_sa_body+0xc78>
  470a1c:	00000000 	nop
		{
		    DBG(DBG_CONTROL | DBG_CRYPT
  470a20:	8f8284f8 	lw	v0,-31496(gp)
  470a24:	00000000 	nop
  470a28:	8c420000 	lw	v0,0(v0)
  470a2c:	00000000 	nop
  470a30:	30420012 	andi	v0,v0,0x12
  470a34:	10400029 	beqz	v0,470adc <parse_ipsec_sa_body+0xc60>
  470a38:	00000000 	nop
  470a3c:	97c20192 	lhu	v0,402(s8)
  470a40:	8f848424 	lw	a0,-31708(gp)
  470a44:	00402821 	move	a1,v0
  470a48:	8f9984bc 	lw	t9,-31556(gp)
  470a4c:	00000000 	nop
  470a50:	0320f809 	jalr	t9
  470a54:	00000000 	nop
  470a58:	8fdc0028 	lw	gp,40(s8)
  470a5c:	00408821 	move	s1,v0
  470a60:	93c20180 	lbu	v0,384(s8)
  470a64:	8f8487a4 	lw	a0,-30812(gp)
  470a68:	00402821 	move	a1,v0
  470a6c:	8f9987fc 	lw	t9,-30724(gp)
  470a70:	00000000 	nop
  470a74:	0320f809 	jalr	t9
  470a78:	00000000 	nop
  470a7c:	8fdc0028 	lw	gp,40(s8)
  470a80:	00408021 	move	s0,v0
  470a84:	8fc20030 	lw	v0,48(s8)
  470a88:	00000000 	nop
  470a8c:	24420108 	addiu	v0,v0,264
  470a90:	00402021 	move	a0,v0
  470a94:	8f998100 	lw	t9,-32512(gp)
  470a98:	00000000 	nop
  470a9c:	0320f809 	jalr	t9
  470aa0:	00000000 	nop
  470aa4:	8fdc0028 	lw	gp,40(s8)
  470aa8:	00000000 	nop
  470aac:	8f84802c 	lw	a0,-32724(gp)
  470ab0:	00000000 	nop
  470ab4:	24845788 	addiu	a0,a0,22408
  470ab8:	02202821 	move	a1,s1
  470abc:	02003021 	move	a2,s0
  470ac0:	00403821 	move	a3,v0
  470ac4:	8f9983b8 	lw	t9,-31816(gp)
  470ac8:	00000000 	nop
  470acc:	0320f809 	jalr	t9
  470ad0:	00000000 	nop
  470ad4:	8fdc0028 	lw	gp,40(s8)
  470ad8:	00000000 	nop
  470adc:	8fc201d4 	lw	v0,468(s8)
  470ae0:	00000000 	nop
  470ae4:	24420001 	addiu	v0,v0,1
  470ae8:	afc201d4 	sw	v0,468(s8)
  470aec:	1000ff43 	b	4707fc <parse_ipsec_sa_body+0x980>
  470af0:	00000000 	nop
			, DBG_log("%s attribute unsupported"
			    " in %s Transform from %s"
			    , enum_name(&auth_alg_names, ah_attrs.auth)
			    , enum_show(&ah_transformid_names, ah_attrs.transid)
			    , ip_str(&c->that.host_addr)));
		    continue;   /* try another */
		}
		break;	/* we seem to be happy */
	    }
	    if (tn == ah_proposal.isap_notrans)
  470af4:	93c300d7 	lbu	v1,215(s8)
  470af8:	8fc201d4 	lw	v0,468(s8)
  470afc:	00000000 	nop
  470b00:	14430003 	bne	v0,v1,470b10 <parse_ipsec_sa_body+0xc94>
  470b04:	00000000 	nop
		continue;	/* we didn't find a nice one */
  470b08:	1000fd48 	b	47002c <parse_ipsec_sa_body+0x1b0>
  470b0c:	00000000 	nop
	    ah_attrs.spi = ah_spi;
  470b10:	8fc200e8 	lw	v0,232(s8)
  470b14:	00000000 	nop
  470b18:	afc20184 	sw	v0,388(s8)
	}

	if (esp_seen)
  470b1c:	8fc200f8 	lw	v0,248(s8)
  470b20:	00000000 	nop
  470b24:	10400101 	beqz	v0,470f2c <parse_ipsec_sa_body+0x10b0>
  470b28:	00000000 	nop
	{
	    int previous_transnum = -1;
  470b2c:	2402ffff 	li	v0,-1
  470b30:	afc201dc 	sw	v0,476(s8)
	    int tn;

	    for (tn = 0; tn != esp_proposal.isap_notrans; tn++)
  470b34:	afc001d8 	sw	zero,472(s8)
  470b38:	93c300df 	lbu	v1,223(s8)
  470b3c:	8fc201d8 	lw	v0,472(s8)
  470b40:	00000000 	nop
  470b44:	14430003 	bne	v0,v1,470b54 <parse_ipsec_sa_body+0xcd8>
  470b48:	00000000 	nop
  470b4c:	100000da 	b	470eb8 <parse_ipsec_sa_body+0x103c>
  470b50:	00000000 	nop
	    {
		if (!parse_ipsec_transform(&esp_trans
		, &esp_attrs
		, &esp_prop_pbs
		, &esp_trans_pbs
		, &isakmp_esp_transform_desc
		, previous_transnum
		, selection
		, tn == esp_proposal.isap_notrans - 1
		, FALSE
		, st))
  470b54:	8f828434 	lw	v0,-31692(gp)
  470b58:	00000000 	nop
  470b5c:	afa20010 	sw	v0,16(sp)
  470b60:	8fc201dc 	lw	v0,476(s8)
  470b64:	00000000 	nop
  470b68:	afa20014 	sw	v0,20(sp)
  470b6c:	8fc2026c 	lw	v0,620(s8)
  470b70:	00000000 	nop
  470b74:	afa20018 	sw	v0,24(sp)
  470b78:	93c200df 	lbu	v0,223(s8)
  470b7c:	00000000 	nop
  470b80:	2443ffff 	addiu	v1,v0,-1
  470b84:	8fc201d8 	lw	v0,472(s8)
  470b88:	00000000 	nop
  470b8c:	00431026 	xor	v0,v0,v1
  470b90:	2c420001 	sltiu	v0,v0,1
  470b94:	afa2001c 	sw	v0,28(sp)
  470b98:	afa00020 	sw	zero,32(sp)
  470b9c:	8fc20270 	lw	v0,624(s8)
  470ba0:	00000000 	nop
  470ba4:	afa20024 	sw	v0,36(sp)
  470ba8:	27c40170 	addiu	a0,s8,368
  470bac:	27c50198 	addiu	a1,s8,408
  470bb0:	27c60090 	addiu	a2,s8,144
  470bb4:	27c70128 	addiu	a3,s8,296
  470bb8:	8f998040 	lw	t9,-32704(gp)
  470bbc:	00000000 	nop
  470bc0:	2739eb58 	addiu	t9,t9,-5288
  470bc4:	00000000 	nop
  470bc8:	0320f809 	jalr	t9
  470bcc:	00000000 	nop
  470bd0:	8fdc0028 	lw	gp,40(s8)
  470bd4:	14400004 	bnez	v0,470be8 <parse_ipsec_sa_body+0xd6c>
  470bd8:	00000000 	nop
		    return BAD_PROPOSAL_SYNTAX;
  470bdc:	2402000f 	li	v0,15
  470be0:	10000388 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  470be4:	00000000 	nop

		previous_transnum = esp_trans.isat_transnum;
  470be8:	93c20174 	lbu	v0,372(s8)
  470bec:	00000000 	nop
  470bf0:	afc201dc 	sw	v0,476(s8)

#ifndef NO_KERNEL_ALG
		if (!kernel_alg_esp_enc_ok(esp_attrs.transid, esp_attrs.key_len,
			c->alg_info_esp))
  470bf4:	93c20198 	lbu	v0,408(s8)
  470bf8:	97c301ac 	lhu	v1,428(s8)
  470bfc:	00402021 	move	a0,v0
  470c00:	00602821 	move	a1,v1
  470c04:	8fc20030 	lw	v0,48(s8)
  470c08:	00000000 	nop
  470c0c:	8c4601bc 	lw	a2,444(v0)
  470c10:	8f998310 	lw	t9,-31984(gp)
  470c14:	00000000 	nop
  470c18:	0320f809 	jalr	t9
  470c1c:	00000000 	nop
  470c20:	8fdc0028 	lw	gp,40(s8)
  470c24:	14400028 	bnez	v0,470cc8 <parse_ipsec_sa_body+0xe4c>
  470c28:	00000000 	nop
#endif
		switch (esp_attrs.transid)
		{
#if 0	/* we don't feel single DES is safe */
		    case ESP_DES:
#endif
#ifdef NO_KERNEL_ALG	/* strictly use runtime information */
		    case ESP_3DES:
			break;
#endif

#ifdef SUPPORT_ESP_NULL	/* should be about as secure as AH-only */
		    case ESP_NULL:
			if (esp_attrs.auth == AUTH_ALGORITHM_NONE)
			{
			    loglog(RC_LOG_SERIOUS, "ESP_NULL requires auth algorithm");
			    return BAD_PROPOSAL_SYNTAX;
			}
			if (st->st_policy & POLICY_ENCRYPT)
			{
			    DBG(DBG_CONTROL | DBG_CRYPT
				    , DBG_log("ESP_NULL Transform Proposal from %s"
					" does not satisfy POLICY_ENCRYPT"
					, ip_str(&c->that.host_addr)));
			    continue;   /* try another */
			}
			break;
#endif

		    default:
			DBG(DBG_CONTROL | DBG_CRYPT
  470c2c:	8f8284f8 	lw	v0,-31496(gp)
  470c30:	00000000 	nop
  470c34:	8c420000 	lw	v0,0(v0)
  470c38:	00000000 	nop
  470c3c:	30420012 	andi	v0,v0,0x12
  470c40:	10400097 	beqz	v0,470ea0 <parse_ipsec_sa_body+0x1024>
  470c44:	00000000 	nop
  470c48:	93c20198 	lbu	v0,408(s8)
  470c4c:	8f848bf8 	lw	a0,-29704(gp)
  470c50:	00402821 	move	a1,v0
  470c54:	8f9987fc 	lw	t9,-30724(gp)
  470c58:	00000000 	nop
  470c5c:	0320f809 	jalr	t9
  470c60:	00000000 	nop
  470c64:	8fdc0028 	lw	gp,40(s8)
  470c68:	00408021 	move	s0,v0
  470c6c:	8fc20030 	lw	v0,48(s8)
  470c70:	00000000 	nop
  470c74:	24420108 	addiu	v0,v0,264
  470c78:	00402021 	move	a0,v0
  470c7c:	8f998100 	lw	t9,-32512(gp)
  470c80:	00000000 	nop
  470c84:	0320f809 	jalr	t9
  470c88:	00000000 	nop
  470c8c:	8fdc0028 	lw	gp,40(s8)
  470c90:	00000000 	nop
  470c94:	8f84802c 	lw	a0,-32724(gp)
  470c98:	00000000 	nop
  470c9c:	248457bc 	addiu	a0,a0,22460
  470ca0:	02002821 	move	a1,s0
  470ca4:	00403021 	move	a2,v0
  470ca8:	8f9983b8 	lw	t9,-31816(gp)
  470cac:	00000000 	nop
  470cb0:	0320f809 	jalr	t9
  470cb4:	00000000 	nop
  470cb8:	8fdc0028 	lw	gp,40(s8)
  470cbc:	00000000 	nop
			    , DBG_log("unsupported ESP Transform %s from %s"
				, enum_show(&esp_transformid_names, esp_attrs.transid)
				, ip_str(&c->that.host_addr)));
			continue;   /* try another */
  470cc0:	10000077 	b	470ea0 <parse_ipsec_sa_body+0x1024>
  470cc4:	00000000 	nop
		}
#ifndef NO_KERNEL_ALG
		if (!kernel_alg_esp_auth_ok(esp_attrs.auth, c->alg_info_esp))
  470cc8:	97c201aa 	lhu	v0,426(s8)
  470ccc:	00000000 	nop
  470cd0:	00402021 	move	a0,v0
  470cd4:	8fc20030 	lw	v0,48(s8)
  470cd8:	00000000 	nop
  470cdc:	8c4501bc 	lw	a1,444(v0)
  470ce0:	8f9988f4 	lw	t9,-30476(gp)
  470ce4:	00000000 	nop
  470ce8:	0320f809 	jalr	t9
  470cec:	00000000 	nop
  470cf0:	8fdc0028 	lw	gp,40(s8)
  470cf4:	1440004f 	bnez	v0,470e34 <parse_ipsec_sa_body+0xfb8>
  470cf8:	00000000 	nop
#endif
		switch (esp_attrs.auth)
  470cfc:	97c201aa 	lhu	v0,426(s8)
  470d00:	00000000 	nop
  470d04:	10400003 	beqz	v0,470d14 <parse_ipsec_sa_body+0xe98>
  470d08:	00000000 	nop
  470d0c:	10000022 	b	470d98 <parse_ipsec_sa_body+0xf1c>
  470d10:	00000000 	nop
		{
		    case AUTH_ALGORITHM_NONE:
			if (!ah_seen)
  470d14:	8fc200f4 	lw	v0,244(s8)
  470d18:	00000000 	nop
  470d1c:	14400045 	bnez	v0,470e34 <parse_ipsec_sa_body+0xfb8>
  470d20:	00000000 	nop
			{
			    DBG(DBG_CONTROL | DBG_CRYPT
  470d24:	8f8284f8 	lw	v0,-31496(gp)
  470d28:	00000000 	nop
  470d2c:	8c420000 	lw	v0,0(v0)
  470d30:	00000000 	nop
  470d34:	30420012 	andi	v0,v0,0x12
  470d38:	10400059 	beqz	v0,470ea0 <parse_ipsec_sa_body+0x1024>
  470d3c:	00000000 	nop
  470d40:	8fc20030 	lw	v0,48(s8)
  470d44:	00000000 	nop
  470d48:	24420108 	addiu	v0,v0,264
  470d4c:	00402021 	move	a0,v0
  470d50:	8f998100 	lw	t9,-32512(gp)
  470d54:	00000000 	nop
  470d58:	0320f809 	jalr	t9
  470d5c:	00000000 	nop
  470d60:	8fdc0028 	lw	gp,40(s8)
  470d64:	00000000 	nop
  470d68:	8f84802c 	lw	a0,-32724(gp)
  470d6c:	00000000 	nop
  470d70:	248457e4 	addiu	a0,a0,22500
  470d74:	00402821 	move	a1,v0
  470d78:	8f9983b8 	lw	t9,-31816(gp)
  470d7c:	00000000 	nop
  470d80:	0320f809 	jalr	t9
  470d84:	00000000 	nop
  470d88:	8fdc0028 	lw	gp,40(s8)
  470d8c:	00000000 	nop
				, DBG_log("ESP from %s must either have AUTH or be combined with AH"
				    , ip_str(&c->that.host_addr)));
			    continue;   /* try another */
  470d90:	10000043 	b	470ea0 <parse_ipsec_sa_body+0x1024>
  470d94:	00000000 	nop
			}
			break;
#ifdef NO_KERNEL_ALG	/* strictly use runtime information */
		    case AUTH_ALGORITHM_HMAC_MD5:
		    case AUTH_ALGORITHM_HMAC_SHA1:
			break;
#endif
		    default:
			DBG(DBG_CONTROL | DBG_CRYPT
  470d98:	8f8284f8 	lw	v0,-31496(gp)
  470d9c:	00000000 	nop
  470da0:	8c420000 	lw	v0,0(v0)
  470da4:	00000000 	nop
  470da8:	30420012 	andi	v0,v0,0x12
  470dac:	1040003c 	beqz	v0,470ea0 <parse_ipsec_sa_body+0x1024>
  470db0:	00000000 	nop
  470db4:	97c201aa 	lhu	v0,426(s8)
  470db8:	8f848424 	lw	a0,-31708(gp)
  470dbc:	00402821 	move	a1,v0
  470dc0:	8f9987fc 	lw	t9,-30724(gp)
  470dc4:	00000000 	nop
  470dc8:	0320f809 	jalr	t9
  470dcc:	00000000 	nop
  470dd0:	8fdc0028 	lw	gp,40(s8)
  470dd4:	00408021 	move	s0,v0
  470dd8:	8fc20030 	lw	v0,48(s8)
  470ddc:	00000000 	nop
  470de0:	24420108 	addiu	v0,v0,264
  470de4:	00402021 	move	a0,v0
  470de8:	8f998100 	lw	t9,-32512(gp)
  470dec:	00000000 	nop
  470df0:	0320f809 	jalr	t9
  470df4:	00000000 	nop
  470df8:	8fdc0028 	lw	gp,40(s8)
  470dfc:	00000000 	nop
  470e00:	8f84802c 	lw	a0,-32724(gp)
  470e04:	00000000 	nop
  470e08:	24845820 	addiu	a0,a0,22560
  470e0c:	02002821 	move	a1,s0
  470e10:	00403021 	move	a2,v0
  470e14:	8f9983b8 	lw	t9,-31816(gp)
  470e18:	00000000 	nop
  470e1c:	0320f809 	jalr	t9
  470e20:	00000000 	nop
  470e24:	8fdc0028 	lw	gp,40(s8)
  470e28:	00000000 	nop
			    , DBG_log("unsupported ESP auth alg %s from %s"
				, enum_show(&auth_alg_names, esp_attrs.auth)
				, ip_str(&c->that.host_addr)));
			continue;   /* try another */
  470e2c:	1000001c 	b	470ea0 <parse_ipsec_sa_body+0x1024>
  470e30:	00000000 	nop
		}

		if (ah_seen && ah_attrs.encapsulation != esp_attrs.encapsulation)
  470e34:	8fc200f4 	lw	v0,244(s8)
  470e38:	00000000 	nop
  470e3c:	1040001e 	beqz	v0,470eb8 <parse_ipsec_sa_body+0x103c>
  470e40:	00000000 	nop
  470e44:	97c30190 	lhu	v1,400(s8)
  470e48:	97c201a8 	lhu	v0,424(s8)
  470e4c:	00000000 	nop
  470e50:	10620019 	beq	v1,v0,470eb8 <parse_ipsec_sa_body+0x103c>
  470e54:	00000000 	nop
		{
		    /* ??? This should be an error, but is it? */
		    DBG(DBG_CONTROL | DBG_CRYPT
  470e58:	8f8284f8 	lw	v0,-31496(gp)
  470e5c:	00000000 	nop
  470e60:	8c420000 	lw	v0,0(v0)
  470e64:	00000000 	nop
  470e68:	30420012 	andi	v0,v0,0x12
  470e6c:	10400012 	beqz	v0,470eb8 <parse_ipsec_sa_body+0x103c>
  470e70:	00000000 	nop
  470e74:	8f84802c 	lw	a0,-32724(gp)
  470e78:	00000000 	nop
  470e7c:	24845844 	addiu	a0,a0,22596
  470e80:	8f9983b8 	lw	t9,-31816(gp)
  470e84:	00000000 	nop
  470e88:	0320f809 	jalr	t9
  470e8c:	00000000 	nop
  470e90:	8fdc0028 	lw	gp,40(s8)
  470e94:	00000000 	nop
			, DBG_log("AH and ESP transforms disagree about encapsulation; TUNNEL presumed"));
		}

		break;	/* we seem to be happy */
  470e98:	10000007 	b	470eb8 <parse_ipsec_sa_body+0x103c>
  470e9c:	00000000 	nop
  470ea0:	8fc201d8 	lw	v0,472(s8)
  470ea4:	00000000 	nop
  470ea8:	24420001 	addiu	v0,v0,1
  470eac:	afc201d8 	sw	v0,472(s8)
  470eb0:	1000ff21 	b	470b38 <parse_ipsec_sa_body+0xcbc>
  470eb4:	00000000 	nop
	    }
	    if (tn == esp_proposal.isap_notrans)
  470eb8:	93c300df 	lbu	v1,223(s8)
  470ebc:	8fc201d8 	lw	v0,472(s8)
  470ec0:	00000000 	nop
  470ec4:	14430003 	bne	v0,v1,470ed4 <parse_ipsec_sa_body+0x1058>
  470ec8:	00000000 	nop
		continue;	/* we didn't find a nice one */
  470ecc:	1000fc57 	b	47002c <parse_ipsec_sa_body+0x1b0>
  470ed0:	00000000 	nop
#ifndef NO_KERNEL_ALG
	    /* 
	     * ML: at last check for allowed transforms in alg_info_esp 
	     *     (ALG_INFO_F_STRICT flag)
	     *
	     */
	    if (!kernel_alg_esp_ok_final(esp_attrs.transid, esp_attrs.key_len,
				    esp_attrs.auth, c->alg_info_esp))
  470ed4:	93c20198 	lbu	v0,408(s8)
  470ed8:	97c301ac 	lhu	v1,428(s8)
  470edc:	97c601aa 	lhu	a2,426(s8)
  470ee0:	00402021 	move	a0,v0
  470ee4:	00602821 	move	a1,v1
  470ee8:	8fc20030 	lw	v0,48(s8)
  470eec:	00000000 	nop
  470ef0:	8c4701bc 	lw	a3,444(v0)
  470ef4:	8f998a88 	lw	t9,-30072(gp)
  470ef8:	00000000 	nop
  470efc:	0320f809 	jalr	t9
  470f00:	00000000 	nop
  470f04:	8fdc0028 	lw	gp,40(s8)
  470f08:	14400003 	bnez	v0,470f18 <parse_ipsec_sa_body+0x109c>
  470f0c:	00000000 	nop
		    continue;
  470f10:	1000fc46 	b	47002c <parse_ipsec_sa_body+0x1b0>
  470f14:	00000000 	nop
#endif
	    esp_attrs.spi = esp_spi;
  470f18:	8fc200ec 	lw	v0,236(s8)
  470f1c:	00000000 	nop
  470f20:	afc2019c 	sw	v0,412(s8)
  470f24:	1000005d 	b	47109c <parse_ipsec_sa_body+0x1220>
  470f28:	00000000 	nop
	}
	else if (st->st_policy & POLICY_ENCRYPT)
  470f2c:	8fc20270 	lw	v0,624(s8)
  470f30:	00000000 	nop
  470f34:	8c4400d8 	lw	a0,216(v0)
  470f38:	8c4500dc 	lw	a1,220(v0)
  470f3c:	24020000 	li	v0,0
  470f40:	24030004 	li	v1,4
  470f44:	00822024 	and	a0,a0,v0
  470f48:	00a32824 	and	a1,a1,v1
  470f4c:	00801021 	move	v0,a0
  470f50:	00451025 	or	v0,v0,a1
  470f54:	10400021 	beqz	v0,470fdc <parse_ipsec_sa_body+0x1160>
  470f58:	00000000 	nop
	{
	    DBG(DBG_CONTROL | DBG_CRYPT
  470f5c:	8f8284f8 	lw	v0,-31496(gp)
  470f60:	00000000 	nop
  470f64:	8c420000 	lw	v0,0(v0)
  470f68:	00000000 	nop
  470f6c:	30420012 	andi	v0,v0,0x12
  470f70:	1040fc2e 	beqz	v0,47002c <parse_ipsec_sa_body+0x1b0>
  470f74:	00000000 	nop
  470f78:	8fc20030 	lw	v0,48(s8)
  470f7c:	00000000 	nop
  470f80:	24420108 	addiu	v0,v0,264
  470f84:	00402021 	move	a0,v0
  470f88:	8f998100 	lw	t9,-32512(gp)
  470f8c:	00000000 	nop
  470f90:	0320f809 	jalr	t9
  470f94:	00000000 	nop
  470f98:	8fdc0028 	lw	gp,40(s8)
  470f9c:	00401821 	move	v1,v0
  470fa0:	8f84802c 	lw	a0,-32724(gp)
  470fa4:	00000000 	nop
  470fa8:	24845888 	addiu	a0,a0,22664
  470fac:	8fc20030 	lw	v0,48(s8)
  470fb0:	00000000 	nop
  470fb4:	8c450000 	lw	a1,0(v0)
  470fb8:	00603021 	move	a2,v1
  470fbc:	8f9983b8 	lw	t9,-31816(gp)
  470fc0:	00000000 	nop
  470fc4:	0320f809 	jalr	t9
  470fc8:	00000000 	nop
  470fcc:	8fdc0028 	lw	gp,40(s8)
  470fd0:	00000000 	nop
		, DBG_log("policy for \"%s\" requires encryption but ESP not in Proposal from %s"
		    , c->name, ip_str(&c->that.host_addr)));
	    continue;	/* we needed encryption, but didn't find ESP */
  470fd4:	1000fc15 	b	47002c <parse_ipsec_sa_body+0x1b0>
  470fd8:	00000000 	nop
	}
	else if ((st->st_policy & POLICY_AUTHENTICATE) && !ah_seen)
  470fdc:	8fc20270 	lw	v0,624(s8)
  470fe0:	00000000 	nop
  470fe4:	8c4400d8 	lw	a0,216(v0)
  470fe8:	8c4500dc 	lw	a1,220(v0)
  470fec:	24020000 	li	v0,0
  470ff0:	24030008 	li	v1,8
  470ff4:	00822024 	and	a0,a0,v0
  470ff8:	00a32824 	and	a1,a1,v1
  470ffc:	00801021 	move	v0,a0
  471000:	00451025 	or	v0,v0,a1
  471004:	10400025 	beqz	v0,47109c <parse_ipsec_sa_body+0x1220>
  471008:	00000000 	nop
  47100c:	8fc200f4 	lw	v0,244(s8)
  471010:	00000000 	nop
  471014:	14400021 	bnez	v0,47109c <parse_ipsec_sa_body+0x1220>
  471018:	00000000 	nop
	{
	    DBG(DBG_CONTROL | DBG_CRYPT
  47101c:	8f8284f8 	lw	v0,-31496(gp)
  471020:	00000000 	nop
  471024:	8c420000 	lw	v0,0(v0)
  471028:	00000000 	nop
  47102c:	30420012 	andi	v0,v0,0x12
  471030:	1040fbfe 	beqz	v0,47002c <parse_ipsec_sa_body+0x1b0>
  471034:	00000000 	nop
  471038:	8fc20030 	lw	v0,48(s8)
  47103c:	00000000 	nop
  471040:	24420108 	addiu	v0,v0,264
  471044:	00402021 	move	a0,v0
  471048:	8f998100 	lw	t9,-32512(gp)
  47104c:	00000000 	nop
  471050:	0320f809 	jalr	t9
  471054:	00000000 	nop
  471058:	8fdc0028 	lw	gp,40(s8)
  47105c:	00401821 	move	v1,v0
  471060:	8f84802c 	lw	a0,-32724(gp)
  471064:	00000000 	nop
  471068:	248458cc 	addiu	a0,a0,22732
  47106c:	8fc20030 	lw	v0,48(s8)
  471070:	00000000 	nop
  471074:	8c450000 	lw	a1,0(v0)
  471078:	00603021 	move	a2,v1
  47107c:	8f9983b8 	lw	t9,-31816(gp)
  471080:	00000000 	nop
  471084:	0320f809 	jalr	t9
  471088:	00000000 	nop
  47108c:	8fdc0028 	lw	gp,40(s8)
  471090:	00000000 	nop
		, DBG_log("policy for \"%s\" requires authentication"
		    " but none in Proposal from %s"
		    , c->name, ip_str(&c->that.host_addr)));
	    continue;	/* we need authentication, but we found neither ESP nor AH */
  471094:	1000fbe5 	b	47002c <parse_ipsec_sa_body+0x1b0>
  471098:	00000000 	nop
	}

	if (ipcomp_seen)
  47109c:	8fc200fc 	lw	v0,252(s8)
  4710a0:	00000000 	nop
  4710a4:	10400114 	beqz	v0,4714f8 <parse_ipsec_sa_body+0x167c>
  4710a8:	00000000 	nop
	{
	    int previous_transnum = -1;
  4710ac:	2402ffff 	li	v0,-1
  4710b0:	afc201dc 	sw	v0,476(s8)
	    int tn;

	    /**** FUDGE TO PREVENT UNREQUESTED IPCOMP:
	     **** NEEDED BECAUSE OUR IPCOMP IS EXPERIMENTAL (UNSTABLE).
	     ****/
	    if (!(st->st_policy & POLICY_COMPRESS))
  4710b4:	8fc20270 	lw	v0,624(s8)
  4710b8:	00000000 	nop
  4710bc:	8c4400d8 	lw	a0,216(v0)
  4710c0:	8c4500dc 	lw	a1,220(v0)
  4710c4:	24020000 	li	v0,0
  4710c8:	24030010 	li	v1,16
  4710cc:	00822024 	and	a0,a0,v0
  4710d0:	00a32824 	and	a1,a1,v1
  4710d4:	00801021 	move	v0,a0
  4710d8:	00451025 	or	v0,v0,a1
  4710dc:	1440001a 	bnez	v0,471148 <parse_ipsec_sa_body+0x12cc>
  4710e0:	00000000 	nop
	    {
		plog("compression proposed by %s, but policy for \"%s\" forbids it"
  4710e4:	8fc20030 	lw	v0,48(s8)
  4710e8:	00000000 	nop
  4710ec:	24420108 	addiu	v0,v0,264
  4710f0:	00402021 	move	a0,v0
  4710f4:	8f998100 	lw	t9,-32512(gp)
  4710f8:	00000000 	nop
  4710fc:	0320f809 	jalr	t9
  471100:	00000000 	nop
  471104:	8fdc0028 	lw	gp,40(s8)
  471108:	00000000 	nop
  47110c:	8f84802c 	lw	a0,-32724(gp)
  471110:	00000000 	nop
  471114:	24845914 	addiu	a0,a0,22804
  471118:	00402821 	move	a1,v0
  47111c:	8fc20030 	lw	v0,48(s8)
  471120:	00000000 	nop
  471124:	8c460000 	lw	a2,0(v0)
  471128:	8f998abc 	lw	t9,-30020(gp)
  47112c:	00000000 	nop
  471130:	0320f809 	jalr	t9
  471134:	00000000 	nop
  471138:	8fdc0028 	lw	gp,40(s8)
  47113c:	00000000 	nop
		    , ip_str(&c->that.host_addr), c->name);
		continue;	/* unwanted compression proposal */
  471140:	1000fbba 	b	47002c <parse_ipsec_sa_body+0x1b0>
  471144:	00000000 	nop
	    }

	    if (!can_do_IPcomp)
  471148:	8f828774 	lw	v0,-30860(gp)
  47114c:	00000000 	nop
  471150:	8c420000 	lw	v0,0(v0)
  471154:	00000000 	nop
  471158:	14400017 	bnez	v0,4711b8 <parse_ipsec_sa_body+0x133c>
  47115c:	00000000 	nop
	    {
		plog("compression proposed by %s, but KLIPS is not configured with IPCOMP"
  471160:	8fc20030 	lw	v0,48(s8)
  471164:	00000000 	nop
  471168:	24420108 	addiu	v0,v0,264
  47116c:	00402021 	move	a0,v0
  471170:	8f998100 	lw	t9,-32512(gp)
  471174:	00000000 	nop
  471178:	0320f809 	jalr	t9
  47117c:	00000000 	nop
  471180:	8fdc0028 	lw	gp,40(s8)
  471184:	00000000 	nop
  471188:	8f84802c 	lw	a0,-32724(gp)
  47118c:	00000000 	nop
  471190:	24845950 	addiu	a0,a0,22864
  471194:	00402821 	move	a1,v0
  471198:	8f998abc 	lw	t9,-30020(gp)
  47119c:	00000000 	nop
  4711a0:	0320f809 	jalr	t9
  4711a4:	00000000 	nop
  4711a8:	8fdc0028 	lw	gp,40(s8)
  4711ac:	00000000 	nop
		    , ip_str(&c->that.host_addr));
		continue;
  4711b0:	1000fb9e 	b	47002c <parse_ipsec_sa_body+0x1b0>
  4711b4:	00000000 	nop
	    }

	    if (well_known_cpi != 0 && !ah_seen && !esp_seen)
  4711b8:	97c20100 	lhu	v0,256(s8)
  4711bc:	00000000 	nop
  4711c0:	10400015 	beqz	v0,471218 <parse_ipsec_sa_body+0x139c>
  4711c4:	00000000 	nop
  4711c8:	8fc200f4 	lw	v0,244(s8)
  4711cc:	00000000 	nop
  4711d0:	14400011 	bnez	v0,471218 <parse_ipsec_sa_body+0x139c>
  4711d4:	00000000 	nop
  4711d8:	8fc200f8 	lw	v0,248(s8)
  4711dc:	00000000 	nop
  4711e0:	1440000d 	bnez	v0,471218 <parse_ipsec_sa_body+0x139c>
  4711e4:	00000000 	nop
	    {
		plog("illegal proposal: bare IPCOMP used with well-known CPI");
  4711e8:	8f84802c 	lw	a0,-32724(gp)
  4711ec:	00000000 	nop
  4711f0:	24845994 	addiu	a0,a0,22932
  4711f4:	8f998abc 	lw	t9,-30020(gp)
  4711f8:	00000000 	nop
  4711fc:	0320f809 	jalr	t9
  471200:	00000000 	nop
  471204:	8fdc0028 	lw	gp,40(s8)
  471208:	00000000 	nop
		return BAD_PROPOSAL_SYNTAX;
  47120c:	2402000f 	li	v0,15
  471210:	100001fc 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  471214:	00000000 	nop
	    }

	    for (tn = 0; tn != ipcomp_proposal.isap_notrans; tn++)
  471218:	afc001d8 	sw	zero,472(s8)
  47121c:	93c300e7 	lbu	v1,231(s8)
  471220:	8fc201d8 	lw	v0,472(s8)
  471224:	00000000 	nop
  471228:	14430003 	bne	v0,v1,471238 <parse_ipsec_sa_body+0x13bc>
  47122c:	00000000 	nop
  471230:	100000a7 	b	4714d0 <parse_ipsec_sa_body+0x1654>
  471234:	00000000 	nop
	    {
		if (!parse_ipsec_transform(&ipcomp_trans
		, &ipcomp_attrs
		, &ipcomp_prop_pbs
		, &ipcomp_trans_pbs
		, &isakmp_ipcomp_transform_desc
		, previous_transnum
		, selection
		, tn == ipcomp_proposal.isap_notrans - 1
		, TRUE
		, st))
  471238:	8f828368 	lw	v0,-31896(gp)
  47123c:	00000000 	nop
  471240:	afa20010 	sw	v0,16(sp)
  471244:	8fc201dc 	lw	v0,476(s8)
  471248:	00000000 	nop
  47124c:	afa20014 	sw	v0,20(sp)
  471250:	8fc2026c 	lw	v0,620(s8)
  471254:	00000000 	nop
  471258:	afa20018 	sw	v0,24(sp)
  47125c:	93c200e7 	lbu	v0,231(s8)
  471260:	00000000 	nop
  471264:	2443ffff 	addiu	v1,v0,-1
  471268:	8fc201d8 	lw	v0,472(s8)
  47126c:	00000000 	nop
  471270:	00431026 	xor	v0,v0,v1
  471274:	2c420001 	sltiu	v0,v0,1
  471278:	afa2001c 	sw	v0,28(sp)
  47127c:	24020001 	li	v0,1
  471280:	afa20020 	sw	v0,32(sp)
  471284:	8fc20270 	lw	v0,624(s8)
  471288:	00000000 	nop
  47128c:	afa20024 	sw	v0,36(sp)
  471290:	27c40178 	addiu	a0,s8,376
  471294:	27c501b0 	addiu	a1,s8,432
  471298:	27c600b0 	addiu	a2,s8,176
  47129c:	27c70148 	addiu	a3,s8,328
  4712a0:	8f998040 	lw	t9,-32704(gp)
  4712a4:	00000000 	nop
  4712a8:	2739eb58 	addiu	t9,t9,-5288
  4712ac:	00000000 	nop
  4712b0:	0320f809 	jalr	t9
  4712b4:	00000000 	nop
  4712b8:	8fdc0028 	lw	gp,40(s8)
  4712bc:	14400004 	bnez	v0,4712d0 <parse_ipsec_sa_body+0x1454>
  4712c0:	00000000 	nop
		    return BAD_PROPOSAL_SYNTAX;
  4712c4:	2402000f 	li	v0,15
  4712c8:	100001ce 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  4712cc:	00000000 	nop

		previous_transnum = ipcomp_trans.isat_transnum;
  4712d0:	93c2017c 	lbu	v0,380(s8)
  4712d4:	00000000 	nop
  4712d8:	afc201dc 	sw	v0,476(s8)

		if (well_known_cpi != 0 && ipcomp_attrs.transid != well_known_cpi)
  4712dc:	97c20100 	lhu	v0,256(s8)
  4712e0:	00000000 	nop
  4712e4:	10400014 	beqz	v0,471338 <parse_ipsec_sa_body+0x14bc>
  4712e8:	00000000 	nop
  4712ec:	93c201b0 	lbu	v0,432(s8)
  4712f0:	00000000 	nop
  4712f4:	3043ffff 	andi	v1,v0,0xffff
  4712f8:	97c20100 	lhu	v0,256(s8)
  4712fc:	00000000 	nop
  471300:	1062000d 	beq	v1,v0,471338 <parse_ipsec_sa_body+0x14bc>
  471304:	00000000 	nop
		{
		    plog("illegal proposal: IPCOMP well-known CPI disagrees with transform");
  471308:	8f84802c 	lw	a0,-32724(gp)
  47130c:	00000000 	nop
  471310:	248459cc 	addiu	a0,a0,22988
  471314:	8f998abc 	lw	t9,-30020(gp)
  471318:	00000000 	nop
  47131c:	0320f809 	jalr	t9
  471320:	00000000 	nop
  471324:	8fdc0028 	lw	gp,40(s8)
  471328:	00000000 	nop
		    return BAD_PROPOSAL_SYNTAX;
  47132c:	2402000f 	li	v0,15
  471330:	100001b4 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  471334:	00000000 	nop
		}

		switch (ipcomp_attrs.transid)
  471338:	93c301b0 	lbu	v1,432(s8)
  47133c:	24020002 	li	v0,2
  471340:	10620028 	beq	v1,v0,4713e4 <parse_ipsec_sa_body+0x1568>
  471344:	00000000 	nop
		{
		    case IPCOMP_DEFLATE:    /* all we can handle! */
			break;

		    default:
			DBG(DBG_CONTROL | DBG_CRYPT
  471348:	8f8284f8 	lw	v0,-31496(gp)
  47134c:	00000000 	nop
  471350:	8c420000 	lw	v0,0(v0)
  471354:	00000000 	nop
  471358:	30420012 	andi	v0,v0,0x12
  47135c:	10400056 	beqz	v0,4714b8 <parse_ipsec_sa_body+0x163c>
  471360:	00000000 	nop
  471364:	93c201b0 	lbu	v0,432(s8)
  471368:	8f8480d4 	lw	a0,-32556(gp)
  47136c:	00402821 	move	a1,v0
  471370:	8f9987fc 	lw	t9,-30724(gp)
  471374:	00000000 	nop
  471378:	0320f809 	jalr	t9
  47137c:	00000000 	nop
  471380:	8fdc0028 	lw	gp,40(s8)
  471384:	00408021 	move	s0,v0
  471388:	8fc20030 	lw	v0,48(s8)
  47138c:	00000000 	nop
  471390:	24420108 	addiu	v0,v0,264
  471394:	00402021 	move	a0,v0
  471398:	8f998100 	lw	t9,-32512(gp)
  47139c:	00000000 	nop
  4713a0:	0320f809 	jalr	t9
  4713a4:	00000000 	nop
  4713a8:	8fdc0028 	lw	gp,40(s8)
  4713ac:	00000000 	nop
  4713b0:	8f84802c 	lw	a0,-32724(gp)
  4713b4:	00000000 	nop
  4713b8:	24845a10 	addiu	a0,a0,23056
  4713bc:	02002821 	move	a1,s0
  4713c0:	00403021 	move	a2,v0
  4713c4:	8f9983b8 	lw	t9,-31816(gp)
  4713c8:	00000000 	nop
  4713cc:	0320f809 	jalr	t9
  4713d0:	00000000 	nop
  4713d4:	8fdc0028 	lw	gp,40(s8)
  4713d8:	00000000 	nop
			    , DBG_log("unsupported IPCOMP Transform %s from %s"
				, enum_show(&ipcomp_transformid_names, ipcomp_attrs.transid)
				, ip_str(&c->that.host_addr)));
			continue;   /* try another */
  4713dc:	10000036 	b	4714b8 <parse_ipsec_sa_body+0x163c>
  4713e0:	00000000 	nop
		}

		if (ah_seen && ah_attrs.encapsulation != ipcomp_attrs.encapsulation)
  4713e4:	8fc200f4 	lw	v0,244(s8)
  4713e8:	00000000 	nop
  4713ec:	10400017 	beqz	v0,47144c <parse_ipsec_sa_body+0x15d0>
  4713f0:	00000000 	nop
  4713f4:	97c30190 	lhu	v1,400(s8)
  4713f8:	97c201c0 	lhu	v0,448(s8)
  4713fc:	00000000 	nop
  471400:	10620012 	beq	v1,v0,47144c <parse_ipsec_sa_body+0x15d0>
  471404:	00000000 	nop
		{
		    /* ??? This should be an error, but is it? */
		    DBG(DBG_CONTROL | DBG_CRYPT
  471408:	8f8284f8 	lw	v0,-31496(gp)
  47140c:	00000000 	nop
  471410:	8c420000 	lw	v0,0(v0)
  471414:	00000000 	nop
  471418:	30420012 	andi	v0,v0,0x12
  47141c:	1040002c 	beqz	v0,4714d0 <parse_ipsec_sa_body+0x1654>
  471420:	00000000 	nop
  471424:	8f84802c 	lw	a0,-32724(gp)
  471428:	00000000 	nop
  47142c:	24845a38 	addiu	a0,a0,23096
  471430:	8f9983b8 	lw	t9,-31816(gp)
  471434:	00000000 	nop
  471438:	0320f809 	jalr	t9
  47143c:	00000000 	nop
  471440:	8fdc0028 	lw	gp,40(s8)
  471444:	10000022 	b	4714d0 <parse_ipsec_sa_body+0x1654>
  471448:	00000000 	nop
			, DBG_log("AH and IPCOMP transforms disagree about encapsulation; TUNNEL presumed"));
		} else if (esp_seen && esp_attrs.encapsulation != ipcomp_attrs.encapsulation)
  47144c:	8fc200f8 	lw	v0,248(s8)
  471450:	00000000 	nop
  471454:	1040001e 	beqz	v0,4714d0 <parse_ipsec_sa_body+0x1654>
  471458:	00000000 	nop
  47145c:	97c301a8 	lhu	v1,424(s8)
  471460:	97c201c0 	lhu	v0,448(s8)
  471464:	00000000 	nop
  471468:	10620019 	beq	v1,v0,4714d0 <parse_ipsec_sa_body+0x1654>
  47146c:	00000000 	nop
		{
		    /* ??? This should be an error, but is it? */
		    DBG(DBG_CONTROL | DBG_CRYPT
  471470:	8f8284f8 	lw	v0,-31496(gp)
  471474:	00000000 	nop
  471478:	8c420000 	lw	v0,0(v0)
  47147c:	00000000 	nop
  471480:	30420012 	andi	v0,v0,0x12
  471484:	10400012 	beqz	v0,4714d0 <parse_ipsec_sa_body+0x1654>
  471488:	00000000 	nop
  47148c:	8f84802c 	lw	a0,-32724(gp)
  471490:	00000000 	nop
  471494:	24845a80 	addiu	a0,a0,23168
  471498:	8f9983b8 	lw	t9,-31816(gp)
  47149c:	00000000 	nop
  4714a0:	0320f809 	jalr	t9
  4714a4:	00000000 	nop
  4714a8:	8fdc0028 	lw	gp,40(s8)
  4714ac:	00000000 	nop
			, DBG_log("ESP and IPCOMP transforms disagree about encapsulation; TUNNEL presumed"));
		}

		break;	/* we seem to be happy */
  4714b0:	10000007 	b	4714d0 <parse_ipsec_sa_body+0x1654>
  4714b4:	00000000 	nop
  4714b8:	8fc201d8 	lw	v0,472(s8)
  4714bc:	00000000 	nop
  4714c0:	24420001 	addiu	v0,v0,1
  4714c4:	afc201d8 	sw	v0,472(s8)
  4714c8:	1000ff54 	b	47121c <parse_ipsec_sa_body+0x13a0>
  4714cc:	00000000 	nop
	    }
	    if (tn == ipcomp_proposal.isap_notrans)
  4714d0:	93c300e7 	lbu	v1,231(s8)
  4714d4:	8fc201d8 	lw	v0,472(s8)
  4714d8:	00000000 	nop
  4714dc:	14430003 	bne	v0,v1,4714ec <parse_ipsec_sa_body+0x1670>
  4714e0:	00000000 	nop
		continue;	/* we didn't find a nice one */
  4714e4:	1000fad1 	b	47002c <parse_ipsec_sa_body+0x1b0>
  4714e8:	00000000 	nop
	    ipcomp_attrs.spi = ipcomp_cpi;
  4714ec:	8fc200f0 	lw	v0,240(s8)
  4714f0:	00000000 	nop
  4714f4:	afc201b4 	sw	v0,436(s8)
	}

	/* Eureka: we liked what we saw -- accept it. */

	if (r_sa_pbs != NULL)
  4714f8:	8fc20268 	lw	v0,616(s8)
  4714fc:	00000000 	nop
  471500:	104000e1 	beqz	v0,471888 <parse_ipsec_sa_body+0x1a0c>
  471504:	00000000 	nop
	{
	    /* emit what we've accepted */

	    /* Situation */
	    if (!out_struct(&ipsecdoisit, &ipsec_sit_desc, r_sa_pbs, NULL))
  471508:	27c40034 	addiu	a0,s8,52
  47150c:	8f8583dc 	lw	a1,-31780(gp)
  471510:	8fc60268 	lw	a2,616(s8)
  471514:	00003821 	move	a3,zero
  471518:	8f998ba0 	lw	t9,-29792(gp)
  47151c:	00000000 	nop
  471520:	0320f809 	jalr	t9
  471524:	00000000 	nop
  471528:	8fdc0028 	lw	gp,40(s8)
  47152c:	1440000e 	bnez	v0,471568 <parse_ipsec_sa_body+0x16ec>
  471530:	00000000 	nop
		impossible();
  471534:	8f84802c 	lw	a0,-32724(gp)
  471538:	00000000 	nop
  47153c:	24844920 	addiu	a0,a0,18720
  471540:	8f85802c 	lw	a1,-32724(gp)
  471544:	00000000 	nop
  471548:	24a54904 	addiu	a1,a1,18692
  47154c:	2406093f 	li	a2,2367
  471550:	8f998bb8 	lw	t9,-29768(gp)
  471554:	00000000 	nop
  471558:	0320f809 	jalr	t9
  47155c:	00000000 	nop
  471560:	8fdc0028 	lw	gp,40(s8)
  471564:	00000000 	nop

	    /* AH proposal */
	    if (ah_seen)
  471568:	8fc200f4 	lw	v0,244(s8)
  47156c:	00000000 	nop
  471570:	10400044 	beqz	v0,471684 <parse_ipsec_sa_body+0x1808>
  471574:	00000000 	nop
		echo_proposal(ah_proposal
  471578:	8fc200f8 	lw	v0,248(s8)
  47157c:	00000000 	nop
  471580:	14400007 	bnez	v0,4715a0 <parse_ipsec_sa_body+0x1724>
  471584:	00000000 	nop
  471588:	8fc200fc 	lw	v0,252(s8)
  47158c:	00000000 	nop
  471590:	14400003 	bnez	v0,4715a0 <parse_ipsec_sa_body+0x1724>
  471594:	00000000 	nop
  471598:	10000005 	b	4715b0 <parse_ipsec_sa_body+0x1734>
  47159c:	00000000 	nop
  4715a0:	24020002 	li	v0,2
  4715a4:	afa20010 	sw	v0,16(sp)
  4715a8:	10000002 	b	4715b4 <parse_ipsec_sa_body+0x1738>
  4715ac:	00000000 	nop
  4715b0:	afa00010 	sw	zero,16(sp)
  4715b4:	8fc20268 	lw	v0,616(s8)
  4715b8:	00000000 	nop
  4715bc:	afa20014 	sw	v0,20(sp)
  4715c0:	8fc20270 	lw	v0,624(s8)
  4715c4:	00000000 	nop
  4715c8:	2442003c 	addiu	v0,v0,60
  4715cc:	afa20018 	sw	v0,24(sp)
  4715d0:	8f8283fc 	lw	v0,-31748(gp)
  4715d4:	00000000 	nop
  4715d8:	afa2001c 	sw	v0,28(sp)
  4715dc:	27c20108 	addiu	v0,s8,264
  4715e0:	afa20020 	sw	v0,32(sp)
  4715e4:	97c200d0 	lhu	v0,208(s8)
  4715e8:	00000000 	nop
  4715ec:	00021c00 	sll	v1,v0,0x10
  4715f0:	97c200d2 	lhu	v0,210(s8)
  4715f4:	00000000 	nop
  4715f8:	00431025 	or	v0,v0,v1
  4715fc:	afc20200 	sw	v0,512(s8)
  471600:	97c200d4 	lhu	v0,212(s8)
  471604:	00000000 	nop
  471608:	00021c00 	sll	v1,v0,0x10
  47160c:	97c200d6 	lhu	v0,214(s8)
  471610:	00000000 	nop
  471614:	00431025 	or	v0,v0,v1
  471618:	afc20204 	sw	v0,516(s8)
  47161c:	97c20168 	lhu	v0,360(s8)
  471620:	00000000 	nop
  471624:	00021c00 	sll	v1,v0,0x10
  471628:	97c2016a 	lhu	v0,362(s8)
  47162c:	00000000 	nop
  471630:	00431025 	or	v0,v0,v1
  471634:	afc20208 	sw	v0,520(s8)
  471638:	97c2016c 	lhu	v0,364(s8)
  47163c:	00000000 	nop
  471640:	00021c00 	sll	v1,v0,0x10
  471644:	97c2016e 	lhu	v0,366(s8)
  471648:	00000000 	nop
  47164c:	00431025 	or	v0,v0,v1
  471650:	afc2020c 	sw	v0,524(s8)
  471654:	8fc40200 	lw	a0,512(s8)
  471658:	8fc50204 	lw	a1,516(s8)
  47165c:	8fc60208 	lw	a2,520(s8)
  471660:	8fc7020c 	lw	a3,524(s8)
  471664:	8f998040 	lw	t9,-32704(gp)
  471668:	00000000 	nop
  47166c:	2739fb88 	addiu	t9,t9,-1144
  471670:	00000000 	nop
  471674:	0320f809 	jalr	t9
  471678:	00000000 	nop
  47167c:	8fdc0028 	lw	gp,40(s8)
  471680:	00000000 	nop
		    , ah_trans
		    , esp_seen || ipcomp_seen? ISAKMP_NEXT_P : ISAKMP_NEXT_NONE
		    , r_sa_pbs
		    , &st->st_ah
		    , &isakmp_ah_transform_desc
		    , &ah_trans_pbs);

	    /* ESP proposal */
	    if (esp_seen)
  471684:	8fc200f8 	lw	v0,248(s8)
  471688:	00000000 	nop
  47168c:	1040003e 	beqz	v0,471788 <parse_ipsec_sa_body+0x190c>
  471690:	00000000 	nop
		echo_proposal(esp_proposal
  471694:	8fc200fc 	lw	v0,252(s8)
  471698:	00000000 	nop
  47169c:	10400005 	beqz	v0,4716b4 <parse_ipsec_sa_body+0x1838>
  4716a0:	00000000 	nop
  4716a4:	24020002 	li	v0,2
  4716a8:	afa20010 	sw	v0,16(sp)
  4716ac:	10000002 	b	4716b8 <parse_ipsec_sa_body+0x183c>
  4716b0:	00000000 	nop
  4716b4:	afa00010 	sw	zero,16(sp)
  4716b8:	8fc20268 	lw	v0,616(s8)
  4716bc:	00000000 	nop
  4716c0:	afa20014 	sw	v0,20(sp)
  4716c4:	8fc20270 	lw	v0,624(s8)
  4716c8:	00000000 	nop
  4716cc:	24420068 	addiu	v0,v0,104
  4716d0:	afa20018 	sw	v0,24(sp)
  4716d4:	8f828434 	lw	v0,-31692(gp)
  4716d8:	00000000 	nop
  4716dc:	afa2001c 	sw	v0,28(sp)
  4716e0:	27c20128 	addiu	v0,s8,296
  4716e4:	afa20020 	sw	v0,32(sp)
  4716e8:	97c200d8 	lhu	v0,216(s8)
  4716ec:	00000000 	nop
  4716f0:	00021c00 	sll	v1,v0,0x10
  4716f4:	97c200da 	lhu	v0,218(s8)
  4716f8:	00000000 	nop
  4716fc:	00431025 	or	v0,v0,v1
  471700:	afc20210 	sw	v0,528(s8)
  471704:	97c200dc 	lhu	v0,220(s8)
  471708:	00000000 	nop
  47170c:	00021c00 	sll	v1,v0,0x10
  471710:	97c200de 	lhu	v0,222(s8)
  471714:	00000000 	nop
  471718:	00431025 	or	v0,v0,v1
  47171c:	afc20214 	sw	v0,532(s8)
  471720:	97c20170 	lhu	v0,368(s8)
  471724:	00000000 	nop
  471728:	00021c00 	sll	v1,v0,0x10
  47172c:	97c20172 	lhu	v0,370(s8)
  471730:	00000000 	nop
  471734:	00431025 	or	v0,v0,v1
  471738:	afc20218 	sw	v0,536(s8)
  47173c:	97c20174 	lhu	v0,372(s8)
  471740:	00000000 	nop
  471744:	00021c00 	sll	v1,v0,0x10
  471748:	97c20176 	lhu	v0,374(s8)
  47174c:	00000000 	nop
  471750:	00431025 	or	v0,v0,v1
  471754:	afc2021c 	sw	v0,540(s8)
  471758:	8fc40210 	lw	a0,528(s8)
  47175c:	8fc50214 	lw	a1,532(s8)
  471760:	8fc60218 	lw	a2,536(s8)
  471764:	8fc7021c 	lw	a3,540(s8)
  471768:	8f998040 	lw	t9,-32704(gp)
  47176c:	00000000 	nop
  471770:	2739fb88 	addiu	t9,t9,-1144
  471774:	00000000 	nop
  471778:	0320f809 	jalr	t9
  47177c:	00000000 	nop
  471780:	8fdc0028 	lw	gp,40(s8)
  471784:	00000000 	nop
		    , esp_trans
		    , ipcomp_seen? ISAKMP_NEXT_P : ISAKMP_NEXT_NONE
		    , r_sa_pbs
		    , &st->st_esp
		    , &isakmp_esp_transform_desc
		    , &esp_trans_pbs);

	    /* IPCOMP proposal */
	    if (ipcomp_seen)
  471788:	8fc200fc 	lw	v0,252(s8)
  47178c:	00000000 	nop
  471790:	10400036 	beqz	v0,47186c <parse_ipsec_sa_body+0x19f0>
  471794:	00000000 	nop
		echo_proposal(ipcomp_proposal
  471798:	afa00010 	sw	zero,16(sp)
  47179c:	8fc20268 	lw	v0,616(s8)
  4717a0:	00000000 	nop
  4717a4:	afa20014 	sw	v0,20(sp)
  4717a8:	8fc20270 	lw	v0,624(s8)
  4717ac:	00000000 	nop
  4717b0:	24420094 	addiu	v0,v0,148
  4717b4:	afa20018 	sw	v0,24(sp)
  4717b8:	8f828368 	lw	v0,-31896(gp)
  4717bc:	00000000 	nop
  4717c0:	afa2001c 	sw	v0,28(sp)
  4717c4:	27c20148 	addiu	v0,s8,328
  4717c8:	afa20020 	sw	v0,32(sp)
  4717cc:	97c200e0 	lhu	v0,224(s8)
  4717d0:	00000000 	nop
  4717d4:	00021c00 	sll	v1,v0,0x10
  4717d8:	97c200e2 	lhu	v0,226(s8)
  4717dc:	00000000 	nop
  4717e0:	00431025 	or	v0,v0,v1
  4717e4:	afc20220 	sw	v0,544(s8)
  4717e8:	97c200e4 	lhu	v0,228(s8)
  4717ec:	00000000 	nop
  4717f0:	00021c00 	sll	v1,v0,0x10
  4717f4:	97c200e6 	lhu	v0,230(s8)
  4717f8:	00000000 	nop
  4717fc:	00431025 	or	v0,v0,v1
  471800:	afc20224 	sw	v0,548(s8)
  471804:	97c20178 	lhu	v0,376(s8)
  471808:	00000000 	nop
  47180c:	00021c00 	sll	v1,v0,0x10
  471810:	97c2017a 	lhu	v0,378(s8)
  471814:	00000000 	nop
  471818:	00431025 	or	v0,v0,v1
  47181c:	afc20228 	sw	v0,552(s8)
  471820:	97c2017c 	lhu	v0,380(s8)
  471824:	00000000 	nop
  471828:	00021c00 	sll	v1,v0,0x10
  47182c:	97c2017e 	lhu	v0,382(s8)
  471830:	00000000 	nop
  471834:	00431025 	or	v0,v0,v1
  471838:	afc2022c 	sw	v0,556(s8)
  47183c:	8fc40220 	lw	a0,544(s8)
  471840:	8fc50224 	lw	a1,548(s8)
  471844:	8fc60228 	lw	a2,552(s8)
  471848:	8fc7022c 	lw	a3,556(s8)
  47184c:	8f998040 	lw	t9,-32704(gp)
  471850:	00000000 	nop
  471854:	2739fb88 	addiu	t9,t9,-1144
  471858:	00000000 	nop
  47185c:	0320f809 	jalr	t9
  471860:	00000000 	nop
  471864:	8fdc0028 	lw	gp,40(s8)
  471868:	00000000 	nop
		    , ipcomp_trans
		    , ISAKMP_NEXT_NONE
		    , r_sa_pbs
		    , &st->st_ipcomp
		    , &isakmp_ipcomp_transform_desc
		    , &ipcomp_trans_pbs);

	    close_output_pbs(r_sa_pbs);
  47186c:	8fc40268 	lw	a0,616(s8)
  471870:	8f998228 	lw	t9,-32216(gp)
  471874:	00000000 	nop
  471878:	0320f809 	jalr	t9
  47187c:	00000000 	nop
  471880:	8fdc0028 	lw	gp,40(s8)
  471884:	00000000 	nop
	}

	/* save decoded version of winning SA in state */

	st->st_ah.present = ah_seen;
  471888:	8fc200f4 	lw	v0,244(s8)
  47188c:	8fc30270 	lw	v1,624(s8)
  471890:	00000000 	nop
  471894:	ac62003c 	sw	v0,60(v1)
	if (ah_seen)
  471898:	8fc200f4 	lw	v0,244(s8)
  47189c:	00000000 	nop
  4718a0:	10400014 	beqz	v0,4718f4 <parse_ipsec_sa_body+0x1a78>
  4718a4:	00000000 	nop
	    st->st_ah.attrs = ah_attrs;
  4718a8:	8fc30270 	lw	v1,624(s8)
  4718ac:	8fc20180 	lw	v0,384(s8)
  4718b0:	00000000 	nop
  4718b4:	ac620040 	sw	v0,64(v1)
  4718b8:	8fc20184 	lw	v0,388(s8)
  4718bc:	00000000 	nop
  4718c0:	ac620044 	sw	v0,68(v1)
  4718c4:	8fc20188 	lw	v0,392(s8)
  4718c8:	00000000 	nop
  4718cc:	ac620048 	sw	v0,72(v1)
  4718d0:	8fc2018c 	lw	v0,396(s8)
  4718d4:	00000000 	nop
  4718d8:	ac62004c 	sw	v0,76(v1)
  4718dc:	8fc20190 	lw	v0,400(s8)
  4718e0:	00000000 	nop
  4718e4:	ac620050 	sw	v0,80(v1)
  4718e8:	8fc20194 	lw	v0,404(s8)
  4718ec:	00000000 	nop
  4718f0:	ac620054 	sw	v0,84(v1)

	st->st_esp.present = esp_seen;
  4718f4:	8fc200f8 	lw	v0,248(s8)
  4718f8:	8fc30270 	lw	v1,624(s8)
  4718fc:	00000000 	nop
  471900:	ac620068 	sw	v0,104(v1)
	if (esp_seen)
  471904:	8fc200f8 	lw	v0,248(s8)
  471908:	00000000 	nop
  47190c:	10400014 	beqz	v0,471960 <parse_ipsec_sa_body+0x1ae4>
  471910:	00000000 	nop
	    st->st_esp.attrs = esp_attrs;
  471914:	8fc30270 	lw	v1,624(s8)
  471918:	8fc20198 	lw	v0,408(s8)
  47191c:	00000000 	nop
  471920:	ac62006c 	sw	v0,108(v1)
  471924:	8fc2019c 	lw	v0,412(s8)
  471928:	00000000 	nop
  47192c:	ac620070 	sw	v0,112(v1)
  471930:	8fc201a0 	lw	v0,416(s8)
  471934:	00000000 	nop
  471938:	ac620074 	sw	v0,116(v1)
  47193c:	8fc201a4 	lw	v0,420(s8)
  471940:	00000000 	nop
  471944:	ac620078 	sw	v0,120(v1)
  471948:	8fc201a8 	lw	v0,424(s8)
  47194c:	00000000 	nop
  471950:	ac62007c 	sw	v0,124(v1)
  471954:	8fc201ac 	lw	v0,428(s8)
  471958:	00000000 	nop
  47195c:	ac620080 	sw	v0,128(v1)

	st->st_ipcomp.present = ipcomp_seen;
  471960:	8fc200fc 	lw	v0,252(s8)
  471964:	8fc30270 	lw	v1,624(s8)
  471968:	00000000 	nop
  47196c:	ac620094 	sw	v0,148(v1)
	if (ipcomp_seen)
  471970:	8fc200fc 	lw	v0,252(s8)
  471974:	00000000 	nop
  471978:	10400014 	beqz	v0,4719cc <parse_ipsec_sa_body+0x1b50>
  47197c:	00000000 	nop
	    st->st_ipcomp.attrs = ipcomp_attrs;
  471980:	8fc30270 	lw	v1,624(s8)
  471984:	8fc201b0 	lw	v0,432(s8)
  471988:	00000000 	nop
  47198c:	ac620098 	sw	v0,152(v1)
  471990:	8fc201b4 	lw	v0,436(s8)
  471994:	00000000 	nop
  471998:	ac62009c 	sw	v0,156(v1)
  47199c:	8fc201b8 	lw	v0,440(s8)
  4719a0:	00000000 	nop
  4719a4:	ac6200a0 	sw	v0,160(v1)
  4719a8:	8fc201bc 	lw	v0,444(s8)
  4719ac:	00000000 	nop
  4719b0:	ac6200a4 	sw	v0,164(v1)
  4719b4:	8fc201c0 	lw	v0,448(s8)
  4719b8:	00000000 	nop
  4719bc:	ac6200a8 	sw	v0,168(v1)
  4719c0:	8fc201c4 	lw	v0,452(s8)
  4719c4:	00000000 	nop
  4719c8:	ac6200ac 	sw	v0,172(v1)

	return NOTHING_WRONG;
  4719cc:	00001021 	move	v0,zero
  4719d0:	1000000c 	b	471a04 <parse_ipsec_sa_body+0x1b88>
  4719d4:	00000000 	nop
    }

    loglog(RC_LOG_SERIOUS, "no acceptable Proposal in IPsec SA");
  4719d8:	24040003 	li	a0,3
  4719dc:	8f85802c 	lw	a1,-32724(gp)
  4719e0:	00000000 	nop
  4719e4:	24a55ac8 	addiu	a1,a1,23240
  4719e8:	8f998c48 	lw	t9,-29624(gp)
  4719ec:	00000000 	nop
  4719f0:	0320f809 	jalr	t9
  4719f4:	00000000 	nop
  4719f8:	8fdc0028 	lw	gp,40(s8)
  4719fc:	00000000 	nop
    return NO_PROPOSAL_CHOSEN;
  471a00:	2402000e 	li	v0,14
}
  471a04:	03c0e821 	move	sp,s8
  471a08:	8fbf0258 	lw	ra,600(sp)
  471a0c:	8fbe0254 	lw	s8,596(sp)
  471a10:	8fb1024c 	lw	s1,588(sp)
  471a14:	8fb00248 	lw	s0,584(sp)
  471a18:	27bd0260 	addiu	sp,sp,608
  471a1c:	03e00008 	jr	ra
  471a20:	00000000 	nop

00471a24 <db_prop_get>:
  471a24:	3c1c0fba 	lui	gp,0xfba
  471a28:	279caf4c 	addiu	gp,gp,-20660
  471a2c:	0399e021 	addu	gp,gp,t9
  471a30:	27bdfff0 	addiu	sp,sp,-16
  471a34:	afbc0000 	sw	gp,0(sp)
  471a38:	afbe000c 	sw	s8,12(sp)
  471a3c:	afbc0008 	sw	gp,8(sp)
  471a40:	03a0f021 	move	s8,sp
  471a44:	00801021 	move	v0,a0

/*	Get proposal from db object */
static __inline__ struct db_prop *db_prop_get(struct db_context *ctx) {
	return &ctx->prop;
}
  471a48:	03c0e821 	move	sp,s8
  471a4c:	8fbe000c 	lw	s8,12(sp)
  471a50:	27bd0010 	addiu	sp,sp,16
  471a54:	03e00008 	jr	ra
  471a58:	00000000 	nop
  471a5c:	00000000 	nop

00471a60 <init_vendorid>:
  471a60:	3c1c0fba 	lui	gp,0xfba
  471a64:	279caf10 	addiu	gp,gp,-20720
  471a68:	0399e021 	addu	gp,gp,t9
  471a6c:	27bdff60 	addiu	sp,sp,-160
  471a70:	afbc0010 	sw	gp,16(sp)
  471a74:	afbf009c 	sw	ra,156(sp)
  471a78:	afbe0098 	sw	s8,152(sp)
  471a7c:	afbc0094 	sw	gp,148(sp)
  471a80:	afb00090 	sw	s0,144(sp)
  471a84:	03a0f021 	move	s8,sp
	struct vid_struct *vid;
	MD5_CTX ctx;
	int i;

	for (vid = _vid_tab; vid->id; vid++) {
  471a88:	8f828018 	lw	v0,-32744(gp)
  471a8c:	00000000 	nop
  471a90:	24423b40 	addiu	v0,v0,15168
  471a94:	00000000 	nop
  471a98:	afc20018 	sw	v0,24(s8)
  471a9c:	8fc20018 	lw	v0,24(s8)
  471aa0:	00000000 	nop
  471aa4:	8c420000 	lw	v0,0(v0)
  471aa8:	00000000 	nop
  471aac:	14400003 	bnez	v0,471abc <init_vendorid+0x5c>
  471ab0:	00000000 	nop
  471ab4:	100000ed 	b	471e6c <init_vendorid+0x40c>
  471ab8:	00000000 	nop
		if (vid->flags & VID_STRING) {
  471abc:	8fc20018 	lw	v0,24(s8)
  471ac0:	00000000 	nop
  471ac4:	94420004 	lhu	v0,4(v0)
  471ac8:	00000000 	nop
  471acc:	30420002 	andi	v0,v0,0x2
  471ad0:	3042ffff 	andi	v0,v0,0xffff
  471ad4:	10400019 	beqz	v0,471b3c <init_vendorid+0xdc>
  471ad8:	00000000 	nop
			/** VendorID is a string **/
			vid->vid = strdup(vid->data);
  471adc:	8fd00018 	lw	s0,24(s8)
  471ae0:	8fc20018 	lw	v0,24(s8)
  471ae4:	00000000 	nop
  471ae8:	8c440008 	lw	a0,8(v0)
  471aec:	8f998538 	lw	t9,-31432(gp)
  471af0:	00000000 	nop
  471af4:	0320f809 	jalr	t9
  471af8:	00000000 	nop
  471afc:	8fdc0010 	lw	gp,16(s8)
  471b00:	ae020010 	sw	v0,16(s0)
			vid->vid_len = strlen(vid->data);
  471b04:	8fc20018 	lw	v0,24(s8)
  471b08:	00000000 	nop
  471b0c:	8c440008 	lw	a0,8(v0)
  471b10:	8f998188 	lw	t9,-32376(gp)
  471b14:	00000000 	nop
  471b18:	0320f809 	jalr	t9
  471b1c:	00000000 	nop
  471b20:	8fdc0010 	lw	gp,16(s8)
  471b24:	00401821 	move	v1,v0
  471b28:	8fc20018 	lw	v0,24(s8)
  471b2c:	00000000 	nop
  471b30:	ac430014 	sw	v1,20(v0)
  471b34:	100000bb 	b	471e24 <init_vendorid+0x3c4>
  471b38:	00000000 	nop
		}
		else if (vid->flags & VID_MD5HASH) {
  471b3c:	8fc20018 	lw	v0,24(s8)
  471b40:	00000000 	nop
  471b44:	94420004 	lhu	v0,4(v0)
  471b48:	00000000 	nop
  471b4c:	30420001 	andi	v0,v0,0x1
  471b50:	3042ffff 	andi	v0,v0,0xffff
  471b54:	10400039 	beqz	v0,471c3c <init_vendorid+0x1dc>
  471b58:	00000000 	nop
			/** VendorID is a string to hash with MD5 **/
			char *vidm =  malloc(MD5_DIGEST_SIZE);
  471b5c:	24040010 	li	a0,16
  471b60:	8f9989d0 	lw	t9,-30256(gp)
  471b64:	00000000 	nop
  471b68:	0320f809 	jalr	t9
  471b6c:	00000000 	nop
  471b70:	8fdc0010 	lw	gp,16(s8)
  471b74:	afc2007c 	sw	v0,124(s8)
			vid->vid = vidm;
  471b78:	8fc3007c 	lw	v1,124(s8)
  471b7c:	8fc20018 	lw	v0,24(s8)
  471b80:	00000000 	nop
  471b84:	ac430010 	sw	v1,16(v0)
			if (vidm) {
  471b88:	8fc2007c 	lw	v0,124(s8)
  471b8c:	00000000 	nop
  471b90:	104000a4 	beqz	v0,471e24 <init_vendorid+0x3c4>
  471b94:	00000000 	nop
				MD5Init(&ctx);
  471b98:	27c40020 	addiu	a0,s8,32
  471b9c:	8f9983c8 	lw	t9,-31800(gp)
  471ba0:	00000000 	nop
  471ba4:	0320f809 	jalr	t9
  471ba8:	00000000 	nop
  471bac:	8fdc0010 	lw	gp,16(s8)
  471bb0:	00000000 	nop
				MD5Update(&ctx, vid->data, strlen(vid->data));
  471bb4:	8fc20018 	lw	v0,24(s8)
  471bb8:	00000000 	nop
  471bbc:	8c440008 	lw	a0,8(v0)
  471bc0:	8f998188 	lw	t9,-32376(gp)
  471bc4:	00000000 	nop
  471bc8:	0320f809 	jalr	t9
  471bcc:	00000000 	nop
  471bd0:	8fdc0010 	lw	gp,16(s8)
  471bd4:	00401821 	move	v1,v0
  471bd8:	27c40020 	addiu	a0,s8,32
  471bdc:	8fc20018 	lw	v0,24(s8)
  471be0:	00000000 	nop
  471be4:	8c450008 	lw	a1,8(v0)
  471be8:	00603021 	move	a2,v1
  471bec:	8f998354 	lw	t9,-31916(gp)
  471bf0:	00000000 	nop
  471bf4:	0320f809 	jalr	t9
  471bf8:	00000000 	nop
  471bfc:	8fdc0010 	lw	gp,16(s8)
  471c00:	00000000 	nop
				MD5Final(vidm, &ctx);
  471c04:	8fc4007c 	lw	a0,124(s8)
  471c08:	27c50020 	addiu	a1,s8,32
  471c0c:	8f99888c 	lw	t9,-30580(gp)
  471c10:	00000000 	nop
  471c14:	0320f809 	jalr	t9
  471c18:	00000000 	nop
  471c1c:	8fdc0010 	lw	gp,16(s8)
  471c20:	00000000 	nop
				vid->vid_len = MD5_DIGEST_SIZE;
  471c24:	24030010 	li	v1,16
  471c28:	8fc20018 	lw	v0,24(s8)
  471c2c:	00000000 	nop
  471c30:	ac430014 	sw	v1,20(v0)
  471c34:	1000007b 	b	471e24 <init_vendorid+0x3c4>
  471c38:	00000000 	nop
			}
		}
		else if (vid->flags & VID_FSWAN_HASH) {
  471c3c:	8fc20018 	lw	v0,24(s8)
  471c40:	00000000 	nop
  471c44:	94420004 	lhu	v0,4(v0)
  471c48:	00000000 	nop
  471c4c:	30420004 	andi	v0,v0,0x4
  471c50:	3042ffff 	andi	v0,v0,0xffff
  471c54:	10400073 	beqz	v0,471e24 <init_vendorid+0x3c4>
  471c58:	00000000 	nop
			/** FreeS/WAN 2.00+ specific hash **/
#define FSWAN_VID_SIZE 12
			unsigned char hash[MD5_DIGEST_SIZE];
			char *vidm =  malloc(FSWAN_VID_SIZE);
  471c5c:	2404000c 	li	a0,12
  471c60:	8f9989d0 	lw	t9,-30256(gp)
  471c64:	00000000 	nop
  471c68:	0320f809 	jalr	t9
  471c6c:	00000000 	nop
  471c70:	8fdc0010 	lw	gp,16(s8)
  471c74:	afc2007c 	sw	v0,124(s8)
			vid->vid = vidm;
  471c78:	8fc3007c 	lw	v1,124(s8)
  471c7c:	8fc20018 	lw	v0,24(s8)
  471c80:	00000000 	nop
  471c84:	ac430010 	sw	v1,16(v0)
			if (vidm) {
  471c88:	8fc2007c 	lw	v0,124(s8)
  471c8c:	00000000 	nop
  471c90:	10400064 	beqz	v0,471e24 <init_vendorid+0x3c4>
  471c94:	00000000 	nop
				MD5Init(&ctx);
  471c98:	27c40020 	addiu	a0,s8,32
  471c9c:	8f9983c8 	lw	t9,-31800(gp)
  471ca0:	00000000 	nop
  471ca4:	0320f809 	jalr	t9
  471ca8:	00000000 	nop
  471cac:	8fdc0010 	lw	gp,16(s8)
  471cb0:	00000000 	nop
				MD5Update(&ctx, vid->data, strlen(vid->data));
  471cb4:	8fc20018 	lw	v0,24(s8)
  471cb8:	00000000 	nop
  471cbc:	8c440008 	lw	a0,8(v0)
  471cc0:	8f998188 	lw	t9,-32376(gp)
  471cc4:	00000000 	nop
  471cc8:	0320f809 	jalr	t9
  471ccc:	00000000 	nop
  471cd0:	8fdc0010 	lw	gp,16(s8)
  471cd4:	00401821 	move	v1,v0
  471cd8:	27c40020 	addiu	a0,s8,32
  471cdc:	8fc20018 	lw	v0,24(s8)
  471ce0:	00000000 	nop
  471ce4:	8c450008 	lw	a1,8(v0)
  471ce8:	00603021 	move	a2,v1
  471cec:	8f998354 	lw	t9,-31916(gp)
  471cf0:	00000000 	nop
  471cf4:	0320f809 	jalr	t9
  471cf8:	00000000 	nop
  471cfc:	8fdc0010 	lw	gp,16(s8)
  471d00:	00000000 	nop
				MD5Final(hash, &ctx);
  471d04:	27c40080 	addiu	a0,s8,128
  471d08:	27c50020 	addiu	a1,s8,32
  471d0c:	8f99888c 	lw	t9,-30580(gp)
  471d10:	00000000 	nop
  471d14:	0320f809 	jalr	t9
  471d18:	00000000 	nop
  471d1c:	8fdc0010 	lw	gp,16(s8)
  471d20:	00000000 	nop
				vidm[0] = 'O';
  471d24:	2403004f 	li	v1,79
  471d28:	8fc2007c 	lw	v0,124(s8)
  471d2c:	00000000 	nop
  471d30:	a0430000 	sb	v1,0(v0)
				vidm[1] = 'E';
  471d34:	8fc2007c 	lw	v0,124(s8)
  471d38:	00000000 	nop
  471d3c:	24430001 	addiu	v1,v0,1
  471d40:	24020045 	li	v0,69
  471d44:	a0620000 	sb	v0,0(v1)
#if FSWAN_VID_SIZE - 2 <= MD5_DIGEST_SIZE
				memcpy(vidm + 2, hash, FSWAN_VID_SIZE - 2);
  471d48:	8fc2007c 	lw	v0,124(s8)
  471d4c:	00000000 	nop
  471d50:	24420002 	addiu	v0,v0,2
  471d54:	00402021 	move	a0,v0
  471d58:	27c50080 	addiu	a1,s8,128
  471d5c:	2406000a 	li	a2,10
  471d60:	8f998a30 	lw	t9,-30160(gp)
  471d64:	00000000 	nop
  471d68:	0320f809 	jalr	t9
  471d6c:	00000000 	nop
  471d70:	8fdc0010 	lw	gp,16(s8)
  471d74:	00000000 	nop
#else
				memcpy(vidm + 2, hash, MD5_DIGEST_SIZE);
				memset(vidm + 2 + MD5_DIGEST_SIZE, '\0',
					FSWAN_VID_SIZE - 2 - MD5_DIGEST_SIZE);
#endif
				for (i = 2; i < FSWAN_VID_SIZE; i++) {
  471d78:	24020002 	li	v0,2
  471d7c:	afc20078 	sw	v0,120(s8)
  471d80:	8fc20078 	lw	v0,120(s8)
  471d84:	00000000 	nop
  471d88:	2842000c 	slti	v0,v0,12
  471d8c:	14400003 	bnez	v0,471d9c <init_vendorid+0x33c>
  471d90:	00000000 	nop
  471d94:	1000001f 	b	471e14 <init_vendorid+0x3b4>
  471d98:	00000000 	nop
					vidm[i] &= 0x7f;
  471d9c:	8fc3007c 	lw	v1,124(s8)
  471da0:	8fc20078 	lw	v0,120(s8)
  471da4:	00000000 	nop
  471da8:	00622021 	addu	a0,v1,v0
  471dac:	8fc3007c 	lw	v1,124(s8)
  471db0:	8fc20078 	lw	v0,120(s8)
  471db4:	00000000 	nop
  471db8:	00621021 	addu	v0,v1,v0
  471dbc:	90420000 	lbu	v0,0(v0)
  471dc0:	00000000 	nop
  471dc4:	3042007f 	andi	v0,v0,0x7f
  471dc8:	a0820000 	sb	v0,0(a0)
					vidm[i] |= 0x40;
  471dcc:	8fc3007c 	lw	v1,124(s8)
  471dd0:	8fc20078 	lw	v0,120(s8)
  471dd4:	00000000 	nop
  471dd8:	00622021 	addu	a0,v1,v0
  471ddc:	8fc3007c 	lw	v1,124(s8)
  471de0:	8fc20078 	lw	v0,120(s8)
  471de4:	00000000 	nop
  471de8:	00621021 	addu	v0,v1,v0
  471dec:	90420000 	lbu	v0,0(v0)
  471df0:	00000000 	nop
  471df4:	34420040 	ori	v0,v0,0x40
  471df8:	a0820000 	sb	v0,0(a0)
  471dfc:	8fc20078 	lw	v0,120(s8)
  471e00:	00000000 	nop
  471e04:	24420001 	addiu	v0,v0,1
  471e08:	afc20078 	sw	v0,120(s8)
  471e0c:	1000ffdc 	b	471d80 <init_vendorid+0x320>
  471e10:	00000000 	nop
				}
				vid->vid_len = FSWAN_VID_SIZE;
  471e14:	2403000c 	li	v1,12
  471e18:	8fc20018 	lw	v0,24(s8)
  471e1c:	00000000 	nop
  471e20:	ac430014 	sw	v1,20(v0)
			}
		}

		if (vid->descr == NULL) {
  471e24:	8fc20018 	lw	v0,24(s8)
  471e28:	00000000 	nop
  471e2c:	8c42000c 	lw	v0,12(v0)
  471e30:	00000000 	nop
  471e34:	14400007 	bnez	v0,471e54 <init_vendorid+0x3f4>
  471e38:	00000000 	nop
			/** Find something to display **/
			vid->descr = vid->data;
  471e3c:	8fc20018 	lw	v0,24(s8)
  471e40:	00000000 	nop
  471e44:	8c430008 	lw	v1,8(v0)
  471e48:	8fc20018 	lw	v0,24(s8)
  471e4c:	00000000 	nop
  471e50:	ac43000c 	sw	v1,12(v0)
  471e54:	8fc20018 	lw	v0,24(s8)
  471e58:	00000000 	nop
  471e5c:	24420018 	addiu	v0,v0,24
  471e60:	afc20018 	sw	v0,24(s8)
  471e64:	1000ff0d 	b	471a9c <init_vendorid+0x3c>
  471e68:	00000000 	nop
		}
#if 0
		DBG_log("vendorid_init: %d [%s]",
			vid->id,
			vid->descr ? vid->descr : ""
			);
		if (vid->vid) DBG_dump("VID:", vid->vid, vid->vid_len);
#endif
	}
	_vid_struct_init = 1;
  471e6c:	24020001 	li	v0,1
  471e70:	8f818018 	lw	at,-32744(gp)
  471e74:	00000000 	nop
  471e78:	24213f60 	addiu	at,at,16224
  471e7c:	ac220000 	sw	v0,0(at)
}
  471e80:	03c0e821 	move	sp,s8
  471e84:	8fbf009c 	lw	ra,156(sp)
  471e88:	8fbe0098 	lw	s8,152(sp)
  471e8c:	8fb00090 	lw	s0,144(sp)
  471e90:	27bd00a0 	addiu	sp,sp,160
  471e94:	03e00008 	jr	ra
  471e98:	00000000 	nop

00471e9c <handle_known_vendorid>:
  471e9c:	3c1c0fba 	lui	gp,0xfba
  471ea0:	279caad4 	addiu	gp,gp,-21804
  471ea4:	0399e021 	addu	gp,gp,t9
  471ea8:	27bdff30 	addiu	sp,sp,-208
  471eac:	afbc0010 	sw	gp,16(sp)
  471eb0:	afbf00c8 	sw	ra,200(sp)
  471eb4:	afbe00c4 	sw	s8,196(sp)
  471eb8:	afbc00c0 	sw	gp,192(sp)
  471ebc:	03a0f021 	move	s8,sp
  471ec0:	afc400d0 	sw	a0,208(s8)
  471ec4:	afc500d4 	sw	a1,212(s8)
  471ec8:	afc600d8 	sw	a2,216(s8)
  471ecc:	afc700dc 	sw	a3,220(s8)

static void handle_known_vendorid (struct msg_digest *md,
	const char *vidstr, size_t len, struct vid_struct *vid)
{
	char vid_dump[128];
	int vid_usefull = 0;
  471ed0:	afc00098 	sw	zero,152(s8)
	size_t i, j;

	switch (vid->id) {
  471ed4:	8fc200dc 	lw	v0,220(s8)
  471ed8:	00000000 	nop
  471edc:	8c420000 	lw	v0,0(v0)
  471ee0:	00000000 	nop
  471ee4:	afc200a4 	sw	v0,164(s8)
  471ee8:	8fc300a4 	lw	v1,164(s8)
  471eec:	00000000 	nop
  471ef0:	2c62006e 	sltiu	v0,v1,110
  471ef4:	10400012 	beqz	v0,471f40 <handle_known_vendorid+0xa4>
  471ef8:	00000000 	nop
  471efc:	8fc300a4 	lw	v1,164(s8)
  471f00:	00000000 	nop
  471f04:	2c62006a 	sltiu	v0,v1,106
  471f08:	1040002a 	beqz	v0,471fb4 <handle_known_vendorid+0x118>
  471f0c:	00000000 	nop
  471f10:	24020019 	li	v0,25
  471f14:	8fc300a4 	lw	v1,164(s8)
  471f18:	00000000 	nop
  471f1c:	10620046 	beq	v1,v0,472038 <handle_known_vendorid+0x19c>
  471f20:	00000000 	nop
  471f24:	24020069 	li	v0,105
  471f28:	8fc300a4 	lw	v1,164(s8)
  471f2c:	00000000 	nop
  471f30:	1062000a 	beq	v1,v0,471f5c <handle_known_vendorid+0xc0>
  471f34:	00000000 	nop
  471f38:	1000004e 	b	472074 <handle_known_vendorid+0x1d8>
  471f3c:	00000000 	nop
  471f40:	240200ca 	li	v0,202
  471f44:	8fc300a4 	lw	v1,164(s8)
  471f48:	00000000 	nop
  471f4c:	10620033 	beq	v1,v0,47201c <handle_known_vendorid+0x180>
  471f50:	00000000 	nop
  471f54:	10000047 	b	472074 <handle_known_vendorid+0x1d8>
  471f58:	00000000 	nop
#ifdef NAT_TRAVERSAL
		/*
		 * Use most recent supported NAT-Traversal method and ignore the
		 * other ones (implementations will send all supported methods but
		 * only one will be used)
		 *
		 * Note: most recent == higher id in vendor.h
		 */
		case VID_NATT_IETF_00:
			if ((nat_traversal_enabled) && (!md->nat_traversal_vid)) {
  471f5c:	8f82837c 	lw	v0,-31876(gp)
  471f60:	00000000 	nop
  471f64:	8c420000 	lw	v0,0(v0)
  471f68:	00000000 	nop
  471f6c:	10400041 	beqz	v0,472074 <handle_known_vendorid+0x1d8>
  471f70:	00000000 	nop
  471f74:	8fc200d0 	lw	v0,208(s8)
  471f78:	00000000 	nop
  471f7c:	944204ec 	lhu	v0,1260(v0)
  471f80:	00000000 	nop
  471f84:	1440003b 	bnez	v0,472074 <handle_known_vendorid+0x1d8>
  471f88:	00000000 	nop
				md->nat_traversal_vid = vid->id;
  471f8c:	8fc200dc 	lw	v0,220(s8)
  471f90:	00000000 	nop
  471f94:	94430002 	lhu	v1,2(v0)
  471f98:	8fc200d0 	lw	v0,208(s8)
  471f9c:	00000000 	nop
  471fa0:	a44304ec 	sh	v1,1260(v0)
				vid_usefull = 1;
  471fa4:	24020001 	li	v0,1
  471fa8:	afc20098 	sw	v0,152(s8)
			}
			break;
  471fac:	10000031 	b	472074 <handle_known_vendorid+0x1d8>
  471fb0:	00000000 	nop
		case VID_NATT_IETF_02:
		case VID_NATT_IETF_02_N:
		case VID_NATT_IETF_03:
		case VID_NATT_RFC:
			if ((nat_traversal_support_port_floating) &&
				(md->nat_traversal_vid < vid->id)) {
  471fb4:	8f8282b8 	lw	v0,-32072(gp)
  471fb8:	00000000 	nop
  471fbc:	8c420000 	lw	v0,0(v0)
  471fc0:	00000000 	nop
  471fc4:	1040002b 	beqz	v0,472074 <handle_known_vendorid+0x1d8>
  471fc8:	00000000 	nop
  471fcc:	8fc200d0 	lw	v0,208(s8)
  471fd0:	00000000 	nop
  471fd4:	944304ec 	lhu	v1,1260(v0)
  471fd8:	8fc200dc 	lw	v0,220(s8)
  471fdc:	00000000 	nop
  471fe0:	8c420000 	lw	v0,0(v0)
  471fe4:	00000000 	nop
  471fe8:	0062102b 	sltu	v0,v1,v0
  471fec:	10400021 	beqz	v0,472074 <handle_known_vendorid+0x1d8>
  471ff0:	00000000 	nop
				md->nat_traversal_vid = vid->id;
  471ff4:	8fc200dc 	lw	v0,220(s8)
  471ff8:	00000000 	nop
  471ffc:	94430002 	lhu	v1,2(v0)
  472000:	8fc200d0 	lw	v0,208(s8)
  472004:	00000000 	nop
  472008:	a44304ec 	sh	v1,1260(v0)
				vid_usefull = 1;
  47200c:	24020001 	li	v0,1
  472010:	afc20098 	sw	v0,152(s8)
			}
			break;
  472014:	10000017 	b	472074 <handle_known_vendorid+0x1d8>
  472018:	00000000 	nop
#endif
#ifdef DPD
		case VID_MISC_DPD:
			md->dpd = 1;
  47201c:	24020001 	li	v0,1
  472020:	8fc300d0 	lw	v1,208(s8)
  472024:	00000000 	nop
  472028:	ac6200e0 	sw	v0,224(v1)
			vid_usefull = 1;
  47202c:	afc20098 	sw	v0,152(s8)
			break;
  472030:	10000010 	b	472074 <handle_known_vendorid+0x1d8>
  472034:	00000000 	nop
#endif
	        case VID_SSH_SENTINEL_1_4_1:
		  	loglog(RC_LOG_SERIOUS, "SSH Sentinel 1.4.1 found, setting XAUTH_ACK quirk");
  472038:	24040003 	li	a0,3
  47203c:	8f85802c 	lw	a1,-32724(gp)
  472040:	00000000 	nop
  472044:	24a5623c 	addiu	a1,a1,25148
  472048:	8f998c48 	lw	t9,-29624(gp)
  47204c:	00000000 	nop
  472050:	0320f809 	jalr	t9
  472054:	00000000 	nop
  472058:	8fdc0010 	lw	gp,16(s8)
  47205c:	00000000 	nop
		  	md->quirks.xauth_ack_msgid = TRUE;
  472060:	24020001 	li	v0,1
  472064:	8fc300d0 	lw	v1,208(s8)
  472068:	00000000 	nop
  47206c:	ac6204f0 	sw	v0,1264(v1)
		  	vid_usefull = 1;
  472070:	afc20098 	sw	v0,152(s8)
		  	break;
#ifdef XAUTH	
		case VID_MISC_XAUTH:
			vid_usefull = 1;
			break;
#endif
		default:
			break;
	}

	if (vid->flags & VID_SUBSTRING_DUMPHEXA) {
  472074:	8fc200dc 	lw	v0,220(s8)
  472078:	00000000 	nop
  47207c:	94420004 	lhu	v0,4(v0)
  472080:	00000000 	nop
  472084:	30420100 	andi	v0,v0,0x100
  472088:	3042ffff 	andi	v0,v0,0xffff
  47208c:	10400073 	beqz	v0,47225c <handle_known_vendorid+0x3c0>
  472090:	00000000 	nop
		/* Dump description + Hexa */
		memset(vid_dump, 0, sizeof(vid_dump));
  472094:	27c40018 	addiu	a0,s8,24
  472098:	00002821 	move	a1,zero
  47209c:	24060080 	li	a2,128
  4720a0:	8f998500 	lw	t9,-31488(gp)
  4720a4:	00000000 	nop
  4720a8:	0320f809 	jalr	t9
  4720ac:	00000000 	nop
  4720b0:	8fdc0010 	lw	gp,16(s8)
  4720b4:	00000000 	nop
		snprintf(vid_dump, sizeof(vid_dump), "%s ",
  4720b8:	8fc200dc 	lw	v0,220(s8)
  4720bc:	00000000 	nop
  4720c0:	8c42000c 	lw	v0,12(v0)
  4720c4:	00000000 	nop
  4720c8:	afc200a8 	sw	v0,168(s8)
  4720cc:	8fc200dc 	lw	v0,220(s8)
  4720d0:	00000000 	nop
  4720d4:	8c42000c 	lw	v0,12(v0)
  4720d8:	00000000 	nop
  4720dc:	14400006 	bnez	v0,4720f8 <handle_known_vendorid+0x25c>
  4720e0:	00000000 	nop
  4720e4:	8f82802c 	lw	v0,-32724(gp)
  4720e8:	00000000 	nop
  4720ec:	24426270 	addiu	v0,v0,25200
  4720f0:	00000000 	nop
  4720f4:	afc200a8 	sw	v0,168(s8)
  4720f8:	27c40018 	addiu	a0,s8,24
  4720fc:	24050080 	li	a1,128
  472100:	8f86802c 	lw	a2,-32724(gp)
  472104:	00000000 	nop
  472108:	24c66274 	addiu	a2,a2,25204
  47210c:	8fc700a8 	lw	a3,168(s8)
  472110:	8f998b38 	lw	t9,-29896(gp)
  472114:	00000000 	nop
  472118:	0320f809 	jalr	t9
  47211c:	00000000 	nop
  472120:	8fdc0010 	lw	gp,16(s8)
  472124:	00000000 	nop
			vid->descr ? vid->descr : "");
		for (i=strlen(vid_dump), j=vid->vid_len;
  472128:	27c40018 	addiu	a0,s8,24
  47212c:	8f998188 	lw	t9,-32376(gp)
  472130:	00000000 	nop
  472134:	0320f809 	jalr	t9
  472138:	00000000 	nop
  47213c:	8fdc0010 	lw	gp,16(s8)
  472140:	afc2009c 	sw	v0,156(s8)
  472144:	8fc200dc 	lw	v0,220(s8)
  472148:	00000000 	nop
  47214c:	8c420014 	lw	v0,20(v0)
  472150:	00000000 	nop
  472154:	afc200a0 	sw	v0,160(s8)
  472158:	8fc200a0 	lw	v0,160(s8)
  47215c:	8fc300d8 	lw	v1,216(s8)
  472160:	00000000 	nop
  472164:	0043102b 	sltu	v0,v0,v1
  472168:	1040009f 	beqz	v0,4723e8 <handle_known_vendorid+0x54c>
  47216c:	00000000 	nop
  472170:	8fc2009c 	lw	v0,156(s8)
  472174:	00000000 	nop
  472178:	2c42007e 	sltiu	v0,v0,126
  47217c:	14400003 	bnez	v0,47218c <handle_known_vendorid+0x2f0>
  472180:	00000000 	nop
  472184:	10000098 	b	4723e8 <handle_known_vendorid+0x54c>
  472188:	00000000 	nop
			(j<len) && (i<sizeof(vid_dump)-2);
			i+=2, j++) {
			vid_dump[i] = _hexdig[(vidstr[j] >> 4) & 0xF];
  47218c:	27c30018 	addiu	v1,s8,24
  472190:	8fc2009c 	lw	v0,156(s8)
  472194:	00000000 	nop
  472198:	00622021 	addu	a0,v1,v0
  47219c:	8fc300d4 	lw	v1,212(s8)
  4721a0:	8fc200a0 	lw	v0,160(s8)
  4721a4:	00000000 	nop
  4721a8:	00621021 	addu	v0,v1,v0
  4721ac:	80420000 	lb	v0,0(v0)
  4721b0:	00000000 	nop
  4721b4:	00021103 	sra	v0,v0,0x4
  4721b8:	3042000f 	andi	v0,v0,0xf
  4721bc:	00021600 	sll	v0,v0,0x18
  4721c0:	00021603 	sra	v0,v0,0x18
  4721c4:	8f81802c 	lw	at,-32724(gp)
  4721c8:	00000000 	nop
  4721cc:	24216228 	addiu	at,at,25128
  4721d0:	00221021 	addu	v0,at,v0
  4721d4:	90420000 	lbu	v0,0(v0)
  4721d8:	00000000 	nop
  4721dc:	a0820000 	sb	v0,0(a0)
			vid_dump[i+1] = _hexdig[vidstr[j] & 0xF];
  4721e0:	8fc2009c 	lw	v0,156(s8)
  4721e4:	00000000 	nop
  4721e8:	24430001 	addiu	v1,v0,1
  4721ec:	27c20018 	addiu	v0,s8,24
  4721f0:	00432021 	addu	a0,v0,v1
  4721f4:	8fc300d4 	lw	v1,212(s8)
  4721f8:	8fc200a0 	lw	v0,160(s8)
  4721fc:	00000000 	nop
  472200:	00621021 	addu	v0,v1,v0
  472204:	90420000 	lbu	v0,0(v0)
  472208:	00000000 	nop
  47220c:	3042000f 	andi	v0,v0,0xf
  472210:	00021600 	sll	v0,v0,0x18
  472214:	00021603 	sra	v0,v0,0x18
  472218:	8f81802c 	lw	at,-32724(gp)
  47221c:	00000000 	nop
  472220:	24216228 	addiu	at,at,25128
  472224:	00221021 	addu	v0,at,v0
  472228:	90420000 	lbu	v0,0(v0)
  47222c:	00000000 	nop
  472230:	a0820000 	sb	v0,0(a0)
  472234:	8fc2009c 	lw	v0,156(s8)
  472238:	00000000 	nop
  47223c:	24420002 	addiu	v0,v0,2
  472240:	afc2009c 	sw	v0,156(s8)
  472244:	8fc200a0 	lw	v0,160(s8)
  472248:	00000000 	nop
  47224c:	24420001 	addiu	v0,v0,1
  472250:	afc200a0 	sw	v0,160(s8)
  472254:	1000ffc0 	b	472158 <handle_known_vendorid+0x2bc>
  472258:	00000000 	nop
		}
	}
	else if (vid->flags & VID_SUBSTRING_DUMPASCII) {
  47225c:	8fc200dc 	lw	v0,220(s8)
  472260:	00000000 	nop
  472264:	94420004 	lhu	v0,4(v0)
  472268:	00000000 	nop
  47226c:	30420200 	andi	v0,v0,0x200
  472270:	3042ffff 	andi	v0,v0,0xffff
  472274:	10400040 	beqz	v0,472378 <handle_known_vendorid+0x4dc>
  472278:	00000000 	nop
		/* Dump ASCII content */
		memset(vid_dump, 0, sizeof(vid_dump));
  47227c:	27c40018 	addiu	a0,s8,24
  472280:	00002821 	move	a1,zero
  472284:	24060080 	li	a2,128
  472288:	8f998500 	lw	t9,-31488(gp)
  47228c:	00000000 	nop
  472290:	0320f809 	jalr	t9
  472294:	00000000 	nop
  472298:	8fdc0010 	lw	gp,16(s8)
  47229c:	00000000 	nop
		for (i=0; (i<len) && (i<sizeof(vid_dump)-1); i++) {
  4722a0:	afc0009c 	sw	zero,156(s8)
  4722a4:	8fc2009c 	lw	v0,156(s8)
  4722a8:	8fc300d8 	lw	v1,216(s8)
  4722ac:	00000000 	nop
  4722b0:	0043102b 	sltu	v0,v0,v1
  4722b4:	1040004c 	beqz	v0,4723e8 <handle_known_vendorid+0x54c>
  4722b8:	00000000 	nop
  4722bc:	8fc2009c 	lw	v0,156(s8)
  4722c0:	00000000 	nop
  4722c4:	2c42007f 	sltiu	v0,v0,127
  4722c8:	14400003 	bnez	v0,4722d8 <handle_known_vendorid+0x43c>
  4722cc:	00000000 	nop
  4722d0:	10000045 	b	4723e8 <handle_known_vendorid+0x54c>
  4722d4:	00000000 	nop
			vid_dump[i] = (isprint(vidstr[i])) ? vidstr[i] : '.';
  4722d8:	27c30018 	addiu	v1,s8,24
  4722dc:	8fc2009c 	lw	v0,156(s8)
  4722e0:	00000000 	nop
  4722e4:	00621821 	addu	v1,v1,v0
  4722e8:	afc300ac 	sw	v1,172(s8)
  4722ec:	8fc300d4 	lw	v1,212(s8)
  4722f0:	8fc2009c 	lw	v0,156(s8)
  4722f4:	00000000 	nop
  4722f8:	00621021 	addu	v0,v1,v0
  4722fc:	80420000 	lb	v0,0(v0)
  472300:	00000000 	nop
  472304:	00402021 	move	a0,v0
  472308:	8f99846c 	lw	t9,-31636(gp)
  47230c:	00000000 	nop
  472310:	0320f809 	jalr	t9
  472314:	00000000 	nop
  472318:	8fdc0010 	lw	gp,16(s8)
  47231c:	1040000a 	beqz	v0,472348 <handle_known_vendorid+0x4ac>
  472320:	00000000 	nop
  472324:	8fc200d4 	lw	v0,212(s8)
  472328:	8fc3009c 	lw	v1,156(s8)
  47232c:	00000000 	nop
  472330:	00431021 	addu	v0,v0,v1
  472334:	90420000 	lbu	v0,0(v0)
  472338:	00000000 	nop
  47233c:	a3c200b0 	sb	v0,176(s8)
  472340:	10000003 	b	472350 <handle_known_vendorid+0x4b4>
  472344:	00000000 	nop
  472348:	2403002e 	li	v1,46
  47234c:	a3c300b0 	sb	v1,176(s8)
  472350:	93c300b0 	lbu	v1,176(s8)
  472354:	8fc200ac 	lw	v0,172(s8)
  472358:	00000000 	nop
  47235c:	a0430000 	sb	v1,0(v0)
  472360:	8fc2009c 	lw	v0,156(s8)
  472364:	00000000 	nop
  472368:	24420001 	addiu	v0,v0,1
  47236c:	afc2009c 	sw	v0,156(s8)
  472370:	1000ffcc 	b	4722a4 <handle_known_vendorid+0x408>
  472374:	00000000 	nop
		}
	}
	else {
		/* Dump description (descr) */
		snprintf(vid_dump, sizeof(vid_dump), "%s",
  472378:	8fc200dc 	lw	v0,220(s8)
  47237c:	00000000 	nop
  472380:	8c42000c 	lw	v0,12(v0)
  472384:	00000000 	nop
  472388:	afc200b4 	sw	v0,180(s8)
  47238c:	8fc200dc 	lw	v0,220(s8)
  472390:	00000000 	nop
  472394:	8c42000c 	lw	v0,12(v0)
  472398:	00000000 	nop
  47239c:	14400006 	bnez	v0,4723b8 <handle_known_vendorid+0x51c>
  4723a0:	00000000 	nop
  4723a4:	8f82802c 	lw	v0,-32724(gp)
  4723a8:	00000000 	nop
  4723ac:	24426270 	addiu	v0,v0,25200
  4723b0:	00000000 	nop
  4723b4:	afc200b4 	sw	v0,180(s8)
  4723b8:	27c40018 	addiu	a0,s8,24
  4723bc:	24050080 	li	a1,128
  4723c0:	8f86802c 	lw	a2,-32724(gp)
  4723c4:	00000000 	nop
  4723c8:	24c66278 	addiu	a2,a2,25208
  4723cc:	8fc700b4 	lw	a3,180(s8)
  4723d0:	8f998b38 	lw	t9,-29896(gp)
  4723d4:	00000000 	nop
  4723d8:	0320f809 	jalr	t9
  4723dc:	00000000 	nop
  4723e0:	8fdc0010 	lw	gp,16(s8)
  4723e4:	00000000 	nop
			vid->descr ? vid->descr : "");
	}

	loglog(RC_LOG_SERIOUS, "%s Vendor ID payload [%s]",
  4723e8:	8fc20098 	lw	v0,152(s8)
  4723ec:	00000000 	nop
  4723f0:	10400008 	beqz	v0,472414 <handle_known_vendorid+0x578>
  4723f4:	00000000 	nop
  4723f8:	8f83802c 	lw	v1,-32724(gp)
  4723fc:	00000000 	nop
  472400:	2463627c 	addiu	v1,v1,25212
  472404:	00000000 	nop
  472408:	afc300b8 	sw	v1,184(s8)
  47240c:	10000006 	b	472428 <handle_known_vendorid+0x58c>
  472410:	00000000 	nop
  472414:	8f82802c 	lw	v0,-32724(gp)
  472418:	00000000 	nop
  47241c:	24426288 	addiu	v0,v0,25224
  472420:	00000000 	nop
  472424:	afc200b8 	sw	v0,184(s8)
  472428:	24040003 	li	a0,3
  47242c:	8f85802c 	lw	a1,-32724(gp)
  472430:	00000000 	nop
  472434:	24a56294 	addiu	a1,a1,25236
  472438:	8fc600b8 	lw	a2,184(s8)
  47243c:	27c70018 	addiu	a3,s8,24
  472440:	8f998c48 	lw	t9,-29624(gp)
  472444:	00000000 	nop
  472448:	0320f809 	jalr	t9
  47244c:	00000000 	nop
  472450:	8fdc0010 	lw	gp,16(s8)
  472454:	00000000 	nop
		vid_usefull ? "received" : "ignoring", vid_dump);
}
  472458:	03c0e821 	move	sp,s8
  47245c:	8fbf00c8 	lw	ra,200(sp)
  472460:	8fbe00c4 	lw	s8,196(sp)
  472464:	27bd00d0 	addiu	sp,sp,208
  472468:	03e00008 	jr	ra
  47246c:	00000000 	nop

00472470 <handle_vendorid>:
  472470:	3c1c0fba 	lui	gp,0xfba
  472474:	279ca500 	addiu	gp,gp,-23296
  472478:	0399e021 	addu	gp,gp,t9
  47247c:	27bdffb0 	addiu	sp,sp,-80
  472480:	afbc0010 	sw	gp,16(sp)
  472484:	afbf0048 	sw	ra,72(sp)
  472488:	afbe0044 	sw	s8,68(sp)
  47248c:	afbc0040 	sw	gp,64(sp)
  472490:	03a0f021 	move	s8,sp
  472494:	afc40050 	sw	a0,80(s8)
  472498:	afc50054 	sw	a1,84(s8)
  47249c:	afc60058 	sw	a2,88(s8)

void handle_vendorid (struct msg_digest *md, const char *vid, size_t len)
{
	struct vid_struct *pvid;

	if (!_vid_struct_init) {
  4724a0:	8f828018 	lw	v0,-32744(gp)
  4724a4:	00000000 	nop
  4724a8:	24423f60 	addiu	v0,v0,16224
  4724ac:	8c420000 	lw	v0,0(v0)
  4724b0:	00000000 	nop
  4724b4:	14400007 	bnez	v0,4724d4 <handle_vendorid+0x64>
  4724b8:	00000000 	nop
		init_vendorid();
  4724bc:	8f9988b4 	lw	t9,-30540(gp)
  4724c0:	00000000 	nop
  4724c4:	0320f809 	jalr	t9
  4724c8:	00000000 	nop
  4724cc:	8fdc0010 	lw	gp,16(s8)
  4724d0:	00000000 	nop
	}

	/*
	 * Find known VendorID in _vid_tab
	 */
	for (pvid = _vid_tab; pvid->id; pvid++) {
  4724d4:	8f828018 	lw	v0,-32744(gp)
  4724d8:	00000000 	nop
  4724dc:	24423b40 	addiu	v0,v0,15168
  4724e0:	00000000 	nop
  4724e4:	afc20018 	sw	v0,24(s8)
  4724e8:	8fc20018 	lw	v0,24(s8)
  4724ec:	00000000 	nop
  4724f0:	8c420000 	lw	v0,0(v0)
  4724f4:	00000000 	nop
  4724f8:	14400003 	bnez	v0,472508 <handle_vendorid+0x98>
  4724fc:	00000000 	nop
  472500:	10000068 	b	4726a4 <handle_vendorid+0x234>
  472504:	00000000 	nop
		if (pvid->vid && vid && pvid->vid_len && len) {
  472508:	8fc20018 	lw	v0,24(s8)
  47250c:	00000000 	nop
  472510:	8c420010 	lw	v0,16(v0)
  472514:	00000000 	nop
  472518:	1040005c 	beqz	v0,47268c <handle_vendorid+0x21c>
  47251c:	00000000 	nop
  472520:	8fc20054 	lw	v0,84(s8)
  472524:	00000000 	nop
  472528:	10400058 	beqz	v0,47268c <handle_vendorid+0x21c>
  47252c:	00000000 	nop
  472530:	8fc20018 	lw	v0,24(s8)
  472534:	00000000 	nop
  472538:	8c420014 	lw	v0,20(v0)
  47253c:	00000000 	nop
  472540:	10400052 	beqz	v0,47268c <handle_vendorid+0x21c>
  472544:	00000000 	nop
  472548:	8fc20058 	lw	v0,88(s8)
  47254c:	00000000 	nop
  472550:	1040004e 	beqz	v0,47268c <handle_vendorid+0x21c>
  472554:	00000000 	nop
			if (pvid->vid_len == len) {
  472558:	8fc20018 	lw	v0,24(s8)
  47255c:	00000000 	nop
  472560:	8c430014 	lw	v1,20(v0)
  472564:	8fc20058 	lw	v0,88(s8)
  472568:	00000000 	nop
  47256c:	1462001b 	bne	v1,v0,4725dc <handle_vendorid+0x16c>
  472570:	00000000 	nop
				if (memcmp(pvid->vid, vid, len)==0) {
  472574:	8fc20018 	lw	v0,24(s8)
  472578:	00000000 	nop
  47257c:	8c440010 	lw	a0,16(v0)
  472580:	8fc50054 	lw	a1,84(s8)
  472584:	8fc60058 	lw	a2,88(s8)
  472588:	8f9985c8 	lw	t9,-31288(gp)
  47258c:	00000000 	nop
  472590:	0320f809 	jalr	t9
  472594:	00000000 	nop
  472598:	8fdc0010 	lw	gp,16(s8)
  47259c:	1440003b 	bnez	v0,47268c <handle_vendorid+0x21c>
  4725a0:	00000000 	nop
					handle_known_vendorid(md, vid, len, pvid);
  4725a4:	8fc40050 	lw	a0,80(s8)
  4725a8:	8fc50054 	lw	a1,84(s8)
  4725ac:	8fc60058 	lw	a2,88(s8)
  4725b0:	8fc70018 	lw	a3,24(s8)
  4725b4:	8f998040 	lw	t9,-32704(gp)
  4725b8:	00000000 	nop
  4725bc:	27391e9c 	addiu	t9,t9,7836
  4725c0:	00000000 	nop
  4725c4:	0320f809 	jalr	t9
  4725c8:	00000000 	nop
  4725cc:	8fdc0010 	lw	gp,16(s8)
  4725d0:	00000000 	nop
					return;
  4725d4:	10000099 	b	47283c <handle_vendorid+0x3cc>
  4725d8:	00000000 	nop
				}
			}
			else if ((pvid->vid_len < len) && (pvid->flags & VID_SUBSTRING)) {
  4725dc:	8fc20018 	lw	v0,24(s8)
  4725e0:	00000000 	nop
  4725e4:	8c430014 	lw	v1,20(v0)
  4725e8:	8fc20058 	lw	v0,88(s8)
  4725ec:	00000000 	nop
  4725f0:	0062102b 	sltu	v0,v1,v0
  4725f4:	10400025 	beqz	v0,47268c <handle_vendorid+0x21c>
  4725f8:	00000000 	nop
  4725fc:	8fc20018 	lw	v0,24(s8)
  472600:	00000000 	nop
  472604:	94420004 	lhu	v0,4(v0)
  472608:	00000000 	nop
  47260c:	30420300 	andi	v0,v0,0x300
  472610:	3042ffff 	andi	v0,v0,0xffff
  472614:	1040001d 	beqz	v0,47268c <handle_vendorid+0x21c>
  472618:	00000000 	nop
				if (memcmp(pvid->vid, vid, pvid->vid_len)==0) {
  47261c:	8fc20018 	lw	v0,24(s8)
  472620:	00000000 	nop
  472624:	8c440010 	lw	a0,16(v0)
  472628:	8fc50054 	lw	a1,84(s8)
  47262c:	8fc20018 	lw	v0,24(s8)
  472630:	00000000 	nop
  472634:	8c460014 	lw	a2,20(v0)
  472638:	8f9985c8 	lw	t9,-31288(gp)
  47263c:	00000000 	nop
  472640:	0320f809 	jalr	t9
  472644:	00000000 	nop
  472648:	8fdc0010 	lw	gp,16(s8)
  47264c:	1440000f 	bnez	v0,47268c <handle_vendorid+0x21c>
  472650:	00000000 	nop
					handle_known_vendorid(md, vid, len, pvid);
  472654:	8fc40050 	lw	a0,80(s8)
  472658:	8fc50054 	lw	a1,84(s8)
  47265c:	8fc60058 	lw	a2,88(s8)
  472660:	8fc70018 	lw	a3,24(s8)
  472664:	8f998040 	lw	t9,-32704(gp)
  472668:	00000000 	nop
  47266c:	27391e9c 	addiu	t9,t9,7836
  472670:	00000000 	nop
  472674:	0320f809 	jalr	t9
  472678:	00000000 	nop
  47267c:	8fdc0010 	lw	gp,16(s8)
  472680:	00000000 	nop
					return;
  472684:	1000006d 	b	47283c <handle_vendorid+0x3cc>
  472688:	00000000 	nop
  47268c:	8fc20018 	lw	v0,24(s8)
  472690:	00000000 	nop
  472694:	24420018 	addiu	v0,v0,24
  472698:	afc20018 	sw	v0,24(s8)
  47269c:	1000ff92 	b	4724e8 <handle_vendorid+0x78>
  4726a0:	00000000 	nop
				}
			}
		}
	}

	/*
	 * Unknown VendorID. Log the beginning.
	 */
	{
		char log_vid[2*MAX_LOG_VID_LEN+1];
		size_t i;
		memset(log_vid, 0, sizeof(log_vid));
  4726a4:	27c40020 	addiu	a0,s8,32
  4726a8:	00002821 	move	a1,zero
  4726ac:	24060011 	li	a2,17
  4726b0:	8f998500 	lw	t9,-31488(gp)
  4726b4:	00000000 	nop
  4726b8:	0320f809 	jalr	t9
  4726bc:	00000000 	nop
  4726c0:	8fdc0010 	lw	gp,16(s8)
  4726c4:	00000000 	nop
		for (i=0; (i<len) && (i<MAX_LOG_VID_LEN); i++) {
  4726c8:	afc00038 	sw	zero,56(s8)
  4726cc:	8fc20038 	lw	v0,56(s8)
  4726d0:	8fc30058 	lw	v1,88(s8)
  4726d4:	00000000 	nop
  4726d8:	0043102b 	sltu	v0,v0,v1
  4726dc:	1040003a 	beqz	v0,4727c8 <handle_vendorid+0x358>
  4726e0:	00000000 	nop
  4726e4:	8fc20038 	lw	v0,56(s8)
  4726e8:	00000000 	nop
  4726ec:	2c420008 	sltiu	v0,v0,8
  4726f0:	14400003 	bnez	v0,472700 <handle_vendorid+0x290>
  4726f4:	00000000 	nop
  4726f8:	10000033 	b	4727c8 <handle_vendorid+0x358>
  4726fc:	00000000 	nop
			log_vid[2*i] = _hexdig[(vid[i] >> 4) & 0xF];
  472700:	8fc20038 	lw	v0,56(s8)
  472704:	00000000 	nop
  472708:	00021840 	sll	v1,v0,0x1
  47270c:	27c20020 	addiu	v0,s8,32
  472710:	00432021 	addu	a0,v0,v1
  472714:	8fc30054 	lw	v1,84(s8)
  472718:	8fc20038 	lw	v0,56(s8)
  47271c:	00000000 	nop
  472720:	00621021 	addu	v0,v1,v0
  472724:	80420000 	lb	v0,0(v0)
  472728:	00000000 	nop
  47272c:	00021103 	sra	v0,v0,0x4
  472730:	3042000f 	andi	v0,v0,0xf
  472734:	00021600 	sll	v0,v0,0x18
  472738:	00021603 	sra	v0,v0,0x18
  47273c:	8f81802c 	lw	at,-32724(gp)
  472740:	00000000 	nop
  472744:	24216228 	addiu	at,at,25128
  472748:	00221021 	addu	v0,at,v0
  47274c:	90420000 	lbu	v0,0(v0)
  472750:	00000000 	nop
  472754:	a0820000 	sb	v0,0(a0)
			log_vid[2*i+1] = _hexdig[vid[i] & 0xF];
  472758:	8fc20038 	lw	v0,56(s8)
  47275c:	00000000 	nop
  472760:	00021040 	sll	v0,v0,0x1
  472764:	24430001 	addiu	v1,v0,1
  472768:	27c20020 	addiu	v0,s8,32
  47276c:	00432021 	addu	a0,v0,v1
  472770:	8fc30054 	lw	v1,84(s8)
  472774:	8fc20038 	lw	v0,56(s8)
  472778:	00000000 	nop
  47277c:	00621021 	addu	v0,v1,v0
  472780:	90420000 	lbu	v0,0(v0)
  472784:	00000000 	nop
  472788:	3042000f 	andi	v0,v0,0xf
  47278c:	00021600 	sll	v0,v0,0x18
  472790:	00021603 	sra	v0,v0,0x18
  472794:	8f81802c 	lw	at,-32724(gp)
  472798:	00000000 	nop
  47279c:	24216228 	addiu	at,at,25128
  4727a0:	00221021 	addu	v0,at,v0
  4727a4:	90420000 	lbu	v0,0(v0)
  4727a8:	00000000 	nop
  4727ac:	a0820000 	sb	v0,0(a0)
  4727b0:	8fc20038 	lw	v0,56(s8)
  4727b4:	00000000 	nop
  4727b8:	24420001 	addiu	v0,v0,1
  4727bc:	afc20038 	sw	v0,56(s8)
  4727c0:	1000ffc2 	b	4726cc <handle_vendorid+0x25c>
  4727c4:	00000000 	nop
		}
		loglog(RC_LOG_SERIOUS, "ignoring Vendor ID payload [%s%s]",
  4727c8:	8fc20058 	lw	v0,88(s8)
  4727cc:	00000000 	nop
  4727d0:	2c420009 	sltiu	v0,v0,9
  4727d4:	14400008 	bnez	v0,4727f8 <handle_vendorid+0x388>
  4727d8:	00000000 	nop
  4727dc:	8f82802c 	lw	v0,-32724(gp)
  4727e0:	00000000 	nop
  4727e4:	244262b0 	addiu	v0,v0,25264
  4727e8:	00000000 	nop
  4727ec:	afc2003c 	sw	v0,60(s8)
  4727f0:	10000006 	b	47280c <handle_vendorid+0x39c>
  4727f4:	00000000 	nop
  4727f8:	8f82802c 	lw	v0,-32724(gp)
  4727fc:	00000000 	nop
  472800:	24426270 	addiu	v0,v0,25200
  472804:	00000000 	nop
  472808:	afc2003c 	sw	v0,60(s8)
  47280c:	24040003 	li	a0,3
  472810:	8f85802c 	lw	a1,-32724(gp)
  472814:	00000000 	nop
  472818:	24a562b4 	addiu	a1,a1,25268
  47281c:	27c60020 	addiu	a2,s8,32
  472820:	8fc7003c 	lw	a3,60(s8)
  472824:	8f998c48 	lw	t9,-29624(gp)
  472828:	00000000 	nop
  47282c:	0320f809 	jalr	t9
  472830:	00000000 	nop
  472834:	8fdc0010 	lw	gp,16(s8)
  472838:	00000000 	nop
			log_vid, (len>MAX_LOG_VID_LEN) ? "..." : "");
	}
}
  47283c:	03c0e821 	move	sp,s8
  472840:	8fbf0048 	lw	ra,72(sp)
  472844:	8fbe0044 	lw	s8,68(sp)
  472848:	27bd0050 	addiu	sp,sp,80
  47284c:	03e00008 	jr	ra
  472850:	00000000 	nop

00472854 <out_vendorid>:
  472854:	3c1c0fba 	lui	gp,0xfba
  472858:	279ca11c 	addiu	gp,gp,-24292
  47285c:	0399e021 	addu	gp,gp,t9
  472860:	27bdffc8 	addiu	sp,sp,-56
  472864:	afbc0018 	sw	gp,24(sp)
  472868:	afbf0030 	sw	ra,48(sp)
  47286c:	afbe002c 	sw	s8,44(sp)
  472870:	afbc0028 	sw	gp,40(sp)
  472874:	03a0f021 	move	s8,sp
  472878:	00801021 	move	v0,a0
  47287c:	afc5003c 	sw	a1,60(s8)
  472880:	afc60040 	sw	a2,64(s8)
  472884:	a3c20020 	sb	v0,32(s8)

/**
 * Add a vendor id payload to the msg
 */
bool out_vendorid (u_int8_t np, pb_stream *outs, unsigned int vid)
{
	struct vid_struct *pvid;

	if (!_vid_struct_init) {
  472888:	8f828018 	lw	v0,-32744(gp)
  47288c:	00000000 	nop
  472890:	24423f60 	addiu	v0,v0,16224
  472894:	8c420000 	lw	v0,0(v0)
  472898:	00000000 	nop
  47289c:	14400007 	bnez	v0,4728bc <out_vendorid+0x68>
  4728a0:	00000000 	nop
		init_vendorid();
  4728a4:	8f9988b4 	lw	t9,-30540(gp)
  4728a8:	00000000 	nop
  4728ac:	0320f809 	jalr	t9
  4728b0:	00000000 	nop
  4728b4:	8fdc0018 	lw	gp,24(s8)
  4728b8:	00000000 	nop
	}

	for (pvid = _vid_tab; (pvid->id) && (pvid->id!=vid); pvid++);
  4728bc:	8f828018 	lw	v0,-32744(gp)
  4728c0:	00000000 	nop
  4728c4:	24423b40 	addiu	v0,v0,15168
  4728c8:	00000000 	nop
  4728cc:	afc20024 	sw	v0,36(s8)
  4728d0:	8fc20024 	lw	v0,36(s8)
  4728d4:	00000000 	nop
  4728d8:	8c420000 	lw	v0,0(v0)
  4728dc:	00000000 	nop
  4728e0:	10400010 	beqz	v0,472924 <out_vendorid+0xd0>
  4728e4:	00000000 	nop
  4728e8:	8fc20024 	lw	v0,36(s8)
  4728ec:	00000000 	nop
  4728f0:	8c430000 	lw	v1,0(v0)
  4728f4:	8fc20040 	lw	v0,64(s8)
  4728f8:	00000000 	nop
  4728fc:	14620003 	bne	v1,v0,47290c <out_vendorid+0xb8>
  472900:	00000000 	nop
  472904:	10000007 	b	472924 <out_vendorid+0xd0>
  472908:	00000000 	nop
  47290c:	8fc20024 	lw	v0,36(s8)
  472910:	00000000 	nop
  472914:	24420018 	addiu	v0,v0,24
  472918:	afc20024 	sw	v0,36(s8)
  47291c:	1000ffec 	b	4728d0 <out_vendorid+0x7c>
  472920:	00000000 	nop

	if (pvid->id != vid) return STF_INTERNAL_ERROR; /* not found */
  472924:	8fc20024 	lw	v0,36(s8)
  472928:	00000000 	nop
  47292c:	8c430000 	lw	v1,0(v0)
  472930:	8fc20040 	lw	v0,64(s8)
  472934:	00000000 	nop
  472938:	10620004 	beq	v1,v0,47294c <out_vendorid+0xf8>
  47293c:	00000000 	nop
  472940:	24020003 	li	v0,3
  472944:	10000040 	b	472a48 <out_vendorid+0x1f4>
  472948:	00000000 	nop
	if (!pvid->vid) return STF_INTERNAL_ERROR; /* not initialized */
  47294c:	8fc20024 	lw	v0,36(s8)
  472950:	00000000 	nop
  472954:	8c420010 	lw	v0,16(v0)
  472958:	00000000 	nop
  47295c:	14400004 	bnez	v0,472970 <out_vendorid+0x11c>
  472960:	00000000 	nop
  472964:	24020003 	li	v0,3
  472968:	10000037 	b	472a48 <out_vendorid+0x1f4>
  47296c:	00000000 	nop

	DBG(DBG_EMITTING,
  472970:	8f8284f8 	lw	v0,-31496(gp)
  472974:	00000000 	nop
  472978:	8c420000 	lw	v0,0(v0)
  47297c:	00000000 	nop
  472980:	30420008 	andi	v0,v0,0x8
  472984:	1040000d 	beqz	v0,4729bc <out_vendorid+0x168>
  472988:	00000000 	nop
  47298c:	8f84802c 	lw	a0,-32724(gp)
  472990:	00000000 	nop
  472994:	248462d8 	addiu	a0,a0,25304
  472998:	8fc20024 	lw	v0,36(s8)
  47299c:	00000000 	nop
  4729a0:	8c45000c 	lw	a1,12(v0)
  4729a4:	8f9983b8 	lw	t9,-31816(gp)
  4729a8:	00000000 	nop
  4729ac:	0320f809 	jalr	t9
  4729b0:	00000000 	nop
  4729b4:	8fdc0018 	lw	gp,24(s8)
  4729b8:	00000000 	nop
		DBG_log("out_vendorid(): sending [%s]", pvid->descr);
	);

	if (!out_modify_previous_np(ISAKMP_NEXT_VID, outs))
  4729bc:	2404000d 	li	a0,13
  4729c0:	8fc5003c 	lw	a1,60(s8)
  4729c4:	8f998808 	lw	t9,-30712(gp)
  4729c8:	00000000 	nop
  4729cc:	0320f809 	jalr	t9
  4729d0:	00000000 	nop
  4729d4:	8fdc0018 	lw	gp,24(s8)
  4729d8:	14400004 	bnez	v0,4729ec <out_vendorid+0x198>
  4729dc:	00000000 	nop
		return FALSE;
  4729e0:	00001021 	move	v0,zero
  4729e4:	10000018 	b	472a48 <out_vendorid+0x1f4>
  4729e8:	00000000 	nop

	return out_generic_raw(np, &isakmp_vendor_id_desc, outs,
  4729ec:	93c30020 	lbu	v1,32(s8)
  4729f0:	8fc20024 	lw	v0,36(s8)
  4729f4:	00000000 	nop
  4729f8:	8c420014 	lw	v0,20(v0)
  4729fc:	00000000 	nop
  472a00:	afa20010 	sw	v0,16(sp)
  472a04:	8f82802c 	lw	v0,-32724(gp)
  472a08:	00000000 	nop
  472a0c:	244262f8 	addiu	v0,v0,25336
  472a10:	00000000 	nop
  472a14:	afa20014 	sw	v0,20(sp)
  472a18:	00602021 	move	a0,v1
  472a1c:	8f858b0c 	lw	a1,-29940(gp)
  472a20:	8fc6003c 	lw	a2,60(s8)
  472a24:	8fc20024 	lw	v0,36(s8)
  472a28:	00000000 	nop
  472a2c:	8c470010 	lw	a3,16(v0)
  472a30:	8f99841c 	lw	t9,-31716(gp)
  472a34:	00000000 	nop
  472a38:	0320f809 	jalr	t9
  472a3c:	00000000 	nop
  472a40:	8fdc0018 	lw	gp,24(s8)
  472a44:	00000000 	nop
			       pvid->vid, pvid->vid_len, "V_ID");
}
  472a48:	03c0e821 	move	sp,s8
  472a4c:	8fbf0030 	lw	ra,48(sp)
  472a50:	8fbe002c 	lw	s8,44(sp)
  472a54:	27bd0038 	addiu	sp,sp,56
  472a58:	03e00008 	jr	ra
  472a5c:	00000000 	nop

00472a60 <init_nat_traversal>:
  472a60:	3c1c0fba 	lui	gp,0xfba
  472a64:	279c9f10 	addiu	gp,gp,-24816
  472a68:	0399e021 	addu	gp,gp,t9
  472a6c:	27bdffc0 	addiu	sp,sp,-64
  472a70:	afbc0018 	sw	gp,24(sp)
  472a74:	afbf0038 	sw	ra,56(sp)
  472a78:	afbe0034 	sw	s8,52(sp)
  472a7c:	afbc0030 	sw	gp,48(sp)
  472a80:	03a0f021 	move	s8,sp
  472a84:	afc40040 	sw	a0,64(s8)
  472a88:	afc50044 	sw	a1,68(s8)
  472a8c:	afc60048 	sw	a2,72(s8)
  472a90:	afc7004c 	sw	a3,76(s8)

void init_nat_traversal (bool activate, unsigned int keep_alive_period,
	bool fka, bool spf)
{
	nat_traversal_enabled = activate;
  472a94:	8fc20040 	lw	v0,64(s8)
  472a98:	8f81837c 	lw	at,-31876(gp)
  472a9c:	00000000 	nop
  472aa0:	ac220000 	sw	v0,0(at)
#ifdef NAT_T_SUPPORT_LAST_DRAFTS
	nat_traversal_support_port_floating = activate ? spf : FALSE;
  472aa4:	8fc20040 	lw	v0,64(s8)
  472aa8:	00000000 	nop
  472aac:	10400006 	beqz	v0,472ac8 <init_nat_traversal+0x68>
  472ab0:	00000000 	nop
  472ab4:	8fc2004c 	lw	v0,76(s8)
  472ab8:	00000000 	nop
  472abc:	afc20020 	sw	v0,32(s8)
  472ac0:	10000002 	b	472acc <init_nat_traversal+0x6c>
  472ac4:	00000000 	nop
  472ac8:	afc00020 	sw	zero,32(s8)
  472acc:	8fc20020 	lw	v0,32(s8)
  472ad0:	8f8182b8 	lw	at,-32072(gp)
  472ad4:	00000000 	nop
  472ad8:	ac220000 	sw	v0,0(at)
#endif
	_force_ka = fka;
  472adc:	8fc20048 	lw	v0,72(s8)
  472ae0:	8f818018 	lw	at,-32744(gp)
  472ae4:	00000000 	nop
  472ae8:	24213f80 	addiu	at,at,16256
  472aec:	ac220000 	sw	v0,0(at)
	_kap = keep_alive_period ? keep_alive_period : DEFAULT_KEEP_ALIVE_PERIOD;
  472af0:	8fc20044 	lw	v0,68(s8)
  472af4:	00000000 	nop
  472af8:	afc20024 	sw	v0,36(s8)
  472afc:	8fc20044 	lw	v0,68(s8)
  472b00:	00000000 	nop
  472b04:	14400003 	bnez	v0,472b14 <init_nat_traversal+0xb4>
  472b08:	00000000 	nop
  472b0c:	24020014 	li	v0,20
  472b10:	afc20024 	sw	v0,36(s8)
  472b14:	8fc20024 	lw	v0,36(s8)
  472b18:	8f818018 	lw	at,-32744(gp)
  472b1c:	00000000 	nop
  472b20:	24213f78 	addiu	at,at,16248
  472b24:	ac220000 	sw	v0,0(at)
	plog("  including NAT-Traversal patch (Version %s)%s%s%s",
  472b28:	8fc20040 	lw	v0,64(s8)
  472b2c:	00000000 	nop
  472b30:	10400008 	beqz	v0,472b54 <init_nat_traversal+0xf4>
  472b34:	00000000 	nop
  472b38:	8f82802c 	lw	v0,-32724(gp)
  472b3c:	00000000 	nop
  472b40:	24426368 	addiu	v0,v0,25448
  472b44:	00000000 	nop
  472b48:	afc20028 	sw	v0,40(s8)
  472b4c:	10000006 	b	472b68 <init_nat_traversal+0x108>
  472b50:	00000000 	nop
  472b54:	8f82802c 	lw	v0,-32724(gp)
  472b58:	00000000 	nop
  472b5c:	2442636c 	addiu	v0,v0,25452
  472b60:	00000000 	nop
  472b64:	afc20028 	sw	v0,40(s8)
  472b68:	8fc20040 	lw	v0,64(s8)
  472b6c:	8fc30048 	lw	v1,72(s8)
  472b70:	00000000 	nop
  472b74:	00431024 	and	v0,v0,v1
  472b78:	10400008 	beqz	v0,472b9c <init_nat_traversal+0x13c>
  472b7c:	00000000 	nop
  472b80:	8f82802c 	lw	v0,-32724(gp)
  472b84:	00000000 	nop
  472b88:	24426378 	addiu	v0,v0,25464
  472b8c:	00000000 	nop
  472b90:	afc2002c 	sw	v0,44(s8)
  472b94:	10000006 	b	472bb0 <init_nat_traversal+0x150>
  472b98:	00000000 	nop
  472b9c:	8f82802c 	lw	v0,-32724(gp)
  472ba0:	00000000 	nop
  472ba4:	24426368 	addiu	v0,v0,25448
  472ba8:	00000000 	nop
  472bac:	afc2002c 	sw	v0,44(s8)
  472bb0:	8fc2004c 	lw	v0,76(s8)
  472bb4:	00000000 	nop
  472bb8:	1440000f 	bnez	v0,472bf8 <init_nat_traversal+0x198>
  472bbc:	00000000 	nop
  472bc0:	8fc20040 	lw	v0,64(s8)
  472bc4:	00000000 	nop
  472bc8:	30420001 	andi	v0,v0,0x1
  472bcc:	14400003 	bnez	v0,472bdc <init_nat_traversal+0x17c>
  472bd0:	00000000 	nop
  472bd4:	10000008 	b	472bf8 <init_nat_traversal+0x198>
  472bd8:	00000000 	nop
  472bdc:	8f82802c 	lw	v0,-32724(gp)
  472be0:	00000000 	nop
  472be4:	2442638c 	addiu	v0,v0,25484
  472be8:	00000000 	nop
  472bec:	afa20010 	sw	v0,16(sp)
  472bf0:	10000006 	b	472c0c <init_nat_traversal+0x1ac>
  472bf4:	00000000 	nop
  472bf8:	8f82802c 	lw	v0,-32724(gp)
  472bfc:	00000000 	nop
  472c00:	24426368 	addiu	v0,v0,25448
  472c04:	00000000 	nop
  472c08:	afa20010 	sw	v0,16(sp)
  472c0c:	8f84802c 	lw	a0,-32724(gp)
  472c10:	00000000 	nop
  472c14:	248463a8 	addiu	a0,a0,25512
  472c18:	8f858018 	lw	a1,-32744(gp)
  472c1c:	00000000 	nop
  472c20:	24a53f84 	addiu	a1,a1,16260
  472c24:	8ca50000 	lw	a1,0(a1)
  472c28:	8fc60028 	lw	a2,40(s8)
  472c2c:	8fc7002c 	lw	a3,44(s8)
  472c30:	8f998abc 	lw	t9,-30020(gp)
  472c34:	00000000 	nop
  472c38:	0320f809 	jalr	t9
  472c3c:	00000000 	nop
  472c40:	8fdc0018 	lw	gp,24(s8)
  472c44:	00000000 	nop
		natt_version, activate ? "" : " [disabled]",
		activate & fka ? " [Force KeepAlive]" : "",
		activate & !spf ? " [Port Floating disabled]" : "");
}
  472c48:	03c0e821 	move	sp,s8
  472c4c:	8fbf0038 	lw	ra,56(sp)
  472c50:	8fbe0034 	lw	s8,52(sp)
  472c54:	27bd0040 	addiu	sp,sp,64
  472c58:	03e00008 	jr	ra
  472c5c:	00000000 	nop

00472c60 <disable_nat_traversal>:
  472c60:	3c1c0fba 	lui	gp,0xfba
  472c64:	279c9d10 	addiu	gp,gp,-25328
  472c68:	0399e021 	addu	gp,gp,t9
  472c6c:	27bdfff0 	addiu	sp,sp,-16
  472c70:	afbc0000 	sw	gp,0(sp)
  472c74:	afbe000c 	sw	s8,12(sp)
  472c78:	afbc0008 	sw	gp,8(sp)
  472c7c:	03a0f021 	move	s8,sp

static void disable_nat_traversal (void)
{
	nat_traversal_enabled = FALSE; 
  472c80:	8f81837c 	lw	at,-31876(gp)
  472c84:	00000000 	nop
  472c88:	ac200000 	sw	zero,0(at)
	nat_traversal_support_port_floating = FALSE;
  472c8c:	8f8182b8 	lw	at,-32072(gp)
  472c90:	00000000 	nop
  472c94:	ac200000 	sw	zero,0(at)
}
  472c98:	03c0e821 	move	sp,s8
  472c9c:	8fbe000c 	lw	s8,12(sp)
  472ca0:	27bd0010 	addiu	sp,sp,16
  472ca4:	03e00008 	jr	ra
  472ca8:	00000000 	nop

00472cac <_natd_hash>:
  472cac:	3c1c0fba 	lui	gp,0xfba
  472cb0:	279c9cc4 	addiu	gp,gp,-25404
  472cb4:	0399e021 	addu	gp,gp,t9
  472cb8:	27bdfef0 	addiu	sp,sp,-272
  472cbc:	afbc0010 	sw	gp,16(sp)
  472cc0:	afbf0108 	sw	ra,264(sp)
  472cc4:	afbe0104 	sw	s8,260(sp)
  472cc8:	afbc0100 	sw	gp,256(sp)
  472ccc:	03a0f021 	move	s8,sp
  472cd0:	afc40110 	sw	a0,272(s8)
  472cd4:	afc50114 	sw	a1,276(s8)
  472cd8:	afc60118 	sw	a2,280(s8)
  472cdc:	afc7011c 	sw	a3,284(s8)
  472ce0:	8fc20124 	lw	v0,292(s8)
  472ce4:	00000000 	nop
  472ce8:	a7c20018 	sh	v0,24(s8)

static void _natd_hash(const struct hash_desc *hasher, char *hash,
	u_int8_t *icookie, u_int8_t *rcookie,
	const ip_address *ip, u_int16_t port)
{
	union hash_ctx ctx;

	if (is_zero_cookie(icookie))
  472cec:	8fc40118 	lw	a0,280(s8)
  472cf0:	24050008 	li	a1,8
  472cf4:	8f99863c 	lw	t9,-31172(gp)
  472cf8:	00000000 	nop
  472cfc:	0320f809 	jalr	t9
  472d00:	00000000 	nop
  472d04:	8fdc0010 	lw	gp,16(s8)
  472d08:	1040000a 	beqz	v0,472d34 <_natd_hash+0x88>
  472d0c:	00000000 	nop
		DBG_log("_natd_hash: Warning, icookie is zero !!");
  472d10:	8f84802c 	lw	a0,-32724(gp)
  472d14:	00000000 	nop
  472d18:	248463dc 	addiu	a0,a0,25564
  472d1c:	8f9983b8 	lw	t9,-31816(gp)
  472d20:	00000000 	nop
  472d24:	0320f809 	jalr	t9
  472d28:	00000000 	nop
  472d2c:	8fdc0010 	lw	gp,16(s8)
  472d30:	00000000 	nop
	if (is_zero_cookie(rcookie))
  472d34:	8fc4011c 	lw	a0,284(s8)
  472d38:	24050008 	li	a1,8
  472d3c:	8f99863c 	lw	t9,-31172(gp)
  472d40:	00000000 	nop
  472d44:	0320f809 	jalr	t9
  472d48:	00000000 	nop
  472d4c:	8fdc0010 	lw	gp,16(s8)
  472d50:	1040000a 	beqz	v0,472d7c <_natd_hash+0xd0>
  472d54:	00000000 	nop
		DBG_log("_natd_hash: Warning, rcookie is zero !!");
  472d58:	8f84802c 	lw	a0,-32724(gp)
  472d5c:	00000000 	nop
  472d60:	24846404 	addiu	a0,a0,25604
  472d64:	8f9983b8 	lw	t9,-31816(gp)
  472d68:	00000000 	nop
  472d6c:	0320f809 	jalr	t9
  472d70:	00000000 	nop
  472d74:	8fdc0010 	lw	gp,16(s8)
  472d78:	00000000 	nop

	/**
	 * draft-ietf-ipsec-nat-t-ike-01.txt
	 *
	 *   HASH = HASH(CKY-I | CKY-R | IP | Port)
	 *
	 * All values in network order
	 */
	hasher->hash_init(&ctx);
  472d7c:	8fc20110 	lw	v0,272(s8)
  472d80:	00000000 	nop
  472d84:	8c420010 	lw	v0,16(v0)
  472d88:	27c40020 	addiu	a0,s8,32
  472d8c:	0040c821 	move	t9,v0
  472d90:	0320f809 	jalr	t9
  472d94:	00000000 	nop
  472d98:	8fdc0010 	lw	gp,16(s8)
  472d9c:	00000000 	nop
	hasher->hash_update(&ctx, icookie, COOKIE_SIZE);
  472da0:	8fc20110 	lw	v0,272(s8)
  472da4:	00000000 	nop
  472da8:	8c420014 	lw	v0,20(v0)
  472dac:	27c40020 	addiu	a0,s8,32
  472db0:	8fc50118 	lw	a1,280(s8)
  472db4:	24060008 	li	a2,8
  472db8:	0040c821 	move	t9,v0
  472dbc:	0320f809 	jalr	t9
  472dc0:	00000000 	nop
  472dc4:	8fdc0010 	lw	gp,16(s8)
  472dc8:	00000000 	nop
	hasher->hash_update(&ctx, rcookie, COOKIE_SIZE);
  472dcc:	8fc20110 	lw	v0,272(s8)
  472dd0:	00000000 	nop
  472dd4:	8c420014 	lw	v0,20(v0)
  472dd8:	27c40020 	addiu	a0,s8,32
  472ddc:	8fc5011c 	lw	a1,284(s8)
  472de0:	24060008 	li	a2,8
  472de4:	0040c821 	move	t9,v0
  472de8:	0320f809 	jalr	t9
  472dec:	00000000 	nop
  472df0:	8fdc0010 	lw	gp,16(s8)
  472df4:	00000000 	nop
	switch (addrtypeof(ip)) {
  472df8:	8fc40120 	lw	a0,288(s8)
  472dfc:	8f9985d4 	lw	t9,-31276(gp)
  472e00:	00000000 	nop
  472e04:	0320f809 	jalr	t9
  472e08:	00000000 	nop
  472e0c:	8fdc0010 	lw	gp,16(s8)
  472e10:	afc200f8 	sw	v0,248(s8)
  472e14:	24020002 	li	v0,2
  472e18:	8fc300f8 	lw	v1,248(s8)
  472e1c:	00000000 	nop
  472e20:	10620008 	beq	v1,v0,472e44 <_natd_hash+0x198>
  472e24:	00000000 	nop
  472e28:	2402000a 	li	v0,10
  472e2c:	8fc300f8 	lw	v1,248(s8)
  472e30:	00000000 	nop
  472e34:	10620013 	beq	v1,v0,472e84 <_natd_hash+0x1d8>
  472e38:	00000000 	nop
  472e3c:	1000001f 	b	472ebc <_natd_hash+0x210>
  472e40:	00000000 	nop
		case AF_INET:
			hasher->hash_update(&ctx,
  472e44:	8fc20120 	lw	v0,288(s8)
  472e48:	00000000 	nop
  472e4c:	24430004 	addiu	v1,v0,4
  472e50:	8fc20110 	lw	v0,272(s8)
  472e54:	00000000 	nop
  472e58:	8c420014 	lw	v0,20(v0)
  472e5c:	27c40020 	addiu	a0,s8,32
  472e60:	00602821 	move	a1,v1
  472e64:	24060004 	li	a2,4
  472e68:	0040c821 	move	t9,v0
  472e6c:	0320f809 	jalr	t9
  472e70:	00000000 	nop
  472e74:	8fdc0010 	lw	gp,16(s8)
  472e78:	00000000 	nop
				(const u_char *)&ip->u.v4.sin_addr.s_addr,
				sizeof(ip->u.v4.sin_addr.s_addr));
			break;
  472e7c:	1000000f 	b	472ebc <_natd_hash+0x210>
  472e80:	00000000 	nop
		case AF_INET6:
			hasher->hash_update(&ctx,
  472e84:	8fc20120 	lw	v0,288(s8)
  472e88:	00000000 	nop
  472e8c:	24430008 	addiu	v1,v0,8
  472e90:	8fc20110 	lw	v0,272(s8)
  472e94:	00000000 	nop
  472e98:	8c420014 	lw	v0,20(v0)
  472e9c:	27c40020 	addiu	a0,s8,32
  472ea0:	00602821 	move	a1,v1
  472ea4:	24060010 	li	a2,16
  472ea8:	0040c821 	move	t9,v0
  472eac:	0320f809 	jalr	t9
  472eb0:	00000000 	nop
  472eb4:	8fdc0010 	lw	gp,16(s8)
  472eb8:	00000000 	nop
				(const u_char *)&ip->u.v6.sin6_addr.s6_addr,
				sizeof(ip->u.v6.sin6_addr.s6_addr));
			break;
	}
	hasher->hash_update(&ctx, (const u_char *)&port, sizeof(u_int16_t));
  472ebc:	8fc20110 	lw	v0,272(s8)
  472ec0:	00000000 	nop
  472ec4:	8c420014 	lw	v0,20(v0)
  472ec8:	27c40020 	addiu	a0,s8,32
  472ecc:	27c50018 	addiu	a1,s8,24
  472ed0:	24060002 	li	a2,2
  472ed4:	0040c821 	move	t9,v0
  472ed8:	0320f809 	jalr	t9
  472edc:	00000000 	nop
  472ee0:	8fdc0010 	lw	gp,16(s8)
  472ee4:	00000000 	nop
	hasher->hash_final(hash, &ctx);
  472ee8:	8fc20110 	lw	v0,272(s8)
  472eec:	00000000 	nop
  472ef0:	8c420018 	lw	v0,24(v0)
  472ef4:	8fc40114 	lw	a0,276(s8)
  472ef8:	27c50020 	addiu	a1,s8,32
  472efc:	0040c821 	move	t9,v0
  472f00:	0320f809 	jalr	t9
  472f04:	00000000 	nop
  472f08:	8fdc0010 	lw	gp,16(s8)
  472f0c:	00000000 	nop
#ifdef NAT_D_DEBUG
	DBG(DBG_NATT,
  472f10:	8f8284f8 	lw	v0,-31496(gp)
  472f14:	00000000 	nop
  472f18:	8c420000 	lw	v0,0(v0)
  472f1c:	00000000 	nop
  472f20:	30420080 	andi	v0,v0,0x80
  472f24:	10400054 	beqz	v0,473078 <_natd_hash+0x3cc>
  472f28:	00000000 	nop
  472f2c:	8f84802c 	lw	a0,-32724(gp)
  472f30:	00000000 	nop
  472f34:	2484642c 	addiu	a0,a0,25644
  472f38:	8fc50110 	lw	a1,272(s8)
  472f3c:	8fc20110 	lw	v0,272(s8)
  472f40:	00000000 	nop
  472f44:	8c46000c 	lw	a2,12(v0)
  472f48:	8f9983b8 	lw	t9,-31816(gp)
  472f4c:	00000000 	nop
  472f50:	0320f809 	jalr	t9
  472f54:	00000000 	nop
  472f58:	8fdc0010 	lw	gp,16(s8)
  472f5c:	00000000 	nop
  472f60:	8f84802c 	lw	a0,-32724(gp)
  472f64:	00000000 	nop
  472f68:	24846448 	addiu	a0,a0,25672
  472f6c:	8fc50118 	lw	a1,280(s8)
  472f70:	24060008 	li	a2,8
  472f74:	8f9984ec 	lw	t9,-31508(gp)
  472f78:	00000000 	nop
  472f7c:	0320f809 	jalr	t9
  472f80:	00000000 	nop
  472f84:	8fdc0010 	lw	gp,16(s8)
  472f88:	00000000 	nop
  472f8c:	8f84802c 	lw	a0,-32724(gp)
  472f90:	00000000 	nop
  472f94:	24846460 	addiu	a0,a0,25696
  472f98:	8fc5011c 	lw	a1,284(s8)
  472f9c:	24060008 	li	a2,8
  472fa0:	8f9984ec 	lw	t9,-31508(gp)
  472fa4:	00000000 	nop
  472fa8:	0320f809 	jalr	t9
  472fac:	00000000 	nop
  472fb0:	8fdc0010 	lw	gp,16(s8)
  472fb4:	8fc40120 	lw	a0,288(s8)
  472fb8:	8f9985d4 	lw	t9,-31276(gp)
  472fbc:	00000000 	nop
  472fc0:	0320f809 	jalr	t9
  472fc4:	00000000 	nop
  472fc8:	8fdc0010 	lw	gp,16(s8)
  472fcc:	00401821 	move	v1,v0
  472fd0:	24020002 	li	v0,2
  472fd4:	10620003 	beq	v1,v0,472fe4 <_natd_hash+0x338>
  472fd8:	00000000 	nop
  472fdc:	1000000e 	b	473018 <_natd_hash+0x36c>
  472fe0:	00000000 	nop
  472fe4:	8fc20120 	lw	v0,288(s8)
  472fe8:	00000000 	nop
  472fec:	24420004 	addiu	v0,v0,4
  472ff0:	8f84802c 	lw	a0,-32724(gp)
  472ff4:	00000000 	nop
  472ff8:	24846478 	addiu	a0,a0,25720
  472ffc:	00402821 	move	a1,v0
  473000:	24060004 	li	a2,4
  473004:	8f9984ec 	lw	t9,-31508(gp)
  473008:	00000000 	nop
  47300c:	0320f809 	jalr	t9
  473010:	00000000 	nop
  473014:	8fdc0010 	lw	gp,16(s8)
  473018:	97c20018 	lhu	v0,24(s8)
  47301c:	8f84802c 	lw	a0,-32724(gp)
  473020:	00000000 	nop
  473024:	24846488 	addiu	a0,a0,25736
  473028:	00402821 	move	a1,v0
  47302c:	8f9983b8 	lw	t9,-31816(gp)
  473030:	00000000 	nop
  473034:	0320f809 	jalr	t9
  473038:	00000000 	nop
  47303c:	8fdc0010 	lw	gp,16(s8)
  473040:	00000000 	nop
  473044:	8f84802c 	lw	a0,-32724(gp)
  473048:	00000000 	nop
  47304c:	2484649c 	addiu	a0,a0,25756
  473050:	8fc50114 	lw	a1,276(s8)
  473054:	8fc20110 	lw	v0,272(s8)
  473058:	00000000 	nop
  47305c:	8c46000c 	lw	a2,12(v0)
  473060:	8f9984ec 	lw	t9,-31508(gp)
  473064:	00000000 	nop
  473068:	0320f809 	jalr	t9
  47306c:	00000000 	nop
  473070:	8fdc0010 	lw	gp,16(s8)
  473074:	00000000 	nop
		DBG_log("_natd_hash: hasher=%p(%d)", hasher, (int) hasher->hash_digest_len);
		DBG_dump("_natd_hash: icookie=", icookie, COOKIE_SIZE);
		DBG_dump("_natd_hash: rcookie=", rcookie, COOKIE_SIZE);
		switch (addrtypeof(ip)) {
			case AF_INET:
				DBG_dump("_natd_hash: ip=", &ip->u.v4.sin_addr.s_addr,
					sizeof(ip->u.v4.sin_addr.s_addr));
				break;
		}
		DBG_log("_natd_hash: port=%d", port);
		DBG_dump("_natd_hash: hash=", hash, hasher->hash_digest_len);
	);
#endif
}
  473078:	03c0e821 	move	sp,s8
  47307c:	8fbf0108 	lw	ra,264(sp)
  473080:	8fbe0104 	lw	s8,260(sp)
  473084:	27bd0110 	addiu	sp,sp,272
  473088:	03e00008 	jr	ra
  47308c:	00000000 	nop

00473090 <nat_traversal_add_vid>:
  473090:	3c1c0fba 	lui	gp,0xfba
  473094:	279c98e0 	addiu	gp,gp,-26400
  473098:	0399e021 	addu	gp,gp,t9
  47309c:	27bdffd0 	addiu	sp,sp,-48
  4730a0:	afbc0010 	sw	gp,16(sp)
  4730a4:	afbf0028 	sw	ra,40(sp)
  4730a8:	afbe0024 	sw	s8,36(sp)
  4730ac:	afbc0020 	sw	gp,32(sp)
  4730b0:	03a0f021 	move	s8,sp
  4730b4:	00801021 	move	v0,a0
  4730b8:	afc50034 	sw	a1,52(s8)
  4730bc:	a3c20018 	sb	v0,24(s8)

/**
 * Add NAT-Traversal VIDs (supported ones)
 *
 * Used when we're Initiator
 */
bool nat_traversal_add_vid(u_int8_t np, pb_stream *outs)
{
	bool r = TRUE;
  4730c0:	24020001 	li	v0,1
  4730c4:	afc2001c 	sw	v0,28(s8)
	if (nat_traversal_support_port_floating) {
  4730c8:	8f8282b8 	lw	v0,-32072(gp)
  4730cc:	00000000 	nop
  4730d0:	8c420000 	lw	v0,0(v0)
  4730d4:	00000000 	nop
  4730d8:	1040001f 	beqz	v0,473158 <nat_traversal_add_vid+0xc8>
  4730dc:	00000000 	nop
#if 0
		if (r) r = out_vendorid(np, outs, VID_NATT_RFC);
#endif
		if (r) r = out_vendorid(np, outs, VID_NATT_IETF_03);
  4730e0:	8fc2001c 	lw	v0,28(s8)
  4730e4:	00000000 	nop
  4730e8:	1040000c 	beqz	v0,47311c <nat_traversal_add_vid+0x8c>
  4730ec:	00000000 	nop
  4730f0:	93c20018 	lbu	v0,24(s8)
  4730f4:	00000000 	nop
  4730f8:	00402021 	move	a0,v0
  4730fc:	8fc50034 	lw	a1,52(s8)
  473100:	2406006c 	li	a2,108
  473104:	8f998474 	lw	t9,-31628(gp)
  473108:	00000000 	nop
  47310c:	0320f809 	jalr	t9
  473110:	00000000 	nop
  473114:	8fdc0010 	lw	gp,16(s8)
  473118:	afc2001c 	sw	v0,28(s8)
		if (r) r = out_vendorid(np, outs, VID_NATT_IETF_02);
  47311c:	8fc2001c 	lw	v0,28(s8)
  473120:	00000000 	nop
  473124:	1040000c 	beqz	v0,473158 <nat_traversal_add_vid+0xc8>
  473128:	00000000 	nop
  47312c:	93c20018 	lbu	v0,24(s8)
  473130:	00000000 	nop
  473134:	00402021 	move	a0,v0
  473138:	8fc50034 	lw	a1,52(s8)
  47313c:	2406006b 	li	a2,107
  473140:	8f998474 	lw	t9,-31628(gp)
  473144:	00000000 	nop
  473148:	0320f809 	jalr	t9
  47314c:	00000000 	nop
  473150:	8fdc0010 	lw	gp,16(s8)
  473154:	afc2001c 	sw	v0,28(s8)
	}
	if (r) r = out_vendorid(np, outs, VID_NATT_IETF_00);
  473158:	8fc2001c 	lw	v0,28(s8)
  47315c:	00000000 	nop
  473160:	1040000c 	beqz	v0,473194 <nat_traversal_add_vid+0x104>
  473164:	00000000 	nop
  473168:	93c20018 	lbu	v0,24(s8)
  47316c:	00000000 	nop
  473170:	00402021 	move	a0,v0
  473174:	8fc50034 	lw	a1,52(s8)
  473178:	24060069 	li	a2,105
  47317c:	8f998474 	lw	t9,-31628(gp)
  473180:	00000000 	nop
  473184:	0320f809 	jalr	t9
  473188:	00000000 	nop
  47318c:	8fdc0010 	lw	gp,16(s8)
  473190:	afc2001c 	sw	v0,28(s8)
	return r;
  473194:	8fc2001c 	lw	v0,28(s8)
  473198:	00000000 	nop
}
  47319c:	03c0e821 	move	sp,s8
  4731a0:	8fbf0028 	lw	ra,40(sp)
  4731a4:	8fbe0024 	lw	s8,36(sp)
  4731a8:	27bd0030 	addiu	sp,sp,48
  4731ac:	03e00008 	jr	ra
  4731b0:	00000000 	nop

004731b4 <nat_traversal_vid_to_method>:
  4731b4:	3c1c0fba 	lui	gp,0xfba
  4731b8:	279c97bc 	addiu	gp,gp,-26692
  4731bc:	0399e021 	addu	gp,gp,t9
  4731c0:	27bdffe8 	addiu	sp,sp,-24
  4731c4:	afbc0000 	sw	gp,0(sp)
  4731c8:	afbe0014 	sw	s8,20(sp)
  4731cc:	afbc0010 	sw	gp,16(sp)
  4731d0:	03a0f021 	move	s8,sp
  4731d4:	00801021 	move	v0,a0
  4731d8:	a7c20008 	sh	v0,8(s8)

u_int32_t nat_traversal_vid_to_method(unsigned short nat_t_vid)
{
	switch (nat_t_vid) {
  4731dc:	97c20008 	lhu	v0,8(s8)
  4731e0:	00000000 	nop
  4731e4:	afc2000c 	sw	v0,12(s8)
  4731e8:	8fc3000c 	lw	v1,12(s8)
  4731ec:	00000000 	nop
  4731f0:	2862006d 	slti	v0,v1,109
  4731f4:	1040000d 	beqz	v0,47322c <nat_traversal_vid_to_method+0x78>
  4731f8:	00000000 	nop
  4731fc:	8fc3000c 	lw	v1,12(s8)
  473200:	00000000 	nop
  473204:	2862006a 	slti	v0,v1,106
  473208:	10400012 	beqz	v0,473254 <nat_traversal_vid_to_method+0xa0>
  47320c:	00000000 	nop
  473210:	24020069 	li	v0,105
  473214:	8fc3000c 	lw	v1,12(s8)
  473218:	00000000 	nop
  47321c:	1062000a 	beq	v1,v0,473248 <nat_traversal_vid_to_method+0x94>
  473220:	00000000 	nop
  473224:	10000011 	b	47326c <nat_traversal_vid_to_method+0xb8>
  473228:	00000000 	nop
  47322c:	2402006d 	li	v0,109
  473230:	8fc3000c 	lw	v1,12(s8)
  473234:	00000000 	nop
  473238:	10620009 	beq	v1,v0,473260 <nat_traversal_vid_to_method+0xac>
  47323c:	00000000 	nop
  473240:	1000000a 	b	47326c <nat_traversal_vid_to_method+0xb8>
  473244:	00000000 	nop
		case VID_NATT_IETF_00:
			return LELEM(NAT_TRAVERSAL_IETF_00_01);
  473248:	24020002 	li	v0,2
  47324c:	10000008 	b	473270 <nat_traversal_vid_to_method+0xbc>
  473250:	00000000 	nop
			break;
		case VID_NATT_IETF_02:
		case VID_NATT_IETF_02_N:
		case VID_NATT_IETF_03:
			return LELEM(NAT_TRAVERSAL_IETF_02_03);
  473254:	24020004 	li	v0,4
  473258:	10000005 	b	473270 <nat_traversal_vid_to_method+0xbc>
  47325c:	00000000 	nop
			break;
		case VID_NATT_RFC:
			return LELEM(NAT_TRAVERSAL_RFC);
  473260:	24020008 	li	v0,8
  473264:	10000002 	b	473270 <nat_traversal_vid_to_method+0xbc>
  473268:	00000000 	nop
			break;
	}
	return 0;
  47326c:	00001021 	move	v0,zero
}
  473270:	03c0e821 	move	sp,s8
  473274:	8fbe0014 	lw	s8,20(sp)
  473278:	27bd0018 	addiu	sp,sp,24
  47327c:	03e00008 	jr	ra
  473280:	00000000 	nop

00473284 <nat_traversal_natd_lookup>:
  473284:	3c1c0fba 	lui	gp,0xfba
  473288:	279c96ec 	addiu	gp,gp,-26900
  47328c:	0399e021 	addu	gp,gp,t9
  473290:	27bdff80 	addiu	sp,sp,-128
  473294:	afbc0018 	sw	gp,24(sp)
  473298:	afbf0078 	sw	ra,120(sp)
  47329c:	afbe0074 	sw	s8,116(sp)
  4732a0:	afbc0070 	sw	gp,112(sp)
  4732a4:	03a0f021 	move	s8,sp
  4732a8:	afc40080 	sw	a0,128(s8)

void nat_traversal_natd_lookup(struct msg_digest *md)
{
	char hash[MAX_DIGEST_LEN];
	struct payload_digest *p;
	struct state *st = md->st;
  4732ac:	8fc20080 	lw	v0,128(s8)
  4732b0:	00000000 	nop
  4732b4:	8c420098 	lw	v0,152(v0)
  4732b8:	00000000 	nop
  4732bc:	afc20064 	sw	v0,100(s8)
	int i;

	if (!st || !md->iface || !st->st_oakley.hasher) {
  4732c0:	8fc20064 	lw	v0,100(s8)
  4732c4:	00000000 	nop
  4732c8:	1040000d 	beqz	v0,473300 <nat_traversal_natd_lookup+0x7c>
  4732cc:	00000000 	nop
  4732d0:	8fc20080 	lw	v0,128(s8)
  4732d4:	00000000 	nop
  4732d8:	8c42000c 	lw	v0,12(v0)
  4732dc:	00000000 	nop
  4732e0:	10400007 	beqz	v0,473300 <nat_traversal_natd_lookup+0x7c>
  4732e4:	00000000 	nop
  4732e8:	8fc20064 	lw	v0,100(s8)
  4732ec:	00000000 	nop
  4732f0:	8c420028 	lw	v0,40(v0)
  4732f4:	00000000 	nop
  4732f8:	14400011 	bnez	v0,473340 <nat_traversal_natd_lookup+0xbc>
  4732fc:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "NAT-Traversal: assert failed %s:%d",
  473300:	24040003 	li	a0,3
  473304:	8f85802c 	lw	a1,-32724(gp)
  473308:	00000000 	nop
  47330c:	24a564b0 	addiu	a1,a1,25776
  473310:	8f86802c 	lw	a2,-32724(gp)
  473314:	00000000 	nop
  473318:	24c664d4 	addiu	a2,a2,25812
  47331c:	240700cb 	li	a3,203
  473320:	8f998c48 	lw	t9,-29624(gp)
  473324:	00000000 	nop
  473328:	0320f809 	jalr	t9
  47332c:	00000000 	nop
  473330:	8fdc0018 	lw	gp,24(s8)
  473334:	00000000 	nop
			__FILE__, __LINE__);
		return;
  473338:	10000152 	b	473884 <nat_traversal_natd_lookup+0x600>
  47333c:	00000000 	nop
	}

	/** Count NAT-D **/
	for (p = md->chain[ISAKMP_NEXT_NATD_RFC], i=0; p != NULL; p = p->next, i++);
  473340:	8fc20080 	lw	v0,128(s8)
  473344:	00000000 	nop
  473348:	8c4204e4 	lw	v0,1252(v0)
  47334c:	00000000 	nop
  473350:	afc20060 	sw	v0,96(s8)
  473354:	afc00068 	sw	zero,104(s8)
  473358:	8fc20060 	lw	v0,96(s8)
  47335c:	00000000 	nop
  473360:	14400003 	bnez	v0,473370 <nat_traversal_natd_lookup+0xec>
  473364:	00000000 	nop
  473368:	1000000c 	b	47339c <nat_traversal_natd_lookup+0x118>
  47336c:	00000000 	nop
  473370:	8fc20060 	lw	v0,96(s8)
  473374:	00000000 	nop
  473378:	8c42002c 	lw	v0,44(v0)
  47337c:	00000000 	nop
  473380:	afc20060 	sw	v0,96(s8)
  473384:	8fc20068 	lw	v0,104(s8)
  473388:	00000000 	nop
  47338c:	24420001 	addiu	v0,v0,1
  473390:	afc20068 	sw	v0,104(s8)
  473394:	1000fff0 	b	473358 <nat_traversal_natd_lookup+0xd4>
  473398:	00000000 	nop

	/**
	 * We need at least 2 NAT-D (1 for us, many for peer)
	 */
	if (i < 2) {
  47339c:	8fc20068 	lw	v0,104(s8)
  4733a0:	00000000 	nop
  4733a4:	28420002 	slti	v0,v0,2
  4733a8:	10400011 	beqz	v0,4733f0 <nat_traversal_natd_lookup+0x16c>
  4733ac:	00000000 	nop
		loglog(RC_LOG_SERIOUS,
  4733b0:	24040003 	li	a0,3
  4733b4:	8f85802c 	lw	a1,-32724(gp)
  4733b8:	00000000 	nop
  4733bc:	24a564e4 	addiu	a1,a1,25828
  4733c0:	8fc60068 	lw	a2,104(s8)
  4733c4:	8f998c48 	lw	t9,-29624(gp)
  4733c8:	00000000 	nop
  4733cc:	0320f809 	jalr	t9
  4733d0:	00000000 	nop
  4733d4:	8fdc0018 	lw	gp,24(s8)
  4733d8:	00000000 	nop
		"NAT-Traversal: Only %d NAT-D - Aborting NAT-Traversal negociation", i);
		st->nat_traversal = 0;
  4733dc:	8fc20064 	lw	v0,100(s8)
  4733e0:	00000000 	nop
  4733e4:	ac400264 	sw	zero,612(v0)
		return;
  4733e8:	10000126 	b	473884 <nat_traversal_natd_lookup+0x600>
  4733ec:	00000000 	nop
	}

	/**
	 * First one with my IP & port
	 */
	p = md->chain[ISAKMP_NEXT_NATD_RFC];
  4733f0:	8fc20080 	lw	v0,128(s8)
  4733f4:	00000000 	nop
  4733f8:	8c4204e4 	lw	v0,1252(v0)
  4733fc:	00000000 	nop
  473400:	afc20060 	sw	v0,96(s8)
	_natd_hash(st->st_oakley.hasher, hash, st->st_icookie, st->st_rcookie,
  473404:	8fc20064 	lw	v0,100(s8)
  473408:	00000000 	nop
  47340c:	244600f0 	addiu	a2,v0,240
  473410:	8fc20064 	lw	v0,100(s8)
  473414:	00000000 	nop
  473418:	24430108 	addiu	v1,v0,264
  47341c:	8fc20080 	lw	v0,128(s8)
  473420:	00000000 	nop
  473424:	8c42000c 	lw	v0,12(v0)
  473428:	00000000 	nop
  47342c:	24420008 	addiu	v0,v0,8
  473430:	afa20010 	sw	v0,16(sp)
  473434:	8fc20064 	lw	v0,100(s8)
  473438:	00000000 	nop
  47343c:	8c42000c 	lw	v0,12(v0)
  473440:	00000000 	nop
  473444:	944200c8 	lhu	v0,200(v0)
  473448:	00000000 	nop
  47344c:	afa20014 	sw	v0,20(sp)
  473450:	8fc20064 	lw	v0,100(s8)
  473454:	00000000 	nop
  473458:	8c440028 	lw	a0,40(v0)
  47345c:	27c50020 	addiu	a1,s8,32
  473460:	00603821 	move	a3,v1
  473464:	8f998040 	lw	t9,-32704(gp)
  473468:	00000000 	nop
  47346c:	27392cac 	addiu	t9,t9,11436
  473470:	00000000 	nop
  473474:	0320f809 	jalr	t9
  473478:	00000000 	nop
  47347c:	8fdc0018 	lw	gp,24(s8)
  473480:	00000000 	nop
		&(md->iface->addr), ntohs(st->st_connection->this.host_port));
	if (!( (pbs_left(&p->pbs) == st->st_oakley.hasher->hash_digest_len) &&
		(memcmp(p->pbs.cur, hash, st->st_oakley.hasher->hash_digest_len)==0)
		)) {
  473484:	8fc20060 	lw	v0,96(s8)
  473488:	00000000 	nop
  47348c:	8c430014 	lw	v1,20(v0)
  473490:	8fc20060 	lw	v0,96(s8)
  473494:	00000000 	nop
  473498:	8c420010 	lw	v0,16(v0)
  47349c:	00000000 	nop
  4734a0:	00621823 	subu	v1,v1,v0
  4734a4:	8fc20064 	lw	v0,100(s8)
  4734a8:	00000000 	nop
  4734ac:	8c420028 	lw	v0,40(v0)
  4734b0:	00000000 	nop
  4734b4:	8c42000c 	lw	v0,12(v0)
  4734b8:	00000000 	nop
  4734bc:	14620012 	bne	v1,v0,473508 <nat_traversal_natd_lookup+0x284>
  4734c0:	00000000 	nop
  4734c4:	8fc20064 	lw	v0,100(s8)
  4734c8:	00000000 	nop
  4734cc:	8c430028 	lw	v1,40(v0)
  4734d0:	8fc20060 	lw	v0,96(s8)
  4734d4:	00000000 	nop
  4734d8:	8c440010 	lw	a0,16(v0)
  4734dc:	27c50020 	addiu	a1,s8,32
  4734e0:	8c66000c 	lw	a2,12(v1)
  4734e4:	8f9985c8 	lw	t9,-31288(gp)
  4734e8:	00000000 	nop
  4734ec:	0320f809 	jalr	t9
  4734f0:	00000000 	nop
  4734f4:	8fdc0018 	lw	gp,24(s8)
  4734f8:	14400003 	bnez	v0,473508 <nat_traversal_natd_lookup+0x284>
  4734fc:	00000000 	nop
  473500:	1000003a 	b	4735ec <nat_traversal_natd_lookup+0x368>
  473504:	00000000 	nop
#ifdef NAT_D_DEBUG
		DBG(DBG_NATT,
  473508:	8f8284f8 	lw	v0,-31496(gp)
  47350c:	00000000 	nop
  473510:	8c420000 	lw	v0,0(v0)
  473514:	00000000 	nop
  473518:	30420080 	andi	v0,v0,0x80
  47351c:	1040002b 	beqz	v0,4735cc <nat_traversal_natd_lookup+0x348>
  473520:	00000000 	nop
  473524:	8f84802c 	lw	a0,-32724(gp)
  473528:	00000000 	nop
  47352c:	24846528 	addiu	a0,a0,25896
  473530:	8f9983b8 	lw	t9,-31816(gp)
  473534:	00000000 	nop
  473538:	0320f809 	jalr	t9
  47353c:	00000000 	nop
  473540:	8fdc0018 	lw	gp,24(s8)
  473544:	8fc20064 	lw	v0,100(s8)
  473548:	00000000 	nop
  47354c:	8c420028 	lw	v0,40(v0)
  473550:	8f84802c 	lw	a0,-32724(gp)
  473554:	00000000 	nop
  473558:	24846544 	addiu	a0,a0,25924
  47355c:	27c50020 	addiu	a1,s8,32
  473560:	8c46000c 	lw	a2,12(v0)
  473564:	8f9984ec 	lw	t9,-31508(gp)
  473568:	00000000 	nop
  47356c:	0320f809 	jalr	t9
  473570:	00000000 	nop
  473574:	8fdc0018 	lw	gp,24(s8)
  473578:	8fc20060 	lw	v0,96(s8)
  47357c:	00000000 	nop
  473580:	8c430014 	lw	v1,20(v0)
  473584:	8fc20060 	lw	v0,96(s8)
  473588:	00000000 	nop
  47358c:	8c420010 	lw	v0,16(v0)
  473590:	00000000 	nop
  473594:	00621823 	subu	v1,v1,v0
  473598:	8f84802c 	lw	a0,-32724(gp)
  47359c:	00000000 	nop
  4735a0:	24846554 	addiu	a0,a0,25940
  4735a4:	8fc20060 	lw	v0,96(s8)
  4735a8:	00000000 	nop
  4735ac:	8c450010 	lw	a1,16(v0)
  4735b0:	00603021 	move	a2,v1
  4735b4:	8f9984ec 	lw	t9,-31508(gp)
  4735b8:	00000000 	nop
  4735bc:	0320f809 	jalr	t9
  4735c0:	00000000 	nop
  4735c4:	8fdc0018 	lw	gp,24(s8)
  4735c8:	00000000 	nop
			DBG_log("NAT_TRAVERSAL_NAT_BHND_ME");
			DBG_dump("expected NAT-D:", hash,
				st->st_oakley.hasher->hash_digest_len);
			DBG_dump("received NAT-D:", p->pbs.cur, pbs_left(&p->pbs));
		);
#endif
		st->nat_traversal |= LELEM(NAT_TRAVERSAL_NAT_BHND_ME);
  4735cc:	8fc20064 	lw	v0,100(s8)
  4735d0:	00000000 	nop
  4735d4:	8c430264 	lw	v1,612(v0)
  4735d8:	3c024000 	lui	v0,0x4000
  4735dc:	00621825 	or	v1,v1,v0
  4735e0:	8fc20064 	lw	v0,100(s8)
  4735e4:	00000000 	nop
  4735e8:	ac430264 	sw	v1,612(v0)
	}

	/**
	 * The others with sender IP & port
	 */
	_natd_hash(st->st_oakley.hasher, hash, st->st_icookie, st->st_rcookie,
  4735ec:	8fc20064 	lw	v0,100(s8)
  4735f0:	00000000 	nop
  4735f4:	244600f0 	addiu	a2,v0,240
  4735f8:	8fc20064 	lw	v0,100(s8)
  4735fc:	00000000 	nop
  473600:	24430108 	addiu	v1,v0,264
  473604:	8fc20080 	lw	v0,128(s8)
  473608:	00000000 	nop
  47360c:	24420010 	addiu	v0,v0,16
  473610:	afa20010 	sw	v0,16(sp)
  473614:	8fc20080 	lw	v0,128(s8)
  473618:	00000000 	nop
  47361c:	9442002c 	lhu	v0,44(v0)
  473620:	00000000 	nop
  473624:	afa20014 	sw	v0,20(sp)
  473628:	8fc20064 	lw	v0,100(s8)
  47362c:	00000000 	nop
  473630:	8c440028 	lw	a0,40(v0)
  473634:	27c50020 	addiu	a1,s8,32
  473638:	00603821 	move	a3,v1
  47363c:	8f998040 	lw	t9,-32704(gp)
  473640:	00000000 	nop
  473644:	27392cac 	addiu	t9,t9,11436
  473648:	00000000 	nop
  47364c:	0320f809 	jalr	t9
  473650:	00000000 	nop
  473654:	8fdc0018 	lw	gp,24(s8)
  473658:	00000000 	nop
		&(md->sender), ntohs(md->sender_port));
	for (p = p->next, i=0 ; p != NULL; p = p->next) {
  47365c:	8fc20060 	lw	v0,96(s8)
  473660:	00000000 	nop
  473664:	8c42002c 	lw	v0,44(v0)
  473668:	00000000 	nop
  47366c:	afc20060 	sw	v0,96(s8)
  473670:	afc00068 	sw	zero,104(s8)
  473674:	8fc20060 	lw	v0,96(s8)
  473678:	00000000 	nop
  47367c:	14400003 	bnez	v0,47368c <nat_traversal_natd_lookup+0x408>
  473680:	00000000 	nop
  473684:	1000002b 	b	473734 <nat_traversal_natd_lookup+0x4b0>
  473688:	00000000 	nop
		if ( (pbs_left(&p->pbs) == st->st_oakley.hasher->hash_digest_len) &&
			(memcmp(p->pbs.cur, hash, st->st_oakley.hasher->hash_digest_len)==0)
			) {
  47368c:	8fc20060 	lw	v0,96(s8)
  473690:	00000000 	nop
  473694:	8c430014 	lw	v1,20(v0)
  473698:	8fc20060 	lw	v0,96(s8)
  47369c:	00000000 	nop
  4736a0:	8c420010 	lw	v0,16(v0)
  4736a4:	00000000 	nop
  4736a8:	00621823 	subu	v1,v1,v0
  4736ac:	8fc20064 	lw	v0,100(s8)
  4736b0:	00000000 	nop
  4736b4:	8c420028 	lw	v0,40(v0)
  4736b8:	00000000 	nop
  4736bc:	8c42000c 	lw	v0,12(v0)
  4736c0:	00000000 	nop
  4736c4:	14620014 	bne	v1,v0,473718 <nat_traversal_natd_lookup+0x494>
  4736c8:	00000000 	nop
  4736cc:	8fc20064 	lw	v0,100(s8)
  4736d0:	00000000 	nop
  4736d4:	8c430028 	lw	v1,40(v0)
  4736d8:	8fc20060 	lw	v0,96(s8)
  4736dc:	00000000 	nop
  4736e0:	8c440010 	lw	a0,16(v0)
  4736e4:	27c50020 	addiu	a1,s8,32
  4736e8:	8c66000c 	lw	a2,12(v1)
  4736ec:	8f9985c8 	lw	t9,-31288(gp)
  4736f0:	00000000 	nop
  4736f4:	0320f809 	jalr	t9
  4736f8:	00000000 	nop
  4736fc:	8fdc0018 	lw	gp,24(s8)
  473700:	14400005 	bnez	v0,473718 <nat_traversal_natd_lookup+0x494>
  473704:	00000000 	nop
			i++;
  473708:	8fc20068 	lw	v0,104(s8)
  47370c:	00000000 	nop
  473710:	24420001 	addiu	v0,v0,1
  473714:	afc20068 	sw	v0,104(s8)
  473718:	8fc20060 	lw	v0,96(s8)
  47371c:	00000000 	nop
  473720:	8c42002c 	lw	v0,44(v0)
  473724:	00000000 	nop
  473728:	afc20060 	sw	v0,96(s8)
  47372c:	1000ffd1 	b	473674 <nat_traversal_natd_lookup+0x3f0>
  473730:	00000000 	nop
		}
	}
	if (!i) {
  473734:	8fc20068 	lw	v0,104(s8)
  473738:	00000000 	nop
  47373c:	14400051 	bnez	v0,473884 <nat_traversal_natd_lookup+0x600>
  473740:	00000000 	nop
#ifdef NAT_D_DEBUG
		DBG(DBG_NATT,
  473744:	8f8284f8 	lw	v0,-31496(gp)
  473748:	00000000 	nop
  47374c:	8c420000 	lw	v0,0(v0)
  473750:	00000000 	nop
  473754:	30420080 	andi	v0,v0,0x80
  473758:	10400042 	beqz	v0,473864 <nat_traversal_natd_lookup+0x5e0>
  47375c:	00000000 	nop
  473760:	8f84802c 	lw	a0,-32724(gp)
  473764:	00000000 	nop
  473768:	24846564 	addiu	a0,a0,25956
  47376c:	8f9983b8 	lw	t9,-31816(gp)
  473770:	00000000 	nop
  473774:	0320f809 	jalr	t9
  473778:	00000000 	nop
  47377c:	8fdc0018 	lw	gp,24(s8)
  473780:	8fc20064 	lw	v0,100(s8)
  473784:	00000000 	nop
  473788:	8c420028 	lw	v0,40(v0)
  47378c:	8f84802c 	lw	a0,-32724(gp)
  473790:	00000000 	nop
  473794:	24846544 	addiu	a0,a0,25924
  473798:	27c50020 	addiu	a1,s8,32
  47379c:	8c46000c 	lw	a2,12(v0)
  4737a0:	8f9984ec 	lw	t9,-31508(gp)
  4737a4:	00000000 	nop
  4737a8:	0320f809 	jalr	t9
  4737ac:	00000000 	nop
  4737b0:	8fdc0018 	lw	gp,24(s8)
  4737b4:	8fc20080 	lw	v0,128(s8)
  4737b8:	00000000 	nop
  4737bc:	8c4204e4 	lw	v0,1252(v0)
  4737c0:	00000000 	nop
  4737c4:	afc20060 	sw	v0,96(s8)
  4737c8:	8fc20060 	lw	v0,96(s8)
  4737cc:	00000000 	nop
  4737d0:	8c42002c 	lw	v0,44(v0)
  4737d4:	00000000 	nop
  4737d8:	afc20060 	sw	v0,96(s8)
  4737dc:	afc00068 	sw	zero,104(s8)
  4737e0:	8fc20060 	lw	v0,96(s8)
  4737e4:	00000000 	nop
  4737e8:	14400003 	bnez	v0,4737f8 <nat_traversal_natd_lookup+0x574>
  4737ec:	00000000 	nop
  4737f0:	1000001c 	b	473864 <nat_traversal_natd_lookup+0x5e0>
  4737f4:	00000000 	nop
  4737f8:	8fc20060 	lw	v0,96(s8)
  4737fc:	00000000 	nop
  473800:	8c430014 	lw	v1,20(v0)
  473804:	8fc20060 	lw	v0,96(s8)
  473808:	00000000 	nop
  47380c:	8c420010 	lw	v0,16(v0)
  473810:	00000000 	nop
  473814:	00621823 	subu	v1,v1,v0
  473818:	8f84802c 	lw	a0,-32724(gp)
  47381c:	00000000 	nop
  473820:	24846554 	addiu	a0,a0,25940
  473824:	8fc20060 	lw	v0,96(s8)
  473828:	00000000 	nop
  47382c:	8c450010 	lw	a1,16(v0)
  473830:	00603021 	move	a2,v1
  473834:	8f9984ec 	lw	t9,-31508(gp)
  473838:	00000000 	nop
  47383c:	0320f809 	jalr	t9
  473840:	00000000 	nop
  473844:	8fdc0018 	lw	gp,24(s8)
  473848:	8fc20060 	lw	v0,96(s8)
  47384c:	00000000 	nop
  473850:	8c42002c 	lw	v0,44(v0)
  473854:	00000000 	nop
  473858:	afc20060 	sw	v0,96(s8)
  47385c:	1000ffe0 	b	4737e0 <nat_traversal_natd_lookup+0x55c>
  473860:	00000000 	nop
			DBG_log("NAT_TRAVERSAL_NAT_BHND_PEER");
			DBG_dump("expected NAT-D:", hash,
				st->st_oakley.hasher->hash_digest_len);
			p = md->chain[ISAKMP_NEXT_NATD_RFC];
			for (p = p->next, i=0 ; p != NULL; p = p->next) {
				DBG_dump("received NAT-D:", p->pbs.cur, pbs_left(&p->pbs));
			}
		);
#endif
		st->nat_traversal |= LELEM(NAT_TRAVERSAL_NAT_BHND_PEER);
  473864:	8fc20064 	lw	v0,100(s8)
  473868:	00000000 	nop
  47386c:	8c430264 	lw	v1,612(v0)
  473870:	3c028000 	lui	v0,0x8000
  473874:	00621825 	or	v1,v1,v0
  473878:	8fc20064 	lw	v0,100(s8)
  47387c:	00000000 	nop
  473880:	ac430264 	sw	v1,612(v0)
	}
#ifdef FORCE_NAT_TRAVERSAL
	st->nat_traversal |= LELEM(NAT_TRAVERSAL_NAT_BHND_PEER);
	st->nat_traversal |= LELEM(NAT_TRAVERSAL_NAT_BHND_ME);
#endif
}
  473884:	03c0e821 	move	sp,s8
  473888:	8fbf0078 	lw	ra,120(sp)
  47388c:	8fbe0074 	lw	s8,116(sp)
  473890:	27bd0080 	addiu	sp,sp,128
  473894:	03e00008 	jr	ra
  473898:	00000000 	nop

0047389c <nat_traversal_add_natd>:
  47389c:	3c1c0fba 	lui	gp,0xfba
  4738a0:	279c90d4 	addiu	gp,gp,-28460
  4738a4:	0399e021 	addu	gp,gp,t9
  4738a8:	27bdff70 	addiu	sp,sp,-144
  4738ac:	afbc0018 	sw	gp,24(sp)
  4738b0:	afbf0088 	sw	ra,136(sp)
  4738b4:	afbe0084 	sw	s8,132(sp)
  4738b8:	afbc0080 	sw	gp,128(sp)
  4738bc:	03a0f021 	move	s8,sp
  4738c0:	00801021 	move	v0,a0
  4738c4:	afc50094 	sw	a1,148(s8)
  4738c8:	afc60098 	sw	a2,152(s8)
  4738cc:	a3c20020 	sb	v0,32(s8)

bool nat_traversal_add_natd(u_int8_t np, pb_stream *outs,
	struct msg_digest *md)
{
	char hash[MAX_DIGEST_LEN];
	struct state *st = md->st;
  4738d0:	8fc20098 	lw	v0,152(s8)
  4738d4:	00000000 	nop
  4738d8:	8c420098 	lw	v0,152(v0)
  4738dc:	00000000 	nop
  4738e0:	afc20068 	sw	v0,104(s8)

	if (!st || !st->st_oakley.hasher) {
  4738e4:	8fc20068 	lw	v0,104(s8)
  4738e8:	00000000 	nop
  4738ec:	10400007 	beqz	v0,47390c <nat_traversal_add_natd+0x70>
  4738f0:	00000000 	nop
  4738f4:	8fc20068 	lw	v0,104(s8)
  4738f8:	00000000 	nop
  4738fc:	8c420028 	lw	v0,40(v0)
  473900:	00000000 	nop
  473904:	14400012 	bnez	v0,473950 <nat_traversal_add_natd+0xb4>
  473908:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "NAT-Traversal: assert failed %s:%d",
  47390c:	24040003 	li	a0,3
  473910:	8f85802c 	lw	a1,-32724(gp)
  473914:	00000000 	nop
  473918:	24a564b0 	addiu	a1,a1,25776
  47391c:	8f86802c 	lw	a2,-32724(gp)
  473920:	00000000 	nop
  473924:	24c664d4 	addiu	a2,a2,25812
  473928:	24070118 	li	a3,280
  47392c:	8f998c48 	lw	t9,-29624(gp)
  473930:	00000000 	nop
  473934:	0320f809 	jalr	t9
  473938:	00000000 	nop
  47393c:	8fdc0018 	lw	gp,24(s8)
  473940:	00000000 	nop
			__FILE__, __LINE__);
		return FALSE;
  473944:	00001021 	move	v0,zero
  473948:	100000bc 	b	473c3c <nat_traversal_add_natd+0x3a0>
  47394c:	00000000 	nop
	}

	if (!out_modify_previous_np((st->nat_traversal & NAT_T_WITH_RFC_VALUES
		? ISAKMP_NEXT_NATD_RFC : ISAKMP_NEXT_NATD_DRAFTS), outs)) {
  473950:	8fc20068 	lw	v0,104(s8)
  473954:	00000000 	nop
  473958:	8c420264 	lw	v0,612(v0)
  47395c:	00000000 	nop
  473960:	30420008 	andi	v0,v0,0x8
  473964:	10400005 	beqz	v0,47397c <nat_traversal_add_natd+0xe0>
  473968:	00000000 	nop
  47396c:	2402000f 	li	v0,15
  473970:	afc2006c 	sw	v0,108(s8)
  473974:	10000003 	b	473984 <nat_traversal_add_natd+0xe8>
  473978:	00000000 	nop
  47397c:	24020082 	li	v0,130
  473980:	afc2006c 	sw	v0,108(s8)
  473984:	8fc4006c 	lw	a0,108(s8)
  473988:	8fc50094 	lw	a1,148(s8)
  47398c:	8f998808 	lw	t9,-30712(gp)
  473990:	00000000 	nop
  473994:	0320f809 	jalr	t9
  473998:	00000000 	nop
  47399c:	8fdc0018 	lw	gp,24(s8)
  4739a0:	14400004 	bnez	v0,4739b4 <nat_traversal_add_natd+0x118>
  4739a4:	00000000 	nop
		return FALSE;
  4739a8:	00001021 	move	v0,zero
  4739ac:	100000a3 	b	473c3c <nat_traversal_add_natd+0x3a0>
  4739b0:	00000000 	nop
	}

	/**
	 * First one with sender IP & port
	 */
	_natd_hash(st->st_oakley.hasher, hash, st->st_icookie,
  4739b4:	8fc20068 	lw	v0,104(s8)
  4739b8:	00000000 	nop
  4739bc:	24420108 	addiu	v0,v0,264
  4739c0:	00402021 	move	a0,v0
  4739c4:	24050008 	li	a1,8
  4739c8:	8f99863c 	lw	t9,-31172(gp)
  4739cc:	00000000 	nop
  4739d0:	0320f809 	jalr	t9
  4739d4:	00000000 	nop
  4739d8:	8fdc0018 	lw	gp,24(s8)
  4739dc:	10400007 	beqz	v0,4739fc <nat_traversal_add_natd+0x160>
  4739e0:	00000000 	nop
  4739e4:	8fc20098 	lw	v0,152(s8)
  4739e8:	00000000 	nop
  4739ec:	24420078 	addiu	v0,v0,120
  4739f0:	afc20070 	sw	v0,112(s8)
  4739f4:	10000005 	b	473a0c <nat_traversal_add_natd+0x170>
  4739f8:	00000000 	nop
  4739fc:	8fc20068 	lw	v0,104(s8)
  473a00:	00000000 	nop
  473a04:	24420108 	addiu	v0,v0,264
  473a08:	afc20070 	sw	v0,112(s8)
  473a0c:	8fc20068 	lw	v0,104(s8)
  473a10:	00000000 	nop
  473a14:	244300f0 	addiu	v1,v0,240
  473a18:	8fc20098 	lw	v0,152(s8)
  473a1c:	00000000 	nop
  473a20:	24420010 	addiu	v0,v0,16
  473a24:	afa20010 	sw	v0,16(sp)
  473a28:	8fc20098 	lw	v0,152(s8)
  473a2c:	00000000 	nop
  473a30:	9442002c 	lhu	v0,44(v0)
  473a34:	00000000 	nop
  473a38:	afa20014 	sw	v0,20(sp)
  473a3c:	8fc20068 	lw	v0,104(s8)
  473a40:	00000000 	nop
  473a44:	8c440028 	lw	a0,40(v0)
  473a48:	27c50028 	addiu	a1,s8,40
  473a4c:	00603021 	move	a2,v1
  473a50:	8fc70070 	lw	a3,112(s8)
  473a54:	8f998040 	lw	t9,-32704(gp)
  473a58:	00000000 	nop
  473a5c:	27392cac 	addiu	t9,t9,11436
  473a60:	00000000 	nop
  473a64:	0320f809 	jalr	t9
  473a68:	00000000 	nop
  473a6c:	8fdc0018 	lw	gp,24(s8)
  473a70:	00000000 	nop
		is_zero_cookie(st->st_rcookie) ? md->hdr.isa_rcookie : st->st_rcookie,
		&(md->sender),
#ifdef FORCE_NAT_TRAVERSAL
		0
#else
		ntohs(md->sender_port)
#endif
	);
	if (!out_generic_raw((st->nat_traversal & NAT_T_WITH_RFC_VALUES
		? ISAKMP_NEXT_NATD_RFC : ISAKMP_NEXT_NATD_DRAFTS), &isakmp_nat_d, outs,
		hash, st->st_oakley.hasher->hash_digest_len, "NAT-D")) {
  473a74:	8fc20068 	lw	v0,104(s8)
  473a78:	00000000 	nop
  473a7c:	8c420264 	lw	v0,612(v0)
  473a80:	00000000 	nop
  473a84:	30420008 	andi	v0,v0,0x8
  473a88:	10400005 	beqz	v0,473aa0 <nat_traversal_add_natd+0x204>
  473a8c:	00000000 	nop
  473a90:	2402000f 	li	v0,15
  473a94:	afc20074 	sw	v0,116(s8)
  473a98:	10000003 	b	473aa8 <nat_traversal_add_natd+0x20c>
  473a9c:	00000000 	nop
  473aa0:	24020082 	li	v0,130
  473aa4:	afc20074 	sw	v0,116(s8)
  473aa8:	8fc20068 	lw	v0,104(s8)
  473aac:	00000000 	nop
  473ab0:	8c420028 	lw	v0,40(v0)
  473ab4:	00000000 	nop
  473ab8:	8c42000c 	lw	v0,12(v0)
  473abc:	00000000 	nop
  473ac0:	afa20010 	sw	v0,16(sp)
  473ac4:	8f82802c 	lw	v0,-32724(gp)
  473ac8:	00000000 	nop
  473acc:	24426580 	addiu	v0,v0,25984
  473ad0:	00000000 	nop
  473ad4:	afa20014 	sw	v0,20(sp)
  473ad8:	8fc40074 	lw	a0,116(s8)
  473adc:	8f858264 	lw	a1,-32156(gp)
  473ae0:	8fc60094 	lw	a2,148(s8)
  473ae4:	27c70028 	addiu	a3,s8,40
  473ae8:	8f99841c 	lw	t9,-31716(gp)
  473aec:	00000000 	nop
  473af0:	0320f809 	jalr	t9
  473af4:	00000000 	nop
  473af8:	8fdc0018 	lw	gp,24(s8)
  473afc:	14400004 	bnez	v0,473b10 <nat_traversal_add_natd+0x274>
  473b00:	00000000 	nop
		return FALSE;
  473b04:	00001021 	move	v0,zero
  473b08:	1000004c 	b	473c3c <nat_traversal_add_natd+0x3a0>
  473b0c:	00000000 	nop
	}

	/**
	 * Second one with my IP & port
	 */
	_natd_hash(st->st_oakley.hasher, hash, st->st_icookie,
  473b10:	8fc20068 	lw	v0,104(s8)
  473b14:	00000000 	nop
  473b18:	24420108 	addiu	v0,v0,264
  473b1c:	00402021 	move	a0,v0
  473b20:	24050008 	li	a1,8
  473b24:	8f99863c 	lw	t9,-31172(gp)
  473b28:	00000000 	nop
  473b2c:	0320f809 	jalr	t9
  473b30:	00000000 	nop
  473b34:	8fdc0018 	lw	gp,24(s8)
  473b38:	10400007 	beqz	v0,473b58 <nat_traversal_add_natd+0x2bc>
  473b3c:	00000000 	nop
  473b40:	8fc20098 	lw	v0,152(s8)
  473b44:	00000000 	nop
  473b48:	24420078 	addiu	v0,v0,120
  473b4c:	afc20078 	sw	v0,120(s8)
  473b50:	10000005 	b	473b68 <nat_traversal_add_natd+0x2cc>
  473b54:	00000000 	nop
  473b58:	8fc20068 	lw	v0,104(s8)
  473b5c:	00000000 	nop
  473b60:	24420108 	addiu	v0,v0,264
  473b64:	afc20078 	sw	v0,120(s8)
  473b68:	8fc20068 	lw	v0,104(s8)
  473b6c:	00000000 	nop
  473b70:	244300f0 	addiu	v1,v0,240
  473b74:	8fc20098 	lw	v0,152(s8)
  473b78:	00000000 	nop
  473b7c:	8c42000c 	lw	v0,12(v0)
  473b80:	00000000 	nop
  473b84:	24420008 	addiu	v0,v0,8
  473b88:	afa20010 	sw	v0,16(sp)
  473b8c:	8fc20068 	lw	v0,104(s8)
  473b90:	00000000 	nop
  473b94:	8c42000c 	lw	v0,12(v0)
  473b98:	00000000 	nop
  473b9c:	944200c8 	lhu	v0,200(v0)
  473ba0:	00000000 	nop
  473ba4:	afa20014 	sw	v0,20(sp)
  473ba8:	8fc20068 	lw	v0,104(s8)
  473bac:	00000000 	nop
  473bb0:	8c440028 	lw	a0,40(v0)
  473bb4:	27c50028 	addiu	a1,s8,40
  473bb8:	00603021 	move	a2,v1
  473bbc:	8fc70078 	lw	a3,120(s8)
  473bc0:	8f998040 	lw	t9,-32704(gp)
  473bc4:	00000000 	nop
  473bc8:	27392cac 	addiu	t9,t9,11436
  473bcc:	00000000 	nop
  473bd0:	0320f809 	jalr	t9
  473bd4:	00000000 	nop
  473bd8:	8fdc0018 	lw	gp,24(s8)
  473bdc:	00000000 	nop
		is_zero_cookie(st->st_rcookie) ? md->hdr.isa_rcookie : st->st_rcookie,
		&(md->iface->addr),
#ifdef FORCE_NAT_TRAVERSAL
		0
#else
		ntohs(st->st_connection->this.host_port)
#endif
	);
	return (out_generic_raw(np, &isakmp_nat_d, outs,
  473be0:	93c30020 	lbu	v1,32(s8)
  473be4:	8fc20068 	lw	v0,104(s8)
  473be8:	00000000 	nop
  473bec:	8c420028 	lw	v0,40(v0)
  473bf0:	00000000 	nop
  473bf4:	8c42000c 	lw	v0,12(v0)
  473bf8:	00000000 	nop
  473bfc:	afa20010 	sw	v0,16(sp)
  473c00:	8f82802c 	lw	v0,-32724(gp)
  473c04:	00000000 	nop
  473c08:	24426580 	addiu	v0,v0,25984
  473c0c:	00000000 	nop
  473c10:	afa20014 	sw	v0,20(sp)
  473c14:	00602021 	move	a0,v1
  473c18:	8f858264 	lw	a1,-32156(gp)
  473c1c:	8fc60094 	lw	a2,148(s8)
  473c20:	27c70028 	addiu	a3,s8,40
  473c24:	8f99841c 	lw	t9,-31716(gp)
  473c28:	00000000 	nop
  473c2c:	0320f809 	jalr	t9
  473c30:	00000000 	nop
  473c34:	8fdc0018 	lw	gp,24(s8)
  473c38:	00000000 	nop
		hash, st->st_oakley.hasher->hash_digest_len, "NAT-D"));
}
  473c3c:	03c0e821 	move	sp,s8
  473c40:	8fbf0088 	lw	ra,136(sp)
  473c44:	8fbe0084 	lw	s8,132(sp)
  473c48:	27bd0090 	addiu	sp,sp,144
  473c4c:	03e00008 	jr	ra
  473c50:	00000000 	nop

00473c54 <nat_traversal_natoa_lookup>:
  473c54:	3c1c0fba 	lui	gp,0xfba
  473c58:	279c8d1c 	addiu	gp,gp,-29412
  473c5c:	0399e021 	addu	gp,gp,t9
  473c60:	27bdff48 	addiu	sp,sp,-184
  473c64:	afbc0010 	sw	gp,16(sp)
  473c68:	afbf00b0 	sw	ra,176(sp)
  473c6c:	afbe00ac 	sw	s8,172(sp)
  473c70:	afbc00a8 	sw	gp,168(sp)
  473c74:	03a0f021 	move	s8,sp
  473c78:	afc400b8 	sw	a0,184(s8)

/**
 * nat_traversal_natoa_lookup()
 * 
 * Look for NAT-OA in message
 */
void nat_traversal_natoa_lookup(struct msg_digest *md)
{
	struct payload_digest *p;
	struct state *st = md->st;
  473c7c:	8fc200b8 	lw	v0,184(s8)
  473c80:	00000000 	nop
  473c84:	8c420098 	lw	v0,152(v0)
  473c88:	00000000 	nop
  473c8c:	afc2001c 	sw	v0,28(s8)
	int i;
	ip_address ip;

	if (!st || !md->iface) {
  473c90:	8fc2001c 	lw	v0,28(s8)
  473c94:	00000000 	nop
  473c98:	10400007 	beqz	v0,473cb8 <nat_traversal_natoa_lookup+0x64>
  473c9c:	00000000 	nop
  473ca0:	8fc200b8 	lw	v0,184(s8)
  473ca4:	00000000 	nop
  473ca8:	8c42000c 	lw	v0,12(v0)
  473cac:	00000000 	nop
  473cb0:	14400011 	bnez	v0,473cf8 <nat_traversal_natoa_lookup+0xa4>
  473cb4:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "NAT-Traversal: assert failed %s:%d",
  473cb8:	24040003 	li	a0,3
  473cbc:	8f85802c 	lw	a1,-32724(gp)
  473cc0:	00000000 	nop
  473cc4:	24a564b0 	addiu	a1,a1,25776
  473cc8:	8f86802c 	lw	a2,-32724(gp)
  473ccc:	00000000 	nop
  473cd0:	24c664d4 	addiu	a2,a2,25812
  473cd4:	24070151 	li	a3,337
  473cd8:	8f998c48 	lw	t9,-29624(gp)
  473cdc:	00000000 	nop
  473ce0:	0320f809 	jalr	t9
  473ce4:	00000000 	nop
  473ce8:	8fdc0010 	lw	gp,16(s8)
  473cec:	00000000 	nop
			__FILE__, __LINE__);
		return;
  473cf0:	1000014c 	b	474224 <nat_traversal_natoa_lookup+0x5d0>
  473cf4:	00000000 	nop
	}

	/** Initialize NAT-OA */
	anyaddr(AF_INET, &st->nat_oa);
  473cf8:	8fc2001c 	lw	v0,28(s8)
  473cfc:	00000000 	nop
  473d00:	24420268 	addiu	v0,v0,616
  473d04:	24040002 	li	a0,2
  473d08:	00402821 	move	a1,v0
  473d0c:	8f998814 	lw	t9,-30700(gp)
  473d10:	00000000 	nop
  473d14:	0320f809 	jalr	t9
  473d18:	00000000 	nop
  473d1c:	8fdc0010 	lw	gp,16(s8)
  473d20:	00000000 	nop

	/** Count NAT-OA **/
	for (p = md->chain[ISAKMP_NEXT_NATOA_RFC], i=0; p != NULL; p = p->next, i++);
  473d24:	8fc200b8 	lw	v0,184(s8)
  473d28:	00000000 	nop
  473d2c:	8c4204e8 	lw	v0,1256(v0)
  473d30:	00000000 	nop
  473d34:	afc20018 	sw	v0,24(s8)
  473d38:	afc00020 	sw	zero,32(s8)
  473d3c:	8fc20018 	lw	v0,24(s8)
  473d40:	00000000 	nop
  473d44:	14400003 	bnez	v0,473d54 <nat_traversal_natoa_lookup+0x100>
  473d48:	00000000 	nop
  473d4c:	1000000c 	b	473d80 <nat_traversal_natoa_lookup+0x12c>
  473d50:	00000000 	nop
  473d54:	8fc20018 	lw	v0,24(s8)
  473d58:	00000000 	nop
  473d5c:	8c42002c 	lw	v0,44(v0)
  473d60:	00000000 	nop
  473d64:	afc20018 	sw	v0,24(s8)
  473d68:	8fc20020 	lw	v0,32(s8)
  473d6c:	00000000 	nop
  473d70:	24420001 	addiu	v0,v0,1
  473d74:	afc20020 	sw	v0,32(s8)
  473d78:	1000fff0 	b	473d3c <nat_traversal_natoa_lookup+0xe8>
  473d7c:	00000000 	nop

	DBG(DBG_NATT,
  473d80:	8f8284f8 	lw	v0,-31496(gp)
  473d84:	00000000 	nop
  473d88:	8c420000 	lw	v0,0(v0)
  473d8c:	00000000 	nop
  473d90:	30420080 	andi	v0,v0,0x80
  473d94:	1040000b 	beqz	v0,473dc4 <nat_traversal_natoa_lookup+0x170>
  473d98:	00000000 	nop
  473d9c:	8f84802c 	lw	a0,-32724(gp)
  473da0:	00000000 	nop
  473da4:	24846588 	addiu	a0,a0,25992
  473da8:	8fc50020 	lw	a1,32(s8)
  473dac:	8f9983b8 	lw	t9,-31816(gp)
  473db0:	00000000 	nop
  473db4:	0320f809 	jalr	t9
  473db8:	00000000 	nop
  473dbc:	8fdc0010 	lw	gp,16(s8)
  473dc0:	00000000 	nop
		DBG_log("NAT-Traversal: received %d NAT-OA.", i);
	);

	if (i==0) {
  473dc4:	8fc20020 	lw	v0,32(s8)
  473dc8:	00000000 	nop
  473dcc:	14400003 	bnez	v0,473ddc <nat_traversal_natoa_lookup+0x188>
  473dd0:	00000000 	nop
		return;
  473dd4:	10000113 	b	474224 <nat_traversal_natoa_lookup+0x5d0>
  473dd8:	00000000 	nop
	}
	else if (!(st->nat_traversal & LELEM(NAT_TRAVERSAL_NAT_BHND_PEER))) {
  473ddc:	8fc2001c 	lw	v0,28(s8)
  473de0:	00000000 	nop
  473de4:	8c430264 	lw	v1,612(v0)
  473de8:	3c028000 	lui	v0,0x8000
  473dec:	00621024 	and	v0,v1,v0
  473df0:	1440000e 	bnez	v0,473e2c <nat_traversal_natoa_lookup+0x1d8>
  473df4:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "NAT-Traversal: received %d NAT-OA. "
  473df8:	24040003 	li	a0,3
  473dfc:	8f85802c 	lw	a1,-32724(gp)
  473e00:	00000000 	nop
  473e04:	24a565ac 	addiu	a1,a1,26028
  473e08:	8fc60020 	lw	a2,32(s8)
  473e0c:	8f998c48 	lw	t9,-29624(gp)
  473e10:	00000000 	nop
  473e14:	0320f809 	jalr	t9
  473e18:	00000000 	nop
  473e1c:	8fdc0010 	lw	gp,16(s8)
  473e20:	00000000 	nop
			"ignored because peer is not NATed", i);
		return;
  473e24:	100000ff 	b	474224 <nat_traversal_natoa_lookup+0x5d0>
  473e28:	00000000 	nop
	}
	else if (i>1) {
  473e2c:	8fc20020 	lw	v0,32(s8)
  473e30:	00000000 	nop
  473e34:	28420002 	slti	v0,v0,2
  473e38:	1440000c 	bnez	v0,473e6c <nat_traversal_natoa_lookup+0x218>
  473e3c:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "NAT-Traversal: received %d NAT-OA. "
  473e40:	24040003 	li	a0,3
  473e44:	8f85802c 	lw	a1,-32724(gp)
  473e48:	00000000 	nop
  473e4c:	24a565f4 	addiu	a1,a1,26100
  473e50:	8fc60020 	lw	a2,32(s8)
  473e54:	8f998c48 	lw	t9,-29624(gp)
  473e58:	00000000 	nop
  473e5c:	0320f809 	jalr	t9
  473e60:	00000000 	nop
  473e64:	8fdc0010 	lw	gp,16(s8)
  473e68:	00000000 	nop
			"using first, ignoring others", i);
	}

	/** Take first **/
	p = md->chain[ISAKMP_NEXT_NATOA_RFC];
  473e6c:	8fc200b8 	lw	v0,184(s8)
  473e70:	00000000 	nop
  473e74:	8c4204e8 	lw	v0,1256(v0)
  473e78:	00000000 	nop
  473e7c:	afc20018 	sw	v0,24(s8)

	DBG(DBG_PARSING,
  473e80:	8f8284f8 	lw	v0,-31496(gp)
  473e84:	00000000 	nop
  473e88:	8c420000 	lw	v0,0(v0)
  473e8c:	00000000 	nop
  473e90:	30420004 	andi	v0,v0,0x4
  473e94:	10400016 	beqz	v0,473ef0 <nat_traversal_natoa_lookup+0x29c>
  473e98:	00000000 	nop
  473e9c:	8fc20018 	lw	v0,24(s8)
  473ea0:	00000000 	nop
  473ea4:	8c430014 	lw	v1,20(v0)
  473ea8:	8fc20018 	lw	v0,24(s8)
  473eac:	00000000 	nop
  473eb0:	8c42000c 	lw	v0,12(v0)
  473eb4:	00000000 	nop
  473eb8:	00621823 	subu	v1,v1,v0
  473ebc:	8f84802c 	lw	a0,-32724(gp)
  473ec0:	00000000 	nop
  473ec4:	24846634 	addiu	a0,a0,26164
  473ec8:	8fc20018 	lw	v0,24(s8)
  473ecc:	00000000 	nop
  473ed0:	8c45000c 	lw	a1,12(v0)
  473ed4:	00603021 	move	a2,v1
  473ed8:	8f9984ec 	lw	t9,-31508(gp)
  473edc:	00000000 	nop
  473ee0:	0320f809 	jalr	t9
  473ee4:	00000000 	nop
  473ee8:	8fdc0010 	lw	gp,16(s8)
  473eec:	00000000 	nop
		DBG_dump("NAT-OA:", p->pbs.start, pbs_room(&p->pbs));
	);

	switch (p->payload.nat_oa.isanoa_idtype) {
  473ef0:	8fc20018 	lw	v0,24(s8)
  473ef4:	00000000 	nop
  473ef8:	90420024 	lbu	v0,36(v0)
  473efc:	00000000 	nop
  473f00:	afc20098 	sw	v0,152(s8)
  473f04:	24020001 	li	v0,1
  473f08:	8fc30098 	lw	v1,152(s8)
  473f0c:	00000000 	nop
  473f10:	10620016 	beq	v1,v0,473f6c <nat_traversal_natoa_lookup+0x318>
  473f14:	00000000 	nop
  473f18:	24020005 	li	v0,5
  473f1c:	8fc30098 	lw	v1,152(s8)
  473f20:	00000000 	nop
  473f24:	10620046 	beq	v1,v0,474040 <nat_traversal_natoa_lookup+0x3ec>
  473f28:	00000000 	nop
		case ID_IPV4_ADDR:
			if (pbs_left(&p->pbs) == sizeof(struct in_addr)) {
				initaddr(p->pbs.cur, pbs_left(&p->pbs), AF_INET, &ip);
			}
			else {
				loglog(RC_LOG_SERIOUS, "NAT-Traversal: received IPv4 NAT-OA "
					"with invalid IP size (%d)", (int) pbs_left(&p->pbs));
				return;
			}
			break;
		case ID_IPV6_ADDR:
			if (pbs_left(&p->pbs) == sizeof(struct in6_addr)) {
				initaddr(p->pbs.cur, pbs_left(&p->pbs), AF_INET6, &ip);
			}
			else {
				loglog(RC_LOG_SERIOUS, "NAT-Traversal: received IPv6 NAT-OA "
					"with invalid IP size (%d)", (int) pbs_left(&p->pbs));
				return;
			}
			break;
		default:
			loglog(RC_LOG_SERIOUS, "NAT-Traversal: "
  473f2c:	8fc20018 	lw	v0,24(s8)
  473f30:	00000000 	nop
  473f34:	90420024 	lbu	v0,36(v0)
  473f38:	24040003 	li	a0,3
  473f3c:	8f85802c 	lw	a1,-32724(gp)
  473f40:	00000000 	nop
  473f44:	24a5663c 	addiu	a1,a1,26172
  473f48:	00403021 	move	a2,v0
  473f4c:	8f998c48 	lw	t9,-29624(gp)
  473f50:	00000000 	nop
  473f54:	0320f809 	jalr	t9
  473f58:	00000000 	nop
  473f5c:	8fdc0010 	lw	gp,16(s8)
  473f60:	00000000 	nop
				"invalid ID Type (%d) in NAT-OA - ignored",
				p->payload.nat_oa.isanoa_idtype);
			return;
  473f64:	100000af 	b	474224 <nat_traversal_natoa_lookup+0x5d0>
  473f68:	00000000 	nop
  473f6c:	8fc20018 	lw	v0,24(s8)
  473f70:	00000000 	nop
  473f74:	8c430014 	lw	v1,20(v0)
  473f78:	8fc20018 	lw	v0,24(s8)
  473f7c:	00000000 	nop
  473f80:	8c420010 	lw	v0,16(v0)
  473f84:	00000000 	nop
  473f88:	00621823 	subu	v1,v1,v0
  473f8c:	24020004 	li	v0,4
  473f90:	14620016 	bne	v1,v0,473fec <nat_traversal_natoa_lookup+0x398>
  473f94:	00000000 	nop
  473f98:	8fc20018 	lw	v0,24(s8)
  473f9c:	00000000 	nop
  473fa0:	8c430014 	lw	v1,20(v0)
  473fa4:	8fc20018 	lw	v0,24(s8)
  473fa8:	00000000 	nop
  473fac:	8c420010 	lw	v0,16(v0)
  473fb0:	00000000 	nop
  473fb4:	00621823 	subu	v1,v1,v0
  473fb8:	8fc20018 	lw	v0,24(s8)
  473fbc:	00000000 	nop
  473fc0:	8c440010 	lw	a0,16(v0)
  473fc4:	00602821 	move	a1,v1
  473fc8:	24060002 	li	a2,2
  473fcc:	27c70028 	addiu	a3,s8,40
  473fd0:	8f998b78 	lw	t9,-29832(gp)
  473fd4:	00000000 	nop
  473fd8:	0320f809 	jalr	t9
  473fdc:	00000000 	nop
  473fe0:	8fdc0010 	lw	gp,16(s8)
  473fe4:	1000004b 	b	474114 <nat_traversal_natoa_lookup+0x4c0>
  473fe8:	00000000 	nop
  473fec:	8fc20018 	lw	v0,24(s8)
  473ff0:	00000000 	nop
  473ff4:	8c430014 	lw	v1,20(v0)
  473ff8:	8fc20018 	lw	v0,24(s8)
  473ffc:	00000000 	nop
  474000:	8c420010 	lw	v0,16(v0)
  474004:	00000000 	nop
  474008:	00621023 	subu	v0,v1,v0
  47400c:	24040003 	li	a0,3
  474010:	8f85802c 	lw	a1,-32724(gp)
  474014:	00000000 	nop
  474018:	24a56674 	addiu	a1,a1,26228
  47401c:	00403021 	move	a2,v0
  474020:	8f998c48 	lw	t9,-29624(gp)
  474024:	00000000 	nop
  474028:	0320f809 	jalr	t9
  47402c:	00000000 	nop
  474030:	8fdc0010 	lw	gp,16(s8)
  474034:	00000000 	nop
  474038:	1000007a 	b	474224 <nat_traversal_natoa_lookup+0x5d0>
  47403c:	00000000 	nop
  474040:	8fc20018 	lw	v0,24(s8)
  474044:	00000000 	nop
  474048:	8c430014 	lw	v1,20(v0)
  47404c:	8fc20018 	lw	v0,24(s8)
  474050:	00000000 	nop
  474054:	8c420010 	lw	v0,16(v0)
  474058:	00000000 	nop
  47405c:	00621823 	subu	v1,v1,v0
  474060:	24020010 	li	v0,16
  474064:	14620016 	bne	v1,v0,4740c0 <nat_traversal_natoa_lookup+0x46c>
  474068:	00000000 	nop
  47406c:	8fc20018 	lw	v0,24(s8)
  474070:	00000000 	nop
  474074:	8c430014 	lw	v1,20(v0)
  474078:	8fc20018 	lw	v0,24(s8)
  47407c:	00000000 	nop
  474080:	8c420010 	lw	v0,16(v0)
  474084:	00000000 	nop
  474088:	00621823 	subu	v1,v1,v0
  47408c:	8fc20018 	lw	v0,24(s8)
  474090:	00000000 	nop
  474094:	8c440010 	lw	a0,16(v0)
  474098:	00602821 	move	a1,v1
  47409c:	2406000a 	li	a2,10
  4740a0:	27c70028 	addiu	a3,s8,40
  4740a4:	8f998b78 	lw	t9,-29832(gp)
  4740a8:	00000000 	nop
  4740ac:	0320f809 	jalr	t9
  4740b0:	00000000 	nop
  4740b4:	8fdc0010 	lw	gp,16(s8)
  4740b8:	10000016 	b	474114 <nat_traversal_natoa_lookup+0x4c0>
  4740bc:	00000000 	nop
  4740c0:	8fc20018 	lw	v0,24(s8)
  4740c4:	00000000 	nop
  4740c8:	8c430014 	lw	v1,20(v0)
  4740cc:	8fc20018 	lw	v0,24(s8)
  4740d0:	00000000 	nop
  4740d4:	8c420010 	lw	v0,16(v0)
  4740d8:	00000000 	nop
  4740dc:	00621023 	subu	v0,v1,v0
  4740e0:	24040003 	li	a0,3
  4740e4:	8f85802c 	lw	a1,-32724(gp)
  4740e8:	00000000 	nop
  4740ec:	24a566b4 	addiu	a1,a1,26292
  4740f0:	00403021 	move	a2,v0
  4740f4:	8f998c48 	lw	t9,-29624(gp)
  4740f8:	00000000 	nop
  4740fc:	0320f809 	jalr	t9
  474100:	00000000 	nop
  474104:	8fdc0010 	lw	gp,16(s8)
  474108:	00000000 	nop
  47410c:	10000045 	b	474224 <nat_traversal_natoa_lookup+0x5d0>
  474110:	00000000 	nop
			break;
	}

	DBG(DBG_NATT,
  474114:	8f8284f8 	lw	v0,-31496(gp)
  474118:	00000000 	nop
  47411c:	8c420000 	lw	v0,0(v0)
  474120:	00000000 	nop
  474124:	30420080 	andi	v0,v0,0x80
  474128:	10400015 	beqz	v0,474180 <nat_traversal_natoa_lookup+0x52c>
  47412c:	00000000 	nop
  474130:	27c40028 	addiu	a0,s8,40
  474134:	00002821 	move	a1,zero
  474138:	27c60048 	addiu	a2,s8,72
  47413c:	24070049 	li	a3,73
  474140:	8f998b50 	lw	t9,-29872(gp)
  474144:	00000000 	nop
  474148:	0320f809 	jalr	t9
  47414c:	00000000 	nop
  474150:	8fdc0010 	lw	gp,16(s8)
  474154:	00000000 	nop
  474158:	8f84802c 	lw	a0,-32724(gp)
  47415c:	00000000 	nop
  474160:	248466f4 	addiu	a0,a0,26356
  474164:	27c50048 	addiu	a1,s8,72
  474168:	8f9983b8 	lw	t9,-31816(gp)
  47416c:	00000000 	nop
  474170:	0320f809 	jalr	t9
  474174:	00000000 	nop
  474178:	8fdc0010 	lw	gp,16(s8)
  47417c:	00000000 	nop
		{
			char ip_t[ADDRTOT_BUF];
			addrtot(&ip, 0, ip_t, sizeof(ip_t));
			DBG_log("received NAT-OA: %s", ip_t);
		}
	);

	if (isanyaddr(&ip)) {
  474180:	27c40028 	addiu	a0,s8,40
  474184:	8f998628 	lw	t9,-31192(gp)
  474188:	00000000 	nop
  47418c:	0320f809 	jalr	t9
  474190:	00000000 	nop
  474194:	8fdc0010 	lw	gp,16(s8)
  474198:	1040000c 	beqz	v0,4741cc <nat_traversal_natoa_lookup+0x578>
  47419c:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "NAT-Traversal: received %%any NAT-OA...");
  4741a0:	24040003 	li	a0,3
  4741a4:	8f85802c 	lw	a1,-32724(gp)
  4741a8:	00000000 	nop
  4741ac:	24a56708 	addiu	a1,a1,26376
  4741b0:	8f998c48 	lw	t9,-29624(gp)
  4741b4:	00000000 	nop
  4741b8:	0320f809 	jalr	t9
  4741bc:	00000000 	nop
  4741c0:	8fdc0010 	lw	gp,16(s8)
  4741c4:	10000017 	b	474224 <nat_traversal_natoa_lookup+0x5d0>
  4741c8:	00000000 	nop
	}
	else {
		st->nat_oa = ip;
  4741cc:	8fc3001c 	lw	v1,28(s8)
  4741d0:	8fc20028 	lw	v0,40(s8)
  4741d4:	00000000 	nop
  4741d8:	ac620268 	sw	v0,616(v1)
  4741dc:	8fc2002c 	lw	v0,44(s8)
  4741e0:	00000000 	nop
  4741e4:	ac62026c 	sw	v0,620(v1)
  4741e8:	8fc20030 	lw	v0,48(s8)
  4741ec:	00000000 	nop
  4741f0:	ac620270 	sw	v0,624(v1)
  4741f4:	8fc20034 	lw	v0,52(s8)
  4741f8:	00000000 	nop
  4741fc:	ac620274 	sw	v0,628(v1)
  474200:	8fc20038 	lw	v0,56(s8)
  474204:	00000000 	nop
  474208:	ac620278 	sw	v0,632(v1)
  47420c:	8fc2003c 	lw	v0,60(s8)
  474210:	00000000 	nop
  474214:	ac62027c 	sw	v0,636(v1)
  474218:	8fc20040 	lw	v0,64(s8)
  47421c:	00000000 	nop
  474220:	ac620280 	sw	v0,640(v1)
	}
}
  474224:	03c0e821 	move	sp,s8
  474228:	8fbf00b0 	lw	ra,176(sp)
  47422c:	8fbe00ac 	lw	s8,172(sp)
  474230:	27bd00b8 	addiu	sp,sp,184
  474234:	03e00008 	jr	ra
  474238:	00000000 	nop

0047423c <nat_traversal_add_natoa>:
  47423c:	3c1c0fba 	lui	gp,0xfba
  474240:	279c8734 	addiu	gp,gp,-30924
  474244:	0399e021 	addu	gp,gp,t9
  474248:	27bdff88 	addiu	sp,sp,-120
  47424c:	afbc0010 	sw	gp,16(sp)
  474250:	afbf0070 	sw	ra,112(sp)
  474254:	afbe006c 	sw	s8,108(sp)
  474258:	afbc0068 	sw	gp,104(sp)
  47425c:	03a0f021 	move	s8,sp
  474260:	00801021 	move	v0,a0
  474264:	afc5007c 	sw	a1,124(s8)
  474268:	afc60080 	sw	a2,128(s8)
  47426c:	a3c20018 	sb	v0,24(s8)

bool nat_traversal_add_natoa(u_int8_t np, pb_stream *outs,
	struct state *st)
{
	struct isakmp_nat_oa natoa;
	pb_stream pbs;
	unsigned char ip_val[sizeof(struct in6_addr)];
	size_t ip_len = 0;
  474270:	afc00058 	sw	zero,88(s8)
	ip_address *ip;

	if ((!st) || (!st->st_connection)) {
  474274:	8fc20080 	lw	v0,128(s8)
  474278:	00000000 	nop
  47427c:	10400007 	beqz	v0,47429c <nat_traversal_add_natoa+0x60>
  474280:	00000000 	nop
  474284:	8fc20080 	lw	v0,128(s8)
  474288:	00000000 	nop
  47428c:	8c42000c 	lw	v0,12(v0)
  474290:	00000000 	nop
  474294:	14400012 	bnez	v0,4742e0 <nat_traversal_add_natoa+0xa4>
  474298:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "NAT-Traversal: assert failed %s:%d",
  47429c:	24040003 	li	a0,3
  4742a0:	8f85802c 	lw	a1,-32724(gp)
  4742a4:	00000000 	nop
  4742a8:	24a564b0 	addiu	a1,a1,25776
  4742ac:	8f86802c 	lw	a2,-32724(gp)
  4742b0:	00000000 	nop
  4742b4:	24c664d4 	addiu	a2,a2,25812
  4742b8:	240701ab 	li	a3,427
  4742bc:	8f998c48 	lw	t9,-29624(gp)
  4742c0:	00000000 	nop
  4742c4:	0320f809 	jalr	t9
  4742c8:	00000000 	nop
  4742cc:	8fdc0010 	lw	gp,16(s8)
  4742d0:	00000000 	nop
			__FILE__, __LINE__);
		return FALSE;
  4742d4:	00001021 	move	v0,zero
  4742d8:	100000ab 	b	474588 <nat_traversal_add_natoa+0x34c>
  4742dc:	00000000 	nop
	}
	ip = &(st->st_connection->this.host_addr);
  4742e0:	8fc20080 	lw	v0,128(s8)
  4742e4:	00000000 	nop
  4742e8:	8c42000c 	lw	v0,12(v0)
  4742ec:	00000000 	nop
  4742f0:	24420058 	addiu	v0,v0,88
  4742f4:	afc2005c 	sw	v0,92(s8)

	if (!out_modify_previous_np((st->nat_traversal & NAT_T_WITH_RFC_VALUES
		? ISAKMP_NEXT_NATOA_RFC : ISAKMP_NEXT_NATOA_DRAFTS), outs)) {
  4742f8:	8fc20080 	lw	v0,128(s8)
  4742fc:	00000000 	nop
  474300:	8c420264 	lw	v0,612(v0)
  474304:	00000000 	nop
  474308:	30420008 	andi	v0,v0,0x8
  47430c:	10400005 	beqz	v0,474324 <nat_traversal_add_natoa+0xe8>
  474310:	00000000 	nop
  474314:	24020010 	li	v0,16
  474318:	afc20060 	sw	v0,96(s8)
  47431c:	10000003 	b	47432c <nat_traversal_add_natoa+0xf0>
  474320:	00000000 	nop
  474324:	24030083 	li	v1,131
  474328:	afc30060 	sw	v1,96(s8)
  47432c:	8fc40060 	lw	a0,96(s8)
  474330:	8fc5007c 	lw	a1,124(s8)
  474334:	8f998808 	lw	t9,-30712(gp)
  474338:	00000000 	nop
  47433c:	0320f809 	jalr	t9
  474340:	00000000 	nop
  474344:	8fdc0010 	lw	gp,16(s8)
  474348:	14400004 	bnez	v0,47435c <nat_traversal_add_natoa+0x120>
  47434c:	00000000 	nop
		return FALSE;
  474350:	00001021 	move	v0,zero
  474354:	1000008c 	b	474588 <nat_traversal_add_natoa+0x34c>
  474358:	00000000 	nop
	}

	memset(&natoa, 0, sizeof(natoa));
  47435c:	27c40020 	addiu	a0,s8,32
  474360:	00002821 	move	a1,zero
  474364:	24060008 	li	a2,8
  474368:	8f998500 	lw	t9,-31488(gp)
  47436c:	00000000 	nop
  474370:	0320f809 	jalr	t9
  474374:	00000000 	nop
  474378:	8fdc0010 	lw	gp,16(s8)
  47437c:	00000000 	nop
	natoa.isanoa_np = np;
  474380:	93c20018 	lbu	v0,24(s8)
  474384:	00000000 	nop
  474388:	a3c20020 	sb	v0,32(s8)

	switch (addrtypeof(ip)) {
  47438c:	8fc4005c 	lw	a0,92(s8)
  474390:	8f9985d4 	lw	t9,-31276(gp)
  474394:	00000000 	nop
  474398:	0320f809 	jalr	t9
  47439c:	00000000 	nop
  4743a0:	8fdc0010 	lw	gp,16(s8)
  4743a4:	afc20064 	sw	v0,100(s8)
  4743a8:	24020002 	li	v0,2
  4743ac:	8fc30064 	lw	v1,100(s8)
  4743b0:	00000000 	nop
  4743b4:	1062001a 	beq	v1,v0,474420 <nat_traversal_add_natoa+0x1e4>
  4743b8:	00000000 	nop
  4743bc:	2402000a 	li	v0,10
  4743c0:	8fc30064 	lw	v1,100(s8)
  4743c4:	00000000 	nop
  4743c8:	10620027 	beq	v1,v0,474468 <nat_traversal_add_natoa+0x22c>
  4743cc:	00000000 	nop
		case AF_INET:
			ip_len = sizeof(ip->u.v4.sin_addr.s_addr);
			memcpy(ip_val, &ip->u.v4.sin_addr.s_addr, ip_len);
			natoa.isanoa_idtype = ID_IPV4_ADDR;
			break;
		case AF_INET6:
			ip_len = sizeof(ip->u.v6.sin6_addr.s6_addr);
			memcpy(ip_val, &ip->u.v6.sin6_addr.s6_addr, ip_len);
			natoa.isanoa_idtype = ID_IPV6_ADDR;
			break;
		default:
			loglog(RC_LOG_SERIOUS, "NAT-Traversal: "
  4743d0:	8fc4005c 	lw	a0,92(s8)
  4743d4:	8f9985d4 	lw	t9,-31276(gp)
  4743d8:	00000000 	nop
  4743dc:	0320f809 	jalr	t9
  4743e0:	00000000 	nop
  4743e4:	8fdc0010 	lw	gp,16(s8)
  4743e8:	24040003 	li	a0,3
  4743ec:	8f85802c 	lw	a1,-32724(gp)
  4743f0:	00000000 	nop
  4743f4:	24a56730 	addiu	a1,a1,26416
  4743f8:	00403021 	move	a2,v0
  4743fc:	8f998c48 	lw	t9,-29624(gp)
  474400:	00000000 	nop
  474404:	0320f809 	jalr	t9
  474408:	00000000 	nop
  47440c:	8fdc0010 	lw	gp,16(s8)
  474410:	00000000 	nop
				"invalid addrtypeof()=%d", addrtypeof(ip));
			return FALSE;
  474414:	00001021 	move	v0,zero
  474418:	1000005b 	b	474588 <nat_traversal_add_natoa+0x34c>
  47441c:	00000000 	nop
  474420:	24020004 	li	v0,4
  474424:	afc20058 	sw	v0,88(s8)
  474428:	8fc2005c 	lw	v0,92(s8)
  47442c:	00000000 	nop
  474430:	24420004 	addiu	v0,v0,4
  474434:	27c40048 	addiu	a0,s8,72
  474438:	00402821 	move	a1,v0
  47443c:	8fc60058 	lw	a2,88(s8)
  474440:	8f998a30 	lw	t9,-30160(gp)
  474444:	00000000 	nop
  474448:	0320f809 	jalr	t9
  47444c:	00000000 	nop
  474450:	8fdc0010 	lw	gp,16(s8)
  474454:	00000000 	nop
  474458:	24020001 	li	v0,1
  47445c:	a3c20024 	sb	v0,36(s8)
  474460:	10000011 	b	4744a8 <nat_traversal_add_natoa+0x26c>
  474464:	00000000 	nop
  474468:	24020010 	li	v0,16
  47446c:	afc20058 	sw	v0,88(s8)
  474470:	8fc2005c 	lw	v0,92(s8)
  474474:	00000000 	nop
  474478:	24420008 	addiu	v0,v0,8
  47447c:	27c40048 	addiu	a0,s8,72
  474480:	00402821 	move	a1,v0
  474484:	8fc60058 	lw	a2,88(s8)
  474488:	8f998a30 	lw	t9,-30160(gp)
  47448c:	00000000 	nop
  474490:	0320f809 	jalr	t9
  474494:	00000000 	nop
  474498:	8fdc0010 	lw	gp,16(s8)
  47449c:	00000000 	nop
  4744a0:	24020005 	li	v0,5
  4744a4:	a3c20024 	sb	v0,36(s8)
	}

	if (!out_struct(&natoa, &isakmp_nat_oa, outs, &pbs))
  4744a8:	27c40020 	addiu	a0,s8,32
  4744ac:	8f858164 	lw	a1,-32412(gp)
  4744b0:	8fc6007c 	lw	a2,124(s8)
  4744b4:	27c70028 	addiu	a3,s8,40
  4744b8:	8f998ba0 	lw	t9,-29792(gp)
  4744bc:	00000000 	nop
  4744c0:	0320f809 	jalr	t9
  4744c4:	00000000 	nop
  4744c8:	8fdc0010 	lw	gp,16(s8)
  4744cc:	14400004 	bnez	v0,4744e0 <nat_traversal_add_natoa+0x2a4>
  4744d0:	00000000 	nop
		return FALSE;
  4744d4:	00001021 	move	v0,zero
  4744d8:	1000002b 	b	474588 <nat_traversal_add_natoa+0x34c>
  4744dc:	00000000 	nop

	if (!out_raw(ip_val, ip_len, &pbs, "NAT-OA"))
  4744e0:	27c40048 	addiu	a0,s8,72
  4744e4:	8fc50058 	lw	a1,88(s8)
  4744e8:	27c60028 	addiu	a2,s8,40
  4744ec:	8f87802c 	lw	a3,-32724(gp)
  4744f0:	00000000 	nop
  4744f4:	24e76758 	addiu	a3,a3,26456
  4744f8:	8f998308 	lw	t9,-31992(gp)
  4744fc:	00000000 	nop
  474500:	0320f809 	jalr	t9
  474504:	00000000 	nop
  474508:	8fdc0010 	lw	gp,16(s8)
  47450c:	14400004 	bnez	v0,474520 <nat_traversal_add_natoa+0x2e4>
  474510:	00000000 	nop
		return FALSE;
  474514:	00001021 	move	v0,zero
  474518:	1000001b 	b	474588 <nat_traversal_add_natoa+0x34c>
  47451c:	00000000 	nop

	DBG(DBG_NATT,
  474520:	8f8284f8 	lw	v0,-31496(gp)
  474524:	00000000 	nop
  474528:	8c420000 	lw	v0,0(v0)
  47452c:	00000000 	nop
  474530:	30420080 	andi	v0,v0,0x80
  474534:	1040000c 	beqz	v0,474568 <nat_traversal_add_natoa+0x32c>
  474538:	00000000 	nop
  47453c:	8f84802c 	lw	a0,-32724(gp)
  474540:	00000000 	nop
  474544:	24846760 	addiu	a0,a0,26464
  474548:	27c50048 	addiu	a1,s8,72
  47454c:	8fc60058 	lw	a2,88(s8)
  474550:	8f9984ec 	lw	t9,-31508(gp)
  474554:	00000000 	nop
  474558:	0320f809 	jalr	t9
  47455c:	00000000 	nop
  474560:	8fdc0010 	lw	gp,16(s8)
  474564:	00000000 	nop
		DBG_dump("NAT-OA (S):", ip_val, ip_len);
	);

	close_output_pbs(&pbs);
  474568:	27c40028 	addiu	a0,s8,40
  47456c:	8f998228 	lw	t9,-32216(gp)
  474570:	00000000 	nop
  474574:	0320f809 	jalr	t9
  474578:	00000000 	nop
  47457c:	8fdc0010 	lw	gp,16(s8)
  474580:	00000000 	nop
	return TRUE;
  474584:	24020001 	li	v0,1
}
  474588:	03c0e821 	move	sp,s8
  47458c:	8fbf0070 	lw	ra,112(sp)
  474590:	8fbe006c 	lw	s8,108(sp)
  474594:	27bd0078 	addiu	sp,sp,120
  474598:	03e00008 	jr	ra
  47459c:	00000000 	nop

004745a0 <nat_traversal_show_result>:
  4745a0:	3c1c0fba 	lui	gp,0xfba
  4745a4:	279c83d0 	addiu	gp,gp,-31792
  4745a8:	0399e021 	addu	gp,gp,t9
  4745ac:	27bdffb8 	addiu	sp,sp,-72
  4745b0:	afbc0010 	sw	gp,16(sp)
  4745b4:	afbf0040 	sw	ra,64(sp)
  4745b8:	afbe003c 	sw	s8,60(sp)
  4745bc:	afbc0038 	sw	gp,56(sp)
  4745c0:	03a0f021 	move	s8,sp
  4745c4:	afc40048 	sw	a0,72(s8)
  4745c8:	00a01021 	move	v0,a1
  4745cc:	a7c20018 	sh	v0,24(s8)

void nat_traversal_show_result (u_int32_t nt, u_int16_t sport)
{
	const char *mth = NULL, *rslt = NULL;
  4745d0:	afc0001c 	sw	zero,28(s8)
  4745d4:	afc00020 	sw	zero,32(s8)
	switch (nt & NAT_TRAVERSAL_METHOD) {
  4745d8:	8fc30048 	lw	v1,72(s8)
  4745dc:	3c023fff 	lui	v0,0x3fff
  4745e0:	3442ffff 	ori	v0,v0,0xffff
  4745e4:	00621824 	and	v1,v1,v0
  4745e8:	afc30024 	sw	v1,36(s8)
  4745ec:	24020004 	li	v0,4
  4745f0:	8fc30024 	lw	v1,36(s8)
  4745f4:	00000000 	nop
  4745f8:	1062001c 	beq	v1,v0,47466c <nat_traversal_show_result+0xcc>
  4745fc:	00000000 	nop
  474600:	8fc30024 	lw	v1,36(s8)
  474604:	00000000 	nop
  474608:	2c620005 	sltiu	v0,v1,5
  47460c:	10400008 	beqz	v0,474630 <nat_traversal_show_result+0x90>
  474610:	00000000 	nop
  474614:	24020002 	li	v0,2
  474618:	8fc30024 	lw	v1,36(s8)
  47461c:	00000000 	nop
  474620:	1062000a 	beq	v1,v0,47464c <nat_traversal_show_result+0xac>
  474624:	00000000 	nop
  474628:	1000001e 	b	4746a4 <nat_traversal_show_result+0x104>
  47462c:	00000000 	nop
  474630:	24020008 	li	v0,8
  474634:	8fc30024 	lw	v1,36(s8)
  474638:	00000000 	nop
  47463c:	10620013 	beq	v1,v0,47468c <nat_traversal_show_result+0xec>
  474640:	00000000 	nop
  474644:	10000017 	b	4746a4 <nat_traversal_show_result+0x104>
  474648:	00000000 	nop
		case LELEM(NAT_TRAVERSAL_IETF_00_01):
			mth = natt_methods[0];
  47464c:	8f828018 	lw	v0,-32744(gp)
  474650:	00000000 	nop
  474654:	24423f88 	addiu	v0,v0,16264
  474658:	8c420000 	lw	v0,0(v0)
  47465c:	00000000 	nop
  474660:	afc2001c 	sw	v0,28(s8)
			break;
  474664:	1000000f 	b	4746a4 <nat_traversal_show_result+0x104>
  474668:	00000000 	nop
		case LELEM(NAT_TRAVERSAL_IETF_02_03):
			mth = natt_methods[1];
  47466c:	8f828018 	lw	v0,-32744(gp)
  474670:	00000000 	nop
  474674:	24423f88 	addiu	v0,v0,16264
  474678:	8c420004 	lw	v0,4(v0)
  47467c:	00000000 	nop
  474680:	afc2001c 	sw	v0,28(s8)
			break;
  474684:	10000007 	b	4746a4 <nat_traversal_show_result+0x104>
  474688:	00000000 	nop
		case LELEM(NAT_TRAVERSAL_RFC):
			mth = natt_methods[2];
  47468c:	8f828018 	lw	v0,-32744(gp)
  474690:	00000000 	nop
  474694:	24423f88 	addiu	v0,v0,16264
  474698:	8c420008 	lw	v0,8(v0)
  47469c:	00000000 	nop
  4746a0:	afc2001c 	sw	v0,28(s8)
			break;
	}
	switch (nt & NAT_T_DETECTED) {
  4746a4:	8fc20048 	lw	v0,72(s8)
  4746a8:	3c03c000 	lui	v1,0xc000
  4746ac:	00431024 	and	v0,v0,v1
  4746b0:	afc20028 	sw	v0,40(s8)
  4746b4:	3c024000 	lui	v0,0x4000
  4746b8:	8fc30028 	lw	v1,40(s8)
  4746bc:	00000000 	nop
  4746c0:	1062001f 	beq	v1,v0,474740 <nat_traversal_show_result+0x1a0>
  4746c4:	00000000 	nop
  4746c8:	8fc30028 	lw	v1,40(s8)
  4746cc:	00000000 	nop
  4746d0:	0043102b 	sltu	v0,v0,v1
  4746d4:	14400007 	bnez	v0,4746f4 <nat_traversal_show_result+0x154>
  4746d8:	00000000 	nop
  4746dc:	8fc20028 	lw	v0,40(s8)
  4746e0:	00000000 	nop
  4746e4:	1040000f 	beqz	v0,474724 <nat_traversal_show_result+0x184>
  4746e8:	00000000 	nop
  4746ec:	10000027 	b	47478c <nat_traversal_show_result+0x1ec>
  4746f0:	00000000 	nop
  4746f4:	3c028000 	lui	v0,0x8000
  4746f8:	8fc30028 	lw	v1,40(s8)
  4746fc:	00000000 	nop
  474700:	10620016 	beq	v1,v0,47475c <nat_traversal_show_result+0x1bc>
  474704:	00000000 	nop
  474708:	3c02c000 	lui	v0,0xc000
  47470c:	8fc30028 	lw	v1,40(s8)
  474710:	00000000 	nop
  474714:	10620018 	beq	v1,v0,474778 <nat_traversal_show_result+0x1d8>
  474718:	00000000 	nop
  47471c:	1000001b 	b	47478c <nat_traversal_show_result+0x1ec>
  474720:	00000000 	nop
		case 0:
			rslt = "no NAT detected";
  474724:	8f82802c 	lw	v0,-32724(gp)
  474728:	00000000 	nop
  47472c:	2442676c 	addiu	v0,v0,26476
  474730:	00000000 	nop
  474734:	afc20020 	sw	v0,32(s8)
			break;
  474738:	10000014 	b	47478c <nat_traversal_show_result+0x1ec>
  47473c:	00000000 	nop
		case LELEM(NAT_TRAVERSAL_NAT_BHND_ME):
			rslt = "i am NATed";
  474740:	8f82802c 	lw	v0,-32724(gp)
  474744:	00000000 	nop
  474748:	2442677c 	addiu	v0,v0,26492
  47474c:	00000000 	nop
  474750:	afc20020 	sw	v0,32(s8)
			break;
  474754:	1000000d 	b	47478c <nat_traversal_show_result+0x1ec>
  474758:	00000000 	nop
		case LELEM(NAT_TRAVERSAL_NAT_BHND_PEER):
			rslt = "peer is NATed";
  47475c:	8f82802c 	lw	v0,-32724(gp)
  474760:	00000000 	nop
  474764:	24426788 	addiu	v0,v0,26504
  474768:	00000000 	nop
  47476c:	afc20020 	sw	v0,32(s8)
			break;
  474770:	10000006 	b	47478c <nat_traversal_show_result+0x1ec>
  474774:	00000000 	nop
		case LELEM(NAT_TRAVERSAL_NAT_BHND_ME) | LELEM(NAT_TRAVERSAL_NAT_BHND_PEER):
			rslt = "both are NATed";
  474778:	8f82802c 	lw	v0,-32724(gp)
  47477c:	00000000 	nop
  474780:	24426798 	addiu	v0,v0,26520
  474784:	00000000 	nop
  474788:	afc20020 	sw	v0,32(s8)
			break;
	}
	loglog(RC_LOG_SERIOUS,
  47478c:	8fc2001c 	lw	v0,28(s8)
  474790:	00000000 	nop
  474794:	afc2002c 	sw	v0,44(s8)
  474798:	8fc2001c 	lw	v0,28(s8)
  47479c:	00000000 	nop
  4747a0:	14400006 	bnez	v0,4747bc <nat_traversal_show_result+0x21c>
  4747a4:	00000000 	nop
  4747a8:	8f83802c 	lw	v1,-32724(gp)
  4747ac:	00000000 	nop
  4747b0:	246367a8 	addiu	v1,v1,26536
  4747b4:	00000000 	nop
  4747b8:	afc3002c 	sw	v1,44(s8)
  4747bc:	8fc20020 	lw	v0,32(s8)
  4747c0:	00000000 	nop
  4747c4:	afc20030 	sw	v0,48(s8)
  4747c8:	8fc20020 	lw	v0,32(s8)
  4747cc:	00000000 	nop
  4747d0:	14400006 	bnez	v0,4747ec <nat_traversal_show_result+0x24c>
  4747d4:	00000000 	nop
  4747d8:	8f83802c 	lw	v1,-32724(gp)
  4747dc:	00000000 	nop
  4747e0:	246367b8 	addiu	v1,v1,26552
  4747e4:	00000000 	nop
  4747e8:	afc30030 	sw	v1,48(s8)
  4747ec:	24040003 	li	a0,3
  4747f0:	8f85802c 	lw	a1,-32724(gp)
  4747f4:	00000000 	nop
  4747f8:	24a567c8 	addiu	a1,a1,26568
  4747fc:	8fc6002c 	lw	a2,44(s8)
  474800:	8fc70030 	lw	a3,48(s8)
  474804:	8f998c48 	lw	t9,-29624(gp)
  474808:	00000000 	nop
  47480c:	0320f809 	jalr	t9
  474810:	00000000 	nop
  474814:	8fdc0010 	lw	gp,16(s8)
  474818:	00000000 	nop
		"NAT-Traversal: Result using %s: %s",
		mth ? mth : "unknown method",
		rslt ? rslt : "unknown result"
		);
	if ((nt & LELEM(NAT_TRAVERSAL_NAT_BHND_PEER)) &&
		(sport == IKE_UDP_PORT) &&
		((nt & NAT_T_WITH_PORT_FLOATING)==0)) {
  47481c:	8fc20048 	lw	v0,72(s8)
  474820:	3c038000 	lui	v1,0x8000
  474824:	00431024 	and	v0,v0,v1
  474828:	10400015 	beqz	v0,474880 <nat_traversal_show_result+0x2e0>
  47482c:	00000000 	nop
  474830:	97c30018 	lhu	v1,24(s8)
  474834:	240201f4 	li	v0,500
  474838:	14620011 	bne	v1,v0,474880 <nat_traversal_show_result+0x2e0>
  47483c:	00000000 	nop
  474840:	8fc20048 	lw	v0,72(s8)
  474844:	00000000 	nop
  474848:	3042000c 	andi	v0,v0,0xc
  47484c:	1440000c 	bnez	v0,474880 <nat_traversal_show_result+0x2e0>
  474850:	00000000 	nop
		loglog(RC_LOG_SERIOUS,
  474854:	24040003 	li	a0,3
  474858:	8f85802c 	lw	a1,-32724(gp)
  47485c:	00000000 	nop
  474860:	24a567ec 	addiu	a1,a1,26604
  474864:	240601f4 	li	a2,500
  474868:	8f998c48 	lw	t9,-29624(gp)
  47486c:	00000000 	nop
  474870:	0320f809 	jalr	t9
  474874:	00000000 	nop
  474878:	8fdc0010 	lw	gp,16(s8)
  47487c:	00000000 	nop
			"Warning: peer is NATed but source port is still udp/%d. "
			"Ipsec-passthrough NAT device suspected -- NAT-T may not work.",
			IKE_UDP_PORT
		);
	}
}
  474880:	03c0e821 	move	sp,s8
  474884:	8fbf0040 	lw	ra,64(sp)
  474888:	8fbe003c 	lw	s8,60(sp)
  47488c:	27bd0048 	addiu	sp,sp,72
  474890:	03e00008 	jr	ra
  474894:	00000000 	nop

00474898 <nat_traversal_espinudp_socket>:
  474898:	3c1c0fba 	lui	gp,0xfba
  47489c:	279c80d8 	addiu	gp,gp,-32552
  4748a0:	0399e021 	addu	gp,gp,t9
  4748a4:	27bdffc8 	addiu	sp,sp,-56
  4748a8:	afbc0018 	sw	gp,24(sp)
  4748ac:	afbf0030 	sw	ra,48(sp)
  4748b0:	afbe002c 	sw	s8,44(sp)
  4748b4:	afbc0028 	sw	gp,40(sp)
  4748b8:	03a0f021 	move	s8,sp
  4748bc:	afc40038 	sw	a0,56(s8)
  4748c0:	afc5003c 	sw	a1,60(s8)

int nat_traversal_espinudp_socket (int sk, u_int32_t type)
{
	int r;
	r = setsockopt(sk, SOL_UDP, UDP_ESPINUDP, &type, sizeof(type));
  4748c4:	24020004 	li	v0,4
  4748c8:	afa20010 	sw	v0,16(sp)
  4748cc:	8fc40038 	lw	a0,56(s8)
  4748d0:	24050011 	li	a1,17
  4748d4:	24060064 	li	a2,100
  4748d8:	27c7003c 	addiu	a3,s8,60
  4748dc:	8f99871c 	lw	t9,-30948(gp)
  4748e0:	00000000 	nop
  4748e4:	0320f809 	jalr	t9
  4748e8:	00000000 	nop
  4748ec:	8fdc0018 	lw	gp,24(s8)
  4748f0:	afc20020 	sw	v0,32(s8)
	if ((r<0) && (errno == ENOPROTOOPT)) {
  4748f4:	8fc20020 	lw	v0,32(s8)
  4748f8:	00000000 	nop
  4748fc:	0441001d 	bgez	v0,474974 <nat_traversal_espinudp_socket+0xdc>
  474900:	00000000 	nop
  474904:	8f998234 	lw	t9,-32204(gp)
  474908:	00000000 	nop
  47490c:	0320f809 	jalr	t9
  474910:	00000000 	nop
  474914:	8fdc0018 	lw	gp,24(s8)
  474918:	8c430000 	lw	v1,0(v0)
  47491c:	24020063 	li	v0,99
  474920:	14620014 	bne	v1,v0,474974 <nat_traversal_espinudp_socket+0xdc>
  474924:	00000000 	nop
		loglog(RC_LOG_SERIOUS,
  474928:	24040003 	li	a0,3
  47492c:	8f85802c 	lw	a1,-32724(gp)
  474930:	00000000 	nop
  474934:	24a56864 	addiu	a1,a1,26724
  474938:	8fc6003c 	lw	a2,60(s8)
  47493c:	8f998c48 	lw	t9,-29624(gp)
  474940:	00000000 	nop
  474944:	0320f809 	jalr	t9
  474948:	00000000 	nop
  47494c:	8fdc0018 	lw	gp,24(s8)
  474950:	00000000 	nop
			"NAT-Traversal: ESPINUDP(%d) not supported by kernel -- "
			"NAT-T disabled", type);
		disable_nat_traversal();
  474954:	8f998040 	lw	t9,-32704(gp)
  474958:	00000000 	nop
  47495c:	27392c60 	addiu	t9,t9,11360
  474960:	00000000 	nop
  474964:	0320f809 	jalr	t9
  474968:	00000000 	nop
  47496c:	8fdc0018 	lw	gp,24(s8)
  474970:	00000000 	nop
	}
	return r;
  474974:	8fc20020 	lw	v0,32(s8)
  474978:	00000000 	nop
}
  47497c:	03c0e821 	move	sp,s8
  474980:	8fbf0030 	lw	ra,48(sp)
  474984:	8fbe002c 	lw	s8,44(sp)
  474988:	27bd0038 	addiu	sp,sp,56
  47498c:	03e00008 	jr	ra
  474990:	00000000 	nop

00474994 <nat_traversal_new_ka_event>:
  474994:	3c1c0fb9 	lui	gp,0xfb9
  474998:	279c7fdc 	addiu	gp,gp,32732
  47499c:	0399e021 	addu	gp,gp,t9
  4749a0:	27bdffd8 	addiu	sp,sp,-40
  4749a4:	afbc0010 	sw	gp,16(sp)
  4749a8:	afbf0020 	sw	ra,32(sp)
  4749ac:	afbe001c 	sw	s8,28(sp)
  4749b0:	afbc0018 	sw	gp,24(sp)
  4749b4:	03a0f021 	move	s8,sp

void nat_traversal_new_ka_event (void)
{
	if (_ka_evt) return;  /* Event already schedule */
  4749b8:	8f828018 	lw	v0,-32744(gp)
  4749bc:	00000000 	nop
  4749c0:	24423f7c 	addiu	v0,v0,16252
  4749c4:	8c420000 	lw	v0,0(v0)
  4749c8:	00000000 	nop
  4749cc:	10400003 	beqz	v0,4749dc <nat_traversal_new_ka_event+0x48>
  4749d0:	00000000 	nop
  4749d4:	10000012 	b	474a20 <nat_traversal_new_ka_event+0x8c>
  4749d8:	00000000 	nop
	event_schedule(EVENT_NAT_T_KEEPALIVE, _kap, NULL);
  4749dc:	24040007 	li	a0,7
  4749e0:	8f858018 	lw	a1,-32744(gp)
  4749e4:	00000000 	nop
  4749e8:	24a53f78 	addiu	a1,a1,16248
  4749ec:	8ca50000 	lw	a1,0(a1)
  4749f0:	00003021 	move	a2,zero
  4749f4:	8f998410 	lw	t9,-31728(gp)
  4749f8:	00000000 	nop
  4749fc:	0320f809 	jalr	t9
  474a00:	00000000 	nop
  474a04:	8fdc0010 	lw	gp,16(s8)
  474a08:	00000000 	nop
	_ka_evt = 1;
  474a0c:	24020001 	li	v0,1
  474a10:	8f818018 	lw	at,-32744(gp)
  474a14:	00000000 	nop
  474a18:	24213f7c 	addiu	at,at,16252
  474a1c:	ac220000 	sw	v0,0(at)
}
  474a20:	03c0e821 	move	sp,s8
  474a24:	8fbf0020 	lw	ra,32(sp)
  474a28:	8fbe001c 	lw	s8,28(sp)
  474a2c:	27bd0028 	addiu	sp,sp,40
  474a30:	03e00008 	jr	ra
  474a34:	00000000 	nop

00474a38 <nat_traversal_send_ka>:
  474a38:	3c1c0fb9 	lui	gp,0xfb9
  474a3c:	279c7f38 	addiu	gp,gp,32568
  474a40:	0399e021 	addu	gp,gp,t9
  474a44:	27bdffd0 	addiu	sp,sp,-48
  474a48:	afbc0010 	sw	gp,16(sp)
  474a4c:	afbf0028 	sw	ra,40(sp)
  474a50:	afbe0024 	sw	s8,36(sp)
  474a54:	afbc0020 	sw	gp,32(sp)
  474a58:	03a0f021 	move	s8,sp
  474a5c:	afc40030 	sw	a0,48(s8)

static void nat_traversal_send_ka (struct state *st)
{
	static unsigned char ka_payload = 0xff;
	chunk_t sav;

	DBG(DBG_NATT,
  474a60:	8f8284f8 	lw	v0,-31496(gp)
  474a64:	00000000 	nop
  474a68:	8c420000 	lw	v0,0(v0)
  474a6c:	00000000 	nop
  474a70:	30420080 	andi	v0,v0,0x80
  474a74:	1040001d 	beqz	v0,474aec <nat_traversal_send_ka+0xb4>
  474a78:	00000000 	nop
  474a7c:	8fc20030 	lw	v0,48(s8)
  474a80:	00000000 	nop
  474a84:	8c42000c 	lw	v0,12(v0)
  474a88:	00000000 	nop
  474a8c:	24420108 	addiu	v0,v0,264
  474a90:	00402021 	move	a0,v0
  474a94:	8f998100 	lw	t9,-32512(gp)
  474a98:	00000000 	nop
  474a9c:	0320f809 	jalr	t9
  474aa0:	00000000 	nop
  474aa4:	8fdc0010 	lw	gp,16(s8)
  474aa8:	00401821 	move	v1,v0
  474aac:	8fc20030 	lw	v0,48(s8)
  474ab0:	00000000 	nop
  474ab4:	8c42000c 	lw	v0,12(v0)
  474ab8:	00000000 	nop
  474abc:	94420178 	lhu	v0,376(v0)
  474ac0:	8f84802c 	lw	a0,-32724(gp)
  474ac4:	00000000 	nop
  474ac8:	248468ac 	addiu	a0,a0,26796
  474acc:	00602821 	move	a1,v1
  474ad0:	00403021 	move	a2,v0
  474ad4:	8f9983b8 	lw	t9,-31816(gp)
  474ad8:	00000000 	nop
  474adc:	0320f809 	jalr	t9
  474ae0:	00000000 	nop
  474ae4:	8fdc0010 	lw	gp,16(s8)
  474ae8:	00000000 	nop
		DBG_log("ka_event: send NAT-KA to %s:%d",
			ip_str(&st->st_connection->that.host_addr),
			st->st_connection->that.host_port);
	);

	/** save state chunk */
	setchunk(sav, st->st_tpacket.ptr, st->st_tpacket.len);
  474aec:	8fc20030 	lw	v0,48(s8)
  474af0:	00000000 	nop
  474af4:	8c420118 	lw	v0,280(v0)
  474af8:	00000000 	nop
  474afc:	afc20018 	sw	v0,24(s8)
  474b00:	8fc20030 	lw	v0,48(s8)
  474b04:	00000000 	nop
  474b08:	8c42011c 	lw	v0,284(v0)
  474b0c:	00000000 	nop
  474b10:	afc2001c 	sw	v0,28(s8)

	/** send keep alive */
	setchunk(st->st_tpacket, &ka_payload, 1);
  474b14:	8f838018 	lw	v1,-32744(gp)
  474b18:	00000000 	nop
  474b1c:	24633f94 	addiu	v1,v1,16276
  474b20:	8fc20030 	lw	v0,48(s8)
  474b24:	00000000 	nop
  474b28:	ac430118 	sw	v1,280(v0)
  474b2c:	24030001 	li	v1,1
  474b30:	8fc20030 	lw	v0,48(s8)
  474b34:	00000000 	nop
  474b38:	ac43011c 	sw	v1,284(v0)
	_send_packet(st, "NAT-T Keep Alive", FALSE);
  474b3c:	8fc40030 	lw	a0,48(s8)
  474b40:	8f85802c 	lw	a1,-32724(gp)
  474b44:	00000000 	nop
  474b48:	24a568cc 	addiu	a1,a1,26828
  474b4c:	00003021 	move	a2,zero
  474b50:	8f9987f0 	lw	t9,-30736(gp)
  474b54:	00000000 	nop
  474b58:	0320f809 	jalr	t9
  474b5c:	00000000 	nop
  474b60:	8fdc0010 	lw	gp,16(s8)
  474b64:	00000000 	nop

	/** restore state chunk */
	setchunk(st->st_tpacket, sav.ptr, sav.len);
  474b68:	8fc30018 	lw	v1,24(s8)
  474b6c:	8fc20030 	lw	v0,48(s8)
  474b70:	00000000 	nop
  474b74:	ac430118 	sw	v1,280(v0)
  474b78:	8fc3001c 	lw	v1,28(s8)
  474b7c:	8fc20030 	lw	v0,48(s8)
  474b80:	00000000 	nop
  474b84:	ac43011c 	sw	v1,284(v0)
}
  474b88:	03c0e821 	move	sp,s8
  474b8c:	8fbf0028 	lw	ra,40(sp)
  474b90:	8fbe0024 	lw	s8,36(sp)
  474b94:	27bd0030 	addiu	sp,sp,48
  474b98:	03e00008 	jr	ra
  474b9c:	00000000 	nop

00474ba0 <nat_traversal_ka_event_state>:
  474ba0:	3c1c0fb9 	lui	gp,0xfb9
  474ba4:	279c7dd0 	addiu	gp,gp,32208
  474ba8:	0399e021 	addu	gp,gp,t9
  474bac:	27bdffc8 	addiu	sp,sp,-56
  474bb0:	afbc0010 	sw	gp,16(sp)
  474bb4:	afbf0030 	sw	ra,48(sp)
  474bb8:	afbe002c 	sw	s8,44(sp)
  474bbc:	afbc0028 	sw	gp,40(sp)
  474bc0:	03a0f021 	move	s8,sp
  474bc4:	afc40038 	sw	a0,56(s8)
  474bc8:	afc5003c 	sw	a1,60(s8)

/**
 * Find ISAKMP States with NAT-T and send keep-alive
 */
static void nat_traversal_ka_event_state (struct state *st, void *data)
{
	unsigned int *_kap_st = (unsigned int *)data;
  474bcc:	8fc2003c 	lw	v0,60(s8)
  474bd0:	00000000 	nop
  474bd4:	afc20018 	sw	v0,24(s8)
	const struct connection *c = st->st_connection;
  474bd8:	8fc20038 	lw	v0,56(s8)
  474bdc:	00000000 	nop
  474be0:	8c42000c 	lw	v0,12(v0)
  474be4:	00000000 	nop
  474be8:	afc2001c 	sw	v0,28(s8)
	if (!c) return;
  474bec:	8fc2001c 	lw	v0,28(s8)
  474bf0:	00000000 	nop
  474bf4:	14400003 	bnez	v0,474c04 <nat_traversal_ka_event_state+0x64>
  474bf8:	00000000 	nop
  474bfc:	10000092 	b	474e48 <nat_traversal_ka_event_state+0x2a8>
  474c00:	00000000 	nop
	if ( ((st->st_state == STATE_MAIN_R3) ||
			(st->st_state == STATE_MAIN_I4) ||
			(st->st_state == STATE_AGGR_R2) ||
			(st->st_state == STATE_AGGR_I2)) &&
		(st->nat_traversal & NAT_T_DETECTED) &&
		((st->nat_traversal & LELEM(NAT_TRAVERSAL_NAT_BHND_ME)) || (_force_ka))
		) {
  474c04:	8fc20038 	lw	v0,56(s8)
  474c08:	00000000 	nop
  474c0c:	8c43014c 	lw	v1,332(v0)
  474c10:	24020009 	li	v0,9
  474c14:	10620015 	beq	v1,v0,474c6c <nat_traversal_ka_event_state+0xcc>
  474c18:	00000000 	nop
  474c1c:	8fc20038 	lw	v0,56(s8)
  474c20:	00000000 	nop
  474c24:	8c43014c 	lw	v1,332(v0)
  474c28:	2402000a 	li	v0,10
  474c2c:	1062000f 	beq	v1,v0,474c6c <nat_traversal_ka_event_state+0xcc>
  474c30:	00000000 	nop
  474c34:	8fc20038 	lw	v0,56(s8)
  474c38:	00000000 	nop
  474c3c:	8c43014c 	lw	v1,332(v0)
  474c40:	2402000f 	li	v0,15
  474c44:	10620009 	beq	v1,v0,474c6c <nat_traversal_ka_event_state+0xcc>
  474c48:	00000000 	nop
  474c4c:	8fc20038 	lw	v0,56(s8)
  474c50:	00000000 	nop
  474c54:	8c43014c 	lw	v1,332(v0)
  474c58:	2402000e 	li	v0,14
  474c5c:	10620003 	beq	v1,v0,474c6c <nat_traversal_ka_event_state+0xcc>
  474c60:	00000000 	nop
  474c64:	10000078 	b	474e48 <nat_traversal_ka_event_state+0x2a8>
  474c68:	00000000 	nop
  474c6c:	8fc20038 	lw	v0,56(s8)
  474c70:	00000000 	nop
  474c74:	8c430264 	lw	v1,612(v0)
  474c78:	3c02c000 	lui	v0,0xc000
  474c7c:	00621024 	and	v0,v1,v0
  474c80:	10400071 	beqz	v0,474e48 <nat_traversal_ka_event_state+0x2a8>
  474c84:	00000000 	nop
  474c88:	8fc20038 	lw	v0,56(s8)
  474c8c:	00000000 	nop
  474c90:	8c430264 	lw	v1,612(v0)
  474c94:	3c024000 	lui	v0,0x4000
  474c98:	00621024 	and	v0,v1,v0
  474c9c:	1440000a 	bnez	v0,474cc8 <nat_traversal_ka_event_state+0x128>
  474ca0:	00000000 	nop
  474ca4:	8f828018 	lw	v0,-32744(gp)
  474ca8:	00000000 	nop
  474cac:	24423f80 	addiu	v0,v0,16256
  474cb0:	8c420000 	lw	v0,0(v0)
  474cb4:	00000000 	nop
  474cb8:	14400003 	bnez	v0,474cc8 <nat_traversal_ka_event_state+0x128>
  474cbc:	00000000 	nop
  474cc0:	10000061 	b	474e48 <nat_traversal_ka_event_state+0x2a8>
  474cc4:	00000000 	nop
		/**
		 * - ISAKMP established
		 * - NAT-Traversal detected
		 * - NAT-KeepAlive needed (we are NATed)
		 */
		if (c->newest_isakmp_sa != st->st_serialno) {
  474cc8:	8fc2001c 	lw	v0,28(s8)
  474ccc:	00000000 	nop
  474cd0:	8c4301a4 	lw	v1,420(v0)
  474cd4:	8fc20038 	lw	v0,56(s8)
  474cd8:	00000000 	nop
  474cdc:	8c420000 	lw	v0,0(v0)
  474ce0:	00000000 	nop
  474ce4:	10620031 	beq	v1,v0,474dac <nat_traversal_ka_event_state+0x20c>
  474ce8:	00000000 	nop
			/** 
			 * if newest is also valid, ignore this one, we will only use
			 * newest. 
			 */
			struct state *st_newest;
			st_newest = state_with_serialno(c->newest_isakmp_sa);
  474cec:	8fc2001c 	lw	v0,28(s8)
  474cf0:	00000000 	nop
  474cf4:	8c4401a4 	lw	a0,420(v0)
  474cf8:	8f99873c 	lw	t9,-30916(gp)
  474cfc:	00000000 	nop
  474d00:	0320f809 	jalr	t9
  474d04:	00000000 	nop
  474d08:	8fdc0010 	lw	gp,16(s8)
  474d0c:	afc20020 	sw	v0,32(s8)
			if ((st_newest) && ((st_newest->st_state==STATE_MAIN_R3) ||
				(st_newest->st_state==STATE_MAIN_I4)) &&
				(st_newest->nat_traversal & NAT_T_DETECTED) &&
				((st_newest->nat_traversal & LELEM(NAT_TRAVERSAL_NAT_BHND_ME))
				|| (_force_ka))) {
  474d10:	8fc20020 	lw	v0,32(s8)
  474d14:	00000000 	nop
  474d18:	10400024 	beqz	v0,474dac <nat_traversal_ka_event_state+0x20c>
  474d1c:	00000000 	nop
  474d20:	8fc20020 	lw	v0,32(s8)
  474d24:	00000000 	nop
  474d28:	8c43014c 	lw	v1,332(v0)
  474d2c:	24020009 	li	v0,9
  474d30:	10620009 	beq	v1,v0,474d58 <nat_traversal_ka_event_state+0x1b8>
  474d34:	00000000 	nop
  474d38:	8fc20020 	lw	v0,32(s8)
  474d3c:	00000000 	nop
  474d40:	8c43014c 	lw	v1,332(v0)
  474d44:	2402000a 	li	v0,10
  474d48:	10620003 	beq	v1,v0,474d58 <nat_traversal_ka_event_state+0x1b8>
  474d4c:	00000000 	nop
  474d50:	10000016 	b	474dac <nat_traversal_ka_event_state+0x20c>
  474d54:	00000000 	nop
  474d58:	8fc20020 	lw	v0,32(s8)
  474d5c:	00000000 	nop
  474d60:	8c430264 	lw	v1,612(v0)
  474d64:	3c02c000 	lui	v0,0xc000
  474d68:	00621024 	and	v0,v1,v0
  474d6c:	1040000f 	beqz	v0,474dac <nat_traversal_ka_event_state+0x20c>
  474d70:	00000000 	nop
  474d74:	8fc20020 	lw	v0,32(s8)
  474d78:	00000000 	nop
  474d7c:	8c430264 	lw	v1,612(v0)
  474d80:	3c024000 	lui	v0,0x4000
  474d84:	00621024 	and	v0,v1,v0
  474d88:	1440002f 	bnez	v0,474e48 <nat_traversal_ka_event_state+0x2a8>
  474d8c:	00000000 	nop
  474d90:	8f828018 	lw	v0,-32744(gp)
  474d94:	00000000 	nop
  474d98:	24423f80 	addiu	v0,v0,16256
  474d9c:	8c420000 	lw	v0,0(v0)
  474da0:	00000000 	nop
  474da4:	14400028 	bnez	v0,474e48 <nat_traversal_ka_event_state+0x2a8>
  474da8:	00000000 	nop
				return;
			}
		}
		set_cur_state(st);
  474dac:	8fc20038 	lw	v0,56(s8)
  474db0:	8f8187f8 	lw	at,-30728(gp)
  474db4:	00000000 	nop
  474db8:	ac220000 	sw	v0,0(at)
  474dbc:	8fc20038 	lw	v0,56(s8)
  474dc0:	00000000 	nop
  474dc4:	8c44000c 	lw	a0,12(v0)
  474dc8:	8f998be4 	lw	t9,-29724(gp)
  474dcc:	00000000 	nop
  474dd0:	0320f809 	jalr	t9
  474dd4:	00000000 	nop
  474dd8:	8fdc0010 	lw	gp,16(s8)
  474ddc:	00000000 	nop
		nat_traversal_send_ka(st);
  474de0:	8fc40038 	lw	a0,56(s8)
  474de4:	8f998040 	lw	t9,-32704(gp)
  474de8:	00000000 	nop
  474dec:	27394a38 	addiu	t9,t9,19000
  474df0:	00000000 	nop
  474df4:	0320f809 	jalr	t9
  474df8:	00000000 	nop
  474dfc:	8fdc0010 	lw	gp,16(s8)
  474e00:	00000000 	nop
		reset_cur_state();
  474e04:	8f8187f8 	lw	at,-30728(gp)
  474e08:	00000000 	nop
  474e0c:	ac200000 	sw	zero,0(at)
  474e10:	8f82830c 	lw	v0,-31988(gp)
  474e14:	00000000 	nop
  474e18:	8c420000 	lw	v0,0(v0)
  474e1c:	8f8184f8 	lw	at,-31496(gp)
  474e20:	00000000 	nop
  474e24:	ac220000 	sw	v0,0(at)
		(*_kap_st)++;
  474e28:	8fc20018 	lw	v0,24(s8)
  474e2c:	00000000 	nop
  474e30:	8c420000 	lw	v0,0(v0)
  474e34:	00000000 	nop
  474e38:	24430001 	addiu	v1,v0,1
  474e3c:	8fc20018 	lw	v0,24(s8)
  474e40:	00000000 	nop
  474e44:	ac430000 	sw	v1,0(v0)
	}
}
  474e48:	03c0e821 	move	sp,s8
  474e4c:	8fbf0030 	lw	ra,48(sp)
  474e50:	8fbe002c 	lw	s8,44(sp)
  474e54:	27bd0038 	addiu	sp,sp,56
  474e58:	03e00008 	jr	ra
  474e5c:	00000000 	nop

00474e60 <nat_traversal_ka_event>:
  474e60:	3c1c0fb9 	lui	gp,0xfb9
  474e64:	279c7b10 	addiu	gp,gp,31504
  474e68:	0399e021 	addu	gp,gp,t9
  474e6c:	27bdffd0 	addiu	sp,sp,-48
  474e70:	afbc0010 	sw	gp,16(sp)
  474e74:	afbf0028 	sw	ra,40(sp)
  474e78:	afbe0024 	sw	s8,36(sp)
  474e7c:	afbc0020 	sw	gp,32(sp)
  474e80:	03a0f021 	move	s8,sp

void nat_traversal_ka_event (void)
{
	unsigned int _kap_st = 0;
  474e84:	afc00018 	sw	zero,24(s8)

	_ka_evt = 0;  /* ready to be reschedule */
  474e88:	8f818018 	lw	at,-32744(gp)
  474e8c:	00000000 	nop
  474e90:	24213f7c 	addiu	at,at,16252
  474e94:	ac200000 	sw	zero,0(at)

	for_each_state((void *)nat_traversal_ka_event_state, &_kap_st);
  474e98:	8f848040 	lw	a0,-32704(gp)
  474e9c:	00000000 	nop
  474ea0:	24844ba0 	addiu	a0,a0,19360
  474ea4:	27c50018 	addiu	a1,s8,24
  474ea8:	8f9982f4 	lw	t9,-32012(gp)
  474eac:	00000000 	nop
  474eb0:	0320f809 	jalr	t9
  474eb4:	00000000 	nop
  474eb8:	8fdc0010 	lw	gp,16(s8)
  474ebc:	00000000 	nop

	if (_kap_st) {
  474ec0:	8fc20018 	lw	v0,24(s8)
  474ec4:	00000000 	nop
  474ec8:	10400007 	beqz	v0,474ee8 <nat_traversal_ka_event+0x88>
  474ecc:	00000000 	nop
		/**
		 * If there are still states who needs Keep-Alive, schedule new event
		 */
		nat_traversal_new_ka_event();
  474ed0:	8f9981d8 	lw	t9,-32296(gp)
  474ed4:	00000000 	nop
  474ed8:	0320f809 	jalr	t9
  474edc:	00000000 	nop
  474ee0:	8fdc0010 	lw	gp,16(s8)
  474ee4:	00000000 	nop
	}
}
  474ee8:	03c0e821 	move	sp,s8
  474eec:	8fbf0028 	lw	ra,40(sp)
  474ef0:	8fbe0024 	lw	s8,36(sp)
  474ef4:	27bd0030 	addiu	sp,sp,48
  474ef8:	03e00008 	jr	ra
  474efc:	00000000 	nop

00474f00 <nat_traversal_find_new_mapp_state>:
  474f00:	3c1c0fb9 	lui	gp,0xfb9
  474f04:	279c7a70 	addiu	gp,gp,31344
  474f08:	0399e021 	addu	gp,gp,t9
  474f0c:	27bdffd0 	addiu	sp,sp,-48
  474f10:	afbc0010 	sw	gp,16(sp)
  474f14:	afbf0028 	sw	ra,40(sp)
  474f18:	afbe0024 	sw	s8,36(sp)
  474f1c:	afbc0020 	sw	gp,32(sp)
  474f20:	03a0f021 	move	s8,sp
  474f24:	afc40030 	sw	a0,48(s8)
  474f28:	afc50034 	sw	a1,52(s8)

struct _new_mapp_nfo {
	ip_address addr;
	u_int16_t sport, dport;
};

static void nat_traversal_find_new_mapp_state (struct state *st, void *data)
{
	struct connection *c = st->st_connection;
  474f2c:	8fc20030 	lw	v0,48(s8)
  474f30:	00000000 	nop
  474f34:	8c42000c 	lw	v0,12(v0)
  474f38:	00000000 	nop
  474f3c:	afc20018 	sw	v0,24(s8)
	struct _new_mapp_nfo *nfo = (struct _new_mapp_nfo *)data;
  474f40:	8fc20034 	lw	v0,52(s8)
  474f44:	00000000 	nop
  474f48:	afc2001c 	sw	v0,28(s8)

	if ((c) && sameaddr(&c->that.host_addr, &(nfo->addr)) &&
		(c->that.host_port == nfo->sport)) {
  474f4c:	8fc20018 	lw	v0,24(s8)
  474f50:	00000000 	nop
  474f54:	1040003e 	beqz	v0,475050 <nat_traversal_find_new_mapp_state+0x150>
  474f58:	00000000 	nop
  474f5c:	8fc20018 	lw	v0,24(s8)
  474f60:	00000000 	nop
  474f64:	24420108 	addiu	v0,v0,264
  474f68:	00402021 	move	a0,v0
  474f6c:	8fc5001c 	lw	a1,28(s8)
  474f70:	8f998928 	lw	t9,-30424(gp)
  474f74:	00000000 	nop
  474f78:	0320f809 	jalr	t9
  474f7c:	00000000 	nop
  474f80:	8fdc0010 	lw	gp,16(s8)
  474f84:	10400032 	beqz	v0,475050 <nat_traversal_find_new_mapp_state+0x150>
  474f88:	00000000 	nop
  474f8c:	8fc20018 	lw	v0,24(s8)
  474f90:	00000000 	nop
  474f94:	94430178 	lhu	v1,376(v0)
  474f98:	8fc2001c 	lw	v0,28(s8)
  474f9c:	00000000 	nop
  474fa0:	9442001c 	lhu	v0,28(v0)
  474fa4:	00000000 	nop
  474fa8:	14620029 	bne	v1,v0,475050 <nat_traversal_find_new_mapp_state+0x150>
  474fac:	00000000 	nop

		/**
		 * Change host port
		 */
		c->that.host_port = nfo->dport;
  474fb0:	8fc2001c 	lw	v0,28(s8)
  474fb4:	00000000 	nop
  474fb8:	9443001e 	lhu	v1,30(v0)
  474fbc:	8fc20018 	lw	v0,24(s8)
  474fc0:	00000000 	nop
  474fc4:	a4430178 	sh	v1,376(v0)

		if (IS_IPSEC_SA_ESTABLISHED(st->st_state) ||
			IS_ONLY_INBOUND_IPSEC_SA_ESTABLISHED(st->st_state)) {
  474fc8:	8fc20030 	lw	v0,48(s8)
  474fcc:	00000000 	nop
  474fd0:	8c43014c 	lw	v1,332(v0)
  474fd4:	24020018 	li	v0,24
  474fd8:	1062000f 	beq	v1,v0,475018 <nat_traversal_find_new_mapp_state+0x118>
  474fdc:	00000000 	nop
  474fe0:	8fc20030 	lw	v0,48(s8)
  474fe4:	00000000 	nop
  474fe8:	8c43014c 	lw	v1,332(v0)
  474fec:	24020019 	li	v0,25
  474ff0:	10620009 	beq	v1,v0,475018 <nat_traversal_find_new_mapp_state+0x118>
  474ff4:	00000000 	nop
  474ff8:	8fc20030 	lw	v0,48(s8)
  474ffc:	00000000 	nop
  475000:	8c43014c 	lw	v1,332(v0)
  475004:	24020017 	li	v0,23
  475008:	10620003 	beq	v1,v0,475018 <nat_traversal_find_new_mapp_state+0x118>
  47500c:	00000000 	nop
  475010:	1000000f 	b	475050 <nat_traversal_find_new_mapp_state+0x150>
  475014:	00000000 	nop
			if (!update_ipsec_sa(st)) {
  475018:	8fc40030 	lw	a0,48(s8)
  47501c:	8f9982b4 	lw	t9,-32076(gp)
  475020:	00000000 	nop
  475024:	0320f809 	jalr	t9
  475028:	00000000 	nop
  47502c:	8fdc0010 	lw	gp,16(s8)
  475030:	14400007 	bnez	v0,475050 <nat_traversal_find_new_mapp_state+0x150>
  475034:	00000000 	nop
				/**
				 * If ipsec update failed, restore old port or we'll
				 * not be able to update anymore.
				 */
				c->that.host_port = nfo->sport;
  475038:	8fc2001c 	lw	v0,28(s8)
  47503c:	00000000 	nop
  475040:	9443001c 	lhu	v1,28(v0)
  475044:	8fc20018 	lw	v0,24(s8)
  475048:	00000000 	nop
  47504c:	a4430178 	sh	v1,376(v0)
			}
		}
	}
}
  475050:	03c0e821 	move	sp,s8
  475054:	8fbf0028 	lw	ra,40(sp)
  475058:	8fbe0024 	lw	s8,36(sp)
  47505c:	27bd0030 	addiu	sp,sp,48
  475060:	03e00008 	jr	ra
  475064:	00000000 	nop

00475068 <nat_traversal_new_mapping>:
  475068:	3c1c0fb9 	lui	gp,0xfb9
  47506c:	279c7908 	addiu	gp,gp,30984
  475070:	0399e021 	addu	gp,gp,t9
  475074:	27bdff00 	addiu	sp,sp,-256
  475078:	afbc0018 	sw	gp,24(sp)
  47507c:	afbf00f8 	sw	ra,248(sp)
  475080:	afbe00f4 	sw	s8,244(sp)
  475084:	afbc00f0 	sw	gp,240(sp)
  475088:	03a0f021 	move	s8,sp
  47508c:	afc40100 	sw	a0,256(s8)
  475090:	00a01821 	move	v1,a1
  475094:	afc60108 	sw	a2,264(s8)
  475098:	00e01021 	move	v0,a3
  47509c:	a7c30020 	sh	v1,32(s8)
  4750a0:	a7c20022 	sh	v0,34(s8)

static int nat_traversal_new_mapping(const ip_address *src, u_int16_t sport,
	const ip_address *dst, u_int16_t dport)
{
	char srca[ADDRTOT_BUF], dsta[ADDRTOT_BUF];
	struct _new_mapp_nfo nfo;

	addrtot(src, 0, srca, ADDRTOT_BUF);
  4750a4:	8fc40100 	lw	a0,256(s8)
  4750a8:	00002821 	move	a1,zero
  4750ac:	27c60028 	addiu	a2,s8,40
  4750b0:	24070049 	li	a3,73
  4750b4:	8f998b50 	lw	t9,-29872(gp)
  4750b8:	00000000 	nop
  4750bc:	0320f809 	jalr	t9
  4750c0:	00000000 	nop
  4750c4:	8fdc0018 	lw	gp,24(s8)
  4750c8:	00000000 	nop
	addrtot(dst, 0, dsta, ADDRTOT_BUF);
  4750cc:	8fc40108 	lw	a0,264(s8)
  4750d0:	00002821 	move	a1,zero
  4750d4:	27c60078 	addiu	a2,s8,120
  4750d8:	24070049 	li	a3,73
  4750dc:	8f998b50 	lw	t9,-29872(gp)
  4750e0:	00000000 	nop
  4750e4:	0320f809 	jalr	t9
  4750e8:	00000000 	nop
  4750ec:	8fdc0018 	lw	gp,24(s8)
  4750f0:	00000000 	nop

	if (!sameaddr(src, dst)) {
  4750f4:	8fc40100 	lw	a0,256(s8)
  4750f8:	8fc50108 	lw	a1,264(s8)
  4750fc:	8f998928 	lw	t9,-30424(gp)
  475100:	00000000 	nop
  475104:	0320f809 	jalr	t9
  475108:	00000000 	nop
  47510c:	8fdc0018 	lw	gp,24(s8)
  475110:	14400016 	bnez	v0,47516c <nat_traversal_new_mapping+0x104>
  475114:	00000000 	nop
		loglog(RC_LOG_SERIOUS, "nat_traversal_new_mapping: "
  475118:	97c20020 	lhu	v0,32(s8)
  47511c:	27c30078 	addiu	v1,s8,120
  475120:	afa30010 	sw	v1,16(sp)
  475124:	97c30022 	lhu	v1,34(s8)
  475128:	00000000 	nop
  47512c:	afa30014 	sw	v1,20(sp)
  475130:	24040003 	li	a0,3
  475134:	8f85802c 	lw	a1,-32724(gp)
  475138:	00000000 	nop
  47513c:	24a568e0 	addiu	a1,a1,26848
  475140:	27c60028 	addiu	a2,s8,40
  475144:	00403821 	move	a3,v0
  475148:	8f998c48 	lw	t9,-29624(gp)
  47514c:	00000000 	nop
  475150:	0320f809 	jalr	t9
  475154:	00000000 	nop
  475158:	8fdc0018 	lw	gp,24(s8)
  47515c:	00000000 	nop
			"address change currently not supported [%s:%d,%s:%d]",
			srca, sport, dsta, dport);
		return -1;
  475160:	2402ffff 	li	v0,-1
  475164:	1000003f 	b	475264 <nat_traversal_new_mapping+0x1fc>
  475168:	00000000 	nop
	}

	if (sport == dport) {
  47516c:	97c30020 	lhu	v1,32(s8)
  475170:	97c20022 	lhu	v0,34(s8)
  475174:	00000000 	nop
  475178:	14620004 	bne	v1,v0,47518c <nat_traversal_new_mapping+0x124>
  47517c:	00000000 	nop
		/* no change */
		return 0;
  475180:	00001021 	move	v0,zero
  475184:	10000037 	b	475264 <nat_traversal_new_mapping+0x1fc>
  475188:	00000000 	nop
	}

	DBG_log("NAT-T: new mapping %s:%d/%d)", srca, sport, dport);
  47518c:	97c20020 	lhu	v0,32(s8)
  475190:	97c30022 	lhu	v1,34(s8)
  475194:	8f84802c 	lw	a0,-32724(gp)
  475198:	00000000 	nop
  47519c:	24846930 	addiu	a0,a0,26928
  4751a0:	27c50028 	addiu	a1,s8,40
  4751a4:	00403021 	move	a2,v0
  4751a8:	00603821 	move	a3,v1
  4751ac:	8f9983b8 	lw	t9,-31816(gp)
  4751b0:	00000000 	nop
  4751b4:	0320f809 	jalr	t9
  4751b8:	00000000 	nop
  4751bc:	8fdc0018 	lw	gp,24(s8)
  4751c0:	00000000 	nop

	nfo.addr = *src;
  4751c4:	8fc30100 	lw	v1,256(s8)
  4751c8:	00000000 	nop
  4751cc:	8c620000 	lw	v0,0(v1)
  4751d0:	00000000 	nop
  4751d4:	afc200c8 	sw	v0,200(s8)
  4751d8:	8c620004 	lw	v0,4(v1)
  4751dc:	00000000 	nop
  4751e0:	afc200cc 	sw	v0,204(s8)
  4751e4:	8c620008 	lw	v0,8(v1)
  4751e8:	00000000 	nop
  4751ec:	afc200d0 	sw	v0,208(s8)
  4751f0:	8c62000c 	lw	v0,12(v1)
  4751f4:	00000000 	nop
  4751f8:	afc200d4 	sw	v0,212(s8)
  4751fc:	8c620010 	lw	v0,16(v1)
  475200:	00000000 	nop
  475204:	afc200d8 	sw	v0,216(s8)
  475208:	8c620014 	lw	v0,20(v1)
  47520c:	00000000 	nop
  475210:	afc200dc 	sw	v0,220(s8)
  475214:	8c620018 	lw	v0,24(v1)
  475218:	00000000 	nop
  47521c:	afc200e0 	sw	v0,224(s8)
	nfo.sport = sport;
  475220:	97c20020 	lhu	v0,32(s8)
  475224:	00000000 	nop
  475228:	a7c200e4 	sh	v0,228(s8)
	nfo.dport = dport;
  47522c:	97c20022 	lhu	v0,34(s8)
  475230:	00000000 	nop
  475234:	a7c200e6 	sh	v0,230(s8)

	for_each_state((void *)nat_traversal_find_new_mapp_state, &nfo);
  475238:	8f848040 	lw	a0,-32704(gp)
  47523c:	00000000 	nop
  475240:	24844f00 	addiu	a0,a0,20224
  475244:	27c500c8 	addiu	a1,s8,200
  475248:	8f9982f4 	lw	t9,-32012(gp)
  47524c:	00000000 	nop
  475250:	0320f809 	jalr	t9
  475254:	00000000 	nop
  475258:	8fdc0018 	lw	gp,24(s8)
  47525c:	00000000 	nop

	return 0;
  475260:	00001021 	move	v0,zero
}
  475264:	03c0e821 	move	sp,s8
  475268:	8fbf00f8 	lw	ra,248(sp)
  47526c:	8fbe00f4 	lw	s8,244(sp)
  475270:	27bd0100 	addiu	sp,sp,256
  475274:	03e00008 	jr	ra
  475278:	00000000 	nop

0047527c <nat_traversal_change_port_lookup>:
  47527c:	3c1c0fb9 	lui	gp,0xfb9
  475280:	279c76f4 	addiu	gp,gp,30452
  475284:	0399e021 	addu	gp,gp,t9
  475288:	27bdffb8 	addiu	sp,sp,-72
  47528c:	afbc0010 	sw	gp,16(sp)
  475290:	afbf0040 	sw	ra,64(sp)
  475294:	afbe003c 	sw	s8,60(sp)
  475298:	afbc0038 	sw	gp,56(sp)
  47529c:	03a0f021 	move	s8,sp
  4752a0:	afc40048 	sw	a0,72(s8)
  4752a4:	afc5004c 	sw	a1,76(s8)

void nat_traversal_change_port_lookup(struct msg_digest *md, struct state *st)
{
	struct connection *c = st ? st->st_connection : NULL;
  4752a8:	8fc2004c 	lw	v0,76(s8)
  4752ac:	00000000 	nop
  4752b0:	10400008 	beqz	v0,4752d4 <nat_traversal_change_port_lookup+0x58>
  4752b4:	00000000 	nop
  4752b8:	8fc2004c 	lw	v0,76(s8)
  4752bc:	00000000 	nop
  4752c0:	8c42000c 	lw	v0,12(v0)
  4752c4:	00000000 	nop
  4752c8:	afc20020 	sw	v0,32(s8)
  4752cc:	10000002 	b	4752d8 <nat_traversal_change_port_lookup+0x5c>
  4752d0:	00000000 	nop
  4752d4:	afc00020 	sw	zero,32(s8)
  4752d8:	8fc20020 	lw	v0,32(s8)
  4752dc:	00000000 	nop
  4752e0:	afc20018 	sw	v0,24(s8)
	struct iface *i = NULL;
  4752e4:	afc0001c 	sw	zero,28(s8)

	if ((st == NULL) || (c == NULL)) {
  4752e8:	8fc2004c 	lw	v0,76(s8)
  4752ec:	00000000 	nop
  4752f0:	10400131 	beqz	v0,4757b8 <nat_traversal_change_port_lookup+0x53c>
  4752f4:	00000000 	nop
  4752f8:	8fc20018 	lw	v0,24(s8)
  4752fc:	00000000 	nop
  475300:	14400003 	bnez	v0,475310 <nat_traversal_change_port_lookup+0x94>
  475304:	00000000 	nop
  475308:	1000012b 	b	4757b8 <nat_traversal_change_port_lookup+0x53c>
  47530c:	00000000 	nop
		return;
	}

	if (md) {
  475310:	8fc20048 	lw	v0,72(s8)
  475314:	00000000 	nop
  475318:	1040006c 	beqz	v0,4754cc <nat_traversal_change_port_lookup+0x250>
  47531c:	00000000 	nop
		/**
		 * If source port has changed, update (including other states and
		 * established kernel SA)
		 */
		if (c->that.host_port != md->sender_port) {
  475320:	8fc20018 	lw	v0,24(s8)
  475324:	00000000 	nop
  475328:	94430178 	lhu	v1,376(v0)
  47532c:	8fc20048 	lw	v0,72(s8)
  475330:	00000000 	nop
  475334:	9442002c 	lhu	v0,44(v0)
  475338:	00000000 	nop
  47533c:	10620017 	beq	v1,v0,47539c <nat_traversal_change_port_lookup+0x120>
  475340:	00000000 	nop
			nat_traversal_new_mapping(&c->that.host_addr, c->that.host_port,
  475344:	8fc20018 	lw	v0,24(s8)
  475348:	00000000 	nop
  47534c:	24440108 	addiu	a0,v0,264
  475350:	8fc20018 	lw	v0,24(s8)
  475354:	00000000 	nop
  475358:	94450178 	lhu	a1,376(v0)
  47535c:	8fc20018 	lw	v0,24(s8)
  475360:	00000000 	nop
  475364:	24430108 	addiu	v1,v0,264
  475368:	8fc20048 	lw	v0,72(s8)
  47536c:	00000000 	nop
  475370:	9442002c 	lhu	v0,44(v0)
  475374:	00603021 	move	a2,v1
  475378:	00403821 	move	a3,v0
  47537c:	8f998040 	lw	t9,-32704(gp)
  475380:	00000000 	nop
  475384:	27395068 	addiu	t9,t9,20584
  475388:	00000000 	nop
  47538c:	0320f809 	jalr	t9
  475390:	00000000 	nop
  475394:	8fdc0010 	lw	gp,16(s8)
  475398:	00000000 	nop
				&c->that.host_addr, md->sender_port);
		}

		/**
		 * If interface type has changed, update local port (500/4500)
		 */
		if (((c->this.host_port == NAT_T_IKE_FLOAT_PORT) &&
			 (md->iface->ike_float == FALSE)) ||
			((c->this.host_port != NAT_T_IKE_FLOAT_PORT) &&
			 (md->iface->ike_float == TRUE))) {
  47539c:	8fc20018 	lw	v0,24(s8)
  4753a0:	00000000 	nop
  4753a4:	944300c8 	lhu	v1,200(v0)
  4753a8:	24021194 	li	v0,4500
  4753ac:	1462000b 	bne	v1,v0,4753dc <nat_traversal_change_port_lookup+0x160>
  4753b0:	00000000 	nop
  4753b4:	8fc20048 	lw	v0,72(s8)
  4753b8:	00000000 	nop
  4753bc:	8c42000c 	lw	v0,12(v0)
  4753c0:	00000000 	nop
  4753c4:	8c42002c 	lw	v0,44(v0)
  4753c8:	00000000 	nop
  4753cc:	14400003 	bnez	v0,4753dc <nat_traversal_change_port_lookup+0x160>
  4753d0:	00000000 	nop
  4753d4:	10000011 	b	47541c <nat_traversal_change_port_lookup+0x1a0>
  4753d8:	00000000 	nop
  4753dc:	8fc20018 	lw	v0,24(s8)
  4753e0:	00000000 	nop
  4753e4:	944300c8 	lhu	v1,200(v0)
  4753e8:	24021194 	li	v0,4500
  4753ec:	10620037 	beq	v1,v0,4754cc <nat_traversal_change_port_lookup+0x250>
  4753f0:	00000000 	nop
  4753f4:	8fc20048 	lw	v0,72(s8)
  4753f8:	00000000 	nop
  4753fc:	8c42000c 	lw	v0,12(v0)
  475400:	00000000 	nop
  475404:	8c43002c 	lw	v1,44(v0)
  475408:	24020001 	li	v0,1
  47540c:	10620003 	beq	v1,v0,47541c <nat_traversal_change_port_lookup+0x1a0>
  475410:	00000000 	nop
  475414:	1000002d 	b	4754cc <nat_traversal_change_port_lookup+0x250>
  475418:	00000000 	nop
			c->this.host_port = (md->iface->ike_float == TRUE)
  47541c:	8fc30018 	lw	v1,24(s8)
  475420:	00000000 	nop
  475424:	afc30024 	sw	v1,36(s8)
  475428:	8fc20048 	lw	v0,72(s8)
  47542c:	00000000 	nop
  475430:	8c42000c 	lw	v0,12(v0)
  475434:	00000000 	nop
  475438:	8c43002c 	lw	v1,44(v0)
  47543c:	24020001 	li	v0,1
  475440:	10620008 	beq	v1,v0,475464 <nat_traversal_change_port_lookup+0x1e8>
  475444:	00000000 	nop
  475448:	8f8284b0 	lw	v0,-31568(gp)
  47544c:	00000000 	nop
  475450:	94420000 	lhu	v0,0(v0)
  475454:	00000000 	nop
  475458:	a7c20028 	sh	v0,40(s8)
  47545c:	10000003 	b	47546c <nat_traversal_change_port_lookup+0x1f0>
  475460:	00000000 	nop
  475464:	24031194 	li	v1,4500
  475468:	a7c30028 	sh	v1,40(s8)
  47546c:	97c30028 	lhu	v1,40(s8)
  475470:	8fc20024 	lw	v0,36(s8)
  475474:	00000000 	nop
  475478:	a44300c8 	sh	v1,200(v0)
				? NAT_T_IKE_FLOAT_PORT : pluto_port;
			DBG(DBG_NATT,
  47547c:	8f8284f8 	lw	v0,-31496(gp)
  475480:	00000000 	nop
  475484:	8c420000 	lw	v0,0(v0)
  475488:	00000000 	nop
  47548c:	30420080 	andi	v0,v0,0x80
  475490:	1040000e 	beqz	v0,4754cc <nat_traversal_change_port_lookup+0x250>
  475494:	00000000 	nop
  475498:	8fc20018 	lw	v0,24(s8)
  47549c:	00000000 	nop
  4754a0:	944200c8 	lhu	v0,200(v0)
  4754a4:	8f84802c 	lw	a0,-32724(gp)
  4754a8:	00000000 	nop
  4754ac:	24846950 	addiu	a0,a0,26960
  4754b0:	00402821 	move	a1,v0
  4754b4:	8f9983b8 	lw	t9,-31816(gp)
  4754b8:	00000000 	nop
  4754bc:	0320f809 	jalr	t9
  4754c0:	00000000 	nop
  4754c4:	8fdc0010 	lw	gp,16(s8)
  4754c8:	00000000 	nop
				DBG_log("NAT-T: updating local port to %d", c->this.host_port);
			);
		}
	}

	/**
	 * If we're initiator and NAT-T (with port floating) is detected, we
	 * need to change port (MAIN_I3 or QUICK_I1)
	 */
	if (((st->st_state == STATE_MAIN_I3) || (st->st_state == STATE_QUICK_I1)) &&
		(st->nat_traversal & NAT_T_WITH_PORT_FLOATING) &&
		(st->nat_traversal & NAT_T_DETECTED) &&
		(c->this.host_port != NAT_T_IKE_FLOAT_PORT)) {
  4754cc:	8fc2004c 	lw	v0,76(s8)
  4754d0:	00000000 	nop
  4754d4:	8c43014c 	lw	v1,332(v0)
  4754d8:	24020008 	li	v0,8
  4754dc:	10620009 	beq	v1,v0,475504 <nat_traversal_change_port_lookup+0x288>
  4754e0:	00000000 	nop
  4754e4:	8fc2004c 	lw	v0,76(s8)
  4754e8:	00000000 	nop
  4754ec:	8c43014c 	lw	v1,332(v0)
  4754f0:	24020016 	li	v0,22
  4754f4:	10620003 	beq	v1,v0,475504 <nat_traversal_change_port_lookup+0x288>
  4754f8:	00000000 	nop
  4754fc:	10000035 	b	4755d4 <nat_traversal_change_port_lookup+0x358>
  475500:	00000000 	nop
  475504:	8fc2004c 	lw	v0,76(s8)
  475508:	00000000 	nop
  47550c:	8c420264 	lw	v0,612(v0)
  475510:	00000000 	nop
  475514:	3042000c 	andi	v0,v0,0xc
  475518:	1040002e 	beqz	v0,4755d4 <nat_traversal_change_port_lookup+0x358>
  47551c:	00000000 	nop
  475520:	8fc2004c 	lw	v0,76(s8)
  475524:	00000000 	nop
  475528:	8c430264 	lw	v1,612(v0)
  47552c:	3c02c000 	lui	v0,0xc000
  475530:	00621024 	and	v0,v1,v0
  475534:	10400027 	beqz	v0,4755d4 <nat_traversal_change_port_lookup+0x358>
  475538:	00000000 	nop
  47553c:	8fc20018 	lw	v0,24(s8)
  475540:	00000000 	nop
  475544:	944300c8 	lhu	v1,200(v0)
  475548:	24021194 	li	v0,4500
  47554c:	10620021 	beq	v1,v0,4755d4 <nat_traversal_change_port_lookup+0x358>
  475550:	00000000 	nop
		DBG(DBG_NATT,
  475554:	8f8284f8 	lw	v0,-31496(gp)
  475558:	00000000 	nop
  47555c:	8c420000 	lw	v0,0(v0)
  475560:	00000000 	nop
  475564:	30420080 	andi	v0,v0,0x80
  475568:	1040000b 	beqz	v0,475598 <nat_traversal_change_port_lookup+0x31c>
  47556c:	00000000 	nop
  475570:	8f84802c 	lw	a0,-32724(gp)
  475574:	00000000 	nop
  475578:	24846974 	addiu	a0,a0,26996
  47557c:	24051194 	li	a1,4500
  475580:	8f9983b8 	lw	t9,-31816(gp)
  475584:	00000000 	nop
  475588:	0320f809 	jalr	t9
  47558c:	00000000 	nop
  475590:	8fdc0010 	lw	gp,16(s8)
  475594:	00000000 	nop
			DBG_log("NAT-T: floating to port %d", NAT_T_IKE_FLOAT_PORT);
		);
		c->this.host_port = NAT_T_IKE_FLOAT_PORT;
  475598:	24031194 	li	v1,4500
  47559c:	8fc20018 	lw	v0,24(s8)
  4755a0:	00000000 	nop
  4755a4:	a44300c8 	sh	v1,200(v0)
		c->that.host_port = NAT_T_IKE_FLOAT_PORT;
  4755a8:	8fc20018 	lw	v0,24(s8)
  4755ac:	00000000 	nop
  4755b0:	a4430178 	sh	v1,376(v0)
		/*
		 * Also update pending connections or they will be deleted if uniqueids
		 * option is set.
		 */
		update_pending(st, st);
  4755b4:	8fc4004c 	lw	a0,76(s8)
  4755b8:	8fc5004c 	lw	a1,76(s8)
  4755bc:	8f99806c 	lw	t9,-32660(gp)
  4755c0:	00000000 	nop
  4755c4:	0320f809 	jalr	t9
  4755c8:	00000000 	nop
  4755cc:	8fdc0010 	lw	gp,16(s8)
  4755d0:	00000000 	nop
	}

	/**
	 * Find valid interface according to local port (500/4500)
	 */
	if (((c->this.host_port == NAT_T_IKE_FLOAT_PORT) &&
		 (c->interface->ike_float == FALSE)) ||
		((c->this.host_port != NAT_T_IKE_FLOAT_PORT) &&
		 (c->interface->ike_float == TRUE))) {
  4755d4:	8fc20018 	lw	v0,24(s8)
  4755d8:	00000000 	nop
  4755dc:	944300c8 	lhu	v1,200(v0)
  4755e0:	24021194 	li	v0,4500
  4755e4:	1462000b 	bne	v1,v0,475614 <nat_traversal_change_port_lookup+0x398>
  4755e8:	00000000 	nop
  4755ec:	8fc20018 	lw	v0,24(s8)
  4755f0:	00000000 	nop
  4755f4:	8c420198 	lw	v0,408(v0)
  4755f8:	00000000 	nop
  4755fc:	8c42002c 	lw	v0,44(v0)
  475600:	00000000 	nop
  475604:	14400003 	bnez	v0,475614 <nat_traversal_change_port_lookup+0x398>
  475608:	00000000 	nop
  47560c:	10000011 	b	475654 <nat_traversal_change_port_lookup+0x3d8>
  475610:	00000000 	nop
  475614:	8fc20018 	lw	v0,24(s8)
  475618:	00000000 	nop
  47561c:	944300c8 	lhu	v1,200(v0)
  475620:	24021194 	li	v0,4500
  475624:	10620064 	beq	v1,v0,4757b8 <nat_traversal_change_port_lookup+0x53c>
  475628:	00000000 	nop
  47562c:	8fc20018 	lw	v0,24(s8)
  475630:	00000000 	nop
  475634:	8c420198 	lw	v0,408(v0)
  475638:	00000000 	nop
  47563c:	8c43002c 	lw	v1,44(v0)
  475640:	24020001 	li	v0,1
  475644:	10620003 	beq	v1,v0,475654 <nat_traversal_change_port_lookup+0x3d8>
  475648:	00000000 	nop
  47564c:	1000005a 	b	4757b8 <nat_traversal_change_port_lookup+0x53c>
  475650:	00000000 	nop
		for (i = interfaces; i !=  NULL; i = i->next) {
  475654:	8f828c10 	lw	v0,-29680(gp)
  475658:	00000000 	nop
  47565c:	8c420000 	lw	v0,0(v0)
  475660:	00000000 	nop
  475664:	afc2001c 	sw	v0,28(s8)
  475668:	8fc2001c 	lw	v0,28(s8)
  47566c:	00000000 	nop
  475670:	14400003 	bnez	v0,475680 <nat_traversal_change_port_lookup+0x404>
  475674:	00000000 	nop
  475678:	1000004f 	b	4757b8 <nat_traversal_change_port_lookup+0x53c>
  47567c:	00000000 	nop
			if ((sameaddr(&c->interface->addr, &i->addr)) &&
				(i->ike_float != c->interface->ike_float)) {
  475680:	8fc20018 	lw	v0,24(s8)
  475684:	00000000 	nop
  475688:	8c420198 	lw	v0,408(v0)
  47568c:	00000000 	nop
  475690:	24430008 	addiu	v1,v0,8
  475694:	8fc2001c 	lw	v0,28(s8)
  475698:	00000000 	nop
  47569c:	24420008 	addiu	v0,v0,8
  4756a0:	00602021 	move	a0,v1
  4756a4:	00402821 	move	a1,v0
  4756a8:	8f998928 	lw	t9,-30424(gp)
  4756ac:	00000000 	nop
  4756b0:	0320f809 	jalr	t9
  4756b4:	00000000 	nop
  4756b8:	8fdc0010 	lw	gp,16(s8)
  4756bc:	10400037 	beqz	v0,47579c <nat_traversal_change_port_lookup+0x520>
  4756c0:	00000000 	nop
  4756c4:	8fc20018 	lw	v0,24(s8)
  4756c8:	00000000 	nop
  4756cc:	8c440198 	lw	a0,408(v0)
  4756d0:	8fc2001c 	lw	v0,28(s8)
  4756d4:	00000000 	nop
  4756d8:	8c43002c 	lw	v1,44(v0)
  4756dc:	8c82002c 	lw	v0,44(a0)
  4756e0:	00000000 	nop
  4756e4:	1062002d 	beq	v1,v0,47579c <nat_traversal_change_port_lookup+0x520>
  4756e8:	00000000 	nop
				DBG(DBG_NATT,
  4756ec:	8f8284f8 	lw	v0,-31496(gp)
  4756f0:	00000000 	nop
  4756f4:	8c420000 	lw	v0,0(v0)
  4756f8:	00000000 	nop
  4756fc:	30420080 	andi	v0,v0,0x80
  475700:	10400020 	beqz	v0,475784 <nat_traversal_change_port_lookup+0x508>
  475704:	00000000 	nop
  475708:	8fc2001c 	lw	v0,28(s8)
  47570c:	00000000 	nop
  475710:	afc2002c 	sw	v0,44(s8)
  475714:	8fc2001c 	lw	v0,28(s8)
  475718:	00000000 	nop
  47571c:	8c42002c 	lw	v0,44(v0)
  475720:	00000000 	nop
  475724:	14400008 	bnez	v0,475748 <nat_traversal_change_port_lookup+0x4cc>
  475728:	00000000 	nop
  47572c:	8f8384b0 	lw	v1,-31568(gp)
  475730:	00000000 	nop
  475734:	94630000 	lhu	v1,0(v1)
  475738:	00000000 	nop
  47573c:	afc30030 	sw	v1,48(s8)
  475740:	10000003 	b	475750 <nat_traversal_change_port_lookup+0x4d4>
  475744:	00000000 	nop
  475748:	24021194 	li	v0,4500
  47574c:	afc20030 	sw	v0,48(s8)
  475750:	8f84802c 	lw	a0,-32724(gp)
  475754:	00000000 	nop
  475758:	24846990 	addiu	a0,a0,27024
  47575c:	8fc3002c 	lw	v1,44(s8)
  475760:	00000000 	nop
  475764:	8c650004 	lw	a1,4(v1)
  475768:	8fc60030 	lw	a2,48(s8)
  47576c:	8f9983b8 	lw	t9,-31816(gp)
  475770:	00000000 	nop
  475774:	0320f809 	jalr	t9
  475778:	00000000 	nop
  47577c:	8fdc0010 	lw	gp,16(s8)
  475780:	00000000 	nop
					DBG_log("NAT-T: using interface %s:%d", i->rname,
						i->ike_float ? NAT_T_IKE_FLOAT_PORT : pluto_port);
				);
				c->interface = i;
  475784:	8fc3001c 	lw	v1,28(s8)
  475788:	8fc20018 	lw	v0,24(s8)
  47578c:	00000000 	nop
  475790:	ac430198 	sw	v1,408(v0)
				break;
  475794:	10000008 	b	4757b8 <nat_traversal_change_port_lookup+0x53c>
  475798:	00000000 	nop
  47579c:	8fc2001c 	lw	v0,28(s8)
  4757a0:	00000000 	nop
  4757a4:	8c420028 	lw	v0,40(v0)
  4757a8:	00000000 	nop
  4757ac:	afc2001c 	sw	v0,28(s8)
  4757b0:	1000ffad 	b	475668 <nat_traversal_change_port_lookup+0x3ec>
  4757b4:	00000000 	nop
			}
		}
	}
}
  4757b8:	03c0e821 	move	sp,s8
  4757bc:	8fbf0040 	lw	ra,64(sp)
  4757c0:	8fbe003c 	lw	s8,60(sp)
  4757c4:	27bd0048 	addiu	sp,sp,72
  4757c8:	03e00008 	jr	ra
  4757cc:	00000000 	nop

004757d0 <nat_t_new_klips_mapp>:
  4757d0:	3c1c0fb9 	lui	gp,0xfb9
  4757d4:	279c71a0 	addiu	gp,gp,29088
  4757d8:	0399e021 	addu	gp,gp,t9
  4757dc:	27bdffd0 	addiu	sp,sp,-48
  4757e0:	afbc0010 	sw	gp,16(sp)
  4757e4:	afbf0028 	sw	ra,40(sp)
  4757e8:	afbe0024 	sw	s8,36(sp)
  4757ec:	afbc0020 	sw	gp,32(sp)
  4757f0:	03a0f021 	move	s8,sp
  4757f4:	afc40030 	sw	a0,48(s8)
  4757f8:	afc50034 	sw	a1,52(s8)

struct _new_klips_mapp_nfo {
	struct sadb_sa *sa;
	ip_address src, dst;
	u_int16_t sport, dport;
};

static void nat_t_new_klips_mapp (struct state *st, void *data)
{
	struct connection *c = st->st_connection;
  4757fc:	8fc20030 	lw	v0,48(s8)
  475800:	00000000 	nop
  475804:	8c42000c 	lw	v0,12(v0)
  475808:	00000000 	nop
  47580c:	afc20018 	sw	v0,24(s8)
	struct _new_klips_mapp_nfo *nfo = (struct _new_klips_mapp_nfo *)data;
  475810:	8fc20034 	lw	v0,52(s8)
  475814:	00000000 	nop
  475818:	afc2001c 	sw	v0,28(s8)

	if ((c) && (st->st_esp.present) &&
		sameaddr(&c->that.host_addr, &(nfo->src)) &&
		(st->st_esp.our_spi == nfo->sa->sadb_sa_spi)) {
  47581c:	8fc20018 	lw	v0,24(s8)
  475820:	00000000 	nop
  475824:	10400036 	beqz	v0,475900 <nat_t_new_klips_mapp+0x130>
  475828:	00000000 	nop
  47582c:	8fc20030 	lw	v0,48(s8)
  475830:	00000000 	nop
  475834:	8c420068 	lw	v0,104(v0)
  475838:	00000000 	nop
  47583c:	10400030 	beqz	v0,475900 <nat_t_new_klips_mapp+0x130>
  475840:	00000000 	nop
  475844:	8fc20018 	lw	v0,24(s8)
  475848:	00000000 	nop
  47584c:	24430108 	addiu	v1,v0,264
  475850:	8fc2001c 	lw	v0,28(s8)
  475854:	00000000 	nop
  475858:	24420004 	addiu	v0,v0,4
  47585c:	00602021 	move	a0,v1
  475860:	00402821 	move	a1,v0
  475864:	8f998928 	lw	t9,-30424(gp)
  475868:	00000000 	nop
  47586c:	0320f809 	jalr	t9
  475870:	00000000 	nop
  475874:	8fdc0010 	lw	gp,16(s8)
  475878:	10400021 	beqz	v0,475900 <nat_t_new_klips_mapp+0x130>
  47587c:	00000000 	nop
  475880:	8fc2001c 	lw	v0,28(s8)
  475884:	00000000 	nop
  475888:	8c440000 	lw	a0,0(v0)
  47588c:	8fc20030 	lw	v0,48(s8)
  475890:	00000000 	nop
  475894:	8c430084 	lw	v1,132(v0)
  475898:	8c820004 	lw	v0,4(a0)
  47589c:	00000000 	nop
  4758a0:	14620017 	bne	v1,v0,475900 <nat_t_new_klips_mapp+0x130>
  4758a4:	00000000 	nop
		nat_traversal_new_mapping(&c->that.host_addr, c->that.host_port,
  4758a8:	8fc20018 	lw	v0,24(s8)
  4758ac:	00000000 	nop
  4758b0:	24440108 	addiu	a0,v0,264
  4758b4:	8fc20018 	lw	v0,24(s8)
  4758b8:	00000000 	nop
  4758bc:	94450178 	lhu	a1,376(v0)
  4758c0:	8fc2001c 	lw	v0,28(s8)
  4758c4:	00000000 	nop
  4758c8:	24430020 	addiu	v1,v0,32
  4758cc:	8fc2001c 	lw	v0,28(s8)
  4758d0:	00000000 	nop
  4758d4:	9442003e 	lhu	v0,62(v0)
  4758d8:	00603021 	move	a2,v1
  4758dc:	00403821 	move	a3,v0
  4758e0:	8f998040 	lw	t9,-32704(gp)
  4758e4:	00000000 	nop
  4758e8:	27395068 	addiu	t9,t9,20584
  4758ec:	00000000 	nop
  4758f0:	0320f809 	jalr	t9
  4758f4:	00000000 	nop
  4758f8:	8fdc0010 	lw	gp,16(s8)
  4758fc:	00000000 	nop
			&(nfo->dst), nfo->dport);
	}
}
  475900:	03c0e821 	move	sp,s8
  475904:	8fbf0028 	lw	ra,40(sp)
  475908:	8fbe0024 	lw	s8,36(sp)
  47590c:	27bd0030 	addiu	sp,sp,48
  475910:	03e00008 	jr	ra
  475914:	00000000 	nop

00475918 <process_pfkey_nat_t_new_mapping>:
  475918:	3c1c0fb9 	lui	gp,0xfb9
  47591c:	279c7058 	addiu	gp,gp,28760
  475920:	0399e021 	addu	gp,gp,t9
  475924:	27bdfe48 	addiu	sp,sp,-440
  475928:	afbc0018 	sw	gp,24(sp)
  47592c:	afbf01b0 	sw	ra,432(sp)
  475930:	afbe01ac 	sw	s8,428(sp)
  475934:	afbc01a8 	sw	gp,424(sp)
  475938:	03a0f021 	move	s8,sp
  47593c:	afc401b8 	sw	a0,440(s8)
  475940:	afc501bc 	sw	a1,444(s8)

void process_pfkey_nat_t_new_mapping(
	struct sadb_msg *msg __attribute__ ((unused)),
	struct sadb_ext *extensions[SADB_EXT_MAX + 1])
{
	struct _new_klips_mapp_nfo nfo;
	struct sadb_address *srcx = (void *) extensions[SADB_EXT_ADDRESS_SRC];
  475944:	8fc201bc 	lw	v0,444(s8)
  475948:	00000000 	nop
  47594c:	24420014 	addiu	v0,v0,20
  475950:	8c420000 	lw	v0,0(v0)
  475954:	00000000 	nop
  475958:	afc20060 	sw	v0,96(s8)
	struct sadb_address *dstx = (void *) extensions[SADB_EXT_ADDRESS_DST];
  47595c:	8fc201bc 	lw	v0,444(s8)
  475960:	00000000 	nop
  475964:	24420018 	addiu	v0,v0,24
  475968:	8c420000 	lw	v0,0(v0)
  47596c:	00000000 	nop
  475970:	afc20064 	sw	v0,100(s8)
	struct sockaddr *srca, *dsta;
	err_t ugh = NULL;
  475974:	afc00070 	sw	zero,112(s8)

	nfo.sa = (void *) extensions[SADB_EXT_SA];
  475978:	8fc201bc 	lw	v0,444(s8)
  47597c:	00000000 	nop
  475980:	24420004 	addiu	v0,v0,4
  475984:	8c420000 	lw	v0,0(v0)
  475988:	00000000 	nop
  47598c:	afc20020 	sw	v0,32(s8)

	if ((!nfo.sa) || (!srcx) || (!dstx)) {
  475990:	8fc20020 	lw	v0,32(s8)
  475994:	00000000 	nop
  475998:	10400009 	beqz	v0,4759c0 <process_pfkey_nat_t_new_mapping+0xa8>
  47599c:	00000000 	nop
  4759a0:	8fc20060 	lw	v0,96(s8)
  4759a4:	00000000 	nop
  4759a8:	10400005 	beqz	v0,4759c0 <process_pfkey_nat_t_new_mapping+0xa8>
  4759ac:	00000000 	nop
  4759b0:	8fc20064 	lw	v0,100(s8)
  4759b4:	00000000 	nop
  4759b8:	1440000c 	bnez	v0,4759ec <process_pfkey_nat_t_new_mapping+0xd4>
  4759bc:	00000000 	nop
		plog("SADB_X_NAT_T_NEW_MAPPING message from KLIPS malformed: "
  4759c0:	8f84802c 	lw	a0,-32724(gp)
  4759c4:	00000000 	nop
  4759c8:	248469b0 	addiu	a0,a0,27056
  4759cc:	8f998abc 	lw	t9,-30020(gp)
  4759d0:	00000000 	nop
  4759d4:	0320f809 	jalr	t9
  4759d8:	00000000 	nop
  4759dc:	8fdc0018 	lw	gp,24(s8)
  4759e0:	00000000 	nop
			"got NULL params");
		return;
  4759e4:	1000009f 	b	475c64 <process_pfkey_nat_t_new_mapping+0x34c>
  4759e8:	00000000 	nop
	}

	srca = ((struct sockaddr *)(void *)&srcx[1]);
  4759ec:	8fc20060 	lw	v0,96(s8)
  4759f0:	00000000 	nop
  4759f4:	24420008 	addiu	v0,v0,8
  4759f8:	afc20068 	sw	v0,104(s8)
	dsta = ((struct sockaddr *)(void *)&dstx[1]);
  4759fc:	8fc20064 	lw	v0,100(s8)
  475a00:	00000000 	nop
  475a04:	24420008 	addiu	v0,v0,8
  475a08:	afc2006c 	sw	v0,108(s8)

	if ((srca->sa_family != AF_INET) || (dsta->sa_family != AF_INET)) {
  475a0c:	8fc20068 	lw	v0,104(s8)
  475a10:	00000000 	nop
  475a14:	94430000 	lhu	v1,0(v0)
  475a18:	24020002 	li	v0,2
  475a1c:	14620009 	bne	v1,v0,475a44 <process_pfkey_nat_t_new_mapping+0x12c>
  475a20:	00000000 	nop
  475a24:	8fc2006c 	lw	v0,108(s8)
  475a28:	00000000 	nop
  475a2c:	94430000 	lhu	v1,0(v0)
  475a30:	24020002 	li	v0,2
  475a34:	14620003 	bne	v1,v0,475a44 <process_pfkey_nat_t_new_mapping+0x12c>
  475a38:	00000000 	nop
  475a3c:	10000008 	b	475a60 <process_pfkey_nat_t_new_mapping+0x148>
  475a40:	00000000 	nop
		ugh = "only AF_INET supported";
  475a44:	8f82802c 	lw	v0,-32724(gp)
  475a48:	00000000 	nop
  475a4c:	244269f8 	addiu	v0,v0,27128
  475a50:	00000000 	nop
  475a54:	afc20070 	sw	v0,112(s8)
  475a58:	10000074 	b	475c2c <process_pfkey_nat_t_new_mapping+0x314>
  475a5c:	00000000 	nop
	}
	else {
		char text_said[SATOT_BUF];
		char _srca[ADDRTOT_BUF], _dsta[ADDRTOT_BUF];
		ip_said said;

		initaddr((const void *) &((const struct sockaddr_in *)srca)->sin_addr,
  475a60:	8fc20068 	lw	v0,104(s8)
  475a64:	00000000 	nop
  475a68:	24430004 	addiu	v1,v0,4
  475a6c:	8fc20068 	lw	v0,104(s8)
  475a70:	00000000 	nop
  475a74:	94420000 	lhu	v0,0(v0)
  475a78:	00602021 	move	a0,v1
  475a7c:	24050004 	li	a1,4
  475a80:	00403021 	move	a2,v0
  475a84:	27c70024 	addiu	a3,s8,36
  475a88:	8f998b78 	lw	t9,-29832(gp)
  475a8c:	00000000 	nop
  475a90:	0320f809 	jalr	t9
  475a94:	00000000 	nop
  475a98:	8fdc0018 	lw	gp,24(s8)
  475a9c:	00000000 	nop
			sizeof(((const struct sockaddr_in *)srca)->sin_addr),
			srca->sa_family, &(nfo.src));
		nfo.sport = ntohs(((const struct sockaddr_in *)srca)->sin_port);
  475aa0:	8fc20068 	lw	v0,104(s8)
  475aa4:	00000000 	nop
  475aa8:	94420002 	lhu	v0,2(v0)
  475aac:	00000000 	nop
  475ab0:	a7c2005c 	sh	v0,92(s8)
		initaddr((const void *) &((const struct sockaddr_in *)dsta)->sin_addr,
  475ab4:	8fc2006c 	lw	v0,108(s8)
  475ab8:	00000000 	nop
  475abc:	24430004 	addiu	v1,v0,4
  475ac0:	8fc2006c 	lw	v0,108(s8)
  475ac4:	00000000 	nop
  475ac8:	94420000 	lhu	v0,0(v0)
  475acc:	00602021 	move	a0,v1
  475ad0:	24050004 	li	a1,4
  475ad4:	00403021 	move	a2,v0
  475ad8:	27c70040 	addiu	a3,s8,64
  475adc:	8f998b78 	lw	t9,-29832(gp)
  475ae0:	00000000 	nop
  475ae4:	0320f809 	jalr	t9
  475ae8:	00000000 	nop
  475aec:	8fdc0018 	lw	gp,24(s8)
  475af0:	00000000 	nop
			sizeof(((const struct sockaddr_in *)dsta)->sin_addr),
			dsta->sa_family, &(nfo.dst));
		nfo.dport = ntohs(((const struct sockaddr_in *)dsta)->sin_port);
  475af4:	8fc2006c 	lw	v0,108(s8)
  475af8:	00000000 	nop
  475afc:	94420002 	lhu	v0,2(v0)
  475b00:	00000000 	nop
  475b04:	a7c2005e 	sh	v0,94(s8)

		DBG(DBG_NATT,
  475b08:	8f8284f8 	lw	v0,-31496(gp)
  475b0c:	00000000 	nop
  475b10:	8c420000 	lw	v0,0(v0)
  475b14:	00000000 	nop
  475b18:	30420080 	andi	v0,v0,0x80
  475b1c:	10400039 	beqz	v0,475c04 <process_pfkey_nat_t_new_mapping+0x2ec>
  475b20:	00000000 	nop
  475b24:	27c40024 	addiu	a0,s8,36
  475b28:	8fc20020 	lw	v0,32(s8)
  475b2c:	00000000 	nop
  475b30:	8c450004 	lw	a1,4(v0)
  475b34:	24060032 	li	a2,50
  475b38:	27c70180 	addiu	a3,s8,384
  475b3c:	8f99817c 	lw	t9,-32388(gp)
  475b40:	00000000 	nop
  475b44:	0320f809 	jalr	t9
  475b48:	00000000 	nop
  475b4c:	8fdc0018 	lw	gp,24(s8)
  475b50:	27c40180 	addiu	a0,s8,384
  475b54:	00002821 	move	a1,zero
  475b58:	27c60078 	addiu	a2,s8,120
  475b5c:	24070064 	li	a3,100
  475b60:	8f998a3c 	lw	t9,-30148(gp)
  475b64:	00000000 	nop
  475b68:	0320f809 	jalr	t9
  475b6c:	00000000 	nop
  475b70:	8fdc0018 	lw	gp,24(s8)
  475b74:	27c40024 	addiu	a0,s8,36
  475b78:	00002821 	move	a1,zero
  475b7c:	27c600e0 	addiu	a2,s8,224
  475b80:	24070049 	li	a3,73
  475b84:	8f998b50 	lw	t9,-29872(gp)
  475b88:	00000000 	nop
  475b8c:	0320f809 	jalr	t9
  475b90:	00000000 	nop
  475b94:	8fdc0018 	lw	gp,24(s8)
  475b98:	27c40040 	addiu	a0,s8,64
  475b9c:	00002821 	move	a1,zero
  475ba0:	27c60130 	addiu	a2,s8,304
  475ba4:	24070049 	li	a3,73
  475ba8:	8f998b50 	lw	t9,-29872(gp)
  475bac:	00000000 	nop
  475bb0:	0320f809 	jalr	t9
  475bb4:	00000000 	nop
  475bb8:	8fdc0018 	lw	gp,24(s8)
  475bbc:	97c3005c 	lhu	v1,92(s8)
  475bc0:	27c20130 	addiu	v0,s8,304
  475bc4:	afa20010 	sw	v0,16(sp)
  475bc8:	97c2005e 	lhu	v0,94(s8)
  475bcc:	00000000 	nop
  475bd0:	afa20014 	sw	v0,20(sp)
  475bd4:	8f84802c 	lw	a0,-32724(gp)
  475bd8:	00000000 	nop
  475bdc:	24846a10 	addiu	a0,a0,27152
  475be0:	27c50078 	addiu	a1,s8,120
  475be4:	27c600e0 	addiu	a2,s8,224
  475be8:	00603821 	move	a3,v1
  475bec:	8f9983b8 	lw	t9,-31816(gp)
  475bf0:	00000000 	nop
  475bf4:	0320f809 	jalr	t9
  475bf8:	00000000 	nop
  475bfc:	8fdc0018 	lw	gp,24(s8)
  475c00:	00000000 	nop
			initsaid(&nfo.src, nfo.sa->sadb_sa_spi, SA_ESP, &said);
			satot(&said, 0, text_said, SATOT_BUF);
			addrtot(&nfo.src, 0, _srca, ADDRTOT_BUF);
			addrtot(&nfo.dst, 0, _dsta, ADDRTOT_BUF);
			DBG_log("new klips mapping %s %s:%d %s:%d",
				text_said, _srca, nfo.sport, _dsta, nfo.dport);
		);

		for_each_state((void *)nat_t_new_klips_mapp, &nfo);
  475c04:	8f848040 	lw	a0,-32704(gp)
  475c08:	00000000 	nop
  475c0c:	248457d0 	addiu	a0,a0,22480
  475c10:	27c50020 	addiu	a1,s8,32
  475c14:	8f9982f4 	lw	t9,-32012(gp)
  475c18:	00000000 	nop
  475c1c:	0320f809 	jalr	t9
  475c20:	00000000 	nop
  475c24:	8fdc0018 	lw	gp,24(s8)
  475c28:	00000000 	nop
	}

	if (ugh != NULL)
  475c2c:	8fc20070 	lw	v0,112(s8)
  475c30:	00000000 	nop
  475c34:	1040000b 	beqz	v0,475c64 <process_pfkey_nat_t_new_mapping+0x34c>
  475c38:	00000000 	nop
		plog("SADB_X_NAT_T_NEW_MAPPING message from KLIPS malformed: %s", ugh);
  475c3c:	8f84802c 	lw	a0,-32724(gp)
  475c40:	00000000 	nop
  475c44:	24846a34 	addiu	a0,a0,27188
  475c48:	8fc50070 	lw	a1,112(s8)
  475c4c:	8f998abc 	lw	t9,-30020(gp)
  475c50:	00000000 	nop
  475c54:	0320f809 	jalr	t9
  475c58:	00000000 	nop
  475c5c:	8fdc0018 	lw	gp,24(s8)
  475c60:	00000000 	nop
}
  475c64:	03c0e821 	move	sp,s8
  475c68:	8fbf01b0 	lw	ra,432(sp)
  475c6c:	8fbe01ac 	lw	s8,428(sp)
  475c70:	27bd01b8 	addiu	sp,sp,440
  475c74:	03e00008 	jr	ra
  475c78:	00000000 	nop
  475c7c:	00000000 	nop

00475c80 <_read_subnet>:
  475c80:	3c1c0fb9 	lui	gp,0xfb9
  475c84:	279c6cf0 	addiu	gp,gp,27888
  475c88:	0399e021 	addu	gp,gp,t9
  475c8c:	27bdffc0 	addiu	sp,sp,-64
  475c90:	afbc0010 	sw	gp,16(sp)
  475c94:	afbf0038 	sw	ra,56(sp)
  475c98:	afbe0034 	sw	s8,52(sp)
  475c9c:	afbc0030 	sw	gp,48(sp)
  475ca0:	03a0f021 	move	s8,sp
  475ca4:	afc40040 	sw	a0,64(s8)
  475ca8:	afc50044 	sw	a1,68(s8)
  475cac:	afc60048 	sw	a2,72(s8)
  475cb0:	afc7004c 	sw	a3,76(s8)
{
    bool ok;
    int af;

    if ((len > 4) && (strncmp(src, "%v4:", 4)==0)) {
  475cb4:	8fc20044 	lw	v0,68(s8)
  475cb8:	00000000 	nop
  475cbc:	2c420005 	sltiu	v0,v0,5
  475cc0:	14400011 	bnez	v0,475d08 <_read_subnet+0x88>
  475cc4:	00000000 	nop
  475cc8:	8fc40040 	lw	a0,64(s8)
  475ccc:	8f85802c 	lw	a1,-32724(gp)
  475cd0:	00000000 	nop
  475cd4:	24a56a70 	addiu	a1,a1,27248
  475cd8:	24060004 	li	a2,4
  475cdc:	8f99864c 	lw	t9,-31156(gp)
  475ce0:	00000000 	nop
  475ce4:	0320f809 	jalr	t9
  475ce8:	00000000 	nop
  475cec:	8fdc0010 	lw	gp,16(s8)
  475cf0:	14400005 	bnez	v0,475d08 <_read_subnet+0x88>
  475cf4:	00000000 	nop
	af = AF_INET;
  475cf8:	24020002 	li	v0,2
  475cfc:	afc2001c 	sw	v0,28(s8)
  475d00:	10000019 	b	475d68 <_read_subnet+0xe8>
  475d04:	00000000 	nop
    }
    else if ((len > 4) && (strncmp(src, "%v6:", 4)==0)) {
  475d08:	8fc20044 	lw	v0,68(s8)
  475d0c:	00000000 	nop
  475d10:	2c420005 	sltiu	v0,v0,5
  475d14:	14400011 	bnez	v0,475d5c <_read_subnet+0xdc>
  475d18:	00000000 	nop
  475d1c:	8fc40040 	lw	a0,64(s8)
  475d20:	8f85802c 	lw	a1,-32724(gp)
  475d24:	00000000 	nop
  475d28:	24a56a78 	addiu	a1,a1,27256
  475d2c:	24060004 	li	a2,4
  475d30:	8f99864c 	lw	t9,-31156(gp)
  475d34:	00000000 	nop
  475d38:	0320f809 	jalr	t9
  475d3c:	00000000 	nop
  475d40:	8fdc0010 	lw	gp,16(s8)
  475d44:	14400005 	bnez	v0,475d5c <_read_subnet+0xdc>
  475d48:	00000000 	nop
	af = AF_INET6;
  475d4c:	2402000a 	li	v0,10
  475d50:	afc2001c 	sw	v0,28(s8)
  475d54:	10000004 	b	475d68 <_read_subnet+0xe8>
  475d58:	00000000 	nop
    }
    else {
	return FALSE;
  475d5c:	00001021 	move	v0,zero
  475d60:	1000007b 	b	475f50 <_read_subnet+0x2d0>
  475d64:	00000000 	nop
    }

    ok = (src[4] == '!') ? FALSE : TRUE;
  475d68:	8fc20040 	lw	v0,64(s8)
  475d6c:	00000000 	nop
  475d70:	24420004 	addiu	v0,v0,4
  475d74:	80420000 	lb	v0,0(v0)
  475d78:	00000000 	nop
  475d7c:	38420021 	xori	v0,v0,0x21
  475d80:	0002102b 	sltu	v0,zero,v0
  475d84:	afc20018 	sw	v0,24(s8)
    src += ok ? 4 : 5;
  475d88:	8fc20018 	lw	v0,24(s8)
  475d8c:	00000000 	nop
  475d90:	10400007 	beqz	v0,475db0 <_read_subnet+0x130>
  475d94:	00000000 	nop
  475d98:	8fc20040 	lw	v0,64(s8)
  475d9c:	00000000 	nop
  475da0:	24420004 	addiu	v0,v0,4
  475da4:	afc20020 	sw	v0,32(s8)
  475da8:	10000005 	b	475dc0 <_read_subnet+0x140>
  475dac:	00000000 	nop
  475db0:	8fc20040 	lw	v0,64(s8)
  475db4:	00000000 	nop
  475db8:	24420005 	addiu	v0,v0,5
  475dbc:	afc20020 	sw	v0,32(s8)
  475dc0:	8fc20020 	lw	v0,32(s8)
  475dc4:	00000000 	nop
  475dc8:	afc20040 	sw	v0,64(s8)
    len -= ok ? 4 : 5;
  475dcc:	8fc20018 	lw	v0,24(s8)
  475dd0:	00000000 	nop
  475dd4:	10400007 	beqz	v0,475df4 <_read_subnet+0x174>
  475dd8:	00000000 	nop
  475ddc:	8fc20044 	lw	v0,68(s8)
  475de0:	00000000 	nop
  475de4:	2442fffc 	addiu	v0,v0,-4
  475de8:	afc20024 	sw	v0,36(s8)
  475dec:	10000005 	b	475e04 <_read_subnet+0x184>
  475df0:	00000000 	nop
  475df4:	8fc20044 	lw	v0,68(s8)
  475df8:	00000000 	nop
  475dfc:	2442fffb 	addiu	v0,v0,-5
  475e00:	afc20024 	sw	v0,36(s8)
  475e04:	8fc20024 	lw	v0,36(s8)
  475e08:	00000000 	nop
  475e0c:	afc20044 	sw	v0,68(s8)

    if (!len) return FALSE;
  475e10:	8fc20044 	lw	v0,68(s8)
  475e14:	00000000 	nop
  475e18:	14400004 	bnez	v0,475e2c <_read_subnet+0x1ac>
  475e1c:	00000000 	nop
  475e20:	00001021 	move	v0,zero
  475e24:	1000004a 	b	475f50 <_read_subnet+0x2d0>
  475e28:	00000000 	nop
    if ((!ok) && (!dstko)) return FALSE;
  475e2c:	8fc20018 	lw	v0,24(s8)
  475e30:	00000000 	nop
  475e34:	14400008 	bnez	v0,475e58 <_read_subnet+0x1d8>
  475e38:	00000000 	nop
  475e3c:	8fc2004c 	lw	v0,76(s8)
  475e40:	00000000 	nop
  475e44:	14400004 	bnez	v0,475e58 <_read_subnet+0x1d8>
  475e48:	00000000 	nop
  475e4c:	00001021 	move	v0,zero
  475e50:	1000003f 	b	475f50 <_read_subnet+0x2d0>
  475e54:	00000000 	nop

    passert ( ((ok)?(dst):(dstko))!=NULL );
  475e58:	8fc20018 	lw	v0,24(s8)
  475e5c:	00000000 	nop
  475e60:	14400007 	bnez	v0,475e80 <_read_subnet+0x200>
  475e64:	00000000 	nop
  475e68:	8fc2004c 	lw	v0,76(s8)
  475e6c:	00000000 	nop
  475e70:	14400014 	bnez	v0,475ec4 <_read_subnet+0x244>
  475e74:	00000000 	nop
  475e78:	10000005 	b	475e90 <_read_subnet+0x210>
  475e7c:	00000000 	nop
  475e80:	8fc20048 	lw	v0,72(s8)
  475e84:	00000000 	nop
  475e88:	1440000e 	bnez	v0,475ec4 <_read_subnet+0x244>
  475e8c:	00000000 	nop
  475e90:	8f84802c 	lw	a0,-32724(gp)
  475e94:	00000000 	nop
  475e98:	24846a80 	addiu	a0,a0,27264
  475e9c:	8f85802c 	lw	a1,-32724(gp)
  475ea0:	00000000 	nop
  475ea4:	24a56a9c 	addiu	a1,a1,27292
  475ea8:	2406004d 	li	a2,77
  475eac:	8f998bb8 	lw	t9,-29768(gp)
  475eb0:	00000000 	nop
  475eb4:	0320f809 	jalr	t9
  475eb8:	00000000 	nop
  475ebc:	8fdc0010 	lw	gp,16(s8)
  475ec0:	00000000 	nop

    if (ttosubnet(src, len, af, ((ok)?(dst):(dstko)))) {
  475ec4:	8fc20018 	lw	v0,24(s8)
  475ec8:	00000000 	nop
  475ecc:	10400006 	beqz	v0,475ee8 <_read_subnet+0x268>
  475ed0:	00000000 	nop
  475ed4:	8fc20048 	lw	v0,72(s8)
  475ed8:	00000000 	nop
  475edc:	afc20028 	sw	v0,40(s8)
  475ee0:	10000004 	b	475ef4 <_read_subnet+0x274>
  475ee4:	00000000 	nop
  475ee8:	8fc2004c 	lw	v0,76(s8)
  475eec:	00000000 	nop
  475ef0:	afc20028 	sw	v0,40(s8)
  475ef4:	8fc40040 	lw	a0,64(s8)
  475ef8:	8fc50044 	lw	a1,68(s8)
  475efc:	8fc6001c 	lw	a2,28(s8)
  475f00:	8fc70028 	lw	a3,40(s8)
  475f04:	8f9988a0 	lw	t9,-30560(gp)
  475f08:	00000000 	nop
  475f0c:	0320f809 	jalr	t9
  475f10:	00000000 	nop
  475f14:	8fdc0010 	lw	gp,16(s8)
  475f18:	10400004 	beqz	v0,475f2c <_read_subnet+0x2ac>
  475f1c:	00000000 	nop
	return FALSE;
  475f20:	00001021 	move	v0,zero
  475f24:	1000000a 	b	475f50 <_read_subnet+0x2d0>
  475f28:	00000000 	nop
    }
    if (isok) *isok = ok;
  475f2c:	8fc20050 	lw	v0,80(s8)
  475f30:	00000000 	nop
  475f34:	10400005 	beqz	v0,475f4c <_read_subnet+0x2cc>
  475f38:	00000000 	nop
  475f3c:	8fc30018 	lw	v1,24(s8)
  475f40:	8fc20050 	lw	v0,80(s8)
  475f44:	00000000 	nop
  475f48:	ac430000 	sw	v1,0(v0)
    return TRUE;
  475f4c:	24020001 	li	v0,1
}
  475f50:	03c0e821 	move	sp,s8
  475f54:	8fbf0038 	lw	ra,56(sp)
  475f58:	8fbe0034 	lw	s8,52(sp)
  475f5c:	27bd0040 	addiu	sp,sp,64
  475f60:	03e00008 	jr	ra
  475f64:	00000000 	nop

00475f68 <init_virtual_ip>:
  475f68:	3c1c0fb9 	lui	gp,0xfb9
  475f6c:	279c6a08 	addiu	gp,gp,27144
  475f70:	0399e021 	addu	gp,gp,t9
  475f74:	27bdff90 	addiu	sp,sp,-112
  475f78:	afbc0018 	sw	gp,24(sp)
  475f7c:	afbf0068 	sw	ra,104(sp)
  475f80:	afbe0064 	sw	s8,100(sp)
  475f84:	afbc0060 	sw	gp,96(sp)
  475f88:	03a0f021 	move	s8,sp
  475f8c:	afc40070 	sw	a0,112(s8)

void
init_virtual_ip(const char *private_list)
{
    const char *next, *str=private_list;
  475f90:	8fc20070 	lw	v0,112(s8)
  475f94:	00000000 	nop
  475f98:	afc20024 	sw	v0,36(s8)
    unsigned short ign = 0, i_ok, i_ko;
  475f9c:	a7c00028 	sh	zero,40(s8)
    ip_subnet sub;
    bool ok;

    /** Count **/
    private_net_ok_len=0;
  475fa0:	8f818018 	lw	at,-32744(gp)
  475fa4:	00000000 	nop
  475fa8:	24213fa8 	addiu	at,at,16296
  475fac:	a4200000 	sh	zero,0(at)
    private_net_ko_len=0;
  475fb0:	8f818018 	lw	at,-32744(gp)
  475fb4:	00000000 	nop
  475fb8:	24213faa 	addiu	at,at,16298
  475fbc:	a4200000 	sh	zero,0(at)
    while (str) {
  475fc0:	8fc20024 	lw	v0,36(s8)
  475fc4:	00000000 	nop
  475fc8:	14400003 	bnez	v0,475fd8 <init_virtual_ip+0x70>
  475fcc:	00000000 	nop
  475fd0:	1000005d 	b	476148 <init_virtual_ip+0x1e0>
  475fd4:	00000000 	nop
	next = strchr(str,',');
  475fd8:	8fc40024 	lw	a0,36(s8)
  475fdc:	2405002c 	li	a1,44
  475fe0:	8f99813c 	lw	t9,-32452(gp)
  475fe4:	00000000 	nop
  475fe8:	0320f809 	jalr	t9
  475fec:	00000000 	nop
  475ff0:	8fdc0018 	lw	gp,24(s8)
  475ff4:	afc20020 	sw	v0,32(s8)
	if (!next) next = str + strlen(str);
  475ff8:	8fc20020 	lw	v0,32(s8)
  475ffc:	00000000 	nop
  476000:	1440000c 	bnez	v0,476034 <init_virtual_ip+0xcc>
  476004:	00000000 	nop
  476008:	8fc40024 	lw	a0,36(s8)
  47600c:	8f998188 	lw	t9,-32376(gp)
  476010:	00000000 	nop
  476014:	0320f809 	jalr	t9
  476018:	00000000 	nop
  47601c:	8fdc0018 	lw	gp,24(s8)
  476020:	00401821 	move	v1,v0
  476024:	8fc20024 	lw	v0,36(s8)
  476028:	00000000 	nop
  47602c:	00431021 	addu	v0,v0,v1
  476030:	afc20020 	sw	v0,32(s8)
	if (_read_subnet(str, next-str, &sub, &sub, &ok)) {
  476034:	8fc30020 	lw	v1,32(s8)
  476038:	8fc20024 	lw	v0,36(s8)
  47603c:	00000000 	nop
  476040:	00621823 	subu	v1,v1,v0
  476044:	27c20050 	addiu	v0,s8,80
  476048:	afa20010 	sw	v0,16(sp)
  47604c:	8fc40024 	lw	a0,36(s8)
  476050:	00602821 	move	a1,v1
  476054:	27c60030 	addiu	a2,s8,48
  476058:	27c70030 	addiu	a3,s8,48
  47605c:	8f998040 	lw	t9,-32704(gp)
  476060:	00000000 	nop
  476064:	27395c80 	addiu	t9,t9,23680
  476068:	00000000 	nop
  47606c:	0320f809 	jalr	t9
  476070:	00000000 	nop
  476074:	8fdc0018 	lw	gp,24(s8)
  476078:	1040001d 	beqz	v0,4760f0 <init_virtual_ip+0x188>
  47607c:	00000000 	nop
	    if (ok)
  476080:	8fc20050 	lw	v0,80(s8)
  476084:	00000000 	nop
  476088:	1040000d 	beqz	v0,4760c0 <init_virtual_ip+0x158>
  47608c:	00000000 	nop
		private_net_ok_len++;
  476090:	8f828018 	lw	v0,-32744(gp)
  476094:	00000000 	nop
  476098:	24423fa8 	addiu	v0,v0,16296
  47609c:	94420000 	lhu	v0,0(v0)
  4760a0:	00000000 	nop
  4760a4:	24420001 	addiu	v0,v0,1
  4760a8:	8f818018 	lw	at,-32744(gp)
  4760ac:	00000000 	nop
  4760b0:	24213fa8 	addiu	at,at,16296
  4760b4:	a4220000 	sh	v0,0(at)
  4760b8:	10000011 	b	476100 <init_virtual_ip+0x198>
  4760bc:	00000000 	nop
	    else
		private_net_ko_len++;
  4760c0:	8f828018 	lw	v0,-32744(gp)
  4760c4:	00000000 	nop
  4760c8:	24423faa 	addiu	v0,v0,16298
  4760cc:	94420000 	lhu	v0,0(v0)
  4760d0:	00000000 	nop
  4760d4:	24420001 	addiu	v0,v0,1
  4760d8:	8f818018 	lw	at,-32744(gp)
  4760dc:	00000000 	nop
  4760e0:	24213faa 	addiu	at,at,16298
  4760e4:	a4220000 	sh	v0,0(at)
  4760e8:	10000005 	b	476100 <init_virtual_ip+0x198>
  4760ec:	00000000 	nop
	}
	else {
	    ign++;
  4760f0:	97c20028 	lhu	v0,40(s8)
  4760f4:	00000000 	nop
  4760f8:	24420001 	addiu	v0,v0,1
  4760fc:	a7c20028 	sh	v0,40(s8)
	}
	str = *next ? next+1 : NULL;
  476100:	8fc20020 	lw	v0,32(s8)
  476104:	00000000 	nop
  476108:	80420000 	lb	v0,0(v0)
  47610c:	00000000 	nop
  476110:	10400007 	beqz	v0,476130 <init_virtual_ip+0x1c8>
  476114:	00000000 	nop
  476118:	8fc20020 	lw	v0,32(s8)
  47611c:	00000000 	nop
  476120:	24420001 	addiu	v0,v0,1
  476124:	afc20054 	sw	v0,84(s8)
  476128:	10000002 	b	476134 <init_virtual_ip+0x1cc>
  47612c:	00000000 	nop
  476130:	afc00054 	sw	zero,84(s8)
  476134:	8fc20054 	lw	v0,84(s8)
  476138:	00000000 	nop
  47613c:	afc20024 	sw	v0,36(s8)
  476140:	1000ff9f 	b	475fc0 <init_virtual_ip+0x58>
  476144:	00000000 	nop
    }

    if (!ign) {
  476148:	97c20028 	lhu	v0,40(s8)
  47614c:	00000000 	nop
  476150:	144000f0 	bnez	v0,476514 <init_virtual_ip+0x5ac>
  476154:	00000000 	nop
	/** Allocate **/
	if (private_net_ok_len) {
  476158:	8f828018 	lw	v0,-32744(gp)
  47615c:	00000000 	nop
  476160:	24423fa8 	addiu	v0,v0,16296
  476164:	94420000 	lhu	v0,0(v0)
  476168:	00000000 	nop
  47616c:	10400015 	beqz	v0,4761c4 <init_virtual_ip+0x25c>
  476170:	00000000 	nop
	    private_net_ok = (ip_subnet *)alloc_bytes(
  476174:	8f828018 	lw	v0,-32744(gp)
  476178:	00000000 	nop
  47617c:	24423fa8 	addiu	v0,v0,16296
  476180:	94420000 	lhu	v0,0(v0)
  476184:	00000000 	nop
  476188:	00021140 	sll	v0,v0,0x5
  47618c:	00402021 	move	a0,v0
  476190:	8f85802c 	lw	a1,-32724(gp)
  476194:	00000000 	nop
  476198:	24a56aa8 	addiu	a1,a1,27304
  47619c:	8f998084 	lw	t9,-32636(gp)
  4761a0:	00000000 	nop
  4761a4:	0320f809 	jalr	t9
  4761a8:	00000000 	nop
  4761ac:	8fdc0018 	lw	gp,24(s8)
  4761b0:	00000000 	nop
  4761b4:	8f818018 	lw	at,-32744(gp)
  4761b8:	00000000 	nop
  4761bc:	24213fa0 	addiu	at,at,16288
  4761c0:	ac220000 	sw	v0,0(at)
		(private_net_ok_len*sizeof(ip_subnet)),
		"private_net_ok subnets");
	}
	if (private_net_ko_len) {
  4761c4:	8f828018 	lw	v0,-32744(gp)
  4761c8:	00000000 	nop
  4761cc:	24423faa 	addiu	v0,v0,16298
  4761d0:	94420000 	lhu	v0,0(v0)
  4761d4:	00000000 	nop
  4761d8:	10400015 	beqz	v0,476230 <init_virtual_ip+0x2c8>
  4761dc:	00000000 	nop
	    private_net_ko = (ip_subnet *)alloc_bytes(
  4761e0:	8f828018 	lw	v0,-32744(gp)
  4761e4:	00000000 	nop
  4761e8:	24423faa 	addiu	v0,v0,16298
  4761ec:	94420000 	lhu	v0,0(v0)
  4761f0:	00000000 	nop
  4761f4:	00021140 	sll	v0,v0,0x5
  4761f8:	00402021 	move	a0,v0
  4761fc:	8f85802c 	lw	a1,-32724(gp)
  476200:	00000000 	nop
  476204:	24a56ac0 	addiu	a1,a1,27328
  476208:	8f998084 	lw	t9,-32636(gp)
  47620c:	00000000 	nop
  476210:	0320f809 	jalr	t9
  476214:	00000000 	nop
  476218:	8fdc0018 	lw	gp,24(s8)
  47621c:	00000000 	nop
  476220:	8f818018 	lw	at,-32744(gp)
  476224:	00000000 	nop
  476228:	24213fa4 	addiu	at,at,16292
  47622c:	ac220000 	sw	v0,0(at)
		(private_net_ko_len*sizeof(ip_subnet)),
		"private_net_ko subnets");
	}
	if ((private_net_ok_len && !private_net_ok) ||
	    (private_net_ko_len && !private_net_ko)) {
  476230:	8f828018 	lw	v0,-32744(gp)
  476234:	00000000 	nop
  476238:	24423fa8 	addiu	v0,v0,16296
  47623c:	94420000 	lhu	v0,0(v0)
  476240:	00000000 	nop
  476244:	1040000a 	beqz	v0,476270 <init_virtual_ip+0x308>
  476248:	00000000 	nop
  47624c:	8f828018 	lw	v0,-32744(gp)
  476250:	00000000 	nop
  476254:	24423fa0 	addiu	v0,v0,16288
  476258:	8c420000 	lw	v0,0(v0)
  47625c:	00000000 	nop
  476260:	14400003 	bnez	v0,476270 <init_virtual_ip+0x308>
  476264:	00000000 	nop
  476268:	1000000f 	b	4762a8 <init_virtual_ip+0x340>
  47626c:	00000000 	nop
  476270:	8f828018 	lw	v0,-32744(gp)
  476274:	00000000 	nop
  476278:	24423faa 	addiu	v0,v0,16298
  47627c:	94420000 	lhu	v0,0(v0)
  476280:	00000000 	nop
  476284:	1040003e 	beqz	v0,476380 <init_virtual_ip+0x418>
  476288:	00000000 	nop
  47628c:	8f828018 	lw	v0,-32744(gp)
  476290:	00000000 	nop
  476294:	24423fa4 	addiu	v0,v0,16292
  476298:	8c420000 	lw	v0,0(v0)
  47629c:	00000000 	nop
  4762a0:	14400037 	bnez	v0,476380 <init_virtual_ip+0x418>
  4762a4:	00000000 	nop
	    loglog(RC_LOG_SERIOUS,
  4762a8:	24040003 	li	a0,3
  4762ac:	8f85802c 	lw	a1,-32724(gp)
  4762b0:	00000000 	nop
  4762b4:	24a56ad8 	addiu	a1,a1,27352
  4762b8:	8f998c48 	lw	t9,-29624(gp)
  4762bc:	00000000 	nop
  4762c0:	0320f809 	jalr	t9
  4762c4:	00000000 	nop
  4762c8:	8fdc0018 	lw	gp,24(s8)
  4762cc:	00000000 	nop
		"can't alloc in init_virtual_ip");
	    pfreeany(private_net_ok);
  4762d0:	8f828018 	lw	v0,-32744(gp)
  4762d4:	00000000 	nop
  4762d8:	24423fa0 	addiu	v0,v0,16288
  4762dc:	8c420000 	lw	v0,0(v0)
  4762e0:	00000000 	nop
  4762e4:	1040000b 	beqz	v0,476314 <init_virtual_ip+0x3ac>
  4762e8:	00000000 	nop
  4762ec:	8f848018 	lw	a0,-32744(gp)
  4762f0:	00000000 	nop
  4762f4:	24843fa0 	addiu	a0,a0,16288
  4762f8:	8c840000 	lw	a0,0(a0)
  4762fc:	8f998094 	lw	t9,-32620(gp)
  476300:	00000000 	nop
  476304:	0320f809 	jalr	t9
  476308:	00000000 	nop
  47630c:	8fdc0018 	lw	gp,24(s8)
  476310:	00000000 	nop
	    private_net_ok = NULL;
  476314:	8f818018 	lw	at,-32744(gp)
  476318:	00000000 	nop
  47631c:	24213fa0 	addiu	at,at,16288
  476320:	ac200000 	sw	zero,0(at)
	    pfreeany(private_net_ko);
  476324:	8f828018 	lw	v0,-32744(gp)
  476328:	00000000 	nop
  47632c:	24423fa4 	addiu	v0,v0,16292
  476330:	8c420000 	lw	v0,0(v0)
  476334:	00000000 	nop
  476338:	1040000b 	beqz	v0,476368 <init_virtual_ip+0x400>
  47633c:	00000000 	nop
  476340:	8f848018 	lw	a0,-32744(gp)
  476344:	00000000 	nop
  476348:	24843fa4 	addiu	a0,a0,16292
  47634c:	8c840000 	lw	a0,0(a0)
  476350:	8f998094 	lw	t9,-32620(gp)
  476354:	00000000 	nop
  476358:	0320f809 	jalr	t9
  47635c:	00000000 	nop
  476360:	8fdc0018 	lw	gp,24(s8)
  476364:	00000000 	nop
	    private_net_ko = NULL;
  476368:	8f818018 	lw	at,-32744(gp)
  47636c:	00000000 	nop
  476370:	24213fa4 	addiu	at,at,16292
  476374:	ac200000 	sw	zero,0(at)
  476378:	10000072 	b	476544 <init_virtual_ip+0x5dc>
  47637c:	00000000 	nop
	}
	else {
	    /** Fill **/
	    str = private_list;
  476380:	8fc20070 	lw	v0,112(s8)
  476384:	00000000 	nop
  476388:	afc20024 	sw	v0,36(s8)
	    i_ok = 0;
  47638c:	a7c0002a 	sh	zero,42(s8)
	    i_ko = 0;
  476390:	a7c0002c 	sh	zero,44(s8)
	    while (str) {
  476394:	8fc20024 	lw	v0,36(s8)
  476398:	00000000 	nop
  47639c:	14400003 	bnez	v0,4763ac <init_virtual_ip+0x444>
  4763a0:	00000000 	nop
  4763a4:	10000067 	b	476544 <init_virtual_ip+0x5dc>
  4763a8:	00000000 	nop
		next = strchr(str,',');
  4763ac:	8fc40024 	lw	a0,36(s8)
  4763b0:	2405002c 	li	a1,44
  4763b4:	8f99813c 	lw	t9,-32452(gp)
  4763b8:	00000000 	nop
  4763bc:	0320f809 	jalr	t9
  4763c0:	00000000 	nop
  4763c4:	8fdc0018 	lw	gp,24(s8)
  4763c8:	afc20020 	sw	v0,32(s8)
		if (!next) next = str + strlen(str);
  4763cc:	8fc20020 	lw	v0,32(s8)
  4763d0:	00000000 	nop
  4763d4:	1440000c 	bnez	v0,476408 <init_virtual_ip+0x4a0>
  4763d8:	00000000 	nop
  4763dc:	8fc40024 	lw	a0,36(s8)
  4763e0:	8f998188 	lw	t9,-32376(gp)
  4763e4:	00000000 	nop
  4763e8:	0320f809 	jalr	t9
  4763ec:	00000000 	nop
  4763f0:	8fdc0018 	lw	gp,24(s8)
  4763f4:	00401821 	move	v1,v0
  4763f8:	8fc20024 	lw	v0,36(s8)
  4763fc:	00000000 	nop
  476400:	00431021 	addu	v0,v0,v1
  476404:	afc20020 	sw	v0,32(s8)
		if (_read_subnet(str, next-str,
		   &(private_net_ok[i_ok]), &(private_net_ko[i_ko]), &ok)) {
  476408:	8fc30020 	lw	v1,32(s8)
  47640c:	8fc20024 	lw	v0,36(s8)
  476410:	00000000 	nop
  476414:	00622823 	subu	a1,v1,v0
  476418:	97c2002a 	lhu	v0,42(s8)
  47641c:	00000000 	nop
  476420:	00021940 	sll	v1,v0,0x5
  476424:	8f828018 	lw	v0,-32744(gp)
  476428:	00000000 	nop
  47642c:	24423fa0 	addiu	v0,v0,16288
  476430:	8c420000 	lw	v0,0(v0)
  476434:	00000000 	nop
  476438:	00623021 	addu	a2,v1,v0
  47643c:	97c2002c 	lhu	v0,44(s8)
  476440:	00000000 	nop
  476444:	00021940 	sll	v1,v0,0x5
  476448:	8f828018 	lw	v0,-32744(gp)
  47644c:	00000000 	nop
  476450:	24423fa4 	addiu	v0,v0,16292
  476454:	8c420000 	lw	v0,0(v0)
  476458:	00000000 	nop
  47645c:	00621821 	addu	v1,v1,v0
  476460:	27c20050 	addiu	v0,s8,80
  476464:	afa20010 	sw	v0,16(sp)
  476468:	8fc40024 	lw	a0,36(s8)
  47646c:	00603821 	move	a3,v1
  476470:	8f998040 	lw	t9,-32704(gp)
  476474:	00000000 	nop
  476478:	27395c80 	addiu	t9,t9,23680
  47647c:	00000000 	nop
  476480:	0320f809 	jalr	t9
  476484:	00000000 	nop
  476488:	8fdc0018 	lw	gp,24(s8)
  47648c:	1040000f 	beqz	v0,4764cc <init_virtual_ip+0x564>
  476490:	00000000 	nop
		    if (ok)
  476494:	8fc20050 	lw	v0,80(s8)
  476498:	00000000 	nop
  47649c:	10400007 	beqz	v0,4764bc <init_virtual_ip+0x554>
  4764a0:	00000000 	nop
			i_ok++;
  4764a4:	97c2002a 	lhu	v0,42(s8)
  4764a8:	00000000 	nop
  4764ac:	24420001 	addiu	v0,v0,1
  4764b0:	a7c2002a 	sh	v0,42(s8)
  4764b4:	10000005 	b	4764cc <init_virtual_ip+0x564>
  4764b8:	00000000 	nop
		    else
			i_ko++;
  4764bc:	97c2002c 	lhu	v0,44(s8)
  4764c0:	00000000 	nop
  4764c4:	24420001 	addiu	v0,v0,1
  4764c8:	a7c2002c 	sh	v0,44(s8)
		}
		str = *next ? next+1 : NULL;
  4764cc:	8fc20020 	lw	v0,32(s8)
  4764d0:	00000000 	nop
  4764d4:	80420000 	lb	v0,0(v0)
  4764d8:	00000000 	nop
  4764dc:	10400007 	beqz	v0,4764fc <init_virtual_ip+0x594>
  4764e0:	00000000 	nop
  4764e4:	8fc20020 	lw	v0,32(s8)
  4764e8:	00000000 	nop
  4764ec:	24420001 	addiu	v0,v0,1
  4764f0:	afc20058 	sw	v0,88(s8)
  4764f4:	10000002 	b	476500 <init_virtual_ip+0x598>
  4764f8:	00000000 	nop
  4764fc:	afc00058 	sw	zero,88(s8)
  476500:	8fc20058 	lw	v0,88(s8)
  476504:	00000000 	nop
  476508:	afc20024 	sw	v0,36(s8)
  47650c:	1000ffa1 	b	476394 <init_virtual_ip+0x42c>
  476510:	00000000 	nop
	    }
	}
    }
    else {
	loglog(RC_LOG_SERIOUS,
  476514:	97c20028 	lhu	v0,40(s8)
  476518:	24040003 	li	a0,3
  47651c:	8f85802c 	lw	a1,-32724(gp)
  476520:	00000000 	nop
  476524:	24a56af8 	addiu	a1,a1,27384
  476528:	00403021 	move	a2,v0
  47652c:	8f998c48 	lw	t9,-29624(gp)
  476530:	00000000 	nop
  476534:	0320f809 	jalr	t9
  476538:	00000000 	nop
  47653c:	8fdc0018 	lw	gp,24(s8)
  476540:	00000000 	nop
	    "%d bad entries in virtual_private - none loaded", ign);
    }
}
  476544:	03c0e821 	move	sp,s8
  476548:	8fbf0068 	lw	ra,104(sp)
  47654c:	8fbe0064 	lw	s8,100(sp)
  476550:	27bd0070 	addiu	sp,sp,112
  476554:	03e00008 	jr	ra
  476558:	00000000 	nop

0047655c <create_virtual>:
  47655c:	3c1c0fb9 	lui	gp,0xfb9
  476560:	279c6414 	addiu	gp,gp,25620
  476564:	0399e021 	addu	gp,gp,t9
  476568:	27bdff88 	addiu	sp,sp,-120
  47656c:	afbc0018 	sw	gp,24(sp)
  476570:	afbf0070 	sw	ra,112(sp)
  476574:	afbe006c 	sw	s8,108(sp)
  476578:	afbc0068 	sw	gp,104(sp)
  47657c:	03a0f021 	move	s8,sp
  476580:	afc40078 	sw	a0,120(s8)
  476584:	afc5007c 	sw	a1,124(s8)

/**
 * virtual string must be :
 * {vhost,vnet}:[%method]*
 *
 * vhost = accept only a host (/32)
 * vnet  = accept any network
 *
 * %no   = no virtual IP (accept public IP)
 * %dhcp = accept DHCP SA (0.0.0.0/0) of affected IP  [not implemented]
 * %ike  = accept affected IKE Config Mode IP         [not implemented]
 * %priv = accept system-wide private net list
 * %v4:x = accept ipv4 in list 'x'
 * %v6:x = accept ipv6 in list 'x'
 * %all  = accept all ips                             [only for testing]
 *
 * ex: vhost:%no,%dhcp,%priv,%v4:192.168.1.0/24
 */
struct virtual_t
*create_virtual(const struct connection *c, const char *string)
{
    unsigned short flags=0, n_net=0, i;
  476588:	a7c00020 	sh	zero,32(s8)
  47658c:	a7c00022 	sh	zero,34(s8)
    const char *str = string, *next, *first_net=NULL;
  476590:	8fc2007c 	lw	v0,124(s8)
  476594:	00000000 	nop
  476598:	afc20028 	sw	v0,40(s8)
  47659c:	afc00030 	sw	zero,48(s8)
    ip_subnet sub;
    struct virtual_t *v;

    if ((!string) || (string[0]=='\0')) return NULL;
  4765a0:	8fc2007c 	lw	v0,124(s8)
  4765a4:	00000000 	nop
  4765a8:	10400007 	beqz	v0,4765c8 <create_virtual+0x6c>
  4765ac:	00000000 	nop
  4765b0:	8fc2007c 	lw	v0,124(s8)
  4765b4:	00000000 	nop
  4765b8:	80420000 	lb	v0,0(v0)
  4765bc:	00000000 	nop
  4765c0:	14400004 	bnez	v0,4765d4 <create_virtual+0x78>
  4765c4:	00000000 	nop
  4765c8:	00001021 	move	v0,zero
  4765cc:	10000161 	b	476b54 <create_virtual+0x5f8>
  4765d0:	00000000 	nop

    if ((strlen(string)>=6) && (strncmp(string,"vhost:",6)==0)) {
  4765d4:	8fc4007c 	lw	a0,124(s8)
  4765d8:	8f998188 	lw	t9,-32376(gp)
  4765dc:	00000000 	nop
  4765e0:	0320f809 	jalr	t9
  4765e4:	00000000 	nop
  4765e8:	8fdc0018 	lw	gp,24(s8)
  4765ec:	2c420006 	sltiu	v0,v0,6
  4765f0:	14400017 	bnez	v0,476650 <create_virtual+0xf4>
  4765f4:	00000000 	nop
  4765f8:	8fc4007c 	lw	a0,124(s8)
  4765fc:	8f85802c 	lw	a1,-32724(gp)
  476600:	00000000 	nop
  476604:	24a56b28 	addiu	a1,a1,27432
  476608:	24060006 	li	a2,6
  47660c:	8f99864c 	lw	t9,-31156(gp)
  476610:	00000000 	nop
  476614:	0320f809 	jalr	t9
  476618:	00000000 	nop
  47661c:	8fdc0018 	lw	gp,24(s8)
  476620:	1440000b 	bnez	v0,476650 <create_virtual+0xf4>
  476624:	00000000 	nop
	flags |= F_VIRTUAL_HOST;
  476628:	97c20020 	lhu	v0,32(s8)
  47662c:	00000000 	nop
  476630:	34420020 	ori	v0,v0,0x20
  476634:	a7c20020 	sh	v0,32(s8)
	str += 6;
  476638:	8fc20028 	lw	v0,40(s8)
  47663c:	00000000 	nop
  476640:	24420006 	addiu	v0,v0,6
  476644:	afc20028 	sw	v0,40(s8)
  476648:	1000001a 	b	4766b4 <create_virtual+0x158>
  47664c:	00000000 	nop
    }
    else if ((strlen(string)>=5) && (strncmp(string,"vnet:",5)==0)) {
  476650:	8fc4007c 	lw	a0,124(s8)
  476654:	8f998188 	lw	t9,-32376(gp)
  476658:	00000000 	nop
  47665c:	0320f809 	jalr	t9
  476660:	00000000 	nop
  476664:	8fdc0018 	lw	gp,24(s8)
  476668:	2c420005 	sltiu	v0,v0,5
  47666c:	1440012b 	bnez	v0,476b1c <create_virtual+0x5c0>
  476670:	00000000 	nop
  476674:	8fc4007c 	lw	a0,124(s8)
  476678:	8f85802c 	lw	a1,-32724(gp)
  47667c:	00000000 	nop
  476680:	24a56b30 	addiu	a1,a1,27440
  476684:	24060005 	li	a2,5
  476688:	8f99864c 	lw	t9,-31156(gp)
  47668c:	00000000 	nop
  476690:	0320f809 	jalr	t9
  476694:	00000000 	nop
  476698:	8fdc0018 	lw	gp,24(s8)
  47669c:	1440011f 	bnez	v0,476b1c <create_virtual+0x5c0>
  4766a0:	00000000 	nop
	str += 5;
  4766a4:	8fc20028 	lw	v0,40(s8)
  4766a8:	00000000 	nop
  4766ac:	24420005 	addiu	v0,v0,5
  4766b0:	afc20028 	sw	v0,40(s8)
    }
    else {
	goto fail;
  4766b4:	00000000 	nop
    }

    /**
     * Parse string : fill flags & count subnets
     */
    while ((str) && (*str)) {
  4766b8:	8fc20028 	lw	v0,40(s8)
  4766bc:	00000000 	nop
  4766c0:	1040009a 	beqz	v0,47692c <create_virtual+0x3d0>
  4766c4:	00000000 	nop
  4766c8:	8fc20028 	lw	v0,40(s8)
  4766cc:	00000000 	nop
  4766d0:	80420000 	lb	v0,0(v0)
  4766d4:	00000000 	nop
  4766d8:	14400003 	bnez	v0,4766e8 <create_virtual+0x18c>
  4766dc:	00000000 	nop
  4766e0:	10000092 	b	47692c <create_virtual+0x3d0>
  4766e4:	00000000 	nop
	next = strchr(str,',');
  4766e8:	8fc40028 	lw	a0,40(s8)
  4766ec:	2405002c 	li	a1,44
  4766f0:	8f99813c 	lw	t9,-32452(gp)
  4766f4:	00000000 	nop
  4766f8:	0320f809 	jalr	t9
  4766fc:	00000000 	nop
  476700:	8fdc0018 	lw	gp,24(s8)
  476704:	afc2002c 	sw	v0,44(s8)
	if (!next) next = str + strlen(str);
  476708:	8fc2002c 	lw	v0,44(s8)
  47670c:	00000000 	nop
  476710:	1440000c 	bnez	v0,476744 <create_virtual+0x1e8>
  476714:	00000000 	nop
  476718:	8fc40028 	lw	a0,40(s8)
  47671c:	8f998188 	lw	t9,-32376(gp)
  476720:	00000000 	nop
  476724:	0320f809 	jalr	t9
  476728:	00000000 	nop
  47672c:	8fdc0018 	lw	gp,24(s8)
  476730:	00401821 	move	v1,v0
  476734:	8fc20028 	lw	v0,40(s8)
  476738:	00000000 	nop
  47673c:	00431021 	addu	v0,v0,v1
  476740:	afc2002c 	sw	v0,44(s8)
	if ((next-str == 3) && (strncmp(str, "%no", 3)==0)) {
  476744:	8fc3002c 	lw	v1,44(s8)
  476748:	8fc20028 	lw	v0,40(s8)
  47674c:	00000000 	nop
  476750:	00621823 	subu	v1,v1,v0
  476754:	24020003 	li	v0,3
  476758:	14620013 	bne	v1,v0,4767a8 <create_virtual+0x24c>
  47675c:	00000000 	nop
  476760:	8fc40028 	lw	a0,40(s8)
  476764:	8f85802c 	lw	a1,-32724(gp)
  476768:	00000000 	nop
  47676c:	24a56b38 	addiu	a1,a1,27448
  476770:	24060003 	li	a2,3
  476774:	8f99864c 	lw	t9,-31156(gp)
  476778:	00000000 	nop
  47677c:	0320f809 	jalr	t9
  476780:	00000000 	nop
  476784:	8fdc0018 	lw	gp,24(s8)
  476788:	14400007 	bnez	v0,4767a8 <create_virtual+0x24c>
  47678c:	00000000 	nop
	    flags |= F_VIRTUAL_NO;
  476790:	97c20020 	lhu	v0,32(s8)
  476794:	00000000 	nop
  476798:	34420001 	ori	v0,v0,0x1
  47679c:	a7c20020 	sh	v0,32(s8)
  4767a0:	10000050 	b	4768e4 <create_virtual+0x388>
  4767a4:	00000000 	nop
	}
#if 0
	else if ((next-str == 4) && (strncmp(str, "%ike", 4)==0)) {
	    flags |= F_VIRTUAL_IKE_CONFIG;
	}
	else if ((next-str == 5) && (strncmp(str, "%dhcp", 5)==0)) {
	    flags |= F_VIRTUAL_DHCP;
	}
#endif
	else if ((next-str == 5) && (strncmp(str, "%priv", 5)==0)) {
  4767a8:	8fc3002c 	lw	v1,44(s8)
  4767ac:	8fc20028 	lw	v0,40(s8)
  4767b0:	00000000 	nop
  4767b4:	00621823 	subu	v1,v1,v0
  4767b8:	24020005 	li	v0,5
  4767bc:	14620013 	bne	v1,v0,47680c <create_virtual+0x2b0>
  4767c0:	00000000 	nop
  4767c4:	8fc40028 	lw	a0,40(s8)
  4767c8:	8f85802c 	lw	a1,-32724(gp)
  4767cc:	00000000 	nop
  4767d0:	24a56b3c 	addiu	a1,a1,27452
  4767d4:	24060005 	li	a2,5
  4767d8:	8f99864c 	lw	t9,-31156(gp)
  4767dc:	00000000 	nop
  4767e0:	0320f809 	jalr	t9
  4767e4:	00000000 	nop
  4767e8:	8fdc0018 	lw	gp,24(s8)
  4767ec:	14400007 	bnez	v0,47680c <create_virtual+0x2b0>
  4767f0:	00000000 	nop
	    flags |= F_VIRTUAL_PRIVATE;
  4767f4:	97c20020 	lhu	v0,32(s8)
  4767f8:	00000000 	nop
  4767fc:	34420008 	ori	v0,v0,0x8
  476800:	a7c20020 	sh	v0,32(s8)
  476804:	10000037 	b	4768e4 <create_virtual+0x388>
  476808:	00000000 	nop
	}
	else if ((next-str == 4) && (strncmp(str, "%all", 4)==0)) {
  47680c:	8fc3002c 	lw	v1,44(s8)
  476810:	8fc20028 	lw	v0,40(s8)
  476814:	00000000 	nop
  476818:	00621823 	subu	v1,v1,v0
  47681c:	24020004 	li	v0,4
  476820:	14620013 	bne	v1,v0,476870 <create_virtual+0x314>
  476824:	00000000 	nop
  476828:	8fc40028 	lw	a0,40(s8)
  47682c:	8f85802c 	lw	a1,-32724(gp)
  476830:	00000000 	nop
  476834:	24a56b44 	addiu	a1,a1,27460
  476838:	24060004 	li	a2,4
  47683c:	8f99864c 	lw	t9,-31156(gp)
  476840:	00000000 	nop
  476844:	0320f809 	jalr	t9
  476848:	00000000 	nop
  47684c:	8fdc0018 	lw	gp,24(s8)
  476850:	14400007 	bnez	v0,476870 <create_virtual+0x314>
  476854:	00000000 	nop
	    flags |= F_VIRTUAL_ALL;
  476858:	97c20020 	lhu	v0,32(s8)
  47685c:	00000000 	nop
  476860:	34420010 	ori	v0,v0,0x10
  476864:	a7c20020 	sh	v0,32(s8)
  476868:	1000001e 	b	4768e4 <create_virtual+0x388>
  47686c:	00000000 	nop
	}
	else if (_read_subnet(str, next-str, &sub, NULL, NULL)) {
  476870:	8fc3002c 	lw	v1,44(s8)
  476874:	8fc20028 	lw	v0,40(s8)
  476878:	00000000 	nop
  47687c:	00621023 	subu	v0,v1,v0
  476880:	afa00010 	sw	zero,16(sp)
  476884:	8fc40028 	lw	a0,40(s8)
  476888:	00402821 	move	a1,v0
  47688c:	27c60038 	addiu	a2,s8,56
  476890:	00003821 	move	a3,zero
  476894:	8f998040 	lw	t9,-32704(gp)
  476898:	00000000 	nop
  47689c:	27395c80 	addiu	t9,t9,23680
  4768a0:	00000000 	nop
  4768a4:	0320f809 	jalr	t9
  4768a8:	00000000 	nop
  4768ac:	8fdc0018 	lw	gp,24(s8)
  4768b0:	1040009a 	beqz	v0,476b1c <create_virtual+0x5c0>
  4768b4:	00000000 	nop
	    n_net++;
  4768b8:	97c20022 	lhu	v0,34(s8)
  4768bc:	00000000 	nop
  4768c0:	24420001 	addiu	v0,v0,1
  4768c4:	a7c20022 	sh	v0,34(s8)
	    if (!first_net) first_net = str;
  4768c8:	8fc20030 	lw	v0,48(s8)
  4768cc:	00000000 	nop
  4768d0:	14400004 	bnez	v0,4768e4 <create_virtual+0x388>
  4768d4:	00000000 	nop
  4768d8:	8fc20028 	lw	v0,40(s8)
  4768dc:	00000000 	nop
  4768e0:	afc20030 	sw	v0,48(s8)
	}
	else {
	    goto fail;
	}
	str = *next ? next+1 : NULL;
  4768e4:	8fc2002c 	lw	v0,44(s8)
  4768e8:	00000000 	nop
  4768ec:	80420000 	lb	v0,0(v0)
  4768f0:	00000000 	nop
  4768f4:	10400007 	beqz	v0,476914 <create_virtual+0x3b8>
  4768f8:	00000000 	nop
  4768fc:	8fc2002c 	lw	v0,44(s8)
  476900:	00000000 	nop
  476904:	24420001 	addiu	v0,v0,1
  476908:	afc2005c 	sw	v0,92(s8)
  47690c:	10000002 	b	476918 <create_virtual+0x3bc>
  476910:	00000000 	nop
  476914:	afc0005c 	sw	zero,92(s8)
  476918:	8fc2005c 	lw	v0,92(s8)
  47691c:	00000000 	nop
  476920:	afc20028 	sw	v0,40(s8)
  476924:	1000ff64 	b	4766b8 <create_virtual+0x15c>
  476928:	00000000 	nop
    }

    v = (struct virtual_t *)alloc_bytes(
  47692c:	97c20022 	lhu	v0,34(s8)
  476930:	00000000 	nop
  476934:	00021140 	sll	v0,v0,0x5
  476938:	24420004 	addiu	v0,v0,4
  47693c:	00402021 	move	a0,v0
  476940:	8f85802c 	lw	a1,-32724(gp)
  476944:	00000000 	nop
  476948:	24a56b4c 	addiu	a1,a1,27468
  47694c:	8f998084 	lw	t9,-32636(gp)
  476950:	00000000 	nop
  476954:	0320f809 	jalr	t9
  476958:	00000000 	nop
  47695c:	8fdc0018 	lw	gp,24(s8)
  476960:	afc20058 	sw	v0,88(s8)
	sizeof(struct virtual_t) + (n_net*sizeof(ip_subnet)),
	"virtual description");
    if (!v) goto fail;
  476964:	8fc20058 	lw	v0,88(s8)
  476968:	00000000 	nop
  47696c:	14400003 	bnez	v0,47697c <create_virtual+0x420>
  476970:	00000000 	nop
  476974:	10000069 	b	476b1c <create_virtual+0x5c0>
  476978:	00000000 	nop

    v->flags = flags;
  47697c:	97c30020 	lhu	v1,32(s8)
  476980:	8fc20058 	lw	v0,88(s8)
  476984:	00000000 	nop
  476988:	a4430000 	sh	v1,0(v0)
    v->n_net = n_net;
  47698c:	97c30022 	lhu	v1,34(s8)
  476990:	8fc20058 	lw	v0,88(s8)
  476994:	00000000 	nop
  476998:	a4430002 	sh	v1,2(v0)
    if (n_net && first_net) {
  47699c:	97c20022 	lhu	v0,34(s8)
  4769a0:	00000000 	nop
  4769a4:	1040005a 	beqz	v0,476b10 <create_virtual+0x5b4>
  4769a8:	00000000 	nop
  4769ac:	8fc20030 	lw	v0,48(s8)
  4769b0:	00000000 	nop
  4769b4:	10400056 	beqz	v0,476b10 <create_virtual+0x5b4>
  4769b8:	00000000 	nop
	/**
	 * Save subnets in newly allocated struct
	 */
	for (str=first_net, i=0; (str) && (*str); ) {
  4769bc:	8fc20030 	lw	v0,48(s8)
  4769c0:	00000000 	nop
  4769c4:	afc20028 	sw	v0,40(s8)
  4769c8:	a7c00024 	sh	zero,36(s8)
  4769cc:	8fc20028 	lw	v0,40(s8)
  4769d0:	00000000 	nop
  4769d4:	1040004e 	beqz	v0,476b10 <create_virtual+0x5b4>
  4769d8:	00000000 	nop
  4769dc:	8fc20028 	lw	v0,40(s8)
  4769e0:	00000000 	nop
  4769e4:	80420000 	lb	v0,0(v0)
  4769e8:	00000000 	nop
  4769ec:	14400003 	bnez	v0,4769fc <create_virtual+0x4a0>
  4769f0:	00000000 	nop
  4769f4:	10000046 	b	476b10 <create_virtual+0x5b4>
  4769f8:	00000000 	nop
	    next = strchr(str,',');
  4769fc:	8fc40028 	lw	a0,40(s8)
  476a00:	2405002c 	li	a1,44
  476a04:	8f99813c 	lw	t9,-32452(gp)
  476a08:	00000000 	nop
  476a0c:	0320f809 	jalr	t9
  476a10:	00000000 	nop
  476a14:	8fdc0018 	lw	gp,24(s8)
  476a18:	afc2002c 	sw	v0,44(s8)
	    if (!next) next = str + strlen(str);
  476a1c:	8fc2002c 	lw	v0,44(s8)
  476a20:	00000000 	nop
  476a24:	1440000c 	bnez	v0,476a58 <create_virtual+0x4fc>
  476a28:	00000000 	nop
  476a2c:	8fc40028 	lw	a0,40(s8)
  476a30:	8f998188 	lw	t9,-32376(gp)
  476a34:	00000000 	nop
  476a38:	0320f809 	jalr	t9
  476a3c:	00000000 	nop
  476a40:	8fdc0018 	lw	gp,24(s8)
  476a44:	00401821 	move	v1,v0
  476a48:	8fc20028 	lw	v0,40(s8)
  476a4c:	00000000 	nop
  476a50:	00431021 	addu	v0,v0,v1
  476a54:	afc2002c 	sw	v0,44(s8)
	    if (_read_subnet(str, next-str, &(v->net[i]), NULL, NULL))
  476a58:	8fc3002c 	lw	v1,44(s8)
  476a5c:	8fc20028 	lw	v0,40(s8)
  476a60:	00000000 	nop
  476a64:	00622823 	subu	a1,v1,v0
  476a68:	97c20024 	lhu	v0,36(s8)
  476a6c:	00000000 	nop
  476a70:	00021940 	sll	v1,v0,0x5
  476a74:	8fc20058 	lw	v0,88(s8)
  476a78:	00000000 	nop
  476a7c:	00621021 	addu	v0,v1,v0
  476a80:	24420004 	addiu	v0,v0,4
  476a84:	afa00010 	sw	zero,16(sp)
  476a88:	8fc40028 	lw	a0,40(s8)
  476a8c:	00403021 	move	a2,v0
  476a90:	00003821 	move	a3,zero
  476a94:	8f998040 	lw	t9,-32704(gp)
  476a98:	00000000 	nop
  476a9c:	27395c80 	addiu	t9,t9,23680
  476aa0:	00000000 	nop
  476aa4:	0320f809 	jalr	t9
  476aa8:	00000000 	nop
  476aac:	8fdc0018 	lw	gp,24(s8)
  476ab0:	10400005 	beqz	v0,476ac8 <create_virtual+0x56c>
  476ab4:	00000000 	nop
		i++;
  476ab8:	97c20024 	lhu	v0,36(s8)
  476abc:	00000000 	nop
  476ac0:	24420001 	addiu	v0,v0,1
  476ac4:	a7c20024 	sh	v0,36(s8)
	    str = *next ? next+1 : NULL;
  476ac8:	8fc2002c 	lw	v0,44(s8)
  476acc:	00000000 	nop
  476ad0:	80420000 	lb	v0,0(v0)
  476ad4:	00000000 	nop
  476ad8:	10400007 	beqz	v0,476af8 <create_virtual+0x59c>
  476adc:	00000000 	nop
  476ae0:	8fc2002c 	lw	v0,44(s8)
  476ae4:	00000000 	nop
  476ae8:	24420001 	addiu	v0,v0,1
  476aec:	afc20060 	sw	v0,96(s8)
  476af0:	10000002 	b	476afc <create_virtual+0x5a0>
  476af4:	00000000 	nop
  476af8:	afc00060 	sw	zero,96(s8)
  476afc:	8fc20060 	lw	v0,96(s8)
  476b00:	00000000 	nop
  476b04:	afc20028 	sw	v0,40(s8)
  476b08:	1000ffb0 	b	4769cc <create_virtual+0x470>
  476b0c:	00000000 	nop
	}
    }

    return v;
  476b10:	8fc20058 	lw	v0,88(s8)
  476b14:	1000000f 	b	476b54 <create_virtual+0x5f8>
  476b18:	00000000 	nop

fail:
    plog("invalid virtual string [%s] - "
  476b1c:	8f84802c 	lw	a0,-32724(gp)
  476b20:	00000000 	nop
  476b24:	24846b60 	addiu	a0,a0,27488
  476b28:	8fc5007c 	lw	a1,124(s8)
  476b2c:	8fc20078 	lw	v0,120(s8)
  476b30:	00000000 	nop
  476b34:	8c460000 	lw	a2,0(v0)
  476b38:	8f998abc 	lw	t9,-30020(gp)
  476b3c:	00000000 	nop
  476b40:	0320f809 	jalr	t9
  476b44:	00000000 	nop
  476b48:	8fdc0018 	lw	gp,24(s8)
  476b4c:	00000000 	nop
	"virtual selection disabled for connection '%s'", string, c->name);
    return NULL;
  476b50:	00001021 	move	v0,zero
}
  476b54:	03c0e821 	move	sp,s8
  476b58:	8fbf0070 	lw	ra,112(sp)
  476b5c:	8fbe006c 	lw	s8,108(sp)
  476b60:	27bd0078 	addiu	sp,sp,120
  476b64:	03e00008 	jr	ra
  476b68:	00000000 	nop

00476b6c <is_virtual_end>:
  476b6c:	3c1c0fb9 	lui	gp,0xfb9
  476b70:	279c5e04 	addiu	gp,gp,24068
  476b74:	0399e021 	addu	gp,gp,t9
  476b78:	27bdfff0 	addiu	sp,sp,-16
  476b7c:	afbc0000 	sw	gp,0(sp)
  476b80:	afbe000c 	sw	s8,12(sp)
  476b84:	afbc0008 	sw	gp,8(sp)
  476b88:	03a0f021 	move	s8,sp
  476b8c:	afc40010 	sw	a0,16(s8)

bool
is_virtual_end(const struct end *that)
{
    return ((that->virt)?TRUE:FALSE);
  476b90:	8fc20010 	lw	v0,16(s8)
  476b94:	00000000 	nop
  476b98:	8c4200ac 	lw	v0,172(v0)
  476b9c:	00000000 	nop
  476ba0:	0002102b 	sltu	v0,zero,v0
}
  476ba4:	03c0e821 	move	sp,s8
  476ba8:	8fbe000c 	lw	s8,12(sp)
  476bac:	27bd0010 	addiu	sp,sp,16
  476bb0:	03e00008 	jr	ra
  476bb4:	00000000 	nop

00476bb8 <is_virtual_connection>:
  476bb8:	3c1c0fb9 	lui	gp,0xfb9
  476bbc:	279c5db8 	addiu	gp,gp,23992
  476bc0:	0399e021 	addu	gp,gp,t9
  476bc4:	27bdfff0 	addiu	sp,sp,-16
  476bc8:	afbc0000 	sw	gp,0(sp)
  476bcc:	afbe000c 	sw	s8,12(sp)
  476bd0:	afbc0008 	sw	gp,8(sp)
  476bd4:	03a0f021 	move	s8,sp
  476bd8:	afc40010 	sw	a0,16(s8)

bool
is_virtual_connection(const struct connection *c)
{
    return ((c->that.virt)?TRUE:FALSE);
  476bdc:	8fc20010 	lw	v0,16(s8)
  476be0:	00000000 	nop
  476be4:	8c42018c 	lw	v0,396(v0)
  476be8:	00000000 	nop
  476bec:	0002102b 	sltu	v0,zero,v0
}
  476bf0:	03c0e821 	move	sp,s8
  476bf4:	8fbe000c 	lw	s8,12(sp)
  476bf8:	27bd0010 	addiu	sp,sp,16
  476bfc:	03e00008 	jr	ra
  476c00:	00000000 	nop

00476c04 <net_in_list>:
  476c04:	3c1c0fb9 	lui	gp,0xfb9
  476c08:	279c5d6c 	addiu	gp,gp,23916
  476c0c:	0399e021 	addu	gp,gp,t9
  476c10:	27bdffd0 	addiu	sp,sp,-48
  476c14:	afbc0010 	sw	gp,16(sp)
  476c18:	afbf0028 	sw	ra,40(sp)
  476c1c:	afbe0024 	sw	s8,36(sp)
  476c20:	afbc0020 	sw	gp,32(sp)
  476c24:	03a0f021 	move	s8,sp
  476c28:	afc40030 	sw	a0,48(s8)
  476c2c:	afc50034 	sw	a1,52(s8)
  476c30:	00c01021 	move	v0,a2
  476c34:	a7c20018 	sh	v0,24(s8)

static bool
net_in_list(const ip_subnet *peer_net, const ip_subnet *list,
    unsigned short len)
{
    unsigned short i;
    if (!list || !len) return FALSE;
  476c38:	8fc20034 	lw	v0,52(s8)
  476c3c:	00000000 	nop
  476c40:	10400005 	beqz	v0,476c58 <net_in_list+0x54>
  476c44:	00000000 	nop
  476c48:	97c20018 	lhu	v0,24(s8)
  476c4c:	00000000 	nop
  476c50:	14400004 	bnez	v0,476c64 <net_in_list+0x60>
  476c54:	00000000 	nop
  476c58:	00001021 	move	v0,zero
  476c5c:	10000023 	b	476cec <net_in_list+0xe8>
  476c60:	00000000 	nop
    for (i=0; i<len; i++) {
  476c64:	a7c0001a 	sh	zero,26(s8)
  476c68:	97c2001a 	lhu	v0,26(s8)
  476c6c:	97c30018 	lhu	v1,24(s8)
  476c70:	00000000 	nop
  476c74:	0043102b 	sltu	v0,v0,v1
  476c78:	14400003 	bnez	v0,476c88 <net_in_list+0x84>
  476c7c:	00000000 	nop
  476c80:	10000019 	b	476ce8 <net_in_list+0xe4>
  476c84:	00000000 	nop
	if (subnetinsubnet(peer_net, &(list[i])))
  476c88:	97c2001a 	lhu	v0,26(s8)
  476c8c:	00000000 	nop
  476c90:	00021940 	sll	v1,v0,0x5
  476c94:	8fc20034 	lw	v0,52(s8)
  476c98:	00000000 	nop
  476c9c:	00621021 	addu	v0,v1,v0
  476ca0:	8fc40030 	lw	a0,48(s8)
  476ca4:	00402821 	move	a1,v0
  476ca8:	8f99827c 	lw	t9,-32132(gp)
  476cac:	00000000 	nop
  476cb0:	0320f809 	jalr	t9
  476cb4:	00000000 	nop
  476cb8:	8fdc0010 	lw	gp,16(s8)
  476cbc:	10400004 	beqz	v0,476cd0 <net_in_list+0xcc>
  476cc0:	00000000 	nop
	    return TRUE;
  476cc4:	24020001 	li	v0,1
  476cc8:	10000008 	b	476cec <net_in_list+0xe8>
  476ccc:	00000000 	nop
  476cd0:	97c2001a 	lhu	v0,26(s8)
  476cd4:	00000000 	nop
  476cd8:	24420001 	addiu	v0,v0,1
  476cdc:	a7c2001a 	sh	v0,26(s8)
  476ce0:	1000ffe1 	b	476c68 <net_in_list+0x64>
  476ce4:	00000000 	nop
    }
    return FALSE;
  476ce8:	00001021 	move	v0,zero
}
  476cec:	03c0e821 	move	sp,s8
  476cf0:	8fbf0028 	lw	ra,40(sp)
  476cf4:	8fbe0024 	lw	s8,36(sp)
  476cf8:	27bd0030 	addiu	sp,sp,48
  476cfc:	03e00008 	jr	ra
  476d00:	00000000 	nop

00476d04 <is_virtual_net_allowed>:
  476d04:	3c1c0fb9 	lui	gp,0xfb9
  476d08:	279c5c6c 	addiu	gp,gp,23660
  476d0c:	0399e021 	addu	gp,gp,t9
  476d10:	27bdffd0 	addiu	sp,sp,-48
  476d14:	afbc0010 	sw	gp,16(sp)
  476d18:	afbf0028 	sw	ra,40(sp)
  476d1c:	afbe0024 	sw	s8,36(sp)
  476d20:	afbc0020 	sw	gp,32(sp)
  476d24:	03a0f021 	move	s8,sp
  476d28:	afc40030 	sw	a0,48(s8)
  476d2c:	afc50034 	sw	a1,52(s8)
  476d30:	afc60038 	sw	a2,56(s8)

bool
is_virtual_net_allowed(const struct connection *c, const ip_subnet *peer_net,
	const ip_address *his_addr)
{
    if (!c->that.virt) return FALSE;
  476d34:	8fc20030 	lw	v0,48(s8)
  476d38:	00000000 	nop
  476d3c:	8c42018c 	lw	v0,396(v0)
  476d40:	00000000 	nop
  476d44:	14400004 	bnez	v0,476d58 <is_virtual_net_allowed+0x54>
  476d48:	00000000 	nop
  476d4c:	00001021 	move	v0,zero
  476d50:	100000b7 	b	477030 <is_virtual_net_allowed+0x32c>
  476d54:	00000000 	nop

    if (c->that.virt->flags & F_VIRTUAL_HOST) {
  476d58:	8fc20030 	lw	v0,48(s8)
  476d5c:	00000000 	nop
  476d60:	8c42018c 	lw	v0,396(v0)
  476d64:	00000000 	nop
  476d68:	94420000 	lhu	v0,0(v0)
  476d6c:	00000000 	nop
  476d70:	30420020 	andi	v0,v0,0x20
  476d74:	3042ffff 	andi	v0,v0,0xffff
  476d78:	1040000c 	beqz	v0,476dac <is_virtual_net_allowed+0xa8>
  476d7c:	00000000 	nop
	if (!subnetishost(peer_net))
  476d80:	8fc40034 	lw	a0,52(s8)
  476d84:	8f99851c 	lw	t9,-31460(gp)
  476d88:	00000000 	nop
  476d8c:	0320f809 	jalr	t9
  476d90:	00000000 	nop
  476d94:	8fdc0010 	lw	gp,16(s8)
  476d98:	14400004 	bnez	v0,476dac <is_virtual_net_allowed+0xa8>
  476d9c:	00000000 	nop
	    return FALSE;
  476da0:	00001021 	move	v0,zero
  476da4:	100000a2 	b	477030 <is_virtual_net_allowed+0x32c>
  476da8:	00000000 	nop
    }

    if (c->that.virt->flags & F_VIRTUAL_NO) {
  476dac:	8fc20030 	lw	v0,48(s8)
  476db0:	00000000 	nop
  476db4:	8c42018c 	lw	v0,396(v0)
  476db8:	00000000 	nop
  476dbc:	94420000 	lhu	v0,0(v0)
  476dc0:	00000000 	nop
  476dc4:	30420001 	andi	v0,v0,0x1
  476dc8:	3042ffff 	andi	v0,v0,0xffff
  476dcc:	10400015 	beqz	v0,476e24 <is_virtual_net_allowed+0x120>
  476dd0:	00000000 	nop
	if (subnetishost(peer_net) &&
	    addrinsubnet(his_addr, peer_net))
  476dd4:	8fc40034 	lw	a0,52(s8)
  476dd8:	8f99851c 	lw	t9,-31460(gp)
  476ddc:	00000000 	nop
  476de0:	0320f809 	jalr	t9
  476de4:	00000000 	nop
  476de8:	8fdc0010 	lw	gp,16(s8)
  476dec:	1040000d 	beqz	v0,476e24 <is_virtual_net_allowed+0x120>
  476df0:	00000000 	nop
  476df4:	8fc40038 	lw	a0,56(s8)
  476df8:	8fc50034 	lw	a1,52(s8)
  476dfc:	8f998acc 	lw	t9,-30004(gp)
  476e00:	00000000 	nop
  476e04:	0320f809 	jalr	t9
  476e08:	00000000 	nop
  476e0c:	8fdc0010 	lw	gp,16(s8)
  476e10:	10400004 	beqz	v0,476e24 <is_virtual_net_allowed+0x120>
  476e14:	00000000 	nop
	    return TRUE;
  476e18:	24020001 	li	v0,1
  476e1c:	10000084 	b	477030 <is_virtual_net_allowed+0x32c>
  476e20:	00000000 	nop
    }

    if (c->that.virt->flags & F_VIRTUAL_PRIVATE) {
  476e24:	8fc20030 	lw	v0,48(s8)
  476e28:	00000000 	nop
  476e2c:	8c42018c 	lw	v0,396(v0)
  476e30:	00000000 	nop
  476e34:	94420000 	lhu	v0,0(v0)
  476e38:	00000000 	nop
  476e3c:	30420008 	andi	v0,v0,0x8
  476e40:	3042ffff 	andi	v0,v0,0xffff
  476e44:	1040002a 	beqz	v0,476ef0 <is_virtual_net_allowed+0x1ec>
  476e48:	00000000 	nop
	if (net_in_list(peer_net, private_net_ok, private_net_ok_len) &&
	    !net_in_list(peer_net, private_net_ko, private_net_ko_len))
  476e4c:	8f828018 	lw	v0,-32744(gp)
  476e50:	00000000 	nop
  476e54:	24423fa8 	addiu	v0,v0,16296
  476e58:	94420000 	lhu	v0,0(v0)
  476e5c:	8fc40034 	lw	a0,52(s8)
  476e60:	8f858018 	lw	a1,-32744(gp)
  476e64:	00000000 	nop
  476e68:	24a53fa0 	addiu	a1,a1,16288
  476e6c:	8ca50000 	lw	a1,0(a1)
  476e70:	00403021 	move	a2,v0
  476e74:	8f998040 	lw	t9,-32704(gp)
  476e78:	00000000 	nop
  476e7c:	27396c04 	addiu	t9,t9,27652
  476e80:	00000000 	nop
  476e84:	0320f809 	jalr	t9
  476e88:	00000000 	nop
  476e8c:	8fdc0010 	lw	gp,16(s8)
  476e90:	10400017 	beqz	v0,476ef0 <is_virtual_net_allowed+0x1ec>
  476e94:	00000000 	nop
  476e98:	8f828018 	lw	v0,-32744(gp)
  476e9c:	00000000 	nop
  476ea0:	24423faa 	addiu	v0,v0,16298
  476ea4:	94420000 	lhu	v0,0(v0)
  476ea8:	8fc40034 	lw	a0,52(s8)
  476eac:	8f858018 	lw	a1,-32744(gp)
  476eb0:	00000000 	nop
  476eb4:	24a53fa4 	addiu	a1,a1,16292
  476eb8:	8ca50000 	lw	a1,0(a1)
  476ebc:	00403021 	move	a2,v0
  476ec0:	8f998040 	lw	t9,-32704(gp)
  476ec4:	00000000 	nop
  476ec8:	27396c04 	addiu	t9,t9,27652
  476ecc:	00000000 	nop
  476ed0:	0320f809 	jalr	t9
  476ed4:	00000000 	nop
  476ed8:	8fdc0010 	lw	gp,16(s8)
  476edc:	14400004 	bnez	v0,476ef0 <is_virtual_net_allowed+0x1ec>
  476ee0:	00000000 	nop
	    return TRUE;
  476ee4:	24020001 	li	v0,1
  476ee8:	10000051 	b	477030 <is_virtual_net_allowed+0x32c>
  476eec:	00000000 	nop
    }

    if (c->that.virt->n_net) {
  476ef0:	8fc20030 	lw	v0,48(s8)
  476ef4:	00000000 	nop
  476ef8:	8c42018c 	lw	v0,396(v0)
  476efc:	00000000 	nop
  476f00:	94420002 	lhu	v0,2(v0)
  476f04:	00000000 	nop
  476f08:	1040001a 	beqz	v0,476f74 <is_virtual_net_allowed+0x270>
  476f0c:	00000000 	nop
	if (net_in_list(peer_net, c->that.virt->net, c->that.virt->n_net))
  476f10:	8fc20030 	lw	v0,48(s8)
  476f14:	00000000 	nop
  476f18:	8c42018c 	lw	v0,396(v0)
  476f1c:	00000000 	nop
  476f20:	24430004 	addiu	v1,v0,4
  476f24:	8fc20030 	lw	v0,48(s8)
  476f28:	00000000 	nop
  476f2c:	8c42018c 	lw	v0,396(v0)
  476f30:	00000000 	nop
  476f34:	94420002 	lhu	v0,2(v0)
  476f38:	8fc40034 	lw	a0,52(s8)
  476f3c:	00602821 	move	a1,v1
  476f40:	00403021 	move	a2,v0
  476f44:	8f998040 	lw	t9,-32704(gp)
  476f48:	00000000 	nop
  476f4c:	27396c04 	addiu	t9,t9,27652
  476f50:	00000000 	nop
  476f54:	0320f809 	jalr	t9
  476f58:	00000000 	nop
  476f5c:	8fdc0010 	lw	gp,16(s8)
  476f60:	10400004 	beqz	v0,476f74 <is_virtual_net_allowed+0x270>
  476f64:	00000000 	nop
	    return TRUE;
  476f68:	24020001 	li	v0,1
  476f6c:	10000030 	b	477030 <is_virtual_net_allowed+0x32c>
  476f70:	00000000 	nop
    }

    if (c->that.virt->flags & F_VIRTUAL_ALL) {
  476f74:	8fc20030 	lw	v0,48(s8)
  476f78:	00000000 	nop
  476f7c:	8c42018c 	lw	v0,396(v0)
  476f80:	00000000 	nop
  476f84:	94420000 	lhu	v0,0(v0)
  476f88:	00000000 	nop
  476f8c:	30420010 	andi	v0,v0,0x10
  476f90:	3042ffff 	andi	v0,v0,0xffff
  476f94:	10400025 	beqz	v0,47702c <is_virtual_net_allowed+0x328>
  476f98:	00000000 	nop
	/** %all must only be used for testing - log it **/
	loglog(RC_LOG_SERIOUS, "Warning - "
  476f9c:	8fc20030 	lw	v0,48(s8)
  476fa0:	00000000 	nop
  476fa4:	8c42018c 	lw	v0,396(v0)
  476fa8:	00000000 	nop
  476fac:	94420000 	lhu	v0,0(v0)
  476fb0:	00000000 	nop
  476fb4:	30420020 	andi	v0,v0,0x20
  476fb8:	3042ffff 	andi	v0,v0,0xffff
  476fbc:	10400008 	beqz	v0,476fe0 <is_virtual_net_allowed+0x2dc>
  476fc0:	00000000 	nop
  476fc4:	8f82802c 	lw	v0,-32724(gp)
  476fc8:	00000000 	nop
  476fcc:	24426bb0 	addiu	v0,v0,27568
  476fd0:	00000000 	nop
  476fd4:	afc20018 	sw	v0,24(s8)
  476fd8:	10000006 	b	476ff4 <is_virtual_net_allowed+0x2f0>
  476fdc:	00000000 	nop
  476fe0:	8f82802c 	lw	v0,-32724(gp)
  476fe4:	00000000 	nop
  476fe8:	24426bb8 	addiu	v0,v0,27576
  476fec:	00000000 	nop
  476ff0:	afc20018 	sw	v0,24(s8)
  476ff4:	24040003 	li	a0,3
  476ff8:	8f85802c 	lw	a1,-32724(gp)
  476ffc:	00000000 	nop
  477000:	24a56bbc 	addiu	a1,a1,27580
  477004:	8fc60018 	lw	a2,24(s8)
  477008:	8f998c48 	lw	t9,-29624(gp)
  47700c:	00000000 	nop
  477010:	0320f809 	jalr	t9
  477014:	00000000 	nop
  477018:	8fdc0010 	lw	gp,16(s8)
  47701c:	00000000 	nop
	    "v%s:%%all must only be used for testing",
	    (c->that.virt->flags & F_VIRTUAL_HOST) ? "host" : "net");
	return TRUE;
  477020:	24020001 	li	v0,1
  477024:	10000002 	b	477030 <is_virtual_net_allowed+0x32c>
  477028:	00000000 	nop
    }

    return FALSE;
  47702c:	00001021 	move	v0,zero
}
  477030:	03c0e821 	move	sp,s8
  477034:	8fbf0028 	lw	ra,40(sp)
  477038:	8fbe0024 	lw	s8,36(sp)
  47703c:	27bd0030 	addiu	sp,sp,48
  477040:	03e00008 	jr	ra
  477044:	00000000 	nop
	...

00477050 <SHA1Transform>:
  477050:	3c1c0fb9 	lui	gp,0xfb9
  477054:	279c5920 	addiu	gp,gp,22816
  477058:	0399e021 	addu	gp,gp,t9
  47705c:	27bdff80 	addiu	sp,sp,-128
  477060:	afbc0010 	sw	gp,16(sp)
  477064:	afbf0078 	sw	ra,120(sp)
  477068:	afbe0074 	sw	s8,116(sp)
  47706c:	afbc0070 	sw	gp,112(sp)
  477070:	03a0f021 	move	s8,sp
  477074:	afc40080 	sw	a0,128(s8)
  477078:	afc50084 	sw	a1,132(s8)
    u_int32_t l[16];
} CHAR64LONG16;
#ifdef SHA1HANDSOFF
CHAR64LONG16 block[1];  /* use array to appear as a pointer */
    memcpy(block, buffer, 64);
  47707c:	27c40030 	addiu	a0,s8,48
  477080:	8fc50084 	lw	a1,132(s8)
  477084:	24060040 	li	a2,64
  477088:	8f998a30 	lw	t9,-30160(gp)
  47708c:	00000000 	nop
  477090:	0320f809 	jalr	t9
  477094:	00000000 	nop
  477098:	8fdc0010 	lw	gp,16(s8)
  47709c:	00000000 	nop
#else
    /* The following had better never be used because it causes the
     * pointer-to-const buffer to be cast into a pointer to non-const.
     * And the result is written through.  I threw a "const" in, hoping
     * this will cause a diagnostic.
     */
CHAR64LONG16* block = (const CHAR64LONG16*)buffer;
#endif
    /* Copy context->state[] to working vars */
    a = state[0];
  4770a0:	8fc20080 	lw	v0,128(s8)
  4770a4:	00000000 	nop
  4770a8:	8c420000 	lw	v0,0(v0)
  4770ac:	00000000 	nop
  4770b0:	afc20018 	sw	v0,24(s8)
    b = state[1];
  4770b4:	8fc20080 	lw	v0,128(s8)
  4770b8:	00000000 	nop
  4770bc:	24420004 	addiu	v0,v0,4
  4770c0:	8c420000 	lw	v0,0(v0)
  4770c4:	00000000 	nop
  4770c8:	afc2001c 	sw	v0,28(s8)
    c = state[2];
  4770cc:	8fc20080 	lw	v0,128(s8)
  4770d0:	00000000 	nop
  4770d4:	24420008 	addiu	v0,v0,8
  4770d8:	8c420000 	lw	v0,0(v0)
  4770dc:	00000000 	nop
  4770e0:	afc20020 	sw	v0,32(s8)
    d = state[3];
  4770e4:	8fc20080 	lw	v0,128(s8)
  4770e8:	00000000 	nop
  4770ec:	2442000c 	addiu	v0,v0,12
  4770f0:	8c420000 	lw	v0,0(v0)
  4770f4:	00000000 	nop
  4770f8:	afc20024 	sw	v0,36(s8)
    e = state[4];
  4770fc:	8fc20080 	lw	v0,128(s8)
  477100:	00000000 	nop
  477104:	24420010 	addiu	v0,v0,16
  477108:	8c420000 	lw	v0,0(v0)
  47710c:	00000000 	nop
  477110:	afc20028 	sw	v0,40(s8)
    /* 4 rounds of 20 operations each. Loop unrolled. */
    R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
  477114:	8fc30020 	lw	v1,32(s8)
  477118:	8fc20024 	lw	v0,36(s8)
  47711c:	00000000 	nop
  477120:	00621826 	xor	v1,v1,v0
  477124:	8fc2001c 	lw	v0,28(s8)
  477128:	00000000 	nop
  47712c:	00621824 	and	v1,v1,v0
  477130:	8fc20024 	lw	v0,36(s8)
  477134:	00000000 	nop
  477138:	00621826 	xor	v1,v1,v0
  47713c:	8fc20030 	lw	v0,48(s8)
  477140:	00000000 	nop
  477144:	00622021 	addu	a0,v1,v0
  477148:	8fc20018 	lw	v0,24(s8)
  47714c:	00000000 	nop
  477150:	00021940 	sll	v1,v0,0x5
  477154:	000216c2 	srl	v0,v0,0x1b
  477158:	00621025 	or	v0,v1,v0
  47715c:	00821821 	addu	v1,a0,v0
  477160:	8fc20028 	lw	v0,40(s8)
  477164:	00000000 	nop
  477168:	00621021 	addu	v0,v1,v0
  47716c:	3c015a82 	lui	at,0x5a82
  477170:	34217999 	ori	at,at,0x7999
  477174:	00221021 	addu	v0,at,v0
  477178:	afc20028 	sw	v0,40(s8)
  47717c:	8fc2001c 	lw	v0,28(s8)
  477180:	00000000 	nop
  477184:	00021f80 	sll	v1,v0,0x1e
  477188:	00021082 	srl	v0,v0,0x2
  47718c:	00621025 	or	v0,v1,v0
  477190:	afc2001c 	sw	v0,28(s8)
  477194:	8fc3001c 	lw	v1,28(s8)
  477198:	8fc20020 	lw	v0,32(s8)
  47719c:	00000000 	nop
  4771a0:	00621826 	xor	v1,v1,v0
  4771a4:	8fc20018 	lw	v0,24(s8)
  4771a8:	00000000 	nop
  4771ac:	00621824 	and	v1,v1,v0
  4771b0:	8fc20020 	lw	v0,32(s8)
  4771b4:	00000000 	nop
  4771b8:	00621826 	xor	v1,v1,v0
  4771bc:	8fc20034 	lw	v0,52(s8)
  4771c0:	00000000 	nop
  4771c4:	00622021 	addu	a0,v1,v0
  4771c8:	8fc20028 	lw	v0,40(s8)
  4771cc:	00000000 	nop
  4771d0:	00021940 	sll	v1,v0,0x5
  4771d4:	000216c2 	srl	v0,v0,0x1b
  4771d8:	00621025 	or	v0,v1,v0
  4771dc:	00821821 	addu	v1,a0,v0
  4771e0:	8fc20024 	lw	v0,36(s8)
  4771e4:	00000000 	nop
  4771e8:	00621021 	addu	v0,v1,v0
  4771ec:	3c015a82 	lui	at,0x5a82
  4771f0:	34217999 	ori	at,at,0x7999
  4771f4:	00221021 	addu	v0,at,v0
  4771f8:	afc20024 	sw	v0,36(s8)
  4771fc:	8fc20018 	lw	v0,24(s8)
  477200:	00000000 	nop
  477204:	00021f80 	sll	v1,v0,0x1e
  477208:	00021082 	srl	v0,v0,0x2
  47720c:	00621025 	or	v0,v1,v0
  477210:	afc20018 	sw	v0,24(s8)
  477214:	8fc30018 	lw	v1,24(s8)
  477218:	8fc2001c 	lw	v0,28(s8)
  47721c:	00000000 	nop
  477220:	00621826 	xor	v1,v1,v0
  477224:	8fc20028 	lw	v0,40(s8)
  477228:	00000000 	nop
  47722c:	00621824 	and	v1,v1,v0
  477230:	8fc2001c 	lw	v0,28(s8)
  477234:	00000000 	nop
  477238:	00621826 	xor	v1,v1,v0
  47723c:	8fc20038 	lw	v0,56(s8)
  477240:	00000000 	nop
  477244:	00622021 	addu	a0,v1,v0
  477248:	8fc20024 	lw	v0,36(s8)
  47724c:	00000000 	nop
  477250:	00021940 	sll	v1,v0,0x5
  477254:	000216c2 	srl	v0,v0,0x1b
  477258:	00621025 	or	v0,v1,v0
  47725c:	00821821 	addu	v1,a0,v0
  477260:	8fc20020 	lw	v0,32(s8)
  477264:	00000000 	nop
  477268:	00621021 	addu	v0,v1,v0
  47726c:	3c015a82 	lui	at,0x5a82
  477270:	34217999 	ori	at,at,0x7999
  477274:	00221021 	addu	v0,at,v0
  477278:	afc20020 	sw	v0,32(s8)
  47727c:	8fc20028 	lw	v0,40(s8)
  477280:	00000000 	nop
  477284:	00021f80 	sll	v1,v0,0x1e
  477288:	00021082 	srl	v0,v0,0x2
  47728c:	00621025 	or	v0,v1,v0
  477290:	afc20028 	sw	v0,40(s8)
  477294:	8fc30028 	lw	v1,40(s8)
  477298:	8fc20018 	lw	v0,24(s8)
  47729c:	00000000 	nop
  4772a0:	00621826 	xor	v1,v1,v0
  4772a4:	8fc20024 	lw	v0,36(s8)
  4772a8:	00000000 	nop
  4772ac:	00621824 	and	v1,v1,v0
  4772b0:	8fc20018 	lw	v0,24(s8)
  4772b4:	00000000 	nop
  4772b8:	00621826 	xor	v1,v1,v0
  4772bc:	8fc2003c 	lw	v0,60(s8)
  4772c0:	00000000 	nop
  4772c4:	00622021 	addu	a0,v1,v0
  4772c8:	8fc20020 	lw	v0,32(s8)
  4772cc:	00000000 	nop
  4772d0:	00021940 	sll	v1,v0,0x5
  4772d4:	000216c2 	srl	v0,v0,0x1b
  4772d8:	00621025 	or	v0,v1,v0
  4772dc:	00821821 	addu	v1,a0,v0
  4772e0:	8fc2001c 	lw	v0,28(s8)
  4772e4:	00000000 	nop
  4772e8:	00621021 	addu	v0,v1,v0
  4772ec:	3c015a82 	lui	at,0x5a82
  4772f0:	34217999 	ori	at,at,0x7999
  4772f4:	00221021 	addu	v0,at,v0
  4772f8:	afc2001c 	sw	v0,28(s8)
  4772fc:	8fc20024 	lw	v0,36(s8)
  477300:	00000000 	nop
  477304:	00021f80 	sll	v1,v0,0x1e
  477308:	00021082 	srl	v0,v0,0x2
  47730c:	00621025 	or	v0,v1,v0
  477310:	afc20024 	sw	v0,36(s8)
    R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
  477314:	8fc30024 	lw	v1,36(s8)
  477318:	8fc20028 	lw	v0,40(s8)
  47731c:	00000000 	nop
  477320:	00621826 	xor	v1,v1,v0
  477324:	8fc20020 	lw	v0,32(s8)
  477328:	00000000 	nop
  47732c:	00621824 	and	v1,v1,v0
  477330:	8fc20028 	lw	v0,40(s8)
  477334:	00000000 	nop
  477338:	00621826 	xor	v1,v1,v0
  47733c:	8fc20040 	lw	v0,64(s8)
  477340:	00000000 	nop
  477344:	00622021 	addu	a0,v1,v0
  477348:	8fc2001c 	lw	v0,28(s8)
  47734c:	00000000 	nop
  477350:	00021940 	sll	v1,v0,0x5
  477354:	000216c2 	srl	v0,v0,0x1b
  477358:	00621025 	or	v0,v1,v0
  47735c:	00821821 	addu	v1,a0,v0
  477360:	8fc20018 	lw	v0,24(s8)
  477364:	00000000 	nop
  477368:	00621021 	addu	v0,v1,v0
  47736c:	3c015a82 	lui	at,0x5a82
  477370:	34217999 	ori	at,at,0x7999
  477374:	00221021 	addu	v0,at,v0
  477378:	afc20018 	sw	v0,24(s8)
  47737c:	8fc20020 	lw	v0,32(s8)
  477380:	00000000 	nop
  477384:	00021f80 	sll	v1,v0,0x1e
  477388:	00021082 	srl	v0,v0,0x2
  47738c:	00621025 	or	v0,v1,v0
  477390:	afc20020 	sw	v0,32(s8)
  477394:	8fc30020 	lw	v1,32(s8)
  477398:	8fc20024 	lw	v0,36(s8)
  47739c:	00000000 	nop
  4773a0:	00621826 	xor	v1,v1,v0
  4773a4:	8fc2001c 	lw	v0,28(s8)
  4773a8:	00000000 	nop
  4773ac:	00621824 	and	v1,v1,v0
  4773b0:	8fc20024 	lw	v0,36(s8)
  4773b4:	00000000 	nop
  4773b8:	00621826 	xor	v1,v1,v0
  4773bc:	8fc20044 	lw	v0,68(s8)
  4773c0:	00000000 	nop
  4773c4:	00622021 	addu	a0,v1,v0
  4773c8:	8fc20018 	lw	v0,24(s8)
  4773cc:	00000000 	nop
  4773d0:	00021940 	sll	v1,v0,0x5
  4773d4:	000216c2 	srl	v0,v0,0x1b
  4773d8:	00621025 	or	v0,v1,v0
  4773dc:	00821821 	addu	v1,a0,v0
  4773e0:	8fc20028 	lw	v0,40(s8)
  4773e4:	00000000 	nop
  4773e8:	00621021 	addu	v0,v1,v0
  4773ec:	3c015a82 	lui	at,0x5a82
  4773f0:	34217999 	ori	at,at,0x7999
  4773f4:	00221021 	addu	v0,at,v0
  4773f8:	afc20028 	sw	v0,40(s8)
  4773fc:	8fc2001c 	lw	v0,28(s8)
  477400:	00000000 	nop
  477404:	00021f80 	sll	v1,v0,0x1e
  477408:	00021082 	srl	v0,v0,0x2
  47740c:	00621025 	or	v0,v1,v0
  477410:	afc2001c 	sw	v0,28(s8)
  477414:	8fc3001c 	lw	v1,28(s8)
  477418:	8fc20020 	lw	v0,32(s8)
  47741c:	00000000 	nop
  477420:	00621826 	xor	v1,v1,v0
  477424:	8fc20018 	lw	v0,24(s8)
  477428:	00000000 	nop
  47742c:	00621824 	and	v1,v1,v0
  477430:	8fc20020 	lw	v0,32(s8)
  477434:	00000000 	nop
  477438:	00621826 	xor	v1,v1,v0
  47743c:	8fc20048 	lw	v0,72(s8)
  477440:	00000000 	nop
  477444:	00622021 	addu	a0,v1,v0
  477448:	8fc20028 	lw	v0,40(s8)
  47744c:	00000000 	nop
  477450:	00021940 	sll	v1,v0,0x5
  477454:	000216c2 	srl	v0,v0,0x1b
  477458:	00621025 	or	v0,v1,v0
  47745c:	00821821 	addu	v1,a0,v0
  477460:	8fc20024 	lw	v0,36(s8)
  477464:	00000000 	nop
  477468:	00621021 	addu	v0,v1,v0
  47746c:	3c015a82 	lui	at,0x5a82
  477470:	34217999 	ori	at,at,0x7999
  477474:	00221021 	addu	v0,at,v0
  477478:	afc20024 	sw	v0,36(s8)
  47747c:	8fc20018 	lw	v0,24(s8)
  477480:	00000000 	nop
  477484:	00021f80 	sll	v1,v0,0x1e
  477488:	00021082 	srl	v0,v0,0x2
  47748c:	00621025 	or	v0,v1,v0
  477490:	afc20018 	sw	v0,24(s8)
  477494:	8fc30018 	lw	v1,24(s8)
  477498:	8fc2001c 	lw	v0,28(s8)
  47749c:	00000000 	nop
  4774a0:	00621826 	xor	v1,v1,v0
  4774a4:	8fc20028 	lw	v0,40(s8)
  4774a8:	00000000 	nop
  4774ac:	00621824 	and	v1,v1,v0
  4774b0:	8fc2001c 	lw	v0,28(s8)
  4774b4:	00000000 	nop
  4774b8:	00621826 	xor	v1,v1,v0
  4774bc:	8fc2004c 	lw	v0,76(s8)
  4774c0:	00000000 	nop
  4774c4:	00622021 	addu	a0,v1,v0
  4774c8:	8fc20024 	lw	v0,36(s8)
  4774cc:	00000000 	nop
  4774d0:	00021940 	sll	v1,v0,0x5
  4774d4:	000216c2 	srl	v0,v0,0x1b
  4774d8:	00621025 	or	v0,v1,v0
  4774dc:	00821821 	addu	v1,a0,v0
  4774e0:	8fc20020 	lw	v0,32(s8)
  4774e4:	00000000 	nop
  4774e8:	00621021 	addu	v0,v1,v0
  4774ec:	3c015a82 	lui	at,0x5a82
  4774f0:	34217999 	ori	at,at,0x7999
  4774f4:	00221021 	addu	v0,at,v0
  4774f8:	afc20020 	sw	v0,32(s8)
  4774fc:	8fc20028 	lw	v0,40(s8)
  477500:	00000000 	nop
  477504:	00021f80 	sll	v1,v0,0x1e
  477508:	00021082 	srl	v0,v0,0x2
  47750c:	00621025 	or	v0,v1,v0
  477510:	afc20028 	sw	v0,40(s8)
    R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
  477514:	8fc30028 	lw	v1,40(s8)
  477518:	8fc20018 	lw	v0,24(s8)
  47751c:	00000000 	nop
  477520:	00621826 	xor	v1,v1,v0
  477524:	8fc20024 	lw	v0,36(s8)
  477528:	00000000 	nop
  47752c:	00621824 	and	v1,v1,v0
  477530:	8fc20018 	lw	v0,24(s8)
  477534:	00000000 	nop
  477538:	00621826 	xor	v1,v1,v0
  47753c:	8fc20050 	lw	v0,80(s8)
  477540:	00000000 	nop
  477544:	00622021 	addu	a0,v1,v0
  477548:	8fc20020 	lw	v0,32(s8)
  47754c:	00000000 	nop
  477550:	00021940 	sll	v1,v0,0x5
  477554:	000216c2 	srl	v0,v0,0x1b
  477558:	00621025 	or	v0,v1,v0
  47755c:	00821821 	addu	v1,a0,v0
  477560:	8fc2001c 	lw	v0,28(s8)
  477564:	00000000 	nop
  477568:	00621021 	addu	v0,v1,v0
  47756c:	3c015a82 	lui	at,0x5a82
  477570:	34217999 	ori	at,at,0x7999
  477574:	00221021 	addu	v0,at,v0
  477578:	afc2001c 	sw	v0,28(s8)
  47757c:	8fc20024 	lw	v0,36(s8)
  477580:	00000000 	nop
  477584:	00021f80 	sll	v1,v0,0x1e
  477588:	00021082 	srl	v0,v0,0x2
  47758c:	00621025 	or	v0,v1,v0
  477590:	afc20024 	sw	v0,36(s8)
  477594:	8fc30024 	lw	v1,36(s8)
  477598:	8fc20028 	lw	v0,40(s8)
  47759c:	00000000 	nop
  4775a0:	00621826 	xor	v1,v1,v0
  4775a4:	8fc20020 	lw	v0,32(s8)
  4775a8:	00000000 	nop
  4775ac:	00621824 	and	v1,v1,v0
  4775b0:	8fc20028 	lw	v0,40(s8)
  4775b4:	00000000 	nop
  4775b8:	00621826 	xor	v1,v1,v0
  4775bc:	8fc20054 	lw	v0,84(s8)
  4775c0:	00000000 	nop
  4775c4:	00622021 	addu	a0,v1,v0
  4775c8:	8fc2001c 	lw	v0,28(s8)
  4775cc:	00000000 	nop
  4775d0:	00021940 	sll	v1,v0,0x5
  4775d4:	000216c2 	srl	v0,v0,0x1b
  4775d8:	00621025 	or	v0,v1,v0
  4775dc:	00821821 	addu	v1,a0,v0
  4775e0:	8fc20018 	lw	v0,24(s8)
  4775e4:	00000000 	nop
  4775e8:	00621021 	addu	v0,v1,v0
  4775ec:	3c015a82 	lui	at,0x5a82
  4775f0:	34217999 	ori	at,at,0x7999
  4775f4:	00221021 	addu	v0,at,v0
  4775f8:	afc20018 	sw	v0,24(s8)
  4775fc:	8fc20020 	lw	v0,32(s8)
  477600:	00000000 	nop
  477604:	00021f80 	sll	v1,v0,0x1e
  477608:	00021082 	srl	v0,v0,0x2
  47760c:	00621025 	or	v0,v1,v0
  477610:	afc20020 	sw	v0,32(s8)
  477614:	8fc30020 	lw	v1,32(s8)
  477618:	8fc20024 	lw	v0,36(s8)
  47761c:	00000000 	nop
  477620:	00621826 	xor	v1,v1,v0
  477624:	8fc2001c 	lw	v0,28(s8)
  477628:	00000000 	nop
  47762c:	00621824 	and	v1,v1,v0
  477630:	8fc20024 	lw	v0,36(s8)
  477634:	00000000 	nop
  477638:	00621826 	xor	v1,v1,v0
  47763c:	8fc20058 	lw	v0,88(s8)
  477640:	00000000 	nop
  477644:	00622021 	addu	a0,v1,v0
  477648:	8fc20018 	lw	v0,24(s8)
  47764c:	00000000 	nop
  477650:	00021940 	sll	v1,v0,0x5
  477654:	000216c2 	srl	v0,v0,0x1b
  477658:	00621025 	or	v0,v1,v0
  47765c:	00821821 	addu	v1,a0,v0
  477660:	8fc20028 	lw	v0,40(s8)
  477664:	00000000 	nop
  477668:	00621021 	addu	v0,v1,v0
  47766c:	3c015a82 	lui	at,0x5a82
  477670:	34217999 	ori	at,at,0x7999
  477674:	00221021 	addu	v0,at,v0
  477678:	afc20028 	sw	v0,40(s8)
  47767c:	8fc2001c 	lw	v0,28(s8)
  477680:	00000000 	nop
  477684:	00021f80 	sll	v1,v0,0x1e
  477688:	00021082 	srl	v0,v0,0x2
  47768c:	00621025 	or	v0,v1,v0
  477690:	afc2001c 	sw	v0,28(s8)
  477694:	8fc3001c 	lw	v1,28(s8)
  477698:	8fc20020 	lw	v0,32(s8)
  47769c:	00000000 	nop
  4776a0:	00621826 	xor	v1,v1,v0
  4776a4:	8fc20018 	lw	v0,24(s8)
  4776a8:	00000000 	nop
  4776ac:	00621824 	and	v1,v1,v0
  4776b0:	8fc20020 	lw	v0,32(s8)
  4776b4:	00000000 	nop
  4776b8:	00621826 	xor	v1,v1,v0
  4776bc:	8fc2005c 	lw	v0,92(s8)
  4776c0:	00000000 	nop
  4776c4:	00622021 	addu	a0,v1,v0
  4776c8:	8fc20028 	lw	v0,40(s8)
  4776cc:	00000000 	nop
  4776d0:	00021940 	sll	v1,v0,0x5
  4776d4:	000216c2 	srl	v0,v0,0x1b
  4776d8:	00621025 	or	v0,v1,v0
  4776dc:	00821821 	addu	v1,a0,v0
  4776e0:	8fc20024 	lw	v0,36(s8)
  4776e4:	00000000 	nop
  4776e8:	00621021 	addu	v0,v1,v0
  4776ec:	3c015a82 	lui	at,0x5a82
  4776f0:	34217999 	ori	at,at,0x7999
  4776f4:	00221021 	addu	v0,at,v0
  4776f8:	afc20024 	sw	v0,36(s8)
  4776fc:	8fc20018 	lw	v0,24(s8)
  477700:	00000000 	nop
  477704:	00021f80 	sll	v1,v0,0x1e
  477708:	00021082 	srl	v0,v0,0x2
  47770c:	00621025 	or	v0,v1,v0
  477710:	afc20018 	sw	v0,24(s8)
    R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);
  477714:	8fc30018 	lw	v1,24(s8)
  477718:	8fc2001c 	lw	v0,28(s8)
  47771c:	00000000 	nop
  477720:	00621826 	xor	v1,v1,v0
  477724:	8fc20028 	lw	v0,40(s8)
  477728:	00000000 	nop
  47772c:	00621824 	and	v1,v1,v0
  477730:	8fc2001c 	lw	v0,28(s8)
  477734:	00000000 	nop
  477738:	00621826 	xor	v1,v1,v0
  47773c:	8fc20060 	lw	v0,96(s8)
  477740:	00000000 	nop
  477744:	00622021 	addu	a0,v1,v0
  477748:	8fc20024 	lw	v0,36(s8)
  47774c:	00000000 	nop
  477750:	00021940 	sll	v1,v0,0x5
  477754:	000216c2 	srl	v0,v0,0x1b
  477758:	00621025 	or	v0,v1,v0
  47775c:	00821821 	addu	v1,a0,v0
  477760:	8fc20020 	lw	v0,32(s8)
  477764:	00000000 	nop
  477768:	00621021 	addu	v0,v1,v0
  47776c:	3c015a82 	lui	at,0x5a82
  477770:	34217999 	ori	at,at,0x7999
  477774:	00221021 	addu	v0,at,v0
  477778:	afc20020 	sw	v0,32(s8)
  47777c:	8fc20028 	lw	v0,40(s8)
  477780:	00000000 	nop
  477784:	00021f80 	sll	v1,v0,0x1e
  477788:	00021082 	srl	v0,v0,0x2
  47778c:	00621025 	or	v0,v1,v0
  477790:	afc20028 	sw	v0,40(s8)
  477794:	8fc30028 	lw	v1,40(s8)
  477798:	8fc20018 	lw	v0,24(s8)
  47779c:	00000000 	nop
  4777a0:	00621826 	xor	v1,v1,v0
  4777a4:	8fc20024 	lw	v0,36(s8)
  4777a8:	00000000 	nop
  4777ac:	00621824 	and	v1,v1,v0
  4777b0:	8fc20018 	lw	v0,24(s8)
  4777b4:	00000000 	nop
  4777b8:	00621826 	xor	v1,v1,v0
  4777bc:	8fc20064 	lw	v0,100(s8)
  4777c0:	00000000 	nop
  4777c4:	00622021 	addu	a0,v1,v0
  4777c8:	8fc20020 	lw	v0,32(s8)
  4777cc:	00000000 	nop
  4777d0:	00021940 	sll	v1,v0,0x5
  4777d4:	000216c2 	srl	v0,v0,0x1b
  4777d8:	00621025 	or	v0,v1,v0
  4777dc:	00821821 	addu	v1,a0,v0
  4777e0:	8fc2001c 	lw	v0,28(s8)
  4777e4:	00000000 	nop
  4777e8:	00621021 	addu	v0,v1,v0
  4777ec:	3c015a82 	lui	at,0x5a82
  4777f0:	34217999 	ori	at,at,0x7999
  4777f4:	00221021 	addu	v0,at,v0
  4777f8:	afc2001c 	sw	v0,28(s8)
  4777fc:	8fc20024 	lw	v0,36(s8)
  477800:	00000000 	nop
  477804:	00021f80 	sll	v1,v0,0x1e
  477808:	00021082 	srl	v0,v0,0x2
  47780c:	00621025 	or	v0,v1,v0
  477810:	afc20024 	sw	v0,36(s8)
  477814:	8fc30024 	lw	v1,36(s8)
  477818:	8fc20028 	lw	v0,40(s8)
  47781c:	00000000 	nop
  477820:	00621826 	xor	v1,v1,v0
  477824:	8fc20020 	lw	v0,32(s8)
  477828:	00000000 	nop
  47782c:	00621824 	and	v1,v1,v0
  477830:	8fc20028 	lw	v0,40(s8)
  477834:	00000000 	nop
  477838:	00621826 	xor	v1,v1,v0
  47783c:	8fc20068 	lw	v0,104(s8)
  477840:	00000000 	nop
  477844:	00622021 	addu	a0,v1,v0
  477848:	8fc2001c 	lw	v0,28(s8)
  47784c:	00000000 	nop
  477850:	00021940 	sll	v1,v0,0x5
  477854:	000216c2 	srl	v0,v0,0x1b
  477858:	00621025 	or	v0,v1,v0
  47785c:	00821821 	addu	v1,a0,v0
  477860:	8fc20018 	lw	v0,24(s8)
  477864:	00000000 	nop
  477868:	00621021 	addu	v0,v1,v0
  47786c:	3c015a82 	lui	at,0x5a82
  477870:	34217999 	ori	at,at,0x7999
  477874:	00221021 	addu	v0,at,v0
  477878:	afc20018 	sw	v0,24(s8)
  47787c:	8fc20020 	lw	v0,32(s8)
  477880:	00000000 	nop
  477884:	00021f80 	sll	v1,v0,0x1e
  477888:	00021082 	srl	v0,v0,0x2
  47788c:	00621025 	or	v0,v1,v0
  477890:	afc20020 	sw	v0,32(s8)
  477894:	8fc30020 	lw	v1,32(s8)
  477898:	8fc20024 	lw	v0,36(s8)
  47789c:	00000000 	nop
  4778a0:	00621826 	xor	v1,v1,v0
  4778a4:	8fc2001c 	lw	v0,28(s8)
  4778a8:	00000000 	nop
  4778ac:	00621824 	and	v1,v1,v0
  4778b0:	8fc20024 	lw	v0,36(s8)
  4778b4:	00000000 	nop
  4778b8:	00621826 	xor	v1,v1,v0
  4778bc:	8fc2006c 	lw	v0,108(s8)
  4778c0:	00000000 	nop
  4778c4:	00622021 	addu	a0,v1,v0
  4778c8:	8fc20018 	lw	v0,24(s8)
  4778cc:	00000000 	nop
  4778d0:	00021940 	sll	v1,v0,0x5
  4778d4:	000216c2 	srl	v0,v0,0x1b
  4778d8:	00621025 	or	v0,v1,v0
  4778dc:	00821821 	addu	v1,a0,v0
  4778e0:	8fc20028 	lw	v0,40(s8)
  4778e4:	00000000 	nop
  4778e8:	00621021 	addu	v0,v1,v0
  4778ec:	3c015a82 	lui	at,0x5a82
  4778f0:	34217999 	ori	at,at,0x7999
  4778f4:	00221021 	addu	v0,at,v0
  4778f8:	afc20028 	sw	v0,40(s8)
  4778fc:	8fc2001c 	lw	v0,28(s8)
  477900:	00000000 	nop
  477904:	00021f80 	sll	v1,v0,0x1e
  477908:	00021082 	srl	v0,v0,0x2
  47790c:	00621025 	or	v0,v1,v0
  477910:	afc2001c 	sw	v0,28(s8)
    R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);
  477914:	8fc3001c 	lw	v1,28(s8)
  477918:	8fc20020 	lw	v0,32(s8)
  47791c:	00000000 	nop
  477920:	00621826 	xor	v1,v1,v0
  477924:	8fc20018 	lw	v0,24(s8)
  477928:	00000000 	nop
  47792c:	00621824 	and	v1,v1,v0
  477930:	8fc20020 	lw	v0,32(s8)
  477934:	00000000 	nop
  477938:	00622826 	xor	a1,v1,v0
  47793c:	8fc30064 	lw	v1,100(s8)
  477940:	8fc20050 	lw	v0,80(s8)
  477944:	00000000 	nop
  477948:	00621826 	xor	v1,v1,v0
  47794c:	8fc20038 	lw	v0,56(s8)
  477950:	00000000 	nop
  477954:	00621826 	xor	v1,v1,v0
  477958:	8fc20030 	lw	v0,48(s8)
  47795c:	00000000 	nop
  477960:	00621026 	xor	v0,v1,v0
  477964:	00022040 	sll	a0,v0,0x1
  477968:	8fc30064 	lw	v1,100(s8)
  47796c:	8fc20050 	lw	v0,80(s8)
  477970:	00000000 	nop
  477974:	00621826 	xor	v1,v1,v0
  477978:	8fc20038 	lw	v0,56(s8)
  47797c:	00000000 	nop
  477980:	00621826 	xor	v1,v1,v0
  477984:	8fc20030 	lw	v0,48(s8)
  477988:	00000000 	nop
  47798c:	00621026 	xor	v0,v1,v0
  477990:	000217c2 	srl	v0,v0,0x1f
  477994:	00821025 	or	v0,a0,v0
  477998:	afc20030 	sw	v0,48(s8)
  47799c:	00a22021 	addu	a0,a1,v0
  4779a0:	8fc20028 	lw	v0,40(s8)
  4779a4:	00000000 	nop
  4779a8:	00021940 	sll	v1,v0,0x5
  4779ac:	000216c2 	srl	v0,v0,0x1b
  4779b0:	00621025 	or	v0,v1,v0
  4779b4:	00821821 	addu	v1,a0,v0
  4779b8:	8fc20024 	lw	v0,36(s8)
  4779bc:	00000000 	nop
  4779c0:	00621021 	addu	v0,v1,v0
  4779c4:	3c015a82 	lui	at,0x5a82
  4779c8:	34217999 	ori	at,at,0x7999
  4779cc:	00221021 	addu	v0,at,v0
  4779d0:	afc20024 	sw	v0,36(s8)
  4779d4:	8fc20018 	lw	v0,24(s8)
  4779d8:	00000000 	nop
  4779dc:	00021f80 	sll	v1,v0,0x1e
  4779e0:	00021082 	srl	v0,v0,0x2
  4779e4:	00621025 	or	v0,v1,v0
  4779e8:	afc20018 	sw	v0,24(s8)
  4779ec:	8fc30018 	lw	v1,24(s8)
  4779f0:	8fc2001c 	lw	v0,28(s8)
  4779f4:	00000000 	nop
  4779f8:	00621826 	xor	v1,v1,v0
  4779fc:	8fc20028 	lw	v0,40(s8)
  477a00:	00000000 	nop
  477a04:	00621824 	and	v1,v1,v0
  477a08:	8fc2001c 	lw	v0,28(s8)
  477a0c:	00000000 	nop
  477a10:	00622826 	xor	a1,v1,v0
  477a14:	8fc30068 	lw	v1,104(s8)
  477a18:	8fc20054 	lw	v0,84(s8)
  477a1c:	00000000 	nop
  477a20:	00621826 	xor	v1,v1,v0
  477a24:	8fc2003c 	lw	v0,60(s8)
  477a28:	00000000 	nop
  477a2c:	00621826 	xor	v1,v1,v0
  477a30:	8fc20034 	lw	v0,52(s8)
  477a34:	00000000 	nop
  477a38:	00621026 	xor	v0,v1,v0
  477a3c:	00022040 	sll	a0,v0,0x1
  477a40:	8fc30068 	lw	v1,104(s8)
  477a44:	8fc20054 	lw	v0,84(s8)
  477a48:	00000000 	nop
  477a4c:	00621826 	xor	v1,v1,v0
  477a50:	8fc2003c 	lw	v0,60(s8)
  477a54:	00000000 	nop
  477a58:	00621826 	xor	v1,v1,v0
  477a5c:	8fc20034 	lw	v0,52(s8)
  477a60:	00000000 	nop
  477a64:	00621026 	xor	v0,v1,v0
  477a68:	000217c2 	srl	v0,v0,0x1f
  477a6c:	00821025 	or	v0,a0,v0
  477a70:	afc20034 	sw	v0,52(s8)
  477a74:	00a22021 	addu	a0,a1,v0
  477a78:	8fc20024 	lw	v0,36(s8)
  477a7c:	00000000 	nop
  477a80:	00021940 	sll	v1,v0,0x5
  477a84:	000216c2 	srl	v0,v0,0x1b
  477a88:	00621025 	or	v0,v1,v0
  477a8c:	00821821 	addu	v1,a0,v0
  477a90:	8fc20020 	lw	v0,32(s8)
  477a94:	00000000 	nop
  477a98:	00621021 	addu	v0,v1,v0
  477a9c:	3c015a82 	lui	at,0x5a82
  477aa0:	34217999 	ori	at,at,0x7999
  477aa4:	00221021 	addu	v0,at,v0
  477aa8:	afc20020 	sw	v0,32(s8)
  477aac:	8fc20028 	lw	v0,40(s8)
  477ab0:	00000000 	nop
  477ab4:	00021f80 	sll	v1,v0,0x1e
  477ab8:	00021082 	srl	v0,v0,0x2
  477abc:	00621025 	or	v0,v1,v0
  477ac0:	afc20028 	sw	v0,40(s8)
  477ac4:	8fc30028 	lw	v1,40(s8)
  477ac8:	8fc20018 	lw	v0,24(s8)
  477acc:	00000000 	nop
  477ad0:	00621826 	xor	v1,v1,v0
  477ad4:	8fc20024 	lw	v0,36(s8)
  477ad8:	00000000 	nop
  477adc:	00621824 	and	v1,v1,v0
  477ae0:	8fc20018 	lw	v0,24(s8)
  477ae4:	00000000 	nop
  477ae8:	00622826 	xor	a1,v1,v0
  477aec:	8fc3006c 	lw	v1,108(s8)
  477af0:	8fc20058 	lw	v0,88(s8)
  477af4:	00000000 	nop
  477af8:	00621826 	xor	v1,v1,v0
  477afc:	8fc20040 	lw	v0,64(s8)
  477b00:	00000000 	nop
  477b04:	00621826 	xor	v1,v1,v0
  477b08:	8fc20038 	lw	v0,56(s8)
  477b0c:	00000000 	nop
  477b10:	00621026 	xor	v0,v1,v0
  477b14:	00022040 	sll	a0,v0,0x1
  477b18:	8fc3006c 	lw	v1,108(s8)
  477b1c:	8fc20058 	lw	v0,88(s8)
  477b20:	00000000 	nop
  477b24:	00621826 	xor	v1,v1,v0
  477b28:	8fc20040 	lw	v0,64(s8)
  477b2c:	00000000 	nop
  477b30:	00621826 	xor	v1,v1,v0
  477b34:	8fc20038 	lw	v0,56(s8)
  477b38:	00000000 	nop
  477b3c:	00621026 	xor	v0,v1,v0
  477b40:	000217c2 	srl	v0,v0,0x1f
  477b44:	00821025 	or	v0,a0,v0
  477b48:	afc20038 	sw	v0,56(s8)
  477b4c:	00a22021 	addu	a0,a1,v0
  477b50:	8fc20020 	lw	v0,32(s8)
  477b54:	00000000 	nop
  477b58:	00021940 	sll	v1,v0,0x5
  477b5c:	000216c2 	srl	v0,v0,0x1b
  477b60:	00621025 	or	v0,v1,v0
  477b64:	00821821 	addu	v1,a0,v0
  477b68:	8fc2001c 	lw	v0,28(s8)
  477b6c:	00000000 	nop
  477b70:	00621021 	addu	v0,v1,v0
  477b74:	3c015a82 	lui	at,0x5a82
  477b78:	34217999 	ori	at,at,0x7999
  477b7c:	00221021 	addu	v0,at,v0
  477b80:	afc2001c 	sw	v0,28(s8)
  477b84:	8fc20024 	lw	v0,36(s8)
  477b88:	00000000 	nop
  477b8c:	00021f80 	sll	v1,v0,0x1e
  477b90:	00021082 	srl	v0,v0,0x2
  477b94:	00621025 	or	v0,v1,v0
  477b98:	afc20024 	sw	v0,36(s8)
  477b9c:	8fc30024 	lw	v1,36(s8)
  477ba0:	8fc20028 	lw	v0,40(s8)
  477ba4:	00000000 	nop
  477ba8:	00621826 	xor	v1,v1,v0
  477bac:	8fc20020 	lw	v0,32(s8)
  477bb0:	00000000 	nop
  477bb4:	00621824 	and	v1,v1,v0
  477bb8:	8fc20028 	lw	v0,40(s8)
  477bbc:	00000000 	nop
  477bc0:	00622826 	xor	a1,v1,v0
  477bc4:	8fc30030 	lw	v1,48(s8)
  477bc8:	8fc2005c 	lw	v0,92(s8)
  477bcc:	00000000 	nop
  477bd0:	00621826 	xor	v1,v1,v0
  477bd4:	8fc20044 	lw	v0,68(s8)
  477bd8:	00000000 	nop
  477bdc:	00621826 	xor	v1,v1,v0
  477be0:	8fc2003c 	lw	v0,60(s8)
  477be4:	00000000 	nop
  477be8:	00621026 	xor	v0,v1,v0
  477bec:	00022040 	sll	a0,v0,0x1
  477bf0:	8fc30030 	lw	v1,48(s8)
  477bf4:	8fc2005c 	lw	v0,92(s8)
  477bf8:	00000000 	nop
  477bfc:	00621826 	xor	v1,v1,v0
  477c00:	8fc20044 	lw	v0,68(s8)
  477c04:	00000000 	nop
  477c08:	00621826 	xor	v1,v1,v0
  477c0c:	8fc2003c 	lw	v0,60(s8)
  477c10:	00000000 	nop
  477c14:	00621026 	xor	v0,v1,v0
  477c18:	000217c2 	srl	v0,v0,0x1f
  477c1c:	00821025 	or	v0,a0,v0
  477c20:	afc2003c 	sw	v0,60(s8)
  477c24:	00a22021 	addu	a0,a1,v0
  477c28:	8fc2001c 	lw	v0,28(s8)
  477c2c:	00000000 	nop
  477c30:	00021940 	sll	v1,v0,0x5
  477c34:	000216c2 	srl	v0,v0,0x1b
  477c38:	00621025 	or	v0,v1,v0
  477c3c:	00821821 	addu	v1,a0,v0
  477c40:	8fc20018 	lw	v0,24(s8)
  477c44:	00000000 	nop
  477c48:	00621021 	addu	v0,v1,v0
  477c4c:	3c015a82 	lui	at,0x5a82
  477c50:	34217999 	ori	at,at,0x7999
  477c54:	00221021 	addu	v0,at,v0
  477c58:	afc20018 	sw	v0,24(s8)
  477c5c:	8fc20020 	lw	v0,32(s8)
  477c60:	00000000 	nop
  477c64:	00021f80 	sll	v1,v0,0x1e
  477c68:	00021082 	srl	v0,v0,0x2
  477c6c:	00621025 	or	v0,v1,v0
  477c70:	afc20020 	sw	v0,32(s8)
    R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);
  477c74:	8fc3001c 	lw	v1,28(s8)
  477c78:	8fc20020 	lw	v0,32(s8)
  477c7c:	00000000 	nop
  477c80:	00621826 	xor	v1,v1,v0
  477c84:	8fc20024 	lw	v0,36(s8)
  477c88:	00000000 	nop
  477c8c:	00622826 	xor	a1,v1,v0
  477c90:	8fc30034 	lw	v1,52(s8)
  477c94:	8fc20060 	lw	v0,96(s8)
  477c98:	00000000 	nop
  477c9c:	00621826 	xor	v1,v1,v0
  477ca0:	8fc20048 	lw	v0,72(s8)
  477ca4:	00000000 	nop
  477ca8:	00621826 	xor	v1,v1,v0
  477cac:	8fc20040 	lw	v0,64(s8)
  477cb0:	00000000 	nop
  477cb4:	00621026 	xor	v0,v1,v0
  477cb8:	00022040 	sll	a0,v0,0x1
  477cbc:	8fc30034 	lw	v1,52(s8)
  477cc0:	8fc20060 	lw	v0,96(s8)
  477cc4:	00000000 	nop
  477cc8:	00621826 	xor	v1,v1,v0
  477ccc:	8fc20048 	lw	v0,72(s8)
  477cd0:	00000000 	nop
  477cd4:	00621826 	xor	v1,v1,v0
  477cd8:	8fc20040 	lw	v0,64(s8)
  477cdc:	00000000 	nop
  477ce0:	00621026 	xor	v0,v1,v0
  477ce4:	000217c2 	srl	v0,v0,0x1f
  477ce8:	00821025 	or	v0,a0,v0
  477cec:	afc20040 	sw	v0,64(s8)
  477cf0:	00a22021 	addu	a0,a1,v0
  477cf4:	8fc20018 	lw	v0,24(s8)
  477cf8:	00000000 	nop
  477cfc:	00021940 	sll	v1,v0,0x5
  477d00:	000216c2 	srl	v0,v0,0x1b
  477d04:	00621025 	or	v0,v1,v0
  477d08:	00821821 	addu	v1,a0,v0
  477d0c:	8fc20028 	lw	v0,40(s8)
  477d10:	00000000 	nop
  477d14:	00621021 	addu	v0,v1,v0
  477d18:	3c016ed9 	lui	at,0x6ed9
  477d1c:	3421eba1 	ori	at,at,0xeba1
  477d20:	00221021 	addu	v0,at,v0
  477d24:	afc20028 	sw	v0,40(s8)
  477d28:	8fc2001c 	lw	v0,28(s8)
  477d2c:	00000000 	nop
  477d30:	00021f80 	sll	v1,v0,0x1e
  477d34:	00021082 	srl	v0,v0,0x2
  477d38:	00621025 	or	v0,v1,v0
  477d3c:	afc2001c 	sw	v0,28(s8)
  477d40:	8fc30018 	lw	v1,24(s8)
  477d44:	8fc2001c 	lw	v0,28(s8)
  477d48:	00000000 	nop
  477d4c:	00621826 	xor	v1,v1,v0
  477d50:	8fc20020 	lw	v0,32(s8)
  477d54:	00000000 	nop
  477d58:	00622826 	xor	a1,v1,v0
  477d5c:	8fc30038 	lw	v1,56(s8)
  477d60:	8fc20064 	lw	v0,100(s8)
  477d64:	00000000 	nop
  477d68:	00621826 	xor	v1,v1,v0
  477d6c:	8fc2004c 	lw	v0,76(s8)
  477d70:	00000000 	nop
  477d74:	00621826 	xor	v1,v1,v0
  477d78:	8fc20044 	lw	v0,68(s8)
  477d7c:	00000000 	nop
  477d80:	00621026 	xor	v0,v1,v0
  477d84:	00022040 	sll	a0,v0,0x1
  477d88:	8fc30038 	lw	v1,56(s8)
  477d8c:	8fc20064 	lw	v0,100(s8)
  477d90:	00000000 	nop
  477d94:	00621826 	xor	v1,v1,v0
  477d98:	8fc2004c 	lw	v0,76(s8)
  477d9c:	00000000 	nop
  477da0:	00621826 	xor	v1,v1,v0
  477da4:	8fc20044 	lw	v0,68(s8)
  477da8:	00000000 	nop
  477dac:	00621026 	xor	v0,v1,v0
  477db0:	000217c2 	srl	v0,v0,0x1f
  477db4:	00821025 	or	v0,a0,v0
  477db8:	afc20044 	sw	v0,68(s8)
  477dbc:	00a22021 	addu	a0,a1,v0
  477dc0:	8fc20028 	lw	v0,40(s8)
  477dc4:	00000000 	nop
  477dc8:	00021940 	sll	v1,v0,0x5
  477dcc:	000216c2 	srl	v0,v0,0x1b
  477dd0:	00621025 	or	v0,v1,v0
  477dd4:	00821821 	addu	v1,a0,v0
  477dd8:	8fc20024 	lw	v0,36(s8)
  477ddc:	00000000 	nop
  477de0:	00621021 	addu	v0,v1,v0
  477de4:	3c016ed9 	lui	at,0x6ed9
  477de8:	3421eba1 	ori	at,at,0xeba1
  477dec:	00221021 	addu	v0,at,v0
  477df0:	afc20024 	sw	v0,36(s8)
  477df4:	8fc20018 	lw	v0,24(s8)
  477df8:	00000000 	nop
  477dfc:	00021f80 	sll	v1,v0,0x1e
  477e00:	00021082 	srl	v0,v0,0x2
  477e04:	00621025 	or	v0,v1,v0
  477e08:	afc20018 	sw	v0,24(s8)
  477e0c:	8fc30028 	lw	v1,40(s8)
  477e10:	8fc20018 	lw	v0,24(s8)
  477e14:	00000000 	nop
  477e18:	00621826 	xor	v1,v1,v0
  477e1c:	8fc2001c 	lw	v0,28(s8)
  477e20:	00000000 	nop
  477e24:	00622826 	xor	a1,v1,v0
  477e28:	8fc3003c 	lw	v1,60(s8)
  477e2c:	8fc20068 	lw	v0,104(s8)
  477e30:	00000000 	nop
  477e34:	00621826 	xor	v1,v1,v0
  477e38:	8fc20050 	lw	v0,80(s8)
  477e3c:	00000000 	nop
  477e40:	00621826 	xor	v1,v1,v0
  477e44:	8fc20048 	lw	v0,72(s8)
  477e48:	00000000 	nop
  477e4c:	00621026 	xor	v0,v1,v0
  477e50:	00022040 	sll	a0,v0,0x1
  477e54:	8fc3003c 	lw	v1,60(s8)
  477e58:	8fc20068 	lw	v0,104(s8)
  477e5c:	00000000 	nop
  477e60:	00621826 	xor	v1,v1,v0
  477e64:	8fc20050 	lw	v0,80(s8)
  477e68:	00000000 	nop
  477e6c:	00621826 	xor	v1,v1,v0
  477e70:	8fc20048 	lw	v0,72(s8)
  477e74:	00000000 	nop
  477e78:	00621026 	xor	v0,v1,v0
  477e7c:	000217c2 	srl	v0,v0,0x1f
  477e80:	00821025 	or	v0,a0,v0
  477e84:	afc20048 	sw	v0,72(s8)
  477e88:	00a22021 	addu	a0,a1,v0
  477e8c:	8fc20024 	lw	v0,36(s8)
  477e90:	00000000 	nop
  477e94:	00021940 	sll	v1,v0,0x5
  477e98:	000216c2 	srl	v0,v0,0x1b
  477e9c:	00621025 	or	v0,v1,v0
  477ea0:	00821821 	addu	v1,a0,v0
  477ea4:	8fc20020 	lw	v0,32(s8)
  477ea8:	00000000 	nop
  477eac:	00621021 	addu	v0,v1,v0
  477eb0:	3c016ed9 	lui	at,0x6ed9
  477eb4:	3421eba1 	ori	at,at,0xeba1
  477eb8:	00221021 	addu	v0,at,v0
  477ebc:	afc20020 	sw	v0,32(s8)
  477ec0:	8fc20028 	lw	v0,40(s8)
  477ec4:	00000000 	nop
  477ec8:	00021f80 	sll	v1,v0,0x1e
  477ecc:	00021082 	srl	v0,v0,0x2
  477ed0:	00621025 	or	v0,v1,v0
  477ed4:	afc20028 	sw	v0,40(s8)
  477ed8:	8fc30024 	lw	v1,36(s8)
  477edc:	8fc20028 	lw	v0,40(s8)
  477ee0:	00000000 	nop
  477ee4:	00621826 	xor	v1,v1,v0
  477ee8:	8fc20018 	lw	v0,24(s8)
  477eec:	00000000 	nop
  477ef0:	00622826 	xor	a1,v1,v0
  477ef4:	8fc30040 	lw	v1,64(s8)
  477ef8:	8fc2006c 	lw	v0,108(s8)
  477efc:	00000000 	nop
  477f00:	00621826 	xor	v1,v1,v0
  477f04:	8fc20054 	lw	v0,84(s8)
  477f08:	00000000 	nop
  477f0c:	00621826 	xor	v1,v1,v0
  477f10:	8fc2004c 	lw	v0,76(s8)
  477f14:	00000000 	nop
  477f18:	00621026 	xor	v0,v1,v0
  477f1c:	00022040 	sll	a0,v0,0x1
  477f20:	8fc30040 	lw	v1,64(s8)
  477f24:	8fc2006c 	lw	v0,108(s8)
  477f28:	00000000 	nop
  477f2c:	00621826 	xor	v1,v1,v0
  477f30:	8fc20054 	lw	v0,84(s8)
  477f34:	00000000 	nop
  477f38:	00621826 	xor	v1,v1,v0
  477f3c:	8fc2004c 	lw	v0,76(s8)
  477f40:	00000000 	nop
  477f44:	00621026 	xor	v0,v1,v0
  477f48:	000217c2 	srl	v0,v0,0x1f
  477f4c:	00821025 	or	v0,a0,v0
  477f50:	afc2004c 	sw	v0,76(s8)
  477f54:	00a22021 	addu	a0,a1,v0
  477f58:	8fc20020 	lw	v0,32(s8)
  477f5c:	00000000 	nop
  477f60:	00021940 	sll	v1,v0,0x5
  477f64:	000216c2 	srl	v0,v0,0x1b
  477f68:	00621025 	or	v0,v1,v0
  477f6c:	00821821 	addu	v1,a0,v0
  477f70:	8fc2001c 	lw	v0,28(s8)
  477f74:	00000000 	nop
  477f78:	00621021 	addu	v0,v1,v0
  477f7c:	3c016ed9 	lui	at,0x6ed9
  477f80:	3421eba1 	ori	at,at,0xeba1
  477f84:	00221021 	addu	v0,at,v0
  477f88:	afc2001c 	sw	v0,28(s8)
  477f8c:	8fc20024 	lw	v0,36(s8)
  477f90:	00000000 	nop
  477f94:	00021f80 	sll	v1,v0,0x1e
  477f98:	00021082 	srl	v0,v0,0x2
  477f9c:	00621025 	or	v0,v1,v0
  477fa0:	afc20024 	sw	v0,36(s8)
    R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);
  477fa4:	8fc30020 	lw	v1,32(s8)
  477fa8:	8fc20024 	lw	v0,36(s8)
  477fac:	00000000 	nop
  477fb0:	00621826 	xor	v1,v1,v0
  477fb4:	8fc20028 	lw	v0,40(s8)
  477fb8:	00000000 	nop
  477fbc:	00622826 	xor	a1,v1,v0
  477fc0:	8fc30044 	lw	v1,68(s8)
  477fc4:	8fc20030 	lw	v0,48(s8)
  477fc8:	00000000 	nop
  477fcc:	00621826 	xor	v1,v1,v0
  477fd0:	8fc20058 	lw	v0,88(s8)
  477fd4:	00000000 	nop
  477fd8:	00621826 	xor	v1,v1,v0
  477fdc:	8fc20050 	lw	v0,80(s8)
  477fe0:	00000000 	nop
  477fe4:	00621026 	xor	v0,v1,v0
  477fe8:	00022040 	sll	a0,v0,0x1
  477fec:	8fc30044 	lw	v1,68(s8)
  477ff0:	8fc20030 	lw	v0,48(s8)
  477ff4:	00000000 	nop
  477ff8:	00621826 	xor	v1,v1,v0
  477ffc:	8fc20058 	lw	v0,88(s8)
  478000:	00000000 	nop
  478004:	00621826 	xor	v1,v1,v0
  478008:	8fc20050 	lw	v0,80(s8)
  47800c:	00000000 	nop
  478010:	00621026 	xor	v0,v1,v0
  478014:	000217c2 	srl	v0,v0,0x1f
  478018:	00821025 	or	v0,a0,v0
  47801c:	afc20050 	sw	v0,80(s8)
  478020:	00a22021 	addu	a0,a1,v0
  478024:	8fc2001c 	lw	v0,28(s8)
  478028:	00000000 	nop
  47802c:	00021940 	sll	v1,v0,0x5
  478030:	000216c2 	srl	v0,v0,0x1b
  478034:	00621025 	or	v0,v1,v0
  478038:	00821821 	addu	v1,a0,v0
  47803c:	8fc20018 	lw	v0,24(s8)
  478040:	00000000 	nop
  478044:	00621021 	addu	v0,v1,v0
  478048:	3c016ed9 	lui	at,0x6ed9
  47804c:	3421eba1 	ori	at,at,0xeba1
  478050:	00221021 	addu	v0,at,v0
  478054:	afc20018 	sw	v0,24(s8)
  478058:	8fc20020 	lw	v0,32(s8)
  47805c:	00000000 	nop
  478060:	00021f80 	sll	v1,v0,0x1e
  478064:	00021082 	srl	v0,v0,0x2
  478068:	00621025 	or	v0,v1,v0
  47806c:	afc20020 	sw	v0,32(s8)
  478070:	8fc3001c 	lw	v1,28(s8)
  478074:	8fc20020 	lw	v0,32(s8)
  478078:	00000000 	nop
  47807c:	00621826 	xor	v1,v1,v0
  478080:	8fc20024 	lw	v0,36(s8)
  478084:	00000000 	nop
  478088:	00622826 	xor	a1,v1,v0
  47808c:	8fc30048 	lw	v1,72(s8)
  478090:	8fc20034 	lw	v0,52(s8)
  478094:	00000000 	nop
  478098:	00621826 	xor	v1,v1,v0
  47809c:	8fc2005c 	lw	v0,92(s8)
  4780a0:	00000000 	nop
  4780a4:	00621826 	xor	v1,v1,v0
  4780a8:	8fc20054 	lw	v0,84(s8)
  4780ac:	00000000 	nop
  4780b0:	00621026 	xor	v0,v1,v0
  4780b4:	00022040 	sll	a0,v0,0x1
  4780b8:	8fc30048 	lw	v1,72(s8)
  4780bc:	8fc20034 	lw	v0,52(s8)
  4780c0:	00000000 	nop
  4780c4:	00621826 	xor	v1,v1,v0
  4780c8:	8fc2005c 	lw	v0,92(s8)
  4780cc:	00000000 	nop
  4780d0:	00621826 	xor	v1,v1,v0
  4780d4:	8fc20054 	lw	v0,84(s8)
  4780d8:	00000000 	nop
  4780dc:	00621026 	xor	v0,v1,v0
  4780e0:	000217c2 	srl	v0,v0,0x1f
  4780e4:	00821025 	or	v0,a0,v0
  4780e8:	afc20054 	sw	v0,84(s8)
  4780ec:	00a22021 	addu	a0,a1,v0
  4780f0:	8fc20018 	lw	v0,24(s8)
  4780f4:	00000000 	nop
  4780f8:	00021940 	sll	v1,v0,0x5
  4780fc:	000216c2 	srl	v0,v0,0x1b
  478100:	00621025 	or	v0,v1,v0
  478104:	00821821 	addu	v1,a0,v0
  478108:	8fc20028 	lw	v0,40(s8)
  47810c:	00000000 	nop
  478110:	00621021 	addu	v0,v1,v0
  478114:	3c016ed9 	lui	at,0x6ed9
  478118:	3421eba1 	ori	at,at,0xeba1
  47811c:	00221021 	addu	v0,at,v0
  478120:	afc20028 	sw	v0,40(s8)
  478124:	8fc2001c 	lw	v0,28(s8)
  478128:	00000000 	nop
  47812c:	00021f80 	sll	v1,v0,0x1e
  478130:	00021082 	srl	v0,v0,0x2
  478134:	00621025 	or	v0,v1,v0
  478138:	afc2001c 	sw	v0,28(s8)
  47813c:	8fc30018 	lw	v1,24(s8)
  478140:	8fc2001c 	lw	v0,28(s8)
  478144:	00000000 	nop
  478148:	00621826 	xor	v1,v1,v0
  47814c:	8fc20020 	lw	v0,32(s8)
  478150:	00000000 	nop
  478154:	00622826 	xor	a1,v1,v0
  478158:	8fc3004c 	lw	v1,76(s8)
  47815c:	8fc20038 	lw	v0,56(s8)
  478160:	00000000 	nop
  478164:	00621826 	xor	v1,v1,v0
  478168:	8fc20060 	lw	v0,96(s8)
  47816c:	00000000 	nop
  478170:	00621826 	xor	v1,v1,v0
  478174:	8fc20058 	lw	v0,88(s8)
  478178:	00000000 	nop
  47817c:	00621026 	xor	v0,v1,v0
  478180:	00022040 	sll	a0,v0,0x1
  478184:	8fc3004c 	lw	v1,76(s8)
  478188:	8fc20038 	lw	v0,56(s8)
  47818c:	00000000 	nop
  478190:	00621826 	xor	v1,v1,v0
  478194:	8fc20060 	lw	v0,96(s8)
  478198:	00000000 	nop
  47819c:	00621826 	xor	v1,v1,v0
  4781a0:	8fc20058 	lw	v0,88(s8)
  4781a4:	00000000 	nop
  4781a8:	00621026 	xor	v0,v1,v0
  4781ac:	000217c2 	srl	v0,v0,0x1f
  4781b0:	00821025 	or	v0,a0,v0
  4781b4:	afc20058 	sw	v0,88(s8)
  4781b8:	00a22021 	addu	a0,a1,v0
  4781bc:	8fc20028 	lw	v0,40(s8)
  4781c0:	00000000 	nop
  4781c4:	00021940 	sll	v1,v0,0x5
  4781c8:	000216c2 	srl	v0,v0,0x1b
  4781cc:	00621025 	or	v0,v1,v0
  4781d0:	00821821 	addu	v1,a0,v0
  4781d4:	8fc20024 	lw	v0,36(s8)
  4781d8:	00000000 	nop
  4781dc:	00621021 	addu	v0,v1,v0
  4781e0:	3c016ed9 	lui	at,0x6ed9
  4781e4:	3421eba1 	ori	at,at,0xeba1
  4781e8:	00221021 	addu	v0,at,v0
  4781ec:	afc20024 	sw	v0,36(s8)
  4781f0:	8fc20018 	lw	v0,24(s8)
  4781f4:	00000000 	nop
  4781f8:	00021f80 	sll	v1,v0,0x1e
  4781fc:	00021082 	srl	v0,v0,0x2
  478200:	00621025 	or	v0,v1,v0
  478204:	afc20018 	sw	v0,24(s8)
  478208:	8fc30028 	lw	v1,40(s8)
  47820c:	8fc20018 	lw	v0,24(s8)
  478210:	00000000 	nop
  478214:	00621826 	xor	v1,v1,v0
  478218:	8fc2001c 	lw	v0,28(s8)
  47821c:	00000000 	nop
  478220:	00622826 	xor	a1,v1,v0
  478224:	8fc30050 	lw	v1,80(s8)
  478228:	8fc2003c 	lw	v0,60(s8)
  47822c:	00000000 	nop
  478230:	00621826 	xor	v1,v1,v0
  478234:	8fc20064 	lw	v0,100(s8)
  478238:	00000000 	nop
  47823c:	00621826 	xor	v1,v1,v0
  478240:	8fc2005c 	lw	v0,92(s8)
  478244:	00000000 	nop
  478248:	00621026 	xor	v0,v1,v0
  47824c:	00022040 	sll	a0,v0,0x1
  478250:	8fc30050 	lw	v1,80(s8)
  478254:	8fc2003c 	lw	v0,60(s8)
  478258:	00000000 	nop
  47825c:	00621826 	xor	v1,v1,v0
  478260:	8fc20064 	lw	v0,100(s8)
  478264:	00000000 	nop
  478268:	00621826 	xor	v1,v1,v0
  47826c:	8fc2005c 	lw	v0,92(s8)
  478270:	00000000 	nop
  478274:	00621026 	xor	v0,v1,v0
  478278:	000217c2 	srl	v0,v0,0x1f
  47827c:	00821025 	or	v0,a0,v0
  478280:	afc2005c 	sw	v0,92(s8)
  478284:	00a22021 	addu	a0,a1,v0
  478288:	8fc20024 	lw	v0,36(s8)
  47828c:	00000000 	nop
  478290:	00021940 	sll	v1,v0,0x5
  478294:	000216c2 	srl	v0,v0,0x1b
  478298:	00621025 	or	v0,v1,v0
  47829c:	00821821 	addu	v1,a0,v0
  4782a0:	8fc20020 	lw	v0,32(s8)
  4782a4:	00000000 	nop
  4782a8:	00621021 	addu	v0,v1,v0
  4782ac:	3c016ed9 	lui	at,0x6ed9
  4782b0:	3421eba1 	ori	at,at,0xeba1
  4782b4:	00221021 	addu	v0,at,v0
  4782b8:	afc20020 	sw	v0,32(s8)
  4782bc:	8fc20028 	lw	v0,40(s8)
  4782c0:	00000000 	nop
  4782c4:	00021f80 	sll	v1,v0,0x1e
  4782c8:	00021082 	srl	v0,v0,0x2
  4782cc:	00621025 	or	v0,v1,v0
  4782d0:	afc20028 	sw	v0,40(s8)
    R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);
  4782d4:	8fc30024 	lw	v1,36(s8)
  4782d8:	8fc20028 	lw	v0,40(s8)
  4782dc:	00000000 	nop
  4782e0:	00621826 	xor	v1,v1,v0
  4782e4:	8fc20018 	lw	v0,24(s8)
  4782e8:	00000000 	nop
  4782ec:	00622826 	xor	a1,v1,v0
  4782f0:	8fc30054 	lw	v1,84(s8)
  4782f4:	8fc20040 	lw	v0,64(s8)
  4782f8:	00000000 	nop
  4782fc:	00621826 	xor	v1,v1,v0
  478300:	8fc20068 	lw	v0,104(s8)
  478304:	00000000 	nop
  478308:	00621826 	xor	v1,v1,v0
  47830c:	8fc20060 	lw	v0,96(s8)
  478310:	00000000 	nop
  478314:	00621026 	xor	v0,v1,v0
  478318:	00022040 	sll	a0,v0,0x1
  47831c:	8fc30054 	lw	v1,84(s8)
  478320:	8fc20040 	lw	v0,64(s8)
  478324:	00000000 	nop
  478328:	00621826 	xor	v1,v1,v0
  47832c:	8fc20068 	lw	v0,104(s8)
  478330:	00000000 	nop
  478334:	00621826 	xor	v1,v1,v0
  478338:	8fc20060 	lw	v0,96(s8)
  47833c:	00000000 	nop
  478340:	00621026 	xor	v0,v1,v0
  478344:	000217c2 	srl	v0,v0,0x1f
  478348:	00821025 	or	v0,a0,v0
  47834c:	afc20060 	sw	v0,96(s8)
  478350:	00a22021 	addu	a0,a1,v0
  478354:	8fc20020 	lw	v0,32(s8)
  478358:	00000000 	nop
  47835c:	00021940 	sll	v1,v0,0x5
  478360:	000216c2 	srl	v0,v0,0x1b
  478364:	00621025 	or	v0,v1,v0
  478368:	00821821 	addu	v1,a0,v0
  47836c:	8fc2001c 	lw	v0,28(s8)
  478370:	00000000 	nop
  478374:	00621021 	addu	v0,v1,v0
  478378:	3c016ed9 	lui	at,0x6ed9
  47837c:	3421eba1 	ori	at,at,0xeba1
  478380:	00221021 	addu	v0,at,v0
  478384:	afc2001c 	sw	v0,28(s8)
  478388:	8fc20024 	lw	v0,36(s8)
  47838c:	00000000 	nop
  478390:	00021f80 	sll	v1,v0,0x1e
  478394:	00021082 	srl	v0,v0,0x2
  478398:	00621025 	or	v0,v1,v0
  47839c:	afc20024 	sw	v0,36(s8)
  4783a0:	8fc30020 	lw	v1,32(s8)
  4783a4:	8fc20024 	lw	v0,36(s8)
  4783a8:	00000000 	nop
  4783ac:	00621826 	xor	v1,v1,v0
  4783b0:	8fc20028 	lw	v0,40(s8)
  4783b4:	00000000 	nop
  4783b8:	00622826 	xor	a1,v1,v0
  4783bc:	8fc30058 	lw	v1,88(s8)
  4783c0:	8fc20044 	lw	v0,68(s8)
  4783c4:	00000000 	nop
  4783c8:	00621826 	xor	v1,v1,v0
  4783cc:	8fc2006c 	lw	v0,108(s8)
  4783d0:	00000000 	nop
  4783d4:	00621826 	xor	v1,v1,v0
  4783d8:	8fc20064 	lw	v0,100(s8)
  4783dc:	00000000 	nop
  4783e0:	00621026 	xor	v0,v1,v0
  4783e4:	00022040 	sll	a0,v0,0x1
  4783e8:	8fc30058 	lw	v1,88(s8)
  4783ec:	8fc20044 	lw	v0,68(s8)
  4783f0:	00000000 	nop
  4783f4:	00621826 	xor	v1,v1,v0
  4783f8:	8fc2006c 	lw	v0,108(s8)
  4783fc:	00000000 	nop
  478400:	00621826 	xor	v1,v1,v0
  478404:	8fc20064 	lw	v0,100(s8)
  478408:	00000000 	nop
  47840c:	00621026 	xor	v0,v1,v0
  478410:	000217c2 	srl	v0,v0,0x1f
  478414:	00821025 	or	v0,a0,v0
  478418:	afc20064 	sw	v0,100(s8)
  47841c:	00a22021 	addu	a0,a1,v0
  478420:	8fc2001c 	lw	v0,28(s8)
  478424:	00000000 	nop
  478428:	00021940 	sll	v1,v0,0x5
  47842c:	000216c2 	srl	v0,v0,0x1b
  478430:	00621025 	or	v0,v1,v0
  478434:	00821821 	addu	v1,a0,v0
  478438:	8fc20018 	lw	v0,24(s8)
  47843c:	00000000 	nop
  478440:	00621021 	addu	v0,v1,v0
  478444:	3c016ed9 	lui	at,0x6ed9
  478448:	3421eba1 	ori	at,at,0xeba1
  47844c:	00221021 	addu	v0,at,v0
  478450:	afc20018 	sw	v0,24(s8)
  478454:	8fc20020 	lw	v0,32(s8)
  478458:	00000000 	nop
  47845c:	00021f80 	sll	v1,v0,0x1e
  478460:	00021082 	srl	v0,v0,0x2
  478464:	00621025 	or	v0,v1,v0
  478468:	afc20020 	sw	v0,32(s8)
  47846c:	8fc3001c 	lw	v1,28(s8)
  478470:	8fc20020 	lw	v0,32(s8)
  478474:	00000000 	nop
  478478:	00621826 	xor	v1,v1,v0
  47847c:	8fc20024 	lw	v0,36(s8)
  478480:	00000000 	nop
  478484:	00622826 	xor	a1,v1,v0
  478488:	8fc3005c 	lw	v1,92(s8)
  47848c:	8fc20048 	lw	v0,72(s8)
  478490:	00000000 	nop
  478494:	00621826 	xor	v1,v1,v0
  478498:	8fc20030 	lw	v0,48(s8)
  47849c:	00000000 	nop
  4784a0:	00621826 	xor	v1,v1,v0
  4784a4:	8fc20068 	lw	v0,104(s8)
  4784a8:	00000000 	nop
  4784ac:	00621026 	xor	v0,v1,v0
  4784b0:	00022040 	sll	a0,v0,0x1
  4784b4:	8fc3005c 	lw	v1,92(s8)
  4784b8:	8fc20048 	lw	v0,72(s8)
  4784bc:	00000000 	nop
  4784c0:	00621826 	xor	v1,v1,v0
  4784c4:	8fc20030 	lw	v0,48(s8)
  4784c8:	00000000 	nop
  4784cc:	00621826 	xor	v1,v1,v0
  4784d0:	8fc20068 	lw	v0,104(s8)
  4784d4:	00000000 	nop
  4784d8:	00621026 	xor	v0,v1,v0
  4784dc:	000217c2 	srl	v0,v0,0x1f
  4784e0:	00821025 	or	v0,a0,v0
  4784e4:	afc20068 	sw	v0,104(s8)
  4784e8:	00a22021 	addu	a0,a1,v0
  4784ec:	8fc20018 	lw	v0,24(s8)
  4784f0:	00000000 	nop
  4784f4:	00021940 	sll	v1,v0,0x5
  4784f8:	000216c2 	srl	v0,v0,0x1b
  4784fc:	00621025 	or	v0,v1,v0
  478500:	00821821 	addu	v1,a0,v0
  478504:	8fc20028 	lw	v0,40(s8)
  478508:	00000000 	nop
  47850c:	00621021 	addu	v0,v1,v0
  478510:	3c016ed9 	lui	at,0x6ed9
  478514:	3421eba1 	ori	at,at,0xeba1
  478518:	00221021 	addu	v0,at,v0
  47851c:	afc20028 	sw	v0,40(s8)
  478520:	8fc2001c 	lw	v0,28(s8)
  478524:	00000000 	nop
  478528:	00021f80 	sll	v1,v0,0x1e
  47852c:	00021082 	srl	v0,v0,0x2
  478530:	00621025 	or	v0,v1,v0
  478534:	afc2001c 	sw	v0,28(s8)
  478538:	8fc30018 	lw	v1,24(s8)
  47853c:	8fc2001c 	lw	v0,28(s8)
  478540:	00000000 	nop
  478544:	00621826 	xor	v1,v1,v0
  478548:	8fc20020 	lw	v0,32(s8)
  47854c:	00000000 	nop
  478550:	00622826 	xor	a1,v1,v0
  478554:	8fc30060 	lw	v1,96(s8)
  478558:	8fc2004c 	lw	v0,76(s8)
  47855c:	00000000 	nop
  478560:	00621826 	xor	v1,v1,v0
  478564:	8fc20034 	lw	v0,52(s8)
  478568:	00000000 	nop
  47856c:	00621826 	xor	v1,v1,v0
  478570:	8fc2006c 	lw	v0,108(s8)
  478574:	00000000 	nop
  478578:	00621026 	xor	v0,v1,v0
  47857c:	00022040 	sll	a0,v0,0x1
  478580:	8fc30060 	lw	v1,96(s8)
  478584:	8fc2004c 	lw	v0,76(s8)
  478588:	00000000 	nop
  47858c:	00621826 	xor	v1,v1,v0
  478590:	8fc20034 	lw	v0,52(s8)
  478594:	00000000 	nop
  478598:	00621826 	xor	v1,v1,v0
  47859c:	8fc2006c 	lw	v0,108(s8)
  4785a0:	00000000 	nop
  4785a4:	00621026 	xor	v0,v1,v0
  4785a8:	000217c2 	srl	v0,v0,0x1f
  4785ac:	00821025 	or	v0,a0,v0
  4785b0:	afc2006c 	sw	v0,108(s8)
  4785b4:	00a22021 	addu	a0,a1,v0
  4785b8:	8fc20028 	lw	v0,40(s8)
  4785bc:	00000000 	nop
  4785c0:	00021940 	sll	v1,v0,0x5
  4785c4:	000216c2 	srl	v0,v0,0x1b
  4785c8:	00621025 	or	v0,v1,v0
  4785cc:	00821821 	addu	v1,a0,v0
  4785d0:	8fc20024 	lw	v0,36(s8)
  4785d4:	00000000 	nop
  4785d8:	00621021 	addu	v0,v1,v0
  4785dc:	3c016ed9 	lui	at,0x6ed9
  4785e0:	3421eba1 	ori	at,at,0xeba1
  4785e4:	00221021 	addu	v0,at,v0
  4785e8:	afc20024 	sw	v0,36(s8)
  4785ec:	8fc20018 	lw	v0,24(s8)
  4785f0:	00000000 	nop
  4785f4:	00021f80 	sll	v1,v0,0x1e
  4785f8:	00021082 	srl	v0,v0,0x2
  4785fc:	00621025 	or	v0,v1,v0
  478600:	afc20018 	sw	v0,24(s8)
    R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);
  478604:	8fc30028 	lw	v1,40(s8)
  478608:	8fc20018 	lw	v0,24(s8)
  47860c:	00000000 	nop
  478610:	00621826 	xor	v1,v1,v0
  478614:	8fc2001c 	lw	v0,28(s8)
  478618:	00000000 	nop
  47861c:	00622826 	xor	a1,v1,v0
  478620:	8fc30064 	lw	v1,100(s8)
  478624:	8fc20050 	lw	v0,80(s8)
  478628:	00000000 	nop
  47862c:	00621826 	xor	v1,v1,v0
  478630:	8fc20038 	lw	v0,56(s8)
  478634:	00000000 	nop
  478638:	00621826 	xor	v1,v1,v0
  47863c:	8fc20030 	lw	v0,48(s8)
  478640:	00000000 	nop
  478644:	00621026 	xor	v0,v1,v0
  478648:	00022040 	sll	a0,v0,0x1
  47864c:	8fc30064 	lw	v1,100(s8)
  478650:	8fc20050 	lw	v0,80(s8)
  478654:	00000000 	nop
  478658:	00621826 	xor	v1,v1,v0
  47865c:	8fc20038 	lw	v0,56(s8)
  478660:	00000000 	nop
  478664:	00621826 	xor	v1,v1,v0
  478668:	8fc20030 	lw	v0,48(s8)
  47866c:	00000000 	nop
  478670:	00621026 	xor	v0,v1,v0
  478674:	000217c2 	srl	v0,v0,0x1f
  478678:	00821025 	or	v0,a0,v0
  47867c:	afc20030 	sw	v0,48(s8)
  478680:	00a22021 	addu	a0,a1,v0
  478684:	8fc20024 	lw	v0,36(s8)
  478688:	00000000 	nop
  47868c:	00021940 	sll	v1,v0,0x5
  478690:	000216c2 	srl	v0,v0,0x1b
  478694:	00621025 	or	v0,v1,v0
  478698:	00821821 	addu	v1,a0,v0
  47869c:	8fc20020 	lw	v0,32(s8)
  4786a0:	00000000 	nop
  4786a4:	00621021 	addu	v0,v1,v0
  4786a8:	3c016ed9 	lui	at,0x6ed9
  4786ac:	3421eba1 	ori	at,at,0xeba1
  4786b0:	00221021 	addu	v0,at,v0
  4786b4:	afc20020 	sw	v0,32(s8)
  4786b8:	8fc20028 	lw	v0,40(s8)
  4786bc:	00000000 	nop
  4786c0:	00021f80 	sll	v1,v0,0x1e
  4786c4:	00021082 	srl	v0,v0,0x2
  4786c8:	00621025 	or	v0,v1,v0
  4786cc:	afc20028 	sw	v0,40(s8)
  4786d0:	8fc30024 	lw	v1,36(s8)
  4786d4:	8fc20028 	lw	v0,40(s8)
  4786d8:	00000000 	nop
  4786dc:	00621826 	xor	v1,v1,v0
  4786e0:	8fc20018 	lw	v0,24(s8)
  4786e4:	00000000 	nop
  4786e8:	00622826 	xor	a1,v1,v0
  4786ec:	8fc30068 	lw	v1,104(s8)
  4786f0:	8fc20054 	lw	v0,84(s8)
  4786f4:	00000000 	nop
  4786f8:	00621826 	xor	v1,v1,v0
  4786fc:	8fc2003c 	lw	v0,60(s8)
  478700:	00000000 	nop
  478704:	00621826 	xor	v1,v1,v0
  478708:	8fc20034 	lw	v0,52(s8)
  47870c:	00000000 	nop
  478710:	00621026 	xor	v0,v1,v0
  478714:	00022040 	sll	a0,v0,0x1
  478718:	8fc30068 	lw	v1,104(s8)
  47871c:	8fc20054 	lw	v0,84(s8)
  478720:	00000000 	nop
  478724:	00621826 	xor	v1,v1,v0
  478728:	8fc2003c 	lw	v0,60(s8)
  47872c:	00000000 	nop
  478730:	00621826 	xor	v1,v1,v0
  478734:	8fc20034 	lw	v0,52(s8)
  478738:	00000000 	nop
  47873c:	00621026 	xor	v0,v1,v0
  478740:	000217c2 	srl	v0,v0,0x1f
  478744:	00821025 	or	v0,a0,v0
  478748:	afc20034 	sw	v0,52(s8)
  47874c:	00a22021 	addu	a0,a1,v0
  478750:	8fc20020 	lw	v0,32(s8)
  478754:	00000000 	nop
  478758:	00021940 	sll	v1,v0,0x5
  47875c:	000216c2 	srl	v0,v0,0x1b
  478760:	00621025 	or	v0,v1,v0
  478764:	00821821 	addu	v1,a0,v0
  478768:	8fc2001c 	lw	v0,28(s8)
  47876c:	00000000 	nop
  478770:	00621021 	addu	v0,v1,v0
  478774:	3c016ed9 	lui	at,0x6ed9
  478778:	3421eba1 	ori	at,at,0xeba1
  47877c:	00221021 	addu	v0,at,v0
  478780:	afc2001c 	sw	v0,28(s8)
  478784:	8fc20024 	lw	v0,36(s8)
  478788:	00000000 	nop
  47878c:	00021f80 	sll	v1,v0,0x1e
  478790:	00021082 	srl	v0,v0,0x2
  478794:	00621025 	or	v0,v1,v0
  478798:	afc20024 	sw	v0,36(s8)
  47879c:	8fc30020 	lw	v1,32(s8)
  4787a0:	8fc20024 	lw	v0,36(s8)
  4787a4:	00000000 	nop
  4787a8:	00621826 	xor	v1,v1,v0
  4787ac:	8fc20028 	lw	v0,40(s8)
  4787b0:	00000000 	nop
  4787b4:	00622826 	xor	a1,v1,v0
  4787b8:	8fc3006c 	lw	v1,108(s8)
  4787bc:	8fc20058 	lw	v0,88(s8)
  4787c0:	00000000 	nop
  4787c4:	00621826 	xor	v1,v1,v0
  4787c8:	8fc20040 	lw	v0,64(s8)
  4787cc:	00000000 	nop
  4787d0:	00621826 	xor	v1,v1,v0
  4787d4:	8fc20038 	lw	v0,56(s8)
  4787d8:	00000000 	nop
  4787dc:	00621026 	xor	v0,v1,v0
  4787e0:	00022040 	sll	a0,v0,0x1
  4787e4:	8fc3006c 	lw	v1,108(s8)
  4787e8:	8fc20058 	lw	v0,88(s8)
  4787ec:	00000000 	nop
  4787f0:	00621826 	xor	v1,v1,v0
  4787f4:	8fc20040 	lw	v0,64(s8)
  4787f8:	00000000 	nop
  4787fc:	00621826 	xor	v1,v1,v0
  478800:	8fc20038 	lw	v0,56(s8)
  478804:	00000000 	nop
  478808:	00621026 	xor	v0,v1,v0
  47880c:	000217c2 	srl	v0,v0,0x1f
  478810:	00821025 	or	v0,a0,v0
  478814:	afc20038 	sw	v0,56(s8)
  478818:	00a22021 	addu	a0,a1,v0
  47881c:	8fc2001c 	lw	v0,28(s8)
  478820:	00000000 	nop
  478824:	00021940 	sll	v1,v0,0x5
  478828:	000216c2 	srl	v0,v0,0x1b
  47882c:	00621025 	or	v0,v1,v0
  478830:	00821821 	addu	v1,a0,v0
  478834:	8fc20018 	lw	v0,24(s8)
  478838:	00000000 	nop
  47883c:	00621021 	addu	v0,v1,v0
  478840:	3c016ed9 	lui	at,0x6ed9
  478844:	3421eba1 	ori	at,at,0xeba1
  478848:	00221021 	addu	v0,at,v0
  47884c:	afc20018 	sw	v0,24(s8)
  478850:	8fc20020 	lw	v0,32(s8)
  478854:	00000000 	nop
  478858:	00021f80 	sll	v1,v0,0x1e
  47885c:	00021082 	srl	v0,v0,0x2
  478860:	00621025 	or	v0,v1,v0
  478864:	afc20020 	sw	v0,32(s8)
  478868:	8fc3001c 	lw	v1,28(s8)
  47886c:	8fc20020 	lw	v0,32(s8)
  478870:	00000000 	nop
  478874:	00621826 	xor	v1,v1,v0
  478878:	8fc20024 	lw	v0,36(s8)
  47887c:	00000000 	nop
  478880:	00622826 	xor	a1,v1,v0
  478884:	8fc30030 	lw	v1,48(s8)
  478888:	8fc2005c 	lw	v0,92(s8)
  47888c:	00000000 	nop
  478890:	00621826 	xor	v1,v1,v0
  478894:	8fc20044 	lw	v0,68(s8)
  478898:	00000000 	nop
  47889c:	00621826 	xor	v1,v1,v0
  4788a0:	8fc2003c 	lw	v0,60(s8)
  4788a4:	00000000 	nop
  4788a8:	00621026 	xor	v0,v1,v0
  4788ac:	00022040 	sll	a0,v0,0x1
  4788b0:	8fc30030 	lw	v1,48(s8)
  4788b4:	8fc2005c 	lw	v0,92(s8)
  4788b8:	00000000 	nop
  4788bc:	00621826 	xor	v1,v1,v0
  4788c0:	8fc20044 	lw	v0,68(s8)
  4788c4:	00000000 	nop
  4788c8:	00621826 	xor	v1,v1,v0
  4788cc:	8fc2003c 	lw	v0,60(s8)
  4788d0:	00000000 	nop
  4788d4:	00621026 	xor	v0,v1,v0
  4788d8:	000217c2 	srl	v0,v0,0x1f
  4788dc:	00821025 	or	v0,a0,v0
  4788e0:	afc2003c 	sw	v0,60(s8)
  4788e4:	00a22021 	addu	a0,a1,v0
  4788e8:	8fc20018 	lw	v0,24(s8)
  4788ec:	00000000 	nop
  4788f0:	00021940 	sll	v1,v0,0x5
  4788f4:	000216c2 	srl	v0,v0,0x1b
  4788f8:	00621025 	or	v0,v1,v0
  4788fc:	00821821 	addu	v1,a0,v0
  478900:	8fc20028 	lw	v0,40(s8)
  478904:	00000000 	nop
  478908:	00621021 	addu	v0,v1,v0
  47890c:	3c016ed9 	lui	at,0x6ed9
  478910:	3421eba1 	ori	at,at,0xeba1
  478914:	00221021 	addu	v0,at,v0
  478918:	afc20028 	sw	v0,40(s8)
  47891c:	8fc2001c 	lw	v0,28(s8)
  478920:	00000000 	nop
  478924:	00021f80 	sll	v1,v0,0x1e
  478928:	00021082 	srl	v0,v0,0x2
  47892c:	00621025 	or	v0,v1,v0
  478930:	afc2001c 	sw	v0,28(s8)
    R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);
  478934:	8fc30018 	lw	v1,24(s8)
  478938:	8fc2001c 	lw	v0,28(s8)
  47893c:	00000000 	nop
  478940:	00621826 	xor	v1,v1,v0
  478944:	8fc20020 	lw	v0,32(s8)
  478948:	00000000 	nop
  47894c:	00622826 	xor	a1,v1,v0
  478950:	8fc30034 	lw	v1,52(s8)
  478954:	8fc20060 	lw	v0,96(s8)
  478958:	00000000 	nop
  47895c:	00621826 	xor	v1,v1,v0
  478960:	8fc20048 	lw	v0,72(s8)
  478964:	00000000 	nop
  478968:	00621826 	xor	v1,v1,v0
  47896c:	8fc20040 	lw	v0,64(s8)
  478970:	00000000 	nop
  478974:	00621026 	xor	v0,v1,v0
  478978:	00022040 	sll	a0,v0,0x1
  47897c:	8fc30034 	lw	v1,52(s8)
  478980:	8fc20060 	lw	v0,96(s8)
  478984:	00000000 	nop
  478988:	00621826 	xor	v1,v1,v0
  47898c:	8fc20048 	lw	v0,72(s8)
  478990:	00000000 	nop
  478994:	00621826 	xor	v1,v1,v0
  478998:	8fc20040 	lw	v0,64(s8)
  47899c:	00000000 	nop
  4789a0:	00621026 	xor	v0,v1,v0
  4789a4:	000217c2 	srl	v0,v0,0x1f
  4789a8:	00821025 	or	v0,a0,v0
  4789ac:	afc20040 	sw	v0,64(s8)
  4789b0:	00a22021 	addu	a0,a1,v0
  4789b4:	8fc20028 	lw	v0,40(s8)
  4789b8:	00000000 	nop
  4789bc:	00021940 	sll	v1,v0,0x5
  4789c0:	000216c2 	srl	v0,v0,0x1b
  4789c4:	00621025 	or	v0,v1,v0
  4789c8:	00821821 	addu	v1,a0,v0
  4789cc:	8fc20024 	lw	v0,36(s8)
  4789d0:	00000000 	nop
  4789d4:	00621021 	addu	v0,v1,v0
  4789d8:	3c016ed9 	lui	at,0x6ed9
  4789dc:	3421eba1 	ori	at,at,0xeba1
  4789e0:	00221021 	addu	v0,at,v0
  4789e4:	afc20024 	sw	v0,36(s8)
  4789e8:	8fc20018 	lw	v0,24(s8)
  4789ec:	00000000 	nop
  4789f0:	00021f80 	sll	v1,v0,0x1e
  4789f4:	00021082 	srl	v0,v0,0x2
  4789f8:	00621025 	or	v0,v1,v0
  4789fc:	afc20018 	sw	v0,24(s8)
  478a00:	8fc30028 	lw	v1,40(s8)
  478a04:	8fc20018 	lw	v0,24(s8)
  478a08:	00000000 	nop
  478a0c:	00621826 	xor	v1,v1,v0
  478a10:	8fc2001c 	lw	v0,28(s8)
  478a14:	00000000 	nop
  478a18:	00622826 	xor	a1,v1,v0
  478a1c:	8fc30038 	lw	v1,56(s8)
  478a20:	8fc20064 	lw	v0,100(s8)
  478a24:	00000000 	nop
  478a28:	00621826 	xor	v1,v1,v0
  478a2c:	8fc2004c 	lw	v0,76(s8)
  478a30:	00000000 	nop
  478a34:	00621826 	xor	v1,v1,v0
  478a38:	8fc20044 	lw	v0,68(s8)
  478a3c:	00000000 	nop
  478a40:	00621026 	xor	v0,v1,v0
  478a44:	00022040 	sll	a0,v0,0x1
  478a48:	8fc30038 	lw	v1,56(s8)
  478a4c:	8fc20064 	lw	v0,100(s8)
  478a50:	00000000 	nop
  478a54:	00621826 	xor	v1,v1,v0
  478a58:	8fc2004c 	lw	v0,76(s8)
  478a5c:	00000000 	nop
  478a60:	00621826 	xor	v1,v1,v0
  478a64:	8fc20044 	lw	v0,68(s8)
  478a68:	00000000 	nop
  478a6c:	00621026 	xor	v0,v1,v0
  478a70:	000217c2 	srl	v0,v0,0x1f
  478a74:	00821025 	or	v0,a0,v0
  478a78:	afc20044 	sw	v0,68(s8)
  478a7c:	00a22021 	addu	a0,a1,v0
  478a80:	8fc20024 	lw	v0,36(s8)
  478a84:	00000000 	nop
  478a88:	00021940 	sll	v1,v0,0x5
  478a8c:	000216c2 	srl	v0,v0,0x1b
  478a90:	00621025 	or	v0,v1,v0
  478a94:	00821821 	addu	v1,a0,v0
  478a98:	8fc20020 	lw	v0,32(s8)
  478a9c:	00000000 	nop
  478aa0:	00621021 	addu	v0,v1,v0
  478aa4:	3c016ed9 	lui	at,0x6ed9
  478aa8:	3421eba1 	ori	at,at,0xeba1
  478aac:	00221021 	addu	v0,at,v0
  478ab0:	afc20020 	sw	v0,32(s8)
  478ab4:	8fc20028 	lw	v0,40(s8)
  478ab8:	00000000 	nop
  478abc:	00021f80 	sll	v1,v0,0x1e
  478ac0:	00021082 	srl	v0,v0,0x2
  478ac4:	00621025 	or	v0,v1,v0
  478ac8:	afc20028 	sw	v0,40(s8)
  478acc:	8fc30024 	lw	v1,36(s8)
  478ad0:	8fc20028 	lw	v0,40(s8)
  478ad4:	00000000 	nop
  478ad8:	00621826 	xor	v1,v1,v0
  478adc:	8fc20018 	lw	v0,24(s8)
  478ae0:	00000000 	nop
  478ae4:	00622826 	xor	a1,v1,v0
  478ae8:	8fc3003c 	lw	v1,60(s8)
  478aec:	8fc20068 	lw	v0,104(s8)
  478af0:	00000000 	nop
  478af4:	00621826 	xor	v1,v1,v0
  478af8:	8fc20050 	lw	v0,80(s8)
  478afc:	00000000 	nop
  478b00:	00621826 	xor	v1,v1,v0
  478b04:	8fc20048 	lw	v0,72(s8)
  478b08:	00000000 	nop
  478b0c:	00621026 	xor	v0,v1,v0
  478b10:	00022040 	sll	a0,v0,0x1
  478b14:	8fc3003c 	lw	v1,60(s8)
  478b18:	8fc20068 	lw	v0,104(s8)
  478b1c:	00000000 	nop
  478b20:	00621826 	xor	v1,v1,v0
  478b24:	8fc20050 	lw	v0,80(s8)
  478b28:	00000000 	nop
  478b2c:	00621826 	xor	v1,v1,v0
  478b30:	8fc20048 	lw	v0,72(s8)
  478b34:	00000000 	nop
  478b38:	00621026 	xor	v0,v1,v0
  478b3c:	000217c2 	srl	v0,v0,0x1f
  478b40:	00821025 	or	v0,a0,v0
  478b44:	afc20048 	sw	v0,72(s8)
  478b48:	00a22021 	addu	a0,a1,v0
  478b4c:	8fc20020 	lw	v0,32(s8)
  478b50:	00000000 	nop
  478b54:	00021940 	sll	v1,v0,0x5
  478b58:	000216c2 	srl	v0,v0,0x1b
  478b5c:	00621025 	or	v0,v1,v0
  478b60:	00821821 	addu	v1,a0,v0
  478b64:	8fc2001c 	lw	v0,28(s8)
  478b68:	00000000 	nop
  478b6c:	00621021 	addu	v0,v1,v0
  478b70:	3c016ed9 	lui	at,0x6ed9
  478b74:	3421eba1 	ori	at,at,0xeba1
  478b78:	00221021 	addu	v0,at,v0
  478b7c:	afc2001c 	sw	v0,28(s8)
  478b80:	8fc20024 	lw	v0,36(s8)
  478b84:	00000000 	nop
  478b88:	00021f80 	sll	v1,v0,0x1e
  478b8c:	00021082 	srl	v0,v0,0x2
  478b90:	00621025 	or	v0,v1,v0
  478b94:	afc20024 	sw	v0,36(s8)
  478b98:	8fc30020 	lw	v1,32(s8)
  478b9c:	8fc20024 	lw	v0,36(s8)
  478ba0:	00000000 	nop
  478ba4:	00621826 	xor	v1,v1,v0
  478ba8:	8fc20028 	lw	v0,40(s8)
  478bac:	00000000 	nop
  478bb0:	00622826 	xor	a1,v1,v0
  478bb4:	8fc30040 	lw	v1,64(s8)
  478bb8:	8fc2006c 	lw	v0,108(s8)
  478bbc:	00000000 	nop
  478bc0:	00621826 	xor	v1,v1,v0
  478bc4:	8fc20054 	lw	v0,84(s8)
  478bc8:	00000000 	nop
  478bcc:	00621826 	xor	v1,v1,v0
  478bd0:	8fc2004c 	lw	v0,76(s8)
  478bd4:	00000000 	nop
  478bd8:	00621026 	xor	v0,v1,v0
  478bdc:	00022040 	sll	a0,v0,0x1
  478be0:	8fc30040 	lw	v1,64(s8)
  478be4:	8fc2006c 	lw	v0,108(s8)
  478be8:	00000000 	nop
  478bec:	00621826 	xor	v1,v1,v0
  478bf0:	8fc20054 	lw	v0,84(s8)
  478bf4:	00000000 	nop
  478bf8:	00621826 	xor	v1,v1,v0
  478bfc:	8fc2004c 	lw	v0,76(s8)
  478c00:	00000000 	nop
  478c04:	00621026 	xor	v0,v1,v0
  478c08:	000217c2 	srl	v0,v0,0x1f
  478c0c:	00821025 	or	v0,a0,v0
  478c10:	afc2004c 	sw	v0,76(s8)
  478c14:	00a22021 	addu	a0,a1,v0
  478c18:	8fc2001c 	lw	v0,28(s8)
  478c1c:	00000000 	nop
  478c20:	00021940 	sll	v1,v0,0x5
  478c24:	000216c2 	srl	v0,v0,0x1b
  478c28:	00621025 	or	v0,v1,v0
  478c2c:	00821821 	addu	v1,a0,v0
  478c30:	8fc20018 	lw	v0,24(s8)
  478c34:	00000000 	nop
  478c38:	00621021 	addu	v0,v1,v0
  478c3c:	3c016ed9 	lui	at,0x6ed9
  478c40:	3421eba1 	ori	at,at,0xeba1
  478c44:	00221021 	addu	v0,at,v0
  478c48:	afc20018 	sw	v0,24(s8)
  478c4c:	8fc20020 	lw	v0,32(s8)
  478c50:	00000000 	nop
  478c54:	00021f80 	sll	v1,v0,0x1e
  478c58:	00021082 	srl	v0,v0,0x2
  478c5c:	00621025 	or	v0,v1,v0
  478c60:	afc20020 	sw	v0,32(s8)
    R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);
  478c64:	8fc3001c 	lw	v1,28(s8)
  478c68:	8fc20020 	lw	v0,32(s8)
  478c6c:	00000000 	nop
  478c70:	00621825 	or	v1,v1,v0
  478c74:	8fc20024 	lw	v0,36(s8)
  478c78:	00000000 	nop
  478c7c:	00622024 	and	a0,v1,v0
  478c80:	8fc3001c 	lw	v1,28(s8)
  478c84:	8fc20020 	lw	v0,32(s8)
  478c88:	00000000 	nop
  478c8c:	00621024 	and	v0,v1,v0
  478c90:	00822825 	or	a1,a0,v0
  478c94:	8fc30044 	lw	v1,68(s8)
  478c98:	8fc20030 	lw	v0,48(s8)
  478c9c:	00000000 	nop
  478ca0:	00621826 	xor	v1,v1,v0
  478ca4:	8fc20058 	lw	v0,88(s8)
  478ca8:	00000000 	nop
  478cac:	00621826 	xor	v1,v1,v0
  478cb0:	8fc20050 	lw	v0,80(s8)
  478cb4:	00000000 	nop
  478cb8:	00621026 	xor	v0,v1,v0
  478cbc:	00022040 	sll	a0,v0,0x1
  478cc0:	8fc30044 	lw	v1,68(s8)
  478cc4:	8fc20030 	lw	v0,48(s8)
  478cc8:	00000000 	nop
  478ccc:	00621826 	xor	v1,v1,v0
  478cd0:	8fc20058 	lw	v0,88(s8)
  478cd4:	00000000 	nop
  478cd8:	00621826 	xor	v1,v1,v0
  478cdc:	8fc20050 	lw	v0,80(s8)
  478ce0:	00000000 	nop
  478ce4:	00621026 	xor	v0,v1,v0
  478ce8:	000217c2 	srl	v0,v0,0x1f
  478cec:	00821025 	or	v0,a0,v0
  478cf0:	afc20050 	sw	v0,80(s8)
  478cf4:	00a22021 	addu	a0,a1,v0
  478cf8:	8fc20018 	lw	v0,24(s8)
  478cfc:	00000000 	nop
  478d00:	00021940 	sll	v1,v0,0x5
  478d04:	000216c2 	srl	v0,v0,0x1b
  478d08:	00621025 	or	v0,v1,v0
  478d0c:	00821821 	addu	v1,a0,v0
  478d10:	8fc20028 	lw	v0,40(s8)
  478d14:	00000000 	nop
  478d18:	00621021 	addu	v0,v1,v0
  478d1c:	3c018f1b 	lui	at,0x8f1b
  478d20:	3421bcdc 	ori	at,at,0xbcdc
  478d24:	00221021 	addu	v0,at,v0
  478d28:	afc20028 	sw	v0,40(s8)
  478d2c:	8fc2001c 	lw	v0,28(s8)
  478d30:	00000000 	nop
  478d34:	00021f80 	sll	v1,v0,0x1e
  478d38:	00021082 	srl	v0,v0,0x2
  478d3c:	00621025 	or	v0,v1,v0
  478d40:	afc2001c 	sw	v0,28(s8)
  478d44:	8fc30018 	lw	v1,24(s8)
  478d48:	8fc2001c 	lw	v0,28(s8)
  478d4c:	00000000 	nop
  478d50:	00621825 	or	v1,v1,v0
  478d54:	8fc20020 	lw	v0,32(s8)
  478d58:	00000000 	nop
  478d5c:	00622024 	and	a0,v1,v0
  478d60:	8fc30018 	lw	v1,24(s8)
  478d64:	8fc2001c 	lw	v0,28(s8)
  478d68:	00000000 	nop
  478d6c:	00621024 	and	v0,v1,v0
  478d70:	00822825 	or	a1,a0,v0
  478d74:	8fc30048 	lw	v1,72(s8)
  478d78:	8fc20034 	lw	v0,52(s8)
  478d7c:	00000000 	nop
  478d80:	00621826 	xor	v1,v1,v0
  478d84:	8fc2005c 	lw	v0,92(s8)
  478d88:	00000000 	nop
  478d8c:	00621826 	xor	v1,v1,v0
  478d90:	8fc20054 	lw	v0,84(s8)
  478d94:	00000000 	nop
  478d98:	00621026 	xor	v0,v1,v0
  478d9c:	00022040 	sll	a0,v0,0x1
  478da0:	8fc30048 	lw	v1,72(s8)
  478da4:	8fc20034 	lw	v0,52(s8)
  478da8:	00000000 	nop
  478dac:	00621826 	xor	v1,v1,v0
  478db0:	8fc2005c 	lw	v0,92(s8)
  478db4:	00000000 	nop
  478db8:	00621826 	xor	v1,v1,v0
  478dbc:	8fc20054 	lw	v0,84(s8)
  478dc0:	00000000 	nop
  478dc4:	00621026 	xor	v0,v1,v0
  478dc8:	000217c2 	srl	v0,v0,0x1f
  478dcc:	00821025 	or	v0,a0,v0
  478dd0:	afc20054 	sw	v0,84(s8)
  478dd4:	00a22021 	addu	a0,a1,v0
  478dd8:	8fc20028 	lw	v0,40(s8)
  478ddc:	00000000 	nop
  478de0:	00021940 	sll	v1,v0,0x5
  478de4:	000216c2 	srl	v0,v0,0x1b
  478de8:	00621025 	or	v0,v1,v0
  478dec:	00821821 	addu	v1,a0,v0
  478df0:	8fc20024 	lw	v0,36(s8)
  478df4:	00000000 	nop
  478df8:	00621021 	addu	v0,v1,v0
  478dfc:	3c018f1b 	lui	at,0x8f1b
  478e00:	3421bcdc 	ori	at,at,0xbcdc
  478e04:	00221021 	addu	v0,at,v0
  478e08:	afc20024 	sw	v0,36(s8)
  478e0c:	8fc20018 	lw	v0,24(s8)
  478e10:	00000000 	nop
  478e14:	00021f80 	sll	v1,v0,0x1e
  478e18:	00021082 	srl	v0,v0,0x2
  478e1c:	00621025 	or	v0,v1,v0
  478e20:	afc20018 	sw	v0,24(s8)
  478e24:	8fc30028 	lw	v1,40(s8)
  478e28:	8fc20018 	lw	v0,24(s8)
  478e2c:	00000000 	nop
  478e30:	00621825 	or	v1,v1,v0
  478e34:	8fc2001c 	lw	v0,28(s8)
  478e38:	00000000 	nop
  478e3c:	00622024 	and	a0,v1,v0
  478e40:	8fc30028 	lw	v1,40(s8)
  478e44:	8fc20018 	lw	v0,24(s8)
  478e48:	00000000 	nop
  478e4c:	00621024 	and	v0,v1,v0
  478e50:	00822825 	or	a1,a0,v0
  478e54:	8fc3004c 	lw	v1,76(s8)
  478e58:	8fc20038 	lw	v0,56(s8)
  478e5c:	00000000 	nop
  478e60:	00621826 	xor	v1,v1,v0
  478e64:	8fc20060 	lw	v0,96(s8)
  478e68:	00000000 	nop
  478e6c:	00621826 	xor	v1,v1,v0
  478e70:	8fc20058 	lw	v0,88(s8)
  478e74:	00000000 	nop
  478e78:	00621026 	xor	v0,v1,v0
  478e7c:	00022040 	sll	a0,v0,0x1
  478e80:	8fc3004c 	lw	v1,76(s8)
  478e84:	8fc20038 	lw	v0,56(s8)
  478e88:	00000000 	nop
  478e8c:	00621826 	xor	v1,v1,v0
  478e90:	8fc20060 	lw	v0,96(s8)
  478e94:	00000000 	nop
  478e98:	00621826 	xor	v1,v1,v0
  478e9c:	8fc20058 	lw	v0,88(s8)
  478ea0:	00000000 	nop
  478ea4:	00621026 	xor	v0,v1,v0
  478ea8:	000217c2 	srl	v0,v0,0x1f
  478eac:	00821025 	or	v0,a0,v0
  478eb0:	afc20058 	sw	v0,88(s8)
  478eb4:	00a22021 	addu	a0,a1,v0
  478eb8:	8fc20024 	lw	v0,36(s8)
  478ebc:	00000000 	nop
  478ec0:	00021940 	sll	v1,v0,0x5
  478ec4:	000216c2 	srl	v0,v0,0x1b
  478ec8:	00621025 	or	v0,v1,v0
  478ecc:	00821821 	addu	v1,a0,v0
  478ed0:	8fc20020 	lw	v0,32(s8)
  478ed4:	00000000 	nop
  478ed8:	00621021 	addu	v0,v1,v0
  478edc:	3c018f1b 	lui	at,0x8f1b
  478ee0:	3421bcdc 	ori	at,at,0xbcdc
  478ee4:	00221021 	addu	v0,at,v0
  478ee8:	afc20020 	sw	v0,32(s8)
  478eec:	8fc20028 	lw	v0,40(s8)
  478ef0:	00000000 	nop
  478ef4:	00021f80 	sll	v1,v0,0x1e
  478ef8:	00021082 	srl	v0,v0,0x2
  478efc:	00621025 	or	v0,v1,v0
  478f00:	afc20028 	sw	v0,40(s8)
  478f04:	8fc30024 	lw	v1,36(s8)
  478f08:	8fc20028 	lw	v0,40(s8)
  478f0c:	00000000 	nop
  478f10:	00621825 	or	v1,v1,v0
  478f14:	8fc20018 	lw	v0,24(s8)
  478f18:	00000000 	nop
  478f1c:	00622024 	and	a0,v1,v0
  478f20:	8fc30024 	lw	v1,36(s8)
  478f24:	8fc20028 	lw	v0,40(s8)
  478f28:	00000000 	nop
  478f2c:	00621024 	and	v0,v1,v0
  478f30:	00822825 	or	a1,a0,v0
  478f34:	8fc30050 	lw	v1,80(s8)
  478f38:	8fc2003c 	lw	v0,60(s8)
  478f3c:	00000000 	nop
  478f40:	00621826 	xor	v1,v1,v0
  478f44:	8fc20064 	lw	v0,100(s8)
  478f48:	00000000 	nop
  478f4c:	00621826 	xor	v1,v1,v0
  478f50:	8fc2005c 	lw	v0,92(s8)
  478f54:	00000000 	nop
  478f58:	00621026 	xor	v0,v1,v0
  478f5c:	00022040 	sll	a0,v0,0x1
  478f60:	8fc30050 	lw	v1,80(s8)
  478f64:	8fc2003c 	lw	v0,60(s8)
  478f68:	00000000 	nop
  478f6c:	00621826 	xor	v1,v1,v0
  478f70:	8fc20064 	lw	v0,100(s8)
  478f74:	00000000 	nop
  478f78:	00621826 	xor	v1,v1,v0
  478f7c:	8fc2005c 	lw	v0,92(s8)
  478f80:	00000000 	nop
  478f84:	00621026 	xor	v0,v1,v0
  478f88:	000217c2 	srl	v0,v0,0x1f
  478f8c:	00821025 	or	v0,a0,v0
  478f90:	afc2005c 	sw	v0,92(s8)
  478f94:	00a22021 	addu	a0,a1,v0
  478f98:	8fc20020 	lw	v0,32(s8)
  478f9c:	00000000 	nop
  478fa0:	00021940 	sll	v1,v0,0x5
  478fa4:	000216c2 	srl	v0,v0,0x1b
  478fa8:	00621025 	or	v0,v1,v0
  478fac:	00821821 	addu	v1,a0,v0
  478fb0:	8fc2001c 	lw	v0,28(s8)
  478fb4:	00000000 	nop
  478fb8:	00621021 	addu	v0,v1,v0
  478fbc:	3c018f1b 	lui	at,0x8f1b
  478fc0:	3421bcdc 	ori	at,at,0xbcdc
  478fc4:	00221021 	addu	v0,at,v0
  478fc8:	afc2001c 	sw	v0,28(s8)
  478fcc:	8fc20024 	lw	v0,36(s8)
  478fd0:	00000000 	nop
  478fd4:	00021f80 	sll	v1,v0,0x1e
  478fd8:	00021082 	srl	v0,v0,0x2
  478fdc:	00621025 	or	v0,v1,v0
  478fe0:	afc20024 	sw	v0,36(s8)
    R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);
  478fe4:	8fc30020 	lw	v1,32(s8)
  478fe8:	8fc20024 	lw	v0,36(s8)
  478fec:	00000000 	nop
  478ff0:	00621825 	or	v1,v1,v0
  478ff4:	8fc20028 	lw	v0,40(s8)
  478ff8:	00000000 	nop
  478ffc:	00622024 	and	a0,v1,v0
  479000:	8fc30020 	lw	v1,32(s8)
  479004:	8fc20024 	lw	v0,36(s8)
  479008:	00000000 	nop
  47900c:	00621024 	and	v0,v1,v0
  479010:	00822825 	or	a1,a0,v0
  479014:	8fc30054 	lw	v1,84(s8)
  479018:	8fc20040 	lw	v0,64(s8)
  47901c:	00000000 	nop
  479020:	00621826 	xor	v1,v1,v0
  479024:	8fc20068 	lw	v0,104(s8)
  479028:	00000000 	nop
  47902c:	00621826 	xor	v1,v1,v0
  479030:	8fc20060 	lw	v0,96(s8)
  479034:	00000000 	nop
  479038:	00621026 	xor	v0,v1,v0
  47903c:	00022040 	sll	a0,v0,0x1
  479040:	8fc30054 	lw	v1,84(s8)
  479044:	8fc20040 	lw	v0,64(s8)
  479048:	00000000 	nop
  47904c:	00621826 	xor	v1,v1,v0
  479050:	8fc20068 	lw	v0,104(s8)
  479054:	00000000 	nop
  479058:	00621826 	xor	v1,v1,v0
  47905c:	8fc20060 	lw	v0,96(s8)
  479060:	00000000 	nop
  479064:	00621026 	xor	v0,v1,v0
  479068:	000217c2 	srl	v0,v0,0x1f
  47906c:	00821025 	or	v0,a0,v0
  479070:	afc20060 	sw	v0,96(s8)
  479074:	00a22021 	addu	a0,a1,v0
  479078:	8fc2001c 	lw	v0,28(s8)
  47907c:	00000000 	nop
  479080:	00021940 	sll	v1,v0,0x5
  479084:	000216c2 	srl	v0,v0,0x1b
  479088:	00621025 	or	v0,v1,v0
  47908c:	00821821 	addu	v1,a0,v0
  479090:	8fc20018 	lw	v0,24(s8)
  479094:	00000000 	nop
  479098:	00621021 	addu	v0,v1,v0
  47909c:	3c018f1b 	lui	at,0x8f1b
  4790a0:	3421bcdc 	ori	at,at,0xbcdc
  4790a4:	00221021 	addu	v0,at,v0
  4790a8:	afc20018 	sw	v0,24(s8)
  4790ac:	8fc20020 	lw	v0,32(s8)
  4790b0:	00000000 	nop
  4790b4:	00021f80 	sll	v1,v0,0x1e
  4790b8:	00021082 	srl	v0,v0,0x2
  4790bc:	00621025 	or	v0,v1,v0
  4790c0:	afc20020 	sw	v0,32(s8)
  4790c4:	8fc3001c 	lw	v1,28(s8)
  4790c8:	8fc20020 	lw	v0,32(s8)
  4790cc:	00000000 	nop
  4790d0:	00621825 	or	v1,v1,v0
  4790d4:	8fc20024 	lw	v0,36(s8)
  4790d8:	00000000 	nop
  4790dc:	00622024 	and	a0,v1,v0
  4790e0:	8fc3001c 	lw	v1,28(s8)
  4790e4:	8fc20020 	lw	v0,32(s8)
  4790e8:	00000000 	nop
  4790ec:	00621024 	and	v0,v1,v0
  4790f0:	00822825 	or	a1,a0,v0
  4790f4:	8fc30058 	lw	v1,88(s8)
  4790f8:	8fc20044 	lw	v0,68(s8)
  4790fc:	00000000 	nop
  479100:	00621826 	xor	v1,v1,v0
  479104:	8fc2006c 	lw	v0,108(s8)
  479108:	00000000 	nop
  47910c:	00621826 	xor	v1,v1,v0
  479110:	8fc20064 	lw	v0,100(s8)
  479114:	00000000 	nop
  479118:	00621026 	xor	v0,v1,v0
  47911c:	00022040 	sll	a0,v0,0x1
  479120:	8fc30058 	lw	v1,88(s8)
  479124:	8fc20044 	lw	v0,68(s8)
  479128:	00000000 	nop
  47912c:	00621826 	xor	v1,v1,v0
  479130:	8fc2006c 	lw	v0,108(s8)
  479134:	00000000 	nop
  479138:	00621826 	xor	v1,v1,v0
  47913c:	8fc20064 	lw	v0,100(s8)
  479140:	00000000 	nop
  479144:	00621026 	xor	v0,v1,v0
  479148:	000217c2 	srl	v0,v0,0x1f
  47914c:	00821025 	or	v0,a0,v0
  479150:	afc20064 	sw	v0,100(s8)
  479154:	00a22021 	addu	a0,a1,v0
  479158:	8fc20018 	lw	v0,24(s8)
  47915c:	00000000 	nop
  479160:	00021940 	sll	v1,v0,0x5
  479164:	000216c2 	srl	v0,v0,0x1b
  479168:	00621025 	or	v0,v1,v0
  47916c:	00821821 	addu	v1,a0,v0
  479170:	8fc20028 	lw	v0,40(s8)
  479174:	00000000 	nop
  479178:	00621021 	addu	v0,v1,v0
  47917c:	3c018f1b 	lui	at,0x8f1b
  479180:	3421bcdc 	ori	at,at,0xbcdc
  479184:	00221021 	addu	v0,at,v0
  479188:	afc20028 	sw	v0,40(s8)
  47918c:	8fc2001c 	lw	v0,28(s8)
  479190:	00000000 	nop
  479194:	00021f80 	sll	v1,v0,0x1e
  479198:	00021082 	srl	v0,v0,0x2
  47919c:	00621025 	or	v0,v1,v0
  4791a0:	afc2001c 	sw	v0,28(s8)
  4791a4:	8fc30018 	lw	v1,24(s8)
  4791a8:	8fc2001c 	lw	v0,28(s8)
  4791ac:	00000000 	nop
  4791b0:	00621825 	or	v1,v1,v0
  4791b4:	8fc20020 	lw	v0,32(s8)
  4791b8:	00000000 	nop
  4791bc:	00622024 	and	a0,v1,v0
  4791c0:	8fc30018 	lw	v1,24(s8)
  4791c4:	8fc2001c 	lw	v0,28(s8)
  4791c8:	00000000 	nop
  4791cc:	00621024 	and	v0,v1,v0
  4791d0:	00822825 	or	a1,a0,v0
  4791d4:	8fc3005c 	lw	v1,92(s8)
  4791d8:	8fc20048 	lw	v0,72(s8)
  4791dc:	00000000 	nop
  4791e0:	00621826 	xor	v1,v1,v0
  4791e4:	8fc20030 	lw	v0,48(s8)
  4791e8:	00000000 	nop
  4791ec:	00621826 	xor	v1,v1,v0
  4791f0:	8fc20068 	lw	v0,104(s8)
  4791f4:	00000000 	nop
  4791f8:	00621026 	xor	v0,v1,v0
  4791fc:	00022040 	sll	a0,v0,0x1
  479200:	8fc3005c 	lw	v1,92(s8)
  479204:	8fc20048 	lw	v0,72(s8)
  479208:	00000000 	nop
  47920c:	00621826 	xor	v1,v1,v0
  479210:	8fc20030 	lw	v0,48(s8)
  479214:	00000000 	nop
  479218:	00621826 	xor	v1,v1,v0
  47921c:	8fc20068 	lw	v0,104(s8)
  479220:	00000000 	nop
  479224:	00621026 	xor	v0,v1,v0
  479228:	000217c2 	srl	v0,v0,0x1f
  47922c:	00821025 	or	v0,a0,v0
  479230:	afc20068 	sw	v0,104(s8)
  479234:	00a22021 	addu	a0,a1,v0
  479238:	8fc20028 	lw	v0,40(s8)
  47923c:	00000000 	nop
  479240:	00021940 	sll	v1,v0,0x5
  479244:	000216c2 	srl	v0,v0,0x1b
  479248:	00621025 	or	v0,v1,v0
  47924c:	00821821 	addu	v1,a0,v0
  479250:	8fc20024 	lw	v0,36(s8)
  479254:	00000000 	nop
  479258:	00621021 	addu	v0,v1,v0
  47925c:	3c018f1b 	lui	at,0x8f1b
  479260:	3421bcdc 	ori	at,at,0xbcdc
  479264:	00221021 	addu	v0,at,v0
  479268:	afc20024 	sw	v0,36(s8)
  47926c:	8fc20018 	lw	v0,24(s8)
  479270:	00000000 	nop
  479274:	00021f80 	sll	v1,v0,0x1e
  479278:	00021082 	srl	v0,v0,0x2
  47927c:	00621025 	or	v0,v1,v0
  479280:	afc20018 	sw	v0,24(s8)
  479284:	8fc30028 	lw	v1,40(s8)
  479288:	8fc20018 	lw	v0,24(s8)
  47928c:	00000000 	nop
  479290:	00621825 	or	v1,v1,v0
  479294:	8fc2001c 	lw	v0,28(s8)
  479298:	00000000 	nop
  47929c:	00622024 	and	a0,v1,v0
  4792a0:	8fc30028 	lw	v1,40(s8)
  4792a4:	8fc20018 	lw	v0,24(s8)
  4792a8:	00000000 	nop
  4792ac:	00621024 	and	v0,v1,v0
  4792b0:	00822825 	or	a1,a0,v0
  4792b4:	8fc30060 	lw	v1,96(s8)
  4792b8:	8fc2004c 	lw	v0,76(s8)
  4792bc:	00000000 	nop
  4792c0:	00621826 	xor	v1,v1,v0
  4792c4:	8fc20034 	lw	v0,52(s8)
  4792c8:	00000000 	nop
  4792cc:	00621826 	xor	v1,v1,v0
  4792d0:	8fc2006c 	lw	v0,108(s8)
  4792d4:	00000000 	nop
  4792d8:	00621026 	xor	v0,v1,v0
  4792dc:	00022040 	sll	a0,v0,0x1
  4792e0:	8fc30060 	lw	v1,96(s8)
  4792e4:	8fc2004c 	lw	v0,76(s8)
  4792e8:	00000000 	nop
  4792ec:	00621826 	xor	v1,v1,v0
  4792f0:	8fc20034 	lw	v0,52(s8)
  4792f4:	00000000 	nop
  4792f8:	00621826 	xor	v1,v1,v0
  4792fc:	8fc2006c 	lw	v0,108(s8)
  479300:	00000000 	nop
  479304:	00621026 	xor	v0,v1,v0
  479308:	000217c2 	srl	v0,v0,0x1f
  47930c:	00821025 	or	v0,a0,v0
  479310:	afc2006c 	sw	v0,108(s8)
  479314:	00a22021 	addu	a0,a1,v0
  479318:	8fc20024 	lw	v0,36(s8)
  47931c:	00000000 	nop
  479320:	00021940 	sll	v1,v0,0x5
  479324:	000216c2 	srl	v0,v0,0x1b
  479328:	00621025 	or	v0,v1,v0
  47932c:	00821821 	addu	v1,a0,v0
  479330:	8fc20020 	lw	v0,32(s8)
  479334:	00000000 	nop
  479338:	00621021 	addu	v0,v1,v0
  47933c:	3c018f1b 	lui	at,0x8f1b
  479340:	3421bcdc 	ori	at,at,0xbcdc
  479344:	00221021 	addu	v0,at,v0
  479348:	afc20020 	sw	v0,32(s8)
  47934c:	8fc20028 	lw	v0,40(s8)
  479350:	00000000 	nop
  479354:	00021f80 	sll	v1,v0,0x1e
  479358:	00021082 	srl	v0,v0,0x2
  47935c:	00621025 	or	v0,v1,v0
  479360:	afc20028 	sw	v0,40(s8)
    R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);
  479364:	8fc30024 	lw	v1,36(s8)
  479368:	8fc20028 	lw	v0,40(s8)
  47936c:	00000000 	nop
  479370:	00621825 	or	v1,v1,v0
  479374:	8fc20018 	lw	v0,24(s8)
  479378:	00000000 	nop
  47937c:	00622024 	and	a0,v1,v0
  479380:	8fc30024 	lw	v1,36(s8)
  479384:	8fc20028 	lw	v0,40(s8)
  479388:	00000000 	nop
  47938c:	00621024 	and	v0,v1,v0
  479390:	00822825 	or	a1,a0,v0
  479394:	8fc30064 	lw	v1,100(s8)
  479398:	8fc20050 	lw	v0,80(s8)
  47939c:	00000000 	nop
  4793a0:	00621826 	xor	v1,v1,v0
  4793a4:	8fc20038 	lw	v0,56(s8)
  4793a8:	00000000 	nop
  4793ac:	00621826 	xor	v1,v1,v0
  4793b0:	8fc20030 	lw	v0,48(s8)
  4793b4:	00000000 	nop
  4793b8:	00621026 	xor	v0,v1,v0
  4793bc:	00022040 	sll	a0,v0,0x1
  4793c0:	8fc30064 	lw	v1,100(s8)
  4793c4:	8fc20050 	lw	v0,80(s8)
  4793c8:	00000000 	nop
  4793cc:	00621826 	xor	v1,v1,v0
  4793d0:	8fc20038 	lw	v0,56(s8)
  4793d4:	00000000 	nop
  4793d8:	00621826 	xor	v1,v1,v0
  4793dc:	8fc20030 	lw	v0,48(s8)
  4793e0:	00000000 	nop
  4793e4:	00621026 	xor	v0,v1,v0
  4793e8:	000217c2 	srl	v0,v0,0x1f
  4793ec:	00821025 	or	v0,a0,v0
  4793f0:	afc20030 	sw	v0,48(s8)
  4793f4:	00a22021 	addu	a0,a1,v0
  4793f8:	8fc20020 	lw	v0,32(s8)
  4793fc:	00000000 	nop
  479400:	00021940 	sll	v1,v0,0x5
  479404:	000216c2 	srl	v0,v0,0x1b
  479408:	00621025 	or	v0,v1,v0
  47940c:	00821821 	addu	v1,a0,v0
  479410:	8fc2001c 	lw	v0,28(s8)
  479414:	00000000 	nop
  479418:	00621021 	addu	v0,v1,v0
  47941c:	3c018f1b 	lui	at,0x8f1b
  479420:	3421bcdc 	ori	at,at,0xbcdc
  479424:	00221021 	addu	v0,at,v0
  479428:	afc2001c 	sw	v0,28(s8)
  47942c:	8fc20024 	lw	v0,36(s8)
  479430:	00000000 	nop
  479434:	00021f80 	sll	v1,v0,0x1e
  479438:	00021082 	srl	v0,v0,0x2
  47943c:	00621025 	or	v0,v1,v0
  479440:	afc20024 	sw	v0,36(s8)
  479444:	8fc30020 	lw	v1,32(s8)
  479448:	8fc20024 	lw	v0,36(s8)
  47944c:	00000000 	nop
  479450:	00621825 	or	v1,v1,v0
  479454:	8fc20028 	lw	v0,40(s8)
  479458:	00000000 	nop
  47945c:	00622024 	and	a0,v1,v0
  479460:	8fc30020 	lw	v1,32(s8)
  479464:	8fc20024 	lw	v0,36(s8)
  479468:	00000000 	nop
  47946c:	00621024 	and	v0,v1,v0
  479470:	00822825 	or	a1,a0,v0
  479474:	8fc30068 	lw	v1,104(s8)
  479478:	8fc20054 	lw	v0,84(s8)
  47947c:	00000000 	nop
  479480:	00621826 	xor	v1,v1,v0
  479484:	8fc2003c 	lw	v0,60(s8)
  479488:	00000000 	nop
  47948c:	00621826 	xor	v1,v1,v0
  479490:	8fc20034 	lw	v0,52(s8)
  479494:	00000000 	nop
  479498:	00621026 	xor	v0,v1,v0
  47949c:	00022040 	sll	a0,v0,0x1
  4794a0:	8fc30068 	lw	v1,104(s8)
  4794a4:	8fc20054 	lw	v0,84(s8)
  4794a8:	00000000 	nop
  4794ac:	00621826 	xor	v1,v1,v0
  4794b0:	8fc2003c 	lw	v0,60(s8)
  4794b4:	00000000 	nop
  4794b8:	00621826 	xor	v1,v1,v0
  4794bc:	8fc20034 	lw	v0,52(s8)
  4794c0:	00000000 	nop
  4794c4:	00621026 	xor	v0,v1,v0
  4794c8:	000217c2 	srl	v0,v0,0x1f
  4794cc:	00821025 	or	v0,a0,v0
  4794d0:	afc20034 	sw	v0,52(s8)
  4794d4:	00a22021 	addu	a0,a1,v0
  4794d8:	8fc2001c 	lw	v0,28(s8)
  4794dc:	00000000 	nop
  4794e0:	00021940 	sll	v1,v0,0x5
  4794e4:	000216c2 	srl	v0,v0,0x1b
  4794e8:	00621025 	or	v0,v1,v0
  4794ec:	00821821 	addu	v1,a0,v0
  4794f0:	8fc20018 	lw	v0,24(s8)
  4794f4:	00000000 	nop
  4794f8:	00621021 	addu	v0,v1,v0
  4794fc:	3c018f1b 	lui	at,0x8f1b
  479500:	3421bcdc 	ori	at,at,0xbcdc
  479504:	00221021 	addu	v0,at,v0
  479508:	afc20018 	sw	v0,24(s8)
  47950c:	8fc20020 	lw	v0,32(s8)
  479510:	00000000 	nop
  479514:	00021f80 	sll	v1,v0,0x1e
  479518:	00021082 	srl	v0,v0,0x2
  47951c:	00621025 	or	v0,v1,v0
  479520:	afc20020 	sw	v0,32(s8)
  479524:	8fc3001c 	lw	v1,28(s8)
  479528:	8fc20020 	lw	v0,32(s8)
  47952c:	00000000 	nop
  479530:	00621825 	or	v1,v1,v0
  479534:	8fc20024 	lw	v0,36(s8)
  479538:	00000000 	nop
  47953c:	00622024 	and	a0,v1,v0
  479540:	8fc3001c 	lw	v1,28(s8)
  479544:	8fc20020 	lw	v0,32(s8)
  479548:	00000000 	nop
  47954c:	00621024 	and	v0,v1,v0
  479550:	00822825 	or	a1,a0,v0
  479554:	8fc3006c 	lw	v1,108(s8)
  479558:	8fc20058 	lw	v0,88(s8)
  47955c:	00000000 	nop
  479560:	00621826 	xor	v1,v1,v0
  479564:	8fc20040 	lw	v0,64(s8)
  479568:	00000000 	nop
  47956c:	00621826 	xor	v1,v1,v0
  479570:	8fc20038 	lw	v0,56(s8)
  479574:	00000000 	nop
  479578:	00621026 	xor	v0,v1,v0
  47957c:	00022040 	sll	a0,v0,0x1
  479580:	8fc3006c 	lw	v1,108(s8)
  479584:	8fc20058 	lw	v0,88(s8)
  479588:	00000000 	nop
  47958c:	00621826 	xor	v1,v1,v0
  479590:	8fc20040 	lw	v0,64(s8)
  479594:	00000000 	nop
  479598:	00621826 	xor	v1,v1,v0
  47959c:	8fc20038 	lw	v0,56(s8)
  4795a0:	00000000 	nop
  4795a4:	00621026 	xor	v0,v1,v0
  4795a8:	000217c2 	srl	v0,v0,0x1f
  4795ac:	00821025 	or	v0,a0,v0
  4795b0:	afc20038 	sw	v0,56(s8)
  4795b4:	00a22021 	addu	a0,a1,v0
  4795b8:	8fc20018 	lw	v0,24(s8)
  4795bc:	00000000 	nop
  4795c0:	00021940 	sll	v1,v0,0x5
  4795c4:	000216c2 	srl	v0,v0,0x1b
  4795c8:	00621025 	or	v0,v1,v0
  4795cc:	00821821 	addu	v1,a0,v0
  4795d0:	8fc20028 	lw	v0,40(s8)
  4795d4:	00000000 	nop
  4795d8:	00621021 	addu	v0,v1,v0
  4795dc:	3c018f1b 	lui	at,0x8f1b
  4795e0:	3421bcdc 	ori	at,at,0xbcdc
  4795e4:	00221021 	addu	v0,at,v0
  4795e8:	afc20028 	sw	v0,40(s8)
  4795ec:	8fc2001c 	lw	v0,28(s8)
  4795f0:	00000000 	nop
  4795f4:	00021f80 	sll	v1,v0,0x1e
  4795f8:	00021082 	srl	v0,v0,0x2
  4795fc:	00621025 	or	v0,v1,v0
  479600:	afc2001c 	sw	v0,28(s8)
  479604:	8fc30018 	lw	v1,24(s8)
  479608:	8fc2001c 	lw	v0,28(s8)
  47960c:	00000000 	nop
  479610:	00621825 	or	v1,v1,v0
  479614:	8fc20020 	lw	v0,32(s8)
  479618:	00000000 	nop
  47961c:	00622024 	and	a0,v1,v0
  479620:	8fc30018 	lw	v1,24(s8)
  479624:	8fc2001c 	lw	v0,28(s8)
  479628:	00000000 	nop
  47962c:	00621024 	and	v0,v1,v0
  479630:	00822825 	or	a1,a0,v0
  479634:	8fc30030 	lw	v1,48(s8)
  479638:	8fc2005c 	lw	v0,92(s8)
  47963c:	00000000 	nop
  479640:	00621826 	xor	v1,v1,v0
  479644:	8fc20044 	lw	v0,68(s8)
  479648:	00000000 	nop
  47964c:	00621826 	xor	v1,v1,v0
  479650:	8fc2003c 	lw	v0,60(s8)
  479654:	00000000 	nop
  479658:	00621026 	xor	v0,v1,v0
  47965c:	00022040 	sll	a0,v0,0x1
  479660:	8fc30030 	lw	v1,48(s8)
  479664:	8fc2005c 	lw	v0,92(s8)
  479668:	00000000 	nop
  47966c:	00621826 	xor	v1,v1,v0
  479670:	8fc20044 	lw	v0,68(s8)
  479674:	00000000 	nop
  479678:	00621826 	xor	v1,v1,v0
  47967c:	8fc2003c 	lw	v0,60(s8)
  479680:	00000000 	nop
  479684:	00621026 	xor	v0,v1,v0
  479688:	000217c2 	srl	v0,v0,0x1f
  47968c:	00821025 	or	v0,a0,v0
  479690:	afc2003c 	sw	v0,60(s8)
  479694:	00a22021 	addu	a0,a1,v0
  479698:	8fc20028 	lw	v0,40(s8)
  47969c:	00000000 	nop
  4796a0:	00021940 	sll	v1,v0,0x5
  4796a4:	000216c2 	srl	v0,v0,0x1b
  4796a8:	00621025 	or	v0,v1,v0
  4796ac:	00821821 	addu	v1,a0,v0
  4796b0:	8fc20024 	lw	v0,36(s8)
  4796b4:	00000000 	nop
  4796b8:	00621021 	addu	v0,v1,v0
  4796bc:	3c018f1b 	lui	at,0x8f1b
  4796c0:	3421bcdc 	ori	at,at,0xbcdc
  4796c4:	00221021 	addu	v0,at,v0
  4796c8:	afc20024 	sw	v0,36(s8)
  4796cc:	8fc20018 	lw	v0,24(s8)
  4796d0:	00000000 	nop
  4796d4:	00021f80 	sll	v1,v0,0x1e
  4796d8:	00021082 	srl	v0,v0,0x2
  4796dc:	00621025 	or	v0,v1,v0
  4796e0:	afc20018 	sw	v0,24(s8)
    R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);
  4796e4:	8fc30028 	lw	v1,40(s8)
  4796e8:	8fc20018 	lw	v0,24(s8)
  4796ec:	00000000 	nop
  4796f0:	00621825 	or	v1,v1,v0
  4796f4:	8fc2001c 	lw	v0,28(s8)
  4796f8:	00000000 	nop
  4796fc:	00622024 	and	a0,v1,v0
  479700:	8fc30028 	lw	v1,40(s8)
  479704:	8fc20018 	lw	v0,24(s8)
  479708:	00000000 	nop
  47970c:	00621024 	and	v0,v1,v0
  479710:	00822825 	or	a1,a0,v0
  479714:	8fc30034 	lw	v1,52(s8)
  479718:	8fc20060 	lw	v0,96(s8)
  47971c:	00000000 	nop
  479720:	00621826 	xor	v1,v1,v0
  479724:	8fc20048 	lw	v0,72(s8)
  479728:	00000000 	nop
  47972c:	00621826 	xor	v1,v1,v0
  479730:	8fc20040 	lw	v0,64(s8)
  479734:	00000000 	nop
  479738:	00621026 	xor	v0,v1,v0
  47973c:	00022040 	sll	a0,v0,0x1
  479740:	8fc30034 	lw	v1,52(s8)
  479744:	8fc20060 	lw	v0,96(s8)
  479748:	00000000 	nop
  47974c:	00621826 	xor	v1,v1,v0
  479750:	8fc20048 	lw	v0,72(s8)
  479754:	00000000 	nop
  479758:	00621826 	xor	v1,v1,v0
  47975c:	8fc20040 	lw	v0,64(s8)
  479760:	00000000 	nop
  479764:	00621026 	xor	v0,v1,v0
  479768:	000217c2 	srl	v0,v0,0x1f
  47976c:	00821025 	or	v0,a0,v0
  479770:	afc20040 	sw	v0,64(s8)
  479774:	00a22021 	addu	a0,a1,v0
  479778:	8fc20024 	lw	v0,36(s8)
  47977c:	00000000 	nop
  479780:	00021940 	sll	v1,v0,0x5
  479784:	000216c2 	srl	v0,v0,0x1b
  479788:	00621025 	or	v0,v1,v0
  47978c:	00821821 	addu	v1,a0,v0
  479790:	8fc20020 	lw	v0,32(s8)
  479794:	00000000 	nop
  479798:	00621021 	addu	v0,v1,v0
  47979c:	3c018f1b 	lui	at,0x8f1b
  4797a0:	3421bcdc 	ori	at,at,0xbcdc
  4797a4:	00221021 	addu	v0,at,v0
  4797a8:	afc20020 	sw	v0,32(s8)
  4797ac:	8fc20028 	lw	v0,40(s8)
  4797b0:	00000000 	nop
  4797b4:	00021f80 	sll	v1,v0,0x1e
  4797b8:	00021082 	srl	v0,v0,0x2
  4797bc:	00621025 	or	v0,v1,v0
  4797c0:	afc20028 	sw	v0,40(s8)
  4797c4:	8fc30024 	lw	v1,36(s8)
  4797c8:	8fc20028 	lw	v0,40(s8)
  4797cc:	00000000 	nop
  4797d0:	00621825 	or	v1,v1,v0
  4797d4:	8fc20018 	lw	v0,24(s8)
  4797d8:	00000000 	nop
  4797dc:	00622024 	and	a0,v1,v0
  4797e0:	8fc30024 	lw	v1,36(s8)
  4797e4:	8fc20028 	lw	v0,40(s8)
  4797e8:	00000000 	nop
  4797ec:	00621024 	and	v0,v1,v0
  4797f0:	00822825 	or	a1,a0,v0
  4797f4:	8fc30038 	lw	v1,56(s8)
  4797f8:	8fc20064 	lw	v0,100(s8)
  4797fc:	00000000 	nop
  479800:	00621826 	xor	v1,v1,v0
  479804:	8fc2004c 	lw	v0,76(s8)
  479808:	00000000 	nop
  47980c:	00621826 	xor	v1,v1,v0
  479810:	8fc20044 	lw	v0,68(s8)
  479814:	00000000 	nop
  479818:	00621026 	xor	v0,v1,v0
  47981c:	00022040 	sll	a0,v0,0x1
  479820:	8fc30038 	lw	v1,56(s8)
  479824:	8fc20064 	lw	v0,100(s8)
  479828:	00000000 	nop
  47982c:	00621826 	xor	v1,v1,v0
  479830:	8fc2004c 	lw	v0,76(s8)
  479834:	00000000 	nop
  479838:	00621826 	xor	v1,v1,v0
  47983c:	8fc20044 	lw	v0,68(s8)
  479840:	00000000 	nop
  479844:	00621026 	xor	v0,v1,v0
  479848:	000217c2 	srl	v0,v0,0x1f
  47984c:	00821025 	or	v0,a0,v0
  479850:	afc20044 	sw	v0,68(s8)
  479854:	00a22021 	addu	a0,a1,v0
  479858:	8fc20020 	lw	v0,32(s8)
  47985c:	00000000 	nop
  479860:	00021940 	sll	v1,v0,0x5
  479864:	000216c2 	srl	v0,v0,0x1b
  479868:	00621025 	or	v0,v1,v0
  47986c:	00821821 	addu	v1,a0,v0
  479870:	8fc2001c 	lw	v0,28(s8)
  479874:	00000000 	nop
  479878:	00621021 	addu	v0,v1,v0
  47987c:	3c018f1b 	lui	at,0x8f1b
  479880:	3421bcdc 	ori	at,at,0xbcdc
  479884:	00221021 	addu	v0,at,v0
  479888:	afc2001c 	sw	v0,28(s8)
  47988c:	8fc20024 	lw	v0,36(s8)
  479890:	00000000 	nop
  479894:	00021f80 	sll	v1,v0,0x1e
  479898:	00021082 	srl	v0,v0,0x2
  47989c:	00621025 	or	v0,v1,v0
  4798a0:	afc20024 	sw	v0,36(s8)
  4798a4:	8fc30020 	lw	v1,32(s8)
  4798a8:	8fc20024 	lw	v0,36(s8)
  4798ac:	00000000 	nop
  4798b0:	00621825 	or	v1,v1,v0
  4798b4:	8fc20028 	lw	v0,40(s8)
  4798b8:	00000000 	nop
  4798bc:	00622024 	and	a0,v1,v0
  4798c0:	8fc30020 	lw	v1,32(s8)
  4798c4:	8fc20024 	lw	v0,36(s8)
  4798c8:	00000000 	nop
  4798cc:	00621024 	and	v0,v1,v0
  4798d0:	00822825 	or	a1,a0,v0
  4798d4:	8fc3003c 	lw	v1,60(s8)
  4798d8:	8fc20068 	lw	v0,104(s8)
  4798dc:	00000000 	nop
  4798e0:	00621826 	xor	v1,v1,v0
  4798e4:	8fc20050 	lw	v0,80(s8)
  4798e8:	00000000 	nop
  4798ec:	00621826 	xor	v1,v1,v0
  4798f0:	8fc20048 	lw	v0,72(s8)
  4798f4:	00000000 	nop
  4798f8:	00621026 	xor	v0,v1,v0
  4798fc:	00022040 	sll	a0,v0,0x1
  479900:	8fc3003c 	lw	v1,60(s8)
  479904:	8fc20068 	lw	v0,104(s8)
  479908:	00000000 	nop
  47990c:	00621826 	xor	v1,v1,v0
  479910:	8fc20050 	lw	v0,80(s8)
  479914:	00000000 	nop
  479918:	00621826 	xor	v1,v1,v0
  47991c:	8fc20048 	lw	v0,72(s8)
  479920:	00000000 	nop
  479924:	00621026 	xor	v0,v1,v0
  479928:	000217c2 	srl	v0,v0,0x1f
  47992c:	00821025 	or	v0,a0,v0
  479930:	afc20048 	sw	v0,72(s8)
  479934:	00a22021 	addu	a0,a1,v0
  479938:	8fc2001c 	lw	v0,28(s8)
  47993c:	00000000 	nop
  479940:	00021940 	sll	v1,v0,0x5
  479944:	000216c2 	srl	v0,v0,0x1b
  479948:	00621025 	or	v0,v1,v0
  47994c:	00821821 	addu	v1,a0,v0
  479950:	8fc20018 	lw	v0,24(s8)
  479954:	00000000 	nop
  479958:	00621021 	addu	v0,v1,v0
  47995c:	3c018f1b 	lui	at,0x8f1b
  479960:	3421bcdc 	ori	at,at,0xbcdc
  479964:	00221021 	addu	v0,at,v0
  479968:	afc20018 	sw	v0,24(s8)
  47996c:	8fc20020 	lw	v0,32(s8)
  479970:	00000000 	nop
  479974:	00021f80 	sll	v1,v0,0x1e
  479978:	00021082 	srl	v0,v0,0x2
  47997c:	00621025 	or	v0,v1,v0
  479980:	afc20020 	sw	v0,32(s8)
  479984:	8fc3001c 	lw	v1,28(s8)
  479988:	8fc20020 	lw	v0,32(s8)
  47998c:	00000000 	nop
  479990:	00621825 	or	v1,v1,v0
  479994:	8fc20024 	lw	v0,36(s8)
  479998:	00000000 	nop
  47999c:	00622024 	and	a0,v1,v0
  4799a0:	8fc3001c 	lw	v1,28(s8)
  4799a4:	8fc20020 	lw	v0,32(s8)
  4799a8:	00000000 	nop
  4799ac:	00621024 	and	v0,v1,v0
  4799b0:	00822825 	or	a1,a0,v0
  4799b4:	8fc30040 	lw	v1,64(s8)
  4799b8:	8fc2006c 	lw	v0,108(s8)
  4799bc:	00000000 	nop
  4799c0:	00621826 	xor	v1,v1,v0
  4799c4:	8fc20054 	lw	v0,84(s8)
  4799c8:	00000000 	nop
  4799cc:	00621826 	xor	v1,v1,v0
  4799d0:	8fc2004c 	lw	v0,76(s8)
  4799d4:	00000000 	nop
  4799d8:	00621026 	xor	v0,v1,v0
  4799dc:	00022040 	sll	a0,v0,0x1
  4799e0:	8fc30040 	lw	v1,64(s8)
  4799e4:	8fc2006c 	lw	v0,108(s8)
  4799e8:	00000000 	nop
  4799ec:	00621826 	xor	v1,v1,v0
  4799f0:	8fc20054 	lw	v0,84(s8)
  4799f4:	00000000 	nop
  4799f8:	00621826 	xor	v1,v1,v0
  4799fc:	8fc2004c 	lw	v0,76(s8)
  479a00:	00000000 	nop
  479a04:	00621026 	xor	v0,v1,v0
  479a08:	000217c2 	srl	v0,v0,0x1f
  479a0c:	00821025 	or	v0,a0,v0
  479a10:	afc2004c 	sw	v0,76(s8)
  479a14:	00a22021 	addu	a0,a1,v0
  479a18:	8fc20018 	lw	v0,24(s8)
  479a1c:	00000000 	nop
  479a20:	00021940 	sll	v1,v0,0x5
  479a24:	000216c2 	srl	v0,v0,0x1b
  479a28:	00621025 	or	v0,v1,v0
  479a2c:	00821821 	addu	v1,a0,v0
  479a30:	8fc20028 	lw	v0,40(s8)
  479a34:	00000000 	nop
  479a38:	00621021 	addu	v0,v1,v0
  479a3c:	3c018f1b 	lui	at,0x8f1b
  479a40:	3421bcdc 	ori	at,at,0xbcdc
  479a44:	00221021 	addu	v0,at,v0
  479a48:	afc20028 	sw	v0,40(s8)
  479a4c:	8fc2001c 	lw	v0,28(s8)
  479a50:	00000000 	nop
  479a54:	00021f80 	sll	v1,v0,0x1e
  479a58:	00021082 	srl	v0,v0,0x2
  479a5c:	00621025 	or	v0,v1,v0
  479a60:	afc2001c 	sw	v0,28(s8)
    R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);
  479a64:	8fc30018 	lw	v1,24(s8)
  479a68:	8fc2001c 	lw	v0,28(s8)
  479a6c:	00000000 	nop
  479a70:	00621825 	or	v1,v1,v0
  479a74:	8fc20020 	lw	v0,32(s8)
  479a78:	00000000 	nop
  479a7c:	00622024 	and	a0,v1,v0
  479a80:	8fc30018 	lw	v1,24(s8)
  479a84:	8fc2001c 	lw	v0,28(s8)
  479a88:	00000000 	nop
  479a8c:	00621024 	and	v0,v1,v0
  479a90:	00822825 	or	a1,a0,v0
  479a94:	8fc30044 	lw	v1,68(s8)
  479a98:	8fc20030 	lw	v0,48(s8)
  479a9c:	00000000 	nop
  479aa0:	00621826 	xor	v1,v1,v0
  479aa4:	8fc20058 	lw	v0,88(s8)
  479aa8:	00000000 	nop
  479aac:	00621826 	xor	v1,v1,v0
  479ab0:	8fc20050 	lw	v0,80(s8)
  479ab4:	00000000 	nop
  479ab8:	00621026 	xor	v0,v1,v0
  479abc:	00022040 	sll	a0,v0,0x1
  479ac0:	8fc30044 	lw	v1,68(s8)
  479ac4:	8fc20030 	lw	v0,48(s8)
  479ac8:	00000000 	nop
  479acc:	00621826 	xor	v1,v1,v0
  479ad0:	8fc20058 	lw	v0,88(s8)
  479ad4:	00000000 	nop
  479ad8:	00621826 	xor	v1,v1,v0
  479adc:	8fc20050 	lw	v0,80(s8)
  479ae0:	00000000 	nop
  479ae4:	00621026 	xor	v0,v1,v0
  479ae8:	000217c2 	srl	v0,v0,0x1f
  479aec:	00821025 	or	v0,a0,v0
  479af0:	afc20050 	sw	v0,80(s8)
  479af4:	00a22021 	addu	a0,a1,v0
  479af8:	8fc20028 	lw	v0,40(s8)
  479afc:	00000000 	nop
  479b00:	00021940 	sll	v1,v0,0x5
  479b04:	000216c2 	srl	v0,v0,0x1b
  479b08:	00621025 	or	v0,v1,v0
  479b0c:	00821821 	addu	v1,a0,v0
  479b10:	8fc20024 	lw	v0,36(s8)
  479b14:	00000000 	nop
  479b18:	00621021 	addu	v0,v1,v0
  479b1c:	3c018f1b 	lui	at,0x8f1b
  479b20:	3421bcdc 	ori	at,at,0xbcdc
  479b24:	00221021 	addu	v0,at,v0
  479b28:	afc20024 	sw	v0,36(s8)
  479b2c:	8fc20018 	lw	v0,24(s8)
  479b30:	00000000 	nop
  479b34:	00021f80 	sll	v1,v0,0x1e
  479b38:	00021082 	srl	v0,v0,0x2
  479b3c:	00621025 	or	v0,v1,v0
  479b40:	afc20018 	sw	v0,24(s8)
  479b44:	8fc30028 	lw	v1,40(s8)
  479b48:	8fc20018 	lw	v0,24(s8)
  479b4c:	00000000 	nop
  479b50:	00621825 	or	v1,v1,v0
  479b54:	8fc2001c 	lw	v0,28(s8)
  479b58:	00000000 	nop
  479b5c:	00622024 	and	a0,v1,v0
  479b60:	8fc30028 	lw	v1,40(s8)
  479b64:	8fc20018 	lw	v0,24(s8)
  479b68:	00000000 	nop
  479b6c:	00621024 	and	v0,v1,v0
  479b70:	00822825 	or	a1,a0,v0
  479b74:	8fc30048 	lw	v1,72(s8)
  479b78:	8fc20034 	lw	v0,52(s8)
  479b7c:	00000000 	nop
  479b80:	00621826 	xor	v1,v1,v0
  479b84:	8fc2005c 	lw	v0,92(s8)
  479b88:	00000000 	nop
  479b8c:	00621826 	xor	v1,v1,v0
  479b90:	8fc20054 	lw	v0,84(s8)
  479b94:	00000000 	nop
  479b98:	00621026 	xor	v0,v1,v0
  479b9c:	00022040 	sll	a0,v0,0x1
  479ba0:	8fc30048 	lw	v1,72(s8)
  479ba4:	8fc20034 	lw	v0,52(s8)
  479ba8:	00000000 	nop
  479bac:	00621826 	xor	v1,v1,v0
  479bb0:	8fc2005c 	lw	v0,92(s8)
  479bb4:	00000000 	nop
  479bb8:	00621826 	xor	v1,v1,v0
  479bbc:	8fc20054 	lw	v0,84(s8)
  479bc0:	00000000 	nop
  479bc4:	00621026 	xor	v0,v1,v0
  479bc8:	000217c2 	srl	v0,v0,0x1f
  479bcc:	00821025 	or	v0,a0,v0
  479bd0:	afc20054 	sw	v0,84(s8)
  479bd4:	00a22021 	addu	a0,a1,v0
  479bd8:	8fc20024 	lw	v0,36(s8)
  479bdc:	00000000 	nop
  479be0:	00021940 	sll	v1,v0,0x5
  479be4:	000216c2 	srl	v0,v0,0x1b
  479be8:	00621025 	or	v0,v1,v0
  479bec:	00821821 	addu	v1,a0,v0
  479bf0:	8fc20020 	lw	v0,32(s8)
  479bf4:	00000000 	nop
  479bf8:	00621021 	addu	v0,v1,v0
  479bfc:	3c018f1b 	lui	at,0x8f1b
  479c00:	3421bcdc 	ori	at,at,0xbcdc
  479c04:	00221021 	addu	v0,at,v0
  479c08:	afc20020 	sw	v0,32(s8)
  479c0c:	8fc20028 	lw	v0,40(s8)
  479c10:	00000000 	nop
  479c14:	00021f80 	sll	v1,v0,0x1e
  479c18:	00021082 	srl	v0,v0,0x2
  479c1c:	00621025 	or	v0,v1,v0
  479c20:	afc20028 	sw	v0,40(s8)
  479c24:	8fc30024 	lw	v1,36(s8)
  479c28:	8fc20028 	lw	v0,40(s8)
  479c2c:	00000000 	nop
  479c30:	00621825 	or	v1,v1,v0
  479c34:	8fc20018 	lw	v0,24(s8)
  479c38:	00000000 	nop
  479c3c:	00622024 	and	a0,v1,v0
  479c40:	8fc30024 	lw	v1,36(s8)
  479c44:	8fc20028 	lw	v0,40(s8)
  479c48:	00000000 	nop
  479c4c:	00621024 	and	v0,v1,v0
  479c50:	00822825 	or	a1,a0,v0
  479c54:	8fc3004c 	lw	v1,76(s8)
  479c58:	8fc20038 	lw	v0,56(s8)
  479c5c:	00000000 	nop
  479c60:	00621826 	xor	v1,v1,v0
  479c64:	8fc20060 	lw	v0,96(s8)
  479c68:	00000000 	nop
  479c6c:	00621826 	xor	v1,v1,v0
  479c70:	8fc20058 	lw	v0,88(s8)
  479c74:	00000000 	nop
  479c78:	00621026 	xor	v0,v1,v0
  479c7c:	00022040 	sll	a0,v0,0x1
  479c80:	8fc3004c 	lw	v1,76(s8)
  479c84:	8fc20038 	lw	v0,56(s8)
  479c88:	00000000 	nop
  479c8c:	00621826 	xor	v1,v1,v0
  479c90:	8fc20060 	lw	v0,96(s8)
  479c94:	00000000 	nop
  479c98:	00621826 	xor	v1,v1,v0
  479c9c:	8fc20058 	lw	v0,88(s8)
  479ca0:	00000000 	nop
  479ca4:	00621026 	xor	v0,v1,v0
  479ca8:	000217c2 	srl	v0,v0,0x1f
  479cac:	00821025 	or	v0,a0,v0
  479cb0:	afc20058 	sw	v0,88(s8)
  479cb4:	00a22021 	addu	a0,a1,v0
  479cb8:	8fc20020 	lw	v0,32(s8)
  479cbc:	00000000 	nop
  479cc0:	00021940 	sll	v1,v0,0x5
  479cc4:	000216c2 	srl	v0,v0,0x1b
  479cc8:	00621025 	or	v0,v1,v0
  479ccc:	00821821 	addu	v1,a0,v0
  479cd0:	8fc2001c 	lw	v0,28(s8)
  479cd4:	00000000 	nop
  479cd8:	00621021 	addu	v0,v1,v0
  479cdc:	3c018f1b 	lui	at,0x8f1b
  479ce0:	3421bcdc 	ori	at,at,0xbcdc
  479ce4:	00221021 	addu	v0,at,v0
  479ce8:	afc2001c 	sw	v0,28(s8)
  479cec:	8fc20024 	lw	v0,36(s8)
  479cf0:	00000000 	nop
  479cf4:	00021f80 	sll	v1,v0,0x1e
  479cf8:	00021082 	srl	v0,v0,0x2
  479cfc:	00621025 	or	v0,v1,v0
  479d00:	afc20024 	sw	v0,36(s8)
  479d04:	8fc30020 	lw	v1,32(s8)
  479d08:	8fc20024 	lw	v0,36(s8)
  479d0c:	00000000 	nop
  479d10:	00621825 	or	v1,v1,v0
  479d14:	8fc20028 	lw	v0,40(s8)
  479d18:	00000000 	nop
  479d1c:	00622024 	and	a0,v1,v0
  479d20:	8fc30020 	lw	v1,32(s8)
  479d24:	8fc20024 	lw	v0,36(s8)
  479d28:	00000000 	nop
  479d2c:	00621024 	and	v0,v1,v0
  479d30:	00822825 	or	a1,a0,v0
  479d34:	8fc30050 	lw	v1,80(s8)
  479d38:	8fc2003c 	lw	v0,60(s8)
  479d3c:	00000000 	nop
  479d40:	00621826 	xor	v1,v1,v0
  479d44:	8fc20064 	lw	v0,100(s8)
  479d48:	00000000 	nop
  479d4c:	00621826 	xor	v1,v1,v0
  479d50:	8fc2005c 	lw	v0,92(s8)
  479d54:	00000000 	nop
  479d58:	00621026 	xor	v0,v1,v0
  479d5c:	00022040 	sll	a0,v0,0x1
  479d60:	8fc30050 	lw	v1,80(s8)
  479d64:	8fc2003c 	lw	v0,60(s8)
  479d68:	00000000 	nop
  479d6c:	00621826 	xor	v1,v1,v0
  479d70:	8fc20064 	lw	v0,100(s8)
  479d74:	00000000 	nop
  479d78:	00621826 	xor	v1,v1,v0
  479d7c:	8fc2005c 	lw	v0,92(s8)
  479d80:	00000000 	nop
  479d84:	00621026 	xor	v0,v1,v0
  479d88:	000217c2 	srl	v0,v0,0x1f
  479d8c:	00821025 	or	v0,a0,v0
  479d90:	afc2005c 	sw	v0,92(s8)
  479d94:	00a22021 	addu	a0,a1,v0
  479d98:	8fc2001c 	lw	v0,28(s8)
  479d9c:	00000000 	nop
  479da0:	00021940 	sll	v1,v0,0x5
  479da4:	000216c2 	srl	v0,v0,0x1b
  479da8:	00621025 	or	v0,v1,v0
  479dac:	00821821 	addu	v1,a0,v0
  479db0:	8fc20018 	lw	v0,24(s8)
  479db4:	00000000 	nop
  479db8:	00621021 	addu	v0,v1,v0
  479dbc:	3c018f1b 	lui	at,0x8f1b
  479dc0:	3421bcdc 	ori	at,at,0xbcdc
  479dc4:	00221021 	addu	v0,at,v0
  479dc8:	afc20018 	sw	v0,24(s8)
  479dcc:	8fc20020 	lw	v0,32(s8)
  479dd0:	00000000 	nop
  479dd4:	00021f80 	sll	v1,v0,0x1e
  479dd8:	00021082 	srl	v0,v0,0x2
  479ddc:	00621025 	or	v0,v1,v0
  479de0:	afc20020 	sw	v0,32(s8)
    R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);
  479de4:	8fc3001c 	lw	v1,28(s8)
  479de8:	8fc20020 	lw	v0,32(s8)
  479dec:	00000000 	nop
  479df0:	00621826 	xor	v1,v1,v0
  479df4:	8fc20024 	lw	v0,36(s8)
  479df8:	00000000 	nop
  479dfc:	00622826 	xor	a1,v1,v0
  479e00:	8fc30054 	lw	v1,84(s8)
  479e04:	8fc20040 	lw	v0,64(s8)
  479e08:	00000000 	nop
  479e0c:	00621826 	xor	v1,v1,v0
  479e10:	8fc20068 	lw	v0,104(s8)
  479e14:	00000000 	nop
  479e18:	00621826 	xor	v1,v1,v0
  479e1c:	8fc20060 	lw	v0,96(s8)
  479e20:	00000000 	nop
  479e24:	00621026 	xor	v0,v1,v0
  479e28:	00022040 	sll	a0,v0,0x1
  479e2c:	8fc30054 	lw	v1,84(s8)
  479e30:	8fc20040 	lw	v0,64(s8)
  479e34:	00000000 	nop
  479e38:	00621826 	xor	v1,v1,v0
  479e3c:	8fc20068 	lw	v0,104(s8)
  479e40:	00000000 	nop
  479e44:	00621826 	xor	v1,v1,v0
  479e48:	8fc20060 	lw	v0,96(s8)
  479e4c:	00000000 	nop
  479e50:	00621026 	xor	v0,v1,v0
  479e54:	000217c2 	srl	v0,v0,0x1f
  479e58:	00821025 	or	v0,a0,v0
  479e5c:	afc20060 	sw	v0,96(s8)
  479e60:	00a22021 	addu	a0,a1,v0
  479e64:	8fc20018 	lw	v0,24(s8)
  479e68:	00000000 	nop
  479e6c:	00021940 	sll	v1,v0,0x5
  479e70:	000216c2 	srl	v0,v0,0x1b
  479e74:	00621025 	or	v0,v1,v0
  479e78:	00821821 	addu	v1,a0,v0
  479e7c:	8fc20028 	lw	v0,40(s8)
  479e80:	00000000 	nop
  479e84:	00621021 	addu	v0,v1,v0
  479e88:	3c01ca62 	lui	at,0xca62
  479e8c:	3421c1d6 	ori	at,at,0xc1d6
  479e90:	00221021 	addu	v0,at,v0
  479e94:	afc20028 	sw	v0,40(s8)
  479e98:	8fc2001c 	lw	v0,28(s8)
  479e9c:	00000000 	nop
  479ea0:	00021f80 	sll	v1,v0,0x1e
  479ea4:	00021082 	srl	v0,v0,0x2
  479ea8:	00621025 	or	v0,v1,v0
  479eac:	afc2001c 	sw	v0,28(s8)
  479eb0:	8fc30018 	lw	v1,24(s8)
  479eb4:	8fc2001c 	lw	v0,28(s8)
  479eb8:	00000000 	nop
  479ebc:	00621826 	xor	v1,v1,v0
  479ec0:	8fc20020 	lw	v0,32(s8)
  479ec4:	00000000 	nop
  479ec8:	00622826 	xor	a1,v1,v0
  479ecc:	8fc30058 	lw	v1,88(s8)
  479ed0:	8fc20044 	lw	v0,68(s8)
  479ed4:	00000000 	nop
  479ed8:	00621826 	xor	v1,v1,v0
  479edc:	8fc2006c 	lw	v0,108(s8)
  479ee0:	00000000 	nop
  479ee4:	00621826 	xor	v1,v1,v0
  479ee8:	8fc20064 	lw	v0,100(s8)
  479eec:	00000000 	nop
  479ef0:	00621026 	xor	v0,v1,v0
  479ef4:	00022040 	sll	a0,v0,0x1
  479ef8:	8fc30058 	lw	v1,88(s8)
  479efc:	8fc20044 	lw	v0,68(s8)
  479f00:	00000000 	nop
  479f04:	00621826 	xor	v1,v1,v0
  479f08:	8fc2006c 	lw	v0,108(s8)
  479f0c:	00000000 	nop
  479f10:	00621826 	xor	v1,v1,v0
  479f14:	8fc20064 	lw	v0,100(s8)
  479f18:	00000000 	nop
  479f1c:	00621026 	xor	v0,v1,v0
  479f20:	000217c2 	srl	v0,v0,0x1f
  479f24:	00821025 	or	v0,a0,v0
  479f28:	afc20064 	sw	v0,100(s8)
  479f2c:	00a22021 	addu	a0,a1,v0
  479f30:	8fc20028 	lw	v0,40(s8)
  479f34:	00000000 	nop
  479f38:	00021940 	sll	v1,v0,0x5
  479f3c:	000216c2 	srl	v0,v0,0x1b
  479f40:	00621025 	or	v0,v1,v0
  479f44:	00821821 	addu	v1,a0,v0
  479f48:	8fc20024 	lw	v0,36(s8)
  479f4c:	00000000 	nop
  479f50:	00621021 	addu	v0,v1,v0
  479f54:	3c01ca62 	lui	at,0xca62
  479f58:	3421c1d6 	ori	at,at,0xc1d6
  479f5c:	00221021 	addu	v0,at,v0
  479f60:	afc20024 	sw	v0,36(s8)
  479f64:	8fc20018 	lw	v0,24(s8)
  479f68:	00000000 	nop
  479f6c:	00021f80 	sll	v1,v0,0x1e
  479f70:	00021082 	srl	v0,v0,0x2
  479f74:	00621025 	or	v0,v1,v0
  479f78:	afc20018 	sw	v0,24(s8)
  479f7c:	8fc30028 	lw	v1,40(s8)
  479f80:	8fc20018 	lw	v0,24(s8)
  479f84:	00000000 	nop
  479f88:	00621826 	xor	v1,v1,v0
  479f8c:	8fc2001c 	lw	v0,28(s8)
  479f90:	00000000 	nop
  479f94:	00622826 	xor	a1,v1,v0
  479f98:	8fc3005c 	lw	v1,92(s8)
  479f9c:	8fc20048 	lw	v0,72(s8)
  479fa0:	00000000 	nop
  479fa4:	00621826 	xor	v1,v1,v0
  479fa8:	8fc20030 	lw	v0,48(s8)
  479fac:	00000000 	nop
  479fb0:	00621826 	xor	v1,v1,v0
  479fb4:	8fc20068 	lw	v0,104(s8)
  479fb8:	00000000 	nop
  479fbc:	00621026 	xor	v0,v1,v0
  479fc0:	00022040 	sll	a0,v0,0x1
  479fc4:	8fc3005c 	lw	v1,92(s8)
  479fc8:	8fc20048 	lw	v0,72(s8)
  479fcc:	00000000 	nop
  479fd0:	00621826 	xor	v1,v1,v0
  479fd4:	8fc20030 	lw	v0,48(s8)
  479fd8:	00000000 	nop
  479fdc:	00621826 	xor	v1,v1,v0
  479fe0:	8fc20068 	lw	v0,104(s8)
  479fe4:	00000000 	nop
  479fe8:	00621026 	xor	v0,v1,v0
  479fec:	000217c2 	srl	v0,v0,0x1f
  479ff0:	00821025 	or	v0,a0,v0
  479ff4:	afc20068 	sw	v0,104(s8)
  479ff8:	00a22021 	addu	a0,a1,v0
  479ffc:	8fc20024 	lw	v0,36(s8)
  47a000:	00000000 	nop
  47a004:	00021940 	sll	v1,v0,0x5
  47a008:	000216c2 	srl	v0,v0,0x1b
  47a00c:	00621025 	or	v0,v1,v0
  47a010:	00821821 	addu	v1,a0,v0
  47a014:	8fc20020 	lw	v0,32(s8)
  47a018:	00000000 	nop
  47a01c:	00621021 	addu	v0,v1,v0
  47a020:	3c01ca62 	lui	at,0xca62
  47a024:	3421c1d6 	ori	at,at,0xc1d6
  47a028:	00221021 	addu	v0,at,v0
  47a02c:	afc20020 	sw	v0,32(s8)
  47a030:	8fc20028 	lw	v0,40(s8)
  47a034:	00000000 	nop
  47a038:	00021f80 	sll	v1,v0,0x1e
  47a03c:	00021082 	srl	v0,v0,0x2
  47a040:	00621025 	or	v0,v1,v0
  47a044:	afc20028 	sw	v0,40(s8)
  47a048:	8fc30024 	lw	v1,36(s8)
  47a04c:	8fc20028 	lw	v0,40(s8)
  47a050:	00000000 	nop
  47a054:	00621826 	xor	v1,v1,v0
  47a058:	8fc20018 	lw	v0,24(s8)
  47a05c:	00000000 	nop
  47a060:	00622826 	xor	a1,v1,v0
  47a064:	8fc30060 	lw	v1,96(s8)
  47a068:	8fc2004c 	lw	v0,76(s8)
  47a06c:	00000000 	nop
  47a070:	00621826 	xor	v1,v1,v0
  47a074:	8fc20034 	lw	v0,52(s8)
  47a078:	00000000 	nop
  47a07c:	00621826 	xor	v1,v1,v0
  47a080:	8fc2006c 	lw	v0,108(s8)
  47a084:	00000000 	nop
  47a088:	00621026 	xor	v0,v1,v0
  47a08c:	00022040 	sll	a0,v0,0x1
  47a090:	8fc30060 	lw	v1,96(s8)
  47a094:	8fc2004c 	lw	v0,76(s8)
  47a098:	00000000 	nop
  47a09c:	00621826 	xor	v1,v1,v0
  47a0a0:	8fc20034 	lw	v0,52(s8)
  47a0a4:	00000000 	nop
  47a0a8:	00621826 	xor	v1,v1,v0
  47a0ac:	8fc2006c 	lw	v0,108(s8)
  47a0b0:	00000000 	nop
  47a0b4:	00621026 	xor	v0,v1,v0
  47a0b8:	000217c2 	srl	v0,v0,0x1f
  47a0bc:	00821025 	or	v0,a0,v0
  47a0c0:	afc2006c 	sw	v0,108(s8)
  47a0c4:	00a22021 	addu	a0,a1,v0
  47a0c8:	8fc20020 	lw	v0,32(s8)
  47a0cc:	00000000 	nop
  47a0d0:	00021940 	sll	v1,v0,0x5
  47a0d4:	000216c2 	srl	v0,v0,0x1b
  47a0d8:	00621025 	or	v0,v1,v0
  47a0dc:	00821821 	addu	v1,a0,v0
  47a0e0:	8fc2001c 	lw	v0,28(s8)
  47a0e4:	00000000 	nop
  47a0e8:	00621021 	addu	v0,v1,v0
  47a0ec:	3c01ca62 	lui	at,0xca62
  47a0f0:	3421c1d6 	ori	at,at,0xc1d6
  47a0f4:	00221021 	addu	v0,at,v0
  47a0f8:	afc2001c 	sw	v0,28(s8)
  47a0fc:	8fc20024 	lw	v0,36(s8)
  47a100:	00000000 	nop
  47a104:	00021f80 	sll	v1,v0,0x1e
  47a108:	00021082 	srl	v0,v0,0x2
  47a10c:	00621025 	or	v0,v1,v0
  47a110:	afc20024 	sw	v0,36(s8)
    R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);
  47a114:	8fc30020 	lw	v1,32(s8)
  47a118:	8fc20024 	lw	v0,36(s8)
  47a11c:	00000000 	nop
  47a120:	00621826 	xor	v1,v1,v0
  47a124:	8fc20028 	lw	v0,40(s8)
  47a128:	00000000 	nop
  47a12c:	00622826 	xor	a1,v1,v0
  47a130:	8fc30064 	lw	v1,100(s8)
  47a134:	8fc20050 	lw	v0,80(s8)
  47a138:	00000000 	nop
  47a13c:	00621826 	xor	v1,v1,v0
  47a140:	8fc20038 	lw	v0,56(s8)
  47a144:	00000000 	nop
  47a148:	00621826 	xor	v1,v1,v0
  47a14c:	8fc20030 	lw	v0,48(s8)
  47a150:	00000000 	nop
  47a154:	00621026 	xor	v0,v1,v0
  47a158:	00022040 	sll	a0,v0,0x1
  47a15c:	8fc30064 	lw	v1,100(s8)
  47a160:	8fc20050 	lw	v0,80(s8)
  47a164:	00000000 	nop
  47a168:	00621826 	xor	v1,v1,v0
  47a16c:	8fc20038 	lw	v0,56(s8)
  47a170:	00000000 	nop
  47a174:	00621826 	xor	v1,v1,v0
  47a178:	8fc20030 	lw	v0,48(s8)
  47a17c:	00000000 	nop
  47a180:	00621026 	xor	v0,v1,v0
  47a184:	000217c2 	srl	v0,v0,0x1f
  47a188:	00821025 	or	v0,a0,v0
  47a18c:	afc20030 	sw	v0,48(s8)
  47a190:	00a22021 	addu	a0,a1,v0
  47a194:	8fc2001c 	lw	v0,28(s8)
  47a198:	00000000 	nop
  47a19c:	00021940 	sll	v1,v0,0x5
  47a1a0:	000216c2 	srl	v0,v0,0x1b
  47a1a4:	00621025 	or	v0,v1,v0
  47a1a8:	00821821 	addu	v1,a0,v0
  47a1ac:	8fc20018 	lw	v0,24(s8)
  47a1b0:	00000000 	nop
  47a1b4:	00621021 	addu	v0,v1,v0
  47a1b8:	3c01ca62 	lui	at,0xca62
  47a1bc:	3421c1d6 	ori	at,at,0xc1d6
  47a1c0:	00221021 	addu	v0,at,v0
  47a1c4:	afc20018 	sw	v0,24(s8)
  47a1c8:	8fc20020 	lw	v0,32(s8)
  47a1cc:	00000000 	nop
  47a1d0:	00021f80 	sll	v1,v0,0x1e
  47a1d4:	00021082 	srl	v0,v0,0x2
  47a1d8:	00621025 	or	v0,v1,v0
  47a1dc:	afc20020 	sw	v0,32(s8)
  47a1e0:	8fc3001c 	lw	v1,28(s8)
  47a1e4:	8fc20020 	lw	v0,32(s8)
  47a1e8:	00000000 	nop
  47a1ec:	00621826 	xor	v1,v1,v0
  47a1f0:	8fc20024 	lw	v0,36(s8)
  47a1f4:	00000000 	nop
  47a1f8:	00622826 	xor	a1,v1,v0
  47a1fc:	8fc30068 	lw	v1,104(s8)
  47a200:	8fc20054 	lw	v0,84(s8)
  47a204:	00000000 	nop
  47a208:	00621826 	xor	v1,v1,v0
  47a20c:	8fc2003c 	lw	v0,60(s8)
  47a210:	00000000 	nop
  47a214:	00621826 	xor	v1,v1,v0
  47a218:	8fc20034 	lw	v0,52(s8)
  47a21c:	00000000 	nop
  47a220:	00621026 	xor	v0,v1,v0
  47a224:	00022040 	sll	a0,v0,0x1
  47a228:	8fc30068 	lw	v1,104(s8)
  47a22c:	8fc20054 	lw	v0,84(s8)
  47a230:	00000000 	nop
  47a234:	00621826 	xor	v1,v1,v0
  47a238:	8fc2003c 	lw	v0,60(s8)
  47a23c:	00000000 	nop
  47a240:	00621826 	xor	v1,v1,v0
  47a244:	8fc20034 	lw	v0,52(s8)
  47a248:	00000000 	nop
  47a24c:	00621026 	xor	v0,v1,v0
  47a250:	000217c2 	srl	v0,v0,0x1f
  47a254:	00821025 	or	v0,a0,v0
  47a258:	afc20034 	sw	v0,52(s8)
  47a25c:	00a22021 	addu	a0,a1,v0
  47a260:	8fc20018 	lw	v0,24(s8)
  47a264:	00000000 	nop
  47a268:	00021940 	sll	v1,v0,0x5
  47a26c:	000216c2 	srl	v0,v0,0x1b
  47a270:	00621025 	or	v0,v1,v0
  47a274:	00821821 	addu	v1,a0,v0
  47a278:	8fc20028 	lw	v0,40(s8)
  47a27c:	00000000 	nop
  47a280:	00621021 	addu	v0,v1,v0
  47a284:	3c01ca62 	lui	at,0xca62
  47a288:	3421c1d6 	ori	at,at,0xc1d6
  47a28c:	00221021 	addu	v0,at,v0
  47a290:	afc20028 	sw	v0,40(s8)
  47a294:	8fc2001c 	lw	v0,28(s8)
  47a298:	00000000 	nop
  47a29c:	00021f80 	sll	v1,v0,0x1e
  47a2a0:	00021082 	srl	v0,v0,0x2
  47a2a4:	00621025 	or	v0,v1,v0
  47a2a8:	afc2001c 	sw	v0,28(s8)
  47a2ac:	8fc30018 	lw	v1,24(s8)
  47a2b0:	8fc2001c 	lw	v0,28(s8)
  47a2b4:	00000000 	nop
  47a2b8:	00621826 	xor	v1,v1,v0
  47a2bc:	8fc20020 	lw	v0,32(s8)
  47a2c0:	00000000 	nop
  47a2c4:	00622826 	xor	a1,v1,v0
  47a2c8:	8fc3006c 	lw	v1,108(s8)
  47a2cc:	8fc20058 	lw	v0,88(s8)
  47a2d0:	00000000 	nop
  47a2d4:	00621826 	xor	v1,v1,v0
  47a2d8:	8fc20040 	lw	v0,64(s8)
  47a2dc:	00000000 	nop
  47a2e0:	00621826 	xor	v1,v1,v0
  47a2e4:	8fc20038 	lw	v0,56(s8)
  47a2e8:	00000000 	nop
  47a2ec:	00621026 	xor	v0,v1,v0
  47a2f0:	00022040 	sll	a0,v0,0x1
  47a2f4:	8fc3006c 	lw	v1,108(s8)
  47a2f8:	8fc20058 	lw	v0,88(s8)
  47a2fc:	00000000 	nop
  47a300:	00621826 	xor	v1,v1,v0
  47a304:	8fc20040 	lw	v0,64(s8)
  47a308:	00000000 	nop
  47a30c:	00621826 	xor	v1,v1,v0
  47a310:	8fc20038 	lw	v0,56(s8)
  47a314:	00000000 	nop
  47a318:	00621026 	xor	v0,v1,v0
  47a31c:	000217c2 	srl	v0,v0,0x1f
  47a320:	00821025 	or	v0,a0,v0
  47a324:	afc20038 	sw	v0,56(s8)
  47a328:	00a22021 	addu	a0,a1,v0
  47a32c:	8fc20028 	lw	v0,40(s8)
  47a330:	00000000 	nop
  47a334:	00021940 	sll	v1,v0,0x5
  47a338:	000216c2 	srl	v0,v0,0x1b
  47a33c:	00621025 	or	v0,v1,v0
  47a340:	00821821 	addu	v1,a0,v0
  47a344:	8fc20024 	lw	v0,36(s8)
  47a348:	00000000 	nop
  47a34c:	00621021 	addu	v0,v1,v0
  47a350:	3c01ca62 	lui	at,0xca62
  47a354:	3421c1d6 	ori	at,at,0xc1d6
  47a358:	00221021 	addu	v0,at,v0
  47a35c:	afc20024 	sw	v0,36(s8)
  47a360:	8fc20018 	lw	v0,24(s8)
  47a364:	00000000 	nop
  47a368:	00021f80 	sll	v1,v0,0x1e
  47a36c:	00021082 	srl	v0,v0,0x2
  47a370:	00621025 	or	v0,v1,v0
  47a374:	afc20018 	sw	v0,24(s8)
  47a378:	8fc30028 	lw	v1,40(s8)
  47a37c:	8fc20018 	lw	v0,24(s8)
  47a380:	00000000 	nop
  47a384:	00621826 	xor	v1,v1,v0
  47a388:	8fc2001c 	lw	v0,28(s8)
  47a38c:	00000000 	nop
  47a390:	00622826 	xor	a1,v1,v0
  47a394:	8fc30030 	lw	v1,48(s8)
  47a398:	8fc2005c 	lw	v0,92(s8)
  47a39c:	00000000 	nop
  47a3a0:	00621826 	xor	v1,v1,v0
  47a3a4:	8fc20044 	lw	v0,68(s8)
  47a3a8:	00000000 	nop
  47a3ac:	00621826 	xor	v1,v1,v0
  47a3b0:	8fc2003c 	lw	v0,60(s8)
  47a3b4:	00000000 	nop
  47a3b8:	00621026 	xor	v0,v1,v0
  47a3bc:	00022040 	sll	a0,v0,0x1
  47a3c0:	8fc30030 	lw	v1,48(s8)
  47a3c4:	8fc2005c 	lw	v0,92(s8)
  47a3c8:	00000000 	nop
  47a3cc:	00621826 	xor	v1,v1,v0
  47a3d0:	8fc20044 	lw	v0,68(s8)
  47a3d4:	00000000 	nop
  47a3d8:	00621826 	xor	v1,v1,v0
  47a3dc:	8fc2003c 	lw	v0,60(s8)
  47a3e0:	00000000 	nop
  47a3e4:	00621026 	xor	v0,v1,v0
  47a3e8:	000217c2 	srl	v0,v0,0x1f
  47a3ec:	00821025 	or	v0,a0,v0
  47a3f0:	afc2003c 	sw	v0,60(s8)
  47a3f4:	00a22021 	addu	a0,a1,v0
  47a3f8:	8fc20024 	lw	v0,36(s8)
  47a3fc:	00000000 	nop
  47a400:	00021940 	sll	v1,v0,0x5
  47a404:	000216c2 	srl	v0,v0,0x1b
  47a408:	00621025 	or	v0,v1,v0
  47a40c:	00821821 	addu	v1,a0,v0
  47a410:	8fc20020 	lw	v0,32(s8)
  47a414:	00000000 	nop
  47a418:	00621021 	addu	v0,v1,v0
  47a41c:	3c01ca62 	lui	at,0xca62
  47a420:	3421c1d6 	ori	at,at,0xc1d6
  47a424:	00221021 	addu	v0,at,v0
  47a428:	afc20020 	sw	v0,32(s8)
  47a42c:	8fc20028 	lw	v0,40(s8)
  47a430:	00000000 	nop
  47a434:	00021f80 	sll	v1,v0,0x1e
  47a438:	00021082 	srl	v0,v0,0x2
  47a43c:	00621025 	or	v0,v1,v0
  47a440:	afc20028 	sw	v0,40(s8)
    R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
  47a444:	8fc30024 	lw	v1,36(s8)
  47a448:	8fc20028 	lw	v0,40(s8)
  47a44c:	00000000 	nop
  47a450:	00621826 	xor	v1,v1,v0
  47a454:	8fc20018 	lw	v0,24(s8)
  47a458:	00000000 	nop
  47a45c:	00622826 	xor	a1,v1,v0
  47a460:	8fc30034 	lw	v1,52(s8)
  47a464:	8fc20060 	lw	v0,96(s8)
  47a468:	00000000 	nop
  47a46c:	00621826 	xor	v1,v1,v0
  47a470:	8fc20048 	lw	v0,72(s8)
  47a474:	00000000 	nop
  47a478:	00621826 	xor	v1,v1,v0
  47a47c:	8fc20040 	lw	v0,64(s8)
  47a480:	00000000 	nop
  47a484:	00621026 	xor	v0,v1,v0
  47a488:	00022040 	sll	a0,v0,0x1
  47a48c:	8fc30034 	lw	v1,52(s8)
  47a490:	8fc20060 	lw	v0,96(s8)
  47a494:	00000000 	nop
  47a498:	00621826 	xor	v1,v1,v0
  47a49c:	8fc20048 	lw	v0,72(s8)
  47a4a0:	00000000 	nop
  47a4a4:	00621826 	xor	v1,v1,v0
  47a4a8:	8fc20040 	lw	v0,64(s8)
  47a4ac:	00000000 	nop
  47a4b0:	00621026 	xor	v0,v1,v0
  47a4b4:	000217c2 	srl	v0,v0,0x1f
  47a4b8:	00821025 	or	v0,a0,v0
  47a4bc:	afc20040 	sw	v0,64(s8)
  47a4c0:	00a22021 	addu	a0,a1,v0
  47a4c4:	8fc20020 	lw	v0,32(s8)
  47a4c8:	00000000 	nop
  47a4cc:	00021940 	sll	v1,v0,0x5
  47a4d0:	000216c2 	srl	v0,v0,0x1b
  47a4d4:	00621025 	or	v0,v1,v0
  47a4d8:	00821821 	addu	v1,a0,v0
  47a4dc:	8fc2001c 	lw	v0,28(s8)
  47a4e0:	00000000 	nop
  47a4e4:	00621021 	addu	v0,v1,v0
  47a4e8:	3c01ca62 	lui	at,0xca62
  47a4ec:	3421c1d6 	ori	at,at,0xc1d6
  47a4f0:	00221021 	addu	v0,at,v0
  47a4f4:	afc2001c 	sw	v0,28(s8)
  47a4f8:	8fc20024 	lw	v0,36(s8)
  47a4fc:	00000000 	nop
  47a500:	00021f80 	sll	v1,v0,0x1e
  47a504:	00021082 	srl	v0,v0,0x2
  47a508:	00621025 	or	v0,v1,v0
  47a50c:	afc20024 	sw	v0,36(s8)
  47a510:	8fc30020 	lw	v1,32(s8)
  47a514:	8fc20024 	lw	v0,36(s8)
  47a518:	00000000 	nop
  47a51c:	00621826 	xor	v1,v1,v0
  47a520:	8fc20028 	lw	v0,40(s8)
  47a524:	00000000 	nop
  47a528:	00622826 	xor	a1,v1,v0
  47a52c:	8fc30038 	lw	v1,56(s8)
  47a530:	8fc20064 	lw	v0,100(s8)
  47a534:	00000000 	nop
  47a538:	00621826 	xor	v1,v1,v0
  47a53c:	8fc2004c 	lw	v0,76(s8)
  47a540:	00000000 	nop
  47a544:	00621826 	xor	v1,v1,v0
  47a548:	8fc20044 	lw	v0,68(s8)
  47a54c:	00000000 	nop
  47a550:	00621026 	xor	v0,v1,v0
  47a554:	00022040 	sll	a0,v0,0x1
  47a558:	8fc30038 	lw	v1,56(s8)
  47a55c:	8fc20064 	lw	v0,100(s8)
  47a560:	00000000 	nop
  47a564:	00621826 	xor	v1,v1,v0
  47a568:	8fc2004c 	lw	v0,76(s8)
  47a56c:	00000000 	nop
  47a570:	00621826 	xor	v1,v1,v0
  47a574:	8fc20044 	lw	v0,68(s8)
  47a578:	00000000 	nop
  47a57c:	00621026 	xor	v0,v1,v0
  47a580:	000217c2 	srl	v0,v0,0x1f
  47a584:	00821025 	or	v0,a0,v0
  47a588:	afc20044 	sw	v0,68(s8)
  47a58c:	00a22021 	addu	a0,a1,v0
  47a590:	8fc2001c 	lw	v0,28(s8)
  47a594:	00000000 	nop
  47a598:	00021940 	sll	v1,v0,0x5
  47a59c:	000216c2 	srl	v0,v0,0x1b
  47a5a0:	00621025 	or	v0,v1,v0
  47a5a4:	00821821 	addu	v1,a0,v0
  47a5a8:	8fc20018 	lw	v0,24(s8)
  47a5ac:	00000000 	nop
  47a5b0:	00621021 	addu	v0,v1,v0
  47a5b4:	3c01ca62 	lui	at,0xca62
  47a5b8:	3421c1d6 	ori	at,at,0xc1d6
  47a5bc:	00221021 	addu	v0,at,v0
  47a5c0:	afc20018 	sw	v0,24(s8)
  47a5c4:	8fc20020 	lw	v0,32(s8)
  47a5c8:	00000000 	nop
  47a5cc:	00021f80 	sll	v1,v0,0x1e
  47a5d0:	00021082 	srl	v0,v0,0x2
  47a5d4:	00621025 	or	v0,v1,v0
  47a5d8:	afc20020 	sw	v0,32(s8)
  47a5dc:	8fc3001c 	lw	v1,28(s8)
  47a5e0:	8fc20020 	lw	v0,32(s8)
  47a5e4:	00000000 	nop
  47a5e8:	00621826 	xor	v1,v1,v0
  47a5ec:	8fc20024 	lw	v0,36(s8)
  47a5f0:	00000000 	nop
  47a5f4:	00622826 	xor	a1,v1,v0
  47a5f8:	8fc3003c 	lw	v1,60(s8)
  47a5fc:	8fc20068 	lw	v0,104(s8)
  47a600:	00000000 	nop
  47a604:	00621826 	xor	v1,v1,v0
  47a608:	8fc20050 	lw	v0,80(s8)
  47a60c:	00000000 	nop
  47a610:	00621826 	xor	v1,v1,v0
  47a614:	8fc20048 	lw	v0,72(s8)
  47a618:	00000000 	nop
  47a61c:	00621026 	xor	v0,v1,v0
  47a620:	00022040 	sll	a0,v0,0x1
  47a624:	8fc3003c 	lw	v1,60(s8)
  47a628:	8fc20068 	lw	v0,104(s8)
  47a62c:	00000000 	nop
  47a630:	00621826 	xor	v1,v1,v0
  47a634:	8fc20050 	lw	v0,80(s8)
  47a638:	00000000 	nop
  47a63c:	00621826 	xor	v1,v1,v0
  47a640:	8fc20048 	lw	v0,72(s8)
  47a644:	00000000 	nop
  47a648:	00621026 	xor	v0,v1,v0
  47a64c:	000217c2 	srl	v0,v0,0x1f
  47a650:	00821025 	or	v0,a0,v0
  47a654:	afc20048 	sw	v0,72(s8)
  47a658:	00a22021 	addu	a0,a1,v0
  47a65c:	8fc20018 	lw	v0,24(s8)
  47a660:	00000000 	nop
  47a664:	00021940 	sll	v1,v0,0x5
  47a668:	000216c2 	srl	v0,v0,0x1b
  47a66c:	00621025 	or	v0,v1,v0
  47a670:	00821821 	addu	v1,a0,v0
  47a674:	8fc20028 	lw	v0,40(s8)
  47a678:	00000000 	nop
  47a67c:	00621021 	addu	v0,v1,v0
  47a680:	3c01ca62 	lui	at,0xca62
  47a684:	3421c1d6 	ori	at,at,0xc1d6
  47a688:	00221021 	addu	v0,at,v0
  47a68c:	afc20028 	sw	v0,40(s8)
  47a690:	8fc2001c 	lw	v0,28(s8)
  47a694:	00000000 	nop
  47a698:	00021f80 	sll	v1,v0,0x1e
  47a69c:	00021082 	srl	v0,v0,0x2
  47a6a0:	00621025 	or	v0,v1,v0
  47a6a4:	afc2001c 	sw	v0,28(s8)
  47a6a8:	8fc30018 	lw	v1,24(s8)
  47a6ac:	8fc2001c 	lw	v0,28(s8)
  47a6b0:	00000000 	nop
  47a6b4:	00621826 	xor	v1,v1,v0
  47a6b8:	8fc20020 	lw	v0,32(s8)
  47a6bc:	00000000 	nop
  47a6c0:	00622826 	xor	a1,v1,v0
  47a6c4:	8fc30040 	lw	v1,64(s8)
  47a6c8:	8fc2006c 	lw	v0,108(s8)
  47a6cc:	00000000 	nop
  47a6d0:	00621826 	xor	v1,v1,v0
  47a6d4:	8fc20054 	lw	v0,84(s8)
  47a6d8:	00000000 	nop
  47a6dc:	00621826 	xor	v1,v1,v0
  47a6e0:	8fc2004c 	lw	v0,76(s8)
  47a6e4:	00000000 	nop
  47a6e8:	00621026 	xor	v0,v1,v0
  47a6ec:	00022040 	sll	a0,v0,0x1
  47a6f0:	8fc30040 	lw	v1,64(s8)
  47a6f4:	8fc2006c 	lw	v0,108(s8)
  47a6f8:	00000000 	nop
  47a6fc:	00621826 	xor	v1,v1,v0
  47a700:	8fc20054 	lw	v0,84(s8)
  47a704:	00000000 	nop
  47a708:	00621826 	xor	v1,v1,v0
  47a70c:	8fc2004c 	lw	v0,76(s8)
  47a710:	00000000 	nop
  47a714:	00621026 	xor	v0,v1,v0
  47a718:	000217c2 	srl	v0,v0,0x1f
  47a71c:	00821025 	or	v0,a0,v0
  47a720:	afc2004c 	sw	v0,76(s8)
  47a724:	00a22021 	addu	a0,a1,v0
  47a728:	8fc20028 	lw	v0,40(s8)
  47a72c:	00000000 	nop
  47a730:	00021940 	sll	v1,v0,0x5
  47a734:	000216c2 	srl	v0,v0,0x1b
  47a738:	00621025 	or	v0,v1,v0
  47a73c:	00821821 	addu	v1,a0,v0
  47a740:	8fc20024 	lw	v0,36(s8)
  47a744:	00000000 	nop
  47a748:	00621021 	addu	v0,v1,v0
  47a74c:	3c01ca62 	lui	at,0xca62
  47a750:	3421c1d6 	ori	at,at,0xc1d6
  47a754:	00221021 	addu	v0,at,v0
  47a758:	afc20024 	sw	v0,36(s8)
  47a75c:	8fc20018 	lw	v0,24(s8)
  47a760:	00000000 	nop
  47a764:	00021f80 	sll	v1,v0,0x1e
  47a768:	00021082 	srl	v0,v0,0x2
  47a76c:	00621025 	or	v0,v1,v0
  47a770:	afc20018 	sw	v0,24(s8)
    R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
  47a774:	8fc30028 	lw	v1,40(s8)
  47a778:	8fc20018 	lw	v0,24(s8)
  47a77c:	00000000 	nop
  47a780:	00621826 	xor	v1,v1,v0
  47a784:	8fc2001c 	lw	v0,28(s8)
  47a788:	00000000 	nop
  47a78c:	00622826 	xor	a1,v1,v0
  47a790:	8fc30044 	lw	v1,68(s8)
  47a794:	8fc20030 	lw	v0,48(s8)
  47a798:	00000000 	nop
  47a79c:	00621826 	xor	v1,v1,v0
  47a7a0:	8fc20058 	lw	v0,88(s8)
  47a7a4:	00000000 	nop
  47a7a8:	00621826 	xor	v1,v1,v0
  47a7ac:	8fc20050 	lw	v0,80(s8)
  47a7b0:	00000000 	nop
  47a7b4:	00621026 	xor	v0,v1,v0
  47a7b8:	00022040 	sll	a0,v0,0x1
  47a7bc:	8fc30044 	lw	v1,68(s8)
  47a7c0:	8fc20030 	lw	v0,48(s8)
  47a7c4:	00000000 	nop
  47a7c8:	00621826 	xor	v1,v1,v0
  47a7cc:	8fc20058 	lw	v0,88(s8)
  47a7d0:	00000000 	nop
  47a7d4:	00621826 	xor	v1,v1,v0
  47a7d8:	8fc20050 	lw	v0,80(s8)
  47a7dc:	00000000 	nop
  47a7e0:	00621026 	xor	v0,v1,v0
  47a7e4:	000217c2 	srl	v0,v0,0x1f
  47a7e8:	00821025 	or	v0,a0,v0
  47a7ec:	afc20050 	sw	v0,80(s8)
  47a7f0:	00a22021 	addu	a0,a1,v0
  47a7f4:	8fc20024 	lw	v0,36(s8)
  47a7f8:	00000000 	nop
  47a7fc:	00021940 	sll	v1,v0,0x5
  47a800:	000216c2 	srl	v0,v0,0x1b
  47a804:	00621025 	or	v0,v1,v0
  47a808:	00821821 	addu	v1,a0,v0
  47a80c:	8fc20020 	lw	v0,32(s8)
  47a810:	00000000 	nop
  47a814:	00621021 	addu	v0,v1,v0
  47a818:	3c01ca62 	lui	at,0xca62
  47a81c:	3421c1d6 	ori	at,at,0xc1d6
  47a820:	00221021 	addu	v0,at,v0
  47a824:	afc20020 	sw	v0,32(s8)
  47a828:	8fc20028 	lw	v0,40(s8)
  47a82c:	00000000 	nop
  47a830:	00021f80 	sll	v1,v0,0x1e
  47a834:	00021082 	srl	v0,v0,0x2
  47a838:	00621025 	or	v0,v1,v0
  47a83c:	afc20028 	sw	v0,40(s8)
  47a840:	8fc30024 	lw	v1,36(s8)
  47a844:	8fc20028 	lw	v0,40(s8)
  47a848:	00000000 	nop
  47a84c:	00621826 	xor	v1,v1,v0
  47a850:	8fc20018 	lw	v0,24(s8)
  47a854:	00000000 	nop
  47a858:	00622826 	xor	a1,v1,v0
  47a85c:	8fc30048 	lw	v1,72(s8)
  47a860:	8fc20034 	lw	v0,52(s8)
  47a864:	00000000 	nop
  47a868:	00621826 	xor	v1,v1,v0
  47a86c:	8fc2005c 	lw	v0,92(s8)
  47a870:	00000000 	nop
  47a874:	00621826 	xor	v1,v1,v0
  47a878:	8fc20054 	lw	v0,84(s8)
  47a87c:	00000000 	nop
  47a880:	00621026 	xor	v0,v1,v0
  47a884:	00022040 	sll	a0,v0,0x1
  47a888:	8fc30048 	lw	v1,72(s8)
  47a88c:	8fc20034 	lw	v0,52(s8)
  47a890:	00000000 	nop
  47a894:	00621826 	xor	v1,v1,v0
  47a898:	8fc2005c 	lw	v0,92(s8)
  47a89c:	00000000 	nop
  47a8a0:	00621826 	xor	v1,v1,v0
  47a8a4:	8fc20054 	lw	v0,84(s8)
  47a8a8:	00000000 	nop
  47a8ac:	00621026 	xor	v0,v1,v0
  47a8b0:	000217c2 	srl	v0,v0,0x1f
  47a8b4:	00821025 	or	v0,a0,v0
  47a8b8:	afc20054 	sw	v0,84(s8)
  47a8bc:	00a22021 	addu	a0,a1,v0
  47a8c0:	8fc20020 	lw	v0,32(s8)
  47a8c4:	00000000 	nop
  47a8c8:	00021940 	sll	v1,v0,0x5
  47a8cc:	000216c2 	srl	v0,v0,0x1b
  47a8d0:	00621025 	or	v0,v1,v0
  47a8d4:	00821821 	addu	v1,a0,v0
  47a8d8:	8fc2001c 	lw	v0,28(s8)
  47a8dc:	00000000 	nop
  47a8e0:	00621021 	addu	v0,v1,v0
  47a8e4:	3c01ca62 	lui	at,0xca62
  47a8e8:	3421c1d6 	ori	at,at,0xc1d6
  47a8ec:	00221021 	addu	v0,at,v0
  47a8f0:	afc2001c 	sw	v0,28(s8)
  47a8f4:	8fc20024 	lw	v0,36(s8)
  47a8f8:	00000000 	nop
  47a8fc:	00021f80 	sll	v1,v0,0x1e
  47a900:	00021082 	srl	v0,v0,0x2
  47a904:	00621025 	or	v0,v1,v0
  47a908:	afc20024 	sw	v0,36(s8)
  47a90c:	8fc30020 	lw	v1,32(s8)
  47a910:	8fc20024 	lw	v0,36(s8)
  47a914:	00000000 	nop
  47a918:	00621826 	xor	v1,v1,v0
  47a91c:	8fc20028 	lw	v0,40(s8)
  47a920:	00000000 	nop
  47a924:	00622826 	xor	a1,v1,v0
  47a928:	8fc3004c 	lw	v1,76(s8)
  47a92c:	8fc20038 	lw	v0,56(s8)
  47a930:	00000000 	nop
  47a934:	00621826 	xor	v1,v1,v0
  47a938:	8fc20060 	lw	v0,96(s8)
  47a93c:	00000000 	nop
  47a940:	00621826 	xor	v1,v1,v0
  47a944:	8fc20058 	lw	v0,88(s8)
  47a948:	00000000 	nop
  47a94c:	00621026 	xor	v0,v1,v0
  47a950:	00022040 	sll	a0,v0,0x1
  47a954:	8fc3004c 	lw	v1,76(s8)
  47a958:	8fc20038 	lw	v0,56(s8)
  47a95c:	00000000 	nop
  47a960:	00621826 	xor	v1,v1,v0
  47a964:	8fc20060 	lw	v0,96(s8)
  47a968:	00000000 	nop
  47a96c:	00621826 	xor	v1,v1,v0
  47a970:	8fc20058 	lw	v0,88(s8)
  47a974:	00000000 	nop
  47a978:	00621026 	xor	v0,v1,v0
  47a97c:	000217c2 	srl	v0,v0,0x1f
  47a980:	00821025 	or	v0,a0,v0
  47a984:	afc20058 	sw	v0,88(s8)
  47a988:	00a22021 	addu	a0,a1,v0
  47a98c:	8fc2001c 	lw	v0,28(s8)
  47a990:	00000000 	nop
  47a994:	00021940 	sll	v1,v0,0x5
  47a998:	000216c2 	srl	v0,v0,0x1b
  47a99c:	00621025 	or	v0,v1,v0
  47a9a0:	00821821 	addu	v1,a0,v0
  47a9a4:	8fc20018 	lw	v0,24(s8)
  47a9a8:	00000000 	nop
  47a9ac:	00621021 	addu	v0,v1,v0
  47a9b0:	3c01ca62 	lui	at,0xca62
  47a9b4:	3421c1d6 	ori	at,at,0xc1d6
  47a9b8:	00221021 	addu	v0,at,v0
  47a9bc:	afc20018 	sw	v0,24(s8)
  47a9c0:	8fc20020 	lw	v0,32(s8)
  47a9c4:	00000000 	nop
  47a9c8:	00021f80 	sll	v1,v0,0x1e
  47a9cc:	00021082 	srl	v0,v0,0x2
  47a9d0:	00621025 	or	v0,v1,v0
  47a9d4:	afc20020 	sw	v0,32(s8)
  47a9d8:	8fc3001c 	lw	v1,28(s8)
  47a9dc:	8fc20020 	lw	v0,32(s8)
  47a9e0:	00000000 	nop
  47a9e4:	00621826 	xor	v1,v1,v0
  47a9e8:	8fc20024 	lw	v0,36(s8)
  47a9ec:	00000000 	nop
  47a9f0:	00622826 	xor	a1,v1,v0
  47a9f4:	8fc30050 	lw	v1,80(s8)
  47a9f8:	8fc2003c 	lw	v0,60(s8)
  47a9fc:	00000000 	nop
  47aa00:	00621826 	xor	v1,v1,v0
  47aa04:	8fc20064 	lw	v0,100(s8)
  47aa08:	00000000 	nop
  47aa0c:	00621826 	xor	v1,v1,v0
  47aa10:	8fc2005c 	lw	v0,92(s8)
  47aa14:	00000000 	nop
  47aa18:	00621026 	xor	v0,v1,v0
  47aa1c:	00022040 	sll	a0,v0,0x1
  47aa20:	8fc30050 	lw	v1,80(s8)
  47aa24:	8fc2003c 	lw	v0,60(s8)
  47aa28:	00000000 	nop
  47aa2c:	00621826 	xor	v1,v1,v0
  47aa30:	8fc20064 	lw	v0,100(s8)
  47aa34:	00000000 	nop
  47aa38:	00621826 	xor	v1,v1,v0
  47aa3c:	8fc2005c 	lw	v0,92(s8)
  47aa40:	00000000 	nop
  47aa44:	00621026 	xor	v0,v1,v0
  47aa48:	000217c2 	srl	v0,v0,0x1f
  47aa4c:	00821025 	or	v0,a0,v0
  47aa50:	afc2005c 	sw	v0,92(s8)
  47aa54:	00a22021 	addu	a0,a1,v0
  47aa58:	8fc20018 	lw	v0,24(s8)
  47aa5c:	00000000 	nop
  47aa60:	00021940 	sll	v1,v0,0x5
  47aa64:	000216c2 	srl	v0,v0,0x1b
  47aa68:	00621025 	or	v0,v1,v0
  47aa6c:	00821821 	addu	v1,a0,v0
  47aa70:	8fc20028 	lw	v0,40(s8)
  47aa74:	00000000 	nop
  47aa78:	00621021 	addu	v0,v1,v0
  47aa7c:	3c01ca62 	lui	at,0xca62
  47aa80:	3421c1d6 	ori	at,at,0xc1d6
  47aa84:	00221021 	addu	v0,at,v0
  47aa88:	afc20028 	sw	v0,40(s8)
  47aa8c:	8fc2001c 	lw	v0,28(s8)
  47aa90:	00000000 	nop
  47aa94:	00021f80 	sll	v1,v0,0x1e
  47aa98:	00021082 	srl	v0,v0,0x2
  47aa9c:	00621025 	or	v0,v1,v0
  47aaa0:	afc2001c 	sw	v0,28(s8)
    R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
  47aaa4:	8fc30018 	lw	v1,24(s8)
  47aaa8:	8fc2001c 	lw	v0,28(s8)
  47aaac:	00000000 	nop
  47aab0:	00621826 	xor	v1,v1,v0
  47aab4:	8fc20020 	lw	v0,32(s8)
  47aab8:	00000000 	nop
  47aabc:	00622826 	xor	a1,v1,v0
  47aac0:	8fc30054 	lw	v1,84(s8)
  47aac4:	8fc20040 	lw	v0,64(s8)
  47aac8:	00000000 	nop
  47aacc:	00621826 	xor	v1,v1,v0
  47aad0:	8fc20068 	lw	v0,104(s8)
  47aad4:	00000000 	nop
  47aad8:	00621826 	xor	v1,v1,v0
  47aadc:	8fc20060 	lw	v0,96(s8)
  47aae0:	00000000 	nop
  47aae4:	00621026 	xor	v0,v1,v0
  47aae8:	00022040 	sll	a0,v0,0x1
  47aaec:	8fc30054 	lw	v1,84(s8)
  47aaf0:	8fc20040 	lw	v0,64(s8)
  47aaf4:	00000000 	nop
  47aaf8:	00621826 	xor	v1,v1,v0
  47aafc:	8fc20068 	lw	v0,104(s8)
  47ab00:	00000000 	nop
  47ab04:	00621826 	xor	v1,v1,v0
  47ab08:	8fc20060 	lw	v0,96(s8)
  47ab0c:	00000000 	nop
  47ab10:	00621026 	xor	v0,v1,v0
  47ab14:	000217c2 	srl	v0,v0,0x1f
  47ab18:	00821025 	or	v0,a0,v0
  47ab1c:	afc20060 	sw	v0,96(s8)
  47ab20:	00a22021 	addu	a0,a1,v0
  47ab24:	8fc20028 	lw	v0,40(s8)
  47ab28:	00000000 	nop
  47ab2c:	00021940 	sll	v1,v0,0x5
  47ab30:	000216c2 	srl	v0,v0,0x1b
  47ab34:	00621025 	or	v0,v1,v0
  47ab38:	00821821 	addu	v1,a0,v0
  47ab3c:	8fc20024 	lw	v0,36(s8)
  47ab40:	00000000 	nop
  47ab44:	00621021 	addu	v0,v1,v0
  47ab48:	3c01ca62 	lui	at,0xca62
  47ab4c:	3421c1d6 	ori	at,at,0xc1d6
  47ab50:	00221021 	addu	v0,at,v0
  47ab54:	afc20024 	sw	v0,36(s8)
  47ab58:	8fc20018 	lw	v0,24(s8)
  47ab5c:	00000000 	nop
  47ab60:	00021f80 	sll	v1,v0,0x1e
  47ab64:	00021082 	srl	v0,v0,0x2
  47ab68:	00621025 	or	v0,v1,v0
  47ab6c:	afc20018 	sw	v0,24(s8)
  47ab70:	8fc30028 	lw	v1,40(s8)
  47ab74:	8fc20018 	lw	v0,24(s8)
  47ab78:	00000000 	nop
  47ab7c:	00621826 	xor	v1,v1,v0
  47ab80:	8fc2001c 	lw	v0,28(s8)
  47ab84:	00000000 	nop
  47ab88:	00622826 	xor	a1,v1,v0
  47ab8c:	8fc30058 	lw	v1,88(s8)
  47ab90:	8fc20044 	lw	v0,68(s8)
  47ab94:	00000000 	nop
  47ab98:	00621826 	xor	v1,v1,v0
  47ab9c:	8fc2006c 	lw	v0,108(s8)
  47aba0:	00000000 	nop
  47aba4:	00621826 	xor	v1,v1,v0
  47aba8:	8fc20064 	lw	v0,100(s8)
  47abac:	00000000 	nop
  47abb0:	00621026 	xor	v0,v1,v0
  47abb4:	00022040 	sll	a0,v0,0x1
  47abb8:	8fc30058 	lw	v1,88(s8)
  47abbc:	8fc20044 	lw	v0,68(s8)
  47abc0:	00000000 	nop
  47abc4:	00621826 	xor	v1,v1,v0
  47abc8:	8fc2006c 	lw	v0,108(s8)
  47abcc:	00000000 	nop
  47abd0:	00621826 	xor	v1,v1,v0
  47abd4:	8fc20064 	lw	v0,100(s8)
  47abd8:	00000000 	nop
  47abdc:	00621026 	xor	v0,v1,v0
  47abe0:	000217c2 	srl	v0,v0,0x1f
  47abe4:	00821025 	or	v0,a0,v0
  47abe8:	afc20064 	sw	v0,100(s8)
  47abec:	00a22021 	addu	a0,a1,v0
  47abf0:	8fc20024 	lw	v0,36(s8)
  47abf4:	00000000 	nop
  47abf8:	00021940 	sll	v1,v0,0x5
  47abfc:	000216c2 	srl	v0,v0,0x1b
  47ac00:	00621025 	or	v0,v1,v0
  47ac04:	00821821 	addu	v1,a0,v0
  47ac08:	8fc20020 	lw	v0,32(s8)
  47ac0c:	00000000 	nop
  47ac10:	00621021 	addu	v0,v1,v0
  47ac14:	3c01ca62 	lui	at,0xca62
  47ac18:	3421c1d6 	ori	at,at,0xc1d6
  47ac1c:	00221021 	addu	v0,at,v0
  47ac20:	afc20020 	sw	v0,32(s8)
  47ac24:	8fc20028 	lw	v0,40(s8)
  47ac28:	00000000 	nop
  47ac2c:	00021f80 	sll	v1,v0,0x1e
  47ac30:	00021082 	srl	v0,v0,0x2
  47ac34:	00621025 	or	v0,v1,v0
  47ac38:	afc20028 	sw	v0,40(s8)
  47ac3c:	8fc30024 	lw	v1,36(s8)
  47ac40:	8fc20028 	lw	v0,40(s8)
  47ac44:	00000000 	nop
  47ac48:	00621826 	xor	v1,v1,v0
  47ac4c:	8fc20018 	lw	v0,24(s8)
  47ac50:	00000000 	nop
  47ac54:	00622826 	xor	a1,v1,v0
  47ac58:	8fc3005c 	lw	v1,92(s8)
  47ac5c:	8fc20048 	lw	v0,72(s8)
  47ac60:	00000000 	nop
  47ac64:	00621826 	xor	v1,v1,v0
  47ac68:	8fc20030 	lw	v0,48(s8)
  47ac6c:	00000000 	nop
  47ac70:	00621826 	xor	v1,v1,v0
  47ac74:	8fc20068 	lw	v0,104(s8)
  47ac78:	00000000 	nop
  47ac7c:	00621026 	xor	v0,v1,v0
  47ac80:	00022040 	sll	a0,v0,0x1
  47ac84:	8fc3005c 	lw	v1,92(s8)
  47ac88:	8fc20048 	lw	v0,72(s8)
  47ac8c:	00000000 	nop
  47ac90:	00621826 	xor	v1,v1,v0
  47ac94:	8fc20030 	lw	v0,48(s8)
  47ac98:	00000000 	nop
  47ac9c:	00621826 	xor	v1,v1,v0
  47aca0:	8fc20068 	lw	v0,104(s8)
  47aca4:	00000000 	nop
  47aca8:	00621026 	xor	v0,v1,v0
  47acac:	000217c2 	srl	v0,v0,0x1f
  47acb0:	00821025 	or	v0,a0,v0
  47acb4:	afc20068 	sw	v0,104(s8)
  47acb8:	00a22021 	addu	a0,a1,v0
  47acbc:	8fc20020 	lw	v0,32(s8)
  47acc0:	00000000 	nop
  47acc4:	00021940 	sll	v1,v0,0x5
  47acc8:	000216c2 	srl	v0,v0,0x1b
  47accc:	00621025 	or	v0,v1,v0
  47acd0:	00821821 	addu	v1,a0,v0
  47acd4:	8fc2001c 	lw	v0,28(s8)
  47acd8:	00000000 	nop
  47acdc:	00621021 	addu	v0,v1,v0
  47ace0:	3c01ca62 	lui	at,0xca62
  47ace4:	3421c1d6 	ori	at,at,0xc1d6
  47ace8:	00221021 	addu	v0,at,v0
  47acec:	afc2001c 	sw	v0,28(s8)
  47acf0:	8fc20024 	lw	v0,36(s8)
  47acf4:	00000000 	nop
  47acf8:	00021f80 	sll	v1,v0,0x1e
  47acfc:	00021082 	srl	v0,v0,0x2
  47ad00:	00621025 	or	v0,v1,v0
  47ad04:	afc20024 	sw	v0,36(s8)
  47ad08:	8fc30020 	lw	v1,32(s8)
  47ad0c:	8fc20024 	lw	v0,36(s8)
  47ad10:	00000000 	nop
  47ad14:	00621826 	xor	v1,v1,v0
  47ad18:	8fc20028 	lw	v0,40(s8)
  47ad1c:	00000000 	nop
  47ad20:	00622826 	xor	a1,v1,v0
  47ad24:	8fc30060 	lw	v1,96(s8)
  47ad28:	8fc2004c 	lw	v0,76(s8)
  47ad2c:	00000000 	nop
  47ad30:	00621826 	xor	v1,v1,v0
  47ad34:	8fc20034 	lw	v0,52(s8)
  47ad38:	00000000 	nop
  47ad3c:	00621826 	xor	v1,v1,v0
  47ad40:	8fc2006c 	lw	v0,108(s8)
  47ad44:	00000000 	nop
  47ad48:	00621026 	xor	v0,v1,v0
  47ad4c:	00022040 	sll	a0,v0,0x1
  47ad50:	8fc30060 	lw	v1,96(s8)
  47ad54:	8fc2004c 	lw	v0,76(s8)
  47ad58:	00000000 	nop
  47ad5c:	00621826 	xor	v1,v1,v0
  47ad60:	8fc20034 	lw	v0,52(s8)
  47ad64:	00000000 	nop
  47ad68:	00621826 	xor	v1,v1,v0
  47ad6c:	8fc2006c 	lw	v0,108(s8)
  47ad70:	00000000 	nop
  47ad74:	00621026 	xor	v0,v1,v0
  47ad78:	000217c2 	srl	v0,v0,0x1f
  47ad7c:	00821025 	or	v0,a0,v0
  47ad80:	afc2006c 	sw	v0,108(s8)
  47ad84:	00a22021 	addu	a0,a1,v0
  47ad88:	8fc2001c 	lw	v0,28(s8)
  47ad8c:	00000000 	nop
  47ad90:	00021940 	sll	v1,v0,0x5
  47ad94:	000216c2 	srl	v0,v0,0x1b
  47ad98:	00621025 	or	v0,v1,v0
  47ad9c:	00821821 	addu	v1,a0,v0
  47ada0:	8fc20018 	lw	v0,24(s8)
  47ada4:	00000000 	nop
  47ada8:	00621021 	addu	v0,v1,v0
  47adac:	3c01ca62 	lui	at,0xca62
  47adb0:	3421c1d6 	ori	at,at,0xc1d6
  47adb4:	00221021 	addu	v0,at,v0
  47adb8:	afc20018 	sw	v0,24(s8)
  47adbc:	8fc20020 	lw	v0,32(s8)
  47adc0:	00000000 	nop
  47adc4:	00021f80 	sll	v1,v0,0x1e
  47adc8:	00021082 	srl	v0,v0,0x2
  47adcc:	00621025 	or	v0,v1,v0
  47add0:	afc20020 	sw	v0,32(s8)
    /* Add the working vars back into context.state[] */
    state[0] += a;
  47add4:	8fc20080 	lw	v0,128(s8)
  47add8:	00000000 	nop
  47addc:	8c430000 	lw	v1,0(v0)
  47ade0:	8fc20018 	lw	v0,24(s8)
  47ade4:	00000000 	nop
  47ade8:	00621821 	addu	v1,v1,v0
  47adec:	8fc20080 	lw	v0,128(s8)
  47adf0:	00000000 	nop
  47adf4:	ac430000 	sw	v1,0(v0)
    state[1] += b;
  47adf8:	8fc20080 	lw	v0,128(s8)
  47adfc:	00000000 	nop
  47ae00:	24440004 	addiu	a0,v0,4
  47ae04:	8fc20080 	lw	v0,128(s8)
  47ae08:	00000000 	nop
  47ae0c:	24420004 	addiu	v0,v0,4
  47ae10:	8c430000 	lw	v1,0(v0)
  47ae14:	8fc2001c 	lw	v0,28(s8)
  47ae18:	00000000 	nop
  47ae1c:	00621021 	addu	v0,v1,v0
  47ae20:	ac820000 	sw	v0,0(a0)
    state[2] += c;
  47ae24:	8fc20080 	lw	v0,128(s8)
  47ae28:	00000000 	nop
  47ae2c:	24440008 	addiu	a0,v0,8
  47ae30:	8fc20080 	lw	v0,128(s8)
  47ae34:	00000000 	nop
  47ae38:	24420008 	addiu	v0,v0,8
  47ae3c:	8c430000 	lw	v1,0(v0)
  47ae40:	8fc20020 	lw	v0,32(s8)
  47ae44:	00000000 	nop
  47ae48:	00621021 	addu	v0,v1,v0
  47ae4c:	ac820000 	sw	v0,0(a0)
    state[3] += d;
  47ae50:	8fc20080 	lw	v0,128(s8)
  47ae54:	00000000 	nop
  47ae58:	2444000c 	addiu	a0,v0,12
  47ae5c:	8fc20080 	lw	v0,128(s8)
  47ae60:	00000000 	nop
  47ae64:	2442000c 	addiu	v0,v0,12
  47ae68:	8c430000 	lw	v1,0(v0)
  47ae6c:	8fc20024 	lw	v0,36(s8)
  47ae70:	00000000 	nop
  47ae74:	00621021 	addu	v0,v1,v0
  47ae78:	ac820000 	sw	v0,0(a0)
    state[4] += e;
  47ae7c:	8fc20080 	lw	v0,128(s8)
  47ae80:	00000000 	nop
  47ae84:	24440010 	addiu	a0,v0,16
  47ae88:	8fc20080 	lw	v0,128(s8)
  47ae8c:	00000000 	nop
  47ae90:	24420010 	addiu	v0,v0,16
  47ae94:	8c430000 	lw	v1,0(v0)
  47ae98:	8fc20028 	lw	v0,40(s8)
  47ae9c:	00000000 	nop
  47aea0:	00621021 	addu	v0,v1,v0
  47aea4:	ac820000 	sw	v0,0(a0)
    /* Wipe variables */
    a = b = c = d = e = 0;
  47aea8:	afc00028 	sw	zero,40(s8)
  47aeac:	afc00024 	sw	zero,36(s8)
  47aeb0:	afc00020 	sw	zero,32(s8)
  47aeb4:	afc0001c 	sw	zero,28(s8)
  47aeb8:	afc00018 	sw	zero,24(s8)
#ifdef SHA1HANDSOFF
    memset(block, '\0', sizeof(block));
  47aebc:	27c40030 	addiu	a0,s8,48
  47aec0:	00002821 	move	a1,zero
  47aec4:	24060040 	li	a2,64
  47aec8:	8f998500 	lw	t9,-31488(gp)
  47aecc:	00000000 	nop
  47aed0:	0320f809 	jalr	t9
  47aed4:	00000000 	nop
  47aed8:	8fdc0010 	lw	gp,16(s8)
  47aedc:	00000000 	nop
#endif
}
  47aee0:	03c0e821 	move	sp,s8
  47aee4:	8fbf0078 	lw	ra,120(sp)
  47aee8:	8fbe0074 	lw	s8,116(sp)
  47aeec:	27bd0080 	addiu	sp,sp,128
  47aef0:	03e00008 	jr	ra
  47aef4:	00000000 	nop

0047aef8 <SHA1Init>:
  47aef8:	3c1c0fb9 	lui	gp,0xfb9
  47aefc:	279c1a78 	addiu	gp,gp,6776
  47af00:	0399e021 	addu	gp,gp,t9
  47af04:	27bdfff0 	addiu	sp,sp,-16
  47af08:	afbc0000 	sw	gp,0(sp)
  47af0c:	afbe000c 	sw	s8,12(sp)
  47af10:	afbc0008 	sw	gp,8(sp)
  47af14:	03a0f021 	move	s8,sp
  47af18:	afc40010 	sw	a0,16(s8)


/* SHA1Init - Initialize new context */

void SHA1Init(SHA1_CTX* context)
{
    /* SHA1 initialization constants */
    context->state[0] = 0x67452301;
  47af1c:	3c036745 	lui	v1,0x6745
  47af20:	34632301 	ori	v1,v1,0x2301
  47af24:	8fc20010 	lw	v0,16(s8)
  47af28:	00000000 	nop
  47af2c:	ac430000 	sw	v1,0(v0)
    context->state[1] = 0xEFCDAB89;
  47af30:	3c03efcd 	lui	v1,0xefcd
  47af34:	3463ab89 	ori	v1,v1,0xab89
  47af38:	8fc20010 	lw	v0,16(s8)
  47af3c:	00000000 	nop
  47af40:	ac430004 	sw	v1,4(v0)
    context->state[2] = 0x98BADCFE;
  47af44:	3c0398ba 	lui	v1,0x98ba
  47af48:	3463dcfe 	ori	v1,v1,0xdcfe
  47af4c:	8fc20010 	lw	v0,16(s8)
  47af50:	00000000 	nop
  47af54:	ac430008 	sw	v1,8(v0)
    context->state[3] = 0x10325476;
  47af58:	3c031032 	lui	v1,0x1032
  47af5c:	34635476 	ori	v1,v1,0x5476
  47af60:	8fc20010 	lw	v0,16(s8)
  47af64:	00000000 	nop
  47af68:	ac43000c 	sw	v1,12(v0)
    context->state[4] = 0xC3D2E1F0;
  47af6c:	3c03c3d2 	lui	v1,0xc3d2
  47af70:	3463e1f0 	ori	v1,v1,0xe1f0
  47af74:	8fc20010 	lw	v0,16(s8)
  47af78:	00000000 	nop
  47af7c:	ac430010 	sw	v1,16(v0)
    context->count[0] = context->count[1] = 0;
  47af80:	8fc30010 	lw	v1,16(s8)
  47af84:	8fc20010 	lw	v0,16(s8)
  47af88:	00000000 	nop
  47af8c:	ac400018 	sw	zero,24(v0)
  47af90:	ac600014 	sw	zero,20(v1)
}
  47af94:	03c0e821 	move	sp,s8
  47af98:	8fbe000c 	lw	s8,12(sp)
  47af9c:	27bd0010 	addiu	sp,sp,16
  47afa0:	03e00008 	jr	ra
  47afa4:	00000000 	nop

0047afa8 <SHA1Update>:
  47afa8:	3c1c0fb9 	lui	gp,0xfb9
  47afac:	279c19c8 	addiu	gp,gp,6600
  47afb0:	0399e021 	addu	gp,gp,t9
  47afb4:	27bdffc8 	addiu	sp,sp,-56
  47afb8:	afbc0010 	sw	gp,16(sp)
  47afbc:	afbf0030 	sw	ra,48(sp)
  47afc0:	afbe002c 	sw	s8,44(sp)
  47afc4:	afbc0028 	sw	gp,40(sp)
  47afc8:	03a0f021 	move	s8,sp
  47afcc:	afc40038 	sw	a0,56(s8)
  47afd0:	afc5003c 	sw	a1,60(s8)
  47afd4:	afc60040 	sw	a2,64(s8)


/* Run your data through this. */

void SHA1Update(SHA1_CTX* context, const unsigned char* data, u_int32_t len)
{
u_int32_t i;
u_int32_t j;

    j = context->count[0];
  47afd8:	8fc20038 	lw	v0,56(s8)
  47afdc:	00000000 	nop
  47afe0:	8c420014 	lw	v0,20(v0)
  47afe4:	00000000 	nop
  47afe8:	afc2001c 	sw	v0,28(s8)
    if ((context->count[0] += len << 3) < j)
  47afec:	8fc20040 	lw	v0,64(s8)
  47aff0:	00000000 	nop
  47aff4:	000218c0 	sll	v1,v0,0x3
  47aff8:	8fc20038 	lw	v0,56(s8)
  47affc:	00000000 	nop
  47b000:	8c420014 	lw	v0,20(v0)
  47b004:	00000000 	nop
  47b008:	00431021 	addu	v0,v0,v1
  47b00c:	00401821 	move	v1,v0
  47b010:	8fc20038 	lw	v0,56(s8)
  47b014:	00000000 	nop
  47b018:	ac430014 	sw	v1,20(v0)
  47b01c:	8fc2001c 	lw	v0,28(s8)
  47b020:	00000000 	nop
  47b024:	0062102b 	sltu	v0,v1,v0
  47b028:	10400009 	beqz	v0,47b050 <SHA1Update+0xa8>
  47b02c:	00000000 	nop
	context->count[1]++;
  47b030:	8fc20038 	lw	v0,56(s8)
  47b034:	00000000 	nop
  47b038:	8c420018 	lw	v0,24(v0)
  47b03c:	00000000 	nop
  47b040:	24430001 	addiu	v1,v0,1
  47b044:	8fc20038 	lw	v0,56(s8)
  47b048:	00000000 	nop
  47b04c:	ac430018 	sw	v1,24(v0)
    context->count[1] += (len>>29);
  47b050:	8fc20040 	lw	v0,64(s8)
  47b054:	00000000 	nop
  47b058:	00021f42 	srl	v1,v0,0x1d
  47b05c:	8fc20038 	lw	v0,56(s8)
  47b060:	00000000 	nop
  47b064:	8c420018 	lw	v0,24(v0)
  47b068:	00000000 	nop
  47b06c:	00431821 	addu	v1,v0,v1
  47b070:	8fc20038 	lw	v0,56(s8)
  47b074:	00000000 	nop
  47b078:	ac430018 	sw	v1,24(v0)
    j = (j >> 3) & 63;
  47b07c:	8fc2001c 	lw	v0,28(s8)
  47b080:	00000000 	nop
  47b084:	000210c2 	srl	v0,v0,0x3
  47b088:	3042003f 	andi	v0,v0,0x3f
  47b08c:	afc2001c 	sw	v0,28(s8)
    if ((j + len) > 63) {
  47b090:	8fc3001c 	lw	v1,28(s8)
  47b094:	8fc20040 	lw	v0,64(s8)
  47b098:	00000000 	nop
  47b09c:	00621021 	addu	v0,v1,v0
  47b0a0:	2c420040 	sltiu	v0,v0,64
  47b0a4:	1440003b 	bnez	v0,47b194 <SHA1Update+0x1ec>
  47b0a8:	00000000 	nop
        memcpy(&context->buffer[j], data, (i = 64-j));
  47b0ac:	8fc30038 	lw	v1,56(s8)
  47b0b0:	8fc2001c 	lw	v0,28(s8)
  47b0b4:	00000000 	nop
  47b0b8:	00621021 	addu	v0,v1,v0
  47b0bc:	2444001c 	addiu	a0,v0,28
  47b0c0:	24030040 	li	v1,64
  47b0c4:	8fc2001c 	lw	v0,28(s8)
  47b0c8:	00000000 	nop
  47b0cc:	00621023 	subu	v0,v1,v0
  47b0d0:	afc20018 	sw	v0,24(s8)
  47b0d4:	8fc5003c 	lw	a1,60(s8)
  47b0d8:	00403021 	move	a2,v0
  47b0dc:	8f998a30 	lw	t9,-30160(gp)
  47b0e0:	00000000 	nop
  47b0e4:	0320f809 	jalr	t9
  47b0e8:	00000000 	nop
  47b0ec:	8fdc0010 	lw	gp,16(s8)
  47b0f0:	00000000 	nop
        SHA1Transform(context->state, context->buffer);
  47b0f4:	8fc20038 	lw	v0,56(s8)
  47b0f8:	00000000 	nop
  47b0fc:	2442001c 	addiu	v0,v0,28
  47b100:	8fc40038 	lw	a0,56(s8)
  47b104:	00402821 	move	a1,v0
  47b108:	8f998210 	lw	t9,-32240(gp)
  47b10c:	00000000 	nop
  47b110:	0320f809 	jalr	t9
  47b114:	00000000 	nop
  47b118:	8fdc0010 	lw	gp,16(s8)
  47b11c:	00000000 	nop
        for ( ; i + 63 < len; i += 64) {
  47b120:	8fc20018 	lw	v0,24(s8)
  47b124:	00000000 	nop
  47b128:	2443003f 	addiu	v1,v0,63
  47b12c:	8fc20040 	lw	v0,64(s8)
  47b130:	00000000 	nop
  47b134:	0062102b 	sltu	v0,v1,v0
  47b138:	14400004 	bnez	v0,47b14c <SHA1Update+0x1a4>
  47b13c:	00000000 	nop
            SHA1Transform(context->state, &data[i]);
        }
        j = 0;
  47b140:	afc0001c 	sw	zero,28(s8)
  47b144:	10000014 	b	47b198 <SHA1Update+0x1f0>
  47b148:	00000000 	nop
  47b14c:	8fc3003c 	lw	v1,60(s8)
  47b150:	8fc20018 	lw	v0,24(s8)
  47b154:	00000000 	nop
  47b158:	00621021 	addu	v0,v1,v0
  47b15c:	8fc40038 	lw	a0,56(s8)
  47b160:	00402821 	move	a1,v0
  47b164:	8f998210 	lw	t9,-32240(gp)
  47b168:	00000000 	nop
  47b16c:	0320f809 	jalr	t9
  47b170:	00000000 	nop
  47b174:	8fdc0010 	lw	gp,16(s8)
  47b178:	00000000 	nop
  47b17c:	8fc20018 	lw	v0,24(s8)
  47b180:	00000000 	nop
  47b184:	24420040 	addiu	v0,v0,64
  47b188:	afc20018 	sw	v0,24(s8)
  47b18c:	1000ffe4 	b	47b120 <SHA1Update+0x178>
  47b190:	00000000 	nop
    }
    else i = 0;
  47b194:	afc00018 	sw	zero,24(s8)
    memcpy(&context->buffer[j], &data[i], len - i);
  47b198:	8fc30038 	lw	v1,56(s8)
  47b19c:	8fc2001c 	lw	v0,28(s8)
  47b1a0:	00000000 	nop
  47b1a4:	00621021 	addu	v0,v1,v0
  47b1a8:	2444001c 	addiu	a0,v0,28
  47b1ac:	8fc3003c 	lw	v1,60(s8)
  47b1b0:	8fc20018 	lw	v0,24(s8)
  47b1b4:	00000000 	nop
  47b1b8:	00622821 	addu	a1,v1,v0
  47b1bc:	8fc30040 	lw	v1,64(s8)
  47b1c0:	8fc20018 	lw	v0,24(s8)
  47b1c4:	00000000 	nop
  47b1c8:	00621023 	subu	v0,v1,v0
  47b1cc:	00403021 	move	a2,v0
  47b1d0:	8f998a30 	lw	t9,-30160(gp)
  47b1d4:	00000000 	nop
  47b1d8:	0320f809 	jalr	t9
  47b1dc:	00000000 	nop
  47b1e0:	8fdc0010 	lw	gp,16(s8)
  47b1e4:	00000000 	nop
}
  47b1e8:	03c0e821 	move	sp,s8
  47b1ec:	8fbf0030 	lw	ra,48(sp)
  47b1f0:	8fbe002c 	lw	s8,44(sp)
  47b1f4:	27bd0038 	addiu	sp,sp,56
  47b1f8:	03e00008 	jr	ra
  47b1fc:	00000000 	nop

0047b200 <SHA1Final>:
  47b200:	3c1c0fb9 	lui	gp,0xfb9
  47b204:	279c1770 	addiu	gp,gp,6000
  47b208:	0399e021 	addu	gp,gp,t9
  47b20c:	27bdffb8 	addiu	sp,sp,-72
  47b210:	afbc0010 	sw	gp,16(sp)
  47b214:	afbf0040 	sw	ra,64(sp)
  47b218:	afbe003c 	sw	s8,60(sp)
  47b21c:	afbc0038 	sw	gp,56(sp)
  47b220:	03a0f021 	move	s8,sp
  47b224:	afc40048 	sw	a0,72(s8)
  47b228:	afc5004c 	sw	a1,76(s8)


/* Add padding and return the message digest. */

void SHA1Final(unsigned char digest[20], SHA1_CTX* context)
{
unsigned i;
unsigned char finalcount[8];
unsigned char c;

#if 0	/* untested "improvement" by DHR */
    /* Convert context->count to a sequence of bytes
     * in finalcount.  Second element first, but
     * big-endian order within element.
     * But we do it all backwards.
     */
    unsigned char *fcp = &finalcount[8];

    for (i = 0; i < 2; i++)
    {
	u_int32_t t = context->count[i];
	int j;

	for (j = 0; j < 4; t >>= 8, j++)
	    *--fcp = (unsigned char) t
    }
#else
    for (i = 0; i < 8; i++) {
  47b22c:	afc00018 	sw	zero,24(s8)
  47b230:	8fc20018 	lw	v0,24(s8)
  47b234:	00000000 	nop
  47b238:	2c420008 	sltiu	v0,v0,8
  47b23c:	14400003 	bnez	v0,47b24c <SHA1Final+0x4c>
  47b240:	00000000 	nop
  47b244:	1000002c 	b	47b2f8 <SHA1Final+0xf8>
  47b248:	00000000 	nop
        finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)]
  47b24c:	27c30020 	addiu	v1,s8,32
  47b250:	8fc20018 	lw	v0,24(s8)
  47b254:	00000000 	nop
  47b258:	00621821 	addu	v1,v1,v0
  47b25c:	afc3002c 	sw	v1,44(s8)
  47b260:	8fc2004c 	lw	v0,76(s8)
  47b264:	00000000 	nop
  47b268:	afc20030 	sw	v0,48(s8)
  47b26c:	8fc20018 	lw	v0,24(s8)
  47b270:	00000000 	nop
  47b274:	2c420004 	sltiu	v0,v0,4
  47b278:	10400005 	beqz	v0,47b290 <SHA1Final+0x90>
  47b27c:	00000000 	nop
  47b280:	24030014 	li	v1,20
  47b284:	afc30034 	sw	v1,52(s8)
  47b288:	10000003 	b	47b298 <SHA1Final+0x98>
  47b28c:	00000000 	nop
  47b290:	24020010 	li	v0,16
  47b294:	afc20034 	sw	v0,52(s8)
  47b298:	8fc30030 	lw	v1,48(s8)
  47b29c:	00000000 	nop
  47b2a0:	24620004 	addiu	v0,v1,4
  47b2a4:	8fc30034 	lw	v1,52(s8)
  47b2a8:	00000000 	nop
  47b2ac:	00432021 	addu	a0,v0,v1
  47b2b0:	8fc20018 	lw	v0,24(s8)
  47b2b4:	00000000 	nop
  47b2b8:	30430003 	andi	v1,v0,0x3
  47b2bc:	24020003 	li	v0,3
  47b2c0:	00431023 	subu	v0,v0,v1
  47b2c4:	000218c0 	sll	v1,v0,0x3
  47b2c8:	8c820000 	lw	v0,0(a0)
  47b2cc:	00000000 	nop
  47b2d0:	00621006 	srlv	v0,v0,v1
  47b2d4:	8fc3002c 	lw	v1,44(s8)
  47b2d8:	00000000 	nop
  47b2dc:	a0620000 	sb	v0,0(v1)
  47b2e0:	8fc20018 	lw	v0,24(s8)
  47b2e4:	00000000 	nop
  47b2e8:	24420001 	addiu	v0,v0,1
  47b2ec:	afc20018 	sw	v0,24(s8)
  47b2f0:	1000ffcf 	b	47b230 <SHA1Final+0x30>
  47b2f4:	00000000 	nop
         >> ((3-(i & 3)) * 8) ) & 255);  /* Endian independent */
    }
#endif
    c = 0200;
  47b2f8:	24020080 	li	v0,128
  47b2fc:	a3c20028 	sb	v0,40(s8)
    SHA1Update(context, &c, 1);
  47b300:	8fc4004c 	lw	a0,76(s8)
  47b304:	27c50028 	addiu	a1,s8,40
  47b308:	24060001 	li	a2,1
  47b30c:	8f998ae0 	lw	t9,-29984(gp)
  47b310:	00000000 	nop
  47b314:	0320f809 	jalr	t9
  47b318:	00000000 	nop
  47b31c:	8fdc0010 	lw	gp,16(s8)
  47b320:	00000000 	nop
    while ((context->count[0] & 504) != 448) {
  47b324:	8fc2004c 	lw	v0,76(s8)
  47b328:	00000000 	nop
  47b32c:	8c420014 	lw	v0,20(v0)
  47b330:	00000000 	nop
  47b334:	304301f8 	andi	v1,v0,0x1f8
  47b338:	240201c0 	li	v0,448
  47b33c:	14620003 	bne	v1,v0,47b34c <SHA1Final+0x14c>
  47b340:	00000000 	nop
  47b344:	1000000c 	b	47b378 <SHA1Final+0x178>
  47b348:	00000000 	nop
	c = 0000;
  47b34c:	a3c00028 	sb	zero,40(s8)
        SHA1Update(context, &c, 1);
  47b350:	8fc4004c 	lw	a0,76(s8)
  47b354:	27c50028 	addiu	a1,s8,40
  47b358:	24060001 	li	a2,1
  47b35c:	8f998ae0 	lw	t9,-29984(gp)
  47b360:	00000000 	nop
  47b364:	0320f809 	jalr	t9
  47b368:	00000000 	nop
  47b36c:	8fdc0010 	lw	gp,16(s8)
  47b370:	1000ffec 	b	47b324 <SHA1Final+0x124>
  47b374:	00000000 	nop
    }
    SHA1Update(context, finalcount, 8);  /* Should cause a SHA1Transform() */
  47b378:	8fc4004c 	lw	a0,76(s8)
  47b37c:	27c50020 	addiu	a1,s8,32
  47b380:	24060008 	li	a2,8
  47b384:	8f998ae0 	lw	t9,-29984(gp)
  47b388:	00000000 	nop
  47b38c:	0320f809 	jalr	t9
  47b390:	00000000 	nop
  47b394:	8fdc0010 	lw	gp,16(s8)
  47b398:	00000000 	nop
    for (i = 0; i < 20; i++) {
  47b39c:	afc00018 	sw	zero,24(s8)
  47b3a0:	8fc20018 	lw	v0,24(s8)
  47b3a4:	00000000 	nop
  47b3a8:	2c420014 	sltiu	v0,v0,20
  47b3ac:	14400003 	bnez	v0,47b3bc <SHA1Final+0x1bc>
  47b3b0:	00000000 	nop
  47b3b4:	1000001c 	b	47b428 <SHA1Final+0x228>
  47b3b8:	00000000 	nop
        digest[i] = (unsigned char)
  47b3bc:	8fc30048 	lw	v1,72(s8)
  47b3c0:	8fc20018 	lw	v0,24(s8)
  47b3c4:	00000000 	nop
  47b3c8:	00622821 	addu	a1,v1,v0
  47b3cc:	8fc20018 	lw	v0,24(s8)
  47b3d0:	00000000 	nop
  47b3d4:	00021082 	srl	v0,v0,0x2
  47b3d8:	00021880 	sll	v1,v0,0x2
  47b3dc:	8fc2004c 	lw	v0,76(s8)
  47b3e0:	00000000 	nop
  47b3e4:	00432021 	addu	a0,v0,v1
  47b3e8:	8fc20018 	lw	v0,24(s8)
  47b3ec:	00000000 	nop
  47b3f0:	30430003 	andi	v1,v0,0x3
  47b3f4:	24020003 	li	v0,3
  47b3f8:	00431023 	subu	v0,v0,v1
  47b3fc:	000218c0 	sll	v1,v0,0x3
  47b400:	8c820000 	lw	v0,0(a0)
  47b404:	00000000 	nop
  47b408:	00621006 	srlv	v0,v0,v1
  47b40c:	a0a20000 	sb	v0,0(a1)
  47b410:	8fc20018 	lw	v0,24(s8)
  47b414:	00000000 	nop
  47b418:	24420001 	addiu	v0,v0,1
  47b41c:	afc20018 	sw	v0,24(s8)
  47b420:	1000ffdf 	b	47b3a0 <SHA1Final+0x1a0>
  47b424:	00000000 	nop
         ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
    }
    /* Wipe variables */
    memset(context, '\0', sizeof(*context));
  47b428:	8fc4004c 	lw	a0,76(s8)
  47b42c:	00002821 	move	a1,zero
  47b430:	2406005c 	li	a2,92
  47b434:	8f998500 	lw	t9,-31488(gp)
  47b438:	00000000 	nop
  47b43c:	0320f809 	jalr	t9
  47b440:	00000000 	nop
  47b444:	8fdc0010 	lw	gp,16(s8)
  47b448:	00000000 	nop
    memset(&finalcount, '\0', sizeof(finalcount));
  47b44c:	27c40020 	addiu	a0,s8,32
  47b450:	00002821 	move	a1,zero
  47b454:	24060008 	li	a2,8
  47b458:	8f998500 	lw	t9,-31488(gp)
  47b45c:	00000000 	nop
  47b460:	0320f809 	jalr	t9
  47b464:	00000000 	nop
  47b468:	8fdc0010 	lw	gp,16(s8)
  47b46c:	00000000 	nop
}
  47b470:	03c0e821 	move	sp,s8
  47b474:	8fbf0040 	lw	ra,64(sp)
  47b478:	8fbe003c 	lw	s8,60(sp)
  47b47c:	27bd0048 	addiu	sp,sp,72
  47b480:	03e00008 	jr	ra
  47b484:	00000000 	nop
	...

0047b490 <MD5Init>:
  47b490:	3c1c0fb9 	lui	gp,0xfb9
  47b494:	279c14e0 	addiu	gp,gp,5344
  47b498:	0399e021 	addu	gp,gp,t9
  47b49c:	27bdfff0 	addiu	sp,sp,-16
  47b4a0:	afbc0000 	sw	gp,0(sp)
  47b4a4:	afbe000c 	sw	s8,12(sp)
  47b4a8:	afbc0008 	sw	gp,8(sp)
  47b4ac:	03a0f021 	move	s8,sp
  47b4b0:	afc40010 	sw	a0,16(s8)
 */
void MD5Init (context)
MD5_CTX *context;                                        /* context */
{
  context->count[0] = context->count[1] = 0;
  47b4b4:	8fc30010 	lw	v1,16(s8)
  47b4b8:	8fc20010 	lw	v0,16(s8)
  47b4bc:	00000000 	nop
  47b4c0:	ac400014 	sw	zero,20(v0)
  47b4c4:	ac600010 	sw	zero,16(v1)
  /* Load magic initialization constants.
*/
  context->state[0] = 0x67452301;
  47b4c8:	3c036745 	lui	v1,0x6745
  47b4cc:	34632301 	ori	v1,v1,0x2301
  47b4d0:	8fc20010 	lw	v0,16(s8)
  47b4d4:	00000000 	nop
  47b4d8:	ac430000 	sw	v1,0(v0)
  context->state[1] = 0xefcdab89;
  47b4dc:	3c03efcd 	lui	v1,0xefcd
  47b4e0:	3463ab89 	ori	v1,v1,0xab89
  47b4e4:	8fc20010 	lw	v0,16(s8)
  47b4e8:	00000000 	nop
  47b4ec:	ac430004 	sw	v1,4(v0)
  context->state[2] = 0x98badcfe;
  47b4f0:	3c0398ba 	lui	v1,0x98ba
  47b4f4:	3463dcfe 	ori	v1,v1,0xdcfe
  47b4f8:	8fc20010 	lw	v0,16(s8)
  47b4fc:	00000000 	nop
  47b500:	ac430008 	sw	v1,8(v0)
  context->state[3] = 0x10325476;
  47b504:	3c031032 	lui	v1,0x1032
  47b508:	34635476 	ori	v1,v1,0x5476
  47b50c:	8fc20010 	lw	v0,16(s8)
  47b510:	00000000 	nop
  47b514:	ac43000c 	sw	v1,12(v0)
}
  47b518:	03c0e821 	move	sp,s8
  47b51c:	8fbe000c 	lw	s8,12(sp)
  47b520:	27bd0010 	addiu	sp,sp,16
  47b524:	03e00008 	jr	ra
  47b528:	00000000 	nop

0047b52c <MD5Update>:
  47b52c:	3c1c0fb9 	lui	gp,0xfb9
  47b530:	279c1444 	addiu	gp,gp,5188
  47b534:	0399e021 	addu	gp,gp,t9
  47b538:	27bdffc8 	addiu	sp,sp,-56
  47b53c:	afbc0010 	sw	gp,16(sp)
  47b540:	afbf0030 	sw	ra,48(sp)
  47b544:	afbe002c 	sw	s8,44(sp)
  47b548:	afbc0028 	sw	gp,40(sp)
  47b54c:	03a0f021 	move	s8,sp
  47b550:	afc40038 	sw	a0,56(s8)
  47b554:	afc5003c 	sw	a1,60(s8)
  47b558:	afc60040 	sw	a2,64(s8)

/* MD5 block update operation. Continues an MD5 message-digest
  operation, processing another message block, and updating the
  context.
 */
void MD5Update (context, input, inputLen)
MD5_CTX *context;                                        /* context */
const unsigned char *input;                                /* input block */
UINT4 inputLen;                            /* length of input block */
{
  UINT4 i;
  unsigned int index, partLen;

  /* Compute number of bytes mod 64 */
  index = (unsigned int)((context->count[0] >> 3) & 0x3F);
  47b55c:	8fc20038 	lw	v0,56(s8)
  47b560:	00000000 	nop
  47b564:	8c420010 	lw	v0,16(v0)
  47b568:	00000000 	nop
  47b56c:	000210c2 	srl	v0,v0,0x3
  47b570:	3042003f 	andi	v0,v0,0x3f
  47b574:	afc2001c 	sw	v0,28(s8)

  /* Update number of bits */
  if ((context->count[0] += (inputLen << 3)) < (inputLen << 3))
  47b578:	8fc20040 	lw	v0,64(s8)
  47b57c:	00000000 	nop
  47b580:	000218c0 	sll	v1,v0,0x3
  47b584:	8fc20038 	lw	v0,56(s8)
  47b588:	00000000 	nop
  47b58c:	8c420010 	lw	v0,16(v0)
  47b590:	00000000 	nop
  47b594:	00431021 	addu	v0,v0,v1
  47b598:	00401821 	move	v1,v0
  47b59c:	8fc20038 	lw	v0,56(s8)
  47b5a0:	00000000 	nop
  47b5a4:	ac430010 	sw	v1,16(v0)
  47b5a8:	8fc20040 	lw	v0,64(s8)
  47b5ac:	00000000 	nop
  47b5b0:	000210c0 	sll	v0,v0,0x3
  47b5b4:	0062102b 	sltu	v0,v1,v0
  47b5b8:	10400009 	beqz	v0,47b5e0 <MD5Update+0xb4>
  47b5bc:	00000000 	nop
	context->count[1]++;
  47b5c0:	8fc20038 	lw	v0,56(s8)
  47b5c4:	00000000 	nop
  47b5c8:	8c420014 	lw	v0,20(v0)
  47b5cc:	00000000 	nop
  47b5d0:	24430001 	addiu	v1,v0,1
  47b5d4:	8fc20038 	lw	v0,56(s8)
  47b5d8:	00000000 	nop
  47b5dc:	ac430014 	sw	v1,20(v0)
  context->count[1] += (inputLen >> 29);
  47b5e0:	8fc20040 	lw	v0,64(s8)
  47b5e4:	00000000 	nop
  47b5e8:	00021f42 	srl	v1,v0,0x1d
  47b5ec:	8fc20038 	lw	v0,56(s8)
  47b5f0:	00000000 	nop
  47b5f4:	8c420014 	lw	v0,20(v0)
  47b5f8:	00000000 	nop
  47b5fc:	00431821 	addu	v1,v0,v1
  47b600:	8fc20038 	lw	v0,56(s8)
  47b604:	00000000 	nop
  47b608:	ac430014 	sw	v1,20(v0)

  partLen = 64 - index;
  47b60c:	24030040 	li	v1,64
  47b610:	8fc2001c 	lw	v0,28(s8)
  47b614:	00000000 	nop
  47b618:	00621023 	subu	v0,v1,v0
  47b61c:	afc20020 	sw	v0,32(s8)

  /* Transform as many times as possible. */
  if (inputLen >= partLen) {
  47b620:	8fc30040 	lw	v1,64(s8)
  47b624:	8fc20020 	lw	v0,32(s8)
  47b628:	00000000 	nop
  47b62c:	0062102b 	sltu	v0,v1,v0
  47b630:	1440003e 	bnez	v0,47b72c <MD5Update+0x200>
  47b634:	00000000 	nop
	MD5_memcpy((POINTER)&context->buffer[index], (POINTER)input, partLen);
  47b638:	8fc30038 	lw	v1,56(s8)
  47b63c:	8fc2001c 	lw	v0,28(s8)
  47b640:	00000000 	nop
  47b644:	00621021 	addu	v0,v1,v0
  47b648:	24420018 	addiu	v0,v0,24
  47b64c:	00402021 	move	a0,v0
  47b650:	8fc5003c 	lw	a1,60(s8)
  47b654:	8fc60020 	lw	a2,32(s8)
  47b658:	8f998a30 	lw	t9,-30160(gp)
  47b65c:	00000000 	nop
  47b660:	0320f809 	jalr	t9
  47b664:	00000000 	nop
  47b668:	8fdc0010 	lw	gp,16(s8)
  47b66c:	00000000 	nop
	MD5Transform (context->state, context->buffer);
  47b670:	8fc20038 	lw	v0,56(s8)
  47b674:	00000000 	nop
  47b678:	24420018 	addiu	v0,v0,24
  47b67c:	8fc40038 	lw	a0,56(s8)
  47b680:	00402821 	move	a1,v0
  47b684:	8f998048 	lw	t9,-32696(gp)
  47b688:	00000000 	nop
  47b68c:	2739b924 	addiu	t9,t9,-18140
  47b690:	00000000 	nop
  47b694:	0320f809 	jalr	t9
  47b698:	00000000 	nop
  47b69c:	8fdc0010 	lw	gp,16(s8)
  47b6a0:	00000000 	nop

	for (i = partLen; i + 63 < inputLen; i += 64)
  47b6a4:	8fc20020 	lw	v0,32(s8)
  47b6a8:	00000000 	nop
  47b6ac:	afc20018 	sw	v0,24(s8)
  47b6b0:	8fc20018 	lw	v0,24(s8)
  47b6b4:	00000000 	nop
  47b6b8:	2443003f 	addiu	v1,v0,63
  47b6bc:	8fc20040 	lw	v0,64(s8)
  47b6c0:	00000000 	nop
  47b6c4:	0062102b 	sltu	v0,v1,v0
  47b6c8:	14400004 	bnez	v0,47b6dc <MD5Update+0x1b0>
  47b6cc:	00000000 	nop
	    MD5Transform (context->state, &input[i]);

	index = 0;
  47b6d0:	afc0001c 	sw	zero,28(s8)
  47b6d4:	10000016 	b	47b730 <MD5Update+0x204>
  47b6d8:	00000000 	nop
  47b6dc:	8fc3003c 	lw	v1,60(s8)
  47b6e0:	8fc20018 	lw	v0,24(s8)
  47b6e4:	00000000 	nop
  47b6e8:	00621021 	addu	v0,v1,v0
  47b6ec:	8fc40038 	lw	a0,56(s8)
  47b6f0:	00402821 	move	a1,v0
  47b6f4:	8f998048 	lw	t9,-32696(gp)
  47b6f8:	00000000 	nop
  47b6fc:	2739b924 	addiu	t9,t9,-18140
  47b700:	00000000 	nop
  47b704:	0320f809 	jalr	t9
  47b708:	00000000 	nop
  47b70c:	8fdc0010 	lw	gp,16(s8)
  47b710:	00000000 	nop
  47b714:	8fc20018 	lw	v0,24(s8)
  47b718:	00000000 	nop
  47b71c:	24420040 	addiu	v0,v0,64
  47b720:	afc20018 	sw	v0,24(s8)
  47b724:	1000ffe2 	b	47b6b0 <MD5Update+0x184>
  47b728:	00000000 	nop
  }
  else
	i = 0;
  47b72c:	afc00018 	sw	zero,24(s8)

  /* Buffer remaining input */
  MD5_memcpy((POINTER)&context->buffer[index], (POINTER)&input[i], inputLen-i);
  47b730:	8fc30038 	lw	v1,56(s8)
  47b734:	8fc2001c 	lw	v0,28(s8)
  47b738:	00000000 	nop
  47b73c:	00621021 	addu	v0,v1,v0
  47b740:	24440018 	addiu	a0,v0,24
  47b744:	8fc3003c 	lw	v1,60(s8)
  47b748:	8fc20018 	lw	v0,24(s8)
  47b74c:	00000000 	nop
  47b750:	00622821 	addu	a1,v1,v0
  47b754:	8fc30040 	lw	v1,64(s8)
  47b758:	8fc20018 	lw	v0,24(s8)
  47b75c:	00000000 	nop
  47b760:	00621023 	subu	v0,v1,v0
  47b764:	00403021 	move	a2,v0
  47b768:	8f998a30 	lw	t9,-30160(gp)
  47b76c:	00000000 	nop
  47b770:	0320f809 	jalr	t9
  47b774:	00000000 	nop
  47b778:	8fdc0010 	lw	gp,16(s8)
  47b77c:	00000000 	nop
}
  47b780:	03c0e821 	move	sp,s8
  47b784:	8fbf0030 	lw	ra,48(sp)
  47b788:	8fbe002c 	lw	s8,44(sp)
  47b78c:	27bd0038 	addiu	sp,sp,56
  47b790:	03e00008 	jr	ra
  47b794:	00000000 	nop

0047b798 <MD5Final>:
  47b798:	3c1c0fb9 	lui	gp,0xfb9
  47b79c:	279c11d8 	addiu	gp,gp,4568
  47b7a0:	0399e021 	addu	gp,gp,t9
  47b7a4:	27bdffc8 	addiu	sp,sp,-56
  47b7a8:	afbc0010 	sw	gp,16(sp)
  47b7ac:	afbf0030 	sw	ra,48(sp)
  47b7b0:	afbe002c 	sw	s8,44(sp)
  47b7b4:	afbc0028 	sw	gp,40(sp)
  47b7b8:	03a0f021 	move	s8,sp
  47b7bc:	afc40038 	sw	a0,56(s8)
  47b7c0:	afc5003c 	sw	a1,60(s8)

/* MD5 finalization. Ends an MD5 message-digest operation, writing the
  the message digest and zeroizing the context.
 */
void MD5Final (digest, context)
unsigned char digest[16];                         /* message digest */
MD5_CTX *context;                                       /* context */
{
  unsigned char bits[8];
  unsigned int index, padLen;

  /* Save number of bits */
  Encode (bits, context->count, 8);
  47b7c4:	8fc2003c 	lw	v0,60(s8)
  47b7c8:	00000000 	nop
  47b7cc:	24420010 	addiu	v0,v0,16
  47b7d0:	27c40018 	addiu	a0,s8,24
  47b7d4:	00402821 	move	a1,v0
  47b7d8:	24060008 	li	a2,8
  47b7dc:	8f998048 	lw	t9,-32696(gp)
  47b7e0:	00000000 	nop
  47b7e4:	2739d93c 	addiu	t9,t9,-9924
  47b7e8:	00000000 	nop
  47b7ec:	0320f809 	jalr	t9
  47b7f0:	00000000 	nop
  47b7f4:	8fdc0010 	lw	gp,16(s8)
  47b7f8:	00000000 	nop

  /* Pad out to 56 mod 64.
*/
  index = (unsigned int)((context->count[0] >> 3) & 0x3f);
  47b7fc:	8fc2003c 	lw	v0,60(s8)
  47b800:	00000000 	nop
  47b804:	8c420010 	lw	v0,16(v0)
  47b808:	00000000 	nop
  47b80c:	000210c2 	srl	v0,v0,0x3
  47b810:	3042003f 	andi	v0,v0,0x3f
  47b814:	afc20020 	sw	v0,32(s8)
  padLen = (index < 56) ? (56 - index) : (120 - index);
  47b818:	8fc20020 	lw	v0,32(s8)
  47b81c:	00000000 	nop
  47b820:	2c420038 	sltiu	v0,v0,56
  47b824:	10400008 	beqz	v0,47b848 <MD5Final+0xb0>
  47b828:	00000000 	nop
  47b82c:	24020038 	li	v0,56
  47b830:	8fc30020 	lw	v1,32(s8)
  47b834:	00000000 	nop
  47b838:	00431023 	subu	v0,v0,v1
  47b83c:	afc20024 	sw	v0,36(s8)
  47b840:	10000006 	b	47b85c <MD5Final+0xc4>
  47b844:	00000000 	nop
  47b848:	24020078 	li	v0,120
  47b84c:	8fc30020 	lw	v1,32(s8)
  47b850:	00000000 	nop
  47b854:	00431023 	subu	v0,v0,v1
  47b858:	afc20024 	sw	v0,36(s8)
  MD5Update (context, PADDING, padLen);
  47b85c:	8fc4003c 	lw	a0,60(s8)
  47b860:	8f858018 	lw	a1,-32744(gp)
  47b864:	00000000 	nop
  47b868:	24a53fb0 	addiu	a1,a1,16304
  47b86c:	8fc60024 	lw	a2,36(s8)
  47b870:	8f998354 	lw	t9,-31916(gp)
  47b874:	00000000 	nop
  47b878:	0320f809 	jalr	t9
  47b87c:	00000000 	nop
  47b880:	8fdc0010 	lw	gp,16(s8)
  47b884:	00000000 	nop

  /* Append length (before padding) */
  MD5Update (context, bits, 8);
  47b888:	8fc4003c 	lw	a0,60(s8)
  47b88c:	27c50018 	addiu	a1,s8,24
  47b890:	24060008 	li	a2,8
  47b894:	8f998354 	lw	t9,-31916(gp)
  47b898:	00000000 	nop
  47b89c:	0320f809 	jalr	t9
  47b8a0:	00000000 	nop
  47b8a4:	8fdc0010 	lw	gp,16(s8)
  47b8a8:	00000000 	nop

  if (digest != NULL)			/* Bill Simpson's padding */
  47b8ac:	8fc20038 	lw	v0,56(s8)
  47b8b0:	00000000 	nop
  47b8b4:	10400015 	beqz	v0,47b90c <MD5Final+0x174>
  47b8b8:	00000000 	nop
  {
	  /* store state in digest */
	  Encode (digest, context->state, 16);
  47b8bc:	8fc40038 	lw	a0,56(s8)
  47b8c0:	8fc5003c 	lw	a1,60(s8)
  47b8c4:	24060010 	li	a2,16
  47b8c8:	8f998048 	lw	t9,-32696(gp)
  47b8cc:	00000000 	nop
  47b8d0:	2739d93c 	addiu	t9,t9,-9924
  47b8d4:	00000000 	nop
  47b8d8:	0320f809 	jalr	t9
  47b8dc:	00000000 	nop
  47b8e0:	8fdc0010 	lw	gp,16(s8)
  47b8e4:	00000000 	nop

	  /* Zeroize sensitive information.
	   */
	  MD5_memset ((POINTER)context, 0, sizeof (*context));
  47b8e8:	8fc4003c 	lw	a0,60(s8)
  47b8ec:	00002821 	move	a1,zero
  47b8f0:	24060058 	li	a2,88
  47b8f4:	8f998500 	lw	t9,-31488(gp)
  47b8f8:	00000000 	nop
  47b8fc:	0320f809 	jalr	t9
  47b900:	00000000 	nop
  47b904:	8fdc0010 	lw	gp,16(s8)
  47b908:	00000000 	nop
  }
}
  47b90c:	03c0e821 	move	sp,s8
  47b910:	8fbf0030 	lw	ra,48(sp)
  47b914:	8fbe002c 	lw	s8,44(sp)
  47b918:	27bd0038 	addiu	sp,sp,56
  47b91c:	03e00008 	jr	ra
  47b920:	00000000 	nop

0047b924 <_MD5Transform>:
  47b924:	3c1c0fb9 	lui	gp,0xfb9
  47b928:	279c104c 	addiu	gp,gp,4172
  47b92c:	0399e021 	addu	gp,gp,t9
  47b930:	27bdff88 	addiu	sp,sp,-120
  47b934:	afbc0010 	sw	gp,16(sp)
  47b938:	afbf0070 	sw	ra,112(sp)
  47b93c:	afbe006c 	sw	s8,108(sp)
  47b940:	afbc0068 	sw	gp,104(sp)
  47b944:	03a0f021 	move	s8,sp
  47b948:	afc40078 	sw	a0,120(s8)
  47b94c:	afc5007c 	sw	a1,124(s8)

/* MD5 basic transformation. Transforms state based on block.
 */
static void MD5Transform (state, block)
UINT4 state[4];
const unsigned char block[64];
{
  UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
  47b950:	8fc20078 	lw	v0,120(s8)
  47b954:	00000000 	nop
  47b958:	8c420000 	lw	v0,0(v0)
  47b95c:	00000000 	nop
  47b960:	afc20018 	sw	v0,24(s8)
  47b964:	8fc20078 	lw	v0,120(s8)
  47b968:	00000000 	nop
  47b96c:	24420004 	addiu	v0,v0,4
  47b970:	8c420000 	lw	v0,0(v0)
  47b974:	00000000 	nop
  47b978:	afc2001c 	sw	v0,28(s8)
  47b97c:	8fc20078 	lw	v0,120(s8)
  47b980:	00000000 	nop
  47b984:	24420008 	addiu	v0,v0,8
  47b988:	8c420000 	lw	v0,0(v0)
  47b98c:	00000000 	nop
  47b990:	afc20020 	sw	v0,32(s8)
  47b994:	8fc20078 	lw	v0,120(s8)
  47b998:	00000000 	nop
  47b99c:	2442000c 	addiu	v0,v0,12
  47b9a0:	8c420000 	lw	v0,0(v0)
  47b9a4:	00000000 	nop
  47b9a8:	afc20024 	sw	v0,36(s8)

  Decode (x, block, 64);
  47b9ac:	27c40028 	addiu	a0,s8,40
  47b9b0:	8fc5007c 	lw	a1,124(s8)
  47b9b4:	24060040 	li	a2,64
  47b9b8:	8f998048 	lw	t9,-32696(gp)
  47b9bc:	00000000 	nop
  47b9c0:	2739dab4 	addiu	t9,t9,-9548
  47b9c4:	00000000 	nop
  47b9c8:	0320f809 	jalr	t9
  47b9cc:	00000000 	nop
  47b9d0:	8fdc0010 	lw	gp,16(s8)
  47b9d4:	00000000 	nop

  /* Round 1 */
  FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
  47b9d8:	8fc3001c 	lw	v1,28(s8)
  47b9dc:	8fc20020 	lw	v0,32(s8)
  47b9e0:	00000000 	nop
  47b9e4:	00622024 	and	a0,v1,v0
  47b9e8:	8fc2001c 	lw	v0,28(s8)
  47b9ec:	00000000 	nop
  47b9f0:	00021827 	nor	v1,zero,v0
  47b9f4:	8fc20024 	lw	v0,36(s8)
  47b9f8:	00000000 	nop
  47b9fc:	00621024 	and	v0,v1,v0
  47ba00:	00821825 	or	v1,a0,v0
  47ba04:	8fc20028 	lw	v0,40(s8)
  47ba08:	00000000 	nop
  47ba0c:	00621821 	addu	v1,v1,v0
  47ba10:	8fc20018 	lw	v0,24(s8)
  47ba14:	00000000 	nop
  47ba18:	00621021 	addu	v0,v1,v0
  47ba1c:	3c01d76a 	lui	at,0xd76a
  47ba20:	3421a478 	ori	at,at,0xa478
  47ba24:	00221021 	addu	v0,at,v0
  47ba28:	afc20018 	sw	v0,24(s8)
  47ba2c:	8fc20018 	lw	v0,24(s8)
  47ba30:	00000000 	nop
  47ba34:	000219c0 	sll	v1,v0,0x7
  47ba38:	00021642 	srl	v0,v0,0x19
  47ba3c:	00621025 	or	v0,v1,v0
  47ba40:	afc20018 	sw	v0,24(s8)
  47ba44:	8fc30018 	lw	v1,24(s8)
  47ba48:	8fc2001c 	lw	v0,28(s8)
  47ba4c:	00000000 	nop
  47ba50:	00621021 	addu	v0,v1,v0
  47ba54:	afc20018 	sw	v0,24(s8)
  FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
  47ba58:	8fc30018 	lw	v1,24(s8)
  47ba5c:	8fc2001c 	lw	v0,28(s8)
  47ba60:	00000000 	nop
  47ba64:	00622024 	and	a0,v1,v0
  47ba68:	8fc20018 	lw	v0,24(s8)
  47ba6c:	00000000 	nop
  47ba70:	00021827 	nor	v1,zero,v0
  47ba74:	8fc20020 	lw	v0,32(s8)
  47ba78:	00000000 	nop
  47ba7c:	00621024 	and	v0,v1,v0
  47ba80:	00821825 	or	v1,a0,v0
  47ba84:	8fc2002c 	lw	v0,44(s8)
  47ba88:	00000000 	nop
  47ba8c:	00621821 	addu	v1,v1,v0
  47ba90:	8fc20024 	lw	v0,36(s8)
  47ba94:	00000000 	nop
  47ba98:	00621021 	addu	v0,v1,v0
  47ba9c:	3c01e8c7 	lui	at,0xe8c7
  47baa0:	3421b756 	ori	at,at,0xb756
  47baa4:	00221021 	addu	v0,at,v0
  47baa8:	afc20024 	sw	v0,36(s8)
  47baac:	8fc20024 	lw	v0,36(s8)
  47bab0:	00000000 	nop
  47bab4:	00021b00 	sll	v1,v0,0xc
  47bab8:	00021502 	srl	v0,v0,0x14
  47babc:	00621025 	or	v0,v1,v0
  47bac0:	afc20024 	sw	v0,36(s8)
  47bac4:	8fc30024 	lw	v1,36(s8)
  47bac8:	8fc20018 	lw	v0,24(s8)
  47bacc:	00000000 	nop
  47bad0:	00621021 	addu	v0,v1,v0
  47bad4:	afc20024 	sw	v0,36(s8)
  FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
  47bad8:	8fc30024 	lw	v1,36(s8)
  47badc:	8fc20018 	lw	v0,24(s8)
  47bae0:	00000000 	nop
  47bae4:	00622024 	and	a0,v1,v0
  47bae8:	8fc20024 	lw	v0,36(s8)
  47baec:	00000000 	nop
  47baf0:	00021827 	nor	v1,zero,v0
  47baf4:	8fc2001c 	lw	v0,28(s8)
  47baf8:	00000000 	nop
  47bafc:	00621024 	and	v0,v1,v0
  47bb00:	00821825 	or	v1,a0,v0
  47bb04:	8fc20030 	lw	v0,48(s8)
  47bb08:	00000000 	nop
  47bb0c:	00621821 	addu	v1,v1,v0
  47bb10:	8fc20020 	lw	v0,32(s8)
  47bb14:	00000000 	nop
  47bb18:	00621021 	addu	v0,v1,v0
  47bb1c:	3c012420 	lui	at,0x2420
  47bb20:	342170db 	ori	at,at,0x70db
  47bb24:	00221021 	addu	v0,at,v0
  47bb28:	afc20020 	sw	v0,32(s8)
  47bb2c:	8fc20020 	lw	v0,32(s8)
  47bb30:	00000000 	nop
  47bb34:	00021c40 	sll	v1,v0,0x11
  47bb38:	000213c2 	srl	v0,v0,0xf
  47bb3c:	00621025 	or	v0,v1,v0
  47bb40:	afc20020 	sw	v0,32(s8)
  47bb44:	8fc30020 	lw	v1,32(s8)
  47bb48:	8fc20024 	lw	v0,36(s8)
  47bb4c:	00000000 	nop
  47bb50:	00621021 	addu	v0,v1,v0
  47bb54:	afc20020 	sw	v0,32(s8)
  FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
  47bb58:	8fc30020 	lw	v1,32(s8)
  47bb5c:	8fc20024 	lw	v0,36(s8)
  47bb60:	00000000 	nop
  47bb64:	00622024 	and	a0,v1,v0
  47bb68:	8fc20020 	lw	v0,32(s8)
  47bb6c:	00000000 	nop
  47bb70:	00021827 	nor	v1,zero,v0
  47bb74:	8fc20018 	lw	v0,24(s8)
  47bb78:	00000000 	nop
  47bb7c:	00621024 	and	v0,v1,v0
  47bb80:	00821825 	or	v1,a0,v0
  47bb84:	8fc20034 	lw	v0,52(s8)
  47bb88:	00000000 	nop
  47bb8c:	00621821 	addu	v1,v1,v0
  47bb90:	8fc2001c 	lw	v0,28(s8)
  47bb94:	00000000 	nop
  47bb98:	00621021 	addu	v0,v1,v0
  47bb9c:	3c01c1bd 	lui	at,0xc1bd
  47bba0:	3421ceee 	ori	at,at,0xceee
  47bba4:	00221021 	addu	v0,at,v0
  47bba8:	afc2001c 	sw	v0,28(s8)
  47bbac:	8fc2001c 	lw	v0,28(s8)
  47bbb0:	00000000 	nop
  47bbb4:	00021d80 	sll	v1,v0,0x16
  47bbb8:	00021282 	srl	v0,v0,0xa
  47bbbc:	00621025 	or	v0,v1,v0
  47bbc0:	afc2001c 	sw	v0,28(s8)
  47bbc4:	8fc3001c 	lw	v1,28(s8)
  47bbc8:	8fc20020 	lw	v0,32(s8)
  47bbcc:	00000000 	nop
  47bbd0:	00621021 	addu	v0,v1,v0
  47bbd4:	afc2001c 	sw	v0,28(s8)
  FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
  47bbd8:	8fc3001c 	lw	v1,28(s8)
  47bbdc:	8fc20020 	lw	v0,32(s8)
  47bbe0:	00000000 	nop
  47bbe4:	00622024 	and	a0,v1,v0
  47bbe8:	8fc2001c 	lw	v0,28(s8)
  47bbec:	00000000 	nop
  47bbf0:	00021827 	nor	v1,zero,v0
  47bbf4:	8fc20024 	lw	v0,36(s8)
  47bbf8:	00000000 	nop
  47bbfc:	00621024 	and	v0,v1,v0
  47bc00:	00821825 	or	v1,a0,v0
  47bc04:	8fc20038 	lw	v0,56(s8)
  47bc08:	00000000 	nop
  47bc0c:	00621821 	addu	v1,v1,v0
  47bc10:	8fc20018 	lw	v0,24(s8)
  47bc14:	00000000 	nop
  47bc18:	00621021 	addu	v0,v1,v0
  47bc1c:	3c01f57c 	lui	at,0xf57c
  47bc20:	34210faf 	ori	at,at,0xfaf
  47bc24:	00221021 	addu	v0,at,v0
  47bc28:	afc20018 	sw	v0,24(s8)
  47bc2c:	8fc20018 	lw	v0,24(s8)
  47bc30:	00000000 	nop
  47bc34:	000219c0 	sll	v1,v0,0x7
  47bc38:	00021642 	srl	v0,v0,0x19
  47bc3c:	00621025 	or	v0,v1,v0
  47bc40:	afc20018 	sw	v0,24(s8)
  47bc44:	8fc30018 	lw	v1,24(s8)
  47bc48:	8fc2001c 	lw	v0,28(s8)
  47bc4c:	00000000 	nop
  47bc50:	00621021 	addu	v0,v1,v0
  47bc54:	afc20018 	sw	v0,24(s8)
  FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
  47bc58:	8fc30018 	lw	v1,24(s8)
  47bc5c:	8fc2001c 	lw	v0,28(s8)
  47bc60:	00000000 	nop
  47bc64:	00622024 	and	a0,v1,v0
  47bc68:	8fc20018 	lw	v0,24(s8)
  47bc6c:	00000000 	nop
  47bc70:	00021827 	nor	v1,zero,v0
  47bc74:	8fc20020 	lw	v0,32(s8)
  47bc78:	00000000 	nop
  47bc7c:	00621024 	and	v0,v1,v0
  47bc80:	00821825 	or	v1,a0,v0
  47bc84:	8fc2003c 	lw	v0,60(s8)
  47bc88:	00000000 	nop
  47bc8c:	00621821 	addu	v1,v1,v0
  47bc90:	8fc20024 	lw	v0,36(s8)
  47bc94:	00000000 	nop
  47bc98:	00621021 	addu	v0,v1,v0
  47bc9c:	3c014787 	lui	at,0x4787
  47bca0:	3421c62a 	ori	at,at,0xc62a
  47bca4:	00221021 	addu	v0,at,v0
  47bca8:	afc20024 	sw	v0,36(s8)
  47bcac:	8fc20024 	lw	v0,36(s8)
  47bcb0:	00000000 	nop
  47bcb4:	00021b00 	sll	v1,v0,0xc
  47bcb8:	00021502 	srl	v0,v0,0x14
  47bcbc:	00621025 	or	v0,v1,v0
  47bcc0:	afc20024 	sw	v0,36(s8)
  47bcc4:	8fc30024 	lw	v1,36(s8)
  47bcc8:	8fc20018 	lw	v0,24(s8)
  47bccc:	00000000 	nop
  47bcd0:	00621021 	addu	v0,v1,v0
  47bcd4:	afc20024 	sw	v0,36(s8)
  FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
  47bcd8:	8fc30024 	lw	v1,36(s8)
  47bcdc:	8fc20018 	lw	v0,24(s8)
  47bce0:	00000000 	nop
  47bce4:	00622024 	and	a0,v1,v0
  47bce8:	8fc20024 	lw	v0,36(s8)
  47bcec:	00000000 	nop
  47bcf0:	00021827 	nor	v1,zero,v0
  47bcf4:	8fc2001c 	lw	v0,28(s8)
  47bcf8:	00000000 	nop
  47bcfc:	00621024 	and	v0,v1,v0
  47bd00:	00821825 	or	v1,a0,v0
  47bd04:	8fc20040 	lw	v0,64(s8)
  47bd08:	00000000 	nop
  47bd0c:	00621821 	addu	v1,v1,v0
  47bd10:	8fc20020 	lw	v0,32(s8)
  47bd14:	00000000 	nop
  47bd18:	00621021 	addu	v0,v1,v0
  47bd1c:	3c01a830 	lui	at,0xa830
  47bd20:	34214613 	ori	at,at,0x4613
  47bd24:	00221021 	addu	v0,at,v0
  47bd28:	afc20020 	sw	v0,32(s8)
  47bd2c:	8fc20020 	lw	v0,32(s8)
  47bd30:	00000000 	nop
  47bd34:	00021c40 	sll	v1,v0,0x11
  47bd38:	000213c2 	srl	v0,v0,0xf
  47bd3c:	00621025 	or	v0,v1,v0
  47bd40:	afc20020 	sw	v0,32(s8)
  47bd44:	8fc30020 	lw	v1,32(s8)
  47bd48:	8fc20024 	lw	v0,36(s8)
  47bd4c:	00000000 	nop
  47bd50:	00621021 	addu	v0,v1,v0
  47bd54:	afc20020 	sw	v0,32(s8)
  FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
  47bd58:	8fc30020 	lw	v1,32(s8)
  47bd5c:	8fc20024 	lw	v0,36(s8)
  47bd60:	00000000 	nop
  47bd64:	00622024 	and	a0,v1,v0
  47bd68:	8fc20020 	lw	v0,32(s8)
  47bd6c:	00000000 	nop
  47bd70:	00021827 	nor	v1,zero,v0
  47bd74:	8fc20018 	lw	v0,24(s8)
  47bd78:	00000000 	nop
  47bd7c:	00621024 	and	v0,v1,v0
  47bd80:	00821825 	or	v1,a0,v0
  47bd84:	8fc20044 	lw	v0,68(s8)
  47bd88:	00000000 	nop
  47bd8c:	00621821 	addu	v1,v1,v0
  47bd90:	8fc2001c 	lw	v0,28(s8)
  47bd94:	00000000 	nop
  47bd98:	00621021 	addu	v0,v1,v0
  47bd9c:	3c01fd46 	lui	at,0xfd46
  47bda0:	34219501 	ori	at,at,0x9501
  47bda4:	00221021 	addu	v0,at,v0
  47bda8:	afc2001c 	sw	v0,28(s8)
  47bdac:	8fc2001c 	lw	v0,28(s8)
  47bdb0:	00000000 	nop
  47bdb4:	00021d80 	sll	v1,v0,0x16
  47bdb8:	00021282 	srl	v0,v0,0xa
  47bdbc:	00621025 	or	v0,v1,v0
  47bdc0:	afc2001c 	sw	v0,28(s8)
  47bdc4:	8fc3001c 	lw	v1,28(s8)
  47bdc8:	8fc20020 	lw	v0,32(s8)
  47bdcc:	00000000 	nop
  47bdd0:	00621021 	addu	v0,v1,v0
  47bdd4:	afc2001c 	sw	v0,28(s8)
  FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
  47bdd8:	8fc3001c 	lw	v1,28(s8)
  47bddc:	8fc20020 	lw	v0,32(s8)
  47bde0:	00000000 	nop
  47bde4:	00622024 	and	a0,v1,v0
  47bde8:	8fc2001c 	lw	v0,28(s8)
  47bdec:	00000000 	nop
  47bdf0:	00021827 	nor	v1,zero,v0
  47bdf4:	8fc20024 	lw	v0,36(s8)
  47bdf8:	00000000 	nop
  47bdfc:	00621024 	and	v0,v1,v0
  47be00:	00821825 	or	v1,a0,v0
  47be04:	8fc20048 	lw	v0,72(s8)
  47be08:	00000000 	nop
  47be0c:	00621821 	addu	v1,v1,v0
  47be10:	8fc20018 	lw	v0,24(s8)
  47be14:	00000000 	nop
  47be18:	00621021 	addu	v0,v1,v0
  47be1c:	3c016980 	lui	at,0x6980
  47be20:	342198d8 	ori	at,at,0x98d8
  47be24:	00221021 	addu	v0,at,v0
  47be28:	afc20018 	sw	v0,24(s8)
  47be2c:	8fc20018 	lw	v0,24(s8)
  47be30:	00000000 	nop
  47be34:	000219c0 	sll	v1,v0,0x7
  47be38:	00021642 	srl	v0,v0,0x19
  47be3c:	00621025 	or	v0,v1,v0
  47be40:	afc20018 	sw	v0,24(s8)
  47be44:	8fc30018 	lw	v1,24(s8)
  47be48:	8fc2001c 	lw	v0,28(s8)
  47be4c:	00000000 	nop
  47be50:	00621021 	addu	v0,v1,v0
  47be54:	afc20018 	sw	v0,24(s8)
  FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
  47be58:	8fc30018 	lw	v1,24(s8)
  47be5c:	8fc2001c 	lw	v0,28(s8)
  47be60:	00000000 	nop
  47be64:	00622024 	and	a0,v1,v0
  47be68:	8fc20018 	lw	v0,24(s8)
  47be6c:	00000000 	nop
  47be70:	00021827 	nor	v1,zero,v0
  47be74:	8fc20020 	lw	v0,32(s8)
  47be78:	00000000 	nop
  47be7c:	00621024 	and	v0,v1,v0
  47be80:	00821825 	or	v1,a0,v0
  47be84:	8fc2004c 	lw	v0,76(s8)
  47be88:	00000000 	nop
  47be8c:	00621821 	addu	v1,v1,v0
  47be90:	8fc20024 	lw	v0,36(s8)
  47be94:	00000000 	nop
  47be98:	00621021 	addu	v0,v1,v0
  47be9c:	3c018b44 	lui	at,0x8b44
  47bea0:	3421f7af 	ori	at,at,0xf7af
  47bea4:	00221021 	addu	v0,at,v0
  47bea8:	afc20024 	sw	v0,36(s8)
  47beac:	8fc20024 	lw	v0,36(s8)
  47beb0:	00000000 	nop
  47beb4:	00021b00 	sll	v1,v0,0xc
  47beb8:	00021502 	srl	v0,v0,0x14
  47bebc:	00621025 	or	v0,v1,v0
  47bec0:	afc20024 	sw	v0,36(s8)
  47bec4:	8fc30024 	lw	v1,36(s8)
  47bec8:	8fc20018 	lw	v0,24(s8)
  47becc:	00000000 	nop
  47bed0:	00621021 	addu	v0,v1,v0
  47bed4:	afc20024 	sw	v0,36(s8)
  FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
  47bed8:	8fc30024 	lw	v1,36(s8)
  47bedc:	8fc20018 	lw	v0,24(s8)
  47bee0:	00000000 	nop
  47bee4:	00622024 	and	a0,v1,v0
  47bee8:	8fc20024 	lw	v0,36(s8)
  47beec:	00000000 	nop
  47bef0:	00021827 	nor	v1,zero,v0
  47bef4:	8fc2001c 	lw	v0,28(s8)
  47bef8:	00000000 	nop
  47befc:	00621024 	and	v0,v1,v0
  47bf00:	00821825 	or	v1,a0,v0
  47bf04:	8fc20050 	lw	v0,80(s8)
  47bf08:	00000000 	nop
  47bf0c:	00621821 	addu	v1,v1,v0
  47bf10:	8fc20020 	lw	v0,32(s8)
  47bf14:	00000000 	nop
  47bf18:	00621021 	addu	v0,v1,v0
  47bf1c:	3c01ffff 	lui	at,0xffff
  47bf20:	34215bb1 	ori	at,at,0x5bb1
  47bf24:	00221021 	addu	v0,at,v0
  47bf28:	afc20020 	sw	v0,32(s8)
  47bf2c:	8fc20020 	lw	v0,32(s8)
  47bf30:	00000000 	nop
  47bf34:	00021c40 	sll	v1,v0,0x11
  47bf38:	000213c2 	srl	v0,v0,0xf
  47bf3c:	00621025 	or	v0,v1,v0
  47bf40:	afc20020 	sw	v0,32(s8)
  47bf44:	8fc30020 	lw	v1,32(s8)
  47bf48:	8fc20024 	lw	v0,36(s8)
  47bf4c:	00000000 	nop
  47bf50:	00621021 	addu	v0,v1,v0
  47bf54:	afc20020 	sw	v0,32(s8)
  FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
  47bf58:	8fc30020 	lw	v1,32(s8)
  47bf5c:	8fc20024 	lw	v0,36(s8)
  47bf60:	00000000 	nop
  47bf64:	00622024 	and	a0,v1,v0
  47bf68:	8fc20020 	lw	v0,32(s8)
  47bf6c:	00000000 	nop
  47bf70:	00021827 	nor	v1,zero,v0
  47bf74:	8fc20018 	lw	v0,24(s8)
  47bf78:	00000000 	nop
  47bf7c:	00621024 	and	v0,v1,v0
  47bf80:	00821825 	or	v1,a0,v0
  47bf84:	8fc20054 	lw	v0,84(s8)
  47bf88:	00000000 	nop
  47bf8c:	00621821 	addu	v1,v1,v0
  47bf90:	8fc2001c 	lw	v0,28(s8)
  47bf94:	00000000 	nop
  47bf98:	00621021 	addu	v0,v1,v0
  47bf9c:	3c01895c 	lui	at,0x895c
  47bfa0:	3421d7be 	ori	at,at,0xd7be
  47bfa4:	00221021 	addu	v0,at,v0
  47bfa8:	afc2001c 	sw	v0,28(s8)
  47bfac:	8fc2001c 	lw	v0,28(s8)
  47bfb0:	00000000 	nop
  47bfb4:	00021d80 	sll	v1,v0,0x16
  47bfb8:	00021282 	srl	v0,v0,0xa
  47bfbc:	00621025 	or	v0,v1,v0
  47bfc0:	afc2001c 	sw	v0,28(s8)
  47bfc4:	8fc3001c 	lw	v1,28(s8)
  47bfc8:	8fc20020 	lw	v0,32(s8)
  47bfcc:	00000000 	nop
  47bfd0:	00621021 	addu	v0,v1,v0
  47bfd4:	afc2001c 	sw	v0,28(s8)
  FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
  47bfd8:	8fc3001c 	lw	v1,28(s8)
  47bfdc:	8fc20020 	lw	v0,32(s8)
  47bfe0:	00000000 	nop
  47bfe4:	00622024 	and	a0,v1,v0
  47bfe8:	8fc2001c 	lw	v0,28(s8)
  47bfec:	00000000 	nop
  47bff0:	00021827 	nor	v1,zero,v0
  47bff4:	8fc20024 	lw	v0,36(s8)
  47bff8:	00000000 	nop
  47bffc:	00621024 	and	v0,v1,v0
  47c000:	00821825 	or	v1,a0,v0
  47c004:	8fc20058 	lw	v0,88(s8)
  47c008:	00000000 	nop
  47c00c:	00621821 	addu	v1,v1,v0
  47c010:	8fc20018 	lw	v0,24(s8)
  47c014:	00000000 	nop
  47c018:	00621021 	addu	v0,v1,v0
  47c01c:	3c016b90 	lui	at,0x6b90
  47c020:	34211122 	ori	at,at,0x1122
  47c024:	00221021 	addu	v0,at,v0
  47c028:	afc20018 	sw	v0,24(s8)
  47c02c:	8fc20018 	lw	v0,24(s8)
  47c030:	00000000 	nop
  47c034:	000219c0 	sll	v1,v0,0x7
  47c038:	00021642 	srl	v0,v0,0x19
  47c03c:	00621025 	or	v0,v1,v0
  47c040:	afc20018 	sw	v0,24(s8)
  47c044:	8fc30018 	lw	v1,24(s8)
  47c048:	8fc2001c 	lw	v0,28(s8)
  47c04c:	00000000 	nop
  47c050:	00621021 	addu	v0,v1,v0
  47c054:	afc20018 	sw	v0,24(s8)
  FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
  47c058:	8fc30018 	lw	v1,24(s8)
  47c05c:	8fc2001c 	lw	v0,28(s8)
  47c060:	00000000 	nop
  47c064:	00622024 	and	a0,v1,v0
  47c068:	8fc20018 	lw	v0,24(s8)
  47c06c:	00000000 	nop
  47c070:	00021827 	nor	v1,zero,v0
  47c074:	8fc20020 	lw	v0,32(s8)
  47c078:	00000000 	nop
  47c07c:	00621024 	and	v0,v1,v0
  47c080:	00821825 	or	v1,a0,v0
  47c084:	8fc2005c 	lw	v0,92(s8)
  47c088:	00000000 	nop
  47c08c:	00621821 	addu	v1,v1,v0
  47c090:	8fc20024 	lw	v0,36(s8)
  47c094:	00000000 	nop
  47c098:	00621021 	addu	v0,v1,v0
  47c09c:	3c01fd98 	lui	at,0xfd98
  47c0a0:	34217193 	ori	at,at,0x7193
  47c0a4:	00221021 	addu	v0,at,v0
  47c0a8:	afc20024 	sw	v0,36(s8)
  47c0ac:	8fc20024 	lw	v0,36(s8)
  47c0b0:	00000000 	nop
  47c0b4:	00021b00 	sll	v1,v0,0xc
  47c0b8:	00021502 	srl	v0,v0,0x14
  47c0bc:	00621025 	or	v0,v1,v0
  47c0c0:	afc20024 	sw	v0,36(s8)
  47c0c4:	8fc30024 	lw	v1,36(s8)
  47c0c8:	8fc20018 	lw	v0,24(s8)
  47c0cc:	00000000 	nop
  47c0d0:	00621021 	addu	v0,v1,v0
  47c0d4:	afc20024 	sw	v0,36(s8)
  FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
  47c0d8:	8fc30024 	lw	v1,36(s8)
  47c0dc:	8fc20018 	lw	v0,24(s8)
  47c0e0:	00000000 	nop
  47c0e4:	00622024 	and	a0,v1,v0
  47c0e8:	8fc20024 	lw	v0,36(s8)
  47c0ec:	00000000 	nop
  47c0f0:	00021827 	nor	v1,zero,v0
  47c0f4:	8fc2001c 	lw	v0,28(s8)
  47c0f8:	00000000 	nop
  47c0fc:	00621024 	and	v0,v1,v0
  47c100:	00821825 	or	v1,a0,v0
  47c104:	8fc20060 	lw	v0,96(s8)
  47c108:	00000000 	nop
  47c10c:	00621821 	addu	v1,v1,v0
  47c110:	8fc20020 	lw	v0,32(s8)
  47c114:	00000000 	nop
  47c118:	00621021 	addu	v0,v1,v0
  47c11c:	3c01a679 	lui	at,0xa679
  47c120:	3421438e 	ori	at,at,0x438e
  47c124:	00221021 	addu	v0,at,v0
  47c128:	afc20020 	sw	v0,32(s8)
  47c12c:	8fc20020 	lw	v0,32(s8)
  47c130:	00000000 	nop
  47c134:	00021c40 	sll	v1,v0,0x11
  47c138:	000213c2 	srl	v0,v0,0xf
  47c13c:	00621025 	or	v0,v1,v0
  47c140:	afc20020 	sw	v0,32(s8)
  47c144:	8fc30020 	lw	v1,32(s8)
  47c148:	8fc20024 	lw	v0,36(s8)
  47c14c:	00000000 	nop
  47c150:	00621021 	addu	v0,v1,v0
  47c154:	afc20020 	sw	v0,32(s8)
  FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
  47c158:	8fc30020 	lw	v1,32(s8)
  47c15c:	8fc20024 	lw	v0,36(s8)
  47c160:	00000000 	nop
  47c164:	00622024 	and	a0,v1,v0
  47c168:	8fc20020 	lw	v0,32(s8)
  47c16c:	00000000 	nop
  47c170:	00021827 	nor	v1,zero,v0
  47c174:	8fc20018 	lw	v0,24(s8)
  47c178:	00000000 	nop
  47c17c:	00621024 	and	v0,v1,v0
  47c180:	00821825 	or	v1,a0,v0
  47c184:	8fc20064 	lw	v0,100(s8)
  47c188:	00000000 	nop
  47c18c:	00621821 	addu	v1,v1,v0
  47c190:	8fc2001c 	lw	v0,28(s8)
  47c194:	00000000 	nop
  47c198:	00621021 	addu	v0,v1,v0
  47c19c:	3c0149b4 	lui	at,0x49b4
  47c1a0:	34210821 	ori	at,at,0x821
  47c1a4:	00221021 	addu	v0,at,v0
  47c1a8:	afc2001c 	sw	v0,28(s8)
  47c1ac:	8fc2001c 	lw	v0,28(s8)
  47c1b0:	00000000 	nop
  47c1b4:	00021d80 	sll	v1,v0,0x16
  47c1b8:	00021282 	srl	v0,v0,0xa
  47c1bc:	00621025 	or	v0,v1,v0
  47c1c0:	afc2001c 	sw	v0,28(s8)
  47c1c4:	8fc3001c 	lw	v1,28(s8)
  47c1c8:	8fc20020 	lw	v0,32(s8)
  47c1cc:	00000000 	nop
  47c1d0:	00621021 	addu	v0,v1,v0
  47c1d4:	afc2001c 	sw	v0,28(s8)

 /* Round 2 */
  GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
  47c1d8:	8fc3001c 	lw	v1,28(s8)
  47c1dc:	8fc20024 	lw	v0,36(s8)
  47c1e0:	00000000 	nop
  47c1e4:	00622024 	and	a0,v1,v0
  47c1e8:	8fc20024 	lw	v0,36(s8)
  47c1ec:	00000000 	nop
  47c1f0:	00021827 	nor	v1,zero,v0
  47c1f4:	8fc20020 	lw	v0,32(s8)
  47c1f8:	00000000 	nop
  47c1fc:	00621024 	and	v0,v1,v0
  47c200:	00821825 	or	v1,a0,v0
  47c204:	8fc2002c 	lw	v0,44(s8)
  47c208:	00000000 	nop
  47c20c:	00621821 	addu	v1,v1,v0
  47c210:	8fc20018 	lw	v0,24(s8)
  47c214:	00000000 	nop
  47c218:	00621021 	addu	v0,v1,v0
  47c21c:	3c01f61e 	lui	at,0xf61e
  47c220:	34212562 	ori	at,at,0x2562
  47c224:	00221021 	addu	v0,at,v0
  47c228:	afc20018 	sw	v0,24(s8)
  47c22c:	8fc20018 	lw	v0,24(s8)
  47c230:	00000000 	nop
  47c234:	00021940 	sll	v1,v0,0x5
  47c238:	000216c2 	srl	v0,v0,0x1b
  47c23c:	00621025 	or	v0,v1,v0
  47c240:	afc20018 	sw	v0,24(s8)
  47c244:	8fc30018 	lw	v1,24(s8)
  47c248:	8fc2001c 	lw	v0,28(s8)
  47c24c:	00000000 	nop
  47c250:	00621021 	addu	v0,v1,v0
  47c254:	afc20018 	sw	v0,24(s8)
  GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
  47c258:	8fc30018 	lw	v1,24(s8)
  47c25c:	8fc20020 	lw	v0,32(s8)
  47c260:	00000000 	nop
  47c264:	00622024 	and	a0,v1,v0
  47c268:	8fc20020 	lw	v0,32(s8)
  47c26c:	00000000 	nop
  47c270:	00021827 	nor	v1,zero,v0
  47c274:	8fc2001c 	lw	v0,28(s8)
  47c278:	00000000 	nop
  47c27c:	00621024 	and	v0,v1,v0
  47c280:	00821825 	or	v1,a0,v0
  47c284:	8fc20040 	lw	v0,64(s8)
  47c288:	00000000 	nop
  47c28c:	00621821 	addu	v1,v1,v0
  47c290:	8fc20024 	lw	v0,36(s8)
  47c294:	00000000 	nop
  47c298:	00621021 	addu	v0,v1,v0
  47c29c:	3c01c040 	lui	at,0xc040
  47c2a0:	3421b340 	ori	at,at,0xb340
  47c2a4:	00221021 	addu	v0,at,v0
  47c2a8:	afc20024 	sw	v0,36(s8)
  47c2ac:	8fc20024 	lw	v0,36(s8)
  47c2b0:	00000000 	nop
  47c2b4:	00021a40 	sll	v1,v0,0x9
  47c2b8:	000215c2 	srl	v0,v0,0x17
  47c2bc:	00621025 	or	v0,v1,v0
  47c2c0:	afc20024 	sw	v0,36(s8)
  47c2c4:	8fc30024 	lw	v1,36(s8)
  47c2c8:	8fc20018 	lw	v0,24(s8)
  47c2cc:	00000000 	nop
  47c2d0:	00621021 	addu	v0,v1,v0
  47c2d4:	afc20024 	sw	v0,36(s8)
  GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
  47c2d8:	8fc30024 	lw	v1,36(s8)
  47c2dc:	8fc2001c 	lw	v0,28(s8)
  47c2e0:	00000000 	nop
  47c2e4:	00622024 	and	a0,v1,v0
  47c2e8:	8fc2001c 	lw	v0,28(s8)
  47c2ec:	00000000 	nop
  47c2f0:	00021827 	nor	v1,zero,v0
  47c2f4:	8fc20018 	lw	v0,24(s8)
  47c2f8:	00000000 	nop
  47c2fc:	00621024 	and	v0,v1,v0
  47c300:	00821825 	or	v1,a0,v0
  47c304:	8fc20054 	lw	v0,84(s8)
  47c308:	00000000 	nop
  47c30c:	00621821 	addu	v1,v1,v0
  47c310:	8fc20020 	lw	v0,32(s8)
  47c314:	00000000 	nop
  47c318:	00621021 	addu	v0,v1,v0
  47c31c:	3c01265e 	lui	at,0x265e
  47c320:	34215a51 	ori	at,at,0x5a51
  47c324:	00221021 	addu	v0,at,v0
  47c328:	afc20020 	sw	v0,32(s8)
  47c32c:	8fc20020 	lw	v0,32(s8)
  47c330:	00000000 	nop
  47c334:	00021b80 	sll	v1,v0,0xe
  47c338:	00021482 	srl	v0,v0,0x12
  47c33c:	00621025 	or	v0,v1,v0
  47c340:	afc20020 	sw	v0,32(s8)
  47c344:	8fc30020 	lw	v1,32(s8)
  47c348:	8fc20024 	lw	v0,36(s8)
  47c34c:	00000000 	nop
  47c350:	00621021 	addu	v0,v1,v0
  47c354:	afc20020 	sw	v0,32(s8)
  GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
  47c358:	8fc30020 	lw	v1,32(s8)
  47c35c:	8fc20018 	lw	v0,24(s8)
  47c360:	00000000 	nop
  47c364:	00622024 	and	a0,v1,v0
  47c368:	8fc20018 	lw	v0,24(s8)
  47c36c:	00000000 	nop
  47c370:	00021827 	nor	v1,zero,v0
  47c374:	8fc20024 	lw	v0,36(s8)
  47c378:	00000000 	nop
  47c37c:	00621024 	and	v0,v1,v0
  47c380:	00821825 	or	v1,a0,v0
  47c384:	8fc20028 	lw	v0,40(s8)
  47c388:	00000000 	nop
  47c38c:	00621821 	addu	v1,v1,v0
  47c390:	8fc2001c 	lw	v0,28(s8)
  47c394:	00000000 	nop
  47c398:	00621021 	addu	v0,v1,v0
  47c39c:	3c01e9b6 	lui	at,0xe9b6
  47c3a0:	3421c7aa 	ori	at,at,0xc7aa
  47c3a4:	00221021 	addu	v0,at,v0
  47c3a8:	afc2001c 	sw	v0,28(s8)
  47c3ac:	8fc2001c 	lw	v0,28(s8)
  47c3b0:	00000000 	nop
  47c3b4:	00021d00 	sll	v1,v0,0x14
  47c3b8:	00021302 	srl	v0,v0,0xc
  47c3bc:	00621025 	or	v0,v1,v0
  47c3c0:	afc2001c 	sw	v0,28(s8)
  47c3c4:	8fc3001c 	lw	v1,28(s8)
  47c3c8:	8fc20020 	lw	v0,32(s8)
  47c3cc:	00000000 	nop
  47c3d0:	00621021 	addu	v0,v1,v0
  47c3d4:	afc2001c 	sw	v0,28(s8)
  GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
  47c3d8:	8fc3001c 	lw	v1,28(s8)
  47c3dc:	8fc20024 	lw	v0,36(s8)
  47c3e0:	00000000 	nop
  47c3e4:	00622024 	and	a0,v1,v0
  47c3e8:	8fc20024 	lw	v0,36(s8)
  47c3ec:	00000000 	nop
  47c3f0:	00021827 	nor	v1,zero,v0
  47c3f4:	8fc20020 	lw	v0,32(s8)
  47c3f8:	00000000 	nop
  47c3fc:	00621024 	and	v0,v1,v0
  47c400:	00821825 	or	v1,a0,v0
  47c404:	8fc2003c 	lw	v0,60(s8)
  47c408:	00000000 	nop
  47c40c:	00621821 	addu	v1,v1,v0
  47c410:	8fc20018 	lw	v0,24(s8)
  47c414:	00000000 	nop
  47c418:	00621021 	addu	v0,v1,v0
  47c41c:	3c01d62f 	lui	at,0xd62f
  47c420:	3421105d 	ori	at,at,0x105d
  47c424:	00221021 	addu	v0,at,v0
  47c428:	afc20018 	sw	v0,24(s8)
  47c42c:	8fc20018 	lw	v0,24(s8)
  47c430:	00000000 	nop
  47c434:	00021940 	sll	v1,v0,0x5
  47c438:	000216c2 	srl	v0,v0,0x1b
  47c43c:	00621025 	or	v0,v1,v0
  47c440:	afc20018 	sw	v0,24(s8)
  47c444:	8fc30018 	lw	v1,24(s8)
  47c448:	8fc2001c 	lw	v0,28(s8)
  47c44c:	00000000 	nop
  47c450:	00621021 	addu	v0,v1,v0
  47c454:	afc20018 	sw	v0,24(s8)
  GG (d, a, b, c, x[10], S22,  0x2441453); /* 22 */
  47c458:	8fc30018 	lw	v1,24(s8)
  47c45c:	8fc20020 	lw	v0,32(s8)
  47c460:	00000000 	nop
  47c464:	00622024 	and	a0,v1,v0
  47c468:	8fc20020 	lw	v0,32(s8)
  47c46c:	00000000 	nop
  47c470:	00021827 	nor	v1,zero,v0
  47c474:	8fc2001c 	lw	v0,28(s8)
  47c478:	00000000 	nop
  47c47c:	00621024 	and	v0,v1,v0
  47c480:	00821825 	or	v1,a0,v0
  47c484:	8fc20050 	lw	v0,80(s8)
  47c488:	00000000 	nop
  47c48c:	00621821 	addu	v1,v1,v0
  47c490:	8fc20024 	lw	v0,36(s8)
  47c494:	00000000 	nop
  47c498:	00621021 	addu	v0,v1,v0
  47c49c:	3c010244 	lui	at,0x244
  47c4a0:	34211453 	ori	at,at,0x1453
  47c4a4:	00221021 	addu	v0,at,v0
  47c4a8:	afc20024 	sw	v0,36(s8)
  47c4ac:	8fc20024 	lw	v0,36(s8)
  47c4b0:	00000000 	nop
  47c4b4:	00021a40 	sll	v1,v0,0x9
  47c4b8:	000215c2 	srl	v0,v0,0x17
  47c4bc:	00621025 	or	v0,v1,v0
  47c4c0:	afc20024 	sw	v0,36(s8)
  47c4c4:	8fc30024 	lw	v1,36(s8)
  47c4c8:	8fc20018 	lw	v0,24(s8)
  47c4cc:	00000000 	nop
  47c4d0:	00621021 	addu	v0,v1,v0
  47c4d4:	afc20024 	sw	v0,36(s8)
  GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
  47c4d8:	8fc30024 	lw	v1,36(s8)
  47c4dc:	8fc2001c 	lw	v0,28(s8)
  47c4e0:	00000000 	nop
  47c4e4:	00622024 	and	a0,v1,v0
  47c4e8:	8fc2001c 	lw	v0,28(s8)
  47c4ec:	00000000 	nop
  47c4f0:	00021827 	nor	v1,zero,v0
  47c4f4:	8fc20018 	lw	v0,24(s8)
  47c4f8:	00000000 	nop
  47c4fc:	00621024 	and	v0,v1,v0
  47c500:	00821825 	or	v1,a0,v0
  47c504:	8fc20064 	lw	v0,100(s8)
  47c508:	00000000 	nop
  47c50c:	00621821 	addu	v1,v1,v0
  47c510:	8fc20020 	lw	v0,32(s8)
  47c514:	00000000 	nop
  47c518:	00621021 	addu	v0,v1,v0
  47c51c:	3c01d8a1 	lui	at,0xd8a1
  47c520:	3421e681 	ori	at,at,0xe681
  47c524:	00221021 	addu	v0,at,v0
  47c528:	afc20020 	sw	v0,32(s8)
  47c52c:	8fc20020 	lw	v0,32(s8)
  47c530:	00000000 	nop
  47c534:	00021b80 	sll	v1,v0,0xe
  47c538:	00021482 	srl	v0,v0,0x12
  47c53c:	00621025 	or	v0,v1,v0
  47c540:	afc20020 	sw	v0,32(s8)
  47c544:	8fc30020 	lw	v1,32(s8)
  47c548:	8fc20024 	lw	v0,36(s8)
  47c54c:	00000000 	nop
  47c550:	00621021 	addu	v0,v1,v0
  47c554:	afc20020 	sw	v0,32(s8)
  GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
  47c558:	8fc30020 	lw	v1,32(s8)
  47c55c:	8fc20018 	lw	v0,24(s8)
  47c560:	00000000 	nop
  47c564:	00622024 	and	a0,v1,v0
  47c568:	8fc20018 	lw	v0,24(s8)
  47c56c:	00000000 	nop
  47c570:	00021827 	nor	v1,zero,v0
  47c574:	8fc20024 	lw	v0,36(s8)
  47c578:	00000000 	nop
  47c57c:	00621024 	and	v0,v1,v0
  47c580:	00821825 	or	v1,a0,v0
  47c584:	8fc20038 	lw	v0,56(s8)
  47c588:	00000000 	nop
  47c58c:	00621821 	addu	v1,v1,v0
  47c590:	8fc2001c 	lw	v0,28(s8)
  47c594:	00000000 	nop
  47c598:	00621021 	addu	v0,v1,v0
  47c59c:	3c01e7d3 	lui	at,0xe7d3
  47c5a0:	3421fbc8 	ori	at,at,0xfbc8
  47c5a4:	00221021 	addu	v0,at,v0
  47c5a8:	afc2001c 	sw	v0,28(s8)
  47c5ac:	8fc2001c 	lw	v0,28(s8)
  47c5b0:	00000000 	nop
  47c5b4:	00021d00 	sll	v1,v0,0x14
  47c5b8:	00021302 	srl	v0,v0,0xc
  47c5bc:	00621025 	or	v0,v1,v0
  47c5c0:	afc2001c 	sw	v0,28(s8)
  47c5c4:	8fc3001c 	lw	v1,28(s8)
  47c5c8:	8fc20020 	lw	v0,32(s8)
  47c5cc:	00000000 	nop
  47c5d0:	00621021 	addu	v0,v1,v0
  47c5d4:	afc2001c 	sw	v0,28(s8)
  GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
  47c5d8:	8fc3001c 	lw	v1,28(s8)
  47c5dc:	8fc20024 	lw	v0,36(s8)
  47c5e0:	00000000 	nop
  47c5e4:	00622024 	and	a0,v1,v0
  47c5e8:	8fc20024 	lw	v0,36(s8)
  47c5ec:	00000000 	nop
  47c5f0:	00021827 	nor	v1,zero,v0
  47c5f4:	8fc20020 	lw	v0,32(s8)
  47c5f8:	00000000 	nop
  47c5fc:	00621024 	and	v0,v1,v0
  47c600:	00821825 	or	v1,a0,v0
  47c604:	8fc2004c 	lw	v0,76(s8)
  47c608:	00000000 	nop
  47c60c:	00621821 	addu	v1,v1,v0
  47c610:	8fc20018 	lw	v0,24(s8)
  47c614:	00000000 	nop
  47c618:	00621021 	addu	v0,v1,v0
  47c61c:	3c0121e1 	lui	at,0x21e1
  47c620:	3421cde6 	ori	at,at,0xcde6
  47c624:	00221021 	addu	v0,at,v0
  47c628:	afc20018 	sw	v0,24(s8)
  47c62c:	8fc20018 	lw	v0,24(s8)
  47c630:	00000000 	nop
  47c634:	00021940 	sll	v1,v0,0x5
  47c638:	000216c2 	srl	v0,v0,0x1b
  47c63c:	00621025 	or	v0,v1,v0
  47c640:	afc20018 	sw	v0,24(s8)
  47c644:	8fc30018 	lw	v1,24(s8)
  47c648:	8fc2001c 	lw	v0,28(s8)
  47c64c:	00000000 	nop
  47c650:	00621021 	addu	v0,v1,v0
  47c654:	afc20018 	sw	v0,24(s8)
  GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
  47c658:	8fc30018 	lw	v1,24(s8)
  47c65c:	8fc20020 	lw	v0,32(s8)
  47c660:	00000000 	nop
  47c664:	00622024 	and	a0,v1,v0
  47c668:	8fc20020 	lw	v0,32(s8)
  47c66c:	00000000 	nop
  47c670:	00021827 	nor	v1,zero,v0
  47c674:	8fc2001c 	lw	v0,28(s8)
  47c678:	00000000 	nop
  47c67c:	00621024 	and	v0,v1,v0
  47c680:	00821825 	or	v1,a0,v0
  47c684:	8fc20060 	lw	v0,96(s8)
  47c688:	00000000 	nop
  47c68c:	00621821 	addu	v1,v1,v0
  47c690:	8fc20024 	lw	v0,36(s8)
  47c694:	00000000 	nop
  47c698:	00621021 	addu	v0,v1,v0
  47c69c:	3c01c337 	lui	at,0xc337
  47c6a0:	342107d6 	ori	at,at,0x7d6
  47c6a4:	00221021 	addu	v0,at,v0
  47c6a8:	afc20024 	sw	v0,36(s8)
  47c6ac:	8fc20024 	lw	v0,36(s8)
  47c6b0:	00000000 	nop
  47c6b4:	00021a40 	sll	v1,v0,0x9
  47c6b8:	000215c2 	srl	v0,v0,0x17
  47c6bc:	00621025 	or	v0,v1,v0
  47c6c0:	afc20024 	sw	v0,36(s8)
  47c6c4:	8fc30024 	lw	v1,36(s8)
  47c6c8:	8fc20018 	lw	v0,24(s8)
  47c6cc:	00000000 	nop
  47c6d0:	00621021 	addu	v0,v1,v0
  47c6d4:	afc20024 	sw	v0,36(s8)
  GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
  47c6d8:	8fc30024 	lw	v1,36(s8)
  47c6dc:	8fc2001c 	lw	v0,28(s8)
  47c6e0:	00000000 	nop
  47c6e4:	00622024 	and	a0,v1,v0
  47c6e8:	8fc2001c 	lw	v0,28(s8)
  47c6ec:	00000000 	nop
  47c6f0:	00021827 	nor	v1,zero,v0
  47c6f4:	8fc20018 	lw	v0,24(s8)
  47c6f8:	00000000 	nop
  47c6fc:	00621024 	and	v0,v1,v0
  47c700:	00821825 	or	v1,a0,v0
  47c704:	8fc20034 	lw	v0,52(s8)
  47c708:	00000000 	nop
  47c70c:	00621821 	addu	v1,v1,v0
  47c710:	8fc20020 	lw	v0,32(s8)
  47c714:	00000000 	nop
  47c718:	00621021 	addu	v0,v1,v0
  47c71c:	3c01f4d5 	lui	at,0xf4d5
  47c720:	34210d87 	ori	at,at,0xd87
  47c724:	00221021 	addu	v0,at,v0
  47c728:	afc20020 	sw	v0,32(s8)
  47c72c:	8fc20020 	lw	v0,32(s8)
  47c730:	00000000 	nop
  47c734:	00021b80 	sll	v1,v0,0xe
  47c738:	00021482 	srl	v0,v0,0x12
  47c73c:	00621025 	or	v0,v1,v0
  47c740:	afc20020 	sw	v0,32(s8)
  47c744:	8fc30020 	lw	v1,32(s8)
  47c748:	8fc20024 	lw	v0,36(s8)
  47c74c:	00000000 	nop
  47c750:	00621021 	addu	v0,v1,v0
  47c754:	afc20020 	sw	v0,32(s8)
  GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
  47c758:	8fc30020 	lw	v1,32(s8)
  47c75c:	8fc20018 	lw	v0,24(s8)
  47c760:	00000000 	nop
  47c764:	00622024 	and	a0,v1,v0
  47c768:	8fc20018 	lw	v0,24(s8)
  47c76c:	00000000 	nop
  47c770:	00021827 	nor	v1,zero,v0
  47c774:	8fc20024 	lw	v0,36(s8)
  47c778:	00000000 	nop
  47c77c:	00621024 	and	v0,v1,v0
  47c780:	00821825 	or	v1,a0,v0
  47c784:	8fc20048 	lw	v0,72(s8)
  47c788:	00000000 	nop
  47c78c:	00621821 	addu	v1,v1,v0
  47c790:	8fc2001c 	lw	v0,28(s8)
  47c794:	00000000 	nop
  47c798:	00621021 	addu	v0,v1,v0
  47c79c:	3c01455a 	lui	at,0x455a
  47c7a0:	342114ed 	ori	at,at,0x14ed
  47c7a4:	00221021 	addu	v0,at,v0
  47c7a8:	afc2001c 	sw	v0,28(s8)
  47c7ac:	8fc2001c 	lw	v0,28(s8)
  47c7b0:	00000000 	nop
  47c7b4:	00021d00 	sll	v1,v0,0x14
  47c7b8:	00021302 	srl	v0,v0,0xc
  47c7bc:	00621025 	or	v0,v1,v0
  47c7c0:	afc2001c 	sw	v0,28(s8)
  47c7c4:	8fc3001c 	lw	v1,28(s8)
  47c7c8:	8fc20020 	lw	v0,32(s8)
  47c7cc:	00000000 	nop
  47c7d0:	00621021 	addu	v0,v1,v0
  47c7d4:	afc2001c 	sw	v0,28(s8)
  GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
  47c7d8:	8fc3001c 	lw	v1,28(s8)
  47c7dc:	8fc20024 	lw	v0,36(s8)
  47c7e0:	00000000 	nop
  47c7e4:	00622024 	and	a0,v1,v0
  47c7e8:	8fc20024 	lw	v0,36(s8)
  47c7ec:	00000000 	nop
  47c7f0:	00021827 	nor	v1,zero,v0
  47c7f4:	8fc20020 	lw	v0,32(s8)
  47c7f8:	00000000 	nop
  47c7fc:	00621024 	and	v0,v1,v0
  47c800:	00821825 	or	v1,a0,v0
  47c804:	8fc2005c 	lw	v0,92(s8)
  47c808:	00000000 	nop
  47c80c:	00621821 	addu	v1,v1,v0
  47c810:	8fc20018 	lw	v0,24(s8)
  47c814:	00000000 	nop
  47c818:	00621021 	addu	v0,v1,v0
  47c81c:	3c01a9e3 	lui	at,0xa9e3
  47c820:	3421e905 	ori	at,at,0xe905
  47c824:	00221021 	addu	v0,at,v0
  47c828:	afc20018 	sw	v0,24(s8)
  47c82c:	8fc20018 	lw	v0,24(s8)
  47c830:	00000000 	nop
  47c834:	00021940 	sll	v1,v0,0x5
  47c838:	000216c2 	srl	v0,v0,0x1b
  47c83c:	00621025 	or	v0,v1,v0
  47c840:	afc20018 	sw	v0,24(s8)
  47c844:	8fc30018 	lw	v1,24(s8)
  47c848:	8fc2001c 	lw	v0,28(s8)
  47c84c:	00000000 	nop
  47c850:	00621021 	addu	v0,v1,v0
  47c854:	afc20018 	sw	v0,24(s8)
  GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
  47c858:	8fc30018 	lw	v1,24(s8)
  47c85c:	8fc20020 	lw	v0,32(s8)
  47c860:	00000000 	nop
  47c864:	00622024 	and	a0,v1,v0
  47c868:	8fc20020 	lw	v0,32(s8)
  47c86c:	00000000 	nop
  47c870:	00021827 	nor	v1,zero,v0
  47c874:	8fc2001c 	lw	v0,28(s8)
  47c878:	00000000 	nop
  47c87c:	00621024 	and	v0,v1,v0
  47c880:	00821825 	or	v1,a0,v0
  47c884:	8fc20030 	lw	v0,48(s8)
  47c888:	00000000 	nop
  47c88c:	00621821 	addu	v1,v1,v0
  47c890:	8fc20024 	lw	v0,36(s8)
  47c894:	00000000 	nop
  47c898:	00621021 	addu	v0,v1,v0
  47c89c:	3c01fcef 	lui	at,0xfcef
  47c8a0:	3421a3f8 	ori	at,at,0xa3f8
  47c8a4:	00221021 	addu	v0,at,v0
  47c8a8:	afc20024 	sw	v0,36(s8)
  47c8ac:	8fc20024 	lw	v0,36(s8)
  47c8b0:	00000000 	nop
  47c8b4:	00021a40 	sll	v1,v0,0x9
  47c8b8:	000215c2 	srl	v0,v0,0x17
  47c8bc:	00621025 	or	v0,v1,v0
  47c8c0:	afc20024 	sw	v0,36(s8)
  47c8c4:	8fc30024 	lw	v1,36(s8)
  47c8c8:	8fc20018 	lw	v0,24(s8)
  47c8cc:	00000000 	nop
  47c8d0:	00621021 	addu	v0,v1,v0
  47c8d4:	afc20024 	sw	v0,36(s8)
  GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
  47c8d8:	8fc30024 	lw	v1,36(s8)
  47c8dc:	8fc2001c 	lw	v0,28(s8)
  47c8e0:	00000000 	nop
  47c8e4:	00622024 	and	a0,v1,v0
  47c8e8:	8fc2001c 	lw	v0,28(s8)
  47c8ec:	00000000 	nop
  47c8f0:	00021827 	nor	v1,zero,v0
  47c8f4:	8fc20018 	lw	v0,24(s8)
  47c8f8:	00000000 	nop
  47c8fc:	00621024 	and	v0,v1,v0
  47c900:	00821825 	or	v1,a0,v0
  47c904:	8fc20044 	lw	v0,68(s8)
  47c908:	00000000 	nop
  47c90c:	00621821 	addu	v1,v1,v0
  47c910:	8fc20020 	lw	v0,32(s8)
  47c914:	00000000 	nop
  47c918:	00621021 	addu	v0,v1,v0
  47c91c:	3c01676f 	lui	at,0x676f
  47c920:	342102d9 	ori	at,at,0x2d9
  47c924:	00221021 	addu	v0,at,v0
  47c928:	afc20020 	sw	v0,32(s8)
  47c92c:	8fc20020 	lw	v0,32(s8)
  47c930:	00000000 	nop
  47c934:	00021b80 	sll	v1,v0,0xe
  47c938:	00021482 	srl	v0,v0,0x12
  47c93c:	00621025 	or	v0,v1,v0
  47c940:	afc20020 	sw	v0,32(s8)
  47c944:	8fc30020 	lw	v1,32(s8)
  47c948:	8fc20024 	lw	v0,36(s8)
  47c94c:	00000000 	nop
  47c950:	00621021 	addu	v0,v1,v0
  47c954:	afc20020 	sw	v0,32(s8)
  GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
  47c958:	8fc30020 	lw	v1,32(s8)
  47c95c:	8fc20018 	lw	v0,24(s8)
  47c960:	00000000 	nop
  47c964:	00622024 	and	a0,v1,v0
  47c968:	8fc20018 	lw	v0,24(s8)
  47c96c:	00000000 	nop
  47c970:	00021827 	nor	v1,zero,v0
  47c974:	8fc20024 	lw	v0,36(s8)
  47c978:	00000000 	nop
  47c97c:	00621024 	and	v0,v1,v0
  47c980:	00821825 	or	v1,a0,v0
  47c984:	8fc20058 	lw	v0,88(s8)
  47c988:	00000000 	nop
  47c98c:	00621821 	addu	v1,v1,v0
  47c990:	8fc2001c 	lw	v0,28(s8)
  47c994:	00000000 	nop
  47c998:	00621021 	addu	v0,v1,v0
  47c99c:	3c018d2a 	lui	at,0x8d2a
  47c9a0:	34214c8a 	ori	at,at,0x4c8a
  47c9a4:	00221021 	addu	v0,at,v0
  47c9a8:	afc2001c 	sw	v0,28(s8)
  47c9ac:	8fc2001c 	lw	v0,28(s8)
  47c9b0:	00000000 	nop
  47c9b4:	00021d00 	sll	v1,v0,0x14
  47c9b8:	00021302 	srl	v0,v0,0xc
  47c9bc:	00621025 	or	v0,v1,v0
  47c9c0:	afc2001c 	sw	v0,28(s8)
  47c9c4:	8fc3001c 	lw	v1,28(s8)
  47c9c8:	8fc20020 	lw	v0,32(s8)
  47c9cc:	00000000 	nop
  47c9d0:	00621021 	addu	v0,v1,v0
  47c9d4:	afc2001c 	sw	v0,28(s8)

  /* Round 3 */
  HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
  47c9d8:	8fc3001c 	lw	v1,28(s8)
  47c9dc:	8fc20020 	lw	v0,32(s8)
  47c9e0:	00000000 	nop
  47c9e4:	00621826 	xor	v1,v1,v0
  47c9e8:	8fc20024 	lw	v0,36(s8)
  47c9ec:	00000000 	nop
  47c9f0:	00621826 	xor	v1,v1,v0
  47c9f4:	8fc2003c 	lw	v0,60(s8)
  47c9f8:	00000000 	nop
  47c9fc:	00621821 	addu	v1,v1,v0
  47ca00:	8fc20018 	lw	v0,24(s8)
  47ca04:	00000000 	nop
  47ca08:	00621021 	addu	v0,v1,v0
  47ca0c:	3c01fffa 	lui	at,0xfffa
  47ca10:	34213942 	ori	at,at,0x3942
  47ca14:	00221021 	addu	v0,at,v0
  47ca18:	afc20018 	sw	v0,24(s8)
  47ca1c:	8fc20018 	lw	v0,24(s8)
  47ca20:	00000000 	nop
  47ca24:	00021900 	sll	v1,v0,0x4
  47ca28:	00021702 	srl	v0,v0,0x1c
  47ca2c:	00621025 	or	v0,v1,v0
  47ca30:	afc20018 	sw	v0,24(s8)
  47ca34:	8fc30018 	lw	v1,24(s8)
  47ca38:	8fc2001c 	lw	v0,28(s8)
  47ca3c:	00000000 	nop
  47ca40:	00621021 	addu	v0,v1,v0
  47ca44:	afc20018 	sw	v0,24(s8)
  HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
  47ca48:	8fc30018 	lw	v1,24(s8)
  47ca4c:	8fc2001c 	lw	v0,28(s8)
  47ca50:	00000000 	nop
  47ca54:	00621826 	xor	v1,v1,v0
  47ca58:	8fc20020 	lw	v0,32(s8)
  47ca5c:	00000000 	nop
  47ca60:	00621826 	xor	v1,v1,v0
  47ca64:	8fc20048 	lw	v0,72(s8)
  47ca68:	00000000 	nop
  47ca6c:	00621821 	addu	v1,v1,v0
  47ca70:	8fc20024 	lw	v0,36(s8)
  47ca74:	00000000 	nop
  47ca78:	00621021 	addu	v0,v1,v0
  47ca7c:	3c018771 	lui	at,0x8771
  47ca80:	3421f681 	ori	at,at,0xf681
  47ca84:	00221021 	addu	v0,at,v0
  47ca88:	afc20024 	sw	v0,36(s8)
  47ca8c:	8fc20024 	lw	v0,36(s8)
  47ca90:	00000000 	nop
  47ca94:	00021ac0 	sll	v1,v0,0xb
  47ca98:	00021542 	srl	v0,v0,0x15
  47ca9c:	00621025 	or	v0,v1,v0
  47caa0:	afc20024 	sw	v0,36(s8)
  47caa4:	8fc30024 	lw	v1,36(s8)
  47caa8:	8fc20018 	lw	v0,24(s8)
  47caac:	00000000 	nop
  47cab0:	00621021 	addu	v0,v1,v0
  47cab4:	afc20024 	sw	v0,36(s8)
  HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
  47cab8:	8fc30024 	lw	v1,36(s8)
  47cabc:	8fc20018 	lw	v0,24(s8)
  47cac0:	00000000 	nop
  47cac4:	00621826 	xor	v1,v1,v0
  47cac8:	8fc2001c 	lw	v0,28(s8)
  47cacc:	00000000 	nop
  47cad0:	00621826 	xor	v1,v1,v0
  47cad4:	8fc20054 	lw	v0,84(s8)
  47cad8:	00000000 	nop
  47cadc:	00621821 	addu	v1,v1,v0
  47cae0:	8fc20020 	lw	v0,32(s8)
  47cae4:	00000000 	nop
  47cae8:	00621021 	addu	v0,v1,v0
  47caec:	3c016d9d 	lui	at,0x6d9d
  47caf0:	34216122 	ori	at,at,0x6122
  47caf4:	00221021 	addu	v0,at,v0
  47caf8:	afc20020 	sw	v0,32(s8)
  47cafc:	8fc20020 	lw	v0,32(s8)
  47cb00:	00000000 	nop
  47cb04:	00021c00 	sll	v1,v0,0x10
  47cb08:	00021402 	srl	v0,v0,0x10
  47cb0c:	00621025 	or	v0,v1,v0
  47cb10:	afc20020 	sw	v0,32(s8)
  47cb14:	8fc30020 	lw	v1,32(s8)
  47cb18:	8fc20024 	lw	v0,36(s8)
  47cb1c:	00000000 	nop
  47cb20:	00621021 	addu	v0,v1,v0
  47cb24:	afc20020 	sw	v0,32(s8)
  HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
  47cb28:	8fc30020 	lw	v1,32(s8)
  47cb2c:	8fc20024 	lw	v0,36(s8)
  47cb30:	00000000 	nop
  47cb34:	00621826 	xor	v1,v1,v0
  47cb38:	8fc20018 	lw	v0,24(s8)
  47cb3c:	00000000 	nop
  47cb40:	00621826 	xor	v1,v1,v0
  47cb44:	8fc20060 	lw	v0,96(s8)
  47cb48:	00000000 	nop
  47cb4c:	00621821 	addu	v1,v1,v0
  47cb50:	8fc2001c 	lw	v0,28(s8)
  47cb54:	00000000 	nop
  47cb58:	00621021 	addu	v0,v1,v0
  47cb5c:	3c01fde5 	lui	at,0xfde5
  47cb60:	3421380c 	ori	at,at,0x380c
  47cb64:	00221021 	addu	v0,at,v0
  47cb68:	afc2001c 	sw	v0,28(s8)
  47cb6c:	8fc2001c 	lw	v0,28(s8)
  47cb70:	00000000 	nop
  47cb74:	00021dc0 	sll	v1,v0,0x17
  47cb78:	00021242 	srl	v0,v0,0x9
  47cb7c:	00621025 	or	v0,v1,v0
  47cb80:	afc2001c 	sw	v0,28(s8)
  47cb84:	8fc3001c 	lw	v1,28(s8)
  47cb88:	8fc20020 	lw	v0,32(s8)
  47cb8c:	00000000 	nop
  47cb90:	00621021 	addu	v0,v1,v0
  47cb94:	afc2001c 	sw	v0,28(s8)
  HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
  47cb98:	8fc3001c 	lw	v1,28(s8)
  47cb9c:	8fc20020 	lw	v0,32(s8)
  47cba0:	00000000 	nop
  47cba4:	00621826 	xor	v1,v1,v0
  47cba8:	8fc20024 	lw	v0,36(s8)
  47cbac:	00000000 	nop
  47cbb0:	00621826 	xor	v1,v1,v0
  47cbb4:	8fc2002c 	lw	v0,44(s8)
  47cbb8:	00000000 	nop
  47cbbc:	00621821 	addu	v1,v1,v0
  47cbc0:	8fc20018 	lw	v0,24(s8)
  47cbc4:	00000000 	nop
  47cbc8:	00621021 	addu	v0,v1,v0
  47cbcc:	3c01a4be 	lui	at,0xa4be
  47cbd0:	3421ea44 	ori	at,at,0xea44
  47cbd4:	00221021 	addu	v0,at,v0
  47cbd8:	afc20018 	sw	v0,24(s8)
  47cbdc:	8fc20018 	lw	v0,24(s8)
  47cbe0:	00000000 	nop
  47cbe4:	00021900 	sll	v1,v0,0x4
  47cbe8:	00021702 	srl	v0,v0,0x1c
  47cbec:	00621025 	or	v0,v1,v0
  47cbf0:	afc20018 	sw	v0,24(s8)
  47cbf4:	8fc30018 	lw	v1,24(s8)
  47cbf8:	8fc2001c 	lw	v0,28(s8)
  47cbfc:	00000000 	nop
  47cc00:	00621021 	addu	v0,v1,v0
  47cc04:	afc20018 	sw	v0,24(s8)
  HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
  47cc08:	8fc30018 	lw	v1,24(s8)
  47cc0c:	8fc2001c 	lw	v0,28(s8)
  47cc10:	00000000 	nop
  47cc14:	00621826 	xor	v1,v1,v0
  47cc18:	8fc20020 	lw	v0,32(s8)
  47cc1c:	00000000 	nop
  47cc20:	00621826 	xor	v1,v1,v0
  47cc24:	8fc20038 	lw	v0,56(s8)
  47cc28:	00000000 	nop
  47cc2c:	00621821 	addu	v1,v1,v0
  47cc30:	8fc20024 	lw	v0,36(s8)
  47cc34:	00000000 	nop
  47cc38:	00621021 	addu	v0,v1,v0
  47cc3c:	3c014bde 	lui	at,0x4bde
  47cc40:	3421cfa9 	ori	at,at,0xcfa9
  47cc44:	00221021 	addu	v0,at,v0
  47cc48:	afc20024 	sw	v0,36(s8)
  47cc4c:	8fc20024 	lw	v0,36(s8)
  47cc50:	00000000 	nop
  47cc54:	00021ac0 	sll	v1,v0,0xb
  47cc58:	00021542 	srl	v0,v0,0x15
  47cc5c:	00621025 	or	v0,v1,v0
  47cc60:	afc20024 	sw	v0,36(s8)
  47cc64:	8fc30024 	lw	v1,36(s8)
  47cc68:	8fc20018 	lw	v0,24(s8)
  47cc6c:	00000000 	nop
  47cc70:	00621021 	addu	v0,v1,v0
  47cc74:	afc20024 	sw	v0,36(s8)
  HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
  47cc78:	8fc30024 	lw	v1,36(s8)
  47cc7c:	8fc20018 	lw	v0,24(s8)
  47cc80:	00000000 	nop
  47cc84:	00621826 	xor	v1,v1,v0
  47cc88:	8fc2001c 	lw	v0,28(s8)
  47cc8c:	00000000 	nop
  47cc90:	00621826 	xor	v1,v1,v0
  47cc94:	8fc20044 	lw	v0,68(s8)
  47cc98:	00000000 	nop
  47cc9c:	00621821 	addu	v1,v1,v0
  47cca0:	8fc20020 	lw	v0,32(s8)
  47cca4:	00000000 	nop
  47cca8:	00621021 	addu	v0,v1,v0
  47ccac:	3c01f6bb 	lui	at,0xf6bb
  47ccb0:	34214b60 	ori	at,at,0x4b60
  47ccb4:	00221021 	addu	v0,at,v0
  47ccb8:	afc20020 	sw	v0,32(s8)
  47ccbc:	8fc20020 	lw	v0,32(s8)
  47ccc0:	00000000 	nop
  47ccc4:	00021c00 	sll	v1,v0,0x10
  47ccc8:	00021402 	srl	v0,v0,0x10
  47cccc:	00621025 	or	v0,v1,v0
  47ccd0:	afc20020 	sw	v0,32(s8)
  47ccd4:	8fc30020 	lw	v1,32(s8)
  47ccd8:	8fc20024 	lw	v0,36(s8)
  47ccdc:	00000000 	nop
  47cce0:	00621021 	addu	v0,v1,v0
  47cce4:	afc20020 	sw	v0,32(s8)
  HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
  47cce8:	8fc30020 	lw	v1,32(s8)
  47ccec:	8fc20024 	lw	v0,36(s8)
  47ccf0:	00000000 	nop
  47ccf4:	00621826 	xor	v1,v1,v0
  47ccf8:	8fc20018 	lw	v0,24(s8)
  47ccfc:	00000000 	nop
  47cd00:	00621826 	xor	v1,v1,v0
  47cd04:	8fc20050 	lw	v0,80(s8)
  47cd08:	00000000 	nop
  47cd0c:	00621821 	addu	v1,v1,v0
  47cd10:	8fc2001c 	lw	v0,28(s8)
  47cd14:	00000000 	nop
  47cd18:	00621021 	addu	v0,v1,v0
  47cd1c:	3c01bebf 	lui	at,0xbebf
  47cd20:	3421bc70 	ori	at,at,0xbc70
  47cd24:	00221021 	addu	v0,at,v0
  47cd28:	afc2001c 	sw	v0,28(s8)
  47cd2c:	8fc2001c 	lw	v0,28(s8)
  47cd30:	00000000 	nop
  47cd34:	00021dc0 	sll	v1,v0,0x17
  47cd38:	00021242 	srl	v0,v0,0x9
  47cd3c:	00621025 	or	v0,v1,v0
  47cd40:	afc2001c 	sw	v0,28(s8)
  47cd44:	8fc3001c 	lw	v1,28(s8)
  47cd48:	8fc20020 	lw	v0,32(s8)
  47cd4c:	00000000 	nop
  47cd50:	00621021 	addu	v0,v1,v0
  47cd54:	afc2001c 	sw	v0,28(s8)
  HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
  47cd58:	8fc3001c 	lw	v1,28(s8)
  47cd5c:	8fc20020 	lw	v0,32(s8)
  47cd60:	00000000 	nop
  47cd64:	00621826 	xor	v1,v1,v0
  47cd68:	8fc20024 	lw	v0,36(s8)
  47cd6c:	00000000 	nop
  47cd70:	00621826 	xor	v1,v1,v0
  47cd74:	8fc2005c 	lw	v0,92(s8)
  47cd78:	00000000 	nop
  47cd7c:	00621821 	addu	v1,v1,v0
  47cd80:	8fc20018 	lw	v0,24(s8)
  47cd84:	00000000 	nop
  47cd88:	00621021 	addu	v0,v1,v0
  47cd8c:	3c01289b 	lui	at,0x289b
  47cd90:	34217ec6 	ori	at,at,0x7ec6
  47cd94:	00221021 	addu	v0,at,v0
  47cd98:	afc20018 	sw	v0,24(s8)
  47cd9c:	8fc20018 	lw	v0,24(s8)
  47cda0:	00000000 	nop
  47cda4:	00021900 	sll	v1,v0,0x4
  47cda8:	00021702 	srl	v0,v0,0x1c
  47cdac:	00621025 	or	v0,v1,v0
  47cdb0:	afc20018 	sw	v0,24(s8)
  47cdb4:	8fc30018 	lw	v1,24(s8)
  47cdb8:	8fc2001c 	lw	v0,28(s8)
  47cdbc:	00000000 	nop
  47cdc0:	00621021 	addu	v0,v1,v0
  47cdc4:	afc20018 	sw	v0,24(s8)
  HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
  47cdc8:	8fc30018 	lw	v1,24(s8)
  47cdcc:	8fc2001c 	lw	v0,28(s8)
  47cdd0:	00000000 	nop
  47cdd4:	00621826 	xor	v1,v1,v0
  47cdd8:	8fc20020 	lw	v0,32(s8)
  47cddc:	00000000 	nop
  47cde0:	00621826 	xor	v1,v1,v0
  47cde4:	8fc20028 	lw	v0,40(s8)
  47cde8:	00000000 	nop
  47cdec:	00621821 	addu	v1,v1,v0
  47cdf0:	8fc20024 	lw	v0,36(s8)
  47cdf4:	00000000 	nop
  47cdf8:	00621021 	addu	v0,v1,v0
  47cdfc:	3c01eaa1 	lui	at,0xeaa1
  47ce00:	342127fa 	ori	at,at,0x27fa
  47ce04:	00221021 	addu	v0,at,v0
  47ce08:	afc20024 	sw	v0,36(s8)
  47ce0c:	8fc20024 	lw	v0,36(s8)
  47ce10:	00000000 	nop
  47ce14:	00021ac0 	sll	v1,v0,0xb
  47ce18:	00021542 	srl	v0,v0,0x15
  47ce1c:	00621025 	or	v0,v1,v0
  47ce20:	afc20024 	sw	v0,36(s8)
  47ce24:	8fc30024 	lw	v1,36(s8)
  47ce28:	8fc20018 	lw	v0,24(s8)
  47ce2c:	00000000 	nop
  47ce30:	00621021 	addu	v0,v1,v0
  47ce34:	afc20024 	sw	v0,36(s8)
  HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
  47ce38:	8fc30024 	lw	v1,36(s8)
  47ce3c:	8fc20018 	lw	v0,24(s8)
  47ce40:	00000000 	nop
  47ce44:	00621826 	xor	v1,v1,v0
  47ce48:	8fc2001c 	lw	v0,28(s8)
  47ce4c:	00000000 	nop
  47ce50:	00621826 	xor	v1,v1,v0
  47ce54:	8fc20034 	lw	v0,52(s8)
  47ce58:	00000000 	nop
  47ce5c:	00621821 	addu	v1,v1,v0
  47ce60:	8fc20020 	lw	v0,32(s8)
  47ce64:	00000000 	nop
  47ce68:	00621021 	addu	v0,v1,v0
  47ce6c:	3c01d4ef 	lui	at,0xd4ef
  47ce70:	34213085 	ori	at,at,0x3085
  47ce74:	00221021 	addu	v0,at,v0
  47ce78:	afc20020 	sw	v0,32(s8)
  47ce7c:	8fc20020 	lw	v0,32(s8)
  47ce80:	00000000 	nop
  47ce84:	00021c00 	sll	v1,v0,0x10
  47ce88:	00021402 	srl	v0,v0,0x10
  47ce8c:	00621025 	or	v0,v1,v0
  47ce90:	afc20020 	sw	v0,32(s8)
  47ce94:	8fc30020 	lw	v1,32(s8)
  47ce98:	8fc20024 	lw	v0,36(s8)
  47ce9c:	00000000 	nop
  47cea0:	00621021 	addu	v0,v1,v0
  47cea4:	afc20020 	sw	v0,32(s8)
  HH (b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
  47cea8:	8fc30020 	lw	v1,32(s8)
  47ceac:	8fc20024 	lw	v0,36(s8)
  47ceb0:	00000000 	nop
  47ceb4:	00621826 	xor	v1,v1,v0
  47ceb8:	8fc20018 	lw	v0,24(s8)
  47cebc:	00000000 	nop
  47cec0:	00621826 	xor	v1,v1,v0
  47cec4:	8fc20040 	lw	v0,64(s8)
  47cec8:	00000000 	nop
  47cecc:	00621821 	addu	v1,v1,v0
  47ced0:	8fc2001c 	lw	v0,28(s8)
  47ced4:	00000000 	nop
  47ced8:	00621021 	addu	v0,v1,v0
  47cedc:	3c010488 	lui	at,0x488
  47cee0:	34211d05 	ori	at,at,0x1d05
  47cee4:	00221021 	addu	v0,at,v0
  47cee8:	afc2001c 	sw	v0,28(s8)
  47ceec:	8fc2001c 	lw	v0,28(s8)
  47cef0:	00000000 	nop
  47cef4:	00021dc0 	sll	v1,v0,0x17
  47cef8:	00021242 	srl	v0,v0,0x9
  47cefc:	00621025 	or	v0,v1,v0
  47cf00:	afc2001c 	sw	v0,28(s8)
  47cf04:	8fc3001c 	lw	v1,28(s8)
  47cf08:	8fc20020 	lw	v0,32(s8)
  47cf0c:	00000000 	nop
  47cf10:	00621021 	addu	v0,v1,v0
  47cf14:	afc2001c 	sw	v0,28(s8)
  HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
  47cf18:	8fc3001c 	lw	v1,28(s8)
  47cf1c:	8fc20020 	lw	v0,32(s8)
  47cf20:	00000000 	nop
  47cf24:	00621826 	xor	v1,v1,v0
  47cf28:	8fc20024 	lw	v0,36(s8)
  47cf2c:	00000000 	nop
  47cf30:	00621826 	xor	v1,v1,v0
  47cf34:	8fc2004c 	lw	v0,76(s8)
  47cf38:	00000000 	nop
  47cf3c:	00621821 	addu	v1,v1,v0
  47cf40:	8fc20018 	lw	v0,24(s8)
  47cf44:	00000000 	nop
  47cf48:	00621021 	addu	v0,v1,v0
  47cf4c:	3c01d9d4 	lui	at,0xd9d4
  47cf50:	3421d039 	ori	at,at,0xd039
  47cf54:	00221021 	addu	v0,at,v0
  47cf58:	afc20018 	sw	v0,24(s8)
  47cf5c:	8fc20018 	lw	v0,24(s8)
  47cf60:	00000000 	nop
  47cf64:	00021900 	sll	v1,v0,0x4
  47cf68:	00021702 	srl	v0,v0,0x1c
  47cf6c:	00621025 	or	v0,v1,v0
  47cf70:	afc20018 	sw	v0,24(s8)
  47cf74:	8fc30018 	lw	v1,24(s8)
  47cf78:	8fc2001c 	lw	v0,28(s8)
  47cf7c:	00000000 	nop
  47cf80:	00621021 	addu	v0,v1,v0
  47cf84:	afc20018 	sw	v0,24(s8)
  HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
  47cf88:	8fc30018 	lw	v1,24(s8)
  47cf8c:	8fc2001c 	lw	v0,28(s8)
  47cf90:	00000000 	nop
  47cf94:	00621826 	xor	v1,v1,v0
  47cf98:	8fc20020 	lw	v0,32(s8)
  47cf9c:	00000000 	nop
  47cfa0:	00621826 	xor	v1,v1,v0
  47cfa4:	8fc20058 	lw	v0,88(s8)
  47cfa8:	00000000 	nop
  47cfac:	00621821 	addu	v1,v1,v0
  47cfb0:	8fc20024 	lw	v0,36(s8)
  47cfb4:	00000000 	nop
  47cfb8:	00621021 	addu	v0,v1,v0
  47cfbc:	3c01e6db 	lui	at,0xe6db
  47cfc0:	342199e5 	ori	at,at,0x99e5
  47cfc4:	00221021 	addu	v0,at,v0
  47cfc8:	afc20024 	sw	v0,36(s8)
  47cfcc:	8fc20024 	lw	v0,36(s8)
  47cfd0:	00000000 	nop
  47cfd4:	00021ac0 	sll	v1,v0,0xb
  47cfd8:	00021542 	srl	v0,v0,0x15
  47cfdc:	00621025 	or	v0,v1,v0
  47cfe0:	afc20024 	sw	v0,36(s8)
  47cfe4:	8fc30024 	lw	v1,36(s8)
  47cfe8:	8fc20018 	lw	v0,24(s8)
  47cfec:	00000000 	nop
  47cff0:	00621021 	addu	v0,v1,v0
  47cff4:	afc20024 	sw	v0,36(s8)
  HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
  47cff8:	8fc30024 	lw	v1,36(s8)
  47cffc:	8fc20018 	lw	v0,24(s8)
  47d000:	00000000 	nop
  47d004:	00621826 	xor	v1,v1,v0
  47d008:	8fc2001c 	lw	v0,28(s8)
  47d00c:	00000000 	nop
  47d010:	00621826 	xor	v1,v1,v0
  47d014:	8fc20064 	lw	v0,100(s8)
  47d018:	00000000 	nop
  47d01c:	00621821 	addu	v1,v1,v0
  47d020:	8fc20020 	lw	v0,32(s8)
  47d024:	00000000 	nop
  47d028:	00621021 	addu	v0,v1,v0
  47d02c:	3c011fa2 	lui	at,0x1fa2
  47d030:	34217cf8 	ori	at,at,0x7cf8
  47d034:	00221021 	addu	v0,at,v0
  47d038:	afc20020 	sw	v0,32(s8)
  47d03c:	8fc20020 	lw	v0,32(s8)
  47d040:	00000000 	nop
  47d044:	00021c00 	sll	v1,v0,0x10
  47d048:	00021402 	srl	v0,v0,0x10
  47d04c:	00621025 	or	v0,v1,v0
  47d050:	afc20020 	sw	v0,32(s8)
  47d054:	8fc30020 	lw	v1,32(s8)
  47d058:	8fc20024 	lw	v0,36(s8)
  47d05c:	00000000 	nop
  47d060:	00621021 	addu	v0,v1,v0
  47d064:	afc20020 	sw	v0,32(s8)
  HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
  47d068:	8fc30020 	lw	v1,32(s8)
  47d06c:	8fc20024 	lw	v0,36(s8)
  47d070:	00000000 	nop
  47d074:	00621826 	xor	v1,v1,v0
  47d078:	8fc20018 	lw	v0,24(s8)
  47d07c:	00000000 	nop
  47d080:	00621826 	xor	v1,v1,v0
  47d084:	8fc20030 	lw	v0,48(s8)
  47d088:	00000000 	nop
  47d08c:	00621821 	addu	v1,v1,v0
  47d090:	8fc2001c 	lw	v0,28(s8)
  47d094:	00000000 	nop
  47d098:	00621021 	addu	v0,v1,v0
  47d09c:	3c01c4ac 	lui	at,0xc4ac
  47d0a0:	34215665 	ori	at,at,0x5665
  47d0a4:	00221021 	addu	v0,at,v0
  47d0a8:	afc2001c 	sw	v0,28(s8)
  47d0ac:	8fc2001c 	lw	v0,28(s8)
  47d0b0:	00000000 	nop
  47d0b4:	00021dc0 	sll	v1,v0,0x17
  47d0b8:	00021242 	srl	v0,v0,0x9
  47d0bc:	00621025 	or	v0,v1,v0
  47d0c0:	afc2001c 	sw	v0,28(s8)
  47d0c4:	8fc3001c 	lw	v1,28(s8)
  47d0c8:	8fc20020 	lw	v0,32(s8)
  47d0cc:	00000000 	nop
  47d0d0:	00621021 	addu	v0,v1,v0
  47d0d4:	afc2001c 	sw	v0,28(s8)

  /* Round 4 */
  II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
  47d0d8:	8fc20024 	lw	v0,36(s8)
  47d0dc:	00000000 	nop
  47d0e0:	00021827 	nor	v1,zero,v0
  47d0e4:	8fc2001c 	lw	v0,28(s8)
  47d0e8:	00000000 	nop
  47d0ec:	00621825 	or	v1,v1,v0
  47d0f0:	8fc20020 	lw	v0,32(s8)
  47d0f4:	00000000 	nop
  47d0f8:	00621826 	xor	v1,v1,v0
  47d0fc:	8fc20028 	lw	v0,40(s8)
  47d100:	00000000 	nop
  47d104:	00621821 	addu	v1,v1,v0
  47d108:	8fc20018 	lw	v0,24(s8)
  47d10c:	00000000 	nop
  47d110:	00621021 	addu	v0,v1,v0
  47d114:	3c01f429 	lui	at,0xf429
  47d118:	34212244 	ori	at,at,0x2244
  47d11c:	00221021 	addu	v0,at,v0
  47d120:	afc20018 	sw	v0,24(s8)
  47d124:	8fc20018 	lw	v0,24(s8)
  47d128:	00000000 	nop
  47d12c:	00021980 	sll	v1,v0,0x6
  47d130:	00021682 	srl	v0,v0,0x1a
  47d134:	00621025 	or	v0,v1,v0
  47d138:	afc20018 	sw	v0,24(s8)
  47d13c:	8fc30018 	lw	v1,24(s8)
  47d140:	8fc2001c 	lw	v0,28(s8)
  47d144:	00000000 	nop
  47d148:	00621021 	addu	v0,v1,v0
  47d14c:	afc20018 	sw	v0,24(s8)
  II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
  47d150:	8fc20020 	lw	v0,32(s8)
  47d154:	00000000 	nop
  47d158:	00021827 	nor	v1,zero,v0
  47d15c:	8fc20018 	lw	v0,24(s8)
  47d160:	00000000 	nop
  47d164:	00621825 	or	v1,v1,v0
  47d168:	8fc2001c 	lw	v0,28(s8)
  47d16c:	00000000 	nop
  47d170:	00621826 	xor	v1,v1,v0
  47d174:	8fc20044 	lw	v0,68(s8)
  47d178:	00000000 	nop
  47d17c:	00621821 	addu	v1,v1,v0
  47d180:	8fc20024 	lw	v0,36(s8)
  47d184:	00000000 	nop
  47d188:	00621021 	addu	v0,v1,v0
  47d18c:	3c01432a 	lui	at,0x432a
  47d190:	3421ff97 	ori	at,at,0xff97
  47d194:	00221021 	addu	v0,at,v0
  47d198:	afc20024 	sw	v0,36(s8)
  47d19c:	8fc20024 	lw	v0,36(s8)
  47d1a0:	00000000 	nop
  47d1a4:	00021a80 	sll	v1,v0,0xa
  47d1a8:	00021582 	srl	v0,v0,0x16
  47d1ac:	00621025 	or	v0,v1,v0
  47d1b0:	afc20024 	sw	v0,36(s8)
  47d1b4:	8fc30024 	lw	v1,36(s8)
  47d1b8:	8fc20018 	lw	v0,24(s8)
  47d1bc:	00000000 	nop
  47d1c0:	00621021 	addu	v0,v1,v0
  47d1c4:	afc20024 	sw	v0,36(s8)
  II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
  47d1c8:	8fc2001c 	lw	v0,28(s8)
  47d1cc:	00000000 	nop
  47d1d0:	00021827 	nor	v1,zero,v0
  47d1d4:	8fc20024 	lw	v0,36(s8)
  47d1d8:	00000000 	nop
  47d1dc:	00621825 	or	v1,v1,v0
  47d1e0:	8fc20018 	lw	v0,24(s8)
  47d1e4:	00000000 	nop
  47d1e8:	00621826 	xor	v1,v1,v0
  47d1ec:	8fc20060 	lw	v0,96(s8)
  47d1f0:	00000000 	nop
  47d1f4:	00621821 	addu	v1,v1,v0
  47d1f8:	8fc20020 	lw	v0,32(s8)
  47d1fc:	00000000 	nop
  47d200:	00621021 	addu	v0,v1,v0
  47d204:	3c01ab94 	lui	at,0xab94
  47d208:	342123a7 	ori	at,at,0x23a7
  47d20c:	00221021 	addu	v0,at,v0
  47d210:	afc20020 	sw	v0,32(s8)
  47d214:	8fc20020 	lw	v0,32(s8)
  47d218:	00000000 	nop
  47d21c:	00021bc0 	sll	v1,v0,0xf
  47d220:	00021442 	srl	v0,v0,0x11
  47d224:	00621025 	or	v0,v1,v0
  47d228:	afc20020 	sw	v0,32(s8)
  47d22c:	8fc30020 	lw	v1,32(s8)
  47d230:	8fc20024 	lw	v0,36(s8)
  47d234:	00000000 	nop
  47d238:	00621021 	addu	v0,v1,v0
  47d23c:	afc20020 	sw	v0,32(s8)
  II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
  47d240:	8fc20018 	lw	v0,24(s8)
  47d244:	00000000 	nop
  47d248:	00021827 	nor	v1,zero,v0
  47d24c:	8fc20020 	lw	v0,32(s8)
  47d250:	00000000 	nop
  47d254:	00621825 	or	v1,v1,v0
  47d258:	8fc20024 	lw	v0,36(s8)
  47d25c:	00000000 	nop
  47d260:	00621826 	xor	v1,v1,v0
  47d264:	8fc2003c 	lw	v0,60(s8)
  47d268:	00000000 	nop
  47d26c:	00621821 	addu	v1,v1,v0
  47d270:	8fc2001c 	lw	v0,28(s8)
  47d274:	00000000 	nop
  47d278:	00621021 	addu	v0,v1,v0
  47d27c:	3c01fc93 	lui	at,0xfc93
  47d280:	3421a039 	ori	at,at,0xa039
  47d284:	00221021 	addu	v0,at,v0
  47d288:	afc2001c 	sw	v0,28(s8)
  47d28c:	8fc2001c 	lw	v0,28(s8)
  47d290:	00000000 	nop
  47d294:	00021d40 	sll	v1,v0,0x15
  47d298:	000212c2 	srl	v0,v0,0xb
  47d29c:	00621025 	or	v0,v1,v0
  47d2a0:	afc2001c 	sw	v0,28(s8)
  47d2a4:	8fc3001c 	lw	v1,28(s8)
  47d2a8:	8fc20020 	lw	v0,32(s8)
  47d2ac:	00000000 	nop
  47d2b0:	00621021 	addu	v0,v1,v0
  47d2b4:	afc2001c 	sw	v0,28(s8)
  II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
  47d2b8:	8fc20024 	lw	v0,36(s8)
  47d2bc:	00000000 	nop
  47d2c0:	00021827 	nor	v1,zero,v0
  47d2c4:	8fc2001c 	lw	v0,28(s8)
  47d2c8:	00000000 	nop
  47d2cc:	00621825 	or	v1,v1,v0
  47d2d0:	8fc20020 	lw	v0,32(s8)
  47d2d4:	00000000 	nop
  47d2d8:	00621826 	xor	v1,v1,v0
  47d2dc:	8fc20058 	lw	v0,88(s8)
  47d2e0:	00000000 	nop
  47d2e4:	00621821 	addu	v1,v1,v0
  47d2e8:	8fc20018 	lw	v0,24(s8)
  47d2ec:	00000000 	nop
  47d2f0:	00621021 	addu	v0,v1,v0
  47d2f4:	3c01655b 	lui	at,0x655b
  47d2f8:	342159c3 	ori	at,at,0x59c3
  47d2fc:	00221021 	addu	v0,at,v0
  47d300:	afc20018 	sw	v0,24(s8)
  47d304:	8fc20018 	lw	v0,24(s8)
  47d308:	00000000 	nop
  47d30c:	00021980 	sll	v1,v0,0x6
  47d310:	00021682 	srl	v0,v0,0x1a
  47d314:	00621025 	or	v0,v1,v0
  47d318:	afc20018 	sw	v0,24(s8)
  47d31c:	8fc30018 	lw	v1,24(s8)
  47d320:	8fc2001c 	lw	v0,28(s8)
  47d324:	00000000 	nop
  47d328:	00621021 	addu	v0,v1,v0
  47d32c:	afc20018 	sw	v0,24(s8)
  II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
  47d330:	8fc20020 	lw	v0,32(s8)
  47d334:	00000000 	nop
  47d338:	00021827 	nor	v1,zero,v0
  47d33c:	8fc20018 	lw	v0,24(s8)
  47d340:	00000000 	nop
  47d344:	00621825 	or	v1,v1,v0
  47d348:	8fc2001c 	lw	v0,28(s8)
  47d34c:	00000000 	nop
  47d350:	00621826 	xor	v1,v1,v0
  47d354:	8fc20034 	lw	v0,52(s8)
  47d358:	00000000 	nop
  47d35c:	00621821 	addu	v1,v1,v0
  47d360:	8fc20024 	lw	v0,36(s8)
  47d364:	00000000 	nop
  47d368:	00621021 	addu	v0,v1,v0
  47d36c:	3c018f0c 	lui	at,0x8f0c
  47d370:	3421cc92 	ori	at,at,0xcc92
  47d374:	00221021 	addu	v0,at,v0
  47d378:	afc20024 	sw	v0,36(s8)
  47d37c:	8fc20024 	lw	v0,36(s8)
  47d380:	00000000 	nop
  47d384:	00021a80 	sll	v1,v0,0xa
  47d388:	00021582 	srl	v0,v0,0x16
  47d38c:	00621025 	or	v0,v1,v0
  47d390:	afc20024 	sw	v0,36(s8)
  47d394:	8fc30024 	lw	v1,36(s8)
  47d398:	8fc20018 	lw	v0,24(s8)
  47d39c:	00000000 	nop
  47d3a0:	00621021 	addu	v0,v1,v0
  47d3a4:	afc20024 	sw	v0,36(s8)
  II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
  47d3a8:	8fc2001c 	lw	v0,28(s8)
  47d3ac:	00000000 	nop
  47d3b0:	00021827 	nor	v1,zero,v0
  47d3b4:	8fc20024 	lw	v0,36(s8)
  47d3b8:	00000000 	nop
  47d3bc:	00621825 	or	v1,v1,v0
  47d3c0:	8fc20018 	lw	v0,24(s8)
  47d3c4:	00000000 	nop
  47d3c8:	00621826 	xor	v1,v1,v0
  47d3cc:	8fc20050 	lw	v0,80(s8)
  47d3d0:	00000000 	nop
  47d3d4:	00621821 	addu	v1,v1,v0
  47d3d8:	8fc20020 	lw	v0,32(s8)
  47d3dc:	00000000 	nop
  47d3e0:	00621021 	addu	v0,v1,v0
  47d3e4:	3c01ffef 	lui	at,0xffef
  47d3e8:	3421f47d 	ori	at,at,0xf47d
  47d3ec:	00221021 	addu	v0,at,v0
  47d3f0:	afc20020 	sw	v0,32(s8)
  47d3f4:	8fc20020 	lw	v0,32(s8)
  47d3f8:	00000000 	nop
  47d3fc:	00021bc0 	sll	v1,v0,0xf
  47d400:	00021442 	srl	v0,v0,0x11
  47d404:	00621025 	or	v0,v1,v0
  47d408:	afc20020 	sw	v0,32(s8)
  47d40c:	8fc30020 	lw	v1,32(s8)
  47d410:	8fc20024 	lw	v0,36(s8)
  47d414:	00000000 	nop
  47d418:	00621021 	addu	v0,v1,v0
  47d41c:	afc20020 	sw	v0,32(s8)
  II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
  47d420:	8fc20018 	lw	v0,24(s8)
  47d424:	00000000 	nop
  47d428:	00021827 	nor	v1,zero,v0
  47d42c:	8fc20020 	lw	v0,32(s8)
  47d430:	00000000 	nop
  47d434:	00621825 	or	v1,v1,v0
  47d438:	8fc20024 	lw	v0,36(s8)
  47d43c:	00000000 	nop
  47d440:	00621826 	xor	v1,v1,v0
  47d444:	8fc2002c 	lw	v0,44(s8)
  47d448:	00000000 	nop
  47d44c:	00621821 	addu	v1,v1,v0
  47d450:	8fc2001c 	lw	v0,28(s8)
  47d454:	00000000 	nop
  47d458:	00621021 	addu	v0,v1,v0
  47d45c:	3c018584 	lui	at,0x8584
  47d460:	34215dd1 	ori	at,at,0x5dd1
  47d464:	00221021 	addu	v0,at,v0
  47d468:	afc2001c 	sw	v0,28(s8)
  47d46c:	8fc2001c 	lw	v0,28(s8)
  47d470:	00000000 	nop
  47d474:	00021d40 	sll	v1,v0,0x15
  47d478:	000212c2 	srl	v0,v0,0xb
  47d47c:	00621025 	or	v0,v1,v0
  47d480:	afc2001c 	sw	v0,28(s8)
  47d484:	8fc3001c 	lw	v1,28(s8)
  47d488:	8fc20020 	lw	v0,32(s8)
  47d48c:	00000000 	nop
  47d490:	00621021 	addu	v0,v1,v0
  47d494:	afc2001c 	sw	v0,28(s8)
  II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
  47d498:	8fc20024 	lw	v0,36(s8)
  47d49c:	00000000 	nop
  47d4a0:	00021827 	nor	v1,zero,v0
  47d4a4:	8fc2001c 	lw	v0,28(s8)
  47d4a8:	00000000 	nop
  47d4ac:	00621825 	or	v1,v1,v0
  47d4b0:	8fc20020 	lw	v0,32(s8)
  47d4b4:	00000000 	nop
  47d4b8:	00621826 	xor	v1,v1,v0
  47d4bc:	8fc20048 	lw	v0,72(s8)
  47d4c0:	00000000 	nop
  47d4c4:	00621821 	addu	v1,v1,v0
  47d4c8:	8fc20018 	lw	v0,24(s8)
  47d4cc:	00000000 	nop
  47d4d0:	00621021 	addu	v0,v1,v0
  47d4d4:	3c016fa8 	lui	at,0x6fa8
  47d4d8:	34217e4f 	ori	at,at,0x7e4f
  47d4dc:	00221021 	addu	v0,at,v0
  47d4e0:	afc20018 	sw	v0,24(s8)
  47d4e4:	8fc20018 	lw	v0,24(s8)
  47d4e8:	00000000 	nop
  47d4ec:	00021980 	sll	v1,v0,0x6
  47d4f0:	00021682 	srl	v0,v0,0x1a
  47d4f4:	00621025 	or	v0,v1,v0
  47d4f8:	afc20018 	sw	v0,24(s8)
  47d4fc:	8fc30018 	lw	v1,24(s8)
  47d500:	8fc2001c 	lw	v0,28(s8)
  47d504:	00000000 	nop
  47d508:	00621021 	addu	v0,v1,v0
  47d50c:	afc20018 	sw	v0,24(s8)
  II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
  47d510:	8fc20020 	lw	v0,32(s8)
  47d514:	00000000 	nop
  47d518:	00021827 	nor	v1,zero,v0
  47d51c:	8fc20018 	lw	v0,24(s8)
  47d520:	00000000 	nop
  47d524:	00621825 	or	v1,v1,v0
  47d528:	8fc2001c 	lw	v0,28(s8)
  47d52c:	00000000 	nop
  47d530:	00621826 	xor	v1,v1,v0
  47d534:	8fc20064 	lw	v0,100(s8)
  47d538:	00000000 	nop
  47d53c:	00621821 	addu	v1,v1,v0
  47d540:	8fc20024 	lw	v0,36(s8)
  47d544:	00000000 	nop
  47d548:	00621021 	addu	v0,v1,v0
  47d54c:	3c01fe2c 	lui	at,0xfe2c
  47d550:	3421e6e0 	ori	at,at,0xe6e0
  47d554:	00221021 	addu	v0,at,v0
  47d558:	afc20024 	sw	v0,36(s8)
  47d55c:	8fc20024 	lw	v0,36(s8)
  47d560:	00000000 	nop
  47d564:	00021a80 	sll	v1,v0,0xa
  47d568:	00021582 	srl	v0,v0,0x16
  47d56c:	00621025 	or	v0,v1,v0
  47d570:	afc20024 	sw	v0,36(s8)
  47d574:	8fc30024 	lw	v1,36(s8)
  47d578:	8fc20018 	lw	v0,24(s8)
  47d57c:	00000000 	nop
  47d580:	00621021 	addu	v0,v1,v0
  47d584:	afc20024 	sw	v0,36(s8)
  II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
  47d588:	8fc2001c 	lw	v0,28(s8)
  47d58c:	00000000 	nop
  47d590:	00021827 	nor	v1,zero,v0
  47d594:	8fc20024 	lw	v0,36(s8)
  47d598:	00000000 	nop
  47d59c:	00621825 	or	v1,v1,v0
  47d5a0:	8fc20018 	lw	v0,24(s8)
  47d5a4:	00000000 	nop
  47d5a8:	00621826 	xor	v1,v1,v0
  47d5ac:	8fc20040 	lw	v0,64(s8)
  47d5b0:	00000000 	nop
  47d5b4:	00621821 	addu	v1,v1,v0
  47d5b8:	8fc20020 	lw	v0,32(s8)
  47d5bc:	00000000 	nop
  47d5c0:	00621021 	addu	v0,v1,v0
  47d5c4:	3c01a301 	lui	at,0xa301
  47d5c8:	34214314 	ori	at,at,0x4314
  47d5cc:	00221021 	addu	v0,at,v0
  47d5d0:	afc20020 	sw	v0,32(s8)
  47d5d4:	8fc20020 	lw	v0,32(s8)
  47d5d8:	00000000 	nop
  47d5dc:	00021bc0 	sll	v1,v0,0xf
  47d5e0:	00021442 	srl	v0,v0,0x11
  47d5e4:	00621025 	or	v0,v1,v0
  47d5e8:	afc20020 	sw	v0,32(s8)
  47d5ec:	8fc30020 	lw	v1,32(s8)
  47d5f0:	8fc20024 	lw	v0,36(s8)
  47d5f4:	00000000 	nop
  47d5f8:	00621021 	addu	v0,v1,v0
  47d5fc:	afc20020 	sw	v0,32(s8)
  II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
  47d600:	8fc20018 	lw	v0,24(s8)
  47d604:	00000000 	nop
  47d608:	00021827 	nor	v1,zero,v0
  47d60c:	8fc20020 	lw	v0,32(s8)
  47d610:	00000000 	nop
  47d614:	00621825 	or	v1,v1,v0
  47d618:	8fc20024 	lw	v0,36(s8)
  47d61c:	00000000 	nop
  47d620:	00621826 	xor	v1,v1,v0
  47d624:	8fc2005c 	lw	v0,92(s8)
  47d628:	00000000 	nop
  47d62c:	00621821 	addu	v1,v1,v0
  47d630:	8fc2001c 	lw	v0,28(s8)
  47d634:	00000000 	nop
  47d638:	00621021 	addu	v0,v1,v0
  47d63c:	3c014e08 	lui	at,0x4e08
  47d640:	342111a1 	ori	at,at,0x11a1
  47d644:	00221021 	addu	v0,at,v0
  47d648:	afc2001c 	sw	v0,28(s8)
  47d64c:	8fc2001c 	lw	v0,28(s8)
  47d650:	00000000 	nop
  47d654:	00021d40 	sll	v1,v0,0x15
  47d658:	000212c2 	srl	v0,v0,0xb
  47d65c:	00621025 	or	v0,v1,v0
  47d660:	afc2001c 	sw	v0,28(s8)
  47d664:	8fc3001c 	lw	v1,28(s8)
  47d668:	8fc20020 	lw	v0,32(s8)
  47d66c:	00000000 	nop
  47d670:	00621021 	addu	v0,v1,v0
  47d674:	afc2001c 	sw	v0,28(s8)
  II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
  47d678:	8fc20024 	lw	v0,36(s8)
  47d67c:	00000000 	nop
  47d680:	00021827 	nor	v1,zero,v0
  47d684:	8fc2001c 	lw	v0,28(s8)
  47d688:	00000000 	nop
  47d68c:	00621825 	or	v1,v1,v0
  47d690:	8fc20020 	lw	v0,32(s8)
  47d694:	00000000 	nop
  47d698:	00621826 	xor	v1,v1,v0
  47d69c:	8fc20038 	lw	v0,56(s8)
  47d6a0:	00000000 	nop
  47d6a4:	00621821 	addu	v1,v1,v0
  47d6a8:	8fc20018 	lw	v0,24(s8)
  47d6ac:	00000000 	nop
  47d6b0:	00621021 	addu	v0,v1,v0
  47d6b4:	3c01f753 	lui	at,0xf753
  47d6b8:	34217e82 	ori	at,at,0x7e82
  47d6bc:	00221021 	addu	v0,at,v0
  47d6c0:	afc20018 	sw	v0,24(s8)
  47d6c4:	8fc20018 	lw	v0,24(s8)
  47d6c8:	00000000 	nop
  47d6cc:	00021980 	sll	v1,v0,0x6
  47d6d0:	00021682 	srl	v0,v0,0x1a
  47d6d4:	00621025 	or	v0,v1,v0
  47d6d8:	afc20018 	sw	v0,24(s8)
  47d6dc:	8fc30018 	lw	v1,24(s8)
  47d6e0:	8fc2001c 	lw	v0,28(s8)
  47d6e4:	00000000 	nop
  47d6e8:	00621021 	addu	v0,v1,v0
  47d6ec:	afc20018 	sw	v0,24(s8)
  II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
  47d6f0:	8fc20020 	lw	v0,32(s8)
  47d6f4:	00000000 	nop
  47d6f8:	00021827 	nor	v1,zero,v0
  47d6fc:	8fc20018 	lw	v0,24(s8)
  47d700:	00000000 	nop
  47d704:	00621825 	or	v1,v1,v0
  47d708:	8fc2001c 	lw	v0,28(s8)
  47d70c:	00000000 	nop
  47d710:	00621826 	xor	v1,v1,v0
  47d714:	8fc20054 	lw	v0,84(s8)
  47d718:	00000000 	nop
  47d71c:	00621821 	addu	v1,v1,v0
  47d720:	8fc20024 	lw	v0,36(s8)
  47d724:	00000000 	nop
  47d728:	00621021 	addu	v0,v1,v0
  47d72c:	3c01bd3a 	lui	at,0xbd3a
  47d730:	3421f235 	ori	at,at,0xf235
  47d734:	00221021 	addu	v0,at,v0
  47d738:	afc20024 	sw	v0,36(s8)
  47d73c:	8fc20024 	lw	v0,36(s8)
  47d740:	00000000 	nop
  47d744:	00021a80 	sll	v1,v0,0xa
  47d748:	00021582 	srl	v0,v0,0x16
  47d74c:	00621025 	or	v0,v1,v0
  47d750:	afc20024 	sw	v0,36(s8)
  47d754:	8fc30024 	lw	v1,36(s8)
  47d758:	8fc20018 	lw	v0,24(s8)
  47d75c:	00000000 	nop
  47d760:	00621021 	addu	v0,v1,v0
  47d764:	afc20024 	sw	v0,36(s8)
  II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
  47d768:	8fc2001c 	lw	v0,28(s8)
  47d76c:	00000000 	nop
  47d770:	00021827 	nor	v1,zero,v0
  47d774:	8fc20024 	lw	v0,36(s8)
  47d778:	00000000 	nop
  47d77c:	00621825 	or	v1,v1,v0
  47d780:	8fc20018 	lw	v0,24(s8)
  47d784:	00000000 	nop
  47d788:	00621826 	xor	v1,v1,v0
  47d78c:	8fc20030 	lw	v0,48(s8)
  47d790:	00000000 	nop
  47d794:	00621821 	addu	v1,v1,v0
  47d798:	8fc20020 	lw	v0,32(s8)
  47d79c:	00000000 	nop
  47d7a0:	00621021 	addu	v0,v1,v0
  47d7a4:	3c012ad7 	lui	at,0x2ad7
  47d7a8:	3421d2bb 	ori	at,at,0xd2bb
  47d7ac:	00221021 	addu	v0,at,v0
  47d7b0:	afc20020 	sw	v0,32(s8)
  47d7b4:	8fc20020 	lw	v0,32(s8)
  47d7b8:	00000000 	nop
  47d7bc:	00021bc0 	sll	v1,v0,0xf
  47d7c0:	00021442 	srl	v0,v0,0x11
  47d7c4:	00621025 	or	v0,v1,v0
  47d7c8:	afc20020 	sw	v0,32(s8)
  47d7cc:	8fc30020 	lw	v1,32(s8)
  47d7d0:	8fc20024 	lw	v0,36(s8)
  47d7d4:	00000000 	nop
  47d7d8:	00621021 	addu	v0,v1,v0
  47d7dc:	afc20020 	sw	v0,32(s8)
  II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
  47d7e0:	8fc20018 	lw	v0,24(s8)
  47d7e4:	00000000 	nop
  47d7e8:	00021827 	nor	v1,zero,v0
  47d7ec:	8fc20020 	lw	v0,32(s8)
  47d7f0:	00000000 	nop
  47d7f4:	00621825 	or	v1,v1,v0
  47d7f8:	8fc20024 	lw	v0,36(s8)
  47d7fc:	00000000 	nop
  47d800:	00621826 	xor	v1,v1,v0
  47d804:	8fc2004c 	lw	v0,76(s8)
  47d808:	00000000 	nop
  47d80c:	00621821 	addu	v1,v1,v0
  47d810:	8fc2001c 	lw	v0,28(s8)
  47d814:	00000000 	nop
  47d818:	00621021 	addu	v0,v1,v0
  47d81c:	3c01eb86 	lui	at,0xeb86
  47d820:	3421d391 	ori	at,at,0xd391
  47d824:	00221021 	addu	v0,at,v0
  47d828:	afc2001c 	sw	v0,28(s8)
  47d82c:	8fc2001c 	lw	v0,28(s8)
  47d830:	00000000 	nop
  47d834:	00021d40 	sll	v1,v0,0x15
  47d838:	000212c2 	srl	v0,v0,0xb
  47d83c:	00621025 	or	v0,v1,v0
  47d840:	afc2001c 	sw	v0,28(s8)
  47d844:	8fc3001c 	lw	v1,28(s8)
  47d848:	8fc20020 	lw	v0,32(s8)
  47d84c:	00000000 	nop
  47d850:	00621021 	addu	v0,v1,v0
  47d854:	afc2001c 	sw	v0,28(s8)

  state[0] += a;
  47d858:	8fc20078 	lw	v0,120(s8)
  47d85c:	00000000 	nop
  47d860:	8c430000 	lw	v1,0(v0)
  47d864:	8fc20018 	lw	v0,24(s8)
  47d868:	00000000 	nop
  47d86c:	00621821 	addu	v1,v1,v0
  47d870:	8fc20078 	lw	v0,120(s8)
  47d874:	00000000 	nop
  47d878:	ac430000 	sw	v1,0(v0)
  state[1] += b;
  47d87c:	8fc20078 	lw	v0,120(s8)
  47d880:	00000000 	nop
  47d884:	24440004 	addiu	a0,v0,4
  47d888:	8fc20078 	lw	v0,120(s8)
  47d88c:	00000000 	nop
  47d890:	24420004 	addiu	v0,v0,4
  47d894:	8c430000 	lw	v1,0(v0)
  47d898:	8fc2001c 	lw	v0,28(s8)
  47d89c:	00000000 	nop
  47d8a0:	00621021 	addu	v0,v1,v0
  47d8a4:	ac820000 	sw	v0,0(a0)
  state[2] += c;
  47d8a8:	8fc20078 	lw	v0,120(s8)
  47d8ac:	00000000 	nop
  47d8b0:	24440008 	addiu	a0,v0,8
  47d8b4:	8fc20078 	lw	v0,120(s8)
  47d8b8:	00000000 	nop
  47d8bc:	24420008 	addiu	v0,v0,8
  47d8c0:	8c430000 	lw	v1,0(v0)
  47d8c4:	8fc20020 	lw	v0,32(s8)
  47d8c8:	00000000 	nop
  47d8cc:	00621021 	addu	v0,v1,v0
  47d8d0:	ac820000 	sw	v0,0(a0)
  state[3] += d;
  47d8d4:	8fc20078 	lw	v0,120(s8)
  47d8d8:	00000000 	nop
  47d8dc:	2444000c 	addiu	a0,v0,12
  47d8e0:	8fc20078 	lw	v0,120(s8)
  47d8e4:	00000000 	nop
  47d8e8:	2442000c 	addiu	v0,v0,12
  47d8ec:	8c430000 	lw	v1,0(v0)
  47d8f0:	8fc20024 	lw	v0,36(s8)
  47d8f4:	00000000 	nop
  47d8f8:	00621021 	addu	v0,v1,v0
  47d8fc:	ac820000 	sw	v0,0(a0)

  /* Zeroize sensitive information.
*/
  MD5_memset ((POINTER)x, 0, sizeof (x));
  47d900:	27c40028 	addiu	a0,s8,40
  47d904:	00002821 	move	a1,zero
  47d908:	24060040 	li	a2,64
  47d90c:	8f998500 	lw	t9,-31488(gp)
  47d910:	00000000 	nop
  47d914:	0320f809 	jalr	t9
  47d918:	00000000 	nop
  47d91c:	8fdc0010 	lw	gp,16(s8)
  47d920:	00000000 	nop
}
  47d924:	03c0e821 	move	sp,s8
  47d928:	8fbf0070 	lw	ra,112(sp)
  47d92c:	8fbe006c 	lw	s8,108(sp)
  47d930:	27bd0078 	addiu	sp,sp,120
  47d934:	03e00008 	jr	ra
  47d938:	00000000 	nop

0047d93c <Encode>:
  47d93c:	3c1c0fb9 	lui	gp,0xfb9
  47d940:	279cf034 	addiu	gp,gp,-4044
  47d944:	0399e021 	addu	gp,gp,t9
  47d948:	27bdffe8 	addiu	sp,sp,-24
  47d94c:	afbc0000 	sw	gp,0(sp)
  47d950:	afbe0014 	sw	s8,20(sp)
  47d954:	afbc0010 	sw	gp,16(sp)
  47d958:	03a0f021 	move	s8,sp
  47d95c:	afc40018 	sw	a0,24(s8)
  47d960:	afc5001c 	sw	a1,28(s8)
  47d964:	afc60020 	sw	a2,32(s8)

#if BYTE_ORDER != LITTLE_ENDIAN

/* Encodes input (UINT4) into output (unsigned char). Assumes len is
  a multiple of 4.
 */
static void Encode (output, input, len)
unsigned char *output;
UINT4 *input;
unsigned int len;
{
  unsigned int i, j;

  for (i = 0, j = 0; j < len; i++, j += 4) {
  47d968:	afc00008 	sw	zero,8(s8)
  47d96c:	afc0000c 	sw	zero,12(s8)
  47d970:	8fc2000c 	lw	v0,12(s8)
  47d974:	8fc30020 	lw	v1,32(s8)
  47d978:	00000000 	nop
  47d97c:	0043102b 	sltu	v0,v0,v1
  47d980:	14400003 	bnez	v0,47d990 <Encode+0x54>
  47d984:	00000000 	nop
  47d988:	10000045 	b	47daa0 <Encode+0x164>
  47d98c:	00000000 	nop
 output[j] = (unsigned char)(input[i] & 0xff);
  47d990:	8fc30018 	lw	v1,24(s8)
  47d994:	8fc2000c 	lw	v0,12(s8)
  47d998:	00000000 	nop
  47d99c:	00622021 	addu	a0,v1,v0
  47d9a0:	8fc20008 	lw	v0,8(s8)
  47d9a4:	00000000 	nop
  47d9a8:	00021880 	sll	v1,v0,0x2
  47d9ac:	8fc2001c 	lw	v0,28(s8)
  47d9b0:	00000000 	nop
  47d9b4:	00621021 	addu	v0,v1,v0
  47d9b8:	90420003 	lbu	v0,3(v0)
  47d9bc:	00000000 	nop
  47d9c0:	a0820000 	sb	v0,0(a0)
 output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
  47d9c4:	8fc30018 	lw	v1,24(s8)
  47d9c8:	8fc2000c 	lw	v0,12(s8)
  47d9cc:	00000000 	nop
  47d9d0:	00621021 	addu	v0,v1,v0
  47d9d4:	24440001 	addiu	a0,v0,1
  47d9d8:	8fc20008 	lw	v0,8(s8)
  47d9dc:	00000000 	nop
  47d9e0:	00021880 	sll	v1,v0,0x2
  47d9e4:	8fc2001c 	lw	v0,28(s8)
  47d9e8:	00000000 	nop
  47d9ec:	00621021 	addu	v0,v1,v0
  47d9f0:	8c420000 	lw	v0,0(v0)
  47d9f4:	00000000 	nop
  47d9f8:	00021202 	srl	v0,v0,0x8
  47d9fc:	a0820000 	sb	v0,0(a0)
 output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
  47da00:	8fc30018 	lw	v1,24(s8)
  47da04:	8fc2000c 	lw	v0,12(s8)
  47da08:	00000000 	nop
  47da0c:	00621021 	addu	v0,v1,v0
  47da10:	24440002 	addiu	a0,v0,2
  47da14:	8fc20008 	lw	v0,8(s8)
  47da18:	00000000 	nop
  47da1c:	00021880 	sll	v1,v0,0x2
  47da20:	8fc2001c 	lw	v0,28(s8)
  47da24:	00000000 	nop
  47da28:	00621021 	addu	v0,v1,v0
  47da2c:	8c420000 	lw	v0,0(v0)
  47da30:	00000000 	nop
  47da34:	00021402 	srl	v0,v0,0x10
  47da38:	a0820000 	sb	v0,0(a0)
 output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
  47da3c:	8fc30018 	lw	v1,24(s8)
  47da40:	8fc2000c 	lw	v0,12(s8)
  47da44:	00000000 	nop
  47da48:	00621021 	addu	v0,v1,v0
  47da4c:	24440003 	addiu	a0,v0,3
  47da50:	8fc20008 	lw	v0,8(s8)
  47da54:	00000000 	nop
  47da58:	00021880 	sll	v1,v0,0x2
  47da5c:	8fc2001c 	lw	v0,28(s8)
  47da60:	00000000 	nop
  47da64:	00621021 	addu	v0,v1,v0
  47da68:	8c420000 	lw	v0,0(v0)
  47da6c:	00000000 	nop
  47da70:	00021602 	srl	v0,v0,0x18
  47da74:	a0820000 	sb	v0,0(a0)
  47da78:	8fc20008 	lw	v0,8(s8)
  47da7c:	00000000 	nop
  47da80:	24420001 	addiu	v0,v0,1
  47da84:	afc20008 	sw	v0,8(s8)
  47da88:	8fc2000c 	lw	v0,12(s8)
  47da8c:	00000000 	nop
  47da90:	24420004 	addiu	v0,v0,4
  47da94:	afc2000c 	sw	v0,12(s8)
  47da98:	1000ffb5 	b	47d970 <Encode+0x34>
  47da9c:	00000000 	nop
  }
}
  47daa0:	03c0e821 	move	sp,s8
  47daa4:	8fbe0014 	lw	s8,20(sp)
  47daa8:	27bd0018 	addiu	sp,sp,24
  47daac:	03e00008 	jr	ra
  47dab0:	00000000 	nop

0047dab4 <Decode>:
  47dab4:	3c1c0fb9 	lui	gp,0xfb9
  47dab8:	279ceebc 	addiu	gp,gp,-4420
  47dabc:	0399e021 	addu	gp,gp,t9
  47dac0:	27bdffe8 	addiu	sp,sp,-24
  47dac4:	afbc0000 	sw	gp,0(sp)
  47dac8:	afbe0014 	sw	s8,20(sp)
  47dacc:	afbc0010 	sw	gp,16(sp)
  47dad0:	03a0f021 	move	s8,sp
  47dad4:	afc40018 	sw	a0,24(s8)
  47dad8:	afc5001c 	sw	a1,28(s8)
  47dadc:	afc60020 	sw	a2,32(s8)

/* Decodes input (unsigned char) into output (UINT4). Assumes len is
  a multiple of 4.
 */
static void Decode (output, input, len)
UINT4 *output;
unsigned char *input;
unsigned int len;
{
  unsigned int i, j;

  for (i = 0, j = 0; j < len; i++, j += 4)
  47dae0:	afc00008 	sw	zero,8(s8)
  47dae4:	afc0000c 	sw	zero,12(s8)
  47dae8:	8fc2000c 	lw	v0,12(s8)
  47daec:	8fc30020 	lw	v1,32(s8)
  47daf0:	00000000 	nop
  47daf4:	0043102b 	sltu	v0,v0,v1
  47daf8:	14400003 	bnez	v0,47db08 <Decode+0x54>
  47dafc:	00000000 	nop
  47db00:	10000032 	b	47dbcc <Decode+0x118>
  47db04:	00000000 	nop
 output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
  47db08:	8fc20008 	lw	v0,8(s8)
  47db0c:	00000000 	nop
  47db10:	00021880 	sll	v1,v0,0x2
  47db14:	8fc20018 	lw	v0,24(s8)
  47db18:	00000000 	nop
  47db1c:	00622821 	addu	a1,v1,v0
  47db20:	8fc3001c 	lw	v1,28(s8)
  47db24:	8fc2000c 	lw	v0,12(s8)
  47db28:	00000000 	nop
  47db2c:	00621021 	addu	v0,v1,v0
  47db30:	90440000 	lbu	a0,0(v0)
  47db34:	8fc3001c 	lw	v1,28(s8)
  47db38:	8fc2000c 	lw	v0,12(s8)
  47db3c:	00000000 	nop
  47db40:	00621021 	addu	v0,v1,v0
  47db44:	24420001 	addiu	v0,v0,1
  47db48:	90420000 	lbu	v0,0(v0)
  47db4c:	00000000 	nop
  47db50:	00021200 	sll	v0,v0,0x8
  47db54:	00822025 	or	a0,a0,v0
  47db58:	8fc3001c 	lw	v1,28(s8)
  47db5c:	8fc2000c 	lw	v0,12(s8)
  47db60:	00000000 	nop
  47db64:	00621021 	addu	v0,v1,v0
  47db68:	24420002 	addiu	v0,v0,2
  47db6c:	90420000 	lbu	v0,0(v0)
  47db70:	00000000 	nop
  47db74:	00021400 	sll	v0,v0,0x10
  47db78:	00822025 	or	a0,a0,v0
  47db7c:	8fc3001c 	lw	v1,28(s8)
  47db80:	8fc2000c 	lw	v0,12(s8)
  47db84:	00000000 	nop
  47db88:	00621021 	addu	v0,v1,v0
  47db8c:	24420003 	addiu	v0,v0,3
  47db90:	90420000 	lbu	v0,0(v0)
  47db94:	00000000 	nop
  47db98:	00021600 	sll	v0,v0,0x18
  47db9c:	00821025 	or	v0,a0,v0
  47dba0:	aca20000 	sw	v0,0(a1)
  47dba4:	8fc20008 	lw	v0,8(s8)
  47dba8:	00000000 	nop
  47dbac:	24420001 	addiu	v0,v0,1
  47dbb0:	afc20008 	sw	v0,8(s8)
  47dbb4:	8fc2000c 	lw	v0,12(s8)
  47dbb8:	00000000 	nop
  47dbbc:	24420004 	addiu	v0,v0,4
  47dbc0:	afc2000c 	sw	v0,12(s8)
  47dbc4:	1000ffc8 	b	47dae8 <Decode+0x34>
  47dbc8:	00000000 	nop
   (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
}
  47dbcc:	03c0e821 	move	sp,s8
  47dbd0:	8fbe0014 	lw	s8,20(sp)
  47dbd4:	27bd0018 	addiu	sp,sp,24
  47dbd8:	03e00008 	jr	ra
  47dbdc:	00000000 	nop

0047dbe0 <MD2Init>:
  47dbe0:	3c1c0fb9 	lui	gp,0xfb9
  47dbe4:	279ced90 	addiu	gp,gp,-4720
  47dbe8:	0399e021 	addu	gp,gp,t9
  47dbec:	27bdffd8 	addiu	sp,sp,-40
  47dbf0:	afbc0010 	sw	gp,16(sp)
  47dbf4:	afbf0020 	sw	ra,32(sp)
  47dbf8:	afbe001c 	sw	s8,28(sp)
  47dbfc:	afbc0018 	sw	gp,24(sp)
  47dc00:	03a0f021 	move	s8,sp
  47dc04:	afc40028 	sw	a0,40(s8)
 */
void MD2Init (context)
MD2_CTX *context;                                        /* context */
{
  context->count = 0;
  47dc08:	8fc20028 	lw	v0,40(s8)
  47dc0c:	00000000 	nop
  47dc10:	ac400020 	sw	zero,32(v0)
  MD2_memset ((POINTER)context->state, 0, sizeof (context->state));
  47dc14:	8fc40028 	lw	a0,40(s8)
  47dc18:	00002821 	move	a1,zero
  47dc1c:	24060010 	li	a2,16
  47dc20:	8f998500 	lw	t9,-31488(gp)
  47dc24:	00000000 	nop
  47dc28:	0320f809 	jalr	t9
  47dc2c:	00000000 	nop
  47dc30:	8fdc0010 	lw	gp,16(s8)
  47dc34:	00000000 	nop
  MD2_memset
  47dc38:	8fc20028 	lw	v0,40(s8)
  47dc3c:	00000000 	nop
  47dc40:	24420010 	addiu	v0,v0,16
  47dc44:	00402021 	move	a0,v0
  47dc48:	00002821 	move	a1,zero
  47dc4c:	24060010 	li	a2,16
  47dc50:	8f998500 	lw	t9,-31488(gp)
  47dc54:	00000000 	nop
  47dc58:	0320f809 	jalr	t9
  47dc5c:	00000000 	nop
  47dc60:	8fdc0010 	lw	gp,16(s8)
  47dc64:	00000000 	nop
    ((POINTER)context->checksum, 0, sizeof (context->checksum));
}
  47dc68:	03c0e821 	move	sp,s8
  47dc6c:	8fbf0020 	lw	ra,32(sp)
  47dc70:	8fbe001c 	lw	s8,28(sp)
  47dc74:	27bd0028 	addiu	sp,sp,40
  47dc78:	03e00008 	jr	ra
  47dc7c:	00000000 	nop

0047dc80 <MD2Update>:
  47dc80:	3c1c0fb9 	lui	gp,0xfb9
  47dc84:	279cecf0 	addiu	gp,gp,-4880
  47dc88:	0399e021 	addu	gp,gp,t9
  47dc8c:	27bdffc8 	addiu	sp,sp,-56
  47dc90:	afbc0010 	sw	gp,16(sp)
  47dc94:	afbf0030 	sw	ra,48(sp)
  47dc98:	afbe002c 	sw	s8,44(sp)
  47dc9c:	afbc0028 	sw	gp,40(sp)
  47dca0:	03a0f021 	move	s8,sp
  47dca4:	afc40038 	sw	a0,56(s8)
  47dca8:	afc5003c 	sw	a1,60(s8)
  47dcac:	afc60040 	sw	a2,64(s8)

/* MD2 block update operation. Continues an MD2 message-digest
     operation, processing another message block, and updating the
     context.
 */
void MD2Update (context, input, inputLen)
MD2_CTX *context;                                        /* context */
unsigned char *input;                                /* input block */
unsigned int inputLen;                     /* length of input block */
{
  unsigned int i, index, partLen;

  /* Update number of bytes mod 16 */
  index = context->count;
  47dcb0:	8fc20038 	lw	v0,56(s8)
  47dcb4:	00000000 	nop
  47dcb8:	8c420020 	lw	v0,32(v0)
  47dcbc:	00000000 	nop
  47dcc0:	afc2001c 	sw	v0,28(s8)
  context->count = (index + inputLen) & 0xf;
  47dcc4:	8fc3001c 	lw	v1,28(s8)
  47dcc8:	8fc20040 	lw	v0,64(s8)
  47dccc:	00000000 	nop
  47dcd0:	00621021 	addu	v0,v1,v0
  47dcd4:	3043000f 	andi	v1,v0,0xf
  47dcd8:	8fc20038 	lw	v0,56(s8)
  47dcdc:	00000000 	nop
  47dce0:	ac430020 	sw	v1,32(v0)

  partLen = 16 - index;
  47dce4:	24030010 	li	v1,16
  47dce8:	8fc2001c 	lw	v0,28(s8)
  47dcec:	00000000 	nop
  47dcf0:	00621023 	subu	v0,v1,v0
  47dcf4:	afc20020 	sw	v0,32(s8)

  /* Transform as many times as possible.
    */
  if (inputLen >= partLen) {
  47dcf8:	8fc30040 	lw	v1,64(s8)
  47dcfc:	8fc20020 	lw	v0,32(s8)
  47dd00:	00000000 	nop
  47dd04:	0062102b 	sltu	v0,v1,v0
  47dd08:	14400045 	bnez	v0,47de20 <MD2Update+0x1a0>
  47dd0c:	00000000 	nop
    MD2_memcpy
  47dd10:	8fc30038 	lw	v1,56(s8)
  47dd14:	8fc2001c 	lw	v0,28(s8)
  47dd18:	00000000 	nop
  47dd1c:	00621021 	addu	v0,v1,v0
  47dd20:	24420024 	addiu	v0,v0,36
  47dd24:	00402021 	move	a0,v0
  47dd28:	8fc5003c 	lw	a1,60(s8)
  47dd2c:	8fc60020 	lw	a2,32(s8)
  47dd30:	8f998a30 	lw	t9,-30160(gp)
  47dd34:	00000000 	nop
  47dd38:	0320f809 	jalr	t9
  47dd3c:	00000000 	nop
  47dd40:	8fdc0010 	lw	gp,16(s8)
  47dd44:	00000000 	nop
      ((POINTER)&context->buffer[index], (POINTER)input, partLen);
    MD2Transform (context->state, context->checksum, context->buffer);
  47dd48:	8fc20038 	lw	v0,56(s8)
  47dd4c:	00000000 	nop
  47dd50:	24430010 	addiu	v1,v0,16
  47dd54:	8fc20038 	lw	v0,56(s8)
  47dd58:	00000000 	nop
  47dd5c:	24420024 	addiu	v0,v0,36
  47dd60:	8fc40038 	lw	a0,56(s8)
  47dd64:	00602821 	move	a1,v1
  47dd68:	00403021 	move	a2,v0
  47dd6c:	8f998048 	lw	t9,-32696(gp)
  47dd70:	00000000 	nop
  47dd74:	2739dfb0 	addiu	t9,t9,-8272
  47dd78:	00000000 	nop
  47dd7c:	0320f809 	jalr	t9
  47dd80:	00000000 	nop
  47dd84:	8fdc0010 	lw	gp,16(s8)
  47dd88:	00000000 	nop

    for (i = partLen; i + 15 < inputLen; i += 16)
  47dd8c:	8fc20020 	lw	v0,32(s8)
  47dd90:	00000000 	nop
  47dd94:	afc20018 	sw	v0,24(s8)
  47dd98:	8fc20018 	lw	v0,24(s8)
  47dd9c:	00000000 	nop
  47dda0:	2443000f 	addiu	v1,v0,15
  47dda4:	8fc20040 	lw	v0,64(s8)
  47dda8:	00000000 	nop
  47ddac:	0062102b 	sltu	v0,v1,v0
  47ddb0:	14400004 	bnez	v0,47ddc4 <MD2Update+0x144>
  47ddb4:	00000000 	nop
      MD2Transform (context->state, context->checksum, &input[i]);

    index = 0;
  47ddb8:	afc0001c 	sw	zero,28(s8)
  47ddbc:	10000019 	b	47de24 <MD2Update+0x1a4>
  47ddc0:	00000000 	nop
  47ddc4:	8fc20038 	lw	v0,56(s8)
  47ddc8:	00000000 	nop
  47ddcc:	24450010 	addiu	a1,v0,16
  47ddd0:	8fc3003c 	lw	v1,60(s8)
  47ddd4:	8fc20018 	lw	v0,24(s8)
  47ddd8:	00000000 	nop
  47dddc:	00621021 	addu	v0,v1,v0
  47dde0:	8fc40038 	lw	a0,56(s8)
  47dde4:	00403021 	move	a2,v0
  47dde8:	8f998048 	lw	t9,-32696(gp)
  47ddec:	00000000 	nop
  47ddf0:	2739dfb0 	addiu	t9,t9,-8272
  47ddf4:	00000000 	nop
  47ddf8:	0320f809 	jalr	t9
  47ddfc:	00000000 	nop
  47de00:	8fdc0010 	lw	gp,16(s8)
  47de04:	00000000 	nop
  47de08:	8fc20018 	lw	v0,24(s8)
  47de0c:	00000000 	nop
  47de10:	24420010 	addiu	v0,v0,16
  47de14:	afc20018 	sw	v0,24(s8)
  47de18:	1000ffdf 	b	47dd98 <MD2Update+0x118>
  47de1c:	00000000 	nop
  }
  else
    i = 0;
  47de20:	afc00018 	sw	zero,24(s8)

  /* Buffer remaining input */
  MD2_memcpy
  47de24:	8fc30038 	lw	v1,56(s8)
  47de28:	8fc2001c 	lw	v0,28(s8)
  47de2c:	00000000 	nop
  47de30:	00621021 	addu	v0,v1,v0
  47de34:	24440024 	addiu	a0,v0,36
  47de38:	8fc3003c 	lw	v1,60(s8)
  47de3c:	8fc20018 	lw	v0,24(s8)
  47de40:	00000000 	nop
  47de44:	00622821 	addu	a1,v1,v0
  47de48:	8fc30040 	lw	v1,64(s8)
  47de4c:	8fc20018 	lw	v0,24(s8)
  47de50:	00000000 	nop
  47de54:	00621023 	subu	v0,v1,v0
  47de58:	00403021 	move	a2,v0
  47de5c:	8f998a30 	lw	t9,-30160(gp)
  47de60:	00000000 	nop
  47de64:	0320f809 	jalr	t9
  47de68:	00000000 	nop
  47de6c:	8fdc0010 	lw	gp,16(s8)
  47de70:	00000000 	nop
    ((POINTER)&context->buffer[index], (POINTER)&input[i],
     inputLen-i);
}
  47de74:	03c0e821 	move	sp,s8
  47de78:	8fbf0030 	lw	ra,48(sp)
  47de7c:	8fbe002c 	lw	s8,44(sp)
  47de80:	27bd0038 	addiu	sp,sp,56
  47de84:	03e00008 	jr	ra
  47de88:	00000000 	nop

0047de8c <MD2Final>:
  47de8c:	3c1c0fb9 	lui	gp,0xfb9
  47de90:	279ceae4 	addiu	gp,gp,-5404
  47de94:	0399e021 	addu	gp,gp,t9
  47de98:	27bdffd0 	addiu	sp,sp,-48
  47de9c:	afbc0010 	sw	gp,16(sp)
  47dea0:	afbf0028 	sw	ra,40(sp)
  47dea4:	afbe0024 	sw	s8,36(sp)
  47dea8:	afbc0020 	sw	gp,32(sp)
  47deac:	03a0f021 	move	s8,sp
  47deb0:	afc40030 	sw	a0,48(s8)
  47deb4:	afc50034 	sw	a1,52(s8)

/* MD2 finalization. Ends an MD2 message-digest operation, writing the
     message digest and zeroizing the context.
 */
void MD2Final (digest, context)

unsigned char digest[16];                         /* message digest */
MD2_CTX *context;                                        /* context */
{
  unsigned int index, padLen;

  /* Pad out to multiple of 16.
   */
  index = context->count;
  47deb8:	8fc20034 	lw	v0,52(s8)
  47debc:	00000000 	nop
  47dec0:	8c420020 	lw	v0,32(v0)
  47dec4:	00000000 	nop
  47dec8:	afc20018 	sw	v0,24(s8)
  padLen = 16 - index;
  47decc:	24030010 	li	v1,16
  47ded0:	8fc20018 	lw	v0,24(s8)
  47ded4:	00000000 	nop
  47ded8:	00621023 	subu	v0,v1,v0
  47dedc:	afc2001c 	sw	v0,28(s8)
  MD2Update (context, PADDING[padLen], padLen);
  47dee0:	8fc2001c 	lw	v0,28(s8)
  47dee4:	00000000 	nop
  47dee8:	00021080 	sll	v0,v0,0x2
  47deec:	8f818018 	lw	at,-32744(gp)
  47def0:	00000000 	nop
  47def4:	242140f0 	addiu	at,at,16624
  47def8:	00221021 	addu	v0,at,v0
  47defc:	8fc40034 	lw	a0,52(s8)
  47df00:	8c450000 	lw	a1,0(v0)
  47df04:	8fc6001c 	lw	a2,28(s8)
  47df08:	8f998af4 	lw	t9,-29964(gp)
  47df0c:	00000000 	nop
  47df10:	0320f809 	jalr	t9
  47df14:	00000000 	nop
  47df18:	8fdc0010 	lw	gp,16(s8)
  47df1c:	00000000 	nop

  /* Extend with checksum */
  MD2Update (context, context->checksum, 16);
  47df20:	8fc20034 	lw	v0,52(s8)
  47df24:	00000000 	nop
  47df28:	24420010 	addiu	v0,v0,16
  47df2c:	8fc40034 	lw	a0,52(s8)
  47df30:	00402821 	move	a1,v0
  47df34:	24060010 	li	a2,16
  47df38:	8f998af4 	lw	t9,-29964(gp)
  47df3c:	00000000 	nop
  47df40:	0320f809 	jalr	t9
  47df44:	00000000 	nop
  47df48:	8fdc0010 	lw	gp,16(s8)
  47df4c:	00000000 	nop

  /* Store state in digest */
  MD2_memcpy ((POINTER)digest, (POINTER)context->state, 16);
  47df50:	8fc40030 	lw	a0,48(s8)
  47df54:	8fc50034 	lw	a1,52(s8)
  47df58:	24060010 	li	a2,16
  47df5c:	8f998a30 	lw	t9,-30160(gp)
  47df60:	00000000 	nop
  47df64:	0320f809 	jalr	t9
  47df68:	00000000 	nop
  47df6c:	8fdc0010 	lw	gp,16(s8)
  47df70:	00000000 	nop

  /* Zeroize sensitive information.
   */
  MD2_memset ((POINTER)context, 0, sizeof (*context));
  47df74:	8fc40034 	lw	a0,52(s8)
  47df78:	00002821 	move	a1,zero
  47df7c:	24060034 	li	a2,52
  47df80:	8f998500 	lw	t9,-31488(gp)
  47df84:	00000000 	nop
  47df88:	0320f809 	jalr	t9
  47df8c:	00000000 	nop
  47df90:	8fdc0010 	lw	gp,16(s8)
  47df94:	00000000 	nop
}
  47df98:	03c0e821 	move	sp,s8
  47df9c:	8fbf0028 	lw	ra,40(sp)
  47dfa0:	8fbe0024 	lw	s8,36(sp)
  47dfa4:	27bd0030 	addiu	sp,sp,48
  47dfa8:	03e00008 	jr	ra
  47dfac:	00000000 	nop

0047dfb0 <MD2Transform>:
  47dfb0:	3c1c0fb9 	lui	gp,0xfb9
  47dfb4:	279ce9c0 	addiu	gp,gp,-5696
  47dfb8:	0399e021 	addu	gp,gp,t9
  47dfbc:	27bdff98 	addiu	sp,sp,-104
  47dfc0:	afbc0010 	sw	gp,16(sp)
  47dfc4:	afbf0060 	sw	ra,96(sp)
  47dfc8:	afbe005c 	sw	s8,92(sp)
  47dfcc:	afbc0058 	sw	gp,88(sp)
  47dfd0:	03a0f021 	move	s8,sp
  47dfd4:	afc40068 	sw	a0,104(s8)
  47dfd8:	afc5006c 	sw	a1,108(s8)
  47dfdc:	afc60070 	sw	a2,112(s8)

/* MD2 basic transformation. Transforms state and updates checksum
     based on block.
 */
static void MD2Transform (state, checksum, block)
unsigned char state[16];
unsigned char checksum[16];
unsigned char block[16];
{
  unsigned int i, j, t;
  unsigned char x[48];

  /* Form encryption block from state, block, state ^ block.
   */
  MD2_memcpy ((POINTER)x, (POINTER)state, 16);
  47dfe0:	27c40028 	addiu	a0,s8,40
  47dfe4:	8fc50068 	lw	a1,104(s8)
  47dfe8:	24060010 	li	a2,16
  47dfec:	8f998a30 	lw	t9,-30160(gp)
  47dff0:	00000000 	nop
  47dff4:	0320f809 	jalr	t9
  47dff8:	00000000 	nop
  47dffc:	8fdc0010 	lw	gp,16(s8)
  47e000:	00000000 	nop
  MD2_memcpy ((POINTER)x+16, (POINTER)block, 16);
  47e004:	27c20028 	addiu	v0,s8,40
  47e008:	24420010 	addiu	v0,v0,16
  47e00c:	00402021 	move	a0,v0
  47e010:	8fc50070 	lw	a1,112(s8)
  47e014:	24060010 	li	a2,16
  47e018:	8f998a30 	lw	t9,-30160(gp)
  47e01c:	00000000 	nop
  47e020:	0320f809 	jalr	t9
  47e024:	00000000 	nop
  47e028:	8fdc0010 	lw	gp,16(s8)
  47e02c:	00000000 	nop
  for (i = 0; i < 16; i++)
  47e030:	afc00018 	sw	zero,24(s8)
  47e034:	8fc20018 	lw	v0,24(s8)
  47e038:	00000000 	nop
  47e03c:	2c420010 	sltiu	v0,v0,16
  47e040:	14400003 	bnez	v0,47e050 <MD2Transform+0xa0>
  47e044:	00000000 	nop
  47e048:	10000019 	b	47e0b0 <MD2Transform+0x100>
  47e04c:	00000000 	nop
    x[i+32] = state[i] ^ block[i];
  47e050:	8fc20018 	lw	v0,24(s8)
  47e054:	00000000 	nop
  47e058:	24430020 	addiu	v1,v0,32
  47e05c:	27c20028 	addiu	v0,s8,40
  47e060:	00432821 	addu	a1,v0,v1
  47e064:	8fc30068 	lw	v1,104(s8)
  47e068:	8fc20018 	lw	v0,24(s8)
  47e06c:	00000000 	nop
  47e070:	00622021 	addu	a0,v1,v0
  47e074:	8fc30070 	lw	v1,112(s8)
  47e078:	8fc20018 	lw	v0,24(s8)
  47e07c:	00000000 	nop
  47e080:	00621021 	addu	v0,v1,v0
  47e084:	90830000 	lbu	v1,0(a0)
  47e088:	90420000 	lbu	v0,0(v0)
  47e08c:	00000000 	nop
  47e090:	00621026 	xor	v0,v1,v0
  47e094:	a0a20000 	sb	v0,0(a1)
  47e098:	8fc20018 	lw	v0,24(s8)
  47e09c:	00000000 	nop
  47e0a0:	24420001 	addiu	v0,v0,1
  47e0a4:	afc20018 	sw	v0,24(s8)
  47e0a8:	1000ffe2 	b	47e034 <MD2Transform+0x84>
  47e0ac:	00000000 	nop

  /* Encrypt block (18 rounds).
   */
  t = 0;
  47e0b0:	afc00020 	sw	zero,32(s8)
  for (i = 0; i < 18; i++) {
  47e0b4:	afc00018 	sw	zero,24(s8)
  47e0b8:	8fc20018 	lw	v0,24(s8)
  47e0bc:	00000000 	nop
  47e0c0:	2c420012 	sltiu	v0,v0,18
  47e0c4:	14400003 	bnez	v0,47e0d4 <MD2Transform+0x124>
  47e0c8:	00000000 	nop
  47e0cc:	1000002d 	b	47e184 <MD2Transform+0x1d4>
  47e0d0:	00000000 	nop
    for (j = 0; j < 48; j++)
  47e0d4:	afc0001c 	sw	zero,28(s8)
  47e0d8:	8fc2001c 	lw	v0,28(s8)
  47e0dc:	00000000 	nop
  47e0e0:	2c420030 	sltiu	v0,v0,48
  47e0e4:	1440000d 	bnez	v0,47e11c <MD2Transform+0x16c>
  47e0e8:	00000000 	nop
      t = x[j] ^= PI_SUBST[t];
    t = (t + i) & 0xff;
  47e0ec:	8fc30020 	lw	v1,32(s8)
  47e0f0:	8fc20018 	lw	v0,24(s8)
  47e0f4:	00000000 	nop
  47e0f8:	00621021 	addu	v0,v1,v0
  47e0fc:	304200ff 	andi	v0,v0,0xff
  47e100:	afc20020 	sw	v0,32(s8)
  47e104:	8fc20018 	lw	v0,24(s8)
  47e108:	00000000 	nop
  47e10c:	24420001 	addiu	v0,v0,1
  47e110:	afc20018 	sw	v0,24(s8)
  47e114:	1000ffe8 	b	47e0b8 <MD2Transform+0x108>
  47e118:	00000000 	nop
  47e11c:	27c30028 	addiu	v1,s8,40
  47e120:	8fc2001c 	lw	v0,28(s8)
  47e124:	00000000 	nop
  47e128:	00622021 	addu	a0,v1,v0
  47e12c:	27c30028 	addiu	v1,s8,40
  47e130:	8fc2001c 	lw	v0,28(s8)
  47e134:	00000000 	nop
  47e138:	00621821 	addu	v1,v1,v0
  47e13c:	8fc20020 	lw	v0,32(s8)
  47e140:	8f818018 	lw	at,-32744(gp)
  47e144:	00000000 	nop
  47e148:	24213ff0 	addiu	at,at,16368
  47e14c:	00221021 	addu	v0,at,v0
  47e150:	90630000 	lbu	v1,0(v1)
  47e154:	90420000 	lbu	v0,0(v0)
  47e158:	00000000 	nop
  47e15c:	00621026 	xor	v0,v1,v0
  47e160:	a0820000 	sb	v0,0(a0)
  47e164:	304200ff 	andi	v0,v0,0xff
  47e168:	afc20020 	sw	v0,32(s8)
  47e16c:	8fc2001c 	lw	v0,28(s8)
  47e170:	00000000 	nop
  47e174:	24420001 	addiu	v0,v0,1
  47e178:	afc2001c 	sw	v0,28(s8)
  47e17c:	1000ffd6 	b	47e0d8 <MD2Transform+0x128>
  47e180:	00000000 	nop
  }

  /* Save new state */
  MD2_memcpy ((POINTER)state, (POINTER)x, 16);
  47e184:	8fc40068 	lw	a0,104(s8)
  47e188:	27c50028 	addiu	a1,s8,40
  47e18c:	24060010 	li	a2,16
  47e190:	8f998a30 	lw	t9,-30160(gp)
  47e194:	00000000 	nop
  47e198:	0320f809 	jalr	t9
  47e19c:	00000000 	nop
  47e1a0:	8fdc0010 	lw	gp,16(s8)
  47e1a4:	00000000 	nop

  /* Update checksum.
   */
  t = checksum[15];
  47e1a8:	8fc2006c 	lw	v0,108(s8)
  47e1ac:	00000000 	nop
  47e1b0:	2442000f 	addiu	v0,v0,15
  47e1b4:	90420000 	lbu	v0,0(v0)
  47e1b8:	00000000 	nop
  47e1bc:	afc20020 	sw	v0,32(s8)
  for (i = 0; i < 16; i++)
  47e1c0:	afc00018 	sw	zero,24(s8)
  47e1c4:	8fc20018 	lw	v0,24(s8)
  47e1c8:	00000000 	nop
  47e1cc:	2c420010 	sltiu	v0,v0,16
  47e1d0:	14400003 	bnez	v0,47e1e0 <MD2Transform+0x230>
  47e1d4:	00000000 	nop
  47e1d8:	10000022 	b	47e264 <MD2Transform+0x2b4>
  47e1dc:	00000000 	nop
    t = checksum[i] ^= PI_SUBST[block[i] ^ t];
  47e1e0:	8fc3006c 	lw	v1,108(s8)
  47e1e4:	8fc20018 	lw	v0,24(s8)
  47e1e8:	00000000 	nop
  47e1ec:	00622821 	addu	a1,v1,v0
  47e1f0:	8fc3006c 	lw	v1,108(s8)
  47e1f4:	8fc20018 	lw	v0,24(s8)
  47e1f8:	00000000 	nop
  47e1fc:	00622021 	addu	a0,v1,v0
  47e200:	8fc30070 	lw	v1,112(s8)
  47e204:	8fc20018 	lw	v0,24(s8)
  47e208:	00000000 	nop
  47e20c:	00621021 	addu	v0,v1,v0
  47e210:	90430000 	lbu	v1,0(v0)
  47e214:	8fc20020 	lw	v0,32(s8)
  47e218:	00000000 	nop
  47e21c:	00621026 	xor	v0,v1,v0
  47e220:	8f818018 	lw	at,-32744(gp)
  47e224:	00000000 	nop
  47e228:	24213ff0 	addiu	at,at,16368
  47e22c:	00221021 	addu	v0,at,v0
  47e230:	90830000 	lbu	v1,0(a0)
  47e234:	90420000 	lbu	v0,0(v0)
  47e238:	00000000 	nop
  47e23c:	00621026 	xor	v0,v1,v0
  47e240:	a0a20000 	sb	v0,0(a1)
  47e244:	304200ff 	andi	v0,v0,0xff
  47e248:	afc20020 	sw	v0,32(s8)
  47e24c:	8fc20018 	lw	v0,24(s8)
  47e250:	00000000 	nop
  47e254:	24420001 	addiu	v0,v0,1
  47e258:	afc20018 	sw	v0,24(s8)
  47e25c:	1000ffd9 	b	47e1c4 <MD2Transform+0x214>
  47e260:	00000000 	nop

  /* Zeroize sensitive information.
   */
  MD2_memset ((POINTER)x, 0, sizeof (x));
  47e264:	27c40028 	addiu	a0,s8,40
  47e268:	00002821 	move	a1,zero
  47e26c:	24060030 	li	a2,48
  47e270:	8f998500 	lw	t9,-31488(gp)
  47e274:	00000000 	nop
  47e278:	0320f809 	jalr	t9
  47e27c:	00000000 	nop
  47e280:	8fdc0010 	lw	gp,16(s8)
  47e284:	00000000 	nop
}
  47e288:	03c0e821 	move	sp,s8
  47e28c:	8fbf0060 	lw	ra,96(sp)
  47e290:	8fbe005c 	lw	s8,92(sp)
  47e294:	27bd0068 	addiu	sp,sp,104
  47e298:	03e00008 	jr	ra
  47e29c:	00000000 	nop

0047e2a0 <des_encrypt>:
  47e2a0:	3c1c0fb9 	lui	gp,0xfb9
  47e2a4:	279ce6d0 	addiu	gp,gp,-6448
  47e2a8:	0399e021 	addu	gp,gp,t9
  47e2ac:	00806821 	move	t5,a0
  47e2b0:	8dab0004 	lw	t3,4(t5)
  47e2b4:	8da40000 	lw	a0,0(t5)
  47e2b8:	000b1102 	srl	v0,t3,0x4
  47e2bc:	3c0f0f0f 	lui	t7,0xf0f
  47e2c0:	00447026 	xor	t6,v0,a0
  47e2c4:	35ea0f0f 	ori	t2,t7,0xf0f
  47e2c8:	01ca4024 	and	t0,t6,t2
  47e2cc:	00887826 	xor	t7,a0,t0
  47e2d0:	00084900 	sll	t1,t0,0x4
  47e2d4:	0169c826 	xor	t9,t3,t1
  47e2d8:	000f6402 	srl	t4,t7,0x10
  47e2dc:	01993826 	xor	a3,t4,t9
  47e2e0:	30e3ffff 	andi	v1,a3,0xffff
  47e2e4:	03233826 	xor	a3,t9,v1
  47e2e8:	0003c400 	sll	t8,v1,0x10
  47e2ec:	01f86026 	xor	t4,t7,t8
  47e2f0:	00071082 	srl	v0,a3,0x2
  47e2f4:	3c0e3333 	lui	t6,0x3333
  47e2f8:	004c5026 	xor	t2,v0,t4
  47e2fc:	35cb3333 	ori	t3,t6,0x3333
  47e300:	014b2024 	and	a0,t2,t3
  47e304:	01845826 	xor	t3,t4,a0
  47e308:	00041880 	sll	v1,a0,0x2
  47e30c:	00e36026 	xor	t4,a3,v1
  47e310:	000bca02 	srl	t9,t3,0x8
  47e314:	3c1800ff 	lui	t8,0xff
  47e318:	032c7826 	xor	t7,t9,t4
  47e31c:	370e00ff 	ori	t6,t8,0xff
  47e320:	01ee5024 	and	t2,t7,t6
  47e324:	018a7826 	xor	t7,t4,t2
  47e328:	000a1a00 	sll	v1,t2,0x8
  47e32c:	01635026 	xor	t2,t3,v1
  47e330:	3c045555 	lui	a0,0x5555
  47e334:	000f1042 	srl	v0,t7,0x1
  47e338:	004a3826 	xor	a3,v0,t2
  47e33c:	34995555 	ori	t9,a0,0x5555
  47e340:	00f97024 	and	t6,a3,t9
  47e344:	000ec040 	sll	t8,t6,0x1
  47e348:	014e6026 	xor	t4,t2,t6
  47e34c:	01f85826 	xor	t3,t7,t8
  47e350:	000c1f42 	srl	v1,t4,0x1d
  47e354:	000c20c0 	sll	a0,t4,0x3
  47e358:	000b5742 	srl	t2,t3,0x1d
  47e35c:	000b38c0 	sll	a3,t3,0x3
  47e360:	00834025 	or	t0,a0,v1
  47e364:	00ea4825 	or	t1,a3,t2
  47e368:	10c00400 	beqz	a2,47f36c <des_encrypt+0x10cc>
  47e36c:	00a06021 	move	t4,a1
  47e370:	8d8b0000 	lw	t3,0(t4)
  47e374:	8d840004 	lw	a0,4(t4)
  47e378:	010b7826 	xor	t7,t0,t3
  47e37c:	31e200fc 	andi	v0,t7,0xfc
  47e380:	000fc203 	sra	t8,t7,0x8
  47e384:	0104c826 	xor	t9,t0,a0
  47e388:	8f8a8534 	lw	t2,-31436(gp)
  47e38c:	00000000 	nop
  47e390:	01425021 	addu	t2,t2,v0
  47e394:	8d4a0000 	lw	t2,0(t2)
  47e398:	000f3c02 	srl	a3,t7,0x10
  47e39c:	330500fc 	andi	a1,t8,0xfc
  47e3a0:	8f988534 	lw	t8,-31436(gp)
  47e3a4:	00000000 	nop
  47e3a8:	0305c021 	addu	t8,t8,a1
  47e3ac:	8f180200 	lw	t8,512(t8)
  47e3b0:	00077a02 	srl	t7,a3,0x8
  47e3b4:	30ee00fc 	andi	t6,a3,0xfc
  47e3b8:	00193102 	srl	a2,t9,0x4
  47e3bc:	00191f00 	sll	v1,t9,0x1c
  47e3c0:	0066c825 	or	t9,v1,a2
  47e3c4:	012a2026 	xor	a0,t1,t2
  47e3c8:	8f878534 	lw	a3,-31436(gp)
  47e3cc:	00000000 	nop
  47e3d0:	00ee3821 	addu	a3,a3,t6
  47e3d4:	8ce70400 	lw	a3,1024(a3)
  47e3d8:	31eb00fc 	andi	t3,t7,0xfc
  47e3dc:	00981026 	xor	v0,a0,t8
  47e3e0:	332500fc 	andi	a1,t9,0xfc
  47e3e4:	00193203 	sra	a2,t9,0x8
  47e3e8:	8f8e8534 	lw	t6,-31436(gp)
  47e3ec:	00000000 	nop
  47e3f0:	01cb7021 	addu	t6,t6,t3
  47e3f4:	8dce0600 	lw	t6,1536(t6)
  47e3f8:	00471826 	xor	v1,v0,a3
  47e3fc:	00195402 	srl	t2,t9,0x10
  47e400:	8f988534 	lw	t8,-31436(gp)
  47e404:	00000000 	nop
  47e408:	0305c021 	addu	t8,t8,a1
  47e40c:	8f180100 	lw	t8,256(t8)
  47e410:	30cf00fc 	andi	t7,a2,0xfc
  47e414:	006e5826 	xor	t3,v1,t6
  47e418:	314400fc 	andi	a0,t2,0xfc
  47e41c:	8f998534 	lw	t9,-31436(gp)
  47e420:	00000000 	nop
  47e424:	032fc821 	addu	t9,t9,t7
  47e428:	8f390300 	lw	t9,768(t9)
  47e42c:	000a2a03 	sra	a1,t2,0x8
  47e430:	01783826 	xor	a3,t3,t8
  47e434:	8f838534 	lw	v1,-31436(gp)
  47e438:	00000000 	nop
  47e43c:	00641821 	addu	v1,v1,a0
  47e440:	8c630500 	lw	v1,1280(v1)
  47e444:	30ae00fc 	andi	t6,a1,0xfc
  47e448:	00f93026 	xor	a2,a3,t9
  47e44c:	8f8f8534 	lw	t7,-31436(gp)
  47e450:	00000000 	nop
  47e454:	01ee7821 	addu	t7,t7,t6
  47e458:	8def0700 	lw	t7,1792(t7)
  47e45c:	00c35026 	xor	t2,a2,v1
  47e460:	8d980008 	lw	t8,8(t4)
  47e464:	014f4826 	xor	t1,t2,t7
  47e468:	01382826 	xor	a1,t1,t8
  47e46c:	8d8b000c 	lw	t3,12(t4)
  47e470:	30a400fc 	andi	a0,a1,0xfc
  47e474:	0005ca03 	sra	t9,a1,0x8
  47e478:	012b7026 	xor	t6,t1,t3
  47e47c:	00053c02 	srl	a3,a1,0x10
  47e480:	8f8a8534 	lw	t2,-31436(gp)
  47e484:	00000000 	nop
  47e488:	01445021 	addu	t2,t2,a0
  47e48c:	8d4a0000 	lw	t2,0(t2)
  47e490:	332200fc 	andi	v0,t9,0xfc
  47e494:	30ef00fc 	andi	t7,a3,0xfc
  47e498:	8f998534 	lw	t9,-31436(gp)
  47e49c:	00000000 	nop
  47e4a0:	0322c821 	addu	t9,t9,v0
  47e4a4:	8f390200 	lw	t9,512(t9)
  47e4a8:	0007c202 	srl	t8,a3,0x8
  47e4ac:	000e3102 	srl	a2,t6,0x4
  47e4b0:	000e1f00 	sll	v1,t6,0x1c
  47e4b4:	00667025 	or	t6,v1,a2
  47e4b8:	010a2026 	xor	a0,t0,t2
  47e4bc:	8f828534 	lw	v0,-31436(gp)
  47e4c0:	00000000 	nop
  47e4c4:	004f1021 	addu	v0,v0,t7
  47e4c8:	8c420400 	lw	v0,1024(v0)
  47e4cc:	330b00fc 	andi	t3,t8,0xfc
  47e4d0:	00993826 	xor	a3,a0,t9
  47e4d4:	8f8f8534 	lw	t7,-31436(gp)
  47e4d8:	00000000 	nop
  47e4dc:	01eb7821 	addu	t7,t7,t3
  47e4e0:	8def0600 	lw	t7,1536(t7)
  47e4e4:	31c500fc 	andi	a1,t6,0xfc
  47e4e8:	000e3203 	sra	a2,t6,0x8
  47e4ec:	00e21826 	xor	v1,a3,v0
  47e4f0:	000e5c02 	srl	t3,t6,0x10
  47e4f4:	8f8a8534 	lw	t2,-31436(gp)
  47e4f8:	00000000 	nop
  47e4fc:	01455021 	addu	t2,t2,a1
  47e500:	8d4a0100 	lw	t2,256(t2)
  47e504:	30d800fc 	andi	t8,a2,0xfc
  47e508:	006fc826 	xor	t9,v1,t7
  47e50c:	316400fc 	andi	a0,t3,0xfc
  47e510:	000b1203 	sra	v0,t3,0x8
  47e514:	8f8e8534 	lw	t6,-31436(gp)
  47e518:	00000000 	nop
  47e51c:	01d87021 	addu	t6,t6,t8
  47e520:	8dce0300 	lw	t6,768(t6)
  47e524:	032a3826 	xor	a3,t9,t2
  47e528:	8f838534 	lw	v1,-31436(gp)
  47e52c:	00000000 	nop
  47e530:	00641821 	addu	v1,v1,a0
  47e534:	8c630500 	lw	v1,1280(v1)
  47e538:	304f00fc 	andi	t7,v0,0xfc
  47e53c:	00eec026 	xor	t8,a3,t6
  47e540:	8f8b8534 	lw	t3,-31436(gp)
  47e544:	00000000 	nop
  47e548:	016f5821 	addu	t3,t3,t7
  47e54c:	8d6b0700 	lw	t3,1792(t3)
  47e550:	03033026 	xor	a2,t8,v1
  47e554:	8d8a0010 	lw	t2,16(t4)
  47e558:	00cbc026 	xor	t8,a2,t3
  47e55c:	030a2826 	xor	a1,t8,t2
  47e560:	8d990014 	lw	t9,20(t4)
  47e564:	30a400fc 	andi	a0,a1,0xfc
  47e568:	00057203 	sra	t6,a1,0x8
  47e56c:	03191026 	xor	v0,t8,t9
  47e570:	00057c02 	srl	t7,a1,0x10
  47e574:	8f8a8534 	lw	t2,-31436(gp)
  47e578:	00000000 	nop
  47e57c:	01445021 	addu	t2,t2,a0
  47e580:	8d4a0000 	lw	t2,0(t2)
  47e584:	31c700fc 	andi	a3,t6,0xfc
  47e588:	31e600fc 	andi	a2,t7,0xfc
  47e58c:	00025902 	srl	t3,v0,0x4
  47e590:	000fca02 	srl	t9,t7,0x8
  47e594:	00021f00 	sll	v1,v0,0x1c
  47e598:	8f8e8534 	lw	t6,-31436(gp)
  47e59c:	00000000 	nop
  47e5a0:	01c77021 	addu	t6,t6,a3
  47e5a4:	8dce0200 	lw	t6,512(t6)
  47e5a8:	006b7825 	or	t7,v1,t3
  47e5ac:	012a2026 	xor	a0,t1,t2
  47e5b0:	8f838534 	lw	v1,-31436(gp)
  47e5b4:	00000000 	nop
  47e5b8:	00661821 	addu	v1,v1,a2
  47e5bc:	8c630400 	lw	v1,1024(v1)
  47e5c0:	332b00fc 	andi	t3,t9,0xfc
  47e5c4:	008e3826 	xor	a3,a0,t6
  47e5c8:	8f828534 	lw	v0,-31436(gp)
  47e5cc:	00000000 	nop
  47e5d0:	004b1021 	addu	v0,v0,t3
  47e5d4:	8c420600 	lw	v0,1536(v0)
  47e5d8:	31e500fc 	andi	a1,t7,0xfc
  47e5dc:	000f3203 	sra	a2,t7,0x8
  47e5e0:	00e3c826 	xor	t9,a3,v1
  47e5e4:	8f8e8534 	lw	t6,-31436(gp)
  47e5e8:	00000000 	nop
  47e5ec:	01c57021 	addu	t6,t6,a1
  47e5f0:	8dce0100 	lw	t6,256(t6)
  47e5f4:	000f5c02 	srl	t3,t7,0x10
  47e5f8:	30c300fc 	andi	v1,a2,0xfc
  47e5fc:	316f00fc 	andi	t7,t3,0xfc
  47e600:	03225026 	xor	t2,t9,v0
  47e604:	8f848534 	lw	a0,-31436(gp)
  47e608:	00000000 	nop
  47e60c:	00832021 	addu	a0,a0,v1
  47e610:	8c840300 	lw	a0,768(a0)
  47e614:	000b1203 	sra	v0,t3,0x8
  47e618:	014ec826 	xor	t9,t2,t6
  47e61c:	304700fc 	andi	a3,v0,0xfc
  47e620:	8f8e8534 	lw	t6,-31436(gp)
  47e624:	00000000 	nop
  47e628:	01cf7021 	addu	t6,t6,t7
  47e62c:	8dce0500 	lw	t6,1280(t6)
  47e630:	03241826 	xor	v1,t9,a0
  47e634:	8f8b8534 	lw	t3,-31436(gp)
  47e638:	00000000 	nop
  47e63c:	01675821 	addu	t3,t3,a3
  47e640:	8d6b0700 	lw	t3,1792(t3)
  47e644:	006e3026 	xor	a2,v1,t6
  47e648:	8d8a0018 	lw	t2,24(t4)
  47e64c:	00cb4826 	xor	t1,a2,t3
  47e650:	012a2826 	xor	a1,t1,t2
  47e654:	8d8f001c 	lw	t7,28(t4)
  47e658:	30a400fc 	andi	a0,a1,0xfc
  47e65c:	0005ca03 	sra	t9,a1,0x8
  47e660:	012f7026 	xor	t6,t1,t7
  47e664:	00053c02 	srl	a3,a1,0x10
  47e668:	8f8a8534 	lw	t2,-31436(gp)
  47e66c:	00000000 	nop
  47e670:	01445021 	addu	t2,t2,a0
  47e674:	8d4a0000 	lw	t2,0(t2)
  47e678:	332200fc 	andi	v0,t9,0xfc
  47e67c:	30e600fc 	andi	a2,a3,0xfc
  47e680:	8f998534 	lw	t9,-31436(gp)
  47e684:	00000000 	nop
  47e688:	0322c821 	addu	t9,t9,v0
  47e68c:	8f390200 	lw	t9,512(t9)
  47e690:	00077a02 	srl	t7,a3,0x8
  47e694:	000e5902 	srl	t3,t6,0x4
  47e698:	000e1f00 	sll	v1,t6,0x1c
  47e69c:	006b7025 	or	t6,v1,t3
  47e6a0:	030a2026 	xor	a0,t8,t2
  47e6a4:	8f828534 	lw	v0,-31436(gp)
  47e6a8:	00000000 	nop
  47e6ac:	00461021 	addu	v0,v0,a2
  47e6b0:	8c420400 	lw	v0,1024(v0)
  47e6b4:	31eb00fc 	andi	t3,t7,0xfc
  47e6b8:	00993826 	xor	a3,a0,t9
  47e6bc:	8f988534 	lw	t8,-31436(gp)
  47e6c0:	00000000 	nop
  47e6c4:	030bc021 	addu	t8,t8,t3
  47e6c8:	8f180600 	lw	t8,1536(t8)
  47e6cc:	31c500fc 	andi	a1,t6,0xfc
  47e6d0:	000e3203 	sra	a2,t6,0x8
  47e6d4:	00e21826 	xor	v1,a3,v0
  47e6d8:	000e5c02 	srl	t3,t6,0x10
  47e6dc:	8f8a8534 	lw	t2,-31436(gp)
  47e6e0:	00000000 	nop
  47e6e4:	01455021 	addu	t2,t2,a1
  47e6e8:	8d4a0100 	lw	t2,256(t2)
  47e6ec:	30cf00fc 	andi	t7,a2,0xfc
  47e6f0:	0078c826 	xor	t9,v1,t8
  47e6f4:	316400fc 	andi	a0,t3,0xfc
  47e6f8:	000b1203 	sra	v0,t3,0x8
  47e6fc:	8f8e8534 	lw	t6,-31436(gp)
  47e700:	00000000 	nop
  47e704:	01cf7021 	addu	t6,t6,t7
  47e708:	8dce0300 	lw	t6,768(t6)
  47e70c:	032a3826 	xor	a3,t9,t2
  47e710:	8f838534 	lw	v1,-31436(gp)
  47e714:	00000000 	nop
  47e718:	00641821 	addu	v1,v1,a0
  47e71c:	8c630500 	lw	v1,1280(v1)
  47e720:	305800fc 	andi	t8,v0,0xfc
  47e724:	00ee7826 	xor	t7,a3,t6
  47e728:	8f8b8534 	lw	t3,-31436(gp)
  47e72c:	00000000 	nop
  47e730:	01785821 	addu	t3,t3,t8
  47e734:	8d6b0700 	lw	t3,1792(t3)
  47e738:	01e33026 	xor	a2,t7,v1
  47e73c:	8d8a0020 	lw	t2,32(t4)
  47e740:	00cb7826 	xor	t7,a2,t3
  47e744:	01ea2826 	xor	a1,t7,t2
  47e748:	8d990024 	lw	t9,36(t4)
  47e74c:	30a400fc 	andi	a0,a1,0xfc
  47e750:	00057203 	sra	t6,a1,0x8
  47e754:	01f91026 	xor	v0,t7,t9
  47e758:	0005c402 	srl	t8,a1,0x10
  47e75c:	8f8a8534 	lw	t2,-31436(gp)
  47e760:	00000000 	nop
  47e764:	01445021 	addu	t2,t2,a0
  47e768:	8d4a0000 	lw	t2,0(t2)
  47e76c:	31c700fc 	andi	a3,t6,0xfc
  47e770:	330600fc 	andi	a2,t8,0xfc
  47e774:	00025902 	srl	t3,v0,0x4
  47e778:	0018ca02 	srl	t9,t8,0x8
  47e77c:	00021f00 	sll	v1,v0,0x1c
  47e780:	8f8e8534 	lw	t6,-31436(gp)
  47e784:	00000000 	nop
  47e788:	01c77021 	addu	t6,t6,a3
  47e78c:	8dce0200 	lw	t6,512(t6)
  47e790:	006bc025 	or	t8,v1,t3
  47e794:	012a2026 	xor	a0,t1,t2
  47e798:	8f838534 	lw	v1,-31436(gp)
  47e79c:	00000000 	nop
  47e7a0:	00661821 	addu	v1,v1,a2
  47e7a4:	8c630400 	lw	v1,1024(v1)
  47e7a8:	332b00fc 	andi	t3,t9,0xfc
  47e7ac:	008e3826 	xor	a3,a0,t6
  47e7b0:	8f828534 	lw	v0,-31436(gp)
  47e7b4:	00000000 	nop
  47e7b8:	004b1021 	addu	v0,v0,t3
  47e7bc:	8c420600 	lw	v0,1536(v0)
  47e7c0:	330500fc 	andi	a1,t8,0xfc
  47e7c4:	00183203 	sra	a2,t8,0x8
  47e7c8:	00e3c826 	xor	t9,a3,v1
  47e7cc:	8f8e8534 	lw	t6,-31436(gp)
  47e7d0:	00000000 	nop
  47e7d4:	01c57021 	addu	t6,t6,a1
  47e7d8:	8dce0100 	lw	t6,256(t6)
  47e7dc:	00185c02 	srl	t3,t8,0x10
  47e7e0:	30c300fc 	andi	v1,a2,0xfc
  47e7e4:	317800fc 	andi	t8,t3,0xfc
  47e7e8:	03225026 	xor	t2,t9,v0
  47e7ec:	8f848534 	lw	a0,-31436(gp)
  47e7f0:	00000000 	nop
  47e7f4:	00832021 	addu	a0,a0,v1
  47e7f8:	8c840300 	lw	a0,768(a0)
  47e7fc:	000b1203 	sra	v0,t3,0x8
  47e800:	014ec826 	xor	t9,t2,t6
  47e804:	304700fc 	andi	a3,v0,0xfc
  47e808:	8f8e8534 	lw	t6,-31436(gp)
  47e80c:	00000000 	nop
  47e810:	01d87021 	addu	t6,t6,t8
  47e814:	8dce0500 	lw	t6,1280(t6)
  47e818:	03241826 	xor	v1,t9,a0
  47e81c:	8f8b8534 	lw	t3,-31436(gp)
  47e820:	00000000 	nop
  47e824:	01675821 	addu	t3,t3,a3
  47e828:	8d6b0700 	lw	t3,1792(t3)
  47e82c:	006e3026 	xor	a2,v1,t6
  47e830:	8d8a0028 	lw	t2,40(t4)
  47e834:	00cb4826 	xor	t1,a2,t3
  47e838:	012a2826 	xor	a1,t1,t2
  47e83c:	8d98002c 	lw	t8,44(t4)
  47e840:	30a400fc 	andi	a0,a1,0xfc
  47e844:	0005ca03 	sra	t9,a1,0x8
  47e848:	01387026 	xor	t6,t1,t8
  47e84c:	00053c02 	srl	a3,a1,0x10
  47e850:	8f8a8534 	lw	t2,-31436(gp)
  47e854:	00000000 	nop
  47e858:	01445021 	addu	t2,t2,a0
  47e85c:	8d4a0000 	lw	t2,0(t2)
  47e860:	332200fc 	andi	v0,t9,0xfc
  47e864:	30e600fc 	andi	a2,a3,0xfc
  47e868:	8f998534 	lw	t9,-31436(gp)
  47e86c:	00000000 	nop
  47e870:	0322c821 	addu	t9,t9,v0
  47e874:	8f390200 	lw	t9,512(t9)
  47e878:	0007c202 	srl	t8,a3,0x8
  47e87c:	000e5902 	srl	t3,t6,0x4
  47e880:	000e1f00 	sll	v1,t6,0x1c
  47e884:	006b7025 	or	t6,v1,t3
  47e888:	01ea2026 	xor	a0,t7,t2
  47e88c:	8f828534 	lw	v0,-31436(gp)
  47e890:	00000000 	nop
  47e894:	00461021 	addu	v0,v0,a2
  47e898:	8c420400 	lw	v0,1024(v0)
  47e89c:	330b00fc 	andi	t3,t8,0xfc
  47e8a0:	00993826 	xor	a3,a0,t9
  47e8a4:	8f8f8534 	lw	t7,-31436(gp)
  47e8a8:	00000000 	nop
  47e8ac:	01eb7821 	addu	t7,t7,t3
  47e8b0:	8def0600 	lw	t7,1536(t7)
  47e8b4:	31c500fc 	andi	a1,t6,0xfc
  47e8b8:	000e3203 	sra	a2,t6,0x8
  47e8bc:	00e21826 	xor	v1,a3,v0
  47e8c0:	000e5c02 	srl	t3,t6,0x10
  47e8c4:	8f8a8534 	lw	t2,-31436(gp)
  47e8c8:	00000000 	nop
  47e8cc:	01455021 	addu	t2,t2,a1
  47e8d0:	8d4a0100 	lw	t2,256(t2)
  47e8d4:	30d800fc 	andi	t8,a2,0xfc
  47e8d8:	006fc826 	xor	t9,v1,t7
  47e8dc:	316400fc 	andi	a0,t3,0xfc
  47e8e0:	000b1203 	sra	v0,t3,0x8
  47e8e4:	8f8e8534 	lw	t6,-31436(gp)
  47e8e8:	00000000 	nop
  47e8ec:	01d87021 	addu	t6,t6,t8
  47e8f0:	8dce0300 	lw	t6,768(t6)
  47e8f4:	032a3826 	xor	a3,t9,t2
  47e8f8:	8f838534 	lw	v1,-31436(gp)
  47e8fc:	00000000 	nop
  47e900:	00641821 	addu	v1,v1,a0
  47e904:	8c630500 	lw	v1,1280(v1)
  47e908:	304f00fc 	andi	t7,v0,0xfc
  47e90c:	00eec026 	xor	t8,a3,t6
  47e910:	8f8b8534 	lw	t3,-31436(gp)
  47e914:	00000000 	nop
  47e918:	016f5821 	addu	t3,t3,t7
  47e91c:	8d6b0700 	lw	t3,1792(t3)
  47e920:	03033026 	xor	a2,t8,v1
  47e924:	8d8a0030 	lw	t2,48(t4)
  47e928:	00cbc026 	xor	t8,a2,t3
  47e92c:	030a2826 	xor	a1,t8,t2
  47e930:	8d990034 	lw	t9,52(t4)
  47e934:	30a400fc 	andi	a0,a1,0xfc
  47e938:	00057203 	sra	t6,a1,0x8
  47e93c:	03191026 	xor	v0,t8,t9
  47e940:	00057c02 	srl	t7,a1,0x10
  47e944:	8f8a8534 	lw	t2,-31436(gp)
  47e948:	00000000 	nop
  47e94c:	01445021 	addu	t2,t2,a0
  47e950:	8d4a0000 	lw	t2,0(t2)
  47e954:	31c700fc 	andi	a3,t6,0xfc
  47e958:	31e600fc 	andi	a2,t7,0xfc
  47e95c:	00025902 	srl	t3,v0,0x4
  47e960:	000fca02 	srl	t9,t7,0x8
  47e964:	00021f00 	sll	v1,v0,0x1c
  47e968:	8f8e8534 	lw	t6,-31436(gp)
  47e96c:	00000000 	nop
  47e970:	01c77021 	addu	t6,t6,a3
  47e974:	8dce0200 	lw	t6,512(t6)
  47e978:	006b7825 	or	t7,v1,t3
  47e97c:	012a2026 	xor	a0,t1,t2
  47e980:	8f838534 	lw	v1,-31436(gp)
  47e984:	00000000 	nop
  47e988:	00661821 	addu	v1,v1,a2
  47e98c:	8c630400 	lw	v1,1024(v1)
  47e990:	332b00fc 	andi	t3,t9,0xfc
  47e994:	008e3826 	xor	a3,a0,t6
  47e998:	8f828534 	lw	v0,-31436(gp)
  47e99c:	00000000 	nop
  47e9a0:	004b1021 	addu	v0,v0,t3
  47e9a4:	8c420600 	lw	v0,1536(v0)
  47e9a8:	31e500fc 	andi	a1,t7,0xfc
  47e9ac:	000f3203 	sra	a2,t7,0x8
  47e9b0:	00e3c826 	xor	t9,a3,v1
  47e9b4:	8f8e8534 	lw	t6,-31436(gp)
  47e9b8:	00000000 	nop
  47e9bc:	01c57021 	addu	t6,t6,a1
  47e9c0:	8dce0100 	lw	t6,256(t6)
  47e9c4:	000f5c02 	srl	t3,t7,0x10
  47e9c8:	30c300fc 	andi	v1,a2,0xfc
  47e9cc:	316f00fc 	andi	t7,t3,0xfc
  47e9d0:	03225026 	xor	t2,t9,v0
  47e9d4:	8f848534 	lw	a0,-31436(gp)
  47e9d8:	00000000 	nop
  47e9dc:	00832021 	addu	a0,a0,v1
  47e9e0:	8c840300 	lw	a0,768(a0)
  47e9e4:	000b1203 	sra	v0,t3,0x8
  47e9e8:	014ec826 	xor	t9,t2,t6
  47e9ec:	304700fc 	andi	a3,v0,0xfc
  47e9f0:	8f8e8534 	lw	t6,-31436(gp)
  47e9f4:	00000000 	nop
  47e9f8:	01cf7021 	addu	t6,t6,t7
  47e9fc:	8dce0500 	lw	t6,1280(t6)
  47ea00:	03241826 	xor	v1,t9,a0
  47ea04:	8f8b8534 	lw	t3,-31436(gp)
  47ea08:	00000000 	nop
  47ea0c:	01675821 	addu	t3,t3,a3
  47ea10:	8d6b0700 	lw	t3,1792(t3)
  47ea14:	006e3026 	xor	a2,v1,t6
  47ea18:	8d8a0038 	lw	t2,56(t4)
  47ea1c:	00cb4826 	xor	t1,a2,t3
  47ea20:	012a2826 	xor	a1,t1,t2
  47ea24:	8d8f003c 	lw	t7,60(t4)
  47ea28:	30a400fc 	andi	a0,a1,0xfc
  47ea2c:	0005ca03 	sra	t9,a1,0x8
  47ea30:	012f7026 	xor	t6,t1,t7
  47ea34:	00053c02 	srl	a3,a1,0x10
  47ea38:	8f8a8534 	lw	t2,-31436(gp)
  47ea3c:	00000000 	nop
  47ea40:	01445021 	addu	t2,t2,a0
  47ea44:	8d4a0000 	lw	t2,0(t2)
  47ea48:	332200fc 	andi	v0,t9,0xfc
  47ea4c:	30e600fc 	andi	a2,a3,0xfc
  47ea50:	8f998534 	lw	t9,-31436(gp)
  47ea54:	00000000 	nop
  47ea58:	0322c821 	addu	t9,t9,v0
  47ea5c:	8f390200 	lw	t9,512(t9)
  47ea60:	00077a02 	srl	t7,a3,0x8
  47ea64:	000e5902 	srl	t3,t6,0x4
  47ea68:	000e1f00 	sll	v1,t6,0x1c
  47ea6c:	006b7025 	or	t6,v1,t3
  47ea70:	030a2026 	xor	a0,t8,t2
  47ea74:	8f828534 	lw	v0,-31436(gp)
  47ea78:	00000000 	nop
  47ea7c:	00461021 	addu	v0,v0,a2
  47ea80:	8c420400 	lw	v0,1024(v0)
  47ea84:	31eb00fc 	andi	t3,t7,0xfc
  47ea88:	00993826 	xor	a3,a0,t9
  47ea8c:	8f988534 	lw	t8,-31436(gp)
  47ea90:	00000000 	nop
  47ea94:	030bc021 	addu	t8,t8,t3
  47ea98:	8f180600 	lw	t8,1536(t8)
  47ea9c:	31c500fc 	andi	a1,t6,0xfc
  47eaa0:	000e3203 	sra	a2,t6,0x8
  47eaa4:	00e21826 	xor	v1,a3,v0
  47eaa8:	000e5c02 	srl	t3,t6,0x10
  47eaac:	8f8a8534 	lw	t2,-31436(gp)
  47eab0:	00000000 	nop
  47eab4:	01455021 	addu	t2,t2,a1
  47eab8:	8d4a0100 	lw	t2,256(t2)
  47eabc:	30cf00fc 	andi	t7,a2,0xfc
  47eac0:	0078c826 	xor	t9,v1,t8
  47eac4:	316400fc 	andi	a0,t3,0xfc
  47eac8:	000b1203 	sra	v0,t3,0x8
  47eacc:	8f8e8534 	lw	t6,-31436(gp)
  47ead0:	00000000 	nop
  47ead4:	01cf7021 	addu	t6,t6,t7
  47ead8:	8dce0300 	lw	t6,768(t6)
  47eadc:	032a3826 	xor	a3,t9,t2
  47eae0:	8f838534 	lw	v1,-31436(gp)
  47eae4:	00000000 	nop
  47eae8:	00641821 	addu	v1,v1,a0
  47eaec:	8c630500 	lw	v1,1280(v1)
  47eaf0:	305800fc 	andi	t8,v0,0xfc
  47eaf4:	00ee7826 	xor	t7,a3,t6
  47eaf8:	8f8b8534 	lw	t3,-31436(gp)
  47eafc:	00000000 	nop
  47eb00:	01785821 	addu	t3,t3,t8
  47eb04:	8d6b0700 	lw	t3,1792(t3)
  47eb08:	01e33026 	xor	a2,t7,v1
  47eb0c:	8d8a0040 	lw	t2,64(t4)
  47eb10:	00cb7826 	xor	t7,a2,t3
  47eb14:	01ea2826 	xor	a1,t7,t2
  47eb18:	8d990044 	lw	t9,68(t4)
  47eb1c:	30a400fc 	andi	a0,a1,0xfc
  47eb20:	00057203 	sra	t6,a1,0x8
  47eb24:	01f91026 	xor	v0,t7,t9
  47eb28:	0005c402 	srl	t8,a1,0x10
  47eb2c:	8f8a8534 	lw	t2,-31436(gp)
  47eb30:	00000000 	nop
  47eb34:	01445021 	addu	t2,t2,a0
  47eb38:	8d4a0000 	lw	t2,0(t2)
  47eb3c:	31c700fc 	andi	a3,t6,0xfc
  47eb40:	330600fc 	andi	a2,t8,0xfc
  47eb44:	00025902 	srl	t3,v0,0x4
  47eb48:	0018ca02 	srl	t9,t8,0x8
  47eb4c:	00021f00 	sll	v1,v0,0x1c
  47eb50:	8f8e8534 	lw	t6,-31436(gp)
  47eb54:	00000000 	nop
  47eb58:	01c77021 	addu	t6,t6,a3
  47eb5c:	8dce0200 	lw	t6,512(t6)
  47eb60:	006bc025 	or	t8,v1,t3
  47eb64:	012a2026 	xor	a0,t1,t2
  47eb68:	8f838534 	lw	v1,-31436(gp)
  47eb6c:	00000000 	nop
  47eb70:	00661821 	addu	v1,v1,a2
  47eb74:	8c630400 	lw	v1,1024(v1)
  47eb78:	332b00fc 	andi	t3,t9,0xfc
  47eb7c:	008e3826 	xor	a3,a0,t6
  47eb80:	8f828534 	lw	v0,-31436(gp)
  47eb84:	00000000 	nop
  47eb88:	004b1021 	addu	v0,v0,t3
  47eb8c:	8c420600 	lw	v0,1536(v0)
  47eb90:	330500fc 	andi	a1,t8,0xfc
  47eb94:	00183203 	sra	a2,t8,0x8
  47eb98:	00e3c826 	xor	t9,a3,v1
  47eb9c:	8f8e8534 	lw	t6,-31436(gp)
  47eba0:	00000000 	nop
  47eba4:	01c57021 	addu	t6,t6,a1
  47eba8:	8dce0100 	lw	t6,256(t6)
  47ebac:	00185c02 	srl	t3,t8,0x10
  47ebb0:	30c300fc 	andi	v1,a2,0xfc
  47ebb4:	317800fc 	andi	t8,t3,0xfc
  47ebb8:	03225026 	xor	t2,t9,v0
  47ebbc:	8f848534 	lw	a0,-31436(gp)
  47ebc0:	00000000 	nop
  47ebc4:	00832021 	addu	a0,a0,v1
  47ebc8:	8c840300 	lw	a0,768(a0)
  47ebcc:	000b1203 	sra	v0,t3,0x8
  47ebd0:	014ec826 	xor	t9,t2,t6
  47ebd4:	304700fc 	andi	a3,v0,0xfc
  47ebd8:	8f8e8534 	lw	t6,-31436(gp)
  47ebdc:	00000000 	nop
  47ebe0:	01d87021 	addu	t6,t6,t8
  47ebe4:	8dce0500 	lw	t6,1280(t6)
  47ebe8:	03241826 	xor	v1,t9,a0
  47ebec:	8f8b8534 	lw	t3,-31436(gp)
  47ebf0:	00000000 	nop
  47ebf4:	01675821 	addu	t3,t3,a3
  47ebf8:	8d6b0700 	lw	t3,1792(t3)
  47ebfc:	006e3026 	xor	a2,v1,t6
  47ec00:	8d8a0048 	lw	t2,72(t4)
  47ec04:	00cb4826 	xor	t1,a2,t3
  47ec08:	012a2826 	xor	a1,t1,t2
  47ec0c:	8d98004c 	lw	t8,76(t4)
  47ec10:	30a400fc 	andi	a0,a1,0xfc
  47ec14:	0005ca03 	sra	t9,a1,0x8
  47ec18:	01387026 	xor	t6,t1,t8
  47ec1c:	00053c02 	srl	a3,a1,0x10
  47ec20:	8f8a8534 	lw	t2,-31436(gp)
  47ec24:	00000000 	nop
  47ec28:	01445021 	addu	t2,t2,a0
  47ec2c:	8d4a0000 	lw	t2,0(t2)
  47ec30:	332200fc 	andi	v0,t9,0xfc
  47ec34:	30e600fc 	andi	a2,a3,0xfc
  47ec38:	8f998534 	lw	t9,-31436(gp)
  47ec3c:	00000000 	nop
  47ec40:	0322c821 	addu	t9,t9,v0
  47ec44:	8f390200 	lw	t9,512(t9)
  47ec48:	0007c202 	srl	t8,a3,0x8
  47ec4c:	000e5902 	srl	t3,t6,0x4
  47ec50:	000e1f00 	sll	v1,t6,0x1c
  47ec54:	006b7025 	or	t6,v1,t3
  47ec58:	01ea2026 	xor	a0,t7,t2
  47ec5c:	8f828534 	lw	v0,-31436(gp)
  47ec60:	00000000 	nop
  47ec64:	00461021 	addu	v0,v0,a2
  47ec68:	8c420400 	lw	v0,1024(v0)
  47ec6c:	330b00fc 	andi	t3,t8,0xfc
  47ec70:	00993826 	xor	a3,a0,t9
  47ec74:	8f8f8534 	lw	t7,-31436(gp)
  47ec78:	00000000 	nop
  47ec7c:	01eb7821 	addu	t7,t7,t3
  47ec80:	8def0600 	lw	t7,1536(t7)
  47ec84:	31c500fc 	andi	a1,t6,0xfc
  47ec88:	000e3203 	sra	a2,t6,0x8
  47ec8c:	00e21826 	xor	v1,a3,v0
  47ec90:	000e5c02 	srl	t3,t6,0x10
  47ec94:	8f8a8534 	lw	t2,-31436(gp)
  47ec98:	00000000 	nop
  47ec9c:	01455021 	addu	t2,t2,a1
  47eca0:	8d4a0100 	lw	t2,256(t2)
  47eca4:	30d800fc 	andi	t8,a2,0xfc
  47eca8:	006fc826 	xor	t9,v1,t7
  47ecac:	316400fc 	andi	a0,t3,0xfc
  47ecb0:	000b1203 	sra	v0,t3,0x8
  47ecb4:	8f8e8534 	lw	t6,-31436(gp)
  47ecb8:	00000000 	nop
  47ecbc:	01d87021 	addu	t6,t6,t8
  47ecc0:	8dce0300 	lw	t6,768(t6)
  47ecc4:	032a3826 	xor	a3,t9,t2
  47ecc8:	8f838534 	lw	v1,-31436(gp)
  47eccc:	00000000 	nop
  47ecd0:	00641821 	addu	v1,v1,a0
  47ecd4:	8c630500 	lw	v1,1280(v1)
  47ecd8:	304f00fc 	andi	t7,v0,0xfc
  47ecdc:	00eec026 	xor	t8,a3,t6
  47ece0:	8f8b8534 	lw	t3,-31436(gp)
  47ece4:	00000000 	nop
  47ece8:	016f5821 	addu	t3,t3,t7
  47ecec:	8d6b0700 	lw	t3,1792(t3)
  47ecf0:	03033026 	xor	a2,t8,v1
  47ecf4:	8d8a0050 	lw	t2,80(t4)
  47ecf8:	00cbc026 	xor	t8,a2,t3
  47ecfc:	030a2826 	xor	a1,t8,t2
  47ed00:	8d990054 	lw	t9,84(t4)
  47ed04:	30a400fc 	andi	a0,a1,0xfc
  47ed08:	00057203 	sra	t6,a1,0x8
  47ed0c:	03191026 	xor	v0,t8,t9
  47ed10:	00057c02 	srl	t7,a1,0x10
  47ed14:	8f8a8534 	lw	t2,-31436(gp)
  47ed18:	00000000 	nop
  47ed1c:	01445021 	addu	t2,t2,a0
  47ed20:	8d4a0000 	lw	t2,0(t2)
  47ed24:	31c700fc 	andi	a3,t6,0xfc
  47ed28:	31e600fc 	andi	a2,t7,0xfc
  47ed2c:	00025902 	srl	t3,v0,0x4
  47ed30:	000fca02 	srl	t9,t7,0x8
  47ed34:	00021f00 	sll	v1,v0,0x1c
  47ed38:	8f8e8534 	lw	t6,-31436(gp)
  47ed3c:	00000000 	nop
  47ed40:	01c77021 	addu	t6,t6,a3
  47ed44:	8dce0200 	lw	t6,512(t6)
  47ed48:	006b7825 	or	t7,v1,t3
  47ed4c:	012a2026 	xor	a0,t1,t2
  47ed50:	8f838534 	lw	v1,-31436(gp)
  47ed54:	00000000 	nop
  47ed58:	00661821 	addu	v1,v1,a2
  47ed5c:	8c630400 	lw	v1,1024(v1)
  47ed60:	332b00fc 	andi	t3,t9,0xfc
  47ed64:	008e3826 	xor	a3,a0,t6
  47ed68:	8f828534 	lw	v0,-31436(gp)
  47ed6c:	00000000 	nop
  47ed70:	004b1021 	addu	v0,v0,t3
  47ed74:	8c420600 	lw	v0,1536(v0)
  47ed78:	31e500fc 	andi	a1,t7,0xfc
  47ed7c:	000f3203 	sra	a2,t7,0x8
  47ed80:	00e3c826 	xor	t9,a3,v1
  47ed84:	8f8e8534 	lw	t6,-31436(gp)
  47ed88:	00000000 	nop
  47ed8c:	01c57021 	addu	t6,t6,a1
  47ed90:	8dce0100 	lw	t6,256(t6)
  47ed94:	000f5c02 	srl	t3,t7,0x10
  47ed98:	30c300fc 	andi	v1,a2,0xfc
  47ed9c:	316f00fc 	andi	t7,t3,0xfc
  47eda0:	03225026 	xor	t2,t9,v0
  47eda4:	8f848534 	lw	a0,-31436(gp)
  47eda8:	00000000 	nop
  47edac:	00832021 	addu	a0,a0,v1
  47edb0:	8c840300 	lw	a0,768(a0)
  47edb4:	000b1203 	sra	v0,t3,0x8
  47edb8:	014ec826 	xor	t9,t2,t6
  47edbc:	304700fc 	andi	a3,v0,0xfc
  47edc0:	8f8e8534 	lw	t6,-31436(gp)
  47edc4:	00000000 	nop
  47edc8:	01cf7021 	addu	t6,t6,t7
  47edcc:	8dce0500 	lw	t6,1280(t6)
  47edd0:	03241826 	xor	v1,t9,a0
  47edd4:	8f8b8534 	lw	t3,-31436(gp)
  47edd8:	00000000 	nop
  47eddc:	01675821 	addu	t3,t3,a3
  47ede0:	8d6b0700 	lw	t3,1792(t3)
  47ede4:	006e3026 	xor	a2,v1,t6
  47ede8:	8d8a0058 	lw	t2,88(t4)
  47edec:	00cb4826 	xor	t1,a2,t3
  47edf0:	012a2826 	xor	a1,t1,t2
  47edf4:	8d8f005c 	lw	t7,92(t4)
  47edf8:	30a400fc 	andi	a0,a1,0xfc
  47edfc:	0005ca03 	sra	t9,a1,0x8
  47ee00:	012f7026 	xor	t6,t1,t7
  47ee04:	00053c02 	srl	a3,a1,0x10
  47ee08:	8f8a8534 	lw	t2,-31436(gp)
  47ee0c:	00000000 	nop
  47ee10:	01445021 	addu	t2,t2,a0
  47ee14:	8d4a0000 	lw	t2,0(t2)
  47ee18:	332200fc 	andi	v0,t9,0xfc
  47ee1c:	30e600fc 	andi	a2,a3,0xfc
  47ee20:	8f998534 	lw	t9,-31436(gp)
  47ee24:	00000000 	nop
  47ee28:	0322c821 	addu	t9,t9,v0
  47ee2c:	8f390200 	lw	t9,512(t9)
  47ee30:	00077a02 	srl	t7,a3,0x8
  47ee34:	000e5902 	srl	t3,t6,0x4
  47ee38:	000e1f00 	sll	v1,t6,0x1c
  47ee3c:	006b7025 	or	t6,v1,t3
  47ee40:	030a2026 	xor	a0,t8,t2
  47ee44:	8f828534 	lw	v0,-31436(gp)
  47ee48:	00000000 	nop
  47ee4c:	00461021 	addu	v0,v0,a2
  47ee50:	8c420400 	lw	v0,1024(v0)
  47ee54:	31eb00fc 	andi	t3,t7,0xfc
  47ee58:	00993826 	xor	a3,a0,t9
  47ee5c:	8f988534 	lw	t8,-31436(gp)
  47ee60:	00000000 	nop
  47ee64:	030bc021 	addu	t8,t8,t3
  47ee68:	8f180600 	lw	t8,1536(t8)
  47ee6c:	31c500fc 	andi	a1,t6,0xfc
  47ee70:	000e3203 	sra	a2,t6,0x8
  47ee74:	00e21826 	xor	v1,a3,v0
  47ee78:	000e5c02 	srl	t3,t6,0x10
  47ee7c:	8f8a8534 	lw	t2,-31436(gp)
  47ee80:	00000000 	nop
  47ee84:	01455021 	addu	t2,t2,a1
  47ee88:	8d4a0100 	lw	t2,256(t2)
  47ee8c:	30cf00fc 	andi	t7,a2,0xfc
  47ee90:	0078c826 	xor	t9,v1,t8
  47ee94:	316400fc 	andi	a0,t3,0xfc
  47ee98:	000b1203 	sra	v0,t3,0x8
  47ee9c:	8f8e8534 	lw	t6,-31436(gp)
  47eea0:	00000000 	nop
  47eea4:	01cf7021 	addu	t6,t6,t7
  47eea8:	8dce0300 	lw	t6,768(t6)
  47eeac:	032a3826 	xor	a3,t9,t2
  47eeb0:	8f838534 	lw	v1,-31436(gp)
  47eeb4:	00000000 	nop
  47eeb8:	00641821 	addu	v1,v1,a0
  47eebc:	8c630500 	lw	v1,1280(v1)
  47eec0:	305800fc 	andi	t8,v0,0xfc
  47eec4:	00ee7826 	xor	t7,a3,t6
  47eec8:	8f8b8534 	lw	t3,-31436(gp)
  47eecc:	00000000 	nop
  47eed0:	01785821 	addu	t3,t3,t8
  47eed4:	8d6b0700 	lw	t3,1792(t3)
  47eed8:	01e33026 	xor	a2,t7,v1
  47eedc:	8d8a0060 	lw	t2,96(t4)
  47eee0:	00cb7826 	xor	t7,a2,t3
  47eee4:	01ea2826 	xor	a1,t7,t2
  47eee8:	8d990064 	lw	t9,100(t4)
  47eeec:	30a400fc 	andi	a0,a1,0xfc
  47eef0:	00057203 	sra	t6,a1,0x8
  47eef4:	01f91026 	xor	v0,t7,t9
  47eef8:	0005c402 	srl	t8,a1,0x10
  47eefc:	8f8a8534 	lw	t2,-31436(gp)
  47ef00:	00000000 	nop
  47ef04:	01445021 	addu	t2,t2,a0
  47ef08:	8d4a0000 	lw	t2,0(t2)
  47ef0c:	31c700fc 	andi	a3,t6,0xfc
  47ef10:	330600fc 	andi	a2,t8,0xfc
  47ef14:	00025902 	srl	t3,v0,0x4
  47ef18:	0018ca02 	srl	t9,t8,0x8
  47ef1c:	00021f00 	sll	v1,v0,0x1c
  47ef20:	8f8e8534 	lw	t6,-31436(gp)
  47ef24:	00000000 	nop
  47ef28:	01c77021 	addu	t6,t6,a3
  47ef2c:	8dce0200 	lw	t6,512(t6)
  47ef30:	006bc025 	or	t8,v1,t3
  47ef34:	012a2026 	xor	a0,t1,t2
  47ef38:	8f838534 	lw	v1,-31436(gp)
  47ef3c:	00000000 	nop
  47ef40:	00661821 	addu	v1,v1,a2
  47ef44:	8c630400 	lw	v1,1024(v1)
  47ef48:	332b00fc 	andi	t3,t9,0xfc
  47ef4c:	008e3826 	xor	a3,a0,t6
  47ef50:	8f828534 	lw	v0,-31436(gp)
  47ef54:	00000000 	nop
  47ef58:	004b1021 	addu	v0,v0,t3
  47ef5c:	8c420600 	lw	v0,1536(v0)
  47ef60:	330500fc 	andi	a1,t8,0xfc
  47ef64:	00183203 	sra	a2,t8,0x8
  47ef68:	00e3c826 	xor	t9,a3,v1
  47ef6c:	8f8e8534 	lw	t6,-31436(gp)
  47ef70:	00000000 	nop
  47ef74:	01c57021 	addu	t6,t6,a1
  47ef78:	8dce0100 	lw	t6,256(t6)
  47ef7c:	00185c02 	srl	t3,t8,0x10
  47ef80:	30c300fc 	andi	v1,a2,0xfc
  47ef84:	317800fc 	andi	t8,t3,0xfc
  47ef88:	03225026 	xor	t2,t9,v0
  47ef8c:	8f848534 	lw	a0,-31436(gp)
  47ef90:	00000000 	nop
  47ef94:	00832021 	addu	a0,a0,v1
  47ef98:	8c840300 	lw	a0,768(a0)
  47ef9c:	000b1203 	sra	v0,t3,0x8
  47efa0:	014ec826 	xor	t9,t2,t6
  47efa4:	304700fc 	andi	a3,v0,0xfc
  47efa8:	8f8e8534 	lw	t6,-31436(gp)
  47efac:	00000000 	nop
  47efb0:	01d87021 	addu	t6,t6,t8
  47efb4:	8dce0500 	lw	t6,1280(t6)
  47efb8:	03241826 	xor	v1,t9,a0
  47efbc:	8f8b8534 	lw	t3,-31436(gp)
  47efc0:	00000000 	nop
  47efc4:	01675821 	addu	t3,t3,a3
  47efc8:	8d6b0700 	lw	t3,1792(t3)
  47efcc:	006e3026 	xor	a2,v1,t6
  47efd0:	8d8a0068 	lw	t2,104(t4)
  47efd4:	00cb4826 	xor	t1,a2,t3
  47efd8:	012a2826 	xor	a1,t1,t2
  47efdc:	8d98006c 	lw	t8,108(t4)
  47efe0:	30a400fc 	andi	a0,a1,0xfc
  47efe4:	0005ca03 	sra	t9,a1,0x8
  47efe8:	01387026 	xor	t6,t1,t8
  47efec:	00053c02 	srl	a3,a1,0x10
  47eff0:	8f8a8534 	lw	t2,-31436(gp)
  47eff4:	00000000 	nop
  47eff8:	01445021 	addu	t2,t2,a0
  47effc:	8d4a0000 	lw	t2,0(t2)
  47f000:	332200fc 	andi	v0,t9,0xfc
  47f004:	30e600fc 	andi	a2,a3,0xfc
  47f008:	8f998534 	lw	t9,-31436(gp)
  47f00c:	00000000 	nop
  47f010:	0322c821 	addu	t9,t9,v0
  47f014:	8f390200 	lw	t9,512(t9)
  47f018:	0007c202 	srl	t8,a3,0x8
  47f01c:	000e5902 	srl	t3,t6,0x4
  47f020:	000e1f00 	sll	v1,t6,0x1c
  47f024:	006b7025 	or	t6,v1,t3
  47f028:	01ea2026 	xor	a0,t7,t2
  47f02c:	8f828534 	lw	v0,-31436(gp)
  47f030:	00000000 	nop
  47f034:	00461021 	addu	v0,v0,a2
  47f038:	8c420400 	lw	v0,1024(v0)
  47f03c:	330b00fc 	andi	t3,t8,0xfc
  47f040:	00993826 	xor	a3,a0,t9
  47f044:	8f8f8534 	lw	t7,-31436(gp)
  47f048:	00000000 	nop
  47f04c:	01eb7821 	addu	t7,t7,t3
  47f050:	8def0600 	lw	t7,1536(t7)
  47f054:	31c500fc 	andi	a1,t6,0xfc
  47f058:	000e3203 	sra	a2,t6,0x8
  47f05c:	00e21826 	xor	v1,a3,v0
  47f060:	000e5c02 	srl	t3,t6,0x10
  47f064:	8f998534 	lw	t9,-31436(gp)
  47f068:	00000000 	nop
  47f06c:	0325c821 	addu	t9,t9,a1
  47f070:	8f390100 	lw	t9,256(t9)
  47f074:	30d800fc 	andi	t8,a2,0xfc
  47f078:	006f7026 	xor	t6,v1,t7
  47f07c:	316a00fc 	andi	t2,t3,0xfc
  47f080:	000b1203 	sra	v0,t3,0x8
  47f084:	8f848534 	lw	a0,-31436(gp)
  47f088:	00000000 	nop
  47f08c:	00982021 	addu	a0,a0,t8
  47f090:	8c840300 	lw	a0,768(a0)
  47f094:	01d93826 	xor	a3,t6,t9
  47f098:	8f838534 	lw	v1,-31436(gp)
  47f09c:	00000000 	nop
  47f0a0:	006a1821 	addu	v1,v1,t2
  47f0a4:	8c630500 	lw	v1,1280(v1)
  47f0a8:	304f00fc 	andi	t7,v0,0xfc
  47f0ac:	00e4c026 	xor	t8,a3,a0
  47f0b0:	8f998534 	lw	t9,-31436(gp)
  47f0b4:	00000000 	nop
  47f0b8:	032fc821 	addu	t9,t9,t7
  47f0bc:	8f390700 	lw	t9,1792(t9)
  47f0c0:	03035826 	xor	t3,t8,v1
  47f0c4:	8d8e0070 	lw	t6,112(t4)
  47f0c8:	0179c026 	xor	t8,t3,t9
  47f0cc:	030e2826 	xor	a1,t8,t6
  47f0d0:	8d860074 	lw	a2,116(t4)
  47f0d4:	30a400fc 	andi	a0,a1,0xfc
  47f0d8:	00053a03 	sra	a3,a1,0x8
  47f0dc:	03061026 	xor	v0,t8,a2
  47f0e0:	00057c02 	srl	t7,a1,0x10
  47f0e4:	30ea00fc 	andi	t2,a3,0xfc
  47f0e8:	8f868534 	lw	a2,-31436(gp)
  47f0ec:	00000000 	nop
  47f0f0:	00c43021 	addu	a2,a2,a0
  47f0f4:	8cc60000 	lw	a2,0(a2)
  47f0f8:	31eb00fc 	andi	t3,t7,0xfc
  47f0fc:	8f8e8534 	lw	t6,-31436(gp)
  47f100:	00000000 	nop
  47f104:	01ca7021 	addu	t6,t6,t2
  47f108:	8dce0200 	lw	t6,512(t6)
  47f10c:	0002c902 	srl	t9,v0,0x4
  47f110:	000f5202 	srl	t2,t7,0x8
  47f114:	00021f00 	sll	v1,v0,0x1c
  47f118:	00797825 	or	t7,v1,t9
  47f11c:	01262026 	xor	a0,t1,a2
  47f120:	8f998534 	lw	t9,-31436(gp)
  47f124:	00000000 	nop
  47f128:	032bc821 	addu	t9,t9,t3
  47f12c:	8f390400 	lw	t9,1024(t9)
  47f130:	314b00fc 	andi	t3,t2,0xfc
  47f134:	008e3826 	xor	a3,a0,t6
  47f138:	31e500fc 	andi	a1,t7,0xfc
  47f13c:	000f3203 	sra	a2,t7,0x8
  47f140:	8f828534 	lw	v0,-31436(gp)
  47f144:	00000000 	nop
  47f148:	004b1021 	addu	v0,v0,t3
  47f14c:	8c420600 	lw	v0,1536(v0)
  47f150:	00f97026 	xor	t6,a3,t9
  47f154:	8f8a8534 	lw	t2,-31436(gp)
  47f158:	00000000 	nop
  47f15c:	01455021 	addu	t2,t2,a1
  47f160:	8d4a0100 	lw	t2,256(t2)
  47f164:	000fcc02 	srl	t9,t7,0x10
  47f168:	30c300fc 	andi	v1,a2,0xfc
  47f16c:	332f00fc 	andi	t7,t9,0xfc
  47f170:	01c25826 	xor	t3,t6,v0
  47f174:	8f848534 	lw	a0,-31436(gp)
  47f178:	00000000 	nop
  47f17c:	00832021 	addu	a0,a0,v1
  47f180:	8c840300 	lw	a0,768(a0)
  47f184:	00191203 	sra	v0,t9,0x8
  47f188:	016a7026 	xor	t6,t3,t2
  47f18c:	8f838534 	lw	v1,-31436(gp)
  47f190:	00000000 	nop
  47f194:	006f1821 	addu	v1,v1,t7
  47f198:	8c630500 	lw	v1,1280(v1)
  47f19c:	304700fc 	andi	a3,v0,0xfc
  47f1a0:	01c4c826 	xor	t9,t6,a0
  47f1a4:	8f858534 	lw	a1,-31436(gp)
  47f1a8:	00000000 	nop
  47f1ac:	00a72821 	addu	a1,a1,a3
  47f1b0:	8ca50700 	lw	a1,1792(a1)
  47f1b4:	03235026 	xor	t2,t9,v1
  47f1b8:	8d8f0078 	lw	t7,120(t4)
  47f1bc:	01454826 	xor	t1,t2,a1
  47f1c0:	012f7026 	xor	t6,t1,t7
  47f1c4:	8d8b007c 	lw	t3,124(t4)
  47f1c8:	31c600fc 	andi	a2,t6,0xfc
  47f1cc:	000e2203 	sra	a0,t6,0x8
  47f1d0:	012b6026 	xor	t4,t1,t3
  47f1d4:	000e1402 	srl	v0,t6,0x10
  47f1d8:	8f8a8534 	lw	t2,-31436(gp)
  47f1dc:	00000000 	nop
  47f1e0:	01465021 	addu	t2,t2,a2
  47f1e4:	8d4a0000 	lw	t2,0(t2)
  47f1e8:	308700fc 	andi	a3,a0,0xfc
  47f1ec:	8f8e8534 	lw	t6,-31436(gp)
  47f1f0:	00000000 	nop
  47f1f4:	01c77021 	addu	t6,t6,a3
  47f1f8:	8dce0200 	lw	t6,512(t6)
  47f1fc:	304500fc 	andi	a1,v0,0xfc
  47f200:	00027a02 	srl	t7,v0,0x8
  47f204:	000cc902 	srl	t9,t4,0x4
  47f208:	000c1f00 	sll	v1,t4,0x1c
  47f20c:	00796025 	or	t4,v1,t9
  47f210:	030a2026 	xor	a0,t8,t2
  47f214:	8f878534 	lw	a3,-31436(gp)
  47f218:	00000000 	nop
  47f21c:	00e53821 	addu	a3,a3,a1
  47f220:	8ce70400 	lw	a3,1024(a3)
  47f224:	31eb00fc 	andi	t3,t7,0xfc
  47f228:	008e1826 	xor	v1,a0,t6
  47f22c:	318600fc 	andi	a2,t4,0xfc
  47f230:	8f998534 	lw	t9,-31436(gp)
  47f234:	00000000 	nop
  47f238:	032bc821 	addu	t9,t9,t3
  47f23c:	8f390600 	lw	t9,1536(t9)
  47f240:	000c1203 	sra	v0,t4,0x8
  47f244:	0067c026 	xor	t8,v1,a3
  47f248:	000c7c02 	srl	t7,t4,0x10
  47f24c:	8f8e8534 	lw	t6,-31436(gp)
  47f250:	00000000 	nop
  47f254:	01c67021 	addu	t6,t6,a2
  47f258:	8dce0100 	lw	t6,256(t6)
  47f25c:	304500fc 	andi	a1,v0,0xfc
  47f260:	03195826 	xor	t3,t8,t9
  47f264:	8f8c8534 	lw	t4,-31436(gp)
  47f268:	00000000 	nop
  47f26c:	01856021 	addu	t4,t4,a1
  47f270:	8d8c0300 	lw	t4,768(t4)
  47f274:	31ea00fc 	andi	t2,t7,0xfc
  47f278:	000f2203 	sra	a0,t7,0x8
  47f27c:	016e3826 	xor	a3,t3,t6
  47f280:	8f998534 	lw	t9,-31436(gp)
  47f284:	00000000 	nop
  47f288:	032ac821 	addu	t9,t9,t2
  47f28c:	8f390500 	lw	t9,1280(t9)
  47f290:	308300fc 	andi	v1,a0,0xfc
  47f294:	00ecc026 	xor	t8,a3,t4
  47f298:	8f868534 	lw	a2,-31436(gp)
  47f29c:	00000000 	nop
  47f2a0:	00c33021 	addu	a2,a2,v1
  47f2a4:	8cc60700 	lw	a2,1792(a2)
  47f2a8:	03192826 	xor	a1,t8,t9
  47f2ac:	00a64026 	xor	t0,a1,a2
  47f2b0:	000820c2 	srl	a0,t0,0x3
  47f2b4:	00085f40 	sll	t3,t0,0x1d
  47f2b8:	01647025 	or	t6,t3,a0
  47f2bc:	000918c2 	srl	v1,t1,0x3
  47f2c0:	00093740 	sll	a2,t1,0x1d
  47f2c4:	00c32825 	or	a1,a2,v1
  47f2c8:	000e1042 	srl	v0,t6,0x1
  47f2cc:	3c0a5555 	lui	t2,0x5555
  47f2d0:	00456026 	xor	t4,v0,a1
  47f2d4:	35585555 	ori	t8,t2,0x5555
  47f2d8:	01984824 	and	t1,t4,t8
  47f2dc:	00a96026 	xor	t4,a1,t1
  47f2e0:	00094040 	sll	t0,t1,0x1
  47f2e4:	01c83026 	xor	a2,t6,t0
  47f2e8:	000cca02 	srl	t9,t4,0x8
  47f2ec:	3c0700ff 	lui	a3,0xff
  47f2f0:	03267826 	xor	t7,t9,a2
  47f2f4:	34eb00ff 	ori	t3,a3,0xff
  47f2f8:	01eb2024 	and	a0,t7,t3
  47f2fc:	00c47826 	xor	t7,a2,a0
  47f300:	00045200 	sll	t2,a0,0x8
  47f304:	018a3826 	xor	a3,t4,t2
  47f308:	000f1082 	srl	v0,t7,0x2
  47f30c:	3c183333 	lui	t8,0x3333
  47f310:	00472826 	xor	a1,v0,a3
  47f314:	370e3333 	ori	t6,t8,0x3333
  47f318:	00aec824 	and	t9,a1,t6
  47f31c:	00f9c026 	xor	t8,a3,t9
  47f320:	00191880 	sll	v1,t9,0x2
  47f324:	01e35026 	xor	t2,t7,v1
  47f328:	00185c02 	srl	t3,t8,0x10
  47f32c:	016a3026 	xor	a2,t3,t2
  47f330:	30c4ffff 	andi	a0,a2,0xffff
  47f334:	00046400 	sll	t4,a0,0x10
  47f338:	01447826 	xor	t7,t2,a0
  47f33c:	030c3026 	xor	a2,t8,t4
  47f340:	000f2902 	srl	a1,t7,0x4
  47f344:	3c0e0f0f 	lui	t6,0xf0f
  47f348:	00a6c826 	xor	t9,a1,a2
  47f34c:	35c70f0f 	ori	a3,t6,0xf0f
  47f350:	03275824 	and	t3,t9,a3
  47f354:	000b1900 	sll	v1,t3,0x4
  47f358:	01e35026 	xor	t2,t7,v1
  47f35c:	00cb6026 	xor	t4,a2,t3
  47f360:	adaa0004 	sw	t2,4(t5)
  47f364:	03e00008 	jr	ra
  47f368:	adac0000 	sw	t4,0(t5)
  47f36c:	8d980078 	lw	t8,120(t4)
  47f370:	8d84007c 	lw	a0,124(t4)
  47f374:	01182826 	xor	a1,t0,t8
  47f378:	30a200fc 	andi	v0,a1,0xfc
  47f37c:	00057203 	sra	t6,a1,0x8
  47f380:	01047826 	xor	t7,t0,a0
  47f384:	00053c02 	srl	a3,a1,0x10
  47f388:	8f8a8534 	lw	t2,-31436(gp)
  47f38c:	00000000 	nop
  47f390:	01425021 	addu	t2,t2,v0
  47f394:	8d4a0000 	lw	t2,0(t2)
  47f398:	31d900fc 	andi	t9,t6,0xfc
  47f39c:	8f8e8534 	lw	t6,-31436(gp)
  47f3a0:	00000000 	nop
  47f3a4:	01d97021 	addu	t6,t6,t9
  47f3a8:	8dce0200 	lw	t6,512(t6)
  47f3ac:	0007c202 	srl	t8,a3,0x8
  47f3b0:	30e600fc 	andi	a2,a3,0xfc
  47f3b4:	000f5902 	srl	t3,t7,0x4
  47f3b8:	000f1f00 	sll	v1,t7,0x1c
  47f3bc:	006b7825 	or	t7,v1,t3
  47f3c0:	012ac826 	xor	t9,t1,t2
  47f3c4:	8f878534 	lw	a3,-31436(gp)
  47f3c8:	00000000 	nop
  47f3cc:	00e63821 	addu	a3,a3,a2
  47f3d0:	8ce70400 	lw	a3,1024(a3)
  47f3d4:	330500fc 	andi	a1,t8,0xfc
  47f3d8:	032e1026 	xor	v0,t9,t6
  47f3dc:	31e400fc 	andi	a0,t7,0xfc
  47f3e0:	000f3203 	sra	a2,t7,0x8
  47f3e4:	8f988534 	lw	t8,-31436(gp)
  47f3e8:	00000000 	nop
  47f3ec:	0305c021 	addu	t8,t8,a1
  47f3f0:	8f180600 	lw	t8,1536(t8)
  47f3f4:	00471826 	xor	v1,v0,a3
  47f3f8:	000f7402 	srl	t6,t7,0x10
  47f3fc:	8f998534 	lw	t9,-31436(gp)
  47f400:	00000000 	nop
  47f404:	0324c821 	addu	t9,t9,a0
  47f408:	8f390100 	lw	t9,256(t9)
  47f40c:	30cb00fc 	andi	t3,a2,0xfc
  47f410:	00782826 	xor	a1,v1,t8
  47f414:	31ca00fc 	andi	t2,t6,0xfc
  47f418:	000e2203 	sra	a0,t6,0x8
  47f41c:	8f8f8534 	lw	t7,-31436(gp)
  47f420:	00000000 	nop
  47f424:	01eb7821 	addu	t7,t7,t3
  47f428:	8def0300 	lw	t7,768(t7)
  47f42c:	00b93826 	xor	a3,a1,t9
  47f430:	8f838534 	lw	v1,-31436(gp)
  47f434:	00000000 	nop
  47f438:	006a1821 	addu	v1,v1,t2
  47f43c:	8c630500 	lw	v1,1280(v1)
  47f440:	309800fc 	andi	t8,a0,0xfc
  47f444:	00ef5826 	xor	t3,a3,t7
  47f448:	8f868534 	lw	a2,-31436(gp)
  47f44c:	00000000 	nop
  47f450:	00d83021 	addu	a2,a2,t8
  47f454:	8cc60700 	lw	a2,1792(a2)
  47f458:	01637026 	xor	t6,t3,v1
  47f45c:	8d990070 	lw	t9,112(t4)
  47f460:	01c64826 	xor	t1,t6,a2
  47f464:	01395026 	xor	t2,t1,t9
  47f468:	8d850074 	lw	a1,116(t4)
  47f46c:	314400fc 	andi	a0,t2,0xfc
  47f470:	000a7a03 	sra	t7,t2,0x8
  47f474:	0125c026 	xor	t8,t1,a1
  47f478:	000a3c02 	srl	a3,t2,0x10
  47f47c:	8f8e8534 	lw	t6,-31436(gp)
  47f480:	00000000 	nop
  47f484:	01c47021 	addu	t6,t6,a0
  47f488:	8dce0000 	lw	t6,0(t6)
  47f48c:	31e200fc 	andi	v0,t7,0xfc
  47f490:	8f8f8534 	lw	t7,-31436(gp)
  47f494:	00000000 	nop
  47f498:	01e27821 	addu	t7,t7,v0
  47f49c:	8def0200 	lw	t7,512(t7)
  47f4a0:	0007ca02 	srl	t9,a3,0x8
  47f4a4:	30e600fc 	andi	a2,a3,0xfc
  47f4a8:	00185902 	srl	t3,t8,0x4
  47f4ac:	00181f00 	sll	v1,t8,0x1c
  47f4b0:	006bc025 	or	t8,v1,t3
  47f4b4:	010e2026 	xor	a0,t0,t6
  47f4b8:	8f878534 	lw	a3,-31436(gp)
  47f4bc:	00000000 	nop
  47f4c0:	00e63821 	addu	a3,a3,a2
  47f4c4:	8ce70400 	lw	a3,1024(a3)
  47f4c8:	332500fc 	andi	a1,t9,0xfc
  47f4cc:	008f5026 	xor	t2,a0,t7
  47f4d0:	8f8e8534 	lw	t6,-31436(gp)
  47f4d4:	00000000 	nop
  47f4d8:	01c57021 	addu	t6,t6,a1
  47f4dc:	8dce0600 	lw	t6,1536(t6)
  47f4e0:	330200fc 	andi	v0,t8,0xfc
  47f4e4:	00183203 	sra	a2,t8,0x8
  47f4e8:	01471826 	xor	v1,t2,a3
  47f4ec:	00185c02 	srl	t3,t8,0x10
  47f4f0:	8f858534 	lw	a1,-31436(gp)
  47f4f4:	00000000 	nop
  47f4f8:	00a22821 	addu	a1,a1,v0
  47f4fc:	8ca50100 	lw	a1,256(a1)
  47f500:	30d900fc 	andi	t9,a2,0xfc
  47f504:	006e7826 	xor	t7,v1,t6
  47f508:	316400fc 	andi	a0,t3,0xfc
  47f50c:	000b1203 	sra	v0,t3,0x8
  47f510:	8f988534 	lw	t8,-31436(gp)
  47f514:	00000000 	nop
  47f518:	0319c021 	addu	t8,t8,t9
  47f51c:	8f180300 	lw	t8,768(t8)
  47f520:	01e53826 	xor	a3,t7,a1
  47f524:	8f838534 	lw	v1,-31436(gp)
  47f528:	00000000 	nop
  47f52c:	00641821 	addu	v1,v1,a0
  47f530:	8c630500 	lw	v1,1280(v1)
  47f534:	304e00fc 	andi	t6,v0,0xfc
  47f538:	00f8c826 	xor	t9,a3,t8
  47f53c:	8f8b8534 	lw	t3,-31436(gp)
  47f540:	00000000 	nop
  47f544:	016e5821 	addu	t3,t3,t6
  47f548:	8d6b0700 	lw	t3,1792(t3)
  47f54c:	03233026 	xor	a2,t9,v1
  47f550:	8d850068 	lw	a1,104(t4)
  47f554:	00cbc826 	xor	t9,a2,t3
  47f558:	03255026 	xor	t2,t9,a1
  47f55c:	8d8f006c 	lw	t7,108(t4)
  47f560:	314400fc 	andi	a0,t2,0xfc
  47f564:	000ac203 	sra	t8,t2,0x8
  47f568:	032f1026 	xor	v0,t9,t7
  47f56c:	8f858534 	lw	a1,-31436(gp)
  47f570:	00000000 	nop
  47f574:	00a42821 	addu	a1,a1,a0
  47f578:	8ca50000 	lw	a1,0(a1)
  47f57c:	000a7402 	srl	t6,t2,0x10
  47f580:	330700fc 	andi	a3,t8,0xfc
  47f584:	31c600fc 	andi	a2,t6,0xfc
  47f588:	8f8f8534 	lw	t7,-31436(gp)
  47f58c:	00000000 	nop
  47f590:	01e77821 	addu	t7,t7,a3
  47f594:	8def0200 	lw	t7,512(t7)
  47f598:	00025902 	srl	t3,v0,0x4
  47f59c:	000e5202 	srl	t2,t6,0x8
  47f5a0:	00021f00 	sll	v1,v0,0x1c
  47f5a4:	006b7025 	or	t6,v1,t3
  47f5a8:	0125c026 	xor	t8,t1,a1
  47f5ac:	8f878534 	lw	a3,-31436(gp)
  47f5b0:	00000000 	nop
  47f5b4:	00e63821 	addu	a3,a3,a2
  47f5b8:	8ce70400 	lw	a3,1024(a3)
  47f5bc:	314500fc 	andi	a1,t2,0xfc
  47f5c0:	31c400fc 	andi	a0,t6,0xfc
  47f5c4:	030f5026 	xor	t2,t8,t7
  47f5c8:	000e3203 	sra	a2,t6,0x8
  47f5cc:	8f828534 	lw	v0,-31436(gp)
  47f5d0:	00000000 	nop
  47f5d4:	00451021 	addu	v0,v0,a1
  47f5d8:	8c420600 	lw	v0,1536(v0)
  47f5dc:	01477826 	xor	t7,t2,a3
  47f5e0:	8f988534 	lw	t8,-31436(gp)
  47f5e4:	00000000 	nop
  47f5e8:	0304c021 	addu	t8,t8,a0
  47f5ec:	8f180100 	lw	t8,256(t8)
  47f5f0:	000e5c02 	srl	t3,t6,0x10
  47f5f4:	30c300fc 	andi	v1,a2,0xfc
  47f5f8:	316e00fc 	andi	t6,t3,0xfc
  47f5fc:	01e22826 	xor	a1,t7,v0
  47f600:	8f848534 	lw	a0,-31436(gp)
  47f604:	00000000 	nop
  47f608:	00832021 	addu	a0,a0,v1
  47f60c:	8c840300 	lw	a0,768(a0)
  47f610:	000b1203 	sra	v0,t3,0x8
  47f614:	00b87826 	xor	t7,a1,t8
  47f618:	304700fc 	andi	a3,v0,0xfc
  47f61c:	8f988534 	lw	t8,-31436(gp)
  47f620:	00000000 	nop
  47f624:	030ec021 	addu	t8,t8,t6
  47f628:	8f180500 	lw	t8,1280(t8)
  47f62c:	01e41826 	xor	v1,t7,a0
  47f630:	8f8b8534 	lw	t3,-31436(gp)
  47f634:	00000000 	nop
  47f638:	01675821 	addu	t3,t3,a3
  47f63c:	8d6b0700 	lw	t3,1792(t3)
  47f640:	00783026 	xor	a2,v1,t8
  47f644:	8d850060 	lw	a1,96(t4)
  47f648:	00cb4826 	xor	t1,a2,t3
  47f64c:	01255026 	xor	t2,t1,a1
  47f650:	8d8e0064 	lw	t6,100(t4)
  47f654:	314400fc 	andi	a0,t2,0xfc
  47f658:	000a7a03 	sra	t7,t2,0x8
  47f65c:	012ec026 	xor	t8,t1,t6
  47f660:	000a3c02 	srl	a3,t2,0x10
  47f664:	8f858534 	lw	a1,-31436(gp)
  47f668:	00000000 	nop
  47f66c:	00a42821 	addu	a1,a1,a0
  47f670:	8ca50000 	lw	a1,0(a1)
  47f674:	31e200fc 	andi	v0,t7,0xfc
  47f678:	8f8f8534 	lw	t7,-31436(gp)
  47f67c:	00000000 	nop
  47f680:	01e27821 	addu	t7,t7,v0
  47f684:	8def0200 	lw	t7,512(t7)
  47f688:	00077202 	srl	t6,a3,0x8
  47f68c:	30e600fc 	andi	a2,a3,0xfc
  47f690:	00185902 	srl	t3,t8,0x4
  47f694:	00181f00 	sll	v1,t8,0x1c
  47f698:	006bc025 	or	t8,v1,t3
  47f69c:	03252026 	xor	a0,t9,a1
  47f6a0:	8f878534 	lw	a3,-31436(gp)
  47f6a4:	00000000 	nop
  47f6a8:	00e63821 	addu	a3,a3,a2
  47f6ac:	8ce70400 	lw	a3,1024(a3)
  47f6b0:	31c500fc 	andi	a1,t6,0xfc
  47f6b4:	008f5026 	xor	t2,a0,t7
  47f6b8:	8f998534 	lw	t9,-31436(gp)
  47f6bc:	00000000 	nop
  47f6c0:	0325c821 	addu	t9,t9,a1
  47f6c4:	8f390600 	lw	t9,1536(t9)
  47f6c8:	330200fc 	andi	v0,t8,0xfc
  47f6cc:	00183203 	sra	a2,t8,0x8
  47f6d0:	01471826 	xor	v1,t2,a3
  47f6d4:	00185c02 	srl	t3,t8,0x10
  47f6d8:	8f858534 	lw	a1,-31436(gp)
  47f6dc:	00000000 	nop
  47f6e0:	00a22821 	addu	a1,a1,v0
  47f6e4:	8ca50100 	lw	a1,256(a1)
  47f6e8:	30ce00fc 	andi	t6,a2,0xfc
  47f6ec:	00797826 	xor	t7,v1,t9
  47f6f0:	316400fc 	andi	a0,t3,0xfc
  47f6f4:	000b1203 	sra	v0,t3,0x8
  47f6f8:	8f988534 	lw	t8,-31436(gp)
  47f6fc:	00000000 	nop
  47f700:	030ec021 	addu	t8,t8,t6
  47f704:	8f180300 	lw	t8,768(t8)
  47f708:	01e53826 	xor	a3,t7,a1
  47f70c:	8f838534 	lw	v1,-31436(gp)
  47f710:	00000000 	nop
  47f714:	00641821 	addu	v1,v1,a0
  47f718:	8c630500 	lw	v1,1280(v1)
  47f71c:	305900fc 	andi	t9,v0,0xfc
  47f720:	00f87026 	xor	t6,a3,t8
  47f724:	8f8b8534 	lw	t3,-31436(gp)
  47f728:	00000000 	nop
  47f72c:	01795821 	addu	t3,t3,t9
  47f730:	8d6b0700 	lw	t3,1792(t3)
  47f734:	01c33026 	xor	a2,t6,v1
  47f738:	8d850058 	lw	a1,88(t4)
  47f73c:	00cb7026 	xor	t6,a2,t3
  47f740:	01c55026 	xor	t2,t6,a1
  47f744:	8d8f005c 	lw	t7,92(t4)
  47f748:	314400fc 	andi	a0,t2,0xfc
  47f74c:	000ac203 	sra	t8,t2,0x8
  47f750:	01cf1026 	xor	v0,t6,t7
  47f754:	8f858534 	lw	a1,-31436(gp)
  47f758:	00000000 	nop
  47f75c:	00a42821 	addu	a1,a1,a0
  47f760:	8ca50000 	lw	a1,0(a1)
  47f764:	000acc02 	srl	t9,t2,0x10
  47f768:	330700fc 	andi	a3,t8,0xfc
  47f76c:	332600fc 	andi	a2,t9,0xfc
  47f770:	8f8f8534 	lw	t7,-31436(gp)
  47f774:	00000000 	nop
  47f778:	01e77821 	addu	t7,t7,a3
  47f77c:	8def0200 	lw	t7,512(t7)
  47f780:	00025902 	srl	t3,v0,0x4
  47f784:	00195202 	srl	t2,t9,0x8
  47f788:	00021f00 	sll	v1,v0,0x1c
  47f78c:	006bc825 	or	t9,v1,t3
  47f790:	0125c026 	xor	t8,t1,a1
  47f794:	8f878534 	lw	a3,-31436(gp)
  47f798:	00000000 	nop
  47f79c:	00e63821 	addu	a3,a3,a2
  47f7a0:	8ce70400 	lw	a3,1024(a3)
  47f7a4:	314500fc 	andi	a1,t2,0xfc
  47f7a8:	332400fc 	andi	a0,t9,0xfc
  47f7ac:	030f5026 	xor	t2,t8,t7
  47f7b0:	00193203 	sra	a2,t9,0x8
  47f7b4:	8f828534 	lw	v0,-31436(gp)
  47f7b8:	00000000 	nop
  47f7bc:	00451021 	addu	v0,v0,a1
  47f7c0:	8c420600 	lw	v0,1536(v0)
  47f7c4:	01477826 	xor	t7,t2,a3
  47f7c8:	8f988534 	lw	t8,-31436(gp)
  47f7cc:	00000000 	nop
  47f7d0:	0304c021 	addu	t8,t8,a0
  47f7d4:	8f180100 	lw	t8,256(t8)
  47f7d8:	00195c02 	srl	t3,t9,0x10
  47f7dc:	30c300fc 	andi	v1,a2,0xfc
  47f7e0:	317900fc 	andi	t9,t3,0xfc
  47f7e4:	01e22826 	xor	a1,t7,v0
  47f7e8:	8f848534 	lw	a0,-31436(gp)
  47f7ec:	00000000 	nop
  47f7f0:	00832021 	addu	a0,a0,v1
  47f7f4:	8c840300 	lw	a0,768(a0)
  47f7f8:	000b1203 	sra	v0,t3,0x8
  47f7fc:	00b87826 	xor	t7,a1,t8
  47f800:	304700fc 	andi	a3,v0,0xfc
  47f804:	8f988534 	lw	t8,-31436(gp)
  47f808:	00000000 	nop
  47f80c:	0319c021 	addu	t8,t8,t9
  47f810:	8f180500 	lw	t8,1280(t8)
  47f814:	01e41826 	xor	v1,t7,a0
  47f818:	8f8b8534 	lw	t3,-31436(gp)
  47f81c:	00000000 	nop
  47f820:	01675821 	addu	t3,t3,a3
  47f824:	8d6b0700 	lw	t3,1792(t3)
  47f828:	00783026 	xor	a2,v1,t8
  47f82c:	8d850050 	lw	a1,80(t4)
  47f830:	00cb4826 	xor	t1,a2,t3
  47f834:	01255026 	xor	t2,t1,a1
  47f838:	8d990054 	lw	t9,84(t4)
  47f83c:	314400fc 	andi	a0,t2,0xfc
  47f840:	000a7a03 	sra	t7,t2,0x8
  47f844:	0139c026 	xor	t8,t1,t9
  47f848:	000a3c02 	srl	a3,t2,0x10
  47f84c:	8f858534 	lw	a1,-31436(gp)
  47f850:	00000000 	nop
  47f854:	00a42821 	addu	a1,a1,a0
  47f858:	8ca50000 	lw	a1,0(a1)
  47f85c:	31e200fc 	andi	v0,t7,0xfc
  47f860:	8f8f8534 	lw	t7,-31436(gp)
  47f864:	00000000 	nop
  47f868:	01e27821 	addu	t7,t7,v0
  47f86c:	8def0200 	lw	t7,512(t7)
  47f870:	0007ca02 	srl	t9,a3,0x8
  47f874:	30e600fc 	andi	a2,a3,0xfc
  47f878:	00185902 	srl	t3,t8,0x4
  47f87c:	00181f00 	sll	v1,t8,0x1c
  47f880:	006bc025 	or	t8,v1,t3
  47f884:	01c52026 	xor	a0,t6,a1
  47f888:	8f878534 	lw	a3,-31436(gp)
  47f88c:	00000000 	nop
  47f890:	00e63821 	addu	a3,a3,a2
  47f894:	8ce70400 	lw	a3,1024(a3)
  47f898:	332500fc 	andi	a1,t9,0xfc
  47f89c:	008f5026 	xor	t2,a0,t7
  47f8a0:	8f8e8534 	lw	t6,-31436(gp)
  47f8a4:	00000000 	nop
  47f8a8:	01c57021 	addu	t6,t6,a1
  47f8ac:	8dce0600 	lw	t6,1536(t6)
  47f8b0:	330200fc 	andi	v0,t8,0xfc
  47f8b4:	00183203 	sra	a2,t8,0x8
  47f8b8:	01471826 	xor	v1,t2,a3
  47f8bc:	00185c02 	srl	t3,t8,0x10
  47f8c0:	8f858534 	lw	a1,-31436(gp)
  47f8c4:	00000000 	nop
  47f8c8:	00a22821 	addu	a1,a1,v0
  47f8cc:	8ca50100 	lw	a1,256(a1)
  47f8d0:	30d900fc 	andi	t9,a2,0xfc
  47f8d4:	006e7826 	xor	t7,v1,t6
  47f8d8:	316400fc 	andi	a0,t3,0xfc
  47f8dc:	000b1203 	sra	v0,t3,0x8
  47f8e0:	8f988534 	lw	t8,-31436(gp)
  47f8e4:	00000000 	nop
  47f8e8:	0319c021 	addu	t8,t8,t9
  47f8ec:	8f180300 	lw	t8,768(t8)
  47f8f0:	01e53826 	xor	a3,t7,a1
  47f8f4:	8f838534 	lw	v1,-31436(gp)
  47f8f8:	00000000 	nop
  47f8fc:	00641821 	addu	v1,v1,a0
  47f900:	8c630500 	lw	v1,1280(v1)
  47f904:	304e00fc 	andi	t6,v0,0xfc
  47f908:	00f8c826 	xor	t9,a3,t8
  47f90c:	8f8b8534 	lw	t3,-31436(gp)
  47f910:	00000000 	nop
  47f914:	016e5821 	addu	t3,t3,t6
  47f918:	8d6b0700 	lw	t3,1792(t3)
  47f91c:	03233026 	xor	a2,t9,v1
  47f920:	8d850048 	lw	a1,72(t4)
  47f924:	00cbc826 	xor	t9,a2,t3
  47f928:	03255026 	xor	t2,t9,a1
  47f92c:	8d8f004c 	lw	t7,76(t4)
  47f930:	314400fc 	andi	a0,t2,0xfc
  47f934:	000ac203 	sra	t8,t2,0x8
  47f938:	032f1026 	xor	v0,t9,t7
  47f93c:	8f858534 	lw	a1,-31436(gp)
  47f940:	00000000 	nop
  47f944:	00a42821 	addu	a1,a1,a0
  47f948:	8ca50000 	lw	a1,0(a1)
  47f94c:	000a7402 	srl	t6,t2,0x10
  47f950:	330700fc 	andi	a3,t8,0xfc
  47f954:	31c600fc 	andi	a2,t6,0xfc
  47f958:	8f8f8534 	lw	t7,-31436(gp)
  47f95c:	00000000 	nop
  47f960:	01e77821 	addu	t7,t7,a3
  47f964:	8def0200 	lw	t7,512(t7)
  47f968:	00025902 	srl	t3,v0,0x4
  47f96c:	000e5202 	srl	t2,t6,0x8
  47f970:	00021f00 	sll	v1,v0,0x1c
  47f974:	006b7025 	or	t6,v1,t3
  47f978:	0125c026 	xor	t8,t1,a1
  47f97c:	8f878534 	lw	a3,-31436(gp)
  47f980:	00000000 	nop
  47f984:	00e63821 	addu	a3,a3,a2
  47f988:	8ce70400 	lw	a3,1024(a3)
  47f98c:	314500fc 	andi	a1,t2,0xfc
  47f990:	31c400fc 	andi	a0,t6,0xfc
  47f994:	030f5026 	xor	t2,t8,t7
  47f998:	000e3203 	sra	a2,t6,0x8
  47f99c:	8f828534 	lw	v0,-31436(gp)
  47f9a0:	00000000 	nop
  47f9a4:	00451021 	addu	v0,v0,a1
  47f9a8:	8c420600 	lw	v0,1536(v0)
  47f9ac:	01477826 	xor	t7,t2,a3
  47f9b0:	8f988534 	lw	t8,-31436(gp)
  47f9b4:	00000000 	nop
  47f9b8:	0304c021 	addu	t8,t8,a0
  47f9bc:	8f180100 	lw	t8,256(t8)
  47f9c0:	000e5c02 	srl	t3,t6,0x10
  47f9c4:	30c300fc 	andi	v1,a2,0xfc
  47f9c8:	316e00fc 	andi	t6,t3,0xfc
  47f9cc:	01e22826 	xor	a1,t7,v0
  47f9d0:	8f848534 	lw	a0,-31436(gp)
  47f9d4:	00000000 	nop
  47f9d8:	00832021 	addu	a0,a0,v1
  47f9dc:	8c840300 	lw	a0,768(a0)
  47f9e0:	000b1203 	sra	v0,t3,0x8
  47f9e4:	00b87826 	xor	t7,a1,t8
  47f9e8:	304700fc 	andi	a3,v0,0xfc
  47f9ec:	8f988534 	lw	t8,-31436(gp)
  47f9f0:	00000000 	nop
  47f9f4:	030ec021 	addu	t8,t8,t6
  47f9f8:	8f180500 	lw	t8,1280(t8)
  47f9fc:	01e41826 	xor	v1,t7,a0
  47fa00:	8f8b8534 	lw	t3,-31436(gp)
  47fa04:	00000000 	nop
  47fa08:	01675821 	addu	t3,t3,a3
  47fa0c:	8d6b0700 	lw	t3,1792(t3)
  47fa10:	00783026 	xor	a2,v1,t8
  47fa14:	8d850040 	lw	a1,64(t4)
  47fa18:	00cb4826 	xor	t1,a2,t3
  47fa1c:	01255026 	xor	t2,t1,a1
  47fa20:	8d8e0044 	lw	t6,68(t4)
  47fa24:	314400fc 	andi	a0,t2,0xfc
  47fa28:	000a7a03 	sra	t7,t2,0x8
  47fa2c:	012ec026 	xor	t8,t1,t6
  47fa30:	000a3c02 	srl	a3,t2,0x10
  47fa34:	8f858534 	lw	a1,-31436(gp)
  47fa38:	00000000 	nop
  47fa3c:	00a42821 	addu	a1,a1,a0
  47fa40:	8ca50000 	lw	a1,0(a1)
  47fa44:	31e200fc 	andi	v0,t7,0xfc
  47fa48:	8f8f8534 	lw	t7,-31436(gp)
  47fa4c:	00000000 	nop
  47fa50:	01e27821 	addu	t7,t7,v0
  47fa54:	8def0200 	lw	t7,512(t7)
  47fa58:	00077202 	srl	t6,a3,0x8
  47fa5c:	30e600fc 	andi	a2,a3,0xfc
  47fa60:	00185902 	srl	t3,t8,0x4
  47fa64:	00181f00 	sll	v1,t8,0x1c
  47fa68:	006bc025 	or	t8,v1,t3
  47fa6c:	03252026 	xor	a0,t9,a1
  47fa70:	8f878534 	lw	a3,-31436(gp)
  47fa74:	00000000 	nop
  47fa78:	00e63821 	addu	a3,a3,a2
  47fa7c:	8ce70400 	lw	a3,1024(a3)
  47fa80:	31c500fc 	andi	a1,t6,0xfc
  47fa84:	008f5026 	xor	t2,a0,t7
  47fa88:	8f998534 	lw	t9,-31436(gp)
  47fa8c:	00000000 	nop
  47fa90:	0325c821 	addu	t9,t9,a1
  47fa94:	8f390600 	lw	t9,1536(t9)
  47fa98:	330200fc 	andi	v0,t8,0xfc
  47fa9c:	00183203 	sra	a2,t8,0x8
  47faa0:	01471826 	xor	v1,t2,a3
  47faa4:	00185c02 	srl	t3,t8,0x10
  47faa8:	8f858534 	lw	a1,-31436(gp)
  47faac:	00000000 	nop
  47fab0:	00a22821 	addu	a1,a1,v0
  47fab4:	8ca50100 	lw	a1,256(a1)
  47fab8:	30ce00fc 	andi	t6,a2,0xfc
  47fabc:	00797826 	xor	t7,v1,t9
  47fac0:	316400fc 	andi	a0,t3,0xfc
  47fac4:	000b1203 	sra	v0,t3,0x8
  47fac8:	8f988534 	lw	t8,-31436(gp)
  47facc:	00000000 	nop
  47fad0:	030ec021 	addu	t8,t8,t6
  47fad4:	8f180300 	lw	t8,768(t8)
  47fad8:	01e53826 	xor	a3,t7,a1
  47fadc:	8f838534 	lw	v1,-31436(gp)
  47fae0:	00000000 	nop
  47fae4:	00641821 	addu	v1,v1,a0
  47fae8:	8c630500 	lw	v1,1280(v1)
  47faec:	305900fc 	andi	t9,v0,0xfc
  47faf0:	00f87026 	xor	t6,a3,t8
  47faf4:	8f8b8534 	lw	t3,-31436(gp)
  47faf8:	00000000 	nop
  47fafc:	01795821 	addu	t3,t3,t9
  47fb00:	8d6b0700 	lw	t3,1792(t3)
  47fb04:	01c33026 	xor	a2,t6,v1
  47fb08:	8d850038 	lw	a1,56(t4)
  47fb0c:	00cb7026 	xor	t6,a2,t3
  47fb10:	01c55026 	xor	t2,t6,a1
  47fb14:	8d8f003c 	lw	t7,60(t4)
  47fb18:	314400fc 	andi	a0,t2,0xfc
  47fb1c:	000ac203 	sra	t8,t2,0x8
  47fb20:	01cf1026 	xor	v0,t6,t7
  47fb24:	8f858534 	lw	a1,-31436(gp)
  47fb28:	00000000 	nop
  47fb2c:	00a42821 	addu	a1,a1,a0
  47fb30:	8ca50000 	lw	a1,0(a1)
  47fb34:	000acc02 	srl	t9,t2,0x10
  47fb38:	330700fc 	andi	a3,t8,0xfc
  47fb3c:	332600fc 	andi	a2,t9,0xfc
  47fb40:	8f8f8534 	lw	t7,-31436(gp)
  47fb44:	00000000 	nop
  47fb48:	01e77821 	addu	t7,t7,a3
  47fb4c:	8def0200 	lw	t7,512(t7)
  47fb50:	00025902 	srl	t3,v0,0x4
  47fb54:	00195202 	srl	t2,t9,0x8
  47fb58:	00021f00 	sll	v1,v0,0x1c
  47fb5c:	006bc825 	or	t9,v1,t3
  47fb60:	0125c026 	xor	t8,t1,a1
  47fb64:	8f878534 	lw	a3,-31436(gp)
  47fb68:	00000000 	nop
  47fb6c:	00e63821 	addu	a3,a3,a2
  47fb70:	8ce70400 	lw	a3,1024(a3)
  47fb74:	314500fc 	andi	a1,t2,0xfc
  47fb78:	332400fc 	andi	a0,t9,0xfc
  47fb7c:	030f5026 	xor	t2,t8,t7
  47fb80:	00193203 	sra	a2,t9,0x8
  47fb84:	8f828534 	lw	v0,-31436(gp)
  47fb88:	00000000 	nop
  47fb8c:	00451021 	addu	v0,v0,a1
  47fb90:	8c420600 	lw	v0,1536(v0)
  47fb94:	01477826 	xor	t7,t2,a3
  47fb98:	8f988534 	lw	t8,-31436(gp)
  47fb9c:	00000000 	nop
  47fba0:	0304c021 	addu	t8,t8,a0
  47fba4:	8f180100 	lw	t8,256(t8)
  47fba8:	00195c02 	srl	t3,t9,0x10
  47fbac:	30c300fc 	andi	v1,a2,0xfc
  47fbb0:	317900fc 	andi	t9,t3,0xfc
  47fbb4:	01e22826 	xor	a1,t7,v0
  47fbb8:	8f848534 	lw	a0,-31436(gp)
  47fbbc:	00000000 	nop
  47fbc0:	00832021 	addu	a0,a0,v1
  47fbc4:	8c840300 	lw	a0,768(a0)
  47fbc8:	000b1203 	sra	v0,t3,0x8
  47fbcc:	00b87826 	xor	t7,a1,t8
  47fbd0:	304700fc 	andi	a3,v0,0xfc
  47fbd4:	8f988534 	lw	t8,-31436(gp)
  47fbd8:	00000000 	nop
  47fbdc:	0319c021 	addu	t8,t8,t9
  47fbe0:	8f180500 	lw	t8,1280(t8)
  47fbe4:	01e41826 	xor	v1,t7,a0
  47fbe8:	8f8b8534 	lw	t3,-31436(gp)
  47fbec:	00000000 	nop
  47fbf0:	01675821 	addu	t3,t3,a3
  47fbf4:	8d6b0700 	lw	t3,1792(t3)
  47fbf8:	00783026 	xor	a2,v1,t8
  47fbfc:	8d850030 	lw	a1,48(t4)
  47fc00:	00cb4826 	xor	t1,a2,t3
  47fc04:	01255026 	xor	t2,t1,a1
  47fc08:	8d990034 	lw	t9,52(t4)
  47fc0c:	314400fc 	andi	a0,t2,0xfc
  47fc10:	000a7a03 	sra	t7,t2,0x8
  47fc14:	0139c026 	xor	t8,t1,t9
  47fc18:	000a3c02 	srl	a3,t2,0x10
  47fc1c:	8f858534 	lw	a1,-31436(gp)
  47fc20:	00000000 	nop
  47fc24:	00a42821 	addu	a1,a1,a0
  47fc28:	8ca50000 	lw	a1,0(a1)
  47fc2c:	31e200fc 	andi	v0,t7,0xfc
  47fc30:	8f8f8534 	lw	t7,-31436(gp)
  47fc34:	00000000 	nop
  47fc38:	01e27821 	addu	t7,t7,v0
  47fc3c:	8def0200 	lw	t7,512(t7)
  47fc40:	0007ca02 	srl	t9,a3,0x8
  47fc44:	30e600fc 	andi	a2,a3,0xfc
  47fc48:	00185902 	srl	t3,t8,0x4
  47fc4c:	00181f00 	sll	v1,t8,0x1c
  47fc50:	006bc025 	or	t8,v1,t3
  47fc54:	01c52026 	xor	a0,t6,a1
  47fc58:	8f878534 	lw	a3,-31436(gp)
  47fc5c:	00000000 	nop
  47fc60:	00e63821 	addu	a3,a3,a2
  47fc64:	8ce70400 	lw	a3,1024(a3)
  47fc68:	332500fc 	andi	a1,t9,0xfc
  47fc6c:	008f5026 	xor	t2,a0,t7
  47fc70:	8f8e8534 	lw	t6,-31436(gp)
  47fc74:	00000000 	nop
  47fc78:	01c57021 	addu	t6,t6,a1
  47fc7c:	8dce0600 	lw	t6,1536(t6)
  47fc80:	330200fc 	andi	v0,t8,0xfc
  47fc84:	00183203 	sra	a2,t8,0x8
  47fc88:	01471826 	xor	v1,t2,a3
  47fc8c:	00185c02 	srl	t3,t8,0x10
  47fc90:	8f858534 	lw	a1,-31436(gp)
  47fc94:	00000000 	nop
  47fc98:	00a22821 	addu	a1,a1,v0
  47fc9c:	8ca50100 	lw	a1,256(a1)
  47fca0:	30d900fc 	andi	t9,a2,0xfc
  47fca4:	006e7826 	xor	t7,v1,t6
  47fca8:	316400fc 	andi	a0,t3,0xfc
  47fcac:	000b1203 	sra	v0,t3,0x8
  47fcb0:	8f988534 	lw	t8,-31436(gp)
  47fcb4:	00000000 	nop
  47fcb8:	0319c021 	addu	t8,t8,t9
  47fcbc:	8f180300 	lw	t8,768(t8)
  47fcc0:	01e53826 	xor	a3,t7,a1
  47fcc4:	8f838534 	lw	v1,-31436(gp)
  47fcc8:	00000000 	nop
  47fccc:	00641821 	addu	v1,v1,a0
  47fcd0:	8c630500 	lw	v1,1280(v1)
  47fcd4:	304e00fc 	andi	t6,v0,0xfc
  47fcd8:	00f8c826 	xor	t9,a3,t8
  47fcdc:	8f8b8534 	lw	t3,-31436(gp)
  47fce0:	00000000 	nop
  47fce4:	016e5821 	addu	t3,t3,t6
  47fce8:	8d6b0700 	lw	t3,1792(t3)
  47fcec:	03233026 	xor	a2,t9,v1
  47fcf0:	8d850028 	lw	a1,40(t4)
  47fcf4:	00cbc826 	xor	t9,a2,t3
  47fcf8:	03255026 	xor	t2,t9,a1
  47fcfc:	8d8f002c 	lw	t7,44(t4)
  47fd00:	314400fc 	andi	a0,t2,0xfc
  47fd04:	000ac203 	sra	t8,t2,0x8
  47fd08:	032f1026 	xor	v0,t9,t7
  47fd0c:	8f858534 	lw	a1,-31436(gp)
  47fd10:	00000000 	nop
  47fd14:	00a42821 	addu	a1,a1,a0
  47fd18:	8ca50000 	lw	a1,0(a1)
  47fd1c:	000a7402 	srl	t6,t2,0x10
  47fd20:	330700fc 	andi	a3,t8,0xfc
  47fd24:	31c600fc 	andi	a2,t6,0xfc
  47fd28:	8f8f8534 	lw	t7,-31436(gp)
  47fd2c:	00000000 	nop
  47fd30:	01e77821 	addu	t7,t7,a3
  47fd34:	8def0200 	lw	t7,512(t7)
  47fd38:	00025902 	srl	t3,v0,0x4
  47fd3c:	000e5202 	srl	t2,t6,0x8
  47fd40:	00021f00 	sll	v1,v0,0x1c
  47fd44:	006b7025 	or	t6,v1,t3
  47fd48:	0125c026 	xor	t8,t1,a1
  47fd4c:	8f878534 	lw	a3,-31436(gp)
  47fd50:	00000000 	nop
  47fd54:	00e63821 	addu	a3,a3,a2
  47fd58:	8ce70400 	lw	a3,1024(a3)
  47fd5c:	314500fc 	andi	a1,t2,0xfc
  47fd60:	31c400fc 	andi	a0,t6,0xfc
  47fd64:	030f5026 	xor	t2,t8,t7
  47fd68:	000e3203 	sra	a2,t6,0x8
  47fd6c:	8f828534 	lw	v0,-31436(gp)
  47fd70:	00000000 	nop
  47fd74:	00451021 	addu	v0,v0,a1
  47fd78:	8c420600 	lw	v0,1536(v0)
  47fd7c:	01477826 	xor	t7,t2,a3
  47fd80:	8f988534 	lw	t8,-31436(gp)
  47fd84:	00000000 	nop
  47fd88:	0304c021 	addu	t8,t8,a0
  47fd8c:	8f180100 	lw	t8,256(t8)
  47fd90:	000e5c02 	srl	t3,t6,0x10
  47fd94:	30c300fc 	andi	v1,a2,0xfc
  47fd98:	316e00fc 	andi	t6,t3,0xfc
  47fd9c:	01e22826 	xor	a1,t7,v0
  47fda0:	8f848534 	lw	a0,-31436(gp)
  47fda4:	00000000 	nop
  47fda8:	00832021 	addu	a0,a0,v1
  47fdac:	8c840300 	lw	a0,768(a0)
  47fdb0:	000b1203 	sra	v0,t3,0x8
  47fdb4:	00b87826 	xor	t7,a1,t8
  47fdb8:	304700fc 	andi	a3,v0,0xfc
  47fdbc:	8f988534 	lw	t8,-31436(gp)
  47fdc0:	00000000 	nop
  47fdc4:	030ec021 	addu	t8,t8,t6
  47fdc8:	8f180500 	lw	t8,1280(t8)
  47fdcc:	01e41826 	xor	v1,t7,a0
  47fdd0:	8f8b8534 	lw	t3,-31436(gp)
  47fdd4:	00000000 	nop
  47fdd8:	01675821 	addu	t3,t3,a3
  47fddc:	8d6b0700 	lw	t3,1792(t3)
  47fde0:	00783026 	xor	a2,v1,t8
  47fde4:	8d850020 	lw	a1,32(t4)
  47fde8:	00cb4826 	xor	t1,a2,t3
  47fdec:	01255026 	xor	t2,t1,a1
  47fdf0:	8d8e0024 	lw	t6,36(t4)
  47fdf4:	314400fc 	andi	a0,t2,0xfc
  47fdf8:	000a7a03 	sra	t7,t2,0x8
  47fdfc:	012ec026 	xor	t8,t1,t6
  47fe00:	000a3c02 	srl	a3,t2,0x10
  47fe04:	8f858534 	lw	a1,-31436(gp)
  47fe08:	00000000 	nop
  47fe0c:	00a42821 	addu	a1,a1,a0
  47fe10:	8ca50000 	lw	a1,0(a1)
  47fe14:	31e200fc 	andi	v0,t7,0xfc
  47fe18:	8f8f8534 	lw	t7,-31436(gp)
  47fe1c:	00000000 	nop
  47fe20:	01e27821 	addu	t7,t7,v0
  47fe24:	8def0200 	lw	t7,512(t7)
  47fe28:	00077202 	srl	t6,a3,0x8
  47fe2c:	30e600fc 	andi	a2,a3,0xfc
  47fe30:	00185902 	srl	t3,t8,0x4
  47fe34:	00181f00 	sll	v1,t8,0x1c
  47fe38:	006bc025 	or	t8,v1,t3
  47fe3c:	03252026 	xor	a0,t9,a1
  47fe40:	8f878534 	lw	a3,-31436(gp)
  47fe44:	00000000 	nop
  47fe48:	00e63821 	addu	a3,a3,a2
  47fe4c:	8ce70400 	lw	a3,1024(a3)
  47fe50:	31c500fc 	andi	a1,t6,0xfc
  47fe54:	008f5026 	xor	t2,a0,t7
  47fe58:	8f998534 	lw	t9,-31436(gp)
  47fe5c:	00000000 	nop
  47fe60:	0325c821 	addu	t9,t9,a1
  47fe64:	8f390600 	lw	t9,1536(t9)
  47fe68:	330200fc 	andi	v0,t8,0xfc
  47fe6c:	00183203 	sra	a2,t8,0x8
  47fe70:	01471826 	xor	v1,t2,a3
  47fe74:	00185c02 	srl	t3,t8,0x10
  47fe78:	8f858534 	lw	a1,-31436(gp)
  47fe7c:	00000000 	nop
  47fe80:	00a22821 	addu	a1,a1,v0
  47fe84:	8ca50100 	lw	a1,256(a1)
  47fe88:	30ce00fc 	andi	t6,a2,0xfc
  47fe8c:	00797826 	xor	t7,v1,t9
  47fe90:	316400fc 	andi	a0,t3,0xfc
  47fe94:	000b1203 	sra	v0,t3,0x8
  47fe98:	8f988534 	lw	t8,-31436(gp)
  47fe9c:	00000000 	nop
  47fea0:	030ec021 	addu	t8,t8,t6
  47fea4:	8f180300 	lw	t8,768(t8)
  47fea8:	01e53826 	xor	a3,t7,a1
  47feac:	8f838534 	lw	v1,-31436(gp)
  47feb0:	00000000 	nop
  47feb4:	00641821 	addu	v1,v1,a0
  47feb8:	8c630500 	lw	v1,1280(v1)
  47febc:	305900fc 	andi	t9,v0,0xfc
  47fec0:	00f87026 	xor	t6,a3,t8
  47fec4:	8f8b8534 	lw	t3,-31436(gp)
  47fec8:	00000000 	nop
  47fecc:	01795821 	addu	t3,t3,t9
  47fed0:	8d6b0700 	lw	t3,1792(t3)
  47fed4:	01c33026 	xor	a2,t6,v1
  47fed8:	8d850018 	lw	a1,24(t4)
  47fedc:	00cb7026 	xor	t6,a2,t3
  47fee0:	01c55026 	xor	t2,t6,a1
  47fee4:	8d8f001c 	lw	t7,28(t4)
  47fee8:	314400fc 	andi	a0,t2,0xfc
  47feec:	000ac203 	sra	t8,t2,0x8
  47fef0:	01cf1026 	xor	v0,t6,t7
  47fef4:	8f858534 	lw	a1,-31436(gp)
  47fef8:	00000000 	nop
  47fefc:	00a42821 	addu	a1,a1,a0
  47ff00:	8ca50000 	lw	a1,0(a1)
  47ff04:	000acc02 	srl	t9,t2,0x10
  47ff08:	330700fc 	andi	a3,t8,0xfc
  47ff0c:	332600fc 	andi	a2,t9,0xfc
  47ff10:	8f8f8534 	lw	t7,-31436(gp)
  47ff14:	00000000 	nop
  47ff18:	01e77821 	addu	t7,t7,a3
  47ff1c:	8def0200 	lw	t7,512(t7)
  47ff20:	00025902 	srl	t3,v0,0x4
  47ff24:	00195202 	srl	t2,t9,0x8
  47ff28:	00021f00 	sll	v1,v0,0x1c
  47ff2c:	006bc825 	or	t9,v1,t3
  47ff30:	0125c026 	xor	t8,t1,a1
  47ff34:	8f878534 	lw	a3,-31436(gp)
  47ff38:	00000000 	nop
  47ff3c:	00e63821 	addu	a3,a3,a2
  47ff40:	8ce70400 	lw	a3,1024(a3)
  47ff44:	314500fc 	andi	a1,t2,0xfc
  47ff48:	332400fc 	andi	a0,t9,0xfc
  47ff4c:	030f5026 	xor	t2,t8,t7
  47ff50:	00193203 	sra	a2,t9,0x8
  47ff54:	8f828534 	lw	v0,-31436(gp)
  47ff58:	00000000 	nop
  47ff5c:	00451021 	addu	v0,v0,a1
  47ff60:	8c420600 	lw	v0,1536(v0)
  47ff64:	01477826 	xor	t7,t2,a3
  47ff68:	8f988534 	lw	t8,-31436(gp)
  47ff6c:	00000000 	nop
  47ff70:	0304c021 	addu	t8,t8,a0
  47ff74:	8f180100 	lw	t8,256(t8)
  47ff78:	00195c02 	srl	t3,t9,0x10
  47ff7c:	30c300fc 	andi	v1,a2,0xfc
  47ff80:	317900fc 	andi	t9,t3,0xfc
  47ff84:	01e22826 	xor	a1,t7,v0
  47ff88:	8f848534 	lw	a0,-31436(gp)
  47ff8c:	00000000 	nop
  47ff90:	00832021 	addu	a0,a0,v1
  47ff94:	8c840300 	lw	a0,768(a0)
  47ff98:	000b1203 	sra	v0,t3,0x8
  47ff9c:	00b87826 	xor	t7,a1,t8
  47ffa0:	304700fc 	andi	a3,v0,0xfc
  47ffa4:	8f988534 	lw	t8,-31436(gp)
  47ffa8:	00000000 	nop
  47ffac:	0319c021 	addu	t8,t8,t9
  47ffb0:	8f180500 	lw	t8,1280(t8)
  47ffb4:	01e41826 	xor	v1,t7,a0
  47ffb8:	8f8b8534 	lw	t3,-31436(gp)
  47ffbc:	00000000 	nop
  47ffc0:	01675821 	addu	t3,t3,a3
  47ffc4:	8d6b0700 	lw	t3,1792(t3)
  47ffc8:	00783026 	xor	a2,v1,t8
  47ffcc:	8d850010 	lw	a1,16(t4)
  47ffd0:	00cb4826 	xor	t1,a2,t3
  47ffd4:	01255026 	xor	t2,t1,a1
  47ffd8:	8d990014 	lw	t9,20(t4)
  47ffdc:	314400fc 	andi	a0,t2,0xfc
  47ffe0:	000a7a03 	sra	t7,t2,0x8
  47ffe4:	0139c026 	xor	t8,t1,t9
  47ffe8:	000a3c02 	srl	a3,t2,0x10
  47ffec:	8f858534 	lw	a1,-31436(gp)
  47fff0:	00000000 	nop
  47fff4:	00a42821 	addu	a1,a1,a0
  47fff8:	8ca50000 	lw	a1,0(a1)
  47fffc:	31e200fc 	andi	v0,t7,0xfc
  480000:	8f8f8534 	lw	t7,-31436(gp)
  480004:	00000000 	nop
  480008:	01e27821 	addu	t7,t7,v0
  48000c:	8def0200 	lw	t7,512(t7)
  480010:	0007ca02 	srl	t9,a3,0x8
  480014:	30e600fc 	andi	a2,a3,0xfc
  480018:	00185902 	srl	t3,t8,0x4
  48001c:	00181f00 	sll	v1,t8,0x1c
  480020:	006bc025 	or	t8,v1,t3
  480024:	01c52026 	xor	a0,t6,a1
  480028:	8f878534 	lw	a3,-31436(gp)
  48002c:	00000000 	nop
  480030:	00e63821 	addu	a3,a3,a2
  480034:	8ce70400 	lw	a3,1024(a3)
  480038:	332500fc 	andi	a1,t9,0xfc
  48003c:	008f5026 	xor	t2,a0,t7
  480040:	8f8e8534 	lw	t6,-31436(gp)
  480044:	00000000 	nop
  480048:	01c57021 	addu	t6,t6,a1
  48004c:	8dce0600 	lw	t6,1536(t6)
  480050:	330200fc 	andi	v0,t8,0xfc
  480054:	00183203 	sra	a2,t8,0x8
  480058:	01471826 	xor	v1,t2,a3
  48005c:	00185c02 	srl	t3,t8,0x10
  480060:	8f858534 	lw	a1,-31436(gp)
  480064:	00000000 	nop
  480068:	00a22821 	addu	a1,a1,v0
  48006c:	8ca50100 	lw	a1,256(a1)
  480070:	30d900fc 	andi	t9,a2,0xfc
  480074:	006e7826 	xor	t7,v1,t6
  480078:	316400fc 	andi	a0,t3,0xfc
  48007c:	000b1203 	sra	v0,t3,0x8
  480080:	8f988534 	lw	t8,-31436(gp)
  480084:	00000000 	nop
  480088:	0319c021 	addu	t8,t8,t9
  48008c:	8f180300 	lw	t8,768(t8)
  480090:	01e53826 	xor	a3,t7,a1
  480094:	8f838534 	lw	v1,-31436(gp)
  480098:	00000000 	nop
  48009c:	00641821 	addu	v1,v1,a0
  4800a0:	8c630500 	lw	v1,1280(v1)
  4800a4:	304e00fc 	andi	t6,v0,0xfc
  4800a8:	00f8c826 	xor	t9,a3,t8
  4800ac:	8f8b8534 	lw	t3,-31436(gp)
  4800b0:	00000000 	nop
  4800b4:	016e5821 	addu	t3,t3,t6
  4800b8:	8d6b0700 	lw	t3,1792(t3)
  4800bc:	03233026 	xor	a2,t9,v1
  4800c0:	8d850008 	lw	a1,8(t4)
  4800c4:	00cbc826 	xor	t9,a2,t3
  4800c8:	03255026 	xor	t2,t9,a1
  4800cc:	8d8f000c 	lw	t7,12(t4)
  4800d0:	314400fc 	andi	a0,t2,0xfc
  4800d4:	000ac203 	sra	t8,t2,0x8
  4800d8:	032f7026 	xor	t6,t9,t7
  4800dc:	000a3c02 	srl	a3,t2,0x10
  4800e0:	8f858534 	lw	a1,-31436(gp)
  4800e4:	00000000 	nop
  4800e8:	00a42821 	addu	a1,a1,a0
  4800ec:	8ca50000 	lw	a1,0(a1)
  4800f0:	330200fc 	andi	v0,t8,0xfc
  4800f4:	8f988534 	lw	t8,-31436(gp)
  4800f8:	00000000 	nop
  4800fc:	0302c021 	addu	t8,t8,v0
  480100:	8f180200 	lw	t8,512(t8)
  480104:	00077a02 	srl	t7,a3,0x8
  480108:	30e600fc 	andi	a2,a3,0xfc
  48010c:	000e5902 	srl	t3,t6,0x4
  480110:	000e1f00 	sll	v1,t6,0x1c
  480114:	006b7025 	or	t6,v1,t3
  480118:	01252026 	xor	a0,t1,a1
  48011c:	8f878534 	lw	a3,-31436(gp)
  480120:	00000000 	nop
  480124:	00e63821 	addu	a3,a3,a2
  480128:	8ce70400 	lw	a3,1024(a3)
  48012c:	31e500fc 	andi	a1,t7,0xfc
  480130:	8f8f8534 	lw	t7,-31436(gp)
  480134:	00000000 	nop
  480138:	01e57821 	addu	t7,t7,a1
  48013c:	8def0600 	lw	t7,1536(t7)
  480140:	00985026 	xor	t2,a0,t8
  480144:	31c200fc 	andi	v0,t6,0xfc
  480148:	000e3203 	sra	a2,t6,0x8
  48014c:	0147c026 	xor	t8,t2,a3
  480150:	000e5c02 	srl	t3,t6,0x10
  480154:	8f858534 	lw	a1,-31436(gp)
  480158:	00000000 	nop
  48015c:	00a22821 	addu	a1,a1,v0
  480160:	8ca50100 	lw	a1,256(a1)
  480164:	30c300fc 	andi	v1,a2,0xfc
  480168:	030f7026 	xor	t6,t8,t7
  48016c:	316400fc 	andi	a0,t3,0xfc
  480170:	8f8f8534 	lw	t7,-31436(gp)
  480174:	00000000 	nop
  480178:	01e37821 	addu	t7,t7,v1
  48017c:	8def0300 	lw	t7,768(t7)
  480180:	000b1203 	sra	v0,t3,0x8
  480184:	01c53826 	xor	a3,t6,a1
  480188:	8f838534 	lw	v1,-31436(gp)
  48018c:	00000000 	nop
  480190:	00641821 	addu	v1,v1,a0
  480194:	8c630500 	lw	v1,1280(v1)
  480198:	305800fc 	andi	t8,v0,0xfc
  48019c:	00ef5826 	xor	t3,a3,t7
  4801a0:	8f858534 	lw	a1,-31436(gp)
  4801a4:	00000000 	nop
  4801a8:	00b82821 	addu	a1,a1,t8
  4801ac:	8ca50700 	lw	a1,1792(a1)
  4801b0:	01635026 	xor	t2,t3,v1
  4801b4:	8d8e0000 	lw	t6,0(t4)
  4801b8:	01454826 	xor	t1,t2,a1
  4801bc:	012e7826 	xor	t7,t1,t6
  4801c0:	8d840004 	lw	a0,4(t4)
  4801c4:	31e600fc 	andi	a2,t7,0xfc
  4801c8:	000f6203 	sra	t4,t7,0x8
  4801cc:	0124c026 	xor	t8,t1,a0
  4801d0:	000f1402 	srl	v0,t7,0x10
  4801d4:	8f8a8534 	lw	t2,-31436(gp)
  4801d8:	00000000 	nop
  4801dc:	01465021 	addu	t2,t2,a2
  4801e0:	8d4a0000 	lw	t2,0(t2)
  4801e4:	318700fc 	andi	a3,t4,0xfc
  4801e8:	8f8c8534 	lw	t4,-31436(gp)
  4801ec:	00000000 	nop
  4801f0:	01876021 	addu	t4,t4,a3
  4801f4:	8d8c0200 	lw	t4,512(t4)
  4801f8:	304500fc 	andi	a1,v0,0xfc
  4801fc:	00027202 	srl	t6,v0,0x8
  480200:	00185902 	srl	t3,t8,0x4
  480204:	00181f00 	sll	v1,t8,0x1c
  480208:	006bc025 	or	t8,v1,t3
  48020c:	032a7826 	xor	t7,t9,t2
  480210:	8f878534 	lw	a3,-31436(gp)
  480214:	00000000 	nop
  480218:	00e53821 	addu	a3,a3,a1
  48021c:	8ce70400 	lw	a3,1024(a3)
  480220:	31c400fc 	andi	a0,t6,0xfc
  480224:	01ec1826 	xor	v1,t7,t4
  480228:	330600fc 	andi	a2,t8,0xfc
  48022c:	8f998534 	lw	t9,-31436(gp)
  480230:	00000000 	nop
  480234:	0324c821 	addu	t9,t9,a0
  480238:	8f390600 	lw	t9,1536(t9)
  48023c:	00181203 	sra	v0,t8,0x8
  480240:	00677026 	xor	t6,v1,a3
  480244:	8f8c8534 	lw	t4,-31436(gp)
  480248:	00000000 	nop
  48024c:	01866021 	addu	t4,t4,a2
  480250:	8d8c0100 	lw	t4,256(t4)
  480254:	00182c02 	srl	a1,t8,0x10
  480258:	304b00fc 	andi	t3,v0,0xfc
  48025c:	01d92026 	xor	a0,t6,t9
  480260:	8f988534 	lw	t8,-31436(gp)
  480264:	00000000 	nop
  480268:	030bc021 	addu	t8,t8,t3
  48026c:	8f180300 	lw	t8,768(t8)
  480270:	30aa00fc 	andi	t2,a1,0xfc
  480274:	00057a03 	sra	t7,a1,0x8
  480278:	008c3826 	xor	a3,a0,t4
  48027c:	8f998534 	lw	t9,-31436(gp)
  480280:	00000000 	nop
  480284:	032ac821 	addu	t9,t9,t2
  480288:	8f390500 	lw	t9,1280(t9)
  48028c:	31e300fc 	andi	v1,t7,0xfc
  480290:	00f83026 	xor	a2,a3,t8
  480294:	8f8e8534 	lw	t6,-31436(gp)
  480298:	00000000 	nop
  48029c:	01c37021 	addu	t6,t6,v1
  4802a0:	8dce0700 	lw	t6,1792(t6)
  4802a4:	00d96026 	xor	t4,a2,t9
  4802a8:	1000fc01 	b	47f2b0 <des_encrypt+0x1010>
  4802ac:	018e4026 	xor	t0,t4,t6

004802b0 <des_encrypt2>:
  4802b0:	3c1c0fb9 	lui	gp,0xfb9
  4802b4:	279cc6c0 	addiu	gp,gp,-14656
  4802b8:	0399e021 	addu	gp,gp,t9
  4802bc:	00806821 	move	t5,a0
  4802c0:	8da80000 	lw	t0,0(t5)
  4802c4:	8da20004 	lw	v0,4(t5)
  4802c8:	00081f42 	srl	v1,t0,0x1d
  4802cc:	000820c0 	sll	a0,t0,0x3
  4802d0:	00025742 	srl	t2,v0,0x1d
  4802d4:	000238c0 	sll	a3,v0,0x3
  4802d8:	00834825 	or	t1,a0,v1
  4802dc:	00ea4025 	or	t0,a3,t2
  4802e0:	10c003da 	beqz	a2,48124c <des_encrypt2+0xf9c>
  4802e4:	00a06021 	move	t4,a1
  4802e8:	8d8b0000 	lw	t3,0(t4)
  4802ec:	8d840004 	lw	a0,4(t4)
  4802f0:	012b7826 	xor	t7,t1,t3
  4802f4:	31e200fc 	andi	v0,t7,0xfc
  4802f8:	000f7203 	sra	t6,t7,0x8
  4802fc:	0124c826 	xor	t9,t1,a0
  480300:	8f8a8534 	lw	t2,-31436(gp)
  480304:	00000000 	nop
  480308:	01425021 	addu	t2,t2,v0
  48030c:	8d4a0000 	lw	t2,0(t2)
  480310:	000f3c02 	srl	a3,t7,0x10
  480314:	31c500fc 	andi	a1,t6,0xfc
  480318:	8f8e8534 	lw	t6,-31436(gp)
  48031c:	00000000 	nop
  480320:	01c57021 	addu	t6,t6,a1
  480324:	8dce0200 	lw	t6,512(t6)
  480328:	00077a02 	srl	t7,a3,0x8
  48032c:	30f800fc 	andi	t8,a3,0xfc
  480330:	00193102 	srl	a2,t9,0x4
  480334:	00191f00 	sll	v1,t9,0x1c
  480338:	0066c825 	or	t9,v1,a2
  48033c:	010a2026 	xor	a0,t0,t2
  480340:	8f878534 	lw	a3,-31436(gp)
  480344:	00000000 	nop
  480348:	00f83821 	addu	a3,a3,t8
  48034c:	8ce70400 	lw	a3,1024(a3)
  480350:	31eb00fc 	andi	t3,t7,0xfc
  480354:	008e1026 	xor	v0,a0,t6
  480358:	8f988534 	lw	t8,-31436(gp)
  48035c:	00000000 	nop
  480360:	030bc021 	addu	t8,t8,t3
  480364:	8f180600 	lw	t8,1536(t8)
  480368:	332500fc 	andi	a1,t9,0xfc
  48036c:	00193203 	sra	a2,t9,0x8
  480370:	00471826 	xor	v1,v0,a3
  480374:	00195c02 	srl	t3,t9,0x10
  480378:	8f8a8534 	lw	t2,-31436(gp)
  48037c:	00000000 	nop
  480380:	01455021 	addu	t2,t2,a1
  480384:	8d4a0100 	lw	t2,256(t2)
  480388:	30cf00fc 	andi	t7,a2,0xfc
  48038c:	00787026 	xor	t6,v1,t8
  480390:	316400fc 	andi	a0,t3,0xfc
  480394:	000b2a03 	sra	a1,t3,0x8
  480398:	8f998534 	lw	t9,-31436(gp)
  48039c:	00000000 	nop
  4803a0:	032fc821 	addu	t9,t9,t7
  4803a4:	8f390300 	lw	t9,768(t9)
  4803a8:	01ca3826 	xor	a3,t6,t2
  4803ac:	8f838534 	lw	v1,-31436(gp)
  4803b0:	00000000 	nop
  4803b4:	00641821 	addu	v1,v1,a0
  4803b8:	8c630500 	lw	v1,1280(v1)
  4803bc:	30b800fc 	andi	t8,a1,0xfc
  4803c0:	00f97826 	xor	t7,a3,t9
  4803c4:	8f8b8534 	lw	t3,-31436(gp)
  4803c8:	00000000 	nop
  4803cc:	01785821 	addu	t3,t3,t8
  4803d0:	8d6b0700 	lw	t3,1792(t3)
  4803d4:	01e33026 	xor	a2,t7,v1
  4803d8:	8d8a0008 	lw	t2,8(t4)
  4803dc:	00cb7826 	xor	t7,a2,t3
  4803e0:	01ea2826 	xor	a1,t7,t2
  4803e4:	8d8e000c 	lw	t6,12(t4)
  4803e8:	30a400fc 	andi	a0,a1,0xfc
  4803ec:	0005ca03 	sra	t9,a1,0x8
  4803f0:	01ee1026 	xor	v0,t7,t6
  4803f4:	0005c402 	srl	t8,a1,0x10
  4803f8:	8f8a8534 	lw	t2,-31436(gp)
  4803fc:	00000000 	nop
  480400:	01445021 	addu	t2,t2,a0
  480404:	8d4a0000 	lw	t2,0(t2)
  480408:	332700fc 	andi	a3,t9,0xfc
  48040c:	330600fc 	andi	a2,t8,0xfc
  480410:	00025902 	srl	t3,v0,0x4
  480414:	00187202 	srl	t6,t8,0x8
  480418:	00021f00 	sll	v1,v0,0x1c
  48041c:	8f998534 	lw	t9,-31436(gp)
  480420:	00000000 	nop
  480424:	0327c821 	addu	t9,t9,a3
  480428:	8f390200 	lw	t9,512(t9)
  48042c:	006bc025 	or	t8,v1,t3
  480430:	012a2026 	xor	a0,t1,t2
  480434:	8f838534 	lw	v1,-31436(gp)
  480438:	00000000 	nop
  48043c:	00661821 	addu	v1,v1,a2
  480440:	8c630400 	lw	v1,1024(v1)
  480444:	31cb00fc 	andi	t3,t6,0xfc
  480448:	00993826 	xor	a3,a0,t9
  48044c:	8f828534 	lw	v0,-31436(gp)
  480450:	00000000 	nop
  480454:	004b1021 	addu	v0,v0,t3
  480458:	8c420600 	lw	v0,1536(v0)
  48045c:	330500fc 	andi	a1,t8,0xfc
  480460:	00183203 	sra	a2,t8,0x8
  480464:	00e37026 	xor	t6,a3,v1
  480468:	8f998534 	lw	t9,-31436(gp)
  48046c:	00000000 	nop
  480470:	0325c821 	addu	t9,t9,a1
  480474:	8f390100 	lw	t9,256(t9)
  480478:	00185c02 	srl	t3,t8,0x10
  48047c:	30c300fc 	andi	v1,a2,0xfc
  480480:	317800fc 	andi	t8,t3,0xfc
  480484:	01c25026 	xor	t2,t6,v0
  480488:	8f848534 	lw	a0,-31436(gp)
  48048c:	00000000 	nop
  480490:	00832021 	addu	a0,a0,v1
  480494:	8c840300 	lw	a0,768(a0)
  480498:	000b1203 	sra	v0,t3,0x8
  48049c:	01597026 	xor	t6,t2,t9
  4804a0:	304700fc 	andi	a3,v0,0xfc
  4804a4:	8f998534 	lw	t9,-31436(gp)
  4804a8:	00000000 	nop
  4804ac:	0338c821 	addu	t9,t9,t8
  4804b0:	8f390500 	lw	t9,1280(t9)
  4804b4:	01c41826 	xor	v1,t6,a0
  4804b8:	8f8b8534 	lw	t3,-31436(gp)
  4804bc:	00000000 	nop
  4804c0:	01675821 	addu	t3,t3,a3
  4804c4:	8d6b0700 	lw	t3,1792(t3)
  4804c8:	00793026 	xor	a2,v1,t9
  4804cc:	8d8a0010 	lw	t2,16(t4)
  4804d0:	00cb4826 	xor	t1,a2,t3
  4804d4:	012a2826 	xor	a1,t1,t2
  4804d8:	8d980014 	lw	t8,20(t4)
  4804dc:	30a400fc 	andi	a0,a1,0xfc
  4804e0:	00057203 	sra	t6,a1,0x8
  4804e4:	0138c826 	xor	t9,t1,t8
  4804e8:	00053c02 	srl	a3,a1,0x10
  4804ec:	8f8a8534 	lw	t2,-31436(gp)
  4804f0:	00000000 	nop
  4804f4:	01445021 	addu	t2,t2,a0
  4804f8:	8d4a0000 	lw	t2,0(t2)
  4804fc:	31c200fc 	andi	v0,t6,0xfc
  480500:	30e600fc 	andi	a2,a3,0xfc
  480504:	8f8e8534 	lw	t6,-31436(gp)
  480508:	00000000 	nop
  48050c:	01c27021 	addu	t6,t6,v0
  480510:	8dce0200 	lw	t6,512(t6)
  480514:	0007c202 	srl	t8,a3,0x8
  480518:	00195902 	srl	t3,t9,0x4
  48051c:	00191f00 	sll	v1,t9,0x1c
  480520:	006bc825 	or	t9,v1,t3
  480524:	01ea2026 	xor	a0,t7,t2
  480528:	8f828534 	lw	v0,-31436(gp)
  48052c:	00000000 	nop
  480530:	00461021 	addu	v0,v0,a2
  480534:	8c420400 	lw	v0,1024(v0)
  480538:	330b00fc 	andi	t3,t8,0xfc
  48053c:	008e3826 	xor	a3,a0,t6
  480540:	8f8f8534 	lw	t7,-31436(gp)
  480544:	00000000 	nop
  480548:	01eb7821 	addu	t7,t7,t3
  48054c:	8def0600 	lw	t7,1536(t7)
  480550:	332500fc 	andi	a1,t9,0xfc
  480554:	00193203 	sra	a2,t9,0x8
  480558:	00e21826 	xor	v1,a3,v0
  48055c:	00195c02 	srl	t3,t9,0x10
  480560:	8f8a8534 	lw	t2,-31436(gp)
  480564:	00000000 	nop
  480568:	01455021 	addu	t2,t2,a1
  48056c:	8d4a0100 	lw	t2,256(t2)
  480570:	30d800fc 	andi	t8,a2,0xfc
  480574:	006f7026 	xor	t6,v1,t7
  480578:	316400fc 	andi	a0,t3,0xfc
  48057c:	000b1203 	sra	v0,t3,0x8
  480580:	8f998534 	lw	t9,-31436(gp)
  480584:	00000000 	nop
  480588:	0338c821 	addu	t9,t9,t8
  48058c:	8f390300 	lw	t9,768(t9)
  480590:	01ca3826 	xor	a3,t6,t2
  480594:	8f838534 	lw	v1,-31436(gp)
  480598:	00000000 	nop
  48059c:	00641821 	addu	v1,v1,a0
  4805a0:	8c630500 	lw	v1,1280(v1)
  4805a4:	304f00fc 	andi	t7,v0,0xfc
  4805a8:	00f9c026 	xor	t8,a3,t9
  4805ac:	8f8b8534 	lw	t3,-31436(gp)
  4805b0:	00000000 	nop
  4805b4:	016f5821 	addu	t3,t3,t7
  4805b8:	8d6b0700 	lw	t3,1792(t3)
  4805bc:	03033026 	xor	a2,t8,v1
  4805c0:	8d8a0018 	lw	t2,24(t4)
  4805c4:	00cbc026 	xor	t8,a2,t3
  4805c8:	030a2826 	xor	a1,t8,t2
  4805cc:	8d8e001c 	lw	t6,28(t4)
  4805d0:	30a400fc 	andi	a0,a1,0xfc
  4805d4:	0005ca03 	sra	t9,a1,0x8
  4805d8:	030e1026 	xor	v0,t8,t6
  4805dc:	00057c02 	srl	t7,a1,0x10
  4805e0:	8f8a8534 	lw	t2,-31436(gp)
  4805e4:	00000000 	nop
  4805e8:	01445021 	addu	t2,t2,a0
  4805ec:	8d4a0000 	lw	t2,0(t2)
  4805f0:	332700fc 	andi	a3,t9,0xfc
  4805f4:	31e600fc 	andi	a2,t7,0xfc
  4805f8:	00025902 	srl	t3,v0,0x4
  4805fc:	000f7202 	srl	t6,t7,0x8
  480600:	00021f00 	sll	v1,v0,0x1c
  480604:	8f998534 	lw	t9,-31436(gp)
  480608:	00000000 	nop
  48060c:	0327c821 	addu	t9,t9,a3
  480610:	8f390200 	lw	t9,512(t9)
  480614:	006b7825 	or	t7,v1,t3
  480618:	012a2026 	xor	a0,t1,t2
  48061c:	8f838534 	lw	v1,-31436(gp)
  480620:	00000000 	nop
  480624:	00661821 	addu	v1,v1,a2
  480628:	8c630400 	lw	v1,1024(v1)
  48062c:	31cb00fc 	andi	t3,t6,0xfc
  480630:	00993826 	xor	a3,a0,t9
  480634:	8f828534 	lw	v0,-31436(gp)
  480638:	00000000 	nop
  48063c:	004b1021 	addu	v0,v0,t3
  480640:	8c420600 	lw	v0,1536(v0)
  480644:	31e500fc 	andi	a1,t7,0xfc
  480648:	000f3203 	sra	a2,t7,0x8
  48064c:	00e37026 	xor	t6,a3,v1
  480650:	8f998534 	lw	t9,-31436(gp)
  480654:	00000000 	nop
  480658:	0325c821 	addu	t9,t9,a1
  48065c:	8f390100 	lw	t9,256(t9)
  480660:	000f5c02 	srl	t3,t7,0x10
  480664:	30c300fc 	andi	v1,a2,0xfc
  480668:	316f00fc 	andi	t7,t3,0xfc
  48066c:	01c25026 	xor	t2,t6,v0
  480670:	8f848534 	lw	a0,-31436(gp)
  480674:	00000000 	nop
  480678:	00832021 	addu	a0,a0,v1
  48067c:	8c840300 	lw	a0,768(a0)
  480680:	000b1203 	sra	v0,t3,0x8
  480684:	01597026 	xor	t6,t2,t9
  480688:	304700fc 	andi	a3,v0,0xfc
  48068c:	8f998534 	lw	t9,-31436(gp)
  480690:	00000000 	nop
  480694:	032fc821 	addu	t9,t9,t7
  480698:	8f390500 	lw	t9,1280(t9)
  48069c:	01c41826 	xor	v1,t6,a0
  4806a0:	8f8b8534 	lw	t3,-31436(gp)
  4806a4:	00000000 	nop
  4806a8:	01675821 	addu	t3,t3,a3
  4806ac:	8d6b0700 	lw	t3,1792(t3)
  4806b0:	00793026 	xor	a2,v1,t9
  4806b4:	8d8a0020 	lw	t2,32(t4)
  4806b8:	00cb4826 	xor	t1,a2,t3
  4806bc:	012a2826 	xor	a1,t1,t2
  4806c0:	8d8f0024 	lw	t7,36(t4)
  4806c4:	30a400fc 	andi	a0,a1,0xfc
  4806c8:	00057203 	sra	t6,a1,0x8
  4806cc:	012fc826 	xor	t9,t1,t7
  4806d0:	00053c02 	srl	a3,a1,0x10
  4806d4:	8f8a8534 	lw	t2,-31436(gp)
  4806d8:	00000000 	nop
  4806dc:	01445021 	addu	t2,t2,a0
  4806e0:	8d4a0000 	lw	t2,0(t2)
  4806e4:	31c200fc 	andi	v0,t6,0xfc
  4806e8:	30e600fc 	andi	a2,a3,0xfc
  4806ec:	8f8e8534 	lw	t6,-31436(gp)
  4806f0:	00000000 	nop
  4806f4:	01c27021 	addu	t6,t6,v0
  4806f8:	8dce0200 	lw	t6,512(t6)
  4806fc:	00077a02 	srl	t7,a3,0x8
  480700:	00195902 	srl	t3,t9,0x4
  480704:	00191f00 	sll	v1,t9,0x1c
  480708:	006bc825 	or	t9,v1,t3
  48070c:	030a2026 	xor	a0,t8,t2
  480710:	8f828534 	lw	v0,-31436(gp)
  480714:	00000000 	nop
  480718:	00461021 	addu	v0,v0,a2
  48071c:	8c420400 	lw	v0,1024(v0)
  480720:	31eb00fc 	andi	t3,t7,0xfc
  480724:	008e3826 	xor	a3,a0,t6
  480728:	8f988534 	lw	t8,-31436(gp)
  48072c:	00000000 	nop
  480730:	030bc021 	addu	t8,t8,t3
  480734:	8f180600 	lw	t8,1536(t8)
  480738:	332500fc 	andi	a1,t9,0xfc
  48073c:	00193203 	sra	a2,t9,0x8
  480740:	00e21826 	xor	v1,a3,v0
  480744:	00195c02 	srl	t3,t9,0x10
  480748:	8f8a8534 	lw	t2,-31436(gp)
  48074c:	00000000 	nop
  480750:	01455021 	addu	t2,t2,a1
  480754:	8d4a0100 	lw	t2,256(t2)
  480758:	30cf00fc 	andi	t7,a2,0xfc
  48075c:	00787026 	xor	t6,v1,t8
  480760:	316400fc 	andi	a0,t3,0xfc
  480764:	000b1203 	sra	v0,t3,0x8
  480768:	8f998534 	lw	t9,-31436(gp)
  48076c:	00000000 	nop
  480770:	032fc821 	addu	t9,t9,t7
  480774:	8f390300 	lw	t9,768(t9)
  480778:	01ca3826 	xor	a3,t6,t2
  48077c:	8f838534 	lw	v1,-31436(gp)
  480780:	00000000 	nop
  480784:	00641821 	addu	v1,v1,a0
  480788:	8c630500 	lw	v1,1280(v1)
  48078c:	305800fc 	andi	t8,v0,0xfc
  480790:	00f97826 	xor	t7,a3,t9
  480794:	8f8b8534 	lw	t3,-31436(gp)
  480798:	00000000 	nop
  48079c:	01785821 	addu	t3,t3,t8
  4807a0:	8d6b0700 	lw	t3,1792(t3)
  4807a4:	01e33026 	xor	a2,t7,v1
  4807a8:	8d8a0028 	lw	t2,40(t4)
  4807ac:	00cb7826 	xor	t7,a2,t3
  4807b0:	01ea2826 	xor	a1,t7,t2
  4807b4:	8d8e002c 	lw	t6,44(t4)
  4807b8:	30a400fc 	andi	a0,a1,0xfc
  4807bc:	0005ca03 	sra	t9,a1,0x8
  4807c0:	01ee1026 	xor	v0,t7,t6
  4807c4:	0005c402 	srl	t8,a1,0x10
  4807c8:	8f8a8534 	lw	t2,-31436(gp)
  4807cc:	00000000 	nop
  4807d0:	01445021 	addu	t2,t2,a0
  4807d4:	8d4a0000 	lw	t2,0(t2)
  4807d8:	332700fc 	andi	a3,t9,0xfc
  4807dc:	330600fc 	andi	a2,t8,0xfc
  4807e0:	00025902 	srl	t3,v0,0x4
  4807e4:	00187202 	srl	t6,t8,0x8
  4807e8:	00021f00 	sll	v1,v0,0x1c
  4807ec:	8f998534 	lw	t9,-31436(gp)
  4807f0:	00000000 	nop
  4807f4:	0327c821 	addu	t9,t9,a3
  4807f8:	8f390200 	lw	t9,512(t9)
  4807fc:	006bc025 	or	t8,v1,t3
  480800:	012a2026 	xor	a0,t1,t2
  480804:	8f838534 	lw	v1,-31436(gp)
  480808:	00000000 	nop
  48080c:	00661821 	addu	v1,v1,a2
  480810:	8c630400 	lw	v1,1024(v1)
  480814:	31cb00fc 	andi	t3,t6,0xfc
  480818:	00993826 	xor	a3,a0,t9
  48081c:	8f828534 	lw	v0,-31436(gp)
  480820:	00000000 	nop
  480824:	004b1021 	addu	v0,v0,t3
  480828:	8c420600 	lw	v0,1536(v0)
  48082c:	330500fc 	andi	a1,t8,0xfc
  480830:	00183203 	sra	a2,t8,0x8
  480834:	00e37026 	xor	t6,a3,v1
  480838:	8f998534 	lw	t9,-31436(gp)
  48083c:	00000000 	nop
  480840:	0325c821 	addu	t9,t9,a1
  480844:	8f390100 	lw	t9,256(t9)
  480848:	00185c02 	srl	t3,t8,0x10
  48084c:	30c300fc 	andi	v1,a2,0xfc
  480850:	317800fc 	andi	t8,t3,0xfc
  480854:	01c25026 	xor	t2,t6,v0
  480858:	8f848534 	lw	a0,-31436(gp)
  48085c:	00000000 	nop
  480860:	00832021 	addu	a0,a0,v1
  480864:	8c840300 	lw	a0,768(a0)
  480868:	000b1203 	sra	v0,t3,0x8
  48086c:	01597026 	xor	t6,t2,t9
  480870:	304700fc 	andi	a3,v0,0xfc
  480874:	8f998534 	lw	t9,-31436(gp)
  480878:	00000000 	nop
  48087c:	0338c821 	addu	t9,t9,t8
  480880:	8f390500 	lw	t9,1280(t9)
  480884:	01c41826 	xor	v1,t6,a0
  480888:	8f8b8534 	lw	t3,-31436(gp)
  48088c:	00000000 	nop
  480890:	01675821 	addu	t3,t3,a3
  480894:	8d6b0700 	lw	t3,1792(t3)
  480898:	00793026 	xor	a2,v1,t9
  48089c:	8d8a0030 	lw	t2,48(t4)
  4808a0:	00cb4826 	xor	t1,a2,t3
  4808a4:	012a2826 	xor	a1,t1,t2
  4808a8:	8d980034 	lw	t8,52(t4)
  4808ac:	30a400fc 	andi	a0,a1,0xfc
  4808b0:	00057203 	sra	t6,a1,0x8
  4808b4:	0138c826 	xor	t9,t1,t8
  4808b8:	00053c02 	srl	a3,a1,0x10
  4808bc:	8f8a8534 	lw	t2,-31436(gp)
  4808c0:	00000000 	nop
  4808c4:	01445021 	addu	t2,t2,a0
  4808c8:	8d4a0000 	lw	t2,0(t2)
  4808cc:	31c200fc 	andi	v0,t6,0xfc
  4808d0:	30e600fc 	andi	a2,a3,0xfc
  4808d4:	8f8e8534 	lw	t6,-31436(gp)
  4808d8:	00000000 	nop
  4808dc:	01c27021 	addu	t6,t6,v0
  4808e0:	8dce0200 	lw	t6,512(t6)
  4808e4:	0007c202 	srl	t8,a3,0x8
  4808e8:	00195902 	srl	t3,t9,0x4
  4808ec:	00191f00 	sll	v1,t9,0x1c
  4808f0:	006bc825 	or	t9,v1,t3
  4808f4:	01ea2026 	xor	a0,t7,t2
  4808f8:	8f828534 	lw	v0,-31436(gp)
  4808fc:	00000000 	nop
  480900:	00461021 	addu	v0,v0,a2
  480904:	8c420400 	lw	v0,1024(v0)
  480908:	330b00fc 	andi	t3,t8,0xfc
  48090c:	008e3826 	xor	a3,a0,t6
  480910:	8f8f8534 	lw	t7,-31436(gp)
  480914:	00000000 	nop
  480918:	01eb7821 	addu	t7,t7,t3
  48091c:	8def0600 	lw	t7,1536(t7)
  480920:	332500fc 	andi	a1,t9,0xfc
  480924:	00193203 	sra	a2,t9,0x8
  480928:	00e21826 	xor	v1,a3,v0
  48092c:	00195c02 	srl	t3,t9,0x10
  480930:	8f8a8534 	lw	t2,-31436(gp)
  480934:	00000000 	nop
  480938:	01455021 	addu	t2,t2,a1
  48093c:	8d4a0100 	lw	t2,256(t2)
  480940:	30d800fc 	andi	t8,a2,0xfc
  480944:	006f7026 	xor	t6,v1,t7
  480948:	316400fc 	andi	a0,t3,0xfc
  48094c:	000b1203 	sra	v0,t3,0x8
  480950:	8f998534 	lw	t9,-31436(gp)
  480954:	00000000 	nop
  480958:	0338c821 	addu	t9,t9,t8
  48095c:	8f390300 	lw	t9,768(t9)
  480960:	01ca3826 	xor	a3,t6,t2
  480964:	8f838534 	lw	v1,-31436(gp)
  480968:	00000000 	nop
  48096c:	00641821 	addu	v1,v1,a0
  480970:	8c630500 	lw	v1,1280(v1)
  480974:	304f00fc 	andi	t7,v0,0xfc
  480978:	00f9c026 	xor	t8,a3,t9
  48097c:	8f8b8534 	lw	t3,-31436(gp)
  480980:	00000000 	nop
  480984:	016f5821 	addu	t3,t3,t7
  480988:	8d6b0700 	lw	t3,1792(t3)
  48098c:	03033026 	xor	a2,t8,v1
  480990:	8d8a0038 	lw	t2,56(t4)
  480994:	00cbc026 	xor	t8,a2,t3
  480998:	030a2826 	xor	a1,t8,t2
  48099c:	8d8e003c 	lw	t6,60(t4)
  4809a0:	30a400fc 	andi	a0,a1,0xfc
  4809a4:	0005ca03 	sra	t9,a1,0x8
  4809a8:	030e1026 	xor	v0,t8,t6
  4809ac:	00057c02 	srl	t7,a1,0x10
  4809b0:	8f8a8534 	lw	t2,-31436(gp)
  4809b4:	00000000 	nop
  4809b8:	01445021 	addu	t2,t2,a0
  4809bc:	8d4a0000 	lw	t2,0(t2)
  4809c0:	332700fc 	andi	a3,t9,0xfc
  4809c4:	31e600fc 	andi	a2,t7,0xfc
  4809c8:	00025902 	srl	t3,v0,0x4
  4809cc:	000f7202 	srl	t6,t7,0x8
  4809d0:	00021f00 	sll	v1,v0,0x1c
  4809d4:	8f998534 	lw	t9,-31436(gp)
  4809d8:	00000000 	nop
  4809dc:	0327c821 	addu	t9,t9,a3
  4809e0:	8f390200 	lw	t9,512(t9)
  4809e4:	006b7825 	or	t7,v1,t3
  4809e8:	012a2026 	xor	a0,t1,t2
  4809ec:	8f838534 	lw	v1,-31436(gp)
  4809f0:	00000000 	nop
  4809f4:	00661821 	addu	v1,v1,a2
  4809f8:	8c630400 	lw	v1,1024(v1)
  4809fc:	31cb00fc 	andi	t3,t6,0xfc
  480a00:	00993826 	xor	a3,a0,t9
  480a04:	8f828534 	lw	v0,-31436(gp)
  480a08:	00000000 	nop
  480a0c:	004b1021 	addu	v0,v0,t3
  480a10:	8c420600 	lw	v0,1536(v0)
  480a14:	31e500fc 	andi	a1,t7,0xfc
  480a18:	000f3203 	sra	a2,t7,0x8
  480a1c:	00e37026 	xor	t6,a3,v1
  480a20:	8f998534 	lw	t9,-31436(gp)
  480a24:	00000000 	nop
  480a28:	0325c821 	addu	t9,t9,a1
  480a2c:	8f390100 	lw	t9,256(t9)
  480a30:	000f5c02 	srl	t3,t7,0x10
  480a34:	30c300fc 	andi	v1,a2,0xfc
  480a38:	316f00fc 	andi	t7,t3,0xfc
  480a3c:	01c25026 	xor	t2,t6,v0
  480a40:	8f848534 	lw	a0,-31436(gp)
  480a44:	00000000 	nop
  480a48:	00832021 	addu	a0,a0,v1
  480a4c:	8c840300 	lw	a0,768(a0)
  480a50:	000b1203 	sra	v0,t3,0x8
  480a54:	01597026 	xor	t6,t2,t9
  480a58:	304700fc 	andi	a3,v0,0xfc
  480a5c:	8f998534 	lw	t9,-31436(gp)
  480a60:	00000000 	nop
  480a64:	032fc821 	addu	t9,t9,t7
  480a68:	8f390500 	lw	t9,1280(t9)
  480a6c:	01c41826 	xor	v1,t6,a0
  480a70:	8f8b8534 	lw	t3,-31436(gp)
  480a74:	00000000 	nop
  480a78:	01675821 	addu	t3,t3,a3
  480a7c:	8d6b0700 	lw	t3,1792(t3)
  480a80:	00793026 	xor	a2,v1,t9
  480a84:	8d8a0040 	lw	t2,64(t4)
  480a88:	00cb4826 	xor	t1,a2,t3
  480a8c:	012a2826 	xor	a1,t1,t2
  480a90:	8d8f0044 	lw	t7,68(t4)
  480a94:	30a400fc 	andi	a0,a1,0xfc
  480a98:	00057203 	sra	t6,a1,0x8
  480a9c:	012fc826 	xor	t9,t1,t7
  480aa0:	00053c02 	srl	a3,a1,0x10
  480aa4:	8f8a8534 	lw	t2,-31436(gp)
  480aa8:	00000000 	nop
  480aac:	01445021 	addu	t2,t2,a0
  480ab0:	8d4a0000 	lw	t2,0(t2)
  480ab4:	31c200fc 	andi	v0,t6,0xfc
  480ab8:	30e600fc 	andi	a2,a3,0xfc
  480abc:	8f8e8534 	lw	t6,-31436(gp)
  480ac0:	00000000 	nop
  480ac4:	01c27021 	addu	t6,t6,v0
  480ac8:	8dce0200 	lw	t6,512(t6)
  480acc:	00077a02 	srl	t7,a3,0x8
  480ad0:	00195902 	srl	t3,t9,0x4
  480ad4:	00191f00 	sll	v1,t9,0x1c
  480ad8:	006bc825 	or	t9,v1,t3
  480adc:	030a2026 	xor	a0,t8,t2
  480ae0:	8f828534 	lw	v0,-31436(gp)
  480ae4:	00000000 	nop
  480ae8:	00461021 	addu	v0,v0,a2
  480aec:	8c420400 	lw	v0,1024(v0)
  480af0:	31eb00fc 	andi	t3,t7,0xfc
  480af4:	008e3826 	xor	a3,a0,t6
  480af8:	8f988534 	lw	t8,-31436(gp)
  480afc:	00000000 	nop
  480b00:	030bc021 	addu	t8,t8,t3
  480b04:	8f180600 	lw	t8,1536(t8)
  480b08:	332500fc 	andi	a1,t9,0xfc
  480b0c:	00193203 	sra	a2,t9,0x8
  480b10:	00e21826 	xor	v1,a3,v0
  480b14:	00195c02 	srl	t3,t9,0x10
  480b18:	8f8a8534 	lw	t2,-31436(gp)
  480b1c:	00000000 	nop
  480b20:	01455021 	addu	t2,t2,a1
  480b24:	8d4a0100 	lw	t2,256(t2)
  480b28:	30cf00fc 	andi	t7,a2,0xfc
  480b2c:	00787026 	xor	t6,v1,t8
  480b30:	316400fc 	andi	a0,t3,0xfc
  480b34:	000b1203 	sra	v0,t3,0x8
  480b38:	8f998534 	lw	t9,-31436(gp)
  480b3c:	00000000 	nop
  480b40:	032fc821 	addu	t9,t9,t7
  480b44:	8f390300 	lw	t9,768(t9)
  480b48:	01ca3826 	xor	a3,t6,t2
  480b4c:	8f838534 	lw	v1,-31436(gp)
  480b50:	00000000 	nop
  480b54:	00641821 	addu	v1,v1,a0
  480b58:	8c630500 	lw	v1,1280(v1)
  480b5c:	305800fc 	andi	t8,v0,0xfc
  480b60:	00f97826 	xor	t7,a3,t9
  480b64:	8f8b8534 	lw	t3,-31436(gp)
  480b68:	00000000 	nop
  480b6c:	01785821 	addu	t3,t3,t8
  480b70:	8d6b0700 	lw	t3,1792(t3)
  480b74:	01e33026 	xor	a2,t7,v1
  480b78:	8d8a0048 	lw	t2,72(t4)
  480b7c:	00cb7826 	xor	t7,a2,t3
  480b80:	01ea2826 	xor	a1,t7,t2
  480b84:	8d8e004c 	lw	t6,76(t4)
  480b88:	30a400fc 	andi	a0,a1,0xfc
  480b8c:	0005ca03 	sra	t9,a1,0x8
  480b90:	01ee1026 	xor	v0,t7,t6
  480b94:	0005c402 	srl	t8,a1,0x10
  480b98:	8f8a8534 	lw	t2,-31436(gp)
  480b9c:	00000000 	nop
  480ba0:	01445021 	addu	t2,t2,a0
  480ba4:	8d4a0000 	lw	t2,0(t2)
  480ba8:	332700fc 	andi	a3,t9,0xfc
  480bac:	330600fc 	andi	a2,t8,0xfc
  480bb0:	00025902 	srl	t3,v0,0x4
  480bb4:	00187202 	srl	t6,t8,0x8
  480bb8:	00021f00 	sll	v1,v0,0x1c
  480bbc:	8f998534 	lw	t9,-31436(gp)
  480bc0:	00000000 	nop
  480bc4:	0327c821 	addu	t9,t9,a3
  480bc8:	8f390200 	lw	t9,512(t9)
  480bcc:	006bc025 	or	t8,v1,t3
  480bd0:	012a2026 	xor	a0,t1,t2
  480bd4:	8f838534 	lw	v1,-31436(gp)
  480bd8:	00000000 	nop
  480bdc:	00661821 	addu	v1,v1,a2
  480be0:	8c630400 	lw	v1,1024(v1)
  480be4:	31cb00fc 	andi	t3,t6,0xfc
  480be8:	00993826 	xor	a3,a0,t9
  480bec:	8f828534 	lw	v0,-31436(gp)
  480bf0:	00000000 	nop
  480bf4:	004b1021 	addu	v0,v0,t3
  480bf8:	8c420600 	lw	v0,1536(v0)
  480bfc:	330500fc 	andi	a1,t8,0xfc
  480c00:	00183203 	sra	a2,t8,0x8
  480c04:	00e37026 	xor	t6,a3,v1
  480c08:	8f998534 	lw	t9,-31436(gp)
  480c0c:	00000000 	nop
  480c10:	0325c821 	addu	t9,t9,a1
  480c14:	8f390100 	lw	t9,256(t9)
  480c18:	00185c02 	srl	t3,t8,0x10
  480c1c:	30c300fc 	andi	v1,a2,0xfc
  480c20:	317800fc 	andi	t8,t3,0xfc
  480c24:	01c25026 	xor	t2,t6,v0
  480c28:	8f848534 	lw	a0,-31436(gp)
  480c2c:	00000000 	nop
  480c30:	00832021 	addu	a0,a0,v1
  480c34:	8c840300 	lw	a0,768(a0)
  480c38:	000b1203 	sra	v0,t3,0x8
  480c3c:	01597026 	xor	t6,t2,t9
  480c40:	304700fc 	andi	a3,v0,0xfc
  480c44:	8f998534 	lw	t9,-31436(gp)
  480c48:	00000000 	nop
  480c4c:	0338c821 	addu	t9,t9,t8
  480c50:	8f390500 	lw	t9,1280(t9)
  480c54:	01c41826 	xor	v1,t6,a0
  480c58:	8f8b8534 	lw	t3,-31436(gp)
  480c5c:	00000000 	nop
  480c60:	01675821 	addu	t3,t3,a3
  480c64:	8d6b0700 	lw	t3,1792(t3)
  480c68:	00793026 	xor	a2,v1,t9
  480c6c:	8d8a0050 	lw	t2,80(t4)
  480c70:	00cb4826 	xor	t1,a2,t3
  480c74:	012a2826 	xor	a1,t1,t2
  480c78:	8d980054 	lw	t8,84(t4)
  480c7c:	30a400fc 	andi	a0,a1,0xfc
  480c80:	00057203 	sra	t6,a1,0x8
  480c84:	0138c826 	xor	t9,t1,t8
  480c88:	00053c02 	srl	a3,a1,0x10
  480c8c:	8f8a8534 	lw	t2,-31436(gp)
  480c90:	00000000 	nop
  480c94:	01445021 	addu	t2,t2,a0
  480c98:	8d4a0000 	lw	t2,0(t2)
  480c9c:	31c200fc 	andi	v0,t6,0xfc
  480ca0:	30e600fc 	andi	a2,a3,0xfc
  480ca4:	8f8e8534 	lw	t6,-31436(gp)
  480ca8:	00000000 	nop
  480cac:	01c27021 	addu	t6,t6,v0
  480cb0:	8dce0200 	lw	t6,512(t6)
  480cb4:	0007c202 	srl	t8,a3,0x8
  480cb8:	00195902 	srl	t3,t9,0x4
  480cbc:	00191f00 	sll	v1,t9,0x1c
  480cc0:	006bc825 	or	t9,v1,t3
  480cc4:	01ea2026 	xor	a0,t7,t2
  480cc8:	8f828534 	lw	v0,-31436(gp)
  480ccc:	00000000 	nop
  480cd0:	00461021 	addu	v0,v0,a2
  480cd4:	8c420400 	lw	v0,1024(v0)
  480cd8:	330b00fc 	andi	t3,t8,0xfc
  480cdc:	008e3826 	xor	a3,a0,t6
  480ce0:	8f8f8534 	lw	t7,-31436(gp)
  480ce4:	00000000 	nop
  480ce8:	01eb7821 	addu	t7,t7,t3
  480cec:	8def0600 	lw	t7,1536(t7)
  480cf0:	332500fc 	andi	a1,t9,0xfc
  480cf4:	00193203 	sra	a2,t9,0x8
  480cf8:	00e21826 	xor	v1,a3,v0
  480cfc:	00195c02 	srl	t3,t9,0x10
  480d00:	8f8a8534 	lw	t2,-31436(gp)
  480d04:	00000000 	nop
  480d08:	01455021 	addu	t2,t2,a1
  480d0c:	8d4a0100 	lw	t2,256(t2)
  480d10:	30d800fc 	andi	t8,a2,0xfc
  480d14:	006f7026 	xor	t6,v1,t7
  480d18:	316400fc 	andi	a0,t3,0xfc
  480d1c:	000b1203 	sra	v0,t3,0x8
  480d20:	8f998534 	lw	t9,-31436(gp)
  480d24:	00000000 	nop
  480d28:	0338c821 	addu	t9,t9,t8
  480d2c:	8f390300 	lw	t9,768(t9)
  480d30:	01ca3826 	xor	a3,t6,t2
  480d34:	8f838534 	lw	v1,-31436(gp)
  480d38:	00000000 	nop
  480d3c:	00641821 	addu	v1,v1,a0
  480d40:	8c630500 	lw	v1,1280(v1)
  480d44:	304f00fc 	andi	t7,v0,0xfc
  480d48:	00f9c026 	xor	t8,a3,t9
  480d4c:	8f8b8534 	lw	t3,-31436(gp)
  480d50:	00000000 	nop
  480d54:	016f5821 	addu	t3,t3,t7
  480d58:	8d6b0700 	lw	t3,1792(t3)
  480d5c:	03033026 	xor	a2,t8,v1
  480d60:	8d8a0058 	lw	t2,88(t4)
  480d64:	00cbc026 	xor	t8,a2,t3
  480d68:	030a2826 	xor	a1,t8,t2
  480d6c:	8d8e005c 	lw	t6,92(t4)
  480d70:	30a400fc 	andi	a0,a1,0xfc
  480d74:	0005ca03 	sra	t9,a1,0x8
  480d78:	030e1026 	xor	v0,t8,t6
  480d7c:	00057c02 	srl	t7,a1,0x10
  480d80:	8f8a8534 	lw	t2,-31436(gp)
  480d84:	00000000 	nop
  480d88:	01445021 	addu	t2,t2,a0
  480d8c:	8d4a0000 	lw	t2,0(t2)
  480d90:	332700fc 	andi	a3,t9,0xfc
  480d94:	31e600fc 	andi	a2,t7,0xfc
  480d98:	00025902 	srl	t3,v0,0x4
  480d9c:	000f7202 	srl	t6,t7,0x8
  480da0:	00021f00 	sll	v1,v0,0x1c
  480da4:	8f998534 	lw	t9,-31436(gp)
  480da8:	00000000 	nop
  480dac:	0327c821 	addu	t9,t9,a3
  480db0:	8f390200 	lw	t9,512(t9)
  480db4:	006b7825 	or	t7,v1,t3
  480db8:	012a2026 	xor	a0,t1,t2
  480dbc:	8f838534 	lw	v1,-31436(gp)
  480dc0:	00000000 	nop
  480dc4:	00661821 	addu	v1,v1,a2
  480dc8:	8c630400 	lw	v1,1024(v1)
  480dcc:	31cb00fc 	andi	t3,t6,0xfc
  480dd0:	00993826 	xor	a3,a0,t9
  480dd4:	8f828534 	lw	v0,-31436(gp)
  480dd8:	00000000 	nop
  480ddc:	004b1021 	addu	v0,v0,t3
  480de0:	8c420600 	lw	v0,1536(v0)
  480de4:	31e500fc 	andi	a1,t7,0xfc
  480de8:	000f3203 	sra	a2,t7,0x8
  480dec:	00e37026 	xor	t6,a3,v1
  480df0:	8f998534 	lw	t9,-31436(gp)
  480df4:	00000000 	nop
  480df8:	0325c821 	addu	t9,t9,a1
  480dfc:	8f390100 	lw	t9,256(t9)
  480e00:	000f5c02 	srl	t3,t7,0x10
  480e04:	30c300fc 	andi	v1,a2,0xfc
  480e08:	316f00fc 	andi	t7,t3,0xfc
  480e0c:	01c25026 	xor	t2,t6,v0
  480e10:	8f848534 	lw	a0,-31436(gp)
  480e14:	00000000 	nop
  480e18:	00832021 	addu	a0,a0,v1
  480e1c:	8c840300 	lw	a0,768(a0)
  480e20:	000b1203 	sra	v0,t3,0x8
  480e24:	01597026 	xor	t6,t2,t9
  480e28:	304700fc 	andi	a3,v0,0xfc
  480e2c:	8f998534 	lw	t9,-31436(gp)
  480e30:	00000000 	nop
  480e34:	032fc821 	addu	t9,t9,t7
  480e38:	8f390500 	lw	t9,1280(t9)
  480e3c:	01c41826 	xor	v1,t6,a0
  480e40:	8f8b8534 	lw	t3,-31436(gp)
  480e44:	00000000 	nop
  480e48:	01675821 	addu	t3,t3,a3
  480e4c:	8d6b0700 	lw	t3,1792(t3)
  480e50:	00793026 	xor	a2,v1,t9
  480e54:	8d8a0060 	lw	t2,96(t4)
  480e58:	00cb4826 	xor	t1,a2,t3
  480e5c:	012a2826 	xor	a1,t1,t2
  480e60:	8d8f0064 	lw	t7,100(t4)
  480e64:	30a400fc 	andi	a0,a1,0xfc
  480e68:	00057203 	sra	t6,a1,0x8
  480e6c:	012fc826 	xor	t9,t1,t7
  480e70:	00053c02 	srl	a3,a1,0x10
  480e74:	8f8a8534 	lw	t2,-31436(gp)
  480e78:	00000000 	nop
  480e7c:	01445021 	addu	t2,t2,a0
  480e80:	8d4a0000 	lw	t2,0(t2)
  480e84:	31c200fc 	andi	v0,t6,0xfc
  480e88:	30e600fc 	andi	a2,a3,0xfc
  480e8c:	8f8e8534 	lw	t6,-31436(gp)
  480e90:	00000000 	nop
  480e94:	01c27021 	addu	t6,t6,v0
  480e98:	8dce0200 	lw	t6,512(t6)
  480e9c:	00077a02 	srl	t7,a3,0x8
  480ea0:	00195902 	srl	t3,t9,0x4
  480ea4:	00191f00 	sll	v1,t9,0x1c
  480ea8:	006bc825 	or	t9,v1,t3
  480eac:	030a2026 	xor	a0,t8,t2
  480eb0:	8f828534 	lw	v0,-31436(gp)
  480eb4:	00000000 	nop
  480eb8:	00461021 	addu	v0,v0,a2
  480ebc:	8c420400 	lw	v0,1024(v0)
  480ec0:	31eb00fc 	andi	t3,t7,0xfc
  480ec4:	008e3826 	xor	a3,a0,t6
  480ec8:	8f988534 	lw	t8,-31436(gp)
  480ecc:	00000000 	nop
  480ed0:	030bc021 	addu	t8,t8,t3
  480ed4:	8f180600 	lw	t8,1536(t8)
  480ed8:	332500fc 	andi	a1,t9,0xfc
  480edc:	00193203 	sra	a2,t9,0x8
  480ee0:	00e21826 	xor	v1,a3,v0
  480ee4:	00195c02 	srl	t3,t9,0x10
  480ee8:	8f8a8534 	lw	t2,-31436(gp)
  480eec:	00000000 	nop
  480ef0:	01455021 	addu	t2,t2,a1
  480ef4:	8d4a0100 	lw	t2,256(t2)
  480ef8:	30cf00fc 	andi	t7,a2,0xfc
  480efc:	00787026 	xor	t6,v1,t8
  480f00:	316400fc 	andi	a0,t3,0xfc
  480f04:	000b1203 	sra	v0,t3,0x8
  480f08:	8f998534 	lw	t9,-31436(gp)
  480f0c:	00000000 	nop
  480f10:	032fc821 	addu	t9,t9,t7
  480f14:	8f390300 	lw	t9,768(t9)
  480f18:	01ca3826 	xor	a3,t6,t2
  480f1c:	8f838534 	lw	v1,-31436(gp)
  480f20:	00000000 	nop
  480f24:	00641821 	addu	v1,v1,a0
  480f28:	8c630500 	lw	v1,1280(v1)
  480f2c:	305800fc 	andi	t8,v0,0xfc
  480f30:	00f97826 	xor	t7,a3,t9
  480f34:	8f8b8534 	lw	t3,-31436(gp)
  480f38:	00000000 	nop
  480f3c:	01785821 	addu	t3,t3,t8
  480f40:	8d6b0700 	lw	t3,1792(t3)
  480f44:	01e33026 	xor	a2,t7,v1
  480f48:	8d8a0068 	lw	t2,104(t4)
  480f4c:	00cb7826 	xor	t7,a2,t3
  480f50:	01ea2826 	xor	a1,t7,t2
  480f54:	8d8e006c 	lw	t6,108(t4)
  480f58:	30a400fc 	andi	a0,a1,0xfc
  480f5c:	0005ca03 	sra	t9,a1,0x8
  480f60:	01ee1026 	xor	v0,t7,t6
  480f64:	0005c402 	srl	t8,a1,0x10
  480f68:	8f8a8534 	lw	t2,-31436(gp)
  480f6c:	00000000 	nop
  480f70:	01445021 	addu	t2,t2,a0
  480f74:	8d4a0000 	lw	t2,0(t2)
  480f78:	332700fc 	andi	a3,t9,0xfc
  480f7c:	330600fc 	andi	a2,t8,0xfc
  480f80:	00025902 	srl	t3,v0,0x4
  480f84:	00187202 	srl	t6,t8,0x8
  480f88:	00021f00 	sll	v1,v0,0x1c
  480f8c:	8f998534 	lw	t9,-31436(gp)
  480f90:	00000000 	nop
  480f94:	0327c821 	addu	t9,t9,a3
  480f98:	8f390200 	lw	t9,512(t9)
  480f9c:	006bc025 	or	t8,v1,t3
  480fa0:	012a2026 	xor	a0,t1,t2
  480fa4:	8f838534 	lw	v1,-31436(gp)
  480fa8:	00000000 	nop
  480fac:	00661821 	addu	v1,v1,a2
  480fb0:	8c630400 	lw	v1,1024(v1)
  480fb4:	31cb00fc 	andi	t3,t6,0xfc
  480fb8:	00993826 	xor	a3,a0,t9
  480fbc:	8f828534 	lw	v0,-31436(gp)
  480fc0:	00000000 	nop
  480fc4:	004b1021 	addu	v0,v0,t3
  480fc8:	8c420600 	lw	v0,1536(v0)
  480fcc:	330500fc 	andi	a1,t8,0xfc
  480fd0:	00183203 	sra	a2,t8,0x8
  480fd4:	00e37026 	xor	t6,a3,v1
  480fd8:	8f998534 	lw	t9,-31436(gp)
  480fdc:	00000000 	nop
  480fe0:	0325c821 	addu	t9,t9,a1
  480fe4:	8f390100 	lw	t9,256(t9)
  480fe8:	00185c02 	srl	t3,t8,0x10
  480fec:	30c300fc 	andi	v1,a2,0xfc
  480ff0:	317800fc 	andi	t8,t3,0xfc
  480ff4:	01c25026 	xor	t2,t6,v0
  480ff8:	8f848534 	lw	a0,-31436(gp)
  480ffc:	00000000 	nop
  481000:	00832021 	addu	a0,a0,v1
  481004:	8c840300 	lw	a0,768(a0)
  481008:	000b1203 	sra	v0,t3,0x8
  48100c:	01597026 	xor	t6,t2,t9
  481010:	304700fc 	andi	a3,v0,0xfc
  481014:	8f998534 	lw	t9,-31436(gp)
  481018:	00000000 	nop
  48101c:	0338c821 	addu	t9,t9,t8
  481020:	8f390500 	lw	t9,1280(t9)
  481024:	01c41826 	xor	v1,t6,a0
  481028:	8f8b8534 	lw	t3,-31436(gp)
  48102c:	00000000 	nop
  481030:	01675821 	addu	t3,t3,a3
  481034:	8d6b0700 	lw	t3,1792(t3)
  481038:	00793026 	xor	a2,v1,t9
  48103c:	8d8a0070 	lw	t2,112(t4)
  481040:	00cb4826 	xor	t1,a2,t3
  481044:	012a2826 	xor	a1,t1,t2
  481048:	8d980074 	lw	t8,116(t4)
  48104c:	30a400fc 	andi	a0,a1,0xfc
  481050:	00057203 	sra	t6,a1,0x8
  481054:	0138c826 	xor	t9,t1,t8
  481058:	00053c02 	srl	a3,a1,0x10
  48105c:	8f8a8534 	lw	t2,-31436(gp)
  481060:	00000000 	nop
  481064:	01445021 	addu	t2,t2,a0
  481068:	8d4a0000 	lw	t2,0(t2)
  48106c:	31c200fc 	andi	v0,t6,0xfc
  481070:	30e600fc 	andi	a2,a3,0xfc
  481074:	8f8e8534 	lw	t6,-31436(gp)
  481078:	00000000 	nop
  48107c:	01c27021 	addu	t6,t6,v0
  481080:	8dce0200 	lw	t6,512(t6)
  481084:	0007c202 	srl	t8,a3,0x8
  481088:	00195902 	srl	t3,t9,0x4
  48108c:	00191f00 	sll	v1,t9,0x1c
  481090:	006bc825 	or	t9,v1,t3
  481094:	01ea2026 	xor	a0,t7,t2
  481098:	8f828534 	lw	v0,-31436(gp)
  48109c:	00000000 	nop
  4810a0:	00461021 	addu	v0,v0,a2
  4810a4:	8c420400 	lw	v0,1024(v0)
  4810a8:	330b00fc 	andi	t3,t8,0xfc
  4810ac:	008e3826 	xor	a3,a0,t6
  4810b0:	8f8f8534 	lw	t7,-31436(gp)
  4810b4:	00000000 	nop
  4810b8:	01eb7821 	addu	t7,t7,t3
  4810bc:	8def0600 	lw	t7,1536(t7)
  4810c0:	332500fc 	andi	a1,t9,0xfc
  4810c4:	00193203 	sra	a2,t9,0x8
  4810c8:	00e2c026 	xor	t8,a3,v0
  4810cc:	00195c02 	srl	t3,t9,0x10
  4810d0:	8f8a8534 	lw	t2,-31436(gp)
  4810d4:	00000000 	nop
  4810d8:	01455021 	addu	t2,t2,a1
  4810dc:	8d4a0100 	lw	t2,256(t2)
  4810e0:	30c300fc 	andi	v1,a2,0xfc
  4810e4:	030f7026 	xor	t6,t8,t7
  4810e8:	316400fc 	andi	a0,t3,0xfc
  4810ec:	000b1203 	sra	v0,t3,0x8
  4810f0:	8f998534 	lw	t9,-31436(gp)
  4810f4:	00000000 	nop
  4810f8:	0323c821 	addu	t9,t9,v1
  4810fc:	8f390300 	lw	t9,768(t9)
  481100:	01ca3826 	xor	a3,t6,t2
  481104:	8f988534 	lw	t8,-31436(gp)
  481108:	00000000 	nop
  48110c:	0304c021 	addu	t8,t8,a0
  481110:	8f180500 	lw	t8,1280(t8)
  481114:	304f00fc 	andi	t7,v0,0xfc
  481118:	00f91826 	xor	v1,a3,t9
  48111c:	8f8b8534 	lw	t3,-31436(gp)
  481120:	00000000 	nop
  481124:	016f5821 	addu	t3,t3,t7
  481128:	8d6b0700 	lw	t3,1792(t3)
  48112c:	00782826 	xor	a1,v1,t8
  481130:	8d8a0078 	lw	t2,120(t4)
  481134:	00ab4026 	xor	t0,a1,t3
  481138:	010ac826 	xor	t9,t0,t2
  48113c:	8d8e007c 	lw	t6,124(t4)
  481140:	332600fc 	andi	a2,t9,0xfc
  481144:	00192203 	sra	a0,t9,0x8
  481148:	010e7826 	xor	t7,t0,t6
  48114c:	00191402 	srl	v0,t9,0x10
  481150:	8f8a8534 	lw	t2,-31436(gp)
  481154:	00000000 	nop
  481158:	01465021 	addu	t2,t2,a2
  48115c:	8d4a0000 	lw	t2,0(t2)
  481160:	308700fc 	andi	a3,a0,0xfc
  481164:	304500fc 	andi	a1,v0,0xfc
  481168:	00027202 	srl	t6,v0,0x8
  48116c:	8f8c8534 	lw	t4,-31436(gp)
  481170:	00000000 	nop
  481174:	01876021 	addu	t4,t4,a3
  481178:	8d8c0200 	lw	t4,512(t4)
  48117c:	000f5902 	srl	t3,t7,0x4
  481180:	000fc700 	sll	t8,t7,0x1c
  481184:	030b7825 	or	t7,t8,t3
  481188:	012ac826 	xor	t9,t1,t2
  48118c:	8f988534 	lw	t8,-31436(gp)
  481190:	00000000 	nop
  481194:	0305c021 	addu	t8,t8,a1
  481198:	8f180400 	lw	t8,1024(t8)
  48119c:	31c300fc 	andi	v1,t6,0xfc
  4811a0:	032c3826 	xor	a3,t9,t4
  4811a4:	31e600fc 	andi	a2,t7,0xfc
  4811a8:	8f8e8534 	lw	t6,-31436(gp)
  4811ac:	00000000 	nop
  4811b0:	01c37021 	addu	t6,t6,v1
  4811b4:	8dce0600 	lw	t6,1536(t6)
  4811b8:	000f1203 	sra	v0,t7,0x8
  4811bc:	8f8c8534 	lw	t4,-31436(gp)
  4811c0:	00000000 	nop
  4811c4:	01866021 	addu	t4,t4,a2
  4811c8:	8d8c0100 	lw	t4,256(t4)
  4811cc:	00f85826 	xor	t3,a3,t8
  4811d0:	000f2402 	srl	a0,t7,0x10
  4811d4:	304500fc 	andi	a1,v0,0xfc
  4811d8:	016e1826 	xor	v1,t3,t6
  4811dc:	8f988534 	lw	t8,-31436(gp)
  4811e0:	00000000 	nop
  4811e4:	0305c021 	addu	t8,t8,a1
  4811e8:	8f180300 	lw	t8,768(t8)
  4811ec:	308a00fc 	andi	t2,a0,0xfc
  4811f0:	0004ca03 	sra	t9,a0,0x8
  4811f4:	006c7826 	xor	t7,v1,t4
  4811f8:	332e00fc 	andi	t6,t9,0xfc
  4811fc:	8f8c8534 	lw	t4,-31436(gp)
  481200:	00000000 	nop
  481204:	018a6021 	addu	t4,t4,t2
  481208:	8d8c0500 	lw	t4,1280(t4)
  48120c:	01f85826 	xor	t3,t7,t8
  481210:	8f868534 	lw	a2,-31436(gp)
  481214:	00000000 	nop
  481218:	00ce3021 	addu	a2,a2,t6
  48121c:	8cc60700 	lw	a2,1792(a2)
  481220:	016c2826 	xor	a1,t3,t4
  481224:	00a64826 	xor	t1,a1,a2
  481228:	000858c2 	srl	t3,t0,0x3
  48122c:	000950c2 	srl	t2,t1,0x3
  481230:	00083740 	sll	a2,t0,0x1d
  481234:	00096740 	sll	t4,t1,0x1d
  481238:	018a4025 	or	t0,t4,t2
  48123c:	00cb4825 	or	t1,a2,t3
  481240:	ada80004 	sw	t0,4(t5)
  481244:	03e00008 	jr	ra
  481248:	ada90000 	sw	t1,0(t5)
  48124c:	8d8e0078 	lw	t6,120(t4)
  481250:	8d84007c 	lw	a0,124(t4)
  481254:	012e2826 	xor	a1,t1,t6
  481258:	30a200fc 	andi	v0,a1,0xfc
  48125c:	0005c203 	sra	t8,a1,0x8
  481260:	01247826 	xor	t7,t1,a0
  481264:	00053c02 	srl	a3,a1,0x10
  481268:	8f8a8534 	lw	t2,-31436(gp)
  48126c:	00000000 	nop
  481270:	01425021 	addu	t2,t2,v0
  481274:	8d4a0000 	lw	t2,0(t2)
  481278:	331900fc 	andi	t9,t8,0xfc
  48127c:	8f988534 	lw	t8,-31436(gp)
  481280:	00000000 	nop
  481284:	0319c021 	addu	t8,t8,t9
  481288:	8f180200 	lw	t8,512(t8)
  48128c:	00077202 	srl	t6,a3,0x8
  481290:	30e600fc 	andi	a2,a3,0xfc
  481294:	000f5902 	srl	t3,t7,0x4
  481298:	000f1f00 	sll	v1,t7,0x1c
  48129c:	006b7825 	or	t7,v1,t3
  4812a0:	010ac826 	xor	t9,t0,t2
  4812a4:	8f878534 	lw	a3,-31436(gp)
  4812a8:	00000000 	nop
  4812ac:	00e63821 	addu	a3,a3,a2
  4812b0:	8ce70400 	lw	a3,1024(a3)
  4812b4:	31c500fc 	andi	a1,t6,0xfc
  4812b8:	03381026 	xor	v0,t9,t8
  4812bc:	31e400fc 	andi	a0,t7,0xfc
  4812c0:	000f3203 	sra	a2,t7,0x8
  4812c4:	8f8e8534 	lw	t6,-31436(gp)
  4812c8:	00000000 	nop
  4812cc:	01c57021 	addu	t6,t6,a1
  4812d0:	8dce0600 	lw	t6,1536(t6)
  4812d4:	00471826 	xor	v1,v0,a3
  4812d8:	000fc402 	srl	t8,t7,0x10
  4812dc:	8f998534 	lw	t9,-31436(gp)
  4812e0:	00000000 	nop
  4812e4:	0324c821 	addu	t9,t9,a0
  4812e8:	8f390100 	lw	t9,256(t9)
  4812ec:	30cb00fc 	andi	t3,a2,0xfc
  4812f0:	006e2826 	xor	a1,v1,t6
  4812f4:	330a00fc 	andi	t2,t8,0xfc
  4812f8:	00182203 	sra	a0,t8,0x8
  4812fc:	8f8f8534 	lw	t7,-31436(gp)
  481300:	00000000 	nop
  481304:	01eb7821 	addu	t7,t7,t3
  481308:	8def0300 	lw	t7,768(t7)
  48130c:	00b93826 	xor	a3,a1,t9
  481310:	8f838534 	lw	v1,-31436(gp)
  481314:	00000000 	nop
  481318:	006a1821 	addu	v1,v1,t2
  48131c:	8c630500 	lw	v1,1280(v1)
  481320:	308e00fc 	andi	t6,a0,0xfc
  481324:	00ef5826 	xor	t3,a3,t7
  481328:	8f868534 	lw	a2,-31436(gp)
  48132c:	00000000 	nop
  481330:	00ce3021 	addu	a2,a2,t6
  481334:	8cc60700 	lw	a2,1792(a2)
  481338:	0163c026 	xor	t8,t3,v1
  48133c:	8d990070 	lw	t9,112(t4)
  481340:	03064026 	xor	t0,t8,a2
  481344:	01195026 	xor	t2,t0,t9
  481348:	8d850074 	lw	a1,116(t4)
  48134c:	314400fc 	andi	a0,t2,0xfc
  481350:	000a7a03 	sra	t7,t2,0x8
  481354:	01057026 	xor	t6,t0,a1
  481358:	000a3c02 	srl	a3,t2,0x10
  48135c:	8f988534 	lw	t8,-31436(gp)
  481360:	00000000 	nop
  481364:	0304c021 	addu	t8,t8,a0
  481368:	8f180000 	lw	t8,0(t8)
  48136c:	31e200fc 	andi	v0,t7,0xfc
  481370:	8f8f8534 	lw	t7,-31436(gp)
  481374:	00000000 	nop
  481378:	01e27821 	addu	t7,t7,v0
  48137c:	8def0200 	lw	t7,512(t7)
  481380:	0007ca02 	srl	t9,a3,0x8
  481384:	30e600fc 	andi	a2,a3,0xfc
  481388:	000e5902 	srl	t3,t6,0x4
  48138c:	000e1f00 	sll	v1,t6,0x1c
  481390:	006b7025 	or	t6,v1,t3
  481394:	01382026 	xor	a0,t1,t8
  481398:	8f878534 	lw	a3,-31436(gp)
  48139c:	00000000 	nop
  4813a0:	00e63821 	addu	a3,a3,a2
  4813a4:	8ce70400 	lw	a3,1024(a3)
  4813a8:	332500fc 	andi	a1,t9,0xfc
  4813ac:	008f5026 	xor	t2,a0,t7
  4813b0:	8f988534 	lw	t8,-31436(gp)
  4813b4:	00000000 	nop
  4813b8:	0305c021 	addu	t8,t8,a1
  4813bc:	8f180600 	lw	t8,1536(t8)
  4813c0:	31c200fc 	andi	v0,t6,0xfc
  4813c4:	000e3203 	sra	a2,t6,0x8
  4813c8:	01471826 	xor	v1,t2,a3
  4813cc:	000e5c02 	srl	t3,t6,0x10
  4813d0:	8f858534 	lw	a1,-31436(gp)
  4813d4:	00000000 	nop
  4813d8:	00a22821 	addu	a1,a1,v0
  4813dc:	8ca50100 	lw	a1,256(a1)
  4813e0:	30d900fc 	andi	t9,a2,0xfc
  4813e4:	00787826 	xor	t7,v1,t8
  4813e8:	316400fc 	andi	a0,t3,0xfc
  4813ec:	000b1203 	sra	v0,t3,0x8
  4813f0:	8f8e8534 	lw	t6,-31436(gp)
  4813f4:	00000000 	nop
  4813f8:	01d97021 	addu	t6,t6,t9
  4813fc:	8dce0300 	lw	t6,768(t6)
  481400:	01e53826 	xor	a3,t7,a1
  481404:	8f838534 	lw	v1,-31436(gp)
  481408:	00000000 	nop
  48140c:	00641821 	addu	v1,v1,a0
  481410:	8c630500 	lw	v1,1280(v1)
  481414:	305800fc 	andi	t8,v0,0xfc
  481418:	00eec826 	xor	t9,a3,t6
  48141c:	8f8b8534 	lw	t3,-31436(gp)
  481420:	00000000 	nop
  481424:	01785821 	addu	t3,t3,t8
  481428:	8d6b0700 	lw	t3,1792(t3)
  48142c:	03233026 	xor	a2,t9,v1
  481430:	8d850068 	lw	a1,104(t4)
  481434:	00cbc826 	xor	t9,a2,t3
  481438:	03255026 	xor	t2,t9,a1
  48143c:	8d8f006c 	lw	t7,108(t4)
  481440:	314400fc 	andi	a0,t2,0xfc
  481444:	000a7203 	sra	t6,t2,0x8
  481448:	032f1026 	xor	v0,t9,t7
  48144c:	8f858534 	lw	a1,-31436(gp)
  481450:	00000000 	nop
  481454:	00a42821 	addu	a1,a1,a0
  481458:	8ca50000 	lw	a1,0(a1)
  48145c:	000ac402 	srl	t8,t2,0x10
  481460:	31c700fc 	andi	a3,t6,0xfc
  481464:	330600fc 	andi	a2,t8,0xfc
  481468:	8f8f8534 	lw	t7,-31436(gp)
  48146c:	00000000 	nop
  481470:	01e77821 	addu	t7,t7,a3
  481474:	8def0200 	lw	t7,512(t7)
  481478:	00025902 	srl	t3,v0,0x4
  48147c:	00185202 	srl	t2,t8,0x8
  481480:	00021f00 	sll	v1,v0,0x1c
  481484:	006bc025 	or	t8,v1,t3
  481488:	01057026 	xor	t6,t0,a1
  48148c:	8f878534 	lw	a3,-31436(gp)
  481490:	00000000 	nop
  481494:	00e63821 	addu	a3,a3,a2
  481498:	8ce70400 	lw	a3,1024(a3)
  48149c:	314500fc 	andi	a1,t2,0xfc
  4814a0:	330400fc 	andi	a0,t8,0xfc
  4814a4:	01cf5026 	xor	t2,t6,t7
  4814a8:	00183203 	sra	a2,t8,0x8
  4814ac:	8f828534 	lw	v0,-31436(gp)
  4814b0:	00000000 	nop
  4814b4:	00451021 	addu	v0,v0,a1
  4814b8:	8c420600 	lw	v0,1536(v0)
  4814bc:	01477826 	xor	t7,t2,a3
  4814c0:	8f8e8534 	lw	t6,-31436(gp)
  4814c4:	00000000 	nop
  4814c8:	01c47021 	addu	t6,t6,a0
  4814cc:	8dce0100 	lw	t6,256(t6)
  4814d0:	00185c02 	srl	t3,t8,0x10
  4814d4:	30c300fc 	andi	v1,a2,0xfc
  4814d8:	317800fc 	andi	t8,t3,0xfc
  4814dc:	01e22826 	xor	a1,t7,v0
  4814e0:	8f848534 	lw	a0,-31436(gp)
  4814e4:	00000000 	nop
  4814e8:	00832021 	addu	a0,a0,v1
  4814ec:	8c840300 	lw	a0,768(a0)
  4814f0:	000b1203 	sra	v0,t3,0x8
  4814f4:	00ae7826 	xor	t7,a1,t6
  4814f8:	304700fc 	andi	a3,v0,0xfc
  4814fc:	8f8e8534 	lw	t6,-31436(gp)
  481500:	00000000 	nop
  481504:	01d87021 	addu	t6,t6,t8
  481508:	8dce0500 	lw	t6,1280(t6)
  48150c:	01e41826 	xor	v1,t7,a0
  481510:	8f8b8534 	lw	t3,-31436(gp)
  481514:	00000000 	nop
  481518:	01675821 	addu	t3,t3,a3
  48151c:	8d6b0700 	lw	t3,1792(t3)
  481520:	006e3026 	xor	a2,v1,t6
  481524:	8d850060 	lw	a1,96(t4)
  481528:	00cb4026 	xor	t0,a2,t3
  48152c:	01055026 	xor	t2,t0,a1
  481530:	8d980064 	lw	t8,100(t4)
  481534:	314400fc 	andi	a0,t2,0xfc
  481538:	000a7a03 	sra	t7,t2,0x8
  48153c:	01187026 	xor	t6,t0,t8
  481540:	000a3c02 	srl	a3,t2,0x10
  481544:	8f858534 	lw	a1,-31436(gp)
  481548:	00000000 	nop
  48154c:	00a42821 	addu	a1,a1,a0
  481550:	8ca50000 	lw	a1,0(a1)
  481554:	31e200fc 	andi	v0,t7,0xfc
  481558:	8f8f8534 	lw	t7,-31436(gp)
  48155c:	00000000 	nop
  481560:	01e27821 	addu	t7,t7,v0
  481564:	8def0200 	lw	t7,512(t7)
  481568:	0007c202 	srl	t8,a3,0x8
  48156c:	30e600fc 	andi	a2,a3,0xfc
  481570:	000e5902 	srl	t3,t6,0x4
  481574:	000e1f00 	sll	v1,t6,0x1c
  481578:	006b7025 	or	t6,v1,t3
  48157c:	03252026 	xor	a0,t9,a1
  481580:	8f878534 	lw	a3,-31436(gp)
  481584:	00000000 	nop
  481588:	00e63821 	addu	a3,a3,a2
  48158c:	8ce70400 	lw	a3,1024(a3)
  481590:	330500fc 	andi	a1,t8,0xfc
  481594:	008f5026 	xor	t2,a0,t7
  481598:	8f998534 	lw	t9,-31436(gp)
  48159c:	00000000 	nop
  4815a0:	0325c821 	addu	t9,t9,a1
  4815a4:	8f390600 	lw	t9,1536(t9)
  4815a8:	31c200fc 	andi	v0,t6,0xfc
  4815ac:	000e3203 	sra	a2,t6,0x8
  4815b0:	01471826 	xor	v1,t2,a3
  4815b4:	000e5c02 	srl	t3,t6,0x10
  4815b8:	8f858534 	lw	a1,-31436(gp)
  4815bc:	00000000 	nop
  4815c0:	00a22821 	addu	a1,a1,v0
  4815c4:	8ca50100 	lw	a1,256(a1)
  4815c8:	30d800fc 	andi	t8,a2,0xfc
  4815cc:	00797826 	xor	t7,v1,t9
  4815d0:	316400fc 	andi	a0,t3,0xfc
  4815d4:	000b1203 	sra	v0,t3,0x8
  4815d8:	8f8e8534 	lw	t6,-31436(gp)
  4815dc:	00000000 	nop
  4815e0:	01d87021 	addu	t6,t6,t8
  4815e4:	8dce0300 	lw	t6,768(t6)
  4815e8:	01e53826 	xor	a3,t7,a1
  4815ec:	8f838534 	lw	v1,-31436(gp)
  4815f0:	00000000 	nop
  4815f4:	00641821 	addu	v1,v1,a0
  4815f8:	8c630500 	lw	v1,1280(v1)
  4815fc:	305900fc 	andi	t9,v0,0xfc
  481600:	00eec026 	xor	t8,a3,t6
  481604:	8f8b8534 	lw	t3,-31436(gp)
  481608:	00000000 	nop
  48160c:	01795821 	addu	t3,t3,t9
  481610:	8d6b0700 	lw	t3,1792(t3)
  481614:	03033026 	xor	a2,t8,v1
  481618:	8d850058 	lw	a1,88(t4)
  48161c:	00cbc026 	xor	t8,a2,t3
  481620:	03055026 	xor	t2,t8,a1
  481624:	8d8f005c 	lw	t7,92(t4)
  481628:	314400fc 	andi	a0,t2,0xfc
  48162c:	000a7203 	sra	t6,t2,0x8
  481630:	030f1026 	xor	v0,t8,t7
  481634:	8f858534 	lw	a1,-31436(gp)
  481638:	00000000 	nop
  48163c:	00a42821 	addu	a1,a1,a0
  481640:	8ca50000 	lw	a1,0(a1)
  481644:	000acc02 	srl	t9,t2,0x10
  481648:	31c700fc 	andi	a3,t6,0xfc
  48164c:	332600fc 	andi	a2,t9,0xfc
  481650:	8f8f8534 	lw	t7,-31436(gp)
  481654:	00000000 	nop
  481658:	01e77821 	addu	t7,t7,a3
  48165c:	8def0200 	lw	t7,512(t7)
  481660:	00025902 	srl	t3,v0,0x4
  481664:	00195202 	srl	t2,t9,0x8
  481668:	00021f00 	sll	v1,v0,0x1c
  48166c:	006bc825 	or	t9,v1,t3
  481670:	01057026 	xor	t6,t0,a1
  481674:	8f878534 	lw	a3,-31436(gp)
  481678:	00000000 	nop
  48167c:	00e63821 	addu	a3,a3,a2
  481680:	8ce70400 	lw	a3,1024(a3)
  481684:	314500fc 	andi	a1,t2,0xfc
  481688:	332400fc 	andi	a0,t9,0xfc
  48168c:	01cf5026 	xor	t2,t6,t7
  481690:	00193203 	sra	a2,t9,0x8
  481694:	8f828534 	lw	v0,-31436(gp)
  481698:	00000000 	nop
  48169c:	00451021 	addu	v0,v0,a1
  4816a0:	8c420600 	lw	v0,1536(v0)
  4816a4:	01477826 	xor	t7,t2,a3
  4816a8:	8f8e8534 	lw	t6,-31436(gp)
  4816ac:	00000000 	nop
  4816b0:	01c47021 	addu	t6,t6,a0
  4816b4:	8dce0100 	lw	t6,256(t6)
  4816b8:	00195c02 	srl	t3,t9,0x10
  4816bc:	30c300fc 	andi	v1,a2,0xfc
  4816c0:	317900fc 	andi	t9,t3,0xfc
  4816c4:	01e22826 	xor	a1,t7,v0
  4816c8:	8f848534 	lw	a0,-31436(gp)
  4816cc:	00000000 	nop
  4816d0:	00832021 	addu	a0,a0,v1
  4816d4:	8c840300 	lw	a0,768(a0)
  4816d8:	000b1203 	sra	v0,t3,0x8
  4816dc:	00ae7826 	xor	t7,a1,t6
  4816e0:	304700fc 	andi	a3,v0,0xfc
  4816e4:	8f8e8534 	lw	t6,-31436(gp)
  4816e8:	00000000 	nop
  4816ec:	01d97021 	addu	t6,t6,t9
  4816f0:	8dce0500 	lw	t6,1280(t6)
  4816f4:	01e41826 	xor	v1,t7,a0
  4816f8:	8f8b8534 	lw	t3,-31436(gp)
  4816fc:	00000000 	nop
  481700:	01675821 	addu	t3,t3,a3
  481704:	8d6b0700 	lw	t3,1792(t3)
  481708:	006e3026 	xor	a2,v1,t6
  48170c:	8d850050 	lw	a1,80(t4)
  481710:	00cb4026 	xor	t0,a2,t3
  481714:	01055026 	xor	t2,t0,a1
  481718:	8d990054 	lw	t9,84(t4)
  48171c:	314400fc 	andi	a0,t2,0xfc
  481720:	000a7a03 	sra	t7,t2,0x8
  481724:	01197026 	xor	t6,t0,t9
  481728:	000a3c02 	srl	a3,t2,0x10
  48172c:	8f858534 	lw	a1,-31436(gp)
  481730:	00000000 	nop
  481734:	00a42821 	addu	a1,a1,a0
  481738:	8ca50000 	lw	a1,0(a1)
  48173c:	31e200fc 	andi	v0,t7,0xfc
  481740:	8f8f8534 	lw	t7,-31436(gp)
  481744:	00000000 	nop
  481748:	01e27821 	addu	t7,t7,v0
  48174c:	8def0200 	lw	t7,512(t7)
  481750:	0007ca02 	srl	t9,a3,0x8
  481754:	30e600fc 	andi	a2,a3,0xfc
  481758:	000e5902 	srl	t3,t6,0x4
  48175c:	000e1f00 	sll	v1,t6,0x1c
  481760:	006b7025 	or	t6,v1,t3
  481764:	03052026 	xor	a0,t8,a1
  481768:	8f878534 	lw	a3,-31436(gp)
  48176c:	00000000 	nop
  481770:	00e63821 	addu	a3,a3,a2
  481774:	8ce70400 	lw	a3,1024(a3)
  481778:	332500fc 	andi	a1,t9,0xfc
  48177c:	008f5026 	xor	t2,a0,t7
  481780:	8f988534 	lw	t8,-31436(gp)
  481784:	00000000 	nop
  481788:	0305c021 	addu	t8,t8,a1
  48178c:	8f180600 	lw	t8,1536(t8)
  481790:	31c200fc 	andi	v0,t6,0xfc
  481794:	000e3203 	sra	a2,t6,0x8
  481798:	01471826 	xor	v1,t2,a3
  48179c:	000e5c02 	srl	t3,t6,0x10
  4817a0:	8f858534 	lw	a1,-31436(gp)
  4817a4:	00000000 	nop
  4817a8:	00a22821 	addu	a1,a1,v0
  4817ac:	8ca50100 	lw	a1,256(a1)
  4817b0:	30d900fc 	andi	t9,a2,0xfc
  4817b4:	00787826 	xor	t7,v1,t8
  4817b8:	316400fc 	andi	a0,t3,0xfc
  4817bc:	000b1203 	sra	v0,t3,0x8
  4817c0:	8f8e8534 	lw	t6,-31436(gp)
  4817c4:	00000000 	nop
  4817c8:	01d97021 	addu	t6,t6,t9
  4817cc:	8dce0300 	lw	t6,768(t6)
  4817d0:	01e53826 	xor	a3,t7,a1
  4817d4:	8f838534 	lw	v1,-31436(gp)
  4817d8:	00000000 	nop
  4817dc:	00641821 	addu	v1,v1,a0
  4817e0:	8c630500 	lw	v1,1280(v1)
  4817e4:	305800fc 	andi	t8,v0,0xfc
  4817e8:	00eec826 	xor	t9,a3,t6
  4817ec:	8f8b8534 	lw	t3,-31436(gp)
  4817f0:	00000000 	nop
  4817f4:	01785821 	addu	t3,t3,t8
  4817f8:	8d6b0700 	lw	t3,1792(t3)
  4817fc:	03233026 	xor	a2,t9,v1
  481800:	8d850048 	lw	a1,72(t4)
  481804:	00cbc826 	xor	t9,a2,t3
  481808:	03255026 	xor	t2,t9,a1
  48180c:	8d8f004c 	lw	t7,76(t4)
  481810:	314400fc 	andi	a0,t2,0xfc
  481814:	000a7203 	sra	t6,t2,0x8
  481818:	032f1026 	xor	v0,t9,t7
  48181c:	8f858534 	lw	a1,-31436(gp)
  481820:	00000000 	nop
  481824:	00a42821 	addu	a1,a1,a0
  481828:	8ca50000 	lw	a1,0(a1)
  48182c:	000ac402 	srl	t8,t2,0x10
  481830:	31c700fc 	andi	a3,t6,0xfc
  481834:	330600fc 	andi	a2,t8,0xfc
  481838:	8f8f8534 	lw	t7,-31436(gp)
  48183c:	00000000 	nop
  481840:	01e77821 	addu	t7,t7,a3
  481844:	8def0200 	lw	t7,512(t7)
  481848:	00025902 	srl	t3,v0,0x4
  48184c:	00185202 	srl	t2,t8,0x8
  481850:	00021f00 	sll	v1,v0,0x1c
  481854:	006bc025 	or	t8,v1,t3
  481858:	01057026 	xor	t6,t0,a1
  48185c:	8f878534 	lw	a3,-31436(gp)
  481860:	00000000 	nop
  481864:	00e63821 	addu	a3,a3,a2
  481868:	8ce70400 	lw	a3,1024(a3)
  48186c:	314500fc 	andi	a1,t2,0xfc
  481870:	330400fc 	andi	a0,t8,0xfc
  481874:	01cf5026 	xor	t2,t6,t7
  481878:	00183203 	sra	a2,t8,0x8
  48187c:	8f828534 	lw	v0,-31436(gp)
  481880:	00000000 	nop
  481884:	00451021 	addu	v0,v0,a1
  481888:	8c420600 	lw	v0,1536(v0)
  48188c:	01477826 	xor	t7,t2,a3
  481890:	8f8e8534 	lw	t6,-31436(gp)
  481894:	00000000 	nop
  481898:	01c47021 	addu	t6,t6,a0
  48189c:	8dce0100 	lw	t6,256(t6)
  4818a0:	00185c02 	srl	t3,t8,0x10
  4818a4:	30c300fc 	andi	v1,a2,0xfc
  4818a8:	317800fc 	andi	t8,t3,0xfc
  4818ac:	01e22826 	xor	a1,t7,v0
  4818b0:	8f848534 	lw	a0,-31436(gp)
  4818b4:	00000000 	nop
  4818b8:	00832021 	addu	a0,a0,v1
  4818bc:	8c840300 	lw	a0,768(a0)
  4818c0:	000b1203 	sra	v0,t3,0x8
  4818c4:	00ae7826 	xor	t7,a1,t6
  4818c8:	304700fc 	andi	a3,v0,0xfc
  4818cc:	8f8e8534 	lw	t6,-31436(gp)
  4818d0:	00000000 	nop
  4818d4:	01d87021 	addu	t6,t6,t8
  4818d8:	8dce0500 	lw	t6,1280(t6)
  4818dc:	01e41826 	xor	v1,t7,a0
  4818e0:	8f8b8534 	lw	t3,-31436(gp)
  4818e4:	00000000 	nop
  4818e8:	01675821 	addu	t3,t3,a3
  4818ec:	8d6b0700 	lw	t3,1792(t3)
  4818f0:	006e3026 	xor	a2,v1,t6
  4818f4:	8d850040 	lw	a1,64(t4)
  4818f8:	00cb4026 	xor	t0,a2,t3
  4818fc:	01055026 	xor	t2,t0,a1
  481900:	8d980044 	lw	t8,68(t4)
  481904:	314400fc 	andi	a0,t2,0xfc
  481908:	000a7a03 	sra	t7,t2,0x8
  48190c:	01187026 	xor	t6,t0,t8
  481910:	000a3c02 	srl	a3,t2,0x10
  481914:	8f858534 	lw	a1,-31436(gp)
  481918:	00000000 	nop
  48191c:	00a42821 	addu	a1,a1,a0
  481920:	8ca50000 	lw	a1,0(a1)
  481924:	31e200fc 	andi	v0,t7,0xfc
  481928:	8f8f8534 	lw	t7,-31436(gp)
  48192c:	00000000 	nop
  481930:	01e27821 	addu	t7,t7,v0
  481934:	8def0200 	lw	t7,512(t7)
  481938:	0007c202 	srl	t8,a3,0x8
  48193c:	30e600fc 	andi	a2,a3,0xfc
  481940:	000e5902 	srl	t3,t6,0x4
  481944:	000e1f00 	sll	v1,t6,0x1c
  481948:	006b7025 	or	t6,v1,t3
  48194c:	03252026 	xor	a0,t9,a1
  481950:	8f878534 	lw	a3,-31436(gp)
  481954:	00000000 	nop
  481958:	00e63821 	addu	a3,a3,a2
  48195c:	8ce70400 	lw	a3,1024(a3)
  481960:	330500fc 	andi	a1,t8,0xfc
  481964:	008f5026 	xor	t2,a0,t7
  481968:	8f998534 	lw	t9,-31436(gp)
  48196c:	00000000 	nop
  481970:	0325c821 	addu	t9,t9,a1
  481974:	8f390600 	lw	t9,1536(t9)
  481978:	31c200fc 	andi	v0,t6,0xfc
  48197c:	000e3203 	sra	a2,t6,0x8
  481980:	01471826 	xor	v1,t2,a3
  481984:	000e5c02 	srl	t3,t6,0x10
  481988:	8f858534 	lw	a1,-31436(gp)
  48198c:	00000000 	nop
  481990:	00a22821 	addu	a1,a1,v0
  481994:	8ca50100 	lw	a1,256(a1)
  481998:	30d800fc 	andi	t8,a2,0xfc
  48199c:	00797826 	xor	t7,v1,t9
  4819a0:	316400fc 	andi	a0,t3,0xfc
  4819a4:	000b1203 	sra	v0,t3,0x8
  4819a8:	8f8e8534 	lw	t6,-31436(gp)
  4819ac:	00000000 	nop
  4819b0:	01d87021 	addu	t6,t6,t8
  4819b4:	8dce0300 	lw	t6,768(t6)
  4819b8:	01e53826 	xor	a3,t7,a1
  4819bc:	8f838534 	lw	v1,-31436(gp)
  4819c0:	00000000 	nop
  4819c4:	00641821 	addu	v1,v1,a0
  4819c8:	8c630500 	lw	v1,1280(v1)
  4819cc:	305900fc 	andi	t9,v0,0xfc
  4819d0:	00eec026 	xor	t8,a3,t6
  4819d4:	8f8b8534 	lw	t3,-31436(gp)
  4819d8:	00000000 	nop
  4819dc:	01795821 	addu	t3,t3,t9
  4819e0:	8d6b0700 	lw	t3,1792(t3)
  4819e4:	03033026 	xor	a2,t8,v1
  4819e8:	8d850038 	lw	a1,56(t4)
  4819ec:	00cbc026 	xor	t8,a2,t3
  4819f0:	03055026 	xor	t2,t8,a1
  4819f4:	8d8f003c 	lw	t7,60(t4)
  4819f8:	314400fc 	andi	a0,t2,0xfc
  4819fc:	000a7203 	sra	t6,t2,0x8
  481a00:	030f1026 	xor	v0,t8,t7
  481a04:	8f858534 	lw	a1,-31436(gp)
  481a08:	00000000 	nop
  481a0c:	00a42821 	addu	a1,a1,a0
  481a10:	8ca50000 	lw	a1,0(a1)
  481a14:	000acc02 	srl	t9,t2,0x10
  481a18:	31c700fc 	andi	a3,t6,0xfc
  481a1c:	332600fc 	andi	a2,t9,0xfc
  481a20:	8f8f8534 	lw	t7,-31436(gp)
  481a24:	00000000 	nop
  481a28:	01e77821 	addu	t7,t7,a3
  481a2c:	8def0200 	lw	t7,512(t7)
  481a30:	00025902 	srl	t3,v0,0x4
  481a34:	00195202 	srl	t2,t9,0x8
  481a38:	00021f00 	sll	v1,v0,0x1c
  481a3c:	006bc825 	or	t9,v1,t3
  481a40:	01057026 	xor	t6,t0,a1
  481a44:	8f878534 	lw	a3,-31436(gp)
  481a48:	00000000 	nop
  481a4c:	00e63821 	addu	a3,a3,a2
  481a50:	8ce70400 	lw	a3,1024(a3)
  481a54:	314500fc 	andi	a1,t2,0xfc
  481a58:	332400fc 	andi	a0,t9,0xfc
  481a5c:	01cf5026 	xor	t2,t6,t7
  481a60:	00193203 	sra	a2,t9,0x8
  481a64:	8f828534 	lw	v0,-31436(gp)
  481a68:	00000000 	nop
  481a6c:	00451021 	addu	v0,v0,a1
  481a70:	8c420600 	lw	v0,1536(v0)
  481a74:	01477826 	xor	t7,t2,a3
  481a78:	8f8e8534 	lw	t6,-31436(gp)
  481a7c:	00000000 	nop
  481a80:	01c47021 	addu	t6,t6,a0
  481a84:	8dce0100 	lw	t6,256(t6)
  481a88:	00195c02 	srl	t3,t9,0x10
  481a8c:	30c300fc 	andi	v1,a2,0xfc
  481a90:	317900fc 	andi	t9,t3,0xfc
  481a94:	01e22826 	xor	a1,t7,v0
  481a98:	8f848534 	lw	a0,-31436(gp)
  481a9c:	00000000 	nop
  481aa0:	00832021 	addu	a0,a0,v1
  481aa4:	8c840300 	lw	a0,768(a0)
  481aa8:	000b1203 	sra	v0,t3,0x8
  481aac:	00ae7826 	xor	t7,a1,t6
  481ab0:	304700fc 	andi	a3,v0,0xfc
  481ab4:	8f8e8534 	lw	t6,-31436(gp)
  481ab8:	00000000 	nop
  481abc:	01d97021 	addu	t6,t6,t9
  481ac0:	8dce0500 	lw	t6,1280(t6)
  481ac4:	01e41826 	xor	v1,t7,a0
  481ac8:	8f8b8534 	lw	t3,-31436(gp)
  481acc:	00000000 	nop
  481ad0:	01675821 	addu	t3,t3,a3
  481ad4:	8d6b0700 	lw	t3,1792(t3)
  481ad8:	006e3026 	xor	a2,v1,t6
  481adc:	8d850030 	lw	a1,48(t4)
  481ae0:	00cb4026 	xor	t0,a2,t3
  481ae4:	01055026 	xor	t2,t0,a1
  481ae8:	8d990034 	lw	t9,52(t4)
  481aec:	314400fc 	andi	a0,t2,0xfc
  481af0:	000a7a03 	sra	t7,t2,0x8
  481af4:	01197026 	xor	t6,t0,t9
  481af8:	000a3c02 	srl	a3,t2,0x10
  481afc:	8f858534 	lw	a1,-31436(gp)
  481b00:	00000000 	nop
  481b04:	00a42821 	addu	a1,a1,a0
  481b08:	8ca50000 	lw	a1,0(a1)
  481b0c:	31e200fc 	andi	v0,t7,0xfc
  481b10:	8f8f8534 	lw	t7,-31436(gp)
  481b14:	00000000 	nop
  481b18:	01e27821 	addu	t7,t7,v0
  481b1c:	8def0200 	lw	t7,512(t7)
  481b20:	0007ca02 	srl	t9,a3,0x8
  481b24:	30e600fc 	andi	a2,a3,0xfc
  481b28:	000e5902 	srl	t3,t6,0x4
  481b2c:	000e1f00 	sll	v1,t6,0x1c
  481b30:	006b7025 	or	t6,v1,t3
  481b34:	03052026 	xor	a0,t8,a1
  481b38:	8f878534 	lw	a3,-31436(gp)
  481b3c:	00000000 	nop
  481b40:	00e63821 	addu	a3,a3,a2
  481b44:	8ce70400 	lw	a3,1024(a3)
  481b48:	332500fc 	andi	a1,t9,0xfc
  481b4c:	008f5026 	xor	t2,a0,t7
  481b50:	8f988534 	lw	t8,-31436(gp)
  481b54:	00000000 	nop
  481b58:	0305c021 	addu	t8,t8,a1
  481b5c:	8f180600 	lw	t8,1536(t8)
  481b60:	31c200fc 	andi	v0,t6,0xfc
  481b64:	000e3203 	sra	a2,t6,0x8
  481b68:	01471826 	xor	v1,t2,a3
  481b6c:	000e5c02 	srl	t3,t6,0x10
  481b70:	8f858534 	lw	a1,-31436(gp)
  481b74:	00000000 	nop
  481b78:	00a22821 	addu	a1,a1,v0
  481b7c:	8ca50100 	lw	a1,256(a1)
  481b80:	30d900fc 	andi	t9,a2,0xfc
  481b84:	00787826 	xor	t7,v1,t8
  481b88:	316400fc 	andi	a0,t3,0xfc
  481b8c:	000b1203 	sra	v0,t3,0x8
  481b90:	8f8e8534 	lw	t6,-31436(gp)
  481b94:	00000000 	nop
  481b98:	01d97021 	addu	t6,t6,t9
  481b9c:	8dce0300 	lw	t6,768(t6)
  481ba0:	01e53826 	xor	a3,t7,a1
  481ba4:	8f838534 	lw	v1,-31436(gp)
  481ba8:	00000000 	nop
  481bac:	00641821 	addu	v1,v1,a0
  481bb0:	8c630500 	lw	v1,1280(v1)
  481bb4:	305800fc 	andi	t8,v0,0xfc
  481bb8:	00eec826 	xor	t9,a3,t6
  481bbc:	8f8b8534 	lw	t3,-31436(gp)
  481bc0:	00000000 	nop
  481bc4:	01785821 	addu	t3,t3,t8
  481bc8:	8d6b0700 	lw	t3,1792(t3)
  481bcc:	03233026 	xor	a2,t9,v1
  481bd0:	8d850028 	lw	a1,40(t4)
  481bd4:	00cbc826 	xor	t9,a2,t3
  481bd8:	03255026 	xor	t2,t9,a1
  481bdc:	8d8f002c 	lw	t7,44(t4)
  481be0:	314400fc 	andi	a0,t2,0xfc
  481be4:	000a7203 	sra	t6,t2,0x8
  481be8:	032f1026 	xor	v0,t9,t7
  481bec:	8f858534 	lw	a1,-31436(gp)
  481bf0:	00000000 	nop
  481bf4:	00a42821 	addu	a1,a1,a0
  481bf8:	8ca50000 	lw	a1,0(a1)
  481bfc:	000ac402 	srl	t8,t2,0x10
  481c00:	31c700fc 	andi	a3,t6,0xfc
  481c04:	330600fc 	andi	a2,t8,0xfc
  481c08:	8f8f8534 	lw	t7,-31436(gp)
  481c0c:	00000000 	nop
  481c10:	01e77821 	addu	t7,t7,a3
  481c14:	8def0200 	lw	t7,512(t7)
  481c18:	00025902 	srl	t3,v0,0x4
  481c1c:	00185202 	srl	t2,t8,0x8
  481c20:	00021f00 	sll	v1,v0,0x1c
  481c24:	006bc025 	or	t8,v1,t3
  481c28:	01057026 	xor	t6,t0,a1
  481c2c:	8f878534 	lw	a3,-31436(gp)
  481c30:	00000000 	nop
  481c34:	00e63821 	addu	a3,a3,a2
  481c38:	8ce70400 	lw	a3,1024(a3)
  481c3c:	314500fc 	andi	a1,t2,0xfc
  481c40:	330400fc 	andi	a0,t8,0xfc
  481c44:	01cf5026 	xor	t2,t6,t7
  481c48:	00183203 	sra	a2,t8,0x8
  481c4c:	8f828534 	lw	v0,-31436(gp)
  481c50:	00000000 	nop
  481c54:	00451021 	addu	v0,v0,a1
  481c58:	8c420600 	lw	v0,1536(v0)
  481c5c:	01477826 	xor	t7,t2,a3
  481c60:	8f8e8534 	lw	t6,-31436(gp)
  481c64:	00000000 	nop
  481c68:	01c47021 	addu	t6,t6,a0
  481c6c:	8dce0100 	lw	t6,256(t6)
  481c70:	00185c02 	srl	t3,t8,0x10
  481c74:	30c300fc 	andi	v1,a2,0xfc
  481c78:	317800fc 	andi	t8,t3,0xfc
  481c7c:	01e22826 	xor	a1,t7,v0
  481c80:	8f848534 	lw	a0,-31436(gp)
  481c84:	00000000 	nop
  481c88:	00832021 	addu	a0,a0,v1
  481c8c:	8c840300 	lw	a0,768(a0)
  481c90:	000b1203 	sra	v0,t3,0x8
  481c94:	00ae7826 	xor	t7,a1,t6
  481c98:	304700fc 	andi	a3,v0,0xfc
  481c9c:	8f8e8534 	lw	t6,-31436(gp)
  481ca0:	00000000 	nop
  481ca4:	01d87021 	addu	t6,t6,t8
  481ca8:	8dce0500 	lw	t6,1280(t6)
  481cac:	01e41826 	xor	v1,t7,a0
  481cb0:	8f8b8534 	lw	t3,-31436(gp)
  481cb4:	00000000 	nop
  481cb8:	01675821 	addu	t3,t3,a3
  481cbc:	8d6b0700 	lw	t3,1792(t3)
  481cc0:	006e3026 	xor	a2,v1,t6
  481cc4:	8d850020 	lw	a1,32(t4)
  481cc8:	00cb4026 	xor	t0,a2,t3
  481ccc:	01055026 	xor	t2,t0,a1
  481cd0:	8d980024 	lw	t8,36(t4)
  481cd4:	314400fc 	andi	a0,t2,0xfc
  481cd8:	000a7a03 	sra	t7,t2,0x8
  481cdc:	01187026 	xor	t6,t0,t8
  481ce0:	000a3c02 	srl	a3,t2,0x10
  481ce4:	8f858534 	lw	a1,-31436(gp)
  481ce8:	00000000 	nop
  481cec:	00a42821 	addu	a1,a1,a0
  481cf0:	8ca50000 	lw	a1,0(a1)
  481cf4:	31e200fc 	andi	v0,t7,0xfc
  481cf8:	8f8f8534 	lw	t7,-31436(gp)
  481cfc:	00000000 	nop
  481d00:	01e27821 	addu	t7,t7,v0
  481d04:	8def0200 	lw	t7,512(t7)
  481d08:	0007c202 	srl	t8,a3,0x8
  481d0c:	30e600fc 	andi	a2,a3,0xfc
  481d10:	000e5902 	srl	t3,t6,0x4
  481d14:	000e1f00 	sll	v1,t6,0x1c
  481d18:	006b7025 	or	t6,v1,t3
  481d1c:	03252026 	xor	a0,t9,a1
  481d20:	8f878534 	lw	a3,-31436(gp)
  481d24:	00000000 	nop
  481d28:	00e63821 	addu	a3,a3,a2
  481d2c:	8ce70400 	lw	a3,1024(a3)
  481d30:	330500fc 	andi	a1,t8,0xfc
  481d34:	008f5026 	xor	t2,a0,t7
  481d38:	8f998534 	lw	t9,-31436(gp)
  481d3c:	00000000 	nop
  481d40:	0325c821 	addu	t9,t9,a1
  481d44:	8f390600 	lw	t9,1536(t9)
  481d48:	31c200fc 	andi	v0,t6,0xfc
  481d4c:	000e3203 	sra	a2,t6,0x8
  481d50:	01471826 	xor	v1,t2,a3
  481d54:	000e5c02 	srl	t3,t6,0x10
  481d58:	8f858534 	lw	a1,-31436(gp)
  481d5c:	00000000 	nop
  481d60:	00a22821 	addu	a1,a1,v0
  481d64:	8ca50100 	lw	a1,256(a1)
  481d68:	30d800fc 	andi	t8,a2,0xfc
  481d6c:	00797826 	xor	t7,v1,t9
  481d70:	316400fc 	andi	a0,t3,0xfc
  481d74:	000b1203 	sra	v0,t3,0x8
  481d78:	8f8e8534 	lw	t6,-31436(gp)
  481d7c:	00000000 	nop
  481d80:	01d87021 	addu	t6,t6,t8
  481d84:	8dce0300 	lw	t6,768(t6)
  481d88:	01e53826 	xor	a3,t7,a1
  481d8c:	8f838534 	lw	v1,-31436(gp)
  481d90:	00000000 	nop
  481d94:	00641821 	addu	v1,v1,a0
  481d98:	8c630500 	lw	v1,1280(v1)
  481d9c:	305900fc 	andi	t9,v0,0xfc
  481da0:	00eec026 	xor	t8,a3,t6
  481da4:	8f8b8534 	lw	t3,-31436(gp)
  481da8:	00000000 	nop
  481dac:	01795821 	addu	t3,t3,t9
  481db0:	8d6b0700 	lw	t3,1792(t3)
  481db4:	03033026 	xor	a2,t8,v1
  481db8:	8d850018 	lw	a1,24(t4)
  481dbc:	00cbc026 	xor	t8,a2,t3
  481dc0:	03055026 	xor	t2,t8,a1
  481dc4:	8d8f001c 	lw	t7,28(t4)
  481dc8:	314400fc 	andi	a0,t2,0xfc
  481dcc:	000a7203 	sra	t6,t2,0x8
  481dd0:	030f1026 	xor	v0,t8,t7
  481dd4:	8f858534 	lw	a1,-31436(gp)
  481dd8:	00000000 	nop
  481ddc:	00a42821 	addu	a1,a1,a0
  481de0:	8ca50000 	lw	a1,0(a1)
  481de4:	000acc02 	srl	t9,t2,0x10
  481de8:	31c700fc 	andi	a3,t6,0xfc
  481dec:	332600fc 	andi	a2,t9,0xfc
  481df0:	8f8f8534 	lw	t7,-31436(gp)
  481df4:	00000000 	nop
  481df8:	01e77821 	addu	t7,t7,a3
  481dfc:	8def0200 	lw	t7,512(t7)
  481e00:	00025902 	srl	t3,v0,0x4
  481e04:	00195202 	srl	t2,t9,0x8
  481e08:	00021f00 	sll	v1,v0,0x1c
  481e0c:	006bc825 	or	t9,v1,t3
  481e10:	01057026 	xor	t6,t0,a1
  481e14:	8f878534 	lw	a3,-31436(gp)
  481e18:	00000000 	nop
  481e1c:	00e63821 	addu	a3,a3,a2
  481e20:	8ce70400 	lw	a3,1024(a3)
  481e24:	314500fc 	andi	a1,t2,0xfc
  481e28:	332400fc 	andi	a0,t9,0xfc
  481e2c:	01cf5026 	xor	t2,t6,t7
  481e30:	00193203 	sra	a2,t9,0x8
  481e34:	8f828534 	lw	v0,-31436(gp)
  481e38:	00000000 	nop
  481e3c:	00451021 	addu	v0,v0,a1
  481e40:	8c420600 	lw	v0,1536(v0)
  481e44:	01477826 	xor	t7,t2,a3
  481e48:	8f8e8534 	lw	t6,-31436(gp)
  481e4c:	00000000 	nop
  481e50:	01c47021 	addu	t6,t6,a0
  481e54:	8dce0100 	lw	t6,256(t6)
  481e58:	00195c02 	srl	t3,t9,0x10
  481e5c:	30c300fc 	andi	v1,a2,0xfc
  481e60:	317900fc 	andi	t9,t3,0xfc
  481e64:	01e22826 	xor	a1,t7,v0
  481e68:	8f848534 	lw	a0,-31436(gp)
  481e6c:	00000000 	nop
  481e70:	00832021 	addu	a0,a0,v1
  481e74:	8c840300 	lw	a0,768(a0)
  481e78:	000b1203 	sra	v0,t3,0x8
  481e7c:	00ae7826 	xor	t7,a1,t6
  481e80:	304700fc 	andi	a3,v0,0xfc
  481e84:	8f8e8534 	lw	t6,-31436(gp)
  481e88:	00000000 	nop
  481e8c:	01d97021 	addu	t6,t6,t9
  481e90:	8dce0500 	lw	t6,1280(t6)
  481e94:	01e41826 	xor	v1,t7,a0
  481e98:	8f8b8534 	lw	t3,-31436(gp)
  481e9c:	00000000 	nop
  481ea0:	01675821 	addu	t3,t3,a3
  481ea4:	8d6b0700 	lw	t3,1792(t3)
  481ea8:	006e3026 	xor	a2,v1,t6
  481eac:	8d850010 	lw	a1,16(t4)
  481eb0:	00cb4026 	xor	t0,a2,t3
  481eb4:	01055026 	xor	t2,t0,a1
  481eb8:	8d990014 	lw	t9,20(t4)
  481ebc:	314400fc 	andi	a0,t2,0xfc
  481ec0:	000a7a03 	sra	t7,t2,0x8
  481ec4:	01197026 	xor	t6,t0,t9
  481ec8:	000a3c02 	srl	a3,t2,0x10
  481ecc:	8f858534 	lw	a1,-31436(gp)
  481ed0:	00000000 	nop
  481ed4:	00a42821 	addu	a1,a1,a0
  481ed8:	8ca50000 	lw	a1,0(a1)
  481edc:	31e200fc 	andi	v0,t7,0xfc
  481ee0:	8f8f8534 	lw	t7,-31436(gp)
  481ee4:	00000000 	nop
  481ee8:	01e27821 	addu	t7,t7,v0
  481eec:	8def0200 	lw	t7,512(t7)
  481ef0:	0007ca02 	srl	t9,a3,0x8
  481ef4:	30e600fc 	andi	a2,a3,0xfc
  481ef8:	000e5902 	srl	t3,t6,0x4
  481efc:	000e1f00 	sll	v1,t6,0x1c
  481f00:	006b7025 	or	t6,v1,t3
  481f04:	03052026 	xor	a0,t8,a1
  481f08:	8f878534 	lw	a3,-31436(gp)
  481f0c:	00000000 	nop
  481f10:	00e63821 	addu	a3,a3,a2
  481f14:	8ce70400 	lw	a3,1024(a3)
  481f18:	332500fc 	andi	a1,t9,0xfc
  481f1c:	008f5026 	xor	t2,a0,t7
  481f20:	8f988534 	lw	t8,-31436(gp)
  481f24:	00000000 	nop
  481f28:	0305c021 	addu	t8,t8,a1
  481f2c:	8f180600 	lw	t8,1536(t8)
  481f30:	31c200fc 	andi	v0,t6,0xfc
  481f34:	000e3203 	sra	a2,t6,0x8
  481f38:	01471826 	xor	v1,t2,a3
  481f3c:	000e5c02 	srl	t3,t6,0x10
  481f40:	8f858534 	lw	a1,-31436(gp)
  481f44:	00000000 	nop
  481f48:	00a22821 	addu	a1,a1,v0
  481f4c:	8ca50100 	lw	a1,256(a1)
  481f50:	30d900fc 	andi	t9,a2,0xfc
  481f54:	00787826 	xor	t7,v1,t8
  481f58:	316400fc 	andi	a0,t3,0xfc
  481f5c:	000b1203 	sra	v0,t3,0x8
  481f60:	8f8e8534 	lw	t6,-31436(gp)
  481f64:	00000000 	nop
  481f68:	01d97021 	addu	t6,t6,t9
  481f6c:	8dce0300 	lw	t6,768(t6)
  481f70:	01e53826 	xor	a3,t7,a1
  481f74:	8f838534 	lw	v1,-31436(gp)
  481f78:	00000000 	nop
  481f7c:	00641821 	addu	v1,v1,a0
  481f80:	8c630500 	lw	v1,1280(v1)
  481f84:	305800fc 	andi	t8,v0,0xfc
  481f88:	00eec826 	xor	t9,a3,t6
  481f8c:	8f8b8534 	lw	t3,-31436(gp)
  481f90:	00000000 	nop
  481f94:	01785821 	addu	t3,t3,t8
  481f98:	8d6b0700 	lw	t3,1792(t3)
  481f9c:	03233026 	xor	a2,t9,v1
  481fa0:	8d850008 	lw	a1,8(t4)
  481fa4:	00cbc826 	xor	t9,a2,t3
  481fa8:	03255026 	xor	t2,t9,a1
  481fac:	8d8f000c 	lw	t7,12(t4)
  481fb0:	314400fc 	andi	a0,t2,0xfc
  481fb4:	000a7203 	sra	t6,t2,0x8
  481fb8:	032fc026 	xor	t8,t9,t7
  481fbc:	000a3c02 	srl	a3,t2,0x10
  481fc0:	8f858534 	lw	a1,-31436(gp)
  481fc4:	00000000 	nop
  481fc8:	00a42821 	addu	a1,a1,a0
  481fcc:	8ca50000 	lw	a1,0(a1)
  481fd0:	31c200fc 	andi	v0,t6,0xfc
  481fd4:	8f8e8534 	lw	t6,-31436(gp)
  481fd8:	00000000 	nop
  481fdc:	01c27021 	addu	t6,t6,v0
  481fe0:	8dce0200 	lw	t6,512(t6)
  481fe4:	00077a02 	srl	t7,a3,0x8
  481fe8:	30e600fc 	andi	a2,a3,0xfc
  481fec:	00185902 	srl	t3,t8,0x4
  481ff0:	00181f00 	sll	v1,t8,0x1c
  481ff4:	006bc025 	or	t8,v1,t3
  481ff8:	01052026 	xor	a0,t0,a1
  481ffc:	8f878534 	lw	a3,-31436(gp)
  482000:	00000000 	nop
  482004:	00e63821 	addu	a3,a3,a2
  482008:	8ce70400 	lw	a3,1024(a3)
  48200c:	31e500fc 	andi	a1,t7,0xfc
  482010:	8f8f8534 	lw	t7,-31436(gp)
  482014:	00000000 	nop
  482018:	01e57821 	addu	t7,t7,a1
  48201c:	8def0600 	lw	t7,1536(t7)
  482020:	008e5026 	xor	t2,a0,t6
  482024:	330200fc 	andi	v0,t8,0xfc
  482028:	00183203 	sra	a2,t8,0x8
  48202c:	01477026 	xor	t6,t2,a3
  482030:	00185c02 	srl	t3,t8,0x10
  482034:	8f858534 	lw	a1,-31436(gp)
  482038:	00000000 	nop
  48203c:	00a22821 	addu	a1,a1,v0
  482040:	8ca50100 	lw	a1,256(a1)
  482044:	30c300fc 	andi	v1,a2,0xfc
  482048:	01cfc026 	xor	t8,t6,t7
  48204c:	316400fc 	andi	a0,t3,0xfc
  482050:	8f8f8534 	lw	t7,-31436(gp)
  482054:	00000000 	nop
  482058:	01e37821 	addu	t7,t7,v1
  48205c:	8def0300 	lw	t7,768(t7)
  482060:	000b1203 	sra	v0,t3,0x8
  482064:	03053826 	xor	a3,t8,a1
  482068:	8f838534 	lw	v1,-31436(gp)
  48206c:	00000000 	nop
  482070:	00641821 	addu	v1,v1,a0
  482074:	8c630500 	lw	v1,1280(v1)
  482078:	304e00fc 	andi	t6,v0,0xfc
  48207c:	00ef5826 	xor	t3,a3,t7
  482080:	8f858534 	lw	a1,-31436(gp)
  482084:	00000000 	nop
  482088:	00ae2821 	addu	a1,a1,t6
  48208c:	8ca50700 	lw	a1,1792(a1)
  482090:	01635026 	xor	t2,t3,v1
  482094:	8d980000 	lw	t8,0(t4)
  482098:	01454026 	xor	t0,t2,a1
  48209c:	01187826 	xor	t7,t0,t8
  4820a0:	8d840004 	lw	a0,4(t4)
  4820a4:	31e600fc 	andi	a2,t7,0xfc
  4820a8:	000f6203 	sra	t4,t7,0x8
  4820ac:	01047026 	xor	t6,t0,a0
  4820b0:	000f1402 	srl	v0,t7,0x10
  4820b4:	8f8a8534 	lw	t2,-31436(gp)
  4820b8:	00000000 	nop
  4820bc:	01465021 	addu	t2,t2,a2
  4820c0:	8d4a0000 	lw	t2,0(t2)
  4820c4:	318700fc 	andi	a3,t4,0xfc
  4820c8:	8f8c8534 	lw	t4,-31436(gp)
  4820cc:	00000000 	nop
  4820d0:	01876021 	addu	t4,t4,a3
  4820d4:	8d8c0200 	lw	t4,512(t4)
  4820d8:	304500fc 	andi	a1,v0,0xfc
  4820dc:	0002c202 	srl	t8,v0,0x8
  4820e0:	000e5902 	srl	t3,t6,0x4
  4820e4:	000e1f00 	sll	v1,t6,0x1c
  4820e8:	006b7025 	or	t6,v1,t3
  4820ec:	032a7826 	xor	t7,t9,t2
  4820f0:	8f878534 	lw	a3,-31436(gp)
  4820f4:	00000000 	nop
  4820f8:	00e53821 	addu	a3,a3,a1
  4820fc:	8ce70400 	lw	a3,1024(a3)
  482100:	330400fc 	andi	a0,t8,0xfc
  482104:	01ec1826 	xor	v1,t7,t4
  482108:	31c600fc 	andi	a2,t6,0xfc
  48210c:	8f998534 	lw	t9,-31436(gp)
  482110:	00000000 	nop
  482114:	0324c821 	addu	t9,t9,a0
  482118:	8f390600 	lw	t9,1536(t9)
  48211c:	000e1203 	sra	v0,t6,0x8
  482120:	0067c026 	xor	t8,v1,a3
  482124:	8f8c8534 	lw	t4,-31436(gp)
  482128:	00000000 	nop
  48212c:	01866021 	addu	t4,t4,a2
  482130:	8d8c0100 	lw	t4,256(t4)
  482134:	000e2c02 	srl	a1,t6,0x10
  482138:	304b00fc 	andi	t3,v0,0xfc
  48213c:	03192026 	xor	a0,t8,t9
  482140:	8f8e8534 	lw	t6,-31436(gp)
  482144:	00000000 	nop
  482148:	01cb7021 	addu	t6,t6,t3
  48214c:	8dce0300 	lw	t6,768(t6)
  482150:	30aa00fc 	andi	t2,a1,0xfc
  482154:	00057a03 	sra	t7,a1,0x8
  482158:	008c3826 	xor	a3,a0,t4
  48215c:	8f998534 	lw	t9,-31436(gp)
  482160:	00000000 	nop
  482164:	032ac821 	addu	t9,t9,t2
  482168:	8f390500 	lw	t9,1280(t9)
  48216c:	31e300fc 	andi	v1,t7,0xfc
  482170:	00ee3026 	xor	a2,a3,t6
  482174:	8f988534 	lw	t8,-31436(gp)
  482178:	00000000 	nop
  48217c:	0303c021 	addu	t8,t8,v1
  482180:	8f180700 	lw	t8,1792(t8)
  482184:	00d96026 	xor	t4,a2,t9
  482188:	1000fc27 	b	481228 <des_encrypt2+0xf78>
  48218c:	01984826 	xor	t1,t4,t8

00482190 <des_ncbc_encrypt>:
  482190:	3c1c0fb9 	lui	gp,0xfb9
  482194:	279ca7e0 	addiu	gp,gp,-22560
  482198:	0399e021 	addu	gp,gp,t9
  48219c:	27bdffb0 	addiu	sp,sp,-80
  4821a0:	afbc0010 	sw	gp,16(sp)
  4821a4:	afbe0044 	sw	s8,68(sp)
  4821a8:	8fa30064 	lw	v1,100(sp)
  4821ac:	8fbe0060 	lw	s8,96(sp)
  4821b0:	afb7003c 	sw	s7,60(sp)
  4821b4:	afb60038 	sw	s6,56(sp)
  4821b8:	afb10024 	sw	s1,36(sp)
  4821bc:	afb00020 	sw	s0,32(sp)
  4821c0:	afbf0048 	sw	ra,72(sp)
  4821c4:	afbc0040 	sw	gp,64(sp)
  4821c8:	afb50034 	sw	s5,52(sp)
  4821cc:	afb40030 	sw	s4,48(sp)
  4821d0:	afb3002c 	sw	s3,44(sp)
  4821d4:	afb20028 	sw	s2,40(sp)
  4821d8:	00e0b821 	move	s7,a3
  4821dc:	00c0b021 	move	s6,a2
  4821e0:	00808021 	move	s0,a0
  4821e4:	00a08821 	move	s1,a1
  4821e8:	106000d9 	beqz	v1,482550 <des_ncbc_encrypt+0x3c0>
  4821ec:	03c04021 	move	t0,s8
  4821f0:	25060001 	addiu	a2,t0,1
  4821f4:	24c50001 	addiu	a1,a2,1
  4821f8:	24a30001 	addiu	v1,a1,1
  4821fc:	24620001 	addiu	v0,v1,1
  482200:	24590001 	addiu	t9,v0,1
  482204:	90d80000 	lbu	t8,0(a2)
  482208:	27340001 	addiu	s4,t9,1
  48220c:	93350000 	lbu	s5,0(t9)
  482210:	91130000 	lbu	s3,0(t0)
  482214:	90b20000 	lbu	s2,0(a1)
  482218:	904f0000 	lbu	t7,0(v0)
  48221c:	928e0000 	lbu	t6,0(s4)
  482220:	906c0000 	lbu	t4,0(v1)
  482224:	00185200 	sll	t2,t8,0x8
  482228:	00154a00 	sll	t1,s5,0x8
  48222c:	928b0001 	lbu	t3,1(s4)
  482230:	026a3825 	or	a3,s3,t2
  482234:	01e92025 	or	a0,t7,t1
  482238:	00126c00 	sll	t5,s2,0x10
  48223c:	000e4400 	sll	t0,t6,0x10
  482240:	00ed2825 	or	a1,a3,t5
  482244:	000c3600 	sll	a2,t4,0x18
  482248:	00881025 	or	v0,a0,t0
  48224c:	000b1e00 	sll	v1,t3,0x18
  482250:	26d6fff8 	addiu	s6,s6,-8
  482254:	00a65025 	or	t2,a1,a2
  482258:	06c00043 	bltz	s6,482368 <des_ncbc_encrypt+0x1d8>
  48225c:	00434825 	or	t1,v0,v1
  482260:	26030001 	addiu	v1,s0,1
  482264:	246d0001 	addiu	t5,v1,1
  482268:	25ac0001 	addiu	t4,t5,1
  48226c:	25880001 	addiu	t0,t4,1
  482270:	25140001 	addiu	s4,t0,1
  482274:	90620000 	lbu	v0,0(v1)
  482278:	928b0000 	lbu	t3,0(s4)
  48227c:	26850001 	addiu	a1,s4,1
  482280:	92060000 	lbu	a2,0(s0)
  482284:	91b90000 	lbu	t9,0(t5)
  482288:	91040000 	lbu	a0,0(t0)
  48228c:	90b80000 	lbu	t8,0(a1)
  482290:	24b40001 	addiu	s4,a1,1
  482294:	918f0000 	lbu	t7,0(t4)
  482298:	928d0000 	lbu	t5,0(s4)
  48229c:	00029a00 	sll	s3,v0,0x8
  4822a0:	000b9200 	sll	s2,t3,0x8
  4822a4:	00d33825 	or	a3,a2,s3
  4822a8:	00921825 	or	v1,a0,s2
  4822ac:	00187400 	sll	t6,t8,0x10
  4822b0:	0019ac00 	sll	s5,t9,0x10
  4822b4:	00f54025 	or	t0,a3,s5
  4822b8:	000f6600 	sll	t4,t7,0x18
  4822bc:	006e3025 	or	a2,v1,t6
  4822c0:	000d5e00 	sll	t3,t5,0x18
  4822c4:	010c2825 	or	a1,t0,t4
  4822c8:	00cb1025 	or	v0,a2,t3
  4822cc:	00aac826 	xor	t9,a1,t2
  4822d0:	27a40018 	addiu	a0,sp,24
  4822d4:	00495026 	xor	t2,v0,t1
  4822d8:	02e02821 	move	a1,s7
  4822dc:	24060001 	li	a2,1
  4822e0:	afaa001c 	sw	t2,28(sp)
  4822e4:	afb90018 	sw	t9,24(sp)
  4822e8:	8f998548 	lw	t9,-31416(gp)
  4822ec:	00000000 	nop
  4822f0:	0320f809 	jalr	t9
  4822f4:	00000000 	nop
  4822f8:	8fbc0010 	lw	gp,16(sp)
  4822fc:	8faa0018 	lw	t2,24(sp)
  482300:	26350001 	addiu	s5,s1,1
  482304:	26b20001 	addiu	s2,s5,1
  482308:	000a4e02 	srl	t1,t2,0x18
  48230c:	264f0001 	addiu	t7,s2,1
  482310:	000ac202 	srl	t8,t2,0x8
  482314:	000a9c02 	srl	s3,t2,0x10
  482318:	a22a0000 	sb	t2,0(s1)
  48231c:	25ee0001 	addiu	t6,t7,1
  482320:	a2b80000 	sb	t8,0(s5)
  482324:	a2530000 	sb	s3,0(s2)
  482328:	a1e90000 	sb	t1,0(t7)
  48232c:	8fa9001c 	lw	t1,28(sp)
  482330:	25c70001 	addiu	a3,t6,1
  482334:	24e80001 	addiu	t0,a3,1
  482338:	250b0001 	addiu	t3,t0,1
  48233c:	00096a02 	srl	t5,t1,0x8
  482340:	00096402 	srl	t4,t1,0x10
  482344:	00092602 	srl	a0,t1,0x18
  482348:	26d6fff8 	addiu	s6,s6,-8
  48234c:	a1c90000 	sb	t1,0(t6)
  482350:	26900001 	addiu	s0,s4,1
  482354:	a0ed0000 	sb	t5,0(a3)
  482358:	25710001 	addiu	s1,t3,1
  48235c:	a10c0000 	sb	t4,0(t0)
  482360:	06c1ffbf 	bgez	s6,482260 <des_ncbc_encrypt+0xd0>
  482364:	a1640000 	sb	a0,0(t3)
  482368:	240efff8 	li	t6,-8
  48236c:	12ce0071 	beq	s6,t6,482534 <des_ncbc_encrypt+0x3a4>
  482370:	02167821 	addu	t7,s0,s6
  482374:	26c40007 	addiu	a0,s6,7
  482378:	2c960008 	sltiu	s6,a0,8
  48237c:	25f00008 	addiu	s0,t7,8
  482380:	00009021 	move	s2,zero
  482384:	12c0002e 	beqz	s6,482440 <des_ncbc_encrypt+0x2b0>
  482388:	00009821 	move	s3,zero
  48238c:	0004a880 	sll	s5,a0,0x2
  482390:	8f87802c 	lw	a3,-32724(gp)
  482394:	00000000 	nop
  482398:	24e76cb0 	addiu	a3,a3,27824
  48239c:	00f53821 	addu	a3,a3,s5
  4823a0:	8ce70000 	lw	a3,0(a3)
  4823a4:	00000000 	nop
  4823a8:	00fc3821 	addu	a3,a3,gp
  4823ac:	00e00008 	jr	a3
  4823b0:	00000000 	nop
  4823b4:	2610ffff 	addiu	s0,s0,-1
  4823b8:	92180000 	lbu	t8,0(s0)
  4823bc:	00000000 	nop
  4823c0:	00189600 	sll	s2,t8,0x18
  4823c4:	2610ffff 	addiu	s0,s0,-1
  4823c8:	92190000 	lbu	t9,0(s0)
  4823cc:	00000000 	nop
  4823d0:	00192400 	sll	a0,t9,0x10
  4823d4:	02449025 	or	s2,s2,a0
  4823d8:	2610ffff 	addiu	s0,s0,-1
  4823dc:	92130000 	lbu	s3,0(s0)
  4823e0:	00000000 	nop
  4823e4:	00133200 	sll	a2,s3,0x8
  4823e8:	02469025 	or	s2,s2,a2
  4823ec:	2610ffff 	addiu	s0,s0,-1
  4823f0:	920b0000 	lbu	t3,0(s0)
  4823f4:	00000000 	nop
  4823f8:	024b9025 	or	s2,s2,t3
  4823fc:	2610ffff 	addiu	s0,s0,-1
  482400:	92050000 	lbu	a1,0(s0)
  482404:	00000000 	nop
  482408:	00059e00 	sll	s3,a1,0x18
  48240c:	2610ffff 	addiu	s0,s0,-1
  482410:	92080000 	lbu	t0,0(s0)
  482414:	00000000 	nop
  482418:	0008a400 	sll	s4,t0,0x10
  48241c:	02749825 	or	s3,s3,s4
  482420:	2610ffff 	addiu	s0,s0,-1
  482424:	920d0000 	lbu	t5,0(s0)
  482428:	00000000 	nop
  48242c:	000d6200 	sll	t4,t5,0x8
  482430:	026c9825 	or	s3,s3,t4
  482434:	9203ffff 	lbu	v1,-1(s0)
  482438:	00000000 	nop
  48243c:	02639825 	or	s3,s3,v1
  482440:	02e02821 	move	a1,s7
  482444:	026ab026 	xor	s6,s3,t2
  482448:	27a40018 	addiu	a0,sp,24
  48244c:	02495026 	xor	t2,s2,t1
  482450:	24060001 	li	a2,1
  482454:	afaa001c 	sw	t2,28(sp)
  482458:	afb60018 	sw	s6,24(sp)
  48245c:	8f998548 	lw	t9,-31416(gp)
  482460:	00000000 	nop
  482464:	0320f809 	jalr	t9
  482468:	00000000 	nop
  48246c:	8fbc0010 	lw	gp,16(sp)
  482470:	8faa0018 	lw	t2,24(sp)
  482474:	262e0001 	addiu	t6,s1,1
  482478:	25c90001 	addiu	t1,t6,1
  48247c:	25220001 	addiu	v0,t1,1
  482480:	000a3a02 	srl	a3,t2,0x8
  482484:	000a3402 	srl	a2,t2,0x10
  482488:	000a2e02 	srl	a1,t2,0x18
  48248c:	a22a0000 	sb	t2,0(s1)
  482490:	a1c70000 	sb	a3,0(t6)
  482494:	a1260000 	sb	a2,0(t1)
  482498:	a0450000 	sb	a1,0(v0)
  48249c:	8fa9001c 	lw	t1,28(sp)
  4824a0:	24520001 	addiu	s2,v0,1
  4824a4:	26570001 	addiu	s7,s2,1
  4824a8:	26f00001 	addiu	s0,s7,1
  4824ac:	00092202 	srl	a0,t1,0x8
  4824b0:	00091c02 	srl	v1,t1,0x10
  4824b4:	00091602 	srl	v0,t1,0x18
  4824b8:	a2490000 	sb	t1,0(s2)
  4824bc:	a2e40000 	sb	a0,0(s7)
  4824c0:	a2020001 	sb	v0,1(s0)
  4824c4:	a2030000 	sb	v1,0(s0)
  4824c8:	03c0c821 	move	t9,s8
  4824cc:	27380001 	addiu	t8,t9,1
  4824d0:	27150001 	addiu	s5,t8,1
  4824d4:	a32a0000 	sb	t2,0(t9)
  4824d8:	a3070000 	sb	a3,0(t8)
  4824dc:	26a70001 	addiu	a3,s5,1
  4824e0:	24ef0001 	addiu	t7,a3,1
  4824e4:	25fe0001 	addiu	s8,t7,1
  4824e8:	27d10001 	addiu	s1,s8,1
  4824ec:	a2a60000 	sb	a2,0(s5)
  4824f0:	a0e50000 	sb	a1,0(a3)
  4824f4:	a1e90000 	sb	t1,0(t7)
  4824f8:	a3c40000 	sb	a0,0(s8)
  4824fc:	a2220001 	sb	v0,1(s1)
  482500:	a2230000 	sb	v1,0(s1)
  482504:	8fbf0048 	lw	ra,72(sp)
  482508:	8fbe0044 	lw	s8,68(sp)
  48250c:	8fb7003c 	lw	s7,60(sp)
  482510:	8fb60038 	lw	s6,56(sp)
  482514:	8fb50034 	lw	s5,52(sp)
  482518:	8fb40030 	lw	s4,48(sp)
  48251c:	8fb3002c 	lw	s3,44(sp)
  482520:	8fb20028 	lw	s2,40(sp)
  482524:	8fb10024 	lw	s1,36(sp)
  482528:	8fb00020 	lw	s0,32(sp)
  48252c:	03e00008 	jr	ra
  482530:	27bd0050 	addiu	sp,sp,80
  482534:	000a3a02 	srl	a3,t2,0x8
  482538:	000a3402 	srl	a2,t2,0x10
  48253c:	000a2e02 	srl	a1,t2,0x18
  482540:	00092202 	srl	a0,t1,0x8
  482544:	00091c02 	srl	v1,t1,0x10
  482548:	1000ffdf 	b	4824c8 <des_ncbc_encrypt+0x338>
  48254c:	00091602 	srl	v0,t1,0x18
  482550:	25050001 	addiu	a1,t0,1
  482554:	24ab0001 	addiu	t3,a1,1
  482558:	25730001 	addiu	s3,t3,1
  48255c:	26660001 	addiu	a2,s3,1
  482560:	24d90001 	addiu	t9,a2,1
  482564:	27350001 	addiu	s5,t9,1
  482568:	90a20000 	lbu	v0,0(a1)
  48256c:	93380000 	lbu	t8,0(t9)
  482570:	91070000 	lbu	a3,0(t0)
  482574:	916f0000 	lbu	t7,0(t3)
  482578:	90c30000 	lbu	v1,0(a2)
  48257c:	92ae0000 	lbu	t6,0(s5)
  482580:	926d0000 	lbu	t5,0(s3)
  482584:	0002a200 	sll	s4,v0,0x8
  482588:	92ac0001 	lbu	t4,1(s5)
  48258c:	00185200 	sll	t2,t8,0x8
  482590:	00f49025 	or	s2,a3,s4
  482594:	000f4c00 	sll	t1,t7,0x10
  482598:	006a2025 	or	a0,v1,t2
  48259c:	000e4400 	sll	t0,t6,0x10
  4825a0:	02495825 	or	t3,s2,t1
  4825a4:	000d2e00 	sll	a1,t5,0x18
  4825a8:	00883025 	or	a2,a0,t0
  4825ac:	000c9e00 	sll	s3,t4,0x18
  4825b0:	26d6fff8 	addiu	s6,s6,-8
  4825b4:	0165a025 	or	s4,t3,a1
  4825b8:	06c00045 	bltz	s6,4826d0 <des_ncbc_encrypt+0x540>
  4825bc:	00d3a825 	or	s5,a2,s3
  4825c0:	260e0001 	addiu	t6,s0,1
  4825c4:	91cd0000 	lbu	t5,0(t6)
  4825c8:	25c90001 	addiu	t1,t6,1
  4825cc:	92040000 	lbu	a0,0(s0)
  4825d0:	91280000 	lbu	t0,0(t1)
  4825d4:	25390001 	addiu	t9,t1,1
  4825d8:	93250000 	lbu	a1,0(t9)
  4825dc:	000d9a00 	sll	s3,t5,0x8
  4825e0:	00931025 	or	v0,a0,s3
  4825e4:	00086400 	sll	t4,t0,0x10
  4825e8:	004c3025 	or	a2,v0,t4
  4825ec:	00055e00 	sll	t3,a1,0x18
  4825f0:	00cb9825 	or	s3,a2,t3
  4825f4:	27380001 	addiu	t8,t9,1
  4825f8:	afb30018 	sw	s3,24(sp)
  4825fc:	27070001 	addiu	a3,t8,1
  482600:	90ef0000 	lbu	t7,0(a3)
  482604:	24e30001 	addiu	v1,a3,1
  482608:	930a0000 	lbu	t2,0(t8)
  48260c:	906e0000 	lbu	t6,0(v1)
  482610:	24700001 	addiu	s0,v1,1
  482614:	92080000 	lbu	t0,0(s0)
  482618:	000f9200 	sll	s2,t7,0x8
  48261c:	01526825 	or	t5,t2,s2
  482620:	000e4c00 	sll	t1,t6,0x10
  482624:	01a96025 	or	t4,t5,t1
  482628:	00082600 	sll	a0,t0,0x18
  48262c:	01849025 	or	s2,t4,a0
  482630:	02e02821 	move	a1,s7
  482634:	27a40018 	addiu	a0,sp,24
  482638:	00003021 	move	a2,zero
  48263c:	afb2001c 	sw	s2,28(sp)
  482640:	8f998548 	lw	t9,-31416(gp)
  482644:	00000000 	nop
  482648:	0320f809 	jalr	t9
  48264c:	00000000 	nop
  482650:	8fbc0010 	lw	gp,16(sp)
  482654:	8fa50018 	lw	a1,24(sp)
  482658:	26260001 	addiu	a2,s1,1
  48265c:	00b4c826 	xor	t9,a1,s4
  482660:	24d40001 	addiu	s4,a2,1
  482664:	268f0001 	addiu	t7,s4,1
  482668:	8fb8001c 	lw	t8,28(sp)
  48266c:	25ea0001 	addiu	t2,t7,1
  482670:	254e0001 	addiu	t6,t2,1
  482674:	03156826 	xor	t5,t8,s5
  482678:	25c80001 	addiu	t0,t6,1
  48267c:	250c0001 	addiu	t4,t0,1
  482680:	00195a02 	srl	t3,t9,0x8
  482684:	00191402 	srl	v0,t9,0x10
  482688:	00193e02 	srl	a3,t9,0x18
  48268c:	000d1a02 	srl	v1,t5,0x8
  482690:	000d4c02 	srl	t1,t5,0x10
  482694:	000d2602 	srl	a0,t5,0x18
  482698:	26d6fff8 	addiu	s6,s6,-8
  48269c:	a2390000 	sb	t9,0(s1)
  4826a0:	0240a821 	move	s5,s2
  4826a4:	a0cb0000 	sb	t3,0(a2)
  4826a8:	26100001 	addiu	s0,s0,1
  4826ac:	a2820000 	sb	v0,0(s4)
  4826b0:	25910001 	addiu	s1,t4,1
  4826b4:	a1e70000 	sb	a3,0(t7)
  4826b8:	0260a021 	move	s4,s3
  4826bc:	a14d0000 	sb	t5,0(t2)
  4826c0:	a1c30000 	sb	v1,0(t6)
  4826c4:	a1090000 	sb	t1,0(t0)
  4826c8:	06c1ffbd 	bgez	s6,4825c0 <des_ncbc_encrypt+0x430>
  4826cc:	a1840000 	sb	a0,0(t4)
  4826d0:	240afff8 	li	t2,-8
  4826d4:	12ca004e 	beq	s6,t2,482810 <des_ncbc_encrypt+0x680>
  4826d8:	26060001 	addiu	a2,s0,1
  4826dc:	90d90000 	lbu	t9,0(a2)
  4826e0:	24c30001 	addiu	v1,a2,1
  4826e4:	92180000 	lbu	t8,0(s0)
  4826e8:	90670000 	lbu	a3,0(v1)
  4826ec:	246d0001 	addiu	t5,v1,1
  4826f0:	91ae0000 	lbu	t6,0(t5)
  4826f4:	00199a00 	sll	s3,t9,0x8
  4826f8:	03135025 	or	t2,t8,s3
  4826fc:	00077c00 	sll	t7,a3,0x10
  482700:	014f4825 	or	t1,t2,t7
  482704:	000e2600 	sll	a0,t6,0x18
  482708:	01249825 	or	s3,t1,a0
  48270c:	25a80001 	addiu	t0,t5,1
  482710:	afb30018 	sw	s3,24(sp)
  482714:	250c0001 	addiu	t4,t0,1
  482718:	91850000 	lbu	a1,0(t4)
  48271c:	25820001 	addiu	v0,t4,1
  482720:	90460000 	lbu	a2,0(v0)
  482724:	910b0000 	lbu	t3,0(t0)
  482728:	90470001 	lbu	a3,1(v0)
  48272c:	00059200 	sll	s2,a1,0x8
  482730:	0172c025 	or	t8,t3,s2
  482734:	0006cc00 	sll	t9,a2,0x10
  482738:	03197825 	or	t7,t8,t9
  48273c:	00071e00 	sll	v1,a3,0x18
  482740:	01e39025 	or	s2,t7,v1
  482744:	02e02821 	move	a1,s7
  482748:	00003021 	move	a2,zero
  48274c:	27a40018 	addiu	a0,sp,24
  482750:	afb2001c 	sw	s2,28(sp)
  482754:	8f998548 	lw	t9,-31416(gp)
  482758:	00000000 	nop
  48275c:	0320f809 	jalr	t9
  482760:	00000000 	nop
  482764:	8fbc0010 	lw	gp,16(sp)
  482768:	0236b821 	addu	s7,s1,s6
  48276c:	26c60007 	addiu	a2,s6,7
  482770:	8fb10018 	lw	s1,24(sp)
  482774:	8fb6001c 	lw	s6,28(sp)
  482778:	2cd00008 	sltiu	s0,a2,8
  48277c:	02345026 	xor	t2,s1,s4
  482780:	02d54826 	xor	t1,s6,s5
  482784:	12000020 	beqz	s0,482808 <des_ncbc_encrypt+0x678>
  482788:	26f10008 	addiu	s1,s7,8
  48278c:	0006a080 	sll	s4,a2,0x2
  482790:	8f95802c 	lw	s5,-32724(gp)
  482794:	00000000 	nop
  482798:	26b56cd0 	addiu	s5,s5,27856
  48279c:	02b4a821 	addu	s5,s5,s4
  4827a0:	8eb50000 	lw	s5,0(s5)
  4827a4:	00000000 	nop
  4827a8:	02bca821 	addu	s5,s5,gp
  4827ac:	02a00008 	jr	s5
  4827b0:	00000000 	nop
  4827b4:	2631ffff 	addiu	s1,s1,-1
  4827b8:	00098602 	srl	s0,t1,0x18
  4827bc:	a2300000 	sb	s0,0(s1)
  4827c0:	2631ffff 	addiu	s1,s1,-1
  4827c4:	0009bc02 	srl	s7,t1,0x10
  4827c8:	a2370000 	sb	s7,0(s1)
  4827cc:	2631ffff 	addiu	s1,s1,-1
  4827d0:	0009b202 	srl	s6,t1,0x8
  4827d4:	a2360000 	sb	s6,0(s1)
  4827d8:	2631ffff 	addiu	s1,s1,-1
  4827dc:	a2290000 	sb	t1,0(s1)
  4827e0:	2631ffff 	addiu	s1,s1,-1
  4827e4:	000a5e02 	srl	t3,t2,0x18
  4827e8:	a22b0000 	sb	t3,0(s1)
  4827ec:	2631ffff 	addiu	s1,s1,-1
  4827f0:	000a2c02 	srl	a1,t2,0x10
  4827f4:	a2250000 	sb	a1,0(s1)
  4827f8:	2631ffff 	addiu	s1,s1,-1
  4827fc:	000a6202 	srl	t4,t2,0x8
  482800:	a22c0000 	sb	t4,0(s1)
  482804:	a22affff 	sb	t2,-1(s1)
  482808:	0260a021 	move	s4,s3
  48280c:	0240a821 	move	s5,s2
  482810:	03c09821 	move	s3,s8
  482814:	26670001 	addiu	a3,s3,1
  482818:	24ea0001 	addiu	t2,a3,1
  48281c:	25440001 	addiu	a0,t2,1
  482820:	24820001 	addiu	v0,a0,1
  482824:	244d0001 	addiu	t5,v0,1
  482828:	25be0001 	addiu	s8,t5,1
  48282c:	0014c202 	srl	t8,s4,0x8
  482830:	00147c02 	srl	t7,s4,0x10
  482834:	00147602 	srl	t6,s4,0x18
  482838:	00154a02 	srl	t1,s5,0x8
  48283c:	00159602 	srl	s2,s5,0x18
  482840:	00158c02 	srl	s1,s5,0x10
  482844:	a2740000 	sb	s4,0(s3)
  482848:	a0f80000 	sb	t8,0(a3)
  48284c:	a14f0000 	sb	t7,0(t2)
  482850:	a08e0000 	sb	t6,0(a0)
  482854:	a0550000 	sb	s5,0(v0)
  482858:	a1a90000 	sb	t1,0(t5)
  48285c:	a3d20001 	sb	s2,1(s8)
  482860:	1000ff28 	b	482504 <des_ncbc_encrypt+0x374>
  482864:	a3d10000 	sb	s1,0(s8)

00482868 <des_ede3_cbc_encrypt>:
  482868:	3c1c0fb9 	lui	gp,0xfb9
  48286c:	279ca108 	addiu	gp,gp,-24312
  482870:	0399e021 	addu	gp,gp,t9
  482874:	27bdff98 	addiu	sp,sp,-104
  482878:	afbc0010 	sw	gp,16(sp)
  48287c:	8fa30084 	lw	v1,132(sp)
  482880:	afb5004c 	sw	s5,76(sp)
  482884:	afb30044 	sw	s3,68(sp)
  482888:	afb00038 	sw	s0,56(sp)
  48288c:	afbf0060 	sw	ra,96(sp)
  482890:	00808021 	move	s0,a0
  482894:	afbe005c 	sw	s8,92(sp)
  482898:	afbc0058 	sw	gp,88(sp)
  48289c:	afb70054 	sw	s7,84(sp)
  4828a0:	afb60050 	sw	s6,80(sp)
  4828a4:	afb40048 	sw	s4,72(sp)
  4828a8:	afb20040 	sw	s2,64(sp)
  4828ac:	afb1003c 	sw	s1,60(sp)
  4828b0:	afa70074 	sw	a3,116(sp)
  4828b4:	00c09821 	move	s3,a2
  4828b8:	8fa40080 	lw	a0,128(sp)
  4828bc:	1060018f 	beqz	v1,482efc <des_ede3_cbc_encrypt+0x694>
  4828c0:	00a0a821 	move	s5,a1
  4828c4:	24850001 	addiu	a1,a0,1
  4828c8:	24a30001 	addiu	v1,a1,1
  4828cc:	24620001 	addiu	v0,v1,1
  4828d0:	245e0001 	addiu	s8,v0,1
  4828d4:	27d90001 	addiu	t9,s8,1
  4828d8:	90b80000 	lbu	t8,0(a1)
  4828dc:	27360001 	addiu	s6,t9,1
  4828e0:	93370000 	lbu	s7,0(t9)
  4828e4:	90720000 	lbu	s2,0(v1)
  4828e8:	90940000 	lbu	s4,0(a0)
  4828ec:	93d10000 	lbu	s1,0(s8)
  4828f0:	92cf0000 	lbu	t7,0(s6)
  4828f4:	904d0000 	lbu	t5,0(v0)
  4828f8:	00185200 	sll	t2,t8,0x8
  4828fc:	00174a00 	sll	t1,s7,0x8
  482900:	92c80001 	lbu	t0,1(s6)
  482904:	028a3825 	or	a3,s4,t2
  482908:	02295825 	or	t3,s1,t1
  48290c:	00127400 	sll	t6,s2,0x10
  482910:	000f6400 	sll	t4,t7,0x10
  482914:	00ee2825 	or	a1,a3,t6
  482918:	000d3600 	sll	a2,t5,0x18
  48291c:	016c1025 	or	v0,t3,t4
  482920:	00081e00 	sll	v1,t0,0x18
  482924:	2673fff8 	addiu	s3,s3,-8
  482928:	00a65025 	or	t2,a1,a2
  48292c:	0660009f 	bltz	s3,482bac <des_ede3_cbc_encrypt+0x344>
  482930:	00434825 	or	t1,v0,v1
  482934:	3c0c0f0f 	lui	t4,0xf0f
  482938:	3c083333 	lui	t0,0x3333
  48293c:	3c0600ff 	lui	a2,0xff
  482940:	3c045555 	lui	a0,0x5555
  482944:	358b0f0f 	ori	t3,t4,0xf0f
  482948:	27b10018 	addiu	s1,sp,24
  48294c:	afab0020 	sw	t3,32(sp)
  482950:	351e3333 	ori	s8,t0,0x3333
  482954:	34d400ff 	ori	s4,a2,0xff
  482958:	34925555 	ori	s2,a0,0x5555
  48295c:	260b0001 	addiu	t3,s0,1
  482960:	25780001 	addiu	t8,t3,1
  482964:	27190001 	addiu	t9,t8,1
  482968:	27270001 	addiu	a3,t9,1
  48296c:	24e80001 	addiu	t0,a3,1
  482970:	91050000 	lbu	a1,0(t0)
  482974:	250f0001 	addiu	t7,t0,1
  482978:	92060000 	lbu	a2,0(s0)
  48297c:	916e0000 	lbu	t6,0(t3)
  482980:	90e30000 	lbu	v1,0(a3)
  482984:	91ed0000 	lbu	t5,0(t7)
  482988:	25f00001 	addiu	s0,t7,1
  48298c:	930c0000 	lbu	t4,0(t8)
  482990:	920b0000 	lbu	t3,0(s0)
  482994:	0005b200 	sll	s6,a1,0x8
  482998:	93380000 	lbu	t8,0(t9)
  48299c:	00762025 	or	a0,v1,s6
  4829a0:	000eba00 	sll	s7,t6,0x8
  4829a4:	000d1400 	sll	v0,t5,0x10
  4829a8:	00d73825 	or	a3,a2,s7
  4829ac:	00827825 	or	t7,a0,v0
  4829b0:	000b4600 	sll	t0,t3,0x18
  4829b4:	000ccc00 	sll	t9,t4,0x10
  4829b8:	00f96025 	or	t4,a3,t9
  4829bc:	01e87025 	or	t6,t7,t0
  4829c0:	00186e00 	sll	t5,t8,0x18
  4829c4:	018d1025 	or	v0,t4,t5
  4829c8:	01c92826 	xor	a1,t6,t1
  4829cc:	004a2026 	xor	a0,v0,t2
  4829d0:	8fab0020 	lw	t3,32(sp)
  4829d4:	00051902 	srl	v1,a1,0x4
  4829d8:	00643026 	xor	a2,v1,a0
  4829dc:	00cb4824 	and	t1,a2,t3
  4829e0:	00897826 	xor	t7,a0,t1
  4829e4:	0009c900 	sll	t9,t1,0x4
  4829e8:	00b9b826 	xor	s7,a1,t9
  4829ec:	000fc402 	srl	t8,t7,0x10
  4829f0:	0317b026 	xor	s6,t8,s7
  4829f4:	32c8ffff 	andi	t0,s6,0xffff
  4829f8:	02e83026 	xor	a2,s7,t0
  4829fc:	00083c00 	sll	a3,t0,0x10
  482a00:	01e76026 	xor	t4,t7,a3
  482a04:	00067082 	srl	t6,a2,0x2
  482a08:	01cc5026 	xor	t2,t6,t4
  482a0c:	015e6824 	and	t5,t2,s8
  482a10:	018dc026 	xor	t8,t4,t5
  482a14:	000d5880 	sll	t3,t5,0x2
  482a18:	00cb4826 	xor	t1,a2,t3
  482a1c:	00182202 	srl	a0,t8,0x8
  482a20:	00891826 	xor	v1,a0,t1
  482a24:	00742824 	and	a1,v1,s4
  482a28:	01257026 	xor	t6,t1,a1
  482a2c:	0005ca00 	sll	t9,a1,0x8
  482a30:	03196826 	xor	t5,t8,t9
  482a34:	000eb842 	srl	s7,t6,0x1
  482a38:	02edb026 	xor	s6,s7,t5
  482a3c:	02d25024 	and	t2,s6,s2
  482a40:	000a7840 	sll	t7,t2,0x1
  482a44:	8fa50074 	lw	a1,116(sp)
  482a48:	01cf5826 	xor	t3,t6,t7
  482a4c:	01aa6026 	xor	t4,t5,t2
  482a50:	24060001 	li	a2,1
  482a54:	02202021 	move	a0,s1
  482a58:	afac0018 	sw	t4,24(sp)
  482a5c:	afab001c 	sw	t3,28(sp)
  482a60:	8f998c54 	lw	t9,-29612(gp)
  482a64:	00000000 	nop
  482a68:	0320f809 	jalr	t9
  482a6c:	00000000 	nop
  482a70:	8fbc0010 	lw	gp,16(sp)
  482a74:	8fa50078 	lw	a1,120(sp)
  482a78:	02202021 	move	a0,s1
  482a7c:	00003021 	move	a2,zero
  482a80:	8f998c54 	lw	t9,-29612(gp)
  482a84:	00000000 	nop
  482a88:	0320f809 	jalr	t9
  482a8c:	00000000 	nop
  482a90:	8fbc0010 	lw	gp,16(sp)
  482a94:	8fa5007c 	lw	a1,124(sp)
  482a98:	02202021 	move	a0,s1
  482a9c:	24060001 	li	a2,1
  482aa0:	8f998c54 	lw	t9,-29612(gp)
  482aa4:	00000000 	nop
  482aa8:	0320f809 	jalr	t9
  482aac:	00000000 	nop
  482ab0:	8fbc0010 	lw	gp,16(sp)
  482ab4:	8fa5001c 	lw	a1,28(sp)
  482ab8:	8fa30018 	lw	v1,24(sp)
  482abc:	00053042 	srl	a2,a1,0x1
  482ac0:	00c32026 	xor	a0,a2,v1
  482ac4:	00923824 	and	a3,a0,s2
  482ac8:	00677826 	xor	t7,v1,a3
  482acc:	00074040 	sll	t0,a3,0x1
  482ad0:	00a8b826 	xor	s7,a1,t0
  482ad4:	000f4a02 	srl	t1,t7,0x8
  482ad8:	0137c826 	xor	t9,t1,s7
  482adc:	0334c024 	and	t8,t9,s4
  482ae0:	02f83026 	xor	a2,s7,t8
  482ae4:	0018b200 	sll	s6,t8,0x8
  482ae8:	01f66026 	xor	t4,t7,s6
  482aec:	00067082 	srl	t6,a2,0x2
  482af0:	01cc5026 	xor	t2,t6,t4
  482af4:	015e6824 	and	t5,t2,s8
  482af8:	018dc026 	xor	t8,t4,t5
  482afc:	000d5880 	sll	t3,t5,0x2
  482b00:	00cb4826 	xor	t1,a2,t3
  482b04:	00182402 	srl	a0,t8,0x10
  482b08:	00892826 	xor	a1,a0,t1
  482b0c:	30a3ffff 	andi	v1,a1,0xffff
  482b10:	01236026 	xor	t4,t1,v1
  482b14:	0003cc00 	sll	t9,v1,0x10
  482b18:	8fb60020 	lw	s6,32(sp)
  482b1c:	03195026 	xor	t2,t8,t9
  482b20:	000cb902 	srl	s7,t4,0x4
  482b24:	02ea7826 	xor	t7,s7,t2
  482b28:	26a40001 	addiu	a0,s5,1
  482b2c:	01f67024 	and	t6,t7,s6
  482b30:	24830001 	addiu	v1,a0,1
  482b34:	014e5826 	xor	t3,t2,t6
  482b38:	24790001 	addiu	t9,v1,1
  482b3c:	01605021 	move	t2,t3
  482b40:	000e6900 	sll	t5,t6,0x4
  482b44:	27380001 	addiu	t8,t9,1
  482b48:	018d1026 	xor	v0,t4,t5
  482b4c:	000a4e02 	srl	t1,t2,0x18
  482b50:	27160001 	addiu	s6,t8,1
  482b54:	000a3202 	srl	a2,t2,0x8
  482b58:	000a2c02 	srl	a1,t2,0x10
  482b5c:	afab0018 	sw	t3,24(sp)
  482b60:	afa2001c 	sw	v0,28(sp)
  482b64:	26ce0001 	addiu	t6,s6,1
  482b68:	a2aa0000 	sb	t2,0(s5)
  482b6c:	a0860000 	sb	a2,0(a0)
  482b70:	a0650000 	sb	a1,0(v1)
  482b74:	a3290000 	sb	t1,0(t9)
  482b78:	00404821 	move	t1,v0
  482b7c:	25cd0001 	addiu	t5,t6,1
  482b80:	0009ba02 	srl	s7,t1,0x8
  482b84:	00097c02 	srl	t7,t1,0x10
  482b88:	00093e02 	srl	a3,t1,0x18
  482b8c:	2673fff8 	addiu	s3,s3,-8
  482b90:	a3090000 	sb	t1,0(t8)
  482b94:	26100001 	addiu	s0,s0,1
  482b98:	a2d70000 	sb	s7,0(s6)
  482b9c:	25b50001 	addiu	s5,t5,1
  482ba0:	a1cf0000 	sb	t7,0(t6)
  482ba4:	0661ff6d 	bgez	s3,48295c <des_ede3_cbc_encrypt+0xf4>
  482ba8:	a1a70000 	sb	a3,0(t5)
  482bac:	2411fff8 	li	s1,-8
  482bb0:	127100cb 	beq	s3,s1,482ee0 <des_ede3_cbc_encrypt+0x678>
  482bb4:	26640007 	addiu	a0,s3,7
  482bb8:	02139021 	addu	s2,s0,s3
  482bbc:	2c930008 	sltiu	s3,a0,8
  482bc0:	26500008 	addiu	s0,s2,8
  482bc4:	0000b021 	move	s6,zero
  482bc8:	1260002e 	beqz	s3,482c84 <des_ede3_cbc_encrypt+0x41c>
  482bcc:	0000b821 	move	s7,zero
  482bd0:	0004f080 	sll	s8,a0,0x2
  482bd4:	8f94802c 	lw	s4,-32724(gp)
  482bd8:	00000000 	nop
  482bdc:	26946cf0 	addiu	s4,s4,27888
  482be0:	029ea021 	addu	s4,s4,s8
  482be4:	8e940000 	lw	s4,0(s4)
  482be8:	00000000 	nop
  482bec:	029ca021 	addu	s4,s4,gp
  482bf0:	02800008 	jr	s4
  482bf4:	00000000 	nop
  482bf8:	2610ffff 	addiu	s0,s0,-1
  482bfc:	92040000 	lbu	a0,0(s0)
  482c00:	00000000 	nop
  482c04:	0004b600 	sll	s6,a0,0x18
  482c08:	2610ffff 	addiu	s0,s0,-1
  482c0c:	92060000 	lbu	a2,0(s0)
  482c10:	00000000 	nop
  482c14:	00066400 	sll	t4,a2,0x10
  482c18:	02ccb025 	or	s6,s6,t4
  482c1c:	2610ffff 	addiu	s0,s0,-1
  482c20:	920d0000 	lbu	t5,0(s0)
  482c24:	00000000 	nop
  482c28:	000dba00 	sll	s7,t5,0x8
  482c2c:	02d7b025 	or	s6,s6,s7
  482c30:	2610ffff 	addiu	s0,s0,-1
  482c34:	92030000 	lbu	v1,0(s0)
  482c38:	00000000 	nop
  482c3c:	02c3b025 	or	s6,s6,v1
  482c40:	2610ffff 	addiu	s0,s0,-1
  482c44:	920e0000 	lbu	t6,0(s0)
  482c48:	00000000 	nop
  482c4c:	000ebe00 	sll	s7,t6,0x18
  482c50:	2610ffff 	addiu	s0,s0,-1
  482c54:	920f0000 	lbu	t7,0(s0)
  482c58:	00000000 	nop
  482c5c:	000f2c00 	sll	a1,t7,0x10
  482c60:	02e5b825 	or	s7,s7,a1
  482c64:	2610ffff 	addiu	s0,s0,-1
  482c68:	92070000 	lbu	a3,0(s0)
  482c6c:	00000000 	nop
  482c70:	00074200 	sll	t0,a3,0x8
  482c74:	02e8b825 	or	s7,s7,t0
  482c78:	9219ffff 	lbu	t9,-1(s0)
  482c7c:	00000000 	nop
  482c80:	02f9b825 	or	s7,s7,t9
  482c84:	02c93026 	xor	a2,s6,t1
  482c88:	02ea7026 	xor	t6,s7,t2
  482c8c:	0006f102 	srl	s8,a2,0x4
  482c90:	3c050f0f 	lui	a1,0xf0f
  482c94:	34b30f0f 	ori	s3,a1,0xf0f
  482c98:	03ce1826 	xor	v1,s8,t6
  482c9c:	00736824 	and	t5,v1,s3
  482ca0:	01cda026 	xor	s4,t6,t5
  482ca4:	000d8900 	sll	s1,t5,0x4
  482ca8:	00d12026 	xor	a0,a2,s1
  482cac:	00146402 	srl	t4,s4,0x10
  482cb0:	01848026 	xor	s0,t4,a0
  482cb4:	3208ffff 	andi	t0,s0,0xffff
  482cb8:	0088b826 	xor	s7,a0,t0
  482cbc:	00083c00 	sll	a3,t0,0x10
  482cc0:	0287c026 	xor	t8,s4,a3
  482cc4:	0017b082 	srl	s6,s7,0x2
  482cc8:	3c0a3333 	lui	t2,0x3333
  482ccc:	02d85826 	xor	t3,s6,t8
  482cd0:	35543333 	ori	s4,t2,0x3333
  482cd4:	01744824 	and	t1,t3,s4
  482cd8:	03093026 	xor	a2,t8,t1
  482cdc:	0009c880 	sll	t9,t1,0x2
  482ce0:	02f97026 	xor	t6,s7,t9
  482ce4:	3c0f00ff 	lui	t7,0xff
  482ce8:	00069202 	srl	s2,a2,0x8
  482cec:	024e2826 	xor	a1,s2,t6
  482cf0:	35f700ff 	ori	s7,t7,0xff
  482cf4:	00b71824 	and	v1,a1,s7
  482cf8:	01c35026 	xor	t2,t6,v1
  482cfc:	00036a00 	sll	t5,v1,0x8
  482d00:	00cd4826 	xor	t1,a2,t5
  482d04:	000a8842 	srl	s1,t2,0x1
  482d08:	3c0c5555 	lui	t4,0x5555
  482d0c:	02298026 	xor	s0,s1,t1
  482d10:	35915555 	ori	s1,t4,0x5555
  482d14:	02115824 	and	t3,s0,s1
  482d18:	000b2040 	sll	a0,t3,0x1
  482d1c:	27b00018 	addiu	s0,sp,24
  482d20:	8fa50074 	lw	a1,116(sp)
  482d24:	0144c826 	xor	t9,t2,a0
  482d28:	012bc026 	xor	t8,t1,t3
  482d2c:	02002021 	move	a0,s0
  482d30:	24060001 	li	a2,1
  482d34:	afb80018 	sw	t8,24(sp)
  482d38:	afb9001c 	sw	t9,28(sp)
  482d3c:	8f998c54 	lw	t9,-29612(gp)
  482d40:	00000000 	nop
  482d44:	0320f809 	jalr	t9
  482d48:	00000000 	nop
  482d4c:	8fbc0010 	lw	gp,16(sp)
  482d50:	8fa50078 	lw	a1,120(sp)
  482d54:	02002021 	move	a0,s0
  482d58:	00003021 	move	a2,zero
  482d5c:	8f998c54 	lw	t9,-29612(gp)
  482d60:	00000000 	nop
  482d64:	0320f809 	jalr	t9
  482d68:	00000000 	nop
  482d6c:	8fbc0010 	lw	gp,16(sp)
  482d70:	8fa5007c 	lw	a1,124(sp)
  482d74:	02002021 	move	a0,s0
  482d78:	24060001 	li	a2,1
  482d7c:	8f998c54 	lw	t9,-29612(gp)
  482d80:	00000000 	nop
  482d84:	0320f809 	jalr	t9
  482d88:	00000000 	nop
  482d8c:	8fbc0010 	lw	gp,16(sp)
  482d90:	8fae001c 	lw	t6,28(sp)
  482d94:	8fa30018 	lw	v1,24(sp)
  482d98:	000e7842 	srl	t7,t6,0x1
  482d9c:	01e32826 	xor	a1,t7,v1
  482da0:	00b13824 	and	a3,a1,s1
  482da4:	00675026 	xor	t2,v1,a3
  482da8:	00074040 	sll	t0,a3,0x1
  482dac:	01c82026 	xor	a0,t6,t0
  482db0:	000a6a02 	srl	t5,t2,0x8
  482db4:	01a43026 	xor	a2,t5,a0
  482db8:	00d76024 	and	t4,a2,s7
  482dbc:	008cc826 	xor	t9,a0,t4
  482dc0:	000c9200 	sll	s2,t4,0x8
  482dc4:	0152c026 	xor	t8,t2,s2
  482dc8:	00195882 	srl	t3,t9,0x2
  482dcc:	01784826 	xor	t1,t3,t8
  482dd0:	01348824 	and	s1,t1,s4
  482dd4:	0311b826 	xor	s7,t8,s1
  482dd8:	00118080 	sll	s0,s1,0x2
  482ddc:	03307026 	xor	t6,t9,s0
  482de0:	00177c02 	srl	t7,s7,0x10
  482de4:	01ee2826 	xor	a1,t7,t6
  482de8:	30a3ffff 	andi	v1,a1,0xffff
  482dec:	01c39026 	xor	s2,t6,v1
  482df0:	00036c00 	sll	t5,v1,0x10
  482df4:	02ed5026 	xor	t2,s7,t5
  482df8:	00123102 	srl	a2,s2,0x4
  482dfc:	00ca6026 	xor	t4,a2,t2
  482e00:	01932024 	and	a0,t4,s3
  482e04:	01445826 	xor	t3,t2,a0
  482e08:	26b30001 	addiu	s3,s5,1
  482e0c:	01605021 	move	t2,t3
  482e10:	26690001 	addiu	t1,s3,1
  482e14:	0004a100 	sll	s4,a0,0x4
  482e18:	afab0018 	sw	t3,24(sp)
  482e1c:	25380001 	addiu	t8,t1,1
  482e20:	02548826 	xor	s1,s2,s4
  482e24:	000a5a02 	srl	t3,t2,0x8
  482e28:	000a3c02 	srl	a3,t2,0x10
  482e2c:	afb1001c 	sw	s1,28(sp)
  482e30:	27160001 	addiu	s6,t8,1
  482e34:	a2aa0000 	sb	t2,0(s5)
  482e38:	a26b0000 	sb	t3,0(s3)
  482e3c:	a1270000 	sb	a3,0(t1)
  482e40:	02204821 	move	t1,s1
  482e44:	26c20001 	addiu	v0,s6,1
  482e48:	000a3602 	srl	a2,t2,0x18
  482e4c:	00092a02 	srl	a1,t1,0x8
  482e50:	a3060000 	sb	a2,0(t8)
  482e54:	24500001 	addiu	s0,v0,1
  482e58:	a2c90000 	sb	t1,0(s6)
  482e5c:	00091c02 	srl	v1,t1,0x10
  482e60:	a0450000 	sb	a1,0(v0)
  482e64:	00091602 	srl	v0,t1,0x18
  482e68:	a2020001 	sb	v0,1(s0)
  482e6c:	a2030000 	sb	v1,0(s0)
  482e70:	8fb80080 	lw	t8,128(sp)
  482e74:	00000000 	nop
  482e78:	27190001 	addiu	t9,t8,1
  482e7c:	27370001 	addiu	s7,t9,1
  482e80:	26f20001 	addiu	s2,s7,1
  482e84:	264f0001 	addiu	t7,s2,1
  482e88:	25f30001 	addiu	s3,t7,1
  482e8c:	26750001 	addiu	s5,s3,1
  482e90:	a30a0000 	sb	t2,0(t8)
  482e94:	a32b0000 	sb	t3,0(t9)
  482e98:	a2e70000 	sb	a3,0(s7)
  482e9c:	a2460000 	sb	a2,0(s2)
  482ea0:	a1e90000 	sb	t1,0(t7)
  482ea4:	a2650000 	sb	a1,0(s3)
  482ea8:	a2a20001 	sb	v0,1(s5)
  482eac:	a2a30000 	sb	v1,0(s5)
  482eb0:	8fbf0060 	lw	ra,96(sp)
  482eb4:	8fbe005c 	lw	s8,92(sp)
  482eb8:	8fb70054 	lw	s7,84(sp)
  482ebc:	8fb60050 	lw	s6,80(sp)
  482ec0:	8fb5004c 	lw	s5,76(sp)
  482ec4:	8fb40048 	lw	s4,72(sp)
  482ec8:	8fb30044 	lw	s3,68(sp)
  482ecc:	8fb20040 	lw	s2,64(sp)
  482ed0:	8fb1003c 	lw	s1,60(sp)
  482ed4:	8fb00038 	lw	s0,56(sp)
  482ed8:	03e00008 	jr	ra
  482edc:	27bd0068 	addiu	sp,sp,104
  482ee0:	000a5a02 	srl	t3,t2,0x8
  482ee4:	000a3c02 	srl	a3,t2,0x10
  482ee8:	000a3602 	srl	a2,t2,0x18
  482eec:	00092a02 	srl	a1,t1,0x8
  482ef0:	00091c02 	srl	v1,t1,0x10
  482ef4:	1000ffde 	b	482e70 <des_ede3_cbc_encrypt+0x608>
  482ef8:	00091602 	srl	v0,t1,0x18
  482efc:	248b0001 	addiu	t3,a0,1
  482f00:	25690001 	addiu	t1,t3,1
  482f04:	25220001 	addiu	v0,t1,1
  482f08:	24580001 	addiu	t8,v0,1
  482f0c:	27050001 	addiu	a1,t8,1
  482f10:	91790000 	lbu	t9,0(t3)
  482f14:	24b20001 	addiu	s2,a1,1
  482f18:	90b70000 	lbu	s7,0(a1)
  482f1c:	912f0000 	lbu	t7,0(t1)
  482f20:	90860000 	lbu	a2,0(a0)
  482f24:	93030000 	lbu	v1,0(t8)
  482f28:	924e0000 	lbu	t6,0(s2)
  482f2c:	90510000 	lbu	s1,0(v0)
  482f30:	0019f200 	sll	s8,t9,0x8
  482f34:	0017a200 	sll	s4,s7,0x8
  482f38:	92560001 	lbu	s6,1(s2)
  482f3c:	00de3825 	or	a3,a2,s8
  482f40:	00744025 	or	t0,v1,s4
  482f44:	000f6c00 	sll	t5,t7,0x10
  482f48:	000e6400 	sll	t4,t6,0x10
  482f4c:	00ed5825 	or	t3,a3,t5
  482f50:	00115600 	sll	t2,s1,0x18
  482f54:	010c1025 	or	v0,t0,t4
  482f58:	00164e00 	sll	t1,s6,0x18
  482f5c:	2673fff8 	addiu	s3,s3,-8
  482f60:	016af025 	or	s8,t3,t2
  482f64:	066000ab 	bltz	s3,483214 <des_ede3_cbc_encrypt+0x9ac>
  482f68:	0049a025 	or	s4,v0,t1
  482f6c:	3c0d0f0f 	lui	t5,0xf0f
  482f70:	3c0c3333 	lui	t4,0x3333
  482f74:	3c1600ff 	lui	s6,0xff
  482f78:	3c1100ff 	lui	s1,0xff
  482f7c:	3c030f0f 	lui	v1,0xf0f
  482f80:	3c0e3333 	lui	t6,0x3333
  482f84:	3c045555 	lui	a0,0x5555
  482f88:	35a70f0f 	ori	a3,t5,0xf0f
  482f8c:	35883333 	ori	t0,t4,0x3333
  482f90:	36ca00ff 	ori	t2,s6,0xff
  482f94:	afb1002c 	sw	s1,44(sp)
  482f98:	afa30024 	sw	v1,36(sp)
  482f9c:	afae0028 	sw	t6,40(sp)
  482fa0:	27b10018 	addiu	s1,sp,24
  482fa4:	afa70024 	sw	a3,36(sp)
  482fa8:	afa80028 	sw	t0,40(sp)
  482fac:	afaa002c 	sw	t2,44(sp)
  482fb0:	34925555 	ori	s2,a0,0x5555
  482fb4:	26070001 	addiu	a3,s0,1
  482fb8:	24ee0001 	addiu	t6,a3,1
  482fbc:	25d90001 	addiu	t9,t6,1
  482fc0:	272f0001 	addiu	t7,t9,1
  482fc4:	25ea0001 	addiu	t2,t7,1
  482fc8:	91430000 	lbu	v1,0(t2)
  482fcc:	25420001 	addiu	v0,t2,1
  482fd0:	92060000 	lbu	a2,0(s0)
  482fd4:	90ed0000 	lbu	t5,0(a3)
  482fd8:	91e40000 	lbu	a0,0(t7)
  482fdc:	904c0000 	lbu	t4,0(v0)
  482fe0:	24500001 	addiu	s0,v0,1
  482fe4:	91cb0000 	lbu	t3,0(t6)
  482fe8:	92080000 	lbu	t0,0(s0)
  482fec:	0003b200 	sll	s6,v1,0x8
  482ff0:	932e0000 	lbu	t6,0(t9)
  482ff4:	0096c025 	or	t8,a0,s6
  482ff8:	000dba00 	sll	s7,t5,0x8
  482ffc:	000c4c00 	sll	t1,t4,0x10
  483000:	00d77825 	or	t7,a2,s7
  483004:	03093825 	or	a3,t8,t1
  483008:	000bcc00 	sll	t9,t3,0x10
  48300c:	00082e00 	sll	a1,t0,0x18
  483010:	01f91025 	or	v0,t7,t9
  483014:	00e5b025 	or	s6,a3,a1
  483018:	000e5600 	sll	t2,t6,0x18
  48301c:	004ab825 	or	s7,v0,t2
  483020:	8fad0024 	lw	t5,36(sp)
  483024:	00161902 	srl	v1,s6,0x4
  483028:	00776026 	xor	t4,v1,s7
  48302c:	018d2024 	and	a0,t4,t5
  483030:	02e4c826 	xor	t9,s7,a0
  483034:	00045900 	sll	t3,a0,0x4
  483038:	02cb2826 	xor	a1,s6,t3
  48303c:	00194c02 	srl	t1,t9,0x10
  483040:	0125c026 	xor	t8,t1,a1
  483044:	3308ffff 	andi	t0,t8,0xffff
  483048:	00a82026 	xor	a0,a1,t0
  48304c:	00083c00 	sll	a3,t0,0x10
  483050:	03276826 	xor	t5,t9,a3
  483054:	8faf0028 	lw	t7,40(sp)
  483058:	00043082 	srl	a2,a0,0x2
  48305c:	00cd7026 	xor	t6,a2,t5
  483060:	01cf5024 	and	t2,t6,t7
  483064:	01aa3026 	xor	a2,t5,t2
  483068:	000a6080 	sll	t4,t2,0x2
  48306c:	008c2826 	xor	a1,a0,t4
  483070:	8fab002c 	lw	t3,44(sp)
  483074:	00061a02 	srl	v1,a2,0x8
  483078:	00654826 	xor	t1,v1,a1
  48307c:	012bc024 	and	t8,t1,t3
  483080:	00b86826 	xor	t5,a1,t8
  483084:	0018ca00 	sll	t9,t8,0x8
  483088:	00d92026 	xor	a0,a2,t9
  48308c:	000d7842 	srl	t7,t5,0x1
  483090:	01e47026 	xor	t6,t7,a0
  483094:	01d26024 	and	t4,t6,s2
  483098:	000c5040 	sll	t2,t4,0x1
  48309c:	8fa5007c 	lw	a1,124(sp)
  4830a0:	01aa5826 	xor	t3,t5,t2
  4830a4:	008c1826 	xor	v1,a0,t4
  4830a8:	00003021 	move	a2,zero
  4830ac:	02202021 	move	a0,s1
  4830b0:	afa30018 	sw	v1,24(sp)
  4830b4:	afab001c 	sw	t3,28(sp)
  4830b8:	8f998c54 	lw	t9,-29612(gp)
  4830bc:	00000000 	nop
  4830c0:	0320f809 	jalr	t9
  4830c4:	00000000 	nop
  4830c8:	8fbc0010 	lw	gp,16(sp)
  4830cc:	8fa50078 	lw	a1,120(sp)
  4830d0:	02202021 	move	a0,s1
  4830d4:	24060001 	li	a2,1
  4830d8:	8f998c54 	lw	t9,-29612(gp)
  4830dc:	00000000 	nop
  4830e0:	0320f809 	jalr	t9
  4830e4:	00000000 	nop
  4830e8:	8fbc0010 	lw	gp,16(sp)
  4830ec:	8fa50074 	lw	a1,116(sp)
  4830f0:	02202021 	move	a0,s1
  4830f4:	00003021 	move	a2,zero
  4830f8:	8f998c54 	lw	t9,-29612(gp)
  4830fc:	00000000 	nop
  483100:	0320f809 	jalr	t9
  483104:	00000000 	nop
  483108:	8fbc0010 	lw	gp,16(sp)
  48310c:	8fb9001c 	lw	t9,28(sp)
  483110:	8fa50018 	lw	a1,24(sp)
  483114:	00194842 	srl	t1,t9,0x1
  483118:	0125c026 	xor	t8,t1,a1
  48311c:	03123824 	and	a3,t8,s2
  483120:	00a72026 	xor	a0,a1,a3
  483124:	00074040 	sll	t0,a3,0x1
  483128:	8faf002c 	lw	t7,44(sp)
  48312c:	03286826 	xor	t5,t9,t0
  483130:	00043202 	srl	a2,a0,0x8
  483134:	00cd7026 	xor	t6,a2,t5
  483138:	01cf5024 	and	t2,t6,t7
  48313c:	01aa3026 	xor	a2,t5,t2
  483140:	000a6200 	sll	t4,t2,0x8
  483144:	8fab0028 	lw	t3,40(sp)
  483148:	008c2826 	xor	a1,a0,t4
  48314c:	00061882 	srl	v1,a2,0x2
  483150:	00654826 	xor	t1,v1,a1
  483154:	012bc024 	and	t8,t1,t3
  483158:	00b82026 	xor	a0,a1,t8
  48315c:	0018c880 	sll	t9,t8,0x2
  483160:	00d96826 	xor	t5,a2,t9
  483164:	00047c02 	srl	t7,a0,0x10
  483168:	01ed7026 	xor	t6,t7,t5
  48316c:	31caffff 	andi	t2,t6,0xffff
  483170:	01aa3026 	xor	a2,t5,t2
  483174:	000a6400 	sll	t4,t2,0x10
  483178:	8fab0024 	lw	t3,36(sp)
  48317c:	008c2826 	xor	a1,a0,t4
  483180:	26a70001 	addiu	a3,s5,1
  483184:	00061902 	srl	v1,a2,0x4
  483188:	00654826 	xor	t1,v1,a1
  48318c:	24ec0001 	addiu	t4,a3,1
  483190:	012bc024 	and	t8,t1,t3
  483194:	25890001 	addiu	t1,t4,1
  483198:	0018c900 	sll	t9,t8,0x4
  48319c:	25220001 	addiu	v0,t1,1
  4831a0:	00b87826 	xor	t7,a1,t8
  4831a4:	00d92026 	xor	a0,a2,t9
  4831a8:	24450001 	addiu	a1,v0,1
  4831ac:	01fe6826 	xor	t5,t7,s8
  4831b0:	24a60001 	addiu	a2,a1,1
  4831b4:	0094f026 	xor	s8,a0,s4
  4831b8:	afaf0018 	sw	t7,24(sp)
  4831bc:	001ea602 	srl	s4,s8,0x18
  4831c0:	001ec202 	srl	t8,s8,0x8
  4831c4:	001ecc02 	srl	t9,s8,0x10
  4831c8:	24cf0001 	addiu	t7,a2,1
  4831cc:	000d7202 	srl	t6,t5,0x8
  4831d0:	000d5402 	srl	t2,t5,0x10
  4831d4:	000d5e02 	srl	t3,t5,0x18
  4831d8:	2673fff8 	addiu	s3,s3,-8
  4831dc:	afa4001c 	sw	a0,28(sp)
  4831e0:	26100001 	addiu	s0,s0,1
  4831e4:	a2ad0000 	sb	t5,0(s5)
  4831e8:	a0ee0000 	sb	t6,0(a3)
  4831ec:	25f50001 	addiu	s5,t7,1
  4831f0:	a18a0000 	sb	t2,0(t4)
  4831f4:	a12b0000 	sb	t3,0(t1)
  4831f8:	a05e0000 	sb	s8,0(v0)
  4831fc:	a0b80000 	sb	t8,0(a1)
  483200:	02e0f021 	move	s8,s7
  483204:	a0d90000 	sb	t9,0(a2)
  483208:	a1f40000 	sb	s4,0(t7)
  48320c:	0661ff69 	bgez	s3,482fb4 <des_ede3_cbc_encrypt+0x74c>
  483210:	02c0a021 	move	s4,s6
  483214:	2412fff8 	li	s2,-8
  483218:	127200a9 	beq	s3,s2,4834c0 <des_ede3_cbc_encrypt+0xc58>
  48321c:	260d0001 	addiu	t5,s0,1
  483220:	25ac0001 	addiu	t4,t5,1
  483224:	25860001 	addiu	a2,t4,1
  483228:	24c20001 	addiu	v0,a2,1
  48322c:	24430001 	addiu	v1,v0,1
  483230:	90690000 	lbu	t1,0(v1)
  483234:	246b0001 	addiu	t3,v1,1
  483238:	91b20000 	lbu	s2,0(t5)
  48323c:	90580000 	lbu	t8,0(v0)
  483240:	916e0000 	lbu	t6,0(t3)
  483244:	92190000 	lbu	t9,0(s0)
  483248:	91880000 	lbu	t0,0(t4)
  48324c:	91670001 	lbu	a3,1(t3)
  483250:	0009b200 	sll	s6,t1,0x8
  483254:	90cc0000 	lbu	t4,0(a2)
  483258:	03162025 	or	a0,t8,s6
  48325c:	0012ba00 	sll	s7,s2,0x8
  483260:	000e7c00 	sll	t7,t6,0x10
  483264:	03376825 	or	t5,t9,s7
  483268:	008f5025 	or	t2,a0,t7
  48326c:	00082c00 	sll	a1,t0,0x10
  483270:	00078e00 	sll	s1,a3,0x18
  483274:	01a51025 	or	v0,t5,a1
  483278:	0151b025 	or	s6,t2,s1
  48327c:	000c3600 	sll	a2,t4,0x18
  483280:	0046b825 	or	s7,v0,a2
  483284:	00161902 	srl	v1,s6,0x4
  483288:	3c0b0f0f 	lui	t3,0xf0f
  48328c:	35690f0f 	ori	t1,t3,0xf0f
  483290:	00779026 	xor	s2,v1,s7
  483294:	0249c024 	and	t8,s2,t1
  483298:	02f88826 	xor	s1,s7,t8
  48329c:	00188100 	sll	s0,t8,0x4
  4832a0:	02d07826 	xor	t7,s6,s0
  4832a4:	00117402 	srl	t6,s1,0x10
  4832a8:	01cfc826 	xor	t9,t6,t7
  4832ac:	3328ffff 	andi	t0,t9,0xffff
  4832b0:	00083c00 	sll	a3,t0,0x10
  4832b4:	afa90030 	sw	t1,48(sp)
  4832b8:	01e84826 	xor	t1,t7,t0
  4832bc:	02273026 	xor	a2,s1,a3
  4832c0:	00095082 	srl	t2,t1,0x2
  4832c4:	3c0d3333 	lui	t5,0x3333
  4832c8:	01462826 	xor	a1,t2,a2
  4832cc:	35a43333 	ori	a0,t5,0x3333
  4832d0:	00a46024 	and	t4,a1,a0
  4832d4:	00cc7826 	xor	t7,a2,t4
  4832d8:	000c5880 	sll	t3,t4,0x2
  4832dc:	012b7026 	xor	t6,t1,t3
  4832e0:	000f9202 	srl	s2,t7,0x8
  4832e4:	3c1800ff 	lui	t8,0xff
  4832e8:	024e8026 	xor	s0,s2,t6
  4832ec:	371200ff 	ori	s2,t8,0xff
  4832f0:	02121824 	and	v1,s0,s2
  4832f4:	01c32826 	xor	a1,t6,v1
  4832f8:	0003ca00 	sll	t9,v1,0x8
  4832fc:	01f93026 	xor	a2,t7,t9
  483300:	3c0a5555 	lui	t2,0x5555
  483304:	00058842 	srl	s1,a1,0x1
  483308:	02266826 	xor	t5,s1,a2
  48330c:	35515555 	ori	s1,t2,0x5555
  483310:	01b16024 	and	t4,t5,s1
  483314:	afa40034 	sw	a0,52(sp)
  483318:	000c2040 	sll	a0,t4,0x1
  48331c:	27b00018 	addiu	s0,sp,24
  483320:	00a44826 	xor	t1,a1,a0
  483324:	8fa5007c 	lw	a1,124(sp)
  483328:	00cc5826 	xor	t3,a2,t4
  48332c:	02002021 	move	a0,s0
  483330:	00003021 	move	a2,zero
  483334:	afab0018 	sw	t3,24(sp)
  483338:	afa9001c 	sw	t1,28(sp)
  48333c:	8f998c54 	lw	t9,-29612(gp)
  483340:	00000000 	nop
  483344:	0320f809 	jalr	t9
  483348:	00000000 	nop
  48334c:	8fbc0010 	lw	gp,16(sp)
  483350:	8fa50078 	lw	a1,120(sp)
  483354:	02002021 	move	a0,s0
  483358:	24060001 	li	a2,1
  48335c:	8f998c54 	lw	t9,-29612(gp)
  483360:	00000000 	nop
  483364:	0320f809 	jalr	t9
  483368:	00000000 	nop
  48336c:	8fbc0010 	lw	gp,16(sp)
  483370:	8fa50074 	lw	a1,116(sp)
  483374:	02002021 	move	a0,s0
  483378:	00003021 	move	a2,zero
  48337c:	8f998c54 	lw	t9,-29612(gp)
  483380:	00000000 	nop
  483384:	0320f809 	jalr	t9
  483388:	00000000 	nop
  48338c:	8fbc0010 	lw	gp,16(sp)
  483390:	8fae001c 	lw	t6,28(sp)
  483394:	8fa30018 	lw	v1,24(sp)
  483398:	000ec042 	srl	t8,t6,0x1
  48339c:	03038026 	xor	s0,t8,v1
  4833a0:	02113824 	and	a3,s0,s1
  4833a4:	00672826 	xor	a1,v1,a3
  4833a8:	00074040 	sll	t0,a3,0x1
  4833ac:	01c86826 	xor	t5,t6,t0
  4833b0:	0005ca02 	srl	t9,a1,0x8
  4833b4:	032d7826 	xor	t7,t9,t5
  4833b8:	01f25024 	and	t2,t7,s2
  4833bc:	01aa8026 	xor	s0,t5,t2
  4833c0:	000a2200 	sll	a0,t2,0x8
  4833c4:	00a4c026 	xor	t8,a1,a0
  4833c8:	00106082 	srl	t4,s0,0x2
  4833cc:	8fa60034 	lw	a2,52(sp)
  4833d0:	01985826 	xor	t3,t4,t8
  4833d4:	01664824 	and	t1,t3,a2
  4833d8:	03095026 	xor	t2,t8,t1
  4833dc:	00098880 	sll	s1,t1,0x2
  4833e0:	0211c826 	xor	t9,s0,s1
  4833e4:	000a9402 	srl	s2,t2,0x10
  4833e8:	02597026 	xor	t6,s2,t9
  4833ec:	31c3ffff 	andi	v1,t6,0xffff
  4833f0:	03233026 	xor	a2,t9,v1
  4833f4:	00037c00 	sll	t7,v1,0x10
  4833f8:	014f4826 	xor	t1,t2,t7
  4833fc:	00066902 	srl	t5,a2,0x4
  483400:	8fa40030 	lw	a0,48(sp)
  483404:	01a92826 	xor	a1,t5,t1
  483408:	00a45824 	and	t3,a1,a0
  48340c:	000b6100 	sll	t4,t3,0x4
  483410:	26650007 	addiu	a1,s3,7
  483414:	00ccc026 	xor	t8,a2,t4
  483418:	02b38821 	addu	s1,s5,s3
  48341c:	2cb00008 	sltiu	s0,a1,8
  483420:	012ba826 	xor	s5,t1,t3
  483424:	02be5026 	xor	t2,s5,s8
  483428:	afb50018 	sw	s5,24(sp)
  48342c:	03144826 	xor	t1,t8,s4
  483430:	afb8001c 	sw	t8,28(sp)
  483434:	12000020 	beqz	s0,4834b8 <des_ede3_cbc_encrypt+0xc50>
  483438:	26350008 	addiu	s5,s1,8
  48343c:	0005a080 	sll	s4,a1,0x2
  483440:	8f93802c 	lw	s3,-32724(gp)
  483444:	00000000 	nop
  483448:	26736d10 	addiu	s3,s3,27920
  48344c:	02749821 	addu	s3,s3,s4
  483450:	8e730000 	lw	s3,0(s3)
  483454:	00000000 	nop
  483458:	027c9821 	addu	s3,s3,gp
  48345c:	02600008 	jr	s3
  483460:	00000000 	nop
  483464:	26b5ffff 	addiu	s5,s5,-1
  483468:	0009f602 	srl	s8,t1,0x18
  48346c:	a2be0000 	sb	s8,0(s5)
  483470:	26b5ffff 	addiu	s5,s5,-1
  483474:	00098402 	srl	s0,t1,0x10
  483478:	a2b00000 	sb	s0,0(s5)
  48347c:	26b5ffff 	addiu	s5,s5,-1
  483480:	00092a02 	srl	a1,t1,0x8
  483484:	a2a50000 	sb	a1,0(s5)
  483488:	26b5ffff 	addiu	s5,s5,-1
  48348c:	a2a90000 	sb	t1,0(s5)
  483490:	26b5ffff 	addiu	s5,s5,-1
  483494:	000a8e02 	srl	s1,t2,0x18
  483498:	a2b10000 	sb	s1,0(s5)
  48349c:	26b5ffff 	addiu	s5,s5,-1
  4834a0:	000a3c02 	srl	a3,t2,0x10
  4834a4:	a2a70000 	sb	a3,0(s5)
  4834a8:	26b5ffff 	addiu	s5,s5,-1
  4834ac:	000a2202 	srl	a0,t2,0x8
  4834b0:	a2a40000 	sb	a0,0(s5)
  4834b4:	a2aaffff 	sb	t2,-1(s5)
  4834b8:	02e0f021 	move	s8,s7
  4834bc:	02c0a021 	move	s4,s6
  4834c0:	8fa30080 	lw	v1,128(sp)
  4834c4:	001e5a02 	srl	t3,s8,0x8
  4834c8:	24690001 	addiu	t1,v1,1
  4834cc:	25360001 	addiu	s6,t1,1
  4834d0:	26ce0001 	addiu	t6,s6,1
  4834d4:	25d70001 	addiu	s7,t6,1
  4834d8:	26e80001 	addiu	t0,s7,1
  4834dc:	25150001 	addiu	s5,t0,1
  4834e0:	001e9402 	srl	s2,s8,0x10
  4834e4:	001ec602 	srl	t8,s8,0x18
  4834e8:	0014ca02 	srl	t9,s4,0x8
  4834ec:	00147e02 	srl	t7,s4,0x18
  4834f0:	00145402 	srl	t2,s4,0x10
  4834f4:	a07e0000 	sb	s8,0(v1)
  4834f8:	a12b0000 	sb	t3,0(t1)
  4834fc:	a2d20000 	sb	s2,0(s6)
  483500:	a1d80000 	sb	t8,0(t6)
  483504:	a2f40000 	sb	s4,0(s7)
  483508:	a1190000 	sb	t9,0(t0)
  48350c:	a2af0001 	sb	t7,1(s5)
  483510:	1000fe67 	b	482eb0 <des_ede3_cbc_encrypt+0x648>
  483514:	a2aa0000 	sb	t2,0(s5)

00483518 <des_encrypt3>:
  483518:	3c1c0fb9 	lui	gp,0xfb9
  48351c:	279c9458 	addiu	gp,gp,-27560
  483520:	0399e021 	addu	gp,gp,t9
  483524:	27bdffc0 	addiu	sp,sp,-64
  483528:	afbc0010 	sw	gp,16(sp)
  48352c:	afbf0038 	sw	ra,56(sp)
  483530:	afb60030 	sw	s6,48(sp)
  483534:	afb5002c 	sw	s5,44(sp)
  483538:	afb30024 	sw	s3,36(sp)
  48353c:	afb20020 	sw	s2,32(sp)
  483540:	afb1001c 	sw	s1,28(sp)
  483544:	00809021 	move	s2,a0
  483548:	afb00018 	sw	s0,24(sp)
  48354c:	afbc0034 	sw	gp,52(sp)
  483550:	afb40028 	sw	s4,40(sp)
  483554:	8e540004 	lw	s4,4(s2)
  483558:	8e4a0000 	lw	t2,0(s2)
  48355c:	0014b102 	srl	s6,s4,0x4
  483560:	3c0c0f0f 	lui	t4,0xf0f
  483564:	02ca5826 	xor	t3,s6,t2
  483568:	35960f0f 	ori	s6,t4,0xf0f
  48356c:	01764024 	and	t0,t3,s6
  483570:	01487026 	xor	t6,t2,t0
  483574:	00084900 	sll	t1,t0,0x4
  483578:	02898826 	xor	s1,s4,t1
  48357c:	000ecc02 	srl	t9,t6,0x10
  483580:	0331c026 	xor	t8,t9,s1
  483584:	3313ffff 	andi	s3,t8,0xffff
  483588:	02335026 	xor	t2,s1,s3
  48358c:	00137c00 	sll	t7,s3,0x10
  483590:	01cf6026 	xor	t4,t6,t7
  483594:	000aa882 	srl	s5,t2,0x2
  483598:	3c103333 	lui	s0,0x3333
  48359c:	02ac6826 	xor	t5,s5,t4
  4835a0:	36153333 	ori	s5,s0,0x3333
  4835a4:	01b51824 	and	v1,t5,s5
  4835a8:	01837026 	xor	t6,t4,v1
  4835ac:	00035880 	sll	t3,v1,0x2
  4835b0:	000ea202 	srl	s4,t6,0x8
  4835b4:	014b8826 	xor	s1,t2,t3
  4835b8:	3c1900ff 	lui	t9,0xff
  4835bc:	0291c026 	xor	t8,s4,s1
  4835c0:	373400ff 	ori	s4,t9,0xff
  4835c4:	03149824 	and	s3,t8,s4
  4835c8:	02335826 	xor	t3,s1,s3
  4835cc:	00137a00 	sll	t7,s3,0x8
  4835d0:	01cfc826 	xor	t9,t6,t7
  4835d4:	000b8042 	srl	s0,t3,0x1
  4835d8:	3c0d5555 	lui	t5,0x5555
  4835dc:	02191826 	xor	v1,s0,t9
  4835e0:	35b05555 	ori	s0,t5,0x5555
  4835e4:	00705024 	and	t2,v1,s0
  4835e8:	000a6040 	sll	t4,t2,0x1
  4835ec:	016c9826 	xor	s3,t3,t4
  4835f0:	032ac026 	xor	t8,t9,t2
  4835f4:	ae580000 	sw	t8,0(s2)
  4835f8:	ae530004 	sw	s3,4(s2)
  4835fc:	00c08821 	move	s1,a2
  483600:	24060001 	li	a2,1
  483604:	00e09821 	move	s3,a3
  483608:	8f998c54 	lw	t9,-29612(gp)
  48360c:	00000000 	nop
  483610:	0320f809 	jalr	t9
  483614:	00000000 	nop
  483618:	8fbc0010 	lw	gp,16(sp)
  48361c:	02402021 	move	a0,s2
  483620:	02202821 	move	a1,s1
  483624:	00003021 	move	a2,zero
  483628:	8f998c54 	lw	t9,-29612(gp)
  48362c:	00000000 	nop
  483630:	0320f809 	jalr	t9
  483634:	00000000 	nop
  483638:	8fbc0010 	lw	gp,16(sp)
  48363c:	02402021 	move	a0,s2
  483640:	02602821 	move	a1,s3
  483644:	24060001 	li	a2,1
  483648:	8f998c54 	lw	t9,-29612(gp)
  48364c:	00000000 	nop
  483650:	0320f809 	jalr	t9
  483654:	00000000 	nop
  483658:	8fbc0010 	lw	gp,16(sp)
  48365c:	8e4d0004 	lw	t5,4(s2)
  483660:	8e4e0000 	lw	t6,0(s2)
  483664:	000d8842 	srl	s1,t5,0x1
  483668:	022e7826 	xor	t7,s1,t6
  48366c:	01f04024 	and	t0,t7,s0
  483670:	01c83026 	xor	a2,t6,t0
  483674:	00084840 	sll	t1,t0,0x1
  483678:	01a95026 	xor	t2,t5,t1
  48367c:	00066202 	srl	t4,a2,0x8
  483680:	018a5826 	xor	t3,t4,t2
  483684:	01741824 	and	v1,t3,s4
  483688:	01439826 	xor	s3,t2,v1
  48368c:	00033a00 	sll	a3,v1,0x8
  483690:	00c7c026 	xor	t8,a2,a3
  483694:	00132882 	srl	a1,s3,0x2
  483698:	00b82026 	xor	a0,a1,t8
  48369c:	0095c824 	and	t9,a0,s5
  4836a0:	0019a080 	sll	s4,t9,0x2
  4836a4:	03196026 	xor	t4,t8,t9
  4836a8:	02747026 	xor	t6,s3,s4
  4836ac:	000c8c02 	srl	s1,t4,0x10
  4836b0:	022e8026 	xor	s0,s1,t6
  4836b4:	320fffff 	andi	t7,s0,0xffff
  4836b8:	01cf3826 	xor	a3,t6,t7
  4836bc:	000f6c00 	sll	t5,t7,0x10
  4836c0:	018d2826 	xor	a1,t4,t5
  4836c4:	00075902 	srl	t3,a3,0x4
  4836c8:	01651826 	xor	v1,t3,a1
  4836cc:	00763024 	and	a2,v1,s6
  4836d0:	00065100 	sll	t2,a2,0x4
  4836d4:	00ea2026 	xor	a0,a3,t2
  4836d8:	00a61826 	xor	v1,a1,a2
  4836dc:	ae440004 	sw	a0,4(s2)
  4836e0:	ae430000 	sw	v1,0(s2)
  4836e4:	8fbf0038 	lw	ra,56(sp)
  4836e8:	8fb60030 	lw	s6,48(sp)
  4836ec:	8fb5002c 	lw	s5,44(sp)
  4836f0:	8fb40028 	lw	s4,40(sp)
  4836f4:	8fb30024 	lw	s3,36(sp)
  4836f8:	8fb20020 	lw	s2,32(sp)
  4836fc:	8fb1001c 	lw	s1,28(sp)
  483700:	8fb00018 	lw	s0,24(sp)
  483704:	03e00008 	jr	ra
  483708:	27bd0040 	addiu	sp,sp,64

0048370c <des_decrypt3>:
  48370c:	3c1c0fb9 	lui	gp,0xfb9
  483710:	279c9264 	addiu	gp,gp,-28060
  483714:	0399e021 	addu	gp,gp,t9
  483718:	27bdffc0 	addiu	sp,sp,-64
  48371c:	afbc0010 	sw	gp,16(sp)
  483720:	afbf0038 	sw	ra,56(sp)
  483724:	afb60030 	sw	s6,48(sp)
  483728:	afb5002c 	sw	s5,44(sp)
  48372c:	afb40028 	sw	s4,40(sp)
  483730:	afb20020 	sw	s2,32(sp)
  483734:	afb1001c 	sw	s1,28(sp)
  483738:	00809021 	move	s2,a0
  48373c:	afb00018 	sw	s0,24(sp)
  483740:	afbc0034 	sw	gp,52(sp)
  483744:	afb30024 	sw	s3,36(sp)
  483748:	8e530004 	lw	s3,4(s2)
  48374c:	8e4a0000 	lw	t2,0(s2)
  483750:	0013b102 	srl	s6,s3,0x4
  483754:	3c0c0f0f 	lui	t4,0xf0f
  483758:	02ca5826 	xor	t3,s6,t2
  48375c:	35960f0f 	ori	s6,t4,0xf0f
  483760:	01764024 	and	t0,t3,s6
  483764:	01487026 	xor	t6,t2,t0
  483768:	00084900 	sll	t1,t0,0x4
  48376c:	02698026 	xor	s0,s3,t1
  483770:	000ecc02 	srl	t9,t6,0x10
  483774:	0330c026 	xor	t8,t9,s0
  483778:	3314ffff 	andi	s4,t8,0xffff
  48377c:	02145026 	xor	t2,s0,s4
  483780:	00147c00 	sll	t7,s4,0x10
  483784:	01cf6026 	xor	t4,t6,t7
  483788:	000aa882 	srl	s5,t2,0x2
  48378c:	3c113333 	lui	s1,0x3333
  483790:	02ac6826 	xor	t5,s5,t4
  483794:	36353333 	ori	s5,s1,0x3333
  483798:	01b51824 	and	v1,t5,s5
  48379c:	01837026 	xor	t6,t4,v1
  4837a0:	00035880 	sll	t3,v1,0x2
  4837a4:	000e9a02 	srl	s3,t6,0x8
  4837a8:	014b8026 	xor	s0,t2,t3
  4837ac:	3c1900ff 	lui	t9,0xff
  4837b0:	0270c026 	xor	t8,s3,s0
  4837b4:	373300ff 	ori	s3,t9,0xff
  4837b8:	0313a024 	and	s4,t8,s3
  4837bc:	02145826 	xor	t3,s0,s4
  4837c0:	00147a00 	sll	t7,s4,0x8
  4837c4:	01cfc826 	xor	t9,t6,t7
  4837c8:	000b8842 	srl	s1,t3,0x1
  4837cc:	3c0d5555 	lui	t5,0x5555
  4837d0:	02391826 	xor	v1,s1,t9
  4837d4:	35b15555 	ori	s1,t5,0x5555
  4837d8:	00715024 	and	t2,v1,s1
  4837dc:	000a6040 	sll	t4,t2,0x1
  4837e0:	016ca026 	xor	s4,t3,t4
  4837e4:	032ac026 	xor	t8,t9,t2
  4837e8:	ae580000 	sw	t8,0(s2)
  4837ec:	ae540004 	sw	s4,4(s2)
  4837f0:	00c08021 	move	s0,a2
  4837f4:	00a0a021 	move	s4,a1
  4837f8:	00003021 	move	a2,zero
  4837fc:	00e02821 	move	a1,a3
  483800:	8f998c54 	lw	t9,-29612(gp)
  483804:	00000000 	nop
  483808:	0320f809 	jalr	t9
  48380c:	00000000 	nop
  483810:	8fbc0010 	lw	gp,16(sp)
  483814:	02402021 	move	a0,s2
  483818:	02002821 	move	a1,s0
  48381c:	24060001 	li	a2,1
  483820:	8f998c54 	lw	t9,-29612(gp)
  483824:	00000000 	nop
  483828:	0320f809 	jalr	t9
  48382c:	00000000 	nop
  483830:	8fbc0010 	lw	gp,16(sp)
  483834:	02402021 	move	a0,s2
  483838:	02802821 	move	a1,s4
  48383c:	00003021 	move	a2,zero
  483840:	8f998c54 	lw	t9,-29612(gp)
  483844:	00000000 	nop
  483848:	0320f809 	jalr	t9
  48384c:	00000000 	nop
  483850:	8fbc0010 	lw	gp,16(sp)
  483854:	8e4d0004 	lw	t5,4(s2)
  483858:	8e4e0000 	lw	t6,0(s2)
  48385c:	000d8042 	srl	s0,t5,0x1
  483860:	020e7826 	xor	t7,s0,t6
  483864:	01f14024 	and	t0,t7,s1
  483868:	01c83026 	xor	a2,t6,t0
  48386c:	00084840 	sll	t1,t0,0x1
  483870:	01a95026 	xor	t2,t5,t1
  483874:	00066202 	srl	t4,a2,0x8
  483878:	018a5826 	xor	t3,t4,t2
  48387c:	01731824 	and	v1,t3,s3
  483880:	01439826 	xor	s3,t2,v1
  483884:	00033a00 	sll	a3,v1,0x8
  483888:	00c7c026 	xor	t8,a2,a3
  48388c:	00132882 	srl	a1,s3,0x2
  483890:	00b82026 	xor	a0,a1,t8
  483894:	0095c824 	and	t9,a0,s5
  483898:	0019a080 	sll	s4,t9,0x2
  48389c:	03196026 	xor	t4,t8,t9
  4838a0:	02747026 	xor	t6,s3,s4
  4838a4:	000c8c02 	srl	s1,t4,0x10
  4838a8:	022e8026 	xor	s0,s1,t6
  4838ac:	320fffff 	andi	t7,s0,0xffff
  4838b0:	01cf3826 	xor	a3,t6,t7
  4838b4:	000f6c00 	sll	t5,t7,0x10
  4838b8:	018d2826 	xor	a1,t4,t5
  4838bc:	00075902 	srl	t3,a3,0x4
  4838c0:	01651826 	xor	v1,t3,a1
  4838c4:	00763024 	and	a2,v1,s6
  4838c8:	00065100 	sll	t2,a2,0x4
  4838cc:	00ea2026 	xor	a0,a3,t2
  4838d0:	00a61826 	xor	v1,a1,a2
  4838d4:	ae440004 	sw	a0,4(s2)
  4838d8:	ae430000 	sw	v1,0(s2)
  4838dc:	8fbf0038 	lw	ra,56(sp)
  4838e0:	8fb60030 	lw	s6,48(sp)
  4838e4:	8fb5002c 	lw	s5,44(sp)
  4838e8:	8fb40028 	lw	s4,40(sp)
  4838ec:	8fb30024 	lw	s3,36(sp)
  4838f0:	8fb20020 	lw	s2,32(sp)
  4838f4:	8fb1001c 	lw	s1,28(sp)
  4838f8:	8fb00018 	lw	s0,24(sp)
  4838fc:	03e00008 	jr	ra
  483900:	27bd0040 	addiu	sp,sp,64
	...

00483910 <des_set_key>:
  483910:	3c1c0fb9 	lui	gp,0xfb9
  483914:	279c9060 	addiu	gp,gp,-28576
  483918:	0399e021 	addu	gp,gp,t9
  48391c:	27bdffd0 	addiu	sp,sp,-48
  483920:	afbc0010 	sw	gp,16(sp)
  483924:	8f83828c 	lw	v1,-32116(gp)
  483928:	00000000 	nop
  48392c:	8c630000 	lw	v1,0(v1)
  483930:	afb30024 	sw	s3,36(sp)
  483934:	afb20020 	sw	s2,32(sp)
  483938:	afbf002c 	sw	ra,44(sp)
  48393c:	afbc0028 	sw	gp,40(sp)
  483940:	afb1001c 	sw	s1,28(sp)
  483944:	afb00018 	sw	s0,24(sp)
  483948:	00809021 	move	s2,a0
  48394c:	1060002d 	beqz	v1,483a04 <des_set_key+0xf4>
  483950:	00a09821 	move	s3,a1
  483954:	00002821 	move	a1,zero
  483958:	02451821 	addu	v1,s2,a1
  48395c:	90670000 	lbu	a3,0(v1)
  483960:	24a50001 	addiu	a1,a1,1
  483964:	8f86802c 	lw	a2,-32724(gp)
  483968:	00000000 	nop
  48396c:	24c66d30 	addiu	a2,a2,27952
  483970:	00c73021 	addu	a2,a2,a3
  483974:	90c60000 	lbu	a2,0(a2)
  483978:	2ca40008 	sltiu	a0,a1,8
  48397c:	14e60004 	bne	a3,a2,483990 <des_set_key+0x80>
  483980:	00001021 	move	v0,zero
  483984:	1480fff5 	bnez	a0,48395c <des_set_key+0x4c>
  483988:	02451821 	addu	v1,s2,a1
  48398c:	24020001 	li	v0,1
  483990:	8f908018 	lw	s0,-32744(gp)
  483994:	00000000 	nop
  483998:	26104144 	addiu	s0,s0,16708
  48399c:	104000d7 	beqz	v0,483cfc <des_set_key+0x3ec>
  4839a0:	00008821 	move	s1,zero
  4839a4:	02002021 	move	a0,s0
  4839a8:	02402821 	move	a1,s2
  4839ac:	24060008 	li	a2,8
  4839b0:	26310001 	addiu	s1,s1,1
  4839b4:	8f9985c8 	lw	t9,-31288(gp)
  4839b8:	00000000 	nop
  4839bc:	0320f809 	jalr	t9
  4839c0:	00000000 	nop
  4839c4:	8fbc0010 	lw	gp,16(sp)
  4839c8:	26100008 	addiu	s0,s0,8
  4839cc:	104000c9 	beqz	v0,483cf4 <des_set_key+0x3e4>
  4839d0:	2a230010 	slti	v1,s1,16
  4839d4:	1460fff4 	bnez	v1,4839a8 <des_set_key+0x98>
  4839d8:	02002021 	move	a0,s0
  4839dc:	00001821 	move	v1,zero
  4839e0:	10600008 	beqz	v1,483a04 <des_set_key+0xf4>
  4839e4:	2402fffe 	li	v0,-2
  4839e8:	8fbf002c 	lw	ra,44(sp)
  4839ec:	8fb30024 	lw	s3,36(sp)
  4839f0:	8fb20020 	lw	s2,32(sp)
  4839f4:	8fb1001c 	lw	s1,28(sp)
  4839f8:	8fb00018 	lw	s0,24(sp)
  4839fc:	03e00008 	jr	ra
  483a00:	27bd0030 	addiu	sp,sp,48
  483a04:	924b0005 	lbu	t3,5(s2)
  483a08:	924a0001 	lbu	t2,1(s2)
  483a0c:	92450004 	lbu	a1,4(s2)
  483a10:	92490006 	lbu	t1,6(s2)
  483a14:	000bc200 	sll	t8,t3,0x8
  483a18:	92590007 	lbu	t9,7(s2)
  483a1c:	92430000 	lbu	v1,0(s2)
  483a20:	92470002 	lbu	a3,2(s2)
  483a24:	00b84025 	or	t0,a1,t8
  483a28:	000a7a00 	sll	t7,t2,0x8
  483a2c:	00093400 	sll	a2,t1,0x10
  483a30:	92500003 	lbu	s0,3(s2)
  483a34:	006f1025 	or	v0,v1,t7
  483a38:	00078c00 	sll	s1,a3,0x10
  483a3c:	01069025 	or	s2,t0,a2
  483a40:	00196e00 	sll	t5,t9,0x18
  483a44:	024d4025 	or	t0,s2,t5
  483a48:	00512025 	or	a0,v0,s1
  483a4c:	00107600 	sll	t6,s0,0x18
  483a50:	008e3825 	or	a3,a0,t6
  483a54:	00086102 	srl	t4,t0,0x4
  483a58:	3c0b0f0f 	lui	t3,0xf0f
  483a5c:	01875026 	xor	t2,t4,a3
  483a60:	35690f0f 	ori	t1,t3,0xf0f
  483a64:	01492824 	and	a1,t2,t1
  483a68:	00053100 	sll	a2,a1,0x4
  483a6c:	01067026 	xor	t6,t0,a2
  483a70:	00e59026 	xor	s2,a3,a1
  483a74:	000e6c80 	sll	t5,t6,0x12
  483a78:	01ae1026 	xor	v0,t5,t6
  483a7c:	00121c80 	sll	v1,s2,0x12
  483a80:	3c10cccc 	lui	s0,0xcccc
  483a84:	00502024 	and	a0,v0,s0
  483a88:	0072c826 	xor	t9,v1,s2
  483a8c:	03308824 	and	s1,t9,s0
  483a90:	01c46026 	xor	t4,t6,a0
  483a94:	00045c82 	srl	t3,a0,0x12
  483a98:	018b1826 	xor	v1,t4,t3
  483a9c:	02515026 	xor	t2,s2,s1
  483aa0:	00114c82 	srl	t1,s1,0x12
  483aa4:	01494026 	xor	t0,t2,t1
  483aa8:	00032842 	srl	a1,v1,0x1
  483aac:	3c075555 	lui	a3,0x5555
  483ab0:	00a83026 	xor	a2,a1,t0
  483ab4:	34e95555 	ori	t1,a3,0x5555
  483ab8:	00c97824 	and	t7,a2,t1
  483abc:	010f6026 	xor	t4,t0,t7
  483ac0:	000fc040 	sll	t8,t7,0x1
  483ac4:	00787026 	xor	t6,v1,t8
  483ac8:	000cca02 	srl	t9,t4,0x8
  483acc:	3c1200ff 	lui	s2,0xff
  483ad0:	032e8826 	xor	s1,t9,t6
  483ad4:	364d00ff 	ori	t5,s2,0xff
  483ad8:	022d8024 	and	s0,s1,t5
  483adc:	01d04026 	xor	t0,t6,s0
  483ae0:	00101200 	sll	v0,s0,0x8
  483ae4:	01823026 	xor	a2,t4,v0
  483ae8:	00085842 	srl	t3,t0,0x1
  483aec:	01665026 	xor	t2,t3,a2
  483af0:	01493824 	and	a3,t2,t1
  483af4:	00072040 	sll	a0,a3,0x1
  483af8:	0104c826 	xor	t9,t0,a0
  483afc:	332300ff 	andi	v1,t9,0xff
  483b00:	3332ff00 	andi	s2,t9,0xff00
  483b04:	00197402 	srl	t6,t9,0x10
  483b08:	00038c00 	sll	s1,v1,0x10
  483b0c:	00c74026 	xor	t0,a2,a3
  483b10:	3c10f000 	lui	s0,0xf000
  483b14:	02326025 	or	t4,s1,s2
  483b18:	01101024 	and	v0,t0,s0
  483b1c:	31cd00ff 	andi	t5,t6,0xff
  483b20:	3c0b0fff 	lui	t3,0xfff
  483b24:	3565ffff 	ori	a1,t3,0xffff
  483b28:	018d5025 	or	t2,t4,t5
  483b2c:	00024902 	srl	t1,v0,0x4
  483b30:	0149c025 	or	t8,t2,t1
  483b34:	02608021 	move	s0,s3
  483b38:	01057824 	and	t7,t0,a1
  483b3c:	00009021 	move	s2,zero
  483b40:	00a0c821 	move	t9,a1
  483b44:	8f91802c 	lw	s1,-32724(gp)
  483b48:	00000000 	nop
  483b4c:	26316e30 	addiu	s1,s1,28208
  483b50:	00126080 	sll	t4,s2,0x2
  483b54:	8f938018 	lw	s3,-32744(gp)
  483b58:	00000000 	nop
  483b5c:	267341c4 	addiu	s3,s3,16836
  483b60:	026c9821 	addu	s3,s3,t4
  483b64:	8e730000 	lw	s3,0(s3)
  483b68:	000f4e80 	sll	t1,t7,0x1a
  483b6c:	00185680 	sll	t2,t8,0x1a
  483b70:	000f3882 	srl	a3,t7,0x2
  483b74:	00184082 	srl	t0,t8,0x2
  483b78:	000f2ec0 	sll	a1,t7,0x1b
  483b7c:	001836c0 	sll	a2,t8,0x1b
  483b80:	000f1042 	srl	v0,t7,0x1
  483b84:	12600058 	beqz	s3,483ce8 <des_set_key+0x3d8>
  483b88:	00182042 	srl	a0,t8,0x1
  483b8c:	00e97825 	or	t7,a3,t1
  483b90:	010ac025 	or	t8,t0,t2
  483b94:	01f97824 	and	t7,t7,t9
  483b98:	0319c024 	and	t8,t8,t9
  483b9c:	000f1982 	srl	v1,t7,0x6
  483ba0:	000f49c2 	srl	t1,t7,0x7
  483ba4:	001811c2 	srl	v0,t8,0x7
  483ba8:	00185a02 	srl	t3,t8,0x8
  483bac:	306d0003 	andi	t5,v1,0x3
  483bb0:	3133003c 	andi	s3,t1,0x3c
  483bb4:	30460003 	andi	a2,v0,0x3
  483bb8:	3168003c 	andi	t0,t3,0x3c
  483bbc:	000f2342 	srl	a0,t7,0xd
  483bc0:	000f2b82 	srl	a1,t7,0xe
  483bc4:	000f5502 	srl	t2,t7,0x14
  483bc8:	000f6542 	srl	t4,t7,0x15
  483bcc:	01b33825 	or	a3,t5,s3
  483bd0:	314b0001 	andi	t3,t2,0x1
  483bd4:	00c86825 	or	t5,a2,t0
  483bd8:	31f3003f 	andi	s3,t7,0x3f
  483bdc:	30a80030 	andi	t0,a1,0x30
  483be0:	3086000f 	andi	a2,a0,0xf
  483be4:	00181d42 	srl	v1,t8,0x15
  483be8:	31840006 	andi	a0,t4,0x6
  483bec:	000f5582 	srl	t2,t7,0x16
  483bf0:	330c003f 	andi	t4,t8,0x3f
  483bf4:	00181582 	srl	v0,t8,0x16
  483bf8:	00c83025 	or	a2,a2,t0
  483bfc:	01642825 	or	a1,t3,a0
  483c00:	000d4080 	sll	t0,t5,0x2
  483c04:	00135880 	sll	t3,s3,0x2
  483c08:	314a0038 	andi	t2,t2,0x38
  483c0c:	00079880 	sll	s3,a3,0x2
  483c10:	000c6080 	sll	t4,t4,0x2
  483c14:	306d000f 	andi	t5,v1,0xf
  483c18:	30420030 	andi	v0,v0,0x30
  483c1c:	00182342 	srl	a0,t8,0xd
  483c20:	01a21825 	or	v1,t5,v0
  483c24:	00aa2825 	or	a1,a1,t2
  483c28:	01716821 	addu	t5,t3,s1
  483c2c:	02715021 	addu	t2,s3,s1
  483c30:	01911021 	addu	v0,t4,s1
  483c34:	00069880 	sll	s3,a2,0x2
  483c38:	01114821 	addu	t1,t0,s1
  483c3c:	308800fc 	andi	t0,a0,0xfc
  483c40:	8c4b0400 	lw	t3,1024(v0)
  483c44:	8da40000 	lw	a0,0(t5)
  483c48:	8d220500 	lw	v0,1280(t1)
  483c4c:	8d4d0100 	lw	t5,256(t2)
  483c50:	01114821 	addu	t1,t0,s1
  483c54:	02715021 	addu	t2,s3,s1
  483c58:	00033880 	sll	a3,v1,0x2
  483c5c:	00059880 	sll	s3,a1,0x2
  483c60:	8d4c0200 	lw	t4,512(t2)
  483c64:	02712821 	addu	a1,s3,s1
  483c68:	00f15021 	addu	t2,a3,s1
  483c6c:	8d330600 	lw	s3,1536(t1)
  483c70:	01623025 	or	a2,t3,v0
  483c74:	008d4825 	or	t1,a0,t5
  483c78:	8d480700 	lw	t0,1792(t2)
  483c7c:	8cab0300 	lw	t3,768(a1)
  483c80:	012c1825 	or	v1,t1,t4
  483c84:	00d33825 	or	a3,a2,s3
  483c88:	00e86025 	or	t4,a3,t0
  483c8c:	006b2825 	or	a1,v1,t3
  483c90:	3c0effff 	lui	t6,0xffff
  483c94:	000c1400 	sll	v0,t4,0x10
  483c98:	30adffff 	andi	t5,a1,0xffff
  483c9c:	018e1824 	and	v1,t4,t6
  483ca0:	00055c02 	srl	t3,a1,0x10
  483ca4:	004d9825 	or	s3,v0,t5
  483ca8:	01633825 	or	a3,t3,v1
  483cac:	26520001 	addiu	s2,s2,1
  483cb0:	00135782 	srl	t2,s3,0x1e
  483cb4:	00134880 	sll	t1,s3,0x2
  483cb8:	00074682 	srl	t0,a3,0x1a
  483cbc:	00076980 	sll	t5,a3,0x6
  483cc0:	260e0004 	addiu	t6,s0,4
  483cc4:	012a3025 	or	a2,t1,t2
  483cc8:	01a81025 	or	v0,t5,t0
  483ccc:	2a440010 	slti	a0,s2,16
  483cd0:	ae060000 	sw	a2,0(s0)
  483cd4:	adc20000 	sw	v0,0(t6)
  483cd8:	1480ff9d 	bnez	a0,483b50 <des_set_key+0x240>
  483cdc:	25d00004 	addiu	s0,t6,4
  483ce0:	1000ff41 	b	4839e8 <des_set_key+0xd8>
  483ce4:	00001021 	move	v0,zero
  483ce8:	00457825 	or	t7,v0,a1
  483cec:	1000ffa9 	b	483b94 <des_set_key+0x284>
  483cf0:	0086c025 	or	t8,a0,a2
  483cf4:	1000ff3a 	b	4839e0 <des_set_key+0xd0>
  483cf8:	24030001 	li	v1,1
  483cfc:	1000ff3a 	b	4839e8 <des_set_key+0xd8>
  483d00:	2402ffff 	li	v0,-1

00483d04 <des_set_odd_parity>:
  483d04:	3c1c0fb9 	lui	gp,0xfb9
  483d08:	279c8c6c 	addiu	gp,gp,-29588
  483d0c:	0399e021 	addu	gp,gp,t9
  483d10:	00804021 	move	t0,a0
  483d14:	00003021 	move	a2,zero
  483d18:	8f87802c 	lw	a3,-32724(gp)
  483d1c:	00000000 	nop
  483d20:	24e76d30 	addiu	a3,a3,27952
  483d24:	01062021 	addu	a0,t0,a2
  483d28:	90890000 	lbu	t1,0(a0)
  483d2c:	24c60001 	addiu	a2,a2,1
  483d30:	01271821 	addu	v1,t1,a3
  483d34:	90650000 	lbu	a1,0(v1)
  483d38:	2cc20008 	sltiu	v0,a2,8
  483d3c:	1440fff9 	bnez	v0,483d24 <des_set_odd_parity+0x20>
  483d40:	a0850000 	sb	a1,0(a0)
  483d44:	03e00008 	jr	ra
  483d48:	00000000 	nop

00483d4c <des_is_weak_key>:
  483d4c:	3c1c0fb9 	lui	gp,0xfb9
  483d50:	279c8c24 	addiu	gp,gp,-29660
  483d54:	0399e021 	addu	gp,gp,t9
  483d58:	27bdffd0 	addiu	sp,sp,-48
  483d5c:	afbc0010 	sw	gp,16(sp)
  483d60:	afb20020 	sw	s2,32(sp)
  483d64:	afb1001c 	sw	s1,28(sp)
  483d68:	afb00018 	sw	s0,24(sp)
  483d6c:	afbf0028 	sw	ra,40(sp)
  483d70:	afbc0024 	sw	gp,36(sp)
  483d74:	00809021 	move	s2,a0
  483d78:	00008821 	move	s1,zero
  483d7c:	8f908018 	lw	s0,-32744(gp)
  483d80:	00000000 	nop
  483d84:	26104144 	addiu	s0,s0,16708
  483d88:	00000000 	nop
  483d8c:	02002021 	move	a0,s0
  483d90:	02402821 	move	a1,s2
  483d94:	24060008 	li	a2,8
  483d98:	8f9985c8 	lw	t9,-31288(gp)
  483d9c:	00000000 	nop
  483da0:	0320f809 	jalr	t9
  483da4:	00000000 	nop
  483da8:	8fbc0010 	lw	gp,16(sp)
  483dac:	26310001 	addiu	s1,s1,1
  483db0:	00402821 	move	a1,v0
  483db4:	2a240010 	slti	a0,s1,16
  483db8:	26100008 	addiu	s0,s0,8
  483dbc:	10a00004 	beqz	a1,483dd0 <des_is_weak_key+0x84>
  483dc0:	24020001 	li	v0,1
  483dc4:	1480fff2 	bnez	a0,483d90 <des_is_weak_key+0x44>
  483dc8:	02002021 	move	a0,s0
  483dcc:	00001021 	move	v0,zero
  483dd0:	8fbf0028 	lw	ra,40(sp)
  483dd4:	8fb20020 	lw	s2,32(sp)
  483dd8:	8fb1001c 	lw	s1,28(sp)
  483ddc:	8fb00018 	lw	s0,24(sp)
  483de0:	03e00008 	jr	ra
  483de4:	27bd0030 	addiu	sp,sp,48

00483de8 <des_key_sched>:
  483de8:	3c1c0fb9 	lui	gp,0xfb9
  483dec:	279c8b88 	addiu	gp,gp,-29816
  483df0:	0399e021 	addu	gp,gp,t9
  483df4:	27bdffe0 	addiu	sp,sp,-32
  483df8:	afbc0010 	sw	gp,16(sp)
  483dfc:	afbf001c 	sw	ra,28(sp)
  483e00:	afbc0018 	sw	gp,24(sp)
  483e04:	8f9984e8 	lw	t9,-31512(gp)
  483e08:	00000000 	nop
  483e0c:	0320f809 	jalr	t9
  483e10:	00000000 	nop
  483e14:	8fbc0010 	lw	gp,16(sp)
  483e18:	8fbf001c 	lw	ra,28(sp)
  483e1c:	00000000 	nop
  483e20:	03e00008 	jr	ra
  483e24:	27bd0020 	addiu	sp,sp,32
	...

00483e30 <des_ecb_encrypt>:
  483e30:	3c1c0fb9 	lui	gp,0xfb9
  483e34:	279c8b40 	addiu	gp,gp,-29888
  483e38:	0399e021 	addu	gp,gp,t9
  483e3c:	27bdffd0 	addiu	sp,sp,-48
  483e40:	afbc0010 	sw	gp,16(sp)
  483e44:	afbf0028 	sw	ra,40(sp)
  483e48:	afb00020 	sw	s0,32(sp)
  483e4c:	afbc0024 	sw	gp,36(sp)
  483e50:	90980001 	lbu	t8,1(a0)
  483e54:	908f0000 	lbu	t7,0(a0)
  483e58:	908e0002 	lbu	t6,2(a0)
  483e5c:	908b0003 	lbu	t3,3(a0)
  483e60:	00188200 	sll	s0,t8,0x8
  483e64:	01f06025 	or	t4,t7,s0
  483e68:	000e6c00 	sll	t5,t6,0x10
  483e6c:	018d1025 	or	v0,t4,t5
  483e70:	000b1e00 	sll	v1,t3,0x18
  483e74:	00435025 	or	t2,v0,v1
  483e78:	90880005 	lbu	t0,5(a0)
  483e7c:	afaa0018 	sw	t2,24(sp)
  483e80:	90980006 	lbu	t8,6(a0)
  483e84:	90990004 	lbu	t9,4(a0)
  483e88:	908e0007 	lbu	t6,7(a0)
  483e8c:	00084a00 	sll	t1,t0,0x8
  483e90:	00188400 	sll	s0,t8,0x10
  483e94:	03297825 	or	t7,t9,t1
  483e98:	01f06025 	or	t4,t7,s0
  483e9c:	000e6e00 	sll	t5,t6,0x18
  483ea0:	00a08021 	move	s0,a1
  483ea4:	018d5825 	or	t3,t4,t5
  483ea8:	00c02821 	move	a1,a2
  483eac:	27a40018 	addiu	a0,sp,24
  483eb0:	00e03021 	move	a2,a3
  483eb4:	afab001c 	sw	t3,28(sp)
  483eb8:	8f998548 	lw	t9,-31416(gp)
  483ebc:	00000000 	nop
  483ec0:	0320f809 	jalr	t9
  483ec4:	00000000 	nop
  483ec8:	8fbc0010 	lw	gp,16(sp)
  483ecc:	8fa50018 	lw	a1,24(sp)
  483ed0:	8fbf0028 	lw	ra,40(sp)
  483ed4:	a2050000 	sb	a1,0(s0)
  483ed8:	8fa7001c 	lw	a3,28(sp)
  483edc:	00055602 	srl	t2,a1,0x18
  483ee0:	00051a02 	srl	v1,a1,0x8
  483ee4:	00053402 	srl	a2,a1,0x10
  483ee8:	00071602 	srl	v0,a3,0x18
  483eec:	00072202 	srl	a0,a3,0x8
  483ef0:	00074402 	srl	t0,a3,0x10
  483ef4:	a2030001 	sb	v1,1(s0)
  483ef8:	a2020007 	sb	v0,7(s0)
  483efc:	a2060002 	sb	a2,2(s0)
  483f00:	a20a0003 	sb	t2,3(s0)
  483f04:	a2040005 	sb	a0,5(s0)
  483f08:	a2080006 	sb	t0,6(s0)
  483f0c:	a2070004 	sb	a3,4(s0)
  483f10:	8fb00020 	lw	s0,32(sp)
  483f14:	03e00008 	jr	ra
  483f18:	27bd0030 	addiu	sp,sp,48
  483f1c:	00000000 	nop

00483f20 <normal6>:
  483f20:	3c1c0fb9 	lui	gp,0xfb9
  483f24:	279c8a50 	addiu	gp,gp,-30128
  483f28:	0399e021 	addu	gp,gp,t9
  483f2c:	27bdffc8 	addiu	sp,sp,-56
  483f30:	afbc0010 	sw	gp,16(sp)
  483f34:	afb40028 	sw	s4,40(sp)
  483f38:	00c0a021 	move	s4,a2
	unsigned long piece;
	char *p;
	char *q;

	if (srclen != IP6BYTES)	/* "can't happen" */
  483f3c:	24060010 	li	a2,16
  483f40:	afb5002c 	sw	s5,44(sp)
  483f44:	afbf0034 	sw	ra,52(sp)
  483f48:	afbc0030 	sw	gp,48(sp)
  483f4c:	afb30024 	sw	s3,36(sp)
  483f50:	afb20020 	sw	s2,32(sp)
  483f54:	afb1001c 	sw	s1,28(sp)
  483f58:	afb00018 	sw	s0,24(sp)
  483f5c:	00e0a821 	move	s5,a3
  483f60:	10a6000a 	beq	a1,a2,483f8c <normal6+0x6c>
  483f64:	00001021 	move	v0,zero
		return 0;
	p = buf;
	*p++ = ':';
	for (i = 0; i < IP6BYTES/2; i++) {
		piece = (srcp[2*i] << 8) + srcp[2*i + 1];
		p += ultot(piece, 16, p, 5);	/* 5 = abcd + NUL */
		*(p-1) = ':';	/* overwrites the NUL */
	}
	*p = '\0';
	q = strstr(buf, ":0:0:");
	if (q != NULL) {	/* zero squishing is possible */
		p = q + 1;
		while (*p == '0' && *(p+1) == ':')
			p += 2;
		q++;
		*q++ = ':';	/* overwrite first 0 */
		while (*p != '\0')
			*q++ = *p++;
		*q = '\0';
		if (!(*(q-1) == ':' && *(q-2) == ':'))
			*--q = '\0';	/* strip final : unless :: */
		p = buf;
		if (!(*p == ':' && *(p+1) == ':'))
			p++;	/* skip initial : unless :: */
	} else {
		q = p;
		*--q = '\0';	/* strip final : */
		p = buf + 1;	/* skip initial : */
	}
	*dstp = p;
	return q - p + 1;
}
  483f68:	8fbf0034 	lw	ra,52(sp)
  483f6c:	8fb5002c 	lw	s5,44(sp)
  483f70:	8fb40028 	lw	s4,40(sp)
  483f74:	8fb30024 	lw	s3,36(sp)
  483f78:	8fb20020 	lw	s2,32(sp)
  483f7c:	8fb1001c 	lw	s1,28(sp)
  483f80:	8fb00018 	lw	s0,24(sp)
  483f84:	03e00008 	jr	ra
  483f88:	27bd0038 	addiu	sp,sp,56
  483f8c:	02801821 	move	v1,s4
  483f90:	2405003a 	li	a1,58
  483f94:	a0650000 	sb	a1,0(v1)
  483f98:	00808821 	move	s1,a0
  483f9c:	24700001 	addiu	s0,v1,1
  483fa0:	2413003a 	li	s3,58
  483fa4:	24120007 	li	s2,7
  483fa8:	92220000 	lbu	v0,0(s1)
  483fac:	92270001 	lbu	a3,1(s1)
  483fb0:	00023200 	sll	a2,v0,0x8
  483fb4:	00c72021 	addu	a0,a2,a3
  483fb8:	24050010 	li	a1,16
  483fbc:	02003021 	move	a2,s0
  483fc0:	24070005 	li	a3,5
  483fc4:	8f9981a8 	lw	t9,-32344(gp)
  483fc8:	00000000 	nop
  483fcc:	0320f809 	jalr	t9
  483fd0:	00000000 	nop
  483fd4:	8fbc0010 	lw	gp,16(sp)
  483fd8:	02028021 	addu	s0,s0,v0
  483fdc:	2652ffff 	addiu	s2,s2,-1
  483fe0:	a213ffff 	sb	s3,-1(s0)
  483fe4:	0641fff0 	bgez	s2,483fa8 <normal6+0x88>
  483fe8:	26310002 	addiu	s1,s1,2
  483fec:	02802021 	move	a0,s4
  483ff0:	a2000000 	sb	zero,0(s0)
  483ff4:	8f85802c 	lw	a1,-32724(gp)
  483ff8:	00000000 	nop
  483ffc:	24a57e80 	addiu	a1,a1,32384
  484000:	8f998694 	lw	t9,-31084(gp)
  484004:	00000000 	nop
  484008:	0320f809 	jalr	t9
  48400c:	00000000 	nop
  484010:	8fbc0010 	lw	gp,16(sp)
  484014:	00402021 	move	a0,v0
  484018:	10800043 	beqz	a0,484128 <normal6+0x208>
  48401c:	00000000 	nop
  484020:	80880001 	lb	t0,1(a0)
  484024:	00000000 	nop
  484028:	24900001 	addiu	s0,a0,1
  48402c:	24040030 	li	a0,48
  484030:	1104002c 	beq	t0,a0,4840e4 <normal6+0x1c4>
  484034:	02002821 	move	a1,s0
  484038:	00a07021 	move	t6,a1
  48403c:	240f003a 	li	t7,58
  484040:	a1cf0000 	sb	t7,0(t6)
  484044:	820d0000 	lb	t5,0(s0)
  484048:	00000000 	nop
  48404c:	92050000 	lbu	a1,0(s0)
  484050:	11a00007 	beqz	t5,484070 <normal6+0x150>
  484054:	25c40001 	addiu	a0,t6,1
  484058:	a0850000 	sb	a1,0(a0)
  48405c:	26100001 	addiu	s0,s0,1
  484060:	82110000 	lb	s1,0(s0)
  484064:	92050000 	lbu	a1,0(s0)
  484068:	1620fffb 	bnez	s1,484058 <normal6+0x138>
  48406c:	24840001 	addiu	a0,a0,1
  484070:	8083ffff 	lb	v1,-1(a0)
  484074:	2410003a 	li	s0,58
  484078:	a0800000 	sb	zero,0(a0)
  48407c:	10700013 	beq	v1,s0,4840cc <normal6+0x1ac>
  484080:	2485ffff 	addiu	a1,a0,-1
  484084:	00a02021 	move	a0,a1
  484088:	a0a00000 	sb	zero,0(a1)
  48408c:	02808021 	move	s0,s4
  484090:	82030000 	lb	v1,0(s0)
  484094:	2413003a 	li	s3,58
  484098:	10730006 	beq	v1,s3,4840b4 <normal6+0x194>
  48409c:	00000000 	nop
  4840a0:	26100001 	addiu	s0,s0,1
  4840a4:	0090c023 	subu	t8,a0,s0
  4840a8:	27020001 	addiu	v0,t8,1
  4840ac:	1000ffae 	b	483f68 <normal6+0x48>
  4840b0:	aeb00000 	sw	s0,0(s5)
  4840b4:	82140001 	lb	s4,1(s0)
  4840b8:	00000000 	nop
  4840bc:	1683fff8 	bne	s4,v1,4840a0 <normal6+0x180>
  4840c0:	0090c023 	subu	t8,a0,s0
  4840c4:	1000fff9 	b	4840ac <normal6+0x18c>
  4840c8:	27020001 	addiu	v0,t8,1
  4840cc:	8092fffe 	lb	s2,-2(a0)
  4840d0:	00000000 	nop
  4840d4:	1643ffeb 	bne	s2,v1,484084 <normal6+0x164>
  4840d8:	02808021 	move	s0,s4
  4840dc:	1000ffec 	b	484090 <normal6+0x170>
  4840e0:	00000000 	nop
  4840e4:	820a0001 	lb	t2,1(s0)
  4840e8:	2409003a 	li	t1,58
  4840ec:	1549ffd3 	bne	t2,t1,48403c <normal6+0x11c>
  4840f0:	00a07021 	move	t6,a1
  4840f4:	24040030 	li	a0,48
  4840f8:	2403003a 	li	v1,58
  4840fc:	26100002 	addiu	s0,s0,2
  484100:	820b0000 	lb	t3,0(s0)
  484104:	00000000 	nop
  484108:	1564ffcc 	bne	t3,a0,48403c <normal6+0x11c>
  48410c:	00a07021 	move	t6,a1
  484110:	820c0001 	lb	t4,1(s0)
  484114:	00000000 	nop
  484118:	1583ffc9 	bne	t4,v1,484040 <normal6+0x120>
  48411c:	240f003a 	li	t7,58
  484120:	1000fff7 	b	484100 <normal6+0x1e0>
  484124:	26100002 	addiu	s0,s0,2
  484128:	a200ffff 	sb	zero,-1(s0)
  48412c:	2604ffff 	addiu	a0,s0,-1
  484130:	1000ffdc 	b	4840a4 <normal6+0x184>
  484134:	26900001 	addiu	s0,s4,1

00484138 <addrtot>:
  484138:	3c1c0fb9 	lui	gp,0xfb9
  48413c:	279c8838 	addiu	gp,gp,-30664
  484140:	0399e021 	addu	gp,gp,t9
  484144:	27bdff70 	addiu	sp,sp,-144
  484148:	afbc0010 	sw	gp,16(sp)
  48414c:	afb40080 	sw	s4,128(sp)
  484150:	afb3007c 	sw	s3,124(sp)
  484154:	afb20078 	sw	s2,120(sp)
  484158:	afb10074 	sw	s1,116(sp)
  48415c:	afb00070 	sw	s0,112(sp)
  484160:	afbf0088 	sw	ra,136(sp)
  484164:	00808021 	move	s0,a0
  484168:	afbc0084 	sw	gp,132(sp)
  48416c:	00a09021 	move	s2,a1
  484170:	00c0a021 	move	s4,a2
  484174:	00e09821 	move	s3,a3
  484178:	8f9985d4 	lw	t9,-31276(gp)
  48417c:	00000000 	nop
  484180:	0320f809 	jalr	t9
  484184:	00000000 	nop
  484188:	8fbc0010 	lw	gp,16(sp)
  48418c:	00000000 	nop
  484190:	27a50068 	addiu	a1,sp,104
  484194:	02002021 	move	a0,s0
  484198:	00408821 	move	s1,v0
  48419c:	8f998768 	lw	t9,-30872(gp)
  4841a0:	00000000 	nop
  4841a4:	0320f809 	jalr	t9
  4841a8:	00000000 	nop
  4841ac:	8fbc0010 	lw	gp,16(sp)
  4841b0:	00408021 	move	s0,v0
  4841b4:	1200000d 	beqz	s0,4841ec <addrtot+0xb4>
  4841b8:	00111a00 	sll	v1,s1,0x8
  4841bc:	00722825 	or	a1,v1,s2
  4841c0:	24020a00 	li	v0,2560
  4841c4:	10a2005c 	beq	a1,v0,484338 <addrtot+0x200>
  4841c8:	28a40a01 	slti	a0,a1,2561
  4841cc:	1080003b 	beqz	a0,4842bc <addrtot+0x184>
  4841d0:	24080a52 	li	t0,2642
  4841d4:	24060200 	li	a2,512
  4841d8:	10a6002a 	beq	a1,a2,484284 <addrtot+0x14c>
  4841dc:	24070272 	li	a3,626
  4841e0:	10a7000a 	beq	a1,a3,48420c <addrtot+0xd4>
  4841e4:	02002821 	move	a1,s0
  4841e8:	00001021 	move	v0,zero
  4841ec:	8fbf0088 	lw	ra,136(sp)
  4841f0:	8fb40080 	lw	s4,128(sp)
  4841f4:	8fb3007c 	lw	s3,124(sp)
  4841f8:	8fb20078 	lw	s2,120(sp)
  4841fc:	8fb10074 	lw	s1,116(sp)
  484200:	8fb00070 	lw	s0,112(sp)
  484204:	03e00008 	jr	ra
  484208:	27bd0090 	addiu	sp,sp,144
  48420c:	8fa40068 	lw	a0,104(sp)
  484210:	27a60018 	addiu	a2,sp,24
  484214:	27a7006c 	addiu	a3,sp,108
  484218:	8f998048 	lw	t9,-32696(gp)
  48421c:	00000000 	nop
  484220:	2739444c 	addiu	t9,t9,17484
  484224:	00000000 	nop
  484228:	0320f809 	jalr	t9
  48422c:	00000000 	nop
  484230:	8fbc0010 	lw	gp,16(sp)
  484234:	00000000 	nop
  484238:	12600010 	beqz	s3,48427c <addrtot+0x144>
  48423c:	00408021 	move	s0,v0
  484240:	0270282b 	sltu	a1,s3,s0
  484244:	10a00005 	beqz	a1,48425c <addrtot+0x124>
  484248:	00000000 	nop
  48424c:	8fab006c 	lw	t3,108(sp)
  484250:	00000000 	nop
  484254:	01735021 	addu	t2,t3,s3
  484258:	a140ffff 	sb	zero,-1(t2)
  48425c:	8fa5006c 	lw	a1,108(sp)
  484260:	02802021 	move	a0,s4
  484264:	8f998c58 	lw	t9,-29608(gp)
  484268:	00000000 	nop
  48426c:	0320f809 	jalr	t9
  484270:	00000000 	nop
  484274:	8fbc0010 	lw	gp,16(sp)
  484278:	00000000 	nop
  48427c:	1000ffdb 	b	4841ec <addrtot+0xb4>
  484280:	02001021 	move	v0,s0
  484284:	8fa40068 	lw	a0,104(sp)
  484288:	02002821 	move	a1,s0
  48428c:	27a60018 	addiu	a2,sp,24
  484290:	27a7006c 	addiu	a3,sp,108
  484294:	8f998048 	lw	t9,-32696(gp)
  484298:	00000000 	nop
  48429c:	27394370 	addiu	t9,t9,17264
  4842a0:	00000000 	nop
  4842a4:	0320f809 	jalr	t9
  4842a8:	00000000 	nop
  4842ac:	8fbc0010 	lw	gp,16(sp)
  4842b0:	00000000 	nop
  4842b4:	1000ffe0 	b	484238 <addrtot+0x100>
  4842b8:	00000000 	nop
  4842bc:	10a80010 	beq	a1,t0,484300 <addrtot+0x1c8>
  4842c0:	24090a72 	li	t1,2674
  4842c4:	14a9ffc8 	bne	a1,t1,4841e8 <addrtot+0xb0>
  4842c8:	02002821 	move	a1,s0
  4842cc:	8fa40068 	lw	a0,104(sp)
  4842d0:	27a60018 	addiu	a2,sp,24
  4842d4:	27a7006c 	addiu	a3,sp,108
  4842d8:	8f998048 	lw	t9,-32696(gp)
  4842dc:	00000000 	nop
  4842e0:	273945a4 	addiu	t9,t9,17828
  4842e4:	00000000 	nop
  4842e8:	0320f809 	jalr	t9
  4842ec:	00000000 	nop
  4842f0:	8fbc0010 	lw	gp,16(sp)
  4842f4:	00000000 	nop
  4842f8:	1000ffcf 	b	484238 <addrtot+0x100>
  4842fc:	00000000 	nop
  484300:	8fa40068 	lw	a0,104(sp)
  484304:	02002821 	move	a1,s0
  484308:	27a60018 	addiu	a2,sp,24
  48430c:	27a7006c 	addiu	a3,sp,108
  484310:	8f998048 	lw	t9,-32696(gp)
  484314:	00000000 	nop
  484318:	273946c8 	addiu	t9,t9,18120
  48431c:	00000000 	nop
  484320:	0320f809 	jalr	t9
  484324:	00000000 	nop
  484328:	8fbc0010 	lw	gp,16(sp)
  48432c:	00000000 	nop
  484330:	1000ffc1 	b	484238 <addrtot+0x100>
  484334:	00000000 	nop
  484338:	8fa40068 	lw	a0,104(sp)
  48433c:	02002821 	move	a1,s0
  484340:	27a60018 	addiu	a2,sp,24
  484344:	27a7006c 	addiu	a3,sp,108
  484348:	8f998048 	lw	t9,-32696(gp)
  48434c:	00000000 	nop
  484350:	27393f20 	addiu	t9,t9,16160
  484354:	00000000 	nop
  484358:	0320f809 	jalr	t9
  48435c:	00000000 	nop
  484360:	8fbc0010 	lw	gp,16(sp)
  484364:	00000000 	nop
  484368:	1000ffb3 	b	484238 <addrtot+0x100>
  48436c:	00000000 	nop

00484370 <normal4>:
  484370:	3c1c0fb9 	lui	gp,0xfb9
  484374:	279c8600 	addiu	gp,gp,-31232
  484378:	0399e021 	addu	gp,gp,t9
  48437c:	27bdffc0 	addiu	sp,sp,-64
  484380:	afbc0010 	sw	gp,16(sp)
  484384:	afb5002c 	sw	s5,44(sp)
  484388:	0080a821 	move	s5,a0
  48438c:	24040004 	li	a0,4
  484390:	afb60030 	sw	s6,48(sp)
  484394:	afb20020 	sw	s2,32(sp)
  484398:	afbf0038 	sw	ra,56(sp)
  48439c:	afbc0034 	sw	gp,52(sp)
  4843a0:	afb40028 	sw	s4,40(sp)
  4843a4:	afb30024 	sw	s3,36(sp)
  4843a8:	afb1001c 	sw	s1,28(sp)
  4843ac:	afb00018 	sw	s0,24(sp)
  4843b0:	00c09021 	move	s2,a2
  4843b4:	00e0b021 	move	s6,a3
  4843b8:	10a4000b 	beq	a1,a0,4843e8 <normal4+0x78>
  4843bc:	00001021 	move	v0,zero
  4843c0:	8fbf0038 	lw	ra,56(sp)
  4843c4:	8fb60030 	lw	s6,48(sp)
  4843c8:	8fb5002c 	lw	s5,44(sp)
  4843cc:	8fb40028 	lw	s4,40(sp)
  4843d0:	8fb30024 	lw	s3,36(sp)
  4843d4:	8fb20020 	lw	s2,32(sp)
  4843d8:	8fb1001c 	lw	s1,28(sp)
  4843dc:	8fb00018 	lw	s0,24(sp)
  4843e0:	03e00008 	jr	ra
  4843e4:	27bd0040 	addiu	sp,sp,64
  4843e8:	02408021 	move	s0,s2
  4843ec:	00008821 	move	s1,zero
  4843f0:	24140003 	li	s4,3
  4843f4:	2413002e 	li	s3,46
  4843f8:	02b11821 	addu	v1,s5,s1
  4843fc:	90640000 	lbu	a0,0(v1)
  484400:	02003021 	move	a2,s0
  484404:	2405000a 	li	a1,10
  484408:	24070004 	li	a3,4
  48440c:	8f9981a8 	lw	t9,-32344(gp)
  484410:	00000000 	nop
  484414:	0320f809 	jalr	t9
  484418:	00000000 	nop
  48441c:	8fbc0010 	lw	gp,16(sp)
  484420:	00000000 	nop
  484424:	12340002 	beq	s1,s4,484430 <normal4+0xc0>
  484428:	02028021 	addu	s0,s0,v0
  48442c:	a213ffff 	sb	s3,-1(s0)
  484430:	26310001 	addiu	s1,s1,1
  484434:	2a240004 	slti	a0,s1,4
  484438:	1480fff0 	bnez	a0,4843fc <normal4+0x8c>
  48443c:	02b11821 	addu	v1,s5,s1
  484440:	02121023 	subu	v0,s0,s2
  484444:	1000ffde 	b	4843c0 <normal4+0x50>
  484448:	aed20000 	sw	s2,0(s6)

0048444c <reverse4>:
  48444c:	3c1c0fb9 	lui	gp,0xfb9
  484450:	279c8524 	addiu	gp,gp,-31452
  484454:	0399e021 	addu	gp,gp,t9
  484458:	27bdffc8 	addiu	sp,sp,-56
  48445c:	afbc0010 	sw	gp,16(sp)
  484460:	afb40028 	sw	s4,40(sp)
  484464:	0080a021 	move	s4,a0

/*
 - reverse4 - IPv4 reverse-lookup conversion
 */
static size_t			/* size of text, including NUL */
reverse4(srcp, srclen, buf, dstp)
const unsigned char *srcp;
size_t srclen;
char *buf;			/* guaranteed large enough */
char **dstp;			/* where to put result pointer */
{
	int i;
	char *p;

	if (srclen != IP4BYTES)	/* "can't happen" */
  484468:	24040004 	li	a0,4
  48446c:	afb5002c 	sw	s5,44(sp)
  484470:	afb20020 	sw	s2,32(sp)
  484474:	afbf0034 	sw	ra,52(sp)
  484478:	afbc0030 	sw	gp,48(sp)
  48447c:	afb30024 	sw	s3,36(sp)
  484480:	afb1001c 	sw	s1,28(sp)
  484484:	afb00018 	sw	s0,24(sp)
  484488:	00c09021 	move	s2,a2
  48448c:	00e0a821 	move	s5,a3
  484490:	10a4000a 	beq	a1,a0,4844bc <reverse4+0x70>
  484494:	00001021 	move	v0,zero
		return 0;
	p = buf;
	for (i = IP4BYTES-1; i >= 0; i--) {
		p += ultot(srcp[i], 10, p, PERBYTE);
		*(p-1) = '.';	/* overwrites the NUL */
	}
	strcpy(p, "IN-ADDR.ARPA.");
	*dstp = buf;
	return strlen(buf) + 1;
}
  484498:	8fbf0034 	lw	ra,52(sp)
  48449c:	8fb5002c 	lw	s5,44(sp)
  4844a0:	8fb40028 	lw	s4,40(sp)
  4844a4:	8fb30024 	lw	s3,36(sp)
  4844a8:	8fb20020 	lw	s2,32(sp)
  4844ac:	8fb1001c 	lw	s1,28(sp)
  4844b0:	8fb00018 	lw	s0,24(sp)
  4844b4:	03e00008 	jr	ra
  4844b8:	27bd0038 	addiu	sp,sp,56
  4844bc:	02408021 	move	s0,s2
  4844c0:	24110003 	li	s1,3
  4844c4:	2413002e 	li	s3,46
  4844c8:	02911821 	addu	v1,s4,s1
  4844cc:	90640000 	lbu	a0,0(v1)
  4844d0:	02003021 	move	a2,s0
  4844d4:	2405000a 	li	a1,10
  4844d8:	24070004 	li	a3,4
  4844dc:	8f9981a8 	lw	t9,-32344(gp)
  4844e0:	00000000 	nop
  4844e4:	0320f809 	jalr	t9
  4844e8:	00000000 	nop
  4844ec:	8fbc0010 	lw	gp,16(sp)
  4844f0:	02028021 	addu	s0,s0,v0
  4844f4:	2631ffff 	addiu	s1,s1,-1
  4844f8:	0621fff3 	bgez	s1,4844c8 <reverse4+0x7c>
  4844fc:	a213ffff 	sb	s3,-1(s0)
  484500:	8f85802c 	lw	a1,-32724(gp)
  484504:	00000000 	nop
  484508:	24a57e88 	addiu	a1,a1,32392
  48450c:	00000000 	nop
  484510:	80a20000 	lb	v0,0(a1)
  484514:	80a30001 	lb	v1,1(a1)
  484518:	80a40002 	lb	a0,2(a1)
  48451c:	a2020000 	sb	v0,0(s0)
  484520:	a2030001 	sb	v1,1(s0)
  484524:	a2040002 	sb	a0,2(s0)
  484528:	80a20003 	lb	v0,3(a1)
  48452c:	80a30004 	lb	v1,4(a1)
  484530:	80a40005 	lb	a0,5(a1)
  484534:	a2020003 	sb	v0,3(s0)
  484538:	a2030004 	sb	v1,4(s0)
  48453c:	a2040005 	sb	a0,5(s0)
  484540:	80a20006 	lb	v0,6(a1)
  484544:	80a30007 	lb	v1,7(a1)
  484548:	80a40008 	lb	a0,8(a1)
  48454c:	a2020006 	sb	v0,6(s0)
  484550:	a2030007 	sb	v1,7(s0)
  484554:	a2040008 	sb	a0,8(s0)
  484558:	80a20009 	lb	v0,9(a1)
  48455c:	80a3000a 	lb	v1,10(a1)
  484560:	80a4000b 	lb	a0,11(a1)
  484564:	a2020009 	sb	v0,9(s0)
  484568:	a203000a 	sb	v1,10(s0)
  48456c:	a204000b 	sb	a0,11(s0)
  484570:	80a2000c 	lb	v0,12(a1)
  484574:	80a3000d 	lb	v1,13(a1)
  484578:	a202000c 	sb	v0,12(s0)
  48457c:	a203000d 	sb	v1,13(s0)
  484580:	aeb20000 	sw	s2,0(s5)
  484584:	02402021 	move	a0,s2
  484588:	8f998188 	lw	t9,-32376(gp)
  48458c:	00000000 	nop
  484590:	0320f809 	jalr	t9
  484594:	00000000 	nop
  484598:	8fbc0010 	lw	gp,16(sp)
  48459c:	1000ffbe 	b	484498 <reverse4+0x4c>
  4845a0:	24420001 	addiu	v0,v0,1

004845a4 <reverse6>:
  4845a4:	3c1c0fb9 	lui	gp,0xfb9
  4845a8:	279c83cc 	addiu	gp,gp,-31796
  4845ac:	0399e021 	addu	gp,gp,t9
  4845b0:	27bdffc8 	addiu	sp,sp,-56
  4845b4:	afbc0018 	sw	gp,24(sp)
  4845b8:	afb00020 	sw	s0,32(sp)
  4845bc:	00c08021 	move	s0,a2

/*
 - reverse62 - obsolete IPv6 reverse-lookup conversion (RFC 1886)
 * A trifle inefficient, really shouldn't use ultot...
 */
static size_t			/* size of text, including NUL */
reverse62(srcp, srclen, buf, dstp)
const unsigned char *srcp;
size_t srclen;
char *buf;			/* guaranteed large enough */
char **dstp;			/* where to put result pointer */
{
	int i;
	unsigned long piece;
	char *p;

	if (srclen != IP6BYTES)	/* "can't happen" */
		return 0;
	p = buf;
	for (i = IP6BYTES-1; i >= 0; i--) {
		piece = srcp[i];
		p += ultot(piece&0xf, 16, p, 2);
		*(p-1) = '.';
		p += ultot(piece>>4, 16, p, 2);
		*(p-1) = '.';
	}
	strcpy(p, "IP6.INT.");
	*dstp = buf;
	return strlen(buf) + 1;
}

/*
 - reverse6 - modern IPv6 reverse-lookup conversion (RFC 2874)
 */
static size_t			/* size of text, including NUL */
reverse6(srcp, srclen, buf, dstp)
const unsigned char *srcp;
size_t srclen;
char *buf;			/* guaranteed large enough */
char **dstp;			/* where to put result pointer */
{
	char *p;

	if (srclen != IP6BYTES)	/* "can't happen" */
  4845c0:	24060010 	li	a2,16
  4845c4:	afb20028 	sw	s2,40(sp)
  4845c8:	afb10024 	sw	s1,36(sp)
  4845cc:	afbf0030 	sw	ra,48(sp)
  4845d0:	00808821 	move	s1,a0
  4845d4:	afbc002c 	sw	gp,44(sp)
  4845d8:	00e09021 	move	s2,a3
  4845dc:	02002021 	move	a0,s0
  4845e0:	10a60007 	beq	a1,a2,484600 <reverse6+0x5c>
  4845e4:	00001021 	move	v0,zero
		return 0;
	strcpy(buf, "\\[x");
	p = buf + strlen(buf);
	(void) datatot((const char *)srcp, srclen, 16, p, IP6BYTES*2 + 1);
	strcat(buf, "].IP6.ARPA.");	/* leave count implicit */
	*dstp = buf;
	return strlen(buf) + 1;
}
  4845e8:	8fbf0030 	lw	ra,48(sp)
  4845ec:	8fb20028 	lw	s2,40(sp)
  4845f0:	8fb10024 	lw	s1,36(sp)
  4845f4:	8fb00020 	lw	s0,32(sp)
  4845f8:	03e00008 	jr	ra
  4845fc:	27bd0038 	addiu	sp,sp,56
  484600:	8f86802c 	lw	a2,-32724(gp)
  484604:	00000000 	nop
  484608:	24c67e98 	addiu	a2,a2,32408
  48460c:	00000000 	nop
  484610:	80c20000 	lb	v0,0(a2)
  484614:	80c30001 	lb	v1,1(a2)
  484618:	80c50002 	lb	a1,2(a2)
  48461c:	a2020000 	sb	v0,0(s0)
  484620:	a2030001 	sb	v1,1(s0)
  484624:	a2050002 	sb	a1,2(s0)
  484628:	80c20003 	lb	v0,3(a2)
  48462c:	00000000 	nop
  484630:	a2020003 	sb	v0,3(s0)
  484634:	8f998188 	lw	t9,-32376(gp)
  484638:	00000000 	nop
  48463c:	0320f809 	jalr	t9
  484640:	00000000 	nop
  484644:	8fbc0018 	lw	gp,24(sp)
  484648:	02022021 	addu	a0,s0,v0
  48464c:	00803821 	move	a3,a0
  484650:	24030021 	li	v1,33
  484654:	24060010 	li	a2,16
  484658:	02202021 	move	a0,s1
  48465c:	24050010 	li	a1,16
  484660:	afa30010 	sw	v1,16(sp)
  484664:	8f9980a4 	lw	t9,-32604(gp)
  484668:	00000000 	nop
  48466c:	0320f809 	jalr	t9
  484670:	00000000 	nop
  484674:	8fbc0018 	lw	gp,24(sp)
  484678:	00000000 	nop
  48467c:	8f85802c 	lw	a1,-32724(gp)
  484680:	00000000 	nop
  484684:	24a57e9c 	addiu	a1,a1,32412
  484688:	02002021 	move	a0,s0
  48468c:	8f998778 	lw	t9,-30856(gp)
  484690:	00000000 	nop
  484694:	0320f809 	jalr	t9
  484698:	00000000 	nop
  48469c:	8fbc0018 	lw	gp,24(sp)
  4846a0:	00000000 	nop
  4846a4:	ae500000 	sw	s0,0(s2)
  4846a8:	02002021 	move	a0,s0
  4846ac:	8f998188 	lw	t9,-32376(gp)
  4846b0:	00000000 	nop
  4846b4:	0320f809 	jalr	t9
  4846b8:	00000000 	nop
  4846bc:	8fbc0018 	lw	gp,24(sp)
  4846c0:	1000ffc9 	b	4845e8 <reverse6+0x44>
  4846c4:	24420001 	addiu	v0,v0,1

004846c8 <reverse62>:
  4846c8:	3c1c0fb9 	lui	gp,0xfb9
  4846cc:	279c82a8 	addiu	gp,gp,-32088
  4846d0:	0399e021 	addu	gp,gp,t9
  4846d4:	27bdffc0 	addiu	sp,sp,-64
  4846d8:	afbc0010 	sw	gp,16(sp)
  4846dc:	afb5002c 	sw	s5,44(sp)
  4846e0:	0080a821 	move	s5,a0
  4846e4:	24040010 	li	a0,16
  4846e8:	afb60030 	sw	s6,48(sp)
  4846ec:	afb40028 	sw	s4,40(sp)
  4846f0:	afbf0038 	sw	ra,56(sp)
  4846f4:	afbc0034 	sw	gp,52(sp)
  4846f8:	afb30024 	sw	s3,36(sp)
  4846fc:	afb20020 	sw	s2,32(sp)
  484700:	afb1001c 	sw	s1,28(sp)
  484704:	afb00018 	sw	s0,24(sp)
  484708:	00c0a021 	move	s4,a2
  48470c:	00e0b021 	move	s6,a3
  484710:	10a4000b 	beq	a1,a0,484740 <reverse62+0x78>
  484714:	00001021 	move	v0,zero
  484718:	8fbf0038 	lw	ra,56(sp)
  48471c:	8fb60030 	lw	s6,48(sp)
  484720:	8fb5002c 	lw	s5,44(sp)
  484724:	8fb40028 	lw	s4,40(sp)
  484728:	8fb30024 	lw	s3,36(sp)
  48472c:	8fb20020 	lw	s2,32(sp)
  484730:	8fb1001c 	lw	s1,28(sp)
  484734:	8fb00018 	lw	s0,24(sp)
  484738:	03e00008 	jr	ra
  48473c:	27bd0040 	addiu	sp,sp,64
  484740:	02808821 	move	s1,s4
  484744:	2412000f 	li	s2,15
  484748:	2413002e 	li	s3,46
  48474c:	02b21821 	addu	v1,s5,s2
  484750:	90700000 	lbu	s0,0(v1)
  484754:	00000000 	nop
  484758:	02203021 	move	a2,s1
  48475c:	3204000f 	andi	a0,s0,0xf
  484760:	24050010 	li	a1,16
  484764:	24070002 	li	a3,2
  484768:	8f9981a8 	lw	t9,-32344(gp)
  48476c:	00000000 	nop
  484770:	0320f809 	jalr	t9
  484774:	00000000 	nop
  484778:	8fbc0010 	lw	gp,16(sp)
  48477c:	02228821 	addu	s1,s1,v0
  484780:	00101102 	srl	v0,s0,0x4
  484784:	a233ffff 	sb	s3,-1(s1)
  484788:	02203021 	move	a2,s1
  48478c:	00402021 	move	a0,v0
  484790:	24050010 	li	a1,16
  484794:	24070002 	li	a3,2
  484798:	8f9981a8 	lw	t9,-32344(gp)
  48479c:	00000000 	nop
  4847a0:	0320f809 	jalr	t9
  4847a4:	00000000 	nop
  4847a8:	8fbc0010 	lw	gp,16(sp)
  4847ac:	02228821 	addu	s1,s1,v0
  4847b0:	2652ffff 	addiu	s2,s2,-1
  4847b4:	0641ffe5 	bgez	s2,48474c <reverse62+0x84>
  4847b8:	a233ffff 	sb	s3,-1(s1)
  4847bc:	8f85802c 	lw	a1,-32724(gp)
  4847c0:	00000000 	nop
  4847c4:	24a57ea8 	addiu	a1,a1,32424
  4847c8:	00000000 	nop
  4847cc:	80a20000 	lb	v0,0(a1)
  4847d0:	80a30001 	lb	v1,1(a1)
  4847d4:	80a40002 	lb	a0,2(a1)
  4847d8:	a2220000 	sb	v0,0(s1)
  4847dc:	a2230001 	sb	v1,1(s1)
  4847e0:	a2240002 	sb	a0,2(s1)
  4847e4:	80a20003 	lb	v0,3(a1)
  4847e8:	80a30004 	lb	v1,4(a1)
  4847ec:	80a40005 	lb	a0,5(a1)
  4847f0:	a2220003 	sb	v0,3(s1)
  4847f4:	a2230004 	sb	v1,4(s1)
  4847f8:	a2240005 	sb	a0,5(s1)
  4847fc:	80a20006 	lb	v0,6(a1)
  484800:	80a30007 	lb	v1,7(a1)
  484804:	80a40008 	lb	a0,8(a1)
  484808:	a2220006 	sb	v0,6(s1)
  48480c:	a2230007 	sb	v1,7(s1)
  484810:	a2240008 	sb	a0,8(s1)
  484814:	aed40000 	sw	s4,0(s6)
  484818:	02802021 	move	a0,s4
  48481c:	8f998188 	lw	t9,-32376(gp)
  484820:	00000000 	nop
  484824:	0320f809 	jalr	t9
  484828:	00000000 	nop
  48482c:	8fbc0010 	lw	gp,16(sp)
  484830:	1000ffb9 	b	484718 <reverse62+0x50>
  484834:	24420001 	addiu	v0,v0,1
	...

00484840 <addrtypeof>:
  484840:	3c1c0fb9 	lui	gp,0xfb9
  484844:	279c8130 	addiu	gp,gp,-32464
  484848:	0399e021 	addu	gp,gp,t9
int
addrtypeof(src)
const ip_address *src;
{
	return src->u.v4.sin_family;
  48484c:	94820000 	lhu	v0,0(a0)
  484850:	03e00008 	jr	ra
  484854:	00000000 	nop

00484858 <addrlenof>:
  484858:	3c1c0fb9 	lui	gp,0xfb9
  48485c:	279c8118 	addiu	gp,gp,-32488
  484860:	0399e021 	addu	gp,gp,t9
}

/*
 - addrbytesptr - get pointer to the address bytes of an ip_address
 */
size_t				/* 0 for error */
addrbytesptr(src, dstp)
const ip_address *src;
const unsigned char **dstp;	/* NULL means just a size query */
{
	const unsigned char *p;
	size_t n;

	switch (src->u.v4.sin_family) {
  484864:	94830000 	lhu	v1,0(a0)
  484868:	24050002 	li	a1,2
  48486c:	10650004 	beq	v1,a1,484880 <addrlenof+0x28>
  484870:	24040004 	li	a0,4
  484874:	2405000a 	li	a1,10
  484878:	10650003 	beq	v1,a1,484888 <addrlenof+0x30>
  48487c:	00002021 	move	a0,zero
	case AF_INET:
		p = (const unsigned char *)&src->u.v4.sin_addr.s_addr;
		n = 4;
		break;
	case AF_INET6:
		p = (const unsigned char *)&src->u.v6.sin6_addr;
		n = 16;
		break;
	default:
		return 0;
		break;
	}

	if (dstp != NULL)
		*dstp = p;
	return n;
}

/*
 - addrlenof - get length of the address bytes of an ip_address
 */
size_t				/* 0 for error */
addrlenof(src)
const ip_address *src;
{
	return addrbytesptr(src, NULL);
  484880:	03e00008 	jr	ra
  484884:	00801021 	move	v0,a0
  484888:	1000fffd 	b	484880 <addrlenof+0x28>
  48488c:	24040010 	li	a0,16

00484890 <addrbytesptr>:
  484890:	3c1c0fb9 	lui	gp,0xfb9
  484894:	279c80e0 	addiu	gp,gp,-32544
  484898:	0399e021 	addu	gp,gp,t9
  48489c:	94860000 	lhu	a2,0(a0)
  4848a0:	24080002 	li	t0,2
  4848a4:	24830004 	addiu	v1,a0,4
  4848a8:	10c80008 	beq	a2,t0,4848cc <addrbytesptr+0x3c>
  4848ac:	24070004 	li	a3,4
  4848b0:	2407000a 	li	a3,10
  4848b4:	10c70003 	beq	a2,a3,4848c4 <addrbytesptr+0x34>
  4848b8:	00001021 	move	v0,zero
  4848bc:	03e00008 	jr	ra
  4848c0:	00000000 	nop
  4848c4:	24830008 	addiu	v1,a0,8
  4848c8:	24070010 	li	a3,16
  4848cc:	10a00002 	beqz	a1,4848d8 <addrbytesptr+0x48>
  4848d0:	00000000 	nop
  4848d4:	aca30000 	sw	v1,0(a1)
  4848d8:	03e00008 	jr	ra
  4848dc:	00e01021 	move	v0,a3

004848e0 <addrbytesof>:
  4848e0:	3c1c0fb9 	lui	gp,0xfb9
  4848e4:	279c8090 	addiu	gp,gp,-32624
  4848e8:	0399e021 	addu	gp,gp,t9
  4848ec:	27bdffd0 	addiu	sp,sp,-48
  4848f0:	afbc0010 	sw	gp,16(sp)
  4848f4:	afbf0028 	sw	ra,40(sp)
  4848f8:	afbc0024 	sw	gp,36(sp)
  4848fc:	afb00020 	sw	s0,32(sp)
  484900:	94830000 	lhu	v1,0(a0)
  484904:	24080002 	li	t0,2
}

/*
 - addrbytesof - get the address bytes of an ip_address
 */
size_t				/* 0 for error */
addrbytesof(src, dst, dstlen)
const ip_address *src;
unsigned char *dst;
size_t dstlen;
{
  484908:	00c03821 	move	a3,a2
  48490c:	1068001f 	beq	v1,t0,48498c <addrbytesof+0xac>
  484910:	27a60018 	addiu	a2,sp,24
  484914:	2408000a 	li	t0,10
  484918:	10680015 	beq	v1,t0,484970 <addrbytesof+0x90>
  48491c:	00008021 	move	s0,zero
	const unsigned char *p;
	size_t n;
	size_t ncopy;

	n = addrbytesptr(src, &p);
	if (n == 0)
  484920:	1200000f 	beqz	s0,484960 <addrbytesof+0x80>
  484924:	00001021 	move	v0,zero
		return 0;

	if (dstlen > 0) {
  484928:	10e0000c 	beqz	a3,48495c <addrbytesof+0x7c>
  48492c:	00f0182b 	sltu	v1,a3,s0
		ncopy = n;
		if (ncopy > dstlen)
  484930:	10600002 	beqz	v1,48493c <addrbytesof+0x5c>
  484934:	02003021 	move	a2,s0
			ncopy = dstlen;
  484938:	00e03021 	move	a2,a3
		memcpy(dst, p, ncopy);
  48493c:	00a02021 	move	a0,a1
  484940:	8fa50018 	lw	a1,24(sp)
  484944:	8f998a30 	lw	t9,-30160(gp)
  484948:	00000000 	nop
  48494c:	0320f809 	jalr	t9
  484950:	00000000 	nop
  484954:	8fbc0010 	lw	gp,16(sp)
  484958:	00000000 	nop
	}
	return n;
  48495c:	02001021 	move	v0,s0
}
  484960:	8fbf0028 	lw	ra,40(sp)
  484964:	8fb00020 	lw	s0,32(sp)
  484968:	03e00008 	jr	ra
  48496c:	27bd0030 	addiu	sp,sp,48
  484970:	24840008 	addiu	a0,a0,8
  484974:	24020010 	li	v0,16
  484978:	10c00002 	beqz	a2,484984 <addrbytesof+0xa4>
  48497c:	00000000 	nop
  484980:	acc40000 	sw	a0,0(a2)
  484984:	1000ffe6 	b	484920 <addrbytesof+0x40>
  484988:	00408021 	move	s0,v0
  48498c:	24840004 	addiu	a0,a0,4
  484990:	1000fff9 	b	484978 <addrbytesof+0x98>
  484994:	24020004 	li	v0,4
	...

004849a0 <loopbackaddr>:
  4849a0:	3c1c0fb8 	lui	gp,0xfb8
  4849a4:	279c7fd0 	addiu	gp,gp,32720
  4849a8:	0399e021 	addu	gp,gp,t9
  4849ac:	27bdffd8 	addiu	sp,sp,-40
  4849b0:	afbc0010 	sw	gp,16(sp)
loopbackaddr(af, dst)
int af;				/* address family */
ip_address *dst;
{
	uint32_t v4loop = htonl(INADDR_LOOPBACK);
  4849b4:	3c077f00 	lui	a3,0x7f00
  4849b8:	34e30001 	ori	v1,a3,0x1
  4849bc:	00a01021 	move	v0,a1
  4849c0:	00804021 	move	t0,a0
  4849c4:	afa30018 	sw	v1,24(sp)

	switch (af) {
  4849c8:	24030002 	li	v1,2
  4849cc:	afbf0024 	sw	ra,36(sp)
  4849d0:	afbc0020 	sw	gp,32(sp)
  4849d4:	24060002 	li	a2,2
  4849d8:	27a40018 	addiu	a0,sp,24
  4849dc:	00403821 	move	a3,v0
  4849e0:	11030010 	beq	t0,v1,484a24 <loopbackaddr+0x84>
  4849e4:	24050004 	li	a1,4
  4849e8:	2409000a 	li	t1,10
  4849ec:	8f848018 	lw	a0,-32744(gp)
  4849f0:	00000000 	nop
  4849f4:	24844230 	addiu	a0,a0,16944
  4849f8:	24050010 	li	a1,16
  4849fc:	11090009 	beq	t0,t1,484a24 <loopbackaddr+0x84>
  484a00:	2406000a 	li	a2,10
	case AF_INET:
		return initaddr((unsigned char *)&v4loop, sizeof(v4loop), af, dst);
		break;
	case AF_INET6:
		return initaddr((unsigned char *)&v6loop, sizeof(v6loop), af, dst);
		break;
	default:
		return "unknown address family in loopbackaddr";
  484a04:	8f82802c 	lw	v0,-32724(gp)
  484a08:	00000000 	nop
  484a0c:	24427ec0 	addiu	v0,v0,32448
  484a10:	00000000 	nop
		break;
	}
}
  484a14:	8fbf0024 	lw	ra,36(sp)
  484a18:	00000000 	nop
  484a1c:	03e00008 	jr	ra
  484a20:	27bd0028 	addiu	sp,sp,40
  484a24:	8f998b78 	lw	t9,-29832(gp)
  484a28:	00000000 	nop
  484a2c:	0320f809 	jalr	t9
  484a30:	00000000 	nop
  484a34:	8fbc0010 	lw	gp,16(sp)
  484a38:	1000fff6 	b	484a14 <loopbackaddr+0x74>
  484a3c:	00000000 	nop

00484a40 <unspecaddr>:
  484a40:	3c1c0fb8 	lui	gp,0xfb8
  484a44:	279c7f30 	addiu	gp,gp,32560
  484a48:	0399e021 	addu	gp,gp,t9
  484a4c:	27bdffd8 	addiu	sp,sp,-40
  484a50:	afbc0010 	sw	gp,16(sp)
  484a54:	00a01021 	move	v0,a1
  484a58:	00804021 	move	t0,a0
  484a5c:	24030002 	li	v1,2
  484a60:	afbf0024 	sw	ra,36(sp)
  484a64:	afbc0020 	sw	gp,32(sp)
  484a68:	24060002 	li	a2,2
  484a6c:	27a40018 	addiu	a0,sp,24
  484a70:	00403821 	move	a3,v0
  484a74:	24050004 	li	a1,4
  484a78:	11030010 	beq	t0,v1,484abc <unspecaddr+0x7c>
  484a7c:	afa00018 	sw	zero,24(sp)
  484a80:	2403000a 	li	v1,10
  484a84:	8f848018 	lw	a0,-32744(gp)
  484a88:	00000000 	nop
  484a8c:	24844220 	addiu	a0,a0,16928
  484a90:	24050010 	li	a1,16
  484a94:	11030009 	beq	t0,v1,484abc <unspecaddr+0x7c>
  484a98:	2406000a 	li	a2,10
  484a9c:	8f82802c 	lw	v0,-32724(gp)
  484aa0:	00000000 	nop
  484aa4:	24427ee8 	addiu	v0,v0,32488
  484aa8:	00000000 	nop
  484aac:	8fbf0024 	lw	ra,36(sp)
  484ab0:	00000000 	nop
  484ab4:	03e00008 	jr	ra
  484ab8:	27bd0028 	addiu	sp,sp,40
  484abc:	8f998b78 	lw	t9,-29832(gp)
  484ac0:	00000000 	nop
  484ac4:	0320f809 	jalr	t9
  484ac8:	00000000 	nop
  484acc:	8fbc0010 	lw	gp,16(sp)
  484ad0:	1000fff6 	b	484aac <unspecaddr+0x6c>
  484ad4:	00000000 	nop

00484ad8 <anyaddr>:
  484ad8:	3c1c0fb8 	lui	gp,0xfb8
  484adc:	279c7e98 	addiu	gp,gp,32408
  484ae0:	0399e021 	addu	gp,gp,t9
  484ae4:	27bdffd8 	addiu	sp,sp,-40
  484ae8:	afbc0010 	sw	gp,16(sp)
  484aec:	00a01021 	move	v0,a1
  484af0:	00804021 	move	t0,a0
  484af4:	24030002 	li	v1,2
  484af8:	afbf0024 	sw	ra,36(sp)
  484afc:	afbc0020 	sw	gp,32(sp)
  484b00:	24060002 	li	a2,2
  484b04:	27a40018 	addiu	a0,sp,24
  484b08:	00403821 	move	a3,v0
  484b0c:	24050004 	li	a1,4
  484b10:	11030010 	beq	t0,v1,484b54 <anyaddr+0x7c>
  484b14:	afa00018 	sw	zero,24(sp)
  484b18:	2403000a 	li	v1,10
  484b1c:	8f848018 	lw	a0,-32744(gp)
  484b20:	00000000 	nop
  484b24:	24844220 	addiu	a0,a0,16928
  484b28:	24050010 	li	a1,16
  484b2c:	11030009 	beq	t0,v1,484b54 <anyaddr+0x7c>
  484b30:	2406000a 	li	a2,10
  484b34:	8f82802c 	lw	v0,-32724(gp)
  484b38:	00000000 	nop
  484b3c:	24427ee8 	addiu	v0,v0,32488
  484b40:	00000000 	nop
  484b44:	8fbf0024 	lw	ra,36(sp)
  484b48:	00000000 	nop
  484b4c:	03e00008 	jr	ra
  484b50:	27bd0028 	addiu	sp,sp,40
  484b54:	8f998b78 	lw	t9,-29832(gp)
  484b58:	00000000 	nop
  484b5c:	0320f809 	jalr	t9
  484b60:	00000000 	nop
  484b64:	8fbc0010 	lw	gp,16(sp)
  484b68:	1000fff6 	b	484b44 <anyaddr+0x6c>
  484b6c:	00000000 	nop

00484b70 <isanyaddr>:
  484b70:	3c1c0fb8 	lui	gp,0xfb8
  484b74:	279c7e00 	addiu	gp,gp,32256
  484b78:	0399e021 	addu	gp,gp,t9
  484b7c:	27bdffd8 	addiu	sp,sp,-40
  484b80:	afbc0010 	sw	gp,16(sp)
  484b84:	00801821 	move	v1,a0
  484b88:	afbf0024 	sw	ra,36(sp)
  484b8c:	afbc0020 	sw	gp,32(sp)

/*
 - isanyaddr - test for the any-address value
 */
int
isanyaddr(src)
const ip_address *src;
{
	uint32_t v4any = htonl(INADDR_ANY);
	int cmp;

	switch (src->u.v4.sin_family) {
  484b90:	94670000 	lhu	a3,0(v1)
  484b94:	24080002 	li	t0,2
  484b98:	24640004 	addiu	a0,v1,4
  484b9c:	27a50018 	addiu	a1,sp,24
  484ba0:	24060004 	li	a2,4
  484ba4:	10e80015 	beq	a3,t0,484bfc <isanyaddr+0x8c>
  484ba8:	afa00018 	sw	zero,24(sp)
  484bac:	2408000a 	li	t0,10
  484bb0:	24640008 	addiu	a0,v1,8
  484bb4:	8f858018 	lw	a1,-32744(gp)
  484bb8:	00000000 	nop
  484bbc:	24a54220 	addiu	a1,a1,16928
  484bc0:	00001021 	move	v0,zero
  484bc4:	10e80005 	beq	a3,t0,484bdc <isanyaddr+0x6c>
  484bc8:	24060010 	li	a2,16
	case AF_INET:
		cmp = memcmp(&src->u.v4.sin_addr.s_addr, &v4any, sizeof(v4any));
		break;
	case AF_INET6:
		cmp = memcmp(&src->u.v6.sin6_addr, &v6any, sizeof(v6any));
		break;
	default:
		return 0;
		break;
	}

	return (cmp == 0) ? 1 : 0;
}
  484bcc:	8fbf0024 	lw	ra,36(sp)
  484bd0:	00000000 	nop
  484bd4:	03e00008 	jr	ra
  484bd8:	27bd0028 	addiu	sp,sp,40
  484bdc:	8f9985c8 	lw	t9,-31288(gp)
  484be0:	00000000 	nop
  484be4:	0320f809 	jalr	t9
  484be8:	00000000 	nop
  484bec:	8fbc0010 	lw	gp,16(sp)
  484bf0:	00000000 	nop
  484bf4:	1000fff5 	b	484bcc <isanyaddr+0x5c>
  484bf8:	2c420001 	sltiu	v0,v0,1
  484bfc:	8f9985c8 	lw	t9,-31288(gp)
  484c00:	00000000 	nop
  484c04:	0320f809 	jalr	t9
  484c08:	00000000 	nop
  484c0c:	8fbc0010 	lw	gp,16(sp)
  484c10:	00000000 	nop
  484c14:	1000ffed 	b	484bcc <isanyaddr+0x5c>
  484c18:	2c420001 	sltiu	v0,v0,1

00484c1c <isunspecaddr>:
  484c1c:	3c1c0fb8 	lui	gp,0xfb8
  484c20:	279c7d54 	addiu	gp,gp,32084
  484c24:	0399e021 	addu	gp,gp,t9
  484c28:	27bdffd8 	addiu	sp,sp,-40
  484c2c:	afbc0010 	sw	gp,16(sp)
  484c30:	00801821 	move	v1,a0
  484c34:	afbf0024 	sw	ra,36(sp)
  484c38:	afbc0020 	sw	gp,32(sp)
  484c3c:	94670000 	lhu	a3,0(v1)
  484c40:	24080002 	li	t0,2

/*
 - isunspecaddr - test for the unspecified-address value
 */
int
isunspecaddr(src)
const ip_address *src;
{
  484c44:	24640004 	addiu	a0,v1,4
  484c48:	27a50018 	addiu	a1,sp,24
  484c4c:	24060004 	li	a2,4
  484c50:	10e80015 	beq	a3,t0,484ca8 <isunspecaddr+0x8c>
  484c54:	afa00018 	sw	zero,24(sp)
  484c58:	2408000a 	li	t0,10
  484c5c:	24640008 	addiu	a0,v1,8
  484c60:	8f858018 	lw	a1,-32744(gp)
  484c64:	00000000 	nop
  484c68:	24a54220 	addiu	a1,a1,16928
  484c6c:	00001821 	move	v1,zero
  484c70:	10e80005 	beq	a3,t0,484c88 <isunspecaddr+0x6c>
  484c74:	24060010 	li	a2,16
	return isanyaddr(src);
  484c78:	8fbf0024 	lw	ra,36(sp)
  484c7c:	00601021 	move	v0,v1
  484c80:	03e00008 	jr	ra
  484c84:	27bd0028 	addiu	sp,sp,40
  484c88:	8f9985c8 	lw	t9,-31288(gp)
  484c8c:	00000000 	nop
  484c90:	0320f809 	jalr	t9
  484c94:	00000000 	nop
  484c98:	8fbc0010 	lw	gp,16(sp)
  484c9c:	00000000 	nop
  484ca0:	1000fff5 	b	484c78 <isunspecaddr+0x5c>
  484ca4:	2c430001 	sltiu	v1,v0,1
  484ca8:	8f9985c8 	lw	t9,-31288(gp)
  484cac:	00000000 	nop
  484cb0:	0320f809 	jalr	t9
  484cb4:	00000000 	nop
  484cb8:	8fbc0010 	lw	gp,16(sp)
  484cbc:	00000000 	nop
  484cc0:	1000ffed 	b	484c78 <isunspecaddr+0x5c>
  484cc4:	2c430001 	sltiu	v1,v0,1

00484cc8 <isloopbackaddr>:
  484cc8:	3c1c0fb8 	lui	gp,0xfb8
  484ccc:	279c7ca8 	addiu	gp,gp,31912
  484cd0:	0399e021 	addu	gp,gp,t9
  484cd4:	27bdffd8 	addiu	sp,sp,-40
  484cd8:	afbc0010 	sw	gp,16(sp)
  484cdc:	00803821 	move	a3,a0
  484ce0:	afbf0024 	sw	ra,36(sp)
  484ce4:	afbc0020 	sw	gp,32(sp)
}

/*
 - isloopbackaddr - test for the loopback-address value
 */
int
isloopbackaddr(src)
const ip_address *src;
{
	uint32_t v4loop = htonl(INADDR_LOOPBACK);
	int cmp;

	switch (src->u.v4.sin_family) {
  484ce8:	94e80000 	lhu	t0,0(a3)
  484cec:	00000000 	nop
  484cf0:	3c097f00 	lui	t1,0x7f00
  484cf4:	35230001 	ori	v1,t1,0x1
  484cf8:	24020002 	li	v0,2
  484cfc:	24e40004 	addiu	a0,a3,4
  484d00:	27a50018 	addiu	a1,sp,24
  484d04:	24060004 	li	a2,4
  484d08:	11020015 	beq	t0,v0,484d60 <isloopbackaddr+0x98>
  484d0c:	afa30018 	sw	v1,24(sp)
  484d10:	24e40008 	addiu	a0,a3,8
  484d14:	2407000a 	li	a3,10
  484d18:	8f858018 	lw	a1,-32744(gp)
  484d1c:	00000000 	nop
  484d20:	24a54230 	addiu	a1,a1,16944
  484d24:	00001021 	move	v0,zero
  484d28:	11070005 	beq	t0,a3,484d40 <isloopbackaddr+0x78>
  484d2c:	24060010 	li	a2,16
	case AF_INET:
		cmp = memcmp(&src->u.v4.sin_addr.s_addr, &v4loop, sizeof(v4loop));
		break;
	case AF_INET6:
		cmp = memcmp(&src->u.v6.sin6_addr, &v6loop, sizeof(v6loop));
		break;
	default:
		return 0;
		break;
	}

	return (cmp == 0) ? 1 : 0;
}
  484d30:	8fbf0024 	lw	ra,36(sp)
  484d34:	00000000 	nop
  484d38:	03e00008 	jr	ra
  484d3c:	27bd0028 	addiu	sp,sp,40
  484d40:	8f9985c8 	lw	t9,-31288(gp)
  484d44:	00000000 	nop
  484d48:	0320f809 	jalr	t9
  484d4c:	00000000 	nop
  484d50:	8fbc0010 	lw	gp,16(sp)
  484d54:	00000000 	nop
  484d58:	1000fff5 	b	484d30 <isloopbackaddr+0x68>
  484d5c:	2c420001 	sltiu	v0,v0,1
  484d60:	8f9985c8 	lw	t9,-31288(gp)
  484d64:	00000000 	nop
  484d68:	0320f809 	jalr	t9
  484d6c:	00000000 	nop
  484d70:	8fbc0010 	lw	gp,16(sp)
  484d74:	00000000 	nop
  484d78:	1000ffed 	b	484d30 <isloopbackaddr+0x68>
  484d7c:	2c420001 	sltiu	v0,v0,1

00484d80 <ipsec_copyright_notice>:
  484d80:	3c1c0fb8 	lui	gp,0xfb8
  484d84:	279c7bf0 	addiu	gp,gp,31728
  484d88:	0399e021 	addu	gp,gp,t9
 */
const char **
ipsec_copyright_notice()
{
	return co;
  484d8c:	8f828018 	lw	v0,-32744(gp)
  484d90:	00000000 	nop
  484d94:	24424240 	addiu	v0,v0,16960
  484d98:	03e00008 	jr	ra
  484d9c:	00000000 	nop

00484da0 <datatot>:
  484da0:	3c1c0fb8 	lui	gp,0xfb8
  484da4:	279c7bd0 	addiu	gp,gp,31696
  484da8:	0399e021 	addu	gp,gp,t9
  484dac:	27bdff80 	addiu	sp,sp,-128
  484db0:	afbc0010 	sw	gp,16(sp)
	char *out;
	char *prefix;

	breakevery = 0;
	breakchar = '_';
  484db4:	2403005f 	li	v1,95
  484db8:	afb60068 	sw	s6,104(sp)
  484dbc:	afa30048 	sw	v1,72(sp)
  484dc0:	00c0b021 	move	s6,a2

	switch (format) {
  484dc4:	24030040 	li	v1,64
  484dc8:	afbe0074 	sw	s8,116(sp)
  484dcc:	afb10054 	sw	s1,84(sp)
  484dd0:	afb00050 	sw	s0,80(sp)
  484dd4:	afbf0078 	sw	ra,120(sp)
  484dd8:	afbc0070 	sw	gp,112(sp)
  484ddc:	afb7006c 	sw	s7,108(sp)
  484de0:	afb50064 	sw	s5,100(sp)
  484de4:	afb40060 	sw	s4,96(sp)
  484de8:	afb3005c 	sw	s3,92(sp)
  484dec:	afb20058 	sw	s2,88(sp)
  484df0:	0080f021 	move	s8,a0
  484df4:	afa50084 	sw	a1,132(sp)
  484df8:	00e08021 	move	s0,a3
  484dfc:	8fb10090 	lw	s1,144(sp)
  484e00:	00000000 	nop
  484e04:	12c3014d 	beq	s6,v1,48533c <datatot+0x59c>
  484e08:	afa00044 	sw	zero,68(sp)
  484e0c:	2ac40041 	slti	a0,s6,65
  484e10:	10800134 	beqz	a0,4852e4 <datatot+0x544>
  484e14:	24080073 	li	t0,115
  484e18:	24050010 	li	a1,16
  484e1c:	12c50127 	beq	s6,a1,4852bc <datatot+0x51c>
  484e20:	2ac60011 	slti	a2,s6,17
  484e24:	10c0011e 	beqz	a2,4852a0 <datatot+0x500>
  484e28:	00000000 	nop
  484e2c:	12c0000f 	beqz	s6,484e6c <datatot+0xcc>
  484e30:	24020008 	li	v0,8
	case 0:
	case 'h':
		format = 'x';
		breakevery = 8;
		/* FALLTHROUGH */
	case 'x':
		inblocksize = 1;
		outblocksize = 2;
		prefix = "0x";
		break;
	case ':':
		format = 'x';
		breakevery = 2;
		breakchar = ':';
		/* FALLTHROUGH */
	case 16:
		inblocksize = 1;
		outblocksize = 2;
		prefix = "";
		format = 'x';
		break;
	case 's':
		inblocksize = 3;
		outblocksize = 4;
		prefix = "0s";
		break;
	case 64:		/* beware, equals ' ' */
		inblocksize = 3;
		outblocksize = 4;
		prefix = "";
		format = 's';
		break;
	default:
		return 0;
  484e34:	00001021 	move	v0,zero
		break;
	}
	assert(inblocksize < sizeof(inblock));
	assert(outblocksize < sizeof(outblock));
	assert(breakevery % outblocksize == 0);

	if (srclen == 0)
		return 0;
	ntodo = srclen;

	if (dstlen == 0) {	/* dispose of awkward special case */
		dst = fake;
		dstlen = 1;
	}
	stop = dst + dstlen - 1;

	nreal = strlen(prefix);
	needed = nreal;			/* for starters */
	if (dstlen <= nreal) {		/* prefix won't fit */
		strncpy(dst, prefix, dstlen - 1);
		dst += dstlen - 1;
	} else {
		strcpy(dst, prefix);
		dst += nreal;
	}
	assert(dst <= stop);
	sincebreak = 0;

	while (ntodo > 0) {
		if (ntodo < inblocksize) {	/* incomplete input */
			memset(inblock, 0, sizeof(inblock));
			memcpy(inblock, src, ntodo);
			src = inblock;
			nreal = ntodo;
			ntodo = inblocksize;
		} else
			nreal = inblocksize;
		out = (outblocksize > stop - dst) ? outblock : dst;

		convert(src, nreal, format, out);
		needed += outblocksize;
		sincebreak += outblocksize;
		if (dst < stop) {
			if (out != dst) {
				assert(outblocksize > stop - dst);
				memcpy(dst, out, stop - dst);
				dst = stop;
			} else
				dst += outblocksize;
		}

		src += inblocksize;
		ntodo -= inblocksize;
		if (breakevery != 0 && sincebreak >= breakevery && ntodo > 0) {
			if (dst < stop)
				*dst++ = breakchar;
			needed++;
			sincebreak = 0;
		}
	}

	assert(dst <= stop);
	*dst++ = '\0';
	needed++;

	return needed;
}
  484e38:	8fbf0078 	lw	ra,120(sp)
  484e3c:	8fbe0074 	lw	s8,116(sp)
  484e40:	8fb7006c 	lw	s7,108(sp)
  484e44:	8fb60068 	lw	s6,104(sp)
  484e48:	8fb50064 	lw	s5,100(sp)
  484e4c:	8fb40060 	lw	s4,96(sp)
  484e50:	8fb3005c 	lw	s3,92(sp)
  484e54:	8fb20058 	lw	s2,88(sp)
  484e58:	8fb10054 	lw	s1,84(sp)
  484e5c:	8fb00050 	lw	s0,80(sp)
  484e60:	03e00008 	jr	ra
  484e64:	27bd0080 	addiu	sp,sp,128
  484e68:	24020008 	li	v0,8
  484e6c:	24160078 	li	s6,120
  484e70:	afa20044 	sw	v0,68(sp)
  484e74:	240d0001 	li	t5,1
  484e78:	240c0002 	li	t4,2
  484e7c:	8f93804c 	lw	s3,-32692(gp)
  484e80:	00000000 	nop
  484e84:	26738220 	addiu	s3,s3,-32224
  484e88:	00000000 	nop
  484e8c:	afad003c 	sw	t5,60(sp)
  484e90:	afac0040 	sw	t4,64(sp)
  484e94:	8fb9003c 	lw	t9,60(sp)
  484e98:	00000000 	nop
  484e9c:	2f38000a 	sltiu	t8,t9,10
  484ea0:	17000010 	bnez	t8,484ee4 <datatot+0x144>
  484ea4:	24060058 	li	a2,88
  484ea8:	8f84804c 	lw	a0,-32692(gp)
  484eac:	00000000 	nop
  484eb0:	24848224 	addiu	a0,a0,-32220
  484eb4:	8f85804c 	lw	a1,-32692(gp)
  484eb8:	00000000 	nop
  484ebc:	24a58244 	addiu	a1,a1,-32188
  484ec0:	8f87804c 	lw	a3,-32692(gp)
  484ec4:	00000000 	nop
  484ec8:	24e78250 	addiu	a3,a3,-32176
  484ecc:	8f998148 	lw	t9,-32440(gp)
  484ed0:	00000000 	nop
  484ed4:	0320f809 	jalr	t9
  484ed8:	00000000 	nop
  484edc:	8fbc0010 	lw	gp,16(sp)
  484ee0:	00000000 	nop
  484ee4:	8fa50040 	lw	a1,64(sp)
  484ee8:	00000000 	nop
  484eec:	2ca3000a 	sltiu	v1,a1,10
  484ef0:	14600010 	bnez	v1,484f34 <datatot+0x194>
  484ef4:	24060059 	li	a2,89
  484ef8:	8f84804c 	lw	a0,-32692(gp)
  484efc:	00000000 	nop
  484f00:	24848258 	addiu	a0,a0,-32168
  484f04:	8f85804c 	lw	a1,-32692(gp)
  484f08:	00000000 	nop
  484f0c:	24a58244 	addiu	a1,a1,-32188
  484f10:	8f87804c 	lw	a3,-32692(gp)
  484f14:	00000000 	nop
  484f18:	24e78250 	addiu	a3,a3,-32176
  484f1c:	8f998148 	lw	t9,-32440(gp)
  484f20:	00000000 	nop
  484f24:	0320f809 	jalr	t9
  484f28:	00000000 	nop
  484f2c:	8fbc0010 	lw	gp,16(sp)
  484f30:	00000000 	nop
  484f34:	8fa70040 	lw	a3,64(sp)
  484f38:	8fa40044 	lw	a0,68(sp)
  484f3c:	14e00002 	bnez	a3,484f48 <datatot+0x1a8>
  484f40:	00000000 	nop
  484f44:	0007000d 	break	0x7
  484f48:	0087001b 	divu	zero,a0,a3
  484f4c:	00003010 	mfhi	a2
  484f50:	10c00010 	beqz	a2,484f94 <datatot+0x1f4>
  484f54:	2406005a 	li	a2,90
  484f58:	8f84804c 	lw	a0,-32692(gp)
  484f5c:	00000000 	nop
  484f60:	24848278 	addiu	a0,a0,-32136
  484f64:	8f85804c 	lw	a1,-32692(gp)
  484f68:	00000000 	nop
  484f6c:	24a58244 	addiu	a1,a1,-32188
  484f70:	8f87804c 	lw	a3,-32692(gp)
  484f74:	00000000 	nop
  484f78:	24e78250 	addiu	a3,a3,-32176
  484f7c:	8f998148 	lw	t9,-32440(gp)
  484f80:	00000000 	nop
  484f84:	0320f809 	jalr	t9
  484f88:	00000000 	nop
  484f8c:	8fbc0010 	lw	gp,16(sp)
  484f90:	00000000 	nop
  484f94:	8fa80084 	lw	t0,132(sp)
  484f98:	00000000 	nop
  484f9c:	1100ffa6 	beqz	t0,484e38 <datatot+0x98>
  484fa0:	00001021 	move	v0,zero
  484fa4:	8fb20084 	lw	s2,132(sp)
  484fa8:	00000000 	nop
  484fac:	122000b9 	beqz	s1,485294 <datatot+0x4f4>
  484fb0:	00000000 	nop
  484fb4:	02115021 	addu	t2,s0,s1
  484fb8:	02602021 	move	a0,s3
  484fbc:	2554ffff 	addiu	s4,t2,-1
  484fc0:	8f998188 	lw	t9,-32376(gp)
  484fc4:	00000000 	nop
  484fc8:	0320f809 	jalr	t9
  484fcc:	00000000 	nop
  484fd0:	8fbc0010 	lw	gp,16(sp)
  484fd4:	0040a821 	move	s5,v0
  484fd8:	02b1482b 	sltu	t1,s5,s1
  484fdc:	152000a4 	bnez	t1,485270 <datatot+0x4d0>
  484fe0:	02002021 	move	a0,s0
  484fe4:	2626ffff 	addiu	a2,s1,-1
  484fe8:	02602821 	move	a1,s3
  484fec:	8f99861c 	lw	t9,-31204(gp)
  484ff0:	00000000 	nop
  484ff4:	0320f809 	jalr	t9
  484ff8:	00000000 	nop
  484ffc:	8fbc0010 	lw	gp,16(sp)
  485000:	00000000 	nop
  485004:	02808021 	move	s0,s4
  485008:	0290882b 	sltu	s1,s4,s0
  48500c:	12200010 	beqz	s1,485050 <datatot+0x2b0>
  485010:	2406006f 	li	a2,111
  485014:	8f84804c 	lw	a0,-32692(gp)
  485018:	00000000 	nop
  48501c:	24848298 	addiu	a0,a0,-32104
  485020:	8f85804c 	lw	a1,-32692(gp)
  485024:	00000000 	nop
  485028:	24a58244 	addiu	a1,a1,-32188
  48502c:	8f87804c 	lw	a3,-32692(gp)
  485030:	00000000 	nop
  485034:	24e78250 	addiu	a3,a3,-32176
  485038:	8f998148 	lw	t9,-32440(gp)
  48503c:	00000000 	nop
  485040:	0320f809 	jalr	t9
  485044:	00000000 	nop
  485048:	8fbc0010 	lw	gp,16(sp)
  48504c:	00000000 	nop
  485050:	8fab0084 	lw	t3,132(sp)
  485054:	00000000 	nop
  485058:	1160006a 	beqz	t3,485204 <datatot+0x464>
  48505c:	0000b821 	move	s7,zero
  485060:	8fa2003c 	lw	v0,60(sp)
  485064:	00000000 	nop
  485068:	0242882b 	sltu	s1,s2,v0
  48506c:	1220007d 	beqz	s1,485264 <datatot+0x4c4>
  485070:	27ae0018 	addiu	t6,sp,24
  485074:	01c02021 	move	a0,t6
  485078:	00002821 	move	a1,zero
  48507c:	2406000a 	li	a2,10
  485080:	8f998500 	lw	t9,-31488(gp)
  485084:	00000000 	nop
  485088:	0320f809 	jalr	t9
  48508c:	00000000 	nop
  485090:	8fbc0010 	lw	gp,16(sp)
  485094:	00000000 	nop
  485098:	27ad0018 	addiu	t5,sp,24
  48509c:	03c02821 	move	a1,s8
  4850a0:	02403021 	move	a2,s2
  4850a4:	01a02021 	move	a0,t5
  4850a8:	8f998a30 	lw	t9,-30160(gp)
  4850ac:	00000000 	nop
  4850b0:	0320f809 	jalr	t9
  4850b4:	00000000 	nop
  4850b8:	8fbc0010 	lw	gp,16(sp)
  4850bc:	00000000 	nop
  4850c0:	27ac0018 	addiu	t4,sp,24
  4850c4:	02402821 	move	a1,s2
  4850c8:	8fb2003c 	lw	s2,60(sp)
  4850cc:	00000000 	nop
  4850d0:	0180f021 	move	s8,t4
  4850d4:	8fb30040 	lw	s3,64(sp)
  4850d8:	02908823 	subu	s1,s4,s0
  4850dc:	0233782b 	sltu	t7,s1,s3
  4850e0:	15e00002 	bnez	t7,4850ec <datatot+0x34c>
  4850e4:	27b30028 	addiu	s3,sp,40
  4850e8:	02009821 	move	s3,s0
  4850ec:	03c02021 	move	a0,s8
  4850f0:	02c03021 	move	a2,s6
  4850f4:	02603821 	move	a3,s3
  4850f8:	8f998048 	lw	t9,-32696(gp)
  4850fc:	00000000 	nop
  485100:	27395364 	addiu	t9,t9,21348
  485104:	00000000 	nop
  485108:	0320f809 	jalr	t9
  48510c:	00000000 	nop
  485110:	8fbc0010 	lw	gp,16(sp)
  485114:	00000000 	nop
  485118:	8fa40040 	lw	a0,64(sp)
  48511c:	00000000 	nop
  485120:	0214c02b 	sltu	t8,s0,s4
  485124:	02a4a821 	addu	s5,s5,a0
  485128:	1300001f 	beqz	t8,4851a8 <datatot+0x408>
  48512c:	02e4b821 	addu	s7,s7,a0
  485130:	12700049 	beq	s3,s0,485258 <datatot+0x4b8>
  485134:	0224c82b 	sltu	t9,s1,a0
  485138:	17200012 	bnez	t9,485184 <datatot+0x3e4>
  48513c:	02002021 	move	a0,s0
  485140:	8f84804c 	lw	a0,-32692(gp)
  485144:	00000000 	nop
  485148:	248482a4 	addiu	a0,a0,-32092
  48514c:	8f85804c 	lw	a1,-32692(gp)
  485150:	00000000 	nop
  485154:	24a58244 	addiu	a1,a1,-32188
  485158:	24060082 	li	a2,130
  48515c:	8f87804c 	lw	a3,-32692(gp)
  485160:	00000000 	nop
  485164:	24e78250 	addiu	a3,a3,-32176
  485168:	8f998148 	lw	t9,-32440(gp)
  48516c:	00000000 	nop
  485170:	0320f809 	jalr	t9
  485174:	00000000 	nop
  485178:	8fbc0010 	lw	gp,16(sp)
  48517c:	00000000 	nop
  485180:	02002021 	move	a0,s0
  485184:	02602821 	move	a1,s3
  485188:	02203021 	move	a2,s1
  48518c:	8f998a30 	lw	t9,-30160(gp)
  485190:	00000000 	nop
  485194:	0320f809 	jalr	t9
  485198:	00000000 	nop
  48519c:	8fbc0010 	lw	gp,16(sp)
  4851a0:	00000000 	nop
  4851a4:	02808021 	move	s0,s4
  4851a8:	8fa5003c 	lw	a1,60(sp)
  4851ac:	00000000 	nop
  4851b0:	8fa40044 	lw	a0,68(sp)
  4851b4:	00000000 	nop
  4851b8:	03c5f021 	addu	s8,s8,a1
  4851bc:	1080000f 	beqz	a0,4851fc <datatot+0x45c>
  4851c0:	02459023 	subu	s2,s2,a1
  4851c4:	02e4302b 	sltu	a2,s7,a0
  4851c8:	14c0000c 	bnez	a2,4851fc <datatot+0x45c>
  4851cc:	00000000 	nop
  4851d0:	1240000c 	beqz	s2,485204 <datatot+0x464>
  4851d4:	0290882b 	sltu	s1,s4,s0
  4851d8:	0214b82b 	sltu	s7,s0,s4
  4851dc:	12e00005 	beqz	s7,4851f4 <datatot+0x454>
  4851e0:	00000000 	nop
  4851e4:	8fa70048 	lw	a3,72(sp)
  4851e8:	00000000 	nop
  4851ec:	a2070000 	sb	a3,0(s0)
  4851f0:	26100001 	addiu	s0,s0,1
  4851f4:	26b50001 	addiu	s5,s5,1
  4851f8:	0000b821 	move	s7,zero
  4851fc:	1640ff98 	bnez	s2,485060 <datatot+0x2c0>
  485200:	0290882b 	sltu	s1,s4,s0
  485204:	12200010 	beqz	s1,485248 <datatot+0x4a8>
  485208:	24060093 	li	a2,147
  48520c:	8f84804c 	lw	a0,-32692(gp)
  485210:	00000000 	nop
  485214:	24848298 	addiu	a0,a0,-32104
  485218:	8f85804c 	lw	a1,-32692(gp)
  48521c:	00000000 	nop
  485220:	24a58244 	addiu	a1,a1,-32188
  485224:	8f87804c 	lw	a3,-32692(gp)
  485228:	00000000 	nop
  48522c:	24e78250 	addiu	a3,a3,-32176
  485230:	8f998148 	lw	t9,-32440(gp)
  485234:	00000000 	nop
  485238:	0320f809 	jalr	t9
  48523c:	00000000 	nop
  485240:	8fbc0010 	lw	gp,16(sp)
  485244:	00000000 	nop
  485248:	26be0001 	addiu	s8,s5,1
  48524c:	a2000000 	sb	zero,0(s0)
  485250:	1000fef9 	b	484e38 <datatot+0x98>
  485254:	03c01021 	move	v0,s8
  485258:	8fa30040 	lw	v1,64(sp)
  48525c:	1000ffd2 	b	4851a8 <datatot+0x408>
  485260:	02038021 	addu	s0,s0,v1
  485264:	8fa5003c 	lw	a1,60(sp)
  485268:	1000ff9a 	b	4850d4 <datatot+0x334>
  48526c:	00000000 	nop
  485270:	02602821 	move	a1,s3
  485274:	8f998c58 	lw	t9,-29608(gp)
  485278:	00000000 	nop
  48527c:	0320f809 	jalr	t9
  485280:	00000000 	nop
  485284:	8fbc0010 	lw	gp,16(sp)
  485288:	00000000 	nop
  48528c:	1000ff5e 	b	485008 <datatot+0x268>
  485290:	02158021 	addu	s0,s0,s5
  485294:	27b00038 	addiu	s0,sp,56
  485298:	1000ff46 	b	484fb4 <datatot+0x214>
  48529c:	24110001 	li	s1,1
  4852a0:	2407003a 	li	a3,58
  4852a4:	16c7fee4 	bne	s6,a3,484e38 <datatot+0x98>
  4852a8:	00001021 	move	v0,zero
  4852ac:	240f0002 	li	t7,2
  4852b0:	240e003a 	li	t6,58
  4852b4:	afaf0044 	sw	t7,68(sp)
  4852b8:	afae0048 	sw	t6,72(sp)
  4852bc:	24130001 	li	s3,1
  4852c0:	afb3003c 	sw	s3,60(sp)
  4852c4:	24120002 	li	s2,2
  4852c8:	8f93804c 	lw	s3,-32692(gp)
  4852cc:	00000000 	nop
  4852d0:	267382c0 	addiu	s3,s3,-32064
  4852d4:	00000000 	nop
  4852d8:	24160078 	li	s6,120
  4852dc:	1000feed 	b	484e94 <datatot+0xf4>
  4852e0:	afb20040 	sw	s2,64(sp)
  4852e4:	12c8000c 	beq	s6,t0,485318 <datatot+0x578>
  4852e8:	2ac90074 	slti	t1,s6,116
  4852ec:	11200006 	beqz	t1,485308 <datatot+0x568>
  4852f0:	240b0078 	li	t3,120
  4852f4:	240a0068 	li	t2,104
  4852f8:	12cafedb 	beq	s6,t2,484e68 <datatot+0xc8>
  4852fc:	00001021 	move	v0,zero
  485300:	1000fecd 	b	484e38 <datatot+0x98>
  485304:	00000000 	nop
  485308:	12cbfeda 	beq	s6,t3,484e74 <datatot+0xd4>
  48530c:	00001021 	move	v0,zero
  485310:	1000fec9 	b	484e38 <datatot+0x98>
  485314:	00000000 	nop
  485318:	24150003 	li	s5,3
  48531c:	24140004 	li	s4,4
  485320:	8f93804c 	lw	s3,-32692(gp)
  485324:	00000000 	nop
  485328:	267382c4 	addiu	s3,s3,-32060
  48532c:	00000000 	nop
  485330:	afb5003c 	sw	s5,60(sp)
  485334:	1000fed7 	b	484e94 <datatot+0xf4>
  485338:	afb40040 	sw	s4,64(sp)
  48533c:	24160004 	li	s6,4
  485340:	24170003 	li	s7,3
  485344:	afb60040 	sw	s6,64(sp)
  485348:	8f93804c 	lw	s3,-32692(gp)
  48534c:	00000000 	nop
  485350:	267382c0 	addiu	s3,s3,-32064
  485354:	00000000 	nop
  485358:	24160073 	li	s6,115
  48535c:	1000fecd 	b	484e94 <datatot+0xf4>
  485360:	afb7003c 	sw	s7,60(sp)

00485364 <convert>:
  485364:	3c1c0fb8 	lui	gp,0xfb8
  485368:	279c760c 	addiu	gp,gp,30220
  48536c:	0399e021 	addu	gp,gp,t9
  485370:	27bdffd0 	addiu	sp,sp,-48
  485374:	afbc0010 	sw	gp,16(sp)
  485378:	afb20020 	sw	s2,32(sp)
  48537c:	00a09021 	move	s2,a1
  485380:	afb30024 	sw	s3,36(sp)
  485384:	afb1001c 	sw	s1,28(sp)
  485388:	afb00018 	sw	s0,24(sp)
  48538c:	afbf002c 	sw	ra,44(sp)
  485390:	afbc0028 	sw	gp,40(sp)
  485394:	00808821 	move	s1,a0
  485398:	00c09821 	move	s3,a2

/*
 - convert - convert one input block to one output block
 */
static void
convert(src, nreal, format, out)
const char *src;
size_t nreal;			/* how much of the input block is real */
int format;
char *out;
{
	static char hex[] = "0123456789abcdef";
	static char base64[] =	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
				"abcdefghijklmnopqrstuvwxyz"
				"0123456789+/";
	unsigned char c;
	unsigned char c1, c2, c3;

	assert(nreal > 0);
  48539c:	1240007c 	beqz	s2,485590 <convert+0x22c>
  4853a0:	00e08021 	move	s0,a3
	switch (format) {
  4853a4:	24030073 	li	v1,115
  4853a8:	1263003f 	beq	s3,v1,4854a8 <convert+0x144>
  4853ac:	24030078 	li	v1,120
  4853b0:	12630019 	beq	s3,v1,485418 <convert+0xb4>
  4853b4:	24040001 	li	a0,1
	case 'x':
		assert(nreal == 1);
		c = (unsigned char)*src;
		*out++ = hex[c >> 4];
		*out++ = hex[c & 0xf];
		break;
	case 's':
		c1 = (unsigned char)*src++;
		c2 = (unsigned char)*src++;
		c3 = (unsigned char)*src++;
		*out++ = base64[c1 >> 2];	/* top 6 bits of c1 */
		c = (c1 & 0x3) << 4;		/* bottom 2 of c1... */
		c |= c2 >> 4;			/* ...top 4 of c2 */
		*out++ = base64[c];
		if (nreal == 1)
			*out++ = '=';
		else {
			c = (c2 & 0xf) << 2;	/* bottom 4 of c2... */
			c |= c3 >> 6;		/* ...top 2 of c3 */
			*out++ = base64[c];
		}
		if (nreal <= 2)
			*out++ = '=';
		else
			*out++ = base64[c3 & 0x3f];	/* bottom 6 of c3 */
		break;
	default:
		assert(nreal == 0);	/* unknown format */
  4853b8:	12400010 	beqz	s2,4853fc <convert+0x98>
  4853bc:	240600c8 	li	a2,200
  4853c0:	8f84804c 	lw	a0,-32692(gp)
  4853c4:	00000000 	nop
  4853c8:	248482c8 	addiu	a0,a0,-32056
  4853cc:	8f85804c 	lw	a1,-32692(gp)
  4853d0:	00000000 	nop
  4853d4:	24a58244 	addiu	a1,a1,-32188
  4853d8:	8f87804c 	lw	a3,-32692(gp)
  4853dc:	00000000 	nop
  4853e0:	24e782d4 	addiu	a3,a3,-32044
  4853e4:	8f998148 	lw	t9,-32440(gp)
  4853e8:	00000000 	nop
  4853ec:	0320f809 	jalr	t9
  4853f0:	00000000 	nop
  4853f4:	8fbc0010 	lw	gp,16(sp)
  4853f8:	00000000 	nop
		break;
  4853fc:	8fbf002c 	lw	ra,44(sp)
  485400:	8fb30024 	lw	s3,36(sp)
  485404:	8fb20020 	lw	s2,32(sp)
  485408:	8fb1001c 	lw	s1,28(sp)
  48540c:	8fb00018 	lw	s0,24(sp)
  485410:	03e00008 	jr	ra
  485414:	27bd0030 	addiu	sp,sp,48
  485418:	12440010 	beq	s2,a0,48545c <convert+0xf8>
  48541c:	240600ae 	li	a2,174
  485420:	8f84804c 	lw	a0,-32692(gp)
  485424:	00000000 	nop
  485428:	248482dc 	addiu	a0,a0,-32036
  48542c:	8f85804c 	lw	a1,-32692(gp)
  485430:	00000000 	nop
  485434:	24a58244 	addiu	a1,a1,-32188
  485438:	8f87804c 	lw	a3,-32692(gp)
  48543c:	00000000 	nop
  485440:	24e782d4 	addiu	a3,a3,-32044
  485444:	8f998148 	lw	t9,-32440(gp)
  485448:	00000000 	nop
  48544c:	0320f809 	jalr	t9
  485450:	00000000 	nop
  485454:	8fbc0010 	lw	gp,16(sp)
  485458:	00000000 	nop
  48545c:	92280000 	lbu	t0,0(s1)
  485460:	00000000 	nop
  485464:	00083102 	srl	a2,t0,0x4
  485468:	8f878018 	lw	a3,-32744(gp)
  48546c:	00000000 	nop
  485470:	24e74280 	addiu	a3,a3,17024
  485474:	00e63821 	addu	a3,a3,a2
  485478:	90e70000 	lbu	a3,0(a3)
  48547c:	00000000 	nop
  485480:	3102000f 	andi	v0,t0,0xf
  485484:	a2070000 	sb	a3,0(s0)
  485488:	8f858018 	lw	a1,-32744(gp)
  48548c:	00000000 	nop
  485490:	24a54280 	addiu	a1,a1,17024
  485494:	00a22821 	addu	a1,a1,v0
  485498:	90a50000 	lbu	a1,0(a1)
  48549c:	00000000 	nop
  4854a0:	1000ffd6 	b	4853fc <convert+0x98>
  4854a4:	a2050001 	sb	a1,1(s0)
  4854a8:	92390000 	lbu	t9,0(s1)
  4854ac:	26330001 	addiu	s3,s1,1
  4854b0:	92670000 	lbu	a3,0(s3)
  4854b4:	00000000 	nop
  4854b8:	00191882 	srl	v1,t9,0x2
  4854bc:	8f8f8018 	lw	t7,-32744(gp)
  4854c0:	00000000 	nop
  4854c4:	25ef4294 	addiu	t7,t7,17044
  4854c8:	01e37821 	addu	t7,t7,v1
  4854cc:	91ef0000 	lbu	t7,0(t7)
  4854d0:	00000000 	nop
  4854d4:	33380003 	andi	t8,t9,0x3
  4854d8:	00186900 	sll	t5,t8,0x4
  4854dc:	00077102 	srl	t6,a3,0x4
  4854e0:	92680001 	lbu	t0,1(s3)
  4854e4:	00000000 	nop
  4854e8:	01ae6025 	or	t4,t5,t6
  4854ec:	a20f0000 	sb	t7,0(s0)
  4854f0:	8f8b8018 	lw	t3,-32744(gp)
  4854f4:	00000000 	nop
  4854f8:	256b4294 	addiu	t3,t3,17044
  4854fc:	016c5821 	addu	t3,t3,t4
  485500:	916b0000 	lbu	t3,0(t3)
  485504:	00000000 	nop
  485508:	260a0001 	addiu	t2,s0,1
  48550c:	24090001 	li	t1,1
  485510:	a14b0000 	sb	t3,0(t2)
  485514:	1249001b 	beq	s2,t1,485584 <convert+0x220>
  485518:	25500001 	addiu	s0,t2,1
  48551c:	30e6000f 	andi	a2,a3,0xf
  485520:	00063880 	sll	a3,a2,0x2
  485524:	00081182 	srl	v0,t0,0x6
  485528:	00e22825 	or	a1,a3,v0
  48552c:	8f848018 	lw	a0,-32744(gp)
  485530:	00000000 	nop
  485534:	24844294 	addiu	a0,a0,17044
  485538:	00852021 	addu	a0,a0,a1
  48553c:	90840000 	lbu	a0,0(a0)
  485540:	00000000 	nop
  485544:	a2040000 	sb	a0,0(s0)
  485548:	2e490003 	sltiu	t1,s2,3
  48554c:	11200004 	beqz	t1,485560 <convert+0x1fc>
  485550:	26100001 	addiu	s0,s0,1
  485554:	2412003d 	li	s2,61
  485558:	1000ffa8 	b	4853fc <convert+0x98>
  48555c:	a2120000 	sb	s2,0(s0)
  485560:	310a003f 	andi	t2,t0,0x3f
  485564:	8f888018 	lw	t0,-32744(gp)
  485568:	00000000 	nop
  48556c:	25084294 	addiu	t0,t0,17044
  485570:	010a4021 	addu	t0,t0,t2
  485574:	91080000 	lbu	t0,0(t0)
  485578:	00000000 	nop
  48557c:	1000ff9f 	b	4853fc <convert+0x98>
  485580:	a2080000 	sb	t0,0(s0)
  485584:	2411003d 	li	s1,61
  485588:	1000ffef 	b	485548 <convert+0x1e4>
  48558c:	a2110000 	sb	s1,0(s0)
  485590:	8f84804c 	lw	a0,-32692(gp)
  485594:	00000000 	nop
  485598:	248482e8 	addiu	a0,a0,-32024
  48559c:	8f85804c 	lw	a1,-32692(gp)
  4855a0:	00000000 	nop
  4855a4:	24a58244 	addiu	a1,a1,-32188
  4855a8:	8f87804c 	lw	a3,-32692(gp)
  4855ac:	00000000 	nop
  4855b0:	24e782d4 	addiu	a3,a3,-32044
  4855b4:	240600ab 	li	a2,171
  4855b8:	8f998148 	lw	t9,-32440(gp)
  4855bc:	00000000 	nop
  4855c0:	0320f809 	jalr	t9
  4855c4:	00000000 	nop
  4855c8:	8fbc0010 	lw	gp,16(sp)
  4855cc:	1000ff76 	b	4853a8 <convert+0x44>
  4855d0:	24030073 	li	v1,115

004855d4 <bytestoa>:
  4855d4:	3c1c0fb8 	lui	gp,0xfb8
  4855d8:	279c739c 	addiu	gp,gp,29596
  4855dc:	0399e021 	addu	gp,gp,t9
  4855e0:	27bdffd8 	addiu	sp,sp,-40
  4855e4:	afbc0018 	sw	gp,24(sp)
	}
}

/*
 - datatoa - convert data to ASCII
 * backward-compatibility synonym for datatot
 */
size_t				/* true length (with NUL) for success */
datatoa(src, srclen, format, dst, dstlen)
const char *src;
size_t srclen;
int format;			/* character indicating what format */
char *dst;			/* need not be valid if dstlen is 0 */
size_t dstlen;
{
	return datatot(src, srclen, format, dst, dstlen);
}

/*
 - bytestoa - convert data bytes to ASCII
 * backward-compatibility synonym for datatot
 */
size_t				/* true length (with NUL) for success */
bytestoa(src, srclen, format, dst, dstlen)
const char *src;
size_t srclen;
int format;			/* character indicating what format */
char *dst;			/* need not be valid if dstlen is 0 */
size_t dstlen;
{
	return datatot(src, srclen, format, dst, dstlen);
  4855e8:	8fa30038 	lw	v1,56(sp)
  4855ec:	00000000 	nop
  4855f0:	afbf0024 	sw	ra,36(sp)
  4855f4:	afbc0020 	sw	gp,32(sp)
  4855f8:	afa30010 	sw	v1,16(sp)
  4855fc:	8f9980a4 	lw	t9,-32604(gp)
  485600:	00000000 	nop
  485604:	0320f809 	jalr	t9
  485608:	00000000 	nop
  48560c:	8fbc0018 	lw	gp,24(sp)
  485610:	8fbf0024 	lw	ra,36(sp)
  485614:	00000000 	nop
  485618:	03e00008 	jr	ra
  48561c:	27bd0028 	addiu	sp,sp,40

00485620 <datatoa>:
  485620:	3c1c0fb8 	lui	gp,0xfb8
  485624:	279c7350 	addiu	gp,gp,29520
  485628:	0399e021 	addu	gp,gp,t9
  48562c:	27bdffd8 	addiu	sp,sp,-40
  485630:	afbc0018 	sw	gp,24(sp)
  485634:	8fa30038 	lw	v1,56(sp)
  485638:	00000000 	nop
  48563c:	afbf0024 	sw	ra,36(sp)
  485640:	afbc0020 	sw	gp,32(sp)
  485644:	afa30010 	sw	v1,16(sp)
  485648:	8f9980a4 	lw	t9,-32604(gp)
  48564c:	00000000 	nop
  485650:	0320f809 	jalr	t9
  485654:	00000000 	nop
  485658:	8fbc0018 	lw	gp,24(sp)
  48565c:	8fbf0024 	lw	ra,36(sp)
  485660:	00000000 	nop
  485664:	03e00008 	jr	ra
  485668:	27bd0028 	addiu	sp,sp,40
  48566c:	00000000 	nop

00485670 <initaddr>:
  485670:	3c1c0fb8 	lui	gp,0xfb8
  485674:	279c7300 	addiu	gp,gp,29440
  485678:	0399e021 	addu	gp,gp,t9
  48567c:	27bdffe0 	addiu	sp,sp,-32
  485680:	afbc0010 	sw	gp,16(sp)
  485684:	00c04021 	move	t0,a2
size_t srclen;
int af;				/* address family */
ip_address *dst;
{
	switch (af) {
  485688:	24030002 	li	v1,2
  48568c:	afbf001c 	sw	ra,28(sp)
  485690:	afbc0018 	sw	gp,24(sp)
  485694:	00803021 	move	a2,a0
  485698:	1103001d 	beq	t0,v1,485710 <initaddr+0xa0>
  48569c:	00a04821 	move	t1,a1
  4856a0:	2404000a 	li	a0,10
  4856a4:	8f82804c 	lw	v0,-32692(gp)
  4856a8:	00000000 	nop
  4856ac:	24428300 	addiu	v0,v0,-32000
  4856b0:	11040005 	beq	t0,a0,4856c8 <initaddr+0x58>
  4856b4:	240b0010 	li	t3,16
	case AF_INET:
		if (srclen != 4)
			return "IPv4 address must be exactly 4 bytes";
		dst->u.v4.sin_family = af;
		dst->u.v4.sin_port = 0;		/* unused */
		memcpy((char *)&dst->u.v4.sin_addr.s_addr, src, srclen);
		break;
	case AF_INET6:
		if (srclen != 16)
			return "IPv6 address must be exactly 16 bytes";
		dst->u.v6.sin6_family = af;
		dst->u.v6.sin6_flowinfo = 0;		/* unused */
		dst->u.v6.sin6_port = 0;		/* unused */
		memcpy((char *)&dst->u.v6.sin6_addr, src, srclen);
		break;
	default:
		return "unknown address family in initaddr";
		break;
	}
	return NULL;
}
  4856b8:	8fbf001c 	lw	ra,28(sp)
  4856bc:	00000000 	nop
  4856c0:	03e00008 	jr	ra
  4856c4:	27bd0020 	addiu	sp,sp,32
  4856c8:	00c02821 	move	a1,a2
  4856cc:	24e40008 	addiu	a0,a3,8
  4856d0:	8f82804c 	lw	v0,-32692(gp)
  4856d4:	00000000 	nop
  4856d8:	24428324 	addiu	v0,v0,-31964
  4856dc:	152bfff6 	bne	t1,t3,4856b8 <initaddr+0x48>
  4856e0:	24060010 	li	a2,16
  4856e4:	a4e80000 	sh	t0,0(a3)
  4856e8:	ace00004 	sw	zero,4(a3)
  4856ec:	a4e00002 	sh	zero,2(a3)
  4856f0:	8f998a30 	lw	t9,-30160(gp)
  4856f4:	00000000 	nop
  4856f8:	0320f809 	jalr	t9
  4856fc:	00000000 	nop
  485700:	8fbc0010 	lw	gp,16(sp)
  485704:	00000000 	nop
  485708:	1000ffeb 	b	4856b8 <initaddr+0x48>
  48570c:	00001021 	move	v0,zero
  485710:	240a0004 	li	t2,4
  485714:	00c02821 	move	a1,a2
  485718:	24e40004 	addiu	a0,a3,4
  48571c:	8f82804c 	lw	v0,-32692(gp)
  485720:	00000000 	nop
  485724:	2442834c 	addiu	v0,v0,-31924
  485728:	152affe3 	bne	t1,t2,4856b8 <initaddr+0x48>
  48572c:	24060004 	li	a2,4
  485730:	a4e80000 	sh	t0,0(a3)
  485734:	a4e00002 	sh	zero,2(a3)
  485738:	8f998a30 	lw	t9,-30160(gp)
  48573c:	00000000 	nop
  485740:	0320f809 	jalr	t9
  485744:	00000000 	nop
  485748:	8fbc0010 	lw	gp,16(sp)
  48574c:	00000000 	nop
  485750:	1000ffd9 	b	4856b8 <initaddr+0x48>
  485754:	00001021 	move	v0,zero
	...

00485760 <initsaid>:
  485760:	3c1c0fb8 	lui	gp,0xfb8
  485764:	279c7210 	addiu	gp,gp,29200
  485768:	0399e021 	addu	gp,gp,t9
ipsec_spi_t spi;
int proto;
ip_said *dst;
{
	dst->dst = *addr;
  48576c:	8c8b0000 	lw	t3,0(a0)
  485770:	00000000 	nop
  485774:	aceb0000 	sw	t3,0(a3)
  485778:	8c8a0004 	lw	t2,4(a0)
  48577c:	00000000 	nop
  485780:	acea0004 	sw	t2,4(a3)
  485784:	8c890008 	lw	t1,8(a0)
  485788:	00000000 	nop
  48578c:	ace90008 	sw	t1,8(a3)
  485790:	8c88000c 	lw	t0,12(a0)
  485794:	00000000 	nop
  485798:	ace8000c 	sw	t0,12(a3)
  48579c:	8c820010 	lw	v0,16(a0)
  4857a0:	00000000 	nop
  4857a4:	ace20010 	sw	v0,16(a3)
  4857a8:	8c830014 	lw	v1,20(a0)
  4857ac:	00000000 	nop
  4857b0:	ace30014 	sw	v1,20(a3)
  4857b4:	8c820018 	lw	v0,24(a0)
  4857b8:	00000000 	nop
	dst->spi = spi;
	dst->proto = proto;
  4857bc:	ace60020 	sw	a2,32(a3)
  4857c0:	ace20018 	sw	v0,24(a3)
  4857c4:	03e00008 	jr	ra
  4857c8:	ace5001c 	sw	a1,28(a3)
  4857cc:	00000000 	nop

004857d0 <initsubnet>:
  4857d0:	3c1c0fb8 	lui	gp,0xfb8
  4857d4:	279c71a0 	addiu	gp,gp,29088
  4857d8:	0399e021 	addu	gp,gp,t9
  4857dc:	27bdffc8 	addiu	sp,sp,-56
  4857e0:	afbc0010 	sw	gp,16(sp)
  4857e4:	afb20028 	sw	s2,40(sp)
  4857e8:	afb10024 	sw	s1,36(sp)
  4857ec:	afb00020 	sw	s0,32(sp)
  4857f0:	afbf0030 	sw	ra,48(sp)
  4857f4:	afbc002c 	sw	gp,44(sp)
  4857f8:	00804821 	move	t1,a0
	int c;
	unsigned m;
	int die;

	dst->addr = *addr;
  4857fc:	8d280000 	lw	t0,0(t1)
  485800:	00000000 	nop
  485804:	00e08021 	move	s0,a3
  485808:	ae080000 	sw	t0,0(s0)
  48580c:	8d240004 	lw	a0,4(t1)
  485810:	00000000 	nop
  485814:	00a09021 	move	s2,a1
  485818:	ae040004 	sw	a0,4(s0)
  48581c:	8d250008 	lw	a1,8(t1)
  485820:	00000000 	nop
	n = addrbytesptr(&dst->addr, (const unsigned char **)&p);
  485824:	02002021 	move	a0,s0
  485828:	ae050008 	sw	a1,8(s0)
  48582c:	8d27000c 	lw	a3,12(t1)
  485830:	00000000 	nop
  485834:	27a50018 	addiu	a1,sp,24
  485838:	ae07000c 	sw	a3,12(s0)
  48583c:	8d220010 	lw	v0,16(t1)
  485840:	00000000 	nop
  485844:	00c08821 	move	s1,a2
  485848:	ae020010 	sw	v0,16(s0)
  48584c:	8d230014 	lw	v1,20(t1)
  485850:	00000000 	nop
  485854:	ae030014 	sw	v1,20(s0)
  485858:	8d220018 	lw	v0,24(t1)
  48585c:	00000000 	nop
  485860:	ae020018 	sw	v0,24(s0)
  485864:	8f998768 	lw	t9,-30872(gp)
  485868:	00000000 	nop
  48586c:	0320f809 	jalr	t9
  485870:	00000000 	nop
  485874:	8fbc0010 	lw	gp,16(sp)
  485878:	00402821 	move	a1,v0
	if (n == 0)
  48587c:	8f82804c 	lw	v0,-32692(gp)
  485880:	00000000 	nop
  485884:	24428380 	addiu	v0,v0,-31872
  485888:	10a00009 	beqz	a1,4858b0 <initsubnet+0xe0>
  48588c:	24060030 	li	a2,48
		return "unknown address family";

	switch (clash) {
  485890:	1226003d 	beq	s1,a2,485988 <initsubnet+0x1b8>
  485894:	240a0078 	li	t2,120
  485898:	122a000b 	beq	s1,t2,4858c8 <initsubnet+0xf8>
  48589c:	24070001 	li	a3,1
	case '0':
		die = 0;
		break;
	case 'x':
		die = 1;
		break;
	default:
		return "unknown clash-control value in initsubnet";
  4858a0:	8f82804c 	lw	v0,-32692(gp)
  4858a4:	00000000 	nop
  4858a8:	24428398 	addiu	v0,v0,-31848
  4858ac:	00000000 	nop
		break;
	}

	c = count / 8;
	if (c > n)
		return "impossible mask count";
	p += c;
	n -= c;

	m = 0xff;
	c = count % 8;
	if (n > 0 && c != 0)	/* partial byte */
		m >>= c;
	for (; n > 0; n--) {
		if ((*p & m) != 0) {
			if (die)
				return "improper subnet, host-part bits on";
			*p &= ~m;
		}
		m = 0xff;
		p++;
	}

	dst->maskbits = count;
	return NULL;
}
  4858b0:	8fbf0030 	lw	ra,48(sp)
  4858b4:	8fb20028 	lw	s2,40(sp)
  4858b8:	8fb10024 	lw	s1,36(sp)
  4858bc:	8fb00020 	lw	s0,32(sp)
  4858c0:	03e00008 	jr	ra
  4858c4:	27bd0038 	addiu	sp,sp,56
  4858c8:	0640002d 	bltz	s2,485980 <initsubnet+0x1b0>
  4858cc:	02401821 	move	v1,s2
  4858d0:	000320c3 	sra	a0,v1,0x3
  4858d4:	00a4582a 	slt	t3,a1,a0
  4858d8:	11600006 	beqz	t3,4858f4 <initsubnet+0x124>
  4858dc:	000460c0 	sll	t4,a0,0x3
  4858e0:	8f82804c 	lw	v0,-32692(gp)
  4858e4:	00000000 	nop
  4858e8:	244283c4 	addiu	v0,v0,-31804
  4858ec:	1000fff0 	b	4858b0 <initsubnet+0xe0>
  4858f0:	00000000 	nop
  4858f4:	8fae0018 	lw	t6,24(sp)
  4858f8:	00000000 	nop
  4858fc:	01c46821 	addu	t5,t6,a0
  485900:	00a42823 	subu	a1,a1,a0
  485904:	afad0018 	sw	t5,24(sp)
  485908:	024c2023 	subu	a0,s2,t4
  48590c:	18a00019 	blez	a1,485974 <initsubnet+0x1a4>
  485910:	240600ff 	li	a2,255
  485914:	10800002 	beqz	a0,485920 <initsubnet+0x150>
  485918:	00000000 	nop
  48591c:	00863006 	srlv	a2,a2,a0
  485920:	8fa40018 	lw	a0,24(sp)
  485924:	0006c027 	nor	t8,zero,a2
  485928:	90910000 	lbu	s1,0(a0)
  48592c:	24a5ffff 	addiu	a1,a1,-1
  485930:	02267824 	and	t7,s1,a2
  485934:	02381824 	and	v1,s1,t8
  485938:	11e0000b 	beqz	t7,485968 <initsubnet+0x198>
  48593c:	240600ff 	li	a2,255
  485940:	10e00006 	beqz	a3,48595c <initsubnet+0x18c>
  485944:	00000000 	nop
  485948:	8f82804c 	lw	v0,-32692(gp)
  48594c:	00000000 	nop
  485950:	244283dc 	addiu	v0,v0,-31780
  485954:	1000ffd6 	b	4858b0 <initsubnet+0xe0>
  485958:	00000000 	nop
  48595c:	a0830000 	sb	v1,0(a0)
  485960:	8fa40018 	lw	a0,24(sp)
  485964:	00000000 	nop
  485968:	24990001 	addiu	t9,a0,1
  48596c:	1ca0ffec 	bgtz	a1,485920 <initsubnet+0x150>
  485970:	afb90018 	sw	t9,24(sp)
  485974:	ae12001c 	sw	s2,28(s0)
  485978:	1000ffcd 	b	4858b0 <initsubnet+0xe0>
  48597c:	00001021 	move	v0,zero
  485980:	1000ffd3 	b	4858d0 <initsubnet+0x100>
  485984:	26430007 	addiu	v1,s2,7
  485988:	1000ffcf 	b	4858c8 <initsubnet+0xf8>
  48598c:	00003821 	move	a3,zero

00485990 <addrtosubnet>:
  485990:	3c1c0fb8 	lui	gp,0xfb8
  485994:	279c6fe0 	addiu	gp,gp,28640
  485998:	0399e021 	addu	gp,gp,t9
  48599c:	27bdffd8 	addiu	sp,sp,-40
  4859a0:	afbc0010 	sw	gp,16(sp)
  4859a4:	afb00018 	sw	s0,24(sp)
  4859a8:	afbf0020 	sw	ra,32(sp)
  4859ac:	afbc001c 	sw	gp,28(sp)
  4859b0:	00804021 	move	t0,a0

/*
 - addrtosubnet - initialize ip_subnet from a single address
 */
err_t				/* NULL for success, else string literal */
addrtosubnet(addr, dst)
const ip_address *addr;
ip_subnet *dst;
{
	int n;

	dst->addr = *addr;
  4859b4:	8d040000 	lw	a0,0(t0)
  4859b8:	00000000 	nop
  4859bc:	00a08021 	move	s0,a1
  4859c0:	ae040000 	sw	a0,0(s0)
  4859c4:	8d050004 	lw	a1,4(t0)
  4859c8:	00000000 	nop
	n = addrbytesptr(&dst->addr, (const unsigned char **)NULL);
  4859cc:	02002021 	move	a0,s0
  4859d0:	ae050004 	sw	a1,4(s0)
  4859d4:	8d090008 	lw	t1,8(t0)
  4859d8:	00000000 	nop
  4859dc:	00002821 	move	a1,zero
  4859e0:	ae090008 	sw	t1,8(s0)
  4859e4:	8d07000c 	lw	a3,12(t0)
  4859e8:	00000000 	nop
  4859ec:	ae07000c 	sw	a3,12(s0)
  4859f0:	8d060010 	lw	a2,16(t0)
  4859f4:	00000000 	nop
  4859f8:	ae060010 	sw	a2,16(s0)
  4859fc:	8d030014 	lw	v1,20(t0)
  485a00:	00000000 	nop
  485a04:	ae030014 	sw	v1,20(s0)
  485a08:	8d020018 	lw	v0,24(t0)
  485a0c:	00000000 	nop
  485a10:	ae020018 	sw	v0,24(s0)
  485a14:	8f998768 	lw	t9,-30872(gp)
  485a18:	00000000 	nop
  485a1c:	0320f809 	jalr	t9
  485a20:	00000000 	nop
  485a24:	8fbc0010 	lw	gp,16(sp)
  485a28:	00402821 	move	a1,v0
	if (n == 0)
  485a2c:	8f82804c 	lw	v0,-32692(gp)
  485a30:	00000000 	nop
  485a34:	24428380 	addiu	v0,v0,-31872
  485a38:	10a00003 	beqz	a1,485a48 <addrtosubnet+0xb8>
  485a3c:	000520c0 	sll	a0,a1,0x3
		return "unknown address family";
	dst->maskbits = n*8;
  485a40:	ae04001c 	sw	a0,28(s0)
	return NULL;
  485a44:	00001021 	move	v0,zero
}
  485a48:	8fbf0020 	lw	ra,32(sp)
  485a4c:	8fb00018 	lw	s0,24(sp)
  485a50:	03e00008 	jr	ra
  485a54:	27bd0028 	addiu	sp,sp,40
	...

00485a60 <keyblobtoid>:
  485a60:	3c1c0fb8 	lui	gp,0xfb8
  485a64:	279c6f10 	addiu	gp,gp,28432
  485a68:	0399e021 	addu	gp,gp,t9
  485a6c:	27bdffb8 	addiu	sp,sp,-72
  485a70:	afbc0018 	sw	gp,24(sp)
  485a74:	00a05021 	move	t2,a1
	char buf[KEYID_BUF];
	size_t ret;
#	define	NDIG	9

	if (srclen < (NDIG*6 + 7)/8) {
  485a78:	2d490007 	sltiu	t1,t2,7
  485a7c:	afb20038 	sw	s2,56(sp)
  485a80:	afb10034 	sw	s1,52(sp)
  485a84:	afb00030 	sw	s0,48(sp)
  485a88:	00c08821 	move	s1,a2
  485a8c:	00e08021 	move	s0,a3
  485a90:	afbf0040 	sw	ra,64(sp)
  485a94:	afbc003c 	sw	gp,60(sp)
  485a98:	8f83804c 	lw	v1,-32692(gp)
  485a9c:	00000000 	nop
  485aa0:	24638400 	addiu	v1,v1,-31744
  485aa4:	25480030 	addiu	t0,t2,48
  485aa8:	00009021 	move	s2,zero
  485aac:	27a70020 	addiu	a3,sp,32
  485ab0:	11200021 	beqz	t1,485b38 <keyblobtoid+0xd8>
  485ab4:	24060040 	li	a2,64
		strcpy(buf, "?len= ?");
  485ab8:	8c650004 	lw	a1,4(v1)
  485abc:	8c640000 	lw	a0,0(v1)
  485ac0:	afa50024 	sw	a1,36(sp)
  485ac4:	afa40020 	sw	a0,32(sp)
		buf[5] = '0' + srclen;
  485ac8:	a3a80025 	sb	t0,37(sp)
		ret = 0;
	} else {
		(void) datatot(src, srclen, 64, buf, NDIG+1);
		ret = NDIG+1;
	}

	if (dstlen > 0) {
  485acc:	12000013 	beqz	s0,485b1c <keyblobtoid+0xbc>
  485ad0:	27a40020 	addiu	a0,sp,32
		if (strlen(buf)+1 > dstlen)
  485ad4:	8f998188 	lw	t9,-32376(gp)
  485ad8:	00000000 	nop
  485adc:	0320f809 	jalr	t9
  485ae0:	00000000 	nop
  485ae4:	8fbc0018 	lw	gp,24(sp)
  485ae8:	24470001 	addiu	a3,v0,1
  485aec:	0207302b 	sltu	a2,s0,a3
  485af0:	02202021 	move	a0,s1
  485af4:	27a50020 	addiu	a1,sp,32
  485af8:	10c00002 	beqz	a2,485b04 <keyblobtoid+0xa4>
  485afc:	03b03821 	addu	a3,sp,s0
			*(buf + dstlen - 1) = '\0';
  485b00:	a0e0001f 	sb	zero,31(a3)
		strcpy(dst, buf);
  485b04:	8f998c58 	lw	t9,-29608(gp)
  485b08:	00000000 	nop
  485b0c:	0320f809 	jalr	t9
  485b10:	00000000 	nop
  485b14:	8fbc0018 	lw	gp,24(sp)
  485b18:	00000000 	nop
	}
	return ret;
  485b1c:	02401021 	move	v0,s2
  485b20:	8fbf0040 	lw	ra,64(sp)
  485b24:	8fb20038 	lw	s2,56(sp)
  485b28:	8fb10034 	lw	s1,52(sp)
  485b2c:	8fb00030 	lw	s0,48(sp)
  485b30:	03e00008 	jr	ra
  485b34:	27bd0048 	addiu	sp,sp,72
  485b38:	2403000a 	li	v1,10
  485b3c:	afa30010 	sw	v1,16(sp)
  485b40:	8f9980a4 	lw	t9,-32604(gp)
  485b44:	00000000 	nop
  485b48:	0320f809 	jalr	t9
  485b4c:	00000000 	nop
  485b50:	8fbc0018 	lw	gp,24(sp)
  485b54:	1000ffdd 	b	485acc <keyblobtoid+0x6c>
  485b58:	2412000a 	li	s2,10

00485b5c <splitkeytoid>:
  485b5c:	3c1c0fb8 	lui	gp,0xfb8
  485b60:	279c6e14 	addiu	gp,gp,28180
  485b64:	0399e021 	addu	gp,gp,t9
  485b68:	27bdffa0 	addiu	sp,sp,-96
  485b6c:	afbc0018 	sw	gp,24(sp)
}

/*
 - splitkeytoid - generate a printable key ID from exponent/modulus pair
 * Just constructs the beginnings of a key blob and calls keyblobtoid().
 */
size_t
splitkeytoid(e, elen, m, mlen, dst, dstlen)
const unsigned char *e;
size_t elen;
const unsigned char *m;
size_t mlen;
char *dst;			/* need not be valid if dstlen is 0 */
size_t dstlen;
{
	unsigned char buf[KEYID_BUF];	/* ample room */
	unsigned char *bufend = buf + sizeof(buf);
	unsigned char *p;
	size_t n;

	p = buf;
	if (elen <= 255)
  485b70:	2ca90100 	sltiu	t1,a1,256
  485b74:	afb50054 	sw	s5,84(sp)
  485b78:	afb40050 	sw	s4,80(sp)
  485b7c:	afb3004c 	sw	s3,76(sp)
  485b80:	afb20048 	sw	s2,72(sp)
  485b84:	afbf005c 	sw	ra,92(sp)
  485b88:	afbc0058 	sw	gp,88(sp)
  485b8c:	afb10044 	sw	s1,68(sp)
  485b90:	afb00040 	sw	s0,64(sp)
  485b94:	00804021 	move	t0,a0
  485b98:	00c0a821 	move	s5,a2
  485b9c:	00e09821 	move	s3,a3
  485ba0:	8fb20074 	lw	s2,116(sp)
  485ba4:	00000000 	nop
  485ba8:	27a3002a 	addiu	v1,sp,42
  485bac:	1120005c 	beqz	t1,485d20 <splitkeytoid+0x1c4>
  485bb0:	27b40020 	addiu	s4,sp,32
		*p++ = elen;
  485bb4:	27b10021 	addiu	s1,sp,33
  485bb8:	a3a50020 	sb	a1,32(sp)
	else if ((elen &~ 0xffff) == 0) {
		*p++ = 0;
		*p++ = (elen>>8) & 0xff;
		*p++ = elen & 0xff;
	} else
		return 0;	/* unrepresentable exponent length */

	n = bufend - p;
  485bbc:	00718023 	subu	s0,v1,s1
	if (elen < n)
  485bc0:	00b0482b 	sltu	t1,a1,s0
  485bc4:	11200002 	beqz	t1,485bd0 <splitkeytoid+0x74>
  485bc8:	02202021 	move	a0,s1
		n = elen;
  485bcc:	00a08021 	move	s0,a1
	memcpy(p, e, n);
	p += n;
  485bd0:	02308821 	addu	s1,s1,s0
  485bd4:	02003021 	move	a2,s0
  485bd8:	01002821 	move	a1,t0

	n = bufend - p;
  485bdc:	00718023 	subu	s0,v1,s1
  485be0:	8f998a30 	lw	t9,-30160(gp)
  485be4:	00000000 	nop
  485be8:	0320f809 	jalr	t9
  485bec:	00000000 	nop
  485bf0:	8fbc0018 	lw	gp,24(sp)
  485bf4:	00000000 	nop
	if (n > 0) {
  485bf8:	1200000d 	beqz	s0,485c30 <splitkeytoid+0xd4>
  485bfc:	0270182b 	sltu	v1,s3,s0
		if (mlen < n)
  485c00:	10600002 	beqz	v1,485c0c <splitkeytoid+0xb0>
  485c04:	02202021 	move	a0,s1
			n = mlen;
  485c08:	02608021 	move	s0,s3
		memcpy(p, m, n);
  485c0c:	02a02821 	move	a1,s5
  485c10:	02003021 	move	a2,s0
  485c14:	8f998a30 	lw	t9,-30160(gp)
  485c18:	00000000 	nop
  485c1c:	0320f809 	jalr	t9
  485c20:	00000000 	nop
  485c24:	8fbc0018 	lw	gp,24(sp)
  485c28:	00000000 	nop
		p += n;
  485c2c:	02308821 	addu	s1,s1,s0
	}

	return keyblobtoid(buf, p - buf, dst, dstlen);
  485c30:	02342823 	subu	a1,s1,s4
  485c34:	2ca80007 	sltiu	t0,a1,7
  485c38:	1100002d 	beqz	t0,485cf0 <splitkeytoid+0x194>
  485c3c:	27b10030 	addiu	s1,sp,48
  485c40:	24aa0030 	addiu	t2,a1,48
  485c44:	8f82804c 	lw	v0,-32692(gp)
  485c48:	00000000 	nop
  485c4c:	24428400 	addiu	v0,v0,-31744
  485c50:	8c420000 	lw	v0,0(v0)
  485c54:	8f85804c 	lw	a1,-32692(gp)
  485c58:	00000000 	nop
  485c5c:	24a58400 	addiu	a1,a1,-31744
  485c60:	8ca50004 	lw	a1,4(a1)
  485c64:	00000000 	nop
  485c68:	00008021 	move	s0,zero
  485c6c:	afa50034 	sw	a1,52(sp)
  485c70:	afa20030 	sw	v0,48(sp)
  485c74:	a3aa0035 	sb	t2,53(sp)
  485c78:	12400013 	beqz	s2,485cc8 <splitkeytoid+0x16c>
  485c7c:	27a40030 	addiu	a0,sp,48
  485c80:	8f998188 	lw	t9,-32376(gp)
  485c84:	00000000 	nop
  485c88:	0320f809 	jalr	t9
  485c8c:	00000000 	nop
  485c90:	8fbc0018 	lw	gp,24(sp)
  485c94:	244d0001 	addiu	t5,v0,1
  485c98:	024d602b 	sltu	t4,s2,t5
  485c9c:	11800002 	beqz	t4,485ca8 <splitkeytoid+0x14c>
  485ca0:	02327021 	addu	t6,s1,s2
  485ca4:	a1c0ffff 	sb	zero,-1(t6)
  485ca8:	8fa40070 	lw	a0,112(sp)
  485cac:	27a50030 	addiu	a1,sp,48
  485cb0:	8f998c58 	lw	t9,-29608(gp)
  485cb4:	00000000 	nop
  485cb8:	0320f809 	jalr	t9
  485cbc:	00000000 	nop
  485cc0:	8fbc0018 	lw	gp,24(sp)
  485cc4:	00000000 	nop
  485cc8:	02001021 	move	v0,s0
}
  485ccc:	8fbf005c 	lw	ra,92(sp)
  485cd0:	8fb50054 	lw	s5,84(sp)
  485cd4:	8fb40050 	lw	s4,80(sp)
  485cd8:	8fb3004c 	lw	s3,76(sp)
  485cdc:	8fb20048 	lw	s2,72(sp)
  485ce0:	8fb10044 	lw	s1,68(sp)
  485ce4:	8fb00040 	lw	s0,64(sp)
  485ce8:	03e00008 	jr	ra
  485cec:	27bd0060 	addiu	sp,sp,96
  485cf0:	240b000a 	li	t3,10
  485cf4:	02802021 	move	a0,s4
  485cf8:	24060040 	li	a2,64
  485cfc:	02203821 	move	a3,s1
  485d00:	afab0010 	sw	t3,16(sp)
  485d04:	8f9980a4 	lw	t9,-32604(gp)
  485d08:	00000000 	nop
  485d0c:	0320f809 	jalr	t9
  485d10:	00000000 	nop
  485d14:	8fbc0018 	lw	gp,24(sp)
  485d18:	1000ffd7 	b	485c78 <splitkeytoid+0x11c>
  485d1c:	2410000a 	li	s0,10
  485d20:	3c06ffff 	lui	a2,0xffff
  485d24:	00a62024 	and	a0,a1,a2
  485d28:	1480ffe8 	bnez	a0,485ccc <splitkeytoid+0x170>
  485d2c:	00001021 	move	v0,zero
  485d30:	00053a02 	srl	a3,a1,0x8
  485d34:	27b10023 	addiu	s1,sp,35
  485d38:	a3a70021 	sb	a3,33(sp)
  485d3c:	a3a00020 	sb	zero,32(sp)
  485d40:	1000ff9e 	b	485bbc <splitkeytoid+0x60>
  485d44:	a3a50022 	sb	a1,34(sp)
	...

00485d50 <dowork>:
  485d50:	3c1c0fb8 	lui	gp,0xfb8
  485d54:	279c6c20 	addiu	gp,gp,27680
  485d58:	0399e021 	addu	gp,gp,t9
  485d5c:	27bdfbb0 	addiu	sp,sp,-1104
  485d60:	afbc0010 	sw	gp,16(sp)
  485d64:	afa50454 	sw	a1,1108(sp)
	int i;
	const char *p;
	struct work wa;		/* for getanarg() */

	f = fopen(filename, "r");
  485d68:	8f85804c 	lw	a1,-32692(gp)
  485d6c:	00000000 	nop
  485d70:	24a58410 	addiu	a1,a1,-31728
  485d74:	00000000 	nop
  485d78:	afbe0444 	sw	s8,1092(sp)
  485d7c:	afb60438 	sw	s6,1080(sp)
  485d80:	afbf0448 	sw	ra,1096(sp)
  485d84:	afbc0440 	sw	gp,1088(sp)
  485d88:	afb7043c 	sw	s7,1084(sp)
  485d8c:	afb50434 	sw	s5,1076(sp)
  485d90:	afb40430 	sw	s4,1072(sp)
  485d94:	afb3042c 	sw	s3,1068(sp)
  485d98:	afb20428 	sw	s2,1064(sp)
  485d9c:	afb10424 	sw	s1,1060(sp)
  485da0:	afb00420 	sw	s0,1056(sp)
  485da4:	afa60458 	sw	a2,1112(sp)
  485da8:	00e0f021 	move	s8,a3
  485dac:	8f99850c 	lw	t9,-31476(gp)
  485db0:	00000000 	nop
  485db4:	0320f809 	jalr	t9
  485db8:	00000000 	nop
  485dbc:	8fbc0010 	lw	gp,16(sp)
  485dc0:	0040b021 	move	s6,v0
	if (f == NULL)
  485dc4:	8f82804c 	lw	v0,-32692(gp)
  485dc8:	00000000 	nop
  485dcc:	24428414 	addiu	v0,v0,-31724
  485dd0:	12c00059 	beqz	s6,485f38 <dowork+0x1e8>
  485dd4:	00000000 	nop
		return "unable to open file";

	newargc = *argcp + SOME;
  485dd8:	8fa20454 	lw	v0,1108(sp)
  485ddc:	00000000 	nop
  485de0:	8c440000 	lw	a0,0(v0)
  485de4:	00000000 	nop
	newargv = malloc((newargc+1) * sizeof(char *));
  485de8:	00041880 	sll	v1,a0,0x2
  485dec:	2470002c 	addiu	s0,v1,44
  485df0:	02002021 	move	a0,s0
  485df4:	8f9989d0 	lw	t9,-30256(gp)
  485df8:	00000000 	nop
  485dfc:	0320f809 	jalr	t9
  485e00:	00000000 	nop
  485e04:	8fbc0010 	lw	gp,16(sp)
  485e08:	00409021 	move	s2,v0
	if (newargv == NULL)
  485e0c:	8f82804c 	lw	v0,-32692(gp)
  485e10:	00000000 	nop
  485e14:	24428428 	addiu	v0,v0,-31704
  485e18:	12400047 	beqz	s2,485f38 <dowork+0x1e8>
  485e1c:	001eb880 	sll	s7,s8,0x2
		return "unable to allocate memory";
	memcpy(newargv, *argvp, optind * sizeof(char *));
  485e20:	8fa60458 	lw	a2,1112(sp)
  485e24:	00000000 	nop
  485e28:	8cc50000 	lw	a1,0(a2)
  485e2c:	02402021 	move	a0,s2
  485e30:	02e03021 	move	a2,s7
  485e34:	8f998a30 	lw	t9,-30160(gp)
  485e38:	00000000 	nop
  485e3c:	0320f809 	jalr	t9
  485e40:	00000000 	nop
  485e44:	8fbc0010 	lw	gp,16(sp)
  485e48:	00000000 	nop
	room = SOME;
	next = optind;

	newargv[next] = NULL;
	wa.pending = NULL;
	while ((p = getanarg(f, &wa, &newargv[next])) == NULL) {
  485e4c:	02008821 	move	s1,s0
  485e50:	02f21821 	addu	v1,s7,s2
  485e54:	2410000a 	li	s0,10
  485e58:	03c09821 	move	s3,s8
  485e5c:	ac600000 	sw	zero,0(v1)
  485e60:	afa0041c 	sw	zero,1052(sp)
  485e64:	0013a880 	sll	s5,s3,0x2
  485e68:	02c02021 	move	a0,s6
  485e6c:	02553021 	addu	a2,s2,s5
  485e70:	27a50018 	addiu	a1,sp,24
  485e74:	8f998048 	lw	t9,-32696(gp)
  485e78:	00000000 	nop
  485e7c:	27396058 	addiu	t9,t9,24664
  485e80:	00000000 	nop
  485e84:	0320f809 	jalr	t9
  485e88:	00000000 	nop
  485e8c:	8fbc0010 	lw	gp,16(sp)
  485e90:	0040a021 	move	s4,v0
  485e94:	12800057 	beqz	s4,485ff4 <dowork+0x2a4>
  485e98:	02402021 	move	a0,s2
  485e9c:	02c02021 	move	a0,s6
  485ea0:	8f9989e4 	lw	t9,-30236(gp)
  485ea4:	00000000 	nop
  485ea8:	0320f809 	jalr	t9
  485eac:	00000000 	nop
  485eb0:	8fbc0010 	lw	gp,16(sp)
  485eb4:	1040002c 	beqz	v0,485f68 <dowork+0x218>
  485eb8:	02c02021 	move	a0,s6
		if (room == 0) {
			newargc += SOME;
			tmp = realloc(newargv, (newargc+1) * sizeof(char *));
			if (tmp == NULL) {
				p = "out of space for new argv";
				break;		/* NOTE BREAK OUT */
			}
			newargv = tmp;
			room += SOME;
		}
		next++;
		room--;
	}
	if (p != NULL && !feof(f)) {	/* error of some kind */
		for (i = optind+1; i <= next; i++)
			if (newargv[i] != NULL)
				free(newargv[i]);
		free(newargv);
		fclose(f);
		return p;
	}

	fclose(f);
  485ebc:	8f9984c0 	lw	t9,-31552(gp)
  485ec0:	00000000 	nop
  485ec4:	0320f809 	jalr	t9
  485ec8:	00000000 	nop
  485ecc:	8fbc0010 	lw	gp,16(sp)
  485ed0:	00000000 	nop
	memcpy(newargv + next, *argvp + optind,
  485ed4:	8fb90454 	lw	t9,1108(sp)
  485ed8:	8fb80458 	lw	t8,1112(sp)
  485edc:	8f360000 	lw	s6,0(t9)
  485ee0:	8f110000 	lw	s1,0(t8)
  485ee4:	02dea023 	subu	s4,s6,s8
  485ee8:	00148080 	sll	s0,s4,0x2
  485eec:	02f12821 	addu	a1,s7,s1
  485ef0:	26060004 	addiu	a2,s0,4
  485ef4:	02b22021 	addu	a0,s5,s2
  485ef8:	8f998a30 	lw	t9,-30160(gp)
  485efc:	00000000 	nop
  485f00:	0320f809 	jalr	t9
  485f04:	00000000 	nop
  485f08:	8fbc0010 	lw	gp,16(sp)
  485f0c:	00000000 	nop
					(*argcp+1-optind) * sizeof(char *));
	*argcp += next - optind;
  485f10:	8faf0454 	lw	t7,1108(sp)
  485f14:	8fab0454 	lw	t3,1108(sp)
  485f18:	8ded0000 	lw	t5,0(t7)
  485f1c:	027e7023 	subu	t6,s3,s8
  485f20:	01ae6021 	addu	t4,t5,t6
  485f24:	ad6c0000 	sw	t4,0(t3)
	*argvp = newargv;
  485f28:	8faa0458 	lw	t2,1112(sp)
  485f2c:	00000000 	nop
	return NULL;
  485f30:	00001021 	move	v0,zero
  485f34:	ad520000 	sw	s2,0(t2)
}
  485f38:	8fbf0448 	lw	ra,1096(sp)
  485f3c:	8fbe0444 	lw	s8,1092(sp)
  485f40:	8fb7043c 	lw	s7,1084(sp)
  485f44:	8fb60438 	lw	s6,1080(sp)
  485f48:	8fb50434 	lw	s5,1076(sp)
  485f4c:	8fb40430 	lw	s4,1072(sp)
  485f50:	8fb3042c 	lw	s3,1068(sp)
  485f54:	8fb20428 	lw	s2,1064(sp)
  485f58:	8fb10424 	lw	s1,1060(sp)
  485f5c:	8fb00420 	lw	s0,1056(sp)
  485f60:	03e00008 	jr	ra
  485f64:	27bd0450 	addiu	sp,sp,1104
  485f68:	27d00001 	addiu	s0,s8,1
  485f6c:	0270282a 	slt	a1,s3,s0
  485f70:	14a00011 	bnez	a1,485fb8 <dowork+0x268>
  485f74:	02402021 	move	a0,s2
  485f78:	00103880 	sll	a3,s0,0x2
  485f7c:	00f28821 	addu	s1,a3,s2
  485f80:	8e280000 	lw	t0,0(s1)
  485f84:	26100001 	addiu	s0,s0,1
  485f88:	26310004 	addiu	s1,s1,4
  485f8c:	11000007 	beqz	t0,485fac <dowork+0x25c>
  485f90:	01002021 	move	a0,t0
  485f94:	8f998094 	lw	t9,-32620(gp)
  485f98:	00000000 	nop
  485f9c:	0320f809 	jalr	t9
  485fa0:	00000000 	nop
  485fa4:	8fbc0010 	lw	gp,16(sp)
  485fa8:	00000000 	nop
  485fac:	0270482a 	slt	t1,s3,s0
  485fb0:	1120fff3 	beqz	t1,485f80 <dowork+0x230>
  485fb4:	02402021 	move	a0,s2
  485fb8:	8f998094 	lw	t9,-32620(gp)
  485fbc:	00000000 	nop
  485fc0:	0320f809 	jalr	t9
  485fc4:	00000000 	nop
  485fc8:	8fbc0010 	lw	gp,16(sp)
  485fcc:	00000000 	nop
  485fd0:	02c02021 	move	a0,s6
  485fd4:	8f9984c0 	lw	t9,-31552(gp)
  485fd8:	00000000 	nop
  485fdc:	0320f809 	jalr	t9
  485fe0:	00000000 	nop
  485fe4:	8fbc0010 	lw	gp,16(sp)
  485fe8:	00000000 	nop
  485fec:	1000ffd2 	b	485f38 <dowork+0x1e8>
  485ff0:	02801021 	move	v0,s4
  485ff4:	12000004 	beqz	s0,486008 <dowork+0x2b8>
  485ff8:	00000000 	nop
  485ffc:	26730001 	addiu	s3,s3,1
  486000:	1000ff98 	b	485e64 <dowork+0x114>
  486004:	2610ffff 	addiu	s0,s0,-1
  486008:	26310028 	addiu	s1,s1,40
  48600c:	02202821 	move	a1,s1
  486010:	8f9985fc 	lw	t9,-31236(gp)
  486014:	00000000 	nop
  486018:	0320f809 	jalr	t9
  48601c:	00000000 	nop
  486020:	8fbc0010 	lw	gp,16(sp)
  486024:	00000000 	nop
  486028:	10400003 	beqz	v0,486038 <dowork+0x2e8>
  48602c:	2410000a 	li	s0,10
  486030:	1000fff2 	b	485ffc <dowork+0x2ac>
  486034:	00409021 	move	s2,v0
  486038:	8f94804c 	lw	s4,-32692(gp)
  48603c:	00000000 	nop
  486040:	26948444 	addiu	s4,s4,-31676
  486044:	00000000 	nop
  486048:	1680ff94 	bnez	s4,485e9c <dowork+0x14c>
  48604c:	02c02021 	move	a0,s6
  486050:	1000ff9a 	b	485ebc <dowork+0x16c>
  486054:	00000000 	nop

00486058 <getanarg>:
  486058:	3c1c0fb8 	lui	gp,0xfb8
  48605c:	279c6918 	addiu	gp,gp,26904
  486060:	0399e021 	addu	gp,gp,t9
  486064:	27bdffc8 	addiu	sp,sp,-56
  486068:	afbc0010 	sw	gp,16(sp)
  48606c:	afb5002c 	sw	s5,44(sp)
  486070:	afb30024 	sw	s3,36(sp)
  486074:	afb20020 	sw	s2,32(sp)
  486078:	afbf0034 	sw	ra,52(sp)
  48607c:	afbc0030 	sw	gp,48(sp)
  486080:	afb40028 	sw	s4,40(sp)
  486084:	afb1001c 	sw	s1,28(sp)
  486088:	afb00018 	sw	s0,24(sp)
  48608c:	00a09021 	move	s2,a1

/*
 - getanarg - get a malloced argument from the file
 */
static const char *		/* NULL for success, else string literal */
getanarg(f, w, linep)
FILE *f;
struct work *w;
char **linep;			/* where to store pointer if successful */
{
	size_t len;
	char *p;
	char *endp;

	while (w->pending == NULL) {	/* no pending line */
  486090:	8e450404 	lw	a1,1028(s2)
  486094:	00000000 	nop
  486098:	00809821 	move	s3,a0
  48609c:	10a00097 	beqz	a1,4862fc <getanarg+0x2a4>
  4860a0:	00c0a821 	move	s5,a2
		if ((w->line = getline(f, w->buf, sizeof(w->buf))) == NULL)
			return "error in line read";	/* caller checks EOF */
		if (w->line[0] != '#' &&
				*(w->line + strspn(w->line, " \t")) != '\0')
			w->pending = w->line;
	}

	if (w->pending == w->line && w->line[0] != '-') {
  4860a4:	8e460400 	lw	a2,1024(s2)
  4860a8:	00000000 	nop
  4860ac:	10a6005d 	beq	a1,a2,486224 <getanarg+0x1cc>
  4860b0:	2407002d 	li	a3,45
		/* fresh plain line */
		w->pending = NULL;
		p = w->line;
		endp = p + strlen(p);
		if (*p == '"' && endp > p+1 && *(endp-1) == '"') {
			p++;
			endp--;
			*endp = '\0';
		}
		if (w->line == w->buf) {
			*linep = malloc(endp - p + 1);
			if (*linep == NULL)
				return "out of memory for new line";
			strcpy(*linep, p);
		} else			/* getline already malloced it */
			*linep = p;
		return NULL;
	}

	/* chip off a piece of a pending line */
	p = w->pending;
  4860b4:	00a08021 	move	s0,a1
	p += strspn(p, " \t");
  4860b8:	8f93804c 	lw	s3,-32692(gp)
  4860bc:	00000000 	nop
  4860c0:	26738460 	addiu	s3,s3,-31648
  4860c4:	02002021 	move	a0,s0
  4860c8:	02602821 	move	a1,s3
  4860cc:	8f998198 	lw	t9,-32360(gp)
  4860d0:	00000000 	nop
  4860d4:	0320f809 	jalr	t9
  4860d8:	00000000 	nop
  4860dc:	8fbc0010 	lw	gp,16(sp)
  4860e0:	02028821 	addu	s1,s0,v0
	endp = p + strcspn(p, " \t");
  4860e4:	02202021 	move	a0,s1
  4860e8:	02602821 	move	a1,s3
  4860ec:	8f9983a8 	lw	t9,-31832(gp)
  4860f0:	00000000 	nop
  4860f4:	0320f809 	jalr	t9
  4860f8:	00000000 	nop
  4860fc:	8fbc0010 	lw	gp,16(sp)
  486100:	02228021 	addu	s0,s1,v0
	len = endp - p;
	if (*endp != '\0') {
  486104:	820c0000 	lb	t4,0(s0)
  486108:	00000000 	nop
  48610c:	1180000b 	beqz	t4,48613c <getanarg+0xe4>
  486110:	0211a023 	subu	s4,s0,s1
		*endp++ = '\0';
  486114:	a2000000 	sb	zero,0(s0)
  486118:	26100001 	addiu	s0,s0,1
		endp += strspn(endp, " \t");
  48611c:	02002021 	move	a0,s0
  486120:	02602821 	move	a1,s3
  486124:	8f998198 	lw	t9,-32360(gp)
  486128:	00000000 	nop
  48612c:	0320f809 	jalr	t9
  486130:	00000000 	nop
  486134:	8fbc0010 	lw	gp,16(sp)
  486138:	02028021 	addu	s0,s0,v0
	}
	/* endp now points to next real character, or to line-end NUL */
	*linep = malloc(len + 1);
  48613c:	26840001 	addiu	a0,s4,1
  486140:	8f9989d0 	lw	t9,-30256(gp)
  486144:	00000000 	nop
  486148:	0320f809 	jalr	t9
  48614c:	00000000 	nop
  486150:	8fbc0010 	lw	gp,16(sp)
  486154:	00000000 	nop
	if (*linep == NULL) {
  486158:	10400023 	beqz	v0,4861e8 <getanarg+0x190>
  48615c:	aea20000 	sw	v0,0(s5)
		if (w->line != w->buf)
			free(w->line);
		return "out of memory for new argument";
	}
	strcpy(*linep, p);
  486160:	00402021 	move	a0,v0
  486164:	02202821 	move	a1,s1
  486168:	8f998c58 	lw	t9,-29608(gp)
  48616c:	00000000 	nop
  486170:	0320f809 	jalr	t9
  486174:	00000000 	nop
  486178:	8fbc0010 	lw	gp,16(sp)
  48617c:	00000000 	nop
	if (*endp == '\0') {
  486180:	820d0000 	lb	t5,0(s0)
  486184:	00000000 	nop
  486188:	11a0000c 	beqz	t5,4861bc <getanarg+0x164>
  48618c:	00000000 	nop
		w->pending = NULL;
		if (w->line != w->buf)
			free(w->line);
	} else
		w->pending = endp;
  486190:	ae500404 	sw	s0,1028(s2)
	return NULL;
  486194:	00001021 	move	v0,zero
}
  486198:	8fbf0034 	lw	ra,52(sp)
  48619c:	8fb5002c 	lw	s5,44(sp)
  4861a0:	8fb40028 	lw	s4,40(sp)
  4861a4:	8fb30024 	lw	s3,36(sp)
  4861a8:	8fb20020 	lw	s2,32(sp)
  4861ac:	8fb1001c 	lw	s1,28(sp)
  4861b0:	8fb00018 	lw	s0,24(sp)
  4861b4:	03e00008 	jr	ra
  4861b8:	27bd0038 	addiu	sp,sp,56
  4861bc:	8e440400 	lw	a0,1024(s2)
  4861c0:	00000000 	nop
  4861c4:	1092fff3 	beq	a0,s2,486194 <getanarg+0x13c>
  4861c8:	ae400404 	sw	zero,1028(s2)
  4861cc:	8f998094 	lw	t9,-32620(gp)
  4861d0:	00000000 	nop
  4861d4:	0320f809 	jalr	t9
  4861d8:	00000000 	nop
  4861dc:	8fbc0010 	lw	gp,16(sp)
  4861e0:	1000ffed 	b	486198 <getanarg+0x140>
  4861e4:	00001021 	move	v0,zero
  4861e8:	8e440400 	lw	a0,1024(s2)
  4861ec:	00000000 	nop
  4861f0:	10920007 	beq	a0,s2,486210 <getanarg+0x1b8>
  4861f4:	00000000 	nop
  4861f8:	8f998094 	lw	t9,-32620(gp)
  4861fc:	00000000 	nop
  486200:	0320f809 	jalr	t9
  486204:	00000000 	nop
  486208:	8fbc0010 	lw	gp,16(sp)
  48620c:	00000000 	nop
  486210:	8f82804c 	lw	v0,-32692(gp)
  486214:	00000000 	nop
  486218:	24428464 	addiu	v0,v0,-31644
  48621c:	1000ffde 	b	486198 <getanarg+0x140>
  486220:	00000000 	nop
  486224:	80a20000 	lb	v0,0(a1)
  486228:	00000000 	nop
  48622c:	1047ffa1 	beq	v0,a3,4860b4 <getanarg+0x5c>
  486230:	00a08821 	move	s1,a1
  486234:	ae400404 	sw	zero,1028(s2)
  486238:	02202021 	move	a0,s1
  48623c:	8f998188 	lw	t9,-32376(gp)
  486240:	00000000 	nop
  486244:	0320f809 	jalr	t9
  486248:	00000000 	nop
  48624c:	8fbc0010 	lw	gp,16(sp)
  486250:	00000000 	nop
  486254:	82250000 	lb	a1,0(s1)
  486258:	24080022 	li	t0,34
  48625c:	10a8001b 	beq	a1,t0,4862cc <getanarg+0x274>
  486260:	02228021 	addu	s0,s1,v0
  486264:	8e450400 	lw	a1,1024(s2)
  486268:	00000000 	nop
  48626c:	10b20003 	beq	a1,s2,48627c <getanarg+0x224>
  486270:	02115823 	subu	t3,s0,s1
  486274:	1000ffc7 	b	486194 <getanarg+0x13c>
  486278:	aeb10000 	sw	s1,0(s5)
  48627c:	25640001 	addiu	a0,t3,1
  486280:	8f9989d0 	lw	t9,-30256(gp)
  486284:	00000000 	nop
  486288:	0320f809 	jalr	t9
  48628c:	00000000 	nop
  486290:	8fbc0010 	lw	gp,16(sp)
  486294:	00402021 	move	a0,v0
  486298:	8f82804c 	lw	v0,-32692(gp)
  48629c:	00000000 	nop
  4862a0:	24428484 	addiu	v0,v0,-31612
  4862a4:	1080ffbc 	beqz	a0,486198 <getanarg+0x140>
  4862a8:	aea40000 	sw	a0,0(s5)
  4862ac:	02202821 	move	a1,s1
  4862b0:	8f998c58 	lw	t9,-29608(gp)
  4862b4:	00000000 	nop
  4862b8:	0320f809 	jalr	t9
  4862bc:	00000000 	nop
  4862c0:	8fbc0010 	lw	gp,16(sp)
  4862c4:	1000ffb4 	b	486198 <getanarg+0x140>
  4862c8:	00001021 	move	v0,zero
  4862cc:	26240001 	addiu	a0,s1,1
  4862d0:	0090482b 	sltu	t1,a0,s0
  4862d4:	1120ffe3 	beqz	t1,486264 <getanarg+0x20c>
  4862d8:	00000000 	nop
  4862dc:	820affff 	lb	t2,-1(s0)
  4862e0:	00000000 	nop
  4862e4:	1545ffdf 	bne	t2,a1,486264 <getanarg+0x20c>
  4862e8:	2603ffff 	addiu	v1,s0,-1
  4862ec:	00608021 	move	s0,v1
  4862f0:	00808821 	move	s1,a0
  4862f4:	1000ffdb 	b	486264 <getanarg+0x20c>
  4862f8:	a2000000 	sb	zero,0(s0)
  4862fc:	24110023 	li	s1,35
  486300:	02602021 	move	a0,s3
  486304:	02402821 	move	a1,s2
  486308:	24060400 	li	a2,1024
  48630c:	8f998048 	lw	t9,-32696(gp)
  486310:	00000000 	nop
  486314:	27396504 	addiu	t9,t9,25860
  486318:	00000000 	nop
  48631c:	0320f809 	jalr	t9
  486320:	00000000 	nop
  486324:	8fbc0010 	lw	gp,16(sp)
  486328:	00408021 	move	s0,v0
  48632c:	02002021 	move	a0,s0
  486330:	8f85804c 	lw	a1,-32692(gp)
  486334:	00000000 	nop
  486338:	24a58460 	addiu	a1,a1,-31648
  48633c:	00000000 	nop
  486340:	8f82804c 	lw	v0,-32692(gp)
  486344:	00000000 	nop
  486348:	244284a0 	addiu	v0,v0,-31584
  48634c:	1200ff92 	beqz	s0,486198 <getanarg+0x140>
  486350:	ae500400 	sw	s0,1024(s2)
  486354:	82030000 	lb	v1,0(s0)
  486358:	00000000 	nop
  48635c:	1071000c 	beq	v1,s1,486390 <getanarg+0x338>
  486360:	00000000 	nop
  486364:	8f998198 	lw	t9,-32360(gp)
  486368:	00000000 	nop
  48636c:	0320f809 	jalr	t9
  486370:	00000000 	nop
  486374:	8fbc0010 	lw	gp,16(sp)
  486378:	02021821 	addu	v1,s0,v0
  48637c:	80640000 	lb	a0,0(v1)
  486380:	00000000 	nop
  486384:	10800002 	beqz	a0,486390 <getanarg+0x338>
  486388:	00000000 	nop
  48638c:	ae500404 	sw	s0,1028(s2)
  486390:	8e450404 	lw	a1,1028(s2)
  486394:	00000000 	nop
  486398:	14a0ff42 	bnez	a1,4860a4 <getanarg+0x4c>
  48639c:	02602021 	move	a0,s3
  4863a0:	1000ffd9 	b	486308 <getanarg+0x2b0>
  4863a4:	02402821 	move	a1,s2

004863a8 <optionsfrom>:
  4863a8:	3c1c0fb8 	lui	gp,0xfb8
  4863ac:	279c65c8 	addiu	gp,gp,26056
  4863b0:	0399e021 	addu	gp,gp,t9
  4863b4:	27bdffd8 	addiu	sp,sp,-40
  4863b8:	afbc0010 	sw	gp,16(sp)
  4863bc:	afb1001c 	sw	s1,28(sp)
  4863c0:	8fb10038 	lw	s1,56(sp)
  4863c4:	afb00018 	sw	s0,24(sp)
  4863c8:	afbf0024 	sw	ra,36(sp)
  4863cc:	afbc0020 	sw	gp,32(sp)
  4863d0:	1220001f 	beqz	s1,486450 <optionsfrom+0xa8>
  4863d4:	00c08021 	move	s0,a2
  4863d8:	8f838018 	lw	v1,-32744(gp)
  4863dc:	00000000 	nop
  4863e0:	246342e0 	addiu	v1,v1,17120
  4863e4:	8c630000 	lw	v1,0(v1)
  4863e8:	00000000 	nop
  4863ec:	24680001 	addiu	t0,v1,1
  4863f0:	29020064 	slti	v0,t0,100
  4863f4:	8f818018 	lw	at,-32744(gp)
  4863f8:	00000000 	nop
  4863fc:	242142e0 	addiu	at,at,17120
  486400:	ac280000 	sw	t0,0(at)
  486404:	10400018 	beqz	v0,486468 <optionsfrom+0xc0>
  486408:	00000000 	nop
  48640c:	8f998048 	lw	t9,-32696(gp)
  486410:	00000000 	nop
  486414:	27395d50 	addiu	t9,t9,23888
  486418:	00000000 	nop
  48641c:	0320f809 	jalr	t9
  486420:	00000000 	nop
  486424:	8fbc0010 	lw	gp,16(sp)
  486428:	00403821 	move	a3,v0
  48642c:	10e00003 	beqz	a3,48643c <optionsfrom+0x94>
  486430:	00000000 	nop
  486434:	16200020 	bnez	s1,4864b8 <optionsfrom+0x110>
  486438:	02202021 	move	a0,s1
  48643c:	8fbf0024 	lw	ra,36(sp)
  486440:	8fb1001c 	lw	s1,28(sp)
  486444:	8fb00018 	lw	s0,24(sp)
  486448:	03e00008 	jr	ra
  48644c:	27bd0028 	addiu	sp,sp,40
  486450:	8f818018 	lw	at,-32744(gp)
  486454:	00000000 	nop
  486458:	242142e0 	addiu	at,at,17120
  48645c:	ac200000 	sw	zero,0(at)
  486460:	1000ffea 	b	48640c <optionsfrom+0x64>
  486464:	00000000 	nop
  486468:	8e040000 	lw	a0,0(s0)
  48646c:	8f85804c 	lw	a1,-32692(gp)
  486470:	00000000 	nop
  486474:	24a584b4 	addiu	a1,a1,-31564
  486478:	8c860000 	lw	a2,0(a0)
  48647c:	01003821 	move	a3,t0
  486480:	02202021 	move	a0,s1
  486484:	8f99878c 	lw	t9,-30836(gp)
  486488:	00000000 	nop
  48648c:	0320f809 	jalr	t9
  486490:	00000000 	nop
  486494:	8fbc0010 	lw	gp,16(sp)
  486498:	00000000 	nop
  48649c:	24040002 	li	a0,2
  4864a0:	8f998224 	lw	t9,-32220(gp)
  4864a4:	00000000 	nop
  4864a8:	0320f809 	jalr	t9
  4864ac:	00000000 	nop
  4864b0:	8fbc0010 	lw	gp,16(sp)
  4864b4:	00000000 	nop
  4864b8:	8e050000 	lw	a1,0(s0)
  4864bc:	00000000 	nop
  4864c0:	8ca60000 	lw	a2,0(a1)
  4864c4:	8f85804c 	lw	a1,-32692(gp)
  4864c8:	00000000 	nop
  4864cc:	24a584e0 	addiu	a1,a1,-31520
  4864d0:	8f99878c 	lw	t9,-30836(gp)
  4864d4:	00000000 	nop
  4864d8:	0320f809 	jalr	t9
  4864dc:	00000000 	nop
  4864e0:	8fbc0010 	lw	gp,16(sp)
  4864e4:	00000000 	nop
  4864e8:	24040002 	li	a0,2
  4864ec:	8f998224 	lw	t9,-32220(gp)
  4864f0:	00000000 	nop
  4864f4:	0320f809 	jalr	t9
  4864f8:	00000000 	nop
  4864fc:	8fbc0010 	lw	gp,16(sp)
  486500:	00000000 	nop

00486504 <getline>:
  486504:	3c1c0fb8 	lui	gp,0xfb8
  486508:	279c646c 	addiu	gp,gp,25708
  48650c:	0399e021 	addu	gp,gp,t9
  486510:	27bdffd8 	addiu	sp,sp,-40
  486514:	afbc0010 	sw	gp,16(sp)
  486518:	afb1001c 	sw	s1,28(sp)
  48651c:	afb00018 	sw	s0,24(sp)
  486520:	00c08821 	move	s1,a2
  486524:	00a08021 	move	s0,a1

/*
 - getline - read a line from the file, trim newline off
 */
static char *			/* pointer to line, NULL for eof/error */
getline(f, buf, bufsize)
FILE *f;
char *buf;			/* buffer to use, if convenient */
size_t bufsize;			/* size of buf */
{
	size_t len;

	if (fgets(buf, bufsize, f) == NULL)
  486528:	00803021 	move	a2,a0
  48652c:	02202821 	move	a1,s1
  486530:	02002021 	move	a0,s0
  486534:	afbf0024 	sw	ra,36(sp)
  486538:	afbc0020 	sw	gp,32(sp)
  48653c:	8f998a70 	lw	t9,-30096(gp)
  486540:	00000000 	nop
  486544:	0320f809 	jalr	t9
  486548:	00000000 	nop
  48654c:	8fbc0010 	lw	gp,16(sp)
  486550:	00402821 	move	a1,v0
  486554:	10a00012 	beqz	a1,4865a0 <getline+0x9c>
  486558:	02002021 	move	a0,s0
		return NULL;
	len = strlen(buf);
  48655c:	8f998188 	lw	t9,-32376(gp)
  486560:	00000000 	nop
  486564:	0320f809 	jalr	t9
  486568:	00000000 	nop
  48656c:	8fbc0010 	lw	gp,16(sp)
  486570:	00403821 	move	a3,v0

	if (len < bufsize-1 || buf[bufsize-1] == '\n') {
  486574:	2623ffff 	addiu	v1,s1,-1
  486578:	00e3302b 	sltu	a2,a3,v1
  48657c:	02072821 	addu	a1,s0,a3
  486580:	02112021 	addu	a0,s0,s1
  486584:	14c0000b 	bnez	a2,4865b4 <getline+0xb0>
  486588:	02001021 	move	v0,s0
  48658c:	8089ffff 	lb	t1,-1(a0)
  486590:	2408000a 	li	t0,10
  486594:	11280007 	beq	t1,t0,4865b4 <getline+0xb0>
  486598:	00000000 	nop
		/* it fit */
		buf[len-1] = '\0';
		return buf;
	}

	/* oh crud, buffer overflow */
	/* for now, to hell with it */
	return NULL;
  48659c:	00001021 	move	v0,zero
}
  4865a0:	8fbf0024 	lw	ra,36(sp)
  4865a4:	8fb1001c 	lw	s1,28(sp)
  4865a8:	8fb00018 	lw	s0,24(sp)
  4865ac:	03e00008 	jr	ra
  4865b0:	27bd0028 	addiu	sp,sp,40
  4865b4:	1000fffa 	b	4865a0 <getline+0x9c>
  4865b8:	a0a0ffff 	sb	zero,-1(a1)
  4865bc:	00000000 	nop

004865c0 <pfkey_msg_hdr_build>:
  4865c0:	3c1c0fb8 	lui	gp,0xfb8
  4865c4:	279c63b0 	addiu	gp,gp,25520
  4865c8:	0399e021 	addu	gp,gp,t9
  4865cc:	27bdffc8 	addiu	sp,sp,-56
  4865d0:	afbc0010 	sw	gp,16(sp)
  4865d4:	afb5002c 	sw	s5,44(sp)
  4865d8:	afb40028 	sw	s4,40(sp)
  4865dc:	afb30024 	sw	s3,36(sp)
  4865e0:	afb20020 	sw	s2,32(sp)
		    uint32_t		seq,
		    uint32_t		pid)
{
	int error = 0;
	struct sadb_msg *pfkey_msg = (struct sadb_msg *)*pfkey_ext;
  4865e4:	00801821 	move	v1,a0
  4865e8:	afbf0034 	sw	ra,52(sp)
  4865ec:	afbc0030 	sw	gp,48(sp)
  4865f0:	afb1001c 	sw	s1,28(sp)
  4865f4:	afb00018 	sw	s0,24(sp)
  4865f8:	8c710000 	lw	s1,0(v1)
  4865fc:	00000000 	nop

	DEBUGGING(
  486600:	8f838598 	lw	v1,-31336(gp)
  486604:	00000000 	nop
  486608:	8c630000 	lw	v1,0(v1)
  48660c:	00000000 	nop
  486610:	afa40038 	sw	a0,56(sp)
  486614:	30b200ff 	andi	s2,a1,0xff
  486618:	30d300ff 	andi	s3,a2,0xff
  48661c:	30f500ff 	andi	s5,a3,0xff
  486620:	1060001d 	beqz	v1,486698 <pfkey_msg_hdr_build+0xd8>
  486624:	0000a021 	move	s4,zero
  486628:	8f84804c 	lw	a0,-32692(gp)
  48662c:	00000000 	nop
  486630:	24848500 	addiu	a0,a0,-31488
  486634:	8f998a08 	lw	t9,-30200(gp)
  486638:	00000000 	nop
  48663c:	0320f809 	jalr	t9
  486640:	00000000 	nop
  486644:	8fbc0010 	lw	gp,16(sp)
  486648:	00000000 	nop
		"pfkey_msg_hdr_build:\n");
	DEBUGGING(
  48664c:	8f848598 	lw	a0,-31336(gp)
  486650:	00000000 	nop
  486654:	8c840000 	lw	a0,0(a0)
  486658:	00000000 	nop
  48665c:	1080000e 	beqz	a0,486698 <pfkey_msg_hdr_build+0xd8>
  486660:	27a80038 	addiu	t0,sp,56
  486664:	8fa60038 	lw	a2,56(sp)
  486668:	00000000 	nop
  48666c:	8cc70000 	lw	a3,0(a2)
  486670:	8f84804c 	lw	a0,-32692(gp)
  486674:	00000000 	nop
  486678:	24848528 	addiu	a0,a0,-31448
  48667c:	01002821 	move	a1,t0
  486680:	8f998be0 	lw	t9,-29728(gp)
  486684:	00000000 	nop
  486688:	0320f809 	jalr	t9
  48668c:	00000000 	nop
  486690:	8fbc0010 	lw	gp,16(sp)
  486694:	00000000 	nop
		"pfkey_msg_hdr_build: "
		"on_entry &pfkey_ext=%p pfkey_ext=%p *pfkey_ext=%p.\n",
		&pfkey_ext,
		pfkey_ext,
		*pfkey_ext);
	/* sanity checks... */
	if(pfkey_msg) {
  486698:	1220001b 	beqz	s1,486708 <pfkey_msg_hdr_build+0x148>
  48669c:	00000000 	nop
		DEBUGGING(
  4866a0:	8f858598 	lw	a1,-31336(gp)
  4866a4:	00000000 	nop
  4866a8:	8ca50000 	lw	a1,0(a1)
  4866ac:	00000000 	nop
  4866b0:	10a0000b 	beqz	a1,4866e0 <pfkey_msg_hdr_build+0x120>
  4866b4:	2414ffea 	li	s4,-22
  4866b8:	8f84804c 	lw	a0,-32692(gp)
  4866bc:	00000000 	nop
  4866c0:	24848584 	addiu	a0,a0,-31356
  4866c4:	8f998a08 	lw	t9,-30200(gp)
  4866c8:	00000000 	nop
  4866cc:	0320f809 	jalr	t9
  4866d0:	00000000 	nop
  4866d4:	8fbc0010 	lw	gp,16(sp)
  4866d8:	00000000 	nop
			"pfkey_msg_hdr_build: "
			"why is pfkey_msg already pointing to something?\n");
		SENDERR(EINVAL);
  4866dc:	2414ffea 	li	s4,-22
	}

	if(!msg_type) {
		DEBUGGING(
			"pfkey_msg_hdr_build: "
			"msg type not set, must be non-zero..\n");
		SENDERR(EINVAL);
	}

	if(msg_type > SADB_MAX) {
		DEBUGGING(
			"pfkey_msg_hdr_build: "
			"msg type too large:%d.\n",
			msg_type);
		SENDERR(EINVAL);
	}

	if(satype > SADB_SATYPE_MAX) {
		DEBUGGING(
			"pfkey_msg_hdr_build: "
			"satype %d > max %d\n", 
			satype, SADB_SATYPE_MAX);
		SENDERR(EINVAL);
	}

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_msg = (struct sadb_msg*)
	     MALLOC(sizeof(struct sadb_msg)))) {
		DEBUGGING(
			"pfkey_msg_hdr_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_msg, 0, sizeof(struct sadb_msg));

	pfkey_msg->sadb_msg_len = sizeof(struct sadb_msg) / IPSEC_PFKEYv2_ALIGN;

	pfkey_msg->sadb_msg_type = msg_type;
	pfkey_msg->sadb_msg_satype = satype;

	pfkey_msg->sadb_msg_version = PF_KEY_V2;
	pfkey_msg->sadb_msg_errno = msg_errno;
	pfkey_msg->sadb_msg_reserved = 0;
	pfkey_msg->sadb_msg_seq = seq;
	pfkey_msg->sadb_msg_pid = pid;
	DEBUGGING(
		"pfkey_msg_hdr_build: "
		"on_exit &pfkey_ext=%p pfkey_ext=%p *pfkey_ext=%p.\n",
		&pfkey_ext,
		pfkey_ext,
		*pfkey_ext);
errlab:
	return error;
  4866e0:	02801021 	move	v0,s4
  4866e4:	8fbf0034 	lw	ra,52(sp)
  4866e8:	8fb5002c 	lw	s5,44(sp)
  4866ec:	8fb40028 	lw	s4,40(sp)
  4866f0:	8fb30024 	lw	s3,36(sp)
  4866f4:	8fb20020 	lw	s2,32(sp)
  4866f8:	8fb1001c 	lw	s1,28(sp)
  4866fc:	8fb00018 	lw	s0,24(sp)
  486700:	03e00008 	jr	ra
  486704:	27bd0038 	addiu	sp,sp,56
  486708:	1240006b 	beqz	s2,4868b8 <pfkey_msg_hdr_build+0x2f8>
  48670c:	2e470012 	sltiu	a3,s2,18
  486710:	14e00012 	bnez	a3,48675c <pfkey_msg_hdr_build+0x19c>
  486714:	2e6a000c 	sltiu	t2,s3,12
  486718:	8f898598 	lw	t1,-31336(gp)
  48671c:	00000000 	nop
  486720:	8d290000 	lw	t1,0(t1)
  486724:	00000000 	nop
  486728:	1120ffec 	beqz	t1,4866dc <pfkey_msg_hdr_build+0x11c>
  48672c:	02402821 	move	a1,s2
  486730:	8f84804c 	lw	a0,-32692(gp)
  486734:	00000000 	nop
  486738:	248485dc 	addiu	a0,a0,-31268
  48673c:	8f998be0 	lw	t9,-29728(gp)
  486740:	00000000 	nop
  486744:	0320f809 	jalr	t9
  486748:	00000000 	nop
  48674c:	8fbc0010 	lw	gp,16(sp)
  486750:	00000000 	nop
  486754:	1000ffe2 	b	4866e0 <pfkey_msg_hdr_build+0x120>
  486758:	2414ffea 	li	s4,-22
  48675c:	15400013 	bnez	t2,4867ac <pfkey_msg_hdr_build+0x1ec>
  486760:	24040010 	li	a0,16
  486764:	8f8b8598 	lw	t3,-31336(gp)
  486768:	00000000 	nop
  48676c:	8d6b0000 	lw	t3,0(t3)
  486770:	00000000 	nop
  486774:	1160ffd9 	beqz	t3,4866dc <pfkey_msg_hdr_build+0x11c>
  486778:	02602821 	move	a1,s3
  48677c:	8f84804c 	lw	a0,-32692(gp)
  486780:	00000000 	nop
  486784:	2484861c 	addiu	a0,a0,-31204
  486788:	2406000b 	li	a2,11
  48678c:	8f998be0 	lw	t9,-29728(gp)
  486790:	00000000 	nop
  486794:	0320f809 	jalr	t9
  486798:	00000000 	nop
  48679c:	8fbc0010 	lw	gp,16(sp)
  4867a0:	00000000 	nop
  4867a4:	1000ffce 	b	4866e0 <pfkey_msg_hdr_build+0x120>
  4867a8:	2414ffea 	li	s4,-22
  4867ac:	8fb00038 	lw	s0,56(sp)
  4867b0:	8f9989d0 	lw	t9,-30256(gp)
  4867b4:	00000000 	nop
  4867b8:	0320f809 	jalr	t9
  4867bc:	00000000 	nop
  4867c0:	8fbc0010 	lw	gp,16(sp)
  4867c4:	00408821 	move	s1,v0
  4867c8:	1220002a 	beqz	s1,486874 <pfkey_msg_hdr_build+0x2b4>
  4867cc:	ae110000 	sw	s1,0(s0)
  4867d0:	02202021 	move	a0,s1
  4867d4:	00002821 	move	a1,zero
  4867d8:	24060010 	li	a2,16
  4867dc:	8f998500 	lw	t9,-31488(gp)
  4867e0:	00000000 	nop
  4867e4:	0320f809 	jalr	t9
  4867e8:	00000000 	nop
  4867ec:	8fbc0010 	lw	gp,16(sp)
  4867f0:	00000000 	nop
  4867f4:	240e0002 	li	t6,2
  4867f8:	a2320001 	sb	s2,1(s1)
  4867fc:	a2330003 	sb	s3,3(s1)
  486800:	a22e0000 	sb	t6,0(s1)
  486804:	a2350002 	sb	s5,2(s1)
  486808:	8faf004c 	lw	t7,76(sp)
  48680c:	00000000 	nop
  486810:	8f8d8598 	lw	t5,-31336(gp)
  486814:	00000000 	nop
  486818:	8dad0000 	lw	t5,0(t5)
  48681c:	00000000 	nop
  486820:	ae2f000c 	sw	t7,12(s1)
  486824:	8fa20048 	lw	v0,72(sp)
  486828:	00000000 	nop
  48682c:	a62e0004 	sh	t6,4(s1)
  486830:	ae220008 	sw	v0,8(s1)
  486834:	11a0ffaa 	beqz	t5,4866e0 <pfkey_msg_hdr_build+0x120>
  486838:	a6200006 	sh	zero,6(s1)
  48683c:	8fa60038 	lw	a2,56(sp)
  486840:	27b00038 	addiu	s0,sp,56
  486844:	8cc70000 	lw	a3,0(a2)
  486848:	8f84804c 	lw	a0,-32692(gp)
  48684c:	00000000 	nop
  486850:	24848658 	addiu	a0,a0,-31144
  486854:	02002821 	move	a1,s0
  486858:	8f998be0 	lw	t9,-29728(gp)
  48685c:	00000000 	nop
  486860:	0320f809 	jalr	t9
  486864:	00000000 	nop
  486868:	8fbc0010 	lw	gp,16(sp)
  48686c:	1000ff9d 	b	4866e4 <pfkey_msg_hdr_build+0x124>
  486870:	02801021 	move	v0,s4
  486874:	8f8c8598 	lw	t4,-31336(gp)
  486878:	00000000 	nop
  48687c:	8d8c0000 	lw	t4,0(t4)
  486880:	00000000 	nop
  486884:	1180000a 	beqz	t4,4868b0 <pfkey_msg_hdr_build+0x2f0>
  486888:	00000000 	nop
  48688c:	8f84804c 	lw	a0,-32692(gp)
  486890:	00000000 	nop
  486894:	248486b0 	addiu	a0,a0,-31056
  486898:	8f998a08 	lw	t9,-30200(gp)
  48689c:	00000000 	nop
  4868a0:	0320f809 	jalr	t9
  4868a4:	00000000 	nop
  4868a8:	8fbc0010 	lw	gp,16(sp)
  4868ac:	00000000 	nop
  4868b0:	1000ff8b 	b	4866e0 <pfkey_msg_hdr_build+0x120>
  4868b4:	2414fff4 	li	s4,-12
  4868b8:	8f868598 	lw	a2,-31336(gp)
  4868bc:	00000000 	nop
  4868c0:	8cc60000 	lw	a2,0(a2)
  4868c4:	00000000 	nop
  4868c8:	10c0ff85 	beqz	a2,4866e0 <pfkey_msg_hdr_build+0x120>
  4868cc:	2414ffea 	li	s4,-22
  4868d0:	8f84804c 	lw	a0,-32692(gp)
  4868d4:	00000000 	nop
  4868d8:	248486f0 	addiu	a0,a0,-30992
  4868dc:	00000000 	nop
  4868e0:	1000ff78 	b	4866c4 <pfkey_msg_hdr_build+0x104>
  4868e4:	00000000 	nop

004868e8 <pfkey_sa_build>:
  4868e8:	3c1c0fb8 	lui	gp,0xfb8
  4868ec:	279c6088 	addiu	gp,gp,24712
  4868f0:	0399e021 	addu	gp,gp,t9
  4868f4:	27bdffa8 	addiu	sp,sp,-88
  4868f8:	afbc0020 	sw	gp,32(sp)
}	

int
pfkey_sa_build(struct sadb_ext **	pfkey_ext,
	       uint16_t			exttype,
	       uint32_t			spi, /* in network order */
	       uint8_t			replay_window,
	       uint8_t			sa_state,
	       uint8_t			auth,
	       uint16_t			encrypt,
	       uint32_t			flags)
{
	int error = 0;
	struct sadb_sa *pfkey_sa = (struct sadb_sa *)*pfkey_ext;

	DEBUGGING(
  4868fc:	8f838598 	lw	v1,-31336(gp)
  486900:	00000000 	nop
  486904:	8c630000 	lw	v1,0(v1)
  486908:	00000000 	nop
  48690c:	afbe004c 	sw	s8,76(sp)
  486910:	afb70044 	sw	s7,68(sp)
  486914:	afb60040 	sw	s6,64(sp)
  486918:	afb5003c 	sw	s5,60(sp)
  48691c:	afb40038 	sw	s4,56(sp)
  486920:	afb30034 	sw	s3,52(sp)
  486924:	afb20030 	sw	s2,48(sp)
  486928:	afb1002c 	sw	s1,44(sp)
  48692c:	afbf0050 	sw	ra,80(sp)
  486930:	afbc0048 	sw	gp,72(sp)
  486934:	afb00028 	sw	s0,40(sp)
  486938:	0080b821 	move	s7,a0
  48693c:	afa60060 	sw	a2,96(sp)
  486940:	30b3ffff 	andi	s3,a1,0xffff
  486944:	30f600ff 	andi	s6,a3,0xff
  486948:	8fbe0074 	lw	s8,116(sp)
  48694c:	93b2006b 	lbu	s2,107(sp)
  486950:	93b4006f 	lbu	s4,111(sp)
  486954:	97b50072 	lhu	s5,114(sp)
  486958:	00000000 	nop
  48695c:	8ef00000 	lw	s0,0(s7)
  486960:	00000000 	nop
  486964:	10600010 	beqz	v1,4869a8 <pfkey_sa_build+0xc0>
  486968:	00008821 	move	s1,zero
  48696c:	00c02821 	move	a1,a2
  486970:	8f84804c 	lw	a0,-32692(gp)
  486974:	00000000 	nop
  486978:	2484873c 	addiu	a0,a0,-30916
  48697c:	02c03021 	move	a2,s6
  486980:	02403821 	move	a3,s2
  486984:	afb40010 	sw	s4,16(sp)
  486988:	afb50014 	sw	s5,20(sp)
  48698c:	afbe0018 	sw	s8,24(sp)
  486990:	8f998be0 	lw	t9,-29728(gp)
  486994:	00000000 	nop
  486998:	0320f809 	jalr	t9
  48699c:	00000000 	nop
  4869a0:	8fbc0020 	lw	gp,32(sp)
  4869a4:	00000000 	nop
		    "pfkey_sa_build: "
		    "spi=%08x replay=%d sa_state=%d auth=%d encrypt=%d flags=%d\n",
		    ntohl(spi), /* in network order */
		    replay_window,
		    sa_state,
		    auth,
		    encrypt,
		    flags);
	/* sanity checks... */
	if(pfkey_sa) {
  4869a8:	1200001e 	beqz	s0,486a24 <pfkey_sa_build+0x13c>
  4869ac:	24040001 	li	a0,1
		DEBUGGING(
  4869b0:	8f838598 	lw	v1,-31336(gp)
  4869b4:	00000000 	nop
  4869b8:	8c630000 	lw	v1,0(v1)
  4869bc:	00000000 	nop
  4869c0:	1060000b 	beqz	v1,4869f0 <pfkey_sa_build+0x108>
  4869c4:	2411ffea 	li	s1,-22
  4869c8:	8f84804c 	lw	a0,-32692(gp)
  4869cc:	00000000 	nop
  4869d0:	24848798 	addiu	a0,a0,-30824
  4869d4:	8f998a08 	lw	t9,-30200(gp)
  4869d8:	00000000 	nop
  4869dc:	0320f809 	jalr	t9
  4869e0:	00000000 	nop
  4869e4:	8fbc0020 	lw	gp,32(sp)
  4869e8:	00000000 	nop
			"pfkey_sa_build: "
			"why is pfkey_sa already pointing to something?\n");
		SENDERR(EINVAL);
  4869ec:	2411ffea 	li	s1,-22
	}

	if(exttype != SADB_EXT_SA &&
	   exttype != SADB_X_EXT_SA2) {
		DEBUGGING(
			"pfkey_sa_build: "
			"invalid exttype=%d.\n",
			exttype);
		SENDERR(EINVAL);
	}

	if(replay_window > 64) {
		DEBUGGING(
			"pfkey_sa_build: "
			"replay window size: %d -- must be 0 <= size <= 64\n",
			replay_window);
		SENDERR(EINVAL);
	}

	if(auth > SADB_AALG_MAX) {
		DEBUGGING(
			"pfkey_sa_build: "
			"auth=%d > SADB_AALG_MAX=%d.\n",
			auth,
			SADB_AALG_MAX);
		SENDERR(EINVAL);
	}

	if(encrypt > SADB_EALG_MAX) {
		DEBUGGING(
			"pfkey_sa_build: "
			"encrypt=%d > SADB_EALG_MAX=%d.\n",
			encrypt,
			SADB_EALG_MAX);
		SENDERR(EINVAL);
	}

	if(sa_state > SADB_SASTATE_MAX) {
		DEBUGGING(
			"pfkey_sa_build: "
			"sa_state=%d exceeds MAX=%d.\n",
			sa_state,
			SADB_SASTATE_MAX);
		SENDERR(EINVAL);
	}

	if(sa_state == SADB_SASTATE_DEAD) {
		DEBUGGING(
			"pfkey_sa_build: "
			"sa_state=%d is DEAD=%d is not allowed.\n",
			sa_state,
			SADB_SASTATE_DEAD);
		SENDERR(EINVAL);
	}
	
	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_sa = (struct sadb_sa*)
	     MALLOC(sizeof(struct sadb_sa)))) {
		DEBUGGING(
			"pfkey_sa_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_sa, 0, sizeof(struct sadb_sa));
	
	pfkey_sa->sadb_sa_len = sizeof(*pfkey_sa) / IPSEC_PFKEYv2_ALIGN;
	pfkey_sa->sadb_sa_exttype = exttype;
	pfkey_sa->sadb_sa_spi = spi;
	pfkey_sa->sadb_sa_replay = replay_window;
	pfkey_sa->sadb_sa_state = sa_state;
	pfkey_sa->sadb_sa_auth = auth;
	pfkey_sa->sadb_sa_encrypt = encrypt;
	pfkey_sa->sadb_sa_flags = flags;

errlab:
	return error;
  4869f0:	02201021 	move	v0,s1
  4869f4:	8fbf0050 	lw	ra,80(sp)
  4869f8:	8fbe004c 	lw	s8,76(sp)
  4869fc:	8fb70044 	lw	s7,68(sp)
  486a00:	8fb60040 	lw	s6,64(sp)
  486a04:	8fb5003c 	lw	s5,60(sp)
  486a08:	8fb40038 	lw	s4,56(sp)
  486a0c:	8fb30034 	lw	s3,52(sp)
  486a10:	8fb20030 	lw	s2,48(sp)
  486a14:	8fb1002c 	lw	s1,44(sp)
  486a18:	8fb00028 	lw	s0,40(sp)
  486a1c:	03e00008 	jr	ra
  486a20:	27bd0058 	addiu	sp,sp,88
  486a24:	12640014 	beq	s3,a0,486a78 <pfkey_sa_build+0x190>
  486a28:	24050013 	li	a1,19
  486a2c:	12650013 	beq	s3,a1,486a7c <pfkey_sa_build+0x194>
  486a30:	2ec70041 	sltiu	a3,s6,65
  486a34:	8f868598 	lw	a2,-31336(gp)
  486a38:	00000000 	nop
  486a3c:	8cc60000 	lw	a2,0(a2)
  486a40:	00000000 	nop
  486a44:	10c0ffe9 	beqz	a2,4869ec <pfkey_sa_build+0x104>
  486a48:	02602821 	move	a1,s3
  486a4c:	8f84804c 	lw	a0,-32692(gp)
  486a50:	00000000 	nop
  486a54:	248487e8 	addiu	a0,a0,-30744
  486a58:	8f998be0 	lw	t9,-29728(gp)
  486a5c:	00000000 	nop
  486a60:	0320f809 	jalr	t9
  486a64:	00000000 	nop
  486a68:	8fbc0020 	lw	gp,32(sp)
  486a6c:	00000000 	nop
  486a70:	1000ffdf 	b	4869f0 <pfkey_sa_build+0x108>
  486a74:	2411ffea 	li	s1,-22
  486a78:	2ec70041 	sltiu	a3,s6,65
  486a7c:	14e00012 	bnez	a3,486ac8 <pfkey_sa_build+0x1e0>
  486a80:	2e890010 	sltiu	t1,s4,16
  486a84:	8f888598 	lw	t0,-31336(gp)
  486a88:	00000000 	nop
  486a8c:	8d080000 	lw	t0,0(t0)
  486a90:	00000000 	nop
  486a94:	1100ffd5 	beqz	t0,4869ec <pfkey_sa_build+0x104>
  486a98:	02c02821 	move	a1,s6
  486a9c:	8f84804c 	lw	a0,-32692(gp)
  486aa0:	00000000 	nop
  486aa4:	24848820 	addiu	a0,a0,-30688
  486aa8:	8f998be0 	lw	t9,-29728(gp)
  486aac:	00000000 	nop
  486ab0:	0320f809 	jalr	t9
  486ab4:	00000000 	nop
  486ab8:	8fbc0020 	lw	gp,32(sp)
  486abc:	00000000 	nop
  486ac0:	1000ffcb 	b	4869f0 <pfkey_sa_build+0x108>
  486ac4:	2411ffea 	li	s1,-22
  486ac8:	15200013 	bnez	t1,486b18 <pfkey_sa_build+0x230>
  486acc:	2eab0100 	sltiu	t3,s5,256
  486ad0:	8f8a8598 	lw	t2,-31336(gp)
  486ad4:	00000000 	nop
  486ad8:	8d4a0000 	lw	t2,0(t2)
  486adc:	00000000 	nop
  486ae0:	1140ffc2 	beqz	t2,4869ec <pfkey_sa_build+0x104>
  486ae4:	02802821 	move	a1,s4
  486ae8:	8f84804c 	lw	a0,-32692(gp)
  486aec:	00000000 	nop
  486af0:	24848874 	addiu	a0,a0,-30604
  486af4:	2406000f 	li	a2,15
  486af8:	8f998be0 	lw	t9,-29728(gp)
  486afc:	00000000 	nop
  486b00:	0320f809 	jalr	t9
  486b04:	00000000 	nop
  486b08:	8fbc0020 	lw	gp,32(sp)
  486b0c:	00000000 	nop
  486b10:	1000ffb7 	b	4869f0 <pfkey_sa_build+0x108>
  486b14:	2411ffea 	li	s1,-22
  486b18:	15600013 	bnez	t3,486b68 <pfkey_sa_build+0x280>
  486b1c:	2e4d0004 	sltiu	t5,s2,4
  486b20:	8f8c8598 	lw	t4,-31336(gp)
  486b24:	00000000 	nop
  486b28:	8d8c0000 	lw	t4,0(t4)
  486b2c:	00000000 	nop
  486b30:	1180ffae 	beqz	t4,4869ec <pfkey_sa_build+0x104>
  486b34:	02a02821 	move	a1,s5
  486b38:	8f84804c 	lw	a0,-32692(gp)
  486b3c:	00000000 	nop
  486b40:	248488b4 	addiu	a0,a0,-30540
  486b44:	240600ff 	li	a2,255
  486b48:	8f998be0 	lw	t9,-29728(gp)
  486b4c:	00000000 	nop
  486b50:	0320f809 	jalr	t9
  486b54:	00000000 	nop
  486b58:	8fbc0020 	lw	gp,32(sp)
  486b5c:	00000000 	nop
  486b60:	1000ffa3 	b	4869f0 <pfkey_sa_build+0x108>
  486b64:	2411ffea 	li	s1,-22
  486b68:	15a00013 	bnez	t5,486bb8 <pfkey_sa_build+0x2d0>
  486b6c:	240f0003 	li	t7,3
  486b70:	8f8e8598 	lw	t6,-31336(gp)
  486b74:	00000000 	nop
  486b78:	8dce0000 	lw	t6,0(t6)
  486b7c:	00000000 	nop
  486b80:	11c0ff9a 	beqz	t6,4869ec <pfkey_sa_build+0x104>
  486b84:	02402821 	move	a1,s2
  486b88:	8f84804c 	lw	a0,-32692(gp)
  486b8c:	00000000 	nop
  486b90:	248488f4 	addiu	a0,a0,-30476
  486b94:	24060003 	li	a2,3
  486b98:	8f998be0 	lw	t9,-29728(gp)
  486b9c:	00000000 	nop
  486ba0:	0320f809 	jalr	t9
  486ba4:	00000000 	nop
  486ba8:	8fbc0020 	lw	gp,32(sp)
  486bac:	00000000 	nop
  486bb0:	1000ff8f 	b	4869f0 <pfkey_sa_build+0x108>
  486bb4:	2411ffea 	li	s1,-22
  486bb8:	124f002f 	beq	s2,t7,486c78 <pfkey_sa_build+0x390>
  486bbc:	24040010 	li	a0,16
  486bc0:	8f9989d0 	lw	t9,-30256(gp)
  486bc4:	00000000 	nop
  486bc8:	0320f809 	jalr	t9
  486bcc:	00000000 	nop
  486bd0:	8fbc0020 	lw	gp,32(sp)
  486bd4:	00408021 	move	s0,v0
  486bd8:	12000016 	beqz	s0,486c34 <pfkey_sa_build+0x34c>
  486bdc:	aef00000 	sw	s0,0(s7)
  486be0:	02002021 	move	a0,s0
  486be4:	00002821 	move	a1,zero
  486be8:	24060010 	li	a2,16
  486bec:	24170002 	li	s7,2
  486bf0:	8f998500 	lw	t9,-31488(gp)
  486bf4:	00000000 	nop
  486bf8:	0320f809 	jalr	t9
  486bfc:	00000000 	nop
  486c00:	8fbc0020 	lw	gp,32(sp)
  486c04:	00000000 	nop
  486c08:	ae1e000c 	sw	s8,12(s0)
  486c0c:	a6170000 	sh	s7,0(s0)
  486c10:	a6130002 	sh	s3,2(s0)
  486c14:	8fb30060 	lw	s3,96(sp)
  486c18:	00000000 	nop
  486c1c:	a2160008 	sb	s6,8(s0)
  486c20:	ae130004 	sw	s3,4(s0)
  486c24:	a2120009 	sb	s2,9(s0)
  486c28:	a214000a 	sb	s4,10(s0)
  486c2c:	1000ff70 	b	4869f0 <pfkey_sa_build+0x108>
  486c30:	a215000b 	sb	s5,11(s0)
  486c34:	8f918598 	lw	s1,-31336(gp)
  486c38:	00000000 	nop
  486c3c:	8e310000 	lw	s1,0(s1)
  486c40:	00000000 	nop
  486c44:	1220000a 	beqz	s1,486c70 <pfkey_sa_build+0x388>
  486c48:	00000000 	nop
  486c4c:	8f84804c 	lw	a0,-32692(gp)
  486c50:	00000000 	nop
  486c54:	24848934 	addiu	a0,a0,-30412
  486c58:	8f998a08 	lw	t9,-30200(gp)
  486c5c:	00000000 	nop
  486c60:	0320f809 	jalr	t9
  486c64:	00000000 	nop
  486c68:	8fbc0020 	lw	gp,32(sp)
  486c6c:	00000000 	nop
  486c70:	1000ff5f 	b	4869f0 <pfkey_sa_build+0x108>
  486c74:	2411fff4 	li	s1,-12
  486c78:	8f908598 	lw	s0,-31336(gp)
  486c7c:	00000000 	nop
  486c80:	8e100000 	lw	s0,0(s0)
  486c84:	00000000 	nop
  486c88:	1200ff58 	beqz	s0,4869ec <pfkey_sa_build+0x104>
  486c8c:	24050003 	li	a1,3
  486c90:	8f84804c 	lw	a0,-32692(gp)
  486c94:	00000000 	nop
  486c98:	24848970 	addiu	a0,a0,-30352
  486c9c:	24060003 	li	a2,3
  486ca0:	8f998be0 	lw	t9,-29728(gp)
  486ca4:	00000000 	nop
  486ca8:	0320f809 	jalr	t9
  486cac:	00000000 	nop
  486cb0:	8fbc0020 	lw	gp,32(sp)
  486cb4:	00000000 	nop
  486cb8:	1000ff4d 	b	4869f0 <pfkey_sa_build+0x108>
  486cbc:	2411ffea 	li	s1,-22

00486cc0 <pfkey_address_build>:
  486cc0:	3c1c0fb8 	lui	gp,0xfb8
  486cc4:	279c5cb0 	addiu	gp,gp,23728
  486cc8:	0399e021 	addu	gp,gp,t9
  486ccc:	27bdff48 	addiu	sp,sp,-184
  486cd0:	afbc0030 	sw	gp,48(sp)
}	

int
pfkey_lifetime_build(struct sadb_ext **	pfkey_ext,
		     uint16_t		exttype,
		     uint32_t		allocations,
		     uint64_t		bytes,
		     uint64_t		addtime,
		     uint64_t		usetime,
		     uint32_t		packets)
{
	int error = 0;
	struct sadb_lifetime *pfkey_lifetime = (struct sadb_lifetime *)*pfkey_ext;

	DEBUGGING(
		"pfkey_lifetime_build:\n");
	/* sanity checks... */
	if(pfkey_lifetime) {
		DEBUGGING(
			"pfkey_lifetime_build: "
			"why is pfkey_lifetime already pointing to something?\n");
		SENDERR(EINVAL);
	}

	if(exttype != SADB_EXT_LIFETIME_CURRENT &&
	   exttype != SADB_EXT_LIFETIME_HARD &&
	   exttype != SADB_EXT_LIFETIME_SOFT) {
		DEBUGGING(
			"pfkey_lifetime_build: "
			"invalid exttype=%d.\n",
			exttype);
		SENDERR(EINVAL);
	}

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_lifetime = (struct sadb_lifetime*)
	     MALLOC(sizeof(struct sadb_lifetime)))) {
		DEBUGGING(
			"pfkey_lifetime_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_lifetime, 0, sizeof(struct sadb_lifetime));

	pfkey_lifetime->sadb_lifetime_len = sizeof(struct sadb_lifetime) / IPSEC_PFKEYv2_ALIGN;
	pfkey_lifetime->sadb_lifetime_exttype = exttype;
	pfkey_lifetime->sadb_lifetime_allocations = allocations;
	pfkey_lifetime->sadb_lifetime_bytes = bytes;
	pfkey_lifetime->sadb_lifetime_addtime = addtime;
	pfkey_lifetime->sadb_lifetime_usetime = usetime;
	pfkey_lifetime->sadb_x_lifetime_packets = packets;

errlab:
	return error;
}

int
pfkey_address_build(struct sadb_ext**	pfkey_ext,
		    uint16_t		exttype,
		    uint8_t		proto,
		    uint8_t		prefixlen,
		    struct sockaddr*	address)
{
	int error = 0;
	int saddr_len = 0;
	char ipaddr_txt[ADDRTOT_BUF + 6/*extra for port number*/];
	struct sadb_address *pfkey_address = (struct sadb_address *)*pfkey_ext;
	
	DEBUGGING(
  486cd4:	8f888598 	lw	t0,-31336(gp)
  486cd8:	00000000 	nop
  486cdc:	8d080000 	lw	t0,0(t0)
  486ce0:	00000000 	nop
  486ce4:	afbe00ac 	sw	s8,172(sp)
  486ce8:	afb700a4 	sw	s7,164(sp)
  486cec:	afb600a0 	sw	s6,160(sp)
  486cf0:	afb5009c 	sw	s5,156(sp)
  486cf4:	afb30094 	sw	s3,148(sp)
  486cf8:	afb1008c 	sw	s1,140(sp)
  486cfc:	afbf00b0 	sw	ra,176(sp)
  486d00:	afbc00a8 	sw	gp,168(sp)
  486d04:	afb40098 	sw	s4,152(sp)
  486d08:	afb20090 	sw	s2,144(sp)
  486d0c:	afb00088 	sw	s0,136(sp)
  486d10:	0080f021 	move	s8,a0
  486d14:	30b6ffff 	andi	s6,a1,0xffff
  486d18:	30d700ff 	andi	s7,a2,0xff
  486d1c:	30f100ff 	andi	s1,a3,0xff
  486d20:	8fb300c8 	lw	s3,200(sp)
  486d24:	00000000 	nop
  486d28:	8fd00000 	lw	s0,0(s8)
  486d2c:	00000000 	nop
  486d30:	11000011 	beqz	t0,486d78 <pfkey_address_build+0xb8>
  486d34:	0000a821 	move	s5,zero
  486d38:	8f84804c 	lw	a0,-32692(gp)
  486d3c:	00000000 	nop
  486d40:	248489b8 	addiu	a0,a0,-30280
  486d44:	02c02821 	move	a1,s6
  486d48:	02e03021 	move	a2,s7
  486d4c:	02203821 	move	a3,s1
  486d50:	8f998be0 	lw	t9,-29728(gp)
  486d54:	00000000 	nop
  486d58:	0320f809 	jalr	t9
  486d5c:	00000000 	nop
  486d60:	8fbc0030 	lw	gp,48(sp)
  486d64:	00000000 	nop
  486d68:	8f888598 	lw	t0,-31336(gp)
  486d6c:	00000000 	nop
  486d70:	8d080000 	lw	t0,0(t0)
  486d74:	00000000 	nop
		"pfkey_address_build: "
		"exttype=%d proto=%d prefixlen=%d\n",
		exttype,
		proto,
		prefixlen);
	/* sanity checks... */
	if(pfkey_address) {
  486d78:	1200001a 	beqz	s0,486de4 <pfkey_address_build+0x124>
  486d7c:	00000000 	nop
		DEBUGGING(
  486d80:	1100000b 	beqz	t0,486db0 <pfkey_address_build+0xf0>
  486d84:	2415ffea 	li	s5,-22
  486d88:	8f84804c 	lw	a0,-32692(gp)
  486d8c:	00000000 	nop
  486d90:	24848a00 	addiu	a0,a0,-30208
  486d94:	8f998a08 	lw	t9,-30200(gp)
  486d98:	00000000 	nop
  486d9c:	0320f809 	jalr	t9
  486da0:	00000000 	nop
  486da4:	8fbc0030 	lw	gp,48(sp)
  486da8:	00000000 	nop
			"pfkey_address_build: "
			"why is pfkey_address already pointing to something?\n");
		SENDERR(EINVAL);
  486dac:	2415ffea 	li	s5,-22
	}

	if (!address)  {
			DEBUGGING("pfkey_address_build: "
				  "address is NULL\n");
			SENDERR(EINVAL);
	}
	
	switch(exttype) {	
	case SADB_EXT_ADDRESS_SRC:
	case SADB_EXT_ADDRESS_DST:
	case SADB_EXT_ADDRESS_PROXY:
	case SADB_X_EXT_ADDRESS_DST2:
	case SADB_X_EXT_ADDRESS_SRC_FLOW:
	case SADB_X_EXT_ADDRESS_DST_FLOW:
	case SADB_X_EXT_ADDRESS_SRC_MASK:
	case SADB_X_EXT_ADDRESS_DST_MASK:
#ifdef NAT_TRAVERSAL
	case SADB_X_EXT_NAT_T_OA:
#endif
		break;
	default:
		DEBUGGING( 
			"pfkey_address_build: "
			"unrecognised ext_type=%d.\n", 
			exttype); 
		SENDERR(EINVAL); 
	}

	switch(address->sa_family) {
	case AF_INET:
		DEBUGGING(
			"pfkey_address_build: "
			"found address family AF_INET.\n");
		saddr_len = sizeof(struct sockaddr_in);
		sprintf(ipaddr_txt, "%d.%d.%d.%d:%d"
			, (((struct sockaddr_in*)address)->sin_addr.s_addr >>  0) & 0xFF
			, (((struct sockaddr_in*)address)->sin_addr.s_addr >>  8) & 0xFF
			, (((struct sockaddr_in*)address)->sin_addr.s_addr >> 16) & 0xFF
			, (((struct sockaddr_in*)address)->sin_addr.s_addr >> 24) & 0xFF
			, ntohs(((struct sockaddr_in*)address)->sin_port));
		break;
	case AF_INET6:
		DEBUGGING(
			"pfkey_address_build: "
			"found address family AF_INET6.\n");
		saddr_len = sizeof(struct sockaddr_in6);
		sprintf(ipaddr_txt, "%x:%x:%x:%x:%x:%x:%x:%x-%x"
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[0])
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[1])
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[2])
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[3])
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[4])
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[5])
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[6])
			, ntohs(((struct sockaddr_in6*)address)->sin6_addr.s6_addr16[7])
			, ntohs(((struct sockaddr_in6*)address)->sin6_port));
		break;
	default:
		DEBUGGING(
			"pfkey_address_build: "
			"address->sa_family=%d not supported.\n",
			address->sa_family);
		SENDERR(EPFNOSUPPORT);
	}

	DEBUGGING(
		"pfkey_address_build: "
		"found address=%s.\n",
		ipaddr_txt);
	if(prefixlen != 0) {
		DEBUGGING(
			"pfkey_address_build: "
			"address prefixes not supported yet.\n");
		SENDERR(EAFNOSUPPORT); /* not supported yet */
	}

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_address = (struct sadb_address*)
	     MALLOC(ALIGN_N(sizeof(struct sadb_address) + saddr_len, IPSEC_PFKEYv2_ALIGN) ))) {
		DEBUGGING(
			"pfkey_lifetime_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_address,
	       0,
	       ALIGN_N(sizeof(struct sadb_address) + saddr_len,
		     IPSEC_PFKEYv2_ALIGN));
	       
	pfkey_address->sadb_address_len = DIVUP(sizeof(struct sadb_address) + saddr_len,
						IPSEC_PFKEYv2_ALIGN);
	
	pfkey_address->sadb_address_exttype = exttype;
	pfkey_address->sadb_address_proto = proto;
	pfkey_address->sadb_address_prefixlen = prefixlen;
	pfkey_address->sadb_address_reserved = 0;

	memcpy((char*)pfkey_address + sizeof(struct sadb_address),
	       address,
	       saddr_len);

#if 0
	for(i = 0; i < sizeof(struct sockaddr_in) - offsetof(struct sockaddr_in, sin_zero); i++) {
		pfkey_address_s_ska.sin_zero[i] = 0;
	}
#endif
	DEBUGGING(
		"pfkey_address_build: "
		"successful.\n");

 errlab:
	return error;
  486db0:	02a01021 	move	v0,s5
  486db4:	8fbf00b0 	lw	ra,176(sp)
  486db8:	8fbe00ac 	lw	s8,172(sp)
  486dbc:	8fb700a4 	lw	s7,164(sp)
  486dc0:	8fb600a0 	lw	s6,160(sp)
  486dc4:	8fb5009c 	lw	s5,156(sp)
  486dc8:	8fb40098 	lw	s4,152(sp)
  486dcc:	8fb30094 	lw	s3,148(sp)
  486dd0:	8fb20090 	lw	s2,144(sp)
  486dd4:	8fb1008c 	lw	s1,140(sp)
  486dd8:	8fb00088 	lw	s0,136(sp)
  486ddc:	03e00008 	jr	ra
  486de0:	27bd00b8 	addiu	sp,sp,184
  486de4:	126000da 	beqz	s3,487150 <pfkey_address_build+0x490>
  486de8:	26c3fffb 	addiu	v1,s6,-5
  486dec:	2c64001a 	sltiu	a0,v1,26
  486df0:	1080000a 	beqz	a0,486e1c <pfkey_address_build+0x15c>
  486df4:	00032880 	sll	a1,v1,0x2
  486df8:	8f84804c 	lw	a0,-32692(gp)
  486dfc:	00000000 	nop
  486e00:	24848cd0 	addiu	a0,a0,-29488
  486e04:	00852021 	addu	a0,a0,a1
  486e08:	8c840000 	lw	a0,0(a0)
  486e0c:	00000000 	nop
  486e10:	009c2021 	addu	a0,a0,gp
  486e14:	00800008 	jr	a0
  486e18:	00000000 	nop
  486e1c:	1100ffe3 	beqz	t0,486dac <pfkey_address_build+0xec>
  486e20:	02c02821 	move	a1,s6
  486e24:	8f84804c 	lw	a0,-32692(gp)
  486e28:	00000000 	nop
  486e2c:	24848a5c 	addiu	a0,a0,-30116
  486e30:	8f998be0 	lw	t9,-29728(gp)
  486e34:	00000000 	nop
  486e38:	0320f809 	jalr	t9
  486e3c:	00000000 	nop
  486e40:	8fbc0030 	lw	gp,48(sp)
  486e44:	00000000 	nop
  486e48:	1000ffd9 	b	486db0 <pfkey_address_build+0xf0>
  486e4c:	2415ffea 	li	s5,-22
  486e50:	96650000 	lhu	a1,0(s3)
  486e54:	24030002 	li	v1,2
  486e58:	10a3009b 	beq	a1,v1,4870c8 <pfkey_address_build+0x408>
  486e5c:	2406000a 	li	a2,10
  486e60:	10a6000e 	beq	a1,a2,486e9c <pfkey_address_build+0x1dc>
  486e64:	00000000 	nop
  486e68:	1100000a 	beqz	t0,486e94 <pfkey_address_build+0x1d4>
  486e6c:	00000000 	nop
  486e70:	8f84804c 	lw	a0,-32692(gp)
  486e74:	00000000 	nop
  486e78:	24848a9c 	addiu	a0,a0,-30052
  486e7c:	8f998be0 	lw	t9,-29728(gp)
  486e80:	00000000 	nop
  486e84:	0320f809 	jalr	t9
  486e88:	00000000 	nop
  486e8c:	8fbc0030 	lw	gp,48(sp)
  486e90:	00000000 	nop
  486e94:	1000ffc6 	b	486db0 <pfkey_address_build+0xf0>
  486e98:	2415ff85 	li	s5,-123
  486e9c:	1100000a 	beqz	t0,486ec8 <pfkey_address_build+0x208>
  486ea0:	00000000 	nop
  486ea4:	8f84804c 	lw	a0,-32692(gp)
  486ea8:	00000000 	nop
  486eac:	24848ae8 	addiu	a0,a0,-29976
  486eb0:	8f998a08 	lw	t9,-30200(gp)
  486eb4:	00000000 	nop
  486eb8:	0320f809 	jalr	t9
  486ebc:	00000000 	nop
  486ec0:	8fbc0030 	lw	gp,48(sp)
  486ec4:	00000000 	nop
  486ec8:	9674000e 	lhu	s4,14(s3)
  486ecc:	96660008 	lhu	a2,8(s3)
  486ed0:	9667000a 	lhu	a3,10(s3)
  486ed4:	9678000c 	lhu	t8,12(s3)
  486ed8:	96720010 	lhu	s2,16(s3)
  486edc:	96700012 	lhu	s0,18(s3)
  486ee0:	966f0014 	lhu	t7,20(s3)
  486ee4:	966e0016 	lhu	t6,22(s3)
  486ee8:	966d0002 	lhu	t5,2(s3)
  486eec:	8f85804c 	lw	a1,-32692(gp)
  486ef0:	00000000 	nop
  486ef4:	24a58b2c 	addiu	a1,a1,-29908
  486ef8:	27a40038 	addiu	a0,sp,56
  486efc:	afb40014 	sw	s4,20(sp)
  486f00:	afb80010 	sw	t8,16(sp)
  486f04:	afb20018 	sw	s2,24(sp)
  486f08:	afb0001c 	sw	s0,28(sp)
  486f0c:	afaf0020 	sw	t7,32(sp)
  486f10:	afae0024 	sw	t6,36(sp)
  486f14:	afad0028 	sw	t5,40(sp)
  486f18:	2414001c 	li	s4,28
  486f1c:	8f9983d0 	lw	t9,-31792(gp)
  486f20:	00000000 	nop
  486f24:	0320f809 	jalr	t9
  486f28:	00000000 	nop
  486f2c:	8fbc0030 	lw	gp,48(sp)
  486f30:	00000000 	nop
  486f34:	8f878598 	lw	a3,-31336(gp)
  486f38:	00000000 	nop
  486f3c:	8ce70000 	lw	a3,0(a3)
  486f40:	00000000 	nop
  486f44:	10e0000a 	beqz	a3,486f70 <pfkey_address_build+0x2b0>
  486f48:	27a50038 	addiu	a1,sp,56
  486f4c:	8f84804c 	lw	a0,-32692(gp)
  486f50:	00000000 	nop
  486f54:	24848b48 	addiu	a0,a0,-29880
  486f58:	8f998be0 	lw	t9,-29728(gp)
  486f5c:	00000000 	nop
  486f60:	0320f809 	jalr	t9
  486f64:	00000000 	nop
  486f68:	8fbc0030 	lw	gp,48(sp)
  486f6c:	00000000 	nop
  486f70:	12200012 	beqz	s1,486fbc <pfkey_address_build+0x2fc>
  486f74:	2699000f 	addiu	t9,s4,15
  486f78:	8f918598 	lw	s1,-31336(gp)
  486f7c:	00000000 	nop
  486f80:	8e310000 	lw	s1,0(s1)
  486f84:	00000000 	nop
  486f88:	1220000a 	beqz	s1,486fb4 <pfkey_address_build+0x2f4>
  486f8c:	00000000 	nop
  486f90:	8f84804c 	lw	a0,-32692(gp)
  486f94:	00000000 	nop
  486f98:	24848b80 	addiu	a0,a0,-29824
  486f9c:	8f998a08 	lw	t9,-30200(gp)
  486fa0:	00000000 	nop
  486fa4:	0320f809 	jalr	t9
  486fa8:	00000000 	nop
  486fac:	8fbc0030 	lw	gp,48(sp)
  486fb0:	00000000 	nop
  486fb4:	1000ff7e 	b	486db0 <pfkey_address_build+0xf0>
  486fb8:	2415ff84 	li	s5,-124
  486fbc:	001990c2 	srl	s2,t9,0x3
  486fc0:	001288c0 	sll	s1,s2,0x3
  486fc4:	02202021 	move	a0,s1
  486fc8:	8f9989d0 	lw	t9,-30256(gp)
  486fcc:	00000000 	nop
  486fd0:	0320f809 	jalr	t9
  486fd4:	00000000 	nop
  486fd8:	8fbc0030 	lw	gp,48(sp)
  486fdc:	00408021 	move	s0,v0
  486fe0:	12000028 	beqz	s0,487084 <pfkey_address_build+0x3c4>
  486fe4:	afd00000 	sw	s0,0(s8)
  486fe8:	02203021 	move	a2,s1
  486fec:	02002021 	move	a0,s0
  486ff0:	00002821 	move	a1,zero
  486ff4:	8f998500 	lw	t9,-31488(gp)
  486ff8:	00000000 	nop
  486ffc:	0320f809 	jalr	t9
  487000:	00000000 	nop
  487004:	8fbc0030 	lw	gp,48(sp)
  487008:	00000000 	nop
  48700c:	a6160002 	sh	s6,2(s0)
  487010:	26040008 	addiu	a0,s0,8
  487014:	a6120000 	sh	s2,0(s0)
  487018:	a2170004 	sb	s7,4(s0)
  48701c:	a2000005 	sb	zero,5(s0)
  487020:	a6000006 	sh	zero,6(s0)
  487024:	02602821 	move	a1,s3
  487028:	02803021 	move	a2,s4
  48702c:	8f998a30 	lw	t9,-30160(gp)
  487030:	00000000 	nop
  487034:	0320f809 	jalr	t9
  487038:	00000000 	nop
  48703c:	8fbc0030 	lw	gp,48(sp)
  487040:	00000000 	nop
  487044:	8f968598 	lw	s6,-31336(gp)
  487048:	00000000 	nop
  48704c:	8ed60000 	lw	s6,0(s6)
  487050:	00000000 	nop
  487054:	12c0ff56 	beqz	s6,486db0 <pfkey_address_build+0xf0>
  487058:	00000000 	nop
  48705c:	8f84804c 	lw	a0,-32692(gp)
  487060:	00000000 	nop
  487064:	24848bcc 	addiu	a0,a0,-29748
  487068:	8f998a08 	lw	t9,-30200(gp)
  48706c:	00000000 	nop
  487070:	0320f809 	jalr	t9
  487074:	00000000 	nop
  487078:	8fbc0030 	lw	gp,48(sp)
  48707c:	1000ff4d 	b	486db4 <pfkey_address_build+0xf4>
  487080:	02a01021 	move	v0,s5
  487084:	8f938598 	lw	s3,-31336(gp)
  487088:	00000000 	nop
  48708c:	8e730000 	lw	s3,0(s3)
  487090:	00000000 	nop
  487094:	1260000a 	beqz	s3,4870c0 <pfkey_address_build+0x400>
  487098:	00000000 	nop
  48709c:	8f84804c 	lw	a0,-32692(gp)
  4870a0:	00000000 	nop
  4870a4:	24848c00 	addiu	a0,a0,-29696
  4870a8:	8f998a08 	lw	t9,-30200(gp)
  4870ac:	00000000 	nop
  4870b0:	0320f809 	jalr	t9
  4870b4:	00000000 	nop
  4870b8:	8fbc0030 	lw	gp,48(sp)
  4870bc:	00000000 	nop
  4870c0:	1000ff3b 	b	486db0 <pfkey_address_build+0xf0>
  4870c4:	2415fff4 	li	s5,-12
  4870c8:	1100000a 	beqz	t0,4870f4 <pfkey_address_build+0x434>
  4870cc:	00000000 	nop
  4870d0:	8f84804c 	lw	a0,-32692(gp)
  4870d4:	00000000 	nop
  4870d8:	24848c40 	addiu	a0,a0,-29632
  4870dc:	8f998a08 	lw	t9,-30200(gp)
  4870e0:	00000000 	nop
  4870e4:	0320f809 	jalr	t9
  4870e8:	00000000 	nop
  4870ec:	8fbc0030 	lw	gp,48(sp)
  4870f0:	00000000 	nop
  4870f4:	8e6b0004 	lw	t3,4(s3)
  4870f8:	96690002 	lhu	t1,2(s3)
  4870fc:	000b6202 	srl	t4,t3,0x8
  487100:	000b1402 	srl	v0,t3,0x10
  487104:	304a00ff 	andi	t2,v0,0xff
  487108:	000b4602 	srl	t0,t3,0x18
  48710c:	318700ff 	andi	a3,t4,0xff
  487110:	316600ff 	andi	a2,t3,0xff
  487114:	8f85804c 	lw	a1,-32692(gp)
  487118:	00000000 	nop
  48711c:	24a58c84 	addiu	a1,a1,-29564
  487120:	27a40038 	addiu	a0,sp,56
  487124:	afaa0010 	sw	t2,16(sp)
  487128:	afa80014 	sw	t0,20(sp)
  48712c:	afa90018 	sw	t1,24(sp)
  487130:	8f9983d0 	lw	t9,-31792(gp)
  487134:	00000000 	nop
  487138:	0320f809 	jalr	t9
  48713c:	00000000 	nop
  487140:	8fbc0030 	lw	gp,48(sp)
  487144:	00000000 	nop
  487148:	1000ff7a 	b	486f34 <pfkey_address_build+0x274>
  48714c:	24140010 	li	s4,16
  487150:	1100ff17 	beqz	t0,486db0 <pfkey_address_build+0xf0>
  487154:	2415ffea 	li	s5,-22
  487158:	8f84804c 	lw	a0,-32692(gp)
  48715c:	00000000 	nop
  487160:	24848c94 	addiu	a0,a0,-29548
  487164:	00000000 	nop
  487168:	1000ff0a 	b	486d94 <pfkey_address_build+0xd4>
  48716c:	00000000 	nop

00487170 <pfkey_key_build>:
  487170:	3c1c0fb8 	lui	gp,0xfb8
  487174:	279c5800 	addiu	gp,gp,22528
  487178:	0399e021 	addu	gp,gp,t9
  48717c:	27bdffc0 	addiu	sp,sp,-64
  487180:	afbc0010 	sw	gp,16(sp)
}

int
pfkey_key_build(struct sadb_ext**	pfkey_ext,
		uint16_t		exttype,
		uint16_t		key_bits,
		char*			key)
{
	int error = 0;
	struct sadb_key *pfkey_key = (struct sadb_key *)*pfkey_ext;

	DEBUGGING(
  487184:	8f838598 	lw	v1,-31336(gp)
  487188:	00000000 	nop
  48718c:	8c630000 	lw	v1,0(v1)
  487190:	00000000 	nop
  487194:	afb70034 	sw	s7,52(sp)
  487198:	afb60030 	sw	s6,48(sp)
  48719c:	afb5002c 	sw	s5,44(sp)
  4871a0:	afb40028 	sw	s4,40(sp)
  4871a4:	afb20020 	sw	s2,32(sp)
  4871a8:	afbf003c 	sw	ra,60(sp)
  4871ac:	afbc0038 	sw	gp,56(sp)
  4871b0:	afb30024 	sw	s3,36(sp)
  4871b4:	afb1001c 	sw	s1,28(sp)
  4871b8:	afb00018 	sw	s0,24(sp)
  4871bc:	0080b021 	move	s6,a0
  4871c0:	00e0b821 	move	s7,a3
  4871c4:	30b4ffff 	andi	s4,a1,0xffff
  4871c8:	30d2ffff 	andi	s2,a2,0xffff
  4871cc:	8ed00000 	lw	s0,0(s6)
  4871d0:	00000000 	nop
  4871d4:	1060000a 	beqz	v1,487200 <pfkey_key_build+0x90>
  4871d8:	0000a821 	move	s5,zero
  4871dc:	8f84804c 	lw	a0,-32692(gp)
  4871e0:	00000000 	nop
  4871e4:	24848d38 	addiu	a0,a0,-29384
  4871e8:	8f998a08 	lw	t9,-30200(gp)
  4871ec:	00000000 	nop
  4871f0:	0320f809 	jalr	t9
  4871f4:	00000000 	nop
  4871f8:	8fbc0010 	lw	gp,16(sp)
  4871fc:	00000000 	nop
		"pfkey_key_build:\n");
	/* sanity checks... */
	if(pfkey_key) {
  487200:	1200001d 	beqz	s0,487278 <pfkey_key_build+0x108>
  487204:	00000000 	nop
		DEBUGGING(
  487208:	8f838598 	lw	v1,-31336(gp)
  48720c:	00000000 	nop
  487210:	8c630000 	lw	v1,0(v1)
  487214:	00000000 	nop
  487218:	1060000b 	beqz	v1,487248 <pfkey_key_build+0xd8>
  48721c:	2415ffea 	li	s5,-22
  487220:	8f84804c 	lw	a0,-32692(gp)
  487224:	00000000 	nop
  487228:	24848d5c 	addiu	a0,a0,-29348
  48722c:	8f998a08 	lw	t9,-30200(gp)
  487230:	00000000 	nop
  487234:	0320f809 	jalr	t9
  487238:	00000000 	nop
  48723c:	8fbc0010 	lw	gp,16(sp)
  487240:	00000000 	nop
			"pfkey_key_build: "
			"why is pfkey_key already pointing to something?\n");
		SENDERR(EINVAL);
  487244:	2415ffea 	li	s5,-22
	}

	if(!key_bits) {
		DEBUGGING(
			"pfkey_key_build: "
			"key_bits is zero, it must be non-zero.\n");
		SENDERR(EINVAL);
	}

	if( !((exttype == SADB_EXT_KEY_AUTH) || (exttype == SADB_EXT_KEY_ENCRYPT))) {
		DEBUGGING(
			"pfkey_key_build: "
			"unsupported extension type=%d.\n",
			exttype);
		SENDERR(EINVAL);
	}

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_key = (struct sadb_key*)
	     MALLOC(sizeof(struct sadb_key) +
				    DIVUP(key_bits, 64) * IPSEC_PFKEYv2_ALIGN))) {
		DEBUGGING(
			"pfkey_key_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_key,
	       0,
	       sizeof(struct sadb_key) +
	       DIVUP(key_bits, 64) * IPSEC_PFKEYv2_ALIGN);
	
	pfkey_key->sadb_key_len = DIVUP(sizeof(struct sadb_key) * IPSEC_PFKEYv2_ALIGN +	key_bits,
					64);
	pfkey_key->sadb_key_exttype = exttype;
	pfkey_key->sadb_key_bits = key_bits;
	pfkey_key->sadb_key_reserved = 0;
	memcpy((char*)pfkey_key + sizeof(struct sadb_key),
	       key,
	       DIVUP(key_bits, 8));

errlab:
	return error;
  487248:	02a01021 	move	v0,s5
  48724c:	8fbf003c 	lw	ra,60(sp)
  487250:	8fb70034 	lw	s7,52(sp)
  487254:	8fb60030 	lw	s6,48(sp)
  487258:	8fb5002c 	lw	s5,44(sp)
  48725c:	8fb40028 	lw	s4,40(sp)
  487260:	8fb30024 	lw	s3,36(sp)
  487264:	8fb20020 	lw	s2,32(sp)
  487268:	8fb1001c 	lw	s1,28(sp)
  48726c:	8fb00018 	lw	s0,24(sp)
  487270:	03e00008 	jr	ra
  487274:	27bd0040 	addiu	sp,sp,64
  487278:	12400056 	beqz	s2,4873d4 <pfkey_key_build+0x264>
  48727c:	00000000 	nop
  487280:	3407fff8 	li	a3,0xfff8
  487284:	00f43821 	addu	a3,a3,s4
  487288:	30e6ffff 	andi	a2,a3,0xffff
  48728c:	2cc50002 	sltiu	a1,a2,2
  487290:	14a00012 	bnez	a1,4872dc <pfkey_key_build+0x16c>
  487294:	2649003f 	addiu	t1,s2,63
  487298:	8f888598 	lw	t0,-31336(gp)
  48729c:	00000000 	nop
  4872a0:	8d080000 	lw	t0,0(t0)
  4872a4:	00000000 	nop
  4872a8:	1100ffe6 	beqz	t0,487244 <pfkey_key_build+0xd4>
  4872ac:	02802821 	move	a1,s4
  4872b0:	8f84804c 	lw	a0,-32692(gp)
  4872b4:	00000000 	nop
  4872b8:	24848db0 	addiu	a0,a0,-29264
  4872bc:	8f998be0 	lw	t9,-29728(gp)
  4872c0:	00000000 	nop
  4872c4:	0320f809 	jalr	t9
  4872c8:	00000000 	nop
  4872cc:	8fbc0010 	lw	gp,16(sp)
  4872d0:	00000000 	nop
  4872d4:	1000ffdc 	b	487248 <pfkey_key_build+0xd8>
  4872d8:	2415ffea 	li	s5,-22
  4872dc:	0520003b 	bltz	t1,4873cc <pfkey_key_build+0x25c>
  4872e0:	01201021 	move	v0,t1
  4872e4:	00025983 	sra	t3,v0,0x6
  4872e8:	000b50c0 	sll	t2,t3,0x3
  4872ec:	25530008 	addiu	s3,t2,8
  4872f0:	02602021 	move	a0,s3
  4872f4:	8f9989d0 	lw	t9,-30256(gp)
  4872f8:	00000000 	nop
  4872fc:	0320f809 	jalr	t9
  487300:	00000000 	nop
  487304:	8fbc0010 	lw	gp,16(sp)
  487308:	00408021 	move	s0,v0
  48730c:	1200001e 	beqz	s0,487388 <pfkey_key_build+0x218>
  487310:	aed00000 	sw	s0,0(s6)
  487314:	02603021 	move	a2,s3
  487318:	02002021 	move	a0,s0
  48731c:	00002821 	move	a1,zero
  487320:	8f998500 	lw	t9,-31488(gp)
  487324:	00000000 	nop
  487328:	0320f809 	jalr	t9
  48732c:	00000000 	nop
  487330:	8fbc0010 	lw	gp,16(sp)
  487334:	00000000 	nop
  487338:	264d007f 	addiu	t5,s2,127
  48733c:	000d1182 	srl	v0,t5,0x6
  487340:	26460007 	addiu	a2,s2,7
  487344:	a6020000 	sh	v0,0(s0)
  487348:	a6140002 	sh	s4,2(s0)
  48734c:	a6120004 	sh	s2,4(s0)
  487350:	04c0000b 	bltz	a2,487380 <pfkey_key_build+0x210>
  487354:	a6000006 	sh	zero,6(s0)
  487358:	000630c3 	sra	a2,a2,0x3
  48735c:	26040008 	addiu	a0,s0,8
  487360:	02e02821 	move	a1,s7
  487364:	8f998a30 	lw	t9,-30160(gp)
  487368:	00000000 	nop
  48736c:	0320f809 	jalr	t9
  487370:	00000000 	nop
  487374:	8fbc0010 	lw	gp,16(sp)
  487378:	1000ffb4 	b	48724c <pfkey_key_build+0xdc>
  48737c:	02a01021 	move	v0,s5
  487380:	1000fff5 	b	487358 <pfkey_key_build+0x1e8>
  487384:	2646000e 	addiu	a2,s2,14
  487388:	8f8c8598 	lw	t4,-31336(gp)
  48738c:	00000000 	nop
  487390:	8d8c0000 	lw	t4,0(t4)
  487394:	00000000 	nop
  487398:	1180000a 	beqz	t4,4873c4 <pfkey_key_build+0x254>
  48739c:	00000000 	nop
  4873a0:	8f84804c 	lw	a0,-32692(gp)
  4873a4:	00000000 	nop
  4873a8:	24848df4 	addiu	a0,a0,-29196
  4873ac:	8f998a08 	lw	t9,-30200(gp)
  4873b0:	00000000 	nop
  4873b4:	0320f809 	jalr	t9
  4873b8:	00000000 	nop
  4873bc:	8fbc0010 	lw	gp,16(sp)
  4873c0:	00000000 	nop
  4873c4:	1000ffa0 	b	487248 <pfkey_key_build+0xd8>
  4873c8:	2415fff4 	li	s5,-12
  4873cc:	1000ffc5 	b	4872e4 <pfkey_key_build+0x174>
  4873d0:	2642007e 	addiu	v0,s2,126
  4873d4:	8f848598 	lw	a0,-31336(gp)
  4873d8:	00000000 	nop
  4873dc:	8c840000 	lw	a0,0(a0)
  4873e0:	00000000 	nop
  4873e4:	1080ff98 	beqz	a0,487248 <pfkey_key_build+0xd8>
  4873e8:	2415ffea 	li	s5,-22
  4873ec:	8f84804c 	lw	a0,-32692(gp)
  4873f0:	00000000 	nop
  4873f4:	24848e30 	addiu	a0,a0,-29136
  4873f8:	00000000 	nop
  4873fc:	1000ff8b 	b	48722c <pfkey_key_build+0xbc>
  487400:	00000000 	nop

00487404 <pfkey_ident_build>:
  487404:	3c1c0fb8 	lui	gp,0xfb8
  487408:	279c556c 	addiu	gp,gp,21868
  48740c:	0399e021 	addu	gp,gp,t9
  487410:	27bdffb8 	addiu	sp,sp,-72
  487414:	afbc0010 	sw	gp,16(sp)
  487418:	afb5002c 	sw	s5,44(sp)
  48741c:	93b50063 	lbu	s5,99(sp)
  487420:	00000000 	nop
}

int
pfkey_ident_build(struct sadb_ext**	pfkey_ext,
		  uint16_t		exttype,
		  uint16_t		ident_type,
		  uint64_t		ident_id,
		  uint8_t               ident_len,
		  char*			ident_string)
{
	int error = 0;
	struct sadb_ident *pfkey_ident = (struct sadb_ident *)*pfkey_ext;
	int data_len = ident_len * IPSEC_PFKEYv2_ALIGN - sizeof(struct sadb_ident);

	DEBUGGING(
  487424:	8f838598 	lw	v1,-31336(gp)
  487428:	00000000 	nop
  48742c:	8c630000 	lw	v1,0(v1)
  487430:	00000000 	nop
  487434:	afbe003c 	sw	s8,60(sp)
  487438:	afb70034 	sw	s7,52(sp)
  48743c:	afb60030 	sw	s6,48(sp)
  487440:	afb40028 	sw	s4,40(sp)
  487444:	afb30024 	sw	s3,36(sp)
  487448:	afb20020 	sw	s2,32(sp)
  48744c:	afb1001c 	sw	s1,28(sp)
  487450:	afbf0040 	sw	ra,64(sp)
  487454:	afbc0038 	sw	gp,56(sp)
  487458:	afb00018 	sw	s0,24(sp)
  48745c:	0080b821 	move	s7,a0
  487460:	001590c0 	sll	s2,s5,0x3
  487464:	30b4ffff 	andi	s4,a1,0xffff
  487468:	30d1ffff 	andi	s1,a2,0xffff
  48746c:	8fbe0064 	lw	s8,100(sp)
  487470:	00000000 	nop
  487474:	00009821 	move	s3,zero
  487478:	8ef00000 	lw	s0,0(s7)
  48747c:	00000000 	nop
  487480:	1060000a 	beqz	v1,4874ac <pfkey_ident_build+0xa8>
  487484:	2656fff0 	addiu	s6,s2,-16
  487488:	8f84804c 	lw	a0,-32692(gp)
  48748c:	00000000 	nop
  487490:	24848e78 	addiu	a0,a0,-29064
  487494:	8f998a08 	lw	t9,-30200(gp)
  487498:	00000000 	nop
  48749c:	0320f809 	jalr	t9
  4874a0:	00000000 	nop
  4874a4:	8fbc0010 	lw	gp,16(sp)
  4874a8:	00000000 	nop
		"pfkey_ident_build:\n");
	/* sanity checks... */
	if(pfkey_ident) {
  4874ac:	1200001e 	beqz	s0,487528 <pfkey_ident_build+0x124>
  4874b0:	00000000 	nop
		DEBUGGING(
  4874b4:	8f838598 	lw	v1,-31336(gp)
  4874b8:	00000000 	nop
  4874bc:	8c630000 	lw	v1,0(v1)
  4874c0:	00000000 	nop
  4874c4:	1060000b 	beqz	v1,4874f4 <pfkey_ident_build+0xf0>
  4874c8:	2413ffea 	li	s3,-22
  4874cc:	8f84804c 	lw	a0,-32692(gp)
  4874d0:	00000000 	nop
  4874d4:	24848e9c 	addiu	a0,a0,-29028
  4874d8:	8f998a08 	lw	t9,-30200(gp)
  4874dc:	00000000 	nop
  4874e0:	0320f809 	jalr	t9
  4874e4:	00000000 	nop
  4874e8:	8fbc0010 	lw	gp,16(sp)
  4874ec:	00000000 	nop
			"pfkey_ident_build: "
			"why is pfkey_ident already pointing to something?\n");
		SENDERR(EINVAL);
  4874f0:	2413ffea 	li	s3,-22
	}

	if( ! ((exttype == SADB_EXT_IDENTITY_SRC) ||
	       (exttype == SADB_EXT_IDENTITY_DST))) {
		DEBUGGING(
			"pfkey_ident_build: "
			"unsupported extension type=%d.\n",
			exttype);
		SENDERR(EINVAL);
	}

	if((ident_type == SADB_IDENTTYPE_RESERVED)) {
		DEBUGGING(
			"pfkey_ident_build: "
			"ident_type must be non-zero.\n");
		SENDERR(EINVAL);
	}

	if(ident_type > SADB_IDENTTYPE_MAX) {
		DEBUGGING(
			"pfkey_ident_build: "
			"identtype=%d out of range.\n",
			ident_type);
		SENDERR(EINVAL);
	}

	if(((ident_type == SADB_IDENTTYPE_PREFIX) ||
	    (ident_type == SADB_IDENTTYPE_FQDN)) &&
	   !ident_string) {
		DEBUGGING(
			"pfkey_ident_build: "
			"string required to allocate size of extension.\n");
		SENDERR(EINVAL);
	}
	
#if 0
	if((ident_type == SADB_IDENTTYPE_USERFQDN) ) {
	}
#endif
	    
	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_ident = (struct sadb_ident*)
	     MALLOC(ident_len * IPSEC_PFKEYv2_ALIGN))) {
		DEBUGGING(
			"pfkey_ident_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_ident, 0, ident_len * IPSEC_PFKEYv2_ALIGN);
	
	pfkey_ident->sadb_ident_len = ident_len;
	pfkey_ident->sadb_ident_exttype = exttype;
	pfkey_ident->sadb_ident_type = ident_type;
	pfkey_ident->sadb_ident_reserved = 0;
	pfkey_ident->sadb_ident_id = ident_id;
	memcpy((char*)pfkey_ident + sizeof(struct sadb_ident),
	       ident_string,
	       data_len);

errlab:
	return error;
  4874f4:	02601021 	move	v0,s3
  4874f8:	8fbf0040 	lw	ra,64(sp)
  4874fc:	8fbe003c 	lw	s8,60(sp)
  487500:	8fb70034 	lw	s7,52(sp)
  487504:	8fb60030 	lw	s6,48(sp)
  487508:	8fb5002c 	lw	s5,44(sp)
  48750c:	8fb40028 	lw	s4,40(sp)
  487510:	8fb30024 	lw	s3,36(sp)
  487514:	8fb20020 	lw	s2,32(sp)
  487518:	8fb1001c 	lw	s1,28(sp)
  48751c:	8fb00018 	lw	s0,24(sp)
  487520:	03e00008 	jr	ra
  487524:	27bd0048 	addiu	sp,sp,72
  487528:	3406fff6 	li	a2,0xfff6
  48752c:	00d43021 	addu	a2,a2,s4
  487530:	30c5ffff 	andi	a1,a2,0xffff
  487534:	2ca40002 	sltiu	a0,a1,2
  487538:	14800012 	bnez	a0,487584 <pfkey_ident_build+0x180>
  48753c:	00000000 	nop
  487540:	8f878598 	lw	a3,-31336(gp)
  487544:	00000000 	nop
  487548:	8ce70000 	lw	a3,0(a3)
  48754c:	00000000 	nop
  487550:	10e0ffe7 	beqz	a3,4874f0 <pfkey_ident_build+0xec>
  487554:	02802821 	move	a1,s4
  487558:	8f84804c 	lw	a0,-32692(gp)
  48755c:	00000000 	nop
  487560:	24848ef4 	addiu	a0,a0,-28940
  487564:	8f998be0 	lw	t9,-29728(gp)
  487568:	00000000 	nop
  48756c:	0320f809 	jalr	t9
  487570:	00000000 	nop
  487574:	8fbc0010 	lw	gp,16(sp)
  487578:	00000000 	nop
  48757c:	1000ffdd 	b	4874f4 <pfkey_ident_build+0xf0>
  487580:	2413ffea 	li	s3,-22
  487584:	1220005d 	beqz	s1,4876fc <pfkey_ident_build+0x2f8>
  487588:	2e290005 	sltiu	t1,s1,5
  48758c:	15200012 	bnez	t1,4875d8 <pfkey_ident_build+0x1d4>
  487590:	00000000 	nop
  487594:	8f8a8598 	lw	t2,-31336(gp)
  487598:	00000000 	nop
  48759c:	8d4a0000 	lw	t2,0(t2)
  4875a0:	00000000 	nop
  4875a4:	1140ffd2 	beqz	t2,4874f0 <pfkey_ident_build+0xec>
  4875a8:	02202821 	move	a1,s1
  4875ac:	8f84804c 	lw	a0,-32692(gp)
  4875b0:	00000000 	nop
  4875b4:	24848f38 	addiu	a0,a0,-28872
  4875b8:	8f998be0 	lw	t9,-29728(gp)
  4875bc:	00000000 	nop
  4875c0:	0320f809 	jalr	t9
  4875c4:	00000000 	nop
  4875c8:	8fbc0010 	lw	gp,16(sp)
  4875cc:	00000000 	nop
  4875d0:	1000ffc8 	b	4874f4 <pfkey_ident_build+0xf0>
  4875d4:	2413ffea 	li	s3,-22
  4875d8:	340dffff 	li	t5,0xffff
  4875dc:	01b16821 	addu	t5,t5,s1
  4875e0:	31acffff 	andi	t4,t5,0xffff
  4875e4:	2d8b0002 	sltiu	t3,t4,2
  4875e8:	11600003 	beqz	t3,4875f8 <pfkey_ident_build+0x1f4>
  4875ec:	02402021 	move	a0,s2
  4875f0:	13c00036 	beqz	s8,4876cc <pfkey_ident_build+0x2c8>
  4875f4:	00000000 	nop
  4875f8:	8f9989d0 	lw	t9,-30256(gp)
  4875fc:	00000000 	nop
  487600:	0320f809 	jalr	t9
  487604:	00000000 	nop
  487608:	8fbc0010 	lw	gp,16(sp)
  48760c:	00408021 	move	s0,v0
  487610:	1200001d 	beqz	s0,487688 <pfkey_ident_build+0x284>
  487614:	aef00000 	sw	s0,0(s7)
  487618:	02403021 	move	a2,s2
  48761c:	02002021 	move	a0,s0
  487620:	00002821 	move	a1,zero
  487624:	8f998500 	lw	t9,-31488(gp)
  487628:	00000000 	nop
  48762c:	0320f809 	jalr	t9
  487630:	00000000 	nop
  487634:	8fbc0010 	lw	gp,16(sp)
  487638:	00000000 	nop
  48763c:	a6150000 	sh	s5,0(s0)
  487640:	a6140002 	sh	s4,2(s0)
  487644:	a6110004 	sh	s1,4(s0)
  487648:	8fb40058 	lw	s4,88(sp)
  48764c:	8fb5005c 	lw	s5,92(sp)
  487650:	00000000 	nop
  487654:	26040010 	addiu	a0,s0,16
  487658:	ae140008 	sw	s4,8(s0)
  48765c:	ae15000c 	sw	s5,12(s0)
  487660:	a6000006 	sh	zero,6(s0)
  487664:	03c02821 	move	a1,s8
  487668:	02c03021 	move	a2,s6
  48766c:	8f998a30 	lw	t9,-30160(gp)
  487670:	00000000 	nop
  487674:	0320f809 	jalr	t9
  487678:	00000000 	nop
  48767c:	8fbc0010 	lw	gp,16(sp)
  487680:	1000ff9d 	b	4874f8 <pfkey_ident_build+0xf4>
  487684:	02601021 	move	v0,s3
  487688:	8f8f8598 	lw	t7,-31336(gp)
  48768c:	00000000 	nop
  487690:	8def0000 	lw	t7,0(t7)
  487694:	00000000 	nop
  487698:	11e0000a 	beqz	t7,4876c4 <pfkey_ident_build+0x2c0>
  48769c:	00000000 	nop
  4876a0:	8f84804c 	lw	a0,-32692(gp)
  4876a4:	00000000 	nop
  4876a8:	24848f78 	addiu	a0,a0,-28808
  4876ac:	8f998a08 	lw	t9,-30200(gp)
  4876b0:	00000000 	nop
  4876b4:	0320f809 	jalr	t9
  4876b8:	00000000 	nop
  4876bc:	8fbc0010 	lw	gp,16(sp)
  4876c0:	00000000 	nop
  4876c4:	1000ff8b 	b	4874f4 <pfkey_ident_build+0xf0>
  4876c8:	2413fff4 	li	s3,-12
  4876cc:	8f8e8598 	lw	t6,-31336(gp)
  4876d0:	00000000 	nop
  4876d4:	8dce0000 	lw	t6,0(t6)
  4876d8:	00000000 	nop
  4876dc:	11c0ff85 	beqz	t6,4874f4 <pfkey_ident_build+0xf0>
  4876e0:	2413ffea 	li	s3,-22
  4876e4:	8f84804c 	lw	a0,-32692(gp)
  4876e8:	00000000 	nop
  4876ec:	24848fb4 	addiu	a0,a0,-28748
  4876f0:	00000000 	nop
  4876f4:	1000ff78 	b	4874d8 <pfkey_ident_build+0xd4>
  4876f8:	00000000 	nop
  4876fc:	8f888598 	lw	t0,-31336(gp)
  487700:	00000000 	nop
  487704:	8d080000 	lw	t0,0(t0)
  487708:	00000000 	nop
  48770c:	1100ff79 	beqz	t0,4874f4 <pfkey_ident_build+0xf0>
  487710:	2413ffea 	li	s3,-22
  487714:	8f84804c 	lw	a0,-32692(gp)
  487718:	00000000 	nop
  48771c:	24849008 	addiu	a0,a0,-28664
  487720:	00000000 	nop
  487724:	1000ff6c 	b	4874d8 <pfkey_ident_build+0xd4>
  487728:	00000000 	nop

0048772c <pfkey_prop_build>:
  48772c:	3c1c0fb8 	lui	gp,0xfb8
  487730:	279c5244 	addiu	gp,gp,21060
  487734:	0399e021 	addu	gp,gp,t9
  487738:	27bdffc0 	addiu	sp,sp,-64
  48773c:	afbc0010 	sw	gp,16(sp)
}

int
pfkey_sens_build(struct sadb_ext**	pfkey_ext,
		 uint32_t		dpd,
		 uint8_t		sens_level,
		 uint8_t		sens_len,
		 uint64_t*		sens_bitmap,
		 uint8_t		integ_level,
		 uint8_t		integ_len,
		 uint64_t*		integ_bitmap)
{
	int error = 0;
	struct sadb_sens *pfkey_sens = (struct sadb_sens *)*pfkey_ext;
	int i;
	uint64_t* bitmap;

	DEBUGGING(
		"pfkey_sens_build:\n");
	/* sanity checks... */
	if(pfkey_sens) {
		DEBUGGING(
			"pfkey_sens_build: "
			"why is pfkey_sens already pointing to something?\n");
		SENDERR(EINVAL);
	}

	DEBUGGING(
		"pfkey_sens_build: "
		"Sorry, I can't build exttype=%d yet.\n",
		(*pfkey_ext)->sadb_ext_type);
	SENDERR(EINVAL); /* don't process these yet */

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_sens = (struct sadb_sens*)
	     MALLOC(sizeof(struct sadb_sens) +
		    (sens_len + integ_len) * sizeof(uint64_t)))) {
		DEBUGGING(
			"pfkey_sens_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_sens,
	       0,
	       sizeof(struct sadb_sens) +
	       (sens_len + integ_len) * sizeof(uint64_t));
	
	pfkey_sens->sadb_sens_len = (sizeof(struct sadb_sens) +
		    (sens_len + integ_len) * sizeof(uint64_t)) / IPSEC_PFKEYv2_ALIGN;
	pfkey_sens->sadb_sens_exttype = SADB_EXT_SENSITIVITY;
	pfkey_sens->sadb_sens_dpd = dpd;
	pfkey_sens->sadb_sens_sens_level = sens_level;
	pfkey_sens->sadb_sens_sens_len = sens_len;
	pfkey_sens->sadb_sens_integ_level = integ_level;
	pfkey_sens->sadb_sens_integ_len = integ_len;
	pfkey_sens->sadb_sens_reserved = 0;

	bitmap = (uint64_t*)((char*)pfkey_ext + sizeof(struct sadb_sens));
	for(i = 0; i < sens_len; i++) {
		*bitmap = sens_bitmap[i];
		bitmap++;
	}
	for(i = 0; i < integ_len; i++) {
		*bitmap = integ_bitmap[i];
		bitmap++;
	}

errlab:
	return error;
}

int
pfkey_prop_build(struct sadb_ext**	pfkey_ext,
		 uint8_t		replay,
		 unsigned int		comb_num,
		 struct sadb_comb*	comb)
{
	int error = 0;
	int i;
	struct sadb_prop *pfkey_prop = (struct sadb_prop *)*pfkey_ext;
	struct sadb_comb *combp;

	DEBUGGING(
  487740:	8f838598 	lw	v1,-31336(gp)
  487744:	00000000 	nop
  487748:	8c630000 	lw	v1,0(v1)
  48774c:	00000000 	nop
  487750:	afb60030 	sw	s6,48(sp)
  487754:	afb5002c 	sw	s5,44(sp)
  487758:	afb40028 	sw	s4,40(sp)
  48775c:	afb30024 	sw	s3,36(sp)
  487760:	afb20020 	sw	s2,32(sp)
  487764:	afbf0038 	sw	ra,56(sp)
  487768:	afbc0034 	sw	gp,52(sp)
  48776c:	afb1001c 	sw	s1,28(sp)
  487770:	afb00018 	sw	s0,24(sp)
  487774:	00809821 	move	s3,a0
  487778:	00c09021 	move	s2,a2
  48777c:	00e0b021 	move	s6,a3
  487780:	30b400ff 	andi	s4,a1,0xff
  487784:	8e700000 	lw	s0,0(s3)
  487788:	00000000 	nop
  48778c:	1060000a 	beqz	v1,4877b8 <pfkey_prop_build+0x8c>
  487790:	0000a821 	move	s5,zero
  487794:	8f84804c 	lw	a0,-32692(gp)
  487798:	00000000 	nop
  48779c:	24849048 	addiu	a0,a0,-28600
  4877a0:	8f998a08 	lw	t9,-30200(gp)
  4877a4:	00000000 	nop
  4877a8:	0320f809 	jalr	t9
  4877ac:	00000000 	nop
  4877b0:	8fbc0010 	lw	gp,16(sp)
  4877b4:	00000000 	nop
		"pfkey_prop_build:\n");
	/* sanity checks... */
	if(pfkey_prop) {
  4877b8:	1200001b 	beqz	s0,487828 <pfkey_prop_build+0xfc>
  4877bc:	00123080 	sll	a2,s2,0x2
		DEBUGGING(
  4877c0:	8f838598 	lw	v1,-31336(gp)
  4877c4:	00000000 	nop
  4877c8:	8c630000 	lw	v1,0(v1)
  4877cc:	00000000 	nop
  4877d0:	1060000a 	beqz	v1,4877fc <pfkey_prop_build+0xd0>
  4877d4:	2415ffea 	li	s5,-22
  4877d8:	8f84804c 	lw	a0,-32692(gp)
  4877dc:	00000000 	nop
  4877e0:	2484906c 	addiu	a0,a0,-28564
  4877e4:	8f998a08 	lw	t9,-30200(gp)
  4877e8:	00000000 	nop
  4877ec:	0320f809 	jalr	t9
  4877f0:	00000000 	nop
  4877f4:	8fbc0010 	lw	gp,16(sp)
  4877f8:	00000000 	nop
			"pfkey_prop_build: "
			"why is pfkey_prop already pointing to something?\n");
		SENDERR(EINVAL);
	}

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_prop = (struct sadb_prop*)
	     MALLOC(sizeof(struct sadb_prop) +
		    comb_num * sizeof(struct sadb_comb)))) {
		DEBUGGING(
			"pfkey_prop_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_prop,
	       0,
	       sizeof(struct sadb_prop) +
		    comb_num * sizeof(struct sadb_comb));
	
	pfkey_prop->sadb_prop_len = (sizeof(struct sadb_prop) +
		    comb_num * sizeof(struct sadb_comb)) / IPSEC_PFKEYv2_ALIGN;

	pfkey_prop->sadb_prop_exttype = SADB_EXT_PROPOSAL;
	pfkey_prop->sadb_prop_replay = replay;

	for(i=0; i<3; i++) {
		pfkey_prop->sadb_prop_reserved[i] = 0;
	}

	combp = (struct sadb_comb*)((char*)*pfkey_ext + sizeof(struct sadb_prop));
	for(i = 0; i < comb_num; i++) {
		memcpy (combp, &(comb[i]), sizeof(struct sadb_comb));
		combp++;
	}

#if 0
  uint8_t sadb_comb_auth;
  uint8_t sadb_comb_encrypt;
  uint16_t sadb_comb_flags;
  uint16_t sadb_comb_auth_minbits;
  uint16_t sadb_comb_auth_maxbits;
  uint16_t sadb_comb_encrypt_minbits;
  uint16_t sadb_comb_encrypt_maxbits;
  uint32_t sadb_comb_reserved;
  uint32_t sadb_comb_soft_allocations;
  uint32_t sadb_comb_hard_allocations;
  uint64_t sadb_comb_soft_bytes;
  uint64_t sadb_comb_hard_bytes;
  uint64_t sadb_comb_soft_addtime;
  uint64_t sadb_comb_hard_addtime;
  uint64_t sadb_comb_soft_usetime;
  uint64_t sadb_comb_hard_usetime;
  uint32_t sadb_comb_soft_packets;
  uint32_t sadb_comb_hard_packets;
#endif
errlab:
	return error;
  4877fc:	02a01021 	move	v0,s5
  487800:	8fbf0038 	lw	ra,56(sp)
  487804:	8fb60030 	lw	s6,48(sp)
  487808:	8fb5002c 	lw	s5,44(sp)
  48780c:	8fb40028 	lw	s4,40(sp)
  487810:	8fb30024 	lw	s3,36(sp)
  487814:	8fb20020 	lw	s2,32(sp)
  487818:	8fb1001c 	lw	s1,28(sp)
  48781c:	8fb00018 	lw	s0,24(sp)
  487820:	03e00008 	jr	ra
  487824:	27bd0040 	addiu	sp,sp,64
  487828:	00d22821 	addu	a1,a2,s2
  48782c:	00052100 	sll	a0,a1,0x4
  487830:	24910008 	addiu	s1,a0,8
  487834:	02202021 	move	a0,s1
  487838:	8f9989d0 	lw	t9,-30256(gp)
  48783c:	00000000 	nop
  487840:	0320f809 	jalr	t9
  487844:	00000000 	nop
  487848:	8fbc0010 	lw	gp,16(sp)
  48784c:	00408021 	move	s0,v0
  487850:	12000031 	beqz	s0,487918 <pfkey_prop_build+0x1ec>
  487854:	ae700000 	sw	s0,0(s3)
  487858:	02002021 	move	a0,s0
  48785c:	02203021 	move	a2,s1
  487860:	00002821 	move	a1,zero
  487864:	8f998500 	lw	t9,-31488(gp)
  487868:	00000000 	nop
  48786c:	0320f809 	jalr	t9
  487870:	00000000 	nop
  487874:	8fbc0010 	lw	gp,16(sp)
  487878:	00000000 	nop
  48787c:	001110c2 	srl	v0,s1,0x3
  487880:	2408000d 	li	t0,13
  487884:	a6020000 	sh	v0,0(s0)
  487888:	a6080002 	sh	t0,2(s0)
  48788c:	a2140004 	sb	s4,4(s0)
  487890:	26040005 	addiu	a0,s0,5
  487894:	00003021 	move	a2,zero
  487898:	00865021 	addu	t2,a0,a2
  48789c:	24c60001 	addiu	a2,a2,1
  4878a0:	28c90003 	slti	t1,a2,3
  4878a4:	1520fffc 	bnez	t1,487898 <pfkey_prop_build+0x16c>
  4878a8:	a1400000 	sb	zero,0(t2)
  4878ac:	8e6b0000 	lw	t3,0(s3)
  4878b0:	00000000 	nop
  4878b4:	00003021 	move	a2,zero
  4878b8:	1240ffd0 	beqz	s2,4877fc <pfkey_prop_build+0xd0>
  4878bc:	25640008 	addiu	a0,t3,8
  4878c0:	02c03821 	move	a3,s6
  4878c4:	00801821 	move	v1,a0
  4878c8:	00e01021 	move	v0,a3
  4878cc:	24e50050 	addiu	a1,a3,80
  4878d0:	8c480000 	lw	t0,0(v0)
  4878d4:	8c490004 	lw	t1,4(v0)
  4878d8:	8c4a0008 	lw	t2,8(v0)
  4878dc:	8c4b000c 	lw	t3,12(v0)
  4878e0:	ac680000 	sw	t0,0(v1)
  4878e4:	ac690004 	sw	t1,4(v1)
  4878e8:	ac6a0008 	sw	t2,8(v1)
  4878ec:	ac6b000c 	sw	t3,12(v1)
  4878f0:	24420010 	addiu	v0,v0,16
  4878f4:	1445fff6 	bne	v0,a1,4878d0 <pfkey_prop_build+0x1a4>
  4878f8:	24630010 	addiu	v1,v1,16
  4878fc:	24c60001 	addiu	a2,a2,1
  487900:	00d2602b 	sltu	t4,a2,s2
  487904:	24840050 	addiu	a0,a0,80
  487908:	1580ffee 	bnez	t4,4878c4 <pfkey_prop_build+0x198>
  48790c:	24e70050 	addiu	a3,a3,80
  487910:	1000ffbb 	b	487800 <pfkey_prop_build+0xd4>
  487914:	02a01021 	move	v0,s5
  487918:	8f878598 	lw	a3,-31336(gp)
  48791c:	00000000 	nop
  487920:	8ce70000 	lw	a3,0(a3)
  487924:	00000000 	nop
  487928:	10e0000a 	beqz	a3,487954 <pfkey_prop_build+0x228>
  48792c:	00000000 	nop
  487930:	8f84804c 	lw	a0,-32692(gp)
  487934:	00000000 	nop
  487938:	248490c0 	addiu	a0,a0,-28480
  48793c:	8f998a08 	lw	t9,-30200(gp)
  487940:	00000000 	nop
  487944:	0320f809 	jalr	t9
  487948:	00000000 	nop
  48794c:	8fbc0010 	lw	gp,16(sp)
  487950:	00000000 	nop
  487954:	1000ffa9 	b	4877fc <pfkey_prop_build+0xd0>
  487958:	2415fff4 	li	s5,-12

0048795c <pfkey_x_satype_build>:
  48795c:	3c1c0fb8 	lui	gp,0xfb8
  487960:	279c5014 	addiu	gp,gp,20500
  487964:	0399e021 	addu	gp,gp,t9
  487968:	27bdffd0 	addiu	sp,sp,-48
  48796c:	afbc0010 	sw	gp,16(sp)
}

int
pfkey_supported_build(struct sadb_ext**	pfkey_ext,
		      uint16_t		exttype,
		      unsigned int	alg_num,
		      struct sadb_alg*	alg)
{
	int error = 0;
	unsigned int i;
	struct sadb_supported *pfkey_supported = (struct sadb_supported *)*pfkey_ext;
	struct sadb_alg *pfkey_alg;

	/* sanity checks... */
	if(pfkey_supported) {
		DEBUGGING(
			"pfkey_supported_build: "
			"why is pfkey_supported already pointing to something?\n");
		SENDERR(EINVAL);
	}

	if( !((exttype == SADB_EXT_SUPPORTED_AUTH) || (exttype == SADB_EXT_SUPPORTED_ENCRYPT))) {
		DEBUGGING(
			"pfkey_supported_build: "
			"unsupported extension type=%d.\n",
			exttype);
		SENDERR(EINVAL);
	}

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_supported = (struct sadb_supported*)
	     MALLOC(sizeof(struct sadb_supported) +
					       alg_num *
					       sizeof(struct sadb_alg)))) {
		DEBUGGING(
			"pfkey_supported_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_supported,
	       0,
	       sizeof(struct sadb_supported) +
					       alg_num *
					       sizeof(struct sadb_alg));
	
	pfkey_supported->sadb_supported_len = (sizeof(struct sadb_supported) +
					       alg_num *
					       sizeof(struct sadb_alg)) /
						IPSEC_PFKEYv2_ALIGN;
	pfkey_supported->sadb_supported_exttype = exttype;
	pfkey_supported->sadb_supported_reserved = 0;

	pfkey_alg = (struct sadb_alg*)((char*)pfkey_supported + sizeof(struct sadb_supported));
	for(i = 0; i < alg_num; i++) {
		memcpy (pfkey_alg, &(alg[i]), sizeof(struct sadb_alg));
		pfkey_alg->sadb_alg_reserved = 0;
		pfkey_alg++;
	}
	
#if 0
	DEBUGGING(
		"pfkey_supported_build: "
		"Sorry, I can't build exttype=%d yet.\n",
		(*pfkey_ext)->sadb_ext_type);
	SENDERR(EINVAL); /* don't process these yet */

  uint8_t sadb_alg_id;
  uint8_t sadb_alg_ivlen;
  uint16_t sadb_alg_minbits;
  uint16_t sadb_alg_maxbits;
  uint16_t sadb_alg_reserved;
#endif
errlab:
	return error;
}

int
pfkey_spirange_build(struct sadb_ext**	pfkey_ext,
		     uint16_t		exttype,
		     uint32_t		min, /* in network order */
		     uint32_t		max) /* in network order */
{
	int error = 0;
	struct sadb_spirange *pfkey_spirange = (struct sadb_spirange *)*pfkey_ext;
	
	/* sanity checks... */
	if(pfkey_spirange) {
		DEBUGGING(
			"pfkey_spirange_build: "
			"why is pfkey_spirange already pointing to something?\n");
		SENDERR(EINVAL);
	}
	
        if(ntohl(max) < ntohl(min)) {
		DEBUGGING(
			"pfkey_spirange_build: "
			"minspi=%08x must be < maxspi=%08x.\n",
			ntohl(min),
			ntohl(max));
                SENDERR(EINVAL);
        }
	
	if(ntohl(min) <= 255) {
		DEBUGGING(
			"pfkey_spirange_build: "
			"minspi=%08x must be > 255.\n",
			ntohl(min));
		SENDERR(EEXIST);
	}
	
	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_spirange = (struct sadb_spirange*)
	     MALLOC(sizeof(struct sadb_spirange)))) {
		DEBUGGING(
			"pfkey_spirange_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_spirange,
	       0,
	       sizeof(struct sadb_spirange));
	
        pfkey_spirange->sadb_spirange_len = sizeof(struct sadb_spirange) / IPSEC_PFKEYv2_ALIGN;

	pfkey_spirange->sadb_spirange_exttype = SADB_EXT_SPIRANGE;
	pfkey_spirange->sadb_spirange_min = min;
	pfkey_spirange->sadb_spirange_max = max;
	pfkey_spirange->sadb_spirange_reserved = 0;
 errlab:
	return error;
}

int
pfkey_x_kmprivate_build(struct sadb_ext**	pfkey_ext)
{
	int error = 0;
	struct sadb_x_kmprivate *pfkey_x_kmprivate = (struct sadb_x_kmprivate *)*pfkey_ext;

	/* sanity checks... */
	if(pfkey_x_kmprivate) {
		DEBUGGING(
			"pfkey_x_kmprivate_build: "
			"why is pfkey_x_kmprivate already pointing to something?\n");
		SENDERR(EINVAL);
	}
	
	pfkey_x_kmprivate->sadb_x_kmprivate_reserved = 0;

	DEBUGGING(
		"pfkey_x_kmprivate_build: "
		"Sorry, I can't build exttype=%d yet.\n",
		(*pfkey_ext)->sadb_ext_type);
	SENDERR(EINVAL); /* don't process these yet */

	if(!(*pfkey_ext = (struct sadb_ext*)
	     pfkey_x_kmprivate = (struct sadb_x_kmprivate*)
	     MALLOC(sizeof(struct sadb_x_kmprivate)))) {
		DEBUGGING(
			"pfkey_x_kmprivate_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_x_kmprivate,
	       0,
	       sizeof(struct sadb_x_kmprivate));
	
        pfkey_x_kmprivate->sadb_x_kmprivate_len =
		sizeof(struct sadb_x_kmprivate) / IPSEC_PFKEYv2_ALIGN;

        pfkey_x_kmprivate->sadb_x_kmprivate_exttype = SADB_X_EXT_KMPRIVATE;
        pfkey_x_kmprivate->sadb_x_kmprivate_reserved = 0;
errlab:
	return error;
}

int
pfkey_x_satype_build(struct sadb_ext**	pfkey_ext,
		     uint8_t		satype)
{
	int error = 0;
	int i;
	struct sadb_x_satype *pfkey_x_satype = (struct sadb_x_satype *)*pfkey_ext;

	DEBUGGING(
  487970:	8f838598 	lw	v1,-31336(gp)
  487974:	00000000 	nop
  487978:	8c630000 	lw	v1,0(v1)
  48797c:	00000000 	nop
  487980:	afb30024 	sw	s3,36(sp)
  487984:	afb20020 	sw	s2,32(sp)
  487988:	afb1001c 	sw	s1,28(sp)
  48798c:	afbf002c 	sw	ra,44(sp)
  487990:	afbc0028 	sw	gp,40(sp)
  487994:	afb00018 	sw	s0,24(sp)
  487998:	00809821 	move	s3,a0
  48799c:	30b100ff 	andi	s1,a1,0xff
  4879a0:	8e700000 	lw	s0,0(s3)
  4879a4:	00000000 	nop
  4879a8:	1060000a 	beqz	v1,4879d4 <pfkey_x_satype_build+0x78>
  4879ac:	00009021 	move	s2,zero
  4879b0:	8f84804c 	lw	a0,-32692(gp)
  4879b4:	00000000 	nop
  4879b8:	248490fc 	addiu	a0,a0,-28420
  4879bc:	8f998a08 	lw	t9,-30200(gp)
  4879c0:	00000000 	nop
  4879c4:	0320f809 	jalr	t9
  4879c8:	00000000 	nop
  4879cc:	8fbc0010 	lw	gp,16(sp)
  4879d0:	00000000 	nop
		"pfkey_x_satype_build:\n");
	/* sanity checks... */
	if(pfkey_x_satype) {
  4879d4:	12000019 	beqz	s0,487a3c <pfkey_x_satype_build+0xe0>
  4879d8:	00000000 	nop
		DEBUGGING(
  4879dc:	8f838598 	lw	v1,-31336(gp)
  4879e0:	00000000 	nop
  4879e4:	8c630000 	lw	v1,0(v1)
  4879e8:	00000000 	nop
  4879ec:	1060000b 	beqz	v1,487a1c <pfkey_x_satype_build+0xc0>
  4879f0:	2412ffea 	li	s2,-22
  4879f4:	8f84804c 	lw	a0,-32692(gp)
  4879f8:	00000000 	nop
  4879fc:	24849124 	addiu	a0,a0,-28380
  487a00:	8f998a08 	lw	t9,-30200(gp)
  487a04:	00000000 	nop
  487a08:	0320f809 	jalr	t9
  487a0c:	00000000 	nop
  487a10:	8fbc0010 	lw	gp,16(sp)
  487a14:	00000000 	nop
			"pfkey_x_satype_build: "
			"why is pfkey_x_satype already pointing to something?\n");
		SENDERR(EINVAL);
  487a18:	2412ffea 	li	s2,-22
	}
	
	if(!satype) {
		DEBUGGING(
			"pfkey_x_satype_build: "
			"SA type not set, must be non-zero.\n");
		SENDERR(EINVAL);
	}

	if(satype > SADB_SATYPE_MAX) {
		DEBUGGING(
			"pfkey_x_satype_build: "
			"satype %d > max %d\n", 
			satype, SADB_SATYPE_MAX);
		SENDERR(EINVAL);
	}

	if(!(*pfkey_ext = (struct sadb_ext*)pfkey_x_satype = (struct sadb_x_satype*)
	     MALLOC(sizeof(struct sadb_x_satype)))) {
		DEBUGGING(
			"pfkey_x_satype_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	memset(pfkey_x_satype,
	       0,
	       sizeof(struct sadb_x_satype));
	
        pfkey_x_satype->sadb_x_satype_len = sizeof(struct sadb_x_satype) / IPSEC_PFKEYv2_ALIGN;

	pfkey_x_satype->sadb_x_satype_exttype = SADB_X_EXT_SATYPE2;
	pfkey_x_satype->sadb_x_satype_satype = satype;
	for(i=0; i<3; i++) {
		pfkey_x_satype->sadb_x_satype_reserved[i] = 0;
	}

errlab:
	return error;
  487a1c:	02401021 	move	v0,s2
  487a20:	8fbf002c 	lw	ra,44(sp)
  487a24:	8fb30024 	lw	s3,36(sp)
  487a28:	8fb20020 	lw	s2,32(sp)
  487a2c:	8fb1001c 	lw	s1,28(sp)
  487a30:	8fb00018 	lw	s0,24(sp)
  487a34:	03e00008 	jr	ra
  487a38:	27bd0030 	addiu	sp,sp,48
  487a3c:	12200045 	beqz	s1,487b54 <pfkey_x_satype_build+0x1f8>
  487a40:	2e25000c 	sltiu	a1,s1,12
  487a44:	14a00013 	bnez	a1,487a94 <pfkey_x_satype_build+0x138>
  487a48:	24040008 	li	a0,8
  487a4c:	8f868598 	lw	a2,-31336(gp)
  487a50:	00000000 	nop
  487a54:	8cc60000 	lw	a2,0(a2)
  487a58:	00000000 	nop
  487a5c:	10c0ffee 	beqz	a2,487a18 <pfkey_x_satype_build+0xbc>
  487a60:	02202821 	move	a1,s1
  487a64:	8f84804c 	lw	a0,-32692(gp)
  487a68:	00000000 	nop
  487a6c:	24849180 	addiu	a0,a0,-28288
  487a70:	2406000b 	li	a2,11
  487a74:	8f998be0 	lw	t9,-29728(gp)
  487a78:	00000000 	nop
  487a7c:	0320f809 	jalr	t9
  487a80:	00000000 	nop
  487a84:	8fbc0010 	lw	gp,16(sp)
  487a88:	00000000 	nop
  487a8c:	1000ffe3 	b	487a1c <pfkey_x_satype_build+0xc0>
  487a90:	2412ffea 	li	s2,-22
  487a94:	8f9989d0 	lw	t9,-30256(gp)
  487a98:	00000000 	nop
  487a9c:	0320f809 	jalr	t9
  487aa0:	00000000 	nop
  487aa4:	8fbc0010 	lw	gp,16(sp)
  487aa8:	00408021 	move	s0,v0
  487aac:	12000018 	beqz	s0,487b10 <pfkey_x_satype_build+0x1b4>
  487ab0:	ae700000 	sw	s0,0(s3)
  487ab4:	02002021 	move	a0,s0
  487ab8:	00002821 	move	a1,zero
  487abc:	24060008 	li	a2,8
  487ac0:	8f998500 	lw	t9,-31488(gp)
  487ac4:	00000000 	nop
  487ac8:	0320f809 	jalr	t9
  487acc:	00000000 	nop
  487ad0:	8fbc0010 	lw	gp,16(sp)
  487ad4:	00000000 	nop
  487ad8:	24020001 	li	v0,1
  487adc:	24080012 	li	t0,18
  487ae0:	a6020000 	sh	v0,0(s0)
  487ae4:	a6080002 	sh	t0,2(s0)
  487ae8:	a2110004 	sb	s1,4(s0)
  487aec:	26040005 	addiu	a0,s0,5
  487af0:	00002821 	move	a1,zero
  487af4:	00855021 	addu	t2,a0,a1
  487af8:	24a50001 	addiu	a1,a1,1
  487afc:	28a90003 	slti	t1,a1,3
  487b00:	1520fffc 	bnez	t1,487af4 <pfkey_x_satype_build+0x198>
  487b04:	a1400000 	sb	zero,0(t2)
  487b08:	1000ffc5 	b	487a20 <pfkey_x_satype_build+0xc4>
  487b0c:	02401021 	move	v0,s2
  487b10:	8f878598 	lw	a3,-31336(gp)
  487b14:	00000000 	nop
  487b18:	8ce70000 	lw	a3,0(a3)
  487b1c:	00000000 	nop
  487b20:	10e0000a 	beqz	a3,487b4c <pfkey_x_satype_build+0x1f0>
  487b24:	00000000 	nop
  487b28:	8f84804c 	lw	a0,-32692(gp)
  487b2c:	00000000 	nop
  487b30:	248491bc 	addiu	a0,a0,-28228
  487b34:	8f998a08 	lw	t9,-30200(gp)
  487b38:	00000000 	nop
  487b3c:	0320f809 	jalr	t9
  487b40:	00000000 	nop
  487b44:	8fbc0010 	lw	gp,16(sp)
  487b48:	00000000 	nop
  487b4c:	1000ffb3 	b	487a1c <pfkey_x_satype_build+0xc0>
  487b50:	2412fff4 	li	s2,-12
  487b54:	8f848598 	lw	a0,-31336(gp)
  487b58:	00000000 	nop
  487b5c:	8c840000 	lw	a0,0(a0)
  487b60:	00000000 	nop
  487b64:	1080ffad 	beqz	a0,487a1c <pfkey_x_satype_build+0xc0>
  487b68:	2412ffea 	li	s2,-22
  487b6c:	8f84804c 	lw	a0,-32692(gp)
  487b70:	00000000 	nop
  487b74:	248491fc 	addiu	a0,a0,-28164
  487b78:	00000000 	nop
  487b7c:	1000ffa0 	b	487a00 <pfkey_x_satype_build+0xa4>
  487b80:	00000000 	nop

00487b84 <pfkey_msg_build>:
  487b84:	3c1c0fb8 	lui	gp,0xfb8
  487b88:	279c4dec 	addiu	gp,gp,19948
  487b8c:	0399e021 	addu	gp,gp,t9
  487b90:	27bdff38 	addiu	sp,sp,-200
  487b94:	afbc0018 	sw	gp,24(sp)
  487b98:	afb700bc 	sw	s7,188(sp)
  487b9c:	afb400b0 	sw	s4,176(sp)
  487ba0:	afb300ac 	sw	s3,172(sp)
  487ba4:	afb200a8 	sw	s2,168(sp)
  487ba8:	afb100a4 	sw	s1,164(sp)
  487bac:	00a09821 	move	s3,a1
  487bb0:	afbf00c4 	sw	ra,196(sp)
  487bb4:	afbc00c0 	sw	gp,192(sp)
  487bb8:	afb600b8 	sw	s6,184(sp)
  487bbc:	afb500b4 	sw	s5,180(sp)
  487bc0:	afb000a0 	sw	s0,160(sp)
}

int
pfkey_x_debug_build(struct sadb_ext**	pfkey_ext,
		    uint32_t            tunnel,
		    uint32_t		netlink,
		    uint32_t		xform,
		    uint32_t		eroute,
		    uint32_t		spi,
		    uint32_t		radij,
		    uint32_t		esp,
		    uint32_t		ah,
		    uint32_t		rcv,
		    uint32_t            pfkey,
		    uint32_t            ipcomp,
		    uint32_t            verbose)
{
	int error = 0;
	int i;
	struct sadb_x_debug *pfkey_x_debug = (struct sadb_x_debug *)*pfkey_ext;

	DEBUGGING(
		"pfkey_x_debug_build:\n");
	/* sanity checks... */
	if(pfkey_x_debug) {
		DEBUGGING(
			"pfkey_x_debug_build: "
			"why is pfkey_x_debug already pointing to something?\n");
		SENDERR(EINVAL);
	}
	
	DEBUGGING(
		"pfkey_x_debug_build: "
		"tunnel=%x netlink=%x xform=%x eroute=%x spi=%x radij=%x esp=%x ah=%x rcv=%x pfkey=%x ipcomp=%x verbose=%x?\n",
		tunnel, netlink, xform, eroute, spi, radij, esp, ah, rcv, pfkey, ipcomp, verbose);

	if(!(*pfkey_ext = (struct sadb_ext*)pfkey_x_debug = (struct sadb_x_debug*)
	     MALLOC(sizeof(struct sadb_x_debug)))) {
		DEBUGGING(
			"pfkey_x_debug_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
#if 0
	memset(pfkey_x_debug,
	       0,
	       sizeof(struct sadb_x_debug));
#endif
	
        pfkey_x_debug->sadb_x_debug_len = sizeof(struct sadb_x_debug) / IPSEC_PFKEYv2_ALIGN;
	pfkey_x_debug->sadb_x_debug_exttype = SADB_X_EXT_DEBUG;

	pfkey_x_debug->sadb_x_debug_tunnel = tunnel;
	pfkey_x_debug->sadb_x_debug_netlink = netlink;
	pfkey_x_debug->sadb_x_debug_xform = xform;
	pfkey_x_debug->sadb_x_debug_eroute = eroute;
	pfkey_x_debug->sadb_x_debug_spi = spi;
	pfkey_x_debug->sadb_x_debug_radij = radij;
	pfkey_x_debug->sadb_x_debug_esp = esp;
	pfkey_x_debug->sadb_x_debug_ah = ah;
	pfkey_x_debug->sadb_x_debug_rcv = rcv;
	pfkey_x_debug->sadb_x_debug_pfkey = pfkey;
	pfkey_x_debug->sadb_x_debug_ipcomp = ipcomp;
	pfkey_x_debug->sadb_x_debug_verbose = verbose;

	for(i=0; i<4; i++) {
		pfkey_x_debug->sadb_x_debug_reserved[i] = 0;
	}

errlab:
	return error;
}

#ifdef NAT_TRAVERSAL
int
pfkey_x_nat_t_type_build(struct sadb_ext**	pfkey_ext,
		    uint8_t         type)
{
	int error = 0;
	int i;
	struct sadb_x_nat_t_type *pfkey_x_nat_t_type = (struct sadb_x_nat_t_type *)*pfkey_ext;

	DEBUGGING(
		"pfkey_x_nat_t_type_build:\n");
	/* sanity checks... */
	if(pfkey_x_nat_t_type) {
		DEBUGGING(
			"pfkey_x_nat_t_type_build: "
			"why is pfkey_x_nat_t_type already pointing to something?\n");
		SENDERR(EINVAL);
	}
	
	DEBUGGING(
		"pfkey_x_nat_t_type_build: "
		"type=%d\n", type);

	if(!(*pfkey_ext = (struct sadb_ext*)pfkey_x_nat_t_type = (struct sadb_x_nat_t_type*)
	     MALLOC(sizeof(struct sadb_x_nat_t_type)))) {
		DEBUGGING(
			"pfkey_x_nat_t_type_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	
	pfkey_x_nat_t_type->sadb_x_nat_t_type_len = sizeof(struct sadb_x_nat_t_type) / IPSEC_PFKEYv2_ALIGN;
	pfkey_x_nat_t_type->sadb_x_nat_t_type_exttype = SADB_X_EXT_NAT_T_TYPE;
	pfkey_x_nat_t_type->sadb_x_nat_t_type_type = type;
	for(i=0; i<3; i++) {
		pfkey_x_nat_t_type->sadb_x_nat_t_type_reserved[i] = 0;
	}

errlab:
	return error;
}
int
pfkey_x_nat_t_port_build(struct sadb_ext**	pfkey_ext,
		    uint16_t         exttype,
		    uint16_t         port)
{
	int error = 0;
	struct sadb_x_nat_t_port *pfkey_x_nat_t_port = (struct sadb_x_nat_t_port *)*pfkey_ext;

	DEBUGGING(
		"pfkey_x_nat_t_port_build:\n");
	/* sanity checks... */
	if(pfkey_x_nat_t_port) {
		DEBUGGING(
			"pfkey_x_nat_t_port_build: "
			"why is pfkey_x_nat_t_port already pointing to something?\n");
		SENDERR(EINVAL);
	}
	
	switch(exttype) {	
	case SADB_X_EXT_NAT_T_SPORT:
	case SADB_X_EXT_NAT_T_DPORT:
		break;
	default:
		DEBUGGING( 
			"pfkey_nat_t_port_build: "
			"unrecognised ext_type=%d.\n", 
			exttype); 
		SENDERR(EINVAL); 
	}

	DEBUGGING(
		"pfkey_x_nat_t_port_build: "
		"ext=%d, port=%d\n", exttype, port);

	if(!(*pfkey_ext = (struct sadb_ext*)pfkey_x_nat_t_port = (struct sadb_x_nat_t_port*)
	     MALLOC(sizeof(struct sadb_x_nat_t_port)))) {
		DEBUGGING(
			"pfkey_x_nat_t_port_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	
	pfkey_x_nat_t_port->sadb_x_nat_t_port_len = sizeof(struct sadb_x_nat_t_port) / IPSEC_PFKEYv2_ALIGN;
	pfkey_x_nat_t_port->sadb_x_nat_t_port_exttype = exttype;
	pfkey_x_nat_t_port->sadb_x_nat_t_port_port = port;
	pfkey_x_nat_t_port->sadb_x_nat_t_port_reserved = 0;

errlab:
	return error;
}
#endif

int pfkey_x_protocol_build(struct sadb_ext **pfkey_ext,
			   uint8_t protocol)
{
	int error = 0;
	struct sadb_protocol * p = (struct sadb_protocol *)*pfkey_ext;
	DEBUGGING("pfkey_x_protocol_build: protocol=%u\n", protocol);
	/* sanity checks... */
	if (p != 0) {
		DEBUGGING("pfkey_x_protocol_build: bogus protocol pointer\n");
		SENDERR(EINVAL);
	}
	if ((p = (struct sadb_protocol*)MALLOC(sizeof(*p))) == 0) {
		DEBUGGING("pfkey_build: memory allocation failed\n");
		SENDERR(ENOMEM);
	}
	*pfkey_ext = (struct sadb_ext *)p;
	p->sadb_protocol_len = sizeof(*p) / sizeof(uint64_t);
	p->sadb_protocol_exttype = SADB_X_EXT_PROTOCOL;
	p->sadb_protocol_proto = protocol;
	p->sadb_protocol_flags = 0;
	p->sadb_protocol_reserved2 = 0;
 errlab:
	return error;
}

#if I_DONT_THINK_THIS_WILL_BE_USEFUL
int (*ext_default_builders[SADB_EXT_MAX +1])(struct sadb_msg*, struct sadb_ext*)
 =
{
	NULL, /* pfkey_msg_build, */
	pfkey_sa_build,
	pfkey_lifetime_build,
	pfkey_lifetime_build,
	pfkey_lifetime_build,
	pfkey_address_build,
	pfkey_address_build,
	pfkey_address_build,
	pfkey_key_build,
	pfkey_key_build,
	pfkey_ident_build,
	pfkey_ident_build,
	pfkey_sens_build,
	pfkey_prop_build,
	pfkey_supported_build,
	pfkey_supported_build,
	pfkey_spirange_build,
	pfkey_x_kmprivate_build,
	pfkey_x_satype_build,
	pfkey_sa_build,
	pfkey_address_build,
	pfkey_address_build,
	pfkey_address_build,
	pfkey_address_build,
	pfkey_address_build,
	pfkey_x_ext_debug_build
};
#endif

int
pfkey_msg_build(struct sadb_msg **pfkey_msg, struct sadb_ext *extensions[], int dir)
{
	int error = 0;
	int ext;
	int total_size;
	struct sadb_ext *pfkey_ext;
	int extensions_seen = 0;
	struct sadb_ext *extensions_check[SADB_EXT_MAX + 1];
	
	if(!extensions[0]) {
  487bc4:	8e650000 	lw	a1,0(s3)
  487bc8:	00000000 	nop
  487bcc:	0080a021 	move	s4,a0
  487bd0:	00c0b821 	move	s7,a2
		DEBUGGING(
			"pfkey_msg_build: "
			"extensions[0] must be specified (struct sadb_msg).\n");
		SENDERR(EINVAL);
	}

	total_size = sizeof(struct sadb_msg) / IPSEC_PFKEYv2_ALIGN;
  487bd4:	24120002 	li	s2,2
	for(ext = 1; ext <= SADB_EXT_MAX; ext++) {
  487bd8:	26630004 	addiu	v1,s3,4
  487bdc:	10a00101 	beqz	a1,487fe4 <pfkey_msg_build+0x460>
  487be0:	2411001d 	li	s1,29
		if(extensions[ext]) {
  487be4:	8c620000 	lw	v0,0(v1)
  487be8:	2631ffff 	addiu	s1,s1,-1
  487bec:	10400004 	beqz	v0,487c00 <pfkey_msg_build+0x7c>
  487bf0:	24630004 	addiu	v1,v1,4
			total_size += (extensions[ext])->sadb_ext_len;
  487bf4:	94440000 	lhu	a0,0(v0)
  487bf8:	00000000 	nop
  487bfc:	02449021 	addu	s2,s2,a0
  487c00:	0621fff8 	bgez	s1,487be4 <pfkey_msg_build+0x60>
  487c04:	001280c0 	sll	s0,s2,0x3
		}
        }                

	if(!(*pfkey_msg = (struct sadb_msg*)MALLOC(total_size * IPSEC_PFKEYv2_ALIGN))) {
  487c08:	02002021 	move	a0,s0
  487c0c:	8f9989d0 	lw	t9,-30256(gp)
  487c10:	00000000 	nop
  487c14:	0320f809 	jalr	t9
  487c18:	00000000 	nop
  487c1c:	8fbc0018 	lw	gp,24(sp)
  487c20:	00402821 	move	a1,v0
  487c24:	10a000de 	beqz	a1,487fa0 <pfkey_msg_build+0x41c>
  487c28:	ae850000 	sw	a1,0(s4)
		DEBUGGING(
			"pfkey_msg_build: "
			"memory allocation failed\n");
		SENDERR(ENOMEM);
	}

	DEBUGGING(
  487c2c:	8f868598 	lw	a2,-31336(gp)
  487c30:	00000000 	nop
  487c34:	8cc60000 	lw	a2,0(a2)
  487c38:	00000000 	nop
  487c3c:	10c0000b 	beqz	a2,487c6c <pfkey_msg_build+0xe8>
  487c40:	02003021 	move	a2,s0
  487c44:	8f84804c 	lw	a0,-32692(gp)
  487c48:	00000000 	nop
  487c4c:	24849248 	addiu	a0,a0,-28088
  487c50:	02603821 	move	a3,s3
  487c54:	8f998be0 	lw	t9,-29728(gp)
  487c58:	00000000 	nop
  487c5c:	0320f809 	jalr	t9
  487c60:	00000000 	nop
  487c64:	8fbc0018 	lw	gp,24(sp)
  487c68:	00000000 	nop
		"pfkey_msg_build: "
		"pfkey_msg=%p allocated %lu bytes, &(extensions[0])=%p\n",
		*pfkey_msg,
		(unsigned long) (total_size * IPSEC_PFKEYv2_ALIGN),
		&(extensions[0]));
	memcpy(*pfkey_msg,
  487c6c:	8e6a0000 	lw	t2,0(s3)
  487c70:	8e890000 	lw	t1,0(s4)
  487c74:	00000000 	nop
	       extensions[0],
	       sizeof(struct sadb_msg));
	(*pfkey_msg)->sadb_msg_len = total_size;
	(*pfkey_msg)->sadb_msg_reserved = 0;
	extensions_seen =  1 ;

	pfkey_ext = (struct sadb_ext*)(((char*)(*pfkey_msg)) + sizeof(struct sadb_msg));

	for(ext = 1; ext <= SADB_EXT_MAX; ext++) {
  487c78:	0017a8c0 	sll	s5,s7,0x3
  487c7c:	85430000 	lh	v1,0(t2)
  487c80:	85450002 	lh	a1,2(t2)
  487c84:	85460004 	lh	a2,4(t2)
  487c88:	85470006 	lh	a3,6(t2)
  487c8c:	a5230000 	sh	v1,0(t1)
  487c90:	a5250002 	sh	a1,2(t1)
  487c94:	a5260004 	sh	a2,4(t1)
  487c98:	a5270006 	sh	a3,6(t1)
  487c9c:	85430008 	lh	v1,8(t2)
  487ca0:	8545000a 	lh	a1,10(t2)
  487ca4:	8546000c 	lh	a2,12(t2)
  487ca8:	8547000e 	lh	a3,14(t2)
  487cac:	a5230008 	sh	v1,8(t1)
  487cb0:	a525000a 	sh	a1,10(t1)
  487cb4:	a526000c 	sh	a2,12(t1)
  487cb8:	a527000e 	sh	a3,14(t1)
  487cbc:	8e880000 	lw	t0,0(s4)
  487cc0:	00000000 	nop
  487cc4:	02b71021 	addu	v0,s5,s7
  487cc8:	a5120004 	sh	s2,4(t0)
  487ccc:	8e870000 	lw	a3,0(s4)
  487cd0:	00000000 	nop
  487cd4:	26700004 	addiu	s0,s3,4
  487cd8:	a4e00006 	sh	zero,6(a3)
  487cdc:	8e870000 	lw	a3,0(s4)
  487ce0:	00000000 	nop
  487ce4:	0002b080 	sll	s6,v0,0x2
  487ce8:	24130001 	li	s3,1
  487cec:	24f20010 	addiu	s2,a3,16
  487cf0:	24110001 	li	s1,1
		/* copy from extension[ext] to buffer */
		if(extensions[ext]) {    
  487cf4:	8e050000 	lw	a1,0(s0)
  487cf8:	240b0001 	li	t3,1
  487cfc:	10a00032 	beqz	a1,487dc8 <pfkey_msg_build+0x244>
  487d00:	022b4004 	sllv	t0,t3,s1
			/* Is this type of extension permitted for this type of message? */
			if(!(extensions_bitmaps[dir][EXT_BITS_PERM][(*pfkey_msg)->sadb_msg_type] &
			     1<<ext)) {
  487d04:	90ef0001 	lbu	t7,1(a3)
  487d08:	00000000 	nop
  487d0c:	02cf7021 	addu	t6,s6,t7
  487d10:	000e6880 	sll	t5,t6,0x2
  487d14:	8f838c34 	lw	v1,-29644(gp)
  487d18:	00000000 	nop
  487d1c:	006d1821 	addu	v1,v1,t5
  487d20:	8c630000 	lw	v1,0(v1)
  487d24:	02689825 	or	s3,s3,t0
  487d28:	00686024 	and	t4,v1,t0
  487d2c:	00a03821 	move	a3,a1
  487d30:	8f84804c 	lw	a0,-32692(gp)
  487d34:	00000000 	nop
  487d38:	248492a0 	addiu	a0,a0,-28000
  487d3c:	11800085 	beqz	t4,487f54 <pfkey_msg_build+0x3d0>
  487d40:	02203021 	move	a2,s1
				DEBUGGING(
					"pfkey_msg_build: "
					"ext type %d not permitted, exts_perm=%08x, 1<<type=%08x\n", 
					ext, 
					extensions_bitmaps[dir][EXT_BITS_PERM][(*pfkey_msg)->sadb_msg_type],
					1<<ext);
				SENDERR(EINVAL);
			}
			DEBUGGING(
  487d44:	8f988598 	lw	t8,-31336(gp)
  487d48:	00000000 	nop
  487d4c:	8f180000 	lw	t8,0(t8)
  487d50:	00000000 	nop
  487d54:	1300000b 	beqz	t8,487d84 <pfkey_msg_build+0x200>
  487d58:	00000000 	nop
  487d5c:	94b90000 	lhu	t9,0(a1)
  487d60:	afb20010 	sw	s2,16(sp)
  487d64:	001928c0 	sll	a1,t9,0x3
  487d68:	8f998be0 	lw	t9,-29728(gp)
  487d6c:	00000000 	nop
  487d70:	0320f809 	jalr	t9
  487d74:	00000000 	nop
  487d78:	8fbc0018 	lw	gp,24(sp)
  487d7c:	8e050000 	lw	a1,0(s0)
  487d80:	00000000 	nop
				"pfkey_msg_build: "
				"copying %lu bytes from extensions[%d]=%p to=%p\n",
				(unsigned long) ((extensions[ext])->sadb_ext_len * IPSEC_PFKEYv2_ALIGN),
				ext,
				(extensions[ext]),
				pfkey_ext);
			memcpy(pfkey_ext,
  487d84:	94a70000 	lhu	a3,0(a1)
  487d88:	02402021 	move	a0,s2
  487d8c:	000730c0 	sll	a2,a3,0x3
  487d90:	8f998a30 	lw	t9,-30160(gp)
  487d94:	00000000 	nop
  487d98:	0320f809 	jalr	t9
  487d9c:	00000000 	nop
  487da0:	8fbc0018 	lw	gp,24(sp)
  487da4:	00000000 	nop
			       extensions[ext],
			       (extensions[ext])->sadb_ext_len * IPSEC_PFKEYv2_ALIGN);
			((char*)pfkey_ext) += (extensions[ext])->sadb_ext_len * IPSEC_PFKEYv2_ALIGN;
  487da8:	8e050000 	lw	a1,0(s0)
  487dac:	00000000 	nop
			/* Mark that we have seen this extension and remember the header location */
			extensions_seen |= ( 1 << ext );
  487db0:	8e870000 	lw	a3,0(s4)
  487db4:	00000000 	nop
  487db8:	94a40000 	lhu	a0,0(a1)
  487dbc:	00000000 	nop
  487dc0:	000418c0 	sll	v1,a0,0x3
  487dc4:	02439021 	addu	s2,s2,v1
  487dc8:	26310001 	addiu	s1,s1,1
  487dcc:	2a26001f 	slti	a2,s1,31
  487dd0:	14c0ffc8 	bnez	a2,487cf4 <pfkey_msg_build+0x170>
  487dd4:	26100004 	addiu	s0,s0,4
		}
	}

	/* check required extensions */
	DEBUGGING(
  487dd8:	8f918598 	lw	s1,-31336(gp)
  487ddc:	00000000 	nop
  487de0:	8e310000 	lw	s1,0(s1)
  487de4:	00000000 	nop
  487de8:	12200016 	beqz	s1,487e44 <pfkey_msg_build+0x2c0>
  487dec:	02b76821 	addu	t5,s5,s7
  487df0:	90ec0001 	lbu	t4,1(a3)
  487df4:	000d5880 	sll	t3,t5,0x2
  487df8:	016c5021 	addu	t2,t3,t4
  487dfc:	000a4880 	sll	t1,t2,0x2
  487e00:	8f888c34 	lw	t0,-29644(gp)
  487e04:	00000000 	nop
  487e08:	01289021 	addu	s2,t1,t0
  487e0c:	0240b021 	move	s6,s2
  487e10:	8e470048 	lw	a3,72(s2)
  487e14:	8ec50000 	lw	a1,0(s6)
  487e18:	8f84804c 	lw	a0,-32692(gp)
  487e1c:	00000000 	nop
  487e20:	248492f4 	addiu	a0,a0,-27916
  487e24:	02603021 	move	a2,s3
  487e28:	8f998be0 	lw	t9,-29728(gp)
  487e2c:	00000000 	nop
  487e30:	0320f809 	jalr	t9
  487e34:	00000000 	nop
  487e38:	8fbc0018 	lw	gp,24(sp)
  487e3c:	8e870000 	lw	a3,0(s4)
  487e40:	00000000 	nop
		"pfkey_msg_build: "
		"extensions permitted=%08x, seen=%08x, required=%08x.\n",
		extensions_bitmaps[dir][EXT_BITS_PERM][(*pfkey_msg)->sadb_msg_type],
		extensions_seen,
		extensions_bitmaps[dir][EXT_BITS_REQ][(*pfkey_msg)->sadb_msg_type]);
	
	if((extensions_seen &
	    extensions_bitmaps[dir][EXT_BITS_REQ][(*pfkey_msg)->sadb_msg_type]) !=
	   extensions_bitmaps[dir][EXT_BITS_REQ][(*pfkey_msg)->sadb_msg_type]) {
  487e44:	02b78021 	addu	s0,s5,s7
  487e48:	90ef0001 	lbu	t7,1(a3)
  487e4c:	00107080 	sll	t6,s0,0x2
  487e50:	01cfa821 	addu	s5,t6,t7
  487e54:	0015a080 	sll	s4,s5,0x2
  487e58:	8f848c34 	lw	a0,-29644(gp)
  487e5c:	00000000 	nop
  487e60:	00942021 	addu	a0,a0,s4
  487e64:	8c840048 	lw	a0,72(a0)
  487e68:	00000000 	nop
  487e6c:	02642824 	and	a1,s3,a0
  487e70:	10a4001d 	beq	a1,a0,487ee8 <pfkey_msg_build+0x364>
  487e74:	27a60020 	addiu	a2,sp,32
		DEBUGGING(
  487e78:	8f938598 	lw	s3,-31336(gp)
  487e7c:	00000000 	nop
  487e80:	8e730000 	lw	s3,0(s3)
  487e84:	00000000 	nop
  487e88:	1260000a 	beqz	s3,487eb4 <pfkey_msg_build+0x330>
  487e8c:	00852823 	subu	a1,a0,a1
  487e90:	8f84804c 	lw	a0,-32692(gp)
  487e94:	00000000 	nop
  487e98:	2484934c 	addiu	a0,a0,-27828
  487e9c:	8f998be0 	lw	t9,-29728(gp)
  487ea0:	00000000 	nop
  487ea4:	0320f809 	jalr	t9
  487ea8:	00000000 	nop
  487eac:	8fbc0018 	lw	gp,24(sp)
  487eb0:	00000000 	nop
			"pfkey_msg_build: "
			"required extensions missing:%08x.\n",
			extensions_bitmaps[dir][EXT_BITS_REQ][(*pfkey_msg)->sadb_msg_type] -
			(extensions_seen &
			 extensions_bitmaps[dir][EXT_BITS_REQ][(*pfkey_msg)->sadb_msg_type]) );
		SENDERR(EINVAL);
  487eb4:	2410ffea 	li	s0,-22
	}
	
	if((error = pfkey_msg_parse(*pfkey_msg, NULL, extensions_check, dir))) {
		DEBUGGING(
			"pfkey_msg_build: "
			"Trouble parsing newly built pfkey message, error=%d.\n",
			error);
		SENDERR(-error);
	}

errlab:

	return error;
  487eb8:	02001021 	move	v0,s0
  487ebc:	8fbf00c4 	lw	ra,196(sp)
  487ec0:	8fb700bc 	lw	s7,188(sp)
  487ec4:	8fb600b8 	lw	s6,184(sp)
  487ec8:	8fb500b4 	lw	s5,180(sp)
  487ecc:	8fb400b0 	lw	s4,176(sp)
  487ed0:	8fb300ac 	lw	s3,172(sp)
  487ed4:	8fb200a8 	lw	s2,168(sp)
  487ed8:	8fb100a4 	lw	s1,164(sp)
  487edc:	8fb000a0 	lw	s0,160(sp)
  487ee0:	03e00008 	jr	ra
  487ee4:	27bd00c8 	addiu	sp,sp,200
  487ee8:	00e02021 	move	a0,a3
  487eec:	00002821 	move	a1,zero
  487ef0:	02e03821 	move	a3,s7
  487ef4:	8f99858c 	lw	t9,-31348(gp)
  487ef8:	00000000 	nop
  487efc:	0320f809 	jalr	t9
  487f00:	00000000 	nop
  487f04:	8fbc0018 	lw	gp,24(sp)
  487f08:	00408021 	move	s0,v0
  487f0c:	1200ffeb 	beqz	s0,487ebc <pfkey_msg_build+0x338>
  487f10:	02001021 	move	v0,s0
  487f14:	8f978598 	lw	s7,-31336(gp)
  487f18:	00000000 	nop
  487f1c:	8ef70000 	lw	s7,0(s7)
  487f20:	00000000 	nop
  487f24:	12e0ffe5 	beqz	s7,487ebc <pfkey_msg_build+0x338>
  487f28:	02002821 	move	a1,s0
  487f2c:	8f84804c 	lw	a0,-32692(gp)
  487f30:	00000000 	nop
  487f34:	24849390 	addiu	a0,a0,-27760
  487f38:	8f998be0 	lw	t9,-29728(gp)
  487f3c:	00000000 	nop
  487f40:	0320f809 	jalr	t9
  487f44:	00000000 	nop
  487f48:	8fbc0018 	lw	gp,24(sp)
  487f4c:	1000ffdb 	b	487ebc <pfkey_msg_build+0x338>
  487f50:	02001021 	move	v0,s0
  487f54:	8f908598 	lw	s0,-31336(gp)
  487f58:	00000000 	nop
  487f5c:	8e100000 	lw	s0,0(s0)
  487f60:	00000000 	nop
  487f64:	1200ffd3 	beqz	s0,487eb4 <pfkey_msg_build+0x330>
  487f68:	02202821 	move	a1,s1
  487f6c:	00603021 	move	a2,v1
  487f70:	01003821 	move	a3,t0
  487f74:	8f84804c 	lw	a0,-32692(gp)
  487f78:	00000000 	nop
  487f7c:	248493e8 	addiu	a0,a0,-27672
  487f80:	8f998be0 	lw	t9,-29728(gp)
  487f84:	00000000 	nop
  487f88:	0320f809 	jalr	t9
  487f8c:	00000000 	nop
  487f90:	8fbc0018 	lw	gp,24(sp)
  487f94:	00000000 	nop
  487f98:	1000ffc7 	b	487eb8 <pfkey_msg_build+0x334>
  487f9c:	2410ffea 	li	s0,-22
  487fa0:	8f858598 	lw	a1,-31336(gp)
  487fa4:	00000000 	nop
  487fa8:	8ca50000 	lw	a1,0(a1)
  487fac:	00000000 	nop
  487fb0:	10a0000a 	beqz	a1,487fdc <pfkey_msg_build+0x458>
  487fb4:	00000000 	nop
  487fb8:	8f84804c 	lw	a0,-32692(gp)
  487fbc:	00000000 	nop
  487fc0:	24849444 	addiu	a0,a0,-27580
  487fc4:	8f998a08 	lw	t9,-30200(gp)
  487fc8:	00000000 	nop
  487fcc:	0320f809 	jalr	t9
  487fd0:	00000000 	nop
  487fd4:	8fbc0018 	lw	gp,24(sp)
  487fd8:	00000000 	nop
  487fdc:	1000ffb6 	b	487eb8 <pfkey_msg_build+0x334>
  487fe0:	2410fff4 	li	s0,-12
  487fe4:	8f838598 	lw	v1,-31336(gp)
  487fe8:	00000000 	nop
  487fec:	8c630000 	lw	v1,0(v1)
  487ff0:	00000000 	nop
  487ff4:	1060ffaf 	beqz	v1,487eb4 <pfkey_msg_build+0x330>
  487ff8:	2410ffea 	li	s0,-22
  487ffc:	8f84804c 	lw	a0,-32692(gp)
  488000:	00000000 	nop
  488004:	24849480 	addiu	a0,a0,-27520
  488008:	8f998a08 	lw	t9,-30200(gp)
  48800c:	00000000 	nop
  488010:	0320f809 	jalr	t9
  488014:	00000000 	nop
  488018:	8fbc0018 	lw	gp,24(sp)
  48801c:	00000000 	nop
  488020:	1000ffa6 	b	487ebc <pfkey_msg_build+0x338>
  488024:	02001021 	move	v0,s0

00488028 <pfkey_extensions_init>:
  488028:	3c1c0fb8 	lui	gp,0xfb8
  48802c:	279c4948 	addiu	gp,gp,18760
  488030:	0399e021 	addu	gp,gp,t9
  488034:	00001021 	move	v0,zero
  488038:	2403001f 	li	v1,31
  48803c:	24420001 	addiu	v0,v0,1
  488040:	ac800000 	sw	zero,0(a0)
  488044:	1443fffd 	bne	v0,v1,48803c <pfkey_extensions_init+0x14>
  488048:	24840004 	addiu	a0,a0,4
  48804c:	03e00008 	jr	ra
  488050:	00000000 	nop

00488054 <pfkey_extensions_free>:
  488054:	3c1c0fb8 	lui	gp,0xfb8
  488058:	279c491c 	addiu	gp,gp,18716
  48805c:	0399e021 	addu	gp,gp,t9
  488060:	27bdffd0 	addiu	sp,sp,-48
  488064:	afbc0010 	sw	gp,16(sp)
  488068:	afb00018 	sw	s0,24(sp)
  48806c:	00808021 	move	s0,a0
  488070:	afbf0028 	sw	ra,40(sp)
  488074:	afbc0024 	sw	gp,36(sp)
  488078:	afb20020 	sw	s2,32(sp)
  48807c:	1200002f 	beqz	s0,48813c <pfkey_extensions_free+0xe8>
  488080:	afb1001c 	sw	s1,28(sp)
  488084:	8e040000 	lw	a0,0(s0)
  488088:	00000000 	nop
  48808c:	10800010 	beqz	a0,4880d0 <pfkey_extensions_free+0x7c>
  488090:	00002821 	move	a1,zero
  488094:	24060010 	li	a2,16
  488098:	8f998500 	lw	t9,-31488(gp)
  48809c:	00000000 	nop
  4880a0:	0320f809 	jalr	t9
  4880a4:	00000000 	nop
  4880a8:	8fbc0010 	lw	gp,16(sp)
  4880ac:	00000000 	nop
  4880b0:	8e040000 	lw	a0,0(s0)
  4880b4:	8f998094 	lw	t9,-32620(gp)
  4880b8:	00000000 	nop
  4880bc:	0320f809 	jalr	t9
  4880c0:	00000000 	nop
  4880c4:	8fbc0010 	lw	gp,16(sp)
  4880c8:	00000000 	nop
  4880cc:	ae000000 	sw	zero,0(s0)
  4880d0:	26100004 	addiu	s0,s0,4
  4880d4:	24110001 	li	s1,1
  4880d8:	2412001f 	li	s2,31
  4880dc:	8e020000 	lw	v0,0(s0)
  4880e0:	00002821 	move	a1,zero
  4880e4:	26310001 	addiu	s1,s1,1
  4880e8:	10400012 	beqz	v0,488134 <pfkey_extensions_free+0xe0>
  4880ec:	00402021 	move	a0,v0
  4880f0:	94430000 	lhu	v1,0(v0)
  4880f4:	00000000 	nop
  4880f8:	000330c0 	sll	a2,v1,0x3
  4880fc:	8f998500 	lw	t9,-31488(gp)
  488100:	00000000 	nop
  488104:	0320f809 	jalr	t9
  488108:	00000000 	nop
  48810c:	8fbc0010 	lw	gp,16(sp)
  488110:	00000000 	nop
  488114:	8e040000 	lw	a0,0(s0)
  488118:	8f998094 	lw	t9,-32620(gp)
  48811c:	00000000 	nop
  488120:	0320f809 	jalr	t9
  488124:	00000000 	nop
  488128:	8fbc0010 	lw	gp,16(sp)
  48812c:	00000000 	nop
  488130:	ae000000 	sw	zero,0(s0)
  488134:	1632ffe9 	bne	s1,s2,4880dc <pfkey_extensions_free+0x88>
  488138:	26100004 	addiu	s0,s0,4
  48813c:	8fbf0028 	lw	ra,40(sp)
  488140:	8fb20020 	lw	s2,32(sp)
  488144:	8fb1001c 	lw	s1,28(sp)
  488148:	8fb00018 	lw	s0,24(sp)
  48814c:	03e00008 	jr	ra
  488150:	27bd0030 	addiu	sp,sp,48

00488154 <pfkey_msg_free>:
  488154:	3c1c0fb8 	lui	gp,0xfb8
  488158:	279c481c 	addiu	gp,gp,18460
  48815c:	0399e021 	addu	gp,gp,t9
  488160:	27bdffd8 	addiu	sp,sp,-40
  488164:	afbc0010 	sw	gp,16(sp)
  488168:	afb00018 	sw	s0,24(sp)
  48816c:	afbf0020 	sw	ra,32(sp)
  488170:	00808021 	move	s0,a0
  488174:	afbc001c 	sw	gp,28(sp)
  488178:	8e020000 	lw	v0,0(s0)
  48817c:	00000000 	nop
  488180:	00002821 	move	a1,zero
  488184:	10400012 	beqz	v0,4881d0 <pfkey_msg_free+0x7c>
  488188:	00402021 	move	a0,v0
  48818c:	94430004 	lhu	v1,4(v0)
  488190:	00000000 	nop
  488194:	000330c0 	sll	a2,v1,0x3
  488198:	8f998500 	lw	t9,-31488(gp)
  48819c:	00000000 	nop
  4881a0:	0320f809 	jalr	t9
  4881a4:	00000000 	nop
  4881a8:	8fbc0010 	lw	gp,16(sp)
  4881ac:	00000000 	nop
  4881b0:	8e040000 	lw	a0,0(s0)
  4881b4:	8f998094 	lw	t9,-32620(gp)
  4881b8:	00000000 	nop
  4881bc:	0320f809 	jalr	t9
  4881c0:	00000000 	nop
  4881c4:	8fbc0010 	lw	gp,16(sp)
  4881c8:	00000000 	nop
  4881cc:	ae000000 	sw	zero,0(s0)
  4881d0:	8fbf0020 	lw	ra,32(sp)
  4881d4:	8fb00018 	lw	s0,24(sp)
  4881d8:	03e00008 	jr	ra
  4881dc:	27bd0028 	addiu	sp,sp,40

004881e0 <pfkey_lifetime_build>:
  4881e0:	3c1c0fb8 	lui	gp,0xfb8
  4881e4:	279c4790 	addiu	gp,gp,18320
  4881e8:	0399e021 	addu	gp,gp,t9
  4881ec:	27bdffc8 	addiu	sp,sp,-56
  4881f0:	afbc0010 	sw	gp,16(sp)
  4881f4:	8f838598 	lw	v1,-31336(gp)
  4881f8:	00000000 	nop
  4881fc:	8c630000 	lw	v1,0(v1)
  488200:	00000000 	nop
  488204:	afb40028 	sw	s4,40(sp)
  488208:	afb30024 	sw	s3,36(sp)
  48820c:	afb20020 	sw	s2,32(sp)
  488210:	afb1001c 	sw	s1,28(sp)
  488214:	afbf0030 	sw	ra,48(sp)
  488218:	afbc002c 	sw	gp,44(sp)
  48821c:	afb00018 	sw	s0,24(sp)
  488220:	00809821 	move	s3,a0
  488224:	00c0a021 	move	s4,a2
  488228:	30b1ffff 	andi	s1,a1,0xffff
  48822c:	8e700000 	lw	s0,0(s3)
  488230:	00000000 	nop
  488234:	1060000a 	beqz	v1,488260 <pfkey_lifetime_build+0x80>
  488238:	00009021 	move	s2,zero
  48823c:	8f84804c 	lw	a0,-32692(gp)
  488240:	00000000 	nop
  488244:	248494d4 	addiu	a0,a0,-27436
  488248:	8f998a08 	lw	t9,-30200(gp)
  48824c:	00000000 	nop
  488250:	0320f809 	jalr	t9
  488254:	00000000 	nop
  488258:	8fbc0010 	lw	gp,16(sp)
  48825c:	00000000 	nop
  488260:	1200001a 	beqz	s0,4882cc <pfkey_lifetime_build+0xec>
  488264:	00000000 	nop
  488268:	8f838598 	lw	v1,-31336(gp)
  48826c:	00000000 	nop
  488270:	8c630000 	lw	v1,0(v1)
  488274:	00000000 	nop
  488278:	1060000b 	beqz	v1,4882a8 <pfkey_lifetime_build+0xc8>
  48827c:	2412ffea 	li	s2,-22
  488280:	8f84804c 	lw	a0,-32692(gp)
  488284:	00000000 	nop
  488288:	248494fc 	addiu	a0,a0,-27396
  48828c:	8f998a08 	lw	t9,-30200(gp)
  488290:	00000000 	nop
  488294:	0320f809 	jalr	t9
  488298:	00000000 	nop
  48829c:	8fbc0010 	lw	gp,16(sp)
  4882a0:	00000000 	nop
  4882a4:	2412ffea 	li	s2,-22
  4882a8:	02401021 	move	v0,s2
  4882ac:	8fbf0030 	lw	ra,48(sp)
  4882b0:	8fb40028 	lw	s4,40(sp)
  4882b4:	8fb30024 	lw	s3,36(sp)
  4882b8:	8fb20020 	lw	s2,32(sp)
  4882bc:	8fb1001c 	lw	s1,28(sp)
  4882c0:	8fb00018 	lw	s0,24(sp)
  4882c4:	03e00008 	jr	ra
  4882c8:	27bd0038 	addiu	sp,sp,56
  4882cc:	3406fffe 	li	a2,0xfffe
  4882d0:	00d13021 	addu	a2,a2,s1
  4882d4:	30c5ffff 	andi	a1,a2,0xffff
  4882d8:	2ca40003 	sltiu	a0,a1,3
  4882dc:	14800012 	bnez	a0,488328 <pfkey_lifetime_build+0x148>
  4882e0:	24040028 	li	a0,40
  4882e4:	8f878598 	lw	a3,-31336(gp)
  4882e8:	00000000 	nop
  4882ec:	8ce70000 	lw	a3,0(a3)
  4882f0:	00000000 	nop
  4882f4:	10e0ffeb 	beqz	a3,4882a4 <pfkey_lifetime_build+0xc4>
  4882f8:	02202821 	move	a1,s1
  4882fc:	8f84804c 	lw	a0,-32692(gp)
  488300:	00000000 	nop
  488304:	24849558 	addiu	a0,a0,-27304
  488308:	8f998be0 	lw	t9,-29728(gp)
  48830c:	00000000 	nop
  488310:	0320f809 	jalr	t9
  488314:	00000000 	nop
  488318:	8fbc0010 	lw	gp,16(sp)
  48831c:	00000000 	nop
  488320:	1000ffe1 	b	4882a8 <pfkey_lifetime_build+0xc8>
  488324:	2412ffea 	li	s2,-22
  488328:	8f9989d0 	lw	t9,-30256(gp)
  48832c:	00000000 	nop
  488330:	0320f809 	jalr	t9
  488334:	00000000 	nop
  488338:	8fbc0010 	lw	gp,16(sp)
  48833c:	00408021 	move	s0,v0
  488340:	1200001f 	beqz	s0,4883c0 <pfkey_lifetime_build+0x1e0>
  488344:	ae700000 	sw	s0,0(s3)
  488348:	02002021 	move	a0,s0
  48834c:	00002821 	move	a1,zero
  488350:	24060028 	li	a2,40
  488354:	8f998500 	lw	t9,-31488(gp)
  488358:	00000000 	nop
  48835c:	0320f809 	jalr	t9
  488360:	00000000 	nop
  488364:	8fbc0010 	lw	gp,16(sp)
  488368:	00000000 	nop
  48836c:	8fab0060 	lw	t3,96(sp)
  488370:	00000000 	nop
  488374:	24090005 	li	t1,5
  488378:	ae0b0020 	sw	t3,32(s0)
  48837c:	a6090000 	sh	t1,0(s0)
  488380:	a6110002 	sh	s1,2(s0)
  488384:	ae140004 	sw	s4,4(s0)
  488388:	8fac0048 	lw	t4,72(sp)
  48838c:	8fad004c 	lw	t5,76(sp)
  488390:	ae0c0008 	sw	t4,8(s0)
  488394:	ae0d000c 	sw	t5,12(s0)
  488398:	8fa20050 	lw	v0,80(sp)
  48839c:	8fa30054 	lw	v1,84(sp)
  4883a0:	ae020010 	sw	v0,16(s0)
  4883a4:	ae030014 	sw	v1,20(s0)
  4883a8:	8faa0058 	lw	t2,88(sp)
  4883ac:	8fab005c 	lw	t3,92(sp)
  4883b0:	ae0a0018 	sw	t2,24(s0)
  4883b4:	ae0b001c 	sw	t3,28(s0)
  4883b8:	1000ffbc 	b	4882ac <pfkey_lifetime_build+0xcc>
  4883bc:	02401021 	move	v0,s2
  4883c0:	8f888598 	lw	t0,-31336(gp)
  4883c4:	00000000 	nop
  4883c8:	8d080000 	lw	t0,0(t0)
  4883cc:	00000000 	nop
  4883d0:	1100000a 	beqz	t0,4883fc <pfkey_lifetime_build+0x21c>
  4883d4:	00000000 	nop
  4883d8:	8f84804c 	lw	a0,-32692(gp)
  4883dc:	00000000 	nop
  4883e0:	24848c00 	addiu	a0,a0,-29696
  4883e4:	8f998a08 	lw	t9,-30200(gp)
  4883e8:	00000000 	nop
  4883ec:	0320f809 	jalr	t9
  4883f0:	00000000 	nop
  4883f4:	8fbc0010 	lw	gp,16(sp)
  4883f8:	00000000 	nop
  4883fc:	1000ffaa 	b	4882a8 <pfkey_lifetime_build+0xc8>
  488400:	2412fff4 	li	s2,-12

00488404 <pfkey_sens_build>:
  488404:	3c1c0fb8 	lui	gp,0xfb8
  488408:	279c456c 	addiu	gp,gp,17772
  48840c:	0399e021 	addu	gp,gp,t9
  488410:	27bdffd8 	addiu	sp,sp,-40
  488414:	afbc0010 	sw	gp,16(sp)
  488418:	8f828598 	lw	v0,-31336(gp)
  48841c:	00000000 	nop
  488420:	8c420000 	lw	v0,0(v0)
  488424:	00000000 	nop
  488428:	afb1001c 	sw	s1,28(sp)
  48842c:	afbf0024 	sw	ra,36(sp)
  488430:	00808821 	move	s1,a0
  488434:	afbc0020 	sw	gp,32(sp)
  488438:	afb00018 	sw	s0,24(sp)
  48843c:	8f84804c 	lw	a0,-32692(gp)
  488440:	00000000 	nop
  488444:	24849594 	addiu	a0,a0,-27244
  488448:	00000000 	nop
  48844c:	8e300000 	lw	s0,0(s1)
  488450:	00000000 	nop
  488454:	1040000b 	beqz	v0,488484 <pfkey_sens_build+0x80>
  488458:	00000000 	nop
  48845c:	8f998a08 	lw	t9,-30200(gp)
  488460:	00000000 	nop
  488464:	0320f809 	jalr	t9
  488468:	00000000 	nop
  48846c:	8fbc0010 	lw	gp,16(sp)
  488470:	00000000 	nop
  488474:	8f828598 	lw	v0,-31336(gp)
  488478:	00000000 	nop
  48847c:	8c420000 	lw	v0,0(v0)
  488480:	00000000 	nop
  488484:	12000012 	beqz	s0,4884d0 <pfkey_sens_build+0xcc>
  488488:	00000000 	nop
  48848c:	1040000a 	beqz	v0,4884b8 <pfkey_sens_build+0xb4>
  488490:	00000000 	nop
  488494:	8f84804c 	lw	a0,-32692(gp)
  488498:	00000000 	nop
  48849c:	248495b8 	addiu	a0,a0,-27208
  4884a0:	8f998a08 	lw	t9,-30200(gp)
  4884a4:	00000000 	nop
  4884a8:	0320f809 	jalr	t9
  4884ac:	00000000 	nop
  4884b0:	8fbc0010 	lw	gp,16(sp)
  4884b4:	00000000 	nop
  4884b8:	8fbf0024 	lw	ra,36(sp)
  4884bc:	8fb1001c 	lw	s1,28(sp)
  4884c0:	8fb00018 	lw	s0,24(sp)
  4884c4:	2402ffea 	li	v0,-22
  4884c8:	03e00008 	jr	ra
  4884cc:	27bd0028 	addiu	sp,sp,40
  4884d0:	1040fff9 	beqz	v0,4884b8 <pfkey_sens_build+0xb4>
  4884d4:	00000000 	nop
  4884d8:	8e230000 	lw	v1,0(s1)
  4884dc:	8f84804c 	lw	a0,-32692(gp)
  4884e0:	00000000 	nop
  4884e4:	2484960c 	addiu	a0,a0,-27124
  4884e8:	94650002 	lhu	a1,2(v1)
  4884ec:	8f998be0 	lw	t9,-29728(gp)
  4884f0:	00000000 	nop
  4884f4:	0320f809 	jalr	t9
  4884f8:	00000000 	nop
  4884fc:	8fbc0010 	lw	gp,16(sp)
  488500:	1000ffed 	b	4884b8 <pfkey_sens_build+0xb4>
  488504:	00000000 	nop

00488508 <pfkey_supported_build>:
  488508:	3c1c0fb8 	lui	gp,0xfb8
  48850c:	279c4468 	addiu	gp,gp,17512
  488510:	0399e021 	addu	gp,gp,t9
  488514:	27bdffc0 	addiu	sp,sp,-64
  488518:	afbc0010 	sw	gp,16(sp)
  48851c:	afb60030 	sw	s6,48(sp)
  488520:	afb5002c 	sw	s5,44(sp)
  488524:	afb40028 	sw	s4,40(sp)
  488528:	afb30024 	sw	s3,36(sp)
  48852c:	afb20020 	sw	s2,32(sp)
  488530:	afbf0038 	sw	ra,56(sp)
  488534:	afbc0034 	sw	gp,52(sp)
  488538:	afb1001c 	sw	s1,28(sp)
  48853c:	afb00018 	sw	s0,24(sp)
  488540:	0080a821 	move	s5,a0
  488544:	8ea20000 	lw	v0,0(s5)
  488548:	00000000 	nop
  48854c:	00c09821 	move	s3,a2
  488550:	00e0b021 	move	s6,a3
  488554:	30b2ffff 	andi	s2,a1,0xffff
  488558:	1040001c 	beqz	v0,4885cc <pfkey_supported_build+0xc4>
  48855c:	0000a021 	move	s4,zero
  488560:	8f838598 	lw	v1,-31336(gp)
  488564:	00000000 	nop
  488568:	8c630000 	lw	v1,0(v1)
  48856c:	00000000 	nop
  488570:	1060000b 	beqz	v1,4885a0 <pfkey_supported_build+0x98>
  488574:	2414ffea 	li	s4,-22
  488578:	8f84804c 	lw	a0,-32692(gp)
  48857c:	00000000 	nop
  488580:	24849654 	addiu	a0,a0,-27052
  488584:	8f998a08 	lw	t9,-30200(gp)
  488588:	00000000 	nop
  48858c:	0320f809 	jalr	t9
  488590:	00000000 	nop
  488594:	8fbc0010 	lw	gp,16(sp)
  488598:	00000000 	nop
  48859c:	2414ffea 	li	s4,-22
  4885a0:	02801021 	move	v0,s4
  4885a4:	8fbf0038 	lw	ra,56(sp)
  4885a8:	8fb60030 	lw	s6,48(sp)
  4885ac:	8fb5002c 	lw	s5,44(sp)
  4885b0:	8fb40028 	lw	s4,40(sp)
  4885b4:	8fb30024 	lw	s3,36(sp)
  4885b8:	8fb20020 	lw	s2,32(sp)
  4885bc:	8fb1001c 	lw	s1,28(sp)
  4885c0:	8fb00018 	lw	s0,24(sp)
  4885c4:	03e00008 	jr	ra
  4885c8:	27bd0040 	addiu	sp,sp,64
  4885cc:	3406fff2 	li	a2,0xfff2
  4885d0:	00d23021 	addu	a2,a2,s2
  4885d4:	30c5ffff 	andi	a1,a2,0xffff
  4885d8:	2ca40002 	sltiu	a0,a1,2
  4885dc:	14800012 	bnez	a0,488628 <pfkey_supported_build+0x120>
  4885e0:	001340c0 	sll	t0,s3,0x3
  4885e4:	8f878598 	lw	a3,-31336(gp)
  4885e8:	00000000 	nop
  4885ec:	8ce70000 	lw	a3,0(a3)
  4885f0:	00000000 	nop
  4885f4:	10e0ffe9 	beqz	a3,48859c <pfkey_supported_build+0x94>
  4885f8:	02402821 	move	a1,s2
  4885fc:	8f84804c 	lw	a0,-32692(gp)
  488600:	00000000 	nop
  488604:	248496b4 	addiu	a0,a0,-26956
  488608:	8f998be0 	lw	t9,-29728(gp)
  48860c:	00000000 	nop
  488610:	0320f809 	jalr	t9
  488614:	00000000 	nop
  488618:	8fbc0010 	lw	gp,16(sp)
  48861c:	00000000 	nop
  488620:	1000ffdf 	b	4885a0 <pfkey_supported_build+0x98>
  488624:	2414ffea 	li	s4,-22
  488628:	25110008 	addiu	s1,t0,8
  48862c:	02202021 	move	a0,s1
  488630:	8f9989d0 	lw	t9,-30256(gp)
  488634:	00000000 	nop
  488638:	0320f809 	jalr	t9
  48863c:	00000000 	nop
  488640:	8fbc0010 	lw	gp,16(sp)
  488644:	00408021 	move	s0,v0
  488648:	12000022 	beqz	s0,4886d4 <pfkey_supported_build+0x1cc>
  48864c:	aeb00000 	sw	s0,0(s5)
  488650:	02002021 	move	a0,s0
  488654:	00002821 	move	a1,zero
  488658:	02203021 	move	a2,s1
  48865c:	8f998500 	lw	t9,-31488(gp)
  488660:	00000000 	nop
  488664:	0320f809 	jalr	t9
  488668:	00000000 	nop
  48866c:	8fbc0010 	lw	gp,16(sp)
  488670:	00000000 	nop
  488674:	001110c2 	srl	v0,s1,0x3
  488678:	a6020000 	sh	v0,0(s0)
  48867c:	a6120002 	sh	s2,2(s0)
  488680:	ae000004 	sw	zero,4(s0)
  488684:	26040008 	addiu	a0,s0,8
  488688:	1260ffc5 	beqz	s3,4885a0 <pfkey_supported_build+0x98>
  48868c:	00001821 	move	v1,zero
  488690:	02c03821 	move	a3,s6
  488694:	24630001 	addiu	v1,v1,1
  488698:	84e50000 	lh	a1,0(a3)
  48869c:	84e60002 	lh	a2,2(a3)
  4886a0:	84e80004 	lh	t0,4(a3)
  4886a4:	84e90006 	lh	t1,6(a3)
  4886a8:	a4850000 	sh	a1,0(a0)
  4886ac:	a4860002 	sh	a2,2(a0)
  4886b0:	a4880004 	sh	t0,4(a0)
  4886b4:	0073502b 	sltu	t2,v1,s3
  4886b8:	a4890006 	sh	t1,6(a0)
  4886bc:	a4800006 	sh	zero,6(a0)
  4886c0:	24e70008 	addiu	a3,a3,8
  4886c4:	1540fff3 	bnez	t2,488694 <pfkey_supported_build+0x18c>
  4886c8:	24840008 	addiu	a0,a0,8
  4886cc:	1000ffb5 	b	4885a4 <pfkey_supported_build+0x9c>
  4886d0:	02801021 	move	v0,s4
  4886d4:	8f898598 	lw	t1,-31336(gp)
  4886d8:	00000000 	nop
  4886dc:	8d290000 	lw	t1,0(t1)
  4886e0:	00000000 	nop
  4886e4:	1120000a 	beqz	t1,488710 <pfkey_supported_build+0x208>
  4886e8:	00000000 	nop
  4886ec:	8f84804c 	lw	a0,-32692(gp)
  4886f0:	00000000 	nop
  4886f4:	248496fc 	addiu	a0,a0,-26884
  4886f8:	8f998a08 	lw	t9,-30200(gp)
  4886fc:	00000000 	nop
  488700:	0320f809 	jalr	t9
  488704:	00000000 	nop
  488708:	8fbc0010 	lw	gp,16(sp)
  48870c:	00000000 	nop
  488710:	1000ffa3 	b	4885a0 <pfkey_supported_build+0x98>
  488714:	2414fff4 	li	s4,-12

00488718 <pfkey_spirange_build>:
  488718:	3c1c0fb8 	lui	gp,0xfb8
  48871c:	279c4258 	addiu	gp,gp,16984
  488720:	0399e021 	addu	gp,gp,t9
  488724:	27bdffc8 	addiu	sp,sp,-56
  488728:	afbc0010 	sw	gp,16(sp)
  48872c:	afb40028 	sw	s4,40(sp)
  488730:	afb30024 	sw	s3,36(sp)
  488734:	afb20020 	sw	s2,32(sp)
  488738:	afb1001c 	sw	s1,28(sp)
  48873c:	afbf0030 	sw	ra,48(sp)
  488740:	afbc002c 	sw	gp,44(sp)
  488744:	afb00018 	sw	s0,24(sp)
  488748:	0080a021 	move	s4,a0
  48874c:	8e820000 	lw	v0,0(s4)
  488750:	00000000 	nop
  488754:	00c09021 	move	s2,a2
  488758:	00e09821 	move	s3,a3
  48875c:	1040001a 	beqz	v0,4887c8 <pfkey_spirange_build+0xb0>
  488760:	00008821 	move	s1,zero
  488764:	8f838598 	lw	v1,-31336(gp)
  488768:	00000000 	nop
  48876c:	8c630000 	lw	v1,0(v1)
  488770:	00000000 	nop
  488774:	1060000b 	beqz	v1,4887a4 <pfkey_spirange_build+0x8c>
  488778:	2411ffea 	li	s1,-22
  48877c:	8f84804c 	lw	a0,-32692(gp)
  488780:	00000000 	nop
  488784:	2484973c 	addiu	a0,a0,-26820
  488788:	8f998a08 	lw	t9,-30200(gp)
  48878c:	00000000 	nop
  488790:	0320f809 	jalr	t9
  488794:	00000000 	nop
  488798:	8fbc0010 	lw	gp,16(sp)
  48879c:	00000000 	nop
  4887a0:	2411ffea 	li	s1,-22
  4887a4:	02201021 	move	v0,s1
  4887a8:	8fbf0030 	lw	ra,48(sp)
  4887ac:	8fb40028 	lw	s4,40(sp)
  4887b0:	8fb30024 	lw	s3,36(sp)
  4887b4:	8fb20020 	lw	s2,32(sp)
  4887b8:	8fb1001c 	lw	s1,28(sp)
  4887bc:	8fb00018 	lw	s0,24(sp)
  4887c0:	03e00008 	jr	ra
  4887c4:	27bd0038 	addiu	sp,sp,56
  4887c8:	0272202b 	sltu	a0,s3,s2
  4887cc:	10800013 	beqz	a0,48881c <pfkey_spirange_build+0x104>
  4887d0:	2e460100 	sltiu	a2,s2,256
  4887d4:	8f858598 	lw	a1,-31336(gp)
  4887d8:	00000000 	nop
  4887dc:	8ca50000 	lw	a1,0(a1)
  4887e0:	00000000 	nop
  4887e4:	10a0ffee 	beqz	a1,4887a0 <pfkey_spirange_build+0x88>
  4887e8:	02402821 	move	a1,s2
  4887ec:	8f84804c 	lw	a0,-32692(gp)
  4887f0:	00000000 	nop
  4887f4:	24849798 	addiu	a0,a0,-26728
  4887f8:	02603021 	move	a2,s3
  4887fc:	8f998be0 	lw	t9,-29728(gp)
  488800:	00000000 	nop
  488804:	0320f809 	jalr	t9
  488808:	00000000 	nop
  48880c:	8fbc0010 	lw	gp,16(sp)
  488810:	00000000 	nop
  488814:	1000ffe3 	b	4887a4 <pfkey_spirange_build+0x8c>
  488818:	2411ffea 	li	s1,-22
  48881c:	10c00012 	beqz	a2,488868 <pfkey_spirange_build+0x150>
  488820:	24040010 	li	a0,16
  488824:	8f878598 	lw	a3,-31336(gp)
  488828:	00000000 	nop
  48882c:	8ce70000 	lw	a3,0(a3)
  488830:	00000000 	nop
  488834:	10e0000a 	beqz	a3,488860 <pfkey_spirange_build+0x148>
  488838:	02402821 	move	a1,s2
  48883c:	8f84804c 	lw	a0,-32692(gp)
  488840:	00000000 	nop
  488844:	248497e4 	addiu	a0,a0,-26652
  488848:	8f998be0 	lw	t9,-29728(gp)
  48884c:	00000000 	nop
  488850:	0320f809 	jalr	t9
  488854:	00000000 	nop
  488858:	8fbc0010 	lw	gp,16(sp)
  48885c:	00000000 	nop
  488860:	1000ffd0 	b	4887a4 <pfkey_spirange_build+0x8c>
  488864:	2411ffef 	li	s1,-17
  488868:	8f9989d0 	lw	t9,-30256(gp)
  48886c:	00000000 	nop
  488870:	0320f809 	jalr	t9
  488874:	00000000 	nop
  488878:	8fbc0010 	lw	gp,16(sp)
  48887c:	00408021 	move	s0,v0
  488880:	12000012 	beqz	s0,4888cc <pfkey_spirange_build+0x1b4>
  488884:	ae900000 	sw	s0,0(s4)
  488888:	02002021 	move	a0,s0
  48888c:	00002821 	move	a1,zero
  488890:	24060010 	li	a2,16
  488894:	8f998500 	lw	t9,-31488(gp)
  488898:	00000000 	nop
  48889c:	0320f809 	jalr	t9
  4888a0:	00000000 	nop
  4888a4:	8fbc0010 	lw	gp,16(sp)
  4888a8:	00000000 	nop
  4888ac:	24020002 	li	v0,2
  4888b0:	24090010 	li	t1,16
  4888b4:	a6020000 	sh	v0,0(s0)
  4888b8:	a6090002 	sh	t1,2(s0)
  4888bc:	ae120004 	sw	s2,4(s0)
  4888c0:	ae130008 	sw	s3,8(s0)
  4888c4:	1000ffb7 	b	4887a4 <pfkey_spirange_build+0x8c>
  4888c8:	ae00000c 	sw	zero,12(s0)
  4888cc:	8f888598 	lw	t0,-31336(gp)
  4888d0:	00000000 	nop
  4888d4:	8d080000 	lw	t0,0(t0)
  4888d8:	00000000 	nop
  4888dc:	1100000a 	beqz	t0,488908 <pfkey_spirange_build+0x1f0>
  4888e0:	00000000 	nop
  4888e4:	8f84804c 	lw	a0,-32692(gp)
  4888e8:	00000000 	nop
  4888ec:	24849828 	addiu	a0,a0,-26584
  4888f0:	8f998a08 	lw	t9,-30200(gp)
  4888f4:	00000000 	nop
  4888f8:	0320f809 	jalr	t9
  4888fc:	00000000 	nop
  488900:	8fbc0010 	lw	gp,16(sp)
  488904:	00000000 	nop
  488908:	1000ffa6 	b	4887a4 <pfkey_spirange_build+0x8c>
  48890c:	2411fff4 	li	s1,-12

00488910 <pfkey_x_kmprivate_build>:
  488910:	3c1c0fb8 	lui	gp,0xfb8
  488914:	279c4060 	addiu	gp,gp,16480
  488918:	0399e021 	addu	gp,gp,t9
  48891c:	27bdffe0 	addiu	sp,sp,-32
  488920:	afbc0010 	sw	gp,16(sp)
  488924:	afbf001c 	sw	ra,28(sp)
  488928:	afbc0018 	sw	gp,24(sp)
  48892c:	00801821 	move	v1,a0
  488930:	8c640000 	lw	a0,0(v1)
  488934:	00000000 	nop
  488938:	10800013 	beqz	a0,488988 <pfkey_x_kmprivate_build+0x78>
  48893c:	00000000 	nop
  488940:	8f838598 	lw	v1,-31336(gp)
  488944:	00000000 	nop
  488948:	8c630000 	lw	v1,0(v1)
  48894c:	8f84804c 	lw	a0,-32692(gp)
  488950:	00000000 	nop
  488954:	24849868 	addiu	a0,a0,-26520
  488958:	10600007 	beqz	v1,488978 <pfkey_x_kmprivate_build+0x68>
  48895c:	00000000 	nop
  488960:	8f998a08 	lw	t9,-30200(gp)
  488964:	00000000 	nop
  488968:	0320f809 	jalr	t9
  48896c:	00000000 	nop
  488970:	8fbc0010 	lw	gp,16(sp)
  488974:	00000000 	nop
  488978:	8fbf001c 	lw	ra,28(sp)
  48897c:	2402ffea 	li	v0,-22
  488980:	03e00008 	jr	ra
  488984:	27bd0020 	addiu	sp,sp,32
  488988:	8f858598 	lw	a1,-31336(gp)
  48898c:	00000000 	nop
  488990:	8ca50000 	lw	a1,0(a1)
  488994:	00000000 	nop
  488998:	8f84804c 	lw	a0,-32692(gp)
  48899c:	00000000 	nop
  4889a0:	248498cc 	addiu	a0,a0,-26420
  4889a4:	00000000 	nop
  4889a8:	10a0fff3 	beqz	a1,488978 <pfkey_x_kmprivate_build+0x68>
  4889ac:	ac000004 	sw	zero,4(zero)
  4889b0:	8c660000 	lw	a2,0(v1)
  4889b4:	00000000 	nop
  4889b8:	94c50002 	lhu	a1,2(a2)
  4889bc:	8f998be0 	lw	t9,-29728(gp)
  4889c0:	00000000 	nop
  4889c4:	0320f809 	jalr	t9
  4889c8:	00000000 	nop
  4889cc:	8fbc0010 	lw	gp,16(sp)
  4889d0:	1000ffe9 	b	488978 <pfkey_x_kmprivate_build+0x68>
  4889d4:	00000000 	nop

004889d8 <pfkey_x_protocol_build>:
  4889d8:	3c1c0fb8 	lui	gp,0xfb8
  4889dc:	279c3f98 	addiu	gp,gp,16280
  4889e0:	0399e021 	addu	gp,gp,t9
  4889e4:	27bdffd0 	addiu	sp,sp,-48
  4889e8:	afbc0010 	sw	gp,16(sp)
  4889ec:	8f838598 	lw	v1,-31336(gp)
  4889f0:	00000000 	nop
  4889f4:	8c630000 	lw	v1,0(v1)
  4889f8:	00000000 	nop
  4889fc:	afb30024 	sw	s3,36(sp)
  488a00:	afb20020 	sw	s2,32(sp)
  488a04:	afb1001c 	sw	s1,28(sp)
  488a08:	afbf002c 	sw	ra,44(sp)
  488a0c:	afbc0028 	sw	gp,40(sp)
  488a10:	afb00018 	sw	s0,24(sp)
  488a14:	00809821 	move	s3,a0
  488a18:	30b200ff 	andi	s2,a1,0xff
  488a1c:	8e700000 	lw	s0,0(s3)
  488a20:	00000000 	nop
  488a24:	1060000b 	beqz	v1,488a54 <pfkey_x_protocol_build+0x7c>
  488a28:	00008821 	move	s1,zero
  488a2c:	8f84804c 	lw	a0,-32692(gp)
  488a30:	00000000 	nop
  488a34:	2484991c 	addiu	a0,a0,-26340
  488a38:	02402821 	move	a1,s2
  488a3c:	8f998be0 	lw	t9,-29728(gp)
  488a40:	00000000 	nop
  488a44:	0320f809 	jalr	t9
  488a48:	00000000 	nop
  488a4c:	8fbc0010 	lw	gp,16(sp)
  488a50:	00000000 	nop
  488a54:	12000018 	beqz	s0,488ab8 <pfkey_x_protocol_build+0xe0>
  488a58:	24040008 	li	a0,8
  488a5c:	8f838598 	lw	v1,-31336(gp)
  488a60:	00000000 	nop
  488a64:	8c630000 	lw	v1,0(v1)
  488a68:	00000000 	nop
  488a6c:	1060000a 	beqz	v1,488a98 <pfkey_x_protocol_build+0xc0>
  488a70:	2411ffea 	li	s1,-22
  488a74:	8f84804c 	lw	a0,-32692(gp)
  488a78:	00000000 	nop
  488a7c:	24849954 	addiu	a0,a0,-26284
  488a80:	8f998a08 	lw	t9,-30200(gp)
  488a84:	00000000 	nop
  488a88:	0320f809 	jalr	t9
  488a8c:	00000000 	nop
  488a90:	8fbc0010 	lw	gp,16(sp)
  488a94:	00000000 	nop
  488a98:	02201021 	move	v0,s1
  488a9c:	8fbf002c 	lw	ra,44(sp)
  488aa0:	8fb30024 	lw	s3,36(sp)
  488aa4:	8fb20020 	lw	s2,32(sp)
  488aa8:	8fb1001c 	lw	s1,28(sp)
  488aac:	8fb00018 	lw	s0,24(sp)
  488ab0:	03e00008 	jr	ra
  488ab4:	27bd0030 	addiu	sp,sp,48
  488ab8:	8f9989d0 	lw	t9,-30256(gp)
  488abc:	00000000 	nop
  488ac0:	0320f809 	jalr	t9
  488ac4:	00000000 	nop
  488ac8:	8fbc0010 	lw	gp,16(sp)
  488acc:	00408021 	move	s0,v0
  488ad0:	12000009 	beqz	s0,488af8 <pfkey_x_protocol_build+0x120>
  488ad4:	24050001 	li	a1,1
  488ad8:	2402001a 	li	v0,26
  488adc:	ae700000 	sw	s0,0(s3)
  488ae0:	a6050000 	sh	a1,0(s0)
  488ae4:	a6020002 	sh	v0,2(s0)
  488ae8:	a2120004 	sb	s2,4(s0)
  488aec:	a2000007 	sb	zero,7(s0)
  488af0:	1000ffe9 	b	488a98 <pfkey_x_protocol_build+0xc0>
  488af4:	a2000006 	sb	zero,6(s0)
  488af8:	8f848598 	lw	a0,-31336(gp)
  488afc:	00000000 	nop
  488b00:	8c840000 	lw	a0,0(a0)
  488b04:	00000000 	nop
  488b08:	1080000a 	beqz	a0,488b34 <pfkey_x_protocol_build+0x15c>
  488b0c:	00000000 	nop
  488b10:	8f84804c 	lw	a0,-32692(gp)
  488b14:	00000000 	nop
  488b18:	24849994 	addiu	a0,a0,-26220
  488b1c:	8f998a08 	lw	t9,-30200(gp)
  488b20:	00000000 	nop
  488b24:	0320f809 	jalr	t9
  488b28:	00000000 	nop
  488b2c:	8fbc0010 	lw	gp,16(sp)
  488b30:	00000000 	nop
  488b34:	1000ffd8 	b	488a98 <pfkey_x_protocol_build+0xc0>
  488b38:	2411fff4 	li	s1,-12

00488b3c <pfkey_x_debug_build>:
  488b3c:	3c1c0fb8 	lui	gp,0xfb8
  488b40:	279c3e34 	addiu	gp,gp,15924
  488b44:	0399e021 	addu	gp,gp,t9
  488b48:	27bdff90 	addiu	sp,sp,-112
  488b4c:	afbc0038 	sw	gp,56(sp)
  488b50:	8f828598 	lw	v0,-31336(gp)
  488b54:	00000000 	nop
  488b58:	8c420000 	lw	v0,0(v0)
  488b5c:	00000000 	nop
  488b60:	afbe0064 	sw	s8,100(sp)
  488b64:	afb7005c 	sw	s7,92(sp)
  488b68:	afb60058 	sw	s6,88(sp)
  488b6c:	afb50054 	sw	s5,84(sp)
  488b70:	afb40050 	sw	s4,80(sp)
  488b74:	afb3004c 	sw	s3,76(sp)
  488b78:	afb20048 	sw	s2,72(sp)
  488b7c:	afb10044 	sw	s1,68(sp)
  488b80:	afbf0068 	sw	ra,104(sp)
  488b84:	afbc0060 	sw	gp,96(sp)
  488b88:	afb00040 	sw	s0,64(sp)
  488b8c:	00809021 	move	s2,a0
  488b90:	00a09821 	move	s3,a1
  488b94:	00c0a021 	move	s4,a2
  488b98:	00e0a821 	move	s5,a3
  488b9c:	8fb60080 	lw	s6,128(sp)
  488ba0:	8fb70084 	lw	s7,132(sp)
  488ba4:	8fbe0088 	lw	s8,136(sp)
  488ba8:	00000000 	nop
  488bac:	8e500000 	lw	s0,0(s2)
  488bb0:	00000000 	nop
  488bb4:	1040000e 	beqz	v0,488bf0 <pfkey_x_debug_build+0xb4>
  488bb8:	00008821 	move	s1,zero
  488bbc:	8f84804c 	lw	a0,-32692(gp)
  488bc0:	00000000 	nop
  488bc4:	248499cc 	addiu	a0,a0,-26164
  488bc8:	8f998a08 	lw	t9,-30200(gp)
  488bcc:	00000000 	nop
  488bd0:	0320f809 	jalr	t9
  488bd4:	00000000 	nop
  488bd8:	8fbc0038 	lw	gp,56(sp)
  488bdc:	00000000 	nop
  488be0:	8f828598 	lw	v0,-31336(gp)
  488be4:	00000000 	nop
  488be8:	8c420000 	lw	v0,0(v0)
  488bec:	00000000 	nop
  488bf0:	12000019 	beqz	s0,488c58 <pfkey_x_debug_build+0x11c>
  488bf4:	00000000 	nop
  488bf8:	1040000a 	beqz	v0,488c24 <pfkey_x_debug_build+0xe8>
  488bfc:	2411ffea 	li	s1,-22
  488c00:	8f84804c 	lw	a0,-32692(gp)
  488c04:	00000000 	nop
  488c08:	248499f4 	addiu	a0,a0,-26124
  488c0c:	8f998a08 	lw	t9,-30200(gp)
  488c10:	00000000 	nop
  488c14:	0320f809 	jalr	t9
  488c18:	00000000 	nop
  488c1c:	8fbc0038 	lw	gp,56(sp)
  488c20:	00000000 	nop
  488c24:	02201021 	move	v0,s1
  488c28:	8fbf0068 	lw	ra,104(sp)
  488c2c:	8fbe0064 	lw	s8,100(sp)
  488c30:	8fb7005c 	lw	s7,92(sp)
  488c34:	8fb60058 	lw	s6,88(sp)
  488c38:	8fb50054 	lw	s5,84(sp)
  488c3c:	8fb40050 	lw	s4,80(sp)
  488c40:	8fb3004c 	lw	s3,76(sp)
  488c44:	8fb20048 	lw	s2,72(sp)
  488c48:	8fb10044 	lw	s1,68(sp)
  488c4c:	8fb00040 	lw	s0,64(sp)
  488c50:	03e00008 	jr	ra
  488c54:	27bd0070 	addiu	sp,sp,112
  488c58:	1040001b 	beqz	v0,488cc8 <pfkey_x_debug_build+0x18c>
  488c5c:	02602821 	move	a1,s3
  488c60:	8fa20098 	lw	v0,152(sp)
  488c64:	8faa008c 	lw	t2,140(sp)
  488c68:	8fa90090 	lw	t1,144(sp)
  488c6c:	8fa80094 	lw	t0,148(sp)
  488c70:	afa20028 	sw	v0,40(sp)
  488c74:	8fa3009c 	lw	v1,156(sp)
  488c78:	8fa200a0 	lw	v0,160(sp)
  488c7c:	8f84804c 	lw	a0,-32692(gp)
  488c80:	00000000 	nop
  488c84:	24849a50 	addiu	a0,a0,-26032
  488c88:	02803021 	move	a2,s4
  488c8c:	02a03821 	move	a3,s5
  488c90:	afb60010 	sw	s6,16(sp)
  488c94:	afb70014 	sw	s7,20(sp)
  488c98:	afbe0018 	sw	s8,24(sp)
  488c9c:	afaa001c 	sw	t2,28(sp)
  488ca0:	afa90020 	sw	t1,32(sp)
  488ca4:	afa80024 	sw	t0,36(sp)
  488ca8:	afa3002c 	sw	v1,44(sp)
  488cac:	afa20030 	sw	v0,48(sp)
  488cb0:	8f998be0 	lw	t9,-29728(gp)
  488cb4:	00000000 	nop
  488cb8:	0320f809 	jalr	t9
  488cbc:	00000000 	nop
  488cc0:	8fbc0038 	lw	gp,56(sp)
  488cc4:	00000000 	nop
  488cc8:	24040038 	li	a0,56
  488ccc:	8f9989d0 	lw	t9,-30256(gp)
  488cd0:	00000000 	nop
  488cd4:	0320f809 	jalr	t9
  488cd8:	00000000 	nop
  488cdc:	8fbc0038 	lw	gp,56(sp)
  488ce0:	00408021 	move	s0,v0
  488ce4:	12000025 	beqz	s0,488d7c <pfkey_x_debug_build+0x240>
  488ce8:	ae500000 	sw	s0,0(s2)
  488cec:	240f0007 	li	t7,7
  488cf0:	240e0019 	li	t6,25
  488cf4:	a60f0000 	sh	t7,0(s0)
  488cf8:	a60e0002 	sh	t6,2(s0)
  488cfc:	ae130004 	sw	s3,4(s0)
  488d00:	ae140008 	sw	s4,8(s0)
  488d04:	ae15000c 	sw	s5,12(s0)
  488d08:	ae160010 	sw	s6,16(s0)
  488d0c:	ae170014 	sw	s7,20(s0)
  488d10:	ae1e0018 	sw	s8,24(s0)
  488d14:	8fad008c 	lw	t5,140(sp)
  488d18:	00000000 	nop
  488d1c:	26020034 	addiu	v0,s0,52
  488d20:	ae0d001c 	sw	t5,28(s0)
  488d24:	8fac0090 	lw	t4,144(sp)
  488d28:	00000000 	nop
  488d2c:	24030003 	li	v1,3
  488d30:	ae0c0020 	sw	t4,32(s0)
  488d34:	8fab0094 	lw	t3,148(sp)
  488d38:	00000000 	nop
  488d3c:	ae0b0024 	sw	t3,36(s0)
  488d40:	8fa70098 	lw	a3,152(sp)
  488d44:	00000000 	nop
  488d48:	ae070028 	sw	a3,40(s0)
  488d4c:	8fa6009c 	lw	a2,156(sp)
  488d50:	00000000 	nop
  488d54:	ae06002c 	sw	a2,44(s0)
  488d58:	8fa500a0 	lw	a1,160(sp)
  488d5c:	00000000 	nop
  488d60:	ae050030 	sw	a1,48(s0)
  488d64:	2463ffff 	addiu	v1,v1,-1
  488d68:	a0400000 	sb	zero,0(v0)
  488d6c:	0461fffd 	bgez	v1,488d64 <pfkey_x_debug_build+0x228>
  488d70:	24420001 	addiu	v0,v0,1
  488d74:	1000ffac 	b	488c28 <pfkey_x_debug_build+0xec>
  488d78:	02201021 	move	v0,s1
  488d7c:	8f848598 	lw	a0,-31336(gp)
  488d80:	00000000 	nop
  488d84:	8c840000 	lw	a0,0(a0)
  488d88:	00000000 	nop
  488d8c:	1080000a 	beqz	a0,488db8 <pfkey_x_debug_build+0x27c>
  488d90:	00000000 	nop
  488d94:	8f84804c 	lw	a0,-32692(gp)
  488d98:	00000000 	nop
  488d9c:	24849ae4 	addiu	a0,a0,-25884
  488da0:	8f998a08 	lw	t9,-30200(gp)
  488da4:	00000000 	nop
  488da8:	0320f809 	jalr	t9
  488dac:	00000000 	nop
  488db0:	8fbc0038 	lw	gp,56(sp)
  488db4:	00000000 	nop
  488db8:	1000ff9a 	b	488c24 <pfkey_x_debug_build+0xe8>
  488dbc:	2411fff4 	li	s1,-12

00488dc0 <pfkey_x_nat_t_type_build>:
  488dc0:	3c1c0fb8 	lui	gp,0xfb8
  488dc4:	279c3bb0 	addiu	gp,gp,15280
  488dc8:	0399e021 	addu	gp,gp,t9
  488dcc:	27bdffd0 	addiu	sp,sp,-48
  488dd0:	afbc0010 	sw	gp,16(sp)
  488dd4:	8f828598 	lw	v0,-31336(gp)
  488dd8:	00000000 	nop
  488ddc:	8c420000 	lw	v0,0(v0)
  488de0:	00000000 	nop
  488de4:	afb30024 	sw	s3,36(sp)
  488de8:	afb20020 	sw	s2,32(sp)
  488dec:	afb1001c 	sw	s1,28(sp)
  488df0:	afbf002c 	sw	ra,44(sp)
  488df4:	afbc0028 	sw	gp,40(sp)
  488df8:	afb00018 	sw	s0,24(sp)
  488dfc:	00809821 	move	s3,a0
  488e00:	30b100ff 	andi	s1,a1,0xff
  488e04:	8e700000 	lw	s0,0(s3)
  488e08:	00000000 	nop
  488e0c:	1040000e 	beqz	v0,488e48 <pfkey_x_nat_t_type_build+0x88>
  488e10:	00009021 	move	s2,zero
  488e14:	8f84804c 	lw	a0,-32692(gp)
  488e18:	00000000 	nop
  488e1c:	24849b24 	addiu	a0,a0,-25820
  488e20:	8f998a08 	lw	t9,-30200(gp)
  488e24:	00000000 	nop
  488e28:	0320f809 	jalr	t9
  488e2c:	00000000 	nop
  488e30:	8fbc0010 	lw	gp,16(sp)
  488e34:	00000000 	nop
  488e38:	8f828598 	lw	v0,-31336(gp)
  488e3c:	00000000 	nop
  488e40:	8c420000 	lw	v0,0(v0)
  488e44:	00000000 	nop
  488e48:	12000014 	beqz	s0,488e9c <pfkey_x_nat_t_type_build+0xdc>
  488e4c:	00000000 	nop
  488e50:	1040000a 	beqz	v0,488e7c <pfkey_x_nat_t_type_build+0xbc>
  488e54:	2412ffea 	li	s2,-22
  488e58:	8f84804c 	lw	a0,-32692(gp)
  488e5c:	00000000 	nop
  488e60:	24849b50 	addiu	a0,a0,-25776
  488e64:	8f998a08 	lw	t9,-30200(gp)
  488e68:	00000000 	nop
  488e6c:	0320f809 	jalr	t9
  488e70:	00000000 	nop
  488e74:	8fbc0010 	lw	gp,16(sp)
  488e78:	00000000 	nop
  488e7c:	02401021 	move	v0,s2
  488e80:	8fbf002c 	lw	ra,44(sp)
  488e84:	8fb30024 	lw	s3,36(sp)
  488e88:	8fb20020 	lw	s2,32(sp)
  488e8c:	8fb1001c 	lw	s1,28(sp)
  488e90:	8fb00018 	lw	s0,24(sp)
  488e94:	03e00008 	jr	ra
  488e98:	27bd0030 	addiu	sp,sp,48
  488e9c:	1040000a 	beqz	v0,488ec8 <pfkey_x_nat_t_type_build+0x108>
  488ea0:	02202821 	move	a1,s1
  488ea4:	8f84804c 	lw	a0,-32692(gp)
  488ea8:	00000000 	nop
  488eac:	24849bb4 	addiu	a0,a0,-25676
  488eb0:	8f998be0 	lw	t9,-29728(gp)
  488eb4:	00000000 	nop
  488eb8:	0320f809 	jalr	t9
  488ebc:	00000000 	nop
  488ec0:	8fbc0010 	lw	gp,16(sp)
  488ec4:	00000000 	nop
  488ec8:	24040008 	li	a0,8
  488ecc:	8f9989d0 	lw	t9,-30256(gp)
  488ed0:	00000000 	nop
  488ed4:	0320f809 	jalr	t9
  488ed8:	00000000 	nop
  488edc:	8fbc0010 	lw	gp,16(sp)
  488ee0:	00408021 	move	s0,v0
  488ee4:	1200000f 	beqz	s0,488f24 <pfkey_x_nat_t_type_build+0x164>
  488ee8:	ae700000 	sw	s0,0(s3)
  488eec:	24030001 	li	v1,1
  488ef0:	2402001b 	li	v0,27
  488ef4:	a6030000 	sh	v1,0(s0)
  488ef8:	a6020002 	sh	v0,2(s0)
  488efc:	a2110004 	sb	s1,4(s0)
  488f00:	26050005 	addiu	a1,s0,5
  488f04:	00002021 	move	a0,zero
  488f08:	00a43821 	addu	a3,a1,a0
  488f0c:	24840001 	addiu	a0,a0,1
  488f10:	28860003 	slti	a2,a0,3
  488f14:	14c0fffc 	bnez	a2,488f08 <pfkey_x_nat_t_type_build+0x148>
  488f18:	a0e00000 	sb	zero,0(a3)
  488f1c:	1000ffd8 	b	488e80 <pfkey_x_nat_t_type_build+0xc0>
  488f20:	02401021 	move	v0,s2
  488f24:	8f838598 	lw	v1,-31336(gp)
  488f28:	00000000 	nop
  488f2c:	8c630000 	lw	v1,0(v1)
  488f30:	00000000 	nop
  488f34:	1060000a 	beqz	v1,488f60 <pfkey_x_nat_t_type_build+0x1a0>
  488f38:	00000000 	nop
  488f3c:	8f84804c 	lw	a0,-32692(gp)
  488f40:	00000000 	nop
  488f44:	24849be8 	addiu	a0,a0,-25624
  488f48:	8f998a08 	lw	t9,-30200(gp)
  488f4c:	00000000 	nop
  488f50:	0320f809 	jalr	t9
  488f54:	00000000 	nop
  488f58:	8fbc0010 	lw	gp,16(sp)
  488f5c:	00000000 	nop
  488f60:	1000ffc6 	b	488e7c <pfkey_x_nat_t_type_build+0xbc>
  488f64:	2412fff4 	li	s2,-12

00488f68 <pfkey_x_nat_t_port_build>:
  488f68:	3c1c0fb8 	lui	gp,0xfb8
  488f6c:	279c3a08 	addiu	gp,gp,14856
  488f70:	0399e021 	addu	gp,gp,t9
  488f74:	27bdffc8 	addiu	sp,sp,-56
  488f78:	afbc0010 	sw	gp,16(sp)
  488f7c:	8f838598 	lw	v1,-31336(gp)
  488f80:	00000000 	nop
  488f84:	8c630000 	lw	v1,0(v1)
  488f88:	00000000 	nop
  488f8c:	afb40028 	sw	s4,40(sp)
  488f90:	afb30024 	sw	s3,36(sp)
  488f94:	afb20020 	sw	s2,32(sp)
  488f98:	afb1001c 	sw	s1,28(sp)
  488f9c:	afbf0030 	sw	ra,48(sp)
  488fa0:	afbc002c 	sw	gp,44(sp)
  488fa4:	afb00018 	sw	s0,24(sp)
  488fa8:	0080a021 	move	s4,a0
  488fac:	30b1ffff 	andi	s1,a1,0xffff
  488fb0:	30d3ffff 	andi	s3,a2,0xffff
  488fb4:	8e900000 	lw	s0,0(s4)
  488fb8:	00000000 	nop
  488fbc:	1060000e 	beqz	v1,488ff8 <pfkey_x_nat_t_port_build+0x90>
  488fc0:	00009021 	move	s2,zero
  488fc4:	8f84804c 	lw	a0,-32692(gp)
  488fc8:	00000000 	nop
  488fcc:	24849c2c 	addiu	a0,a0,-25556
  488fd0:	8f998a08 	lw	t9,-30200(gp)
  488fd4:	00000000 	nop
  488fd8:	0320f809 	jalr	t9
  488fdc:	00000000 	nop
  488fe0:	8fbc0010 	lw	gp,16(sp)
  488fe4:	00000000 	nop
  488fe8:	8f838598 	lw	v1,-31336(gp)
  488fec:	00000000 	nop
  488ff0:	8c630000 	lw	v1,0(v1)
  488ff4:	00000000 	nop
  488ff8:	12000016 	beqz	s0,489054 <pfkey_x_nat_t_port_build+0xec>
  488ffc:	2a24001e 	slti	a0,s1,30
  489000:	1060000b 	beqz	v1,489030 <pfkey_x_nat_t_port_build+0xc8>
  489004:	2412ffea 	li	s2,-22
  489008:	8f84804c 	lw	a0,-32692(gp)
  48900c:	00000000 	nop
  489010:	24849c58 	addiu	a0,a0,-25512
  489014:	8f998a08 	lw	t9,-30200(gp)
  489018:	00000000 	nop
  48901c:	0320f809 	jalr	t9
  489020:	00000000 	nop
  489024:	8fbc0010 	lw	gp,16(sp)
  489028:	00000000 	nop
  48902c:	2412ffea 	li	s2,-22
  489030:	02401021 	move	v0,s2
  489034:	8fbf0030 	lw	ra,48(sp)
  489038:	8fb40028 	lw	s4,40(sp)
  48903c:	8fb30024 	lw	s3,36(sp)
  489040:	8fb20020 	lw	s2,32(sp)
  489044:	8fb1001c 	lw	s1,28(sp)
  489048:	8fb00018 	lw	s0,24(sp)
  48904c:	03e00008 	jr	ra
  489050:	27bd0038 	addiu	sp,sp,56
  489054:	10800003 	beqz	a0,489064 <pfkey_x_nat_t_port_build+0xfc>
  489058:	2a24001c 	slti	a0,s1,28
  48905c:	1080000e 	beqz	a0,489098 <pfkey_x_nat_t_port_build+0x130>
  489060:	00000000 	nop
  489064:	1060fff1 	beqz	v1,48902c <pfkey_x_nat_t_port_build+0xc4>
  489068:	02202821 	move	a1,s1
  48906c:	8f84804c 	lw	a0,-32692(gp)
  489070:	00000000 	nop
  489074:	24849cbc 	addiu	a0,a0,-25412
  489078:	8f998be0 	lw	t9,-29728(gp)
  48907c:	00000000 	nop
  489080:	0320f809 	jalr	t9
  489084:	00000000 	nop
  489088:	8fbc0010 	lw	gp,16(sp)
  48908c:	00000000 	nop
  489090:	1000ffe7 	b	489030 <pfkey_x_nat_t_port_build+0xc8>
  489094:	2412ffea 	li	s2,-22
  489098:	1060000b 	beqz	v1,4890c8 <pfkey_x_nat_t_port_build+0x160>
  48909c:	02202821 	move	a1,s1
  4890a0:	8f84804c 	lw	a0,-32692(gp)
  4890a4:	00000000 	nop
  4890a8:	24849d00 	addiu	a0,a0,-25344
  4890ac:	02603021 	move	a2,s3
  4890b0:	8f998be0 	lw	t9,-29728(gp)
  4890b4:	00000000 	nop
  4890b8:	0320f809 	jalr	t9
  4890bc:	00000000 	nop
  4890c0:	8fbc0010 	lw	gp,16(sp)
  4890c4:	00000000 	nop
  4890c8:	24040008 	li	a0,8
  4890cc:	8f9989d0 	lw	t9,-30256(gp)
  4890d0:	00000000 	nop
  4890d4:	0320f809 	jalr	t9
  4890d8:	00000000 	nop
  4890dc:	8fbc0010 	lw	gp,16(sp)
  4890e0:	00408021 	move	s0,v0
  4890e4:	12000007 	beqz	s0,489104 <pfkey_x_nat_t_port_build+0x19c>
  4890e8:	ae900000 	sw	s0,0(s4)
  4890ec:	24050001 	li	a1,1
  4890f0:	a6050000 	sh	a1,0(s0)
  4890f4:	a6110002 	sh	s1,2(s0)
  4890f8:	a6130004 	sh	s3,4(s0)
  4890fc:	1000ffcc 	b	489030 <pfkey_x_nat_t_port_build+0xc8>
  489100:	a6000006 	sh	zero,6(s0)
  489104:	8f838598 	lw	v1,-31336(gp)
  489108:	00000000 	nop
  48910c:	8c630000 	lw	v1,0(v1)
  489110:	00000000 	nop
  489114:	1060000a 	beqz	v1,489140 <pfkey_x_nat_t_port_build+0x1d8>
  489118:	00000000 	nop
  48911c:	8f84804c 	lw	a0,-32692(gp)
  489120:	00000000 	nop
  489124:	24849d3c 	addiu	a0,a0,-25284
  489128:	8f998a08 	lw	t9,-30200(gp)
  48912c:	00000000 	nop
  489130:	0320f809 	jalr	t9
  489134:	00000000 	nop
  489138:	8fbc0010 	lw	gp,16(sp)
  48913c:	00000000 	nop
  489140:	1000ffbb 	b	489030 <pfkey_x_nat_t_port_build+0xc8>
  489144:	2412fff4 	li	s2,-12
	...

00489150 <pfkey_sa_parse>:
  489150:	3c1c0fb8 	lui	gp,0xfb8
  489154:	279c3820 	addiu	gp,gp,14368
  489158:	0399e021 	addu	gp,gp,t9
  48915c:	27bdffc0 	addiu	sp,sp,-64
  489160:	afbc0028 	sw	gp,40(sp)
{
	int error = 0;
	struct sadb_sa *pfkey_sa = (struct sadb_sa *)pfkey_ext;
	
	DEBUGGING(PF_KEY_DEBUG_PARSE_FLOW,
  489164:	8f858598 	lw	a1,-31336(gp)
  489168:	00000000 	nop
  48916c:	8ca50000 	lw	a1,0(a1)
  489170:	00000000 	nop
  489174:	afb10034 	sw	s1,52(sp)
  489178:	2ca30004 	sltiu	v1,a1,4
  48917c:	afb00030 	sw	s0,48(sp)
  489180:	afbf003c 	sw	ra,60(sp)
  489184:	afbc0038 	sw	gp,56(sp)
  489188:	00808021 	move	s0,a0
  48918c:	1460000e 	bnez	v1,4891c8 <pfkey_sa_parse+0x78>
  489190:	00008821 	move	s1,zero
  489194:	8f84804c 	lw	a0,-32692(gp)
  489198:	00000000 	nop
  48919c:	24849da4 	addiu	a0,a0,-25180
  4891a0:	8f998a08 	lw	t9,-30200(gp)
  4891a4:	00000000 	nop
  4891a8:	0320f809 	jalr	t9
  4891ac:	00000000 	nop
  4891b0:	8fbc0028 	lw	gp,40(sp)
  4891b4:	00000000 	nop
  4891b8:	8f858598 	lw	a1,-31336(gp)
  4891bc:	00000000 	nop
  4891c0:	8ca50000 	lw	a1,0(a1)
  4891c4:	00000000 	nop
		  "pfkey_sa_parse: entry\n");
	/* sanity checks... */
	if(!pfkey_sa) {
  4891c8:	12000088 	beqz	s0,4893ec <pfkey_sa_parse+0x29c>
  4891cc:	24040002 	li	a0,2
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			  "pfkey_sa_parse: "
			  "NULL pointer passed in.\n");
		SENDERR(EINVAL);
	}
	
	if(pfkey_sa->sadb_sa_len != sizeof(struct sadb_sa) / IPSEC_PFKEYv2_ALIGN) {
  4891d0:	96030000 	lhu	v1,0(s0)
  4891d4:	00000000 	nop
  4891d8:	10640014 	beq	v1,a0,48922c <pfkey_sa_parse+0xdc>
  4891dc:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  4891e0:	10a0000b 	beqz	a1,489210 <pfkey_sa_parse+0xc0>
  4891e4:	00602821 	move	a1,v1
  4891e8:	8f84804c 	lw	a0,-32692(gp)
  4891ec:	00000000 	nop
  4891f0:	24849dcc 	addiu	a0,a0,-25140
  4891f4:	24060010 	li	a2,16
  4891f8:	8f998be0 	lw	t9,-29728(gp)
  4891fc:	00000000 	nop
  489200:	0320f809 	jalr	t9
  489204:	00000000 	nop
  489208:	8fbc0028 	lw	gp,40(sp)
  48920c:	00000000 	nop
			"pfkey_sa_parse: "
			"length wrong pfkey_sa->sadb_sa_len=%d sizeof(struct sadb_sa)=%d.\n",
			pfkey_sa->sadb_sa_len,
			(int) sizeof(struct sadb_sa));
		SENDERR(EINVAL);
  489210:	2411ffea 	li	s1,-22
	}
	
	if(pfkey_sa->sadb_sa_encrypt > SADB_EALG_MAX) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_sa_parse: "
			"pfkey_sa->sadb_sa_encrypt=%d > SADB_EALG_MAX=%d.\n",
			pfkey_sa->sadb_sa_encrypt,
			SADB_EALG_MAX);
		SENDERR(EINVAL);
	}
	
	if(pfkey_sa->sadb_sa_auth > SADB_AALG_MAX) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_sa_parse: "
			"pfkey_sa->sadb_sa_auth=%d > SADB_AALG_MAX=%d.\n",
			pfkey_sa->sadb_sa_auth,
			SADB_AALG_MAX);
		SENDERR(EINVAL);
	}
	
	if(pfkey_sa->sadb_sa_state > SADB_SASTATE_MAX) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_sa_parse: "
			"state=%d exceeds MAX=%d.\n",
			pfkey_sa->sadb_sa_state,
			SADB_SASTATE_MAX);
		SENDERR(EINVAL);
	}
	
	if(pfkey_sa->sadb_sa_state == SADB_SASTATE_DEAD) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_sa_parse: "
			"state=%d is DEAD=%d.\n",
			pfkey_sa->sadb_sa_state,
			SADB_SASTATE_DEAD);
		SENDERR(EINVAL);
	}
	
	if(pfkey_sa->sadb_sa_replay > 64) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_sa_parse: "
			"replay window size: %d -- must be 0 <= size <= 64\n",
			pfkey_sa->sadb_sa_replay);
		SENDERR(EINVAL);
	}
	
	if(! ((pfkey_sa->sadb_sa_exttype ==  SADB_EXT_SA) ||
	      (pfkey_sa->sadb_sa_exttype ==  SADB_X_EXT_SA2)))
	{
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_sa_parse: "
			"unknown exttype=%d, expecting SADB_EXT_SA=%d or SADB_X_EXT_SA2=%d.\n",
			pfkey_sa->sadb_sa_exttype,
			SADB_EXT_SA,
			SADB_X_EXT_SA2);
		SENDERR(EINVAL);
	}
	DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
		"pfkey_sa_parse: "
		"successfully found len=%d exttype=%d(%s) spi=%08lx replay=%d state=%d auth=%d encrypt=%d flags=%d.\n",
		  pfkey_sa->sadb_sa_len,
		  pfkey_sa->sadb_sa_exttype, pfkey_v2_sadb_ext_string(pfkey_sa->sadb_sa_exttype),
		(long unsigned int)ntohl(pfkey_sa->sadb_sa_spi),
		pfkey_sa->sadb_sa_replay,
		pfkey_sa->sadb_sa_state,
		pfkey_sa->sadb_sa_auth,
		pfkey_sa->sadb_sa_encrypt,
		pfkey_sa->sadb_sa_flags);

 errlab:
	return error;
  489214:	02201021 	move	v0,s1
  489218:	8fbf003c 	lw	ra,60(sp)
  48921c:	8fb10034 	lw	s1,52(sp)
  489220:	8fb00030 	lw	s0,48(sp)
  489224:	03e00008 	jr	ra
  489228:	27bd0040 	addiu	sp,sp,64
  48922c:	9206000a 	lbu	a2,10(s0)
  489230:	00000000 	nop
  489234:	2cc30010 	sltiu	v1,a2,16
  489238:	1460000a 	bnez	v1,489264 <pfkey_sa_parse+0x114>
  48923c:	00000000 	nop
  489240:	10a0fff3 	beqz	a1,489210 <pfkey_sa_parse+0xc0>
  489244:	2406000f 	li	a2,15
  489248:	9205000a 	lbu	a1,10(s0)
  48924c:	8f84804c 	lw	a0,-32692(gp)
  489250:	00000000 	nop
  489254:	24849e30 	addiu	a0,a0,-25040
  489258:	00000000 	nop
  48925c:	1000ffe6 	b	4891f8 <pfkey_sa_parse+0xa8>
  489260:	00000000 	nop
  489264:	92030009 	lbu	v1,9(s0)
  489268:	00000000 	nop
  48926c:	2c670004 	sltiu	a3,v1,4
  489270:	14e00009 	bnez	a3,489298 <pfkey_sa_parse+0x148>
  489274:	24080003 	li	t0,3
  489278:	10a0ffe5 	beqz	a1,489210 <pfkey_sa_parse+0xc0>
  48927c:	00602821 	move	a1,v1
  489280:	8f84804c 	lw	a0,-32692(gp)
  489284:	00000000 	nop
  489288:	24849e80 	addiu	a0,a0,-24960
  48928c:	00000000 	nop
  489290:	1000ffd9 	b	4891f8 <pfkey_sa_parse+0xa8>
  489294:	24060003 	li	a2,3
  489298:	1068004b 	beq	v1,t0,4893c8 <pfkey_sa_parse+0x278>
  48929c:	00000000 	nop
  4892a0:	920a0008 	lbu	t2,8(s0)
  4892a4:	00000000 	nop
  4892a8:	2d490041 	sltiu	t1,t2,65
  4892ac:	1520000f 	bnez	t1,4892ec <pfkey_sa_parse+0x19c>
  4892b0:	240b0001 	li	t3,1
  4892b4:	10a0ffd6 	beqz	a1,489210 <pfkey_sa_parse+0xc0>
  4892b8:	2411ffea 	li	s1,-22
  4892bc:	92050008 	lbu	a1,8(s0)
  4892c0:	8f84804c 	lw	a0,-32692(gp)
  4892c4:	00000000 	nop
  4892c8:	24849ebc 	addiu	a0,a0,-24900
  4892cc:	8f998be0 	lw	t9,-29728(gp)
  4892d0:	00000000 	nop
  4892d4:	0320f809 	jalr	t9
  4892d8:	00000000 	nop
  4892dc:	8fbc0028 	lw	gp,40(sp)
  4892e0:	00000000 	nop
  4892e4:	1000ffcc 	b	489218 <pfkey_sa_parse+0xc8>
  4892e8:	02201021 	move	v0,s1
  4892ec:	96030002 	lhu	v1,2(s0)
  4892f0:	00000000 	nop
  4892f4:	106b0012 	beq	v1,t3,489340 <pfkey_sa_parse+0x1f0>
  4892f8:	240c0013 	li	t4,19
  4892fc:	106c0011 	beq	v1,t4,489344 <pfkey_sa_parse+0x1f4>
  489300:	2cad0003 	sltiu	t5,a1,3
  489304:	10a0ffc2 	beqz	a1,489210 <pfkey_sa_parse+0xc0>
  489308:	00602821 	move	a1,v1
  48930c:	8f84804c 	lw	a0,-32692(gp)
  489310:	00000000 	nop
  489314:	24849f10 	addiu	a0,a0,-24816
  489318:	24060001 	li	a2,1
  48931c:	24070013 	li	a3,19
  489320:	8f998be0 	lw	t9,-29728(gp)
  489324:	00000000 	nop
  489328:	0320f809 	jalr	t9
  48932c:	00000000 	nop
  489330:	8fbc0028 	lw	gp,40(sp)
  489334:	00000000 	nop
  489338:	1000ffb6 	b	489214 <pfkey_sa_parse+0xc4>
  48933c:	2411ffea 	li	s1,-22
  489340:	2cad0003 	sltiu	t5,a1,3
  489344:	15a0ffb3 	bnez	t5,489214 <pfkey_sa_parse+0xc4>
  489348:	00000000 	nop
  48934c:	96040002 	lhu	a0,2(s0)
  489350:	8f998680 	lw	t9,-31104(gp)
  489354:	00000000 	nop
  489358:	0320f809 	jalr	t9
  48935c:	00000000 	nop
  489360:	8fbc0028 	lw	gp,40(sp)
  489364:	96050000 	lhu	a1,0(s0)
  489368:	96060002 	lhu	a2,2(s0)
  48936c:	8e0e000c 	lw	t6,12(s0)
  489370:	8e080004 	lw	t0,4(s0)
  489374:	92090008 	lbu	t1,8(s0)
  489378:	92190009 	lbu	t9,9(s0)
  48937c:	9218000a 	lbu	t8,10(s0)
  489380:	920f000b 	lbu	t7,11(s0)
  489384:	8f84804c 	lw	a0,-32692(gp)
  489388:	00000000 	nop
  48938c:	24849f74 	addiu	a0,a0,-24716
  489390:	00403821 	move	a3,v0
  489394:	afa80010 	sw	t0,16(sp)
  489398:	afa90014 	sw	t1,20(sp)
  48939c:	afb90018 	sw	t9,24(sp)
  4893a0:	afb8001c 	sw	t8,28(sp)
  4893a4:	afaf0020 	sw	t7,32(sp)
  4893a8:	afae0024 	sw	t6,36(sp)
  4893ac:	8f998be0 	lw	t9,-29728(gp)
  4893b0:	00000000 	nop
  4893b4:	0320f809 	jalr	t9
  4893b8:	00000000 	nop
  4893bc:	8fbc0028 	lw	gp,40(sp)
  4893c0:	1000ff95 	b	489218 <pfkey_sa_parse+0xc8>
  4893c4:	02201021 	move	v0,s1
  4893c8:	10a0ff91 	beqz	a1,489210 <pfkey_sa_parse+0xc0>
  4893cc:	24060003 	li	a2,3
  4893d0:	92050009 	lbu	a1,9(s0)
  4893d4:	8f84804c 	lw	a0,-32692(gp)
  4893d8:	00000000 	nop
  4893dc:	24849ff8 	addiu	a0,a0,-24584
  4893e0:	00000000 	nop
  4893e4:	1000ff84 	b	4891f8 <pfkey_sa_parse+0xa8>
  4893e8:	00000000 	nop
  4893ec:	10a0ff88 	beqz	a1,489210 <pfkey_sa_parse+0xc0>
  4893f0:	2411ffea 	li	s1,-22
  4893f4:	8f84804c 	lw	a0,-32692(gp)
  4893f8:	00000000 	nop
  4893fc:	2484a030 	addiu	a0,a0,-24528
  489400:	8f998a08 	lw	t9,-30200(gp)
  489404:	00000000 	nop
  489408:	0320f809 	jalr	t9
  48940c:	00000000 	nop
  489410:	8fbc0028 	lw	gp,40(sp)
  489414:	00000000 	nop
  489418:	1000ff7f 	b	489218 <pfkey_sa_parse+0xc8>
  48941c:	02201021 	move	v0,s1

00489420 <pfkey_address_parse>:
  489420:	3c1c0fb8 	lui	gp,0xfb8
  489424:	279c3550 	addiu	gp,gp,13648
  489428:	0399e021 	addu	gp,gp,t9
  48942c:	27bdff68 	addiu	sp,sp,-152
  489430:	afbc0028 	sw	gp,40(sp)
}	

DEBUG_NO_STATIC int
pfkey_lifetime_parse(struct sadb_ext  *pfkey_ext)
{
	int error = 0;
	struct sadb_lifetime *pfkey_lifetime = (struct sadb_lifetime *)pfkey_ext;

	DEBUGGING(PF_KEY_DEBUG_PARSE_FLOW,
		  "pfkey_lifetime_parse:enter\n");
	/* sanity checks... */
	if(!pfkey_lifetime) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_lifetime_parse: "
			"NULL pointer passed in.\n");
		SENDERR(EINVAL);
	}

	if(pfkey_lifetime->sadb_lifetime_len !=
	   sizeof(struct sadb_lifetime) / IPSEC_PFKEYv2_ALIGN) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_lifetime_parse: "
			"length wrong pfkey_lifetime->sadb_lifetime_len=%d sizeof(struct sadb_lifetime)=%d.\n",
			pfkey_lifetime->sadb_lifetime_len,
			(int) sizeof(struct sadb_lifetime));
		SENDERR(EINVAL);
	}

	if((pfkey_lifetime->sadb_lifetime_exttype != SADB_EXT_LIFETIME_HARD) &&
	   (pfkey_lifetime->sadb_lifetime_exttype != SADB_EXT_LIFETIME_SOFT) &&
	   (pfkey_lifetime->sadb_lifetime_exttype != SADB_EXT_LIFETIME_CURRENT)) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_lifetime_parse: "
			"unexpected ext_type=%d.\n", 
			pfkey_lifetime->sadb_lifetime_exttype); 
		SENDERR(EINVAL);
	}

errlab:
	return error;
}

DEBUG_NO_STATIC int
pfkey_address_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	int saddr_len = 0;
	struct sadb_address *pfkey_address = (struct sadb_address *)pfkey_ext;
	struct sockaddr* s = (struct sockaddr*)((char*)pfkey_address + sizeof(*pfkey_address));
	char ipaddr_txt[ADDRTOT_BUF];
	
	DEBUGGING(PF_KEY_DEBUG_PARSE_FLOW,
  489434:	8f868598 	lw	a2,-31336(gp)
  489438:	00000000 	nop
  48943c:	8cc60000 	lw	a2,0(a2)
  489440:	00000000 	nop
  489444:	afb10084 	sw	s1,132(sp)
  489448:	2cc30004 	sltiu	v1,a2,4
  48944c:	00808821 	move	s1,a0
  489450:	afb20088 	sw	s2,136(sp)
  489454:	afb00080 	sw	s0,128(sp)
  489458:	afbf0090 	sw	ra,144(sp)
  48945c:	afbc008c 	sw	gp,140(sp)
  489460:	00009021 	move	s2,zero
  489464:	1460000e 	bnez	v1,4894a0 <pfkey_address_parse+0x80>
  489468:	26300008 	addiu	s0,s1,8
  48946c:	8f84804c 	lw	a0,-32692(gp)
  489470:	00000000 	nop
  489474:	2484a068 	addiu	a0,a0,-24472
  489478:	8f998a08 	lw	t9,-30200(gp)
  48947c:	00000000 	nop
  489480:	0320f809 	jalr	t9
  489484:	00000000 	nop
  489488:	8fbc0028 	lw	gp,40(sp)
  48948c:	00000000 	nop
  489490:	8f868598 	lw	a2,-31336(gp)
  489494:	00000000 	nop
  489498:	8cc60000 	lw	a2,0(a2)
  48949c:	00000000 	nop
		"pfkey_address_parse:enter\n");
	/* sanity checks... */
	if(!pfkey_address) {
  4894a0:	122000e5 	beqz	s1,489838 <pfkey_address_parse+0x418>
  4894a4:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_address_parse: "
			"NULL pointer passed in.\n");
		SENDERR(EINVAL);
	}
	
	if(pfkey_address->sadb_address_len <
	   (sizeof(struct sadb_address) + sizeof(struct sockaddr))/
	   IPSEC_PFKEYv2_ALIGN) {
  4894a8:	96240000 	lhu	a0,0(s1)
  4894ac:	00000000 	nop
  4894b0:	2c830003 	sltiu	v1,a0,3
  4894b4:	10600016 	beqz	v1,489510 <pfkey_address_parse+0xf0>
  4894b8:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  4894bc:	10c0000c 	beqz	a2,4894f0 <pfkey_address_parse+0xd0>
  4894c0:	24060008 	li	a2,8
  4894c4:	96250000 	lhu	a1,0(s1)
  4894c8:	8f84804c 	lw	a0,-32692(gp)
  4894cc:	00000000 	nop
  4894d0:	2484a094 	addiu	a0,a0,-24428
  4894d4:	24070010 	li	a3,16
  4894d8:	8f998be0 	lw	t9,-29728(gp)
  4894dc:	00000000 	nop
  4894e0:	0320f809 	jalr	t9
  4894e4:	00000000 	nop
  4894e8:	8fbc0028 	lw	gp,40(sp)
  4894ec:	00000000 	nop
			"pfkey_address_parse: "
			"size wrong 1 ext_len=%d, adr_ext_len=%d, saddr_len=%d.\n",
			pfkey_address->sadb_address_len,
			(int) sizeof(struct sadb_address),
			(int) sizeof(struct sockaddr));
		SENDERR(EINVAL);
  4894f0:	2412ffea 	li	s2,-22
	}
	
	if(pfkey_address->sadb_address_reserved) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_address_parse: "
			"res=%d, must be zero.\n",
			pfkey_address->sadb_address_reserved);
		SENDERR(EINVAL);
	}
	
	switch(pfkey_address->sadb_address_exttype) {	
	case SADB_EXT_ADDRESS_SRC:
	case SADB_EXT_ADDRESS_DST:
	case SADB_EXT_ADDRESS_PROXY:
	case SADB_X_EXT_ADDRESS_DST2:
	case SADB_X_EXT_ADDRESS_SRC_FLOW:
	case SADB_X_EXT_ADDRESS_DST_FLOW:
	case SADB_X_EXT_ADDRESS_SRC_MASK:
	case SADB_X_EXT_ADDRESS_DST_MASK:
#ifdef NAT_TRAVERSAL
	case SADB_X_EXT_NAT_T_OA:
#endif
		break;
	default:
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM, 
			"pfkey_address_parse: "
			"unexpected ext_type=%d.\n", 
			pfkey_address->sadb_address_exttype); 
		SENDERR(EINVAL); 
	}
	
	switch(s->sa_family) {
	case AF_INET:
		DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
			"pfkey_address_parse: "
			"found address family=%d, AF_INET.\n",
			s->sa_family);
		saddr_len = sizeof(struct sockaddr_in);
		sprintf(ipaddr_txt, "%d.%d.%d.%d"
			, (((struct sockaddr_in*)s)->sin_addr.s_addr >>  0) & 0xFF
			, (((struct sockaddr_in*)s)->sin_addr.s_addr >>  8) & 0xFF
			, (((struct sockaddr_in*)s)->sin_addr.s_addr >> 16) & 0xFF
			, (((struct sockaddr_in*)s)->sin_addr.s_addr >> 24) & 0xFF);
		DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
			"pfkey_address_parse: "
			"found address=%s.\n",
			ipaddr_txt);
		break;
	case AF_INET6:
		DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
			"pfkey_address_parse: "
			"found address family=%d, AF_INET6.\n",
			s->sa_family);
		saddr_len = sizeof(struct sockaddr_in6);
		sprintf(ipaddr_txt, "%x:%x:%x:%x:%x:%x:%x:%x"
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[0])
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[1])
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[2])
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[3])
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[4])
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[5])
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[6])
			, ntohs(((struct sockaddr_in6*)s)->sin6_addr.s6_addr16[7]));
		DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
			"pfkey_address_parse: "
			"found address=%s.\n",
			ipaddr_txt);
		break;
	default:
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_address_parse: "
			"s->sa_family=%d not supported.\n",
			s->sa_family);
		SENDERR(EPFNOSUPPORT);
	}
	
	if(pfkey_address->sadb_address_len !=
	   DIVUP(sizeof(struct sadb_address) + saddr_len, IPSEC_PFKEYv2_ALIGN)) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_address_parse: "
			"size wrong 2 ext_len=%d, adr_ext_len=%d, saddr_len=%d.\n",
			pfkey_address->sadb_address_len,
			(int) sizeof(struct sadb_address),
			saddr_len);
		SENDERR(EINVAL);
	}
	
	if(pfkey_address->sadb_address_prefixlen != 0) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_address_parse: "
			"address prefixes not supported yet.\n");
		SENDERR(EAFNOSUPPORT); /* not supported yet */
	}
	
	/* XXX check if port!=0 */
	
	DEBUGGING(PF_KEY_DEBUG_PARSE_FLOW,
		"pfkey_address_parse: successful.\n");
 errlab:
	return error;
  4894f4:	02401021 	move	v0,s2
  4894f8:	8fbf0090 	lw	ra,144(sp)
  4894fc:	8fb20088 	lw	s2,136(sp)
  489500:	8fb10084 	lw	s1,132(sp)
  489504:	8fb00080 	lw	s0,128(sp)
  489508:	03e00008 	jr	ra
  48950c:	27bd0098 	addiu	sp,sp,152
  489510:	96220006 	lhu	v0,6(s1)
  489514:	00000000 	nop
  489518:	1040000e 	beqz	v0,489554 <pfkey_address_parse+0x134>
  48951c:	00000000 	nop
  489520:	10c0fff3 	beqz	a2,4894f0 <pfkey_address_parse+0xd0>
  489524:	00402821 	move	a1,v0
  489528:	8f84804c 	lw	a0,-32692(gp)
  48952c:	00000000 	nop
  489530:	2484a0f4 	addiu	a0,a0,-24332
  489534:	8f998be0 	lw	t9,-29728(gp)
  489538:	00000000 	nop
  48953c:	0320f809 	jalr	t9
  489540:	00000000 	nop
  489544:	8fbc0028 	lw	gp,40(sp)
  489548:	00000000 	nop
  48954c:	1000ffe9 	b	4894f4 <pfkey_address_parse+0xd4>
  489550:	2412ffea 	li	s2,-22
  489554:	96250002 	lhu	a1,2(s1)
  489558:	00000000 	nop
  48955c:	24a3fffb 	addiu	v1,a1,-5
  489560:	2c67001a 	sltiu	a3,v1,26
  489564:	10e0000a 	beqz	a3,489590 <pfkey_address_parse+0x170>
  489568:	00034880 	sll	t1,v1,0x2
  48956c:	8f88804c 	lw	t0,-32692(gp)
  489570:	00000000 	nop
  489574:	2508a3c8 	addiu	t0,t0,-23608
  489578:	01094021 	addu	t0,t0,t1
  48957c:	8d080000 	lw	t0,0(t0)
  489580:	00000000 	nop
  489584:	011c4021 	addu	t0,t0,gp
  489588:	01000008 	jr	t0
  48958c:	00000000 	nop
  489590:	10c0ffd7 	beqz	a2,4894f0 <pfkey_address_parse+0xd0>
  489594:	2412ffea 	li	s2,-22
  489598:	8f84804c 	lw	a0,-32692(gp)
  48959c:	00000000 	nop
  4895a0:	2484a130 	addiu	a0,a0,-24272
  4895a4:	8f998be0 	lw	t9,-29728(gp)
  4895a8:	00000000 	nop
  4895ac:	0320f809 	jalr	t9
  4895b0:	00000000 	nop
  4895b4:	8fbc0028 	lw	gp,40(sp)
  4895b8:	00000000 	nop
  4895bc:	1000ffce 	b	4894f8 <pfkey_address_parse+0xd8>
  4895c0:	02401021 	move	v0,s2
  4895c4:	96050000 	lhu	a1,0(s0)
  4895c8:	240a0002 	li	t2,2
  4895cc:	10aa0072 	beq	a1,t2,489798 <pfkey_address_parse+0x378>
  4895d0:	240b000a 	li	t3,10
  4895d4:	10ab000e 	beq	a1,t3,489610 <pfkey_address_parse+0x1f0>
  4895d8:	2cd80003 	sltiu	t8,a2,3
  4895dc:	10c0000a 	beqz	a2,489608 <pfkey_address_parse+0x1e8>
  4895e0:	00000000 	nop
  4895e4:	8f84804c 	lw	a0,-32692(gp)
  4895e8:	00000000 	nop
  4895ec:	2484a170 	addiu	a0,a0,-24208
  4895f0:	8f998be0 	lw	t9,-29728(gp)
  4895f4:	00000000 	nop
  4895f8:	0320f809 	jalr	t9
  4895fc:	00000000 	nop
  489600:	8fbc0028 	lw	gp,40(sp)
  489604:	00000000 	nop
  489608:	1000ffba 	b	4894f4 <pfkey_address_parse+0xd4>
  48960c:	2412ff85 	li	s2,-123
  489610:	1700000a 	bnez	t8,48963c <pfkey_address_parse+0x21c>
  489614:	2405000a 	li	a1,10
  489618:	8f84804c 	lw	a0,-32692(gp)
  48961c:	00000000 	nop
  489620:	2484a1b8 	addiu	a0,a0,-24136
  489624:	8f998be0 	lw	t9,-29728(gp)
  489628:	00000000 	nop
  48962c:	0320f809 	jalr	t9
  489630:	00000000 	nop
  489634:	8fbc0028 	lw	gp,40(sp)
  489638:	00000000 	nop
  48963c:	96060008 	lhu	a2,8(s0)
  489640:	9607000a 	lhu	a3,10(s0)
  489644:	960c0016 	lhu	t4,22(s0)
  489648:	9603000c 	lhu	v1,12(s0)
  48964c:	9608000e 	lhu	t0,14(s0)
  489650:	96090010 	lhu	t1,16(s0)
  489654:	960a0012 	lhu	t2,18(s0)
  489658:	960b0014 	lhu	t3,20(s0)
  48965c:	8f85804c 	lw	a1,-32692(gp)
  489660:	00000000 	nop
  489664:	24a5a204 	addiu	a1,a1,-24060
  489668:	27a40030 	addiu	a0,sp,48
  48966c:	afa30010 	sw	v1,16(sp)
  489670:	afa80014 	sw	t0,20(sp)
  489674:	afa90018 	sw	t1,24(sp)
  489678:	afaa001c 	sw	t2,28(sp)
  48967c:	afab0020 	sw	t3,32(sp)
  489680:	afac0024 	sw	t4,36(sp)
  489684:	8f9983d0 	lw	t9,-31792(gp)
  489688:	00000000 	nop
  48968c:	0320f809 	jalr	t9
  489690:	00000000 	nop
  489694:	8fbc0028 	lw	gp,40(sp)
  489698:	00000000 	nop
  48969c:	8f868598 	lw	a2,-31336(gp)
  4896a0:	00000000 	nop
  4896a4:	8cc60000 	lw	a2,0(a2)
  4896a8:	00000000 	nop
  4896ac:	2cd90003 	sltiu	t9,a2,3
  4896b0:	1720000f 	bnez	t9,4896f0 <pfkey_address_parse+0x2d0>
  4896b4:	2410001c 	li	s0,28
  4896b8:	8f84804c 	lw	a0,-32692(gp)
  4896bc:	00000000 	nop
  4896c0:	2484a21c 	addiu	a0,a0,-24036
  4896c4:	27a50030 	addiu	a1,sp,48
  4896c8:	8f998be0 	lw	t9,-29728(gp)
  4896cc:	00000000 	nop
  4896d0:	0320f809 	jalr	t9
  4896d4:	00000000 	nop
  4896d8:	8fbc0028 	lw	gp,40(sp)
  4896dc:	00000000 	nop
  4896e0:	8f868598 	lw	a2,-31336(gp)
  4896e4:	00000000 	nop
  4896e8:	8cc60000 	lw	a2,0(a2)
  4896ec:	00000000 	nop
  4896f0:	2607000f 	addiu	a3,s0,15
  4896f4:	96250000 	lhu	a1,0(s1)
  4896f8:	000720c2 	srl	a0,a3,0x3
  4896fc:	10a40009 	beq	a1,a0,489724 <pfkey_address_parse+0x304>
  489700:	00000000 	nop
  489704:	10c0ff7a 	beqz	a2,4894f0 <pfkey_address_parse+0xd0>
  489708:	02003821 	move	a3,s0
  48970c:	8f84804c 	lw	a0,-32692(gp)
  489710:	00000000 	nop
  489714:	2484a254 	addiu	a0,a0,-23980
  489718:	00000000 	nop
  48971c:	1000ff6e 	b	4894d8 <pfkey_address_parse+0xb8>
  489720:	24060008 	li	a2,8
  489724:	92300005 	lbu	s0,5(s1)
  489728:	00000000 	nop
  48972c:	1200000e 	beqz	s0,489768 <pfkey_address_parse+0x348>
  489730:	2cd10004 	sltiu	s1,a2,4
  489734:	10c0000a 	beqz	a2,489760 <pfkey_address_parse+0x340>
  489738:	00000000 	nop
  48973c:	8f84804c 	lw	a0,-32692(gp)
  489740:	00000000 	nop
  489744:	2484a2b4 	addiu	a0,a0,-23884
  489748:	8f998a08 	lw	t9,-30200(gp)
  48974c:	00000000 	nop
  489750:	0320f809 	jalr	t9
  489754:	00000000 	nop
  489758:	8fbc0028 	lw	gp,40(sp)
  48975c:	00000000 	nop
  489760:	1000ff64 	b	4894f4 <pfkey_address_parse+0xd4>
  489764:	2412ff84 	li	s2,-124
  489768:	1620ff62 	bnez	s1,4894f4 <pfkey_address_parse+0xd4>
  48976c:	00000000 	nop
  489770:	8f84804c 	lw	a0,-32692(gp)
  489774:	00000000 	nop
  489778:	2484a300 	addiu	a0,a0,-23808
  48977c:	8f998a08 	lw	t9,-30200(gp)
  489780:	00000000 	nop
  489784:	0320f809 	jalr	t9
  489788:	00000000 	nop
  48978c:	8fbc0028 	lw	gp,40(sp)
  489790:	1000ff59 	b	4894f8 <pfkey_address_parse+0xd8>
  489794:	02401021 	move	v0,s2
  489798:	2cc50003 	sltiu	a1,a2,3
  48979c:	14a0000a 	bnez	a1,4897c8 <pfkey_address_parse+0x3a8>
  4897a0:	24050002 	li	a1,2
  4897a4:	8f84804c 	lw	a0,-32692(gp)
  4897a8:	00000000 	nop
  4897ac:	2484a334 	addiu	a0,a0,-23756
  4897b0:	8f998be0 	lw	t9,-29728(gp)
  4897b4:	00000000 	nop
  4897b8:	0320f809 	jalr	t9
  4897bc:	00000000 	nop
  4897c0:	8fbc0028 	lw	gp,40(sp)
  4897c4:	00000000 	nop
  4897c8:	8e0f0004 	lw	t7,4(s0)
  4897cc:	8f85804c 	lw	a1,-32692(gp)
  4897d0:	00000000 	nop
  4897d4:	24a5a37c 	addiu	a1,a1,-23684
  4897d8:	000f3202 	srl	a2,t7,0x8
  4897dc:	000f1402 	srl	v0,t7,0x10
  4897e0:	30c700ff 	andi	a3,a2,0xff
  4897e4:	304e00ff 	andi	t6,v0,0xff
  4897e8:	31e600ff 	andi	a2,t7,0xff
  4897ec:	000f6e02 	srl	t5,t7,0x18
  4897f0:	27a40030 	addiu	a0,sp,48
  4897f4:	afae0010 	sw	t6,16(sp)
  4897f8:	afad0014 	sw	t5,20(sp)
  4897fc:	8f9983d0 	lw	t9,-31792(gp)
  489800:	00000000 	nop
  489804:	0320f809 	jalr	t9
  489808:	00000000 	nop
  48980c:	8fbc0028 	lw	gp,40(sp)
  489810:	00000000 	nop
  489814:	8f868598 	lw	a2,-31336(gp)
  489818:	00000000 	nop
  48981c:	8cc60000 	lw	a2,0(a2)
  489820:	00000000 	nop
  489824:	2ccc0003 	sltiu	t4,a2,3
  489828:	1580ffb1 	bnez	t4,4896f0 <pfkey_address_parse+0x2d0>
  48982c:	24100010 	li	s0,16
  489830:	1000ffa1 	b	4896b8 <pfkey_address_parse+0x298>
  489834:	00000000 	nop
  489838:	10c0ff2d 	beqz	a2,4894f0 <pfkey_address_parse+0xd0>
  48983c:	2412ffea 	li	s2,-22
  489840:	8f84804c 	lw	a0,-32692(gp)
  489844:	00000000 	nop
  489848:	2484a388 	addiu	a0,a0,-23672
  48984c:	8f998a08 	lw	t9,-30200(gp)
  489850:	00000000 	nop
  489854:	0320f809 	jalr	t9
  489858:	00000000 	nop
  48985c:	8fbc0028 	lw	gp,40(sp)
  489860:	00000000 	nop
  489864:	1000ff24 	b	4894f8 <pfkey_address_parse+0xd8>
  489868:	02401021 	move	v0,s2

0048986c <pfkey_key_parse>:
  48986c:	3c1c0fb8 	lui	gp,0xfb8
  489870:	279c3104 	addiu	gp,gp,12548
  489874:	0399e021 	addu	gp,gp,t9
  489878:	27bdffd0 	addiu	sp,sp,-48
  48987c:	afbc0018 	sw	gp,24(sp)
}

DEBUG_NO_STATIC int
pfkey_key_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	struct sadb_key *pfkey_key = (struct sadb_key *)pfkey_ext;

	DEBUGGING(PF_KEY_DEBUG_PARSE_FLOW,
  489880:	8f838598 	lw	v1,-31336(gp)
  489884:	00000000 	nop
  489888:	8c630000 	lw	v1,0(v1)
  48988c:	00000000 	nop
  489890:	afb00020 	sw	s0,32(sp)
  489894:	00808021 	move	s0,a0
  489898:	2c640004 	sltiu	a0,v1,4
  48989c:	afb10024 	sw	s1,36(sp)
  4898a0:	afbf002c 	sw	ra,44(sp)
  4898a4:	afbc0028 	sw	gp,40(sp)
  4898a8:	1480000e 	bnez	a0,4898e4 <pfkey_key_parse+0x78>
  4898ac:	00008821 	move	s1,zero
  4898b0:	8f84804c 	lw	a0,-32692(gp)
  4898b4:	00000000 	nop
  4898b8:	2484a430 	addiu	a0,a0,-23504
  4898bc:	8f998a08 	lw	t9,-30200(gp)
  4898c0:	00000000 	nop
  4898c4:	0320f809 	jalr	t9
  4898c8:	00000000 	nop
  4898cc:	8fbc0018 	lw	gp,24(sp)
  4898d0:	00000000 	nop
  4898d4:	8f838598 	lw	v1,-31336(gp)
  4898d8:	00000000 	nop
  4898dc:	8c630000 	lw	v1,0(v1)
  4898e0:	00000000 	nop
		"pfkey_key_parse:enter\n");
	/* sanity checks... */

	if(!pfkey_key) {
  4898e4:	1200006c 	beqz	s0,489a98 <pfkey_key_parse+0x22c>
  4898e8:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_key_parse: "
			"NULL pointer passed in.\n");
		SENDERR(EINVAL);
	}

	if(pfkey_key->sadb_key_len < sizeof(struct sadb_key) / IPSEC_PFKEYv2_ALIGN) {
  4898ec:	96020000 	lhu	v0,0(s0)
  4898f0:	00000000 	nop
  4898f4:	10400060 	beqz	v0,489a78 <pfkey_key_parse+0x20c>
  4898f8:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_key_parse: "
			"size wrong ext_len=%d, key_ext_len=%d.\n",
			pfkey_key->sadb_key_len,
			(int) sizeof(struct sadb_key));
		SENDERR(EINVAL);
	}

	if(!pfkey_key->sadb_key_bits) {
  4898fc:	96040004 	lhu	a0,4(s0)
  489900:	00000000 	nop
  489904:	1080004f 	beqz	a0,489a44 <pfkey_key_parse+0x1d8>
  489908:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_key_parse: "
			"key length set to zero, must be non-zero.\n");
		SENDERR(EINVAL);
	}

	if(pfkey_key->sadb_key_len !=
	   DIVUP(sizeof(struct sadb_key) * OCTETBITS + pfkey_key->sadb_key_bits,
		 PFKEYBITS)) {
  48990c:	96070004 	lhu	a3,4(s0)
  489910:	96080000 	lhu	t0,0(s0)
  489914:	24e6007f 	addiu	a2,a3,127
  489918:	00062982 	srl	a1,a2,0x6
  48991c:	11050014 	beq	t0,a1,489970 <pfkey_key_parse+0x104>
  489920:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  489924:	1060000b 	beqz	v1,489954 <pfkey_key_parse+0xe8>
  489928:	00e02821 	move	a1,a3
  48992c:	8f84804c 	lw	a0,-32692(gp)
  489930:	00000000 	nop
  489934:	2484a458 	addiu	a0,a0,-23464
  489938:	01003021 	move	a2,t0
  48993c:	8f998be0 	lw	t9,-29728(gp)
  489940:	00000000 	nop
  489944:	0320f809 	jalr	t9
  489948:	00000000 	nop
  48994c:	8fbc0018 	lw	gp,24(sp)
  489950:	00000000 	nop
			"pfkey_key_parse: "
			"key length=%d does not agree with extension length=%d.\n",
			pfkey_key->sadb_key_bits,
			pfkey_key->sadb_key_len);
		SENDERR(EINVAL);
  489954:	2411ffea 	li	s1,-22
	}
	
	if(pfkey_key->sadb_key_reserved) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_key_parse: "
			"res=%d, must be zero.\n",
			pfkey_key->sadb_key_reserved);
		SENDERR(EINVAL);
	}

	if(! ( (pfkey_key->sadb_key_exttype == SADB_EXT_KEY_AUTH) ||
	       (pfkey_key->sadb_key_exttype == SADB_EXT_KEY_ENCRYPT))) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_key_parse: "
			"expecting extension type AUTH or ENCRYPT, got %d.\n",
			pfkey_key->sadb_key_exttype);
		SENDERR(EINVAL);
	}

	DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
		"pfkey_key_parse: "
		"success, found len=%d exttype=%d bits=%d reserved=%d.\n",
		pfkey_key->sadb_key_len,
		pfkey_key->sadb_key_exttype,
		pfkey_key->sadb_key_bits,
		pfkey_key->sadb_key_reserved);

errlab:
	return error;
  489958:	02201021 	move	v0,s1
  48995c:	8fbf002c 	lw	ra,44(sp)
  489960:	8fb10024 	lw	s1,36(sp)
  489964:	8fb00020 	lw	s0,32(sp)
  489968:	03e00008 	jr	ra
  48996c:	27bd0030 	addiu	sp,sp,48
  489970:	96020006 	lhu	v0,6(s0)
  489974:	00000000 	nop
  489978:	1040000e 	beqz	v0,4899b4 <pfkey_key_parse+0x148>
  48997c:	00000000 	nop
  489980:	1060fff4 	beqz	v1,489954 <pfkey_key_parse+0xe8>
  489984:	00402821 	move	a1,v0
  489988:	8f84804c 	lw	a0,-32692(gp)
  48998c:	00000000 	nop
  489990:	2484a4b4 	addiu	a0,a0,-23372
  489994:	8f998be0 	lw	t9,-29728(gp)
  489998:	00000000 	nop
  48999c:	0320f809 	jalr	t9
  4899a0:	00000000 	nop
  4899a4:	8fbc0018 	lw	gp,24(sp)
  4899a8:	00000000 	nop
  4899ac:	1000ffea 	b	489958 <pfkey_key_parse+0xec>
  4899b0:	2411ffea 	li	s1,-22
  4899b4:	960c0002 	lhu	t4,2(s0)
  4899b8:	340bfff8 	li	t3,0xfff8
  4899bc:	016c5821 	addu	t3,t3,t4
  4899c0:	316affff 	andi	t2,t3,0xffff
  4899c4:	2d490002 	sltiu	t1,t2,2
  4899c8:	1520000f 	bnez	t1,489a08 <pfkey_key_parse+0x19c>
  4899cc:	2c6d0003 	sltiu	t5,v1,3
  4899d0:	1060ffe0 	beqz	v1,489954 <pfkey_key_parse+0xe8>
  4899d4:	2411ffea 	li	s1,-22
  4899d8:	96050002 	lhu	a1,2(s0)
  4899dc:	8f84804c 	lw	a0,-32692(gp)
  4899e0:	00000000 	nop
  4899e4:	2484a4ec 	addiu	a0,a0,-23316
  4899e8:	8f998be0 	lw	t9,-29728(gp)
  4899ec:	00000000 	nop
  4899f0:	0320f809 	jalr	t9
  4899f4:	00000000 	nop
  4899f8:	8fbc0018 	lw	gp,24(sp)
  4899fc:	00000000 	nop
  489a00:	1000ffd6 	b	48995c <pfkey_key_parse+0xf0>
  489a04:	02201021 	move	v0,s1
  489a08:	15a0ffd3 	bnez	t5,489958 <pfkey_key_parse+0xec>
  489a0c:	01002821 	move	a1,t0
  489a10:	96060002 	lhu	a2,2(s0)
  489a14:	96030006 	lhu	v1,6(s0)
  489a18:	8f84804c 	lw	a0,-32692(gp)
  489a1c:	00000000 	nop
  489a20:	2484a540 	addiu	a0,a0,-23232
  489a24:	afa30010 	sw	v1,16(sp)
  489a28:	8f998be0 	lw	t9,-29728(gp)
  489a2c:	00000000 	nop
  489a30:	0320f809 	jalr	t9
  489a34:	00000000 	nop
  489a38:	8fbc0018 	lw	gp,24(sp)
  489a3c:	1000ffc7 	b	48995c <pfkey_key_parse+0xf0>
  489a40:	02201021 	move	v0,s1
  489a44:	1060ffc3 	beqz	v1,489954 <pfkey_key_parse+0xe8>
  489a48:	2411ffea 	li	s1,-22
  489a4c:	8f84804c 	lw	a0,-32692(gp)
  489a50:	00000000 	nop
  489a54:	2484a598 	addiu	a0,a0,-23144
  489a58:	8f998a08 	lw	t9,-30200(gp)
  489a5c:	00000000 	nop
  489a60:	0320f809 	jalr	t9
  489a64:	00000000 	nop
  489a68:	8fbc0018 	lw	gp,24(sp)
  489a6c:	00000000 	nop
  489a70:	1000ffba 	b	48995c <pfkey_key_parse+0xf0>
  489a74:	02201021 	move	v0,s1
  489a78:	1060ffb6 	beqz	v1,489954 <pfkey_key_parse+0xe8>
  489a7c:	00402821 	move	a1,v0
  489a80:	8f84804c 	lw	a0,-32692(gp)
  489a84:	00000000 	nop
  489a88:	2484a5e4 	addiu	a0,a0,-23068
  489a8c:	00000000 	nop
  489a90:	1000ffaa 	b	48993c <pfkey_key_parse+0xd0>
  489a94:	24060008 	li	a2,8
  489a98:	1060ffae 	beqz	v1,489954 <pfkey_key_parse+0xe8>
  489a9c:	2411ffea 	li	s1,-22
  489aa0:	8f84804c 	lw	a0,-32692(gp)
  489aa4:	00000000 	nop
  489aa8:	2484a630 	addiu	a0,a0,-22992
  489aac:	8f998a08 	lw	t9,-30200(gp)
  489ab0:	00000000 	nop
  489ab4:	0320f809 	jalr	t9
  489ab8:	00000000 	nop
  489abc:	8fbc0018 	lw	gp,24(sp)
  489ac0:	00000000 	nop
  489ac4:	1000ffa5 	b	48995c <pfkey_key_parse+0xf0>
  489ac8:	02201021 	move	v0,s1

00489acc <pfkey_ident_parse>:
  489acc:	3c1c0fb8 	lui	gp,0xfb8
  489ad0:	279c2ea4 	addiu	gp,gp,11940
  489ad4:	0399e021 	addu	gp,gp,t9
  489ad8:	27bdffe0 	addiu	sp,sp,-32
  489adc:	afbc0010 	sw	gp,16(sp)
  489ae0:	afbf001c 	sw	ra,28(sp)
  489ae4:	afbc0018 	sw	gp,24(sp)
}

DEBUG_NO_STATIC int
pfkey_ident_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	struct sadb_ident *pfkey_ident = (struct sadb_ident *)pfkey_ext;

	/* sanity checks... */
	if(pfkey_ident->sadb_ident_len < sizeof(struct sadb_ident) / IPSEC_PFKEYv2_ALIGN) {
  489ae8:	94830000 	lhu	v1,0(a0)
  489aec:	00000000 	nop
  489af0:	2c650002 	sltiu	a1,v1,2
  489af4:	10a00016 	beqz	a1,489b50 <pfkey_ident_parse+0x84>
  489af8:	00003021 	move	a2,zero
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  489afc:	8f848598 	lw	a0,-31336(gp)
  489b00:	00000000 	nop
  489b04:	8c840000 	lw	a0,0(a0)
  489b08:	00000000 	nop
  489b0c:	1080000b 	beqz	a0,489b3c <pfkey_ident_parse+0x70>
  489b10:	00602821 	move	a1,v1
  489b14:	8f84804c 	lw	a0,-32692(gp)
  489b18:	00000000 	nop
  489b1c:	2484a66c 	addiu	a0,a0,-22932
  489b20:	24060010 	li	a2,16
  489b24:	8f998be0 	lw	t9,-29728(gp)
  489b28:	00000000 	nop
  489b2c:	0320f809 	jalr	t9
  489b30:	00000000 	nop
  489b34:	8fbc0010 	lw	gp,16(sp)
  489b38:	00000000 	nop
			"pfkey_ident_parse: "
			"size wrong ext_len=%d, key_ext_len=%d.\n",
			pfkey_ident->sadb_ident_len,
			(int) sizeof(struct sadb_ident));
		SENDERR(EINVAL);
  489b3c:	2406ffea 	li	a2,-22
	}

	if(pfkey_ident->sadb_ident_type > SADB_IDENTTYPE_MAX) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_ident_parse: "
			"ident_type=%d out of range, must be less than %d.\n",
			pfkey_ident->sadb_ident_type,
			SADB_IDENTTYPE_MAX);
		SENDERR(EINVAL);
	}

	if(pfkey_ident->sadb_ident_reserved) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_ident_parse: "
			"res=%d, must be zero.\n",
			pfkey_ident->sadb_ident_reserved);
		SENDERR(EINVAL);
	}

	/* string terminator/padding must be zero */
	if(pfkey_ident->sadb_ident_len > sizeof(struct sadb_ident) / IPSEC_PFKEYv2_ALIGN) {
		if(*((char*)pfkey_ident + pfkey_ident->sadb_ident_len * IPSEC_PFKEYv2_ALIGN - 1)) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_ident_parse: "
				"string padding must be zero, last is 0x%02x.\n",
				*((char*)pfkey_ident +
				  pfkey_ident->sadb_ident_len * IPSEC_PFKEYv2_ALIGN - 1));
			SENDERR(EINVAL);
		}
	}
	
	if( ! ((pfkey_ident->sadb_ident_exttype == SADB_EXT_IDENTITY_SRC) ||
	       (pfkey_ident->sadb_ident_exttype == SADB_EXT_IDENTITY_DST))) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_key_parse: "
			"expecting extension type IDENTITY_SRC or IDENTITY_DST, got %d.\n",
			pfkey_ident->sadb_ident_exttype);
		SENDERR(EINVAL);
	}

errlab:
	return error;
  489b40:	8fbf001c 	lw	ra,28(sp)
  489b44:	00c01021 	move	v0,a2
  489b48:	03e00008 	jr	ra
  489b4c:	27bd0020 	addiu	sp,sp,32
  489b50:	94870004 	lhu	a3,4(a0)
  489b54:	00000000 	nop
  489b58:	2ce50005 	sltiu	a1,a3,5
  489b5c:	14a0000e 	bnez	a1,489b98 <pfkey_ident_parse+0xcc>
  489b60:	00000000 	nop
  489b64:	8f838598 	lw	v1,-31336(gp)
  489b68:	00000000 	nop
  489b6c:	8c630000 	lw	v1,0(v1)
  489b70:	00000000 	nop
  489b74:	1060fff1 	beqz	v1,489b3c <pfkey_ident_parse+0x70>
  489b78:	24060004 	li	a2,4
  489b7c:	94850004 	lhu	a1,4(a0)
  489b80:	8f84804c 	lw	a0,-32692(gp)
  489b84:	00000000 	nop
  489b88:	2484a6b8 	addiu	a0,a0,-22856
  489b8c:	00000000 	nop
  489b90:	1000ffe4 	b	489b24 <pfkey_ident_parse+0x58>
  489b94:	00000000 	nop
  489b98:	94880006 	lhu	t0,6(a0)
  489b9c:	00000000 	nop
  489ba0:	11000013 	beqz	t0,489bf0 <pfkey_ident_parse+0x124>
  489ba4:	2c690003 	sltiu	t1,v1,3
  489ba8:	8f868598 	lw	a2,-31336(gp)
  489bac:	00000000 	nop
  489bb0:	8cc60000 	lw	a2,0(a2)
  489bb4:	00000000 	nop
  489bb8:	10c0ffe0 	beqz	a2,489b3c <pfkey_ident_parse+0x70>
  489bbc:	00000000 	nop
  489bc0:	94850006 	lhu	a1,6(a0)
  489bc4:	8f84804c 	lw	a0,-32692(gp)
  489bc8:	00000000 	nop
  489bcc:	2484a710 	addiu	a0,a0,-22768
  489bd0:	8f998be0 	lw	t9,-29728(gp)
  489bd4:	00000000 	nop
  489bd8:	0320f809 	jalr	t9
  489bdc:	00000000 	nop
  489be0:	8fbc0010 	lw	gp,16(sp)
  489be4:	00000000 	nop
  489be8:	1000ffd5 	b	489b40 <pfkey_ident_parse+0x74>
  489bec:	2406ffea 	li	a2,-22
  489bf0:	1520001a 	bnez	t1,489c5c <pfkey_ident_parse+0x190>
  489bf4:	00000000 	nop
  489bf8:	948c0000 	lhu	t4,0(a0)
  489bfc:	00000000 	nop
  489c00:	000c58c0 	sll	t3,t4,0x3
  489c04:	008b5021 	addu	t2,a0,t3
  489c08:	8145ffff 	lb	a1,-1(t2)
  489c0c:	00000000 	nop
  489c10:	10a00012 	beqz	a1,489c5c <pfkey_ident_parse+0x190>
  489c14:	00000000 	nop
  489c18:	8f8d8598 	lw	t5,-31336(gp)
  489c1c:	00000000 	nop
  489c20:	8dad0000 	lw	t5,0(t5)
  489c24:	00000000 	nop
  489c28:	11a0ffc4 	beqz	t5,489b3c <pfkey_ident_parse+0x70>
  489c2c:	00000000 	nop
  489c30:	8f84804c 	lw	a0,-32692(gp)
  489c34:	00000000 	nop
  489c38:	2484a74c 	addiu	a0,a0,-22708
  489c3c:	8f998be0 	lw	t9,-29728(gp)
  489c40:	00000000 	nop
  489c44:	0320f809 	jalr	t9
  489c48:	00000000 	nop
  489c4c:	8fbc0010 	lw	gp,16(sp)
  489c50:	00000000 	nop
  489c54:	1000ffba 	b	489b40 <pfkey_ident_parse+0x74>
  489c58:	2406ffea 	li	a2,-22
  489c5c:	94990002 	lhu	t9,2(a0)
  489c60:	3418fff6 	li	t8,0xfff6
  489c64:	0319c021 	addu	t8,t8,t9
  489c68:	330fffff 	andi	t7,t8,0xffff
  489c6c:	2dee0002 	sltiu	t6,t7,2
  489c70:	15c0ffb3 	bnez	t6,489b40 <pfkey_ident_parse+0x74>
  489c74:	00000000 	nop
  489c78:	8f858598 	lw	a1,-31336(gp)
  489c7c:	00000000 	nop
  489c80:	8ca50000 	lw	a1,0(a1)
  489c84:	00000000 	nop
  489c88:	10a0ffac 	beqz	a1,489b3c <pfkey_ident_parse+0x70>
  489c8c:	00000000 	nop
  489c90:	94850002 	lhu	a1,2(a0)
  489c94:	8f84804c 	lw	a0,-32692(gp)
  489c98:	00000000 	nop
  489c9c:	2484a7a0 	addiu	a0,a0,-22624
  489ca0:	8f998be0 	lw	t9,-29728(gp)
  489ca4:	00000000 	nop
  489ca8:	0320f809 	jalr	t9
  489cac:	00000000 	nop
  489cb0:	8fbc0010 	lw	gp,16(sp)
  489cb4:	00000000 	nop
  489cb8:	1000ffa1 	b	489b40 <pfkey_ident_parse+0x74>
  489cbc:	2406ffea 	li	a2,-22

00489cc0 <pfkey_prop_parse>:
  489cc0:	3c1c0fb8 	lui	gp,0xfb8
  489cc4:	279c2cb0 	addiu	gp,gp,11440
  489cc8:	0399e021 	addu	gp,gp,t9
  489ccc:	27bdffd8 	addiu	sp,sp,-40
  489cd0:	afbc0018 	sw	gp,24(sp)
  489cd4:	00803021 	move	a2,a0
  489cd8:	afbf0024 	sw	ra,36(sp)
  489cdc:	afbc0020 	sw	gp,32(sp)
}

DEBUG_NO_STATIC int
pfkey_sens_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	struct sadb_sens *pfkey_sens = (struct sadb_sens *)pfkey_ext;

	/* sanity checks... */
	if(pfkey_sens->sadb_sens_len < sizeof(struct sadb_sens) / IPSEC_PFKEYv2_ALIGN) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_sens_parse: "
			"size wrong ext_len=%d, key_ext_len=%d.\n",
			pfkey_sens->sadb_sens_len,
			(int) sizeof(struct sadb_sens));
		SENDERR(EINVAL);
	}

	DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
		"pfkey_sens_parse: "
		"Sorry, I can't parse exttype=%d yet.\n",
		pfkey_ext->sadb_ext_type);
#if 0
	SENDERR(EINVAL); /* don't process these yet */
#endif

errlab:
	return error;
}

DEBUG_NO_STATIC int
pfkey_prop_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	int i, num_comb;
	struct sadb_prop *pfkey_prop = (struct sadb_prop *)pfkey_ext;
	struct sadb_comb *pfkey_comb = (struct sadb_comb *)((char*)pfkey_ext + sizeof(struct sadb_prop));

	/* sanity checks... */
	if((pfkey_prop->sadb_prop_len < sizeof(struct sadb_prop) / IPSEC_PFKEYv2_ALIGN) || 
	   (((pfkey_prop->sadb_prop_len * IPSEC_PFKEYv2_ALIGN) - sizeof(struct sadb_prop)) % sizeof(struct sadb_comb))) {
  489ce0:	94c20000 	lhu	v0,0(a2)
  489ce4:	00000000 	nop
  489ce8:	00005021 	move	t2,zero
  489cec:	1040000e 	beqz	v0,489d28 <pfkey_prop_parse+0x68>
  489cf0:	24c80008 	addiu	t0,a2,8
  489cf4:	00403821 	move	a3,v0
  489cf8:	000710c0 	sll	v0,a3,0x3
  489cfc:	3c0ecccc 	lui	t6,0xcccc
  489d00:	2445fff8 	addiu	a1,v0,-8
  489d04:	35cdcccd 	ori	t5,t6,0xcccd
  489d08:	00ad0019 	multu	a1,t5
  489d0c:	00006010 	mfhi	t4
  489d10:	000c1982 	srl	v1,t4,0x6
  489d14:	00035880 	sll	t3,v1,0x2
  489d18:	01634821 	addu	t1,t3,v1
  489d1c:	00091100 	sll	v0,t1,0x4
  489d20:	10a20017 	beq	a1,v0,489d80 <pfkey_prop_parse+0xc0>
  489d24:	00002821 	move	a1,zero
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  489d28:	8f848598 	lw	a0,-31336(gp)
  489d2c:	00000000 	nop
  489d30:	8c840000 	lw	a0,0(a0)
  489d34:	00000000 	nop
  489d38:	1080000c 	beqz	a0,489d6c <pfkey_prop_parse+0xac>
  489d3c:	24070050 	li	a3,80
  489d40:	94c50000 	lhu	a1,0(a2)
  489d44:	8f84804c 	lw	a0,-32692(gp)
  489d48:	00000000 	nop
  489d4c:	2484a804 	addiu	a0,a0,-22524
  489d50:	24060008 	li	a2,8
  489d54:	8f998be0 	lw	t9,-29728(gp)
  489d58:	00000000 	nop
  489d5c:	0320f809 	jalr	t9
  489d60:	00000000 	nop
  489d64:	8fbc0018 	lw	gp,24(sp)
  489d68:	00000000 	nop
			"pfkey_prop_parse: "
			"size wrong ext_len=%d, prop_ext_len=%d comb_ext_len=%d.\n",
			pfkey_prop->sadb_prop_len,
			(int) sizeof(struct sadb_prop),
			(int) sizeof(struct sadb_comb));
		SENDERR(EINVAL);
  489d6c:	240affea 	li	t2,-22
	}

	if(pfkey_prop->sadb_prop_replay > 64) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_prop_parse: "
			"replay window size: %d -- must be 0 <= size <= 64\n",
			pfkey_prop->sadb_prop_replay);
		SENDERR(EINVAL);
	}
	
	for(i=0; i<3; i++) {
		if(pfkey_prop->sadb_prop_reserved[i]) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"res[%d]=%d, must be zero.\n",
				i, pfkey_prop->sadb_prop_reserved[i]);
			SENDERR(EINVAL);
		}
	}

	num_comb = ((pfkey_prop->sadb_prop_len * IPSEC_PFKEYv2_ALIGN) - sizeof(struct sadb_prop)) / sizeof(struct sadb_comb);

	for(i = 0; i < num_comb; i++) {
		if(pfkey_comb->sadb_comb_auth > SADB_AALG_MAX) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"pfkey_comb[%d]->sadb_comb_auth=%d > SADB_AALG_MAX=%d.\n",
				i,
				pfkey_comb->sadb_comb_auth,
				SADB_AALG_MAX);
			SENDERR(EINVAL);
		}

		if(pfkey_comb->sadb_comb_auth) {
			if(!pfkey_comb->sadb_comb_auth_minbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_auth_minbits=0, fatal.\n",
					i);
				SENDERR(EINVAL);
			}
			if(!pfkey_comb->sadb_comb_auth_maxbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_auth_maxbits=0, fatal.\n",
					i);
				SENDERR(EINVAL);
			}
			if(pfkey_comb->sadb_comb_auth_minbits > pfkey_comb->sadb_comb_auth_maxbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_auth_minbits=%d > maxbits=%d, fatal.\n",
					i,
					pfkey_comb->sadb_comb_auth_minbits,
					pfkey_comb->sadb_comb_auth_maxbits);
				SENDERR(EINVAL);
			}
		} else {
			if(pfkey_comb->sadb_comb_auth_minbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_auth_minbits=%d != 0, fatal.\n",
					i,
					pfkey_comb->sadb_comb_auth_minbits);
				SENDERR(EINVAL);
			}
			if(pfkey_comb->sadb_comb_auth_maxbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_auth_maxbits=%d != 0, fatal.\n",
					i,
					pfkey_comb->sadb_comb_auth_maxbits);
				SENDERR(EINVAL);
			}
		}

		if(pfkey_comb->sadb_comb_encrypt > SADB_EALG_MAX) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_comb_parse: "
				"pfkey_comb[%d]->sadb_comb_encrypt=%d > SADB_EALG_MAX=%d.\n",
				i,
				pfkey_comb->sadb_comb_encrypt,
				SADB_EALG_MAX);
			SENDERR(EINVAL);
		}

		if(pfkey_comb->sadb_comb_encrypt) {
			if(!pfkey_comb->sadb_comb_encrypt_minbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_encrypt_minbits=0, fatal.\n",
					i);
				SENDERR(EINVAL);
			}
			if(!pfkey_comb->sadb_comb_encrypt_maxbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_encrypt_maxbits=0, fatal.\n",
					i);
				SENDERR(EINVAL);
			}
			if(pfkey_comb->sadb_comb_encrypt_minbits > pfkey_comb->sadb_comb_encrypt_maxbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_encrypt_minbits=%d > maxbits=%d, fatal.\n",
					i,
					pfkey_comb->sadb_comb_encrypt_minbits,
					pfkey_comb->sadb_comb_encrypt_maxbits);
				SENDERR(EINVAL);
			}
		} else {
			if(pfkey_comb->sadb_comb_encrypt_minbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_encrypt_minbits=%d != 0, fatal.\n",
					i,
					pfkey_comb->sadb_comb_encrypt_minbits);
				SENDERR(EINVAL);
			}
			if(pfkey_comb->sadb_comb_encrypt_maxbits) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_prop_parse: "
					"pfkey_comb[%d]->sadb_comb_encrypt_maxbits=%d != 0, fatal.\n",
					i,
					pfkey_comb->sadb_comb_encrypt_maxbits);
				SENDERR(EINVAL);
			}
		}

		/* XXX do sanity check on flags */

		if(pfkey_comb->sadb_comb_hard_allocations && pfkey_comb->sadb_comb_soft_allocations > pfkey_comb->sadb_comb_hard_allocations) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"pfkey_comb[%d]->sadb_comb_soft_allocations=%d > hard_allocations=%d, fatal.\n",
				i,
				pfkey_comb->sadb_comb_soft_allocations,
				pfkey_comb->sadb_comb_hard_allocations);
			SENDERR(EINVAL);
		}

		if(pfkey_comb->sadb_comb_hard_bytes && pfkey_comb->sadb_comb_soft_bytes > pfkey_comb->sadb_comb_hard_bytes) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"pfkey_comb[%d]->sadb_comb_soft_bytes=%Ld > hard_bytes=%Ld, fatal.\n",
				i,
				(unsigned long long int) pfkey_comb->sadb_comb_soft_bytes,
				(unsigned long long int) pfkey_comb->sadb_comb_hard_bytes);
			SENDERR(EINVAL);
		}

		if(pfkey_comb->sadb_comb_hard_addtime && pfkey_comb->sadb_comb_soft_addtime > pfkey_comb->sadb_comb_hard_addtime) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"pfkey_comb[%d]->sadb_comb_soft_addtime=%Ld > hard_addtime=%Ld, fatal.\n",
				i,
				(unsigned long long int) pfkey_comb->sadb_comb_soft_addtime,
				(unsigned long long int) pfkey_comb->sadb_comb_hard_addtime);
			SENDERR(EINVAL);
		}

		if(pfkey_comb->sadb_comb_hard_usetime && pfkey_comb->sadb_comb_soft_usetime > pfkey_comb->sadb_comb_hard_usetime) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"pfkey_comb[%d]->sadb_comb_soft_usetime=%Ld > hard_usetime=%Ld, fatal.\n",
				i,
				(unsigned long long int) pfkey_comb->sadb_comb_soft_usetime,
				(unsigned long long int) pfkey_comb->sadb_comb_hard_usetime);
			SENDERR(EINVAL);
		}

		if(pfkey_comb->sadb_x_comb_hard_packets && pfkey_comb->sadb_x_comb_soft_packets > pfkey_comb->sadb_x_comb_hard_packets) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"pfkey_comb[%d]->sadb_x_comb_soft_packets=%d > hard_packets=%d, fatal.\n",
				i,
				pfkey_comb->sadb_x_comb_soft_packets,
				pfkey_comb->sadb_x_comb_hard_packets);
			SENDERR(EINVAL);
		}

		if(pfkey_comb->sadb_comb_reserved) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_prop_parse: "
				"comb[%d].res=%d, must be zero.\n",
				i,
				pfkey_comb->sadb_comb_reserved);
			SENDERR(EINVAL);
		}
		pfkey_comb++;
	}

errlab:
	return error;
  489d70:	8fbf0024 	lw	ra,36(sp)
  489d74:	01401021 	move	v0,t2
  489d78:	03e00008 	jr	ra
  489d7c:	27bd0028 	addiu	sp,sp,40
  489d80:	90d80004 	lbu	t8,4(a2)
  489d84:	00000000 	nop
  489d88:	2f0f0041 	sltiu	t7,t8,65
  489d8c:	15e00013 	bnez	t7,489ddc <pfkey_prop_parse+0x11c>
  489d90:	24c40005 	addiu	a0,a2,5
  489d94:	8f878598 	lw	a3,-31336(gp)
  489d98:	00000000 	nop
  489d9c:	8ce70000 	lw	a3,0(a3)
  489da0:	00000000 	nop
  489da4:	10e0fff1 	beqz	a3,489d6c <pfkey_prop_parse+0xac>
  489da8:	00000000 	nop
  489dac:	90c50004 	lbu	a1,4(a2)
  489db0:	8f84804c 	lw	a0,-32692(gp)
  489db4:	00000000 	nop
  489db8:	2484a860 	addiu	a0,a0,-22432
  489dbc:	8f998be0 	lw	t9,-29728(gp)
  489dc0:	00000000 	nop
  489dc4:	0320f809 	jalr	t9
  489dc8:	00000000 	nop
  489dcc:	8fbc0018 	lw	gp,24(sp)
  489dd0:	00000000 	nop
  489dd4:	1000ffe6 	b	489d70 <pfkey_prop_parse+0xb0>
  489dd8:	240affea 	li	t2,-22
  489ddc:	00851821 	addu	v1,a0,a1
  489de0:	90660000 	lbu	a2,0(v1)
  489de4:	00000000 	nop
  489de8:	14c001b8 	bnez	a2,48a4cc <pfkey_prop_parse+0x80c>
  489dec:	00000000 	nop
  489df0:	24a50001 	addiu	a1,a1,1
  489df4:	28b90003 	slti	t9,a1,3
  489df8:	1720fff9 	bnez	t9,489de0 <pfkey_prop_parse+0x120>
  489dfc:	00851821 	addu	v1,a0,a1
  489e00:	000768c0 	sll	t5,a3,0x3
  489e04:	3c0ccccc 	lui	t4,0xcccc
  489e08:	3585cccd 	ori	a1,t4,0xcccd
  489e0c:	25abfff8 	addiu	t3,t5,-8
  489e10:	01650019 	multu	t3,a1
  489e14:	00004810 	mfhi	t1
  489e18:	00091982 	srl	v1,t1,0x6
  489e1c:	00000000 	nop
  489e20:	1060ffd3 	beqz	v1,489d70 <pfkey_prop_parse+0xb0>
  489e24:	00002821 	move	a1,zero
  489e28:	91060000 	lbu	a2,0(t0)
  489e2c:	00000000 	nop
  489e30:	2cce0010 	sltiu	t6,a2,16
  489e34:	11c00199 	beqz	t6,48a49c <pfkey_prop_parse+0x7dc>
  489e38:	00000000 	nop
  489e3c:	10c0016b 	beqz	a2,48a3ec <pfkey_prop_parse+0x72c>
  489e40:	00000000 	nop
  489e44:	95060004 	lhu	a2,4(t0)
  489e48:	00000000 	nop
  489e4c:	10c00156 	beqz	a2,48a3a8 <pfkey_prop_parse+0x6e8>
  489e50:	00000000 	nop
  489e54:	95020006 	lhu	v0,6(t0)
  489e58:	00000000 	nop
  489e5c:	10400141 	beqz	v0,48a364 <pfkey_prop_parse+0x6a4>
  489e60:	0046782b 	sltu	t7,v0,a2
  489e64:	15e00131 	bnez	t7,48a32c <pfkey_prop_parse+0x66c>
  489e68:	00000000 	nop
  489e6c:	910b0001 	lbu	t3,1(t0)
  489e70:	00000000 	nop
  489e74:	11600101 	beqz	t3,48a27c <pfkey_prop_parse+0x5bc>
  489e78:	00000000 	nop
  489e7c:	95060008 	lhu	a2,8(t0)
  489e80:	00000000 	nop
  489e84:	10c000ec 	beqz	a2,48a238 <pfkey_prop_parse+0x578>
  489e88:	00000000 	nop
  489e8c:	9502000a 	lhu	v0,10(t0)
  489e90:	00000000 	nop
  489e94:	104000d7 	beqz	v0,48a1f4 <pfkey_prop_parse+0x534>
  489e98:	0046682b 	sltu	t5,v0,a2
  489e9c:	15a000c7 	bnez	t5,48a1bc <pfkey_prop_parse+0x4fc>
  489ea0:	00000000 	nop
  489ea4:	8d070014 	lw	a3,20(t0)
  489ea8:	00000000 	nop
  489eac:	10e00006 	beqz	a3,489ec8 <pfkey_prop_parse+0x208>
  489eb0:	00000000 	nop
  489eb4:	8d060010 	lw	a2,16(t0)
  489eb8:	00000000 	nop
  489ebc:	00e6c02b 	sltu	t8,a3,a2
  489ec0:	170000b2 	bnez	t8,48a18c <pfkey_prop_parse+0x4cc>
  489ec4:	00000000 	nop
  489ec8:	8d0b0020 	lw	t3,32(t0)
  489ecc:	8d090024 	lw	t1,36(t0)
  489ed0:	00000000 	nop
  489ed4:	01693025 	or	a2,t3,t1
  489ed8:	10c0001f 	beqz	a2,489f58 <pfkey_prop_parse+0x298>
  489edc:	01603821 	move	a3,t3
  489ee0:	8d060018 	lw	a2,24(t0)
  489ee4:	00000000 	nop
  489ee8:	00e6602b 	sltu	t4,a3,a2
  489eec:	11800018 	beqz	t4,489f50 <pfkey_prop_parse+0x290>
  489ef0:	00000000 	nop
  489ef4:	8f898598 	lw	t1,-31336(gp)
  489ef8:	00000000 	nop
  489efc:	8d290000 	lw	t1,0(t1)
  489f00:	00000000 	nop
  489f04:	1120ff99 	beqz	t1,489d6c <pfkey_prop_parse+0xac>
  489f08:	00000000 	nop
  489f0c:	8d060018 	lw	a2,24(t0)
  489f10:	8d07001c 	lw	a3,28(t0)
  489f14:	8d0e0020 	lw	t6,32(t0)
  489f18:	8d0f0024 	lw	t7,36(t0)
  489f1c:	8f84804c 	lw	a0,-32692(gp)
  489f20:	00000000 	nop
  489f24:	2484a8b8 	addiu	a0,a0,-22344
  489f28:	afae0010 	sw	t6,16(sp)
  489f2c:	afaf0014 	sw	t7,20(sp)
  489f30:	8f998be0 	lw	t9,-29728(gp)
  489f34:	00000000 	nop
  489f38:	0320f809 	jalr	t9
  489f3c:	00000000 	nop
  489f40:	8fbc0018 	lw	gp,24(sp)
  489f44:	00000000 	nop
  489f48:	1000ff89 	b	489d70 <pfkey_prop_parse+0xb0>
  489f4c:	240affea 	li	t2,-22
  489f50:	10c70087 	beq	a2,a3,48a170 <pfkey_prop_parse+0x4b0>
  489f54:	00000000 	nop
  489f58:	8d0f0030 	lw	t7,48(t0)
  489f5c:	8d090034 	lw	t1,52(t0)
  489f60:	00000000 	nop
  489f64:	01e92025 	or	a0,t7,t1
  489f68:	1080001f 	beqz	a0,489fe8 <pfkey_prop_parse+0x328>
  489f6c:	01e03821 	move	a3,t7
  489f70:	8d060028 	lw	a2,40(t0)
  489f74:	00000000 	nop
  489f78:	00e6c02b 	sltu	t8,a3,a2
  489f7c:	13000018 	beqz	t8,489fe0 <pfkey_prop_parse+0x320>
  489f80:	00000000 	nop
  489f84:	8f8a8598 	lw	t2,-31336(gp)
  489f88:	00000000 	nop
  489f8c:	8d4a0000 	lw	t2,0(t2)
  489f90:	00000000 	nop
  489f94:	1140ff75 	beqz	t2,489d6c <pfkey_prop_parse+0xac>
  489f98:	00000000 	nop
  489f9c:	8d060028 	lw	a2,40(t0)
  489fa0:	8d07002c 	lw	a3,44(t0)
  489fa4:	8d0c0030 	lw	t4,48(t0)
  489fa8:	8d0d0034 	lw	t5,52(t0)
  489fac:	8f84804c 	lw	a0,-32692(gp)
  489fb0:	00000000 	nop
  489fb4:	2484a920 	addiu	a0,a0,-22240
  489fb8:	afac0010 	sw	t4,16(sp)
  489fbc:	afad0014 	sw	t5,20(sp)
  489fc0:	8f998be0 	lw	t9,-29728(gp)
  489fc4:	00000000 	nop
  489fc8:	0320f809 	jalr	t9
  489fcc:	00000000 	nop
  489fd0:	8fbc0018 	lw	gp,24(sp)
  489fd4:	00000000 	nop
  489fd8:	1000ff65 	b	489d70 <pfkey_prop_parse+0xb0>
  489fdc:	240affea 	li	t2,-22
  489fe0:	10c7005c 	beq	a2,a3,48a154 <pfkey_prop_parse+0x494>
  489fe4:	00000000 	nop
  489fe8:	8d0d0040 	lw	t5,64(t0)
  489fec:	8d090044 	lw	t1,68(t0)
  489ff0:	00000000 	nop
  489ff4:	01a95825 	or	t3,t5,t1
  489ff8:	1160001f 	beqz	t3,48a078 <pfkey_prop_parse+0x3b8>
  489ffc:	01a03821 	move	a3,t5
  48a000:	8d060038 	lw	a2,56(t0)
  48a004:	00000000 	nop
  48a008:	00e6702b 	sltu	t6,a3,a2
  48a00c:	11c00018 	beqz	t6,48a070 <pfkey_prop_parse+0x3b0>
  48a010:	00000000 	nop
  48a014:	8f838598 	lw	v1,-31336(gp)
  48a018:	00000000 	nop
  48a01c:	8c630000 	lw	v1,0(v1)
  48a020:	00000000 	nop
  48a024:	1060ff51 	beqz	v1,489d6c <pfkey_prop_parse+0xac>
  48a028:	00000000 	nop
  48a02c:	8d060038 	lw	a2,56(t0)
  48a030:	8d07003c 	lw	a3,60(t0)
  48a034:	8d180040 	lw	t8,64(t0)
  48a038:	8d190044 	lw	t9,68(t0)
  48a03c:	8f84804c 	lw	a0,-32692(gp)
  48a040:	00000000 	nop
  48a044:	2484a98c 	addiu	a0,a0,-22132
  48a048:	afb80010 	sw	t8,16(sp)
  48a04c:	afb90014 	sw	t9,20(sp)
  48a050:	8f998be0 	lw	t9,-29728(gp)
  48a054:	00000000 	nop
  48a058:	0320f809 	jalr	t9
  48a05c:	00000000 	nop
  48a060:	8fbc0018 	lw	gp,24(sp)
  48a064:	00000000 	nop
  48a068:	1000ff41 	b	489d70 <pfkey_prop_parse+0xb0>
  48a06c:	240affea 	li	t2,-22
  48a070:	10c70031 	beq	a2,a3,48a138 <pfkey_prop_parse+0x478>
  48a074:	00000000 	nop
  48a078:	8d07004c 	lw	a3,76(t0)
  48a07c:	00000000 	nop
  48a080:	10e00006 	beqz	a3,48a09c <pfkey_prop_parse+0x3dc>
  48a084:	00000000 	nop
  48a088:	8d060048 	lw	a2,72(t0)
  48a08c:	00000000 	nop
  48a090:	00e6482b 	sltu	t1,a3,a2
  48a094:	1520001c 	bnez	t1,48a108 <pfkey_prop_parse+0x448>
  48a098:	00000000 	nop
  48a09c:	8d06000c 	lw	a2,12(t0)
  48a0a0:	00000000 	nop
  48a0a4:	14c00007 	bnez	a2,48a0c4 <pfkey_prop_parse+0x404>
  48a0a8:	00000000 	nop
  48a0ac:	24a50001 	addiu	a1,a1,1
  48a0b0:	00a3c82a 	slt	t9,a1,v1
  48a0b4:	1720ff5c 	bnez	t9,489e28 <pfkey_prop_parse+0x168>
  48a0b8:	25080050 	addiu	t0,t0,80
  48a0bc:	1000ff2c 	b	489d70 <pfkey_prop_parse+0xb0>
  48a0c0:	00000000 	nop
  48a0c4:	8f8f8598 	lw	t7,-31336(gp)
  48a0c8:	00000000 	nop
  48a0cc:	8def0000 	lw	t7,0(t7)
  48a0d0:	00000000 	nop
  48a0d4:	11e0ff25 	beqz	t7,489d6c <pfkey_prop_parse+0xac>
  48a0d8:	00000000 	nop
  48a0dc:	8f84804c 	lw	a0,-32692(gp)
  48a0e0:	00000000 	nop
  48a0e4:	2484a9f8 	addiu	a0,a0,-22024
  48a0e8:	8f998be0 	lw	t9,-29728(gp)
  48a0ec:	00000000 	nop
  48a0f0:	0320f809 	jalr	t9
  48a0f4:	00000000 	nop
  48a0f8:	8fbc0018 	lw	gp,24(sp)
  48a0fc:	00000000 	nop
  48a100:	1000ff1b 	b	489d70 <pfkey_prop_parse+0xb0>
  48a104:	240affea 	li	t2,-22
  48a108:	8f888598 	lw	t0,-31336(gp)
  48a10c:	00000000 	nop
  48a110:	8d080000 	lw	t0,0(t0)
  48a114:	00000000 	nop
  48a118:	1100ff15 	beqz	t0,489d70 <pfkey_prop_parse+0xb0>
  48a11c:	240affea 	li	t2,-22
  48a120:	8f84804c 	lw	a0,-32692(gp)
  48a124:	00000000 	nop
  48a128:	2484aa3c 	addiu	a0,a0,-21956
  48a12c:	00000000 	nop
  48a130:	1000ff08 	b	489d54 <pfkey_prop_parse+0x94>
  48a134:	00000000 	nop
  48a138:	8d04003c 	lw	a0,60(t0)
  48a13c:	00000000 	nop
  48a140:	0124382b 	sltu	a3,t1,a0
  48a144:	10e0ffcc 	beqz	a3,48a078 <pfkey_prop_parse+0x3b8>
  48a148:	00000000 	nop
  48a14c:	1000ffb1 	b	48a014 <pfkey_prop_parse+0x354>
  48a150:	00000000 	nop
  48a154:	8d06002c 	lw	a2,44(t0)
  48a158:	00000000 	nop
  48a15c:	0126c82b 	sltu	t9,t1,a2
  48a160:	1320ffa1 	beqz	t9,489fe8 <pfkey_prop_parse+0x328>
  48a164:	00000000 	nop
  48a168:	1000ff86 	b	489f84 <pfkey_prop_parse+0x2c4>
  48a16c:	00000000 	nop
  48a170:	8d0d001c 	lw	t5,28(t0)
  48a174:	00000000 	nop
  48a178:	012d382b 	sltu	a3,t1,t5
  48a17c:	10e0ff76 	beqz	a3,489f58 <pfkey_prop_parse+0x298>
  48a180:	00000000 	nop
  48a184:	1000ff5b 	b	489ef4 <pfkey_prop_parse+0x234>
  48a188:	00000000 	nop
  48a18c:	8f998598 	lw	t9,-31336(gp)
  48a190:	00000000 	nop
  48a194:	8f390000 	lw	t9,0(t9)
  48a198:	00000000 	nop
  48a19c:	1320fef4 	beqz	t9,489d70 <pfkey_prop_parse+0xb0>
  48a1a0:	240affea 	li	t2,-22
  48a1a4:	8f84804c 	lw	a0,-32692(gp)
  48a1a8:	00000000 	nop
  48a1ac:	2484aaa8 	addiu	a0,a0,-21848
  48a1b0:	00000000 	nop
  48a1b4:	1000fee7 	b	489d54 <pfkey_prop_parse+0x94>
  48a1b8:	00000000 	nop
  48a1bc:	8f8e8598 	lw	t6,-31336(gp)
  48a1c0:	00000000 	nop
  48a1c4:	8dce0000 	lw	t6,0(t6)
  48a1c8:	00000000 	nop
  48a1cc:	11c0fee8 	beqz	t6,489d70 <pfkey_prop_parse+0xb0>
  48a1d0:	240affea 	li	t2,-22
  48a1d4:	9507000a 	lhu	a3,10(t0)
  48a1d8:	95060008 	lhu	a2,8(t0)
  48a1dc:	8f84804c 	lw	a0,-32692(gp)
  48a1e0:	00000000 	nop
  48a1e4:	2484ab18 	addiu	a0,a0,-21736
  48a1e8:	00000000 	nop
  48a1ec:	1000fed9 	b	489d54 <pfkey_prop_parse+0x94>
  48a1f0:	00000000 	nop
  48a1f4:	8f8c8598 	lw	t4,-31336(gp)
  48a1f8:	00000000 	nop
  48a1fc:	8d8c0000 	lw	t4,0(t4)
  48a200:	00000000 	nop
  48a204:	1180fed9 	beqz	t4,489d6c <pfkey_prop_parse+0xac>
  48a208:	00000000 	nop
  48a20c:	8f84804c 	lw	a0,-32692(gp)
  48a210:	00000000 	nop
  48a214:	2484ab80 	addiu	a0,a0,-21632
  48a218:	8f998be0 	lw	t9,-29728(gp)
  48a21c:	00000000 	nop
  48a220:	0320f809 	jalr	t9
  48a224:	00000000 	nop
  48a228:	8fbc0018 	lw	gp,24(sp)
  48a22c:	00000000 	nop
  48a230:	1000fecf 	b	489d70 <pfkey_prop_parse+0xb0>
  48a234:	240affea 	li	t2,-22
  48a238:	8f888598 	lw	t0,-31336(gp)
  48a23c:	00000000 	nop
  48a240:	8d080000 	lw	t0,0(t0)
  48a244:	00000000 	nop
  48a248:	1100fec8 	beqz	t0,489d6c <pfkey_prop_parse+0xac>
  48a24c:	00000000 	nop
  48a250:	8f84804c 	lw	a0,-32692(gp)
  48a254:	00000000 	nop
  48a258:	2484abd8 	addiu	a0,a0,-21544
  48a25c:	8f998be0 	lw	t9,-29728(gp)
  48a260:	00000000 	nop
  48a264:	0320f809 	jalr	t9
  48a268:	00000000 	nop
  48a26c:	8fbc0018 	lw	gp,24(sp)
  48a270:	00000000 	nop
  48a274:	1000febe 	b	489d70 <pfkey_prop_parse+0xb0>
  48a278:	240affea 	li	t2,-22
  48a27c:	95040008 	lhu	a0,8(t0)
  48a280:	00000000 	nop
  48a284:	14800017 	bnez	a0,48a2e4 <pfkey_prop_parse+0x624>
  48a288:	00000000 	nop
  48a28c:	950f000a 	lhu	t7,10(t0)
  48a290:	00000000 	nop
  48a294:	11e0ff03 	beqz	t7,489ea4 <pfkey_prop_parse+0x1e4>
  48a298:	00000000 	nop
  48a29c:	8f838598 	lw	v1,-31336(gp)
  48a2a0:	00000000 	nop
  48a2a4:	8c630000 	lw	v1,0(v1)
  48a2a8:	00000000 	nop
  48a2ac:	1060feaf 	beqz	v1,489d6c <pfkey_prop_parse+0xac>
  48a2b0:	00000000 	nop
  48a2b4:	9506000a 	lhu	a2,10(t0)
  48a2b8:	8f84804c 	lw	a0,-32692(gp)
  48a2bc:	00000000 	nop
  48a2c0:	2484ac30 	addiu	a0,a0,-21456
  48a2c4:	8f998be0 	lw	t9,-29728(gp)
  48a2c8:	00000000 	nop
  48a2cc:	0320f809 	jalr	t9
  48a2d0:	00000000 	nop
  48a2d4:	8fbc0018 	lw	gp,24(sp)
  48a2d8:	00000000 	nop
  48a2dc:	1000fea4 	b	489d70 <pfkey_prop_parse+0xb0>
  48a2e0:	240affea 	li	t2,-22
  48a2e4:	8f8a8598 	lw	t2,-31336(gp)
  48a2e8:	00000000 	nop
  48a2ec:	8d4a0000 	lw	t2,0(t2)
  48a2f0:	00000000 	nop
  48a2f4:	1140fe9d 	beqz	t2,489d6c <pfkey_prop_parse+0xac>
  48a2f8:	00000000 	nop
  48a2fc:	95060008 	lhu	a2,8(t0)
  48a300:	8f84804c 	lw	a0,-32692(gp)
  48a304:	00000000 	nop
  48a308:	2484ac90 	addiu	a0,a0,-21360
  48a30c:	8f998be0 	lw	t9,-29728(gp)
  48a310:	00000000 	nop
  48a314:	0320f809 	jalr	t9
  48a318:	00000000 	nop
  48a31c:	8fbc0018 	lw	gp,24(sp)
  48a320:	00000000 	nop
  48a324:	1000fe92 	b	489d70 <pfkey_prop_parse+0xb0>
  48a328:	240affea 	li	t2,-22
  48a32c:	8f988598 	lw	t8,-31336(gp)
  48a330:	00000000 	nop
  48a334:	8f180000 	lw	t8,0(t8)
  48a338:	00000000 	nop
  48a33c:	1300fe8c 	beqz	t8,489d70 <pfkey_prop_parse+0xb0>
  48a340:	240affea 	li	t2,-22
  48a344:	95070006 	lhu	a3,6(t0)
  48a348:	95060004 	lhu	a2,4(t0)
  48a34c:	8f84804c 	lw	a0,-32692(gp)
  48a350:	00000000 	nop
  48a354:	2484acf0 	addiu	a0,a0,-21264
  48a358:	00000000 	nop
  48a35c:	1000fe7d 	b	489d54 <pfkey_prop_parse+0x94>
  48a360:	00000000 	nop
  48a364:	8f848598 	lw	a0,-31336(gp)
  48a368:	00000000 	nop
  48a36c:	8c840000 	lw	a0,0(a0)
  48a370:	00000000 	nop
  48a374:	1080fe7d 	beqz	a0,489d6c <pfkey_prop_parse+0xac>
  48a378:	00000000 	nop
  48a37c:	8f84804c 	lw	a0,-32692(gp)
  48a380:	00000000 	nop
  48a384:	2484ad54 	addiu	a0,a0,-21164
  48a388:	8f998be0 	lw	t9,-29728(gp)
  48a38c:	00000000 	nop
  48a390:	0320f809 	jalr	t9
  48a394:	00000000 	nop
  48a398:	8fbc0018 	lw	gp,24(sp)
  48a39c:	00000000 	nop
  48a3a0:	1000fe73 	b	489d70 <pfkey_prop_parse+0xb0>
  48a3a4:	240affea 	li	t2,-22
  48a3a8:	8f838598 	lw	v1,-31336(gp)
  48a3ac:	00000000 	nop
  48a3b0:	8c630000 	lw	v1,0(v1)
  48a3b4:	00000000 	nop
  48a3b8:	1060fe6c 	beqz	v1,489d6c <pfkey_prop_parse+0xac>
  48a3bc:	00000000 	nop
  48a3c0:	8f84804c 	lw	a0,-32692(gp)
  48a3c4:	00000000 	nop
  48a3c8:	2484ada8 	addiu	a0,a0,-21080
  48a3cc:	8f998be0 	lw	t9,-29728(gp)
  48a3d0:	00000000 	nop
  48a3d4:	0320f809 	jalr	t9
  48a3d8:	00000000 	nop
  48a3dc:	8fbc0018 	lw	gp,24(sp)
  48a3e0:	00000000 	nop
  48a3e4:	1000fe62 	b	489d70 <pfkey_prop_parse+0xb0>
  48a3e8:	240affea 	li	t2,-22
  48a3ec:	95070004 	lhu	a3,4(t0)
  48a3f0:	00000000 	nop
  48a3f4:	14e00017 	bnez	a3,48a454 <pfkey_prop_parse+0x794>
  48a3f8:	00000000 	nop
  48a3fc:	95190006 	lhu	t9,6(t0)
  48a400:	00000000 	nop
  48a404:	1320fe99 	beqz	t9,489e6c <pfkey_prop_parse+0x1ac>
  48a408:	00000000 	nop
  48a40c:	8f898598 	lw	t1,-31336(gp)
  48a410:	00000000 	nop
  48a414:	8d290000 	lw	t1,0(t1)
  48a418:	00000000 	nop
  48a41c:	1120fe53 	beqz	t1,489d6c <pfkey_prop_parse+0xac>
  48a420:	00000000 	nop
  48a424:	95060006 	lhu	a2,6(t0)
  48a428:	8f84804c 	lw	a0,-32692(gp)
  48a42c:	00000000 	nop
  48a430:	2484adfc 	addiu	a0,a0,-20996
  48a434:	8f998be0 	lw	t9,-29728(gp)
  48a438:	00000000 	nop
  48a43c:	0320f809 	jalr	t9
  48a440:	00000000 	nop
  48a444:	8fbc0018 	lw	gp,24(sp)
  48a448:	00000000 	nop
  48a44c:	1000fe48 	b	489d70 <pfkey_prop_parse+0xb0>
  48a450:	240affea 	li	t2,-22
  48a454:	8f868598 	lw	a2,-31336(gp)
  48a458:	00000000 	nop
  48a45c:	8cc60000 	lw	a2,0(a2)
  48a460:	00000000 	nop
  48a464:	10c0fe41 	beqz	a2,489d6c <pfkey_prop_parse+0xac>
  48a468:	00000000 	nop
  48a46c:	95060004 	lhu	a2,4(t0)
  48a470:	8f84804c 	lw	a0,-32692(gp)
  48a474:	00000000 	nop
  48a478:	2484ae58 	addiu	a0,a0,-20904
  48a47c:	8f998be0 	lw	t9,-29728(gp)
  48a480:	00000000 	nop
  48a484:	0320f809 	jalr	t9
  48a488:	00000000 	nop
  48a48c:	8fbc0018 	lw	gp,24(sp)
  48a490:	00000000 	nop
  48a494:	1000fe36 	b	489d70 <pfkey_prop_parse+0xb0>
  48a498:	240affea 	li	t2,-22
  48a49c:	8f8a8598 	lw	t2,-31336(gp)
  48a4a0:	00000000 	nop
  48a4a4:	8d4a0000 	lw	t2,0(t2)
  48a4a8:	00000000 	nop
  48a4ac:	1140fe2f 	beqz	t2,489d6c <pfkey_prop_parse+0xac>
  48a4b0:	2407000f 	li	a3,15
  48a4b4:	8f84804c 	lw	a0,-32692(gp)
  48a4b8:	00000000 	nop
  48a4bc:	2484aeb4 	addiu	a0,a0,-20812
  48a4c0:	00000000 	nop
  48a4c4:	1000fe23 	b	489d54 <pfkey_prop_parse+0x94>
  48a4c8:	00000000 	nop
  48a4cc:	8f888598 	lw	t0,-31336(gp)
  48a4d0:	00000000 	nop
  48a4d4:	8d080000 	lw	t0,0(t0)
  48a4d8:	00000000 	nop
  48a4dc:	1100fe23 	beqz	t0,489d6c <pfkey_prop_parse+0xac>
  48a4e0:	00000000 	nop
  48a4e4:	90660000 	lbu	a2,0(v1)
  48a4e8:	8f84804c 	lw	a0,-32692(gp)
  48a4ec:	00000000 	nop
  48a4f0:	2484af10 	addiu	a0,a0,-20720
  48a4f4:	8f998be0 	lw	t9,-29728(gp)
  48a4f8:	00000000 	nop
  48a4fc:	0320f809 	jalr	t9
  48a500:	00000000 	nop
  48a504:	8fbc0018 	lw	gp,24(sp)
  48a508:	00000000 	nop
  48a50c:	1000fe18 	b	489d70 <pfkey_prop_parse+0xb0>
  48a510:	240affea 	li	t2,-22

0048a514 <pfkey_supported_parse>:
  48a514:	3c1c0fb8 	lui	gp,0xfb8
  48a518:	279c245c 	addiu	gp,gp,9308
  48a51c:	0399e021 	addu	gp,gp,t9
  48a520:	27bdffd0 	addiu	sp,sp,-48
  48a524:	afbc0020 	sw	gp,32(sp)
  48a528:	afbf002c 	sw	ra,44(sp)
  48a52c:	afbc0028 	sw	gp,40(sp)
}

DEBUG_NO_STATIC int
pfkey_supported_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	unsigned int i, num_alg;
	struct sadb_supported *pfkey_supported = (struct sadb_supported *)pfkey_ext;
	struct sadb_alg *pfkey_alg = (struct sadb_alg*)((char*)pfkey_ext + sizeof(struct sadb_supported));

	/* sanity checks... */
	if((pfkey_supported->sadb_supported_len <
	   sizeof(struct sadb_supported) / IPSEC_PFKEYv2_ALIGN) ||
	   (((pfkey_supported->sadb_supported_len * IPSEC_PFKEYv2_ALIGN) -
	     sizeof(struct sadb_supported)) % sizeof(struct sadb_alg))) {
  48a530:	94850000 	lhu	a1,0(a0)
  48a534:	00000000 	nop
  48a538:	00004821 	move	t1,zero
  48a53c:	10a00073 	beqz	a1,48a70c <pfkey_supported_parse+0x1f8>
  48a540:	24830008 	addiu	v1,a0,8

		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_supported_parse: "
			"size wrong ext_len=%d, supported_ext_len=%d alg_ext_len=%d.\n",
			pfkey_supported->sadb_supported_len,
			(int) sizeof(struct sadb_supported),
			(int) sizeof(struct sadb_alg));
		SENDERR(EINVAL);
	}

	if(pfkey_supported->sadb_supported_reserved) {
  48a544:	8c850004 	lw	a1,4(a0)
  48a548:	00000000 	nop
  48a54c:	10a00015 	beqz	a1,48a5a4 <pfkey_supported_parse+0x90>
  48a550:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  48a554:	8f848598 	lw	a0,-31336(gp)
  48a558:	00000000 	nop
  48a55c:	8c840000 	lw	a0,0(a0)
  48a560:	00000000 	nop
  48a564:	1080000b 	beqz	a0,48a594 <pfkey_supported_parse+0x80>
  48a568:	2409ffea 	li	t1,-22
  48a56c:	8f84804c 	lw	a0,-32692(gp)
  48a570:	00000000 	nop
  48a574:	2484af50 	addiu	a0,a0,-20656
  48a578:	8f998be0 	lw	t9,-29728(gp)
  48a57c:	00000000 	nop
  48a580:	0320f809 	jalr	t9
  48a584:	00000000 	nop
  48a588:	8fbc0020 	lw	gp,32(sp)
  48a58c:	00000000 	nop
			"pfkey_supported_parse: "
			"res=%d, must be zero.\n",
			pfkey_supported->sadb_supported_reserved);
		SENDERR(EINVAL);
  48a590:	2409ffea 	li	t1,-22
	}

	num_alg = ((pfkey_supported->sadb_supported_len * IPSEC_PFKEYv2_ALIGN) - sizeof(struct sadb_supported)) / sizeof(struct sadb_alg);

	for(i = 0; i < num_alg; i++) {
		/* process algo description */
		if(pfkey_alg->sadb_alg_reserved) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_supported_parse: "
				"alg[%d], id=%d, ivlen=%d, minbits=%d, maxbits=%d, res=%d, must be zero.\n",
				i,
				pfkey_alg->sadb_alg_id,
				pfkey_alg->sadb_alg_ivlen,
				pfkey_alg->sadb_alg_minbits,
				pfkey_alg->sadb_alg_maxbits,
				pfkey_alg->sadb_alg_reserved);
			SENDERR(EINVAL);
		}

		/* XXX can alg_id auth/enc be determined from info given?
		   Yes, but OpenBSD's method does not iteroperate with rfc2367.
		   rgb, 2000-04-06 */

		switch(pfkey_supported->sadb_supported_exttype) {
		case SADB_EXT_SUPPORTED_AUTH:
			if(pfkey_alg->sadb_alg_id > SADB_AALG_MAX) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_supported_parse: "
					"alg[%d], alg_id=%d > SADB_AALG_MAX=%d, fatal.\n",
					i,
					pfkey_alg->sadb_alg_id,
					SADB_AALG_MAX);
				SENDERR(EINVAL);
			}
			break;
		case SADB_EXT_SUPPORTED_ENCRYPT:
			if(pfkey_alg->sadb_alg_id > SADB_EALG_MAX) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_supported_parse: "
					"alg[%d], alg_id=%d > SADB_EALG_MAX=%d, fatal.\n",
					i,
					pfkey_alg->sadb_alg_id,
					SADB_EALG_MAX);
				SENDERR(EINVAL);
			}
			break;
		default:
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_supported_parse: "
				"alg[%d], alg_id=%d > SADB_EALG_MAX=%d, fatal.\n",
				i,
				pfkey_alg->sadb_alg_id,
				SADB_EALG_MAX);
			SENDERR(EINVAL);
		}
		pfkey_alg++;
	}
	
 errlab:
	return error;
  48a594:	8fbf002c 	lw	ra,44(sp)
  48a598:	01201021 	move	v0,t1
  48a59c:	03e00008 	jr	ra
  48a5a0:	27bd0030 	addiu	sp,sp,48
  48a5a4:	94880000 	lhu	t0,0(a0)
  48a5a8:	00000000 	nop
  48a5ac:	000838c0 	sll	a3,t0,0x3
  48a5b0:	24e6fff8 	addiu	a2,a3,-8
  48a5b4:	000640c2 	srl	t0,a2,0x3
  48a5b8:	1100fff6 	beqz	t0,48a594 <pfkey_supported_parse+0x80>
  48a5bc:	00002821 	move	a1,zero
  48a5c0:	946a0006 	lhu	t2,6(v1)
  48a5c4:	2406000e 	li	a2,14
  48a5c8:	15400037 	bnez	t2,48a6a8 <pfkey_supported_parse+0x194>
  48a5cc:	2407000f 	li	a3,15
  48a5d0:	94820002 	lhu	v0,2(a0)
  48a5d4:	00000000 	nop
  48a5d8:	1046001b 	beq	v0,a2,48a648 <pfkey_supported_parse+0x134>
  48a5dc:	00000000 	nop
  48a5e0:	14470007 	bne	v0,a3,48a600 <pfkey_supported_parse+0xec>
  48a5e4:	00000000 	nop
  48a5e8:	24a50001 	addiu	a1,a1,1
  48a5ec:	00a8302b 	sltu	a2,a1,t0
  48a5f0:	14c0fff3 	bnez	a2,48a5c0 <pfkey_supported_parse+0xac>
  48a5f4:	24630008 	addiu	v1,v1,8
  48a5f8:	1000ffe6 	b	48a594 <pfkey_supported_parse+0x80>
  48a5fc:	00000000 	nop
  48a600:	8f998598 	lw	t9,-31336(gp)
  48a604:	00000000 	nop
  48a608:	8f390000 	lw	t9,0(t9)
  48a60c:	00000000 	nop
  48a610:	1320ffdf 	beqz	t9,48a590 <pfkey_supported_parse+0x7c>
  48a614:	240700ff 	li	a3,255
  48a618:	90660000 	lbu	a2,0(v1)
  48a61c:	8f84804c 	lw	a0,-32692(gp)
  48a620:	00000000 	nop
  48a624:	2484af90 	addiu	a0,a0,-20592
  48a628:	8f998be0 	lw	t9,-29728(gp)
  48a62c:	00000000 	nop
  48a630:	0320f809 	jalr	t9
  48a634:	00000000 	nop
  48a638:	8fbc0020 	lw	gp,32(sp)
  48a63c:	00000000 	nop
  48a640:	1000ffd4 	b	48a594 <pfkey_supported_parse+0x80>
  48a644:	2409ffea 	li	t1,-22
  48a648:	906f0000 	lbu	t7,0(v1)
  48a64c:	00000000 	nop
  48a650:	2dee0010 	sltiu	t6,t7,16
  48a654:	15c0ffe5 	bnez	t6,48a5ec <pfkey_supported_parse+0xd8>
  48a658:	24a50001 	addiu	a1,a1,1
  48a65c:	24a5ffff 	addiu	a1,a1,-1
  48a660:	8f988598 	lw	t8,-31336(gp)
  48a664:	00000000 	nop
  48a668:	8f180000 	lw	t8,0(t8)
  48a66c:	00000000 	nop
  48a670:	1300ffc7 	beqz	t8,48a590 <pfkey_supported_parse+0x7c>
  48a674:	2407000f 	li	a3,15
  48a678:	90660000 	lbu	a2,0(v1)
  48a67c:	8f84804c 	lw	a0,-32692(gp)
  48a680:	00000000 	nop
  48a684:	2484afe8 	addiu	a0,a0,-20504
  48a688:	8f998be0 	lw	t9,-29728(gp)
  48a68c:	00000000 	nop
  48a690:	0320f809 	jalr	t9
  48a694:	00000000 	nop
  48a698:	8fbc0020 	lw	gp,32(sp)
  48a69c:	00000000 	nop
  48a6a0:	1000ffbc 	b	48a594 <pfkey_supported_parse+0x80>
  48a6a4:	2409ffea 	li	t1,-22
  48a6a8:	8f898598 	lw	t1,-31336(gp)
  48a6ac:	00000000 	nop
  48a6b0:	8d290000 	lw	t1,0(t1)
  48a6b4:	00000000 	nop
  48a6b8:	1120ffb5 	beqz	t1,48a590 <pfkey_supported_parse+0x7c>
  48a6bc:	00000000 	nop
  48a6c0:	90660000 	lbu	a2,0(v1)
  48a6c4:	90670001 	lbu	a3,1(v1)
  48a6c8:	946b0006 	lhu	t3,6(v1)
  48a6cc:	946d0002 	lhu	t5,2(v1)
  48a6d0:	946c0004 	lhu	t4,4(v1)
  48a6d4:	8f84804c 	lw	a0,-32692(gp)
  48a6d8:	00000000 	nop
  48a6dc:	2484b040 	addiu	a0,a0,-20416
  48a6e0:	afad0010 	sw	t5,16(sp)
  48a6e4:	afac0014 	sw	t4,20(sp)
  48a6e8:	afab0018 	sw	t3,24(sp)
  48a6ec:	8f998be0 	lw	t9,-29728(gp)
  48a6f0:	00000000 	nop
  48a6f4:	0320f809 	jalr	t9
  48a6f8:	00000000 	nop
  48a6fc:	8fbc0020 	lw	gp,32(sp)
  48a700:	00000000 	nop
  48a704:	1000ffa3 	b	48a594 <pfkey_supported_parse+0x80>
  48a708:	2409ffea 	li	t1,-22
  48a70c:	8f838598 	lw	v1,-31336(gp)
  48a710:	00000000 	nop
  48a714:	8c630000 	lw	v1,0(v1)
  48a718:	00000000 	nop
  48a71c:	1060ff9c 	beqz	v1,48a590 <pfkey_supported_parse+0x7c>
  48a720:	24060008 	li	a2,8
  48a724:	94850000 	lhu	a1,0(a0)
  48a728:	8f84804c 	lw	a0,-32692(gp)
  48a72c:	00000000 	nop
  48a730:	2484b0b0 	addiu	a0,a0,-20304
  48a734:	24070008 	li	a3,8
  48a738:	8f998be0 	lw	t9,-29728(gp)
  48a73c:	00000000 	nop
  48a740:	0320f809 	jalr	t9
  48a744:	00000000 	nop
  48a748:	8fbc0020 	lw	gp,32(sp)
  48a74c:	00000000 	nop
  48a750:	1000ff90 	b	48a594 <pfkey_supported_parse+0x80>
  48a754:	2409ffea 	li	t1,-22

0048a758 <pfkey_x_satype_parse>:
  48a758:	3c1c0fb8 	lui	gp,0xfb8
  48a75c:	279c2218 	addiu	gp,gp,8728
  48a760:	0399e021 	addu	gp,gp,t9
  48a764:	27bdffd8 	addiu	sp,sp,-40
  48a768:	afbc0010 	sw	gp,16(sp)
  48a76c:	afb00018 	sw	s0,24(sp)
  48a770:	00808021 	move	s0,a0
}

DEBUG_NO_STATIC int
pfkey_spirange_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	struct sadb_spirange *pfkey_spirange = (struct sadb_spirange *)pfkey_ext;
	
	/* sanity checks... */
        if(pfkey_spirange->sadb_spirange_len !=
	   sizeof(struct sadb_spirange) / IPSEC_PFKEYv2_ALIGN) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_spirange_parse: "
			"size wrong ext_len=%d, key_ext_len=%d.\n",
			pfkey_spirange->sadb_spirange_len,
			(int) sizeof(struct sadb_spirange));
                SENDERR(EINVAL);
        }
	
        if(pfkey_spirange->sadb_spirange_reserved) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_spirange_parse: "
			"reserved=%d must be set to zero.\n",
			pfkey_spirange->sadb_spirange_reserved);
                SENDERR(EINVAL);
        }
	
        if(ntohl(pfkey_spirange->sadb_spirange_max) < ntohl(pfkey_spirange->sadb_spirange_min)) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_spirange_parse: "
			"minspi=%08x must be < maxspi=%08x.\n",
			ntohl(pfkey_spirange->sadb_spirange_min),
			ntohl(pfkey_spirange->sadb_spirange_max));
                SENDERR(EINVAL);
        }
	
	if(ntohl(pfkey_spirange->sadb_spirange_min) <= 255) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_spirange_parse: "
			"minspi=%08x must be > 255.\n",
			ntohl(pfkey_spirange->sadb_spirange_min));
		SENDERR(EEXIST);
	}
	
 errlab:
	return error;
}

DEBUG_NO_STATIC int
pfkey_x_kmprivate_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	struct sadb_x_kmprivate *pfkey_x_kmprivate = (struct sadb_x_kmprivate *)pfkey_ext;

	/* sanity checks... */
	if(pfkey_x_kmprivate->sadb_x_kmprivate_len <
	   sizeof(struct sadb_x_kmprivate) / IPSEC_PFKEYv2_ALIGN) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_x_kmprivate_parse: "
			"size wrong ext_len=%d, key_ext_len=%d.\n",
			pfkey_x_kmprivate->sadb_x_kmprivate_len,
			(int) sizeof(struct sadb_x_kmprivate));
		SENDERR(EINVAL);
	}

	if(pfkey_x_kmprivate->sadb_x_kmprivate_reserved) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_x_kmprivate_parse: "
			"reserved=%d must be set to zero.\n",
			pfkey_x_kmprivate->sadb_x_kmprivate_reserved);
		SENDERR(EINVAL);
	}

	DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
		"pfkey_x_kmprivate_parse: "
		"Sorry, I can't parse exttype=%d yet.\n",
		pfkey_ext->sadb_ext_type);
	SENDERR(EINVAL); /* don't process these yet */

errlab:
	return error;
}

DEBUG_NO_STATIC int
pfkey_x_satype_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	int i;
	struct sadb_x_satype *pfkey_x_satype = (struct sadb_x_satype *)pfkey_ext;

	DEBUGGING(PF_KEY_DEBUG_PARSE_FLOW,
  48a774:	8f848598 	lw	a0,-31336(gp)
  48a778:	00000000 	nop
  48a77c:	8c840000 	lw	a0,0(a0)
  48a780:	00000000 	nop
  48a784:	afb1001c 	sw	s1,28(sp)
  48a788:	2c830004 	sltiu	v1,a0,4
  48a78c:	afbf0024 	sw	ra,36(sp)
  48a790:	afbc0020 	sw	gp,32(sp)
  48a794:	1460000a 	bnez	v1,48a7c0 <pfkey_x_satype_parse+0x68>
  48a798:	00008821 	move	s1,zero
  48a79c:	8f84804c 	lw	a0,-32692(gp)
  48a7a0:	00000000 	nop
  48a7a4:	2484b114 	addiu	a0,a0,-20204
  48a7a8:	8f998a08 	lw	t9,-30200(gp)
  48a7ac:	00000000 	nop
  48a7b0:	0320f809 	jalr	t9
  48a7b4:	00000000 	nop
  48a7b8:	8fbc0010 	lw	gp,16(sp)
  48a7bc:	00000000 	nop
		"pfkey_x_satype_parse: enter\n");
	/* sanity checks... */
	if(pfkey_x_satype->sadb_x_satype_len !=
	   sizeof(struct sadb_x_satype) / IPSEC_PFKEYv2_ALIGN) {
  48a7c0:	96030000 	lhu	v1,0(s0)
  48a7c4:	24050001 	li	a1,1
  48a7c8:	10650018 	beq	v1,a1,48a82c <pfkey_x_satype_parse+0xd4>
  48a7cc:	00000000 	nop
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  48a7d0:	8f868598 	lw	a2,-31336(gp)
  48a7d4:	00000000 	nop
  48a7d8:	8cc60000 	lw	a2,0(a2)
  48a7dc:	00000000 	nop
  48a7e0:	10c0000b 	beqz	a2,48a810 <pfkey_x_satype_parse+0xb8>
  48a7e4:	00602821 	move	a1,v1
  48a7e8:	8f84804c 	lw	a0,-32692(gp)
  48a7ec:	00000000 	nop
  48a7f0:	2484b140 	addiu	a0,a0,-20160
  48a7f4:	24060008 	li	a2,8
  48a7f8:	8f998be0 	lw	t9,-29728(gp)
  48a7fc:	00000000 	nop
  48a800:	0320f809 	jalr	t9
  48a804:	00000000 	nop
  48a808:	8fbc0010 	lw	gp,16(sp)
  48a80c:	00000000 	nop
			"pfkey_x_satype_parse: "
			"size wrong ext_len=%d, key_ext_len=%d.\n",
			pfkey_x_satype->sadb_x_satype_len,
			(int) sizeof(struct sadb_x_satype));
		SENDERR(EINVAL);
  48a810:	2411ffea 	li	s1,-22
	}
	
	if(!pfkey_x_satype->sadb_x_satype_satype) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_x_satype_parse: "
			"satype is zero, must be non-zero.\n");
		SENDERR(EINVAL);
	}

	if(pfkey_x_satype->sadb_x_satype_satype > SADB_SATYPE_MAX) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_x_satype_parse: "
			"satype %d > max %d, invalid.\n", 
			pfkey_x_satype->sadb_x_satype_satype, SADB_SATYPE_MAX);
		SENDERR(EINVAL);
	}

	if(!(satype2proto(pfkey_x_satype->sadb_x_satype_satype))) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_x_satype_parse: "
			"proto lookup from satype=%d failed.\n",
			pfkey_x_satype->sadb_x_satype_satype);
		SENDERR(EINVAL);
	}

	for(i = 0; i < 3; i++) {
		if(pfkey_x_satype->sadb_x_satype_reserved[i]) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_x_satype_parse: "
				"reserved[%d]=%d must be set to zero.\n",
				i, pfkey_x_satype->sadb_x_satype_reserved[i]);
			SENDERR(EINVAL);
		}
	}
	
errlab:
	return error;
  48a814:	02201021 	move	v0,s1
  48a818:	8fbf0024 	lw	ra,36(sp)
  48a81c:	8fb1001c 	lw	s1,28(sp)
  48a820:	8fb00018 	lw	s0,24(sp)
  48a824:	03e00008 	jr	ra
  48a828:	27bd0028 	addiu	sp,sp,40
  48a82c:	92020004 	lbu	v0,4(s0)
  48a830:	00000000 	nop
  48a834:	1040005a 	beqz	v0,48a9a0 <pfkey_x_satype_parse+0x248>
  48a838:	2c47000c 	sltiu	a3,v0,12
  48a83c:	14e0000e 	bnez	a3,48a878 <pfkey_x_satype_parse+0x120>
  48a840:	00000000 	nop
  48a844:	8f888598 	lw	t0,-31336(gp)
  48a848:	00000000 	nop
  48a84c:	8d080000 	lw	t0,0(t0)
  48a850:	00000000 	nop
  48a854:	1100ffee 	beqz	t0,48a810 <pfkey_x_satype_parse+0xb8>
  48a858:	2406000b 	li	a2,11
  48a85c:	92050004 	lbu	a1,4(s0)
  48a860:	8f84804c 	lw	a0,-32692(gp)
  48a864:	00000000 	nop
  48a868:	2484b190 	addiu	a0,a0,-20080
  48a86c:	00000000 	nop
  48a870:	1000ffe1 	b	48a7f8 <pfkey_x_satype_parse+0xa0>
  48a874:	00000000 	nop
  48a878:	92060004 	lbu	a2,4(s0)
  48a87c:	00000000 	nop
  48a880:	8f828018 	lw	v0,-32744(gp)
  48a884:	00000000 	nop
  48a888:	244244cc 	addiu	v0,v0,17612
  48a88c:	90420001 	lbu	v0,1(v0)
  48a890:	00000000 	nop
  48a894:	10460010 	beq	v0,a2,48a8d8 <pfkey_x_satype_parse+0x180>
  48a898:	00002021 	move	a0,zero
  48a89c:	1040000e 	beqz	v0,48a8d8 <pfkey_x_satype_parse+0x180>
  48a8a0:	00000000 	nop
  48a8a4:	00001821 	move	v1,zero
  48a8a8:	24630008 	addiu	v1,v1,8
  48a8ac:	00602021 	move	a0,v1
  48a8b0:	8f828018 	lw	v0,-32744(gp)
  48a8b4:	00000000 	nop
  48a8b8:	244244cc 	addiu	v0,v0,17612
  48a8bc:	00441021 	addu	v0,v0,a0
  48a8c0:	90420001 	lbu	v0,1(v0)
  48a8c4:	00000000 	nop
  48a8c8:	10460003 	beq	v0,a2,48a8d8 <pfkey_x_satype_parse+0x180>
  48a8cc:	00000000 	nop
  48a8d0:	1440fff5 	bnez	v0,48a8a8 <pfkey_x_satype_parse+0x150>
  48a8d4:	00000000 	nop
  48a8d8:	8f898018 	lw	t1,-32744(gp)
  48a8dc:	00000000 	nop
  48a8e0:	252944cc 	addiu	t1,t1,17612
  48a8e4:	01244821 	addu	t1,t1,a0
  48a8e8:	91290000 	lbu	t1,0(t1)
  48a8ec:	00000000 	nop
  48a8f0:	00002821 	move	a1,zero
  48a8f4:	11200019 	beqz	t1,48a95c <pfkey_x_satype_parse+0x204>
  48a8f8:	26040005 	addiu	a0,s0,5
  48a8fc:	00851821 	addu	v1,a0,a1
  48a900:	906b0000 	lbu	t3,0(v1)
  48a904:	00000000 	nop
  48a908:	15600007 	bnez	t3,48a928 <pfkey_x_satype_parse+0x1d0>
  48a90c:	00000000 	nop
  48a910:	24a50001 	addiu	a1,a1,1
  48a914:	28ad0003 	slti	t5,a1,3
  48a918:	15a0fff8 	bnez	t5,48a8fc <pfkey_x_satype_parse+0x1a4>
  48a91c:	02201021 	move	v0,s1
  48a920:	1000ffbd 	b	48a818 <pfkey_x_satype_parse+0xc0>
  48a924:	00000000 	nop
  48a928:	8f8c8598 	lw	t4,-31336(gp)
  48a92c:	00000000 	nop
  48a930:	8d8c0000 	lw	t4,0(t4)
  48a934:	00000000 	nop
  48a938:	1180ffb6 	beqz	t4,48a814 <pfkey_x_satype_parse+0xbc>
  48a93c:	2411ffea 	li	s1,-22
  48a940:	90660000 	lbu	a2,0(v1)
  48a944:	8f84804c 	lw	a0,-32692(gp)
  48a948:	00000000 	nop
  48a94c:	2484b1d4 	addiu	a0,a0,-20012
  48a950:	00000000 	nop
  48a954:	1000ffa8 	b	48a7f8 <pfkey_x_satype_parse+0xa0>
  48a958:	00000000 	nop
  48a95c:	8f8a8598 	lw	t2,-31336(gp)
  48a960:	00000000 	nop
  48a964:	8d4a0000 	lw	t2,0(t2)
  48a968:	00000000 	nop
  48a96c:	1140ffa8 	beqz	t2,48a810 <pfkey_x_satype_parse+0xb8>
  48a970:	00c02821 	move	a1,a2
  48a974:	8f84804c 	lw	a0,-32692(gp)
  48a978:	00000000 	nop
  48a97c:	2484b220 	addiu	a0,a0,-19936
  48a980:	8f998be0 	lw	t9,-29728(gp)
  48a984:	00000000 	nop
  48a988:	0320f809 	jalr	t9
  48a98c:	00000000 	nop
  48a990:	8fbc0010 	lw	gp,16(sp)
  48a994:	00000000 	nop
  48a998:	1000ff9e 	b	48a814 <pfkey_x_satype_parse+0xbc>
  48a99c:	2411ffea 	li	s1,-22
  48a9a0:	8f838598 	lw	v1,-31336(gp)
  48a9a4:	00000000 	nop
  48a9a8:	8c630000 	lw	v1,0(v1)
  48a9ac:	00000000 	nop
  48a9b0:	1060ff97 	beqz	v1,48a810 <pfkey_x_satype_parse+0xb8>
  48a9b4:	2411ffea 	li	s1,-22
  48a9b8:	8f84804c 	lw	a0,-32692(gp)
  48a9bc:	00000000 	nop
  48a9c0:	2484b26c 	addiu	a0,a0,-19860
  48a9c4:	8f998a08 	lw	t9,-30200(gp)
  48a9c8:	00000000 	nop
  48a9cc:	0320f809 	jalr	t9
  48a9d0:	00000000 	nop
  48a9d4:	8fbc0010 	lw	gp,16(sp)
  48a9d8:	00000000 	nop
  48a9dc:	1000ff8e 	b	48a818 <pfkey_x_satype_parse+0xc0>
  48a9e0:	02201021 	move	v0,s1

0048a9e4 <pfkey_msg_parse>:
  48a9e4:	3c1c0fb8 	lui	gp,0xfb8
  48a9e8:	279c1f8c 	addiu	gp,gp,8076
  48a9ec:	0399e021 	addu	gp,gp,t9
  48a9f0:	27bdff98 	addiu	sp,sp,-104
  48a9f4:	afbc0030 	sw	gp,48(sp)
  48a9f8:	afb30044 	sw	s3,68(sp)
  48a9fc:	00809821 	move	s3,a0
}

DEBUG_NO_STATIC int
pfkey_x_ext_debug_parse(struct sadb_ext *pfkey_ext)
{
	int error = 0;
	int i;
	struct sadb_x_debug *pfkey_x_debug = (struct sadb_x_debug *)pfkey_ext;

	DEBUGGING(PF_KEY_DEBUG_PARSE_FLOW,
		"pfkey_x_debug_parse: enter\n");
	/* sanity checks... */
	if(pfkey_x_debug->sadb_x_debug_len !=
	   sizeof(struct sadb_x_debug) / IPSEC_PFKEYv2_ALIGN) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_x_debug_parse: "
			"size wrong ext_len=%d, key_ext_len=%d.\n",
			pfkey_x_debug->sadb_x_debug_len,
			(int) sizeof(struct sadb_x_debug));
		SENDERR(EINVAL);
	}
	
	for(i = 0; i < 4; i++) {
		if(pfkey_x_debug->sadb_x_debug_reserved[i]) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_x_debug_parse: "
				"reserved[%d]=%d must be set to zero.\n",
				i, pfkey_x_debug->sadb_x_debug_reserved[i]);
			SENDERR(EINVAL);
		}
	}
	
errlab:
	return error;
}

#ifdef NAT_TRAVERSAL
DEBUG_NO_STATIC int
pfkey_x_ext_nat_t_type_parse(struct sadb_ext *pfkey_ext)
{
	return 0;
}
DEBUG_NO_STATIC int
pfkey_x_ext_nat_t_port_parse(struct sadb_ext *pfkey_ext)
{
	return 0;
}
#endif

DEBUG_NO_STATIC int
pfkey_x_ext_protocol_parse(struct sadb_ext *pfkey_ext)
{
	return 0;
}

#define DEFINEPARSER(NAME) static struct pf_key_ext_parsers_def NAME##_def={NAME, #NAME};

DEFINEPARSER(pfkey_sa_parse);
DEFINEPARSER(pfkey_lifetime_parse);
DEFINEPARSER(pfkey_address_parse);
DEFINEPARSER(pfkey_key_parse);
DEFINEPARSER(pfkey_ident_parse);
DEFINEPARSER(pfkey_sens_parse);
DEFINEPARSER(pfkey_prop_parse);
DEFINEPARSER(pfkey_supported_parse);
DEFINEPARSER(pfkey_spirange_parse);
DEFINEPARSER(pfkey_x_kmprivate_parse);
DEFINEPARSER(pfkey_x_satype_parse);
DEFINEPARSER(pfkey_x_ext_debug_parse);
DEFINEPARSER(pfkey_x_ext_protocol_parse);
#ifdef NAT_TRAVERSAL
DEFINEPARSER(pfkey_x_ext_nat_t_type_parse);
DEFINEPARSER(pfkey_x_ext_nat_t_port_parse);
#endif

struct pf_key_ext_parsers_def *ext_default_parsers[]=
{
	NULL,                 /* pfkey_msg_parse, */
	&pfkey_sa_parse_def,
	&pfkey_lifetime_parse_def,
	&pfkey_lifetime_parse_def,
	&pfkey_lifetime_parse_def,
	&pfkey_address_parse_def,
	&pfkey_address_parse_def,
	&pfkey_address_parse_def,
	&pfkey_key_parse_def,
	&pfkey_key_parse_def,
	&pfkey_ident_parse_def,
	&pfkey_ident_parse_def,
	&pfkey_sens_parse_def,
	&pfkey_prop_parse_def,
	&pfkey_supported_parse_def,
	&pfkey_supported_parse_def,
	&pfkey_spirange_parse_def,
	&pfkey_x_kmprivate_parse_def,
	&pfkey_x_satype_parse_def,
	&pfkey_sa_parse_def,
	&pfkey_address_parse_def,
	&pfkey_address_parse_def,
	&pfkey_address_parse_def,
	&pfkey_address_parse_def,
	&pfkey_address_parse_def,
	&pfkey_x_ext_debug_parse_def,
	&pfkey_x_ext_protocol_parse_def
#ifdef NAT_TRAVERSAL
	,
	&pfkey_x_ext_nat_t_type_parse_def,
	&pfkey_x_ext_nat_t_port_parse_def,
	&pfkey_x_ext_nat_t_port_parse_def,
	&pfkey_address_parse_def
#endif
};

int
pfkey_msg_parse(struct sadb_msg *pfkey_msg,
		struct pf_key_ext_parsers_def *ext_parsers[],
		struct sadb_ext *extensions[],
		int dir)
{
	int error = 0;
	int remain;
	struct sadb_ext *pfkey_ext;
	int extensions_seen = 0;
	
	DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
  48aa00:	8f848598 	lw	a0,-31336(gp)
  48aa04:	00000000 	nop
  48aa08:	8c840000 	lw	a0,0(a0)
  48aa0c:	00000000 	nop
  48aa10:	afbe005c 	sw	s8,92(sp)
  48aa14:	2c830003 	sltiu	v1,a0,3
  48aa18:	afb70054 	sw	s7,84(sp)
  48aa1c:	afb60050 	sw	s6,80(sp)
  48aa20:	afb40048 	sw	s4,72(sp)
  48aa24:	afbf0060 	sw	ra,96(sp)
  48aa28:	afbc0058 	sw	gp,88(sp)
  48aa2c:	afb5004c 	sw	s5,76(sp)
  48aa30:	afb20040 	sw	s2,64(sp)
  48aa34:	afb1003c 	sw	s1,60(sp)
  48aa38:	afb00038 	sw	s0,56(sp)
  48aa3c:	00a0b821 	move	s7,a1
  48aa40:	00c0f021 	move	s8,a2
  48aa44:	00e0b021 	move	s6,a3
  48aa48:	1460003e 	bnez	v1,48ab44 <pfkey_msg_parse+0x160>
  48aa4c:	0000a021 	move	s4,zero
  48aa50:	92640001 	lbu	a0,1(s3)
  48aa54:	8f998940 	lw	t9,-30400(gp)
  48aa58:	00000000 	nop
  48aa5c:	0320f809 	jalr	t9
  48aa60:	00000000 	nop
  48aa64:	8fbc0030 	lw	gp,48(sp)
  48aa68:	00403821 	move	a3,v0
  48aa6c:	92640003 	lbu	a0,3(s3)
  48aa70:	00000000 	nop
  48aa74:	8f828018 	lw	v0,-32744(gp)
  48aa78:	00000000 	nop
  48aa7c:	244244cc 	addiu	v0,v0,17612
  48aa80:	90420001 	lbu	v0,1(v0)
  48aa84:	00000000 	nop
  48aa88:	1044000f 	beq	v0,a0,48aac8 <pfkey_msg_parse+0xe4>
  48aa8c:	00004021 	move	t0,zero
  48aa90:	1040000d 	beqz	v0,48aac8 <pfkey_msg_parse+0xe4>
  48aa94:	00001821 	move	v1,zero
  48aa98:	24630008 	addiu	v1,v1,8
  48aa9c:	00604021 	move	t0,v1
  48aaa0:	8f828018 	lw	v0,-32744(gp)
  48aaa4:	00000000 	nop
  48aaa8:	244244cc 	addiu	v0,v0,17612
  48aaac:	00481021 	addu	v0,v0,t0
  48aab0:	90420001 	lbu	v0,1(v0)
  48aab4:	00000000 	nop
  48aab8:	10440003 	beq	v0,a0,48aac8 <pfkey_msg_parse+0xe4>
  48aabc:	00000000 	nop
  48aac0:	1440fff6 	bnez	v0,48aa9c <pfkey_msg_parse+0xb8>
  48aac4:	24630008 	addiu	v1,v1,8
  48aac8:	92650000 	lbu	a1,0(s3)
  48aacc:	92660001 	lbu	a2,1(s3)
  48aad0:	92630002 	lbu	v1,2(s3)
  48aad4:	96690004 	lhu	t1,4(s3)
  48aad8:	966a0006 	lhu	t2,6(s3)
  48aadc:	8e6b0008 	lw	t3,8(s3)
  48aae0:	8e6d000c 	lw	t5,12(s3)
  48aae4:	00000000 	nop
  48aae8:	8f8e8018 	lw	t6,-32744(gp)
  48aaec:	00000000 	nop
  48aaf0:	25ce44cc 	addiu	t6,t6,17612
  48aaf4:	01c87021 	addu	t6,t6,t0
  48aaf8:	8dce0004 	lw	t6,4(t6)
  48aafc:	00000000 	nop
  48ab00:	92680003 	lbu	t0,3(s3)
  48ab04:	8f84804c 	lw	a0,-32692(gp)
  48ab08:	00000000 	nop
  48ab0c:	2484b410 	addiu	a0,a0,-19440
  48ab10:	afa30010 	sw	v1,16(sp)
  48ab14:	afa80014 	sw	t0,20(sp)
  48ab18:	afae0018 	sw	t6,24(sp)
  48ab1c:	afa9001c 	sw	t1,28(sp)
  48ab20:	afaa0020 	sw	t2,32(sp)
  48ab24:	afab0024 	sw	t3,36(sp)
  48ab28:	afad0028 	sw	t5,40(sp)
  48ab2c:	8f998be0 	lw	t9,-29728(gp)
  48ab30:	00000000 	nop
  48ab34:	0320f809 	jalr	t9
  48ab38:	00000000 	nop
  48ab3c:	8fbc0030 	lw	gp,48(sp)
  48ab40:	00000000 	nop
		  "pfkey_msg_parse: "
		  "parsing message ver=%d, type=%d(%s), errno=%d, satype=%d(%s), len=%d, res=%d, seq=%d, pid=%d.\n", 
		  pfkey_msg->sadb_msg_version,
		  pfkey_msg->sadb_msg_type,
		  pfkey_v2_sadb_type_string(pfkey_msg->sadb_msg_type),
		  pfkey_msg->sadb_msg_errno,
		  pfkey_msg->sadb_msg_satype,
		  satype2name(pfkey_msg->sadb_msg_satype),
		  pfkey_msg->sadb_msg_len,
		  pfkey_msg->sadb_msg_reserved,
		  pfkey_msg->sadb_msg_seq,
		  pfkey_msg->sadb_msg_pid);
	
	if(ext_parsers == NULL) ext_parsers = ext_default_parsers;
  48ab44:	12e0033d 	beqz	s7,48b83c <pfkey_msg_parse+0xe58>
  48ab48:	00000000 	nop
	
	pfkey_extensions_init(extensions);
  48ab4c:	03c02021 	move	a0,s8
  48ab50:	8f998878 	lw	t9,-30600(gp)
  48ab54:	00000000 	nop
  48ab58:	0320f809 	jalr	t9
  48ab5c:	00000000 	nop
  48ab60:	8fbc0030 	lw	gp,48(sp)
  48ab64:	00000000 	nop
	
	remain = pfkey_msg->sadb_msg_len;
	remain -= sizeof(struct sadb_msg) / IPSEC_PFKEYv2_ALIGN;
	
	pfkey_ext = (struct sadb_ext*)((char*)pfkey_msg +
				       sizeof(struct sadb_msg));
	
	extensions[0] = (struct sadb_ext *) pfkey_msg;
  48ab68:	afd30000 	sw	s3,0(s8)
  48ab6c:	96620004 	lhu	v0,4(s3)
  48ab70:	00000000 	nop
	
	
	if(pfkey_msg->sadb_msg_version != PF_KEY_V2) {
  48ab74:	92630000 	lbu	v1,0(s3)
  48ab78:	24050002 	li	a1,2
  48ab7c:	2452fffe 	addiu	s2,v0,-2
  48ab80:	1065001f 	beq	v1,a1,48ac00 <pfkey_msg_parse+0x21c>
  48ab84:	26710010 	addiu	s1,s3,16
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
  48ab88:	8f868598 	lw	a2,-31336(gp)
  48ab8c:	00000000 	nop
  48ab90:	8cc60000 	lw	a2,0(a2)
  48ab94:	00000000 	nop
  48ab98:	10c0000b 	beqz	a2,48abc8 <pfkey_msg_parse+0x1e4>
  48ab9c:	00602821 	move	a1,v1
  48aba0:	8f84804c 	lw	a0,-32692(gp)
  48aba4:	00000000 	nop
  48aba8:	2484b490 	addiu	a0,a0,-19312
  48abac:	24060002 	li	a2,2
  48abb0:	8f998be0 	lw	t9,-29728(gp)
  48abb4:	00000000 	nop
  48abb8:	0320f809 	jalr	t9
  48abbc:	00000000 	nop
  48abc0:	8fbc0030 	lw	gp,48(sp)
  48abc4:	00000000 	nop
			"pfkey_msg_parse: "
			"not PF_KEY_V2 msg, found %d, should be %d.\n",
			pfkey_msg->sadb_msg_version,
			PF_KEY_V2);
		SENDERR(EINVAL);
  48abc8:	2414ffea 	li	s4,-22
	}

	if(!pfkey_msg->sadb_msg_type) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_msg_parse: "
			"msg type not set, must be non-zero..\n");
		SENDERR(EINVAL);
	}

	if(pfkey_msg->sadb_msg_type > SADB_MAX) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_msg_parse: "
			"msg type=%d > max=%d.\n",
			pfkey_msg->sadb_msg_type,
			SADB_MAX);
		SENDERR(EINVAL);
	}

	switch(pfkey_msg->sadb_msg_type) {
	case SADB_GETSPI:
	case SADB_UPDATE:
	case SADB_ADD:
	case SADB_DELETE:
	case SADB_GET:
	case SADB_X_GRPSA:
	case SADB_X_ADDFLOW:
		if(!satype2proto(pfkey_msg->sadb_msg_satype)) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				  "pfkey_msg_parse: "
				  "satype %d conversion to proto failed for msg_type %d (%s).\n",
				  pfkey_msg->sadb_msg_satype,
				  pfkey_msg->sadb_msg_type,
				  pfkey_v2_sadb_type_string(pfkey_msg->sadb_msg_type));
			SENDERR(EINVAL);
		} else {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				  "pfkey_msg_parse: "
				  "satype %d(%s) conversion to proto gives %d for msg_type %d(%s).\n",
				  pfkey_msg->sadb_msg_satype,
				  satype2name(pfkey_msg->sadb_msg_satype),
				  satype2proto(pfkey_msg->sadb_msg_satype),
				  pfkey_msg->sadb_msg_type,
				  pfkey_v2_sadb_type_string(pfkey_msg->sadb_msg_type));
		}
	case SADB_ACQUIRE:
	case SADB_REGISTER:
	case SADB_EXPIRE:
		if(!pfkey_msg->sadb_msg_satype) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				  "pfkey_msg_parse: "
				  "satype is zero, must be non-zero for msg_type %d(%s).\n",
				  pfkey_msg->sadb_msg_type,
				  pfkey_v2_sadb_type_string(pfkey_msg->sadb_msg_type));
			SENDERR(EINVAL);
		}
	default:
		break;
	}
	
	/* errno must not be set in downward messages */
	/* this is not entirely true... a response to an ACQUIRE could return an error */
	if((dir == EXT_BITS_IN) && (pfkey_msg->sadb_msg_type != SADB_ACQUIRE) && pfkey_msg->sadb_msg_errno) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			    "pfkey_msg_parse: "
			    "errno set to %d.\n",
			    pfkey_msg->sadb_msg_errno);
		SENDERR(EINVAL);
	}

	DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
		  "pfkey_msg_parse: "
		  "remain=%d, ext_type=%d(%s), ext_len=%d.\n", 
		  remain,
		  pfkey_ext->sadb_ext_type,
		  pfkey_v2_sadb_ext_string(pfkey_ext->sadb_ext_type),
		  pfkey_ext->sadb_ext_len);
	
	DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
		"pfkey_msg_parse: "
		"extensions permitted=%08x, required=%08x.\n",
		extensions_bitmaps[dir][EXT_BITS_PERM][pfkey_msg->sadb_msg_type],
		extensions_bitmaps[dir][EXT_BITS_REQ][pfkey_msg->sadb_msg_type]);
	
	extensions_seen = 1;
	
	while( (remain * IPSEC_PFKEYv2_ALIGN) >= sizeof(struct sadb_ext) ) {
		/* Is there enough message left to support another extension header? */
		if(remain < pfkey_ext->sadb_ext_len) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"remain %d less than ext len %d.\n", 
				remain, pfkey_ext->sadb_ext_len);
			SENDERR(EINVAL);
		}
		
		DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
			"pfkey_msg_parse: "
			"parsing ext type=%d remain=%d.\n",
			pfkey_ext->sadb_ext_type,
			remain);
		
		/* Is the extension header type valid? */
		if((pfkey_ext->sadb_ext_type > SADB_EXT_MAX) || (!pfkey_ext->sadb_ext_type)) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"ext type %d invalid, SADB_EXT_MAX=%d.\n", 
				pfkey_ext->sadb_ext_type, SADB_EXT_MAX);
			SENDERR(EINVAL);
		}
		
		/* Have we already seen this type of extension? */
		if((extensions_seen & ( 1 << pfkey_ext->sadb_ext_type )) != 0)
		{
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"ext type %d already seen.\n", 
				pfkey_ext->sadb_ext_type);
			SENDERR(EINVAL);
		}

		/* Do I even know about this type of extension? */
		if(ext_parsers[pfkey_ext->sadb_ext_type]==NULL) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"ext type %d unknown, ignoring.\n", 
				pfkey_ext->sadb_ext_type);
			goto next_ext;
		}

		/* Is this type of extension permitted for this type of message? */
		if(!(extensions_bitmaps[dir][EXT_BITS_PERM][pfkey_msg->sadb_msg_type] &
		     1<<pfkey_ext->sadb_ext_type)) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"ext type %d not permitted, exts_perm_in=%08x, 1<<type=%08x\n", 
				pfkey_ext->sadb_ext_type, 
				extensions_bitmaps[dir][EXT_BITS_PERM][pfkey_msg->sadb_msg_type],
				1<<pfkey_ext->sadb_ext_type);
			SENDERR(EINVAL);
		}

		DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
			"pfkey_msg_parse: "
			"About to parse extension %d %p with parser %s.\n",
			pfkey_ext->sadb_ext_type,
			pfkey_ext,
			ext_parsers[pfkey_ext->sadb_ext_type]->parser_name);
		/* Parse the extension */
		if((error =
		    (*ext_parsers[pfkey_ext->sadb_ext_type]->parser)(pfkey_ext))) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"extension parsing for type %d failed with error %d.\n",
				pfkey_ext->sadb_ext_type, error); 
			SENDERR(-error);
		}
		DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
			"pfkey_msg_parse: "
			"Extension %d parsed.\n",
			pfkey_ext->sadb_ext_type);
		
		/* Mark that we have seen this extension and remember the header location */
		extensions_seen |= ( 1 << pfkey_ext->sadb_ext_type );
		extensions[pfkey_ext->sadb_ext_type] = pfkey_ext;

	next_ext:		
		/* Calculate how much message remains */
		remain -= pfkey_ext->sadb_ext_len;

		if(!remain) {
			break;
		}
		/* Find the next extension header */
		pfkey_ext = (struct sadb_ext*)((char*)pfkey_ext +
			pfkey_ext->sadb_ext_len * IPSEC_PFKEYv2_ALIGN);
	}

	if(remain) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_msg_parse: "
			"unexpected remainder of %d.\n", 
			remain);
		/* why is there still something remaining? */
		SENDERR(EINVAL);
	}

	/* check required extensions */
	DEBUGGING(PF_KEY_DEBUG_PARSE_STRUCT,
		"pfkey_msg_parse: "
		"extensions permitted=%08x, seen=%08x, required=%08x.\n",
		extensions_bitmaps[dir][EXT_BITS_PERM][pfkey_msg->sadb_msg_type],
		extensions_seen,
		extensions_bitmaps[dir][EXT_BITS_REQ][pfkey_msg->sadb_msg_type]);

	/* don't check further if it is an error return message since it
	   may not have a body */
	if(pfkey_msg->sadb_msg_errno) {
		SENDERR(-error);
	}

	if((extensions_seen &
	    extensions_bitmaps[dir][EXT_BITS_REQ][pfkey_msg->sadb_msg_type]) !=
	   extensions_bitmaps[dir][EXT_BITS_REQ][pfkey_msg->sadb_msg_type]) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_msg_parse: "
			"required extensions missing:%08x.\n",
			extensions_bitmaps[dir][EXT_BITS_REQ][pfkey_msg->sadb_msg_type] -
			(extensions_seen &
			 extensions_bitmaps[dir][EXT_BITS_REQ][pfkey_msg->sadb_msg_type]));
		SENDERR(EINVAL);
	}
	
	if((dir == EXT_BITS_IN) && (pfkey_msg->sadb_msg_type == SADB_X_DELFLOW)
	   && ((extensions_seen	& SADB_X_EXT_ADDRESS_DELFLOW)
	       != SADB_X_EXT_ADDRESS_DELFLOW)
	   && (((extensions_seen & (1<<SADB_EXT_SA)) != (1<<SADB_EXT_SA))
	   || ((((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_flags
		& SADB_X_SAFLAGS_CLEARFLOW)
	       != SADB_X_SAFLAGS_CLEARFLOW))) {
		DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
			"pfkey_msg_parse: "
			"required SADB_X_DELFLOW extensions missing: either %08x must be present or %08x must be present with SADB_X_SAFLAGS_CLEARFLOW set.\n",
			SADB_X_EXT_ADDRESS_DELFLOW
			- (extensions_seen & SADB_X_EXT_ADDRESS_DELFLOW),
			(1<<SADB_EXT_SA) - (extensions_seen & (1<<SADB_EXT_SA)));
		SENDERR(EINVAL);
	}
	
	switch(pfkey_msg->sadb_msg_type) {
	case SADB_ADD:
	case SADB_UPDATE:
		/* check maturity */
		if(((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_state !=
		   SADB_SASTATE_MATURE) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"state=%d for add or update should be MATURE=%d.\n",
				((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_state,
				SADB_SASTATE_MATURE);
			SENDERR(EINVAL);
		}
		
		/* check AH and ESP */
		switch(((struct sadb_msg*)extensions[SADB_EXT_RESERVED])->sadb_msg_satype) {
		case SADB_SATYPE_AH:
			if(!(((struct sadb_sa*)extensions[SADB_EXT_SA]) &&
			     ((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_auth !=
			     SADB_AALG_NONE)) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_msg_parse: "
					"auth alg is zero, must be non-zero for AH SAs.\n");
				SENDERR(EINVAL);
			}
			if(((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_encrypt !=
			   SADB_EALG_NONE) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_msg_parse: "
					"AH handed encalg=%d, must be zero.\n",
					((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_encrypt);
				SENDERR(EINVAL);
			}
			break;
		case SADB_SATYPE_ESP:
			if(!(((struct sadb_sa*)extensions[SADB_EXT_SA]) &&
			     ((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_encrypt !=
			     SADB_EALG_NONE)) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_msg_parse: "
					"encrypt alg=%d is zero, must be non-zero for ESP=%d SAs.\n",
					((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_encrypt,
					((struct sadb_msg*)extensions[SADB_EXT_RESERVED])->sadb_msg_satype);
				SENDERR(EINVAL);
			}
			if((((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_encrypt ==
			    SADB_EALG_NULL) &&
			   (((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_auth ==
			    SADB_AALG_NONE) ) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_msg_parse: "
					"ESP handed encNULL+authNONE, illegal combination.\n");
				SENDERR(EINVAL);
			}
			break;
		case SADB_X_SATYPE_COMP:
			if(!(((struct sadb_sa*)extensions[SADB_EXT_SA]) &&
			     ((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_encrypt !=
			     SADB_EALG_NONE)) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_msg_parse: "
					"encrypt alg=%d is zero, must be non-zero for COMP=%d SAs.\n",
					((struct sadb_sa*)extensions[SADB_EXT_SA])->sadb_sa_encrypt,
					((struct sadb_msg*)extensions[SADB_EXT_RESERVED])->sadb_msg_satype);
				SENDERR(EINVAL);
			}
			if(((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_auth !=
			   SADB_AALG_NONE) {
				DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
					"pfkey_msg_parse: "
					"COMP handed auth=%d, must be zero.\n",
					((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_auth);
				SENDERR(EINVAL);
			}
			break;
		default:
			break;
		}
		if(ntohl(((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_spi) <= 255) {
			DEBUGGING(PF_KEY_DEBUG_PARSE_PROBLEM,
				"pfkey_msg_parse: "
				"spi=%08x must be > 255.\n",
				ntohl(((struct sadb_sa*)(extensions[SADB_EXT_SA]))->sadb_sa_spi));
			SENDERR(EINVAL);
		}
	default:	
		break;
	}
errlab:

	return error;
  48abcc:	02801021 	move	v0,s4
  48abd0:	8fbf0060 	lw	ra,96(sp)
  48abd4:	8fbe005c 	lw	s8,92(sp)
  48abd8:	8fb70054 	lw	s7,84(sp)
  48abdc:	8fb60050 	lw	s6,80(sp)
  48abe0:	8fb5004c 	lw	s5,76(sp)
  48abe4:	8fb40048 	lw	s4,72(sp)
  48abe8:	8fb30044 	lw	s3,68(sp)
  48abec:	8fb20040 	lw	s2,64(sp)
  48abf0:	8fb1003c 	lw	s1,60(sp)
  48abf4:	8fb00038 	lw	s0,56(sp)
  48abf8:	03e00008 	jr	ra
  48abfc:	27bd0068 	addiu	sp,sp,104
  48ac00:	92620001 	lbu	v0,1(s3)
  48ac04:	00000000 	nop
  48ac08:	104002fb 	beqz	v0,48b7f8 <pfkey_msg_parse+0xe14>
  48ac0c:	2c4c0012 	sltiu	t4,v0,18
  48ac10:	1580000e 	bnez	t4,48ac4c <pfkey_msg_parse+0x268>
  48ac14:	00000000 	nop
  48ac18:	8f8f8598 	lw	t7,-31336(gp)
  48ac1c:	00000000 	nop
  48ac20:	8def0000 	lw	t7,0(t7)
  48ac24:	00000000 	nop
  48ac28:	11e0ffe7 	beqz	t7,48abc8 <pfkey_msg_parse+0x1e4>
  48ac2c:	24060011 	li	a2,17
  48ac30:	92650001 	lbu	a1,1(s3)
  48ac34:	8f84804c 	lw	a0,-32692(gp)
  48ac38:	00000000 	nop
  48ac3c:	2484b4e0 	addiu	a0,a0,-19232
  48ac40:	00000000 	nop
  48ac44:	1000ffda 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48ac48:	00000000 	nop
  48ac4c:	92640001 	lbu	a0,1(s3)
  48ac50:	00000000 	nop
  48ac54:	2483ffff 	addiu	v1,a0,-1
  48ac58:	2c70000e 	sltiu	s0,v1,14
  48ac5c:	120002e1 	beqz	s0,48b7e4 <pfkey_msg_parse+0xe00>
  48ac60:	0003c080 	sll	t8,v1,0x2
  48ac64:	8f95804c 	lw	s5,-32692(gp)
  48ac68:	00000000 	nop
  48ac6c:	26b5bde0 	addiu	s5,s5,-16928
  48ac70:	02b8a821 	addu	s5,s5,t8
  48ac74:	8eb50000 	lw	s5,0(s5)
  48ac78:	00000000 	nop
  48ac7c:	02bca821 	addu	s5,s5,gp
  48ac80:	02a00008 	jr	s5
  48ac84:	00000000 	nop
  48ac88:	92650003 	lbu	a1,3(s3)
  48ac8c:	00000000 	nop
  48ac90:	8f828018 	lw	v0,-32744(gp)
  48ac94:	00000000 	nop
  48ac98:	244244cc 	addiu	v0,v0,17612
  48ac9c:	90420001 	lbu	v0,1(v0)
  48aca0:	00000000 	nop
  48aca4:	10450010 	beq	v0,a1,48ace8 <pfkey_msg_parse+0x304>
  48aca8:	00003021 	move	a2,zero
  48acac:	1040000e 	beqz	v0,48ace8 <pfkey_msg_parse+0x304>
  48acb0:	00000000 	nop
  48acb4:	00001821 	move	v1,zero
  48acb8:	24630008 	addiu	v1,v1,8
  48acbc:	00603021 	move	a2,v1
  48acc0:	8f828018 	lw	v0,-32744(gp)
  48acc4:	00000000 	nop
  48acc8:	244244cc 	addiu	v0,v0,17612
  48accc:	00461021 	addu	v0,v0,a2
  48acd0:	90420001 	lbu	v0,1(v0)
  48acd4:	00000000 	nop
  48acd8:	10450003 	beq	v0,a1,48ace8 <pfkey_msg_parse+0x304>
  48acdc:	00000000 	nop
  48ace0:	1440fff5 	bnez	v0,48acb8 <pfkey_msg_parse+0x2d4>
  48ace4:	00000000 	nop
  48ace8:	8f998018 	lw	t9,-32744(gp)
  48acec:	00000000 	nop
  48acf0:	273944cc 	addiu	t9,t9,17612
  48acf4:	0326c821 	addu	t9,t9,a2
  48acf8:	93390000 	lbu	t9,0(t9)
  48acfc:	00000000 	nop
  48ad00:	1320029a 	beqz	t9,48b76c <pfkey_msg_parse+0xd88>
  48ad04:	00000000 	nop
  48ad08:	8f888598 	lw	t0,-31336(gp)
  48ad0c:	00000000 	nop
  48ad10:	8d080000 	lw	t0,0(t0)
  48ad14:	00000000 	nop
  48ad18:	1100004f 	beqz	t0,48ae58 <pfkey_msg_parse+0x474>
  48ad1c:	00000000 	nop
  48ad20:	8f828018 	lw	v0,-32744(gp)
  48ad24:	00000000 	nop
  48ad28:	244244cc 	addiu	v0,v0,17612
  48ad2c:	90420001 	lbu	v0,1(v0)
  48ad30:	00000000 	nop
  48ad34:	10450015 	beq	v0,a1,48ad8c <pfkey_msg_parse+0x3a8>
  48ad38:	00003021 	move	a2,zero
  48ad3c:	10400013 	beqz	v0,48ad8c <pfkey_msg_parse+0x3a8>
  48ad40:	00000000 	nop
  48ad44:	00001821 	move	v1,zero
  48ad48:	24630008 	addiu	v1,v1,8
  48ad4c:	00603021 	move	a2,v1
  48ad50:	8f828018 	lw	v0,-32744(gp)
  48ad54:	00000000 	nop
  48ad58:	244244cc 	addiu	v0,v0,17612
  48ad5c:	00461021 	addu	v0,v0,a2
  48ad60:	90420001 	lbu	v0,1(v0)
  48ad64:	00000000 	nop
  48ad68:	10450003 	beq	v0,a1,48ad78 <pfkey_msg_parse+0x394>
  48ad6c:	00000000 	nop
  48ad70:	1440fff5 	bnez	v0,48ad48 <pfkey_msg_parse+0x364>
  48ad74:	00000000 	nop
  48ad78:	8f828018 	lw	v0,-32744(gp)
  48ad7c:	00000000 	nop
  48ad80:	244244cc 	addiu	v0,v0,17612
  48ad84:	90420001 	lbu	v0,1(v0)
  48ad88:	00000000 	nop
  48ad8c:	8f958018 	lw	s5,-32744(gp)
  48ad90:	00000000 	nop
  48ad94:	26b544cc 	addiu	s5,s5,17612
  48ad98:	02a6a821 	addu	s5,s5,a2
  48ad9c:	8eb50004 	lw	s5,4(s5)
  48ada0:	00000000 	nop
  48ada4:	1045000f 	beq	v0,a1,48ade4 <pfkey_msg_parse+0x400>
  48ada8:	00003021 	move	a2,zero
  48adac:	1040000d 	beqz	v0,48ade4 <pfkey_msg_parse+0x400>
  48adb0:	00001821 	move	v1,zero
  48adb4:	24630008 	addiu	v1,v1,8
  48adb8:	00603021 	move	a2,v1
  48adbc:	8f828018 	lw	v0,-32744(gp)
  48adc0:	00000000 	nop
  48adc4:	244244cc 	addiu	v0,v0,17612
  48adc8:	00461021 	addu	v0,v0,a2
  48adcc:	90420001 	lbu	v0,1(v0)
  48add0:	00000000 	nop
  48add4:	10450003 	beq	v0,a1,48ade4 <pfkey_msg_parse+0x400>
  48add8:	00000000 	nop
  48addc:	1440fff6 	bnez	v0,48adb8 <pfkey_msg_parse+0x3d4>
  48ade0:	24630008 	addiu	v1,v1,8
  48ade4:	8f908018 	lw	s0,-32744(gp)
  48ade8:	00000000 	nop
  48adec:	261044cc 	addiu	s0,s0,17612
  48adf0:	02068021 	addu	s0,s0,a2
  48adf4:	92100000 	lbu	s0,0(s0)
  48adf8:	8f998940 	lw	t9,-30400(gp)
  48adfc:	00000000 	nop
  48ae00:	0320f809 	jalr	t9
  48ae04:	00000000 	nop
  48ae08:	8fbc0030 	lw	gp,48(sp)
  48ae0c:	92650003 	lbu	a1,3(s3)
  48ae10:	926d0001 	lbu	t5,1(s3)
  48ae14:	8f84804c 	lw	a0,-32692(gp)
  48ae18:	00000000 	nop
  48ae1c:	2484b518 	addiu	a0,a0,-19176
  48ae20:	02a03021 	move	a2,s5
  48ae24:	02003821 	move	a3,s0
  48ae28:	afad0010 	sw	t5,16(sp)
  48ae2c:	afa20014 	sw	v0,20(sp)
  48ae30:	8f998be0 	lw	t9,-29728(gp)
  48ae34:	00000000 	nop
  48ae38:	0320f809 	jalr	t9
  48ae3c:	00000000 	nop
  48ae40:	8fbc0030 	lw	gp,48(sp)
  48ae44:	00000000 	nop
  48ae48:	8f888598 	lw	t0,-31336(gp)
  48ae4c:	00000000 	nop
  48ae50:	8d080000 	lw	t0,0(t0)
  48ae54:	00000000 	nop
  48ae58:	92640003 	lbu	a0,3(s3)
  48ae5c:	00000000 	nop
  48ae60:	10800233 	beqz	a0,48b730 <pfkey_msg_parse+0xd4c>
  48ae64:	00000000 	nop
  48ae68:	12c0021c 	beqz	s6,48b6dc <pfkey_msg_parse+0xcf8>
  48ae6c:	240b0006 	li	t3,6
  48ae70:	2d090003 	sltiu	t1,t0,3
  48ae74:	15200036 	bnez	t1,48af50 <pfkey_msg_parse+0x56c>
  48ae78:	001268c0 	sll	t5,s2,0x3
  48ae7c:	96240002 	lhu	a0,2(s1)
  48ae80:	8f998680 	lw	t9,-31104(gp)
  48ae84:	00000000 	nop
  48ae88:	0320f809 	jalr	t9
  48ae8c:	00000000 	nop
  48ae90:	8fbc0030 	lw	gp,48(sp)
  48ae94:	96280000 	lhu	t0,0(s1)
  48ae98:	96260002 	lhu	a2,2(s1)
  48ae9c:	8f84804c 	lw	a0,-32692(gp)
  48aea0:	00000000 	nop
  48aea4:	2484b57c 	addiu	a0,a0,-19076
  48aea8:	00403821 	move	a3,v0
  48aeac:	02402821 	move	a1,s2
  48aeb0:	afa80010 	sw	t0,16(sp)
  48aeb4:	8f998be0 	lw	t9,-29728(gp)
  48aeb8:	00000000 	nop
  48aebc:	0320f809 	jalr	t9
  48aec0:	00000000 	nop
  48aec4:	8fbc0030 	lw	gp,48(sp)
  48aec8:	00000000 	nop
  48aecc:	8f888598 	lw	t0,-31336(gp)
  48aed0:	00000000 	nop
  48aed4:	8d080000 	lw	t0,0(t0)
  48aed8:	00000000 	nop
  48aedc:	2d0e0003 	sltiu	t6,t0,3
  48aee0:	15c0001b 	bnez	t6,48af50 <pfkey_msg_parse+0x56c>
  48aee4:	001268c0 	sll	t5,s2,0x3
  48aee8:	0016c0c0 	sll	t8,s6,0x3
  48aeec:	0316a821 	addu	s5,t8,s6
  48aef0:	92700001 	lbu	s0,1(s3)
  48aef4:	00157880 	sll	t7,s5,0x2
  48aef8:	01f06021 	addu	t4,t7,s0
  48aefc:	000c3080 	sll	a2,t4,0x2
  48af00:	8f858c34 	lw	a1,-29644(gp)
  48af04:	00000000 	nop
  48af08:	00c53821 	addu	a3,a2,a1
  48af0c:	00e01821 	move	v1,a3
  48af10:	8c650000 	lw	a1,0(v1)
  48af14:	8ce60048 	lw	a2,72(a3)
  48af18:	8f84804c 	lw	a0,-32692(gp)
  48af1c:	00000000 	nop
  48af20:	2484b5c8 	addiu	a0,a0,-19000
  48af24:	8f998be0 	lw	t9,-29728(gp)
  48af28:	00000000 	nop
  48af2c:	0320f809 	jalr	t9
  48af30:	00000000 	nop
  48af34:	8fbc0030 	lw	gp,48(sp)
  48af38:	00000000 	nop
  48af3c:	8f888598 	lw	t0,-31336(gp)
  48af40:	00000000 	nop
  48af44:	8d080000 	lw	t0,0(t0)
  48af48:	00000000 	nop
  48af4c:	001268c0 	sll	t5,s2,0x3
  48af50:	2db90004 	sltiu	t9,t5,4
  48af54:	17200074 	bnez	t9,48b128 <pfkey_msg_parse+0x744>
  48af58:	24150001 	li	s5,1
  48af5c:	96260000 	lhu	a2,0(s1)
  48af60:	00000000 	nop
  48af64:	0246202a 	slt	a0,s2,a2
  48af68:	148001d4 	bnez	a0,48b6bc <pfkey_msg_parse+0xcd8>
  48af6c:	2d0b0003 	sltiu	t3,t0,3
  48af70:	1560000f 	bnez	t3,48afb0 <pfkey_msg_parse+0x5cc>
  48af74:	02403021 	move	a2,s2
  48af78:	96250002 	lhu	a1,2(s1)
  48af7c:	8f84804c 	lw	a0,-32692(gp)
  48af80:	00000000 	nop
  48af84:	2484b614 	addiu	a0,a0,-18924
  48af88:	8f998be0 	lw	t9,-29728(gp)
  48af8c:	00000000 	nop
  48af90:	0320f809 	jalr	t9
  48af94:	00000000 	nop
  48af98:	8fbc0030 	lw	gp,48(sp)
  48af9c:	00000000 	nop
  48afa0:	8f888598 	lw	t0,-31336(gp)
  48afa4:	00000000 	nop
  48afa8:	8d080000 	lw	t0,0(t0)
  48afac:	00000000 	nop
  48afb0:	96270002 	lhu	a3,2(s1)
  48afb4:	340effff 	li	t6,0xffff
  48afb8:	01c77021 	addu	t6,t6,a3
  48afbc:	31c9ffff 	andi	t1,t6,0xffff
  48afc0:	2d2a001e 	sltiu	t2,t1,30
  48afc4:	114001b4 	beqz	t2,48b698 <pfkey_msg_parse+0xcb4>
  48afc8:	00000000 	nop
  48afcc:	96250002 	lhu	a1,2(s1)
  48afd0:	00000000 	nop
  48afd4:	00b53007 	srav	a2,s5,a1
  48afd8:	30c30001 	andi	v1,a2,0x1
  48afdc:	146001a1 	bnez	v1,48b664 <pfkey_msg_parse+0xc80>
  48afe0:	00057880 	sll	t7,a1,0x2
  48afe4:	01f76021 	addu	t4,t7,s7
  48afe8:	8d840000 	lw	a0,0(t4)
  48afec:	00000000 	nop
  48aff0:	1080018c 	beqz	a0,48b624 <pfkey_msg_parse+0xc40>
  48aff4:	001650c0 	sll	t2,s6,0x3
  48aff8:	01565821 	addu	t3,t2,s6
  48affc:	926d0001 	lbu	t5,1(s3)
  48b000:	000bc880 	sll	t9,t3,0x2
  48b004:	032dc021 	addu	t8,t9,t5
  48b008:	00188080 	sll	s0,t8,0x2
  48b00c:	8f868c34 	lw	a2,-29644(gp)
  48b010:	00000000 	nop
  48b014:	00d03021 	addu	a2,a2,s0
  48b018:	8cc60000 	lw	a2,0(a2)
  48b01c:	24100001 	li	s0,1
  48b020:	00b03804 	sllv	a3,s0,a1
  48b024:	00c7a024 	and	s4,a2,a3
  48b028:	12800171 	beqz	s4,48b5f0 <pfkey_msg_parse+0xc0c>
  48b02c:	2d090003 	sltiu	t1,t0,3
  48b030:	1520000c 	bnez	t1,48b064 <pfkey_msg_parse+0x680>
  48b034:	02203021 	move	a2,s1
  48b038:	8c870004 	lw	a3,4(a0)
  48b03c:	8f84804c 	lw	a0,-32692(gp)
  48b040:	00000000 	nop
  48b044:	2484b658 	addiu	a0,a0,-18856
  48b048:	8f998be0 	lw	t9,-29728(gp)
  48b04c:	00000000 	nop
  48b050:	0320f809 	jalr	t9
  48b054:	00000000 	nop
  48b058:	8fbc0030 	lw	gp,48(sp)
  48b05c:	96250002 	lhu	a1,2(s1)
  48b060:	00000000 	nop
  48b064:	00052080 	sll	a0,a1,0x2
  48b068:	00972821 	addu	a1,a0,s7
  48b06c:	8ca80000 	lw	t0,0(a1)
  48b070:	02202021 	move	a0,s1
  48b074:	8d140000 	lw	s4,0(t0)
  48b078:	00000000 	nop
  48b07c:	0280c821 	move	t9,s4
  48b080:	0320f809 	jalr	t9
  48b084:	00000000 	nop
  48b088:	8fbc0030 	lw	gp,48(sp)
  48b08c:	0040a021 	move	s4,v0
  48b090:	16800146 	bnez	s4,48b5ac <pfkey_msg_parse+0xbc8>
  48b094:	00000000 	nop
  48b098:	8f878598 	lw	a3,-31336(gp)
  48b09c:	00000000 	nop
  48b0a0:	8ce70000 	lw	a3,0(a3)
  48b0a4:	00000000 	nop
  48b0a8:	2cee0003 	sltiu	t6,a3,3
  48b0ac:	15c0000b 	bnez	t6,48b0dc <pfkey_msg_parse+0x6f8>
  48b0b0:	00000000 	nop
  48b0b4:	96250002 	lhu	a1,2(s1)
  48b0b8:	8f84804c 	lw	a0,-32692(gp)
  48b0bc:	00000000 	nop
  48b0c0:	2484b6ac 	addiu	a0,a0,-18772
  48b0c4:	8f998be0 	lw	t9,-29728(gp)
  48b0c8:	00000000 	nop
  48b0cc:	0320f809 	jalr	t9
  48b0d0:	00000000 	nop
  48b0d4:	8fbc0030 	lw	gp,48(sp)
  48b0d8:	00000000 	nop
  48b0dc:	96220002 	lhu	v0,2(s1)
  48b0e0:	00000000 	nop
  48b0e4:	8f888598 	lw	t0,-31336(gp)
  48b0e8:	00000000 	nop
  48b0ec:	8d080000 	lw	t0,0(t0)
  48b0f0:	00027880 	sll	t7,v0,0x2
  48b0f4:	00503004 	sllv	a2,s0,v0
  48b0f8:	01fe6021 	addu	t4,t7,s8
  48b0fc:	ad910000 	sw	s1,0(t4)
  48b100:	02a6a825 	or	s5,s5,a2
  48b104:	96230000 	lhu	v1,0(s1)
  48b108:	00000000 	nop
  48b10c:	02439023 	subu	s2,s2,v1
  48b110:	12400014 	beqz	s2,48b164 <pfkey_msg_parse+0x780>
  48b114:	0012c8c0 	sll	t9,s2,0x3
  48b118:	0003c0c0 	sll	t8,v1,0x3
  48b11c:	2f300004 	sltiu	s0,t9,4
  48b120:	1200ff8e 	beqz	s0,48af5c <pfkey_msg_parse+0x578>
  48b124:	02388821 	addu	s1,s1,t8
  48b128:	1240000f 	beqz	s2,48b168 <pfkey_msg_parse+0x784>
  48b12c:	2d170003 	sltiu	s7,t0,3
  48b130:	1100fea5 	beqz	t0,48abc8 <pfkey_msg_parse+0x1e4>
  48b134:	02402821 	move	a1,s2
  48b138:	8f84804c 	lw	a0,-32692(gp)
  48b13c:	00000000 	nop
  48b140:	2484b6e4 	addiu	a0,a0,-18716
  48b144:	8f998be0 	lw	t9,-29728(gp)
  48b148:	00000000 	nop
  48b14c:	0320f809 	jalr	t9
  48b150:	00000000 	nop
  48b154:	8fbc0030 	lw	gp,48(sp)
  48b158:	00000000 	nop
  48b15c:	1000fe9b 	b	48abcc <pfkey_msg_parse+0x1e8>
  48b160:	2414ffea 	li	s4,-22
  48b164:	2d170003 	sltiu	s7,t0,3
  48b168:	16e00016 	bnez	s7,48b1c4 <pfkey_msg_parse+0x7e0>
  48b16c:	001620c0 	sll	a0,s6,0x3
  48b170:	00962821 	addu	a1,a0,s6
  48b174:	92680001 	lbu	t0,1(s3)
  48b178:	00054880 	sll	t1,a1,0x2
  48b17c:	01285021 	addu	t2,t1,t0
  48b180:	000a5880 	sll	t3,t2,0x2
  48b184:	8f8d8c34 	lw	t5,-29644(gp)
  48b188:	00000000 	nop
  48b18c:	016d8821 	addu	s1,t3,t5
  48b190:	02201821 	move	v1,s1
  48b194:	8c650000 	lw	a1,0(v1)
  48b198:	8e270048 	lw	a3,72(s1)
  48b19c:	8f84804c 	lw	a0,-32692(gp)
  48b1a0:	00000000 	nop
  48b1a4:	2484b724 	addiu	a0,a0,-18652
  48b1a8:	02a03021 	move	a2,s5
  48b1ac:	8f998be0 	lw	t9,-29728(gp)
  48b1b0:	00000000 	nop
  48b1b4:	0320f809 	jalr	t9
  48b1b8:	00000000 	nop
  48b1bc:	8fbc0030 	lw	gp,48(sp)
  48b1c0:	00000000 	nop
  48b1c4:	92720002 	lbu	s2,2(s3)
  48b1c8:	00000000 	nop
  48b1cc:	1640fe80 	bnez	s2,48abd0 <pfkey_msg_parse+0x1ec>
  48b1d0:	02801021 	move	v0,s4
  48b1d4:	001660c0 	sll	t4,s6,0x3
  48b1d8:	92640001 	lbu	a0,1(s3)
  48b1dc:	01963021 	addu	a2,t4,s6
  48b1e0:	00063880 	sll	a3,a2,0x2
  48b1e4:	00e47021 	addu	t6,a3,a0
  48b1e8:	000e9880 	sll	s3,t6,0x2
  48b1ec:	8f858c34 	lw	a1,-29644(gp)
  48b1f0:	00000000 	nop
  48b1f4:	00b32821 	addu	a1,a1,s3
  48b1f8:	8ca50048 	lw	a1,72(a1)
  48b1fc:	00000000 	nop
  48b200:	02a51824 	and	v1,s5,a1
  48b204:	10650012 	beq	v1,a1,48b250 <pfkey_msg_parse+0x86c>
  48b208:	00000000 	nop
  48b20c:	8f968598 	lw	s6,-31336(gp)
  48b210:	00000000 	nop
  48b214:	8ed60000 	lw	s6,0(s6)
  48b218:	00000000 	nop
  48b21c:	12c0fe6a 	beqz	s6,48abc8 <pfkey_msg_parse+0x1e4>
  48b220:	00a32823 	subu	a1,a1,v1
  48b224:	8f84804c 	lw	a0,-32692(gp)
  48b228:	00000000 	nop
  48b22c:	2484b77c 	addiu	a0,a0,-18564
  48b230:	8f998be0 	lw	t9,-29728(gp)
  48b234:	00000000 	nop
  48b238:	0320f809 	jalr	t9
  48b23c:	00000000 	nop
  48b240:	8fbc0030 	lw	gp,48(sp)
  48b244:	00000000 	nop
  48b248:	1000fe60 	b	48abcc <pfkey_msg_parse+0x1e8>
  48b24c:	2414ffea 	li	s4,-22
  48b250:	12c000ba 	beqz	s6,48b53c <pfkey_msg_parse+0xb58>
  48b254:	240f000f 	li	t7,15
  48b258:	28980004 	slti	t8,a0,4
  48b25c:	1300fe5c 	beqz	t8,48abd0 <pfkey_msg_parse+0x1ec>
  48b260:	02801021 	move	v0,s4
  48b264:	28990002 	slti	t9,a0,2
  48b268:	1720fe59 	bnez	t9,48abd0 <pfkey_msg_parse+0x1ec>
  48b26c:	24170001 	li	s7,1
  48b270:	8fc50004 	lw	a1,4(s8)
  48b274:	00000000 	nop
  48b278:	90a30009 	lbu	v1,9(a1)
  48b27c:	00000000 	nop
  48b280:	1077000d 	beq	v1,s7,48b2b8 <pfkey_msg_parse+0x8d4>
  48b284:	240d0003 	li	t5,3
  48b288:	8f918598 	lw	s1,-31336(gp)
  48b28c:	00000000 	nop
  48b290:	8e310000 	lw	s1,0(s1)
  48b294:	00000000 	nop
  48b298:	1220fe4b 	beqz	s1,48abc8 <pfkey_msg_parse+0x1e4>
  48b29c:	00602821 	move	a1,v1
  48b2a0:	8f84804c 	lw	a0,-32692(gp)
  48b2a4:	00000000 	nop
  48b2a8:	2484b7c0 	addiu	a0,a0,-18496
  48b2ac:	00000000 	nop
  48b2b0:	1000fe3f 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48b2b4:	24060001 	li	a2,1
  48b2b8:	8fc30000 	lw	v1,0(s8)
  48b2bc:	00000000 	nop
  48b2c0:	90640003 	lbu	a0,3(v1)
  48b2c4:	00000000 	nop
  48b2c8:	108d0074 	beq	a0,t5,48b49c <pfkey_msg_parse+0xab8>
  48b2cc:	288b0004 	slti	t3,a0,4
  48b2d0:	11600047 	beqz	t3,48b3f0 <pfkey_msg_parse+0xa0c>
  48b2d4:	2409000a 	li	t1,10
  48b2d8:	240a0002 	li	t2,2
  48b2dc:	108a0017 	beq	a0,t2,48b33c <pfkey_msg_parse+0x958>
  48b2e0:	00000000 	nop
  48b2e4:	8ca50004 	lw	a1,4(a1)
  48b2e8:	00000000 	nop
  48b2ec:	2cbe0100 	sltiu	s8,a1,256
  48b2f0:	13c0fe37 	beqz	s8,48abd0 <pfkey_msg_parse+0x1ec>
  48b2f4:	02801021 	move	v0,s4
  48b2f8:	8f948598 	lw	s4,-31336(gp)
  48b2fc:	00000000 	nop
  48b300:	8e940000 	lw	s4,0(s4)
  48b304:	00000000 	nop
  48b308:	1280fe2f 	beqz	s4,48abc8 <pfkey_msg_parse+0x1e4>
  48b30c:	2414ffea 	li	s4,-22
  48b310:	8f84804c 	lw	a0,-32692(gp)
  48b314:	00000000 	nop
  48b318:	2484b814 	addiu	a0,a0,-18412
  48b31c:	8f998be0 	lw	t9,-29728(gp)
  48b320:	00000000 	nop
  48b324:	0320f809 	jalr	t9
  48b328:	00000000 	nop
  48b32c:	8fbc0030 	lw	gp,48(sp)
  48b330:	00000000 	nop
  48b334:	1000fe26 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b338:	02801021 	move	v0,s4
  48b33c:	10a0001b 	beqz	a1,48b3ac <pfkey_msg_parse+0x9c8>
  48b340:	00000000 	nop
  48b344:	90a8000a 	lbu	t0,10(a1)
  48b348:	00000000 	nop
  48b34c:	11000017 	beqz	t0,48b3ac <pfkey_msg_parse+0x9c8>
  48b350:	00000000 	nop
  48b354:	90a4000b 	lbu	a0,11(a1)
  48b358:	00000000 	nop
  48b35c:	1080ffe1 	beqz	a0,48b2e4 <pfkey_msg_parse+0x900>
  48b360:	00000000 	nop
  48b364:	8f928598 	lw	s2,-31336(gp)
  48b368:	00000000 	nop
  48b36c:	8e520000 	lw	s2,0(s2)
  48b370:	00000000 	nop
  48b374:	1240fe14 	beqz	s2,48abc8 <pfkey_msg_parse+0x1e4>
  48b378:	2414ffea 	li	s4,-22
  48b37c:	90a5000b 	lbu	a1,11(a1)
  48b380:	8f84804c 	lw	a0,-32692(gp)
  48b384:	00000000 	nop
  48b388:	2484b850 	addiu	a0,a0,-18352
  48b38c:	8f998be0 	lw	t9,-29728(gp)
  48b390:	00000000 	nop
  48b394:	0320f809 	jalr	t9
  48b398:	00000000 	nop
  48b39c:	8fbc0030 	lw	gp,48(sp)
  48b3a0:	00000000 	nop
  48b3a4:	1000fe0a 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b3a8:	02801021 	move	v0,s4
  48b3ac:	8f858598 	lw	a1,-31336(gp)
  48b3b0:	00000000 	nop
  48b3b4:	8ca50000 	lw	a1,0(a1)
  48b3b8:	00000000 	nop
  48b3bc:	10a0fe02 	beqz	a1,48abc8 <pfkey_msg_parse+0x1e4>
  48b3c0:	2414ffea 	li	s4,-22
  48b3c4:	8f84804c 	lw	a0,-32692(gp)
  48b3c8:	00000000 	nop
  48b3cc:	2484b898 	addiu	a0,a0,-18280
  48b3d0:	8f998a08 	lw	t9,-30200(gp)
  48b3d4:	00000000 	nop
  48b3d8:	0320f809 	jalr	t9
  48b3dc:	00000000 	nop
  48b3e0:	8fbc0030 	lw	gp,48(sp)
  48b3e4:	00000000 	nop
  48b3e8:	1000fdf9 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b3ec:	02801021 	move	v0,s4
  48b3f0:	1489ffbc 	bne	a0,t1,48b2e4 <pfkey_msg_parse+0x900>
  48b3f4:	00000000 	nop
  48b3f8:	10a0001b 	beqz	a1,48b468 <pfkey_msg_parse+0xa84>
  48b3fc:	00000000 	nop
  48b400:	90b6000b 	lbu	s6,11(a1)
  48b404:	00000000 	nop
  48b408:	12c00017 	beqz	s6,48b468 <pfkey_msg_parse+0xa84>
  48b40c:	00000000 	nop
  48b410:	90b5000a 	lbu	s5,10(a1)
  48b414:	00000000 	nop
  48b418:	12a0ffb2 	beqz	s5,48b2e4 <pfkey_msg_parse+0x900>
  48b41c:	00000000 	nop
  48b420:	8f908598 	lw	s0,-31336(gp)
  48b424:	00000000 	nop
  48b428:	8e100000 	lw	s0,0(s0)
  48b42c:	00000000 	nop
  48b430:	1200fde5 	beqz	s0,48abc8 <pfkey_msg_parse+0x1e4>
  48b434:	2414ffea 	li	s4,-22
  48b438:	90a5000a 	lbu	a1,10(a1)
  48b43c:	8f84804c 	lw	a0,-32692(gp)
  48b440:	00000000 	nop
  48b444:	2484b8e8 	addiu	a0,a0,-18200
  48b448:	8f998be0 	lw	t9,-29728(gp)
  48b44c:	00000000 	nop
  48b450:	0320f809 	jalr	t9
  48b454:	00000000 	nop
  48b458:	8fbc0030 	lw	gp,48(sp)
  48b45c:	00000000 	nop
  48b460:	1000fddb 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b464:	02801021 	move	v0,s4
  48b468:	8f8f8598 	lw	t7,-31336(gp)
  48b46c:	00000000 	nop
  48b470:	8def0000 	lw	t7,0(t7)
  48b474:	00000000 	nop
  48b478:	11e0fdd3 	beqz	t7,48abc8 <pfkey_msg_parse+0x1e4>
  48b47c:	2406000a 	li	a2,10
  48b480:	90a5000b 	lbu	a1,11(a1)
  48b484:	8f84804c 	lw	a0,-32692(gp)
  48b488:	00000000 	nop
  48b48c:	2484b930 	addiu	a0,a0,-18128
  48b490:	00000000 	nop
  48b494:	1000fdc6 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48b498:	00000000 	nop
  48b49c:	10a0001a 	beqz	a1,48b508 <pfkey_msg_parse+0xb24>
  48b4a0:	00000000 	nop
  48b4a4:	90b3000b 	lbu	s3,11(a1)
  48b4a8:	00000000 	nop
  48b4ac:	12600016 	beqz	s3,48b508 <pfkey_msg_parse+0xb24>
  48b4b0:	2407000b 	li	a3,11
  48b4b4:	94a6000a 	lhu	a2,10(a1)
  48b4b8:	00000000 	nop
  48b4bc:	14c7ff89 	bne	a2,a3,48b2e4 <pfkey_msg_parse+0x900>
  48b4c0:	00000000 	nop
  48b4c4:	8f8c8598 	lw	t4,-31336(gp)
  48b4c8:	00000000 	nop
  48b4cc:	8d8c0000 	lw	t4,0(t4)
  48b4d0:	00000000 	nop
  48b4d4:	1180fdbc 	beqz	t4,48abc8 <pfkey_msg_parse+0x1e4>
  48b4d8:	2414ffea 	li	s4,-22
  48b4dc:	8f84804c 	lw	a0,-32692(gp)
  48b4e0:	00000000 	nop
  48b4e4:	2484b98c 	addiu	a0,a0,-18036
  48b4e8:	8f998a08 	lw	t9,-30200(gp)
  48b4ec:	00000000 	nop
  48b4f0:	0320f809 	jalr	t9
  48b4f4:	00000000 	nop
  48b4f8:	8fbc0030 	lw	gp,48(sp)
  48b4fc:	00000000 	nop
  48b500:	1000fdb3 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b504:	02801021 	move	v0,s4
  48b508:	8f8e8598 	lw	t6,-31336(gp)
  48b50c:	00000000 	nop
  48b510:	8dce0000 	lw	t6,0(t6)
  48b514:	00000000 	nop
  48b518:	11c0fdab 	beqz	t6,48abc8 <pfkey_msg_parse+0x1e4>
  48b51c:	24060003 	li	a2,3
  48b520:	90a5000b 	lbu	a1,11(a1)
  48b524:	8f84804c 	lw	a0,-32692(gp)
  48b528:	00000000 	nop
  48b52c:	2484b9e0 	addiu	a0,a0,-17952
  48b530:	00000000 	nop
  48b534:	1000fd9e 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48b538:	00000000 	nop
  48b53c:	148fff47 	bne	a0,t7,48b25c <pfkey_msg_parse+0x878>
  48b540:	28980004 	slti	t8,a0,4
  48b544:	3c0501e0 	lui	a1,0x1e0
  48b548:	02a53024 	and	a2,s5,a1
  48b54c:	10c5ff43 	beq	a2,a1,48b25c <pfkey_msg_parse+0x878>
  48b550:	32a70002 	andi	a3,s5,0x2
  48b554:	10e00008 	beqz	a3,48b578 <pfkey_msg_parse+0xb94>
  48b558:	00000000 	nop
  48b55c:	8fc20004 	lw	v0,4(s8)
  48b560:	00000000 	nop
  48b564:	8c50000c 	lw	s0,12(v0)
  48b568:	00000000 	nop
  48b56c:	32150004 	andi	s5,s0,0x4
  48b570:	16a0ff3a 	bnez	s5,48b25c <pfkey_msg_parse+0x878>
  48b574:	00000000 	nop
  48b578:	8f9e8598 	lw	s8,-31336(gp)
  48b57c:	00000000 	nop
  48b580:	8fde0000 	lw	s8,0(s8)
  48b584:	00000000 	nop
  48b588:	13c0fd8f 	beqz	s8,48abc8 <pfkey_msg_parse+0x1e4>
  48b58c:	24140002 	li	s4,2
  48b590:	00a62823 	subu	a1,a1,a2
  48b594:	8f84804c 	lw	a0,-32692(gp)
  48b598:	00000000 	nop
  48b59c:	2484ba3c 	addiu	a0,a0,-17860
  48b5a0:	00000000 	nop
  48b5a4:	1000fd82 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48b5a8:	02873023 	subu	a2,s4,a3
  48b5ac:	8f928598 	lw	s2,-31336(gp)
  48b5b0:	00000000 	nop
  48b5b4:	8e520000 	lw	s2,0(s2)
  48b5b8:	00000000 	nop
  48b5bc:	1240fd83 	beqz	s2,48abcc <pfkey_msg_parse+0x1e8>
  48b5c0:	02803021 	move	a2,s4
  48b5c4:	96250002 	lhu	a1,2(s1)
  48b5c8:	8f84804c 	lw	a0,-32692(gp)
  48b5cc:	00000000 	nop
  48b5d0:	2484bae4 	addiu	a0,a0,-17692
  48b5d4:	8f998be0 	lw	t9,-29728(gp)
  48b5d8:	00000000 	nop
  48b5dc:	0320f809 	jalr	t9
  48b5e0:	00000000 	nop
  48b5e4:	8fbc0030 	lw	gp,48(sp)
  48b5e8:	1000fd79 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b5ec:	02801021 	move	v0,s4
  48b5f0:	1100fd75 	beqz	t0,48abc8 <pfkey_msg_parse+0x1e4>
  48b5f4:	2414ffea 	li	s4,-22
  48b5f8:	8f84804c 	lw	a0,-32692(gp)
  48b5fc:	00000000 	nop
  48b600:	2484bb3c 	addiu	a0,a0,-17604
  48b604:	8f998be0 	lw	t9,-29728(gp)
  48b608:	00000000 	nop
  48b60c:	0320f809 	jalr	t9
  48b610:	00000000 	nop
  48b614:	8fbc0030 	lw	gp,48(sp)
  48b618:	00000000 	nop
  48b61c:	1000fd6c 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b620:	02801021 	move	v0,s4
  48b624:	1100feb7 	beqz	t0,48b104 <pfkey_msg_parse+0x720>
  48b628:	00000000 	nop
  48b62c:	8f84804c 	lw	a0,-32692(gp)
  48b630:	00000000 	nop
  48b634:	2484bb9c 	addiu	a0,a0,-17508
  48b638:	8f998be0 	lw	t9,-29728(gp)
  48b63c:	00000000 	nop
  48b640:	0320f809 	jalr	t9
  48b644:	00000000 	nop
  48b648:	8fbc0030 	lw	gp,48(sp)
  48b64c:	00000000 	nop
  48b650:	8f888598 	lw	t0,-31336(gp)
  48b654:	00000000 	nop
  48b658:	8d080000 	lw	t0,0(t0)
  48b65c:	1000fea9 	b	48b104 <pfkey_msg_parse+0x720>
  48b660:	00000000 	nop
  48b664:	1100fd58 	beqz	t0,48abc8 <pfkey_msg_parse+0x1e4>
  48b668:	2414ffea 	li	s4,-22
  48b66c:	8f84804c 	lw	a0,-32692(gp)
  48b670:	00000000 	nop
  48b674:	2484bbe0 	addiu	a0,a0,-17440
  48b678:	8f998be0 	lw	t9,-29728(gp)
  48b67c:	00000000 	nop
  48b680:	0320f809 	jalr	t9
  48b684:	00000000 	nop
  48b688:	8fbc0030 	lw	gp,48(sp)
  48b68c:	00000000 	nop
  48b690:	1000fd4f 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b694:	02801021 	move	v0,s4
  48b698:	1100fd4b 	beqz	t0,48abc8 <pfkey_msg_parse+0x1e4>
  48b69c:	2406001e 	li	a2,30
  48b6a0:	96250002 	lhu	a1,2(s1)
  48b6a4:	8f84804c 	lw	a0,-32692(gp)
  48b6a8:	00000000 	nop
  48b6ac:	2484bc1c 	addiu	a0,a0,-17380
  48b6b0:	00000000 	nop
  48b6b4:	1000fd3e 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48b6b8:	00000000 	nop
  48b6bc:	1100fd42 	beqz	t0,48abc8 <pfkey_msg_parse+0x1e4>
  48b6c0:	02402821 	move	a1,s2
  48b6c4:	8f84804c 	lw	a0,-32692(gp)
  48b6c8:	00000000 	nop
  48b6cc:	2484bc64 	addiu	a0,a0,-17308
  48b6d0:	00000000 	nop
  48b6d4:	1000fd36 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48b6d8:	00000000 	nop
  48b6dc:	926a0001 	lbu	t2,1(s3)
  48b6e0:	00000000 	nop
  48b6e4:	114bfde3 	beq	t2,t3,48ae74 <pfkey_msg_parse+0x490>
  48b6e8:	2d090003 	sltiu	t1,t0,3
  48b6ec:	92620002 	lbu	v0,2(s3)
  48b6f0:	00000000 	nop
  48b6f4:	1040fddf 	beqz	v0,48ae74 <pfkey_msg_parse+0x490>
  48b6f8:	00000000 	nop
  48b6fc:	1100fd32 	beqz	t0,48abc8 <pfkey_msg_parse+0x1e4>
  48b700:	00402821 	move	a1,v0
  48b704:	8f84804c 	lw	a0,-32692(gp)
  48b708:	00000000 	nop
  48b70c:	2484bca8 	addiu	a0,a0,-17240
  48b710:	8f998be0 	lw	t9,-29728(gp)
  48b714:	00000000 	nop
  48b718:	0320f809 	jalr	t9
  48b71c:	00000000 	nop
  48b720:	8fbc0030 	lw	gp,48(sp)
  48b724:	00000000 	nop
  48b728:	1000fd28 	b	48abcc <pfkey_msg_parse+0x1e8>
  48b72c:	2414ffea 	li	s4,-22
  48b730:	1100fd26 	beqz	t0,48abcc <pfkey_msg_parse+0x1e8>
  48b734:	2414ffea 	li	s4,-22
  48b738:	92640001 	lbu	a0,1(s3)
  48b73c:	8f998940 	lw	t9,-30400(gp)
  48b740:	00000000 	nop
  48b744:	0320f809 	jalr	t9
  48b748:	00000000 	nop
  48b74c:	8fbc0030 	lw	gp,48(sp)
  48b750:	92650001 	lbu	a1,1(s3)
  48b754:	8f84804c 	lw	a0,-32692(gp)
  48b758:	00000000 	nop
  48b75c:	2484bcdc 	addiu	a0,a0,-17188
  48b760:	00000000 	nop
  48b764:	1000fd12 	b	48abb0 <pfkey_msg_parse+0x1cc>
  48b768:	00403021 	move	a2,v0
  48b76c:	8f918598 	lw	s1,-31336(gp)
  48b770:	00000000 	nop
  48b774:	8e310000 	lw	s1,0(s1)
  48b778:	00000000 	nop
  48b77c:	1220fd12 	beqz	s1,48abc8 <pfkey_msg_parse+0x1e4>
  48b780:	2414ffea 	li	s4,-22
  48b784:	8f998940 	lw	t9,-30400(gp)
  48b788:	00000000 	nop
  48b78c:	0320f809 	jalr	t9
  48b790:	00000000 	nop
  48b794:	8fbc0030 	lw	gp,48(sp)
  48b798:	92660001 	lbu	a2,1(s3)
  48b79c:	92650003 	lbu	a1,3(s3)
  48b7a0:	8f84804c 	lw	a0,-32692(gp)
  48b7a4:	00000000 	nop
  48b7a8:	2484bd34 	addiu	a0,a0,-17100
  48b7ac:	00403821 	move	a3,v0
  48b7b0:	8f998be0 	lw	t9,-29728(gp)
  48b7b4:	00000000 	nop
  48b7b8:	0320f809 	jalr	t9
  48b7bc:	00000000 	nop
  48b7c0:	8fbc0030 	lw	gp,48(sp)
  48b7c4:	00000000 	nop
  48b7c8:	1000fd01 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b7cc:	02801021 	move	v0,s4
  48b7d0:	8f888598 	lw	t0,-31336(gp)
  48b7d4:	00000000 	nop
  48b7d8:	8d080000 	lw	t0,0(t0)
  48b7dc:	1000fd9e 	b	48ae58 <pfkey_msg_parse+0x474>
  48b7e0:	00000000 	nop
  48b7e4:	8f888598 	lw	t0,-31336(gp)
  48b7e8:	00000000 	nop
  48b7ec:	8d080000 	lw	t0,0(t0)
  48b7f0:	1000fd9d 	b	48ae68 <pfkey_msg_parse+0x484>
  48b7f4:	00000000 	nop
  48b7f8:	8f878598 	lw	a3,-31336(gp)
  48b7fc:	00000000 	nop
  48b800:	8ce70000 	lw	a3,0(a3)
  48b804:	00000000 	nop
  48b808:	10e0fcef 	beqz	a3,48abc8 <pfkey_msg_parse+0x1e4>
  48b80c:	2414ffea 	li	s4,-22
  48b810:	8f84804c 	lw	a0,-32692(gp)
  48b814:	00000000 	nop
  48b818:	2484bd94 	addiu	a0,a0,-17004
  48b81c:	8f998a08 	lw	t9,-30200(gp)
  48b820:	00000000 	nop
  48b824:	0320f809 	jalr	t9
  48b828:	00000000 	nop
  48b82c:	8fbc0030 	lw	gp,48(sp)
  48b830:	00000000 	nop
  48b834:	1000fce6 	b	48abd0 <pfkey_msg_parse+0x1ec>
  48b838:	02801021 	move	v0,s4
  48b83c:	8f97816c 	lw	s7,-32404(gp)
  48b840:	1000fcc3 	b	48ab50 <pfkey_msg_parse+0x16c>
  48b844:	03c02021 	move	a0,s8

0048b848 <satype2proto>:
  48b848:	3c1c0fb8 	lui	gp,0xfb8
  48b84c:	279c1128 	addiu	gp,gp,4392
  48b850:	0399e021 	addu	gp,gp,t9
  48b854:	8f828018 	lw	v0,-32744(gp)
  48b858:	00000000 	nop
  48b85c:	244244cc 	addiu	v0,v0,17612
  48b860:	90420001 	lbu	v0,1(v0)
  48b864:	00000000 	nop
  48b868:	308400ff 	andi	a0,a0,0xff
  48b86c:	10440010 	beq	v0,a0,48b8b0 <satype2proto+0x68>
  48b870:	00002821 	move	a1,zero
  48b874:	1040000e 	beqz	v0,48b8b0 <satype2proto+0x68>
  48b878:	00000000 	nop
  48b87c:	00001821 	move	v1,zero
  48b880:	24630008 	addiu	v1,v1,8
  48b884:	00602821 	move	a1,v1
  48b888:	8f828018 	lw	v0,-32744(gp)
  48b88c:	00000000 	nop
  48b890:	244244cc 	addiu	v0,v0,17612
  48b894:	00451021 	addu	v0,v0,a1
  48b898:	90420001 	lbu	v0,1(v0)
  48b89c:	00000000 	nop
  48b8a0:	10440003 	beq	v0,a0,48b8b0 <satype2proto+0x68>
  48b8a4:	00000000 	nop
  48b8a8:	1440fff5 	bnez	v0,48b880 <satype2proto+0x38>
  48b8ac:	00000000 	nop
  48b8b0:	8f828018 	lw	v0,-32744(gp)
  48b8b4:	00000000 	nop
  48b8b8:	244244cc 	addiu	v0,v0,17612
  48b8bc:	00451021 	addu	v0,v0,a1
  48b8c0:	90420000 	lbu	v0,0(v0)
  48b8c4:	03e00008 	jr	ra
  48b8c8:	00000000 	nop

0048b8cc <proto2satype>:
  48b8cc:	3c1c0fb8 	lui	gp,0xfb8
  48b8d0:	279c10a4 	addiu	gp,gp,4260
  48b8d4:	0399e021 	addu	gp,gp,t9
  48b8d8:	8f828018 	lw	v0,-32744(gp)
  48b8dc:	00000000 	nop
  48b8e0:	244244cc 	addiu	v0,v0,17612
  48b8e4:	90420000 	lbu	v0,0(v0)
  48b8e8:	00000000 	nop
  48b8ec:	308400ff 	andi	a0,a0,0xff
  48b8f0:	10440010 	beq	v0,a0,48b934 <proto2satype+0x68>
  48b8f4:	00002821 	move	a1,zero
  48b8f8:	1040000e 	beqz	v0,48b934 <proto2satype+0x68>
  48b8fc:	00000000 	nop
  48b900:	00001821 	move	v1,zero
  48b904:	24630008 	addiu	v1,v1,8
  48b908:	00602821 	move	a1,v1
  48b90c:	8f828018 	lw	v0,-32744(gp)
  48b910:	00000000 	nop
  48b914:	244244cc 	addiu	v0,v0,17612
  48b918:	00451021 	addu	v0,v0,a1
  48b91c:	90420000 	lbu	v0,0(v0)
  48b920:	00000000 	nop
  48b924:	10440003 	beq	v0,a0,48b934 <proto2satype+0x68>
  48b928:	00000000 	nop
  48b92c:	1440fff5 	bnez	v0,48b904 <proto2satype+0x38>
  48b930:	00000000 	nop
  48b934:	8f828018 	lw	v0,-32744(gp)
  48b938:	00000000 	nop
  48b93c:	244244cc 	addiu	v0,v0,17612
  48b940:	00451021 	addu	v0,v0,a1
  48b944:	90420001 	lbu	v0,1(v0)
  48b948:	03e00008 	jr	ra
  48b94c:	00000000 	nop

0048b950 <satype2name>:
  48b950:	3c1c0fb8 	lui	gp,0xfb8
  48b954:	279c1020 	addiu	gp,gp,4128
  48b958:	0399e021 	addu	gp,gp,t9
  48b95c:	8f828018 	lw	v0,-32744(gp)
  48b960:	00000000 	nop
  48b964:	244244cc 	addiu	v0,v0,17612
  48b968:	90420001 	lbu	v0,1(v0)
  48b96c:	00000000 	nop
  48b970:	308400ff 	andi	a0,a0,0xff
  48b974:	10440010 	beq	v0,a0,48b9b8 <satype2name+0x68>
  48b978:	00002821 	move	a1,zero
  48b97c:	1040000e 	beqz	v0,48b9b8 <satype2name+0x68>
  48b980:	00000000 	nop
  48b984:	00001821 	move	v1,zero
  48b988:	24630008 	addiu	v1,v1,8
  48b98c:	00602821 	move	a1,v1
  48b990:	8f828018 	lw	v0,-32744(gp)
  48b994:	00000000 	nop
  48b998:	244244cc 	addiu	v0,v0,17612
  48b99c:	00451021 	addu	v0,v0,a1
  48b9a0:	90420001 	lbu	v0,1(v0)
  48b9a4:	00000000 	nop
  48b9a8:	10440003 	beq	v0,a0,48b9b8 <satype2name+0x68>
  48b9ac:	00000000 	nop
  48b9b0:	1440fff5 	bnez	v0,48b988 <satype2name+0x38>
  48b9b4:	00000000 	nop
  48b9b8:	8f828018 	lw	v0,-32744(gp)
  48b9bc:	00000000 	nop
  48b9c0:	244244cc 	addiu	v0,v0,17612
  48b9c4:	00451021 	addu	v0,v0,a1
  48b9c8:	8c420004 	lw	v0,4(v0)
  48b9cc:	03e00008 	jr	ra
  48b9d0:	00000000 	nop

0048b9d4 <proto2name>:
  48b9d4:	3c1c0fb8 	lui	gp,0xfb8
  48b9d8:	279c0f9c 	addiu	gp,gp,3996
  48b9dc:	0399e021 	addu	gp,gp,t9
  48b9e0:	8f828018 	lw	v0,-32744(gp)
  48b9e4:	00000000 	nop
  48b9e8:	244244cc 	addiu	v0,v0,17612
  48b9ec:	90420000 	lbu	v0,0(v0)
  48b9f0:	00000000 	nop
  48b9f4:	308400ff 	andi	a0,a0,0xff
  48b9f8:	10440010 	beq	v0,a0,48ba3c <proto2name+0x68>
  48b9fc:	00002821 	move	a1,zero
  48ba00:	1040000e 	beqz	v0,48ba3c <proto2name+0x68>
  48ba04:	00000000 	nop
  48ba08:	00001821 	move	v1,zero
  48ba0c:	24630008 	addiu	v1,v1,8
  48ba10:	00602821 	move	a1,v1
  48ba14:	8f828018 	lw	v0,-32744(gp)
  48ba18:	00000000 	nop
  48ba1c:	244244cc 	addiu	v0,v0,17612
  48ba20:	00451021 	addu	v0,v0,a1
  48ba24:	90420000 	lbu	v0,0(v0)
  48ba28:	00000000 	nop
  48ba2c:	10440003 	beq	v0,a0,48ba3c <proto2name+0x68>
  48ba30:	00000000 	nop
  48ba34:	1440fff5 	bnez	v0,48ba0c <proto2name+0x38>
  48ba38:	00000000 	nop
  48ba3c:	8f828018 	lw	v0,-32744(gp)
  48ba40:	00000000 	nop
  48ba44:	244244cc 	addiu	v0,v0,17612
  48ba48:	00451021 	addu	v0,v0,a1
  48ba4c:	8c420004 	lw	v0,4(v0)
  48ba50:	03e00008 	jr	ra
  48ba54:	00000000 	nop

0048ba58 <pfkey_lifetime_parse>:
  48ba58:	3c1c0fb8 	lui	gp,0xfb8
  48ba5c:	279c0f18 	addiu	gp,gp,3864
  48ba60:	0399e021 	addu	gp,gp,t9
  48ba64:	27bdffd8 	addiu	sp,sp,-40
  48ba68:	afbc0010 	sw	gp,16(sp)
  48ba6c:	afb00018 	sw	s0,24(sp)
  48ba70:	00808021 	move	s0,a0
  48ba74:	8f848598 	lw	a0,-31336(gp)
  48ba78:	00000000 	nop
  48ba7c:	8c840000 	lw	a0,0(a0)
  48ba80:	00000000 	nop
  48ba84:	afb1001c 	sw	s1,28(sp)
  48ba88:	2c830004 	sltiu	v1,a0,4
  48ba8c:	afbf0024 	sw	ra,36(sp)
  48ba90:	afbc0020 	sw	gp,32(sp)
  48ba94:	1460000a 	bnez	v1,48bac0 <pfkey_lifetime_parse+0x68>
  48ba98:	00008821 	move	s1,zero
  48ba9c:	8f84804c 	lw	a0,-32692(gp)
  48baa0:	00000000 	nop
  48baa4:	2484be18 	addiu	a0,a0,-16872
  48baa8:	8f998a08 	lw	t9,-30200(gp)
  48baac:	00000000 	nop
  48bab0:	0320f809 	jalr	t9
  48bab4:	00000000 	nop
  48bab8:	8fbc0010 	lw	gp,16(sp)
  48babc:	00000000 	nop
  48bac0:	12000035 	beqz	s0,48bb98 <pfkey_lifetime_parse+0x140>
  48bac4:	24050005 	li	a1,5
  48bac8:	96030000 	lhu	v1,0(s0)
  48bacc:	00000000 	nop
  48bad0:	10650018 	beq	v1,a1,48bb34 <pfkey_lifetime_parse+0xdc>
  48bad4:	00000000 	nop
  48bad8:	8f868598 	lw	a2,-31336(gp)
  48badc:	00000000 	nop
  48bae0:	8cc60000 	lw	a2,0(a2)
  48bae4:	00000000 	nop
  48bae8:	10c0000b 	beqz	a2,48bb18 <pfkey_lifetime_parse+0xc0>
  48baec:	00602821 	move	a1,v1
  48baf0:	8f84804c 	lw	a0,-32692(gp)
  48baf4:	00000000 	nop
  48baf8:	2484be44 	addiu	a0,a0,-16828
  48bafc:	24060028 	li	a2,40
  48bb00:	8f998be0 	lw	t9,-29728(gp)
  48bb04:	00000000 	nop
  48bb08:	0320f809 	jalr	t9
  48bb0c:	00000000 	nop
  48bb10:	8fbc0010 	lw	gp,16(sp)
  48bb14:	00000000 	nop
  48bb18:	2411ffea 	li	s1,-22
  48bb1c:	02201021 	move	v0,s1
  48bb20:	8fbf0024 	lw	ra,36(sp)
  48bb24:	8fb1001c 	lw	s1,28(sp)
  48bb28:	8fb00018 	lw	s0,24(sp)
  48bb2c:	03e00008 	jr	ra
  48bb30:	27bd0028 	addiu	sp,sp,40
  48bb34:	960a0002 	lhu	t2,2(s0)
  48bb38:	3409fffe 	li	t1,0xfffe
  48bb3c:	012a4821 	addu	t1,t1,t2
  48bb40:	3128ffff 	andi	t0,t1,0xffff
  48bb44:	2d070003 	sltiu	a3,t0,3
  48bb48:	14e0fff5 	bnez	a3,48bb20 <pfkey_lifetime_parse+0xc8>
  48bb4c:	02201021 	move	v0,s1
  48bb50:	8f8b8598 	lw	t3,-31336(gp)
  48bb54:	00000000 	nop
  48bb58:	8d6b0000 	lw	t3,0(t3)
  48bb5c:	00000000 	nop
  48bb60:	1160ffed 	beqz	t3,48bb18 <pfkey_lifetime_parse+0xc0>
  48bb64:	2411ffea 	li	s1,-22
  48bb68:	96050002 	lhu	a1,2(s0)
  48bb6c:	8f84804c 	lw	a0,-32692(gp)
  48bb70:	00000000 	nop
  48bb74:	2484bec0 	addiu	a0,a0,-16704
  48bb78:	8f998be0 	lw	t9,-29728(gp)
  48bb7c:	00000000 	nop
  48bb80:	0320f809 	jalr	t9
  48bb84:	00000000 	nop
  48bb88:	8fbc0010 	lw	gp,16(sp)
  48bb8c:	00000000 	nop
  48bb90:	1000ffe3 	b	48bb20 <pfkey_lifetime_parse+0xc8>
  48bb94:	02201021 	move	v0,s1
  48bb98:	8f838598 	lw	v1,-31336(gp)
  48bb9c:	00000000 	nop
  48bba0:	8c630000 	lw	v1,0(v1)
  48bba4:	00000000 	nop
  48bba8:	1060ffdb 	beqz	v1,48bb18 <pfkey_lifetime_parse+0xc0>
  48bbac:	2411ffea 	li	s1,-22
  48bbb0:	8f84804c 	lw	a0,-32692(gp)
  48bbb4:	00000000 	nop
  48bbb8:	2484bf00 	addiu	a0,a0,-16640
  48bbbc:	8f998a08 	lw	t9,-30200(gp)
  48bbc0:	00000000 	nop
  48bbc4:	0320f809 	jalr	t9
  48bbc8:	00000000 	nop
  48bbcc:	8fbc0010 	lw	gp,16(sp)
  48bbd0:	00000000 	nop
  48bbd4:	1000ffd2 	b	48bb20 <pfkey_lifetime_parse+0xc8>
  48bbd8:	02201021 	move	v0,s1

0048bbdc <pfkey_sens_parse>:
  48bbdc:	3c1c0fb8 	lui	gp,0xfb8
  48bbe0:	279c0d94 	addiu	gp,gp,3476
  48bbe4:	0399e021 	addu	gp,gp,t9
  48bbe8:	27bdffd8 	addiu	sp,sp,-40
  48bbec:	afbc0010 	sw	gp,16(sp)
  48bbf0:	afb00018 	sw	s0,24(sp)
  48bbf4:	00801821 	move	v1,a0
  48bbf8:	afbf0020 	sw	ra,32(sp)
  48bbfc:	afbc001c 	sw	gp,28(sp)
  48bc00:	94650000 	lhu	a1,0(v1)
  48bc04:	00000000 	nop
  48bc08:	2ca40002 	sltiu	a0,a1,2
  48bc0c:	10800016 	beqz	a0,48bc68 <pfkey_sens_parse+0x8c>
  48bc10:	00008021 	move	s0,zero
  48bc14:	8f878598 	lw	a3,-31336(gp)
  48bc18:	00000000 	nop
  48bc1c:	8ce70000 	lw	a3,0(a3)
  48bc20:	8f84804c 	lw	a0,-32692(gp)
  48bc24:	00000000 	nop
  48bc28:	2484bf40 	addiu	a0,a0,-16576
  48bc2c:	24060010 	li	a2,16
  48bc30:	10e00008 	beqz	a3,48bc54 <pfkey_sens_parse+0x78>
  48bc34:	2410ffea 	li	s0,-22
  48bc38:	94650000 	lhu	a1,0(v1)
  48bc3c:	8f998be0 	lw	t9,-29728(gp)
  48bc40:	00000000 	nop
  48bc44:	0320f809 	jalr	t9
  48bc48:	00000000 	nop
  48bc4c:	8fbc0010 	lw	gp,16(sp)
  48bc50:	00000000 	nop
  48bc54:	02001021 	move	v0,s0
  48bc58:	8fbf0020 	lw	ra,32(sp)
  48bc5c:	8fb00018 	lw	s0,24(sp)
  48bc60:	03e00008 	jr	ra
  48bc64:	27bd0028 	addiu	sp,sp,40
  48bc68:	8f868598 	lw	a2,-31336(gp)
  48bc6c:	00000000 	nop
  48bc70:	8cc60000 	lw	a2,0(a2)
  48bc74:	8f84804c 	lw	a0,-32692(gp)
  48bc78:	00000000 	nop
  48bc7c:	2484bf8c 	addiu	a0,a0,-16500
  48bc80:	10c0fff4 	beqz	a2,48bc54 <pfkey_sens_parse+0x78>
  48bc84:	00000000 	nop
  48bc88:	94650002 	lhu	a1,2(v1)
  48bc8c:	8f998be0 	lw	t9,-29728(gp)
  48bc90:	00000000 	nop
  48bc94:	0320f809 	jalr	t9
  48bc98:	00000000 	nop
  48bc9c:	8fbc0010 	lw	gp,16(sp)
  48bca0:	1000ffed 	b	48bc58 <pfkey_sens_parse+0x7c>
  48bca4:	02001021 	move	v0,s0

0048bca8 <pfkey_spirange_parse>:
  48bca8:	3c1c0fb8 	lui	gp,0xfb8
  48bcac:	279c0cc8 	addiu	gp,gp,3272
  48bcb0:	0399e021 	addu	gp,gp,t9
  48bcb4:	27bdffe0 	addiu	sp,sp,-32
  48bcb8:	afbc0010 	sw	gp,16(sp)
  48bcbc:	afbf001c 	sw	ra,28(sp)
  48bcc0:	afbc0018 	sw	gp,24(sp)
  48bcc4:	94830000 	lhu	v1,0(a0)
  48bcc8:	24050002 	li	a1,2
  48bccc:	10650016 	beq	v1,a1,48bd28 <pfkey_spirange_parse+0x80>
  48bcd0:	00003821 	move	a3,zero
  48bcd4:	8f848598 	lw	a0,-31336(gp)
  48bcd8:	00000000 	nop
  48bcdc:	8c840000 	lw	a0,0(a0)
  48bce0:	00000000 	nop
  48bce4:	1080000b 	beqz	a0,48bd14 <pfkey_spirange_parse+0x6c>
  48bce8:	00602821 	move	a1,v1
  48bcec:	8f84804c 	lw	a0,-32692(gp)
  48bcf0:	00000000 	nop
  48bcf4:	2484bfd4 	addiu	a0,a0,-16428
  48bcf8:	24060010 	li	a2,16
  48bcfc:	8f998be0 	lw	t9,-29728(gp)
  48bd00:	00000000 	nop
  48bd04:	0320f809 	jalr	t9
  48bd08:	00000000 	nop
  48bd0c:	8fbc0010 	lw	gp,16(sp)
  48bd10:	00000000 	nop
  48bd14:	2407ffea 	li	a3,-22
  48bd18:	8fbf001c 	lw	ra,28(sp)
  48bd1c:	00e01021 	move	v0,a3
  48bd20:	03e00008 	jr	ra
  48bd24:	27bd0020 	addiu	sp,sp,32
  48bd28:	8c85000c 	lw	a1,12(a0)
  48bd2c:	00000000 	nop
  48bd30:	10a00012 	beqz	a1,48bd7c <pfkey_spirange_parse+0xd4>
  48bd34:	00000000 	nop
  48bd38:	8f838598 	lw	v1,-31336(gp)
  48bd3c:	00000000 	nop
  48bd40:	8c630000 	lw	v1,0(v1)
  48bd44:	00000000 	nop
  48bd48:	1060fff2 	beqz	v1,48bd14 <pfkey_spirange_parse+0x6c>
  48bd4c:	00000000 	nop
  48bd50:	8f84804c 	lw	a0,-32692(gp)
  48bd54:	00000000 	nop
  48bd58:	2484c024 	addiu	a0,a0,-16348
  48bd5c:	8f998be0 	lw	t9,-29728(gp)
  48bd60:	00000000 	nop
  48bd64:	0320f809 	jalr	t9
  48bd68:	00000000 	nop
  48bd6c:	8fbc0010 	lw	gp,16(sp)
  48bd70:	00000000 	nop
  48bd74:	1000ffe8 	b	48bd18 <pfkey_spirange_parse+0x70>
  48bd78:	2407ffea 	li	a3,-22
  48bd7c:	8c850004 	lw	a1,4(a0)
  48bd80:	8c860008 	lw	a2,8(a0)
  48bd84:	00000000 	nop
  48bd88:	00c5402b 	sltu	t0,a2,a1
  48bd8c:	1100000d 	beqz	t0,48bdc4 <pfkey_spirange_parse+0x11c>
  48bd90:	00000000 	nop
  48bd94:	8f878598 	lw	a3,-31336(gp)
  48bd98:	00000000 	nop
  48bd9c:	8ce70000 	lw	a3,0(a3)
  48bda0:	00000000 	nop
  48bda4:	10e0ffdc 	beqz	a3,48bd18 <pfkey_spirange_parse+0x70>
  48bda8:	2407ffea 	li	a3,-22
  48bdac:	8f84804c 	lw	a0,-32692(gp)
  48bdb0:	00000000 	nop
  48bdb4:	2484c06c 	addiu	a0,a0,-16276
  48bdb8:	00000000 	nop
  48bdbc:	1000ffcf 	b	48bcfc <pfkey_spirange_parse+0x54>
  48bdc0:	00000000 	nop
  48bdc4:	2ca60100 	sltiu	a2,a1,256
  48bdc8:	10c0ffd3 	beqz	a2,48bd18 <pfkey_spirange_parse+0x70>
  48bdcc:	00000000 	nop
  48bdd0:	8f898598 	lw	t1,-31336(gp)
  48bdd4:	00000000 	nop
  48bdd8:	8d290000 	lw	t1,0(t1)
  48bddc:	00000000 	nop
  48bde0:	1120000a 	beqz	t1,48be0c <pfkey_spirange_parse+0x164>
  48bde4:	00000000 	nop
  48bde8:	8f84804c 	lw	a0,-32692(gp)
  48bdec:	00000000 	nop
  48bdf0:	2484c0b8 	addiu	a0,a0,-16200
  48bdf4:	8f998be0 	lw	t9,-29728(gp)
  48bdf8:	00000000 	nop
  48bdfc:	0320f809 	jalr	t9
  48be00:	00000000 	nop
  48be04:	8fbc0010 	lw	gp,16(sp)
  48be08:	00000000 	nop
  48be0c:	1000ffc2 	b	48bd18 <pfkey_spirange_parse+0x70>
  48be10:	2407ffef 	li	a3,-17

0048be14 <pfkey_x_kmprivate_parse>:
  48be14:	3c1c0fb8 	lui	gp,0xfb8
  48be18:	279c0b5c 	addiu	gp,gp,2908
  48be1c:	0399e021 	addu	gp,gp,t9
  48be20:	27bdffe0 	addiu	sp,sp,-32
  48be24:	afbc0010 	sw	gp,16(sp)
  48be28:	afbf001c 	sw	ra,28(sp)
  48be2c:	afbc0018 	sw	gp,24(sp)
  48be30:	00801821 	move	v1,a0
  48be34:	94640000 	lhu	a0,0(v1)
  48be38:	00000000 	nop
  48be3c:	10800022 	beqz	a0,48bec8 <pfkey_x_kmprivate_parse+0xb4>
  48be40:	00000000 	nop
  48be44:	8c650004 	lw	a1,4(v1)
  48be48:	00000000 	nop
  48be4c:	10a00013 	beqz	a1,48be9c <pfkey_x_kmprivate_parse+0x88>
  48be50:	00000000 	nop
  48be54:	8f838598 	lw	v1,-31336(gp)
  48be58:	00000000 	nop
  48be5c:	8c630000 	lw	v1,0(v1)
  48be60:	8f84804c 	lw	a0,-32692(gp)
  48be64:	00000000 	nop
  48be68:	2484c0fc 	addiu	a0,a0,-16132
  48be6c:	10600007 	beqz	v1,48be8c <pfkey_x_kmprivate_parse+0x78>
  48be70:	00000000 	nop
  48be74:	8f998be0 	lw	t9,-29728(gp)
  48be78:	00000000 	nop
  48be7c:	0320f809 	jalr	t9
  48be80:	00000000 	nop
  48be84:	8fbc0010 	lw	gp,16(sp)
  48be88:	00000000 	nop
  48be8c:	8fbf001c 	lw	ra,28(sp)
  48be90:	2402ffea 	li	v0,-22
  48be94:	03e00008 	jr	ra
  48be98:	27bd0020 	addiu	sp,sp,32
  48be9c:	8f868598 	lw	a2,-31336(gp)
  48bea0:	00000000 	nop
  48bea4:	8cc60000 	lw	a2,0(a2)
  48bea8:	8f84804c 	lw	a0,-32692(gp)
  48beac:	00000000 	nop
  48beb0:	2484c148 	addiu	a0,a0,-16056
  48beb4:	10c0fff5 	beqz	a2,48be8c <pfkey_x_kmprivate_parse+0x78>
  48beb8:	00000000 	nop
  48bebc:	94650002 	lhu	a1,2(v1)
  48bec0:	1000ffec 	b	48be74 <pfkey_x_kmprivate_parse+0x60>
  48bec4:	00000000 	nop
  48bec8:	8f858598 	lw	a1,-31336(gp)
  48becc:	00000000 	nop
  48bed0:	8ca50000 	lw	a1,0(a1)
  48bed4:	8f84804c 	lw	a0,-32692(gp)
  48bed8:	00000000 	nop
  48bedc:	2484c198 	addiu	a0,a0,-15976
  48bee0:	10a0ffea 	beqz	a1,48be8c <pfkey_x_kmprivate_parse+0x78>
  48bee4:	24060008 	li	a2,8
  48bee8:	94650000 	lhu	a1,0(v1)
  48beec:	8f998be0 	lw	t9,-29728(gp)
  48bef0:	00000000 	nop
  48bef4:	0320f809 	jalr	t9
  48bef8:	00000000 	nop
  48befc:	8fbc0010 	lw	gp,16(sp)
  48bf00:	00000000 	nop
  48bf04:	1000ffe1 	b	48be8c <pfkey_x_kmprivate_parse+0x78>
  48bf08:	00000000 	nop

0048bf0c <pfkey_x_ext_debug_parse>:
  48bf0c:	3c1c0fb8 	lui	gp,0xfb8
  48bf10:	279c0a64 	addiu	gp,gp,2660
  48bf14:	0399e021 	addu	gp,gp,t9
  48bf18:	27bdffd8 	addiu	sp,sp,-40
  48bf1c:	afbc0010 	sw	gp,16(sp)
  48bf20:	afb00018 	sw	s0,24(sp)
  48bf24:	00808021 	move	s0,a0
  48bf28:	8f848598 	lw	a0,-31336(gp)
  48bf2c:	00000000 	nop
  48bf30:	8c840000 	lw	a0,0(a0)
  48bf34:	00000000 	nop
  48bf38:	afb1001c 	sw	s1,28(sp)
  48bf3c:	2c830004 	sltiu	v1,a0,4
  48bf40:	afbf0024 	sw	ra,36(sp)
  48bf44:	afbc0020 	sw	gp,32(sp)
  48bf48:	1460000a 	bnez	v1,48bf74 <pfkey_x_ext_debug_parse+0x68>
  48bf4c:	00008821 	move	s1,zero
  48bf50:	8f84804c 	lw	a0,-32692(gp)
  48bf54:	00000000 	nop
  48bf58:	2484c1ec 	addiu	a0,a0,-15892
  48bf5c:	8f998a08 	lw	t9,-30200(gp)
  48bf60:	00000000 	nop
  48bf64:	0320f809 	jalr	t9
  48bf68:	00000000 	nop
  48bf6c:	8fbc0010 	lw	gp,16(sp)
  48bf70:	00000000 	nop
  48bf74:	96030000 	lhu	v1,0(s0)
  48bf78:	24050007 	li	a1,7
  48bf7c:	10650018 	beq	v1,a1,48bfe0 <pfkey_x_ext_debug_parse+0xd4>
  48bf80:	26040034 	addiu	a0,s0,52
  48bf84:	8f868598 	lw	a2,-31336(gp)
  48bf88:	00000000 	nop
  48bf8c:	8cc60000 	lw	a2,0(a2)
  48bf90:	00000000 	nop
  48bf94:	10c0000b 	beqz	a2,48bfc4 <pfkey_x_ext_debug_parse+0xb8>
  48bf98:	00602821 	move	a1,v1
  48bf9c:	8f84804c 	lw	a0,-32692(gp)
  48bfa0:	00000000 	nop
  48bfa4:	2484c218 	addiu	a0,a0,-15848
  48bfa8:	24060038 	li	a2,56
  48bfac:	8f998be0 	lw	t9,-29728(gp)
  48bfb0:	00000000 	nop
  48bfb4:	0320f809 	jalr	t9
  48bfb8:	00000000 	nop
  48bfbc:	8fbc0010 	lw	gp,16(sp)
  48bfc0:	00000000 	nop
  48bfc4:	2411ffea 	li	s1,-22
  48bfc8:	02201021 	move	v0,s1
  48bfcc:	8fbf0024 	lw	ra,36(sp)
  48bfd0:	8fb1001c 	lw	s1,28(sp)
  48bfd4:	8fb00018 	lw	s0,24(sp)
  48bfd8:	03e00008 	jr	ra
  48bfdc:	27bd0028 	addiu	sp,sp,40
  48bfe0:	00002821 	move	a1,zero
  48bfe4:	90830000 	lbu	v1,0(a0)
  48bfe8:	00000000 	nop
  48bfec:	14600007 	bnez	v1,48c00c <pfkey_x_ext_debug_parse+0x100>
  48bff0:	00000000 	nop
  48bff4:	24a50001 	addiu	a1,a1,1
  48bff8:	28a80004 	slti	t0,a1,4
  48bffc:	1500fff9 	bnez	t0,48bfe4 <pfkey_x_ext_debug_parse+0xd8>
  48c000:	24840001 	addiu	a0,a0,1
  48c004:	1000fff1 	b	48bfcc <pfkey_x_ext_debug_parse+0xc0>
  48c008:	02201021 	move	v0,s1
  48c00c:	8f878598 	lw	a3,-31336(gp)
  48c010:	00000000 	nop
  48c014:	8ce70000 	lw	a3,0(a3)
  48c018:	00000000 	nop
  48c01c:	10e0ffea 	beqz	a3,48bfc8 <pfkey_x_ext_debug_parse+0xbc>
  48c020:	2411ffea 	li	s1,-22
  48c024:	90860000 	lbu	a2,0(a0)
  48c028:	8f84804c 	lw	a0,-32692(gp)
  48c02c:	00000000 	nop
  48c030:	2484c268 	addiu	a0,a0,-15768
  48c034:	00000000 	nop
  48c038:	1000ffdc 	b	48bfac <pfkey_x_ext_debug_parse+0xa0>
  48c03c:	00000000 	nop

0048c040 <pfkey_x_ext_nat_t_type_parse>:
  48c040:	3c1c0fb8 	lui	gp,0xfb8
  48c044:	279c0930 	addiu	gp,gp,2352
  48c048:	0399e021 	addu	gp,gp,t9
  48c04c:	03e00008 	jr	ra
  48c050:	00001021 	move	v0,zero

0048c054 <pfkey_x_ext_nat_t_port_parse>:
  48c054:	3c1c0fb8 	lui	gp,0xfb8
  48c058:	279c091c 	addiu	gp,gp,2332
  48c05c:	0399e021 	addu	gp,gp,t9
  48c060:	03e00008 	jr	ra
  48c064:	00001021 	move	v0,zero

0048c068 <pfkey_x_ext_protocol_parse>:
  48c068:	3c1c0fb8 	lui	gp,0xfb8
  48c06c:	279c0908 	addiu	gp,gp,2312
  48c070:	0399e021 	addu	gp,gp,t9
  48c074:	03e00008 	jr	ra
  48c078:	00001021 	move	v0,zero
  48c07c:	00000000 	nop

0048c080 <pfkey_v2_sadb_ext_string>:
  48c080:	3c1c0fb8 	lui	gp,0xfb8
  48c084:	279c08f0 	addiu	gp,gp,2288
  48c088:	0399e021 	addu	gp,gp,t9

const char *
pfkey_v2_sadb_ext_string(int ext)
{
  if(ext < SADB_EXT_MAX) {
  48c08c:	2883001e 	slti	v1,a0,30
  48c090:	10600009 	beqz	v1,48c0b8 <pfkey_v2_sadb_ext_string+0x38>
  48c094:	00041080 	sll	v0,a0,0x2
    return pfkey_sadb_ext_strings[ext];
  48c098:	8f818018 	lw	at,-32744(gp)
  48c09c:	00000000 	nop
  48c0a0:	242145f0 	addiu	at,at,17904
  48c0a4:	00220821 	addu	at,at,v0
  48c0a8:	8c220000 	lw	v0,0(at)
  48c0ac:	00000000 	nop
  } else {
    return "unknown-ext";
  }
}
  48c0b0:	03e00008 	jr	ra
  48c0b4:	00000000 	nop
  48c0b8:	8f82804c 	lw	v0,-32692(gp)
  48c0bc:	00000000 	nop
  48c0c0:	2442c560 	addiu	v0,v0,-15008
  48c0c4:	00000000 	nop
  48c0c8:	03e00008 	jr	ra
  48c0cc:	00000000 	nop

0048c0d0 <pfkey_v2_sadb_type_string>:
  48c0d0:	3c1c0fb8 	lui	gp,0xfb8
  48c0d4:	279c08a0 	addiu	gp,gp,2208
  48c0d8:	0399e021 	addu	gp,gp,t9


static char *pfkey_sadb_type_strings[]={
	"reserved",                     /* SADB_RESERVED      */
	"getspi",                       /* SADB_GETSPI        */
	"update",                       /* SADB_UPDATE        */
	"add",                          /* SADB_ADD           */
	"delete",                       /* SADB_DELETE        */
	"get",                          /* SADB_GET           */
	"acquire",                      /* SADB_ACQUIRE       */
	"register",                     /* SADB_REGISTER      */
	"expire",                       /* SADB_EXPIRE        */
	"flush",                        /* SADB_FLUSH         */
	"dump",                         /* SADB_DUMP          */
	"x-promisc",                    /* SADB_X_PROMISC     */
	"x-pchange",                    /* SADB_X_PCHANGE     */
	"x-groupsa",                    /* SADB_X_GRPSA       */
	"x-addflow(eroute)",            /* SADB_X_ADDFLOW     */
	"x-delflow(eroute)",            /* SADB_X_DELFLOW     */
	"x-debug",                      /* SADB_X_DEBUG       */
};

const char *
pfkey_v2_sadb_type_string(int sadb_type)
{
  if(sadb_type < SADB_MAX) {
  48c0dc:	28830011 	slti	v1,a0,17
  48c0e0:	10600009 	beqz	v1,48c108 <pfkey_v2_sadb_type_string+0x38>
  48c0e4:	00041080 	sll	v0,a0,0x2
    return pfkey_sadb_type_strings[sadb_type];
  48c0e8:	8f818018 	lw	at,-32744(gp)
  48c0ec:	00000000 	nop
  48c0f0:	24214668 	addiu	at,at,18024
  48c0f4:	00220821 	addu	at,at,v0
  48c0f8:	8c220000 	lw	v0,0(at)
  48c0fc:	00000000 	nop
  } else {
    return "unknown-sadb-type";
  }
}
  48c100:	03e00008 	jr	ra
  48c104:	00000000 	nop
  48c108:	8f82804c 	lw	v0,-32692(gp)
  48c10c:	00000000 	nop
  48c110:	2442c56c 	addiu	v0,v0,-14996
  48c114:	00000000 	nop
  48c118:	03e00008 	jr	ra
  48c11c:	00000000 	nop

0048c120 <portof>:
  48c120:	3c1c0fb8 	lui	gp,0xfb8
  48c124:	279c0850 	addiu	gp,gp,2128
  48c128:	0399e021 	addu	gp,gp,t9
int				/* network order */
portof(src)
const ip_address *src;
{
	switch (src->u.v4.sin_family) {
  48c12c:	94830000 	lhu	v1,0(a0)
  48c130:	24050002 	li	a1,2
  48c134:	10650005 	beq	v1,a1,48c14c <portof+0x2c>
  48c138:	2405000a 	li	a1,10
  48c13c:	10650003 	beq	v1,a1,48c14c <portof+0x2c>
  48c140:	00000000 	nop
	case AF_INET:
		return src->u.v4.sin_port;
		break;
	case AF_INET6:
		return src->u.v6.sin6_port;
		break;
	default:
		return -1;	/* "can't happen" */
		break;
	}
}
  48c144:	03e00008 	jr	ra
  48c148:	2402ffff 	li	v0,-1
  48c14c:	94820002 	lhu	v0,2(a0)
  48c150:	00000000 	nop
  48c154:	03e00008 	jr	ra
  48c158:	00000000 	nop

0048c15c <setportof>:
  48c15c:	3c1c0fb8 	lui	gp,0xfb8
  48c160:	279c0814 	addiu	gp,gp,2068
  48c164:	0399e021 	addu	gp,gp,t9

/*
 - setportof - set the port field of an ip_address
 */
void
setportof(port, dst)
int port;			/* network order */
ip_address *dst;
{
	switch (dst->u.v4.sin_family) {
  48c168:	94a30000 	lhu	v1,0(a1)
  48c16c:	24060002 	li	a2,2
  48c170:	10660005 	beq	v1,a2,48c188 <setportof+0x2c>
  48c174:	2406000a 	li	a2,10
  48c178:	10660003 	beq	v1,a2,48c188 <setportof+0x2c>
  48c17c:	00000000 	nop
	case AF_INET:
		dst->u.v4.sin_port = port;
		break;
	case AF_INET6:
		dst->u.v6.sin6_port = port;
		break;
  48c180:	03e00008 	jr	ra
  48c184:	00000000 	nop
  48c188:	03e00008 	jr	ra
  48c18c:	a4a40002 	sh	a0,2(a1)

0048c190 <sockaddrof>:
  48c190:	3c1c0fb8 	lui	gp,0xfb8
  48c194:	279c07e0 	addiu	gp,gp,2016
  48c198:	0399e021 	addu	gp,gp,t9
	}
}

/*
 - sockaddrof - get a pointer to the sockaddr hiding inside an ip_address
 */
struct sockaddr *
sockaddrof(src)
ip_address *src;
{
	switch (src->u.v4.sin_family) {
  48c19c:	94850000 	lhu	a1,0(a0)
  48c1a0:	00000000 	nop
	case AF_INET:
		return (struct sockaddr *)&src->u.v4;
  48c1a4:	00801021 	move	v0,a0
  48c1a8:	24040002 	li	a0,2
  48c1ac:	10a40004 	beq	a1,a0,48c1c0 <sockaddrof+0x30>
  48c1b0:	2404000a 	li	a0,10
  48c1b4:	10a40002 	beq	a1,a0,48c1c0 <sockaddrof+0x30>
  48c1b8:	00000000 	nop
		break;
	case AF_INET6:
		return (struct sockaddr *)&src->u.v6;
		break;
	default:
		return NULL;	/* "can't happen" */
  48c1bc:	00001021 	move	v0,zero
		break;
	}
}
  48c1c0:	03e00008 	jr	ra
  48c1c4:	00000000 	nop

0048c1c8 <sockaddrlenof>:
  48c1c8:	3c1c0fb8 	lui	gp,0xfb8
  48c1cc:	279c07a8 	addiu	gp,gp,1960
  48c1d0:	0399e021 	addu	gp,gp,t9

/*
 - sockaddrlenof - get length of the sockaddr hiding inside an ip_address
 */
size_t				/* 0 for error */
sockaddrlenof(src)
const ip_address *src;
{
	switch (src->u.v4.sin_family) {
  48c1d4:	94840000 	lhu	a0,0(a0)
  48c1d8:	00000000 	nop
	case AF_INET:
		return sizeof(src->u.v4);
  48c1dc:	24050002 	li	a1,2
  48c1e0:	10850005 	beq	a0,a1,48c1f8 <sockaddrlenof+0x30>
  48c1e4:	24020010 	li	v0,16
  48c1e8:	2405000a 	li	a1,10
  48c1ec:	10850002 	beq	a0,a1,48c1f8 <sockaddrlenof+0x30>
  48c1f0:	2402001c 	li	v0,28
		break;
	case AF_INET6:
		return sizeof(src->u.v6);
		break;
	default:
		return 0;
  48c1f4:	00001021 	move	v0,zero
		break;
	}
}
  48c1f8:	03e00008 	jr	ra
  48c1fc:	00000000 	nop

0048c200 <rangetosubnet>:
  48c200:	3c1c0fb8 	lui	gp,0xfb8
  48c204:	279c0770 	addiu	gp,gp,1904
  48c208:	0399e021 	addu	gp,gp,t9
  48c20c:	27bdffc8 	addiu	sp,sp,-56
  48c210:	afbc0010 	sw	gp,16(sp)
  48c214:	afb10024 	sw	s1,36(sp)
  48c218:	00a08821 	move	s1,a1
  48c21c:	afb3002c 	sw	s3,44(sp)
  48c220:	afb20028 	sw	s2,40(sp)
  48c224:	afb00020 	sw	s0,32(sp)
  48c228:	afbf0034 	sw	ra,52(sp)
  48c22c:	afbc0030 	sw	gp,48(sp)
  48c230:	00c09821 	move	s3,a2
  48c234:	00809021 	move	s2,a0
	int i;
	int nnet;
	unsigned m;

	if (addrtypeof(from) != addrtypeof(to))
  48c238:	8f9985d4 	lw	t9,-31276(gp)
  48c23c:	00000000 	nop
  48c240:	0320f809 	jalr	t9
  48c244:	00000000 	nop
  48c248:	8fbc0010 	lw	gp,16(sp)
  48c24c:	02202021 	move	a0,s1
  48c250:	00408021 	move	s0,v0
  48c254:	8f9985d4 	lw	t9,-31276(gp)
  48c258:	00000000 	nop
  48c25c:	0320f809 	jalr	t9
  48c260:	00000000 	nop
  48c264:	8fbc0010 	lw	gp,16(sp)
  48c268:	00402021 	move	a0,v0
  48c26c:	8f82804c 	lw	v0,-32692(gp)
  48c270:	00000000 	nop
  48c274:	2442c580 	addiu	v0,v0,-14976
  48c278:	12040008 	beq	s0,a0,48c29c <rangetosubnet+0x9c>
  48c27c:	02402021 	move	a0,s2
		return "mismatched address types";
	n = addrbytesptr(from, &fp);
	if (n == 0)
		return "unknown address type";
	n2 = addrbytesptr(to, &tp);
	if (n != n2)
		return "internal size mismatch in rangetosubnet";

	f = fp;
	t = tp;
	nnet = 0;
	for (i = n; i > 0 && *f == *t; i--, f++, t++)
		nnet += 8;
	if (i > 0 && !(*f == 0x00 && *t == 0xff)) {	/* mid-byte bdry. */
		fb = *f++;
		tb = *t++;
		i--;
		m = 0x80;
		while ((fb&m) == (tb&m)) {
			fb &= ~m;
			tb |= m;
			m >>= 1;
			nnet++;
		}
		if (fb != 0x00 || tb != 0xff)
			return "not a valid subnet";
	}
	for (; i > 0 && *f == 0x00 && *t == 0xff; i--, f++, t++)
		continue;

	if (i != 0)
		return "invalid subnet";

	return initsubnet(from, nnet, 'x', dst);
}
  48c280:	8fbf0034 	lw	ra,52(sp)
  48c284:	8fb3002c 	lw	s3,44(sp)
  48c288:	8fb20028 	lw	s2,40(sp)
  48c28c:	8fb10024 	lw	s1,36(sp)
  48c290:	8fb00020 	lw	s0,32(sp)
  48c294:	03e00008 	jr	ra
  48c298:	27bd0038 	addiu	sp,sp,56
  48c29c:	27a50018 	addiu	a1,sp,24
  48c2a0:	8f998768 	lw	t9,-30872(gp)
  48c2a4:	00000000 	nop
  48c2a8:	0320f809 	jalr	t9
  48c2ac:	00000000 	nop
  48c2b0:	8fbc0010 	lw	gp,16(sp)
  48c2b4:	00408021 	move	s0,v0
  48c2b8:	8f82804c 	lw	v0,-32692(gp)
  48c2bc:	00000000 	nop
  48c2c0:	2442c59c 	addiu	v0,v0,-14948
  48c2c4:	1200ffee 	beqz	s0,48c280 <rangetosubnet+0x80>
  48c2c8:	02202021 	move	a0,s1
  48c2cc:	27a5001c 	addiu	a1,sp,28
  48c2d0:	8f998768 	lw	t9,-30872(gp)
  48c2d4:	00000000 	nop
  48c2d8:	0320f809 	jalr	t9
  48c2dc:	00000000 	nop
  48c2e0:	8fbc0010 	lw	gp,16(sp)
  48c2e4:	00402021 	move	a0,v0
  48c2e8:	8f82804c 	lw	v0,-32692(gp)
  48c2ec:	00000000 	nop
  48c2f0:	2442c5b4 	addiu	v0,v0,-14924
  48c2f4:	1604ffe2 	bne	s0,a0,48c280 <rangetosubnet+0x80>
  48c2f8:	02004821 	move	t1,s0
  48c2fc:	8faa0018 	lw	t2,24(sp)
  48c300:	00000000 	nop
  48c304:	8fa8001c 	lw	t0,28(sp)
  48c308:	00000000 	nop
  48c30c:	19200024 	blez	t1,48c3a0 <rangetosubnet+0x1a0>
  48c310:	00002821 	move	a1,zero
  48c314:	91420000 	lbu	v0,0(t2)
  48c318:	91030000 	lbu	v1,0(t0)
  48c31c:	00000000 	nop
  48c320:	1043004d 	beq	v0,v1,48c458 <rangetosubnet+0x258>
  48c324:	00000000 	nop
  48c328:	1920001d 	blez	t1,48c3a0 <rangetosubnet+0x1a0>
  48c32c:	00000000 	nop
  48c330:	10400045 	beqz	v0,48c448 <rangetosubnet+0x248>
  48c334:	240600ff 	li	a2,255
  48c338:	91460000 	lbu	a2,0(t2)
  48c33c:	00000000 	nop
  48c340:	91070000 	lbu	a3,0(t0)
  48c344:	00000000 	nop
  48c348:	30c20080 	andi	v0,a2,0x80
  48c34c:	30eb0080 	andi	t3,a3,0x80
  48c350:	254a0001 	addiu	t2,t2,1
  48c354:	25080001 	addiu	t0,t0,1
  48c358:	2529ffff 	addiu	t1,t1,-1
  48c35c:	104b0030 	beq	v0,t3,48c420 <rangetosubnet+0x220>
  48c360:	24040080 	li	a0,128
  48c364:	10c00006 	beqz	a2,48c380 <rangetosubnet+0x180>
  48c368:	240e00ff 	li	t6,255
  48c36c:	8f82804c 	lw	v0,-32692(gp)
  48c370:	00000000 	nop
  48c374:	2442c5dc 	addiu	v0,v0,-14884
  48c378:	1000ffc1 	b	48c280 <rangetosubnet+0x80>
  48c37c:	00000000 	nop
  48c380:	14eefffa 	bne	a3,t6,48c36c <rangetosubnet+0x16c>
  48c384:	00000000 	nop
  48c388:	19200005 	blez	t1,48c3a0 <rangetosubnet+0x1a0>
  48c38c:	00000000 	nop
  48c390:	91470000 	lbu	a3,0(t2)
  48c394:	00000000 	nop
  48c398:	10e0000f 	beqz	a3,48c3d8 <rangetosubnet+0x1d8>
  48c39c:	240f00ff 	li	t7,255
  48c3a0:	8f82804c 	lw	v0,-32692(gp)
  48c3a4:	00000000 	nop
  48c3a8:	2442c5f0 	addiu	v0,v0,-14864
  48c3ac:	1520ffb4 	bnez	t1,48c280 <rangetosubnet+0x80>
  48c3b0:	02402021 	move	a0,s2
  48c3b4:	02603821 	move	a3,s3
  48c3b8:	24060078 	li	a2,120
  48c3bc:	8f998844 	lw	t9,-30652(gp)
  48c3c0:	00000000 	nop
  48c3c4:	0320f809 	jalr	t9
  48c3c8:	00000000 	nop
  48c3cc:	8fbc0010 	lw	gp,16(sp)
  48c3d0:	1000ffab 	b	48c280 <rangetosubnet+0x80>
  48c3d4:	00000000 	nop
  48c3d8:	91100000 	lbu	s0,0(t0)
  48c3dc:	00000000 	nop
  48c3e0:	160fffef 	bne	s0,t7,48c3a0 <rangetosubnet+0x1a0>
  48c3e4:	240300ff 	li	v1,255
  48c3e8:	2529ffff 	addiu	t1,t1,-1
  48c3ec:	254a0001 	addiu	t2,t2,1
  48c3f0:	1920ffeb 	blez	t1,48c3a0 <rangetosubnet+0x1a0>
  48c3f4:	25080001 	addiu	t0,t0,1
  48c3f8:	91510000 	lbu	s1,0(t2)
  48c3fc:	00000000 	nop
  48c400:	1620ffe7 	bnez	s1,48c3a0 <rangetosubnet+0x1a0>
  48c404:	00000000 	nop
  48c408:	91180000 	lbu	t8,0(t0)
  48c40c:	00000000 	nop
  48c410:	1703ffe3 	bne	t8,v1,48c3a0 <rangetosubnet+0x1a0>
  48c414:	00000000 	nop
  48c418:	1000fff4 	b	48c3ec <rangetosubnet+0x1ec>
  48c41c:	2529ffff 	addiu	t1,t1,-1
  48c420:	00041827 	nor	v1,zero,a0
  48c424:	00e43825 	or	a3,a3,a0
  48c428:	00c33024 	and	a2,a2,v1
  48c42c:	00042042 	srl	a0,a0,0x1
  48c430:	00c46824 	and	t5,a2,a0
  48c434:	00e46024 	and	t4,a3,a0
  48c438:	15acffca 	bne	t5,t4,48c364 <rangetosubnet+0x164>
  48c43c:	24a50001 	addiu	a1,a1,1
  48c440:	1000fff8 	b	48c424 <rangetosubnet+0x224>
  48c444:	00041827 	nor	v1,zero,a0
  48c448:	1466ffbb 	bne	v1,a2,48c338 <rangetosubnet+0x138>
  48c44c:	00000000 	nop
  48c450:	1000ffcd 	b	48c388 <rangetosubnet+0x188>
  48c454:	00000000 	nop
  48c458:	2529ffff 	addiu	t1,t1,-1
  48c45c:	254a0001 	addiu	t2,t2,1
  48c460:	25080001 	addiu	t0,t0,1
  48c464:	1920ffce 	blez	t1,48c3a0 <rangetosubnet+0x1a0>
  48c468:	24a50008 	addiu	a1,a1,8
  48c46c:	91420000 	lbu	v0,0(t2)
  48c470:	91030000 	lbu	v1,0(t0)
  48c474:	00000000 	nop
  48c478:	1443ffab 	bne	v0,v1,48c328 <rangetosubnet+0x128>
  48c47c:	00000000 	nop
  48c480:	1000fff6 	b	48c45c <rangetosubnet+0x25c>
  48c484:	2529ffff 	addiu	t1,t1,-1
	...

0048c490 <sameaddr>:
  48c490:	3c1c0fb8 	lui	gp,0xfb8
  48c494:	279c04e0 	addiu	gp,gp,1248
  48c498:	0399e021 	addu	gp,gp,t9
  48c49c:	27bdffc0 	addiu	sp,sp,-64
  48c4a0:	afbc0010 	sw	gp,16(sp)
  48c4a4:	afb10024 	sw	s1,36(sp)
  48c4a8:	00a08821 	move	s1,a1
  48c4ac:	afb40030 	sw	s4,48(sp)
  48c4b0:	afb3002c 	sw	s3,44(sp)
  48c4b4:	afb20028 	sw	s2,40(sp)
  48c4b8:	afb00020 	sw	s0,32(sp)
  48c4bc:	afbf0038 	sw	ra,56(sp)
  48c4c0:	afbc0034 	sw	gp,52(sp)
  48c4c4:	00809021 	move	s2,a0
addrcmp(a, b)
const ip_address *a;
const ip_address *b;
{
	int at = addrtypeof(a);
  48c4c8:	8f9985d4 	lw	t9,-31276(gp)
  48c4cc:	00000000 	nop
  48c4d0:	0320f809 	jalr	t9
  48c4d4:	00000000 	nop
  48c4d8:	8fbc0010 	lw	gp,16(sp)
  48c4dc:	00000000 	nop
	int bt = addrtypeof(b);
  48c4e0:	02202021 	move	a0,s1
  48c4e4:	0040a021 	move	s4,v0
  48c4e8:	8f9985d4 	lw	t9,-31276(gp)
  48c4ec:	00000000 	nop
  48c4f0:	0320f809 	jalr	t9
  48c4f4:	00000000 	nop
  48c4f8:	8fbc0010 	lw	gp,16(sp)
  48c4fc:	00000000 	nop
	const unsigned char *ap;
	const unsigned char *bp;
	size_t as = addrbytesptr(a, &ap);
  48c500:	27a50018 	addiu	a1,sp,24
  48c504:	02402021 	move	a0,s2
  48c508:	00409821 	move	s3,v0
  48c50c:	8f998768 	lw	t9,-30872(gp)
  48c510:	00000000 	nop
  48c514:	0320f809 	jalr	t9
  48c518:	00000000 	nop
  48c51c:	8fbc0010 	lw	gp,16(sp)
  48c520:	00000000 	nop
	size_t bs = addrbytesptr(b, &bp);
  48c524:	27a5001c 	addiu	a1,sp,28
  48c528:	02202021 	move	a0,s1
  48c52c:	00409021 	move	s2,v0
  48c530:	8f998768 	lw	t9,-30872(gp)
  48c534:	00000000 	nop
  48c538:	0320f809 	jalr	t9
  48c53c:	00000000 	nop
  48c540:	8fbc0010 	lw	gp,16(sp)
  48c544:	00408021 	move	s0,v0
	size_t n = (as < bs) ? as : bs;		/* min(as, bs) */
  48c548:	0250882b 	sltu	s1,s2,s0
  48c54c:	12200002 	beqz	s1,48c558 <sameaddr+0xc8>
  48c550:	02003021 	move	a2,s0
  48c554:	02403021 	move	a2,s2
	int c = memcmp(ap, bp, n);
  48c558:	8fa40018 	lw	a0,24(sp)
  48c55c:	8fa5001c 	lw	a1,28(sp)
  48c560:	8f9985c8 	lw	t9,-31288(gp)
  48c564:	00000000 	nop
  48c568:	0320f809 	jalr	t9
  48c56c:	00000000 	nop
  48c570:	8fbc0010 	lw	gp,16(sp)
  48c574:	00000000 	nop

	if (c != 0)		/* bytes differ */
  48c578:	1040000e 	beqz	v0,48c5b4 <sameaddr+0x124>
  48c57c:	00000000 	nop
		return (c < 0) ? -1 : 1;
  48c580:	04400002 	bltz	v0,48c58c <sameaddr+0xfc>
  48c584:	2403ffff 	li	v1,-1
  48c588:	24030001 	li	v1,1
  48c58c:	00601021 	move	v0,v1
	if (as != bs)		/* comparison incomplete:  lexical order */
		return (as < bs) ? -1 : 1;
	if (at != bt)		/* bytes same but not same type:  break tie */
		return (at < bt) ? -1 : 1;
	return 0;
}

/*
 - sameaddr - are two addresses the same?
 */
int
sameaddr(a, b)
const ip_address *a;
const ip_address *b;
{
	return (addrcmp(a, b) == 0) ? 1 : 0;
  48c590:	8fbf0038 	lw	ra,56(sp)
  48c594:	8fb40030 	lw	s4,48(sp)
  48c598:	8fb3002c 	lw	s3,44(sp)
  48c59c:	8fb20028 	lw	s2,40(sp)
  48c5a0:	8fb10024 	lw	s1,36(sp)
  48c5a4:	8fb00020 	lw	s0,32(sp)
  48c5a8:	2c420001 	sltiu	v0,v0,1
  48c5ac:	03e00008 	jr	ra
  48c5b0:	27bd0040 	addiu	sp,sp,64
  48c5b4:	12500005 	beq	s2,s0,48c5cc <sameaddr+0x13c>
  48c5b8:	00000000 	nop
  48c5bc:	1620fff4 	bnez	s1,48c590 <sameaddr+0x100>
  48c5c0:	2402ffff 	li	v0,-1
  48c5c4:	1000fff2 	b	48c590 <sameaddr+0x100>
  48c5c8:	24020001 	li	v0,1
  48c5cc:	1293fff0 	beq	s4,s3,48c590 <sameaddr+0x100>
  48c5d0:	00001021 	move	v0,zero
  48c5d4:	0293202a 	slt	a0,s4,s3
  48c5d8:	1480ffec 	bnez	a0,48c58c <sameaddr+0xfc>
  48c5dc:	2403ffff 	li	v1,-1
  48c5e0:	1000ffea 	b	48c58c <sameaddr+0xfc>
  48c5e4:	24030001 	li	v1,1

0048c5e8 <addrcmp>:
  48c5e8:	3c1c0fb8 	lui	gp,0xfb8
  48c5ec:	279c0388 	addiu	gp,gp,904
  48c5f0:	0399e021 	addu	gp,gp,t9
  48c5f4:	27bdffc0 	addiu	sp,sp,-64
  48c5f8:	afbc0010 	sw	gp,16(sp)
  48c5fc:	afb10024 	sw	s1,36(sp)
  48c600:	00a08821 	move	s1,a1
  48c604:	afb40030 	sw	s4,48(sp)
  48c608:	afb3002c 	sw	s3,44(sp)
  48c60c:	afb20028 	sw	s2,40(sp)
  48c610:	afb00020 	sw	s0,32(sp)
  48c614:	afbf0038 	sw	ra,56(sp)
  48c618:	afbc0034 	sw	gp,52(sp)
  48c61c:	00809021 	move	s2,a0
  48c620:	8f9985d4 	lw	t9,-31276(gp)
  48c624:	00000000 	nop
  48c628:	0320f809 	jalr	t9
  48c62c:	00000000 	nop
  48c630:	8fbc0010 	lw	gp,16(sp)
  48c634:	00000000 	nop
  48c638:	02202021 	move	a0,s1
  48c63c:	0040a021 	move	s4,v0
  48c640:	8f9985d4 	lw	t9,-31276(gp)
  48c644:	00000000 	nop
  48c648:	0320f809 	jalr	t9
  48c64c:	00000000 	nop
  48c650:	8fbc0010 	lw	gp,16(sp)
  48c654:	00000000 	nop
  48c658:	27a50018 	addiu	a1,sp,24
  48c65c:	02402021 	move	a0,s2
  48c660:	00409821 	move	s3,v0
  48c664:	8f998768 	lw	t9,-30872(gp)
  48c668:	00000000 	nop
  48c66c:	0320f809 	jalr	t9
  48c670:	00000000 	nop
  48c674:	8fbc0010 	lw	gp,16(sp)
  48c678:	00000000 	nop
  48c67c:	27a5001c 	addiu	a1,sp,28
  48c680:	02202021 	move	a0,s1
  48c684:	00409021 	move	s2,v0
  48c688:	8f998768 	lw	t9,-30872(gp)
  48c68c:	00000000 	nop
  48c690:	0320f809 	jalr	t9
  48c694:	00000000 	nop
  48c698:	8fbc0010 	lw	gp,16(sp)
  48c69c:	00408021 	move	s0,v0
  48c6a0:	0250882b 	sltu	s1,s2,s0
  48c6a4:	12200002 	beqz	s1,48c6b0 <addrcmp+0xc8>
  48c6a8:	02003021 	move	a2,s0
  48c6ac:	02403021 	move	a2,s2
  48c6b0:	8fa40018 	lw	a0,24(sp)
  48c6b4:	8fa5001c 	lw	a1,28(sp)
  48c6b8:	8f9985c8 	lw	t9,-31288(gp)
  48c6bc:	00000000 	nop
  48c6c0:	0320f809 	jalr	t9
  48c6c4:	00000000 	nop
  48c6c8:	8fbc0010 	lw	gp,16(sp)
  48c6cc:	00000000 	nop
  48c6d0:	1040000d 	beqz	v0,48c708 <addrcmp+0x120>
  48c6d4:	00000000 	nop
  48c6d8:	04400002 	bltz	v0,48c6e4 <addrcmp+0xfc>
  48c6dc:	2403ffff 	li	v1,-1
  48c6e0:	24030001 	li	v1,1
  48c6e4:	00601021 	move	v0,v1
  48c6e8:	8fbf0038 	lw	ra,56(sp)
  48c6ec:	8fb40030 	lw	s4,48(sp)
  48c6f0:	8fb3002c 	lw	s3,44(sp)
  48c6f4:	8fb20028 	lw	s2,40(sp)
  48c6f8:	8fb10024 	lw	s1,36(sp)
  48c6fc:	8fb00020 	lw	s0,32(sp)
  48c700:	03e00008 	jr	ra
  48c704:	27bd0040 	addiu	sp,sp,64
  48c708:	12500005 	beq	s2,s0,48c720 <addrcmp+0x138>
  48c70c:	00000000 	nop
  48c710:	1620fff5 	bnez	s1,48c6e8 <addrcmp+0x100>
  48c714:	2402ffff 	li	v0,-1
  48c718:	1000fff3 	b	48c6e8 <addrcmp+0x100>
  48c71c:	24020001 	li	v0,1
  48c720:	1293fff1 	beq	s4,s3,48c6e8 <addrcmp+0x100>
  48c724:	00001021 	move	v0,zero
  48c728:	0293202a 	slt	a0,s4,s3
  48c72c:	1480ffed 	bnez	a0,48c6e4 <addrcmp+0xfc>
  48c730:	2403ffff 	li	v1,-1
  48c734:	1000ffeb 	b	48c6e4 <addrcmp+0xfc>
  48c738:	24030001 	li	v1,1

0048c73c <samesubnet>:
  48c73c:	3c1c0fb8 	lui	gp,0xfb8
  48c740:	279c0234 	addiu	gp,gp,564
  48c744:	0399e021 	addu	gp,gp,t9
  48c748:	27bdffb8 	addiu	sp,sp,-72
  48c74c:	afbc0010 	sw	gp,16(sp)
  48c750:	afb50034 	sw	s5,52(sp)
  48c754:	00a0a821 	move	s5,a1
  48c758:	afb60038 	sw	s6,56(sp)
  48c75c:	afb40030 	sw	s4,48(sp)
  48c760:	afb3002c 	sw	s3,44(sp)
  48c764:	afb20028 	sw	s2,40(sp)
  48c768:	afb10024 	sw	s1,36(sp)
  48c76c:	afb00020 	sw	s0,32(sp)
  48c770:	afbf0040 	sw	ra,64(sp)
  48c774:	afbc003c 	sw	gp,60(sp)
  48c778:	0080b021 	move	s6,a0
  48c77c:	8f9985d4 	lw	t9,-31276(gp)
  48c780:	00000000 	nop
  48c784:	0320f809 	jalr	t9
  48c788:	00000000 	nop
  48c78c:	8fbc0010 	lw	gp,16(sp)
  48c790:	00000000 	nop
  48c794:	02a02021 	move	a0,s5
  48c798:	0040a021 	move	s4,v0
  48c79c:	8f9985d4 	lw	t9,-31276(gp)
  48c7a0:	00000000 	nop
  48c7a4:	0320f809 	jalr	t9
  48c7a8:	00000000 	nop
  48c7ac:	8fbc0010 	lw	gp,16(sp)
  48c7b0:	00000000 	nop
  48c7b4:	27a50018 	addiu	a1,sp,24
  48c7b8:	02c02021 	move	a0,s6
  48c7bc:	00409821 	move	s3,v0
  48c7c0:	8f998768 	lw	t9,-30872(gp)
  48c7c4:	00000000 	nop
  48c7c8:	0320f809 	jalr	t9
  48c7cc:	00000000 	nop
  48c7d0:	8fbc0010 	lw	gp,16(sp)
  48c7d4:	00000000 	nop
  48c7d8:	27a5001c 	addiu	a1,sp,28
  48c7dc:	02a02021 	move	a0,s5
  48c7e0:	00408821 	move	s1,v0
  48c7e4:	8f998768 	lw	t9,-30872(gp)
  48c7e8:	00000000 	nop
  48c7ec:	0320f809 	jalr	t9
  48c7f0:	00000000 	nop
  48c7f4:	8fbc0010 	lw	gp,16(sp)
  48c7f8:	00408021 	move	s0,v0
  48c7fc:	0230902b 	sltu	s2,s1,s0
  48c800:	12400002 	beqz	s2,48c80c <samesubnet+0xd0>
  48c804:	02003021 	move	a2,s0
  48c808:	02203021 	move	a2,s1
  48c80c:	8fa40018 	lw	a0,24(sp)
  48c810:	8fa5001c 	lw	a1,28(sp)
  48c814:	8f9985c8 	lw	t9,-31288(gp)
  48c818:	00000000 	nop
  48c81c:	0320f809 	jalr	t9
  48c820:	00000000 	nop
  48c824:	8fbc0010 	lw	gp,16(sp)
  48c828:	00000000 	nop
  48c82c:	10400015 	beqz	v0,48c884 <samesubnet+0x148>
  48c830:	00000000 	nop
  48c834:	04400002 	bltz	v0,48c840 <samesubnet+0x104>
  48c838:	2403ffff 	li	v1,-1
  48c83c:	24030001 	li	v1,1
}

/*
 - samesubnet - are two subnets the same?
 */
int
samesubnet(a, b)
const ip_subnet *a;
const ip_subnet *b;
{
	if (!sameaddr(&a->addr, &b->addr))	/* also does type check */
  48c840:	14600006 	bnez	v1,48c85c <samesubnet+0x120>
  48c844:	00001021 	move	v0,zero
		return 0;
	if (a->maskbits != b->maskbits)
  48c848:	8ea2001c 	lw	v0,28(s5)
  48c84c:	8ec5001c 	lw	a1,28(s6)
  48c850:	00000000 	nop
  48c854:	00a22026 	xor	a0,a1,v0
  48c858:	2c820001 	sltiu	v0,a0,1
		return 0;
	return 1;
}
  48c85c:	8fbf0040 	lw	ra,64(sp)
  48c860:	8fb60038 	lw	s6,56(sp)
  48c864:	8fb50034 	lw	s5,52(sp)
  48c868:	8fb40030 	lw	s4,48(sp)
  48c86c:	8fb3002c 	lw	s3,44(sp)
  48c870:	8fb20028 	lw	s2,40(sp)
  48c874:	8fb10024 	lw	s1,36(sp)
  48c878:	8fb00020 	lw	s0,32(sp)
  48c87c:	03e00008 	jr	ra
  48c880:	27bd0048 	addiu	sp,sp,72
  48c884:	12300007 	beq	s1,s0,48c8a4 <samesubnet+0x168>
  48c888:	00000000 	nop
  48c88c:	12400003 	beqz	s2,48c89c <samesubnet+0x160>
  48c890:	2402ffff 	li	v0,-1
  48c894:	1000ffea 	b	48c840 <samesubnet+0x104>
  48c898:	00401821 	move	v1,v0
  48c89c:	1000fffd 	b	48c894 <samesubnet+0x158>
  48c8a0:	24020001 	li	v0,1
  48c8a4:	1293ffe6 	beq	s4,s3,48c840 <samesubnet+0x104>
  48c8a8:	00001821 	move	v1,zero
  48c8ac:	0293202a 	slt	a0,s4,s3
  48c8b0:	1480ffe3 	bnez	a0,48c840 <samesubnet+0x104>
  48c8b4:	2403ffff 	li	v1,-1
  48c8b8:	1000ffe1 	b	48c840 <samesubnet+0x104>
  48c8bc:	24030001 	li	v1,1

0048c8c0 <addrinsubnet>:
  48c8c0:	3c1c0fb8 	lui	gp,0xfb8
  48c8c4:	279c00b0 	addiu	gp,gp,176
  48c8c8:	0399e021 	addu	gp,gp,t9
  48c8cc:	27bdffd0 	addiu	sp,sp,-48
  48c8d0:	afbc0010 	sw	gp,16(sp)
  48c8d4:	afb00018 	sw	s0,24(sp)
  48c8d8:	00a08021 	move	s0,a1
  48c8dc:	afb20020 	sw	s2,32(sp)
  48c8e0:	afb1001c 	sw	s1,28(sp)
  48c8e4:	afbf0028 	sw	ra,40(sp)
  48c8e8:	00808821 	move	s1,a0
  48c8ec:	afbc0024 	sw	gp,36(sp)

/*
 - subnetishost - is a subnet in fact a single host?
 */
int
subnetishost(a)
const ip_subnet *a;
{
	return (a->maskbits == addrlenof(&a->addr)*8) ? 1 : 0;
}

/*
 - samesaid - are two SA IDs the same?
 */
int
samesaid(a, b)
const ip_said *a;
const ip_said *b;
{
	if (a->spi != b->spi)	/* test first, most likely to be different */
		return 0;
	if (!sameaddr(&a->dst, &b->dst))
		return 0;
	if (a->proto != b->proto)
		return 0;
	return 1;
}

/*
 - sameaddrtype - do two addresses have the same type?
 */
int
sameaddrtype(a, b)
const ip_address *a;
const ip_address *b;
{
	return (addrtypeof(a) == addrtypeof(b)) ? 1 : 0;
}

/*
 - samesubnettype - do two subnets have the same type?
 */
int
samesubnettype(a, b)
const ip_subnet *a;
const ip_subnet *b;
{
	return (subnettypeof(a) == subnettypeof(b)) ? 1 : 0;
}

/*
 - addrinsubnet - is this address in this subnet?
 */
int
addrinsubnet(a, s)
const ip_address *a;
const ip_subnet *s;
{
	if (addrtypeof(a) != subnettypeof(s))
  48c8f0:	8f9985d4 	lw	t9,-31276(gp)
  48c8f4:	00000000 	nop
  48c8f8:	0320f809 	jalr	t9
  48c8fc:	00000000 	nop
  48c900:	8fbc0010 	lw	gp,16(sp)
  48c904:	02002021 	move	a0,s0
  48c908:	00409021 	move	s2,v0
  48c90c:	8f998248 	lw	t9,-32184(gp)
  48c910:	00000000 	nop
  48c914:	0320f809 	jalr	t9
  48c918:	00000000 	nop
  48c91c:	8fbc0010 	lw	gp,16(sp)
  48c920:	00403021 	move	a2,v0
  48c924:	02002821 	move	a1,s0
  48c928:	02202021 	move	a0,s1
  48c92c:	12460007 	beq	s2,a2,48c94c <addrinsubnet+0x8c>
  48c930:	00001021 	move	v0,zero
		return 0;
	if (!samenbits(a, &s->addr, s->maskbits))
		return 0;
	return 1;
}
  48c934:	8fbf0028 	lw	ra,40(sp)
  48c938:	8fb20020 	lw	s2,32(sp)
  48c93c:	8fb1001c 	lw	s1,28(sp)
  48c940:	8fb00018 	lw	s0,24(sp)
  48c944:	03e00008 	jr	ra
  48c948:	27bd0030 	addiu	sp,sp,48
  48c94c:	8ca6001c 	lw	a2,28(a1)
  48c950:	8f998050 	lw	t9,-32688(gp)
  48c954:	00000000 	nop
  48c958:	2739cd20 	addiu	t9,t9,-13024
  48c95c:	00000000 	nop
  48c960:	0320f809 	jalr	t9
  48c964:	00000000 	nop
  48c968:	8fbc0010 	lw	gp,16(sp)
  48c96c:	1000fff1 	b	48c934 <addrinsubnet+0x74>
  48c970:	0002102b 	sltu	v0,zero,v0

0048c974 <subnetinsubnet>:
  48c974:	3c1c0fb8 	lui	gp,0xfb8
  48c978:	279cfffc 	addiu	gp,gp,-4
  48c97c:	0399e021 	addu	gp,gp,t9
  48c980:	27bdffd0 	addiu	sp,sp,-48
  48c984:	afbc0010 	sw	gp,16(sp)
  48c988:	afb1001c 	sw	s1,28(sp)
  48c98c:	00a08821 	move	s1,a1
  48c990:	afb20020 	sw	s2,32(sp)
  48c994:	afb00018 	sw	s0,24(sp)
  48c998:	afbf0028 	sw	ra,40(sp)
  48c99c:	afbc0024 	sw	gp,36(sp)
  48c9a0:	00809021 	move	s2,a0

/*
 - subnetinsubnet - is one subnet within another?
 */
int
subnetinsubnet(a, b)
const ip_subnet *a;
const ip_subnet *b;
{
	if (subnettypeof(a) != subnettypeof(b))
  48c9a4:	8f998248 	lw	t9,-32184(gp)
  48c9a8:	00000000 	nop
  48c9ac:	0320f809 	jalr	t9
  48c9b0:	00000000 	nop
  48c9b4:	8fbc0010 	lw	gp,16(sp)
  48c9b8:	02202021 	move	a0,s1
  48c9bc:	00408021 	move	s0,v0
  48c9c0:	8f998248 	lw	t9,-32184(gp)
  48c9c4:	00000000 	nop
  48c9c8:	0320f809 	jalr	t9
  48c9cc:	00000000 	nop
  48c9d0:	8fbc0010 	lw	gp,16(sp)
  48c9d4:	00402021 	move	a0,v0
  48c9d8:	12040007 	beq	s0,a0,48c9f8 <subnetinsubnet+0x84>
  48c9dc:	00001021 	move	v0,zero
		return 0;
	if (a->maskbits < b->maskbits)	/* a is bigger than b */
		return 0;
	if (!samenbits(&a->addr, &b->addr, b->maskbits))
		return 0;
	return 1;
}
  48c9e0:	8fbf0028 	lw	ra,40(sp)
  48c9e4:	8fb20020 	lw	s2,32(sp)
  48c9e8:	8fb1001c 	lw	s1,28(sp)
  48c9ec:	8fb00018 	lw	s0,24(sp)
  48c9f0:	03e00008 	jr	ra
  48c9f4:	27bd0030 	addiu	sp,sp,48
  48c9f8:	8e23001c 	lw	v1,28(s1)
  48c9fc:	8e48001c 	lw	t0,28(s2)
  48ca00:	02402021 	move	a0,s2
  48ca04:	0103382a 	slt	a3,t0,v1
  48ca08:	02202821 	move	a1,s1
  48ca0c:	14e0fff4 	bnez	a3,48c9e0 <subnetinsubnet+0x6c>
  48ca10:	00603021 	move	a2,v1
  48ca14:	8f998050 	lw	t9,-32688(gp)
  48ca18:	00000000 	nop
  48ca1c:	2739cd20 	addiu	t9,t9,-13024
  48ca20:	00000000 	nop
  48ca24:	0320f809 	jalr	t9
  48ca28:	00000000 	nop
  48ca2c:	8fbc0010 	lw	gp,16(sp)
  48ca30:	1000ffeb 	b	48c9e0 <subnetinsubnet+0x6c>
  48ca34:	0002102b 	sltu	v0,zero,v0

0048ca38 <subnetishost>:
  48ca38:	3c1c0fb8 	lui	gp,0xfb8
  48ca3c:	279cff38 	addiu	gp,gp,-200
  48ca40:	0399e021 	addu	gp,gp,t9
  48ca44:	27bdffd8 	addiu	sp,sp,-40
  48ca48:	afbc0010 	sw	gp,16(sp)
  48ca4c:	afbf0020 	sw	ra,32(sp)
  48ca50:	afb00018 	sw	s0,24(sp)
  48ca54:	afbc001c 	sw	gp,28(sp)
  48ca58:	00808021 	move	s0,a0
  48ca5c:	8f998568 	lw	t9,-31384(gp)
  48ca60:	00000000 	nop
  48ca64:	0320f809 	jalr	t9
  48ca68:	00000000 	nop
  48ca6c:	8fbc0010 	lw	gp,16(sp)
  48ca70:	00402021 	move	a0,v0
  48ca74:	8e05001c 	lw	a1,28(s0)
  48ca78:	000410c0 	sll	v0,a0,0x3
  48ca7c:	00a22026 	xor	a0,a1,v0
  48ca80:	8fbf0020 	lw	ra,32(sp)
  48ca84:	8fb00018 	lw	s0,24(sp)
  48ca88:	2c820001 	sltiu	v0,a0,1
  48ca8c:	03e00008 	jr	ra
  48ca90:	27bd0028 	addiu	sp,sp,40

0048ca94 <samesaid>:
  48ca94:	3c1c0fb8 	lui	gp,0xfb8
  48ca98:	279cfedc 	addiu	gp,gp,-292
  48ca9c:	0399e021 	addu	gp,gp,t9
  48caa0:	27bdffb8 	addiu	sp,sp,-72
  48caa4:	afbc0010 	sw	gp,16(sp)
  48caa8:	afb60038 	sw	s6,56(sp)
  48caac:	afb50034 	sw	s5,52(sp)
  48cab0:	afbf0040 	sw	ra,64(sp)
  48cab4:	afbc003c 	sw	gp,60(sp)
  48cab8:	afb40030 	sw	s4,48(sp)
  48cabc:	afb3002c 	sw	s3,44(sp)
  48cac0:	afb20028 	sw	s2,40(sp)
  48cac4:	afb10024 	sw	s1,36(sp)
  48cac8:	afb00020 	sw	s0,32(sp)
  48cacc:	00a0a821 	move	s5,a1
  48cad0:	0080b021 	move	s6,a0
  48cad4:	8ec3001c 	lw	v1,28(s6)
  48cad8:	8ea6001c 	lw	a2,28(s5)
  48cadc:	00000000 	nop
  48cae0:	1066000b 	beq	v1,a2,48cb10 <samesaid+0x7c>
  48cae4:	00001021 	move	v0,zero
  48cae8:	8fbf0040 	lw	ra,64(sp)
  48caec:	8fb60038 	lw	s6,56(sp)
  48caf0:	8fb50034 	lw	s5,52(sp)
  48caf4:	8fb40030 	lw	s4,48(sp)
  48caf8:	8fb3002c 	lw	s3,44(sp)
  48cafc:	8fb20028 	lw	s2,40(sp)
  48cb00:	8fb10024 	lw	s1,36(sp)
  48cb04:	8fb00020 	lw	s0,32(sp)
  48cb08:	03e00008 	jr	ra
  48cb0c:	27bd0048 	addiu	sp,sp,72
  48cb10:	8f9985d4 	lw	t9,-31276(gp)
  48cb14:	00000000 	nop
  48cb18:	0320f809 	jalr	t9
  48cb1c:	00000000 	nop
  48cb20:	8fbc0010 	lw	gp,16(sp)
  48cb24:	00000000 	nop
  48cb28:	02a02021 	move	a0,s5
  48cb2c:	0040a021 	move	s4,v0
  48cb30:	8f9985d4 	lw	t9,-31276(gp)
  48cb34:	00000000 	nop
  48cb38:	0320f809 	jalr	t9
  48cb3c:	00000000 	nop
  48cb40:	8fbc0010 	lw	gp,16(sp)
  48cb44:	00000000 	nop
  48cb48:	27a50018 	addiu	a1,sp,24
  48cb4c:	02c02021 	move	a0,s6
  48cb50:	00409821 	move	s3,v0
  48cb54:	8f998768 	lw	t9,-30872(gp)
  48cb58:	00000000 	nop
  48cb5c:	0320f809 	jalr	t9
  48cb60:	00000000 	nop
  48cb64:	8fbc0010 	lw	gp,16(sp)
  48cb68:	00000000 	nop
  48cb6c:	27a5001c 	addiu	a1,sp,28
  48cb70:	02a02021 	move	a0,s5
  48cb74:	00408821 	move	s1,v0
  48cb78:	8f998768 	lw	t9,-30872(gp)
  48cb7c:	00000000 	nop
  48cb80:	0320f809 	jalr	t9
  48cb84:	00000000 	nop
  48cb88:	8fbc0010 	lw	gp,16(sp)
  48cb8c:	00408021 	move	s0,v0
  48cb90:	0230902b 	sltu	s2,s1,s0
  48cb94:	12400002 	beqz	s2,48cba0 <samesaid+0x10c>
  48cb98:	02003021 	move	a2,s0
  48cb9c:	02203021 	move	a2,s1
  48cba0:	8fa40018 	lw	a0,24(sp)
  48cba4:	8fa5001c 	lw	a1,28(sp)
  48cba8:	8f9985c8 	lw	t9,-31288(gp)
  48cbac:	00000000 	nop
  48cbb0:	0320f809 	jalr	t9
  48cbb4:	00000000 	nop
  48cbb8:	8fbc0010 	lw	gp,16(sp)
  48cbbc:	00000000 	nop
  48cbc0:	1040000c 	beqz	v0,48cbf4 <samesaid+0x160>
  48cbc4:	00000000 	nop
  48cbc8:	04400002 	bltz	v0,48cbd4 <samesaid+0x140>
  48cbcc:	2403ffff 	li	v1,-1
  48cbd0:	24030001 	li	v1,1
  48cbd4:	1460ffc4 	bnez	v1,48cae8 <samesaid+0x54>
  48cbd8:	00001021 	move	v0,zero
  48cbdc:	8ea20020 	lw	v0,32(s5)
  48cbe0:	8ec60020 	lw	a2,32(s6)
  48cbe4:	00000000 	nop
  48cbe8:	00c22826 	xor	a1,a2,v0
  48cbec:	1000ffbe 	b	48cae8 <samesaid+0x54>
  48cbf0:	2ca20001 	sltiu	v0,a1,1
  48cbf4:	12300007 	beq	s1,s0,48cc14 <samesaid+0x180>
  48cbf8:	00000000 	nop
  48cbfc:	12400003 	beqz	s2,48cc0c <samesaid+0x178>
  48cc00:	2402ffff 	li	v0,-1
  48cc04:	1000fff3 	b	48cbd4 <samesaid+0x140>
  48cc08:	00401821 	move	v1,v0
  48cc0c:	1000fffd 	b	48cc04 <samesaid+0x170>
  48cc10:	24020001 	li	v0,1
  48cc14:	1293ffef 	beq	s4,s3,48cbd4 <samesaid+0x140>
  48cc18:	00001821 	move	v1,zero
  48cc1c:	0293202a 	slt	a0,s4,s3
  48cc20:	1480ffec 	bnez	a0,48cbd4 <samesaid+0x140>
  48cc24:	2403ffff 	li	v1,-1
  48cc28:	1000ffea 	b	48cbd4 <samesaid+0x140>
  48cc2c:	24030001 	li	v1,1

0048cc30 <sameaddrtype>:
  48cc30:	3c1c0fb8 	lui	gp,0xfb8
  48cc34:	279cfd40 	addiu	gp,gp,-704
  48cc38:	0399e021 	addu	gp,gp,t9
  48cc3c:	27bdffd8 	addiu	sp,sp,-40
  48cc40:	afbc0010 	sw	gp,16(sp)
  48cc44:	afb00018 	sw	s0,24(sp)
  48cc48:	00a08021 	move	s0,a1
  48cc4c:	afbf0024 	sw	ra,36(sp)
  48cc50:	afb1001c 	sw	s1,28(sp)
  48cc54:	afbc0020 	sw	gp,32(sp)
  48cc58:	8f9985d4 	lw	t9,-31276(gp)
  48cc5c:	00000000 	nop
  48cc60:	0320f809 	jalr	t9
  48cc64:	00000000 	nop
  48cc68:	8fbc0010 	lw	gp,16(sp)
  48cc6c:	02002021 	move	a0,s0
  48cc70:	00408821 	move	s1,v0
  48cc74:	8f9985d4 	lw	t9,-31276(gp)
  48cc78:	00000000 	nop
  48cc7c:	0320f809 	jalr	t9
  48cc80:	00000000 	nop
  48cc84:	8fbc0010 	lw	gp,16(sp)
  48cc88:	02222026 	xor	a0,s1,v0
  48cc8c:	2c830001 	sltiu	v1,a0,1
  48cc90:	8fbf0024 	lw	ra,36(sp)
  48cc94:	8fb1001c 	lw	s1,28(sp)
  48cc98:	8fb00018 	lw	s0,24(sp)
  48cc9c:	00601021 	move	v0,v1
  48cca0:	03e00008 	jr	ra
  48cca4:	27bd0028 	addiu	sp,sp,40

0048cca8 <samesubnettype>:
  48cca8:	3c1c0fb8 	lui	gp,0xfb8
  48ccac:	279cfcc8 	addiu	gp,gp,-824
  48ccb0:	0399e021 	addu	gp,gp,t9
  48ccb4:	27bdffd8 	addiu	sp,sp,-40
  48ccb8:	afbc0010 	sw	gp,16(sp)
  48ccbc:	afb00018 	sw	s0,24(sp)
  48ccc0:	00a08021 	move	s0,a1
  48ccc4:	afbf0024 	sw	ra,36(sp)
  48ccc8:	afb1001c 	sw	s1,28(sp)
  48cccc:	afbc0020 	sw	gp,32(sp)
  48ccd0:	8f998248 	lw	t9,-32184(gp)
  48ccd4:	00000000 	nop
  48ccd8:	0320f809 	jalr	t9
  48ccdc:	00000000 	nop
  48cce0:	8fbc0010 	lw	gp,16(sp)
  48cce4:	02002021 	move	a0,s0
  48cce8:	00408821 	move	s1,v0
  48ccec:	8f998248 	lw	t9,-32184(gp)
  48ccf0:	00000000 	nop
  48ccf4:	0320f809 	jalr	t9
  48ccf8:	00000000 	nop
  48ccfc:	8fbc0010 	lw	gp,16(sp)
  48cd00:	02222026 	xor	a0,s1,v0
  48cd04:	2c830001 	sltiu	v1,a0,1
  48cd08:	8fbf0024 	lw	ra,36(sp)
  48cd0c:	8fb1001c 	lw	s1,28(sp)
  48cd10:	8fb00018 	lw	s0,24(sp)
  48cd14:	00601021 	move	v0,v1
  48cd18:	03e00008 	jr	ra
  48cd1c:	27bd0028 	addiu	sp,sp,40

0048cd20 <samenbits>:
  48cd20:	3c1c0fb8 	lui	gp,0xfb8
  48cd24:	279cfc50 	addiu	gp,gp,-944
  48cd28:	0399e021 	addu	gp,gp,t9
  48cd2c:	27bdffc8 	addiu	sp,sp,-56
  48cd30:	afbc0010 	sw	gp,16(sp)
  48cd34:	afb3002c 	sw	s3,44(sp)
  48cd38:	00a09821 	move	s3,a1
  48cd3c:	afb20028 	sw	s2,40(sp)
  48cd40:	afb10024 	sw	s1,36(sp)
  48cd44:	afb00020 	sw	s0,32(sp)
  48cd48:	afbf0034 	sw	ra,52(sp)
  48cd4c:	afbc0030 	sw	gp,48(sp)
  48cd50:	00c08821 	move	s1,a2
  48cd54:	00809021 	move	s2,a0

/*
 - samenbits - do two addresses have the same first n bits?
 */
static int
samenbits(a, b, nbits)
const ip_address *a;
const ip_address *b;
int nbits;
{
	const unsigned char *ap;
	const unsigned char *bp;
	size_t n;
	int m;

	if (addrtypeof(a) != addrtypeof(b))
  48cd58:	8f9985d4 	lw	t9,-31276(gp)
  48cd5c:	00000000 	nop
  48cd60:	0320f809 	jalr	t9
  48cd64:	00000000 	nop
  48cd68:	8fbc0010 	lw	gp,16(sp)
  48cd6c:	02602021 	move	a0,s3
  48cd70:	00408021 	move	s0,v0
  48cd74:	8f9985d4 	lw	t9,-31276(gp)
  48cd78:	00000000 	nop
  48cd7c:	0320f809 	jalr	t9
  48cd80:	00000000 	nop
  48cd84:	8fbc0010 	lw	gp,16(sp)
  48cd88:	00402021 	move	a0,v0
  48cd8c:	12040008 	beq	s0,a0,48cdb0 <samenbits+0x90>
  48cd90:	00001021 	move	v0,zero
		return 0;	/* arbitrary */
	n = addrbytesptr(a, &ap);
	if (n == 0)
		return 0;	/* arbitrary */
	(void) addrbytesptr(b, &bp);
	if (nbits > n*8)
		return 0;	/* "can't happen" */

	for (; nbits >= 8 && *ap == *bp; nbits -= 8, ap++, bp++)
		continue;
	if (nbits >= 8)
		return 0;
	if (nbits > 0) {	/* partial byte */
		m = ~(0xff >> nbits);
		if ((*ap & m) != (*bp & m))
			return 0;
	}
	return 1;
}
  48cd94:	8fbf0034 	lw	ra,52(sp)
  48cd98:	8fb3002c 	lw	s3,44(sp)
  48cd9c:	8fb20028 	lw	s2,40(sp)
  48cda0:	8fb10024 	lw	s1,36(sp)
  48cda4:	8fb00020 	lw	s0,32(sp)
  48cda8:	03e00008 	jr	ra
  48cdac:	27bd0038 	addiu	sp,sp,56
  48cdb0:	02402021 	move	a0,s2
  48cdb4:	27a50018 	addiu	a1,sp,24
  48cdb8:	8f998768 	lw	t9,-30872(gp)
  48cdbc:	00000000 	nop
  48cdc0:	0320f809 	jalr	t9
  48cdc4:	00000000 	nop
  48cdc8:	8fbc0010 	lw	gp,16(sp)
  48cdcc:	00408021 	move	s0,v0
  48cdd0:	1200fff0 	beqz	s0,48cd94 <samenbits+0x74>
  48cdd4:	02602021 	move	a0,s3
  48cdd8:	27a5001c 	addiu	a1,sp,28
  48cddc:	8f998768 	lw	t9,-30872(gp)
  48cde0:	00000000 	nop
  48cde4:	0320f809 	jalr	t9
  48cde8:	00000000 	nop
  48cdec:	8fbc0010 	lw	gp,16(sp)
  48cdf0:	00000000 	nop
  48cdf4:	001010c0 	sll	v0,s0,0x3
  48cdf8:	0051202b 	sltu	a0,v0,s1
  48cdfc:	1480ffe5 	bnez	a0,48cd94 <samenbits+0x74>
  48ce00:	00001021 	move	v0,zero
  48ce04:	2a260008 	slti	a2,s1,8
  48ce08:	14c0000a 	bnez	a2,48ce34 <samenbits+0x114>
  48ce0c:	00000000 	nop
  48ce10:	8fa50018 	lw	a1,24(sp)
  48ce14:	8fa9001c 	lw	t1,28(sp)
  48ce18:	90a80000 	lbu	t0,0(a1)
  48ce1c:	91270000 	lbu	a3,0(t1)
  48ce20:	00000000 	nop
  48ce24:	11070013 	beq	t0,a3,48ce74 <samenbits+0x154>
  48ce28:	00000000 	nop
  48ce2c:	10c0ffd9 	beqz	a2,48cd94 <samenbits+0x74>
  48ce30:	00001021 	move	v0,zero
  48ce34:	1a20ffd7 	blez	s1,48cd94 <samenbits+0x74>
  48ce38:	24020001 	li	v0,1
  48ce3c:	241300ff 	li	s3,255
  48ce40:	02332807 	srav	a1,s3,s1
  48ce44:	8fb20018 	lw	s2,24(sp)
  48ce48:	8fb1001c 	lw	s1,28(sp)
  48ce4c:	924f0000 	lbu	t7,0(s2)
  48ce50:	92300000 	lbu	s0,0(s1)
  48ce54:	00000000 	nop
  48ce58:	00053027 	nor	a2,zero,a1
  48ce5c:	02066824 	and	t5,s0,a2
  48ce60:	01e67024 	and	t6,t7,a2
  48ce64:	15cdffcb 	bne	t6,t5,48cd94 <samenbits+0x74>
  48ce68:	00001021 	move	v0,zero
  48ce6c:	1000ffc9 	b	48cd94 <samenbits+0x74>
  48ce70:	24020001 	li	v0,1
  48ce74:	8fa4001c 	lw	a0,28(sp)
  48ce78:	2631fff8 	addiu	s1,s1,-8
  48ce7c:	24aa0001 	addiu	t2,a1,1
  48ce80:	24830001 	addiu	v1,a0,1
  48ce84:	2a260008 	slti	a2,s1,8
  48ce88:	01402821 	move	a1,t2
  48ce8c:	afa3001c 	sw	v1,28(sp)
  48ce90:	14c0ffe8 	bnez	a2,48ce34 <samenbits+0x114>
  48ce94:	afaa0018 	sw	t2,24(sp)
  48ce98:	908b0001 	lbu	t3,1(a0)
  48ce9c:	90ac0000 	lbu	t4,0(a1)
  48cea0:	00000000 	nop
  48cea4:	158bffe1 	bne	t4,t3,48ce2c <samenbits+0x10c>
  48cea8:	00000000 	nop
  48ceac:	1000fff1 	b	48ce74 <samenbits+0x154>
  48ceb0:	00000000 	nop
	...

0048cec0 <satot>:
  48cec0:	3c1c0fb8 	lui	gp,0xfb8
  48cec4:	279cfab0 	addiu	gp,gp,-1360
  48cec8:	0399e021 	addu	gp,gp,t9
  48cecc:	27bdff40 	addiu	sp,sp,-192
  48ced0:	afbc0010 	sw	gp,16(sp)
	char *pre;
	char buf[10+1+ULTOT_BUF+ADDRTOT_BUF];
	char unk[10];

	switch (format) {
  48ced4:	24030066 	li	v1,102
  48ced8:	afb600b0 	sw	s6,176(sp)
  48cedc:	afb500ac 	sw	s5,172(sp)
  48cee0:	afb200a0 	sw	s2,160(sp)
  48cee4:	afb1009c 	sw	s1,156(sp)
  48cee8:	afbf00b8 	sw	ra,184(sp)
  48ceec:	afbc00b4 	sw	gp,180(sp)
  48cef0:	afb400a8 	sw	s4,168(sp)
  48cef4:	afb300a4 	sw	s3,164(sp)
  48cef8:	afb00098 	sw	s0,152(sp)
  48cefc:	00809021 	move	s2,a0
  48cf00:	00c0b021 	move	s6,a2
  48cf04:	00e0a821 	move	s5,a3
  48cf08:	10a3011c 	beq	a1,v1,48d37c <satot+0x4bc>
  48cf0c:	00008821 	move	s1,zero
  48cf10:	28a30067 	slti	v1,a1,103
  48cf14:	10600114 	beqz	v1,48d368 <satot+0x4a8>
  48cf18:	00000000 	nop
  48cf1c:	10a0010f 	beqz	a1,48d35c <satot+0x49c>
  48cf20:	24040064 	li	a0,100
  48cf24:	10a4000c 	beq	a1,a0,48cf58 <satot+0x98>
  48cf28:	2414000a 	li	s4,10
	case 0:
		base = 16;
		showversion = 1;
		break;
	case 'f':
		base = 17;
		showversion = 1;
		break;
	case 'x':
		base = 'x';
		showversion = 0;
		break;
	case 'd':
		base = 10;
		showversion = 0;
		break;
	default:
		return 0;
  48cf2c:	00001021 	move	v0,zero
		break;
	}

	pre = NULL;
	for (tn = typenames; tn->name != NULL; tn++)
		if (sa->proto == tn->type) {
			pre = tn->name;
			break;			/* NOTE BREAK OUT */
		}
	if (pre == NULL) {		/* unknown protocol */
		strcpy(unk, "unk");
		(void) ultot((unsigned char)sa->proto, 10, unk+strlen(unk),
						sizeof(unk)-strlen(unk));
		pre = unk;
	}

	if (strcmp(pre, PASSTHROUGHTYPE) == 0 &&
					sa->spi == PASSTHROUGHSPI &&
					isunspecaddr(&sa->dst)) {
		strcpy(buf, (addrtypeof(&sa->dst) == AF_INET) ?
							PASSTHROUGH4NAME :
							PASSTHROUGH6NAME);
		len = strlen(buf);
	}
	
	if (sa->proto == SA_INT && addrtypeof(&sa->dst) == AF_INET &&
						isunspecaddr(&sa->dst)) {
		switch (ntohl(sa->spi)) {
		case SPI_PASS:	p = "%pass";	break;
		case SPI_DROP:	p = "%drop";	break;
		case SPI_REJECT:	p = "%reject";	break;
		case SPI_HOLD:	p = "%hold";	break;
		case SPI_TRAP:	p = "%trap";	break;
		case SPI_TRAPSUBNET:	p = "%trapsubnet";	break;
		default:	p = NULL;	break;
		}
		if (p != NULL) {
			strcpy(buf, p);
			len = strlen(buf);
		}
	}

	if (len == 0) {			/* general case needed */
		strcpy(buf, pre);
		len = strlen(buf);
		if (showversion) {
			*(buf+len) = (addrtypeof(&sa->dst) == AF_INET) ? '.' :
									':';
			len++;
			*(buf+len) = '\0';
		}
		len += ultot(ntohl(sa->spi), base, buf+len, sizeof(buf)-len);
		*(buf+len-1) = '@';
		len += addrtot(&sa->dst, 0, buf+len, sizeof(buf)-len);
	}

	if (dst != NULL) {
		if (len > dstlen)
			*(buf+dstlen-1) = '\0';
		strcpy(dst, buf);
	}
	return len;
}
  48cf30:	8fbf00b8 	lw	ra,184(sp)
  48cf34:	8fb600b0 	lw	s6,176(sp)
  48cf38:	8fb500ac 	lw	s5,172(sp)
  48cf3c:	8fb400a8 	lw	s4,168(sp)
  48cf40:	8fb300a4 	lw	s3,164(sp)
  48cf44:	8fb200a0 	lw	s2,160(sp)
  48cf48:	8fb1009c 	lw	s1,156(sp)
  48cf4c:	8fb00098 	lw	s0,152(sp)
  48cf50:	03e00008 	jr	ra
  48cf54:	27bd00c0 	addiu	sp,sp,192
  48cf58:	00009821 	move	s3,zero
  48cf5c:	8f848018 	lw	a0,-32744(gp)
  48cf60:	00000000 	nop
  48cf64:	248446b0 	addiu	a0,a0,18096
  48cf68:	00000000 	nop
  48cf6c:	8c830004 	lw	v1,4(a0)
  48cf70:	00000000 	nop
  48cf74:	10600012 	beqz	v1,48cfc0 <satot+0x100>
  48cf78:	00008021 	move	s0,zero
  48cf7c:	8f878018 	lw	a3,-32744(gp)
  48cf80:	00000000 	nop
  48cf84:	24e746b0 	addiu	a3,a3,18096
  48cf88:	80e70000 	lb	a3,0(a3)
  48cf8c:	8e450020 	lw	a1,32(s2)
  48cf90:	00000000 	nop
  48cf94:	10a70009 	beq	a1,a3,48cfbc <satot+0xfc>
  48cf98:	24840008 	addiu	a0,a0,8
  48cf9c:	8c830004 	lw	v1,4(a0)
  48cfa0:	00000000 	nop
  48cfa4:	10600006 	beqz	v1,48cfc0 <satot+0x100>
  48cfa8:	00000000 	nop
  48cfac:	80880000 	lb	t0,0(a0)
  48cfb0:	00000000 	nop
  48cfb4:	14a8fff9 	bne	a1,t0,48cf9c <satot+0xdc>
  48cfb8:	24840008 	addiu	a0,a0,8
  48cfbc:	00608021 	move	s0,v1
  48cfc0:	120000d0 	beqz	s0,48d304 <satot+0x444>
  48cfc4:	3c0b756e 	lui	t3,0x756e
  48cfc8:	8f85804c 	lw	a1,-32692(gp)
  48cfcc:	00000000 	nop
  48cfd0:	24a5c608 	addiu	a1,a1,-14840
  48cfd4:	02002021 	move	a0,s0
  48cfd8:	8f998428 	lw	t9,-31704(gp)
  48cfdc:	00000000 	nop
  48cfe0:	0320f809 	jalr	t9
  48cfe4:	00000000 	nop
  48cfe8:	8fbc0010 	lw	gp,16(sp)
  48cfec:	1040009e 	beqz	v0,48d268 <satot+0x3a8>
  48cff0:	00000000 	nop
  48cff4:	8e420020 	lw	v0,32(s2)
  48cff8:	240e003d 	li	t6,61
  48cffc:	104e004e 	beq	v0,t6,48d138 <satot+0x278>
  48d000:	02402021 	move	a0,s2
  48d004:	12200010 	beqz	s1,48d048 <satot+0x188>
  48d008:	02002821 	move	a1,s0
  48d00c:	12c0000c 	beqz	s6,48d040 <satot+0x180>
  48d010:	02b1902b 	sltu	s2,s5,s1
  48d014:	12400003 	beqz	s2,48d024 <satot+0x164>
  48d018:	02c02021 	move	a0,s6
  48d01c:	03b53021 	addu	a2,sp,s5
  48d020:	a0c00017 	sb	zero,23(a2)
  48d024:	27a50018 	addiu	a1,sp,24
  48d028:	8f998c58 	lw	t9,-29608(gp)
  48d02c:	00000000 	nop
  48d030:	0320f809 	jalr	t9
  48d034:	00000000 	nop
  48d038:	8fbc0010 	lw	gp,16(sp)
  48d03c:	00000000 	nop
  48d040:	1000ffbb 	b	48cf30 <satot+0x70>
  48d044:	02201021 	move	v0,s1
  48d048:	27a40018 	addiu	a0,sp,24
  48d04c:	8f998c58 	lw	t9,-29608(gp)
  48d050:	00000000 	nop
  48d054:	0320f809 	jalr	t9
  48d058:	00000000 	nop
  48d05c:	8fbc0010 	lw	gp,16(sp)
  48d060:	00000000 	nop
  48d064:	27a40018 	addiu	a0,sp,24
  48d068:	8f998188 	lw	t9,-32376(gp)
  48d06c:	00000000 	nop
  48d070:	0320f809 	jalr	t9
  48d074:	00000000 	nop
  48d078:	8fbc0010 	lw	gp,16(sp)
  48d07c:	00408821 	move	s1,v0
  48d080:	1260002b 	beqz	s3,48d130 <satot+0x270>
  48d084:	02208021 	move	s0,s1
  48d088:	27b30018 	addiu	s3,sp,24
  48d08c:	02402021 	move	a0,s2
  48d090:	8f9985d4 	lw	t9,-31276(gp)
  48d094:	00000000 	nop
  48d098:	0320f809 	jalr	t9
  48d09c:	00000000 	nop
  48d0a0:	8fbc0010 	lw	gp,16(sp)
  48d0a4:	02712021 	addu	a0,s3,s1
  48d0a8:	24110002 	li	s1,2
  48d0ac:	02603021 	move	a2,s3
  48d0b0:	10510002 	beq	v0,s1,48d0bc <satot+0x1fc>
  48d0b4:	2405002e 	li	a1,46
  48d0b8:	2405003a 	li	a1,58
  48d0bc:	26110001 	addiu	s1,s0,1
  48d0c0:	00d18021 	addu	s0,a2,s1
  48d0c4:	a0850000 	sb	a1,0(a0)
  48d0c8:	a2000000 	sb	zero,0(s0)
  48d0cc:	2410006b 	li	s0,107
  48d0d0:	8e44001c 	lw	a0,28(s2)
  48d0d4:	02713021 	addu	a2,s3,s1
  48d0d8:	02113823 	subu	a3,s0,s1
  48d0dc:	02802821 	move	a1,s4
  48d0e0:	8f9981a8 	lw	t9,-32344(gp)
  48d0e4:	00000000 	nop
  48d0e8:	0320f809 	jalr	t9
  48d0ec:	00000000 	nop
  48d0f0:	8fbc0010 	lw	gp,16(sp)
  48d0f4:	0222a021 	addu	s4,s1,v0
  48d0f8:	02743021 	addu	a2,s3,s4
  48d0fc:	24070040 	li	a3,64
  48d100:	02149823 	subu	s3,s0,s4
  48d104:	a0c7ffff 	sb	a3,-1(a2)
  48d108:	02402021 	move	a0,s2
  48d10c:	02603821 	move	a3,s3
  48d110:	00002821 	move	a1,zero
  48d114:	8f998b50 	lw	t9,-29872(gp)
  48d118:	00000000 	nop
  48d11c:	0320f809 	jalr	t9
  48d120:	00000000 	nop
  48d124:	8fbc0010 	lw	gp,16(sp)
  48d128:	1000ffb8 	b	48d00c <satot+0x14c>
  48d12c:	02828821 	addu	s1,s4,v0
  48d130:	1000ffe6 	b	48d0cc <satot+0x20c>
  48d134:	27b30018 	addiu	s3,sp,24
  48d138:	8f9985d4 	lw	t9,-31276(gp)
  48d13c:	00000000 	nop
  48d140:	0320f809 	jalr	t9
  48d144:	00000000 	nop
  48d148:	8fbc0010 	lw	gp,16(sp)
  48d14c:	240f0002 	li	t7,2
  48d150:	144fffac 	bne	v0,t7,48d004 <satot+0x144>
  48d154:	02402021 	move	a0,s2
  48d158:	8f998974 	lw	t9,-30348(gp)
  48d15c:	00000000 	nop
  48d160:	0320f809 	jalr	t9
  48d164:	00000000 	nop
  48d168:	8fbc0010 	lw	gp,16(sp)
  48d16c:	1040ffa5 	beqz	v0,48d004 <satot+0x144>
  48d170:	00000000 	nop
  48d174:	8e59001c 	lw	t9,28(s2)
  48d178:	00000000 	nop
  48d17c:	2722ff00 	addiu	v0,t9,-256
  48d180:	2c580006 	sltiu	t8,v0,6
  48d184:	1300000f 	beqz	t8,48d1c4 <satot+0x304>
  48d188:	00002821 	move	a1,zero
  48d18c:	00021880 	sll	v1,v0,0x2
  48d190:	8f84804c 	lw	a0,-32692(gp)
  48d194:	00000000 	nop
  48d198:	2484c670 	addiu	a0,a0,-14736
  48d19c:	00832021 	addu	a0,a0,v1
  48d1a0:	8c840000 	lw	a0,0(a0)
  48d1a4:	00000000 	nop
  48d1a8:	009c2021 	addu	a0,a0,gp
  48d1ac:	00800008 	jr	a0
  48d1b0:	00000000 	nop
  48d1b4:	8f85804c 	lw	a1,-32692(gp)
  48d1b8:	00000000 	nop
  48d1bc:	24a5c618 	addiu	a1,a1,-14824
  48d1c0:	00000000 	nop
  48d1c4:	10a0ff8f 	beqz	a1,48d004 <satot+0x144>
  48d1c8:	27a40018 	addiu	a0,sp,24
  48d1cc:	8f998c58 	lw	t9,-29608(gp)
  48d1d0:	00000000 	nop
  48d1d4:	0320f809 	jalr	t9
  48d1d8:	00000000 	nop
  48d1dc:	8fbc0010 	lw	gp,16(sp)
  48d1e0:	00000000 	nop
  48d1e4:	27a40018 	addiu	a0,sp,24
  48d1e8:	8f998188 	lw	t9,-32376(gp)
  48d1ec:	00000000 	nop
  48d1f0:	0320f809 	jalr	t9
  48d1f4:	00000000 	nop
  48d1f8:	8fbc0010 	lw	gp,16(sp)
  48d1fc:	1000ff81 	b	48d004 <satot+0x144>
  48d200:	00408821 	move	s1,v0
  48d204:	8f85804c 	lw	a1,-32692(gp)
  48d208:	00000000 	nop
  48d20c:	24a5c620 	addiu	a1,a1,-14816
  48d210:	1000ffec 	b	48d1c4 <satot+0x304>
  48d214:	00000000 	nop
  48d218:	8f85804c 	lw	a1,-32692(gp)
  48d21c:	00000000 	nop
  48d220:	24a5c628 	addiu	a1,a1,-14808
  48d224:	1000ffe7 	b	48d1c4 <satot+0x304>
  48d228:	00000000 	nop
  48d22c:	8f85804c 	lw	a1,-32692(gp)
  48d230:	00000000 	nop
  48d234:	24a5c630 	addiu	a1,a1,-14800
  48d238:	1000ffe2 	b	48d1c4 <satot+0x304>
  48d23c:	00000000 	nop
  48d240:	8f85804c 	lw	a1,-32692(gp)
  48d244:	00000000 	nop
  48d248:	24a5c638 	addiu	a1,a1,-14792
  48d24c:	1000ffdd 	b	48d1c4 <satot+0x304>
  48d250:	00000000 	nop
  48d254:	8f85804c 	lw	a1,-32692(gp)
  48d258:	00000000 	nop
  48d25c:	24a5c640 	addiu	a1,a1,-14784
  48d260:	1000ffd8 	b	48d1c4 <satot+0x304>
  48d264:	00000000 	nop
  48d268:	8e4c001c 	lw	t4,28(s2)
  48d26c:	00000000 	nop
  48d270:	1580ff60 	bnez	t4,48cff4 <satot+0x134>
  48d274:	02402021 	move	a0,s2
  48d278:	8f998974 	lw	t9,-30348(gp)
  48d27c:	00000000 	nop
  48d280:	0320f809 	jalr	t9
  48d284:	00000000 	nop
  48d288:	8fbc0010 	lw	gp,16(sp)
  48d28c:	1040ff59 	beqz	v0,48cff4 <satot+0x134>
  48d290:	02402021 	move	a0,s2
  48d294:	8f9985d4 	lw	t9,-31276(gp)
  48d298:	00000000 	nop
  48d29c:	0320f809 	jalr	t9
  48d2a0:	00000000 	nop
  48d2a4:	8fbc0010 	lw	gp,16(sp)
  48d2a8:	240d0002 	li	t5,2
  48d2ac:	8f85804c 	lw	a1,-32692(gp)
  48d2b0:	00000000 	nop
  48d2b4:	24a5c64c 	addiu	a1,a1,-14772
  48d2b8:	104d0004 	beq	v0,t5,48d2cc <satot+0x40c>
  48d2bc:	27a40018 	addiu	a0,sp,24
  48d2c0:	8f85804c 	lw	a1,-32692(gp)
  48d2c4:	00000000 	nop
  48d2c8:	24a5c65c 	addiu	a1,a1,-14756
  48d2cc:	8f998c58 	lw	t9,-29608(gp)
  48d2d0:	00000000 	nop
  48d2d4:	0320f809 	jalr	t9
  48d2d8:	00000000 	nop
  48d2dc:	8fbc0010 	lw	gp,16(sp)
  48d2e0:	00000000 	nop
  48d2e4:	27a40018 	addiu	a0,sp,24
  48d2e8:	8f998188 	lw	t9,-32376(gp)
  48d2ec:	00000000 	nop
  48d2f0:	0320f809 	jalr	t9
  48d2f4:	00000000 	nop
  48d2f8:	8fbc0010 	lw	gp,16(sp)
  48d2fc:	1000ff3d 	b	48cff4 <satot+0x134>
  48d300:	00408821 	move	s1,v0
  48d304:	27b00088 	addiu	s0,sp,136
  48d308:	356a6b00 	ori	t2,t3,0x6b00
  48d30c:	02002021 	move	a0,s0
  48d310:	afaa0088 	sw	t2,136(sp)
  48d314:	8f998188 	lw	t9,-32376(gp)
  48d318:	00000000 	nop
  48d31c:	0320f809 	jalr	t9
  48d320:	00000000 	nop
  48d324:	8fbc0010 	lw	gp,16(sp)
  48d328:	02022821 	addu	a1,s0,v0
  48d32c:	2409000a 	li	t1,10
  48d330:	92440023 	lbu	a0,35(s2)
  48d334:	00a03021 	move	a2,a1
  48d338:	01223823 	subu	a3,t1,v0
  48d33c:	2405000a 	li	a1,10
  48d340:	8f9981a8 	lw	t9,-32344(gp)
  48d344:	00000000 	nop
  48d348:	0320f809 	jalr	t9
  48d34c:	00000000 	nop
  48d350:	8fbc0010 	lw	gp,16(sp)
  48d354:	1000ff1c 	b	48cfc8 <satot+0x108>
  48d358:	00000000 	nop
  48d35c:	24140010 	li	s4,16
  48d360:	1000fefe 	b	48cf5c <satot+0x9c>
  48d364:	24130001 	li	s3,1
  48d368:	24060078 	li	a2,120
  48d36c:	14a6fef0 	bne	a1,a2,48cf30 <satot+0x70>
  48d370:	00001021 	move	v0,zero
  48d374:	1000fef8 	b	48cf58 <satot+0x98>
  48d378:	24140078 	li	s4,120
  48d37c:	24140011 	li	s4,17
  48d380:	1000fef6 	b	48cf5c <satot+0x9c>
  48d384:	24130001 	li	s3,1
	...

0048d390 <subnettot>:
  48d390:	3c1c0fb8 	lui	gp,0xfb8
  48d394:	279cf5e0 	addiu	gp,gp,-2592
  48d398:	0399e021 	addu	gp,gp,t9
  48d39c:	27bdffd0 	addiu	sp,sp,-48
  48d3a0:	afbc0010 	sw	gp,16(sp)
  48d3a4:	00a04021 	move	t0,a1
  48d3a8:	afb30024 	sw	s3,36(sp)
  48d3ac:	afb20020 	sw	s2,32(sp)
  48d3b0:	afb1001c 	sw	s1,28(sp)
  48d3b4:	afbf002c 	sw	ra,44(sp)
  48d3b8:	afbc0028 	sw	gp,40(sp)
  48d3bc:	afb00018 	sw	s0,24(sp)
  48d3c0:	00e08821 	move	s1,a3
  48d3c4:	00c09021 	move	s2,a2
  48d3c8:	00809821 	move	s3,a0
	size_t len;
	size_t rest;
	char *p;

	switch (format) {
  48d3cc:	11000008 	beqz	t0,48d3f0 <subnettot+0x60>
  48d3d0:	00001021 	move	v0,zero
	case 0:
		break;
	default:
		return 0;
		break;
	}

	len = addrtot(&sub->addr, format, dst, dstlen);
	if (len < dstlen) {
		dst[len - 1] = '/';
		p = dst + len;
		rest = dstlen - len;
	} else {
		p = NULL;
		rest = 0;
	}


	len += ultoa((unsigned long)sub->maskbits, 10, p, rest);

	return len;
}
  48d3d4:	8fbf002c 	lw	ra,44(sp)
  48d3d8:	8fb30024 	lw	s3,36(sp)
  48d3dc:	8fb20020 	lw	s2,32(sp)
  48d3e0:	8fb1001c 	lw	s1,28(sp)
  48d3e4:	8fb00018 	lw	s0,24(sp)
  48d3e8:	03e00008 	jr	ra
  48d3ec:	27bd0030 	addiu	sp,sp,48
  48d3f0:	8f998b50 	lw	t9,-29872(gp)
  48d3f4:	00000000 	nop
  48d3f8:	0320f809 	jalr	t9
  48d3fc:	00000000 	nop
  48d400:	8fbc0010 	lw	gp,16(sp)
  48d404:	00408021 	move	s0,v0
  48d408:	02503021 	addu	a2,s2,s0
  48d40c:	0211202b 	sltu	a0,s0,s1
  48d410:	02303823 	subu	a3,s1,s0
  48d414:	1080000e 	beqz	a0,48d450 <subnettot+0xc0>
  48d418:	00c01821 	move	v1,a2
  48d41c:	2405002f 	li	a1,47
  48d420:	a0c5ffff 	sb	a1,-1(a2)
  48d424:	8e64001c 	lw	a0,28(s3)
  48d428:	00603021 	move	a2,v1
  48d42c:	2405000a 	li	a1,10
  48d430:	8f998254 	lw	t9,-32172(gp)
  48d434:	00000000 	nop
  48d438:	0320f809 	jalr	t9
  48d43c:	00000000 	nop
  48d440:	8fbc0010 	lw	gp,16(sp)
  48d444:	02021821 	addu	v1,s0,v0
  48d448:	1000ffe2 	b	48d3d4 <subnettot+0x44>
  48d44c:	00601021 	move	v0,v1
  48d450:	00001821 	move	v1,zero
  48d454:	1000fff3 	b	48d424 <subnettot+0x94>
  48d458:	00003821 	move	a3,zero
  48d45c:	00000000 	nop

0048d460 <subnettypeof>:
  48d460:	3c1c0fb8 	lui	gp,0xfb8
  48d464:	279cf510 	addiu	gp,gp,-2800
  48d468:	0399e021 	addu	gp,gp,t9
int
subnettypeof(src)
const ip_subnet *src;
{
	return src->addr.u.v4.sin_family;
  48d46c:	94820000 	lhu	v0,0(a0)
  48d470:	03e00008 	jr	ra
  48d474:	00000000 	nop

0048d478 <masktocount>:
  48d478:	3c1c0fb8 	lui	gp,0xfb8
  48d47c:	279cf4f8 	addiu	gp,gp,-2824
  48d480:	0399e021 	addu	gp,gp,t9
  48d484:	27bdffd8 	addiu	sp,sp,-40
  48d488:	afbc0010 	sw	gp,16(sp)
}

/*
 - networkof - get the network address of a subnet
 */
void
networkof(src, dst)
const ip_subnet *src;
ip_address *dst;
{
	*dst = src->addr;
}

/*
 - maskof - get the mask of a subnet, as an address
 */
void
maskof(src, dst)
const ip_subnet *src;
ip_address *dst;
{
	int b;
	unsigned char buf[16];
	size_t n = addrlenof(&src->addr);
	unsigned char *p;

	if (src->maskbits > n*8 || n > sizeof(buf))
		return;		/* "can't happen" */

	p = buf;
	for (b = src->maskbits; b >= 8; b -= 8)
		*p++ = 0xff;
	if (b != 0)
		*p++ = (0xff << (8 - b)) & 0xff;
	while (p - buf < n)
		*p++ = 0;

	(void) initaddr(buf, n, addrtypeof(&src->addr), dst);
}

/*
 - masktocount - convert a mask, expressed as an address, to a bit count
 */
int				/* -1 if not valid mask */
masktocount(src)
const ip_address *src;
{
	int b;
	unsigned const char *bp;
	size_t n;
	unsigned const char *p;
	unsigned const char *stop;

	n = addrbytesptr(src, &bp);
  48d48c:	27a50018 	addiu	a1,sp,24
  48d490:	afbf0024 	sw	ra,36(sp)
  48d494:	afbc0020 	sw	gp,32(sp)
  48d498:	8f998768 	lw	t9,-30872(gp)
  48d49c:	00000000 	nop
  48d4a0:	0320f809 	jalr	t9
  48d4a4:	00000000 	nop
  48d4a8:	8fbc0010 	lw	gp,16(sp)
  48d4ac:	00403021 	move	a2,v0
	if (n == 0)
  48d4b0:	10c0001b 	beqz	a2,48d520 <masktocount+0xa8>
  48d4b4:	2402ffff 	li	v0,-1
		return -1;

	p = bp;
  48d4b8:	8fa40018 	lw	a0,24(sp)
  48d4bc:	00000000 	nop
	stop = bp + n;
  48d4c0:	00863821 	addu	a3,a0,a2

	n = 0;
	while (p < stop && *p == 0xff) {
  48d4c4:	0087282b 	sltu	a1,a0,a3
  48d4c8:	10a00020 	beqz	a1,48d54c <masktocount+0xd4>
  48d4cc:	00003021 	move	a2,zero
  48d4d0:	90830000 	lbu	v1,0(a0)
  48d4d4:	240200ff 	li	v0,255
  48d4d8:	1062002a 	beq	v1,v0,48d584 <masktocount+0x10c>
  48d4dc:	00000000 	nop
		p++;
		n += 8;
	}
	if (p < stop && *p != 0) {	/* boundary in mid-byte */
  48d4e0:	10a0001a 	beqz	a1,48d54c <masktocount+0xd4>
  48d4e4:	00000000 	nop
  48d4e8:	10600012 	beqz	v1,48d534 <masktocount+0xbc>
  48d4ec:	00000000 	nop
		b = *p++;
  48d4f0:	90830000 	lbu	v1,0(a0)
  48d4f4:	00000000 	nop
		while (b&0x80) {
  48d4f8:	30650080 	andi	a1,v1,0x80
  48d4fc:	10a00005 	beqz	a1,48d514 <masktocount+0x9c>
  48d500:	24840001 	addiu	a0,a0,1
			b <<= 1;
  48d504:	00031840 	sll	v1,v1,0x1
			n++;
  48d508:	30650080 	andi	a1,v1,0x80
  48d50c:	14a0fffd 	bnez	a1,48d504 <masktocount+0x8c>
  48d510:	24c60001 	addiu	a2,a2,1
		}
		if ((b&0xff) != 0)
  48d514:	306800ff 	andi	t0,v1,0xff
  48d518:	11000005 	beqz	t0,48d530 <masktocount+0xb8>
  48d51c:	2402ffff 	li	v0,-1
			return -1;	/* bits not contiguous */
	}
	while (p < stop && *p == 0)
		p++;

	if (p != stop)
		return -1;

	return n;
}
  48d520:	8fbf0024 	lw	ra,36(sp)
  48d524:	00000000 	nop
  48d528:	03e00008 	jr	ra
  48d52c:	27bd0028 	addiu	sp,sp,40
  48d530:	0087282b 	sltu	a1,a0,a3
  48d534:	10a00005 	beqz	a1,48d54c <masktocount+0xd4>
  48d538:	00000000 	nop
  48d53c:	90830000 	lbu	v1,0(a0)
  48d540:	00000000 	nop
  48d544:	10600005 	beqz	v1,48d55c <masktocount+0xe4>
  48d548:	00000000 	nop
  48d54c:	1487fff4 	bne	a0,a3,48d520 <masktocount+0xa8>
  48d550:	2402ffff 	li	v0,-1
  48d554:	1000fff2 	b	48d520 <masktocount+0xa8>
  48d558:	00c01021 	move	v0,a2
  48d55c:	24840001 	addiu	a0,a0,1
  48d560:	0087482b 	sltu	t1,a0,a3
  48d564:	1120fff9 	beqz	t1,48d54c <masktocount+0xd4>
  48d568:	00000000 	nop
  48d56c:	908a0000 	lbu	t2,0(a0)
  48d570:	00000000 	nop
  48d574:	1540fff5 	bnez	t2,48d54c <masktocount+0xd4>
  48d578:	00000000 	nop
  48d57c:	1000fff8 	b	48d560 <masktocount+0xe8>
  48d580:	24840001 	addiu	a0,a0,1
  48d584:	24840001 	addiu	a0,a0,1
  48d588:	0087282b 	sltu	a1,a0,a3
  48d58c:	10a0ffef 	beqz	a1,48d54c <masktocount+0xd4>
  48d590:	24c60008 	addiu	a2,a2,8
  48d594:	90830000 	lbu	v1,0(a0)
  48d598:	00000000 	nop
  48d59c:	1462ffd0 	bne	v1,v0,48d4e0 <masktocount+0x68>
  48d5a0:	00000000 	nop
  48d5a4:	1000fff8 	b	48d588 <masktocount+0x110>
  48d5a8:	24840001 	addiu	a0,a0,1

0048d5ac <networkof>:
  48d5ac:	3c1c0fb8 	lui	gp,0xfb8
  48d5b0:	279cf3c4 	addiu	gp,gp,-3132
  48d5b4:	0399e021 	addu	gp,gp,t9
  48d5b8:	8c890000 	lw	t1,0(a0)
  48d5bc:	00000000 	nop
  48d5c0:	aca90000 	sw	t1,0(a1)
  48d5c4:	8c880004 	lw	t0,4(a0)
  48d5c8:	00000000 	nop
  48d5cc:	aca80004 	sw	t0,4(a1)
  48d5d0:	8c870008 	lw	a3,8(a0)
  48d5d4:	00000000 	nop
  48d5d8:	aca70008 	sw	a3,8(a1)
  48d5dc:	8c86000c 	lw	a2,12(a0)
  48d5e0:	00000000 	nop
  48d5e4:	aca6000c 	sw	a2,12(a1)
  48d5e8:	8c820010 	lw	v0,16(a0)
  48d5ec:	00000000 	nop
  48d5f0:	aca20010 	sw	v0,16(a1)
  48d5f4:	8c830014 	lw	v1,20(a0)
  48d5f8:	00000000 	nop
  48d5fc:	aca30014 	sw	v1,20(a1)
  48d600:	8c820018 	lw	v0,24(a0)
  48d604:	03e00008 	jr	ra
  48d608:	aca20018 	sw	v0,24(a1)

0048d60c <maskof>:
  48d60c:	3c1c0fb8 	lui	gp,0xfb8
  48d610:	279cf364 	addiu	gp,gp,-3228
  48d614:	0399e021 	addu	gp,gp,t9
  48d618:	27bdffc0 	addiu	sp,sp,-64
  48d61c:	afbc0010 	sw	gp,16(sp)
  48d620:	afb20030 	sw	s2,48(sp)
  48d624:	afb1002c 	sw	s1,44(sp)
  48d628:	afb00028 	sw	s0,40(sp)
  48d62c:	00808821 	move	s1,a0
  48d630:	00a09021 	move	s2,a1
  48d634:	afbf0038 	sw	ra,56(sp)
  48d638:	afbc0034 	sw	gp,52(sp)
  48d63c:	8f998568 	lw	t9,-31384(gp)
  48d640:	00000000 	nop
  48d644:	0320f809 	jalr	t9
  48d648:	00000000 	nop
  48d64c:	8fbc0010 	lw	gp,16(sp)
  48d650:	00408021 	move	s0,v0
  48d654:	8e23001c 	lw	v1,28(s1)
  48d658:	001028c0 	sll	a1,s0,0x3
  48d65c:	00a3202b 	sltu	a0,a1,v1
  48d660:	1480002d 	bnez	a0,48d718 <maskof+0x10c>
  48d664:	2e040011 	sltiu	a0,s0,17
  48d668:	1080002b 	beqz	a0,48d718 <maskof+0x10c>
  48d66c:	00602021 	move	a0,v1
  48d670:	27a50018 	addiu	a1,sp,24
  48d674:	28830008 	slti	v1,a0,8
  48d678:	14600007 	bnez	v1,48d698 <maskof+0x8c>
  48d67c:	00a03021 	move	a2,a1
  48d680:	240300ff 	li	v1,255
  48d684:	2484fff8 	addiu	a0,a0,-8
  48d688:	28870008 	slti	a3,a0,8
  48d68c:	a0a30000 	sb	v1,0(a1)
  48d690:	10e0fffc 	beqz	a3,48d684 <maskof+0x78>
  48d694:	24a50001 	addiu	a1,a1,1
  48d698:	10800006 	beqz	a0,48d6b4 <maskof+0xa8>
  48d69c:	240a0008 	li	t2,8
  48d6a0:	01441023 	subu	v0,t2,a0
  48d6a4:	240900ff 	li	t1,255
  48d6a8:	00494004 	sllv	t0,t1,v0
  48d6ac:	a0a80000 	sb	t0,0(a1)
  48d6b0:	24a50001 	addiu	a1,a1,1
  48d6b4:	00a66023 	subu	t4,a1,a2
  48d6b8:	0190582b 	sltu	t3,t4,s0
  48d6bc:	11600007 	beqz	t3,48d6dc <maskof+0xd0>
  48d6c0:	02202021 	move	a0,s1
  48d6c4:	a0a00000 	sb	zero,0(a1)
  48d6c8:	24a50001 	addiu	a1,a1,1
  48d6cc:	00a67023 	subu	t6,a1,a2
  48d6d0:	01d0682b 	sltu	t5,t6,s0
  48d6d4:	15a0fffb 	bnez	t5,48d6c4 <maskof+0xb8>
  48d6d8:	02202021 	move	a0,s1
  48d6dc:	8f9985d4 	lw	t9,-31276(gp)
  48d6e0:	00000000 	nop
  48d6e4:	0320f809 	jalr	t9
  48d6e8:	00000000 	nop
  48d6ec:	8fbc0010 	lw	gp,16(sp)
  48d6f0:	00403021 	move	a2,v0
  48d6f4:	02002821 	move	a1,s0
  48d6f8:	02403821 	move	a3,s2
  48d6fc:	27a40018 	addiu	a0,sp,24
  48d700:	8f998b78 	lw	t9,-29832(gp)
  48d704:	00000000 	nop
  48d708:	0320f809 	jalr	t9
  48d70c:	00000000 	nop
  48d710:	8fbc0010 	lw	gp,16(sp)
  48d714:	00000000 	nop
  48d718:	8fbf0038 	lw	ra,56(sp)
  48d71c:	8fb20030 	lw	s2,48(sp)
  48d720:	8fb1002c 	lw	s1,44(sp)
  48d724:	8fb00028 	lw	s0,40(sp)
  48d728:	03e00008 	jr	ra
  48d72c:	27bd0040 	addiu	sp,sp,64

0048d730 <ttoaddr>:
  48d730:	3c1c0fb8 	lui	gp,0xfb8
  48d734:	279cf240 	addiu	gp,gp,-3520
  48d738:	0399e021 	addu	gp,gp,t9
  48d73c:	27bdffc0 	addiu	sp,sp,-64
  48d740:	afbc0018 	sw	gp,24(sp)
  48d744:	afb00020 	sw	s0,32(sp)
  48d748:	00a08021 	move	s0,a1
  48d74c:	afb3002c 	sw	s3,44(sp)
  48d750:	afb20028 	sw	s2,40(sp)
  48d754:	afb10024 	sw	s1,36(sp)
  48d758:	afbf0038 	sw	ra,56(sp)
  48d75c:	afbc0034 	sw	gp,52(sp)
  48d760:	afb40030 	sw	s4,48(sp)
  48d764:	00c09021 	move	s2,a2
  48d768:	00e09821 	move	s3,a3
	err_t oops;
#	define	HEXLEN	10	/* strlen("0x11223344") */
	int nultermd;

	if (srclen == 0) {
  48d76c:	1200007a 	beqz	s0,48d958 <ttoaddr+0x228>
  48d770:	00808821 	move	s1,a0
		srclen = strlen(src);
		if (srclen == 0)
			return "empty string";
		nultermd = 1;
	} else
		nultermd = 0;	/* at least, not *known* to be terminated */
  48d774:	0000a021 	move	s4,zero

	switch (af) {
  48d778:	24030002 	li	v1,2
  48d77c:	1243004b 	beq	s2,v1,48d8ac <ttoaddr+0x17c>
  48d780:	2403000a 	li	v1,10
  48d784:	1243000d 	beq	s2,v1,48d7bc <ttoaddr+0x8c>
  48d788:	00000000 	nop
	case AF_INET:
	case AF_INET6:
		break;
	default:
		return "invalid address family";
  48d78c:	8f82804c 	lw	v0,-32692(gp)
  48d790:	00000000 	nop
  48d794:	2442c6d4 	addiu	v0,v0,-14636
  48d798:	00000000 	nop
	}

	if (af == AF_INET && srclen == HEXLEN && *src == '0') {
		if (*(src+1) == 'x' || *(src+1) == 'X')
			return tryhex(src+2, srclen-2, 'x', dst);
		if (*(src+1) == 'h' || *(src+1) == 'H')
			return tryhex(src+2, srclen-2, 'h', dst);
	}

	if (memchr(src, ':', srclen) != NULL) {
		if (af != AF_INET6)
			return "non-ipv6 address may not contain `:'";
		return colon(src, srclen, dst);
	}

	if (af == AF_INET) {
		oops = trydotted(src, srclen, dst);
		if (oops == NULL)
			return NULL;		/* it worked */
		if (*oops != '?')
			return oops;		/* probably meant as d-d */
	}

	return tryname(src, srclen, nultermd, af, dst);
}
  48d79c:	8fbf0038 	lw	ra,56(sp)
  48d7a0:	8fb40030 	lw	s4,48(sp)
  48d7a4:	8fb3002c 	lw	s3,44(sp)
  48d7a8:	8fb20028 	lw	s2,40(sp)
  48d7ac:	8fb10024 	lw	s1,36(sp)
  48d7b0:	8fb00020 	lw	s0,32(sp)
  48d7b4:	03e00008 	jr	ra
  48d7b8:	27bd0040 	addiu	sp,sp,64
  48d7bc:	02202021 	move	a0,s1
  48d7c0:	2405003a 	li	a1,58
  48d7c4:	02003021 	move	a2,s0
  48d7c8:	8f9986e0 	lw	t9,-31008(gp)
  48d7cc:	00000000 	nop
  48d7d0:	0320f809 	jalr	t9
  48d7d4:	00000000 	nop
  48d7d8:	8fbc0018 	lw	gp,24(sp)
  48d7dc:	10400011 	beqz	v0,48d824 <ttoaddr+0xf4>
  48d7e0:	240a000a 	li	t2,10
  48d7e4:	8f82804c 	lw	v0,-32692(gp)
  48d7e8:	00000000 	nop
  48d7ec:	2442c6ec 	addiu	v0,v0,-14612
  48d7f0:	164affea 	bne	s2,t2,48d79c <ttoaddr+0x6c>
  48d7f4:	02002821 	move	a1,s0
  48d7f8:	02202021 	move	a0,s1
  48d7fc:	02603021 	move	a2,s3
  48d800:	8f998050 	lw	t9,-32688(gp)
  48d804:	00000000 	nop
  48d808:	2739d98c 	addiu	t9,t9,-9844
  48d80c:	00000000 	nop
  48d810:	0320f809 	jalr	t9
  48d814:	00000000 	nop
  48d818:	8fbc0018 	lw	gp,24(sp)
  48d81c:	1000ffdf 	b	48d79c <ttoaddr+0x6c>
  48d820:	00000000 	nop
  48d824:	240b0002 	li	t3,2
  48d828:	124b000e 	beq	s2,t3,48d864 <ttoaddr+0x134>
  48d82c:	02202021 	move	a0,s1
  48d830:	02002821 	move	a1,s0
  48d834:	02803021 	move	a2,s4
  48d838:	02403821 	move	a3,s2
  48d83c:	afb30010 	sw	s3,16(sp)
  48d840:	8f998050 	lw	t9,-32688(gp)
  48d844:	00000000 	nop
  48d848:	2739dde0 	addiu	t9,t9,-8736
  48d84c:	00000000 	nop
  48d850:	0320f809 	jalr	t9
  48d854:	00000000 	nop
  48d858:	8fbc0018 	lw	gp,24(sp)
  48d85c:	1000ffcf 	b	48d79c <ttoaddr+0x6c>
  48d860:	00000000 	nop
  48d864:	02002821 	move	a1,s0
  48d868:	02603021 	move	a2,s3
  48d86c:	8f998050 	lw	t9,-32688(gp)
  48d870:	00000000 	nop
  48d874:	2739e110 	addiu	t9,t9,-7920
  48d878:	00000000 	nop
  48d87c:	0320f809 	jalr	t9
  48d880:	00000000 	nop
  48d884:	8fbc0018 	lw	gp,24(sp)
  48d888:	00401821 	move	v1,v0
  48d88c:	1060ffc3 	beqz	v1,48d79c <ttoaddr+0x6c>
  48d890:	240c003f 	li	t4,63
  48d894:	806d0000 	lb	t5,0(v1)
  48d898:	00000000 	nop
  48d89c:	15acffbf 	bne	t5,t4,48d79c <ttoaddr+0x6c>
  48d8a0:	00000000 	nop
  48d8a4:	1000ffe2 	b	48d830 <ttoaddr+0x100>
  48d8a8:	02202021 	move	a0,s1
  48d8ac:	2404000a 	li	a0,10
  48d8b0:	1604ffc2 	bne	s0,a0,48d7bc <ttoaddr+0x8c>
  48d8b4:	24050030 	li	a1,48
  48d8b8:	82220000 	lb	v0,0(s1)
  48d8bc:	00000000 	nop
  48d8c0:	1445ffbe 	bne	v0,a1,48d7bc <ttoaddr+0x8c>
  48d8c4:	24060078 	li	a2,120
  48d8c8:	82230001 	lb	v1,1(s1)
  48d8cc:	00000000 	nop
  48d8d0:	10660014 	beq	v1,a2,48d924 <ttoaddr+0x1f4>
  48d8d4:	24070058 	li	a3,88
  48d8d8:	10670012 	beq	v1,a3,48d924 <ttoaddr+0x1f4>
  48d8dc:	24080068 	li	t0,104
  48d8e0:	10680003 	beq	v1,t0,48d8f0 <ttoaddr+0x1c0>
  48d8e4:	24090048 	li	t1,72
  48d8e8:	1469ffb4 	bne	v1,t1,48d7bc <ttoaddr+0x8c>
  48d8ec:	00000000 	nop
  48d8f0:	26240002 	addiu	a0,s1,2
  48d8f4:	02603821 	move	a3,s3
  48d8f8:	24050008 	li	a1,8
  48d8fc:	24060068 	li	a2,104
  48d900:	8f998050 	lw	t9,-32688(gp)
  48d904:	00000000 	nop
  48d908:	2739e068 	addiu	t9,t9,-8088
  48d90c:	00000000 	nop
  48d910:	0320f809 	jalr	t9
  48d914:	00000000 	nop
  48d918:	8fbc0018 	lw	gp,24(sp)
  48d91c:	1000ff9f 	b	48d79c <ttoaddr+0x6c>
  48d920:	00000000 	nop
  48d924:	26240002 	addiu	a0,s1,2
  48d928:	02603821 	move	a3,s3
  48d92c:	24050008 	li	a1,8
  48d930:	24060078 	li	a2,120
  48d934:	8f998050 	lw	t9,-32688(gp)
  48d938:	00000000 	nop
  48d93c:	2739e068 	addiu	t9,t9,-8088
  48d940:	00000000 	nop
  48d944:	0320f809 	jalr	t9
  48d948:	00000000 	nop
  48d94c:	8fbc0018 	lw	gp,24(sp)
  48d950:	1000ff92 	b	48d79c <ttoaddr+0x6c>
  48d954:	00000000 	nop
  48d958:	8f998188 	lw	t9,-32376(gp)
  48d95c:	00000000 	nop
  48d960:	0320f809 	jalr	t9
  48d964:	00000000 	nop
  48d968:	8fbc0018 	lw	gp,24(sp)
  48d96c:	00408021 	move	s0,v0
  48d970:	8f82804c 	lw	v0,-32692(gp)
  48d974:	00000000 	nop
  48d978:	2442c714 	addiu	v0,v0,-14572
  48d97c:	1200ff87 	beqz	s0,48d79c <ttoaddr+0x6c>
  48d980:	24140001 	li	s4,1
  48d984:	1000ff7d 	b	48d77c <ttoaddr+0x4c>
  48d988:	24030002 	li	v1,2

0048d98c <colon>:
  48d98c:	3c1c0fb8 	lui	gp,0xfb8
  48d990:	279cefe4 	addiu	gp,gp,-4124
  48d994:	0399e021 	addu	gp,gp,t9
  48d998:	27bdffb0 	addiu	sp,sp,-80
  48d99c:	afbc0010 	sw	gp,16(sp)
  48d9a0:	afb50044 	sw	s5,68(sp)
  48d9a4:	afb10034 	sw	s1,52(sp)

/*
 - tnatoaddr - convert text numeric address (only) to binary address
 */
err_t				/* NULL for success, else string literal */
tnatoaddr(src, srclen, af, dst)
const char *src;
size_t srclen;			/* 0 means "apply strlen" */
int af;				/* address family */
ip_address *dst;
{
	err_t oops;

	if (srclen == 0) {
		srclen = strlen(src);
		if (srclen == 0)
			return "empty string";
	}

	switch (af) {
	case AF_INET6:
		return colon(src, srclen, dst);
		break;
	case AF_INET:
		oops = trydotted(src, srclen, dst);
		if (oops == NULL)
			return NULL;		/* it worked */
		if (*oops != '?')
			return oops;		/* probably meant as d-d */
		return "does not appear to be numeric address";
		break;
	default:
		return "unknown address family in tnatoaddr";
		break;
	}
}

/*
 - tryname - try it as a name
 * Slightly complicated by lack of reliable NUL termination in source.
 */
static err_t
tryname(src, srclen, nultermd, af, dst)
const char *src;
size_t srclen;
int nultermd;			/* is it known to be NUL-terminated? */
int af;
ip_address *dst;
{
	struct hostent *h;
	struct netent *ne = NULL;
	char namebuf[100];	/* enough for most DNS names */
	const char *cp;
	char *p = namebuf;
	size_t n;

	for (cp = src, n = srclen; n > 0; cp++, n--)
		if (ISASCII(*cp) && strchr(namechars, *cp) == NULL)
			return "illegal (non-DNS-name) character in name";

	if (nultermd)
		cp = src;
	else {
		if (srclen+1 > sizeof(namebuf)) {
			p = (char *) MALLOC(srclen+1);
			if (p == NULL)
				return "unable to get temporary space for name";
		}
		p[0] = '\0';	/* strncpy semantics are wrong */
		strncat(p, src, srclen);
		cp = (const char *)p;
	}

	h = gethostbyname2(cp, af);
	if (h == NULL && af == AF_INET)
		ne = getnetbyname(cp);
	if (p != namebuf)
		FREE(p);
	if (h == NULL && ne == NULL)
		return "does not look numeric and name lookup failed";

	if (h != NULL) {
		if (h->h_addrtype != af)
			return "address-type mismatch from gethostbyname2!!!";
		return initaddr((unsigned char *)h->h_addr, h->h_length, af, dst);
	} else {
		if (ne->n_addrtype != af)
			return "address-type mismatch from getnetbyname!!!";
		ne->n_net = htonl(ne->n_net);
		return initaddr((unsigned char *)&ne->n_net, sizeof(ne->n_net),
								af, dst);
	}
}

/*
 - tryhex - try conversion as an eight-digit hex number (AF_INET only)
 */
static err_t
tryhex(src, srclen, flavor, dst)
const char *src;
size_t srclen;			/* should be 8 */
int flavor;			/* 'x' for network order, 'h' for host order */
ip_address *dst;
{
	err_t oops;
	unsigned long ul;
	union {
		uint32_t addr;
		unsigned char buf[4];
	} u;

	if (srclen != 8)
		return "internal error, tryhex called with bad length";

	oops = ttoul(src, srclen, 16, &ul);
	if (oops != NULL)
		return oops;

	u.addr = (flavor == 'h') ? ul : htonl(ul);
	return initaddr(u.buf, sizeof(u.buf), AF_INET, dst);
}

/*
 - trydotted - try conversion as dotted decimal (AF_INET only)
 *
 * If the first char of a complaint is '?', that means "didn't look like
 * dotted decimal at all".
 */
static err_t
trydotted(src, srclen, dst)
const char *src;
size_t srclen;
ip_address *dst;
{
	const char *stop = src + srclen;	/* just past end */
	int byte;
	err_t oops;
#	define	NBYTES	4
	unsigned char buf[NBYTES];
	int i;

	memset(buf, 0, sizeof(buf));
	for (i = 0; i < NBYTES && src < stop; i++) {
		oops = getbyte(&src, stop, &byte);
		if (oops != NULL) {
			if (*oops != '?')
				return oops;	/* bad number */
			if (i > 1)
				return oops+1;	/* failed number */
			return oops;		/* with leading '?' */
		}
		buf[i] = byte;
		if (i < 3 && src < stop && *src++ != '.') {
			if (i == 0)
				return "?syntax error in dotted-decimal address";
			else
				return "syntax error in dotted-decimal address";
		}
	}
	if (src != stop)
		return "extra garbage on end of dotted-decimal address";

	return initaddr(buf, sizeof(buf), AF_INET, dst);
}

/*
 - getbyte - try to scan a byte in dotted decimal
 * A subtlety here is that all this arithmetic on ASCII digits really is
 * highly portable -- ANSI C guarantees that digits 0-9 are contiguous.
 * It's easier to just do it ourselves than set up for a call to ttoul().
 *
 * If the first char of a complaint is '?', that means "didn't look like a
 * number at all".
 */
err_t
getbyte(srcp, stop, retp)
const char **srcp;		/* *srcp is updated */
const char *stop;		/* first untouchable char */
int *retp;			/* return-value pointer */
{
	char c;
	const char *p;
	int no;

	if (*srcp >= stop)
		return "?empty number in dotted-decimal address";

	no = 0;
	p = *srcp;
	while (p < stop && no <= 255 && (c = *p) >= '0' && c <= '9') {
		no = no*10 + (c - '0');
		p++;
	}
	if (p == *srcp)
		return "?non-numeric component in dotted-decimal address";
	*srcp = p;
	if (no > 255)
		return "byte overflow in dotted-decimal address";
	*retp = no;
	return NULL;
}

/*
 - colon - convert IPv6 "numeric" address
 */
static err_t
colon(src, srclen, dst)
const char *src;
size_t srclen;			/* known to be >0 */
ip_address *dst;
{
	const char *stop = src + srclen;	/* just past end */
  48d9a8:	00801821 	move	v1,a0
  48d9ac:	afbf004c 	sw	ra,76(sp)
  48d9b0:	afbc0048 	sw	gp,72(sp)
  48d9b4:	afb40040 	sw	s4,64(sp)
  48d9b8:	afb3003c 	sw	s3,60(sp)
  48d9bc:	afb20038 	sw	s2,56(sp)
  48d9c0:	afb00030 	sw	s0,48(sp)
  48d9c4:	afa40050 	sw	a0,80(sp)
	unsigned piece;
	int gapat;		/* where was empty piece seen */
	err_t oops;
#	define	NPIECES	8
	unsigned char buf[NPIECES*2];	/* short may have wrong byte order */
	int i;
	int j;
#	define	IT	"IPv6 numeric address"
	int naftergap;

	/* leading or trailing :: becomes single empty field */
	if (*src == ':') {		/* legal only if leading :: */
  48d9c8:	80640000 	lb	a0,0(v1)
  48d9cc:	00000000 	nop
  48d9d0:	00c0a821 	move	s5,a2
  48d9d4:	2406003a 	li	a2,58
  48d9d8:	1086009e 	beq	a0,a2,48dc54 <colon+0x2c8>
  48d9dc:	00658821 	addu	s1,v1,a1
		if (srclen == 1 || *(src+1) != ':')
			return "illegal leading `:' in " IT;
		if (srclen == 2) {
			unspecaddr(AF_INET6, dst);
			return NULL;
		}
		src++;		/* past first but not second */
		srclen--;
	}
	if (*(stop-1) == ':') {		/* legal only if trailing :: */
  48d9e0:	8223ffff 	lb	v1,-1(s1)
  48d9e4:	2409003a 	li	t1,58
  48d9e8:	1069008f 	beq	v1,t1,48dc28 <colon+0x29c>
  48d9ec:	240a0001 	li	t2,1
		if (srclen == 1 || *(stop-2) != ':')
			return "illegal trailing `:' in " IT;
		srclen--;		/* leave one */
	}

	gapat = -1;
	for (i = 0; i < NPIECES && src < stop; i++) {
  48d9f0:	8fa30050 	lw	v1,80(sp)
  48d9f4:	00000000 	nop
  48d9f8:	2413ffff 	li	s3,-1
  48d9fc:	0071582b 	sltu	t3,v1,s1
  48da00:	1160003d 	beqz	t3,48daf8 <colon+0x16c>
  48da04:	00008021 	move	s0,zero
  48da08:	2414003a 	li	s4,58
  48da0c:	27b20019 	addiu	s2,sp,25
		oops = getpiece(&src, stop, &piece);
  48da10:	27a30050 	addiu	v1,sp,80
  48da14:	00602021 	move	a0,v1
  48da18:	02202821 	move	a1,s1
  48da1c:	27a60028 	addiu	a2,sp,40
  48da20:	8f998050 	lw	t9,-32688(gp)
  48da24:	00000000 	nop
  48da28:	2739e360 	addiu	t9,t9,-7328
  48da2c:	00000000 	nop
  48da30:	0320f809 	jalr	t9
  48da34:	00000000 	nop
  48da38:	8fbc0010 	lw	gp,16(sp)
  48da3c:	00401821 	move	v1,v0
		if (oops != NULL && *oops == ':') {	/* empty field */
  48da40:	10600013 	beqz	v1,48da90 <colon+0x104>
  48da44:	00000000 	nop
  48da48:	806c0000 	lb	t4,0(v1)
  48da4c:	00000000 	nop
  48da50:	1194000a 	beq	t4,s4,48da7c <colon+0xf0>
  48da54:	00000000 	nop
			if (gapat >= 0)
				return "more than one :: in " IT;
			gapat = i;
		} else if (oops != NULL)
			return oops;
		buf[2*i] = piece >> 8;
		buf[2*i + 1] = piece & 0xff;
		if (i < NPIECES-1) {	/* there should be more input */
			if (src == stop && gapat < 0)
				return IT " ends prematurely";
			if (src != stop && *src++ != ':')
				return "syntax error in " IT;
		}
	}
	if (src != stop)
		return "extra garbage on end of " IT;

	if (gapat < 0 && i < NPIECES)	/* should have been caught earlier */
		return "incomplete " IT " (internal error)";
	if (gapat >= 0 && i == NPIECES)
		return "non-abbreviating empty field in " IT;
	if (gapat >= 0) {
		naftergap = i - (gapat + 1);
		for (i--, j = NPIECES-1; naftergap > 0; i--, j--, naftergap--) {
			buf[2*j] = buf[2*i];
			buf[2*j + 1] = buf[2*i + 1];
		}
		for (; j >= gapat; j--)
			buf[2*j] = buf[2*j + 1] = 0;
	}

	return initaddr(buf, sizeof(buf), AF_INET6, dst);
}
  48da58:	8fbf004c 	lw	ra,76(sp)
  48da5c:	8fb50044 	lw	s5,68(sp)
  48da60:	8fb40040 	lw	s4,64(sp)
  48da64:	8fb3003c 	lw	s3,60(sp)
  48da68:	8fb20038 	lw	s2,56(sp)
  48da6c:	8fb10034 	lw	s1,52(sp)
  48da70:	8fb00030 	lw	s0,48(sp)
  48da74:	03e00008 	jr	ra
  48da78:	27bd0050 	addiu	sp,sp,80
  48da7c:	8f82804c 	lw	v0,-32692(gp)
  48da80:	00000000 	nop
  48da84:	2442c724 	addiu	v0,v0,-14556
  48da88:	0661fff3 	bgez	s3,48da58 <colon+0xcc>
  48da8c:	02009821 	move	s3,s0
  48da90:	8faf0028 	lw	t7,40(sp)
  48da94:	00000000 	nop
  48da98:	2a0d0007 	slti	t5,s0,7
  48da9c:	000f7202 	srl	t6,t7,0x8
  48daa0:	a24effff 	sb	t6,-1(s2)
  48daa4:	93a2002b 	lbu	v0,43(sp)
  48daa8:	00000000 	nop
  48daac:	11a0005b 	beqz	t5,48dc1c <colon+0x290>
  48dab0:	a2420000 	sb	v0,0(s2)
  48dab4:	8fa30050 	lw	v1,80(sp)
  48dab8:	00000000 	nop
  48dabc:	10710050 	beq	v1,s1,48dc00 <colon+0x274>
  48dac0:	00000000 	nop
  48dac4:	90660000 	lbu	a2,0(v1)
  48dac8:	24630001 	addiu	v1,v1,1
  48dacc:	0006ce00 	sll	t9,a2,0x18
  48dad0:	0019c603 	sra	t8,t9,0x18
  48dad4:	17140045 	bne	t8,s4,48dbec <colon+0x260>
  48dad8:	afa30050 	sw	v1,80(sp)
  48dadc:	26100001 	addiu	s0,s0,1
  48dae0:	2a070008 	slti	a3,s0,8
  48dae4:	10e00004 	beqz	a3,48daf8 <colon+0x16c>
  48dae8:	26520002 	addiu	s2,s2,2
  48daec:	0071202b 	sltu	a0,v1,s1
  48daf0:	1480ffc7 	bnez	a0,48da10 <colon+0x84>
  48daf4:	00000000 	nop
  48daf8:	8f82804c 	lw	v0,-32692(gp)
  48dafc:	00000000 	nop
  48db00:	2442c750 	addiu	v0,v0,-14512
  48db04:	1471ffd4 	bne	v1,s1,48da58 <colon+0xcc>
  48db08:	00000000 	nop
  48db0c:	0660002f 	bltz	s3,48dbcc <colon+0x240>
  48db10:	24120008 	li	s2,8
  48db14:	8f82804c 	lw	v0,-32692(gp)
  48db18:	00000000 	nop
  48db1c:	2442c780 	addiu	v0,v0,-14464
  48db20:	1212ffcd 	beq	s0,s2,48da58 <colon+0xcc>
  48db24:	0213a023 	subu	s4,s0,s3
  48db28:	2685ffff 	addiu	a1,s4,-1
  48db2c:	2610ffff 	addiu	s0,s0,-1
  48db30:	18a00010 	blez	a1,48db74 <colon+0x1e8>
  48db34:	24070007 	li	a3,7
  48db38:	00104040 	sll	t0,s0,0x1
  48db3c:	27b00018 	addiu	s0,sp,24
  48db40:	01102021 	addu	a0,t0,s0
  48db44:	27a60026 	addiu	a2,sp,38
  48db48:	908a0000 	lbu	t2,0(a0)
  48db4c:	00000000 	nop
  48db50:	24a5ffff 	addiu	a1,a1,-1
  48db54:	a0ca0000 	sb	t2,0(a2)
  48db58:	90890001 	lbu	t1,1(a0)
  48db5c:	00000000 	nop
  48db60:	24e7ffff 	addiu	a3,a3,-1
  48db64:	a0c90001 	sb	t1,1(a2)
  48db68:	2484fffe 	addiu	a0,a0,-2
  48db6c:	1ca0fff6 	bgtz	a1,48db48 <colon+0x1bc>
  48db70:	24c6fffe 	addiu	a2,a2,-2
  48db74:	00f3282a 	slt	a1,a3,s3
  48db78:	14a00009 	bnez	a1,48dba0 <colon+0x214>
  48db7c:	27ab0018 	addiu	t3,sp,24
  48db80:	00071840 	sll	v1,a3,0x1
  48db84:	006b2021 	addu	a0,v1,t3
  48db88:	24e7ffff 	addiu	a3,a3,-1
  48db8c:	00f3602a 	slt	t4,a3,s3
  48db90:	a0800001 	sb	zero,1(a0)
  48db94:	a0800000 	sb	zero,0(a0)
  48db98:	1180fffb 	beqz	t4,48db88 <colon+0x1fc>
  48db9c:	2484fffe 	addiu	a0,a0,-2
  48dba0:	02a03821 	move	a3,s5
  48dba4:	27a40018 	addiu	a0,sp,24
  48dba8:	24050010 	li	a1,16
  48dbac:	2406000a 	li	a2,10
  48dbb0:	8f998b78 	lw	t9,-29832(gp)
  48dbb4:	00000000 	nop
  48dbb8:	0320f809 	jalr	t9
  48dbbc:	00000000 	nop
  48dbc0:	8fbc0010 	lw	gp,16(sp)
  48dbc4:	1000ffa4 	b	48da58 <colon+0xcc>
  48dbc8:	00000000 	nop
  48dbcc:	2a110008 	slti	s1,s0,8
  48dbd0:	1220fff4 	beqz	s1,48dba4 <colon+0x218>
  48dbd4:	02a03821 	move	a3,s5
  48dbd8:	8f82804c 	lw	v0,-32692(gp)
  48dbdc:	00000000 	nop
  48dbe0:	2442c7b8 	addiu	v0,v0,-14408
  48dbe4:	1000ff9c 	b	48da58 <colon+0xcc>
  48dbe8:	00000000 	nop
  48dbec:	8f82804c 	lw	v0,-32692(gp)
  48dbf0:	00000000 	nop
  48dbf4:	2442c7ec 	addiu	v0,v0,-14356
  48dbf8:	1000ff97 	b	48da58 <colon+0xcc>
  48dbfc:	00000000 	nop
  48dc00:	0661ffb7 	bgez	s3,48dae0 <colon+0x154>
  48dc04:	26100001 	addiu	s0,s0,1
  48dc08:	8f82804c 	lw	v0,-32692(gp)
  48dc0c:	00000000 	nop
  48dc10:	2442c814 	addiu	v0,v0,-14316
  48dc14:	1000ff90 	b	48da58 <colon+0xcc>
  48dc18:	00000000 	nop
  48dc1c:	8fa30050 	lw	v1,80(sp)
  48dc20:	1000ffaf 	b	48dae0 <colon+0x154>
  48dc24:	26100001 	addiu	s0,s0,1
  48dc28:	10aa0005 	beq	a1,t2,48dc40 <colon+0x2b4>
  48dc2c:	00000000 	nop
  48dc30:	8225fffe 	lb	a1,-2(s1)
  48dc34:	00000000 	nop
  48dc38:	10a3ff6d 	beq	a1,v1,48d9f0 <colon+0x64>
  48dc3c:	00000000 	nop
  48dc40:	8f82804c 	lw	v0,-32692(gp)
  48dc44:	00000000 	nop
  48dc48:	2442c83c 	addiu	v0,v0,-14276
  48dc4c:	1000ff82 	b	48da58 <colon+0xcc>
  48dc50:	00000000 	nop
  48dc54:	24060001 	li	a2,1
  48dc58:	10a60005 	beq	a1,a2,48dc70 <colon+0x2e4>
  48dc5c:	00000000 	nop
  48dc60:	80670001 	lb	a3,1(v1)
  48dc64:	00000000 	nop
  48dc68:	10e40006 	beq	a3,a0,48dc84 <colon+0x2f8>
  48dc6c:	24040002 	li	a0,2
  48dc70:	8f82804c 	lw	v0,-32692(gp)
  48dc74:	00000000 	nop
  48dc78:	2442c86c 	addiu	v0,v0,-14228
  48dc7c:	1000ff76 	b	48da58 <colon+0xcc>
  48dc80:	00000000 	nop
  48dc84:	10a40004 	beq	a1,a0,48dc98 <colon+0x30c>
  48dc88:	24680001 	addiu	t0,v1,1
  48dc8c:	afa80050 	sw	t0,80(sp)
  48dc90:	1000ff53 	b	48d9e0 <colon+0x54>
  48dc94:	24a5ffff 	addiu	a1,a1,-1
  48dc98:	02a02821 	move	a1,s5
  48dc9c:	2404000a 	li	a0,10
  48dca0:	8f9984d4 	lw	t9,-31532(gp)
  48dca4:	00000000 	nop
  48dca8:	0320f809 	jalr	t9
  48dcac:	00000000 	nop
  48dcb0:	8fbc0010 	lw	gp,16(sp)
  48dcb4:	00000000 	nop
  48dcb8:	1000ff67 	b	48da58 <colon+0xcc>
  48dcbc:	00001021 	move	v0,zero

0048dcc0 <tnatoaddr>:
  48dcc0:	3c1c0fb8 	lui	gp,0xfb8
  48dcc4:	279cecb0 	addiu	gp,gp,-4944
  48dcc8:	0399e021 	addu	gp,gp,t9
  48dccc:	27bdffd0 	addiu	sp,sp,-48
  48dcd0:	afbc0010 	sw	gp,16(sp)
  48dcd4:	00a01821 	move	v1,a1
  48dcd8:	afb20020 	sw	s2,32(sp)
  48dcdc:	afb1001c 	sw	s1,28(sp)
  48dce0:	afb00018 	sw	s0,24(sp)
  48dce4:	afbf0028 	sw	ra,40(sp)
  48dce8:	afbc0024 	sw	gp,36(sp)
  48dcec:	00c09021 	move	s2,a2
  48dcf0:	00e08821 	move	s1,a3
  48dcf4:	1060002d 	beqz	v1,48ddac <tnatoaddr+0xec>
  48dcf8:	00808021 	move	s0,a0
  48dcfc:	00602821 	move	a1,v1
  48dd00:	24030002 	li	v1,2
  48dd04:	02002021 	move	a0,s0
  48dd08:	12430015 	beq	s2,v1,48dd60 <tnatoaddr+0xa0>
  48dd0c:	02203021 	move	a2,s1
  48dd10:	2403000a 	li	v1,10
  48dd14:	8f82804c 	lw	v0,-32692(gp)
  48dd18:	00000000 	nop
  48dd1c:	2442c898 	addiu	v0,v0,-14184
  48dd20:	16430009 	bne	s2,v1,48dd48 <tnatoaddr+0x88>
  48dd24:	00000000 	nop
  48dd28:	8f998050 	lw	t9,-32688(gp)
  48dd2c:	00000000 	nop
  48dd30:	2739d98c 	addiu	t9,t9,-9844
  48dd34:	00000000 	nop
  48dd38:	0320f809 	jalr	t9
  48dd3c:	00000000 	nop
  48dd40:	8fbc0010 	lw	gp,16(sp)
  48dd44:	00000000 	nop
  48dd48:	8fbf0028 	lw	ra,40(sp)
  48dd4c:	8fb20020 	lw	s2,32(sp)
  48dd50:	8fb1001c 	lw	s1,28(sp)
  48dd54:	8fb00018 	lw	s0,24(sp)
  48dd58:	03e00008 	jr	ra
  48dd5c:	27bd0030 	addiu	sp,sp,48
  48dd60:	8f998050 	lw	t9,-32688(gp)
  48dd64:	00000000 	nop
  48dd68:	2739e110 	addiu	t9,t9,-7920
  48dd6c:	00000000 	nop
  48dd70:	0320f809 	jalr	t9
  48dd74:	00000000 	nop
  48dd78:	8fbc0010 	lw	gp,16(sp)
  48dd7c:	00401821 	move	v1,v0
  48dd80:	1060fff1 	beqz	v1,48dd48 <tnatoaddr+0x88>
  48dd84:	2405003f 	li	a1,63
  48dd88:	80660000 	lb	a2,0(v1)
  48dd8c:	00000000 	nop
  48dd90:	14c5ffed 	bne	a2,a1,48dd48 <tnatoaddr+0x88>
  48dd94:	00000000 	nop
  48dd98:	8f82804c 	lw	v0,-32692(gp)
  48dd9c:	00000000 	nop
  48dda0:	2442c8bc 	addiu	v0,v0,-14148
  48dda4:	1000ffe8 	b	48dd48 <tnatoaddr+0x88>
  48dda8:	00000000 	nop
  48ddac:	8f998188 	lw	t9,-32376(gp)
  48ddb0:	00000000 	nop
  48ddb4:	0320f809 	jalr	t9
  48ddb8:	00000000 	nop
  48ddbc:	8fbc0010 	lw	gp,16(sp)
  48ddc0:	00401821 	move	v1,v0
  48ddc4:	8f82804c 	lw	v0,-32692(gp)
  48ddc8:	00000000 	nop
  48ddcc:	2442c714 	addiu	v0,v0,-14572
  48ddd0:	1460ffcb 	bnez	v1,48dd00 <tnatoaddr+0x40>
  48ddd4:	00602821 	move	a1,v1
  48ddd8:	1000ffdb 	b	48dd48 <tnatoaddr+0x88>
  48dddc:	00000000 	nop

0048dde0 <tryname>:
  48dde0:	3c1c0fb8 	lui	gp,0xfb8
  48dde4:	279ceb90 	addiu	gp,gp,-5232
  48dde8:	0399e021 	addu	gp,gp,t9
  48ddec:	27bdff50 	addiu	sp,sp,-176
  48ddf0:	afbc0010 	sw	gp,16(sp)
  48ddf4:	afb40090 	sw	s4,144(sp)
  48ddf8:	afb3008c 	sw	s3,140(sp)
  48ddfc:	afb20088 	sw	s2,136(sp)
  48de00:	0080a021 	move	s4,a0
  48de04:	00a09821 	move	s3,a1
  48de08:	27b20018 	addiu	s2,sp,24
  48de0c:	afbe00a4 	sw	s8,164(sp)
  48de10:	afb7009c 	sw	s7,156(sp)
  48de14:	afb60098 	sw	s6,152(sp)
  48de18:	afb50094 	sw	s5,148(sp)
  48de1c:	afb10084 	sw	s1,132(sp)
  48de20:	afb00080 	sw	s0,128(sp)
  48de24:	afbf00a8 	sw	ra,168(sp)
  48de28:	afbc00a0 	sw	gp,160(sp)
  48de2c:	00c0b821 	move	s7,a2
  48de30:	00e0a821 	move	s5,a3
  48de34:	0000b021 	move	s6,zero
  48de38:	0240f021 	move	s8,s2
  48de3c:	02808021 	move	s0,s4
  48de40:	1260000b 	beqz	s3,48de70 <tryname+0x90>
  48de44:	02608821 	move	s1,s3
  48de48:	82030000 	lb	v1,0(s0)
  48de4c:	2631ffff 	addiu	s1,s1,-1
  48de50:	00602821 	move	a1,v1
  48de54:	8f84804c 	lw	a0,-32692(gp)
  48de58:	00000000 	nop
  48de5c:	2484c690 	addiu	a0,a0,-14704
  48de60:	04610075 	bgez	v1,48e038 <tryname+0x258>
  48de64:	26100001 	addiu	s0,s0,1
  48de68:	1620fff7 	bnez	s1,48de48 <tryname+0x68>
  48de6c:	00000000 	nop
  48de70:	12e00056 	beqz	s7,48dfcc <tryname+0x1ec>
  48de74:	02808021 	move	s0,s4
  48de78:	02002021 	move	a0,s0
  48de7c:	02a02821 	move	a1,s5
  48de80:	8f9981f0 	lw	t9,-32272(gp)
  48de84:	00000000 	nop
  48de88:	0320f809 	jalr	t9
  48de8c:	00000000 	nop
  48de90:	8fbc0010 	lw	gp,16(sp)
  48de94:	00408821 	move	s1,v0
  48de98:	12200043 	beqz	s1,48dfa8 <tryname+0x1c8>
  48de9c:	24040002 	li	a0,2
  48dea0:	125e0007 	beq	s2,s8,48dec0 <tryname+0xe0>
  48dea4:	02402021 	move	a0,s2
  48dea8:	8f998094 	lw	t9,-32620(gp)
  48deac:	00000000 	nop
  48deb0:	0320f809 	jalr	t9
  48deb4:	00000000 	nop
  48deb8:	8fbc0010 	lw	gp,16(sp)
  48debc:	00000000 	nop
  48dec0:	1220001f 	beqz	s1,48df40 <tryname+0x160>
  48dec4:	00000000 	nop
  48dec8:	8e250008 	lw	a1,8(s1)
  48decc:	8f82804c 	lw	v0,-32692(gp)
  48ded0:	00000000 	nop
  48ded4:	2442c8e4 	addiu	v0,v0,-14108
  48ded8:	10b5000d 	beq	a1,s5,48df10 <tryname+0x130>
  48dedc:	00000000 	nop
  48dee0:	8fbf00a8 	lw	ra,168(sp)
  48dee4:	8fbe00a4 	lw	s8,164(sp)
  48dee8:	8fb7009c 	lw	s7,156(sp)
  48deec:	8fb60098 	lw	s6,152(sp)
  48def0:	8fb50094 	lw	s5,148(sp)
  48def4:	8fb40090 	lw	s4,144(sp)
  48def8:	8fb3008c 	lw	s3,140(sp)
  48defc:	8fb20088 	lw	s2,136(sp)
  48df00:	8fb10084 	lw	s1,132(sp)
  48df04:	8fb00080 	lw	s0,128(sp)
  48df08:	03e00008 	jr	ra
  48df0c:	27bd00b0 	addiu	sp,sp,176
  48df10:	8e260010 	lw	a2,16(s1)
  48df14:	8e25000c 	lw	a1,12(s1)
  48df18:	8cc40000 	lw	a0,0(a2)
  48df1c:	8fa700c0 	lw	a3,192(sp)
  48df20:	02a03021 	move	a2,s5
  48df24:	8f998b78 	lw	t9,-29832(gp)
  48df28:	00000000 	nop
  48df2c:	0320f809 	jalr	t9
  48df30:	00000000 	nop
  48df34:	8fbc0010 	lw	gp,16(sp)
  48df38:	1000ffe9 	b	48dee0 <tryname+0x100>
  48df3c:	00000000 	nop
  48df40:	12c00014 	beqz	s6,48df94 <tryname+0x1b4>
  48df44:	00000000 	nop
  48df48:	8ec70008 	lw	a3,8(s6)
  48df4c:	00000000 	nop
  48df50:	10f50006 	beq	a3,s5,48df6c <tryname+0x18c>
  48df54:	26c4000c 	addiu	a0,s6,12
  48df58:	8f82804c 	lw	v0,-32692(gp)
  48df5c:	00000000 	nop
  48df60:	2442c914 	addiu	v0,v0,-14060
  48df64:	1000ffde 	b	48dee0 <tryname+0x100>
  48df68:	00000000 	nop
  48df6c:	8fa700c0 	lw	a3,192(sp)
  48df70:	02a03021 	move	a2,s5
  48df74:	24050004 	li	a1,4
  48df78:	8f998b78 	lw	t9,-29832(gp)
  48df7c:	00000000 	nop
  48df80:	0320f809 	jalr	t9
  48df84:	00000000 	nop
  48df88:	8fbc0010 	lw	gp,16(sp)
  48df8c:	1000ffd4 	b	48dee0 <tryname+0x100>
  48df90:	00000000 	nop
  48df94:	8f82804c 	lw	v0,-32692(gp)
  48df98:	00000000 	nop
  48df9c:	2442c940 	addiu	v0,v0,-14016
  48dfa0:	1000ffcf 	b	48dee0 <tryname+0x100>
  48dfa4:	00000000 	nop
  48dfa8:	16a4ffbd 	bne	s5,a0,48dea0 <tryname+0xc0>
  48dfac:	02002021 	move	a0,s0
  48dfb0:	8f998238 	lw	t9,-32200(gp)
  48dfb4:	00000000 	nop
  48dfb8:	0320f809 	jalr	t9
  48dfbc:	00000000 	nop
  48dfc0:	8fbc0010 	lw	gp,16(sp)
  48dfc4:	1000ffb6 	b	48dea0 <tryname+0xc0>
  48dfc8:	0040b021 	move	s6,v0
  48dfcc:	26640001 	addiu	a0,s3,1
  48dfd0:	2c830065 	sltiu	v1,a0,101
  48dfd4:	1460000c 	bnez	v1,48e008 <tryname+0x228>
  48dfd8:	00000000 	nop
  48dfdc:	8f9989d0 	lw	t9,-30256(gp)
  48dfe0:	00000000 	nop
  48dfe4:	0320f809 	jalr	t9
  48dfe8:	00000000 	nop
  48dfec:	8fbc0010 	lw	gp,16(sp)
  48dff0:	00409021 	move	s2,v0
  48dff4:	8f82804c 	lw	v0,-32692(gp)
  48dff8:	00000000 	nop
  48dffc:	2442c970 	addiu	v0,v0,-13968
  48e000:	1240ffb7 	beqz	s2,48dee0 <tryname+0x100>
  48e004:	00000000 	nop
  48e008:	a2400000 	sb	zero,0(s2)
  48e00c:	02802821 	move	a1,s4
  48e010:	02603021 	move	a2,s3
  48e014:	02402021 	move	a0,s2
  48e018:	8f998580 	lw	t9,-31360(gp)
  48e01c:	00000000 	nop
  48e020:	0320f809 	jalr	t9
  48e024:	00000000 	nop
  48e028:	8fbc0010 	lw	gp,16(sp)
  48e02c:	00000000 	nop
  48e030:	1000ff91 	b	48de78 <tryname+0x98>
  48e034:	02408021 	move	s0,s2
  48e038:	8f99813c 	lw	t9,-32452(gp)
  48e03c:	00000000 	nop
  48e040:	0320f809 	jalr	t9
  48e044:	00000000 	nop
  48e048:	8fbc0010 	lw	gp,16(sp)
  48e04c:	1440ff86 	bnez	v0,48de68 <tryname+0x88>
  48e050:	00000000 	nop
  48e054:	8f82804c 	lw	v0,-32692(gp)
  48e058:	00000000 	nop
  48e05c:	2442c998 	addiu	v0,v0,-13928
  48e060:	1000ff9f 	b	48dee0 <tryname+0x100>
  48e064:	00000000 	nop

0048e068 <tryhex>:
  48e068:	3c1c0fb8 	lui	gp,0xfb8
  48e06c:	279ce908 	addiu	gp,gp,-5880
  48e070:	0399e021 	addu	gp,gp,t9
  48e074:	27bdffd0 	addiu	sp,sp,-48
  48e078:	afbc0010 	sw	gp,16(sp)
  48e07c:	00a01821 	move	v1,a1
  48e080:	24090008 	li	t1,8
  48e084:	afb00020 	sw	s0,32(sp)
  48e088:	afbf0028 	sw	ra,40(sp)
  48e08c:	00e08021 	move	s0,a3
  48e090:	afbc0024 	sw	gp,36(sp)
  48e094:	24060010 	li	a2,16
  48e098:	8f82804c 	lw	v0,-32692(gp)
  48e09c:	00000000 	nop
  48e0a0:	2442c9c4 	addiu	v0,v0,-13884
  48e0a4:	10690005 	beq	v1,t1,48e0bc <tryhex+0x54>
  48e0a8:	27a70018 	addiu	a3,sp,24
  48e0ac:	8fbf0028 	lw	ra,40(sp)
  48e0b0:	8fb00020 	lw	s0,32(sp)
  48e0b4:	03e00008 	jr	ra
  48e0b8:	27bd0030 	addiu	sp,sp,48
  48e0bc:	8f9986bc 	lw	t9,-31044(gp)
  48e0c0:	00000000 	nop
  48e0c4:	0320f809 	jalr	t9
  48e0c8:	00000000 	nop
  48e0cc:	8fbc0010 	lw	gp,16(sp)
  48e0d0:	00404021 	move	t0,v0
  48e0d4:	27a4001c 	addiu	a0,sp,28
  48e0d8:	24050004 	li	a1,4
  48e0dc:	24060002 	li	a2,2
  48e0e0:	1500fff2 	bnez	t0,48e0ac <tryhex+0x44>
  48e0e4:	02003821 	move	a3,s0
  48e0e8:	8fa90018 	lw	t1,24(sp)
  48e0ec:	00000000 	nop
  48e0f0:	afa9001c 	sw	t1,28(sp)
  48e0f4:	8f998b78 	lw	t9,-29832(gp)
  48e0f8:	00000000 	nop
  48e0fc:	0320f809 	jalr	t9
  48e100:	00000000 	nop
  48e104:	8fbc0010 	lw	gp,16(sp)
  48e108:	1000ffe8 	b	48e0ac <tryhex+0x44>
  48e10c:	00000000 	nop

0048e110 <trydotted>:
  48e110:	3c1c0fb8 	lui	gp,0xfb8
  48e114:	279ce860 	addiu	gp,gp,-6048
  48e118:	0399e021 	addu	gp,gp,t9
  48e11c:	27bdffc0 	addiu	sp,sp,-64
  48e120:	afbc0010 	sw	gp,16(sp)
  48e124:	00801821 	move	v1,a0
  48e128:	afb00028 	sw	s0,40(sp)
  48e12c:	00658021 	addu	s0,v1,a1
  48e130:	0070282b 	sltu	a1,v1,s0
  48e134:	afb20030 	sw	s2,48(sp)
  48e138:	afb1002c 	sw	s1,44(sp)
  48e13c:	afbf0038 	sw	ra,56(sp)
  48e140:	afbc0034 	sw	gp,52(sp)
  48e144:	afa40040 	sw	a0,64(sp)
  48e148:	00c09021 	move	s2,a2
  48e14c:	afa00018 	sw	zero,24(sp)
  48e150:	10a0004f 	beqz	a1,48e290 <trydotted+0x180>
  48e154:	00008821 	move	s1,zero
  48e158:	27a30040 	addiu	v1,sp,64
  48e15c:	00602021 	move	a0,v1
  48e160:	02002821 	move	a1,s0
  48e164:	27a60020 	addiu	a2,sp,32
  48e168:	8f998050 	lw	t9,-32688(gp)
  48e16c:	00000000 	nop
  48e170:	2739e298 	addiu	t9,t9,-7528
  48e174:	00000000 	nop
  48e178:	0320f809 	jalr	t9
  48e17c:	00000000 	nop
  48e180:	8fbc0010 	lw	gp,16(sp)
  48e184:	00402821 	move	a1,v0
  48e188:	03b11821 	addu	v1,sp,s1
  48e18c:	14a00038 	bnez	a1,48e270 <trydotted+0x160>
  48e190:	2a240003 	slti	a0,s1,3
  48e194:	93a50023 	lbu	a1,35(sp)
  48e198:	00000000 	nop
  48e19c:	10800031 	beqz	a0,48e264 <trydotted+0x154>
  48e1a0:	a0650018 	sb	a1,24(v1)
  48e1a4:	8fa40040 	lw	a0,64(sp)
  48e1a8:	2405002e 	li	a1,46
  48e1ac:	0090402b 	sltu	t0,a0,s0
  48e1b0:	11000007 	beqz	t0,48e1d0 <trydotted+0xc0>
  48e1b4:	24830001 	addiu	v1,a0,1
  48e1b8:	908b0000 	lbu	t3,0(a0)
  48e1bc:	00602021 	move	a0,v1
  48e1c0:	000b5600 	sll	t2,t3,0x18
  48e1c4:	000a4e03 	sra	t1,t2,0x18
  48e1c8:	1525001c 	bne	t1,a1,48e23c <trydotted+0x12c>
  48e1cc:	afa30040 	sw	v1,64(sp)
  48e1d0:	26310001 	addiu	s1,s1,1
  48e1d4:	2a2c0004 	slti	t4,s1,4
  48e1d8:	11800003 	beqz	t4,48e1e8 <trydotted+0xd8>
  48e1dc:	0090182b 	sltu	v1,a0,s0
  48e1e0:	1460ffde 	bnez	v1,48e15c <trydotted+0x4c>
  48e1e4:	27a30040 	addiu	v1,sp,64
  48e1e8:	8f82804c 	lw	v0,-32692(gp)
  48e1ec:	00000000 	nop
  48e1f0:	2442c9f4 	addiu	v0,v0,-13836
  48e1f4:	10900007 	beq	a0,s0,48e214 <trydotted+0x104>
  48e1f8:	02403821 	move	a3,s2
  48e1fc:	8fbf0038 	lw	ra,56(sp)
  48e200:	8fb20030 	lw	s2,48(sp)
  48e204:	8fb1002c 	lw	s1,44(sp)
  48e208:	8fb00028 	lw	s0,40(sp)
  48e20c:	03e00008 	jr	ra
  48e210:	27bd0040 	addiu	sp,sp,64
  48e214:	27a40018 	addiu	a0,sp,24
  48e218:	24050004 	li	a1,4
  48e21c:	24060002 	li	a2,2
  48e220:	8f998b78 	lw	t9,-29832(gp)
  48e224:	00000000 	nop
  48e228:	0320f809 	jalr	t9
  48e22c:	00000000 	nop
  48e230:	8fbc0010 	lw	gp,16(sp)
  48e234:	1000fff1 	b	48e1fc <trydotted+0xec>
  48e238:	00000000 	nop
  48e23c:	8f82804c 	lw	v0,-32692(gp)
  48e240:	00000000 	nop
  48e244:	2442ca24 	addiu	v0,v0,-13788
  48e248:	1220ffec 	beqz	s1,48e1fc <trydotted+0xec>
  48e24c:	00000000 	nop
  48e250:	8f82804c 	lw	v0,-32692(gp)
  48e254:	00000000 	nop
  48e258:	2442ca4c 	addiu	v0,v0,-13748
  48e25c:	1000ffe7 	b	48e1fc <trydotted+0xec>
  48e260:	00000000 	nop
  48e264:	8fa40040 	lw	a0,64(sp)
  48e268:	1000ffda 	b	48e1d4 <trydotted+0xc4>
  48e26c:	26310001 	addiu	s1,s1,1
  48e270:	80a70000 	lb	a3,0(a1)
  48e274:	2406003f 	li	a2,63
  48e278:	14e6ffe0 	bne	a3,a2,48e1fc <trydotted+0xec>
  48e27c:	2a240002 	slti	a0,s1,2
  48e280:	1480ffde 	bnez	a0,48e1fc <trydotted+0xec>
  48e284:	00000000 	nop
  48e288:	1000ffdc 	b	48e1fc <trydotted+0xec>
  48e28c:	24a20001 	addiu	v0,a1,1
  48e290:	1000ffd5 	b	48e1e8 <trydotted+0xd8>
  48e294:	00602021 	move	a0,v1

0048e298 <getbyte>:
  48e298:	3c1c0fb8 	lui	gp,0xfb8
  48e29c:	279ce6d8 	addiu	gp,gp,-6440
  48e2a0:	0399e021 	addu	gp,gp,t9
  48e2a4:	8c8a0000 	lw	t2,0(a0)
  48e2a8:	8f82804c 	lw	v0,-32692(gp)
  48e2ac:	00000000 	nop
  48e2b0:	2442ca74 	addiu	v0,v0,-13708
  48e2b4:	0145382b 	sltu	a3,t2,a1
  48e2b8:	10e00027 	beqz	a3,48e358 <getbyte+0xc0>
  48e2bc:	00000000 	nop
  48e2c0:	01404021 	move	t0,t2
  48e2c4:	81430000 	lb	v1,0(t2)
  48e2c8:	00000000 	nop
  48e2cc:	28670030 	slti	a3,v1,48
  48e2d0:	14e00015 	bnez	a3,48e328 <getbyte+0x90>
  48e2d4:	00004821 	move	t1,zero
  48e2d8:	286b003a 	slti	t3,v1,58
  48e2dc:	11600012 	beqz	t3,48e328 <getbyte+0x90>
  48e2e0:	00097880 	sll	t7,t1,0x2
  48e2e4:	01e97021 	addu	t6,t7,t1
  48e2e8:	000e4840 	sll	t1,t6,0x1
  48e2ec:	25080001 	addiu	t0,t0,1
  48e2f0:	01236821 	addu	t5,t1,v1
  48e2f4:	25a9ffd0 	addiu	t1,t5,-48
  48e2f8:	0105602b 	sltu	t4,t0,a1
  48e2fc:	1180000a 	beqz	t4,48e328 <getbyte+0x90>
  48e300:	29220100 	slti	v0,t1,256
  48e304:	10400008 	beqz	v0,48e328 <getbyte+0x90>
  48e308:	00000000 	nop
  48e30c:	81030000 	lb	v1,0(t0)
  48e310:	00000000 	nop
  48e314:	28780030 	slti	t8,v1,48
  48e318:	17000003 	bnez	t8,48e328 <getbyte+0x90>
  48e31c:	2867003a 	slti	a3,v1,58
  48e320:	14e0fff0 	bnez	a3,48e2e4 <getbyte+0x4c>
  48e324:	00097880 	sll	t7,t1,0x2
  48e328:	8f82804c 	lw	v0,-32692(gp)
  48e32c:	00000000 	nop
  48e330:	2442ca9c 	addiu	v0,v0,-13668
  48e334:	110a0008 	beq	t0,t2,48e358 <getbyte+0xc0>
  48e338:	29250100 	slti	a1,t1,256
  48e33c:	8f82804c 	lw	v0,-32692(gp)
  48e340:	00000000 	nop
  48e344:	2442cad0 	addiu	v0,v0,-13616
  48e348:	10a00003 	beqz	a1,48e358 <getbyte+0xc0>
  48e34c:	ac880000 	sw	t0,0(a0)
  48e350:	acc90000 	sw	t1,0(a2)
  48e354:	00001021 	move	v0,zero
  48e358:	03e00008 	jr	ra
  48e35c:	00000000 	nop

0048e360 <getpiece>:
  48e360:	3c1c0fb8 	lui	gp,0xfb8
  48e364:	279ce610 	addiu	gp,gp,-6640
  48e368:	0399e021 	addu	gp,gp,t9
  48e36c:	27bdffc0 	addiu	sp,sp,-64
  48e370:	afbc0010 	sw	gp,16(sp)
  48e374:	afb50034 	sw	s5,52(sp)
  48e378:	afb40030 	sw	s4,48(sp)
  48e37c:	afb3002c 	sw	s3,44(sp)
  48e380:	afbf003c 	sw	ra,60(sp)
  48e384:	afbc0038 	sw	gp,56(sp)
  48e388:	afb20028 	sw	s2,40(sp)
  48e38c:	afb10024 	sw	s1,36(sp)
  48e390:	afb00020 	sw	s0,32(sp)
  48e394:	0080a021 	move	s4,a0

/*
 - getpiece - try to scan one 16-bit piece of an IPv6 address
 */
err_t				/* ":" means "empty field seen" */
getpiece(srcp, stop, retp)
const char **srcp;		/* *srcp is updated */
const char *stop;		/* first untouchable char */
unsigned *retp;			/* return-value pointer */
{
	const char *p;
#	define	NDIG	4
	int d;
	unsigned long ret;
	err_t oops;

	if (*srcp >= stop || **srcp == ':') {	/* empty field */
  48e398:	8e840000 	lw	a0,0(s4)
  48e39c:	00000000 	nop
  48e3a0:	00a09821 	move	s3,a1
  48e3a4:	0093182b 	sltu	v1,a0,s3
  48e3a8:	10600047 	beqz	v1,48e4c8 <getpiece+0x168>
  48e3ac:	00c0a821 	move	s5,a2
  48e3b0:	80820000 	lb	v0,0(a0)
  48e3b4:	2405003a 	li	a1,58
  48e3b8:	10450043 	beq	v0,a1,48e4c8 <getpiece+0x168>
  48e3bc:	00808021 	move	s0,a0
		*retp = 0;
		return ":";
	}

	p = *srcp;
	d = 0;
  48e3c0:	00009021 	move	s2,zero
	while (p < stop && d < NDIG && isxdigit(*p)) {
  48e3c4:	0213882b 	sltu	s1,s0,s3
  48e3c8:	1220000e 	beqz	s1,48e404 <getpiece+0xa4>
  48e3cc:	2a420004 	slti	v0,s2,4
  48e3d0:	1040000c 	beqz	v0,48e404 <getpiece+0xa4>
  48e3d4:	00000000 	nop
  48e3d8:	82040000 	lb	a0,0(s0)
  48e3dc:	8f998870 	lw	t9,-30608(gp)
  48e3e0:	00000000 	nop
  48e3e4:	0320f809 	jalr	t9
  48e3e8:	00000000 	nop
  48e3ec:	8fbc0010 	lw	gp,16(sp)
  48e3f0:	10400004 	beqz	v0,48e404 <getpiece+0xa4>
  48e3f4:	00000000 	nop
		p++;
  48e3f8:	26100001 	addiu	s0,s0,1
		d++;
  48e3fc:	1000fff1 	b	48e3c4 <getpiece+0x64>
  48e400:	26520001 	addiu	s2,s2,1
	}
	if (d == 0)
  48e404:	8f82804c 	lw	v0,-32692(gp)
  48e408:	00000000 	nop
  48e40c:	2442caf8 	addiu	v0,v0,-13576
  48e410:	12400011 	beqz	s2,48e458 <getpiece+0xf8>
  48e414:	00000000 	nop
		return "non-hex field in IPv6 numeric address";
	if (p < stop && d == NDIG && isxdigit(*p))
  48e418:	12200003 	beqz	s1,48e428 <getpiece+0xc8>
  48e41c:	24030004 	li	v1,4
  48e420:	1243001b 	beq	s2,v1,48e490 <getpiece+0x130>
  48e424:	00000000 	nop
		return "field in IPv6 numeric address longer than 4 hex digits";

	oops = ttoul(*srcp, d, 16, &ret);
  48e428:	8e840000 	lw	a0,0(s4)
  48e42c:	24060010 	li	a2,16
  48e430:	02402821 	move	a1,s2
  48e434:	27a70018 	addiu	a3,sp,24
  48e438:	8f9986bc 	lw	t9,-31044(gp)
  48e43c:	00000000 	nop
  48e440:	0320f809 	jalr	t9
  48e444:	00000000 	nop
  48e448:	8fbc0010 	lw	gp,16(sp)
  48e44c:	00403021 	move	a2,v0
	if (oops != NULL)	/* shouldn't happen, really... */
  48e450:	10c0000a 	beqz	a2,48e47c <getpiece+0x11c>
  48e454:	00000000 	nop
		return oops;

	*srcp = p;
	*retp = ret;
	return NULL;
}
  48e458:	8fbf003c 	lw	ra,60(sp)
  48e45c:	8fb50034 	lw	s5,52(sp)
  48e460:	8fb40030 	lw	s4,48(sp)
  48e464:	8fb3002c 	lw	s3,44(sp)
  48e468:	8fb20028 	lw	s2,40(sp)
  48e46c:	8fb10024 	lw	s1,36(sp)
  48e470:	8fb00020 	lw	s0,32(sp)
  48e474:	03e00008 	jr	ra
  48e478:	27bd0040 	addiu	sp,sp,64
  48e47c:	8fa70018 	lw	a3,24(sp)
  48e480:	00000000 	nop
  48e484:	ae900000 	sw	s0,0(s4)
  48e488:	1000fff3 	b	48e458 <getpiece+0xf8>
  48e48c:	aea70000 	sw	a3,0(s5)
  48e490:	82040000 	lb	a0,0(s0)
  48e494:	8f998870 	lw	t9,-30608(gp)
  48e498:	00000000 	nop
  48e49c:	0320f809 	jalr	t9
  48e4a0:	00000000 	nop
  48e4a4:	8fbc0010 	lw	gp,16(sp)
  48e4a8:	00402021 	move	a0,v0
  48e4ac:	8f82804c 	lw	v0,-32692(gp)
  48e4b0:	00000000 	nop
  48e4b4:	2442cb20 	addiu	v0,v0,-13536
  48e4b8:	1480ffe7 	bnez	a0,48e458 <getpiece+0xf8>
  48e4bc:	00000000 	nop
  48e4c0:	1000ffd9 	b	48e428 <getpiece+0xc8>
  48e4c4:	00000000 	nop
  48e4c8:	8f82804c 	lw	v0,-32692(gp)
  48e4cc:	00000000 	nop
  48e4d0:	2442cb58 	addiu	v0,v0,-13480
  48e4d4:	00000000 	nop
  48e4d8:	1000ffdf 	b	48e458 <getpiece+0xf8>
  48e4dc:	aea00000 	sw	zero,0(s5)

0048e4e0 <ttodatav>:
  48e4e0:	3c1c0fb8 	lui	gp,0xfb8
  48e4e4:	279ce490 	addiu	gp,gp,-7024
  48e4e8:	0399e021 	addu	gp,gp,t9
  48e4ec:	27bdffb0 	addiu	sp,sp,-80
  48e4f0:	afbc0010 	sw	gp,16(sp)
  48e4f4:	afb20028 	sw	s2,40(sp)
  48e4f8:	00a09021 	move	s2,a1
  48e4fc:	afbe0044 	sw	s8,68(sp)
  48e500:	afb40030 	sw	s4,48(sp)
  48e504:	afb3002c 	sw	s3,44(sp)
  48e508:	afb10024 	sw	s1,36(sp)
  48e50c:	afb00020 	sw	s0,32(sp)
  48e510:	afbf0048 	sw	ra,72(sp)
  48e514:	afbc0040 	sw	gp,64(sp)
  48e518:	afb7003c 	sw	s7,60(sp)
  48e51c:	afb60038 	sw	s6,56(sp)
  48e520:	afb50034 	sw	s5,52(sp)
  48e524:	00c08021 	move	s0,a2
  48e528:	00e09821 	move	s3,a3
  48e52c:	8fb40060 	lw	s4,96(sp)
  48e530:	8fbe0064 	lw	s8,100(sp)
  48e534:	00000000 	nop
	int ndone;
	int i;
	int underscoreok;

	if (srclen == 0)
  48e538:	124000b9 	beqz	s2,48e820 <ttodatav+0x340>
  48e53c:	00808821 	move	s1,a0
		srclen = strlen(src);
	if (dstlen == 0)
  48e540:	128000b5 	beqz	s4,48e818 <ttodatav+0x338>
  48e544:	00000000 	nop
		dst = buf;	/* point it somewhere valid */
	stop = dst + dstlen;

	if (base == 0) {
  48e548:	12000087 	beqz	s0,48e768 <ttodatav+0x288>
  48e54c:	0274b821 	addu	s7,s3,s4
		if (srclen < 2)
			return "input too short to be valid";
		if (*src++ != '0')
			return "input does not begin with format prefix";
		switch (*src++) {
		case 'x':
		case 'X':
			base = 16;
			break;
		case 's':
		case 'S':
			base = 64;
			break;
		case 't':
		case 'T':
			base = 256;
			break;
		default:
			return "unknown format prefix";
			break;
		}
		srclen -= 2;
	}
	switch (base) {
  48e550:	240b0040 	li	t3,64
  48e554:	120b007d 	beq	s0,t3,48e74c <ttodatav+0x26c>
  48e558:	2a0c0041 	slti	t4,s0,65
  48e55c:	11800073 	beqz	t4,48e72c <ttodatav+0x24c>
  48e560:	240e0100 	li	t6,256
  48e564:	240d0010 	li	t5,16
  48e568:	120d0011 	beq	s0,t5,48e5b0 <ttodatav+0xd0>
  48e56c:	24140002 	li	s4,2
	case 16:
		ingroup = 2;
		decode = unhex;
		underscoreok = 1;
		break;
	case 64:
		ingroup = 4;
		decode = unb64;
		underscoreok = 0;
		break;
	case 256:
		ingroup = 1;
		decode = untext;
		underscoreok = 0;
		break;
	default:
		return "unknown base";
  48e570:	8f82804c 	lw	v0,-32692(gp)
  48e574:	00000000 	nop
  48e578:	2442cb60 	addiu	v0,v0,-13472
  48e57c:	00000000 	nop
		break;
	}

	/* proceed */
	ndone = 0;
	while (srclen >= ingroup) {
		nbytes = (*decode)(src, buf, sizeof(buf));
		switch (nbytes) {
		case BADCH0:
		case BADCH1:
		case BADCH2:
		case BADCH3:
			return badch(src, nbytes, errp, errlen);
			break;
		case SHORT:
			return "internal buffer too short (\"can't happen\")";
			break;
		case BADPAD:
			return "bad (non-zero) padding at end of base64 input";
			break;
		}
		if (nbytes <= 0)
			return "unknown internal error";
		for (i = 0; i < nbytes; i++) {
			if (dst < stop)
				*dst++ = buf[i];
			ndone++;
		}
		src += ingroup;
		srclen -= ingroup;
		if (underscoreok && srclen > 1 && *src == '_') {
			/* srclen > 1 means not last character */
			src++;
			srclen--;
		}
	}
	if (srclen != 0)
		return "input ends in mid-byte, perhaps truncated";
	if (ndone == 0)
		return "no data bytes specified by input";
	if (lenp != NULL)
		*lenp = ndone;
	return NULL;
}
  48e580:	8fbf0048 	lw	ra,72(sp)
  48e584:	8fbe0044 	lw	s8,68(sp)
  48e588:	8fb7003c 	lw	s7,60(sp)
  48e58c:	8fb60038 	lw	s6,56(sp)
  48e590:	8fb50034 	lw	s5,52(sp)
  48e594:	8fb40030 	lw	s4,48(sp)
  48e598:	8fb3002c 	lw	s3,44(sp)
  48e59c:	8fb20028 	lw	s2,40(sp)
  48e5a0:	8fb10024 	lw	s1,36(sp)
  48e5a4:	8fb00020 	lw	s0,32(sp)
  48e5a8:	03e00008 	jr	ra
  48e5ac:	27bd0050 	addiu	sp,sp,80
  48e5b0:	8f968050 	lw	s6,-32688(gp)
  48e5b4:	00000000 	nop
  48e5b8:	26d6eb38 	addiu	s6,s6,-5320
  48e5bc:	00000000 	nop
  48e5c0:	24150001 	li	s5,1
  48e5c4:	0254782b 	sltu	t7,s2,s4
  48e5c8:	15e00034 	bnez	t7,48e69c <ttodatav+0x1bc>
  48e5cc:	00008021 	move	s0,zero
  48e5d0:	27a50018 	addiu	a1,sp,24
  48e5d4:	02202021 	move	a0,s1
  48e5d8:	24060004 	li	a2,4
  48e5dc:	02c0c821 	move	t9,s6
  48e5e0:	0320f809 	jalr	t9
  48e5e4:	00000000 	nop
  48e5e8:	8fbc0010 	lw	gp,16(sp)
  48e5ec:	00402821 	move	a1,v0
  48e5f0:	2418fffd 	li	t8,-3
  48e5f4:	8f82804c 	lw	v0,-32692(gp)
  48e5f8:	00000000 	nop
  48e5fc:	2442cb70 	addiu	v0,v0,-13456
  48e600:	10b8ffdf 	beq	a1,t8,48e580 <ttodatav+0xa0>
  48e604:	28b9fffe 	slti	t9,a1,-2
  48e608:	13200041 	beqz	t9,48e710 <ttodatav+0x230>
  48e60c:	2406fffe 	li	a2,-2
  48e610:	28a4fff9 	slti	a0,a1,-7
  48e614:	10800033 	beqz	a0,48e6e4 <ttodatav+0x204>
  48e618:	02202021 	move	a0,s1
  48e61c:	8f82804c 	lw	v0,-32692(gp)
  48e620:	00000000 	nop
  48e624:	2442cba0 	addiu	v0,v0,-13408
  48e628:	18a0ffd5 	blez	a1,48e580 <ttodatav+0xa0>
  48e62c:	00000000 	nop
  48e630:	18a0000d 	blez	a1,48e668 <ttodatav+0x188>
  48e634:	00002021 	move	a0,zero
  48e638:	27a60018 	addiu	a2,sp,24
  48e63c:	0277382b 	sltu	a3,s3,s7
  48e640:	10e00005 	beqz	a3,48e658 <ttodatav+0x178>
  48e644:	00c41821 	addu	v1,a2,a0
  48e648:	90680000 	lbu	t0,0(v1)
  48e64c:	00000000 	nop
  48e650:	a2680000 	sb	t0,0(s3)
  48e654:	26730001 	addiu	s3,s3,1
  48e658:	24840001 	addiu	a0,a0,1
  48e65c:	0085482a 	slt	t1,a0,a1
  48e660:	1520fff6 	bnez	t1,48e63c <ttodatav+0x15c>
  48e664:	26100001 	addiu	s0,s0,1
  48e668:	02348821 	addu	s1,s1,s4
  48e66c:	12a00008 	beqz	s5,48e690 <ttodatav+0x1b0>
  48e670:	02549023 	subu	s2,s2,s4
  48e674:	2e450002 	sltiu	a1,s2,2
  48e678:	14a00006 	bnez	a1,48e694 <ttodatav+0x1b4>
  48e67c:	0254582b 	sltu	t3,s2,s4
  48e680:	82220000 	lb	v0,0(s1)
  48e684:	240a005f 	li	t2,95
  48e688:	104a0013 	beq	v0,t2,48e6d8 <ttodatav+0x1f8>
  48e68c:	00000000 	nop
  48e690:	0254582b 	sltu	t3,s2,s4
  48e694:	1160ffcf 	beqz	t3,48e5d4 <ttodatav+0xf4>
  48e698:	27a50018 	addiu	a1,sp,24
  48e69c:	8f82804c 	lw	v0,-32692(gp)
  48e6a0:	00000000 	nop
  48e6a4:	2442cbb8 	addiu	v0,v0,-13384
  48e6a8:	1640ffb5 	bnez	s2,48e580 <ttodatav+0xa0>
  48e6ac:	00000000 	nop
  48e6b0:	8f82804c 	lw	v0,-32692(gp)
  48e6b4:	00000000 	nop
  48e6b8:	2442cbe4 	addiu	v0,v0,-13340
  48e6bc:	1200ffb0 	beqz	s0,48e580 <ttodatav+0xa0>
  48e6c0:	00000000 	nop
  48e6c4:	13c00002 	beqz	s8,48e6d0 <ttodatav+0x1f0>
  48e6c8:	00000000 	nop
  48e6cc:	afd00000 	sw	s0,0(s8)
  48e6d0:	1000ffab 	b	48e580 <ttodatav+0xa0>
  48e6d4:	00001021 	move	v0,zero
  48e6d8:	26310001 	addiu	s1,s1,1
  48e6dc:	1000ffec 	b	48e690 <ttodatav+0x1b0>
  48e6e0:	2652ffff 	addiu	s2,s2,-1
  48e6e4:	8fa60068 	lw	a2,104(sp)
  48e6e8:	8fa7006c 	lw	a3,108(sp)
  48e6ec:	8f998050 	lw	t9,-32688(gp)
  48e6f0:	00000000 	nop
  48e6f4:	2739ece8 	addiu	t9,t9,-4888
  48e6f8:	00000000 	nop
  48e6fc:	0320f809 	jalr	t9
  48e700:	00000000 	nop
  48e704:	8fbc0010 	lw	gp,16(sp)
  48e708:	1000ff9d 	b	48e580 <ttodatav+0xa0>
  48e70c:	00000000 	nop
  48e710:	8f82804c 	lw	v0,-32692(gp)
  48e714:	00000000 	nop
  48e718:	2442cc08 	addiu	v0,v0,-13304
  48e71c:	14a6ffbf 	bne	a1,a2,48e61c <ttodatav+0x13c>
  48e720:	00000000 	nop
  48e724:	1000ff96 	b	48e580 <ttodatav+0xa0>
  48e728:	00000000 	nop
  48e72c:	160eff90 	bne	s0,t6,48e570 <ttodatav+0x90>
  48e730:	24140001 	li	s4,1
  48e734:	8f968050 	lw	s6,-32688(gp)
  48e738:	00000000 	nop
  48e73c:	26d6ecbc 	addiu	s6,s6,-4932
  48e740:	00000000 	nop
  48e744:	1000ff9f 	b	48e5c4 <ttodatav+0xe4>
  48e748:	0000a821 	move	s5,zero
  48e74c:	24140004 	li	s4,4
  48e750:	8f968050 	lw	s6,-32688(gp)
  48e754:	00000000 	nop
  48e758:	26d6e83c 	addiu	s6,s6,-6084
  48e75c:	00000000 	nop
  48e760:	1000ff98 	b	48e5c4 <ttodatav+0xe4>
  48e764:	0000a821 	move	s5,zero
  48e768:	2e440002 	sltiu	a0,s2,2
  48e76c:	8f82804c 	lw	v0,-32692(gp)
  48e770:	00000000 	nop
  48e774:	2442cc34 	addiu	v0,v0,-13260
  48e778:	1480ff81 	bnez	a0,48e580 <ttodatav+0xa0>
  48e77c:	24050030 	li	a1,48
  48e780:	92260000 	lbu	a2,0(s1)
  48e784:	00000000 	nop
  48e788:	00061600 	sll	v0,a2,0x18
  48e78c:	00022603 	sra	a0,v0,0x18
  48e790:	8f82804c 	lw	v0,-32692(gp)
  48e794:	00000000 	nop
  48e798:	2442cc50 	addiu	v0,v0,-13232
  48e79c:	1485ff78 	bne	a0,a1,48e580 <ttodatav+0xa0>
  48e7a0:	26310001 	addiu	s1,s1,1
  48e7a4:	92280000 	lbu	t0,0(s1)
  48e7a8:	00000000 	nop
  48e7ac:	2503ffad 	addiu	v1,t0,-83
  48e7b0:	306200ff 	andi	v0,v1,0xff
  48e7b4:	2c470026 	sltiu	a3,v0,38
  48e7b8:	10e00012 	beqz	a3,48e804 <ttodatav+0x324>
  48e7bc:	26310001 	addiu	s1,s1,1
  48e7c0:	00025080 	sll	t2,v0,0x2
  48e7c4:	8f89804c 	lw	t1,-32692(gp)
  48e7c8:	00000000 	nop
  48e7cc:	2529cc90 	addiu	t1,t1,-13168
  48e7d0:	012a4821 	addu	t1,t1,t2
  48e7d4:	8d290000 	lw	t1,0(t1)
  48e7d8:	00000000 	nop
  48e7dc:	013c4821 	addu	t1,t1,gp
  48e7e0:	01200008 	jr	t1
  48e7e4:	00000000 	nop
  48e7e8:	24100010 	li	s0,16
  48e7ec:	1000ff58 	b	48e550 <ttodatav+0x70>
  48e7f0:	2652fffe 	addiu	s2,s2,-2
  48e7f4:	1000fffd 	b	48e7ec <ttodatav+0x30c>
  48e7f8:	24100040 	li	s0,64
  48e7fc:	1000fffb 	b	48e7ec <ttodatav+0x30c>
  48e800:	24100100 	li	s0,256
  48e804:	8f82804c 	lw	v0,-32692(gp)
  48e808:	00000000 	nop
  48e80c:	2442cc78 	addiu	v0,v0,-13192
  48e810:	1000ff5b 	b	48e580 <ttodatav+0xa0>
  48e814:	00000000 	nop
  48e818:	1000ff4b 	b	48e548 <ttodatav+0x68>
  48e81c:	27b30018 	addiu	s3,sp,24
  48e820:	8f998188 	lw	t9,-32376(gp)
  48e824:	00000000 	nop
  48e828:	0320f809 	jalr	t9
  48e82c:	00000000 	nop
  48e830:	8fbc0010 	lw	gp,16(sp)
  48e834:	1000ff42 	b	48e540 <ttodatav+0x60>
  48e838:	00409021 	move	s2,v0

0048e83c <unb64>:
  48e83c:	3c1c0fb8 	lui	gp,0xfb8
  48e840:	279ce134 	addiu	gp,gp,-7884
  48e844:	0399e021 	addu	gp,gp,t9
  48e848:	27bdffd0 	addiu	sp,sp,-48
  48e84c:	afbc0010 	sw	gp,16(sp)

/*
 - ttodata - convert text to data
 */
const char *			/* NULL on success, else literal */
ttodata(src, srclen, base, dst, dstlen, lenp)
const char *src;
size_t srclen;			/* 0 means apply strlen() */
int base;			/* 0 means figure it out */
char *dst;			/* need not be valid if dstlen is 0 */
size_t dstlen;
size_t *lenp;			/* where to record length (NULL is nowhere) */
{
	return ttodatav(src, srclen, base, dst, dstlen, lenp, (char *)NULL,
								(size_t)0);
}

/*
 - atodata - convert ASCII to data
 * backward-compatibility interface
 */
size_t				/* 0 for failure, true length for success */
atodata(src, srclen, dst, dstlen)
const char *src;
size_t srclen;
char *dst;
size_t dstlen;
{
	size_t len;
	const char *err;

	err = ttodata(src, srclen, 0, dst, dstlen, &len);
	if (err != NULL)
		return 0;
	return len;
}

/*
 - atobytes - convert ASCII to data bytes
 * another backward-compatibility interface
 */
const char *
atobytes(src, srclen, dst, dstlen, lenp)
const char *src;
size_t srclen;
char *dst;
size_t dstlen;
size_t *lenp;
{
	return ttodata(src, srclen, 0, dst, dstlen, lenp);
}

/*
 - unhex - convert two ASCII hex digits to byte
 */
static int		/* number of result bytes, or error code */
unhex(src, dst, dstlen)
const char *src;	/* known to be full length */
char *dst;
size_t dstlen;		/* not large enough is a failure */
{
	char *p;
	unsigned byte;
	static char hex[] = "0123456789abcdef";

	if (dstlen < 1)
		return SHORT;

	p = strchr(hex, *src);
	if (p == NULL)
		p = strchr(hex, tolower(*src));
	if (p == NULL)
		return BADCH0;
	byte = (p - hex) << 4;
	src++;

	p = strchr(hex, *src);
	if (p == NULL)
		p = strchr(hex, tolower(*src));
	if (p == NULL)
		return BADCH1;
	byte |= (p - hex);

	*dst = byte;
	return 1;
}

/*
 - unb64 - convert four ASCII base64 digits to three bytes
 * Note that a base64 digit group is padded out with '=' if it represents
 * less than three bytes:  one byte is dd==, two is ddd=, three is dddd.
 */
static int		/* number of result bytes, or error code */
unb64(src, dst, dstlen)
const char *src;	/* known to be full length */
char *dst;
size_t dstlen;
{
	char *p;
	unsigned byte1;
	unsigned byte2;
	static char base64[] =
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

	if (dstlen < 3)
  48e850:	2cc30003 	sltiu	v1,a2,3
  48e854:	afb20020 	sw	s2,32(sp)
  48e858:	afb00018 	sw	s0,24(sp)
  48e85c:	afbf002c 	sw	ra,44(sp)
  48e860:	afbc0028 	sw	gp,40(sp)
  48e864:	afb30024 	sw	s3,36(sp)
  48e868:	afb1001c 	sw	s1,28(sp)
  48e86c:	00808021 	move	s0,a0
  48e870:	00a09021 	move	s2,a1
  48e874:	14600046 	bnez	v1,48e990 <unb64+0x154>
  48e878:	2402fffe 	li	v0,-2
		return SHORT;

	p = strchr(base64, *src++);
  48e87c:	82050000 	lb	a1,0(s0)
  48e880:	8f938018 	lw	s3,-32744(gp)
  48e884:	00000000 	nop
  48e888:	267346f4 	addiu	s3,s3,18164
  48e88c:	00000000 	nop
  48e890:	02602021 	move	a0,s3
  48e894:	8f99813c 	lw	t9,-32452(gp)
  48e898:	00000000 	nop
  48e89c:	0320f809 	jalr	t9
  48e8a0:	00000000 	nop
  48e8a4:	8fbc0010 	lw	gp,16(sp)
  48e8a8:	00401821 	move	v1,v0
  48e8ac:	26100001 	addiu	s0,s0,1
	if (p == NULL)
  48e8b0:	10600037 	beqz	v1,48e990 <unb64+0x154>
  48e8b4:	2402fffc 	li	v0,-4
		return BADCH0;
	byte1 = (p - base64) << 2;	/* first six bits */

	p = strchr(base64, *src++);
  48e8b8:	82050000 	lb	a1,0(s0)
  48e8bc:	00000000 	nop
  48e8c0:	00733023 	subu	a2,v1,s3
  48e8c4:	02602021 	move	a0,s3
  48e8c8:	00068880 	sll	s1,a2,0x2
  48e8cc:	8f99813c 	lw	t9,-32452(gp)
  48e8d0:	00000000 	nop
  48e8d4:	0320f809 	jalr	t9
  48e8d8:	00000000 	nop
  48e8dc:	8fbc0010 	lw	gp,16(sp)
  48e8e0:	00401821 	move	v1,v0
  48e8e4:	26100001 	addiu	s0,s0,1
	if (p == NULL)
  48e8e8:	10600029 	beqz	v1,48e990 <unb64+0x154>
  48e8ec:	2402fffb 	li	v0,-5
		return BADCH1;
	byte2 = p - base64;		/* next six:  two plus four */
  48e8f0:	00732023 	subu	a0,v1,s3
	*dst++ = byte1 | (byte2 >> 4);
  48e8f4:	00044102 	srl	t0,a0,0x4
  48e8f8:	02282825 	or	a1,s1,t0
  48e8fc:	a2450000 	sb	a1,0(s2)
	byte1 = (byte2 & 0xf) << 4;

	p = strchr(base64, *src++);
  48e900:	82050000 	lb	a1,0(s0)
  48e904:	00000000 	nop
  48e908:	3087000f 	andi	a3,a0,0xf
  48e90c:	02602021 	move	a0,s3
  48e910:	00078900 	sll	s1,a3,0x4
  48e914:	8f99813c 	lw	t9,-32452(gp)
  48e918:	00000000 	nop
  48e91c:	0320f809 	jalr	t9
  48e920:	00000000 	nop
  48e924:	8fbc0010 	lw	gp,16(sp)
  48e928:	00401821 	move	v1,v0
  48e92c:	26520001 	addiu	s2,s2,1
	if (p == NULL) {
  48e930:	10600027 	beqz	v1,48e9d0 <unb64+0x194>
  48e934:	26100001 	addiu	s0,s0,1
		if (*(src-1) == '=' && *src == '=') {
			if (byte1 != 0)		/* bad padding */
				return BADPAD;
			return 1;
		}
		return BADCH2;
	}
	byte2 = p - base64;		/* next six:  four plus two */
  48e938:	00736023 	subu	t4,v1,s3
	*dst++ = byte1 | (byte2 >> 2);
  48e93c:	000c7082 	srl	t6,t4,0x2
  48e940:	022e6825 	or	t5,s1,t6
  48e944:	a24d0000 	sb	t5,0(s2)
	byte1 = (byte2 & 0x3) << 6;

	p = strchr(base64, *src++);
  48e948:	82050000 	lb	a1,0(s0)
  48e94c:	00000000 	nop
  48e950:	318b0003 	andi	t3,t4,0x3
  48e954:	02602021 	move	a0,s3
  48e958:	000b8980 	sll	s1,t3,0x6
  48e95c:	8f99813c 	lw	t9,-32452(gp)
  48e960:	00000000 	nop
  48e964:	0320f809 	jalr	t9
  48e968:	00000000 	nop
  48e96c:	8fbc0010 	lw	gp,16(sp)
  48e970:	00000000 	nop
  48e974:	26520001 	addiu	s2,s2,1
	if (p == NULL) {
  48e978:	1040000c 	beqz	v0,48e9ac <unb64+0x170>
  48e97c:	26100001 	addiu	s0,s0,1
		if (*(src-1) == '=') {
			if (byte1 != 0)		/* bad padding */
				return BADPAD;
			return 2;
		}
		return BADCH3;
	}
	byte2 = p - base64;		/* last six */
  48e980:	0053c023 	subu	t8,v0,s3
	*dst++ = byte1 | byte2;
  48e984:	02388025 	or	s0,s1,t8
  48e988:	a2500000 	sb	s0,0(s2)
	return 3;
  48e98c:	24020003 	li	v0,3
}
  48e990:	8fbf002c 	lw	ra,44(sp)
  48e994:	8fb30024 	lw	s3,36(sp)
  48e998:	8fb20020 	lw	s2,32(sp)
  48e99c:	8fb1001c 	lw	s1,28(sp)
  48e9a0:	8fb00018 	lw	s0,24(sp)
  48e9a4:	03e00008 	jr	ra
  48e9a8:	27bd0030 	addiu	sp,sp,48
  48e9ac:	8203ffff 	lb	v1,-1(s0)
  48e9b0:	00000000 	nop
  48e9b4:	240f003d 	li	t7,61
  48e9b8:	146ffff5 	bne	v1,t7,48e990 <unb64+0x154>
  48e9bc:	2402fff9 	li	v0,-7
  48e9c0:	1620fff3 	bnez	s1,48e990 <unb64+0x154>
  48e9c4:	2402fffd 	li	v0,-3
  48e9c8:	1000fff1 	b	48e990 <unb64+0x154>
  48e9cc:	24020002 	li	v0,2
  48e9d0:	8203ffff 	lb	v1,-1(s0)
  48e9d4:	2409003d 	li	t1,61
  48e9d8:	1469ffed 	bne	v1,t1,48e990 <unb64+0x154>
  48e9dc:	2402fffa 	li	v0,-6
  48e9e0:	820a0000 	lb	t2,0(s0)
  48e9e4:	00000000 	nop
  48e9e8:	1543ffe9 	bne	t2,v1,48e990 <unb64+0x154>
  48e9ec:	00000000 	nop
  48e9f0:	1620ffe7 	bnez	s1,48e990 <unb64+0x154>
  48e9f4:	2402fffd 	li	v0,-3
  48e9f8:	1000ffe5 	b	48e990 <unb64+0x154>
  48e9fc:	24020001 	li	v0,1

0048ea00 <ttodata>:
  48ea00:	3c1c0fb8 	lui	gp,0xfb8
  48ea04:	279cdf70 	addiu	gp,gp,-8336
  48ea08:	0399e021 	addu	gp,gp,t9
  48ea0c:	27bdffd0 	addiu	sp,sp,-48
  48ea10:	afbc0020 	sw	gp,32(sp)
  48ea14:	8fa30040 	lw	v1,64(sp)
  48ea18:	8fa20044 	lw	v0,68(sp)
  48ea1c:	00000000 	nop
  48ea20:	afbf002c 	sw	ra,44(sp)
  48ea24:	afbc0028 	sw	gp,40(sp)
  48ea28:	afa30010 	sw	v1,16(sp)
  48ea2c:	afa20014 	sw	v0,20(sp)
  48ea30:	afa00018 	sw	zero,24(sp)
  48ea34:	afa0001c 	sw	zero,28(sp)
  48ea38:	8f998998 	lw	t9,-30312(gp)
  48ea3c:	00000000 	nop
  48ea40:	0320f809 	jalr	t9
  48ea44:	00000000 	nop
  48ea48:	8fbc0020 	lw	gp,32(sp)
  48ea4c:	8fbf002c 	lw	ra,44(sp)
  48ea50:	00000000 	nop
  48ea54:	03e00008 	jr	ra
  48ea58:	27bd0030 	addiu	sp,sp,48

0048ea5c <atobytes>:
  48ea5c:	3c1c0fb8 	lui	gp,0xfb8
  48ea60:	279cdf14 	addiu	gp,gp,-8428
  48ea64:	0399e021 	addu	gp,gp,t9
  48ea68:	27bdffd0 	addiu	sp,sp,-48
  48ea6c:	afbc0020 	sw	gp,32(sp)
  48ea70:	8fa30040 	lw	v1,64(sp)
  48ea74:	00000000 	nop
  48ea78:	00e01021 	move	v0,a3
  48ea7c:	00c03821 	move	a3,a2
  48ea80:	00003021 	move	a2,zero
  48ea84:	afbf002c 	sw	ra,44(sp)
  48ea88:	afbc0028 	sw	gp,40(sp)
  48ea8c:	afa20010 	sw	v0,16(sp)
  48ea90:	afa30014 	sw	v1,20(sp)
  48ea94:	afa00018 	sw	zero,24(sp)
  48ea98:	afa0001c 	sw	zero,28(sp)
  48ea9c:	8f998998 	lw	t9,-30312(gp)
  48eaa0:	00000000 	nop
  48eaa4:	0320f809 	jalr	t9
  48eaa8:	00000000 	nop
  48eaac:	8fbc0020 	lw	gp,32(sp)
  48eab0:	8fbf002c 	lw	ra,44(sp)
  48eab4:	00000000 	nop
  48eab8:	03e00008 	jr	ra
  48eabc:	27bd0030 	addiu	sp,sp,48

0048eac0 <atodata>:
  48eac0:	3c1c0fb8 	lui	gp,0xfb8
  48eac4:	279cdeb0 	addiu	gp,gp,-8528
  48eac8:	0399e021 	addu	gp,gp,t9
  48eacc:	27bdffc8 	addiu	sp,sp,-56
  48ead0:	afbc0020 	sw	gp,32(sp)
  48ead4:	00e01021 	move	v0,a3
  48ead8:	27a30028 	addiu	v1,sp,40
  48eadc:	00c03821 	move	a3,a2
  48eae0:	00003021 	move	a2,zero
  48eae4:	afbf0034 	sw	ra,52(sp)
  48eae8:	afbc0030 	sw	gp,48(sp)
  48eaec:	afa20010 	sw	v0,16(sp)
  48eaf0:	afa30014 	sw	v1,20(sp)
  48eaf4:	afa00018 	sw	zero,24(sp)
  48eaf8:	afa0001c 	sw	zero,28(sp)
  48eafc:	8f998998 	lw	t9,-30312(gp)
  48eb00:	00000000 	nop
  48eb04:	0320f809 	jalr	t9
  48eb08:	00000000 	nop
  48eb0c:	8fbc0020 	lw	gp,32(sp)
  48eb10:	00402021 	move	a0,v0
  48eb14:	10800005 	beqz	a0,48eb2c <atodata+0x6c>
  48eb18:	00001021 	move	v0,zero
  48eb1c:	8fbf0034 	lw	ra,52(sp)
  48eb20:	00000000 	nop
  48eb24:	03e00008 	jr	ra
  48eb28:	27bd0038 	addiu	sp,sp,56
  48eb2c:	8fa20028 	lw	v0,40(sp)
  48eb30:	1000fffa 	b	48eb1c <atodata+0x5c>
  48eb34:	00000000 	nop

0048eb38 <unhex>:
  48eb38:	3c1c0fb8 	lui	gp,0xfb8
  48eb3c:	279cde38 	addiu	gp,gp,-8648
  48eb40:	0399e021 	addu	gp,gp,t9
  48eb44:	27bdffc8 	addiu	sp,sp,-56
  48eb48:	afbc0010 	sw	gp,16(sp)
  48eb4c:	afb1001c 	sw	s1,28(sp)
  48eb50:	8f918018 	lw	s1,-32744(gp)
  48eb54:	00000000 	nop
  48eb58:	263146e0 	addiu	s1,s1,18144
  48eb5c:	afb40028 	sw	s4,40(sp)
  48eb60:	afb30024 	sw	s3,36(sp)
  48eb64:	afbf0030 	sw	ra,48(sp)
  48eb68:	00809821 	move	s3,a0
  48eb6c:	afbc002c 	sw	gp,44(sp)
  48eb70:	afb20020 	sw	s2,32(sp)
  48eb74:	afb00018 	sw	s0,24(sp)
  48eb78:	02202021 	move	a0,s1
  48eb7c:	00a0a021 	move	s4,a1
  48eb80:	10c00024 	beqz	a2,48ec14 <unhex+0xdc>
  48eb84:	2402fffe 	li	v0,-2
  48eb88:	82700000 	lb	s0,0(s3)
  48eb8c:	8f928018 	lw	s2,-32744(gp)
  48eb90:	00000000 	nop
  48eb94:	265246e0 	addiu	s2,s2,18144
  48eb98:	02002821 	move	a1,s0
  48eb9c:	8f99813c 	lw	t9,-32452(gp)
  48eba0:	00000000 	nop
  48eba4:	0320f809 	jalr	t9
  48eba8:	00000000 	nop
  48ebac:	8fbc0010 	lw	gp,16(sp)
  48ebb0:	00402821 	move	a1,v0
  48ebb4:	10a00030 	beqz	a1,48ec78 <unhex+0x140>
  48ebb8:	02002021 	move	a0,s0
  48ebbc:	82700001 	lb	s0,1(s3)
  48ebc0:	00000000 	nop
  48ebc4:	00b21823 	subu	v1,a1,s2
  48ebc8:	02402021 	move	a0,s2
  48ebcc:	02002821 	move	a1,s0
  48ebd0:	00038900 	sll	s1,v1,0x4
  48ebd4:	8f99813c 	lw	t9,-32452(gp)
  48ebd8:	00000000 	nop
  48ebdc:	0320f809 	jalr	t9
  48ebe0:	00000000 	nop
  48ebe4:	8fbc0010 	lw	gp,16(sp)
  48ebe8:	00402821 	move	a1,v0
  48ebec:	10a00011 	beqz	a1,48ec34 <unhex+0xfc>
  48ebf0:	02002021 	move	a0,s0
  48ebf4:	8f878018 	lw	a3,-32744(gp)
  48ebf8:	00000000 	nop
  48ebfc:	24e746e0 	addiu	a3,a3,18144
  48ec00:	00000000 	nop
  48ec04:	00a73023 	subu	a2,a1,a3
  48ec08:	02262025 	or	a0,s1,a2
  48ec0c:	24020001 	li	v0,1
  48ec10:	a2840000 	sb	a0,0(s4)
  48ec14:	8fbf0030 	lw	ra,48(sp)
  48ec18:	8fb40028 	lw	s4,40(sp)
  48ec1c:	8fb30024 	lw	s3,36(sp)
  48ec20:	8fb20020 	lw	s2,32(sp)
  48ec24:	8fb1001c 	lw	s1,28(sp)
  48ec28:	8fb00018 	lw	s0,24(sp)
  48ec2c:	03e00008 	jr	ra
  48ec30:	27bd0038 	addiu	sp,sp,56
  48ec34:	8f9989f0 	lw	t9,-30224(gp)
  48ec38:	00000000 	nop
  48ec3c:	0320f809 	jalr	t9
  48ec40:	00000000 	nop
  48ec44:	8fbc0010 	lw	gp,16(sp)
  48ec48:	00402821 	move	a1,v0
  48ec4c:	02402021 	move	a0,s2
  48ec50:	8f99813c 	lw	t9,-32452(gp)
  48ec54:	00000000 	nop
  48ec58:	0320f809 	jalr	t9
  48ec5c:	00000000 	nop
  48ec60:	8fbc0010 	lw	gp,16(sp)
  48ec64:	00402821 	move	a1,v0
  48ec68:	14a0ffe2 	bnez	a1,48ebf4 <unhex+0xbc>
  48ec6c:	2402fffb 	li	v0,-5
  48ec70:	1000ffe8 	b	48ec14 <unhex+0xdc>
  48ec74:	00000000 	nop
  48ec78:	8f9989f0 	lw	t9,-30224(gp)
  48ec7c:	00000000 	nop
  48ec80:	0320f809 	jalr	t9
  48ec84:	00000000 	nop
  48ec88:	8fbc0010 	lw	gp,16(sp)
  48ec8c:	00402821 	move	a1,v0
  48ec90:	02202021 	move	a0,s1
  48ec94:	8f99813c 	lw	t9,-32452(gp)
  48ec98:	00000000 	nop
  48ec9c:	0320f809 	jalr	t9
  48eca0:	00000000 	nop
  48eca4:	8fbc0010 	lw	gp,16(sp)
  48eca8:	00402821 	move	a1,v0
  48ecac:	14a0ffc3 	bnez	a1,48ebbc <unhex+0x84>
  48ecb0:	2402fffc 	li	v0,-4
  48ecb4:	1000ffd7 	b	48ec14 <unhex+0xdc>
  48ecb8:	00000000 	nop

0048ecbc <untext>:
  48ecbc:	3c1c0fb8 	lui	gp,0xfb8
  48ecc0:	279cdcb4 	addiu	gp,gp,-9036
  48ecc4:	0399e021 	addu	gp,gp,t9

/*
 - untext - convert one ASCII character to byte
 */
static int		/* number of result bytes, or error code */
untext(src, dst, dstlen)
const char *src;	/* known to be full length */
char *dst;
size_t dstlen;		/* not large enough is a failure */
{
	if (dstlen < 1)
  48ecc8:	10c00005 	beqz	a2,48ece0 <untext+0x24>
  48eccc:	2402fffe 	li	v0,-2
		return SHORT;

	*dst = *src;
  48ecd0:	90860000 	lbu	a2,0(a0)
  48ecd4:	00000000 	nop
	return 1;
  48ecd8:	24020001 	li	v0,1
  48ecdc:	a0a60000 	sb	a2,0(a1)
}
  48ece0:	03e00008 	jr	ra
  48ece4:	00000000 	nop

0048ece8 <badch>:
  48ece8:	3c1c0fb8 	lui	gp,0xfb8
  48ecec:	279cdc88 	addiu	gp,gp,-9080
  48ecf0:	0399e021 	addu	gp,gp,t9
  48ecf4:	27bdffc8 	addiu	sp,sp,-56
  48ecf8:	afbc0010 	sw	gp,16(sp)
  48ecfc:	afb10024 	sw	s1,36(sp)
  48ed00:	00c08821 	move	s1,a2
  48ed04:	afb20028 	sw	s2,40(sp)
  48ed08:	afb00020 	sw	s0,32(sp)
  48ed0c:	afbf0030 	sw	ra,48(sp)
  48ed10:	afbc002c 	sw	gp,44(sp)
  48ed14:	8f82804c 	lw	v0,-32692(gp)
  48ed18:	00000000 	nop
  48ed1c:	2442cd4c 	addiu	v0,v0,-12980
  48ed20:	2ce70024 	sltiu	a3,a3,36
  48ed24:	00809021 	move	s2,a0

/*
 - badch - produce a nice complaint about an unknown character
 *
 * If the compiler complains that the array bigenough[] has a negative
 * size, that means the TTODATAV_BUF constant has been set too small.
 */
static const char *		/* literal or errp */
badch(src, errcode, errp, errlen)
const char *src;
int errcode;
char *errp;			/* might be NULL */
size_t errlen;
{
	static const char pre[] = "unknown character (`";
	static const char suf[] = "') in input";
	char buf[5];
#	define	REQD	(sizeof(pre) - 1 + sizeof(buf) - 1 + sizeof(suf))
	struct sizecheck {
		char bigenough[TTODATAV_BUF - REQD];	/* see above */
	};
	char ch;

	if (errp == NULL || errlen < REQD)
  48ed28:	12200033 	beqz	s1,48edf8 <badch+0x110>
  48ed2c:	00a08021 	move	s0,a1
  48ed30:	14e00031 	bnez	a3,48edf8 <badch+0x110>
  48ed34:	02202021 	move	a0,s1
		return "unknown character in input";
	strcpy(errp, pre);
  48ed38:	8f85804c 	lw	a1,-32692(gp)
  48ed3c:	00000000 	nop
  48ed40:	24a5cd28 	addiu	a1,a1,-13016
  48ed44:	8f998c58 	lw	t9,-29608(gp)
  48ed48:	00000000 	nop
  48ed4c:	0320f809 	jalr	t9
  48ed50:	00000000 	nop
  48ed54:	8fbc0010 	lw	gp,16(sp)
  48ed58:	00000000 	nop
	ch = *(src + BADOFF(errcode));
  48ed5c:	02501023 	subu	v0,s2,s0
  48ed60:	8050fffc 	lb	s0,-4(v0)
  48ed64:	00000000 	nop
	if (isprint(ch)) {
  48ed68:	02002021 	move	a0,s0
  48ed6c:	8f99846c 	lw	t9,-31636(gp)
  48ed70:	00000000 	nop
  48ed74:	0320f809 	jalr	t9
  48ed78:	00000000 	nop
  48ed7c:	8fbc0010 	lw	gp,16(sp)
  48ed80:	320401c0 	andi	a0,s0,0x1c0
  48ed84:	32060038 	andi	a2,s0,0x38
  48ed88:	000628c2 	srl	a1,a2,0x3
  48ed8c:	00043983 	sra	a3,a0,0x6
  48ed90:	32060007 	andi	a2,s0,0x7
  48ed94:	24a40030 	addiu	a0,a1,48
  48ed98:	24e30030 	addiu	v1,a3,48
  48ed9c:	1040001c 	beqz	v0,48ee10 <badch+0x128>
  48eda0:	24c50030 	addiu	a1,a2,48
		buf[0] = ch;
  48eda4:	a3b00018 	sb	s0,24(sp)
		buf[1] = '\0';
  48eda8:	a3a00019 	sb	zero,25(sp)
	} else {
		buf[0] = '\\';
		buf[1] = ((ch & 0700) >> 6) + '0';
		buf[2] = ((ch & 0070) >> 3) + '0';
		buf[3] = ((ch & 0007) >> 0) + '0';
		buf[4] = '\0';
	}
	strcat(errp, buf);
  48edac:	27a50018 	addiu	a1,sp,24
  48edb0:	02202021 	move	a0,s1
  48edb4:	8f998778 	lw	t9,-30856(gp)
  48edb8:	00000000 	nop
  48edbc:	0320f809 	jalr	t9
  48edc0:	00000000 	nop
  48edc4:	8fbc0010 	lw	gp,16(sp)
  48edc8:	00000000 	nop
	strcat(errp, suf);
  48edcc:	8f85804c 	lw	a1,-32692(gp)
  48edd0:	00000000 	nop
  48edd4:	24a5cd40 	addiu	a1,a1,-12992
  48edd8:	02202021 	move	a0,s1
  48eddc:	8f998778 	lw	t9,-30856(gp)
  48ede0:	00000000 	nop
  48ede4:	0320f809 	jalr	t9
  48ede8:	00000000 	nop
  48edec:	8fbc0010 	lw	gp,16(sp)
  48edf0:	00000000 	nop
	return (const char *)errp;
  48edf4:	02201021 	move	v0,s1
}
  48edf8:	8fbf0030 	lw	ra,48(sp)
  48edfc:	8fb20028 	lw	s2,40(sp)
  48ee00:	8fb10024 	lw	s1,36(sp)
  48ee04:	8fb00020 	lw	s0,32(sp)
  48ee08:	03e00008 	jr	ra
  48ee0c:	27bd0038 	addiu	sp,sp,56
  48ee10:	2408005c 	li	t0,92
  48ee14:	a3a80018 	sb	t0,24(sp)
  48ee18:	a3a30019 	sb	v1,25(sp)
  48ee1c:	a3a4001a 	sb	a0,26(sp)
  48ee20:	a3a5001b 	sb	a1,27(sp)
  48ee24:	1000ffe1 	b	48edac <badch+0xc4>
  48ee28:	a3a0001c 	sb	zero,28(sp)
  48ee2c:	00000000 	nop

0048ee30 <ttosa>:
  48ee30:	3c1c0fb8 	lui	gp,0xfb8
  48ee34:	279cdb40 	addiu	gp,gp,-9408
  48ee38:	0399e021 	addu	gp,gp,t9
  48ee3c:	27bdffc0 	addiu	sp,sp,-64
  48ee40:	afbc0010 	sw	gp,16(sp)
  48ee44:	afb20028 	sw	s2,40(sp)
  48ee48:	00a09021 	move	s2,a1
  48ee4c:	afb50034 	sw	s5,52(sp)
  48ee50:	afb3002c 	sw	s3,44(sp)
  48ee54:	afbf003c 	sw	ra,60(sp)
  48ee58:	afbc0038 	sw	gp,56(sp)
  48ee5c:	afb40030 	sw	s4,48(sp)
  48ee60:	afb10024 	sw	s1,36(sp)
  48ee64:	afb00020 	sw	s0,32(sp)
  48ee68:	00c0a821 	move	s5,a2
#	define	MINLEN	5	/* ah0@0 is as short as it can get */
	int af;
	int base;

	if (srclen == 0)
  48ee6c:	124000b0 	beqz	s2,48f130 <ttosa+0x300>
  48ee70:	00809821 	move	s3,a0
		srclen = strlen(src);
	if (srclen == 0)
		return "empty string";
	if (srclen < MINLEN)
  48ee74:	2e440005 	sltiu	a0,s2,5
  48ee78:	8f82804c 	lw	v0,-32692(gp)
  48ee7c:	00000000 	nop
  48ee80:	2442ce64 	addiu	v0,v0,-12700
  48ee84:	1480004e 	bnez	a0,48efc0 <ttosa+0x190>
  48ee88:	24040025 	li	a0,37
		return "string too short to be SA identifier";
	if (*src == '%') {
  48ee8c:	82620000 	lb	v0,0(s3)
  48ee90:	00000000 	nop
  48ee94:	1044007d 	beq	v0,a0,48f08c <ttosa+0x25c>
  48ee98:	00000000 	nop
		for (mp = magic; mp->name != NULL; mp++) {
			nlen = strlen(mp->name);
			if (srclen == nlen && memcmp(src, mp->name, nlen) == 0)
				break;
		}
		if (mp->name == NULL)
			return "unknown % keyword";
		src = mp->really;
		srclen = strlen(src);
	}

	at = memchr(src, '@', srclen);
  48ee9c:	02602021 	move	a0,s3
  48eea0:	24050040 	li	a1,64
  48eea4:	02403021 	move	a2,s2
  48eea8:	8f9986e0 	lw	t9,-31008(gp)
  48eeac:	00000000 	nop
  48eeb0:	0320f809 	jalr	t9
  48eeb4:	00000000 	nop
  48eeb8:	8fbc0010 	lw	gp,16(sp)
  48eebc:	00408821 	move	s1,v0
	if (at == NULL)
  48eec0:	8f82804c 	lw	v0,-32692(gp)
  48eec4:	00000000 	nop
  48eec8:	2442ce8c 	addiu	v0,v0,-12660
  48eecc:	1220003c 	beqz	s1,48efc0 <ttosa+0x190>
  48eed0:	00000000 	nop
		return "no @ in SA specifier";

	for (sat = satypes; sat->prefix != NULL; sat++)
  48eed4:	8f908018 	lw	s0,-32744(gp)
  48eed8:	00000000 	nop
  48eedc:	26104740 	addiu	s0,s0,18240
  48eee0:	00000000 	nop
  48eee4:	8e030000 	lw	v1,0(s0)
  48eee8:	02602021 	move	a0,s3
  48eeec:	10600062 	beqz	v1,48f078 <ttosa+0x248>
  48eef0:	00602821 	move	a1,v1
		if (sat->prelen < srclen &&
				strncmp(src, sat->prefix, sat->prelen) == 0) {
  48eef4:	8e080004 	lw	t0,4(s0)
  48eef8:	00000000 	nop
  48eefc:	0112382b 	sltu	a3,t0,s2
  48ef00:	10e00008 	beqz	a3,48ef24 <ttosa+0xf4>
  48ef04:	01003021 	move	a2,t0
  48ef08:	8f99864c 	lw	t9,-31156(gp)
  48ef0c:	00000000 	nop
  48ef10:	0320f809 	jalr	t9
  48ef14:	00000000 	nop
  48ef18:	8fbc0010 	lw	gp,16(sp)
  48ef1c:	10400003 	beqz	v0,48ef2c <ttosa+0xfc>
  48ef20:	00000000 	nop
  48ef24:	1000ffef 	b	48eee4 <ttosa+0xb4>
  48ef28:	2610000c 	addiu	s0,s0,12
			sa->proto = sat->proto;
  48ef2c:	8e090008 	lw	t1,8(s0)
  48ef30:	00000000 	nop
  48ef34:	aea90020 	sw	t1,32(s5)
			spi = src + sat->prelen;
  48ef38:	8e060004 	lw	a2,4(s0)
  48ef3c:	00000000 	nop
			break;			/* NOTE BREAK OUT */
		}
	if (sat->prefix == NULL)
  48ef40:	8e050000 	lw	a1,0(s0)
  48ef44:	00000000 	nop
  48ef48:	10a0004b 	beqz	a1,48f078 <ttosa+0x248>
  48ef4c:	02662021 	addu	a0,s3,a2
		return "SA specifier lacks valid protocol prefix";

	if (spi >= at)
  48ef50:	0091282b 	sltu	a1,a0,s1
  48ef54:	8f82804c 	lw	v0,-32692(gp)
  48ef58:	00000000 	nop
  48ef5c:	2442cea4 	addiu	v0,v0,-12636
  48ef60:	10a00017 	beqz	a1,48efc0 <ttosa+0x190>
  48ef64:	240a002e 	li	t2,46
		return "no SPI in SA specifier";
	switch (*spi) {
  48ef68:	80830000 	lb	v1,0(a0)
  48ef6c:	00000000 	nop
  48ef70:	106a003c 	beq	v1,t2,48f064 <ttosa+0x234>
  48ef74:	240b003a 	li	t3,58
  48ef78:	106b0037 	beq	v1,t3,48f058 <ttosa+0x228>
  48ef7c:	00000000 	nop
	case '.':
		af = AF_INET;
		spi++;
		base = 16;
		break;
	case ':':
		af = AF_INET6;
		spi++;
		base = 16;
		break;
	default:
		af = AF_UNSPEC;		/* not known yet */
  48ef80:	0000a021 	move	s4,zero
		base = 0;
  48ef84:	00003021 	move	a2,zero
		break;
	}
	if (spi >= at)
  48ef88:	8f82804c 	lw	v0,-32692(gp)
  48ef8c:	00000000 	nop
  48ef90:	2442cebc 	addiu	v0,v0,-12612
  48ef94:	10a0000a 	beqz	a1,48efc0 <ttosa+0x190>
  48ef98:	02242823 	subu	a1,s1,a0
		return "no SPI found in SA specifier";
	oops = ttoul(spi, at - spi, base, &ul);
  48ef9c:	27a70018 	addiu	a3,sp,24
  48efa0:	8f9986bc 	lw	t9,-31044(gp)
  48efa4:	00000000 	nop
  48efa8:	0320f809 	jalr	t9
  48efac:	00000000 	nop
  48efb0:	8fbc0010 	lw	gp,16(sp)
  48efb4:	00406021 	move	t4,v0
	if (oops != NULL)
  48efb8:	1180000a 	beqz	t4,48efe4 <ttosa+0x1b4>
  48efbc:	26300001 	addiu	s0,s1,1
		return oops;
	sa->spi = htonl(ul);

	addr = at + 1;
	alen = srclen - (addr - src);
	if (af == AF_UNSPEC)
		af = (memchr(addr, ':', alen) != NULL) ? AF_INET6 : AF_INET;
	oops = ttoaddr(addr, alen, af, &sa->dst);
	if (oops != NULL)
		return oops;

	return NULL;
}
  48efc0:	8fbf003c 	lw	ra,60(sp)
  48efc4:	8fb50034 	lw	s5,52(sp)
  48efc8:	8fb40030 	lw	s4,48(sp)
  48efcc:	8fb3002c 	lw	s3,44(sp)
  48efd0:	8fb20028 	lw	s2,40(sp)
  48efd4:	8fb10024 	lw	s1,36(sp)
  48efd8:	8fb00020 	lw	s0,32(sp)
  48efdc:	03e00008 	jr	ra
  48efe0:	27bd0040 	addiu	sp,sp,64
  48efe4:	8fae0018 	lw	t6,24(sp)
  48efe8:	00000000 	nop
  48efec:	02136823 	subu	t5,s0,s3
  48eff0:	aeae001c 	sw	t6,28(s5)
  48eff4:	1280000c 	beqz	s4,48f028 <ttosa+0x1f8>
  48eff8:	024d8823 	subu	s1,s2,t5
  48effc:	02002021 	move	a0,s0
  48f000:	02202821 	move	a1,s1
  48f004:	02803021 	move	a2,s4
  48f008:	02a03821 	move	a3,s5
  48f00c:	8f998320 	lw	t9,-31968(gp)
  48f010:	00000000 	nop
  48f014:	0320f809 	jalr	t9
  48f018:	00000000 	nop
  48f01c:	8fbc0010 	lw	gp,16(sp)
  48f020:	1000ffe7 	b	48efc0 <ttosa+0x190>
  48f024:	00000000 	nop
  48f028:	02002021 	move	a0,s0
  48f02c:	2405003a 	li	a1,58
  48f030:	02203021 	move	a2,s1
  48f034:	8f9986e0 	lw	t9,-31008(gp)
  48f038:	00000000 	nop
  48f03c:	0320f809 	jalr	t9
  48f040:	00000000 	nop
  48f044:	8fbc0010 	lw	gp,16(sp)
  48f048:	1440ffec 	bnez	v0,48effc <ttosa+0x1cc>
  48f04c:	2414000a 	li	s4,10
  48f050:	1000ffea 	b	48effc <ttosa+0x1cc>
  48f054:	24140002 	li	s4,2
  48f058:	24840001 	addiu	a0,a0,1
  48f05c:	10000003 	b	48f06c <ttosa+0x23c>
  48f060:	2414000a 	li	s4,10
  48f064:	24840001 	addiu	a0,a0,1
  48f068:	24140002 	li	s4,2
  48f06c:	24060010 	li	a2,16
  48f070:	1000ffc5 	b	48ef88 <ttosa+0x158>
  48f074:	0091282b 	sltu	a1,a0,s1
  48f078:	8f82804c 	lw	v0,-32692(gp)
  48f07c:	00000000 	nop
  48f080:	2442cedc 	addiu	v0,v0,-12580
  48f084:	1000ffce 	b	48efc0 <ttosa+0x190>
  48f088:	00000000 	nop
  48f08c:	8f918018 	lw	s1,-32744(gp)
  48f090:	00000000 	nop
  48f094:	26314788 	addiu	s1,s1,18312
  48f098:	00000000 	nop
  48f09c:	8e300000 	lw	s0,0(s1)
  48f0a0:	00000000 	nop
  48f0a4:	1200001d 	beqz	s0,48f11c <ttosa+0x2ec>
  48f0a8:	02002021 	move	a0,s0
  48f0ac:	8f998188 	lw	t9,-32376(gp)
  48f0b0:	00000000 	nop
  48f0b4:	0320f809 	jalr	t9
  48f0b8:	00000000 	nop
  48f0bc:	8fbc0010 	lw	gp,16(sp)
  48f0c0:	02403021 	move	a2,s2
  48f0c4:	02002821 	move	a1,s0
  48f0c8:	12420003 	beq	s2,v0,48f0d8 <ttosa+0x2a8>
  48f0cc:	02602021 	move	a0,s3
  48f0d0:	1000fff2 	b	48f09c <ttosa+0x26c>
  48f0d4:	26310008 	addiu	s1,s1,8
  48f0d8:	8f9985c8 	lw	t9,-31288(gp)
  48f0dc:	00000000 	nop
  48f0e0:	0320f809 	jalr	t9
  48f0e4:	00000000 	nop
  48f0e8:	8fbc0010 	lw	gp,16(sp)
  48f0ec:	1440fff8 	bnez	v0,48f0d0 <ttosa+0x2a0>
  48f0f0:	00000000 	nop
  48f0f4:	8e330004 	lw	s3,4(s1)
  48f0f8:	00000000 	nop
  48f0fc:	02602021 	move	a0,s3
  48f100:	8f998188 	lw	t9,-32376(gp)
  48f104:	00000000 	nop
  48f108:	0320f809 	jalr	t9
  48f10c:	00000000 	nop
  48f110:	8fbc0010 	lw	gp,16(sp)
  48f114:	1000ff61 	b	48ee9c <ttosa+0x6c>
  48f118:	00409021 	move	s2,v0
  48f11c:	8f82804c 	lw	v0,-32692(gp)
  48f120:	00000000 	nop
  48f124:	2442cf08 	addiu	v0,v0,-12536
  48f128:	1000ffa5 	b	48efc0 <ttosa+0x190>
  48f12c:	00000000 	nop
  48f130:	8f998188 	lw	t9,-32376(gp)
  48f134:	00000000 	nop
  48f138:	0320f809 	jalr	t9
  48f13c:	00000000 	nop
  48f140:	8fbc0010 	lw	gp,16(sp)
  48f144:	00409021 	move	s2,v0
  48f148:	8f82804c 	lw	v0,-32692(gp)
  48f14c:	00000000 	nop
  48f150:	2442cf1c 	addiu	v0,v0,-12516
  48f154:	1640ff48 	bnez	s2,48ee78 <ttosa+0x48>
  48f158:	2e440005 	sltiu	a0,s2,5
  48f15c:	1000ff98 	b	48efc0 <ttosa+0x190>
  48f160:	00000000 	nop
	...

0048f170 <ttosubnet>:
  48f170:	3c1c0fb8 	lui	gp,0xfb8
  48f174:	279cd800 	addiu	gp,gp,-10240
  48f178:	0399e021 	addu	gp,gp,t9
  48f17c:	27bdff80 	addiu	sp,sp,-128
  48f180:	afbc0010 	sw	gp,16(sp)
  48f184:	afb10064 	sw	s1,100(sp)
  48f188:	00a08821 	move	s1,a1
  48f18c:	afb50074 	sw	s5,116(sp)
  48f190:	afb3006c 	sw	s3,108(sp)
  48f194:	afb00060 	sw	s0,96(sp)
  48f198:	afbf007c 	sw	ra,124(sp)
  48f19c:	afbc0078 	sw	gp,120(sp)
  48f1a0:	afb40070 	sw	s4,112(sp)
  48f1a4:	afb20068 	sw	s2,104(sp)
  48f1a8:	00c09821 	move	s3,a2
  48f1ac:	00e0a821 	move	s5,a3
	ip_address masktmp;
	int nbits;
	int i;

	if (srclen == 0)
  48f1b0:	122000aa 	beqz	s1,48f45c <ttosubnet+0x2ec>
  48f1b4:	00808021 	move	s0,a0
		srclen = strlen(src);
	if (srclen == 0)
		return "empty string";

	switch (af) {
  48f1b8:	24030002 	li	v1,2
  48f1bc:	126300a5 	beq	s3,v1,48f454 <ttosubnet+0x2e4>
  48f1c0:	2403000a 	li	v1,10
  48f1c4:	1263000e 	beq	s3,v1,48f200 <ttosubnet+0x90>
  48f1c8:	24140080 	li	s4,128
	case AF_INET:
		nbits = 32;
		break;
	case AF_INET6:
		nbits = 128;
		break;
	default:
		return "unknown address family in ttosubnet";
  48f1cc:	8f82804c 	lw	v0,-32692(gp)
  48f1d0:	00000000 	nop
  48f1d4:	2442cf30 	addiu	v0,v0,-12496
  48f1d8:	00000000 	nop
		break;
	}

	if (srclen == DEFLEN && strncmp(src, def, srclen) == 0) {
		src = (af == AF_INET) ? defis4 : defis6;
		srclen = (af == AF_INET) ? DEFIS4LEN : DEFIS6LEN;
	}

	slash = memchr(src, '/', srclen);
	if (slash == NULL)
		return "no / in subnet specification";
	mask = slash + 1;
	mlen = srclen - (mask - src);

	oops = ttoaddr(src, slash-src, af, &addrtmp);
	if (oops != NULL)
		return oops;

	/* extract port */
	colon = memchr(mask, ':', mlen);
	if (colon == 0)
	{
		setportof(0, &addrtmp);
	}
	else
	{
		long port;

		oops =  ttoul(colon+1, mlen-(colon-mask+1), 10, &port);
		if (oops != NULL)
			return oops;
		setportof(htons(port), &addrtmp);
		mlen = colon - mask;
	}

	/*extract mask */
	oops = ttoul(mask, mlen, 10, &bc);
	if (oops == NULL) {
		/* ttoul succeeded, it's a bit-count mask */
		if (bc > nbits)
			return "subnet mask bit count too large";
		i = bc;
	} else {
		oops = ttoaddr(mask, mlen, af, &masktmp);
		if (oops != NULL)
			return oops;
		i = masktocount(&masktmp);
		if (i < 0)
			return "non-contiguous or otherwise erroneous mask";
	}

	return initsubnet(&addrtmp, i, '0', dst);
}
  48f1dc:	8fbf007c 	lw	ra,124(sp)
  48f1e0:	8fb50074 	lw	s5,116(sp)
  48f1e4:	8fb40070 	lw	s4,112(sp)
  48f1e8:	8fb3006c 	lw	s3,108(sp)
  48f1ec:	8fb20068 	lw	s2,104(sp)
  48f1f0:	8fb10064 	lw	s1,100(sp)
  48f1f4:	8fb00060 	lw	s0,96(sp)
  48f1f8:	03e00008 	jr	ra
  48f1fc:	27bd0080 	addiu	sp,sp,128
  48f200:	24040008 	li	a0,8
  48f204:	1224007b 	beq	s1,a0,48f3f4 <ttosubnet+0x284>
  48f208:	02002021 	move	a0,s0
  48f20c:	02002021 	move	a0,s0
  48f210:	2405002f 	li	a1,47
  48f214:	02203021 	move	a2,s1
  48f218:	8f9986e0 	lw	t9,-31008(gp)
  48f21c:	00000000 	nop
  48f220:	0320f809 	jalr	t9
  48f224:	00000000 	nop
  48f228:	8fbc0010 	lw	gp,16(sp)
  48f22c:	00402021 	move	a0,v0
  48f230:	8f82804c 	lw	v0,-32692(gp)
  48f234:	00000000 	nop
  48f238:	2442cf54 	addiu	v0,v0,-12460
  48f23c:	1080ffe7 	beqz	a0,48f1dc <ttosubnet+0x6c>
  48f240:	24920001 	addiu	s2,a0,1
  48f244:	00902823 	subu	a1,a0,s0
  48f248:	02504823 	subu	t1,s2,s0
  48f24c:	02002021 	move	a0,s0
  48f250:	02603021 	move	a2,s3
  48f254:	27a70018 	addiu	a3,sp,24
  48f258:	02298823 	subu	s1,s1,t1
  48f25c:	8f998320 	lw	t9,-31968(gp)
  48f260:	00000000 	nop
  48f264:	0320f809 	jalr	t9
  48f268:	00000000 	nop
  48f26c:	8fbc0010 	lw	gp,16(sp)
  48f270:	00404021 	move	t0,v0
  48f274:	1500ffd9 	bnez	t0,48f1dc <ttosubnet+0x6c>
  48f278:	2405003a 	li	a1,58
  48f27c:	02402021 	move	a0,s2
  48f280:	02203021 	move	a2,s1
  48f284:	8f9986e0 	lw	t9,-31008(gp)
  48f288:	00000000 	nop
  48f28c:	0320f809 	jalr	t9
  48f290:	00000000 	nop
  48f294:	8fbc0010 	lw	gp,16(sp)
  48f298:	00408021 	move	s0,v0
  48f29c:	1200004c 	beqz	s0,48f3d0 <ttosubnet+0x260>
  48f2a0:	02505823 	subu	t3,s2,s0
  48f2a4:	022b1021 	addu	v0,s1,t3
  48f2a8:	2445ffff 	addiu	a1,v0,-1
  48f2ac:	26040001 	addiu	a0,s0,1
  48f2b0:	2406000a 	li	a2,10
  48f2b4:	27a70058 	addiu	a3,sp,88
  48f2b8:	8f9986bc 	lw	t9,-31044(gp)
  48f2bc:	00000000 	nop
  48f2c0:	0320f809 	jalr	t9
  48f2c4:	00000000 	nop
  48f2c8:	8fbc0010 	lw	gp,16(sp)
  48f2cc:	00405021 	move	t2,v0
  48f2d0:	1540ffc2 	bnez	t2,48f1dc <ttosubnet+0x6c>
  48f2d4:	27a50018 	addiu	a1,sp,24
  48f2d8:	8fa40058 	lw	a0,88(sp)
  48f2dc:	8f9988e0 	lw	t9,-30496(gp)
  48f2e0:	00000000 	nop
  48f2e4:	0320f809 	jalr	t9
  48f2e8:	00000000 	nop
  48f2ec:	8fbc0010 	lw	gp,16(sp)
  48f2f0:	00000000 	nop
  48f2f4:	02128823 	subu	s1,s0,s2
  48f2f8:	02402021 	move	a0,s2
  48f2fc:	02202821 	move	a1,s1
  48f300:	2406000a 	li	a2,10
  48f304:	27a7005c 	addiu	a3,sp,92
  48f308:	8f9986bc 	lw	t9,-31044(gp)
  48f30c:	00000000 	nop
  48f310:	0320f809 	jalr	t9
  48f314:	00000000 	nop
  48f318:	8fbc0010 	lw	gp,16(sp)
  48f31c:	00406021 	move	t4,v0
  48f320:	11800022 	beqz	t4,48f3ac <ttosubnet+0x23c>
  48f324:	27b00038 	addiu	s0,sp,56
  48f328:	02402021 	move	a0,s2
  48f32c:	02202821 	move	a1,s1
  48f330:	02603021 	move	a2,s3
  48f334:	02003821 	move	a3,s0
  48f338:	8f998320 	lw	t9,-31968(gp)
  48f33c:	00000000 	nop
  48f340:	0320f809 	jalr	t9
  48f344:	00000000 	nop
  48f348:	8fbc0010 	lw	gp,16(sp)
  48f34c:	00407021 	move	t6,v0
  48f350:	15c0ffa2 	bnez	t6,48f1dc <ttosubnet+0x6c>
  48f354:	00000000 	nop
  48f358:	02002021 	move	a0,s0
  48f35c:	8f9980f4 	lw	t9,-32524(gp)
  48f360:	00000000 	nop
  48f364:	0320f809 	jalr	t9
  48f368:	00000000 	nop
  48f36c:	8fbc0010 	lw	gp,16(sp)
  48f370:	00402821 	move	a1,v0
  48f374:	8f82804c 	lw	v0,-32692(gp)
  48f378:	00000000 	nop
  48f37c:	2442cf74 	addiu	v0,v0,-12428
  48f380:	04a0ff96 	bltz	a1,48f1dc <ttosubnet+0x6c>
  48f384:	02a03821 	move	a3,s5
  48f388:	27a40018 	addiu	a0,sp,24
  48f38c:	24060030 	li	a2,48
  48f390:	8f998844 	lw	t9,-30652(gp)
  48f394:	00000000 	nop
  48f398:	0320f809 	jalr	t9
  48f39c:	00000000 	nop
  48f3a0:	8fbc0010 	lw	gp,16(sp)
  48f3a4:	1000ff8d 	b	48f1dc <ttosubnet+0x6c>
  48f3a8:	00000000 	nop
  48f3ac:	8fa5005c 	lw	a1,92(sp)
  48f3b0:	8f82804c 	lw	v0,-32692(gp)
  48f3b4:	00000000 	nop
  48f3b8:	2442cfa0 	addiu	v0,v0,-12384
  48f3bc:	0285682b 	sltu	t5,s4,a1
  48f3c0:	15a0ff86 	bnez	t5,48f1dc <ttosubnet+0x6c>
  48f3c4:	02a03821 	move	a3,s5
  48f3c8:	1000fff0 	b	48f38c <ttosubnet+0x21c>
  48f3cc:	27a40018 	addiu	a0,sp,24
  48f3d0:	00002021 	move	a0,zero
  48f3d4:	27a50018 	addiu	a1,sp,24
  48f3d8:	8f9988e0 	lw	t9,-30496(gp)
  48f3dc:	00000000 	nop
  48f3e0:	0320f809 	jalr	t9
  48f3e4:	00000000 	nop
  48f3e8:	8fbc0010 	lw	gp,16(sp)
  48f3ec:	1000ffc3 	b	48f2fc <ttosubnet+0x18c>
  48f3f0:	02402021 	move	a0,s2
  48f3f4:	8f858018 	lw	a1,-32744(gp)
  48f3f8:	00000000 	nop
  48f3fc:	24a547e0 	addiu	a1,a1,18400
  48f400:	24060008 	li	a2,8
  48f404:	8f99864c 	lw	t9,-31156(gp)
  48f408:	00000000 	nop
  48f40c:	0320f809 	jalr	t9
  48f410:	00000000 	nop
  48f414:	8fbc0010 	lw	gp,16(sp)
  48f418:	1440ff7d 	bnez	v0,48f210 <ttosubnet+0xa0>
  48f41c:	02002021 	move	a0,s0
  48f420:	24050002 	li	a1,2
  48f424:	8f908018 	lw	s0,-32744(gp)
  48f428:	00000000 	nop
  48f42c:	261047ec 	addiu	s0,s0,18412
  48f430:	12650005 	beq	s3,a1,48f448 <ttosubnet+0x2d8>
  48f434:	3a670002 	xori	a3,s3,0x2
  48f438:	8f908018 	lw	s0,-32744(gp)
  48f43c:	00000000 	nop
  48f440:	261047f0 	addiu	s0,s0,18416
  48f444:	00000000 	nop
  48f448:	0007302b 	sltu	a2,zero,a3
  48f44c:	1000ff6f 	b	48f20c <ttosubnet+0x9c>
  48f450:	24d10003 	addiu	s1,a2,3
  48f454:	1000ff6a 	b	48f200 <ttosubnet+0x90>
  48f458:	24140020 	li	s4,32
  48f45c:	8f998188 	lw	t9,-32376(gp)
  48f460:	00000000 	nop
  48f464:	0320f809 	jalr	t9
  48f468:	00000000 	nop
  48f46c:	8fbc0010 	lw	gp,16(sp)
  48f470:	00408821 	move	s1,v0
  48f474:	8f82804c 	lw	v0,-32692(gp)
  48f478:	00000000 	nop
  48f47c:	2442cfc0 	addiu	v0,v0,-12352
  48f480:	1620ff4e 	bnez	s1,48f1bc <ttosubnet+0x4c>
  48f484:	24030002 	li	v1,2
  48f488:	1000ff54 	b	48f1dc <ttosubnet+0x6c>
  48f48c:	00000000 	nop

0048f490 <ttoul>:
  48f490:	3c1c0fb8 	lui	gp,0xfb8
  48f494:	279cd4e0 	addiu	gp,gp,-11040
  48f498:	0399e021 	addu	gp,gp,t9
  48f49c:	27bdffc0 	addiu	sp,sp,-64
  48f4a0:	afbc0010 	sw	gp,16(sp)
  48f4a4:	afb70034 	sw	s7,52(sp)
  48f4a8:	afb30024 	sw	s3,36(sp)
  48f4ac:	afb20020 	sw	s2,32(sp)
  48f4b0:	afb1001c 	sw	s1,28(sp)
  48f4b4:	afbf003c 	sw	ra,60(sp)
  48f4b8:	afbc0038 	sw	gp,56(sp)
  48f4bc:	afb60030 	sw	s6,48(sp)
  48f4c0:	afb5002c 	sw	s5,44(sp)
  48f4c4:	afb40028 	sw	s4,40(sp)
  48f4c8:	afb00018 	sw	s0,24(sp)
  48f4cc:	00808821 	move	s1,a0
  48f4d0:	00a09821 	move	s3,a1
  48f4d4:	00c09021 	move	s2,a2
  48f4d8:	00e0b821 	move	s7,a3
	unsigned long r;
	unsigned long rlimit;
	int dlimit;

	if (srclen == 0)
  48f4dc:	1260009c 	beqz	s3,48f750 <ttoul+0x2c0>
  48f4e0:	02202021 	move	a0,s1
		srclen = strlen(src);
	if (srclen == 0)
		return "empty string";

	if (base == 0) {
  48f4e4:	1240007c 	beqz	s2,48f6d8 <ttoul+0x248>
  48f4e8:	24090008 	li	t1,8
		if (srclen > 2 && *src == '0' &&
					(*(src+1) == 'x' || *(src+1) == 'X'))
			return ttoul(src+2, srclen-2, 16, resultp);
		if (srclen > 1 && *src == '0')
			return ttoul(src+1, srclen-1, 8, resultp);
		return ttoul(src, srclen, 10, resultp);
	}
	if (base != 8 && base != 10 && base != 16)
  48f4ec:	12490013 	beq	s2,t1,48f53c <ttoul+0xac>
  48f4f0:	240a000a 	li	t2,10
  48f4f4:	124a0011 	beq	s2,t2,48f53c <ttoul+0xac>
  48f4f8:	240b0010 	li	t3,16
  48f4fc:	8f82804c 	lw	v0,-32692(gp)
  48f500:	00000000 	nop
  48f504:	2442cfd0 	addiu	v0,v0,-12336
  48f508:	124b000d 	beq	s2,t3,48f540 <ttoul+0xb0>
  48f50c:	240c0010 	li	t4,16
		return "unsupported number base";

	r = 0;
	stop = src + srclen;
	if (base == 16) {
		while (src < stop) {
			c = *src++;
			p = strchr(hex, c);
			if (p != NULL)
				d = p - hex;
			else {
				p = strchr(uchex, c);
				if (p == NULL)
					return "non-hex digit in hex number";
				d = p - uchex;
			}
			r = (r << 4) | d;
		}
		/* defer length check to catch invalid digits first */
		if (srclen > sizeof(unsigned long) * 2)
			return "hex number too long";
	} else {
		rlimit = ULONG_MAX / base;
		dlimit = (int)(ULONG_MAX - rlimit*base);
		while (src < stop) {
			c = *src++;
			d = c - '0';
			if (d < 0 || d >= base)
				return "non-digit in number";
			if (r > rlimit || (r == rlimit && d > dlimit))
				return "unsigned-long overflow";
			r = r*base + d;
		}
	}

	*resultp = r;
	return NULL;
}
  48f510:	8fbf003c 	lw	ra,60(sp)
  48f514:	8fb70034 	lw	s7,52(sp)
  48f518:	8fb60030 	lw	s6,48(sp)
  48f51c:	8fb5002c 	lw	s5,44(sp)
  48f520:	8fb40028 	lw	s4,40(sp)
  48f524:	8fb30024 	lw	s3,36(sp)
  48f528:	8fb20020 	lw	s2,32(sp)
  48f52c:	8fb1001c 	lw	s1,28(sp)
  48f530:	8fb00018 	lw	s0,24(sp)
  48f534:	03e00008 	jr	ra
  48f538:	27bd0040 	addiu	sp,sp,64
  48f53c:	240c0010 	li	t4,16
  48f540:	0000a021 	move	s4,zero
  48f544:	124c0031 	beq	s2,t4,48f60c <ttoul+0x17c>
  48f548:	0233a821 	addu	s5,s1,s3
  48f54c:	2418ffff 	li	t8,-1
  48f550:	0312001b 	divu	zero,t8,s2
  48f554:	0235982b 	sltu	s3,s1,s5
  48f558:	16400002 	bnez	s2,48f564 <ttoul+0xd4>
  48f55c:	00000000 	nop
  48f560:	0007000d 	break	0x7
  48f564:	00003812 	mflo	a3
	...
  48f570:	00f20018 	mult	a3,s2
  48f574:	0000b012 	mflo	s6
	...
  48f580:	1260001b 	beqz	s3,48f5f0 <ttoul+0x160>
  48f584:	00164027 	nor	t0,zero,s6
  48f588:	82390000 	lb	t9,0(s1)
  48f58c:	26310001 	addiu	s1,s1,1
  48f590:	2726ffd0 	addiu	a2,t9,-48
  48f594:	00f4202b 	sltu	a0,a3,s4
  48f598:	00d2182a 	slt	v1,a2,s2
  48f59c:	04c10006 	bgez	a2,48f5b8 <ttoul+0x128>
  48f5a0:	0235282b 	sltu	a1,s1,s5
  48f5a4:	8f82804c 	lw	v0,-32692(gp)
  48f5a8:	00000000 	nop
  48f5ac:	2442cfe8 	addiu	v0,v0,-12312
  48f5b0:	1000ffd7 	b	48f510 <ttoul+0x80>
  48f5b4:	00000000 	nop
  48f5b8:	1060fffa 	beqz	v1,48f5a4 <ttoul+0x114>
  48f5bc:	0106102a 	slt	v0,t0,a2
  48f5c0:	10800006 	beqz	a0,48f5dc <ttoul+0x14c>
  48f5c4:	00000000 	nop
  48f5c8:	8f82804c 	lw	v0,-32692(gp)
  48f5cc:	00000000 	nop
  48f5d0:	2442cffc 	addiu	v0,v0,-12292
  48f5d4:	1000ffce 	b	48f510 <ttoul+0x80>
  48f5d8:	00000000 	nop
  48f5dc:	12870007 	beq	s4,a3,48f5fc <ttoul+0x16c>
  48f5e0:	02920018 	mult	s4,s2
  48f5e4:	00002012 	mflo	a0
  48f5e8:	14a0ffe7 	bnez	a1,48f588 <ttoul+0xf8>
  48f5ec:	0086a021 	addu	s4,a0,a2
  48f5f0:	aef40000 	sw	s4,0(s7)
  48f5f4:	1000ffc6 	b	48f510 <ttoul+0x80>
  48f5f8:	00001021 	move	v0,zero
  48f5fc:	1040fff9 	beqz	v0,48f5e4 <ttoul+0x154>
  48f600:	00000000 	nop
  48f604:	1000fff0 	b	48f5c8 <ttoul+0x138>
  48f608:	00000000 	nop
  48f60c:	0235682b 	sltu	t5,s1,s5
  48f610:	11a0001d 	beqz	t5,48f688 <ttoul+0x1f8>
  48f614:	2e700009 	sltiu	s0,s3,9
  48f618:	8f968018 	lw	s6,-32744(gp)
  48f61c:	00000000 	nop
  48f620:	26d64800 	addiu	s6,s6,18432
  48f624:	00000000 	nop
  48f628:	82300000 	lb	s0,0(s1)
  48f62c:	00000000 	nop
  48f630:	02c02021 	move	a0,s6
  48f634:	02002821 	move	a1,s0
  48f638:	8f99813c 	lw	t9,-32452(gp)
  48f63c:	00000000 	nop
  48f640:	0320f809 	jalr	t9
  48f644:	00000000 	nop
  48f648:	8fbc0010 	lw	gp,16(sp)
  48f64c:	00000000 	nop
  48f650:	8f928018 	lw	s2,-32744(gp)
  48f654:	00000000 	nop
  48f658:	26524814 	addiu	s2,s2,18452
  48f65c:	00000000 	nop
  48f660:	02002821 	move	a1,s0
  48f664:	02402021 	move	a0,s2
  48f668:	00563023 	subu	a2,v0,s6
  48f66c:	1040000d 	beqz	v0,48f6a4 <ttoul+0x214>
  48f670:	26310001 	addiu	s1,s1,1
  48f674:	00147900 	sll	t7,s4,0x4
  48f678:	0235702b 	sltu	t6,s1,s5
  48f67c:	15c0ffea 	bnez	t6,48f628 <ttoul+0x198>
  48f680:	01e6a025 	or	s4,t7,a2
  48f684:	2e700009 	sltiu	s0,s3,9
  48f688:	1600ffd9 	bnez	s0,48f5f0 <ttoul+0x160>
  48f68c:	00000000 	nop
  48f690:	8f82804c 	lw	v0,-32692(gp)
  48f694:	00000000 	nop
  48f698:	2442d014 	addiu	v0,v0,-12268
  48f69c:	1000ff9c 	b	48f510 <ttoul+0x80>
  48f6a0:	00000000 	nop
  48f6a4:	8f99813c 	lw	t9,-32452(gp)
  48f6a8:	00000000 	nop
  48f6ac:	0320f809 	jalr	t9
  48f6b0:	00000000 	nop
  48f6b4:	8fbc0010 	lw	gp,16(sp)
  48f6b8:	00401821 	move	v1,v0
  48f6bc:	8f82804c 	lw	v0,-32692(gp)
  48f6c0:	00000000 	nop
  48f6c4:	2442d028 	addiu	v0,v0,-12248
  48f6c8:	1060ff91 	beqz	v1,48f510 <ttoul+0x80>
  48f6cc:	00723023 	subu	a2,v1,s2
  48f6d0:	1000ffe9 	b	48f678 <ttoul+0x1e8>
  48f6d4:	00147900 	sll	t7,s4,0x4
  48f6d8:	2e630003 	sltiu	v1,s3,3
  48f6dc:	14600006 	bnez	v1,48f6f8 <ttoul+0x268>
  48f6e0:	2e630002 	sltiu	v1,s3,2
  48f6e4:	82220000 	lb	v0,0(s1)
  48f6e8:	24040030 	li	a0,48
  48f6ec:	1044000c 	beq	v0,a0,48f720 <ttoul+0x290>
  48f6f0:	24050078 	li	a1,120
  48f6f4:	2e630002 	sltiu	v1,s3,2
  48f6f8:	1460ff78 	bnez	v1,48f4dc <ttoul+0x4c>
  48f6fc:	2412000a 	li	s2,10
  48f700:	82280000 	lb	t0,0(s1)
  48f704:	24070030 	li	a3,48
  48f708:	1507ff74 	bne	t0,a3,48f4dc <ttoul+0x4c>
  48f70c:	00000000 	nop
  48f710:	26310001 	addiu	s1,s1,1
  48f714:	2673ffff 	addiu	s3,s3,-1
  48f718:	1000ff70 	b	48f4dc <ttoul+0x4c>
  48f71c:	24120008 	li	s2,8
  48f720:	82230001 	lb	v1,1(s1)
  48f724:	00000000 	nop
  48f728:	14650005 	bne	v1,a1,48f740 <ttoul+0x2b0>
  48f72c:	24060058 	li	a2,88
  48f730:	26310002 	addiu	s1,s1,2
  48f734:	2673fffe 	addiu	s3,s3,-2
  48f738:	1000ff68 	b	48f4dc <ttoul+0x4c>
  48f73c:	24120010 	li	s2,16
  48f740:	1466ffec 	bne	v1,a2,48f6f4 <ttoul+0x264>
  48f744:	00000000 	nop
  48f748:	1000fffa 	b	48f734 <ttoul+0x2a4>
  48f74c:	26310002 	addiu	s1,s1,2
  48f750:	8f998188 	lw	t9,-32376(gp)
  48f754:	00000000 	nop
  48f758:	0320f809 	jalr	t9
  48f75c:	00000000 	nop
  48f760:	8fbc0010 	lw	gp,16(sp)
  48f764:	00409821 	move	s3,v0
  48f768:	8f82804c 	lw	v0,-32692(gp)
  48f76c:	00000000 	nop
  48f770:	2442d044 	addiu	v0,v0,-12220
  48f774:	1660ff5b 	bnez	s3,48f4e4 <ttoul+0x54>
  48f778:	00000000 	nop
  48f77c:	1000ff64 	b	48f510 <ttoul+0x80>
  48f780:	00000000 	nop
	...

0048f790 <ultoa>:
  48f790:	3c1c0fb8 	lui	gp,0xfb8
  48f794:	279cd1e0 	addiu	gp,gp,-11808
  48f798:	0399e021 	addu	gp,gp,t9
  48f79c:	27bdffc8 	addiu	sp,sp,-56
  48f7a0:	afbc0010 	sw	gp,16(sp)
  48f7a4:	00a01821 	move	v1,a1
	static char hex[] = "0123456789abcdef";

	p = bufend;
	*--p = '\0';
	if (base == 10) {
  48f7a8:	2408000a 	li	t0,10
  48f7ac:	afbf0030 	sw	ra,48(sp)
  48f7b0:	afbc002c 	sw	gp,44(sp)
  48f7b4:	afb00028 	sw	s0,40(sp)
  48f7b8:	a3a00024 	sb	zero,36(sp)
  48f7bc:	10680038 	beq	v1,t0,48f8a0 <ultoa+0x110>
  48f7c0:	27a50024 	addiu	a1,sp,36
		do {
			*--p = n%10 + '0';
			n /= 10;
		} while (n != 0);
	} else if (base == 16) {
  48f7c4:	24080010 	li	t0,16
  48f7c8:	10680023 	beq	v1,t0,48f858 <ultoa+0xc8>
  48f7cc:	240a0008 	li	t2,8
		do {
			*--p = hex[n&0xf];
			n >>= 4;
		} while (n != 0);
		*--p = 'x';
		*--p = '0';
	} else if (base == 8) {
  48f7d0:	106a0018 	beq	v1,t2,48f834 <ultoa+0xa4>
  48f7d4:	308c0007 	andi	t4,a0,0x7
		do {
			*--p = (n&07) + '0';
			n >>= 3;
		} while (n != 0);
		*--p = '0';
	} else
		*--p = '?';
  48f7d8:	2405003f 	li	a1,63
  48f7dc:	a3a50023 	sb	a1,35(sp)
  48f7e0:	27a50023 	addiu	a1,sp,35

	len = bufend - p;
  48f7e4:	27ae0025 	addiu	t6,sp,37

	if (dstlen > 0) {
  48f7e8:	10e0000c 	beqz	a3,48f81c <ultoa+0x8c>
  48f7ec:	01c58023 	subu	s0,t6,a1
		if (len > dstlen)
  48f7f0:	00f0782b 	sltu	t7,a3,s0
  48f7f4:	11e00003 	beqz	t7,48f804 <ultoa+0x74>
  48f7f8:	00c02021 	move	a0,a2
			*(p + dstlen - 1) = '\0';
  48f7fc:	00a74021 	addu	t0,a1,a3
  48f800:	a100ffff 	sb	zero,-1(t0)
		strcpy(dst, p);
  48f804:	8f998c58 	lw	t9,-29608(gp)
  48f808:	00000000 	nop
  48f80c:	0320f809 	jalr	t9
  48f810:	00000000 	nop
  48f814:	8fbc0010 	lw	gp,16(sp)
  48f818:	00000000 	nop
	}
	return len;
  48f81c:	02001021 	move	v0,s0
  48f820:	8fbf0030 	lw	ra,48(sp)
  48f824:	8fb00028 	lw	s0,40(sp)
  48f828:	03e00008 	jr	ra
  48f82c:	27bd0038 	addiu	sp,sp,56
  48f830:	308c0007 	andi	t4,a0,0x7
  48f834:	258b0030 	addiu	t3,t4,48
  48f838:	24a5ffff 	addiu	a1,a1,-1
  48f83c:	000420c2 	srl	a0,a0,0x3
  48f840:	1480fffb 	bnez	a0,48f830 <ultoa+0xa0>
  48f844:	a0ab0000 	sb	t3,0(a1)
  48f848:	24a5ffff 	addiu	a1,a1,-1
  48f84c:	240d0030 	li	t5,48
  48f850:	1000ffe4 	b	48f7e4 <ultoa+0x54>
  48f854:	a0ad0000 	sb	t5,0(a1)
  48f858:	8f888018 	lw	t0,-32744(gp)
  48f85c:	00000000 	nop
  48f860:	25084830 	addiu	t0,t0,18480
  48f864:	00000000 	nop
  48f868:	3098000f 	andi	t8,a0,0xf
  48f86c:	03081821 	addu	v1,t8,t0
  48f870:	90700000 	lbu	s0,0(v1)
  48f874:	24a5ffff 	addiu	a1,a1,-1
  48f878:	00042102 	srl	a0,a0,0x4
  48f87c:	1480fffa 	bnez	a0,48f868 <ultoa+0xd8>
  48f880:	a0b00000 	sb	s0,0(a1)
  48f884:	24b9ffff 	addiu	t9,a1,-1
  48f888:	24090078 	li	t1,120
  48f88c:	2725ffff 	addiu	a1,t9,-1
  48f890:	24040030 	li	a0,48
  48f894:	a3290000 	sb	t1,0(t9)
  48f898:	1000ffd2 	b	48f7e4 <ultoa+0x54>
  48f89c:	a0a40000 	sb	a0,0(a1)
  48f8a0:	3c02cccc 	lui	v0,0xcccc
  48f8a4:	3448cccd 	ori	t0,v0,0xcccd
  48f8a8:	00880019 	multu	a0,t0
  48f8ac:	24a5ffff 	addiu	a1,a1,-1
  48f8b0:	00007810 	mfhi	t7
  48f8b4:	000f50c2 	srl	t2,t7,0x3
  48f8b8:	000a7080 	sll	t6,t2,0x2
  48f8bc:	01ca6821 	addu	t5,t6,t2
  48f8c0:	000d6040 	sll	t4,t5,0x1
  48f8c4:	008c5823 	subu	t3,a0,t4
  48f8c8:	25690030 	addiu	t1,t3,48
  48f8cc:	01402021 	move	a0,t2
  48f8d0:	1480fff5 	bnez	a0,48f8a8 <ultoa+0x118>
  48f8d4:	a0a90000 	sb	t1,0(a1)
  48f8d8:	1000ffc3 	b	48f7e8 <ultoa+0x58>
  48f8dc:	27ae0025 	addiu	t6,sp,37

0048f8e0 <ultot>:
  48f8e0:	3c1c0fb8 	lui	gp,0xfb8
  48f8e4:	279cd090 	addiu	gp,gp,-12144
  48f8e8:	0399e021 	addu	gp,gp,t9
  48f8ec:	27bdffc8 	addiu	sp,sp,-56
  48f8f0:	afbc0010 	sw	gp,16(sp)
  48f8f4:	00a04021 	move	t0,a1
#	define	HEX32	(32/4)

	p = bufend;
	*--p = '\0';
	switch (base) {
  48f8f8:	29030012 	slti	v1,t0,18
  48f8fc:	afbf0030 	sw	ra,48(sp)
  48f900:	afbc002c 	sw	gp,44(sp)
  48f904:	afb00028 	sw	s0,40(sp)
  48f908:	a3a00024 	sb	zero,36(sp)
  48f90c:	27aa0025 	addiu	t2,sp,37
  48f910:	10600056 	beqz	v1,48fa6c <ultot+0x18c>
  48f914:	27a50024 	addiu	a1,sp,36
  48f918:	29030010 	slti	v1,t0,16
  48f91c:	10600032 	beqz	v1,48f9e8 <ultot+0x108>
  48f920:	24090008 	li	t1,8
  48f924:	11090024 	beq	t0,t1,48f9b8 <ultot+0xd8>
  48f928:	240b000a 	li	t3,10
  48f92c:	110b0005 	beq	t0,t3,48f944 <ultot+0x64>
  48f930:	00001021 	move	v0,zero
	case 10:
	case 'd':
		do {
			*--p = n%10 + '0';
			n /= 10;
		} while (n != 0);
		break;
	case 16:
	case 17:
	case 'x':
		do {
			*--p = hex[n&0xf];
			n >>= 4;
		} while (n != 0);
		if (base == 17)
			while (bufend - p < HEX32 + 1)
				*--p = '0';
		if (base == 'x') {
			*--p = 'x';
			*--p = '0';
		}
		break;
	case 8:
	case 'o':
		do {
			*--p = (n&07) + '0';
			n >>= 3;
		} while (n != 0);
		if (base == 'o')
			*--p = '0';
		break;
	default:
		return 0;
		break;
	}

	len = bufend - p;
	if (dstlen > 0) {
		if (len > dstlen)
			*(p + dstlen - 1) = '\0';
		strcpy(dst, p);
	}
	return len;
}
  48f934:	8fbf0030 	lw	ra,48(sp)
  48f938:	8fb00028 	lw	s0,40(sp)
  48f93c:	03e00008 	jr	ra
  48f940:	27bd0038 	addiu	sp,sp,56
  48f944:	3c02cccc 	lui	v0,0xcccc
  48f948:	3448cccd 	ori	t0,v0,0xcccd
  48f94c:	00880019 	multu	a0,t0
  48f950:	24a5ffff 	addiu	a1,a1,-1
  48f954:	00006810 	mfhi	t5
  48f958:	000dc0c2 	srl	t8,t5,0x3
  48f95c:	00186080 	sll	t4,t8,0x2
  48f960:	01985821 	addu	t3,t4,t8
  48f964:	000b4840 	sll	t1,t3,0x1
  48f968:	0089c823 	subu	t9,a0,t1
  48f96c:	27300030 	addiu	s0,t9,48
  48f970:	03002021 	move	a0,t8
  48f974:	1480fff5 	bnez	a0,48f94c <ultot+0x6c>
  48f978:	a0b00000 	sb	s0,0(a1)
  48f97c:	10e0000c 	beqz	a3,48f9b0 <ultot+0xd0>
  48f980:	01458023 	subu	s0,t2,a1
  48f984:	00f0502b 	sltu	t2,a3,s0
  48f988:	11400002 	beqz	t2,48f994 <ultot+0xb4>
  48f98c:	00a77821 	addu	t7,a1,a3
  48f990:	a1e0ffff 	sb	zero,-1(t7)
  48f994:	00c02021 	move	a0,a2
  48f998:	8f998c58 	lw	t9,-29608(gp)
  48f99c:	00000000 	nop
  48f9a0:	0320f809 	jalr	t9
  48f9a4:	00000000 	nop
  48f9a8:	8fbc0010 	lw	gp,16(sp)
  48f9ac:	00000000 	nop
  48f9b0:	1000ffe0 	b	48f934 <ultot+0x54>
  48f9b4:	02001021 	move	v0,s0
  48f9b8:	308d0007 	andi	t5,a0,0x7
  48f9bc:	25ac0030 	addiu	t4,t5,48
  48f9c0:	24a5ffff 	addiu	a1,a1,-1
  48f9c4:	000420c2 	srl	a0,a0,0x3
  48f9c8:	1480fffb 	bnez	a0,48f9b8 <ultot+0xd8>
  48f9cc:	a0ac0000 	sb	t4,0(a1)
  48f9d0:	240e006f 	li	t6,111
  48f9d4:	150effe9 	bne	t0,t6,48f97c <ultot+0x9c>
  48f9d8:	24030030 	li	v1,48
  48f9dc:	24a5ffff 	addiu	a1,a1,-1
  48f9e0:	1000ffe6 	b	48f97c <ultot+0x9c>
  48f9e4:	a0a30000 	sb	v1,0(a1)
  48f9e8:	8f898018 	lw	t1,-32744(gp)
  48f9ec:	00000000 	nop
  48f9f0:	25294850 	addiu	t1,t1,18512
  48f9f4:	00000000 	nop
  48f9f8:	308f000f 	andi	t7,a0,0xf
  48f9fc:	01e91821 	addu	v1,t7,t1
  48fa00:	906e0000 	lbu	t6,0(v1)
  48fa04:	24a5ffff 	addiu	a1,a1,-1
  48fa08:	00042102 	srl	a0,a0,0x4
  48fa0c:	1480fffa 	bnez	a0,48f9f8 <ultot+0x118>
  48fa10:	a0ae0000 	sb	t6,0(a1)
  48fa14:	24040011 	li	a0,17
  48fa18:	11040009 	beq	t0,a0,48fa40 <ultot+0x160>
  48fa1c:	0145c023 	subu	t8,t2,a1
  48fa20:	240b0078 	li	t3,120
  48fa24:	150bffd5 	bne	t0,t3,48f97c <ultot+0x9c>
  48fa28:	24a2ffff 	addiu	v0,a1,-1
  48fa2c:	a0480000 	sb	t0,0(v0)
  48fa30:	2445ffff 	addiu	a1,v0,-1
  48fa34:	24080030 	li	t0,48
  48fa38:	1000ffd0 	b	48f97c <ultot+0x9c>
  48fa3c:	a0a80000 	sb	t0,0(a1)
  48fa40:	2b100009 	slti	s0,t8,9
  48fa44:	1200fff7 	beqz	s0,48fa24 <ultot+0x144>
  48fa48:	240b0078 	li	t3,120
  48fa4c:	24030030 	li	v1,48
  48fa50:	24a5ffff 	addiu	a1,a1,-1
  48fa54:	01454823 	subu	t1,t2,a1
  48fa58:	29390009 	slti	t9,t1,9
  48fa5c:	1720fffc 	bnez	t9,48fa50 <ultot+0x170>
  48fa60:	a0a30000 	sb	v1,0(a1)
  48fa64:	1000ffef 	b	48fa24 <ultot+0x144>
  48fa68:	240b0078 	li	t3,120
  48fa6c:	240c006f 	li	t4,111
  48fa70:	110cffd1 	beq	t0,t4,48f9b8 <ultot+0xd8>
  48fa74:	290d0070 	slti	t5,t0,112
  48fa78:	11a00006 	beqz	t5,48fa94 <ultot+0x1b4>
  48fa7c:	240f0078 	li	t7,120
  48fa80:	240e0064 	li	t6,100
  48fa84:	110effaf 	beq	t0,t6,48f944 <ultot+0x64>
  48fa88:	00001021 	move	v0,zero
  48fa8c:	1000ffa9 	b	48f934 <ultot+0x54>
  48fa90:	00000000 	nop
  48fa94:	110fffd4 	beq	t0,t7,48f9e8 <ultot+0x108>
  48fa98:	00001021 	move	v0,zero
  48fa9c:	1000ffa5 	b	48f934 <ultot+0x54>
  48faa0:	00000000 	nop
	...

0048fab0 <ipsec_version_code>:
  48fab0:	3c1c0fb8 	lui	gp,0xfb8
  48fab4:	279ccec0 	addiu	gp,gp,-12608
  48fab8:	0399e021 	addu	gp,gp,t9
 */
const char *
ipsec_version_code()
{
	return freeswan_number;
  48fabc:	8f82804c 	lw	v0,-32692(gp)
  48fac0:	00000000 	nop
  48fac4:	2442d060 	addiu	v0,v0,-12192
  48fac8:	03e00008 	jr	ra
  48facc:	00000000 	nop

0048fad0 <ipsec_version_string>:
  48fad0:	3c1c0fb8 	lui	gp,0xfb8
  48fad4:	279ccea0 	addiu	gp,gp,-12640
  48fad8:	0399e021 	addu	gp,gp,t9
}

/*
 - ipsec_version_string - return full version string
 */
const char *
ipsec_version_string()
{
	return freeswan_string;
  48fadc:	8f82804c 	lw	v0,-32692(gp)
  48fae0:	00000000 	nop
  48fae4:	2442d068 	addiu	v0,v0,-12184
  48fae8:	03e00008 	jr	ra
  48faec:	00000000 	nop

0048faf0 <ike_alg_init>:
  48faf0:	3c1c0fb8 	lui	gp,0xfb8
  48faf4:	279cce80 	addiu	gp,gp,-12672
  48faf8:	0399e021 	addu	gp,gp,t9
  48fafc:	27bdffd8 	addiu	sp,sp,-40
  48fb00:	afbc0010 	sw	gp,16(sp)
  48fb04:	afbf0020 	sw	ra,32(sp)
  48fb08:	afbe001c 	sw	s8,28(sp)
  48fb0c:	afbc0018 	sw	gp,24(sp)
  48fb10:	03a0f021 	move	s8,sp
extern int ike_alg_init(void);  int ike_alg_init(void) {
{ extern int ike_alg_aes_init (void); ike_alg_aes_init();}
  48fb14:	8f998398 	lw	t9,-31848(gp)
  48fb18:	00000000 	nop
  48fb1c:	0320f809 	jalr	t9
  48fb20:	00000000 	nop
  48fb24:	8fdc0010 	lw	gp,16(s8)
  48fb28:	00000000 	nop
{ extern int ike_alg_blowfish_init (void); ike_alg_blowfish_init();}
  48fb2c:	8f99856c 	lw	t9,-31380(gp)
  48fb30:	00000000 	nop
  48fb34:	0320f809 	jalr	t9
  48fb38:	00000000 	nop
  48fb3c:	8fdc0010 	lw	gp,16(s8)
  48fb40:	00000000 	nop
{ extern int ike_alg_cast_init (void); ike_alg_cast_init();}
  48fb44:	8f998340 	lw	t9,-31936(gp)
  48fb48:	00000000 	nop
  48fb4c:	0320f809 	jalr	t9
  48fb50:	00000000 	nop
  48fb54:	8fdc0010 	lw	gp,16(s8)
  48fb58:	00000000 	nop
{ extern int ike_alg_serpent_init (void); ike_alg_serpent_init();}
  48fb5c:	8f998ad0 	lw	t9,-30000(gp)
  48fb60:	00000000 	nop
  48fb64:	0320f809 	jalr	t9
  48fb68:	00000000 	nop
  48fb6c:	8fdc0010 	lw	gp,16(s8)
  48fb70:	00000000 	nop
{ extern int ike_alg_sha2_init (void); ike_alg_sha2_init();}
  48fb74:	8f99875c 	lw	t9,-30884(gp)
  48fb78:	00000000 	nop
  48fb7c:	0320f809 	jalr	t9
  48fb80:	00000000 	nop
  48fb84:	8fdc0010 	lw	gp,16(s8)
  48fb88:	00000000 	nop
{ extern int ike_alg_twofish_init (void); ike_alg_twofish_init();}
  48fb8c:	8f998884 	lw	t9,-30588(gp)
  48fb90:	00000000 	nop
  48fb94:	0320f809 	jalr	t9
  48fb98:	00000000 	nop
  48fb9c:	8fdc0010 	lw	gp,16(s8)
  48fba0:	00000000 	nop
return 0;}
  48fba4:	00001021 	move	v0,zero
  48fba8:	03c0e821 	move	sp,s8
  48fbac:	8fbf0020 	lw	ra,32(sp)
  48fbb0:	8fbe001c 	lw	s8,28(sp)
  48fbb4:	27bd0028 	addiu	sp,sp,40
  48fbb8:	03e00008 	jr	ra
  48fbbc:	00000000 	nop

0048fbc0 <do_aes>:
  48fbc0:	3c1c0fb8 	lui	gp,0xfb8
  48fbc4:	279ccdb0 	addiu	gp,gp,-12880
  48fbc8:	0399e021 	addu	gp,gp,t9
  48fbcc:	27bdfdb0 	addiu	sp,sp,-592
  48fbd0:	afbc0018 	sw	gp,24(sp)
  48fbd4:	afbf0248 	sw	ra,584(sp)
  48fbd8:	afbe0244 	sw	s8,580(sp)
  48fbdc:	afbc0240 	sw	gp,576(sp)
  48fbe0:	03a0f021 	move	s8,sp
  48fbe4:	afc40250 	sw	a0,592(s8)
  48fbe8:	afc50254 	sw	a1,596(s8)
  48fbec:	afc60258 	sw	a2,600(s8)
  48fbf0:	afc7025c 	sw	a3,604(s8)
do_aes(u_int8_t *buf, size_t buf_len, u_int8_t *key, size_t key_size, u_int8_t *iv, bool enc)
{
    aes_context aes_ctx;
    char iv_bak[AES_CBC_BLOCK_SIZE];
    char *new_iv = NULL;	/* logic will avoid copy to NULL */
  48fbf4:	afc00238 	sw	zero,568(s8)

    aes_set_key(&aes_ctx, key, key_size, 0);
  48fbf8:	27c40020 	addiu	a0,s8,32
  48fbfc:	8fc50258 	lw	a1,600(s8)
  48fc00:	8fc6025c 	lw	a2,604(s8)
  48fc04:	00003821 	move	a3,zero
  48fc08:	8f9981a4 	lw	t9,-32348(gp)
  48fc0c:	00000000 	nop
  48fc10:	0320f809 	jalr	t9
  48fc14:	00000000 	nop
  48fc18:	8fdc0018 	lw	gp,24(s8)
  48fc1c:	00000000 	nop

    /*	
     *	my AES cbc does not touch passed IV (optimization for
     *	ESP handling), so I must "emulate" des-like IV
     *	crunching
     */
    if (!enc)
  48fc20:	8fc20264 	lw	v0,612(s8)
  48fc24:	00000000 	nop
  48fc28:	14400010 	bnez	v0,48fc6c <do_aes+0xac>
  48fc2c:	00000000 	nop
	    memcpy(new_iv=iv_bak, 
  48fc30:	27c40228 	addiu	a0,s8,552
  48fc34:	afc40238 	sw	a0,568(s8)
  48fc38:	8fc30250 	lw	v1,592(s8)
  48fc3c:	8fc20254 	lw	v0,596(s8)
  48fc40:	00000000 	nop
  48fc44:	00621021 	addu	v0,v1,v0
  48fc48:	2442fff0 	addiu	v0,v0,-16
  48fc4c:	00402821 	move	a1,v0
  48fc50:	24060010 	li	a2,16
  48fc54:	8f998a30 	lw	t9,-30160(gp)
  48fc58:	00000000 	nop
  48fc5c:	0320f809 	jalr	t9
  48fc60:	00000000 	nop
  48fc64:	8fdc0018 	lw	gp,24(s8)
  48fc68:	00000000 	nop
			    (char*) buf + buf_len-AES_CBC_BLOCK_SIZE,
			    AES_CBC_BLOCK_SIZE);

    AES_cbc_encrypt(&aes_ctx, buf, buf, buf_len, iv, enc);
  48fc6c:	8fc20260 	lw	v0,608(s8)
  48fc70:	00000000 	nop
  48fc74:	afa20010 	sw	v0,16(sp)
  48fc78:	8fc20264 	lw	v0,612(s8)
  48fc7c:	00000000 	nop
  48fc80:	afa20014 	sw	v0,20(sp)
  48fc84:	27c40020 	addiu	a0,s8,32
  48fc88:	8fc50250 	lw	a1,592(s8)
  48fc8c:	8fc60250 	lw	a2,592(s8)
  48fc90:	8fc70254 	lw	a3,596(s8)
  48fc94:	8f998860 	lw	t9,-30624(gp)
  48fc98:	00000000 	nop
  48fc9c:	0320f809 	jalr	t9
  48fca0:	00000000 	nop
  48fca4:	8fdc0018 	lw	gp,24(s8)
  48fca8:	00000000 	nop

    if (enc)
  48fcac:	8fc20264 	lw	v0,612(s8)
  48fcb0:	00000000 	nop
  48fcb4:	10400007 	beqz	v0,48fcd4 <do_aes+0x114>
  48fcb8:	00000000 	nop
	    new_iv = (char*) buf + buf_len-AES_CBC_BLOCK_SIZE;
  48fcbc:	8fc30250 	lw	v1,592(s8)
  48fcc0:	8fc20254 	lw	v0,596(s8)
  48fcc4:	00000000 	nop
  48fcc8:	00621021 	addu	v0,v1,v0
  48fccc:	2442fff0 	addiu	v0,v0,-16
  48fcd0:	afc20238 	sw	v0,568(s8)

    memcpy(iv, new_iv, AES_CBC_BLOCK_SIZE);
  48fcd4:	8fc40260 	lw	a0,608(s8)
  48fcd8:	8fc50238 	lw	a1,568(s8)
  48fcdc:	24060010 	li	a2,16
  48fce0:	8f998a30 	lw	t9,-30160(gp)
  48fce4:	00000000 	nop
  48fce8:	0320f809 	jalr	t9
  48fcec:	00000000 	nop
  48fcf0:	8fdc0018 	lw	gp,24(s8)
  48fcf4:	00000000 	nop
}
  48fcf8:	03c0e821 	move	sp,s8
  48fcfc:	8fbf0248 	lw	ra,584(sp)
  48fd00:	8fbe0244 	lw	s8,580(sp)
  48fd04:	27bd0250 	addiu	sp,sp,592
  48fd08:	03e00008 	jr	ra
  48fd0c:	00000000 	nop

0048fd10 <ike_alg_aes_init>:
  48fd10:	3c1c0fb8 	lui	gp,0xfb8
  48fd14:	279ccc60 	addiu	gp,gp,-13216
  48fd18:	0399e021 	addu	gp,gp,t9
  48fd1c:	27bdffd0 	addiu	sp,sp,-48
  48fd20:	afbc0010 	sw	gp,16(sp)
  48fd24:	afbf0028 	sw	ra,40(sp)
  48fd28:	afbe0024 	sw	s8,36(sp)
  48fd2c:	afbc0020 	sw	gp,32(sp)
  48fd30:	03a0f021 	move	s8,sp

struct encrypt_desc algo_aes =
{
	algo_type: 	IKE_ALG_ENCRYPT,
	algo_id:   	OAKLEY_AES_CBC,
	algo_next: 	NULL, 
	enc_ctxsize: 	sizeof(aes_context),
	enc_blocksize: 	AES_CBC_BLOCK_SIZE,
	keyminlen: 	AES_KEY_MIN_LEN,
	keydeflen: 	AES_KEY_DEF_LEN,
	keymaxlen: 	AES_KEY_MAX_LEN,
	do_crypt: 	do_aes,
};
int ike_alg_aes_init(void);
int
ike_alg_aes_init(void)
{
	int ret = ike_alg_register_enc(&algo_aes);
  48fd34:	8f848158 	lw	a0,-32424(gp)
  48fd38:	8f998478 	lw	t9,-31624(gp)
  48fd3c:	00000000 	nop
  48fd40:	0320f809 	jalr	t9
  48fd44:	00000000 	nop
  48fd48:	8fdc0010 	lw	gp,16(s8)
  48fd4c:	afc20018 	sw	v0,24(s8)
	return ret;
  48fd50:	8fc20018 	lw	v0,24(s8)
  48fd54:	00000000 	nop
}
  48fd58:	03c0e821 	move	sp,s8
  48fd5c:	8fbf0028 	lw	ra,40(sp)
  48fd60:	8fbe0024 	lw	s8,36(sp)
  48fd64:	27bd0030 	addiu	sp,sp,48
  48fd68:	03e00008 	jr	ra
  48fd6c:	00000000 	nop

0048fd70 <do_blowfish>:
  48fd70:	3c1c0fb8 	lui	gp,0xfb8
  48fd74:	279ccc00 	addiu	gp,gp,-13312
  48fd78:	0399e021 	addu	gp,gp,t9
  48fd7c:	27bdef88 	addiu	sp,sp,-4216
  48fd80:	afbc0018 	sw	gp,24(sp)
  48fd84:	afbf1070 	sw	ra,4208(sp)
  48fd88:	afbe106c 	sw	s8,4204(sp)
  48fd8c:	afbc1068 	sw	gp,4200(sp)
  48fd90:	03a0f021 	move	s8,sp
  48fd94:	afc41078 	sw	a0,4216(s8)
  48fd98:	afc5107c 	sw	a1,4220(s8)
  48fd9c:	afc61080 	sw	a2,4224(s8)
  48fda0:	afc71084 	sw	a3,4228(s8)
do_blowfish(u_int8_t *buf, size_t buf_len, u_int8_t *key, size_t key_size, u_int8_t *iv, bool enc)
{
    BF_KEY bf_ctx;

    BF_set_key(&bf_ctx, key_size , key);
  48fda4:	27c40020 	addiu	a0,s8,32
  48fda8:	8fc51084 	lw	a1,4228(s8)
  48fdac:	8fc61080 	lw	a2,4224(s8)
  48fdb0:	8f998738 	lw	t9,-30920(gp)
  48fdb4:	00000000 	nop
  48fdb8:	0320f809 	jalr	t9
  48fdbc:	00000000 	nop
  48fdc0:	8fdc0018 	lw	gp,24(s8)
  48fdc4:	00000000 	nop
    BF_cbc_encrypt(buf, buf, buf_len, &bf_ctx, iv, enc);
  48fdc8:	8fc21088 	lw	v0,4232(s8)
  48fdcc:	00000000 	nop
  48fdd0:	afa20010 	sw	v0,16(sp)
  48fdd4:	8fc2108c 	lw	v0,4236(s8)
  48fdd8:	00000000 	nop
  48fddc:	afa20014 	sw	v0,20(sp)
  48fde0:	8fc41078 	lw	a0,4216(s8)
  48fde4:	8fc51078 	lw	a1,4216(s8)
  48fde8:	8fc6107c 	lw	a2,4220(s8)
  48fdec:	27c70020 	addiu	a3,s8,32
  48fdf0:	8f9982ac 	lw	t9,-32084(gp)
  48fdf4:	00000000 	nop
  48fdf8:	0320f809 	jalr	t9
  48fdfc:	00000000 	nop
  48fe00:	8fdc0018 	lw	gp,24(s8)
  48fe04:	00000000 	nop
}
  48fe08:	03c0e821 	move	sp,s8
  48fe0c:	8fbf1070 	lw	ra,4208(sp)
  48fe10:	8fbe106c 	lw	s8,4204(sp)
  48fe14:	27bd1078 	addiu	sp,sp,4216
  48fe18:	03e00008 	jr	ra
  48fe1c:	00000000 	nop

0048fe20 <ike_alg_blowfish_init>:
  48fe20:	3c1c0fb8 	lui	gp,0xfb8
  48fe24:	279ccb50 	addiu	gp,gp,-13488
  48fe28:	0399e021 	addu	gp,gp,t9
  48fe2c:	27bdffd0 	addiu	sp,sp,-48
  48fe30:	afbc0010 	sw	gp,16(sp)
  48fe34:	afbf0028 	sw	ra,40(sp)
  48fe38:	afbe0024 	sw	s8,36(sp)
  48fe3c:	afbc0020 	sw	gp,32(sp)
  48fe40:	03a0f021 	move	s8,sp

struct encrypt_desc algo_blowfish =
{
	algo_type: IKE_ALG_ENCRYPT,
	algo_id:   OAKLEY_BLOWFISH_CBC,
	algo_next: NULL, 
	enc_ctxsize: sizeof(BF_KEY),
	enc_blocksize: BLOWFISH_CBC_BLOCK_SIZE,
	keyminlen: BLOWFISH_KEY_MIN_LEN,
	keydeflen: BLOWFISH_KEY_MIN_LEN,
	keymaxlen: BLOWFISH_KEY_MAX_LEN,
	do_crypt: do_blowfish,
};
int ike_alg_blowfish_init(void);
int
ike_alg_blowfish_init(void)
{
	int ret = ike_alg_register_enc(&algo_blowfish);
  48fe44:	8f848344 	lw	a0,-31932(gp)
  48fe48:	8f998478 	lw	t9,-31624(gp)
  48fe4c:	00000000 	nop
  48fe50:	0320f809 	jalr	t9
  48fe54:	00000000 	nop
  48fe58:	8fdc0010 	lw	gp,16(s8)
  48fe5c:	afc20018 	sw	v0,24(s8)
	return ret;
  48fe60:	8fc20018 	lw	v0,24(s8)
  48fe64:	00000000 	nop
}
  48fe68:	03c0e821 	move	sp,s8
  48fe6c:	8fbf0028 	lw	ra,40(sp)
  48fe70:	8fbe0024 	lw	s8,36(sp)
  48fe74:	27bd0030 	addiu	sp,sp,48
  48fe78:	03e00008 	jr	ra
  48fe7c:	00000000 	nop

0048fe80 <do_cast>:
  48fe80:	3c1c0fb8 	lui	gp,0xfb8
  48fe84:	279ccaf0 	addiu	gp,gp,-13584
  48fe88:	0399e021 	addu	gp,gp,t9
  48fe8c:	27bdff48 	addiu	sp,sp,-184
  48fe90:	afbc0018 	sw	gp,24(sp)
  48fe94:	afbf00b0 	sw	ra,176(sp)
  48fe98:	afbe00ac 	sw	s8,172(sp)
  48fe9c:	afbc00a8 	sw	gp,168(sp)
  48fea0:	03a0f021 	move	s8,sp
  48fea4:	afc400b8 	sw	a0,184(s8)
  48fea8:	afc500bc 	sw	a1,188(s8)
  48feac:	afc600c0 	sw	a2,192(s8)
  48feb0:	afc700c4 	sw	a3,196(s8)
static void
do_cast(u_int8_t *buf, size_t buf_size, u_int8_t *key, size_t key_size __attribute__((unused)), u_int8_t *iv, bool enc)
{
    CAST_KEY cast_ctx;
    passert (!key_size || (key_size==CAST_KEY_LEN/BITS_PER_BYTE))
  48feb4:	8fc200c4 	lw	v0,196(s8)
  48feb8:	00000000 	nop
  48febc:	10400012 	beqz	v0,48ff08 <do_cast+0x88>
  48fec0:	00000000 	nop
  48fec4:	8fc300c4 	lw	v1,196(s8)
  48fec8:	24020010 	li	v0,16
  48fecc:	1062000e 	beq	v1,v0,48ff08 <do_cast+0x88>
  48fed0:	00000000 	nop
  48fed4:	8f84804c 	lw	a0,-32692(gp)
  48fed8:	00000000 	nop
  48fedc:	2484d080 	addiu	a0,a0,-12160
  48fee0:	8f85804c 	lw	a1,-32692(gp)
  48fee4:	00000000 	nop
  48fee8:	24a5d0b4 	addiu	a1,a1,-12108
  48feec:	24060015 	li	a2,21
  48fef0:	8f998bb8 	lw	t9,-29768(gp)
  48fef4:	00000000 	nop
  48fef8:	0320f809 	jalr	t9
  48fefc:	00000000 	nop
  48ff00:	8fdc0018 	lw	gp,24(s8)
  48ff04:	00000000 	nop
    CAST_set_key(&cast_ctx, key_size, key);
  48ff08:	27c40020 	addiu	a0,s8,32
  48ff0c:	8fc500c4 	lw	a1,196(s8)
  48ff10:	8fc600c0 	lw	a2,192(s8)
  48ff14:	8f998544 	lw	t9,-31420(gp)
  48ff18:	00000000 	nop
  48ff1c:	0320f809 	jalr	t9
  48ff20:	00000000 	nop
  48ff24:	8fdc0018 	lw	gp,24(s8)
  48ff28:	00000000 	nop
    CAST_cbc_encrypt(buf, buf, buf_size, &cast_ctx, iv, enc);
  48ff2c:	8fc200c8 	lw	v0,200(s8)
  48ff30:	00000000 	nop
  48ff34:	afa20010 	sw	v0,16(sp)
  48ff38:	8fc200cc 	lw	v0,204(s8)
  48ff3c:	00000000 	nop
  48ff40:	afa20014 	sw	v0,20(sp)
  48ff44:	8fc400b8 	lw	a0,184(s8)
  48ff48:	8fc500b8 	lw	a1,184(s8)
  48ff4c:	8fc600bc 	lw	a2,188(s8)
  48ff50:	27c70020 	addiu	a3,s8,32
  48ff54:	8f998214 	lw	t9,-32236(gp)
  48ff58:	00000000 	nop
  48ff5c:	0320f809 	jalr	t9
  48ff60:	00000000 	nop
  48ff64:	8fdc0018 	lw	gp,24(s8)
  48ff68:	00000000 	nop
}
  48ff6c:	03c0e821 	move	sp,s8
  48ff70:	8fbf00b0 	lw	ra,176(sp)
  48ff74:	8fbe00ac 	lw	s8,172(sp)
  48ff78:	27bd00b8 	addiu	sp,sp,184
  48ff7c:	03e00008 	jr	ra
  48ff80:	00000000 	nop

0048ff84 <ike_alg_cast_init>:
  48ff84:	3c1c0fb8 	lui	gp,0xfb8
  48ff88:	279cc9ec 	addiu	gp,gp,-13844
  48ff8c:	0399e021 	addu	gp,gp,t9
  48ff90:	27bdffd0 	addiu	sp,sp,-48
  48ff94:	afbc0010 	sw	gp,16(sp)
  48ff98:	afbf0028 	sw	ra,40(sp)
  48ff9c:	afbe0024 	sw	s8,36(sp)
  48ffa0:	afbc0020 	sw	gp,32(sp)
  48ffa4:	03a0f021 	move	s8,sp

struct encrypt_desc encrypt_desc_cast =
{
	algo_type: IKE_ALG_ENCRYPT,
	algo_id:   OAKLEY_CAST_CBC,
	algo_next: NULL, 
	enc_ctxsize: sizeof(CAST_KEY),
	enc_blocksize: CAST_CBC_BLOCK_SIZE,
	keyminlen: CAST_KEY_LEN,
	keydeflen: CAST_KEY_LEN,
	keymaxlen: CAST_KEY_LEN,
	do_crypt: do_cast,
};
int ike_alg_cast_init(void);
int
ike_alg_cast_init(void)
{
	int ret = ike_alg_register_enc(&encrypt_desc_cast);
  48ffa8:	8f8489f8 	lw	a0,-30216(gp)
  48ffac:	8f998478 	lw	t9,-31624(gp)
  48ffb0:	00000000 	nop
  48ffb4:	0320f809 	jalr	t9
  48ffb8:	00000000 	nop
  48ffbc:	8fdc0010 	lw	gp,16(s8)
  48ffc0:	afc20018 	sw	v0,24(s8)
	return ret;
  48ffc4:	8fc20018 	lw	v0,24(s8)
  48ffc8:	00000000 	nop
}
  48ffcc:	03c0e821 	move	sp,s8
  48ffd0:	8fbf0028 	lw	ra,40(sp)
  48ffd4:	8fbe0024 	lw	s8,36(sp)
  48ffd8:	27bd0030 	addiu	sp,sp,48
  48ffdc:	03e00008 	jr	ra
  48ffe0:	00000000 	nop
	...

0048fff0 <do_serpent>:
  48fff0:	3c1c0fb8 	lui	gp,0xfb8
  48fff4:	279cc980 	addiu	gp,gp,-13952
  48fff8:	0399e021 	addu	gp,gp,t9
  48fffc:	27bdfd88 	addiu	sp,sp,-632
  490000:	afbc0018 	sw	gp,24(sp)
  490004:	afbf0270 	sw	ra,624(sp)
  490008:	afbe026c 	sw	s8,620(sp)
  49000c:	afbc0268 	sw	gp,616(sp)
  490010:	03a0f021 	move	s8,sp
  490014:	afc40278 	sw	a0,632(s8)
  490018:	afc5027c 	sw	a1,636(s8)
  49001c:	afc60280 	sw	a2,640(s8)
  490020:	afc70284 	sw	a3,644(s8)
do_serpent(u_int8_t *buf, size_t buf_size, u_int8_t *key, size_t key_size, u_int8_t *iv, bool enc)
{
    serpent_context serpent_ctx;
    char iv_bak[SERPENT_CBC_BLOCK_SIZE];
    char *new_iv = NULL;	/* logic will avoid copy to NULL */
  490024:	afc00260 	sw	zero,608(s8)


    serpent_set_key(&serpent_ctx, key, key_size);
  490028:	27c40020 	addiu	a0,s8,32
  49002c:	8fc50280 	lw	a1,640(s8)
  490030:	8fc60284 	lw	a2,644(s8)
  490034:	8f9989b8 	lw	t9,-30280(gp)
  490038:	00000000 	nop
  49003c:	0320f809 	jalr	t9
  490040:	00000000 	nop
  490044:	8fdc0018 	lw	gp,24(s8)
  490048:	00000000 	nop
    /*	
     *	my SERPENT cbc does not touch passed IV (optimization for
     *	ESP handling), so I must "emulate" des-like IV
     *	crunching
     */
    if (!enc)
  49004c:	8fc2028c 	lw	v0,652(s8)
  490050:	00000000 	nop
  490054:	14400010 	bnez	v0,490098 <do_serpent+0xa8>
  490058:	00000000 	nop
	    memcpy(new_iv=iv_bak, 
  49005c:	27c40250 	addiu	a0,s8,592
  490060:	afc40260 	sw	a0,608(s8)
  490064:	8fc30278 	lw	v1,632(s8)
  490068:	8fc2027c 	lw	v0,636(s8)
  49006c:	00000000 	nop
  490070:	00621021 	addu	v0,v1,v0
  490074:	2442fff0 	addiu	v0,v0,-16
  490078:	00402821 	move	a1,v0
  49007c:	24060010 	li	a2,16
  490080:	8f998a30 	lw	t9,-30160(gp)
  490084:	00000000 	nop
  490088:	0320f809 	jalr	t9
  49008c:	00000000 	nop
  490090:	8fdc0018 	lw	gp,24(s8)
  490094:	00000000 	nop
			    (char*) buf + buf_size-SERPENT_CBC_BLOCK_SIZE,
			    SERPENT_CBC_BLOCK_SIZE);

    serpent_cbc_encrypt(&serpent_ctx, buf, buf, buf_size, iv, enc);
  490098:	8fc20288 	lw	v0,648(s8)
  49009c:	00000000 	nop
  4900a0:	afa20010 	sw	v0,16(sp)
  4900a4:	8fc2028c 	lw	v0,652(s8)
  4900a8:	00000000 	nop
  4900ac:	afa20014 	sw	v0,20(sp)
  4900b0:	27c40020 	addiu	a0,s8,32
  4900b4:	8fc50278 	lw	a1,632(s8)
  4900b8:	8fc60278 	lw	a2,632(s8)
  4900bc:	8fc7027c 	lw	a3,636(s8)
  4900c0:	8f99862c 	lw	t9,-31188(gp)
  4900c4:	00000000 	nop
  4900c8:	0320f809 	jalr	t9
  4900cc:	00000000 	nop
  4900d0:	8fdc0018 	lw	gp,24(s8)
  4900d4:	00000000 	nop

    if (enc)
  4900d8:	8fc2028c 	lw	v0,652(s8)
  4900dc:	00000000 	nop
  4900e0:	10400007 	beqz	v0,490100 <do_serpent+0x110>
  4900e4:	00000000 	nop
	    new_iv = (char*) buf + buf_size-SERPENT_CBC_BLOCK_SIZE;
  4900e8:	8fc30278 	lw	v1,632(s8)
  4900ec:	8fc2027c 	lw	v0,636(s8)
  4900f0:	00000000 	nop
  4900f4:	00621021 	addu	v0,v1,v0
  4900f8:	2442fff0 	addiu	v0,v0,-16
  4900fc:	afc20260 	sw	v0,608(s8)

    memcpy(iv, new_iv, SERPENT_CBC_BLOCK_SIZE);
  490100:	8fc40288 	lw	a0,648(s8)
  490104:	8fc50260 	lw	a1,608(s8)
  490108:	24060010 	li	a2,16
  49010c:	8f998a30 	lw	t9,-30160(gp)
  490110:	00000000 	nop
  490114:	0320f809 	jalr	t9
  490118:	00000000 	nop
  49011c:	8fdc0018 	lw	gp,24(s8)
  490120:	00000000 	nop
}
  490124:	03c0e821 	move	sp,s8
  490128:	8fbf0270 	lw	ra,624(sp)
  49012c:	8fbe026c 	lw	s8,620(sp)
  490130:	27bd0278 	addiu	sp,sp,632
  490134:	03e00008 	jr	ra
  490138:	00000000 	nop

0049013c <ike_alg_serpent_init>:
  49013c:	3c1c0fb8 	lui	gp,0xfb8
  490140:	279cc834 	addiu	gp,gp,-14284
  490144:	0399e021 	addu	gp,gp,t9
  490148:	27bdffd0 	addiu	sp,sp,-48
  49014c:	afbc0010 	sw	gp,16(sp)
  490150:	afbf0028 	sw	ra,40(sp)
  490154:	afbe0024 	sw	s8,36(sp)
  490158:	afbc0020 	sw	gp,32(sp)
  49015c:	03a0f021 	move	s8,sp
struct encrypt_desc encrypt_desc_serpent =
{
	algo_type: 	IKE_ALG_ENCRYPT,
	algo_id:   	OAKLEY_SERPENT_CBC,
	algo_next: 	NULL,
	enc_ctxsize: 	sizeof(struct serpent_context),
	enc_blocksize: 	SERPENT_CBC_BLOCK_SIZE,
        keyminlen: 	SERPENT_KEY_MIN_LEN,
        keydeflen: 	SERPENT_KEY_DEF_LEN,
        keymaxlen: 	SERPENT_KEY_MAX_LEN,
        do_crypt: 	do_serpent,
};
int ike_alg_serpent_init(void);
int
ike_alg_serpent_init(void)
{
	int ret = ike_alg_register_enc(&encrypt_desc_serpent);
  490160:	8f848938 	lw	a0,-30408(gp)
  490164:	8f998478 	lw	t9,-31624(gp)
  490168:	00000000 	nop
  49016c:	0320f809 	jalr	t9
  490170:	00000000 	nop
  490174:	8fdc0010 	lw	gp,16(s8)
  490178:	afc20018 	sw	v0,24(s8)
	return ret;
  49017c:	8fc20018 	lw	v0,24(s8)
  490180:	00000000 	nop
}
  490184:	03c0e821 	move	sp,s8
  490188:	8fbf0028 	lw	ra,40(sp)
  49018c:	8fbe0024 	lw	s8,36(sp)
  490190:	27bd0030 	addiu	sp,sp,48
  490194:	03e00008 	jr	ra
  490198:	00000000 	nop
  49019c:	00000000 	nop

004901a0 <sha256_hash_final>:
  4901a0:	3c1c0fb8 	lui	gp,0xfb8
  4901a4:	279cc7d0 	addiu	gp,gp,-14384
  4901a8:	0399e021 	addu	gp,gp,t9
  4901ac:	27bdffd8 	addiu	sp,sp,-40
  4901b0:	afbc0010 	sw	gp,16(sp)
  4901b4:	afbf0020 	sw	ra,32(sp)
  4901b8:	afbe001c 	sw	s8,28(sp)
  4901bc:	afbc0018 	sw	gp,24(sp)
  4901c0:	03a0f021 	move	s8,sp
  4901c4:	afc40028 	sw	a0,40(s8)
  4901c8:	afc5002c 	sw	a1,44(s8)
#define  SHA2_512_DIGEST_SIZE	(512/BITS_PER_BYTE)

static void sha256_hash_final(u_char *hash, sha256_context *ctx)
{
	sha256_final(ctx);
  4901cc:	8fc4002c 	lw	a0,44(s8)
  4901d0:	8f9981c8 	lw	t9,-32312(gp)
  4901d4:	00000000 	nop
  4901d8:	0320f809 	jalr	t9
  4901dc:	00000000 	nop
  4901e0:	8fdc0010 	lw	gp,16(s8)
  4901e4:	00000000 	nop
	memcpy(hash, &ctx->sha_out[0], SHA2_256_DIGEST_SIZE);
  4901e8:	8fc40028 	lw	a0,40(s8)
  4901ec:	8fc5002c 	lw	a1,44(s8)
  4901f0:	24060020 	li	a2,32
  4901f4:	8f998a30 	lw	t9,-30160(gp)
  4901f8:	00000000 	nop
  4901fc:	0320f809 	jalr	t9
  490200:	00000000 	nop
  490204:	8fdc0010 	lw	gp,16(s8)
  490208:	00000000 	nop
}
  49020c:	03c0e821 	move	sp,s8
  490210:	8fbf0020 	lw	ra,32(sp)
  490214:	8fbe001c 	lw	s8,28(sp)
  490218:	27bd0028 	addiu	sp,sp,40
  49021c:	03e00008 	jr	ra
  490220:	00000000 	nop

00490224 <sha512_hash_final>:
  490224:	3c1c0fb8 	lui	gp,0xfb8
  490228:	279cc74c 	addiu	gp,gp,-14516
  49022c:	0399e021 	addu	gp,gp,t9
  490230:	27bdffd8 	addiu	sp,sp,-40
  490234:	afbc0010 	sw	gp,16(sp)
  490238:	afbf0020 	sw	ra,32(sp)
  49023c:	afbe001c 	sw	s8,28(sp)
  490240:	afbc0018 	sw	gp,24(sp)
  490244:	03a0f021 	move	s8,sp
  490248:	afc40028 	sw	a0,40(s8)
  49024c:	afc5002c 	sw	a1,44(s8)
static void sha512_hash_final(u_char *hash, sha512_context *ctx)
{
	sha512_final(ctx);
  490250:	8fc4002c 	lw	a0,44(s8)
  490254:	8f998280 	lw	t9,-32128(gp)
  490258:	00000000 	nop
  49025c:	0320f809 	jalr	t9
  490260:	00000000 	nop
  490264:	8fdc0010 	lw	gp,16(s8)
  490268:	00000000 	nop
	memcpy(hash, &ctx->sha_out[0], SHA2_512_DIGEST_SIZE);
  49026c:	8fc40028 	lw	a0,40(s8)
  490270:	8fc5002c 	lw	a1,44(s8)
  490274:	24060040 	li	a2,64
  490278:	8f998a30 	lw	t9,-30160(gp)
  49027c:	00000000 	nop
  490280:	0320f809 	jalr	t9
  490284:	00000000 	nop
  490288:	8fdc0010 	lw	gp,16(s8)
  49028c:	00000000 	nop
}
  490290:	03c0e821 	move	sp,s8
  490294:	8fbf0020 	lw	ra,32(sp)
  490298:	8fbe001c 	lw	s8,28(sp)
  49029c:	27bd0028 	addiu	sp,sp,40
  4902a0:	03e00008 	jr	ra
  4902a4:	00000000 	nop

004902a8 <ike_alg_sha2_init>:
  4902a8:	3c1c0fb8 	lui	gp,0xfb8
  4902ac:	279cc6c8 	addiu	gp,gp,-14648
  4902b0:	0399e021 	addu	gp,gp,t9
  4902b4:	27bdffd0 	addiu	sp,sp,-48
  4902b8:	afbc0010 	sw	gp,16(sp)
  4902bc:	afbf0028 	sw	ra,40(sp)
  4902c0:	afbe0024 	sw	s8,36(sp)
  4902c4:	afbc0020 	sw	gp,32(sp)
  4902c8:	03a0f021 	move	s8,sp
struct hash_desc hash_desc_sha2_256 = {
	algo_type: IKE_ALG_HASH,
	algo_id:   OAKLEY_SHA2_256,
	algo_next: NULL,
	hash_ctx_size: sizeof(sha256_context),
        hash_init: (void (*)(void *))sha256_init,
	hash_update: (void (*)(void *, const u_char *, size_t ))sha256_write,
	hash_final:(void (*)(u_char *, void *))sha256_hash_final,
	hash_digest_size: SHA2_256_DIGEST_SIZE,
};
struct hash_desc hash_desc_sha2_512 = {
	algo_type: IKE_ALG_HASH,
	algo_id:   OAKLEY_SHA2_512,
	algo_next: NULL,
	hash_ctx_size: sizeof(sha512_context),
        hash_init: (void (*)(void *))sha512_init,
	hash_update: (void (*)(void *, const u_char *, size_t ))sha512_write,
	hash_final:(void (*)(u_char *, void *))sha512_hash_final,
	hash_digest_size: SHA2_512_DIGEST_SIZE,
};
int ike_alg_sha2_init(void);
int
ike_alg_sha2_init(void)
{
	int ret;
	ret = ike_alg_register_hash(&hash_desc_sha2_256);
  4902cc:	8f848c00 	lw	a0,-29696(gp)
  4902d0:	8f998684 	lw	t9,-31100(gp)
  4902d4:	00000000 	nop
  4902d8:	0320f809 	jalr	t9
  4902dc:	00000000 	nop
  4902e0:	8fdc0010 	lw	gp,16(s8)
  4902e4:	afc20018 	sw	v0,24(s8)
	if (ret)
  4902e8:	8fc20018 	lw	v0,24(s8)
  4902ec:	00000000 	nop
  4902f0:	10400003 	beqz	v0,490300 <ike_alg_sha2_init+0x58>
  4902f4:	00000000 	nop
		goto out;
  4902f8:	10000008 	b	49031c <ike_alg_sha2_init+0x74>
  4902fc:	00000000 	nop
	ret = ike_alg_register_hash(&hash_desc_sha2_512);
  490300:	8f84894c 	lw	a0,-30388(gp)
  490304:	8f998684 	lw	t9,-31100(gp)
  490308:	00000000 	nop
  49030c:	0320f809 	jalr	t9
  490310:	00000000 	nop
  490314:	8fdc0010 	lw	gp,16(s8)
  490318:	afc20018 	sw	v0,24(s8)
out:
	return ret;
  49031c:	8fc20018 	lw	v0,24(s8)
  490320:	00000000 	nop
}
  490324:	03c0e821 	move	sp,s8
  490328:	8fbf0028 	lw	ra,40(sp)
  49032c:	8fbe0024 	lw	s8,36(sp)
  490330:	27bd0030 	addiu	sp,sp,48
  490334:	03e00008 	jr	ra
  490338:	00000000 	nop
  49033c:	00000000 	nop

00490340 <do_twofish>:
  490340:	3c1c0fb8 	lui	gp,0xfb8
  490344:	279cc630 	addiu	gp,gp,-14800
  490348:	0399e021 	addu	gp,gp,t9
  49034c:	27bdef18 	addiu	sp,sp,-4328
  490350:	afbc0018 	sw	gp,24(sp)
  490354:	afbf10e0 	sw	ra,4320(sp)
  490358:	afbe10dc 	sw	s8,4316(sp)
  49035c:	afbc10d8 	sw	gp,4312(sp)
  490360:	03a0f021 	move	s8,sp
  490364:	afc410e8 	sw	a0,4328(s8)
  490368:	afc510ec 	sw	a1,4332(s8)
  49036c:	afc610f0 	sw	a2,4336(s8)
  490370:	afc710f4 	sw	a3,4340(s8)
do_twofish(u_int8_t *buf, size_t buf_size, u_int8_t *key, size_t key_size, u_int8_t *iv, bool enc)
{
    twofish_context twofish_ctx;
    char iv_bak[TWOFISH_CBC_BLOCK_SIZE];
    char *new_iv = NULL;	/* logic will avoid copy to NULL */
  490374:	afc010d0 	sw	zero,4304(s8)

    twofish_set_key(&twofish_ctx, key, key_size);
  490378:	27c40020 	addiu	a0,s8,32
  49037c:	8fc510f0 	lw	a1,4336(s8)
  490380:	8fc610f4 	lw	a2,4340(s8)
  490384:	8f998aa8 	lw	t9,-30040(gp)
  490388:	00000000 	nop
  49038c:	0320f809 	jalr	t9
  490390:	00000000 	nop
  490394:	8fdc0018 	lw	gp,24(s8)
  490398:	00000000 	nop
    /*	
     *	my TWOFISH cbc does not touch passed IV (optimization for
     *	ESP handling), so I must "emulate" des-like IV
     *	crunching
     */
    if (!enc)
  49039c:	8fc210fc 	lw	v0,4348(s8)
  4903a0:	00000000 	nop
  4903a4:	14400010 	bnez	v0,4903e8 <do_twofish+0xa8>
  4903a8:	00000000 	nop
	    memcpy(new_iv=iv_bak, 
  4903ac:	27c410c0 	addiu	a0,s8,4288
  4903b0:	afc410d0 	sw	a0,4304(s8)
  4903b4:	8fc310e8 	lw	v1,4328(s8)
  4903b8:	8fc210ec 	lw	v0,4332(s8)
  4903bc:	00000000 	nop
  4903c0:	00621021 	addu	v0,v1,v0
  4903c4:	2442fff0 	addiu	v0,v0,-16
  4903c8:	00402821 	move	a1,v0
  4903cc:	24060010 	li	a2,16
  4903d0:	8f998a30 	lw	t9,-30160(gp)
  4903d4:	00000000 	nop
  4903d8:	0320f809 	jalr	t9
  4903dc:	00000000 	nop
  4903e0:	8fdc0018 	lw	gp,24(s8)
  4903e4:	00000000 	nop
			    (char*) buf + buf_size-TWOFISH_CBC_BLOCK_SIZE,
			    TWOFISH_CBC_BLOCK_SIZE);

    twofish_cbc_encrypt(&twofish_ctx, buf, buf, buf_size, iv, enc);
  4903e8:	8fc210f8 	lw	v0,4344(s8)
  4903ec:	00000000 	nop
  4903f0:	afa20010 	sw	v0,16(sp)
  4903f4:	8fc210fc 	lw	v0,4348(s8)
  4903f8:	00000000 	nop
  4903fc:	afa20014 	sw	v0,20(sp)
  490400:	27c40020 	addiu	a0,s8,32
  490404:	8fc510e8 	lw	a1,4328(s8)
  490408:	8fc610e8 	lw	a2,4328(s8)
  49040c:	8fc710ec 	lw	a3,4332(s8)
  490410:	8f998488 	lw	t9,-31608(gp)
  490414:	00000000 	nop
  490418:	0320f809 	jalr	t9
  49041c:	00000000 	nop
  490420:	8fdc0018 	lw	gp,24(s8)
  490424:	00000000 	nop

    if (enc)
  490428:	8fc210fc 	lw	v0,4348(s8)
  49042c:	00000000 	nop
  490430:	10400007 	beqz	v0,490450 <do_twofish+0x110>
  490434:	00000000 	nop
	    new_iv = (char*) buf + buf_size-TWOFISH_CBC_BLOCK_SIZE;
  490438:	8fc310e8 	lw	v1,4328(s8)
  49043c:	8fc210ec 	lw	v0,4332(s8)
  490440:	00000000 	nop
  490444:	00621021 	addu	v0,v1,v0
  490448:	2442fff0 	addiu	v0,v0,-16
  49044c:	afc210d0 	sw	v0,4304(s8)

    memcpy(iv, new_iv, TWOFISH_CBC_BLOCK_SIZE);
  490450:	8fc410f8 	lw	a0,4344(s8)
  490454:	8fc510d0 	lw	a1,4304(s8)
  490458:	24060010 	li	a2,16
  49045c:	8f998a30 	lw	t9,-30160(gp)
  490460:	00000000 	nop
  490464:	0320f809 	jalr	t9
  490468:	00000000 	nop
  49046c:	8fdc0018 	lw	gp,24(s8)
  490470:	00000000 	nop
}
  490474:	03c0e821 	move	sp,s8
  490478:	8fbf10e0 	lw	ra,4320(sp)
  49047c:	8fbe10dc 	lw	s8,4316(sp)
  490480:	27bd10e8 	addiu	sp,sp,4328
  490484:	03e00008 	jr	ra
  490488:	00000000 	nop

0049048c <ike_alg_twofish_init>:
  49048c:	3c1c0fb8 	lui	gp,0xfb8
  490490:	279cc4e4 	addiu	gp,gp,-15132
  490494:	0399e021 	addu	gp,gp,t9
  490498:	27bdffd0 	addiu	sp,sp,-48
  49049c:	afbc0010 	sw	gp,16(sp)
  4904a0:	afbf0028 	sw	ra,40(sp)
  4904a4:	afbe0024 	sw	s8,36(sp)
  4904a8:	afbc0020 	sw	gp,32(sp)
  4904ac:	03a0f021 	move	s8,sp
struct encrypt_desc encrypt_desc_twofish = 
{
	algo_type: 	IKE_ALG_ENCRYPT,
	algo_id:   	OAKLEY_TWOFISH_CBC,
	algo_next: 	NULL,
	enc_ctxsize: 	sizeof(twofish_context),
        enc_blocksize: 	TWOFISH_CBC_BLOCK_SIZE,
        keydeflen: 	TWOFISH_KEY_MIN_LEN,
        keyminlen: 	TWOFISH_KEY_DEF_LEN,
	keymaxlen: 	TWOFISH_KEY_MAX_LEN,
	do_crypt: 	do_twofish,
};
struct encrypt_desc encrypt_desc_twofish_ssh = 
{
	algo_type: 	IKE_ALG_ENCRYPT,
	algo_id:   	OAKLEY_TWOFISH_CBC_SSH,
	algo_next: 	NULL,
	enc_ctxsize: 	sizeof(twofish_context),
        enc_blocksize: 	TWOFISH_CBC_BLOCK_SIZE,
        keydeflen: 	TWOFISH_KEY_MIN_LEN,
        keyminlen: 	TWOFISH_KEY_DEF_LEN,
	keymaxlen: 	TWOFISH_KEY_MAX_LEN,
	do_crypt: 	do_twofish,
};
int ike_alg_twofish_init(void);
int
ike_alg_twofish_init(void)
{
	int ret = ike_alg_register_enc(&encrypt_desc_twofish);
  4904b0:	8f848b10 	lw	a0,-29936(gp)
  4904b4:	8f998478 	lw	t9,-31624(gp)
  4904b8:	00000000 	nop
  4904bc:	0320f809 	jalr	t9
  4904c0:	00000000 	nop
  4904c4:	8fdc0010 	lw	gp,16(s8)
  4904c8:	afc20018 	sw	v0,24(s8)
	if (ike_alg_register_enc(&encrypt_desc_twofish_ssh)<0)
  4904cc:	8f8486e4 	lw	a0,-31004(gp)
  4904d0:	8f998478 	lw	t9,-31624(gp)
  4904d4:	00000000 	nop
  4904d8:	0320f809 	jalr	t9
  4904dc:	00000000 	nop
  4904e0:	8fdc0010 	lw	gp,16(s8)
  4904e4:	0441000a 	bgez	v0,490510 <ike_alg_twofish_init+0x84>
  4904e8:	00000000 	nop
		plog("ike_alg_twofish_init(): Experimental OAKLEY_TWOFISH_CBC_SSH activation failed");
  4904ec:	8f84804c 	lw	a0,-32692(gp)
  4904f0:	00000000 	nop
  4904f4:	2484d0d0 	addiu	a0,a0,-12080
  4904f8:	8f998abc 	lw	t9,-30020(gp)
  4904fc:	00000000 	nop
  490500:	0320f809 	jalr	t9
  490504:	00000000 	nop
  490508:	8fdc0010 	lw	gp,16(s8)
  49050c:	00000000 	nop
	return ret;
  490510:	8fc20018 	lw	v0,24(s8)
  490514:	00000000 	nop
}
  490518:	03c0e821 	move	sp,s8
  49051c:	8fbf0028 	lw	ra,40(sp)
  490520:	8fbe0024 	lw	s8,36(sp)
  490524:	27bd0030 	addiu	sp,sp,48
  490528:	03e00008 	jr	ra
  49052c:	00000000 	nop

00490530 <AES_set_key>:
  490530:	3c1c0fb8 	lui	gp,0xfb8
  490534:	279cc440 	addiu	gp,gp,-15296
  490538:	0399e021 	addu	gp,gp,t9
  49053c:	27bdffd8 	addiu	sp,sp,-40
  490540:	afbc0010 	sw	gp,16(sp)
  490544:	afbf0020 	sw	ra,32(sp)
  490548:	afbe001c 	sw	s8,28(sp)
  49054c:	afbc0018 	sw	gp,24(sp)
  490550:	03a0f021 	move	s8,sp
  490554:	afc40028 	sw	a0,40(s8)
  490558:	afc5002c 	sw	a1,44(s8)
  49055c:	afc60030 	sw	a2,48(s8)
#include "aes_cbc.h"
#include "cbc_generic.h"
/* returns bool success */
int AES_set_key(aes_context *aes_ctx, const u_int8_t *key, int keysize) {
	aes_set_key(aes_ctx, key, keysize, 0);
  490560:	8fc40028 	lw	a0,40(s8)
  490564:	8fc5002c 	lw	a1,44(s8)
  490568:	8fc60030 	lw	a2,48(s8)
  49056c:	00003821 	move	a3,zero
  490570:	8f9981a4 	lw	t9,-32348(gp)
  490574:	00000000 	nop
  490578:	0320f809 	jalr	t9
  49057c:	00000000 	nop
  490580:	8fdc0010 	lw	gp,16(s8)
  490584:	00000000 	nop
	return 1;	
  490588:	24020001 	li	v0,1
}
  49058c:	03c0e821 	move	sp,s8
  490590:	8fbf0020 	lw	ra,32(sp)
  490594:	8fbe001c 	lw	s8,28(sp)
  490598:	27bd0028 	addiu	sp,sp,40
  49059c:	03e00008 	jr	ra
  4905a0:	00000000 	nop

004905a4 <AES_cbc_encrypt>:
  4905a4:	3c1c0fb8 	lui	gp,0xfb8
  4905a8:	279cc3cc 	addiu	gp,gp,-15412
  4905ac:	0399e021 	addu	gp,gp,t9
  4905b0:	27bdffc8 	addiu	sp,sp,-56
  4905b4:	afbc0010 	sw	gp,16(sp)
  4905b8:	afbf0030 	sw	ra,48(sp)
  4905bc:	afbe002c 	sw	s8,44(sp)
  4905c0:	afbc0028 	sw	gp,40(sp)
  4905c4:	03a0f021 	move	s8,sp
  4905c8:	afc40038 	sw	a0,56(s8)
  4905cc:	afc5003c 	sw	a1,60(s8)
  4905d0:	afc60040 	sw	a2,64(s8)
  4905d4:	afc70044 	sw	a3,68(s8)
CBC_IMPL_BLK16(AES_cbc_encrypt, aes_context, u_int8_t *, aes_encrypt, aes_decrypt);
  4905d8:	8fc20044 	lw	v0,68(s8)
  4905dc:	00000000 	nop
  4905e0:	afc20018 	sw	v0,24(s8)
  4905e4:	8fc20044 	lw	v0,68(s8)
  4905e8:	00000000 	nop
  4905ec:	3042000f 	andi	v0,v0,0xf
  4905f0:	10400004 	beqz	v0,490604 <AES_cbc_encrypt+0x60>
  4905f4:	00000000 	nop
  4905f8:	00001021 	move	v0,zero
  4905fc:	100000d3 	b	49094c <AES_cbc_encrypt+0x3a8>
  490600:	00000000 	nop
  490604:	8fc2004c 	lw	v0,76(s8)
  490608:	00000000 	nop
  49060c:	10400062 	beqz	v0,490798 <AES_cbc_encrypt+0x1f4>
  490610:	00000000 	nop
  490614:	afc0001c 	sw	zero,28(s8)
  490618:	8fc2001c 	lw	v0,28(s8)
  49061c:	8fc30044 	lw	v1,68(s8)
  490620:	00000000 	nop
  490624:	0043102a 	slt	v0,v0,v1
  490628:	14400003 	bnez	v0,490638 <AES_cbc_encrypt+0x94>
  49062c:	00000000 	nop
  490630:	100000c5 	b	490948 <AES_cbc_encrypt+0x3a4>
  490634:	00000000 	nop
  490638:	8fc2001c 	lw	v0,28(s8)
  49063c:	00000000 	nop
  490640:	14400006 	bnez	v0,49065c <AES_cbc_encrypt+0xb8>
  490644:	00000000 	nop
  490648:	8fc20048 	lw	v0,72(s8)
  49064c:	00000000 	nop
  490650:	afc20020 	sw	v0,32(s8)
  490654:	10000005 	b	49066c <AES_cbc_encrypt+0xc8>
  490658:	00000000 	nop
  49065c:	8fc20040 	lw	v0,64(s8)
  490660:	00000000 	nop
  490664:	2442fff0 	addiu	v0,v0,-16
  490668:	afc20020 	sw	v0,32(s8)
  49066c:	8fc20020 	lw	v0,32(s8)
  490670:	00000000 	nop
  490674:	8c430000 	lw	v1,0(v0)
  490678:	8fc2003c 	lw	v0,60(s8)
  49067c:	00000000 	nop
  490680:	8c420000 	lw	v0,0(v0)
  490684:	00000000 	nop
  490688:	00621826 	xor	v1,v1,v0
  49068c:	8fc20040 	lw	v0,64(s8)
  490690:	00000000 	nop
  490694:	ac430000 	sw	v1,0(v0)
  490698:	8fc20040 	lw	v0,64(s8)
  49069c:	00000000 	nop
  4906a0:	24440004 	addiu	a0,v0,4
  4906a4:	8fc20020 	lw	v0,32(s8)
  4906a8:	00000000 	nop
  4906ac:	24430004 	addiu	v1,v0,4
  4906b0:	8fc2003c 	lw	v0,60(s8)
  4906b4:	00000000 	nop
  4906b8:	24420004 	addiu	v0,v0,4
  4906bc:	8c630000 	lw	v1,0(v1)
  4906c0:	8c420000 	lw	v0,0(v0)
  4906c4:	00000000 	nop
  4906c8:	00621026 	xor	v0,v1,v0
  4906cc:	ac820000 	sw	v0,0(a0)
  4906d0:	8fc20040 	lw	v0,64(s8)
  4906d4:	00000000 	nop
  4906d8:	24440008 	addiu	a0,v0,8
  4906dc:	8fc20020 	lw	v0,32(s8)
  4906e0:	00000000 	nop
  4906e4:	24430008 	addiu	v1,v0,8
  4906e8:	8fc2003c 	lw	v0,60(s8)
  4906ec:	00000000 	nop
  4906f0:	24420008 	addiu	v0,v0,8
  4906f4:	8c630000 	lw	v1,0(v1)
  4906f8:	8c420000 	lw	v0,0(v0)
  4906fc:	00000000 	nop
  490700:	00621026 	xor	v0,v1,v0
  490704:	ac820000 	sw	v0,0(a0)
  490708:	8fc20040 	lw	v0,64(s8)
  49070c:	00000000 	nop
  490710:	2444000c 	addiu	a0,v0,12
  490714:	8fc20020 	lw	v0,32(s8)
  490718:	00000000 	nop
  49071c:	2443000c 	addiu	v1,v0,12
  490720:	8fc2003c 	lw	v0,60(s8)
  490724:	00000000 	nop
  490728:	2442000c 	addiu	v0,v0,12
  49072c:	8c630000 	lw	v1,0(v1)
  490730:	8c420000 	lw	v0,0(v0)
  490734:	00000000 	nop
  490738:	00621026 	xor	v0,v1,v0
  49073c:	ac820000 	sw	v0,0(a0)
  490740:	8fc40038 	lw	a0,56(s8)
  490744:	8fc50040 	lw	a1,64(s8)
  490748:	8fc60040 	lw	a2,64(s8)
  49074c:	8f998078 	lw	t9,-32648(gp)
  490750:	00000000 	nop
  490754:	0320f809 	jalr	t9
  490758:	00000000 	nop
  49075c:	8fdc0010 	lw	gp,16(s8)
  490760:	8fc2003c 	lw	v0,60(s8)
  490764:	00000000 	nop
  490768:	24420010 	addiu	v0,v0,16
  49076c:	afc2003c 	sw	v0,60(s8)
  490770:	8fc20040 	lw	v0,64(s8)
  490774:	00000000 	nop
  490778:	24420010 	addiu	v0,v0,16
  49077c:	afc20040 	sw	v0,64(s8)
  490780:	8fc2001c 	lw	v0,28(s8)
  490784:	00000000 	nop
  490788:	24420010 	addiu	v0,v0,16
  49078c:	afc2001c 	sw	v0,28(s8)
  490790:	1000ffa1 	b	490618 <AES_cbc_encrypt+0x74>
  490794:	00000000 	nop
  490798:	8fc20044 	lw	v0,68(s8)
  49079c:	00000000 	nop
  4907a0:	2442fff0 	addiu	v0,v0,-16
  4907a4:	afc2001c 	sw	v0,28(s8)
  4907a8:	8fc3003c 	lw	v1,60(s8)
  4907ac:	8fc2001c 	lw	v0,28(s8)
  4907b0:	00000000 	nop
  4907b4:	00621021 	addu	v0,v1,v0
  4907b8:	afc2003c 	sw	v0,60(s8)
  4907bc:	8fc30040 	lw	v1,64(s8)
  4907c0:	8fc2001c 	lw	v0,28(s8)
  4907c4:	00000000 	nop
  4907c8:	00621021 	addu	v0,v1,v0
  4907cc:	afc20040 	sw	v0,64(s8)
  4907d0:	8fc2001c 	lw	v0,28(s8)
  4907d4:	00000000 	nop
  4907d8:	04410003 	bgez	v0,4907e8 <AES_cbc_encrypt+0x244>
  4907dc:	00000000 	nop
  4907e0:	10000059 	b	490948 <AES_cbc_encrypt+0x3a4>
  4907e4:	00000000 	nop
  4907e8:	8fc40038 	lw	a0,56(s8)
  4907ec:	8fc5003c 	lw	a1,60(s8)
  4907f0:	8fc60040 	lw	a2,64(s8)
  4907f4:	8f998948 	lw	t9,-30392(gp)
  4907f8:	00000000 	nop
  4907fc:	0320f809 	jalr	t9
  490800:	00000000 	nop
  490804:	8fdc0010 	lw	gp,16(s8)
  490808:	8fc2001c 	lw	v0,28(s8)
  49080c:	00000000 	nop
  490810:	14400006 	bnez	v0,49082c <AES_cbc_encrypt+0x288>
  490814:	00000000 	nop
  490818:	8fc20048 	lw	v0,72(s8)
  49081c:	00000000 	nop
  490820:	afc20020 	sw	v0,32(s8)
  490824:	10000005 	b	49083c <AES_cbc_encrypt+0x298>
  490828:	00000000 	nop
  49082c:	8fc2003c 	lw	v0,60(s8)
  490830:	00000000 	nop
  490834:	2442fff0 	addiu	v0,v0,-16
  490838:	afc20020 	sw	v0,32(s8)
  49083c:	8fc20040 	lw	v0,64(s8)
  490840:	00000000 	nop
  490844:	8c430000 	lw	v1,0(v0)
  490848:	8fc20020 	lw	v0,32(s8)
  49084c:	00000000 	nop
  490850:	8c420000 	lw	v0,0(v0)
  490854:	00000000 	nop
  490858:	00621826 	xor	v1,v1,v0
  49085c:	8fc20040 	lw	v0,64(s8)
  490860:	00000000 	nop
  490864:	ac430000 	sw	v1,0(v0)
  490868:	8fc20040 	lw	v0,64(s8)
  49086c:	00000000 	nop
  490870:	24440004 	addiu	a0,v0,4
  490874:	8fc20040 	lw	v0,64(s8)
  490878:	00000000 	nop
  49087c:	24430004 	addiu	v1,v0,4
  490880:	8fc20020 	lw	v0,32(s8)
  490884:	00000000 	nop
  490888:	24420004 	addiu	v0,v0,4
  49088c:	8c630000 	lw	v1,0(v1)
  490890:	8c420000 	lw	v0,0(v0)
  490894:	00000000 	nop
  490898:	00621026 	xor	v0,v1,v0
  49089c:	ac820000 	sw	v0,0(a0)
  4908a0:	8fc20040 	lw	v0,64(s8)
  4908a4:	00000000 	nop
  4908a8:	24440008 	addiu	a0,v0,8
  4908ac:	8fc20040 	lw	v0,64(s8)
  4908b0:	00000000 	nop
  4908b4:	24430008 	addiu	v1,v0,8
  4908b8:	8fc20020 	lw	v0,32(s8)
  4908bc:	00000000 	nop
  4908c0:	24420008 	addiu	v0,v0,8
  4908c4:	8c630000 	lw	v1,0(v1)
  4908c8:	8c420000 	lw	v0,0(v0)
  4908cc:	00000000 	nop
  4908d0:	00621026 	xor	v0,v1,v0
  4908d4:	ac820000 	sw	v0,0(a0)
  4908d8:	8fc20040 	lw	v0,64(s8)
  4908dc:	00000000 	nop
  4908e0:	2444000c 	addiu	a0,v0,12
  4908e4:	8fc20040 	lw	v0,64(s8)
  4908e8:	00000000 	nop
  4908ec:	2443000c 	addiu	v1,v0,12
  4908f0:	8fc20020 	lw	v0,32(s8)
  4908f4:	00000000 	nop
  4908f8:	2442000c 	addiu	v0,v0,12
  4908fc:	8c630000 	lw	v1,0(v1)
  490900:	8c420000 	lw	v0,0(v0)
  490904:	00000000 	nop
  490908:	00621026 	xor	v0,v1,v0
  49090c:	ac820000 	sw	v0,0(a0)
  490910:	8fc2003c 	lw	v0,60(s8)
  490914:	00000000 	nop
  490918:	2442fff0 	addiu	v0,v0,-16
  49091c:	afc2003c 	sw	v0,60(s8)
  490920:	8fc20040 	lw	v0,64(s8)
  490924:	00000000 	nop
  490928:	2442fff0 	addiu	v0,v0,-16
  49092c:	afc20040 	sw	v0,64(s8)
  490930:	8fc2001c 	lw	v0,28(s8)
  490934:	00000000 	nop
  490938:	2442fff0 	addiu	v0,v0,-16
  49093c:	afc2001c 	sw	v0,28(s8)
  490940:	1000ffa3 	b	4907d0 <AES_cbc_encrypt+0x22c>
  490944:	00000000 	nop
  490948:	8fc20018 	lw	v0,24(s8)
  49094c:	03c0e821 	move	sp,s8
  490950:	8fbf0030 	lw	ra,48(sp)
  490954:	8fbe002c 	lw	s8,44(sp)
  490958:	27bd0038 	addiu	sp,sp,56
  49095c:	03e00008 	jr	ra
  490960:	00000000 	nop
	...

00490970 <aes_set_key>:
  490970:	3c1c0fb8 	lui	gp,0xfb8
  490974:	279cc000 	addiu	gp,gp,-16384
  490978:	0399e021 	addu	gp,gp,t9
  49097c:	27bdffd0 	addiu	sp,sp,-48
  490980:	afbc0000 	sw	gp,0(sp)
  490984:	afbe002c 	sw	s8,44(sp)
  490988:	afbc0028 	sw	gp,40(sp)
  49098c:	03a0f021 	move	s8,sp
  490990:	afc40030 	sw	a0,48(s8)
  490994:	afc50034 	sw	a1,52(s8)
  490998:	afc60038 	sw	a2,56(s8)
  49099c:	afc7003c 	sw	a3,60(s8)
#if !defined(FIXED_TABLES)
    if(!tab_gen) { gen_tabs(); tab_gen = 1; }
#endif

    switch(n_bytes) {
  4909a0:	8fc20038 	lw	v0,56(s8)
  4909a4:	00000000 	nop
  4909a8:	afc20018 	sw	v0,24(s8)
  4909ac:	24020020 	li	v0,32
  4909b0:	8fc30018 	lw	v1,24(s8)
  4909b4:	00000000 	nop
  4909b8:	1062002a 	beq	v1,v0,490a64 <aes_set_key+0xf4>
  4909bc:	00000000 	nop
  4909c0:	8fc30018 	lw	v1,24(s8)
  4909c4:	00000000 	nop
  4909c8:	28620021 	slti	v0,v1,33
  4909cc:	1040000d 	beqz	v0,490a04 <aes_set_key+0x94>
  4909d0:	00000000 	nop
  4909d4:	24020010 	li	v0,16
  4909d8:	8fc30018 	lw	v1,24(s8)
  4909dc:	00000000 	nop
  4909e0:	1062002c 	beq	v1,v0,490a94 <aes_set_key+0x124>
  4909e4:	00000000 	nop
  4909e8:	24020018 	li	v0,24
  4909ec:	8fc30018 	lw	v1,24(s8)
  4909f0:	00000000 	nop
  4909f4:	10620021 	beq	v1,v0,490a7c <aes_set_key+0x10c>
  4909f8:	00000000 	nop
  4909fc:	10000025 	b	490a94 <aes_set_key+0x124>
  490a00:	00000000 	nop
  490a04:	240200c0 	li	v0,192
  490a08:	8fc30018 	lw	v1,24(s8)
  490a0c:	00000000 	nop
  490a10:	1062001a 	beq	v1,v0,490a7c <aes_set_key+0x10c>
  490a14:	00000000 	nop
  490a18:	8fc30018 	lw	v1,24(s8)
  490a1c:	00000000 	nop
  490a20:	286200c1 	slti	v0,v1,193
  490a24:	10400008 	beqz	v0,490a48 <aes_set_key+0xd8>
  490a28:	00000000 	nop
  490a2c:	24020080 	li	v0,128
  490a30:	8fc30018 	lw	v1,24(s8)
  490a34:	00000000 	nop
  490a38:	10620016 	beq	v1,v0,490a94 <aes_set_key+0x124>
  490a3c:	00000000 	nop
  490a40:	10000014 	b	490a94 <aes_set_key+0x124>
  490a44:	00000000 	nop
  490a48:	24020100 	li	v0,256
  490a4c:	8fc30018 	lw	v1,24(s8)
  490a50:	00000000 	nop
  490a54:	10620003 	beq	v1,v0,490a64 <aes_set_key+0xf4>
  490a58:	00000000 	nop
  490a5c:	1000000d 	b	490a94 <aes_set_key+0x124>
  490a60:	00000000 	nop
    case 32:                    /* bytes */
    case 256:                   /* bits */
        cx->aes_Nkey = 8;
  490a64:	24030008 	li	v1,8
  490a68:	8fc20030 	lw	v0,48(s8)
  490a6c:	00000000 	nop
  490a70:	ac430000 	sw	v1,0(v0)
        break;
  490a74:	1000000b 	b	490aa4 <aes_set_key+0x134>
  490a78:	00000000 	nop
    case 24:                    /* bytes */
    case 192:                   /* bits */
        cx->aes_Nkey = 6;
  490a7c:	24030006 	li	v1,6
  490a80:	8fc20030 	lw	v0,48(s8)
  490a84:	00000000 	nop
  490a88:	ac430000 	sw	v1,0(v0)
        break;
  490a8c:	10000005 	b	490aa4 <aes_set_key+0x134>
  490a90:	00000000 	nop
    case 16:                    /* bytes */
    case 128:                   /* bits */
    default:
        cx->aes_Nkey = 4;
  490a94:	24030004 	li	v1,4
  490a98:	8fc20030 	lw	v0,48(s8)
  490a9c:	00000000 	nop
  490aa0:	ac430000 	sw	v1,0(v0)
        break;
    }

    cx->aes_Nrnd = (cx->aes_Nkey > nc ? cx->aes_Nkey : nc) + 6; 
  490aa4:	8fc20030 	lw	v0,48(s8)
  490aa8:	00000000 	nop
  490aac:	afc2001c 	sw	v0,28(s8)
  490ab0:	8fc20030 	lw	v0,48(s8)
  490ab4:	00000000 	nop
  490ab8:	8c420000 	lw	v0,0(v0)
  490abc:	00000000 	nop
  490ac0:	afc20020 	sw	v0,32(s8)
  490ac4:	8fc30020 	lw	v1,32(s8)
  490ac8:	00000000 	nop
  490acc:	2c620004 	sltiu	v0,v1,4
  490ad0:	10400003 	beqz	v0,490ae0 <aes_set_key+0x170>
  490ad4:	00000000 	nop
  490ad8:	24020004 	li	v0,4
  490adc:	afc20020 	sw	v0,32(s8)
  490ae0:	8fc30020 	lw	v1,32(s8)
  490ae4:	00000000 	nop
  490ae8:	24620006 	addiu	v0,v1,6
  490aec:	8fc3001c 	lw	v1,28(s8)
  490af0:	00000000 	nop
  490af4:	ac620004 	sw	v0,4(v1)

    cx->aes_e_key[0] = const_word_in(in_key     );
  490af8:	8fc20034 	lw	v0,52(s8)
  490afc:	00000000 	nop
  490b00:	90430000 	lbu	v1,0(v0)
  490b04:	8fc20034 	lw	v0,52(s8)
  490b08:	00000000 	nop
  490b0c:	24420001 	addiu	v0,v0,1
  490b10:	90420000 	lbu	v0,0(v0)
  490b14:	00000000 	nop
  490b18:	00021200 	sll	v0,v0,0x8
  490b1c:	00621825 	or	v1,v1,v0
  490b20:	8fc20034 	lw	v0,52(s8)
  490b24:	00000000 	nop
  490b28:	24420002 	addiu	v0,v0,2
  490b2c:	90420000 	lbu	v0,0(v0)
  490b30:	00000000 	nop
  490b34:	00021400 	sll	v0,v0,0x10
  490b38:	00621825 	or	v1,v1,v0
  490b3c:	8fc20034 	lw	v0,52(s8)
  490b40:	00000000 	nop
  490b44:	24420003 	addiu	v0,v0,3
  490b48:	90420000 	lbu	v0,0(v0)
  490b4c:	00000000 	nop
  490b50:	00021600 	sll	v0,v0,0x18
  490b54:	00621825 	or	v1,v1,v0
  490b58:	8fc20030 	lw	v0,48(s8)
  490b5c:	00000000 	nop
  490b60:	ac430008 	sw	v1,8(v0)
    cx->aes_e_key[1] = const_word_in(in_key +  4);
  490b64:	8fc20034 	lw	v0,52(s8)
  490b68:	00000000 	nop
  490b6c:	24420004 	addiu	v0,v0,4
  490b70:	90430000 	lbu	v1,0(v0)
  490b74:	8fc20034 	lw	v0,52(s8)
  490b78:	00000000 	nop
  490b7c:	24420005 	addiu	v0,v0,5
  490b80:	90420000 	lbu	v0,0(v0)
  490b84:	00000000 	nop
  490b88:	00021200 	sll	v0,v0,0x8
  490b8c:	00621825 	or	v1,v1,v0
  490b90:	8fc20034 	lw	v0,52(s8)
  490b94:	00000000 	nop
  490b98:	24420006 	addiu	v0,v0,6
  490b9c:	90420000 	lbu	v0,0(v0)
  490ba0:	00000000 	nop
  490ba4:	00021400 	sll	v0,v0,0x10
  490ba8:	00621825 	or	v1,v1,v0
  490bac:	8fc20034 	lw	v0,52(s8)
  490bb0:	00000000 	nop
  490bb4:	24420007 	addiu	v0,v0,7
  490bb8:	90420000 	lbu	v0,0(v0)
  490bbc:	00000000 	nop
  490bc0:	00021600 	sll	v0,v0,0x18
  490bc4:	00621825 	or	v1,v1,v0
  490bc8:	8fc20030 	lw	v0,48(s8)
  490bcc:	00000000 	nop
  490bd0:	ac43000c 	sw	v1,12(v0)
    cx->aes_e_key[2] = const_word_in(in_key +  8);
  490bd4:	8fc20034 	lw	v0,52(s8)
  490bd8:	00000000 	nop
  490bdc:	24420008 	addiu	v0,v0,8
  490be0:	90430000 	lbu	v1,0(v0)
  490be4:	8fc20034 	lw	v0,52(s8)
  490be8:	00000000 	nop
  490bec:	24420009 	addiu	v0,v0,9
  490bf0:	90420000 	lbu	v0,0(v0)
  490bf4:	00000000 	nop
  490bf8:	00021200 	sll	v0,v0,0x8
  490bfc:	00621825 	or	v1,v1,v0
  490c00:	8fc20034 	lw	v0,52(s8)
  490c04:	00000000 	nop
  490c08:	2442000a 	addiu	v0,v0,10
  490c0c:	90420000 	lbu	v0,0(v0)
  490c10:	00000000 	nop
  490c14:	00021400 	sll	v0,v0,0x10
  490c18:	00621825 	or	v1,v1,v0
  490c1c:	8fc20034 	lw	v0,52(s8)
  490c20:	00000000 	nop
  490c24:	2442000b 	addiu	v0,v0,11
  490c28:	90420000 	lbu	v0,0(v0)
  490c2c:	00000000 	nop
  490c30:	00021600 	sll	v0,v0,0x18
  490c34:	00621825 	or	v1,v1,v0
  490c38:	8fc20030 	lw	v0,48(s8)
  490c3c:	00000000 	nop
  490c40:	ac430010 	sw	v1,16(v0)
    cx->aes_e_key[3] = const_word_in(in_key + 12);
  490c44:	8fc20034 	lw	v0,52(s8)
  490c48:	00000000 	nop
  490c4c:	2442000c 	addiu	v0,v0,12
  490c50:	90430000 	lbu	v1,0(v0)
  490c54:	8fc20034 	lw	v0,52(s8)
  490c58:	00000000 	nop
  490c5c:	2442000d 	addiu	v0,v0,13
  490c60:	90420000 	lbu	v0,0(v0)
  490c64:	00000000 	nop
  490c68:	00021200 	sll	v0,v0,0x8
  490c6c:	00621825 	or	v1,v1,v0
  490c70:	8fc20034 	lw	v0,52(s8)
  490c74:	00000000 	nop
  490c78:	2442000e 	addiu	v0,v0,14
  490c7c:	90420000 	lbu	v0,0(v0)
  490c80:	00000000 	nop
  490c84:	00021400 	sll	v0,v0,0x10
  490c88:	00621825 	or	v1,v1,v0
  490c8c:	8fc20034 	lw	v0,52(s8)
  490c90:	00000000 	nop
  490c94:	2442000f 	addiu	v0,v0,15
  490c98:	90420000 	lbu	v0,0(v0)
  490c9c:	00000000 	nop
  490ca0:	00021600 	sll	v0,v0,0x18
  490ca4:	00621825 	or	v1,v1,v0
  490ca8:	8fc20030 	lw	v0,48(s8)
  490cac:	00000000 	nop
  490cb0:	ac430014 	sw	v1,20(v0)

    kf = cx->aes_e_key; 
  490cb4:	8fc20030 	lw	v0,48(s8)
  490cb8:	00000000 	nop
  490cbc:	24420008 	addiu	v0,v0,8
  490cc0:	afc20008 	sw	v0,8(s8)
    kt = kf + nc * (cx->aes_Nrnd + 1) - cx->aes_Nkey; 
  490cc4:	8fc20030 	lw	v0,48(s8)
  490cc8:	00000000 	nop
  490ccc:	8c420004 	lw	v0,4(v0)
  490cd0:	00000000 	nop
  490cd4:	00021900 	sll	v1,v0,0x4
  490cd8:	8fc20008 	lw	v0,8(s8)
  490cdc:	00000000 	nop
  490ce0:	00621821 	addu	v1,v1,v0
  490ce4:	8fc20030 	lw	v0,48(s8)
  490ce8:	00000000 	nop
  490cec:	8c420000 	lw	v0,0(v0)
  490cf0:	00000000 	nop
  490cf4:	00021080 	sll	v0,v0,0x2
  490cf8:	00621023 	subu	v0,v1,v0
  490cfc:	24420010 	addiu	v0,v0,16
  490d00:	afc2000c 	sw	v0,12(s8)
    rci = 0;
  490d04:	afc00010 	sw	zero,16(s8)

    switch(cx->aes_Nkey)
  490d08:	8fc20030 	lw	v0,48(s8)
  490d0c:	00000000 	nop
  490d10:	8c420000 	lw	v0,0(v0)
  490d14:	00000000 	nop
  490d18:	afc20024 	sw	v0,36(s8)
  490d1c:	24020006 	li	v0,6
  490d20:	8fc30024 	lw	v1,36(s8)
  490d24:	00000000 	nop
  490d28:	1062009d 	beq	v1,v0,490fa0 <aes_set_key+0x630>
  490d2c:	00000000 	nop
  490d30:	8fc30024 	lw	v1,36(s8)
  490d34:	00000000 	nop
  490d38:	2c620007 	sltiu	v0,v1,7
  490d3c:	10400008 	beqz	v0,490d60 <aes_set_key+0x3f0>
  490d40:	00000000 	nop
  490d44:	24020004 	li	v0,4
  490d48:	8fc30024 	lw	v1,36(s8)
  490d4c:	00000000 	nop
  490d50:	1062000a 	beq	v1,v0,490d7c <aes_set_key+0x40c>
  490d54:	00000000 	nop
  490d58:	100002d2 	b	4918a4 <aes_set_key+0xf34>
  490d5c:	00000000 	nop
  490d60:	24020008 	li	v0,8
  490d64:	8fc30024 	lw	v1,36(s8)
  490d68:	00000000 	nop
  490d6c:	10620168 	beq	v1,v0,491310 <aes_set_key+0x9a0>
  490d70:	00000000 	nop
  490d74:	100002cb 	b	4918a4 <aes_set_key+0xf34>
  490d78:	00000000 	nop
  490d7c:	00000000 	nop
    {
    case 4: do
            {   kf[4] = kf[0] ^ ls_box(kf[3],3) ^ rcon_tab[rci++];
  490d80:	8fc20008 	lw	v0,8(s8)
  490d84:	00000000 	nop
  490d88:	24460010 	addiu	a2,v0,16
  490d8c:	8fc20008 	lw	v0,8(s8)
  490d90:	00000000 	nop
  490d94:	2442000c 	addiu	v0,v0,12
  490d98:	8c420000 	lw	v0,0(v0)
  490d9c:	00000000 	nop
  490da0:	00021202 	srl	v0,v0,0x8
  490da4:	304200ff 	andi	v0,v0,0xff
  490da8:	00021080 	sll	v0,v0,0x2
  490dac:	8f83804c 	lw	v1,-32692(gp)
  490db0:	00000000 	nop
  490db4:	2463f394 	addiu	v1,v1,-3180
  490db8:	00621821 	addu	v1,v1,v0
  490dbc:	8fc20008 	lw	v0,8(s8)
  490dc0:	00000000 	nop
  490dc4:	2442000c 	addiu	v0,v0,12
  490dc8:	8c420000 	lw	v0,0(v0)
  490dcc:	00000000 	nop
  490dd0:	00021402 	srl	v0,v0,0x10
  490dd4:	304200ff 	andi	v0,v0,0xff
  490dd8:	00021080 	sll	v0,v0,0x2
  490ddc:	24420400 	addiu	v0,v0,1024
  490de0:	8f81804c 	lw	at,-32692(gp)
  490de4:	00000000 	nop
  490de8:	2421f394 	addiu	at,at,-3180
  490dec:	00221021 	addu	v0,at,v0
  490df0:	8c630000 	lw	v1,0(v1)
  490df4:	8c420000 	lw	v0,0(v0)
  490df8:	00000000 	nop
  490dfc:	00621826 	xor	v1,v1,v0
  490e00:	8fc20008 	lw	v0,8(s8)
  490e04:	00000000 	nop
  490e08:	2442000c 	addiu	v0,v0,12
  490e0c:	8c420000 	lw	v0,0(v0)
  490e10:	00000000 	nop
  490e14:	00021602 	srl	v0,v0,0x18
  490e18:	304200ff 	andi	v0,v0,0xff
  490e1c:	00021080 	sll	v0,v0,0x2
  490e20:	24420800 	addiu	v0,v0,2048
  490e24:	8f81804c 	lw	at,-32692(gp)
  490e28:	00000000 	nop
  490e2c:	2421f394 	addiu	at,at,-3180
  490e30:	00221021 	addu	v0,at,v0
  490e34:	8c420000 	lw	v0,0(v0)
  490e38:	00000000 	nop
  490e3c:	00621826 	xor	v1,v1,v0
  490e40:	8fc20008 	lw	v0,8(s8)
  490e44:	00000000 	nop
  490e48:	2442000c 	addiu	v0,v0,12
  490e4c:	90420003 	lbu	v0,3(v0)
  490e50:	00000000 	nop
  490e54:	00021080 	sll	v0,v0,0x2
  490e58:	24420c00 	addiu	v0,v0,3072
  490e5c:	8f81804c 	lw	at,-32692(gp)
  490e60:	00000000 	nop
  490e64:	2421f394 	addiu	at,at,-3180
  490e68:	00221021 	addu	v0,at,v0
  490e6c:	8c420000 	lw	v0,0(v0)
  490e70:	00000000 	nop
  490e74:	00621826 	xor	v1,v1,v0
  490e78:	8fc20008 	lw	v0,8(s8)
  490e7c:	00000000 	nop
  490e80:	8c420000 	lw	v0,0(v0)
  490e84:	00000000 	nop
  490e88:	00622826 	xor	a1,v1,v0
  490e8c:	27c40010 	addiu	a0,s8,16
  490e90:	8c830000 	lw	v1,0(a0)
  490e94:	00000000 	nop
  490e98:	00601021 	move	v0,v1
  490e9c:	00021080 	sll	v0,v0,0x2
  490ea0:	8f81804c 	lw	at,-32692(gp)
  490ea4:	00000000 	nop
  490ea8:	2421d320 	addiu	at,at,-11488
  490eac:	00221021 	addu	v0,at,v0
  490eb0:	8c420000 	lw	v0,0(v0)
  490eb4:	00000000 	nop
  490eb8:	00a21026 	xor	v0,a1,v0
  490ebc:	acc20000 	sw	v0,0(a2)
  490ec0:	24630001 	addiu	v1,v1,1
  490ec4:	ac830000 	sw	v1,0(a0)
                kf[5] = kf[1] ^ kf[4];
  490ec8:	8fc20008 	lw	v0,8(s8)
  490ecc:	00000000 	nop
  490ed0:	24440014 	addiu	a0,v0,20
  490ed4:	8fc20008 	lw	v0,8(s8)
  490ed8:	00000000 	nop
  490edc:	24430004 	addiu	v1,v0,4
  490ee0:	8fc20008 	lw	v0,8(s8)
  490ee4:	00000000 	nop
  490ee8:	24420010 	addiu	v0,v0,16
  490eec:	8c630000 	lw	v1,0(v1)
  490ef0:	8c420000 	lw	v0,0(v0)
  490ef4:	00000000 	nop
  490ef8:	00621026 	xor	v0,v1,v0
  490efc:	ac820000 	sw	v0,0(a0)
                kf[6] = kf[2] ^ kf[5];
  490f00:	8fc20008 	lw	v0,8(s8)
  490f04:	00000000 	nop
  490f08:	24440018 	addiu	a0,v0,24
  490f0c:	8fc20008 	lw	v0,8(s8)
  490f10:	00000000 	nop
  490f14:	24430008 	addiu	v1,v0,8
  490f18:	8fc20008 	lw	v0,8(s8)
  490f1c:	00000000 	nop
  490f20:	24420014 	addiu	v0,v0,20
  490f24:	8c630000 	lw	v1,0(v1)
  490f28:	8c420000 	lw	v0,0(v0)
  490f2c:	00000000 	nop
  490f30:	00621026 	xor	v0,v1,v0
  490f34:	ac820000 	sw	v0,0(a0)
                kf[7] = kf[3] ^ kf[6];
  490f38:	8fc20008 	lw	v0,8(s8)
  490f3c:	00000000 	nop
  490f40:	2444001c 	addiu	a0,v0,28
  490f44:	8fc20008 	lw	v0,8(s8)
  490f48:	00000000 	nop
  490f4c:	2443000c 	addiu	v1,v0,12
  490f50:	8fc20008 	lw	v0,8(s8)
  490f54:	00000000 	nop
  490f58:	24420018 	addiu	v0,v0,24
  490f5c:	8c630000 	lw	v1,0(v1)
  490f60:	8c420000 	lw	v0,0(v0)
  490f64:	00000000 	nop
  490f68:	00621026 	xor	v0,v1,v0
  490f6c:	ac820000 	sw	v0,0(a0)
                kf += 4;
  490f70:	8fc20008 	lw	v0,8(s8)
  490f74:	00000000 	nop
  490f78:	24420010 	addiu	v0,v0,16
  490f7c:	afc20008 	sw	v0,8(s8)
            }
  490f80:	8fc30008 	lw	v1,8(s8)
  490f84:	8fc2000c 	lw	v0,12(s8)
  490f88:	00000000 	nop
  490f8c:	0062102b 	sltu	v0,v1,v0
  490f90:	1440ff7b 	bnez	v0,490d80 <aes_set_key+0x410>
  490f94:	00000000 	nop
  490f98:	10000242 	b	4918a4 <aes_set_key+0xf34>
  490f9c:	00000000 	nop
            while(kf < kt);
            break;

    case 6: cx->aes_e_key[4] = const_word_in(in_key + 16);
  490fa0:	8fc20034 	lw	v0,52(s8)
  490fa4:	00000000 	nop
  490fa8:	24420010 	addiu	v0,v0,16
  490fac:	90430000 	lbu	v1,0(v0)
  490fb0:	8fc20034 	lw	v0,52(s8)
  490fb4:	00000000 	nop
  490fb8:	24420011 	addiu	v0,v0,17
  490fbc:	90420000 	lbu	v0,0(v0)
  490fc0:	00000000 	nop
  490fc4:	00021200 	sll	v0,v0,0x8
  490fc8:	00621825 	or	v1,v1,v0
  490fcc:	8fc20034 	lw	v0,52(s8)
  490fd0:	00000000 	nop
  490fd4:	24420012 	addiu	v0,v0,18
  490fd8:	90420000 	lbu	v0,0(v0)
  490fdc:	00000000 	nop
  490fe0:	00021400 	sll	v0,v0,0x10
  490fe4:	00621825 	or	v1,v1,v0
  490fe8:	8fc20034 	lw	v0,52(s8)
  490fec:	00000000 	nop
  490ff0:	24420013 	addiu	v0,v0,19
  490ff4:	90420000 	lbu	v0,0(v0)
  490ff8:	00000000 	nop
  490ffc:	00021600 	sll	v0,v0,0x18
  491000:	00621825 	or	v1,v1,v0
  491004:	8fc20030 	lw	v0,48(s8)
  491008:	00000000 	nop
  49100c:	ac430018 	sw	v1,24(v0)
            cx->aes_e_key[5] = const_word_in(in_key + 20);
  491010:	8fc20034 	lw	v0,52(s8)
  491014:	00000000 	nop
  491018:	24420014 	addiu	v0,v0,20
  49101c:	90430000 	lbu	v1,0(v0)
  491020:	8fc20034 	lw	v0,52(s8)
  491024:	00000000 	nop
  491028:	24420015 	addiu	v0,v0,21
  49102c:	90420000 	lbu	v0,0(v0)
  491030:	00000000 	nop
  491034:	00021200 	sll	v0,v0,0x8
  491038:	00621825 	or	v1,v1,v0
  49103c:	8fc20034 	lw	v0,52(s8)
  491040:	00000000 	nop
  491044:	24420016 	addiu	v0,v0,22
  491048:	90420000 	lbu	v0,0(v0)
  49104c:	00000000 	nop
  491050:	00021400 	sll	v0,v0,0x10
  491054:	00621825 	or	v1,v1,v0
  491058:	8fc20034 	lw	v0,52(s8)
  49105c:	00000000 	nop
  491060:	24420017 	addiu	v0,v0,23
  491064:	90420000 	lbu	v0,0(v0)
  491068:	00000000 	nop
  49106c:	00021600 	sll	v0,v0,0x18
  491070:	00621825 	or	v1,v1,v0
  491074:	8fc20030 	lw	v0,48(s8)
  491078:	00000000 	nop
  49107c:	ac43001c 	sw	v1,28(v0)
            do
            {   kf[ 6] = kf[0] ^ ls_box(kf[5],3) ^ rcon_tab[rci++];
  491080:	8fc20008 	lw	v0,8(s8)
  491084:	00000000 	nop
  491088:	24460018 	addiu	a2,v0,24
  49108c:	8fc20008 	lw	v0,8(s8)
  491090:	00000000 	nop
  491094:	24420014 	addiu	v0,v0,20
  491098:	8c420000 	lw	v0,0(v0)
  49109c:	00000000 	nop
  4910a0:	00021202 	srl	v0,v0,0x8
  4910a4:	304200ff 	andi	v0,v0,0xff
  4910a8:	00021080 	sll	v0,v0,0x2
  4910ac:	8f83804c 	lw	v1,-32692(gp)
  4910b0:	00000000 	nop
  4910b4:	2463f394 	addiu	v1,v1,-3180
  4910b8:	00621821 	addu	v1,v1,v0
  4910bc:	8fc20008 	lw	v0,8(s8)
  4910c0:	00000000 	nop
  4910c4:	24420014 	addiu	v0,v0,20
  4910c8:	8c420000 	lw	v0,0(v0)
  4910cc:	00000000 	nop
  4910d0:	00021402 	srl	v0,v0,0x10
  4910d4:	304200ff 	andi	v0,v0,0xff
  4910d8:	00021080 	sll	v0,v0,0x2
  4910dc:	24420400 	addiu	v0,v0,1024
  4910e0:	8f81804c 	lw	at,-32692(gp)
  4910e4:	00000000 	nop
  4910e8:	2421f394 	addiu	at,at,-3180
  4910ec:	00221021 	addu	v0,at,v0
  4910f0:	8c630000 	lw	v1,0(v1)
  4910f4:	8c420000 	lw	v0,0(v0)
  4910f8:	00000000 	nop
  4910fc:	00621826 	xor	v1,v1,v0
  491100:	8fc20008 	lw	v0,8(s8)
  491104:	00000000 	nop
  491108:	24420014 	addiu	v0,v0,20
  49110c:	8c420000 	lw	v0,0(v0)
  491110:	00000000 	nop
  491114:	00021602 	srl	v0,v0,0x18
  491118:	304200ff 	andi	v0,v0,0xff
  49111c:	00021080 	sll	v0,v0,0x2
  491120:	24420800 	addiu	v0,v0,2048
  491124:	8f81804c 	lw	at,-32692(gp)
  491128:	00000000 	nop
  49112c:	2421f394 	addiu	at,at,-3180
  491130:	00221021 	addu	v0,at,v0
  491134:	8c420000 	lw	v0,0(v0)
  491138:	00000000 	nop
  49113c:	00621826 	xor	v1,v1,v0
  491140:	8fc20008 	lw	v0,8(s8)
  491144:	00000000 	nop
  491148:	24420014 	addiu	v0,v0,20
  49114c:	90420003 	lbu	v0,3(v0)
  491150:	00000000 	nop
  491154:	00021080 	sll	v0,v0,0x2
  491158:	24420c00 	addiu	v0,v0,3072
  49115c:	8f81804c 	lw	at,-32692(gp)
  491160:	00000000 	nop
  491164:	2421f394 	addiu	at,at,-3180
  491168:	00221021 	addu	v0,at,v0
  49116c:	8c420000 	lw	v0,0(v0)
  491170:	00000000 	nop
  491174:	00621826 	xor	v1,v1,v0
  491178:	8fc20008 	lw	v0,8(s8)
  49117c:	00000000 	nop
  491180:	8c420000 	lw	v0,0(v0)
  491184:	00000000 	nop
  491188:	00622826 	xor	a1,v1,v0
  49118c:	27c40010 	addiu	a0,s8,16
  491190:	8c830000 	lw	v1,0(a0)
  491194:	00000000 	nop
  491198:	00601021 	move	v0,v1
  49119c:	00021080 	sll	v0,v0,0x2
  4911a0:	8f81804c 	lw	at,-32692(gp)
  4911a4:	00000000 	nop
  4911a8:	2421d320 	addiu	at,at,-11488
  4911ac:	00221021 	addu	v0,at,v0
  4911b0:	8c420000 	lw	v0,0(v0)
  4911b4:	00000000 	nop
  4911b8:	00a21026 	xor	v0,a1,v0
  4911bc:	acc20000 	sw	v0,0(a2)
  4911c0:	24630001 	addiu	v1,v1,1
  4911c4:	ac830000 	sw	v1,0(a0)
                kf[ 7] = kf[1] ^ kf[ 6];
  4911c8:	8fc20008 	lw	v0,8(s8)
  4911cc:	00000000 	nop
  4911d0:	2444001c 	addiu	a0,v0,28
  4911d4:	8fc20008 	lw	v0,8(s8)
  4911d8:	00000000 	nop
  4911dc:	24430004 	addiu	v1,v0,4
  4911e0:	8fc20008 	lw	v0,8(s8)
  4911e4:	00000000 	nop
  4911e8:	24420018 	addiu	v0,v0,24
  4911ec:	8c630000 	lw	v1,0(v1)
  4911f0:	8c420000 	lw	v0,0(v0)
  4911f4:	00000000 	nop
  4911f8:	00621026 	xor	v0,v1,v0
  4911fc:	ac820000 	sw	v0,0(a0)
                kf[ 8] = kf[2] ^ kf[ 7];
  491200:	8fc20008 	lw	v0,8(s8)
  491204:	00000000 	nop
  491208:	24440020 	addiu	a0,v0,32
  49120c:	8fc20008 	lw	v0,8(s8)
  491210:	00000000 	nop
  491214:	24430008 	addiu	v1,v0,8
  491218:	8fc20008 	lw	v0,8(s8)
  49121c:	00000000 	nop
  491220:	2442001c 	addiu	v0,v0,28
  491224:	8c630000 	lw	v1,0(v1)
  491228:	8c420000 	lw	v0,0(v0)
  49122c:	00000000 	nop
  491230:	00621026 	xor	v0,v1,v0
  491234:	ac820000 	sw	v0,0(a0)
                kf[ 9] = kf[3] ^ kf[ 8];
  491238:	8fc20008 	lw	v0,8(s8)
  49123c:	00000000 	nop
  491240:	24440024 	addiu	a0,v0,36
  491244:	8fc20008 	lw	v0,8(s8)
  491248:	00000000 	nop
  49124c:	2443000c 	addiu	v1,v0,12
  491250:	8fc20008 	lw	v0,8(s8)
  491254:	00000000 	nop
  491258:	24420020 	addiu	v0,v0,32
  49125c:	8c630000 	lw	v1,0(v1)
  491260:	8c420000 	lw	v0,0(v0)
  491264:	00000000 	nop
  491268:	00621026 	xor	v0,v1,v0
  49126c:	ac820000 	sw	v0,0(a0)
                kf[10] = kf[4] ^ kf[ 9];
  491270:	8fc20008 	lw	v0,8(s8)
  491274:	00000000 	nop
  491278:	24440028 	addiu	a0,v0,40
  49127c:	8fc20008 	lw	v0,8(s8)
  491280:	00000000 	nop
  491284:	24430010 	addiu	v1,v0,16
  491288:	8fc20008 	lw	v0,8(s8)
  49128c:	00000000 	nop
  491290:	24420024 	addiu	v0,v0,36
  491294:	8c630000 	lw	v1,0(v1)
  491298:	8c420000 	lw	v0,0(v0)
  49129c:	00000000 	nop
  4912a0:	00621026 	xor	v0,v1,v0
  4912a4:	ac820000 	sw	v0,0(a0)
                kf[11] = kf[5] ^ kf[10];
  4912a8:	8fc20008 	lw	v0,8(s8)
  4912ac:	00000000 	nop
  4912b0:	2444002c 	addiu	a0,v0,44
  4912b4:	8fc20008 	lw	v0,8(s8)
  4912b8:	00000000 	nop
  4912bc:	24430014 	addiu	v1,v0,20
  4912c0:	8fc20008 	lw	v0,8(s8)
  4912c4:	00000000 	nop
  4912c8:	24420028 	addiu	v0,v0,40
  4912cc:	8c630000 	lw	v1,0(v1)
  4912d0:	8c420000 	lw	v0,0(v0)
  4912d4:	00000000 	nop
  4912d8:	00621026 	xor	v0,v1,v0
  4912dc:	ac820000 	sw	v0,0(a0)
                kf += 6;
  4912e0:	8fc20008 	lw	v0,8(s8)
  4912e4:	00000000 	nop
  4912e8:	24420018 	addiu	v0,v0,24
  4912ec:	afc20008 	sw	v0,8(s8)
            }
  4912f0:	8fc30008 	lw	v1,8(s8)
  4912f4:	8fc2000c 	lw	v0,12(s8)
  4912f8:	00000000 	nop
  4912fc:	0062102b 	sltu	v0,v1,v0
  491300:	1440ff5f 	bnez	v0,491080 <aes_set_key+0x710>
  491304:	00000000 	nop
  491308:	10000166 	b	4918a4 <aes_set_key+0xf34>
  49130c:	00000000 	nop
            while(kf < kt);
            break;

    case 8: cx->aes_e_key[4] = const_word_in(in_key + 16);
  491310:	8fc20034 	lw	v0,52(s8)
  491314:	00000000 	nop
  491318:	24420010 	addiu	v0,v0,16
  49131c:	90430000 	lbu	v1,0(v0)
  491320:	8fc20034 	lw	v0,52(s8)
  491324:	00000000 	nop
  491328:	24420011 	addiu	v0,v0,17
  49132c:	90420000 	lbu	v0,0(v0)
  491330:	00000000 	nop
  491334:	00021200 	sll	v0,v0,0x8
  491338:	00621825 	or	v1,v1,v0
  49133c:	8fc20034 	lw	v0,52(s8)
  491340:	00000000 	nop
  491344:	24420012 	addiu	v0,v0,18
  491348:	90420000 	lbu	v0,0(v0)
  49134c:	00000000 	nop
  491350:	00021400 	sll	v0,v0,0x10
  491354:	00621825 	or	v1,v1,v0
  491358:	8fc20034 	lw	v0,52(s8)
  49135c:	00000000 	nop
  491360:	24420013 	addiu	v0,v0,19
  491364:	90420000 	lbu	v0,0(v0)
  491368:	00000000 	nop
  49136c:	00021600 	sll	v0,v0,0x18
  491370:	00621825 	or	v1,v1,v0
  491374:	8fc20030 	lw	v0,48(s8)
  491378:	00000000 	nop
  49137c:	ac430018 	sw	v1,24(v0)
            cx->aes_e_key[5] = const_word_in(in_key + 20);
  491380:	8fc20034 	lw	v0,52(s8)
  491384:	00000000 	nop
  491388:	24420014 	addiu	v0,v0,20
  49138c:	90430000 	lbu	v1,0(v0)
  491390:	8fc20034 	lw	v0,52(s8)
  491394:	00000000 	nop
  491398:	24420015 	addiu	v0,v0,21
  49139c:	90420000 	lbu	v0,0(v0)
  4913a0:	00000000 	nop
  4913a4:	00021200 	sll	v0,v0,0x8
  4913a8:	00621825 	or	v1,v1,v0
  4913ac:	8fc20034 	lw	v0,52(s8)
  4913b0:	00000000 	nop
  4913b4:	24420016 	addiu	v0,v0,22
  4913b8:	90420000 	lbu	v0,0(v0)
  4913bc:	00000000 	nop
  4913c0:	00021400 	sll	v0,v0,0x10
  4913c4:	00621825 	or	v1,v1,v0
  4913c8:	8fc20034 	lw	v0,52(s8)
  4913cc:	00000000 	nop
  4913d0:	24420017 	addiu	v0,v0,23
  4913d4:	90420000 	lbu	v0,0(v0)
  4913d8:	00000000 	nop
  4913dc:	00021600 	sll	v0,v0,0x18
  4913e0:	00621825 	or	v1,v1,v0
  4913e4:	8fc20030 	lw	v0,48(s8)
  4913e8:	00000000 	nop
  4913ec:	ac43001c 	sw	v1,28(v0)
            cx->aes_e_key[6] = const_word_in(in_key + 24);
  4913f0:	8fc20034 	lw	v0,52(s8)
  4913f4:	00000000 	nop
  4913f8:	24420018 	addiu	v0,v0,24
  4913fc:	90430000 	lbu	v1,0(v0)
  491400:	8fc20034 	lw	v0,52(s8)
  491404:	00000000 	nop
  491408:	24420019 	addiu	v0,v0,25
  49140c:	90420000 	lbu	v0,0(v0)
  491410:	00000000 	nop
  491414:	00021200 	sll	v0,v0,0x8
  491418:	00621825 	or	v1,v1,v0
  49141c:	8fc20034 	lw	v0,52(s8)
  491420:	00000000 	nop
  491424:	2442001a 	addiu	v0,v0,26
  491428:	90420000 	lbu	v0,0(v0)
  49142c:	00000000 	nop
  491430:	00021400 	sll	v0,v0,0x10
  491434:	00621825 	or	v1,v1,v0
  491438:	8fc20034 	lw	v0,52(s8)
  49143c:	00000000 	nop
  491440:	2442001b 	addiu	v0,v0,27
  491444:	90420000 	lbu	v0,0(v0)
  491448:	00000000 	nop
  49144c:	00021600 	sll	v0,v0,0x18
  491450:	00621825 	or	v1,v1,v0
  491454:	8fc20030 	lw	v0,48(s8)
  491458:	00000000 	nop
  49145c:	ac430020 	sw	v1,32(v0)
            cx->aes_e_key[7] = const_word_in(in_key + 28);
  491460:	8fc20034 	lw	v0,52(s8)
  491464:	00000000 	nop
  491468:	2442001c 	addiu	v0,v0,28
  49146c:	90430000 	lbu	v1,0(v0)
  491470:	8fc20034 	lw	v0,52(s8)
  491474:	00000000 	nop
  491478:	2442001d 	addiu	v0,v0,29
  49147c:	90420000 	lbu	v0,0(v0)
  491480:	00000000 	nop
  491484:	00021200 	sll	v0,v0,0x8
  491488:	00621825 	or	v1,v1,v0
  49148c:	8fc20034 	lw	v0,52(s8)
  491490:	00000000 	nop
  491494:	2442001e 	addiu	v0,v0,30
  491498:	90420000 	lbu	v0,0(v0)
  49149c:	00000000 	nop
  4914a0:	00021400 	sll	v0,v0,0x10
  4914a4:	00621825 	or	v1,v1,v0
  4914a8:	8fc20034 	lw	v0,52(s8)
  4914ac:	00000000 	nop
  4914b0:	2442001f 	addiu	v0,v0,31
  4914b4:	90420000 	lbu	v0,0(v0)
  4914b8:	00000000 	nop
  4914bc:	00021600 	sll	v0,v0,0x18
  4914c0:	00621825 	or	v1,v1,v0
  4914c4:	8fc20030 	lw	v0,48(s8)
  4914c8:	00000000 	nop
  4914cc:	ac430024 	sw	v1,36(v0)
            do
            {   kf[ 8] = kf[0] ^ ls_box(kf[7],3) ^ rcon_tab[rci++];
  4914d0:	8fc20008 	lw	v0,8(s8)
  4914d4:	00000000 	nop
  4914d8:	24460020 	addiu	a2,v0,32
  4914dc:	8fc20008 	lw	v0,8(s8)
  4914e0:	00000000 	nop
  4914e4:	2442001c 	addiu	v0,v0,28
  4914e8:	8c420000 	lw	v0,0(v0)
  4914ec:	00000000 	nop
  4914f0:	00021202 	srl	v0,v0,0x8
  4914f4:	304200ff 	andi	v0,v0,0xff
  4914f8:	00021080 	sll	v0,v0,0x2
  4914fc:	8f83804c 	lw	v1,-32692(gp)
  491500:	00000000 	nop
  491504:	2463f394 	addiu	v1,v1,-3180
  491508:	00621821 	addu	v1,v1,v0
  49150c:	8fc20008 	lw	v0,8(s8)
  491510:	00000000 	nop
  491514:	2442001c 	addiu	v0,v0,28
  491518:	8c420000 	lw	v0,0(v0)
  49151c:	00000000 	nop
  491520:	00021402 	srl	v0,v0,0x10
  491524:	304200ff 	andi	v0,v0,0xff
  491528:	00021080 	sll	v0,v0,0x2
  49152c:	24420400 	addiu	v0,v0,1024
  491530:	8f81804c 	lw	at,-32692(gp)
  491534:	00000000 	nop
  491538:	2421f394 	addiu	at,at,-3180
  49153c:	00221021 	addu	v0,at,v0
  491540:	8c630000 	lw	v1,0(v1)
  491544:	8c420000 	lw	v0,0(v0)
  491548:	00000000 	nop
  49154c:	00621826 	xor	v1,v1,v0
  491550:	8fc20008 	lw	v0,8(s8)
  491554:	00000000 	nop
  491558:	2442001c 	addiu	v0,v0,28
  49155c:	8c420000 	lw	v0,0(v0)
  491560:	00000000 	nop
  491564:	00021602 	srl	v0,v0,0x18
  491568:	304200ff 	andi	v0,v0,0xff
  49156c:	00021080 	sll	v0,v0,0x2
  491570:	24420800 	addiu	v0,v0,2048
  491574:	8f81804c 	lw	at,-32692(gp)
  491578:	00000000 	nop
  49157c:	2421f394 	addiu	at,at,-3180
  491580:	00221021 	addu	v0,at,v0
  491584:	8c420000 	lw	v0,0(v0)
  491588:	00000000 	nop
  49158c:	00621826 	xor	v1,v1,v0
  491590:	8fc20008 	lw	v0,8(s8)
  491594:	00000000 	nop
  491598:	2442001c 	addiu	v0,v0,28
  49159c:	90420003 	lbu	v0,3(v0)
  4915a0:	00000000 	nop
  4915a4:	00021080 	sll	v0,v0,0x2
  4915a8:	24420c00 	addiu	v0,v0,3072
  4915ac:	8f81804c 	lw	at,-32692(gp)
  4915b0:	00000000 	nop
  4915b4:	2421f394 	addiu	at,at,-3180
  4915b8:	00221021 	addu	v0,at,v0
  4915bc:	8c420000 	lw	v0,0(v0)
  4915c0:	00000000 	nop
  4915c4:	00621826 	xor	v1,v1,v0
  4915c8:	8fc20008 	lw	v0,8(s8)
  4915cc:	00000000 	nop
  4915d0:	8c420000 	lw	v0,0(v0)
  4915d4:	00000000 	nop
  4915d8:	00622826 	xor	a1,v1,v0
  4915dc:	27c40010 	addiu	a0,s8,16
  4915e0:	8c830000 	lw	v1,0(a0)
  4915e4:	00000000 	nop
  4915e8:	00601021 	move	v0,v1
  4915ec:	00021080 	sll	v0,v0,0x2
  4915f0:	8f81804c 	lw	at,-32692(gp)
  4915f4:	00000000 	nop
  4915f8:	2421d320 	addiu	at,at,-11488
  4915fc:	00221021 	addu	v0,at,v0
  491600:	8c420000 	lw	v0,0(v0)
  491604:	00000000 	nop
  491608:	00a21026 	xor	v0,a1,v0
  49160c:	acc20000 	sw	v0,0(a2)
  491610:	24630001 	addiu	v1,v1,1
  491614:	ac830000 	sw	v1,0(a0)
                kf[ 9] = kf[1] ^ kf[ 8];
  491618:	8fc20008 	lw	v0,8(s8)
  49161c:	00000000 	nop
  491620:	24440024 	addiu	a0,v0,36
  491624:	8fc20008 	lw	v0,8(s8)
  491628:	00000000 	nop
  49162c:	24430004 	addiu	v1,v0,4
  491630:	8fc20008 	lw	v0,8(s8)
  491634:	00000000 	nop
  491638:	24420020 	addiu	v0,v0,32
  49163c:	8c630000 	lw	v1,0(v1)
  491640:	8c420000 	lw	v0,0(v0)
  491644:	00000000 	nop
  491648:	00621026 	xor	v0,v1,v0
  49164c:	ac820000 	sw	v0,0(a0)
                kf[10] = kf[2] ^ kf[ 9];
  491650:	8fc20008 	lw	v0,8(s8)
  491654:	00000000 	nop
  491658:	24440028 	addiu	a0,v0,40
  49165c:	8fc20008 	lw	v0,8(s8)
  491660:	00000000 	nop
  491664:	24430008 	addiu	v1,v0,8
  491668:	8fc20008 	lw	v0,8(s8)
  49166c:	00000000 	nop
  491670:	24420024 	addiu	v0,v0,36
  491674:	8c630000 	lw	v1,0(v1)
  491678:	8c420000 	lw	v0,0(v0)
  49167c:	00000000 	nop
  491680:	00621026 	xor	v0,v1,v0
  491684:	ac820000 	sw	v0,0(a0)
                kf[11] = kf[3] ^ kf[10];
  491688:	8fc20008 	lw	v0,8(s8)
  49168c:	00000000 	nop
  491690:	2444002c 	addiu	a0,v0,44
  491694:	8fc20008 	lw	v0,8(s8)
  491698:	00000000 	nop
  49169c:	2443000c 	addiu	v1,v0,12
  4916a0:	8fc20008 	lw	v0,8(s8)
  4916a4:	00000000 	nop
  4916a8:	24420028 	addiu	v0,v0,40
  4916ac:	8c630000 	lw	v1,0(v1)
  4916b0:	8c420000 	lw	v0,0(v0)
  4916b4:	00000000 	nop
  4916b8:	00621026 	xor	v0,v1,v0
  4916bc:	ac820000 	sw	v0,0(a0)
                kf[12] = kf[4] ^ ls_box(kf[11],0);
  4916c0:	8fc20008 	lw	v0,8(s8)
  4916c4:	00000000 	nop
  4916c8:	24450030 	addiu	a1,v0,48
  4916cc:	8fc20008 	lw	v0,8(s8)
  4916d0:	00000000 	nop
  4916d4:	24440010 	addiu	a0,v0,16
  4916d8:	8fc20008 	lw	v0,8(s8)
  4916dc:	00000000 	nop
  4916e0:	2442002c 	addiu	v0,v0,44
  4916e4:	90420003 	lbu	v0,3(v0)
  4916e8:	00000000 	nop
  4916ec:	00021080 	sll	v0,v0,0x2
  4916f0:	8f83804c 	lw	v1,-32692(gp)
  4916f4:	00000000 	nop
  4916f8:	2463f394 	addiu	v1,v1,-3180
  4916fc:	00621821 	addu	v1,v1,v0
  491700:	8fc20008 	lw	v0,8(s8)
  491704:	00000000 	nop
  491708:	2442002c 	addiu	v0,v0,44
  49170c:	8c420000 	lw	v0,0(v0)
  491710:	00000000 	nop
  491714:	00021202 	srl	v0,v0,0x8
  491718:	304200ff 	andi	v0,v0,0xff
  49171c:	00021080 	sll	v0,v0,0x2
  491720:	24420400 	addiu	v0,v0,1024
  491724:	8f81804c 	lw	at,-32692(gp)
  491728:	00000000 	nop
  49172c:	2421f394 	addiu	at,at,-3180
  491730:	00221021 	addu	v0,at,v0
  491734:	8c630000 	lw	v1,0(v1)
  491738:	8c420000 	lw	v0,0(v0)
  49173c:	00000000 	nop
  491740:	00621826 	xor	v1,v1,v0
  491744:	8fc20008 	lw	v0,8(s8)
  491748:	00000000 	nop
  49174c:	2442002c 	addiu	v0,v0,44
  491750:	8c420000 	lw	v0,0(v0)
  491754:	00000000 	nop
  491758:	00021402 	srl	v0,v0,0x10
  49175c:	304200ff 	andi	v0,v0,0xff
  491760:	00021080 	sll	v0,v0,0x2
  491764:	24420800 	addiu	v0,v0,2048
  491768:	8f81804c 	lw	at,-32692(gp)
  49176c:	00000000 	nop
  491770:	2421f394 	addiu	at,at,-3180
  491774:	00221021 	addu	v0,at,v0
  491778:	8c420000 	lw	v0,0(v0)
  49177c:	00000000 	nop
  491780:	00621826 	xor	v1,v1,v0
  491784:	8fc20008 	lw	v0,8(s8)
  491788:	00000000 	nop
  49178c:	2442002c 	addiu	v0,v0,44
  491790:	8c420000 	lw	v0,0(v0)
  491794:	00000000 	nop
  491798:	00021602 	srl	v0,v0,0x18
  49179c:	304200ff 	andi	v0,v0,0xff
  4917a0:	00021080 	sll	v0,v0,0x2
  4917a4:	24420c00 	addiu	v0,v0,3072
  4917a8:	8f81804c 	lw	at,-32692(gp)
  4917ac:	00000000 	nop
  4917b0:	2421f394 	addiu	at,at,-3180
  4917b4:	00221021 	addu	v0,at,v0
  4917b8:	8c420000 	lw	v0,0(v0)
  4917bc:	00000000 	nop
  4917c0:	00621826 	xor	v1,v1,v0
  4917c4:	8c820000 	lw	v0,0(a0)
  4917c8:	00000000 	nop
  4917cc:	00431026 	xor	v0,v0,v1
  4917d0:	aca20000 	sw	v0,0(a1)
                kf[13] = kf[5] ^ kf[12];
  4917d4:	8fc20008 	lw	v0,8(s8)
  4917d8:	00000000 	nop
  4917dc:	24440034 	addiu	a0,v0,52
  4917e0:	8fc20008 	lw	v0,8(s8)
  4917e4:	00000000 	nop
  4917e8:	24430014 	addiu	v1,v0,20
  4917ec:	8fc20008 	lw	v0,8(s8)
  4917f0:	00000000 	nop
  4917f4:	24420030 	addiu	v0,v0,48
  4917f8:	8c630000 	lw	v1,0(v1)
  4917fc:	8c420000 	lw	v0,0(v0)
  491800:	00000000 	nop
  491804:	00621026 	xor	v0,v1,v0
  491808:	ac820000 	sw	v0,0(a0)
                kf[14] = kf[6] ^ kf[13];
  49180c:	8fc20008 	lw	v0,8(s8)
  491810:	00000000 	nop
  491814:	24440038 	addiu	a0,v0,56
  491818:	8fc20008 	lw	v0,8(s8)
  49181c:	00000000 	nop
  491820:	24430018 	addiu	v1,v0,24
  491824:	8fc20008 	lw	v0,8(s8)
  491828:	00000000 	nop
  49182c:	24420034 	addiu	v0,v0,52
  491830:	8c630000 	lw	v1,0(v1)
  491834:	8c420000 	lw	v0,0(v0)
  491838:	00000000 	nop
  49183c:	00621026 	xor	v0,v1,v0
  491840:	ac820000 	sw	v0,0(a0)
                kf[15] = kf[7] ^ kf[14];
  491844:	8fc20008 	lw	v0,8(s8)
  491848:	00000000 	nop
  49184c:	2444003c 	addiu	a0,v0,60
  491850:	8fc20008 	lw	v0,8(s8)
  491854:	00000000 	nop
  491858:	2443001c 	addiu	v1,v0,28
  49185c:	8fc20008 	lw	v0,8(s8)
  491860:	00000000 	nop
  491864:	24420038 	addiu	v0,v0,56
  491868:	8c630000 	lw	v1,0(v1)
  49186c:	8c420000 	lw	v0,0(v0)
  491870:	00000000 	nop
  491874:	00621026 	xor	v0,v1,v0
  491878:	ac820000 	sw	v0,0(a0)
                kf += 8;
  49187c:	8fc20008 	lw	v0,8(s8)
  491880:	00000000 	nop
  491884:	24420020 	addiu	v0,v0,32
  491888:	afc20008 	sw	v0,8(s8)
            }
  49188c:	8fc30008 	lw	v1,8(s8)
  491890:	8fc2000c 	lw	v0,12(s8)
  491894:	00000000 	nop
  491898:	0062102b 	sltu	v0,v1,v0
  49189c:	1440ff0c 	bnez	v0,4914d0 <aes_set_key+0xb60>
  4918a0:	00000000 	nop
            while (kf < kt);
            break;
    }

    if(!f)
  4918a4:	8fc2003c 	lw	v0,60(s8)
  4918a8:	00000000 	nop
  4918ac:	1440018d 	bnez	v0,491ee4 <aes_set_key+0x1574>
  4918b0:	00000000 	nop
    {   u_int32_t    i;
        
        kt = cx->aes_d_key + nc * cx->aes_Nrnd;
  4918b4:	8fc20030 	lw	v0,48(s8)
  4918b8:	00000000 	nop
  4918bc:	8c420004 	lw	v0,4(v0)
  4918c0:	00000000 	nop
  4918c4:	00021900 	sll	v1,v0,0x4
  4918c8:	8fc20030 	lw	v0,48(s8)
  4918cc:	00000000 	nop
  4918d0:	00621021 	addu	v0,v1,v0
  4918d4:	24420108 	addiu	v0,v0,264
  4918d8:	afc2000c 	sw	v0,12(s8)
        kf = cx->aes_e_key;
  4918dc:	8fc20030 	lw	v0,48(s8)
  4918e0:	00000000 	nop
  4918e4:	24420008 	addiu	v0,v0,8
  4918e8:	afc20008 	sw	v0,8(s8)
        
        cpy(kt, kf); kt -= 2 * nc;
  4918ec:	27c6000c 	addiu	a2,s8,12
  4918f0:	8cc40000 	lw	a0,0(a2)
  4918f4:	8fc30008 	lw	v1,8(s8)
  4918f8:	00802821 	move	a1,a0
  4918fc:	00601021 	move	v0,v1
  491900:	8c420000 	lw	v0,0(v0)
  491904:	00000000 	nop
  491908:	aca20000 	sw	v0,0(a1)
  49190c:	24630004 	addiu	v1,v1,4
  491910:	afc30008 	sw	v1,8(s8)
  491914:	24840004 	addiu	a0,a0,4
  491918:	acc40000 	sw	a0,0(a2)
  49191c:	27c6000c 	addiu	a2,s8,12
  491920:	8cc40000 	lw	a0,0(a2)
  491924:	8fc30008 	lw	v1,8(s8)
  491928:	00802821 	move	a1,a0
  49192c:	00601021 	move	v0,v1
  491930:	8c420000 	lw	v0,0(v0)
  491934:	00000000 	nop
  491938:	aca20000 	sw	v0,0(a1)
  49193c:	24630004 	addiu	v1,v1,4
  491940:	afc30008 	sw	v1,8(s8)
  491944:	24840004 	addiu	a0,a0,4
  491948:	acc40000 	sw	a0,0(a2)
  49194c:	27c6000c 	addiu	a2,s8,12
  491950:	8cc40000 	lw	a0,0(a2)
  491954:	8fc30008 	lw	v1,8(s8)
  491958:	00802821 	move	a1,a0
  49195c:	00601021 	move	v0,v1
  491960:	8c420000 	lw	v0,0(v0)
  491964:	00000000 	nop
  491968:	aca20000 	sw	v0,0(a1)
  49196c:	24630004 	addiu	v1,v1,4
  491970:	afc30008 	sw	v1,8(s8)
  491974:	24840004 	addiu	a0,a0,4
  491978:	acc40000 	sw	a0,0(a2)
  49197c:	27c6000c 	addiu	a2,s8,12
  491980:	8cc40000 	lw	a0,0(a2)
  491984:	8fc30008 	lw	v1,8(s8)
  491988:	00802821 	move	a1,a0
  49198c:	00601021 	move	v0,v1
  491990:	8c420000 	lw	v0,0(v0)
  491994:	00000000 	nop
  491998:	aca20000 	sw	v0,0(a1)
  49199c:	24630004 	addiu	v1,v1,4
  4919a0:	afc30008 	sw	v1,8(s8)
  4919a4:	24840004 	addiu	a0,a0,4
  4919a8:	acc40000 	sw	a0,0(a2)
  4919ac:	8fc2000c 	lw	v0,12(s8)
  4919b0:	00000000 	nop
  4919b4:	2442ffe0 	addiu	v0,v0,-32
  4919b8:	afc2000c 	sw	v0,12(s8)

        for(i = 1; i < cx->aes_Nrnd; ++i)
  4919bc:	24020001 	li	v0,1
  4919c0:	afc20014 	sw	v0,20(s8)
  4919c4:	8fc20030 	lw	v0,48(s8)
  4919c8:	00000000 	nop
  4919cc:	8c430004 	lw	v1,4(v0)
  4919d0:	8fc20014 	lw	v0,20(s8)
  4919d4:	00000000 	nop
  4919d8:	0043102b 	sltu	v0,v0,v1
  4919dc:	14400003 	bnez	v0,4919ec <aes_set_key+0x107c>
  4919e0:	00000000 	nop
  4919e4:	1000010f 	b	491e24 <aes_set_key+0x14b4>
  4919e8:	00000000 	nop
        { 
#if defined(ONE_TABLE) || defined(FOUR_TABLES)
#if !defined(ONE_IM_TABLE) && !defined(FOUR_IM_TABLES)
            u_int32_t    f2, f4, f8, f9;
#endif
            mix(kt, kf);
  4919ec:	27c5000c 	addiu	a1,s8,12
  4919f0:	8ca40000 	lw	a0,0(a1)
  4919f4:	8fc20008 	lw	v0,8(s8)
  4919f8:	00000000 	nop
  4919fc:	90420003 	lbu	v0,3(v0)
  491a00:	00000000 	nop
  491a04:	00021080 	sll	v0,v0,0x2
  491a08:	8f83804c 	lw	v1,-32692(gp)
  491a0c:	00000000 	nop
  491a10:	24631394 	addiu	v1,v1,5012
  491a14:	00621821 	addu	v1,v1,v0
  491a18:	8fc20008 	lw	v0,8(s8)
  491a1c:	00000000 	nop
  491a20:	8c420000 	lw	v0,0(v0)
  491a24:	00000000 	nop
  491a28:	00021202 	srl	v0,v0,0x8
  491a2c:	304200ff 	andi	v0,v0,0xff
  491a30:	00021080 	sll	v0,v0,0x2
  491a34:	24420400 	addiu	v0,v0,1024
  491a38:	8f81804c 	lw	at,-32692(gp)
  491a3c:	00000000 	nop
  491a40:	24211394 	addiu	at,at,5012
  491a44:	00221021 	addu	v0,at,v0
  491a48:	8c630000 	lw	v1,0(v1)
  491a4c:	8c420000 	lw	v0,0(v0)
  491a50:	00000000 	nop
  491a54:	00621826 	xor	v1,v1,v0
  491a58:	8fc20008 	lw	v0,8(s8)
  491a5c:	00000000 	nop
  491a60:	8c420000 	lw	v0,0(v0)
  491a64:	00000000 	nop
  491a68:	00021402 	srl	v0,v0,0x10
  491a6c:	304200ff 	andi	v0,v0,0xff
  491a70:	00021080 	sll	v0,v0,0x2
  491a74:	24420800 	addiu	v0,v0,2048
  491a78:	8f81804c 	lw	at,-32692(gp)
  491a7c:	00000000 	nop
  491a80:	24211394 	addiu	at,at,5012
  491a84:	00221021 	addu	v0,at,v0
  491a88:	8c420000 	lw	v0,0(v0)
  491a8c:	00000000 	nop
  491a90:	00621826 	xor	v1,v1,v0
  491a94:	8fc20008 	lw	v0,8(s8)
  491a98:	00000000 	nop
  491a9c:	8c420000 	lw	v0,0(v0)
  491aa0:	00000000 	nop
  491aa4:	00021602 	srl	v0,v0,0x18
  491aa8:	304200ff 	andi	v0,v0,0xff
  491aac:	00021080 	sll	v0,v0,0x2
  491ab0:	24420c00 	addiu	v0,v0,3072
  491ab4:	8f81804c 	lw	at,-32692(gp)
  491ab8:	00000000 	nop
  491abc:	24211394 	addiu	at,at,5012
  491ac0:	00221021 	addu	v0,at,v0
  491ac4:	8c420000 	lw	v0,0(v0)
  491ac8:	00000000 	nop
  491acc:	00621826 	xor	v1,v1,v0
  491ad0:	00801021 	move	v0,a0
  491ad4:	ac430000 	sw	v1,0(v0)
  491ad8:	24840004 	addiu	a0,a0,4
  491adc:	aca40000 	sw	a0,0(a1)
  491ae0:	8fc20008 	lw	v0,8(s8)
  491ae4:	00000000 	nop
  491ae8:	24420004 	addiu	v0,v0,4
  491aec:	afc20008 	sw	v0,8(s8)
  491af0:	27c5000c 	addiu	a1,s8,12
  491af4:	8ca40000 	lw	a0,0(a1)
  491af8:	8fc20008 	lw	v0,8(s8)
  491afc:	00000000 	nop
  491b00:	90420003 	lbu	v0,3(v0)
  491b04:	00000000 	nop
  491b08:	00021080 	sll	v0,v0,0x2
  491b0c:	8f83804c 	lw	v1,-32692(gp)
  491b10:	00000000 	nop
  491b14:	24631394 	addiu	v1,v1,5012
  491b18:	00621821 	addu	v1,v1,v0
  491b1c:	8fc20008 	lw	v0,8(s8)
  491b20:	00000000 	nop
  491b24:	8c420000 	lw	v0,0(v0)
  491b28:	00000000 	nop
  491b2c:	00021202 	srl	v0,v0,0x8
  491b30:	304200ff 	andi	v0,v0,0xff
  491b34:	00021080 	sll	v0,v0,0x2
  491b38:	24420400 	addiu	v0,v0,1024
  491b3c:	8f81804c 	lw	at,-32692(gp)
  491b40:	00000000 	nop
  491b44:	24211394 	addiu	at,at,5012
  491b48:	00221021 	addu	v0,at,v0
  491b4c:	8c630000 	lw	v1,0(v1)
  491b50:	8c420000 	lw	v0,0(v0)
  491b54:	00000000 	nop
  491b58:	00621826 	xor	v1,v1,v0
  491b5c:	8fc20008 	lw	v0,8(s8)
  491b60:	00000000 	nop
  491b64:	8c420000 	lw	v0,0(v0)
  491b68:	00000000 	nop
  491b6c:	00021402 	srl	v0,v0,0x10
  491b70:	304200ff 	andi	v0,v0,0xff
  491b74:	00021080 	sll	v0,v0,0x2
  491b78:	24420800 	addiu	v0,v0,2048
  491b7c:	8f81804c 	lw	at,-32692(gp)
  491b80:	00000000 	nop
  491b84:	24211394 	addiu	at,at,5012
  491b88:	00221021 	addu	v0,at,v0
  491b8c:	8c420000 	lw	v0,0(v0)
  491b90:	00000000 	nop
  491b94:	00621826 	xor	v1,v1,v0
  491b98:	8fc20008 	lw	v0,8(s8)
  491b9c:	00000000 	nop
  491ba0:	8c420000 	lw	v0,0(v0)
  491ba4:	00000000 	nop
  491ba8:	00021602 	srl	v0,v0,0x18
  491bac:	304200ff 	andi	v0,v0,0xff
  491bb0:	00021080 	sll	v0,v0,0x2
  491bb4:	24420c00 	addiu	v0,v0,3072
  491bb8:	8f81804c 	lw	at,-32692(gp)
  491bbc:	00000000 	nop
  491bc0:	24211394 	addiu	at,at,5012
  491bc4:	00221021 	addu	v0,at,v0
  491bc8:	8c420000 	lw	v0,0(v0)
  491bcc:	00000000 	nop
  491bd0:	00621826 	xor	v1,v1,v0
  491bd4:	00801021 	move	v0,a0
  491bd8:	ac430000 	sw	v1,0(v0)
  491bdc:	24840004 	addiu	a0,a0,4
  491be0:	aca40000 	sw	a0,0(a1)
  491be4:	8fc20008 	lw	v0,8(s8)
  491be8:	00000000 	nop
  491bec:	24420004 	addiu	v0,v0,4
  491bf0:	afc20008 	sw	v0,8(s8)
  491bf4:	27c5000c 	addiu	a1,s8,12
  491bf8:	8ca40000 	lw	a0,0(a1)
  491bfc:	8fc20008 	lw	v0,8(s8)
  491c00:	00000000 	nop
  491c04:	90420003 	lbu	v0,3(v0)
  491c08:	00000000 	nop
  491c0c:	00021080 	sll	v0,v0,0x2
  491c10:	8f83804c 	lw	v1,-32692(gp)
  491c14:	00000000 	nop
  491c18:	24631394 	addiu	v1,v1,5012
  491c1c:	00621821 	addu	v1,v1,v0
  491c20:	8fc20008 	lw	v0,8(s8)
  491c24:	00000000 	nop
  491c28:	8c420000 	lw	v0,0(v0)
  491c2c:	00000000 	nop
  491c30:	00021202 	srl	v0,v0,0x8
  491c34:	304200ff 	andi	v0,v0,0xff
  491c38:	00021080 	sll	v0,v0,0x2
  491c3c:	24420400 	addiu	v0,v0,1024
  491c40:	8f81804c 	lw	at,-32692(gp)
  491c44:	00000000 	nop
  491c48:	24211394 	addiu	at,at,5012
  491c4c:	00221021 	addu	v0,at,v0
  491c50:	8c630000 	lw	v1,0(v1)
  491c54:	8c420000 	lw	v0,0(v0)
  491c58:	00000000 	nop
  491c5c:	00621826 	xor	v1,v1,v0
  491c60:	8fc20008 	lw	v0,8(s8)
  491c64:	00000000 	nop
  491c68:	8c420000 	lw	v0,0(v0)
  491c6c:	00000000 	nop
  491c70:	00021402 	srl	v0,v0,0x10
  491c74:	304200ff 	andi	v0,v0,0xff
  491c78:	00021080 	sll	v0,v0,0x2
  491c7c:	24420800 	addiu	v0,v0,2048
  491c80:	8f81804c 	lw	at,-32692(gp)
  491c84:	00000000 	nop
  491c88:	24211394 	addiu	at,at,5012
  491c8c:	00221021 	addu	v0,at,v0
  491c90:	8c420000 	lw	v0,0(v0)
  491c94:	00000000 	nop
  491c98:	00621826 	xor	v1,v1,v0
  491c9c:	8fc20008 	lw	v0,8(s8)
  491ca0:	00000000 	nop
  491ca4:	8c420000 	lw	v0,0(v0)
  491ca8:	00000000 	nop
  491cac:	00021602 	srl	v0,v0,0x18
  491cb0:	304200ff 	andi	v0,v0,0xff
  491cb4:	00021080 	sll	v0,v0,0x2
  491cb8:	24420c00 	addiu	v0,v0,3072
  491cbc:	8f81804c 	lw	at,-32692(gp)
  491cc0:	00000000 	nop
  491cc4:	24211394 	addiu	at,at,5012
  491cc8:	00221021 	addu	v0,at,v0
  491ccc:	8c420000 	lw	v0,0(v0)
  491cd0:	00000000 	nop
  491cd4:	00621826 	xor	v1,v1,v0
  491cd8:	00801021 	move	v0,a0
  491cdc:	ac430000 	sw	v1,0(v0)
  491ce0:	24840004 	addiu	a0,a0,4
  491ce4:	aca40000 	sw	a0,0(a1)
  491ce8:	8fc20008 	lw	v0,8(s8)
  491cec:	00000000 	nop
  491cf0:	24420004 	addiu	v0,v0,4
  491cf4:	afc20008 	sw	v0,8(s8)
  491cf8:	27c5000c 	addiu	a1,s8,12
  491cfc:	8ca40000 	lw	a0,0(a1)
  491d00:	8fc20008 	lw	v0,8(s8)
  491d04:	00000000 	nop
  491d08:	90420003 	lbu	v0,3(v0)
  491d0c:	00000000 	nop
  491d10:	00021080 	sll	v0,v0,0x2
  491d14:	8f83804c 	lw	v1,-32692(gp)
  491d18:	00000000 	nop
  491d1c:	24631394 	addiu	v1,v1,5012
  491d20:	00621821 	addu	v1,v1,v0
  491d24:	8fc20008 	lw	v0,8(s8)
  491d28:	00000000 	nop
  491d2c:	8c420000 	lw	v0,0(v0)
  491d30:	00000000 	nop
  491d34:	00021202 	srl	v0,v0,0x8
  491d38:	304200ff 	andi	v0,v0,0xff
  491d3c:	00021080 	sll	v0,v0,0x2
  491d40:	24420400 	addiu	v0,v0,1024
  491d44:	8f81804c 	lw	at,-32692(gp)
  491d48:	00000000 	nop
  491d4c:	24211394 	addiu	at,at,5012
  491d50:	00221021 	addu	v0,at,v0
  491d54:	8c630000 	lw	v1,0(v1)
  491d58:	8c420000 	lw	v0,0(v0)
  491d5c:	00000000 	nop
  491d60:	00621826 	xor	v1,v1,v0
  491d64:	8fc20008 	lw	v0,8(s8)
  491d68:	00000000 	nop
  491d6c:	8c420000 	lw	v0,0(v0)
  491d70:	00000000 	nop
  491d74:	00021402 	srl	v0,v0,0x10
  491d78:	304200ff 	andi	v0,v0,0xff
  491d7c:	00021080 	sll	v0,v0,0x2
  491d80:	24420800 	addiu	v0,v0,2048
  491d84:	8f81804c 	lw	at,-32692(gp)
  491d88:	00000000 	nop
  491d8c:	24211394 	addiu	at,at,5012
  491d90:	00221021 	addu	v0,at,v0
  491d94:	8c420000 	lw	v0,0(v0)
  491d98:	00000000 	nop
  491d9c:	00621826 	xor	v1,v1,v0
  491da0:	8fc20008 	lw	v0,8(s8)
  491da4:	00000000 	nop
  491da8:	8c420000 	lw	v0,0(v0)
  491dac:	00000000 	nop
  491db0:	00021602 	srl	v0,v0,0x18
  491db4:	304200ff 	andi	v0,v0,0xff
  491db8:	00021080 	sll	v0,v0,0x2
  491dbc:	24420c00 	addiu	v0,v0,3072
  491dc0:	8f81804c 	lw	at,-32692(gp)
  491dc4:	00000000 	nop
  491dc8:	24211394 	addiu	at,at,5012
  491dcc:	00221021 	addu	v0,at,v0
  491dd0:	8c420000 	lw	v0,0(v0)
  491dd4:	00000000 	nop
  491dd8:	00621826 	xor	v1,v1,v0
  491ddc:	00801021 	move	v0,a0
  491de0:	ac430000 	sw	v1,0(v0)
  491de4:	24840004 	addiu	a0,a0,4
  491de8:	aca40000 	sw	a0,0(a1)
  491dec:	8fc20008 	lw	v0,8(s8)
  491df0:	00000000 	nop
  491df4:	24420004 	addiu	v0,v0,4
  491df8:	afc20008 	sw	v0,8(s8)
#else
            cpy(kt, kf);
#endif
            kt -= 2 * nc;
  491dfc:	8fc2000c 	lw	v0,12(s8)
  491e00:	00000000 	nop
  491e04:	2442ffe0 	addiu	v0,v0,-32
  491e08:	afc2000c 	sw	v0,12(s8)
  491e0c:	8fc20014 	lw	v0,20(s8)
  491e10:	00000000 	nop
  491e14:	24420001 	addiu	v0,v0,1
  491e18:	afc20014 	sw	v0,20(s8)
  491e1c:	1000fee9 	b	4919c4 <aes_set_key+0x1054>
  491e20:	00000000 	nop
        }
        
        cpy(kt, kf);
  491e24:	27c6000c 	addiu	a2,s8,12
  491e28:	8cc40000 	lw	a0,0(a2)
  491e2c:	8fc30008 	lw	v1,8(s8)
  491e30:	00802821 	move	a1,a0
  491e34:	00601021 	move	v0,v1
  491e38:	8c420000 	lw	v0,0(v0)
  491e3c:	00000000 	nop
  491e40:	aca20000 	sw	v0,0(a1)
  491e44:	24630004 	addiu	v1,v1,4
  491e48:	afc30008 	sw	v1,8(s8)
  491e4c:	24840004 	addiu	a0,a0,4
  491e50:	acc40000 	sw	a0,0(a2)
  491e54:	27c6000c 	addiu	a2,s8,12
  491e58:	8cc40000 	lw	a0,0(a2)
  491e5c:	8fc30008 	lw	v1,8(s8)
  491e60:	00802821 	move	a1,a0
  491e64:	00601021 	move	v0,v1
  491e68:	8c420000 	lw	v0,0(v0)
  491e6c:	00000000 	nop
  491e70:	aca20000 	sw	v0,0(a1)
  491e74:	24630004 	addiu	v1,v1,4
  491e78:	afc30008 	sw	v1,8(s8)
  491e7c:	24840004 	addiu	a0,a0,4
  491e80:	acc40000 	sw	a0,0(a2)
  491e84:	27c6000c 	addiu	a2,s8,12
  491e88:	8cc40000 	lw	a0,0(a2)
  491e8c:	8fc30008 	lw	v1,8(s8)
  491e90:	00802821 	move	a1,a0
  491e94:	00601021 	move	v0,v1
  491e98:	8c420000 	lw	v0,0(v0)
  491e9c:	00000000 	nop
  491ea0:	aca20000 	sw	v0,0(a1)
  491ea4:	24630004 	addiu	v1,v1,4
  491ea8:	afc30008 	sw	v1,8(s8)
  491eac:	24840004 	addiu	a0,a0,4
  491eb0:	acc40000 	sw	a0,0(a2)
  491eb4:	27c6000c 	addiu	a2,s8,12
  491eb8:	8cc40000 	lw	a0,0(a2)
  491ebc:	8fc30008 	lw	v1,8(s8)
  491ec0:	00802821 	move	a1,a0
  491ec4:	00601021 	move	v0,v1
  491ec8:	8c420000 	lw	v0,0(v0)
  491ecc:	00000000 	nop
  491ed0:	aca20000 	sw	v0,0(a1)
  491ed4:	24630004 	addiu	v1,v1,4
  491ed8:	afc30008 	sw	v1,8(s8)
  491edc:	24840004 	addiu	a0,a0,4
  491ee0:	acc40000 	sw	a0,0(a2)
    }
}
  491ee4:	03c0e821 	move	sp,s8
  491ee8:	8fbe002c 	lw	s8,44(sp)
  491eec:	27bd0030 	addiu	sp,sp,48
  491ef0:	03e00008 	jr	ra
  491ef4:	00000000 	nop

00491ef8 <aes_encrypt>:
  491ef8:	3c1c0fb8 	lui	gp,0xfb8
  491efc:	279caa78 	addiu	gp,gp,-21896
  491f00:	0399e021 	addu	gp,gp,t9
  491f04:	27bdffc8 	addiu	sp,sp,-56
  491f08:	afbc0000 	sw	gp,0(sp)
  491f0c:	afbe0034 	sw	s8,52(sp)
  491f10:	afbc0030 	sw	gp,48(sp)
  491f14:	03a0f021 	move	s8,sp
  491f18:	afc40038 	sw	a0,56(s8)
  491f1c:	afc5003c 	sw	a1,60(s8)
  491f20:	afc60040 	sw	a2,64(s8)

// y = output word, x = input word, r = row, c = column
// for r = 0, 1, 2 and 3 = column accessed for row r

#if defined(ARRAYS)
#define s(x,c) x[c]
#else
#define s(x,c) x##c
#endif

// I am grateful to Frank Yellin for the following constructions
// which, given the column (c) of the output state variable that
// is being computed, return the input state variables which are
// needed for each row (r) of the state

// For the fixed block size options, compilers reduce these two 
// expressions to fixed variable references. For variable block 
// size code conditional clauses will sometimes be returned

#define unused  77  // Sunset Strip

#define fwd_var(x,r,c) \
 ( r==0 ?			\
    ( c==0 ? s(x,0) \
    : c==1 ? s(x,1) \
    : c==2 ? s(x,2) \
    : c==3 ? s(x,3) \
    : c==4 ? s(x,4) \
    : c==5 ? s(x,5) \
    : c==6 ? s(x,6) \
    : s(x,7))		\
 : r==1 ?			\
    ( c==0 ? s(x,1) \
    : c==1 ? s(x,2) \
    : c==2 ? s(x,3) \
    : c==3 ? nc==4 ? s(x,0) : s(x,4) \
    : c==4 ? s(x,5) \
    : c==5 ? nc==8 ? s(x,6) : s(x,0) \
    : c==6 ? s(x,7) \
    : s(x,0))		\
 : r==2 ?			\
    ( c==0 ? nc==8 ? s(x,3) : s(x,2) \
    : c==1 ? nc==8 ? s(x,4) : s(x,3) \
    : c==2 ? nc==4 ? s(x,0) : nc==8 ? s(x,5) : s(x,4) \
    : c==3 ? nc==4 ? s(x,1) : nc==8 ? s(x,6) : s(x,5) \
    : c==4 ? nc==8 ? s(x,7) : s(x,0) \
    : c==5 ? nc==8 ? s(x,0) : s(x,1) \
    : c==6 ? s(x,1) \
    : s(x,2))		\
 :					\
    ( c==0 ? nc==8 ? s(x,4) : s(x,3) \
    : c==1 ? nc==4 ? s(x,0) : nc==8 ? s(x,5) : s(x,4) \
    : c==2 ? nc==4 ? s(x,1) : nc==8 ? s(x,6) : s(x,5) \
    : c==3 ? nc==4 ? s(x,2) : nc==8 ? s(x,7) : s(x,0) \
    : c==4 ? nc==8 ? s(x,0) : s(x,1) \
    : c==5 ? nc==8 ? s(x,1) : s(x,2) \
    : c==6 ? s(x,2) \
    : s(x,3)))

#define inv_var(x,r,c) \
 ( r==0 ?			\
    ( c==0 ? s(x,0) \
    : c==1 ? s(x,1) \
    : c==2 ? s(x,2) \
    : c==3 ? s(x,3) \
    : c==4 ? s(x,4) \
    : c==5 ? s(x,5) \
    : c==6 ? s(x,6) \
    : s(x,7))		\
 : r==1 ?			\
    ( c==0 ? nc==4 ? s(x,3) : nc==8 ? s(x,7) : s(x,5) \
    : c==1 ? s(x,0) \
    : c==2 ? s(x,1) \
    : c==3 ? s(x,2) \
    : c==4 ? s(x,3) \
    : c==5 ? s(x,4) \
    : c==6 ? s(x,5) \
    : s(x,6))		\
 : r==2 ?			\
    ( c==0 ? nc==4 ? s(x,2) : nc==8 ? s(x,5) : s(x,4) \
    : c==1 ? nc==4 ? s(x,3) : nc==8 ? s(x,6) : s(x,5) \
    : c==2 ? nc==8 ? s(x,7) : s(x,0) \
    : c==3 ? nc==8 ? s(x,0) : s(x,1) \
    : c==4 ? nc==8 ? s(x,1) : s(x,2) \
    : c==5 ? nc==8 ? s(x,2) : s(x,3) \
    : c==6 ? s(x,3) \
    : s(x,4))		\
 :					\
    ( c==0 ? nc==4 ? s(x,1) : nc==8 ? s(x,4) : s(x,3) \
    : c==1 ? nc==4 ? s(x,2) : nc==8 ? s(x,5) : s(x,4) \
    : c==2 ? nc==4 ? s(x,3) : nc==8 ? s(x,6) : s(x,5) \
    : c==3 ? nc==8 ? s(x,7) : s(x,0) \
    : c==4 ? nc==8 ? s(x,0) : s(x,1) \
    : c==5 ? nc==8 ? s(x,1) : s(x,2) \
    : c==6 ? s(x,2) \
    : s(x,3)))

#define si(y,x,k,c) s(y,c) = const_word_in(x + 4 * c) ^ k[c]
#define so(y,x,c)   word_out(y + 4 * c, s(x,c))

#if defined(FOUR_TABLES)
#define fwd_rnd(y,x,k,c)    s(y,c)= (k)[c] ^ four_tables(x,ft_tab,fwd_var,rf1,c)
#define inv_rnd(y,x,k,c)    s(y,c)= (k)[c] ^ four_tables(x,it_tab,inv_var,rf1,c)
#elif defined(ONE_TABLE)
#define fwd_rnd(y,x,k,c)    s(y,c)= (k)[c] ^ one_table(x,upr,ft_tab,fwd_var,rf1,c)
#define inv_rnd(y,x,k,c)    s(y,c)= (k)[c] ^ one_table(x,upr,it_tab,inv_var,rf1,c)
#else
#define fwd_rnd(y,x,k,c)    s(y,c) = fwd_mcol(no_table(x,s_box,fwd_var,rf1,c)) ^ (k)[c]
#define inv_rnd(y,x,k,c)    s(y,c) = inv_mcol(no_table(x,inv_s_box,inv_var,rf1,c) ^ (k)[c])
#endif

#if defined(FOUR_LR_TABLES)
#define fwd_lrnd(y,x,k,c)   s(y,c)= (k)[c] ^ four_tables(x,fl_tab,fwd_var,rf1,c)
#define inv_lrnd(y,x,k,c)   s(y,c)= (k)[c] ^ four_tables(x,il_tab,inv_var,rf1,c)
#elif defined(ONE_LR_TABLE)
#define fwd_lrnd(y,x,k,c)   s(y,c)= (k)[c] ^ one_table(x,ups,fl_tab,fwd_var,rf1,c)
#define inv_lrnd(y,x,k,c)   s(y,c)= (k)[c] ^ one_table(x,ups,il_tab,inv_var,rf1,c)
#else
#define fwd_lrnd(y,x,k,c)   s(y,c) = no_table(x,s_box,fwd_var,rf1,c) ^ (k)[c]
#define inv_lrnd(y,x,k,c)   s(y,c) = no_table(x,inv_s_box,inv_var,rf1,c) ^ (k)[c]
#endif

#if AES_BLOCK_SIZE == 16

#if defined(ARRAYS)
#define locals(y,x)     x[4],y[4]
#else
#define locals(y,x)     x##0,x##1,x##2,x##3,y##0,y##1,y##2,y##3
// the following defines prevent the compiler requiring the declaration
// of generated but unused variables in the fwd_var and inv_var macros
#define b04 unused
#define b05 unused
#define b06 unused
#define b07 unused
#define b14 unused
#define b15 unused
#define b16 unused
#define b17 unused
#endif
#define l_copy(y, x)    s(y,0) = s(x,0); s(y,1) = s(x,1); \
                        s(y,2) = s(x,2); s(y,3) = s(x,3);
#define state_in(y,x,k) si(y,x,k,0); si(y,x,k,1); si(y,x,k,2); si(y,x,k,3)
#define state_out(y,x)  so(y,x,0); so(y,x,1); so(y,x,2); so(y,x,3)
#define round(rm,y,x,k) rm(y,x,k,0); rm(y,x,k,1); rm(y,x,k,2); rm(y,x,k,3)

#elif AES_BLOCK_SIZE == 24

#if defined(ARRAYS)
#define locals(y,x)     x[6],y[6]
#else
#define locals(y,x)     x##0,x##1,x##2,x##3,x##4,x##5, \
                        y##0,y##1,y##2,y##3,y##4,y##5
#define b06 unused
#define b07 unused
#define b16 unused
#define b17 unused
#endif
#define l_copy(y, x)    s(y,0) = s(x,0); s(y,1) = s(x,1); \
                        s(y,2) = s(x,2); s(y,3) = s(x,3); \
                        s(y,4) = s(x,4); s(y,5) = s(x,5);
#define state_in(y,x,k) si(y,x,k,0); si(y,x,k,1); si(y,x,k,2); \
                        si(y,x,k,3); si(y,x,k,4); si(y,x,k,5)
#define state_out(y,x)  so(y,x,0); so(y,x,1); so(y,x,2); \
                        so(y,x,3); so(y,x,4); so(y,x,5)
#define round(rm,y,x,k) rm(y,x,k,0); rm(y,x,k,1); rm(y,x,k,2); \
                        rm(y,x,k,3); rm(y,x,k,4); rm(y,x,k,5)
#else

#if defined(ARRAYS)
#define locals(y,x)     x[8],y[8]
#else
#define locals(y,x)     x##0,x##1,x##2,x##3,x##4,x##5,x##6,x##7, \
                        y##0,y##1,y##2,y##3,y##4,y##5,y##6,y##7
#endif
#define l_copy(y, x)    s(y,0) = s(x,0); s(y,1) = s(x,1); \
                        s(y,2) = s(x,2); s(y,3) = s(x,3); \
                        s(y,4) = s(x,4); s(y,5) = s(x,5); \
                        s(y,6) = s(x,6); s(y,7) = s(x,7);

#if AES_BLOCK_SIZE == 32

#define state_in(y,x,k) si(y,x,k,0); si(y,x,k,1); si(y,x,k,2); si(y,x,k,3); \
                        si(y,x,k,4); si(y,x,k,5); si(y,x,k,6); si(y,x,k,7)
#define state_out(y,x)  so(y,x,0); so(y,x,1); so(y,x,2); so(y,x,3); \
                        so(y,x,4); so(y,x,5); so(y,x,6); so(y,x,7)
#define round(rm,y,x,k) rm(y,x,k,0); rm(y,x,k,1); rm(y,x,k,2); rm(y,x,k,3); \
                        rm(y,x,k,4); rm(y,x,k,5); rm(y,x,k,6); rm(y,x,k,7)
#else

#define state_in(y,x,k) \
switch(nc) \
{   case 8: si(y,x,k,7); si(y,x,k,6); \
    case 6: si(y,x,k,5); si(y,x,k,4); \
    case 4: si(y,x,k,3); si(y,x,k,2); \
            si(y,x,k,1); si(y,x,k,0); \
}

#define state_out(y,x) \
switch(nc) \
{   case 8: so(y,x,7); so(y,x,6); \
    case 6: so(y,x,5); so(y,x,4); \
    case 4: so(y,x,3); so(y,x,2); \
            so(y,x,1); so(y,x,0); \
}

#if defined(FAST_VARIABLE)

#define round(rm,y,x,k) \
switch(nc) \
{   case 8: rm(y,x,k,7); rm(y,x,k,6); \
            rm(y,x,k,5); rm(y,x,k,4); \
            rm(y,x,k,3); rm(y,x,k,2); \
            rm(y,x,k,1); rm(y,x,k,0); \
            break; \
    case 6: rm(y,x,k,5); rm(y,x,k,4); \
            rm(y,x,k,3); rm(y,x,k,2); \
            rm(y,x,k,1); rm(y,x,k,0); \
            break; \
    case 4: rm(y,x,k,3); rm(y,x,k,2); \
            rm(y,x,k,1); rm(y,x,k,0); \
            break; \
}
#else

#define round(rm,y,x,k) \
switch(nc) \
{   case 8: rm(y,x,k,7); rm(y,x,k,6); \
    case 6: rm(y,x,k,5); rm(y,x,k,4); \
    case 4: rm(y,x,k,3); rm(y,x,k,2); \
            rm(y,x,k,1); rm(y,x,k,0); \
}

#endif

#endif
#endif

void aes_encrypt(const aes_context *cx, const unsigned char in_blk[], unsigned char out_blk[])
{   u_int32_t        locals(b0, b1);
    const u_int32_t  *kp = cx->aes_e_key;
  491f24:	8fc20038 	lw	v0,56(s8)
  491f28:	00000000 	nop
  491f2c:	24420008 	addiu	v0,v0,8
  491f30:	afc20028 	sw	v0,40(s8)

#if !defined(ONE_TABLE) && !defined(FOUR_TABLES)
    u_int32_t        f2;
#endif

    state_in(b0, in_blk, kp); kp += nc;
  491f34:	8fc2003c 	lw	v0,60(s8)
  491f38:	00000000 	nop
  491f3c:	90430000 	lbu	v1,0(v0)
  491f40:	8fc2003c 	lw	v0,60(s8)
  491f44:	00000000 	nop
  491f48:	24420001 	addiu	v0,v0,1
  491f4c:	90420000 	lbu	v0,0(v0)
  491f50:	00000000 	nop
  491f54:	00021200 	sll	v0,v0,0x8
  491f58:	00621825 	or	v1,v1,v0
  491f5c:	8fc2003c 	lw	v0,60(s8)
  491f60:	00000000 	nop
  491f64:	24420002 	addiu	v0,v0,2
  491f68:	90420000 	lbu	v0,0(v0)
  491f6c:	00000000 	nop
  491f70:	00021400 	sll	v0,v0,0x10
  491f74:	00621825 	or	v1,v1,v0
  491f78:	8fc2003c 	lw	v0,60(s8)
  491f7c:	00000000 	nop
  491f80:	24420003 	addiu	v0,v0,3
  491f84:	90420000 	lbu	v0,0(v0)
  491f88:	00000000 	nop
  491f8c:	00021600 	sll	v0,v0,0x18
  491f90:	00621825 	or	v1,v1,v0
  491f94:	8fc20028 	lw	v0,40(s8)
  491f98:	00000000 	nop
  491f9c:	8c420000 	lw	v0,0(v0)
  491fa0:	00000000 	nop
  491fa4:	00621026 	xor	v0,v1,v0
  491fa8:	afc20018 	sw	v0,24(s8)
  491fac:	8fc2003c 	lw	v0,60(s8)
  491fb0:	00000000 	nop
  491fb4:	24420004 	addiu	v0,v0,4
  491fb8:	90430000 	lbu	v1,0(v0)
  491fbc:	8fc2003c 	lw	v0,60(s8)
  491fc0:	00000000 	nop
  491fc4:	24420005 	addiu	v0,v0,5
  491fc8:	90420000 	lbu	v0,0(v0)
  491fcc:	00000000 	nop
  491fd0:	00021200 	sll	v0,v0,0x8
  491fd4:	00621825 	or	v1,v1,v0
  491fd8:	8fc2003c 	lw	v0,60(s8)
  491fdc:	00000000 	nop
  491fe0:	24420006 	addiu	v0,v0,6
  491fe4:	90420000 	lbu	v0,0(v0)
  491fe8:	00000000 	nop
  491fec:	00021400 	sll	v0,v0,0x10
  491ff0:	00621825 	or	v1,v1,v0
  491ff4:	8fc2003c 	lw	v0,60(s8)
  491ff8:	00000000 	nop
  491ffc:	24420007 	addiu	v0,v0,7
  492000:	90420000 	lbu	v0,0(v0)
  492004:	00000000 	nop
  492008:	00021600 	sll	v0,v0,0x18
  49200c:	00621825 	or	v1,v1,v0
  492010:	8fc20028 	lw	v0,40(s8)
  492014:	00000000 	nop
  492018:	24420004 	addiu	v0,v0,4
  49201c:	8c420000 	lw	v0,0(v0)
  492020:	00000000 	nop
  492024:	00621026 	xor	v0,v1,v0
  492028:	afc2001c 	sw	v0,28(s8)
  49202c:	8fc2003c 	lw	v0,60(s8)
  492030:	00000000 	nop
  492034:	24420008 	addiu	v0,v0,8
  492038:	90430000 	lbu	v1,0(v0)
  49203c:	8fc2003c 	lw	v0,60(s8)
  492040:	00000000 	nop
  492044:	24420009 	addiu	v0,v0,9
  492048:	90420000 	lbu	v0,0(v0)
  49204c:	00000000 	nop
  492050:	00021200 	sll	v0,v0,0x8
  492054:	00621825 	or	v1,v1,v0
  492058:	8fc2003c 	lw	v0,60(s8)
  49205c:	00000000 	nop
  492060:	2442000a 	addiu	v0,v0,10
  492064:	90420000 	lbu	v0,0(v0)
  492068:	00000000 	nop
  49206c:	00021400 	sll	v0,v0,0x10
  492070:	00621825 	or	v1,v1,v0
  492074:	8fc2003c 	lw	v0,60(s8)
  492078:	00000000 	nop
  49207c:	2442000b 	addiu	v0,v0,11
  492080:	90420000 	lbu	v0,0(v0)
  492084:	00000000 	nop
  492088:	00021600 	sll	v0,v0,0x18
  49208c:	00621825 	or	v1,v1,v0
  492090:	8fc20028 	lw	v0,40(s8)
  492094:	00000000 	nop
  492098:	24420008 	addiu	v0,v0,8
  49209c:	8c420000 	lw	v0,0(v0)
  4920a0:	00000000 	nop
  4920a4:	00621026 	xor	v0,v1,v0
  4920a8:	afc20020 	sw	v0,32(s8)
  4920ac:	8fc2003c 	lw	v0,60(s8)
  4920b0:	00000000 	nop
  4920b4:	2442000c 	addiu	v0,v0,12
  4920b8:	90430000 	lbu	v1,0(v0)
  4920bc:	8fc2003c 	lw	v0,60(s8)
  4920c0:	00000000 	nop
  4920c4:	2442000d 	addiu	v0,v0,13
  4920c8:	90420000 	lbu	v0,0(v0)
  4920cc:	00000000 	nop
  4920d0:	00021200 	sll	v0,v0,0x8
  4920d4:	00621825 	or	v1,v1,v0
  4920d8:	8fc2003c 	lw	v0,60(s8)
  4920dc:	00000000 	nop
  4920e0:	2442000e 	addiu	v0,v0,14
  4920e4:	90420000 	lbu	v0,0(v0)
  4920e8:	00000000 	nop
  4920ec:	00021400 	sll	v0,v0,0x10
  4920f0:	00621825 	or	v1,v1,v0
  4920f4:	8fc2003c 	lw	v0,60(s8)
  4920f8:	00000000 	nop
  4920fc:	2442000f 	addiu	v0,v0,15
  492100:	90420000 	lbu	v0,0(v0)
  492104:	00000000 	nop
  492108:	00021600 	sll	v0,v0,0x18
  49210c:	00621825 	or	v1,v1,v0
  492110:	8fc20028 	lw	v0,40(s8)
  492114:	00000000 	nop
  492118:	2442000c 	addiu	v0,v0,12
  49211c:	8c420000 	lw	v0,0(v0)
  492120:	00000000 	nop
  492124:	00621026 	xor	v0,v1,v0
  492128:	afc20024 	sw	v0,36(s8)
  49212c:	8fc20028 	lw	v0,40(s8)
  492130:	00000000 	nop
  492134:	24420010 	addiu	v0,v0,16
  492138:	afc20028 	sw	v0,40(s8)

#if defined(UNROLL)

    switch(cx->aes_Nrnd)
  49213c:	8fc20038 	lw	v0,56(s8)
  492140:	00000000 	nop
  492144:	8c420004 	lw	v0,4(v0)
  492148:	00000000 	nop
  49214c:	afc2002c 	sw	v0,44(s8)
  492150:	2402000c 	li	v0,12
  492154:	8fc3002c 	lw	v1,44(s8)
  492158:	00000000 	nop
  49215c:	106201c7 	beq	v1,v0,49287c <aes_encrypt+0x984>
  492160:	00000000 	nop
  492164:	8fc3002c 	lw	v1,44(s8)
  492168:	00000000 	nop
  49216c:	2c62000d 	sltiu	v0,v1,13
  492170:	10400008 	beqz	v0,492194 <aes_encrypt+0x29c>
  492174:	00000000 	nop
  492178:	2402000a 	li	v0,10
  49217c:	8fc3002c 	lw	v1,44(s8)
  492180:	00000000 	nop
  492184:	10620370 	beq	v1,v0,492f48 <aes_encrypt+0x1050>
  492188:	00000000 	nop
  49218c:	10000bdd 	b	495104 <aes_encrypt+0x320c>
  492190:	00000000 	nop
  492194:	2402000e 	li	v0,14
  492198:	8fc3002c 	lw	v1,44(s8)
  49219c:	00000000 	nop
  4921a0:	10620003 	beq	v1,v0,4921b0 <aes_encrypt+0x2b8>
  4921a4:	00000000 	nop
  4921a8:	10000bd6 	b	495104 <aes_encrypt+0x320c>
  4921ac:	00000000 	nop
    {
    case 14:    round(fwd_rnd,  b1, b0, kp         ); 
  4921b0:	93c2001b 	lbu	v0,27(s8)
  4921b4:	00000000 	nop
  4921b8:	00021080 	sll	v0,v0,0x2
  4921bc:	8f83804c 	lw	v1,-32692(gp)
  4921c0:	00000000 	nop
  4921c4:	2463d394 	addiu	v1,v1,-11372
  4921c8:	00621821 	addu	v1,v1,v0
  4921cc:	8fc2001c 	lw	v0,28(s8)
  4921d0:	00000000 	nop
  4921d4:	00021202 	srl	v0,v0,0x8
  4921d8:	304200ff 	andi	v0,v0,0xff
  4921dc:	00021080 	sll	v0,v0,0x2
  4921e0:	24420400 	addiu	v0,v0,1024
  4921e4:	8f81804c 	lw	at,-32692(gp)
  4921e8:	00000000 	nop
  4921ec:	2421d394 	addiu	at,at,-11372
  4921f0:	00221021 	addu	v0,at,v0
  4921f4:	8c630000 	lw	v1,0(v1)
  4921f8:	8c420000 	lw	v0,0(v0)
  4921fc:	00000000 	nop
  492200:	00621826 	xor	v1,v1,v0
  492204:	8fc20020 	lw	v0,32(s8)
  492208:	00000000 	nop
  49220c:	00021402 	srl	v0,v0,0x10
  492210:	304200ff 	andi	v0,v0,0xff
  492214:	00021080 	sll	v0,v0,0x2
  492218:	24420800 	addiu	v0,v0,2048
  49221c:	8f81804c 	lw	at,-32692(gp)
  492220:	00000000 	nop
  492224:	2421d394 	addiu	at,at,-11372
  492228:	00221021 	addu	v0,at,v0
  49222c:	8c420000 	lw	v0,0(v0)
  492230:	00000000 	nop
  492234:	00621826 	xor	v1,v1,v0
  492238:	8fc20024 	lw	v0,36(s8)
  49223c:	00000000 	nop
  492240:	00021602 	srl	v0,v0,0x18
  492244:	304200ff 	andi	v0,v0,0xff
  492248:	00021080 	sll	v0,v0,0x2
  49224c:	24420c00 	addiu	v0,v0,3072
  492250:	8f81804c 	lw	at,-32692(gp)
  492254:	00000000 	nop
  492258:	2421d394 	addiu	at,at,-11372
  49225c:	00221021 	addu	v0,at,v0
  492260:	8c420000 	lw	v0,0(v0)
  492264:	00000000 	nop
  492268:	00621826 	xor	v1,v1,v0
  49226c:	8fc20028 	lw	v0,40(s8)
  492270:	00000000 	nop
  492274:	8c420000 	lw	v0,0(v0)
  492278:	00000000 	nop
  49227c:	00431026 	xor	v0,v0,v1
  492280:	afc20008 	sw	v0,8(s8)
  492284:	8fc20028 	lw	v0,40(s8)
  492288:	00000000 	nop
  49228c:	24440004 	addiu	a0,v0,4
  492290:	93c2001f 	lbu	v0,31(s8)
  492294:	00000000 	nop
  492298:	00021080 	sll	v0,v0,0x2
  49229c:	8f83804c 	lw	v1,-32692(gp)
  4922a0:	00000000 	nop
  4922a4:	2463d394 	addiu	v1,v1,-11372
  4922a8:	00621821 	addu	v1,v1,v0
  4922ac:	8fc20020 	lw	v0,32(s8)
  4922b0:	00000000 	nop
  4922b4:	00021202 	srl	v0,v0,0x8
  4922b8:	304200ff 	andi	v0,v0,0xff
  4922bc:	00021080 	sll	v0,v0,0x2
  4922c0:	24420400 	addiu	v0,v0,1024
  4922c4:	8f81804c 	lw	at,-32692(gp)
  4922c8:	00000000 	nop
  4922cc:	2421d394 	addiu	at,at,-11372
  4922d0:	00221021 	addu	v0,at,v0
  4922d4:	8c630000 	lw	v1,0(v1)
  4922d8:	8c420000 	lw	v0,0(v0)
  4922dc:	00000000 	nop
  4922e0:	00621826 	xor	v1,v1,v0
  4922e4:	8fc20024 	lw	v0,36(s8)
  4922e8:	00000000 	nop
  4922ec:	00021402 	srl	v0,v0,0x10
  4922f0:	304200ff 	andi	v0,v0,0xff
  4922f4:	00021080 	sll	v0,v0,0x2
  4922f8:	24420800 	addiu	v0,v0,2048
  4922fc:	8f81804c 	lw	at,-32692(gp)
  492300:	00000000 	nop
  492304:	2421d394 	addiu	at,at,-11372
  492308:	00221021 	addu	v0,at,v0
  49230c:	8c420000 	lw	v0,0(v0)
  492310:	00000000 	nop
  492314:	00621826 	xor	v1,v1,v0
  492318:	8fc20018 	lw	v0,24(s8)
  49231c:	00000000 	nop
  492320:	00021602 	srl	v0,v0,0x18
  492324:	304200ff 	andi	v0,v0,0xff
  492328:	00021080 	sll	v0,v0,0x2
  49232c:	24420c00 	addiu	v0,v0,3072
  492330:	8f81804c 	lw	at,-32692(gp)
  492334:	00000000 	nop
  492338:	2421d394 	addiu	at,at,-11372
  49233c:	00221021 	addu	v0,at,v0
  492340:	8c420000 	lw	v0,0(v0)
  492344:	00000000 	nop
  492348:	00621826 	xor	v1,v1,v0
  49234c:	8c820000 	lw	v0,0(a0)
  492350:	00000000 	nop
  492354:	00431026 	xor	v0,v0,v1
  492358:	afc2000c 	sw	v0,12(s8)
  49235c:	8fc20028 	lw	v0,40(s8)
  492360:	00000000 	nop
  492364:	24440008 	addiu	a0,v0,8
  492368:	93c20023 	lbu	v0,35(s8)
  49236c:	00000000 	nop
  492370:	00021080 	sll	v0,v0,0x2
  492374:	8f83804c 	lw	v1,-32692(gp)
  492378:	00000000 	nop
  49237c:	2463d394 	addiu	v1,v1,-11372
  492380:	00621821 	addu	v1,v1,v0
  492384:	8fc20024 	lw	v0,36(s8)
  492388:	00000000 	nop
  49238c:	00021202 	srl	v0,v0,0x8
  492390:	304200ff 	andi	v0,v0,0xff
  492394:	00021080 	sll	v0,v0,0x2
  492398:	24420400 	addiu	v0,v0,1024
  49239c:	8f81804c 	lw	at,-32692(gp)
  4923a0:	00000000 	nop
  4923a4:	2421d394 	addiu	at,at,-11372
  4923a8:	00221021 	addu	v0,at,v0
  4923ac:	8c630000 	lw	v1,0(v1)
  4923b0:	8c420000 	lw	v0,0(v0)
  4923b4:	00000000 	nop
  4923b8:	00621826 	xor	v1,v1,v0
  4923bc:	8fc20018 	lw	v0,24(s8)
  4923c0:	00000000 	nop
  4923c4:	00021402 	srl	v0,v0,0x10
  4923c8:	304200ff 	andi	v0,v0,0xff
  4923cc:	00021080 	sll	v0,v0,0x2
  4923d0:	24420800 	addiu	v0,v0,2048
  4923d4:	8f81804c 	lw	at,-32692(gp)
  4923d8:	00000000 	nop
  4923dc:	2421d394 	addiu	at,at,-11372
  4923e0:	00221021 	addu	v0,at,v0
  4923e4:	8c420000 	lw	v0,0(v0)
  4923e8:	00000000 	nop
  4923ec:	00621826 	xor	v1,v1,v0
  4923f0:	8fc2001c 	lw	v0,28(s8)
  4923f4:	00000000 	nop
  4923f8:	00021602 	srl	v0,v0,0x18
  4923fc:	304200ff 	andi	v0,v0,0xff
  492400:	00021080 	sll	v0,v0,0x2
  492404:	24420c00 	addiu	v0,v0,3072
  492408:	8f81804c 	lw	at,-32692(gp)
  49240c:	00000000 	nop
  492410:	2421d394 	addiu	at,at,-11372
  492414:	00221021 	addu	v0,at,v0
  492418:	8c420000 	lw	v0,0(v0)
  49241c:	00000000 	nop
  492420:	00621826 	xor	v1,v1,v0
  492424:	8c820000 	lw	v0,0(a0)
  492428:	00000000 	nop
  49242c:	00431026 	xor	v0,v0,v1
  492430:	afc20010 	sw	v0,16(s8)
  492434:	8fc20028 	lw	v0,40(s8)
  492438:	00000000 	nop
  49243c:	2444000c 	addiu	a0,v0,12
  492440:	93c20027 	lbu	v0,39(s8)
  492444:	00000000 	nop
  492448:	00021080 	sll	v0,v0,0x2
  49244c:	8f83804c 	lw	v1,-32692(gp)
  492450:	00000000 	nop
  492454:	2463d394 	addiu	v1,v1,-11372
  492458:	00621821 	addu	v1,v1,v0
  49245c:	8fc20018 	lw	v0,24(s8)
  492460:	00000000 	nop
  492464:	00021202 	srl	v0,v0,0x8
  492468:	304200ff 	andi	v0,v0,0xff
  49246c:	00021080 	sll	v0,v0,0x2
  492470:	24420400 	addiu	v0,v0,1024
  492474:	8f81804c 	lw	at,-32692(gp)
  492478:	00000000 	nop
  49247c:	2421d394 	addiu	at,at,-11372
  492480:	00221021 	addu	v0,at,v0
  492484:	8c630000 	lw	v1,0(v1)
  492488:	8c420000 	lw	v0,0(v0)
  49248c:	00000000 	nop
  492490:	00621826 	xor	v1,v1,v0
  492494:	8fc2001c 	lw	v0,28(s8)
  492498:	00000000 	nop
  49249c:	00021402 	srl	v0,v0,0x10
  4924a0:	304200ff 	andi	v0,v0,0xff
  4924a4:	00021080 	sll	v0,v0,0x2
  4924a8:	24420800 	addiu	v0,v0,2048
  4924ac:	8f81804c 	lw	at,-32692(gp)
  4924b0:	00000000 	nop
  4924b4:	2421d394 	addiu	at,at,-11372
  4924b8:	00221021 	addu	v0,at,v0
  4924bc:	8c420000 	lw	v0,0(v0)
  4924c0:	00000000 	nop
  4924c4:	00621826 	xor	v1,v1,v0
  4924c8:	8fc20020 	lw	v0,32(s8)
  4924cc:	00000000 	nop
  4924d0:	00021602 	srl	v0,v0,0x18
  4924d4:	304200ff 	andi	v0,v0,0xff
  4924d8:	00021080 	sll	v0,v0,0x2
  4924dc:	24420c00 	addiu	v0,v0,3072
  4924e0:	8f81804c 	lw	at,-32692(gp)
  4924e4:	00000000 	nop
  4924e8:	2421d394 	addiu	at,at,-11372
  4924ec:	00221021 	addu	v0,at,v0
  4924f0:	8c420000 	lw	v0,0(v0)
  4924f4:	00000000 	nop
  4924f8:	00621826 	xor	v1,v1,v0
  4924fc:	8c820000 	lw	v0,0(a0)
  492500:	00000000 	nop
  492504:	00431026 	xor	v0,v0,v1
  492508:	afc20014 	sw	v0,20(s8)
                round(fwd_rnd,  b0, b1, kp + nc    ); kp += 2 * nc;
  49250c:	8fc20028 	lw	v0,40(s8)
  492510:	00000000 	nop
  492514:	24440010 	addiu	a0,v0,16
  492518:	93c2000b 	lbu	v0,11(s8)
  49251c:	00000000 	nop
  492520:	00021080 	sll	v0,v0,0x2
  492524:	8f83804c 	lw	v1,-32692(gp)
  492528:	00000000 	nop
  49252c:	2463d394 	addiu	v1,v1,-11372
  492530:	00621821 	addu	v1,v1,v0
  492534:	8fc2000c 	lw	v0,12(s8)
  492538:	00000000 	nop
  49253c:	00021202 	srl	v0,v0,0x8
  492540:	304200ff 	andi	v0,v0,0xff
  492544:	00021080 	sll	v0,v0,0x2
  492548:	24420400 	addiu	v0,v0,1024
  49254c:	8f81804c 	lw	at,-32692(gp)
  492550:	00000000 	nop
  492554:	2421d394 	addiu	at,at,-11372
  492558:	00221021 	addu	v0,at,v0
  49255c:	8c630000 	lw	v1,0(v1)
  492560:	8c420000 	lw	v0,0(v0)
  492564:	00000000 	nop
  492568:	00621826 	xor	v1,v1,v0
  49256c:	8fc20010 	lw	v0,16(s8)
  492570:	00000000 	nop
  492574:	00021402 	srl	v0,v0,0x10
  492578:	304200ff 	andi	v0,v0,0xff
  49257c:	00021080 	sll	v0,v0,0x2
  492580:	24420800 	addiu	v0,v0,2048
  492584:	8f81804c 	lw	at,-32692(gp)
  492588:	00000000 	nop
  49258c:	2421d394 	addiu	at,at,-11372
  492590:	00221021 	addu	v0,at,v0
  492594:	8c420000 	lw	v0,0(v0)
  492598:	00000000 	nop
  49259c:	00621826 	xor	v1,v1,v0
  4925a0:	8fc20014 	lw	v0,20(s8)
  4925a4:	00000000 	nop
  4925a8:	00021602 	srl	v0,v0,0x18
  4925ac:	304200ff 	andi	v0,v0,0xff
  4925b0:	00021080 	sll	v0,v0,0x2
  4925b4:	24420c00 	addiu	v0,v0,3072
  4925b8:	8f81804c 	lw	at,-32692(gp)
  4925bc:	00000000 	nop
  4925c0:	2421d394 	addiu	at,at,-11372
  4925c4:	00221021 	addu	v0,at,v0
  4925c8:	8c420000 	lw	v0,0(v0)
  4925cc:	00000000 	nop
  4925d0:	00621826 	xor	v1,v1,v0
  4925d4:	8c820000 	lw	v0,0(a0)
  4925d8:	00000000 	nop
  4925dc:	00431026 	xor	v0,v0,v1
  4925e0:	afc20018 	sw	v0,24(s8)
  4925e4:	8fc20028 	lw	v0,40(s8)
  4925e8:	00000000 	nop
  4925ec:	24440014 	addiu	a0,v0,20
  4925f0:	93c2000f 	lbu	v0,15(s8)
  4925f4:	00000000 	nop
  4925f8:	00021080 	sll	v0,v0,0x2
  4925fc:	8f83804c 	lw	v1,-32692(gp)
  492600:	00000000 	nop
  492604:	2463d394 	addiu	v1,v1,-11372
  492608:	00621821 	addu	v1,v1,v0
  49260c:	8fc20010 	lw	v0,16(s8)
  492610:	00000000 	nop
  492614:	00021202 	srl	v0,v0,0x8
  492618:	304200ff 	andi	v0,v0,0xff
  49261c:	00021080 	sll	v0,v0,0x2
  492620:	24420400 	addiu	v0,v0,1024
  492624:	8f81804c 	lw	at,-32692(gp)
  492628:	00000000 	nop
  49262c:	2421d394 	addiu	at,at,-11372
  492630:	00221021 	addu	v0,at,v0
  492634:	8c630000 	lw	v1,0(v1)
  492638:	8c420000 	lw	v0,0(v0)
  49263c:	00000000 	nop
  492640:	00621826 	xor	v1,v1,v0
  492644:	8fc20014 	lw	v0,20(s8)
  492648:	00000000 	nop
  49264c:	00021402 	srl	v0,v0,0x10
  492650:	304200ff 	andi	v0,v0,0xff
  492654:	00021080 	sll	v0,v0,0x2
  492658:	24420800 	addiu	v0,v0,2048
  49265c:	8f81804c 	lw	at,-32692(gp)
  492660:	00000000 	nop
  492664:	2421d394 	addiu	at,at,-11372
  492668:	00221021 	addu	v0,at,v0
  49266c:	8c420000 	lw	v0,0(v0)
  492670:	00000000 	nop
  492674:	00621826 	xor	v1,v1,v0
  492678:	8fc20008 	lw	v0,8(s8)
  49267c:	00000000 	nop
  492680:	00021602 	srl	v0,v0,0x18
  492684:	304200ff 	andi	v0,v0,0xff
  492688:	00021080 	sll	v0,v0,0x2
  49268c:	24420c00 	addiu	v0,v0,3072
  492690:	8f81804c 	lw	at,-32692(gp)
  492694:	00000000 	nop
  492698:	2421d394 	addiu	at,at,-11372
  49269c:	00221021 	addu	v0,at,v0
  4926a0:	8c420000 	lw	v0,0(v0)
  4926a4:	00000000 	nop
  4926a8:	00621826 	xor	v1,v1,v0
  4926ac:	8c820000 	lw	v0,0(a0)
  4926b0:	00000000 	nop
  4926b4:	00431026 	xor	v0,v0,v1
  4926b8:	afc2001c 	sw	v0,28(s8)
  4926bc:	8fc20028 	lw	v0,40(s8)
  4926c0:	00000000 	nop
  4926c4:	24440018 	addiu	a0,v0,24
  4926c8:	93c20013 	lbu	v0,19(s8)
  4926cc:	00000000 	nop
  4926d0:	00021080 	sll	v0,v0,0x2
  4926d4:	8f83804c 	lw	v1,-32692(gp)
  4926d8:	00000000 	nop
  4926dc:	2463d394 	addiu	v1,v1,-11372
  4926e0:	00621821 	addu	v1,v1,v0
  4926e4:	8fc20014 	lw	v0,20(s8)
  4926e8:	00000000 	nop
  4926ec:	00021202 	srl	v0,v0,0x8
  4926f0:	304200ff 	andi	v0,v0,0xff
  4926f4:	00021080 	sll	v0,v0,0x2
  4926f8:	24420400 	addiu	v0,v0,1024
  4926fc:	8f81804c 	lw	at,-32692(gp)
  492700:	00000000 	nop
  492704:	2421d394 	addiu	at,at,-11372
  492708:	00221021 	addu	v0,at,v0
  49270c:	8c630000 	lw	v1,0(v1)
  492710:	8c420000 	lw	v0,0(v0)
  492714:	00000000 	nop
  492718:	00621826 	xor	v1,v1,v0
  49271c:	8fc20008 	lw	v0,8(s8)
  492720:	00000000 	nop
  492724:	00021402 	srl	v0,v0,0x10
  492728:	304200ff 	andi	v0,v0,0xff
  49272c:	00021080 	sll	v0,v0,0x2
  492730:	24420800 	addiu	v0,v0,2048
  492734:	8f81804c 	lw	at,-32692(gp)
  492738:	00000000 	nop
  49273c:	2421d394 	addiu	at,at,-11372
  492740:	00221021 	addu	v0,at,v0
  492744:	8c420000 	lw	v0,0(v0)
  492748:	00000000 	nop
  49274c:	00621826 	xor	v1,v1,v0
  492750:	8fc2000c 	lw	v0,12(s8)
  492754:	00000000 	nop
  492758:	00021602 	srl	v0,v0,0x18
  49275c:	304200ff 	andi	v0,v0,0xff
  492760:	00021080 	sll	v0,v0,0x2
  492764:	24420c00 	addiu	v0,v0,3072
  492768:	8f81804c 	lw	at,-32692(gp)
  49276c:	00000000 	nop
  492770:	2421d394 	addiu	at,at,-11372
  492774:	00221021 	addu	v0,at,v0
  492778:	8c420000 	lw	v0,0(v0)
  49277c:	00000000 	nop
  492780:	00621826 	xor	v1,v1,v0
  492784:	8c820000 	lw	v0,0(a0)
  492788:	00000000 	nop
  49278c:	00431026 	xor	v0,v0,v1
  492790:	afc20020 	sw	v0,32(s8)
  492794:	8fc20028 	lw	v0,40(s8)
  492798:	00000000 	nop
  49279c:	2444001c 	addiu	a0,v0,28
  4927a0:	93c20017 	lbu	v0,23(s8)
  4927a4:	00000000 	nop
  4927a8:	00021080 	sll	v0,v0,0x2
  4927ac:	8f83804c 	lw	v1,-32692(gp)
  4927b0:	00000000 	nop
  4927b4:	2463d394 	addiu	v1,v1,-11372
  4927b8:	00621821 	addu	v1,v1,v0
  4927bc:	8fc20008 	lw	v0,8(s8)
  4927c0:	00000000 	nop
  4927c4:	00021202 	srl	v0,v0,0x8
  4927c8:	304200ff 	andi	v0,v0,0xff
  4927cc:	00021080 	sll	v0,v0,0x2
  4927d0:	24420400 	addiu	v0,v0,1024
  4927d4:	8f81804c 	lw	at,-32692(gp)
  4927d8:	00000000 	nop
  4927dc:	2421d394 	addiu	at,at,-11372
  4927e0:	00221021 	addu	v0,at,v0
  4927e4:	8c630000 	lw	v1,0(v1)
  4927e8:	8c420000 	lw	v0,0(v0)
  4927ec:	00000000 	nop
  4927f0:	00621826 	xor	v1,v1,v0
  4927f4:	8fc2000c 	lw	v0,12(s8)
  4927f8:	00000000 	nop
  4927fc:	00021402 	srl	v0,v0,0x10
  492800:	304200ff 	andi	v0,v0,0xff
  492804:	00021080 	sll	v0,v0,0x2
  492808:	24420800 	addiu	v0,v0,2048
  49280c:	8f81804c 	lw	at,-32692(gp)
  492810:	00000000 	nop
  492814:	2421d394 	addiu	at,at,-11372
  492818:	00221021 	addu	v0,at,v0
  49281c:	8c420000 	lw	v0,0(v0)
  492820:	00000000 	nop
  492824:	00621826 	xor	v1,v1,v0
  492828:	8fc20010 	lw	v0,16(s8)
  49282c:	00000000 	nop
  492830:	00021602 	srl	v0,v0,0x18
  492834:	304200ff 	andi	v0,v0,0xff
  492838:	00021080 	sll	v0,v0,0x2
  49283c:	24420c00 	addiu	v0,v0,3072
  492840:	8f81804c 	lw	at,-32692(gp)
  492844:	00000000 	nop
  492848:	2421d394 	addiu	at,at,-11372
  49284c:	00221021 	addu	v0,at,v0
  492850:	8c420000 	lw	v0,0(v0)
  492854:	00000000 	nop
  492858:	00621826 	xor	v1,v1,v0
  49285c:	8c820000 	lw	v0,0(a0)
  492860:	00000000 	nop
  492864:	00431026 	xor	v0,v0,v1
  492868:	afc20024 	sw	v0,36(s8)
  49286c:	8fc20028 	lw	v0,40(s8)
  492870:	00000000 	nop
  492874:	24420020 	addiu	v0,v0,32
  492878:	afc20028 	sw	v0,40(s8)
    case 12:    round(fwd_rnd,  b1, b0, kp         ); 
  49287c:	93c2001b 	lbu	v0,27(s8)
  492880:	00000000 	nop
  492884:	00021080 	sll	v0,v0,0x2
  492888:	8f83804c 	lw	v1,-32692(gp)
  49288c:	00000000 	nop
  492890:	2463d394 	addiu	v1,v1,-11372
  492894:	00621821 	addu	v1,v1,v0
  492898:	8fc2001c 	lw	v0,28(s8)
  49289c:	00000000 	nop
  4928a0:	00021202 	srl	v0,v0,0x8
  4928a4:	304200ff 	andi	v0,v0,0xff
  4928a8:	00021080 	sll	v0,v0,0x2
  4928ac:	24420400 	addiu	v0,v0,1024
  4928b0:	8f81804c 	lw	at,-32692(gp)
  4928b4:	00000000 	nop
  4928b8:	2421d394 	addiu	at,at,-11372
  4928bc:	00221021 	addu	v0,at,v0
  4928c0:	8c630000 	lw	v1,0(v1)
  4928c4:	8c420000 	lw	v0,0(v0)
  4928c8:	00000000 	nop
  4928cc:	00621826 	xor	v1,v1,v0
  4928d0:	8fc20020 	lw	v0,32(s8)
  4928d4:	00000000 	nop
  4928d8:	00021402 	srl	v0,v0,0x10
  4928dc:	304200ff 	andi	v0,v0,0xff
  4928e0:	00021080 	sll	v0,v0,0x2
  4928e4:	24420800 	addiu	v0,v0,2048
  4928e8:	8f81804c 	lw	at,-32692(gp)
  4928ec:	00000000 	nop
  4928f0:	2421d394 	addiu	at,at,-11372
  4928f4:	00221021 	addu	v0,at,v0
  4928f8:	8c420000 	lw	v0,0(v0)
  4928fc:	00000000 	nop
  492900:	00621826 	xor	v1,v1,v0
  492904:	8fc20024 	lw	v0,36(s8)
  492908:	00000000 	nop
  49290c:	00021602 	srl	v0,v0,0x18
  492910:	304200ff 	andi	v0,v0,0xff
  492914:	00021080 	sll	v0,v0,0x2
  492918:	24420c00 	addiu	v0,v0,3072
  49291c:	8f81804c 	lw	at,-32692(gp)
  492920:	00000000 	nop
  492924:	2421d394 	addiu	at,at,-11372
  492928:	00221021 	addu	v0,at,v0
  49292c:	8c420000 	lw	v0,0(v0)
  492930:	00000000 	nop
  492934:	00621826 	xor	v1,v1,v0
  492938:	8fc20028 	lw	v0,40(s8)
  49293c:	00000000 	nop
  492940:	8c420000 	lw	v0,0(v0)
  492944:	00000000 	nop
  492948:	00431026 	xor	v0,v0,v1
  49294c:	afc20008 	sw	v0,8(s8)
  492950:	8fc20028 	lw	v0,40(s8)
  492954:	00000000 	nop
  492958:	24440004 	addiu	a0,v0,4
  49295c:	93c2001f 	lbu	v0,31(s8)
  492960:	00000000 	nop
  492964:	00021080 	sll	v0,v0,0x2
  492968:	8f83804c 	lw	v1,-32692(gp)
  49296c:	00000000 	nop
  492970:	2463d394 	addiu	v1,v1,-11372
  492974:	00621821 	addu	v1,v1,v0
  492978:	8fc20020 	lw	v0,32(s8)
  49297c:	00000000 	nop
  492980:	00021202 	srl	v0,v0,0x8
  492984:	304200ff 	andi	v0,v0,0xff
  492988:	00021080 	sll	v0,v0,0x2
  49298c:	24420400 	addiu	v0,v0,1024
  492990:	8f81804c 	lw	at,-32692(gp)
  492994:	00000000 	nop
  492998:	2421d394 	addiu	at,at,-11372
  49299c:	00221021 	addu	v0,at,v0
  4929a0:	8c630000 	lw	v1,0(v1)
  4929a4:	8c420000 	lw	v0,0(v0)
  4929a8:	00000000 	nop
  4929ac:	00621826 	xor	v1,v1,v0
  4929b0:	8fc20024 	lw	v0,36(s8)
  4929b4:	00000000 	nop
  4929b8:	00021402 	srl	v0,v0,0x10
  4929bc:	304200ff 	andi	v0,v0,0xff
  4929c0:	00021080 	sll	v0,v0,0x2
  4929c4:	24420800 	addiu	v0,v0,2048
  4929c8:	8f81804c 	lw	at,-32692(gp)
  4929cc:	00000000 	nop
  4929d0:	2421d394 	addiu	at,at,-11372
  4929d4:	00221021 	addu	v0,at,v0
  4929d8:	8c420000 	lw	v0,0(v0)
  4929dc:	00000000 	nop
  4929e0:	00621826 	xor	v1,v1,v0
  4929e4:	8fc20018 	lw	v0,24(s8)
  4929e8:	00000000 	nop
  4929ec:	00021602 	srl	v0,v0,0x18
  4929f0:	304200ff 	andi	v0,v0,0xff
  4929f4:	00021080 	sll	v0,v0,0x2
  4929f8:	24420c00 	addiu	v0,v0,3072
  4929fc:	8f81804c 	lw	at,-32692(gp)
  492a00:	00000000 	nop
  492a04:	2421d394 	addiu	at,at,-11372
  492a08:	00221021 	addu	v0,at,v0
  492a0c:	8c420000 	lw	v0,0(v0)
  492a10:	00000000 	nop
  492a14:	00621826 	xor	v1,v1,v0
  492a18:	8c820000 	lw	v0,0(a0)
  492a1c:	00000000 	nop
  492a20:	00431026 	xor	v0,v0,v1
  492a24:	afc2000c 	sw	v0,12(s8)
  492a28:	8fc20028 	lw	v0,40(s8)
  492a2c:	00000000 	nop
  492a30:	24440008 	addiu	a0,v0,8
  492a34:	93c20023 	lbu	v0,35(s8)
  492a38:	00000000 	nop
  492a3c:	00021080 	sll	v0,v0,0x2
  492a40:	8f83804c 	lw	v1,-32692(gp)
  492a44:	00000000 	nop
  492a48:	2463d394 	addiu	v1,v1,-11372
  492a4c:	00621821 	addu	v1,v1,v0
  492a50:	8fc20024 	lw	v0,36(s8)
  492a54:	00000000 	nop
  492a58:	00021202 	srl	v0,v0,0x8
  492a5c:	304200ff 	andi	v0,v0,0xff
  492a60:	00021080 	sll	v0,v0,0x2
  492a64:	24420400 	addiu	v0,v0,1024
  492a68:	8f81804c 	lw	at,-32692(gp)
  492a6c:	00000000 	nop
  492a70:	2421d394 	addiu	at,at,-11372
  492a74:	00221021 	addu	v0,at,v0
  492a78:	8c630000 	lw	v1,0(v1)
  492a7c:	8c420000 	lw	v0,0(v0)
  492a80:	00000000 	nop
  492a84:	00621826 	xor	v1,v1,v0
  492a88:	8fc20018 	lw	v0,24(s8)
  492a8c:	00000000 	nop
  492a90:	00021402 	srl	v0,v0,0x10
  492a94:	304200ff 	andi	v0,v0,0xff
  492a98:	00021080 	sll	v0,v0,0x2
  492a9c:	24420800 	addiu	v0,v0,2048
  492aa0:	8f81804c 	lw	at,-32692(gp)
  492aa4:	00000000 	nop
  492aa8:	2421d394 	addiu	at,at,-11372
  492aac:	00221021 	addu	v0,at,v0
  492ab0:	8c420000 	lw	v0,0(v0)
  492ab4:	00000000 	nop
  492ab8:	00621826 	xor	v1,v1,v0
  492abc:	8fc2001c 	lw	v0,28(s8)
  492ac0:	00000000 	nop
  492ac4:	00021602 	srl	v0,v0,0x18
  492ac8:	304200ff 	andi	v0,v0,0xff
  492acc:	00021080 	sll	v0,v0,0x2
  492ad0:	24420c00 	addiu	v0,v0,3072
  492ad4:	8f81804c 	lw	at,-32692(gp)
  492ad8:	00000000 	nop
  492adc:	2421d394 	addiu	at,at,-11372
  492ae0:	00221021 	addu	v0,at,v0
  492ae4:	8c420000 	lw	v0,0(v0)
  492ae8:	00000000 	nop
  492aec:	00621826 	xor	v1,v1,v0
  492af0:	8c820000 	lw	v0,0(a0)
  492af4:	00000000 	nop
  492af8:	00431026 	xor	v0,v0,v1
  492afc:	afc20010 	sw	v0,16(s8)
  492b00:	8fc20028 	lw	v0,40(s8)
  492b04:	00000000 	nop
  492b08:	2444000c 	addiu	a0,v0,12
  492b0c:	93c20027 	lbu	v0,39(s8)
  492b10:	00000000 	nop
  492b14:	00021080 	sll	v0,v0,0x2
  492b18:	8f83804c 	lw	v1,-32692(gp)
  492b1c:	00000000 	nop
  492b20:	2463d394 	addiu	v1,v1,-11372
  492b24:	00621821 	addu	v1,v1,v0
  492b28:	8fc20018 	lw	v0,24(s8)
  492b2c:	00000000 	nop
  492b30:	00021202 	srl	v0,v0,0x8
  492b34:	304200ff 	andi	v0,v0,0xff
  492b38:	00021080 	sll	v0,v0,0x2
  492b3c:	24420400 	addiu	v0,v0,1024
  492b40:	8f81804c 	lw	at,-32692(gp)
  492b44:	00000000 	nop
  492b48:	2421d394 	addiu	at,at,-11372
  492b4c:	00221021 	addu	v0,at,v0
  492b50:	8c630000 	lw	v1,0(v1)
  492b54:	8c420000 	lw	v0,0(v0)
  492b58:	00000000 	nop
  492b5c:	00621826 	xor	v1,v1,v0
  492b60:	8fc2001c 	lw	v0,28(s8)
  492b64:	00000000 	nop
  492b68:	00021402 	srl	v0,v0,0x10
  492b6c:	304200ff 	andi	v0,v0,0xff
  492b70:	00021080 	sll	v0,v0,0x2
  492b74:	24420800 	addiu	v0,v0,2048
  492b78:	8f81804c 	lw	at,-32692(gp)
  492b7c:	00000000 	nop
  492b80:	2421d394 	addiu	at,at,-11372
  492b84:	00221021 	addu	v0,at,v0
  492b88:	8c420000 	lw	v0,0(v0)
  492b8c:	00000000 	nop
  492b90:	00621826 	xor	v1,v1,v0
  492b94:	8fc20020 	lw	v0,32(s8)
  492b98:	00000000 	nop
  492b9c:	00021602 	srl	v0,v0,0x18
  492ba0:	304200ff 	andi	v0,v0,0xff
  492ba4:	00021080 	sll	v0,v0,0x2
  492ba8:	24420c00 	addiu	v0,v0,3072
  492bac:	8f81804c 	lw	at,-32692(gp)
  492bb0:	00000000 	nop
  492bb4:	2421d394 	addiu	at,at,-11372
  492bb8:	00221021 	addu	v0,at,v0
  492bbc:	8c420000 	lw	v0,0(v0)
  492bc0:	00000000 	nop
  492bc4:	00621826 	xor	v1,v1,v0
  492bc8:	8c820000 	lw	v0,0(a0)
  492bcc:	00000000 	nop
  492bd0:	00431026 	xor	v0,v0,v1
  492bd4:	afc20014 	sw	v0,20(s8)
                round(fwd_rnd,  b0, b1, kp + nc    ); kp += 2 * nc;
  492bd8:	8fc20028 	lw	v0,40(s8)
  492bdc:	00000000 	nop
  492be0:	24440010 	addiu	a0,v0,16
  492be4:	93c2000b 	lbu	v0,11(s8)
  492be8:	00000000 	nop
  492bec:	00021080 	sll	v0,v0,0x2
  492bf0:	8f83804c 	lw	v1,-32692(gp)
  492bf4:	00000000 	nop
  492bf8:	2463d394 	addiu	v1,v1,-11372
  492bfc:	00621821 	addu	v1,v1,v0
  492c00:	8fc2000c 	lw	v0,12(s8)
  492c04:	00000000 	nop
  492c08:	00021202 	srl	v0,v0,0x8
  492c0c:	304200ff 	andi	v0,v0,0xff
  492c10:	00021080 	sll	v0,v0,0x2
  492c14:	24420400 	addiu	v0,v0,1024
  492c18:	8f81804c 	lw	at,-32692(gp)
  492c1c:	00000000 	nop
  492c20:	2421d394 	addiu	at,at,-11372
  492c24:	00221021 	addu	v0,at,v0
  492c28:	8c630000 	lw	v1,0(v1)
  492c2c:	8c420000 	lw	v0,0(v0)
  492c30:	00000000 	nop
  492c34:	00621826 	xor	v1,v1,v0
  492c38:	8fc20010 	lw	v0,16(s8)
  492c3c:	00000000 	nop
  492c40:	00021402 	srl	v0,v0,0x10
  492c44:	304200ff 	andi	v0,v0,0xff
  492c48:	00021080 	sll	v0,v0,0x2
  492c4c:	24420800 	addiu	v0,v0,2048
  492c50:	8f81804c 	lw	at,-32692(gp)
  492c54:	00000000 	nop
  492c58:	2421d394 	addiu	at,at,-11372
  492c5c:	00221021 	addu	v0,at,v0
  492c60:	8c420000 	lw	v0,0(v0)
  492c64:	00000000 	nop
  492c68:	00621826 	xor	v1,v1,v0
  492c6c:	8fc20014 	lw	v0,20(s8)
  492c70:	00000000 	nop
  492c74:	00021602 	srl	v0,v0,0x18
  492c78:	304200ff 	andi	v0,v0,0xff
  492c7c:	00021080 	sll	v0,v0,0x2
  492c80:	24420c00 	addiu	v0,v0,3072
  492c84:	8f81804c 	lw	at,-32692(gp)
  492c88:	00000000 	nop
  492c8c:	2421d394 	addiu	at,at,-11372
  492c90:	00221021 	addu	v0,at,v0
  492c94:	8c420000 	lw	v0,0(v0)
  492c98:	00000000 	nop
  492c9c:	00621826 	xor	v1,v1,v0
  492ca0:	8c820000 	lw	v0,0(a0)
  492ca4:	00000000 	nop
  492ca8:	00431026 	xor	v0,v0,v1
  492cac:	afc20018 	sw	v0,24(s8)
  492cb0:	8fc20028 	lw	v0,40(s8)
  492cb4:	00000000 	nop
  492cb8:	24440014 	addiu	a0,v0,20
  492cbc:	93c2000f 	lbu	v0,15(s8)
  492cc0:	00000000 	nop
  492cc4:	00021080 	sll	v0,v0,0x2
  492cc8:	8f83804c 	lw	v1,-32692(gp)
  492ccc:	00000000 	nop
  492cd0:	2463d394 	addiu	v1,v1,-11372
  492cd4:	00621821 	addu	v1,v1,v0
  492cd8:	8fc20010 	lw	v0,16(s8)
  492cdc:	00000000 	nop
  492ce0:	00021202 	srl	v0,v0,0x8
  492ce4:	304200ff 	andi	v0,v0,0xff
  492ce8:	00021080 	sll	v0,v0,0x2
  492cec:	24420400 	addiu	v0,v0,1024
  492cf0:	8f81804c 	lw	at,-32692(gp)
  492cf4:	00000000 	nop
  492cf8:	2421d394 	addiu	at,at,-11372
  492cfc:	00221021 	addu	v0,at,v0
  492d00:	8c630000 	lw	v1,0(v1)
  492d04:	8c420000 	lw	v0,0(v0)
  492d08:	00000000 	nop
  492d0c:	00621826 	xor	v1,v1,v0
  492d10:	8fc20014 	lw	v0,20(s8)
  492d14:	00000000 	nop
  492d18:	00021402 	srl	v0,v0,0x10
  492d1c:	304200ff 	andi	v0,v0,0xff
  492d20:	00021080 	sll	v0,v0,0x2
  492d24:	24420800 	addiu	v0,v0,2048
  492d28:	8f81804c 	lw	at,-32692(gp)
  492d2c:	00000000 	nop
  492d30:	2421d394 	addiu	at,at,-11372
  492d34:	00221021 	addu	v0,at,v0
  492d38:	8c420000 	lw	v0,0(v0)
  492d3c:	00000000 	nop
  492d40:	00621826 	xor	v1,v1,v0
  492d44:	8fc20008 	lw	v0,8(s8)
  492d48:	00000000 	nop
  492d4c:	00021602 	srl	v0,v0,0x18
  492d50:	304200ff 	andi	v0,v0,0xff
  492d54:	00021080 	sll	v0,v0,0x2
  492d58:	24420c00 	addiu	v0,v0,3072
  492d5c:	8f81804c 	lw	at,-32692(gp)
  492d60:	00000000 	nop
  492d64:	2421d394 	addiu	at,at,-11372
  492d68:	00221021 	addu	v0,at,v0
  492d6c:	8c420000 	lw	v0,0(v0)
  492d70:	00000000 	nop
  492d74:	00621826 	xor	v1,v1,v0
  492d78:	8c820000 	lw	v0,0(a0)
  492d7c:	00000000 	nop
  492d80:	00431026 	xor	v0,v0,v1
  492d84:	afc2001c 	sw	v0,28(s8)
  492d88:	8fc20028 	lw	v0,40(s8)
  492d8c:	00000000 	nop
  492d90:	24440018 	addiu	a0,v0,24
  492d94:	93c20013 	lbu	v0,19(s8)
  492d98:	00000000 	nop
  492d9c:	00021080 	sll	v0,v0,0x2
  492da0:	8f83804c 	lw	v1,-32692(gp)
  492da4:	00000000 	nop
  492da8:	2463d394 	addiu	v1,v1,-11372
  492dac:	00621821 	addu	v1,v1,v0
  492db0:	8fc20014 	lw	v0,20(s8)
  492db4:	00000000 	nop
  492db8:	00021202 	srl	v0,v0,0x8
  492dbc:	304200ff 	andi	v0,v0,0xff
  492dc0:	00021080 	sll	v0,v0,0x2
  492dc4:	24420400 	addiu	v0,v0,1024
  492dc8:	8f81804c 	lw	at,-32692(gp)
  492dcc:	00000000 	nop
  492dd0:	2421d394 	addiu	at,at,-11372
  492dd4:	00221021 	addu	v0,at,v0
  492dd8:	8c630000 	lw	v1,0(v1)
  492ddc:	8c420000 	lw	v0,0(v0)
  492de0:	00000000 	nop
  492de4:	00621826 	xor	v1,v1,v0
  492de8:	8fc20008 	lw	v0,8(s8)
  492dec:	00000000 	nop
  492df0:	00021402 	srl	v0,v0,0x10
  492df4:	304200ff 	andi	v0,v0,0xff
  492df8:	00021080 	sll	v0,v0,0x2
  492dfc:	24420800 	addiu	v0,v0,2048
  492e00:	8f81804c 	lw	at,-32692(gp)
  492e04:	00000000 	nop
  492e08:	2421d394 	addiu	at,at,-11372
  492e0c:	00221021 	addu	v0,at,v0
  492e10:	8c420000 	lw	v0,0(v0)
  492e14:	00000000 	nop
  492e18:	00621826 	xor	v1,v1,v0
  492e1c:	8fc2000c 	lw	v0,12(s8)
  492e20:	00000000 	nop
  492e24:	00021602 	srl	v0,v0,0x18
  492e28:	304200ff 	andi	v0,v0,0xff
  492e2c:	00021080 	sll	v0,v0,0x2
  492e30:	24420c00 	addiu	v0,v0,3072
  492e34:	8f81804c 	lw	at,-32692(gp)
  492e38:	00000000 	nop
  492e3c:	2421d394 	addiu	at,at,-11372
  492e40:	00221021 	addu	v0,at,v0
  492e44:	8c420000 	lw	v0,0(v0)
  492e48:	00000000 	nop
  492e4c:	00621826 	xor	v1,v1,v0
  492e50:	8c820000 	lw	v0,0(a0)
  492e54:	00000000 	nop
  492e58:	00431026 	xor	v0,v0,v1
  492e5c:	afc20020 	sw	v0,32(s8)
  492e60:	8fc20028 	lw	v0,40(s8)
  492e64:	00000000 	nop
  492e68:	2444001c 	addiu	a0,v0,28
  492e6c:	93c20017 	lbu	v0,23(s8)
  492e70:	00000000 	nop
  492e74:	00021080 	sll	v0,v0,0x2
  492e78:	8f83804c 	lw	v1,-32692(gp)
  492e7c:	00000000 	nop
  492e80:	2463d394 	addiu	v1,v1,-11372
  492e84:	00621821 	addu	v1,v1,v0
  492e88:	8fc20008 	lw	v0,8(s8)
  492e8c:	00000000 	nop
  492e90:	00021202 	srl	v0,v0,0x8
  492e94:	304200ff 	andi	v0,v0,0xff
  492e98:	00021080 	sll	v0,v0,0x2
  492e9c:	24420400 	addiu	v0,v0,1024
  492ea0:	8f81804c 	lw	at,-32692(gp)
  492ea4:	00000000 	nop
  492ea8:	2421d394 	addiu	at,at,-11372
  492eac:	00221021 	addu	v0,at,v0
  492eb0:	8c630000 	lw	v1,0(v1)
  492eb4:	8c420000 	lw	v0,0(v0)
  492eb8:	00000000 	nop
  492ebc:	00621826 	xor	v1,v1,v0
  492ec0:	8fc2000c 	lw	v0,12(s8)
  492ec4:	00000000 	nop
  492ec8:	00021402 	srl	v0,v0,0x10
  492ecc:	304200ff 	andi	v0,v0,0xff
  492ed0:	00021080 	sll	v0,v0,0x2
  492ed4:	24420800 	addiu	v0,v0,2048
  492ed8:	8f81804c 	lw	at,-32692(gp)
  492edc:	00000000 	nop
  492ee0:	2421d394 	addiu	at,at,-11372
  492ee4:	00221021 	addu	v0,at,v0
  492ee8:	8c420000 	lw	v0,0(v0)
  492eec:	00000000 	nop
  492ef0:	00621826 	xor	v1,v1,v0
  492ef4:	8fc20010 	lw	v0,16(s8)
  492ef8:	00000000 	nop
  492efc:	00021602 	srl	v0,v0,0x18
  492f00:	304200ff 	andi	v0,v0,0xff
  492f04:	00021080 	sll	v0,v0,0x2
  492f08:	24420c00 	addiu	v0,v0,3072
  492f0c:	8f81804c 	lw	at,-32692(gp)
  492f10:	00000000 	nop
  492f14:	2421d394 	addiu	at,at,-11372
  492f18:	00221021 	addu	v0,at,v0
  492f1c:	8c420000 	lw	v0,0(v0)
  492f20:	00000000 	nop
  492f24:	00621826 	xor	v1,v1,v0
  492f28:	8c820000 	lw	v0,0(a0)
  492f2c:	00000000 	nop
  492f30:	00431026 	xor	v0,v0,v1
  492f34:	afc20024 	sw	v0,36(s8)
  492f38:	8fc20028 	lw	v0,40(s8)
  492f3c:	00000000 	nop
  492f40:	24420020 	addiu	v0,v0,32
  492f44:	afc20028 	sw	v0,40(s8)
    case 10:    round(fwd_rnd,  b1, b0, kp         );             
  492f48:	93c2001b 	lbu	v0,27(s8)
  492f4c:	00000000 	nop
  492f50:	00021080 	sll	v0,v0,0x2
  492f54:	8f83804c 	lw	v1,-32692(gp)
  492f58:	00000000 	nop
  492f5c:	2463d394 	addiu	v1,v1,-11372
  492f60:	00621821 	addu	v1,v1,v0
  492f64:	8fc2001c 	lw	v0,28(s8)
  492f68:	00000000 	nop
  492f6c:	00021202 	srl	v0,v0,0x8
  492f70:	304200ff 	andi	v0,v0,0xff
  492f74:	00021080 	sll	v0,v0,0x2
  492f78:	24420400 	addiu	v0,v0,1024
  492f7c:	8f81804c 	lw	at,-32692(gp)
  492f80:	00000000 	nop
  492f84:	2421d394 	addiu	at,at,-11372
  492f88:	00221021 	addu	v0,at,v0
  492f8c:	8c630000 	lw	v1,0(v1)
  492f90:	8c420000 	lw	v0,0(v0)
  492f94:	00000000 	nop
  492f98:	00621826 	xor	v1,v1,v0
  492f9c:	8fc20020 	lw	v0,32(s8)
  492fa0:	00000000 	nop
  492fa4:	00021402 	srl	v0,v0,0x10
  492fa8:	304200ff 	andi	v0,v0,0xff
  492fac:	00021080 	sll	v0,v0,0x2
  492fb0:	24420800 	addiu	v0,v0,2048
  492fb4:	8f81804c 	lw	at,-32692(gp)
  492fb8:	00000000 	nop
  492fbc:	2421d394 	addiu	at,at,-11372
  492fc0:	00221021 	addu	v0,at,v0
  492fc4:	8c420000 	lw	v0,0(v0)
  492fc8:	00000000 	nop
  492fcc:	00621826 	xor	v1,v1,v0
  492fd0:	8fc20024 	lw	v0,36(s8)
  492fd4:	00000000 	nop
  492fd8:	00021602 	srl	v0,v0,0x18
  492fdc:	304200ff 	andi	v0,v0,0xff
  492fe0:	00021080 	sll	v0,v0,0x2
  492fe4:	24420c00 	addiu	v0,v0,3072
  492fe8:	8f81804c 	lw	at,-32692(gp)
  492fec:	00000000 	nop
  492ff0:	2421d394 	addiu	at,at,-11372
  492ff4:	00221021 	addu	v0,at,v0
  492ff8:	8c420000 	lw	v0,0(v0)
  492ffc:	00000000 	nop
  493000:	00621826 	xor	v1,v1,v0
  493004:	8fc20028 	lw	v0,40(s8)
  493008:	00000000 	nop
  49300c:	8c420000 	lw	v0,0(v0)
  493010:	00000000 	nop
  493014:	00431026 	xor	v0,v0,v1
  493018:	afc20008 	sw	v0,8(s8)
  49301c:	8fc20028 	lw	v0,40(s8)
  493020:	00000000 	nop
  493024:	24440004 	addiu	a0,v0,4
  493028:	93c2001f 	lbu	v0,31(s8)
  49302c:	00000000 	nop
  493030:	00021080 	sll	v0,v0,0x2
  493034:	8f83804c 	lw	v1,-32692(gp)
  493038:	00000000 	nop
  49303c:	2463d394 	addiu	v1,v1,-11372
  493040:	00621821 	addu	v1,v1,v0
  493044:	8fc20020 	lw	v0,32(s8)
  493048:	00000000 	nop
  49304c:	00021202 	srl	v0,v0,0x8
  493050:	304200ff 	andi	v0,v0,0xff
  493054:	00021080 	sll	v0,v0,0x2
  493058:	24420400 	addiu	v0,v0,1024
  49305c:	8f81804c 	lw	at,-32692(gp)
  493060:	00000000 	nop
  493064:	2421d394 	addiu	at,at,-11372
  493068:	00221021 	addu	v0,at,v0
  49306c:	8c630000 	lw	v1,0(v1)
  493070:	8c420000 	lw	v0,0(v0)
  493074:	00000000 	nop
  493078:	00621826 	xor	v1,v1,v0
  49307c:	8fc20024 	lw	v0,36(s8)
  493080:	00000000 	nop
  493084:	00021402 	srl	v0,v0,0x10
  493088:	304200ff 	andi	v0,v0,0xff
  49308c:	00021080 	sll	v0,v0,0x2
  493090:	24420800 	addiu	v0,v0,2048
  493094:	8f81804c 	lw	at,-32692(gp)
  493098:	00000000 	nop
  49309c:	2421d394 	addiu	at,at,-11372
  4930a0:	00221021 	addu	v0,at,v0
  4930a4:	8c420000 	lw	v0,0(v0)
  4930a8:	00000000 	nop
  4930ac:	00621826 	xor	v1,v1,v0
  4930b0:	8fc20018 	lw	v0,24(s8)
  4930b4:	00000000 	nop
  4930b8:	00021602 	srl	v0,v0,0x18
  4930bc:	304200ff 	andi	v0,v0,0xff
  4930c0:	00021080 	sll	v0,v0,0x2
  4930c4:	24420c00 	addiu	v0,v0,3072
  4930c8:	8f81804c 	lw	at,-32692(gp)
  4930cc:	00000000 	nop
  4930d0:	2421d394 	addiu	at,at,-11372
  4930d4:	00221021 	addu	v0,at,v0
  4930d8:	8c420000 	lw	v0,0(v0)
  4930dc:	00000000 	nop
  4930e0:	00621826 	xor	v1,v1,v0
  4930e4:	8c820000 	lw	v0,0(a0)
  4930e8:	00000000 	nop
  4930ec:	00431026 	xor	v0,v0,v1
  4930f0:	afc2000c 	sw	v0,12(s8)
  4930f4:	8fc20028 	lw	v0,40(s8)
  4930f8:	00000000 	nop
  4930fc:	24440008 	addiu	a0,v0,8
  493100:	93c20023 	lbu	v0,35(s8)
  493104:	00000000 	nop
  493108:	00021080 	sll	v0,v0,0x2
  49310c:	8f83804c 	lw	v1,-32692(gp)
  493110:	00000000 	nop
  493114:	2463d394 	addiu	v1,v1,-11372
  493118:	00621821 	addu	v1,v1,v0
  49311c:	8fc20024 	lw	v0,36(s8)
  493120:	00000000 	nop
  493124:	00021202 	srl	v0,v0,0x8
  493128:	304200ff 	andi	v0,v0,0xff
  49312c:	00021080 	sll	v0,v0,0x2
  493130:	24420400 	addiu	v0,v0,1024
  493134:	8f81804c 	lw	at,-32692(gp)
  493138:	00000000 	nop
  49313c:	2421d394 	addiu	at,at,-11372
  493140:	00221021 	addu	v0,at,v0
  493144:	8c630000 	lw	v1,0(v1)
  493148:	8c420000 	lw	v0,0(v0)
  49314c:	00000000 	nop
  493150:	00621826 	xor	v1,v1,v0
  493154:	8fc20018 	lw	v0,24(s8)
  493158:	00000000 	nop
  49315c:	00021402 	srl	v0,v0,0x10
  493160:	304200ff 	andi	v0,v0,0xff
  493164:	00021080 	sll	v0,v0,0x2
  493168:	24420800 	addiu	v0,v0,2048
  49316c:	8f81804c 	lw	at,-32692(gp)
  493170:	00000000 	nop
  493174:	2421d394 	addiu	at,at,-11372
  493178:	00221021 	addu	v0,at,v0
  49317c:	8c420000 	lw	v0,0(v0)
  493180:	00000000 	nop
  493184:	00621826 	xor	v1,v1,v0
  493188:	8fc2001c 	lw	v0,28(s8)
  49318c:	00000000 	nop
  493190:	00021602 	srl	v0,v0,0x18
  493194:	304200ff 	andi	v0,v0,0xff
  493198:	00021080 	sll	v0,v0,0x2
  49319c:	24420c00 	addiu	v0,v0,3072
  4931a0:	8f81804c 	lw	at,-32692(gp)
  4931a4:	00000000 	nop
  4931a8:	2421d394 	addiu	at,at,-11372
  4931ac:	00221021 	addu	v0,at,v0
  4931b0:	8c420000 	lw	v0,0(v0)
  4931b4:	00000000 	nop
  4931b8:	00621826 	xor	v1,v1,v0
  4931bc:	8c820000 	lw	v0,0(a0)
  4931c0:	00000000 	nop
  4931c4:	00431026 	xor	v0,v0,v1
  4931c8:	afc20010 	sw	v0,16(s8)
  4931cc:	8fc20028 	lw	v0,40(s8)
  4931d0:	00000000 	nop
  4931d4:	2444000c 	addiu	a0,v0,12
  4931d8:	93c20027 	lbu	v0,39(s8)
  4931dc:	00000000 	nop
  4931e0:	00021080 	sll	v0,v0,0x2
  4931e4:	8f83804c 	lw	v1,-32692(gp)
  4931e8:	00000000 	nop
  4931ec:	2463d394 	addiu	v1,v1,-11372
  4931f0:	00621821 	addu	v1,v1,v0
  4931f4:	8fc20018 	lw	v0,24(s8)
  4931f8:	00000000 	nop
  4931fc:	00021202 	srl	v0,v0,0x8
  493200:	304200ff 	andi	v0,v0,0xff
  493204:	00021080 	sll	v0,v0,0x2
  493208:	24420400 	addiu	v0,v0,1024
  49320c:	8f81804c 	lw	at,-32692(gp)
  493210:	00000000 	nop
  493214:	2421d394 	addiu	at,at,-11372
  493218:	00221021 	addu	v0,at,v0
  49321c:	8c630000 	lw	v1,0(v1)
  493220:	8c420000 	lw	v0,0(v0)
  493224:	00000000 	nop
  493228:	00621826 	xor	v1,v1,v0
  49322c:	8fc2001c 	lw	v0,28(s8)
  493230:	00000000 	nop
  493234:	00021402 	srl	v0,v0,0x10
  493238:	304200ff 	andi	v0,v0,0xff
  49323c:	00021080 	sll	v0,v0,0x2
  493240:	24420800 	addiu	v0,v0,2048
  493244:	8f81804c 	lw	at,-32692(gp)
  493248:	00000000 	nop
  49324c:	2421d394 	addiu	at,at,-11372
  493250:	00221021 	addu	v0,at,v0
  493254:	8c420000 	lw	v0,0(v0)
  493258:	00000000 	nop
  49325c:	00621826 	xor	v1,v1,v0
  493260:	8fc20020 	lw	v0,32(s8)
  493264:	00000000 	nop
  493268:	00021602 	srl	v0,v0,0x18
  49326c:	304200ff 	andi	v0,v0,0xff
  493270:	00021080 	sll	v0,v0,0x2
  493274:	24420c00 	addiu	v0,v0,3072
  493278:	8f81804c 	lw	at,-32692(gp)
  49327c:	00000000 	nop
  493280:	2421d394 	addiu	at,at,-11372
  493284:	00221021 	addu	v0,at,v0
  493288:	8c420000 	lw	v0,0(v0)
  49328c:	00000000 	nop
  493290:	00621826 	xor	v1,v1,v0
  493294:	8c820000 	lw	v0,0(a0)
  493298:	00000000 	nop
  49329c:	00431026 	xor	v0,v0,v1
  4932a0:	afc20014 	sw	v0,20(s8)
                round(fwd_rnd,  b0, b1, kp +     nc);
  4932a4:	8fc20028 	lw	v0,40(s8)
  4932a8:	00000000 	nop
  4932ac:	24440010 	addiu	a0,v0,16
  4932b0:	93c2000b 	lbu	v0,11(s8)
  4932b4:	00000000 	nop
  4932b8:	00021080 	sll	v0,v0,0x2
  4932bc:	8f83804c 	lw	v1,-32692(gp)
  4932c0:	00000000 	nop
  4932c4:	2463d394 	addiu	v1,v1,-11372
  4932c8:	00621821 	addu	v1,v1,v0
  4932cc:	8fc2000c 	lw	v0,12(s8)
  4932d0:	00000000 	nop
  4932d4:	00021202 	srl	v0,v0,0x8
  4932d8:	304200ff 	andi	v0,v0,0xff
  4932dc:	00021080 	sll	v0,v0,0x2
  4932e0:	24420400 	addiu	v0,v0,1024
  4932e4:	8f81804c 	lw	at,-32692(gp)
  4932e8:	00000000 	nop
  4932ec:	2421d394 	addiu	at,at,-11372
  4932f0:	00221021 	addu	v0,at,v0
  4932f4:	8c630000 	lw	v1,0(v1)
  4932f8:	8c420000 	lw	v0,0(v0)
  4932fc:	00000000 	nop
  493300:	00621826 	xor	v1,v1,v0
  493304:	8fc20010 	lw	v0,16(s8)
  493308:	00000000 	nop
  49330c:	00021402 	srl	v0,v0,0x10
  493310:	304200ff 	andi	v0,v0,0xff
  493314:	00021080 	sll	v0,v0,0x2
  493318:	24420800 	addiu	v0,v0,2048
  49331c:	8f81804c 	lw	at,-32692(gp)
  493320:	00000000 	nop
  493324:	2421d394 	addiu	at,at,-11372
  493328:	00221021 	addu	v0,at,v0
  49332c:	8c420000 	lw	v0,0(v0)
  493330:	00000000 	nop
  493334:	00621826 	xor	v1,v1,v0
  493338:	8fc20014 	lw	v0,20(s8)
  49333c:	00000000 	nop
  493340:	00021602 	srl	v0,v0,0x18
  493344:	304200ff 	andi	v0,v0,0xff
  493348:	00021080 	sll	v0,v0,0x2
  49334c:	24420c00 	addiu	v0,v0,3072
  493350:	8f81804c 	lw	at,-32692(gp)
  493354:	00000000 	nop
  493358:	2421d394 	addiu	at,at,-11372
  49335c:	00221021 	addu	v0,at,v0
  493360:	8c420000 	lw	v0,0(v0)
  493364:	00000000 	nop
  493368:	00621826 	xor	v1,v1,v0
  49336c:	8c820000 	lw	v0,0(a0)
  493370:	00000000 	nop
  493374:	00431026 	xor	v0,v0,v1
  493378:	afc20018 	sw	v0,24(s8)
  49337c:	8fc20028 	lw	v0,40(s8)
  493380:	00000000 	nop
  493384:	24440014 	addiu	a0,v0,20
  493388:	93c2000f 	lbu	v0,15(s8)
  49338c:	00000000 	nop
  493390:	00021080 	sll	v0,v0,0x2
  493394:	8f83804c 	lw	v1,-32692(gp)
  493398:	00000000 	nop
  49339c:	2463d394 	addiu	v1,v1,-11372
  4933a0:	00621821 	addu	v1,v1,v0
  4933a4:	8fc20010 	lw	v0,16(s8)
  4933a8:	00000000 	nop
  4933ac:	00021202 	srl	v0,v0,0x8
  4933b0:	304200ff 	andi	v0,v0,0xff
  4933b4:	00021080 	sll	v0,v0,0x2
  4933b8:	24420400 	addiu	v0,v0,1024
  4933bc:	8f81804c 	lw	at,-32692(gp)
  4933c0:	00000000 	nop
  4933c4:	2421d394 	addiu	at,at,-11372
  4933c8:	00221021 	addu	v0,at,v0
  4933cc:	8c630000 	lw	v1,0(v1)
  4933d0:	8c420000 	lw	v0,0(v0)
  4933d4:	00000000 	nop
  4933d8:	00621826 	xor	v1,v1,v0
  4933dc:	8fc20014 	lw	v0,20(s8)
  4933e0:	00000000 	nop
  4933e4:	00021402 	srl	v0,v0,0x10
  4933e8:	304200ff 	andi	v0,v0,0xff
  4933ec:	00021080 	sll	v0,v0,0x2
  4933f0:	24420800 	addiu	v0,v0,2048
  4933f4:	8f81804c 	lw	at,-32692(gp)
  4933f8:	00000000 	nop
  4933fc:	2421d394 	addiu	at,at,-11372
  493400:	00221021 	addu	v0,at,v0
  493404:	8c420000 	lw	v0,0(v0)
  493408:	00000000 	nop
  49340c:	00621826 	xor	v1,v1,v0
  493410:	8fc20008 	lw	v0,8(s8)
  493414:	00000000 	nop
  493418:	00021602 	srl	v0,v0,0x18
  49341c:	304200ff 	andi	v0,v0,0xff
  493420:	00021080 	sll	v0,v0,0x2
  493424:	24420c00 	addiu	v0,v0,3072
  493428:	8f81804c 	lw	at,-32692(gp)
  49342c:	00000000 	nop
  493430:	2421d394 	addiu	at,at,-11372
  493434:	00221021 	addu	v0,at,v0
  493438:	8c420000 	lw	v0,0(v0)
  49343c:	00000000 	nop
  493440:	00621826 	xor	v1,v1,v0
  493444:	8c820000 	lw	v0,0(a0)
  493448:	00000000 	nop
  49344c:	00431026 	xor	v0,v0,v1
  493450:	afc2001c 	sw	v0,28(s8)
  493454:	8fc20028 	lw	v0,40(s8)
  493458:	00000000 	nop
  49345c:	24440018 	addiu	a0,v0,24
  493460:	93c20013 	lbu	v0,19(s8)
  493464:	00000000 	nop
  493468:	00021080 	sll	v0,v0,0x2
  49346c:	8f83804c 	lw	v1,-32692(gp)
  493470:	00000000 	nop
  493474:	2463d394 	addiu	v1,v1,-11372
  493478:	00621821 	addu	v1,v1,v0
  49347c:	8fc20014 	lw	v0,20(s8)
  493480:	00000000 	nop
  493484:	00021202 	srl	v0,v0,0x8
  493488:	304200ff 	andi	v0,v0,0xff
  49348c:	00021080 	sll	v0,v0,0x2
  493490:	24420400 	addiu	v0,v0,1024
  493494:	8f81804c 	lw	at,-32692(gp)
  493498:	00000000 	nop
  49349c:	2421d394 	addiu	at,at,-11372
  4934a0:	00221021 	addu	v0,at,v0
  4934a4:	8c630000 	lw	v1,0(v1)
  4934a8:	8c420000 	lw	v0,0(v0)
  4934ac:	00000000 	nop
  4934b0:	00621826 	xor	v1,v1,v0
  4934b4:	8fc20008 	lw	v0,8(s8)
  4934b8:	00000000 	nop
  4934bc:	00021402 	srl	v0,v0,0x10
  4934c0:	304200ff 	andi	v0,v0,0xff
  4934c4:	00021080 	sll	v0,v0,0x2
  4934c8:	24420800 	addiu	v0,v0,2048
  4934cc:	8f81804c 	lw	at,-32692(gp)
  4934d0:	00000000 	nop
  4934d4:	2421d394 	addiu	at,at,-11372
  4934d8:	00221021 	addu	v0,at,v0
  4934dc:	8c420000 	lw	v0,0(v0)
  4934e0:	00000000 	nop
  4934e4:	00621826 	xor	v1,v1,v0
  4934e8:	8fc2000c 	lw	v0,12(s8)
  4934ec:	00000000 	nop
  4934f0:	00021602 	srl	v0,v0,0x18
  4934f4:	304200ff 	andi	v0,v0,0xff
  4934f8:	00021080 	sll	v0,v0,0x2
  4934fc:	24420c00 	addiu	v0,v0,3072
  493500:	8f81804c 	lw	at,-32692(gp)
  493504:	00000000 	nop
  493508:	2421d394 	addiu	at,at,-11372
  49350c:	00221021 	addu	v0,at,v0
  493510:	8c420000 	lw	v0,0(v0)
  493514:	00000000 	nop
  493518:	00621826 	xor	v1,v1,v0
  49351c:	8c820000 	lw	v0,0(a0)
  493520:	00000000 	nop
  493524:	00431026 	xor	v0,v0,v1
  493528:	afc20020 	sw	v0,32(s8)
  49352c:	8fc20028 	lw	v0,40(s8)
  493530:	00000000 	nop
  493534:	2444001c 	addiu	a0,v0,28
  493538:	93c20017 	lbu	v0,23(s8)
  49353c:	00000000 	nop
  493540:	00021080 	sll	v0,v0,0x2
  493544:	8f83804c 	lw	v1,-32692(gp)
  493548:	00000000 	nop
  49354c:	2463d394 	addiu	v1,v1,-11372
  493550:	00621821 	addu	v1,v1,v0
  493554:	8fc20008 	lw	v0,8(s8)
  493558:	00000000 	nop
  49355c:	00021202 	srl	v0,v0,0x8
  493560:	304200ff 	andi	v0,v0,0xff
  493564:	00021080 	sll	v0,v0,0x2
  493568:	24420400 	addiu	v0,v0,1024
  49356c:	8f81804c 	lw	at,-32692(gp)
  493570:	00000000 	nop
  493574:	2421d394 	addiu	at,at,-11372
  493578:	00221021 	addu	v0,at,v0
  49357c:	8c630000 	lw	v1,0(v1)
  493580:	8c420000 	lw	v0,0(v0)
  493584:	00000000 	nop
  493588:	00621826 	xor	v1,v1,v0
  49358c:	8fc2000c 	lw	v0,12(s8)
  493590:	00000000 	nop
  493594:	00021402 	srl	v0,v0,0x10
  493598:	304200ff 	andi	v0,v0,0xff
  49359c:	00021080 	sll	v0,v0,0x2
  4935a0:	24420800 	addiu	v0,v0,2048
  4935a4:	8f81804c 	lw	at,-32692(gp)
  4935a8:	00000000 	nop
  4935ac:	2421d394 	addiu	at,at,-11372
  4935b0:	00221021 	addu	v0,at,v0
  4935b4:	8c420000 	lw	v0,0(v0)
  4935b8:	00000000 	nop
  4935bc:	00621826 	xor	v1,v1,v0
  4935c0:	8fc20010 	lw	v0,16(s8)
  4935c4:	00000000 	nop
  4935c8:	00021602 	srl	v0,v0,0x18
  4935cc:	304200ff 	andi	v0,v0,0xff
  4935d0:	00021080 	sll	v0,v0,0x2
  4935d4:	24420c00 	addiu	v0,v0,3072
  4935d8:	8f81804c 	lw	at,-32692(gp)
  4935dc:	00000000 	nop
  4935e0:	2421d394 	addiu	at,at,-11372
  4935e4:	00221021 	addu	v0,at,v0
  4935e8:	8c420000 	lw	v0,0(v0)
  4935ec:	00000000 	nop
  4935f0:	00621826 	xor	v1,v1,v0
  4935f4:	8c820000 	lw	v0,0(a0)
  4935f8:	00000000 	nop
  4935fc:	00431026 	xor	v0,v0,v1
  493600:	afc20024 	sw	v0,36(s8)
                round(fwd_rnd,  b1, b0, kp + 2 * nc); 
  493604:	8fc20028 	lw	v0,40(s8)
  493608:	00000000 	nop
  49360c:	24440020 	addiu	a0,v0,32
  493610:	93c2001b 	lbu	v0,27(s8)
  493614:	00000000 	nop
  493618:	00021080 	sll	v0,v0,0x2
  49361c:	8f83804c 	lw	v1,-32692(gp)
  493620:	00000000 	nop
  493624:	2463d394 	addiu	v1,v1,-11372
  493628:	00621821 	addu	v1,v1,v0
  49362c:	8fc2001c 	lw	v0,28(s8)
  493630:	00000000 	nop
  493634:	00021202 	srl	v0,v0,0x8
  493638:	304200ff 	andi	v0,v0,0xff
  49363c:	00021080 	sll	v0,v0,0x2
  493640:	24420400 	addiu	v0,v0,1024
  493644:	8f81804c 	lw	at,-32692(gp)
  493648:	00000000 	nop
  49364c:	2421d394 	addiu	at,at,-11372
  493650:	00221021 	addu	v0,at,v0
  493654:	8c630000 	lw	v1,0(v1)
  493658:	8c420000 	lw	v0,0(v0)
  49365c:	00000000 	nop
  493660:	00621826 	xor	v1,v1,v0
  493664:	8fc20020 	lw	v0,32(s8)
  493668:	00000000 	nop
  49366c:	00021402 	srl	v0,v0,0x10
  493670:	304200ff 	andi	v0,v0,0xff
  493674:	00021080 	sll	v0,v0,0x2
  493678:	24420800 	addiu	v0,v0,2048
  49367c:	8f81804c 	lw	at,-32692(gp)
  493680:	00000000 	nop
  493684:	2421d394 	addiu	at,at,-11372
  493688:	00221021 	addu	v0,at,v0
  49368c:	8c420000 	lw	v0,0(v0)
  493690:	00000000 	nop
  493694:	00621826 	xor	v1,v1,v0
  493698:	8fc20024 	lw	v0,36(s8)
  49369c:	00000000 	nop
  4936a0:	00021602 	srl	v0,v0,0x18
  4936a4:	304200ff 	andi	v0,v0,0xff
  4936a8:	00021080 	sll	v0,v0,0x2
  4936ac:	24420c00 	addiu	v0,v0,3072
  4936b0:	8f81804c 	lw	at,-32692(gp)
  4936b4:	00000000 	nop
  4936b8:	2421d394 	addiu	at,at,-11372
  4936bc:	00221021 	addu	v0,at,v0
  4936c0:	8c420000 	lw	v0,0(v0)
  4936c4:	00000000 	nop
  4936c8:	00621826 	xor	v1,v1,v0
  4936cc:	8c820000 	lw	v0,0(a0)
  4936d0:	00000000 	nop
  4936d4:	00431026 	xor	v0,v0,v1
  4936d8:	afc20008 	sw	v0,8(s8)
  4936dc:	8fc20028 	lw	v0,40(s8)
  4936e0:	00000000 	nop
  4936e4:	24440024 	addiu	a0,v0,36
  4936e8:	93c2001f 	lbu	v0,31(s8)
  4936ec:	00000000 	nop
  4936f0:	00021080 	sll	v0,v0,0x2
  4936f4:	8f83804c 	lw	v1,-32692(gp)
  4936f8:	00000000 	nop
  4936fc:	2463d394 	addiu	v1,v1,-11372
  493700:	00621821 	addu	v1,v1,v0
  493704:	8fc20020 	lw	v0,32(s8)
  493708:	00000000 	nop
  49370c:	00021202 	srl	v0,v0,0x8
  493710:	304200ff 	andi	v0,v0,0xff
  493714:	00021080 	sll	v0,v0,0x2
  493718:	24420400 	addiu	v0,v0,1024
  49371c:	8f81804c 	lw	at,-32692(gp)
  493720:	00000000 	nop
  493724:	2421d394 	addiu	at,at,-11372
  493728:	00221021 	addu	v0,at,v0
  49372c:	8c630000 	lw	v1,0(v1)
  493730:	8c420000 	lw	v0,0(v0)
  493734:	00000000 	nop
  493738:	00621826 	xor	v1,v1,v0
  49373c:	8fc20024 	lw	v0,36(s8)
  493740:	00000000 	nop
  493744:	00021402 	srl	v0,v0,0x10
  493748:	304200ff 	andi	v0,v0,0xff
  49374c:	00021080 	sll	v0,v0,0x2
  493750:	24420800 	addiu	v0,v0,2048
  493754:	8f81804c 	lw	at,-32692(gp)
  493758:	00000000 	nop
  49375c:	2421d394 	addiu	at,at,-11372
  493760:	00221021 	addu	v0,at,v0
  493764:	8c420000 	lw	v0,0(v0)
  493768:	00000000 	nop
  49376c:	00621826 	xor	v1,v1,v0
  493770:	8fc20018 	lw	v0,24(s8)
  493774:	00000000 	nop
  493778:	00021602 	srl	v0,v0,0x18
  49377c:	304200ff 	andi	v0,v0,0xff
  493780:	00021080 	sll	v0,v0,0x2
  493784:	24420c00 	addiu	v0,v0,3072
  493788:	8f81804c 	lw	at,-32692(gp)
  49378c:	00000000 	nop
  493790:	2421d394 	addiu	at,at,-11372
  493794:	00221021 	addu	v0,at,v0
  493798:	8c420000 	lw	v0,0(v0)
  49379c:	00000000 	nop
  4937a0:	00621826 	xor	v1,v1,v0
  4937a4:	8c820000 	lw	v0,0(a0)
  4937a8:	00000000 	nop
  4937ac:	00431026 	xor	v0,v0,v1
  4937b0:	afc2000c 	sw	v0,12(s8)
  4937b4:	8fc20028 	lw	v0,40(s8)
  4937b8:	00000000 	nop
  4937bc:	24440028 	addiu	a0,v0,40
  4937c0:	93c20023 	lbu	v0,35(s8)
  4937c4:	00000000 	nop
  4937c8:	00021080 	sll	v0,v0,0x2
  4937cc:	8f83804c 	lw	v1,-32692(gp)
  4937d0:	00000000 	nop
  4937d4:	2463d394 	addiu	v1,v1,-11372
  4937d8:	00621821 	addu	v1,v1,v0
  4937dc:	8fc20024 	lw	v0,36(s8)
  4937e0:	00000000 	nop
  4937e4:	00021202 	srl	v0,v0,0x8
  4937e8:	304200ff 	andi	v0,v0,0xff
  4937ec:	00021080 	sll	v0,v0,0x2
  4937f0:	24420400 	addiu	v0,v0,1024
  4937f4:	8f81804c 	lw	at,-32692(gp)
  4937f8:	00000000 	nop
  4937fc:	2421d394 	addiu	at,at,-11372
  493800:	00221021 	addu	v0,at,v0
  493804:	8c630000 	lw	v1,0(v1)
  493808:	8c420000 	lw	v0,0(v0)
  49380c:	00000000 	nop
  493810:	00621826 	xor	v1,v1,v0
  493814:	8fc20018 	lw	v0,24(s8)
  493818:	00000000 	nop
  49381c:	00021402 	srl	v0,v0,0x10
  493820:	304200ff 	andi	v0,v0,0xff
  493824:	00021080 	sll	v0,v0,0x2
  493828:	24420800 	addiu	v0,v0,2048
  49382c:	8f81804c 	lw	at,-32692(gp)
  493830:	00000000 	nop
  493834:	2421d394 	addiu	at,at,-11372
  493838:	00221021 	addu	v0,at,v0
  49383c:	8c420000 	lw	v0,0(v0)
  493840:	00000000 	nop
  493844:	00621826 	xor	v1,v1,v0
  493848:	8fc2001c 	lw	v0,28(s8)
  49384c:	00000000 	nop
  493850:	00021602 	srl	v0,v0,0x18
  493854:	304200ff 	andi	v0,v0,0xff
  493858:	00021080 	sll	v0,v0,0x2
  49385c:	24420c00 	addiu	v0,v0,3072
  493860:	8f81804c 	lw	at,-32692(gp)
  493864:	00000000 	nop
  493868:	2421d394 	addiu	at,at,-11372
  49386c:	00221021 	addu	v0,at,v0
  493870:	8c420000 	lw	v0,0(v0)
  493874:	00000000 	nop
  493878:	00621826 	xor	v1,v1,v0
  49387c:	8c820000 	lw	v0,0(a0)
  493880:	00000000 	nop
  493884:	00431026 	xor	v0,v0,v1
  493888:	afc20010 	sw	v0,16(s8)
  49388c:	8fc20028 	lw	v0,40(s8)
  493890:	00000000 	nop
  493894:	2444002c 	addiu	a0,v0,44
  493898:	93c20027 	lbu	v0,39(s8)
  49389c:	00000000 	nop
  4938a0:	00021080 	sll	v0,v0,0x2
  4938a4:	8f83804c 	lw	v1,-32692(gp)
  4938a8:	00000000 	nop
  4938ac:	2463d394 	addiu	v1,v1,-11372
  4938b0:	00621821 	addu	v1,v1,v0
  4938b4:	8fc20018 	lw	v0,24(s8)
  4938b8:	00000000 	nop
  4938bc:	00021202 	srl	v0,v0,0x8
  4938c0:	304200ff 	andi	v0,v0,0xff
  4938c4:	00021080 	sll	v0,v0,0x2
  4938c8:	24420400 	addiu	v0,v0,1024
  4938cc:	8f81804c 	lw	at,-32692(gp)
  4938d0:	00000000 	nop
  4938d4:	2421d394 	addiu	at,at,-11372
  4938d8:	00221021 	addu	v0,at,v0
  4938dc:	8c630000 	lw	v1,0(v1)
  4938e0:	8c420000 	lw	v0,0(v0)
  4938e4:	00000000 	nop
  4938e8:	00621826 	xor	v1,v1,v0
  4938ec:	8fc2001c 	lw	v0,28(s8)
  4938f0:	00000000 	nop
  4938f4:	00021402 	srl	v0,v0,0x10
  4938f8:	304200ff 	andi	v0,v0,0xff
  4938fc:	00021080 	sll	v0,v0,0x2
  493900:	24420800 	addiu	v0,v0,2048
  493904:	8f81804c 	lw	at,-32692(gp)
  493908:	00000000 	nop
  49390c:	2421d394 	addiu	at,at,-11372
  493910:	00221021 	addu	v0,at,v0
  493914:	8c420000 	lw	v0,0(v0)
  493918:	00000000 	nop
  49391c:	00621826 	xor	v1,v1,v0
  493920:	8fc20020 	lw	v0,32(s8)
  493924:	00000000 	nop
  493928:	00021602 	srl	v0,v0,0x18
  49392c:	304200ff 	andi	v0,v0,0xff
  493930:	00021080 	sll	v0,v0,0x2
  493934:	24420c00 	addiu	v0,v0,3072
  493938:	8f81804c 	lw	at,-32692(gp)
  49393c:	00000000 	nop
  493940:	2421d394 	addiu	at,at,-11372
  493944:	00221021 	addu	v0,at,v0
  493948:	8c420000 	lw	v0,0(v0)
  49394c:	00000000 	nop
  493950:	00621826 	xor	v1,v1,v0
  493954:	8c820000 	lw	v0,0(a0)
  493958:	00000000 	nop
  49395c:	00431026 	xor	v0,v0,v1
  493960:	afc20014 	sw	v0,20(s8)
                round(fwd_rnd,  b0, b1, kp + 3 * nc);
  493964:	8fc20028 	lw	v0,40(s8)
  493968:	00000000 	nop
  49396c:	24440030 	addiu	a0,v0,48
  493970:	93c2000b 	lbu	v0,11(s8)
  493974:	00000000 	nop
  493978:	00021080 	sll	v0,v0,0x2
  49397c:	8f83804c 	lw	v1,-32692(gp)
  493980:	00000000 	nop
  493984:	2463d394 	addiu	v1,v1,-11372
  493988:	00621821 	addu	v1,v1,v0
  49398c:	8fc2000c 	lw	v0,12(s8)
  493990:	00000000 	nop
  493994:	00021202 	srl	v0,v0,0x8
  493998:	304200ff 	andi	v0,v0,0xff
  49399c:	00021080 	sll	v0,v0,0x2
  4939a0:	24420400 	addiu	v0,v0,1024
  4939a4:	8f81804c 	lw	at,-32692(gp)
  4939a8:	00000000 	nop
  4939ac:	2421d394 	addiu	at,at,-11372
  4939b0:	00221021 	addu	v0,at,v0
  4939b4:	8c630000 	lw	v1,0(v1)
  4939b8:	8c420000 	lw	v0,0(v0)
  4939bc:	00000000 	nop
  4939c0:	00621826 	xor	v1,v1,v0
  4939c4:	8fc20010 	lw	v0,16(s8)
  4939c8:	00000000 	nop
  4939cc:	00021402 	srl	v0,v0,0x10
  4939d0:	304200ff 	andi	v0,v0,0xff
  4939d4:	00021080 	sll	v0,v0,0x2
  4939d8:	24420800 	addiu	v0,v0,2048
  4939dc:	8f81804c 	lw	at,-32692(gp)
  4939e0:	00000000 	nop
  4939e4:	2421d394 	addiu	at,at,-11372
  4939e8:	00221021 	addu	v0,at,v0
  4939ec:	8c420000 	lw	v0,0(v0)
  4939f0:	00000000 	nop
  4939f4:	00621826 	xor	v1,v1,v0
  4939f8:	8fc20014 	lw	v0,20(s8)
  4939fc:	00000000 	nop
  493a00:	00021602 	srl	v0,v0,0x18
  493a04:	304200ff 	andi	v0,v0,0xff
  493a08:	00021080 	sll	v0,v0,0x2
  493a0c:	24420c00 	addiu	v0,v0,3072
  493a10:	8f81804c 	lw	at,-32692(gp)
  493a14:	00000000 	nop
  493a18:	2421d394 	addiu	at,at,-11372
  493a1c:	00221021 	addu	v0,at,v0
  493a20:	8c420000 	lw	v0,0(v0)
  493a24:	00000000 	nop
  493a28:	00621826 	xor	v1,v1,v0
  493a2c:	8c820000 	lw	v0,0(a0)
  493a30:	00000000 	nop
  493a34:	00431026 	xor	v0,v0,v1
  493a38:	afc20018 	sw	v0,24(s8)
  493a3c:	8fc20028 	lw	v0,40(s8)
  493a40:	00000000 	nop
  493a44:	24440034 	addiu	a0,v0,52
  493a48:	93c2000f 	lbu	v0,15(s8)
  493a4c:	00000000 	nop
  493a50:	00021080 	sll	v0,v0,0x2
  493a54:	8f83804c 	lw	v1,-32692(gp)
  493a58:	00000000 	nop
  493a5c:	2463d394 	addiu	v1,v1,-11372
  493a60:	00621821 	addu	v1,v1,v0
  493a64:	8fc20010 	lw	v0,16(s8)
  493a68:	00000000 	nop
  493a6c:	00021202 	srl	v0,v0,0x8
  493a70:	304200ff 	andi	v0,v0,0xff
  493a74:	00021080 	sll	v0,v0,0x2
  493a78:	24420400 	addiu	v0,v0,1024
  493a7c:	8f81804c 	lw	at,-32692(gp)
  493a80:	00000000 	nop
  493a84:	2421d394 	addiu	at,at,-11372
  493a88:	00221021 	addu	v0,at,v0
  493a8c:	8c630000 	lw	v1,0(v1)
  493a90:	8c420000 	lw	v0,0(v0)
  493a94:	00000000 	nop
  493a98:	00621826 	xor	v1,v1,v0
  493a9c:	8fc20014 	lw	v0,20(s8)
  493aa0:	00000000 	nop
  493aa4:	00021402 	srl	v0,v0,0x10
  493aa8:	304200ff 	andi	v0,v0,0xff
  493aac:	00021080 	sll	v0,v0,0x2
  493ab0:	24420800 	addiu	v0,v0,2048
  493ab4:	8f81804c 	lw	at,-32692(gp)
  493ab8:	00000000 	nop
  493abc:	2421d394 	addiu	at,at,-11372
  493ac0:	00221021 	addu	v0,at,v0
  493ac4:	8c420000 	lw	v0,0(v0)
  493ac8:	00000000 	nop
  493acc:	00621826 	xor	v1,v1,v0
  493ad0:	8fc20008 	lw	v0,8(s8)
  493ad4:	00000000 	nop
  493ad8:	00021602 	srl	v0,v0,0x18
  493adc:	304200ff 	andi	v0,v0,0xff
  493ae0:	00021080 	sll	v0,v0,0x2
  493ae4:	24420c00 	addiu	v0,v0,3072
  493ae8:	8f81804c 	lw	at,-32692(gp)
  493aec:	00000000 	nop
  493af0:	2421d394 	addiu	at,at,-11372
  493af4:	00221021 	addu	v0,at,v0
  493af8:	8c420000 	lw	v0,0(v0)
  493afc:	00000000 	nop
  493b00:	00621826 	xor	v1,v1,v0
  493b04:	8c820000 	lw	v0,0(a0)
  493b08:	00000000 	nop
  493b0c:	00431026 	xor	v0,v0,v1
  493b10:	afc2001c 	sw	v0,28(s8)
  493b14:	8fc20028 	lw	v0,40(s8)
  493b18:	00000000 	nop
  493b1c:	24440038 	addiu	a0,v0,56
  493b20:	93c20013 	lbu	v0,19(s8)
  493b24:	00000000 	nop
  493b28:	00021080 	sll	v0,v0,0x2
  493b2c:	8f83804c 	lw	v1,-32692(gp)
  493b30:	00000000 	nop
  493b34:	2463d394 	addiu	v1,v1,-11372
  493b38:	00621821 	addu	v1,v1,v0
  493b3c:	8fc20014 	lw	v0,20(s8)
  493b40:	00000000 	nop
  493b44:	00021202 	srl	v0,v0,0x8
  493b48:	304200ff 	andi	v0,v0,0xff
  493b4c:	00021080 	sll	v0,v0,0x2
  493b50:	24420400 	addiu	v0,v0,1024
  493b54:	8f81804c 	lw	at,-32692(gp)
  493b58:	00000000 	nop
  493b5c:	2421d394 	addiu	at,at,-11372
  493b60:	00221021 	addu	v0,at,v0
  493b64:	8c630000 	lw	v1,0(v1)
  493b68:	8c420000 	lw	v0,0(v0)
  493b6c:	00000000 	nop
  493b70:	00621826 	xor	v1,v1,v0
  493b74:	8fc20008 	lw	v0,8(s8)
  493b78:	00000000 	nop
  493b7c:	00021402 	srl	v0,v0,0x10
  493b80:	304200ff 	andi	v0,v0,0xff
  493b84:	00021080 	sll	v0,v0,0x2
  493b88:	24420800 	addiu	v0,v0,2048
  493b8c:	8f81804c 	lw	at,-32692(gp)
  493b90:	00000000 	nop
  493b94:	2421d394 	addiu	at,at,-11372
  493b98:	00221021 	addu	v0,at,v0
  493b9c:	8c420000 	lw	v0,0(v0)
  493ba0:	00000000 	nop
  493ba4:	00621826 	xor	v1,v1,v0
  493ba8:	8fc2000c 	lw	v0,12(s8)
  493bac:	00000000 	nop
  493bb0:	00021602 	srl	v0,v0,0x18
  493bb4:	304200ff 	andi	v0,v0,0xff
  493bb8:	00021080 	sll	v0,v0,0x2
  493bbc:	24420c00 	addiu	v0,v0,3072
  493bc0:	8f81804c 	lw	at,-32692(gp)
  493bc4:	00000000 	nop
  493bc8:	2421d394 	addiu	at,at,-11372
  493bcc:	00221021 	addu	v0,at,v0
  493bd0:	8c420000 	lw	v0,0(v0)
  493bd4:	00000000 	nop
  493bd8:	00621826 	xor	v1,v1,v0
  493bdc:	8c820000 	lw	v0,0(a0)
  493be0:	00000000 	nop
  493be4:	00431026 	xor	v0,v0,v1
  493be8:	afc20020 	sw	v0,32(s8)
  493bec:	8fc20028 	lw	v0,40(s8)
  493bf0:	00000000 	nop
  493bf4:	2444003c 	addiu	a0,v0,60
  493bf8:	93c20017 	lbu	v0,23(s8)
  493bfc:	00000000 	nop
  493c00:	00021080 	sll	v0,v0,0x2
  493c04:	8f83804c 	lw	v1,-32692(gp)
  493c08:	00000000 	nop
  493c0c:	2463d394 	addiu	v1,v1,-11372
  493c10:	00621821 	addu	v1,v1,v0
  493c14:	8fc20008 	lw	v0,8(s8)
  493c18:	00000000 	nop
  493c1c:	00021202 	srl	v0,v0,0x8
  493c20:	304200ff 	andi	v0,v0,0xff
  493c24:	00021080 	sll	v0,v0,0x2
  493c28:	24420400 	addiu	v0,v0,1024
  493c2c:	8f81804c 	lw	at,-32692(gp)
  493c30:	00000000 	nop
  493c34:	2421d394 	addiu	at,at,-11372
  493c38:	00221021 	addu	v0,at,v0
  493c3c:	8c630000 	lw	v1,0(v1)
  493c40:	8c420000 	lw	v0,0(v0)
  493c44:	00000000 	nop
  493c48:	00621826 	xor	v1,v1,v0
  493c4c:	8fc2000c 	lw	v0,12(s8)
  493c50:	00000000 	nop
  493c54:	00021402 	srl	v0,v0,0x10
  493c58:	304200ff 	andi	v0,v0,0xff
  493c5c:	00021080 	sll	v0,v0,0x2
  493c60:	24420800 	addiu	v0,v0,2048
  493c64:	8f81804c 	lw	at,-32692(gp)
  493c68:	00000000 	nop
  493c6c:	2421d394 	addiu	at,at,-11372
  493c70:	00221021 	addu	v0,at,v0
  493c74:	8c420000 	lw	v0,0(v0)
  493c78:	00000000 	nop
  493c7c:	00621826 	xor	v1,v1,v0
  493c80:	8fc20010 	lw	v0,16(s8)
  493c84:	00000000 	nop
  493c88:	00021602 	srl	v0,v0,0x18
  493c8c:	304200ff 	andi	v0,v0,0xff
  493c90:	00021080 	sll	v0,v0,0x2
  493c94:	24420c00 	addiu	v0,v0,3072
  493c98:	8f81804c 	lw	at,-32692(gp)
  493c9c:	00000000 	nop
  493ca0:	2421d394 	addiu	at,at,-11372
  493ca4:	00221021 	addu	v0,at,v0
  493ca8:	8c420000 	lw	v0,0(v0)
  493cac:	00000000 	nop
  493cb0:	00621826 	xor	v1,v1,v0
  493cb4:	8c820000 	lw	v0,0(a0)
  493cb8:	00000000 	nop
  493cbc:	00431026 	xor	v0,v0,v1
  493cc0:	afc20024 	sw	v0,36(s8)
                round(fwd_rnd,  b1, b0, kp + 4 * nc); 
  493cc4:	8fc20028 	lw	v0,40(s8)
  493cc8:	00000000 	nop
  493ccc:	24440040 	addiu	a0,v0,64
  493cd0:	93c2001b 	lbu	v0,27(s8)
  493cd4:	00000000 	nop
  493cd8:	00021080 	sll	v0,v0,0x2
  493cdc:	8f83804c 	lw	v1,-32692(gp)
  493ce0:	00000000 	nop
  493ce4:	2463d394 	addiu	v1,v1,-11372
  493ce8:	00621821 	addu	v1,v1,v0
  493cec:	8fc2001c 	lw	v0,28(s8)
  493cf0:	00000000 	nop
  493cf4:	00021202 	srl	v0,v0,0x8
  493cf8:	304200ff 	andi	v0,v0,0xff
  493cfc:	00021080 	sll	v0,v0,0x2
  493d00:	24420400 	addiu	v0,v0,1024
  493d04:	8f81804c 	lw	at,-32692(gp)
  493d08:	00000000 	nop
  493d0c:	2421d394 	addiu	at,at,-11372
  493d10:	00221021 	addu	v0,at,v0
  493d14:	8c630000 	lw	v1,0(v1)
  493d18:	8c420000 	lw	v0,0(v0)
  493d1c:	00000000 	nop
  493d20:	00621826 	xor	v1,v1,v0
  493d24:	8fc20020 	lw	v0,32(s8)
  493d28:	00000000 	nop
  493d2c:	00021402 	srl	v0,v0,0x10
  493d30:	304200ff 	andi	v0,v0,0xff
  493d34:	00021080 	sll	v0,v0,0x2
  493d38:	24420800 	addiu	v0,v0,2048
  493d3c:	8f81804c 	lw	at,-32692(gp)
  493d40:	00000000 	nop
  493d44:	2421d394 	addiu	at,at,-11372
  493d48:	00221021 	addu	v0,at,v0
  493d4c:	8c420000 	lw	v0,0(v0)
  493d50:	00000000 	nop
  493d54:	00621826 	xor	v1,v1,v0
  493d58:	8fc20024 	lw	v0,36(s8)
  493d5c:	00000000 	nop
  493d60:	00021602 	srl	v0,v0,0x18
  493d64:	304200ff 	andi	v0,v0,0xff
  493d68:	00021080 	sll	v0,v0,0x2
  493d6c:	24420c00 	addiu	v0,v0,3072
  493d70:	8f81804c 	lw	at,-32692(gp)
  493d74:	00000000 	nop
  493d78:	2421d394 	addiu	at,at,-11372
  493d7c:	00221021 	addu	v0,at,v0
  493d80:	8c420000 	lw	v0,0(v0)
  493d84:	00000000 	nop
  493d88:	00621826 	xor	v1,v1,v0
  493d8c:	8c820000 	lw	v0,0(a0)
  493d90:	00000000 	nop
  493d94:	00431026 	xor	v0,v0,v1
  493d98:	afc20008 	sw	v0,8(s8)
  493d9c:	8fc20028 	lw	v0,40(s8)
  493da0:	00000000 	nop
  493da4:	24440044 	addiu	a0,v0,68
  493da8:	93c2001f 	lbu	v0,31(s8)
  493dac:	00000000 	nop
  493db0:	00021080 	sll	v0,v0,0x2
  493db4:	8f83804c 	lw	v1,-32692(gp)
  493db8:	00000000 	nop
  493dbc:	2463d394 	addiu	v1,v1,-11372
  493dc0:	00621821 	addu	v1,v1,v0
  493dc4:	8fc20020 	lw	v0,32(s8)
  493dc8:	00000000 	nop
  493dcc:	00021202 	srl	v0,v0,0x8
  493dd0:	304200ff 	andi	v0,v0,0xff
  493dd4:	00021080 	sll	v0,v0,0x2
  493dd8:	24420400 	addiu	v0,v0,1024
  493ddc:	8f81804c 	lw	at,-32692(gp)
  493de0:	00000000 	nop
  493de4:	2421d394 	addiu	at,at,-11372
  493de8:	00221021 	addu	v0,at,v0
  493dec:	8c630000 	lw	v1,0(v1)
  493df0:	8c420000 	lw	v0,0(v0)
  493df4:	00000000 	nop
  493df8:	00621826 	xor	v1,v1,v0
  493dfc:	8fc20024 	lw	v0,36(s8)
  493e00:	00000000 	nop
  493e04:	00021402 	srl	v0,v0,0x10
  493e08:	304200ff 	andi	v0,v0,0xff
  493e0c:	00021080 	sll	v0,v0,0x2
  493e10:	24420800 	addiu	v0,v0,2048
  493e14:	8f81804c 	lw	at,-32692(gp)
  493e18:	00000000 	nop
  493e1c:	2421d394 	addiu	at,at,-11372
  493e20:	00221021 	addu	v0,at,v0
  493e24:	8c420000 	lw	v0,0(v0)
  493e28:	00000000 	nop
  493e2c:	00621826 	xor	v1,v1,v0
  493e30:	8fc20018 	lw	v0,24(s8)
  493e34:	00000000 	nop
  493e38:	00021602 	srl	v0,v0,0x18
  493e3c:	304200ff 	andi	v0,v0,0xff
  493e40:	00021080 	sll	v0,v0,0x2
  493e44:	24420c00 	addiu	v0,v0,3072
  493e48:	8f81804c 	lw	at,-32692(gp)
  493e4c:	00000000 	nop
  493e50:	2421d394 	addiu	at,at,-11372
  493e54:	00221021 	addu	v0,at,v0
  493e58:	8c420000 	lw	v0,0(v0)
  493e5c:	00000000 	nop
  493e60:	00621826 	xor	v1,v1,v0
  493e64:	8c820000 	lw	v0,0(a0)
  493e68:	00000000 	nop
  493e6c:	00431026 	xor	v0,v0,v1
  493e70:	afc2000c 	sw	v0,12(s8)
  493e74:	8fc20028 	lw	v0,40(s8)
  493e78:	00000000 	nop
  493e7c:	24440048 	addiu	a0,v0,72
  493e80:	93c20023 	lbu	v0,35(s8)
  493e84:	00000000 	nop
  493e88:	00021080 	sll	v0,v0,0x2
  493e8c:	8f83804c 	lw	v1,-32692(gp)
  493e90:	00000000 	nop
  493e94:	2463d394 	addiu	v1,v1,-11372
  493e98:	00621821 	addu	v1,v1,v0
  493e9c:	8fc20024 	lw	v0,36(s8)
  493ea0:	00000000 	nop
  493ea4:	00021202 	srl	v0,v0,0x8
  493ea8:	304200ff 	andi	v0,v0,0xff
  493eac:	00021080 	sll	v0,v0,0x2
  493eb0:	24420400 	addiu	v0,v0,1024
  493eb4:	8f81804c 	lw	at,-32692(gp)
  493eb8:	00000000 	nop
  493ebc:	2421d394 	addiu	at,at,-11372
  493ec0:	00221021 	addu	v0,at,v0
  493ec4:	8c630000 	lw	v1,0(v1)
  493ec8:	8c420000 	lw	v0,0(v0)
  493ecc:	00000000 	nop
  493ed0:	00621826 	xor	v1,v1,v0
  493ed4:	8fc20018 	lw	v0,24(s8)
  493ed8:	00000000 	nop
  493edc:	00021402 	srl	v0,v0,0x10
  493ee0:	304200ff 	andi	v0,v0,0xff
  493ee4:	00021080 	sll	v0,v0,0x2
  493ee8:	24420800 	addiu	v0,v0,2048
  493eec:	8f81804c 	lw	at,-32692(gp)
  493ef0:	00000000 	nop
  493ef4:	2421d394 	addiu	at,at,-11372
  493ef8:	00221021 	addu	v0,at,v0
  493efc:	8c420000 	lw	v0,0(v0)
  493f00:	00000000 	nop
  493f04:	00621826 	xor	v1,v1,v0
  493f08:	8fc2001c 	lw	v0,28(s8)
  493f0c:	00000000 	nop
  493f10:	00021602 	srl	v0,v0,0x18
  493f14:	304200ff 	andi	v0,v0,0xff
  493f18:	00021080 	sll	v0,v0,0x2
  493f1c:	24420c00 	addiu	v0,v0,3072
  493f20:	8f81804c 	lw	at,-32692(gp)
  493f24:	00000000 	nop
  493f28:	2421d394 	addiu	at,at,-11372
  493f2c:	00221021 	addu	v0,at,v0
  493f30:	8c420000 	lw	v0,0(v0)
  493f34:	00000000 	nop
  493f38:	00621826 	xor	v1,v1,v0
  493f3c:	8c820000 	lw	v0,0(a0)
  493f40:	00000000 	nop
  493f44:	00431026 	xor	v0,v0,v1
  493f48:	afc20010 	sw	v0,16(s8)
  493f4c:	8fc20028 	lw	v0,40(s8)
  493f50:	00000000 	nop
  493f54:	2444004c 	addiu	a0,v0,76
  493f58:	93c20027 	lbu	v0,39(s8)
  493f5c:	00000000 	nop
  493f60:	00021080 	sll	v0,v0,0x2
  493f64:	8f83804c 	lw	v1,-32692(gp)
  493f68:	00000000 	nop
  493f6c:	2463d394 	addiu	v1,v1,-11372
  493f70:	00621821 	addu	v1,v1,v0
  493f74:	8fc20018 	lw	v0,24(s8)
  493f78:	00000000 	nop
  493f7c:	00021202 	srl	v0,v0,0x8
  493f80:	304200ff 	andi	v0,v0,0xff
  493f84:	00021080 	sll	v0,v0,0x2
  493f88:	24420400 	addiu	v0,v0,1024
  493f8c:	8f81804c 	lw	at,-32692(gp)
  493f90:	00000000 	nop
  493f94:	2421d394 	addiu	at,at,-11372
  493f98:	00221021 	addu	v0,at,v0
  493f9c:	8c630000 	lw	v1,0(v1)
  493fa0:	8c420000 	lw	v0,0(v0)
  493fa4:	00000000 	nop
  493fa8:	00621826 	xor	v1,v1,v0
  493fac:	8fc2001c 	lw	v0,28(s8)
  493fb0:	00000000 	nop
  493fb4:	00021402 	srl	v0,v0,0x10
  493fb8:	304200ff 	andi	v0,v0,0xff
  493fbc:	00021080 	sll	v0,v0,0x2
  493fc0:	24420800 	addiu	v0,v0,2048
  493fc4:	8f81804c 	lw	at,-32692(gp)
  493fc8:	00000000 	nop
  493fcc:	2421d394 	addiu	at,at,-11372
  493fd0:	00221021 	addu	v0,at,v0
  493fd4:	8c420000 	lw	v0,0(v0)
  493fd8:	00000000 	nop
  493fdc:	00621826 	xor	v1,v1,v0
  493fe0:	8fc20020 	lw	v0,32(s8)
  493fe4:	00000000 	nop
  493fe8:	00021602 	srl	v0,v0,0x18
  493fec:	304200ff 	andi	v0,v0,0xff
  493ff0:	00021080 	sll	v0,v0,0x2
  493ff4:	24420c00 	addiu	v0,v0,3072
  493ff8:	8f81804c 	lw	at,-32692(gp)
  493ffc:	00000000 	nop
  494000:	2421d394 	addiu	at,at,-11372
  494004:	00221021 	addu	v0,at,v0
  494008:	8c420000 	lw	v0,0(v0)
  49400c:	00000000 	nop
  494010:	00621826 	xor	v1,v1,v0
  494014:	8c820000 	lw	v0,0(a0)
  494018:	00000000 	nop
  49401c:	00431026 	xor	v0,v0,v1
  494020:	afc20014 	sw	v0,20(s8)
                round(fwd_rnd,  b0, b1, kp + 5 * nc);
  494024:	8fc20028 	lw	v0,40(s8)
  494028:	00000000 	nop
  49402c:	24440050 	addiu	a0,v0,80
  494030:	93c2000b 	lbu	v0,11(s8)
  494034:	00000000 	nop
  494038:	00021080 	sll	v0,v0,0x2
  49403c:	8f83804c 	lw	v1,-32692(gp)
  494040:	00000000 	nop
  494044:	2463d394 	addiu	v1,v1,-11372
  494048:	00621821 	addu	v1,v1,v0
  49404c:	8fc2000c 	lw	v0,12(s8)
  494050:	00000000 	nop
  494054:	00021202 	srl	v0,v0,0x8
  494058:	304200ff 	andi	v0,v0,0xff
  49405c:	00021080 	sll	v0,v0,0x2
  494060:	24420400 	addiu	v0,v0,1024
  494064:	8f81804c 	lw	at,-32692(gp)
  494068:	00000000 	nop
  49406c:	2421d394 	addiu	at,at,-11372
  494070:	00221021 	addu	v0,at,v0
  494074:	8c630000 	lw	v1,0(v1)
  494078:	8c420000 	lw	v0,0(v0)
  49407c:	00000000 	nop
  494080:	00621826 	xor	v1,v1,v0
  494084:	8fc20010 	lw	v0,16(s8)
  494088:	00000000 	nop
  49408c:	00021402 	srl	v0,v0,0x10
  494090:	304200ff 	andi	v0,v0,0xff
  494094:	00021080 	sll	v0,v0,0x2
  494098:	24420800 	addiu	v0,v0,2048
  49409c:	8f81804c 	lw	at,-32692(gp)
  4940a0:	00000000 	nop
  4940a4:	2421d394 	addiu	at,at,-11372
  4940a8:	00221021 	addu	v0,at,v0
  4940ac:	8c420000 	lw	v0,0(v0)
  4940b0:	00000000 	nop
  4940b4:	00621826 	xor	v1,v1,v0
  4940b8:	8fc20014 	lw	v0,20(s8)
  4940bc:	00000000 	nop
  4940c0:	00021602 	srl	v0,v0,0x18
  4940c4:	304200ff 	andi	v0,v0,0xff
  4940c8:	00021080 	sll	v0,v0,0x2
  4940cc:	24420c00 	addiu	v0,v0,3072
  4940d0:	8f81804c 	lw	at,-32692(gp)
  4940d4:	00000000 	nop
  4940d8:	2421d394 	addiu	at,at,-11372
  4940dc:	00221021 	addu	v0,at,v0
  4940e0:	8c420000 	lw	v0,0(v0)
  4940e4:	00000000 	nop
  4940e8:	00621826 	xor	v1,v1,v0
  4940ec:	8c820000 	lw	v0,0(a0)
  4940f0:	00000000 	nop
  4940f4:	00431026 	xor	v0,v0,v1
  4940f8:	afc20018 	sw	v0,24(s8)
  4940fc:	8fc20028 	lw	v0,40(s8)
  494100:	00000000 	nop
  494104:	24440054 	addiu	a0,v0,84
  494108:	93c2000f 	lbu	v0,15(s8)
  49410c:	00000000 	nop
  494110:	00021080 	sll	v0,v0,0x2
  494114:	8f83804c 	lw	v1,-32692(gp)
  494118:	00000000 	nop
  49411c:	2463d394 	addiu	v1,v1,-11372
  494120:	00621821 	addu	v1,v1,v0
  494124:	8fc20010 	lw	v0,16(s8)
  494128:	00000000 	nop
  49412c:	00021202 	srl	v0,v0,0x8
  494130:	304200ff 	andi	v0,v0,0xff
  494134:	00021080 	sll	v0,v0,0x2
  494138:	24420400 	addiu	v0,v0,1024
  49413c:	8f81804c 	lw	at,-32692(gp)
  494140:	00000000 	nop
  494144:	2421d394 	addiu	at,at,-11372
  494148:	00221021 	addu	v0,at,v0
  49414c:	8c630000 	lw	v1,0(v1)
  494150:	8c420000 	lw	v0,0(v0)
  494154:	00000000 	nop
  494158:	00621826 	xor	v1,v1,v0
  49415c:	8fc20014 	lw	v0,20(s8)
  494160:	00000000 	nop
  494164:	00021402 	srl	v0,v0,0x10
  494168:	304200ff 	andi	v0,v0,0xff
  49416c:	00021080 	sll	v0,v0,0x2
  494170:	24420800 	addiu	v0,v0,2048
  494174:	8f81804c 	lw	at,-32692(gp)
  494178:	00000000 	nop
  49417c:	2421d394 	addiu	at,at,-11372
  494180:	00221021 	addu	v0,at,v0
  494184:	8c420000 	lw	v0,0(v0)
  494188:	00000000 	nop
  49418c:	00621826 	xor	v1,v1,v0
  494190:	8fc20008 	lw	v0,8(s8)
  494194:	00000000 	nop
  494198:	00021602 	srl	v0,v0,0x18
  49419c:	304200ff 	andi	v0,v0,0xff
  4941a0:	00021080 	sll	v0,v0,0x2
  4941a4:	24420c00 	addiu	v0,v0,3072
  4941a8:	8f81804c 	lw	at,-32692(gp)
  4941ac:	00000000 	nop
  4941b0:	2421d394 	addiu	at,at,-11372
  4941b4:	00221021 	addu	v0,at,v0
  4941b8:	8c420000 	lw	v0,0(v0)
  4941bc:	00000000 	nop
  4941c0:	00621826 	xor	v1,v1,v0
  4941c4:	8c820000 	lw	v0,0(a0)
  4941c8:	00000000 	nop
  4941cc:	00431026 	xor	v0,v0,v1
  4941d0:	afc2001c 	sw	v0,28(s8)
  4941d4:	8fc20028 	lw	v0,40(s8)
  4941d8:	00000000 	nop
  4941dc:	24440058 	addiu	a0,v0,88
  4941e0:	93c20013 	lbu	v0,19(s8)
  4941e4:	00000000 	nop
  4941e8:	00021080 	sll	v0,v0,0x2
  4941ec:	8f83804c 	lw	v1,-32692(gp)
  4941f0:	00000000 	nop
  4941f4:	2463d394 	addiu	v1,v1,-11372
  4941f8:	00621821 	addu	v1,v1,v0
  4941fc:	8fc20014 	lw	v0,20(s8)
  494200:	00000000 	nop
  494204:	00021202 	srl	v0,v0,0x8
  494208:	304200ff 	andi	v0,v0,0xff
  49420c:	00021080 	sll	v0,v0,0x2
  494210:	24420400 	addiu	v0,v0,1024
  494214:	8f81804c 	lw	at,-32692(gp)
  494218:	00000000 	nop
  49421c:	2421d394 	addiu	at,at,-11372
  494220:	00221021 	addu	v0,at,v0
  494224:	8c630000 	lw	v1,0(v1)
  494228:	8c420000 	lw	v0,0(v0)
  49422c:	00000000 	nop
  494230:	00621826 	xor	v1,v1,v0
  494234:	8fc20008 	lw	v0,8(s8)
  494238:	00000000 	nop
  49423c:	00021402 	srl	v0,v0,0x10
  494240:	304200ff 	andi	v0,v0,0xff
  494244:	00021080 	sll	v0,v0,0x2
  494248:	24420800 	addiu	v0,v0,2048
  49424c:	8f81804c 	lw	at,-32692(gp)
  494250:	00000000 	nop
  494254:	2421d394 	addiu	at,at,-11372
  494258:	00221021 	addu	v0,at,v0
  49425c:	8c420000 	lw	v0,0(v0)
  494260:	00000000 	nop
  494264:	00621826 	xor	v1,v1,v0
  494268:	8fc2000c 	lw	v0,12(s8)
  49426c:	00000000 	nop
  494270:	00021602 	srl	v0,v0,0x18
  494274:	304200ff 	andi	v0,v0,0xff
  494278:	00021080 	sll	v0,v0,0x2
  49427c:	24420c00 	addiu	v0,v0,3072
  494280:	8f81804c 	lw	at,-32692(gp)
  494284:	00000000 	nop
  494288:	2421d394 	addiu	at,at,-11372
  49428c:	00221021 	addu	v0,at,v0
  494290:	8c420000 	lw	v0,0(v0)
  494294:	00000000 	nop
  494298:	00621826 	xor	v1,v1,v0
  49429c:	8c820000 	lw	v0,0(a0)
  4942a0:	00000000 	nop
  4942a4:	00431026 	xor	v0,v0,v1
  4942a8:	afc20020 	sw	v0,32(s8)
  4942ac:	8fc20028 	lw	v0,40(s8)
  4942b0:	00000000 	nop
  4942b4:	2444005c 	addiu	a0,v0,92
  4942b8:	93c20017 	lbu	v0,23(s8)
  4942bc:	00000000 	nop
  4942c0:	00021080 	sll	v0,v0,0x2
  4942c4:	8f83804c 	lw	v1,-32692(gp)
  4942c8:	00000000 	nop
  4942cc:	2463d394 	addiu	v1,v1,-11372
  4942d0:	00621821 	addu	v1,v1,v0
  4942d4:	8fc20008 	lw	v0,8(s8)
  4942d8:	00000000 	nop
  4942dc:	00021202 	srl	v0,v0,0x8
  4942e0:	304200ff 	andi	v0,v0,0xff
  4942e4:	00021080 	sll	v0,v0,0x2
  4942e8:	24420400 	addiu	v0,v0,1024
  4942ec:	8f81804c 	lw	at,-32692(gp)
  4942f0:	00000000 	nop
  4942f4:	2421d394 	addiu	at,at,-11372
  4942f8:	00221021 	addu	v0,at,v0
  4942fc:	8c630000 	lw	v1,0(v1)
  494300:	8c420000 	lw	v0,0(v0)
  494304:	00000000 	nop
  494308:	00621826 	xor	v1,v1,v0
  49430c:	8fc2000c 	lw	v0,12(s8)
  494310:	00000000 	nop
  494314:	00021402 	srl	v0,v0,0x10
  494318:	304200ff 	andi	v0,v0,0xff
  49431c:	00021080 	sll	v0,v0,0x2
  494320:	24420800 	addiu	v0,v0,2048
  494324:	8f81804c 	lw	at,-32692(gp)
  494328:	00000000 	nop
  49432c:	2421d394 	addiu	at,at,-11372
  494330:	00221021 	addu	v0,at,v0
  494334:	8c420000 	lw	v0,0(v0)
  494338:	00000000 	nop
  49433c:	00621826 	xor	v1,v1,v0
  494340:	8fc20010 	lw	v0,16(s8)
  494344:	00000000 	nop
  494348:	00021602 	srl	v0,v0,0x18
  49434c:	304200ff 	andi	v0,v0,0xff
  494350:	00021080 	sll	v0,v0,0x2
  494354:	24420c00 	addiu	v0,v0,3072
  494358:	8f81804c 	lw	at,-32692(gp)
  49435c:	00000000 	nop
  494360:	2421d394 	addiu	at,at,-11372
  494364:	00221021 	addu	v0,at,v0
  494368:	8c420000 	lw	v0,0(v0)
  49436c:	00000000 	nop
  494370:	00621826 	xor	v1,v1,v0
  494374:	8c820000 	lw	v0,0(a0)
  494378:	00000000 	nop
  49437c:	00431026 	xor	v0,v0,v1
  494380:	afc20024 	sw	v0,36(s8)
                round(fwd_rnd,  b1, b0, kp + 6 * nc); 
  494384:	8fc20028 	lw	v0,40(s8)
  494388:	00000000 	nop
  49438c:	24440060 	addiu	a0,v0,96
  494390:	93c2001b 	lbu	v0,27(s8)
  494394:	00000000 	nop
  494398:	00021080 	sll	v0,v0,0x2
  49439c:	8f83804c 	lw	v1,-32692(gp)
  4943a0:	00000000 	nop
  4943a4:	2463d394 	addiu	v1,v1,-11372
  4943a8:	00621821 	addu	v1,v1,v0
  4943ac:	8fc2001c 	lw	v0,28(s8)
  4943b0:	00000000 	nop
  4943b4:	00021202 	srl	v0,v0,0x8
  4943b8:	304200ff 	andi	v0,v0,0xff
  4943bc:	00021080 	sll	v0,v0,0x2
  4943c0:	24420400 	addiu	v0,v0,1024
  4943c4:	8f81804c 	lw	at,-32692(gp)
  4943c8:	00000000 	nop
  4943cc:	2421d394 	addiu	at,at,-11372
  4943d0:	00221021 	addu	v0,at,v0
  4943d4:	8c630000 	lw	v1,0(v1)
  4943d8:	8c420000 	lw	v0,0(v0)
  4943dc:	00000000 	nop
  4943e0:	00621826 	xor	v1,v1,v0
  4943e4:	8fc20020 	lw	v0,32(s8)
  4943e8:	00000000 	nop
  4943ec:	00021402 	srl	v0,v0,0x10
  4943f0:	304200ff 	andi	v0,v0,0xff
  4943f4:	00021080 	sll	v0,v0,0x2
  4943f8:	24420800 	addiu	v0,v0,2048
  4943fc:	8f81804c 	lw	at,-32692(gp)
  494400:	00000000 	nop
  494404:	2421d394 	addiu	at,at,-11372
  494408:	00221021 	addu	v0,at,v0
  49440c:	8c420000 	lw	v0,0(v0)
  494410:	00000000 	nop
  494414:	00621826 	xor	v1,v1,v0
  494418:	8fc20024 	lw	v0,36(s8)
  49441c:	00000000 	nop
  494420:	00021602 	srl	v0,v0,0x18
  494424:	304200ff 	andi	v0,v0,0xff
  494428:	00021080 	sll	v0,v0,0x2
  49442c:	24420c00 	addiu	v0,v0,3072
  494430:	8f81804c 	lw	at,-32692(gp)
  494434:	00000000 	nop
  494438:	2421d394 	addiu	at,at,-11372
  49443c:	00221021 	addu	v0,at,v0
  494440:	8c420000 	lw	v0,0(v0)
  494444:	00000000 	nop
  494448:	00621826 	xor	v1,v1,v0
  49444c:	8c820000 	lw	v0,0(a0)
  494450:	00000000 	nop
  494454:	00431026 	xor	v0,v0,v1
  494458:	afc20008 	sw	v0,8(s8)
  49445c:	8fc20028 	lw	v0,40(s8)
  494460:	00000000 	nop
  494464:	24440064 	addiu	a0,v0,100
  494468:	93c2001f 	lbu	v0,31(s8)
  49446c:	00000000 	nop
  494470:	00021080 	sll	v0,v0,0x2
  494474:	8f83804c 	lw	v1,-32692(gp)
  494478:	00000000 	nop
  49447c:	2463d394 	addiu	v1,v1,-11372
  494480:	00621821 	addu	v1,v1,v0
  494484:	8fc20020 	lw	v0,32(s8)
  494488:	00000000 	nop
  49448c:	00021202 	srl	v0,v0,0x8
  494490:	304200ff 	andi	v0,v0,0xff
  494494:	00021080 	sll	v0,v0,0x2
  494498:	24420400 	addiu	v0,v0,1024
  49449c:	8f81804c 	lw	at,-32692(gp)
  4944a0:	00000000 	nop
  4944a4:	2421d394 	addiu	at,at,-11372
  4944a8:	00221021 	addu	v0,at,v0
  4944ac:	8c630000 	lw	v1,0(v1)
  4944b0:	8c420000 	lw	v0,0(v0)
  4944b4:	00000000 	nop
  4944b8:	00621826 	xor	v1,v1,v0
  4944bc:	8fc20024 	lw	v0,36(s8)
  4944c0:	00000000 	nop
  4944c4:	00021402 	srl	v0,v0,0x10
  4944c8:	304200ff 	andi	v0,v0,0xff
  4944cc:	00021080 	sll	v0,v0,0x2
  4944d0:	24420800 	addiu	v0,v0,2048
  4944d4:	8f81804c 	lw	at,-32692(gp)
  4944d8:	00000000 	nop
  4944dc:	2421d394 	addiu	at,at,-11372
  4944e0:	00221021 	addu	v0,at,v0
  4944e4:	8c420000 	lw	v0,0(v0)
  4944e8:	00000000 	nop
  4944ec:	00621826 	xor	v1,v1,v0
  4944f0:	8fc20018 	lw	v0,24(s8)
  4944f4:	00000000 	nop
  4944f8:	00021602 	srl	v0,v0,0x18
  4944fc:	304200ff 	andi	v0,v0,0xff
  494500:	00021080 	sll	v0,v0,0x2
  494504:	24420c00 	addiu	v0,v0,3072
  494508:	8f81804c 	lw	at,-32692(gp)
  49450c:	00000000 	nop
  494510:	2421d394 	addiu	at,at,-11372
  494514:	00221021 	addu	v0,at,v0
  494518:	8c420000 	lw	v0,0(v0)
  49451c:	00000000 	nop
  494520:	00621826 	xor	v1,v1,v0
  494524:	8c820000 	lw	v0,0(a0)
  494528:	00000000 	nop
  49452c:	00431026 	xor	v0,v0,v1
  494530:	afc2000c 	sw	v0,12(s8)
  494534:	8fc20028 	lw	v0,40(s8)
  494538:	00000000 	nop
  49453c:	24440068 	addiu	a0,v0,104
  494540:	93c20023 	lbu	v0,35(s8)
  494544:	00000000 	nop
  494548:	00021080 	sll	v0,v0,0x2
  49454c:	8f83804c 	lw	v1,-32692(gp)
  494550:	00000000 	nop
  494554:	2463d394 	addiu	v1,v1,-11372
  494558:	00621821 	addu	v1,v1,v0
  49455c:	8fc20024 	lw	v0,36(s8)
  494560:	00000000 	nop
  494564:	00021202 	srl	v0,v0,0x8
  494568:	304200ff 	andi	v0,v0,0xff
  49456c:	00021080 	sll	v0,v0,0x2
  494570:	24420400 	addiu	v0,v0,1024
  494574:	8f81804c 	lw	at,-32692(gp)
  494578:	00000000 	nop
  49457c:	2421d394 	addiu	at,at,-11372
  494580:	00221021 	addu	v0,at,v0
  494584:	8c630000 	lw	v1,0(v1)
  494588:	8c420000 	lw	v0,0(v0)
  49458c:	00000000 	nop
  494590:	00621826 	xor	v1,v1,v0
  494594:	8fc20018 	lw	v0,24(s8)
  494598:	00000000 	nop
  49459c:	00021402 	srl	v0,v0,0x10
  4945a0:	304200ff 	andi	v0,v0,0xff
  4945a4:	00021080 	sll	v0,v0,0x2
  4945a8:	24420800 	addiu	v0,v0,2048
  4945ac:	8f81804c 	lw	at,-32692(gp)
  4945b0:	00000000 	nop
  4945b4:	2421d394 	addiu	at,at,-11372
  4945b8:	00221021 	addu	v0,at,v0
  4945bc:	8c420000 	lw	v0,0(v0)
  4945c0:	00000000 	nop
  4945c4:	00621826 	xor	v1,v1,v0
  4945c8:	8fc2001c 	lw	v0,28(s8)
  4945cc:	00000000 	nop
  4945d0:	00021602 	srl	v0,v0,0x18
  4945d4:	304200ff 	andi	v0,v0,0xff
  4945d8:	00021080 	sll	v0,v0,0x2
  4945dc:	24420c00 	addiu	v0,v0,3072
  4945e0:	8f81804c 	lw	at,-32692(gp)
  4945e4:	00000000 	nop
  4945e8:	2421d394 	addiu	at,at,-11372
  4945ec:	00221021 	addu	v0,at,v0
  4945f0:	8c420000 	lw	v0,0(v0)
  4945f4:	00000000 	nop
  4945f8:	00621826 	xor	v1,v1,v0
  4945fc:	8c820000 	lw	v0,0(a0)
  494600:	00000000 	nop
  494604:	00431026 	xor	v0,v0,v1
  494608:	afc20010 	sw	v0,16(s8)
  49460c:	8fc20028 	lw	v0,40(s8)
  494610:	00000000 	nop
  494614:	2444006c 	addiu	a0,v0,108
  494618:	93c20027 	lbu	v0,39(s8)
  49461c:	00000000 	nop
  494620:	00021080 	sll	v0,v0,0x2
  494624:	8f83804c 	lw	v1,-32692(gp)
  494628:	00000000 	nop
  49462c:	2463d394 	addiu	v1,v1,-11372
  494630:	00621821 	addu	v1,v1,v0
  494634:	8fc20018 	lw	v0,24(s8)
  494638:	00000000 	nop
  49463c:	00021202 	srl	v0,v0,0x8
  494640:	304200ff 	andi	v0,v0,0xff
  494644:	00021080 	sll	v0,v0,0x2
  494648:	24420400 	addiu	v0,v0,1024
  49464c:	8f81804c 	lw	at,-32692(gp)
  494650:	00000000 	nop
  494654:	2421d394 	addiu	at,at,-11372
  494658:	00221021 	addu	v0,at,v0
  49465c:	8c630000 	lw	v1,0(v1)
  494660:	8c420000 	lw	v0,0(v0)
  494664:	00000000 	nop
  494668:	00621826 	xor	v1,v1,v0
  49466c:	8fc2001c 	lw	v0,28(s8)
  494670:	00000000 	nop
  494674:	00021402 	srl	v0,v0,0x10
  494678:	304200ff 	andi	v0,v0,0xff
  49467c:	00021080 	sll	v0,v0,0x2
  494680:	24420800 	addiu	v0,v0,2048
  494684:	8f81804c 	lw	at,-32692(gp)
  494688:	00000000 	nop
  49468c:	2421d394 	addiu	at,at,-11372
  494690:	00221021 	addu	v0,at,v0
  494694:	8c420000 	lw	v0,0(v0)
  494698:	00000000 	nop
  49469c:	00621826 	xor	v1,v1,v0
  4946a0:	8fc20020 	lw	v0,32(s8)
  4946a4:	00000000 	nop
  4946a8:	00021602 	srl	v0,v0,0x18
  4946ac:	304200ff 	andi	v0,v0,0xff
  4946b0:	00021080 	sll	v0,v0,0x2
  4946b4:	24420c00 	addiu	v0,v0,3072
  4946b8:	8f81804c 	lw	at,-32692(gp)
  4946bc:	00000000 	nop
  4946c0:	2421d394 	addiu	at,at,-11372
  4946c4:	00221021 	addu	v0,at,v0
  4946c8:	8c420000 	lw	v0,0(v0)
  4946cc:	00000000 	nop
  4946d0:	00621826 	xor	v1,v1,v0
  4946d4:	8c820000 	lw	v0,0(a0)
  4946d8:	00000000 	nop
  4946dc:	00431026 	xor	v0,v0,v1
  4946e0:	afc20014 	sw	v0,20(s8)
                round(fwd_rnd,  b0, b1, kp + 7 * nc);
  4946e4:	8fc20028 	lw	v0,40(s8)
  4946e8:	00000000 	nop
  4946ec:	24440070 	addiu	a0,v0,112
  4946f0:	93c2000b 	lbu	v0,11(s8)
  4946f4:	00000000 	nop
  4946f8:	00021080 	sll	v0,v0,0x2
  4946fc:	8f83804c 	lw	v1,-32692(gp)
  494700:	00000000 	nop
  494704:	2463d394 	addiu	v1,v1,-11372
  494708:	00621821 	addu	v1,v1,v0
  49470c:	8fc2000c 	lw	v0,12(s8)
  494710:	00000000 	nop
  494714:	00021202 	srl	v0,v0,0x8
  494718:	304200ff 	andi	v0,v0,0xff
  49471c:	00021080 	sll	v0,v0,0x2
  494720:	24420400 	addiu	v0,v0,1024
  494724:	8f81804c 	lw	at,-32692(gp)
  494728:	00000000 	nop
  49472c:	2421d394 	addiu	at,at,-11372
  494730:	00221021 	addu	v0,at,v0
  494734:	8c630000 	lw	v1,0(v1)
  494738:	8c420000 	lw	v0,0(v0)
  49473c:	00000000 	nop
  494740:	00621826 	xor	v1,v1,v0
  494744:	8fc20010 	lw	v0,16(s8)
  494748:	00000000 	nop
  49474c:	00021402 	srl	v0,v0,0x10
  494750:	304200ff 	andi	v0,v0,0xff
  494754:	00021080 	sll	v0,v0,0x2
  494758:	24420800 	addiu	v0,v0,2048
  49475c:	8f81804c 	lw	at,-32692(gp)
  494760:	00000000 	nop
  494764:	2421d394 	addiu	at,at,-11372
  494768:	00221021 	addu	v0,at,v0
  49476c:	8c420000 	lw	v0,0(v0)
  494770:	00000000 	nop
  494774:	00621826 	xor	v1,v1,v0
  494778:	8fc20014 	lw	v0,20(s8)
  49477c:	00000000 	nop
  494780:	00021602 	srl	v0,v0,0x18
  494784:	304200ff 	andi	v0,v0,0xff
  494788:	00021080 	sll	v0,v0,0x2
  49478c:	24420c00 	addiu	v0,v0,3072
  494790:	8f81804c 	lw	at,-32692(gp)
  494794:	00000000 	nop
  494798:	2421d394 	addiu	at,at,-11372
  49479c:	00221021 	addu	v0,at,v0
  4947a0:	8c420000 	lw	v0,0(v0)
  4947a4:	00000000 	nop
  4947a8:	00621826 	xor	v1,v1,v0
  4947ac:	8c820000 	lw	v0,0(a0)
  4947b0:	00000000 	nop
  4947b4:	00431026 	xor	v0,v0,v1
  4947b8:	afc20018 	sw	v0,24(s8)
  4947bc:	8fc20028 	lw	v0,40(s8)
  4947c0:	00000000 	nop
  4947c4:	24440074 	addiu	a0,v0,116
  4947c8:	93c2000f 	lbu	v0,15(s8)
  4947cc:	00000000 	nop
  4947d0:	00021080 	sll	v0,v0,0x2
  4947d4:	8f83804c 	lw	v1,-32692(gp)
  4947d8:	00000000 	nop
  4947dc:	2463d394 	addiu	v1,v1,-11372
  4947e0:	00621821 	addu	v1,v1,v0
  4947e4:	8fc20010 	lw	v0,16(s8)
  4947e8:	00000000 	nop
  4947ec:	00021202 	srl	v0,v0,0x8
  4947f0:	304200ff 	andi	v0,v0,0xff
  4947f4:	00021080 	sll	v0,v0,0x2
  4947f8:	24420400 	addiu	v0,v0,1024
  4947fc:	8f81804c 	lw	at,-32692(gp)
  494800:	00000000 	nop
  494804:	2421d394 	addiu	at,at,-11372
  494808:	00221021 	addu	v0,at,v0
  49480c:	8c630000 	lw	v1,0(v1)
  494810:	8c420000 	lw	v0,0(v0)
  494814:	00000000 	nop
  494818:	00621826 	xor	v1,v1,v0
  49481c:	8fc20014 	lw	v0,20(s8)
  494820:	00000000 	nop
  494824:	00021402 	srl	v0,v0,0x10
  494828:	304200ff 	andi	v0,v0,0xff
  49482c:	00021080 	sll	v0,v0,0x2
  494830:	24420800 	addiu	v0,v0,2048
  494834:	8f81804c 	lw	at,-32692(gp)
  494838:	00000000 	nop
  49483c:	2421d394 	addiu	at,at,-11372
  494840:	00221021 	addu	v0,at,v0
  494844:	8c420000 	lw	v0,0(v0)
  494848:	00000000 	nop
  49484c:	00621826 	xor	v1,v1,v0
  494850:	8fc20008 	lw	v0,8(s8)
  494854:	00000000 	nop
  494858:	00021602 	srl	v0,v0,0x18
  49485c:	304200ff 	andi	v0,v0,0xff
  494860:	00021080 	sll	v0,v0,0x2
  494864:	24420c00 	addiu	v0,v0,3072
  494868:	8f81804c 	lw	at,-32692(gp)
  49486c:	00000000 	nop
  494870:	2421d394 	addiu	at,at,-11372
  494874:	00221021 	addu	v0,at,v0
  494878:	8c420000 	lw	v0,0(v0)
  49487c:	00000000 	nop
  494880:	00621826 	xor	v1,v1,v0
  494884:	8c820000 	lw	v0,0(a0)
  494888:	00000000 	nop
  49488c:	00431026 	xor	v0,v0,v1
  494890:	afc2001c 	sw	v0,28(s8)
  494894:	8fc20028 	lw	v0,40(s8)
  494898:	00000000 	nop
  49489c:	24440078 	addiu	a0,v0,120
  4948a0:	93c20013 	lbu	v0,19(s8)
  4948a4:	00000000 	nop
  4948a8:	00021080 	sll	v0,v0,0x2
  4948ac:	8f83804c 	lw	v1,-32692(gp)
  4948b0:	00000000 	nop
  4948b4:	2463d394 	addiu	v1,v1,-11372
  4948b8:	00621821 	addu	v1,v1,v0
  4948bc:	8fc20014 	lw	v0,20(s8)
  4948c0:	00000000 	nop
  4948c4:	00021202 	srl	v0,v0,0x8
  4948c8:	304200ff 	andi	v0,v0,0xff
  4948cc:	00021080 	sll	v0,v0,0x2
  4948d0:	24420400 	addiu	v0,v0,1024
  4948d4:	8f81804c 	lw	at,-32692(gp)
  4948d8:	00000000 	nop
  4948dc:	2421d394 	addiu	at,at,-11372
  4948e0:	00221021 	addu	v0,at,v0
  4948e4:	8c630000 	lw	v1,0(v1)
  4948e8:	8c420000 	lw	v0,0(v0)
  4948ec:	00000000 	nop
  4948f0:	00621826 	xor	v1,v1,v0
  4948f4:	8fc20008 	lw	v0,8(s8)
  4948f8:	00000000 	nop
  4948fc:	00021402 	srl	v0,v0,0x10
  494900:	304200ff 	andi	v0,v0,0xff
  494904:	00021080 	sll	v0,v0,0x2
  494908:	24420800 	addiu	v0,v0,2048
  49490c:	8f81804c 	lw	at,-32692(gp)
  494910:	00000000 	nop
  494914:	2421d394 	addiu	at,at,-11372
  494918:	00221021 	addu	v0,at,v0
  49491c:	8c420000 	lw	v0,0(v0)
  494920:	00000000 	nop
  494924:	00621826 	xor	v1,v1,v0
  494928:	8fc2000c 	lw	v0,12(s8)
  49492c:	00000000 	nop
  494930:	00021602 	srl	v0,v0,0x18
  494934:	304200ff 	andi	v0,v0,0xff
  494938:	00021080 	sll	v0,v0,0x2
  49493c:	24420c00 	addiu	v0,v0,3072
  494940:	8f81804c 	lw	at,-32692(gp)
  494944:	00000000 	nop
  494948:	2421d394 	addiu	at,at,-11372
  49494c:	00221021 	addu	v0,at,v0
  494950:	8c420000 	lw	v0,0(v0)
  494954:	00000000 	nop
  494958:	00621826 	xor	v1,v1,v0
  49495c:	8c820000 	lw	v0,0(a0)
  494960:	00000000 	nop
  494964:	00431026 	xor	v0,v0,v1
  494968:	afc20020 	sw	v0,32(s8)
  49496c:	8fc20028 	lw	v0,40(s8)
  494970:	00000000 	nop
  494974:	2444007c 	addiu	a0,v0,124
  494978:	93c20017 	lbu	v0,23(s8)
  49497c:	00000000 	nop
  494980:	00021080 	sll	v0,v0,0x2
  494984:	8f83804c 	lw	v1,-32692(gp)
  494988:	00000000 	nop
  49498c:	2463d394 	addiu	v1,v1,-11372
  494990:	00621821 	addu	v1,v1,v0
  494994:	8fc20008 	lw	v0,8(s8)
  494998:	00000000 	nop
  49499c:	00021202 	srl	v0,v0,0x8
  4949a0:	304200ff 	andi	v0,v0,0xff
  4949a4:	00021080 	sll	v0,v0,0x2
  4949a8:	24420400 	addiu	v0,v0,1024
  4949ac:	8f81804c 	lw	at,-32692(gp)
  4949b0:	00000000 	nop
  4949b4:	2421d394 	addiu	at,at,-11372
  4949b8:	00221021 	addu	v0,at,v0
  4949bc:	8c630000 	lw	v1,0(v1)
  4949c0:	8c420000 	lw	v0,0(v0)
  4949c4:	00000000 	nop
  4949c8:	00621826 	xor	v1,v1,v0
  4949cc:	8fc2000c 	lw	v0,12(s8)
  4949d0:	00000000 	nop
  4949d4:	00021402 	srl	v0,v0,0x10
  4949d8:	304200ff 	andi	v0,v0,0xff
  4949dc:	00021080 	sll	v0,v0,0x2
  4949e0:	24420800 	addiu	v0,v0,2048
  4949e4:	8f81804c 	lw	at,-32692(gp)
  4949e8:	00000000 	nop
  4949ec:	2421d394 	addiu	at,at,-11372
  4949f0:	00221021 	addu	v0,at,v0
  4949f4:	8c420000 	lw	v0,0(v0)
  4949f8:	00000000 	nop
  4949fc:	00621826 	xor	v1,v1,v0
  494a00:	8fc20010 	lw	v0,16(s8)
  494a04:	00000000 	nop
  494a08:	00021602 	srl	v0,v0,0x18
  494a0c:	304200ff 	andi	v0,v0,0xff
  494a10:	00021080 	sll	v0,v0,0x2
  494a14:	24420c00 	addiu	v0,v0,3072
  494a18:	8f81804c 	lw	at,-32692(gp)
  494a1c:	00000000 	nop
  494a20:	2421d394 	addiu	at,at,-11372
  494a24:	00221021 	addu	v0,at,v0
  494a28:	8c420000 	lw	v0,0(v0)
  494a2c:	00000000 	nop
  494a30:	00621826 	xor	v1,v1,v0
  494a34:	8c820000 	lw	v0,0(a0)
  494a38:	00000000 	nop
  494a3c:	00431026 	xor	v0,v0,v1
  494a40:	afc20024 	sw	v0,36(s8)
                round(fwd_rnd,  b1, b0, kp + 8 * nc);
  494a44:	8fc20028 	lw	v0,40(s8)
  494a48:	00000000 	nop
  494a4c:	24440080 	addiu	a0,v0,128
  494a50:	93c2001b 	lbu	v0,27(s8)
  494a54:	00000000 	nop
  494a58:	00021080 	sll	v0,v0,0x2
  494a5c:	8f83804c 	lw	v1,-32692(gp)
  494a60:	00000000 	nop
  494a64:	2463d394 	addiu	v1,v1,-11372
  494a68:	00621821 	addu	v1,v1,v0
  494a6c:	8fc2001c 	lw	v0,28(s8)
  494a70:	00000000 	nop
  494a74:	00021202 	srl	v0,v0,0x8
  494a78:	304200ff 	andi	v0,v0,0xff
  494a7c:	00021080 	sll	v0,v0,0x2
  494a80:	24420400 	addiu	v0,v0,1024
  494a84:	8f81804c 	lw	at,-32692(gp)
  494a88:	00000000 	nop
  494a8c:	2421d394 	addiu	at,at,-11372
  494a90:	00221021 	addu	v0,at,v0
  494a94:	8c630000 	lw	v1,0(v1)
  494a98:	8c420000 	lw	v0,0(v0)
  494a9c:	00000000 	nop
  494aa0:	00621826 	xor	v1,v1,v0
  494aa4:	8fc20020 	lw	v0,32(s8)
  494aa8:	00000000 	nop
  494aac:	00021402 	srl	v0,v0,0x10
  494ab0:	304200ff 	andi	v0,v0,0xff
  494ab4:	00021080 	sll	v0,v0,0x2
  494ab8:	24420800 	addiu	v0,v0,2048
  494abc:	8f81804c 	lw	at,-32692(gp)
  494ac0:	00000000 	nop
  494ac4:	2421d394 	addiu	at,at,-11372
  494ac8:	00221021 	addu	v0,at,v0
  494acc:	8c420000 	lw	v0,0(v0)
  494ad0:	00000000 	nop
  494ad4:	00621826 	xor	v1,v1,v0
  494ad8:	8fc20024 	lw	v0,36(s8)
  494adc:	00000000 	nop
  494ae0:	00021602 	srl	v0,v0,0x18
  494ae4:	304200ff 	andi	v0,v0,0xff
  494ae8:	00021080 	sll	v0,v0,0x2
  494aec:	24420c00 	addiu	v0,v0,3072
  494af0:	8f81804c 	lw	at,-32692(gp)
  494af4:	00000000 	nop
  494af8:	2421d394 	addiu	at,at,-11372
  494afc:	00221021 	addu	v0,at,v0
  494b00:	8c420000 	lw	v0,0(v0)
  494b04:	00000000 	nop
  494b08:	00621826 	xor	v1,v1,v0
  494b0c:	8c820000 	lw	v0,0(a0)
  494b10:	00000000 	nop
  494b14:	00431026 	xor	v0,v0,v1
  494b18:	afc20008 	sw	v0,8(s8)
  494b1c:	8fc20028 	lw	v0,40(s8)
  494b20:	00000000 	nop
  494b24:	24440084 	addiu	a0,v0,132
  494b28:	93c2001f 	lbu	v0,31(s8)
  494b2c:	00000000 	nop
  494b30:	00021080 	sll	v0,v0,0x2
  494b34:	8f83804c 	lw	v1,-32692(gp)
  494b38:	00000000 	nop
  494b3c:	2463d394 	addiu	v1,v1,-11372
  494b40:	00621821 	addu	v1,v1,v0
  494b44:	8fc20020 	lw	v0,32(s8)
  494b48:	00000000 	nop
  494b4c:	00021202 	srl	v0,v0,0x8
  494b50:	304200ff 	andi	v0,v0,0xff
  494b54:	00021080 	sll	v0,v0,0x2
  494b58:	24420400 	addiu	v0,v0,1024
  494b5c:	8f81804c 	lw	at,-32692(gp)
  494b60:	00000000 	nop
  494b64:	2421d394 	addiu	at,at,-11372
  494b68:	00221021 	addu	v0,at,v0
  494b6c:	8c630000 	lw	v1,0(v1)
  494b70:	8c420000 	lw	v0,0(v0)
  494b74:	00000000 	nop
  494b78:	00621826 	xor	v1,v1,v0
  494b7c:	8fc20024 	lw	v0,36(s8)
  494b80:	00000000 	nop
  494b84:	00021402 	srl	v0,v0,0x10
  494b88:	304200ff 	andi	v0,v0,0xff
  494b8c:	00021080 	sll	v0,v0,0x2
  494b90:	24420800 	addiu	v0,v0,2048
  494b94:	8f81804c 	lw	at,-32692(gp)
  494b98:	00000000 	nop
  494b9c:	2421d394 	addiu	at,at,-11372
  494ba0:	00221021 	addu	v0,at,v0
  494ba4:	8c420000 	lw	v0,0(v0)
  494ba8:	00000000 	nop
  494bac:	00621826 	xor	v1,v1,v0
  494bb0:	8fc20018 	lw	v0,24(s8)
  494bb4:	00000000 	nop
  494bb8:	00021602 	srl	v0,v0,0x18
  494bbc:	304200ff 	andi	v0,v0,0xff
  494bc0:	00021080 	sll	v0,v0,0x2
  494bc4:	24420c00 	addiu	v0,v0,3072
  494bc8:	8f81804c 	lw	at,-32692(gp)
  494bcc:	00000000 	nop
  494bd0:	2421d394 	addiu	at,at,-11372
  494bd4:	00221021 	addu	v0,at,v0
  494bd8:	8c420000 	lw	v0,0(v0)
  494bdc:	00000000 	nop
  494be0:	00621826 	xor	v1,v1,v0
  494be4:	8c820000 	lw	v0,0(a0)
  494be8:	00000000 	nop
  494bec:	00431026 	xor	v0,v0,v1
  494bf0:	afc2000c 	sw	v0,12(s8)
  494bf4:	8fc20028 	lw	v0,40(s8)
  494bf8:	00000000 	nop
  494bfc:	24440088 	addiu	a0,v0,136
  494c00:	93c20023 	lbu	v0,35(s8)
  494c04:	00000000 	nop
  494c08:	00021080 	sll	v0,v0,0x2
  494c0c:	8f83804c 	lw	v1,-32692(gp)
  494c10:	00000000 	nop
  494c14:	2463d394 	addiu	v1,v1,-11372
  494c18:	00621821 	addu	v1,v1,v0
  494c1c:	8fc20024 	lw	v0,36(s8)
  494c20:	00000000 	nop
  494c24:	00021202 	srl	v0,v0,0x8
  494c28:	304200ff 	andi	v0,v0,0xff
  494c2c:	00021080 	sll	v0,v0,0x2
  494c30:	24420400 	addiu	v0,v0,1024
  494c34:	8f81804c 	lw	at,-32692(gp)
  494c38:	00000000 	nop
  494c3c:	2421d394 	addiu	at,at,-11372
  494c40:	00221021 	addu	v0,at,v0
  494c44:	8c630000 	lw	v1,0(v1)
  494c48:	8c420000 	lw	v0,0(v0)
  494c4c:	00000000 	nop
  494c50:	00621826 	xor	v1,v1,v0
  494c54:	8fc20018 	lw	v0,24(s8)
  494c58:	00000000 	nop
  494c5c:	00021402 	srl	v0,v0,0x10
  494c60:	304200ff 	andi	v0,v0,0xff
  494c64:	00021080 	sll	v0,v0,0x2
  494c68:	24420800 	addiu	v0,v0,2048
  494c6c:	8f81804c 	lw	at,-32692(gp)
  494c70:	00000000 	nop
  494c74:	2421d394 	addiu	at,at,-11372
  494c78:	00221021 	addu	v0,at,v0
  494c7c:	8c420000 	lw	v0,0(v0)
  494c80:	00000000 	nop
  494c84:	00621826 	xor	v1,v1,v0
  494c88:	8fc2001c 	lw	v0,28(s8)
  494c8c:	00000000 	nop
  494c90:	00021602 	srl	v0,v0,0x18
  494c94:	304200ff 	andi	v0,v0,0xff
  494c98:	00021080 	sll	v0,v0,0x2
  494c9c:	24420c00 	addiu	v0,v0,3072
  494ca0:	8f81804c 	lw	at,-32692(gp)
  494ca4:	00000000 	nop
  494ca8:	2421d394 	addiu	at,at,-11372
  494cac:	00221021 	addu	v0,at,v0
  494cb0:	8c420000 	lw	v0,0(v0)
  494cb4:	00000000 	nop
  494cb8:	00621826 	xor	v1,v1,v0
  494cbc:	8c820000 	lw	v0,0(a0)
  494cc0:	00000000 	nop
  494cc4:	00431026 	xor	v0,v0,v1
  494cc8:	afc20010 	sw	v0,16(s8)
  494ccc:	8fc20028 	lw	v0,40(s8)
  494cd0:	00000000 	nop
  494cd4:	2444008c 	addiu	a0,v0,140
  494cd8:	93c20027 	lbu	v0,39(s8)
  494cdc:	00000000 	nop
  494ce0:	00021080 	sll	v0,v0,0x2
  494ce4:	8f83804c 	lw	v1,-32692(gp)
  494ce8:	00000000 	nop
  494cec:	2463d394 	addiu	v1,v1,-11372
  494cf0:	00621821 	addu	v1,v1,v0
  494cf4:	8fc20018 	lw	v0,24(s8)
  494cf8:	00000000 	nop
  494cfc:	00021202 	srl	v0,v0,0x8
  494d00:	304200ff 	andi	v0,v0,0xff
  494d04:	00021080 	sll	v0,v0,0x2
  494d08:	24420400 	addiu	v0,v0,1024
  494d0c:	8f81804c 	lw	at,-32692(gp)
  494d10:	00000000 	nop
  494d14:	2421d394 	addiu	at,at,-11372
  494d18:	00221021 	addu	v0,at,v0
  494d1c:	8c630000 	lw	v1,0(v1)
  494d20:	8c420000 	lw	v0,0(v0)
  494d24:	00000000 	nop
  494d28:	00621826 	xor	v1,v1,v0
  494d2c:	8fc2001c 	lw	v0,28(s8)
  494d30:	00000000 	nop
  494d34:	00021402 	srl	v0,v0,0x10
  494d38:	304200ff 	andi	v0,v0,0xff
  494d3c:	00021080 	sll	v0,v0,0x2
  494d40:	24420800 	addiu	v0,v0,2048
  494d44:	8f81804c 	lw	at,-32692(gp)
  494d48:	00000000 	nop
  494d4c:	2421d394 	addiu	at,at,-11372
  494d50:	00221021 	addu	v0,at,v0
  494d54:	8c420000 	lw	v0,0(v0)
  494d58:	00000000 	nop
  494d5c:	00621826 	xor	v1,v1,v0
  494d60:	8fc20020 	lw	v0,32(s8)
  494d64:	00000000 	nop
  494d68:	00021602 	srl	v0,v0,0x18
  494d6c:	304200ff 	andi	v0,v0,0xff
  494d70:	00021080 	sll	v0,v0,0x2
  494d74:	24420c00 	addiu	v0,v0,3072
  494d78:	8f81804c 	lw	at,-32692(gp)
  494d7c:	00000000 	nop
  494d80:	2421d394 	addiu	at,at,-11372
  494d84:	00221021 	addu	v0,at,v0
  494d88:	8c420000 	lw	v0,0(v0)
  494d8c:	00000000 	nop
  494d90:	00621826 	xor	v1,v1,v0
  494d94:	8c820000 	lw	v0,0(a0)
  494d98:	00000000 	nop
  494d9c:	00431026 	xor	v0,v0,v1
  494da0:	afc20014 	sw	v0,20(s8)
                round(fwd_lrnd, b0, b1, kp + 9 * nc);
  494da4:	8fc20028 	lw	v0,40(s8)
  494da8:	00000000 	nop
  494dac:	24440090 	addiu	a0,v0,144
  494db0:	93c2000b 	lbu	v0,11(s8)
  494db4:	00000000 	nop
  494db8:	00021080 	sll	v0,v0,0x2
  494dbc:	8f83804c 	lw	v1,-32692(gp)
  494dc0:	00000000 	nop
  494dc4:	2463f394 	addiu	v1,v1,-3180
  494dc8:	00621821 	addu	v1,v1,v0
  494dcc:	8fc2000c 	lw	v0,12(s8)
  494dd0:	00000000 	nop
  494dd4:	00021202 	srl	v0,v0,0x8
  494dd8:	304200ff 	andi	v0,v0,0xff
  494ddc:	00021080 	sll	v0,v0,0x2
  494de0:	24420400 	addiu	v0,v0,1024
  494de4:	8f81804c 	lw	at,-32692(gp)
  494de8:	00000000 	nop
  494dec:	2421f394 	addiu	at,at,-3180
  494df0:	00221021 	addu	v0,at,v0
  494df4:	8c630000 	lw	v1,0(v1)
  494df8:	8c420000 	lw	v0,0(v0)
  494dfc:	00000000 	nop
  494e00:	00621826 	xor	v1,v1,v0
  494e04:	8fc20010 	lw	v0,16(s8)
  494e08:	00000000 	nop
  494e0c:	00021402 	srl	v0,v0,0x10
  494e10:	304200ff 	andi	v0,v0,0xff
  494e14:	00021080 	sll	v0,v0,0x2
  494e18:	24420800 	addiu	v0,v0,2048
  494e1c:	8f81804c 	lw	at,-32692(gp)
  494e20:	00000000 	nop
  494e24:	2421f394 	addiu	at,at,-3180
  494e28:	00221021 	addu	v0,at,v0
  494e2c:	8c420000 	lw	v0,0(v0)
  494e30:	00000000 	nop
  494e34:	00621826 	xor	v1,v1,v0
  494e38:	8fc20014 	lw	v0,20(s8)
  494e3c:	00000000 	nop
  494e40:	00021602 	srl	v0,v0,0x18
  494e44:	304200ff 	andi	v0,v0,0xff
  494e48:	00021080 	sll	v0,v0,0x2
  494e4c:	24420c00 	addiu	v0,v0,3072
  494e50:	8f81804c 	lw	at,-32692(gp)
  494e54:	00000000 	nop
  494e58:	2421f394 	addiu	at,at,-3180
  494e5c:	00221021 	addu	v0,at,v0
  494e60:	8c420000 	lw	v0,0(v0)
  494e64:	00000000 	nop
  494e68:	00621826 	xor	v1,v1,v0
  494e6c:	8c820000 	lw	v0,0(a0)
  494e70:	00000000 	nop
  494e74:	00431026 	xor	v0,v0,v1
  494e78:	afc20018 	sw	v0,24(s8)
  494e7c:	8fc20028 	lw	v0,40(s8)
  494e80:	00000000 	nop
  494e84:	24440094 	addiu	a0,v0,148
  494e88:	93c2000f 	lbu	v0,15(s8)
  494e8c:	00000000 	nop
  494e90:	00021080 	sll	v0,v0,0x2
  494e94:	8f83804c 	lw	v1,-32692(gp)
  494e98:	00000000 	nop
  494e9c:	2463f394 	addiu	v1,v1,-3180
  494ea0:	00621821 	addu	v1,v1,v0
  494ea4:	8fc20010 	lw	v0,16(s8)
  494ea8:	00000000 	nop
  494eac:	00021202 	srl	v0,v0,0x8
  494eb0:	304200ff 	andi	v0,v0,0xff
  494eb4:	00021080 	sll	v0,v0,0x2
  494eb8:	24420400 	addiu	v0,v0,1024
  494ebc:	8f81804c 	lw	at,-32692(gp)
  494ec0:	00000000 	nop
  494ec4:	2421f394 	addiu	at,at,-3180
  494ec8:	00221021 	addu	v0,at,v0
  494ecc:	8c630000 	lw	v1,0(v1)
  494ed0:	8c420000 	lw	v0,0(v0)
  494ed4:	00000000 	nop
  494ed8:	00621826 	xor	v1,v1,v0
  494edc:	8fc20014 	lw	v0,20(s8)
  494ee0:	00000000 	nop
  494ee4:	00021402 	srl	v0,v0,0x10
  494ee8:	304200ff 	andi	v0,v0,0xff
  494eec:	00021080 	sll	v0,v0,0x2
  494ef0:	24420800 	addiu	v0,v0,2048
  494ef4:	8f81804c 	lw	at,-32692(gp)
  494ef8:	00000000 	nop
  494efc:	2421f394 	addiu	at,at,-3180
  494f00:	00221021 	addu	v0,at,v0
  494f04:	8c420000 	lw	v0,0(v0)
  494f08:	00000000 	nop
  494f0c:	00621826 	xor	v1,v1,v0
  494f10:	8fc20008 	lw	v0,8(s8)
  494f14:	00000000 	nop
  494f18:	00021602 	srl	v0,v0,0x18
  494f1c:	304200ff 	andi	v0,v0,0xff
  494f20:	00021080 	sll	v0,v0,0x2
  494f24:	24420c00 	addiu	v0,v0,3072
  494f28:	8f81804c 	lw	at,-32692(gp)
  494f2c:	00000000 	nop
  494f30:	2421f394 	addiu	at,at,-3180
  494f34:	00221021 	addu	v0,at,v0
  494f38:	8c420000 	lw	v0,0(v0)
  494f3c:	00000000 	nop
  494f40:	00621826 	xor	v1,v1,v0
  494f44:	8c820000 	lw	v0,0(a0)
  494f48:	00000000 	nop
  494f4c:	00431026 	xor	v0,v0,v1
  494f50:	afc2001c 	sw	v0,28(s8)
  494f54:	8fc20028 	lw	v0,40(s8)
  494f58:	00000000 	nop
  494f5c:	24440098 	addiu	a0,v0,152
  494f60:	93c20013 	lbu	v0,19(s8)
  494f64:	00000000 	nop
  494f68:	00021080 	sll	v0,v0,0x2
  494f6c:	8f83804c 	lw	v1,-32692(gp)
  494f70:	00000000 	nop
  494f74:	2463f394 	addiu	v1,v1,-3180
  494f78:	00621821 	addu	v1,v1,v0
  494f7c:	8fc20014 	lw	v0,20(s8)
  494f80:	00000000 	nop
  494f84:	00021202 	srl	v0,v0,0x8
  494f88:	304200ff 	andi	v0,v0,0xff
  494f8c:	00021080 	sll	v0,v0,0x2
  494f90:	24420400 	addiu	v0,v0,1024
  494f94:	8f81804c 	lw	at,-32692(gp)
  494f98:	00000000 	nop
  494f9c:	2421f394 	addiu	at,at,-3180
  494fa0:	00221021 	addu	v0,at,v0
  494fa4:	8c630000 	lw	v1,0(v1)
  494fa8:	8c420000 	lw	v0,0(v0)
  494fac:	00000000 	nop
  494fb0:	00621826 	xor	v1,v1,v0
  494fb4:	8fc20008 	lw	v0,8(s8)
  494fb8:	00000000 	nop
  494fbc:	00021402 	srl	v0,v0,0x10
  494fc0:	304200ff 	andi	v0,v0,0xff
  494fc4:	00021080 	sll	v0,v0,0x2
  494fc8:	24420800 	addiu	v0,v0,2048
  494fcc:	8f81804c 	lw	at,-32692(gp)
  494fd0:	00000000 	nop
  494fd4:	2421f394 	addiu	at,at,-3180
  494fd8:	00221021 	addu	v0,at,v0
  494fdc:	8c420000 	lw	v0,0(v0)
  494fe0:	00000000 	nop
  494fe4:	00621826 	xor	v1,v1,v0
  494fe8:	8fc2000c 	lw	v0,12(s8)
  494fec:	00000000 	nop
  494ff0:	00021602 	srl	v0,v0,0x18
  494ff4:	304200ff 	andi	v0,v0,0xff
  494ff8:	00021080 	sll	v0,v0,0x2
  494ffc:	24420c00 	addiu	v0,v0,3072
  495000:	8f81804c 	lw	at,-32692(gp)
  495004:	00000000 	nop
  495008:	2421f394 	addiu	at,at,-3180
  49500c:	00221021 	addu	v0,at,v0
  495010:	8c420000 	lw	v0,0(v0)
  495014:	00000000 	nop
  495018:	00621826 	xor	v1,v1,v0
  49501c:	8c820000 	lw	v0,0(a0)
  495020:	00000000 	nop
  495024:	00431026 	xor	v0,v0,v1
  495028:	afc20020 	sw	v0,32(s8)
  49502c:	8fc20028 	lw	v0,40(s8)
  495030:	00000000 	nop
  495034:	2444009c 	addiu	a0,v0,156
  495038:	93c20017 	lbu	v0,23(s8)
  49503c:	00000000 	nop
  495040:	00021080 	sll	v0,v0,0x2
  495044:	8f83804c 	lw	v1,-32692(gp)
  495048:	00000000 	nop
  49504c:	2463f394 	addiu	v1,v1,-3180
  495050:	00621821 	addu	v1,v1,v0
  495054:	8fc20008 	lw	v0,8(s8)
  495058:	00000000 	nop
  49505c:	00021202 	srl	v0,v0,0x8
  495060:	304200ff 	andi	v0,v0,0xff
  495064:	00021080 	sll	v0,v0,0x2
  495068:	24420400 	addiu	v0,v0,1024
  49506c:	8f81804c 	lw	at,-32692(gp)
  495070:	00000000 	nop
  495074:	2421f394 	addiu	at,at,-3180
  495078:	00221021 	addu	v0,at,v0
  49507c:	8c630000 	lw	v1,0(v1)
  495080:	8c420000 	lw	v0,0(v0)
  495084:	00000000 	nop
  495088:	00621826 	xor	v1,v1,v0
  49508c:	8fc2000c 	lw	v0,12(s8)
  495090:	00000000 	nop
  495094:	00021402 	srl	v0,v0,0x10
  495098:	304200ff 	andi	v0,v0,0xff
  49509c:	00021080 	sll	v0,v0,0x2
  4950a0:	24420800 	addiu	v0,v0,2048
  4950a4:	8f81804c 	lw	at,-32692(gp)
  4950a8:	00000000 	nop
  4950ac:	2421f394 	addiu	at,at,-3180
  4950b0:	00221021 	addu	v0,at,v0
  4950b4:	8c420000 	lw	v0,0(v0)
  4950b8:	00000000 	nop
  4950bc:	00621826 	xor	v1,v1,v0
  4950c0:	8fc20010 	lw	v0,16(s8)
  4950c4:	00000000 	nop
  4950c8:	00021602 	srl	v0,v0,0x18
  4950cc:	304200ff 	andi	v0,v0,0xff
  4950d0:	00021080 	sll	v0,v0,0x2
  4950d4:	24420c00 	addiu	v0,v0,3072
  4950d8:	8f81804c 	lw	at,-32692(gp)
  4950dc:	00000000 	nop
  4950e0:	2421f394 	addiu	at,at,-3180
  4950e4:	00221021 	addu	v0,at,v0
  4950e8:	8c420000 	lw	v0,0(v0)
  4950ec:	00000000 	nop
  4950f0:	00621826 	xor	v1,v1,v0
  4950f4:	8c820000 	lw	v0,0(a0)
  4950f8:	00000000 	nop
  4950fc:	00431026 	xor	v0,v0,v1
  495100:	afc20024 	sw	v0,36(s8)
    }

#elif defined(PARTIAL_UNROLL)
    {   u_int32_t    rnd;

        for(rnd = 0; rnd < (cx->aes_Nrnd >> 1) - 1; ++rnd)
        {
            round(fwd_rnd, b1, b0, kp); 
            round(fwd_rnd, b0, b1, kp + nc); kp += 2 * nc;
        }

        round(fwd_rnd,  b1, b0, kp);
        round(fwd_lrnd, b0, b1, kp + nc);
    }
#else
    {   u_int32_t    rnd;

        for(rnd = 0; rnd < cx->aes_Nrnd - 1; ++rnd)
        {
            round(fwd_rnd, b1, b0, kp); 
            l_copy(b0, b1); kp += nc;
        }

        round(fwd_lrnd, b0, b1, kp);
    }
#endif

    state_out(out_blk, b0);
  495104:	93c3001b 	lbu	v1,27(s8)
  495108:	8fc20040 	lw	v0,64(s8)
  49510c:	00000000 	nop
  495110:	a0430000 	sb	v1,0(v0)
  495114:	8fc20040 	lw	v0,64(s8)
  495118:	00000000 	nop
  49511c:	24430001 	addiu	v1,v0,1
  495120:	8fc20018 	lw	v0,24(s8)
  495124:	00000000 	nop
  495128:	00021202 	srl	v0,v0,0x8
  49512c:	a0620000 	sb	v0,0(v1)
  495130:	8fc20040 	lw	v0,64(s8)
  495134:	00000000 	nop
  495138:	24430002 	addiu	v1,v0,2
  49513c:	8fc20018 	lw	v0,24(s8)
  495140:	00000000 	nop
  495144:	00021402 	srl	v0,v0,0x10
  495148:	a0620000 	sb	v0,0(v1)
  49514c:	8fc20040 	lw	v0,64(s8)
  495150:	00000000 	nop
  495154:	24430003 	addiu	v1,v0,3
  495158:	8fc20018 	lw	v0,24(s8)
  49515c:	00000000 	nop
  495160:	00021602 	srl	v0,v0,0x18
  495164:	a0620000 	sb	v0,0(v1)
  495168:	8fc20040 	lw	v0,64(s8)
  49516c:	00000000 	nop
  495170:	24430004 	addiu	v1,v0,4
  495174:	93c2001f 	lbu	v0,31(s8)
  495178:	00000000 	nop
  49517c:	a0620000 	sb	v0,0(v1)
  495180:	8fc20040 	lw	v0,64(s8)
  495184:	00000000 	nop
  495188:	24430005 	addiu	v1,v0,5
  49518c:	8fc2001c 	lw	v0,28(s8)
  495190:	00000000 	nop
  495194:	00021202 	srl	v0,v0,0x8
  495198:	a0620000 	sb	v0,0(v1)
  49519c:	8fc20040 	lw	v0,64(s8)
  4951a0:	00000000 	nop
  4951a4:	24430006 	addiu	v1,v0,6
  4951a8:	8fc2001c 	lw	v0,28(s8)
  4951ac:	00000000 	nop
  4951b0:	00021402 	srl	v0,v0,0x10
  4951b4:	a0620000 	sb	v0,0(v1)
  4951b8:	8fc20040 	lw	v0,64(s8)
  4951bc:	00000000 	nop
  4951c0:	24430007 	addiu	v1,v0,7
  4951c4:	8fc2001c 	lw	v0,28(s8)
  4951c8:	00000000 	nop
  4951cc:	00021602 	srl	v0,v0,0x18
  4951d0:	a0620000 	sb	v0,0(v1)
  4951d4:	8fc20040 	lw	v0,64(s8)
  4951d8:	00000000 	nop
  4951dc:	24430008 	addiu	v1,v0,8
  4951e0:	93c20023 	lbu	v0,35(s8)
  4951e4:	00000000 	nop
  4951e8:	a0620000 	sb	v0,0(v1)
  4951ec:	8fc20040 	lw	v0,64(s8)
  4951f0:	00000000 	nop
  4951f4:	24430009 	addiu	v1,v0,9
  4951f8:	8fc20020 	lw	v0,32(s8)
  4951fc:	00000000 	nop
  495200:	00021202 	srl	v0,v0,0x8
  495204:	a0620000 	sb	v0,0(v1)
  495208:	8fc20040 	lw	v0,64(s8)
  49520c:	00000000 	nop
  495210:	2443000a 	addiu	v1,v0,10
  495214:	8fc20020 	lw	v0,32(s8)
  495218:	00000000 	nop
  49521c:	00021402 	srl	v0,v0,0x10
  495220:	a0620000 	sb	v0,0(v1)
  495224:	8fc20040 	lw	v0,64(s8)
  495228:	00000000 	nop
  49522c:	2443000b 	addiu	v1,v0,11
  495230:	8fc20020 	lw	v0,32(s8)
  495234:	00000000 	nop
  495238:	00021602 	srl	v0,v0,0x18
  49523c:	a0620000 	sb	v0,0(v1)
  495240:	8fc20040 	lw	v0,64(s8)
  495244:	00000000 	nop
  495248:	2443000c 	addiu	v1,v0,12
  49524c:	93c20027 	lbu	v0,39(s8)
  495250:	00000000 	nop
  495254:	a0620000 	sb	v0,0(v1)
  495258:	8fc20040 	lw	v0,64(s8)
  49525c:	00000000 	nop
  495260:	2443000d 	addiu	v1,v0,13
  495264:	8fc20024 	lw	v0,36(s8)
  495268:	00000000 	nop
  49526c:	00021202 	srl	v0,v0,0x8
  495270:	a0620000 	sb	v0,0(v1)
  495274:	8fc20040 	lw	v0,64(s8)
  495278:	00000000 	nop
  49527c:	2443000e 	addiu	v1,v0,14
  495280:	8fc20024 	lw	v0,36(s8)
  495284:	00000000 	nop
  495288:	00021402 	srl	v0,v0,0x10
  49528c:	a0620000 	sb	v0,0(v1)
  495290:	8fc20040 	lw	v0,64(s8)
  495294:	00000000 	nop
  495298:	2443000f 	addiu	v1,v0,15
  49529c:	8fc20024 	lw	v0,36(s8)
  4952a0:	00000000 	nop
  4952a4:	00021602 	srl	v0,v0,0x18
  4952a8:	a0620000 	sb	v0,0(v1)
}
  4952ac:	03c0e821 	move	sp,s8
  4952b0:	8fbe0034 	lw	s8,52(sp)
  4952b4:	27bd0038 	addiu	sp,sp,56
  4952b8:	03e00008 	jr	ra
  4952bc:	00000000 	nop

004952c0 <aes_decrypt>:
  4952c0:	3c1c0fb7 	lui	gp,0xfb7
  4952c4:	279c76b0 	addiu	gp,gp,30384
  4952c8:	0399e021 	addu	gp,gp,t9
  4952cc:	27bdffc8 	addiu	sp,sp,-56
  4952d0:	afbc0000 	sw	gp,0(sp)
  4952d4:	afbe0034 	sw	s8,52(sp)
  4952d8:	afbc0030 	sw	gp,48(sp)
  4952dc:	03a0f021 	move	s8,sp
  4952e0:	afc40038 	sw	a0,56(s8)
  4952e4:	afc5003c 	sw	a1,60(s8)
  4952e8:	afc60040 	sw	a2,64(s8)

void aes_decrypt(const aes_context *cx, const unsigned char in_blk[], unsigned char out_blk[])
{   u_int32_t        locals(b0, b1);
    const u_int32_t  *kp = cx->aes_d_key;
  4952ec:	8fc20038 	lw	v0,56(s8)
  4952f0:	00000000 	nop
  4952f4:	24420108 	addiu	v0,v0,264
  4952f8:	afc20028 	sw	v0,40(s8)

#if !defined(ONE_TABLE) && !defined(FOUR_TABLES)
    u_int32_t        f2, f4, f8, f9; 
#endif

    state_in(b0, in_blk, kp); kp += nc;
  4952fc:	8fc2003c 	lw	v0,60(s8)
  495300:	00000000 	nop
  495304:	90430000 	lbu	v1,0(v0)
  495308:	8fc2003c 	lw	v0,60(s8)
  49530c:	00000000 	nop
  495310:	24420001 	addiu	v0,v0,1
  495314:	90420000 	lbu	v0,0(v0)
  495318:	00000000 	nop
  49531c:	00021200 	sll	v0,v0,0x8
  495320:	00621825 	or	v1,v1,v0
  495324:	8fc2003c 	lw	v0,60(s8)
  495328:	00000000 	nop
  49532c:	24420002 	addiu	v0,v0,2
  495330:	90420000 	lbu	v0,0(v0)
  495334:	00000000 	nop
  495338:	00021400 	sll	v0,v0,0x10
  49533c:	00621825 	or	v1,v1,v0
  495340:	8fc2003c 	lw	v0,60(s8)
  495344:	00000000 	nop
  495348:	24420003 	addiu	v0,v0,3
  49534c:	90420000 	lbu	v0,0(v0)
  495350:	00000000 	nop
  495354:	00021600 	sll	v0,v0,0x18
  495358:	00621825 	or	v1,v1,v0
  49535c:	8fc20028 	lw	v0,40(s8)
  495360:	00000000 	nop
  495364:	8c420000 	lw	v0,0(v0)
  495368:	00000000 	nop
  49536c:	00621026 	xor	v0,v1,v0
  495370:	afc20018 	sw	v0,24(s8)
  495374:	8fc2003c 	lw	v0,60(s8)
  495378:	00000000 	nop
  49537c:	24420004 	addiu	v0,v0,4
  495380:	90430000 	lbu	v1,0(v0)
  495384:	8fc2003c 	lw	v0,60(s8)
  495388:	00000000 	nop
  49538c:	24420005 	addiu	v0,v0,5
  495390:	90420000 	lbu	v0,0(v0)
  495394:	00000000 	nop
  495398:	00021200 	sll	v0,v0,0x8
  49539c:	00621825 	or	v1,v1,v0
  4953a0:	8fc2003c 	lw	v0,60(s8)
  4953a4:	00000000 	nop
  4953a8:	24420006 	addiu	v0,v0,6
  4953ac:	90420000 	lbu	v0,0(v0)
  4953b0:	00000000 	nop
  4953b4:	00021400 	sll	v0,v0,0x10
  4953b8:	00621825 	or	v1,v1,v0
  4953bc:	8fc2003c 	lw	v0,60(s8)
  4953c0:	00000000 	nop
  4953c4:	24420007 	addiu	v0,v0,7
  4953c8:	90420000 	lbu	v0,0(v0)
  4953cc:	00000000 	nop
  4953d0:	00021600 	sll	v0,v0,0x18
  4953d4:	00621825 	or	v1,v1,v0
  4953d8:	8fc20028 	lw	v0,40(s8)
  4953dc:	00000000 	nop
  4953e0:	24420004 	addiu	v0,v0,4
  4953e4:	8c420000 	lw	v0,0(v0)
  4953e8:	00000000 	nop
  4953ec:	00621026 	xor	v0,v1,v0
  4953f0:	afc2001c 	sw	v0,28(s8)
  4953f4:	8fc2003c 	lw	v0,60(s8)
  4953f8:	00000000 	nop
  4953fc:	24420008 	addiu	v0,v0,8
  495400:	90430000 	lbu	v1,0(v0)
  495404:	8fc2003c 	lw	v0,60(s8)
  495408:	00000000 	nop
  49540c:	24420009 	addiu	v0,v0,9
  495410:	90420000 	lbu	v0,0(v0)
  495414:	00000000 	nop
  495418:	00021200 	sll	v0,v0,0x8
  49541c:	00621825 	or	v1,v1,v0
  495420:	8fc2003c 	lw	v0,60(s8)
  495424:	00000000 	nop
  495428:	2442000a 	addiu	v0,v0,10
  49542c:	90420000 	lbu	v0,0(v0)
  495430:	00000000 	nop
  495434:	00021400 	sll	v0,v0,0x10
  495438:	00621825 	or	v1,v1,v0
  49543c:	8fc2003c 	lw	v0,60(s8)
  495440:	00000000 	nop
  495444:	2442000b 	addiu	v0,v0,11
  495448:	90420000 	lbu	v0,0(v0)
  49544c:	00000000 	nop
  495450:	00021600 	sll	v0,v0,0x18
  495454:	00621825 	or	v1,v1,v0
  495458:	8fc20028 	lw	v0,40(s8)
  49545c:	00000000 	nop
  495460:	24420008 	addiu	v0,v0,8
  495464:	8c420000 	lw	v0,0(v0)
  495468:	00000000 	nop
  49546c:	00621026 	xor	v0,v1,v0
  495470:	afc20020 	sw	v0,32(s8)
  495474:	8fc2003c 	lw	v0,60(s8)
  495478:	00000000 	nop
  49547c:	2442000c 	addiu	v0,v0,12
  495480:	90430000 	lbu	v1,0(v0)
  495484:	8fc2003c 	lw	v0,60(s8)
  495488:	00000000 	nop
  49548c:	2442000d 	addiu	v0,v0,13
  495490:	90420000 	lbu	v0,0(v0)
  495494:	00000000 	nop
  495498:	00021200 	sll	v0,v0,0x8
  49549c:	00621825 	or	v1,v1,v0
  4954a0:	8fc2003c 	lw	v0,60(s8)
  4954a4:	00000000 	nop
  4954a8:	2442000e 	addiu	v0,v0,14
  4954ac:	90420000 	lbu	v0,0(v0)
  4954b0:	00000000 	nop
  4954b4:	00021400 	sll	v0,v0,0x10
  4954b8:	00621825 	or	v1,v1,v0
  4954bc:	8fc2003c 	lw	v0,60(s8)
  4954c0:	00000000 	nop
  4954c4:	2442000f 	addiu	v0,v0,15
  4954c8:	90420000 	lbu	v0,0(v0)
  4954cc:	00000000 	nop
  4954d0:	00021600 	sll	v0,v0,0x18
  4954d4:	00621825 	or	v1,v1,v0
  4954d8:	8fc20028 	lw	v0,40(s8)
  4954dc:	00000000 	nop
  4954e0:	2442000c 	addiu	v0,v0,12
  4954e4:	8c420000 	lw	v0,0(v0)
  4954e8:	00000000 	nop
  4954ec:	00621026 	xor	v0,v1,v0
  4954f0:	afc20024 	sw	v0,36(s8)
  4954f4:	8fc20028 	lw	v0,40(s8)
  4954f8:	00000000 	nop
  4954fc:	24420010 	addiu	v0,v0,16
  495500:	afc20028 	sw	v0,40(s8)

#if defined(UNROLL)

    switch(cx->aes_Nrnd)
  495504:	8fc20038 	lw	v0,56(s8)
  495508:	00000000 	nop
  49550c:	8c420004 	lw	v0,4(v0)
  495510:	00000000 	nop
  495514:	afc2002c 	sw	v0,44(s8)
  495518:	2402000c 	li	v0,12
  49551c:	8fc3002c 	lw	v1,44(s8)
  495520:	00000000 	nop
  495524:	106201c7 	beq	v1,v0,495c44 <aes_decrypt+0x984>
  495528:	00000000 	nop
  49552c:	8fc3002c 	lw	v1,44(s8)
  495530:	00000000 	nop
  495534:	2c62000d 	sltiu	v0,v1,13
  495538:	10400008 	beqz	v0,49555c <aes_decrypt+0x29c>
  49553c:	00000000 	nop
  495540:	2402000a 	li	v0,10
  495544:	8fc3002c 	lw	v1,44(s8)
  495548:	00000000 	nop
  49554c:	10620370 	beq	v1,v0,496310 <aes_decrypt+0x1050>
  495550:	00000000 	nop
  495554:	10000bdd 	b	4984cc <aes_decrypt+0x320c>
  495558:	00000000 	nop
  49555c:	2402000e 	li	v0,14
  495560:	8fc3002c 	lw	v1,44(s8)
  495564:	00000000 	nop
  495568:	10620003 	beq	v1,v0,495578 <aes_decrypt+0x2b8>
  49556c:	00000000 	nop
  495570:	10000bd6 	b	4984cc <aes_decrypt+0x320c>
  495574:	00000000 	nop
    {
    case 14:    round(inv_rnd,  b1, b0, kp         );
  495578:	93c2001b 	lbu	v0,27(s8)
  49557c:	00000000 	nop
  495580:	00021080 	sll	v0,v0,0x2
  495584:	8f83804c 	lw	v1,-32692(gp)
  495588:	00000000 	nop
  49558c:	2463e394 	addiu	v1,v1,-7276
  495590:	00621821 	addu	v1,v1,v0
  495594:	8fc20024 	lw	v0,36(s8)
  495598:	00000000 	nop
  49559c:	00021202 	srl	v0,v0,0x8
  4955a0:	304200ff 	andi	v0,v0,0xff
  4955a4:	00021080 	sll	v0,v0,0x2
  4955a8:	24420400 	addiu	v0,v0,1024
  4955ac:	8f81804c 	lw	at,-32692(gp)
  4955b0:	00000000 	nop
  4955b4:	2421e394 	addiu	at,at,-7276
  4955b8:	00221021 	addu	v0,at,v0
  4955bc:	8c630000 	lw	v1,0(v1)
  4955c0:	8c420000 	lw	v0,0(v0)
  4955c4:	00000000 	nop
  4955c8:	00621826 	xor	v1,v1,v0
  4955cc:	8fc20020 	lw	v0,32(s8)
  4955d0:	00000000 	nop
  4955d4:	00021402 	srl	v0,v0,0x10
  4955d8:	304200ff 	andi	v0,v0,0xff
  4955dc:	00021080 	sll	v0,v0,0x2
  4955e0:	24420800 	addiu	v0,v0,2048
  4955e4:	8f81804c 	lw	at,-32692(gp)
  4955e8:	00000000 	nop
  4955ec:	2421e394 	addiu	at,at,-7276
  4955f0:	00221021 	addu	v0,at,v0
  4955f4:	8c420000 	lw	v0,0(v0)
  4955f8:	00000000 	nop
  4955fc:	00621826 	xor	v1,v1,v0
  495600:	8fc2001c 	lw	v0,28(s8)
  495604:	00000000 	nop
  495608:	00021602 	srl	v0,v0,0x18
  49560c:	304200ff 	andi	v0,v0,0xff
  495610:	00021080 	sll	v0,v0,0x2
  495614:	24420c00 	addiu	v0,v0,3072
  495618:	8f81804c 	lw	at,-32692(gp)
  49561c:	00000000 	nop
  495620:	2421e394 	addiu	at,at,-7276
  495624:	00221021 	addu	v0,at,v0
  495628:	8c420000 	lw	v0,0(v0)
  49562c:	00000000 	nop
  495630:	00621826 	xor	v1,v1,v0
  495634:	8fc20028 	lw	v0,40(s8)
  495638:	00000000 	nop
  49563c:	8c420000 	lw	v0,0(v0)
  495640:	00000000 	nop
  495644:	00431026 	xor	v0,v0,v1
  495648:	afc20008 	sw	v0,8(s8)
  49564c:	8fc20028 	lw	v0,40(s8)
  495650:	00000000 	nop
  495654:	24440004 	addiu	a0,v0,4
  495658:	93c2001f 	lbu	v0,31(s8)
  49565c:	00000000 	nop
  495660:	00021080 	sll	v0,v0,0x2
  495664:	8f83804c 	lw	v1,-32692(gp)
  495668:	00000000 	nop
  49566c:	2463e394 	addiu	v1,v1,-7276
  495670:	00621821 	addu	v1,v1,v0
  495674:	8fc20018 	lw	v0,24(s8)
  495678:	00000000 	nop
  49567c:	00021202 	srl	v0,v0,0x8
  495680:	304200ff 	andi	v0,v0,0xff
  495684:	00021080 	sll	v0,v0,0x2
  495688:	24420400 	addiu	v0,v0,1024
  49568c:	8f81804c 	lw	at,-32692(gp)
  495690:	00000000 	nop
  495694:	2421e394 	addiu	at,at,-7276
  495698:	00221021 	addu	v0,at,v0
  49569c:	8c630000 	lw	v1,0(v1)
  4956a0:	8c420000 	lw	v0,0(v0)
  4956a4:	00000000 	nop
  4956a8:	00621826 	xor	v1,v1,v0
  4956ac:	8fc20024 	lw	v0,36(s8)
  4956b0:	00000000 	nop
  4956b4:	00021402 	srl	v0,v0,0x10
  4956b8:	304200ff 	andi	v0,v0,0xff
  4956bc:	00021080 	sll	v0,v0,0x2
  4956c0:	24420800 	addiu	v0,v0,2048
  4956c4:	8f81804c 	lw	at,-32692(gp)
  4956c8:	00000000 	nop
  4956cc:	2421e394 	addiu	at,at,-7276
  4956d0:	00221021 	addu	v0,at,v0
  4956d4:	8c420000 	lw	v0,0(v0)
  4956d8:	00000000 	nop
  4956dc:	00621826 	xor	v1,v1,v0
  4956e0:	8fc20020 	lw	v0,32(s8)
  4956e4:	00000000 	nop
  4956e8:	00021602 	srl	v0,v0,0x18
  4956ec:	304200ff 	andi	v0,v0,0xff
  4956f0:	00021080 	sll	v0,v0,0x2
  4956f4:	24420c00 	addiu	v0,v0,3072
  4956f8:	8f81804c 	lw	at,-32692(gp)
  4956fc:	00000000 	nop
  495700:	2421e394 	addiu	at,at,-7276
  495704:	00221021 	addu	v0,at,v0
  495708:	8c420000 	lw	v0,0(v0)
  49570c:	00000000 	nop
  495710:	00621826 	xor	v1,v1,v0
  495714:	8c820000 	lw	v0,0(a0)
  495718:	00000000 	nop
  49571c:	00431026 	xor	v0,v0,v1
  495720:	afc2000c 	sw	v0,12(s8)
  495724:	8fc20028 	lw	v0,40(s8)
  495728:	00000000 	nop
  49572c:	24440008 	addiu	a0,v0,8
  495730:	93c20023 	lbu	v0,35(s8)
  495734:	00000000 	nop
  495738:	00021080 	sll	v0,v0,0x2
  49573c:	8f83804c 	lw	v1,-32692(gp)
  495740:	00000000 	nop
  495744:	2463e394 	addiu	v1,v1,-7276
  495748:	00621821 	addu	v1,v1,v0
  49574c:	8fc2001c 	lw	v0,28(s8)
  495750:	00000000 	nop
  495754:	00021202 	srl	v0,v0,0x8
  495758:	304200ff 	andi	v0,v0,0xff
  49575c:	00021080 	sll	v0,v0,0x2
  495760:	24420400 	addiu	v0,v0,1024
  495764:	8f81804c 	lw	at,-32692(gp)
  495768:	00000000 	nop
  49576c:	2421e394 	addiu	at,at,-7276
  495770:	00221021 	addu	v0,at,v0
  495774:	8c630000 	lw	v1,0(v1)
  495778:	8c420000 	lw	v0,0(v0)
  49577c:	00000000 	nop
  495780:	00621826 	xor	v1,v1,v0
  495784:	8fc20018 	lw	v0,24(s8)
  495788:	00000000 	nop
  49578c:	00021402 	srl	v0,v0,0x10
  495790:	304200ff 	andi	v0,v0,0xff
  495794:	00021080 	sll	v0,v0,0x2
  495798:	24420800 	addiu	v0,v0,2048
  49579c:	8f81804c 	lw	at,-32692(gp)
  4957a0:	00000000 	nop
  4957a4:	2421e394 	addiu	at,at,-7276
  4957a8:	00221021 	addu	v0,at,v0
  4957ac:	8c420000 	lw	v0,0(v0)
  4957b0:	00000000 	nop
  4957b4:	00621826 	xor	v1,v1,v0
  4957b8:	8fc20024 	lw	v0,36(s8)
  4957bc:	00000000 	nop
  4957c0:	00021602 	srl	v0,v0,0x18
  4957c4:	304200ff 	andi	v0,v0,0xff
  4957c8:	00021080 	sll	v0,v0,0x2
  4957cc:	24420c00 	addiu	v0,v0,3072
  4957d0:	8f81804c 	lw	at,-32692(gp)
  4957d4:	00000000 	nop
  4957d8:	2421e394 	addiu	at,at,-7276
  4957dc:	00221021 	addu	v0,at,v0
  4957e0:	8c420000 	lw	v0,0(v0)
  4957e4:	00000000 	nop
  4957e8:	00621826 	xor	v1,v1,v0
  4957ec:	8c820000 	lw	v0,0(a0)
  4957f0:	00000000 	nop
  4957f4:	00431026 	xor	v0,v0,v1
  4957f8:	afc20010 	sw	v0,16(s8)
  4957fc:	8fc20028 	lw	v0,40(s8)
  495800:	00000000 	nop
  495804:	2444000c 	addiu	a0,v0,12
  495808:	93c20027 	lbu	v0,39(s8)
  49580c:	00000000 	nop
  495810:	00021080 	sll	v0,v0,0x2
  495814:	8f83804c 	lw	v1,-32692(gp)
  495818:	00000000 	nop
  49581c:	2463e394 	addiu	v1,v1,-7276
  495820:	00621821 	addu	v1,v1,v0
  495824:	8fc20020 	lw	v0,32(s8)
  495828:	00000000 	nop
  49582c:	00021202 	srl	v0,v0,0x8
  495830:	304200ff 	andi	v0,v0,0xff
  495834:	00021080 	sll	v0,v0,0x2
  495838:	24420400 	addiu	v0,v0,1024
  49583c:	8f81804c 	lw	at,-32692(gp)
  495840:	00000000 	nop
  495844:	2421e394 	addiu	at,at,-7276
  495848:	00221021 	addu	v0,at,v0
  49584c:	8c630000 	lw	v1,0(v1)
  495850:	8c420000 	lw	v0,0(v0)
  495854:	00000000 	nop
  495858:	00621826 	xor	v1,v1,v0
  49585c:	8fc2001c 	lw	v0,28(s8)
  495860:	00000000 	nop
  495864:	00021402 	srl	v0,v0,0x10
  495868:	304200ff 	andi	v0,v0,0xff
  49586c:	00021080 	sll	v0,v0,0x2
  495870:	24420800 	addiu	v0,v0,2048
  495874:	8f81804c 	lw	at,-32692(gp)
  495878:	00000000 	nop
  49587c:	2421e394 	addiu	at,at,-7276
  495880:	00221021 	addu	v0,at,v0
  495884:	8c420000 	lw	v0,0(v0)
  495888:	00000000 	nop
  49588c:	00621826 	xor	v1,v1,v0
  495890:	8fc20018 	lw	v0,24(s8)
  495894:	00000000 	nop
  495898:	00021602 	srl	v0,v0,0x18
  49589c:	304200ff 	andi	v0,v0,0xff
  4958a0:	00021080 	sll	v0,v0,0x2
  4958a4:	24420c00 	addiu	v0,v0,3072
  4958a8:	8f81804c 	lw	at,-32692(gp)
  4958ac:	00000000 	nop
  4958b0:	2421e394 	addiu	at,at,-7276
  4958b4:	00221021 	addu	v0,at,v0
  4958b8:	8c420000 	lw	v0,0(v0)
  4958bc:	00000000 	nop
  4958c0:	00621826 	xor	v1,v1,v0
  4958c4:	8c820000 	lw	v0,0(a0)
  4958c8:	00000000 	nop
  4958cc:	00431026 	xor	v0,v0,v1
  4958d0:	afc20014 	sw	v0,20(s8)
                round(inv_rnd,  b0, b1, kp + nc    ); kp += 2 * nc;
  4958d4:	8fc20028 	lw	v0,40(s8)
  4958d8:	00000000 	nop
  4958dc:	24440010 	addiu	a0,v0,16
  4958e0:	93c2000b 	lbu	v0,11(s8)
  4958e4:	00000000 	nop
  4958e8:	00021080 	sll	v0,v0,0x2
  4958ec:	8f83804c 	lw	v1,-32692(gp)
  4958f0:	00000000 	nop
  4958f4:	2463e394 	addiu	v1,v1,-7276
  4958f8:	00621821 	addu	v1,v1,v0
  4958fc:	8fc20014 	lw	v0,20(s8)
  495900:	00000000 	nop
  495904:	00021202 	srl	v0,v0,0x8
  495908:	304200ff 	andi	v0,v0,0xff
  49590c:	00021080 	sll	v0,v0,0x2
  495910:	24420400 	addiu	v0,v0,1024
  495914:	8f81804c 	lw	at,-32692(gp)
  495918:	00000000 	nop
  49591c:	2421e394 	addiu	at,at,-7276
  495920:	00221021 	addu	v0,at,v0
  495924:	8c630000 	lw	v1,0(v1)
  495928:	8c420000 	lw	v0,0(v0)
  49592c:	00000000 	nop
  495930:	00621826 	xor	v1,v1,v0
  495934:	8fc20010 	lw	v0,16(s8)
  495938:	00000000 	nop
  49593c:	00021402 	srl	v0,v0,0x10
  495940:	304200ff 	andi	v0,v0,0xff
  495944:	00021080 	sll	v0,v0,0x2
  495948:	24420800 	addiu	v0,v0,2048
  49594c:	8f81804c 	lw	at,-32692(gp)
  495950:	00000000 	nop
  495954:	2421e394 	addiu	at,at,-7276
  495958:	00221021 	addu	v0,at,v0
  49595c:	8c420000 	lw	v0,0(v0)
  495960:	00000000 	nop
  495964:	00621826 	xor	v1,v1,v0
  495968:	8fc2000c 	lw	v0,12(s8)
  49596c:	00000000 	nop
  495970:	00021602 	srl	v0,v0,0x18
  495974:	304200ff 	andi	v0,v0,0xff
  495978:	00021080 	sll	v0,v0,0x2
  49597c:	24420c00 	addiu	v0,v0,3072
  495980:	8f81804c 	lw	at,-32692(gp)
  495984:	00000000 	nop
  495988:	2421e394 	addiu	at,at,-7276
  49598c:	00221021 	addu	v0,at,v0
  495990:	8c420000 	lw	v0,0(v0)
  495994:	00000000 	nop
  495998:	00621826 	xor	v1,v1,v0
  49599c:	8c820000 	lw	v0,0(a0)
  4959a0:	00000000 	nop
  4959a4:	00431026 	xor	v0,v0,v1
  4959a8:	afc20018 	sw	v0,24(s8)
  4959ac:	8fc20028 	lw	v0,40(s8)
  4959b0:	00000000 	nop
  4959b4:	24440014 	addiu	a0,v0,20
  4959b8:	93c2000f 	lbu	v0,15(s8)
  4959bc:	00000000 	nop
  4959c0:	00021080 	sll	v0,v0,0x2
  4959c4:	8f83804c 	lw	v1,-32692(gp)
  4959c8:	00000000 	nop
  4959cc:	2463e394 	addiu	v1,v1,-7276
  4959d0:	00621821 	addu	v1,v1,v0
  4959d4:	8fc20008 	lw	v0,8(s8)
  4959d8:	00000000 	nop
  4959dc:	00021202 	srl	v0,v0,0x8
  4959e0:	304200ff 	andi	v0,v0,0xff
  4959e4:	00021080 	sll	v0,v0,0x2
  4959e8:	24420400 	addiu	v0,v0,1024
  4959ec:	8f81804c 	lw	at,-32692(gp)
  4959f0:	00000000 	nop
  4959f4:	2421e394 	addiu	at,at,-7276
  4959f8:	00221021 	addu	v0,at,v0
  4959fc:	8c630000 	lw	v1,0(v1)
  495a00:	8c420000 	lw	v0,0(v0)
  495a04:	00000000 	nop
  495a08:	00621826 	xor	v1,v1,v0
  495a0c:	8fc20014 	lw	v0,20(s8)
  495a10:	00000000 	nop
  495a14:	00021402 	srl	v0,v0,0x10
  495a18:	304200ff 	andi	v0,v0,0xff
  495a1c:	00021080 	sll	v0,v0,0x2
  495a20:	24420800 	addiu	v0,v0,2048
  495a24:	8f81804c 	lw	at,-32692(gp)
  495a28:	00000000 	nop
  495a2c:	2421e394 	addiu	at,at,-7276
  495a30:	00221021 	addu	v0,at,v0
  495a34:	8c420000 	lw	v0,0(v0)
  495a38:	00000000 	nop
  495a3c:	00621826 	xor	v1,v1,v0
  495a40:	8fc20010 	lw	v0,16(s8)
  495a44:	00000000 	nop
  495a48:	00021602 	srl	v0,v0,0x18
  495a4c:	304200ff 	andi	v0,v0,0xff
  495a50:	00021080 	sll	v0,v0,0x2
  495a54:	24420c00 	addiu	v0,v0,3072
  495a58:	8f81804c 	lw	at,-32692(gp)
  495a5c:	00000000 	nop
  495a60:	2421e394 	addiu	at,at,-7276
  495a64:	00221021 	addu	v0,at,v0
  495a68:	8c420000 	lw	v0,0(v0)
  495a6c:	00000000 	nop
  495a70:	00621826 	xor	v1,v1,v0
  495a74:	8c820000 	lw	v0,0(a0)
  495a78:	00000000 	nop
  495a7c:	00431026 	xor	v0,v0,v1
  495a80:	afc2001c 	sw	v0,28(s8)
  495a84:	8fc20028 	lw	v0,40(s8)
  495a88:	00000000 	nop
  495a8c:	24440018 	addiu	a0,v0,24
  495a90:	93c20013 	lbu	v0,19(s8)
  495a94:	00000000 	nop
  495a98:	00021080 	sll	v0,v0,0x2
  495a9c:	8f83804c 	lw	v1,-32692(gp)
  495aa0:	00000000 	nop
  495aa4:	2463e394 	addiu	v1,v1,-7276
  495aa8:	00621821 	addu	v1,v1,v0
  495aac:	8fc2000c 	lw	v0,12(s8)
  495ab0:	00000000 	nop
  495ab4:	00021202 	srl	v0,v0,0x8
  495ab8:	304200ff 	andi	v0,v0,0xff
  495abc:	00021080 	sll	v0,v0,0x2
  495ac0:	24420400 	addiu	v0,v0,1024
  495ac4:	8f81804c 	lw	at,-32692(gp)
  495ac8:	00000000 	nop
  495acc:	2421e394 	addiu	at,at,-7276
  495ad0:	00221021 	addu	v0,at,v0
  495ad4:	8c630000 	lw	v1,0(v1)
  495ad8:	8c420000 	lw	v0,0(v0)
  495adc:	00000000 	nop
  495ae0:	00621826 	xor	v1,v1,v0
  495ae4:	8fc20008 	lw	v0,8(s8)
  495ae8:	00000000 	nop
  495aec:	00021402 	srl	v0,v0,0x10
  495af0:	304200ff 	andi	v0,v0,0xff
  495af4:	00021080 	sll	v0,v0,0x2
  495af8:	24420800 	addiu	v0,v0,2048
  495afc:	8f81804c 	lw	at,-32692(gp)
  495b00:	00000000 	nop
  495b04:	2421e394 	addiu	at,at,-7276
  495b08:	00221021 	addu	v0,at,v0
  495b0c:	8c420000 	lw	v0,0(v0)
  495b10:	00000000 	nop
  495b14:	00621826 	xor	v1,v1,v0
  495b18:	8fc20014 	lw	v0,20(s8)
  495b1c:	00000000 	nop
  495b20:	00021602 	srl	v0,v0,0x18
  495b24:	304200ff 	andi	v0,v0,0xff
  495b28:	00021080 	sll	v0,v0,0x2
  495b2c:	24420c00 	addiu	v0,v0,3072
  495b30:	8f81804c 	lw	at,-32692(gp)
  495b34:	00000000 	nop
  495b38:	2421e394 	addiu	at,at,-7276
  495b3c:	00221021 	addu	v0,at,v0
  495b40:	8c420000 	lw	v0,0(v0)
  495b44:	00000000 	nop
  495b48:	00621826 	xor	v1,v1,v0
  495b4c:	8c820000 	lw	v0,0(a0)
  495b50:	00000000 	nop
  495b54:	00431026 	xor	v0,v0,v1
  495b58:	afc20020 	sw	v0,32(s8)
  495b5c:	8fc20028 	lw	v0,40(s8)
  495b60:	00000000 	nop
  495b64:	2444001c 	addiu	a0,v0,28
  495b68:	93c20017 	lbu	v0,23(s8)
  495b6c:	00000000 	nop
  495b70:	00021080 	sll	v0,v0,0x2
  495b74:	8f83804c 	lw	v1,-32692(gp)
  495b78:	00000000 	nop
  495b7c:	2463e394 	addiu	v1,v1,-7276
  495b80:	00621821 	addu	v1,v1,v0
  495b84:	8fc20010 	lw	v0,16(s8)
  495b88:	00000000 	nop
  495b8c:	00021202 	srl	v0,v0,0x8
  495b90:	304200ff 	andi	v0,v0,0xff
  495b94:	00021080 	sll	v0,v0,0x2
  495b98:	24420400 	addiu	v0,v0,1024
  495b9c:	8f81804c 	lw	at,-32692(gp)
  495ba0:	00000000 	nop
  495ba4:	2421e394 	addiu	at,at,-7276
  495ba8:	00221021 	addu	v0,at,v0
  495bac:	8c630000 	lw	v1,0(v1)
  495bb0:	8c420000 	lw	v0,0(v0)
  495bb4:	00000000 	nop
  495bb8:	00621826 	xor	v1,v1,v0
  495bbc:	8fc2000c 	lw	v0,12(s8)
  495bc0:	00000000 	nop
  495bc4:	00021402 	srl	v0,v0,0x10
  495bc8:	304200ff 	andi	v0,v0,0xff
  495bcc:	00021080 	sll	v0,v0,0x2
  495bd0:	24420800 	addiu	v0,v0,2048
  495bd4:	8f81804c 	lw	at,-32692(gp)
  495bd8:	00000000 	nop
  495bdc:	2421e394 	addiu	at,at,-7276
  495be0:	00221021 	addu	v0,at,v0
  495be4:	8c420000 	lw	v0,0(v0)
  495be8:	00000000 	nop
  495bec:	00621826 	xor	v1,v1,v0
  495bf0:	8fc20008 	lw	v0,8(s8)
  495bf4:	00000000 	nop
  495bf8:	00021602 	srl	v0,v0,0x18
  495bfc:	304200ff 	andi	v0,v0,0xff
  495c00:	00021080 	sll	v0,v0,0x2
  495c04:	24420c00 	addiu	v0,v0,3072
  495c08:	8f81804c 	lw	at,-32692(gp)
  495c0c:	00000000 	nop
  495c10:	2421e394 	addiu	at,at,-7276
  495c14:	00221021 	addu	v0,at,v0
  495c18:	8c420000 	lw	v0,0(v0)
  495c1c:	00000000 	nop
  495c20:	00621826 	xor	v1,v1,v0
  495c24:	8c820000 	lw	v0,0(a0)
  495c28:	00000000 	nop
  495c2c:	00431026 	xor	v0,v0,v1
  495c30:	afc20024 	sw	v0,36(s8)
  495c34:	8fc20028 	lw	v0,40(s8)
  495c38:	00000000 	nop
  495c3c:	24420020 	addiu	v0,v0,32
  495c40:	afc20028 	sw	v0,40(s8)
    case 12:    round(inv_rnd,  b1, b0, kp         );
  495c44:	93c2001b 	lbu	v0,27(s8)
  495c48:	00000000 	nop
  495c4c:	00021080 	sll	v0,v0,0x2
  495c50:	8f83804c 	lw	v1,-32692(gp)
  495c54:	00000000 	nop
  495c58:	2463e394 	addiu	v1,v1,-7276
  495c5c:	00621821 	addu	v1,v1,v0
  495c60:	8fc20024 	lw	v0,36(s8)
  495c64:	00000000 	nop
  495c68:	00021202 	srl	v0,v0,0x8
  495c6c:	304200ff 	andi	v0,v0,0xff
  495c70:	00021080 	sll	v0,v0,0x2
  495c74:	24420400 	addiu	v0,v0,1024
  495c78:	8f81804c 	lw	at,-32692(gp)
  495c7c:	00000000 	nop
  495c80:	2421e394 	addiu	at,at,-7276
  495c84:	00221021 	addu	v0,at,v0
  495c88:	8c630000 	lw	v1,0(v1)
  495c8c:	8c420000 	lw	v0,0(v0)
  495c90:	00000000 	nop
  495c94:	00621826 	xor	v1,v1,v0
  495c98:	8fc20020 	lw	v0,32(s8)
  495c9c:	00000000 	nop
  495ca0:	00021402 	srl	v0,v0,0x10
  495ca4:	304200ff 	andi	v0,v0,0xff
  495ca8:	00021080 	sll	v0,v0,0x2
  495cac:	24420800 	addiu	v0,v0,2048
  495cb0:	8f81804c 	lw	at,-32692(gp)
  495cb4:	00000000 	nop
  495cb8:	2421e394 	addiu	at,at,-7276
  495cbc:	00221021 	addu	v0,at,v0
  495cc0:	8c420000 	lw	v0,0(v0)
  495cc4:	00000000 	nop
  495cc8:	00621826 	xor	v1,v1,v0
  495ccc:	8fc2001c 	lw	v0,28(s8)
  495cd0:	00000000 	nop
  495cd4:	00021602 	srl	v0,v0,0x18
  495cd8:	304200ff 	andi	v0,v0,0xff
  495cdc:	00021080 	sll	v0,v0,0x2
  495ce0:	24420c00 	addiu	v0,v0,3072
  495ce4:	8f81804c 	lw	at,-32692(gp)
  495ce8:	00000000 	nop
  495cec:	2421e394 	addiu	at,at,-7276
  495cf0:	00221021 	addu	v0,at,v0
  495cf4:	8c420000 	lw	v0,0(v0)
  495cf8:	00000000 	nop
  495cfc:	00621826 	xor	v1,v1,v0
  495d00:	8fc20028 	lw	v0,40(s8)
  495d04:	00000000 	nop
  495d08:	8c420000 	lw	v0,0(v0)
  495d0c:	00000000 	nop
  495d10:	00431026 	xor	v0,v0,v1
  495d14:	afc20008 	sw	v0,8(s8)
  495d18:	8fc20028 	lw	v0,40(s8)
  495d1c:	00000000 	nop
  495d20:	24440004 	addiu	a0,v0,4
  495d24:	93c2001f 	lbu	v0,31(s8)
  495d28:	00000000 	nop
  495d2c:	00021080 	sll	v0,v0,0x2
  495d30:	8f83804c 	lw	v1,-32692(gp)
  495d34:	00000000 	nop
  495d38:	2463e394 	addiu	v1,v1,-7276
  495d3c:	00621821 	addu	v1,v1,v0
  495d40:	8fc20018 	lw	v0,24(s8)
  495d44:	00000000 	nop
  495d48:	00021202 	srl	v0,v0,0x8
  495d4c:	304200ff 	andi	v0,v0,0xff
  495d50:	00021080 	sll	v0,v0,0x2
  495d54:	24420400 	addiu	v0,v0,1024
  495d58:	8f81804c 	lw	at,-32692(gp)
  495d5c:	00000000 	nop
  495d60:	2421e394 	addiu	at,at,-7276
  495d64:	00221021 	addu	v0,at,v0
  495d68:	8c630000 	lw	v1,0(v1)
  495d6c:	8c420000 	lw	v0,0(v0)
  495d70:	00000000 	nop
  495d74:	00621826 	xor	v1,v1,v0
  495d78:	8fc20024 	lw	v0,36(s8)
  495d7c:	00000000 	nop
  495d80:	00021402 	srl	v0,v0,0x10
  495d84:	304200ff 	andi	v0,v0,0xff
  495d88:	00021080 	sll	v0,v0,0x2
  495d8c:	24420800 	addiu	v0,v0,2048
  495d90:	8f81804c 	lw	at,-32692(gp)
  495d94:	00000000 	nop
  495d98:	2421e394 	addiu	at,at,-7276
  495d9c:	00221021 	addu	v0,at,v0
  495da0:	8c420000 	lw	v0,0(v0)
  495da4:	00000000 	nop
  495da8:	00621826 	xor	v1,v1,v0
  495dac:	8fc20020 	lw	v0,32(s8)
  495db0:	00000000 	nop
  495db4:	00021602 	srl	v0,v0,0x18
  495db8:	304200ff 	andi	v0,v0,0xff
  495dbc:	00021080 	sll	v0,v0,0x2
  495dc0:	24420c00 	addiu	v0,v0,3072
  495dc4:	8f81804c 	lw	at,-32692(gp)
  495dc8:	00000000 	nop
  495dcc:	2421e394 	addiu	at,at,-7276
  495dd0:	00221021 	addu	v0,at,v0
  495dd4:	8c420000 	lw	v0,0(v0)
  495dd8:	00000000 	nop
  495ddc:	00621826 	xor	v1,v1,v0
  495de0:	8c820000 	lw	v0,0(a0)
  495de4:	00000000 	nop
  495de8:	00431026 	xor	v0,v0,v1
  495dec:	afc2000c 	sw	v0,12(s8)
  495df0:	8fc20028 	lw	v0,40(s8)
  495df4:	00000000 	nop
  495df8:	24440008 	addiu	a0,v0,8
  495dfc:	93c20023 	lbu	v0,35(s8)
  495e00:	00000000 	nop
  495e04:	00021080 	sll	v0,v0,0x2
  495e08:	8f83804c 	lw	v1,-32692(gp)
  495e0c:	00000000 	nop
  495e10:	2463e394 	addiu	v1,v1,-7276
  495e14:	00621821 	addu	v1,v1,v0
  495e18:	8fc2001c 	lw	v0,28(s8)
  495e1c:	00000000 	nop
  495e20:	00021202 	srl	v0,v0,0x8
  495e24:	304200ff 	andi	v0,v0,0xff
  495e28:	00021080 	sll	v0,v0,0x2
  495e2c:	24420400 	addiu	v0,v0,1024
  495e30:	8f81804c 	lw	at,-32692(gp)
  495e34:	00000000 	nop
  495e38:	2421e394 	addiu	at,at,-7276
  495e3c:	00221021 	addu	v0,at,v0
  495e40:	8c630000 	lw	v1,0(v1)
  495e44:	8c420000 	lw	v0,0(v0)
  495e48:	00000000 	nop
  495e4c:	00621826 	xor	v1,v1,v0
  495e50:	8fc20018 	lw	v0,24(s8)
  495e54:	00000000 	nop
  495e58:	00021402 	srl	v0,v0,0x10
  495e5c:	304200ff 	andi	v0,v0,0xff
  495e60:	00021080 	sll	v0,v0,0x2
  495e64:	24420800 	addiu	v0,v0,2048
  495e68:	8f81804c 	lw	at,-32692(gp)
  495e6c:	00000000 	nop
  495e70:	2421e394 	addiu	at,at,-7276
  495e74:	00221021 	addu	v0,at,v0
  495e78:	8c420000 	lw	v0,0(v0)
  495e7c:	00000000 	nop
  495e80:	00621826 	xor	v1,v1,v0
  495e84:	8fc20024 	lw	v0,36(s8)
  495e88:	00000000 	nop
  495e8c:	00021602 	srl	v0,v0,0x18
  495e90:	304200ff 	andi	v0,v0,0xff
  495e94:	00021080 	sll	v0,v0,0x2
  495e98:	24420c00 	addiu	v0,v0,3072
  495e9c:	8f81804c 	lw	at,-32692(gp)
  495ea0:	00000000 	nop
  495ea4:	2421e394 	addiu	at,at,-7276
  495ea8:	00221021 	addu	v0,at,v0
  495eac:	8c420000 	lw	v0,0(v0)
  495eb0:	00000000 	nop
  495eb4:	00621826 	xor	v1,v1,v0
  495eb8:	8c820000 	lw	v0,0(a0)
  495ebc:	00000000 	nop
  495ec0:	00431026 	xor	v0,v0,v1
  495ec4:	afc20010 	sw	v0,16(s8)
  495ec8:	8fc20028 	lw	v0,40(s8)
  495ecc:	00000000 	nop
  495ed0:	2444000c 	addiu	a0,v0,12
  495ed4:	93c20027 	lbu	v0,39(s8)
  495ed8:	00000000 	nop
  495edc:	00021080 	sll	v0,v0,0x2
  495ee0:	8f83804c 	lw	v1,-32692(gp)
  495ee4:	00000000 	nop
  495ee8:	2463e394 	addiu	v1,v1,-7276
  495eec:	00621821 	addu	v1,v1,v0
  495ef0:	8fc20020 	lw	v0,32(s8)
  495ef4:	00000000 	nop
  495ef8:	00021202 	srl	v0,v0,0x8
  495efc:	304200ff 	andi	v0,v0,0xff
  495f00:	00021080 	sll	v0,v0,0x2
  495f04:	24420400 	addiu	v0,v0,1024
  495f08:	8f81804c 	lw	at,-32692(gp)
  495f0c:	00000000 	nop
  495f10:	2421e394 	addiu	at,at,-7276
  495f14:	00221021 	addu	v0,at,v0
  495f18:	8c630000 	lw	v1,0(v1)
  495f1c:	8c420000 	lw	v0,0(v0)
  495f20:	00000000 	nop
  495f24:	00621826 	xor	v1,v1,v0
  495f28:	8fc2001c 	lw	v0,28(s8)
  495f2c:	00000000 	nop
  495f30:	00021402 	srl	v0,v0,0x10
  495f34:	304200ff 	andi	v0,v0,0xff
  495f38:	00021080 	sll	v0,v0,0x2
  495f3c:	24420800 	addiu	v0,v0,2048
  495f40:	8f81804c 	lw	at,-32692(gp)
  495f44:	00000000 	nop
  495f48:	2421e394 	addiu	at,at,-7276
  495f4c:	00221021 	addu	v0,at,v0
  495f50:	8c420000 	lw	v0,0(v0)
  495f54:	00000000 	nop
  495f58:	00621826 	xor	v1,v1,v0
  495f5c:	8fc20018 	lw	v0,24(s8)
  495f60:	00000000 	nop
  495f64:	00021602 	srl	v0,v0,0x18
  495f68:	304200ff 	andi	v0,v0,0xff
  495f6c:	00021080 	sll	v0,v0,0x2
  495f70:	24420c00 	addiu	v0,v0,3072
  495f74:	8f81804c 	lw	at,-32692(gp)
  495f78:	00000000 	nop
  495f7c:	2421e394 	addiu	at,at,-7276
  495f80:	00221021 	addu	v0,at,v0
  495f84:	8c420000 	lw	v0,0(v0)
  495f88:	00000000 	nop
  495f8c:	00621826 	xor	v1,v1,v0
  495f90:	8c820000 	lw	v0,0(a0)
  495f94:	00000000 	nop
  495f98:	00431026 	xor	v0,v0,v1
  495f9c:	afc20014 	sw	v0,20(s8)
                round(inv_rnd,  b0, b1, kp + nc    ); kp += 2 * nc;
  495fa0:	8fc20028 	lw	v0,40(s8)
  495fa4:	00000000 	nop
  495fa8:	24440010 	addiu	a0,v0,16
  495fac:	93c2000b 	lbu	v0,11(s8)
  495fb0:	00000000 	nop
  495fb4:	00021080 	sll	v0,v0,0x2
  495fb8:	8f83804c 	lw	v1,-32692(gp)
  495fbc:	00000000 	nop
  495fc0:	2463e394 	addiu	v1,v1,-7276
  495fc4:	00621821 	addu	v1,v1,v0
  495fc8:	8fc20014 	lw	v0,20(s8)
  495fcc:	00000000 	nop
  495fd0:	00021202 	srl	v0,v0,0x8
  495fd4:	304200ff 	andi	v0,v0,0xff
  495fd8:	00021080 	sll	v0,v0,0x2
  495fdc:	24420400 	addiu	v0,v0,1024
  495fe0:	8f81804c 	lw	at,-32692(gp)
  495fe4:	00000000 	nop
  495fe8:	2421e394 	addiu	at,at,-7276
  495fec:	00221021 	addu	v0,at,v0
  495ff0:	8c630000 	lw	v1,0(v1)
  495ff4:	8c420000 	lw	v0,0(v0)
  495ff8:	00000000 	nop
  495ffc:	00621826 	xor	v1,v1,v0
  496000:	8fc20010 	lw	v0,16(s8)
  496004:	00000000 	nop
  496008:	00021402 	srl	v0,v0,0x10
  49600c:	304200ff 	andi	v0,v0,0xff
  496010:	00021080 	sll	v0,v0,0x2
  496014:	24420800 	addiu	v0,v0,2048
  496018:	8f81804c 	lw	at,-32692(gp)
  49601c:	00000000 	nop
  496020:	2421e394 	addiu	at,at,-7276
  496024:	00221021 	addu	v0,at,v0
  496028:	8c420000 	lw	v0,0(v0)
  49602c:	00000000 	nop
  496030:	00621826 	xor	v1,v1,v0
  496034:	8fc2000c 	lw	v0,12(s8)
  496038:	00000000 	nop
  49603c:	00021602 	srl	v0,v0,0x18
  496040:	304200ff 	andi	v0,v0,0xff
  496044:	00021080 	sll	v0,v0,0x2
  496048:	24420c00 	addiu	v0,v0,3072
  49604c:	8f81804c 	lw	at,-32692(gp)
  496050:	00000000 	nop
  496054:	2421e394 	addiu	at,at,-7276
  496058:	00221021 	addu	v0,at,v0
  49605c:	8c420000 	lw	v0,0(v0)
  496060:	00000000 	nop
  496064:	00621826 	xor	v1,v1,v0
  496068:	8c820000 	lw	v0,0(a0)
  49606c:	00000000 	nop
  496070:	00431026 	xor	v0,v0,v1
  496074:	afc20018 	sw	v0,24(s8)
  496078:	8fc20028 	lw	v0,40(s8)
  49607c:	00000000 	nop
  496080:	24440014 	addiu	a0,v0,20
  496084:	93c2000f 	lbu	v0,15(s8)
  496088:	00000000 	nop
  49608c:	00021080 	sll	v0,v0,0x2
  496090:	8f83804c 	lw	v1,-32692(gp)
  496094:	00000000 	nop
  496098:	2463e394 	addiu	v1,v1,-7276
  49609c:	00621821 	addu	v1,v1,v0
  4960a0:	8fc20008 	lw	v0,8(s8)
  4960a4:	00000000 	nop
  4960a8:	00021202 	srl	v0,v0,0x8
  4960ac:	304200ff 	andi	v0,v0,0xff
  4960b0:	00021080 	sll	v0,v0,0x2
  4960b4:	24420400 	addiu	v0,v0,1024
  4960b8:	8f81804c 	lw	at,-32692(gp)
  4960bc:	00000000 	nop
  4960c0:	2421e394 	addiu	at,at,-7276
  4960c4:	00221021 	addu	v0,at,v0
  4960c8:	8c630000 	lw	v1,0(v1)
  4960cc:	8c420000 	lw	v0,0(v0)
  4960d0:	00000000 	nop
  4960d4:	00621826 	xor	v1,v1,v0
  4960d8:	8fc20014 	lw	v0,20(s8)
  4960dc:	00000000 	nop
  4960e0:	00021402 	srl	v0,v0,0x10
  4960e4:	304200ff 	andi	v0,v0,0xff
  4960e8:	00021080 	sll	v0,v0,0x2
  4960ec:	24420800 	addiu	v0,v0,2048
  4960f0:	8f81804c 	lw	at,-32692(gp)
  4960f4:	00000000 	nop
  4960f8:	2421e394 	addiu	at,at,-7276
  4960fc:	00221021 	addu	v0,at,v0
  496100:	8c420000 	lw	v0,0(v0)
  496104:	00000000 	nop
  496108:	00621826 	xor	v1,v1,v0
  49610c:	8fc20010 	lw	v0,16(s8)
  496110:	00000000 	nop
  496114:	00021602 	srl	v0,v0,0x18
  496118:	304200ff 	andi	v0,v0,0xff
  49611c:	00021080 	sll	v0,v0,0x2
  496120:	24420c00 	addiu	v0,v0,3072
  496124:	8f81804c 	lw	at,-32692(gp)
  496128:	00000000 	nop
  49612c:	2421e394 	addiu	at,at,-7276
  496130:	00221021 	addu	v0,at,v0
  496134:	8c420000 	lw	v0,0(v0)
  496138:	00000000 	nop
  49613c:	00621826 	xor	v1,v1,v0
  496140:	8c820000 	lw	v0,0(a0)
  496144:	00000000 	nop
  496148:	00431026 	xor	v0,v0,v1
  49614c:	afc2001c 	sw	v0,28(s8)
  496150:	8fc20028 	lw	v0,40(s8)
  496154:	00000000 	nop
  496158:	24440018 	addiu	a0,v0,24
  49615c:	93c20013 	lbu	v0,19(s8)
  496160:	00000000 	nop
  496164:	00021080 	sll	v0,v0,0x2
  496168:	8f83804c 	lw	v1,-32692(gp)
  49616c:	00000000 	nop
  496170:	2463e394 	addiu	v1,v1,-7276
  496174:	00621821 	addu	v1,v1,v0
  496178:	8fc2000c 	lw	v0,12(s8)
  49617c:	00000000 	nop
  496180:	00021202 	srl	v0,v0,0x8
  496184:	304200ff 	andi	v0,v0,0xff
  496188:	00021080 	sll	v0,v0,0x2
  49618c:	24420400 	addiu	v0,v0,1024
  496190:	8f81804c 	lw	at,-32692(gp)
  496194:	00000000 	nop
  496198:	2421e394 	addiu	at,at,-7276
  49619c:	00221021 	addu	v0,at,v0
  4961a0:	8c630000 	lw	v1,0(v1)
  4961a4:	8c420000 	lw	v0,0(v0)
  4961a8:	00000000 	nop
  4961ac:	00621826 	xor	v1,v1,v0
  4961b0:	8fc20008 	lw	v0,8(s8)
  4961b4:	00000000 	nop
  4961b8:	00021402 	srl	v0,v0,0x10
  4961bc:	304200ff 	andi	v0,v0,0xff
  4961c0:	00021080 	sll	v0,v0,0x2
  4961c4:	24420800 	addiu	v0,v0,2048
  4961c8:	8f81804c 	lw	at,-32692(gp)
  4961cc:	00000000 	nop
  4961d0:	2421e394 	addiu	at,at,-7276
  4961d4:	00221021 	addu	v0,at,v0
  4961d8:	8c420000 	lw	v0,0(v0)
  4961dc:	00000000 	nop
  4961e0:	00621826 	xor	v1,v1,v0
  4961e4:	8fc20014 	lw	v0,20(s8)
  4961e8:	00000000 	nop
  4961ec:	00021602 	srl	v0,v0,0x18
  4961f0:	304200ff 	andi	v0,v0,0xff
  4961f4:	00021080 	sll	v0,v0,0x2
  4961f8:	24420c00 	addiu	v0,v0,3072
  4961fc:	8f81804c 	lw	at,-32692(gp)
  496200:	00000000 	nop
  496204:	2421e394 	addiu	at,at,-7276
  496208:	00221021 	addu	v0,at,v0
  49620c:	8c420000 	lw	v0,0(v0)
  496210:	00000000 	nop
  496214:	00621826 	xor	v1,v1,v0
  496218:	8c820000 	lw	v0,0(a0)
  49621c:	00000000 	nop
  496220:	00431026 	xor	v0,v0,v1
  496224:	afc20020 	sw	v0,32(s8)
  496228:	8fc20028 	lw	v0,40(s8)
  49622c:	00000000 	nop
  496230:	2444001c 	addiu	a0,v0,28
  496234:	93c20017 	lbu	v0,23(s8)
  496238:	00000000 	nop
  49623c:	00021080 	sll	v0,v0,0x2
  496240:	8f83804c 	lw	v1,-32692(gp)
  496244:	00000000 	nop
  496248:	2463e394 	addiu	v1,v1,-7276
  49624c:	00621821 	addu	v1,v1,v0
  496250:	8fc20010 	lw	v0,16(s8)
  496254:	00000000 	nop
  496258:	00021202 	srl	v0,v0,0x8
  49625c:	304200ff 	andi	v0,v0,0xff
  496260:	00021080 	sll	v0,v0,0x2
  496264:	24420400 	addiu	v0,v0,1024
  496268:	8f81804c 	lw	at,-32692(gp)
  49626c:	00000000 	nop
  496270:	2421e394 	addiu	at,at,-7276
  496274:	00221021 	addu	v0,at,v0
  496278:	8c630000 	lw	v1,0(v1)
  49627c:	8c420000 	lw	v0,0(v0)
  496280:	00000000 	nop
  496284:	00621826 	xor	v1,v1,v0
  496288:	8fc2000c 	lw	v0,12(s8)
  49628c:	00000000 	nop
  496290:	00021402 	srl	v0,v0,0x10
  496294:	304200ff 	andi	v0,v0,0xff
  496298:	00021080 	sll	v0,v0,0x2
  49629c:	24420800 	addiu	v0,v0,2048
  4962a0:	8f81804c 	lw	at,-32692(gp)
  4962a4:	00000000 	nop
  4962a8:	2421e394 	addiu	at,at,-7276
  4962ac:	00221021 	addu	v0,at,v0
  4962b0:	8c420000 	lw	v0,0(v0)
  4962b4:	00000000 	nop
  4962b8:	00621826 	xor	v1,v1,v0
  4962bc:	8fc20008 	lw	v0,8(s8)
  4962c0:	00000000 	nop
  4962c4:	00021602 	srl	v0,v0,0x18
  4962c8:	304200ff 	andi	v0,v0,0xff
  4962cc:	00021080 	sll	v0,v0,0x2
  4962d0:	24420c00 	addiu	v0,v0,3072
  4962d4:	8f81804c 	lw	at,-32692(gp)
  4962d8:	00000000 	nop
  4962dc:	2421e394 	addiu	at,at,-7276
  4962e0:	00221021 	addu	v0,at,v0
  4962e4:	8c420000 	lw	v0,0(v0)
  4962e8:	00000000 	nop
  4962ec:	00621826 	xor	v1,v1,v0
  4962f0:	8c820000 	lw	v0,0(a0)
  4962f4:	00000000 	nop
  4962f8:	00431026 	xor	v0,v0,v1
  4962fc:	afc20024 	sw	v0,36(s8)
  496300:	8fc20028 	lw	v0,40(s8)
  496304:	00000000 	nop
  496308:	24420020 	addiu	v0,v0,32
  49630c:	afc20028 	sw	v0,40(s8)
    case 10:    round(inv_rnd,  b1, b0, kp         );             
  496310:	93c2001b 	lbu	v0,27(s8)
  496314:	00000000 	nop
  496318:	00021080 	sll	v0,v0,0x2
  49631c:	8f83804c 	lw	v1,-32692(gp)
  496320:	00000000 	nop
  496324:	2463e394 	addiu	v1,v1,-7276
  496328:	00621821 	addu	v1,v1,v0
  49632c:	8fc20024 	lw	v0,36(s8)
  496330:	00000000 	nop
  496334:	00021202 	srl	v0,v0,0x8
  496338:	304200ff 	andi	v0,v0,0xff
  49633c:	00021080 	sll	v0,v0,0x2
  496340:	24420400 	addiu	v0,v0,1024
  496344:	8f81804c 	lw	at,-32692(gp)
  496348:	00000000 	nop
  49634c:	2421e394 	addiu	at,at,-7276
  496350:	00221021 	addu	v0,at,v0
  496354:	8c630000 	lw	v1,0(v1)
  496358:	8c420000 	lw	v0,0(v0)
  49635c:	00000000 	nop
  496360:	00621826 	xor	v1,v1,v0
  496364:	8fc20020 	lw	v0,32(s8)
  496368:	00000000 	nop
  49636c:	00021402 	srl	v0,v0,0x10
  496370:	304200ff 	andi	v0,v0,0xff
  496374:	00021080 	sll	v0,v0,0x2
  496378:	24420800 	addiu	v0,v0,2048
  49637c:	8f81804c 	lw	at,-32692(gp)
  496380:	00000000 	nop
  496384:	2421e394 	addiu	at,at,-7276
  496388:	00221021 	addu	v0,at,v0
  49638c:	8c420000 	lw	v0,0(v0)
  496390:	00000000 	nop
  496394:	00621826 	xor	v1,v1,v0
  496398:	8fc2001c 	lw	v0,28(s8)
  49639c:	00000000 	nop
  4963a0:	00021602 	srl	v0,v0,0x18
  4963a4:	304200ff 	andi	v0,v0,0xff
  4963a8:	00021080 	sll	v0,v0,0x2
  4963ac:	24420c00 	addiu	v0,v0,3072
  4963b0:	8f81804c 	lw	at,-32692(gp)
  4963b4:	00000000 	nop
  4963b8:	2421e394 	addiu	at,at,-7276
  4963bc:	00221021 	addu	v0,at,v0
  4963c0:	8c420000 	lw	v0,0(v0)
  4963c4:	00000000 	nop
  4963c8:	00621826 	xor	v1,v1,v0
  4963cc:	8fc20028 	lw	v0,40(s8)
  4963d0:	00000000 	nop
  4963d4:	8c420000 	lw	v0,0(v0)
  4963d8:	00000000 	nop
  4963dc:	00431026 	xor	v0,v0,v1
  4963e0:	afc20008 	sw	v0,8(s8)
  4963e4:	8fc20028 	lw	v0,40(s8)
  4963e8:	00000000 	nop
  4963ec:	24440004 	addiu	a0,v0,4
  4963f0:	93c2001f 	lbu	v0,31(s8)
  4963f4:	00000000 	nop
  4963f8:	00021080 	sll	v0,v0,0x2
  4963fc:	8f83804c 	lw	v1,-32692(gp)
  496400:	00000000 	nop
  496404:	2463e394 	addiu	v1,v1,-7276
  496408:	00621821 	addu	v1,v1,v0
  49640c:	8fc20018 	lw	v0,24(s8)
  496410:	00000000 	nop
  496414:	00021202 	srl	v0,v0,0x8
  496418:	304200ff 	andi	v0,v0,0xff
  49641c:	00021080 	sll	v0,v0,0x2
  496420:	24420400 	addiu	v0,v0,1024
  496424:	8f81804c 	lw	at,-32692(gp)
  496428:	00000000 	nop
  49642c:	2421e394 	addiu	at,at,-7276
  496430:	00221021 	addu	v0,at,v0
  496434:	8c630000 	lw	v1,0(v1)
  496438:	8c420000 	lw	v0,0(v0)
  49643c:	00000000 	nop
  496440:	00621826 	xor	v1,v1,v0
  496444:	8fc20024 	lw	v0,36(s8)
  496448:	00000000 	nop
  49644c:	00021402 	srl	v0,v0,0x10
  496450:	304200ff 	andi	v0,v0,0xff
  496454:	00021080 	sll	v0,v0,0x2
  496458:	24420800 	addiu	v0,v0,2048
  49645c:	8f81804c 	lw	at,-32692(gp)
  496460:	00000000 	nop
  496464:	2421e394 	addiu	at,at,-7276
  496468:	00221021 	addu	v0,at,v0
  49646c:	8c420000 	lw	v0,0(v0)
  496470:	00000000 	nop
  496474:	00621826 	xor	v1,v1,v0
  496478:	8fc20020 	lw	v0,32(s8)
  49647c:	00000000 	nop
  496480:	00021602 	srl	v0,v0,0x18
  496484:	304200ff 	andi	v0,v0,0xff
  496488:	00021080 	sll	v0,v0,0x2
  49648c:	24420c00 	addiu	v0,v0,3072
  496490:	8f81804c 	lw	at,-32692(gp)
  496494:	00000000 	nop
  496498:	2421e394 	addiu	at,at,-7276
  49649c:	00221021 	addu	v0,at,v0
  4964a0:	8c420000 	lw	v0,0(v0)
  4964a4:	00000000 	nop
  4964a8:	00621826 	xor	v1,v1,v0
  4964ac:	8c820000 	lw	v0,0(a0)
  4964b0:	00000000 	nop
  4964b4:	00431026 	xor	v0,v0,v1
  4964b8:	afc2000c 	sw	v0,12(s8)
  4964bc:	8fc20028 	lw	v0,40(s8)
  4964c0:	00000000 	nop
  4964c4:	24440008 	addiu	a0,v0,8
  4964c8:	93c20023 	lbu	v0,35(s8)
  4964cc:	00000000 	nop
  4964d0:	00021080 	sll	v0,v0,0x2
  4964d4:	8f83804c 	lw	v1,-32692(gp)
  4964d8:	00000000 	nop
  4964dc:	2463e394 	addiu	v1,v1,-7276
  4964e0:	00621821 	addu	v1,v1,v0
  4964e4:	8fc2001c 	lw	v0,28(s8)
  4964e8:	00000000 	nop
  4964ec:	00021202 	srl	v0,v0,0x8
  4964f0:	304200ff 	andi	v0,v0,0xff
  4964f4:	00021080 	sll	v0,v0,0x2
  4964f8:	24420400 	addiu	v0,v0,1024
  4964fc:	8f81804c 	lw	at,-32692(gp)
  496500:	00000000 	nop
  496504:	2421e394 	addiu	at,at,-7276
  496508:	00221021 	addu	v0,at,v0
  49650c:	8c630000 	lw	v1,0(v1)
  496510:	8c420000 	lw	v0,0(v0)
  496514:	00000000 	nop
  496518:	00621826 	xor	v1,v1,v0
  49651c:	8fc20018 	lw	v0,24(s8)
  496520:	00000000 	nop
  496524:	00021402 	srl	v0,v0,0x10
  496528:	304200ff 	andi	v0,v0,0xff
  49652c:	00021080 	sll	v0,v0,0x2
  496530:	24420800 	addiu	v0,v0,2048
  496534:	8f81804c 	lw	at,-32692(gp)
  496538:	00000000 	nop
  49653c:	2421e394 	addiu	at,at,-7276
  496540:	00221021 	addu	v0,at,v0
  496544:	8c420000 	lw	v0,0(v0)
  496548:	00000000 	nop
  49654c:	00621826 	xor	v1,v1,v0
  496550:	8fc20024 	lw	v0,36(s8)
  496554:	00000000 	nop
  496558:	00021602 	srl	v0,v0,0x18
  49655c:	304200ff 	andi	v0,v0,0xff
  496560:	00021080 	sll	v0,v0,0x2
  496564:	24420c00 	addiu	v0,v0,3072
  496568:	8f81804c 	lw	at,-32692(gp)
  49656c:	00000000 	nop
  496570:	2421e394 	addiu	at,at,-7276
  496574:	00221021 	addu	v0,at,v0
  496578:	8c420000 	lw	v0,0(v0)
  49657c:	00000000 	nop
  496580:	00621826 	xor	v1,v1,v0
  496584:	8c820000 	lw	v0,0(a0)
  496588:	00000000 	nop
  49658c:	00431026 	xor	v0,v0,v1
  496590:	afc20010 	sw	v0,16(s8)
  496594:	8fc20028 	lw	v0,40(s8)
  496598:	00000000 	nop
  49659c:	2444000c 	addiu	a0,v0,12
  4965a0:	93c20027 	lbu	v0,39(s8)
  4965a4:	00000000 	nop
  4965a8:	00021080 	sll	v0,v0,0x2
  4965ac:	8f83804c 	lw	v1,-32692(gp)
  4965b0:	00000000 	nop
  4965b4:	2463e394 	addiu	v1,v1,-7276
  4965b8:	00621821 	addu	v1,v1,v0
  4965bc:	8fc20020 	lw	v0,32(s8)
  4965c0:	00000000 	nop
  4965c4:	00021202 	srl	v0,v0,0x8
  4965c8:	304200ff 	andi	v0,v0,0xff
  4965cc:	00021080 	sll	v0,v0,0x2
  4965d0:	24420400 	addiu	v0,v0,1024
  4965d4:	8f81804c 	lw	at,-32692(gp)
  4965d8:	00000000 	nop
  4965dc:	2421e394 	addiu	at,at,-7276
  4965e0:	00221021 	addu	v0,at,v0
  4965e4:	8c630000 	lw	v1,0(v1)
  4965e8:	8c420000 	lw	v0,0(v0)
  4965ec:	00000000 	nop
  4965f0:	00621826 	xor	v1,v1,v0
  4965f4:	8fc2001c 	lw	v0,28(s8)
  4965f8:	00000000 	nop
  4965fc:	00021402 	srl	v0,v0,0x10
  496600:	304200ff 	andi	v0,v0,0xff
  496604:	00021080 	sll	v0,v0,0x2
  496608:	24420800 	addiu	v0,v0,2048
  49660c:	8f81804c 	lw	at,-32692(gp)
  496610:	00000000 	nop
  496614:	2421e394 	addiu	at,at,-7276
  496618:	00221021 	addu	v0,at,v0
  49661c:	8c420000 	lw	v0,0(v0)
  496620:	00000000 	nop
  496624:	00621826 	xor	v1,v1,v0
  496628:	8fc20018 	lw	v0,24(s8)
  49662c:	00000000 	nop
  496630:	00021602 	srl	v0,v0,0x18
  496634:	304200ff 	andi	v0,v0,0xff
  496638:	00021080 	sll	v0,v0,0x2
  49663c:	24420c00 	addiu	v0,v0,3072
  496640:	8f81804c 	lw	at,-32692(gp)
  496644:	00000000 	nop
  496648:	2421e394 	addiu	at,at,-7276
  49664c:	00221021 	addu	v0,at,v0
  496650:	8c420000 	lw	v0,0(v0)
  496654:	00000000 	nop
  496658:	00621826 	xor	v1,v1,v0
  49665c:	8c820000 	lw	v0,0(a0)
  496660:	00000000 	nop
  496664:	00431026 	xor	v0,v0,v1
  496668:	afc20014 	sw	v0,20(s8)
                round(inv_rnd,  b0, b1, kp +     nc);
  49666c:	8fc20028 	lw	v0,40(s8)
  496670:	00000000 	nop
  496674:	24440010 	addiu	a0,v0,16
  496678:	93c2000b 	lbu	v0,11(s8)
  49667c:	00000000 	nop
  496680:	00021080 	sll	v0,v0,0x2
  496684:	8f83804c 	lw	v1,-32692(gp)
  496688:	00000000 	nop
  49668c:	2463e394 	addiu	v1,v1,-7276
  496690:	00621821 	addu	v1,v1,v0
  496694:	8fc20014 	lw	v0,20(s8)
  496698:	00000000 	nop
  49669c:	00021202 	srl	v0,v0,0x8
  4966a0:	304200ff 	andi	v0,v0,0xff
  4966a4:	00021080 	sll	v0,v0,0x2
  4966a8:	24420400 	addiu	v0,v0,1024
  4966ac:	8f81804c 	lw	at,-32692(gp)
  4966b0:	00000000 	nop
  4966b4:	2421e394 	addiu	at,at,-7276
  4966b8:	00221021 	addu	v0,at,v0
  4966bc:	8c630000 	lw	v1,0(v1)
  4966c0:	8c420000 	lw	v0,0(v0)
  4966c4:	00000000 	nop
  4966c8:	00621826 	xor	v1,v1,v0
  4966cc:	8fc20010 	lw	v0,16(s8)
  4966d0:	00000000 	nop
  4966d4:	00021402 	srl	v0,v0,0x10
  4966d8:	304200ff 	andi	v0,v0,0xff
  4966dc:	00021080 	sll	v0,v0,0x2
  4966e0:	24420800 	addiu	v0,v0,2048
  4966e4:	8f81804c 	lw	at,-32692(gp)
  4966e8:	00000000 	nop
  4966ec:	2421e394 	addiu	at,at,-7276
  4966f0:	00221021 	addu	v0,at,v0
  4966f4:	8c420000 	lw	v0,0(v0)
  4966f8:	00000000 	nop
  4966fc:	00621826 	xor	v1,v1,v0
  496700:	8fc2000c 	lw	v0,12(s8)
  496704:	00000000 	nop
  496708:	00021602 	srl	v0,v0,0x18
  49670c:	304200ff 	andi	v0,v0,0xff
  496710:	00021080 	sll	v0,v0,0x2
  496714:	24420c00 	addiu	v0,v0,3072
  496718:	8f81804c 	lw	at,-32692(gp)
  49671c:	00000000 	nop
  496720:	2421e394 	addiu	at,at,-7276
  496724:	00221021 	addu	v0,at,v0
  496728:	8c420000 	lw	v0,0(v0)
  49672c:	00000000 	nop
  496730:	00621826 	xor	v1,v1,v0
  496734:	8c820000 	lw	v0,0(a0)
  496738:	00000000 	nop
  49673c:	00431026 	xor	v0,v0,v1
  496740:	afc20018 	sw	v0,24(s8)
  496744:	8fc20028 	lw	v0,40(s8)
  496748:	00000000 	nop
  49674c:	24440014 	addiu	a0,v0,20
  496750:	93c2000f 	lbu	v0,15(s8)
  496754:	00000000 	nop
  496758:	00021080 	sll	v0,v0,0x2
  49675c:	8f83804c 	lw	v1,-32692(gp)
  496760:	00000000 	nop
  496764:	2463e394 	addiu	v1,v1,-7276
  496768:	00621821 	addu	v1,v1,v0
  49676c:	8fc20008 	lw	v0,8(s8)
  496770:	00000000 	nop
  496774:	00021202 	srl	v0,v0,0x8
  496778:	304200ff 	andi	v0,v0,0xff
  49677c:	00021080 	sll	v0,v0,0x2
  496780:	24420400 	addiu	v0,v0,1024
  496784:	8f81804c 	lw	at,-32692(gp)
  496788:	00000000 	nop
  49678c:	2421e394 	addiu	at,at,-7276
  496790:	00221021 	addu	v0,at,v0
  496794:	8c630000 	lw	v1,0(v1)
  496798:	8c420000 	lw	v0,0(v0)
  49679c:	00000000 	nop
  4967a0:	00621826 	xor	v1,v1,v0
  4967a4:	8fc20014 	lw	v0,20(s8)
  4967a8:	00000000 	nop
  4967ac:	00021402 	srl	v0,v0,0x10
  4967b0:	304200ff 	andi	v0,v0,0xff
  4967b4:	00021080 	sll	v0,v0,0x2
  4967b8:	24420800 	addiu	v0,v0,2048
  4967bc:	8f81804c 	lw	at,-32692(gp)
  4967c0:	00000000 	nop
  4967c4:	2421e394 	addiu	at,at,-7276
  4967c8:	00221021 	addu	v0,at,v0
  4967cc:	8c420000 	lw	v0,0(v0)
  4967d0:	00000000 	nop
  4967d4:	00621826 	xor	v1,v1,v0
  4967d8:	8fc20010 	lw	v0,16(s8)
  4967dc:	00000000 	nop
  4967e0:	00021602 	srl	v0,v0,0x18
  4967e4:	304200ff 	andi	v0,v0,0xff
  4967e8:	00021080 	sll	v0,v0,0x2
  4967ec:	24420c00 	addiu	v0,v0,3072
  4967f0:	8f81804c 	lw	at,-32692(gp)
  4967f4:	00000000 	nop
  4967f8:	2421e394 	addiu	at,at,-7276
  4967fc:	00221021 	addu	v0,at,v0
  496800:	8c420000 	lw	v0,0(v0)
  496804:	00000000 	nop
  496808:	00621826 	xor	v1,v1,v0
  49680c:	8c820000 	lw	v0,0(a0)
  496810:	00000000 	nop
  496814:	00431026 	xor	v0,v0,v1
  496818:	afc2001c 	sw	v0,28(s8)
  49681c:	8fc20028 	lw	v0,40(s8)
  496820:	00000000 	nop
  496824:	24440018 	addiu	a0,v0,24
  496828:	93c20013 	lbu	v0,19(s8)
  49682c:	00000000 	nop
  496830:	00021080 	sll	v0,v0,0x2
  496834:	8f83804c 	lw	v1,-32692(gp)
  496838:	00000000 	nop
  49683c:	2463e394 	addiu	v1,v1,-7276
  496840:	00621821 	addu	v1,v1,v0
  496844:	8fc2000c 	lw	v0,12(s8)
  496848:	00000000 	nop
  49684c:	00021202 	srl	v0,v0,0x8
  496850:	304200ff 	andi	v0,v0,0xff
  496854:	00021080 	sll	v0,v0,0x2
  496858:	24420400 	addiu	v0,v0,1024
  49685c:	8f81804c 	lw	at,-32692(gp)
  496860:	00000000 	nop
  496864:	2421e394 	addiu	at,at,-7276
  496868:	00221021 	addu	v0,at,v0
  49686c:	8c630000 	lw	v1,0(v1)
  496870:	8c420000 	lw	v0,0(v0)
  496874:	00000000 	nop
  496878:	00621826 	xor	v1,v1,v0
  49687c:	8fc20008 	lw	v0,8(s8)
  496880:	00000000 	nop
  496884:	00021402 	srl	v0,v0,0x10
  496888:	304200ff 	andi	v0,v0,0xff
  49688c:	00021080 	sll	v0,v0,0x2
  496890:	24420800 	addiu	v0,v0,2048
  496894:	8f81804c 	lw	at,-32692(gp)
  496898:	00000000 	nop
  49689c:	2421e394 	addiu	at,at,-7276
  4968a0:	00221021 	addu	v0,at,v0
  4968a4:	8c420000 	lw	v0,0(v0)
  4968a8:	00000000 	nop
  4968ac:	00621826 	xor	v1,v1,v0
  4968b0:	8fc20014 	lw	v0,20(s8)
  4968b4:	00000000 	nop
  4968b8:	00021602 	srl	v0,v0,0x18
  4968bc:	304200ff 	andi	v0,v0,0xff
  4968c0:	00021080 	sll	v0,v0,0x2
  4968c4:	24420c00 	addiu	v0,v0,3072
  4968c8:	8f81804c 	lw	at,-32692(gp)
  4968cc:	00000000 	nop
  4968d0:	2421e394 	addiu	at,at,-7276
  4968d4:	00221021 	addu	v0,at,v0
  4968d8:	8c420000 	lw	v0,0(v0)
  4968dc:	00000000 	nop
  4968e0:	00621826 	xor	v1,v1,v0
  4968e4:	8c820000 	lw	v0,0(a0)
  4968e8:	00000000 	nop
  4968ec:	00431026 	xor	v0,v0,v1
  4968f0:	afc20020 	sw	v0,32(s8)
  4968f4:	8fc20028 	lw	v0,40(s8)
  4968f8:	00000000 	nop
  4968fc:	2444001c 	addiu	a0,v0,28
  496900:	93c20017 	lbu	v0,23(s8)
  496904:	00000000 	nop
  496908:	00021080 	sll	v0,v0,0x2
  49690c:	8f83804c 	lw	v1,-32692(gp)
  496910:	00000000 	nop
  496914:	2463e394 	addiu	v1,v1,-7276
  496918:	00621821 	addu	v1,v1,v0
  49691c:	8fc20010 	lw	v0,16(s8)
  496920:	00000000 	nop
  496924:	00021202 	srl	v0,v0,0x8
  496928:	304200ff 	andi	v0,v0,0xff
  49692c:	00021080 	sll	v0,v0,0x2
  496930:	24420400 	addiu	v0,v0,1024
  496934:	8f81804c 	lw	at,-32692(gp)
  496938:	00000000 	nop
  49693c:	2421e394 	addiu	at,at,-7276
  496940:	00221021 	addu	v0,at,v0
  496944:	8c630000 	lw	v1,0(v1)
  496948:	8c420000 	lw	v0,0(v0)
  49694c:	00000000 	nop
  496950:	00621826 	xor	v1,v1,v0
  496954:	8fc2000c 	lw	v0,12(s8)
  496958:	00000000 	nop
  49695c:	00021402 	srl	v0,v0,0x10
  496960:	304200ff 	andi	v0,v0,0xff
  496964:	00021080 	sll	v0,v0,0x2
  496968:	24420800 	addiu	v0,v0,2048
  49696c:	8f81804c 	lw	at,-32692(gp)
  496970:	00000000 	nop
  496974:	2421e394 	addiu	at,at,-7276
  496978:	00221021 	addu	v0,at,v0
  49697c:	8c420000 	lw	v0,0(v0)
  496980:	00000000 	nop
  496984:	00621826 	xor	v1,v1,v0
  496988:	8fc20008 	lw	v0,8(s8)
  49698c:	00000000 	nop
  496990:	00021602 	srl	v0,v0,0x18
  496994:	304200ff 	andi	v0,v0,0xff
  496998:	00021080 	sll	v0,v0,0x2
  49699c:	24420c00 	addiu	v0,v0,3072
  4969a0:	8f81804c 	lw	at,-32692(gp)
  4969a4:	00000000 	nop
  4969a8:	2421e394 	addiu	at,at,-7276
  4969ac:	00221021 	addu	v0,at,v0
  4969b0:	8c420000 	lw	v0,0(v0)
  4969b4:	00000000 	nop
  4969b8:	00621826 	xor	v1,v1,v0
  4969bc:	8c820000 	lw	v0,0(a0)
  4969c0:	00000000 	nop
  4969c4:	00431026 	xor	v0,v0,v1
  4969c8:	afc20024 	sw	v0,36(s8)
                round(inv_rnd,  b1, b0, kp + 2 * nc); 
  4969cc:	8fc20028 	lw	v0,40(s8)
  4969d0:	00000000 	nop
  4969d4:	24440020 	addiu	a0,v0,32
  4969d8:	93c2001b 	lbu	v0,27(s8)
  4969dc:	00000000 	nop
  4969e0:	00021080 	sll	v0,v0,0x2
  4969e4:	8f83804c 	lw	v1,-32692(gp)
  4969e8:	00000000 	nop
  4969ec:	2463e394 	addiu	v1,v1,-7276
  4969f0:	00621821 	addu	v1,v1,v0
  4969f4:	8fc20024 	lw	v0,36(s8)
  4969f8:	00000000 	nop
  4969fc:	00021202 	srl	v0,v0,0x8
  496a00:	304200ff 	andi	v0,v0,0xff
  496a04:	00021080 	sll	v0,v0,0x2
  496a08:	24420400 	addiu	v0,v0,1024
  496a0c:	8f81804c 	lw	at,-32692(gp)
  496a10:	00000000 	nop
  496a14:	2421e394 	addiu	at,at,-7276
  496a18:	00221021 	addu	v0,at,v0
  496a1c:	8c630000 	lw	v1,0(v1)
  496a20:	8c420000 	lw	v0,0(v0)
  496a24:	00000000 	nop
  496a28:	00621826 	xor	v1,v1,v0
  496a2c:	8fc20020 	lw	v0,32(s8)
  496a30:	00000000 	nop
  496a34:	00021402 	srl	v0,v0,0x10
  496a38:	304200ff 	andi	v0,v0,0xff
  496a3c:	00021080 	sll	v0,v0,0x2
  496a40:	24420800 	addiu	v0,v0,2048
  496a44:	8f81804c 	lw	at,-32692(gp)
  496a48:	00000000 	nop
  496a4c:	2421e394 	addiu	at,at,-7276
  496a50:	00221021 	addu	v0,at,v0
  496a54:	8c420000 	lw	v0,0(v0)
  496a58:	00000000 	nop
  496a5c:	00621826 	xor	v1,v1,v0
  496a60:	8fc2001c 	lw	v0,28(s8)
  496a64:	00000000 	nop
  496a68:	00021602 	srl	v0,v0,0x18
  496a6c:	304200ff 	andi	v0,v0,0xff
  496a70:	00021080 	sll	v0,v0,0x2
  496a74:	24420c00 	addiu	v0,v0,3072
  496a78:	8f81804c 	lw	at,-32692(gp)
  496a7c:	00000000 	nop
  496a80:	2421e394 	addiu	at,at,-7276
  496a84:	00221021 	addu	v0,at,v0
  496a88:	8c420000 	lw	v0,0(v0)
  496a8c:	00000000 	nop
  496a90:	00621826 	xor	v1,v1,v0
  496a94:	8c820000 	lw	v0,0(a0)
  496a98:	00000000 	nop
  496a9c:	00431026 	xor	v0,v0,v1
  496aa0:	afc20008 	sw	v0,8(s8)
  496aa4:	8fc20028 	lw	v0,40(s8)
  496aa8:	00000000 	nop
  496aac:	24440024 	addiu	a0,v0,36
  496ab0:	93c2001f 	lbu	v0,31(s8)
  496ab4:	00000000 	nop
  496ab8:	00021080 	sll	v0,v0,0x2
  496abc:	8f83804c 	lw	v1,-32692(gp)
  496ac0:	00000000 	nop
  496ac4:	2463e394 	addiu	v1,v1,-7276
  496ac8:	00621821 	addu	v1,v1,v0
  496acc:	8fc20018 	lw	v0,24(s8)
  496ad0:	00000000 	nop
  496ad4:	00021202 	srl	v0,v0,0x8
  496ad8:	304200ff 	andi	v0,v0,0xff
  496adc:	00021080 	sll	v0,v0,0x2
  496ae0:	24420400 	addiu	v0,v0,1024
  496ae4:	8f81804c 	lw	at,-32692(gp)
  496ae8:	00000000 	nop
  496aec:	2421e394 	addiu	at,at,-7276
  496af0:	00221021 	addu	v0,at,v0
  496af4:	8c630000 	lw	v1,0(v1)
  496af8:	8c420000 	lw	v0,0(v0)
  496afc:	00000000 	nop
  496b00:	00621826 	xor	v1,v1,v0
  496b04:	8fc20024 	lw	v0,36(s8)
  496b08:	00000000 	nop
  496b0c:	00021402 	srl	v0,v0,0x10
  496b10:	304200ff 	andi	v0,v0,0xff
  496b14:	00021080 	sll	v0,v0,0x2
  496b18:	24420800 	addiu	v0,v0,2048
  496b1c:	8f81804c 	lw	at,-32692(gp)
  496b20:	00000000 	nop
  496b24:	2421e394 	addiu	at,at,-7276
  496b28:	00221021 	addu	v0,at,v0
  496b2c:	8c420000 	lw	v0,0(v0)
  496b30:	00000000 	nop
  496b34:	00621826 	xor	v1,v1,v0
  496b38:	8fc20020 	lw	v0,32(s8)
  496b3c:	00000000 	nop
  496b40:	00021602 	srl	v0,v0,0x18
  496b44:	304200ff 	andi	v0,v0,0xff
  496b48:	00021080 	sll	v0,v0,0x2
  496b4c:	24420c00 	addiu	v0,v0,3072
  496b50:	8f81804c 	lw	at,-32692(gp)
  496b54:	00000000 	nop
  496b58:	2421e394 	addiu	at,at,-7276
  496b5c:	00221021 	addu	v0,at,v0
  496b60:	8c420000 	lw	v0,0(v0)
  496b64:	00000000 	nop
  496b68:	00621826 	xor	v1,v1,v0
  496b6c:	8c820000 	lw	v0,0(a0)
  496b70:	00000000 	nop
  496b74:	00431026 	xor	v0,v0,v1
  496b78:	afc2000c 	sw	v0,12(s8)
  496b7c:	8fc20028 	lw	v0,40(s8)
  496b80:	00000000 	nop
  496b84:	24440028 	addiu	a0,v0,40
  496b88:	93c20023 	lbu	v0,35(s8)
  496b8c:	00000000 	nop
  496b90:	00021080 	sll	v0,v0,0x2
  496b94:	8f83804c 	lw	v1,-32692(gp)
  496b98:	00000000 	nop
  496b9c:	2463e394 	addiu	v1,v1,-7276
  496ba0:	00621821 	addu	v1,v1,v0
  496ba4:	8fc2001c 	lw	v0,28(s8)
  496ba8:	00000000 	nop
  496bac:	00021202 	srl	v0,v0,0x8
  496bb0:	304200ff 	andi	v0,v0,0xff
  496bb4:	00021080 	sll	v0,v0,0x2
  496bb8:	24420400 	addiu	v0,v0,1024
  496bbc:	8f81804c 	lw	at,-32692(gp)
  496bc0:	00000000 	nop
  496bc4:	2421e394 	addiu	at,at,-7276
  496bc8:	00221021 	addu	v0,at,v0
  496bcc:	8c630000 	lw	v1,0(v1)
  496bd0:	8c420000 	lw	v0,0(v0)
  496bd4:	00000000 	nop
  496bd8:	00621826 	xor	v1,v1,v0
  496bdc:	8fc20018 	lw	v0,24(s8)
  496be0:	00000000 	nop
  496be4:	00021402 	srl	v0,v0,0x10
  496be8:	304200ff 	andi	v0,v0,0xff
  496bec:	00021080 	sll	v0,v0,0x2
  496bf0:	24420800 	addiu	v0,v0,2048
  496bf4:	8f81804c 	lw	at,-32692(gp)
  496bf8:	00000000 	nop
  496bfc:	2421e394 	addiu	at,at,-7276
  496c00:	00221021 	addu	v0,at,v0
  496c04:	8c420000 	lw	v0,0(v0)
  496c08:	00000000 	nop
  496c0c:	00621826 	xor	v1,v1,v0
  496c10:	8fc20024 	lw	v0,36(s8)
  496c14:	00000000 	nop
  496c18:	00021602 	srl	v0,v0,0x18
  496c1c:	304200ff 	andi	v0,v0,0xff
  496c20:	00021080 	sll	v0,v0,0x2
  496c24:	24420c00 	addiu	v0,v0,3072
  496c28:	8f81804c 	lw	at,-32692(gp)
  496c2c:	00000000 	nop
  496c30:	2421e394 	addiu	at,at,-7276
  496c34:	00221021 	addu	v0,at,v0
  496c38:	8c420000 	lw	v0,0(v0)
  496c3c:	00000000 	nop
  496c40:	00621826 	xor	v1,v1,v0
  496c44:	8c820000 	lw	v0,0(a0)
  496c48:	00000000 	nop
  496c4c:	00431026 	xor	v0,v0,v1
  496c50:	afc20010 	sw	v0,16(s8)
  496c54:	8fc20028 	lw	v0,40(s8)
  496c58:	00000000 	nop
  496c5c:	2444002c 	addiu	a0,v0,44
  496c60:	93c20027 	lbu	v0,39(s8)
  496c64:	00000000 	nop
  496c68:	00021080 	sll	v0,v0,0x2
  496c6c:	8f83804c 	lw	v1,-32692(gp)
  496c70:	00000000 	nop
  496c74:	2463e394 	addiu	v1,v1,-7276
  496c78:	00621821 	addu	v1,v1,v0
  496c7c:	8fc20020 	lw	v0,32(s8)
  496c80:	00000000 	nop
  496c84:	00021202 	srl	v0,v0,0x8
  496c88:	304200ff 	andi	v0,v0,0xff
  496c8c:	00021080 	sll	v0,v0,0x2
  496c90:	24420400 	addiu	v0,v0,1024
  496c94:	8f81804c 	lw	at,-32692(gp)
  496c98:	00000000 	nop
  496c9c:	2421e394 	addiu	at,at,-7276
  496ca0:	00221021 	addu	v0,at,v0
  496ca4:	8c630000 	lw	v1,0(v1)
  496ca8:	8c420000 	lw	v0,0(v0)
  496cac:	00000000 	nop
  496cb0:	00621826 	xor	v1,v1,v0
  496cb4:	8fc2001c 	lw	v0,28(s8)
  496cb8:	00000000 	nop
  496cbc:	00021402 	srl	v0,v0,0x10
  496cc0:	304200ff 	andi	v0,v0,0xff
  496cc4:	00021080 	sll	v0,v0,0x2
  496cc8:	24420800 	addiu	v0,v0,2048
  496ccc:	8f81804c 	lw	at,-32692(gp)
  496cd0:	00000000 	nop
  496cd4:	2421e394 	addiu	at,at,-7276
  496cd8:	00221021 	addu	v0,at,v0
  496cdc:	8c420000 	lw	v0,0(v0)
  496ce0:	00000000 	nop
  496ce4:	00621826 	xor	v1,v1,v0
  496ce8:	8fc20018 	lw	v0,24(s8)
  496cec:	00000000 	nop
  496cf0:	00021602 	srl	v0,v0,0x18
  496cf4:	304200ff 	andi	v0,v0,0xff
  496cf8:	00021080 	sll	v0,v0,0x2
  496cfc:	24420c00 	addiu	v0,v0,3072
  496d00:	8f81804c 	lw	at,-32692(gp)
  496d04:	00000000 	nop
  496d08:	2421e394 	addiu	at,at,-7276
  496d0c:	00221021 	addu	v0,at,v0
  496d10:	8c420000 	lw	v0,0(v0)
  496d14:	00000000 	nop
  496d18:	00621826 	xor	v1,v1,v0
  496d1c:	8c820000 	lw	v0,0(a0)
  496d20:	00000000 	nop
  496d24:	00431026 	xor	v0,v0,v1
  496d28:	afc20014 	sw	v0,20(s8)
                round(inv_rnd,  b0, b1, kp + 3 * nc);
  496d2c:	8fc20028 	lw	v0,40(s8)
  496d30:	00000000 	nop
  496d34:	24440030 	addiu	a0,v0,48
  496d38:	93c2000b 	lbu	v0,11(s8)
  496d3c:	00000000 	nop
  496d40:	00021080 	sll	v0,v0,0x2
  496d44:	8f83804c 	lw	v1,-32692(gp)
  496d48:	00000000 	nop
  496d4c:	2463e394 	addiu	v1,v1,-7276
  496d50:	00621821 	addu	v1,v1,v0
  496d54:	8fc20014 	lw	v0,20(s8)
  496d58:	00000000 	nop
  496d5c:	00021202 	srl	v0,v0,0x8
  496d60:	304200ff 	andi	v0,v0,0xff
  496d64:	00021080 	sll	v0,v0,0x2
  496d68:	24420400 	addiu	v0,v0,1024
  496d6c:	8f81804c 	lw	at,-32692(gp)
  496d70:	00000000 	nop
  496d74:	2421e394 	addiu	at,at,-7276
  496d78:	00221021 	addu	v0,at,v0
  496d7c:	8c630000 	lw	v1,0(v1)
  496d80:	8c420000 	lw	v0,0(v0)
  496d84:	00000000 	nop
  496d88:	00621826 	xor	v1,v1,v0
  496d8c:	8fc20010 	lw	v0,16(s8)
  496d90:	00000000 	nop
  496d94:	00021402 	srl	v0,v0,0x10
  496d98:	304200ff 	andi	v0,v0,0xff
  496d9c:	00021080 	sll	v0,v0,0x2
  496da0:	24420800 	addiu	v0,v0,2048
  496da4:	8f81804c 	lw	at,-32692(gp)
  496da8:	00000000 	nop
  496dac:	2421e394 	addiu	at,at,-7276
  496db0:	00221021 	addu	v0,at,v0
  496db4:	8c420000 	lw	v0,0(v0)
  496db8:	00000000 	nop
  496dbc:	00621826 	xor	v1,v1,v0
  496dc0:	8fc2000c 	lw	v0,12(s8)
  496dc4:	00000000 	nop
  496dc8:	00021602 	srl	v0,v0,0x18
  496dcc:	304200ff 	andi	v0,v0,0xff
  496dd0:	00021080 	sll	v0,v0,0x2
  496dd4:	24420c00 	addiu	v0,v0,3072
  496dd8:	8f81804c 	lw	at,-32692(gp)
  496ddc:	00000000 	nop
  496de0:	2421e394 	addiu	at,at,-7276
  496de4:	00221021 	addu	v0,at,v0
  496de8:	8c420000 	lw	v0,0(v0)
  496dec:	00000000 	nop
  496df0:	00621826 	xor	v1,v1,v0
  496df4:	8c820000 	lw	v0,0(a0)
  496df8:	00000000 	nop
  496dfc:	00431026 	xor	v0,v0,v1
  496e00:	afc20018 	sw	v0,24(s8)
  496e04:	8fc20028 	lw	v0,40(s8)
  496e08:	00000000 	nop
  496e0c:	24440034 	addiu	a0,v0,52
  496e10:	93c2000f 	lbu	v0,15(s8)
  496e14:	00000000 	nop
  496e18:	00021080 	sll	v0,v0,0x2
  496e1c:	8f83804c 	lw	v1,-32692(gp)
  496e20:	00000000 	nop
  496e24:	2463e394 	addiu	v1,v1,-7276
  496e28:	00621821 	addu	v1,v1,v0
  496e2c:	8fc20008 	lw	v0,8(s8)
  496e30:	00000000 	nop
  496e34:	00021202 	srl	v0,v0,0x8
  496e38:	304200ff 	andi	v0,v0,0xff
  496e3c:	00021080 	sll	v0,v0,0x2
  496e40:	24420400 	addiu	v0,v0,1024
  496e44:	8f81804c 	lw	at,-32692(gp)
  496e48:	00000000 	nop
  496e4c:	2421e394 	addiu	at,at,-7276
  496e50:	00221021 	addu	v0,at,v0
  496e54:	8c630000 	lw	v1,0(v1)
  496e58:	8c420000 	lw	v0,0(v0)
  496e5c:	00000000 	nop
  496e60:	00621826 	xor	v1,v1,v0
  496e64:	8fc20014 	lw	v0,20(s8)
  496e68:	00000000 	nop
  496e6c:	00021402 	srl	v0,v0,0x10
  496e70:	304200ff 	andi	v0,v0,0xff
  496e74:	00021080 	sll	v0,v0,0x2
  496e78:	24420800 	addiu	v0,v0,2048
  496e7c:	8f81804c 	lw	at,-32692(gp)
  496e80:	00000000 	nop
  496e84:	2421e394 	addiu	at,at,-7276
  496e88:	00221021 	addu	v0,at,v0
  496e8c:	8c420000 	lw	v0,0(v0)
  496e90:	00000000 	nop
  496e94:	00621826 	xor	v1,v1,v0
  496e98:	8fc20010 	lw	v0,16(s8)
  496e9c:	00000000 	nop
  496ea0:	00021602 	srl	v0,v0,0x18
  496ea4:	304200ff 	andi	v0,v0,0xff
  496ea8:	00021080 	sll	v0,v0,0x2
  496eac:	24420c00 	addiu	v0,v0,3072
  496eb0:	8f81804c 	lw	at,-32692(gp)
  496eb4:	00000000 	nop
  496eb8:	2421e394 	addiu	at,at,-7276
  496ebc:	00221021 	addu	v0,at,v0
  496ec0:	8c420000 	lw	v0,0(v0)
  496ec4:	00000000 	nop
  496ec8:	00621826 	xor	v1,v1,v0
  496ecc:	8c820000 	lw	v0,0(a0)
  496ed0:	00000000 	nop
  496ed4:	00431026 	xor	v0,v0,v1
  496ed8:	afc2001c 	sw	v0,28(s8)
  496edc:	8fc20028 	lw	v0,40(s8)
  496ee0:	00000000 	nop
  496ee4:	24440038 	addiu	a0,v0,56
  496ee8:	93c20013 	lbu	v0,19(s8)
  496eec:	00000000 	nop
  496ef0:	00021080 	sll	v0,v0,0x2
  496ef4:	8f83804c 	lw	v1,-32692(gp)
  496ef8:	00000000 	nop
  496efc:	2463e394 	addiu	v1,v1,-7276
  496f00:	00621821 	addu	v1,v1,v0
  496f04:	8fc2000c 	lw	v0,12(s8)
  496f08:	00000000 	nop
  496f0c:	00021202 	srl	v0,v0,0x8
  496f10:	304200ff 	andi	v0,v0,0xff
  496f14:	00021080 	sll	v0,v0,0x2
  496f18:	24420400 	addiu	v0,v0,1024
  496f1c:	8f81804c 	lw	at,-32692(gp)
  496f20:	00000000 	nop
  496f24:	2421e394 	addiu	at,at,-7276
  496f28:	00221021 	addu	v0,at,v0
  496f2c:	8c630000 	lw	v1,0(v1)
  496f30:	8c420000 	lw	v0,0(v0)
  496f34:	00000000 	nop
  496f38:	00621826 	xor	v1,v1,v0
  496f3c:	8fc20008 	lw	v0,8(s8)
  496f40:	00000000 	nop
  496f44:	00021402 	srl	v0,v0,0x10
  496f48:	304200ff 	andi	v0,v0,0xff
  496f4c:	00021080 	sll	v0,v0,0x2
  496f50:	24420800 	addiu	v0,v0,2048
  496f54:	8f81804c 	lw	at,-32692(gp)
  496f58:	00000000 	nop
  496f5c:	2421e394 	addiu	at,at,-7276
  496f60:	00221021 	addu	v0,at,v0
  496f64:	8c420000 	lw	v0,0(v0)
  496f68:	00000000 	nop
  496f6c:	00621826 	xor	v1,v1,v0
  496f70:	8fc20014 	lw	v0,20(s8)
  496f74:	00000000 	nop
  496f78:	00021602 	srl	v0,v0,0x18
  496f7c:	304200ff 	andi	v0,v0,0xff
  496f80:	00021080 	sll	v0,v0,0x2
  496f84:	24420c00 	addiu	v0,v0,3072
  496f88:	8f81804c 	lw	at,-32692(gp)
  496f8c:	00000000 	nop
  496f90:	2421e394 	addiu	at,at,-7276
  496f94:	00221021 	addu	v0,at,v0
  496f98:	8c420000 	lw	v0,0(v0)
  496f9c:	00000000 	nop
  496fa0:	00621826 	xor	v1,v1,v0
  496fa4:	8c820000 	lw	v0,0(a0)
  496fa8:	00000000 	nop
  496fac:	00431026 	xor	v0,v0,v1
  496fb0:	afc20020 	sw	v0,32(s8)
  496fb4:	8fc20028 	lw	v0,40(s8)
  496fb8:	00000000 	nop
  496fbc:	2444003c 	addiu	a0,v0,60
  496fc0:	93c20017 	lbu	v0,23(s8)
  496fc4:	00000000 	nop
  496fc8:	00021080 	sll	v0,v0,0x2
  496fcc:	8f83804c 	lw	v1,-32692(gp)
  496fd0:	00000000 	nop
  496fd4:	2463e394 	addiu	v1,v1,-7276
  496fd8:	00621821 	addu	v1,v1,v0
  496fdc:	8fc20010 	lw	v0,16(s8)
  496fe0:	00000000 	nop
  496fe4:	00021202 	srl	v0,v0,0x8
  496fe8:	304200ff 	andi	v0,v0,0xff
  496fec:	00021080 	sll	v0,v0,0x2
  496ff0:	24420400 	addiu	v0,v0,1024
  496ff4:	8f81804c 	lw	at,-32692(gp)
  496ff8:	00000000 	nop
  496ffc:	2421e394 	addiu	at,at,-7276
  497000:	00221021 	addu	v0,at,v0
  497004:	8c630000 	lw	v1,0(v1)
  497008:	8c420000 	lw	v0,0(v0)
  49700c:	00000000 	nop
  497010:	00621826 	xor	v1,v1,v0
  497014:	8fc2000c 	lw	v0,12(s8)
  497018:	00000000 	nop
  49701c:	00021402 	srl	v0,v0,0x10
  497020:	304200ff 	andi	v0,v0,0xff
  497024:	00021080 	sll	v0,v0,0x2
  497028:	24420800 	addiu	v0,v0,2048
  49702c:	8f81804c 	lw	at,-32692(gp)
  497030:	00000000 	nop
  497034:	2421e394 	addiu	at,at,-7276
  497038:	00221021 	addu	v0,at,v0
  49703c:	8c420000 	lw	v0,0(v0)
  497040:	00000000 	nop
  497044:	00621826 	xor	v1,v1,v0
  497048:	8fc20008 	lw	v0,8(s8)
  49704c:	00000000 	nop
  497050:	00021602 	srl	v0,v0,0x18
  497054:	304200ff 	andi	v0,v0,0xff
  497058:	00021080 	sll	v0,v0,0x2
  49705c:	24420c00 	addiu	v0,v0,3072
  497060:	8f81804c 	lw	at,-32692(gp)
  497064:	00000000 	nop
  497068:	2421e394 	addiu	at,at,-7276
  49706c:	00221021 	addu	v0,at,v0
  497070:	8c420000 	lw	v0,0(v0)
  497074:	00000000 	nop
  497078:	00621826 	xor	v1,v1,v0
  49707c:	8c820000 	lw	v0,0(a0)
  497080:	00000000 	nop
  497084:	00431026 	xor	v0,v0,v1
  497088:	afc20024 	sw	v0,36(s8)
                round(inv_rnd,  b1, b0, kp + 4 * nc); 
  49708c:	8fc20028 	lw	v0,40(s8)
  497090:	00000000 	nop
  497094:	24440040 	addiu	a0,v0,64
  497098:	93c2001b 	lbu	v0,27(s8)
  49709c:	00000000 	nop
  4970a0:	00021080 	sll	v0,v0,0x2
  4970a4:	8f83804c 	lw	v1,-32692(gp)
  4970a8:	00000000 	nop
  4970ac:	2463e394 	addiu	v1,v1,-7276
  4970b0:	00621821 	addu	v1,v1,v0
  4970b4:	8fc20024 	lw	v0,36(s8)
  4970b8:	00000000 	nop
  4970bc:	00021202 	srl	v0,v0,0x8
  4970c0:	304200ff 	andi	v0,v0,0xff
  4970c4:	00021080 	sll	v0,v0,0x2
  4970c8:	24420400 	addiu	v0,v0,1024
  4970cc:	8f81804c 	lw	at,-32692(gp)
  4970d0:	00000000 	nop
  4970d4:	2421e394 	addiu	at,at,-7276
  4970d8:	00221021 	addu	v0,at,v0
  4970dc:	8c630000 	lw	v1,0(v1)
  4970e0:	8c420000 	lw	v0,0(v0)
  4970e4:	00000000 	nop
  4970e8:	00621826 	xor	v1,v1,v0
  4970ec:	8fc20020 	lw	v0,32(s8)
  4970f0:	00000000 	nop
  4970f4:	00021402 	srl	v0,v0,0x10
  4970f8:	304200ff 	andi	v0,v0,0xff
  4970fc:	00021080 	sll	v0,v0,0x2
  497100:	24420800 	addiu	v0,v0,2048
  497104:	8f81804c 	lw	at,-32692(gp)
  497108:	00000000 	nop
  49710c:	2421e394 	addiu	at,at,-7276
  497110:	00221021 	addu	v0,at,v0
  497114:	8c420000 	lw	v0,0(v0)
  497118:	00000000 	nop
  49711c:	00621826 	xor	v1,v1,v0
  497120:	8fc2001c 	lw	v0,28(s8)
  497124:	00000000 	nop
  497128:	00021602 	srl	v0,v0,0x18
  49712c:	304200ff 	andi	v0,v0,0xff
  497130:	00021080 	sll	v0,v0,0x2
  497134:	24420c00 	addiu	v0,v0,3072
  497138:	8f81804c 	lw	at,-32692(gp)
  49713c:	00000000 	nop
  497140:	2421e394 	addiu	at,at,-7276
  497144:	00221021 	addu	v0,at,v0
  497148:	8c420000 	lw	v0,0(v0)
  49714c:	00000000 	nop
  497150:	00621826 	xor	v1,v1,v0
  497154:	8c820000 	lw	v0,0(a0)
  497158:	00000000 	nop
  49715c:	00431026 	xor	v0,v0,v1
  497160:	afc20008 	sw	v0,8(s8)
  497164:	8fc20028 	lw	v0,40(s8)
  497168:	00000000 	nop
  49716c:	24440044 	addiu	a0,v0,68
  497170:	93c2001f 	lbu	v0,31(s8)
  497174:	00000000 	nop
  497178:	00021080 	sll	v0,v0,0x2
  49717c:	8f83804c 	lw	v1,-32692(gp)
  497180:	00000000 	nop
  497184:	2463e394 	addiu	v1,v1,-7276
  497188:	00621821 	addu	v1,v1,v0
  49718c:	8fc20018 	lw	v0,24(s8)
  497190:	00000000 	nop
  497194:	00021202 	srl	v0,v0,0x8
  497198:	304200ff 	andi	v0,v0,0xff
  49719c:	00021080 	sll	v0,v0,0x2
  4971a0:	24420400 	addiu	v0,v0,1024
  4971a4:	8f81804c 	lw	at,-32692(gp)
  4971a8:	00000000 	nop
  4971ac:	2421e394 	addiu	at,at,-7276
  4971b0:	00221021 	addu	v0,at,v0
  4971b4:	8c630000 	lw	v1,0(v1)
  4971b8:	8c420000 	lw	v0,0(v0)
  4971bc:	00000000 	nop
  4971c0:	00621826 	xor	v1,v1,v0
  4971c4:	8fc20024 	lw	v0,36(s8)
  4971c8:	00000000 	nop
  4971cc:	00021402 	srl	v0,v0,0x10
  4971d0:	304200ff 	andi	v0,v0,0xff
  4971d4:	00021080 	sll	v0,v0,0x2
  4971d8:	24420800 	addiu	v0,v0,2048
  4971dc:	8f81804c 	lw	at,-32692(gp)
  4971e0:	00000000 	nop
  4971e4:	2421e394 	addiu	at,at,-7276
  4971e8:	00221021 	addu	v0,at,v0
  4971ec:	8c420000 	lw	v0,0(v0)
  4971f0:	00000000 	nop
  4971f4:	00621826 	xor	v1,v1,v0
  4971f8:	8fc20020 	lw	v0,32(s8)
  4971fc:	00000000 	nop
  497200:	00021602 	srl	v0,v0,0x18
  497204:	304200ff 	andi	v0,v0,0xff
  497208:	00021080 	sll	v0,v0,0x2
  49720c:	24420c00 	addiu	v0,v0,3072
  497210:	8f81804c 	lw	at,-32692(gp)
  497214:	00000000 	nop
  497218:	2421e394 	addiu	at,at,-7276
  49721c:	00221021 	addu	v0,at,v0
  497220:	8c420000 	lw	v0,0(v0)
  497224:	00000000 	nop
  497228:	00621826 	xor	v1,v1,v0
  49722c:	8c820000 	lw	v0,0(a0)
  497230:	00000000 	nop
  497234:	00431026 	xor	v0,v0,v1
  497238:	afc2000c 	sw	v0,12(s8)
  49723c:	8fc20028 	lw	v0,40(s8)
  497240:	00000000 	nop
  497244:	24440048 	addiu	a0,v0,72
  497248:	93c20023 	lbu	v0,35(s8)
  49724c:	00000000 	nop
  497250:	00021080 	sll	v0,v0,0x2
  497254:	8f83804c 	lw	v1,-32692(gp)
  497258:	00000000 	nop
  49725c:	2463e394 	addiu	v1,v1,-7276
  497260:	00621821 	addu	v1,v1,v0
  497264:	8fc2001c 	lw	v0,28(s8)
  497268:	00000000 	nop
  49726c:	00021202 	srl	v0,v0,0x8
  497270:	304200ff 	andi	v0,v0,0xff
  497274:	00021080 	sll	v0,v0,0x2
  497278:	24420400 	addiu	v0,v0,1024
  49727c:	8f81804c 	lw	at,-32692(gp)
  497280:	00000000 	nop
  497284:	2421e394 	addiu	at,at,-7276
  497288:	00221021 	addu	v0,at,v0
  49728c:	8c630000 	lw	v1,0(v1)
  497290:	8c420000 	lw	v0,0(v0)
  497294:	00000000 	nop
  497298:	00621826 	xor	v1,v1,v0
  49729c:	8fc20018 	lw	v0,24(s8)
  4972a0:	00000000 	nop
  4972a4:	00021402 	srl	v0,v0,0x10
  4972a8:	304200ff 	andi	v0,v0,0xff
  4972ac:	00021080 	sll	v0,v0,0x2
  4972b0:	24420800 	addiu	v0,v0,2048
  4972b4:	8f81804c 	lw	at,-32692(gp)
  4972b8:	00000000 	nop
  4972bc:	2421e394 	addiu	at,at,-7276
  4972c0:	00221021 	addu	v0,at,v0
  4972c4:	8c420000 	lw	v0,0(v0)
  4972c8:	00000000 	nop
  4972cc:	00621826 	xor	v1,v1,v0
  4972d0:	8fc20024 	lw	v0,36(s8)
  4972d4:	00000000 	nop
  4972d8:	00021602 	srl	v0,v0,0x18
  4972dc:	304200ff 	andi	v0,v0,0xff
  4972e0:	00021080 	sll	v0,v0,0x2
  4972e4:	24420c00 	addiu	v0,v0,3072
  4972e8:	8f81804c 	lw	at,-32692(gp)
  4972ec:	00000000 	nop
  4972f0:	2421e394 	addiu	at,at,-7276
  4972f4:	00221021 	addu	v0,at,v0
  4972f8:	8c420000 	lw	v0,0(v0)
  4972fc:	00000000 	nop
  497300:	00621826 	xor	v1,v1,v0
  497304:	8c820000 	lw	v0,0(a0)
  497308:	00000000 	nop
  49730c:	00431026 	xor	v0,v0,v1
  497310:	afc20010 	sw	v0,16(s8)
  497314:	8fc20028 	lw	v0,40(s8)
  497318:	00000000 	nop
  49731c:	2444004c 	addiu	a0,v0,76
  497320:	93c20027 	lbu	v0,39(s8)
  497324:	00000000 	nop
  497328:	00021080 	sll	v0,v0,0x2
  49732c:	8f83804c 	lw	v1,-32692(gp)
  497330:	00000000 	nop
  497334:	2463e394 	addiu	v1,v1,-7276
  497338:	00621821 	addu	v1,v1,v0
  49733c:	8fc20020 	lw	v0,32(s8)
  497340:	00000000 	nop
  497344:	00021202 	srl	v0,v0,0x8
  497348:	304200ff 	andi	v0,v0,0xff
  49734c:	00021080 	sll	v0,v0,0x2
  497350:	24420400 	addiu	v0,v0,1024
  497354:	8f81804c 	lw	at,-32692(gp)
  497358:	00000000 	nop
  49735c:	2421e394 	addiu	at,at,-7276
  497360:	00221021 	addu	v0,at,v0
  497364:	8c630000 	lw	v1,0(v1)
  497368:	8c420000 	lw	v0,0(v0)
  49736c:	00000000 	nop
  497370:	00621826 	xor	v1,v1,v0
  497374:	8fc2001c 	lw	v0,28(s8)
  497378:	00000000 	nop
  49737c:	00021402 	srl	v0,v0,0x10
  497380:	304200ff 	andi	v0,v0,0xff
  497384:	00021080 	sll	v0,v0,0x2
  497388:	24420800 	addiu	v0,v0,2048
  49738c:	8f81804c 	lw	at,-32692(gp)
  497390:	00000000 	nop
  497394:	2421e394 	addiu	at,at,-7276
  497398:	00221021 	addu	v0,at,v0
  49739c:	8c420000 	lw	v0,0(v0)
  4973a0:	00000000 	nop
  4973a4:	00621826 	xor	v1,v1,v0
  4973a8:	8fc20018 	lw	v0,24(s8)
  4973ac:	00000000 	nop
  4973b0:	00021602 	srl	v0,v0,0x18
  4973b4:	304200ff 	andi	v0,v0,0xff
  4973b8:	00021080 	sll	v0,v0,0x2
  4973bc:	24420c00 	addiu	v0,v0,3072
  4973c0:	8f81804c 	lw	at,-32692(gp)
  4973c4:	00000000 	nop
  4973c8:	2421e394 	addiu	at,at,-7276
  4973cc:	00221021 	addu	v0,at,v0
  4973d0:	8c420000 	lw	v0,0(v0)
  4973d4:	00000000 	nop
  4973d8:	00621826 	xor	v1,v1,v0
  4973dc:	8c820000 	lw	v0,0(a0)
  4973e0:	00000000 	nop
  4973e4:	00431026 	xor	v0,v0,v1
  4973e8:	afc20014 	sw	v0,20(s8)
                round(inv_rnd,  b0, b1, kp + 5 * nc);
  4973ec:	8fc20028 	lw	v0,40(s8)
  4973f0:	00000000 	nop
  4973f4:	24440050 	addiu	a0,v0,80
  4973f8:	93c2000b 	lbu	v0,11(s8)
  4973fc:	00000000 	nop
  497400:	00021080 	sll	v0,v0,0x2
  497404:	8f83804c 	lw	v1,-32692(gp)
  497408:	00000000 	nop
  49740c:	2463e394 	addiu	v1,v1,-7276
  497410:	00621821 	addu	v1,v1,v0
  497414:	8fc20014 	lw	v0,20(s8)
  497418:	00000000 	nop
  49741c:	00021202 	srl	v0,v0,0x8
  497420:	304200ff 	andi	v0,v0,0xff
  497424:	00021080 	sll	v0,v0,0x2
  497428:	24420400 	addiu	v0,v0,1024
  49742c:	8f81804c 	lw	at,-32692(gp)
  497430:	00000000 	nop
  497434:	2421e394 	addiu	at,at,-7276
  497438:	00221021 	addu	v0,at,v0
  49743c:	8c630000 	lw	v1,0(v1)
  497440:	8c420000 	lw	v0,0(v0)
  497444:	00000000 	nop
  497448:	00621826 	xor	v1,v1,v0
  49744c:	8fc20010 	lw	v0,16(s8)
  497450:	00000000 	nop
  497454:	00021402 	srl	v0,v0,0x10
  497458:	304200ff 	andi	v0,v0,0xff
  49745c:	00021080 	sll	v0,v0,0x2
  497460:	24420800 	addiu	v0,v0,2048
  497464:	8f81804c 	lw	at,-32692(gp)
  497468:	00000000 	nop
  49746c:	2421e394 	addiu	at,at,-7276
  497470:	00221021 	addu	v0,at,v0
  497474:	8c420000 	lw	v0,0(v0)
  497478:	00000000 	nop
  49747c:	00621826 	xor	v1,v1,v0
  497480:	8fc2000c 	lw	v0,12(s8)
  497484:	00000000 	nop
  497488:	00021602 	srl	v0,v0,0x18
  49748c:	304200ff 	andi	v0,v0,0xff
  497490:	00021080 	sll	v0,v0,0x2
  497494:	24420c00 	addiu	v0,v0,3072
  497498:	8f81804c 	lw	at,-32692(gp)
  49749c:	00000000 	nop
  4974a0:	2421e394 	addiu	at,at,-7276
  4974a4:	00221021 	addu	v0,at,v0
  4974a8:	8c420000 	lw	v0,0(v0)
  4974ac:	00000000 	nop
  4974b0:	00621826 	xor	v1,v1,v0
  4974b4:	8c820000 	lw	v0,0(a0)
  4974b8:	00000000 	nop
  4974bc:	00431026 	xor	v0,v0,v1
  4974c0:	afc20018 	sw	v0,24(s8)
  4974c4:	8fc20028 	lw	v0,40(s8)
  4974c8:	00000000 	nop
  4974cc:	24440054 	addiu	a0,v0,84
  4974d0:	93c2000f 	lbu	v0,15(s8)
  4974d4:	00000000 	nop
  4974d8:	00021080 	sll	v0,v0,0x2
  4974dc:	8f83804c 	lw	v1,-32692(gp)
  4974e0:	00000000 	nop
  4974e4:	2463e394 	addiu	v1,v1,-7276
  4974e8:	00621821 	addu	v1,v1,v0
  4974ec:	8fc20008 	lw	v0,8(s8)
  4974f0:	00000000 	nop
  4974f4:	00021202 	srl	v0,v0,0x8
  4974f8:	304200ff 	andi	v0,v0,0xff
  4974fc:	00021080 	sll	v0,v0,0x2
  497500:	24420400 	addiu	v0,v0,1024
  497504:	8f81804c 	lw	at,-32692(gp)
  497508:	00000000 	nop
  49750c:	2421e394 	addiu	at,at,-7276
  497510:	00221021 	addu	v0,at,v0
  497514:	8c630000 	lw	v1,0(v1)
  497518:	8c420000 	lw	v0,0(v0)
  49751c:	00000000 	nop
  497520:	00621826 	xor	v1,v1,v0
  497524:	8fc20014 	lw	v0,20(s8)
  497528:	00000000 	nop
  49752c:	00021402 	srl	v0,v0,0x10
  497530:	304200ff 	andi	v0,v0,0xff
  497534:	00021080 	sll	v0,v0,0x2
  497538:	24420800 	addiu	v0,v0,2048
  49753c:	8f81804c 	lw	at,-32692(gp)
  497540:	00000000 	nop
  497544:	2421e394 	addiu	at,at,-7276
  497548:	00221021 	addu	v0,at,v0
  49754c:	8c420000 	lw	v0,0(v0)
  497550:	00000000 	nop
  497554:	00621826 	xor	v1,v1,v0
  497558:	8fc20010 	lw	v0,16(s8)
  49755c:	00000000 	nop
  497560:	00021602 	srl	v0,v0,0x18
  497564:	304200ff 	andi	v0,v0,0xff
  497568:	00021080 	sll	v0,v0,0x2
  49756c:	24420c00 	addiu	v0,v0,3072
  497570:	8f81804c 	lw	at,-32692(gp)
  497574:	00000000 	nop
  497578:	2421e394 	addiu	at,at,-7276
  49757c:	00221021 	addu	v0,at,v0
  497580:	8c420000 	lw	v0,0(v0)
  497584:	00000000 	nop
  497588:	00621826 	xor	v1,v1,v0
  49758c:	8c820000 	lw	v0,0(a0)
  497590:	00000000 	nop
  497594:	00431026 	xor	v0,v0,v1
  497598:	afc2001c 	sw	v0,28(s8)
  49759c:	8fc20028 	lw	v0,40(s8)
  4975a0:	00000000 	nop
  4975a4:	24440058 	addiu	a0,v0,88
  4975a8:	93c20013 	lbu	v0,19(s8)
  4975ac:	00000000 	nop
  4975b0:	00021080 	sll	v0,v0,0x2
  4975b4:	8f83804c 	lw	v1,-32692(gp)
  4975b8:	00000000 	nop
  4975bc:	2463e394 	addiu	v1,v1,-7276
  4975c0:	00621821 	addu	v1,v1,v0
  4975c4:	8fc2000c 	lw	v0,12(s8)
  4975c8:	00000000 	nop
  4975cc:	00021202 	srl	v0,v0,0x8
  4975d0:	304200ff 	andi	v0,v0,0xff
  4975d4:	00021080 	sll	v0,v0,0x2
  4975d8:	24420400 	addiu	v0,v0,1024
  4975dc:	8f81804c 	lw	at,-32692(gp)
  4975e0:	00000000 	nop
  4975e4:	2421e394 	addiu	at,at,-7276
  4975e8:	00221021 	addu	v0,at,v0
  4975ec:	8c630000 	lw	v1,0(v1)
  4975f0:	8c420000 	lw	v0,0(v0)
  4975f4:	00000000 	nop
  4975f8:	00621826 	xor	v1,v1,v0
  4975fc:	8fc20008 	lw	v0,8(s8)
  497600:	00000000 	nop
  497604:	00021402 	srl	v0,v0,0x10
  497608:	304200ff 	andi	v0,v0,0xff
  49760c:	00021080 	sll	v0,v0,0x2
  497610:	24420800 	addiu	v0,v0,2048
  497614:	8f81804c 	lw	at,-32692(gp)
  497618:	00000000 	nop
  49761c:	2421e394 	addiu	at,at,-7276
  497620:	00221021 	addu	v0,at,v0
  497624:	8c420000 	lw	v0,0(v0)
  497628:	00000000 	nop
  49762c:	00621826 	xor	v1,v1,v0
  497630:	8fc20014 	lw	v0,20(s8)
  497634:	00000000 	nop
  497638:	00021602 	srl	v0,v0,0x18
  49763c:	304200ff 	andi	v0,v0,0xff
  497640:	00021080 	sll	v0,v0,0x2
  497644:	24420c00 	addiu	v0,v0,3072
  497648:	8f81804c 	lw	at,-32692(gp)
  49764c:	00000000 	nop
  497650:	2421e394 	addiu	at,at,-7276
  497654:	00221021 	addu	v0,at,v0
  497658:	8c420000 	lw	v0,0(v0)
  49765c:	00000000 	nop
  497660:	00621826 	xor	v1,v1,v0
  497664:	8c820000 	lw	v0,0(a0)
  497668:	00000000 	nop
  49766c:	00431026 	xor	v0,v0,v1
  497670:	afc20020 	sw	v0,32(s8)
  497674:	8fc20028 	lw	v0,40(s8)
  497678:	00000000 	nop
  49767c:	2444005c 	addiu	a0,v0,92
  497680:	93c20017 	lbu	v0,23(s8)
  497684:	00000000 	nop
  497688:	00021080 	sll	v0,v0,0x2
  49768c:	8f83804c 	lw	v1,-32692(gp)
  497690:	00000000 	nop
  497694:	2463e394 	addiu	v1,v1,-7276
  497698:	00621821 	addu	v1,v1,v0
  49769c:	8fc20010 	lw	v0,16(s8)
  4976a0:	00000000 	nop
  4976a4:	00021202 	srl	v0,v0,0x8
  4976a8:	304200ff 	andi	v0,v0,0xff
  4976ac:	00021080 	sll	v0,v0,0x2
  4976b0:	24420400 	addiu	v0,v0,1024
  4976b4:	8f81804c 	lw	at,-32692(gp)
  4976b8:	00000000 	nop
  4976bc:	2421e394 	addiu	at,at,-7276
  4976c0:	00221021 	addu	v0,at,v0
  4976c4:	8c630000 	lw	v1,0(v1)
  4976c8:	8c420000 	lw	v0,0(v0)
  4976cc:	00000000 	nop
  4976d0:	00621826 	xor	v1,v1,v0
  4976d4:	8fc2000c 	lw	v0,12(s8)
  4976d8:	00000000 	nop
  4976dc:	00021402 	srl	v0,v0,0x10
  4976e0:	304200ff 	andi	v0,v0,0xff
  4976e4:	00021080 	sll	v0,v0,0x2
  4976e8:	24420800 	addiu	v0,v0,2048
  4976ec:	8f81804c 	lw	at,-32692(gp)
  4976f0:	00000000 	nop
  4976f4:	2421e394 	addiu	at,at,-7276
  4976f8:	00221021 	addu	v0,at,v0
  4976fc:	8c420000 	lw	v0,0(v0)
  497700:	00000000 	nop
  497704:	00621826 	xor	v1,v1,v0
  497708:	8fc20008 	lw	v0,8(s8)
  49770c:	00000000 	nop
  497710:	00021602 	srl	v0,v0,0x18
  497714:	304200ff 	andi	v0,v0,0xff
  497718:	00021080 	sll	v0,v0,0x2
  49771c:	24420c00 	addiu	v0,v0,3072
  497720:	8f81804c 	lw	at,-32692(gp)
  497724:	00000000 	nop
  497728:	2421e394 	addiu	at,at,-7276
  49772c:	00221021 	addu	v0,at,v0
  497730:	8c420000 	lw	v0,0(v0)
  497734:	00000000 	nop
  497738:	00621826 	xor	v1,v1,v0
  49773c:	8c820000 	lw	v0,0(a0)
  497740:	00000000 	nop
  497744:	00431026 	xor	v0,v0,v1
  497748:	afc20024 	sw	v0,36(s8)
                round(inv_rnd,  b1, b0, kp + 6 * nc); 
  49774c:	8fc20028 	lw	v0,40(s8)
  497750:	00000000 	nop
  497754:	24440060 	addiu	a0,v0,96
  497758:	93c2001b 	lbu	v0,27(s8)
  49775c:	00000000 	nop
  497760:	00021080 	sll	v0,v0,0x2
  497764:	8f83804c 	lw	v1,-32692(gp)
  497768:	00000000 	nop
  49776c:	2463e394 	addiu	v1,v1,-7276
  497770:	00621821 	addu	v1,v1,v0
  497774:	8fc20024 	lw	v0,36(s8)
  497778:	00000000 	nop
  49777c:	00021202 	srl	v0,v0,0x8
  497780:	304200ff 	andi	v0,v0,0xff
  497784:	00021080 	sll	v0,v0,0x2
  497788:	24420400 	addiu	v0,v0,1024
  49778c:	8f81804c 	lw	at,-32692(gp)
  497790:	00000000 	nop
  497794:	2421e394 	addiu	at,at,-7276
  497798:	00221021 	addu	v0,at,v0
  49779c:	8c630000 	lw	v1,0(v1)
  4977a0:	8c420000 	lw	v0,0(v0)
  4977a4:	00000000 	nop
  4977a8:	00621826 	xor	v1,v1,v0
  4977ac:	8fc20020 	lw	v0,32(s8)
  4977b0:	00000000 	nop
  4977b4:	00021402 	srl	v0,v0,0x10
  4977b8:	304200ff 	andi	v0,v0,0xff
  4977bc:	00021080 	sll	v0,v0,0x2
  4977c0:	24420800 	addiu	v0,v0,2048
  4977c4:	8f81804c 	lw	at,-32692(gp)
  4977c8:	00000000 	nop
  4977cc:	2421e394 	addiu	at,at,-7276
  4977d0:	00221021 	addu	v0,at,v0
  4977d4:	8c420000 	lw	v0,0(v0)
  4977d8:	00000000 	nop
  4977dc:	00621826 	xor	v1,v1,v0
  4977e0:	8fc2001c 	lw	v0,28(s8)
  4977e4:	00000000 	nop
  4977e8:	00021602 	srl	v0,v0,0x18
  4977ec:	304200ff 	andi	v0,v0,0xff
  4977f0:	00021080 	sll	v0,v0,0x2
  4977f4:	24420c00 	addiu	v0,v0,3072
  4977f8:	8f81804c 	lw	at,-32692(gp)
  4977fc:	00000000 	nop
  497800:	2421e394 	addiu	at,at,-7276
  497804:	00221021 	addu	v0,at,v0
  497808:	8c420000 	lw	v0,0(v0)
  49780c:	00000000 	nop
  497810:	00621826 	xor	v1,v1,v0
  497814:	8c820000 	lw	v0,0(a0)
  497818:	00000000 	nop
  49781c:	00431026 	xor	v0,v0,v1
  497820:	afc20008 	sw	v0,8(s8)
  497824:	8fc20028 	lw	v0,40(s8)
  497828:	00000000 	nop
  49782c:	24440064 	addiu	a0,v0,100
  497830:	93c2001f 	lbu	v0,31(s8)
  497834:	00000000 	nop
  497838:	00021080 	sll	v0,v0,0x2
  49783c:	8f83804c 	lw	v1,-32692(gp)
  497840:	00000000 	nop
  497844:	2463e394 	addiu	v1,v1,-7276
  497848:	00621821 	addu	v1,v1,v0
  49784c:	8fc20018 	lw	v0,24(s8)
  497850:	00000000 	nop
  497854:	00021202 	srl	v0,v0,0x8
  497858:	304200ff 	andi	v0,v0,0xff
  49785c:	00021080 	sll	v0,v0,0x2
  497860:	24420400 	addiu	v0,v0,1024
  497864:	8f81804c 	lw	at,-32692(gp)
  497868:	00000000 	nop
  49786c:	2421e394 	addiu	at,at,-7276
  497870:	00221021 	addu	v0,at,v0
  497874:	8c630000 	lw	v1,0(v1)
  497878:	8c420000 	lw	v0,0(v0)
  49787c:	00000000 	nop
  497880:	00621826 	xor	v1,v1,v0
  497884:	8fc20024 	lw	v0,36(s8)
  497888:	00000000 	nop
  49788c:	00021402 	srl	v0,v0,0x10
  497890:	304200ff 	andi	v0,v0,0xff
  497894:	00021080 	sll	v0,v0,0x2
  497898:	24420800 	addiu	v0,v0,2048
  49789c:	8f81804c 	lw	at,-32692(gp)
  4978a0:	00000000 	nop
  4978a4:	2421e394 	addiu	at,at,-7276
  4978a8:	00221021 	addu	v0,at,v0
  4978ac:	8c420000 	lw	v0,0(v0)
  4978b0:	00000000 	nop
  4978b4:	00621826 	xor	v1,v1,v0
  4978b8:	8fc20020 	lw	v0,32(s8)
  4978bc:	00000000 	nop
  4978c0:	00021602 	srl	v0,v0,0x18
  4978c4:	304200ff 	andi	v0,v0,0xff
  4978c8:	00021080 	sll	v0,v0,0x2
  4978cc:	24420c00 	addiu	v0,v0,3072
  4978d0:	8f81804c 	lw	at,-32692(gp)
  4978d4:	00000000 	nop
  4978d8:	2421e394 	addiu	at,at,-7276
  4978dc:	00221021 	addu	v0,at,v0
  4978e0:	8c420000 	lw	v0,0(v0)
  4978e4:	00000000 	nop
  4978e8:	00621826 	xor	v1,v1,v0
  4978ec:	8c820000 	lw	v0,0(a0)
  4978f0:	00000000 	nop
  4978f4:	00431026 	xor	v0,v0,v1
  4978f8:	afc2000c 	sw	v0,12(s8)
  4978fc:	8fc20028 	lw	v0,40(s8)
  497900:	00000000 	nop
  497904:	24440068 	addiu	a0,v0,104
  497908:	93c20023 	lbu	v0,35(s8)
  49790c:	00000000 	nop
  497910:	00021080 	sll	v0,v0,0x2
  497914:	8f83804c 	lw	v1,-32692(gp)
  497918:	00000000 	nop
  49791c:	2463e394 	addiu	v1,v1,-7276
  497920:	00621821 	addu	v1,v1,v0
  497924:	8fc2001c 	lw	v0,28(s8)
  497928:	00000000 	nop
  49792c:	00021202 	srl	v0,v0,0x8
  497930:	304200ff 	andi	v0,v0,0xff
  497934:	00021080 	sll	v0,v0,0x2
  497938:	24420400 	addiu	v0,v0,1024
  49793c:	8f81804c 	lw	at,-32692(gp)
  497940:	00000000 	nop
  497944:	2421e394 	addiu	at,at,-7276
  497948:	00221021 	addu	v0,at,v0
  49794c:	8c630000 	lw	v1,0(v1)
  497950:	8c420000 	lw	v0,0(v0)
  497954:	00000000 	nop
  497958:	00621826 	xor	v1,v1,v0
  49795c:	8fc20018 	lw	v0,24(s8)
  497960:	00000000 	nop
  497964:	00021402 	srl	v0,v0,0x10
  497968:	304200ff 	andi	v0,v0,0xff
  49796c:	00021080 	sll	v0,v0,0x2
  497970:	24420800 	addiu	v0,v0,2048
  497974:	8f81804c 	lw	at,-32692(gp)
  497978:	00000000 	nop
  49797c:	2421e394 	addiu	at,at,-7276
  497980:	00221021 	addu	v0,at,v0
  497984:	8c420000 	lw	v0,0(v0)
  497988:	00000000 	nop
  49798c:	00621826 	xor	v1,v1,v0
  497990:	8fc20024 	lw	v0,36(s8)
  497994:	00000000 	nop
  497998:	00021602 	srl	v0,v0,0x18
  49799c:	304200ff 	andi	v0,v0,0xff
  4979a0:	00021080 	sll	v0,v0,0x2
  4979a4:	24420c00 	addiu	v0,v0,3072
  4979a8:	8f81804c 	lw	at,-32692(gp)
  4979ac:	00000000 	nop
  4979b0:	2421e394 	addiu	at,at,-7276
  4979b4:	00221021 	addu	v0,at,v0
  4979b8:	8c420000 	lw	v0,0(v0)
  4979bc:	00000000 	nop
  4979c0:	00621826 	xor	v1,v1,v0
  4979c4:	8c820000 	lw	v0,0(a0)
  4979c8:	00000000 	nop
  4979cc:	00431026 	xor	v0,v0,v1
  4979d0:	afc20010 	sw	v0,16(s8)
  4979d4:	8fc20028 	lw	v0,40(s8)
  4979d8:	00000000 	nop
  4979dc:	2444006c 	addiu	a0,v0,108
  4979e0:	93c20027 	lbu	v0,39(s8)
  4979e4:	00000000 	nop
  4979e8:	00021080 	sll	v0,v0,0x2
  4979ec:	8f83804c 	lw	v1,-32692(gp)
  4979f0:	00000000 	nop
  4979f4:	2463e394 	addiu	v1,v1,-7276
  4979f8:	00621821 	addu	v1,v1,v0
  4979fc:	8fc20020 	lw	v0,32(s8)
  497a00:	00000000 	nop
  497a04:	00021202 	srl	v0,v0,0x8
  497a08:	304200ff 	andi	v0,v0,0xff
  497a0c:	00021080 	sll	v0,v0,0x2
  497a10:	24420400 	addiu	v0,v0,1024
  497a14:	8f81804c 	lw	at,-32692(gp)
  497a18:	00000000 	nop
  497a1c:	2421e394 	addiu	at,at,-7276
  497a20:	00221021 	addu	v0,at,v0
  497a24:	8c630000 	lw	v1,0(v1)
  497a28:	8c420000 	lw	v0,0(v0)
  497a2c:	00000000 	nop
  497a30:	00621826 	xor	v1,v1,v0
  497a34:	8fc2001c 	lw	v0,28(s8)
  497a38:	00000000 	nop
  497a3c:	00021402 	srl	v0,v0,0x10
  497a40:	304200ff 	andi	v0,v0,0xff
  497a44:	00021080 	sll	v0,v0,0x2
  497a48:	24420800 	addiu	v0,v0,2048
  497a4c:	8f81804c 	lw	at,-32692(gp)
  497a50:	00000000 	nop
  497a54:	2421e394 	addiu	at,at,-7276
  497a58:	00221021 	addu	v0,at,v0
  497a5c:	8c420000 	lw	v0,0(v0)
  497a60:	00000000 	nop
  497a64:	00621826 	xor	v1,v1,v0
  497a68:	8fc20018 	lw	v0,24(s8)
  497a6c:	00000000 	nop
  497a70:	00021602 	srl	v0,v0,0x18
  497a74:	304200ff 	andi	v0,v0,0xff
  497a78:	00021080 	sll	v0,v0,0x2
  497a7c:	24420c00 	addiu	v0,v0,3072
  497a80:	8f81804c 	lw	at,-32692(gp)
  497a84:	00000000 	nop
  497a88:	2421e394 	addiu	at,at,-7276
  497a8c:	00221021 	addu	v0,at,v0
  497a90:	8c420000 	lw	v0,0(v0)
  497a94:	00000000 	nop
  497a98:	00621826 	xor	v1,v1,v0
  497a9c:	8c820000 	lw	v0,0(a0)
  497aa0:	00000000 	nop
  497aa4:	00431026 	xor	v0,v0,v1
  497aa8:	afc20014 	sw	v0,20(s8)
                round(inv_rnd,  b0, b1, kp + 7 * nc);
  497aac:	8fc20028 	lw	v0,40(s8)
  497ab0:	00000000 	nop
  497ab4:	24440070 	addiu	a0,v0,112
  497ab8:	93c2000b 	lbu	v0,11(s8)
  497abc:	00000000 	nop
  497ac0:	00021080 	sll	v0,v0,0x2
  497ac4:	8f83804c 	lw	v1,-32692(gp)
  497ac8:	00000000 	nop
  497acc:	2463e394 	addiu	v1,v1,-7276
  497ad0:	00621821 	addu	v1,v1,v0
  497ad4:	8fc20014 	lw	v0,20(s8)
  497ad8:	00000000 	nop
  497adc:	00021202 	srl	v0,v0,0x8
  497ae0:	304200ff 	andi	v0,v0,0xff
  497ae4:	00021080 	sll	v0,v0,0x2
  497ae8:	24420400 	addiu	v0,v0,1024
  497aec:	8f81804c 	lw	at,-32692(gp)
  497af0:	00000000 	nop
  497af4:	2421e394 	addiu	at,at,-7276
  497af8:	00221021 	addu	v0,at,v0
  497afc:	8c630000 	lw	v1,0(v1)
  497b00:	8c420000 	lw	v0,0(v0)
  497b04:	00000000 	nop
  497b08:	00621826 	xor	v1,v1,v0
  497b0c:	8fc20010 	lw	v0,16(s8)
  497b10:	00000000 	nop
  497b14:	00021402 	srl	v0,v0,0x10
  497b18:	304200ff 	andi	v0,v0,0xff
  497b1c:	00021080 	sll	v0,v0,0x2
  497b20:	24420800 	addiu	v0,v0,2048
  497b24:	8f81804c 	lw	at,-32692(gp)
  497b28:	00000000 	nop
  497b2c:	2421e394 	addiu	at,at,-7276
  497b30:	00221021 	addu	v0,at,v0
  497b34:	8c420000 	lw	v0,0(v0)
  497b38:	00000000 	nop
  497b3c:	00621826 	xor	v1,v1,v0
  497b40:	8fc2000c 	lw	v0,12(s8)
  497b44:	00000000 	nop
  497b48:	00021602 	srl	v0,v0,0x18
  497b4c:	304200ff 	andi	v0,v0,0xff
  497b50:	00021080 	sll	v0,v0,0x2
  497b54:	24420c00 	addiu	v0,v0,3072
  497b58:	8f81804c 	lw	at,-32692(gp)
  497b5c:	00000000 	nop
  497b60:	2421e394 	addiu	at,at,-7276
  497b64:	00221021 	addu	v0,at,v0
  497b68:	8c420000 	lw	v0,0(v0)
  497b6c:	00000000 	nop
  497b70:	00621826 	xor	v1,v1,v0
  497b74:	8c820000 	lw	v0,0(a0)
  497b78:	00000000 	nop
  497b7c:	00431026 	xor	v0,v0,v1
  497b80:	afc20018 	sw	v0,24(s8)
  497b84:	8fc20028 	lw	v0,40(s8)
  497b88:	00000000 	nop
  497b8c:	24440074 	addiu	a0,v0,116
  497b90:	93c2000f 	lbu	v0,15(s8)
  497b94:	00000000 	nop
  497b98:	00021080 	sll	v0,v0,0x2
  497b9c:	8f83804c 	lw	v1,-32692(gp)
  497ba0:	00000000 	nop
  497ba4:	2463e394 	addiu	v1,v1,-7276
  497ba8:	00621821 	addu	v1,v1,v0
  497bac:	8fc20008 	lw	v0,8(s8)
  497bb0:	00000000 	nop
  497bb4:	00021202 	srl	v0,v0,0x8
  497bb8:	304200ff 	andi	v0,v0,0xff
  497bbc:	00021080 	sll	v0,v0,0x2
  497bc0:	24420400 	addiu	v0,v0,1024
  497bc4:	8f81804c 	lw	at,-32692(gp)
  497bc8:	00000000 	nop
  497bcc:	2421e394 	addiu	at,at,-7276
  497bd0:	00221021 	addu	v0,at,v0
  497bd4:	8c630000 	lw	v1,0(v1)
  497bd8:	8c420000 	lw	v0,0(v0)
  497bdc:	00000000 	nop
  497be0:	00621826 	xor	v1,v1,v0
  497be4:	8fc20014 	lw	v0,20(s8)
  497be8:	00000000 	nop
  497bec:	00021402 	srl	v0,v0,0x10
  497bf0:	304200ff 	andi	v0,v0,0xff
  497bf4:	00021080 	sll	v0,v0,0x2
  497bf8:	24420800 	addiu	v0,v0,2048
  497bfc:	8f81804c 	lw	at,-32692(gp)
  497c00:	00000000 	nop
  497c04:	2421e394 	addiu	at,at,-7276
  497c08:	00221021 	addu	v0,at,v0
  497c0c:	8c420000 	lw	v0,0(v0)
  497c10:	00000000 	nop
  497c14:	00621826 	xor	v1,v1,v0
  497c18:	8fc20010 	lw	v0,16(s8)
  497c1c:	00000000 	nop
  497c20:	00021602 	srl	v0,v0,0x18
  497c24:	304200ff 	andi	v0,v0,0xff
  497c28:	00021080 	sll	v0,v0,0x2
  497c2c:	24420c00 	addiu	v0,v0,3072
  497c30:	8f81804c 	lw	at,-32692(gp)
  497c34:	00000000 	nop
  497c38:	2421e394 	addiu	at,at,-7276
  497c3c:	00221021 	addu	v0,at,v0
  497c40:	8c420000 	lw	v0,0(v0)
  497c44:	00000000 	nop
  497c48:	00621826 	xor	v1,v1,v0
  497c4c:	8c820000 	lw	v0,0(a0)
  497c50:	00000000 	nop
  497c54:	00431026 	xor	v0,v0,v1
  497c58:	afc2001c 	sw	v0,28(s8)
  497c5c:	8fc20028 	lw	v0,40(s8)
  497c60:	00000000 	nop
  497c64:	24440078 	addiu	a0,v0,120
  497c68:	93c20013 	lbu	v0,19(s8)
  497c6c:	00000000 	nop
  497c70:	00021080 	sll	v0,v0,0x2
  497c74:	8f83804c 	lw	v1,-32692(gp)
  497c78:	00000000 	nop
  497c7c:	2463e394 	addiu	v1,v1,-7276
  497c80:	00621821 	addu	v1,v1,v0
  497c84:	8fc2000c 	lw	v0,12(s8)
  497c88:	00000000 	nop
  497c8c:	00021202 	srl	v0,v0,0x8
  497c90:	304200ff 	andi	v0,v0,0xff
  497c94:	00021080 	sll	v0,v0,0x2
  497c98:	24420400 	addiu	v0,v0,1024
  497c9c:	8f81804c 	lw	at,-32692(gp)
  497ca0:	00000000 	nop
  497ca4:	2421e394 	addiu	at,at,-7276
  497ca8:	00221021 	addu	v0,at,v0
  497cac:	8c630000 	lw	v1,0(v1)
  497cb0:	8c420000 	lw	v0,0(v0)
  497cb4:	00000000 	nop
  497cb8:	00621826 	xor	v1,v1,v0
  497cbc:	8fc20008 	lw	v0,8(s8)
  497cc0:	00000000 	nop
  497cc4:	00021402 	srl	v0,v0,0x10
  497cc8:	304200ff 	andi	v0,v0,0xff
  497ccc:	00021080 	sll	v0,v0,0x2
  497cd0:	24420800 	addiu	v0,v0,2048
  497cd4:	8f81804c 	lw	at,-32692(gp)
  497cd8:	00000000 	nop
  497cdc:	2421e394 	addiu	at,at,-7276
  497ce0:	00221021 	addu	v0,at,v0
  497ce4:	8c420000 	lw	v0,0(v0)
  497ce8:	00000000 	nop
  497cec:	00621826 	xor	v1,v1,v0
  497cf0:	8fc20014 	lw	v0,20(s8)
  497cf4:	00000000 	nop
  497cf8:	00021602 	srl	v0,v0,0x18
  497cfc:	304200ff 	andi	v0,v0,0xff
  497d00:	00021080 	sll	v0,v0,0x2
  497d04:	24420c00 	addiu	v0,v0,3072
  497d08:	8f81804c 	lw	at,-32692(gp)
  497d0c:	00000000 	nop
  497d10:	2421e394 	addiu	at,at,-7276
  497d14:	00221021 	addu	v0,at,v0
  497d18:	8c420000 	lw	v0,0(v0)
  497d1c:	00000000 	nop
  497d20:	00621826 	xor	v1,v1,v0
  497d24:	8c820000 	lw	v0,0(a0)
  497d28:	00000000 	nop
  497d2c:	00431026 	xor	v0,v0,v1
  497d30:	afc20020 	sw	v0,32(s8)
  497d34:	8fc20028 	lw	v0,40(s8)
  497d38:	00000000 	nop
  497d3c:	2444007c 	addiu	a0,v0,124
  497d40:	93c20017 	lbu	v0,23(s8)
  497d44:	00000000 	nop
  497d48:	00021080 	sll	v0,v0,0x2
  497d4c:	8f83804c 	lw	v1,-32692(gp)
  497d50:	00000000 	nop
  497d54:	2463e394 	addiu	v1,v1,-7276
  497d58:	00621821 	addu	v1,v1,v0
  497d5c:	8fc20010 	lw	v0,16(s8)
  497d60:	00000000 	nop
  497d64:	00021202 	srl	v0,v0,0x8
  497d68:	304200ff 	andi	v0,v0,0xff
  497d6c:	00021080 	sll	v0,v0,0x2
  497d70:	24420400 	addiu	v0,v0,1024
  497d74:	8f81804c 	lw	at,-32692(gp)
  497d78:	00000000 	nop
  497d7c:	2421e394 	addiu	at,at,-7276
  497d80:	00221021 	addu	v0,at,v0
  497d84:	8c630000 	lw	v1,0(v1)
  497d88:	8c420000 	lw	v0,0(v0)
  497d8c:	00000000 	nop
  497d90:	00621826 	xor	v1,v1,v0
  497d94:	8fc2000c 	lw	v0,12(s8)
  497d98:	00000000 	nop
  497d9c:	00021402 	srl	v0,v0,0x10
  497da0:	304200ff 	andi	v0,v0,0xff
  497da4:	00021080 	sll	v0,v0,0x2
  497da8:	24420800 	addiu	v0,v0,2048
  497dac:	8f81804c 	lw	at,-32692(gp)
  497db0:	00000000 	nop
  497db4:	2421e394 	addiu	at,at,-7276
  497db8:	00221021 	addu	v0,at,v0
  497dbc:	8c420000 	lw	v0,0(v0)
  497dc0:	00000000 	nop
  497dc4:	00621826 	xor	v1,v1,v0
  497dc8:	8fc20008 	lw	v0,8(s8)
  497dcc:	00000000 	nop
  497dd0:	00021602 	srl	v0,v0,0x18
  497dd4:	304200ff 	andi	v0,v0,0xff
  497dd8:	00021080 	sll	v0,v0,0x2
  497ddc:	24420c00 	addiu	v0,v0,3072
  497de0:	8f81804c 	lw	at,-32692(gp)
  497de4:	00000000 	nop
  497de8:	2421e394 	addiu	at,at,-7276
  497dec:	00221021 	addu	v0,at,v0
  497df0:	8c420000 	lw	v0,0(v0)
  497df4:	00000000 	nop
  497df8:	00621826 	xor	v1,v1,v0
  497dfc:	8c820000 	lw	v0,0(a0)
  497e00:	00000000 	nop
  497e04:	00431026 	xor	v0,v0,v1
  497e08:	afc20024 	sw	v0,36(s8)
                round(inv_rnd,  b1, b0, kp + 8 * nc);
  497e0c:	8fc20028 	lw	v0,40(s8)
  497e10:	00000000 	nop
  497e14:	24440080 	addiu	a0,v0,128
  497e18:	93c2001b 	lbu	v0,27(s8)
  497e1c:	00000000 	nop
  497e20:	00021080 	sll	v0,v0,0x2
  497e24:	8f83804c 	lw	v1,-32692(gp)
  497e28:	00000000 	nop
  497e2c:	2463e394 	addiu	v1,v1,-7276
  497e30:	00621821 	addu	v1,v1,v0
  497e34:	8fc20024 	lw	v0,36(s8)
  497e38:	00000000 	nop
  497e3c:	00021202 	srl	v0,v0,0x8
  497e40:	304200ff 	andi	v0,v0,0xff
  497e44:	00021080 	sll	v0,v0,0x2
  497e48:	24420400 	addiu	v0,v0,1024
  497e4c:	8f81804c 	lw	at,-32692(gp)
  497e50:	00000000 	nop
  497e54:	2421e394 	addiu	at,at,-7276
  497e58:	00221021 	addu	v0,at,v0
  497e5c:	8c630000 	lw	v1,0(v1)
  497e60:	8c420000 	lw	v0,0(v0)
  497e64:	00000000 	nop
  497e68:	00621826 	xor	v1,v1,v0
  497e6c:	8fc20020 	lw	v0,32(s8)
  497e70:	00000000 	nop
  497e74:	00021402 	srl	v0,v0,0x10
  497e78:	304200ff 	andi	v0,v0,0xff
  497e7c:	00021080 	sll	v0,v0,0x2
  497e80:	24420800 	addiu	v0,v0,2048
  497e84:	8f81804c 	lw	at,-32692(gp)
  497e88:	00000000 	nop
  497e8c:	2421e394 	addiu	at,at,-7276
  497e90:	00221021 	addu	v0,at,v0
  497e94:	8c420000 	lw	v0,0(v0)
  497e98:	00000000 	nop
  497e9c:	00621826 	xor	v1,v1,v0
  497ea0:	8fc2001c 	lw	v0,28(s8)
  497ea4:	00000000 	nop
  497ea8:	00021602 	srl	v0,v0,0x18
  497eac:	304200ff 	andi	v0,v0,0xff
  497eb0:	00021080 	sll	v0,v0,0x2
  497eb4:	24420c00 	addiu	v0,v0,3072
  497eb8:	8f81804c 	lw	at,-32692(gp)
  497ebc:	00000000 	nop
  497ec0:	2421e394 	addiu	at,at,-7276
  497ec4:	00221021 	addu	v0,at,v0
  497ec8:	8c420000 	lw	v0,0(v0)
  497ecc:	00000000 	nop
  497ed0:	00621826 	xor	v1,v1,v0
  497ed4:	8c820000 	lw	v0,0(a0)
  497ed8:	00000000 	nop
  497edc:	00431026 	xor	v0,v0,v1
  497ee0:	afc20008 	sw	v0,8(s8)
  497ee4:	8fc20028 	lw	v0,40(s8)
  497ee8:	00000000 	nop
  497eec:	24440084 	addiu	a0,v0,132
  497ef0:	93c2001f 	lbu	v0,31(s8)
  497ef4:	00000000 	nop
  497ef8:	00021080 	sll	v0,v0,0x2
  497efc:	8f83804c 	lw	v1,-32692(gp)
  497f00:	00000000 	nop
  497f04:	2463e394 	addiu	v1,v1,-7276
  497f08:	00621821 	addu	v1,v1,v0
  497f0c:	8fc20018 	lw	v0,24(s8)
  497f10:	00000000 	nop
  497f14:	00021202 	srl	v0,v0,0x8
  497f18:	304200ff 	andi	v0,v0,0xff
  497f1c:	00021080 	sll	v0,v0,0x2
  497f20:	24420400 	addiu	v0,v0,1024
  497f24:	8f81804c 	lw	at,-32692(gp)
  497f28:	00000000 	nop
  497f2c:	2421e394 	addiu	at,at,-7276
  497f30:	00221021 	addu	v0,at,v0
  497f34:	8c630000 	lw	v1,0(v1)
  497f38:	8c420000 	lw	v0,0(v0)
  497f3c:	00000000 	nop
  497f40:	00621826 	xor	v1,v1,v0
  497f44:	8fc20024 	lw	v0,36(s8)
  497f48:	00000000 	nop
  497f4c:	00021402 	srl	v0,v0,0x10
  497f50:	304200ff 	andi	v0,v0,0xff
  497f54:	00021080 	sll	v0,v0,0x2
  497f58:	24420800 	addiu	v0,v0,2048
  497f5c:	8f81804c 	lw	at,-32692(gp)
  497f60:	00000000 	nop
  497f64:	2421e394 	addiu	at,at,-7276
  497f68:	00221021 	addu	v0,at,v0
  497f6c:	8c420000 	lw	v0,0(v0)
  497f70:	00000000 	nop
  497f74:	00621826 	xor	v1,v1,v0
  497f78:	8fc20020 	lw	v0,32(s8)
  497f7c:	00000000 	nop
  497f80:	00021602 	srl	v0,v0,0x18
  497f84:	304200ff 	andi	v0,v0,0xff
  497f88:	00021080 	sll	v0,v0,0x2
  497f8c:	24420c00 	addiu	v0,v0,3072
  497f90:	8f81804c 	lw	at,-32692(gp)
  497f94:	00000000 	nop
  497f98:	2421e394 	addiu	at,at,-7276
  497f9c:	00221021 	addu	v0,at,v0
  497fa0:	8c420000 	lw	v0,0(v0)
  497fa4:	00000000 	nop
  497fa8:	00621826 	xor	v1,v1,v0
  497fac:	8c820000 	lw	v0,0(a0)
  497fb0:	00000000 	nop
  497fb4:	00431026 	xor	v0,v0,v1
  497fb8:	afc2000c 	sw	v0,12(s8)
  497fbc:	8fc20028 	lw	v0,40(s8)
  497fc0:	00000000 	nop
  497fc4:	24440088 	addiu	a0,v0,136
  497fc8:	93c20023 	lbu	v0,35(s8)
  497fcc:	00000000 	nop
  497fd0:	00021080 	sll	v0,v0,0x2
  497fd4:	8f83804c 	lw	v1,-32692(gp)
  497fd8:	00000000 	nop
  497fdc:	2463e394 	addiu	v1,v1,-7276
  497fe0:	00621821 	addu	v1,v1,v0
  497fe4:	8fc2001c 	lw	v0,28(s8)
  497fe8:	00000000 	nop
  497fec:	00021202 	srl	v0,v0,0x8
  497ff0:	304200ff 	andi	v0,v0,0xff
  497ff4:	00021080 	sll	v0,v0,0x2
  497ff8:	24420400 	addiu	v0,v0,1024
  497ffc:	8f81804c 	lw	at,-32692(gp)
  498000:	00000000 	nop
  498004:	2421e394 	addiu	at,at,-7276
  498008:	00221021 	addu	v0,at,v0
  49800c:	8c630000 	lw	v1,0(v1)
  498010:	8c420000 	lw	v0,0(v0)
  498014:	00000000 	nop
  498018:	00621826 	xor	v1,v1,v0
  49801c:	8fc20018 	lw	v0,24(s8)
  498020:	00000000 	nop
  498024:	00021402 	srl	v0,v0,0x10
  498028:	304200ff 	andi	v0,v0,0xff
  49802c:	00021080 	sll	v0,v0,0x2
  498030:	24420800 	addiu	v0,v0,2048
  498034:	8f81804c 	lw	at,-32692(gp)
  498038:	00000000 	nop
  49803c:	2421e394 	addiu	at,at,-7276
  498040:	00221021 	addu	v0,at,v0
  498044:	8c420000 	lw	v0,0(v0)
  498048:	00000000 	nop
  49804c:	00621826 	xor	v1,v1,v0
  498050:	8fc20024 	lw	v0,36(s8)
  498054:	00000000 	nop
  498058:	00021602 	srl	v0,v0,0x18
  49805c:	304200ff 	andi	v0,v0,0xff
  498060:	00021080 	sll	v0,v0,0x2
  498064:	24420c00 	addiu	v0,v0,3072
  498068:	8f81804c 	lw	at,-32692(gp)
  49806c:	00000000 	nop
  498070:	2421e394 	addiu	at,at,-7276
  498074:	00221021 	addu	v0,at,v0
  498078:	8c420000 	lw	v0,0(v0)
  49807c:	00000000 	nop
  498080:	00621826 	xor	v1,v1,v0
  498084:	8c820000 	lw	v0,0(a0)
  498088:	00000000 	nop
  49808c:	00431026 	xor	v0,v0,v1
  498090:	afc20010 	sw	v0,16(s8)
  498094:	8fc20028 	lw	v0,40(s8)
  498098:	00000000 	nop
  49809c:	2444008c 	addiu	a0,v0,140
  4980a0:	93c20027 	lbu	v0,39(s8)
  4980a4:	00000000 	nop
  4980a8:	00021080 	sll	v0,v0,0x2
  4980ac:	8f83804c 	lw	v1,-32692(gp)
  4980b0:	00000000 	nop
  4980b4:	2463e394 	addiu	v1,v1,-7276
  4980b8:	00621821 	addu	v1,v1,v0
  4980bc:	8fc20020 	lw	v0,32(s8)
  4980c0:	00000000 	nop
  4980c4:	00021202 	srl	v0,v0,0x8
  4980c8:	304200ff 	andi	v0,v0,0xff
  4980cc:	00021080 	sll	v0,v0,0x2
  4980d0:	24420400 	addiu	v0,v0,1024
  4980d4:	8f81804c 	lw	at,-32692(gp)
  4980d8:	00000000 	nop
  4980dc:	2421e394 	addiu	at,at,-7276
  4980e0:	00221021 	addu	v0,at,v0
  4980e4:	8c630000 	lw	v1,0(v1)
  4980e8:	8c420000 	lw	v0,0(v0)
  4980ec:	00000000 	nop
  4980f0:	00621826 	xor	v1,v1,v0
  4980f4:	8fc2001c 	lw	v0,28(s8)
  4980f8:	00000000 	nop
  4980fc:	00021402 	srl	v0,v0,0x10
  498100:	304200ff 	andi	v0,v0,0xff
  498104:	00021080 	sll	v0,v0,0x2
  498108:	24420800 	addiu	v0,v0,2048
  49810c:	8f81804c 	lw	at,-32692(gp)
  498110:	00000000 	nop
  498114:	2421e394 	addiu	at,at,-7276
  498118:	00221021 	addu	v0,at,v0
  49811c:	8c420000 	lw	v0,0(v0)
  498120:	00000000 	nop
  498124:	00621826 	xor	v1,v1,v0
  498128:	8fc20018 	lw	v0,24(s8)
  49812c:	00000000 	nop
  498130:	00021602 	srl	v0,v0,0x18
  498134:	304200ff 	andi	v0,v0,0xff
  498138:	00021080 	sll	v0,v0,0x2
  49813c:	24420c00 	addiu	v0,v0,3072
  498140:	8f81804c 	lw	at,-32692(gp)
  498144:	00000000 	nop
  498148:	2421e394 	addiu	at,at,-7276
  49814c:	00221021 	addu	v0,at,v0
  498150:	8c420000 	lw	v0,0(v0)
  498154:	00000000 	nop
  498158:	00621826 	xor	v1,v1,v0
  49815c:	8c820000 	lw	v0,0(a0)
  498160:	00000000 	nop
  498164:	00431026 	xor	v0,v0,v1
  498168:	afc20014 	sw	v0,20(s8)
                round(inv_lrnd, b0, b1, kp + 9 * nc);
  49816c:	8fc20028 	lw	v0,40(s8)
  498170:	00000000 	nop
  498174:	24440090 	addiu	a0,v0,144
  498178:	93c2000b 	lbu	v0,11(s8)
  49817c:	00000000 	nop
  498180:	00021080 	sll	v0,v0,0x2
  498184:	8f83804c 	lw	v1,-32692(gp)
  498188:	00000000 	nop
  49818c:	24630394 	addiu	v1,v1,916
  498190:	00621821 	addu	v1,v1,v0
  498194:	8fc20014 	lw	v0,20(s8)
  498198:	00000000 	nop
  49819c:	00021202 	srl	v0,v0,0x8
  4981a0:	304200ff 	andi	v0,v0,0xff
  4981a4:	00021080 	sll	v0,v0,0x2
  4981a8:	24420400 	addiu	v0,v0,1024
  4981ac:	8f81804c 	lw	at,-32692(gp)
  4981b0:	00000000 	nop
  4981b4:	24210394 	addiu	at,at,916
  4981b8:	00221021 	addu	v0,at,v0
  4981bc:	8c630000 	lw	v1,0(v1)
  4981c0:	8c420000 	lw	v0,0(v0)
  4981c4:	00000000 	nop
  4981c8:	00621826 	xor	v1,v1,v0
  4981cc:	8fc20010 	lw	v0,16(s8)
  4981d0:	00000000 	nop
  4981d4:	00021402 	srl	v0,v0,0x10
  4981d8:	304200ff 	andi	v0,v0,0xff
  4981dc:	00021080 	sll	v0,v0,0x2
  4981e0:	24420800 	addiu	v0,v0,2048
  4981e4:	8f81804c 	lw	at,-32692(gp)
  4981e8:	00000000 	nop
  4981ec:	24210394 	addiu	at,at,916
  4981f0:	00221021 	addu	v0,at,v0
  4981f4:	8c420000 	lw	v0,0(v0)
  4981f8:	00000000 	nop
  4981fc:	00621826 	xor	v1,v1,v0
  498200:	8fc2000c 	lw	v0,12(s8)
  498204:	00000000 	nop
  498208:	00021602 	srl	v0,v0,0x18
  49820c:	304200ff 	andi	v0,v0,0xff
  498210:	00021080 	sll	v0,v0,0x2
  498214:	24420c00 	addiu	v0,v0,3072
  498218:	8f81804c 	lw	at,-32692(gp)
  49821c:	00000000 	nop
  498220:	24210394 	addiu	at,at,916
  498224:	00221021 	addu	v0,at,v0
  498228:	8c420000 	lw	v0,0(v0)
  49822c:	00000000 	nop
  498230:	00621826 	xor	v1,v1,v0
  498234:	8c820000 	lw	v0,0(a0)
  498238:	00000000 	nop
  49823c:	00431026 	xor	v0,v0,v1
  498240:	afc20018 	sw	v0,24(s8)
  498244:	8fc20028 	lw	v0,40(s8)
  498248:	00000000 	nop
  49824c:	24440094 	addiu	a0,v0,148
  498250:	93c2000f 	lbu	v0,15(s8)
  498254:	00000000 	nop
  498258:	00021080 	sll	v0,v0,0x2
  49825c:	8f83804c 	lw	v1,-32692(gp)
  498260:	00000000 	nop
  498264:	24630394 	addiu	v1,v1,916
  498268:	00621821 	addu	v1,v1,v0
  49826c:	8fc20008 	lw	v0,8(s8)
  498270:	00000000 	nop
  498274:	00021202 	srl	v0,v0,0x8
  498278:	304200ff 	andi	v0,v0,0xff
  49827c:	00021080 	sll	v0,v0,0x2
  498280:	24420400 	addiu	v0,v0,1024
  498284:	8f81804c 	lw	at,-32692(gp)
  498288:	00000000 	nop
  49828c:	24210394 	addiu	at,at,916
  498290:	00221021 	addu	v0,at,v0
  498294:	8c630000 	lw	v1,0(v1)
  498298:	8c420000 	lw	v0,0(v0)
  49829c:	00000000 	nop
  4982a0:	00621826 	xor	v1,v1,v0
  4982a4:	8fc20014 	lw	v0,20(s8)
  4982a8:	00000000 	nop
  4982ac:	00021402 	srl	v0,v0,0x10
  4982b0:	304200ff 	andi	v0,v0,0xff
  4982b4:	00021080 	sll	v0,v0,0x2
  4982b8:	24420800 	addiu	v0,v0,2048
  4982bc:	8f81804c 	lw	at,-32692(gp)
  4982c0:	00000000 	nop
  4982c4:	24210394 	addiu	at,at,916
  4982c8:	00221021 	addu	v0,at,v0
  4982cc:	8c420000 	lw	v0,0(v0)
  4982d0:	00000000 	nop
  4982d4:	00621826 	xor	v1,v1,v0
  4982d8:	8fc20010 	lw	v0,16(s8)
  4982dc:	00000000 	nop
  4982e0:	00021602 	srl	v0,v0,0x18
  4982e4:	304200ff 	andi	v0,v0,0xff
  4982e8:	00021080 	sll	v0,v0,0x2
  4982ec:	24420c00 	addiu	v0,v0,3072
  4982f0:	8f81804c 	lw	at,-32692(gp)
  4982f4:	00000000 	nop
  4982f8:	24210394 	addiu	at,at,916
  4982fc:	00221021 	addu	v0,at,v0
  498300:	8c420000 	lw	v0,0(v0)
  498304:	00000000 	nop
  498308:	00621826 	xor	v1,v1,v0
  49830c:	8c820000 	lw	v0,0(a0)
  498310:	00000000 	nop
  498314:	00431026 	xor	v0,v0,v1
  498318:	afc2001c 	sw	v0,28(s8)
  49831c:	8fc20028 	lw	v0,40(s8)
  498320:	00000000 	nop
  498324:	24440098 	addiu	a0,v0,152
  498328:	93c20013 	lbu	v0,19(s8)
  49832c:	00000000 	nop
  498330:	00021080 	sll	v0,v0,0x2
  498334:	8f83804c 	lw	v1,-32692(gp)
  498338:	00000000 	nop
  49833c:	24630394 	addiu	v1,v1,916
  498340:	00621821 	addu	v1,v1,v0
  498344:	8fc2000c 	lw	v0,12(s8)
  498348:	00000000 	nop
  49834c:	00021202 	srl	v0,v0,0x8
  498350:	304200ff 	andi	v0,v0,0xff
  498354:	00021080 	sll	v0,v0,0x2
  498358:	24420400 	addiu	v0,v0,1024
  49835c:	8f81804c 	lw	at,-32692(gp)
  498360:	00000000 	nop
  498364:	24210394 	addiu	at,at,916
  498368:	00221021 	addu	v0,at,v0
  49836c:	8c630000 	lw	v1,0(v1)
  498370:	8c420000 	lw	v0,0(v0)
  498374:	00000000 	nop
  498378:	00621826 	xor	v1,v1,v0
  49837c:	8fc20008 	lw	v0,8(s8)
  498380:	00000000 	nop
  498384:	00021402 	srl	v0,v0,0x10
  498388:	304200ff 	andi	v0,v0,0xff
  49838c:	00021080 	sll	v0,v0,0x2
  498390:	24420800 	addiu	v0,v0,2048
  498394:	8f81804c 	lw	at,-32692(gp)
  498398:	00000000 	nop
  49839c:	24210394 	addiu	at,at,916
  4983a0:	00221021 	addu	v0,at,v0
  4983a4:	8c420000 	lw	v0,0(v0)
  4983a8:	00000000 	nop
  4983ac:	00621826 	xor	v1,v1,v0
  4983b0:	8fc20014 	lw	v0,20(s8)
  4983b4:	00000000 	nop
  4983b8:	00021602 	srl	v0,v0,0x18
  4983bc:	304200ff 	andi	v0,v0,0xff
  4983c0:	00021080 	sll	v0,v0,0x2
  4983c4:	24420c00 	addiu	v0,v0,3072
  4983c8:	8f81804c 	lw	at,-32692(gp)
  4983cc:	00000000 	nop
  4983d0:	24210394 	addiu	at,at,916
  4983d4:	00221021 	addu	v0,at,v0
  4983d8:	8c420000 	lw	v0,0(v0)
  4983dc:	00000000 	nop
  4983e0:	00621826 	xor	v1,v1,v0
  4983e4:	8c820000 	lw	v0,0(a0)
  4983e8:	00000000 	nop
  4983ec:	00431026 	xor	v0,v0,v1
  4983f0:	afc20020 	sw	v0,32(s8)
  4983f4:	8fc20028 	lw	v0,40(s8)
  4983f8:	00000000 	nop
  4983fc:	2444009c 	addiu	a0,v0,156
  498400:	93c20017 	lbu	v0,23(s8)
  498404:	00000000 	nop
  498408:	00021080 	sll	v0,v0,0x2
  49840c:	8f83804c 	lw	v1,-32692(gp)
  498410:	00000000 	nop
  498414:	24630394 	addiu	v1,v1,916
  498418:	00621821 	addu	v1,v1,v0
  49841c:	8fc20010 	lw	v0,16(s8)
  498420:	00000000 	nop
  498424:	00021202 	srl	v0,v0,0x8
  498428:	304200ff 	andi	v0,v0,0xff
  49842c:	00021080 	sll	v0,v0,0x2
  498430:	24420400 	addiu	v0,v0,1024
  498434:	8f81804c 	lw	at,-32692(gp)
  498438:	00000000 	nop
  49843c:	24210394 	addiu	at,at,916
  498440:	00221021 	addu	v0,at,v0
  498444:	8c630000 	lw	v1,0(v1)
  498448:	8c420000 	lw	v0,0(v0)
  49844c:	00000000 	nop
  498450:	00621826 	xor	v1,v1,v0
  498454:	8fc2000c 	lw	v0,12(s8)
  498458:	00000000 	nop
  49845c:	00021402 	srl	v0,v0,0x10
  498460:	304200ff 	andi	v0,v0,0xff
  498464:	00021080 	sll	v0,v0,0x2
  498468:	24420800 	addiu	v0,v0,2048
  49846c:	8f81804c 	lw	at,-32692(gp)
  498470:	00000000 	nop
  498474:	24210394 	addiu	at,at,916
  498478:	00221021 	addu	v0,at,v0
  49847c:	8c420000 	lw	v0,0(v0)
  498480:	00000000 	nop
  498484:	00621826 	xor	v1,v1,v0
  498488:	8fc20008 	lw	v0,8(s8)
  49848c:	00000000 	nop
  498490:	00021602 	srl	v0,v0,0x18
  498494:	304200ff 	andi	v0,v0,0xff
  498498:	00021080 	sll	v0,v0,0x2
  49849c:	24420c00 	addiu	v0,v0,3072
  4984a0:	8f81804c 	lw	at,-32692(gp)
  4984a4:	00000000 	nop
  4984a8:	24210394 	addiu	at,at,916
  4984ac:	00221021 	addu	v0,at,v0
  4984b0:	8c420000 	lw	v0,0(v0)
  4984b4:	00000000 	nop
  4984b8:	00621826 	xor	v1,v1,v0
  4984bc:	8c820000 	lw	v0,0(a0)
  4984c0:	00000000 	nop
  4984c4:	00431026 	xor	v0,v0,v1
  4984c8:	afc20024 	sw	v0,36(s8)
    }

#elif defined(PARTIAL_UNROLL)
    {   u_int32_t    rnd;

        for(rnd = 0; rnd < (cx->aes_Nrnd >> 1) - 1; ++rnd)
        {
            round(inv_rnd, b1, b0, kp); 
            round(inv_rnd, b0, b1, kp + nc); kp += 2 * nc;
        }

        round(inv_rnd,  b1, b0, kp);
        round(inv_lrnd, b0, b1, kp + nc);
    }
#else
    {   u_int32_t    rnd;

        for(rnd = 0; rnd < cx->aes_Nrnd - 1; ++rnd)
        {
            round(inv_rnd, b1, b0, kp); 
            l_copy(b0, b1); kp += nc;
        }

        round(inv_lrnd, b0, b1, kp);
    }
#endif

    state_out(out_blk, b0);
  4984cc:	93c3001b 	lbu	v1,27(s8)
  4984d0:	8fc20040 	lw	v0,64(s8)
  4984d4:	00000000 	nop
  4984d8:	a0430000 	sb	v1,0(v0)
  4984dc:	8fc20040 	lw	v0,64(s8)
  4984e0:	00000000 	nop
  4984e4:	24430001 	addiu	v1,v0,1
  4984e8:	8fc20018 	lw	v0,24(s8)
  4984ec:	00000000 	nop
  4984f0:	00021202 	srl	v0,v0,0x8
  4984f4:	a0620000 	sb	v0,0(v1)
  4984f8:	8fc20040 	lw	v0,64(s8)
  4984fc:	00000000 	nop
  498500:	24430002 	addiu	v1,v0,2
  498504:	8fc20018 	lw	v0,24(s8)
  498508:	00000000 	nop
  49850c:	00021402 	srl	v0,v0,0x10
  498510:	a0620000 	sb	v0,0(v1)
  498514:	8fc20040 	lw	v0,64(s8)
  498518:	00000000 	nop
  49851c:	24430003 	addiu	v1,v0,3
  498520:	8fc20018 	lw	v0,24(s8)
  498524:	00000000 	nop
  498528:	00021602 	srl	v0,v0,0x18
  49852c:	a0620000 	sb	v0,0(v1)
  498530:	8fc20040 	lw	v0,64(s8)
  498534:	00000000 	nop
  498538:	24430004 	addiu	v1,v0,4
  49853c:	93c2001f 	lbu	v0,31(s8)
  498540:	00000000 	nop
  498544:	a0620000 	sb	v0,0(v1)
  498548:	8fc20040 	lw	v0,64(s8)
  49854c:	00000000 	nop
  498550:	24430005 	addiu	v1,v0,5
  498554:	8fc2001c 	lw	v0,28(s8)
  498558:	00000000 	nop
  49855c:	00021202 	srl	v0,v0,0x8
  498560:	a0620000 	sb	v0,0(v1)
  498564:	8fc20040 	lw	v0,64(s8)
  498568:	00000000 	nop
  49856c:	24430006 	addiu	v1,v0,6
  498570:	8fc2001c 	lw	v0,28(s8)
  498574:	00000000 	nop
  498578:	00021402 	srl	v0,v0,0x10
  49857c:	a0620000 	sb	v0,0(v1)
  498580:	8fc20040 	lw	v0,64(s8)
  498584:	00000000 	nop
  498588:	24430007 	addiu	v1,v0,7
  49858c:	8fc2001c 	lw	v0,28(s8)
  498590:	00000000 	nop
  498594:	00021602 	srl	v0,v0,0x18
  498598:	a0620000 	sb	v0,0(v1)
  49859c:	8fc20040 	lw	v0,64(s8)
  4985a0:	00000000 	nop
  4985a4:	24430008 	addiu	v1,v0,8
  4985a8:	93c20023 	lbu	v0,35(s8)
  4985ac:	00000000 	nop
  4985b0:	a0620000 	sb	v0,0(v1)
  4985b4:	8fc20040 	lw	v0,64(s8)
  4985b8:	00000000 	nop
  4985bc:	24430009 	addiu	v1,v0,9
  4985c0:	8fc20020 	lw	v0,32(s8)
  4985c4:	00000000 	nop
  4985c8:	00021202 	srl	v0,v0,0x8
  4985cc:	a0620000 	sb	v0,0(v1)
  4985d0:	8fc20040 	lw	v0,64(s8)
  4985d4:	00000000 	nop
  4985d8:	2443000a 	addiu	v1,v0,10
  4985dc:	8fc20020 	lw	v0,32(s8)
  4985e0:	00000000 	nop
  4985e4:	00021402 	srl	v0,v0,0x10
  4985e8:	a0620000 	sb	v0,0(v1)
  4985ec:	8fc20040 	lw	v0,64(s8)
  4985f0:	00000000 	nop
  4985f4:	2443000b 	addiu	v1,v0,11
  4985f8:	8fc20020 	lw	v0,32(s8)
  4985fc:	00000000 	nop
  498600:	00021602 	srl	v0,v0,0x18
  498604:	a0620000 	sb	v0,0(v1)
  498608:	8fc20040 	lw	v0,64(s8)
  49860c:	00000000 	nop
  498610:	2443000c 	addiu	v1,v0,12
  498614:	93c20027 	lbu	v0,39(s8)
  498618:	00000000 	nop
  49861c:	a0620000 	sb	v0,0(v1)
  498620:	8fc20040 	lw	v0,64(s8)
  498624:	00000000 	nop
  498628:	2443000d 	addiu	v1,v0,13
  49862c:	8fc20024 	lw	v0,36(s8)
  498630:	00000000 	nop
  498634:	00021202 	srl	v0,v0,0x8
  498638:	a0620000 	sb	v0,0(v1)
  49863c:	8fc20040 	lw	v0,64(s8)
  498640:	00000000 	nop
  498644:	2443000e 	addiu	v1,v0,14
  498648:	8fc20024 	lw	v0,36(s8)
  49864c:	00000000 	nop
  498650:	00021402 	srl	v0,v0,0x10
  498654:	a0620000 	sb	v0,0(v1)
  498658:	8fc20040 	lw	v0,64(s8)
  49865c:	00000000 	nop
  498660:	2443000f 	addiu	v1,v0,15
  498664:	8fc20024 	lw	v0,36(s8)
  498668:	00000000 	nop
  49866c:	00021602 	srl	v0,v0,0x18
  498670:	a0620000 	sb	v0,0(v1)
}
  498674:	03c0e821 	move	sp,s8
  498678:	8fbe0034 	lw	s8,52(sp)
  49867c:	27bd0038 	addiu	sp,sp,56
  498680:	03e00008 	jr	ra
  498684:	00000000 	nop
	...

00498690 <BF_set_key>:
  498690:	3c1c0fb7 	lui	gp,0xfb7
  498694:	279c42e0 	addiu	gp,gp,17120
  498698:	0399e021 	addu	gp,gp,t9
  49869c:	27bdffb8 	addiu	sp,sp,-72
  4986a0:	afbc0010 	sw	gp,16(sp)
  4986a4:	afbf0040 	sw	ra,64(sp)
  4986a8:	afbe003c 	sw	s8,60(sp)
  4986ac:	afbc0038 	sw	gp,56(sp)
  4986b0:	03a0f021 	move	s8,sp
  4986b4:	afc40048 	sw	a0,72(s8)
  4986b8:	afc5004c 	sw	a1,76(s8)
  4986bc:	afc60050 	sw	a2,80(s8)
	BF_LONG *p,ri,in[2];
	const unsigned char *d,*end;


	memcpy((char *)key,(const char *)&bf_init,sizeof(BF_KEY));
  4986c0:	8fc40048 	lw	a0,72(s8)
  4986c4:	8f85804c 	lw	a1,-32692(gp)
  4986c8:	00000000 	nop
  4986cc:	24a523a0 	addiu	a1,a1,9120
  4986d0:	24061048 	li	a2,4168
  4986d4:	8f998a30 	lw	t9,-30160(gp)
  4986d8:	00000000 	nop
  4986dc:	0320f809 	jalr	t9
  4986e0:	00000000 	nop
  4986e4:	8fdc0010 	lw	gp,16(s8)
  4986e8:	00000000 	nop
	p=key->P;
  4986ec:	8fc20048 	lw	v0,72(s8)
  4986f0:	00000000 	nop
  4986f4:	afc2001c 	sw	v0,28(s8)

	if (len > ((BF_ROUNDS+2)*4)) len=(BF_ROUNDS+2)*4;
  4986f8:	8fc2004c 	lw	v0,76(s8)
  4986fc:	00000000 	nop
  498700:	28420049 	slti	v0,v0,73
  498704:	14400003 	bnez	v0,498714 <BF_set_key+0x84>
  498708:	00000000 	nop
  49870c:	24020048 	li	v0,72
  498710:	afc2004c 	sw	v0,76(s8)

	d=data;
  498714:	8fc20050 	lw	v0,80(s8)
  498718:	00000000 	nop
  49871c:	afc20030 	sw	v0,48(s8)
	end= &(data[len]);
  498720:	8fc30050 	lw	v1,80(s8)
  498724:	8fc2004c 	lw	v0,76(s8)
  498728:	00000000 	nop
  49872c:	00621021 	addu	v0,v1,v0
  498730:	afc20034 	sw	v0,52(s8)
	for (i=0; i<(BF_ROUNDS+2); i++)
  498734:	afc00018 	sw	zero,24(s8)
  498738:	8fc20018 	lw	v0,24(s8)
  49873c:	00000000 	nop
  498740:	28420012 	slti	v0,v0,18
  498744:	14400003 	bnez	v0,498754 <BF_set_key+0xc4>
  498748:	00000000 	nop
  49874c:	10000072 	b	498918 <BF_set_key+0x288>
  498750:	00000000 	nop
		{
		ri= *(d++);
  498754:	27c40030 	addiu	a0,s8,48
  498758:	8c820000 	lw	v0,0(a0)
  49875c:	00000000 	nop
  498760:	00401821 	move	v1,v0
  498764:	90630000 	lbu	v1,0(v1)
  498768:	00000000 	nop
  49876c:	afc30020 	sw	v1,32(s8)
  498770:	24420001 	addiu	v0,v0,1
  498774:	ac820000 	sw	v0,0(a0)
		if (d >= end) d=data;
  498778:	8fc30030 	lw	v1,48(s8)
  49877c:	8fc20034 	lw	v0,52(s8)
  498780:	00000000 	nop
  498784:	0062102b 	sltu	v0,v1,v0
  498788:	14400004 	bnez	v0,49879c <BF_set_key+0x10c>
  49878c:	00000000 	nop
  498790:	8fc20050 	lw	v0,80(s8)
  498794:	00000000 	nop
  498798:	afc20030 	sw	v0,48(s8)

		ri<<=8;
  49879c:	8fc20020 	lw	v0,32(s8)
  4987a0:	00000000 	nop
  4987a4:	00021200 	sll	v0,v0,0x8
  4987a8:	afc20020 	sw	v0,32(s8)
		ri|= *(d++);
  4987ac:	27c50030 	addiu	a1,s8,48
  4987b0:	8ca30000 	lw	v1,0(a1)
  4987b4:	00000000 	nop
  4987b8:	00601021 	move	v0,v1
  4987bc:	90440000 	lbu	a0,0(v0)
  4987c0:	8fc20020 	lw	v0,32(s8)
  4987c4:	00000000 	nop
  4987c8:	00441025 	or	v0,v0,a0
  4987cc:	afc20020 	sw	v0,32(s8)
  4987d0:	24630001 	addiu	v1,v1,1
  4987d4:	aca30000 	sw	v1,0(a1)
		if (d >= end) d=data;
  4987d8:	8fc30030 	lw	v1,48(s8)
  4987dc:	8fc20034 	lw	v0,52(s8)
  4987e0:	00000000 	nop
  4987e4:	0062102b 	sltu	v0,v1,v0
  4987e8:	14400004 	bnez	v0,4987fc <BF_set_key+0x16c>
  4987ec:	00000000 	nop
  4987f0:	8fc20050 	lw	v0,80(s8)
  4987f4:	00000000 	nop
  4987f8:	afc20030 	sw	v0,48(s8)

		ri<<=8;
  4987fc:	8fc20020 	lw	v0,32(s8)
  498800:	00000000 	nop
  498804:	00021200 	sll	v0,v0,0x8
  498808:	afc20020 	sw	v0,32(s8)
		ri|= *(d++);
  49880c:	27c50030 	addiu	a1,s8,48
  498810:	8ca30000 	lw	v1,0(a1)
  498814:	00000000 	nop
  498818:	00601021 	move	v0,v1
  49881c:	90440000 	lbu	a0,0(v0)
  498820:	8fc20020 	lw	v0,32(s8)
  498824:	00000000 	nop
  498828:	00441025 	or	v0,v0,a0
  49882c:	afc20020 	sw	v0,32(s8)
  498830:	24630001 	addiu	v1,v1,1
  498834:	aca30000 	sw	v1,0(a1)
		if (d >= end) d=data;
  498838:	8fc30030 	lw	v1,48(s8)
  49883c:	8fc20034 	lw	v0,52(s8)
  498840:	00000000 	nop
  498844:	0062102b 	sltu	v0,v1,v0
  498848:	14400004 	bnez	v0,49885c <BF_set_key+0x1cc>
  49884c:	00000000 	nop
  498850:	8fc20050 	lw	v0,80(s8)
  498854:	00000000 	nop
  498858:	afc20030 	sw	v0,48(s8)

		ri<<=8;
  49885c:	8fc20020 	lw	v0,32(s8)
  498860:	00000000 	nop
  498864:	00021200 	sll	v0,v0,0x8
  498868:	afc20020 	sw	v0,32(s8)
		ri|= *(d++);
  49886c:	27c50030 	addiu	a1,s8,48
  498870:	8ca30000 	lw	v1,0(a1)
  498874:	00000000 	nop
  498878:	00601021 	move	v0,v1
  49887c:	90440000 	lbu	a0,0(v0)
  498880:	8fc20020 	lw	v0,32(s8)
  498884:	00000000 	nop
  498888:	00441025 	or	v0,v0,a0
  49888c:	afc20020 	sw	v0,32(s8)
  498890:	24630001 	addiu	v1,v1,1
  498894:	aca30000 	sw	v1,0(a1)
		if (d >= end) d=data;
  498898:	8fc30030 	lw	v1,48(s8)
  49889c:	8fc20034 	lw	v0,52(s8)
  4988a0:	00000000 	nop
  4988a4:	0062102b 	sltu	v0,v1,v0
  4988a8:	14400004 	bnez	v0,4988bc <BF_set_key+0x22c>
  4988ac:	00000000 	nop
  4988b0:	8fc20050 	lw	v0,80(s8)
  4988b4:	00000000 	nop
  4988b8:	afc20030 	sw	v0,48(s8)

		p[i]^=ri;
  4988bc:	8fc20018 	lw	v0,24(s8)
  4988c0:	00000000 	nop
  4988c4:	00021880 	sll	v1,v0,0x2
  4988c8:	8fc2001c 	lw	v0,28(s8)
  4988cc:	00000000 	nop
  4988d0:	00622021 	addu	a0,v1,v0
  4988d4:	8fc20018 	lw	v0,24(s8)
  4988d8:	00000000 	nop
  4988dc:	00021880 	sll	v1,v0,0x2
  4988e0:	8fc2001c 	lw	v0,28(s8)
  4988e4:	00000000 	nop
  4988e8:	00621021 	addu	v0,v1,v0
  4988ec:	8c430000 	lw	v1,0(v0)
  4988f0:	8fc20020 	lw	v0,32(s8)
  4988f4:	00000000 	nop
  4988f8:	00621026 	xor	v0,v1,v0
  4988fc:	ac820000 	sw	v0,0(a0)
  498900:	8fc20018 	lw	v0,24(s8)
  498904:	00000000 	nop
  498908:	24420001 	addiu	v0,v0,1
  49890c:	afc20018 	sw	v0,24(s8)
  498910:	1000ff89 	b	498738 <BF_set_key+0xa8>
  498914:	00000000 	nop
		}

	in[0]=0L;
  498918:	afc00028 	sw	zero,40(s8)
	in[1]=0L;
  49891c:	afc0002c 	sw	zero,44(s8)
	for (i=0; i<(BF_ROUNDS+2); i+=2)
  498920:	afc00018 	sw	zero,24(s8)
  498924:	8fc20018 	lw	v0,24(s8)
  498928:	00000000 	nop
  49892c:	28420012 	slti	v0,v0,18
  498930:	14400003 	bnez	v0,498940 <BF_set_key+0x2b0>
  498934:	00000000 	nop
  498938:	10000022 	b	4989c4 <BF_set_key+0x334>
  49893c:	00000000 	nop
		{
		BF_encrypt(in,key);
  498940:	27c40028 	addiu	a0,s8,40
  498944:	8fc50048 	lw	a1,72(s8)
  498948:	8f9988c0 	lw	t9,-30528(gp)
  49894c:	00000000 	nop
  498950:	0320f809 	jalr	t9
  498954:	00000000 	nop
  498958:	8fdc0010 	lw	gp,16(s8)
  49895c:	00000000 	nop
		p[i  ]=in[0];
  498960:	8fc20018 	lw	v0,24(s8)
  498964:	00000000 	nop
  498968:	00021880 	sll	v1,v0,0x2
  49896c:	8fc2001c 	lw	v0,28(s8)
  498970:	00000000 	nop
  498974:	00621821 	addu	v1,v1,v0
  498978:	8fc20028 	lw	v0,40(s8)
  49897c:	00000000 	nop
  498980:	ac620000 	sw	v0,0(v1)
		p[i+1]=in[1];
  498984:	8fc20018 	lw	v0,24(s8)
  498988:	00000000 	nop
  49898c:	00021880 	sll	v1,v0,0x2
  498990:	8fc2001c 	lw	v0,28(s8)
  498994:	00000000 	nop
  498998:	00621021 	addu	v0,v1,v0
  49899c:	24430004 	addiu	v1,v0,4
  4989a0:	8fc2002c 	lw	v0,44(s8)
  4989a4:	00000000 	nop
  4989a8:	ac620000 	sw	v0,0(v1)
  4989ac:	8fc20018 	lw	v0,24(s8)
  4989b0:	00000000 	nop
  4989b4:	24420002 	addiu	v0,v0,2
  4989b8:	afc20018 	sw	v0,24(s8)
  4989bc:	1000ffd9 	b	498924 <BF_set_key+0x294>
  4989c0:	00000000 	nop
		}

	p=key->S;
  4989c4:	8fc20048 	lw	v0,72(s8)
  4989c8:	00000000 	nop
  4989cc:	24420048 	addiu	v0,v0,72
  4989d0:	afc2001c 	sw	v0,28(s8)
	for (i=0; i<4*256; i+=2)
  4989d4:	afc00018 	sw	zero,24(s8)
  4989d8:	8fc20018 	lw	v0,24(s8)
  4989dc:	00000000 	nop
  4989e0:	28420400 	slti	v0,v0,1024
  4989e4:	14400003 	bnez	v0,4989f4 <BF_set_key+0x364>
  4989e8:	00000000 	nop
  4989ec:	10000022 	b	498a78 <BF_set_key+0x3e8>
  4989f0:	00000000 	nop
		{
		BF_encrypt(in,key);
  4989f4:	27c40028 	addiu	a0,s8,40
  4989f8:	8fc50048 	lw	a1,72(s8)
  4989fc:	8f9988c0 	lw	t9,-30528(gp)
  498a00:	00000000 	nop
  498a04:	0320f809 	jalr	t9
  498a08:	00000000 	nop
  498a0c:	8fdc0010 	lw	gp,16(s8)
  498a10:	00000000 	nop
		p[i  ]=in[0];
  498a14:	8fc20018 	lw	v0,24(s8)
  498a18:	00000000 	nop
  498a1c:	00021880 	sll	v1,v0,0x2
  498a20:	8fc2001c 	lw	v0,28(s8)
  498a24:	00000000 	nop
  498a28:	00621821 	addu	v1,v1,v0
  498a2c:	8fc20028 	lw	v0,40(s8)
  498a30:	00000000 	nop
  498a34:	ac620000 	sw	v0,0(v1)
		p[i+1]=in[1];
  498a38:	8fc20018 	lw	v0,24(s8)
  498a3c:	00000000 	nop
  498a40:	00021880 	sll	v1,v0,0x2
  498a44:	8fc2001c 	lw	v0,28(s8)
  498a48:	00000000 	nop
  498a4c:	00621021 	addu	v0,v1,v0
  498a50:	24430004 	addiu	v1,v0,4
  498a54:	8fc2002c 	lw	v0,44(s8)
  498a58:	00000000 	nop
  498a5c:	ac620000 	sw	v0,0(v1)
  498a60:	8fc20018 	lw	v0,24(s8)
  498a64:	00000000 	nop
  498a68:	24420002 	addiu	v0,v0,2
  498a6c:	afc20018 	sw	v0,24(s8)
  498a70:	1000ffd9 	b	4989d8 <BF_set_key+0x348>
  498a74:	00000000 	nop
		}
	}
  498a78:	03c0e821 	move	sp,s8
  498a7c:	8fbf0040 	lw	ra,64(sp)
  498a80:	8fbe003c 	lw	s8,60(sp)
  498a84:	27bd0048 	addiu	sp,sp,72
  498a88:	03e00008 	jr	ra
  498a8c:	00000000 	nop

00498a90 <BF_encrypt>:
  498a90:	3c1c0fb7 	lui	gp,0xfb7
  498a94:	279c3ee0 	addiu	gp,gp,16096
  498a98:	0399e021 	addu	gp,gp,t9
  498a9c:	27bdffe0 	addiu	sp,sp,-32
  498aa0:	afbc0000 	sw	gp,0(sp)
  498aa4:	afbe001c 	sw	s8,28(sp)
  498aa8:	afbc0018 	sw	gp,24(sp)
  498aac:	03a0f021 	move	s8,sp
  498ab0:	afc40020 	sw	a0,32(s8)
  498ab4:	afc50024 	sw	a1,36(s8)
#ifndef BF_PTR2
	const BF_LONG *p,*s;
	BF_LONG l,r;

	p=key->P;
  498ab8:	8fc20024 	lw	v0,36(s8)
  498abc:	00000000 	nop
  498ac0:	afc20008 	sw	v0,8(s8)
	s= &(key->S[0]);
  498ac4:	8fc20024 	lw	v0,36(s8)
  498ac8:	00000000 	nop
  498acc:	24420048 	addiu	v0,v0,72
  498ad0:	afc2000c 	sw	v0,12(s8)
	l=data[0];
  498ad4:	8fc20020 	lw	v0,32(s8)
  498ad8:	00000000 	nop
  498adc:	8c420000 	lw	v0,0(v0)
  498ae0:	00000000 	nop
  498ae4:	afc20010 	sw	v0,16(s8)
	r=data[1];
  498ae8:	8fc20020 	lw	v0,32(s8)
  498aec:	00000000 	nop
  498af0:	24420004 	addiu	v0,v0,4
  498af4:	8c420000 	lw	v0,0(v0)
  498af8:	00000000 	nop
  498afc:	afc20014 	sw	v0,20(s8)

	l^=p[0];
  498b00:	8fc20008 	lw	v0,8(s8)
  498b04:	00000000 	nop
  498b08:	8c430000 	lw	v1,0(v0)
  498b0c:	8fc20010 	lw	v0,16(s8)
  498b10:	00000000 	nop
  498b14:	00431026 	xor	v0,v0,v1
  498b18:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 1]);
  498b1c:	8fc20008 	lw	v0,8(s8)
  498b20:	00000000 	nop
  498b24:	24420004 	addiu	v0,v0,4
  498b28:	8c430000 	lw	v1,0(v0)
  498b2c:	8fc20014 	lw	v0,20(s8)
  498b30:	00000000 	nop
  498b34:	00431026 	xor	v0,v0,v1
  498b38:	afc20014 	sw	v0,20(s8)
  498b3c:	8fc20010 	lw	v0,16(s8)
  498b40:	00000000 	nop
  498b44:	00021602 	srl	v0,v0,0x18
  498b48:	304200ff 	andi	v0,v0,0xff
  498b4c:	00021880 	sll	v1,v0,0x2
  498b50:	8fc2000c 	lw	v0,12(s8)
  498b54:	00000000 	nop
  498b58:	00622021 	addu	a0,v1,v0
  498b5c:	8fc20010 	lw	v0,16(s8)
  498b60:	00000000 	nop
  498b64:	00021402 	srl	v0,v0,0x10
  498b68:	304200ff 	andi	v0,v0,0xff
  498b6c:	00021880 	sll	v1,v0,0x2
  498b70:	8fc2000c 	lw	v0,12(s8)
  498b74:	00000000 	nop
  498b78:	00621021 	addu	v0,v1,v0
  498b7c:	24420400 	addiu	v0,v0,1024
  498b80:	8c830000 	lw	v1,0(a0)
  498b84:	8c420000 	lw	v0,0(v0)
  498b88:	00000000 	nop
  498b8c:	00622021 	addu	a0,v1,v0
  498b90:	8fc20010 	lw	v0,16(s8)
  498b94:	00000000 	nop
  498b98:	00021202 	srl	v0,v0,0x8
  498b9c:	304200ff 	andi	v0,v0,0xff
  498ba0:	00021880 	sll	v1,v0,0x2
  498ba4:	8fc2000c 	lw	v0,12(s8)
  498ba8:	00000000 	nop
  498bac:	00621021 	addu	v0,v1,v0
  498bb0:	24420800 	addiu	v0,v0,2048
  498bb4:	8c420000 	lw	v0,0(v0)
  498bb8:	00000000 	nop
  498bbc:	00822026 	xor	a0,a0,v0
  498bc0:	8fc20010 	lw	v0,16(s8)
  498bc4:	00000000 	nop
  498bc8:	304200ff 	andi	v0,v0,0xff
  498bcc:	00021880 	sll	v1,v0,0x2
  498bd0:	8fc2000c 	lw	v0,12(s8)
  498bd4:	00000000 	nop
  498bd8:	00621021 	addu	v0,v1,v0
  498bdc:	24420c00 	addiu	v0,v0,3072
  498be0:	8c420000 	lw	v0,0(v0)
  498be4:	00000000 	nop
  498be8:	00821821 	addu	v1,a0,v0
  498bec:	8fc20014 	lw	v0,20(s8)
  498bf0:	00000000 	nop
  498bf4:	00431026 	xor	v0,v0,v1
  498bf8:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 2]);
  498bfc:	8fc20008 	lw	v0,8(s8)
  498c00:	00000000 	nop
  498c04:	24420008 	addiu	v0,v0,8
  498c08:	8c430000 	lw	v1,0(v0)
  498c0c:	8fc20010 	lw	v0,16(s8)
  498c10:	00000000 	nop
  498c14:	00431026 	xor	v0,v0,v1
  498c18:	afc20010 	sw	v0,16(s8)
  498c1c:	8fc20014 	lw	v0,20(s8)
  498c20:	00000000 	nop
  498c24:	00021602 	srl	v0,v0,0x18
  498c28:	304200ff 	andi	v0,v0,0xff
  498c2c:	00021880 	sll	v1,v0,0x2
  498c30:	8fc2000c 	lw	v0,12(s8)
  498c34:	00000000 	nop
  498c38:	00622021 	addu	a0,v1,v0
  498c3c:	8fc20014 	lw	v0,20(s8)
  498c40:	00000000 	nop
  498c44:	00021402 	srl	v0,v0,0x10
  498c48:	304200ff 	andi	v0,v0,0xff
  498c4c:	00021880 	sll	v1,v0,0x2
  498c50:	8fc2000c 	lw	v0,12(s8)
  498c54:	00000000 	nop
  498c58:	00621021 	addu	v0,v1,v0
  498c5c:	24420400 	addiu	v0,v0,1024
  498c60:	8c830000 	lw	v1,0(a0)
  498c64:	8c420000 	lw	v0,0(v0)
  498c68:	00000000 	nop
  498c6c:	00622021 	addu	a0,v1,v0
  498c70:	8fc20014 	lw	v0,20(s8)
  498c74:	00000000 	nop
  498c78:	00021202 	srl	v0,v0,0x8
  498c7c:	304200ff 	andi	v0,v0,0xff
  498c80:	00021880 	sll	v1,v0,0x2
  498c84:	8fc2000c 	lw	v0,12(s8)
  498c88:	00000000 	nop
  498c8c:	00621021 	addu	v0,v1,v0
  498c90:	24420800 	addiu	v0,v0,2048
  498c94:	8c420000 	lw	v0,0(v0)
  498c98:	00000000 	nop
  498c9c:	00822026 	xor	a0,a0,v0
  498ca0:	8fc20014 	lw	v0,20(s8)
  498ca4:	00000000 	nop
  498ca8:	304200ff 	andi	v0,v0,0xff
  498cac:	00021880 	sll	v1,v0,0x2
  498cb0:	8fc2000c 	lw	v0,12(s8)
  498cb4:	00000000 	nop
  498cb8:	00621021 	addu	v0,v1,v0
  498cbc:	24420c00 	addiu	v0,v0,3072
  498cc0:	8c420000 	lw	v0,0(v0)
  498cc4:	00000000 	nop
  498cc8:	00821821 	addu	v1,a0,v0
  498ccc:	8fc20010 	lw	v0,16(s8)
  498cd0:	00000000 	nop
  498cd4:	00431026 	xor	v0,v0,v1
  498cd8:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 3]);
  498cdc:	8fc20008 	lw	v0,8(s8)
  498ce0:	00000000 	nop
  498ce4:	2442000c 	addiu	v0,v0,12
  498ce8:	8c430000 	lw	v1,0(v0)
  498cec:	8fc20014 	lw	v0,20(s8)
  498cf0:	00000000 	nop
  498cf4:	00431026 	xor	v0,v0,v1
  498cf8:	afc20014 	sw	v0,20(s8)
  498cfc:	8fc20010 	lw	v0,16(s8)
  498d00:	00000000 	nop
  498d04:	00021602 	srl	v0,v0,0x18
  498d08:	304200ff 	andi	v0,v0,0xff
  498d0c:	00021880 	sll	v1,v0,0x2
  498d10:	8fc2000c 	lw	v0,12(s8)
  498d14:	00000000 	nop
  498d18:	00622021 	addu	a0,v1,v0
  498d1c:	8fc20010 	lw	v0,16(s8)
  498d20:	00000000 	nop
  498d24:	00021402 	srl	v0,v0,0x10
  498d28:	304200ff 	andi	v0,v0,0xff
  498d2c:	00021880 	sll	v1,v0,0x2
  498d30:	8fc2000c 	lw	v0,12(s8)
  498d34:	00000000 	nop
  498d38:	00621021 	addu	v0,v1,v0
  498d3c:	24420400 	addiu	v0,v0,1024
  498d40:	8c830000 	lw	v1,0(a0)
  498d44:	8c420000 	lw	v0,0(v0)
  498d48:	00000000 	nop
  498d4c:	00622021 	addu	a0,v1,v0
  498d50:	8fc20010 	lw	v0,16(s8)
  498d54:	00000000 	nop
  498d58:	00021202 	srl	v0,v0,0x8
  498d5c:	304200ff 	andi	v0,v0,0xff
  498d60:	00021880 	sll	v1,v0,0x2
  498d64:	8fc2000c 	lw	v0,12(s8)
  498d68:	00000000 	nop
  498d6c:	00621021 	addu	v0,v1,v0
  498d70:	24420800 	addiu	v0,v0,2048
  498d74:	8c420000 	lw	v0,0(v0)
  498d78:	00000000 	nop
  498d7c:	00822026 	xor	a0,a0,v0
  498d80:	8fc20010 	lw	v0,16(s8)
  498d84:	00000000 	nop
  498d88:	304200ff 	andi	v0,v0,0xff
  498d8c:	00021880 	sll	v1,v0,0x2
  498d90:	8fc2000c 	lw	v0,12(s8)
  498d94:	00000000 	nop
  498d98:	00621021 	addu	v0,v1,v0
  498d9c:	24420c00 	addiu	v0,v0,3072
  498da0:	8c420000 	lw	v0,0(v0)
  498da4:	00000000 	nop
  498da8:	00821821 	addu	v1,a0,v0
  498dac:	8fc20014 	lw	v0,20(s8)
  498db0:	00000000 	nop
  498db4:	00431026 	xor	v0,v0,v1
  498db8:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 4]);
  498dbc:	8fc20008 	lw	v0,8(s8)
  498dc0:	00000000 	nop
  498dc4:	24420010 	addiu	v0,v0,16
  498dc8:	8c430000 	lw	v1,0(v0)
  498dcc:	8fc20010 	lw	v0,16(s8)
  498dd0:	00000000 	nop
  498dd4:	00431026 	xor	v0,v0,v1
  498dd8:	afc20010 	sw	v0,16(s8)
  498ddc:	8fc20014 	lw	v0,20(s8)
  498de0:	00000000 	nop
  498de4:	00021602 	srl	v0,v0,0x18
  498de8:	304200ff 	andi	v0,v0,0xff
  498dec:	00021880 	sll	v1,v0,0x2
  498df0:	8fc2000c 	lw	v0,12(s8)
  498df4:	00000000 	nop
  498df8:	00622021 	addu	a0,v1,v0
  498dfc:	8fc20014 	lw	v0,20(s8)
  498e00:	00000000 	nop
  498e04:	00021402 	srl	v0,v0,0x10
  498e08:	304200ff 	andi	v0,v0,0xff
  498e0c:	00021880 	sll	v1,v0,0x2
  498e10:	8fc2000c 	lw	v0,12(s8)
  498e14:	00000000 	nop
  498e18:	00621021 	addu	v0,v1,v0
  498e1c:	24420400 	addiu	v0,v0,1024
  498e20:	8c830000 	lw	v1,0(a0)
  498e24:	8c420000 	lw	v0,0(v0)
  498e28:	00000000 	nop
  498e2c:	00622021 	addu	a0,v1,v0
  498e30:	8fc20014 	lw	v0,20(s8)
  498e34:	00000000 	nop
  498e38:	00021202 	srl	v0,v0,0x8
  498e3c:	304200ff 	andi	v0,v0,0xff
  498e40:	00021880 	sll	v1,v0,0x2
  498e44:	8fc2000c 	lw	v0,12(s8)
  498e48:	00000000 	nop
  498e4c:	00621021 	addu	v0,v1,v0
  498e50:	24420800 	addiu	v0,v0,2048
  498e54:	8c420000 	lw	v0,0(v0)
  498e58:	00000000 	nop
  498e5c:	00822026 	xor	a0,a0,v0
  498e60:	8fc20014 	lw	v0,20(s8)
  498e64:	00000000 	nop
  498e68:	304200ff 	andi	v0,v0,0xff
  498e6c:	00021880 	sll	v1,v0,0x2
  498e70:	8fc2000c 	lw	v0,12(s8)
  498e74:	00000000 	nop
  498e78:	00621021 	addu	v0,v1,v0
  498e7c:	24420c00 	addiu	v0,v0,3072
  498e80:	8c420000 	lw	v0,0(v0)
  498e84:	00000000 	nop
  498e88:	00821821 	addu	v1,a0,v0
  498e8c:	8fc20010 	lw	v0,16(s8)
  498e90:	00000000 	nop
  498e94:	00431026 	xor	v0,v0,v1
  498e98:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 5]);
  498e9c:	8fc20008 	lw	v0,8(s8)
  498ea0:	00000000 	nop
  498ea4:	24420014 	addiu	v0,v0,20
  498ea8:	8c430000 	lw	v1,0(v0)
  498eac:	8fc20014 	lw	v0,20(s8)
  498eb0:	00000000 	nop
  498eb4:	00431026 	xor	v0,v0,v1
  498eb8:	afc20014 	sw	v0,20(s8)
  498ebc:	8fc20010 	lw	v0,16(s8)
  498ec0:	00000000 	nop
  498ec4:	00021602 	srl	v0,v0,0x18
  498ec8:	304200ff 	andi	v0,v0,0xff
  498ecc:	00021880 	sll	v1,v0,0x2
  498ed0:	8fc2000c 	lw	v0,12(s8)
  498ed4:	00000000 	nop
  498ed8:	00622021 	addu	a0,v1,v0
  498edc:	8fc20010 	lw	v0,16(s8)
  498ee0:	00000000 	nop
  498ee4:	00021402 	srl	v0,v0,0x10
  498ee8:	304200ff 	andi	v0,v0,0xff
  498eec:	00021880 	sll	v1,v0,0x2
  498ef0:	8fc2000c 	lw	v0,12(s8)
  498ef4:	00000000 	nop
  498ef8:	00621021 	addu	v0,v1,v0
  498efc:	24420400 	addiu	v0,v0,1024
  498f00:	8c830000 	lw	v1,0(a0)
  498f04:	8c420000 	lw	v0,0(v0)
  498f08:	00000000 	nop
  498f0c:	00622021 	addu	a0,v1,v0
  498f10:	8fc20010 	lw	v0,16(s8)
  498f14:	00000000 	nop
  498f18:	00021202 	srl	v0,v0,0x8
  498f1c:	304200ff 	andi	v0,v0,0xff
  498f20:	00021880 	sll	v1,v0,0x2
  498f24:	8fc2000c 	lw	v0,12(s8)
  498f28:	00000000 	nop
  498f2c:	00621021 	addu	v0,v1,v0
  498f30:	24420800 	addiu	v0,v0,2048
  498f34:	8c420000 	lw	v0,0(v0)
  498f38:	00000000 	nop
  498f3c:	00822026 	xor	a0,a0,v0
  498f40:	8fc20010 	lw	v0,16(s8)
  498f44:	00000000 	nop
  498f48:	304200ff 	andi	v0,v0,0xff
  498f4c:	00021880 	sll	v1,v0,0x2
  498f50:	8fc2000c 	lw	v0,12(s8)
  498f54:	00000000 	nop
  498f58:	00621021 	addu	v0,v1,v0
  498f5c:	24420c00 	addiu	v0,v0,3072
  498f60:	8c420000 	lw	v0,0(v0)
  498f64:	00000000 	nop
  498f68:	00821821 	addu	v1,a0,v0
  498f6c:	8fc20014 	lw	v0,20(s8)
  498f70:	00000000 	nop
  498f74:	00431026 	xor	v0,v0,v1
  498f78:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 6]);
  498f7c:	8fc20008 	lw	v0,8(s8)
  498f80:	00000000 	nop
  498f84:	24420018 	addiu	v0,v0,24
  498f88:	8c430000 	lw	v1,0(v0)
  498f8c:	8fc20010 	lw	v0,16(s8)
  498f90:	00000000 	nop
  498f94:	00431026 	xor	v0,v0,v1
  498f98:	afc20010 	sw	v0,16(s8)
  498f9c:	8fc20014 	lw	v0,20(s8)
  498fa0:	00000000 	nop
  498fa4:	00021602 	srl	v0,v0,0x18
  498fa8:	304200ff 	andi	v0,v0,0xff
  498fac:	00021880 	sll	v1,v0,0x2
  498fb0:	8fc2000c 	lw	v0,12(s8)
  498fb4:	00000000 	nop
  498fb8:	00622021 	addu	a0,v1,v0
  498fbc:	8fc20014 	lw	v0,20(s8)
  498fc0:	00000000 	nop
  498fc4:	00021402 	srl	v0,v0,0x10
  498fc8:	304200ff 	andi	v0,v0,0xff
  498fcc:	00021880 	sll	v1,v0,0x2
  498fd0:	8fc2000c 	lw	v0,12(s8)
  498fd4:	00000000 	nop
  498fd8:	00621021 	addu	v0,v1,v0
  498fdc:	24420400 	addiu	v0,v0,1024
  498fe0:	8c830000 	lw	v1,0(a0)
  498fe4:	8c420000 	lw	v0,0(v0)
  498fe8:	00000000 	nop
  498fec:	00622021 	addu	a0,v1,v0
  498ff0:	8fc20014 	lw	v0,20(s8)
  498ff4:	00000000 	nop
  498ff8:	00021202 	srl	v0,v0,0x8
  498ffc:	304200ff 	andi	v0,v0,0xff
  499000:	00021880 	sll	v1,v0,0x2
  499004:	8fc2000c 	lw	v0,12(s8)
  499008:	00000000 	nop
  49900c:	00621021 	addu	v0,v1,v0
  499010:	24420800 	addiu	v0,v0,2048
  499014:	8c420000 	lw	v0,0(v0)
  499018:	00000000 	nop
  49901c:	00822026 	xor	a0,a0,v0
  499020:	8fc20014 	lw	v0,20(s8)
  499024:	00000000 	nop
  499028:	304200ff 	andi	v0,v0,0xff
  49902c:	00021880 	sll	v1,v0,0x2
  499030:	8fc2000c 	lw	v0,12(s8)
  499034:	00000000 	nop
  499038:	00621021 	addu	v0,v1,v0
  49903c:	24420c00 	addiu	v0,v0,3072
  499040:	8c420000 	lw	v0,0(v0)
  499044:	00000000 	nop
  499048:	00821821 	addu	v1,a0,v0
  49904c:	8fc20010 	lw	v0,16(s8)
  499050:	00000000 	nop
  499054:	00431026 	xor	v0,v0,v1
  499058:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 7]);
  49905c:	8fc20008 	lw	v0,8(s8)
  499060:	00000000 	nop
  499064:	2442001c 	addiu	v0,v0,28
  499068:	8c430000 	lw	v1,0(v0)
  49906c:	8fc20014 	lw	v0,20(s8)
  499070:	00000000 	nop
  499074:	00431026 	xor	v0,v0,v1
  499078:	afc20014 	sw	v0,20(s8)
  49907c:	8fc20010 	lw	v0,16(s8)
  499080:	00000000 	nop
  499084:	00021602 	srl	v0,v0,0x18
  499088:	304200ff 	andi	v0,v0,0xff
  49908c:	00021880 	sll	v1,v0,0x2
  499090:	8fc2000c 	lw	v0,12(s8)
  499094:	00000000 	nop
  499098:	00622021 	addu	a0,v1,v0
  49909c:	8fc20010 	lw	v0,16(s8)
  4990a0:	00000000 	nop
  4990a4:	00021402 	srl	v0,v0,0x10
  4990a8:	304200ff 	andi	v0,v0,0xff
  4990ac:	00021880 	sll	v1,v0,0x2
  4990b0:	8fc2000c 	lw	v0,12(s8)
  4990b4:	00000000 	nop
  4990b8:	00621021 	addu	v0,v1,v0
  4990bc:	24420400 	addiu	v0,v0,1024
  4990c0:	8c830000 	lw	v1,0(a0)
  4990c4:	8c420000 	lw	v0,0(v0)
  4990c8:	00000000 	nop
  4990cc:	00622021 	addu	a0,v1,v0
  4990d0:	8fc20010 	lw	v0,16(s8)
  4990d4:	00000000 	nop
  4990d8:	00021202 	srl	v0,v0,0x8
  4990dc:	304200ff 	andi	v0,v0,0xff
  4990e0:	00021880 	sll	v1,v0,0x2
  4990e4:	8fc2000c 	lw	v0,12(s8)
  4990e8:	00000000 	nop
  4990ec:	00621021 	addu	v0,v1,v0
  4990f0:	24420800 	addiu	v0,v0,2048
  4990f4:	8c420000 	lw	v0,0(v0)
  4990f8:	00000000 	nop
  4990fc:	00822026 	xor	a0,a0,v0
  499100:	8fc20010 	lw	v0,16(s8)
  499104:	00000000 	nop
  499108:	304200ff 	andi	v0,v0,0xff
  49910c:	00021880 	sll	v1,v0,0x2
  499110:	8fc2000c 	lw	v0,12(s8)
  499114:	00000000 	nop
  499118:	00621021 	addu	v0,v1,v0
  49911c:	24420c00 	addiu	v0,v0,3072
  499120:	8c420000 	lw	v0,0(v0)
  499124:	00000000 	nop
  499128:	00821821 	addu	v1,a0,v0
  49912c:	8fc20014 	lw	v0,20(s8)
  499130:	00000000 	nop
  499134:	00431026 	xor	v0,v0,v1
  499138:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 8]);
  49913c:	8fc20008 	lw	v0,8(s8)
  499140:	00000000 	nop
  499144:	24420020 	addiu	v0,v0,32
  499148:	8c430000 	lw	v1,0(v0)
  49914c:	8fc20010 	lw	v0,16(s8)
  499150:	00000000 	nop
  499154:	00431026 	xor	v0,v0,v1
  499158:	afc20010 	sw	v0,16(s8)
  49915c:	8fc20014 	lw	v0,20(s8)
  499160:	00000000 	nop
  499164:	00021602 	srl	v0,v0,0x18
  499168:	304200ff 	andi	v0,v0,0xff
  49916c:	00021880 	sll	v1,v0,0x2
  499170:	8fc2000c 	lw	v0,12(s8)
  499174:	00000000 	nop
  499178:	00622021 	addu	a0,v1,v0
  49917c:	8fc20014 	lw	v0,20(s8)
  499180:	00000000 	nop
  499184:	00021402 	srl	v0,v0,0x10
  499188:	304200ff 	andi	v0,v0,0xff
  49918c:	00021880 	sll	v1,v0,0x2
  499190:	8fc2000c 	lw	v0,12(s8)
  499194:	00000000 	nop
  499198:	00621021 	addu	v0,v1,v0
  49919c:	24420400 	addiu	v0,v0,1024
  4991a0:	8c830000 	lw	v1,0(a0)
  4991a4:	8c420000 	lw	v0,0(v0)
  4991a8:	00000000 	nop
  4991ac:	00622021 	addu	a0,v1,v0
  4991b0:	8fc20014 	lw	v0,20(s8)
  4991b4:	00000000 	nop
  4991b8:	00021202 	srl	v0,v0,0x8
  4991bc:	304200ff 	andi	v0,v0,0xff
  4991c0:	00021880 	sll	v1,v0,0x2
  4991c4:	8fc2000c 	lw	v0,12(s8)
  4991c8:	00000000 	nop
  4991cc:	00621021 	addu	v0,v1,v0
  4991d0:	24420800 	addiu	v0,v0,2048
  4991d4:	8c420000 	lw	v0,0(v0)
  4991d8:	00000000 	nop
  4991dc:	00822026 	xor	a0,a0,v0
  4991e0:	8fc20014 	lw	v0,20(s8)
  4991e4:	00000000 	nop
  4991e8:	304200ff 	andi	v0,v0,0xff
  4991ec:	00021880 	sll	v1,v0,0x2
  4991f0:	8fc2000c 	lw	v0,12(s8)
  4991f4:	00000000 	nop
  4991f8:	00621021 	addu	v0,v1,v0
  4991fc:	24420c00 	addiu	v0,v0,3072
  499200:	8c420000 	lw	v0,0(v0)
  499204:	00000000 	nop
  499208:	00821821 	addu	v1,a0,v0
  49920c:	8fc20010 	lw	v0,16(s8)
  499210:	00000000 	nop
  499214:	00431026 	xor	v0,v0,v1
  499218:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 9]);
  49921c:	8fc20008 	lw	v0,8(s8)
  499220:	00000000 	nop
  499224:	24420024 	addiu	v0,v0,36
  499228:	8c430000 	lw	v1,0(v0)
  49922c:	8fc20014 	lw	v0,20(s8)
  499230:	00000000 	nop
  499234:	00431026 	xor	v0,v0,v1
  499238:	afc20014 	sw	v0,20(s8)
  49923c:	8fc20010 	lw	v0,16(s8)
  499240:	00000000 	nop
  499244:	00021602 	srl	v0,v0,0x18
  499248:	304200ff 	andi	v0,v0,0xff
  49924c:	00021880 	sll	v1,v0,0x2
  499250:	8fc2000c 	lw	v0,12(s8)
  499254:	00000000 	nop
  499258:	00622021 	addu	a0,v1,v0
  49925c:	8fc20010 	lw	v0,16(s8)
  499260:	00000000 	nop
  499264:	00021402 	srl	v0,v0,0x10
  499268:	304200ff 	andi	v0,v0,0xff
  49926c:	00021880 	sll	v1,v0,0x2
  499270:	8fc2000c 	lw	v0,12(s8)
  499274:	00000000 	nop
  499278:	00621021 	addu	v0,v1,v0
  49927c:	24420400 	addiu	v0,v0,1024
  499280:	8c830000 	lw	v1,0(a0)
  499284:	8c420000 	lw	v0,0(v0)
  499288:	00000000 	nop
  49928c:	00622021 	addu	a0,v1,v0
  499290:	8fc20010 	lw	v0,16(s8)
  499294:	00000000 	nop
  499298:	00021202 	srl	v0,v0,0x8
  49929c:	304200ff 	andi	v0,v0,0xff
  4992a0:	00021880 	sll	v1,v0,0x2
  4992a4:	8fc2000c 	lw	v0,12(s8)
  4992a8:	00000000 	nop
  4992ac:	00621021 	addu	v0,v1,v0
  4992b0:	24420800 	addiu	v0,v0,2048
  4992b4:	8c420000 	lw	v0,0(v0)
  4992b8:	00000000 	nop
  4992bc:	00822026 	xor	a0,a0,v0
  4992c0:	8fc20010 	lw	v0,16(s8)
  4992c4:	00000000 	nop
  4992c8:	304200ff 	andi	v0,v0,0xff
  4992cc:	00021880 	sll	v1,v0,0x2
  4992d0:	8fc2000c 	lw	v0,12(s8)
  4992d4:	00000000 	nop
  4992d8:	00621021 	addu	v0,v1,v0
  4992dc:	24420c00 	addiu	v0,v0,3072
  4992e0:	8c420000 	lw	v0,0(v0)
  4992e4:	00000000 	nop
  4992e8:	00821821 	addu	v1,a0,v0
  4992ec:	8fc20014 	lw	v0,20(s8)
  4992f0:	00000000 	nop
  4992f4:	00431026 	xor	v0,v0,v1
  4992f8:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[10]);
  4992fc:	8fc20008 	lw	v0,8(s8)
  499300:	00000000 	nop
  499304:	24420028 	addiu	v0,v0,40
  499308:	8c430000 	lw	v1,0(v0)
  49930c:	8fc20010 	lw	v0,16(s8)
  499310:	00000000 	nop
  499314:	00431026 	xor	v0,v0,v1
  499318:	afc20010 	sw	v0,16(s8)
  49931c:	8fc20014 	lw	v0,20(s8)
  499320:	00000000 	nop
  499324:	00021602 	srl	v0,v0,0x18
  499328:	304200ff 	andi	v0,v0,0xff
  49932c:	00021880 	sll	v1,v0,0x2
  499330:	8fc2000c 	lw	v0,12(s8)
  499334:	00000000 	nop
  499338:	00622021 	addu	a0,v1,v0
  49933c:	8fc20014 	lw	v0,20(s8)
  499340:	00000000 	nop
  499344:	00021402 	srl	v0,v0,0x10
  499348:	304200ff 	andi	v0,v0,0xff
  49934c:	00021880 	sll	v1,v0,0x2
  499350:	8fc2000c 	lw	v0,12(s8)
  499354:	00000000 	nop
  499358:	00621021 	addu	v0,v1,v0
  49935c:	24420400 	addiu	v0,v0,1024
  499360:	8c830000 	lw	v1,0(a0)
  499364:	8c420000 	lw	v0,0(v0)
  499368:	00000000 	nop
  49936c:	00622021 	addu	a0,v1,v0
  499370:	8fc20014 	lw	v0,20(s8)
  499374:	00000000 	nop
  499378:	00021202 	srl	v0,v0,0x8
  49937c:	304200ff 	andi	v0,v0,0xff
  499380:	00021880 	sll	v1,v0,0x2
  499384:	8fc2000c 	lw	v0,12(s8)
  499388:	00000000 	nop
  49938c:	00621021 	addu	v0,v1,v0
  499390:	24420800 	addiu	v0,v0,2048
  499394:	8c420000 	lw	v0,0(v0)
  499398:	00000000 	nop
  49939c:	00822026 	xor	a0,a0,v0
  4993a0:	8fc20014 	lw	v0,20(s8)
  4993a4:	00000000 	nop
  4993a8:	304200ff 	andi	v0,v0,0xff
  4993ac:	00021880 	sll	v1,v0,0x2
  4993b0:	8fc2000c 	lw	v0,12(s8)
  4993b4:	00000000 	nop
  4993b8:	00621021 	addu	v0,v1,v0
  4993bc:	24420c00 	addiu	v0,v0,3072
  4993c0:	8c420000 	lw	v0,0(v0)
  4993c4:	00000000 	nop
  4993c8:	00821821 	addu	v1,a0,v0
  4993cc:	8fc20010 	lw	v0,16(s8)
  4993d0:	00000000 	nop
  4993d4:	00431026 	xor	v0,v0,v1
  4993d8:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[11]);
  4993dc:	8fc20008 	lw	v0,8(s8)
  4993e0:	00000000 	nop
  4993e4:	2442002c 	addiu	v0,v0,44
  4993e8:	8c430000 	lw	v1,0(v0)
  4993ec:	8fc20014 	lw	v0,20(s8)
  4993f0:	00000000 	nop
  4993f4:	00431026 	xor	v0,v0,v1
  4993f8:	afc20014 	sw	v0,20(s8)
  4993fc:	8fc20010 	lw	v0,16(s8)
  499400:	00000000 	nop
  499404:	00021602 	srl	v0,v0,0x18
  499408:	304200ff 	andi	v0,v0,0xff
  49940c:	00021880 	sll	v1,v0,0x2
  499410:	8fc2000c 	lw	v0,12(s8)
  499414:	00000000 	nop
  499418:	00622021 	addu	a0,v1,v0
  49941c:	8fc20010 	lw	v0,16(s8)
  499420:	00000000 	nop
  499424:	00021402 	srl	v0,v0,0x10
  499428:	304200ff 	andi	v0,v0,0xff
  49942c:	00021880 	sll	v1,v0,0x2
  499430:	8fc2000c 	lw	v0,12(s8)
  499434:	00000000 	nop
  499438:	00621021 	addu	v0,v1,v0
  49943c:	24420400 	addiu	v0,v0,1024
  499440:	8c830000 	lw	v1,0(a0)
  499444:	8c420000 	lw	v0,0(v0)
  499448:	00000000 	nop
  49944c:	00622021 	addu	a0,v1,v0
  499450:	8fc20010 	lw	v0,16(s8)
  499454:	00000000 	nop
  499458:	00021202 	srl	v0,v0,0x8
  49945c:	304200ff 	andi	v0,v0,0xff
  499460:	00021880 	sll	v1,v0,0x2
  499464:	8fc2000c 	lw	v0,12(s8)
  499468:	00000000 	nop
  49946c:	00621021 	addu	v0,v1,v0
  499470:	24420800 	addiu	v0,v0,2048
  499474:	8c420000 	lw	v0,0(v0)
  499478:	00000000 	nop
  49947c:	00822026 	xor	a0,a0,v0
  499480:	8fc20010 	lw	v0,16(s8)
  499484:	00000000 	nop
  499488:	304200ff 	andi	v0,v0,0xff
  49948c:	00021880 	sll	v1,v0,0x2
  499490:	8fc2000c 	lw	v0,12(s8)
  499494:	00000000 	nop
  499498:	00621021 	addu	v0,v1,v0
  49949c:	24420c00 	addiu	v0,v0,3072
  4994a0:	8c420000 	lw	v0,0(v0)
  4994a4:	00000000 	nop
  4994a8:	00821821 	addu	v1,a0,v0
  4994ac:	8fc20014 	lw	v0,20(s8)
  4994b0:	00000000 	nop
  4994b4:	00431026 	xor	v0,v0,v1
  4994b8:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[12]);
  4994bc:	8fc20008 	lw	v0,8(s8)
  4994c0:	00000000 	nop
  4994c4:	24420030 	addiu	v0,v0,48
  4994c8:	8c430000 	lw	v1,0(v0)
  4994cc:	8fc20010 	lw	v0,16(s8)
  4994d0:	00000000 	nop
  4994d4:	00431026 	xor	v0,v0,v1
  4994d8:	afc20010 	sw	v0,16(s8)
  4994dc:	8fc20014 	lw	v0,20(s8)
  4994e0:	00000000 	nop
  4994e4:	00021602 	srl	v0,v0,0x18
  4994e8:	304200ff 	andi	v0,v0,0xff
  4994ec:	00021880 	sll	v1,v0,0x2
  4994f0:	8fc2000c 	lw	v0,12(s8)
  4994f4:	00000000 	nop
  4994f8:	00622021 	addu	a0,v1,v0
  4994fc:	8fc20014 	lw	v0,20(s8)
  499500:	00000000 	nop
  499504:	00021402 	srl	v0,v0,0x10
  499508:	304200ff 	andi	v0,v0,0xff
  49950c:	00021880 	sll	v1,v0,0x2
  499510:	8fc2000c 	lw	v0,12(s8)
  499514:	00000000 	nop
  499518:	00621021 	addu	v0,v1,v0
  49951c:	24420400 	addiu	v0,v0,1024
  499520:	8c830000 	lw	v1,0(a0)
  499524:	8c420000 	lw	v0,0(v0)
  499528:	00000000 	nop
  49952c:	00622021 	addu	a0,v1,v0
  499530:	8fc20014 	lw	v0,20(s8)
  499534:	00000000 	nop
  499538:	00021202 	srl	v0,v0,0x8
  49953c:	304200ff 	andi	v0,v0,0xff
  499540:	00021880 	sll	v1,v0,0x2
  499544:	8fc2000c 	lw	v0,12(s8)
  499548:	00000000 	nop
  49954c:	00621021 	addu	v0,v1,v0
  499550:	24420800 	addiu	v0,v0,2048
  499554:	8c420000 	lw	v0,0(v0)
  499558:	00000000 	nop
  49955c:	00822026 	xor	a0,a0,v0
  499560:	8fc20014 	lw	v0,20(s8)
  499564:	00000000 	nop
  499568:	304200ff 	andi	v0,v0,0xff
  49956c:	00021880 	sll	v1,v0,0x2
  499570:	8fc2000c 	lw	v0,12(s8)
  499574:	00000000 	nop
  499578:	00621021 	addu	v0,v1,v0
  49957c:	24420c00 	addiu	v0,v0,3072
  499580:	8c420000 	lw	v0,0(v0)
  499584:	00000000 	nop
  499588:	00821821 	addu	v1,a0,v0
  49958c:	8fc20010 	lw	v0,16(s8)
  499590:	00000000 	nop
  499594:	00431026 	xor	v0,v0,v1
  499598:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[13]);
  49959c:	8fc20008 	lw	v0,8(s8)
  4995a0:	00000000 	nop
  4995a4:	24420034 	addiu	v0,v0,52
  4995a8:	8c430000 	lw	v1,0(v0)
  4995ac:	8fc20014 	lw	v0,20(s8)
  4995b0:	00000000 	nop
  4995b4:	00431026 	xor	v0,v0,v1
  4995b8:	afc20014 	sw	v0,20(s8)
  4995bc:	8fc20010 	lw	v0,16(s8)
  4995c0:	00000000 	nop
  4995c4:	00021602 	srl	v0,v0,0x18
  4995c8:	304200ff 	andi	v0,v0,0xff
  4995cc:	00021880 	sll	v1,v0,0x2
  4995d0:	8fc2000c 	lw	v0,12(s8)
  4995d4:	00000000 	nop
  4995d8:	00622021 	addu	a0,v1,v0
  4995dc:	8fc20010 	lw	v0,16(s8)
  4995e0:	00000000 	nop
  4995e4:	00021402 	srl	v0,v0,0x10
  4995e8:	304200ff 	andi	v0,v0,0xff
  4995ec:	00021880 	sll	v1,v0,0x2
  4995f0:	8fc2000c 	lw	v0,12(s8)
  4995f4:	00000000 	nop
  4995f8:	00621021 	addu	v0,v1,v0
  4995fc:	24420400 	addiu	v0,v0,1024
  499600:	8c830000 	lw	v1,0(a0)
  499604:	8c420000 	lw	v0,0(v0)
  499608:	00000000 	nop
  49960c:	00622021 	addu	a0,v1,v0
  499610:	8fc20010 	lw	v0,16(s8)
  499614:	00000000 	nop
  499618:	00021202 	srl	v0,v0,0x8
  49961c:	304200ff 	andi	v0,v0,0xff
  499620:	00021880 	sll	v1,v0,0x2
  499624:	8fc2000c 	lw	v0,12(s8)
  499628:	00000000 	nop
  49962c:	00621021 	addu	v0,v1,v0
  499630:	24420800 	addiu	v0,v0,2048
  499634:	8c420000 	lw	v0,0(v0)
  499638:	00000000 	nop
  49963c:	00822026 	xor	a0,a0,v0
  499640:	8fc20010 	lw	v0,16(s8)
  499644:	00000000 	nop
  499648:	304200ff 	andi	v0,v0,0xff
  49964c:	00021880 	sll	v1,v0,0x2
  499650:	8fc2000c 	lw	v0,12(s8)
  499654:	00000000 	nop
  499658:	00621021 	addu	v0,v1,v0
  49965c:	24420c00 	addiu	v0,v0,3072
  499660:	8c420000 	lw	v0,0(v0)
  499664:	00000000 	nop
  499668:	00821821 	addu	v1,a0,v0
  49966c:	8fc20014 	lw	v0,20(s8)
  499670:	00000000 	nop
  499674:	00431026 	xor	v0,v0,v1
  499678:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[14]);
  49967c:	8fc20008 	lw	v0,8(s8)
  499680:	00000000 	nop
  499684:	24420038 	addiu	v0,v0,56
  499688:	8c430000 	lw	v1,0(v0)
  49968c:	8fc20010 	lw	v0,16(s8)
  499690:	00000000 	nop
  499694:	00431026 	xor	v0,v0,v1
  499698:	afc20010 	sw	v0,16(s8)
  49969c:	8fc20014 	lw	v0,20(s8)
  4996a0:	00000000 	nop
  4996a4:	00021602 	srl	v0,v0,0x18
  4996a8:	304200ff 	andi	v0,v0,0xff
  4996ac:	00021880 	sll	v1,v0,0x2
  4996b0:	8fc2000c 	lw	v0,12(s8)
  4996b4:	00000000 	nop
  4996b8:	00622021 	addu	a0,v1,v0
  4996bc:	8fc20014 	lw	v0,20(s8)
  4996c0:	00000000 	nop
  4996c4:	00021402 	srl	v0,v0,0x10
  4996c8:	304200ff 	andi	v0,v0,0xff
  4996cc:	00021880 	sll	v1,v0,0x2
  4996d0:	8fc2000c 	lw	v0,12(s8)
  4996d4:	00000000 	nop
  4996d8:	00621021 	addu	v0,v1,v0
  4996dc:	24420400 	addiu	v0,v0,1024
  4996e0:	8c830000 	lw	v1,0(a0)
  4996e4:	8c420000 	lw	v0,0(v0)
  4996e8:	00000000 	nop
  4996ec:	00622021 	addu	a0,v1,v0
  4996f0:	8fc20014 	lw	v0,20(s8)
  4996f4:	00000000 	nop
  4996f8:	00021202 	srl	v0,v0,0x8
  4996fc:	304200ff 	andi	v0,v0,0xff
  499700:	00021880 	sll	v1,v0,0x2
  499704:	8fc2000c 	lw	v0,12(s8)
  499708:	00000000 	nop
  49970c:	00621021 	addu	v0,v1,v0
  499710:	24420800 	addiu	v0,v0,2048
  499714:	8c420000 	lw	v0,0(v0)
  499718:	00000000 	nop
  49971c:	00822026 	xor	a0,a0,v0
  499720:	8fc20014 	lw	v0,20(s8)
  499724:	00000000 	nop
  499728:	304200ff 	andi	v0,v0,0xff
  49972c:	00021880 	sll	v1,v0,0x2
  499730:	8fc2000c 	lw	v0,12(s8)
  499734:	00000000 	nop
  499738:	00621021 	addu	v0,v1,v0
  49973c:	24420c00 	addiu	v0,v0,3072
  499740:	8c420000 	lw	v0,0(v0)
  499744:	00000000 	nop
  499748:	00821821 	addu	v1,a0,v0
  49974c:	8fc20010 	lw	v0,16(s8)
  499750:	00000000 	nop
  499754:	00431026 	xor	v0,v0,v1
  499758:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[15]);
  49975c:	8fc20008 	lw	v0,8(s8)
  499760:	00000000 	nop
  499764:	2442003c 	addiu	v0,v0,60
  499768:	8c430000 	lw	v1,0(v0)
  49976c:	8fc20014 	lw	v0,20(s8)
  499770:	00000000 	nop
  499774:	00431026 	xor	v0,v0,v1
  499778:	afc20014 	sw	v0,20(s8)
  49977c:	8fc20010 	lw	v0,16(s8)
  499780:	00000000 	nop
  499784:	00021602 	srl	v0,v0,0x18
  499788:	304200ff 	andi	v0,v0,0xff
  49978c:	00021880 	sll	v1,v0,0x2
  499790:	8fc2000c 	lw	v0,12(s8)
  499794:	00000000 	nop
  499798:	00622021 	addu	a0,v1,v0
  49979c:	8fc20010 	lw	v0,16(s8)
  4997a0:	00000000 	nop
  4997a4:	00021402 	srl	v0,v0,0x10
  4997a8:	304200ff 	andi	v0,v0,0xff
  4997ac:	00021880 	sll	v1,v0,0x2
  4997b0:	8fc2000c 	lw	v0,12(s8)
  4997b4:	00000000 	nop
  4997b8:	00621021 	addu	v0,v1,v0
  4997bc:	24420400 	addiu	v0,v0,1024
  4997c0:	8c830000 	lw	v1,0(a0)
  4997c4:	8c420000 	lw	v0,0(v0)
  4997c8:	00000000 	nop
  4997cc:	00622021 	addu	a0,v1,v0
  4997d0:	8fc20010 	lw	v0,16(s8)
  4997d4:	00000000 	nop
  4997d8:	00021202 	srl	v0,v0,0x8
  4997dc:	304200ff 	andi	v0,v0,0xff
  4997e0:	00021880 	sll	v1,v0,0x2
  4997e4:	8fc2000c 	lw	v0,12(s8)
  4997e8:	00000000 	nop
  4997ec:	00621021 	addu	v0,v1,v0
  4997f0:	24420800 	addiu	v0,v0,2048
  4997f4:	8c420000 	lw	v0,0(v0)
  4997f8:	00000000 	nop
  4997fc:	00822026 	xor	a0,a0,v0
  499800:	8fc20010 	lw	v0,16(s8)
  499804:	00000000 	nop
  499808:	304200ff 	andi	v0,v0,0xff
  49980c:	00021880 	sll	v1,v0,0x2
  499810:	8fc2000c 	lw	v0,12(s8)
  499814:	00000000 	nop
  499818:	00621021 	addu	v0,v1,v0
  49981c:	24420c00 	addiu	v0,v0,3072
  499820:	8c420000 	lw	v0,0(v0)
  499824:	00000000 	nop
  499828:	00821821 	addu	v1,a0,v0
  49982c:	8fc20014 	lw	v0,20(s8)
  499830:	00000000 	nop
  499834:	00431026 	xor	v0,v0,v1
  499838:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[16]);
  49983c:	8fc20008 	lw	v0,8(s8)
  499840:	00000000 	nop
  499844:	24420040 	addiu	v0,v0,64
  499848:	8c430000 	lw	v1,0(v0)
  49984c:	8fc20010 	lw	v0,16(s8)
  499850:	00000000 	nop
  499854:	00431026 	xor	v0,v0,v1
  499858:	afc20010 	sw	v0,16(s8)
  49985c:	8fc20014 	lw	v0,20(s8)
  499860:	00000000 	nop
  499864:	00021602 	srl	v0,v0,0x18
  499868:	304200ff 	andi	v0,v0,0xff
  49986c:	00021880 	sll	v1,v0,0x2
  499870:	8fc2000c 	lw	v0,12(s8)
  499874:	00000000 	nop
  499878:	00622021 	addu	a0,v1,v0
  49987c:	8fc20014 	lw	v0,20(s8)
  499880:	00000000 	nop
  499884:	00021402 	srl	v0,v0,0x10
  499888:	304200ff 	andi	v0,v0,0xff
  49988c:	00021880 	sll	v1,v0,0x2
  499890:	8fc2000c 	lw	v0,12(s8)
  499894:	00000000 	nop
  499898:	00621021 	addu	v0,v1,v0
  49989c:	24420400 	addiu	v0,v0,1024
  4998a0:	8c830000 	lw	v1,0(a0)
  4998a4:	8c420000 	lw	v0,0(v0)
  4998a8:	00000000 	nop
  4998ac:	00622021 	addu	a0,v1,v0
  4998b0:	8fc20014 	lw	v0,20(s8)
  4998b4:	00000000 	nop
  4998b8:	00021202 	srl	v0,v0,0x8
  4998bc:	304200ff 	andi	v0,v0,0xff
  4998c0:	00021880 	sll	v1,v0,0x2
  4998c4:	8fc2000c 	lw	v0,12(s8)
  4998c8:	00000000 	nop
  4998cc:	00621021 	addu	v0,v1,v0
  4998d0:	24420800 	addiu	v0,v0,2048
  4998d4:	8c420000 	lw	v0,0(v0)
  4998d8:	00000000 	nop
  4998dc:	00822026 	xor	a0,a0,v0
  4998e0:	8fc20014 	lw	v0,20(s8)
  4998e4:	00000000 	nop
  4998e8:	304200ff 	andi	v0,v0,0xff
  4998ec:	00021880 	sll	v1,v0,0x2
  4998f0:	8fc2000c 	lw	v0,12(s8)
  4998f4:	00000000 	nop
  4998f8:	00621021 	addu	v0,v1,v0
  4998fc:	24420c00 	addiu	v0,v0,3072
  499900:	8c420000 	lw	v0,0(v0)
  499904:	00000000 	nop
  499908:	00821821 	addu	v1,a0,v0
  49990c:	8fc20010 	lw	v0,16(s8)
  499910:	00000000 	nop
  499914:	00431026 	xor	v0,v0,v1
  499918:	afc20010 	sw	v0,16(s8)
#if BF_ROUNDS == 20
	BF_ENC(r,l,s,p[17]);
	BF_ENC(l,r,s,p[18]);
	BF_ENC(r,l,s,p[19]);
	BF_ENC(l,r,s,p[20]);
#endif
	r^=p[BF_ROUNDS+1];
  49991c:	8fc20008 	lw	v0,8(s8)
  499920:	00000000 	nop
  499924:	24420044 	addiu	v0,v0,68
  499928:	8c430000 	lw	v1,0(v0)
  49992c:	8fc20014 	lw	v0,20(s8)
  499930:	00000000 	nop
  499934:	00431026 	xor	v0,v0,v1
  499938:	afc20014 	sw	v0,20(s8)

	data[1]=l&0xffffffffL;
  49993c:	8fc20020 	lw	v0,32(s8)
  499940:	00000000 	nop
  499944:	24430004 	addiu	v1,v0,4
  499948:	8fc20010 	lw	v0,16(s8)
  49994c:	00000000 	nop
  499950:	ac620000 	sw	v0,0(v1)
	data[0]=r&0xffffffffL;
  499954:	8fc30014 	lw	v1,20(s8)
  499958:	8fc20020 	lw	v0,32(s8)
  49995c:	00000000 	nop
  499960:	ac430000 	sw	v1,0(v0)
#else
	BF_LONG l,r,t,*k;

	l=data[0];
	r=data[1];
	k=(BF_LONG*)key;

	l^=k[0];
	BF_ENC(r,l,k, 1);
	BF_ENC(l,r,k, 2);
	BF_ENC(r,l,k, 3);
	BF_ENC(l,r,k, 4);
	BF_ENC(r,l,k, 5);
	BF_ENC(l,r,k, 6);
	BF_ENC(r,l,k, 7);
	BF_ENC(l,r,k, 8);
	BF_ENC(r,l,k, 9);
	BF_ENC(l,r,k,10);
	BF_ENC(r,l,k,11);
	BF_ENC(l,r,k,12);
	BF_ENC(r,l,k,13);
	BF_ENC(l,r,k,14);
	BF_ENC(r,l,k,15);
	BF_ENC(l,r,k,16);
#if BF_ROUNDS == 20
	BF_ENC(r,l,k,17);
	BF_ENC(l,r,k,18);
	BF_ENC(r,l,k,19);
	BF_ENC(l,r,k,20);
#endif
	r^=k[BF_ROUNDS+1];

	data[1]=l&0xffffffffL;
	data[0]=r&0xffffffffL;
#endif
	}
  499964:	03c0e821 	move	sp,s8
  499968:	8fbe001c 	lw	s8,28(sp)
  49996c:	27bd0020 	addiu	sp,sp,32
  499970:	03e00008 	jr	ra
  499974:	00000000 	nop

00499978 <BF_decrypt>:
  499978:	3c1c0fb7 	lui	gp,0xfb7
  49997c:	279c2ff8 	addiu	gp,gp,12280
  499980:	0399e021 	addu	gp,gp,t9
  499984:	27bdffe0 	addiu	sp,sp,-32
  499988:	afbc0000 	sw	gp,0(sp)
  49998c:	afbe001c 	sw	s8,28(sp)
  499990:	afbc0018 	sw	gp,24(sp)
  499994:	03a0f021 	move	s8,sp
  499998:	afc40020 	sw	a0,32(s8)
  49999c:	afc50024 	sw	a1,36(s8)

#ifndef BF_DEFAULT_OPTIONS

void BF_decrypt(BF_LONG *data, const BF_KEY *key)
	{
#ifndef BF_PTR2
	const BF_LONG *p,*s;
	BF_LONG l,r;

	p=key->P;
  4999a0:	8fc20024 	lw	v0,36(s8)
  4999a4:	00000000 	nop
  4999a8:	afc20008 	sw	v0,8(s8)
	s= &(key->S[0]);
  4999ac:	8fc20024 	lw	v0,36(s8)
  4999b0:	00000000 	nop
  4999b4:	24420048 	addiu	v0,v0,72
  4999b8:	afc2000c 	sw	v0,12(s8)
	l=data[0];
  4999bc:	8fc20020 	lw	v0,32(s8)
  4999c0:	00000000 	nop
  4999c4:	8c420000 	lw	v0,0(v0)
  4999c8:	00000000 	nop
  4999cc:	afc20010 	sw	v0,16(s8)
	r=data[1];
  4999d0:	8fc20020 	lw	v0,32(s8)
  4999d4:	00000000 	nop
  4999d8:	24420004 	addiu	v0,v0,4
  4999dc:	8c420000 	lw	v0,0(v0)
  4999e0:	00000000 	nop
  4999e4:	afc20014 	sw	v0,20(s8)

	l^=p[BF_ROUNDS+1];
  4999e8:	8fc20008 	lw	v0,8(s8)
  4999ec:	00000000 	nop
  4999f0:	24420044 	addiu	v0,v0,68
  4999f4:	8c430000 	lw	v1,0(v0)
  4999f8:	8fc20010 	lw	v0,16(s8)
  4999fc:	00000000 	nop
  499a00:	00431026 	xor	v0,v0,v1
  499a04:	afc20010 	sw	v0,16(s8)
#if BF_ROUNDS == 20
	BF_ENC(r,l,s,p[20]);
	BF_ENC(l,r,s,p[19]);
	BF_ENC(r,l,s,p[18]);
	BF_ENC(l,r,s,p[17]);
#endif
	BF_ENC(r,l,s,p[16]);
  499a08:	8fc20008 	lw	v0,8(s8)
  499a0c:	00000000 	nop
  499a10:	24420040 	addiu	v0,v0,64
  499a14:	8c430000 	lw	v1,0(v0)
  499a18:	8fc20014 	lw	v0,20(s8)
  499a1c:	00000000 	nop
  499a20:	00431026 	xor	v0,v0,v1
  499a24:	afc20014 	sw	v0,20(s8)
  499a28:	8fc20010 	lw	v0,16(s8)
  499a2c:	00000000 	nop
  499a30:	00021602 	srl	v0,v0,0x18
  499a34:	304200ff 	andi	v0,v0,0xff
  499a38:	00021880 	sll	v1,v0,0x2
  499a3c:	8fc2000c 	lw	v0,12(s8)
  499a40:	00000000 	nop
  499a44:	00622021 	addu	a0,v1,v0
  499a48:	8fc20010 	lw	v0,16(s8)
  499a4c:	00000000 	nop
  499a50:	00021402 	srl	v0,v0,0x10
  499a54:	304200ff 	andi	v0,v0,0xff
  499a58:	00021880 	sll	v1,v0,0x2
  499a5c:	8fc2000c 	lw	v0,12(s8)
  499a60:	00000000 	nop
  499a64:	00621021 	addu	v0,v1,v0
  499a68:	24420400 	addiu	v0,v0,1024
  499a6c:	8c830000 	lw	v1,0(a0)
  499a70:	8c420000 	lw	v0,0(v0)
  499a74:	00000000 	nop
  499a78:	00622021 	addu	a0,v1,v0
  499a7c:	8fc20010 	lw	v0,16(s8)
  499a80:	00000000 	nop
  499a84:	00021202 	srl	v0,v0,0x8
  499a88:	304200ff 	andi	v0,v0,0xff
  499a8c:	00021880 	sll	v1,v0,0x2
  499a90:	8fc2000c 	lw	v0,12(s8)
  499a94:	00000000 	nop
  499a98:	00621021 	addu	v0,v1,v0
  499a9c:	24420800 	addiu	v0,v0,2048
  499aa0:	8c420000 	lw	v0,0(v0)
  499aa4:	00000000 	nop
  499aa8:	00822026 	xor	a0,a0,v0
  499aac:	8fc20010 	lw	v0,16(s8)
  499ab0:	00000000 	nop
  499ab4:	304200ff 	andi	v0,v0,0xff
  499ab8:	00021880 	sll	v1,v0,0x2
  499abc:	8fc2000c 	lw	v0,12(s8)
  499ac0:	00000000 	nop
  499ac4:	00621021 	addu	v0,v1,v0
  499ac8:	24420c00 	addiu	v0,v0,3072
  499acc:	8c420000 	lw	v0,0(v0)
  499ad0:	00000000 	nop
  499ad4:	00821821 	addu	v1,a0,v0
  499ad8:	8fc20014 	lw	v0,20(s8)
  499adc:	00000000 	nop
  499ae0:	00431026 	xor	v0,v0,v1
  499ae4:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[15]);
  499ae8:	8fc20008 	lw	v0,8(s8)
  499aec:	00000000 	nop
  499af0:	2442003c 	addiu	v0,v0,60
  499af4:	8c430000 	lw	v1,0(v0)
  499af8:	8fc20010 	lw	v0,16(s8)
  499afc:	00000000 	nop
  499b00:	00431026 	xor	v0,v0,v1
  499b04:	afc20010 	sw	v0,16(s8)
  499b08:	8fc20014 	lw	v0,20(s8)
  499b0c:	00000000 	nop
  499b10:	00021602 	srl	v0,v0,0x18
  499b14:	304200ff 	andi	v0,v0,0xff
  499b18:	00021880 	sll	v1,v0,0x2
  499b1c:	8fc2000c 	lw	v0,12(s8)
  499b20:	00000000 	nop
  499b24:	00622021 	addu	a0,v1,v0
  499b28:	8fc20014 	lw	v0,20(s8)
  499b2c:	00000000 	nop
  499b30:	00021402 	srl	v0,v0,0x10
  499b34:	304200ff 	andi	v0,v0,0xff
  499b38:	00021880 	sll	v1,v0,0x2
  499b3c:	8fc2000c 	lw	v0,12(s8)
  499b40:	00000000 	nop
  499b44:	00621021 	addu	v0,v1,v0
  499b48:	24420400 	addiu	v0,v0,1024
  499b4c:	8c830000 	lw	v1,0(a0)
  499b50:	8c420000 	lw	v0,0(v0)
  499b54:	00000000 	nop
  499b58:	00622021 	addu	a0,v1,v0
  499b5c:	8fc20014 	lw	v0,20(s8)
  499b60:	00000000 	nop
  499b64:	00021202 	srl	v0,v0,0x8
  499b68:	304200ff 	andi	v0,v0,0xff
  499b6c:	00021880 	sll	v1,v0,0x2
  499b70:	8fc2000c 	lw	v0,12(s8)
  499b74:	00000000 	nop
  499b78:	00621021 	addu	v0,v1,v0
  499b7c:	24420800 	addiu	v0,v0,2048
  499b80:	8c420000 	lw	v0,0(v0)
  499b84:	00000000 	nop
  499b88:	00822026 	xor	a0,a0,v0
  499b8c:	8fc20014 	lw	v0,20(s8)
  499b90:	00000000 	nop
  499b94:	304200ff 	andi	v0,v0,0xff
  499b98:	00021880 	sll	v1,v0,0x2
  499b9c:	8fc2000c 	lw	v0,12(s8)
  499ba0:	00000000 	nop
  499ba4:	00621021 	addu	v0,v1,v0
  499ba8:	24420c00 	addiu	v0,v0,3072
  499bac:	8c420000 	lw	v0,0(v0)
  499bb0:	00000000 	nop
  499bb4:	00821821 	addu	v1,a0,v0
  499bb8:	8fc20010 	lw	v0,16(s8)
  499bbc:	00000000 	nop
  499bc0:	00431026 	xor	v0,v0,v1
  499bc4:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[14]);
  499bc8:	8fc20008 	lw	v0,8(s8)
  499bcc:	00000000 	nop
  499bd0:	24420038 	addiu	v0,v0,56
  499bd4:	8c430000 	lw	v1,0(v0)
  499bd8:	8fc20014 	lw	v0,20(s8)
  499bdc:	00000000 	nop
  499be0:	00431026 	xor	v0,v0,v1
  499be4:	afc20014 	sw	v0,20(s8)
  499be8:	8fc20010 	lw	v0,16(s8)
  499bec:	00000000 	nop
  499bf0:	00021602 	srl	v0,v0,0x18
  499bf4:	304200ff 	andi	v0,v0,0xff
  499bf8:	00021880 	sll	v1,v0,0x2
  499bfc:	8fc2000c 	lw	v0,12(s8)
  499c00:	00000000 	nop
  499c04:	00622021 	addu	a0,v1,v0
  499c08:	8fc20010 	lw	v0,16(s8)
  499c0c:	00000000 	nop
  499c10:	00021402 	srl	v0,v0,0x10
  499c14:	304200ff 	andi	v0,v0,0xff
  499c18:	00021880 	sll	v1,v0,0x2
  499c1c:	8fc2000c 	lw	v0,12(s8)
  499c20:	00000000 	nop
  499c24:	00621021 	addu	v0,v1,v0
  499c28:	24420400 	addiu	v0,v0,1024
  499c2c:	8c830000 	lw	v1,0(a0)
  499c30:	8c420000 	lw	v0,0(v0)
  499c34:	00000000 	nop
  499c38:	00622021 	addu	a0,v1,v0
  499c3c:	8fc20010 	lw	v0,16(s8)
  499c40:	00000000 	nop
  499c44:	00021202 	srl	v0,v0,0x8
  499c48:	304200ff 	andi	v0,v0,0xff
  499c4c:	00021880 	sll	v1,v0,0x2
  499c50:	8fc2000c 	lw	v0,12(s8)
  499c54:	00000000 	nop
  499c58:	00621021 	addu	v0,v1,v0
  499c5c:	24420800 	addiu	v0,v0,2048
  499c60:	8c420000 	lw	v0,0(v0)
  499c64:	00000000 	nop
  499c68:	00822026 	xor	a0,a0,v0
  499c6c:	8fc20010 	lw	v0,16(s8)
  499c70:	00000000 	nop
  499c74:	304200ff 	andi	v0,v0,0xff
  499c78:	00021880 	sll	v1,v0,0x2
  499c7c:	8fc2000c 	lw	v0,12(s8)
  499c80:	00000000 	nop
  499c84:	00621021 	addu	v0,v1,v0
  499c88:	24420c00 	addiu	v0,v0,3072
  499c8c:	8c420000 	lw	v0,0(v0)
  499c90:	00000000 	nop
  499c94:	00821821 	addu	v1,a0,v0
  499c98:	8fc20014 	lw	v0,20(s8)
  499c9c:	00000000 	nop
  499ca0:	00431026 	xor	v0,v0,v1
  499ca4:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[13]);
  499ca8:	8fc20008 	lw	v0,8(s8)
  499cac:	00000000 	nop
  499cb0:	24420034 	addiu	v0,v0,52
  499cb4:	8c430000 	lw	v1,0(v0)
  499cb8:	8fc20010 	lw	v0,16(s8)
  499cbc:	00000000 	nop
  499cc0:	00431026 	xor	v0,v0,v1
  499cc4:	afc20010 	sw	v0,16(s8)
  499cc8:	8fc20014 	lw	v0,20(s8)
  499ccc:	00000000 	nop
  499cd0:	00021602 	srl	v0,v0,0x18
  499cd4:	304200ff 	andi	v0,v0,0xff
  499cd8:	00021880 	sll	v1,v0,0x2
  499cdc:	8fc2000c 	lw	v0,12(s8)
  499ce0:	00000000 	nop
  499ce4:	00622021 	addu	a0,v1,v0
  499ce8:	8fc20014 	lw	v0,20(s8)
  499cec:	00000000 	nop
  499cf0:	00021402 	srl	v0,v0,0x10
  499cf4:	304200ff 	andi	v0,v0,0xff
  499cf8:	00021880 	sll	v1,v0,0x2
  499cfc:	8fc2000c 	lw	v0,12(s8)
  499d00:	00000000 	nop
  499d04:	00621021 	addu	v0,v1,v0
  499d08:	24420400 	addiu	v0,v0,1024
  499d0c:	8c830000 	lw	v1,0(a0)
  499d10:	8c420000 	lw	v0,0(v0)
  499d14:	00000000 	nop
  499d18:	00622021 	addu	a0,v1,v0
  499d1c:	8fc20014 	lw	v0,20(s8)
  499d20:	00000000 	nop
  499d24:	00021202 	srl	v0,v0,0x8
  499d28:	304200ff 	andi	v0,v0,0xff
  499d2c:	00021880 	sll	v1,v0,0x2
  499d30:	8fc2000c 	lw	v0,12(s8)
  499d34:	00000000 	nop
  499d38:	00621021 	addu	v0,v1,v0
  499d3c:	24420800 	addiu	v0,v0,2048
  499d40:	8c420000 	lw	v0,0(v0)
  499d44:	00000000 	nop
  499d48:	00822026 	xor	a0,a0,v0
  499d4c:	8fc20014 	lw	v0,20(s8)
  499d50:	00000000 	nop
  499d54:	304200ff 	andi	v0,v0,0xff
  499d58:	00021880 	sll	v1,v0,0x2
  499d5c:	8fc2000c 	lw	v0,12(s8)
  499d60:	00000000 	nop
  499d64:	00621021 	addu	v0,v1,v0
  499d68:	24420c00 	addiu	v0,v0,3072
  499d6c:	8c420000 	lw	v0,0(v0)
  499d70:	00000000 	nop
  499d74:	00821821 	addu	v1,a0,v0
  499d78:	8fc20010 	lw	v0,16(s8)
  499d7c:	00000000 	nop
  499d80:	00431026 	xor	v0,v0,v1
  499d84:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[12]);
  499d88:	8fc20008 	lw	v0,8(s8)
  499d8c:	00000000 	nop
  499d90:	24420030 	addiu	v0,v0,48
  499d94:	8c430000 	lw	v1,0(v0)
  499d98:	8fc20014 	lw	v0,20(s8)
  499d9c:	00000000 	nop
  499da0:	00431026 	xor	v0,v0,v1
  499da4:	afc20014 	sw	v0,20(s8)
  499da8:	8fc20010 	lw	v0,16(s8)
  499dac:	00000000 	nop
  499db0:	00021602 	srl	v0,v0,0x18
  499db4:	304200ff 	andi	v0,v0,0xff
  499db8:	00021880 	sll	v1,v0,0x2
  499dbc:	8fc2000c 	lw	v0,12(s8)
  499dc0:	00000000 	nop
  499dc4:	00622021 	addu	a0,v1,v0
  499dc8:	8fc20010 	lw	v0,16(s8)
  499dcc:	00000000 	nop
  499dd0:	00021402 	srl	v0,v0,0x10
  499dd4:	304200ff 	andi	v0,v0,0xff
  499dd8:	00021880 	sll	v1,v0,0x2
  499ddc:	8fc2000c 	lw	v0,12(s8)
  499de0:	00000000 	nop
  499de4:	00621021 	addu	v0,v1,v0
  499de8:	24420400 	addiu	v0,v0,1024
  499dec:	8c830000 	lw	v1,0(a0)
  499df0:	8c420000 	lw	v0,0(v0)
  499df4:	00000000 	nop
  499df8:	00622021 	addu	a0,v1,v0
  499dfc:	8fc20010 	lw	v0,16(s8)
  499e00:	00000000 	nop
  499e04:	00021202 	srl	v0,v0,0x8
  499e08:	304200ff 	andi	v0,v0,0xff
  499e0c:	00021880 	sll	v1,v0,0x2
  499e10:	8fc2000c 	lw	v0,12(s8)
  499e14:	00000000 	nop
  499e18:	00621021 	addu	v0,v1,v0
  499e1c:	24420800 	addiu	v0,v0,2048
  499e20:	8c420000 	lw	v0,0(v0)
  499e24:	00000000 	nop
  499e28:	00822026 	xor	a0,a0,v0
  499e2c:	8fc20010 	lw	v0,16(s8)
  499e30:	00000000 	nop
  499e34:	304200ff 	andi	v0,v0,0xff
  499e38:	00021880 	sll	v1,v0,0x2
  499e3c:	8fc2000c 	lw	v0,12(s8)
  499e40:	00000000 	nop
  499e44:	00621021 	addu	v0,v1,v0
  499e48:	24420c00 	addiu	v0,v0,3072
  499e4c:	8c420000 	lw	v0,0(v0)
  499e50:	00000000 	nop
  499e54:	00821821 	addu	v1,a0,v0
  499e58:	8fc20014 	lw	v0,20(s8)
  499e5c:	00000000 	nop
  499e60:	00431026 	xor	v0,v0,v1
  499e64:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[11]);
  499e68:	8fc20008 	lw	v0,8(s8)
  499e6c:	00000000 	nop
  499e70:	2442002c 	addiu	v0,v0,44
  499e74:	8c430000 	lw	v1,0(v0)
  499e78:	8fc20010 	lw	v0,16(s8)
  499e7c:	00000000 	nop
  499e80:	00431026 	xor	v0,v0,v1
  499e84:	afc20010 	sw	v0,16(s8)
  499e88:	8fc20014 	lw	v0,20(s8)
  499e8c:	00000000 	nop
  499e90:	00021602 	srl	v0,v0,0x18
  499e94:	304200ff 	andi	v0,v0,0xff
  499e98:	00021880 	sll	v1,v0,0x2
  499e9c:	8fc2000c 	lw	v0,12(s8)
  499ea0:	00000000 	nop
  499ea4:	00622021 	addu	a0,v1,v0
  499ea8:	8fc20014 	lw	v0,20(s8)
  499eac:	00000000 	nop
  499eb0:	00021402 	srl	v0,v0,0x10
  499eb4:	304200ff 	andi	v0,v0,0xff
  499eb8:	00021880 	sll	v1,v0,0x2
  499ebc:	8fc2000c 	lw	v0,12(s8)
  499ec0:	00000000 	nop
  499ec4:	00621021 	addu	v0,v1,v0
  499ec8:	24420400 	addiu	v0,v0,1024
  499ecc:	8c830000 	lw	v1,0(a0)
  499ed0:	8c420000 	lw	v0,0(v0)
  499ed4:	00000000 	nop
  499ed8:	00622021 	addu	a0,v1,v0
  499edc:	8fc20014 	lw	v0,20(s8)
  499ee0:	00000000 	nop
  499ee4:	00021202 	srl	v0,v0,0x8
  499ee8:	304200ff 	andi	v0,v0,0xff
  499eec:	00021880 	sll	v1,v0,0x2
  499ef0:	8fc2000c 	lw	v0,12(s8)
  499ef4:	00000000 	nop
  499ef8:	00621021 	addu	v0,v1,v0
  499efc:	24420800 	addiu	v0,v0,2048
  499f00:	8c420000 	lw	v0,0(v0)
  499f04:	00000000 	nop
  499f08:	00822026 	xor	a0,a0,v0
  499f0c:	8fc20014 	lw	v0,20(s8)
  499f10:	00000000 	nop
  499f14:	304200ff 	andi	v0,v0,0xff
  499f18:	00021880 	sll	v1,v0,0x2
  499f1c:	8fc2000c 	lw	v0,12(s8)
  499f20:	00000000 	nop
  499f24:	00621021 	addu	v0,v1,v0
  499f28:	24420c00 	addiu	v0,v0,3072
  499f2c:	8c420000 	lw	v0,0(v0)
  499f30:	00000000 	nop
  499f34:	00821821 	addu	v1,a0,v0
  499f38:	8fc20010 	lw	v0,16(s8)
  499f3c:	00000000 	nop
  499f40:	00431026 	xor	v0,v0,v1
  499f44:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[10]);
  499f48:	8fc20008 	lw	v0,8(s8)
  499f4c:	00000000 	nop
  499f50:	24420028 	addiu	v0,v0,40
  499f54:	8c430000 	lw	v1,0(v0)
  499f58:	8fc20014 	lw	v0,20(s8)
  499f5c:	00000000 	nop
  499f60:	00431026 	xor	v0,v0,v1
  499f64:	afc20014 	sw	v0,20(s8)
  499f68:	8fc20010 	lw	v0,16(s8)
  499f6c:	00000000 	nop
  499f70:	00021602 	srl	v0,v0,0x18
  499f74:	304200ff 	andi	v0,v0,0xff
  499f78:	00021880 	sll	v1,v0,0x2
  499f7c:	8fc2000c 	lw	v0,12(s8)
  499f80:	00000000 	nop
  499f84:	00622021 	addu	a0,v1,v0
  499f88:	8fc20010 	lw	v0,16(s8)
  499f8c:	00000000 	nop
  499f90:	00021402 	srl	v0,v0,0x10
  499f94:	304200ff 	andi	v0,v0,0xff
  499f98:	00021880 	sll	v1,v0,0x2
  499f9c:	8fc2000c 	lw	v0,12(s8)
  499fa0:	00000000 	nop
  499fa4:	00621021 	addu	v0,v1,v0
  499fa8:	24420400 	addiu	v0,v0,1024
  499fac:	8c830000 	lw	v1,0(a0)
  499fb0:	8c420000 	lw	v0,0(v0)
  499fb4:	00000000 	nop
  499fb8:	00622021 	addu	a0,v1,v0
  499fbc:	8fc20010 	lw	v0,16(s8)
  499fc0:	00000000 	nop
  499fc4:	00021202 	srl	v0,v0,0x8
  499fc8:	304200ff 	andi	v0,v0,0xff
  499fcc:	00021880 	sll	v1,v0,0x2
  499fd0:	8fc2000c 	lw	v0,12(s8)
  499fd4:	00000000 	nop
  499fd8:	00621021 	addu	v0,v1,v0
  499fdc:	24420800 	addiu	v0,v0,2048
  499fe0:	8c420000 	lw	v0,0(v0)
  499fe4:	00000000 	nop
  499fe8:	00822026 	xor	a0,a0,v0
  499fec:	8fc20010 	lw	v0,16(s8)
  499ff0:	00000000 	nop
  499ff4:	304200ff 	andi	v0,v0,0xff
  499ff8:	00021880 	sll	v1,v0,0x2
  499ffc:	8fc2000c 	lw	v0,12(s8)
  49a000:	00000000 	nop
  49a004:	00621021 	addu	v0,v1,v0
  49a008:	24420c00 	addiu	v0,v0,3072
  49a00c:	8c420000 	lw	v0,0(v0)
  49a010:	00000000 	nop
  49a014:	00821821 	addu	v1,a0,v0
  49a018:	8fc20014 	lw	v0,20(s8)
  49a01c:	00000000 	nop
  49a020:	00431026 	xor	v0,v0,v1
  49a024:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 9]);
  49a028:	8fc20008 	lw	v0,8(s8)
  49a02c:	00000000 	nop
  49a030:	24420024 	addiu	v0,v0,36
  49a034:	8c430000 	lw	v1,0(v0)
  49a038:	8fc20010 	lw	v0,16(s8)
  49a03c:	00000000 	nop
  49a040:	00431026 	xor	v0,v0,v1
  49a044:	afc20010 	sw	v0,16(s8)
  49a048:	8fc20014 	lw	v0,20(s8)
  49a04c:	00000000 	nop
  49a050:	00021602 	srl	v0,v0,0x18
  49a054:	304200ff 	andi	v0,v0,0xff
  49a058:	00021880 	sll	v1,v0,0x2
  49a05c:	8fc2000c 	lw	v0,12(s8)
  49a060:	00000000 	nop
  49a064:	00622021 	addu	a0,v1,v0
  49a068:	8fc20014 	lw	v0,20(s8)
  49a06c:	00000000 	nop
  49a070:	00021402 	srl	v0,v0,0x10
  49a074:	304200ff 	andi	v0,v0,0xff
  49a078:	00021880 	sll	v1,v0,0x2
  49a07c:	8fc2000c 	lw	v0,12(s8)
  49a080:	00000000 	nop
  49a084:	00621021 	addu	v0,v1,v0
  49a088:	24420400 	addiu	v0,v0,1024
  49a08c:	8c830000 	lw	v1,0(a0)
  49a090:	8c420000 	lw	v0,0(v0)
  49a094:	00000000 	nop
  49a098:	00622021 	addu	a0,v1,v0
  49a09c:	8fc20014 	lw	v0,20(s8)
  49a0a0:	00000000 	nop
  49a0a4:	00021202 	srl	v0,v0,0x8
  49a0a8:	304200ff 	andi	v0,v0,0xff
  49a0ac:	00021880 	sll	v1,v0,0x2
  49a0b0:	8fc2000c 	lw	v0,12(s8)
  49a0b4:	00000000 	nop
  49a0b8:	00621021 	addu	v0,v1,v0
  49a0bc:	24420800 	addiu	v0,v0,2048
  49a0c0:	8c420000 	lw	v0,0(v0)
  49a0c4:	00000000 	nop
  49a0c8:	00822026 	xor	a0,a0,v0
  49a0cc:	8fc20014 	lw	v0,20(s8)
  49a0d0:	00000000 	nop
  49a0d4:	304200ff 	andi	v0,v0,0xff
  49a0d8:	00021880 	sll	v1,v0,0x2
  49a0dc:	8fc2000c 	lw	v0,12(s8)
  49a0e0:	00000000 	nop
  49a0e4:	00621021 	addu	v0,v1,v0
  49a0e8:	24420c00 	addiu	v0,v0,3072
  49a0ec:	8c420000 	lw	v0,0(v0)
  49a0f0:	00000000 	nop
  49a0f4:	00821821 	addu	v1,a0,v0
  49a0f8:	8fc20010 	lw	v0,16(s8)
  49a0fc:	00000000 	nop
  49a100:	00431026 	xor	v0,v0,v1
  49a104:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 8]);
  49a108:	8fc20008 	lw	v0,8(s8)
  49a10c:	00000000 	nop
  49a110:	24420020 	addiu	v0,v0,32
  49a114:	8c430000 	lw	v1,0(v0)
  49a118:	8fc20014 	lw	v0,20(s8)
  49a11c:	00000000 	nop
  49a120:	00431026 	xor	v0,v0,v1
  49a124:	afc20014 	sw	v0,20(s8)
  49a128:	8fc20010 	lw	v0,16(s8)
  49a12c:	00000000 	nop
  49a130:	00021602 	srl	v0,v0,0x18
  49a134:	304200ff 	andi	v0,v0,0xff
  49a138:	00021880 	sll	v1,v0,0x2
  49a13c:	8fc2000c 	lw	v0,12(s8)
  49a140:	00000000 	nop
  49a144:	00622021 	addu	a0,v1,v0
  49a148:	8fc20010 	lw	v0,16(s8)
  49a14c:	00000000 	nop
  49a150:	00021402 	srl	v0,v0,0x10
  49a154:	304200ff 	andi	v0,v0,0xff
  49a158:	00021880 	sll	v1,v0,0x2
  49a15c:	8fc2000c 	lw	v0,12(s8)
  49a160:	00000000 	nop
  49a164:	00621021 	addu	v0,v1,v0
  49a168:	24420400 	addiu	v0,v0,1024
  49a16c:	8c830000 	lw	v1,0(a0)
  49a170:	8c420000 	lw	v0,0(v0)
  49a174:	00000000 	nop
  49a178:	00622021 	addu	a0,v1,v0
  49a17c:	8fc20010 	lw	v0,16(s8)
  49a180:	00000000 	nop
  49a184:	00021202 	srl	v0,v0,0x8
  49a188:	304200ff 	andi	v0,v0,0xff
  49a18c:	00021880 	sll	v1,v0,0x2
  49a190:	8fc2000c 	lw	v0,12(s8)
  49a194:	00000000 	nop
  49a198:	00621021 	addu	v0,v1,v0
  49a19c:	24420800 	addiu	v0,v0,2048
  49a1a0:	8c420000 	lw	v0,0(v0)
  49a1a4:	00000000 	nop
  49a1a8:	00822026 	xor	a0,a0,v0
  49a1ac:	8fc20010 	lw	v0,16(s8)
  49a1b0:	00000000 	nop
  49a1b4:	304200ff 	andi	v0,v0,0xff
  49a1b8:	00021880 	sll	v1,v0,0x2
  49a1bc:	8fc2000c 	lw	v0,12(s8)
  49a1c0:	00000000 	nop
  49a1c4:	00621021 	addu	v0,v1,v0
  49a1c8:	24420c00 	addiu	v0,v0,3072
  49a1cc:	8c420000 	lw	v0,0(v0)
  49a1d0:	00000000 	nop
  49a1d4:	00821821 	addu	v1,a0,v0
  49a1d8:	8fc20014 	lw	v0,20(s8)
  49a1dc:	00000000 	nop
  49a1e0:	00431026 	xor	v0,v0,v1
  49a1e4:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 7]);
  49a1e8:	8fc20008 	lw	v0,8(s8)
  49a1ec:	00000000 	nop
  49a1f0:	2442001c 	addiu	v0,v0,28
  49a1f4:	8c430000 	lw	v1,0(v0)
  49a1f8:	8fc20010 	lw	v0,16(s8)
  49a1fc:	00000000 	nop
  49a200:	00431026 	xor	v0,v0,v1
  49a204:	afc20010 	sw	v0,16(s8)
  49a208:	8fc20014 	lw	v0,20(s8)
  49a20c:	00000000 	nop
  49a210:	00021602 	srl	v0,v0,0x18
  49a214:	304200ff 	andi	v0,v0,0xff
  49a218:	00021880 	sll	v1,v0,0x2
  49a21c:	8fc2000c 	lw	v0,12(s8)
  49a220:	00000000 	nop
  49a224:	00622021 	addu	a0,v1,v0
  49a228:	8fc20014 	lw	v0,20(s8)
  49a22c:	00000000 	nop
  49a230:	00021402 	srl	v0,v0,0x10
  49a234:	304200ff 	andi	v0,v0,0xff
  49a238:	00021880 	sll	v1,v0,0x2
  49a23c:	8fc2000c 	lw	v0,12(s8)
  49a240:	00000000 	nop
  49a244:	00621021 	addu	v0,v1,v0
  49a248:	24420400 	addiu	v0,v0,1024
  49a24c:	8c830000 	lw	v1,0(a0)
  49a250:	8c420000 	lw	v0,0(v0)
  49a254:	00000000 	nop
  49a258:	00622021 	addu	a0,v1,v0
  49a25c:	8fc20014 	lw	v0,20(s8)
  49a260:	00000000 	nop
  49a264:	00021202 	srl	v0,v0,0x8
  49a268:	304200ff 	andi	v0,v0,0xff
  49a26c:	00021880 	sll	v1,v0,0x2
  49a270:	8fc2000c 	lw	v0,12(s8)
  49a274:	00000000 	nop
  49a278:	00621021 	addu	v0,v1,v0
  49a27c:	24420800 	addiu	v0,v0,2048
  49a280:	8c420000 	lw	v0,0(v0)
  49a284:	00000000 	nop
  49a288:	00822026 	xor	a0,a0,v0
  49a28c:	8fc20014 	lw	v0,20(s8)
  49a290:	00000000 	nop
  49a294:	304200ff 	andi	v0,v0,0xff
  49a298:	00021880 	sll	v1,v0,0x2
  49a29c:	8fc2000c 	lw	v0,12(s8)
  49a2a0:	00000000 	nop
  49a2a4:	00621021 	addu	v0,v1,v0
  49a2a8:	24420c00 	addiu	v0,v0,3072
  49a2ac:	8c420000 	lw	v0,0(v0)
  49a2b0:	00000000 	nop
  49a2b4:	00821821 	addu	v1,a0,v0
  49a2b8:	8fc20010 	lw	v0,16(s8)
  49a2bc:	00000000 	nop
  49a2c0:	00431026 	xor	v0,v0,v1
  49a2c4:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 6]);
  49a2c8:	8fc20008 	lw	v0,8(s8)
  49a2cc:	00000000 	nop
  49a2d0:	24420018 	addiu	v0,v0,24
  49a2d4:	8c430000 	lw	v1,0(v0)
  49a2d8:	8fc20014 	lw	v0,20(s8)
  49a2dc:	00000000 	nop
  49a2e0:	00431026 	xor	v0,v0,v1
  49a2e4:	afc20014 	sw	v0,20(s8)
  49a2e8:	8fc20010 	lw	v0,16(s8)
  49a2ec:	00000000 	nop
  49a2f0:	00021602 	srl	v0,v0,0x18
  49a2f4:	304200ff 	andi	v0,v0,0xff
  49a2f8:	00021880 	sll	v1,v0,0x2
  49a2fc:	8fc2000c 	lw	v0,12(s8)
  49a300:	00000000 	nop
  49a304:	00622021 	addu	a0,v1,v0
  49a308:	8fc20010 	lw	v0,16(s8)
  49a30c:	00000000 	nop
  49a310:	00021402 	srl	v0,v0,0x10
  49a314:	304200ff 	andi	v0,v0,0xff
  49a318:	00021880 	sll	v1,v0,0x2
  49a31c:	8fc2000c 	lw	v0,12(s8)
  49a320:	00000000 	nop
  49a324:	00621021 	addu	v0,v1,v0
  49a328:	24420400 	addiu	v0,v0,1024
  49a32c:	8c830000 	lw	v1,0(a0)
  49a330:	8c420000 	lw	v0,0(v0)
  49a334:	00000000 	nop
  49a338:	00622021 	addu	a0,v1,v0
  49a33c:	8fc20010 	lw	v0,16(s8)
  49a340:	00000000 	nop
  49a344:	00021202 	srl	v0,v0,0x8
  49a348:	304200ff 	andi	v0,v0,0xff
  49a34c:	00021880 	sll	v1,v0,0x2
  49a350:	8fc2000c 	lw	v0,12(s8)
  49a354:	00000000 	nop
  49a358:	00621021 	addu	v0,v1,v0
  49a35c:	24420800 	addiu	v0,v0,2048
  49a360:	8c420000 	lw	v0,0(v0)
  49a364:	00000000 	nop
  49a368:	00822026 	xor	a0,a0,v0
  49a36c:	8fc20010 	lw	v0,16(s8)
  49a370:	00000000 	nop
  49a374:	304200ff 	andi	v0,v0,0xff
  49a378:	00021880 	sll	v1,v0,0x2
  49a37c:	8fc2000c 	lw	v0,12(s8)
  49a380:	00000000 	nop
  49a384:	00621021 	addu	v0,v1,v0
  49a388:	24420c00 	addiu	v0,v0,3072
  49a38c:	8c420000 	lw	v0,0(v0)
  49a390:	00000000 	nop
  49a394:	00821821 	addu	v1,a0,v0
  49a398:	8fc20014 	lw	v0,20(s8)
  49a39c:	00000000 	nop
  49a3a0:	00431026 	xor	v0,v0,v1
  49a3a4:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 5]);
  49a3a8:	8fc20008 	lw	v0,8(s8)
  49a3ac:	00000000 	nop
  49a3b0:	24420014 	addiu	v0,v0,20
  49a3b4:	8c430000 	lw	v1,0(v0)
  49a3b8:	8fc20010 	lw	v0,16(s8)
  49a3bc:	00000000 	nop
  49a3c0:	00431026 	xor	v0,v0,v1
  49a3c4:	afc20010 	sw	v0,16(s8)
  49a3c8:	8fc20014 	lw	v0,20(s8)
  49a3cc:	00000000 	nop
  49a3d0:	00021602 	srl	v0,v0,0x18
  49a3d4:	304200ff 	andi	v0,v0,0xff
  49a3d8:	00021880 	sll	v1,v0,0x2
  49a3dc:	8fc2000c 	lw	v0,12(s8)
  49a3e0:	00000000 	nop
  49a3e4:	00622021 	addu	a0,v1,v0
  49a3e8:	8fc20014 	lw	v0,20(s8)
  49a3ec:	00000000 	nop
  49a3f0:	00021402 	srl	v0,v0,0x10
  49a3f4:	304200ff 	andi	v0,v0,0xff
  49a3f8:	00021880 	sll	v1,v0,0x2
  49a3fc:	8fc2000c 	lw	v0,12(s8)
  49a400:	00000000 	nop
  49a404:	00621021 	addu	v0,v1,v0
  49a408:	24420400 	addiu	v0,v0,1024
  49a40c:	8c830000 	lw	v1,0(a0)
  49a410:	8c420000 	lw	v0,0(v0)
  49a414:	00000000 	nop
  49a418:	00622021 	addu	a0,v1,v0
  49a41c:	8fc20014 	lw	v0,20(s8)
  49a420:	00000000 	nop
  49a424:	00021202 	srl	v0,v0,0x8
  49a428:	304200ff 	andi	v0,v0,0xff
  49a42c:	00021880 	sll	v1,v0,0x2
  49a430:	8fc2000c 	lw	v0,12(s8)
  49a434:	00000000 	nop
  49a438:	00621021 	addu	v0,v1,v0
  49a43c:	24420800 	addiu	v0,v0,2048
  49a440:	8c420000 	lw	v0,0(v0)
  49a444:	00000000 	nop
  49a448:	00822026 	xor	a0,a0,v0
  49a44c:	8fc20014 	lw	v0,20(s8)
  49a450:	00000000 	nop
  49a454:	304200ff 	andi	v0,v0,0xff
  49a458:	00021880 	sll	v1,v0,0x2
  49a45c:	8fc2000c 	lw	v0,12(s8)
  49a460:	00000000 	nop
  49a464:	00621021 	addu	v0,v1,v0
  49a468:	24420c00 	addiu	v0,v0,3072
  49a46c:	8c420000 	lw	v0,0(v0)
  49a470:	00000000 	nop
  49a474:	00821821 	addu	v1,a0,v0
  49a478:	8fc20010 	lw	v0,16(s8)
  49a47c:	00000000 	nop
  49a480:	00431026 	xor	v0,v0,v1
  49a484:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 4]);
  49a488:	8fc20008 	lw	v0,8(s8)
  49a48c:	00000000 	nop
  49a490:	24420010 	addiu	v0,v0,16
  49a494:	8c430000 	lw	v1,0(v0)
  49a498:	8fc20014 	lw	v0,20(s8)
  49a49c:	00000000 	nop
  49a4a0:	00431026 	xor	v0,v0,v1
  49a4a4:	afc20014 	sw	v0,20(s8)
  49a4a8:	8fc20010 	lw	v0,16(s8)
  49a4ac:	00000000 	nop
  49a4b0:	00021602 	srl	v0,v0,0x18
  49a4b4:	304200ff 	andi	v0,v0,0xff
  49a4b8:	00021880 	sll	v1,v0,0x2
  49a4bc:	8fc2000c 	lw	v0,12(s8)
  49a4c0:	00000000 	nop
  49a4c4:	00622021 	addu	a0,v1,v0
  49a4c8:	8fc20010 	lw	v0,16(s8)
  49a4cc:	00000000 	nop
  49a4d0:	00021402 	srl	v0,v0,0x10
  49a4d4:	304200ff 	andi	v0,v0,0xff
  49a4d8:	00021880 	sll	v1,v0,0x2
  49a4dc:	8fc2000c 	lw	v0,12(s8)
  49a4e0:	00000000 	nop
  49a4e4:	00621021 	addu	v0,v1,v0
  49a4e8:	24420400 	addiu	v0,v0,1024
  49a4ec:	8c830000 	lw	v1,0(a0)
  49a4f0:	8c420000 	lw	v0,0(v0)
  49a4f4:	00000000 	nop
  49a4f8:	00622021 	addu	a0,v1,v0
  49a4fc:	8fc20010 	lw	v0,16(s8)
  49a500:	00000000 	nop
  49a504:	00021202 	srl	v0,v0,0x8
  49a508:	304200ff 	andi	v0,v0,0xff
  49a50c:	00021880 	sll	v1,v0,0x2
  49a510:	8fc2000c 	lw	v0,12(s8)
  49a514:	00000000 	nop
  49a518:	00621021 	addu	v0,v1,v0
  49a51c:	24420800 	addiu	v0,v0,2048
  49a520:	8c420000 	lw	v0,0(v0)
  49a524:	00000000 	nop
  49a528:	00822026 	xor	a0,a0,v0
  49a52c:	8fc20010 	lw	v0,16(s8)
  49a530:	00000000 	nop
  49a534:	304200ff 	andi	v0,v0,0xff
  49a538:	00021880 	sll	v1,v0,0x2
  49a53c:	8fc2000c 	lw	v0,12(s8)
  49a540:	00000000 	nop
  49a544:	00621021 	addu	v0,v1,v0
  49a548:	24420c00 	addiu	v0,v0,3072
  49a54c:	8c420000 	lw	v0,0(v0)
  49a550:	00000000 	nop
  49a554:	00821821 	addu	v1,a0,v0
  49a558:	8fc20014 	lw	v0,20(s8)
  49a55c:	00000000 	nop
  49a560:	00431026 	xor	v0,v0,v1
  49a564:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 3]);
  49a568:	8fc20008 	lw	v0,8(s8)
  49a56c:	00000000 	nop
  49a570:	2442000c 	addiu	v0,v0,12
  49a574:	8c430000 	lw	v1,0(v0)
  49a578:	8fc20010 	lw	v0,16(s8)
  49a57c:	00000000 	nop
  49a580:	00431026 	xor	v0,v0,v1
  49a584:	afc20010 	sw	v0,16(s8)
  49a588:	8fc20014 	lw	v0,20(s8)
  49a58c:	00000000 	nop
  49a590:	00021602 	srl	v0,v0,0x18
  49a594:	304200ff 	andi	v0,v0,0xff
  49a598:	00021880 	sll	v1,v0,0x2
  49a59c:	8fc2000c 	lw	v0,12(s8)
  49a5a0:	00000000 	nop
  49a5a4:	00622021 	addu	a0,v1,v0
  49a5a8:	8fc20014 	lw	v0,20(s8)
  49a5ac:	00000000 	nop
  49a5b0:	00021402 	srl	v0,v0,0x10
  49a5b4:	304200ff 	andi	v0,v0,0xff
  49a5b8:	00021880 	sll	v1,v0,0x2
  49a5bc:	8fc2000c 	lw	v0,12(s8)
  49a5c0:	00000000 	nop
  49a5c4:	00621021 	addu	v0,v1,v0
  49a5c8:	24420400 	addiu	v0,v0,1024
  49a5cc:	8c830000 	lw	v1,0(a0)
  49a5d0:	8c420000 	lw	v0,0(v0)
  49a5d4:	00000000 	nop
  49a5d8:	00622021 	addu	a0,v1,v0
  49a5dc:	8fc20014 	lw	v0,20(s8)
  49a5e0:	00000000 	nop
  49a5e4:	00021202 	srl	v0,v0,0x8
  49a5e8:	304200ff 	andi	v0,v0,0xff
  49a5ec:	00021880 	sll	v1,v0,0x2
  49a5f0:	8fc2000c 	lw	v0,12(s8)
  49a5f4:	00000000 	nop
  49a5f8:	00621021 	addu	v0,v1,v0
  49a5fc:	24420800 	addiu	v0,v0,2048
  49a600:	8c420000 	lw	v0,0(v0)
  49a604:	00000000 	nop
  49a608:	00822026 	xor	a0,a0,v0
  49a60c:	8fc20014 	lw	v0,20(s8)
  49a610:	00000000 	nop
  49a614:	304200ff 	andi	v0,v0,0xff
  49a618:	00021880 	sll	v1,v0,0x2
  49a61c:	8fc2000c 	lw	v0,12(s8)
  49a620:	00000000 	nop
  49a624:	00621021 	addu	v0,v1,v0
  49a628:	24420c00 	addiu	v0,v0,3072
  49a62c:	8c420000 	lw	v0,0(v0)
  49a630:	00000000 	nop
  49a634:	00821821 	addu	v1,a0,v0
  49a638:	8fc20010 	lw	v0,16(s8)
  49a63c:	00000000 	nop
  49a640:	00431026 	xor	v0,v0,v1
  49a644:	afc20010 	sw	v0,16(s8)
	BF_ENC(r,l,s,p[ 2]);
  49a648:	8fc20008 	lw	v0,8(s8)
  49a64c:	00000000 	nop
  49a650:	24420008 	addiu	v0,v0,8
  49a654:	8c430000 	lw	v1,0(v0)
  49a658:	8fc20014 	lw	v0,20(s8)
  49a65c:	00000000 	nop
  49a660:	00431026 	xor	v0,v0,v1
  49a664:	afc20014 	sw	v0,20(s8)
  49a668:	8fc20010 	lw	v0,16(s8)
  49a66c:	00000000 	nop
  49a670:	00021602 	srl	v0,v0,0x18
  49a674:	304200ff 	andi	v0,v0,0xff
  49a678:	00021880 	sll	v1,v0,0x2
  49a67c:	8fc2000c 	lw	v0,12(s8)
  49a680:	00000000 	nop
  49a684:	00622021 	addu	a0,v1,v0
  49a688:	8fc20010 	lw	v0,16(s8)
  49a68c:	00000000 	nop
  49a690:	00021402 	srl	v0,v0,0x10
  49a694:	304200ff 	andi	v0,v0,0xff
  49a698:	00021880 	sll	v1,v0,0x2
  49a69c:	8fc2000c 	lw	v0,12(s8)
  49a6a0:	00000000 	nop
  49a6a4:	00621021 	addu	v0,v1,v0
  49a6a8:	24420400 	addiu	v0,v0,1024
  49a6ac:	8c830000 	lw	v1,0(a0)
  49a6b0:	8c420000 	lw	v0,0(v0)
  49a6b4:	00000000 	nop
  49a6b8:	00622021 	addu	a0,v1,v0
  49a6bc:	8fc20010 	lw	v0,16(s8)
  49a6c0:	00000000 	nop
  49a6c4:	00021202 	srl	v0,v0,0x8
  49a6c8:	304200ff 	andi	v0,v0,0xff
  49a6cc:	00021880 	sll	v1,v0,0x2
  49a6d0:	8fc2000c 	lw	v0,12(s8)
  49a6d4:	00000000 	nop
  49a6d8:	00621021 	addu	v0,v1,v0
  49a6dc:	24420800 	addiu	v0,v0,2048
  49a6e0:	8c420000 	lw	v0,0(v0)
  49a6e4:	00000000 	nop
  49a6e8:	00822026 	xor	a0,a0,v0
  49a6ec:	8fc20010 	lw	v0,16(s8)
  49a6f0:	00000000 	nop
  49a6f4:	304200ff 	andi	v0,v0,0xff
  49a6f8:	00021880 	sll	v1,v0,0x2
  49a6fc:	8fc2000c 	lw	v0,12(s8)
  49a700:	00000000 	nop
  49a704:	00621021 	addu	v0,v1,v0
  49a708:	24420c00 	addiu	v0,v0,3072
  49a70c:	8c420000 	lw	v0,0(v0)
  49a710:	00000000 	nop
  49a714:	00821821 	addu	v1,a0,v0
  49a718:	8fc20014 	lw	v0,20(s8)
  49a71c:	00000000 	nop
  49a720:	00431026 	xor	v0,v0,v1
  49a724:	afc20014 	sw	v0,20(s8)
	BF_ENC(l,r,s,p[ 1]);
  49a728:	8fc20008 	lw	v0,8(s8)
  49a72c:	00000000 	nop
  49a730:	24420004 	addiu	v0,v0,4
  49a734:	8c430000 	lw	v1,0(v0)
  49a738:	8fc20010 	lw	v0,16(s8)
  49a73c:	00000000 	nop
  49a740:	00431026 	xor	v0,v0,v1
  49a744:	afc20010 	sw	v0,16(s8)
  49a748:	8fc20014 	lw	v0,20(s8)
  49a74c:	00000000 	nop
  49a750:	00021602 	srl	v0,v0,0x18
  49a754:	304200ff 	andi	v0,v0,0xff
  49a758:	00021880 	sll	v1,v0,0x2
  49a75c:	8fc2000c 	lw	v0,12(s8)
  49a760:	00000000 	nop
  49a764:	00622021 	addu	a0,v1,v0
  49a768:	8fc20014 	lw	v0,20(s8)
  49a76c:	00000000 	nop
  49a770:	00021402 	srl	v0,v0,0x10
  49a774:	304200ff 	andi	v0,v0,0xff
  49a778:	00021880 	sll	v1,v0,0x2
  49a77c:	8fc2000c 	lw	v0,12(s8)
  49a780:	00000000 	nop
  49a784:	00621021 	addu	v0,v1,v0
  49a788:	24420400 	addiu	v0,v0,1024
  49a78c:	8c830000 	lw	v1,0(a0)
  49a790:	8c420000 	lw	v0,0(v0)
  49a794:	00000000 	nop
  49a798:	00622021 	addu	a0,v1,v0
  49a79c:	8fc20014 	lw	v0,20(s8)
  49a7a0:	00000000 	nop
  49a7a4:	00021202 	srl	v0,v0,0x8
  49a7a8:	304200ff 	andi	v0,v0,0xff
  49a7ac:	00021880 	sll	v1,v0,0x2
  49a7b0:	8fc2000c 	lw	v0,12(s8)
  49a7b4:	00000000 	nop
  49a7b8:	00621021 	addu	v0,v1,v0
  49a7bc:	24420800 	addiu	v0,v0,2048
  49a7c0:	8c420000 	lw	v0,0(v0)
  49a7c4:	00000000 	nop
  49a7c8:	00822026 	xor	a0,a0,v0
  49a7cc:	8fc20014 	lw	v0,20(s8)
  49a7d0:	00000000 	nop
  49a7d4:	304200ff 	andi	v0,v0,0xff
  49a7d8:	00021880 	sll	v1,v0,0x2
  49a7dc:	8fc2000c 	lw	v0,12(s8)
  49a7e0:	00000000 	nop
  49a7e4:	00621021 	addu	v0,v1,v0
  49a7e8:	24420c00 	addiu	v0,v0,3072
  49a7ec:	8c420000 	lw	v0,0(v0)
  49a7f0:	00000000 	nop
  49a7f4:	00821821 	addu	v1,a0,v0
  49a7f8:	8fc20010 	lw	v0,16(s8)
  49a7fc:	00000000 	nop
  49a800:	00431026 	xor	v0,v0,v1
  49a804:	afc20010 	sw	v0,16(s8)
	r^=p[0];
  49a808:	8fc20008 	lw	v0,8(s8)
  49a80c:	00000000 	nop
  49a810:	8c430000 	lw	v1,0(v0)
  49a814:	8fc20014 	lw	v0,20(s8)
  49a818:	00000000 	nop
  49a81c:	00431026 	xor	v0,v0,v1
  49a820:	afc20014 	sw	v0,20(s8)

	data[1]=l&0xffffffffL;
  49a824:	8fc20020 	lw	v0,32(s8)
  49a828:	00000000 	nop
  49a82c:	24430004 	addiu	v1,v0,4
  49a830:	8fc20010 	lw	v0,16(s8)
  49a834:	00000000 	nop
  49a838:	ac620000 	sw	v0,0(v1)
	data[0]=r&0xffffffffL;
  49a83c:	8fc30014 	lw	v1,20(s8)
  49a840:	8fc20020 	lw	v0,32(s8)
  49a844:	00000000 	nop
  49a848:	ac430000 	sw	v1,0(v0)
#else
	BF_LONG l,r,t,*k;

	l=data[0];
	r=data[1];
	k=(BF_LONG *)key;

	l^=k[BF_ROUNDS+1];
#if BF_ROUNDS == 20
	BF_ENC(r,l,k,20);
	BF_ENC(l,r,k,19);
	BF_ENC(r,l,k,18);
	BF_ENC(l,r,k,17);
#endif
	BF_ENC(r,l,k,16);
	BF_ENC(l,r,k,15);
	BF_ENC(r,l,k,14);
	BF_ENC(l,r,k,13);
	BF_ENC(r,l,k,12);
	BF_ENC(l,r,k,11);
	BF_ENC(r,l,k,10);
	BF_ENC(l,r,k, 9);
	BF_ENC(r,l,k, 8);
	BF_ENC(l,r,k, 7);
	BF_ENC(r,l,k, 6);
	BF_ENC(l,r,k, 5);
	BF_ENC(r,l,k, 4);
	BF_ENC(l,r,k, 3);
	BF_ENC(r,l,k, 2);
	BF_ENC(l,r,k, 1);
	r^=k[0];

	data[1]=l&0xffffffffL;
	data[0]=r&0xffffffffL;
#endif
	}
  49a84c:	03c0e821 	move	sp,s8
  49a850:	8fbe001c 	lw	s8,28(sp)
  49a854:	27bd0020 	addiu	sp,sp,32
  49a858:	03e00008 	jr	ra
  49a85c:	00000000 	nop

0049a860 <BF_cbc_encrypt>:
  49a860:	3c1c0fb7 	lui	gp,0xfb7
  49a864:	279c2110 	addiu	gp,gp,8464
  49a868:	0399e021 	addu	gp,gp,t9
  49a86c:	27bdffa8 	addiu	sp,sp,-88
  49a870:	afbc0010 	sw	gp,16(sp)
  49a874:	afbf0050 	sw	ra,80(sp)
  49a878:	afbe004c 	sw	s8,76(sp)
  49a87c:	afbc0048 	sw	gp,72(sp)
  49a880:	03a0f021 	move	s8,sp
  49a884:	afc40058 	sw	a0,88(s8)
  49a888:	afc5005c 	sw	a1,92(s8)
  49a88c:	afc60060 	sw	a2,96(s8)
  49a890:	afc70064 	sw	a3,100(s8)

void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
	     const BF_KEY *schedule, unsigned char *ivec, int encrypt)
	{
	BF_LONG tin0,tin1;
	BF_LONG tout0,tout1,xor0,xor1;
	long l=length;
  49a894:	8fc20060 	lw	v0,96(s8)
  49a898:	00000000 	nop
  49a89c:	afc20030 	sw	v0,48(s8)
	BF_LONG tin[2];

	if (encrypt)
  49a8a0:	8fc2006c 	lw	v0,108(s8)
  49a8a4:	00000000 	nop
  49a8a8:	10400262 	beqz	v0,49b234 <BF_cbc_encrypt+0x9d4>
  49a8ac:	00000000 	nop
		{
		n2l(ivec,tout0);
  49a8b0:	27c40068 	addiu	a0,s8,104
  49a8b4:	8c830000 	lw	v1,0(a0)
  49a8b8:	00000000 	nop
  49a8bc:	00601021 	move	v0,v1
  49a8c0:	90420000 	lbu	v0,0(v0)
  49a8c4:	00000000 	nop
  49a8c8:	00021600 	sll	v0,v0,0x18
  49a8cc:	afc20020 	sw	v0,32(s8)
  49a8d0:	24630001 	addiu	v1,v1,1
  49a8d4:	ac830000 	sw	v1,0(a0)
  49a8d8:	27c50068 	addiu	a1,s8,104
  49a8dc:	8ca30000 	lw	v1,0(a1)
  49a8e0:	00000000 	nop
  49a8e4:	00601021 	move	v0,v1
  49a8e8:	90420000 	lbu	v0,0(v0)
  49a8ec:	00000000 	nop
  49a8f0:	00022400 	sll	a0,v0,0x10
  49a8f4:	8fc20020 	lw	v0,32(s8)
  49a8f8:	00000000 	nop
  49a8fc:	00441025 	or	v0,v0,a0
  49a900:	afc20020 	sw	v0,32(s8)
  49a904:	24630001 	addiu	v1,v1,1
  49a908:	aca30000 	sw	v1,0(a1)
  49a90c:	27c50068 	addiu	a1,s8,104
  49a910:	8ca30000 	lw	v1,0(a1)
  49a914:	00000000 	nop
  49a918:	00601021 	move	v0,v1
  49a91c:	90420000 	lbu	v0,0(v0)
  49a920:	00000000 	nop
  49a924:	00022200 	sll	a0,v0,0x8
  49a928:	8fc20020 	lw	v0,32(s8)
  49a92c:	00000000 	nop
  49a930:	00441025 	or	v0,v0,a0
  49a934:	afc20020 	sw	v0,32(s8)
  49a938:	24630001 	addiu	v1,v1,1
  49a93c:	aca30000 	sw	v1,0(a1)
  49a940:	27c50068 	addiu	a1,s8,104
  49a944:	8ca30000 	lw	v1,0(a1)
  49a948:	00000000 	nop
  49a94c:	00601021 	move	v0,v1
  49a950:	90440000 	lbu	a0,0(v0)
  49a954:	8fc20020 	lw	v0,32(s8)
  49a958:	00000000 	nop
  49a95c:	00441025 	or	v0,v0,a0
  49a960:	afc20020 	sw	v0,32(s8)
  49a964:	24630001 	addiu	v1,v1,1
  49a968:	aca30000 	sw	v1,0(a1)
		n2l(ivec,tout1);
  49a96c:	27c40068 	addiu	a0,s8,104
  49a970:	8c830000 	lw	v1,0(a0)
  49a974:	00000000 	nop
  49a978:	00601021 	move	v0,v1
  49a97c:	90420000 	lbu	v0,0(v0)
  49a980:	00000000 	nop
  49a984:	00021600 	sll	v0,v0,0x18
  49a988:	afc20024 	sw	v0,36(s8)
  49a98c:	24630001 	addiu	v1,v1,1
  49a990:	ac830000 	sw	v1,0(a0)
  49a994:	27c50068 	addiu	a1,s8,104
  49a998:	8ca30000 	lw	v1,0(a1)
  49a99c:	00000000 	nop
  49a9a0:	00601021 	move	v0,v1
  49a9a4:	90420000 	lbu	v0,0(v0)
  49a9a8:	00000000 	nop
  49a9ac:	00022400 	sll	a0,v0,0x10
  49a9b0:	8fc20024 	lw	v0,36(s8)
  49a9b4:	00000000 	nop
  49a9b8:	00441025 	or	v0,v0,a0
  49a9bc:	afc20024 	sw	v0,36(s8)
  49a9c0:	24630001 	addiu	v1,v1,1
  49a9c4:	aca30000 	sw	v1,0(a1)
  49a9c8:	27c50068 	addiu	a1,s8,104
  49a9cc:	8ca30000 	lw	v1,0(a1)
  49a9d0:	00000000 	nop
  49a9d4:	00601021 	move	v0,v1
  49a9d8:	90420000 	lbu	v0,0(v0)
  49a9dc:	00000000 	nop
  49a9e0:	00022200 	sll	a0,v0,0x8
  49a9e4:	8fc20024 	lw	v0,36(s8)
  49a9e8:	00000000 	nop
  49a9ec:	00441025 	or	v0,v0,a0
  49a9f0:	afc20024 	sw	v0,36(s8)
  49a9f4:	24630001 	addiu	v1,v1,1
  49a9f8:	aca30000 	sw	v1,0(a1)
  49a9fc:	27c50068 	addiu	a1,s8,104
  49aa00:	8ca30000 	lw	v1,0(a1)
  49aa04:	00000000 	nop
  49aa08:	00601021 	move	v0,v1
  49aa0c:	90440000 	lbu	a0,0(v0)
  49aa10:	8fc20024 	lw	v0,36(s8)
  49aa14:	00000000 	nop
  49aa18:	00441025 	or	v0,v0,a0
  49aa1c:	afc20024 	sw	v0,36(s8)
  49aa20:	24630001 	addiu	v1,v1,1
  49aa24:	aca30000 	sw	v1,0(a1)
		ivec-=8;
  49aa28:	8fc20068 	lw	v0,104(s8)
  49aa2c:	00000000 	nop
  49aa30:	2442fff8 	addiu	v0,v0,-8
  49aa34:	afc20068 	sw	v0,104(s8)
		for (l-=8; l>=0; l-=8)
  49aa38:	8fc20030 	lw	v0,48(s8)
  49aa3c:	00000000 	nop
  49aa40:	2442fff8 	addiu	v0,v0,-8
  49aa44:	afc20030 	sw	v0,48(s8)
  49aa48:	8fc20030 	lw	v0,48(s8)
  49aa4c:	00000000 	nop
  49aa50:	04410003 	bgez	v0,49aa60 <BF_cbc_encrypt+0x200>
  49aa54:	00000000 	nop
  49aa58:	100000c9 	b	49ad80 <BF_cbc_encrypt+0x520>
  49aa5c:	00000000 	nop
			{
			n2l(in,tin0);
  49aa60:	8fc30058 	lw	v1,88(s8)
  49aa64:	00000000 	nop
  49aa68:	00601021 	move	v0,v1
  49aa6c:	90420000 	lbu	v0,0(v0)
  49aa70:	00000000 	nop
  49aa74:	00021600 	sll	v0,v0,0x18
  49aa78:	afc20018 	sw	v0,24(s8)
  49aa7c:	24630001 	addiu	v1,v1,1
  49aa80:	afc30058 	sw	v1,88(s8)
  49aa84:	8fc30058 	lw	v1,88(s8)
  49aa88:	00000000 	nop
  49aa8c:	00601021 	move	v0,v1
  49aa90:	90420000 	lbu	v0,0(v0)
  49aa94:	00000000 	nop
  49aa98:	00022400 	sll	a0,v0,0x10
  49aa9c:	8fc20018 	lw	v0,24(s8)
  49aaa0:	00000000 	nop
  49aaa4:	00441025 	or	v0,v0,a0
  49aaa8:	afc20018 	sw	v0,24(s8)
  49aaac:	24630001 	addiu	v1,v1,1
  49aab0:	afc30058 	sw	v1,88(s8)
  49aab4:	8fc30058 	lw	v1,88(s8)
  49aab8:	00000000 	nop
  49aabc:	00601021 	move	v0,v1
  49aac0:	90420000 	lbu	v0,0(v0)
  49aac4:	00000000 	nop
  49aac8:	00022200 	sll	a0,v0,0x8
  49aacc:	8fc20018 	lw	v0,24(s8)
  49aad0:	00000000 	nop
  49aad4:	00441025 	or	v0,v0,a0
  49aad8:	afc20018 	sw	v0,24(s8)
  49aadc:	24630001 	addiu	v1,v1,1
  49aae0:	afc30058 	sw	v1,88(s8)
  49aae4:	8fc30058 	lw	v1,88(s8)
  49aae8:	00000000 	nop
  49aaec:	00601021 	move	v0,v1
  49aaf0:	90440000 	lbu	a0,0(v0)
  49aaf4:	8fc20018 	lw	v0,24(s8)
  49aaf8:	00000000 	nop
  49aafc:	00441025 	or	v0,v0,a0
  49ab00:	afc20018 	sw	v0,24(s8)
  49ab04:	24630001 	addiu	v1,v1,1
  49ab08:	afc30058 	sw	v1,88(s8)
			n2l(in,tin1);
  49ab0c:	8fc30058 	lw	v1,88(s8)
  49ab10:	00000000 	nop
  49ab14:	00601021 	move	v0,v1
  49ab18:	90420000 	lbu	v0,0(v0)
  49ab1c:	00000000 	nop
  49ab20:	00021600 	sll	v0,v0,0x18
  49ab24:	afc2001c 	sw	v0,28(s8)
  49ab28:	24630001 	addiu	v1,v1,1
  49ab2c:	afc30058 	sw	v1,88(s8)
  49ab30:	8fc30058 	lw	v1,88(s8)
  49ab34:	00000000 	nop
  49ab38:	00601021 	move	v0,v1
  49ab3c:	90420000 	lbu	v0,0(v0)
  49ab40:	00000000 	nop
  49ab44:	00022400 	sll	a0,v0,0x10
  49ab48:	8fc2001c 	lw	v0,28(s8)
  49ab4c:	00000000 	nop
  49ab50:	00441025 	or	v0,v0,a0
  49ab54:	afc2001c 	sw	v0,28(s8)
  49ab58:	24630001 	addiu	v1,v1,1
  49ab5c:	afc30058 	sw	v1,88(s8)
  49ab60:	8fc30058 	lw	v1,88(s8)
  49ab64:	00000000 	nop
  49ab68:	00601021 	move	v0,v1
  49ab6c:	90420000 	lbu	v0,0(v0)
  49ab70:	00000000 	nop
  49ab74:	00022200 	sll	a0,v0,0x8
  49ab78:	8fc2001c 	lw	v0,28(s8)
  49ab7c:	00000000 	nop
  49ab80:	00441025 	or	v0,v0,a0
  49ab84:	afc2001c 	sw	v0,28(s8)
  49ab88:	24630001 	addiu	v1,v1,1
  49ab8c:	afc30058 	sw	v1,88(s8)
  49ab90:	8fc30058 	lw	v1,88(s8)
  49ab94:	00000000 	nop
  49ab98:	00601021 	move	v0,v1
  49ab9c:	90440000 	lbu	a0,0(v0)
  49aba0:	8fc2001c 	lw	v0,28(s8)
  49aba4:	00000000 	nop
  49aba8:	00441025 	or	v0,v0,a0
  49abac:	afc2001c 	sw	v0,28(s8)
  49abb0:	24630001 	addiu	v1,v1,1
  49abb4:	afc30058 	sw	v1,88(s8)
			tin0^=tout0;
  49abb8:	8fc30018 	lw	v1,24(s8)
  49abbc:	8fc20020 	lw	v0,32(s8)
  49abc0:	00000000 	nop
  49abc4:	00621026 	xor	v0,v1,v0
  49abc8:	afc20018 	sw	v0,24(s8)
			tin1^=tout1;
  49abcc:	8fc3001c 	lw	v1,28(s8)
  49abd0:	8fc20024 	lw	v0,36(s8)
  49abd4:	00000000 	nop
  49abd8:	00621026 	xor	v0,v1,v0
  49abdc:	afc2001c 	sw	v0,28(s8)
			tin[0]=tin0;
  49abe0:	8fc20018 	lw	v0,24(s8)
  49abe4:	00000000 	nop
  49abe8:	afc20038 	sw	v0,56(s8)
			tin[1]=tin1;
  49abec:	8fc2001c 	lw	v0,28(s8)
  49abf0:	00000000 	nop
  49abf4:	afc2003c 	sw	v0,60(s8)
			BF_encrypt(tin,schedule);
  49abf8:	27c40038 	addiu	a0,s8,56
  49abfc:	8fc50064 	lw	a1,100(s8)
  49ac00:	8f9988c0 	lw	t9,-30528(gp)
  49ac04:	00000000 	nop
  49ac08:	0320f809 	jalr	t9
  49ac0c:	00000000 	nop
  49ac10:	8fdc0010 	lw	gp,16(s8)
  49ac14:	00000000 	nop
			tout0=tin[0];
  49ac18:	8fc20038 	lw	v0,56(s8)
  49ac1c:	00000000 	nop
  49ac20:	afc20020 	sw	v0,32(s8)
			tout1=tin[1];
  49ac24:	8fc2003c 	lw	v0,60(s8)
  49ac28:	00000000 	nop
  49ac2c:	afc20024 	sw	v0,36(s8)
			l2n(tout0,out);
  49ac30:	27c5005c 	addiu	a1,s8,92
  49ac34:	8ca30000 	lw	v1,0(a1)
  49ac38:	8fc20020 	lw	v0,32(s8)
  49ac3c:	00000000 	nop
  49ac40:	00021602 	srl	v0,v0,0x18
  49ac44:	00402021 	move	a0,v0
  49ac48:	00601021 	move	v0,v1
  49ac4c:	a0440000 	sb	a0,0(v0)
  49ac50:	24630001 	addiu	v1,v1,1
  49ac54:	aca30000 	sw	v1,0(a1)
  49ac58:	27c5005c 	addiu	a1,s8,92
  49ac5c:	8ca30000 	lw	v1,0(a1)
  49ac60:	8fc20020 	lw	v0,32(s8)
  49ac64:	00000000 	nop
  49ac68:	00021402 	srl	v0,v0,0x10
  49ac6c:	00402021 	move	a0,v0
  49ac70:	00601021 	move	v0,v1
  49ac74:	a0440000 	sb	a0,0(v0)
  49ac78:	24630001 	addiu	v1,v1,1
  49ac7c:	aca30000 	sw	v1,0(a1)
  49ac80:	27c5005c 	addiu	a1,s8,92
  49ac84:	8ca30000 	lw	v1,0(a1)
  49ac88:	8fc20020 	lw	v0,32(s8)
  49ac8c:	00000000 	nop
  49ac90:	00021202 	srl	v0,v0,0x8
  49ac94:	00402021 	move	a0,v0
  49ac98:	00601021 	move	v0,v1
  49ac9c:	a0440000 	sb	a0,0(v0)
  49aca0:	24630001 	addiu	v1,v1,1
  49aca4:	aca30000 	sw	v1,0(a1)
  49aca8:	27c5005c 	addiu	a1,s8,92
  49acac:	8ca20000 	lw	v0,0(a1)
  49acb0:	00000000 	nop
  49acb4:	00402021 	move	a0,v0
  49acb8:	93c30023 	lbu	v1,35(s8)
  49acbc:	00000000 	nop
  49acc0:	a0830000 	sb	v1,0(a0)
  49acc4:	24420001 	addiu	v0,v0,1
  49acc8:	aca20000 	sw	v0,0(a1)
			l2n(tout1,out);
  49accc:	27c5005c 	addiu	a1,s8,92
  49acd0:	8ca30000 	lw	v1,0(a1)
  49acd4:	8fc20024 	lw	v0,36(s8)
  49acd8:	00000000 	nop
  49acdc:	00021602 	srl	v0,v0,0x18
  49ace0:	00402021 	move	a0,v0
  49ace4:	00601021 	move	v0,v1
  49ace8:	a0440000 	sb	a0,0(v0)
  49acec:	24630001 	addiu	v1,v1,1
  49acf0:	aca30000 	sw	v1,0(a1)
  49acf4:	27c5005c 	addiu	a1,s8,92
  49acf8:	8ca30000 	lw	v1,0(a1)
  49acfc:	8fc20024 	lw	v0,36(s8)
  49ad00:	00000000 	nop
  49ad04:	00021402 	srl	v0,v0,0x10
  49ad08:	00402021 	move	a0,v0
  49ad0c:	00601021 	move	v0,v1
  49ad10:	a0440000 	sb	a0,0(v0)
  49ad14:	24630001 	addiu	v1,v1,1
  49ad18:	aca30000 	sw	v1,0(a1)
  49ad1c:	27c5005c 	addiu	a1,s8,92
  49ad20:	8ca30000 	lw	v1,0(a1)
  49ad24:	8fc20024 	lw	v0,36(s8)
  49ad28:	00000000 	nop
  49ad2c:	00021202 	srl	v0,v0,0x8
  49ad30:	00402021 	move	a0,v0
  49ad34:	00601021 	move	v0,v1
  49ad38:	a0440000 	sb	a0,0(v0)
  49ad3c:	24630001 	addiu	v1,v1,1
  49ad40:	aca30000 	sw	v1,0(a1)
  49ad44:	27c5005c 	addiu	a1,s8,92
  49ad48:	8ca20000 	lw	v0,0(a1)
  49ad4c:	00000000 	nop
  49ad50:	00402021 	move	a0,v0
  49ad54:	93c30027 	lbu	v1,39(s8)
  49ad58:	00000000 	nop
  49ad5c:	a0830000 	sb	v1,0(a0)
  49ad60:	24420001 	addiu	v0,v0,1
  49ad64:	aca20000 	sw	v0,0(a1)
  49ad68:	8fc20030 	lw	v0,48(s8)
  49ad6c:	00000000 	nop
  49ad70:	2442fff8 	addiu	v0,v0,-8
  49ad74:	afc20030 	sw	v0,48(s8)
  49ad78:	1000ff33 	b	49aa48 <BF_cbc_encrypt+0x1e8>
  49ad7c:	00000000 	nop
			}
		if (l != -8)
  49ad80:	8fc30030 	lw	v1,48(s8)
  49ad84:	2402fff8 	li	v0,-8
  49ad88:	106200da 	beq	v1,v0,49b0f4 <BF_cbc_encrypt+0x894>
  49ad8c:	00000000 	nop
			{
			n2ln(in,tin0,tin1,l+8);
  49ad90:	8fc30058 	lw	v1,88(s8)
  49ad94:	8fc20030 	lw	v0,48(s8)
  49ad98:	00000000 	nop
  49ad9c:	00621021 	addu	v0,v1,v0
  49ada0:	24420008 	addiu	v0,v0,8
  49ada4:	afc20058 	sw	v0,88(s8)
  49ada8:	afc0001c 	sw	zero,28(s8)
  49adac:	afc00018 	sw	zero,24(s8)
  49adb0:	8fc20030 	lw	v0,48(s8)
  49adb4:	00000000 	nop
  49adb8:	24420007 	addiu	v0,v0,7
  49adbc:	afc20040 	sw	v0,64(s8)
  49adc0:	8fc30040 	lw	v1,64(s8)
  49adc4:	00000000 	nop
  49adc8:	2c620008 	sltiu	v0,v1,8
  49adcc:	1040005d 	beqz	v0,49af44 <BF_cbc_encrypt+0x6e4>
  49add0:	00000000 	nop
  49add4:	8fc20040 	lw	v0,64(s8)
  49add8:	00000000 	nop
  49addc:	00021080 	sll	v0,v0,0x2
  49ade0:	8f81804c 	lw	at,-32692(gp)
  49ade4:	00000000 	nop
  49ade8:	242133f0 	addiu	at,at,13296
  49adec:	00221021 	addu	v0,at,v0
  49adf0:	8c420000 	lw	v0,0(v0)
  49adf4:	00000000 	nop
  49adf8:	005c1021 	addu	v0,v0,gp
  49adfc:	00400008 	jr	v0
  49ae00:	00000000 	nop
  49ae04:	8fc20058 	lw	v0,88(s8)
  49ae08:	00000000 	nop
  49ae0c:	2442ffff 	addiu	v0,v0,-1
  49ae10:	afc20058 	sw	v0,88(s8)
  49ae14:	90420000 	lbu	v0,0(v0)
  49ae18:	00000000 	nop
  49ae1c:	afc2001c 	sw	v0,28(s8)
  49ae20:	8fc20058 	lw	v0,88(s8)
  49ae24:	00000000 	nop
  49ae28:	2442ffff 	addiu	v0,v0,-1
  49ae2c:	afc20058 	sw	v0,88(s8)
  49ae30:	90420000 	lbu	v0,0(v0)
  49ae34:	00000000 	nop
  49ae38:	00021a00 	sll	v1,v0,0x8
  49ae3c:	8fc2001c 	lw	v0,28(s8)
  49ae40:	00000000 	nop
  49ae44:	00431025 	or	v0,v0,v1
  49ae48:	afc2001c 	sw	v0,28(s8)
  49ae4c:	8fc20058 	lw	v0,88(s8)
  49ae50:	00000000 	nop
  49ae54:	2442ffff 	addiu	v0,v0,-1
  49ae58:	afc20058 	sw	v0,88(s8)
  49ae5c:	90420000 	lbu	v0,0(v0)
  49ae60:	00000000 	nop
  49ae64:	00021c00 	sll	v1,v0,0x10
  49ae68:	8fc2001c 	lw	v0,28(s8)
  49ae6c:	00000000 	nop
  49ae70:	00431025 	or	v0,v0,v1
  49ae74:	afc2001c 	sw	v0,28(s8)
  49ae78:	8fc20058 	lw	v0,88(s8)
  49ae7c:	00000000 	nop
  49ae80:	2442ffff 	addiu	v0,v0,-1
  49ae84:	afc20058 	sw	v0,88(s8)
  49ae88:	90420000 	lbu	v0,0(v0)
  49ae8c:	00000000 	nop
  49ae90:	00021e00 	sll	v1,v0,0x18
  49ae94:	8fc2001c 	lw	v0,28(s8)
  49ae98:	00000000 	nop
  49ae9c:	00431025 	or	v0,v0,v1
  49aea0:	afc2001c 	sw	v0,28(s8)
  49aea4:	8fc20058 	lw	v0,88(s8)
  49aea8:	00000000 	nop
  49aeac:	2442ffff 	addiu	v0,v0,-1
  49aeb0:	afc20058 	sw	v0,88(s8)
  49aeb4:	90420000 	lbu	v0,0(v0)
  49aeb8:	00000000 	nop
  49aebc:	afc20018 	sw	v0,24(s8)
  49aec0:	8fc20058 	lw	v0,88(s8)
  49aec4:	00000000 	nop
  49aec8:	2442ffff 	addiu	v0,v0,-1
  49aecc:	afc20058 	sw	v0,88(s8)
  49aed0:	90420000 	lbu	v0,0(v0)
  49aed4:	00000000 	nop
  49aed8:	00021a00 	sll	v1,v0,0x8
  49aedc:	8fc20018 	lw	v0,24(s8)
  49aee0:	00000000 	nop
  49aee4:	00431025 	or	v0,v0,v1
  49aee8:	afc20018 	sw	v0,24(s8)
  49aeec:	8fc20058 	lw	v0,88(s8)
  49aef0:	00000000 	nop
  49aef4:	2442ffff 	addiu	v0,v0,-1
  49aef8:	afc20058 	sw	v0,88(s8)
  49aefc:	90420000 	lbu	v0,0(v0)
  49af00:	00000000 	nop
  49af04:	00021c00 	sll	v1,v0,0x10
  49af08:	8fc20018 	lw	v0,24(s8)
  49af0c:	00000000 	nop
  49af10:	00431025 	or	v0,v0,v1
  49af14:	afc20018 	sw	v0,24(s8)
  49af18:	8fc20058 	lw	v0,88(s8)
  49af1c:	00000000 	nop
  49af20:	2442ffff 	addiu	v0,v0,-1
  49af24:	afc20058 	sw	v0,88(s8)
  49af28:	90420000 	lbu	v0,0(v0)
  49af2c:	00000000 	nop
  49af30:	00021e00 	sll	v1,v0,0x18
  49af34:	8fc20018 	lw	v0,24(s8)
  49af38:	00000000 	nop
  49af3c:	00431025 	or	v0,v0,v1
  49af40:	afc20018 	sw	v0,24(s8)
			tin0^=tout0;
  49af44:	8fc30018 	lw	v1,24(s8)
  49af48:	8fc20020 	lw	v0,32(s8)
  49af4c:	00000000 	nop
  49af50:	00621026 	xor	v0,v1,v0
  49af54:	afc20018 	sw	v0,24(s8)
			tin1^=tout1;
  49af58:	8fc3001c 	lw	v1,28(s8)
  49af5c:	8fc20024 	lw	v0,36(s8)
  49af60:	00000000 	nop
  49af64:	00621026 	xor	v0,v1,v0
  49af68:	afc2001c 	sw	v0,28(s8)
			tin[0]=tin0;
  49af6c:	8fc20018 	lw	v0,24(s8)
  49af70:	00000000 	nop
  49af74:	afc20038 	sw	v0,56(s8)
			tin[1]=tin1;
  49af78:	8fc2001c 	lw	v0,28(s8)
  49af7c:	00000000 	nop
  49af80:	afc2003c 	sw	v0,60(s8)
			BF_encrypt(tin,schedule);
  49af84:	27c40038 	addiu	a0,s8,56
  49af88:	8fc50064 	lw	a1,100(s8)
  49af8c:	8f9988c0 	lw	t9,-30528(gp)
  49af90:	00000000 	nop
  49af94:	0320f809 	jalr	t9
  49af98:	00000000 	nop
  49af9c:	8fdc0010 	lw	gp,16(s8)
  49afa0:	00000000 	nop
			tout0=tin[0];
  49afa4:	8fc20038 	lw	v0,56(s8)
  49afa8:	00000000 	nop
  49afac:	afc20020 	sw	v0,32(s8)
			tout1=tin[1];
  49afb0:	8fc2003c 	lw	v0,60(s8)
  49afb4:	00000000 	nop
  49afb8:	afc20024 	sw	v0,36(s8)
			l2n(tout0,out);
  49afbc:	27c5005c 	addiu	a1,s8,92
  49afc0:	8ca30000 	lw	v1,0(a1)
  49afc4:	8fc20020 	lw	v0,32(s8)
  49afc8:	00000000 	nop
  49afcc:	00021602 	srl	v0,v0,0x18
  49afd0:	00402021 	move	a0,v0
  49afd4:	00601021 	move	v0,v1
  49afd8:	a0440000 	sb	a0,0(v0)
  49afdc:	24630001 	addiu	v1,v1,1
  49afe0:	aca30000 	sw	v1,0(a1)
  49afe4:	27c5005c 	addiu	a1,s8,92
  49afe8:	8ca30000 	lw	v1,0(a1)
  49afec:	8fc20020 	lw	v0,32(s8)
  49aff0:	00000000 	nop
  49aff4:	00021402 	srl	v0,v0,0x10
  49aff8:	00402021 	move	a0,v0
  49affc:	00601021 	move	v0,v1
  49b000:	a0440000 	sb	a0,0(v0)
  49b004:	24630001 	addiu	v1,v1,1
  49b008:	aca30000 	sw	v1,0(a1)
  49b00c:	27c5005c 	addiu	a1,s8,92
  49b010:	8ca30000 	lw	v1,0(a1)
  49b014:	8fc20020 	lw	v0,32(s8)
  49b018:	00000000 	nop
  49b01c:	00021202 	srl	v0,v0,0x8
  49b020:	00402021 	move	a0,v0
  49b024:	00601021 	move	v0,v1
  49b028:	a0440000 	sb	a0,0(v0)
  49b02c:	24630001 	addiu	v1,v1,1
  49b030:	aca30000 	sw	v1,0(a1)
  49b034:	27c5005c 	addiu	a1,s8,92
  49b038:	8ca20000 	lw	v0,0(a1)
  49b03c:	00000000 	nop
  49b040:	00402021 	move	a0,v0
  49b044:	93c30023 	lbu	v1,35(s8)
  49b048:	00000000 	nop
  49b04c:	a0830000 	sb	v1,0(a0)
  49b050:	24420001 	addiu	v0,v0,1
  49b054:	aca20000 	sw	v0,0(a1)
			l2n(tout1,out);
  49b058:	27c5005c 	addiu	a1,s8,92
  49b05c:	8ca30000 	lw	v1,0(a1)
  49b060:	8fc20024 	lw	v0,36(s8)
  49b064:	00000000 	nop
  49b068:	00021602 	srl	v0,v0,0x18
  49b06c:	00402021 	move	a0,v0
  49b070:	00601021 	move	v0,v1
  49b074:	a0440000 	sb	a0,0(v0)
  49b078:	24630001 	addiu	v1,v1,1
  49b07c:	aca30000 	sw	v1,0(a1)
  49b080:	27c5005c 	addiu	a1,s8,92
  49b084:	8ca30000 	lw	v1,0(a1)
  49b088:	8fc20024 	lw	v0,36(s8)
  49b08c:	00000000 	nop
  49b090:	00021402 	srl	v0,v0,0x10
  49b094:	00402021 	move	a0,v0
  49b098:	00601021 	move	v0,v1
  49b09c:	a0440000 	sb	a0,0(v0)
  49b0a0:	24630001 	addiu	v1,v1,1
  49b0a4:	aca30000 	sw	v1,0(a1)
  49b0a8:	27c5005c 	addiu	a1,s8,92
  49b0ac:	8ca30000 	lw	v1,0(a1)
  49b0b0:	8fc20024 	lw	v0,36(s8)
  49b0b4:	00000000 	nop
  49b0b8:	00021202 	srl	v0,v0,0x8
  49b0bc:	00402021 	move	a0,v0
  49b0c0:	00601021 	move	v0,v1
  49b0c4:	a0440000 	sb	a0,0(v0)
  49b0c8:	24630001 	addiu	v1,v1,1
  49b0cc:	aca30000 	sw	v1,0(a1)
  49b0d0:	27c5005c 	addiu	a1,s8,92
  49b0d4:	8ca20000 	lw	v0,0(a1)
  49b0d8:	00000000 	nop
  49b0dc:	00402021 	move	a0,v0
  49b0e0:	93c30027 	lbu	v1,39(s8)
  49b0e4:	00000000 	nop
  49b0e8:	a0830000 	sb	v1,0(a0)
  49b0ec:	24420001 	addiu	v0,v0,1
  49b0f0:	aca20000 	sw	v0,0(a1)
			}
		l2n(tout0,ivec);
  49b0f4:	27c50068 	addiu	a1,s8,104
  49b0f8:	8ca30000 	lw	v1,0(a1)
  49b0fc:	8fc20020 	lw	v0,32(s8)
  49b100:	00000000 	nop
  49b104:	00021602 	srl	v0,v0,0x18
  49b108:	00402021 	move	a0,v0
  49b10c:	00601021 	move	v0,v1
  49b110:	a0440000 	sb	a0,0(v0)
  49b114:	24630001 	addiu	v1,v1,1
  49b118:	aca30000 	sw	v1,0(a1)
  49b11c:	27c50068 	addiu	a1,s8,104
  49b120:	8ca30000 	lw	v1,0(a1)
  49b124:	8fc20020 	lw	v0,32(s8)
  49b128:	00000000 	nop
  49b12c:	00021402 	srl	v0,v0,0x10
  49b130:	00402021 	move	a0,v0
  49b134:	00601021 	move	v0,v1
  49b138:	a0440000 	sb	a0,0(v0)
  49b13c:	24630001 	addiu	v1,v1,1
  49b140:	aca30000 	sw	v1,0(a1)
  49b144:	27c50068 	addiu	a1,s8,104
  49b148:	8ca30000 	lw	v1,0(a1)
  49b14c:	8fc20020 	lw	v0,32(s8)
  49b150:	00000000 	nop
  49b154:	00021202 	srl	v0,v0,0x8
  49b158:	00402021 	move	a0,v0
  49b15c:	00601021 	move	v0,v1
  49b160:	a0440000 	sb	a0,0(v0)
  49b164:	24630001 	addiu	v1,v1,1
  49b168:	aca30000 	sw	v1,0(a1)
  49b16c:	27c50068 	addiu	a1,s8,104
  49b170:	8ca20000 	lw	v0,0(a1)
  49b174:	00000000 	nop
  49b178:	00402021 	move	a0,v0
  49b17c:	93c30023 	lbu	v1,35(s8)
  49b180:	00000000 	nop
  49b184:	a0830000 	sb	v1,0(a0)
  49b188:	24420001 	addiu	v0,v0,1
  49b18c:	aca20000 	sw	v0,0(a1)
		l2n(tout1,ivec);
  49b190:	27c50068 	addiu	a1,s8,104
  49b194:	8ca30000 	lw	v1,0(a1)
  49b198:	8fc20024 	lw	v0,36(s8)
  49b19c:	00000000 	nop
  49b1a0:	00021602 	srl	v0,v0,0x18
  49b1a4:	00402021 	move	a0,v0
  49b1a8:	00601021 	move	v0,v1
  49b1ac:	a0440000 	sb	a0,0(v0)
  49b1b0:	24630001 	addiu	v1,v1,1
  49b1b4:	aca30000 	sw	v1,0(a1)
  49b1b8:	27c50068 	addiu	a1,s8,104
  49b1bc:	8ca30000 	lw	v1,0(a1)
  49b1c0:	8fc20024 	lw	v0,36(s8)
  49b1c4:	00000000 	nop
  49b1c8:	00021402 	srl	v0,v0,0x10
  49b1cc:	00402021 	move	a0,v0
  49b1d0:	00601021 	move	v0,v1
  49b1d4:	a0440000 	sb	a0,0(v0)
  49b1d8:	24630001 	addiu	v1,v1,1
  49b1dc:	aca30000 	sw	v1,0(a1)
  49b1e0:	27c50068 	addiu	a1,s8,104
  49b1e4:	8ca30000 	lw	v1,0(a1)
  49b1e8:	8fc20024 	lw	v0,36(s8)
  49b1ec:	00000000 	nop
  49b1f0:	00021202 	srl	v0,v0,0x8
  49b1f4:	00402021 	move	a0,v0
  49b1f8:	00601021 	move	v0,v1
  49b1fc:	a0440000 	sb	a0,0(v0)
  49b200:	24630001 	addiu	v1,v1,1
  49b204:	aca30000 	sw	v1,0(a1)
  49b208:	27c50068 	addiu	a1,s8,104
  49b20c:	8ca20000 	lw	v0,0(a1)
  49b210:	00000000 	nop
  49b214:	00402021 	move	a0,v0
  49b218:	93c30027 	lbu	v1,39(s8)
  49b21c:	00000000 	nop
  49b220:	a0830000 	sb	v1,0(a0)
  49b224:	24420001 	addiu	v0,v0,1
  49b228:	aca20000 	sw	v0,0(a1)
  49b22c:	1000025c 	b	49bba0 <BF_cbc_encrypt+0x1340>
  49b230:	00000000 	nop
		}
	else
		{
		n2l(ivec,xor0);
  49b234:	27c40068 	addiu	a0,s8,104
  49b238:	8c830000 	lw	v1,0(a0)
  49b23c:	00000000 	nop
  49b240:	00601021 	move	v0,v1
  49b244:	90420000 	lbu	v0,0(v0)
  49b248:	00000000 	nop
  49b24c:	00021600 	sll	v0,v0,0x18
  49b250:	afc20028 	sw	v0,40(s8)
  49b254:	24630001 	addiu	v1,v1,1
  49b258:	ac830000 	sw	v1,0(a0)
  49b25c:	27c50068 	addiu	a1,s8,104
  49b260:	8ca30000 	lw	v1,0(a1)
  49b264:	00000000 	nop
  49b268:	00601021 	move	v0,v1
  49b26c:	90420000 	lbu	v0,0(v0)
  49b270:	00000000 	nop
  49b274:	00022400 	sll	a0,v0,0x10
  49b278:	8fc20028 	lw	v0,40(s8)
  49b27c:	00000000 	nop
  49b280:	00441025 	or	v0,v0,a0
  49b284:	afc20028 	sw	v0,40(s8)
  49b288:	24630001 	addiu	v1,v1,1
  49b28c:	aca30000 	sw	v1,0(a1)
  49b290:	27c50068 	addiu	a1,s8,104
  49b294:	8ca30000 	lw	v1,0(a1)
  49b298:	00000000 	nop
  49b29c:	00601021 	move	v0,v1
  49b2a0:	90420000 	lbu	v0,0(v0)
  49b2a4:	00000000 	nop
  49b2a8:	00022200 	sll	a0,v0,0x8
  49b2ac:	8fc20028 	lw	v0,40(s8)
  49b2b0:	00000000 	nop
  49b2b4:	00441025 	or	v0,v0,a0
  49b2b8:	afc20028 	sw	v0,40(s8)
  49b2bc:	24630001 	addiu	v1,v1,1
  49b2c0:	aca30000 	sw	v1,0(a1)
  49b2c4:	27c50068 	addiu	a1,s8,104
  49b2c8:	8ca30000 	lw	v1,0(a1)
  49b2cc:	00000000 	nop
  49b2d0:	00601021 	move	v0,v1
  49b2d4:	90440000 	lbu	a0,0(v0)
  49b2d8:	8fc20028 	lw	v0,40(s8)
  49b2dc:	00000000 	nop
  49b2e0:	00441025 	or	v0,v0,a0
  49b2e4:	afc20028 	sw	v0,40(s8)
  49b2e8:	24630001 	addiu	v1,v1,1
  49b2ec:	aca30000 	sw	v1,0(a1)
		n2l(ivec,xor1);
  49b2f0:	27c40068 	addiu	a0,s8,104
  49b2f4:	8c830000 	lw	v1,0(a0)
  49b2f8:	00000000 	nop
  49b2fc:	00601021 	move	v0,v1
  49b300:	90420000 	lbu	v0,0(v0)
  49b304:	00000000 	nop
  49b308:	00021600 	sll	v0,v0,0x18
  49b30c:	afc2002c 	sw	v0,44(s8)
  49b310:	24630001 	addiu	v1,v1,1
  49b314:	ac830000 	sw	v1,0(a0)
  49b318:	27c50068 	addiu	a1,s8,104
  49b31c:	8ca30000 	lw	v1,0(a1)
  49b320:	00000000 	nop
  49b324:	00601021 	move	v0,v1
  49b328:	90420000 	lbu	v0,0(v0)
  49b32c:	00000000 	nop
  49b330:	00022400 	sll	a0,v0,0x10
  49b334:	8fc2002c 	lw	v0,44(s8)
  49b338:	00000000 	nop
  49b33c:	00441025 	or	v0,v0,a0
  49b340:	afc2002c 	sw	v0,44(s8)
  49b344:	24630001 	addiu	v1,v1,1
  49b348:	aca30000 	sw	v1,0(a1)
  49b34c:	27c50068 	addiu	a1,s8,104
  49b350:	8ca30000 	lw	v1,0(a1)
  49b354:	00000000 	nop
  49b358:	00601021 	move	v0,v1
  49b35c:	90420000 	lbu	v0,0(v0)
  49b360:	00000000 	nop
  49b364:	00022200 	sll	a0,v0,0x8
  49b368:	8fc2002c 	lw	v0,44(s8)
  49b36c:	00000000 	nop
  49b370:	00441025 	or	v0,v0,a0
  49b374:	afc2002c 	sw	v0,44(s8)
  49b378:	24630001 	addiu	v1,v1,1
  49b37c:	aca30000 	sw	v1,0(a1)
  49b380:	27c50068 	addiu	a1,s8,104
  49b384:	8ca30000 	lw	v1,0(a1)
  49b388:	00000000 	nop
  49b38c:	00601021 	move	v0,v1
  49b390:	90440000 	lbu	a0,0(v0)
  49b394:	8fc2002c 	lw	v0,44(s8)
  49b398:	00000000 	nop
  49b39c:	00441025 	or	v0,v0,a0
  49b3a0:	afc2002c 	sw	v0,44(s8)
  49b3a4:	24630001 	addiu	v1,v1,1
  49b3a8:	aca30000 	sw	v1,0(a1)
		ivec-=8;
  49b3ac:	8fc20068 	lw	v0,104(s8)
  49b3b0:	00000000 	nop
  49b3b4:	2442fff8 	addiu	v0,v0,-8
  49b3b8:	afc20068 	sw	v0,104(s8)
		for (l-=8; l>=0; l-=8)
  49b3bc:	8fc20030 	lw	v0,48(s8)
  49b3c0:	00000000 	nop
  49b3c4:	2442fff8 	addiu	v0,v0,-8
  49b3c8:	afc20030 	sw	v0,48(s8)
  49b3cc:	8fc20030 	lw	v0,48(s8)
  49b3d0:	00000000 	nop
  49b3d4:	04410003 	bgez	v0,49b3e4 <BF_cbc_encrypt+0xb84>
  49b3d8:	00000000 	nop
  49b3dc:	100000c9 	b	49b704 <BF_cbc_encrypt+0xea4>
  49b3e0:	00000000 	nop
			{
			n2l(in,tin0);
  49b3e4:	8fc30058 	lw	v1,88(s8)
  49b3e8:	00000000 	nop
  49b3ec:	00601021 	move	v0,v1
  49b3f0:	90420000 	lbu	v0,0(v0)
  49b3f4:	00000000 	nop
  49b3f8:	00021600 	sll	v0,v0,0x18
  49b3fc:	afc20018 	sw	v0,24(s8)
  49b400:	24630001 	addiu	v1,v1,1
  49b404:	afc30058 	sw	v1,88(s8)
  49b408:	8fc30058 	lw	v1,88(s8)
  49b40c:	00000000 	nop
  49b410:	00601021 	move	v0,v1
  49b414:	90420000 	lbu	v0,0(v0)
  49b418:	00000000 	nop
  49b41c:	00022400 	sll	a0,v0,0x10
  49b420:	8fc20018 	lw	v0,24(s8)
  49b424:	00000000 	nop
  49b428:	00441025 	or	v0,v0,a0
  49b42c:	afc20018 	sw	v0,24(s8)
  49b430:	24630001 	addiu	v1,v1,1
  49b434:	afc30058 	sw	v1,88(s8)
  49b438:	8fc30058 	lw	v1,88(s8)
  49b43c:	00000000 	nop
  49b440:	00601021 	move	v0,v1
  49b444:	90420000 	lbu	v0,0(v0)
  49b448:	00000000 	nop
  49b44c:	00022200 	sll	a0,v0,0x8
  49b450:	8fc20018 	lw	v0,24(s8)
  49b454:	00000000 	nop
  49b458:	00441025 	or	v0,v0,a0
  49b45c:	afc20018 	sw	v0,24(s8)
  49b460:	24630001 	addiu	v1,v1,1
  49b464:	afc30058 	sw	v1,88(s8)
  49b468:	8fc30058 	lw	v1,88(s8)
  49b46c:	00000000 	nop
  49b470:	00601021 	move	v0,v1
  49b474:	90440000 	lbu	a0,0(v0)
  49b478:	8fc20018 	lw	v0,24(s8)
  49b47c:	00000000 	nop
  49b480:	00441025 	or	v0,v0,a0
  49b484:	afc20018 	sw	v0,24(s8)
  49b488:	24630001 	addiu	v1,v1,1
  49b48c:	afc30058 	sw	v1,88(s8)
			n2l(in,tin1);
  49b490:	8fc30058 	lw	v1,88(s8)
  49b494:	00000000 	nop
  49b498:	00601021 	move	v0,v1
  49b49c:	90420000 	lbu	v0,0(v0)
  49b4a0:	00000000 	nop
  49b4a4:	00021600 	sll	v0,v0,0x18
  49b4a8:	afc2001c 	sw	v0,28(s8)
  49b4ac:	24630001 	addiu	v1,v1,1
  49b4b0:	afc30058 	sw	v1,88(s8)
  49b4b4:	8fc30058 	lw	v1,88(s8)
  49b4b8:	00000000 	nop
  49b4bc:	00601021 	move	v0,v1
  49b4c0:	90420000 	lbu	v0,0(v0)
  49b4c4:	00000000 	nop
  49b4c8:	00022400 	sll	a0,v0,0x10
  49b4cc:	8fc2001c 	lw	v0,28(s8)
  49b4d0:	00000000 	nop
  49b4d4:	00441025 	or	v0,v0,a0
  49b4d8:	afc2001c 	sw	v0,28(s8)
  49b4dc:	24630001 	addiu	v1,v1,1
  49b4e0:	afc30058 	sw	v1,88(s8)
  49b4e4:	8fc30058 	lw	v1,88(s8)
  49b4e8:	00000000 	nop
  49b4ec:	00601021 	move	v0,v1
  49b4f0:	90420000 	lbu	v0,0(v0)
  49b4f4:	00000000 	nop
  49b4f8:	00022200 	sll	a0,v0,0x8
  49b4fc:	8fc2001c 	lw	v0,28(s8)
  49b500:	00000000 	nop
  49b504:	00441025 	or	v0,v0,a0
  49b508:	afc2001c 	sw	v0,28(s8)
  49b50c:	24630001 	addiu	v1,v1,1
  49b510:	afc30058 	sw	v1,88(s8)
  49b514:	8fc30058 	lw	v1,88(s8)
  49b518:	00000000 	nop
  49b51c:	00601021 	move	v0,v1
  49b520:	90440000 	lbu	a0,0(v0)
  49b524:	8fc2001c 	lw	v0,28(s8)
  49b528:	00000000 	nop
  49b52c:	00441025 	or	v0,v0,a0
  49b530:	afc2001c 	sw	v0,28(s8)
  49b534:	24630001 	addiu	v1,v1,1
  49b538:	afc30058 	sw	v1,88(s8)
			tin[0]=tin0;
  49b53c:	8fc20018 	lw	v0,24(s8)
  49b540:	00000000 	nop
  49b544:	afc20038 	sw	v0,56(s8)
			tin[1]=tin1;
  49b548:	8fc2001c 	lw	v0,28(s8)
  49b54c:	00000000 	nop
  49b550:	afc2003c 	sw	v0,60(s8)
			BF_decrypt(tin,schedule);
  49b554:	27c40038 	addiu	a0,s8,56
  49b558:	8fc50064 	lw	a1,100(s8)
  49b55c:	8f998190 	lw	t9,-32368(gp)
  49b560:	00000000 	nop
  49b564:	0320f809 	jalr	t9
  49b568:	00000000 	nop
  49b56c:	8fdc0010 	lw	gp,16(s8)
  49b570:	00000000 	nop
			tout0=tin[0]^xor0;
  49b574:	8fc30038 	lw	v1,56(s8)
  49b578:	8fc20028 	lw	v0,40(s8)
  49b57c:	00000000 	nop
  49b580:	00621026 	xor	v0,v1,v0
  49b584:	afc20020 	sw	v0,32(s8)
			tout1=tin[1]^xor1;
  49b588:	8fc3003c 	lw	v1,60(s8)
  49b58c:	8fc2002c 	lw	v0,44(s8)
  49b590:	00000000 	nop
  49b594:	00621026 	xor	v0,v1,v0
  49b598:	afc20024 	sw	v0,36(s8)
			l2n(tout0,out);
  49b59c:	27c5005c 	addiu	a1,s8,92
  49b5a0:	8ca30000 	lw	v1,0(a1)
  49b5a4:	8fc20020 	lw	v0,32(s8)
  49b5a8:	00000000 	nop
  49b5ac:	00021602 	srl	v0,v0,0x18
  49b5b0:	00402021 	move	a0,v0
  49b5b4:	00601021 	move	v0,v1
  49b5b8:	a0440000 	sb	a0,0(v0)
  49b5bc:	24630001 	addiu	v1,v1,1
  49b5c0:	aca30000 	sw	v1,0(a1)
  49b5c4:	27c5005c 	addiu	a1,s8,92
  49b5c8:	8ca30000 	lw	v1,0(a1)
  49b5cc:	8fc20020 	lw	v0,32(s8)
  49b5d0:	00000000 	nop
  49b5d4:	00021402 	srl	v0,v0,0x10
  49b5d8:	00402021 	move	a0,v0
  49b5dc:	00601021 	move	v0,v1
  49b5e0:	a0440000 	sb	a0,0(v0)
  49b5e4:	24630001 	addiu	v1,v1,1
  49b5e8:	aca30000 	sw	v1,0(a1)
  49b5ec:	27c5005c 	addiu	a1,s8,92
  49b5f0:	8ca30000 	lw	v1,0(a1)
  49b5f4:	8fc20020 	lw	v0,32(s8)
  49b5f8:	00000000 	nop
  49b5fc:	00021202 	srl	v0,v0,0x8
  49b600:	00402021 	move	a0,v0
  49b604:	00601021 	move	v0,v1
  49b608:	a0440000 	sb	a0,0(v0)
  49b60c:	24630001 	addiu	v1,v1,1
  49b610:	aca30000 	sw	v1,0(a1)
  49b614:	27c5005c 	addiu	a1,s8,92
  49b618:	8ca20000 	lw	v0,0(a1)
  49b61c:	00000000 	nop
  49b620:	00402021 	move	a0,v0
  49b624:	93c30023 	lbu	v1,35(s8)
  49b628:	00000000 	nop
  49b62c:	a0830000 	sb	v1,0(a0)
  49b630:	24420001 	addiu	v0,v0,1
  49b634:	aca20000 	sw	v0,0(a1)
			l2n(tout1,out);
  49b638:	27c5005c 	addiu	a1,s8,92
  49b63c:	8ca30000 	lw	v1,0(a1)
  49b640:	8fc20024 	lw	v0,36(s8)
  49b644:	00000000 	nop
  49b648:	00021602 	srl	v0,v0,0x18
  49b64c:	00402021 	move	a0,v0
  49b650:	00601021 	move	v0,v1
  49b654:	a0440000 	sb	a0,0(v0)
  49b658:	24630001 	addiu	v1,v1,1
  49b65c:	aca30000 	sw	v1,0(a1)
  49b660:	27c5005c 	addiu	a1,s8,92
  49b664:	8ca30000 	lw	v1,0(a1)
  49b668:	8fc20024 	lw	v0,36(s8)
  49b66c:	00000000 	nop
  49b670:	00021402 	srl	v0,v0,0x10
  49b674:	00402021 	move	a0,v0
  49b678:	00601021 	move	v0,v1
  49b67c:	a0440000 	sb	a0,0(v0)
  49b680:	24630001 	addiu	v1,v1,1
  49b684:	aca30000 	sw	v1,0(a1)
  49b688:	27c5005c 	addiu	a1,s8,92
  49b68c:	8ca30000 	lw	v1,0(a1)
  49b690:	8fc20024 	lw	v0,36(s8)
  49b694:	00000000 	nop
  49b698:	00021202 	srl	v0,v0,0x8
  49b69c:	00402021 	move	a0,v0
  49b6a0:	00601021 	move	v0,v1
  49b6a4:	a0440000 	sb	a0,0(v0)
  49b6a8:	24630001 	addiu	v1,v1,1
  49b6ac:	aca30000 	sw	v1,0(a1)
  49b6b0:	27c5005c 	addiu	a1,s8,92
  49b6b4:	8ca20000 	lw	v0,0(a1)
  49b6b8:	00000000 	nop
  49b6bc:	00402021 	move	a0,v0
  49b6c0:	93c30027 	lbu	v1,39(s8)
  49b6c4:	00000000 	nop
  49b6c8:	a0830000 	sb	v1,0(a0)
  49b6cc:	24420001 	addiu	v0,v0,1
  49b6d0:	aca20000 	sw	v0,0(a1)
			xor0=tin0;
  49b6d4:	8fc20018 	lw	v0,24(s8)
  49b6d8:	00000000 	nop
  49b6dc:	afc20028 	sw	v0,40(s8)
			xor1=tin1;
  49b6e0:	8fc2001c 	lw	v0,28(s8)
  49b6e4:	00000000 	nop
  49b6e8:	afc2002c 	sw	v0,44(s8)
  49b6ec:	8fc20030 	lw	v0,48(s8)
  49b6f0:	00000000 	nop
  49b6f4:	2442fff8 	addiu	v0,v0,-8
  49b6f8:	afc20030 	sw	v0,48(s8)
  49b6fc:	1000ff33 	b	49b3cc <BF_cbc_encrypt+0xb6c>
  49b700:	00000000 	nop
			}
		if (l != -8)
  49b704:	8fc30030 	lw	v1,48(s8)
  49b708:	2402fff8 	li	v0,-8
  49b70c:	106200d6 	beq	v1,v0,49ba68 <BF_cbc_encrypt+0x1208>
  49b710:	00000000 	nop
			{
			n2l(in,tin0);
  49b714:	8fc30058 	lw	v1,88(s8)
  49b718:	00000000 	nop
  49b71c:	00601021 	move	v0,v1
  49b720:	90420000 	lbu	v0,0(v0)
  49b724:	00000000 	nop
  49b728:	00021600 	sll	v0,v0,0x18
  49b72c:	afc20018 	sw	v0,24(s8)
  49b730:	24630001 	addiu	v1,v1,1
  49b734:	afc30058 	sw	v1,88(s8)
  49b738:	8fc30058 	lw	v1,88(s8)
  49b73c:	00000000 	nop
  49b740:	00601021 	move	v0,v1
  49b744:	90420000 	lbu	v0,0(v0)
  49b748:	00000000 	nop
  49b74c:	00022400 	sll	a0,v0,0x10
  49b750:	8fc20018 	lw	v0,24(s8)
  49b754:	00000000 	nop
  49b758:	00441025 	or	v0,v0,a0
  49b75c:	afc20018 	sw	v0,24(s8)
  49b760:	24630001 	addiu	v1,v1,1
  49b764:	afc30058 	sw	v1,88(s8)
  49b768:	8fc30058 	lw	v1,88(s8)
  49b76c:	00000000 	nop
  49b770:	00601021 	move	v0,v1
  49b774:	90420000 	lbu	v0,0(v0)
  49b778:	00000000 	nop
  49b77c:	00022200 	sll	a0,v0,0x8
  49b780:	8fc20018 	lw	v0,24(s8)
  49b784:	00000000 	nop
  49b788:	00441025 	or	v0,v0,a0
  49b78c:	afc20018 	sw	v0,24(s8)
  49b790:	24630001 	addiu	v1,v1,1
  49b794:	afc30058 	sw	v1,88(s8)
  49b798:	8fc30058 	lw	v1,88(s8)
  49b79c:	00000000 	nop
  49b7a0:	00601021 	move	v0,v1
  49b7a4:	90440000 	lbu	a0,0(v0)
  49b7a8:	8fc20018 	lw	v0,24(s8)
  49b7ac:	00000000 	nop
  49b7b0:	00441025 	or	v0,v0,a0
  49b7b4:	afc20018 	sw	v0,24(s8)
  49b7b8:	24630001 	addiu	v1,v1,1
  49b7bc:	afc30058 	sw	v1,88(s8)
			n2l(in,tin1);
  49b7c0:	8fc30058 	lw	v1,88(s8)
  49b7c4:	00000000 	nop
  49b7c8:	00601021 	move	v0,v1
  49b7cc:	90420000 	lbu	v0,0(v0)
  49b7d0:	00000000 	nop
  49b7d4:	00021600 	sll	v0,v0,0x18
  49b7d8:	afc2001c 	sw	v0,28(s8)
  49b7dc:	24630001 	addiu	v1,v1,1
  49b7e0:	afc30058 	sw	v1,88(s8)
  49b7e4:	8fc30058 	lw	v1,88(s8)
  49b7e8:	00000000 	nop
  49b7ec:	00601021 	move	v0,v1
  49b7f0:	90420000 	lbu	v0,0(v0)
  49b7f4:	00000000 	nop
  49b7f8:	00022400 	sll	a0,v0,0x10
  49b7fc:	8fc2001c 	lw	v0,28(s8)
  49b800:	00000000 	nop
  49b804:	00441025 	or	v0,v0,a0
  49b808:	afc2001c 	sw	v0,28(s8)
  49b80c:	24630001 	addiu	v1,v1,1
  49b810:	afc30058 	sw	v1,88(s8)
  49b814:	8fc30058 	lw	v1,88(s8)
  49b818:	00000000 	nop
  49b81c:	00601021 	move	v0,v1
  49b820:	90420000 	lbu	v0,0(v0)
  49b824:	00000000 	nop
  49b828:	00022200 	sll	a0,v0,0x8
  49b82c:	8fc2001c 	lw	v0,28(s8)
  49b830:	00000000 	nop
  49b834:	00441025 	or	v0,v0,a0
  49b838:	afc2001c 	sw	v0,28(s8)
  49b83c:	24630001 	addiu	v1,v1,1
  49b840:	afc30058 	sw	v1,88(s8)
  49b844:	8fc30058 	lw	v1,88(s8)
  49b848:	00000000 	nop
  49b84c:	00601021 	move	v0,v1
  49b850:	90440000 	lbu	a0,0(v0)
  49b854:	8fc2001c 	lw	v0,28(s8)
  49b858:	00000000 	nop
  49b85c:	00441025 	or	v0,v0,a0
  49b860:	afc2001c 	sw	v0,28(s8)
  49b864:	24630001 	addiu	v1,v1,1
  49b868:	afc30058 	sw	v1,88(s8)
			tin[0]=tin0;
  49b86c:	8fc20018 	lw	v0,24(s8)
  49b870:	00000000 	nop
  49b874:	afc20038 	sw	v0,56(s8)
			tin[1]=tin1;
  49b878:	8fc2001c 	lw	v0,28(s8)
  49b87c:	00000000 	nop
  49b880:	afc2003c 	sw	v0,60(s8)
			BF_decrypt(tin,schedule);
  49b884:	27c40038 	addiu	a0,s8,56
  49b888:	8fc50064 	lw	a1,100(s8)
  49b88c:	8f998190 	lw	t9,-32368(gp)
  49b890:	00000000 	nop
  49b894:	0320f809 	jalr	t9
  49b898:	00000000 	nop
  49b89c:	8fdc0010 	lw	gp,16(s8)
  49b8a0:	00000000 	nop
			tout0=tin[0]^xor0;
  49b8a4:	8fc30038 	lw	v1,56(s8)
  49b8a8:	8fc20028 	lw	v0,40(s8)
  49b8ac:	00000000 	nop
  49b8b0:	00621026 	xor	v0,v1,v0
  49b8b4:	afc20020 	sw	v0,32(s8)
			tout1=tin[1]^xor1;
  49b8b8:	8fc3003c 	lw	v1,60(s8)
  49b8bc:	8fc2002c 	lw	v0,44(s8)
  49b8c0:	00000000 	nop
  49b8c4:	00621026 	xor	v0,v1,v0
  49b8c8:	afc20024 	sw	v0,36(s8)
			l2nn(tout0,tout1,out,l+8);
  49b8cc:	8fc3005c 	lw	v1,92(s8)
  49b8d0:	8fc20030 	lw	v0,48(s8)
  49b8d4:	00000000 	nop
  49b8d8:	00621021 	addu	v0,v1,v0
  49b8dc:	24420008 	addiu	v0,v0,8
  49b8e0:	afc2005c 	sw	v0,92(s8)
  49b8e4:	8fc20030 	lw	v0,48(s8)
  49b8e8:	00000000 	nop
  49b8ec:	24420007 	addiu	v0,v0,7
  49b8f0:	afc20044 	sw	v0,68(s8)
  49b8f4:	8fc30044 	lw	v1,68(s8)
  49b8f8:	00000000 	nop
  49b8fc:	2c620008 	sltiu	v0,v1,8
  49b900:	10400053 	beqz	v0,49ba50 <BF_cbc_encrypt+0x11f0>
  49b904:	00000000 	nop
  49b908:	8fc20044 	lw	v0,68(s8)
  49b90c:	00000000 	nop
  49b910:	00021080 	sll	v0,v0,0x2
  49b914:	8f81804c 	lw	at,-32692(gp)
  49b918:	00000000 	nop
  49b91c:	24213410 	addiu	at,at,13328
  49b920:	00221021 	addu	v0,at,v0
  49b924:	8c420000 	lw	v0,0(v0)
  49b928:	00000000 	nop
  49b92c:	005c1021 	addu	v0,v0,gp
  49b930:	00400008 	jr	v0
  49b934:	00000000 	nop
  49b938:	8fc2005c 	lw	v0,92(s8)
  49b93c:	00000000 	nop
  49b940:	2442ffff 	addiu	v0,v0,-1
  49b944:	00401821 	move	v1,v0
  49b948:	afc3005c 	sw	v1,92(s8)
  49b94c:	93c20027 	lbu	v0,39(s8)
  49b950:	00000000 	nop
  49b954:	a0620000 	sb	v0,0(v1)
  49b958:	8fc2005c 	lw	v0,92(s8)
  49b95c:	00000000 	nop
  49b960:	2442ffff 	addiu	v0,v0,-1
  49b964:	00401821 	move	v1,v0
  49b968:	afc3005c 	sw	v1,92(s8)
  49b96c:	8fc20024 	lw	v0,36(s8)
  49b970:	00000000 	nop
  49b974:	00021202 	srl	v0,v0,0x8
  49b978:	a0620000 	sb	v0,0(v1)
  49b97c:	8fc2005c 	lw	v0,92(s8)
  49b980:	00000000 	nop
  49b984:	2442ffff 	addiu	v0,v0,-1
  49b988:	00401821 	move	v1,v0
  49b98c:	afc3005c 	sw	v1,92(s8)
  49b990:	8fc20024 	lw	v0,36(s8)
  49b994:	00000000 	nop
  49b998:	00021402 	srl	v0,v0,0x10
  49b99c:	a0620000 	sb	v0,0(v1)
  49b9a0:	8fc2005c 	lw	v0,92(s8)
  49b9a4:	00000000 	nop
  49b9a8:	2442ffff 	addiu	v0,v0,-1
  49b9ac:	00401821 	move	v1,v0
  49b9b0:	afc3005c 	sw	v1,92(s8)
  49b9b4:	8fc20024 	lw	v0,36(s8)
  49b9b8:	00000000 	nop
  49b9bc:	00021602 	srl	v0,v0,0x18
  49b9c0:	a0620000 	sb	v0,0(v1)
  49b9c4:	8fc2005c 	lw	v0,92(s8)
  49b9c8:	00000000 	nop
  49b9cc:	2442ffff 	addiu	v0,v0,-1
  49b9d0:	00401821 	move	v1,v0
  49b9d4:	afc3005c 	sw	v1,92(s8)
  49b9d8:	93c20023 	lbu	v0,35(s8)
  49b9dc:	00000000 	nop
  49b9e0:	a0620000 	sb	v0,0(v1)
  49b9e4:	8fc2005c 	lw	v0,92(s8)
  49b9e8:	00000000 	nop
  49b9ec:	2442ffff 	addiu	v0,v0,-1
  49b9f0:	00401821 	move	v1,v0
  49b9f4:	afc3005c 	sw	v1,92(s8)
  49b9f8:	8fc20020 	lw	v0,32(s8)
  49b9fc:	00000000 	nop
  49ba00:	00021202 	srl	v0,v0,0x8
  49ba04:	a0620000 	sb	v0,0(v1)
  49ba08:	8fc2005c 	lw	v0,92(s8)
  49ba0c:	00000000 	nop
  49ba10:	2442ffff 	addiu	v0,v0,-1
  49ba14:	00401821 	move	v1,v0
  49ba18:	afc3005c 	sw	v1,92(s8)
  49ba1c:	8fc20020 	lw	v0,32(s8)
  49ba20:	00000000 	nop
  49ba24:	00021402 	srl	v0,v0,0x10
  49ba28:	a0620000 	sb	v0,0(v1)
  49ba2c:	8fc2005c 	lw	v0,92(s8)
  49ba30:	00000000 	nop
  49ba34:	2442ffff 	addiu	v0,v0,-1
  49ba38:	00401821 	move	v1,v0
  49ba3c:	afc3005c 	sw	v1,92(s8)
  49ba40:	8fc20020 	lw	v0,32(s8)
  49ba44:	00000000 	nop
  49ba48:	00021602 	srl	v0,v0,0x18
  49ba4c:	a0620000 	sb	v0,0(v1)
			xor0=tin0;
  49ba50:	8fc20018 	lw	v0,24(s8)
  49ba54:	00000000 	nop
  49ba58:	afc20028 	sw	v0,40(s8)
			xor1=tin1;
  49ba5c:	8fc2001c 	lw	v0,28(s8)
  49ba60:	00000000 	nop
  49ba64:	afc2002c 	sw	v0,44(s8)
			}
		l2n(xor0,ivec);
  49ba68:	27c50068 	addiu	a1,s8,104
  49ba6c:	8ca30000 	lw	v1,0(a1)
  49ba70:	8fc20028 	lw	v0,40(s8)
  49ba74:	00000000 	nop
  49ba78:	00021602 	srl	v0,v0,0x18
  49ba7c:	00402021 	move	a0,v0
  49ba80:	00601021 	move	v0,v1
  49ba84:	a0440000 	sb	a0,0(v0)
  49ba88:	24630001 	addiu	v1,v1,1
  49ba8c:	aca30000 	sw	v1,0(a1)
  49ba90:	27c50068 	addiu	a1,s8,104
  49ba94:	8ca30000 	lw	v1,0(a1)
  49ba98:	8fc20028 	lw	v0,40(s8)
  49ba9c:	00000000 	nop
  49baa0:	00021402 	srl	v0,v0,0x10
  49baa4:	00402021 	move	a0,v0
  49baa8:	00601021 	move	v0,v1
  49baac:	a0440000 	sb	a0,0(v0)
  49bab0:	24630001 	addiu	v1,v1,1
  49bab4:	aca30000 	sw	v1,0(a1)
  49bab8:	27c50068 	addiu	a1,s8,104
  49babc:	8ca30000 	lw	v1,0(a1)
  49bac0:	8fc20028 	lw	v0,40(s8)
  49bac4:	00000000 	nop
  49bac8:	00021202 	srl	v0,v0,0x8
  49bacc:	00402021 	move	a0,v0
  49bad0:	00601021 	move	v0,v1
  49bad4:	a0440000 	sb	a0,0(v0)
  49bad8:	24630001 	addiu	v1,v1,1
  49badc:	aca30000 	sw	v1,0(a1)
  49bae0:	27c50068 	addiu	a1,s8,104
  49bae4:	8ca20000 	lw	v0,0(a1)
  49bae8:	00000000 	nop
  49baec:	00402021 	move	a0,v0
  49baf0:	93c3002b 	lbu	v1,43(s8)
  49baf4:	00000000 	nop
  49baf8:	a0830000 	sb	v1,0(a0)
  49bafc:	24420001 	addiu	v0,v0,1
  49bb00:	aca20000 	sw	v0,0(a1)
		l2n(xor1,ivec);
  49bb04:	27c50068 	addiu	a1,s8,104
  49bb08:	8ca30000 	lw	v1,0(a1)
  49bb0c:	8fc2002c 	lw	v0,44(s8)
  49bb10:	00000000 	nop
  49bb14:	00021602 	srl	v0,v0,0x18
  49bb18:	00402021 	move	a0,v0
  49bb1c:	00601021 	move	v0,v1
  49bb20:	a0440000 	sb	a0,0(v0)
  49bb24:	24630001 	addiu	v1,v1,1
  49bb28:	aca30000 	sw	v1,0(a1)
  49bb2c:	27c50068 	addiu	a1,s8,104
  49bb30:	8ca30000 	lw	v1,0(a1)
  49bb34:	8fc2002c 	lw	v0,44(s8)
  49bb38:	00000000 	nop
  49bb3c:	00021402 	srl	v0,v0,0x10
  49bb40:	00402021 	move	a0,v0
  49bb44:	00601021 	move	v0,v1
  49bb48:	a0440000 	sb	a0,0(v0)
  49bb4c:	24630001 	addiu	v1,v1,1
  49bb50:	aca30000 	sw	v1,0(a1)
  49bb54:	27c50068 	addiu	a1,s8,104
  49bb58:	8ca30000 	lw	v1,0(a1)
  49bb5c:	8fc2002c 	lw	v0,44(s8)
  49bb60:	00000000 	nop
  49bb64:	00021202 	srl	v0,v0,0x8
  49bb68:	00402021 	move	a0,v0
  49bb6c:	00601021 	move	v0,v1
  49bb70:	a0440000 	sb	a0,0(v0)
  49bb74:	24630001 	addiu	v1,v1,1
  49bb78:	aca30000 	sw	v1,0(a1)
  49bb7c:	27c50068 	addiu	a1,s8,104
  49bb80:	8ca20000 	lw	v0,0(a1)
  49bb84:	00000000 	nop
  49bb88:	00402021 	move	a0,v0
  49bb8c:	93c3002f 	lbu	v1,47(s8)
  49bb90:	00000000 	nop
  49bb94:	a0830000 	sb	v1,0(a0)
  49bb98:	24420001 	addiu	v0,v0,1
  49bb9c:	aca20000 	sw	v0,0(a1)
		}
	tin0=tin1=tout0=tout1=xor0=xor1=0;
  49bba0:	afc0002c 	sw	zero,44(s8)
  49bba4:	afc00028 	sw	zero,40(s8)
  49bba8:	afc00024 	sw	zero,36(s8)
  49bbac:	afc00020 	sw	zero,32(s8)
  49bbb0:	afc0001c 	sw	zero,28(s8)
  49bbb4:	afc00018 	sw	zero,24(s8)
	tin[0]=tin[1]=0;
  49bbb8:	afc0003c 	sw	zero,60(s8)
  49bbbc:	afc00038 	sw	zero,56(s8)
	}
  49bbc0:	03c0e821 	move	sp,s8
  49bbc4:	8fbf0050 	lw	ra,80(sp)
  49bbc8:	8fbe004c 	lw	s8,76(sp)
  49bbcc:	27bd0058 	addiu	sp,sp,88
  49bbd0:	03e00008 	jr	ra
  49bbd4:	00000000 	nop
	...

0049bbe0 <CAST_set_key>:
  49bbe0:	3c1c0fb7 	lui	gp,0xfb7
  49bbe4:	279c0d90 	addiu	gp,gp,3472
  49bbe8:	0399e021 	addu	gp,gp,t9
  49bbec:	27bdfec0 	addiu	sp,sp,-320
  49bbf0:	afbc0000 	sw	gp,0(sp)
  49bbf4:	afbe013c 	sw	s8,316(sp)
  49bbf8:	afbc0138 	sw	gp,312(sp)
  49bbfc:	03a0f021 	move	s8,sp
  49bc00:	afc40140 	sw	a0,320(s8)
  49bc04:	afc50144 	sw	a1,324(s8)
  49bc08:	afc60148 	sw	a2,328(s8)
	CAST_LONG X[4],Z[4];
	CAST_LONG l,*K;
	int i;

	for (i=0; i<16; i++) x[i]=0;
  49bc0c:	afc00130 	sw	zero,304(s8)
  49bc10:	8fc20130 	lw	v0,304(s8)
  49bc14:	00000000 	nop
  49bc18:	28420010 	slti	v0,v0,16
  49bc1c:	14400003 	bnez	v0,49bc2c <CAST_set_key+0x4c>
  49bc20:	00000000 	nop
  49bc24:	1000000d 	b	49bc5c <CAST_set_key+0x7c>
  49bc28:	00000000 	nop
  49bc2c:	8fc20130 	lw	v0,304(s8)
  49bc30:	00000000 	nop
  49bc34:	00021880 	sll	v1,v0,0x2
  49bc38:	27c20008 	addiu	v0,s8,8
  49bc3c:	00431021 	addu	v0,v0,v1
  49bc40:	ac400000 	sw	zero,0(v0)
  49bc44:	8fc20130 	lw	v0,304(s8)
  49bc48:	00000000 	nop
  49bc4c:	24420001 	addiu	v0,v0,1
  49bc50:	afc20130 	sw	v0,304(s8)
  49bc54:	1000ffee 	b	49bc10 <CAST_set_key+0x30>
  49bc58:	00000000 	nop
	if (len > 16) len=16;
  49bc5c:	8fc20144 	lw	v0,324(s8)
  49bc60:	00000000 	nop
  49bc64:	28420011 	slti	v0,v0,17
  49bc68:	14400003 	bnez	v0,49bc78 <CAST_set_key+0x98>
  49bc6c:	00000000 	nop
  49bc70:	24020010 	li	v0,16
  49bc74:	afc20144 	sw	v0,324(s8)
	for (i=0; i<len; i++)
  49bc78:	afc00130 	sw	zero,304(s8)
  49bc7c:	8fc20130 	lw	v0,304(s8)
  49bc80:	8fc30144 	lw	v1,324(s8)
  49bc84:	00000000 	nop
  49bc88:	0043102a 	slt	v0,v0,v1
  49bc8c:	14400003 	bnez	v0,49bc9c <CAST_set_key+0xbc>
  49bc90:	00000000 	nop
  49bc94:	10000013 	b	49bce4 <CAST_set_key+0x104>
  49bc98:	00000000 	nop
		x[i]=data[i];
  49bc9c:	8fc20130 	lw	v0,304(s8)
  49bca0:	00000000 	nop
  49bca4:	00021880 	sll	v1,v0,0x2
  49bca8:	27c20008 	addiu	v0,s8,8
  49bcac:	00432021 	addu	a0,v0,v1
  49bcb0:	8fc30148 	lw	v1,328(s8)
  49bcb4:	8fc20130 	lw	v0,304(s8)
  49bcb8:	00000000 	nop
  49bcbc:	00621021 	addu	v0,v1,v0
  49bcc0:	90420000 	lbu	v0,0(v0)
  49bcc4:	00000000 	nop
  49bcc8:	ac820000 	sw	v0,0(a0)
  49bccc:	8fc20130 	lw	v0,304(s8)
  49bcd0:	00000000 	nop
  49bcd4:	24420001 	addiu	v0,v0,1
  49bcd8:	afc20130 	sw	v0,304(s8)
  49bcdc:	1000ffe7 	b	49bc7c <CAST_set_key+0x9c>
  49bce0:	00000000 	nop
	if(len <= 10)
  49bce4:	8fc20144 	lw	v0,324(s8)
  49bce8:	00000000 	nop
  49bcec:	2842000b 	slti	v0,v0,11
  49bcf0:	10400007 	beqz	v0,49bd10 <CAST_set_key+0x130>
  49bcf4:	00000000 	nop
	    key->short_key=1;
  49bcf8:	24030001 	li	v1,1
  49bcfc:	8fc20140 	lw	v0,320(s8)
  49bd00:	00000000 	nop
  49bd04:	ac430080 	sw	v1,128(v0)
  49bd08:	10000004 	b	49bd1c <CAST_set_key+0x13c>
  49bd0c:	00000000 	nop
	else
	    key->short_key=0;
  49bd10:	8fc20140 	lw	v0,320(s8)
  49bd14:	00000000 	nop
  49bd18:	ac400080 	sw	zero,128(v0)

	K= &k[0];
  49bd1c:	27c20088 	addiu	v0,s8,136
  49bd20:	afc2012c 	sw	v0,300(s8)
	X[0]=((x[ 0]<<24)|(x[ 1]<<16)|(x[ 2]<<8)|x[ 3])&0xffffffffL;
  49bd24:	8fc20008 	lw	v0,8(s8)
  49bd28:	00000000 	nop
  49bd2c:	00021e00 	sll	v1,v0,0x18
  49bd30:	8fc2000c 	lw	v0,12(s8)
  49bd34:	00000000 	nop
  49bd38:	00021400 	sll	v0,v0,0x10
  49bd3c:	00621825 	or	v1,v1,v0
  49bd40:	8fc20010 	lw	v0,16(s8)
  49bd44:	00000000 	nop
  49bd48:	00021200 	sll	v0,v0,0x8
  49bd4c:	00621825 	or	v1,v1,v0
  49bd50:	8fc20014 	lw	v0,20(s8)
  49bd54:	00000000 	nop
  49bd58:	00621025 	or	v0,v1,v0
  49bd5c:	afc20108 	sw	v0,264(s8)
	X[1]=((x[ 4]<<24)|(x[ 5]<<16)|(x[ 6]<<8)|x[ 7])&0xffffffffL;
  49bd60:	8fc20018 	lw	v0,24(s8)
  49bd64:	00000000 	nop
  49bd68:	00021e00 	sll	v1,v0,0x18
  49bd6c:	8fc2001c 	lw	v0,28(s8)
  49bd70:	00000000 	nop
  49bd74:	00021400 	sll	v0,v0,0x10
  49bd78:	00621825 	or	v1,v1,v0
  49bd7c:	8fc20020 	lw	v0,32(s8)
  49bd80:	00000000 	nop
  49bd84:	00021200 	sll	v0,v0,0x8
  49bd88:	00621825 	or	v1,v1,v0
  49bd8c:	8fc20024 	lw	v0,36(s8)
  49bd90:	00000000 	nop
  49bd94:	00621025 	or	v0,v1,v0
  49bd98:	afc2010c 	sw	v0,268(s8)
	X[2]=((x[ 8]<<24)|(x[ 9]<<16)|(x[10]<<8)|x[11])&0xffffffffL;
  49bd9c:	8fc20028 	lw	v0,40(s8)
  49bda0:	00000000 	nop
  49bda4:	00021e00 	sll	v1,v0,0x18
  49bda8:	8fc2002c 	lw	v0,44(s8)
  49bdac:	00000000 	nop
  49bdb0:	00021400 	sll	v0,v0,0x10
  49bdb4:	00621825 	or	v1,v1,v0
  49bdb8:	8fc20030 	lw	v0,48(s8)
  49bdbc:	00000000 	nop
  49bdc0:	00021200 	sll	v0,v0,0x8
  49bdc4:	00621825 	or	v1,v1,v0
  49bdc8:	8fc20034 	lw	v0,52(s8)
  49bdcc:	00000000 	nop
  49bdd0:	00621025 	or	v0,v1,v0
  49bdd4:	afc20110 	sw	v0,272(s8)
	X[3]=((x[12]<<24)|(x[13]<<16)|(x[14]<<8)|x[15])&0xffffffffL;
  49bdd8:	8fc20038 	lw	v0,56(s8)
  49bddc:	00000000 	nop
  49bde0:	00021e00 	sll	v1,v0,0x18
  49bde4:	8fc2003c 	lw	v0,60(s8)
  49bde8:	00000000 	nop
  49bdec:	00021400 	sll	v0,v0,0x10
  49bdf0:	00621825 	or	v1,v1,v0
  49bdf4:	8fc20040 	lw	v0,64(s8)
  49bdf8:	00000000 	nop
  49bdfc:	00021200 	sll	v0,v0,0x8
  49be00:	00621825 	or	v1,v1,v0
  49be04:	8fc20044 	lw	v0,68(s8)
  49be08:	00000000 	nop
  49be0c:	00621025 	or	v0,v1,v0
  49be10:	afc20114 	sw	v0,276(s8)

	for (;;)
		{
	l=X[0]^S4[x[13]]^S5[x[15]]^S6[x[12]]^S7[x[14]]^S6[x[ 8]];
  49be14:	8fc2003c 	lw	v0,60(s8)
  49be18:	00000000 	nop
  49be1c:	00021080 	sll	v0,v0,0x2
  49be20:	8f8187ec 	lw	at,-30740(gp)
  49be24:	00000000 	nop
  49be28:	00221021 	addu	v0,at,v0
  49be2c:	8c430000 	lw	v1,0(v0)
  49be30:	8fc20108 	lw	v0,264(s8)
  49be34:	00000000 	nop
  49be38:	00431826 	xor	v1,v0,v1
  49be3c:	8fc20044 	lw	v0,68(s8)
  49be40:	00000000 	nop
  49be44:	00021080 	sll	v0,v0,0x2
  49be48:	8f8186fc 	lw	at,-30980(gp)
  49be4c:	00000000 	nop
  49be50:	00221021 	addu	v0,at,v0
  49be54:	8c420000 	lw	v0,0(v0)
  49be58:	00000000 	nop
  49be5c:	00621826 	xor	v1,v1,v0
  49be60:	8fc20038 	lw	v0,56(s8)
  49be64:	00000000 	nop
  49be68:	00021080 	sll	v0,v0,0x2
  49be6c:	8f8184cc 	lw	at,-31540(gp)
  49be70:	00000000 	nop
  49be74:	00221021 	addu	v0,at,v0
  49be78:	8c420000 	lw	v0,0(v0)
  49be7c:	00000000 	nop
  49be80:	00621826 	xor	v1,v1,v0
  49be84:	8fc20040 	lw	v0,64(s8)
  49be88:	00000000 	nop
  49be8c:	00021080 	sll	v0,v0,0x2
  49be90:	8f81899c 	lw	at,-30308(gp)
  49be94:	00000000 	nop
  49be98:	00221021 	addu	v0,at,v0
  49be9c:	8c420000 	lw	v0,0(v0)
  49bea0:	00000000 	nop
  49bea4:	00621826 	xor	v1,v1,v0
  49bea8:	8fc20028 	lw	v0,40(s8)
  49beac:	00000000 	nop
  49beb0:	00021080 	sll	v0,v0,0x2
  49beb4:	8f8184cc 	lw	at,-31540(gp)
  49beb8:	00000000 	nop
  49bebc:	00221021 	addu	v0,at,v0
  49bec0:	8c420000 	lw	v0,0(v0)
  49bec4:	00000000 	nop
  49bec8:	00621026 	xor	v0,v1,v0
  49becc:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z, 0);
  49bed0:	8fc20128 	lw	v0,296(s8)
  49bed4:	00000000 	nop
  49bed8:	afc20118 	sw	v0,280(s8)
  49bedc:	8fc20128 	lw	v0,296(s8)
  49bee0:	00000000 	nop
  49bee4:	304200ff 	andi	v0,v0,0xff
  49bee8:	afc20054 	sw	v0,84(s8)
  49beec:	8fc20128 	lw	v0,296(s8)
  49bef0:	00000000 	nop
  49bef4:	00021202 	srl	v0,v0,0x8
  49bef8:	304200ff 	andi	v0,v0,0xff
  49befc:	afc20050 	sw	v0,80(s8)
  49bf00:	8fc20128 	lw	v0,296(s8)
  49bf04:	00000000 	nop
  49bf08:	00021402 	srl	v0,v0,0x10
  49bf0c:	304200ff 	andi	v0,v0,0xff
  49bf10:	afc2004c 	sw	v0,76(s8)
  49bf14:	8fc20128 	lw	v0,296(s8)
  49bf18:	00000000 	nop
  49bf1c:	00021602 	srl	v0,v0,0x18
  49bf20:	304200ff 	andi	v0,v0,0xff
  49bf24:	afc20048 	sw	v0,72(s8)
	l=X[2]^S4[z[ 0]]^S5[z[ 2]]^S6[z[ 1]]^S7[z[ 3]]^S7[x[10]];
  49bf28:	8fc20048 	lw	v0,72(s8)
  49bf2c:	00000000 	nop
  49bf30:	00021080 	sll	v0,v0,0x2
  49bf34:	8f8187ec 	lw	at,-30740(gp)
  49bf38:	00000000 	nop
  49bf3c:	00221021 	addu	v0,at,v0
  49bf40:	8c430000 	lw	v1,0(v0)
  49bf44:	8fc20110 	lw	v0,272(s8)
  49bf48:	00000000 	nop
  49bf4c:	00431826 	xor	v1,v0,v1
  49bf50:	8fc20050 	lw	v0,80(s8)
  49bf54:	00000000 	nop
  49bf58:	00021080 	sll	v0,v0,0x2
  49bf5c:	8f8186fc 	lw	at,-30980(gp)
  49bf60:	00000000 	nop
  49bf64:	00221021 	addu	v0,at,v0
  49bf68:	8c420000 	lw	v0,0(v0)
  49bf6c:	00000000 	nop
  49bf70:	00621826 	xor	v1,v1,v0
  49bf74:	8fc2004c 	lw	v0,76(s8)
  49bf78:	00000000 	nop
  49bf7c:	00021080 	sll	v0,v0,0x2
  49bf80:	8f8184cc 	lw	at,-31540(gp)
  49bf84:	00000000 	nop
  49bf88:	00221021 	addu	v0,at,v0
  49bf8c:	8c420000 	lw	v0,0(v0)
  49bf90:	00000000 	nop
  49bf94:	00621826 	xor	v1,v1,v0
  49bf98:	8fc20054 	lw	v0,84(s8)
  49bf9c:	00000000 	nop
  49bfa0:	00021080 	sll	v0,v0,0x2
  49bfa4:	8f81899c 	lw	at,-30308(gp)
  49bfa8:	00000000 	nop
  49bfac:	00221021 	addu	v0,at,v0
  49bfb0:	8c420000 	lw	v0,0(v0)
  49bfb4:	00000000 	nop
  49bfb8:	00621826 	xor	v1,v1,v0
  49bfbc:	8fc20030 	lw	v0,48(s8)
  49bfc0:	00000000 	nop
  49bfc4:	00021080 	sll	v0,v0,0x2
  49bfc8:	8f81899c 	lw	at,-30308(gp)
  49bfcc:	00000000 	nop
  49bfd0:	00221021 	addu	v0,at,v0
  49bfd4:	8c420000 	lw	v0,0(v0)
  49bfd8:	00000000 	nop
  49bfdc:	00621026 	xor	v0,v1,v0
  49bfe0:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z, 4);
  49bfe4:	8fc20128 	lw	v0,296(s8)
  49bfe8:	00000000 	nop
  49bfec:	afc2011c 	sw	v0,284(s8)
  49bff0:	8fc20128 	lw	v0,296(s8)
  49bff4:	00000000 	nop
  49bff8:	304200ff 	andi	v0,v0,0xff
  49bffc:	afc20064 	sw	v0,100(s8)
  49c000:	8fc20128 	lw	v0,296(s8)
  49c004:	00000000 	nop
  49c008:	00021202 	srl	v0,v0,0x8
  49c00c:	304200ff 	andi	v0,v0,0xff
  49c010:	afc20060 	sw	v0,96(s8)
  49c014:	8fc20128 	lw	v0,296(s8)
  49c018:	00000000 	nop
  49c01c:	00021402 	srl	v0,v0,0x10
  49c020:	304200ff 	andi	v0,v0,0xff
  49c024:	afc2005c 	sw	v0,92(s8)
  49c028:	8fc20128 	lw	v0,296(s8)
  49c02c:	00000000 	nop
  49c030:	00021602 	srl	v0,v0,0x18
  49c034:	304200ff 	andi	v0,v0,0xff
  49c038:	afc20058 	sw	v0,88(s8)
	l=X[3]^S4[z[ 7]]^S5[z[ 6]]^S6[z[ 5]]^S7[z[ 4]]^S4[x[ 9]];
  49c03c:	8fc20064 	lw	v0,100(s8)
  49c040:	00000000 	nop
  49c044:	00021080 	sll	v0,v0,0x2
  49c048:	8f8187ec 	lw	at,-30740(gp)
  49c04c:	00000000 	nop
  49c050:	00221021 	addu	v0,at,v0
  49c054:	8c430000 	lw	v1,0(v0)
  49c058:	8fc20114 	lw	v0,276(s8)
  49c05c:	00000000 	nop
  49c060:	00431826 	xor	v1,v0,v1
  49c064:	8fc20060 	lw	v0,96(s8)
  49c068:	00000000 	nop
  49c06c:	00021080 	sll	v0,v0,0x2
  49c070:	8f8186fc 	lw	at,-30980(gp)
  49c074:	00000000 	nop
  49c078:	00221021 	addu	v0,at,v0
  49c07c:	8c420000 	lw	v0,0(v0)
  49c080:	00000000 	nop
  49c084:	00621826 	xor	v1,v1,v0
  49c088:	8fc2005c 	lw	v0,92(s8)
  49c08c:	00000000 	nop
  49c090:	00021080 	sll	v0,v0,0x2
  49c094:	8f8184cc 	lw	at,-31540(gp)
  49c098:	00000000 	nop
  49c09c:	00221021 	addu	v0,at,v0
  49c0a0:	8c420000 	lw	v0,0(v0)
  49c0a4:	00000000 	nop
  49c0a8:	00621826 	xor	v1,v1,v0
  49c0ac:	8fc20058 	lw	v0,88(s8)
  49c0b0:	00000000 	nop
  49c0b4:	00021080 	sll	v0,v0,0x2
  49c0b8:	8f81899c 	lw	at,-30308(gp)
  49c0bc:	00000000 	nop
  49c0c0:	00221021 	addu	v0,at,v0
  49c0c4:	8c420000 	lw	v0,0(v0)
  49c0c8:	00000000 	nop
  49c0cc:	00621826 	xor	v1,v1,v0
  49c0d0:	8fc2002c 	lw	v0,44(s8)
  49c0d4:	00000000 	nop
  49c0d8:	00021080 	sll	v0,v0,0x2
  49c0dc:	8f8187ec 	lw	at,-30740(gp)
  49c0e0:	00000000 	nop
  49c0e4:	00221021 	addu	v0,at,v0
  49c0e8:	8c420000 	lw	v0,0(v0)
  49c0ec:	00000000 	nop
  49c0f0:	00621026 	xor	v0,v1,v0
  49c0f4:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z, 8);
  49c0f8:	8fc20128 	lw	v0,296(s8)
  49c0fc:	00000000 	nop
  49c100:	afc20120 	sw	v0,288(s8)
  49c104:	8fc20128 	lw	v0,296(s8)
  49c108:	00000000 	nop
  49c10c:	304200ff 	andi	v0,v0,0xff
  49c110:	afc20074 	sw	v0,116(s8)
  49c114:	8fc20128 	lw	v0,296(s8)
  49c118:	00000000 	nop
  49c11c:	00021202 	srl	v0,v0,0x8
  49c120:	304200ff 	andi	v0,v0,0xff
  49c124:	afc20070 	sw	v0,112(s8)
  49c128:	8fc20128 	lw	v0,296(s8)
  49c12c:	00000000 	nop
  49c130:	00021402 	srl	v0,v0,0x10
  49c134:	304200ff 	andi	v0,v0,0xff
  49c138:	afc2006c 	sw	v0,108(s8)
  49c13c:	8fc20128 	lw	v0,296(s8)
  49c140:	00000000 	nop
  49c144:	00021602 	srl	v0,v0,0x18
  49c148:	304200ff 	andi	v0,v0,0xff
  49c14c:	afc20068 	sw	v0,104(s8)
	l=X[1]^S4[z[10]]^S5[z[ 9]]^S6[z[11]]^S7[z[ 8]]^S5[x[11]];
  49c150:	8fc20070 	lw	v0,112(s8)
  49c154:	00000000 	nop
  49c158:	00021080 	sll	v0,v0,0x2
  49c15c:	8f8187ec 	lw	at,-30740(gp)
  49c160:	00000000 	nop
  49c164:	00221021 	addu	v0,at,v0
  49c168:	8c430000 	lw	v1,0(v0)
  49c16c:	8fc2010c 	lw	v0,268(s8)
  49c170:	00000000 	nop
  49c174:	00431826 	xor	v1,v0,v1
  49c178:	8fc2006c 	lw	v0,108(s8)
  49c17c:	00000000 	nop
  49c180:	00021080 	sll	v0,v0,0x2
  49c184:	8f8186fc 	lw	at,-30980(gp)
  49c188:	00000000 	nop
  49c18c:	00221021 	addu	v0,at,v0
  49c190:	8c420000 	lw	v0,0(v0)
  49c194:	00000000 	nop
  49c198:	00621826 	xor	v1,v1,v0
  49c19c:	8fc20074 	lw	v0,116(s8)
  49c1a0:	00000000 	nop
  49c1a4:	00021080 	sll	v0,v0,0x2
  49c1a8:	8f8184cc 	lw	at,-31540(gp)
  49c1ac:	00000000 	nop
  49c1b0:	00221021 	addu	v0,at,v0
  49c1b4:	8c420000 	lw	v0,0(v0)
  49c1b8:	00000000 	nop
  49c1bc:	00621826 	xor	v1,v1,v0
  49c1c0:	8fc20068 	lw	v0,104(s8)
  49c1c4:	00000000 	nop
  49c1c8:	00021080 	sll	v0,v0,0x2
  49c1cc:	8f81899c 	lw	at,-30308(gp)
  49c1d0:	00000000 	nop
  49c1d4:	00221021 	addu	v0,at,v0
  49c1d8:	8c420000 	lw	v0,0(v0)
  49c1dc:	00000000 	nop
  49c1e0:	00621826 	xor	v1,v1,v0
  49c1e4:	8fc20034 	lw	v0,52(s8)
  49c1e8:	00000000 	nop
  49c1ec:	00021080 	sll	v0,v0,0x2
  49c1f0:	8f8186fc 	lw	at,-30980(gp)
  49c1f4:	00000000 	nop
  49c1f8:	00221021 	addu	v0,at,v0
  49c1fc:	8c420000 	lw	v0,0(v0)
  49c200:	00000000 	nop
  49c204:	00621026 	xor	v0,v1,v0
  49c208:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z,12);
  49c20c:	8fc20128 	lw	v0,296(s8)
  49c210:	00000000 	nop
  49c214:	afc20124 	sw	v0,292(s8)
  49c218:	8fc20128 	lw	v0,296(s8)
  49c21c:	00000000 	nop
  49c220:	304200ff 	andi	v0,v0,0xff
  49c224:	afc20084 	sw	v0,132(s8)
  49c228:	8fc20128 	lw	v0,296(s8)
  49c22c:	00000000 	nop
  49c230:	00021202 	srl	v0,v0,0x8
  49c234:	304200ff 	andi	v0,v0,0xff
  49c238:	afc20080 	sw	v0,128(s8)
  49c23c:	8fc20128 	lw	v0,296(s8)
  49c240:	00000000 	nop
  49c244:	00021402 	srl	v0,v0,0x10
  49c248:	304200ff 	andi	v0,v0,0xff
  49c24c:	afc2007c 	sw	v0,124(s8)
  49c250:	8fc20128 	lw	v0,296(s8)
  49c254:	00000000 	nop
  49c258:	00021602 	srl	v0,v0,0x18
  49c25c:	304200ff 	andi	v0,v0,0xff
  49c260:	afc20078 	sw	v0,120(s8)

	K[ 0]= S4[z[ 8]]^S5[z[ 9]]^S6[z[ 7]]^S7[z[ 6]]^S4[z[ 2]];
  49c264:	8fc20068 	lw	v0,104(s8)
  49c268:	00000000 	nop
  49c26c:	00021080 	sll	v0,v0,0x2
  49c270:	8f8387ec 	lw	v1,-30740(gp)
  49c274:	00000000 	nop
  49c278:	00621821 	addu	v1,v1,v0
  49c27c:	8fc2006c 	lw	v0,108(s8)
  49c280:	00000000 	nop
  49c284:	00021080 	sll	v0,v0,0x2
  49c288:	8f8186fc 	lw	at,-30980(gp)
  49c28c:	00000000 	nop
  49c290:	00221021 	addu	v0,at,v0
  49c294:	8c630000 	lw	v1,0(v1)
  49c298:	8c420000 	lw	v0,0(v0)
  49c29c:	00000000 	nop
  49c2a0:	00621826 	xor	v1,v1,v0
  49c2a4:	8fc20064 	lw	v0,100(s8)
  49c2a8:	00000000 	nop
  49c2ac:	00021080 	sll	v0,v0,0x2
  49c2b0:	8f8184cc 	lw	at,-31540(gp)
  49c2b4:	00000000 	nop
  49c2b8:	00221021 	addu	v0,at,v0
  49c2bc:	8c420000 	lw	v0,0(v0)
  49c2c0:	00000000 	nop
  49c2c4:	00621826 	xor	v1,v1,v0
  49c2c8:	8fc20060 	lw	v0,96(s8)
  49c2cc:	00000000 	nop
  49c2d0:	00021080 	sll	v0,v0,0x2
  49c2d4:	8f81899c 	lw	at,-30308(gp)
  49c2d8:	00000000 	nop
  49c2dc:	00221021 	addu	v0,at,v0
  49c2e0:	8c420000 	lw	v0,0(v0)
  49c2e4:	00000000 	nop
  49c2e8:	00621826 	xor	v1,v1,v0
  49c2ec:	8fc20050 	lw	v0,80(s8)
  49c2f0:	00000000 	nop
  49c2f4:	00021080 	sll	v0,v0,0x2
  49c2f8:	8f8187ec 	lw	at,-30740(gp)
  49c2fc:	00000000 	nop
  49c300:	00221021 	addu	v0,at,v0
  49c304:	8c420000 	lw	v0,0(v0)
  49c308:	00000000 	nop
  49c30c:	00621826 	xor	v1,v1,v0
  49c310:	8fc2012c 	lw	v0,300(s8)
  49c314:	00000000 	nop
  49c318:	ac430000 	sw	v1,0(v0)
	K[ 1]= S4[z[10]]^S5[z[11]]^S6[z[ 5]]^S7[z[ 4]]^S5[z[ 6]];
  49c31c:	8fc2012c 	lw	v0,300(s8)
  49c320:	00000000 	nop
  49c324:	24440004 	addiu	a0,v0,4
  49c328:	8fc20070 	lw	v0,112(s8)
  49c32c:	00000000 	nop
  49c330:	00021080 	sll	v0,v0,0x2
  49c334:	8f8387ec 	lw	v1,-30740(gp)
  49c338:	00000000 	nop
  49c33c:	00621821 	addu	v1,v1,v0
  49c340:	8fc20074 	lw	v0,116(s8)
  49c344:	00000000 	nop
  49c348:	00021080 	sll	v0,v0,0x2
  49c34c:	8f8186fc 	lw	at,-30980(gp)
  49c350:	00000000 	nop
  49c354:	00221021 	addu	v0,at,v0
  49c358:	8c630000 	lw	v1,0(v1)
  49c35c:	8c420000 	lw	v0,0(v0)
  49c360:	00000000 	nop
  49c364:	00621826 	xor	v1,v1,v0
  49c368:	8fc2005c 	lw	v0,92(s8)
  49c36c:	00000000 	nop
  49c370:	00021080 	sll	v0,v0,0x2
  49c374:	8f8184cc 	lw	at,-31540(gp)
  49c378:	00000000 	nop
  49c37c:	00221021 	addu	v0,at,v0
  49c380:	8c420000 	lw	v0,0(v0)
  49c384:	00000000 	nop
  49c388:	00621826 	xor	v1,v1,v0
  49c38c:	8fc20058 	lw	v0,88(s8)
  49c390:	00000000 	nop
  49c394:	00021080 	sll	v0,v0,0x2
  49c398:	8f81899c 	lw	at,-30308(gp)
  49c39c:	00000000 	nop
  49c3a0:	00221021 	addu	v0,at,v0
  49c3a4:	8c420000 	lw	v0,0(v0)
  49c3a8:	00000000 	nop
  49c3ac:	00621826 	xor	v1,v1,v0
  49c3b0:	8fc20060 	lw	v0,96(s8)
  49c3b4:	00000000 	nop
  49c3b8:	00021080 	sll	v0,v0,0x2
  49c3bc:	8f8186fc 	lw	at,-30980(gp)
  49c3c0:	00000000 	nop
  49c3c4:	00221021 	addu	v0,at,v0
  49c3c8:	8c420000 	lw	v0,0(v0)
  49c3cc:	00000000 	nop
  49c3d0:	00621026 	xor	v0,v1,v0
  49c3d4:	ac820000 	sw	v0,0(a0)
	K[ 2]= S4[z[12]]^S5[z[13]]^S6[z[ 3]]^S7[z[ 2]]^S6[z[ 9]];
  49c3d8:	8fc2012c 	lw	v0,300(s8)
  49c3dc:	00000000 	nop
  49c3e0:	24440008 	addiu	a0,v0,8
  49c3e4:	8fc20078 	lw	v0,120(s8)
  49c3e8:	00000000 	nop
  49c3ec:	00021080 	sll	v0,v0,0x2
  49c3f0:	8f8387ec 	lw	v1,-30740(gp)
  49c3f4:	00000000 	nop
  49c3f8:	00621821 	addu	v1,v1,v0
  49c3fc:	8fc2007c 	lw	v0,124(s8)
  49c400:	00000000 	nop
  49c404:	00021080 	sll	v0,v0,0x2
  49c408:	8f8186fc 	lw	at,-30980(gp)
  49c40c:	00000000 	nop
  49c410:	00221021 	addu	v0,at,v0
  49c414:	8c630000 	lw	v1,0(v1)
  49c418:	8c420000 	lw	v0,0(v0)
  49c41c:	00000000 	nop
  49c420:	00621826 	xor	v1,v1,v0
  49c424:	8fc20054 	lw	v0,84(s8)
  49c428:	00000000 	nop
  49c42c:	00021080 	sll	v0,v0,0x2
  49c430:	8f8184cc 	lw	at,-31540(gp)
  49c434:	00000000 	nop
  49c438:	00221021 	addu	v0,at,v0
  49c43c:	8c420000 	lw	v0,0(v0)
  49c440:	00000000 	nop
  49c444:	00621826 	xor	v1,v1,v0
  49c448:	8fc20050 	lw	v0,80(s8)
  49c44c:	00000000 	nop
  49c450:	00021080 	sll	v0,v0,0x2
  49c454:	8f81899c 	lw	at,-30308(gp)
  49c458:	00000000 	nop
  49c45c:	00221021 	addu	v0,at,v0
  49c460:	8c420000 	lw	v0,0(v0)
  49c464:	00000000 	nop
  49c468:	00621826 	xor	v1,v1,v0
  49c46c:	8fc2006c 	lw	v0,108(s8)
  49c470:	00000000 	nop
  49c474:	00021080 	sll	v0,v0,0x2
  49c478:	8f8184cc 	lw	at,-31540(gp)
  49c47c:	00000000 	nop
  49c480:	00221021 	addu	v0,at,v0
  49c484:	8c420000 	lw	v0,0(v0)
  49c488:	00000000 	nop
  49c48c:	00621026 	xor	v0,v1,v0
  49c490:	ac820000 	sw	v0,0(a0)
	K[ 3]= S4[z[14]]^S5[z[15]]^S6[z[ 1]]^S7[z[ 0]]^S7[z[12]];
  49c494:	8fc2012c 	lw	v0,300(s8)
  49c498:	00000000 	nop
  49c49c:	2444000c 	addiu	a0,v0,12
  49c4a0:	8fc20080 	lw	v0,128(s8)
  49c4a4:	00000000 	nop
  49c4a8:	00021080 	sll	v0,v0,0x2
  49c4ac:	8f8387ec 	lw	v1,-30740(gp)
  49c4b0:	00000000 	nop
  49c4b4:	00621821 	addu	v1,v1,v0
  49c4b8:	8fc20084 	lw	v0,132(s8)
  49c4bc:	00000000 	nop
  49c4c0:	00021080 	sll	v0,v0,0x2
  49c4c4:	8f8186fc 	lw	at,-30980(gp)
  49c4c8:	00000000 	nop
  49c4cc:	00221021 	addu	v0,at,v0
  49c4d0:	8c630000 	lw	v1,0(v1)
  49c4d4:	8c420000 	lw	v0,0(v0)
  49c4d8:	00000000 	nop
  49c4dc:	00621826 	xor	v1,v1,v0
  49c4e0:	8fc2004c 	lw	v0,76(s8)
  49c4e4:	00000000 	nop
  49c4e8:	00021080 	sll	v0,v0,0x2
  49c4ec:	8f8184cc 	lw	at,-31540(gp)
  49c4f0:	00000000 	nop
  49c4f4:	00221021 	addu	v0,at,v0
  49c4f8:	8c420000 	lw	v0,0(v0)
  49c4fc:	00000000 	nop
  49c500:	00621826 	xor	v1,v1,v0
  49c504:	8fc20048 	lw	v0,72(s8)
  49c508:	00000000 	nop
  49c50c:	00021080 	sll	v0,v0,0x2
  49c510:	8f81899c 	lw	at,-30308(gp)
  49c514:	00000000 	nop
  49c518:	00221021 	addu	v0,at,v0
  49c51c:	8c420000 	lw	v0,0(v0)
  49c520:	00000000 	nop
  49c524:	00621826 	xor	v1,v1,v0
  49c528:	8fc20078 	lw	v0,120(s8)
  49c52c:	00000000 	nop
  49c530:	00021080 	sll	v0,v0,0x2
  49c534:	8f81899c 	lw	at,-30308(gp)
  49c538:	00000000 	nop
  49c53c:	00221021 	addu	v0,at,v0
  49c540:	8c420000 	lw	v0,0(v0)
  49c544:	00000000 	nop
  49c548:	00621026 	xor	v0,v1,v0
  49c54c:	ac820000 	sw	v0,0(a0)

	l=Z[2]^S4[z[ 5]]^S5[z[ 7]]^S6[z[ 4]]^S7[z[ 6]]^S6[z[ 0]];
  49c550:	8fc2005c 	lw	v0,92(s8)
  49c554:	00000000 	nop
  49c558:	00021080 	sll	v0,v0,0x2
  49c55c:	8f8187ec 	lw	at,-30740(gp)
  49c560:	00000000 	nop
  49c564:	00221021 	addu	v0,at,v0
  49c568:	8c430000 	lw	v1,0(v0)
  49c56c:	8fc20120 	lw	v0,288(s8)
  49c570:	00000000 	nop
  49c574:	00431826 	xor	v1,v0,v1
  49c578:	8fc20064 	lw	v0,100(s8)
  49c57c:	00000000 	nop
  49c580:	00021080 	sll	v0,v0,0x2
  49c584:	8f8186fc 	lw	at,-30980(gp)
  49c588:	00000000 	nop
  49c58c:	00221021 	addu	v0,at,v0
  49c590:	8c420000 	lw	v0,0(v0)
  49c594:	00000000 	nop
  49c598:	00621826 	xor	v1,v1,v0
  49c59c:	8fc20058 	lw	v0,88(s8)
  49c5a0:	00000000 	nop
  49c5a4:	00021080 	sll	v0,v0,0x2
  49c5a8:	8f8184cc 	lw	at,-31540(gp)
  49c5ac:	00000000 	nop
  49c5b0:	00221021 	addu	v0,at,v0
  49c5b4:	8c420000 	lw	v0,0(v0)
  49c5b8:	00000000 	nop
  49c5bc:	00621826 	xor	v1,v1,v0
  49c5c0:	8fc20060 	lw	v0,96(s8)
  49c5c4:	00000000 	nop
  49c5c8:	00021080 	sll	v0,v0,0x2
  49c5cc:	8f81899c 	lw	at,-30308(gp)
  49c5d0:	00000000 	nop
  49c5d4:	00221021 	addu	v0,at,v0
  49c5d8:	8c420000 	lw	v0,0(v0)
  49c5dc:	00000000 	nop
  49c5e0:	00621826 	xor	v1,v1,v0
  49c5e4:	8fc20048 	lw	v0,72(s8)
  49c5e8:	00000000 	nop
  49c5ec:	00021080 	sll	v0,v0,0x2
  49c5f0:	8f8184cc 	lw	at,-31540(gp)
  49c5f4:	00000000 	nop
  49c5f8:	00221021 	addu	v0,at,v0
  49c5fc:	8c420000 	lw	v0,0(v0)
  49c600:	00000000 	nop
  49c604:	00621026 	xor	v0,v1,v0
  49c608:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x, 0);
  49c60c:	8fc20128 	lw	v0,296(s8)
  49c610:	00000000 	nop
  49c614:	afc20108 	sw	v0,264(s8)
  49c618:	8fc20128 	lw	v0,296(s8)
  49c61c:	00000000 	nop
  49c620:	304200ff 	andi	v0,v0,0xff
  49c624:	afc20014 	sw	v0,20(s8)
  49c628:	8fc20128 	lw	v0,296(s8)
  49c62c:	00000000 	nop
  49c630:	00021202 	srl	v0,v0,0x8
  49c634:	304200ff 	andi	v0,v0,0xff
  49c638:	afc20010 	sw	v0,16(s8)
  49c63c:	8fc20128 	lw	v0,296(s8)
  49c640:	00000000 	nop
  49c644:	00021402 	srl	v0,v0,0x10
  49c648:	304200ff 	andi	v0,v0,0xff
  49c64c:	afc2000c 	sw	v0,12(s8)
  49c650:	8fc20128 	lw	v0,296(s8)
  49c654:	00000000 	nop
  49c658:	00021602 	srl	v0,v0,0x18
  49c65c:	304200ff 	andi	v0,v0,0xff
  49c660:	afc20008 	sw	v0,8(s8)
	l=Z[0]^S4[x[ 0]]^S5[x[ 2]]^S6[x[ 1]]^S7[x[ 3]]^S7[z[ 2]];
  49c664:	8fc20008 	lw	v0,8(s8)
  49c668:	00000000 	nop
  49c66c:	00021080 	sll	v0,v0,0x2
  49c670:	8f8187ec 	lw	at,-30740(gp)
  49c674:	00000000 	nop
  49c678:	00221021 	addu	v0,at,v0
  49c67c:	8c430000 	lw	v1,0(v0)
  49c680:	8fc20118 	lw	v0,280(s8)
  49c684:	00000000 	nop
  49c688:	00431826 	xor	v1,v0,v1
  49c68c:	8fc20010 	lw	v0,16(s8)
  49c690:	00000000 	nop
  49c694:	00021080 	sll	v0,v0,0x2
  49c698:	8f8186fc 	lw	at,-30980(gp)
  49c69c:	00000000 	nop
  49c6a0:	00221021 	addu	v0,at,v0
  49c6a4:	8c420000 	lw	v0,0(v0)
  49c6a8:	00000000 	nop
  49c6ac:	00621826 	xor	v1,v1,v0
  49c6b0:	8fc2000c 	lw	v0,12(s8)
  49c6b4:	00000000 	nop
  49c6b8:	00021080 	sll	v0,v0,0x2
  49c6bc:	8f8184cc 	lw	at,-31540(gp)
  49c6c0:	00000000 	nop
  49c6c4:	00221021 	addu	v0,at,v0
  49c6c8:	8c420000 	lw	v0,0(v0)
  49c6cc:	00000000 	nop
  49c6d0:	00621826 	xor	v1,v1,v0
  49c6d4:	8fc20014 	lw	v0,20(s8)
  49c6d8:	00000000 	nop
  49c6dc:	00021080 	sll	v0,v0,0x2
  49c6e0:	8f81899c 	lw	at,-30308(gp)
  49c6e4:	00000000 	nop
  49c6e8:	00221021 	addu	v0,at,v0
  49c6ec:	8c420000 	lw	v0,0(v0)
  49c6f0:	00000000 	nop
  49c6f4:	00621826 	xor	v1,v1,v0
  49c6f8:	8fc20050 	lw	v0,80(s8)
  49c6fc:	00000000 	nop
  49c700:	00021080 	sll	v0,v0,0x2
  49c704:	8f81899c 	lw	at,-30308(gp)
  49c708:	00000000 	nop
  49c70c:	00221021 	addu	v0,at,v0
  49c710:	8c420000 	lw	v0,0(v0)
  49c714:	00000000 	nop
  49c718:	00621026 	xor	v0,v1,v0
  49c71c:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x, 4);
  49c720:	8fc20128 	lw	v0,296(s8)
  49c724:	00000000 	nop
  49c728:	afc2010c 	sw	v0,268(s8)
  49c72c:	8fc20128 	lw	v0,296(s8)
  49c730:	00000000 	nop
  49c734:	304200ff 	andi	v0,v0,0xff
  49c738:	afc20024 	sw	v0,36(s8)
  49c73c:	8fc20128 	lw	v0,296(s8)
  49c740:	00000000 	nop
  49c744:	00021202 	srl	v0,v0,0x8
  49c748:	304200ff 	andi	v0,v0,0xff
  49c74c:	afc20020 	sw	v0,32(s8)
  49c750:	8fc20128 	lw	v0,296(s8)
  49c754:	00000000 	nop
  49c758:	00021402 	srl	v0,v0,0x10
  49c75c:	304200ff 	andi	v0,v0,0xff
  49c760:	afc2001c 	sw	v0,28(s8)
  49c764:	8fc20128 	lw	v0,296(s8)
  49c768:	00000000 	nop
  49c76c:	00021602 	srl	v0,v0,0x18
  49c770:	304200ff 	andi	v0,v0,0xff
  49c774:	afc20018 	sw	v0,24(s8)
	l=Z[1]^S4[x[ 7]]^S5[x[ 6]]^S6[x[ 5]]^S7[x[ 4]]^S4[z[ 1]];
  49c778:	8fc20024 	lw	v0,36(s8)
  49c77c:	00000000 	nop
  49c780:	00021080 	sll	v0,v0,0x2
  49c784:	8f8187ec 	lw	at,-30740(gp)
  49c788:	00000000 	nop
  49c78c:	00221021 	addu	v0,at,v0
  49c790:	8c430000 	lw	v1,0(v0)
  49c794:	8fc2011c 	lw	v0,284(s8)
  49c798:	00000000 	nop
  49c79c:	00431826 	xor	v1,v0,v1
  49c7a0:	8fc20020 	lw	v0,32(s8)
  49c7a4:	00000000 	nop
  49c7a8:	00021080 	sll	v0,v0,0x2
  49c7ac:	8f8186fc 	lw	at,-30980(gp)
  49c7b0:	00000000 	nop
  49c7b4:	00221021 	addu	v0,at,v0
  49c7b8:	8c420000 	lw	v0,0(v0)
  49c7bc:	00000000 	nop
  49c7c0:	00621826 	xor	v1,v1,v0
  49c7c4:	8fc2001c 	lw	v0,28(s8)
  49c7c8:	00000000 	nop
  49c7cc:	00021080 	sll	v0,v0,0x2
  49c7d0:	8f8184cc 	lw	at,-31540(gp)
  49c7d4:	00000000 	nop
  49c7d8:	00221021 	addu	v0,at,v0
  49c7dc:	8c420000 	lw	v0,0(v0)
  49c7e0:	00000000 	nop
  49c7e4:	00621826 	xor	v1,v1,v0
  49c7e8:	8fc20018 	lw	v0,24(s8)
  49c7ec:	00000000 	nop
  49c7f0:	00021080 	sll	v0,v0,0x2
  49c7f4:	8f81899c 	lw	at,-30308(gp)
  49c7f8:	00000000 	nop
  49c7fc:	00221021 	addu	v0,at,v0
  49c800:	8c420000 	lw	v0,0(v0)
  49c804:	00000000 	nop
  49c808:	00621826 	xor	v1,v1,v0
  49c80c:	8fc2004c 	lw	v0,76(s8)
  49c810:	00000000 	nop
  49c814:	00021080 	sll	v0,v0,0x2
  49c818:	8f8187ec 	lw	at,-30740(gp)
  49c81c:	00000000 	nop
  49c820:	00221021 	addu	v0,at,v0
  49c824:	8c420000 	lw	v0,0(v0)
  49c828:	00000000 	nop
  49c82c:	00621026 	xor	v0,v1,v0
  49c830:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x, 8);
  49c834:	8fc20128 	lw	v0,296(s8)
  49c838:	00000000 	nop
  49c83c:	afc20110 	sw	v0,272(s8)
  49c840:	8fc20128 	lw	v0,296(s8)
  49c844:	00000000 	nop
  49c848:	304200ff 	andi	v0,v0,0xff
  49c84c:	afc20034 	sw	v0,52(s8)
  49c850:	8fc20128 	lw	v0,296(s8)
  49c854:	00000000 	nop
  49c858:	00021202 	srl	v0,v0,0x8
  49c85c:	304200ff 	andi	v0,v0,0xff
  49c860:	afc20030 	sw	v0,48(s8)
  49c864:	8fc20128 	lw	v0,296(s8)
  49c868:	00000000 	nop
  49c86c:	00021402 	srl	v0,v0,0x10
  49c870:	304200ff 	andi	v0,v0,0xff
  49c874:	afc2002c 	sw	v0,44(s8)
  49c878:	8fc20128 	lw	v0,296(s8)
  49c87c:	00000000 	nop
  49c880:	00021602 	srl	v0,v0,0x18
  49c884:	304200ff 	andi	v0,v0,0xff
  49c888:	afc20028 	sw	v0,40(s8)
	l=Z[3]^S4[x[10]]^S5[x[ 9]]^S6[x[11]]^S7[x[ 8]]^S5[z[ 3]];
  49c88c:	8fc20030 	lw	v0,48(s8)
  49c890:	00000000 	nop
  49c894:	00021080 	sll	v0,v0,0x2
  49c898:	8f8187ec 	lw	at,-30740(gp)
  49c89c:	00000000 	nop
  49c8a0:	00221021 	addu	v0,at,v0
  49c8a4:	8c430000 	lw	v1,0(v0)
  49c8a8:	8fc20124 	lw	v0,292(s8)
  49c8ac:	00000000 	nop
  49c8b0:	00431826 	xor	v1,v0,v1
  49c8b4:	8fc2002c 	lw	v0,44(s8)
  49c8b8:	00000000 	nop
  49c8bc:	00021080 	sll	v0,v0,0x2
  49c8c0:	8f8186fc 	lw	at,-30980(gp)
  49c8c4:	00000000 	nop
  49c8c8:	00221021 	addu	v0,at,v0
  49c8cc:	8c420000 	lw	v0,0(v0)
  49c8d0:	00000000 	nop
  49c8d4:	00621826 	xor	v1,v1,v0
  49c8d8:	8fc20034 	lw	v0,52(s8)
  49c8dc:	00000000 	nop
  49c8e0:	00021080 	sll	v0,v0,0x2
  49c8e4:	8f8184cc 	lw	at,-31540(gp)
  49c8e8:	00000000 	nop
  49c8ec:	00221021 	addu	v0,at,v0
  49c8f0:	8c420000 	lw	v0,0(v0)
  49c8f4:	00000000 	nop
  49c8f8:	00621826 	xor	v1,v1,v0
  49c8fc:	8fc20028 	lw	v0,40(s8)
  49c900:	00000000 	nop
  49c904:	00021080 	sll	v0,v0,0x2
  49c908:	8f81899c 	lw	at,-30308(gp)
  49c90c:	00000000 	nop
  49c910:	00221021 	addu	v0,at,v0
  49c914:	8c420000 	lw	v0,0(v0)
  49c918:	00000000 	nop
  49c91c:	00621826 	xor	v1,v1,v0
  49c920:	8fc20054 	lw	v0,84(s8)
  49c924:	00000000 	nop
  49c928:	00021080 	sll	v0,v0,0x2
  49c92c:	8f8186fc 	lw	at,-30980(gp)
  49c930:	00000000 	nop
  49c934:	00221021 	addu	v0,at,v0
  49c938:	8c420000 	lw	v0,0(v0)
  49c93c:	00000000 	nop
  49c940:	00621026 	xor	v0,v1,v0
  49c944:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x,12);
  49c948:	8fc20128 	lw	v0,296(s8)
  49c94c:	00000000 	nop
  49c950:	afc20114 	sw	v0,276(s8)
  49c954:	8fc20128 	lw	v0,296(s8)
  49c958:	00000000 	nop
  49c95c:	304200ff 	andi	v0,v0,0xff
  49c960:	afc20044 	sw	v0,68(s8)
  49c964:	8fc20128 	lw	v0,296(s8)
  49c968:	00000000 	nop
  49c96c:	00021202 	srl	v0,v0,0x8
  49c970:	304200ff 	andi	v0,v0,0xff
  49c974:	afc20040 	sw	v0,64(s8)
  49c978:	8fc20128 	lw	v0,296(s8)
  49c97c:	00000000 	nop
  49c980:	00021402 	srl	v0,v0,0x10
  49c984:	304200ff 	andi	v0,v0,0xff
  49c988:	afc2003c 	sw	v0,60(s8)
  49c98c:	8fc20128 	lw	v0,296(s8)
  49c990:	00000000 	nop
  49c994:	00021602 	srl	v0,v0,0x18
  49c998:	304200ff 	andi	v0,v0,0xff
  49c99c:	afc20038 	sw	v0,56(s8)

	K[ 4]= S4[x[ 3]]^S5[x[ 2]]^S6[x[12]]^S7[x[13]]^S4[x[ 8]];
  49c9a0:	8fc2012c 	lw	v0,300(s8)
  49c9a4:	00000000 	nop
  49c9a8:	24440010 	addiu	a0,v0,16
  49c9ac:	8fc20014 	lw	v0,20(s8)
  49c9b0:	00000000 	nop
  49c9b4:	00021080 	sll	v0,v0,0x2
  49c9b8:	8f8387ec 	lw	v1,-30740(gp)
  49c9bc:	00000000 	nop
  49c9c0:	00621821 	addu	v1,v1,v0
  49c9c4:	8fc20010 	lw	v0,16(s8)
  49c9c8:	00000000 	nop
  49c9cc:	00021080 	sll	v0,v0,0x2
  49c9d0:	8f8186fc 	lw	at,-30980(gp)
  49c9d4:	00000000 	nop
  49c9d8:	00221021 	addu	v0,at,v0
  49c9dc:	8c630000 	lw	v1,0(v1)
  49c9e0:	8c420000 	lw	v0,0(v0)
  49c9e4:	00000000 	nop
  49c9e8:	00621826 	xor	v1,v1,v0
  49c9ec:	8fc20038 	lw	v0,56(s8)
  49c9f0:	00000000 	nop
  49c9f4:	00021080 	sll	v0,v0,0x2
  49c9f8:	8f8184cc 	lw	at,-31540(gp)
  49c9fc:	00000000 	nop
  49ca00:	00221021 	addu	v0,at,v0
  49ca04:	8c420000 	lw	v0,0(v0)
  49ca08:	00000000 	nop
  49ca0c:	00621826 	xor	v1,v1,v0
  49ca10:	8fc2003c 	lw	v0,60(s8)
  49ca14:	00000000 	nop
  49ca18:	00021080 	sll	v0,v0,0x2
  49ca1c:	8f81899c 	lw	at,-30308(gp)
  49ca20:	00000000 	nop
  49ca24:	00221021 	addu	v0,at,v0
  49ca28:	8c420000 	lw	v0,0(v0)
  49ca2c:	00000000 	nop
  49ca30:	00621826 	xor	v1,v1,v0
  49ca34:	8fc20028 	lw	v0,40(s8)
  49ca38:	00000000 	nop
  49ca3c:	00021080 	sll	v0,v0,0x2
  49ca40:	8f8187ec 	lw	at,-30740(gp)
  49ca44:	00000000 	nop
  49ca48:	00221021 	addu	v0,at,v0
  49ca4c:	8c420000 	lw	v0,0(v0)
  49ca50:	00000000 	nop
  49ca54:	00621026 	xor	v0,v1,v0
  49ca58:	ac820000 	sw	v0,0(a0)
	K[ 5]= S4[x[ 1]]^S5[x[ 0]]^S6[x[14]]^S7[x[15]]^S5[x[13]];
  49ca5c:	8fc2012c 	lw	v0,300(s8)
  49ca60:	00000000 	nop
  49ca64:	24440014 	addiu	a0,v0,20
  49ca68:	8fc2000c 	lw	v0,12(s8)
  49ca6c:	00000000 	nop
  49ca70:	00021080 	sll	v0,v0,0x2
  49ca74:	8f8387ec 	lw	v1,-30740(gp)
  49ca78:	00000000 	nop
  49ca7c:	00621821 	addu	v1,v1,v0
  49ca80:	8fc20008 	lw	v0,8(s8)
  49ca84:	00000000 	nop
  49ca88:	00021080 	sll	v0,v0,0x2
  49ca8c:	8f8186fc 	lw	at,-30980(gp)
  49ca90:	00000000 	nop
  49ca94:	00221021 	addu	v0,at,v0
  49ca98:	8c630000 	lw	v1,0(v1)
  49ca9c:	8c420000 	lw	v0,0(v0)
  49caa0:	00000000 	nop
  49caa4:	00621826 	xor	v1,v1,v0
  49caa8:	8fc20040 	lw	v0,64(s8)
  49caac:	00000000 	nop
  49cab0:	00021080 	sll	v0,v0,0x2
  49cab4:	8f8184cc 	lw	at,-31540(gp)
  49cab8:	00000000 	nop
  49cabc:	00221021 	addu	v0,at,v0
  49cac0:	8c420000 	lw	v0,0(v0)
  49cac4:	00000000 	nop
  49cac8:	00621826 	xor	v1,v1,v0
  49cacc:	8fc20044 	lw	v0,68(s8)
  49cad0:	00000000 	nop
  49cad4:	00021080 	sll	v0,v0,0x2
  49cad8:	8f81899c 	lw	at,-30308(gp)
  49cadc:	00000000 	nop
  49cae0:	00221021 	addu	v0,at,v0
  49cae4:	8c420000 	lw	v0,0(v0)
  49cae8:	00000000 	nop
  49caec:	00621826 	xor	v1,v1,v0
  49caf0:	8fc2003c 	lw	v0,60(s8)
  49caf4:	00000000 	nop
  49caf8:	00021080 	sll	v0,v0,0x2
  49cafc:	8f8186fc 	lw	at,-30980(gp)
  49cb00:	00000000 	nop
  49cb04:	00221021 	addu	v0,at,v0
  49cb08:	8c420000 	lw	v0,0(v0)
  49cb0c:	00000000 	nop
  49cb10:	00621026 	xor	v0,v1,v0
  49cb14:	ac820000 	sw	v0,0(a0)
	K[ 6]= S4[x[ 7]]^S5[x[ 6]]^S6[x[ 8]]^S7[x[ 9]]^S6[x[ 3]];
  49cb18:	8fc2012c 	lw	v0,300(s8)
  49cb1c:	00000000 	nop
  49cb20:	24440018 	addiu	a0,v0,24
  49cb24:	8fc20024 	lw	v0,36(s8)
  49cb28:	00000000 	nop
  49cb2c:	00021080 	sll	v0,v0,0x2
  49cb30:	8f8387ec 	lw	v1,-30740(gp)
  49cb34:	00000000 	nop
  49cb38:	00621821 	addu	v1,v1,v0
  49cb3c:	8fc20020 	lw	v0,32(s8)
  49cb40:	00000000 	nop
  49cb44:	00021080 	sll	v0,v0,0x2
  49cb48:	8f8186fc 	lw	at,-30980(gp)
  49cb4c:	00000000 	nop
  49cb50:	00221021 	addu	v0,at,v0
  49cb54:	8c630000 	lw	v1,0(v1)
  49cb58:	8c420000 	lw	v0,0(v0)
  49cb5c:	00000000 	nop
  49cb60:	00621826 	xor	v1,v1,v0
  49cb64:	8fc20028 	lw	v0,40(s8)
  49cb68:	00000000 	nop
  49cb6c:	00021080 	sll	v0,v0,0x2
  49cb70:	8f8184cc 	lw	at,-31540(gp)
  49cb74:	00000000 	nop
  49cb78:	00221021 	addu	v0,at,v0
  49cb7c:	8c420000 	lw	v0,0(v0)
  49cb80:	00000000 	nop
  49cb84:	00621826 	xor	v1,v1,v0
  49cb88:	8fc2002c 	lw	v0,44(s8)
  49cb8c:	00000000 	nop
  49cb90:	00021080 	sll	v0,v0,0x2
  49cb94:	8f81899c 	lw	at,-30308(gp)
  49cb98:	00000000 	nop
  49cb9c:	00221021 	addu	v0,at,v0
  49cba0:	8c420000 	lw	v0,0(v0)
  49cba4:	00000000 	nop
  49cba8:	00621826 	xor	v1,v1,v0
  49cbac:	8fc20014 	lw	v0,20(s8)
  49cbb0:	00000000 	nop
  49cbb4:	00021080 	sll	v0,v0,0x2
  49cbb8:	8f8184cc 	lw	at,-31540(gp)
  49cbbc:	00000000 	nop
  49cbc0:	00221021 	addu	v0,at,v0
  49cbc4:	8c420000 	lw	v0,0(v0)
  49cbc8:	00000000 	nop
  49cbcc:	00621026 	xor	v0,v1,v0
  49cbd0:	ac820000 	sw	v0,0(a0)
	K[ 7]= S4[x[ 5]]^S5[x[ 4]]^S6[x[10]]^S7[x[11]]^S7[x[ 7]];
  49cbd4:	8fc2012c 	lw	v0,300(s8)
  49cbd8:	00000000 	nop
  49cbdc:	2444001c 	addiu	a0,v0,28
  49cbe0:	8fc2001c 	lw	v0,28(s8)
  49cbe4:	00000000 	nop
  49cbe8:	00021080 	sll	v0,v0,0x2
  49cbec:	8f8387ec 	lw	v1,-30740(gp)
  49cbf0:	00000000 	nop
  49cbf4:	00621821 	addu	v1,v1,v0
  49cbf8:	8fc20018 	lw	v0,24(s8)
  49cbfc:	00000000 	nop
  49cc00:	00021080 	sll	v0,v0,0x2
  49cc04:	8f8186fc 	lw	at,-30980(gp)
  49cc08:	00000000 	nop
  49cc0c:	00221021 	addu	v0,at,v0
  49cc10:	8c630000 	lw	v1,0(v1)
  49cc14:	8c420000 	lw	v0,0(v0)
  49cc18:	00000000 	nop
  49cc1c:	00621826 	xor	v1,v1,v0
  49cc20:	8fc20030 	lw	v0,48(s8)
  49cc24:	00000000 	nop
  49cc28:	00021080 	sll	v0,v0,0x2
  49cc2c:	8f8184cc 	lw	at,-31540(gp)
  49cc30:	00000000 	nop
  49cc34:	00221021 	addu	v0,at,v0
  49cc38:	8c420000 	lw	v0,0(v0)
  49cc3c:	00000000 	nop
  49cc40:	00621826 	xor	v1,v1,v0
  49cc44:	8fc20034 	lw	v0,52(s8)
  49cc48:	00000000 	nop
  49cc4c:	00021080 	sll	v0,v0,0x2
  49cc50:	8f81899c 	lw	at,-30308(gp)
  49cc54:	00000000 	nop
  49cc58:	00221021 	addu	v0,at,v0
  49cc5c:	8c420000 	lw	v0,0(v0)
  49cc60:	00000000 	nop
  49cc64:	00621826 	xor	v1,v1,v0
  49cc68:	8fc20024 	lw	v0,36(s8)
  49cc6c:	00000000 	nop
  49cc70:	00021080 	sll	v0,v0,0x2
  49cc74:	8f81899c 	lw	at,-30308(gp)
  49cc78:	00000000 	nop
  49cc7c:	00221021 	addu	v0,at,v0
  49cc80:	8c420000 	lw	v0,0(v0)
  49cc84:	00000000 	nop
  49cc88:	00621026 	xor	v0,v1,v0
  49cc8c:	ac820000 	sw	v0,0(a0)

	l=X[0]^S4[x[13]]^S5[x[15]]^S6[x[12]]^S7[x[14]]^S6[x[ 8]];
  49cc90:	8fc2003c 	lw	v0,60(s8)
  49cc94:	00000000 	nop
  49cc98:	00021080 	sll	v0,v0,0x2
  49cc9c:	8f8187ec 	lw	at,-30740(gp)
  49cca0:	00000000 	nop
  49cca4:	00221021 	addu	v0,at,v0
  49cca8:	8c430000 	lw	v1,0(v0)
  49ccac:	8fc20108 	lw	v0,264(s8)
  49ccb0:	00000000 	nop
  49ccb4:	00431826 	xor	v1,v0,v1
  49ccb8:	8fc20044 	lw	v0,68(s8)
  49ccbc:	00000000 	nop
  49ccc0:	00021080 	sll	v0,v0,0x2
  49ccc4:	8f8186fc 	lw	at,-30980(gp)
  49ccc8:	00000000 	nop
  49cccc:	00221021 	addu	v0,at,v0
  49ccd0:	8c420000 	lw	v0,0(v0)
  49ccd4:	00000000 	nop
  49ccd8:	00621826 	xor	v1,v1,v0
  49ccdc:	8fc20038 	lw	v0,56(s8)
  49cce0:	00000000 	nop
  49cce4:	00021080 	sll	v0,v0,0x2
  49cce8:	8f8184cc 	lw	at,-31540(gp)
  49ccec:	00000000 	nop
  49ccf0:	00221021 	addu	v0,at,v0
  49ccf4:	8c420000 	lw	v0,0(v0)
  49ccf8:	00000000 	nop
  49ccfc:	00621826 	xor	v1,v1,v0
  49cd00:	8fc20040 	lw	v0,64(s8)
  49cd04:	00000000 	nop
  49cd08:	00021080 	sll	v0,v0,0x2
  49cd0c:	8f81899c 	lw	at,-30308(gp)
  49cd10:	00000000 	nop
  49cd14:	00221021 	addu	v0,at,v0
  49cd18:	8c420000 	lw	v0,0(v0)
  49cd1c:	00000000 	nop
  49cd20:	00621826 	xor	v1,v1,v0
  49cd24:	8fc20028 	lw	v0,40(s8)
  49cd28:	00000000 	nop
  49cd2c:	00021080 	sll	v0,v0,0x2
  49cd30:	8f8184cc 	lw	at,-31540(gp)
  49cd34:	00000000 	nop
  49cd38:	00221021 	addu	v0,at,v0
  49cd3c:	8c420000 	lw	v0,0(v0)
  49cd40:	00000000 	nop
  49cd44:	00621026 	xor	v0,v1,v0
  49cd48:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z, 0);
  49cd4c:	8fc20128 	lw	v0,296(s8)
  49cd50:	00000000 	nop
  49cd54:	afc20118 	sw	v0,280(s8)
  49cd58:	8fc20128 	lw	v0,296(s8)
  49cd5c:	00000000 	nop
  49cd60:	304200ff 	andi	v0,v0,0xff
  49cd64:	afc20054 	sw	v0,84(s8)
  49cd68:	8fc20128 	lw	v0,296(s8)
  49cd6c:	00000000 	nop
  49cd70:	00021202 	srl	v0,v0,0x8
  49cd74:	304200ff 	andi	v0,v0,0xff
  49cd78:	afc20050 	sw	v0,80(s8)
  49cd7c:	8fc20128 	lw	v0,296(s8)
  49cd80:	00000000 	nop
  49cd84:	00021402 	srl	v0,v0,0x10
  49cd88:	304200ff 	andi	v0,v0,0xff
  49cd8c:	afc2004c 	sw	v0,76(s8)
  49cd90:	8fc20128 	lw	v0,296(s8)
  49cd94:	00000000 	nop
  49cd98:	00021602 	srl	v0,v0,0x18
  49cd9c:	304200ff 	andi	v0,v0,0xff
  49cda0:	afc20048 	sw	v0,72(s8)
	l=X[2]^S4[z[ 0]]^S5[z[ 2]]^S6[z[ 1]]^S7[z[ 3]]^S7[x[10]];
  49cda4:	8fc20048 	lw	v0,72(s8)
  49cda8:	00000000 	nop
  49cdac:	00021080 	sll	v0,v0,0x2
  49cdb0:	8f8187ec 	lw	at,-30740(gp)
  49cdb4:	00000000 	nop
  49cdb8:	00221021 	addu	v0,at,v0
  49cdbc:	8c430000 	lw	v1,0(v0)
  49cdc0:	8fc20110 	lw	v0,272(s8)
  49cdc4:	00000000 	nop
  49cdc8:	00431826 	xor	v1,v0,v1
  49cdcc:	8fc20050 	lw	v0,80(s8)
  49cdd0:	00000000 	nop
  49cdd4:	00021080 	sll	v0,v0,0x2
  49cdd8:	8f8186fc 	lw	at,-30980(gp)
  49cddc:	00000000 	nop
  49cde0:	00221021 	addu	v0,at,v0
  49cde4:	8c420000 	lw	v0,0(v0)
  49cde8:	00000000 	nop
  49cdec:	00621826 	xor	v1,v1,v0
  49cdf0:	8fc2004c 	lw	v0,76(s8)
  49cdf4:	00000000 	nop
  49cdf8:	00021080 	sll	v0,v0,0x2
  49cdfc:	8f8184cc 	lw	at,-31540(gp)
  49ce00:	00000000 	nop
  49ce04:	00221021 	addu	v0,at,v0
  49ce08:	8c420000 	lw	v0,0(v0)
  49ce0c:	00000000 	nop
  49ce10:	00621826 	xor	v1,v1,v0
  49ce14:	8fc20054 	lw	v0,84(s8)
  49ce18:	00000000 	nop
  49ce1c:	00021080 	sll	v0,v0,0x2
  49ce20:	8f81899c 	lw	at,-30308(gp)
  49ce24:	00000000 	nop
  49ce28:	00221021 	addu	v0,at,v0
  49ce2c:	8c420000 	lw	v0,0(v0)
  49ce30:	00000000 	nop
  49ce34:	00621826 	xor	v1,v1,v0
  49ce38:	8fc20030 	lw	v0,48(s8)
  49ce3c:	00000000 	nop
  49ce40:	00021080 	sll	v0,v0,0x2
  49ce44:	8f81899c 	lw	at,-30308(gp)
  49ce48:	00000000 	nop
  49ce4c:	00221021 	addu	v0,at,v0
  49ce50:	8c420000 	lw	v0,0(v0)
  49ce54:	00000000 	nop
  49ce58:	00621026 	xor	v0,v1,v0
  49ce5c:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z, 4);
  49ce60:	8fc20128 	lw	v0,296(s8)
  49ce64:	00000000 	nop
  49ce68:	afc2011c 	sw	v0,284(s8)
  49ce6c:	8fc20128 	lw	v0,296(s8)
  49ce70:	00000000 	nop
  49ce74:	304200ff 	andi	v0,v0,0xff
  49ce78:	afc20064 	sw	v0,100(s8)
  49ce7c:	8fc20128 	lw	v0,296(s8)
  49ce80:	00000000 	nop
  49ce84:	00021202 	srl	v0,v0,0x8
  49ce88:	304200ff 	andi	v0,v0,0xff
  49ce8c:	afc20060 	sw	v0,96(s8)
  49ce90:	8fc20128 	lw	v0,296(s8)
  49ce94:	00000000 	nop
  49ce98:	00021402 	srl	v0,v0,0x10
  49ce9c:	304200ff 	andi	v0,v0,0xff
  49cea0:	afc2005c 	sw	v0,92(s8)
  49cea4:	8fc20128 	lw	v0,296(s8)
  49cea8:	00000000 	nop
  49ceac:	00021602 	srl	v0,v0,0x18
  49ceb0:	304200ff 	andi	v0,v0,0xff
  49ceb4:	afc20058 	sw	v0,88(s8)
	l=X[3]^S4[z[ 7]]^S5[z[ 6]]^S6[z[ 5]]^S7[z[ 4]]^S4[x[ 9]];
  49ceb8:	8fc20064 	lw	v0,100(s8)
  49cebc:	00000000 	nop
  49cec0:	00021080 	sll	v0,v0,0x2
  49cec4:	8f8187ec 	lw	at,-30740(gp)
  49cec8:	00000000 	nop
  49cecc:	00221021 	addu	v0,at,v0
  49ced0:	8c430000 	lw	v1,0(v0)
  49ced4:	8fc20114 	lw	v0,276(s8)
  49ced8:	00000000 	nop
  49cedc:	00431826 	xor	v1,v0,v1
  49cee0:	8fc20060 	lw	v0,96(s8)
  49cee4:	00000000 	nop
  49cee8:	00021080 	sll	v0,v0,0x2
  49ceec:	8f8186fc 	lw	at,-30980(gp)
  49cef0:	00000000 	nop
  49cef4:	00221021 	addu	v0,at,v0
  49cef8:	8c420000 	lw	v0,0(v0)
  49cefc:	00000000 	nop
  49cf00:	00621826 	xor	v1,v1,v0
  49cf04:	8fc2005c 	lw	v0,92(s8)
  49cf08:	00000000 	nop
  49cf0c:	00021080 	sll	v0,v0,0x2
  49cf10:	8f8184cc 	lw	at,-31540(gp)
  49cf14:	00000000 	nop
  49cf18:	00221021 	addu	v0,at,v0
  49cf1c:	8c420000 	lw	v0,0(v0)
  49cf20:	00000000 	nop
  49cf24:	00621826 	xor	v1,v1,v0
  49cf28:	8fc20058 	lw	v0,88(s8)
  49cf2c:	00000000 	nop
  49cf30:	00021080 	sll	v0,v0,0x2
  49cf34:	8f81899c 	lw	at,-30308(gp)
  49cf38:	00000000 	nop
  49cf3c:	00221021 	addu	v0,at,v0
  49cf40:	8c420000 	lw	v0,0(v0)
  49cf44:	00000000 	nop
  49cf48:	00621826 	xor	v1,v1,v0
  49cf4c:	8fc2002c 	lw	v0,44(s8)
  49cf50:	00000000 	nop
  49cf54:	00021080 	sll	v0,v0,0x2
  49cf58:	8f8187ec 	lw	at,-30740(gp)
  49cf5c:	00000000 	nop
  49cf60:	00221021 	addu	v0,at,v0
  49cf64:	8c420000 	lw	v0,0(v0)
  49cf68:	00000000 	nop
  49cf6c:	00621026 	xor	v0,v1,v0
  49cf70:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z, 8);
  49cf74:	8fc20128 	lw	v0,296(s8)
  49cf78:	00000000 	nop
  49cf7c:	afc20120 	sw	v0,288(s8)
  49cf80:	8fc20128 	lw	v0,296(s8)
  49cf84:	00000000 	nop
  49cf88:	304200ff 	andi	v0,v0,0xff
  49cf8c:	afc20074 	sw	v0,116(s8)
  49cf90:	8fc20128 	lw	v0,296(s8)
  49cf94:	00000000 	nop
  49cf98:	00021202 	srl	v0,v0,0x8
  49cf9c:	304200ff 	andi	v0,v0,0xff
  49cfa0:	afc20070 	sw	v0,112(s8)
  49cfa4:	8fc20128 	lw	v0,296(s8)
  49cfa8:	00000000 	nop
  49cfac:	00021402 	srl	v0,v0,0x10
  49cfb0:	304200ff 	andi	v0,v0,0xff
  49cfb4:	afc2006c 	sw	v0,108(s8)
  49cfb8:	8fc20128 	lw	v0,296(s8)
  49cfbc:	00000000 	nop
  49cfc0:	00021602 	srl	v0,v0,0x18
  49cfc4:	304200ff 	andi	v0,v0,0xff
  49cfc8:	afc20068 	sw	v0,104(s8)
	l=X[1]^S4[z[10]]^S5[z[ 9]]^S6[z[11]]^S7[z[ 8]]^S5[x[11]];
  49cfcc:	8fc20070 	lw	v0,112(s8)
  49cfd0:	00000000 	nop
  49cfd4:	00021080 	sll	v0,v0,0x2
  49cfd8:	8f8187ec 	lw	at,-30740(gp)
  49cfdc:	00000000 	nop
  49cfe0:	00221021 	addu	v0,at,v0
  49cfe4:	8c430000 	lw	v1,0(v0)
  49cfe8:	8fc2010c 	lw	v0,268(s8)
  49cfec:	00000000 	nop
  49cff0:	00431826 	xor	v1,v0,v1
  49cff4:	8fc2006c 	lw	v0,108(s8)
  49cff8:	00000000 	nop
  49cffc:	00021080 	sll	v0,v0,0x2
  49d000:	8f8186fc 	lw	at,-30980(gp)
  49d004:	00000000 	nop
  49d008:	00221021 	addu	v0,at,v0
  49d00c:	8c420000 	lw	v0,0(v0)
  49d010:	00000000 	nop
  49d014:	00621826 	xor	v1,v1,v0
  49d018:	8fc20074 	lw	v0,116(s8)
  49d01c:	00000000 	nop
  49d020:	00021080 	sll	v0,v0,0x2
  49d024:	8f8184cc 	lw	at,-31540(gp)
  49d028:	00000000 	nop
  49d02c:	00221021 	addu	v0,at,v0
  49d030:	8c420000 	lw	v0,0(v0)
  49d034:	00000000 	nop
  49d038:	00621826 	xor	v1,v1,v0
  49d03c:	8fc20068 	lw	v0,104(s8)
  49d040:	00000000 	nop
  49d044:	00021080 	sll	v0,v0,0x2
  49d048:	8f81899c 	lw	at,-30308(gp)
  49d04c:	00000000 	nop
  49d050:	00221021 	addu	v0,at,v0
  49d054:	8c420000 	lw	v0,0(v0)
  49d058:	00000000 	nop
  49d05c:	00621826 	xor	v1,v1,v0
  49d060:	8fc20034 	lw	v0,52(s8)
  49d064:	00000000 	nop
  49d068:	00021080 	sll	v0,v0,0x2
  49d06c:	8f8186fc 	lw	at,-30980(gp)
  49d070:	00000000 	nop
  49d074:	00221021 	addu	v0,at,v0
  49d078:	8c420000 	lw	v0,0(v0)
  49d07c:	00000000 	nop
  49d080:	00621026 	xor	v0,v1,v0
  49d084:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,Z,z,12);
  49d088:	8fc20128 	lw	v0,296(s8)
  49d08c:	00000000 	nop
  49d090:	afc20124 	sw	v0,292(s8)
  49d094:	8fc20128 	lw	v0,296(s8)
  49d098:	00000000 	nop
  49d09c:	304200ff 	andi	v0,v0,0xff
  49d0a0:	afc20084 	sw	v0,132(s8)
  49d0a4:	8fc20128 	lw	v0,296(s8)
  49d0a8:	00000000 	nop
  49d0ac:	00021202 	srl	v0,v0,0x8
  49d0b0:	304200ff 	andi	v0,v0,0xff
  49d0b4:	afc20080 	sw	v0,128(s8)
  49d0b8:	8fc20128 	lw	v0,296(s8)
  49d0bc:	00000000 	nop
  49d0c0:	00021402 	srl	v0,v0,0x10
  49d0c4:	304200ff 	andi	v0,v0,0xff
  49d0c8:	afc2007c 	sw	v0,124(s8)
  49d0cc:	8fc20128 	lw	v0,296(s8)
  49d0d0:	00000000 	nop
  49d0d4:	00021602 	srl	v0,v0,0x18
  49d0d8:	304200ff 	andi	v0,v0,0xff
  49d0dc:	afc20078 	sw	v0,120(s8)

	K[ 8]= S4[z[ 3]]^S5[z[ 2]]^S6[z[12]]^S7[z[13]]^S4[z[ 9]];
  49d0e0:	8fc2012c 	lw	v0,300(s8)
  49d0e4:	00000000 	nop
  49d0e8:	24440020 	addiu	a0,v0,32
  49d0ec:	8fc20054 	lw	v0,84(s8)
  49d0f0:	00000000 	nop
  49d0f4:	00021080 	sll	v0,v0,0x2
  49d0f8:	8f8387ec 	lw	v1,-30740(gp)
  49d0fc:	00000000 	nop
  49d100:	00621821 	addu	v1,v1,v0
  49d104:	8fc20050 	lw	v0,80(s8)
  49d108:	00000000 	nop
  49d10c:	00021080 	sll	v0,v0,0x2
  49d110:	8f8186fc 	lw	at,-30980(gp)
  49d114:	00000000 	nop
  49d118:	00221021 	addu	v0,at,v0
  49d11c:	8c630000 	lw	v1,0(v1)
  49d120:	8c420000 	lw	v0,0(v0)
  49d124:	00000000 	nop
  49d128:	00621826 	xor	v1,v1,v0
  49d12c:	8fc20078 	lw	v0,120(s8)
  49d130:	00000000 	nop
  49d134:	00021080 	sll	v0,v0,0x2
  49d138:	8f8184cc 	lw	at,-31540(gp)
  49d13c:	00000000 	nop
  49d140:	00221021 	addu	v0,at,v0
  49d144:	8c420000 	lw	v0,0(v0)
  49d148:	00000000 	nop
  49d14c:	00621826 	xor	v1,v1,v0
  49d150:	8fc2007c 	lw	v0,124(s8)
  49d154:	00000000 	nop
  49d158:	00021080 	sll	v0,v0,0x2
  49d15c:	8f81899c 	lw	at,-30308(gp)
  49d160:	00000000 	nop
  49d164:	00221021 	addu	v0,at,v0
  49d168:	8c420000 	lw	v0,0(v0)
  49d16c:	00000000 	nop
  49d170:	00621826 	xor	v1,v1,v0
  49d174:	8fc2006c 	lw	v0,108(s8)
  49d178:	00000000 	nop
  49d17c:	00021080 	sll	v0,v0,0x2
  49d180:	8f8187ec 	lw	at,-30740(gp)
  49d184:	00000000 	nop
  49d188:	00221021 	addu	v0,at,v0
  49d18c:	8c420000 	lw	v0,0(v0)
  49d190:	00000000 	nop
  49d194:	00621026 	xor	v0,v1,v0
  49d198:	ac820000 	sw	v0,0(a0)
	K[ 9]= S4[z[ 1]]^S5[z[ 0]]^S6[z[14]]^S7[z[15]]^S5[z[12]];
  49d19c:	8fc2012c 	lw	v0,300(s8)
  49d1a0:	00000000 	nop
  49d1a4:	24440024 	addiu	a0,v0,36
  49d1a8:	8fc2004c 	lw	v0,76(s8)
  49d1ac:	00000000 	nop
  49d1b0:	00021080 	sll	v0,v0,0x2
  49d1b4:	8f8387ec 	lw	v1,-30740(gp)
  49d1b8:	00000000 	nop
  49d1bc:	00621821 	addu	v1,v1,v0
  49d1c0:	8fc20048 	lw	v0,72(s8)
  49d1c4:	00000000 	nop
  49d1c8:	00021080 	sll	v0,v0,0x2
  49d1cc:	8f8186fc 	lw	at,-30980(gp)
  49d1d0:	00000000 	nop
  49d1d4:	00221021 	addu	v0,at,v0
  49d1d8:	8c630000 	lw	v1,0(v1)
  49d1dc:	8c420000 	lw	v0,0(v0)
  49d1e0:	00000000 	nop
  49d1e4:	00621826 	xor	v1,v1,v0
  49d1e8:	8fc20080 	lw	v0,128(s8)
  49d1ec:	00000000 	nop
  49d1f0:	00021080 	sll	v0,v0,0x2
  49d1f4:	8f8184cc 	lw	at,-31540(gp)
  49d1f8:	00000000 	nop
  49d1fc:	00221021 	addu	v0,at,v0
  49d200:	8c420000 	lw	v0,0(v0)
  49d204:	00000000 	nop
  49d208:	00621826 	xor	v1,v1,v0
  49d20c:	8fc20084 	lw	v0,132(s8)
  49d210:	00000000 	nop
  49d214:	00021080 	sll	v0,v0,0x2
  49d218:	8f81899c 	lw	at,-30308(gp)
  49d21c:	00000000 	nop
  49d220:	00221021 	addu	v0,at,v0
  49d224:	8c420000 	lw	v0,0(v0)
  49d228:	00000000 	nop
  49d22c:	00621826 	xor	v1,v1,v0
  49d230:	8fc20078 	lw	v0,120(s8)
  49d234:	00000000 	nop
  49d238:	00021080 	sll	v0,v0,0x2
  49d23c:	8f8186fc 	lw	at,-30980(gp)
  49d240:	00000000 	nop
  49d244:	00221021 	addu	v0,at,v0
  49d248:	8c420000 	lw	v0,0(v0)
  49d24c:	00000000 	nop
  49d250:	00621026 	xor	v0,v1,v0
  49d254:	ac820000 	sw	v0,0(a0)
	K[10]= S4[z[ 7]]^S5[z[ 6]]^S6[z[ 8]]^S7[z[ 9]]^S6[z[ 2]];
  49d258:	8fc2012c 	lw	v0,300(s8)
  49d25c:	00000000 	nop
  49d260:	24440028 	addiu	a0,v0,40
  49d264:	8fc20064 	lw	v0,100(s8)
  49d268:	00000000 	nop
  49d26c:	00021080 	sll	v0,v0,0x2
  49d270:	8f8387ec 	lw	v1,-30740(gp)
  49d274:	00000000 	nop
  49d278:	00621821 	addu	v1,v1,v0
  49d27c:	8fc20060 	lw	v0,96(s8)
  49d280:	00000000 	nop
  49d284:	00021080 	sll	v0,v0,0x2
  49d288:	8f8186fc 	lw	at,-30980(gp)
  49d28c:	00000000 	nop
  49d290:	00221021 	addu	v0,at,v0
  49d294:	8c630000 	lw	v1,0(v1)
  49d298:	8c420000 	lw	v0,0(v0)
  49d29c:	00000000 	nop
  49d2a0:	00621826 	xor	v1,v1,v0
  49d2a4:	8fc20068 	lw	v0,104(s8)
  49d2a8:	00000000 	nop
  49d2ac:	00021080 	sll	v0,v0,0x2
  49d2b0:	8f8184cc 	lw	at,-31540(gp)
  49d2b4:	00000000 	nop
  49d2b8:	00221021 	addu	v0,at,v0
  49d2bc:	8c420000 	lw	v0,0(v0)
  49d2c0:	00000000 	nop
  49d2c4:	00621826 	xor	v1,v1,v0
  49d2c8:	8fc2006c 	lw	v0,108(s8)
  49d2cc:	00000000 	nop
  49d2d0:	00021080 	sll	v0,v0,0x2
  49d2d4:	8f81899c 	lw	at,-30308(gp)
  49d2d8:	00000000 	nop
  49d2dc:	00221021 	addu	v0,at,v0
  49d2e0:	8c420000 	lw	v0,0(v0)
  49d2e4:	00000000 	nop
  49d2e8:	00621826 	xor	v1,v1,v0
  49d2ec:	8fc20050 	lw	v0,80(s8)
  49d2f0:	00000000 	nop
  49d2f4:	00021080 	sll	v0,v0,0x2
  49d2f8:	8f8184cc 	lw	at,-31540(gp)
  49d2fc:	00000000 	nop
  49d300:	00221021 	addu	v0,at,v0
  49d304:	8c420000 	lw	v0,0(v0)
  49d308:	00000000 	nop
  49d30c:	00621026 	xor	v0,v1,v0
  49d310:	ac820000 	sw	v0,0(a0)
	K[11]= S4[z[ 5]]^S5[z[ 4]]^S6[z[10]]^S7[z[11]]^S7[z[ 6]];
  49d314:	8fc2012c 	lw	v0,300(s8)
  49d318:	00000000 	nop
  49d31c:	2444002c 	addiu	a0,v0,44
  49d320:	8fc2005c 	lw	v0,92(s8)
  49d324:	00000000 	nop
  49d328:	00021080 	sll	v0,v0,0x2
  49d32c:	8f8387ec 	lw	v1,-30740(gp)
  49d330:	00000000 	nop
  49d334:	00621821 	addu	v1,v1,v0
  49d338:	8fc20058 	lw	v0,88(s8)
  49d33c:	00000000 	nop
  49d340:	00021080 	sll	v0,v0,0x2
  49d344:	8f8186fc 	lw	at,-30980(gp)
  49d348:	00000000 	nop
  49d34c:	00221021 	addu	v0,at,v0
  49d350:	8c630000 	lw	v1,0(v1)
  49d354:	8c420000 	lw	v0,0(v0)
  49d358:	00000000 	nop
  49d35c:	00621826 	xor	v1,v1,v0
  49d360:	8fc20070 	lw	v0,112(s8)
  49d364:	00000000 	nop
  49d368:	00021080 	sll	v0,v0,0x2
  49d36c:	8f8184cc 	lw	at,-31540(gp)
  49d370:	00000000 	nop
  49d374:	00221021 	addu	v0,at,v0
  49d378:	8c420000 	lw	v0,0(v0)
  49d37c:	00000000 	nop
  49d380:	00621826 	xor	v1,v1,v0
  49d384:	8fc20074 	lw	v0,116(s8)
  49d388:	00000000 	nop
  49d38c:	00021080 	sll	v0,v0,0x2
  49d390:	8f81899c 	lw	at,-30308(gp)
  49d394:	00000000 	nop
  49d398:	00221021 	addu	v0,at,v0
  49d39c:	8c420000 	lw	v0,0(v0)
  49d3a0:	00000000 	nop
  49d3a4:	00621826 	xor	v1,v1,v0
  49d3a8:	8fc20060 	lw	v0,96(s8)
  49d3ac:	00000000 	nop
  49d3b0:	00021080 	sll	v0,v0,0x2
  49d3b4:	8f81899c 	lw	at,-30308(gp)
  49d3b8:	00000000 	nop
  49d3bc:	00221021 	addu	v0,at,v0
  49d3c0:	8c420000 	lw	v0,0(v0)
  49d3c4:	00000000 	nop
  49d3c8:	00621026 	xor	v0,v1,v0
  49d3cc:	ac820000 	sw	v0,0(a0)

	l=Z[2]^S4[z[ 5]]^S5[z[ 7]]^S6[z[ 4]]^S7[z[ 6]]^S6[z[ 0]];
  49d3d0:	8fc2005c 	lw	v0,92(s8)
  49d3d4:	00000000 	nop
  49d3d8:	00021080 	sll	v0,v0,0x2
  49d3dc:	8f8187ec 	lw	at,-30740(gp)
  49d3e0:	00000000 	nop
  49d3e4:	00221021 	addu	v0,at,v0
  49d3e8:	8c430000 	lw	v1,0(v0)
  49d3ec:	8fc20120 	lw	v0,288(s8)
  49d3f0:	00000000 	nop
  49d3f4:	00431826 	xor	v1,v0,v1
  49d3f8:	8fc20064 	lw	v0,100(s8)
  49d3fc:	00000000 	nop
  49d400:	00021080 	sll	v0,v0,0x2
  49d404:	8f8186fc 	lw	at,-30980(gp)
  49d408:	00000000 	nop
  49d40c:	00221021 	addu	v0,at,v0
  49d410:	8c420000 	lw	v0,0(v0)
  49d414:	00000000 	nop
  49d418:	00621826 	xor	v1,v1,v0
  49d41c:	8fc20058 	lw	v0,88(s8)
  49d420:	00000000 	nop
  49d424:	00021080 	sll	v0,v0,0x2
  49d428:	8f8184cc 	lw	at,-31540(gp)
  49d42c:	00000000 	nop
  49d430:	00221021 	addu	v0,at,v0
  49d434:	8c420000 	lw	v0,0(v0)
  49d438:	00000000 	nop
  49d43c:	00621826 	xor	v1,v1,v0
  49d440:	8fc20060 	lw	v0,96(s8)
  49d444:	00000000 	nop
  49d448:	00021080 	sll	v0,v0,0x2
  49d44c:	8f81899c 	lw	at,-30308(gp)
  49d450:	00000000 	nop
  49d454:	00221021 	addu	v0,at,v0
  49d458:	8c420000 	lw	v0,0(v0)
  49d45c:	00000000 	nop
  49d460:	00621826 	xor	v1,v1,v0
  49d464:	8fc20048 	lw	v0,72(s8)
  49d468:	00000000 	nop
  49d46c:	00021080 	sll	v0,v0,0x2
  49d470:	8f8184cc 	lw	at,-31540(gp)
  49d474:	00000000 	nop
  49d478:	00221021 	addu	v0,at,v0
  49d47c:	8c420000 	lw	v0,0(v0)
  49d480:	00000000 	nop
  49d484:	00621026 	xor	v0,v1,v0
  49d488:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x, 0);
  49d48c:	8fc20128 	lw	v0,296(s8)
  49d490:	00000000 	nop
  49d494:	afc20108 	sw	v0,264(s8)
  49d498:	8fc20128 	lw	v0,296(s8)
  49d49c:	00000000 	nop
  49d4a0:	304200ff 	andi	v0,v0,0xff
  49d4a4:	afc20014 	sw	v0,20(s8)
  49d4a8:	8fc20128 	lw	v0,296(s8)
  49d4ac:	00000000 	nop
  49d4b0:	00021202 	srl	v0,v0,0x8
  49d4b4:	304200ff 	andi	v0,v0,0xff
  49d4b8:	afc20010 	sw	v0,16(s8)
  49d4bc:	8fc20128 	lw	v0,296(s8)
  49d4c0:	00000000 	nop
  49d4c4:	00021402 	srl	v0,v0,0x10
  49d4c8:	304200ff 	andi	v0,v0,0xff
  49d4cc:	afc2000c 	sw	v0,12(s8)
  49d4d0:	8fc20128 	lw	v0,296(s8)
  49d4d4:	00000000 	nop
  49d4d8:	00021602 	srl	v0,v0,0x18
  49d4dc:	304200ff 	andi	v0,v0,0xff
  49d4e0:	afc20008 	sw	v0,8(s8)
	l=Z[0]^S4[x[ 0]]^S5[x[ 2]]^S6[x[ 1]]^S7[x[ 3]]^S7[z[ 2]];
  49d4e4:	8fc20008 	lw	v0,8(s8)
  49d4e8:	00000000 	nop
  49d4ec:	00021080 	sll	v0,v0,0x2
  49d4f0:	8f8187ec 	lw	at,-30740(gp)
  49d4f4:	00000000 	nop
  49d4f8:	00221021 	addu	v0,at,v0
  49d4fc:	8c430000 	lw	v1,0(v0)
  49d500:	8fc20118 	lw	v0,280(s8)
  49d504:	00000000 	nop
  49d508:	00431826 	xor	v1,v0,v1
  49d50c:	8fc20010 	lw	v0,16(s8)
  49d510:	00000000 	nop
  49d514:	00021080 	sll	v0,v0,0x2
  49d518:	8f8186fc 	lw	at,-30980(gp)
  49d51c:	00000000 	nop
  49d520:	00221021 	addu	v0,at,v0
  49d524:	8c420000 	lw	v0,0(v0)
  49d528:	00000000 	nop
  49d52c:	00621826 	xor	v1,v1,v0
  49d530:	8fc2000c 	lw	v0,12(s8)
  49d534:	00000000 	nop
  49d538:	00021080 	sll	v0,v0,0x2
  49d53c:	8f8184cc 	lw	at,-31540(gp)
  49d540:	00000000 	nop
  49d544:	00221021 	addu	v0,at,v0
  49d548:	8c420000 	lw	v0,0(v0)
  49d54c:	00000000 	nop
  49d550:	00621826 	xor	v1,v1,v0
  49d554:	8fc20014 	lw	v0,20(s8)
  49d558:	00000000 	nop
  49d55c:	00021080 	sll	v0,v0,0x2
  49d560:	8f81899c 	lw	at,-30308(gp)
  49d564:	00000000 	nop
  49d568:	00221021 	addu	v0,at,v0
  49d56c:	8c420000 	lw	v0,0(v0)
  49d570:	00000000 	nop
  49d574:	00621826 	xor	v1,v1,v0
  49d578:	8fc20050 	lw	v0,80(s8)
  49d57c:	00000000 	nop
  49d580:	00021080 	sll	v0,v0,0x2
  49d584:	8f81899c 	lw	at,-30308(gp)
  49d588:	00000000 	nop
  49d58c:	00221021 	addu	v0,at,v0
  49d590:	8c420000 	lw	v0,0(v0)
  49d594:	00000000 	nop
  49d598:	00621026 	xor	v0,v1,v0
  49d59c:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x, 4);
  49d5a0:	8fc20128 	lw	v0,296(s8)
  49d5a4:	00000000 	nop
  49d5a8:	afc2010c 	sw	v0,268(s8)
  49d5ac:	8fc20128 	lw	v0,296(s8)
  49d5b0:	00000000 	nop
  49d5b4:	304200ff 	andi	v0,v0,0xff
  49d5b8:	afc20024 	sw	v0,36(s8)
  49d5bc:	8fc20128 	lw	v0,296(s8)
  49d5c0:	00000000 	nop
  49d5c4:	00021202 	srl	v0,v0,0x8
  49d5c8:	304200ff 	andi	v0,v0,0xff
  49d5cc:	afc20020 	sw	v0,32(s8)
  49d5d0:	8fc20128 	lw	v0,296(s8)
  49d5d4:	00000000 	nop
  49d5d8:	00021402 	srl	v0,v0,0x10
  49d5dc:	304200ff 	andi	v0,v0,0xff
  49d5e0:	afc2001c 	sw	v0,28(s8)
  49d5e4:	8fc20128 	lw	v0,296(s8)
  49d5e8:	00000000 	nop
  49d5ec:	00021602 	srl	v0,v0,0x18
  49d5f0:	304200ff 	andi	v0,v0,0xff
  49d5f4:	afc20018 	sw	v0,24(s8)
	l=Z[1]^S4[x[ 7]]^S5[x[ 6]]^S6[x[ 5]]^S7[x[ 4]]^S4[z[ 1]];
  49d5f8:	8fc20024 	lw	v0,36(s8)
  49d5fc:	00000000 	nop
  49d600:	00021080 	sll	v0,v0,0x2
  49d604:	8f8187ec 	lw	at,-30740(gp)
  49d608:	00000000 	nop
  49d60c:	00221021 	addu	v0,at,v0
  49d610:	8c430000 	lw	v1,0(v0)
  49d614:	8fc2011c 	lw	v0,284(s8)
  49d618:	00000000 	nop
  49d61c:	00431826 	xor	v1,v0,v1
  49d620:	8fc20020 	lw	v0,32(s8)
  49d624:	00000000 	nop
  49d628:	00021080 	sll	v0,v0,0x2
  49d62c:	8f8186fc 	lw	at,-30980(gp)
  49d630:	00000000 	nop
  49d634:	00221021 	addu	v0,at,v0
  49d638:	8c420000 	lw	v0,0(v0)
  49d63c:	00000000 	nop
  49d640:	00621826 	xor	v1,v1,v0
  49d644:	8fc2001c 	lw	v0,28(s8)
  49d648:	00000000 	nop
  49d64c:	00021080 	sll	v0,v0,0x2
  49d650:	8f8184cc 	lw	at,-31540(gp)
  49d654:	00000000 	nop
  49d658:	00221021 	addu	v0,at,v0
  49d65c:	8c420000 	lw	v0,0(v0)
  49d660:	00000000 	nop
  49d664:	00621826 	xor	v1,v1,v0
  49d668:	8fc20018 	lw	v0,24(s8)
  49d66c:	00000000 	nop
  49d670:	00021080 	sll	v0,v0,0x2
  49d674:	8f81899c 	lw	at,-30308(gp)
  49d678:	00000000 	nop
  49d67c:	00221021 	addu	v0,at,v0
  49d680:	8c420000 	lw	v0,0(v0)
  49d684:	00000000 	nop
  49d688:	00621826 	xor	v1,v1,v0
  49d68c:	8fc2004c 	lw	v0,76(s8)
  49d690:	00000000 	nop
  49d694:	00021080 	sll	v0,v0,0x2
  49d698:	8f8187ec 	lw	at,-30740(gp)
  49d69c:	00000000 	nop
  49d6a0:	00221021 	addu	v0,at,v0
  49d6a4:	8c420000 	lw	v0,0(v0)
  49d6a8:	00000000 	nop
  49d6ac:	00621026 	xor	v0,v1,v0
  49d6b0:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x, 8);
  49d6b4:	8fc20128 	lw	v0,296(s8)
  49d6b8:	00000000 	nop
  49d6bc:	afc20110 	sw	v0,272(s8)
  49d6c0:	8fc20128 	lw	v0,296(s8)
  49d6c4:	00000000 	nop
  49d6c8:	304200ff 	andi	v0,v0,0xff
  49d6cc:	afc20034 	sw	v0,52(s8)
  49d6d0:	8fc20128 	lw	v0,296(s8)
  49d6d4:	00000000 	nop
  49d6d8:	00021202 	srl	v0,v0,0x8
  49d6dc:	304200ff 	andi	v0,v0,0xff
  49d6e0:	afc20030 	sw	v0,48(s8)
  49d6e4:	8fc20128 	lw	v0,296(s8)
  49d6e8:	00000000 	nop
  49d6ec:	00021402 	srl	v0,v0,0x10
  49d6f0:	304200ff 	andi	v0,v0,0xff
  49d6f4:	afc2002c 	sw	v0,44(s8)
  49d6f8:	8fc20128 	lw	v0,296(s8)
  49d6fc:	00000000 	nop
  49d700:	00021602 	srl	v0,v0,0x18
  49d704:	304200ff 	andi	v0,v0,0xff
  49d708:	afc20028 	sw	v0,40(s8)
	l=Z[3]^S4[x[10]]^S5[x[ 9]]^S6[x[11]]^S7[x[ 8]]^S5[z[ 3]];
  49d70c:	8fc20030 	lw	v0,48(s8)
  49d710:	00000000 	nop
  49d714:	00021080 	sll	v0,v0,0x2
  49d718:	8f8187ec 	lw	at,-30740(gp)
  49d71c:	00000000 	nop
  49d720:	00221021 	addu	v0,at,v0
  49d724:	8c430000 	lw	v1,0(v0)
  49d728:	8fc20124 	lw	v0,292(s8)
  49d72c:	00000000 	nop
  49d730:	00431826 	xor	v1,v0,v1
  49d734:	8fc2002c 	lw	v0,44(s8)
  49d738:	00000000 	nop
  49d73c:	00021080 	sll	v0,v0,0x2
  49d740:	8f8186fc 	lw	at,-30980(gp)
  49d744:	00000000 	nop
  49d748:	00221021 	addu	v0,at,v0
  49d74c:	8c420000 	lw	v0,0(v0)
  49d750:	00000000 	nop
  49d754:	00621826 	xor	v1,v1,v0
  49d758:	8fc20034 	lw	v0,52(s8)
  49d75c:	00000000 	nop
  49d760:	00021080 	sll	v0,v0,0x2
  49d764:	8f8184cc 	lw	at,-31540(gp)
  49d768:	00000000 	nop
  49d76c:	00221021 	addu	v0,at,v0
  49d770:	8c420000 	lw	v0,0(v0)
  49d774:	00000000 	nop
  49d778:	00621826 	xor	v1,v1,v0
  49d77c:	8fc20028 	lw	v0,40(s8)
  49d780:	00000000 	nop
  49d784:	00021080 	sll	v0,v0,0x2
  49d788:	8f81899c 	lw	at,-30308(gp)
  49d78c:	00000000 	nop
  49d790:	00221021 	addu	v0,at,v0
  49d794:	8c420000 	lw	v0,0(v0)
  49d798:	00000000 	nop
  49d79c:	00621826 	xor	v1,v1,v0
  49d7a0:	8fc20054 	lw	v0,84(s8)
  49d7a4:	00000000 	nop
  49d7a8:	00021080 	sll	v0,v0,0x2
  49d7ac:	8f8186fc 	lw	at,-30980(gp)
  49d7b0:	00000000 	nop
  49d7b4:	00221021 	addu	v0,at,v0
  49d7b8:	8c420000 	lw	v0,0(v0)
  49d7bc:	00000000 	nop
  49d7c0:	00621026 	xor	v0,v1,v0
  49d7c4:	afc20128 	sw	v0,296(s8)
	CAST_exp(l,X,x,12);
  49d7c8:	8fc20128 	lw	v0,296(s8)
  49d7cc:	00000000 	nop
  49d7d0:	afc20114 	sw	v0,276(s8)
  49d7d4:	8fc20128 	lw	v0,296(s8)
  49d7d8:	00000000 	nop
  49d7dc:	304200ff 	andi	v0,v0,0xff
  49d7e0:	afc20044 	sw	v0,68(s8)
  49d7e4:	8fc20128 	lw	v0,296(s8)
  49d7e8:	00000000 	nop
  49d7ec:	00021202 	srl	v0,v0,0x8
  49d7f0:	304200ff 	andi	v0,v0,0xff
  49d7f4:	afc20040 	sw	v0,64(s8)
  49d7f8:	8fc20128 	lw	v0,296(s8)
  49d7fc:	00000000 	nop
  49d800:	00021402 	srl	v0,v0,0x10
  49d804:	304200ff 	andi	v0,v0,0xff
  49d808:	afc2003c 	sw	v0,60(s8)
  49d80c:	8fc20128 	lw	v0,296(s8)
  49d810:	00000000 	nop
  49d814:	00021602 	srl	v0,v0,0x18
  49d818:	304200ff 	andi	v0,v0,0xff
  49d81c:	afc20038 	sw	v0,56(s8)

	K[12]= S4[x[ 8]]^S5[x[ 9]]^S6[x[ 7]]^S7[x[ 6]]^S4[x[ 3]];
  49d820:	8fc2012c 	lw	v0,300(s8)
  49d824:	00000000 	nop
  49d828:	24440030 	addiu	a0,v0,48
  49d82c:	8fc20028 	lw	v0,40(s8)
  49d830:	00000000 	nop
  49d834:	00021080 	sll	v0,v0,0x2
  49d838:	8f8387ec 	lw	v1,-30740(gp)
  49d83c:	00000000 	nop
  49d840:	00621821 	addu	v1,v1,v0
  49d844:	8fc2002c 	lw	v0,44(s8)
  49d848:	00000000 	nop
  49d84c:	00021080 	sll	v0,v0,0x2
  49d850:	8f8186fc 	lw	at,-30980(gp)
  49d854:	00000000 	nop
  49d858:	00221021 	addu	v0,at,v0
  49d85c:	8c630000 	lw	v1,0(v1)
  49d860:	8c420000 	lw	v0,0(v0)
  49d864:	00000000 	nop
  49d868:	00621826 	xor	v1,v1,v0
  49d86c:	8fc20024 	lw	v0,36(s8)
  49d870:	00000000 	nop
  49d874:	00021080 	sll	v0,v0,0x2
  49d878:	8f8184cc 	lw	at,-31540(gp)
  49d87c:	00000000 	nop
  49d880:	00221021 	addu	v0,at,v0
  49d884:	8c420000 	lw	v0,0(v0)
  49d888:	00000000 	nop
  49d88c:	00621826 	xor	v1,v1,v0
  49d890:	8fc20020 	lw	v0,32(s8)
  49d894:	00000000 	nop
  49d898:	00021080 	sll	v0,v0,0x2
  49d89c:	8f81899c 	lw	at,-30308(gp)
  49d8a0:	00000000 	nop
  49d8a4:	00221021 	addu	v0,at,v0
  49d8a8:	8c420000 	lw	v0,0(v0)
  49d8ac:	00000000 	nop
  49d8b0:	00621826 	xor	v1,v1,v0
  49d8b4:	8fc20014 	lw	v0,20(s8)
  49d8b8:	00000000 	nop
  49d8bc:	00021080 	sll	v0,v0,0x2
  49d8c0:	8f8187ec 	lw	at,-30740(gp)
  49d8c4:	00000000 	nop
  49d8c8:	00221021 	addu	v0,at,v0
  49d8cc:	8c420000 	lw	v0,0(v0)
  49d8d0:	00000000 	nop
  49d8d4:	00621026 	xor	v0,v1,v0
  49d8d8:	ac820000 	sw	v0,0(a0)
	K[13]= S4[x[10]]^S5[x[11]]^S6[x[ 5]]^S7[x[ 4]]^S5[x[ 7]];
  49d8dc:	8fc2012c 	lw	v0,300(s8)
  49d8e0:	00000000 	nop
  49d8e4:	24440034 	addiu	a0,v0,52
  49d8e8:	8fc20030 	lw	v0,48(s8)
  49d8ec:	00000000 	nop
  49d8f0:	00021080 	sll	v0,v0,0x2
  49d8f4:	8f8387ec 	lw	v1,-30740(gp)
  49d8f8:	00000000 	nop
  49d8fc:	00621821 	addu	v1,v1,v0
  49d900:	8fc20034 	lw	v0,52(s8)
  49d904:	00000000 	nop
  49d908:	00021080 	sll	v0,v0,0x2
  49d90c:	8f8186fc 	lw	at,-30980(gp)
  49d910:	00000000 	nop
  49d914:	00221021 	addu	v0,at,v0
  49d918:	8c630000 	lw	v1,0(v1)
  49d91c:	8c420000 	lw	v0,0(v0)
  49d920:	00000000 	nop
  49d924:	00621826 	xor	v1,v1,v0
  49d928:	8fc2001c 	lw	v0,28(s8)
  49d92c:	00000000 	nop
  49d930:	00021080 	sll	v0,v0,0x2
  49d934:	8f8184cc 	lw	at,-31540(gp)
  49d938:	00000000 	nop
  49d93c:	00221021 	addu	v0,at,v0
  49d940:	8c420000 	lw	v0,0(v0)
  49d944:	00000000 	nop
  49d948:	00621826 	xor	v1,v1,v0
  49d94c:	8fc20018 	lw	v0,24(s8)
  49d950:	00000000 	nop
  49d954:	00021080 	sll	v0,v0,0x2
  49d958:	8f81899c 	lw	at,-30308(gp)
  49d95c:	00000000 	nop
  49d960:	00221021 	addu	v0,at,v0
  49d964:	8c420000 	lw	v0,0(v0)
  49d968:	00000000 	nop
  49d96c:	00621826 	xor	v1,v1,v0
  49d970:	8fc20024 	lw	v0,36(s8)
  49d974:	00000000 	nop
  49d978:	00021080 	sll	v0,v0,0x2
  49d97c:	8f8186fc 	lw	at,-30980(gp)
  49d980:	00000000 	nop
  49d984:	00221021 	addu	v0,at,v0
  49d988:	8c420000 	lw	v0,0(v0)
  49d98c:	00000000 	nop
  49d990:	00621026 	xor	v0,v1,v0
  49d994:	ac820000 	sw	v0,0(a0)
	K[14]= S4[x[12]]^S5[x[13]]^S6[x[ 3]]^S7[x[ 2]]^S6[x[ 8]];
  49d998:	8fc2012c 	lw	v0,300(s8)
  49d99c:	00000000 	nop
  49d9a0:	24440038 	addiu	a0,v0,56
  49d9a4:	8fc20038 	lw	v0,56(s8)
  49d9a8:	00000000 	nop
  49d9ac:	00021080 	sll	v0,v0,0x2
  49d9b0:	8f8387ec 	lw	v1,-30740(gp)
  49d9b4:	00000000 	nop
  49d9b8:	00621821 	addu	v1,v1,v0
  49d9bc:	8fc2003c 	lw	v0,60(s8)
  49d9c0:	00000000 	nop
  49d9c4:	00021080 	sll	v0,v0,0x2
  49d9c8:	8f8186fc 	lw	at,-30980(gp)
  49d9cc:	00000000 	nop
  49d9d0:	00221021 	addu	v0,at,v0
  49d9d4:	8c630000 	lw	v1,0(v1)
  49d9d8:	8c420000 	lw	v0,0(v0)
  49d9dc:	00000000 	nop
  49d9e0:	00621826 	xor	v1,v1,v0
  49d9e4:	8fc20014 	lw	v0,20(s8)
  49d9e8:	00000000 	nop
  49d9ec:	00021080 	sll	v0,v0,0x2
  49d9f0:	8f8184cc 	lw	at,-31540(gp)
  49d9f4:	00000000 	nop
  49d9f8:	00221021 	addu	v0,at,v0
  49d9fc:	8c420000 	lw	v0,0(v0)
  49da00:	00000000 	nop
  49da04:	00621826 	xor	v1,v1,v0
  49da08:	8fc20010 	lw	v0,16(s8)
  49da0c:	00000000 	nop
  49da10:	00021080 	sll	v0,v0,0x2
  49da14:	8f81899c 	lw	at,-30308(gp)
  49da18:	00000000 	nop
  49da1c:	00221021 	addu	v0,at,v0
  49da20:	8c420000 	lw	v0,0(v0)
  49da24:	00000000 	nop
  49da28:	00621826 	xor	v1,v1,v0
  49da2c:	8fc20028 	lw	v0,40(s8)
  49da30:	00000000 	nop
  49da34:	00021080 	sll	v0,v0,0x2
  49da38:	8f8184cc 	lw	at,-31540(gp)
  49da3c:	00000000 	nop
  49da40:	00221021 	addu	v0,at,v0
  49da44:	8c420000 	lw	v0,0(v0)
  49da48:	00000000 	nop
  49da4c:	00621026 	xor	v0,v1,v0
  49da50:	ac820000 	sw	v0,0(a0)
	K[15]= S4[x[14]]^S5[x[15]]^S6[x[ 1]]^S7[x[ 0]]^S7[x[13]];
  49da54:	8fc2012c 	lw	v0,300(s8)
  49da58:	00000000 	nop
  49da5c:	2444003c 	addiu	a0,v0,60
  49da60:	8fc20040 	lw	v0,64(s8)
  49da64:	00000000 	nop
  49da68:	00021080 	sll	v0,v0,0x2
  49da6c:	8f8387ec 	lw	v1,-30740(gp)
  49da70:	00000000 	nop
  49da74:	00621821 	addu	v1,v1,v0
  49da78:	8fc20044 	lw	v0,68(s8)
  49da7c:	00000000 	nop
  49da80:	00021080 	sll	v0,v0,0x2
  49da84:	8f8186fc 	lw	at,-30980(gp)
  49da88:	00000000 	nop
  49da8c:	00221021 	addu	v0,at,v0
  49da90:	8c630000 	lw	v1,0(v1)
  49da94:	8c420000 	lw	v0,0(v0)
  49da98:	00000000 	nop
  49da9c:	00621826 	xor	v1,v1,v0
  49daa0:	8fc2000c 	lw	v0,12(s8)
  49daa4:	00000000 	nop
  49daa8:	00021080 	sll	v0,v0,0x2
  49daac:	8f8184cc 	lw	at,-31540(gp)
  49dab0:	00000000 	nop
  49dab4:	00221021 	addu	v0,at,v0
  49dab8:	8c420000 	lw	v0,0(v0)
  49dabc:	00000000 	nop
  49dac0:	00621826 	xor	v1,v1,v0
  49dac4:	8fc20008 	lw	v0,8(s8)
  49dac8:	00000000 	nop
  49dacc:	00021080 	sll	v0,v0,0x2
  49dad0:	8f81899c 	lw	at,-30308(gp)
  49dad4:	00000000 	nop
  49dad8:	00221021 	addu	v0,at,v0
  49dadc:	8c420000 	lw	v0,0(v0)
  49dae0:	00000000 	nop
  49dae4:	00621826 	xor	v1,v1,v0
  49dae8:	8fc2003c 	lw	v0,60(s8)
  49daec:	00000000 	nop
  49daf0:	00021080 	sll	v0,v0,0x2
  49daf4:	8f81899c 	lw	at,-30308(gp)
  49daf8:	00000000 	nop
  49dafc:	00221021 	addu	v0,at,v0
  49db00:	8c420000 	lw	v0,0(v0)
  49db04:	00000000 	nop
  49db08:	00621026 	xor	v0,v1,v0
  49db0c:	ac820000 	sw	v0,0(a0)
	if (K != k)  break;
  49db10:	8fc3012c 	lw	v1,300(s8)
  49db14:	27c20088 	addiu	v0,s8,136
  49db18:	10620003 	beq	v1,v0,49db28 <CAST_set_key+0x1f48>
  49db1c:	00000000 	nop
  49db20:	10000007 	b	49db40 <CAST_set_key+0x1f60>
  49db24:	00000000 	nop
	K+=16;
  49db28:	8fc2012c 	lw	v0,300(s8)
  49db2c:	00000000 	nop
  49db30:	24420040 	addiu	v0,v0,64
  49db34:	afc2012c 	sw	v0,300(s8)
  49db38:	1000f8b6 	b	49be14 <CAST_set_key+0x234>
  49db3c:	00000000 	nop
		}

	for (i=0; i<16; i++)
  49db40:	afc00130 	sw	zero,304(s8)
  49db44:	8fc20130 	lw	v0,304(s8)
  49db48:	00000000 	nop
  49db4c:	28420010 	slti	v0,v0,16
  49db50:	14400003 	bnez	v0,49db60 <CAST_set_key+0x1f80>
  49db54:	00000000 	nop
  49db58:	10000027 	b	49dbf8 <CAST_set_key+0x2018>
  49db5c:	00000000 	nop
		{
		key->data[i*2]=k[i];
  49db60:	8fc20130 	lw	v0,304(s8)
  49db64:	00000000 	nop
  49db68:	000218c0 	sll	v1,v0,0x3
  49db6c:	8fc20140 	lw	v0,320(s8)
  49db70:	00000000 	nop
  49db74:	00432021 	addu	a0,v0,v1
  49db78:	8fc20130 	lw	v0,304(s8)
  49db7c:	00000000 	nop
  49db80:	00021880 	sll	v1,v0,0x2
  49db84:	27c20088 	addiu	v0,s8,136
  49db88:	00431021 	addu	v0,v0,v1
  49db8c:	8c420000 	lw	v0,0(v0)
  49db90:	00000000 	nop
  49db94:	ac820000 	sw	v0,0(a0)
		key->data[i*2+1]=((k[i+16])+16)&0x1f;
  49db98:	8fc20130 	lw	v0,304(s8)
  49db9c:	00000000 	nop
  49dba0:	000210c0 	sll	v0,v0,0x3
  49dba4:	24430004 	addiu	v1,v0,4
  49dba8:	8fc20140 	lw	v0,320(s8)
  49dbac:	00000000 	nop
  49dbb0:	00432021 	addu	a0,v0,v1
  49dbb4:	8fc20130 	lw	v0,304(s8)
  49dbb8:	00000000 	nop
  49dbbc:	00021080 	sll	v0,v0,0x2
  49dbc0:	24430040 	addiu	v1,v0,64
  49dbc4:	27c20088 	addiu	v0,s8,136
  49dbc8:	00431021 	addu	v0,v0,v1
  49dbcc:	8c420000 	lw	v0,0(v0)
  49dbd0:	00000000 	nop
  49dbd4:	24420010 	addiu	v0,v0,16
  49dbd8:	3042001f 	andi	v0,v0,0x1f
  49dbdc:	ac820000 	sw	v0,0(a0)
  49dbe0:	8fc20130 	lw	v0,304(s8)
  49dbe4:	00000000 	nop
  49dbe8:	24420001 	addiu	v0,v0,1
  49dbec:	afc20130 	sw	v0,304(s8)
  49dbf0:	1000ffd4 	b	49db44 <CAST_set_key+0x1f64>
  49dbf4:	00000000 	nop
		}
	}
  49dbf8:	03c0e821 	move	sp,s8
  49dbfc:	8fbe013c 	lw	s8,316(sp)
  49dc00:	27bd0140 	addiu	sp,sp,320
  49dc04:	03e00008 	jr	ra
  49dc08:	00000000 	nop
  49dc0c:	00000000 	nop

0049dc10 <CAST_encrypt>:
  49dc10:	3c1c0fb7 	lui	gp,0xfb7
  49dc14:	279ced60 	addiu	gp,gp,-4768
  49dc18:	0399e021 	addu	gp,gp,t9
  49dc1c:	27bdffd0 	addiu	sp,sp,-48
  49dc20:	afbc0000 	sw	gp,0(sp)
  49dc24:	afbe002c 	sw	s8,44(sp)
  49dc28:	afbc0028 	sw	gp,40(sp)
  49dc2c:	03a0f021 	move	s8,sp
  49dc30:	afc40030 	sw	a0,48(s8)
  49dc34:	afc50034 	sw	a1,52(s8)
void CAST_encrypt(CAST_LONG *data, CAST_KEY *key)
	{
	register CAST_LONG l,r,*k,t;

	k= &(key->data[0]);
  49dc38:	8fc20034 	lw	v0,52(s8)
  49dc3c:	00000000 	nop
  49dc40:	afc20020 	sw	v0,32(s8)
	l=data[0];
  49dc44:	8fc20030 	lw	v0,48(s8)
  49dc48:	00000000 	nop
  49dc4c:	8c420000 	lw	v0,0(v0)
  49dc50:	00000000 	nop
  49dc54:	afc20018 	sw	v0,24(s8)
	r=data[1];
  49dc58:	8fc20030 	lw	v0,48(s8)
  49dc5c:	00000000 	nop
  49dc60:	24420004 	addiu	v0,v0,4
  49dc64:	8c420000 	lw	v0,0(v0)
  49dc68:	00000000 	nop
  49dc6c:	afc2001c 	sw	v0,28(s8)

	E_CAST( 0,k,l,r,+,^,-);
  49dc70:	8fc30020 	lw	v1,32(s8)
  49dc74:	00000000 	nop
  49dc78:	8c620000 	lw	v0,0(v1)
  49dc7c:	8fc3001c 	lw	v1,28(s8)
  49dc80:	00000000 	nop
  49dc84:	00621021 	addu	v0,v1,v0
  49dc88:	afc20024 	sw	v0,36(s8)
  49dc8c:	8fc30020 	lw	v1,32(s8)
  49dc90:	00000000 	nop
  49dc94:	8c620004 	lw	v0,4(v1)
  49dc98:	8fc30024 	lw	v1,36(s8)
  49dc9c:	00000000 	nop
  49dca0:	00432004 	sllv	a0,v1,v0
  49dca4:	8fc20020 	lw	v0,32(s8)
  49dca8:	00000000 	nop
  49dcac:	8c430004 	lw	v1,4(v0)
  49dcb0:	24020020 	li	v0,32
  49dcb4:	00431023 	subu	v0,v0,v1
  49dcb8:	8fc30024 	lw	v1,36(s8)
  49dcbc:	00000000 	nop
  49dcc0:	00431006 	srlv	v0,v1,v0
  49dcc4:	00822025 	or	a0,a0,v0
  49dcc8:	afc40024 	sw	a0,36(s8)
  49dccc:	8fc30024 	lw	v1,36(s8)
  49dcd0:	00000000 	nop
  49dcd4:	00031202 	srl	v0,v1,0x8
  49dcd8:	304200ff 	andi	v0,v0,0xff
  49dcdc:	00021080 	sll	v0,v0,0x2
  49dce0:	8f8189c8 	lw	at,-30264(gp)
  49dce4:	00000000 	nop
  49dce8:	00221021 	addu	v0,at,v0
  49dcec:	8c420000 	lw	v0,0(v0)
  49dcf0:	00000000 	nop
  49dcf4:	afc20008 	sw	v0,8(s8)
  49dcf8:	8fc30024 	lw	v1,36(s8)
  49dcfc:	00000000 	nop
  49dd00:	306200ff 	andi	v0,v1,0xff
  49dd04:	00021080 	sll	v0,v0,0x2
  49dd08:	8f8180ec 	lw	at,-32532(gp)
  49dd0c:	00000000 	nop
  49dd10:	00221021 	addu	v0,at,v0
  49dd14:	8c420000 	lw	v0,0(v0)
  49dd18:	00000000 	nop
  49dd1c:	afc2000c 	sw	v0,12(s8)
  49dd20:	8fc30024 	lw	v1,36(s8)
  49dd24:	00000000 	nop
  49dd28:	00031602 	srl	v0,v1,0x18
  49dd2c:	304200ff 	andi	v0,v0,0xff
  49dd30:	00021080 	sll	v0,v0,0x2
  49dd34:	8f8185e8 	lw	at,-31256(gp)
  49dd38:	00000000 	nop
  49dd3c:	00221021 	addu	v0,at,v0
  49dd40:	8c420000 	lw	v0,0(v0)
  49dd44:	00000000 	nop
  49dd48:	afc20010 	sw	v0,16(s8)
  49dd4c:	8fc30024 	lw	v1,36(s8)
  49dd50:	00000000 	nop
  49dd54:	00031402 	srl	v0,v1,0x10
  49dd58:	304200ff 	andi	v0,v0,0xff
  49dd5c:	00021080 	sll	v0,v0,0x2
  49dd60:	8f8184d0 	lw	at,-31536(gp)
  49dd64:	00000000 	nop
  49dd68:	00221021 	addu	v0,at,v0
  49dd6c:	8c420000 	lw	v0,0(v0)
  49dd70:	00000000 	nop
  49dd74:	afc20014 	sw	v0,20(s8)
  49dd78:	8fc30008 	lw	v1,8(s8)
  49dd7c:	8fc2000c 	lw	v0,12(s8)
  49dd80:	00000000 	nop
  49dd84:	00621826 	xor	v1,v1,v0
  49dd88:	8fc20010 	lw	v0,16(s8)
  49dd8c:	00000000 	nop
  49dd90:	00621823 	subu	v1,v1,v0
  49dd94:	8fc20014 	lw	v0,20(s8)
  49dd98:	00000000 	nop
  49dd9c:	00621021 	addu	v0,v1,v0
  49dda0:	8fc30018 	lw	v1,24(s8)
  49dda4:	00000000 	nop
  49dda8:	00621826 	xor	v1,v1,v0
  49ddac:	afc30018 	sw	v1,24(s8)
	E_CAST( 1,k,r,l,^,-,+);
  49ddb0:	8fc30020 	lw	v1,32(s8)
  49ddb4:	00000000 	nop
  49ddb8:	8c620008 	lw	v0,8(v1)
  49ddbc:	8fc30018 	lw	v1,24(s8)
  49ddc0:	00000000 	nop
  49ddc4:	00621026 	xor	v0,v1,v0
  49ddc8:	afc20024 	sw	v0,36(s8)
  49ddcc:	8fc30020 	lw	v1,32(s8)
  49ddd0:	00000000 	nop
  49ddd4:	8c62000c 	lw	v0,12(v1)
  49ddd8:	8fc30024 	lw	v1,36(s8)
  49dddc:	00000000 	nop
  49dde0:	00432004 	sllv	a0,v1,v0
  49dde4:	8fc20020 	lw	v0,32(s8)
  49dde8:	00000000 	nop
  49ddec:	8c43000c 	lw	v1,12(v0)
  49ddf0:	24020020 	li	v0,32
  49ddf4:	00431023 	subu	v0,v0,v1
  49ddf8:	8fc30024 	lw	v1,36(s8)
  49ddfc:	00000000 	nop
  49de00:	00431006 	srlv	v0,v1,v0
  49de04:	00822025 	or	a0,a0,v0
  49de08:	afc40024 	sw	a0,36(s8)
  49de0c:	8fc30024 	lw	v1,36(s8)
  49de10:	00000000 	nop
  49de14:	00031202 	srl	v0,v1,0x8
  49de18:	304200ff 	andi	v0,v0,0xff
  49de1c:	00021080 	sll	v0,v0,0x2
  49de20:	8f8189c8 	lw	at,-30264(gp)
  49de24:	00000000 	nop
  49de28:	00221021 	addu	v0,at,v0
  49de2c:	8c420000 	lw	v0,0(v0)
  49de30:	00000000 	nop
  49de34:	afc20014 	sw	v0,20(s8)
  49de38:	8fc30024 	lw	v1,36(s8)
  49de3c:	00000000 	nop
  49de40:	306200ff 	andi	v0,v1,0xff
  49de44:	00021080 	sll	v0,v0,0x2
  49de48:	8f8180ec 	lw	at,-32532(gp)
  49de4c:	00000000 	nop
  49de50:	00221021 	addu	v0,at,v0
  49de54:	8c420000 	lw	v0,0(v0)
  49de58:	00000000 	nop
  49de5c:	afc20010 	sw	v0,16(s8)
  49de60:	8fc30024 	lw	v1,36(s8)
  49de64:	00000000 	nop
  49de68:	00031602 	srl	v0,v1,0x18
  49de6c:	304200ff 	andi	v0,v0,0xff
  49de70:	00021080 	sll	v0,v0,0x2
  49de74:	8f8185e8 	lw	at,-31256(gp)
  49de78:	00000000 	nop
  49de7c:	00221021 	addu	v0,at,v0
  49de80:	8c420000 	lw	v0,0(v0)
  49de84:	00000000 	nop
  49de88:	afc2000c 	sw	v0,12(s8)
  49de8c:	8fc30024 	lw	v1,36(s8)
  49de90:	00000000 	nop
  49de94:	00031402 	srl	v0,v1,0x10
  49de98:	304200ff 	andi	v0,v0,0xff
  49de9c:	00021080 	sll	v0,v0,0x2
  49dea0:	8f8184d0 	lw	at,-31536(gp)
  49dea4:	00000000 	nop
  49dea8:	00221021 	addu	v0,at,v0
  49deac:	8c420000 	lw	v0,0(v0)
  49deb0:	00000000 	nop
  49deb4:	afc20008 	sw	v0,8(s8)
  49deb8:	8fc30014 	lw	v1,20(s8)
  49debc:	8fc20010 	lw	v0,16(s8)
  49dec0:	00000000 	nop
  49dec4:	00621823 	subu	v1,v1,v0
  49dec8:	8fc2000c 	lw	v0,12(s8)
  49decc:	00000000 	nop
  49ded0:	00621821 	addu	v1,v1,v0
  49ded4:	8fc20008 	lw	v0,8(s8)
  49ded8:	00000000 	nop
  49dedc:	00621026 	xor	v0,v1,v0
  49dee0:	8fc3001c 	lw	v1,28(s8)
  49dee4:	00000000 	nop
  49dee8:	00621826 	xor	v1,v1,v0
  49deec:	afc3001c 	sw	v1,28(s8)
	E_CAST( 2,k,l,r,-,+,^);
  49def0:	8fc30020 	lw	v1,32(s8)
  49def4:	00000000 	nop
  49def8:	8c620010 	lw	v0,16(v1)
  49defc:	8fc3001c 	lw	v1,28(s8)
  49df00:	00000000 	nop
  49df04:	00431023 	subu	v0,v0,v1
  49df08:	afc20024 	sw	v0,36(s8)
  49df0c:	8fc30020 	lw	v1,32(s8)
  49df10:	00000000 	nop
  49df14:	8c620014 	lw	v0,20(v1)
  49df18:	8fc30024 	lw	v1,36(s8)
  49df1c:	00000000 	nop
  49df20:	00432004 	sllv	a0,v1,v0
  49df24:	8fc20020 	lw	v0,32(s8)
  49df28:	00000000 	nop
  49df2c:	8c430014 	lw	v1,20(v0)
  49df30:	24020020 	li	v0,32
  49df34:	00431023 	subu	v0,v0,v1
  49df38:	8fc30024 	lw	v1,36(s8)
  49df3c:	00000000 	nop
  49df40:	00431006 	srlv	v0,v1,v0
  49df44:	00822025 	or	a0,a0,v0
  49df48:	afc40024 	sw	a0,36(s8)
  49df4c:	8fc30024 	lw	v1,36(s8)
  49df50:	00000000 	nop
  49df54:	00031202 	srl	v0,v1,0x8
  49df58:	304200ff 	andi	v0,v0,0xff
  49df5c:	00021080 	sll	v0,v0,0x2
  49df60:	8f8189c8 	lw	at,-30264(gp)
  49df64:	00000000 	nop
  49df68:	00221021 	addu	v0,at,v0
  49df6c:	8c420000 	lw	v0,0(v0)
  49df70:	00000000 	nop
  49df74:	afc20014 	sw	v0,20(s8)
  49df78:	8fc30024 	lw	v1,36(s8)
  49df7c:	00000000 	nop
  49df80:	306200ff 	andi	v0,v1,0xff
  49df84:	00021080 	sll	v0,v0,0x2
  49df88:	8f8180ec 	lw	at,-32532(gp)
  49df8c:	00000000 	nop
  49df90:	00221021 	addu	v0,at,v0
  49df94:	8c420000 	lw	v0,0(v0)
  49df98:	00000000 	nop
  49df9c:	afc20010 	sw	v0,16(s8)
  49dfa0:	8fc30024 	lw	v1,36(s8)
  49dfa4:	00000000 	nop
  49dfa8:	00031602 	srl	v0,v1,0x18
  49dfac:	304200ff 	andi	v0,v0,0xff
  49dfb0:	00021080 	sll	v0,v0,0x2
  49dfb4:	8f8185e8 	lw	at,-31256(gp)
  49dfb8:	00000000 	nop
  49dfbc:	00221021 	addu	v0,at,v0
  49dfc0:	8c420000 	lw	v0,0(v0)
  49dfc4:	00000000 	nop
  49dfc8:	afc2000c 	sw	v0,12(s8)
  49dfcc:	8fc30024 	lw	v1,36(s8)
  49dfd0:	00000000 	nop
  49dfd4:	00031402 	srl	v0,v1,0x10
  49dfd8:	304200ff 	andi	v0,v0,0xff
  49dfdc:	00021080 	sll	v0,v0,0x2
  49dfe0:	8f8184d0 	lw	at,-31536(gp)
  49dfe4:	00000000 	nop
  49dfe8:	00221021 	addu	v0,at,v0
  49dfec:	8c420000 	lw	v0,0(v0)
  49dff0:	00000000 	nop
  49dff4:	afc20008 	sw	v0,8(s8)
  49dff8:	8fc30014 	lw	v1,20(s8)
  49dffc:	8fc20010 	lw	v0,16(s8)
  49e000:	00000000 	nop
  49e004:	00621821 	addu	v1,v1,v0
  49e008:	8fc2000c 	lw	v0,12(s8)
  49e00c:	00000000 	nop
  49e010:	00621826 	xor	v1,v1,v0
  49e014:	8fc20008 	lw	v0,8(s8)
  49e018:	00000000 	nop
  49e01c:	00621023 	subu	v0,v1,v0
  49e020:	8fc30018 	lw	v1,24(s8)
  49e024:	00000000 	nop
  49e028:	00621826 	xor	v1,v1,v0
  49e02c:	afc30018 	sw	v1,24(s8)
	E_CAST( 3,k,r,l,+,^,-);
  49e030:	8fc30020 	lw	v1,32(s8)
  49e034:	00000000 	nop
  49e038:	8c620018 	lw	v0,24(v1)
  49e03c:	8fc30018 	lw	v1,24(s8)
  49e040:	00000000 	nop
  49e044:	00621021 	addu	v0,v1,v0
  49e048:	afc20024 	sw	v0,36(s8)
  49e04c:	8fc30020 	lw	v1,32(s8)
  49e050:	00000000 	nop
  49e054:	8c62001c 	lw	v0,28(v1)
  49e058:	8fc30024 	lw	v1,36(s8)
  49e05c:	00000000 	nop
  49e060:	00432004 	sllv	a0,v1,v0
  49e064:	8fc20020 	lw	v0,32(s8)
  49e068:	00000000 	nop
  49e06c:	8c43001c 	lw	v1,28(v0)
  49e070:	24020020 	li	v0,32
  49e074:	00431023 	subu	v0,v0,v1
  49e078:	8fc30024 	lw	v1,36(s8)
  49e07c:	00000000 	nop
  49e080:	00431006 	srlv	v0,v1,v0
  49e084:	00822025 	or	a0,a0,v0
  49e088:	afc40024 	sw	a0,36(s8)
  49e08c:	8fc30024 	lw	v1,36(s8)
  49e090:	00000000 	nop
  49e094:	00031202 	srl	v0,v1,0x8
  49e098:	304200ff 	andi	v0,v0,0xff
  49e09c:	00021080 	sll	v0,v0,0x2
  49e0a0:	8f8189c8 	lw	at,-30264(gp)
  49e0a4:	00000000 	nop
  49e0a8:	00221021 	addu	v0,at,v0
  49e0ac:	8c420000 	lw	v0,0(v0)
  49e0b0:	00000000 	nop
  49e0b4:	afc20014 	sw	v0,20(s8)
  49e0b8:	8fc30024 	lw	v1,36(s8)
  49e0bc:	00000000 	nop
  49e0c0:	306200ff 	andi	v0,v1,0xff
  49e0c4:	00021080 	sll	v0,v0,0x2
  49e0c8:	8f8180ec 	lw	at,-32532(gp)
  49e0cc:	00000000 	nop
  49e0d0:	00221021 	addu	v0,at,v0
  49e0d4:	8c420000 	lw	v0,0(v0)
  49e0d8:	00000000 	nop
  49e0dc:	afc20010 	sw	v0,16(s8)
  49e0e0:	8fc30024 	lw	v1,36(s8)
  49e0e4:	00000000 	nop
  49e0e8:	00031602 	srl	v0,v1,0x18
  49e0ec:	304200ff 	andi	v0,v0,0xff
  49e0f0:	00021080 	sll	v0,v0,0x2
  49e0f4:	8f8185e8 	lw	at,-31256(gp)
  49e0f8:	00000000 	nop
  49e0fc:	00221021 	addu	v0,at,v0
  49e100:	8c420000 	lw	v0,0(v0)
  49e104:	00000000 	nop
  49e108:	afc2000c 	sw	v0,12(s8)
  49e10c:	8fc30024 	lw	v1,36(s8)
  49e110:	00000000 	nop
  49e114:	00031402 	srl	v0,v1,0x10
  49e118:	304200ff 	andi	v0,v0,0xff
  49e11c:	00021080 	sll	v0,v0,0x2
  49e120:	8f8184d0 	lw	at,-31536(gp)
  49e124:	00000000 	nop
  49e128:	00221021 	addu	v0,at,v0
  49e12c:	8c420000 	lw	v0,0(v0)
  49e130:	00000000 	nop
  49e134:	afc20008 	sw	v0,8(s8)
  49e138:	8fc30014 	lw	v1,20(s8)
  49e13c:	8fc20010 	lw	v0,16(s8)
  49e140:	00000000 	nop
  49e144:	00621826 	xor	v1,v1,v0
  49e148:	8fc2000c 	lw	v0,12(s8)
  49e14c:	00000000 	nop
  49e150:	00621823 	subu	v1,v1,v0
  49e154:	8fc20008 	lw	v0,8(s8)
  49e158:	00000000 	nop
  49e15c:	00621021 	addu	v0,v1,v0
  49e160:	8fc3001c 	lw	v1,28(s8)
  49e164:	00000000 	nop
  49e168:	00621826 	xor	v1,v1,v0
  49e16c:	afc3001c 	sw	v1,28(s8)
	E_CAST( 4,k,l,r,^,-,+);
  49e170:	8fc30020 	lw	v1,32(s8)
  49e174:	00000000 	nop
  49e178:	8c620020 	lw	v0,32(v1)
  49e17c:	8fc3001c 	lw	v1,28(s8)
  49e180:	00000000 	nop
  49e184:	00621026 	xor	v0,v1,v0
  49e188:	afc20024 	sw	v0,36(s8)
  49e18c:	8fc30020 	lw	v1,32(s8)
  49e190:	00000000 	nop
  49e194:	8c620024 	lw	v0,36(v1)
  49e198:	8fc30024 	lw	v1,36(s8)
  49e19c:	00000000 	nop
  49e1a0:	00432004 	sllv	a0,v1,v0
  49e1a4:	8fc20020 	lw	v0,32(s8)
  49e1a8:	00000000 	nop
  49e1ac:	8c430024 	lw	v1,36(v0)
  49e1b0:	24020020 	li	v0,32
  49e1b4:	00431023 	subu	v0,v0,v1
  49e1b8:	8fc30024 	lw	v1,36(s8)
  49e1bc:	00000000 	nop
  49e1c0:	00431006 	srlv	v0,v1,v0
  49e1c4:	00822025 	or	a0,a0,v0
  49e1c8:	afc40024 	sw	a0,36(s8)
  49e1cc:	8fc30024 	lw	v1,36(s8)
  49e1d0:	00000000 	nop
  49e1d4:	00031202 	srl	v0,v1,0x8
  49e1d8:	304200ff 	andi	v0,v0,0xff
  49e1dc:	00021080 	sll	v0,v0,0x2
  49e1e0:	8f8189c8 	lw	at,-30264(gp)
  49e1e4:	00000000 	nop
  49e1e8:	00221021 	addu	v0,at,v0
  49e1ec:	8c420000 	lw	v0,0(v0)
  49e1f0:	00000000 	nop
  49e1f4:	afc20014 	sw	v0,20(s8)
  49e1f8:	8fc30024 	lw	v1,36(s8)
  49e1fc:	00000000 	nop
  49e200:	306200ff 	andi	v0,v1,0xff
  49e204:	00021080 	sll	v0,v0,0x2
  49e208:	8f8180ec 	lw	at,-32532(gp)
  49e20c:	00000000 	nop
  49e210:	00221021 	addu	v0,at,v0
  49e214:	8c420000 	lw	v0,0(v0)
  49e218:	00000000 	nop
  49e21c:	afc20010 	sw	v0,16(s8)
  49e220:	8fc30024 	lw	v1,36(s8)
  49e224:	00000000 	nop
  49e228:	00031602 	srl	v0,v1,0x18
  49e22c:	304200ff 	andi	v0,v0,0xff
  49e230:	00021080 	sll	v0,v0,0x2
  49e234:	8f8185e8 	lw	at,-31256(gp)
  49e238:	00000000 	nop
  49e23c:	00221021 	addu	v0,at,v0
  49e240:	8c420000 	lw	v0,0(v0)
  49e244:	00000000 	nop
  49e248:	afc2000c 	sw	v0,12(s8)
  49e24c:	8fc30024 	lw	v1,36(s8)
  49e250:	00000000 	nop
  49e254:	00031402 	srl	v0,v1,0x10
  49e258:	304200ff 	andi	v0,v0,0xff
  49e25c:	00021080 	sll	v0,v0,0x2
  49e260:	8f8184d0 	lw	at,-31536(gp)
  49e264:	00000000 	nop
  49e268:	00221021 	addu	v0,at,v0
  49e26c:	8c420000 	lw	v0,0(v0)
  49e270:	00000000 	nop
  49e274:	afc20008 	sw	v0,8(s8)
  49e278:	8fc30014 	lw	v1,20(s8)
  49e27c:	8fc20010 	lw	v0,16(s8)
  49e280:	00000000 	nop
  49e284:	00621823 	subu	v1,v1,v0
  49e288:	8fc2000c 	lw	v0,12(s8)
  49e28c:	00000000 	nop
  49e290:	00621821 	addu	v1,v1,v0
  49e294:	8fc20008 	lw	v0,8(s8)
  49e298:	00000000 	nop
  49e29c:	00621026 	xor	v0,v1,v0
  49e2a0:	8fc30018 	lw	v1,24(s8)
  49e2a4:	00000000 	nop
  49e2a8:	00621826 	xor	v1,v1,v0
  49e2ac:	afc30018 	sw	v1,24(s8)
	E_CAST( 5,k,r,l,-,+,^);
  49e2b0:	8fc30020 	lw	v1,32(s8)
  49e2b4:	00000000 	nop
  49e2b8:	8c620028 	lw	v0,40(v1)
  49e2bc:	8fc30018 	lw	v1,24(s8)
  49e2c0:	00000000 	nop
  49e2c4:	00431023 	subu	v0,v0,v1
  49e2c8:	afc20024 	sw	v0,36(s8)
  49e2cc:	8fc30020 	lw	v1,32(s8)
  49e2d0:	00000000 	nop
  49e2d4:	8c62002c 	lw	v0,44(v1)
  49e2d8:	8fc30024 	lw	v1,36(s8)
  49e2dc:	00000000 	nop
  49e2e0:	00432004 	sllv	a0,v1,v0
  49e2e4:	8fc20020 	lw	v0,32(s8)
  49e2e8:	00000000 	nop
  49e2ec:	8c43002c 	lw	v1,44(v0)
  49e2f0:	24020020 	li	v0,32
  49e2f4:	00431023 	subu	v0,v0,v1
  49e2f8:	8fc30024 	lw	v1,36(s8)
  49e2fc:	00000000 	nop
  49e300:	00431006 	srlv	v0,v1,v0
  49e304:	00822025 	or	a0,a0,v0
  49e308:	afc40024 	sw	a0,36(s8)
  49e30c:	8fc30024 	lw	v1,36(s8)
  49e310:	00000000 	nop
  49e314:	00031202 	srl	v0,v1,0x8
  49e318:	304200ff 	andi	v0,v0,0xff
  49e31c:	00021080 	sll	v0,v0,0x2
  49e320:	8f8189c8 	lw	at,-30264(gp)
  49e324:	00000000 	nop
  49e328:	00221021 	addu	v0,at,v0
  49e32c:	8c420000 	lw	v0,0(v0)
  49e330:	00000000 	nop
  49e334:	afc20014 	sw	v0,20(s8)
  49e338:	8fc30024 	lw	v1,36(s8)
  49e33c:	00000000 	nop
  49e340:	306200ff 	andi	v0,v1,0xff
  49e344:	00021080 	sll	v0,v0,0x2
  49e348:	8f8180ec 	lw	at,-32532(gp)
  49e34c:	00000000 	nop
  49e350:	00221021 	addu	v0,at,v0
  49e354:	8c420000 	lw	v0,0(v0)
  49e358:	00000000 	nop
  49e35c:	afc20010 	sw	v0,16(s8)
  49e360:	8fc30024 	lw	v1,36(s8)
  49e364:	00000000 	nop
  49e368:	00031602 	srl	v0,v1,0x18
  49e36c:	304200ff 	andi	v0,v0,0xff
  49e370:	00021080 	sll	v0,v0,0x2
  49e374:	8f8185e8 	lw	at,-31256(gp)
  49e378:	00000000 	nop
  49e37c:	00221021 	addu	v0,at,v0
  49e380:	8c420000 	lw	v0,0(v0)
  49e384:	00000000 	nop
  49e388:	afc2000c 	sw	v0,12(s8)
  49e38c:	8fc30024 	lw	v1,36(s8)
  49e390:	00000000 	nop
  49e394:	00031402 	srl	v0,v1,0x10
  49e398:	304200ff 	andi	v0,v0,0xff
  49e39c:	00021080 	sll	v0,v0,0x2
  49e3a0:	8f8184d0 	lw	at,-31536(gp)
  49e3a4:	00000000 	nop
  49e3a8:	00221021 	addu	v0,at,v0
  49e3ac:	8c420000 	lw	v0,0(v0)
  49e3b0:	00000000 	nop
  49e3b4:	afc20008 	sw	v0,8(s8)
  49e3b8:	8fc30014 	lw	v1,20(s8)
  49e3bc:	8fc20010 	lw	v0,16(s8)
  49e3c0:	00000000 	nop
  49e3c4:	00621821 	addu	v1,v1,v0
  49e3c8:	8fc2000c 	lw	v0,12(s8)
  49e3cc:	00000000 	nop
  49e3d0:	00621826 	xor	v1,v1,v0
  49e3d4:	8fc20008 	lw	v0,8(s8)
  49e3d8:	00000000 	nop
  49e3dc:	00621023 	subu	v0,v1,v0
  49e3e0:	8fc3001c 	lw	v1,28(s8)
  49e3e4:	00000000 	nop
  49e3e8:	00621826 	xor	v1,v1,v0
  49e3ec:	afc3001c 	sw	v1,28(s8)
	E_CAST( 6,k,l,r,+,^,-);
  49e3f0:	8fc30020 	lw	v1,32(s8)
  49e3f4:	00000000 	nop
  49e3f8:	8c620030 	lw	v0,48(v1)
  49e3fc:	8fc3001c 	lw	v1,28(s8)
  49e400:	00000000 	nop
  49e404:	00621021 	addu	v0,v1,v0
  49e408:	afc20024 	sw	v0,36(s8)
  49e40c:	8fc30020 	lw	v1,32(s8)
  49e410:	00000000 	nop
  49e414:	8c620034 	lw	v0,52(v1)
  49e418:	8fc30024 	lw	v1,36(s8)
  49e41c:	00000000 	nop
  49e420:	00432004 	sllv	a0,v1,v0
  49e424:	8fc20020 	lw	v0,32(s8)
  49e428:	00000000 	nop
  49e42c:	8c430034 	lw	v1,52(v0)
  49e430:	24020020 	li	v0,32
  49e434:	00431023 	subu	v0,v0,v1
  49e438:	8fc30024 	lw	v1,36(s8)
  49e43c:	00000000 	nop
  49e440:	00431006 	srlv	v0,v1,v0
  49e444:	00822025 	or	a0,a0,v0
  49e448:	afc40024 	sw	a0,36(s8)
  49e44c:	8fc30024 	lw	v1,36(s8)
  49e450:	00000000 	nop
  49e454:	00031202 	srl	v0,v1,0x8
  49e458:	304200ff 	andi	v0,v0,0xff
  49e45c:	00021080 	sll	v0,v0,0x2
  49e460:	8f8189c8 	lw	at,-30264(gp)
  49e464:	00000000 	nop
  49e468:	00221021 	addu	v0,at,v0
  49e46c:	8c420000 	lw	v0,0(v0)
  49e470:	00000000 	nop
  49e474:	afc20014 	sw	v0,20(s8)
  49e478:	8fc30024 	lw	v1,36(s8)
  49e47c:	00000000 	nop
  49e480:	306200ff 	andi	v0,v1,0xff
  49e484:	00021080 	sll	v0,v0,0x2
  49e488:	8f8180ec 	lw	at,-32532(gp)
  49e48c:	00000000 	nop
  49e490:	00221021 	addu	v0,at,v0
  49e494:	8c420000 	lw	v0,0(v0)
  49e498:	00000000 	nop
  49e49c:	afc20010 	sw	v0,16(s8)
  49e4a0:	8fc30024 	lw	v1,36(s8)
  49e4a4:	00000000 	nop
  49e4a8:	00031602 	srl	v0,v1,0x18
  49e4ac:	304200ff 	andi	v0,v0,0xff
  49e4b0:	00021080 	sll	v0,v0,0x2
  49e4b4:	8f8185e8 	lw	at,-31256(gp)
  49e4b8:	00000000 	nop
  49e4bc:	00221021 	addu	v0,at,v0
  49e4c0:	8c420000 	lw	v0,0(v0)
  49e4c4:	00000000 	nop
  49e4c8:	afc2000c 	sw	v0,12(s8)
  49e4cc:	8fc30024 	lw	v1,36(s8)
  49e4d0:	00000000 	nop
  49e4d4:	00031402 	srl	v0,v1,0x10
  49e4d8:	304200ff 	andi	v0,v0,0xff
  49e4dc:	00021080 	sll	v0,v0,0x2
  49e4e0:	8f8184d0 	lw	at,-31536(gp)
  49e4e4:	00000000 	nop
  49e4e8:	00221021 	addu	v0,at,v0
  49e4ec:	8c420000 	lw	v0,0(v0)
  49e4f0:	00000000 	nop
  49e4f4:	afc20008 	sw	v0,8(s8)
  49e4f8:	8fc30014 	lw	v1,20(s8)
  49e4fc:	8fc20010 	lw	v0,16(s8)
  49e500:	00000000 	nop
  49e504:	00621826 	xor	v1,v1,v0
  49e508:	8fc2000c 	lw	v0,12(s8)
  49e50c:	00000000 	nop
  49e510:	00621823 	subu	v1,v1,v0
  49e514:	8fc20008 	lw	v0,8(s8)
  49e518:	00000000 	nop
  49e51c:	00621021 	addu	v0,v1,v0
  49e520:	8fc30018 	lw	v1,24(s8)
  49e524:	00000000 	nop
  49e528:	00621826 	xor	v1,v1,v0
  49e52c:	afc30018 	sw	v1,24(s8)
	E_CAST( 7,k,r,l,^,-,+);
  49e530:	8fc30020 	lw	v1,32(s8)
  49e534:	00000000 	nop
  49e538:	8c620038 	lw	v0,56(v1)
  49e53c:	8fc30018 	lw	v1,24(s8)
  49e540:	00000000 	nop
  49e544:	00621026 	xor	v0,v1,v0
  49e548:	afc20024 	sw	v0,36(s8)
  49e54c:	8fc30020 	lw	v1,32(s8)
  49e550:	00000000 	nop
  49e554:	8c62003c 	lw	v0,60(v1)
  49e558:	8fc30024 	lw	v1,36(s8)
  49e55c:	00000000 	nop
  49e560:	00432004 	sllv	a0,v1,v0
  49e564:	8fc20020 	lw	v0,32(s8)
  49e568:	00000000 	nop
  49e56c:	8c43003c 	lw	v1,60(v0)
  49e570:	24020020 	li	v0,32
  49e574:	00431023 	subu	v0,v0,v1
  49e578:	8fc30024 	lw	v1,36(s8)
  49e57c:	00000000 	nop
  49e580:	00431006 	srlv	v0,v1,v0
  49e584:	00822025 	or	a0,a0,v0
  49e588:	afc40024 	sw	a0,36(s8)
  49e58c:	8fc30024 	lw	v1,36(s8)
  49e590:	00000000 	nop
  49e594:	00031202 	srl	v0,v1,0x8
  49e598:	304200ff 	andi	v0,v0,0xff
  49e59c:	00021080 	sll	v0,v0,0x2
  49e5a0:	8f8189c8 	lw	at,-30264(gp)
  49e5a4:	00000000 	nop
  49e5a8:	00221021 	addu	v0,at,v0
  49e5ac:	8c420000 	lw	v0,0(v0)
  49e5b0:	00000000 	nop
  49e5b4:	afc20014 	sw	v0,20(s8)
  49e5b8:	8fc30024 	lw	v1,36(s8)
  49e5bc:	00000000 	nop
  49e5c0:	306200ff 	andi	v0,v1,0xff
  49e5c4:	00021080 	sll	v0,v0,0x2
  49e5c8:	8f8180ec 	lw	at,-32532(gp)
  49e5cc:	00000000 	nop
  49e5d0:	00221021 	addu	v0,at,v0
  49e5d4:	8c420000 	lw	v0,0(v0)
  49e5d8:	00000000 	nop
  49e5dc:	afc20010 	sw	v0,16(s8)
  49e5e0:	8fc30024 	lw	v1,36(s8)
  49e5e4:	00000000 	nop
  49e5e8:	00031602 	srl	v0,v1,0x18
  49e5ec:	304200ff 	andi	v0,v0,0xff
  49e5f0:	00021080 	sll	v0,v0,0x2
  49e5f4:	8f8185e8 	lw	at,-31256(gp)
  49e5f8:	00000000 	nop
  49e5fc:	00221021 	addu	v0,at,v0
  49e600:	8c420000 	lw	v0,0(v0)
  49e604:	00000000 	nop
  49e608:	afc2000c 	sw	v0,12(s8)
  49e60c:	8fc30024 	lw	v1,36(s8)
  49e610:	00000000 	nop
  49e614:	00031402 	srl	v0,v1,0x10
  49e618:	304200ff 	andi	v0,v0,0xff
  49e61c:	00021080 	sll	v0,v0,0x2
  49e620:	8f8184d0 	lw	at,-31536(gp)
  49e624:	00000000 	nop
  49e628:	00221021 	addu	v0,at,v0
  49e62c:	8c420000 	lw	v0,0(v0)
  49e630:	00000000 	nop
  49e634:	afc20008 	sw	v0,8(s8)
  49e638:	8fc30014 	lw	v1,20(s8)
  49e63c:	8fc20010 	lw	v0,16(s8)
  49e640:	00000000 	nop
  49e644:	00621823 	subu	v1,v1,v0
  49e648:	8fc2000c 	lw	v0,12(s8)
  49e64c:	00000000 	nop
  49e650:	00621821 	addu	v1,v1,v0
  49e654:	8fc20008 	lw	v0,8(s8)
  49e658:	00000000 	nop
  49e65c:	00621026 	xor	v0,v1,v0
  49e660:	8fc3001c 	lw	v1,28(s8)
  49e664:	00000000 	nop
  49e668:	00621826 	xor	v1,v1,v0
  49e66c:	afc3001c 	sw	v1,28(s8)
	E_CAST( 8,k,l,r,-,+,^);
  49e670:	8fc30020 	lw	v1,32(s8)
  49e674:	00000000 	nop
  49e678:	8c620040 	lw	v0,64(v1)
  49e67c:	8fc3001c 	lw	v1,28(s8)
  49e680:	00000000 	nop
  49e684:	00431023 	subu	v0,v0,v1
  49e688:	afc20024 	sw	v0,36(s8)
  49e68c:	8fc30020 	lw	v1,32(s8)
  49e690:	00000000 	nop
  49e694:	8c620044 	lw	v0,68(v1)
  49e698:	8fc30024 	lw	v1,36(s8)
  49e69c:	00000000 	nop
  49e6a0:	00432004 	sllv	a0,v1,v0
  49e6a4:	8fc20020 	lw	v0,32(s8)
  49e6a8:	00000000 	nop
  49e6ac:	8c430044 	lw	v1,68(v0)
  49e6b0:	24020020 	li	v0,32
  49e6b4:	00431023 	subu	v0,v0,v1
  49e6b8:	8fc30024 	lw	v1,36(s8)
  49e6bc:	00000000 	nop
  49e6c0:	00431006 	srlv	v0,v1,v0
  49e6c4:	00822025 	or	a0,a0,v0
  49e6c8:	afc40024 	sw	a0,36(s8)
  49e6cc:	8fc30024 	lw	v1,36(s8)
  49e6d0:	00000000 	nop
  49e6d4:	00031202 	srl	v0,v1,0x8
  49e6d8:	304200ff 	andi	v0,v0,0xff
  49e6dc:	00021080 	sll	v0,v0,0x2
  49e6e0:	8f8189c8 	lw	at,-30264(gp)
  49e6e4:	00000000 	nop
  49e6e8:	00221021 	addu	v0,at,v0
  49e6ec:	8c420000 	lw	v0,0(v0)
  49e6f0:	00000000 	nop
  49e6f4:	afc20014 	sw	v0,20(s8)
  49e6f8:	8fc30024 	lw	v1,36(s8)
  49e6fc:	00000000 	nop
  49e700:	306200ff 	andi	v0,v1,0xff
  49e704:	00021080 	sll	v0,v0,0x2
  49e708:	8f8180ec 	lw	at,-32532(gp)
  49e70c:	00000000 	nop
  49e710:	00221021 	addu	v0,at,v0
  49e714:	8c420000 	lw	v0,0(v0)
  49e718:	00000000 	nop
  49e71c:	afc20010 	sw	v0,16(s8)
  49e720:	8fc30024 	lw	v1,36(s8)
  49e724:	00000000 	nop
  49e728:	00031602 	srl	v0,v1,0x18
  49e72c:	304200ff 	andi	v0,v0,0xff
  49e730:	00021080 	sll	v0,v0,0x2
  49e734:	8f8185e8 	lw	at,-31256(gp)
  49e738:	00000000 	nop
  49e73c:	00221021 	addu	v0,at,v0
  49e740:	8c420000 	lw	v0,0(v0)
  49e744:	00000000 	nop
  49e748:	afc2000c 	sw	v0,12(s8)
  49e74c:	8fc30024 	lw	v1,36(s8)
  49e750:	00000000 	nop
  49e754:	00031402 	srl	v0,v1,0x10
  49e758:	304200ff 	andi	v0,v0,0xff
  49e75c:	00021080 	sll	v0,v0,0x2
  49e760:	8f8184d0 	lw	at,-31536(gp)
  49e764:	00000000 	nop
  49e768:	00221021 	addu	v0,at,v0
  49e76c:	8c420000 	lw	v0,0(v0)
  49e770:	00000000 	nop
  49e774:	afc20008 	sw	v0,8(s8)
  49e778:	8fc30014 	lw	v1,20(s8)
  49e77c:	8fc20010 	lw	v0,16(s8)
  49e780:	00000000 	nop
  49e784:	00621821 	addu	v1,v1,v0
  49e788:	8fc2000c 	lw	v0,12(s8)
  49e78c:	00000000 	nop
  49e790:	00621826 	xor	v1,v1,v0
  49e794:	8fc20008 	lw	v0,8(s8)
  49e798:	00000000 	nop
  49e79c:	00621023 	subu	v0,v1,v0
  49e7a0:	8fc30018 	lw	v1,24(s8)
  49e7a4:	00000000 	nop
  49e7a8:	00621826 	xor	v1,v1,v0
  49e7ac:	afc30018 	sw	v1,24(s8)
	E_CAST( 9,k,r,l,+,^,-);
  49e7b0:	8fc30020 	lw	v1,32(s8)
  49e7b4:	00000000 	nop
  49e7b8:	8c620048 	lw	v0,72(v1)
  49e7bc:	8fc30018 	lw	v1,24(s8)
  49e7c0:	00000000 	nop
  49e7c4:	00621021 	addu	v0,v1,v0
  49e7c8:	afc20024 	sw	v0,36(s8)
  49e7cc:	8fc30020 	lw	v1,32(s8)
  49e7d0:	00000000 	nop
  49e7d4:	8c62004c 	lw	v0,76(v1)
  49e7d8:	8fc30024 	lw	v1,36(s8)
  49e7dc:	00000000 	nop
  49e7e0:	00432004 	sllv	a0,v1,v0
  49e7e4:	8fc20020 	lw	v0,32(s8)
  49e7e8:	00000000 	nop
  49e7ec:	8c43004c 	lw	v1,76(v0)
  49e7f0:	24020020 	li	v0,32
  49e7f4:	00431023 	subu	v0,v0,v1
  49e7f8:	8fc30024 	lw	v1,36(s8)
  49e7fc:	00000000 	nop
  49e800:	00431006 	srlv	v0,v1,v0
  49e804:	00822025 	or	a0,a0,v0
  49e808:	afc40024 	sw	a0,36(s8)
  49e80c:	8fc30024 	lw	v1,36(s8)
  49e810:	00000000 	nop
  49e814:	00031202 	srl	v0,v1,0x8
  49e818:	304200ff 	andi	v0,v0,0xff
  49e81c:	00021080 	sll	v0,v0,0x2
  49e820:	8f8189c8 	lw	at,-30264(gp)
  49e824:	00000000 	nop
  49e828:	00221021 	addu	v0,at,v0
  49e82c:	8c420000 	lw	v0,0(v0)
  49e830:	00000000 	nop
  49e834:	afc20014 	sw	v0,20(s8)
  49e838:	8fc30024 	lw	v1,36(s8)
  49e83c:	00000000 	nop
  49e840:	306200ff 	andi	v0,v1,0xff
  49e844:	00021080 	sll	v0,v0,0x2
  49e848:	8f8180ec 	lw	at,-32532(gp)
  49e84c:	00000000 	nop
  49e850:	00221021 	addu	v0,at,v0
  49e854:	8c420000 	lw	v0,0(v0)
  49e858:	00000000 	nop
  49e85c:	afc20010 	sw	v0,16(s8)
  49e860:	8fc30024 	lw	v1,36(s8)
  49e864:	00000000 	nop
  49e868:	00031602 	srl	v0,v1,0x18
  49e86c:	304200ff 	andi	v0,v0,0xff
  49e870:	00021080 	sll	v0,v0,0x2
  49e874:	8f8185e8 	lw	at,-31256(gp)
  49e878:	00000000 	nop
  49e87c:	00221021 	addu	v0,at,v0
  49e880:	8c420000 	lw	v0,0(v0)
  49e884:	00000000 	nop
  49e888:	afc2000c 	sw	v0,12(s8)
  49e88c:	8fc30024 	lw	v1,36(s8)
  49e890:	00000000 	nop
  49e894:	00031402 	srl	v0,v1,0x10
  49e898:	304200ff 	andi	v0,v0,0xff
  49e89c:	00021080 	sll	v0,v0,0x2
  49e8a0:	8f8184d0 	lw	at,-31536(gp)
  49e8a4:	00000000 	nop
  49e8a8:	00221021 	addu	v0,at,v0
  49e8ac:	8c420000 	lw	v0,0(v0)
  49e8b0:	00000000 	nop
  49e8b4:	afc20008 	sw	v0,8(s8)
  49e8b8:	8fc30014 	lw	v1,20(s8)
  49e8bc:	8fc20010 	lw	v0,16(s8)
  49e8c0:	00000000 	nop
  49e8c4:	00621826 	xor	v1,v1,v0
  49e8c8:	8fc2000c 	lw	v0,12(s8)
  49e8cc:	00000000 	nop
  49e8d0:	00621823 	subu	v1,v1,v0
  49e8d4:	8fc20008 	lw	v0,8(s8)
  49e8d8:	00000000 	nop
  49e8dc:	00621021 	addu	v0,v1,v0
  49e8e0:	8fc3001c 	lw	v1,28(s8)
  49e8e4:	00000000 	nop
  49e8e8:	00621826 	xor	v1,v1,v0
  49e8ec:	afc3001c 	sw	v1,28(s8)
	E_CAST(10,k,l,r,^,-,+);
  49e8f0:	8fc30020 	lw	v1,32(s8)
  49e8f4:	00000000 	nop
  49e8f8:	8c620050 	lw	v0,80(v1)
  49e8fc:	8fc3001c 	lw	v1,28(s8)
  49e900:	00000000 	nop
  49e904:	00621026 	xor	v0,v1,v0
  49e908:	afc20024 	sw	v0,36(s8)
  49e90c:	8fc30020 	lw	v1,32(s8)
  49e910:	00000000 	nop
  49e914:	8c620054 	lw	v0,84(v1)
  49e918:	8fc30024 	lw	v1,36(s8)
  49e91c:	00000000 	nop
  49e920:	00432004 	sllv	a0,v1,v0
  49e924:	8fc20020 	lw	v0,32(s8)
  49e928:	00000000 	nop
  49e92c:	8c430054 	lw	v1,84(v0)
  49e930:	24020020 	li	v0,32
  49e934:	00431023 	subu	v0,v0,v1
  49e938:	8fc30024 	lw	v1,36(s8)
  49e93c:	00000000 	nop
  49e940:	00431006 	srlv	v0,v1,v0
  49e944:	00822025 	or	a0,a0,v0
  49e948:	afc40024 	sw	a0,36(s8)
  49e94c:	8fc30024 	lw	v1,36(s8)
  49e950:	00000000 	nop
  49e954:	00031202 	srl	v0,v1,0x8
  49e958:	304200ff 	andi	v0,v0,0xff
  49e95c:	00021080 	sll	v0,v0,0x2
  49e960:	8f8189c8 	lw	at,-30264(gp)
  49e964:	00000000 	nop
  49e968:	00221021 	addu	v0,at,v0
  49e96c:	8c420000 	lw	v0,0(v0)
  49e970:	00000000 	nop
  49e974:	afc20014 	sw	v0,20(s8)
  49e978:	8fc30024 	lw	v1,36(s8)
  49e97c:	00000000 	nop
  49e980:	306200ff 	andi	v0,v1,0xff
  49e984:	00021080 	sll	v0,v0,0x2
  49e988:	8f8180ec 	lw	at,-32532(gp)
  49e98c:	00000000 	nop
  49e990:	00221021 	addu	v0,at,v0
  49e994:	8c420000 	lw	v0,0(v0)
  49e998:	00000000 	nop
  49e99c:	afc20010 	sw	v0,16(s8)
  49e9a0:	8fc30024 	lw	v1,36(s8)
  49e9a4:	00000000 	nop
  49e9a8:	00031602 	srl	v0,v1,0x18
  49e9ac:	304200ff 	andi	v0,v0,0xff
  49e9b0:	00021080 	sll	v0,v0,0x2
  49e9b4:	8f8185e8 	lw	at,-31256(gp)
  49e9b8:	00000000 	nop
  49e9bc:	00221021 	addu	v0,at,v0
  49e9c0:	8c420000 	lw	v0,0(v0)
  49e9c4:	00000000 	nop
  49e9c8:	afc2000c 	sw	v0,12(s8)
  49e9cc:	8fc30024 	lw	v1,36(s8)
  49e9d0:	00000000 	nop
  49e9d4:	00031402 	srl	v0,v1,0x10
  49e9d8:	304200ff 	andi	v0,v0,0xff
  49e9dc:	00021080 	sll	v0,v0,0x2
  49e9e0:	8f8184d0 	lw	at,-31536(gp)
  49e9e4:	00000000 	nop
  49e9e8:	00221021 	addu	v0,at,v0
  49e9ec:	8c420000 	lw	v0,0(v0)
  49e9f0:	00000000 	nop
  49e9f4:	afc20008 	sw	v0,8(s8)
  49e9f8:	8fc30014 	lw	v1,20(s8)
  49e9fc:	8fc20010 	lw	v0,16(s8)
  49ea00:	00000000 	nop
  49ea04:	00621823 	subu	v1,v1,v0
  49ea08:	8fc2000c 	lw	v0,12(s8)
  49ea0c:	00000000 	nop
  49ea10:	00621821 	addu	v1,v1,v0
  49ea14:	8fc20008 	lw	v0,8(s8)
  49ea18:	00000000 	nop
  49ea1c:	00621026 	xor	v0,v1,v0
  49ea20:	8fc30018 	lw	v1,24(s8)
  49ea24:	00000000 	nop
  49ea28:	00621826 	xor	v1,v1,v0
  49ea2c:	afc30018 	sw	v1,24(s8)
	E_CAST(11,k,r,l,-,+,^);
  49ea30:	8fc30020 	lw	v1,32(s8)
  49ea34:	00000000 	nop
  49ea38:	8c620058 	lw	v0,88(v1)
  49ea3c:	8fc30018 	lw	v1,24(s8)
  49ea40:	00000000 	nop
  49ea44:	00431023 	subu	v0,v0,v1
  49ea48:	afc20024 	sw	v0,36(s8)
  49ea4c:	8fc30020 	lw	v1,32(s8)
  49ea50:	00000000 	nop
  49ea54:	8c62005c 	lw	v0,92(v1)
  49ea58:	8fc30024 	lw	v1,36(s8)
  49ea5c:	00000000 	nop
  49ea60:	00432004 	sllv	a0,v1,v0
  49ea64:	8fc20020 	lw	v0,32(s8)
  49ea68:	00000000 	nop
  49ea6c:	8c43005c 	lw	v1,92(v0)
  49ea70:	24020020 	li	v0,32
  49ea74:	00431023 	subu	v0,v0,v1
  49ea78:	8fc30024 	lw	v1,36(s8)
  49ea7c:	00000000 	nop
  49ea80:	00431006 	srlv	v0,v1,v0
  49ea84:	00822025 	or	a0,a0,v0
  49ea88:	afc40024 	sw	a0,36(s8)
  49ea8c:	8fc30024 	lw	v1,36(s8)
  49ea90:	00000000 	nop
  49ea94:	00031202 	srl	v0,v1,0x8
  49ea98:	304200ff 	andi	v0,v0,0xff
  49ea9c:	00021080 	sll	v0,v0,0x2
  49eaa0:	8f8189c8 	lw	at,-30264(gp)
  49eaa4:	00000000 	nop
  49eaa8:	00221021 	addu	v0,at,v0
  49eaac:	8c420000 	lw	v0,0(v0)
  49eab0:	00000000 	nop
  49eab4:	afc20014 	sw	v0,20(s8)
  49eab8:	8fc30024 	lw	v1,36(s8)
  49eabc:	00000000 	nop
  49eac0:	306200ff 	andi	v0,v1,0xff
  49eac4:	00021080 	sll	v0,v0,0x2
  49eac8:	8f8180ec 	lw	at,-32532(gp)
  49eacc:	00000000 	nop
  49ead0:	00221021 	addu	v0,at,v0
  49ead4:	8c420000 	lw	v0,0(v0)
  49ead8:	00000000 	nop
  49eadc:	afc20010 	sw	v0,16(s8)
  49eae0:	8fc30024 	lw	v1,36(s8)
  49eae4:	00000000 	nop
  49eae8:	00031602 	srl	v0,v1,0x18
  49eaec:	304200ff 	andi	v0,v0,0xff
  49eaf0:	00021080 	sll	v0,v0,0x2
  49eaf4:	8f8185e8 	lw	at,-31256(gp)
  49eaf8:	00000000 	nop
  49eafc:	00221021 	addu	v0,at,v0
  49eb00:	8c420000 	lw	v0,0(v0)
  49eb04:	00000000 	nop
  49eb08:	afc2000c 	sw	v0,12(s8)
  49eb0c:	8fc30024 	lw	v1,36(s8)
  49eb10:	00000000 	nop
  49eb14:	00031402 	srl	v0,v1,0x10
  49eb18:	304200ff 	andi	v0,v0,0xff
  49eb1c:	00021080 	sll	v0,v0,0x2
  49eb20:	8f8184d0 	lw	at,-31536(gp)
  49eb24:	00000000 	nop
  49eb28:	00221021 	addu	v0,at,v0
  49eb2c:	8c420000 	lw	v0,0(v0)
  49eb30:	00000000 	nop
  49eb34:	afc20008 	sw	v0,8(s8)
  49eb38:	8fc30014 	lw	v1,20(s8)
  49eb3c:	8fc20010 	lw	v0,16(s8)
  49eb40:	00000000 	nop
  49eb44:	00621821 	addu	v1,v1,v0
  49eb48:	8fc2000c 	lw	v0,12(s8)
  49eb4c:	00000000 	nop
  49eb50:	00621826 	xor	v1,v1,v0
  49eb54:	8fc20008 	lw	v0,8(s8)
  49eb58:	00000000 	nop
  49eb5c:	00621023 	subu	v0,v1,v0
  49eb60:	8fc3001c 	lw	v1,28(s8)
  49eb64:	00000000 	nop
  49eb68:	00621826 	xor	v1,v1,v0
  49eb6c:	afc3001c 	sw	v1,28(s8)
	if(!key->short_key)
  49eb70:	8fc20034 	lw	v0,52(s8)
  49eb74:	00000000 	nop
  49eb78:	8c420080 	lw	v0,128(v0)
  49eb7c:	00000000 	nop
  49eb80:	14400141 	bnez	v0,49f088 <CAST_encrypt+0x1478>
  49eb84:	00000000 	nop
	    {
	    E_CAST(12,k,l,r,+,^,-);
  49eb88:	8fc30020 	lw	v1,32(s8)
  49eb8c:	00000000 	nop
  49eb90:	8c620060 	lw	v0,96(v1)
  49eb94:	8fc3001c 	lw	v1,28(s8)
  49eb98:	00000000 	nop
  49eb9c:	00621021 	addu	v0,v1,v0
  49eba0:	afc20024 	sw	v0,36(s8)
  49eba4:	8fc30020 	lw	v1,32(s8)
  49eba8:	00000000 	nop
  49ebac:	8c620064 	lw	v0,100(v1)
  49ebb0:	8fc30024 	lw	v1,36(s8)
  49ebb4:	00000000 	nop
  49ebb8:	00432004 	sllv	a0,v1,v0
  49ebbc:	8fc20020 	lw	v0,32(s8)
  49ebc0:	00000000 	nop
  49ebc4:	8c430064 	lw	v1,100(v0)
  49ebc8:	24020020 	li	v0,32
  49ebcc:	00431023 	subu	v0,v0,v1
  49ebd0:	8fc30024 	lw	v1,36(s8)
  49ebd4:	00000000 	nop
  49ebd8:	00431006 	srlv	v0,v1,v0
  49ebdc:	00822025 	or	a0,a0,v0
  49ebe0:	afc40024 	sw	a0,36(s8)
  49ebe4:	8fc30024 	lw	v1,36(s8)
  49ebe8:	00000000 	nop
  49ebec:	00031202 	srl	v0,v1,0x8
  49ebf0:	304200ff 	andi	v0,v0,0xff
  49ebf4:	00021080 	sll	v0,v0,0x2
  49ebf8:	8f8189c8 	lw	at,-30264(gp)
  49ebfc:	00000000 	nop
  49ec00:	00221021 	addu	v0,at,v0
  49ec04:	8c420000 	lw	v0,0(v0)
  49ec08:	00000000 	nop
  49ec0c:	afc20014 	sw	v0,20(s8)
  49ec10:	8fc30024 	lw	v1,36(s8)
  49ec14:	00000000 	nop
  49ec18:	306200ff 	andi	v0,v1,0xff
  49ec1c:	00021080 	sll	v0,v0,0x2
  49ec20:	8f8180ec 	lw	at,-32532(gp)
  49ec24:	00000000 	nop
  49ec28:	00221021 	addu	v0,at,v0
  49ec2c:	8c420000 	lw	v0,0(v0)
  49ec30:	00000000 	nop
  49ec34:	afc20010 	sw	v0,16(s8)
  49ec38:	8fc30024 	lw	v1,36(s8)
  49ec3c:	00000000 	nop
  49ec40:	00031602 	srl	v0,v1,0x18
  49ec44:	304200ff 	andi	v0,v0,0xff
  49ec48:	00021080 	sll	v0,v0,0x2
  49ec4c:	8f8185e8 	lw	at,-31256(gp)
  49ec50:	00000000 	nop
  49ec54:	00221021 	addu	v0,at,v0
  49ec58:	8c420000 	lw	v0,0(v0)
  49ec5c:	00000000 	nop
  49ec60:	afc2000c 	sw	v0,12(s8)
  49ec64:	8fc30024 	lw	v1,36(s8)
  49ec68:	00000000 	nop
  49ec6c:	00031402 	srl	v0,v1,0x10
  49ec70:	304200ff 	andi	v0,v0,0xff
  49ec74:	00021080 	sll	v0,v0,0x2
  49ec78:	8f8184d0 	lw	at,-31536(gp)
  49ec7c:	00000000 	nop
  49ec80:	00221021 	addu	v0,at,v0
  49ec84:	8c420000 	lw	v0,0(v0)
  49ec88:	00000000 	nop
  49ec8c:	afc20008 	sw	v0,8(s8)
  49ec90:	8fc30014 	lw	v1,20(s8)
  49ec94:	8fc20010 	lw	v0,16(s8)
  49ec98:	00000000 	nop
  49ec9c:	00621826 	xor	v1,v1,v0
  49eca0:	8fc2000c 	lw	v0,12(s8)
  49eca4:	00000000 	nop
  49eca8:	00621823 	subu	v1,v1,v0
  49ecac:	8fc20008 	lw	v0,8(s8)
  49ecb0:	00000000 	nop
  49ecb4:	00621021 	addu	v0,v1,v0
  49ecb8:	8fc30018 	lw	v1,24(s8)
  49ecbc:	00000000 	nop
  49ecc0:	00621826 	xor	v1,v1,v0
  49ecc4:	afc30018 	sw	v1,24(s8)
	    E_CAST(13,k,r,l,^,-,+);
  49ecc8:	8fc30020 	lw	v1,32(s8)
  49eccc:	00000000 	nop
  49ecd0:	8c620068 	lw	v0,104(v1)
  49ecd4:	8fc30018 	lw	v1,24(s8)
  49ecd8:	00000000 	nop
  49ecdc:	00621026 	xor	v0,v1,v0
  49ece0:	afc20024 	sw	v0,36(s8)
  49ece4:	8fc30020 	lw	v1,32(s8)
  49ece8:	00000000 	nop
  49ecec:	8c62006c 	lw	v0,108(v1)
  49ecf0:	8fc30024 	lw	v1,36(s8)
  49ecf4:	00000000 	nop
  49ecf8:	00432004 	sllv	a0,v1,v0
  49ecfc:	8fc20020 	lw	v0,32(s8)
  49ed00:	00000000 	nop
  49ed04:	8c43006c 	lw	v1,108(v0)
  49ed08:	24020020 	li	v0,32
  49ed0c:	00431023 	subu	v0,v0,v1
  49ed10:	8fc30024 	lw	v1,36(s8)
  49ed14:	00000000 	nop
  49ed18:	00431006 	srlv	v0,v1,v0
  49ed1c:	00822025 	or	a0,a0,v0
  49ed20:	afc40024 	sw	a0,36(s8)
  49ed24:	8fc30024 	lw	v1,36(s8)
  49ed28:	00000000 	nop
  49ed2c:	00031202 	srl	v0,v1,0x8
  49ed30:	304200ff 	andi	v0,v0,0xff
  49ed34:	00021080 	sll	v0,v0,0x2
  49ed38:	8f8189c8 	lw	at,-30264(gp)
  49ed3c:	00000000 	nop
  49ed40:	00221021 	addu	v0,at,v0
  49ed44:	8c420000 	lw	v0,0(v0)
  49ed48:	00000000 	nop
  49ed4c:	afc20014 	sw	v0,20(s8)
  49ed50:	8fc30024 	lw	v1,36(s8)
  49ed54:	00000000 	nop
  49ed58:	306200ff 	andi	v0,v1,0xff
  49ed5c:	00021080 	sll	v0,v0,0x2
  49ed60:	8f8180ec 	lw	at,-32532(gp)
  49ed64:	00000000 	nop
  49ed68:	00221021 	addu	v0,at,v0
  49ed6c:	8c420000 	lw	v0,0(v0)
  49ed70:	00000000 	nop
  49ed74:	afc20010 	sw	v0,16(s8)
  49ed78:	8fc30024 	lw	v1,36(s8)
  49ed7c:	00000000 	nop
  49ed80:	00031602 	srl	v0,v1,0x18
  49ed84:	304200ff 	andi	v0,v0,0xff
  49ed88:	00021080 	sll	v0,v0,0x2
  49ed8c:	8f8185e8 	lw	at,-31256(gp)
  49ed90:	00000000 	nop
  49ed94:	00221021 	addu	v0,at,v0
  49ed98:	8c420000 	lw	v0,0(v0)
  49ed9c:	00000000 	nop
  49eda0:	afc2000c 	sw	v0,12(s8)
  49eda4:	8fc30024 	lw	v1,36(s8)
  49eda8:	00000000 	nop
  49edac:	00031402 	srl	v0,v1,0x10
  49edb0:	304200ff 	andi	v0,v0,0xff
  49edb4:	00021080 	sll	v0,v0,0x2
  49edb8:	8f8184d0 	lw	at,-31536(gp)
  49edbc:	00000000 	nop
  49edc0:	00221021 	addu	v0,at,v0
  49edc4:	8c420000 	lw	v0,0(v0)
  49edc8:	00000000 	nop
  49edcc:	afc20008 	sw	v0,8(s8)
  49edd0:	8fc30014 	lw	v1,20(s8)
  49edd4:	8fc20010 	lw	v0,16(s8)
  49edd8:	00000000 	nop
  49eddc:	00621823 	subu	v1,v1,v0
  49ede0:	8fc2000c 	lw	v0,12(s8)
  49ede4:	00000000 	nop
  49ede8:	00621821 	addu	v1,v1,v0
  49edec:	8fc20008 	lw	v0,8(s8)
  49edf0:	00000000 	nop
  49edf4:	00621026 	xor	v0,v1,v0
  49edf8:	8fc3001c 	lw	v1,28(s8)
  49edfc:	00000000 	nop
  49ee00:	00621826 	xor	v1,v1,v0
  49ee04:	afc3001c 	sw	v1,28(s8)
	    E_CAST(14,k,l,r,-,+,^);
  49ee08:	8fc30020 	lw	v1,32(s8)
  49ee0c:	00000000 	nop
  49ee10:	8c620070 	lw	v0,112(v1)
  49ee14:	8fc3001c 	lw	v1,28(s8)
  49ee18:	00000000 	nop
  49ee1c:	00431023 	subu	v0,v0,v1
  49ee20:	afc20024 	sw	v0,36(s8)
  49ee24:	8fc30020 	lw	v1,32(s8)
  49ee28:	00000000 	nop
  49ee2c:	8c620074 	lw	v0,116(v1)
  49ee30:	8fc30024 	lw	v1,36(s8)
  49ee34:	00000000 	nop
  49ee38:	00432004 	sllv	a0,v1,v0
  49ee3c:	8fc20020 	lw	v0,32(s8)
  49ee40:	00000000 	nop
  49ee44:	8c430074 	lw	v1,116(v0)
  49ee48:	24020020 	li	v0,32
  49ee4c:	00431023 	subu	v0,v0,v1
  49ee50:	8fc30024 	lw	v1,36(s8)
  49ee54:	00000000 	nop
  49ee58:	00431006 	srlv	v0,v1,v0
  49ee5c:	00822025 	or	a0,a0,v0
  49ee60:	afc40024 	sw	a0,36(s8)
  49ee64:	8fc30024 	lw	v1,36(s8)
  49ee68:	00000000 	nop
  49ee6c:	00031202 	srl	v0,v1,0x8
  49ee70:	304200ff 	andi	v0,v0,0xff
  49ee74:	00021080 	sll	v0,v0,0x2
  49ee78:	8f8189c8 	lw	at,-30264(gp)
  49ee7c:	00000000 	nop
  49ee80:	00221021 	addu	v0,at,v0
  49ee84:	8c420000 	lw	v0,0(v0)
  49ee88:	00000000 	nop
  49ee8c:	afc20014 	sw	v0,20(s8)
  49ee90:	8fc30024 	lw	v1,36(s8)
  49ee94:	00000000 	nop
  49ee98:	306200ff 	andi	v0,v1,0xff
  49ee9c:	00021080 	sll	v0,v0,0x2
  49eea0:	8f8180ec 	lw	at,-32532(gp)
  49eea4:	00000000 	nop
  49eea8:	00221021 	addu	v0,at,v0
  49eeac:	8c420000 	lw	v0,0(v0)
  49eeb0:	00000000 	nop
  49eeb4:	afc20010 	sw	v0,16(s8)
  49eeb8:	8fc30024 	lw	v1,36(s8)
  49eebc:	00000000 	nop
  49eec0:	00031602 	srl	v0,v1,0x18
  49eec4:	304200ff 	andi	v0,v0,0xff
  49eec8:	00021080 	sll	v0,v0,0x2
  49eecc:	8f8185e8 	lw	at,-31256(gp)
  49eed0:	00000000 	nop
  49eed4:	00221021 	addu	v0,at,v0
  49eed8:	8c420000 	lw	v0,0(v0)
  49eedc:	00000000 	nop
  49eee0:	afc2000c 	sw	v0,12(s8)
  49eee4:	8fc30024 	lw	v1,36(s8)
  49eee8:	00000000 	nop
  49eeec:	00031402 	srl	v0,v1,0x10
  49eef0:	304200ff 	andi	v0,v0,0xff
  49eef4:	00021080 	sll	v0,v0,0x2
  49eef8:	8f8184d0 	lw	at,-31536(gp)
  49eefc:	00000000 	nop
  49ef00:	00221021 	addu	v0,at,v0
  49ef04:	8c420000 	lw	v0,0(v0)
  49ef08:	00000000 	nop
  49ef0c:	afc20008 	sw	v0,8(s8)
  49ef10:	8fc30014 	lw	v1,20(s8)
  49ef14:	8fc20010 	lw	v0,16(s8)
  49ef18:	00000000 	nop
  49ef1c:	00621821 	addu	v1,v1,v0
  49ef20:	8fc2000c 	lw	v0,12(s8)
  49ef24:	00000000 	nop
  49ef28:	00621826 	xor	v1,v1,v0
  49ef2c:	8fc20008 	lw	v0,8(s8)
  49ef30:	00000000 	nop
  49ef34:	00621023 	subu	v0,v1,v0
  49ef38:	8fc30018 	lw	v1,24(s8)
  49ef3c:	00000000 	nop
  49ef40:	00621826 	xor	v1,v1,v0
  49ef44:	afc30018 	sw	v1,24(s8)
	    E_CAST(15,k,r,l,+,^,-);
  49ef48:	8fc30020 	lw	v1,32(s8)
  49ef4c:	00000000 	nop
  49ef50:	8c620078 	lw	v0,120(v1)
  49ef54:	8fc30018 	lw	v1,24(s8)
  49ef58:	00000000 	nop
  49ef5c:	00621021 	addu	v0,v1,v0
  49ef60:	afc20024 	sw	v0,36(s8)
  49ef64:	8fc30020 	lw	v1,32(s8)
  49ef68:	00000000 	nop
  49ef6c:	8c62007c 	lw	v0,124(v1)
  49ef70:	8fc30024 	lw	v1,36(s8)
  49ef74:	00000000 	nop
  49ef78:	00432004 	sllv	a0,v1,v0
  49ef7c:	8fc20020 	lw	v0,32(s8)
  49ef80:	00000000 	nop
  49ef84:	8c43007c 	lw	v1,124(v0)
  49ef88:	24020020 	li	v0,32
  49ef8c:	00431023 	subu	v0,v0,v1
  49ef90:	8fc30024 	lw	v1,36(s8)
  49ef94:	00000000 	nop
  49ef98:	00431006 	srlv	v0,v1,v0
  49ef9c:	00822025 	or	a0,a0,v0
  49efa0:	afc40024 	sw	a0,36(s8)
  49efa4:	8fc30024 	lw	v1,36(s8)
  49efa8:	00000000 	nop
  49efac:	00031202 	srl	v0,v1,0x8
  49efb0:	304200ff 	andi	v0,v0,0xff
  49efb4:	00021080 	sll	v0,v0,0x2
  49efb8:	8f8189c8 	lw	at,-30264(gp)
  49efbc:	00000000 	nop
  49efc0:	00221021 	addu	v0,at,v0
  49efc4:	8c420000 	lw	v0,0(v0)
  49efc8:	00000000 	nop
  49efcc:	afc20014 	sw	v0,20(s8)
  49efd0:	8fc30024 	lw	v1,36(s8)
  49efd4:	00000000 	nop
  49efd8:	306200ff 	andi	v0,v1,0xff
  49efdc:	00021080 	sll	v0,v0,0x2
  49efe0:	8f8180ec 	lw	at,-32532(gp)
  49efe4:	00000000 	nop
  49efe8:	00221021 	addu	v0,at,v0
  49efec:	8c420000 	lw	v0,0(v0)
  49eff0:	00000000 	nop
  49eff4:	afc20010 	sw	v0,16(s8)
  49eff8:	8fc30024 	lw	v1,36(s8)
  49effc:	00000000 	nop
  49f000:	00031602 	srl	v0,v1,0x18
  49f004:	304200ff 	andi	v0,v0,0xff
  49f008:	00021080 	sll	v0,v0,0x2
  49f00c:	8f8185e8 	lw	at,-31256(gp)
  49f010:	00000000 	nop
  49f014:	00221021 	addu	v0,at,v0
  49f018:	8c420000 	lw	v0,0(v0)
  49f01c:	00000000 	nop
  49f020:	afc2000c 	sw	v0,12(s8)
  49f024:	8fc30024 	lw	v1,36(s8)
  49f028:	00000000 	nop
  49f02c:	00031402 	srl	v0,v1,0x10
  49f030:	304200ff 	andi	v0,v0,0xff
  49f034:	00021080 	sll	v0,v0,0x2
  49f038:	8f8184d0 	lw	at,-31536(gp)
  49f03c:	00000000 	nop
  49f040:	00221021 	addu	v0,at,v0
  49f044:	8c420000 	lw	v0,0(v0)
  49f048:	00000000 	nop
  49f04c:	afc20008 	sw	v0,8(s8)
  49f050:	8fc30014 	lw	v1,20(s8)
  49f054:	8fc20010 	lw	v0,16(s8)
  49f058:	00000000 	nop
  49f05c:	00621826 	xor	v1,v1,v0
  49f060:	8fc2000c 	lw	v0,12(s8)
  49f064:	00000000 	nop
  49f068:	00621823 	subu	v1,v1,v0
  49f06c:	8fc20008 	lw	v0,8(s8)
  49f070:	00000000 	nop
  49f074:	00621021 	addu	v0,v1,v0
  49f078:	8fc3001c 	lw	v1,28(s8)
  49f07c:	00000000 	nop
  49f080:	00621826 	xor	v1,v1,v0
  49f084:	afc3001c 	sw	v1,28(s8)
	    }

	data[1]=l&0xffffffffL;
  49f088:	8fc20030 	lw	v0,48(s8)
  49f08c:	00000000 	nop
  49f090:	24420004 	addiu	v0,v0,4
  49f094:	8fc30018 	lw	v1,24(s8)
  49f098:	00000000 	nop
  49f09c:	ac430000 	sw	v1,0(v0)
	data[0]=r&0xffffffffL;
  49f0a0:	8fc20030 	lw	v0,48(s8)
  49f0a4:	8fc3001c 	lw	v1,28(s8)
  49f0a8:	00000000 	nop
  49f0ac:	ac430000 	sw	v1,0(v0)
	}
  49f0b0:	03c0e821 	move	sp,s8
  49f0b4:	8fbe002c 	lw	s8,44(sp)
  49f0b8:	27bd0030 	addiu	sp,sp,48
  49f0bc:	03e00008 	jr	ra
  49f0c0:	00000000 	nop

0049f0c4 <CAST_decrypt>:
  49f0c4:	3c1c0fb7 	lui	gp,0xfb7
  49f0c8:	279cd8ac 	addiu	gp,gp,-10068
  49f0cc:	0399e021 	addu	gp,gp,t9
  49f0d0:	27bdffd0 	addiu	sp,sp,-48
  49f0d4:	afbc0000 	sw	gp,0(sp)
  49f0d8:	afbe002c 	sw	s8,44(sp)
  49f0dc:	afbc0028 	sw	gp,40(sp)
  49f0e0:	03a0f021 	move	s8,sp
  49f0e4:	afc40030 	sw	a0,48(s8)
  49f0e8:	afc50034 	sw	a1,52(s8)

void CAST_decrypt(CAST_LONG *data, CAST_KEY *key)
	{
	register CAST_LONG l,r,*k,t;

	k= &(key->data[0]);
  49f0ec:	8fc20034 	lw	v0,52(s8)
  49f0f0:	00000000 	nop
  49f0f4:	afc20020 	sw	v0,32(s8)
	l=data[0];
  49f0f8:	8fc20030 	lw	v0,48(s8)
  49f0fc:	00000000 	nop
  49f100:	8c420000 	lw	v0,0(v0)
  49f104:	00000000 	nop
  49f108:	afc20018 	sw	v0,24(s8)
	r=data[1];
  49f10c:	8fc20030 	lw	v0,48(s8)
  49f110:	00000000 	nop
  49f114:	24420004 	addiu	v0,v0,4
  49f118:	8c420000 	lw	v0,0(v0)
  49f11c:	00000000 	nop
  49f120:	afc2001c 	sw	v0,28(s8)

	if(!key->short_key)
  49f124:	8fc20034 	lw	v0,52(s8)
  49f128:	00000000 	nop
  49f12c:	8c420080 	lw	v0,128(v0)
  49f130:	00000000 	nop
  49f134:	14400141 	bnez	v0,49f63c <CAST_decrypt+0x578>
  49f138:	00000000 	nop
	    {
	    E_CAST(15,k,l,r,+,^,-);
  49f13c:	8fc30020 	lw	v1,32(s8)
  49f140:	00000000 	nop
  49f144:	8c620078 	lw	v0,120(v1)
  49f148:	8fc3001c 	lw	v1,28(s8)
  49f14c:	00000000 	nop
  49f150:	00621021 	addu	v0,v1,v0
  49f154:	afc20024 	sw	v0,36(s8)
  49f158:	8fc30020 	lw	v1,32(s8)
  49f15c:	00000000 	nop
  49f160:	8c62007c 	lw	v0,124(v1)
  49f164:	8fc30024 	lw	v1,36(s8)
  49f168:	00000000 	nop
  49f16c:	00432004 	sllv	a0,v1,v0
  49f170:	8fc20020 	lw	v0,32(s8)
  49f174:	00000000 	nop
  49f178:	8c43007c 	lw	v1,124(v0)
  49f17c:	24020020 	li	v0,32
  49f180:	00431023 	subu	v0,v0,v1
  49f184:	8fc30024 	lw	v1,36(s8)
  49f188:	00000000 	nop
  49f18c:	00431006 	srlv	v0,v1,v0
  49f190:	00822025 	or	a0,a0,v0
  49f194:	afc40024 	sw	a0,36(s8)
  49f198:	8fc30024 	lw	v1,36(s8)
  49f19c:	00000000 	nop
  49f1a0:	00031202 	srl	v0,v1,0x8
  49f1a4:	304200ff 	andi	v0,v0,0xff
  49f1a8:	00021080 	sll	v0,v0,0x2
  49f1ac:	8f8189c8 	lw	at,-30264(gp)
  49f1b0:	00000000 	nop
  49f1b4:	00221021 	addu	v0,at,v0
  49f1b8:	8c420000 	lw	v0,0(v0)
  49f1bc:	00000000 	nop
  49f1c0:	afc20008 	sw	v0,8(s8)
  49f1c4:	8fc30024 	lw	v1,36(s8)
  49f1c8:	00000000 	nop
  49f1cc:	306200ff 	andi	v0,v1,0xff
  49f1d0:	00021080 	sll	v0,v0,0x2
  49f1d4:	8f8180ec 	lw	at,-32532(gp)
  49f1d8:	00000000 	nop
  49f1dc:	00221021 	addu	v0,at,v0
  49f1e0:	8c420000 	lw	v0,0(v0)
  49f1e4:	00000000 	nop
  49f1e8:	afc2000c 	sw	v0,12(s8)
  49f1ec:	8fc30024 	lw	v1,36(s8)
  49f1f0:	00000000 	nop
  49f1f4:	00031602 	srl	v0,v1,0x18
  49f1f8:	304200ff 	andi	v0,v0,0xff
  49f1fc:	00021080 	sll	v0,v0,0x2
  49f200:	8f8185e8 	lw	at,-31256(gp)
  49f204:	00000000 	nop
  49f208:	00221021 	addu	v0,at,v0
  49f20c:	8c420000 	lw	v0,0(v0)
  49f210:	00000000 	nop
  49f214:	afc20010 	sw	v0,16(s8)
  49f218:	8fc30024 	lw	v1,36(s8)
  49f21c:	00000000 	nop
  49f220:	00031402 	srl	v0,v1,0x10
  49f224:	304200ff 	andi	v0,v0,0xff
  49f228:	00021080 	sll	v0,v0,0x2
  49f22c:	8f8184d0 	lw	at,-31536(gp)
  49f230:	00000000 	nop
  49f234:	00221021 	addu	v0,at,v0
  49f238:	8c420000 	lw	v0,0(v0)
  49f23c:	00000000 	nop
  49f240:	afc20014 	sw	v0,20(s8)
  49f244:	8fc30008 	lw	v1,8(s8)
  49f248:	8fc2000c 	lw	v0,12(s8)
  49f24c:	00000000 	nop
  49f250:	00621826 	xor	v1,v1,v0
  49f254:	8fc20010 	lw	v0,16(s8)
  49f258:	00000000 	nop
  49f25c:	00621823 	subu	v1,v1,v0
  49f260:	8fc20014 	lw	v0,20(s8)
  49f264:	00000000 	nop
  49f268:	00621021 	addu	v0,v1,v0
  49f26c:	8fc30018 	lw	v1,24(s8)
  49f270:	00000000 	nop
  49f274:	00621826 	xor	v1,v1,v0
  49f278:	afc30018 	sw	v1,24(s8)
	    E_CAST(14,k,r,l,-,+,^);
  49f27c:	8fc30020 	lw	v1,32(s8)
  49f280:	00000000 	nop
  49f284:	8c620070 	lw	v0,112(v1)
  49f288:	8fc30018 	lw	v1,24(s8)
  49f28c:	00000000 	nop
  49f290:	00431023 	subu	v0,v0,v1
  49f294:	afc20024 	sw	v0,36(s8)
  49f298:	8fc30020 	lw	v1,32(s8)
  49f29c:	00000000 	nop
  49f2a0:	8c620074 	lw	v0,116(v1)
  49f2a4:	8fc30024 	lw	v1,36(s8)
  49f2a8:	00000000 	nop
  49f2ac:	00432004 	sllv	a0,v1,v0
  49f2b0:	8fc20020 	lw	v0,32(s8)
  49f2b4:	00000000 	nop
  49f2b8:	8c430074 	lw	v1,116(v0)
  49f2bc:	24020020 	li	v0,32
  49f2c0:	00431023 	subu	v0,v0,v1
  49f2c4:	8fc30024 	lw	v1,36(s8)
  49f2c8:	00000000 	nop
  49f2cc:	00431006 	srlv	v0,v1,v0
  49f2d0:	00822025 	or	a0,a0,v0
  49f2d4:	afc40024 	sw	a0,36(s8)
  49f2d8:	8fc30024 	lw	v1,36(s8)
  49f2dc:	00000000 	nop
  49f2e0:	00031202 	srl	v0,v1,0x8
  49f2e4:	304200ff 	andi	v0,v0,0xff
  49f2e8:	00021080 	sll	v0,v0,0x2
  49f2ec:	8f8189c8 	lw	at,-30264(gp)
  49f2f0:	00000000 	nop
  49f2f4:	00221021 	addu	v0,at,v0
  49f2f8:	8c420000 	lw	v0,0(v0)
  49f2fc:	00000000 	nop
  49f300:	afc20014 	sw	v0,20(s8)
  49f304:	8fc30024 	lw	v1,36(s8)
  49f308:	00000000 	nop
  49f30c:	306200ff 	andi	v0,v1,0xff
  49f310:	00021080 	sll	v0,v0,0x2
  49f314:	8f8180ec 	lw	at,-32532(gp)
  49f318:	00000000 	nop
  49f31c:	00221021 	addu	v0,at,v0
  49f320:	8c420000 	lw	v0,0(v0)
  49f324:	00000000 	nop
  49f328:	afc20010 	sw	v0,16(s8)
  49f32c:	8fc30024 	lw	v1,36(s8)
  49f330:	00000000 	nop
  49f334:	00031602 	srl	v0,v1,0x18
  49f338:	304200ff 	andi	v0,v0,0xff
  49f33c:	00021080 	sll	v0,v0,0x2
  49f340:	8f8185e8 	lw	at,-31256(gp)
  49f344:	00000000 	nop
  49f348:	00221021 	addu	v0,at,v0
  49f34c:	8c420000 	lw	v0,0(v0)
  49f350:	00000000 	nop
  49f354:	afc2000c 	sw	v0,12(s8)
  49f358:	8fc30024 	lw	v1,36(s8)
  49f35c:	00000000 	nop
  49f360:	00031402 	srl	v0,v1,0x10
  49f364:	304200ff 	andi	v0,v0,0xff
  49f368:	00021080 	sll	v0,v0,0x2
  49f36c:	8f8184d0 	lw	at,-31536(gp)
  49f370:	00000000 	nop
  49f374:	00221021 	addu	v0,at,v0
  49f378:	8c420000 	lw	v0,0(v0)
  49f37c:	00000000 	nop
  49f380:	afc20008 	sw	v0,8(s8)
  49f384:	8fc30014 	lw	v1,20(s8)
  49f388:	8fc20010 	lw	v0,16(s8)
  49f38c:	00000000 	nop
  49f390:	00621821 	addu	v1,v1,v0
  49f394:	8fc2000c 	lw	v0,12(s8)
  49f398:	00000000 	nop
  49f39c:	00621826 	xor	v1,v1,v0
  49f3a0:	8fc20008 	lw	v0,8(s8)
  49f3a4:	00000000 	nop
  49f3a8:	00621023 	subu	v0,v1,v0
  49f3ac:	8fc3001c 	lw	v1,28(s8)
  49f3b0:	00000000 	nop
  49f3b4:	00621826 	xor	v1,v1,v0
  49f3b8:	afc3001c 	sw	v1,28(s8)
	    E_CAST(13,k,l,r,^,-,+);
  49f3bc:	8fc30020 	lw	v1,32(s8)
  49f3c0:	00000000 	nop
  49f3c4:	8c620068 	lw	v0,104(v1)
  49f3c8:	8fc3001c 	lw	v1,28(s8)
  49f3cc:	00000000 	nop
  49f3d0:	00621026 	xor	v0,v1,v0
  49f3d4:	afc20024 	sw	v0,36(s8)
  49f3d8:	8fc30020 	lw	v1,32(s8)
  49f3dc:	00000000 	nop
  49f3e0:	8c62006c 	lw	v0,108(v1)
  49f3e4:	8fc30024 	lw	v1,36(s8)
  49f3e8:	00000000 	nop
  49f3ec:	00432004 	sllv	a0,v1,v0
  49f3f0:	8fc20020 	lw	v0,32(s8)
  49f3f4:	00000000 	nop
  49f3f8:	8c43006c 	lw	v1,108(v0)
  49f3fc:	24020020 	li	v0,32
  49f400:	00431023 	subu	v0,v0,v1
  49f404:	8fc30024 	lw	v1,36(s8)
  49f408:	00000000 	nop
  49f40c:	00431006 	srlv	v0,v1,v0
  49f410:	00822025 	or	a0,a0,v0
  49f414:	afc40024 	sw	a0,36(s8)
  49f418:	8fc30024 	lw	v1,36(s8)
  49f41c:	00000000 	nop
  49f420:	00031202 	srl	v0,v1,0x8
  49f424:	304200ff 	andi	v0,v0,0xff
  49f428:	00021080 	sll	v0,v0,0x2
  49f42c:	8f8189c8 	lw	at,-30264(gp)
  49f430:	00000000 	nop
  49f434:	00221021 	addu	v0,at,v0
  49f438:	8c420000 	lw	v0,0(v0)
  49f43c:	00000000 	nop
  49f440:	afc20014 	sw	v0,20(s8)
  49f444:	8fc30024 	lw	v1,36(s8)
  49f448:	00000000 	nop
  49f44c:	306200ff 	andi	v0,v1,0xff
  49f450:	00021080 	sll	v0,v0,0x2
  49f454:	8f8180ec 	lw	at,-32532(gp)
  49f458:	00000000 	nop
  49f45c:	00221021 	addu	v0,at,v0
  49f460:	8c420000 	lw	v0,0(v0)
  49f464:	00000000 	nop
  49f468:	afc20010 	sw	v0,16(s8)
  49f46c:	8fc30024 	lw	v1,36(s8)
  49f470:	00000000 	nop
  49f474:	00031602 	srl	v0,v1,0x18
  49f478:	304200ff 	andi	v0,v0,0xff
  49f47c:	00021080 	sll	v0,v0,0x2
  49f480:	8f8185e8 	lw	at,-31256(gp)
  49f484:	00000000 	nop
  49f488:	00221021 	addu	v0,at,v0
  49f48c:	8c420000 	lw	v0,0(v0)
  49f490:	00000000 	nop
  49f494:	afc2000c 	sw	v0,12(s8)
  49f498:	8fc30024 	lw	v1,36(s8)
  49f49c:	00000000 	nop
  49f4a0:	00031402 	srl	v0,v1,0x10
  49f4a4:	304200ff 	andi	v0,v0,0xff
  49f4a8:	00021080 	sll	v0,v0,0x2
  49f4ac:	8f8184d0 	lw	at,-31536(gp)
  49f4b0:	00000000 	nop
  49f4b4:	00221021 	addu	v0,at,v0
  49f4b8:	8c420000 	lw	v0,0(v0)
  49f4bc:	00000000 	nop
  49f4c0:	afc20008 	sw	v0,8(s8)
  49f4c4:	8fc30014 	lw	v1,20(s8)
  49f4c8:	8fc20010 	lw	v0,16(s8)
  49f4cc:	00000000 	nop
  49f4d0:	00621823 	subu	v1,v1,v0
  49f4d4:	8fc2000c 	lw	v0,12(s8)
  49f4d8:	00000000 	nop
  49f4dc:	00621821 	addu	v1,v1,v0
  49f4e0:	8fc20008 	lw	v0,8(s8)
  49f4e4:	00000000 	nop
  49f4e8:	00621026 	xor	v0,v1,v0
  49f4ec:	8fc30018 	lw	v1,24(s8)
  49f4f0:	00000000 	nop
  49f4f4:	00621826 	xor	v1,v1,v0
  49f4f8:	afc30018 	sw	v1,24(s8)
	    E_CAST(12,k,r,l,+,^,-);
  49f4fc:	8fc30020 	lw	v1,32(s8)
  49f500:	00000000 	nop
  49f504:	8c620060 	lw	v0,96(v1)
  49f508:	8fc30018 	lw	v1,24(s8)
  49f50c:	00000000 	nop
  49f510:	00621021 	addu	v0,v1,v0
  49f514:	afc20024 	sw	v0,36(s8)
  49f518:	8fc30020 	lw	v1,32(s8)
  49f51c:	00000000 	nop
  49f520:	8c620064 	lw	v0,100(v1)
  49f524:	8fc30024 	lw	v1,36(s8)
  49f528:	00000000 	nop
  49f52c:	00432004 	sllv	a0,v1,v0
  49f530:	8fc20020 	lw	v0,32(s8)
  49f534:	00000000 	nop
  49f538:	8c430064 	lw	v1,100(v0)
  49f53c:	24020020 	li	v0,32
  49f540:	00431023 	subu	v0,v0,v1
  49f544:	8fc30024 	lw	v1,36(s8)
  49f548:	00000000 	nop
  49f54c:	00431006 	srlv	v0,v1,v0
  49f550:	00822025 	or	a0,a0,v0
  49f554:	afc40024 	sw	a0,36(s8)
  49f558:	8fc30024 	lw	v1,36(s8)
  49f55c:	00000000 	nop
  49f560:	00031202 	srl	v0,v1,0x8
  49f564:	304200ff 	andi	v0,v0,0xff
  49f568:	00021080 	sll	v0,v0,0x2
  49f56c:	8f8189c8 	lw	at,-30264(gp)
  49f570:	00000000 	nop
  49f574:	00221021 	addu	v0,at,v0
  49f578:	8c420000 	lw	v0,0(v0)
  49f57c:	00000000 	nop
  49f580:	afc20014 	sw	v0,20(s8)
  49f584:	8fc30024 	lw	v1,36(s8)
  49f588:	00000000 	nop
  49f58c:	306200ff 	andi	v0,v1,0xff
  49f590:	00021080 	sll	v0,v0,0x2
  49f594:	8f8180ec 	lw	at,-32532(gp)
  49f598:	00000000 	nop
  49f59c:	00221021 	addu	v0,at,v0
  49f5a0:	8c420000 	lw	v0,0(v0)
  49f5a4:	00000000 	nop
  49f5a8:	afc20010 	sw	v0,16(s8)
  49f5ac:	8fc30024 	lw	v1,36(s8)
  49f5b0:	00000000 	nop
  49f5b4:	00031602 	srl	v0,v1,0x18
  49f5b8:	304200ff 	andi	v0,v0,0xff
  49f5bc:	00021080 	sll	v0,v0,0x2
  49f5c0:	8f8185e8 	lw	at,-31256(gp)
  49f5c4:	00000000 	nop
  49f5c8:	00221021 	addu	v0,at,v0
  49f5cc:	8c420000 	lw	v0,0(v0)
  49f5d0:	00000000 	nop
  49f5d4:	afc2000c 	sw	v0,12(s8)
  49f5d8:	8fc30024 	lw	v1,36(s8)
  49f5dc:	00000000 	nop
  49f5e0:	00031402 	srl	v0,v1,0x10
  49f5e4:	304200ff 	andi	v0,v0,0xff
  49f5e8:	00021080 	sll	v0,v0,0x2
  49f5ec:	8f8184d0 	lw	at,-31536(gp)
  49f5f0:	00000000 	nop
  49f5f4:	00221021 	addu	v0,at,v0
  49f5f8:	8c420000 	lw	v0,0(v0)
  49f5fc:	00000000 	nop
  49f600:	afc20008 	sw	v0,8(s8)
  49f604:	8fc30014 	lw	v1,20(s8)
  49f608:	8fc20010 	lw	v0,16(s8)
  49f60c:	00000000 	nop
  49f610:	00621826 	xor	v1,v1,v0
  49f614:	8fc2000c 	lw	v0,12(s8)
  49f618:	00000000 	nop
  49f61c:	00621823 	subu	v1,v1,v0
  49f620:	8fc20008 	lw	v0,8(s8)
  49f624:	00000000 	nop
  49f628:	00621021 	addu	v0,v1,v0
  49f62c:	8fc3001c 	lw	v1,28(s8)
  49f630:	00000000 	nop
  49f634:	00621826 	xor	v1,v1,v0
  49f638:	afc3001c 	sw	v1,28(s8)
	    }
	E_CAST(11,k,l,r,-,+,^);
  49f63c:	8fc30020 	lw	v1,32(s8)
  49f640:	00000000 	nop
  49f644:	8c620058 	lw	v0,88(v1)
  49f648:	8fc3001c 	lw	v1,28(s8)
  49f64c:	00000000 	nop
  49f650:	00431023 	subu	v0,v0,v1
  49f654:	afc20024 	sw	v0,36(s8)
  49f658:	8fc30020 	lw	v1,32(s8)
  49f65c:	00000000 	nop
  49f660:	8c62005c 	lw	v0,92(v1)
  49f664:	8fc30024 	lw	v1,36(s8)
  49f668:	00000000 	nop
  49f66c:	00432004 	sllv	a0,v1,v0
  49f670:	8fc20020 	lw	v0,32(s8)
  49f674:	00000000 	nop
  49f678:	8c43005c 	lw	v1,92(v0)
  49f67c:	24020020 	li	v0,32
  49f680:	00431023 	subu	v0,v0,v1
  49f684:	8fc30024 	lw	v1,36(s8)
  49f688:	00000000 	nop
  49f68c:	00431006 	srlv	v0,v1,v0
  49f690:	00822025 	or	a0,a0,v0
  49f694:	afc40024 	sw	a0,36(s8)
  49f698:	8fc30024 	lw	v1,36(s8)
  49f69c:	00000000 	nop
  49f6a0:	00031202 	srl	v0,v1,0x8
  49f6a4:	304200ff 	andi	v0,v0,0xff
  49f6a8:	00021080 	sll	v0,v0,0x2
  49f6ac:	8f8189c8 	lw	at,-30264(gp)
  49f6b0:	00000000 	nop
  49f6b4:	00221021 	addu	v0,at,v0
  49f6b8:	8c420000 	lw	v0,0(v0)
  49f6bc:	00000000 	nop
  49f6c0:	afc20014 	sw	v0,20(s8)
  49f6c4:	8fc30024 	lw	v1,36(s8)
  49f6c8:	00000000 	nop
  49f6cc:	306200ff 	andi	v0,v1,0xff
  49f6d0:	00021080 	sll	v0,v0,0x2
  49f6d4:	8f8180ec 	lw	at,-32532(gp)
  49f6d8:	00000000 	nop
  49f6dc:	00221021 	addu	v0,at,v0
  49f6e0:	8c420000 	lw	v0,0(v0)
  49f6e4:	00000000 	nop
  49f6e8:	afc20010 	sw	v0,16(s8)
  49f6ec:	8fc30024 	lw	v1,36(s8)
  49f6f0:	00000000 	nop
  49f6f4:	00031602 	srl	v0,v1,0x18
  49f6f8:	304200ff 	andi	v0,v0,0xff
  49f6fc:	00021080 	sll	v0,v0,0x2
  49f700:	8f8185e8 	lw	at,-31256(gp)
  49f704:	00000000 	nop
  49f708:	00221021 	addu	v0,at,v0
  49f70c:	8c420000 	lw	v0,0(v0)
  49f710:	00000000 	nop
  49f714:	afc2000c 	sw	v0,12(s8)
  49f718:	8fc30024 	lw	v1,36(s8)
  49f71c:	00000000 	nop
  49f720:	00031402 	srl	v0,v1,0x10
  49f724:	304200ff 	andi	v0,v0,0xff
  49f728:	00021080 	sll	v0,v0,0x2
  49f72c:	8f8184d0 	lw	at,-31536(gp)
  49f730:	00000000 	nop
  49f734:	00221021 	addu	v0,at,v0
  49f738:	8c420000 	lw	v0,0(v0)
  49f73c:	00000000 	nop
  49f740:	afc20008 	sw	v0,8(s8)
  49f744:	8fc30014 	lw	v1,20(s8)
  49f748:	8fc20010 	lw	v0,16(s8)
  49f74c:	00000000 	nop
  49f750:	00621821 	addu	v1,v1,v0
  49f754:	8fc2000c 	lw	v0,12(s8)
  49f758:	00000000 	nop
  49f75c:	00621826 	xor	v1,v1,v0
  49f760:	8fc20008 	lw	v0,8(s8)
  49f764:	00000000 	nop
  49f768:	00621023 	subu	v0,v1,v0
  49f76c:	8fc30018 	lw	v1,24(s8)
  49f770:	00000000 	nop
  49f774:	00621826 	xor	v1,v1,v0
  49f778:	afc30018 	sw	v1,24(s8)
	E_CAST(10,k,r,l,^,-,+);
  49f77c:	8fc30020 	lw	v1,32(s8)
  49f780:	00000000 	nop
  49f784:	8c620050 	lw	v0,80(v1)
  49f788:	8fc30018 	lw	v1,24(s8)
  49f78c:	00000000 	nop
  49f790:	00621026 	xor	v0,v1,v0
  49f794:	afc20024 	sw	v0,36(s8)
  49f798:	8fc30020 	lw	v1,32(s8)
  49f79c:	00000000 	nop
  49f7a0:	8c620054 	lw	v0,84(v1)
  49f7a4:	8fc30024 	lw	v1,36(s8)
  49f7a8:	00000000 	nop
  49f7ac:	00432004 	sllv	a0,v1,v0
  49f7b0:	8fc20020 	lw	v0,32(s8)
  49f7b4:	00000000 	nop
  49f7b8:	8c430054 	lw	v1,84(v0)
  49f7bc:	24020020 	li	v0,32
  49f7c0:	00431023 	subu	v0,v0,v1
  49f7c4:	8fc30024 	lw	v1,36(s8)
  49f7c8:	00000000 	nop
  49f7cc:	00431006 	srlv	v0,v1,v0
  49f7d0:	00822025 	or	a0,a0,v0
  49f7d4:	afc40024 	sw	a0,36(s8)
  49f7d8:	8fc30024 	lw	v1,36(s8)
  49f7dc:	00000000 	nop
  49f7e0:	00031202 	srl	v0,v1,0x8
  49f7e4:	304200ff 	andi	v0,v0,0xff
  49f7e8:	00021080 	sll	v0,v0,0x2
  49f7ec:	8f8189c8 	lw	at,-30264(gp)
  49f7f0:	00000000 	nop
  49f7f4:	00221021 	addu	v0,at,v0
  49f7f8:	8c420000 	lw	v0,0(v0)
  49f7fc:	00000000 	nop
  49f800:	afc20014 	sw	v0,20(s8)
  49f804:	8fc30024 	lw	v1,36(s8)
  49f808:	00000000 	nop
  49f80c:	306200ff 	andi	v0,v1,0xff
  49f810:	00021080 	sll	v0,v0,0x2
  49f814:	8f8180ec 	lw	at,-32532(gp)
  49f818:	00000000 	nop
  49f81c:	00221021 	addu	v0,at,v0
  49f820:	8c420000 	lw	v0,0(v0)
  49f824:	00000000 	nop
  49f828:	afc20010 	sw	v0,16(s8)
  49f82c:	8fc30024 	lw	v1,36(s8)
  49f830:	00000000 	nop
  49f834:	00031602 	srl	v0,v1,0x18
  49f838:	304200ff 	andi	v0,v0,0xff
  49f83c:	00021080 	sll	v0,v0,0x2
  49f840:	8f8185e8 	lw	at,-31256(gp)
  49f844:	00000000 	nop
  49f848:	00221021 	addu	v0,at,v0
  49f84c:	8c420000 	lw	v0,0(v0)
  49f850:	00000000 	nop
  49f854:	afc2000c 	sw	v0,12(s8)
  49f858:	8fc30024 	lw	v1,36(s8)
  49f85c:	00000000 	nop
  49f860:	00031402 	srl	v0,v1,0x10
  49f864:	304200ff 	andi	v0,v0,0xff
  49f868:	00021080 	sll	v0,v0,0x2
  49f86c:	8f8184d0 	lw	at,-31536(gp)
  49f870:	00000000 	nop
  49f874:	00221021 	addu	v0,at,v0
  49f878:	8c420000 	lw	v0,0(v0)
  49f87c:	00000000 	nop
  49f880:	afc20008 	sw	v0,8(s8)
  49f884:	8fc30014 	lw	v1,20(s8)
  49f888:	8fc20010 	lw	v0,16(s8)
  49f88c:	00000000 	nop
  49f890:	00621823 	subu	v1,v1,v0
  49f894:	8fc2000c 	lw	v0,12(s8)
  49f898:	00000000 	nop
  49f89c:	00621821 	addu	v1,v1,v0
  49f8a0:	8fc20008 	lw	v0,8(s8)
  49f8a4:	00000000 	nop
  49f8a8:	00621026 	xor	v0,v1,v0
  49f8ac:	8fc3001c 	lw	v1,28(s8)
  49f8b0:	00000000 	nop
  49f8b4:	00621826 	xor	v1,v1,v0
  49f8b8:	afc3001c 	sw	v1,28(s8)
	E_CAST( 9,k,l,r,+,^,-);
  49f8bc:	8fc30020 	lw	v1,32(s8)
  49f8c0:	00000000 	nop
  49f8c4:	8c620048 	lw	v0,72(v1)
  49f8c8:	8fc3001c 	lw	v1,28(s8)
  49f8cc:	00000000 	nop
  49f8d0:	00621021 	addu	v0,v1,v0
  49f8d4:	afc20024 	sw	v0,36(s8)
  49f8d8:	8fc30020 	lw	v1,32(s8)
  49f8dc:	00000000 	nop
  49f8e0:	8c62004c 	lw	v0,76(v1)
  49f8e4:	8fc30024 	lw	v1,36(s8)
  49f8e8:	00000000 	nop
  49f8ec:	00432004 	sllv	a0,v1,v0
  49f8f0:	8fc20020 	lw	v0,32(s8)
  49f8f4:	00000000 	nop
  49f8f8:	8c43004c 	lw	v1,76(v0)
  49f8fc:	24020020 	li	v0,32
  49f900:	00431023 	subu	v0,v0,v1
  49f904:	8fc30024 	lw	v1,36(s8)
  49f908:	00000000 	nop
  49f90c:	00431006 	srlv	v0,v1,v0
  49f910:	00822025 	or	a0,a0,v0
  49f914:	afc40024 	sw	a0,36(s8)
  49f918:	8fc30024 	lw	v1,36(s8)
  49f91c:	00000000 	nop
  49f920:	00031202 	srl	v0,v1,0x8
  49f924:	304200ff 	andi	v0,v0,0xff
  49f928:	00021080 	sll	v0,v0,0x2
  49f92c:	8f8189c8 	lw	at,-30264(gp)
  49f930:	00000000 	nop
  49f934:	00221021 	addu	v0,at,v0
  49f938:	8c420000 	lw	v0,0(v0)
  49f93c:	00000000 	nop
  49f940:	afc20014 	sw	v0,20(s8)
  49f944:	8fc30024 	lw	v1,36(s8)
  49f948:	00000000 	nop
  49f94c:	306200ff 	andi	v0,v1,0xff
  49f950:	00021080 	sll	v0,v0,0x2
  49f954:	8f8180ec 	lw	at,-32532(gp)
  49f958:	00000000 	nop
  49f95c:	00221021 	addu	v0,at,v0
  49f960:	8c420000 	lw	v0,0(v0)
  49f964:	00000000 	nop
  49f968:	afc20010 	sw	v0,16(s8)
  49f96c:	8fc30024 	lw	v1,36(s8)
  49f970:	00000000 	nop
  49f974:	00031602 	srl	v0,v1,0x18
  49f978:	304200ff 	andi	v0,v0,0xff
  49f97c:	00021080 	sll	v0,v0,0x2
  49f980:	8f8185e8 	lw	at,-31256(gp)
  49f984:	00000000 	nop
  49f988:	00221021 	addu	v0,at,v0
  49f98c:	8c420000 	lw	v0,0(v0)
  49f990:	00000000 	nop
  49f994:	afc2000c 	sw	v0,12(s8)
  49f998:	8fc30024 	lw	v1,36(s8)
  49f99c:	00000000 	nop
  49f9a0:	00031402 	srl	v0,v1,0x10
  49f9a4:	304200ff 	andi	v0,v0,0xff
  49f9a8:	00021080 	sll	v0,v0,0x2
  49f9ac:	8f8184d0 	lw	at,-31536(gp)
  49f9b0:	00000000 	nop
  49f9b4:	00221021 	addu	v0,at,v0
  49f9b8:	8c420000 	lw	v0,0(v0)
  49f9bc:	00000000 	nop
  49f9c0:	afc20008 	sw	v0,8(s8)
  49f9c4:	8fc30014 	lw	v1,20(s8)
  49f9c8:	8fc20010 	lw	v0,16(s8)
  49f9cc:	00000000 	nop
  49f9d0:	00621826 	xor	v1,v1,v0
  49f9d4:	8fc2000c 	lw	v0,12(s8)
  49f9d8:	00000000 	nop
  49f9dc:	00621823 	subu	v1,v1,v0
  49f9e0:	8fc20008 	lw	v0,8(s8)
  49f9e4:	00000000 	nop
  49f9e8:	00621021 	addu	v0,v1,v0
  49f9ec:	8fc30018 	lw	v1,24(s8)
  49f9f0:	00000000 	nop
  49f9f4:	00621826 	xor	v1,v1,v0
  49f9f8:	afc30018 	sw	v1,24(s8)
	E_CAST( 8,k,r,l,-,+,^);
  49f9fc:	8fc30020 	lw	v1,32(s8)
  49fa00:	00000000 	nop
  49fa04:	8c620040 	lw	v0,64(v1)
  49fa08:	8fc30018 	lw	v1,24(s8)
  49fa0c:	00000000 	nop
  49fa10:	00431023 	subu	v0,v0,v1
  49fa14:	afc20024 	sw	v0,36(s8)
  49fa18:	8fc30020 	lw	v1,32(s8)
  49fa1c:	00000000 	nop
  49fa20:	8c620044 	lw	v0,68(v1)
  49fa24:	8fc30024 	lw	v1,36(s8)
  49fa28:	00000000 	nop
  49fa2c:	00432004 	sllv	a0,v1,v0
  49fa30:	8fc20020 	lw	v0,32(s8)
  49fa34:	00000000 	nop
  49fa38:	8c430044 	lw	v1,68(v0)
  49fa3c:	24020020 	li	v0,32
  49fa40:	00431023 	subu	v0,v0,v1
  49fa44:	8fc30024 	lw	v1,36(s8)
  49fa48:	00000000 	nop
  49fa4c:	00431006 	srlv	v0,v1,v0
  49fa50:	00822025 	or	a0,a0,v0
  49fa54:	afc40024 	sw	a0,36(s8)
  49fa58:	8fc30024 	lw	v1,36(s8)
  49fa5c:	00000000 	nop
  49fa60:	00031202 	srl	v0,v1,0x8
  49fa64:	304200ff 	andi	v0,v0,0xff
  49fa68:	00021080 	sll	v0,v0,0x2
  49fa6c:	8f8189c8 	lw	at,-30264(gp)
  49fa70:	00000000 	nop
  49fa74:	00221021 	addu	v0,at,v0
  49fa78:	8c420000 	lw	v0,0(v0)
  49fa7c:	00000000 	nop
  49fa80:	afc20014 	sw	v0,20(s8)
  49fa84:	8fc30024 	lw	v1,36(s8)
  49fa88:	00000000 	nop
  49fa8c:	306200ff 	andi	v0,v1,0xff
  49fa90:	00021080 	sll	v0,v0,0x2
  49fa94:	8f8180ec 	lw	at,-32532(gp)
  49fa98:	00000000 	nop
  49fa9c:	00221021 	addu	v0,at,v0
  49faa0:	8c420000 	lw	v0,0(v0)
  49faa4:	00000000 	nop
  49faa8:	afc20010 	sw	v0,16(s8)
  49faac:	8fc30024 	lw	v1,36(s8)
  49fab0:	00000000 	nop
  49fab4:	00031602 	srl	v0,v1,0x18
  49fab8:	304200ff 	andi	v0,v0,0xff
  49fabc:	00021080 	sll	v0,v0,0x2
  49fac0:	8f8185e8 	lw	at,-31256(gp)
  49fac4:	00000000 	nop
  49fac8:	00221021 	addu	v0,at,v0
  49facc:	8c420000 	lw	v0,0(v0)
  49fad0:	00000000 	nop
  49fad4:	afc2000c 	sw	v0,12(s8)
  49fad8:	8fc30024 	lw	v1,36(s8)
  49fadc:	00000000 	nop
  49fae0:	00031402 	srl	v0,v1,0x10
  49fae4:	304200ff 	andi	v0,v0,0xff
  49fae8:	00021080 	sll	v0,v0,0x2
  49faec:	8f8184d0 	lw	at,-31536(gp)
  49faf0:	00000000 	nop
  49faf4:	00221021 	addu	v0,at,v0
  49faf8:	8c420000 	lw	v0,0(v0)
  49fafc:	00000000 	nop
  49fb00:	afc20008 	sw	v0,8(s8)
  49fb04:	8fc30014 	lw	v1,20(s8)
  49fb08:	8fc20010 	lw	v0,16(s8)
  49fb0c:	00000000 	nop
  49fb10:	00621821 	addu	v1,v1,v0
  49fb14:	8fc2000c 	lw	v0,12(s8)
  49fb18:	00000000 	nop
  49fb1c:	00621826 	xor	v1,v1,v0
  49fb20:	8fc20008 	lw	v0,8(s8)
  49fb24:	00000000 	nop
  49fb28:	00621023 	subu	v0,v1,v0
  49fb2c:	8fc3001c 	lw	v1,28(s8)
  49fb30:	00000000 	nop
  49fb34:	00621826 	xor	v1,v1,v0
  49fb38:	afc3001c 	sw	v1,28(s8)
	E_CAST( 7,k,l,r,^,-,+);
  49fb3c:	8fc30020 	lw	v1,32(s8)
  49fb40:	00000000 	nop
  49fb44:	8c620038 	lw	v0,56(v1)
  49fb48:	8fc3001c 	lw	v1,28(s8)
  49fb4c:	00000000 	nop
  49fb50:	00621026 	xor	v0,v1,v0
  49fb54:	afc20024 	sw	v0,36(s8)
  49fb58:	8fc30020 	lw	v1,32(s8)
  49fb5c:	00000000 	nop
  49fb60:	8c62003c 	lw	v0,60(v1)
  49fb64:	8fc30024 	lw	v1,36(s8)
  49fb68:	00000000 	nop
  49fb6c:	00432004 	sllv	a0,v1,v0
  49fb70:	8fc20020 	lw	v0,32(s8)
  49fb74:	00000000 	nop
  49fb78:	8c43003c 	lw	v1,60(v0)
  49fb7c:	24020020 	li	v0,32
  49fb80:	00431023 	subu	v0,v0,v1
  49fb84:	8fc30024 	lw	v1,36(s8)
  49fb88:	00000000 	nop
  49fb8c:	00431006 	srlv	v0,v1,v0
  49fb90:	00822025 	or	a0,a0,v0
  49fb94:	afc40024 	sw	a0,36(s8)
  49fb98:	8fc30024 	lw	v1,36(s8)
  49fb9c:	00000000 	nop
  49fba0:	00031202 	srl	v0,v1,0x8
  49fba4:	304200ff 	andi	v0,v0,0xff
  49fba8:	00021080 	sll	v0,v0,0x2
  49fbac:	8f8189c8 	lw	at,-30264(gp)
  49fbb0:	00000000 	nop
  49fbb4:	00221021 	addu	v0,at,v0
  49fbb8:	8c420000 	lw	v0,0(v0)
  49fbbc:	00000000 	nop
  49fbc0:	afc20014 	sw	v0,20(s8)
  49fbc4:	8fc30024 	lw	v1,36(s8)
  49fbc8:	00000000 	nop
  49fbcc:	306200ff 	andi	v0,v1,0xff
  49fbd0:	00021080 	sll	v0,v0,0x2
  49fbd4:	8f8180ec 	lw	at,-32532(gp)
  49fbd8:	00000000 	nop
  49fbdc:	00221021 	addu	v0,at,v0
  49fbe0:	8c420000 	lw	v0,0(v0)
  49fbe4:	00000000 	nop
  49fbe8:	afc20010 	sw	v0,16(s8)
  49fbec:	8fc30024 	lw	v1,36(s8)
  49fbf0:	00000000 	nop
  49fbf4:	00031602 	srl	v0,v1,0x18
  49fbf8:	304200ff 	andi	v0,v0,0xff
  49fbfc:	00021080 	sll	v0,v0,0x2
  49fc00:	8f8185e8 	lw	at,-31256(gp)
  49fc04:	00000000 	nop
  49fc08:	00221021 	addu	v0,at,v0
  49fc0c:	8c420000 	lw	v0,0(v0)
  49fc10:	00000000 	nop
  49fc14:	afc2000c 	sw	v0,12(s8)
  49fc18:	8fc30024 	lw	v1,36(s8)
  49fc1c:	00000000 	nop
  49fc20:	00031402 	srl	v0,v1,0x10
  49fc24:	304200ff 	andi	v0,v0,0xff
  49fc28:	00021080 	sll	v0,v0,0x2
  49fc2c:	8f8184d0 	lw	at,-31536(gp)
  49fc30:	00000000 	nop
  49fc34:	00221021 	addu	v0,at,v0
  49fc38:	8c420000 	lw	v0,0(v0)
  49fc3c:	00000000 	nop
  49fc40:	afc20008 	sw	v0,8(s8)
  49fc44:	8fc30014 	lw	v1,20(s8)
  49fc48:	8fc20010 	lw	v0,16(s8)
  49fc4c:	00000000 	nop
  49fc50:	00621823 	subu	v1,v1,v0
  49fc54:	8fc2000c 	lw	v0,12(s8)
  49fc58:	00000000 	nop
  49fc5c:	00621821 	addu	v1,v1,v0
  49fc60:	8fc20008 	lw	v0,8(s8)
  49fc64:	00000000 	nop
  49fc68:	00621026 	xor	v0,v1,v0
  49fc6c:	8fc30018 	lw	v1,24(s8)
  49fc70:	00000000 	nop
  49fc74:	00621826 	xor	v1,v1,v0
  49fc78:	afc30018 	sw	v1,24(s8)
	E_CAST( 6,k,r,l,+,^,-);
  49fc7c:	8fc30020 	lw	v1,32(s8)
  49fc80:	00000000 	nop
  49fc84:	8c620030 	lw	v0,48(v1)
  49fc88:	8fc30018 	lw	v1,24(s8)
  49fc8c:	00000000 	nop
  49fc90:	00621021 	addu	v0,v1,v0
  49fc94:	afc20024 	sw	v0,36(s8)
  49fc98:	8fc30020 	lw	v1,32(s8)
  49fc9c:	00000000 	nop
  49fca0:	8c620034 	lw	v0,52(v1)
  49fca4:	8fc30024 	lw	v1,36(s8)
  49fca8:	00000000 	nop
  49fcac:	00432004 	sllv	a0,v1,v0
  49fcb0:	8fc20020 	lw	v0,32(s8)
  49fcb4:	00000000 	nop
  49fcb8:	8c430034 	lw	v1,52(v0)
  49fcbc:	24020020 	li	v0,32
  49fcc0:	00431023 	subu	v0,v0,v1
  49fcc4:	8fc30024 	lw	v1,36(s8)
  49fcc8:	00000000 	nop
  49fccc:	00431006 	srlv	v0,v1,v0
  49fcd0:	00822025 	or	a0,a0,v0
  49fcd4:	afc40024 	sw	a0,36(s8)
  49fcd8:	8fc30024 	lw	v1,36(s8)
  49fcdc:	00000000 	nop
  49fce0:	00031202 	srl	v0,v1,0x8
  49fce4:	304200ff 	andi	v0,v0,0xff
  49fce8:	00021080 	sll	v0,v0,0x2
  49fcec:	8f8189c8 	lw	at,-30264(gp)
  49fcf0:	00000000 	nop
  49fcf4:	00221021 	addu	v0,at,v0
  49fcf8:	8c420000 	lw	v0,0(v0)
  49fcfc:	00000000 	nop
  49fd00:	afc20014 	sw	v0,20(s8)
  49fd04:	8fc30024 	lw	v1,36(s8)
  49fd08:	00000000 	nop
  49fd0c:	306200ff 	andi	v0,v1,0xff
  49fd10:	00021080 	sll	v0,v0,0x2
  49fd14:	8f8180ec 	lw	at,-32532(gp)
  49fd18:	00000000 	nop
  49fd1c:	00221021 	addu	v0,at,v0
  49fd20:	8c420000 	lw	v0,0(v0)
  49fd24:	00000000 	nop
  49fd28:	afc20010 	sw	v0,16(s8)
  49fd2c:	8fc30024 	lw	v1,36(s8)
  49fd30:	00000000 	nop
  49fd34:	00031602 	srl	v0,v1,0x18
  49fd38:	304200ff 	andi	v0,v0,0xff
  49fd3c:	00021080 	sll	v0,v0,0x2
  49fd40:	8f8185e8 	lw	at,-31256(gp)
  49fd44:	00000000 	nop
  49fd48:	00221021 	addu	v0,at,v0
  49fd4c:	8c420000 	lw	v0,0(v0)
  49fd50:	00000000 	nop
  49fd54:	afc2000c 	sw	v0,12(s8)
  49fd58:	8fc30024 	lw	v1,36(s8)
  49fd5c:	00000000 	nop
  49fd60:	00031402 	srl	v0,v1,0x10
  49fd64:	304200ff 	andi	v0,v0,0xff
  49fd68:	00021080 	sll	v0,v0,0x2
  49fd6c:	8f8184d0 	lw	at,-31536(gp)
  49fd70:	00000000 	nop
  49fd74:	00221021 	addu	v0,at,v0
  49fd78:	8c420000 	lw	v0,0(v0)
  49fd7c:	00000000 	nop
  49fd80:	afc20008 	sw	v0,8(s8)
  49fd84:	8fc30014 	lw	v1,20(s8)
  49fd88:	8fc20010 	lw	v0,16(s8)
  49fd8c:	00000000 	nop
  49fd90:	00621826 	xor	v1,v1,v0
  49fd94:	8fc2000c 	lw	v0,12(s8)
  49fd98:	00000000 	nop
  49fd9c:	00621823 	subu	v1,v1,v0
  49fda0:	8fc20008 	lw	v0,8(s8)
  49fda4:	00000000 	nop
  49fda8:	00621021 	addu	v0,v1,v0
  49fdac:	8fc3001c 	lw	v1,28(s8)
  49fdb0:	00000000 	nop
  49fdb4:	00621826 	xor	v1,v1,v0
  49fdb8:	afc3001c 	sw	v1,28(s8)
	E_CAST( 5,k,l,r,-,+,^);
  49fdbc:	8fc30020 	lw	v1,32(s8)
  49fdc0:	00000000 	nop
  49fdc4:	8c620028 	lw	v0,40(v1)
  49fdc8:	8fc3001c 	lw	v1,28(s8)
  49fdcc:	00000000 	nop
  49fdd0:	00431023 	subu	v0,v0,v1
  49fdd4:	afc20024 	sw	v0,36(s8)
  49fdd8:	8fc30020 	lw	v1,32(s8)
  49fddc:	00000000 	nop
  49fde0:	8c62002c 	lw	v0,44(v1)
  49fde4:	8fc30024 	lw	v1,36(s8)
  49fde8:	00000000 	nop
  49fdec:	00432004 	sllv	a0,v1,v0
  49fdf0:	8fc20020 	lw	v0,32(s8)
  49fdf4:	00000000 	nop
  49fdf8:	8c43002c 	lw	v1,44(v0)
  49fdfc:	24020020 	li	v0,32
  49fe00:	00431023 	subu	v0,v0,v1
  49fe04:	8fc30024 	lw	v1,36(s8)
  49fe08:	00000000 	nop
  49fe0c:	00431006 	srlv	v0,v1,v0
  49fe10:	00822025 	or	a0,a0,v0
  49fe14:	afc40024 	sw	a0,36(s8)
  49fe18:	8fc30024 	lw	v1,36(s8)
  49fe1c:	00000000 	nop
  49fe20:	00031202 	srl	v0,v1,0x8
  49fe24:	304200ff 	andi	v0,v0,0xff
  49fe28:	00021080 	sll	v0,v0,0x2
  49fe2c:	8f8189c8 	lw	at,-30264(gp)
  49fe30:	00000000 	nop
  49fe34:	00221021 	addu	v0,at,v0
  49fe38:	8c420000 	lw	v0,0(v0)
  49fe3c:	00000000 	nop
  49fe40:	afc20014 	sw	v0,20(s8)
  49fe44:	8fc30024 	lw	v1,36(s8)
  49fe48:	00000000 	nop
  49fe4c:	306200ff 	andi	v0,v1,0xff
  49fe50:	00021080 	sll	v0,v0,0x2
  49fe54:	8f8180ec 	lw	at,-32532(gp)
  49fe58:	00000000 	nop
  49fe5c:	00221021 	addu	v0,at,v0
  49fe60:	8c420000 	lw	v0,0(v0)
  49fe64:	00000000 	nop
  49fe68:	afc20010 	sw	v0,16(s8)
  49fe6c:	8fc30024 	lw	v1,36(s8)
  49fe70:	00000000 	nop
  49fe74:	00031602 	srl	v0,v1,0x18
  49fe78:	304200ff 	andi	v0,v0,0xff
  49fe7c:	00021080 	sll	v0,v0,0x2
  49fe80:	8f8185e8 	lw	at,-31256(gp)
  49fe84:	00000000 	nop
  49fe88:	00221021 	addu	v0,at,v0
  49fe8c:	8c420000 	lw	v0,0(v0)
  49fe90:	00000000 	nop
  49fe94:	afc2000c 	sw	v0,12(s8)
  49fe98:	8fc30024 	lw	v1,36(s8)
  49fe9c:	00000000 	nop
  49fea0:	00031402 	srl	v0,v1,0x10
  49fea4:	304200ff 	andi	v0,v0,0xff
  49fea8:	00021080 	sll	v0,v0,0x2
  49feac:	8f8184d0 	lw	at,-31536(gp)
  49feb0:	00000000 	nop
  49feb4:	00221021 	addu	v0,at,v0
  49feb8:	8c420000 	lw	v0,0(v0)
  49febc:	00000000 	nop
  49fec0:	afc20008 	sw	v0,8(s8)
  49fec4:	8fc30014 	lw	v1,20(s8)
  49fec8:	8fc20010 	lw	v0,16(s8)
  49fecc:	00000000 	nop
  49fed0:	00621821 	addu	v1,v1,v0
  49fed4:	8fc2000c 	lw	v0,12(s8)
  49fed8:	00000000 	nop
  49fedc:	00621826 	xor	v1,v1,v0
  49fee0:	8fc20008 	lw	v0,8(s8)
  49fee4:	00000000 	nop
  49fee8:	00621023 	subu	v0,v1,v0
  49feec:	8fc30018 	lw	v1,24(s8)
  49fef0:	00000000 	nop
  49fef4:	00621826 	xor	v1,v1,v0
  49fef8:	afc30018 	sw	v1,24(s8)
	E_CAST( 4,k,r,l,^,-,+);
  49fefc:	8fc30020 	lw	v1,32(s8)
  49ff00:	00000000 	nop
  49ff04:	8c620020 	lw	v0,32(v1)
  49ff08:	8fc30018 	lw	v1,24(s8)
  49ff0c:	00000000 	nop
  49ff10:	00621026 	xor	v0,v1,v0
  49ff14:	afc20024 	sw	v0,36(s8)
  49ff18:	8fc30020 	lw	v1,32(s8)
  49ff1c:	00000000 	nop
  49ff20:	8c620024 	lw	v0,36(v1)
  49ff24:	8fc30024 	lw	v1,36(s8)
  49ff28:	00000000 	nop
  49ff2c:	00432004 	sllv	a0,v1,v0
  49ff30:	8fc20020 	lw	v0,32(s8)
  49ff34:	00000000 	nop
  49ff38:	8c430024 	lw	v1,36(v0)
  49ff3c:	24020020 	li	v0,32
  49ff40:	00431023 	subu	v0,v0,v1
  49ff44:	8fc30024 	lw	v1,36(s8)
  49ff48:	00000000 	nop
  49ff4c:	00431006 	srlv	v0,v1,v0
  49ff50:	00822025 	or	a0,a0,v0
  49ff54:	afc40024 	sw	a0,36(s8)
  49ff58:	8fc30024 	lw	v1,36(s8)
  49ff5c:	00000000 	nop
  49ff60:	00031202 	srl	v0,v1,0x8
  49ff64:	304200ff 	andi	v0,v0,0xff
  49ff68:	00021080 	sll	v0,v0,0x2
  49ff6c:	8f8189c8 	lw	at,-30264(gp)
  49ff70:	00000000 	nop
  49ff74:	00221021 	addu	v0,at,v0
  49ff78:	8c420000 	lw	v0,0(v0)
  49ff7c:	00000000 	nop
  49ff80:	afc20014 	sw	v0,20(s8)
  49ff84:	8fc30024 	lw	v1,36(s8)
  49ff88:	00000000 	nop
  49ff8c:	306200ff 	andi	v0,v1,0xff
  49ff90:	00021080 	sll	v0,v0,0x2
  49ff94:	8f8180ec 	lw	at,-32532(gp)
  49ff98:	00000000 	nop
  49ff9c:	00221021 	addu	v0,at,v0
  49ffa0:	8c420000 	lw	v0,0(v0)
  49ffa4:	00000000 	nop
  49ffa8:	afc20010 	sw	v0,16(s8)
  49ffac:	8fc30024 	lw	v1,36(s8)
  49ffb0:	00000000 	nop
  49ffb4:	00031602 	srl	v0,v1,0x18
  49ffb8:	304200ff 	andi	v0,v0,0xff
  49ffbc:	00021080 	sll	v0,v0,0x2
  49ffc0:	8f8185e8 	lw	at,-31256(gp)
  49ffc4:	00000000 	nop
  49ffc8:	00221021 	addu	v0,at,v0
  49ffcc:	8c420000 	lw	v0,0(v0)
  49ffd0:	00000000 	nop
  49ffd4:	afc2000c 	sw	v0,12(s8)
  49ffd8:	8fc30024 	lw	v1,36(s8)
  49ffdc:	00000000 	nop
  49ffe0:	00031402 	srl	v0,v1,0x10
  49ffe4:	304200ff 	andi	v0,v0,0xff
  49ffe8:	00021080 	sll	v0,v0,0x2
  49ffec:	8f8184d0 	lw	at,-31536(gp)
  49fff0:	00000000 	nop
  49fff4:	00221021 	addu	v0,at,v0
  49fff8:	8c420000 	lw	v0,0(v0)
  49fffc:	00000000 	nop
  4a0000:	afc20008 	sw	v0,8(s8)
  4a0004:	8fc30014 	lw	v1,20(s8)
  4a0008:	8fc20010 	lw	v0,16(s8)
  4a000c:	00000000 	nop
  4a0010:	00621823 	subu	v1,v1,v0
  4a0014:	8fc2000c 	lw	v0,12(s8)
  4a0018:	00000000 	nop
  4a001c:	00621821 	addu	v1,v1,v0
  4a0020:	8fc20008 	lw	v0,8(s8)
  4a0024:	00000000 	nop
  4a0028:	00621026 	xor	v0,v1,v0
  4a002c:	8fc3001c 	lw	v1,28(s8)
  4a0030:	00000000 	nop
  4a0034:	00621826 	xor	v1,v1,v0
  4a0038:	afc3001c 	sw	v1,28(s8)
	E_CAST( 3,k,l,r,+,^,-);
  4a003c:	8fc30020 	lw	v1,32(s8)
  4a0040:	00000000 	nop
  4a0044:	8c620018 	lw	v0,24(v1)
  4a0048:	8fc3001c 	lw	v1,28(s8)
  4a004c:	00000000 	nop
  4a0050:	00621021 	addu	v0,v1,v0
  4a0054:	afc20024 	sw	v0,36(s8)
  4a0058:	8fc30020 	lw	v1,32(s8)
  4a005c:	00000000 	nop
  4a0060:	8c62001c 	lw	v0,28(v1)
  4a0064:	8fc30024 	lw	v1,36(s8)
  4a0068:	00000000 	nop
  4a006c:	00432004 	sllv	a0,v1,v0
  4a0070:	8fc20020 	lw	v0,32(s8)
  4a0074:	00000000 	nop
  4a0078:	8c43001c 	lw	v1,28(v0)
  4a007c:	24020020 	li	v0,32
  4a0080:	00431023 	subu	v0,v0,v1
  4a0084:	8fc30024 	lw	v1,36(s8)
  4a0088:	00000000 	nop
  4a008c:	00431006 	srlv	v0,v1,v0
  4a0090:	00822025 	or	a0,a0,v0
  4a0094:	afc40024 	sw	a0,36(s8)
  4a0098:	8fc30024 	lw	v1,36(s8)
  4a009c:	00000000 	nop
  4a00a0:	00031202 	srl	v0,v1,0x8
  4a00a4:	304200ff 	andi	v0,v0,0xff
  4a00a8:	00021080 	sll	v0,v0,0x2
  4a00ac:	8f8189c8 	lw	at,-30264(gp)
  4a00b0:	00000000 	nop
  4a00b4:	00221021 	addu	v0,at,v0
  4a00b8:	8c420000 	lw	v0,0(v0)
  4a00bc:	00000000 	nop
  4a00c0:	afc20014 	sw	v0,20(s8)
  4a00c4:	8fc30024 	lw	v1,36(s8)
  4a00c8:	00000000 	nop
  4a00cc:	306200ff 	andi	v0,v1,0xff
  4a00d0:	00021080 	sll	v0,v0,0x2
  4a00d4:	8f8180ec 	lw	at,-32532(gp)
  4a00d8:	00000000 	nop
  4a00dc:	00221021 	addu	v0,at,v0
  4a00e0:	8c420000 	lw	v0,0(v0)
  4a00e4:	00000000 	nop
  4a00e8:	afc20010 	sw	v0,16(s8)
  4a00ec:	8fc30024 	lw	v1,36(s8)
  4a00f0:	00000000 	nop
  4a00f4:	00031602 	srl	v0,v1,0x18
  4a00f8:	304200ff 	andi	v0,v0,0xff
  4a00fc:	00021080 	sll	v0,v0,0x2
  4a0100:	8f8185e8 	lw	at,-31256(gp)
  4a0104:	00000000 	nop
  4a0108:	00221021 	addu	v0,at,v0
  4a010c:	8c420000 	lw	v0,0(v0)
  4a0110:	00000000 	nop
  4a0114:	afc2000c 	sw	v0,12(s8)
  4a0118:	8fc30024 	lw	v1,36(s8)
  4a011c:	00000000 	nop
  4a0120:	00031402 	srl	v0,v1,0x10
  4a0124:	304200ff 	andi	v0,v0,0xff
  4a0128:	00021080 	sll	v0,v0,0x2
  4a012c:	8f8184d0 	lw	at,-31536(gp)
  4a0130:	00000000 	nop
  4a0134:	00221021 	addu	v0,at,v0
  4a0138:	8c420000 	lw	v0,0(v0)
  4a013c:	00000000 	nop
  4a0140:	afc20008 	sw	v0,8(s8)
  4a0144:	8fc30014 	lw	v1,20(s8)
  4a0148:	8fc20010 	lw	v0,16(s8)
  4a014c:	00000000 	nop
  4a0150:	00621826 	xor	v1,v1,v0
  4a0154:	8fc2000c 	lw	v0,12(s8)
  4a0158:	00000000 	nop
  4a015c:	00621823 	subu	v1,v1,v0
  4a0160:	8fc20008 	lw	v0,8(s8)
  4a0164:	00000000 	nop
  4a0168:	00621021 	addu	v0,v1,v0
  4a016c:	8fc30018 	lw	v1,24(s8)
  4a0170:	00000000 	nop
  4a0174:	00621826 	xor	v1,v1,v0
  4a0178:	afc30018 	sw	v1,24(s8)
	E_CAST( 2,k,r,l,-,+,^);
  4a017c:	8fc30020 	lw	v1,32(s8)
  4a0180:	00000000 	nop
  4a0184:	8c620010 	lw	v0,16(v1)
  4a0188:	8fc30018 	lw	v1,24(s8)
  4a018c:	00000000 	nop
  4a0190:	00431023 	subu	v0,v0,v1
  4a0194:	afc20024 	sw	v0,36(s8)
  4a0198:	8fc30020 	lw	v1,32(s8)
  4a019c:	00000000 	nop
  4a01a0:	8c620014 	lw	v0,20(v1)
  4a01a4:	8fc30024 	lw	v1,36(s8)
  4a01a8:	00000000 	nop
  4a01ac:	00432004 	sllv	a0,v1,v0
  4a01b0:	8fc20020 	lw	v0,32(s8)
  4a01b4:	00000000 	nop
  4a01b8:	8c430014 	lw	v1,20(v0)
  4a01bc:	24020020 	li	v0,32
  4a01c0:	00431023 	subu	v0,v0,v1
  4a01c4:	8fc30024 	lw	v1,36(s8)
  4a01c8:	00000000 	nop
  4a01cc:	00431006 	srlv	v0,v1,v0
  4a01d0:	00822025 	or	a0,a0,v0
  4a01d4:	afc40024 	sw	a0,36(s8)
  4a01d8:	8fc30024 	lw	v1,36(s8)
  4a01dc:	00000000 	nop
  4a01e0:	00031202 	srl	v0,v1,0x8
  4a01e4:	304200ff 	andi	v0,v0,0xff
  4a01e8:	00021080 	sll	v0,v0,0x2
  4a01ec:	8f8189c8 	lw	at,-30264(gp)
  4a01f0:	00000000 	nop
  4a01f4:	00221021 	addu	v0,at,v0
  4a01f8:	8c420000 	lw	v0,0(v0)
  4a01fc:	00000000 	nop
  4a0200:	afc20014 	sw	v0,20(s8)
  4a0204:	8fc30024 	lw	v1,36(s8)
  4a0208:	00000000 	nop
  4a020c:	306200ff 	andi	v0,v1,0xff
  4a0210:	00021080 	sll	v0,v0,0x2
  4a0214:	8f8180ec 	lw	at,-32532(gp)
  4a0218:	00000000 	nop
  4a021c:	00221021 	addu	v0,at,v0
  4a0220:	8c420000 	lw	v0,0(v0)
  4a0224:	00000000 	nop
  4a0228:	afc20010 	sw	v0,16(s8)
  4a022c:	8fc30024 	lw	v1,36(s8)
  4a0230:	00000000 	nop
  4a0234:	00031602 	srl	v0,v1,0x18
  4a0238:	304200ff 	andi	v0,v0,0xff
  4a023c:	00021080 	sll	v0,v0,0x2
  4a0240:	8f8185e8 	lw	at,-31256(gp)
  4a0244:	00000000 	nop
  4a0248:	00221021 	addu	v0,at,v0
  4a024c:	8c420000 	lw	v0,0(v0)
  4a0250:	00000000 	nop
  4a0254:	afc2000c 	sw	v0,12(s8)
  4a0258:	8fc30024 	lw	v1,36(s8)
  4a025c:	00000000 	nop
  4a0260:	00031402 	srl	v0,v1,0x10
  4a0264:	304200ff 	andi	v0,v0,0xff
  4a0268:	00021080 	sll	v0,v0,0x2
  4a026c:	8f8184d0 	lw	at,-31536(gp)
  4a0270:	00000000 	nop
  4a0274:	00221021 	addu	v0,at,v0
  4a0278:	8c420000 	lw	v0,0(v0)
  4a027c:	00000000 	nop
  4a0280:	afc20008 	sw	v0,8(s8)
  4a0284:	8fc30014 	lw	v1,20(s8)
  4a0288:	8fc20010 	lw	v0,16(s8)
  4a028c:	00000000 	nop
  4a0290:	00621821 	addu	v1,v1,v0
  4a0294:	8fc2000c 	lw	v0,12(s8)
  4a0298:	00000000 	nop
  4a029c:	00621826 	xor	v1,v1,v0
  4a02a0:	8fc20008 	lw	v0,8(s8)
  4a02a4:	00000000 	nop
  4a02a8:	00621023 	subu	v0,v1,v0
  4a02ac:	8fc3001c 	lw	v1,28(s8)
  4a02b0:	00000000 	nop
  4a02b4:	00621826 	xor	v1,v1,v0
  4a02b8:	afc3001c 	sw	v1,28(s8)
	E_CAST( 1,k,l,r,^,-,+);
  4a02bc:	8fc30020 	lw	v1,32(s8)
  4a02c0:	00000000 	nop
  4a02c4:	8c620008 	lw	v0,8(v1)
  4a02c8:	8fc3001c 	lw	v1,28(s8)
  4a02cc:	00000000 	nop
  4a02d0:	00621026 	xor	v0,v1,v0
  4a02d4:	afc20024 	sw	v0,36(s8)
  4a02d8:	8fc30020 	lw	v1,32(s8)
  4a02dc:	00000000 	nop
  4a02e0:	8c62000c 	lw	v0,12(v1)
  4a02e4:	8fc30024 	lw	v1,36(s8)
  4a02e8:	00000000 	nop
  4a02ec:	00432004 	sllv	a0,v1,v0
  4a02f0:	8fc20020 	lw	v0,32(s8)
  4a02f4:	00000000 	nop
  4a02f8:	8c43000c 	lw	v1,12(v0)
  4a02fc:	24020020 	li	v0,32
  4a0300:	00431023 	subu	v0,v0,v1
  4a0304:	8fc30024 	lw	v1,36(s8)
  4a0308:	00000000 	nop
  4a030c:	00431006 	srlv	v0,v1,v0
  4a0310:	00822025 	or	a0,a0,v0
  4a0314:	afc40024 	sw	a0,36(s8)
  4a0318:	8fc30024 	lw	v1,36(s8)
  4a031c:	00000000 	nop
  4a0320:	00031202 	srl	v0,v1,0x8
  4a0324:	304200ff 	andi	v0,v0,0xff
  4a0328:	00021080 	sll	v0,v0,0x2
  4a032c:	8f8189c8 	lw	at,-30264(gp)
  4a0330:	00000000 	nop
  4a0334:	00221021 	addu	v0,at,v0
  4a0338:	8c420000 	lw	v0,0(v0)
  4a033c:	00000000 	nop
  4a0340:	afc20014 	sw	v0,20(s8)
  4a0344:	8fc30024 	lw	v1,36(s8)
  4a0348:	00000000 	nop
  4a034c:	306200ff 	andi	v0,v1,0xff
  4a0350:	00021080 	sll	v0,v0,0x2
  4a0354:	8f8180ec 	lw	at,-32532(gp)
  4a0358:	00000000 	nop
  4a035c:	00221021 	addu	v0,at,v0
  4a0360:	8c420000 	lw	v0,0(v0)
  4a0364:	00000000 	nop
  4a0368:	afc20010 	sw	v0,16(s8)
  4a036c:	8fc30024 	lw	v1,36(s8)
  4a0370:	00000000 	nop
  4a0374:	00031602 	srl	v0,v1,0x18
  4a0378:	304200ff 	andi	v0,v0,0xff
  4a037c:	00021080 	sll	v0,v0,0x2
  4a0380:	8f8185e8 	lw	at,-31256(gp)
  4a0384:	00000000 	nop
  4a0388:	00221021 	addu	v0,at,v0
  4a038c:	8c420000 	lw	v0,0(v0)
  4a0390:	00000000 	nop
  4a0394:	afc2000c 	sw	v0,12(s8)
  4a0398:	8fc30024 	lw	v1,36(s8)
  4a039c:	00000000 	nop
  4a03a0:	00031402 	srl	v0,v1,0x10
  4a03a4:	304200ff 	andi	v0,v0,0xff
  4a03a8:	00021080 	sll	v0,v0,0x2
  4a03ac:	8f8184d0 	lw	at,-31536(gp)
  4a03b0:	00000000 	nop
  4a03b4:	00221021 	addu	v0,at,v0
  4a03b8:	8c420000 	lw	v0,0(v0)
  4a03bc:	00000000 	nop
  4a03c0:	afc20008 	sw	v0,8(s8)
  4a03c4:	8fc30014 	lw	v1,20(s8)
  4a03c8:	8fc20010 	lw	v0,16(s8)
  4a03cc:	00000000 	nop
  4a03d0:	00621823 	subu	v1,v1,v0
  4a03d4:	8fc2000c 	lw	v0,12(s8)
  4a03d8:	00000000 	nop
  4a03dc:	00621821 	addu	v1,v1,v0
  4a03e0:	8fc20008 	lw	v0,8(s8)
  4a03e4:	00000000 	nop
  4a03e8:	00621026 	xor	v0,v1,v0
  4a03ec:	8fc30018 	lw	v1,24(s8)
  4a03f0:	00000000 	nop
  4a03f4:	00621826 	xor	v1,v1,v0
  4a03f8:	afc30018 	sw	v1,24(s8)
	E_CAST( 0,k,r,l,+,^,-);
  4a03fc:	8fc30020 	lw	v1,32(s8)
  4a0400:	00000000 	nop
  4a0404:	8c620000 	lw	v0,0(v1)
  4a0408:	8fc30018 	lw	v1,24(s8)
  4a040c:	00000000 	nop
  4a0410:	00621021 	addu	v0,v1,v0
  4a0414:	afc20024 	sw	v0,36(s8)
  4a0418:	8fc30020 	lw	v1,32(s8)
  4a041c:	00000000 	nop
  4a0420:	8c620004 	lw	v0,4(v1)
  4a0424:	8fc30024 	lw	v1,36(s8)
  4a0428:	00000000 	nop
  4a042c:	00432004 	sllv	a0,v1,v0
  4a0430:	8fc20020 	lw	v0,32(s8)
  4a0434:	00000000 	nop
  4a0438:	8c430004 	lw	v1,4(v0)
  4a043c:	24020020 	li	v0,32
  4a0440:	00431023 	subu	v0,v0,v1
  4a0444:	8fc30024 	lw	v1,36(s8)
  4a0448:	00000000 	nop
  4a044c:	00431006 	srlv	v0,v1,v0
  4a0450:	00822025 	or	a0,a0,v0
  4a0454:	afc40024 	sw	a0,36(s8)
  4a0458:	8fc30024 	lw	v1,36(s8)
  4a045c:	00000000 	nop
  4a0460:	00031202 	srl	v0,v1,0x8
  4a0464:	304200ff 	andi	v0,v0,0xff
  4a0468:	00021080 	sll	v0,v0,0x2
  4a046c:	8f8189c8 	lw	at,-30264(gp)
  4a0470:	00000000 	nop
  4a0474:	00221021 	addu	v0,at,v0
  4a0478:	8c420000 	lw	v0,0(v0)
  4a047c:	00000000 	nop
  4a0480:	afc20014 	sw	v0,20(s8)
  4a0484:	8fc30024 	lw	v1,36(s8)
  4a0488:	00000000 	nop
  4a048c:	306200ff 	andi	v0,v1,0xff
  4a0490:	00021080 	sll	v0,v0,0x2
  4a0494:	8f8180ec 	lw	at,-32532(gp)
  4a0498:	00000000 	nop
  4a049c:	00221021 	addu	v0,at,v0
  4a04a0:	8c420000 	lw	v0,0(v0)
  4a04a4:	00000000 	nop
  4a04a8:	afc20010 	sw	v0,16(s8)
  4a04ac:	8fc30024 	lw	v1,36(s8)
  4a04b0:	00000000 	nop
  4a04b4:	00031602 	srl	v0,v1,0x18
  4a04b8:	304200ff 	andi	v0,v0,0xff
  4a04bc:	00021080 	sll	v0,v0,0x2
  4a04c0:	8f8185e8 	lw	at,-31256(gp)
  4a04c4:	00000000 	nop
  4a04c8:	00221021 	addu	v0,at,v0
  4a04cc:	8c420000 	lw	v0,0(v0)
  4a04d0:	00000000 	nop
  4a04d4:	afc2000c 	sw	v0,12(s8)
  4a04d8:	8fc30024 	lw	v1,36(s8)
  4a04dc:	00000000 	nop
  4a04e0:	00031402 	srl	v0,v1,0x10
  4a04e4:	304200ff 	andi	v0,v0,0xff
  4a04e8:	00021080 	sll	v0,v0,0x2
  4a04ec:	8f8184d0 	lw	at,-31536(gp)
  4a04f0:	00000000 	nop
  4a04f4:	00221021 	addu	v0,at,v0
  4a04f8:	8c420000 	lw	v0,0(v0)
  4a04fc:	00000000 	nop
  4a0500:	afc20008 	sw	v0,8(s8)
  4a0504:	8fc30014 	lw	v1,20(s8)
  4a0508:	8fc20010 	lw	v0,16(s8)
  4a050c:	00000000 	nop
  4a0510:	00621826 	xor	v1,v1,v0
  4a0514:	8fc2000c 	lw	v0,12(s8)
  4a0518:	00000000 	nop
  4a051c:	00621823 	subu	v1,v1,v0
  4a0520:	8fc20008 	lw	v0,8(s8)
  4a0524:	00000000 	nop
  4a0528:	00621021 	addu	v0,v1,v0
  4a052c:	8fc3001c 	lw	v1,28(s8)
  4a0530:	00000000 	nop
  4a0534:	00621826 	xor	v1,v1,v0
  4a0538:	afc3001c 	sw	v1,28(s8)

	data[1]=l&0xffffffffL;
  4a053c:	8fc20030 	lw	v0,48(s8)
  4a0540:	00000000 	nop
  4a0544:	24420004 	addiu	v0,v0,4
  4a0548:	8fc30018 	lw	v1,24(s8)
  4a054c:	00000000 	nop
  4a0550:	ac430000 	sw	v1,0(v0)
	data[0]=r&0xffffffffL;
  4a0554:	8fc20030 	lw	v0,48(s8)
  4a0558:	8fc3001c 	lw	v1,28(s8)
  4a055c:	00000000 	nop
  4a0560:	ac430000 	sw	v1,0(v0)
	}
  4a0564:	03c0e821 	move	sp,s8
  4a0568:	8fbe002c 	lw	s8,44(sp)
  4a056c:	27bd0030 	addiu	sp,sp,48
  4a0570:	03e00008 	jr	ra
  4a0574:	00000000 	nop

004a0578 <CAST_cbc_encrypt>:
  4a0578:	3c1c0fb7 	lui	gp,0xfb7
  4a057c:	279cc3f8 	addiu	gp,gp,-15368
  4a0580:	0399e021 	addu	gp,gp,t9
  4a0584:	27bdffa8 	addiu	sp,sp,-88
  4a0588:	afbc0010 	sw	gp,16(sp)
  4a058c:	afbf0050 	sw	ra,80(sp)
  4a0590:	afbe004c 	sw	s8,76(sp)
  4a0594:	afbc0048 	sw	gp,72(sp)
  4a0598:	03a0f021 	move	s8,sp
  4a059c:	afc40058 	sw	a0,88(s8)
  4a05a0:	afc5005c 	sw	a1,92(s8)
  4a05a4:	afc60060 	sw	a2,96(s8)
  4a05a8:	afc70064 	sw	a3,100(s8)

void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
	     CAST_KEY *ks, unsigned char *iv, int enc)
	{
	register CAST_LONG tin0,tin1;
	register CAST_LONG tout0,tout1,xor0,xor1;
	register long l=length;
  4a05ac:	8fc20060 	lw	v0,96(s8)
  4a05b0:	00000000 	nop
  4a05b4:	afc20038 	sw	v0,56(s8)
	CAST_LONG tin[2];

	if (enc)
  4a05b8:	8fc2006c 	lw	v0,108(s8)
  4a05bc:	00000000 	nop
  4a05c0:	1040026f 	beqz	v0,4a0f80 <CAST_cbc_encrypt+0xa08>
  4a05c4:	00000000 	nop
		{
		n2l(iv,tout0);
  4a05c8:	27c40068 	addiu	a0,s8,104
  4a05cc:	8c820000 	lw	v0,0(a0)
  4a05d0:	00000000 	nop
  4a05d4:	00401821 	move	v1,v0
  4a05d8:	90630000 	lbu	v1,0(v1)
  4a05dc:	00000000 	nop
  4a05e0:	afc30028 	sw	v1,40(s8)
  4a05e4:	8fc30028 	lw	v1,40(s8)
  4a05e8:	00000000 	nop
  4a05ec:	00031e00 	sll	v1,v1,0x18
  4a05f0:	afc30028 	sw	v1,40(s8)
  4a05f4:	24420001 	addiu	v0,v0,1
  4a05f8:	ac820000 	sw	v0,0(a0)
  4a05fc:	27c40068 	addiu	a0,s8,104
  4a0600:	8c830000 	lw	v1,0(a0)
  4a0604:	00000000 	nop
  4a0608:	00601021 	move	v0,v1
  4a060c:	90420000 	lbu	v0,0(v0)
  4a0610:	00000000 	nop
  4a0614:	00021400 	sll	v0,v0,0x10
  4a0618:	8fc50028 	lw	a1,40(s8)
  4a061c:	00000000 	nop
  4a0620:	00a22825 	or	a1,a1,v0
  4a0624:	afc50028 	sw	a1,40(s8)
  4a0628:	24630001 	addiu	v1,v1,1
  4a062c:	ac830000 	sw	v1,0(a0)
  4a0630:	27c40068 	addiu	a0,s8,104
  4a0634:	8c830000 	lw	v1,0(a0)
  4a0638:	00000000 	nop
  4a063c:	00601021 	move	v0,v1
  4a0640:	90420000 	lbu	v0,0(v0)
  4a0644:	00000000 	nop
  4a0648:	00021200 	sll	v0,v0,0x8
  4a064c:	8fc50028 	lw	a1,40(s8)
  4a0650:	00000000 	nop
  4a0654:	00a22825 	or	a1,a1,v0
  4a0658:	afc50028 	sw	a1,40(s8)
  4a065c:	24630001 	addiu	v1,v1,1
  4a0660:	ac830000 	sw	v1,0(a0)
  4a0664:	27c40068 	addiu	a0,s8,104
  4a0668:	8c820000 	lw	v0,0(a0)
  4a066c:	00000000 	nop
  4a0670:	00401821 	move	v1,v0
  4a0674:	90630000 	lbu	v1,0(v1)
  4a0678:	8fc50028 	lw	a1,40(s8)
  4a067c:	00000000 	nop
  4a0680:	00a32825 	or	a1,a1,v1
  4a0684:	afc50028 	sw	a1,40(s8)
  4a0688:	24420001 	addiu	v0,v0,1
  4a068c:	ac820000 	sw	v0,0(a0)
		n2l(iv,tout1);
  4a0690:	27c40068 	addiu	a0,s8,104
  4a0694:	8c820000 	lw	v0,0(a0)
  4a0698:	00000000 	nop
  4a069c:	00401821 	move	v1,v0
  4a06a0:	90630000 	lbu	v1,0(v1)
  4a06a4:	00000000 	nop
  4a06a8:	afc3002c 	sw	v1,44(s8)
  4a06ac:	8fc3002c 	lw	v1,44(s8)
  4a06b0:	00000000 	nop
  4a06b4:	00031e00 	sll	v1,v1,0x18
  4a06b8:	afc3002c 	sw	v1,44(s8)
  4a06bc:	24420001 	addiu	v0,v0,1
  4a06c0:	ac820000 	sw	v0,0(a0)
  4a06c4:	27c40068 	addiu	a0,s8,104
  4a06c8:	8c830000 	lw	v1,0(a0)
  4a06cc:	00000000 	nop
  4a06d0:	00601021 	move	v0,v1
  4a06d4:	90420000 	lbu	v0,0(v0)
  4a06d8:	00000000 	nop
  4a06dc:	00021400 	sll	v0,v0,0x10
  4a06e0:	8fc5002c 	lw	a1,44(s8)
  4a06e4:	00000000 	nop
  4a06e8:	00a22825 	or	a1,a1,v0
  4a06ec:	afc5002c 	sw	a1,44(s8)
  4a06f0:	24630001 	addiu	v1,v1,1
  4a06f4:	ac830000 	sw	v1,0(a0)
  4a06f8:	27c40068 	addiu	a0,s8,104
  4a06fc:	8c830000 	lw	v1,0(a0)
  4a0700:	00000000 	nop
  4a0704:	00601021 	move	v0,v1
  4a0708:	90420000 	lbu	v0,0(v0)
  4a070c:	00000000 	nop
  4a0710:	00021200 	sll	v0,v0,0x8
  4a0714:	8fc5002c 	lw	a1,44(s8)
  4a0718:	00000000 	nop
  4a071c:	00a22825 	or	a1,a1,v0
  4a0720:	afc5002c 	sw	a1,44(s8)
  4a0724:	24630001 	addiu	v1,v1,1
  4a0728:	ac830000 	sw	v1,0(a0)
  4a072c:	27c40068 	addiu	a0,s8,104
  4a0730:	8c820000 	lw	v0,0(a0)
  4a0734:	00000000 	nop
  4a0738:	00401821 	move	v1,v0
  4a073c:	90630000 	lbu	v1,0(v1)
  4a0740:	8fc5002c 	lw	a1,44(s8)
  4a0744:	00000000 	nop
  4a0748:	00a32825 	or	a1,a1,v1
  4a074c:	afc5002c 	sw	a1,44(s8)
  4a0750:	24420001 	addiu	v0,v0,1
  4a0754:	ac820000 	sw	v0,0(a0)
		iv-=8;
  4a0758:	8fc20068 	lw	v0,104(s8)
  4a075c:	00000000 	nop
  4a0760:	2442fff8 	addiu	v0,v0,-8
  4a0764:	afc20068 	sw	v0,104(s8)
		for (l-=8; l>=0; l-=8)
  4a0768:	8fc20038 	lw	v0,56(s8)
  4a076c:	00000000 	nop
  4a0770:	2442fff8 	addiu	v0,v0,-8
  4a0774:	afc20038 	sw	v0,56(s8)
  4a0778:	8fc30038 	lw	v1,56(s8)
  4a077c:	00000000 	nop
  4a0780:	04610003 	bgez	v1,4a0790 <CAST_cbc_encrypt+0x218>
  4a0784:	00000000 	nop
  4a0788:	100000cf 	b	4a0ac8 <CAST_cbc_encrypt+0x550>
  4a078c:	00000000 	nop
			{
			n2l(in,tin0);
  4a0790:	8fc20058 	lw	v0,88(s8)
  4a0794:	00000000 	nop
  4a0798:	00401821 	move	v1,v0
  4a079c:	90630000 	lbu	v1,0(v1)
  4a07a0:	00000000 	nop
  4a07a4:	afc30020 	sw	v1,32(s8)
  4a07a8:	8fc40020 	lw	a0,32(s8)
  4a07ac:	00000000 	nop
  4a07b0:	00042600 	sll	a0,a0,0x18
  4a07b4:	afc40020 	sw	a0,32(s8)
  4a07b8:	24420001 	addiu	v0,v0,1
  4a07bc:	afc20058 	sw	v0,88(s8)
  4a07c0:	8fc30058 	lw	v1,88(s8)
  4a07c4:	00000000 	nop
  4a07c8:	00601021 	move	v0,v1
  4a07cc:	90420000 	lbu	v0,0(v0)
  4a07d0:	00000000 	nop
  4a07d4:	00021400 	sll	v0,v0,0x10
  4a07d8:	8fc50020 	lw	a1,32(s8)
  4a07dc:	00000000 	nop
  4a07e0:	00a22825 	or	a1,a1,v0
  4a07e4:	afc50020 	sw	a1,32(s8)
  4a07e8:	24630001 	addiu	v1,v1,1
  4a07ec:	afc30058 	sw	v1,88(s8)
  4a07f0:	8fc30058 	lw	v1,88(s8)
  4a07f4:	00000000 	nop
  4a07f8:	00601021 	move	v0,v1
  4a07fc:	90420000 	lbu	v0,0(v0)
  4a0800:	00000000 	nop
  4a0804:	00021200 	sll	v0,v0,0x8
  4a0808:	8fc40020 	lw	a0,32(s8)
  4a080c:	00000000 	nop
  4a0810:	00822025 	or	a0,a0,v0
  4a0814:	afc40020 	sw	a0,32(s8)
  4a0818:	24630001 	addiu	v1,v1,1
  4a081c:	afc30058 	sw	v1,88(s8)
  4a0820:	8fc20058 	lw	v0,88(s8)
  4a0824:	00000000 	nop
  4a0828:	00401821 	move	v1,v0
  4a082c:	90630000 	lbu	v1,0(v1)
  4a0830:	8fc50020 	lw	a1,32(s8)
  4a0834:	00000000 	nop
  4a0838:	00a32825 	or	a1,a1,v1
  4a083c:	afc50020 	sw	a1,32(s8)
  4a0840:	24420001 	addiu	v0,v0,1
  4a0844:	afc20058 	sw	v0,88(s8)
			n2l(in,tin1);
  4a0848:	8fc20058 	lw	v0,88(s8)
  4a084c:	00000000 	nop
  4a0850:	00401821 	move	v1,v0
  4a0854:	90630000 	lbu	v1,0(v1)
  4a0858:	00000000 	nop
  4a085c:	afc30024 	sw	v1,36(s8)
  4a0860:	8fc30024 	lw	v1,36(s8)
  4a0864:	00000000 	nop
  4a0868:	00031e00 	sll	v1,v1,0x18
  4a086c:	afc30024 	sw	v1,36(s8)
  4a0870:	24420001 	addiu	v0,v0,1
  4a0874:	afc20058 	sw	v0,88(s8)
  4a0878:	8fc30058 	lw	v1,88(s8)
  4a087c:	00000000 	nop
  4a0880:	00601021 	move	v0,v1
  4a0884:	90420000 	lbu	v0,0(v0)
  4a0888:	00000000 	nop
  4a088c:	00021400 	sll	v0,v0,0x10
  4a0890:	8fc40024 	lw	a0,36(s8)
  4a0894:	00000000 	nop
  4a0898:	00822025 	or	a0,a0,v0
  4a089c:	afc40024 	sw	a0,36(s8)
  4a08a0:	24630001 	addiu	v1,v1,1
  4a08a4:	afc30058 	sw	v1,88(s8)
  4a08a8:	8fc30058 	lw	v1,88(s8)
  4a08ac:	00000000 	nop
  4a08b0:	00601021 	move	v0,v1
  4a08b4:	90420000 	lbu	v0,0(v0)
  4a08b8:	00000000 	nop
  4a08bc:	00021200 	sll	v0,v0,0x8
  4a08c0:	8fc50024 	lw	a1,36(s8)
  4a08c4:	00000000 	nop
  4a08c8:	00a22825 	or	a1,a1,v0
  4a08cc:	afc50024 	sw	a1,36(s8)
  4a08d0:	24630001 	addiu	v1,v1,1
  4a08d4:	afc30058 	sw	v1,88(s8)
  4a08d8:	8fc20058 	lw	v0,88(s8)
  4a08dc:	00000000 	nop
  4a08e0:	00401821 	move	v1,v0
  4a08e4:	90630000 	lbu	v1,0(v1)
  4a08e8:	8fc40024 	lw	a0,36(s8)
  4a08ec:	00000000 	nop
  4a08f0:	00832025 	or	a0,a0,v1
  4a08f4:	afc40024 	sw	a0,36(s8)
  4a08f8:	24420001 	addiu	v0,v0,1
  4a08fc:	afc20058 	sw	v0,88(s8)
			tin0^=tout0;
  4a0900:	8fc50020 	lw	a1,32(s8)
  4a0904:	8fc20028 	lw	v0,40(s8)
  4a0908:	00000000 	nop
  4a090c:	00a22826 	xor	a1,a1,v0
  4a0910:	afc50020 	sw	a1,32(s8)
			tin1^=tout1;
  4a0914:	8fc30024 	lw	v1,36(s8)
  4a0918:	8fc4002c 	lw	a0,44(s8)
  4a091c:	00000000 	nop
  4a0920:	00641826 	xor	v1,v1,a0
  4a0924:	afc30024 	sw	v1,36(s8)
			tin[0]=tin0;
  4a0928:	8fc50020 	lw	a1,32(s8)
  4a092c:	00000000 	nop
  4a0930:	afc50018 	sw	a1,24(s8)
			tin[1]=tin1;
  4a0934:	8fc20024 	lw	v0,36(s8)
  4a0938:	00000000 	nop
  4a093c:	afc2001c 	sw	v0,28(s8)
			CAST_encrypt(tin,ks);
  4a0940:	27c40018 	addiu	a0,s8,24
  4a0944:	8fc50064 	lw	a1,100(s8)
  4a0948:	8f998b60 	lw	t9,-29856(gp)
  4a094c:	00000000 	nop
  4a0950:	0320f809 	jalr	t9
  4a0954:	00000000 	nop
  4a0958:	8fdc0010 	lw	gp,16(s8)
  4a095c:	00000000 	nop
			tout0=tin[0];
  4a0960:	8fc30018 	lw	v1,24(s8)
  4a0964:	00000000 	nop
  4a0968:	afc30028 	sw	v1,40(s8)
			tout1=tin[1];
  4a096c:	8fc4001c 	lw	a0,28(s8)
  4a0970:	00000000 	nop
  4a0974:	afc4002c 	sw	a0,44(s8)
			l2n(tout0,out);
  4a0978:	27c5005c 	addiu	a1,s8,92
  4a097c:	8ca30000 	lw	v1,0(a1)
  4a0980:	8fc40028 	lw	a0,40(s8)
  4a0984:	00000000 	nop
  4a0988:	00041602 	srl	v0,a0,0x18
  4a098c:	00402021 	move	a0,v0
  4a0990:	00601021 	move	v0,v1
  4a0994:	a0440000 	sb	a0,0(v0)
  4a0998:	24630001 	addiu	v1,v1,1
  4a099c:	aca30000 	sw	v1,0(a1)
  4a09a0:	27c5005c 	addiu	a1,s8,92
  4a09a4:	8ca30000 	lw	v1,0(a1)
  4a09a8:	8fc40028 	lw	a0,40(s8)
  4a09ac:	00000000 	nop
  4a09b0:	00041402 	srl	v0,a0,0x10
  4a09b4:	00402021 	move	a0,v0
  4a09b8:	00601021 	move	v0,v1
  4a09bc:	a0440000 	sb	a0,0(v0)
  4a09c0:	24630001 	addiu	v1,v1,1
  4a09c4:	aca30000 	sw	v1,0(a1)
  4a09c8:	27c5005c 	addiu	a1,s8,92
  4a09cc:	8ca30000 	lw	v1,0(a1)
  4a09d0:	8fc40028 	lw	a0,40(s8)
  4a09d4:	00000000 	nop
  4a09d8:	00041202 	srl	v0,a0,0x8
  4a09dc:	00402021 	move	a0,v0
  4a09e0:	00601021 	move	v0,v1
  4a09e4:	a0440000 	sb	a0,0(v0)
  4a09e8:	24630001 	addiu	v1,v1,1
  4a09ec:	aca30000 	sw	v1,0(a1)
  4a09f0:	27c5005c 	addiu	a1,s8,92
  4a09f4:	8ca20000 	lw	v0,0(a1)
  4a09f8:	8fc30028 	lw	v1,40(s8)
  4a09fc:	00000000 	nop
  4a0a00:	00602021 	move	a0,v1
  4a0a04:	00401821 	move	v1,v0
  4a0a08:	a0640000 	sb	a0,0(v1)
  4a0a0c:	24420001 	addiu	v0,v0,1
  4a0a10:	aca20000 	sw	v0,0(a1)
			l2n(tout1,out);
  4a0a14:	27c5005c 	addiu	a1,s8,92
  4a0a18:	8ca30000 	lw	v1,0(a1)
  4a0a1c:	8fc4002c 	lw	a0,44(s8)
  4a0a20:	00000000 	nop
  4a0a24:	00041602 	srl	v0,a0,0x18
  4a0a28:	00402021 	move	a0,v0
  4a0a2c:	00601021 	move	v0,v1
  4a0a30:	a0440000 	sb	a0,0(v0)
  4a0a34:	24630001 	addiu	v1,v1,1
  4a0a38:	aca30000 	sw	v1,0(a1)
  4a0a3c:	27c5005c 	addiu	a1,s8,92
  4a0a40:	8ca30000 	lw	v1,0(a1)
  4a0a44:	8fc4002c 	lw	a0,44(s8)
  4a0a48:	00000000 	nop
  4a0a4c:	00041402 	srl	v0,a0,0x10
  4a0a50:	00402021 	move	a0,v0
  4a0a54:	00601021 	move	v0,v1
  4a0a58:	a0440000 	sb	a0,0(v0)
  4a0a5c:	24630001 	addiu	v1,v1,1
  4a0a60:	aca30000 	sw	v1,0(a1)
  4a0a64:	27c5005c 	addiu	a1,s8,92
  4a0a68:	8ca30000 	lw	v1,0(a1)
  4a0a6c:	8fc4002c 	lw	a0,44(s8)
  4a0a70:	00000000 	nop
  4a0a74:	00041202 	srl	v0,a0,0x8
  4a0a78:	00402021 	move	a0,v0
  4a0a7c:	00601021 	move	v0,v1
  4a0a80:	a0440000 	sb	a0,0(v0)
  4a0a84:	24630001 	addiu	v1,v1,1
  4a0a88:	aca30000 	sw	v1,0(a1)
  4a0a8c:	27c5005c 	addiu	a1,s8,92
  4a0a90:	8ca20000 	lw	v0,0(a1)
  4a0a94:	8fc3002c 	lw	v1,44(s8)
  4a0a98:	00000000 	nop
  4a0a9c:	00602021 	move	a0,v1
  4a0aa0:	00401821 	move	v1,v0
  4a0aa4:	a0640000 	sb	a0,0(v1)
  4a0aa8:	24420001 	addiu	v0,v0,1
  4a0aac:	aca20000 	sw	v0,0(a1)
  4a0ab0:	8fc40038 	lw	a0,56(s8)
  4a0ab4:	00000000 	nop
  4a0ab8:	2484fff8 	addiu	a0,a0,-8
  4a0abc:	afc40038 	sw	a0,56(s8)
  4a0ac0:	1000ff2d 	b	4a0778 <CAST_cbc_encrypt+0x200>
  4a0ac4:	00000000 	nop
			}
		if (l != -8)
  4a0ac8:	2402fff8 	li	v0,-8
  4a0acc:	8fc50038 	lw	a1,56(s8)
  4a0ad0:	00000000 	nop
  4a0ad4:	10a200da 	beq	a1,v0,4a0e40 <CAST_cbc_encrypt+0x8c8>
  4a0ad8:	00000000 	nop
			{
			n2ln(in,tin0,tin1,l+8);
  4a0adc:	8fc20058 	lw	v0,88(s8)
  4a0ae0:	8fc30038 	lw	v1,56(s8)
  4a0ae4:	00000000 	nop
  4a0ae8:	00621021 	addu	v0,v1,v0
  4a0aec:	24420008 	addiu	v0,v0,8
  4a0af0:	afc20058 	sw	v0,88(s8)
  4a0af4:	afc00024 	sw	zero,36(s8)
  4a0af8:	afc00020 	sw	zero,32(s8)
  4a0afc:	8fc40038 	lw	a0,56(s8)
  4a0b00:	00000000 	nop
  4a0b04:	24840007 	addiu	a0,a0,7
  4a0b08:	afc4003c 	sw	a0,60(s8)
  4a0b0c:	8fc5003c 	lw	a1,60(s8)
  4a0b10:	00000000 	nop
  4a0b14:	2ca20008 	sltiu	v0,a1,8
  4a0b18:	1040005d 	beqz	v0,4a0c90 <CAST_cbc_encrypt+0x718>
  4a0b1c:	00000000 	nop
  4a0b20:	8fc2003c 	lw	v0,60(s8)
  4a0b24:	00000000 	nop
  4a0b28:	00021080 	sll	v0,v0,0x2
  4a0b2c:	8f81804c 	lw	at,-32692(gp)
  4a0b30:	00000000 	nop
  4a0b34:	24215430 	addiu	at,at,21552
  4a0b38:	00221021 	addu	v0,at,v0
  4a0b3c:	8c420000 	lw	v0,0(v0)
  4a0b40:	00000000 	nop
  4a0b44:	005c1021 	addu	v0,v0,gp
  4a0b48:	00400008 	jr	v0
  4a0b4c:	00000000 	nop
  4a0b50:	8fc20058 	lw	v0,88(s8)
  4a0b54:	00000000 	nop
  4a0b58:	2442ffff 	addiu	v0,v0,-1
  4a0b5c:	afc20058 	sw	v0,88(s8)
  4a0b60:	90420000 	lbu	v0,0(v0)
  4a0b64:	00000000 	nop
  4a0b68:	afc20024 	sw	v0,36(s8)
  4a0b6c:	8fc20058 	lw	v0,88(s8)
  4a0b70:	00000000 	nop
  4a0b74:	2442ffff 	addiu	v0,v0,-1
  4a0b78:	afc20058 	sw	v0,88(s8)
  4a0b7c:	90420000 	lbu	v0,0(v0)
  4a0b80:	00000000 	nop
  4a0b84:	00021200 	sll	v0,v0,0x8
  4a0b88:	8fc30024 	lw	v1,36(s8)
  4a0b8c:	00000000 	nop
  4a0b90:	00621825 	or	v1,v1,v0
  4a0b94:	afc30024 	sw	v1,36(s8)
  4a0b98:	8fc20058 	lw	v0,88(s8)
  4a0b9c:	00000000 	nop
  4a0ba0:	2442ffff 	addiu	v0,v0,-1
  4a0ba4:	afc20058 	sw	v0,88(s8)
  4a0ba8:	90420000 	lbu	v0,0(v0)
  4a0bac:	00000000 	nop
  4a0bb0:	00021400 	sll	v0,v0,0x10
  4a0bb4:	8fc40024 	lw	a0,36(s8)
  4a0bb8:	00000000 	nop
  4a0bbc:	00822025 	or	a0,a0,v0
  4a0bc0:	afc40024 	sw	a0,36(s8)
  4a0bc4:	8fc20058 	lw	v0,88(s8)
  4a0bc8:	00000000 	nop
  4a0bcc:	2442ffff 	addiu	v0,v0,-1
  4a0bd0:	afc20058 	sw	v0,88(s8)
  4a0bd4:	90420000 	lbu	v0,0(v0)
  4a0bd8:	00000000 	nop
  4a0bdc:	00021600 	sll	v0,v0,0x18
  4a0be0:	8fc50024 	lw	a1,36(s8)
  4a0be4:	00000000 	nop
  4a0be8:	00a22825 	or	a1,a1,v0
  4a0bec:	afc50024 	sw	a1,36(s8)
  4a0bf0:	8fc20058 	lw	v0,88(s8)
  4a0bf4:	00000000 	nop
  4a0bf8:	2442ffff 	addiu	v0,v0,-1
  4a0bfc:	afc20058 	sw	v0,88(s8)
  4a0c00:	90420000 	lbu	v0,0(v0)
  4a0c04:	00000000 	nop
  4a0c08:	afc20020 	sw	v0,32(s8)
  4a0c0c:	8fc20058 	lw	v0,88(s8)
  4a0c10:	00000000 	nop
  4a0c14:	2442ffff 	addiu	v0,v0,-1
  4a0c18:	afc20058 	sw	v0,88(s8)
  4a0c1c:	90420000 	lbu	v0,0(v0)
  4a0c20:	00000000 	nop
  4a0c24:	00021200 	sll	v0,v0,0x8
  4a0c28:	8fc30020 	lw	v1,32(s8)
  4a0c2c:	00000000 	nop
  4a0c30:	00621825 	or	v1,v1,v0
  4a0c34:	afc30020 	sw	v1,32(s8)
  4a0c38:	8fc20058 	lw	v0,88(s8)
  4a0c3c:	00000000 	nop
  4a0c40:	2442ffff 	addiu	v0,v0,-1
  4a0c44:	afc20058 	sw	v0,88(s8)
  4a0c48:	90420000 	lbu	v0,0(v0)
  4a0c4c:	00000000 	nop
  4a0c50:	00021400 	sll	v0,v0,0x10
  4a0c54:	8fc40020 	lw	a0,32(s8)
  4a0c58:	00000000 	nop
  4a0c5c:	00822025 	or	a0,a0,v0
  4a0c60:	afc40020 	sw	a0,32(s8)
  4a0c64:	8fc20058 	lw	v0,88(s8)
  4a0c68:	00000000 	nop
  4a0c6c:	2442ffff 	addiu	v0,v0,-1
  4a0c70:	afc20058 	sw	v0,88(s8)
  4a0c74:	90420000 	lbu	v0,0(v0)
  4a0c78:	00000000 	nop
  4a0c7c:	00021600 	sll	v0,v0,0x18
  4a0c80:	8fc50020 	lw	a1,32(s8)
  4a0c84:	00000000 	nop
  4a0c88:	00a22825 	or	a1,a1,v0
  4a0c8c:	afc50020 	sw	a1,32(s8)
			tin0^=tout0;
  4a0c90:	8fc20020 	lw	v0,32(s8)
  4a0c94:	8fc30028 	lw	v1,40(s8)
  4a0c98:	00000000 	nop
  4a0c9c:	00431026 	xor	v0,v0,v1
  4a0ca0:	afc20020 	sw	v0,32(s8)
			tin1^=tout1;
  4a0ca4:	8fc40024 	lw	a0,36(s8)
  4a0ca8:	8fc5002c 	lw	a1,44(s8)
  4a0cac:	00000000 	nop
  4a0cb0:	00852026 	xor	a0,a0,a1
  4a0cb4:	afc40024 	sw	a0,36(s8)
			tin[0]=tin0;
  4a0cb8:	8fc20020 	lw	v0,32(s8)
  4a0cbc:	00000000 	nop
  4a0cc0:	afc20018 	sw	v0,24(s8)
			tin[1]=tin1;
  4a0cc4:	8fc30024 	lw	v1,36(s8)
  4a0cc8:	00000000 	nop
  4a0ccc:	afc3001c 	sw	v1,28(s8)
			CAST_encrypt(tin,ks);
  4a0cd0:	27c40018 	addiu	a0,s8,24
  4a0cd4:	8fc50064 	lw	a1,100(s8)
  4a0cd8:	8f998b60 	lw	t9,-29856(gp)
  4a0cdc:	00000000 	nop
  4a0ce0:	0320f809 	jalr	t9
  4a0ce4:	00000000 	nop
  4a0ce8:	8fdc0010 	lw	gp,16(s8)
  4a0cec:	00000000 	nop
			tout0=tin[0];
  4a0cf0:	8fc40018 	lw	a0,24(s8)
  4a0cf4:	00000000 	nop
  4a0cf8:	afc40028 	sw	a0,40(s8)
			tout1=tin[1];
  4a0cfc:	8fc5001c 	lw	a1,28(s8)
  4a0d00:	00000000 	nop
  4a0d04:	afc5002c 	sw	a1,44(s8)
			l2n(tout0,out);
  4a0d08:	27c5005c 	addiu	a1,s8,92
  4a0d0c:	8ca30000 	lw	v1,0(a1)
  4a0d10:	8fc40028 	lw	a0,40(s8)
  4a0d14:	00000000 	nop
  4a0d18:	00041602 	srl	v0,a0,0x18
  4a0d1c:	00402021 	move	a0,v0
  4a0d20:	00601021 	move	v0,v1
  4a0d24:	a0440000 	sb	a0,0(v0)
  4a0d28:	24630001 	addiu	v1,v1,1
  4a0d2c:	aca30000 	sw	v1,0(a1)
  4a0d30:	27c5005c 	addiu	a1,s8,92
  4a0d34:	8ca30000 	lw	v1,0(a1)
  4a0d38:	8fc40028 	lw	a0,40(s8)
  4a0d3c:	00000000 	nop
  4a0d40:	00041402 	srl	v0,a0,0x10
  4a0d44:	00402021 	move	a0,v0
  4a0d48:	00601021 	move	v0,v1
  4a0d4c:	a0440000 	sb	a0,0(v0)
  4a0d50:	24630001 	addiu	v1,v1,1
  4a0d54:	aca30000 	sw	v1,0(a1)
  4a0d58:	27c5005c 	addiu	a1,s8,92
  4a0d5c:	8ca30000 	lw	v1,0(a1)
  4a0d60:	8fc40028 	lw	a0,40(s8)
  4a0d64:	00000000 	nop
  4a0d68:	00041202 	srl	v0,a0,0x8
  4a0d6c:	00402021 	move	a0,v0
  4a0d70:	00601021 	move	v0,v1
  4a0d74:	a0440000 	sb	a0,0(v0)
  4a0d78:	24630001 	addiu	v1,v1,1
  4a0d7c:	aca30000 	sw	v1,0(a1)
  4a0d80:	27c5005c 	addiu	a1,s8,92
  4a0d84:	8ca20000 	lw	v0,0(a1)
  4a0d88:	8fc30028 	lw	v1,40(s8)
  4a0d8c:	00000000 	nop
  4a0d90:	00602021 	move	a0,v1
  4a0d94:	00401821 	move	v1,v0
  4a0d98:	a0640000 	sb	a0,0(v1)
  4a0d9c:	24420001 	addiu	v0,v0,1
  4a0da0:	aca20000 	sw	v0,0(a1)
			l2n(tout1,out);
  4a0da4:	27c5005c 	addiu	a1,s8,92
  4a0da8:	8ca30000 	lw	v1,0(a1)
  4a0dac:	8fc4002c 	lw	a0,44(s8)
  4a0db0:	00000000 	nop
  4a0db4:	00041602 	srl	v0,a0,0x18
  4a0db8:	00402021 	move	a0,v0
  4a0dbc:	00601021 	move	v0,v1
  4a0dc0:	a0440000 	sb	a0,0(v0)
  4a0dc4:	24630001 	addiu	v1,v1,1
  4a0dc8:	aca30000 	sw	v1,0(a1)
  4a0dcc:	27c5005c 	addiu	a1,s8,92
  4a0dd0:	8ca30000 	lw	v1,0(a1)
  4a0dd4:	8fc4002c 	lw	a0,44(s8)
  4a0dd8:	00000000 	nop
  4a0ddc:	00041402 	srl	v0,a0,0x10
  4a0de0:	00402021 	move	a0,v0
  4a0de4:	00601021 	move	v0,v1
  4a0de8:	a0440000 	sb	a0,0(v0)
  4a0dec:	24630001 	addiu	v1,v1,1
  4a0df0:	aca30000 	sw	v1,0(a1)
  4a0df4:	27c5005c 	addiu	a1,s8,92
  4a0df8:	8ca30000 	lw	v1,0(a1)
  4a0dfc:	8fc4002c 	lw	a0,44(s8)
  4a0e00:	00000000 	nop
  4a0e04:	00041202 	srl	v0,a0,0x8
  4a0e08:	00402021 	move	a0,v0
  4a0e0c:	00601021 	move	v0,v1
  4a0e10:	a0440000 	sb	a0,0(v0)
  4a0e14:	24630001 	addiu	v1,v1,1
  4a0e18:	aca30000 	sw	v1,0(a1)
  4a0e1c:	27c5005c 	addiu	a1,s8,92
  4a0e20:	8ca20000 	lw	v0,0(a1)
  4a0e24:	8fc3002c 	lw	v1,44(s8)
  4a0e28:	00000000 	nop
  4a0e2c:	00602021 	move	a0,v1
  4a0e30:	00401821 	move	v1,v0
  4a0e34:	a0640000 	sb	a0,0(v1)
  4a0e38:	24420001 	addiu	v0,v0,1
  4a0e3c:	aca20000 	sw	v0,0(a1)
			}
		l2n(tout0,iv);
  4a0e40:	27c50068 	addiu	a1,s8,104
  4a0e44:	8ca30000 	lw	v1,0(a1)
  4a0e48:	8fc40028 	lw	a0,40(s8)
  4a0e4c:	00000000 	nop
  4a0e50:	00041602 	srl	v0,a0,0x18
  4a0e54:	00402021 	move	a0,v0
  4a0e58:	00601021 	move	v0,v1
  4a0e5c:	a0440000 	sb	a0,0(v0)
  4a0e60:	24630001 	addiu	v1,v1,1
  4a0e64:	aca30000 	sw	v1,0(a1)
  4a0e68:	27c50068 	addiu	a1,s8,104
  4a0e6c:	8ca30000 	lw	v1,0(a1)
  4a0e70:	8fc40028 	lw	a0,40(s8)
  4a0e74:	00000000 	nop
  4a0e78:	00041402 	srl	v0,a0,0x10
  4a0e7c:	00402021 	move	a0,v0
  4a0e80:	00601021 	move	v0,v1
  4a0e84:	a0440000 	sb	a0,0(v0)
  4a0e88:	24630001 	addiu	v1,v1,1
  4a0e8c:	aca30000 	sw	v1,0(a1)
  4a0e90:	27c50068 	addiu	a1,s8,104
  4a0e94:	8ca30000 	lw	v1,0(a1)
  4a0e98:	8fc40028 	lw	a0,40(s8)
  4a0e9c:	00000000 	nop
  4a0ea0:	00041202 	srl	v0,a0,0x8
  4a0ea4:	00402021 	move	a0,v0
  4a0ea8:	00601021 	move	v0,v1
  4a0eac:	a0440000 	sb	a0,0(v0)
  4a0eb0:	24630001 	addiu	v1,v1,1
  4a0eb4:	aca30000 	sw	v1,0(a1)
  4a0eb8:	27c50068 	addiu	a1,s8,104
  4a0ebc:	8ca20000 	lw	v0,0(a1)
  4a0ec0:	8fc30028 	lw	v1,40(s8)
  4a0ec4:	00000000 	nop
  4a0ec8:	00602021 	move	a0,v1
  4a0ecc:	00401821 	move	v1,v0
  4a0ed0:	a0640000 	sb	a0,0(v1)
  4a0ed4:	24420001 	addiu	v0,v0,1
  4a0ed8:	aca20000 	sw	v0,0(a1)
		l2n(tout1,iv);
  4a0edc:	27c50068 	addiu	a1,s8,104
  4a0ee0:	8ca30000 	lw	v1,0(a1)
  4a0ee4:	8fc4002c 	lw	a0,44(s8)
  4a0ee8:	00000000 	nop
  4a0eec:	00041602 	srl	v0,a0,0x18
  4a0ef0:	00402021 	move	a0,v0
  4a0ef4:	00601021 	move	v0,v1
  4a0ef8:	a0440000 	sb	a0,0(v0)
  4a0efc:	24630001 	addiu	v1,v1,1
  4a0f00:	aca30000 	sw	v1,0(a1)
  4a0f04:	27c50068 	addiu	a1,s8,104
  4a0f08:	8ca30000 	lw	v1,0(a1)
  4a0f0c:	8fc4002c 	lw	a0,44(s8)
  4a0f10:	00000000 	nop
  4a0f14:	00041402 	srl	v0,a0,0x10
  4a0f18:	00402021 	move	a0,v0
  4a0f1c:	00601021 	move	v0,v1
  4a0f20:	a0440000 	sb	a0,0(v0)
  4a0f24:	24630001 	addiu	v1,v1,1
  4a0f28:	aca30000 	sw	v1,0(a1)
  4a0f2c:	27c50068 	addiu	a1,s8,104
  4a0f30:	8ca30000 	lw	v1,0(a1)
  4a0f34:	8fc4002c 	lw	a0,44(s8)
  4a0f38:	00000000 	nop
  4a0f3c:	00041202 	srl	v0,a0,0x8
  4a0f40:	00402021 	move	a0,v0
  4a0f44:	00601021 	move	v0,v1
  4a0f48:	a0440000 	sb	a0,0(v0)
  4a0f4c:	24630001 	addiu	v1,v1,1
  4a0f50:	aca30000 	sw	v1,0(a1)
  4a0f54:	27c50068 	addiu	a1,s8,104
  4a0f58:	8ca20000 	lw	v0,0(a1)
  4a0f5c:	8fc3002c 	lw	v1,44(s8)
  4a0f60:	00000000 	nop
  4a0f64:	00602021 	move	a0,v1
  4a0f68:	00401821 	move	v1,v0
  4a0f6c:	a0640000 	sb	a0,0(v1)
  4a0f70:	24420001 	addiu	v0,v0,1
  4a0f74:	aca20000 	sw	v0,0(a1)
  4a0f78:	1000026d 	b	4a1930 <CAST_cbc_encrypt+0x13b8>
  4a0f7c:	00000000 	nop
		}
	else
		{
		n2l(iv,xor0);
  4a0f80:	27c40068 	addiu	a0,s8,104
  4a0f84:	8c820000 	lw	v0,0(a0)
  4a0f88:	00000000 	nop
  4a0f8c:	00401821 	move	v1,v0
  4a0f90:	90630000 	lbu	v1,0(v1)
  4a0f94:	00000000 	nop
  4a0f98:	afc30030 	sw	v1,48(s8)
  4a0f9c:	8fc50030 	lw	a1,48(s8)
  4a0fa0:	00000000 	nop
  4a0fa4:	00052e00 	sll	a1,a1,0x18
  4a0fa8:	afc50030 	sw	a1,48(s8)
  4a0fac:	24420001 	addiu	v0,v0,1
  4a0fb0:	ac820000 	sw	v0,0(a0)
  4a0fb4:	27c40068 	addiu	a0,s8,104
  4a0fb8:	8c830000 	lw	v1,0(a0)
  4a0fbc:	00000000 	nop
  4a0fc0:	00601021 	move	v0,v1
  4a0fc4:	90420000 	lbu	v0,0(v0)
  4a0fc8:	00000000 	nop
  4a0fcc:	00021400 	sll	v0,v0,0x10
  4a0fd0:	8fc50030 	lw	a1,48(s8)
  4a0fd4:	00000000 	nop
  4a0fd8:	00a22825 	or	a1,a1,v0
  4a0fdc:	afc50030 	sw	a1,48(s8)
  4a0fe0:	24630001 	addiu	v1,v1,1
  4a0fe4:	ac830000 	sw	v1,0(a0)
  4a0fe8:	27c40068 	addiu	a0,s8,104
  4a0fec:	8c830000 	lw	v1,0(a0)
  4a0ff0:	00000000 	nop
  4a0ff4:	00601021 	move	v0,v1
  4a0ff8:	90420000 	lbu	v0,0(v0)
  4a0ffc:	00000000 	nop
  4a1000:	00021200 	sll	v0,v0,0x8
  4a1004:	8fc50030 	lw	a1,48(s8)
  4a1008:	00000000 	nop
  4a100c:	00a22825 	or	a1,a1,v0
  4a1010:	afc50030 	sw	a1,48(s8)
  4a1014:	24630001 	addiu	v1,v1,1
  4a1018:	ac830000 	sw	v1,0(a0)
  4a101c:	27c40068 	addiu	a0,s8,104
  4a1020:	8c820000 	lw	v0,0(a0)
  4a1024:	00000000 	nop
  4a1028:	00401821 	move	v1,v0
  4a102c:	90630000 	lbu	v1,0(v1)
  4a1030:	8fc50030 	lw	a1,48(s8)
  4a1034:	00000000 	nop
  4a1038:	00a32825 	or	a1,a1,v1
  4a103c:	afc50030 	sw	a1,48(s8)
  4a1040:	24420001 	addiu	v0,v0,1
  4a1044:	ac820000 	sw	v0,0(a0)
		n2l(iv,xor1);
  4a1048:	27c40068 	addiu	a0,s8,104
  4a104c:	8c820000 	lw	v0,0(a0)
  4a1050:	00000000 	nop
  4a1054:	00401821 	move	v1,v0
  4a1058:	90630000 	lbu	v1,0(v1)
  4a105c:	00000000 	nop
  4a1060:	afc30034 	sw	v1,52(s8)
  4a1064:	8fc30034 	lw	v1,52(s8)
  4a1068:	00000000 	nop
  4a106c:	00031e00 	sll	v1,v1,0x18
  4a1070:	afc30034 	sw	v1,52(s8)
  4a1074:	24420001 	addiu	v0,v0,1
  4a1078:	ac820000 	sw	v0,0(a0)
  4a107c:	27c40068 	addiu	a0,s8,104
  4a1080:	8c830000 	lw	v1,0(a0)
  4a1084:	00000000 	nop
  4a1088:	00601021 	move	v0,v1
  4a108c:	90420000 	lbu	v0,0(v0)
  4a1090:	00000000 	nop
  4a1094:	00021400 	sll	v0,v0,0x10
  4a1098:	8fc50034 	lw	a1,52(s8)
  4a109c:	00000000 	nop
  4a10a0:	00a22825 	or	a1,a1,v0
  4a10a4:	afc50034 	sw	a1,52(s8)
  4a10a8:	24630001 	addiu	v1,v1,1
  4a10ac:	ac830000 	sw	v1,0(a0)
  4a10b0:	27c40068 	addiu	a0,s8,104
  4a10b4:	8c830000 	lw	v1,0(a0)
  4a10b8:	00000000 	nop
  4a10bc:	00601021 	move	v0,v1
  4a10c0:	90420000 	lbu	v0,0(v0)
  4a10c4:	00000000 	nop
  4a10c8:	00021200 	sll	v0,v0,0x8
  4a10cc:	8fc50034 	lw	a1,52(s8)
  4a10d0:	00000000 	nop
  4a10d4:	00a22825 	or	a1,a1,v0
  4a10d8:	afc50034 	sw	a1,52(s8)
  4a10dc:	24630001 	addiu	v1,v1,1
  4a10e0:	ac830000 	sw	v1,0(a0)
  4a10e4:	27c40068 	addiu	a0,s8,104
  4a10e8:	8c820000 	lw	v0,0(a0)
  4a10ec:	00000000 	nop
  4a10f0:	00401821 	move	v1,v0
  4a10f4:	90630000 	lbu	v1,0(v1)
  4a10f8:	8fc50034 	lw	a1,52(s8)
  4a10fc:	00000000 	nop
  4a1100:	00a32825 	or	a1,a1,v1
  4a1104:	afc50034 	sw	a1,52(s8)
  4a1108:	24420001 	addiu	v0,v0,1
  4a110c:	ac820000 	sw	v0,0(a0)
		iv-=8;
  4a1110:	8fc20068 	lw	v0,104(s8)
  4a1114:	00000000 	nop
  4a1118:	2442fff8 	addiu	v0,v0,-8
  4a111c:	afc20068 	sw	v0,104(s8)
		for (l-=8; l>=0; l-=8)
  4a1120:	8fc20038 	lw	v0,56(s8)
  4a1124:	00000000 	nop
  4a1128:	2442fff8 	addiu	v0,v0,-8
  4a112c:	afc20038 	sw	v0,56(s8)
  4a1130:	8fc30038 	lw	v1,56(s8)
  4a1134:	00000000 	nop
  4a1138:	04610003 	bgez	v1,4a1148 <CAST_cbc_encrypt+0xbd0>
  4a113c:	00000000 	nop
  4a1140:	100000cf 	b	4a1480 <CAST_cbc_encrypt+0xf08>
  4a1144:	00000000 	nop
			{
			n2l(in,tin0);
  4a1148:	8fc20058 	lw	v0,88(s8)
  4a114c:	00000000 	nop
  4a1150:	00401821 	move	v1,v0
  4a1154:	90630000 	lbu	v1,0(v1)
  4a1158:	00000000 	nop
  4a115c:	afc30020 	sw	v1,32(s8)
  4a1160:	8fc40020 	lw	a0,32(s8)
  4a1164:	00000000 	nop
  4a1168:	00042600 	sll	a0,a0,0x18
  4a116c:	afc40020 	sw	a0,32(s8)
  4a1170:	24420001 	addiu	v0,v0,1
  4a1174:	afc20058 	sw	v0,88(s8)
  4a1178:	8fc30058 	lw	v1,88(s8)
  4a117c:	00000000 	nop
  4a1180:	00601021 	move	v0,v1
  4a1184:	90420000 	lbu	v0,0(v0)
  4a1188:	00000000 	nop
  4a118c:	00021400 	sll	v0,v0,0x10
  4a1190:	8fc50020 	lw	a1,32(s8)
  4a1194:	00000000 	nop
  4a1198:	00a22825 	or	a1,a1,v0
  4a119c:	afc50020 	sw	a1,32(s8)
  4a11a0:	24630001 	addiu	v1,v1,1
  4a11a4:	afc30058 	sw	v1,88(s8)
  4a11a8:	8fc30058 	lw	v1,88(s8)
  4a11ac:	00000000 	nop
  4a11b0:	00601021 	move	v0,v1
  4a11b4:	90420000 	lbu	v0,0(v0)
  4a11b8:	00000000 	nop
  4a11bc:	00021200 	sll	v0,v0,0x8
  4a11c0:	8fc40020 	lw	a0,32(s8)
  4a11c4:	00000000 	nop
  4a11c8:	00822025 	or	a0,a0,v0
  4a11cc:	afc40020 	sw	a0,32(s8)
  4a11d0:	24630001 	addiu	v1,v1,1
  4a11d4:	afc30058 	sw	v1,88(s8)
  4a11d8:	8fc20058 	lw	v0,88(s8)
  4a11dc:	00000000 	nop
  4a11e0:	00401821 	move	v1,v0
  4a11e4:	90630000 	lbu	v1,0(v1)
  4a11e8:	8fc50020 	lw	a1,32(s8)
  4a11ec:	00000000 	nop
  4a11f0:	00a32825 	or	a1,a1,v1
  4a11f4:	afc50020 	sw	a1,32(s8)
  4a11f8:	24420001 	addiu	v0,v0,1
  4a11fc:	afc20058 	sw	v0,88(s8)
			n2l(in,tin1);
  4a1200:	8fc20058 	lw	v0,88(s8)
  4a1204:	00000000 	nop
  4a1208:	00401821 	move	v1,v0
  4a120c:	90630000 	lbu	v1,0(v1)
  4a1210:	00000000 	nop
  4a1214:	afc30024 	sw	v1,36(s8)
  4a1218:	8fc30024 	lw	v1,36(s8)
  4a121c:	00000000 	nop
  4a1220:	00031e00 	sll	v1,v1,0x18
  4a1224:	afc30024 	sw	v1,36(s8)
  4a1228:	24420001 	addiu	v0,v0,1
  4a122c:	afc20058 	sw	v0,88(s8)
  4a1230:	8fc30058 	lw	v1,88(s8)
  4a1234:	00000000 	nop
  4a1238:	00601021 	move	v0,v1
  4a123c:	90420000 	lbu	v0,0(v0)
  4a1240:	00000000 	nop
  4a1244:	00021400 	sll	v0,v0,0x10
  4a1248:	8fc40024 	lw	a0,36(s8)
  4a124c:	00000000 	nop
  4a1250:	00822025 	or	a0,a0,v0
  4a1254:	afc40024 	sw	a0,36(s8)
  4a1258:	24630001 	addiu	v1,v1,1
  4a125c:	afc30058 	sw	v1,88(s8)
  4a1260:	8fc30058 	lw	v1,88(s8)
  4a1264:	00000000 	nop
  4a1268:	00601021 	move	v0,v1
  4a126c:	90420000 	lbu	v0,0(v0)
  4a1270:	00000000 	nop
  4a1274:	00021200 	sll	v0,v0,0x8
  4a1278:	8fc50024 	lw	a1,36(s8)
  4a127c:	00000000 	nop
  4a1280:	00a22825 	or	a1,a1,v0
  4a1284:	afc50024 	sw	a1,36(s8)
  4a1288:	24630001 	addiu	v1,v1,1
  4a128c:	afc30058 	sw	v1,88(s8)
  4a1290:	8fc20058 	lw	v0,88(s8)
  4a1294:	00000000 	nop
  4a1298:	00401821 	move	v1,v0
  4a129c:	90630000 	lbu	v1,0(v1)
  4a12a0:	8fc40024 	lw	a0,36(s8)
  4a12a4:	00000000 	nop
  4a12a8:	00832025 	or	a0,a0,v1
  4a12ac:	afc40024 	sw	a0,36(s8)
  4a12b0:	24420001 	addiu	v0,v0,1
  4a12b4:	afc20058 	sw	v0,88(s8)
			tin[0]=tin0;
  4a12b8:	8fc50020 	lw	a1,32(s8)
  4a12bc:	00000000 	nop
  4a12c0:	afc50018 	sw	a1,24(s8)
			tin[1]=tin1;
  4a12c4:	8fc20024 	lw	v0,36(s8)
  4a12c8:	00000000 	nop
  4a12cc:	afc2001c 	sw	v0,28(s8)
			CAST_decrypt(tin,ks);
  4a12d0:	27c40018 	addiu	a0,s8,24
  4a12d4:	8fc50064 	lw	a1,100(s8)
  4a12d8:	8f998bc0 	lw	t9,-29760(gp)
  4a12dc:	00000000 	nop
  4a12e0:	0320f809 	jalr	t9
  4a12e4:	00000000 	nop
  4a12e8:	8fdc0010 	lw	gp,16(s8)
  4a12ec:	00000000 	nop
			tout0=tin[0]^xor0;
  4a12f0:	8fc20018 	lw	v0,24(s8)
  4a12f4:	8fc30030 	lw	v1,48(s8)
  4a12f8:	00000000 	nop
  4a12fc:	00621026 	xor	v0,v1,v0
  4a1300:	afc20028 	sw	v0,40(s8)
			tout1=tin[1]^xor1;
  4a1304:	8fc2001c 	lw	v0,28(s8)
  4a1308:	8fc40034 	lw	a0,52(s8)
  4a130c:	00000000 	nop
  4a1310:	00821026 	xor	v0,a0,v0
  4a1314:	afc2002c 	sw	v0,44(s8)
			l2n(tout0,out);
  4a1318:	27c5005c 	addiu	a1,s8,92
  4a131c:	8ca30000 	lw	v1,0(a1)
  4a1320:	8fc40028 	lw	a0,40(s8)
  4a1324:	00000000 	nop
  4a1328:	00041602 	srl	v0,a0,0x18
  4a132c:	00402021 	move	a0,v0
  4a1330:	00601021 	move	v0,v1
  4a1334:	a0440000 	sb	a0,0(v0)
  4a1338:	24630001 	addiu	v1,v1,1
  4a133c:	aca30000 	sw	v1,0(a1)
  4a1340:	27c5005c 	addiu	a1,s8,92
  4a1344:	8ca30000 	lw	v1,0(a1)
  4a1348:	8fc40028 	lw	a0,40(s8)
  4a134c:	00000000 	nop
  4a1350:	00041402 	srl	v0,a0,0x10
  4a1354:	00402021 	move	a0,v0
  4a1358:	00601021 	move	v0,v1
  4a135c:	a0440000 	sb	a0,0(v0)
  4a1360:	24630001 	addiu	v1,v1,1
  4a1364:	aca30000 	sw	v1,0(a1)
  4a1368:	27c5005c 	addiu	a1,s8,92
  4a136c:	8ca30000 	lw	v1,0(a1)
  4a1370:	8fc40028 	lw	a0,40(s8)
  4a1374:	00000000 	nop
  4a1378:	00041202 	srl	v0,a0,0x8
  4a137c:	00402021 	move	a0,v0
  4a1380:	00601021 	move	v0,v1
  4a1384:	a0440000 	sb	a0,0(v0)
  4a1388:	24630001 	addiu	v1,v1,1
  4a138c:	aca30000 	sw	v1,0(a1)
  4a1390:	27c5005c 	addiu	a1,s8,92
  4a1394:	8ca20000 	lw	v0,0(a1)
  4a1398:	8fc30028 	lw	v1,40(s8)
  4a139c:	00000000 	nop
  4a13a0:	00602021 	move	a0,v1
  4a13a4:	00401821 	move	v1,v0
  4a13a8:	a0640000 	sb	a0,0(v1)
  4a13ac:	24420001 	addiu	v0,v0,1
  4a13b0:	aca20000 	sw	v0,0(a1)
			l2n(tout1,out);
  4a13b4:	27c5005c 	addiu	a1,s8,92
  4a13b8:	8ca30000 	lw	v1,0(a1)
  4a13bc:	8fc4002c 	lw	a0,44(s8)
  4a13c0:	00000000 	nop
  4a13c4:	00041602 	srl	v0,a0,0x18
  4a13c8:	00402021 	move	a0,v0
  4a13cc:	00601021 	move	v0,v1
  4a13d0:	a0440000 	sb	a0,0(v0)
  4a13d4:	24630001 	addiu	v1,v1,1
  4a13d8:	aca30000 	sw	v1,0(a1)
  4a13dc:	27c5005c 	addiu	a1,s8,92
  4a13e0:	8ca30000 	lw	v1,0(a1)
  4a13e4:	8fc4002c 	lw	a0,44(s8)
  4a13e8:	00000000 	nop
  4a13ec:	00041402 	srl	v0,a0,0x10
  4a13f0:	00402021 	move	a0,v0
  4a13f4:	00601021 	move	v0,v1
  4a13f8:	a0440000 	sb	a0,0(v0)
  4a13fc:	24630001 	addiu	v1,v1,1
  4a1400:	aca30000 	sw	v1,0(a1)
  4a1404:	27c5005c 	addiu	a1,s8,92
  4a1408:	8ca30000 	lw	v1,0(a1)
  4a140c:	8fc4002c 	lw	a0,44(s8)
  4a1410:	00000000 	nop
  4a1414:	00041202 	srl	v0,a0,0x8
  4a1418:	00402021 	move	a0,v0
  4a141c:	00601021 	move	v0,v1
  4a1420:	a0440000 	sb	a0,0(v0)
  4a1424:	24630001 	addiu	v1,v1,1
  4a1428:	aca30000 	sw	v1,0(a1)
  4a142c:	27c5005c 	addiu	a1,s8,92
  4a1430:	8ca20000 	lw	v0,0(a1)
  4a1434:	8fc3002c 	lw	v1,44(s8)
  4a1438:	00000000 	nop
  4a143c:	00602021 	move	a0,v1
  4a1440:	00401821 	move	v1,v0
  4a1444:	a0640000 	sb	a0,0(v1)
  4a1448:	24420001 	addiu	v0,v0,1
  4a144c:	aca20000 	sw	v0,0(a1)
			xor0=tin0;
  4a1450:	8fc40020 	lw	a0,32(s8)
  4a1454:	00000000 	nop
  4a1458:	afc40030 	sw	a0,48(s8)
			xor1=tin1;
  4a145c:	8fc50024 	lw	a1,36(s8)
  4a1460:	00000000 	nop
  4a1464:	afc50034 	sw	a1,52(s8)
  4a1468:	8fc20038 	lw	v0,56(s8)
  4a146c:	00000000 	nop
  4a1470:	2442fff8 	addiu	v0,v0,-8
  4a1474:	afc20038 	sw	v0,56(s8)
  4a1478:	1000ff2d 	b	4a1130 <CAST_cbc_encrypt+0xbb8>
  4a147c:	00000000 	nop
			}
		if (l != -8)
  4a1480:	2402fff8 	li	v0,-8
  4a1484:	8fc30038 	lw	v1,56(s8)
  4a1488:	00000000 	nop
  4a148c:	106200da 	beq	v1,v0,4a17f8 <CAST_cbc_encrypt+0x1280>
  4a1490:	00000000 	nop
			{
			n2l(in,tin0);
  4a1494:	8fc20058 	lw	v0,88(s8)
  4a1498:	00000000 	nop
  4a149c:	00401821 	move	v1,v0
  4a14a0:	90630000 	lbu	v1,0(v1)
  4a14a4:	00000000 	nop
  4a14a8:	afc30020 	sw	v1,32(s8)
  4a14ac:	8fc40020 	lw	a0,32(s8)
  4a14b0:	00000000 	nop
  4a14b4:	00042600 	sll	a0,a0,0x18
  4a14b8:	afc40020 	sw	a0,32(s8)
  4a14bc:	24420001 	addiu	v0,v0,1
  4a14c0:	afc20058 	sw	v0,88(s8)
  4a14c4:	8fc30058 	lw	v1,88(s8)
  4a14c8:	00000000 	nop
  4a14cc:	00601021 	move	v0,v1
  4a14d0:	90420000 	lbu	v0,0(v0)
  4a14d4:	00000000 	nop
  4a14d8:	00021400 	sll	v0,v0,0x10
  4a14dc:	8fc50020 	lw	a1,32(s8)
  4a14e0:	00000000 	nop
  4a14e4:	00a22825 	or	a1,a1,v0
  4a14e8:	afc50020 	sw	a1,32(s8)
  4a14ec:	24630001 	addiu	v1,v1,1
  4a14f0:	afc30058 	sw	v1,88(s8)
  4a14f4:	8fc30058 	lw	v1,88(s8)
  4a14f8:	00000000 	nop
  4a14fc:	00601021 	move	v0,v1
  4a1500:	90420000 	lbu	v0,0(v0)
  4a1504:	00000000 	nop
  4a1508:	00021200 	sll	v0,v0,0x8
  4a150c:	8fc40020 	lw	a0,32(s8)
  4a1510:	00000000 	nop
  4a1514:	00822025 	or	a0,a0,v0
  4a1518:	afc40020 	sw	a0,32(s8)
  4a151c:	24630001 	addiu	v1,v1,1
  4a1520:	afc30058 	sw	v1,88(s8)
  4a1524:	8fc20058 	lw	v0,88(s8)
  4a1528:	00000000 	nop
  4a152c:	00401821 	move	v1,v0
  4a1530:	90630000 	lbu	v1,0(v1)
  4a1534:	8fc50020 	lw	a1,32(s8)
  4a1538:	00000000 	nop
  4a153c:	00a32825 	or	a1,a1,v1
  4a1540:	afc50020 	sw	a1,32(s8)
  4a1544:	24420001 	addiu	v0,v0,1
  4a1548:	afc20058 	sw	v0,88(s8)
			n2l(in,tin1);
  4a154c:	8fc20058 	lw	v0,88(s8)
  4a1550:	00000000 	nop
  4a1554:	00401821 	move	v1,v0
  4a1558:	90630000 	lbu	v1,0(v1)
  4a155c:	00000000 	nop
  4a1560:	afc30024 	sw	v1,36(s8)
  4a1564:	8fc30024 	lw	v1,36(s8)
  4a1568:	00000000 	nop
  4a156c:	00031e00 	sll	v1,v1,0x18
  4a1570:	afc30024 	sw	v1,36(s8)
  4a1574:	24420001 	addiu	v0,v0,1
  4a1578:	afc20058 	sw	v0,88(s8)
  4a157c:	8fc30058 	lw	v1,88(s8)
  4a1580:	00000000 	nop
  4a1584:	00601021 	move	v0,v1
  4a1588:	90420000 	lbu	v0,0(v0)
  4a158c:	00000000 	nop
  4a1590:	00021400 	sll	v0,v0,0x10
  4a1594:	8fc40024 	lw	a0,36(s8)
  4a1598:	00000000 	nop
  4a159c:	00822025 	or	a0,a0,v0
  4a15a0:	afc40024 	sw	a0,36(s8)
  4a15a4:	24630001 	addiu	v1,v1,1
  4a15a8:	afc30058 	sw	v1,88(s8)
  4a15ac:	8fc30058 	lw	v1,88(s8)
  4a15b0:	00000000 	nop
  4a15b4:	00601021 	move	v0,v1
  4a15b8:	90420000 	lbu	v0,0(v0)
  4a15bc:	00000000 	nop
  4a15c0:	00021200 	sll	v0,v0,0x8
  4a15c4:	8fc50024 	lw	a1,36(s8)
  4a15c8:	00000000 	nop
  4a15cc:	00a22825 	or	a1,a1,v0
  4a15d0:	afc50024 	sw	a1,36(s8)
  4a15d4:	24630001 	addiu	v1,v1,1
  4a15d8:	afc30058 	sw	v1,88(s8)
  4a15dc:	8fc20058 	lw	v0,88(s8)
  4a15e0:	00000000 	nop
  4a15e4:	00401821 	move	v1,v0
  4a15e8:	90630000 	lbu	v1,0(v1)
  4a15ec:	8fc40024 	lw	a0,36(s8)
  4a15f0:	00000000 	nop
  4a15f4:	00832025 	or	a0,a0,v1
  4a15f8:	afc40024 	sw	a0,36(s8)
  4a15fc:	24420001 	addiu	v0,v0,1
  4a1600:	afc20058 	sw	v0,88(s8)
			tin[0]=tin0;
  4a1604:	8fc50020 	lw	a1,32(s8)
  4a1608:	00000000 	nop
  4a160c:	afc50018 	sw	a1,24(s8)
			tin[1]=tin1;
  4a1610:	8fc20024 	lw	v0,36(s8)
  4a1614:	00000000 	nop
  4a1618:	afc2001c 	sw	v0,28(s8)
			CAST_decrypt(tin,ks);
  4a161c:	27c40018 	addiu	a0,s8,24
  4a1620:	8fc50064 	lw	a1,100(s8)
  4a1624:	8f998bc0 	lw	t9,-29760(gp)
  4a1628:	00000000 	nop
  4a162c:	0320f809 	jalr	t9
  4a1630:	00000000 	nop
  4a1634:	8fdc0010 	lw	gp,16(s8)
  4a1638:	00000000 	nop
			tout0=tin[0]^xor0;
  4a163c:	8fc20018 	lw	v0,24(s8)
  4a1640:	8fc30030 	lw	v1,48(s8)
  4a1644:	00000000 	nop
  4a1648:	00621026 	xor	v0,v1,v0
  4a164c:	afc20028 	sw	v0,40(s8)
			tout1=tin[1]^xor1;
  4a1650:	8fc2001c 	lw	v0,28(s8)
  4a1654:	8fc40034 	lw	a0,52(s8)
  4a1658:	00000000 	nop
  4a165c:	00821026 	xor	v0,a0,v0
  4a1660:	afc2002c 	sw	v0,44(s8)
			l2nn(tout0,tout1,out,l+8);
  4a1664:	8fc2005c 	lw	v0,92(s8)
  4a1668:	8fc50038 	lw	a1,56(s8)
  4a166c:	00000000 	nop
  4a1670:	00a21021 	addu	v0,a1,v0
  4a1674:	24420008 	addiu	v0,v0,8
  4a1678:	afc2005c 	sw	v0,92(s8)
  4a167c:	8fc20038 	lw	v0,56(s8)
  4a1680:	00000000 	nop
  4a1684:	24420007 	addiu	v0,v0,7
  4a1688:	afc20040 	sw	v0,64(s8)
  4a168c:	8fc30040 	lw	v1,64(s8)
  4a1690:	00000000 	nop
  4a1694:	2c620008 	sltiu	v0,v1,8
  4a1698:	10400051 	beqz	v0,4a17e0 <CAST_cbc_encrypt+0x1268>
  4a169c:	00000000 	nop
  4a16a0:	8fc20040 	lw	v0,64(s8)
  4a16a4:	00000000 	nop
  4a16a8:	00021080 	sll	v0,v0,0x2
  4a16ac:	8f81804c 	lw	at,-32692(gp)
  4a16b0:	00000000 	nop
  4a16b4:	24215450 	addiu	at,at,21584
  4a16b8:	00221021 	addu	v0,at,v0
  4a16bc:	8c420000 	lw	v0,0(v0)
  4a16c0:	00000000 	nop
  4a16c4:	005c1021 	addu	v0,v0,gp
  4a16c8:	00400008 	jr	v0
  4a16cc:	00000000 	nop
  4a16d0:	8fc2005c 	lw	v0,92(s8)
  4a16d4:	00000000 	nop
  4a16d8:	2442ffff 	addiu	v0,v0,-1
  4a16dc:	afc2005c 	sw	v0,92(s8)
  4a16e0:	8fc4002c 	lw	a0,44(s8)
  4a16e4:	00000000 	nop
  4a16e8:	a0440000 	sb	a0,0(v0)
  4a16ec:	8fc2005c 	lw	v0,92(s8)
  4a16f0:	00000000 	nop
  4a16f4:	2442ffff 	addiu	v0,v0,-1
  4a16f8:	00401821 	move	v1,v0
  4a16fc:	afc3005c 	sw	v1,92(s8)
  4a1700:	8fc5002c 	lw	a1,44(s8)
  4a1704:	00000000 	nop
  4a1708:	00051202 	srl	v0,a1,0x8
  4a170c:	a0620000 	sb	v0,0(v1)
  4a1710:	8fc2005c 	lw	v0,92(s8)
  4a1714:	00000000 	nop
  4a1718:	2442ffff 	addiu	v0,v0,-1
  4a171c:	00401821 	move	v1,v0
  4a1720:	afc3005c 	sw	v1,92(s8)
  4a1724:	8fc4002c 	lw	a0,44(s8)
  4a1728:	00000000 	nop
  4a172c:	00041402 	srl	v0,a0,0x10
  4a1730:	a0620000 	sb	v0,0(v1)
  4a1734:	8fc2005c 	lw	v0,92(s8)
  4a1738:	00000000 	nop
  4a173c:	2442ffff 	addiu	v0,v0,-1
  4a1740:	00401821 	move	v1,v0
  4a1744:	afc3005c 	sw	v1,92(s8)
  4a1748:	8fc5002c 	lw	a1,44(s8)
  4a174c:	00000000 	nop
  4a1750:	00051602 	srl	v0,a1,0x18
  4a1754:	a0620000 	sb	v0,0(v1)
  4a1758:	8fc2005c 	lw	v0,92(s8)
  4a175c:	00000000 	nop
  4a1760:	2442ffff 	addiu	v0,v0,-1
  4a1764:	afc2005c 	sw	v0,92(s8)
  4a1768:	8fc30028 	lw	v1,40(s8)
  4a176c:	00000000 	nop
  4a1770:	a0430000 	sb	v1,0(v0)
  4a1774:	8fc2005c 	lw	v0,92(s8)
  4a1778:	00000000 	nop
  4a177c:	2442ffff 	addiu	v0,v0,-1
  4a1780:	00401821 	move	v1,v0
  4a1784:	afc3005c 	sw	v1,92(s8)
  4a1788:	8fc40028 	lw	a0,40(s8)
  4a178c:	00000000 	nop
  4a1790:	00041202 	srl	v0,a0,0x8
  4a1794:	a0620000 	sb	v0,0(v1)
  4a1798:	8fc2005c 	lw	v0,92(s8)
  4a179c:	00000000 	nop
  4a17a0:	2442ffff 	addiu	v0,v0,-1
  4a17a4:	00401821 	move	v1,v0
  4a17a8:	afc3005c 	sw	v1,92(s8)
  4a17ac:	8fc50028 	lw	a1,40(s8)
  4a17b0:	00000000 	nop
  4a17b4:	00051402 	srl	v0,a1,0x10
  4a17b8:	a0620000 	sb	v0,0(v1)
  4a17bc:	8fc2005c 	lw	v0,92(s8)
  4a17c0:	00000000 	nop
  4a17c4:	2442ffff 	addiu	v0,v0,-1
  4a17c8:	00401821 	move	v1,v0
  4a17cc:	afc3005c 	sw	v1,92(s8)
  4a17d0:	8fc40028 	lw	a0,40(s8)
  4a17d4:	00000000 	nop
  4a17d8:	00041602 	srl	v0,a0,0x18
  4a17dc:	a0620000 	sb	v0,0(v1)
			xor0=tin0;
  4a17e0:	8fc50020 	lw	a1,32(s8)
  4a17e4:	00000000 	nop
  4a17e8:	afc50030 	sw	a1,48(s8)
			xor1=tin1;
  4a17ec:	8fc20024 	lw	v0,36(s8)
  4a17f0:	00000000 	nop
  4a17f4:	afc20034 	sw	v0,52(s8)
			}
		l2n(xor0,iv);
  4a17f8:	27c50068 	addiu	a1,s8,104
  4a17fc:	8ca30000 	lw	v1,0(a1)
  4a1800:	8fc40030 	lw	a0,48(s8)
  4a1804:	00000000 	nop
  4a1808:	00041602 	srl	v0,a0,0x18
  4a180c:	00402021 	move	a0,v0
  4a1810:	00601021 	move	v0,v1
  4a1814:	a0440000 	sb	a0,0(v0)
  4a1818:	24630001 	addiu	v1,v1,1
  4a181c:	aca30000 	sw	v1,0(a1)
  4a1820:	27c50068 	addiu	a1,s8,104
  4a1824:	8ca30000 	lw	v1,0(a1)
  4a1828:	8fc40030 	lw	a0,48(s8)
  4a182c:	00000000 	nop
  4a1830:	00041402 	srl	v0,a0,0x10
  4a1834:	00402021 	move	a0,v0
  4a1838:	00601021 	move	v0,v1
  4a183c:	a0440000 	sb	a0,0(v0)
  4a1840:	24630001 	addiu	v1,v1,1
  4a1844:	aca30000 	sw	v1,0(a1)
  4a1848:	27c50068 	addiu	a1,s8,104
  4a184c:	8ca30000 	lw	v1,0(a1)
  4a1850:	8fc40030 	lw	a0,48(s8)
  4a1854:	00000000 	nop
  4a1858:	00041202 	srl	v0,a0,0x8
  4a185c:	00402021 	move	a0,v0
  4a1860:	00601021 	move	v0,v1
  4a1864:	a0440000 	sb	a0,0(v0)
  4a1868:	24630001 	addiu	v1,v1,1
  4a186c:	aca30000 	sw	v1,0(a1)
  4a1870:	27c50068 	addiu	a1,s8,104
  4a1874:	8ca20000 	lw	v0,0(a1)
  4a1878:	8fc30030 	lw	v1,48(s8)
  4a187c:	00000000 	nop
  4a1880:	00602021 	move	a0,v1
  4a1884:	00401821 	move	v1,v0
  4a1888:	a0640000 	sb	a0,0(v1)
  4a188c:	24420001 	addiu	v0,v0,1
  4a1890:	aca20000 	sw	v0,0(a1)
		l2n(xor1,iv);
  4a1894:	27c50068 	addiu	a1,s8,104
  4a1898:	8ca30000 	lw	v1,0(a1)
  4a189c:	8fc40034 	lw	a0,52(s8)
  4a18a0:	00000000 	nop
  4a18a4:	00041602 	srl	v0,a0,0x18
  4a18a8:	00402021 	move	a0,v0
  4a18ac:	00601021 	move	v0,v1
  4a18b0:	a0440000 	sb	a0,0(v0)
  4a18b4:	24630001 	addiu	v1,v1,1
  4a18b8:	aca30000 	sw	v1,0(a1)
  4a18bc:	27c50068 	addiu	a1,s8,104
  4a18c0:	8ca30000 	lw	v1,0(a1)
  4a18c4:	8fc40034 	lw	a0,52(s8)
  4a18c8:	00000000 	nop
  4a18cc:	00041402 	srl	v0,a0,0x10
  4a18d0:	00402021 	move	a0,v0
  4a18d4:	00601021 	move	v0,v1
  4a18d8:	a0440000 	sb	a0,0(v0)
  4a18dc:	24630001 	addiu	v1,v1,1
  4a18e0:	aca30000 	sw	v1,0(a1)
  4a18e4:	27c50068 	addiu	a1,s8,104
  4a18e8:	8ca30000 	lw	v1,0(a1)
  4a18ec:	8fc40034 	lw	a0,52(s8)
  4a18f0:	00000000 	nop
  4a18f4:	00041202 	srl	v0,a0,0x8
  4a18f8:	00402021 	move	a0,v0
  4a18fc:	00601021 	move	v0,v1
  4a1900:	a0440000 	sb	a0,0(v0)
  4a1904:	24630001 	addiu	v1,v1,1
  4a1908:	aca30000 	sw	v1,0(a1)
  4a190c:	27c50068 	addiu	a1,s8,104
  4a1910:	8ca20000 	lw	v0,0(a1)
  4a1914:	8fc30034 	lw	v1,52(s8)
  4a1918:	00000000 	nop
  4a191c:	00602021 	move	a0,v1
  4a1920:	00401821 	move	v1,v0
  4a1924:	a0640000 	sb	a0,0(v1)
  4a1928:	24420001 	addiu	v0,v0,1
  4a192c:	aca20000 	sw	v0,0(a1)
		}
	tin0=tin1=tout0=tout1=xor0=xor1=0;
	tin[0]=tin[1]=0;
  4a1930:	afc0001c 	sw	zero,28(s8)
  4a1934:	afc00018 	sw	zero,24(s8)
	}
  4a1938:	03c0e821 	move	sp,s8
  4a193c:	8fbf0050 	lw	ra,80(sp)
  4a1940:	8fbe004c 	lw	s8,76(sp)
  4a1944:	27bd0058 	addiu	sp,sp,88
  4a1948:	03e00008 	jr	ra
  4a194c:	00000000 	nop

004a1950 <serpent_set_key>:
  4a1950:	3c1c0fb7 	lui	gp,0xfb7
  4a1954:	279cb020 	addiu	gp,gp,-20448
  4a1958:	0399e021 	addu	gp,gp,t9
  4a195c:	27bdffb8 	addiu	sp,sp,-72
  4a1960:	afbc0000 	sw	gp,0(sp)
  4a1964:	afbe0044 	sw	s8,68(sp)
  4a1968:	afbc0040 	sw	gp,64(sp)
  4a196c:	03a0f021 	move	s8,sp
  4a1970:	afc40048 	sw	a0,72(s8)
  4a1974:	afc5004c 	sw	a1,76(s8)
  4a1978:	afc60050 	sw	a2,80(s8)

/* initialise the key schedule from the user supplied key   */

int serpent_set_key(serpent_context *cx, const unsigned char *key, int key_len)
{   const u32 *in_key = (const u32 *)key;
  4a197c:	8fc2004c 	lw	v0,76(s8)
  4a1980:	00000000 	nop
  4a1984:	afc20008 	sw	v0,8(s8)
    /* l_key - storage for the key schedule */
    u32 *l_key   = cx->keyinfo;
  4a1988:	8fc20048 	lw	v0,72(s8)
  4a198c:	00000000 	nop
  4a1990:	afc2000c 	sw	v0,12(s8)
    u32  i,lk,r0,r1,r2,r3,r4;

    if (key_len != 16 && key_len != 24 && key_len != 32)
  4a1994:	8fc30050 	lw	v1,80(s8)
  4a1998:	24020010 	li	v0,16
  4a199c:	1062000c 	beq	v1,v0,4a19d0 <serpent_set_key+0x80>
  4a19a0:	00000000 	nop
  4a19a4:	8fc30050 	lw	v1,80(s8)
  4a19a8:	24020018 	li	v0,24
  4a19ac:	10620008 	beq	v1,v0,4a19d0 <serpent_set_key+0x80>
  4a19b0:	00000000 	nop
  4a19b4:	8fc30050 	lw	v1,80(s8)
  4a19b8:	24020020 	li	v0,32
  4a19bc:	10620004 	beq	v1,v0,4a19d0 <serpent_set_key+0x80>
  4a19c0:	00000000 	nop
      return -1; /* unsupported key length */
  4a19c4:	2402ffff 	li	v0,-1
  4a19c8:	100012e1 	b	4a6550 <serpent_set_key+0x4c00>
  4a19cc:	00000000 	nop
    
    key_len *= 8;
  4a19d0:	8fc20050 	lw	v0,80(s8)
  4a19d4:	00000000 	nop
  4a19d8:	000210c0 	sll	v0,v0,0x3
  4a19dc:	afc20050 	sw	v0,80(s8)

    i = 0; lk = (key_len + 31) / 32;
  4a19e0:	afc00010 	sw	zero,16(s8)
  4a19e4:	8fc20050 	lw	v0,80(s8)
  4a19e8:	00000000 	nop
  4a19ec:	2442001f 	addiu	v0,v0,31
  4a19f0:	afc2002c 	sw	v0,44(s8)
  4a19f4:	8fc2002c 	lw	v0,44(s8)
  4a19f8:	00000000 	nop
  4a19fc:	04410005 	bgez	v0,4a1a14 <serpent_set_key+0xc4>
  4a1a00:	00000000 	nop
  4a1a04:	8fc3002c 	lw	v1,44(s8)
  4a1a08:	00000000 	nop
  4a1a0c:	2463001f 	addiu	v1,v1,31
  4a1a10:	afc3002c 	sw	v1,44(s8)
  4a1a14:	8fc4002c 	lw	a0,44(s8)
  4a1a18:	00000000 	nop
  4a1a1c:	00041143 	sra	v0,a0,0x5
  4a1a20:	afc20014 	sw	v0,20(s8)
    
    while(i < lk)
  4a1a24:	8fc20010 	lw	v0,16(s8)
  4a1a28:	8fc30014 	lw	v1,20(s8)
  4a1a2c:	00000000 	nop
  4a1a30:	0043102b 	sltu	v0,v0,v1
  4a1a34:	14400003 	bnez	v0,4a1a44 <serpent_set_key+0xf4>
  4a1a38:	00000000 	nop
  4a1a3c:	10000019 	b	4a1aa4 <serpent_set_key+0x154>
  4a1a40:	00000000 	nop
    {
#ifdef  BLOCK_SWAP
        l_key[i] = io_swap(in_key[lk - i - 1]);
  4a1a44:	8fc20010 	lw	v0,16(s8)
  4a1a48:	00000000 	nop
  4a1a4c:	00021880 	sll	v1,v0,0x2
  4a1a50:	8fc2000c 	lw	v0,12(s8)
  4a1a54:	00000000 	nop
  4a1a58:	00622021 	addu	a0,v1,v0
  4a1a5c:	8fc30014 	lw	v1,20(s8)
  4a1a60:	8fc20010 	lw	v0,16(s8)
  4a1a64:	00000000 	nop
  4a1a68:	00621023 	subu	v0,v1,v0
  4a1a6c:	00021880 	sll	v1,v0,0x2
  4a1a70:	8fc20008 	lw	v0,8(s8)
  4a1a74:	00000000 	nop
  4a1a78:	00621021 	addu	v0,v1,v0
  4a1a7c:	2442fffc 	addiu	v0,v0,-4
  4a1a80:	8c420000 	lw	v0,0(v0)
  4a1a84:	00000000 	nop
  4a1a88:	ac820000 	sw	v0,0(a0)
#else
        l_key[i] = in_key[i];
#endif  
        i++;
  4a1a8c:	8fc20010 	lw	v0,16(s8)
  4a1a90:	00000000 	nop
  4a1a94:	24420001 	addiu	v0,v0,1
  4a1a98:	afc20010 	sw	v0,16(s8)
  4a1a9c:	1000ffe1 	b	4a1a24 <serpent_set_key+0xd4>
  4a1aa0:	00000000 	nop
    }

    if (key_len < 256)
  4a1aa4:	8fc20050 	lw	v0,80(s8)
  4a1aa8:	00000000 	nop
  4a1aac:	28420100 	slti	v0,v0,256
  4a1ab0:	10400060 	beqz	v0,4a1c34 <serpent_set_key+0x2e4>
  4a1ab4:	00000000 	nop
    {
        while(i < 8)
  4a1ab8:	8fc20010 	lw	v0,16(s8)
  4a1abc:	00000000 	nop
  4a1ac0:	2c420008 	sltiu	v0,v0,8
  4a1ac4:	14400003 	bnez	v0,4a1ad4 <serpent_set_key+0x184>
  4a1ac8:	00000000 	nop
  4a1acc:	1000000e 	b	4a1b08 <serpent_set_key+0x1b8>
  4a1ad0:	00000000 	nop

            l_key[i++] = 0;
  4a1ad4:	27c50010 	addiu	a1,s8,16
  4a1ad8:	8ca30000 	lw	v1,0(a1)
  4a1adc:	00000000 	nop
  4a1ae0:	00601021 	move	v0,v1
  4a1ae4:	00022080 	sll	a0,v0,0x2
  4a1ae8:	8fc2000c 	lw	v0,12(s8)
  4a1aec:	00000000 	nop
  4a1af0:	00821021 	addu	v0,a0,v0
  4a1af4:	ac400000 	sw	zero,0(v0)
  4a1af8:	24630001 	addiu	v1,v1,1
  4a1afc:	aca30000 	sw	v1,0(a1)
  4a1b00:	1000ffed 	b	4a1ab8 <serpent_set_key+0x168>
  4a1b04:	00000000 	nop

        i = key_len / 32; lk = 1 << key_len % 32; 
  4a1b08:	8fc20050 	lw	v0,80(s8)
  4a1b0c:	00000000 	nop
  4a1b10:	afc20030 	sw	v0,48(s8)
  4a1b14:	8fc30030 	lw	v1,48(s8)
  4a1b18:	00000000 	nop
  4a1b1c:	04610005 	bgez	v1,4a1b34 <serpent_set_key+0x1e4>
  4a1b20:	00000000 	nop
  4a1b24:	8fc40030 	lw	a0,48(s8)
  4a1b28:	00000000 	nop
  4a1b2c:	2484001f 	addiu	a0,a0,31
  4a1b30:	afc40030 	sw	a0,48(s8)
  4a1b34:	8fc30030 	lw	v1,48(s8)
  4a1b38:	00000000 	nop
  4a1b3c:	00031143 	sra	v0,v1,0x5
  4a1b40:	afc20010 	sw	v0,16(s8)
  4a1b44:	8fc40050 	lw	a0,80(s8)
  4a1b48:	00000000 	nop
  4a1b4c:	afc40034 	sw	a0,52(s8)
  4a1b50:	8fc20034 	lw	v0,52(s8)
  4a1b54:	00000000 	nop
  4a1b58:	afc20038 	sw	v0,56(s8)
  4a1b5c:	8fc30038 	lw	v1,56(s8)
  4a1b60:	00000000 	nop
  4a1b64:	04610005 	bgez	v1,4a1b7c <serpent_set_key+0x22c>
  4a1b68:	00000000 	nop
  4a1b6c:	8fc40038 	lw	a0,56(s8)
  4a1b70:	00000000 	nop
  4a1b74:	2484001f 	addiu	a0,a0,31
  4a1b78:	afc40038 	sw	a0,56(s8)
  4a1b7c:	8fc30038 	lw	v1,56(s8)
  4a1b80:	00000000 	nop
  4a1b84:	00031143 	sra	v0,v1,0x5
  4a1b88:	00021140 	sll	v0,v0,0x5
  4a1b8c:	8fc40034 	lw	a0,52(s8)
  4a1b90:	00000000 	nop
  4a1b94:	00821823 	subu	v1,a0,v0
  4a1b98:	24020001 	li	v0,1
  4a1b9c:	00621004 	sllv	v0,v0,v1
  4a1ba0:	afc20014 	sw	v0,20(s8)

        l_key[i] &= lk - 1;
  4a1ba4:	8fc20010 	lw	v0,16(s8)
  4a1ba8:	00000000 	nop
  4a1bac:	00021880 	sll	v1,v0,0x2
  4a1bb0:	8fc2000c 	lw	v0,12(s8)
  4a1bb4:	00000000 	nop
  4a1bb8:	00622821 	addu	a1,v1,v0
  4a1bbc:	8fc20010 	lw	v0,16(s8)
  4a1bc0:	00000000 	nop
  4a1bc4:	00021880 	sll	v1,v0,0x2
  4a1bc8:	8fc2000c 	lw	v0,12(s8)
  4a1bcc:	00000000 	nop
  4a1bd0:	00622021 	addu	a0,v1,v0
  4a1bd4:	8fc20014 	lw	v0,20(s8)
  4a1bd8:	00000000 	nop
  4a1bdc:	2443ffff 	addiu	v1,v0,-1
  4a1be0:	8c820000 	lw	v0,0(a0)
  4a1be4:	00000000 	nop
  4a1be8:	00431024 	and	v0,v0,v1
  4a1bec:	aca20000 	sw	v0,0(a1)
        l_key[i] |= lk;
  4a1bf0:	8fc20010 	lw	v0,16(s8)
  4a1bf4:	00000000 	nop
  4a1bf8:	00021880 	sll	v1,v0,0x2
  4a1bfc:	8fc2000c 	lw	v0,12(s8)
  4a1c00:	00000000 	nop
  4a1c04:	00622021 	addu	a0,v1,v0
  4a1c08:	8fc20010 	lw	v0,16(s8)
  4a1c0c:	00000000 	nop
  4a1c10:	00021880 	sll	v1,v0,0x2
  4a1c14:	8fc2000c 	lw	v0,12(s8)
  4a1c18:	00000000 	nop
  4a1c1c:	00621021 	addu	v0,v1,v0
  4a1c20:	8c430000 	lw	v1,0(v0)
  4a1c24:	8fc20014 	lw	v0,20(s8)
  4a1c28:	00000000 	nop
  4a1c2c:	00621025 	or	v0,v1,v0
  4a1c30:	ac820000 	sw	v0,0(a0)
    }

    for(i = 0; i < 132; ++i)
  4a1c34:	afc00010 	sw	zero,16(s8)
  4a1c38:	8fc20010 	lw	v0,16(s8)
  4a1c3c:	00000000 	nop
  4a1c40:	2c420084 	sltiu	v0,v0,132
  4a1c44:	14400003 	bnez	v0,4a1c54 <serpent_set_key+0x304>
  4a1c48:	00000000 	nop
  4a1c4c:	10000040 	b	4a1d50 <serpent_set_key+0x400>
  4a1c50:	00000000 	nop
    {
        lk = l_key[i] ^ l_key[i + 3] ^ l_key[i + 5] 
  4a1c54:	8fc20010 	lw	v0,16(s8)
  4a1c58:	00000000 	nop
  4a1c5c:	00021880 	sll	v1,v0,0x2
  4a1c60:	8fc2000c 	lw	v0,12(s8)
  4a1c64:	00000000 	nop
  4a1c68:	00622021 	addu	a0,v1,v0
  4a1c6c:	8fc20010 	lw	v0,16(s8)
  4a1c70:	00000000 	nop
  4a1c74:	00021880 	sll	v1,v0,0x2
  4a1c78:	8fc2000c 	lw	v0,12(s8)
  4a1c7c:	00000000 	nop
  4a1c80:	00621021 	addu	v0,v1,v0
  4a1c84:	2442000c 	addiu	v0,v0,12
  4a1c88:	8c830000 	lw	v1,0(a0)
  4a1c8c:	8c420000 	lw	v0,0(v0)
  4a1c90:	00000000 	nop
  4a1c94:	00622026 	xor	a0,v1,v0
  4a1c98:	8fc20010 	lw	v0,16(s8)
  4a1c9c:	00000000 	nop
  4a1ca0:	00021880 	sll	v1,v0,0x2
  4a1ca4:	8fc2000c 	lw	v0,12(s8)
  4a1ca8:	00000000 	nop
  4a1cac:	00621021 	addu	v0,v1,v0
  4a1cb0:	24420014 	addiu	v0,v0,20
  4a1cb4:	8c420000 	lw	v0,0(v0)
  4a1cb8:	00000000 	nop
  4a1cbc:	00822026 	xor	a0,a0,v0
  4a1cc0:	8fc20010 	lw	v0,16(s8)
  4a1cc4:	00000000 	nop
  4a1cc8:	00021880 	sll	v1,v0,0x2
  4a1ccc:	8fc2000c 	lw	v0,12(s8)
  4a1cd0:	00000000 	nop
  4a1cd4:	00621021 	addu	v0,v1,v0
  4a1cd8:	2442001c 	addiu	v0,v0,28
  4a1cdc:	8c420000 	lw	v0,0(v0)
  4a1ce0:	00000000 	nop
  4a1ce4:	00821826 	xor	v1,a0,v0
  4a1ce8:	8fc20010 	lw	v0,16(s8)
  4a1cec:	00000000 	nop
  4a1cf0:	00621826 	xor	v1,v1,v0
  4a1cf4:	3c029e37 	lui	v0,0x9e37
  4a1cf8:	344279b9 	ori	v0,v0,0x79b9
  4a1cfc:	00621026 	xor	v0,v1,v0
  4a1d00:	afc20014 	sw	v0,20(s8)
                                ^ l_key[i + 7] ^ 0x9e3779b9 ^ i;

        l_key[i + 8] = (lk << 11) | (lk >> 21); 
  4a1d04:	8fc20010 	lw	v0,16(s8)
  4a1d08:	00000000 	nop
  4a1d0c:	00021880 	sll	v1,v0,0x2
  4a1d10:	8fc2000c 	lw	v0,12(s8)
  4a1d14:	00000000 	nop
  4a1d18:	00621021 	addu	v0,v1,v0
  4a1d1c:	24440020 	addiu	a0,v0,32
  4a1d20:	8fc20014 	lw	v0,20(s8)
  4a1d24:	00000000 	nop
  4a1d28:	00021ac0 	sll	v1,v0,0xb
  4a1d2c:	00021542 	srl	v0,v0,0x15
  4a1d30:	00621025 	or	v0,v1,v0
  4a1d34:	ac820000 	sw	v0,0(a0)
  4a1d38:	8fc20010 	lw	v0,16(s8)
  4a1d3c:	00000000 	nop
  4a1d40:	24420001 	addiu	v0,v0,1
  4a1d44:	afc20010 	sw	v0,16(s8)
  4a1d48:	1000ffbb 	b	4a1c38 <serpent_set_key+0x2e8>
  4a1d4c:	00000000 	nop
    }

      GETKEY(r0, r1, r2, r3, 0);
  4a1d50:	8fc2000c 	lw	v0,12(s8)
  4a1d54:	00000000 	nop
  4a1d58:	24420020 	addiu	v0,v0,32
  4a1d5c:	8c420000 	lw	v0,0(v0)
  4a1d60:	00000000 	nop
  4a1d64:	afc20018 	sw	v0,24(s8)
  4a1d68:	8fc2000c 	lw	v0,12(s8)
  4a1d6c:	00000000 	nop
  4a1d70:	24420024 	addiu	v0,v0,36
  4a1d74:	8c420000 	lw	v0,0(v0)
  4a1d78:	00000000 	nop
  4a1d7c:	afc2001c 	sw	v0,28(s8)
  4a1d80:	8fc2000c 	lw	v0,12(s8)
  4a1d84:	00000000 	nop
  4a1d88:	24420028 	addiu	v0,v0,40
  4a1d8c:	8c420000 	lw	v0,0(v0)
  4a1d90:	00000000 	nop
  4a1d94:	afc20020 	sw	v0,32(s8)
  4a1d98:	8fc2000c 	lw	v0,12(s8)
  4a1d9c:	00000000 	nop
  4a1da0:	2442002c 	addiu	v0,v0,44
  4a1da4:	8c420000 	lw	v0,0(v0)
  4a1da8:	00000000 	nop
  4a1dac:	afc20024 	sw	v0,36(s8)
      S3(r0,r1,r2,r3,r4);
  4a1db0:	8fc20018 	lw	v0,24(s8)
  4a1db4:	00000000 	nop
  4a1db8:	afc20028 	sw	v0,40(s8)
  4a1dbc:	8fc30018 	lw	v1,24(s8)
  4a1dc0:	8fc20024 	lw	v0,36(s8)
  4a1dc4:	00000000 	nop
  4a1dc8:	00621025 	or	v0,v1,v0
  4a1dcc:	afc20018 	sw	v0,24(s8)
  4a1dd0:	8fc30024 	lw	v1,36(s8)
  4a1dd4:	8fc2001c 	lw	v0,28(s8)
  4a1dd8:	00000000 	nop
  4a1ddc:	00621026 	xor	v0,v1,v0
  4a1de0:	afc20024 	sw	v0,36(s8)
  4a1de4:	8fc3001c 	lw	v1,28(s8)
  4a1de8:	8fc20028 	lw	v0,40(s8)
  4a1dec:	00000000 	nop
  4a1df0:	00621024 	and	v0,v1,v0
  4a1df4:	afc2001c 	sw	v0,28(s8)
  4a1df8:	8fc30028 	lw	v1,40(s8)
  4a1dfc:	8fc20020 	lw	v0,32(s8)
  4a1e00:	00000000 	nop
  4a1e04:	00621026 	xor	v0,v1,v0
  4a1e08:	afc20028 	sw	v0,40(s8)
  4a1e0c:	8fc30020 	lw	v1,32(s8)
  4a1e10:	8fc20024 	lw	v0,36(s8)
  4a1e14:	00000000 	nop
  4a1e18:	00621026 	xor	v0,v1,v0
  4a1e1c:	afc20020 	sw	v0,32(s8)
  4a1e20:	8fc30024 	lw	v1,36(s8)
  4a1e24:	8fc20018 	lw	v0,24(s8)
  4a1e28:	00000000 	nop
  4a1e2c:	00621024 	and	v0,v1,v0
  4a1e30:	afc20024 	sw	v0,36(s8)
  4a1e34:	8fc30028 	lw	v1,40(s8)
  4a1e38:	8fc2001c 	lw	v0,28(s8)
  4a1e3c:	00000000 	nop
  4a1e40:	00621025 	or	v0,v1,v0
  4a1e44:	afc20028 	sw	v0,40(s8)
  4a1e48:	8fc30024 	lw	v1,36(s8)
  4a1e4c:	8fc20028 	lw	v0,40(s8)
  4a1e50:	00000000 	nop
  4a1e54:	00621026 	xor	v0,v1,v0
  4a1e58:	afc20024 	sw	v0,36(s8)
  4a1e5c:	8fc30018 	lw	v1,24(s8)
  4a1e60:	8fc2001c 	lw	v0,28(s8)
  4a1e64:	00000000 	nop
  4a1e68:	00621026 	xor	v0,v1,v0
  4a1e6c:	afc20018 	sw	v0,24(s8)
  4a1e70:	8fc30028 	lw	v1,40(s8)
  4a1e74:	8fc20018 	lw	v0,24(s8)
  4a1e78:	00000000 	nop
  4a1e7c:	00621024 	and	v0,v1,v0
  4a1e80:	afc20028 	sw	v0,40(s8)
  4a1e84:	8fc3001c 	lw	v1,28(s8)
  4a1e88:	8fc20024 	lw	v0,36(s8)
  4a1e8c:	00000000 	nop
  4a1e90:	00621026 	xor	v0,v1,v0
  4a1e94:	afc2001c 	sw	v0,28(s8)
  4a1e98:	8fc30028 	lw	v1,40(s8)
  4a1e9c:	8fc20020 	lw	v0,32(s8)
  4a1ea0:	00000000 	nop
  4a1ea4:	00621026 	xor	v0,v1,v0
  4a1ea8:	afc20028 	sw	v0,40(s8)
  4a1eac:	8fc3001c 	lw	v1,28(s8)
  4a1eb0:	8fc20018 	lw	v0,24(s8)
  4a1eb4:	00000000 	nop
  4a1eb8:	00621025 	or	v0,v1,v0
  4a1ebc:	afc2001c 	sw	v0,28(s8)
  4a1ec0:	8fc3001c 	lw	v1,28(s8)
  4a1ec4:	8fc20020 	lw	v0,32(s8)
  4a1ec8:	00000000 	nop
  4a1ecc:	00621026 	xor	v0,v1,v0
  4a1ed0:	afc2001c 	sw	v0,28(s8)
  4a1ed4:	8fc30018 	lw	v1,24(s8)
  4a1ed8:	8fc20024 	lw	v0,36(s8)
  4a1edc:	00000000 	nop
  4a1ee0:	00621026 	xor	v0,v1,v0
  4a1ee4:	afc20018 	sw	v0,24(s8)
  4a1ee8:	8fc2001c 	lw	v0,28(s8)
  4a1eec:	00000000 	nop
  4a1ef0:	afc20020 	sw	v0,32(s8)
  4a1ef4:	8fc3001c 	lw	v1,28(s8)
  4a1ef8:	8fc20024 	lw	v0,36(s8)
  4a1efc:	00000000 	nop
  4a1f00:	00621025 	or	v0,v1,v0
  4a1f04:	afc2001c 	sw	v0,28(s8)
  4a1f08:	8fc3001c 	lw	v1,28(s8)
  4a1f0c:	8fc20018 	lw	v0,24(s8)
  4a1f10:	00000000 	nop
  4a1f14:	00621026 	xor	v0,v1,v0
  4a1f18:	afc2001c 	sw	v0,28(s8)
      SETKEY(r1, r2, r3, r4, 0) 
  4a1f1c:	8fc2000c 	lw	v0,12(s8)
  4a1f20:	00000000 	nop
  4a1f24:	24430020 	addiu	v1,v0,32
  4a1f28:	8fc2001c 	lw	v0,28(s8)
  4a1f2c:	00000000 	nop
  4a1f30:	ac620000 	sw	v0,0(v1)
  4a1f34:	8fc2000c 	lw	v0,12(s8)
  4a1f38:	00000000 	nop
  4a1f3c:	24430024 	addiu	v1,v0,36
  4a1f40:	8fc20020 	lw	v0,32(s8)
  4a1f44:	00000000 	nop
  4a1f48:	ac620000 	sw	v0,0(v1)
  4a1f4c:	8fc2000c 	lw	v0,12(s8)
  4a1f50:	00000000 	nop
  4a1f54:	24430028 	addiu	v1,v0,40
  4a1f58:	8fc20024 	lw	v0,36(s8)
  4a1f5c:	00000000 	nop
  4a1f60:	ac620000 	sw	v0,0(v1)
  4a1f64:	8fc2000c 	lw	v0,12(s8)
  4a1f68:	00000000 	nop
  4a1f6c:	2443002c 	addiu	v1,v0,44
  4a1f70:	8fc20028 	lw	v0,40(s8)
  4a1f74:	00000000 	nop
  4a1f78:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 4);
  4a1f7c:	8fc2000c 	lw	v0,12(s8)
  4a1f80:	00000000 	nop
  4a1f84:	24420030 	addiu	v0,v0,48
  4a1f88:	8c420000 	lw	v0,0(v0)
  4a1f8c:	00000000 	nop
  4a1f90:	afc20018 	sw	v0,24(s8)
  4a1f94:	8fc2000c 	lw	v0,12(s8)
  4a1f98:	00000000 	nop
  4a1f9c:	24420034 	addiu	v0,v0,52
  4a1fa0:	8c420000 	lw	v0,0(v0)
  4a1fa4:	00000000 	nop
  4a1fa8:	afc2001c 	sw	v0,28(s8)
  4a1fac:	8fc2000c 	lw	v0,12(s8)
  4a1fb0:	00000000 	nop
  4a1fb4:	24420038 	addiu	v0,v0,56
  4a1fb8:	8c420000 	lw	v0,0(v0)
  4a1fbc:	00000000 	nop
  4a1fc0:	afc20020 	sw	v0,32(s8)
  4a1fc4:	8fc2000c 	lw	v0,12(s8)
  4a1fc8:	00000000 	nop
  4a1fcc:	2442003c 	addiu	v0,v0,60
  4a1fd0:	8c420000 	lw	v0,0(v0)
  4a1fd4:	00000000 	nop
  4a1fd8:	afc20024 	sw	v0,36(s8)
      S2(r0,r1,r2,r3,r4);
  4a1fdc:	8fc20018 	lw	v0,24(s8)
  4a1fe0:	00000000 	nop
  4a1fe4:	afc20028 	sw	v0,40(s8)
  4a1fe8:	8fc30018 	lw	v1,24(s8)
  4a1fec:	8fc20020 	lw	v0,32(s8)
  4a1ff0:	00000000 	nop
  4a1ff4:	00621024 	and	v0,v1,v0
  4a1ff8:	afc20018 	sw	v0,24(s8)
  4a1ffc:	8fc30018 	lw	v1,24(s8)
  4a2000:	8fc20024 	lw	v0,36(s8)
  4a2004:	00000000 	nop
  4a2008:	00621026 	xor	v0,v1,v0
  4a200c:	afc20018 	sw	v0,24(s8)
  4a2010:	8fc30020 	lw	v1,32(s8)
  4a2014:	8fc2001c 	lw	v0,28(s8)
  4a2018:	00000000 	nop
  4a201c:	00621026 	xor	v0,v1,v0
  4a2020:	afc20020 	sw	v0,32(s8)
  4a2024:	8fc30020 	lw	v1,32(s8)
  4a2028:	8fc20018 	lw	v0,24(s8)
  4a202c:	00000000 	nop
  4a2030:	00621026 	xor	v0,v1,v0
  4a2034:	afc20020 	sw	v0,32(s8)
  4a2038:	8fc30024 	lw	v1,36(s8)
  4a203c:	8fc20028 	lw	v0,40(s8)
  4a2040:	00000000 	nop
  4a2044:	00621025 	or	v0,v1,v0
  4a2048:	afc20024 	sw	v0,36(s8)
  4a204c:	8fc30024 	lw	v1,36(s8)
  4a2050:	8fc2001c 	lw	v0,28(s8)
  4a2054:	00000000 	nop
  4a2058:	00621026 	xor	v0,v1,v0
  4a205c:	afc20024 	sw	v0,36(s8)
  4a2060:	8fc30028 	lw	v1,40(s8)
  4a2064:	8fc20020 	lw	v0,32(s8)
  4a2068:	00000000 	nop
  4a206c:	00621026 	xor	v0,v1,v0
  4a2070:	afc20028 	sw	v0,40(s8)
  4a2074:	8fc20024 	lw	v0,36(s8)
  4a2078:	00000000 	nop
  4a207c:	afc2001c 	sw	v0,28(s8)
  4a2080:	8fc30024 	lw	v1,36(s8)
  4a2084:	8fc20028 	lw	v0,40(s8)
  4a2088:	00000000 	nop
  4a208c:	00621025 	or	v0,v1,v0
  4a2090:	afc20024 	sw	v0,36(s8)
  4a2094:	8fc30024 	lw	v1,36(s8)
  4a2098:	8fc20018 	lw	v0,24(s8)
  4a209c:	00000000 	nop
  4a20a0:	00621026 	xor	v0,v1,v0
  4a20a4:	afc20024 	sw	v0,36(s8)
  4a20a8:	8fc30018 	lw	v1,24(s8)
  4a20ac:	8fc2001c 	lw	v0,28(s8)
  4a20b0:	00000000 	nop
  4a20b4:	00621024 	and	v0,v1,v0
  4a20b8:	afc20018 	sw	v0,24(s8)
  4a20bc:	8fc30028 	lw	v1,40(s8)
  4a20c0:	8fc20018 	lw	v0,24(s8)
  4a20c4:	00000000 	nop
  4a20c8:	00621026 	xor	v0,v1,v0
  4a20cc:	afc20028 	sw	v0,40(s8)
  4a20d0:	8fc3001c 	lw	v1,28(s8)
  4a20d4:	8fc20024 	lw	v0,36(s8)
  4a20d8:	00000000 	nop
  4a20dc:	00621026 	xor	v0,v1,v0
  4a20e0:	afc2001c 	sw	v0,28(s8)
  4a20e4:	8fc3001c 	lw	v1,28(s8)
  4a20e8:	8fc20028 	lw	v0,40(s8)
  4a20ec:	00000000 	nop
  4a20f0:	00621026 	xor	v0,v1,v0
  4a20f4:	afc2001c 	sw	v0,28(s8)
  4a20f8:	8fc20028 	lw	v0,40(s8)
  4a20fc:	00000000 	nop
  4a2100:	00021027 	nor	v0,zero,v0
  4a2104:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r3, r1, r4, 4) 
  4a2108:	8fc2000c 	lw	v0,12(s8)
  4a210c:	00000000 	nop
  4a2110:	24430030 	addiu	v1,v0,48
  4a2114:	8fc20020 	lw	v0,32(s8)
  4a2118:	00000000 	nop
  4a211c:	ac620000 	sw	v0,0(v1)
  4a2120:	8fc2000c 	lw	v0,12(s8)
  4a2124:	00000000 	nop
  4a2128:	24430034 	addiu	v1,v0,52
  4a212c:	8fc20024 	lw	v0,36(s8)
  4a2130:	00000000 	nop
  4a2134:	ac620000 	sw	v0,0(v1)
  4a2138:	8fc2000c 	lw	v0,12(s8)
  4a213c:	00000000 	nop
  4a2140:	24430038 	addiu	v1,v0,56
  4a2144:	8fc2001c 	lw	v0,28(s8)
  4a2148:	00000000 	nop
  4a214c:	ac620000 	sw	v0,0(v1)
  4a2150:	8fc2000c 	lw	v0,12(s8)
  4a2154:	00000000 	nop
  4a2158:	2443003c 	addiu	v1,v0,60
  4a215c:	8fc20028 	lw	v0,40(s8)
  4a2160:	00000000 	nop
  4a2164:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 8);
  4a2168:	8fc2000c 	lw	v0,12(s8)
  4a216c:	00000000 	nop
  4a2170:	24420040 	addiu	v0,v0,64
  4a2174:	8c420000 	lw	v0,0(v0)
  4a2178:	00000000 	nop
  4a217c:	afc20018 	sw	v0,24(s8)
  4a2180:	8fc2000c 	lw	v0,12(s8)
  4a2184:	00000000 	nop
  4a2188:	24420044 	addiu	v0,v0,68
  4a218c:	8c420000 	lw	v0,0(v0)
  4a2190:	00000000 	nop
  4a2194:	afc2001c 	sw	v0,28(s8)
  4a2198:	8fc2000c 	lw	v0,12(s8)
  4a219c:	00000000 	nop
  4a21a0:	24420048 	addiu	v0,v0,72
  4a21a4:	8c420000 	lw	v0,0(v0)
  4a21a8:	00000000 	nop
  4a21ac:	afc20020 	sw	v0,32(s8)
  4a21b0:	8fc2000c 	lw	v0,12(s8)
  4a21b4:	00000000 	nop
  4a21b8:	2442004c 	addiu	v0,v0,76
  4a21bc:	8c420000 	lw	v0,0(v0)
  4a21c0:	00000000 	nop
  4a21c4:	afc20024 	sw	v0,36(s8)
      S1(r0,r1,r2,r3,r4);
  4a21c8:	8fc2001c 	lw	v0,28(s8)
  4a21cc:	00000000 	nop
  4a21d0:	00021027 	nor	v0,zero,v0
  4a21d4:	afc2001c 	sw	v0,28(s8)
  4a21d8:	8fc20018 	lw	v0,24(s8)
  4a21dc:	00000000 	nop
  4a21e0:	afc20028 	sw	v0,40(s8)
  4a21e4:	8fc30018 	lw	v1,24(s8)
  4a21e8:	8fc2001c 	lw	v0,28(s8)
  4a21ec:	00000000 	nop
  4a21f0:	00621026 	xor	v0,v1,v0
  4a21f4:	afc20018 	sw	v0,24(s8)
  4a21f8:	8fc30028 	lw	v1,40(s8)
  4a21fc:	8fc2001c 	lw	v0,28(s8)
  4a2200:	00000000 	nop
  4a2204:	00621025 	or	v0,v1,v0
  4a2208:	afc20028 	sw	v0,40(s8)
  4a220c:	8fc30028 	lw	v1,40(s8)
  4a2210:	8fc20024 	lw	v0,36(s8)
  4a2214:	00000000 	nop
  4a2218:	00621026 	xor	v0,v1,v0
  4a221c:	afc20028 	sw	v0,40(s8)
  4a2220:	8fc30024 	lw	v1,36(s8)
  4a2224:	8fc20018 	lw	v0,24(s8)
  4a2228:	00000000 	nop
  4a222c:	00621024 	and	v0,v1,v0
  4a2230:	afc20024 	sw	v0,36(s8)
  4a2234:	8fc30020 	lw	v1,32(s8)
  4a2238:	8fc20028 	lw	v0,40(s8)
  4a223c:	00000000 	nop
  4a2240:	00621026 	xor	v0,v1,v0
  4a2244:	afc20020 	sw	v0,32(s8)
  4a2248:	8fc30024 	lw	v1,36(s8)
  4a224c:	8fc2001c 	lw	v0,28(s8)
  4a2250:	00000000 	nop
  4a2254:	00621026 	xor	v0,v1,v0
  4a2258:	afc20024 	sw	v0,36(s8)
  4a225c:	8fc30024 	lw	v1,36(s8)
  4a2260:	8fc20020 	lw	v0,32(s8)
  4a2264:	00000000 	nop
  4a2268:	00621025 	or	v0,v1,v0
  4a226c:	afc20024 	sw	v0,36(s8)
  4a2270:	8fc30018 	lw	v1,24(s8)
  4a2274:	8fc20028 	lw	v0,40(s8)
  4a2278:	00000000 	nop
  4a227c:	00621026 	xor	v0,v1,v0
  4a2280:	afc20018 	sw	v0,24(s8)
  4a2284:	8fc30024 	lw	v1,36(s8)
  4a2288:	8fc20018 	lw	v0,24(s8)
  4a228c:	00000000 	nop
  4a2290:	00621026 	xor	v0,v1,v0
  4a2294:	afc20024 	sw	v0,36(s8)
  4a2298:	8fc3001c 	lw	v1,28(s8)
  4a229c:	8fc20020 	lw	v0,32(s8)
  4a22a0:	00000000 	nop
  4a22a4:	00621024 	and	v0,v1,v0
  4a22a8:	afc2001c 	sw	v0,28(s8)
  4a22ac:	8fc30018 	lw	v1,24(s8)
  4a22b0:	8fc2001c 	lw	v0,28(s8)
  4a22b4:	00000000 	nop
  4a22b8:	00621025 	or	v0,v1,v0
  4a22bc:	afc20018 	sw	v0,24(s8)
  4a22c0:	8fc3001c 	lw	v1,28(s8)
  4a22c4:	8fc20028 	lw	v0,40(s8)
  4a22c8:	00000000 	nop
  4a22cc:	00621026 	xor	v0,v1,v0
  4a22d0:	afc2001c 	sw	v0,28(s8)
  4a22d4:	8fc30018 	lw	v1,24(s8)
  4a22d8:	8fc20020 	lw	v0,32(s8)
  4a22dc:	00000000 	nop
  4a22e0:	00621026 	xor	v0,v1,v0
  4a22e4:	afc20018 	sw	v0,24(s8)
  4a22e8:	8fc30028 	lw	v1,40(s8)
  4a22ec:	8fc20024 	lw	v0,36(s8)
  4a22f0:	00000000 	nop
  4a22f4:	00621025 	or	v0,v1,v0
  4a22f8:	afc20028 	sw	v0,40(s8)
  4a22fc:	8fc30018 	lw	v1,24(s8)
  4a2300:	8fc20028 	lw	v0,40(s8)
  4a2304:	00000000 	nop
  4a2308:	00621026 	xor	v0,v1,v0
  4a230c:	afc20018 	sw	v0,24(s8)
  4a2310:	8fc20028 	lw	v0,40(s8)
  4a2314:	00000000 	nop
  4a2318:	00021027 	nor	v0,zero,v0
  4a231c:	afc20028 	sw	v0,40(s8)
  4a2320:	8fc3001c 	lw	v1,28(s8)
  4a2324:	8fc20024 	lw	v0,36(s8)
  4a2328:	00000000 	nop
  4a232c:	00621026 	xor	v0,v1,v0
  4a2330:	afc2001c 	sw	v0,28(s8)
  4a2334:	8fc30028 	lw	v1,40(s8)
  4a2338:	8fc20020 	lw	v0,32(s8)
  4a233c:	00000000 	nop
  4a2340:	00621024 	and	v0,v1,v0
  4a2344:	afc20028 	sw	v0,40(s8)
  4a2348:	8fc2001c 	lw	v0,28(s8)
  4a234c:	00000000 	nop
  4a2350:	00021027 	nor	v0,zero,v0
  4a2354:	afc2001c 	sw	v0,28(s8)
  4a2358:	8fc30028 	lw	v1,40(s8)
  4a235c:	8fc20018 	lw	v0,24(s8)
  4a2360:	00000000 	nop
  4a2364:	00621026 	xor	v0,v1,v0
  4a2368:	afc20028 	sw	v0,40(s8)
  4a236c:	8fc3001c 	lw	v1,28(s8)
  4a2370:	8fc20028 	lw	v0,40(s8)
  4a2374:	00000000 	nop
  4a2378:	00621026 	xor	v0,v1,v0
  4a237c:	afc2001c 	sw	v0,28(s8)
      SETKEY(r3, r1, r2, r0, 8) 
  4a2380:	8fc2000c 	lw	v0,12(s8)
  4a2384:	00000000 	nop
  4a2388:	24430040 	addiu	v1,v0,64
  4a238c:	8fc20024 	lw	v0,36(s8)
  4a2390:	00000000 	nop
  4a2394:	ac620000 	sw	v0,0(v1)
  4a2398:	8fc2000c 	lw	v0,12(s8)
  4a239c:	00000000 	nop
  4a23a0:	24430044 	addiu	v1,v0,68
  4a23a4:	8fc2001c 	lw	v0,28(s8)
  4a23a8:	00000000 	nop
  4a23ac:	ac620000 	sw	v0,0(v1)
  4a23b0:	8fc2000c 	lw	v0,12(s8)
  4a23b4:	00000000 	nop
  4a23b8:	24430048 	addiu	v1,v0,72
  4a23bc:	8fc20020 	lw	v0,32(s8)
  4a23c0:	00000000 	nop
  4a23c4:	ac620000 	sw	v0,0(v1)
  4a23c8:	8fc2000c 	lw	v0,12(s8)
  4a23cc:	00000000 	nop
  4a23d0:	2443004c 	addiu	v1,v0,76
  4a23d4:	8fc20018 	lw	v0,24(s8)
  4a23d8:	00000000 	nop
  4a23dc:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 12);
  4a23e0:	8fc2000c 	lw	v0,12(s8)
  4a23e4:	00000000 	nop
  4a23e8:	24420050 	addiu	v0,v0,80
  4a23ec:	8c420000 	lw	v0,0(v0)
  4a23f0:	00000000 	nop
  4a23f4:	afc20018 	sw	v0,24(s8)
  4a23f8:	8fc2000c 	lw	v0,12(s8)
  4a23fc:	00000000 	nop
  4a2400:	24420054 	addiu	v0,v0,84
  4a2404:	8c420000 	lw	v0,0(v0)
  4a2408:	00000000 	nop
  4a240c:	afc2001c 	sw	v0,28(s8)
  4a2410:	8fc2000c 	lw	v0,12(s8)
  4a2414:	00000000 	nop
  4a2418:	24420058 	addiu	v0,v0,88
  4a241c:	8c420000 	lw	v0,0(v0)
  4a2420:	00000000 	nop
  4a2424:	afc20020 	sw	v0,32(s8)
  4a2428:	8fc2000c 	lw	v0,12(s8)
  4a242c:	00000000 	nop
  4a2430:	2442005c 	addiu	v0,v0,92
  4a2434:	8c420000 	lw	v0,0(v0)
  4a2438:	00000000 	nop
  4a243c:	afc20024 	sw	v0,36(s8)
      S0(r0,r1,r2,r3,r4);
  4a2440:	8fc30024 	lw	v1,36(s8)
  4a2444:	8fc20018 	lw	v0,24(s8)
  4a2448:	00000000 	nop
  4a244c:	00621026 	xor	v0,v1,v0
  4a2450:	afc20024 	sw	v0,36(s8)
  4a2454:	8fc2001c 	lw	v0,28(s8)
  4a2458:	00000000 	nop
  4a245c:	afc20028 	sw	v0,40(s8)
  4a2460:	8fc3001c 	lw	v1,28(s8)
  4a2464:	8fc20024 	lw	v0,36(s8)
  4a2468:	00000000 	nop
  4a246c:	00621024 	and	v0,v1,v0
  4a2470:	afc2001c 	sw	v0,28(s8)
  4a2474:	8fc30028 	lw	v1,40(s8)
  4a2478:	8fc20020 	lw	v0,32(s8)
  4a247c:	00000000 	nop
  4a2480:	00621026 	xor	v0,v1,v0
  4a2484:	afc20028 	sw	v0,40(s8)
  4a2488:	8fc3001c 	lw	v1,28(s8)
  4a248c:	8fc20018 	lw	v0,24(s8)
  4a2490:	00000000 	nop
  4a2494:	00621026 	xor	v0,v1,v0
  4a2498:	afc2001c 	sw	v0,28(s8)
  4a249c:	8fc30018 	lw	v1,24(s8)
  4a24a0:	8fc20024 	lw	v0,36(s8)
  4a24a4:	00000000 	nop
  4a24a8:	00621025 	or	v0,v1,v0
  4a24ac:	afc20018 	sw	v0,24(s8)
  4a24b0:	8fc30018 	lw	v1,24(s8)
  4a24b4:	8fc20028 	lw	v0,40(s8)
  4a24b8:	00000000 	nop
  4a24bc:	00621026 	xor	v0,v1,v0
  4a24c0:	afc20018 	sw	v0,24(s8)
  4a24c4:	8fc30028 	lw	v1,40(s8)
  4a24c8:	8fc20024 	lw	v0,36(s8)
  4a24cc:	00000000 	nop
  4a24d0:	00621026 	xor	v0,v1,v0
  4a24d4:	afc20028 	sw	v0,40(s8)
  4a24d8:	8fc30024 	lw	v1,36(s8)
  4a24dc:	8fc20020 	lw	v0,32(s8)
  4a24e0:	00000000 	nop
  4a24e4:	00621026 	xor	v0,v1,v0
  4a24e8:	afc20024 	sw	v0,36(s8)
  4a24ec:	8fc30020 	lw	v1,32(s8)
  4a24f0:	8fc2001c 	lw	v0,28(s8)
  4a24f4:	00000000 	nop
  4a24f8:	00621025 	or	v0,v1,v0
  4a24fc:	afc20020 	sw	v0,32(s8)
  4a2500:	8fc30020 	lw	v1,32(s8)
  4a2504:	8fc20028 	lw	v0,40(s8)
  4a2508:	00000000 	nop
  4a250c:	00621026 	xor	v0,v1,v0
  4a2510:	afc20020 	sw	v0,32(s8)
  4a2514:	8fc20028 	lw	v0,40(s8)
  4a2518:	00000000 	nop
  4a251c:	00021027 	nor	v0,zero,v0
  4a2520:	afc20028 	sw	v0,40(s8)
  4a2524:	8fc30028 	lw	v1,40(s8)
  4a2528:	8fc2001c 	lw	v0,28(s8)
  4a252c:	00000000 	nop
  4a2530:	00621025 	or	v0,v1,v0
  4a2534:	afc20028 	sw	v0,40(s8)
  4a2538:	8fc3001c 	lw	v1,28(s8)
  4a253c:	8fc20024 	lw	v0,36(s8)
  4a2540:	00000000 	nop
  4a2544:	00621026 	xor	v0,v1,v0
  4a2548:	afc2001c 	sw	v0,28(s8)
  4a254c:	8fc3001c 	lw	v1,28(s8)
  4a2550:	8fc20028 	lw	v0,40(s8)
  4a2554:	00000000 	nop
  4a2558:	00621026 	xor	v0,v1,v0
  4a255c:	afc2001c 	sw	v0,28(s8)
  4a2560:	8fc30024 	lw	v1,36(s8)
  4a2564:	8fc20018 	lw	v0,24(s8)
  4a2568:	00000000 	nop
  4a256c:	00621025 	or	v0,v1,v0
  4a2570:	afc20024 	sw	v0,36(s8)
  4a2574:	8fc3001c 	lw	v1,28(s8)
  4a2578:	8fc20024 	lw	v0,36(s8)
  4a257c:	00000000 	nop
  4a2580:	00621026 	xor	v0,v1,v0
  4a2584:	afc2001c 	sw	v0,28(s8)
  4a2588:	8fc30028 	lw	v1,40(s8)
  4a258c:	8fc20024 	lw	v0,36(s8)
  4a2590:	00000000 	nop
  4a2594:	00621026 	xor	v0,v1,v0
  4a2598:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r2, r0, 12) 
  4a259c:	8fc2000c 	lw	v0,12(s8)
  4a25a0:	00000000 	nop
  4a25a4:	24430050 	addiu	v1,v0,80
  4a25a8:	8fc2001c 	lw	v0,28(s8)
  4a25ac:	00000000 	nop
  4a25b0:	ac620000 	sw	v0,0(v1)
  4a25b4:	8fc2000c 	lw	v0,12(s8)
  4a25b8:	00000000 	nop
  4a25bc:	24430054 	addiu	v1,v0,84
  4a25c0:	8fc20028 	lw	v0,40(s8)
  4a25c4:	00000000 	nop
  4a25c8:	ac620000 	sw	v0,0(v1)
  4a25cc:	8fc2000c 	lw	v0,12(s8)
  4a25d0:	00000000 	nop
  4a25d4:	24430058 	addiu	v1,v0,88
  4a25d8:	8fc20020 	lw	v0,32(s8)
  4a25dc:	00000000 	nop
  4a25e0:	ac620000 	sw	v0,0(v1)
  4a25e4:	8fc2000c 	lw	v0,12(s8)
  4a25e8:	00000000 	nop
  4a25ec:	2443005c 	addiu	v1,v0,92
  4a25f0:	8fc20018 	lw	v0,24(s8)
  4a25f4:	00000000 	nop
  4a25f8:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 16);
  4a25fc:	8fc2000c 	lw	v0,12(s8)
  4a2600:	00000000 	nop
  4a2604:	24420060 	addiu	v0,v0,96
  4a2608:	8c420000 	lw	v0,0(v0)
  4a260c:	00000000 	nop
  4a2610:	afc20018 	sw	v0,24(s8)
  4a2614:	8fc2000c 	lw	v0,12(s8)
  4a2618:	00000000 	nop
  4a261c:	24420064 	addiu	v0,v0,100
  4a2620:	8c420000 	lw	v0,0(v0)
  4a2624:	00000000 	nop
  4a2628:	afc2001c 	sw	v0,28(s8)
  4a262c:	8fc2000c 	lw	v0,12(s8)
  4a2630:	00000000 	nop
  4a2634:	24420068 	addiu	v0,v0,104
  4a2638:	8c420000 	lw	v0,0(v0)
  4a263c:	00000000 	nop
  4a2640:	afc20020 	sw	v0,32(s8)
  4a2644:	8fc2000c 	lw	v0,12(s8)
  4a2648:	00000000 	nop
  4a264c:	2442006c 	addiu	v0,v0,108
  4a2650:	8c420000 	lw	v0,0(v0)
  4a2654:	00000000 	nop
  4a2658:	afc20024 	sw	v0,36(s8)
      S7(r0,r1,r2,r3,r4);
  4a265c:	8fc20020 	lw	v0,32(s8)
  4a2660:	00000000 	nop
  4a2664:	afc20028 	sw	v0,40(s8)
  4a2668:	8fc30020 	lw	v1,32(s8)
  4a266c:	8fc2001c 	lw	v0,28(s8)
  4a2670:	00000000 	nop
  4a2674:	00621024 	and	v0,v1,v0
  4a2678:	afc20020 	sw	v0,32(s8)
  4a267c:	8fc30020 	lw	v1,32(s8)
  4a2680:	8fc20024 	lw	v0,36(s8)
  4a2684:	00000000 	nop
  4a2688:	00621026 	xor	v0,v1,v0
  4a268c:	afc20020 	sw	v0,32(s8)
  4a2690:	8fc30024 	lw	v1,36(s8)
  4a2694:	8fc2001c 	lw	v0,28(s8)
  4a2698:	00000000 	nop
  4a269c:	00621024 	and	v0,v1,v0
  4a26a0:	afc20024 	sw	v0,36(s8)
  4a26a4:	8fc30028 	lw	v1,40(s8)
  4a26a8:	8fc20020 	lw	v0,32(s8)
  4a26ac:	00000000 	nop
  4a26b0:	00621026 	xor	v0,v1,v0
  4a26b4:	afc20028 	sw	v0,40(s8)
  4a26b8:	8fc30020 	lw	v1,32(s8)
  4a26bc:	8fc2001c 	lw	v0,28(s8)
  4a26c0:	00000000 	nop
  4a26c4:	00621026 	xor	v0,v1,v0
  4a26c8:	afc20020 	sw	v0,32(s8)
  4a26cc:	8fc3001c 	lw	v1,28(s8)
  4a26d0:	8fc20018 	lw	v0,24(s8)
  4a26d4:	00000000 	nop
  4a26d8:	00621026 	xor	v0,v1,v0
  4a26dc:	afc2001c 	sw	v0,28(s8)
  4a26e0:	8fc30018 	lw	v1,24(s8)
  4a26e4:	8fc20028 	lw	v0,40(s8)
  4a26e8:	00000000 	nop
  4a26ec:	00621025 	or	v0,v1,v0
  4a26f0:	afc20018 	sw	v0,24(s8)
  4a26f4:	8fc30018 	lw	v1,24(s8)
  4a26f8:	8fc20020 	lw	v0,32(s8)
  4a26fc:	00000000 	nop
  4a2700:	00621026 	xor	v0,v1,v0
  4a2704:	afc20018 	sw	v0,24(s8)
  4a2708:	8fc30024 	lw	v1,36(s8)
  4a270c:	8fc2001c 	lw	v0,28(s8)
  4a2710:	00000000 	nop
  4a2714:	00621026 	xor	v0,v1,v0
  4a2718:	afc20024 	sw	v0,36(s8)
  4a271c:	8fc30020 	lw	v1,32(s8)
  4a2720:	8fc20024 	lw	v0,36(s8)
  4a2724:	00000000 	nop
  4a2728:	00621026 	xor	v0,v1,v0
  4a272c:	afc20020 	sw	v0,32(s8)
  4a2730:	8fc30024 	lw	v1,36(s8)
  4a2734:	8fc20018 	lw	v0,24(s8)
  4a2738:	00000000 	nop
  4a273c:	00621024 	and	v0,v1,v0
  4a2740:	afc20024 	sw	v0,36(s8)
  4a2744:	8fc30024 	lw	v1,36(s8)
  4a2748:	8fc20028 	lw	v0,40(s8)
  4a274c:	00000000 	nop
  4a2750:	00621026 	xor	v0,v1,v0
  4a2754:	afc20024 	sw	v0,36(s8)
  4a2758:	8fc30028 	lw	v1,40(s8)
  4a275c:	8fc20020 	lw	v0,32(s8)
  4a2760:	00000000 	nop
  4a2764:	00621026 	xor	v0,v1,v0
  4a2768:	afc20028 	sw	v0,40(s8)
  4a276c:	8fc30020 	lw	v1,32(s8)
  4a2770:	8fc20018 	lw	v0,24(s8)
  4a2774:	00000000 	nop
  4a2778:	00621024 	and	v0,v1,v0
  4a277c:	afc20020 	sw	v0,32(s8)
  4a2780:	8fc20028 	lw	v0,40(s8)
  4a2784:	00000000 	nop
  4a2788:	00021027 	nor	v0,zero,v0
  4a278c:	afc20028 	sw	v0,40(s8)
  4a2790:	8fc30020 	lw	v1,32(s8)
  4a2794:	8fc20028 	lw	v0,40(s8)
  4a2798:	00000000 	nop
  4a279c:	00621026 	xor	v0,v1,v0
  4a27a0:	afc20020 	sw	v0,32(s8)
  4a27a4:	8fc30028 	lw	v1,40(s8)
  4a27a8:	8fc20018 	lw	v0,24(s8)
  4a27ac:	00000000 	nop
  4a27b0:	00621024 	and	v0,v1,v0
  4a27b4:	afc20028 	sw	v0,40(s8)
  4a27b8:	8fc3001c 	lw	v1,28(s8)
  4a27bc:	8fc20024 	lw	v0,36(s8)
  4a27c0:	00000000 	nop
  4a27c4:	00621026 	xor	v0,v1,v0
  4a27c8:	afc2001c 	sw	v0,28(s8)
  4a27cc:	8fc30028 	lw	v1,40(s8)
  4a27d0:	8fc2001c 	lw	v0,28(s8)
  4a27d4:	00000000 	nop
  4a27d8:	00621026 	xor	v0,v1,v0
  4a27dc:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r4, r3, r0, 16) 
  4a27e0:	8fc2000c 	lw	v0,12(s8)
  4a27e4:	00000000 	nop
  4a27e8:	24430060 	addiu	v1,v0,96
  4a27ec:	8fc20020 	lw	v0,32(s8)
  4a27f0:	00000000 	nop
  4a27f4:	ac620000 	sw	v0,0(v1)
  4a27f8:	8fc2000c 	lw	v0,12(s8)
  4a27fc:	00000000 	nop
  4a2800:	24430064 	addiu	v1,v0,100
  4a2804:	8fc20028 	lw	v0,40(s8)
  4a2808:	00000000 	nop
  4a280c:	ac620000 	sw	v0,0(v1)
  4a2810:	8fc2000c 	lw	v0,12(s8)
  4a2814:	00000000 	nop
  4a2818:	24430068 	addiu	v1,v0,104
  4a281c:	8fc20024 	lw	v0,36(s8)
  4a2820:	00000000 	nop
  4a2824:	ac620000 	sw	v0,0(v1)
  4a2828:	8fc2000c 	lw	v0,12(s8)
  4a282c:	00000000 	nop
  4a2830:	2443006c 	addiu	v1,v0,108
  4a2834:	8fc20018 	lw	v0,24(s8)
  4a2838:	00000000 	nop
  4a283c:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 20);
  4a2840:	8fc2000c 	lw	v0,12(s8)
  4a2844:	00000000 	nop
  4a2848:	24420070 	addiu	v0,v0,112
  4a284c:	8c420000 	lw	v0,0(v0)
  4a2850:	00000000 	nop
  4a2854:	afc20018 	sw	v0,24(s8)
  4a2858:	8fc2000c 	lw	v0,12(s8)
  4a285c:	00000000 	nop
  4a2860:	24420074 	addiu	v0,v0,116
  4a2864:	8c420000 	lw	v0,0(v0)
  4a2868:	00000000 	nop
  4a286c:	afc2001c 	sw	v0,28(s8)
  4a2870:	8fc2000c 	lw	v0,12(s8)
  4a2874:	00000000 	nop
  4a2878:	24420078 	addiu	v0,v0,120
  4a287c:	8c420000 	lw	v0,0(v0)
  4a2880:	00000000 	nop
  4a2884:	afc20020 	sw	v0,32(s8)
  4a2888:	8fc2000c 	lw	v0,12(s8)
  4a288c:	00000000 	nop
  4a2890:	2442007c 	addiu	v0,v0,124
  4a2894:	8c420000 	lw	v0,0(v0)
  4a2898:	00000000 	nop
  4a289c:	afc20024 	sw	v0,36(s8)
      S6(r0,r1,r2,r3,r4) 
  4a28a0:	8fc20020 	lw	v0,32(s8)
  4a28a4:	00000000 	nop
  4a28a8:	00021027 	nor	v0,zero,v0
  4a28ac:	afc20020 	sw	v0,32(s8)
  4a28b0:	8fc20024 	lw	v0,36(s8)
  4a28b4:	00000000 	nop
  4a28b8:	afc20028 	sw	v0,40(s8)
  4a28bc:	8fc30024 	lw	v1,36(s8)
  4a28c0:	8fc20018 	lw	v0,24(s8)
  4a28c4:	00000000 	nop
  4a28c8:	00621024 	and	v0,v1,v0
  4a28cc:	afc20024 	sw	v0,36(s8)
  4a28d0:	8fc30018 	lw	v1,24(s8)
  4a28d4:	8fc20028 	lw	v0,40(s8)
  4a28d8:	00000000 	nop
  4a28dc:	00621026 	xor	v0,v1,v0
  4a28e0:	afc20018 	sw	v0,24(s8)
  4a28e4:	8fc30024 	lw	v1,36(s8)
  4a28e8:	8fc20020 	lw	v0,32(s8)
  4a28ec:	00000000 	nop
  4a28f0:	00621026 	xor	v0,v1,v0
  4a28f4:	afc20024 	sw	v0,36(s8)
  4a28f8:	8fc30020 	lw	v1,32(s8)
  4a28fc:	8fc20028 	lw	v0,40(s8)
  4a2900:	00000000 	nop
  4a2904:	00621025 	or	v0,v1,v0
  4a2908:	afc20020 	sw	v0,32(s8)
  4a290c:	8fc3001c 	lw	v1,28(s8)
  4a2910:	8fc20024 	lw	v0,36(s8)
  4a2914:	00000000 	nop
  4a2918:	00621026 	xor	v0,v1,v0
  4a291c:	afc2001c 	sw	v0,28(s8)
  4a2920:	8fc30020 	lw	v1,32(s8)
  4a2924:	8fc20018 	lw	v0,24(s8)
  4a2928:	00000000 	nop
  4a292c:	00621026 	xor	v0,v1,v0
  4a2930:	afc20020 	sw	v0,32(s8)
  4a2934:	8fc30018 	lw	v1,24(s8)
  4a2938:	8fc2001c 	lw	v0,28(s8)
  4a293c:	00000000 	nop
  4a2940:	00621025 	or	v0,v1,v0
  4a2944:	afc20018 	sw	v0,24(s8)
  4a2948:	8fc30020 	lw	v1,32(s8)
  4a294c:	8fc2001c 	lw	v0,28(s8)
  4a2950:	00000000 	nop
  4a2954:	00621026 	xor	v0,v1,v0
  4a2958:	afc20020 	sw	v0,32(s8)
  4a295c:	8fc30028 	lw	v1,40(s8)
  4a2960:	8fc20018 	lw	v0,24(s8)
  4a2964:	00000000 	nop
  4a2968:	00621026 	xor	v0,v1,v0
  4a296c:	afc20028 	sw	v0,40(s8)
  4a2970:	8fc30018 	lw	v1,24(s8)
  4a2974:	8fc20024 	lw	v0,36(s8)
  4a2978:	00000000 	nop
  4a297c:	00621025 	or	v0,v1,v0
  4a2980:	afc20018 	sw	v0,24(s8)
  4a2984:	8fc30018 	lw	v1,24(s8)
  4a2988:	8fc20020 	lw	v0,32(s8)
  4a298c:	00000000 	nop
  4a2990:	00621026 	xor	v0,v1,v0
  4a2994:	afc20018 	sw	v0,24(s8)
  4a2998:	8fc30028 	lw	v1,40(s8)
  4a299c:	8fc20024 	lw	v0,36(s8)
  4a29a0:	00000000 	nop
  4a29a4:	00621026 	xor	v0,v1,v0
  4a29a8:	afc20028 	sw	v0,40(s8)
  4a29ac:	8fc30028 	lw	v1,40(s8)
  4a29b0:	8fc20018 	lw	v0,24(s8)
  4a29b4:	00000000 	nop
  4a29b8:	00621026 	xor	v0,v1,v0
  4a29bc:	afc20028 	sw	v0,40(s8)
  4a29c0:	8fc20024 	lw	v0,36(s8)
  4a29c4:	00000000 	nop
  4a29c8:	00021027 	nor	v0,zero,v0
  4a29cc:	afc20024 	sw	v0,36(s8)
  4a29d0:	8fc30020 	lw	v1,32(s8)
  4a29d4:	8fc20028 	lw	v0,40(s8)
  4a29d8:	00000000 	nop
  4a29dc:	00621024 	and	v0,v1,v0
  4a29e0:	afc20020 	sw	v0,32(s8)
  4a29e4:	8fc30020 	lw	v1,32(s8)
  4a29e8:	8fc20024 	lw	v0,36(s8)
  4a29ec:	00000000 	nop
  4a29f0:	00621026 	xor	v0,v1,v0
  4a29f4:	afc20020 	sw	v0,32(s8)
      SETKEY(r0, r1, r4, r2, 20) 
  4a29f8:	8fc2000c 	lw	v0,12(s8)
  4a29fc:	00000000 	nop
  4a2a00:	24430070 	addiu	v1,v0,112
  4a2a04:	8fc20018 	lw	v0,24(s8)
  4a2a08:	00000000 	nop
  4a2a0c:	ac620000 	sw	v0,0(v1)
  4a2a10:	8fc2000c 	lw	v0,12(s8)
  4a2a14:	00000000 	nop
  4a2a18:	24430074 	addiu	v1,v0,116
  4a2a1c:	8fc2001c 	lw	v0,28(s8)
  4a2a20:	00000000 	nop
  4a2a24:	ac620000 	sw	v0,0(v1)
  4a2a28:	8fc2000c 	lw	v0,12(s8)
  4a2a2c:	00000000 	nop
  4a2a30:	24430078 	addiu	v1,v0,120
  4a2a34:	8fc20028 	lw	v0,40(s8)
  4a2a38:	00000000 	nop
  4a2a3c:	ac620000 	sw	v0,0(v1)
  4a2a40:	8fc2000c 	lw	v0,12(s8)
  4a2a44:	00000000 	nop
  4a2a48:	2443007c 	addiu	v1,v0,124
  4a2a4c:	8fc20020 	lw	v0,32(s8)
  4a2a50:	00000000 	nop
  4a2a54:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 24);
  4a2a58:	8fc2000c 	lw	v0,12(s8)
  4a2a5c:	00000000 	nop
  4a2a60:	24420080 	addiu	v0,v0,128
  4a2a64:	8c420000 	lw	v0,0(v0)
  4a2a68:	00000000 	nop
  4a2a6c:	afc20018 	sw	v0,24(s8)
  4a2a70:	8fc2000c 	lw	v0,12(s8)
  4a2a74:	00000000 	nop
  4a2a78:	24420084 	addiu	v0,v0,132
  4a2a7c:	8c420000 	lw	v0,0(v0)
  4a2a80:	00000000 	nop
  4a2a84:	afc2001c 	sw	v0,28(s8)
  4a2a88:	8fc2000c 	lw	v0,12(s8)
  4a2a8c:	00000000 	nop
  4a2a90:	24420088 	addiu	v0,v0,136
  4a2a94:	8c420000 	lw	v0,0(v0)
  4a2a98:	00000000 	nop
  4a2a9c:	afc20020 	sw	v0,32(s8)
  4a2aa0:	8fc2000c 	lw	v0,12(s8)
  4a2aa4:	00000000 	nop
  4a2aa8:	2442008c 	addiu	v0,v0,140
  4a2aac:	8c420000 	lw	v0,0(v0)
  4a2ab0:	00000000 	nop
  4a2ab4:	afc20024 	sw	v0,36(s8)
      S5(r0,r1,r2,r3,r4);
  4a2ab8:	8fc30018 	lw	v1,24(s8)
  4a2abc:	8fc2001c 	lw	v0,28(s8)
  4a2ac0:	00000000 	nop
  4a2ac4:	00621026 	xor	v0,v1,v0
  4a2ac8:	afc20018 	sw	v0,24(s8)
  4a2acc:	8fc3001c 	lw	v1,28(s8)
  4a2ad0:	8fc20024 	lw	v0,36(s8)
  4a2ad4:	00000000 	nop
  4a2ad8:	00621026 	xor	v0,v1,v0
  4a2adc:	afc2001c 	sw	v0,28(s8)
  4a2ae0:	8fc20024 	lw	v0,36(s8)
  4a2ae4:	00000000 	nop
  4a2ae8:	00021027 	nor	v0,zero,v0
  4a2aec:	afc20024 	sw	v0,36(s8)
  4a2af0:	8fc2001c 	lw	v0,28(s8)
  4a2af4:	00000000 	nop
  4a2af8:	afc20028 	sw	v0,40(s8)
  4a2afc:	8fc3001c 	lw	v1,28(s8)
  4a2b00:	8fc20018 	lw	v0,24(s8)
  4a2b04:	00000000 	nop
  4a2b08:	00621024 	and	v0,v1,v0
  4a2b0c:	afc2001c 	sw	v0,28(s8)
  4a2b10:	8fc30020 	lw	v1,32(s8)
  4a2b14:	8fc20024 	lw	v0,36(s8)
  4a2b18:	00000000 	nop
  4a2b1c:	00621026 	xor	v0,v1,v0
  4a2b20:	afc20020 	sw	v0,32(s8)
  4a2b24:	8fc3001c 	lw	v1,28(s8)
  4a2b28:	8fc20020 	lw	v0,32(s8)
  4a2b2c:	00000000 	nop
  4a2b30:	00621026 	xor	v0,v1,v0
  4a2b34:	afc2001c 	sw	v0,28(s8)
  4a2b38:	8fc30020 	lw	v1,32(s8)
  4a2b3c:	8fc20028 	lw	v0,40(s8)
  4a2b40:	00000000 	nop
  4a2b44:	00621025 	or	v0,v1,v0
  4a2b48:	afc20020 	sw	v0,32(s8)
  4a2b4c:	8fc30028 	lw	v1,40(s8)
  4a2b50:	8fc20024 	lw	v0,36(s8)
  4a2b54:	00000000 	nop
  4a2b58:	00621026 	xor	v0,v1,v0
  4a2b5c:	afc20028 	sw	v0,40(s8)
  4a2b60:	8fc30024 	lw	v1,36(s8)
  4a2b64:	8fc2001c 	lw	v0,28(s8)
  4a2b68:	00000000 	nop
  4a2b6c:	00621024 	and	v0,v1,v0
  4a2b70:	afc20024 	sw	v0,36(s8)
  4a2b74:	8fc30024 	lw	v1,36(s8)
  4a2b78:	8fc20018 	lw	v0,24(s8)
  4a2b7c:	00000000 	nop
  4a2b80:	00621026 	xor	v0,v1,v0
  4a2b84:	afc20024 	sw	v0,36(s8)
  4a2b88:	8fc30028 	lw	v1,40(s8)
  4a2b8c:	8fc2001c 	lw	v0,28(s8)
  4a2b90:	00000000 	nop
  4a2b94:	00621026 	xor	v0,v1,v0
  4a2b98:	afc20028 	sw	v0,40(s8)
  4a2b9c:	8fc30028 	lw	v1,40(s8)
  4a2ba0:	8fc20020 	lw	v0,32(s8)
  4a2ba4:	00000000 	nop
  4a2ba8:	00621026 	xor	v0,v1,v0
  4a2bac:	afc20028 	sw	v0,40(s8)
  4a2bb0:	8fc30020 	lw	v1,32(s8)
  4a2bb4:	8fc20018 	lw	v0,24(s8)
  4a2bb8:	00000000 	nop
  4a2bbc:	00621026 	xor	v0,v1,v0
  4a2bc0:	afc20020 	sw	v0,32(s8)
  4a2bc4:	8fc30018 	lw	v1,24(s8)
  4a2bc8:	8fc20024 	lw	v0,36(s8)
  4a2bcc:	00000000 	nop
  4a2bd0:	00621024 	and	v0,v1,v0
  4a2bd4:	afc20018 	sw	v0,24(s8)
  4a2bd8:	8fc20020 	lw	v0,32(s8)
  4a2bdc:	00000000 	nop
  4a2be0:	00021027 	nor	v0,zero,v0
  4a2be4:	afc20020 	sw	v0,32(s8)
  4a2be8:	8fc30018 	lw	v1,24(s8)
  4a2bec:	8fc20028 	lw	v0,40(s8)
  4a2bf0:	00000000 	nop
  4a2bf4:	00621026 	xor	v0,v1,v0
  4a2bf8:	afc20018 	sw	v0,24(s8)
  4a2bfc:	8fc30028 	lw	v1,40(s8)
  4a2c00:	8fc20024 	lw	v0,36(s8)
  4a2c04:	00000000 	nop
  4a2c08:	00621025 	or	v0,v1,v0
  4a2c0c:	afc20028 	sw	v0,40(s8)
  4a2c10:	8fc30020 	lw	v1,32(s8)
  4a2c14:	8fc20028 	lw	v0,40(s8)
  4a2c18:	00000000 	nop
  4a2c1c:	00621026 	xor	v0,v1,v0
  4a2c20:	afc20020 	sw	v0,32(s8)
      SETKEY(r1, r3, r0, r2, 24) 
  4a2c24:	8fc2000c 	lw	v0,12(s8)
  4a2c28:	00000000 	nop
  4a2c2c:	24430080 	addiu	v1,v0,128
  4a2c30:	8fc2001c 	lw	v0,28(s8)
  4a2c34:	00000000 	nop
  4a2c38:	ac620000 	sw	v0,0(v1)
  4a2c3c:	8fc2000c 	lw	v0,12(s8)
  4a2c40:	00000000 	nop
  4a2c44:	24430084 	addiu	v1,v0,132
  4a2c48:	8fc20024 	lw	v0,36(s8)
  4a2c4c:	00000000 	nop
  4a2c50:	ac620000 	sw	v0,0(v1)
  4a2c54:	8fc2000c 	lw	v0,12(s8)
  4a2c58:	00000000 	nop
  4a2c5c:	24430088 	addiu	v1,v0,136
  4a2c60:	8fc20018 	lw	v0,24(s8)
  4a2c64:	00000000 	nop
  4a2c68:	ac620000 	sw	v0,0(v1)
  4a2c6c:	8fc2000c 	lw	v0,12(s8)
  4a2c70:	00000000 	nop
  4a2c74:	2443008c 	addiu	v1,v0,140
  4a2c78:	8fc20020 	lw	v0,32(s8)
  4a2c7c:	00000000 	nop
  4a2c80:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 28);
  4a2c84:	8fc2000c 	lw	v0,12(s8)
  4a2c88:	00000000 	nop
  4a2c8c:	24420090 	addiu	v0,v0,144
  4a2c90:	8c420000 	lw	v0,0(v0)
  4a2c94:	00000000 	nop
  4a2c98:	afc20018 	sw	v0,24(s8)
  4a2c9c:	8fc2000c 	lw	v0,12(s8)
  4a2ca0:	00000000 	nop
  4a2ca4:	24420094 	addiu	v0,v0,148
  4a2ca8:	8c420000 	lw	v0,0(v0)
  4a2cac:	00000000 	nop
  4a2cb0:	afc2001c 	sw	v0,28(s8)
  4a2cb4:	8fc2000c 	lw	v0,12(s8)
  4a2cb8:	00000000 	nop
  4a2cbc:	24420098 	addiu	v0,v0,152
  4a2cc0:	8c420000 	lw	v0,0(v0)
  4a2cc4:	00000000 	nop
  4a2cc8:	afc20020 	sw	v0,32(s8)
  4a2ccc:	8fc2000c 	lw	v0,12(s8)
  4a2cd0:	00000000 	nop
  4a2cd4:	2442009c 	addiu	v0,v0,156
  4a2cd8:	8c420000 	lw	v0,0(v0)
  4a2cdc:	00000000 	nop
  4a2ce0:	afc20024 	sw	v0,36(s8)
      S4(r0,r1,r2,r3,r4) 
  4a2ce4:	8fc3001c 	lw	v1,28(s8)
  4a2ce8:	8fc20024 	lw	v0,36(s8)
  4a2cec:	00000000 	nop
  4a2cf0:	00621026 	xor	v0,v1,v0
  4a2cf4:	afc2001c 	sw	v0,28(s8)
  4a2cf8:	8fc20024 	lw	v0,36(s8)
  4a2cfc:	00000000 	nop
  4a2d00:	00021027 	nor	v0,zero,v0
  4a2d04:	afc20024 	sw	v0,36(s8)
  4a2d08:	8fc30020 	lw	v1,32(s8)
  4a2d0c:	8fc20024 	lw	v0,36(s8)
  4a2d10:	00000000 	nop
  4a2d14:	00621026 	xor	v0,v1,v0
  4a2d18:	afc20020 	sw	v0,32(s8)
  4a2d1c:	8fc30024 	lw	v1,36(s8)
  4a2d20:	8fc20018 	lw	v0,24(s8)
  4a2d24:	00000000 	nop
  4a2d28:	00621026 	xor	v0,v1,v0
  4a2d2c:	afc20024 	sw	v0,36(s8)
  4a2d30:	8fc2001c 	lw	v0,28(s8)
  4a2d34:	00000000 	nop
  4a2d38:	afc20028 	sw	v0,40(s8)
  4a2d3c:	8fc3001c 	lw	v1,28(s8)
  4a2d40:	8fc20024 	lw	v0,36(s8)
  4a2d44:	00000000 	nop
  4a2d48:	00621024 	and	v0,v1,v0
  4a2d4c:	afc2001c 	sw	v0,28(s8)
  4a2d50:	8fc3001c 	lw	v1,28(s8)
  4a2d54:	8fc20020 	lw	v0,32(s8)
  4a2d58:	00000000 	nop
  4a2d5c:	00621026 	xor	v0,v1,v0
  4a2d60:	afc2001c 	sw	v0,28(s8)
  4a2d64:	8fc30028 	lw	v1,40(s8)
  4a2d68:	8fc20024 	lw	v0,36(s8)
  4a2d6c:	00000000 	nop
  4a2d70:	00621026 	xor	v0,v1,v0
  4a2d74:	afc20028 	sw	v0,40(s8)
  4a2d78:	8fc30018 	lw	v1,24(s8)
  4a2d7c:	8fc20028 	lw	v0,40(s8)
  4a2d80:	00000000 	nop
  4a2d84:	00621026 	xor	v0,v1,v0
  4a2d88:	afc20018 	sw	v0,24(s8)
  4a2d8c:	8fc30020 	lw	v1,32(s8)
  4a2d90:	8fc20028 	lw	v0,40(s8)
  4a2d94:	00000000 	nop
  4a2d98:	00621024 	and	v0,v1,v0
  4a2d9c:	afc20020 	sw	v0,32(s8)
  4a2da0:	8fc30020 	lw	v1,32(s8)
  4a2da4:	8fc20018 	lw	v0,24(s8)
  4a2da8:	00000000 	nop
  4a2dac:	00621026 	xor	v0,v1,v0
  4a2db0:	afc20020 	sw	v0,32(s8)
  4a2db4:	8fc30018 	lw	v1,24(s8)
  4a2db8:	8fc2001c 	lw	v0,28(s8)
  4a2dbc:	00000000 	nop
  4a2dc0:	00621024 	and	v0,v1,v0
  4a2dc4:	afc20018 	sw	v0,24(s8)
  4a2dc8:	8fc30024 	lw	v1,36(s8)
  4a2dcc:	8fc20018 	lw	v0,24(s8)
  4a2dd0:	00000000 	nop
  4a2dd4:	00621026 	xor	v0,v1,v0
  4a2dd8:	afc20024 	sw	v0,36(s8)
  4a2ddc:	8fc30028 	lw	v1,40(s8)
  4a2de0:	8fc2001c 	lw	v0,28(s8)
  4a2de4:	00000000 	nop
  4a2de8:	00621025 	or	v0,v1,v0
  4a2dec:	afc20028 	sw	v0,40(s8)
  4a2df0:	8fc30028 	lw	v1,40(s8)
  4a2df4:	8fc20018 	lw	v0,24(s8)
  4a2df8:	00000000 	nop
  4a2dfc:	00621026 	xor	v0,v1,v0
  4a2e00:	afc20028 	sw	v0,40(s8)
  4a2e04:	8fc30018 	lw	v1,24(s8)
  4a2e08:	8fc20024 	lw	v0,36(s8)
  4a2e0c:	00000000 	nop
  4a2e10:	00621025 	or	v0,v1,v0
  4a2e14:	afc20018 	sw	v0,24(s8)
  4a2e18:	8fc30018 	lw	v1,24(s8)
  4a2e1c:	8fc20020 	lw	v0,32(s8)
  4a2e20:	00000000 	nop
  4a2e24:	00621026 	xor	v0,v1,v0
  4a2e28:	afc20018 	sw	v0,24(s8)
  4a2e2c:	8fc30020 	lw	v1,32(s8)
  4a2e30:	8fc20024 	lw	v0,36(s8)
  4a2e34:	00000000 	nop
  4a2e38:	00621024 	and	v0,v1,v0
  4a2e3c:	afc20020 	sw	v0,32(s8)
  4a2e40:	8fc20018 	lw	v0,24(s8)
  4a2e44:	00000000 	nop
  4a2e48:	00021027 	nor	v0,zero,v0
  4a2e4c:	afc20018 	sw	v0,24(s8)
  4a2e50:	8fc30028 	lw	v1,40(s8)
  4a2e54:	8fc20020 	lw	v0,32(s8)
  4a2e58:	00000000 	nop
  4a2e5c:	00621026 	xor	v0,v1,v0
  4a2e60:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r0, r3, 28) 
  4a2e64:	8fc2000c 	lw	v0,12(s8)
  4a2e68:	00000000 	nop
  4a2e6c:	24430090 	addiu	v1,v0,144
  4a2e70:	8fc2001c 	lw	v0,28(s8)
  4a2e74:	00000000 	nop
  4a2e78:	ac620000 	sw	v0,0(v1)
  4a2e7c:	8fc2000c 	lw	v0,12(s8)
  4a2e80:	00000000 	nop
  4a2e84:	24430094 	addiu	v1,v0,148
  4a2e88:	8fc20028 	lw	v0,40(s8)
  4a2e8c:	00000000 	nop
  4a2e90:	ac620000 	sw	v0,0(v1)
  4a2e94:	8fc2000c 	lw	v0,12(s8)
  4a2e98:	00000000 	nop
  4a2e9c:	24430098 	addiu	v1,v0,152
  4a2ea0:	8fc20018 	lw	v0,24(s8)
  4a2ea4:	00000000 	nop
  4a2ea8:	ac620000 	sw	v0,0(v1)
  4a2eac:	8fc2000c 	lw	v0,12(s8)
  4a2eb0:	00000000 	nop
  4a2eb4:	2443009c 	addiu	v1,v0,156
  4a2eb8:	8fc20024 	lw	v0,36(s8)
  4a2ebc:	00000000 	nop
  4a2ec0:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 32);
  4a2ec4:	8fc2000c 	lw	v0,12(s8)
  4a2ec8:	00000000 	nop
  4a2ecc:	244200a0 	addiu	v0,v0,160
  4a2ed0:	8c420000 	lw	v0,0(v0)
  4a2ed4:	00000000 	nop
  4a2ed8:	afc20018 	sw	v0,24(s8)
  4a2edc:	8fc2000c 	lw	v0,12(s8)
  4a2ee0:	00000000 	nop
  4a2ee4:	244200a4 	addiu	v0,v0,164
  4a2ee8:	8c420000 	lw	v0,0(v0)
  4a2eec:	00000000 	nop
  4a2ef0:	afc2001c 	sw	v0,28(s8)
  4a2ef4:	8fc2000c 	lw	v0,12(s8)
  4a2ef8:	00000000 	nop
  4a2efc:	244200a8 	addiu	v0,v0,168
  4a2f00:	8c420000 	lw	v0,0(v0)
  4a2f04:	00000000 	nop
  4a2f08:	afc20020 	sw	v0,32(s8)
  4a2f0c:	8fc2000c 	lw	v0,12(s8)
  4a2f10:	00000000 	nop
  4a2f14:	244200ac 	addiu	v0,v0,172
  4a2f18:	8c420000 	lw	v0,0(v0)
  4a2f1c:	00000000 	nop
  4a2f20:	afc20024 	sw	v0,36(s8)
      S3(r0,r1,r2,r3,r4);
  4a2f24:	8fc20018 	lw	v0,24(s8)
  4a2f28:	00000000 	nop
  4a2f2c:	afc20028 	sw	v0,40(s8)
  4a2f30:	8fc30018 	lw	v1,24(s8)
  4a2f34:	8fc20024 	lw	v0,36(s8)
  4a2f38:	00000000 	nop
  4a2f3c:	00621025 	or	v0,v1,v0
  4a2f40:	afc20018 	sw	v0,24(s8)
  4a2f44:	8fc30024 	lw	v1,36(s8)
  4a2f48:	8fc2001c 	lw	v0,28(s8)
  4a2f4c:	00000000 	nop
  4a2f50:	00621026 	xor	v0,v1,v0
  4a2f54:	afc20024 	sw	v0,36(s8)
  4a2f58:	8fc3001c 	lw	v1,28(s8)
  4a2f5c:	8fc20028 	lw	v0,40(s8)
  4a2f60:	00000000 	nop
  4a2f64:	00621024 	and	v0,v1,v0
  4a2f68:	afc2001c 	sw	v0,28(s8)
  4a2f6c:	8fc30028 	lw	v1,40(s8)
  4a2f70:	8fc20020 	lw	v0,32(s8)
  4a2f74:	00000000 	nop
  4a2f78:	00621026 	xor	v0,v1,v0
  4a2f7c:	afc20028 	sw	v0,40(s8)
  4a2f80:	8fc30020 	lw	v1,32(s8)
  4a2f84:	8fc20024 	lw	v0,36(s8)
  4a2f88:	00000000 	nop
  4a2f8c:	00621026 	xor	v0,v1,v0
  4a2f90:	afc20020 	sw	v0,32(s8)
  4a2f94:	8fc30024 	lw	v1,36(s8)
  4a2f98:	8fc20018 	lw	v0,24(s8)
  4a2f9c:	00000000 	nop
  4a2fa0:	00621024 	and	v0,v1,v0
  4a2fa4:	afc20024 	sw	v0,36(s8)
  4a2fa8:	8fc30028 	lw	v1,40(s8)
  4a2fac:	8fc2001c 	lw	v0,28(s8)
  4a2fb0:	00000000 	nop
  4a2fb4:	00621025 	or	v0,v1,v0
  4a2fb8:	afc20028 	sw	v0,40(s8)
  4a2fbc:	8fc30024 	lw	v1,36(s8)
  4a2fc0:	8fc20028 	lw	v0,40(s8)
  4a2fc4:	00000000 	nop
  4a2fc8:	00621026 	xor	v0,v1,v0
  4a2fcc:	afc20024 	sw	v0,36(s8)
  4a2fd0:	8fc30018 	lw	v1,24(s8)
  4a2fd4:	8fc2001c 	lw	v0,28(s8)
  4a2fd8:	00000000 	nop
  4a2fdc:	00621026 	xor	v0,v1,v0
  4a2fe0:	afc20018 	sw	v0,24(s8)
  4a2fe4:	8fc30028 	lw	v1,40(s8)
  4a2fe8:	8fc20018 	lw	v0,24(s8)
  4a2fec:	00000000 	nop
  4a2ff0:	00621024 	and	v0,v1,v0
  4a2ff4:	afc20028 	sw	v0,40(s8)
  4a2ff8:	8fc3001c 	lw	v1,28(s8)
  4a2ffc:	8fc20024 	lw	v0,36(s8)
  4a3000:	00000000 	nop
  4a3004:	00621026 	xor	v0,v1,v0
  4a3008:	afc2001c 	sw	v0,28(s8)
  4a300c:	8fc30028 	lw	v1,40(s8)
  4a3010:	8fc20020 	lw	v0,32(s8)
  4a3014:	00000000 	nop
  4a3018:	00621026 	xor	v0,v1,v0
  4a301c:	afc20028 	sw	v0,40(s8)
  4a3020:	8fc3001c 	lw	v1,28(s8)
  4a3024:	8fc20018 	lw	v0,24(s8)
  4a3028:	00000000 	nop
  4a302c:	00621025 	or	v0,v1,v0
  4a3030:	afc2001c 	sw	v0,28(s8)
  4a3034:	8fc3001c 	lw	v1,28(s8)
  4a3038:	8fc20020 	lw	v0,32(s8)
  4a303c:	00000000 	nop
  4a3040:	00621026 	xor	v0,v1,v0
  4a3044:	afc2001c 	sw	v0,28(s8)
  4a3048:	8fc30018 	lw	v1,24(s8)
  4a304c:	8fc20024 	lw	v0,36(s8)
  4a3050:	00000000 	nop
  4a3054:	00621026 	xor	v0,v1,v0
  4a3058:	afc20018 	sw	v0,24(s8)
  4a305c:	8fc2001c 	lw	v0,28(s8)
  4a3060:	00000000 	nop
  4a3064:	afc20020 	sw	v0,32(s8)
  4a3068:	8fc3001c 	lw	v1,28(s8)
  4a306c:	8fc20024 	lw	v0,36(s8)
  4a3070:	00000000 	nop
  4a3074:	00621025 	or	v0,v1,v0
  4a3078:	afc2001c 	sw	v0,28(s8)
  4a307c:	8fc3001c 	lw	v1,28(s8)
  4a3080:	8fc20018 	lw	v0,24(s8)
  4a3084:	00000000 	nop
  4a3088:	00621026 	xor	v0,v1,v0
  4a308c:	afc2001c 	sw	v0,28(s8)
      SETKEY(r1, r2, r3, r4, 32) 
  4a3090:	8fc2000c 	lw	v0,12(s8)
  4a3094:	00000000 	nop
  4a3098:	244300a0 	addiu	v1,v0,160
  4a309c:	8fc2001c 	lw	v0,28(s8)
  4a30a0:	00000000 	nop
  4a30a4:	ac620000 	sw	v0,0(v1)
  4a30a8:	8fc2000c 	lw	v0,12(s8)
  4a30ac:	00000000 	nop
  4a30b0:	244300a4 	addiu	v1,v0,164
  4a30b4:	8fc20020 	lw	v0,32(s8)
  4a30b8:	00000000 	nop
  4a30bc:	ac620000 	sw	v0,0(v1)
  4a30c0:	8fc2000c 	lw	v0,12(s8)
  4a30c4:	00000000 	nop
  4a30c8:	244300a8 	addiu	v1,v0,168
  4a30cc:	8fc20024 	lw	v0,36(s8)
  4a30d0:	00000000 	nop
  4a30d4:	ac620000 	sw	v0,0(v1)
  4a30d8:	8fc2000c 	lw	v0,12(s8)
  4a30dc:	00000000 	nop
  4a30e0:	244300ac 	addiu	v1,v0,172
  4a30e4:	8fc20028 	lw	v0,40(s8)
  4a30e8:	00000000 	nop
  4a30ec:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 36);
  4a30f0:	8fc2000c 	lw	v0,12(s8)
  4a30f4:	00000000 	nop
  4a30f8:	244200b0 	addiu	v0,v0,176
  4a30fc:	8c420000 	lw	v0,0(v0)
  4a3100:	00000000 	nop
  4a3104:	afc20018 	sw	v0,24(s8)
  4a3108:	8fc2000c 	lw	v0,12(s8)
  4a310c:	00000000 	nop
  4a3110:	244200b4 	addiu	v0,v0,180
  4a3114:	8c420000 	lw	v0,0(v0)
  4a3118:	00000000 	nop
  4a311c:	afc2001c 	sw	v0,28(s8)
  4a3120:	8fc2000c 	lw	v0,12(s8)
  4a3124:	00000000 	nop
  4a3128:	244200b8 	addiu	v0,v0,184
  4a312c:	8c420000 	lw	v0,0(v0)
  4a3130:	00000000 	nop
  4a3134:	afc20020 	sw	v0,32(s8)
  4a3138:	8fc2000c 	lw	v0,12(s8)
  4a313c:	00000000 	nop
  4a3140:	244200bc 	addiu	v0,v0,188
  4a3144:	8c420000 	lw	v0,0(v0)
  4a3148:	00000000 	nop
  4a314c:	afc20024 	sw	v0,36(s8)
      S2(r0,r1,r2,r3,r4);
  4a3150:	8fc20018 	lw	v0,24(s8)
  4a3154:	00000000 	nop
  4a3158:	afc20028 	sw	v0,40(s8)
  4a315c:	8fc30018 	lw	v1,24(s8)
  4a3160:	8fc20020 	lw	v0,32(s8)
  4a3164:	00000000 	nop
  4a3168:	00621024 	and	v0,v1,v0
  4a316c:	afc20018 	sw	v0,24(s8)
  4a3170:	8fc30018 	lw	v1,24(s8)
  4a3174:	8fc20024 	lw	v0,36(s8)
  4a3178:	00000000 	nop
  4a317c:	00621026 	xor	v0,v1,v0
  4a3180:	afc20018 	sw	v0,24(s8)
  4a3184:	8fc30020 	lw	v1,32(s8)
  4a3188:	8fc2001c 	lw	v0,28(s8)
  4a318c:	00000000 	nop
  4a3190:	00621026 	xor	v0,v1,v0
  4a3194:	afc20020 	sw	v0,32(s8)
  4a3198:	8fc30020 	lw	v1,32(s8)
  4a319c:	8fc20018 	lw	v0,24(s8)
  4a31a0:	00000000 	nop
  4a31a4:	00621026 	xor	v0,v1,v0
  4a31a8:	afc20020 	sw	v0,32(s8)
  4a31ac:	8fc30024 	lw	v1,36(s8)
  4a31b0:	8fc20028 	lw	v0,40(s8)
  4a31b4:	00000000 	nop
  4a31b8:	00621025 	or	v0,v1,v0
  4a31bc:	afc20024 	sw	v0,36(s8)
  4a31c0:	8fc30024 	lw	v1,36(s8)
  4a31c4:	8fc2001c 	lw	v0,28(s8)
  4a31c8:	00000000 	nop
  4a31cc:	00621026 	xor	v0,v1,v0
  4a31d0:	afc20024 	sw	v0,36(s8)
  4a31d4:	8fc30028 	lw	v1,40(s8)
  4a31d8:	8fc20020 	lw	v0,32(s8)
  4a31dc:	00000000 	nop
  4a31e0:	00621026 	xor	v0,v1,v0
  4a31e4:	afc20028 	sw	v0,40(s8)
  4a31e8:	8fc20024 	lw	v0,36(s8)
  4a31ec:	00000000 	nop
  4a31f0:	afc2001c 	sw	v0,28(s8)
  4a31f4:	8fc30024 	lw	v1,36(s8)
  4a31f8:	8fc20028 	lw	v0,40(s8)
  4a31fc:	00000000 	nop
  4a3200:	00621025 	or	v0,v1,v0
  4a3204:	afc20024 	sw	v0,36(s8)
  4a3208:	8fc30024 	lw	v1,36(s8)
  4a320c:	8fc20018 	lw	v0,24(s8)
  4a3210:	00000000 	nop
  4a3214:	00621026 	xor	v0,v1,v0
  4a3218:	afc20024 	sw	v0,36(s8)
  4a321c:	8fc30018 	lw	v1,24(s8)
  4a3220:	8fc2001c 	lw	v0,28(s8)
  4a3224:	00000000 	nop
  4a3228:	00621024 	and	v0,v1,v0
  4a322c:	afc20018 	sw	v0,24(s8)
  4a3230:	8fc30028 	lw	v1,40(s8)
  4a3234:	8fc20018 	lw	v0,24(s8)
  4a3238:	00000000 	nop
  4a323c:	00621026 	xor	v0,v1,v0
  4a3240:	afc20028 	sw	v0,40(s8)
  4a3244:	8fc3001c 	lw	v1,28(s8)
  4a3248:	8fc20024 	lw	v0,36(s8)
  4a324c:	00000000 	nop
  4a3250:	00621026 	xor	v0,v1,v0
  4a3254:	afc2001c 	sw	v0,28(s8)
  4a3258:	8fc3001c 	lw	v1,28(s8)
  4a325c:	8fc20028 	lw	v0,40(s8)
  4a3260:	00000000 	nop
  4a3264:	00621026 	xor	v0,v1,v0
  4a3268:	afc2001c 	sw	v0,28(s8)
  4a326c:	8fc20028 	lw	v0,40(s8)
  4a3270:	00000000 	nop
  4a3274:	00021027 	nor	v0,zero,v0
  4a3278:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r3, r1, r4, 36) 
  4a327c:	8fc2000c 	lw	v0,12(s8)
  4a3280:	00000000 	nop
  4a3284:	244300b0 	addiu	v1,v0,176
  4a3288:	8fc20020 	lw	v0,32(s8)
  4a328c:	00000000 	nop
  4a3290:	ac620000 	sw	v0,0(v1)
  4a3294:	8fc2000c 	lw	v0,12(s8)
  4a3298:	00000000 	nop
  4a329c:	244300b4 	addiu	v1,v0,180
  4a32a0:	8fc20024 	lw	v0,36(s8)
  4a32a4:	00000000 	nop
  4a32a8:	ac620000 	sw	v0,0(v1)
  4a32ac:	8fc2000c 	lw	v0,12(s8)
  4a32b0:	00000000 	nop
  4a32b4:	244300b8 	addiu	v1,v0,184
  4a32b8:	8fc2001c 	lw	v0,28(s8)
  4a32bc:	00000000 	nop
  4a32c0:	ac620000 	sw	v0,0(v1)
  4a32c4:	8fc2000c 	lw	v0,12(s8)
  4a32c8:	00000000 	nop
  4a32cc:	244300bc 	addiu	v1,v0,188
  4a32d0:	8fc20028 	lw	v0,40(s8)
  4a32d4:	00000000 	nop
  4a32d8:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 40);
  4a32dc:	8fc2000c 	lw	v0,12(s8)
  4a32e0:	00000000 	nop
  4a32e4:	244200c0 	addiu	v0,v0,192
  4a32e8:	8c420000 	lw	v0,0(v0)
  4a32ec:	00000000 	nop
  4a32f0:	afc20018 	sw	v0,24(s8)
  4a32f4:	8fc2000c 	lw	v0,12(s8)
  4a32f8:	00000000 	nop
  4a32fc:	244200c4 	addiu	v0,v0,196
  4a3300:	8c420000 	lw	v0,0(v0)
  4a3304:	00000000 	nop
  4a3308:	afc2001c 	sw	v0,28(s8)
  4a330c:	8fc2000c 	lw	v0,12(s8)
  4a3310:	00000000 	nop
  4a3314:	244200c8 	addiu	v0,v0,200
  4a3318:	8c420000 	lw	v0,0(v0)
  4a331c:	00000000 	nop
  4a3320:	afc20020 	sw	v0,32(s8)
  4a3324:	8fc2000c 	lw	v0,12(s8)
  4a3328:	00000000 	nop
  4a332c:	244200cc 	addiu	v0,v0,204
  4a3330:	8c420000 	lw	v0,0(v0)
  4a3334:	00000000 	nop
  4a3338:	afc20024 	sw	v0,36(s8)
      S1(r0,r1,r2,r3,r4);
  4a333c:	8fc2001c 	lw	v0,28(s8)
  4a3340:	00000000 	nop
  4a3344:	00021027 	nor	v0,zero,v0
  4a3348:	afc2001c 	sw	v0,28(s8)
  4a334c:	8fc20018 	lw	v0,24(s8)
  4a3350:	00000000 	nop
  4a3354:	afc20028 	sw	v0,40(s8)
  4a3358:	8fc30018 	lw	v1,24(s8)
  4a335c:	8fc2001c 	lw	v0,28(s8)
  4a3360:	00000000 	nop
  4a3364:	00621026 	xor	v0,v1,v0
  4a3368:	afc20018 	sw	v0,24(s8)
  4a336c:	8fc30028 	lw	v1,40(s8)
  4a3370:	8fc2001c 	lw	v0,28(s8)
  4a3374:	00000000 	nop
  4a3378:	00621025 	or	v0,v1,v0
  4a337c:	afc20028 	sw	v0,40(s8)
  4a3380:	8fc30028 	lw	v1,40(s8)
  4a3384:	8fc20024 	lw	v0,36(s8)
  4a3388:	00000000 	nop
  4a338c:	00621026 	xor	v0,v1,v0
  4a3390:	afc20028 	sw	v0,40(s8)
  4a3394:	8fc30024 	lw	v1,36(s8)
  4a3398:	8fc20018 	lw	v0,24(s8)
  4a339c:	00000000 	nop
  4a33a0:	00621024 	and	v0,v1,v0
  4a33a4:	afc20024 	sw	v0,36(s8)
  4a33a8:	8fc30020 	lw	v1,32(s8)
  4a33ac:	8fc20028 	lw	v0,40(s8)
  4a33b0:	00000000 	nop
  4a33b4:	00621026 	xor	v0,v1,v0
  4a33b8:	afc20020 	sw	v0,32(s8)
  4a33bc:	8fc30024 	lw	v1,36(s8)
  4a33c0:	8fc2001c 	lw	v0,28(s8)
  4a33c4:	00000000 	nop
  4a33c8:	00621026 	xor	v0,v1,v0
  4a33cc:	afc20024 	sw	v0,36(s8)
  4a33d0:	8fc30024 	lw	v1,36(s8)
  4a33d4:	8fc20020 	lw	v0,32(s8)
  4a33d8:	00000000 	nop
  4a33dc:	00621025 	or	v0,v1,v0
  4a33e0:	afc20024 	sw	v0,36(s8)
  4a33e4:	8fc30018 	lw	v1,24(s8)
  4a33e8:	8fc20028 	lw	v0,40(s8)
  4a33ec:	00000000 	nop
  4a33f0:	00621026 	xor	v0,v1,v0
  4a33f4:	afc20018 	sw	v0,24(s8)
  4a33f8:	8fc30024 	lw	v1,36(s8)
  4a33fc:	8fc20018 	lw	v0,24(s8)
  4a3400:	00000000 	nop
  4a3404:	00621026 	xor	v0,v1,v0
  4a3408:	afc20024 	sw	v0,36(s8)
  4a340c:	8fc3001c 	lw	v1,28(s8)
  4a3410:	8fc20020 	lw	v0,32(s8)
  4a3414:	00000000 	nop
  4a3418:	00621024 	and	v0,v1,v0
  4a341c:	afc2001c 	sw	v0,28(s8)
  4a3420:	8fc30018 	lw	v1,24(s8)
  4a3424:	8fc2001c 	lw	v0,28(s8)
  4a3428:	00000000 	nop
  4a342c:	00621025 	or	v0,v1,v0
  4a3430:	afc20018 	sw	v0,24(s8)
  4a3434:	8fc3001c 	lw	v1,28(s8)
  4a3438:	8fc20028 	lw	v0,40(s8)
  4a343c:	00000000 	nop
  4a3440:	00621026 	xor	v0,v1,v0
  4a3444:	afc2001c 	sw	v0,28(s8)
  4a3448:	8fc30018 	lw	v1,24(s8)
  4a344c:	8fc20020 	lw	v0,32(s8)
  4a3450:	00000000 	nop
  4a3454:	00621026 	xor	v0,v1,v0
  4a3458:	afc20018 	sw	v0,24(s8)
  4a345c:	8fc30028 	lw	v1,40(s8)
  4a3460:	8fc20024 	lw	v0,36(s8)
  4a3464:	00000000 	nop
  4a3468:	00621025 	or	v0,v1,v0
  4a346c:	afc20028 	sw	v0,40(s8)
  4a3470:	8fc30018 	lw	v1,24(s8)
  4a3474:	8fc20028 	lw	v0,40(s8)
  4a3478:	00000000 	nop
  4a347c:	00621026 	xor	v0,v1,v0
  4a3480:	afc20018 	sw	v0,24(s8)
  4a3484:	8fc20028 	lw	v0,40(s8)
  4a3488:	00000000 	nop
  4a348c:	00021027 	nor	v0,zero,v0
  4a3490:	afc20028 	sw	v0,40(s8)
  4a3494:	8fc3001c 	lw	v1,28(s8)
  4a3498:	8fc20024 	lw	v0,36(s8)
  4a349c:	00000000 	nop
  4a34a0:	00621026 	xor	v0,v1,v0
  4a34a4:	afc2001c 	sw	v0,28(s8)
  4a34a8:	8fc30028 	lw	v1,40(s8)
  4a34ac:	8fc20020 	lw	v0,32(s8)
  4a34b0:	00000000 	nop
  4a34b4:	00621024 	and	v0,v1,v0
  4a34b8:	afc20028 	sw	v0,40(s8)
  4a34bc:	8fc2001c 	lw	v0,28(s8)
  4a34c0:	00000000 	nop
  4a34c4:	00021027 	nor	v0,zero,v0
  4a34c8:	afc2001c 	sw	v0,28(s8)
  4a34cc:	8fc30028 	lw	v1,40(s8)
  4a34d0:	8fc20018 	lw	v0,24(s8)
  4a34d4:	00000000 	nop
  4a34d8:	00621026 	xor	v0,v1,v0
  4a34dc:	afc20028 	sw	v0,40(s8)
  4a34e0:	8fc3001c 	lw	v1,28(s8)
  4a34e4:	8fc20028 	lw	v0,40(s8)
  4a34e8:	00000000 	nop
  4a34ec:	00621026 	xor	v0,v1,v0
  4a34f0:	afc2001c 	sw	v0,28(s8)
      SETKEY(r3, r1, r2, r0, 40) 
  4a34f4:	8fc2000c 	lw	v0,12(s8)
  4a34f8:	00000000 	nop
  4a34fc:	244300c0 	addiu	v1,v0,192
  4a3500:	8fc20024 	lw	v0,36(s8)
  4a3504:	00000000 	nop
  4a3508:	ac620000 	sw	v0,0(v1)
  4a350c:	8fc2000c 	lw	v0,12(s8)
  4a3510:	00000000 	nop
  4a3514:	244300c4 	addiu	v1,v0,196
  4a3518:	8fc2001c 	lw	v0,28(s8)
  4a351c:	00000000 	nop
  4a3520:	ac620000 	sw	v0,0(v1)
  4a3524:	8fc2000c 	lw	v0,12(s8)
  4a3528:	00000000 	nop
  4a352c:	244300c8 	addiu	v1,v0,200
  4a3530:	8fc20020 	lw	v0,32(s8)
  4a3534:	00000000 	nop
  4a3538:	ac620000 	sw	v0,0(v1)
  4a353c:	8fc2000c 	lw	v0,12(s8)
  4a3540:	00000000 	nop
  4a3544:	244300cc 	addiu	v1,v0,204
  4a3548:	8fc20018 	lw	v0,24(s8)
  4a354c:	00000000 	nop
  4a3550:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 44);
  4a3554:	8fc2000c 	lw	v0,12(s8)
  4a3558:	00000000 	nop
  4a355c:	244200d0 	addiu	v0,v0,208
  4a3560:	8c420000 	lw	v0,0(v0)
  4a3564:	00000000 	nop
  4a3568:	afc20018 	sw	v0,24(s8)
  4a356c:	8fc2000c 	lw	v0,12(s8)
  4a3570:	00000000 	nop
  4a3574:	244200d4 	addiu	v0,v0,212
  4a3578:	8c420000 	lw	v0,0(v0)
  4a357c:	00000000 	nop
  4a3580:	afc2001c 	sw	v0,28(s8)
  4a3584:	8fc2000c 	lw	v0,12(s8)
  4a3588:	00000000 	nop
  4a358c:	244200d8 	addiu	v0,v0,216
  4a3590:	8c420000 	lw	v0,0(v0)
  4a3594:	00000000 	nop
  4a3598:	afc20020 	sw	v0,32(s8)
  4a359c:	8fc2000c 	lw	v0,12(s8)
  4a35a0:	00000000 	nop
  4a35a4:	244200dc 	addiu	v0,v0,220
  4a35a8:	8c420000 	lw	v0,0(v0)
  4a35ac:	00000000 	nop
  4a35b0:	afc20024 	sw	v0,36(s8)
      S0(r0,r1,r2,r3,r4);
  4a35b4:	8fc30024 	lw	v1,36(s8)
  4a35b8:	8fc20018 	lw	v0,24(s8)
  4a35bc:	00000000 	nop
  4a35c0:	00621026 	xor	v0,v1,v0
  4a35c4:	afc20024 	sw	v0,36(s8)
  4a35c8:	8fc2001c 	lw	v0,28(s8)
  4a35cc:	00000000 	nop
  4a35d0:	afc20028 	sw	v0,40(s8)
  4a35d4:	8fc3001c 	lw	v1,28(s8)
  4a35d8:	8fc20024 	lw	v0,36(s8)
  4a35dc:	00000000 	nop
  4a35e0:	00621024 	and	v0,v1,v0
  4a35e4:	afc2001c 	sw	v0,28(s8)
  4a35e8:	8fc30028 	lw	v1,40(s8)
  4a35ec:	8fc20020 	lw	v0,32(s8)
  4a35f0:	00000000 	nop
  4a35f4:	00621026 	xor	v0,v1,v0
  4a35f8:	afc20028 	sw	v0,40(s8)
  4a35fc:	8fc3001c 	lw	v1,28(s8)
  4a3600:	8fc20018 	lw	v0,24(s8)
  4a3604:	00000000 	nop
  4a3608:	00621026 	xor	v0,v1,v0
  4a360c:	afc2001c 	sw	v0,28(s8)
  4a3610:	8fc30018 	lw	v1,24(s8)
  4a3614:	8fc20024 	lw	v0,36(s8)
  4a3618:	00000000 	nop
  4a361c:	00621025 	or	v0,v1,v0
  4a3620:	afc20018 	sw	v0,24(s8)
  4a3624:	8fc30018 	lw	v1,24(s8)
  4a3628:	8fc20028 	lw	v0,40(s8)
  4a362c:	00000000 	nop
  4a3630:	00621026 	xor	v0,v1,v0
  4a3634:	afc20018 	sw	v0,24(s8)
  4a3638:	8fc30028 	lw	v1,40(s8)
  4a363c:	8fc20024 	lw	v0,36(s8)
  4a3640:	00000000 	nop
  4a3644:	00621026 	xor	v0,v1,v0
  4a3648:	afc20028 	sw	v0,40(s8)
  4a364c:	8fc30024 	lw	v1,36(s8)
  4a3650:	8fc20020 	lw	v0,32(s8)
  4a3654:	00000000 	nop
  4a3658:	00621026 	xor	v0,v1,v0
  4a365c:	afc20024 	sw	v0,36(s8)
  4a3660:	8fc30020 	lw	v1,32(s8)
  4a3664:	8fc2001c 	lw	v0,28(s8)
  4a3668:	00000000 	nop
  4a366c:	00621025 	or	v0,v1,v0
  4a3670:	afc20020 	sw	v0,32(s8)
  4a3674:	8fc30020 	lw	v1,32(s8)
  4a3678:	8fc20028 	lw	v0,40(s8)
  4a367c:	00000000 	nop
  4a3680:	00621026 	xor	v0,v1,v0
  4a3684:	afc20020 	sw	v0,32(s8)
  4a3688:	8fc20028 	lw	v0,40(s8)
  4a368c:	00000000 	nop
  4a3690:	00021027 	nor	v0,zero,v0
  4a3694:	afc20028 	sw	v0,40(s8)
  4a3698:	8fc30028 	lw	v1,40(s8)
  4a369c:	8fc2001c 	lw	v0,28(s8)
  4a36a0:	00000000 	nop
  4a36a4:	00621025 	or	v0,v1,v0
  4a36a8:	afc20028 	sw	v0,40(s8)
  4a36ac:	8fc3001c 	lw	v1,28(s8)
  4a36b0:	8fc20024 	lw	v0,36(s8)
  4a36b4:	00000000 	nop
  4a36b8:	00621026 	xor	v0,v1,v0
  4a36bc:	afc2001c 	sw	v0,28(s8)
  4a36c0:	8fc3001c 	lw	v1,28(s8)
  4a36c4:	8fc20028 	lw	v0,40(s8)
  4a36c8:	00000000 	nop
  4a36cc:	00621026 	xor	v0,v1,v0
  4a36d0:	afc2001c 	sw	v0,28(s8)
  4a36d4:	8fc30024 	lw	v1,36(s8)
  4a36d8:	8fc20018 	lw	v0,24(s8)
  4a36dc:	00000000 	nop
  4a36e0:	00621025 	or	v0,v1,v0
  4a36e4:	afc20024 	sw	v0,36(s8)
  4a36e8:	8fc3001c 	lw	v1,28(s8)
  4a36ec:	8fc20024 	lw	v0,36(s8)
  4a36f0:	00000000 	nop
  4a36f4:	00621026 	xor	v0,v1,v0
  4a36f8:	afc2001c 	sw	v0,28(s8)
  4a36fc:	8fc30028 	lw	v1,40(s8)
  4a3700:	8fc20024 	lw	v0,36(s8)
  4a3704:	00000000 	nop
  4a3708:	00621026 	xor	v0,v1,v0
  4a370c:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r2, r0, 44) 
  4a3710:	8fc2000c 	lw	v0,12(s8)
  4a3714:	00000000 	nop
  4a3718:	244300d0 	addiu	v1,v0,208
  4a371c:	8fc2001c 	lw	v0,28(s8)
  4a3720:	00000000 	nop
  4a3724:	ac620000 	sw	v0,0(v1)
  4a3728:	8fc2000c 	lw	v0,12(s8)
  4a372c:	00000000 	nop
  4a3730:	244300d4 	addiu	v1,v0,212
  4a3734:	8fc20028 	lw	v0,40(s8)
  4a3738:	00000000 	nop
  4a373c:	ac620000 	sw	v0,0(v1)
  4a3740:	8fc2000c 	lw	v0,12(s8)
  4a3744:	00000000 	nop
  4a3748:	244300d8 	addiu	v1,v0,216
  4a374c:	8fc20020 	lw	v0,32(s8)
  4a3750:	00000000 	nop
  4a3754:	ac620000 	sw	v0,0(v1)
  4a3758:	8fc2000c 	lw	v0,12(s8)
  4a375c:	00000000 	nop
  4a3760:	244300dc 	addiu	v1,v0,220
  4a3764:	8fc20018 	lw	v0,24(s8)
  4a3768:	00000000 	nop
  4a376c:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 48);
  4a3770:	8fc2000c 	lw	v0,12(s8)
  4a3774:	00000000 	nop
  4a3778:	244200e0 	addiu	v0,v0,224
  4a377c:	8c420000 	lw	v0,0(v0)
  4a3780:	00000000 	nop
  4a3784:	afc20018 	sw	v0,24(s8)
  4a3788:	8fc2000c 	lw	v0,12(s8)
  4a378c:	00000000 	nop
  4a3790:	244200e4 	addiu	v0,v0,228
  4a3794:	8c420000 	lw	v0,0(v0)
  4a3798:	00000000 	nop
  4a379c:	afc2001c 	sw	v0,28(s8)
  4a37a0:	8fc2000c 	lw	v0,12(s8)
  4a37a4:	00000000 	nop
  4a37a8:	244200e8 	addiu	v0,v0,232
  4a37ac:	8c420000 	lw	v0,0(v0)
  4a37b0:	00000000 	nop
  4a37b4:	afc20020 	sw	v0,32(s8)
  4a37b8:	8fc2000c 	lw	v0,12(s8)
  4a37bc:	00000000 	nop
  4a37c0:	244200ec 	addiu	v0,v0,236
  4a37c4:	8c420000 	lw	v0,0(v0)
  4a37c8:	00000000 	nop
  4a37cc:	afc20024 	sw	v0,36(s8)
      S7(r0,r1,r2,r3,r4);
  4a37d0:	8fc20020 	lw	v0,32(s8)
  4a37d4:	00000000 	nop
  4a37d8:	afc20028 	sw	v0,40(s8)
  4a37dc:	8fc30020 	lw	v1,32(s8)
  4a37e0:	8fc2001c 	lw	v0,28(s8)
  4a37e4:	00000000 	nop
  4a37e8:	00621024 	and	v0,v1,v0
  4a37ec:	afc20020 	sw	v0,32(s8)
  4a37f0:	8fc30020 	lw	v1,32(s8)
  4a37f4:	8fc20024 	lw	v0,36(s8)
  4a37f8:	00000000 	nop
  4a37fc:	00621026 	xor	v0,v1,v0
  4a3800:	afc20020 	sw	v0,32(s8)
  4a3804:	8fc30024 	lw	v1,36(s8)
  4a3808:	8fc2001c 	lw	v0,28(s8)
  4a380c:	00000000 	nop
  4a3810:	00621024 	and	v0,v1,v0
  4a3814:	afc20024 	sw	v0,36(s8)
  4a3818:	8fc30028 	lw	v1,40(s8)
  4a381c:	8fc20020 	lw	v0,32(s8)
  4a3820:	00000000 	nop
  4a3824:	00621026 	xor	v0,v1,v0
  4a3828:	afc20028 	sw	v0,40(s8)
  4a382c:	8fc30020 	lw	v1,32(s8)
  4a3830:	8fc2001c 	lw	v0,28(s8)
  4a3834:	00000000 	nop
  4a3838:	00621026 	xor	v0,v1,v0
  4a383c:	afc20020 	sw	v0,32(s8)
  4a3840:	8fc3001c 	lw	v1,28(s8)
  4a3844:	8fc20018 	lw	v0,24(s8)
  4a3848:	00000000 	nop
  4a384c:	00621026 	xor	v0,v1,v0
  4a3850:	afc2001c 	sw	v0,28(s8)
  4a3854:	8fc30018 	lw	v1,24(s8)
  4a3858:	8fc20028 	lw	v0,40(s8)
  4a385c:	00000000 	nop
  4a3860:	00621025 	or	v0,v1,v0
  4a3864:	afc20018 	sw	v0,24(s8)
  4a3868:	8fc30018 	lw	v1,24(s8)
  4a386c:	8fc20020 	lw	v0,32(s8)
  4a3870:	00000000 	nop
  4a3874:	00621026 	xor	v0,v1,v0
  4a3878:	afc20018 	sw	v0,24(s8)
  4a387c:	8fc30024 	lw	v1,36(s8)
  4a3880:	8fc2001c 	lw	v0,28(s8)
  4a3884:	00000000 	nop
  4a3888:	00621026 	xor	v0,v1,v0
  4a388c:	afc20024 	sw	v0,36(s8)
  4a3890:	8fc30020 	lw	v1,32(s8)
  4a3894:	8fc20024 	lw	v0,36(s8)
  4a3898:	00000000 	nop
  4a389c:	00621026 	xor	v0,v1,v0
  4a38a0:	afc20020 	sw	v0,32(s8)
  4a38a4:	8fc30024 	lw	v1,36(s8)
  4a38a8:	8fc20018 	lw	v0,24(s8)
  4a38ac:	00000000 	nop
  4a38b0:	00621024 	and	v0,v1,v0
  4a38b4:	afc20024 	sw	v0,36(s8)
  4a38b8:	8fc30024 	lw	v1,36(s8)
  4a38bc:	8fc20028 	lw	v0,40(s8)
  4a38c0:	00000000 	nop
  4a38c4:	00621026 	xor	v0,v1,v0
  4a38c8:	afc20024 	sw	v0,36(s8)
  4a38cc:	8fc30028 	lw	v1,40(s8)
  4a38d0:	8fc20020 	lw	v0,32(s8)
  4a38d4:	00000000 	nop
  4a38d8:	00621026 	xor	v0,v1,v0
  4a38dc:	afc20028 	sw	v0,40(s8)
  4a38e0:	8fc30020 	lw	v1,32(s8)
  4a38e4:	8fc20018 	lw	v0,24(s8)
  4a38e8:	00000000 	nop
  4a38ec:	00621024 	and	v0,v1,v0
  4a38f0:	afc20020 	sw	v0,32(s8)
  4a38f4:	8fc20028 	lw	v0,40(s8)
  4a38f8:	00000000 	nop
  4a38fc:	00021027 	nor	v0,zero,v0
  4a3900:	afc20028 	sw	v0,40(s8)
  4a3904:	8fc30020 	lw	v1,32(s8)
  4a3908:	8fc20028 	lw	v0,40(s8)
  4a390c:	00000000 	nop
  4a3910:	00621026 	xor	v0,v1,v0
  4a3914:	afc20020 	sw	v0,32(s8)
  4a3918:	8fc30028 	lw	v1,40(s8)
  4a391c:	8fc20018 	lw	v0,24(s8)
  4a3920:	00000000 	nop
  4a3924:	00621024 	and	v0,v1,v0
  4a3928:	afc20028 	sw	v0,40(s8)
  4a392c:	8fc3001c 	lw	v1,28(s8)
  4a3930:	8fc20024 	lw	v0,36(s8)
  4a3934:	00000000 	nop
  4a3938:	00621026 	xor	v0,v1,v0
  4a393c:	afc2001c 	sw	v0,28(s8)
  4a3940:	8fc30028 	lw	v1,40(s8)
  4a3944:	8fc2001c 	lw	v0,28(s8)
  4a3948:	00000000 	nop
  4a394c:	00621026 	xor	v0,v1,v0
  4a3950:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r4, r3, r0, 48) 
  4a3954:	8fc2000c 	lw	v0,12(s8)
  4a3958:	00000000 	nop
  4a395c:	244300e0 	addiu	v1,v0,224
  4a3960:	8fc20020 	lw	v0,32(s8)
  4a3964:	00000000 	nop
  4a3968:	ac620000 	sw	v0,0(v1)
  4a396c:	8fc2000c 	lw	v0,12(s8)
  4a3970:	00000000 	nop
  4a3974:	244300e4 	addiu	v1,v0,228
  4a3978:	8fc20028 	lw	v0,40(s8)
  4a397c:	00000000 	nop
  4a3980:	ac620000 	sw	v0,0(v1)
  4a3984:	8fc2000c 	lw	v0,12(s8)
  4a3988:	00000000 	nop
  4a398c:	244300e8 	addiu	v1,v0,232
  4a3990:	8fc20024 	lw	v0,36(s8)
  4a3994:	00000000 	nop
  4a3998:	ac620000 	sw	v0,0(v1)
  4a399c:	8fc2000c 	lw	v0,12(s8)
  4a39a0:	00000000 	nop
  4a39a4:	244300ec 	addiu	v1,v0,236
  4a39a8:	8fc20018 	lw	v0,24(s8)
  4a39ac:	00000000 	nop
  4a39b0:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 52);
  4a39b4:	8fc2000c 	lw	v0,12(s8)
  4a39b8:	00000000 	nop
  4a39bc:	244200f0 	addiu	v0,v0,240
  4a39c0:	8c420000 	lw	v0,0(v0)
  4a39c4:	00000000 	nop
  4a39c8:	afc20018 	sw	v0,24(s8)
  4a39cc:	8fc2000c 	lw	v0,12(s8)
  4a39d0:	00000000 	nop
  4a39d4:	244200f4 	addiu	v0,v0,244
  4a39d8:	8c420000 	lw	v0,0(v0)
  4a39dc:	00000000 	nop
  4a39e0:	afc2001c 	sw	v0,28(s8)
  4a39e4:	8fc2000c 	lw	v0,12(s8)
  4a39e8:	00000000 	nop
  4a39ec:	244200f8 	addiu	v0,v0,248
  4a39f0:	8c420000 	lw	v0,0(v0)
  4a39f4:	00000000 	nop
  4a39f8:	afc20020 	sw	v0,32(s8)
  4a39fc:	8fc2000c 	lw	v0,12(s8)
  4a3a00:	00000000 	nop
  4a3a04:	244200fc 	addiu	v0,v0,252
  4a3a08:	8c420000 	lw	v0,0(v0)
  4a3a0c:	00000000 	nop
  4a3a10:	afc20024 	sw	v0,36(s8)
      S6(r0,r1,r2,r3,r4) 
  4a3a14:	8fc20020 	lw	v0,32(s8)
  4a3a18:	00000000 	nop
  4a3a1c:	00021027 	nor	v0,zero,v0
  4a3a20:	afc20020 	sw	v0,32(s8)
  4a3a24:	8fc20024 	lw	v0,36(s8)
  4a3a28:	00000000 	nop
  4a3a2c:	afc20028 	sw	v0,40(s8)
  4a3a30:	8fc30024 	lw	v1,36(s8)
  4a3a34:	8fc20018 	lw	v0,24(s8)
  4a3a38:	00000000 	nop
  4a3a3c:	00621024 	and	v0,v1,v0
  4a3a40:	afc20024 	sw	v0,36(s8)
  4a3a44:	8fc30018 	lw	v1,24(s8)
  4a3a48:	8fc20028 	lw	v0,40(s8)
  4a3a4c:	00000000 	nop
  4a3a50:	00621026 	xor	v0,v1,v0
  4a3a54:	afc20018 	sw	v0,24(s8)
  4a3a58:	8fc30024 	lw	v1,36(s8)
  4a3a5c:	8fc20020 	lw	v0,32(s8)
  4a3a60:	00000000 	nop
  4a3a64:	00621026 	xor	v0,v1,v0
  4a3a68:	afc20024 	sw	v0,36(s8)
  4a3a6c:	8fc30020 	lw	v1,32(s8)
  4a3a70:	8fc20028 	lw	v0,40(s8)
  4a3a74:	00000000 	nop
  4a3a78:	00621025 	or	v0,v1,v0
  4a3a7c:	afc20020 	sw	v0,32(s8)
  4a3a80:	8fc3001c 	lw	v1,28(s8)
  4a3a84:	8fc20024 	lw	v0,36(s8)
  4a3a88:	00000000 	nop
  4a3a8c:	00621026 	xor	v0,v1,v0
  4a3a90:	afc2001c 	sw	v0,28(s8)
  4a3a94:	8fc30020 	lw	v1,32(s8)
  4a3a98:	8fc20018 	lw	v0,24(s8)
  4a3a9c:	00000000 	nop
  4a3aa0:	00621026 	xor	v0,v1,v0
  4a3aa4:	afc20020 	sw	v0,32(s8)
  4a3aa8:	8fc30018 	lw	v1,24(s8)
  4a3aac:	8fc2001c 	lw	v0,28(s8)
  4a3ab0:	00000000 	nop
  4a3ab4:	00621025 	or	v0,v1,v0
  4a3ab8:	afc20018 	sw	v0,24(s8)
  4a3abc:	8fc30020 	lw	v1,32(s8)
  4a3ac0:	8fc2001c 	lw	v0,28(s8)
  4a3ac4:	00000000 	nop
  4a3ac8:	00621026 	xor	v0,v1,v0
  4a3acc:	afc20020 	sw	v0,32(s8)
  4a3ad0:	8fc30028 	lw	v1,40(s8)
  4a3ad4:	8fc20018 	lw	v0,24(s8)
  4a3ad8:	00000000 	nop
  4a3adc:	00621026 	xor	v0,v1,v0
  4a3ae0:	afc20028 	sw	v0,40(s8)
  4a3ae4:	8fc30018 	lw	v1,24(s8)
  4a3ae8:	8fc20024 	lw	v0,36(s8)
  4a3aec:	00000000 	nop
  4a3af0:	00621025 	or	v0,v1,v0
  4a3af4:	afc20018 	sw	v0,24(s8)
  4a3af8:	8fc30018 	lw	v1,24(s8)
  4a3afc:	8fc20020 	lw	v0,32(s8)
  4a3b00:	00000000 	nop
  4a3b04:	00621026 	xor	v0,v1,v0
  4a3b08:	afc20018 	sw	v0,24(s8)
  4a3b0c:	8fc30028 	lw	v1,40(s8)
  4a3b10:	8fc20024 	lw	v0,36(s8)
  4a3b14:	00000000 	nop
  4a3b18:	00621026 	xor	v0,v1,v0
  4a3b1c:	afc20028 	sw	v0,40(s8)
  4a3b20:	8fc30028 	lw	v1,40(s8)
  4a3b24:	8fc20018 	lw	v0,24(s8)
  4a3b28:	00000000 	nop
  4a3b2c:	00621026 	xor	v0,v1,v0
  4a3b30:	afc20028 	sw	v0,40(s8)
  4a3b34:	8fc20024 	lw	v0,36(s8)
  4a3b38:	00000000 	nop
  4a3b3c:	00021027 	nor	v0,zero,v0
  4a3b40:	afc20024 	sw	v0,36(s8)
  4a3b44:	8fc30020 	lw	v1,32(s8)
  4a3b48:	8fc20028 	lw	v0,40(s8)
  4a3b4c:	00000000 	nop
  4a3b50:	00621024 	and	v0,v1,v0
  4a3b54:	afc20020 	sw	v0,32(s8)
  4a3b58:	8fc30020 	lw	v1,32(s8)
  4a3b5c:	8fc20024 	lw	v0,36(s8)
  4a3b60:	00000000 	nop
  4a3b64:	00621026 	xor	v0,v1,v0
  4a3b68:	afc20020 	sw	v0,32(s8)
      SETKEY(r0, r1, r4, r2, 52) 
  4a3b6c:	8fc2000c 	lw	v0,12(s8)
  4a3b70:	00000000 	nop
  4a3b74:	244300f0 	addiu	v1,v0,240
  4a3b78:	8fc20018 	lw	v0,24(s8)
  4a3b7c:	00000000 	nop
  4a3b80:	ac620000 	sw	v0,0(v1)
  4a3b84:	8fc2000c 	lw	v0,12(s8)
  4a3b88:	00000000 	nop
  4a3b8c:	244300f4 	addiu	v1,v0,244
  4a3b90:	8fc2001c 	lw	v0,28(s8)
  4a3b94:	00000000 	nop
  4a3b98:	ac620000 	sw	v0,0(v1)
  4a3b9c:	8fc2000c 	lw	v0,12(s8)
  4a3ba0:	00000000 	nop
  4a3ba4:	244300f8 	addiu	v1,v0,248
  4a3ba8:	8fc20028 	lw	v0,40(s8)
  4a3bac:	00000000 	nop
  4a3bb0:	ac620000 	sw	v0,0(v1)
  4a3bb4:	8fc2000c 	lw	v0,12(s8)
  4a3bb8:	00000000 	nop
  4a3bbc:	244300fc 	addiu	v1,v0,252
  4a3bc0:	8fc20020 	lw	v0,32(s8)
  4a3bc4:	00000000 	nop
  4a3bc8:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 56);
  4a3bcc:	8fc2000c 	lw	v0,12(s8)
  4a3bd0:	00000000 	nop
  4a3bd4:	24420100 	addiu	v0,v0,256
  4a3bd8:	8c420000 	lw	v0,0(v0)
  4a3bdc:	00000000 	nop
  4a3be0:	afc20018 	sw	v0,24(s8)
  4a3be4:	8fc2000c 	lw	v0,12(s8)
  4a3be8:	00000000 	nop
  4a3bec:	24420104 	addiu	v0,v0,260
  4a3bf0:	8c420000 	lw	v0,0(v0)
  4a3bf4:	00000000 	nop
  4a3bf8:	afc2001c 	sw	v0,28(s8)
  4a3bfc:	8fc2000c 	lw	v0,12(s8)
  4a3c00:	00000000 	nop
  4a3c04:	24420108 	addiu	v0,v0,264
  4a3c08:	8c420000 	lw	v0,0(v0)
  4a3c0c:	00000000 	nop
  4a3c10:	afc20020 	sw	v0,32(s8)
  4a3c14:	8fc2000c 	lw	v0,12(s8)
  4a3c18:	00000000 	nop
  4a3c1c:	2442010c 	addiu	v0,v0,268
  4a3c20:	8c420000 	lw	v0,0(v0)
  4a3c24:	00000000 	nop
  4a3c28:	afc20024 	sw	v0,36(s8)
      S5(r0,r1,r2,r3,r4);
  4a3c2c:	8fc30018 	lw	v1,24(s8)
  4a3c30:	8fc2001c 	lw	v0,28(s8)
  4a3c34:	00000000 	nop
  4a3c38:	00621026 	xor	v0,v1,v0
  4a3c3c:	afc20018 	sw	v0,24(s8)
  4a3c40:	8fc3001c 	lw	v1,28(s8)
  4a3c44:	8fc20024 	lw	v0,36(s8)
  4a3c48:	00000000 	nop
  4a3c4c:	00621026 	xor	v0,v1,v0
  4a3c50:	afc2001c 	sw	v0,28(s8)
  4a3c54:	8fc20024 	lw	v0,36(s8)
  4a3c58:	00000000 	nop
  4a3c5c:	00021027 	nor	v0,zero,v0
  4a3c60:	afc20024 	sw	v0,36(s8)
  4a3c64:	8fc2001c 	lw	v0,28(s8)
  4a3c68:	00000000 	nop
  4a3c6c:	afc20028 	sw	v0,40(s8)
  4a3c70:	8fc3001c 	lw	v1,28(s8)
  4a3c74:	8fc20018 	lw	v0,24(s8)
  4a3c78:	00000000 	nop
  4a3c7c:	00621024 	and	v0,v1,v0
  4a3c80:	afc2001c 	sw	v0,28(s8)
  4a3c84:	8fc30020 	lw	v1,32(s8)
  4a3c88:	8fc20024 	lw	v0,36(s8)
  4a3c8c:	00000000 	nop
  4a3c90:	00621026 	xor	v0,v1,v0
  4a3c94:	afc20020 	sw	v0,32(s8)
  4a3c98:	8fc3001c 	lw	v1,28(s8)
  4a3c9c:	8fc20020 	lw	v0,32(s8)
  4a3ca0:	00000000 	nop
  4a3ca4:	00621026 	xor	v0,v1,v0
  4a3ca8:	afc2001c 	sw	v0,28(s8)
  4a3cac:	8fc30020 	lw	v1,32(s8)
  4a3cb0:	8fc20028 	lw	v0,40(s8)
  4a3cb4:	00000000 	nop
  4a3cb8:	00621025 	or	v0,v1,v0
  4a3cbc:	afc20020 	sw	v0,32(s8)
  4a3cc0:	8fc30028 	lw	v1,40(s8)
  4a3cc4:	8fc20024 	lw	v0,36(s8)
  4a3cc8:	00000000 	nop
  4a3ccc:	00621026 	xor	v0,v1,v0
  4a3cd0:	afc20028 	sw	v0,40(s8)
  4a3cd4:	8fc30024 	lw	v1,36(s8)
  4a3cd8:	8fc2001c 	lw	v0,28(s8)
  4a3cdc:	00000000 	nop
  4a3ce0:	00621024 	and	v0,v1,v0
  4a3ce4:	afc20024 	sw	v0,36(s8)
  4a3ce8:	8fc30024 	lw	v1,36(s8)
  4a3cec:	8fc20018 	lw	v0,24(s8)
  4a3cf0:	00000000 	nop
  4a3cf4:	00621026 	xor	v0,v1,v0
  4a3cf8:	afc20024 	sw	v0,36(s8)
  4a3cfc:	8fc30028 	lw	v1,40(s8)
  4a3d00:	8fc2001c 	lw	v0,28(s8)
  4a3d04:	00000000 	nop
  4a3d08:	00621026 	xor	v0,v1,v0
  4a3d0c:	afc20028 	sw	v0,40(s8)
  4a3d10:	8fc30028 	lw	v1,40(s8)
  4a3d14:	8fc20020 	lw	v0,32(s8)
  4a3d18:	00000000 	nop
  4a3d1c:	00621026 	xor	v0,v1,v0
  4a3d20:	afc20028 	sw	v0,40(s8)
  4a3d24:	8fc30020 	lw	v1,32(s8)
  4a3d28:	8fc20018 	lw	v0,24(s8)
  4a3d2c:	00000000 	nop
  4a3d30:	00621026 	xor	v0,v1,v0
  4a3d34:	afc20020 	sw	v0,32(s8)
  4a3d38:	8fc30018 	lw	v1,24(s8)
  4a3d3c:	8fc20024 	lw	v0,36(s8)
  4a3d40:	00000000 	nop
  4a3d44:	00621024 	and	v0,v1,v0
  4a3d48:	afc20018 	sw	v0,24(s8)
  4a3d4c:	8fc20020 	lw	v0,32(s8)
  4a3d50:	00000000 	nop
  4a3d54:	00021027 	nor	v0,zero,v0
  4a3d58:	afc20020 	sw	v0,32(s8)
  4a3d5c:	8fc30018 	lw	v1,24(s8)
  4a3d60:	8fc20028 	lw	v0,40(s8)
  4a3d64:	00000000 	nop
  4a3d68:	00621026 	xor	v0,v1,v0
  4a3d6c:	afc20018 	sw	v0,24(s8)
  4a3d70:	8fc30028 	lw	v1,40(s8)
  4a3d74:	8fc20024 	lw	v0,36(s8)
  4a3d78:	00000000 	nop
  4a3d7c:	00621025 	or	v0,v1,v0
  4a3d80:	afc20028 	sw	v0,40(s8)
  4a3d84:	8fc30020 	lw	v1,32(s8)
  4a3d88:	8fc20028 	lw	v0,40(s8)
  4a3d8c:	00000000 	nop
  4a3d90:	00621026 	xor	v0,v1,v0
  4a3d94:	afc20020 	sw	v0,32(s8)
      SETKEY(r1, r3, r0, r2, 56) 
  4a3d98:	8fc2000c 	lw	v0,12(s8)
  4a3d9c:	00000000 	nop
  4a3da0:	24430100 	addiu	v1,v0,256
  4a3da4:	8fc2001c 	lw	v0,28(s8)
  4a3da8:	00000000 	nop
  4a3dac:	ac620000 	sw	v0,0(v1)
  4a3db0:	8fc2000c 	lw	v0,12(s8)
  4a3db4:	00000000 	nop
  4a3db8:	24430104 	addiu	v1,v0,260
  4a3dbc:	8fc20024 	lw	v0,36(s8)
  4a3dc0:	00000000 	nop
  4a3dc4:	ac620000 	sw	v0,0(v1)
  4a3dc8:	8fc2000c 	lw	v0,12(s8)
  4a3dcc:	00000000 	nop
  4a3dd0:	24430108 	addiu	v1,v0,264
  4a3dd4:	8fc20018 	lw	v0,24(s8)
  4a3dd8:	00000000 	nop
  4a3ddc:	ac620000 	sw	v0,0(v1)
  4a3de0:	8fc2000c 	lw	v0,12(s8)
  4a3de4:	00000000 	nop
  4a3de8:	2443010c 	addiu	v1,v0,268
  4a3dec:	8fc20020 	lw	v0,32(s8)
  4a3df0:	00000000 	nop
  4a3df4:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 60);
  4a3df8:	8fc2000c 	lw	v0,12(s8)
  4a3dfc:	00000000 	nop
  4a3e00:	24420110 	addiu	v0,v0,272
  4a3e04:	8c420000 	lw	v0,0(v0)
  4a3e08:	00000000 	nop
  4a3e0c:	afc20018 	sw	v0,24(s8)
  4a3e10:	8fc2000c 	lw	v0,12(s8)
  4a3e14:	00000000 	nop
  4a3e18:	24420114 	addiu	v0,v0,276
  4a3e1c:	8c420000 	lw	v0,0(v0)
  4a3e20:	00000000 	nop
  4a3e24:	afc2001c 	sw	v0,28(s8)
  4a3e28:	8fc2000c 	lw	v0,12(s8)
  4a3e2c:	00000000 	nop
  4a3e30:	24420118 	addiu	v0,v0,280
  4a3e34:	8c420000 	lw	v0,0(v0)
  4a3e38:	00000000 	nop
  4a3e3c:	afc20020 	sw	v0,32(s8)
  4a3e40:	8fc2000c 	lw	v0,12(s8)
  4a3e44:	00000000 	nop
  4a3e48:	2442011c 	addiu	v0,v0,284
  4a3e4c:	8c420000 	lw	v0,0(v0)
  4a3e50:	00000000 	nop
  4a3e54:	afc20024 	sw	v0,36(s8)
      S4(r0,r1,r2,r3,r4) 
  4a3e58:	8fc3001c 	lw	v1,28(s8)
  4a3e5c:	8fc20024 	lw	v0,36(s8)
  4a3e60:	00000000 	nop
  4a3e64:	00621026 	xor	v0,v1,v0
  4a3e68:	afc2001c 	sw	v0,28(s8)
  4a3e6c:	8fc20024 	lw	v0,36(s8)
  4a3e70:	00000000 	nop
  4a3e74:	00021027 	nor	v0,zero,v0
  4a3e78:	afc20024 	sw	v0,36(s8)
  4a3e7c:	8fc30020 	lw	v1,32(s8)
  4a3e80:	8fc20024 	lw	v0,36(s8)
  4a3e84:	00000000 	nop
  4a3e88:	00621026 	xor	v0,v1,v0
  4a3e8c:	afc20020 	sw	v0,32(s8)
  4a3e90:	8fc30024 	lw	v1,36(s8)
  4a3e94:	8fc20018 	lw	v0,24(s8)
  4a3e98:	00000000 	nop
  4a3e9c:	00621026 	xor	v0,v1,v0
  4a3ea0:	afc20024 	sw	v0,36(s8)
  4a3ea4:	8fc2001c 	lw	v0,28(s8)
  4a3ea8:	00000000 	nop
  4a3eac:	afc20028 	sw	v0,40(s8)
  4a3eb0:	8fc3001c 	lw	v1,28(s8)
  4a3eb4:	8fc20024 	lw	v0,36(s8)
  4a3eb8:	00000000 	nop
  4a3ebc:	00621024 	and	v0,v1,v0
  4a3ec0:	afc2001c 	sw	v0,28(s8)
  4a3ec4:	8fc3001c 	lw	v1,28(s8)
  4a3ec8:	8fc20020 	lw	v0,32(s8)
  4a3ecc:	00000000 	nop
  4a3ed0:	00621026 	xor	v0,v1,v0
  4a3ed4:	afc2001c 	sw	v0,28(s8)
  4a3ed8:	8fc30028 	lw	v1,40(s8)
  4a3edc:	8fc20024 	lw	v0,36(s8)
  4a3ee0:	00000000 	nop
  4a3ee4:	00621026 	xor	v0,v1,v0
  4a3ee8:	afc20028 	sw	v0,40(s8)
  4a3eec:	8fc30018 	lw	v1,24(s8)
  4a3ef0:	8fc20028 	lw	v0,40(s8)
  4a3ef4:	00000000 	nop
  4a3ef8:	00621026 	xor	v0,v1,v0
  4a3efc:	afc20018 	sw	v0,24(s8)
  4a3f00:	8fc30020 	lw	v1,32(s8)
  4a3f04:	8fc20028 	lw	v0,40(s8)
  4a3f08:	00000000 	nop
  4a3f0c:	00621024 	and	v0,v1,v0
  4a3f10:	afc20020 	sw	v0,32(s8)
  4a3f14:	8fc30020 	lw	v1,32(s8)
  4a3f18:	8fc20018 	lw	v0,24(s8)
  4a3f1c:	00000000 	nop
  4a3f20:	00621026 	xor	v0,v1,v0
  4a3f24:	afc20020 	sw	v0,32(s8)
  4a3f28:	8fc30018 	lw	v1,24(s8)
  4a3f2c:	8fc2001c 	lw	v0,28(s8)
  4a3f30:	00000000 	nop
  4a3f34:	00621024 	and	v0,v1,v0
  4a3f38:	afc20018 	sw	v0,24(s8)
  4a3f3c:	8fc30024 	lw	v1,36(s8)
  4a3f40:	8fc20018 	lw	v0,24(s8)
  4a3f44:	00000000 	nop
  4a3f48:	00621026 	xor	v0,v1,v0
  4a3f4c:	afc20024 	sw	v0,36(s8)
  4a3f50:	8fc30028 	lw	v1,40(s8)
  4a3f54:	8fc2001c 	lw	v0,28(s8)
  4a3f58:	00000000 	nop
  4a3f5c:	00621025 	or	v0,v1,v0
  4a3f60:	afc20028 	sw	v0,40(s8)
  4a3f64:	8fc30028 	lw	v1,40(s8)
  4a3f68:	8fc20018 	lw	v0,24(s8)
  4a3f6c:	00000000 	nop
  4a3f70:	00621026 	xor	v0,v1,v0
  4a3f74:	afc20028 	sw	v0,40(s8)
  4a3f78:	8fc30018 	lw	v1,24(s8)
  4a3f7c:	8fc20024 	lw	v0,36(s8)
  4a3f80:	00000000 	nop
  4a3f84:	00621025 	or	v0,v1,v0
  4a3f88:	afc20018 	sw	v0,24(s8)
  4a3f8c:	8fc30018 	lw	v1,24(s8)
  4a3f90:	8fc20020 	lw	v0,32(s8)
  4a3f94:	00000000 	nop
  4a3f98:	00621026 	xor	v0,v1,v0
  4a3f9c:	afc20018 	sw	v0,24(s8)
  4a3fa0:	8fc30020 	lw	v1,32(s8)
  4a3fa4:	8fc20024 	lw	v0,36(s8)
  4a3fa8:	00000000 	nop
  4a3fac:	00621024 	and	v0,v1,v0
  4a3fb0:	afc20020 	sw	v0,32(s8)
  4a3fb4:	8fc20018 	lw	v0,24(s8)
  4a3fb8:	00000000 	nop
  4a3fbc:	00021027 	nor	v0,zero,v0
  4a3fc0:	afc20018 	sw	v0,24(s8)
  4a3fc4:	8fc30028 	lw	v1,40(s8)
  4a3fc8:	8fc20020 	lw	v0,32(s8)
  4a3fcc:	00000000 	nop
  4a3fd0:	00621026 	xor	v0,v1,v0
  4a3fd4:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r0, r3, 60) 
  4a3fd8:	8fc2000c 	lw	v0,12(s8)
  4a3fdc:	00000000 	nop
  4a3fe0:	24430110 	addiu	v1,v0,272
  4a3fe4:	8fc2001c 	lw	v0,28(s8)
  4a3fe8:	00000000 	nop
  4a3fec:	ac620000 	sw	v0,0(v1)
  4a3ff0:	8fc2000c 	lw	v0,12(s8)
  4a3ff4:	00000000 	nop
  4a3ff8:	24430114 	addiu	v1,v0,276
  4a3ffc:	8fc20028 	lw	v0,40(s8)
  4a4000:	00000000 	nop
  4a4004:	ac620000 	sw	v0,0(v1)
  4a4008:	8fc2000c 	lw	v0,12(s8)
  4a400c:	00000000 	nop
  4a4010:	24430118 	addiu	v1,v0,280
  4a4014:	8fc20018 	lw	v0,24(s8)
  4a4018:	00000000 	nop
  4a401c:	ac620000 	sw	v0,0(v1)
  4a4020:	8fc2000c 	lw	v0,12(s8)
  4a4024:	00000000 	nop
  4a4028:	2443011c 	addiu	v1,v0,284
  4a402c:	8fc20024 	lw	v0,36(s8)
  4a4030:	00000000 	nop
  4a4034:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 64);
  4a4038:	8fc2000c 	lw	v0,12(s8)
  4a403c:	00000000 	nop
  4a4040:	24420120 	addiu	v0,v0,288
  4a4044:	8c420000 	lw	v0,0(v0)
  4a4048:	00000000 	nop
  4a404c:	afc20018 	sw	v0,24(s8)
  4a4050:	8fc2000c 	lw	v0,12(s8)
  4a4054:	00000000 	nop
  4a4058:	24420124 	addiu	v0,v0,292
  4a405c:	8c420000 	lw	v0,0(v0)
  4a4060:	00000000 	nop
  4a4064:	afc2001c 	sw	v0,28(s8)
  4a4068:	8fc2000c 	lw	v0,12(s8)
  4a406c:	00000000 	nop
  4a4070:	24420128 	addiu	v0,v0,296
  4a4074:	8c420000 	lw	v0,0(v0)
  4a4078:	00000000 	nop
  4a407c:	afc20020 	sw	v0,32(s8)
  4a4080:	8fc2000c 	lw	v0,12(s8)
  4a4084:	00000000 	nop
  4a4088:	2442012c 	addiu	v0,v0,300
  4a408c:	8c420000 	lw	v0,0(v0)
  4a4090:	00000000 	nop
  4a4094:	afc20024 	sw	v0,36(s8)
      S3(r0,r1,r2,r3,r4);
  4a4098:	8fc20018 	lw	v0,24(s8)
  4a409c:	00000000 	nop
  4a40a0:	afc20028 	sw	v0,40(s8)
  4a40a4:	8fc30018 	lw	v1,24(s8)
  4a40a8:	8fc20024 	lw	v0,36(s8)
  4a40ac:	00000000 	nop
  4a40b0:	00621025 	or	v0,v1,v0
  4a40b4:	afc20018 	sw	v0,24(s8)
  4a40b8:	8fc30024 	lw	v1,36(s8)
  4a40bc:	8fc2001c 	lw	v0,28(s8)
  4a40c0:	00000000 	nop
  4a40c4:	00621026 	xor	v0,v1,v0
  4a40c8:	afc20024 	sw	v0,36(s8)
  4a40cc:	8fc3001c 	lw	v1,28(s8)
  4a40d0:	8fc20028 	lw	v0,40(s8)
  4a40d4:	00000000 	nop
  4a40d8:	00621024 	and	v0,v1,v0
  4a40dc:	afc2001c 	sw	v0,28(s8)
  4a40e0:	8fc30028 	lw	v1,40(s8)
  4a40e4:	8fc20020 	lw	v0,32(s8)
  4a40e8:	00000000 	nop
  4a40ec:	00621026 	xor	v0,v1,v0
  4a40f0:	afc20028 	sw	v0,40(s8)
  4a40f4:	8fc30020 	lw	v1,32(s8)
  4a40f8:	8fc20024 	lw	v0,36(s8)
  4a40fc:	00000000 	nop
  4a4100:	00621026 	xor	v0,v1,v0
  4a4104:	afc20020 	sw	v0,32(s8)
  4a4108:	8fc30024 	lw	v1,36(s8)
  4a410c:	8fc20018 	lw	v0,24(s8)
  4a4110:	00000000 	nop
  4a4114:	00621024 	and	v0,v1,v0
  4a4118:	afc20024 	sw	v0,36(s8)
  4a411c:	8fc30028 	lw	v1,40(s8)
  4a4120:	8fc2001c 	lw	v0,28(s8)
  4a4124:	00000000 	nop
  4a4128:	00621025 	or	v0,v1,v0
  4a412c:	afc20028 	sw	v0,40(s8)
  4a4130:	8fc30024 	lw	v1,36(s8)
  4a4134:	8fc20028 	lw	v0,40(s8)
  4a4138:	00000000 	nop
  4a413c:	00621026 	xor	v0,v1,v0
  4a4140:	afc20024 	sw	v0,36(s8)
  4a4144:	8fc30018 	lw	v1,24(s8)
  4a4148:	8fc2001c 	lw	v0,28(s8)
  4a414c:	00000000 	nop
  4a4150:	00621026 	xor	v0,v1,v0
  4a4154:	afc20018 	sw	v0,24(s8)
  4a4158:	8fc30028 	lw	v1,40(s8)
  4a415c:	8fc20018 	lw	v0,24(s8)
  4a4160:	00000000 	nop
  4a4164:	00621024 	and	v0,v1,v0
  4a4168:	afc20028 	sw	v0,40(s8)
  4a416c:	8fc3001c 	lw	v1,28(s8)
  4a4170:	8fc20024 	lw	v0,36(s8)
  4a4174:	00000000 	nop
  4a4178:	00621026 	xor	v0,v1,v0
  4a417c:	afc2001c 	sw	v0,28(s8)
  4a4180:	8fc30028 	lw	v1,40(s8)
  4a4184:	8fc20020 	lw	v0,32(s8)
  4a4188:	00000000 	nop
  4a418c:	00621026 	xor	v0,v1,v0
  4a4190:	afc20028 	sw	v0,40(s8)
  4a4194:	8fc3001c 	lw	v1,28(s8)
  4a4198:	8fc20018 	lw	v0,24(s8)
  4a419c:	00000000 	nop
  4a41a0:	00621025 	or	v0,v1,v0
  4a41a4:	afc2001c 	sw	v0,28(s8)
  4a41a8:	8fc3001c 	lw	v1,28(s8)
  4a41ac:	8fc20020 	lw	v0,32(s8)
  4a41b0:	00000000 	nop
  4a41b4:	00621026 	xor	v0,v1,v0
  4a41b8:	afc2001c 	sw	v0,28(s8)
  4a41bc:	8fc30018 	lw	v1,24(s8)
  4a41c0:	8fc20024 	lw	v0,36(s8)
  4a41c4:	00000000 	nop
  4a41c8:	00621026 	xor	v0,v1,v0
  4a41cc:	afc20018 	sw	v0,24(s8)
  4a41d0:	8fc2001c 	lw	v0,28(s8)
  4a41d4:	00000000 	nop
  4a41d8:	afc20020 	sw	v0,32(s8)
  4a41dc:	8fc3001c 	lw	v1,28(s8)
  4a41e0:	8fc20024 	lw	v0,36(s8)
  4a41e4:	00000000 	nop
  4a41e8:	00621025 	or	v0,v1,v0
  4a41ec:	afc2001c 	sw	v0,28(s8)
  4a41f0:	8fc3001c 	lw	v1,28(s8)
  4a41f4:	8fc20018 	lw	v0,24(s8)
  4a41f8:	00000000 	nop
  4a41fc:	00621026 	xor	v0,v1,v0
  4a4200:	afc2001c 	sw	v0,28(s8)
      SETKEY(r1, r2, r3, r4, 64) 
  4a4204:	8fc2000c 	lw	v0,12(s8)
  4a4208:	00000000 	nop
  4a420c:	24430120 	addiu	v1,v0,288
  4a4210:	8fc2001c 	lw	v0,28(s8)
  4a4214:	00000000 	nop
  4a4218:	ac620000 	sw	v0,0(v1)
  4a421c:	8fc2000c 	lw	v0,12(s8)
  4a4220:	00000000 	nop
  4a4224:	24430124 	addiu	v1,v0,292
  4a4228:	8fc20020 	lw	v0,32(s8)
  4a422c:	00000000 	nop
  4a4230:	ac620000 	sw	v0,0(v1)
  4a4234:	8fc2000c 	lw	v0,12(s8)
  4a4238:	00000000 	nop
  4a423c:	24430128 	addiu	v1,v0,296
  4a4240:	8fc20024 	lw	v0,36(s8)
  4a4244:	00000000 	nop
  4a4248:	ac620000 	sw	v0,0(v1)
  4a424c:	8fc2000c 	lw	v0,12(s8)
  4a4250:	00000000 	nop
  4a4254:	2443012c 	addiu	v1,v0,300
  4a4258:	8fc20028 	lw	v0,40(s8)
  4a425c:	00000000 	nop
  4a4260:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 68);
  4a4264:	8fc2000c 	lw	v0,12(s8)
  4a4268:	00000000 	nop
  4a426c:	24420130 	addiu	v0,v0,304
  4a4270:	8c420000 	lw	v0,0(v0)
  4a4274:	00000000 	nop
  4a4278:	afc20018 	sw	v0,24(s8)
  4a427c:	8fc2000c 	lw	v0,12(s8)
  4a4280:	00000000 	nop
  4a4284:	24420134 	addiu	v0,v0,308
  4a4288:	8c420000 	lw	v0,0(v0)
  4a428c:	00000000 	nop
  4a4290:	afc2001c 	sw	v0,28(s8)
  4a4294:	8fc2000c 	lw	v0,12(s8)
  4a4298:	00000000 	nop
  4a429c:	24420138 	addiu	v0,v0,312
  4a42a0:	8c420000 	lw	v0,0(v0)
  4a42a4:	00000000 	nop
  4a42a8:	afc20020 	sw	v0,32(s8)
  4a42ac:	8fc2000c 	lw	v0,12(s8)
  4a42b0:	00000000 	nop
  4a42b4:	2442013c 	addiu	v0,v0,316
  4a42b8:	8c420000 	lw	v0,0(v0)
  4a42bc:	00000000 	nop
  4a42c0:	afc20024 	sw	v0,36(s8)
      S2(r0,r1,r2,r3,r4);
  4a42c4:	8fc20018 	lw	v0,24(s8)
  4a42c8:	00000000 	nop
  4a42cc:	afc20028 	sw	v0,40(s8)
  4a42d0:	8fc30018 	lw	v1,24(s8)
  4a42d4:	8fc20020 	lw	v0,32(s8)
  4a42d8:	00000000 	nop
  4a42dc:	00621024 	and	v0,v1,v0
  4a42e0:	afc20018 	sw	v0,24(s8)
  4a42e4:	8fc30018 	lw	v1,24(s8)
  4a42e8:	8fc20024 	lw	v0,36(s8)
  4a42ec:	00000000 	nop
  4a42f0:	00621026 	xor	v0,v1,v0
  4a42f4:	afc20018 	sw	v0,24(s8)
  4a42f8:	8fc30020 	lw	v1,32(s8)
  4a42fc:	8fc2001c 	lw	v0,28(s8)
  4a4300:	00000000 	nop
  4a4304:	00621026 	xor	v0,v1,v0
  4a4308:	afc20020 	sw	v0,32(s8)
  4a430c:	8fc30020 	lw	v1,32(s8)
  4a4310:	8fc20018 	lw	v0,24(s8)
  4a4314:	00000000 	nop
  4a4318:	00621026 	xor	v0,v1,v0
  4a431c:	afc20020 	sw	v0,32(s8)
  4a4320:	8fc30024 	lw	v1,36(s8)
  4a4324:	8fc20028 	lw	v0,40(s8)
  4a4328:	00000000 	nop
  4a432c:	00621025 	or	v0,v1,v0
  4a4330:	afc20024 	sw	v0,36(s8)
  4a4334:	8fc30024 	lw	v1,36(s8)
  4a4338:	8fc2001c 	lw	v0,28(s8)
  4a433c:	00000000 	nop
  4a4340:	00621026 	xor	v0,v1,v0
  4a4344:	afc20024 	sw	v0,36(s8)
  4a4348:	8fc30028 	lw	v1,40(s8)
  4a434c:	8fc20020 	lw	v0,32(s8)
  4a4350:	00000000 	nop
  4a4354:	00621026 	xor	v0,v1,v0
  4a4358:	afc20028 	sw	v0,40(s8)
  4a435c:	8fc20024 	lw	v0,36(s8)
  4a4360:	00000000 	nop
  4a4364:	afc2001c 	sw	v0,28(s8)
  4a4368:	8fc30024 	lw	v1,36(s8)
  4a436c:	8fc20028 	lw	v0,40(s8)
  4a4370:	00000000 	nop
  4a4374:	00621025 	or	v0,v1,v0
  4a4378:	afc20024 	sw	v0,36(s8)
  4a437c:	8fc30024 	lw	v1,36(s8)
  4a4380:	8fc20018 	lw	v0,24(s8)
  4a4384:	00000000 	nop
  4a4388:	00621026 	xor	v0,v1,v0
  4a438c:	afc20024 	sw	v0,36(s8)
  4a4390:	8fc30018 	lw	v1,24(s8)
  4a4394:	8fc2001c 	lw	v0,28(s8)
  4a4398:	00000000 	nop
  4a439c:	00621024 	and	v0,v1,v0
  4a43a0:	afc20018 	sw	v0,24(s8)
  4a43a4:	8fc30028 	lw	v1,40(s8)
  4a43a8:	8fc20018 	lw	v0,24(s8)
  4a43ac:	00000000 	nop
  4a43b0:	00621026 	xor	v0,v1,v0
  4a43b4:	afc20028 	sw	v0,40(s8)
  4a43b8:	8fc3001c 	lw	v1,28(s8)
  4a43bc:	8fc20024 	lw	v0,36(s8)
  4a43c0:	00000000 	nop
  4a43c4:	00621026 	xor	v0,v1,v0
  4a43c8:	afc2001c 	sw	v0,28(s8)
  4a43cc:	8fc3001c 	lw	v1,28(s8)
  4a43d0:	8fc20028 	lw	v0,40(s8)
  4a43d4:	00000000 	nop
  4a43d8:	00621026 	xor	v0,v1,v0
  4a43dc:	afc2001c 	sw	v0,28(s8)
  4a43e0:	8fc20028 	lw	v0,40(s8)
  4a43e4:	00000000 	nop
  4a43e8:	00021027 	nor	v0,zero,v0
  4a43ec:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r3, r1, r4, 68) 
  4a43f0:	8fc2000c 	lw	v0,12(s8)
  4a43f4:	00000000 	nop
  4a43f8:	24430130 	addiu	v1,v0,304
  4a43fc:	8fc20020 	lw	v0,32(s8)
  4a4400:	00000000 	nop
  4a4404:	ac620000 	sw	v0,0(v1)
  4a4408:	8fc2000c 	lw	v0,12(s8)
  4a440c:	00000000 	nop
  4a4410:	24430134 	addiu	v1,v0,308
  4a4414:	8fc20024 	lw	v0,36(s8)
  4a4418:	00000000 	nop
  4a441c:	ac620000 	sw	v0,0(v1)
  4a4420:	8fc2000c 	lw	v0,12(s8)
  4a4424:	00000000 	nop
  4a4428:	24430138 	addiu	v1,v0,312
  4a442c:	8fc2001c 	lw	v0,28(s8)
  4a4430:	00000000 	nop
  4a4434:	ac620000 	sw	v0,0(v1)
  4a4438:	8fc2000c 	lw	v0,12(s8)
  4a443c:	00000000 	nop
  4a4440:	2443013c 	addiu	v1,v0,316
  4a4444:	8fc20028 	lw	v0,40(s8)
  4a4448:	00000000 	nop
  4a444c:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 72);
  4a4450:	8fc2000c 	lw	v0,12(s8)
  4a4454:	00000000 	nop
  4a4458:	24420140 	addiu	v0,v0,320
  4a445c:	8c420000 	lw	v0,0(v0)
  4a4460:	00000000 	nop
  4a4464:	afc20018 	sw	v0,24(s8)
  4a4468:	8fc2000c 	lw	v0,12(s8)
  4a446c:	00000000 	nop
  4a4470:	24420144 	addiu	v0,v0,324
  4a4474:	8c420000 	lw	v0,0(v0)
  4a4478:	00000000 	nop
  4a447c:	afc2001c 	sw	v0,28(s8)
  4a4480:	8fc2000c 	lw	v0,12(s8)
  4a4484:	00000000 	nop
  4a4488:	24420148 	addiu	v0,v0,328
  4a448c:	8c420000 	lw	v0,0(v0)
  4a4490:	00000000 	nop
  4a4494:	afc20020 	sw	v0,32(s8)
  4a4498:	8fc2000c 	lw	v0,12(s8)
  4a449c:	00000000 	nop
  4a44a0:	2442014c 	addiu	v0,v0,332
  4a44a4:	8c420000 	lw	v0,0(v0)
  4a44a8:	00000000 	nop
  4a44ac:	afc20024 	sw	v0,36(s8)
      S1(r0,r1,r2,r3,r4);
  4a44b0:	8fc2001c 	lw	v0,28(s8)
  4a44b4:	00000000 	nop
  4a44b8:	00021027 	nor	v0,zero,v0
  4a44bc:	afc2001c 	sw	v0,28(s8)
  4a44c0:	8fc20018 	lw	v0,24(s8)
  4a44c4:	00000000 	nop
  4a44c8:	afc20028 	sw	v0,40(s8)
  4a44cc:	8fc30018 	lw	v1,24(s8)
  4a44d0:	8fc2001c 	lw	v0,28(s8)
  4a44d4:	00000000 	nop
  4a44d8:	00621026 	xor	v0,v1,v0
  4a44dc:	afc20018 	sw	v0,24(s8)
  4a44e0:	8fc30028 	lw	v1,40(s8)
  4a44e4:	8fc2001c 	lw	v0,28(s8)
  4a44e8:	00000000 	nop
  4a44ec:	00621025 	or	v0,v1,v0
  4a44f0:	afc20028 	sw	v0,40(s8)
  4a44f4:	8fc30028 	lw	v1,40(s8)
  4a44f8:	8fc20024 	lw	v0,36(s8)
  4a44fc:	00000000 	nop
  4a4500:	00621026 	xor	v0,v1,v0
  4a4504:	afc20028 	sw	v0,40(s8)
  4a4508:	8fc30024 	lw	v1,36(s8)
  4a450c:	8fc20018 	lw	v0,24(s8)
  4a4510:	00000000 	nop
  4a4514:	00621024 	and	v0,v1,v0
  4a4518:	afc20024 	sw	v0,36(s8)
  4a451c:	8fc30020 	lw	v1,32(s8)
  4a4520:	8fc20028 	lw	v0,40(s8)
  4a4524:	00000000 	nop
  4a4528:	00621026 	xor	v0,v1,v0
  4a452c:	afc20020 	sw	v0,32(s8)
  4a4530:	8fc30024 	lw	v1,36(s8)
  4a4534:	8fc2001c 	lw	v0,28(s8)
  4a4538:	00000000 	nop
  4a453c:	00621026 	xor	v0,v1,v0
  4a4540:	afc20024 	sw	v0,36(s8)
  4a4544:	8fc30024 	lw	v1,36(s8)
  4a4548:	8fc20020 	lw	v0,32(s8)
  4a454c:	00000000 	nop
  4a4550:	00621025 	or	v0,v1,v0
  4a4554:	afc20024 	sw	v0,36(s8)
  4a4558:	8fc30018 	lw	v1,24(s8)
  4a455c:	8fc20028 	lw	v0,40(s8)
  4a4560:	00000000 	nop
  4a4564:	00621026 	xor	v0,v1,v0
  4a4568:	afc20018 	sw	v0,24(s8)
  4a456c:	8fc30024 	lw	v1,36(s8)
  4a4570:	8fc20018 	lw	v0,24(s8)
  4a4574:	00000000 	nop
  4a4578:	00621026 	xor	v0,v1,v0
  4a457c:	afc20024 	sw	v0,36(s8)
  4a4580:	8fc3001c 	lw	v1,28(s8)
  4a4584:	8fc20020 	lw	v0,32(s8)
  4a4588:	00000000 	nop
  4a458c:	00621024 	and	v0,v1,v0
  4a4590:	afc2001c 	sw	v0,28(s8)
  4a4594:	8fc30018 	lw	v1,24(s8)
  4a4598:	8fc2001c 	lw	v0,28(s8)
  4a459c:	00000000 	nop
  4a45a0:	00621025 	or	v0,v1,v0
  4a45a4:	afc20018 	sw	v0,24(s8)
  4a45a8:	8fc3001c 	lw	v1,28(s8)
  4a45ac:	8fc20028 	lw	v0,40(s8)
  4a45b0:	00000000 	nop
  4a45b4:	00621026 	xor	v0,v1,v0
  4a45b8:	afc2001c 	sw	v0,28(s8)
  4a45bc:	8fc30018 	lw	v1,24(s8)
  4a45c0:	8fc20020 	lw	v0,32(s8)
  4a45c4:	00000000 	nop
  4a45c8:	00621026 	xor	v0,v1,v0
  4a45cc:	afc20018 	sw	v0,24(s8)
  4a45d0:	8fc30028 	lw	v1,40(s8)
  4a45d4:	8fc20024 	lw	v0,36(s8)
  4a45d8:	00000000 	nop
  4a45dc:	00621025 	or	v0,v1,v0
  4a45e0:	afc20028 	sw	v0,40(s8)
  4a45e4:	8fc30018 	lw	v1,24(s8)
  4a45e8:	8fc20028 	lw	v0,40(s8)
  4a45ec:	00000000 	nop
  4a45f0:	00621026 	xor	v0,v1,v0
  4a45f4:	afc20018 	sw	v0,24(s8)
  4a45f8:	8fc20028 	lw	v0,40(s8)
  4a45fc:	00000000 	nop
  4a4600:	00021027 	nor	v0,zero,v0
  4a4604:	afc20028 	sw	v0,40(s8)
  4a4608:	8fc3001c 	lw	v1,28(s8)
  4a460c:	8fc20024 	lw	v0,36(s8)
  4a4610:	00000000 	nop
  4a4614:	00621026 	xor	v0,v1,v0
  4a4618:	afc2001c 	sw	v0,28(s8)
  4a461c:	8fc30028 	lw	v1,40(s8)
  4a4620:	8fc20020 	lw	v0,32(s8)
  4a4624:	00000000 	nop
  4a4628:	00621024 	and	v0,v1,v0
  4a462c:	afc20028 	sw	v0,40(s8)
  4a4630:	8fc2001c 	lw	v0,28(s8)
  4a4634:	00000000 	nop
  4a4638:	00021027 	nor	v0,zero,v0
  4a463c:	afc2001c 	sw	v0,28(s8)
  4a4640:	8fc30028 	lw	v1,40(s8)
  4a4644:	8fc20018 	lw	v0,24(s8)
  4a4648:	00000000 	nop
  4a464c:	00621026 	xor	v0,v1,v0
  4a4650:	afc20028 	sw	v0,40(s8)
  4a4654:	8fc3001c 	lw	v1,28(s8)
  4a4658:	8fc20028 	lw	v0,40(s8)
  4a465c:	00000000 	nop
  4a4660:	00621026 	xor	v0,v1,v0
  4a4664:	afc2001c 	sw	v0,28(s8)
      SETKEY(r3, r1, r2, r0, 72) 
  4a4668:	8fc2000c 	lw	v0,12(s8)
  4a466c:	00000000 	nop
  4a4670:	24430140 	addiu	v1,v0,320
  4a4674:	8fc20024 	lw	v0,36(s8)
  4a4678:	00000000 	nop
  4a467c:	ac620000 	sw	v0,0(v1)
  4a4680:	8fc2000c 	lw	v0,12(s8)
  4a4684:	00000000 	nop
  4a4688:	24430144 	addiu	v1,v0,324
  4a468c:	8fc2001c 	lw	v0,28(s8)
  4a4690:	00000000 	nop
  4a4694:	ac620000 	sw	v0,0(v1)
  4a4698:	8fc2000c 	lw	v0,12(s8)
  4a469c:	00000000 	nop
  4a46a0:	24430148 	addiu	v1,v0,328
  4a46a4:	8fc20020 	lw	v0,32(s8)
  4a46a8:	00000000 	nop
  4a46ac:	ac620000 	sw	v0,0(v1)
  4a46b0:	8fc2000c 	lw	v0,12(s8)
  4a46b4:	00000000 	nop
  4a46b8:	2443014c 	addiu	v1,v0,332
  4a46bc:	8fc20018 	lw	v0,24(s8)
  4a46c0:	00000000 	nop
  4a46c4:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 76);
  4a46c8:	8fc2000c 	lw	v0,12(s8)
  4a46cc:	00000000 	nop
  4a46d0:	24420150 	addiu	v0,v0,336
  4a46d4:	8c420000 	lw	v0,0(v0)
  4a46d8:	00000000 	nop
  4a46dc:	afc20018 	sw	v0,24(s8)
  4a46e0:	8fc2000c 	lw	v0,12(s8)
  4a46e4:	00000000 	nop
  4a46e8:	24420154 	addiu	v0,v0,340
  4a46ec:	8c420000 	lw	v0,0(v0)
  4a46f0:	00000000 	nop
  4a46f4:	afc2001c 	sw	v0,28(s8)
  4a46f8:	8fc2000c 	lw	v0,12(s8)
  4a46fc:	00000000 	nop
  4a4700:	24420158 	addiu	v0,v0,344
  4a4704:	8c420000 	lw	v0,0(v0)
  4a4708:	00000000 	nop
  4a470c:	afc20020 	sw	v0,32(s8)
  4a4710:	8fc2000c 	lw	v0,12(s8)
  4a4714:	00000000 	nop
  4a4718:	2442015c 	addiu	v0,v0,348
  4a471c:	8c420000 	lw	v0,0(v0)
  4a4720:	00000000 	nop
  4a4724:	afc20024 	sw	v0,36(s8)
      S0(r0,r1,r2,r3,r4);
  4a4728:	8fc30024 	lw	v1,36(s8)
  4a472c:	8fc20018 	lw	v0,24(s8)
  4a4730:	00000000 	nop
  4a4734:	00621026 	xor	v0,v1,v0
  4a4738:	afc20024 	sw	v0,36(s8)
  4a473c:	8fc2001c 	lw	v0,28(s8)
  4a4740:	00000000 	nop
  4a4744:	afc20028 	sw	v0,40(s8)
  4a4748:	8fc3001c 	lw	v1,28(s8)
  4a474c:	8fc20024 	lw	v0,36(s8)
  4a4750:	00000000 	nop
  4a4754:	00621024 	and	v0,v1,v0
  4a4758:	afc2001c 	sw	v0,28(s8)
  4a475c:	8fc30028 	lw	v1,40(s8)
  4a4760:	8fc20020 	lw	v0,32(s8)
  4a4764:	00000000 	nop
  4a4768:	00621026 	xor	v0,v1,v0
  4a476c:	afc20028 	sw	v0,40(s8)
  4a4770:	8fc3001c 	lw	v1,28(s8)
  4a4774:	8fc20018 	lw	v0,24(s8)
  4a4778:	00000000 	nop
  4a477c:	00621026 	xor	v0,v1,v0
  4a4780:	afc2001c 	sw	v0,28(s8)
  4a4784:	8fc30018 	lw	v1,24(s8)
  4a4788:	8fc20024 	lw	v0,36(s8)
  4a478c:	00000000 	nop
  4a4790:	00621025 	or	v0,v1,v0
  4a4794:	afc20018 	sw	v0,24(s8)
  4a4798:	8fc30018 	lw	v1,24(s8)
  4a479c:	8fc20028 	lw	v0,40(s8)
  4a47a0:	00000000 	nop
  4a47a4:	00621026 	xor	v0,v1,v0
  4a47a8:	afc20018 	sw	v0,24(s8)
  4a47ac:	8fc30028 	lw	v1,40(s8)
  4a47b0:	8fc20024 	lw	v0,36(s8)
  4a47b4:	00000000 	nop
  4a47b8:	00621026 	xor	v0,v1,v0
  4a47bc:	afc20028 	sw	v0,40(s8)
  4a47c0:	8fc30024 	lw	v1,36(s8)
  4a47c4:	8fc20020 	lw	v0,32(s8)
  4a47c8:	00000000 	nop
  4a47cc:	00621026 	xor	v0,v1,v0
  4a47d0:	afc20024 	sw	v0,36(s8)
  4a47d4:	8fc30020 	lw	v1,32(s8)
  4a47d8:	8fc2001c 	lw	v0,28(s8)
  4a47dc:	00000000 	nop
  4a47e0:	00621025 	or	v0,v1,v0
  4a47e4:	afc20020 	sw	v0,32(s8)
  4a47e8:	8fc30020 	lw	v1,32(s8)
  4a47ec:	8fc20028 	lw	v0,40(s8)
  4a47f0:	00000000 	nop
  4a47f4:	00621026 	xor	v0,v1,v0
  4a47f8:	afc20020 	sw	v0,32(s8)
  4a47fc:	8fc20028 	lw	v0,40(s8)
  4a4800:	00000000 	nop
  4a4804:	00021027 	nor	v0,zero,v0
  4a4808:	afc20028 	sw	v0,40(s8)
  4a480c:	8fc30028 	lw	v1,40(s8)
  4a4810:	8fc2001c 	lw	v0,28(s8)
  4a4814:	00000000 	nop
  4a4818:	00621025 	or	v0,v1,v0
  4a481c:	afc20028 	sw	v0,40(s8)
  4a4820:	8fc3001c 	lw	v1,28(s8)
  4a4824:	8fc20024 	lw	v0,36(s8)
  4a4828:	00000000 	nop
  4a482c:	00621026 	xor	v0,v1,v0
  4a4830:	afc2001c 	sw	v0,28(s8)
  4a4834:	8fc3001c 	lw	v1,28(s8)
  4a4838:	8fc20028 	lw	v0,40(s8)
  4a483c:	00000000 	nop
  4a4840:	00621026 	xor	v0,v1,v0
  4a4844:	afc2001c 	sw	v0,28(s8)
  4a4848:	8fc30024 	lw	v1,36(s8)
  4a484c:	8fc20018 	lw	v0,24(s8)
  4a4850:	00000000 	nop
  4a4854:	00621025 	or	v0,v1,v0
  4a4858:	afc20024 	sw	v0,36(s8)
  4a485c:	8fc3001c 	lw	v1,28(s8)
  4a4860:	8fc20024 	lw	v0,36(s8)
  4a4864:	00000000 	nop
  4a4868:	00621026 	xor	v0,v1,v0
  4a486c:	afc2001c 	sw	v0,28(s8)
  4a4870:	8fc30028 	lw	v1,40(s8)
  4a4874:	8fc20024 	lw	v0,36(s8)
  4a4878:	00000000 	nop
  4a487c:	00621026 	xor	v0,v1,v0
  4a4880:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r2, r0, 76) 
  4a4884:	8fc2000c 	lw	v0,12(s8)
  4a4888:	00000000 	nop
  4a488c:	24430150 	addiu	v1,v0,336
  4a4890:	8fc2001c 	lw	v0,28(s8)
  4a4894:	00000000 	nop
  4a4898:	ac620000 	sw	v0,0(v1)
  4a489c:	8fc2000c 	lw	v0,12(s8)
  4a48a0:	00000000 	nop
  4a48a4:	24430154 	addiu	v1,v0,340
  4a48a8:	8fc20028 	lw	v0,40(s8)
  4a48ac:	00000000 	nop
  4a48b0:	ac620000 	sw	v0,0(v1)
  4a48b4:	8fc2000c 	lw	v0,12(s8)
  4a48b8:	00000000 	nop
  4a48bc:	24430158 	addiu	v1,v0,344
  4a48c0:	8fc20020 	lw	v0,32(s8)
  4a48c4:	00000000 	nop
  4a48c8:	ac620000 	sw	v0,0(v1)
  4a48cc:	8fc2000c 	lw	v0,12(s8)
  4a48d0:	00000000 	nop
  4a48d4:	2443015c 	addiu	v1,v0,348
  4a48d8:	8fc20018 	lw	v0,24(s8)
  4a48dc:	00000000 	nop
  4a48e0:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 80);
  4a48e4:	8fc2000c 	lw	v0,12(s8)
  4a48e8:	00000000 	nop
  4a48ec:	24420160 	addiu	v0,v0,352
  4a48f0:	8c420000 	lw	v0,0(v0)
  4a48f4:	00000000 	nop
  4a48f8:	afc20018 	sw	v0,24(s8)
  4a48fc:	8fc2000c 	lw	v0,12(s8)
  4a4900:	00000000 	nop
  4a4904:	24420164 	addiu	v0,v0,356
  4a4908:	8c420000 	lw	v0,0(v0)
  4a490c:	00000000 	nop
  4a4910:	afc2001c 	sw	v0,28(s8)
  4a4914:	8fc2000c 	lw	v0,12(s8)
  4a4918:	00000000 	nop
  4a491c:	24420168 	addiu	v0,v0,360
  4a4920:	8c420000 	lw	v0,0(v0)
  4a4924:	00000000 	nop
  4a4928:	afc20020 	sw	v0,32(s8)
  4a492c:	8fc2000c 	lw	v0,12(s8)
  4a4930:	00000000 	nop
  4a4934:	2442016c 	addiu	v0,v0,364
  4a4938:	8c420000 	lw	v0,0(v0)
  4a493c:	00000000 	nop
  4a4940:	afc20024 	sw	v0,36(s8)
      S7(r0,r1,r2,r3,r4);
  4a4944:	8fc20020 	lw	v0,32(s8)
  4a4948:	00000000 	nop
  4a494c:	afc20028 	sw	v0,40(s8)
  4a4950:	8fc30020 	lw	v1,32(s8)
  4a4954:	8fc2001c 	lw	v0,28(s8)
  4a4958:	00000000 	nop
  4a495c:	00621024 	and	v0,v1,v0
  4a4960:	afc20020 	sw	v0,32(s8)
  4a4964:	8fc30020 	lw	v1,32(s8)
  4a4968:	8fc20024 	lw	v0,36(s8)
  4a496c:	00000000 	nop
  4a4970:	00621026 	xor	v0,v1,v0
  4a4974:	afc20020 	sw	v0,32(s8)
  4a4978:	8fc30024 	lw	v1,36(s8)
  4a497c:	8fc2001c 	lw	v0,28(s8)
  4a4980:	00000000 	nop
  4a4984:	00621024 	and	v0,v1,v0
  4a4988:	afc20024 	sw	v0,36(s8)
  4a498c:	8fc30028 	lw	v1,40(s8)
  4a4990:	8fc20020 	lw	v0,32(s8)
  4a4994:	00000000 	nop
  4a4998:	00621026 	xor	v0,v1,v0
  4a499c:	afc20028 	sw	v0,40(s8)
  4a49a0:	8fc30020 	lw	v1,32(s8)
  4a49a4:	8fc2001c 	lw	v0,28(s8)
  4a49a8:	00000000 	nop
  4a49ac:	00621026 	xor	v0,v1,v0
  4a49b0:	afc20020 	sw	v0,32(s8)
  4a49b4:	8fc3001c 	lw	v1,28(s8)
  4a49b8:	8fc20018 	lw	v0,24(s8)
  4a49bc:	00000000 	nop
  4a49c0:	00621026 	xor	v0,v1,v0
  4a49c4:	afc2001c 	sw	v0,28(s8)
  4a49c8:	8fc30018 	lw	v1,24(s8)
  4a49cc:	8fc20028 	lw	v0,40(s8)
  4a49d0:	00000000 	nop
  4a49d4:	00621025 	or	v0,v1,v0
  4a49d8:	afc20018 	sw	v0,24(s8)
  4a49dc:	8fc30018 	lw	v1,24(s8)
  4a49e0:	8fc20020 	lw	v0,32(s8)
  4a49e4:	00000000 	nop
  4a49e8:	00621026 	xor	v0,v1,v0
  4a49ec:	afc20018 	sw	v0,24(s8)
  4a49f0:	8fc30024 	lw	v1,36(s8)
  4a49f4:	8fc2001c 	lw	v0,28(s8)
  4a49f8:	00000000 	nop
  4a49fc:	00621026 	xor	v0,v1,v0
  4a4a00:	afc20024 	sw	v0,36(s8)
  4a4a04:	8fc30020 	lw	v1,32(s8)
  4a4a08:	8fc20024 	lw	v0,36(s8)
  4a4a0c:	00000000 	nop
  4a4a10:	00621026 	xor	v0,v1,v0
  4a4a14:	afc20020 	sw	v0,32(s8)
  4a4a18:	8fc30024 	lw	v1,36(s8)
  4a4a1c:	8fc20018 	lw	v0,24(s8)
  4a4a20:	00000000 	nop
  4a4a24:	00621024 	and	v0,v1,v0
  4a4a28:	afc20024 	sw	v0,36(s8)
  4a4a2c:	8fc30024 	lw	v1,36(s8)
  4a4a30:	8fc20028 	lw	v0,40(s8)
  4a4a34:	00000000 	nop
  4a4a38:	00621026 	xor	v0,v1,v0
  4a4a3c:	afc20024 	sw	v0,36(s8)
  4a4a40:	8fc30028 	lw	v1,40(s8)
  4a4a44:	8fc20020 	lw	v0,32(s8)
  4a4a48:	00000000 	nop
  4a4a4c:	00621026 	xor	v0,v1,v0
  4a4a50:	afc20028 	sw	v0,40(s8)
  4a4a54:	8fc30020 	lw	v1,32(s8)
  4a4a58:	8fc20018 	lw	v0,24(s8)
  4a4a5c:	00000000 	nop
  4a4a60:	00621024 	and	v0,v1,v0
  4a4a64:	afc20020 	sw	v0,32(s8)
  4a4a68:	8fc20028 	lw	v0,40(s8)
  4a4a6c:	00000000 	nop
  4a4a70:	00021027 	nor	v0,zero,v0
  4a4a74:	afc20028 	sw	v0,40(s8)
  4a4a78:	8fc30020 	lw	v1,32(s8)
  4a4a7c:	8fc20028 	lw	v0,40(s8)
  4a4a80:	00000000 	nop
  4a4a84:	00621026 	xor	v0,v1,v0
  4a4a88:	afc20020 	sw	v0,32(s8)
  4a4a8c:	8fc30028 	lw	v1,40(s8)
  4a4a90:	8fc20018 	lw	v0,24(s8)
  4a4a94:	00000000 	nop
  4a4a98:	00621024 	and	v0,v1,v0
  4a4a9c:	afc20028 	sw	v0,40(s8)
  4a4aa0:	8fc3001c 	lw	v1,28(s8)
  4a4aa4:	8fc20024 	lw	v0,36(s8)
  4a4aa8:	00000000 	nop
  4a4aac:	00621026 	xor	v0,v1,v0
  4a4ab0:	afc2001c 	sw	v0,28(s8)
  4a4ab4:	8fc30028 	lw	v1,40(s8)
  4a4ab8:	8fc2001c 	lw	v0,28(s8)
  4a4abc:	00000000 	nop
  4a4ac0:	00621026 	xor	v0,v1,v0
  4a4ac4:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r4, r3, r0, 80) 
  4a4ac8:	8fc2000c 	lw	v0,12(s8)
  4a4acc:	00000000 	nop
  4a4ad0:	24430160 	addiu	v1,v0,352
  4a4ad4:	8fc20020 	lw	v0,32(s8)
  4a4ad8:	00000000 	nop
  4a4adc:	ac620000 	sw	v0,0(v1)
  4a4ae0:	8fc2000c 	lw	v0,12(s8)
  4a4ae4:	00000000 	nop
  4a4ae8:	24430164 	addiu	v1,v0,356
  4a4aec:	8fc20028 	lw	v0,40(s8)
  4a4af0:	00000000 	nop
  4a4af4:	ac620000 	sw	v0,0(v1)
  4a4af8:	8fc2000c 	lw	v0,12(s8)
  4a4afc:	00000000 	nop
  4a4b00:	24430168 	addiu	v1,v0,360
  4a4b04:	8fc20024 	lw	v0,36(s8)
  4a4b08:	00000000 	nop
  4a4b0c:	ac620000 	sw	v0,0(v1)
  4a4b10:	8fc2000c 	lw	v0,12(s8)
  4a4b14:	00000000 	nop
  4a4b18:	2443016c 	addiu	v1,v0,364
  4a4b1c:	8fc20018 	lw	v0,24(s8)
  4a4b20:	00000000 	nop
  4a4b24:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 84);
  4a4b28:	8fc2000c 	lw	v0,12(s8)
  4a4b2c:	00000000 	nop
  4a4b30:	24420170 	addiu	v0,v0,368
  4a4b34:	8c420000 	lw	v0,0(v0)
  4a4b38:	00000000 	nop
  4a4b3c:	afc20018 	sw	v0,24(s8)
  4a4b40:	8fc2000c 	lw	v0,12(s8)
  4a4b44:	00000000 	nop
  4a4b48:	24420174 	addiu	v0,v0,372
  4a4b4c:	8c420000 	lw	v0,0(v0)
  4a4b50:	00000000 	nop
  4a4b54:	afc2001c 	sw	v0,28(s8)
  4a4b58:	8fc2000c 	lw	v0,12(s8)
  4a4b5c:	00000000 	nop
  4a4b60:	24420178 	addiu	v0,v0,376
  4a4b64:	8c420000 	lw	v0,0(v0)
  4a4b68:	00000000 	nop
  4a4b6c:	afc20020 	sw	v0,32(s8)
  4a4b70:	8fc2000c 	lw	v0,12(s8)
  4a4b74:	00000000 	nop
  4a4b78:	2442017c 	addiu	v0,v0,380
  4a4b7c:	8c420000 	lw	v0,0(v0)
  4a4b80:	00000000 	nop
  4a4b84:	afc20024 	sw	v0,36(s8)
      S6(r0,r1,r2,r3,r4) 
  4a4b88:	8fc20020 	lw	v0,32(s8)
  4a4b8c:	00000000 	nop
  4a4b90:	00021027 	nor	v0,zero,v0
  4a4b94:	afc20020 	sw	v0,32(s8)
  4a4b98:	8fc20024 	lw	v0,36(s8)
  4a4b9c:	00000000 	nop
  4a4ba0:	afc20028 	sw	v0,40(s8)
  4a4ba4:	8fc30024 	lw	v1,36(s8)
  4a4ba8:	8fc20018 	lw	v0,24(s8)
  4a4bac:	00000000 	nop
  4a4bb0:	00621024 	and	v0,v1,v0
  4a4bb4:	afc20024 	sw	v0,36(s8)
  4a4bb8:	8fc30018 	lw	v1,24(s8)
  4a4bbc:	8fc20028 	lw	v0,40(s8)
  4a4bc0:	00000000 	nop
  4a4bc4:	00621026 	xor	v0,v1,v0
  4a4bc8:	afc20018 	sw	v0,24(s8)
  4a4bcc:	8fc30024 	lw	v1,36(s8)
  4a4bd0:	8fc20020 	lw	v0,32(s8)
  4a4bd4:	00000000 	nop
  4a4bd8:	00621026 	xor	v0,v1,v0
  4a4bdc:	afc20024 	sw	v0,36(s8)
  4a4be0:	8fc30020 	lw	v1,32(s8)
  4a4be4:	8fc20028 	lw	v0,40(s8)
  4a4be8:	00000000 	nop
  4a4bec:	00621025 	or	v0,v1,v0
  4a4bf0:	afc20020 	sw	v0,32(s8)
  4a4bf4:	8fc3001c 	lw	v1,28(s8)
  4a4bf8:	8fc20024 	lw	v0,36(s8)
  4a4bfc:	00000000 	nop
  4a4c00:	00621026 	xor	v0,v1,v0
  4a4c04:	afc2001c 	sw	v0,28(s8)
  4a4c08:	8fc30020 	lw	v1,32(s8)
  4a4c0c:	8fc20018 	lw	v0,24(s8)
  4a4c10:	00000000 	nop
  4a4c14:	00621026 	xor	v0,v1,v0
  4a4c18:	afc20020 	sw	v0,32(s8)
  4a4c1c:	8fc30018 	lw	v1,24(s8)
  4a4c20:	8fc2001c 	lw	v0,28(s8)
  4a4c24:	00000000 	nop
  4a4c28:	00621025 	or	v0,v1,v0
  4a4c2c:	afc20018 	sw	v0,24(s8)
  4a4c30:	8fc30020 	lw	v1,32(s8)
  4a4c34:	8fc2001c 	lw	v0,28(s8)
  4a4c38:	00000000 	nop
  4a4c3c:	00621026 	xor	v0,v1,v0
  4a4c40:	afc20020 	sw	v0,32(s8)
  4a4c44:	8fc30028 	lw	v1,40(s8)
  4a4c48:	8fc20018 	lw	v0,24(s8)
  4a4c4c:	00000000 	nop
  4a4c50:	00621026 	xor	v0,v1,v0
  4a4c54:	afc20028 	sw	v0,40(s8)
  4a4c58:	8fc30018 	lw	v1,24(s8)
  4a4c5c:	8fc20024 	lw	v0,36(s8)
  4a4c60:	00000000 	nop
  4a4c64:	00621025 	or	v0,v1,v0
  4a4c68:	afc20018 	sw	v0,24(s8)
  4a4c6c:	8fc30018 	lw	v1,24(s8)
  4a4c70:	8fc20020 	lw	v0,32(s8)
  4a4c74:	00000000 	nop
  4a4c78:	00621026 	xor	v0,v1,v0
  4a4c7c:	afc20018 	sw	v0,24(s8)
  4a4c80:	8fc30028 	lw	v1,40(s8)
  4a4c84:	8fc20024 	lw	v0,36(s8)
  4a4c88:	00000000 	nop
  4a4c8c:	00621026 	xor	v0,v1,v0
  4a4c90:	afc20028 	sw	v0,40(s8)
  4a4c94:	8fc30028 	lw	v1,40(s8)
  4a4c98:	8fc20018 	lw	v0,24(s8)
  4a4c9c:	00000000 	nop
  4a4ca0:	00621026 	xor	v0,v1,v0
  4a4ca4:	afc20028 	sw	v0,40(s8)
  4a4ca8:	8fc20024 	lw	v0,36(s8)
  4a4cac:	00000000 	nop
  4a4cb0:	00021027 	nor	v0,zero,v0
  4a4cb4:	afc20024 	sw	v0,36(s8)
  4a4cb8:	8fc30020 	lw	v1,32(s8)
  4a4cbc:	8fc20028 	lw	v0,40(s8)
  4a4cc0:	00000000 	nop
  4a4cc4:	00621024 	and	v0,v1,v0
  4a4cc8:	afc20020 	sw	v0,32(s8)
  4a4ccc:	8fc30020 	lw	v1,32(s8)
  4a4cd0:	8fc20024 	lw	v0,36(s8)
  4a4cd4:	00000000 	nop
  4a4cd8:	00621026 	xor	v0,v1,v0
  4a4cdc:	afc20020 	sw	v0,32(s8)
      SETKEY(r0, r1, r4, r2, 84) 
  4a4ce0:	8fc2000c 	lw	v0,12(s8)
  4a4ce4:	00000000 	nop
  4a4ce8:	24430170 	addiu	v1,v0,368
  4a4cec:	8fc20018 	lw	v0,24(s8)
  4a4cf0:	00000000 	nop
  4a4cf4:	ac620000 	sw	v0,0(v1)
  4a4cf8:	8fc2000c 	lw	v0,12(s8)
  4a4cfc:	00000000 	nop
  4a4d00:	24430174 	addiu	v1,v0,372
  4a4d04:	8fc2001c 	lw	v0,28(s8)
  4a4d08:	00000000 	nop
  4a4d0c:	ac620000 	sw	v0,0(v1)
  4a4d10:	8fc2000c 	lw	v0,12(s8)
  4a4d14:	00000000 	nop
  4a4d18:	24430178 	addiu	v1,v0,376
  4a4d1c:	8fc20028 	lw	v0,40(s8)
  4a4d20:	00000000 	nop
  4a4d24:	ac620000 	sw	v0,0(v1)
  4a4d28:	8fc2000c 	lw	v0,12(s8)
  4a4d2c:	00000000 	nop
  4a4d30:	2443017c 	addiu	v1,v0,380
  4a4d34:	8fc20020 	lw	v0,32(s8)
  4a4d38:	00000000 	nop
  4a4d3c:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 88);
  4a4d40:	8fc2000c 	lw	v0,12(s8)
  4a4d44:	00000000 	nop
  4a4d48:	24420180 	addiu	v0,v0,384
  4a4d4c:	8c420000 	lw	v0,0(v0)
  4a4d50:	00000000 	nop
  4a4d54:	afc20018 	sw	v0,24(s8)
  4a4d58:	8fc2000c 	lw	v0,12(s8)
  4a4d5c:	00000000 	nop
  4a4d60:	24420184 	addiu	v0,v0,388
  4a4d64:	8c420000 	lw	v0,0(v0)
  4a4d68:	00000000 	nop
  4a4d6c:	afc2001c 	sw	v0,28(s8)
  4a4d70:	8fc2000c 	lw	v0,12(s8)
  4a4d74:	00000000 	nop
  4a4d78:	24420188 	addiu	v0,v0,392
  4a4d7c:	8c420000 	lw	v0,0(v0)
  4a4d80:	00000000 	nop
  4a4d84:	afc20020 	sw	v0,32(s8)
  4a4d88:	8fc2000c 	lw	v0,12(s8)
  4a4d8c:	00000000 	nop
  4a4d90:	2442018c 	addiu	v0,v0,396
  4a4d94:	8c420000 	lw	v0,0(v0)
  4a4d98:	00000000 	nop
  4a4d9c:	afc20024 	sw	v0,36(s8)
      S5(r0,r1,r2,r3,r4);
  4a4da0:	8fc30018 	lw	v1,24(s8)
  4a4da4:	8fc2001c 	lw	v0,28(s8)
  4a4da8:	00000000 	nop
  4a4dac:	00621026 	xor	v0,v1,v0
  4a4db0:	afc20018 	sw	v0,24(s8)
  4a4db4:	8fc3001c 	lw	v1,28(s8)
  4a4db8:	8fc20024 	lw	v0,36(s8)
  4a4dbc:	00000000 	nop
  4a4dc0:	00621026 	xor	v0,v1,v0
  4a4dc4:	afc2001c 	sw	v0,28(s8)
  4a4dc8:	8fc20024 	lw	v0,36(s8)
  4a4dcc:	00000000 	nop
  4a4dd0:	00021027 	nor	v0,zero,v0
  4a4dd4:	afc20024 	sw	v0,36(s8)
  4a4dd8:	8fc2001c 	lw	v0,28(s8)
  4a4ddc:	00000000 	nop
  4a4de0:	afc20028 	sw	v0,40(s8)
  4a4de4:	8fc3001c 	lw	v1,28(s8)
  4a4de8:	8fc20018 	lw	v0,24(s8)
  4a4dec:	00000000 	nop
  4a4df0:	00621024 	and	v0,v1,v0
  4a4df4:	afc2001c 	sw	v0,28(s8)
  4a4df8:	8fc30020 	lw	v1,32(s8)
  4a4dfc:	8fc20024 	lw	v0,36(s8)
  4a4e00:	00000000 	nop
  4a4e04:	00621026 	xor	v0,v1,v0
  4a4e08:	afc20020 	sw	v0,32(s8)
  4a4e0c:	8fc3001c 	lw	v1,28(s8)
  4a4e10:	8fc20020 	lw	v0,32(s8)
  4a4e14:	00000000 	nop
  4a4e18:	00621026 	xor	v0,v1,v0
  4a4e1c:	afc2001c 	sw	v0,28(s8)
  4a4e20:	8fc30020 	lw	v1,32(s8)
  4a4e24:	8fc20028 	lw	v0,40(s8)
  4a4e28:	00000000 	nop
  4a4e2c:	00621025 	or	v0,v1,v0
  4a4e30:	afc20020 	sw	v0,32(s8)
  4a4e34:	8fc30028 	lw	v1,40(s8)
  4a4e38:	8fc20024 	lw	v0,36(s8)
  4a4e3c:	00000000 	nop
  4a4e40:	00621026 	xor	v0,v1,v0
  4a4e44:	afc20028 	sw	v0,40(s8)
  4a4e48:	8fc30024 	lw	v1,36(s8)
  4a4e4c:	8fc2001c 	lw	v0,28(s8)
  4a4e50:	00000000 	nop
  4a4e54:	00621024 	and	v0,v1,v0
  4a4e58:	afc20024 	sw	v0,36(s8)
  4a4e5c:	8fc30024 	lw	v1,36(s8)
  4a4e60:	8fc20018 	lw	v0,24(s8)
  4a4e64:	00000000 	nop
  4a4e68:	00621026 	xor	v0,v1,v0
  4a4e6c:	afc20024 	sw	v0,36(s8)
  4a4e70:	8fc30028 	lw	v1,40(s8)
  4a4e74:	8fc2001c 	lw	v0,28(s8)
  4a4e78:	00000000 	nop
  4a4e7c:	00621026 	xor	v0,v1,v0
  4a4e80:	afc20028 	sw	v0,40(s8)
  4a4e84:	8fc30028 	lw	v1,40(s8)
  4a4e88:	8fc20020 	lw	v0,32(s8)
  4a4e8c:	00000000 	nop
  4a4e90:	00621026 	xor	v0,v1,v0
  4a4e94:	afc20028 	sw	v0,40(s8)
  4a4e98:	8fc30020 	lw	v1,32(s8)
  4a4e9c:	8fc20018 	lw	v0,24(s8)
  4a4ea0:	00000000 	nop
  4a4ea4:	00621026 	xor	v0,v1,v0
  4a4ea8:	afc20020 	sw	v0,32(s8)
  4a4eac:	8fc30018 	lw	v1,24(s8)
  4a4eb0:	8fc20024 	lw	v0,36(s8)
  4a4eb4:	00000000 	nop
  4a4eb8:	00621024 	and	v0,v1,v0
  4a4ebc:	afc20018 	sw	v0,24(s8)
  4a4ec0:	8fc20020 	lw	v0,32(s8)
  4a4ec4:	00000000 	nop
  4a4ec8:	00021027 	nor	v0,zero,v0
  4a4ecc:	afc20020 	sw	v0,32(s8)
  4a4ed0:	8fc30018 	lw	v1,24(s8)
  4a4ed4:	8fc20028 	lw	v0,40(s8)
  4a4ed8:	00000000 	nop
  4a4edc:	00621026 	xor	v0,v1,v0
  4a4ee0:	afc20018 	sw	v0,24(s8)
  4a4ee4:	8fc30028 	lw	v1,40(s8)
  4a4ee8:	8fc20024 	lw	v0,36(s8)
  4a4eec:	00000000 	nop
  4a4ef0:	00621025 	or	v0,v1,v0
  4a4ef4:	afc20028 	sw	v0,40(s8)
  4a4ef8:	8fc30020 	lw	v1,32(s8)
  4a4efc:	8fc20028 	lw	v0,40(s8)
  4a4f00:	00000000 	nop
  4a4f04:	00621026 	xor	v0,v1,v0
  4a4f08:	afc20020 	sw	v0,32(s8)
      SETKEY(r1, r3, r0, r2, 88) 
  4a4f0c:	8fc2000c 	lw	v0,12(s8)
  4a4f10:	00000000 	nop
  4a4f14:	24430180 	addiu	v1,v0,384
  4a4f18:	8fc2001c 	lw	v0,28(s8)
  4a4f1c:	00000000 	nop
  4a4f20:	ac620000 	sw	v0,0(v1)
  4a4f24:	8fc2000c 	lw	v0,12(s8)
  4a4f28:	00000000 	nop
  4a4f2c:	24430184 	addiu	v1,v0,388
  4a4f30:	8fc20024 	lw	v0,36(s8)
  4a4f34:	00000000 	nop
  4a4f38:	ac620000 	sw	v0,0(v1)
  4a4f3c:	8fc2000c 	lw	v0,12(s8)
  4a4f40:	00000000 	nop
  4a4f44:	24430188 	addiu	v1,v0,392
  4a4f48:	8fc20018 	lw	v0,24(s8)
  4a4f4c:	00000000 	nop
  4a4f50:	ac620000 	sw	v0,0(v1)
  4a4f54:	8fc2000c 	lw	v0,12(s8)
  4a4f58:	00000000 	nop
  4a4f5c:	2443018c 	addiu	v1,v0,396
  4a4f60:	8fc20020 	lw	v0,32(s8)
  4a4f64:	00000000 	nop
  4a4f68:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 92);
  4a4f6c:	8fc2000c 	lw	v0,12(s8)
  4a4f70:	00000000 	nop
  4a4f74:	24420190 	addiu	v0,v0,400
  4a4f78:	8c420000 	lw	v0,0(v0)
  4a4f7c:	00000000 	nop
  4a4f80:	afc20018 	sw	v0,24(s8)
  4a4f84:	8fc2000c 	lw	v0,12(s8)
  4a4f88:	00000000 	nop
  4a4f8c:	24420194 	addiu	v0,v0,404
  4a4f90:	8c420000 	lw	v0,0(v0)
  4a4f94:	00000000 	nop
  4a4f98:	afc2001c 	sw	v0,28(s8)
  4a4f9c:	8fc2000c 	lw	v0,12(s8)
  4a4fa0:	00000000 	nop
  4a4fa4:	24420198 	addiu	v0,v0,408
  4a4fa8:	8c420000 	lw	v0,0(v0)
  4a4fac:	00000000 	nop
  4a4fb0:	afc20020 	sw	v0,32(s8)
  4a4fb4:	8fc2000c 	lw	v0,12(s8)
  4a4fb8:	00000000 	nop
  4a4fbc:	2442019c 	addiu	v0,v0,412
  4a4fc0:	8c420000 	lw	v0,0(v0)
  4a4fc4:	00000000 	nop
  4a4fc8:	afc20024 	sw	v0,36(s8)
      S4(r0,r1,r2,r3,r4) 
  4a4fcc:	8fc3001c 	lw	v1,28(s8)
  4a4fd0:	8fc20024 	lw	v0,36(s8)
  4a4fd4:	00000000 	nop
  4a4fd8:	00621026 	xor	v0,v1,v0
  4a4fdc:	afc2001c 	sw	v0,28(s8)
  4a4fe0:	8fc20024 	lw	v0,36(s8)
  4a4fe4:	00000000 	nop
  4a4fe8:	00021027 	nor	v0,zero,v0
  4a4fec:	afc20024 	sw	v0,36(s8)
  4a4ff0:	8fc30020 	lw	v1,32(s8)
  4a4ff4:	8fc20024 	lw	v0,36(s8)
  4a4ff8:	00000000 	nop
  4a4ffc:	00621026 	xor	v0,v1,v0
  4a5000:	afc20020 	sw	v0,32(s8)
  4a5004:	8fc30024 	lw	v1,36(s8)
  4a5008:	8fc20018 	lw	v0,24(s8)
  4a500c:	00000000 	nop
  4a5010:	00621026 	xor	v0,v1,v0
  4a5014:	afc20024 	sw	v0,36(s8)
  4a5018:	8fc2001c 	lw	v0,28(s8)
  4a501c:	00000000 	nop
  4a5020:	afc20028 	sw	v0,40(s8)
  4a5024:	8fc3001c 	lw	v1,28(s8)
  4a5028:	8fc20024 	lw	v0,36(s8)
  4a502c:	00000000 	nop
  4a5030:	00621024 	and	v0,v1,v0
  4a5034:	afc2001c 	sw	v0,28(s8)
  4a5038:	8fc3001c 	lw	v1,28(s8)
  4a503c:	8fc20020 	lw	v0,32(s8)
  4a5040:	00000000 	nop
  4a5044:	00621026 	xor	v0,v1,v0
  4a5048:	afc2001c 	sw	v0,28(s8)
  4a504c:	8fc30028 	lw	v1,40(s8)
  4a5050:	8fc20024 	lw	v0,36(s8)
  4a5054:	00000000 	nop
  4a5058:	00621026 	xor	v0,v1,v0
  4a505c:	afc20028 	sw	v0,40(s8)
  4a5060:	8fc30018 	lw	v1,24(s8)
  4a5064:	8fc20028 	lw	v0,40(s8)
  4a5068:	00000000 	nop
  4a506c:	00621026 	xor	v0,v1,v0
  4a5070:	afc20018 	sw	v0,24(s8)
  4a5074:	8fc30020 	lw	v1,32(s8)
  4a5078:	8fc20028 	lw	v0,40(s8)
  4a507c:	00000000 	nop
  4a5080:	00621024 	and	v0,v1,v0
  4a5084:	afc20020 	sw	v0,32(s8)
  4a5088:	8fc30020 	lw	v1,32(s8)
  4a508c:	8fc20018 	lw	v0,24(s8)
  4a5090:	00000000 	nop
  4a5094:	00621026 	xor	v0,v1,v0
  4a5098:	afc20020 	sw	v0,32(s8)
  4a509c:	8fc30018 	lw	v1,24(s8)
  4a50a0:	8fc2001c 	lw	v0,28(s8)
  4a50a4:	00000000 	nop
  4a50a8:	00621024 	and	v0,v1,v0
  4a50ac:	afc20018 	sw	v0,24(s8)
  4a50b0:	8fc30024 	lw	v1,36(s8)
  4a50b4:	8fc20018 	lw	v0,24(s8)
  4a50b8:	00000000 	nop
  4a50bc:	00621026 	xor	v0,v1,v0
  4a50c0:	afc20024 	sw	v0,36(s8)
  4a50c4:	8fc30028 	lw	v1,40(s8)
  4a50c8:	8fc2001c 	lw	v0,28(s8)
  4a50cc:	00000000 	nop
  4a50d0:	00621025 	or	v0,v1,v0
  4a50d4:	afc20028 	sw	v0,40(s8)
  4a50d8:	8fc30028 	lw	v1,40(s8)
  4a50dc:	8fc20018 	lw	v0,24(s8)
  4a50e0:	00000000 	nop
  4a50e4:	00621026 	xor	v0,v1,v0
  4a50e8:	afc20028 	sw	v0,40(s8)
  4a50ec:	8fc30018 	lw	v1,24(s8)
  4a50f0:	8fc20024 	lw	v0,36(s8)
  4a50f4:	00000000 	nop
  4a50f8:	00621025 	or	v0,v1,v0
  4a50fc:	afc20018 	sw	v0,24(s8)
  4a5100:	8fc30018 	lw	v1,24(s8)
  4a5104:	8fc20020 	lw	v0,32(s8)
  4a5108:	00000000 	nop
  4a510c:	00621026 	xor	v0,v1,v0
  4a5110:	afc20018 	sw	v0,24(s8)
  4a5114:	8fc30020 	lw	v1,32(s8)
  4a5118:	8fc20024 	lw	v0,36(s8)
  4a511c:	00000000 	nop
  4a5120:	00621024 	and	v0,v1,v0
  4a5124:	afc20020 	sw	v0,32(s8)
  4a5128:	8fc20018 	lw	v0,24(s8)
  4a512c:	00000000 	nop
  4a5130:	00021027 	nor	v0,zero,v0
  4a5134:	afc20018 	sw	v0,24(s8)
  4a5138:	8fc30028 	lw	v1,40(s8)
  4a513c:	8fc20020 	lw	v0,32(s8)
  4a5140:	00000000 	nop
  4a5144:	00621026 	xor	v0,v1,v0
  4a5148:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r0, r3, 92) 
  4a514c:	8fc2000c 	lw	v0,12(s8)
  4a5150:	00000000 	nop
  4a5154:	24430190 	addiu	v1,v0,400
  4a5158:	8fc2001c 	lw	v0,28(s8)
  4a515c:	00000000 	nop
  4a5160:	ac620000 	sw	v0,0(v1)
  4a5164:	8fc2000c 	lw	v0,12(s8)
  4a5168:	00000000 	nop
  4a516c:	24430194 	addiu	v1,v0,404
  4a5170:	8fc20028 	lw	v0,40(s8)
  4a5174:	00000000 	nop
  4a5178:	ac620000 	sw	v0,0(v1)
  4a517c:	8fc2000c 	lw	v0,12(s8)
  4a5180:	00000000 	nop
  4a5184:	24430198 	addiu	v1,v0,408
  4a5188:	8fc20018 	lw	v0,24(s8)
  4a518c:	00000000 	nop
  4a5190:	ac620000 	sw	v0,0(v1)
  4a5194:	8fc2000c 	lw	v0,12(s8)
  4a5198:	00000000 	nop
  4a519c:	2443019c 	addiu	v1,v0,412
  4a51a0:	8fc20024 	lw	v0,36(s8)
  4a51a4:	00000000 	nop
  4a51a8:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 96);
  4a51ac:	8fc2000c 	lw	v0,12(s8)
  4a51b0:	00000000 	nop
  4a51b4:	244201a0 	addiu	v0,v0,416
  4a51b8:	8c420000 	lw	v0,0(v0)
  4a51bc:	00000000 	nop
  4a51c0:	afc20018 	sw	v0,24(s8)
  4a51c4:	8fc2000c 	lw	v0,12(s8)
  4a51c8:	00000000 	nop
  4a51cc:	244201a4 	addiu	v0,v0,420
  4a51d0:	8c420000 	lw	v0,0(v0)
  4a51d4:	00000000 	nop
  4a51d8:	afc2001c 	sw	v0,28(s8)
  4a51dc:	8fc2000c 	lw	v0,12(s8)
  4a51e0:	00000000 	nop
  4a51e4:	244201a8 	addiu	v0,v0,424
  4a51e8:	8c420000 	lw	v0,0(v0)
  4a51ec:	00000000 	nop
  4a51f0:	afc20020 	sw	v0,32(s8)
  4a51f4:	8fc2000c 	lw	v0,12(s8)
  4a51f8:	00000000 	nop
  4a51fc:	244201ac 	addiu	v0,v0,428
  4a5200:	8c420000 	lw	v0,0(v0)
  4a5204:	00000000 	nop
  4a5208:	afc20024 	sw	v0,36(s8)
      S3(r0,r1,r2,r3,r4);
  4a520c:	8fc20018 	lw	v0,24(s8)
  4a5210:	00000000 	nop
  4a5214:	afc20028 	sw	v0,40(s8)
  4a5218:	8fc30018 	lw	v1,24(s8)
  4a521c:	8fc20024 	lw	v0,36(s8)
  4a5220:	00000000 	nop
  4a5224:	00621025 	or	v0,v1,v0
  4a5228:	afc20018 	sw	v0,24(s8)
  4a522c:	8fc30024 	lw	v1,36(s8)
  4a5230:	8fc2001c 	lw	v0,28(s8)
  4a5234:	00000000 	nop
  4a5238:	00621026 	xor	v0,v1,v0
  4a523c:	afc20024 	sw	v0,36(s8)
  4a5240:	8fc3001c 	lw	v1,28(s8)
  4a5244:	8fc20028 	lw	v0,40(s8)
  4a5248:	00000000 	nop
  4a524c:	00621024 	and	v0,v1,v0
  4a5250:	afc2001c 	sw	v0,28(s8)
  4a5254:	8fc30028 	lw	v1,40(s8)
  4a5258:	8fc20020 	lw	v0,32(s8)
  4a525c:	00000000 	nop
  4a5260:	00621026 	xor	v0,v1,v0
  4a5264:	afc20028 	sw	v0,40(s8)
  4a5268:	8fc30020 	lw	v1,32(s8)
  4a526c:	8fc20024 	lw	v0,36(s8)
  4a5270:	00000000 	nop
  4a5274:	00621026 	xor	v0,v1,v0
  4a5278:	afc20020 	sw	v0,32(s8)
  4a527c:	8fc30024 	lw	v1,36(s8)
  4a5280:	8fc20018 	lw	v0,24(s8)
  4a5284:	00000000 	nop
  4a5288:	00621024 	and	v0,v1,v0
  4a528c:	afc20024 	sw	v0,36(s8)
  4a5290:	8fc30028 	lw	v1,40(s8)
  4a5294:	8fc2001c 	lw	v0,28(s8)
  4a5298:	00000000 	nop
  4a529c:	00621025 	or	v0,v1,v0
  4a52a0:	afc20028 	sw	v0,40(s8)
  4a52a4:	8fc30024 	lw	v1,36(s8)
  4a52a8:	8fc20028 	lw	v0,40(s8)
  4a52ac:	00000000 	nop
  4a52b0:	00621026 	xor	v0,v1,v0
  4a52b4:	afc20024 	sw	v0,36(s8)
  4a52b8:	8fc30018 	lw	v1,24(s8)
  4a52bc:	8fc2001c 	lw	v0,28(s8)
  4a52c0:	00000000 	nop
  4a52c4:	00621026 	xor	v0,v1,v0
  4a52c8:	afc20018 	sw	v0,24(s8)
  4a52cc:	8fc30028 	lw	v1,40(s8)
  4a52d0:	8fc20018 	lw	v0,24(s8)
  4a52d4:	00000000 	nop
  4a52d8:	00621024 	and	v0,v1,v0
  4a52dc:	afc20028 	sw	v0,40(s8)
  4a52e0:	8fc3001c 	lw	v1,28(s8)
  4a52e4:	8fc20024 	lw	v0,36(s8)
  4a52e8:	00000000 	nop
  4a52ec:	00621026 	xor	v0,v1,v0
  4a52f0:	afc2001c 	sw	v0,28(s8)
  4a52f4:	8fc30028 	lw	v1,40(s8)
  4a52f8:	8fc20020 	lw	v0,32(s8)
  4a52fc:	00000000 	nop
  4a5300:	00621026 	xor	v0,v1,v0
  4a5304:	afc20028 	sw	v0,40(s8)
  4a5308:	8fc3001c 	lw	v1,28(s8)
  4a530c:	8fc20018 	lw	v0,24(s8)
  4a5310:	00000000 	nop
  4a5314:	00621025 	or	v0,v1,v0
  4a5318:	afc2001c 	sw	v0,28(s8)
  4a531c:	8fc3001c 	lw	v1,28(s8)
  4a5320:	8fc20020 	lw	v0,32(s8)
  4a5324:	00000000 	nop
  4a5328:	00621026 	xor	v0,v1,v0
  4a532c:	afc2001c 	sw	v0,28(s8)
  4a5330:	8fc30018 	lw	v1,24(s8)
  4a5334:	8fc20024 	lw	v0,36(s8)
  4a5338:	00000000 	nop
  4a533c:	00621026 	xor	v0,v1,v0
  4a5340:	afc20018 	sw	v0,24(s8)
  4a5344:	8fc2001c 	lw	v0,28(s8)
  4a5348:	00000000 	nop
  4a534c:	afc20020 	sw	v0,32(s8)
  4a5350:	8fc3001c 	lw	v1,28(s8)
  4a5354:	8fc20024 	lw	v0,36(s8)
  4a5358:	00000000 	nop
  4a535c:	00621025 	or	v0,v1,v0
  4a5360:	afc2001c 	sw	v0,28(s8)
  4a5364:	8fc3001c 	lw	v1,28(s8)
  4a5368:	8fc20018 	lw	v0,24(s8)
  4a536c:	00000000 	nop
  4a5370:	00621026 	xor	v0,v1,v0
  4a5374:	afc2001c 	sw	v0,28(s8)
      SETKEY(r1, r2, r3, r4, 96) 
  4a5378:	8fc2000c 	lw	v0,12(s8)
  4a537c:	00000000 	nop
  4a5380:	244301a0 	addiu	v1,v0,416
  4a5384:	8fc2001c 	lw	v0,28(s8)
  4a5388:	00000000 	nop
  4a538c:	ac620000 	sw	v0,0(v1)
  4a5390:	8fc2000c 	lw	v0,12(s8)
  4a5394:	00000000 	nop
  4a5398:	244301a4 	addiu	v1,v0,420
  4a539c:	8fc20020 	lw	v0,32(s8)
  4a53a0:	00000000 	nop
  4a53a4:	ac620000 	sw	v0,0(v1)
  4a53a8:	8fc2000c 	lw	v0,12(s8)
  4a53ac:	00000000 	nop
  4a53b0:	244301a8 	addiu	v1,v0,424
  4a53b4:	8fc20024 	lw	v0,36(s8)
  4a53b8:	00000000 	nop
  4a53bc:	ac620000 	sw	v0,0(v1)
  4a53c0:	8fc2000c 	lw	v0,12(s8)
  4a53c4:	00000000 	nop
  4a53c8:	244301ac 	addiu	v1,v0,428
  4a53cc:	8fc20028 	lw	v0,40(s8)
  4a53d0:	00000000 	nop
  4a53d4:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 100);
  4a53d8:	8fc2000c 	lw	v0,12(s8)
  4a53dc:	00000000 	nop
  4a53e0:	244201b0 	addiu	v0,v0,432
  4a53e4:	8c420000 	lw	v0,0(v0)
  4a53e8:	00000000 	nop
  4a53ec:	afc20018 	sw	v0,24(s8)
  4a53f0:	8fc2000c 	lw	v0,12(s8)
  4a53f4:	00000000 	nop
  4a53f8:	244201b4 	addiu	v0,v0,436
  4a53fc:	8c420000 	lw	v0,0(v0)
  4a5400:	00000000 	nop
  4a5404:	afc2001c 	sw	v0,28(s8)
  4a5408:	8fc2000c 	lw	v0,12(s8)
  4a540c:	00000000 	nop
  4a5410:	244201b8 	addiu	v0,v0,440
  4a5414:	8c420000 	lw	v0,0(v0)
  4a5418:	00000000 	nop
  4a541c:	afc20020 	sw	v0,32(s8)
  4a5420:	8fc2000c 	lw	v0,12(s8)
  4a5424:	00000000 	nop
  4a5428:	244201bc 	addiu	v0,v0,444
  4a542c:	8c420000 	lw	v0,0(v0)
  4a5430:	00000000 	nop
  4a5434:	afc20024 	sw	v0,36(s8)
      S2(r0,r1,r2,r3,r4);
  4a5438:	8fc20018 	lw	v0,24(s8)
  4a543c:	00000000 	nop
  4a5440:	afc20028 	sw	v0,40(s8)
  4a5444:	8fc30018 	lw	v1,24(s8)
  4a5448:	8fc20020 	lw	v0,32(s8)
  4a544c:	00000000 	nop
  4a5450:	00621024 	and	v0,v1,v0
  4a5454:	afc20018 	sw	v0,24(s8)
  4a5458:	8fc30018 	lw	v1,24(s8)
  4a545c:	8fc20024 	lw	v0,36(s8)
  4a5460:	00000000 	nop
  4a5464:	00621026 	xor	v0,v1,v0
  4a5468:	afc20018 	sw	v0,24(s8)
  4a546c:	8fc30020 	lw	v1,32(s8)
  4a5470:	8fc2001c 	lw	v0,28(s8)
  4a5474:	00000000 	nop
  4a5478:	00621026 	xor	v0,v1,v0
  4a547c:	afc20020 	sw	v0,32(s8)
  4a5480:	8fc30020 	lw	v1,32(s8)
  4a5484:	8fc20018 	lw	v0,24(s8)
  4a5488:	00000000 	nop
  4a548c:	00621026 	xor	v0,v1,v0
  4a5490:	afc20020 	sw	v0,32(s8)
  4a5494:	8fc30024 	lw	v1,36(s8)
  4a5498:	8fc20028 	lw	v0,40(s8)
  4a549c:	00000000 	nop
  4a54a0:	00621025 	or	v0,v1,v0
  4a54a4:	afc20024 	sw	v0,36(s8)
  4a54a8:	8fc30024 	lw	v1,36(s8)
  4a54ac:	8fc2001c 	lw	v0,28(s8)
  4a54b0:	00000000 	nop
  4a54b4:	00621026 	xor	v0,v1,v0
  4a54b8:	afc20024 	sw	v0,36(s8)
  4a54bc:	8fc30028 	lw	v1,40(s8)
  4a54c0:	8fc20020 	lw	v0,32(s8)
  4a54c4:	00000000 	nop
  4a54c8:	00621026 	xor	v0,v1,v0
  4a54cc:	afc20028 	sw	v0,40(s8)
  4a54d0:	8fc20024 	lw	v0,36(s8)
  4a54d4:	00000000 	nop
  4a54d8:	afc2001c 	sw	v0,28(s8)
  4a54dc:	8fc30024 	lw	v1,36(s8)
  4a54e0:	8fc20028 	lw	v0,40(s8)
  4a54e4:	00000000 	nop
  4a54e8:	00621025 	or	v0,v1,v0
  4a54ec:	afc20024 	sw	v0,36(s8)
  4a54f0:	8fc30024 	lw	v1,36(s8)
  4a54f4:	8fc20018 	lw	v0,24(s8)
  4a54f8:	00000000 	nop
  4a54fc:	00621026 	xor	v0,v1,v0
  4a5500:	afc20024 	sw	v0,36(s8)
  4a5504:	8fc30018 	lw	v1,24(s8)
  4a5508:	8fc2001c 	lw	v0,28(s8)
  4a550c:	00000000 	nop
  4a5510:	00621024 	and	v0,v1,v0
  4a5514:	afc20018 	sw	v0,24(s8)
  4a5518:	8fc30028 	lw	v1,40(s8)
  4a551c:	8fc20018 	lw	v0,24(s8)
  4a5520:	00000000 	nop
  4a5524:	00621026 	xor	v0,v1,v0
  4a5528:	afc20028 	sw	v0,40(s8)
  4a552c:	8fc3001c 	lw	v1,28(s8)
  4a5530:	8fc20024 	lw	v0,36(s8)
  4a5534:	00000000 	nop
  4a5538:	00621026 	xor	v0,v1,v0
  4a553c:	afc2001c 	sw	v0,28(s8)
  4a5540:	8fc3001c 	lw	v1,28(s8)
  4a5544:	8fc20028 	lw	v0,40(s8)
  4a5548:	00000000 	nop
  4a554c:	00621026 	xor	v0,v1,v0
  4a5550:	afc2001c 	sw	v0,28(s8)
  4a5554:	8fc20028 	lw	v0,40(s8)
  4a5558:	00000000 	nop
  4a555c:	00021027 	nor	v0,zero,v0
  4a5560:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r3, r1, r4, 100) 
  4a5564:	8fc2000c 	lw	v0,12(s8)
  4a5568:	00000000 	nop
  4a556c:	244301b0 	addiu	v1,v0,432
  4a5570:	8fc20020 	lw	v0,32(s8)
  4a5574:	00000000 	nop
  4a5578:	ac620000 	sw	v0,0(v1)
  4a557c:	8fc2000c 	lw	v0,12(s8)
  4a5580:	00000000 	nop
  4a5584:	244301b4 	addiu	v1,v0,436
  4a5588:	8fc20024 	lw	v0,36(s8)
  4a558c:	00000000 	nop
  4a5590:	ac620000 	sw	v0,0(v1)
  4a5594:	8fc2000c 	lw	v0,12(s8)
  4a5598:	00000000 	nop
  4a559c:	244301b8 	addiu	v1,v0,440
  4a55a0:	8fc2001c 	lw	v0,28(s8)
  4a55a4:	00000000 	nop
  4a55a8:	ac620000 	sw	v0,0(v1)
  4a55ac:	8fc2000c 	lw	v0,12(s8)
  4a55b0:	00000000 	nop
  4a55b4:	244301bc 	addiu	v1,v0,444
  4a55b8:	8fc20028 	lw	v0,40(s8)
  4a55bc:	00000000 	nop
  4a55c0:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 104);
  4a55c4:	8fc2000c 	lw	v0,12(s8)
  4a55c8:	00000000 	nop
  4a55cc:	244201c0 	addiu	v0,v0,448
  4a55d0:	8c420000 	lw	v0,0(v0)
  4a55d4:	00000000 	nop
  4a55d8:	afc20018 	sw	v0,24(s8)
  4a55dc:	8fc2000c 	lw	v0,12(s8)
  4a55e0:	00000000 	nop
  4a55e4:	244201c4 	addiu	v0,v0,452
  4a55e8:	8c420000 	lw	v0,0(v0)
  4a55ec:	00000000 	nop
  4a55f0:	afc2001c 	sw	v0,28(s8)
  4a55f4:	8fc2000c 	lw	v0,12(s8)
  4a55f8:	00000000 	nop
  4a55fc:	244201c8 	addiu	v0,v0,456
  4a5600:	8c420000 	lw	v0,0(v0)
  4a5604:	00000000 	nop
  4a5608:	afc20020 	sw	v0,32(s8)
  4a560c:	8fc2000c 	lw	v0,12(s8)
  4a5610:	00000000 	nop
  4a5614:	244201cc 	addiu	v0,v0,460
  4a5618:	8c420000 	lw	v0,0(v0)
  4a561c:	00000000 	nop
  4a5620:	afc20024 	sw	v0,36(s8)
      S1(r0,r1,r2,r3,r4);
  4a5624:	8fc2001c 	lw	v0,28(s8)
  4a5628:	00000000 	nop
  4a562c:	00021027 	nor	v0,zero,v0
  4a5630:	afc2001c 	sw	v0,28(s8)
  4a5634:	8fc20018 	lw	v0,24(s8)
  4a5638:	00000000 	nop
  4a563c:	afc20028 	sw	v0,40(s8)
  4a5640:	8fc30018 	lw	v1,24(s8)
  4a5644:	8fc2001c 	lw	v0,28(s8)
  4a5648:	00000000 	nop
  4a564c:	00621026 	xor	v0,v1,v0
  4a5650:	afc20018 	sw	v0,24(s8)
  4a5654:	8fc30028 	lw	v1,40(s8)
  4a5658:	8fc2001c 	lw	v0,28(s8)
  4a565c:	00000000 	nop
  4a5660:	00621025 	or	v0,v1,v0
  4a5664:	afc20028 	sw	v0,40(s8)
  4a5668:	8fc30028 	lw	v1,40(s8)
  4a566c:	8fc20024 	lw	v0,36(s8)
  4a5670:	00000000 	nop
  4a5674:	00621026 	xor	v0,v1,v0
  4a5678:	afc20028 	sw	v0,40(s8)
  4a567c:	8fc30024 	lw	v1,36(s8)
  4a5680:	8fc20018 	lw	v0,24(s8)
  4a5684:	00000000 	nop
  4a5688:	00621024 	and	v0,v1,v0
  4a568c:	afc20024 	sw	v0,36(s8)
  4a5690:	8fc30020 	lw	v1,32(s8)
  4a5694:	8fc20028 	lw	v0,40(s8)
  4a5698:	00000000 	nop
  4a569c:	00621026 	xor	v0,v1,v0
  4a56a0:	afc20020 	sw	v0,32(s8)
  4a56a4:	8fc30024 	lw	v1,36(s8)
  4a56a8:	8fc2001c 	lw	v0,28(s8)
  4a56ac:	00000000 	nop
  4a56b0:	00621026 	xor	v0,v1,v0
  4a56b4:	afc20024 	sw	v0,36(s8)
  4a56b8:	8fc30024 	lw	v1,36(s8)
  4a56bc:	8fc20020 	lw	v0,32(s8)
  4a56c0:	00000000 	nop
  4a56c4:	00621025 	or	v0,v1,v0
  4a56c8:	afc20024 	sw	v0,36(s8)
  4a56cc:	8fc30018 	lw	v1,24(s8)
  4a56d0:	8fc20028 	lw	v0,40(s8)
  4a56d4:	00000000 	nop
  4a56d8:	00621026 	xor	v0,v1,v0
  4a56dc:	afc20018 	sw	v0,24(s8)
  4a56e0:	8fc30024 	lw	v1,36(s8)
  4a56e4:	8fc20018 	lw	v0,24(s8)
  4a56e8:	00000000 	nop
  4a56ec:	00621026 	xor	v0,v1,v0
  4a56f0:	afc20024 	sw	v0,36(s8)
  4a56f4:	8fc3001c 	lw	v1,28(s8)
  4a56f8:	8fc20020 	lw	v0,32(s8)
  4a56fc:	00000000 	nop
  4a5700:	00621024 	and	v0,v1,v0
  4a5704:	afc2001c 	sw	v0,28(s8)
  4a5708:	8fc30018 	lw	v1,24(s8)
  4a570c:	8fc2001c 	lw	v0,28(s8)
  4a5710:	00000000 	nop
  4a5714:	00621025 	or	v0,v1,v0
  4a5718:	afc20018 	sw	v0,24(s8)
  4a571c:	8fc3001c 	lw	v1,28(s8)
  4a5720:	8fc20028 	lw	v0,40(s8)
  4a5724:	00000000 	nop
  4a5728:	00621026 	xor	v0,v1,v0
  4a572c:	afc2001c 	sw	v0,28(s8)
  4a5730:	8fc30018 	lw	v1,24(s8)
  4a5734:	8fc20020 	lw	v0,32(s8)
  4a5738:	00000000 	nop
  4a573c:	00621026 	xor	v0,v1,v0
  4a5740:	afc20018 	sw	v0,24(s8)
  4a5744:	8fc30028 	lw	v1,40(s8)
  4a5748:	8fc20024 	lw	v0,36(s8)
  4a574c:	00000000 	nop
  4a5750:	00621025 	or	v0,v1,v0
  4a5754:	afc20028 	sw	v0,40(s8)
  4a5758:	8fc30018 	lw	v1,24(s8)
  4a575c:	8fc20028 	lw	v0,40(s8)
  4a5760:	00000000 	nop
  4a5764:	00621026 	xor	v0,v1,v0
  4a5768:	afc20018 	sw	v0,24(s8)
  4a576c:	8fc20028 	lw	v0,40(s8)
  4a5770:	00000000 	nop
  4a5774:	00021027 	nor	v0,zero,v0
  4a5778:	afc20028 	sw	v0,40(s8)
  4a577c:	8fc3001c 	lw	v1,28(s8)
  4a5780:	8fc20024 	lw	v0,36(s8)
  4a5784:	00000000 	nop
  4a5788:	00621026 	xor	v0,v1,v0
  4a578c:	afc2001c 	sw	v0,28(s8)
  4a5790:	8fc30028 	lw	v1,40(s8)
  4a5794:	8fc20020 	lw	v0,32(s8)
  4a5798:	00000000 	nop
  4a579c:	00621024 	and	v0,v1,v0
  4a57a0:	afc20028 	sw	v0,40(s8)
  4a57a4:	8fc2001c 	lw	v0,28(s8)
  4a57a8:	00000000 	nop
  4a57ac:	00021027 	nor	v0,zero,v0
  4a57b0:	afc2001c 	sw	v0,28(s8)
  4a57b4:	8fc30028 	lw	v1,40(s8)
  4a57b8:	8fc20018 	lw	v0,24(s8)
  4a57bc:	00000000 	nop
  4a57c0:	00621026 	xor	v0,v1,v0
  4a57c4:	afc20028 	sw	v0,40(s8)
  4a57c8:	8fc3001c 	lw	v1,28(s8)
  4a57cc:	8fc20028 	lw	v0,40(s8)
  4a57d0:	00000000 	nop
  4a57d4:	00621026 	xor	v0,v1,v0
  4a57d8:	afc2001c 	sw	v0,28(s8)
      SETKEY(r3, r1, r2, r0, 104) 
  4a57dc:	8fc2000c 	lw	v0,12(s8)
  4a57e0:	00000000 	nop
  4a57e4:	244301c0 	addiu	v1,v0,448
  4a57e8:	8fc20024 	lw	v0,36(s8)
  4a57ec:	00000000 	nop
  4a57f0:	ac620000 	sw	v0,0(v1)
  4a57f4:	8fc2000c 	lw	v0,12(s8)
  4a57f8:	00000000 	nop
  4a57fc:	244301c4 	addiu	v1,v0,452
  4a5800:	8fc2001c 	lw	v0,28(s8)
  4a5804:	00000000 	nop
  4a5808:	ac620000 	sw	v0,0(v1)
  4a580c:	8fc2000c 	lw	v0,12(s8)
  4a5810:	00000000 	nop
  4a5814:	244301c8 	addiu	v1,v0,456
  4a5818:	8fc20020 	lw	v0,32(s8)
  4a581c:	00000000 	nop
  4a5820:	ac620000 	sw	v0,0(v1)
  4a5824:	8fc2000c 	lw	v0,12(s8)
  4a5828:	00000000 	nop
  4a582c:	244301cc 	addiu	v1,v0,460
  4a5830:	8fc20018 	lw	v0,24(s8)
  4a5834:	00000000 	nop
  4a5838:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 108);
  4a583c:	8fc2000c 	lw	v0,12(s8)
  4a5840:	00000000 	nop
  4a5844:	244201d0 	addiu	v0,v0,464
  4a5848:	8c420000 	lw	v0,0(v0)
  4a584c:	00000000 	nop
  4a5850:	afc20018 	sw	v0,24(s8)
  4a5854:	8fc2000c 	lw	v0,12(s8)
  4a5858:	00000000 	nop
  4a585c:	244201d4 	addiu	v0,v0,468
  4a5860:	8c420000 	lw	v0,0(v0)
  4a5864:	00000000 	nop
  4a5868:	afc2001c 	sw	v0,28(s8)
  4a586c:	8fc2000c 	lw	v0,12(s8)
  4a5870:	00000000 	nop
  4a5874:	244201d8 	addiu	v0,v0,472
  4a5878:	8c420000 	lw	v0,0(v0)
  4a587c:	00000000 	nop
  4a5880:	afc20020 	sw	v0,32(s8)
  4a5884:	8fc2000c 	lw	v0,12(s8)
  4a5888:	00000000 	nop
  4a588c:	244201dc 	addiu	v0,v0,476
  4a5890:	8c420000 	lw	v0,0(v0)
  4a5894:	00000000 	nop
  4a5898:	afc20024 	sw	v0,36(s8)
      S0(r0,r1,r2,r3,r4);
  4a589c:	8fc30024 	lw	v1,36(s8)
  4a58a0:	8fc20018 	lw	v0,24(s8)
  4a58a4:	00000000 	nop
  4a58a8:	00621026 	xor	v0,v1,v0
  4a58ac:	afc20024 	sw	v0,36(s8)
  4a58b0:	8fc2001c 	lw	v0,28(s8)
  4a58b4:	00000000 	nop
  4a58b8:	afc20028 	sw	v0,40(s8)
  4a58bc:	8fc3001c 	lw	v1,28(s8)
  4a58c0:	8fc20024 	lw	v0,36(s8)
  4a58c4:	00000000 	nop
  4a58c8:	00621024 	and	v0,v1,v0
  4a58cc:	afc2001c 	sw	v0,28(s8)
  4a58d0:	8fc30028 	lw	v1,40(s8)
  4a58d4:	8fc20020 	lw	v0,32(s8)
  4a58d8:	00000000 	nop
  4a58dc:	00621026 	xor	v0,v1,v0
  4a58e0:	afc20028 	sw	v0,40(s8)
  4a58e4:	8fc3001c 	lw	v1,28(s8)
  4a58e8:	8fc20018 	lw	v0,24(s8)
  4a58ec:	00000000 	nop
  4a58f0:	00621026 	xor	v0,v1,v0
  4a58f4:	afc2001c 	sw	v0,28(s8)
  4a58f8:	8fc30018 	lw	v1,24(s8)
  4a58fc:	8fc20024 	lw	v0,36(s8)
  4a5900:	00000000 	nop
  4a5904:	00621025 	or	v0,v1,v0
  4a5908:	afc20018 	sw	v0,24(s8)
  4a590c:	8fc30018 	lw	v1,24(s8)
  4a5910:	8fc20028 	lw	v0,40(s8)
  4a5914:	00000000 	nop
  4a5918:	00621026 	xor	v0,v1,v0
  4a591c:	afc20018 	sw	v0,24(s8)
  4a5920:	8fc30028 	lw	v1,40(s8)
  4a5924:	8fc20024 	lw	v0,36(s8)
  4a5928:	00000000 	nop
  4a592c:	00621026 	xor	v0,v1,v0
  4a5930:	afc20028 	sw	v0,40(s8)
  4a5934:	8fc30024 	lw	v1,36(s8)
  4a5938:	8fc20020 	lw	v0,32(s8)
  4a593c:	00000000 	nop
  4a5940:	00621026 	xor	v0,v1,v0
  4a5944:	afc20024 	sw	v0,36(s8)
  4a5948:	8fc30020 	lw	v1,32(s8)
  4a594c:	8fc2001c 	lw	v0,28(s8)
  4a5950:	00000000 	nop
  4a5954:	00621025 	or	v0,v1,v0
  4a5958:	afc20020 	sw	v0,32(s8)
  4a595c:	8fc30020 	lw	v1,32(s8)
  4a5960:	8fc20028 	lw	v0,40(s8)
  4a5964:	00000000 	nop
  4a5968:	00621026 	xor	v0,v1,v0
  4a596c:	afc20020 	sw	v0,32(s8)
  4a5970:	8fc20028 	lw	v0,40(s8)
  4a5974:	00000000 	nop
  4a5978:	00021027 	nor	v0,zero,v0
  4a597c:	afc20028 	sw	v0,40(s8)
  4a5980:	8fc30028 	lw	v1,40(s8)
  4a5984:	8fc2001c 	lw	v0,28(s8)
  4a5988:	00000000 	nop
  4a598c:	00621025 	or	v0,v1,v0
  4a5990:	afc20028 	sw	v0,40(s8)
  4a5994:	8fc3001c 	lw	v1,28(s8)
  4a5998:	8fc20024 	lw	v0,36(s8)
  4a599c:	00000000 	nop
  4a59a0:	00621026 	xor	v0,v1,v0
  4a59a4:	afc2001c 	sw	v0,28(s8)
  4a59a8:	8fc3001c 	lw	v1,28(s8)
  4a59ac:	8fc20028 	lw	v0,40(s8)
  4a59b0:	00000000 	nop
  4a59b4:	00621026 	xor	v0,v1,v0
  4a59b8:	afc2001c 	sw	v0,28(s8)
  4a59bc:	8fc30024 	lw	v1,36(s8)
  4a59c0:	8fc20018 	lw	v0,24(s8)
  4a59c4:	00000000 	nop
  4a59c8:	00621025 	or	v0,v1,v0
  4a59cc:	afc20024 	sw	v0,36(s8)
  4a59d0:	8fc3001c 	lw	v1,28(s8)
  4a59d4:	8fc20024 	lw	v0,36(s8)
  4a59d8:	00000000 	nop
  4a59dc:	00621026 	xor	v0,v1,v0
  4a59e0:	afc2001c 	sw	v0,28(s8)
  4a59e4:	8fc30028 	lw	v1,40(s8)
  4a59e8:	8fc20024 	lw	v0,36(s8)
  4a59ec:	00000000 	nop
  4a59f0:	00621026 	xor	v0,v1,v0
  4a59f4:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r2, r0, 108) 
  4a59f8:	8fc2000c 	lw	v0,12(s8)
  4a59fc:	00000000 	nop
  4a5a00:	244301d0 	addiu	v1,v0,464
  4a5a04:	8fc2001c 	lw	v0,28(s8)
  4a5a08:	00000000 	nop
  4a5a0c:	ac620000 	sw	v0,0(v1)
  4a5a10:	8fc2000c 	lw	v0,12(s8)
  4a5a14:	00000000 	nop
  4a5a18:	244301d4 	addiu	v1,v0,468
  4a5a1c:	8fc20028 	lw	v0,40(s8)
  4a5a20:	00000000 	nop
  4a5a24:	ac620000 	sw	v0,0(v1)
  4a5a28:	8fc2000c 	lw	v0,12(s8)
  4a5a2c:	00000000 	nop
  4a5a30:	244301d8 	addiu	v1,v0,472
  4a5a34:	8fc20020 	lw	v0,32(s8)
  4a5a38:	00000000 	nop
  4a5a3c:	ac620000 	sw	v0,0(v1)
  4a5a40:	8fc2000c 	lw	v0,12(s8)
  4a5a44:	00000000 	nop
  4a5a48:	244301dc 	addiu	v1,v0,476
  4a5a4c:	8fc20018 	lw	v0,24(s8)
  4a5a50:	00000000 	nop
  4a5a54:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 112);
  4a5a58:	8fc2000c 	lw	v0,12(s8)
  4a5a5c:	00000000 	nop
  4a5a60:	244201e0 	addiu	v0,v0,480
  4a5a64:	8c420000 	lw	v0,0(v0)
  4a5a68:	00000000 	nop
  4a5a6c:	afc20018 	sw	v0,24(s8)
  4a5a70:	8fc2000c 	lw	v0,12(s8)
  4a5a74:	00000000 	nop
  4a5a78:	244201e4 	addiu	v0,v0,484
  4a5a7c:	8c420000 	lw	v0,0(v0)
  4a5a80:	00000000 	nop
  4a5a84:	afc2001c 	sw	v0,28(s8)
  4a5a88:	8fc2000c 	lw	v0,12(s8)
  4a5a8c:	00000000 	nop
  4a5a90:	244201e8 	addiu	v0,v0,488
  4a5a94:	8c420000 	lw	v0,0(v0)
  4a5a98:	00000000 	nop
  4a5a9c:	afc20020 	sw	v0,32(s8)
  4a5aa0:	8fc2000c 	lw	v0,12(s8)
  4a5aa4:	00000000 	nop
  4a5aa8:	244201ec 	addiu	v0,v0,492
  4a5aac:	8c420000 	lw	v0,0(v0)
  4a5ab0:	00000000 	nop
  4a5ab4:	afc20024 	sw	v0,36(s8)
      S7(r0,r1,r2,r3,r4);
  4a5ab8:	8fc20020 	lw	v0,32(s8)
  4a5abc:	00000000 	nop
  4a5ac0:	afc20028 	sw	v0,40(s8)
  4a5ac4:	8fc30020 	lw	v1,32(s8)
  4a5ac8:	8fc2001c 	lw	v0,28(s8)
  4a5acc:	00000000 	nop
  4a5ad0:	00621024 	and	v0,v1,v0
  4a5ad4:	afc20020 	sw	v0,32(s8)
  4a5ad8:	8fc30020 	lw	v1,32(s8)
  4a5adc:	8fc20024 	lw	v0,36(s8)
  4a5ae0:	00000000 	nop
  4a5ae4:	00621026 	xor	v0,v1,v0
  4a5ae8:	afc20020 	sw	v0,32(s8)
  4a5aec:	8fc30024 	lw	v1,36(s8)
  4a5af0:	8fc2001c 	lw	v0,28(s8)
  4a5af4:	00000000 	nop
  4a5af8:	00621024 	and	v0,v1,v0
  4a5afc:	afc20024 	sw	v0,36(s8)
  4a5b00:	8fc30028 	lw	v1,40(s8)
  4a5b04:	8fc20020 	lw	v0,32(s8)
  4a5b08:	00000000 	nop
  4a5b0c:	00621026 	xor	v0,v1,v0
  4a5b10:	afc20028 	sw	v0,40(s8)
  4a5b14:	8fc30020 	lw	v1,32(s8)
  4a5b18:	8fc2001c 	lw	v0,28(s8)
  4a5b1c:	00000000 	nop
  4a5b20:	00621026 	xor	v0,v1,v0
  4a5b24:	afc20020 	sw	v0,32(s8)
  4a5b28:	8fc3001c 	lw	v1,28(s8)
  4a5b2c:	8fc20018 	lw	v0,24(s8)
  4a5b30:	00000000 	nop
  4a5b34:	00621026 	xor	v0,v1,v0
  4a5b38:	afc2001c 	sw	v0,28(s8)
  4a5b3c:	8fc30018 	lw	v1,24(s8)
  4a5b40:	8fc20028 	lw	v0,40(s8)
  4a5b44:	00000000 	nop
  4a5b48:	00621025 	or	v0,v1,v0
  4a5b4c:	afc20018 	sw	v0,24(s8)
  4a5b50:	8fc30018 	lw	v1,24(s8)
  4a5b54:	8fc20020 	lw	v0,32(s8)
  4a5b58:	00000000 	nop
  4a5b5c:	00621026 	xor	v0,v1,v0
  4a5b60:	afc20018 	sw	v0,24(s8)
  4a5b64:	8fc30024 	lw	v1,36(s8)
  4a5b68:	8fc2001c 	lw	v0,28(s8)
  4a5b6c:	00000000 	nop
  4a5b70:	00621026 	xor	v0,v1,v0
  4a5b74:	afc20024 	sw	v0,36(s8)
  4a5b78:	8fc30020 	lw	v1,32(s8)
  4a5b7c:	8fc20024 	lw	v0,36(s8)
  4a5b80:	00000000 	nop
  4a5b84:	00621026 	xor	v0,v1,v0
  4a5b88:	afc20020 	sw	v0,32(s8)
  4a5b8c:	8fc30024 	lw	v1,36(s8)
  4a5b90:	8fc20018 	lw	v0,24(s8)
  4a5b94:	00000000 	nop
  4a5b98:	00621024 	and	v0,v1,v0
  4a5b9c:	afc20024 	sw	v0,36(s8)
  4a5ba0:	8fc30024 	lw	v1,36(s8)
  4a5ba4:	8fc20028 	lw	v0,40(s8)
  4a5ba8:	00000000 	nop
  4a5bac:	00621026 	xor	v0,v1,v0
  4a5bb0:	afc20024 	sw	v0,36(s8)
  4a5bb4:	8fc30028 	lw	v1,40(s8)
  4a5bb8:	8fc20020 	lw	v0,32(s8)
  4a5bbc:	00000000 	nop
  4a5bc0:	00621026 	xor	v0,v1,v0
  4a5bc4:	afc20028 	sw	v0,40(s8)
  4a5bc8:	8fc30020 	lw	v1,32(s8)
  4a5bcc:	8fc20018 	lw	v0,24(s8)
  4a5bd0:	00000000 	nop
  4a5bd4:	00621024 	and	v0,v1,v0
  4a5bd8:	afc20020 	sw	v0,32(s8)
  4a5bdc:	8fc20028 	lw	v0,40(s8)
  4a5be0:	00000000 	nop
  4a5be4:	00021027 	nor	v0,zero,v0
  4a5be8:	afc20028 	sw	v0,40(s8)
  4a5bec:	8fc30020 	lw	v1,32(s8)
  4a5bf0:	8fc20028 	lw	v0,40(s8)
  4a5bf4:	00000000 	nop
  4a5bf8:	00621026 	xor	v0,v1,v0
  4a5bfc:	afc20020 	sw	v0,32(s8)
  4a5c00:	8fc30028 	lw	v1,40(s8)
  4a5c04:	8fc20018 	lw	v0,24(s8)
  4a5c08:	00000000 	nop
  4a5c0c:	00621024 	and	v0,v1,v0
  4a5c10:	afc20028 	sw	v0,40(s8)
  4a5c14:	8fc3001c 	lw	v1,28(s8)
  4a5c18:	8fc20024 	lw	v0,36(s8)
  4a5c1c:	00000000 	nop
  4a5c20:	00621026 	xor	v0,v1,v0
  4a5c24:	afc2001c 	sw	v0,28(s8)
  4a5c28:	8fc30028 	lw	v1,40(s8)
  4a5c2c:	8fc2001c 	lw	v0,28(s8)
  4a5c30:	00000000 	nop
  4a5c34:	00621026 	xor	v0,v1,v0
  4a5c38:	afc20028 	sw	v0,40(s8)
      SETKEY(r2, r4, r3, r0, 112) 
  4a5c3c:	8fc2000c 	lw	v0,12(s8)
  4a5c40:	00000000 	nop
  4a5c44:	244301e0 	addiu	v1,v0,480
  4a5c48:	8fc20020 	lw	v0,32(s8)
  4a5c4c:	00000000 	nop
  4a5c50:	ac620000 	sw	v0,0(v1)
  4a5c54:	8fc2000c 	lw	v0,12(s8)
  4a5c58:	00000000 	nop
  4a5c5c:	244301e4 	addiu	v1,v0,484
  4a5c60:	8fc20028 	lw	v0,40(s8)
  4a5c64:	00000000 	nop
  4a5c68:	ac620000 	sw	v0,0(v1)
  4a5c6c:	8fc2000c 	lw	v0,12(s8)
  4a5c70:	00000000 	nop
  4a5c74:	244301e8 	addiu	v1,v0,488
  4a5c78:	8fc20024 	lw	v0,36(s8)
  4a5c7c:	00000000 	nop
  4a5c80:	ac620000 	sw	v0,0(v1)
  4a5c84:	8fc2000c 	lw	v0,12(s8)
  4a5c88:	00000000 	nop
  4a5c8c:	244301ec 	addiu	v1,v0,492
  4a5c90:	8fc20018 	lw	v0,24(s8)
  4a5c94:	00000000 	nop
  4a5c98:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 116);
  4a5c9c:	8fc2000c 	lw	v0,12(s8)
  4a5ca0:	00000000 	nop
  4a5ca4:	244201f0 	addiu	v0,v0,496
  4a5ca8:	8c420000 	lw	v0,0(v0)
  4a5cac:	00000000 	nop
  4a5cb0:	afc20018 	sw	v0,24(s8)
  4a5cb4:	8fc2000c 	lw	v0,12(s8)
  4a5cb8:	00000000 	nop
  4a5cbc:	244201f4 	addiu	v0,v0,500
  4a5cc0:	8c420000 	lw	v0,0(v0)
  4a5cc4:	00000000 	nop
  4a5cc8:	afc2001c 	sw	v0,28(s8)
  4a5ccc:	8fc2000c 	lw	v0,12(s8)
  4a5cd0:	00000000 	nop
  4a5cd4:	244201f8 	addiu	v0,v0,504
  4a5cd8:	8c420000 	lw	v0,0(v0)
  4a5cdc:	00000000 	nop
  4a5ce0:	afc20020 	sw	v0,32(s8)
  4a5ce4:	8fc2000c 	lw	v0,12(s8)
  4a5ce8:	00000000 	nop
  4a5cec:	244201fc 	addiu	v0,v0,508
  4a5cf0:	8c420000 	lw	v0,0(v0)
  4a5cf4:	00000000 	nop
  4a5cf8:	afc20024 	sw	v0,36(s8)
      S6(r0,r1,r2,r3,r4) 
  4a5cfc:	8fc20020 	lw	v0,32(s8)
  4a5d00:	00000000 	nop
  4a5d04:	00021027 	nor	v0,zero,v0
  4a5d08:	afc20020 	sw	v0,32(s8)
  4a5d0c:	8fc20024 	lw	v0,36(s8)
  4a5d10:	00000000 	nop
  4a5d14:	afc20028 	sw	v0,40(s8)
  4a5d18:	8fc30024 	lw	v1,36(s8)
  4a5d1c:	8fc20018 	lw	v0,24(s8)
  4a5d20:	00000000 	nop
  4a5d24:	00621024 	and	v0,v1,v0
  4a5d28:	afc20024 	sw	v0,36(s8)
  4a5d2c:	8fc30018 	lw	v1,24(s8)
  4a5d30:	8fc20028 	lw	v0,40(s8)
  4a5d34:	00000000 	nop
  4a5d38:	00621026 	xor	v0,v1,v0
  4a5d3c:	afc20018 	sw	v0,24(s8)
  4a5d40:	8fc30024 	lw	v1,36(s8)
  4a5d44:	8fc20020 	lw	v0,32(s8)
  4a5d48:	00000000 	nop
  4a5d4c:	00621026 	xor	v0,v1,v0
  4a5d50:	afc20024 	sw	v0,36(s8)
  4a5d54:	8fc30020 	lw	v1,32(s8)
  4a5d58:	8fc20028 	lw	v0,40(s8)
  4a5d5c:	00000000 	nop
  4a5d60:	00621025 	or	v0,v1,v0
  4a5d64:	afc20020 	sw	v0,32(s8)
  4a5d68:	8fc3001c 	lw	v1,28(s8)
  4a5d6c:	8fc20024 	lw	v0,36(s8)
  4a5d70:	00000000 	nop
  4a5d74:	00621026 	xor	v0,v1,v0
  4a5d78:	afc2001c 	sw	v0,28(s8)
  4a5d7c:	8fc30020 	lw	v1,32(s8)
  4a5d80:	8fc20018 	lw	v0,24(s8)
  4a5d84:	00000000 	nop
  4a5d88:	00621026 	xor	v0,v1,v0
  4a5d8c:	afc20020 	sw	v0,32(s8)
  4a5d90:	8fc30018 	lw	v1,24(s8)
  4a5d94:	8fc2001c 	lw	v0,28(s8)
  4a5d98:	00000000 	nop
  4a5d9c:	00621025 	or	v0,v1,v0
  4a5da0:	afc20018 	sw	v0,24(s8)
  4a5da4:	8fc30020 	lw	v1,32(s8)
  4a5da8:	8fc2001c 	lw	v0,28(s8)
  4a5dac:	00000000 	nop
  4a5db0:	00621026 	xor	v0,v1,v0
  4a5db4:	afc20020 	sw	v0,32(s8)
  4a5db8:	8fc30028 	lw	v1,40(s8)
  4a5dbc:	8fc20018 	lw	v0,24(s8)
  4a5dc0:	00000000 	nop
  4a5dc4:	00621026 	xor	v0,v1,v0
  4a5dc8:	afc20028 	sw	v0,40(s8)
  4a5dcc:	8fc30018 	lw	v1,24(s8)
  4a5dd0:	8fc20024 	lw	v0,36(s8)
  4a5dd4:	00000000 	nop
  4a5dd8:	00621025 	or	v0,v1,v0
  4a5ddc:	afc20018 	sw	v0,24(s8)
  4a5de0:	8fc30018 	lw	v1,24(s8)
  4a5de4:	8fc20020 	lw	v0,32(s8)
  4a5de8:	00000000 	nop
  4a5dec:	00621026 	xor	v0,v1,v0
  4a5df0:	afc20018 	sw	v0,24(s8)
  4a5df4:	8fc30028 	lw	v1,40(s8)
  4a5df8:	8fc20024 	lw	v0,36(s8)
  4a5dfc:	00000000 	nop
  4a5e00:	00621026 	xor	v0,v1,v0
  4a5e04:	afc20028 	sw	v0,40(s8)
  4a5e08:	8fc30028 	lw	v1,40(s8)
  4a5e0c:	8fc20018 	lw	v0,24(s8)
  4a5e10:	00000000 	nop
  4a5e14:	00621026 	xor	v0,v1,v0
  4a5e18:	afc20028 	sw	v0,40(s8)
  4a5e1c:	8fc20024 	lw	v0,36(s8)
  4a5e20:	00000000 	nop
  4a5e24:	00021027 	nor	v0,zero,v0
  4a5e28:	afc20024 	sw	v0,36(s8)
  4a5e2c:	8fc30020 	lw	v1,32(s8)
  4a5e30:	8fc20028 	lw	v0,40(s8)
  4a5e34:	00000000 	nop
  4a5e38:	00621024 	and	v0,v1,v0
  4a5e3c:	afc20020 	sw	v0,32(s8)
  4a5e40:	8fc30020 	lw	v1,32(s8)
  4a5e44:	8fc20024 	lw	v0,36(s8)
  4a5e48:	00000000 	nop
  4a5e4c:	00621026 	xor	v0,v1,v0
  4a5e50:	afc20020 	sw	v0,32(s8)
      SETKEY(r0, r1, r4, r2, 116) 
  4a5e54:	8fc2000c 	lw	v0,12(s8)
  4a5e58:	00000000 	nop
  4a5e5c:	244301f0 	addiu	v1,v0,496
  4a5e60:	8fc20018 	lw	v0,24(s8)
  4a5e64:	00000000 	nop
  4a5e68:	ac620000 	sw	v0,0(v1)
  4a5e6c:	8fc2000c 	lw	v0,12(s8)
  4a5e70:	00000000 	nop
  4a5e74:	244301f4 	addiu	v1,v0,500
  4a5e78:	8fc2001c 	lw	v0,28(s8)
  4a5e7c:	00000000 	nop
  4a5e80:	ac620000 	sw	v0,0(v1)
  4a5e84:	8fc2000c 	lw	v0,12(s8)
  4a5e88:	00000000 	nop
  4a5e8c:	244301f8 	addiu	v1,v0,504
  4a5e90:	8fc20028 	lw	v0,40(s8)
  4a5e94:	00000000 	nop
  4a5e98:	ac620000 	sw	v0,0(v1)
  4a5e9c:	8fc2000c 	lw	v0,12(s8)
  4a5ea0:	00000000 	nop
  4a5ea4:	244301fc 	addiu	v1,v0,508
  4a5ea8:	8fc20020 	lw	v0,32(s8)
  4a5eac:	00000000 	nop
  4a5eb0:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 120);
  4a5eb4:	8fc2000c 	lw	v0,12(s8)
  4a5eb8:	00000000 	nop
  4a5ebc:	24420200 	addiu	v0,v0,512
  4a5ec0:	8c420000 	lw	v0,0(v0)
  4a5ec4:	00000000 	nop
  4a5ec8:	afc20018 	sw	v0,24(s8)
  4a5ecc:	8fc2000c 	lw	v0,12(s8)
  4a5ed0:	00000000 	nop
  4a5ed4:	24420204 	addiu	v0,v0,516
  4a5ed8:	8c420000 	lw	v0,0(v0)
  4a5edc:	00000000 	nop
  4a5ee0:	afc2001c 	sw	v0,28(s8)
  4a5ee4:	8fc2000c 	lw	v0,12(s8)
  4a5ee8:	00000000 	nop
  4a5eec:	24420208 	addiu	v0,v0,520
  4a5ef0:	8c420000 	lw	v0,0(v0)
  4a5ef4:	00000000 	nop
  4a5ef8:	afc20020 	sw	v0,32(s8)
  4a5efc:	8fc2000c 	lw	v0,12(s8)
  4a5f00:	00000000 	nop
  4a5f04:	2442020c 	addiu	v0,v0,524
  4a5f08:	8c420000 	lw	v0,0(v0)
  4a5f0c:	00000000 	nop
  4a5f10:	afc20024 	sw	v0,36(s8)
      S5(r0,r1,r2,r3,r4);
  4a5f14:	8fc30018 	lw	v1,24(s8)
  4a5f18:	8fc2001c 	lw	v0,28(s8)
  4a5f1c:	00000000 	nop
  4a5f20:	00621026 	xor	v0,v1,v0
  4a5f24:	afc20018 	sw	v0,24(s8)
  4a5f28:	8fc3001c 	lw	v1,28(s8)
  4a5f2c:	8fc20024 	lw	v0,36(s8)
  4a5f30:	00000000 	nop
  4a5f34:	00621026 	xor	v0,v1,v0
  4a5f38:	afc2001c 	sw	v0,28(s8)
  4a5f3c:	8fc20024 	lw	v0,36(s8)
  4a5f40:	00000000 	nop
  4a5f44:	00021027 	nor	v0,zero,v0
  4a5f48:	afc20024 	sw	v0,36(s8)
  4a5f4c:	8fc2001c 	lw	v0,28(s8)
  4a5f50:	00000000 	nop
  4a5f54:	afc20028 	sw	v0,40(s8)
  4a5f58:	8fc3001c 	lw	v1,28(s8)
  4a5f5c:	8fc20018 	lw	v0,24(s8)
  4a5f60:	00000000 	nop
  4a5f64:	00621024 	and	v0,v1,v0
  4a5f68:	afc2001c 	sw	v0,28(s8)
  4a5f6c:	8fc30020 	lw	v1,32(s8)
  4a5f70:	8fc20024 	lw	v0,36(s8)
  4a5f74:	00000000 	nop
  4a5f78:	00621026 	xor	v0,v1,v0
  4a5f7c:	afc20020 	sw	v0,32(s8)
  4a5f80:	8fc3001c 	lw	v1,28(s8)
  4a5f84:	8fc20020 	lw	v0,32(s8)
  4a5f88:	00000000 	nop
  4a5f8c:	00621026 	xor	v0,v1,v0
  4a5f90:	afc2001c 	sw	v0,28(s8)
  4a5f94:	8fc30020 	lw	v1,32(s8)
  4a5f98:	8fc20028 	lw	v0,40(s8)
  4a5f9c:	00000000 	nop
  4a5fa0:	00621025 	or	v0,v1,v0
  4a5fa4:	afc20020 	sw	v0,32(s8)
  4a5fa8:	8fc30028 	lw	v1,40(s8)
  4a5fac:	8fc20024 	lw	v0,36(s8)
  4a5fb0:	00000000 	nop
  4a5fb4:	00621026 	xor	v0,v1,v0
  4a5fb8:	afc20028 	sw	v0,40(s8)
  4a5fbc:	8fc30024 	lw	v1,36(s8)
  4a5fc0:	8fc2001c 	lw	v0,28(s8)
  4a5fc4:	00000000 	nop
  4a5fc8:	00621024 	and	v0,v1,v0
  4a5fcc:	afc20024 	sw	v0,36(s8)
  4a5fd0:	8fc30024 	lw	v1,36(s8)
  4a5fd4:	8fc20018 	lw	v0,24(s8)
  4a5fd8:	00000000 	nop
  4a5fdc:	00621026 	xor	v0,v1,v0
  4a5fe0:	afc20024 	sw	v0,36(s8)
  4a5fe4:	8fc30028 	lw	v1,40(s8)
  4a5fe8:	8fc2001c 	lw	v0,28(s8)
  4a5fec:	00000000 	nop
  4a5ff0:	00621026 	xor	v0,v1,v0
  4a5ff4:	afc20028 	sw	v0,40(s8)
  4a5ff8:	8fc30028 	lw	v1,40(s8)
  4a5ffc:	8fc20020 	lw	v0,32(s8)
  4a6000:	00000000 	nop
  4a6004:	00621026 	xor	v0,v1,v0
  4a6008:	afc20028 	sw	v0,40(s8)
  4a600c:	8fc30020 	lw	v1,32(s8)
  4a6010:	8fc20018 	lw	v0,24(s8)
  4a6014:	00000000 	nop
  4a6018:	00621026 	xor	v0,v1,v0
  4a601c:	afc20020 	sw	v0,32(s8)
  4a6020:	8fc30018 	lw	v1,24(s8)
  4a6024:	8fc20024 	lw	v0,36(s8)
  4a6028:	00000000 	nop
  4a602c:	00621024 	and	v0,v1,v0
  4a6030:	afc20018 	sw	v0,24(s8)
  4a6034:	8fc20020 	lw	v0,32(s8)
  4a6038:	00000000 	nop
  4a603c:	00021027 	nor	v0,zero,v0
  4a6040:	afc20020 	sw	v0,32(s8)
  4a6044:	8fc30018 	lw	v1,24(s8)
  4a6048:	8fc20028 	lw	v0,40(s8)
  4a604c:	00000000 	nop
  4a6050:	00621026 	xor	v0,v1,v0
  4a6054:	afc20018 	sw	v0,24(s8)
  4a6058:	8fc30028 	lw	v1,40(s8)
  4a605c:	8fc20024 	lw	v0,36(s8)
  4a6060:	00000000 	nop
  4a6064:	00621025 	or	v0,v1,v0
  4a6068:	afc20028 	sw	v0,40(s8)
  4a606c:	8fc30020 	lw	v1,32(s8)
  4a6070:	8fc20028 	lw	v0,40(s8)
  4a6074:	00000000 	nop
  4a6078:	00621026 	xor	v0,v1,v0
  4a607c:	afc20020 	sw	v0,32(s8)
      SETKEY(r1, r3, r0, r2, 120) 
  4a6080:	8fc2000c 	lw	v0,12(s8)
  4a6084:	00000000 	nop
  4a6088:	24430200 	addiu	v1,v0,512
  4a608c:	8fc2001c 	lw	v0,28(s8)
  4a6090:	00000000 	nop
  4a6094:	ac620000 	sw	v0,0(v1)
  4a6098:	8fc2000c 	lw	v0,12(s8)
  4a609c:	00000000 	nop
  4a60a0:	24430204 	addiu	v1,v0,516
  4a60a4:	8fc20024 	lw	v0,36(s8)
  4a60a8:	00000000 	nop
  4a60ac:	ac620000 	sw	v0,0(v1)
  4a60b0:	8fc2000c 	lw	v0,12(s8)
  4a60b4:	00000000 	nop
  4a60b8:	24430208 	addiu	v1,v0,520
  4a60bc:	8fc20018 	lw	v0,24(s8)
  4a60c0:	00000000 	nop
  4a60c4:	ac620000 	sw	v0,0(v1)
  4a60c8:	8fc2000c 	lw	v0,12(s8)
  4a60cc:	00000000 	nop
  4a60d0:	2443020c 	addiu	v1,v0,524
  4a60d4:	8fc20020 	lw	v0,32(s8)
  4a60d8:	00000000 	nop
  4a60dc:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 124);
  4a60e0:	8fc2000c 	lw	v0,12(s8)
  4a60e4:	00000000 	nop
  4a60e8:	24420210 	addiu	v0,v0,528
  4a60ec:	8c420000 	lw	v0,0(v0)
  4a60f0:	00000000 	nop
  4a60f4:	afc20018 	sw	v0,24(s8)
  4a60f8:	8fc2000c 	lw	v0,12(s8)
  4a60fc:	00000000 	nop
  4a6100:	24420214 	addiu	v0,v0,532
  4a6104:	8c420000 	lw	v0,0(v0)
  4a6108:	00000000 	nop
  4a610c:	afc2001c 	sw	v0,28(s8)
  4a6110:	8fc2000c 	lw	v0,12(s8)
  4a6114:	00000000 	nop
  4a6118:	24420218 	addiu	v0,v0,536
  4a611c:	8c420000 	lw	v0,0(v0)
  4a6120:	00000000 	nop
  4a6124:	afc20020 	sw	v0,32(s8)
  4a6128:	8fc2000c 	lw	v0,12(s8)
  4a612c:	00000000 	nop
  4a6130:	2442021c 	addiu	v0,v0,540
  4a6134:	8c420000 	lw	v0,0(v0)
  4a6138:	00000000 	nop
  4a613c:	afc20024 	sw	v0,36(s8)
      S4(r0,r1,r2,r3,r4) 
  4a6140:	8fc3001c 	lw	v1,28(s8)
  4a6144:	8fc20024 	lw	v0,36(s8)
  4a6148:	00000000 	nop
  4a614c:	00621026 	xor	v0,v1,v0
  4a6150:	afc2001c 	sw	v0,28(s8)
  4a6154:	8fc20024 	lw	v0,36(s8)
  4a6158:	00000000 	nop
  4a615c:	00021027 	nor	v0,zero,v0
  4a6160:	afc20024 	sw	v0,36(s8)
  4a6164:	8fc30020 	lw	v1,32(s8)
  4a6168:	8fc20024 	lw	v0,36(s8)
  4a616c:	00000000 	nop
  4a6170:	00621026 	xor	v0,v1,v0
  4a6174:	afc20020 	sw	v0,32(s8)
  4a6178:	8fc30024 	lw	v1,36(s8)
  4a617c:	8fc20018 	lw	v0,24(s8)
  4a6180:	00000000 	nop
  4a6184:	00621026 	xor	v0,v1,v0
  4a6188:	afc20024 	sw	v0,36(s8)
  4a618c:	8fc2001c 	lw	v0,28(s8)
  4a6190:	00000000 	nop
  4a6194:	afc20028 	sw	v0,40(s8)
  4a6198:	8fc3001c 	lw	v1,28(s8)
  4a619c:	8fc20024 	lw	v0,36(s8)
  4a61a0:	00000000 	nop
  4a61a4:	00621024 	and	v0,v1,v0
  4a61a8:	afc2001c 	sw	v0,28(s8)
  4a61ac:	8fc3001c 	lw	v1,28(s8)
  4a61b0:	8fc20020 	lw	v0,32(s8)
  4a61b4:	00000000 	nop
  4a61b8:	00621026 	xor	v0,v1,v0
  4a61bc:	afc2001c 	sw	v0,28(s8)
  4a61c0:	8fc30028 	lw	v1,40(s8)
  4a61c4:	8fc20024 	lw	v0,36(s8)
  4a61c8:	00000000 	nop
  4a61cc:	00621026 	xor	v0,v1,v0
  4a61d0:	afc20028 	sw	v0,40(s8)
  4a61d4:	8fc30018 	lw	v1,24(s8)
  4a61d8:	8fc20028 	lw	v0,40(s8)
  4a61dc:	00000000 	nop
  4a61e0:	00621026 	xor	v0,v1,v0
  4a61e4:	afc20018 	sw	v0,24(s8)
  4a61e8:	8fc30020 	lw	v1,32(s8)
  4a61ec:	8fc20028 	lw	v0,40(s8)
  4a61f0:	00000000 	nop
  4a61f4:	00621024 	and	v0,v1,v0
  4a61f8:	afc20020 	sw	v0,32(s8)
  4a61fc:	8fc30020 	lw	v1,32(s8)
  4a6200:	8fc20018 	lw	v0,24(s8)
  4a6204:	00000000 	nop
  4a6208:	00621026 	xor	v0,v1,v0
  4a620c:	afc20020 	sw	v0,32(s8)
  4a6210:	8fc30018 	lw	v1,24(s8)
  4a6214:	8fc2001c 	lw	v0,28(s8)
  4a6218:	00000000 	nop
  4a621c:	00621024 	and	v0,v1,v0
  4a6220:	afc20018 	sw	v0,24(s8)
  4a6224:	8fc30024 	lw	v1,36(s8)
  4a6228:	8fc20018 	lw	v0,24(s8)
  4a622c:	00000000 	nop
  4a6230:	00621026 	xor	v0,v1,v0
  4a6234:	afc20024 	sw	v0,36(s8)
  4a6238:	8fc30028 	lw	v1,40(s8)
  4a623c:	8fc2001c 	lw	v0,28(s8)
  4a6240:	00000000 	nop
  4a6244:	00621025 	or	v0,v1,v0
  4a6248:	afc20028 	sw	v0,40(s8)
  4a624c:	8fc30028 	lw	v1,40(s8)
  4a6250:	8fc20018 	lw	v0,24(s8)
  4a6254:	00000000 	nop
  4a6258:	00621026 	xor	v0,v1,v0
  4a625c:	afc20028 	sw	v0,40(s8)
  4a6260:	8fc30018 	lw	v1,24(s8)
  4a6264:	8fc20024 	lw	v0,36(s8)
  4a6268:	00000000 	nop
  4a626c:	00621025 	or	v0,v1,v0
  4a6270:	afc20018 	sw	v0,24(s8)
  4a6274:	8fc30018 	lw	v1,24(s8)
  4a6278:	8fc20020 	lw	v0,32(s8)
  4a627c:	00000000 	nop
  4a6280:	00621026 	xor	v0,v1,v0
  4a6284:	afc20018 	sw	v0,24(s8)
  4a6288:	8fc30020 	lw	v1,32(s8)
  4a628c:	8fc20024 	lw	v0,36(s8)
  4a6290:	00000000 	nop
  4a6294:	00621024 	and	v0,v1,v0
  4a6298:	afc20020 	sw	v0,32(s8)
  4a629c:	8fc20018 	lw	v0,24(s8)
  4a62a0:	00000000 	nop
  4a62a4:	00021027 	nor	v0,zero,v0
  4a62a8:	afc20018 	sw	v0,24(s8)
  4a62ac:	8fc30028 	lw	v1,40(s8)
  4a62b0:	8fc20020 	lw	v0,32(s8)
  4a62b4:	00000000 	nop
  4a62b8:	00621026 	xor	v0,v1,v0
  4a62bc:	afc20028 	sw	v0,40(s8)
      SETKEY(r1, r4, r0, r3, 124) 
  4a62c0:	8fc2000c 	lw	v0,12(s8)
  4a62c4:	00000000 	nop
  4a62c8:	24430210 	addiu	v1,v0,528
  4a62cc:	8fc2001c 	lw	v0,28(s8)
  4a62d0:	00000000 	nop
  4a62d4:	ac620000 	sw	v0,0(v1)
  4a62d8:	8fc2000c 	lw	v0,12(s8)
  4a62dc:	00000000 	nop
  4a62e0:	24430214 	addiu	v1,v0,532
  4a62e4:	8fc20028 	lw	v0,40(s8)
  4a62e8:	00000000 	nop
  4a62ec:	ac620000 	sw	v0,0(v1)
  4a62f0:	8fc2000c 	lw	v0,12(s8)
  4a62f4:	00000000 	nop
  4a62f8:	24430218 	addiu	v1,v0,536
  4a62fc:	8fc20018 	lw	v0,24(s8)
  4a6300:	00000000 	nop
  4a6304:	ac620000 	sw	v0,0(v1)
  4a6308:	8fc2000c 	lw	v0,12(s8)
  4a630c:	00000000 	nop
  4a6310:	2443021c 	addiu	v1,v0,540
  4a6314:	8fc20024 	lw	v0,36(s8)
  4a6318:	00000000 	nop
  4a631c:	ac620000 	sw	v0,0(v1)

      GETKEY(r0, r1, r2, r3, 128);
  4a6320:	8fc2000c 	lw	v0,12(s8)
  4a6324:	00000000 	nop
  4a6328:	24420220 	addiu	v0,v0,544
  4a632c:	8c420000 	lw	v0,0(v0)
  4a6330:	00000000 	nop
  4a6334:	afc20018 	sw	v0,24(s8)
  4a6338:	8fc2000c 	lw	v0,12(s8)
  4a633c:	00000000 	nop
  4a6340:	24420224 	addiu	v0,v0,548
  4a6344:	8c420000 	lw	v0,0(v0)
  4a6348:	00000000 	nop
  4a634c:	afc2001c 	sw	v0,28(s8)
  4a6350:	8fc2000c 	lw	v0,12(s8)
  4a6354:	00000000 	nop
  4a6358:	24420228 	addiu	v0,v0,552
  4a635c:	8c420000 	lw	v0,0(v0)
  4a6360:	00000000 	nop
  4a6364:	afc20020 	sw	v0,32(s8)
  4a6368:	8fc2000c 	lw	v0,12(s8)
  4a636c:	00000000 	nop
  4a6370:	2442022c 	addiu	v0,v0,556
  4a6374:	8c420000 	lw	v0,0(v0)
  4a6378:	00000000 	nop
  4a637c:	afc20024 	sw	v0,36(s8)
      S3(r0,r1,r2,r3,r4);
  4a6380:	8fc20018 	lw	v0,24(s8)
  4a6384:	00000000 	nop
  4a6388:	afc20028 	sw	v0,40(s8)
  4a638c:	8fc30018 	lw	v1,24(s8)
  4a6390:	8fc20024 	lw	v0,36(s8)
  4a6394:	00000000 	nop
  4a6398:	00621025 	or	v0,v1,v0
  4a639c:	afc20018 	sw	v0,24(s8)
  4a63a0:	8fc30024 	lw	v1,36(s8)
  4a63a4:	8fc2001c 	lw	v0,28(s8)
  4a63a8:	00000000 	nop
  4a63ac:	00621026 	xor	v0,v1,v0
  4a63b0:	afc20024 	sw	v0,36(s8)
  4a63b4:	8fc3001c 	lw	v1,28(s8)
  4a63b8:	8fc20028 	lw	v0,40(s8)
  4a63bc:	00000000 	nop
  4a63c0:	00621024 	and	v0,v1,v0
  4a63c4:	afc2001c 	sw	v0,28(s8)
  4a63c8:	8fc30028 	lw	v1,40(s8)
  4a63cc:	8fc20020 	lw	v0,32(s8)
  4a63d0:	00000000 	nop
  4a63d4:	00621026 	xor	v0,v1,v0
  4a63d8:	afc20028 	sw	v0,40(s8)
  4a63dc:	8fc30020 	lw	v1,32(s8)
  4a63e0:	8fc20024 	lw	v0,36(s8)
  4a63e4:	00000000 	nop
  4a63e8:	00621026 	xor	v0,v1,v0
  4a63ec:	afc20020 	sw	v0,32(s8)
  4a63f0:	8fc30024 	lw	v1,36(s8)
  4a63f4:	8fc20018 	lw	v0,24(s8)
  4a63f8:	00000000 	nop
  4a63fc:	00621024 	and	v0,v1,v0
  4a6400:	afc20024 	sw	v0,36(s8)
  4a6404:	8fc30028 	lw	v1,40(s8)
  4a6408:	8fc2001c 	lw	v0,28(s8)
  4a640c:	00000000 	nop
  4a6410:	00621025 	or	v0,v1,v0
  4a6414:	afc20028 	sw	v0,40(s8)
  4a6418:	8fc30024 	lw	v1,36(s8)
  4a641c:	8fc20028 	lw	v0,40(s8)
  4a6420:	00000000 	nop
  4a6424:	00621026 	xor	v0,v1,v0
  4a6428:	afc20024 	sw	v0,36(s8)
  4a642c:	8fc30018 	lw	v1,24(s8)
  4a6430:	8fc2001c 	lw	v0,28(s8)
  4a6434:	00000000 	nop
  4a6438:	00621026 	xor	v0,v1,v0
  4a643c:	afc20018 	sw	v0,24(s8)
  4a6440:	8fc30028 	lw	v1,40(s8)
  4a6444:	8fc20018 	lw	v0,24(s8)
  4a6448:	00000000 	nop
  4a644c:	00621024 	and	v0,v1,v0
  4a6450:	afc20028 	sw	v0,40(s8)
  4a6454:	8fc3001c 	lw	v1,28(s8)
  4a6458:	8fc20024 	lw	v0,36(s8)
  4a645c:	00000000 	nop
  4a6460:	00621026 	xor	v0,v1,v0
  4a6464:	afc2001c 	sw	v0,28(s8)
  4a6468:	8fc30028 	lw	v1,40(s8)
  4a646c:	8fc20020 	lw	v0,32(s8)
  4a6470:	00000000 	nop
  4a6474:	00621026 	xor	v0,v1,v0
  4a6478:	afc20028 	sw	v0,40(s8)
  4a647c:	8fc3001c 	lw	v1,28(s8)
  4a6480:	8fc20018 	lw	v0,24(s8)
  4a6484:	00000000 	nop
  4a6488:	00621025 	or	v0,v1,v0
  4a648c:	afc2001c 	sw	v0,28(s8)
  4a6490:	8fc3001c 	lw	v1,28(s8)
  4a6494:	8fc20020 	lw	v0,32(s8)
  4a6498:	00000000 	nop
  4a649c:	00621026 	xor	v0,v1,v0
  4a64a0:	afc2001c 	sw	v0,28(s8)
  4a64a4:	8fc30018 	lw	v1,24(s8)
  4a64a8:	8fc20024 	lw	v0,36(s8)
  4a64ac:	00000000 	nop
  4a64b0:	00621026 	xor	v0,v1,v0
  4a64b4:	afc20018 	sw	v0,24(s8)
  4a64b8:	8fc2001c 	lw	v0,28(s8)
  4a64bc:	00000000 	nop
  4a64c0:	afc20020 	sw	v0,32(s8)
  4a64c4:	8fc3001c 	lw	v1,28(s8)
  4a64c8:	8fc20024 	lw	v0,36(s8)
  4a64cc:	00000000 	nop
  4a64d0:	00621025 	or	v0,v1,v0
  4a64d4:	afc2001c 	sw	v0,28(s8)
  4a64d8:	8fc3001c 	lw	v1,28(s8)
  4a64dc:	8fc20018 	lw	v0,24(s8)
  4a64e0:	00000000 	nop
  4a64e4:	00621026 	xor	v0,v1,v0
  4a64e8:	afc2001c 	sw	v0,28(s8)
      SETKEY(r1, r2, r3, r4, 128) 
  4a64ec:	8fc2000c 	lw	v0,12(s8)
  4a64f0:	00000000 	nop
  4a64f4:	24430220 	addiu	v1,v0,544
  4a64f8:	8fc2001c 	lw	v0,28(s8)
  4a64fc:	00000000 	nop
  4a6500:	ac620000 	sw	v0,0(v1)
  4a6504:	8fc2000c 	lw	v0,12(s8)
  4a6508:	00000000 	nop
  4a650c:	24430224 	addiu	v1,v0,548
  4a6510:	8fc20020 	lw	v0,32(s8)
  4a6514:	00000000 	nop
  4a6518:	ac620000 	sw	v0,0(v1)
  4a651c:	8fc2000c 	lw	v0,12(s8)
  4a6520:	00000000 	nop
  4a6524:	24430228 	addiu	v1,v0,552
  4a6528:	8fc20024 	lw	v0,36(s8)
  4a652c:	00000000 	nop
  4a6530:	ac620000 	sw	v0,0(v1)
  4a6534:	8fc2000c 	lw	v0,12(s8)
  4a6538:	00000000 	nop
  4a653c:	2443022c 	addiu	v1,v0,556
  4a6540:	8fc20028 	lw	v0,40(s8)
  4a6544:	00000000 	nop
  4a6548:	ac620000 	sw	v0,0(v1)

    return 0;
  4a654c:	00001021 	move	v0,zero
};
  4a6550:	03c0e821 	move	sp,s8
  4a6554:	8fbe0044 	lw	s8,68(sp)
  4a6558:	27bd0048 	addiu	sp,sp,72
  4a655c:	03e00008 	jr	ra
  4a6560:	00000000 	nop

004a6564 <serpent_encrypt>:
  4a6564:	3c1c0fb6 	lui	gp,0xfb6
  4a6568:	279c640c 	addiu	gp,gp,25612
  4a656c:	0399e021 	addu	gp,gp,t9
  4a6570:	27bdffd0 	addiu	sp,sp,-48
  4a6574:	afbc0000 	sw	gp,0(sp)
  4a6578:	afbe002c 	sw	s8,44(sp)
  4a657c:	afbc0028 	sw	gp,40(sp)
  4a6580:	03a0f021 	move	s8,sp
  4a6584:	afc40030 	sw	a0,48(s8)
  4a6588:	afc50034 	sw	a1,52(s8)
  4a658c:	afc60038 	sw	a2,56(s8)

/* Encryption and decryption functions. The rounds are fully inlined. 
 * The sboxes alters the bit order of the output, and the altered
 * bit ordrer is used progressivly. */

/* encrypt a block of text */

int serpent_encrypt(serpent_context *cx, const u8 *in, 
		    u8 *out)
{    u32 *l_key = cx->keyinfo;
  4a6590:	8fc20030 	lw	v0,48(s8)
  4a6594:	00000000 	nop
  4a6598:	afc20008 	sw	v0,8(s8)
     const u32 *in_blk = (const u32 *) in;
  4a659c:	8fc20034 	lw	v0,52(s8)
  4a65a0:	00000000 	nop
  4a65a4:	afc2000c 	sw	v0,12(s8)
     u32 *out_blk = (u32 *) out;
  4a65a8:	8fc20038 	lw	v0,56(s8)
  4a65ac:	00000000 	nop
  4a65b0:	afc20010 	sw	v0,16(s8)
     u32  r0,r1,r2,r3,r4;
    
#ifdef  BLOCK_SWAP
    r0 = io_swap(in_blk[3]); r1 = io_swap(in_blk[2]); 
  4a65b4:	8fc2000c 	lw	v0,12(s8)
  4a65b8:	00000000 	nop
  4a65bc:	2442000c 	addiu	v0,v0,12
  4a65c0:	8c420000 	lw	v0,0(v0)
  4a65c4:	00000000 	nop
  4a65c8:	afc20014 	sw	v0,20(s8)
  4a65cc:	8fc2000c 	lw	v0,12(s8)
  4a65d0:	00000000 	nop
  4a65d4:	24420008 	addiu	v0,v0,8
  4a65d8:	8c420000 	lw	v0,0(v0)
  4a65dc:	00000000 	nop
  4a65e0:	afc20018 	sw	v0,24(s8)
    r2 = io_swap(in_blk[1]); r3 = io_swap(in_blk[0]);
  4a65e4:	8fc2000c 	lw	v0,12(s8)
  4a65e8:	00000000 	nop
  4a65ec:	24420004 	addiu	v0,v0,4
  4a65f0:	8c420000 	lw	v0,0(v0)
  4a65f4:	00000000 	nop
  4a65f8:	afc2001c 	sw	v0,28(s8)
  4a65fc:	8fc2000c 	lw	v0,12(s8)
  4a6600:	00000000 	nop
  4a6604:	8c420000 	lw	v0,0(v0)
  4a6608:	00000000 	nop
  4a660c:	afc20020 	sw	v0,32(s8)
#else
    r0 = in_blk[0]; r1 = in_blk[1]; r2 = in_blk[2]; r3 = in_blk[3];
#endif

      /* round 1  */
      KEYMIX(r0,r1,r2,r3,r4,0);
  4a6610:	8fc20008 	lw	v0,8(s8)
  4a6614:	00000000 	nop
  4a6618:	24420020 	addiu	v0,v0,32
  4a661c:	8c430000 	lw	v1,0(v0)
  4a6620:	8fc20014 	lw	v0,20(s8)
  4a6624:	00000000 	nop
  4a6628:	00431026 	xor	v0,v0,v1
  4a662c:	afc20014 	sw	v0,20(s8)
  4a6630:	8fc20008 	lw	v0,8(s8)
  4a6634:	00000000 	nop
  4a6638:	24420024 	addiu	v0,v0,36
  4a663c:	8c430000 	lw	v1,0(v0)
  4a6640:	8fc20018 	lw	v0,24(s8)
  4a6644:	00000000 	nop
  4a6648:	00431026 	xor	v0,v0,v1
  4a664c:	afc20018 	sw	v0,24(s8)
  4a6650:	8fc20008 	lw	v0,8(s8)
  4a6654:	00000000 	nop
  4a6658:	24420028 	addiu	v0,v0,40
  4a665c:	8c430000 	lw	v1,0(v0)
  4a6660:	8fc2001c 	lw	v0,28(s8)
  4a6664:	00000000 	nop
  4a6668:	00431026 	xor	v0,v0,v1
  4a666c:	afc2001c 	sw	v0,28(s8)
  4a6670:	8fc20008 	lw	v0,8(s8)
  4a6674:	00000000 	nop
  4a6678:	2442002c 	addiu	v0,v0,44
  4a667c:	8c430000 	lw	v1,0(v0)
  4a6680:	8fc20020 	lw	v0,32(s8)
  4a6684:	00000000 	nop
  4a6688:	00431026 	xor	v0,v0,v1
  4a668c:	afc20020 	sw	v0,32(s8)
      S0(r0,r1,r2,r3,r4);
  4a6690:	8fc30020 	lw	v1,32(s8)
  4a6694:	8fc20014 	lw	v0,20(s8)
  4a6698:	00000000 	nop
  4a669c:	00621026 	xor	v0,v1,v0
  4a66a0:	afc20020 	sw	v0,32(s8)
  4a66a4:	8fc20018 	lw	v0,24(s8)
  4a66a8:	00000000 	nop
  4a66ac:	afc20024 	sw	v0,36(s8)
  4a66b0:	8fc30018 	lw	v1,24(s8)
  4a66b4:	8fc20020 	lw	v0,32(s8)
  4a66b8:	00000000 	nop
  4a66bc:	00621024 	and	v0,v1,v0
  4a66c0:	afc20018 	sw	v0,24(s8)
  4a66c4:	8fc30024 	lw	v1,36(s8)
  4a66c8:	8fc2001c 	lw	v0,28(s8)
  4a66cc:	00000000 	nop
  4a66d0:	00621026 	xor	v0,v1,v0
  4a66d4:	afc20024 	sw	v0,36(s8)
  4a66d8:	8fc30018 	lw	v1,24(s8)
  4a66dc:	8fc20014 	lw	v0,20(s8)
  4a66e0:	00000000 	nop
  4a66e4:	00621026 	xor	v0,v1,v0
  4a66e8:	afc20018 	sw	v0,24(s8)
  4a66ec:	8fc30014 	lw	v1,20(s8)
  4a66f0:	8fc20020 	lw	v0,32(s8)
  4a66f4:	00000000 	nop
  4a66f8:	00621025 	or	v0,v1,v0
  4a66fc:	afc20014 	sw	v0,20(s8)
  4a6700:	8fc30014 	lw	v1,20(s8)
  4a6704:	8fc20024 	lw	v0,36(s8)
  4a6708:	00000000 	nop
  4a670c:	00621026 	xor	v0,v1,v0
  4a6710:	afc20014 	sw	v0,20(s8)
  4a6714:	8fc30024 	lw	v1,36(s8)
  4a6718:	8fc20020 	lw	v0,32(s8)
  4a671c:	00000000 	nop
  4a6720:	00621026 	xor	v0,v1,v0
  4a6724:	afc20024 	sw	v0,36(s8)
  4a6728:	8fc30020 	lw	v1,32(s8)
  4a672c:	8fc2001c 	lw	v0,28(s8)
  4a6730:	00000000 	nop
  4a6734:	00621026 	xor	v0,v1,v0
  4a6738:	afc20020 	sw	v0,32(s8)
  4a673c:	8fc3001c 	lw	v1,28(s8)
  4a6740:	8fc20018 	lw	v0,24(s8)
  4a6744:	00000000 	nop
  4a6748:	00621025 	or	v0,v1,v0
  4a674c:	afc2001c 	sw	v0,28(s8)
  4a6750:	8fc3001c 	lw	v1,28(s8)
  4a6754:	8fc20024 	lw	v0,36(s8)
  4a6758:	00000000 	nop
  4a675c:	00621026 	xor	v0,v1,v0
  4a6760:	afc2001c 	sw	v0,28(s8)
  4a6764:	8fc20024 	lw	v0,36(s8)
  4a6768:	00000000 	nop
  4a676c:	00021027 	nor	v0,zero,v0
  4a6770:	afc20024 	sw	v0,36(s8)
  4a6774:	8fc30024 	lw	v1,36(s8)
  4a6778:	8fc20018 	lw	v0,24(s8)
  4a677c:	00000000 	nop
  4a6780:	00621025 	or	v0,v1,v0
  4a6784:	afc20024 	sw	v0,36(s8)
  4a6788:	8fc30018 	lw	v1,24(s8)
  4a678c:	8fc20020 	lw	v0,32(s8)
  4a6790:	00000000 	nop
  4a6794:	00621026 	xor	v0,v1,v0
  4a6798:	afc20018 	sw	v0,24(s8)
  4a679c:	8fc30018 	lw	v1,24(s8)
  4a67a0:	8fc20024 	lw	v0,36(s8)
  4a67a4:	00000000 	nop
  4a67a8:	00621026 	xor	v0,v1,v0
  4a67ac:	afc20018 	sw	v0,24(s8)
  4a67b0:	8fc30020 	lw	v1,32(s8)
  4a67b4:	8fc20014 	lw	v0,20(s8)
  4a67b8:	00000000 	nop
  4a67bc:	00621025 	or	v0,v1,v0
  4a67c0:	afc20020 	sw	v0,32(s8)
  4a67c4:	8fc30018 	lw	v1,24(s8)
  4a67c8:	8fc20020 	lw	v0,32(s8)
  4a67cc:	00000000 	nop
  4a67d0:	00621026 	xor	v0,v1,v0
  4a67d4:	afc20018 	sw	v0,24(s8)
  4a67d8:	8fc30024 	lw	v1,36(s8)
  4a67dc:	8fc20020 	lw	v0,32(s8)
  4a67e0:	00000000 	nop
  4a67e4:	00621026 	xor	v0,v1,v0
  4a67e8:	afc20024 	sw	v0,36(s8)
      LINTRANS(r1,r4,r2,r0,r3);
  4a67ec:	8fc20018 	lw	v0,24(s8)
  4a67f0:	00000000 	nop
  4a67f4:	00021b40 	sll	v1,v0,0xd
  4a67f8:	000214c2 	srl	v0,v0,0x13
  4a67fc:	00621025 	or	v0,v1,v0
  4a6800:	afc20018 	sw	v0,24(s8)
  4a6804:	8fc2001c 	lw	v0,28(s8)
  4a6808:	00000000 	nop
  4a680c:	000218c0 	sll	v1,v0,0x3
  4a6810:	00021742 	srl	v0,v0,0x1d
  4a6814:	00621025 	or	v0,v1,v0
  4a6818:	afc2001c 	sw	v0,28(s8)
  4a681c:	8fc30014 	lw	v1,20(s8)
  4a6820:	8fc2001c 	lw	v0,28(s8)
  4a6824:	00000000 	nop
  4a6828:	00621026 	xor	v0,v1,v0
  4a682c:	afc20014 	sw	v0,20(s8)
  4a6830:	8fc20018 	lw	v0,24(s8)
  4a6834:	00000000 	nop
  4a6838:	000210c0 	sll	v0,v0,0x3
  4a683c:	afc20020 	sw	v0,32(s8)
  4a6840:	8fc30024 	lw	v1,36(s8)
  4a6844:	8fc20018 	lw	v0,24(s8)
  4a6848:	00000000 	nop
  4a684c:	00621026 	xor	v0,v1,v0
  4a6850:	afc20024 	sw	v0,36(s8)
  4a6854:	8fc30014 	lw	v1,20(s8)
  4a6858:	8fc20020 	lw	v0,32(s8)
  4a685c:	00000000 	nop
  4a6860:	00621026 	xor	v0,v1,v0
  4a6864:	afc20014 	sw	v0,20(s8)
  4a6868:	8fc30024 	lw	v1,36(s8)
  4a686c:	8fc2001c 	lw	v0,28(s8)
  4a6870:	00000000 	nop
  4a6874:	00621026 	xor	v0,v1,v0
  4a6878:	afc20024 	sw	v0,36(s8)
  4a687c:	8fc20014 	lw	v0,20(s8)
  4a6880:	00000000 	nop
  4a6884:	000219c0 	sll	v1,v0,0x7
  4a6888:	00021642 	srl	v0,v0,0x19
  4a688c:	00621025 	or	v0,v1,v0
  4a6890:	afc20014 	sw	v0,20(s8)
  4a6894:	8fc20024 	lw	v0,36(s8)
  4a6898:	00000000 	nop
  4a689c:	00021840 	sll	v1,v0,0x1
  4a68a0:	000217c2 	srl	v0,v0,0x1f
  4a68a4:	00621025 	or	v0,v1,v0
  4a68a8:	afc20024 	sw	v0,36(s8)
  4a68ac:	8fc3001c 	lw	v1,28(s8)
  4a68b0:	8fc20014 	lw	v0,20(s8)
  4a68b4:	00000000 	nop
  4a68b8:	00621026 	xor	v0,v1,v0
  4a68bc:	afc2001c 	sw	v0,28(s8)
  4a68c0:	8fc20024 	lw	v0,36(s8)
  4a68c4:	00000000 	nop
  4a68c8:	000211c0 	sll	v0,v0,0x7
  4a68cc:	afc20020 	sw	v0,32(s8)
  4a68d0:	8fc30018 	lw	v1,24(s8)
  4a68d4:	8fc20024 	lw	v0,36(s8)
  4a68d8:	00000000 	nop
  4a68dc:	00621026 	xor	v0,v1,v0
  4a68e0:	afc20018 	sw	v0,24(s8)
  4a68e4:	8fc3001c 	lw	v1,28(s8)
  4a68e8:	8fc20020 	lw	v0,32(s8)
  4a68ec:	00000000 	nop
  4a68f0:	00621026 	xor	v0,v1,v0
  4a68f4:	afc2001c 	sw	v0,28(s8)
  4a68f8:	8fc30018 	lw	v1,24(s8)
  4a68fc:	8fc20014 	lw	v0,20(s8)
  4a6900:	00000000 	nop
  4a6904:	00621026 	xor	v0,v1,v0
  4a6908:	afc20018 	sw	v0,24(s8)
  4a690c:	8fc2001c 	lw	v0,28(s8)
  4a6910:	00000000 	nop
  4a6914:	00021d80 	sll	v1,v0,0x16
  4a6918:	00021282 	srl	v0,v0,0xa
  4a691c:	00621025 	or	v0,v1,v0
  4a6920:	afc2001c 	sw	v0,28(s8)
  4a6924:	8fc20018 	lw	v0,24(s8)
  4a6928:	00000000 	nop
  4a692c:	00021940 	sll	v1,v0,0x5
  4a6930:	000216c2 	srl	v0,v0,0x1b
  4a6934:	00621025 	or	v0,v1,v0
  4a6938:	afc20018 	sw	v0,24(s8)

      /* round 2  */
      KEYMIX(r1,r4,r2,r0,r3,4);
  4a693c:	8fc20008 	lw	v0,8(s8)
  4a6940:	00000000 	nop
  4a6944:	24420030 	addiu	v0,v0,48
  4a6948:	8c430000 	lw	v1,0(v0)
  4a694c:	8fc20018 	lw	v0,24(s8)
  4a6950:	00000000 	nop
  4a6954:	00431026 	xor	v0,v0,v1
  4a6958:	afc20018 	sw	v0,24(s8)
  4a695c:	8fc20008 	lw	v0,8(s8)
  4a6960:	00000000 	nop
  4a6964:	24420034 	addiu	v0,v0,52
  4a6968:	8c430000 	lw	v1,0(v0)
  4a696c:	8fc20024 	lw	v0,36(s8)
  4a6970:	00000000 	nop
  4a6974:	00431026 	xor	v0,v0,v1
  4a6978:	afc20024 	sw	v0,36(s8)
  4a697c:	8fc20008 	lw	v0,8(s8)
  4a6980:	00000000 	nop
  4a6984:	24420038 	addiu	v0,v0,56
  4a6988:	8c430000 	lw	v1,0(v0)
  4a698c:	8fc2001c 	lw	v0,28(s8)
  4a6990:	00000000 	nop
  4a6994:	00431026 	xor	v0,v0,v1
  4a6998:	afc2001c 	sw	v0,28(s8)
  4a699c:	8fc20008 	lw	v0,8(s8)
  4a69a0:	00000000 	nop
  4a69a4:	2442003c 	addiu	v0,v0,60
  4a69a8:	8c430000 	lw	v1,0(v0)
  4a69ac:	8fc20014 	lw	v0,20(s8)
  4a69b0:	00000000 	nop
  4a69b4:	00431026 	xor	v0,v0,v1
  4a69b8:	afc20014 	sw	v0,20(s8)
      S1(r1,r4,r2,r0,r3);
  4a69bc:	8fc20024 	lw	v0,36(s8)
  4a69c0:	00000000 	nop
  4a69c4:	00021027 	nor	v0,zero,v0
  4a69c8:	afc20024 	sw	v0,36(s8)
  4a69cc:	8fc20018 	lw	v0,24(s8)
  4a69d0:	00000000 	nop
  4a69d4:	afc20020 	sw	v0,32(s8)
  4a69d8:	8fc30018 	lw	v1,24(s8)
  4a69dc:	8fc20024 	lw	v0,36(s8)
  4a69e0:	00000000 	nop
  4a69e4:	00621026 	xor	v0,v1,v0
  4a69e8:	afc20018 	sw	v0,24(s8)
  4a69ec:	8fc30020 	lw	v1,32(s8)
  4a69f0:	8fc20024 	lw	v0,36(s8)
  4a69f4:	00000000 	nop
  4a69f8:	00621025 	or	v0,v1,v0
  4a69fc:	afc20020 	sw	v0,32(s8)
  4a6a00:	8fc30020 	lw	v1,32(s8)
  4a6a04:	8fc20014 	lw	v0,20(s8)
  4a6a08:	00000000 	nop
  4a6a0c:	00621026 	xor	v0,v1,v0
  4a6a10:	afc20020 	sw	v0,32(s8)
  4a6a14:	8fc30014 	lw	v1,20(s8)
  4a6a18:	8fc20018 	lw	v0,24(s8)
  4a6a1c:	00000000 	nop
  4a6a20:	00621024 	and	v0,v1,v0
  4a6a24:	afc20014 	sw	v0,20(s8)
  4a6a28:	8fc3001c 	lw	v1,28(s8)
  4a6a2c:	8fc20020 	lw	v0,32(s8)
  4a6a30:	00000000 	nop
  4a6a34:	00621026 	xor	v0,v1,v0
  4a6a38:	afc2001c 	sw	v0,28(s8)
  4a6a3c:	8fc30014 	lw	v1,20(s8)
  4a6a40:	8fc20024 	lw	v0,36(s8)
  4a6a44:	00000000 	nop
  4a6a48:	00621026 	xor	v0,v1,v0
  4a6a4c:	afc20014 	sw	v0,20(s8)
  4a6a50:	8fc30014 	lw	v1,20(s8)
  4a6a54:	8fc2001c 	lw	v0,28(s8)
  4a6a58:	00000000 	nop
  4a6a5c:	00621025 	or	v0,v1,v0
  4a6a60:	afc20014 	sw	v0,20(s8)
  4a6a64:	8fc30018 	lw	v1,24(s8)
  4a6a68:	8fc20020 	lw	v0,32(s8)
  4a6a6c:	00000000 	nop
  4a6a70:	00621026 	xor	v0,v1,v0
  4a6a74:	afc20018 	sw	v0,24(s8)
  4a6a78:	8fc30014 	lw	v1,20(s8)
  4a6a7c:	8fc20018 	lw	v0,24(s8)
  4a6a80:	00000000 	nop
  4a6a84:	00621026 	xor	v0,v1,v0
  4a6a88:	afc20014 	sw	v0,20(s8)
  4a6a8c:	8fc30024 	lw	v1,36(s8)
  4a6a90:	8fc2001c 	lw	v0,28(s8)
  4a6a94:	00000000 	nop
  4a6a98:	00621024 	and	v0,v1,v0
  4a6a9c:	afc20024 	sw	v0,36(s8)
  4a6aa0:	8fc30018 	lw	v1,24(s8)
  4a6aa4:	8fc20024 	lw	v0,36(s8)
  4a6aa8:	00000000 	nop
  4a6aac:	00621025 	or	v0,v1,v0
  4a6ab0:	afc20018 	sw	v0,24(s8)
  4a6ab4:	8fc30024 	lw	v1,36(s8)
  4a6ab8:	8fc20020 	lw	v0,32(s8)
  4a6abc:	00000000 	nop
  4a6ac0:	00621026 	xor	v0,v1,v0
  4a6ac4:	afc20024 	sw	v0,36(s8)
  4a6ac8:	8fc30018 	lw	v1,24(s8)
  4a6acc:	8fc2001c 	lw	v0,28(s8)
  4a6ad0:	00000000 	nop
  4a6ad4:	00621026 	xor	v0,v1,v0
  4a6ad8:	afc20018 	sw	v0,24(s8)
  4a6adc:	8fc30020 	lw	v1,32(s8)
  4a6ae0:	8fc20014 	lw	v0,20(s8)
  4a6ae4:	00000000 	nop
  4a6ae8:	00621025 	or	v0,v1,v0
  4a6aec:	afc20020 	sw	v0,32(s8)
  4a6af0:	8fc30018 	lw	v1,24(s8)
  4a6af4:	8fc20020 	lw	v0,32(s8)
  4a6af8:	00000000 	nop
  4a6afc:	00621026 	xor	v0,v1,v0
  4a6b00:	afc20018 	sw	v0,24(s8)
  4a6b04:	8fc20020 	lw	v0,32(s8)
  4a6b08:	00000000 	nop
  4a6b0c:	00021027 	nor	v0,zero,v0
  4a6b10:	afc20020 	sw	v0,32(s8)
  4a6b14:	8fc30024 	lw	v1,36(s8)
  4a6b18:	8fc20014 	lw	v0,20(s8)
  4a6b1c:	00000000 	nop
  4a6b20:	00621026 	xor	v0,v1,v0
  4a6b24:	afc20024 	sw	v0,36(s8)
  4a6b28:	8fc30020 	lw	v1,32(s8)
  4a6b2c:	8fc2001c 	lw	v0,28(s8)
  4a6b30:	00000000 	nop
  4a6b34:	00621024 	and	v0,v1,v0
  4a6b38:	afc20020 	sw	v0,32(s8)
  4a6b3c:	8fc20024 	lw	v0,36(s8)
  4a6b40:	00000000 	nop
  4a6b44:	00021027 	nor	v0,zero,v0
  4a6b48:	afc20024 	sw	v0,36(s8)
  4a6b4c:	8fc30020 	lw	v1,32(s8)
  4a6b50:	8fc20018 	lw	v0,24(s8)
  4a6b54:	00000000 	nop
  4a6b58:	00621026 	xor	v0,v1,v0
  4a6b5c:	afc20020 	sw	v0,32(s8)
  4a6b60:	8fc30024 	lw	v1,36(s8)
  4a6b64:	8fc20020 	lw	v0,32(s8)
  4a6b68:	00000000 	nop
  4a6b6c:	00621026 	xor	v0,v1,v0
  4a6b70:	afc20024 	sw	v0,36(s8)
      LINTRANS(r0,r4,r2,r1,r3);
  4a6b74:	8fc20014 	lw	v0,20(s8)
  4a6b78:	00000000 	nop
  4a6b7c:	00021b40 	sll	v1,v0,0xd
  4a6b80:	000214c2 	srl	v0,v0,0x13
  4a6b84:	00621025 	or	v0,v1,v0
  4a6b88:	afc20014 	sw	v0,20(s8)
  4a6b8c:	8fc2001c 	lw	v0,28(s8)
  4a6b90:	00000000 	nop
  4a6b94:	000218c0 	sll	v1,v0,0x3
  4a6b98:	00021742 	srl	v0,v0,0x1d
  4a6b9c:	00621025 	or	v0,v1,v0
  4a6ba0:	afc2001c 	sw	v0,28(s8)
  4a6ba4:	8fc30018 	lw	v1,24(s8)
  4a6ba8:	8fc2001c 	lw	v0,28(s8)
  4a6bac:	00000000 	nop
  4a6bb0:	00621026 	xor	v0,v1,v0
  4a6bb4:	afc20018 	sw	v0,24(s8)
  4a6bb8:	8fc20014 	lw	v0,20(s8)
  4a6bbc:	00000000 	nop
  4a6bc0:	000210c0 	sll	v0,v0,0x3
  4a6bc4:	afc20020 	sw	v0,32(s8)
  4a6bc8:	8fc30024 	lw	v1,36(s8)
  4a6bcc:	8fc20014 	lw	v0,20(s8)
  4a6bd0:	00000000 	nop
  4a6bd4:	00621026 	xor	v0,v1,v0
  4a6bd8:	afc20024 	sw	v0,36(s8)
  4a6bdc:	8fc30018 	lw	v1,24(s8)
  4a6be0:	8fc20020 	lw	v0,32(s8)
  4a6be4:	00000000 	nop
  4a6be8:	00621026 	xor	v0,v1,v0
  4a6bec:	afc20018 	sw	v0,24(s8)
  4a6bf0:	8fc30024 	lw	v1,36(s8)
  4a6bf4:	8fc2001c 	lw	v0,28(s8)
  4a6bf8:	00000000 	nop
  4a6bfc:	00621026 	xor	v0,v1,v0
  4a6c00:	afc20024 	sw	v0,36(s8)
  4a6c04:	8fc20018 	lw	v0,24(s8)
  4a6c08:	00000000 	nop
  4a6c0c:	000219c0 	sll	v1,v0,0x7
  4a6c10:	00021642 	srl	v0,v0,0x19
  4a6c14:	00621025 	or	v0,v1,v0
  4a6c18:	afc20018 	sw	v0,24(s8)
  4a6c1c:	8fc20024 	lw	v0,36(s8)
  4a6c20:	00000000 	nop
  4a6c24:	00021840 	sll	v1,v0,0x1
  4a6c28:	000217c2 	srl	v0,v0,0x1f
  4a6c2c:	00621025 	or	v0,v1,v0
  4a6c30:	afc20024 	sw	v0,36(s8)
  4a6c34:	8fc3001c 	lw	v1,28(s8)
  4a6c38:	8fc20018 	lw	v0,24(s8)
  4a6c3c:	00000000 	nop
  4a6c40:	00621026 	xor	v0,v1,v0
  4a6c44:	afc2001c 	sw	v0,28(s8)
  4a6c48:	8fc20024 	lw	v0,36(s8)
  4a6c4c:	00000000 	nop
  4a6c50:	000211c0 	sll	v0,v0,0x7
  4a6c54:	afc20020 	sw	v0,32(s8)
  4a6c58:	8fc30014 	lw	v1,20(s8)
  4a6c5c:	8fc20024 	lw	v0,36(s8)
  4a6c60:	00000000 	nop
  4a6c64:	00621026 	xor	v0,v1,v0
  4a6c68:	afc20014 	sw	v0,20(s8)
  4a6c6c:	8fc3001c 	lw	v1,28(s8)
  4a6c70:	8fc20020 	lw	v0,32(s8)
  4a6c74:	00000000 	nop
  4a6c78:	00621026 	xor	v0,v1,v0
  4a6c7c:	afc2001c 	sw	v0,28(s8)
  4a6c80:	8fc30014 	lw	v1,20(s8)
  4a6c84:	8fc20018 	lw	v0,24(s8)
  4a6c88:	00000000 	nop
  4a6c8c:	00621026 	xor	v0,v1,v0
  4a6c90:	afc20014 	sw	v0,20(s8)
  4a6c94:	8fc2001c 	lw	v0,28(s8)
  4a6c98:	00000000 	nop
  4a6c9c:	00021d80 	sll	v1,v0,0x16
  4a6ca0:	00021282 	srl	v0,v0,0xa
  4a6ca4:	00621025 	or	v0,v1,v0
  4a6ca8:	afc2001c 	sw	v0,28(s8)
  4a6cac:	8fc20014 	lw	v0,20(s8)
  4a6cb0:	00000000 	nop
  4a6cb4:	00021940 	sll	v1,v0,0x5
  4a6cb8:	000216c2 	srl	v0,v0,0x1b
  4a6cbc:	00621025 	or	v0,v1,v0
  4a6cc0:	afc20014 	sw	v0,20(s8)

      /* round 3  */
      KEYMIX(r0,r4,r2,r1,r3,8);
  4a6cc4:	8fc20008 	lw	v0,8(s8)
  4a6cc8:	00000000 	nop
  4a6ccc:	24420040 	addiu	v0,v0,64
  4a6cd0:	8c430000 	lw	v1,0(v0)
  4a6cd4:	8fc20014 	lw	v0,20(s8)
  4a6cd8:	00000000 	nop
  4a6cdc:	00431026 	xor	v0,v0,v1
  4a6ce0:	afc20014 	sw	v0,20(s8)
  4a6ce4:	8fc20008 	lw	v0,8(s8)
  4a6ce8:	00000000 	nop
  4a6cec:	24420044 	addiu	v0,v0,68
  4a6cf0:	8c430000 	lw	v1,0(v0)
  4a6cf4:	8fc20024 	lw	v0,36(s8)
  4a6cf8:	00000000 	nop
  4a6cfc:	00431026 	xor	v0,v0,v1
  4a6d00:	afc20024 	sw	v0,36(s8)
  4a6d04:	8fc20008 	lw	v0,8(s8)
  4a6d08:	00000000 	nop
  4a6d0c:	24420048 	addiu	v0,v0,72
  4a6d10:	8c430000 	lw	v1,0(v0)
  4a6d14:	8fc2001c 	lw	v0,28(s8)
  4a6d18:	00000000 	nop
  4a6d1c:	00431026 	xor	v0,v0,v1
  4a6d20:	afc2001c 	sw	v0,28(s8)
  4a6d24:	8fc20008 	lw	v0,8(s8)
  4a6d28:	00000000 	nop
  4a6d2c:	2442004c 	addiu	v0,v0,76
  4a6d30:	8c430000 	lw	v1,0(v0)
  4a6d34:	8fc20018 	lw	v0,24(s8)
  4a6d38:	00000000 	nop
  4a6d3c:	00431026 	xor	v0,v0,v1
  4a6d40:	afc20018 	sw	v0,24(s8)
      S2(r0,r4,r2,r1,r3);
  4a6d44:	8fc20014 	lw	v0,20(s8)
  4a6d48:	00000000 	nop
  4a6d4c:	afc20020 	sw	v0,32(s8)
  4a6d50:	8fc30014 	lw	v1,20(s8)
  4a6d54:	8fc2001c 	lw	v0,28(s8)
  4a6d58:	00000000 	nop
  4a6d5c:	00621024 	and	v0,v1,v0
  4a6d60:	afc20014 	sw	v0,20(s8)
  4a6d64:	8fc30014 	lw	v1,20(s8)
  4a6d68:	8fc20018 	lw	v0,24(s8)
  4a6d6c:	00000000 	nop
  4a6d70:	00621026 	xor	v0,v1,v0
  4a6d74:	afc20014 	sw	v0,20(s8)
  4a6d78:	8fc3001c 	lw	v1,28(s8)
  4a6d7c:	8fc20024 	lw	v0,36(s8)
  4a6d80:	00000000 	nop
  4a6d84:	00621026 	xor	v0,v1,v0
  4a6d88:	afc2001c 	sw	v0,28(s8)
  4a6d8c:	8fc3001c 	lw	v1,28(s8)
  4a6d90:	8fc20014 	lw	v0,20(s8)
  4a6d94:	00000000 	nop
  4a6d98:	00621026 	xor	v0,v1,v0
  4a6d9c:	afc2001c 	sw	v0,28(s8)
  4a6da0:	8fc30018 	lw	v1,24(s8)
  4a6da4:	8fc20020 	lw	v0,32(s8)
  4a6da8:	00000000 	nop
  4a6dac:	00621025 	or	v0,v1,v0
  4a6db0:	afc20018 	sw	v0,24(s8)
  4a6db4:	8fc30018 	lw	v1,24(s8)
  4a6db8:	8fc20024 	lw	v0,36(s8)
  4a6dbc:	00000000 	nop
  4a6dc0:	00621026 	xor	v0,v1,v0
  4a6dc4:	afc20018 	sw	v0,24(s8)
  4a6dc8:	8fc30020 	lw	v1,32(s8)
  4a6dcc:	8fc2001c 	lw	v0,28(s8)
  4a6dd0:	00000000 	nop
  4a6dd4:	00621026 	xor	v0,v1,v0
  4a6dd8:	afc20020 	sw	v0,32(s8)
  4a6ddc:	8fc20018 	lw	v0,24(s8)
  4a6de0:	00000000 	nop
  4a6de4:	afc20024 	sw	v0,36(s8)
  4a6de8:	8fc30018 	lw	v1,24(s8)
  4a6dec:	8fc20020 	lw	v0,32(s8)
  4a6df0:	00000000 	nop
  4a6df4:	00621025 	or	v0,v1,v0
  4a6df8:	afc20018 	sw	v0,24(s8)
  4a6dfc:	8fc30018 	lw	v1,24(s8)
  4a6e00:	8fc20014 	lw	v0,20(s8)
  4a6e04:	00000000 	nop
  4a6e08:	00621026 	xor	v0,v1,v0
  4a6e0c:	afc20018 	sw	v0,24(s8)
  4a6e10:	8fc30014 	lw	v1,20(s8)
  4a6e14:	8fc20024 	lw	v0,36(s8)
  4a6e18:	00000000 	nop
  4a6e1c:	00621024 	and	v0,v1,v0
  4a6e20:	afc20014 	sw	v0,20(s8)
  4a6e24:	8fc30020 	lw	v1,32(s8)
  4a6e28:	8fc20014 	lw	v0,20(s8)
  4a6e2c:	00000000 	nop
  4a6e30:	00621026 	xor	v0,v1,v0
  4a6e34:	afc20020 	sw	v0,32(s8)
  4a6e38:	8fc30024 	lw	v1,36(s8)
  4a6e3c:	8fc20018 	lw	v0,24(s8)
  4a6e40:	00000000 	nop
  4a6e44:	00621026 	xor	v0,v1,v0
  4a6e48:	afc20024 	sw	v0,36(s8)
  4a6e4c:	8fc30024 	lw	v1,36(s8)
  4a6e50:	8fc20020 	lw	v0,32(s8)
  4a6e54:	00000000 	nop
  4a6e58:	00621026 	xor	v0,v1,v0
  4a6e5c:	afc20024 	sw	v0,36(s8)
  4a6e60:	8fc20020 	lw	v0,32(s8)
  4a6e64:	00000000 	nop
  4a6e68:	00021027 	nor	v0,zero,v0
  4a6e6c:	afc20020 	sw	v0,32(s8)
      LINTRANS(r2,r1,r4,r3,r0);
  4a6e70:	8fc2001c 	lw	v0,28(s8)
  4a6e74:	00000000 	nop
  4a6e78:	00021b40 	sll	v1,v0,0xd
  4a6e7c:	000214c2 	srl	v0,v0,0x13
  4a6e80:	00621025 	or	v0,v1,v0
  4a6e84:	afc2001c 	sw	v0,28(s8)
  4a6e88:	8fc20024 	lw	v0,36(s8)
  4a6e8c:	00000000 	nop
  4a6e90:	000218c0 	sll	v1,v0,0x3
  4a6e94:	00021742 	srl	v0,v0,0x1d
  4a6e98:	00621025 	or	v0,v1,v0
  4a6e9c:	afc20024 	sw	v0,36(s8)
  4a6ea0:	8fc30020 	lw	v1,32(s8)
  4a6ea4:	8fc20024 	lw	v0,36(s8)
  4a6ea8:	00000000 	nop
  4a6eac:	00621026 	xor	v0,v1,v0
  4a6eb0:	afc20020 	sw	v0,32(s8)
  4a6eb4:	8fc2001c 	lw	v0,28(s8)
  4a6eb8:	00000000 	nop
  4a6ebc:	000210c0 	sll	v0,v0,0x3
  4a6ec0:	afc20014 	sw	v0,20(s8)
  4a6ec4:	8fc30018 	lw	v1,24(s8)
  4a6ec8:	8fc2001c 	lw	v0,28(s8)
  4a6ecc:	00000000 	nop
  4a6ed0:	00621026 	xor	v0,v1,v0
  4a6ed4:	afc20018 	sw	v0,24(s8)
  4a6ed8:	8fc30020 	lw	v1,32(s8)
  4a6edc:	8fc20014 	lw	v0,20(s8)
  4a6ee0:	00000000 	nop
  4a6ee4:	00621026 	xor	v0,v1,v0
  4a6ee8:	afc20020 	sw	v0,32(s8)
  4a6eec:	8fc30018 	lw	v1,24(s8)
  4a6ef0:	8fc20024 	lw	v0,36(s8)
  4a6ef4:	00000000 	nop
  4a6ef8:	00621026 	xor	v0,v1,v0
  4a6efc:	afc20018 	sw	v0,24(s8)
  4a6f00:	8fc20020 	lw	v0,32(s8)
  4a6f04:	00000000 	nop
  4a6f08:	000219c0 	sll	v1,v0,0x7
  4a6f0c:	00021642 	srl	v0,v0,0x19
  4a6f10:	00621025 	or	v0,v1,v0
  4a6f14:	afc20020 	sw	v0,32(s8)
  4a6f18:	8fc20018 	lw	v0,24(s8)
  4a6f1c:	00000000 	nop
  4a6f20:	00021840 	sll	v1,v0,0x1
  4a6f24:	000217c2 	srl	v0,v0,0x1f
  4a6f28:	00621025 	or	v0,v1,v0
  4a6f2c:	afc20018 	sw	v0,24(s8)
  4a6f30:	8fc30024 	lw	v1,36(s8)
  4a6f34:	8fc20020 	lw	v0,32(s8)
  4a6f38:	00000000 	nop
  4a6f3c:	00621026 	xor	v0,v1,v0
  4a6f40:	afc20024 	sw	v0,36(s8)
  4a6f44:	8fc20018 	lw	v0,24(s8)
  4a6f48:	00000000 	nop
  4a6f4c:	000211c0 	sll	v0,v0,0x7
  4a6f50:	afc20014 	sw	v0,20(s8)
  4a6f54:	8fc3001c 	lw	v1,28(s8)
  4a6f58:	8fc20018 	lw	v0,24(s8)
  4a6f5c:	00000000 	nop
  4a6f60:	00621026 	xor	v0,v1,v0
  4a6f64:	afc2001c 	sw	v0,28(s8)
  4a6f68:	8fc30024 	lw	v1,36(s8)
  4a6f6c:	8fc20014 	lw	v0,20(s8)
  4a6f70:	00000000 	nop
  4a6f74:	00621026 	xor	v0,v1,v0
  4a6f78:	afc20024 	sw	v0,36(s8)
  4a6f7c:	8fc3001c 	lw	v1,28(s8)
  4a6f80:	8fc20020 	lw	v0,32(s8)
  4a6f84:	00000000 	nop
  4a6f88:	00621026 	xor	v0,v1,v0
  4a6f8c:	afc2001c 	sw	v0,28(s8)
  4a6f90:	8fc20024 	lw	v0,36(s8)
  4a6f94:	00000000 	nop
  4a6f98:	00021d80 	sll	v1,v0,0x16
  4a6f9c:	00021282 	srl	v0,v0,0xa
  4a6fa0:	00621025 	or	v0,v1,v0
  4a6fa4:	afc20024 	sw	v0,36(s8)
  4a6fa8:	8fc2001c 	lw	v0,28(s8)
  4a6fac:	00000000 	nop
  4a6fb0:	00021940 	sll	v1,v0,0x5
  4a6fb4:	000216c2 	srl	v0,v0,0x1b
  4a6fb8:	00621025 	or	v0,v1,v0
  4a6fbc:	afc2001c 	sw	v0,28(s8)

      /* round 4  */
      KEYMIX(r2,r1,r4,r3,r0,12);
  4a6fc0:	8fc20008 	lw	v0,8(s8)
  4a6fc4:	00000000 	nop
  4a6fc8:	24420050 	addiu	v0,v0,80
  4a6fcc:	8c430000 	lw	v1,0(v0)
  4a6fd0:	8fc2001c 	lw	v0,28(s8)
  4a6fd4:	00000000 	nop
  4a6fd8:	00431026 	xor	v0,v0,v1
  4a6fdc:	afc2001c 	sw	v0,28(s8)
  4a6fe0:	8fc20008 	lw	v0,8(s8)
  4a6fe4:	00000000 	nop
  4a6fe8:	24420054 	addiu	v0,v0,84
  4a6fec:	8c430000 	lw	v1,0(v0)
  4a6ff0:	8fc20018 	lw	v0,24(s8)
  4a6ff4:	00000000 	nop
  4a6ff8:	00431026 	xor	v0,v0,v1
  4a6ffc:	afc20018 	sw	v0,24(s8)
  4a7000:	8fc20008 	lw	v0,8(s8)
  4a7004:	00000000 	nop
  4a7008:	24420058 	addiu	v0,v0,88
  4a700c:	8c430000 	lw	v1,0(v0)
  4a7010:	8fc20024 	lw	v0,36(s8)
  4a7014:	00000000 	nop
  4a7018:	00431026 	xor	v0,v0,v1
  4a701c:	afc20024 	sw	v0,36(s8)
  4a7020:	8fc20008 	lw	v0,8(s8)
  4a7024:	00000000 	nop
  4a7028:	2442005c 	addiu	v0,v0,92
  4a702c:	8c430000 	lw	v1,0(v0)
  4a7030:	8fc20020 	lw	v0,32(s8)
  4a7034:	00000000 	nop
  4a7038:	00431026 	xor	v0,v0,v1
  4a703c:	afc20020 	sw	v0,32(s8)
      S3(r2,r1,r4,r3,r0);
  4a7040:	8fc2001c 	lw	v0,28(s8)
  4a7044:	00000000 	nop
  4a7048:	afc20014 	sw	v0,20(s8)
  4a704c:	8fc3001c 	lw	v1,28(s8)
  4a7050:	8fc20020 	lw	v0,32(s8)
  4a7054:	00000000 	nop
  4a7058:	00621025 	or	v0,v1,v0
  4a705c:	afc2001c 	sw	v0,28(s8)
  4a7060:	8fc30020 	lw	v1,32(s8)
  4a7064:	8fc20018 	lw	v0,24(s8)
  4a7068:	00000000 	nop
  4a706c:	00621026 	xor	v0,v1,v0
  4a7070:	afc20020 	sw	v0,32(s8)
  4a7074:	8fc30018 	lw	v1,24(s8)
  4a7078:	8fc20014 	lw	v0,20(s8)
  4a707c:	00000000 	nop
  4a7080:	00621024 	and	v0,v1,v0
  4a7084:	afc20018 	sw	v0,24(s8)
  4a7088:	8fc30014 	lw	v1,20(s8)
  4a708c:	8fc20024 	lw	v0,36(s8)
  4a7090:	00000000 	nop
  4a7094:	00621026 	xor	v0,v1,v0
  4a7098:	afc20014 	sw	v0,20(s8)
  4a709c:	8fc30024 	lw	v1,36(s8)
  4a70a0:	8fc20020 	lw	v0,32(s8)
  4a70a4:	00000000 	nop
  4a70a8:	00621026 	xor	v0,v1,v0
  4a70ac:	afc20024 	sw	v0,36(s8)
  4a70b0:	8fc30020 	lw	v1,32(s8)
  4a70b4:	8fc2001c 	lw	v0,28(s8)
  4a70b8:	00000000 	nop
  4a70bc:	00621024 	and	v0,v1,v0
  4a70c0:	afc20020 	sw	v0,32(s8)
  4a70c4:	8fc30014 	lw	v1,20(s8)
  4a70c8:	8fc20018 	lw	v0,24(s8)
  4a70cc:	00000000 	nop
  4a70d0:	00621025 	or	v0,v1,v0
  4a70d4:	afc20014 	sw	v0,20(s8)
  4a70d8:	8fc30020 	lw	v1,32(s8)
  4a70dc:	8fc20014 	lw	v0,20(s8)
  4a70e0:	00000000 	nop
  4a70e4:	00621026 	xor	v0,v1,v0
  4a70e8:	afc20020 	sw	v0,32(s8)
  4a70ec:	8fc3001c 	lw	v1,28(s8)
  4a70f0:	8fc20018 	lw	v0,24(s8)
  4a70f4:	00000000 	nop
  4a70f8:	00621026 	xor	v0,v1,v0
  4a70fc:	afc2001c 	sw	v0,28(s8)
  4a7100:	8fc30014 	lw	v1,20(s8)
  4a7104:	8fc2001c 	lw	v0,28(s8)
  4a7108:	00000000 	nop
  4a710c:	00621024 	and	v0,v1,v0
  4a7110:	afc20014 	sw	v0,20(s8)
  4a7114:	8fc30018 	lw	v1,24(s8)
  4a7118:	8fc20020 	lw	v0,32(s8)
  4a711c:	00000000 	nop
  4a7120:	00621026 	xor	v0,v1,v0
  4a7124:	afc20018 	sw	v0,24(s8)
  4a7128:	8fc30014 	lw	v1,20(s8)
  4a712c:	8fc20024 	lw	v0,36(s8)
  4a7130:	00000000 	nop
  4a7134:	00621026 	xor	v0,v1,v0
  4a7138:	afc20014 	sw	v0,20(s8)
  4a713c:	8fc30018 	lw	v1,24(s8)
  4a7140:	8fc2001c 	lw	v0,28(s8)
  4a7144:	00000000 	nop
  4a7148:	00621025 	or	v0,v1,v0
  4a714c:	afc20018 	sw	v0,24(s8)
  4a7150:	8fc30018 	lw	v1,24(s8)
  4a7154:	8fc20024 	lw	v0,36(s8)
  4a7158:	00000000 	nop
  4a715c:	00621026 	xor	v0,v1,v0
  4a7160:	afc20018 	sw	v0,24(s8)
  4a7164:	8fc3001c 	lw	v1,28(s8)
  4a7168:	8fc20020 	lw	v0,32(s8)
  4a716c:	00000000 	nop
  4a7170:	00621026 	xor	v0,v1,v0
  4a7174:	afc2001c 	sw	v0,28(s8)
  4a7178:	8fc20018 	lw	v0,24(s8)
  4a717c:	00000000 	nop
  4a7180:	afc20024 	sw	v0,36(s8)
  4a7184:	8fc30018 	lw	v1,24(s8)
  4a7188:	8fc20020 	lw	v0,32(s8)
  4a718c:	00000000 	nop
  4a7190:	00621025 	or	v0,v1,v0
  4a7194:	afc20018 	sw	v0,24(s8)
  4a7198:	8fc30018 	lw	v1,24(s8)
  4a719c:	8fc2001c 	lw	v0,28(s8)
  4a71a0:	00000000 	nop
  4a71a4:	00621026 	xor	v0,v1,v0
  4a71a8:	afc20018 	sw	v0,24(s8)
      LINTRANS(r1,r4,r3,r0,r2);
  4a71ac:	8fc20018 	lw	v0,24(s8)
  4a71b0:	00000000 	nop
  4a71b4:	00021b40 	sll	v1,v0,0xd
  4a71b8:	000214c2 	srl	v0,v0,0x13
  4a71bc:	00621025 	or	v0,v1,v0
  4a71c0:	afc20018 	sw	v0,24(s8)
  4a71c4:	8fc20020 	lw	v0,32(s8)
  4a71c8:	00000000 	nop
  4a71cc:	000218c0 	sll	v1,v0,0x3
  4a71d0:	00021742 	srl	v0,v0,0x1d
  4a71d4:	00621025 	or	v0,v1,v0
  4a71d8:	afc20020 	sw	v0,32(s8)
  4a71dc:	8fc30014 	lw	v1,20(s8)
  4a71e0:	8fc20020 	lw	v0,32(s8)
  4a71e4:	00000000 	nop
  4a71e8:	00621026 	xor	v0,v1,v0
  4a71ec:	afc20014 	sw	v0,20(s8)
  4a71f0:	8fc20018 	lw	v0,24(s8)
  4a71f4:	00000000 	nop
  4a71f8:	000210c0 	sll	v0,v0,0x3
  4a71fc:	afc2001c 	sw	v0,28(s8)
  4a7200:	8fc30024 	lw	v1,36(s8)
  4a7204:	8fc20018 	lw	v0,24(s8)
  4a7208:	00000000 	nop
  4a720c:	00621026 	xor	v0,v1,v0
  4a7210:	afc20024 	sw	v0,36(s8)
  4a7214:	8fc30014 	lw	v1,20(s8)
  4a7218:	8fc2001c 	lw	v0,28(s8)
  4a721c:	00000000 	nop
  4a7220:	00621026 	xor	v0,v1,v0
  4a7224:	afc20014 	sw	v0,20(s8)
  4a7228:	8fc30024 	lw	v1,36(s8)
  4a722c:	8fc20020 	lw	v0,32(s8)
  4a7230:	00000000 	nop
  4a7234:	00621026 	xor	v0,v1,v0
  4a7238:	afc20024 	sw	v0,36(s8)
  4a723c:	8fc20014 	lw	v0,20(s8)
  4a7240:	00000000 	nop
  4a7244:	000219c0 	sll	v1,v0,0x7
  4a7248:	00021642 	srl	v0,v0,0x19
  4a724c:	00621025 	or	v0,v1,v0
  4a7250:	afc20014 	sw	v0,20(s8)
  4a7254:	8fc20024 	lw	v0,36(s8)
  4a7258:	00000000 	nop
  4a725c:	00021840 	sll	v1,v0,0x1
  4a7260:	000217c2 	srl	v0,v0,0x1f
  4a7264:	00621025 	or	v0,v1,v0
  4a7268:	afc20024 	sw	v0,36(s8)
  4a726c:	8fc30020 	lw	v1,32(s8)
  4a7270:	8fc20014 	lw	v0,20(s8)
  4a7274:	00000000 	nop
  4a7278:	00621026 	xor	v0,v1,v0
  4a727c:	afc20020 	sw	v0,32(s8)
  4a7280:	8fc20024 	lw	v0,36(s8)
  4a7284:	00000000 	nop
  4a7288:	000211c0 	sll	v0,v0,0x7
  4a728c:	afc2001c 	sw	v0,28(s8)
  4a7290:	8fc30018 	lw	v1,24(s8)
  4a7294:	8fc20024 	lw	v0,36(s8)
  4a7298:	00000000 	nop
  4a729c:	00621026 	xor	v0,v1,v0
  4a72a0:	afc20018 	sw	v0,24(s8)
  4a72a4:	8fc30020 	lw	v1,32(s8)
  4a72a8:	8fc2001c 	lw	v0,28(s8)
  4a72ac:	00000000 	nop
  4a72b0:	00621026 	xor	v0,v1,v0
  4a72b4:	afc20020 	sw	v0,32(s8)
  4a72b8:	8fc30018 	lw	v1,24(s8)
  4a72bc:	8fc20014 	lw	v0,20(s8)
  4a72c0:	00000000 	nop
  4a72c4:	00621026 	xor	v0,v1,v0
  4a72c8:	afc20018 	sw	v0,24(s8)
  4a72cc:	8fc20020 	lw	v0,32(s8)
  4a72d0:	00000000 	nop
  4a72d4:	00021d80 	sll	v1,v0,0x16
  4a72d8:	00021282 	srl	v0,v0,0xa
  4a72dc:	00621025 	or	v0,v1,v0
  4a72e0:	afc20020 	sw	v0,32(s8)
  4a72e4:	8fc20018 	lw	v0,24(s8)
  4a72e8:	00000000 	nop
  4a72ec:	00021940 	sll	v1,v0,0x5
  4a72f0:	000216c2 	srl	v0,v0,0x1b
  4a72f4:	00621025 	or	v0,v1,v0
  4a72f8:	afc20018 	sw	v0,24(s8)

      /* round 5  */
      KEYMIX(r1,r4,r3,r0,r2,16);
  4a72fc:	8fc20008 	lw	v0,8(s8)
  4a7300:	00000000 	nop
  4a7304:	24420060 	addiu	v0,v0,96
  4a7308:	8c430000 	lw	v1,0(v0)
  4a730c:	8fc20018 	lw	v0,24(s8)
  4a7310:	00000000 	nop
  4a7314:	00431026 	xor	v0,v0,v1
  4a7318:	afc20018 	sw	v0,24(s8)
  4a731c:	8fc20008 	lw	v0,8(s8)
  4a7320:	00000000 	nop
  4a7324:	24420064 	addiu	v0,v0,100
  4a7328:	8c430000 	lw	v1,0(v0)
  4a732c:	8fc20024 	lw	v0,36(s8)
  4a7330:	00000000 	nop
  4a7334:	00431026 	xor	v0,v0,v1
  4a7338:	afc20024 	sw	v0,36(s8)
  4a733c:	8fc20008 	lw	v0,8(s8)
  4a7340:	00000000 	nop
  4a7344:	24420068 	addiu	v0,v0,104
  4a7348:	8c430000 	lw	v1,0(v0)
  4a734c:	8fc20020 	lw	v0,32(s8)
  4a7350:	00000000 	nop
  4a7354:	00431026 	xor	v0,v0,v1
  4a7358:	afc20020 	sw	v0,32(s8)
  4a735c:	8fc20008 	lw	v0,8(s8)
  4a7360:	00000000 	nop
  4a7364:	2442006c 	addiu	v0,v0,108
  4a7368:	8c430000 	lw	v1,0(v0)
  4a736c:	8fc20014 	lw	v0,20(s8)
  4a7370:	00000000 	nop
  4a7374:	00431026 	xor	v0,v0,v1
  4a7378:	afc20014 	sw	v0,20(s8)
      S4(r1,r4,r3,r0,r2) 
  4a737c:	8fc30024 	lw	v1,36(s8)
  4a7380:	8fc20014 	lw	v0,20(s8)
  4a7384:	00000000 	nop
  4a7388:	00621026 	xor	v0,v1,v0
  4a738c:	afc20024 	sw	v0,36(s8)
  4a7390:	8fc20014 	lw	v0,20(s8)
  4a7394:	00000000 	nop
  4a7398:	00021027 	nor	v0,zero,v0
  4a739c:	afc20014 	sw	v0,20(s8)
  4a73a0:	8fc30020 	lw	v1,32(s8)
  4a73a4:	8fc20014 	lw	v0,20(s8)
  4a73a8:	00000000 	nop
  4a73ac:	00621026 	xor	v0,v1,v0
  4a73b0:	afc20020 	sw	v0,32(s8)
  4a73b4:	8fc30014 	lw	v1,20(s8)
  4a73b8:	8fc20018 	lw	v0,24(s8)
  4a73bc:	00000000 	nop
  4a73c0:	00621026 	xor	v0,v1,v0
  4a73c4:	afc20014 	sw	v0,20(s8)
  4a73c8:	8fc20024 	lw	v0,36(s8)
  4a73cc:	00000000 	nop
  4a73d0:	afc2001c 	sw	v0,28(s8)
  4a73d4:	8fc30024 	lw	v1,36(s8)
  4a73d8:	8fc20014 	lw	v0,20(s8)
  4a73dc:	00000000 	nop
  4a73e0:	00621024 	and	v0,v1,v0
  4a73e4:	afc20024 	sw	v0,36(s8)
  4a73e8:	8fc30024 	lw	v1,36(s8)
  4a73ec:	8fc20020 	lw	v0,32(s8)
  4a73f0:	00000000 	nop
  4a73f4:	00621026 	xor	v0,v1,v0
  4a73f8:	afc20024 	sw	v0,36(s8)
  4a73fc:	8fc3001c 	lw	v1,28(s8)
  4a7400:	8fc20014 	lw	v0,20(s8)
  4a7404:	00000000 	nop
  4a7408:	00621026 	xor	v0,v1,v0
  4a740c:	afc2001c 	sw	v0,28(s8)
  4a7410:	8fc30018 	lw	v1,24(s8)
  4a7414:	8fc2001c 	lw	v0,28(s8)
  4a7418:	00000000 	nop
  4a741c:	00621026 	xor	v0,v1,v0
  4a7420:	afc20018 	sw	v0,24(s8)
  4a7424:	8fc30020 	lw	v1,32(s8)
  4a7428:	8fc2001c 	lw	v0,28(s8)
  4a742c:	00000000 	nop
  4a7430:	00621024 	and	v0,v1,v0
  4a7434:	afc20020 	sw	v0,32(s8)
  4a7438:	8fc30020 	lw	v1,32(s8)
  4a743c:	8fc20018 	lw	v0,24(s8)
  4a7440:	00000000 	nop
  4a7444:	00621026 	xor	v0,v1,v0
  4a7448:	afc20020 	sw	v0,32(s8)
  4a744c:	8fc30018 	lw	v1,24(s8)
  4a7450:	8fc20024 	lw	v0,36(s8)
  4a7454:	00000000 	nop
  4a7458:	00621024 	and	v0,v1,v0
  4a745c:	afc20018 	sw	v0,24(s8)
  4a7460:	8fc30014 	lw	v1,20(s8)
  4a7464:	8fc20018 	lw	v0,24(s8)
  4a7468:	00000000 	nop
  4a746c:	00621026 	xor	v0,v1,v0
  4a7470:	afc20014 	sw	v0,20(s8)
  4a7474:	8fc3001c 	lw	v1,28(s8)
  4a7478:	8fc20024 	lw	v0,36(s8)
  4a747c:	00000000 	nop
  4a7480:	00621025 	or	v0,v1,v0
  4a7484:	afc2001c 	sw	v0,28(s8)
  4a7488:	8fc3001c 	lw	v1,28(s8)
  4a748c:	8fc20018 	lw	v0,24(s8)
  4a7490:	00000000 	nop
  4a7494:	00621026 	xor	v0,v1,v0
  4a7498:	afc2001c 	sw	v0,28(s8)
  4a749c:	8fc30018 	lw	v1,24(s8)
  4a74a0:	8fc20014 	lw	v0,20(s8)
  4a74a4:	00000000 	nop
  4a74a8:	00621025 	or	v0,v1,v0
  4a74ac:	afc20018 	sw	v0,24(s8)
  4a74b0:	8fc30018 	lw	v1,24(s8)
  4a74b4:	8fc20020 	lw	v0,32(s8)
  4a74b8:	00000000 	nop
  4a74bc:	00621026 	xor	v0,v1,v0
  4a74c0:	afc20018 	sw	v0,24(s8)
  4a74c4:	8fc30020 	lw	v1,32(s8)
  4a74c8:	8fc20014 	lw	v0,20(s8)
  4a74cc:	00000000 	nop
  4a74d0:	00621024 	and	v0,v1,v0
  4a74d4:	afc20020 	sw	v0,32(s8)
  4a74d8:	8fc20018 	lw	v0,24(s8)
  4a74dc:	00000000 	nop
  4a74e0:	00021027 	nor	v0,zero,v0
  4a74e4:	afc20018 	sw	v0,24(s8)
  4a74e8:	8fc3001c 	lw	v1,28(s8)
  4a74ec:	8fc20020 	lw	v0,32(s8)
  4a74f0:	00000000 	nop
  4a74f4:	00621026 	xor	v0,v1,v0
  4a74f8:	afc2001c 	sw	v0,28(s8)
      LINTRANS(r4,r2,r1,r0,r3);
  4a74fc:	8fc20024 	lw	v0,36(s8)
  4a7500:	00000000 	nop
  4a7504:	00021b40 	sll	v1,v0,0xd
  4a7508:	000214c2 	srl	v0,v0,0x13
  4a750c:	00621025 	or	v0,v1,v0
  4a7510:	afc20024 	sw	v0,36(s8)
  4a7514:	8fc20018 	lw	v0,24(s8)
  4a7518:	00000000 	nop
  4a751c:	000218c0 	sll	v1,v0,0x3
  4a7520:	00021742 	srl	v0,v0,0x1d
  4a7524:	00621025 	or	v0,v1,v0
  4a7528:	afc20018 	sw	v0,24(s8)
  4a752c:	8fc30014 	lw	v1,20(s8)
  4a7530:	8fc20018 	lw	v0,24(s8)
  4a7534:	00000000 	nop
  4a7538:	00621026 	xor	v0,v1,v0
  4a753c:	afc20014 	sw	v0,20(s8)
  4a7540:	8fc20024 	lw	v0,36(s8)
  4a7544:	00000000 	nop
  4a7548:	000210c0 	sll	v0,v0,0x3
  4a754c:	afc20020 	sw	v0,32(s8)
  4a7550:	8fc3001c 	lw	v1,28(s8)
  4a7554:	8fc20024 	lw	v0,36(s8)
  4a7558:	00000000 	nop
  4a755c:	00621026 	xor	v0,v1,v0
  4a7560:	afc2001c 	sw	v0,28(s8)
  4a7564:	8fc30014 	lw	v1,20(s8)
  4a7568:	8fc20020 	lw	v0,32(s8)
  4a756c:	00000000 	nop
  4a7570:	00621026 	xor	v0,v1,v0
  4a7574:	afc20014 	sw	v0,20(s8)
  4a7578:	8fc3001c 	lw	v1,28(s8)
  4a757c:	8fc20018 	lw	v0,24(s8)
  4a7580:	00000000 	nop
  4a7584:	00621026 	xor	v0,v1,v0
  4a7588:	afc2001c 	sw	v0,28(s8)
  4a758c:	8fc20014 	lw	v0,20(s8)
  4a7590:	00000000 	nop
  4a7594:	000219c0 	sll	v1,v0,0x7
  4a7598:	00021642 	srl	v0,v0,0x19
  4a759c:	00621025 	or	v0,v1,v0
  4a75a0:	afc20014 	sw	v0,20(s8)
  4a75a4:	8fc2001c 	lw	v0,28(s8)
  4a75a8:	00000000 	nop
  4a75ac:	00021840 	sll	v1,v0,0x1
  4a75b0:	000217c2 	srl	v0,v0,0x1f
  4a75b4:	00621025 	or	v0,v1,v0
  4a75b8:	afc2001c 	sw	v0,28(s8)
  4a75bc:	8fc30018 	lw	v1,24(s8)
  4a75c0:	8fc20014 	lw	v0,20(s8)
  4a75c4:	00000000 	nop
  4a75c8:	00621026 	xor	v0,v1,v0
  4a75cc:	afc20018 	sw	v0,24(s8)
  4a75d0:	8fc2001c 	lw	v0,28(s8)
  4a75d4:	00000000 	nop
  4a75d8:	000211c0 	sll	v0,v0,0x7
  4a75dc:	afc20020 	sw	v0,32(s8)
  4a75e0:	8fc30024 	lw	v1,36(s8)
  4a75e4:	8fc2001c 	lw	v0,28(s8)
  4a75e8:	00000000 	nop
  4a75ec:	00621026 	xor	v0,v1,v0
  4a75f0:	afc20024 	sw	v0,36(s8)
  4a75f4:	8fc30018 	lw	v1,24(s8)
  4a75f8:	8fc20020 	lw	v0,32(s8)
  4a75fc:	00000000 	nop
  4a7600:	00621026 	xor	v0,v1,v0
  4a7604:	afc20018 	sw	v0,24(s8)
  4a7608:	8fc30024 	lw	v1,36(s8)
  4a760c:	8fc20014 	lw	v0,20(s8)
  4a7610:	00000000 	nop
  4a7614:	00621026 	xor	v0,v1,v0
  4a7618:	afc20024 	sw	v0,36(s8)
  4a761c:	8fc20018 	lw	v0,24(s8)
  4a7620:	00000000 	nop
  4a7624:	00021d80 	sll	v1,v0,0x16
  4a7628:	00021282 	srl	v0,v0,0xa
  4a762c:	00621025 	or	v0,v1,v0
  4a7630:	afc20018 	sw	v0,24(s8)
  4a7634:	8fc20024 	lw	v0,36(s8)
  4a7638:	00000000 	nop
  4a763c:	00021940 	sll	v1,v0,0x5
  4a7640:	000216c2 	srl	v0,v0,0x1b
  4a7644:	00621025 	or	v0,v1,v0
  4a7648:	afc20024 	sw	v0,36(s8)

      /* round 6  */
      KEYMIX(r4,r2,r1,r0,r3,20);
  4a764c:	8fc20008 	lw	v0,8(s8)
  4a7650:	00000000 	nop
  4a7654:	24420070 	addiu	v0,v0,112
  4a7658:	8c430000 	lw	v1,0(v0)
  4a765c:	8fc20024 	lw	v0,36(s8)
  4a7660:	00000000 	nop
  4a7664:	00431026 	xor	v0,v0,v1
  4a7668:	afc20024 	sw	v0,36(s8)
  4a766c:	8fc20008 	lw	v0,8(s8)
  4a7670:	00000000 	nop
  4a7674:	24420074 	addiu	v0,v0,116
  4a7678:	8c430000 	lw	v1,0(v0)
  4a767c:	8fc2001c 	lw	v0,28(s8)
  4a7680:	00000000 	nop
  4a7684:	00431026 	xor	v0,v0,v1
  4a7688:	afc2001c 	sw	v0,28(s8)
  4a768c:	8fc20008 	lw	v0,8(s8)
  4a7690:	00000000 	nop
  4a7694:	24420078 	addiu	v0,v0,120
  4a7698:	8c430000 	lw	v1,0(v0)
  4a769c:	8fc20018 	lw	v0,24(s8)
  4a76a0:	00000000 	nop
  4a76a4:	00431026 	xor	v0,v0,v1
  4a76a8:	afc20018 	sw	v0,24(s8)
  4a76ac:	8fc20008 	lw	v0,8(s8)
  4a76b0:	00000000 	nop
  4a76b4:	2442007c 	addiu	v0,v0,124
  4a76b8:	8c430000 	lw	v1,0(v0)
  4a76bc:	8fc20014 	lw	v0,20(s8)
  4a76c0:	00000000 	nop
  4a76c4:	00431026 	xor	v0,v0,v1
  4a76c8:	afc20014 	sw	v0,20(s8)
      S5(r4,r2,r1,r0,r3);
  4a76cc:	8fc30024 	lw	v1,36(s8)
  4a76d0:	8fc2001c 	lw	v0,28(s8)
  4a76d4:	00000000 	nop
  4a76d8:	00621026 	xor	v0,v1,v0
  4a76dc:	afc20024 	sw	v0,36(s8)
  4a76e0:	8fc3001c 	lw	v1,28(s8)
  4a76e4:	8fc20014 	lw	v0,20(s8)
  4a76e8:	00000000 	nop
  4a76ec:	00621026 	xor	v0,v1,v0
  4a76f0:	afc2001c 	sw	v0,28(s8)
  4a76f4:	8fc20014 	lw	v0,20(s8)
  4a76f8:	00000000 	nop
  4a76fc:	00021027 	nor	v0,zero,v0
  4a7700:	afc20014 	sw	v0,20(s8)
  4a7704:	8fc2001c 	lw	v0,28(s8)
  4a7708:	00000000 	nop
  4a770c:	afc20020 	sw	v0,32(s8)
  4a7710:	8fc3001c 	lw	v1,28(s8)
  4a7714:	8fc20024 	lw	v0,36(s8)
  4a7718:	00000000 	nop
  4a771c:	00621024 	and	v0,v1,v0
  4a7720:	afc2001c 	sw	v0,28(s8)
  4a7724:	8fc30018 	lw	v1,24(s8)
  4a7728:	8fc20014 	lw	v0,20(s8)
  4a772c:	00000000 	nop
  4a7730:	00621026 	xor	v0,v1,v0
  4a7734:	afc20018 	sw	v0,24(s8)
  4a7738:	8fc3001c 	lw	v1,28(s8)
  4a773c:	8fc20018 	lw	v0,24(s8)
  4a7740:	00000000 	nop
  4a7744:	00621026 	xor	v0,v1,v0
  4a7748:	afc2001c 	sw	v0,28(s8)
  4a774c:	8fc30018 	lw	v1,24(s8)
  4a7750:	8fc20020 	lw	v0,32(s8)
  4a7754:	00000000 	nop
  4a7758:	00621025 	or	v0,v1,v0
  4a775c:	afc20018 	sw	v0,24(s8)
  4a7760:	8fc30020 	lw	v1,32(s8)
  4a7764:	8fc20014 	lw	v0,20(s8)
  4a7768:	00000000 	nop
  4a776c:	00621026 	xor	v0,v1,v0
  4a7770:	afc20020 	sw	v0,32(s8)
  4a7774:	8fc30014 	lw	v1,20(s8)
  4a7778:	8fc2001c 	lw	v0,28(s8)
  4a777c:	00000000 	nop
  4a7780:	00621024 	and	v0,v1,v0
  4a7784:	afc20014 	sw	v0,20(s8)
  4a7788:	8fc30014 	lw	v1,20(s8)
  4a778c:	8fc20024 	lw	v0,36(s8)
  4a7790:	00000000 	nop
  4a7794:	00621026 	xor	v0,v1,v0
  4a7798:	afc20014 	sw	v0,20(s8)
  4a779c:	8fc30020 	lw	v1,32(s8)
  4a77a0:	8fc2001c 	lw	v0,28(s8)
  4a77a4:	00000000 	nop
  4a77a8:	00621026 	xor	v0,v1,v0
  4a77ac:	afc20020 	sw	v0,32(s8)
  4a77b0:	8fc30020 	lw	v1,32(s8)
  4a77b4:	8fc20018 	lw	v0,24(s8)
  4a77b8:	00000000 	nop
  4a77bc:	00621026 	xor	v0,v1,v0
  4a77c0:	afc20020 	sw	v0,32(s8)
  4a77c4:	8fc30018 	lw	v1,24(s8)
  4a77c8:	8fc20024 	lw	v0,36(s8)
  4a77cc:	00000000 	nop
  4a77d0:	00621026 	xor	v0,v1,v0
  4a77d4:	afc20018 	sw	v0,24(s8)
  4a77d8:	8fc30024 	lw	v1,36(s8)
  4a77dc:	8fc20014 	lw	v0,20(s8)
  4a77e0:	00000000 	nop
  4a77e4:	00621024 	and	v0,v1,v0
  4a77e8:	afc20024 	sw	v0,36(s8)
  4a77ec:	8fc20018 	lw	v0,24(s8)
  4a77f0:	00000000 	nop
  4a77f4:	00021027 	nor	v0,zero,v0
  4a77f8:	afc20018 	sw	v0,24(s8)
  4a77fc:	8fc30024 	lw	v1,36(s8)
  4a7800:	8fc20020 	lw	v0,32(s8)
  4a7804:	00000000 	nop
  4a7808:	00621026 	xor	v0,v1,v0
  4a780c:	afc20024 	sw	v0,36(s8)
  4a7810:	8fc30020 	lw	v1,32(s8)
  4a7814:	8fc20014 	lw	v0,20(s8)
  4a7818:	00000000 	nop
  4a781c:	00621025 	or	v0,v1,v0
  4a7820:	afc20020 	sw	v0,32(s8)
  4a7824:	8fc30018 	lw	v1,24(s8)
  4a7828:	8fc20020 	lw	v0,32(s8)
  4a782c:	00000000 	nop
  4a7830:	00621026 	xor	v0,v1,v0
  4a7834:	afc20018 	sw	v0,24(s8)
      LINTRANS(r2,r0,r4,r1,r3);
  4a7838:	8fc2001c 	lw	v0,28(s8)
  4a783c:	00000000 	nop
  4a7840:	00021b40 	sll	v1,v0,0xd
  4a7844:	000214c2 	srl	v0,v0,0x13
  4a7848:	00621025 	or	v0,v1,v0
  4a784c:	afc2001c 	sw	v0,28(s8)
  4a7850:	8fc20024 	lw	v0,36(s8)
  4a7854:	00000000 	nop
  4a7858:	000218c0 	sll	v1,v0,0x3
  4a785c:	00021742 	srl	v0,v0,0x1d
  4a7860:	00621025 	or	v0,v1,v0
  4a7864:	afc20024 	sw	v0,36(s8)
  4a7868:	8fc30018 	lw	v1,24(s8)
  4a786c:	8fc20024 	lw	v0,36(s8)
  4a7870:	00000000 	nop
  4a7874:	00621026 	xor	v0,v1,v0
  4a7878:	afc20018 	sw	v0,24(s8)
  4a787c:	8fc2001c 	lw	v0,28(s8)
  4a7880:	00000000 	nop
  4a7884:	000210c0 	sll	v0,v0,0x3
  4a7888:	afc20020 	sw	v0,32(s8)
  4a788c:	8fc30014 	lw	v1,20(s8)
  4a7890:	8fc2001c 	lw	v0,28(s8)
  4a7894:	00000000 	nop
  4a7898:	00621026 	xor	v0,v1,v0
  4a789c:	afc20014 	sw	v0,20(s8)
  4a78a0:	8fc30018 	lw	v1,24(s8)
  4a78a4:	8fc20020 	lw	v0,32(s8)
  4a78a8:	00000000 	nop
  4a78ac:	00621026 	xor	v0,v1,v0
  4a78b0:	afc20018 	sw	v0,24(s8)
  4a78b4:	8fc30014 	lw	v1,20(s8)
  4a78b8:	8fc20024 	lw	v0,36(s8)
  4a78bc:	00000000 	nop
  4a78c0:	00621026 	xor	v0,v1,v0
  4a78c4:	afc20014 	sw	v0,20(s8)
  4a78c8:	8fc20018 	lw	v0,24(s8)
  4a78cc:	00000000 	nop
  4a78d0:	000219c0 	sll	v1,v0,0x7
  4a78d4:	00021642 	srl	v0,v0,0x19
  4a78d8:	00621025 	or	v0,v1,v0
  4a78dc:	afc20018 	sw	v0,24(s8)
  4a78e0:	8fc20014 	lw	v0,20(s8)
  4a78e4:	00000000 	nop
  4a78e8:	00021840 	sll	v1,v0,0x1
  4a78ec:	000217c2 	srl	v0,v0,0x1f
  4a78f0:	00621025 	or	v0,v1,v0
  4a78f4:	afc20014 	sw	v0,20(s8)
  4a78f8:	8fc30024 	lw	v1,36(s8)
  4a78fc:	8fc20018 	lw	v0,24(s8)
  4a7900:	00000000 	nop
  4a7904:	00621026 	xor	v0,v1,v0
  4a7908:	afc20024 	sw	v0,36(s8)
  4a790c:	8fc20014 	lw	v0,20(s8)
  4a7910:	00000000 	nop
  4a7914:	000211c0 	sll	v0,v0,0x7
  4a7918:	afc20020 	sw	v0,32(s8)
  4a791c:	8fc3001c 	lw	v1,28(s8)
  4a7920:	8fc20014 	lw	v0,20(s8)
  4a7924:	00000000 	nop
  4a7928:	00621026 	xor	v0,v1,v0
  4a792c:	afc2001c 	sw	v0,28(s8)
  4a7930:	8fc30024 	lw	v1,36(s8)
  4a7934:	8fc20020 	lw	v0,32(s8)
  4a7938:	00000000 	nop
  4a793c:	00621026 	xor	v0,v1,v0
  4a7940:	afc20024 	sw	v0,36(s8)
  4a7944:	8fc3001c 	lw	v1,28(s8)
  4a7948:	8fc20018 	lw	v0,24(s8)
  4a794c:	00000000 	nop
  4a7950:	00621026 	xor	v0,v1,v0
  4a7954:	afc2001c 	sw	v0,28(s8)
  4a7958:	8fc20024 	lw	v0,36(s8)
  4a795c:	00000000 	nop
  4a7960:	00021d80 	sll	v1,v0,0x16
  4a7964:	00021282 	srl	v0,v0,0xa
  4a7968:	00621025 	or	v0,v1,v0
  4a796c:	afc20024 	sw	v0,36(s8)
  4a7970:	8fc2001c 	lw	v0,28(s8)
  4a7974:	00000000 	nop
  4a7978:	00021940 	sll	v1,v0,0x5
  4a797c:	000216c2 	srl	v0,v0,0x1b
  4a7980:	00621025 	or	v0,v1,v0
  4a7984:	afc2001c 	sw	v0,28(s8)

      /* round 7  */
      KEYMIX(r2,r0,r4,r1,r3,24);
  4a7988:	8fc20008 	lw	v0,8(s8)
  4a798c:	00000000 	nop
  4a7990:	24420080 	addiu	v0,v0,128
  4a7994:	8c430000 	lw	v1,0(v0)
  4a7998:	8fc2001c 	lw	v0,28(s8)
  4a799c:	00000000 	nop
  4a79a0:	00431026 	xor	v0,v0,v1
  4a79a4:	afc2001c 	sw	v0,28(s8)
  4a79a8:	8fc20008 	lw	v0,8(s8)
  4a79ac:	00000000 	nop
  4a79b0:	24420084 	addiu	v0,v0,132
  4a79b4:	8c430000 	lw	v1,0(v0)
  4a79b8:	8fc20014 	lw	v0,20(s8)
  4a79bc:	00000000 	nop
  4a79c0:	00431026 	xor	v0,v0,v1
  4a79c4:	afc20014 	sw	v0,20(s8)
  4a79c8:	8fc20008 	lw	v0,8(s8)
  4a79cc:	00000000 	nop
  4a79d0:	24420088 	addiu	v0,v0,136
  4a79d4:	8c430000 	lw	v1,0(v0)
  4a79d8:	8fc20024 	lw	v0,36(s8)
  4a79dc:	00000000 	nop
  4a79e0:	00431026 	xor	v0,v0,v1
  4a79e4:	afc20024 	sw	v0,36(s8)
  4a79e8:	8fc20008 	lw	v0,8(s8)
  4a79ec:	00000000 	nop
  4a79f0:	2442008c 	addiu	v0,v0,140
  4a79f4:	8c430000 	lw	v1,0(v0)
  4a79f8:	8fc20018 	lw	v0,24(s8)
  4a79fc:	00000000 	nop
  4a7a00:	00431026 	xor	v0,v0,v1
  4a7a04:	afc20018 	sw	v0,24(s8)
      S6(r2,r0,r4,r1,r3) 
  4a7a08:	8fc20024 	lw	v0,36(s8)
  4a7a0c:	00000000 	nop
  4a7a10:	00021027 	nor	v0,zero,v0
  4a7a14:	afc20024 	sw	v0,36(s8)
  4a7a18:	8fc20018 	lw	v0,24(s8)
  4a7a1c:	00000000 	nop
  4a7a20:	afc20020 	sw	v0,32(s8)
  4a7a24:	8fc30018 	lw	v1,24(s8)
  4a7a28:	8fc2001c 	lw	v0,28(s8)
  4a7a2c:	00000000 	nop
  4a7a30:	00621024 	and	v0,v1,v0
  4a7a34:	afc20018 	sw	v0,24(s8)
  4a7a38:	8fc3001c 	lw	v1,28(s8)
  4a7a3c:	8fc20020 	lw	v0,32(s8)
  4a7a40:	00000000 	nop
  4a7a44:	00621026 	xor	v0,v1,v0
  4a7a48:	afc2001c 	sw	v0,28(s8)
  4a7a4c:	8fc30018 	lw	v1,24(s8)
  4a7a50:	8fc20024 	lw	v0,36(s8)
  4a7a54:	00000000 	nop
  4a7a58:	00621026 	xor	v0,v1,v0
  4a7a5c:	afc20018 	sw	v0,24(s8)
  4a7a60:	8fc30024 	lw	v1,36(s8)
  4a7a64:	8fc20020 	lw	v0,32(s8)
  4a7a68:	00000000 	nop
  4a7a6c:	00621025 	or	v0,v1,v0
  4a7a70:	afc20024 	sw	v0,36(s8)
  4a7a74:	8fc30014 	lw	v1,20(s8)
  4a7a78:	8fc20018 	lw	v0,24(s8)
  4a7a7c:	00000000 	nop
  4a7a80:	00621026 	xor	v0,v1,v0
  4a7a84:	afc20014 	sw	v0,20(s8)
  4a7a88:	8fc30024 	lw	v1,36(s8)
  4a7a8c:	8fc2001c 	lw	v0,28(s8)
  4a7a90:	00000000 	nop
  4a7a94:	00621026 	xor	v0,v1,v0
  4a7a98:	afc20024 	sw	v0,36(s8)
  4a7a9c:	8fc3001c 	lw	v1,28(s8)
  4a7aa0:	8fc20014 	lw	v0,20(s8)
  4a7aa4:	00000000 	nop
  4a7aa8:	00621025 	or	v0,v1,v0
  4a7aac:	afc2001c 	sw	v0,28(s8)
  4a7ab0:	8fc30024 	lw	v1,36(s8)
  4a7ab4:	8fc20014 	lw	v0,20(s8)
  4a7ab8:	00000000 	nop
  4a7abc:	00621026 	xor	v0,v1,v0
  4a7ac0:	afc20024 	sw	v0,36(s8)
  4a7ac4:	8fc30020 	lw	v1,32(s8)
  4a7ac8:	8fc2001c 	lw	v0,28(s8)
  4a7acc:	00000000 	nop
  4a7ad0:	00621026 	xor	v0,v1,v0
  4a7ad4:	afc20020 	sw	v0,32(s8)
  4a7ad8:	8fc3001c 	lw	v1,28(s8)
  4a7adc:	8fc20018 	lw	v0,24(s8)
  4a7ae0:	00000000 	nop
  4a7ae4:	00621025 	or	v0,v1,v0
  4a7ae8:	afc2001c 	sw	v0,28(s8)
  4a7aec:	8fc3001c 	lw	v1,28(s8)
  4a7af0:	8fc20024 	lw	v0,36(s8)
  4a7af4:	00000000 	nop
  4a7af8:	00621026 	xor	v0,v1,v0
  4a7afc:	afc2001c 	sw	v0,28(s8)
  4a7b00:	8fc30020 	lw	v1,32(s8)
  4a7b04:	8fc20018 	lw	v0,24(s8)
  4a7b08:	00000000 	nop
  4a7b0c:	00621026 	xor	v0,v1,v0
  4a7b10:	afc20020 	sw	v0,32(s8)
  4a7b14:	8fc30020 	lw	v1,32(s8)
  4a7b18:	8fc2001c 	lw	v0,28(s8)
  4a7b1c:	00000000 	nop
  4a7b20:	00621026 	xor	v0,v1,v0
  4a7b24:	afc20020 	sw	v0,32(s8)
  4a7b28:	8fc20018 	lw	v0,24(s8)
  4a7b2c:	00000000 	nop
  4a7b30:	00021027 	nor	v0,zero,v0
  4a7b34:	afc20018 	sw	v0,24(s8)
  4a7b38:	8fc30024 	lw	v1,36(s8)
  4a7b3c:	8fc20020 	lw	v0,32(s8)
  4a7b40:	00000000 	nop
  4a7b44:	00621024 	and	v0,v1,v0
  4a7b48:	afc20024 	sw	v0,36(s8)
  4a7b4c:	8fc30024 	lw	v1,36(s8)
  4a7b50:	8fc20018 	lw	v0,24(s8)
  4a7b54:	00000000 	nop
  4a7b58:	00621026 	xor	v0,v1,v0
  4a7b5c:	afc20024 	sw	v0,36(s8)
      LINTRANS(r2,r0,r3,r4,r1);
  4a7b60:	8fc2001c 	lw	v0,28(s8)
  4a7b64:	00000000 	nop
  4a7b68:	00021b40 	sll	v1,v0,0xd
  4a7b6c:	000214c2 	srl	v0,v0,0x13
  4a7b70:	00621025 	or	v0,v1,v0
  4a7b74:	afc2001c 	sw	v0,28(s8)
  4a7b78:	8fc20020 	lw	v0,32(s8)
  4a7b7c:	00000000 	nop
  4a7b80:	000218c0 	sll	v1,v0,0x3
  4a7b84:	00021742 	srl	v0,v0,0x1d
  4a7b88:	00621025 	or	v0,v1,v0
  4a7b8c:	afc20020 	sw	v0,32(s8)
  4a7b90:	8fc30024 	lw	v1,36(s8)
  4a7b94:	8fc20020 	lw	v0,32(s8)
  4a7b98:	00000000 	nop
  4a7b9c:	00621026 	xor	v0,v1,v0
  4a7ba0:	afc20024 	sw	v0,36(s8)
  4a7ba4:	8fc2001c 	lw	v0,28(s8)
  4a7ba8:	00000000 	nop
  4a7bac:	000210c0 	sll	v0,v0,0x3
  4a7bb0:	afc20018 	sw	v0,24(s8)
  4a7bb4:	8fc30014 	lw	v1,20(s8)
  4a7bb8:	8fc2001c 	lw	v0,28(s8)
  4a7bbc:	00000000 	nop
  4a7bc0:	00621026 	xor	v0,v1,v0
  4a7bc4:	afc20014 	sw	v0,20(s8)
  4a7bc8:	8fc30024 	lw	v1,36(s8)
  4a7bcc:	8fc20018 	lw	v0,24(s8)
  4a7bd0:	00000000 	nop
  4a7bd4:	00621026 	xor	v0,v1,v0
  4a7bd8:	afc20024 	sw	v0,36(s8)
  4a7bdc:	8fc30014 	lw	v1,20(s8)
  4a7be0:	8fc20020 	lw	v0,32(s8)
  4a7be4:	00000000 	nop
  4a7be8:	00621026 	xor	v0,v1,v0
  4a7bec:	afc20014 	sw	v0,20(s8)
  4a7bf0:	8fc20024 	lw	v0,36(s8)
  4a7bf4:	00000000 	nop
  4a7bf8:	000219c0 	sll	v1,v0,0x7
  4a7bfc:	00021642 	srl	v0,v0,0x19
  4a7c00:	00621025 	or	v0,v1,v0
  4a7c04:	afc20024 	sw	v0,36(s8)
  4a7c08:	8fc20014 	lw	v0,20(s8)
  4a7c0c:	00000000 	nop
  4a7c10:	00021840 	sll	v1,v0,0x1
  4a7c14:	000217c2 	srl	v0,v0,0x1f
  4a7c18:	00621025 	or	v0,v1,v0
  4a7c1c:	afc20014 	sw	v0,20(s8)
  4a7c20:	8fc30020 	lw	v1,32(s8)
  4a7c24:	8fc20024 	lw	v0,36(s8)
  4a7c28:	00000000 	nop
  4a7c2c:	00621026 	xor	v0,v1,v0
  4a7c30:	afc20020 	sw	v0,32(s8)
  4a7c34:	8fc20014 	lw	v0,20(s8)
  4a7c38:	00000000 	nop
  4a7c3c:	000211c0 	sll	v0,v0,0x7
  4a7c40:	afc20018 	sw	v0,24(s8)
  4a7c44:	8fc3001c 	lw	v1,28(s8)
  4a7c48:	8fc20014 	lw	v0,20(s8)
  4a7c4c:	00000000 	nop
  4a7c50:	00621026 	xor	v0,v1,v0
  4a7c54:	afc2001c 	sw	v0,28(s8)
  4a7c58:	8fc30020 	lw	v1,32(s8)
  4a7c5c:	8fc20018 	lw	v0,24(s8)
  4a7c60:	00000000 	nop
  4a7c64:	00621026 	xor	v0,v1,v0
  4a7c68:	afc20020 	sw	v0,32(s8)
  4a7c6c:	8fc3001c 	lw	v1,28(s8)
  4a7c70:	8fc20024 	lw	v0,36(s8)
  4a7c74:	00000000 	nop
  4a7c78:	00621026 	xor	v0,v1,v0
  4a7c7c:	afc2001c 	sw	v0,28(s8)
  4a7c80:	8fc20020 	lw	v0,32(s8)
  4a7c84:	00000000 	nop
  4a7c88:	00021d80 	sll	v1,v0,0x16
  4a7c8c:	00021282 	srl	v0,v0,0xa
  4a7c90:	00621025 	or	v0,v1,v0
  4a7c94:	afc20020 	sw	v0,32(s8)
  4a7c98:	8fc2001c 	lw	v0,28(s8)
  4a7c9c:	00000000 	nop
  4a7ca0:	00021940 	sll	v1,v0,0x5
  4a7ca4:	000216c2 	srl	v0,v0,0x1b
  4a7ca8:	00621025 	or	v0,v1,v0
  4a7cac:	afc2001c 	sw	v0,28(s8)

      /* round 8  */
      KEYMIX(r2,r0,r3,r4,r1,28);
  4a7cb0:	8fc20008 	lw	v0,8(s8)
  4a7cb4:	00000000 	nop
  4a7cb8:	24420090 	addiu	v0,v0,144
  4a7cbc:	8c430000 	lw	v1,0(v0)
  4a7cc0:	8fc2001c 	lw	v0,28(s8)
  4a7cc4:	00000000 	nop
  4a7cc8:	00431026 	xor	v0,v0,v1
  4a7ccc:	afc2001c 	sw	v0,28(s8)
  4a7cd0:	8fc20008 	lw	v0,8(s8)
  4a7cd4:	00000000 	nop
  4a7cd8:	24420094 	addiu	v0,v0,148
  4a7cdc:	8c430000 	lw	v1,0(v0)
  4a7ce0:	8fc20014 	lw	v0,20(s8)
  4a7ce4:	00000000 	nop
  4a7ce8:	00431026 	xor	v0,v0,v1
  4a7cec:	afc20014 	sw	v0,20(s8)
  4a7cf0:	8fc20008 	lw	v0,8(s8)
  4a7cf4:	00000000 	nop
  4a7cf8:	24420098 	addiu	v0,v0,152
  4a7cfc:	8c430000 	lw	v1,0(v0)
  4a7d00:	8fc20020 	lw	v0,32(s8)
  4a7d04:	00000000 	nop
  4a7d08:	00431026 	xor	v0,v0,v1
  4a7d0c:	afc20020 	sw	v0,32(s8)
  4a7d10:	8fc20008 	lw	v0,8(s8)
  4a7d14:	00000000 	nop
  4a7d18:	2442009c 	addiu	v0,v0,156
  4a7d1c:	8c430000 	lw	v1,0(v0)
  4a7d20:	8fc20024 	lw	v0,36(s8)
  4a7d24:	00000000 	nop
  4a7d28:	00431026 	xor	v0,v0,v1
  4a7d2c:	afc20024 	sw	v0,36(s8)
      S7(r2,r0,r3,r4,r1);
  4a7d30:	8fc20020 	lw	v0,32(s8)
  4a7d34:	00000000 	nop
  4a7d38:	afc20018 	sw	v0,24(s8)
  4a7d3c:	8fc30020 	lw	v1,32(s8)
  4a7d40:	8fc20014 	lw	v0,20(s8)
  4a7d44:	00000000 	nop
  4a7d48:	00621024 	and	v0,v1,v0
  4a7d4c:	afc20020 	sw	v0,32(s8)
  4a7d50:	8fc30020 	lw	v1,32(s8)
  4a7d54:	8fc20024 	lw	v0,36(s8)
  4a7d58:	00000000 	nop
  4a7d5c:	00621026 	xor	v0,v1,v0
  4a7d60:	afc20020 	sw	v0,32(s8)
  4a7d64:	8fc30024 	lw	v1,36(s8)
  4a7d68:	8fc20014 	lw	v0,20(s8)
  4a7d6c:	00000000 	nop
  4a7d70:	00621024 	and	v0,v1,v0
  4a7d74:	afc20024 	sw	v0,36(s8)
  4a7d78:	8fc30018 	lw	v1,24(s8)
  4a7d7c:	8fc20020 	lw	v0,32(s8)
  4a7d80:	00000000 	nop
  4a7d84:	00621026 	xor	v0,v1,v0
  4a7d88:	afc20018 	sw	v0,24(s8)
  4a7d8c:	8fc30020 	lw	v1,32(s8)
  4a7d90:	8fc20014 	lw	v0,20(s8)
  4a7d94:	00000000 	nop
  4a7d98:	00621026 	xor	v0,v1,v0
  4a7d9c:	afc20020 	sw	v0,32(s8)
  4a7da0:	8fc30014 	lw	v1,20(s8)
  4a7da4:	8fc2001c 	lw	v0,28(s8)
  4a7da8:	00000000 	nop
  4a7dac:	00621026 	xor	v0,v1,v0
  4a7db0:	afc20014 	sw	v0,20(s8)
  4a7db4:	8fc3001c 	lw	v1,28(s8)
  4a7db8:	8fc20018 	lw	v0,24(s8)
  4a7dbc:	00000000 	nop
  4a7dc0:	00621025 	or	v0,v1,v0
  4a7dc4:	afc2001c 	sw	v0,28(s8)
  4a7dc8:	8fc3001c 	lw	v1,28(s8)
  4a7dcc:	8fc20020 	lw	v0,32(s8)
  4a7dd0:	00000000 	nop
  4a7dd4:	00621026 	xor	v0,v1,v0
  4a7dd8:	afc2001c 	sw	v0,28(s8)
  4a7ddc:	8fc30024 	lw	v1,36(s8)
  4a7de0:	8fc20014 	lw	v0,20(s8)
  4a7de4:	00000000 	nop
  4a7de8:	00621026 	xor	v0,v1,v0
  4a7dec:	afc20024 	sw	v0,36(s8)
  4a7df0:	8fc30020 	lw	v1,32(s8)
  4a7df4:	8fc20024 	lw	v0,36(s8)
  4a7df8:	00000000 	nop
  4a7dfc:	00621026 	xor	v0,v1,v0
  4a7e00:	afc20020 	sw	v0,32(s8)
  4a7e04:	8fc30024 	lw	v1,36(s8)
  4a7e08:	8fc2001c 	lw	v0,28(s8)
  4a7e0c:	00000000 	nop
  4a7e10:	00621024 	and	v0,v1,v0
  4a7e14:	afc20024 	sw	v0,36(s8)
  4a7e18:	8fc30024 	lw	v1,36(s8)
  4a7e1c:	8fc20018 	lw	v0,24(s8)
  4a7e20:	00000000 	nop
  4a7e24:	00621026 	xor	v0,v1,v0
  4a7e28:	afc20024 	sw	v0,36(s8)
  4a7e2c:	8fc30018 	lw	v1,24(s8)
  4a7e30:	8fc20020 	lw	v0,32(s8)
  4a7e34:	00000000 	nop
  4a7e38:	00621026 	xor	v0,v1,v0
  4a7e3c:	afc20018 	sw	v0,24(s8)
  4a7e40:	8fc30020 	lw	v1,32(s8)
  4a7e44:	8fc2001c 	lw	v0,28(s8)
  4a7e48:	00000000 	nop
  4a7e4c:	00621024 	and	v0,v1,v0
  4a7e50:	afc20020 	sw	v0,32(s8)
  4a7e54:	8fc20018 	lw	v0,24(s8)
  4a7e58:	00000000 	nop
  4a7e5c:	00021027 	nor	v0,zero,v0
  4a7e60:	afc20018 	sw	v0,24(s8)
  4a7e64:	8fc30020 	lw	v1,32(s8)
  4a7e68:	8fc20018 	lw	v0,24(s8)
  4a7e6c:	00000000 	nop
  4a7e70:	00621026 	xor	v0,v1,v0
  4a7e74:	afc20020 	sw	v0,32(s8)
  4a7e78:	8fc30018 	lw	v1,24(s8)
  4a7e7c:	8fc2001c 	lw	v0,28(s8)
  4a7e80:	00000000 	nop
  4a7e84:	00621024 	and	v0,v1,v0
  4a7e88:	afc20018 	sw	v0,24(s8)
  4a7e8c:	8fc30014 	lw	v1,20(s8)
  4a7e90:	8fc20024 	lw	v0,36(s8)
  4a7e94:	00000000 	nop
  4a7e98:	00621026 	xor	v0,v1,v0
  4a7e9c:	afc20014 	sw	v0,20(s8)
  4a7ea0:	8fc30018 	lw	v1,24(s8)
  4a7ea4:	8fc20014 	lw	v0,20(s8)
  4a7ea8:	00000000 	nop
  4a7eac:	00621026 	xor	v0,v1,v0
  4a7eb0:	afc20018 	sw	v0,24(s8)
      LINTRANS(r3,r1,r4,r2,r0);
  4a7eb4:	8fc20020 	lw	v0,32(s8)
  4a7eb8:	00000000 	nop
  4a7ebc:	00021b40 	sll	v1,v0,0xd
  4a7ec0:	000214c2 	srl	v0,v0,0x13
  4a7ec4:	00621025 	or	v0,v1,v0
  4a7ec8:	afc20020 	sw	v0,32(s8)
  4a7ecc:	8fc20024 	lw	v0,36(s8)
  4a7ed0:	00000000 	nop
  4a7ed4:	000218c0 	sll	v1,v0,0x3
  4a7ed8:	00021742 	srl	v0,v0,0x1d
  4a7edc:	00621025 	or	v0,v1,v0
  4a7ee0:	afc20024 	sw	v0,36(s8)
  4a7ee4:	8fc3001c 	lw	v1,28(s8)
  4a7ee8:	8fc20024 	lw	v0,36(s8)
  4a7eec:	00000000 	nop
  4a7ef0:	00621026 	xor	v0,v1,v0
  4a7ef4:	afc2001c 	sw	v0,28(s8)
  4a7ef8:	8fc20020 	lw	v0,32(s8)
  4a7efc:	00000000 	nop
  4a7f00:	000210c0 	sll	v0,v0,0x3
  4a7f04:	afc20014 	sw	v0,20(s8)
  4a7f08:	8fc30018 	lw	v1,24(s8)
  4a7f0c:	8fc20020 	lw	v0,32(s8)
  4a7f10:	00000000 	nop
  4a7f14:	00621026 	xor	v0,v1,v0
  4a7f18:	afc20018 	sw	v0,24(s8)
  4a7f1c:	8fc3001c 	lw	v1,28(s8)
  4a7f20:	8fc20014 	lw	v0,20(s8)
  4a7f24:	00000000 	nop
  4a7f28:	00621026 	xor	v0,v1,v0
  4a7f2c:	afc2001c 	sw	v0,28(s8)
  4a7f30:	8fc30018 	lw	v1,24(s8)
  4a7f34:	8fc20024 	lw	v0,36(s8)
  4a7f38:	00000000 	nop
  4a7f3c:	00621026 	xor	v0,v1,v0
  4a7f40:	afc20018 	sw	v0,24(s8)
  4a7f44:	8fc2001c 	lw	v0,28(s8)
  4a7f48:	00000000 	nop
  4a7f4c:	000219c0 	sll	v1,v0,0x7
  4a7f50:	00021642 	srl	v0,v0,0x19
  4a7f54:	00621025 	or	v0,v1,v0
  4a7f58:	afc2001c 	sw	v0,28(s8)
  4a7f5c:	8fc20018 	lw	v0,24(s8)
  4a7f60:	00000000 	nop
  4a7f64:	00021840 	sll	v1,v0,0x1
  4a7f68:	000217c2 	srl	v0,v0,0x1f
  4a7f6c:	00621025 	or	v0,v1,v0
  4a7f70:	afc20018 	sw	v0,24(s8)
  4a7f74:	8fc30024 	lw	v1,36(s8)
  4a7f78:	8fc2001c 	lw	v0,28(s8)
  4a7f7c:	00000000 	nop
  4a7f80:	00621026 	xor	v0,v1,v0
  4a7f84:	afc20024 	sw	v0,36(s8)
  4a7f88:	8fc20018 	lw	v0,24(s8)
  4a7f8c:	00000000 	nop
  4a7f90:	000211c0 	sll	v0,v0,0x7
  4a7f94:	afc20014 	sw	v0,20(s8)
  4a7f98:	8fc30020 	lw	v1,32(s8)
  4a7f9c:	8fc20018 	lw	v0,24(s8)
  4a7fa0:	00000000 	nop
  4a7fa4:	00621026 	xor	v0,v1,v0
  4a7fa8:	afc20020 	sw	v0,32(s8)
  4a7fac:	8fc30024 	lw	v1,36(s8)
  4a7fb0:	8fc20014 	lw	v0,20(s8)
  4a7fb4:	00000000 	nop
  4a7fb8:	00621026 	xor	v0,v1,v0
  4a7fbc:	afc20024 	sw	v0,36(s8)
  4a7fc0:	8fc30020 	lw	v1,32(s8)
  4a7fc4:	8fc2001c 	lw	v0,28(s8)
  4a7fc8:	00000000 	nop
  4a7fcc:	00621026 	xor	v0,v1,v0
  4a7fd0:	afc20020 	sw	v0,32(s8)
  4a7fd4:	8fc20024 	lw	v0,36(s8)
  4a7fd8:	00000000 	nop
  4a7fdc:	00021d80 	sll	v1,v0,0x16
  4a7fe0:	00021282 	srl	v0,v0,0xa
  4a7fe4:	00621025 	or	v0,v1,v0
  4a7fe8:	afc20024 	sw	v0,36(s8)
  4a7fec:	8fc20020 	lw	v0,32(s8)
  4a7ff0:	00000000 	nop
  4a7ff4:	00021940 	sll	v1,v0,0x5
  4a7ff8:	000216c2 	srl	v0,v0,0x1b
  4a7ffc:	00621025 	or	v0,v1,v0
  4a8000:	afc20020 	sw	v0,32(s8)

      /* round 9  */
      KEYMIX(r3,r1,r4,r2,r0,32);
  4a8004:	8fc20008 	lw	v0,8(s8)
  4a8008:	00000000 	nop
  4a800c:	244200a0 	addiu	v0,v0,160
  4a8010:	8c430000 	lw	v1,0(v0)
  4a8014:	8fc20020 	lw	v0,32(s8)
  4a8018:	00000000 	nop
  4a801c:	00431026 	xor	v0,v0,v1
  4a8020:	afc20020 	sw	v0,32(s8)
  4a8024:	8fc20008 	lw	v0,8(s8)
  4a8028:	00000000 	nop
  4a802c:	244200a4 	addiu	v0,v0,164
  4a8030:	8c430000 	lw	v1,0(v0)
  4a8034:	8fc20018 	lw	v0,24(s8)
  4a8038:	00000000 	nop
  4a803c:	00431026 	xor	v0,v0,v1
  4a8040:	afc20018 	sw	v0,24(s8)
  4a8044:	8fc20008 	lw	v0,8(s8)
  4a8048:	00000000 	nop
  4a804c:	244200a8 	addiu	v0,v0,168
  4a8050:	8c430000 	lw	v1,0(v0)
  4a8054:	8fc20024 	lw	v0,36(s8)
  4a8058:	00000000 	nop
  4a805c:	00431026 	xor	v0,v0,v1
  4a8060:	afc20024 	sw	v0,36(s8)
  4a8064:	8fc20008 	lw	v0,8(s8)
  4a8068:	00000000 	nop
  4a806c:	244200ac 	addiu	v0,v0,172
  4a8070:	8c430000 	lw	v1,0(v0)
  4a8074:	8fc2001c 	lw	v0,28(s8)
  4a8078:	00000000 	nop
  4a807c:	00431026 	xor	v0,v0,v1
  4a8080:	afc2001c 	sw	v0,28(s8)
      S0(r3,r1,r4,r2,r0);
  4a8084:	8fc3001c 	lw	v1,28(s8)
  4a8088:	8fc20020 	lw	v0,32(s8)
  4a808c:	00000000 	nop
  4a8090:	00621026 	xor	v0,v1,v0
  4a8094:	afc2001c 	sw	v0,28(s8)
  4a8098:	8fc20018 	lw	v0,24(s8)
  4a809c:	00000000 	nop
  4a80a0:	afc20014 	sw	v0,20(s8)
  4a80a4:	8fc30018 	lw	v1,24(s8)
  4a80a8:	8fc2001c 	lw	v0,28(s8)
  4a80ac:	00000000 	nop
  4a80b0:	00621024 	and	v0,v1,v0
  4a80b4:	afc20018 	sw	v0,24(s8)
  4a80b8:	8fc30014 	lw	v1,20(s8)
  4a80bc:	8fc20024 	lw	v0,36(s8)
  4a80c0:	00000000 	nop
  4a80c4:	00621026 	xor	v0,v1,v0
  4a80c8:	afc20014 	sw	v0,20(s8)
  4a80cc:	8fc30018 	lw	v1,24(s8)
  4a80d0:	8fc20020 	lw	v0,32(s8)
  4a80d4:	00000000 	nop
  4a80d8:	00621026 	xor	v0,v1,v0
  4a80dc:	afc20018 	sw	v0,24(s8)
  4a80e0:	8fc30020 	lw	v1,32(s8)
  4a80e4:	8fc2001c 	lw	v0,28(s8)
  4a80e8:	00000000 	nop
  4a80ec:	00621025 	or	v0,v1,v0
  4a80f0:	afc20020 	sw	v0,32(s8)
  4a80f4:	8fc30020 	lw	v1,32(s8)
  4a80f8:	8fc20014 	lw	v0,20(s8)
  4a80fc:	00000000 	nop
  4a8100:	00621026 	xor	v0,v1,v0
  4a8104:	afc20020 	sw	v0,32(s8)
  4a8108:	8fc30014 	lw	v1,20(s8)
  4a810c:	8fc2001c 	lw	v0,28(s8)
  4a8110:	00000000 	nop
  4a8114:	00621026 	xor	v0,v1,v0
  4a8118:	afc20014 	sw	v0,20(s8)
  4a811c:	8fc3001c 	lw	v1,28(s8)
  4a8120:	8fc20024 	lw	v0,36(s8)
  4a8124:	00000000 	nop
  4a8128:	00621026 	xor	v0,v1,v0
  4a812c:	afc2001c 	sw	v0,28(s8)
  4a8130:	8fc30024 	lw	v1,36(s8)
  4a8134:	8fc20018 	lw	v0,24(s8)
  4a8138:	00000000 	nop
  4a813c:	00621025 	or	v0,v1,v0
  4a8140:	afc20024 	sw	v0,36(s8)
  4a8144:	8fc30024 	lw	v1,36(s8)
  4a8148:	8fc20014 	lw	v0,20(s8)
  4a814c:	00000000 	nop
  4a8150:	00621026 	xor	v0,v1,v0
  4a8154:	afc20024 	sw	v0,36(s8)
  4a8158:	8fc20014 	lw	v0,20(s8)
  4a815c:	00000000 	nop
  4a8160:	00021027 	nor	v0,zero,v0
  4a8164:	afc20014 	sw	v0,20(s8)
  4a8168:	8fc30014 	lw	v1,20(s8)
  4a816c:	8fc20018 	lw	v0,24(s8)
  4a8170:	00000000 	nop
  4a8174:	00621025 	or	v0,v1,v0
  4a8178:	afc20014 	sw	v0,20(s8)
  4a817c:	8fc30018 	lw	v1,24(s8)
  4a8180:	8fc2001c 	lw	v0,28(s8)
  4a8184:	00000000 	nop
  4a8188:	00621026 	xor	v0,v1,v0
  4a818c:	afc20018 	sw	v0,24(s8)
  4a8190:	8fc30018 	lw	v1,24(s8)
  4a8194:	8fc20014 	lw	v0,20(s8)
  4a8198:	00000000 	nop
  4a819c:	00621026 	xor	v0,v1,v0
  4a81a0:	afc20018 	sw	v0,24(s8)
  4a81a4:	8fc3001c 	lw	v1,28(s8)
  4a81a8:	8fc20020 	lw	v0,32(s8)
  4a81ac:	00000000 	nop
  4a81b0:	00621025 	or	v0,v1,v0
  4a81b4:	afc2001c 	sw	v0,28(s8)
  4a81b8:	8fc30018 	lw	v1,24(s8)
  4a81bc:	8fc2001c 	lw	v0,28(s8)
  4a81c0:	00000000 	nop
  4a81c4:	00621026 	xor	v0,v1,v0
  4a81c8:	afc20018 	sw	v0,24(s8)
  4a81cc:	8fc30014 	lw	v1,20(s8)
  4a81d0:	8fc2001c 	lw	v0,28(s8)
  4a81d4:	00000000 	nop
  4a81d8:	00621026 	xor	v0,v1,v0
  4a81dc:	afc20014 	sw	v0,20(s8)
      LINTRANS(r1,r0,r4,r3,r2);
  4a81e0:	8fc20018 	lw	v0,24(s8)
  4a81e4:	00000000 	nop
  4a81e8:	00021b40 	sll	v1,v0,0xd
  4a81ec:	000214c2 	srl	v0,v0,0x13
  4a81f0:	00621025 	or	v0,v1,v0
  4a81f4:	afc20018 	sw	v0,24(s8)
  4a81f8:	8fc20024 	lw	v0,36(s8)
  4a81fc:	00000000 	nop
  4a8200:	000218c0 	sll	v1,v0,0x3
  4a8204:	00021742 	srl	v0,v0,0x1d
  4a8208:	00621025 	or	v0,v1,v0
  4a820c:	afc20024 	sw	v0,36(s8)
  4a8210:	8fc30020 	lw	v1,32(s8)
  4a8214:	8fc20024 	lw	v0,36(s8)
  4a8218:	00000000 	nop
  4a821c:	00621026 	xor	v0,v1,v0
  4a8220:	afc20020 	sw	v0,32(s8)
  4a8224:	8fc20018 	lw	v0,24(s8)
  4a8228:	00000000 	nop
  4a822c:	000210c0 	sll	v0,v0,0x3
  4a8230:	afc2001c 	sw	v0,28(s8)
  4a8234:	8fc30014 	lw	v1,20(s8)
  4a8238:	8fc20018 	lw	v0,24(s8)
  4a823c:	00000000 	nop
  4a8240:	00621026 	xor	v0,v1,v0
  4a8244:	afc20014 	sw	v0,20(s8)
  4a8248:	8fc30020 	lw	v1,32(s8)
  4a824c:	8fc2001c 	lw	v0,28(s8)
  4a8250:	00000000 	nop
  4a8254:	00621026 	xor	v0,v1,v0
  4a8258:	afc20020 	sw	v0,32(s8)
  4a825c:	8fc30014 	lw	v1,20(s8)
  4a8260:	8fc20024 	lw	v0,36(s8)
  4a8264:	00000000 	nop
  4a8268:	00621026 	xor	v0,v1,v0
  4a826c:	afc20014 	sw	v0,20(s8)
  4a8270:	8fc20020 	lw	v0,32(s8)
  4a8274:	00000000 	nop
  4a8278:	000219c0 	sll	v1,v0,0x7
  4a827c:	00021642 	srl	v0,v0,0x19
  4a8280:	00621025 	or	v0,v1,v0
  4a8284:	afc20020 	sw	v0,32(s8)
  4a8288:	8fc20014 	lw	v0,20(s8)
  4a828c:	00000000 	nop
  4a8290:	00021840 	sll	v1,v0,0x1
  4a8294:	000217c2 	srl	v0,v0,0x1f
  4a8298:	00621025 	or	v0,v1,v0
  4a829c:	afc20014 	sw	v0,20(s8)
  4a82a0:	8fc30024 	lw	v1,36(s8)
  4a82a4:	8fc20020 	lw	v0,32(s8)
  4a82a8:	00000000 	nop
  4a82ac:	00621026 	xor	v0,v1,v0
  4a82b0:	afc20024 	sw	v0,36(s8)
  4a82b4:	8fc20014 	lw	v0,20(s8)
  4a82b8:	00000000 	nop
  4a82bc:	000211c0 	sll	v0,v0,0x7
  4a82c0:	afc2001c 	sw	v0,28(s8)
  4a82c4:	8fc30018 	lw	v1,24(s8)
  4a82c8:	8fc20014 	lw	v0,20(s8)
  4a82cc:	00000000 	nop
  4a82d0:	00621026 	xor	v0,v1,v0
  4a82d4:	afc20018 	sw	v0,24(s8)
  4a82d8:	8fc30024 	lw	v1,36(s8)
  4a82dc:	8fc2001c 	lw	v0,28(s8)
  4a82e0:	00000000 	nop
  4a82e4:	00621026 	xor	v0,v1,v0
  4a82e8:	afc20024 	sw	v0,36(s8)
  4a82ec:	8fc30018 	lw	v1,24(s8)
  4a82f0:	8fc20020 	lw	v0,32(s8)
  4a82f4:	00000000 	nop
  4a82f8:	00621026 	xor	v0,v1,v0
  4a82fc:	afc20018 	sw	v0,24(s8)
  4a8300:	8fc20024 	lw	v0,36(s8)
  4a8304:	00000000 	nop
  4a8308:	00021d80 	sll	v1,v0,0x16
  4a830c:	00021282 	srl	v0,v0,0xa
  4a8310:	00621025 	or	v0,v1,v0
  4a8314:	afc20024 	sw	v0,36(s8)
  4a8318:	8fc20018 	lw	v0,24(s8)
  4a831c:	00000000 	nop
  4a8320:	00021940 	sll	v1,v0,0x5
  4a8324:	000216c2 	srl	v0,v0,0x1b
  4a8328:	00621025 	or	v0,v1,v0
  4a832c:	afc20018 	sw	v0,24(s8)

      /* round 10  */
      KEYMIX(r1,r0,r4,r3,r2,36);
  4a8330:	8fc20008 	lw	v0,8(s8)
  4a8334:	00000000 	nop
  4a8338:	244200b0 	addiu	v0,v0,176
  4a833c:	8c430000 	lw	v1,0(v0)
  4a8340:	8fc20018 	lw	v0,24(s8)
  4a8344:	00000000 	nop
  4a8348:	00431026 	xor	v0,v0,v1
  4a834c:	afc20018 	sw	v0,24(s8)
  4a8350:	8fc20008 	lw	v0,8(s8)
  4a8354:	00000000 	nop
  4a8358:	244200b4 	addiu	v0,v0,180
  4a835c:	8c430000 	lw	v1,0(v0)
  4a8360:	8fc20014 	lw	v0,20(s8)
  4a8364:	00000000 	nop
  4a8368:	00431026 	xor	v0,v0,v1
  4a836c:	afc20014 	sw	v0,20(s8)
  4a8370:	8fc20008 	lw	v0,8(s8)
  4a8374:	00000000 	nop
  4a8378:	244200b8 	addiu	v0,v0,184
  4a837c:	8c430000 	lw	v1,0(v0)
  4a8380:	8fc20024 	lw	v0,36(s8)
  4a8384:	00000000 	nop
  4a8388:	00431026 	xor	v0,v0,v1
  4a838c:	afc20024 	sw	v0,36(s8)
  4a8390:	8fc20008 	lw	v0,8(s8)
  4a8394:	00000000 	nop
  4a8398:	244200bc 	addiu	v0,v0,188
  4a839c:	8c430000 	lw	v1,0(v0)
  4a83a0:	8fc20020 	lw	v0,32(s8)
  4a83a4:	00000000 	nop
  4a83a8:	00431026 	xor	v0,v0,v1
  4a83ac:	afc20020 	sw	v0,32(s8)
      S1(r1,r0,r4,r3,r2);
  4a83b0:	8fc20014 	lw	v0,20(s8)
  4a83b4:	00000000 	nop
  4a83b8:	00021027 	nor	v0,zero,v0
  4a83bc:	afc20014 	sw	v0,20(s8)
  4a83c0:	8fc20018 	lw	v0,24(s8)
  4a83c4:	00000000 	nop
  4a83c8:	afc2001c 	sw	v0,28(s8)
  4a83cc:	8fc30018 	lw	v1,24(s8)
  4a83d0:	8fc20014 	lw	v0,20(s8)
  4a83d4:	00000000 	nop
  4a83d8:	00621026 	xor	v0,v1,v0
  4a83dc:	afc20018 	sw	v0,24(s8)
  4a83e0:	8fc3001c 	lw	v1,28(s8)
  4a83e4:	8fc20014 	lw	v0,20(s8)
  4a83e8:	00000000 	nop
  4a83ec:	00621025 	or	v0,v1,v0
  4a83f0:	afc2001c 	sw	v0,28(s8)
  4a83f4:	8fc3001c 	lw	v1,28(s8)
  4a83f8:	8fc20020 	lw	v0,32(s8)
  4a83fc:	00000000 	nop
  4a8400:	00621026 	xor	v0,v1,v0
  4a8404:	afc2001c 	sw	v0,28(s8)
  4a8408:	8fc30020 	lw	v1,32(s8)
  4a840c:	8fc20018 	lw	v0,24(s8)
  4a8410:	00000000 	nop
  4a8414:	00621024 	and	v0,v1,v0
  4a8418:	afc20020 	sw	v0,32(s8)
  4a841c:	8fc30024 	lw	v1,36(s8)
  4a8420:	8fc2001c 	lw	v0,28(s8)
  4a8424:	00000000 	nop
  4a8428:	00621026 	xor	v0,v1,v0
  4a842c:	afc20024 	sw	v0,36(s8)
  4a8430:	8fc30020 	lw	v1,32(s8)
  4a8434:	8fc20014 	lw	v0,20(s8)
  4a8438:	00000000 	nop
  4a843c:	00621026 	xor	v0,v1,v0
  4a8440:	afc20020 	sw	v0,32(s8)
  4a8444:	8fc30020 	lw	v1,32(s8)
  4a8448:	8fc20024 	lw	v0,36(s8)
  4a844c:	00000000 	nop
  4a8450:	00621025 	or	v0,v1,v0
  4a8454:	afc20020 	sw	v0,32(s8)
  4a8458:	8fc30018 	lw	v1,24(s8)
  4a845c:	8fc2001c 	lw	v0,28(s8)
  4a8460:	00000000 	nop
  4a8464:	00621026 	xor	v0,v1,v0
  4a8468:	afc20018 	sw	v0,24(s8)
  4a846c:	8fc30020 	lw	v1,32(s8)
  4a8470:	8fc20018 	lw	v0,24(s8)
  4a8474:	00000000 	nop
  4a8478:	00621026 	xor	v0,v1,v0
  4a847c:	afc20020 	sw	v0,32(s8)
  4a8480:	8fc30014 	lw	v1,20(s8)
  4a8484:	8fc20024 	lw	v0,36(s8)
  4a8488:	00000000 	nop
  4a848c:	00621024 	and	v0,v1,v0
  4a8490:	afc20014 	sw	v0,20(s8)
  4a8494:	8fc30018 	lw	v1,24(s8)
  4a8498:	8fc20014 	lw	v0,20(s8)
  4a849c:	00000000 	nop
  4a84a0:	00621025 	or	v0,v1,v0
  4a84a4:	afc20018 	sw	v0,24(s8)
  4a84a8:	8fc30014 	lw	v1,20(s8)
  4a84ac:	8fc2001c 	lw	v0,28(s8)
  4a84b0:	00000000 	nop
  4a84b4:	00621026 	xor	v0,v1,v0
  4a84b8:	afc20014 	sw	v0,20(s8)
  4a84bc:	8fc30018 	lw	v1,24(s8)
  4a84c0:	8fc20024 	lw	v0,36(s8)
  4a84c4:	00000000 	nop
  4a84c8:	00621026 	xor	v0,v1,v0
  4a84cc:	afc20018 	sw	v0,24(s8)
  4a84d0:	8fc3001c 	lw	v1,28(s8)
  4a84d4:	8fc20020 	lw	v0,32(s8)
  4a84d8:	00000000 	nop
  4a84dc:	00621025 	or	v0,v1,v0
  4a84e0:	afc2001c 	sw	v0,28(s8)
  4a84e4:	8fc30018 	lw	v1,24(s8)
  4a84e8:	8fc2001c 	lw	v0,28(s8)
  4a84ec:	00000000 	nop
  4a84f0:	00621026 	xor	v0,v1,v0
  4a84f4:	afc20018 	sw	v0,24(s8)
  4a84f8:	8fc2001c 	lw	v0,28(s8)
  4a84fc:	00000000 	nop
  4a8500:	00021027 	nor	v0,zero,v0
  4a8504:	afc2001c 	sw	v0,28(s8)
  4a8508:	8fc30014 	lw	v1,20(s8)
  4a850c:	8fc20020 	lw	v0,32(s8)
  4a8510:	00000000 	nop
  4a8514:	00621026 	xor	v0,v1,v0
  4a8518:	afc20014 	sw	v0,20(s8)
  4a851c:	8fc3001c 	lw	v1,28(s8)
  4a8520:	8fc20024 	lw	v0,36(s8)
  4a8524:	00000000 	nop
  4a8528:	00621024 	and	v0,v1,v0
  4a852c:	afc2001c 	sw	v0,28(s8)
  4a8530:	8fc20014 	lw	v0,20(s8)
  4a8534:	00000000 	nop
  4a8538:	00021027 	nor	v0,zero,v0
  4a853c:	afc20014 	sw	v0,20(s8)
  4a8540:	8fc3001c 	lw	v1,28(s8)
  4a8544:	8fc20018 	lw	v0,24(s8)
  4a8548:	00000000 	nop
  4a854c:	00621026 	xor	v0,v1,v0
  4a8550:	afc2001c 	sw	v0,28(s8)
  4a8554:	8fc30014 	lw	v1,20(s8)
  4a8558:	8fc2001c 	lw	v0,28(s8)
  4a855c:	00000000 	nop
  4a8560:	00621026 	xor	v0,v1,v0
  4a8564:	afc20014 	sw	v0,20(s8)
      LINTRANS(r3,r0,r4,r1,r2);
  4a8568:	8fc20020 	lw	v0,32(s8)
  4a856c:	00000000 	nop
  4a8570:	00021b40 	sll	v1,v0,0xd
  4a8574:	000214c2 	srl	v0,v0,0x13
  4a8578:	00621025 	or	v0,v1,v0
  4a857c:	afc20020 	sw	v0,32(s8)
  4a8580:	8fc20024 	lw	v0,36(s8)
  4a8584:	00000000 	nop
  4a8588:	000218c0 	sll	v1,v0,0x3
  4a858c:	00021742 	srl	v0,v0,0x1d
  4a8590:	00621025 	or	v0,v1,v0
  4a8594:	afc20024 	sw	v0,36(s8)
  4a8598:	8fc30018 	lw	v1,24(s8)
  4a859c:	8fc20024 	lw	v0,36(s8)
  4a85a0:	00000000 	nop
  4a85a4:	00621026 	xor	v0,v1,v0
  4a85a8:	afc20018 	sw	v0,24(s8)
  4a85ac:	8fc20020 	lw	v0,32(s8)
  4a85b0:	00000000 	nop
  4a85b4:	000210c0 	sll	v0,v0,0x3
  4a85b8:	afc2001c 	sw	v0,28(s8)
  4a85bc:	8fc30014 	lw	v1,20(s8)
  4a85c0:	8fc20020 	lw	v0,32(s8)
  4a85c4:	00000000 	nop
  4a85c8:	00621026 	xor	v0,v1,v0
  4a85cc:	afc20014 	sw	v0,20(s8)
  4a85d0:	8fc30018 	lw	v1,24(s8)
  4a85d4:	8fc2001c 	lw	v0,28(s8)
  4a85d8:	00000000 	nop
  4a85dc:	00621026 	xor	v0,v1,v0
  4a85e0:	afc20018 	sw	v0,24(s8)
  4a85e4:	8fc30014 	lw	v1,20(s8)
  4a85e8:	8fc20024 	lw	v0,36(s8)
  4a85ec:	00000000 	nop
  4a85f0:	00621026 	xor	v0,v1,v0
  4a85f4:	afc20014 	sw	v0,20(s8)
  4a85f8:	8fc20018 	lw	v0,24(s8)
  4a85fc:	00000000 	nop
  4a8600:	000219c0 	sll	v1,v0,0x7
  4a8604:	00021642 	srl	v0,v0,0x19
  4a8608:	00621025 	or	v0,v1,v0
  4a860c:	afc20018 	sw	v0,24(s8)
  4a8610:	8fc20014 	lw	v0,20(s8)
  4a8614:	00000000 	nop
  4a8618:	00021840 	sll	v1,v0,0x1
  4a861c:	000217c2 	srl	v0,v0,0x1f
  4a8620:	00621025 	or	v0,v1,v0
  4a8624:	afc20014 	sw	v0,20(s8)
  4a8628:	8fc30024 	lw	v1,36(s8)
  4a862c:	8fc20018 	lw	v0,24(s8)
  4a8630:	00000000 	nop
  4a8634:	00621026 	xor	v0,v1,v0
  4a8638:	afc20024 	sw	v0,36(s8)
  4a863c:	8fc20014 	lw	v0,20(s8)
  4a8640:	00000000 	nop
  4a8644:	000211c0 	sll	v0,v0,0x7
  4a8648:	afc2001c 	sw	v0,28(s8)
  4a864c:	8fc30020 	lw	v1,32(s8)
  4a8650:	8fc20014 	lw	v0,20(s8)
  4a8654:	00000000 	nop
  4a8658:	00621026 	xor	v0,v1,v0
  4a865c:	afc20020 	sw	v0,32(s8)
  4a8660:	8fc30024 	lw	v1,36(s8)
  4a8664:	8fc2001c 	lw	v0,28(s8)
  4a8668:	00000000 	nop
  4a866c:	00621026 	xor	v0,v1,v0
  4a8670:	afc20024 	sw	v0,36(s8)
  4a8674:	8fc30020 	lw	v1,32(s8)
  4a8678:	8fc20018 	lw	v0,24(s8)
  4a867c:	00000000 	nop
  4a8680:	00621026 	xor	v0,v1,v0
  4a8684:	afc20020 	sw	v0,32(s8)
  4a8688:	8fc20024 	lw	v0,36(s8)
  4a868c:	00000000 	nop
  4a8690:	00021d80 	sll	v1,v0,0x16
  4a8694:	00021282 	srl	v0,v0,0xa
  4a8698:	00621025 	or	v0,v1,v0
  4a869c:	afc20024 	sw	v0,36(s8)
  4a86a0:	8fc20020 	lw	v0,32(s8)
  4a86a4:	00000000 	nop
  4a86a8:	00021940 	sll	v1,v0,0x5
  4a86ac:	000216c2 	srl	v0,v0,0x1b
  4a86b0:	00621025 	or	v0,v1,v0
  4a86b4:	afc20020 	sw	v0,32(s8)

      /* round 11  */
      KEYMIX(r3,r0,r4,r1,r2,40);
  4a86b8:	8fc20008 	lw	v0,8(s8)
  4a86bc:	00000000 	nop
  4a86c0:	244200c0 	addiu	v0,v0,192
  4a86c4:	8c430000 	lw	v1,0(v0)
  4a86c8:	8fc20020 	lw	v0,32(s8)
  4a86cc:	00000000 	nop
  4a86d0:	00431026 	xor	v0,v0,v1
  4a86d4:	afc20020 	sw	v0,32(s8)
  4a86d8:	8fc20008 	lw	v0,8(s8)
  4a86dc:	00000000 	nop
  4a86e0:	244200c4 	addiu	v0,v0,196
  4a86e4:	8c430000 	lw	v1,0(v0)
  4a86e8:	8fc20014 	lw	v0,20(s8)
  4a86ec:	00000000 	nop
  4a86f0:	00431026 	xor	v0,v0,v1
  4a86f4:	afc20014 	sw	v0,20(s8)
  4a86f8:	8fc20008 	lw	v0,8(s8)
  4a86fc:	00000000 	nop
  4a8700:	244200c8 	addiu	v0,v0,200
  4a8704:	8c430000 	lw	v1,0(v0)
  4a8708:	8fc20024 	lw	v0,36(s8)
  4a870c:	00000000 	nop
  4a8710:	00431026 	xor	v0,v0,v1
  4a8714:	afc20024 	sw	v0,36(s8)
  4a8718:	8fc20008 	lw	v0,8(s8)
  4a871c:	00000000 	nop
  4a8720:	244200cc 	addiu	v0,v0,204
  4a8724:	8c430000 	lw	v1,0(v0)
  4a8728:	8fc20018 	lw	v0,24(s8)
  4a872c:	00000000 	nop
  4a8730:	00431026 	xor	v0,v0,v1
  4a8734:	afc20018 	sw	v0,24(s8)
      S2(r3,r0,r4,r1,r2);
  4a8738:	8fc20020 	lw	v0,32(s8)
  4a873c:	00000000 	nop
  4a8740:	afc2001c 	sw	v0,28(s8)
  4a8744:	8fc30020 	lw	v1,32(s8)
  4a8748:	8fc20024 	lw	v0,36(s8)
  4a874c:	00000000 	nop
  4a8750:	00621024 	and	v0,v1,v0
  4a8754:	afc20020 	sw	v0,32(s8)
  4a8758:	8fc30020 	lw	v1,32(s8)
  4a875c:	8fc20018 	lw	v0,24(s8)
  4a8760:	00000000 	nop
  4a8764:	00621026 	xor	v0,v1,v0
  4a8768:	afc20020 	sw	v0,32(s8)
  4a876c:	8fc30024 	lw	v1,36(s8)
  4a8770:	8fc20014 	lw	v0,20(s8)
  4a8774:	00000000 	nop
  4a8778:	00621026 	xor	v0,v1,v0
  4a877c:	afc20024 	sw	v0,36(s8)
  4a8780:	8fc30024 	lw	v1,36(s8)
  4a8784:	8fc20020 	lw	v0,32(s8)
  4a8788:	00000000 	nop
  4a878c:	00621026 	xor	v0,v1,v0
  4a8790:	afc20024 	sw	v0,36(s8)
  4a8794:	8fc30018 	lw	v1,24(s8)
  4a8798:	8fc2001c 	lw	v0,28(s8)
  4a879c:	00000000 	nop
  4a87a0:	00621025 	or	v0,v1,v0
  4a87a4:	afc20018 	sw	v0,24(s8)
  4a87a8:	8fc30018 	lw	v1,24(s8)
  4a87ac:	8fc20014 	lw	v0,20(s8)
  4a87b0:	00000000 	nop
  4a87b4:	00621026 	xor	v0,v1,v0
  4a87b8:	afc20018 	sw	v0,24(s8)
  4a87bc:	8fc3001c 	lw	v1,28(s8)
  4a87c0:	8fc20024 	lw	v0,36(s8)
  4a87c4:	00000000 	nop
  4a87c8:	00621026 	xor	v0,v1,v0
  4a87cc:	afc2001c 	sw	v0,28(s8)
  4a87d0:	8fc20018 	lw	v0,24(s8)
  4a87d4:	00000000 	nop
  4a87d8:	afc20014 	sw	v0,20(s8)
  4a87dc:	8fc30018 	lw	v1,24(s8)
  4a87e0:	8fc2001c 	lw	v0,28(s8)
  4a87e4:	00000000 	nop
  4a87e8:	00621025 	or	v0,v1,v0
  4a87ec:	afc20018 	sw	v0,24(s8)
  4a87f0:	8fc30018 	lw	v1,24(s8)
  4a87f4:	8fc20020 	lw	v0,32(s8)
  4a87f8:	00000000 	nop
  4a87fc:	00621026 	xor	v0,v1,v0
  4a8800:	afc20018 	sw	v0,24(s8)
  4a8804:	8fc30020 	lw	v1,32(s8)
  4a8808:	8fc20014 	lw	v0,20(s8)
  4a880c:	00000000 	nop
  4a8810:	00621024 	and	v0,v1,v0
  4a8814:	afc20020 	sw	v0,32(s8)
  4a8818:	8fc3001c 	lw	v1,28(s8)
  4a881c:	8fc20020 	lw	v0,32(s8)
  4a8820:	00000000 	nop
  4a8824:	00621026 	xor	v0,v1,v0
  4a8828:	afc2001c 	sw	v0,28(s8)
  4a882c:	8fc30014 	lw	v1,20(s8)
  4a8830:	8fc20018 	lw	v0,24(s8)
  4a8834:	00000000 	nop
  4a8838:	00621026 	xor	v0,v1,v0
  4a883c:	afc20014 	sw	v0,20(s8)
  4a8840:	8fc30014 	lw	v1,20(s8)
  4a8844:	8fc2001c 	lw	v0,28(s8)
  4a8848:	00000000 	nop
  4a884c:	00621026 	xor	v0,v1,v0
  4a8850:	afc20014 	sw	v0,20(s8)
  4a8854:	8fc2001c 	lw	v0,28(s8)
  4a8858:	00000000 	nop
  4a885c:	00021027 	nor	v0,zero,v0
  4a8860:	afc2001c 	sw	v0,28(s8)
      LINTRANS(r4,r1,r0,r2,r3);
  4a8864:	8fc20024 	lw	v0,36(s8)
  4a8868:	00000000 	nop
  4a886c:	00021b40 	sll	v1,v0,0xd
  4a8870:	000214c2 	srl	v0,v0,0x13
  4a8874:	00621025 	or	v0,v1,v0
  4a8878:	afc20024 	sw	v0,36(s8)
  4a887c:	8fc20014 	lw	v0,20(s8)
  4a8880:	00000000 	nop
  4a8884:	000218c0 	sll	v1,v0,0x3
  4a8888:	00021742 	srl	v0,v0,0x1d
  4a888c:	00621025 	or	v0,v1,v0
  4a8890:	afc20014 	sw	v0,20(s8)
  4a8894:	8fc3001c 	lw	v1,28(s8)
  4a8898:	8fc20014 	lw	v0,20(s8)
  4a889c:	00000000 	nop
  4a88a0:	00621026 	xor	v0,v1,v0
  4a88a4:	afc2001c 	sw	v0,28(s8)
  4a88a8:	8fc20024 	lw	v0,36(s8)
  4a88ac:	00000000 	nop
  4a88b0:	000210c0 	sll	v0,v0,0x3
  4a88b4:	afc20020 	sw	v0,32(s8)
  4a88b8:	8fc30018 	lw	v1,24(s8)
  4a88bc:	8fc20024 	lw	v0,36(s8)
  4a88c0:	00000000 	nop
  4a88c4:	00621026 	xor	v0,v1,v0
  4a88c8:	afc20018 	sw	v0,24(s8)
  4a88cc:	8fc3001c 	lw	v1,28(s8)
  4a88d0:	8fc20020 	lw	v0,32(s8)
  4a88d4:	00000000 	nop
  4a88d8:	00621026 	xor	v0,v1,v0
  4a88dc:	afc2001c 	sw	v0,28(s8)
  4a88e0:	8fc30018 	lw	v1,24(s8)
  4a88e4:	8fc20014 	lw	v0,20(s8)
  4a88e8:	00000000 	nop
  4a88ec:	00621026 	xor	v0,v1,v0
  4a88f0:	afc20018 	sw	v0,24(s8)
  4a88f4:	8fc2001c 	lw	v0,28(s8)
  4a88f8:	00000000 	nop
  4a88fc:	000219c0 	sll	v1,v0,0x7
  4a8900:	00021642 	srl	v0,v0,0x19
  4a8904:	00621025 	or	v0,v1,v0
  4a8908:	afc2001c 	sw	v0,28(s8)
  4a890c:	8fc20018 	lw	v0,24(s8)
  4a8910:	00000000 	nop
  4a8914:	00021840 	sll	v1,v0,0x1
  4a8918:	000217c2 	srl	v0,v0,0x1f
  4a891c:	00621025 	or	v0,v1,v0
  4a8920:	afc20018 	sw	v0,24(s8)
  4a8924:	8fc30014 	lw	v1,20(s8)
  4a8928:	8fc2001c 	lw	v0,28(s8)
  4a892c:	00000000 	nop
  4a8930:	00621026 	xor	v0,v1,v0
  4a8934:	afc20014 	sw	v0,20(s8)
  4a8938:	8fc20018 	lw	v0,24(s8)
  4a893c:	00000000 	nop
  4a8940:	000211c0 	sll	v0,v0,0x7
  4a8944:	afc20020 	sw	v0,32(s8)
  4a8948:	8fc30024 	lw	v1,36(s8)
  4a894c:	8fc20018 	lw	v0,24(s8)
  4a8950:	00000000 	nop
  4a8954:	00621026 	xor	v0,v1,v0
  4a8958:	afc20024 	sw	v0,36(s8)
  4a895c:	8fc30014 	lw	v1,20(s8)
  4a8960:	8fc20020 	lw	v0,32(s8)
  4a8964:	00000000 	nop
  4a8968:	00621026 	xor	v0,v1,v0
  4a896c:	afc20014 	sw	v0,20(s8)
  4a8970:	8fc30024 	lw	v1,36(s8)
  4a8974:	8fc2001c 	lw	v0,28(s8)
  4a8978:	00000000 	nop
  4a897c:	00621026 	xor	v0,v1,v0
  4a8980:	afc20024 	sw	v0,36(s8)
  4a8984:	8fc20014 	lw	v0,20(s8)
  4a8988:	00000000 	nop
  4a898c:	00021d80 	sll	v1,v0,0x16
  4a8990:	00021282 	srl	v0,v0,0xa
  4a8994:	00621025 	or	v0,v1,v0
  4a8998:	afc20014 	sw	v0,20(s8)
  4a899c:	8fc20024 	lw	v0,36(s8)
  4a89a0:	00000000 	nop
  4a89a4:	00021940 	sll	v1,v0,0x5
  4a89a8:	000216c2 	srl	v0,v0,0x1b
  4a89ac:	00621025 	or	v0,v1,v0
  4a89b0:	afc20024 	sw	v0,36(s8)

      /* round 12  */
      KEYMIX(r4,r1,r0,r2,r3,44);
  4a89b4:	8fc20008 	lw	v0,8(s8)
  4a89b8:	00000000 	nop
  4a89bc:	244200d0 	addiu	v0,v0,208
  4a89c0:	8c430000 	lw	v1,0(v0)
  4a89c4:	8fc20024 	lw	v0,36(s8)
  4a89c8:	00000000 	nop
  4a89cc:	00431026 	xor	v0,v0,v1
  4a89d0:	afc20024 	sw	v0,36(s8)
  4a89d4:	8fc20008 	lw	v0,8(s8)
  4a89d8:	00000000 	nop
  4a89dc:	244200d4 	addiu	v0,v0,212
  4a89e0:	8c430000 	lw	v1,0(v0)
  4a89e4:	8fc20018 	lw	v0,24(s8)
  4a89e8:	00000000 	nop
  4a89ec:	00431026 	xor	v0,v0,v1
  4a89f0:	afc20018 	sw	v0,24(s8)
  4a89f4:	8fc20008 	lw	v0,8(s8)
  4a89f8:	00000000 	nop
  4a89fc:	244200d8 	addiu	v0,v0,216
  4a8a00:	8c430000 	lw	v1,0(v0)
  4a8a04:	8fc20014 	lw	v0,20(s8)
  4a8a08:	00000000 	nop
  4a8a0c:	00431026 	xor	v0,v0,v1
  4a8a10:	afc20014 	sw	v0,20(s8)
  4a8a14:	8fc20008 	lw	v0,8(s8)
  4a8a18:	00000000 	nop
  4a8a1c:	244200dc 	addiu	v0,v0,220
  4a8a20:	8c430000 	lw	v1,0(v0)
  4a8a24:	8fc2001c 	lw	v0,28(s8)
  4a8a28:	00000000 	nop
  4a8a2c:	00431026 	xor	v0,v0,v1
  4a8a30:	afc2001c 	sw	v0,28(s8)
      S3(r4,r1,r0,r2,r3);
  4a8a34:	8fc20024 	lw	v0,36(s8)
  4a8a38:	00000000 	nop
  4a8a3c:	afc20020 	sw	v0,32(s8)
  4a8a40:	8fc30024 	lw	v1,36(s8)
  4a8a44:	8fc2001c 	lw	v0,28(s8)
  4a8a48:	00000000 	nop
  4a8a4c:	00621025 	or	v0,v1,v0
  4a8a50:	afc20024 	sw	v0,36(s8)
  4a8a54:	8fc3001c 	lw	v1,28(s8)
  4a8a58:	8fc20018 	lw	v0,24(s8)
  4a8a5c:	00000000 	nop
  4a8a60:	00621026 	xor	v0,v1,v0
  4a8a64:	afc2001c 	sw	v0,28(s8)
  4a8a68:	8fc30018 	lw	v1,24(s8)
  4a8a6c:	8fc20020 	lw	v0,32(s8)
  4a8a70:	00000000 	nop
  4a8a74:	00621024 	and	v0,v1,v0
  4a8a78:	afc20018 	sw	v0,24(s8)
  4a8a7c:	8fc30020 	lw	v1,32(s8)
  4a8a80:	8fc20014 	lw	v0,20(s8)
  4a8a84:	00000000 	nop
  4a8a88:	00621026 	xor	v0,v1,v0
  4a8a8c:	afc20020 	sw	v0,32(s8)
  4a8a90:	8fc30014 	lw	v1,20(s8)
  4a8a94:	8fc2001c 	lw	v0,28(s8)
  4a8a98:	00000000 	nop
  4a8a9c:	00621026 	xor	v0,v1,v0
  4a8aa0:	afc20014 	sw	v0,20(s8)
  4a8aa4:	8fc3001c 	lw	v1,28(s8)
  4a8aa8:	8fc20024 	lw	v0,36(s8)
  4a8aac:	00000000 	nop
  4a8ab0:	00621024 	and	v0,v1,v0
  4a8ab4:	afc2001c 	sw	v0,28(s8)
  4a8ab8:	8fc30020 	lw	v1,32(s8)
  4a8abc:	8fc20018 	lw	v0,24(s8)
  4a8ac0:	00000000 	nop
  4a8ac4:	00621025 	or	v0,v1,v0
  4a8ac8:	afc20020 	sw	v0,32(s8)
  4a8acc:	8fc3001c 	lw	v1,28(s8)
  4a8ad0:	8fc20020 	lw	v0,32(s8)
  4a8ad4:	00000000 	nop
  4a8ad8:	00621026 	xor	v0,v1,v0
  4a8adc:	afc2001c 	sw	v0,28(s8)
  4a8ae0:	8fc30024 	lw	v1,36(s8)
  4a8ae4:	8fc20018 	lw	v0,24(s8)
  4a8ae8:	00000000 	nop
  4a8aec:	00621026 	xor	v0,v1,v0
  4a8af0:	afc20024 	sw	v0,36(s8)
  4a8af4:	8fc30020 	lw	v1,32(s8)
  4a8af8:	8fc20024 	lw	v0,36(s8)
  4a8afc:	00000000 	nop
  4a8b00:	00621024 	and	v0,v1,v0
  4a8b04:	afc20020 	sw	v0,32(s8)
  4a8b08:	8fc30018 	lw	v1,24(s8)
  4a8b0c:	8fc2001c 	lw	v0,28(s8)
  4a8b10:	00000000 	nop
  4a8b14:	00621026 	xor	v0,v1,v0
  4a8b18:	afc20018 	sw	v0,24(s8)
  4a8b1c:	8fc30020 	lw	v1,32(s8)
  4a8b20:	8fc20014 	lw	v0,20(s8)
  4a8b24:	00000000 	nop
  4a8b28:	00621026 	xor	v0,v1,v0
  4a8b2c:	afc20020 	sw	v0,32(s8)
  4a8b30:	8fc30018 	lw	v1,24(s8)
  4a8b34:	8fc20024 	lw	v0,36(s8)
  4a8b38:	00000000 	nop
  4a8b3c:	00621025 	or	v0,v1,v0
  4a8b40:	afc20018 	sw	v0,24(s8)
  4a8b44:	8fc30018 	lw	v1,24(s8)
  4a8b48:	8fc20014 	lw	v0,20(s8)
  4a8b4c:	00000000 	nop
  4a8b50:	00621026 	xor	v0,v1,v0
  4a8b54:	afc20018 	sw	v0,24(s8)
  4a8b58:	8fc30024 	lw	v1,36(s8)
  4a8b5c:	8fc2001c 	lw	v0,28(s8)
  4a8b60:	00000000 	nop
  4a8b64:	00621026 	xor	v0,v1,v0
  4a8b68:	afc20024 	sw	v0,36(s8)
  4a8b6c:	8fc20018 	lw	v0,24(s8)
  4a8b70:	00000000 	nop
  4a8b74:	afc20014 	sw	v0,20(s8)
  4a8b78:	8fc30018 	lw	v1,24(s8)
  4a8b7c:	8fc2001c 	lw	v0,28(s8)
  4a8b80:	00000000 	nop
  4a8b84:	00621025 	or	v0,v1,v0
  4a8b88:	afc20018 	sw	v0,24(s8)
  4a8b8c:	8fc30018 	lw	v1,24(s8)
  4a8b90:	8fc20024 	lw	v0,36(s8)
  4a8b94:	00000000 	nop
  4a8b98:	00621026 	xor	v0,v1,v0
  4a8b9c:	afc20018 	sw	v0,24(s8)
      LINTRANS(r1,r0,r2,r3,r4);
  4a8ba0:	8fc20018 	lw	v0,24(s8)
  4a8ba4:	00000000 	nop
  4a8ba8:	00021b40 	sll	v1,v0,0xd
  4a8bac:	000214c2 	srl	v0,v0,0x13
  4a8bb0:	00621025 	or	v0,v1,v0
  4a8bb4:	afc20018 	sw	v0,24(s8)
  4a8bb8:	8fc2001c 	lw	v0,28(s8)
  4a8bbc:	00000000 	nop
  4a8bc0:	000218c0 	sll	v1,v0,0x3
  4a8bc4:	00021742 	srl	v0,v0,0x1d
  4a8bc8:	00621025 	or	v0,v1,v0
  4a8bcc:	afc2001c 	sw	v0,28(s8)
  4a8bd0:	8fc30020 	lw	v1,32(s8)
  4a8bd4:	8fc2001c 	lw	v0,28(s8)
  4a8bd8:	00000000 	nop
  4a8bdc:	00621026 	xor	v0,v1,v0
  4a8be0:	afc20020 	sw	v0,32(s8)
  4a8be4:	8fc20018 	lw	v0,24(s8)
  4a8be8:	00000000 	nop
  4a8bec:	000210c0 	sll	v0,v0,0x3
  4a8bf0:	afc20024 	sw	v0,36(s8)
  4a8bf4:	8fc30014 	lw	v1,20(s8)
  4a8bf8:	8fc20018 	lw	v0,24(s8)
  4a8bfc:	00000000 	nop
  4a8c00:	00621026 	xor	v0,v1,v0
  4a8c04:	afc20014 	sw	v0,20(s8)
  4a8c08:	8fc30020 	lw	v1,32(s8)
  4a8c0c:	8fc20024 	lw	v0,36(s8)
  4a8c10:	00000000 	nop
  4a8c14:	00621026 	xor	v0,v1,v0
  4a8c18:	afc20020 	sw	v0,32(s8)
  4a8c1c:	8fc30014 	lw	v1,20(s8)
  4a8c20:	8fc2001c 	lw	v0,28(s8)
  4a8c24:	00000000 	nop
  4a8c28:	00621026 	xor	v0,v1,v0
  4a8c2c:	afc20014 	sw	v0,20(s8)
  4a8c30:	8fc20020 	lw	v0,32(s8)
  4a8c34:	00000000 	nop
  4a8c38:	000219c0 	sll	v1,v0,0x7
  4a8c3c:	00021642 	srl	v0,v0,0x19
  4a8c40:	00621025 	or	v0,v1,v0
  4a8c44:	afc20020 	sw	v0,32(s8)
  4a8c48:	8fc20014 	lw	v0,20(s8)
  4a8c4c:	00000000 	nop
  4a8c50:	00021840 	sll	v1,v0,0x1
  4a8c54:	000217c2 	srl	v0,v0,0x1f
  4a8c58:	00621025 	or	v0,v1,v0
  4a8c5c:	afc20014 	sw	v0,20(s8)
  4a8c60:	8fc3001c 	lw	v1,28(s8)
  4a8c64:	8fc20020 	lw	v0,32(s8)
  4a8c68:	00000000 	nop
  4a8c6c:	00621026 	xor	v0,v1,v0
  4a8c70:	afc2001c 	sw	v0,28(s8)
  4a8c74:	8fc20014 	lw	v0,20(s8)
  4a8c78:	00000000 	nop
  4a8c7c:	000211c0 	sll	v0,v0,0x7
  4a8c80:	afc20024 	sw	v0,36(s8)
  4a8c84:	8fc30018 	lw	v1,24(s8)
  4a8c88:	8fc20014 	lw	v0,20(s8)
  4a8c8c:	00000000 	nop
  4a8c90:	00621026 	xor	v0,v1,v0
  4a8c94:	afc20018 	sw	v0,24(s8)
  4a8c98:	8fc3001c 	lw	v1,28(s8)
  4a8c9c:	8fc20024 	lw	v0,36(s8)
  4a8ca0:	00000000 	nop
  4a8ca4:	00621026 	xor	v0,v1,v0
  4a8ca8:	afc2001c 	sw	v0,28(s8)
  4a8cac:	8fc30018 	lw	v1,24(s8)
  4a8cb0:	8fc20020 	lw	v0,32(s8)
  4a8cb4:	00000000 	nop
  4a8cb8:	00621026 	xor	v0,v1,v0
  4a8cbc:	afc20018 	sw	v0,24(s8)
  4a8cc0:	8fc2001c 	lw	v0,28(s8)
  4a8cc4:	00000000 	nop
  4a8cc8:	00021d80 	sll	v1,v0,0x16
  4a8ccc:	00021282 	srl	v0,v0,0xa
  4a8cd0:	00621025 	or	v0,v1,v0
  4a8cd4:	afc2001c 	sw	v0,28(s8)
  4a8cd8:	8fc20018 	lw	v0,24(s8)
  4a8cdc:	00000000 	nop
  4a8ce0:	00021940 	sll	v1,v0,0x5
  4a8ce4:	000216c2 	srl	v0,v0,0x1b
  4a8ce8:	00621025 	or	v0,v1,v0
  4a8cec:	afc20018 	sw	v0,24(s8)

      /* round 13  */
      KEYMIX(r1,r0,r2,r3,r4,48);
  4a8cf0:	8fc20008 	lw	v0,8(s8)
  4a8cf4:	00000000 	nop
  4a8cf8:	244200e0 	addiu	v0,v0,224
  4a8cfc:	8c430000 	lw	v1,0(v0)
  4a8d00:	8fc20018 	lw	v0,24(s8)
  4a8d04:	00000000 	nop
  4a8d08:	00431026 	xor	v0,v0,v1
  4a8d0c:	afc20018 	sw	v0,24(s8)
  4a8d10:	8fc20008 	lw	v0,8(s8)
  4a8d14:	00000000 	nop
  4a8d18:	244200e4 	addiu	v0,v0,228
  4a8d1c:	8c430000 	lw	v1,0(v0)
  4a8d20:	8fc20014 	lw	v0,20(s8)
  4a8d24:	00000000 	nop
  4a8d28:	00431026 	xor	v0,v0,v1
  4a8d2c:	afc20014 	sw	v0,20(s8)
  4a8d30:	8fc20008 	lw	v0,8(s8)
  4a8d34:	00000000 	nop
  4a8d38:	244200e8 	addiu	v0,v0,232
  4a8d3c:	8c430000 	lw	v1,0(v0)
  4a8d40:	8fc2001c 	lw	v0,28(s8)
  4a8d44:	00000000 	nop
  4a8d48:	00431026 	xor	v0,v0,v1
  4a8d4c:	afc2001c 	sw	v0,28(s8)
  4a8d50:	8fc20008 	lw	v0,8(s8)
  4a8d54:	00000000 	nop
  4a8d58:	244200ec 	addiu	v0,v0,236
  4a8d5c:	8c430000 	lw	v1,0(v0)
  4a8d60:	8fc20020 	lw	v0,32(s8)
  4a8d64:	00000000 	nop
  4a8d68:	00431026 	xor	v0,v0,v1
  4a8d6c:	afc20020 	sw	v0,32(s8)
      S4(r1,r0,r2,r3,r4) 
  4a8d70:	8fc30014 	lw	v1,20(s8)
  4a8d74:	8fc20020 	lw	v0,32(s8)
  4a8d78:	00000000 	nop
  4a8d7c:	00621026 	xor	v0,v1,v0
  4a8d80:	afc20014 	sw	v0,20(s8)
  4a8d84:	8fc20020 	lw	v0,32(s8)
  4a8d88:	00000000 	nop
  4a8d8c:	00021027 	nor	v0,zero,v0
  4a8d90:	afc20020 	sw	v0,32(s8)
  4a8d94:	8fc3001c 	lw	v1,28(s8)
  4a8d98:	8fc20020 	lw	v0,32(s8)
  4a8d9c:	00000000 	nop
  4a8da0:	00621026 	xor	v0,v1,v0
  4a8da4:	afc2001c 	sw	v0,28(s8)
  4a8da8:	8fc30020 	lw	v1,32(s8)
  4a8dac:	8fc20018 	lw	v0,24(s8)
  4a8db0:	00000000 	nop
  4a8db4:	00621026 	xor	v0,v1,v0
  4a8db8:	afc20020 	sw	v0,32(s8)
  4a8dbc:	8fc20014 	lw	v0,20(s8)
  4a8dc0:	00000000 	nop
  4a8dc4:	afc20024 	sw	v0,36(s8)
  4a8dc8:	8fc30014 	lw	v1,20(s8)
  4a8dcc:	8fc20020 	lw	v0,32(s8)
  4a8dd0:	00000000 	nop
  4a8dd4:	00621024 	and	v0,v1,v0
  4a8dd8:	afc20014 	sw	v0,20(s8)
  4a8ddc:	8fc30014 	lw	v1,20(s8)
  4a8de0:	8fc2001c 	lw	v0,28(s8)
  4a8de4:	00000000 	nop
  4a8de8:	00621026 	xor	v0,v1,v0
  4a8dec:	afc20014 	sw	v0,20(s8)
  4a8df0:	8fc30024 	lw	v1,36(s8)
  4a8df4:	8fc20020 	lw	v0,32(s8)
  4a8df8:	00000000 	nop
  4a8dfc:	00621026 	xor	v0,v1,v0
  4a8e00:	afc20024 	sw	v0,36(s8)
  4a8e04:	8fc30018 	lw	v1,24(s8)
  4a8e08:	8fc20024 	lw	v0,36(s8)
  4a8e0c:	00000000 	nop
  4a8e10:	00621026 	xor	v0,v1,v0
  4a8e14:	afc20018 	sw	v0,24(s8)
  4a8e18:	8fc3001c 	lw	v1,28(s8)
  4a8e1c:	8fc20024 	lw	v0,36(s8)
  4a8e20:	00000000 	nop
  4a8e24:	00621024 	and	v0,v1,v0
  4a8e28:	afc2001c 	sw	v0,28(s8)
  4a8e2c:	8fc3001c 	lw	v1,28(s8)
  4a8e30:	8fc20018 	lw	v0,24(s8)
  4a8e34:	00000000 	nop
  4a8e38:	00621026 	xor	v0,v1,v0
  4a8e3c:	afc2001c 	sw	v0,28(s8)
  4a8e40:	8fc30018 	lw	v1,24(s8)
  4a8e44:	8fc20014 	lw	v0,20(s8)
  4a8e48:	00000000 	nop
  4a8e4c:	00621024 	and	v0,v1,v0
  4a8e50:	afc20018 	sw	v0,24(s8)
  4a8e54:	8fc30020 	lw	v1,32(s8)
  4a8e58:	8fc20018 	lw	v0,24(s8)
  4a8e5c:	00000000 	nop
  4a8e60:	00621026 	xor	v0,v1,v0
  4a8e64:	afc20020 	sw	v0,32(s8)
  4a8e68:	8fc30024 	lw	v1,36(s8)
  4a8e6c:	8fc20014 	lw	v0,20(s8)
  4a8e70:	00000000 	nop
  4a8e74:	00621025 	or	v0,v1,v0
  4a8e78:	afc20024 	sw	v0,36(s8)
  4a8e7c:	8fc30024 	lw	v1,36(s8)
  4a8e80:	8fc20018 	lw	v0,24(s8)
  4a8e84:	00000000 	nop
  4a8e88:	00621026 	xor	v0,v1,v0
  4a8e8c:	afc20024 	sw	v0,36(s8)
  4a8e90:	8fc30018 	lw	v1,24(s8)
  4a8e94:	8fc20020 	lw	v0,32(s8)
  4a8e98:	00000000 	nop
  4a8e9c:	00621025 	or	v0,v1,v0
  4a8ea0:	afc20018 	sw	v0,24(s8)
  4a8ea4:	8fc30018 	lw	v1,24(s8)
  4a8ea8:	8fc2001c 	lw	v0,28(s8)
  4a8eac:	00000000 	nop
  4a8eb0:	00621026 	xor	v0,v1,v0
  4a8eb4:	afc20018 	sw	v0,24(s8)
  4a8eb8:	8fc3001c 	lw	v1,28(s8)
  4a8ebc:	8fc20020 	lw	v0,32(s8)
  4a8ec0:	00000000 	nop
  4a8ec4:	00621024 	and	v0,v1,v0
  4a8ec8:	afc2001c 	sw	v0,28(s8)
  4a8ecc:	8fc20018 	lw	v0,24(s8)
  4a8ed0:	00000000 	nop
  4a8ed4:	00021027 	nor	v0,zero,v0
  4a8ed8:	afc20018 	sw	v0,24(s8)
  4a8edc:	8fc30024 	lw	v1,36(s8)
  4a8ee0:	8fc2001c 	lw	v0,28(s8)
  4a8ee4:	00000000 	nop
  4a8ee8:	00621026 	xor	v0,v1,v0
  4a8eec:	afc20024 	sw	v0,36(s8)
      LINTRANS(r0,r4,r1,r3,r2);
  4a8ef0:	8fc20014 	lw	v0,20(s8)
  4a8ef4:	00000000 	nop
  4a8ef8:	00021b40 	sll	v1,v0,0xd
  4a8efc:	000214c2 	srl	v0,v0,0x13
  4a8f00:	00621025 	or	v0,v1,v0
  4a8f04:	afc20014 	sw	v0,20(s8)
  4a8f08:	8fc20018 	lw	v0,24(s8)
  4a8f0c:	00000000 	nop
  4a8f10:	000218c0 	sll	v1,v0,0x3
  4a8f14:	00021742 	srl	v0,v0,0x1d
  4a8f18:	00621025 	or	v0,v1,v0
  4a8f1c:	afc20018 	sw	v0,24(s8)
  4a8f20:	8fc30020 	lw	v1,32(s8)
  4a8f24:	8fc20018 	lw	v0,24(s8)
  4a8f28:	00000000 	nop
  4a8f2c:	00621026 	xor	v0,v1,v0
  4a8f30:	afc20020 	sw	v0,32(s8)
  4a8f34:	8fc20014 	lw	v0,20(s8)
  4a8f38:	00000000 	nop
  4a8f3c:	000210c0 	sll	v0,v0,0x3
  4a8f40:	afc2001c 	sw	v0,28(s8)
  4a8f44:	8fc30024 	lw	v1,36(s8)
  4a8f48:	8fc20014 	lw	v0,20(s8)
  4a8f4c:	00000000 	nop
  4a8f50:	00621026 	xor	v0,v1,v0
  4a8f54:	afc20024 	sw	v0,36(s8)
  4a8f58:	8fc30020 	lw	v1,32(s8)
  4a8f5c:	8fc2001c 	lw	v0,28(s8)
  4a8f60:	00000000 	nop
  4a8f64:	00621026 	xor	v0,v1,v0
  4a8f68:	afc20020 	sw	v0,32(s8)
  4a8f6c:	8fc30024 	lw	v1,36(s8)
  4a8f70:	8fc20018 	lw	v0,24(s8)
  4a8f74:	00000000 	nop
  4a8f78:	00621026 	xor	v0,v1,v0
  4a8f7c:	afc20024 	sw	v0,36(s8)
  4a8f80:	8fc20020 	lw	v0,32(s8)
  4a8f84:	00000000 	nop
  4a8f88:	000219c0 	sll	v1,v0,0x7
  4a8f8c:	00021642 	srl	v0,v0,0x19
  4a8f90:	00621025 	or	v0,v1,v0
  4a8f94:	afc20020 	sw	v0,32(s8)
  4a8f98:	8fc20024 	lw	v0,36(s8)
  4a8f9c:	00000000 	nop
  4a8fa0:	00021840 	sll	v1,v0,0x1
  4a8fa4:	000217c2 	srl	v0,v0,0x1f
  4a8fa8:	00621025 	or	v0,v1,v0
  4a8fac:	afc20024 	sw	v0,36(s8)
  4a8fb0:	8fc30018 	lw	v1,24(s8)
  4a8fb4:	8fc20020 	lw	v0,32(s8)
  4a8fb8:	00000000 	nop
  4a8fbc:	00621026 	xor	v0,v1,v0
  4a8fc0:	afc20018 	sw	v0,24(s8)
  4a8fc4:	8fc20024 	lw	v0,36(s8)
  4a8fc8:	00000000 	nop
  4a8fcc:	000211c0 	sll	v0,v0,0x7
  4a8fd0:	afc2001c 	sw	v0,28(s8)
  4a8fd4:	8fc30014 	lw	v1,20(s8)
  4a8fd8:	8fc20024 	lw	v0,36(s8)
  4a8fdc:	00000000 	nop
  4a8fe0:	00621026 	xor	v0,v1,v0
  4a8fe4:	afc20014 	sw	v0,20(s8)
  4a8fe8:	8fc30018 	lw	v1,24(s8)
  4a8fec:	8fc2001c 	lw	v0,28(s8)
  4a8ff0:	00000000 	nop
  4a8ff4:	00621026 	xor	v0,v1,v0
  4a8ff8:	afc20018 	sw	v0,24(s8)
  4a8ffc:	8fc30014 	lw	v1,20(s8)
  4a9000:	8fc20020 	lw	v0,32(s8)
  4a9004:	00000000 	nop
  4a9008:	00621026 	xor	v0,v1,v0
  4a900c:	afc20014 	sw	v0,20(s8)
  4a9010:	8fc20018 	lw	v0,24(s8)
  4a9014:	00000000 	nop
  4a9018:	00021d80 	sll	v1,v0,0x16
  4a901c:	00021282 	srl	v0,v0,0xa
  4a9020:	00621025 	or	v0,v1,v0
  4a9024:	afc20018 	sw	v0,24(s8)
  4a9028:	8fc20014 	lw	v0,20(s8)
  4a902c:	00000000 	nop
  4a9030:	00021940 	sll	v1,v0,0x5
  4a9034:	000216c2 	srl	v0,v0,0x1b
  4a9038:	00621025 	or	v0,v1,v0
  4a903c:	afc20014 	sw	v0,20(s8)

      /* round 14  */
      KEYMIX(r0,r4,r1,r3,r2,52);
  4a9040:	8fc20008 	lw	v0,8(s8)
  4a9044:	00000000 	nop
  4a9048:	244200f0 	addiu	v0,v0,240
  4a904c:	8c430000 	lw	v1,0(v0)
  4a9050:	8fc20014 	lw	v0,20(s8)
  4a9054:	00000000 	nop
  4a9058:	00431026 	xor	v0,v0,v1
  4a905c:	afc20014 	sw	v0,20(s8)
  4a9060:	8fc20008 	lw	v0,8(s8)
  4a9064:	00000000 	nop
  4a9068:	244200f4 	addiu	v0,v0,244
  4a906c:	8c430000 	lw	v1,0(v0)
  4a9070:	8fc20024 	lw	v0,36(s8)
  4a9074:	00000000 	nop
  4a9078:	00431026 	xor	v0,v0,v1
  4a907c:	afc20024 	sw	v0,36(s8)
  4a9080:	8fc20008 	lw	v0,8(s8)
  4a9084:	00000000 	nop
  4a9088:	244200f8 	addiu	v0,v0,248
  4a908c:	8c430000 	lw	v1,0(v0)
  4a9090:	8fc20018 	lw	v0,24(s8)
  4a9094:	00000000 	nop
  4a9098:	00431026 	xor	v0,v0,v1
  4a909c:	afc20018 	sw	v0,24(s8)
  4a90a0:	8fc20008 	lw	v0,8(s8)
  4a90a4:	00000000 	nop
  4a90a8:	244200fc 	addiu	v0,v0,252
  4a90ac:	8c430000 	lw	v1,0(v0)
  4a90b0:	8fc20020 	lw	v0,32(s8)
  4a90b4:	00000000 	nop
  4a90b8:	00431026 	xor	v0,v0,v1
  4a90bc:	afc20020 	sw	v0,32(s8)
      S5(r0,r4,r1,r3,r2);
  4a90c0:	8fc30014 	lw	v1,20(s8)
  4a90c4:	8fc20024 	lw	v0,36(s8)
  4a90c8:	00000000 	nop
  4a90cc:	00621026 	xor	v0,v1,v0
  4a90d0:	afc20014 	sw	v0,20(s8)
  4a90d4:	8fc30024 	lw	v1,36(s8)
  4a90d8:	8fc20020 	lw	v0,32(s8)
  4a90dc:	00000000 	nop
  4a90e0:	00621026 	xor	v0,v1,v0
  4a90e4:	afc20024 	sw	v0,36(s8)
  4a90e8:	8fc20020 	lw	v0,32(s8)
  4a90ec:	00000000 	nop
  4a90f0:	00021027 	nor	v0,zero,v0
  4a90f4:	afc20020 	sw	v0,32(s8)
  4a90f8:	8fc20024 	lw	v0,36(s8)
  4a90fc:	00000000 	nop
  4a9100:	afc2001c 	sw	v0,28(s8)
  4a9104:	8fc30024 	lw	v1,36(s8)
  4a9108:	8fc20014 	lw	v0,20(s8)
  4a910c:	00000000 	nop
  4a9110:	00621024 	and	v0,v1,v0
  4a9114:	afc20024 	sw	v0,36(s8)
  4a9118:	8fc30018 	lw	v1,24(s8)
  4a911c:	8fc20020 	lw	v0,32(s8)
  4a9120:	00000000 	nop
  4a9124:	00621026 	xor	v0,v1,v0
  4a9128:	afc20018 	sw	v0,24(s8)
  4a912c:	8fc30024 	lw	v1,36(s8)
  4a9130:	8fc20018 	lw	v0,24(s8)
  4a9134:	00000000 	nop
  4a9138:	00621026 	xor	v0,v1,v0
  4a913c:	afc20024 	sw	v0,36(s8)
  4a9140:	8fc30018 	lw	v1,24(s8)
  4a9144:	8fc2001c 	lw	v0,28(s8)
  4a9148:	00000000 	nop
  4a914c:	00621025 	or	v0,v1,v0
  4a9150:	afc20018 	sw	v0,24(s8)
  4a9154:	8fc3001c 	lw	v1,28(s8)
  4a9158:	8fc20020 	lw	v0,32(s8)
  4a915c:	00000000 	nop
  4a9160:	00621026 	xor	v0,v1,v0
  4a9164:	afc2001c 	sw	v0,28(s8)
  4a9168:	8fc30020 	lw	v1,32(s8)
  4a916c:	8fc20024 	lw	v0,36(s8)
  4a9170:	00000000 	nop
  4a9174:	00621024 	and	v0,v1,v0
  4a9178:	afc20020 	sw	v0,32(s8)
  4a917c:	8fc30020 	lw	v1,32(s8)
  4a9180:	8fc20014 	lw	v0,20(s8)
  4a9184:	00000000 	nop
  4a9188:	00621026 	xor	v0,v1,v0
  4a918c:	afc20020 	sw	v0,32(s8)
  4a9190:	8fc3001c 	lw	v1,28(s8)
  4a9194:	8fc20024 	lw	v0,36(s8)
  4a9198:	00000000 	nop
  4a919c:	00621026 	xor	v0,v1,v0
  4a91a0:	afc2001c 	sw	v0,28(s8)
  4a91a4:	8fc3001c 	lw	v1,28(s8)
  4a91a8:	8fc20018 	lw	v0,24(s8)
  4a91ac:	00000000 	nop
  4a91b0:	00621026 	xor	v0,v1,v0
  4a91b4:	afc2001c 	sw	v0,28(s8)
  4a91b8:	8fc30018 	lw	v1,24(s8)
  4a91bc:	8fc20014 	lw	v0,20(s8)
  4a91c0:	00000000 	nop
  4a91c4:	00621026 	xor	v0,v1,v0
  4a91c8:	afc20018 	sw	v0,24(s8)
  4a91cc:	8fc30014 	lw	v1,20(s8)
  4a91d0:	8fc20020 	lw	v0,32(s8)
  4a91d4:	00000000 	nop
  4a91d8:	00621024 	and	v0,v1,v0
  4a91dc:	afc20014 	sw	v0,20(s8)
  4a91e0:	8fc20018 	lw	v0,24(s8)
  4a91e4:	00000000 	nop
  4a91e8:	00021027 	nor	v0,zero,v0
  4a91ec:	afc20018 	sw	v0,24(s8)
  4a91f0:	8fc30014 	lw	v1,20(s8)
  4a91f4:	8fc2001c 	lw	v0,28(s8)
  4a91f8:	00000000 	nop
  4a91fc:	00621026 	xor	v0,v1,v0
  4a9200:	afc20014 	sw	v0,20(s8)
  4a9204:	8fc3001c 	lw	v1,28(s8)
  4a9208:	8fc20020 	lw	v0,32(s8)
  4a920c:	00000000 	nop
  4a9210:	00621025 	or	v0,v1,v0
  4a9214:	afc2001c 	sw	v0,28(s8)
  4a9218:	8fc30018 	lw	v1,24(s8)
  4a921c:	8fc2001c 	lw	v0,28(s8)
  4a9220:	00000000 	nop
  4a9224:	00621026 	xor	v0,v1,v0
  4a9228:	afc20018 	sw	v0,24(s8)
      LINTRANS(r4,r3,r0,r1,r2);
  4a922c:	8fc20024 	lw	v0,36(s8)
  4a9230:	00000000 	nop
  4a9234:	00021b40 	sll	v1,v0,0xd
  4a9238:	000214c2 	srl	v0,v0,0x13
  4a923c:	00621025 	or	v0,v1,v0
  4a9240:	afc20024 	sw	v0,36(s8)
  4a9244:	8fc20014 	lw	v0,20(s8)
  4a9248:	00000000 	nop
  4a924c:	000218c0 	sll	v1,v0,0x3
  4a9250:	00021742 	srl	v0,v0,0x1d
  4a9254:	00621025 	or	v0,v1,v0
  4a9258:	afc20014 	sw	v0,20(s8)
  4a925c:	8fc30018 	lw	v1,24(s8)
  4a9260:	8fc20014 	lw	v0,20(s8)
  4a9264:	00000000 	nop
  4a9268:	00621026 	xor	v0,v1,v0
  4a926c:	afc20018 	sw	v0,24(s8)
  4a9270:	8fc20024 	lw	v0,36(s8)
  4a9274:	00000000 	nop
  4a9278:	000210c0 	sll	v0,v0,0x3
  4a927c:	afc2001c 	sw	v0,28(s8)
  4a9280:	8fc30020 	lw	v1,32(s8)
  4a9284:	8fc20024 	lw	v0,36(s8)
  4a9288:	00000000 	nop
  4a928c:	00621026 	xor	v0,v1,v0
  4a9290:	afc20020 	sw	v0,32(s8)
  4a9294:	8fc30018 	lw	v1,24(s8)
  4a9298:	8fc2001c 	lw	v0,28(s8)
  4a929c:	00000000 	nop
  4a92a0:	00621026 	xor	v0,v1,v0
  4a92a4:	afc20018 	sw	v0,24(s8)
  4a92a8:	8fc30020 	lw	v1,32(s8)
  4a92ac:	8fc20014 	lw	v0,20(s8)
  4a92b0:	00000000 	nop
  4a92b4:	00621026 	xor	v0,v1,v0
  4a92b8:	afc20020 	sw	v0,32(s8)
  4a92bc:	8fc20018 	lw	v0,24(s8)
  4a92c0:	00000000 	nop
  4a92c4:	000219c0 	sll	v1,v0,0x7
  4a92c8:	00021642 	srl	v0,v0,0x19
  4a92cc:	00621025 	or	v0,v1,v0
  4a92d0:	afc20018 	sw	v0,24(s8)
  4a92d4:	8fc20020 	lw	v0,32(s8)
  4a92d8:	00000000 	nop
  4a92dc:	00021840 	sll	v1,v0,0x1
  4a92e0:	000217c2 	srl	v0,v0,0x1f
  4a92e4:	00621025 	or	v0,v1,v0
  4a92e8:	afc20020 	sw	v0,32(s8)
  4a92ec:	8fc30014 	lw	v1,20(s8)
  4a92f0:	8fc20018 	lw	v0,24(s8)
  4a92f4:	00000000 	nop
  4a92f8:	00621026 	xor	v0,v1,v0
  4a92fc:	afc20014 	sw	v0,20(s8)
  4a9300:	8fc20020 	lw	v0,32(s8)
  4a9304:	00000000 	nop
  4a9308:	000211c0 	sll	v0,v0,0x7
  4a930c:	afc2001c 	sw	v0,28(s8)
  4a9310:	8fc30024 	lw	v1,36(s8)
  4a9314:	8fc20020 	lw	v0,32(s8)
  4a9318:	00000000 	nop
  4a931c:	00621026 	xor	v0,v1,v0
  4a9320:	afc20024 	sw	v0,36(s8)
  4a9324:	8fc30014 	lw	v1,20(s8)
  4a9328:	8fc2001c 	lw	v0,28(s8)
  4a932c:	00000000 	nop
  4a9330:	00621026 	xor	v0,v1,v0
  4a9334:	afc20014 	sw	v0,20(s8)
  4a9338:	8fc30024 	lw	v1,36(s8)
  4a933c:	8fc20018 	lw	v0,24(s8)
  4a9340:	00000000 	nop
  4a9344:	00621026 	xor	v0,v1,v0
  4a9348:	afc20024 	sw	v0,36(s8)
  4a934c:	8fc20014 	lw	v0,20(s8)
  4a9350:	00000000 	nop
  4a9354:	00021d80 	sll	v1,v0,0x16
  4a9358:	00021282 	srl	v0,v0,0xa
  4a935c:	00621025 	or	v0,v1,v0
  4a9360:	afc20014 	sw	v0,20(s8)
  4a9364:	8fc20024 	lw	v0,36(s8)
  4a9368:	00000000 	nop
  4a936c:	00021940 	sll	v1,v0,0x5
  4a9370:	000216c2 	srl	v0,v0,0x1b
  4a9374:	00621025 	or	v0,v1,v0
  4a9378:	afc20024 	sw	v0,36(s8)

      /* round 15  */
      KEYMIX(r4,r3,r0,r1,r2,56);
  4a937c:	8fc20008 	lw	v0,8(s8)
  4a9380:	00000000 	nop
  4a9384:	24420100 	addiu	v0,v0,256
  4a9388:	8c430000 	lw	v1,0(v0)
  4a938c:	8fc20024 	lw	v0,36(s8)
  4a9390:	00000000 	nop
  4a9394:	00431026 	xor	v0,v0,v1
  4a9398:	afc20024 	sw	v0,36(s8)
  4a939c:	8fc20008 	lw	v0,8(s8)
  4a93a0:	00000000 	nop
  4a93a4:	24420104 	addiu	v0,v0,260
  4a93a8:	8c430000 	lw	v1,0(v0)
  4a93ac:	8fc20020 	lw	v0,32(s8)
  4a93b0:	00000000 	nop
  4a93b4:	00431026 	xor	v0,v0,v1
  4a93b8:	afc20020 	sw	v0,32(s8)
  4a93bc:	8fc20008 	lw	v0,8(s8)
  4a93c0:	00000000 	nop
  4a93c4:	24420108 	addiu	v0,v0,264
  4a93c8:	8c430000 	lw	v1,0(v0)
  4a93cc:	8fc20014 	lw	v0,20(s8)
  4a93d0:	00000000 	nop
  4a93d4:	00431026 	xor	v0,v0,v1
  4a93d8:	afc20014 	sw	v0,20(s8)
  4a93dc:	8fc20008 	lw	v0,8(s8)
  4a93e0:	00000000 	nop
  4a93e4:	2442010c 	addiu	v0,v0,268
  4a93e8:	8c430000 	lw	v1,0(v0)
  4a93ec:	8fc20018 	lw	v0,24(s8)
  4a93f0:	00000000 	nop
  4a93f4:	00431026 	xor	v0,v0,v1
  4a93f8:	afc20018 	sw	v0,24(s8)
      S6(r4,r3,r0,r1,r2) 
  4a93fc:	8fc20014 	lw	v0,20(s8)
  4a9400:	00000000 	nop
  4a9404:	00021027 	nor	v0,zero,v0
  4a9408:	afc20014 	sw	v0,20(s8)
  4a940c:	8fc20018 	lw	v0,24(s8)
  4a9410:	00000000 	nop
  4a9414:	afc2001c 	sw	v0,28(s8)
  4a9418:	8fc30018 	lw	v1,24(s8)
  4a941c:	8fc20024 	lw	v0,36(s8)
  4a9420:	00000000 	nop
  4a9424:	00621024 	and	v0,v1,v0
  4a9428:	afc20018 	sw	v0,24(s8)
  4a942c:	8fc30024 	lw	v1,36(s8)
  4a9430:	8fc2001c 	lw	v0,28(s8)
  4a9434:	00000000 	nop
  4a9438:	00621026 	xor	v0,v1,v0
  4a943c:	afc20024 	sw	v0,36(s8)
  4a9440:	8fc30018 	lw	v1,24(s8)
  4a9444:	8fc20014 	lw	v0,20(s8)
  4a9448:	00000000 	nop
  4a944c:	00621026 	xor	v0,v1,v0
  4a9450:	afc20018 	sw	v0,24(s8)
  4a9454:	8fc30014 	lw	v1,20(s8)
  4a9458:	8fc2001c 	lw	v0,28(s8)
  4a945c:	00000000 	nop
  4a9460:	00621025 	or	v0,v1,v0
  4a9464:	afc20014 	sw	v0,20(s8)
  4a9468:	8fc30020 	lw	v1,32(s8)
  4a946c:	8fc20018 	lw	v0,24(s8)
  4a9470:	00000000 	nop
  4a9474:	00621026 	xor	v0,v1,v0
  4a9478:	afc20020 	sw	v0,32(s8)
  4a947c:	8fc30014 	lw	v1,20(s8)
  4a9480:	8fc20024 	lw	v0,36(s8)
  4a9484:	00000000 	nop
  4a9488:	00621026 	xor	v0,v1,v0
  4a948c:	afc20014 	sw	v0,20(s8)
  4a9490:	8fc30024 	lw	v1,36(s8)
  4a9494:	8fc20020 	lw	v0,32(s8)
  4a9498:	00000000 	nop
  4a949c:	00621025 	or	v0,v1,v0
  4a94a0:	afc20024 	sw	v0,36(s8)
  4a94a4:	8fc30014 	lw	v1,20(s8)
  4a94a8:	8fc20020 	lw	v0,32(s8)
  4a94ac:	00000000 	nop
  4a94b0:	00621026 	xor	v0,v1,v0
  4a94b4:	afc20014 	sw	v0,20(s8)
  4a94b8:	8fc3001c 	lw	v1,28(s8)
  4a94bc:	8fc20024 	lw	v0,36(s8)
  4a94c0:	00000000 	nop
  4a94c4:	00621026 	xor	v0,v1,v0
  4a94c8:	afc2001c 	sw	v0,28(s8)
  4a94cc:	8fc30024 	lw	v1,36(s8)
  4a94d0:	8fc20018 	lw	v0,24(s8)
  4a94d4:	00000000 	nop
  4a94d8:	00621025 	or	v0,v1,v0
  4a94dc:	afc20024 	sw	v0,36(s8)
  4a94e0:	8fc30024 	lw	v1,36(s8)
  4a94e4:	8fc20014 	lw	v0,20(s8)
  4a94e8:	00000000 	nop
  4a94ec:	00621026 	xor	v0,v1,v0
  4a94f0:	afc20024 	sw	v0,36(s8)
  4a94f4:	8fc3001c 	lw	v1,28(s8)
  4a94f8:	8fc20018 	lw	v0,24(s8)
  4a94fc:	00000000 	nop
  4a9500:	00621026 	xor	v0,v1,v0
  4a9504:	afc2001c 	sw	v0,28(s8)
  4a9508:	8fc3001c 	lw	v1,28(s8)
  4a950c:	8fc20024 	lw	v0,36(s8)
  4a9510:	00000000 	nop
  4a9514:	00621026 	xor	v0,v1,v0
  4a9518:	afc2001c 	sw	v0,28(s8)
  4a951c:	8fc20018 	lw	v0,24(s8)
  4a9520:	00000000 	nop
  4a9524:	00021027 	nor	v0,zero,v0
  4a9528:	afc20018 	sw	v0,24(s8)
  4a952c:	8fc30014 	lw	v1,20(s8)
  4a9530:	8fc2001c 	lw	v0,28(s8)
  4a9534:	00000000 	nop
  4a9538:	00621024 	and	v0,v1,v0
  4a953c:	afc20014 	sw	v0,20(s8)
  4a9540:	8fc30014 	lw	v1,20(s8)
  4a9544:	8fc20018 	lw	v0,24(s8)
  4a9548:	00000000 	nop
  4a954c:	00621026 	xor	v0,v1,v0
  4a9550:	afc20014 	sw	v0,20(s8)
      LINTRANS(r4,r3,r2,r0,r1);
  4a9554:	8fc20024 	lw	v0,36(s8)
  4a9558:	00000000 	nop
  4a955c:	00021b40 	sll	v1,v0,0xd
  4a9560:	000214c2 	srl	v0,v0,0x13
  4a9564:	00621025 	or	v0,v1,v0
  4a9568:	afc20024 	sw	v0,36(s8)
  4a956c:	8fc2001c 	lw	v0,28(s8)
  4a9570:	00000000 	nop
  4a9574:	000218c0 	sll	v1,v0,0x3
  4a9578:	00021742 	srl	v0,v0,0x1d
  4a957c:	00621025 	or	v0,v1,v0
  4a9580:	afc2001c 	sw	v0,28(s8)
  4a9584:	8fc30014 	lw	v1,20(s8)
  4a9588:	8fc2001c 	lw	v0,28(s8)
  4a958c:	00000000 	nop
  4a9590:	00621026 	xor	v0,v1,v0
  4a9594:	afc20014 	sw	v0,20(s8)
  4a9598:	8fc20024 	lw	v0,36(s8)
  4a959c:	00000000 	nop
  4a95a0:	000210c0 	sll	v0,v0,0x3
  4a95a4:	afc20018 	sw	v0,24(s8)
  4a95a8:	8fc30020 	lw	v1,32(s8)
  4a95ac:	8fc20024 	lw	v0,36(s8)
  4a95b0:	00000000 	nop
  4a95b4:	00621026 	xor	v0,v1,v0
  4a95b8:	afc20020 	sw	v0,32(s8)
  4a95bc:	8fc30014 	lw	v1,20(s8)
  4a95c0:	8fc20018 	lw	v0,24(s8)
  4a95c4:	00000000 	nop
  4a95c8:	00621026 	xor	v0,v1,v0
  4a95cc:	afc20014 	sw	v0,20(s8)
  4a95d0:	8fc30020 	lw	v1,32(s8)
  4a95d4:	8fc2001c 	lw	v0,28(s8)
  4a95d8:	00000000 	nop
  4a95dc:	00621026 	xor	v0,v1,v0
  4a95e0:	afc20020 	sw	v0,32(s8)
  4a95e4:	8fc20014 	lw	v0,20(s8)
  4a95e8:	00000000 	nop
  4a95ec:	000219c0 	sll	v1,v0,0x7
  4a95f0:	00021642 	srl	v0,v0,0x19
  4a95f4:	00621025 	or	v0,v1,v0
  4a95f8:	afc20014 	sw	v0,20(s8)
  4a95fc:	8fc20020 	lw	v0,32(s8)
  4a9600:	00000000 	nop
  4a9604:	00021840 	sll	v1,v0,0x1
  4a9608:	000217c2 	srl	v0,v0,0x1f
  4a960c:	00621025 	or	v0,v1,v0
  4a9610:	afc20020 	sw	v0,32(s8)
  4a9614:	8fc3001c 	lw	v1,28(s8)
  4a9618:	8fc20014 	lw	v0,20(s8)
  4a961c:	00000000 	nop
  4a9620:	00621026 	xor	v0,v1,v0
  4a9624:	afc2001c 	sw	v0,28(s8)
  4a9628:	8fc20020 	lw	v0,32(s8)
  4a962c:	00000000 	nop
  4a9630:	000211c0 	sll	v0,v0,0x7
  4a9634:	afc20018 	sw	v0,24(s8)
  4a9638:	8fc30024 	lw	v1,36(s8)
  4a963c:	8fc20020 	lw	v0,32(s8)
  4a9640:	00000000 	nop
  4a9644:	00621026 	xor	v0,v1,v0
  4a9648:	afc20024 	sw	v0,36(s8)
  4a964c:	8fc3001c 	lw	v1,28(s8)
  4a9650:	8fc20018 	lw	v0,24(s8)
  4a9654:	00000000 	nop
  4a9658:	00621026 	xor	v0,v1,v0
  4a965c:	afc2001c 	sw	v0,28(s8)
  4a9660:	8fc30024 	lw	v1,36(s8)
  4a9664:	8fc20014 	lw	v0,20(s8)
  4a9668:	00000000 	nop
  4a966c:	00621026 	xor	v0,v1,v0
  4a9670:	afc20024 	sw	v0,36(s8)
  4a9674:	8fc2001c 	lw	v0,28(s8)
  4a9678:	00000000 	nop
  4a967c:	00021d80 	sll	v1,v0,0x16
  4a9680:	00021282 	srl	v0,v0,0xa
  4a9684:	00621025 	or	v0,v1,v0
  4a9688:	afc2001c 	sw	v0,28(s8)
  4a968c:	8fc20024 	lw	v0,36(s8)
  4a9690:	00000000 	nop
  4a9694:	00021940 	sll	v1,v0,0x5
  4a9698:	000216c2 	srl	v0,v0,0x1b
  4a969c:	00621025 	or	v0,v1,v0
  4a96a0:	afc20024 	sw	v0,36(s8)

      /* round 16  */
      KEYMIX(r4,r3,r2,r0,r1,60);
  4a96a4:	8fc20008 	lw	v0,8(s8)
  4a96a8:	00000000 	nop
  4a96ac:	24420110 	addiu	v0,v0,272
  4a96b0:	8c430000 	lw	v1,0(v0)
  4a96b4:	8fc20024 	lw	v0,36(s8)
  4a96b8:	00000000 	nop
  4a96bc:	00431026 	xor	v0,v0,v1
  4a96c0:	afc20024 	sw	v0,36(s8)
  4a96c4:	8fc20008 	lw	v0,8(s8)
  4a96c8:	00000000 	nop
  4a96cc:	24420114 	addiu	v0,v0,276
  4a96d0:	8c430000 	lw	v1,0(v0)
  4a96d4:	8fc20020 	lw	v0,32(s8)
  4a96d8:	00000000 	nop
  4a96dc:	00431026 	xor	v0,v0,v1
  4a96e0:	afc20020 	sw	v0,32(s8)
  4a96e4:	8fc20008 	lw	v0,8(s8)
  4a96e8:	00000000 	nop
  4a96ec:	24420118 	addiu	v0,v0,280
  4a96f0:	8c430000 	lw	v1,0(v0)
  4a96f4:	8fc2001c 	lw	v0,28(s8)
  4a96f8:	00000000 	nop
  4a96fc:	00431026 	xor	v0,v0,v1
  4a9700:	afc2001c 	sw	v0,28(s8)
  4a9704:	8fc20008 	lw	v0,8(s8)
  4a9708:	00000000 	nop
  4a970c:	2442011c 	addiu	v0,v0,284
  4a9710:	8c430000 	lw	v1,0(v0)
  4a9714:	8fc20014 	lw	v0,20(s8)
  4a9718:	00000000 	nop
  4a971c:	00431026 	xor	v0,v0,v1
  4a9720:	afc20014 	sw	v0,20(s8)
      S7(r4,r3,r2,r0,r1);
  4a9724:	8fc2001c 	lw	v0,28(s8)
  4a9728:	00000000 	nop
  4a972c:	afc20018 	sw	v0,24(s8)
  4a9730:	8fc3001c 	lw	v1,28(s8)
  4a9734:	8fc20020 	lw	v0,32(s8)
  4a9738:	00000000 	nop
  4a973c:	00621024 	and	v0,v1,v0
  4a9740:	afc2001c 	sw	v0,28(s8)
  4a9744:	8fc3001c 	lw	v1,28(s8)
  4a9748:	8fc20014 	lw	v0,20(s8)
  4a974c:	00000000 	nop
  4a9750:	00621026 	xor	v0,v1,v0
  4a9754:	afc2001c 	sw	v0,28(s8)
  4a9758:	8fc30014 	lw	v1,20(s8)
  4a975c:	8fc20020 	lw	v0,32(s8)
  4a9760:	00000000 	nop
  4a9764:	00621024 	and	v0,v1,v0
  4a9768:	afc20014 	sw	v0,20(s8)
  4a976c:	8fc30018 	lw	v1,24(s8)
  4a9770:	8fc2001c 	lw	v0,28(s8)
  4a9774:	00000000 	nop
  4a9778:	00621026 	xor	v0,v1,v0
  4a977c:	afc20018 	sw	v0,24(s8)
  4a9780:	8fc3001c 	lw	v1,28(s8)
  4a9784:	8fc20020 	lw	v0,32(s8)
  4a9788:	00000000 	nop
  4a978c:	00621026 	xor	v0,v1,v0
  4a9790:	afc2001c 	sw	v0,28(s8)
  4a9794:	8fc30020 	lw	v1,32(s8)
  4a9798:	8fc20024 	lw	v0,36(s8)
  4a979c:	00000000 	nop
  4a97a0:	00621026 	xor	v0,v1,v0
  4a97a4:	afc20020 	sw	v0,32(s8)
  4a97a8:	8fc30024 	lw	v1,36(s8)
  4a97ac:	8fc20018 	lw	v0,24(s8)
  4a97b0:	00000000 	nop
  4a97b4:	00621025 	or	v0,v1,v0
  4a97b8:	afc20024 	sw	v0,36(s8)
  4a97bc:	8fc30024 	lw	v1,36(s8)
  4a97c0:	8fc2001c 	lw	v0,28(s8)
  4a97c4:	00000000 	nop
  4a97c8:	00621026 	xor	v0,v1,v0
  4a97cc:	afc20024 	sw	v0,36(s8)
  4a97d0:	8fc30014 	lw	v1,20(s8)
  4a97d4:	8fc20020 	lw	v0,32(s8)
  4a97d8:	00000000 	nop
  4a97dc:	00621026 	xor	v0,v1,v0
  4a97e0:	afc20014 	sw	v0,20(s8)
  4a97e4:	8fc3001c 	lw	v1,28(s8)
  4a97e8:	8fc20014 	lw	v0,20(s8)
  4a97ec:	00000000 	nop
  4a97f0:	00621026 	xor	v0,v1,v0
  4a97f4:	afc2001c 	sw	v0,28(s8)
  4a97f8:	8fc30014 	lw	v1,20(s8)
  4a97fc:	8fc20024 	lw	v0,36(s8)
  4a9800:	00000000 	nop
  4a9804:	00621024 	and	v0,v1,v0
  4a9808:	afc20014 	sw	v0,20(s8)
  4a980c:	8fc30014 	lw	v1,20(s8)
  4a9810:	8fc20018 	lw	v0,24(s8)
  4a9814:	00000000 	nop
  4a9818:	00621026 	xor	v0,v1,v0
  4a981c:	afc20014 	sw	v0,20(s8)
  4a9820:	8fc30018 	lw	v1,24(s8)
  4a9824:	8fc2001c 	lw	v0,28(s8)
  4a9828:	00000000 	nop
  4a982c:	00621026 	xor	v0,v1,v0
  4a9830:	afc20018 	sw	v0,24(s8)
  4a9834:	8fc3001c 	lw	v1,28(s8)
  4a9838:	8fc20024 	lw	v0,36(s8)
  4a983c:	00000000 	nop
  4a9840:	00621024 	and	v0,v1,v0
  4a9844:	afc2001c 	sw	v0,28(s8)
  4a9848:	8fc20018 	lw	v0,24(s8)
  4a984c:	00000000 	nop
  4a9850:	00021027 	nor	v0,zero,v0
  4a9854:	afc20018 	sw	v0,24(s8)
  4a9858:	8fc3001c 	lw	v1,28(s8)
  4a985c:	8fc20018 	lw	v0,24(s8)
  4a9860:	00000000 	nop
  4a9864:	00621026 	xor	v0,v1,v0
  4a9868:	afc2001c 	sw	v0,28(s8)
  4a986c:	8fc30018 	lw	v1,24(s8)
  4a9870:	8fc20024 	lw	v0,36(s8)
  4a9874:	00000000 	nop
  4a9878:	00621024 	and	v0,v1,v0
  4a987c:	afc20018 	sw	v0,24(s8)
  4a9880:	8fc30020 	lw	v1,32(s8)
  4a9884:	8fc20014 	lw	v0,20(s8)
  4a9888:	00000000 	nop
  4a988c:	00621026 	xor	v0,v1,v0
  4a9890:	afc20020 	sw	v0,32(s8)
  4a9894:	8fc30018 	lw	v1,24(s8)
  4a9898:	8fc20020 	lw	v0,32(s8)
  4a989c:	00000000 	nop
  4a98a0:	00621026 	xor	v0,v1,v0
  4a98a4:	afc20018 	sw	v0,24(s8)
      LINTRANS(r2,r1,r0,r4,r3);
  4a98a8:	8fc2001c 	lw	v0,28(s8)
  4a98ac:	00000000 	nop
  4a98b0:	00021b40 	sll	v1,v0,0xd
  4a98b4:	000214c2 	srl	v0,v0,0x13
  4a98b8:	00621025 	or	v0,v1,v0
  4a98bc:	afc2001c 	sw	v0,28(s8)
  4a98c0:	8fc20014 	lw	v0,20(s8)
  4a98c4:	00000000 	nop
  4a98c8:	000218c0 	sll	v1,v0,0x3
  4a98cc:	00021742 	srl	v0,v0,0x1d
  4a98d0:	00621025 	or	v0,v1,v0
  4a98d4:	afc20014 	sw	v0,20(s8)
  4a98d8:	8fc30024 	lw	v1,36(s8)
  4a98dc:	8fc20014 	lw	v0,20(s8)
  4a98e0:	00000000 	nop
  4a98e4:	00621026 	xor	v0,v1,v0
  4a98e8:	afc20024 	sw	v0,36(s8)
  4a98ec:	8fc2001c 	lw	v0,28(s8)
  4a98f0:	00000000 	nop
  4a98f4:	000210c0 	sll	v0,v0,0x3
  4a98f8:	afc20020 	sw	v0,32(s8)
  4a98fc:	8fc30018 	lw	v1,24(s8)
  4a9900:	8fc2001c 	lw	v0,28(s8)
  4a9904:	00000000 	nop
  4a9908:	00621026 	xor	v0,v1,v0
  4a990c:	afc20018 	sw	v0,24(s8)
  4a9910:	8fc30024 	lw	v1,36(s8)
  4a9914:	8fc20020 	lw	v0,32(s8)
  4a9918:	00000000 	nop
  4a991c:	00621026 	xor	v0,v1,v0
  4a9920:	afc20024 	sw	v0,36(s8)
  4a9924:	8fc30018 	lw	v1,24(s8)
  4a9928:	8fc20014 	lw	v0,20(s8)
  4a992c:	00000000 	nop
  4a9930:	00621026 	xor	v0,v1,v0
  4a9934:	afc20018 	sw	v0,24(s8)
  4a9938:	8fc20024 	lw	v0,36(s8)
  4a993c:	00000000 	nop
  4a9940:	000219c0 	sll	v1,v0,0x7
  4a9944:	00021642 	srl	v0,v0,0x19
  4a9948:	00621025 	or	v0,v1,v0
  4a994c:	afc20024 	sw	v0,36(s8)
  4a9950:	8fc20018 	lw	v0,24(s8)
  4a9954:	00000000 	nop
  4a9958:	00021840 	sll	v1,v0,0x1
  4a995c:	000217c2 	srl	v0,v0,0x1f
  4a9960:	00621025 	or	v0,v1,v0
  4a9964:	afc20018 	sw	v0,24(s8)
  4a9968:	8fc30014 	lw	v1,20(s8)
  4a996c:	8fc20024 	lw	v0,36(s8)
  4a9970:	00000000 	nop
  4a9974:	00621026 	xor	v0,v1,v0
  4a9978:	afc20014 	sw	v0,20(s8)
  4a997c:	8fc20018 	lw	v0,24(s8)
  4a9980:	00000000 	nop
  4a9984:	000211c0 	sll	v0,v0,0x7
  4a9988:	afc20020 	sw	v0,32(s8)
  4a998c:	8fc3001c 	lw	v1,28(s8)
  4a9990:	8fc20018 	lw	v0,24(s8)
  4a9994:	00000000 	nop
  4a9998:	00621026 	xor	v0,v1,v0
  4a999c:	afc2001c 	sw	v0,28(s8)
  4a99a0:	8fc30014 	lw	v1,20(s8)
  4a99a4:	8fc20020 	lw	v0,32(s8)
  4a99a8:	00000000 	nop
  4a99ac:	00621026 	xor	v0,v1,v0
  4a99b0:	afc20014 	sw	v0,20(s8)
  4a99b4:	8fc3001c 	lw	v1,28(s8)
  4a99b8:	8fc20024 	lw	v0,36(s8)
  4a99bc:	00000000 	nop
  4a99c0:	00621026 	xor	v0,v1,v0
  4a99c4:	afc2001c 	sw	v0,28(s8)
  4a99c8:	8fc20014 	lw	v0,20(s8)
  4a99cc:	00000000 	nop
  4a99d0:	00021d80 	sll	v1,v0,0x16
  4a99d4:	00021282 	srl	v0,v0,0xa
  4a99d8:	00621025 	or	v0,v1,v0
  4a99dc:	afc20014 	sw	v0,20(s8)
  4a99e0:	8fc2001c 	lw	v0,28(s8)
  4a99e4:	00000000 	nop
  4a99e8:	00021940 	sll	v1,v0,0x5
  4a99ec:	000216c2 	srl	v0,v0,0x1b
  4a99f0:	00621025 	or	v0,v1,v0
  4a99f4:	afc2001c 	sw	v0,28(s8)

      /* round 17  */
      KEYMIX(r2,r1,r0,r4,r3,64);
  4a99f8:	8fc20008 	lw	v0,8(s8)
  4a99fc:	00000000 	nop
  4a9a00:	24420120 	addiu	v0,v0,288
  4a9a04:	8c430000 	lw	v1,0(v0)
  4a9a08:	8fc2001c 	lw	v0,28(s8)
  4a9a0c:	00000000 	nop
  4a9a10:	00431026 	xor	v0,v0,v1
  4a9a14:	afc2001c 	sw	v0,28(s8)
  4a9a18:	8fc20008 	lw	v0,8(s8)
  4a9a1c:	00000000 	nop
  4a9a20:	24420124 	addiu	v0,v0,292
  4a9a24:	8c430000 	lw	v1,0(v0)
  4a9a28:	8fc20018 	lw	v0,24(s8)
  4a9a2c:	00000000 	nop
  4a9a30:	00431026 	xor	v0,v0,v1
  4a9a34:	afc20018 	sw	v0,24(s8)
  4a9a38:	8fc20008 	lw	v0,8(s8)
  4a9a3c:	00000000 	nop
  4a9a40:	24420128 	addiu	v0,v0,296
  4a9a44:	8c430000 	lw	v1,0(v0)
  4a9a48:	8fc20014 	lw	v0,20(s8)
  4a9a4c:	00000000 	nop
  4a9a50:	00431026 	xor	v0,v0,v1
  4a9a54:	afc20014 	sw	v0,20(s8)
  4a9a58:	8fc20008 	lw	v0,8(s8)
  4a9a5c:	00000000 	nop
  4a9a60:	2442012c 	addiu	v0,v0,300
  4a9a64:	8c430000 	lw	v1,0(v0)
  4a9a68:	8fc20024 	lw	v0,36(s8)
  4a9a6c:	00000000 	nop
  4a9a70:	00431026 	xor	v0,v0,v1
  4a9a74:	afc20024 	sw	v0,36(s8)
      S0(r2,r1,r0,r4,r3);
  4a9a78:	8fc30024 	lw	v1,36(s8)
  4a9a7c:	8fc2001c 	lw	v0,28(s8)
  4a9a80:	00000000 	nop
  4a9a84:	00621026 	xor	v0,v1,v0
  4a9a88:	afc20024 	sw	v0,36(s8)
  4a9a8c:	8fc20018 	lw	v0,24(s8)
  4a9a90:	00000000 	nop
  4a9a94:	afc20020 	sw	v0,32(s8)
  4a9a98:	8fc30018 	lw	v1,24(s8)
  4a9a9c:	8fc20024 	lw	v0,36(s8)
  4a9aa0:	00000000 	nop
  4a9aa4:	00621024 	and	v0,v1,v0
  4a9aa8:	afc20018 	sw	v0,24(s8)
  4a9aac:	8fc30020 	lw	v1,32(s8)
  4a9ab0:	8fc20014 	lw	v0,20(s8)
  4a9ab4:	00000000 	nop
  4a9ab8:	00621026 	xor	v0,v1,v0
  4a9abc:	afc20020 	sw	v0,32(s8)
  4a9ac0:	8fc30018 	lw	v1,24(s8)
  4a9ac4:	8fc2001c 	lw	v0,28(s8)
  4a9ac8:	00000000 	nop
  4a9acc:	00621026 	xor	v0,v1,v0
  4a9ad0:	afc20018 	sw	v0,24(s8)
  4a9ad4:	8fc3001c 	lw	v1,28(s8)
  4a9ad8:	8fc20024 	lw	v0,36(s8)
  4a9adc:	00000000 	nop
  4a9ae0:	00621025 	or	v0,v1,v0
  4a9ae4:	afc2001c 	sw	v0,28(s8)
  4a9ae8:	8fc3001c 	lw	v1,28(s8)
  4a9aec:	8fc20020 	lw	v0,32(s8)
  4a9af0:	00000000 	nop
  4a9af4:	00621026 	xor	v0,v1,v0
  4a9af8:	afc2001c 	sw	v0,28(s8)
  4a9afc:	8fc30020 	lw	v1,32(s8)
  4a9b00:	8fc20024 	lw	v0,36(s8)
  4a9b04:	00000000 	nop
  4a9b08:	00621026 	xor	v0,v1,v0
  4a9b0c:	afc20020 	sw	v0,32(s8)
  4a9b10:	8fc30024 	lw	v1,36(s8)
  4a9b14:	8fc20014 	lw	v0,20(s8)
  4a9b18:	00000000 	nop
  4a9b1c:	00621026 	xor	v0,v1,v0
  4a9b20:	afc20024 	sw	v0,36(s8)
  4a9b24:	8fc30014 	lw	v1,20(s8)
  4a9b28:	8fc20018 	lw	v0,24(s8)
  4a9b2c:	00000000 	nop
  4a9b30:	00621025 	or	v0,v1,v0
  4a9b34:	afc20014 	sw	v0,20(s8)
  4a9b38:	8fc30014 	lw	v1,20(s8)
  4a9b3c:	8fc20020 	lw	v0,32(s8)
  4a9b40:	00000000 	nop
  4a9b44:	00621026 	xor	v0,v1,v0
  4a9b48:	afc20014 	sw	v0,20(s8)
  4a9b4c:	8fc20020 	lw	v0,32(s8)
  4a9b50:	00000000 	nop
  4a9b54:	00021027 	nor	v0,zero,v0
  4a9b58:	afc20020 	sw	v0,32(s8)
  4a9b5c:	8fc30020 	lw	v1,32(s8)
  4a9b60:	8fc20018 	lw	v0,24(s8)
  4a9b64:	00000000 	nop
  4a9b68:	00621025 	or	v0,v1,v0
  4a9b6c:	afc20020 	sw	v0,32(s8)
  4a9b70:	8fc30018 	lw	v1,24(s8)
  4a9b74:	8fc20024 	lw	v0,36(s8)
  4a9b78:	00000000 	nop
  4a9b7c:	00621026 	xor	v0,v1,v0
  4a9b80:	afc20018 	sw	v0,24(s8)
  4a9b84:	8fc30018 	lw	v1,24(s8)
  4a9b88:	8fc20020 	lw	v0,32(s8)
  4a9b8c:	00000000 	nop
  4a9b90:	00621026 	xor	v0,v1,v0
  4a9b94:	afc20018 	sw	v0,24(s8)
  4a9b98:	8fc30024 	lw	v1,36(s8)
  4a9b9c:	8fc2001c 	lw	v0,28(s8)
  4a9ba0:	00000000 	nop
  4a9ba4:	00621025 	or	v0,v1,v0
  4a9ba8:	afc20024 	sw	v0,36(s8)
  4a9bac:	8fc30018 	lw	v1,24(s8)
  4a9bb0:	8fc20024 	lw	v0,36(s8)
  4a9bb4:	00000000 	nop
  4a9bb8:	00621026 	xor	v0,v1,v0
  4a9bbc:	afc20018 	sw	v0,24(s8)
  4a9bc0:	8fc30020 	lw	v1,32(s8)
  4a9bc4:	8fc20024 	lw	v0,36(s8)
  4a9bc8:	00000000 	nop
  4a9bcc:	00621026 	xor	v0,v1,v0
  4a9bd0:	afc20020 	sw	v0,32(s8)
      LINTRANS(r1,r3,r0,r2,r4);
  4a9bd4:	8fc20018 	lw	v0,24(s8)
  4a9bd8:	00000000 	nop
  4a9bdc:	00021b40 	sll	v1,v0,0xd
  4a9be0:	000214c2 	srl	v0,v0,0x13
  4a9be4:	00621025 	or	v0,v1,v0
  4a9be8:	afc20018 	sw	v0,24(s8)
  4a9bec:	8fc20014 	lw	v0,20(s8)
  4a9bf0:	00000000 	nop
  4a9bf4:	000218c0 	sll	v1,v0,0x3
  4a9bf8:	00021742 	srl	v0,v0,0x1d
  4a9bfc:	00621025 	or	v0,v1,v0
  4a9c00:	afc20014 	sw	v0,20(s8)
  4a9c04:	8fc3001c 	lw	v1,28(s8)
  4a9c08:	8fc20014 	lw	v0,20(s8)
  4a9c0c:	00000000 	nop
  4a9c10:	00621026 	xor	v0,v1,v0
  4a9c14:	afc2001c 	sw	v0,28(s8)
  4a9c18:	8fc20018 	lw	v0,24(s8)
  4a9c1c:	00000000 	nop
  4a9c20:	000210c0 	sll	v0,v0,0x3
  4a9c24:	afc20024 	sw	v0,36(s8)
  4a9c28:	8fc30020 	lw	v1,32(s8)
  4a9c2c:	8fc20018 	lw	v0,24(s8)
  4a9c30:	00000000 	nop
  4a9c34:	00621026 	xor	v0,v1,v0
  4a9c38:	afc20020 	sw	v0,32(s8)
  4a9c3c:	8fc3001c 	lw	v1,28(s8)
  4a9c40:	8fc20024 	lw	v0,36(s8)
  4a9c44:	00000000 	nop
  4a9c48:	00621026 	xor	v0,v1,v0
  4a9c4c:	afc2001c 	sw	v0,28(s8)
  4a9c50:	8fc30020 	lw	v1,32(s8)
  4a9c54:	8fc20014 	lw	v0,20(s8)
  4a9c58:	00000000 	nop
  4a9c5c:	00621026 	xor	v0,v1,v0
  4a9c60:	afc20020 	sw	v0,32(s8)
  4a9c64:	8fc2001c 	lw	v0,28(s8)
  4a9c68:	00000000 	nop
  4a9c6c:	000219c0 	sll	v1,v0,0x7
  4a9c70:	00021642 	srl	v0,v0,0x19
  4a9c74:	00621025 	or	v0,v1,v0
  4a9c78:	afc2001c 	sw	v0,28(s8)
  4a9c7c:	8fc20020 	lw	v0,32(s8)
  4a9c80:	00000000 	nop
  4a9c84:	00021840 	sll	v1,v0,0x1
  4a9c88:	000217c2 	srl	v0,v0,0x1f
  4a9c8c:	00621025 	or	v0,v1,v0
  4a9c90:	afc20020 	sw	v0,32(s8)
  4a9c94:	8fc30014 	lw	v1,20(s8)
  4a9c98:	8fc2001c 	lw	v0,28(s8)
  4a9c9c:	00000000 	nop
  4a9ca0:	00621026 	xor	v0,v1,v0
  4a9ca4:	afc20014 	sw	v0,20(s8)
  4a9ca8:	8fc20020 	lw	v0,32(s8)
  4a9cac:	00000000 	nop
  4a9cb0:	000211c0 	sll	v0,v0,0x7
  4a9cb4:	afc20024 	sw	v0,36(s8)
  4a9cb8:	8fc30018 	lw	v1,24(s8)
  4a9cbc:	8fc20020 	lw	v0,32(s8)
  4a9cc0:	00000000 	nop
  4a9cc4:	00621026 	xor	v0,v1,v0
  4a9cc8:	afc20018 	sw	v0,24(s8)
  4a9ccc:	8fc30014 	lw	v1,20(s8)
  4a9cd0:	8fc20024 	lw	v0,36(s8)
  4a9cd4:	00000000 	nop
  4a9cd8:	00621026 	xor	v0,v1,v0
  4a9cdc:	afc20014 	sw	v0,20(s8)
  4a9ce0:	8fc30018 	lw	v1,24(s8)
  4a9ce4:	8fc2001c 	lw	v0,28(s8)
  4a9ce8:	00000000 	nop
  4a9cec:	00621026 	xor	v0,v1,v0
  4a9cf0:	afc20018 	sw	v0,24(s8)
  4a9cf4:	8fc20014 	lw	v0,20(s8)
  4a9cf8:	00000000 	nop
  4a9cfc:	00021d80 	sll	v1,v0,0x16
  4a9d00:	00021282 	srl	v0,v0,0xa
  4a9d04:	00621025 	or	v0,v1,v0
  4a9d08:	afc20014 	sw	v0,20(s8)
  4a9d0c:	8fc20018 	lw	v0,24(s8)
  4a9d10:	00000000 	nop
  4a9d14:	00021940 	sll	v1,v0,0x5
  4a9d18:	000216c2 	srl	v0,v0,0x1b
  4a9d1c:	00621025 	or	v0,v1,v0
  4a9d20:	afc20018 	sw	v0,24(s8)

      /* round 18  */
      KEYMIX(r1,r3,r0,r2,r4,68);
  4a9d24:	8fc20008 	lw	v0,8(s8)
  4a9d28:	00000000 	nop
  4a9d2c:	24420130 	addiu	v0,v0,304
  4a9d30:	8c430000 	lw	v1,0(v0)
  4a9d34:	8fc20018 	lw	v0,24(s8)
  4a9d38:	00000000 	nop
  4a9d3c:	00431026 	xor	v0,v0,v1
  4a9d40:	afc20018 	sw	v0,24(s8)
  4a9d44:	8fc20008 	lw	v0,8(s8)
  4a9d48:	00000000 	nop
  4a9d4c:	24420134 	addiu	v0,v0,308
  4a9d50:	8c430000 	lw	v1,0(v0)
  4a9d54:	8fc20020 	lw	v0,32(s8)
  4a9d58:	00000000 	nop
  4a9d5c:	00431026 	xor	v0,v0,v1
  4a9d60:	afc20020 	sw	v0,32(s8)
  4a9d64:	8fc20008 	lw	v0,8(s8)
  4a9d68:	00000000 	nop
  4a9d6c:	24420138 	addiu	v0,v0,312
  4a9d70:	8c430000 	lw	v1,0(v0)
  4a9d74:	8fc20014 	lw	v0,20(s8)
  4a9d78:	00000000 	nop
  4a9d7c:	00431026 	xor	v0,v0,v1
  4a9d80:	afc20014 	sw	v0,20(s8)
  4a9d84:	8fc20008 	lw	v0,8(s8)
  4a9d88:	00000000 	nop
  4a9d8c:	2442013c 	addiu	v0,v0,316
  4a9d90:	8c430000 	lw	v1,0(v0)
  4a9d94:	8fc2001c 	lw	v0,28(s8)
  4a9d98:	00000000 	nop
  4a9d9c:	00431026 	xor	v0,v0,v1
  4a9da0:	afc2001c 	sw	v0,28(s8)
      S1(r1,r3,r0,r2,r4);
  4a9da4:	8fc20020 	lw	v0,32(s8)
  4a9da8:	00000000 	nop
  4a9dac:	00021027 	nor	v0,zero,v0
  4a9db0:	afc20020 	sw	v0,32(s8)
  4a9db4:	8fc20018 	lw	v0,24(s8)
  4a9db8:	00000000 	nop
  4a9dbc:	afc20024 	sw	v0,36(s8)
  4a9dc0:	8fc30018 	lw	v1,24(s8)
  4a9dc4:	8fc20020 	lw	v0,32(s8)
  4a9dc8:	00000000 	nop
  4a9dcc:	00621026 	xor	v0,v1,v0
  4a9dd0:	afc20018 	sw	v0,24(s8)
  4a9dd4:	8fc30024 	lw	v1,36(s8)
  4a9dd8:	8fc20020 	lw	v0,32(s8)
  4a9ddc:	00000000 	nop
  4a9de0:	00621025 	or	v0,v1,v0
  4a9de4:	afc20024 	sw	v0,36(s8)
  4a9de8:	8fc30024 	lw	v1,36(s8)
  4a9dec:	8fc2001c 	lw	v0,28(s8)
  4a9df0:	00000000 	nop
  4a9df4:	00621026 	xor	v0,v1,v0
  4a9df8:	afc20024 	sw	v0,36(s8)
  4a9dfc:	8fc3001c 	lw	v1,28(s8)
  4a9e00:	8fc20018 	lw	v0,24(s8)
  4a9e04:	00000000 	nop
  4a9e08:	00621024 	and	v0,v1,v0
  4a9e0c:	afc2001c 	sw	v0,28(s8)
  4a9e10:	8fc30014 	lw	v1,20(s8)
  4a9e14:	8fc20024 	lw	v0,36(s8)
  4a9e18:	00000000 	nop
  4a9e1c:	00621026 	xor	v0,v1,v0
  4a9e20:	afc20014 	sw	v0,20(s8)
  4a9e24:	8fc3001c 	lw	v1,28(s8)
  4a9e28:	8fc20020 	lw	v0,32(s8)
  4a9e2c:	00000000 	nop
  4a9e30:	00621026 	xor	v0,v1,v0
  4a9e34:	afc2001c 	sw	v0,28(s8)
  4a9e38:	8fc3001c 	lw	v1,28(s8)
  4a9e3c:	8fc20014 	lw	v0,20(s8)
  4a9e40:	00000000 	nop
  4a9e44:	00621025 	or	v0,v1,v0
  4a9e48:	afc2001c 	sw	v0,28(s8)
  4a9e4c:	8fc30018 	lw	v1,24(s8)
  4a9e50:	8fc20024 	lw	v0,36(s8)
  4a9e54:	00000000 	nop
  4a9e58:	00621026 	xor	v0,v1,v0
  4a9e5c:	afc20018 	sw	v0,24(s8)
  4a9e60:	8fc3001c 	lw	v1,28(s8)
  4a9e64:	8fc20018 	lw	v0,24(s8)
  4a9e68:	00000000 	nop
  4a9e6c:	00621026 	xor	v0,v1,v0
  4a9e70:	afc2001c 	sw	v0,28(s8)
  4a9e74:	8fc30020 	lw	v1,32(s8)
  4a9e78:	8fc20014 	lw	v0,20(s8)
  4a9e7c:	00000000 	nop
  4a9e80:	00621024 	and	v0,v1,v0
  4a9e84:	afc20020 	sw	v0,32(s8)
  4a9e88:	8fc30018 	lw	v1,24(s8)
  4a9e8c:	8fc20020 	lw	v0,32(s8)
  4a9e90:	00000000 	nop
  4a9e94:	00621025 	or	v0,v1,v0
  4a9e98:	afc20018 	sw	v0,24(s8)
  4a9e9c:	8fc30020 	lw	v1,32(s8)
  4a9ea0:	8fc20024 	lw	v0,36(s8)
  4a9ea4:	00000000 	nop
  4a9ea8:	00621026 	xor	v0,v1,v0
  4a9eac:	afc20020 	sw	v0,32(s8)
  4a9eb0:	8fc30018 	lw	v1,24(s8)
  4a9eb4:	8fc20014 	lw	v0,20(s8)
  4a9eb8:	00000000 	nop
  4a9ebc:	00621026 	xor	v0,v1,v0
  4a9ec0:	afc20018 	sw	v0,24(s8)
  4a9ec4:	8fc30024 	lw	v1,36(s8)
  4a9ec8:	8fc2001c 	lw	v0,28(s8)
  4a9ecc:	00000000 	nop
  4a9ed0:	00621025 	or	v0,v1,v0
  4a9ed4:	afc20024 	sw	v0,36(s8)
  4a9ed8:	8fc30018 	lw	v1,24(s8)
  4a9edc:	8fc20024 	lw	v0,36(s8)
  4a9ee0:	00000000 	nop
  4a9ee4:	00621026 	xor	v0,v1,v0
  4a9ee8:	afc20018 	sw	v0,24(s8)
  4a9eec:	8fc20024 	lw	v0,36(s8)
  4a9ef0:	00000000 	nop
  4a9ef4:	00021027 	nor	v0,zero,v0
  4a9ef8:	afc20024 	sw	v0,36(s8)
  4a9efc:	8fc30020 	lw	v1,32(s8)
  4a9f00:	8fc2001c 	lw	v0,28(s8)
  4a9f04:	00000000 	nop
  4a9f08:	00621026 	xor	v0,v1,v0
  4a9f0c:	afc20020 	sw	v0,32(s8)
  4a9f10:	8fc30024 	lw	v1,36(s8)
  4a9f14:	8fc20014 	lw	v0,20(s8)
  4a9f18:	00000000 	nop
  4a9f1c:	00621024 	and	v0,v1,v0
  4a9f20:	afc20024 	sw	v0,36(s8)
  4a9f24:	8fc20020 	lw	v0,32(s8)
  4a9f28:	00000000 	nop
  4a9f2c:	00021027 	nor	v0,zero,v0
  4a9f30:	afc20020 	sw	v0,32(s8)
  4a9f34:	8fc30024 	lw	v1,36(s8)
  4a9f38:	8fc20018 	lw	v0,24(s8)
  4a9f3c:	00000000 	nop
  4a9f40:	00621026 	xor	v0,v1,v0
  4a9f44:	afc20024 	sw	v0,36(s8)
  4a9f48:	8fc30020 	lw	v1,32(s8)
  4a9f4c:	8fc20024 	lw	v0,36(s8)
  4a9f50:	00000000 	nop
  4a9f54:	00621026 	xor	v0,v1,v0
  4a9f58:	afc20020 	sw	v0,32(s8)
      LINTRANS(r2,r3,r0,r1,r4);
  4a9f5c:	8fc2001c 	lw	v0,28(s8)
  4a9f60:	00000000 	nop
  4a9f64:	00021b40 	sll	v1,v0,0xd
  4a9f68:	000214c2 	srl	v0,v0,0x13
  4a9f6c:	00621025 	or	v0,v1,v0
  4a9f70:	afc2001c 	sw	v0,28(s8)
  4a9f74:	8fc20014 	lw	v0,20(s8)
  4a9f78:	00000000 	nop
  4a9f7c:	000218c0 	sll	v1,v0,0x3
  4a9f80:	00021742 	srl	v0,v0,0x1d
  4a9f84:	00621025 	or	v0,v1,v0
  4a9f88:	afc20014 	sw	v0,20(s8)
  4a9f8c:	8fc30018 	lw	v1,24(s8)
  4a9f90:	8fc20014 	lw	v0,20(s8)
  4a9f94:	00000000 	nop
  4a9f98:	00621026 	xor	v0,v1,v0
  4a9f9c:	afc20018 	sw	v0,24(s8)
  4a9fa0:	8fc2001c 	lw	v0,28(s8)
  4a9fa4:	00000000 	nop
  4a9fa8:	000210c0 	sll	v0,v0,0x3
  4a9fac:	afc20024 	sw	v0,36(s8)
  4a9fb0:	8fc30020 	lw	v1,32(s8)
  4a9fb4:	8fc2001c 	lw	v0,28(s8)
  4a9fb8:	00000000 	nop
  4a9fbc:	00621026 	xor	v0,v1,v0
  4a9fc0:	afc20020 	sw	v0,32(s8)
  4a9fc4:	8fc30018 	lw	v1,24(s8)
  4a9fc8:	8fc20024 	lw	v0,36(s8)
  4a9fcc:	00000000 	nop
  4a9fd0:	00621026 	xor	v0,v1,v0
  4a9fd4:	afc20018 	sw	v0,24(s8)
  4a9fd8:	8fc30020 	lw	v1,32(s8)
  4a9fdc:	8fc20014 	lw	v0,20(s8)
  4a9fe0:	00000000 	nop
  4a9fe4:	00621026 	xor	v0,v1,v0
  4a9fe8:	afc20020 	sw	v0,32(s8)
  4a9fec:	8fc20018 	lw	v0,24(s8)
  4a9ff0:	00000000 	nop
  4a9ff4:	000219c0 	sll	v1,v0,0x7
  4a9ff8:	00021642 	srl	v0,v0,0x19
  4a9ffc:	00621025 	or	v0,v1,v0
  4aa000:	afc20018 	sw	v0,24(s8)
  4aa004:	8fc20020 	lw	v0,32(s8)
  4aa008:	00000000 	nop
  4aa00c:	00021840 	sll	v1,v0,0x1
  4aa010:	000217c2 	srl	v0,v0,0x1f
  4aa014:	00621025 	or	v0,v1,v0
  4aa018:	afc20020 	sw	v0,32(s8)
  4aa01c:	8fc30014 	lw	v1,20(s8)
  4aa020:	8fc20018 	lw	v0,24(s8)
  4aa024:	00000000 	nop
  4aa028:	00621026 	xor	v0,v1,v0
  4aa02c:	afc20014 	sw	v0,20(s8)
  4aa030:	8fc20020 	lw	v0,32(s8)
  4aa034:	00000000 	nop
  4aa038:	000211c0 	sll	v0,v0,0x7
  4aa03c:	afc20024 	sw	v0,36(s8)
  4aa040:	8fc3001c 	lw	v1,28(s8)
  4aa044:	8fc20020 	lw	v0,32(s8)
  4aa048:	00000000 	nop
  4aa04c:	00621026 	xor	v0,v1,v0
  4aa050:	afc2001c 	sw	v0,28(s8)
  4aa054:	8fc30014 	lw	v1,20(s8)
  4aa058:	8fc20024 	lw	v0,36(s8)
  4aa05c:	00000000 	nop
  4aa060:	00621026 	xor	v0,v1,v0
  4aa064:	afc20014 	sw	v0,20(s8)
  4aa068:	8fc3001c 	lw	v1,28(s8)
  4aa06c:	8fc20018 	lw	v0,24(s8)
  4aa070:	00000000 	nop
  4aa074:	00621026 	xor	v0,v1,v0
  4aa078:	afc2001c 	sw	v0,28(s8)
  4aa07c:	8fc20014 	lw	v0,20(s8)
  4aa080:	00000000 	nop
  4aa084:	00021d80 	sll	v1,v0,0x16
  4aa088:	00021282 	srl	v0,v0,0xa
  4aa08c:	00621025 	or	v0,v1,v0
  4aa090:	afc20014 	sw	v0,20(s8)
  4aa094:	8fc2001c 	lw	v0,28(s8)
  4aa098:	00000000 	nop
  4aa09c:	00021940 	sll	v1,v0,0x5
  4aa0a0:	000216c2 	srl	v0,v0,0x1b
  4aa0a4:	00621025 	or	v0,v1,v0
  4aa0a8:	afc2001c 	sw	v0,28(s8)

      /* round 19  */
      KEYMIX(r2,r3,r0,r1,r4,72);
  4aa0ac:	8fc20008 	lw	v0,8(s8)
  4aa0b0:	00000000 	nop
  4aa0b4:	24420140 	addiu	v0,v0,320
  4aa0b8:	8c430000 	lw	v1,0(v0)
  4aa0bc:	8fc2001c 	lw	v0,28(s8)
  4aa0c0:	00000000 	nop
  4aa0c4:	00431026 	xor	v0,v0,v1
  4aa0c8:	afc2001c 	sw	v0,28(s8)
  4aa0cc:	8fc20008 	lw	v0,8(s8)
  4aa0d0:	00000000 	nop
  4aa0d4:	24420144 	addiu	v0,v0,324
  4aa0d8:	8c430000 	lw	v1,0(v0)
  4aa0dc:	8fc20020 	lw	v0,32(s8)
  4aa0e0:	00000000 	nop
  4aa0e4:	00431026 	xor	v0,v0,v1
  4aa0e8:	afc20020 	sw	v0,32(s8)
  4aa0ec:	8fc20008 	lw	v0,8(s8)
  4aa0f0:	00000000 	nop
  4aa0f4:	24420148 	addiu	v0,v0,328
  4aa0f8:	8c430000 	lw	v1,0(v0)
  4aa0fc:	8fc20014 	lw	v0,20(s8)
  4aa100:	00000000 	nop
  4aa104:	00431026 	xor	v0,v0,v1
  4aa108:	afc20014 	sw	v0,20(s8)
  4aa10c:	8fc20008 	lw	v0,8(s8)
  4aa110:	00000000 	nop
  4aa114:	2442014c 	addiu	v0,v0,332
  4aa118:	8c430000 	lw	v1,0(v0)
  4aa11c:	8fc20018 	lw	v0,24(s8)
  4aa120:	00000000 	nop
  4aa124:	00431026 	xor	v0,v0,v1
  4aa128:	afc20018 	sw	v0,24(s8)
      S2(r2,r3,r0,r1,r4);
  4aa12c:	8fc2001c 	lw	v0,28(s8)
  4aa130:	00000000 	nop
  4aa134:	afc20024 	sw	v0,36(s8)
  4aa138:	8fc3001c 	lw	v1,28(s8)
  4aa13c:	8fc20014 	lw	v0,20(s8)
  4aa140:	00000000 	nop
  4aa144:	00621024 	and	v0,v1,v0
  4aa148:	afc2001c 	sw	v0,28(s8)
  4aa14c:	8fc3001c 	lw	v1,28(s8)
  4aa150:	8fc20018 	lw	v0,24(s8)
  4aa154:	00000000 	nop
  4aa158:	00621026 	xor	v0,v1,v0
  4aa15c:	afc2001c 	sw	v0,28(s8)
  4aa160:	8fc30014 	lw	v1,20(s8)
  4aa164:	8fc20020 	lw	v0,32(s8)
  4aa168:	00000000 	nop
  4aa16c:	00621026 	xor	v0,v1,v0
  4aa170:	afc20014 	sw	v0,20(s8)
  4aa174:	8fc30014 	lw	v1,20(s8)
  4aa178:	8fc2001c 	lw	v0,28(s8)
  4aa17c:	00000000 	nop
  4aa180:	00621026 	xor	v0,v1,v0
  4aa184:	afc20014 	sw	v0,20(s8)
  4aa188:	8fc30018 	lw	v1,24(s8)
  4aa18c:	8fc20024 	lw	v0,36(s8)
  4aa190:	00000000 	nop
  4aa194:	00621025 	or	v0,v1,v0
  4aa198:	afc20018 	sw	v0,24(s8)
  4aa19c:	8fc30018 	lw	v1,24(s8)
  4aa1a0:	8fc20020 	lw	v0,32(s8)
  4aa1a4:	00000000 	nop
  4aa1a8:	00621026 	xor	v0,v1,v0
  4aa1ac:	afc20018 	sw	v0,24(s8)
  4aa1b0:	8fc30024 	lw	v1,36(s8)
  4aa1b4:	8fc20014 	lw	v0,20(s8)
  4aa1b8:	00000000 	nop
  4aa1bc:	00621026 	xor	v0,v1,v0
  4aa1c0:	afc20024 	sw	v0,36(s8)
  4aa1c4:	8fc20018 	lw	v0,24(s8)
  4aa1c8:	00000000 	nop
  4aa1cc:	afc20020 	sw	v0,32(s8)
  4aa1d0:	8fc30018 	lw	v1,24(s8)
  4aa1d4:	8fc20024 	lw	v0,36(s8)
  4aa1d8:	00000000 	nop
  4aa1dc:	00621025 	or	v0,v1,v0
  4aa1e0:	afc20018 	sw	v0,24(s8)
  4aa1e4:	8fc30018 	lw	v1,24(s8)
  4aa1e8:	8fc2001c 	lw	v0,28(s8)
  4aa1ec:	00000000 	nop
  4aa1f0:	00621026 	xor	v0,v1,v0
  4aa1f4:	afc20018 	sw	v0,24(s8)
  4aa1f8:	8fc3001c 	lw	v1,28(s8)
  4aa1fc:	8fc20020 	lw	v0,32(s8)
  4aa200:	00000000 	nop
  4aa204:	00621024 	and	v0,v1,v0
  4aa208:	afc2001c 	sw	v0,28(s8)
  4aa20c:	8fc30024 	lw	v1,36(s8)
  4aa210:	8fc2001c 	lw	v0,28(s8)
  4aa214:	00000000 	nop
  4aa218:	00621026 	xor	v0,v1,v0
  4aa21c:	afc20024 	sw	v0,36(s8)
  4aa220:	8fc30020 	lw	v1,32(s8)
  4aa224:	8fc20018 	lw	v0,24(s8)
  4aa228:	00000000 	nop
  4aa22c:	00621026 	xor	v0,v1,v0
  4aa230:	afc20020 	sw	v0,32(s8)
  4aa234:	8fc30020 	lw	v1,32(s8)
  4aa238:	8fc20024 	lw	v0,36(s8)
  4aa23c:	00000000 	nop
  4aa240:	00621026 	xor	v0,v1,v0
  4aa244:	afc20020 	sw	v0,32(s8)
  4aa248:	8fc20024 	lw	v0,36(s8)
  4aa24c:	00000000 	nop
  4aa250:	00021027 	nor	v0,zero,v0
  4aa254:	afc20024 	sw	v0,36(s8)
      LINTRANS(r0,r1,r3,r4,r2);
  4aa258:	8fc20014 	lw	v0,20(s8)
  4aa25c:	00000000 	nop
  4aa260:	00021b40 	sll	v1,v0,0xd
  4aa264:	000214c2 	srl	v0,v0,0x13
  4aa268:	00621025 	or	v0,v1,v0
  4aa26c:	afc20014 	sw	v0,20(s8)
  4aa270:	8fc20020 	lw	v0,32(s8)
  4aa274:	00000000 	nop
  4aa278:	000218c0 	sll	v1,v0,0x3
  4aa27c:	00021742 	srl	v0,v0,0x1d
  4aa280:	00621025 	or	v0,v1,v0
  4aa284:	afc20020 	sw	v0,32(s8)
  4aa288:	8fc30024 	lw	v1,36(s8)
  4aa28c:	8fc20020 	lw	v0,32(s8)
  4aa290:	00000000 	nop
  4aa294:	00621026 	xor	v0,v1,v0
  4aa298:	afc20024 	sw	v0,36(s8)
  4aa29c:	8fc20014 	lw	v0,20(s8)
  4aa2a0:	00000000 	nop
  4aa2a4:	000210c0 	sll	v0,v0,0x3
  4aa2a8:	afc2001c 	sw	v0,28(s8)
  4aa2ac:	8fc30018 	lw	v1,24(s8)
  4aa2b0:	8fc20014 	lw	v0,20(s8)
  4aa2b4:	00000000 	nop
  4aa2b8:	00621026 	xor	v0,v1,v0
  4aa2bc:	afc20018 	sw	v0,24(s8)
  4aa2c0:	8fc30024 	lw	v1,36(s8)
  4aa2c4:	8fc2001c 	lw	v0,28(s8)
  4aa2c8:	00000000 	nop
  4aa2cc:	00621026 	xor	v0,v1,v0
  4aa2d0:	afc20024 	sw	v0,36(s8)
  4aa2d4:	8fc30018 	lw	v1,24(s8)
  4aa2d8:	8fc20020 	lw	v0,32(s8)
  4aa2dc:	00000000 	nop
  4aa2e0:	00621026 	xor	v0,v1,v0
  4aa2e4:	afc20018 	sw	v0,24(s8)
  4aa2e8:	8fc20024 	lw	v0,36(s8)
  4aa2ec:	00000000 	nop
  4aa2f0:	000219c0 	sll	v1,v0,0x7
  4aa2f4:	00021642 	srl	v0,v0,0x19
  4aa2f8:	00621025 	or	v0,v1,v0
  4aa2fc:	afc20024 	sw	v0,36(s8)
  4aa300:	8fc20018 	lw	v0,24(s8)
  4aa304:	00000000 	nop
  4aa308:	00021840 	sll	v1,v0,0x1
  4aa30c:	000217c2 	srl	v0,v0,0x1f
  4aa310:	00621025 	or	v0,v1,v0
  4aa314:	afc20018 	sw	v0,24(s8)
  4aa318:	8fc30020 	lw	v1,32(s8)
  4aa31c:	8fc20024 	lw	v0,36(s8)
  4aa320:	00000000 	nop
  4aa324:	00621026 	xor	v0,v1,v0
  4aa328:	afc20020 	sw	v0,32(s8)
  4aa32c:	8fc20018 	lw	v0,24(s8)
  4aa330:	00000000 	nop
  4aa334:	000211c0 	sll	v0,v0,0x7
  4aa338:	afc2001c 	sw	v0,28(s8)
  4aa33c:	8fc30014 	lw	v1,20(s8)
  4aa340:	8fc20018 	lw	v0,24(s8)
  4aa344:	00000000 	nop
  4aa348:	00621026 	xor	v0,v1,v0
  4aa34c:	afc20014 	sw	v0,20(s8)
  4aa350:	8fc30020 	lw	v1,32(s8)
  4aa354:	8fc2001c 	lw	v0,28(s8)
  4aa358:	00000000 	nop
  4aa35c:	00621026 	xor	v0,v1,v0
  4aa360:	afc20020 	sw	v0,32(s8)
  4aa364:	8fc30014 	lw	v1,20(s8)
  4aa368:	8fc20024 	lw	v0,36(s8)
  4aa36c:	00000000 	nop
  4aa370:	00621026 	xor	v0,v1,v0
  4aa374:	afc20014 	sw	v0,20(s8)
  4aa378:	8fc20020 	lw	v0,32(s8)
  4aa37c:	00000000 	nop
  4aa380:	00021d80 	sll	v1,v0,0x16
  4aa384:	00021282 	srl	v0,v0,0xa
  4aa388:	00621025 	or	v0,v1,v0
  4aa38c:	afc20020 	sw	v0,32(s8)
  4aa390:	8fc20014 	lw	v0,20(s8)
  4aa394:	00000000 	nop
  4aa398:	00021940 	sll	v1,v0,0x5
  4aa39c:	000216c2 	srl	v0,v0,0x1b
  4aa3a0:	00621025 	or	v0,v1,v0
  4aa3a4:	afc20014 	sw	v0,20(s8)

      /* round 20  */
      KEYMIX(r0,r1,r3,r4,r2,76);
  4aa3a8:	8fc20008 	lw	v0,8(s8)
  4aa3ac:	00000000 	nop
  4aa3b0:	24420150 	addiu	v0,v0,336
  4aa3b4:	8c430000 	lw	v1,0(v0)
  4aa3b8:	8fc20014 	lw	v0,20(s8)
  4aa3bc:	00000000 	nop
  4aa3c0:	00431026 	xor	v0,v0,v1
  4aa3c4:	afc20014 	sw	v0,20(s8)
  4aa3c8:	8fc20008 	lw	v0,8(s8)
  4aa3cc:	00000000 	nop
  4aa3d0:	24420154 	addiu	v0,v0,340
  4aa3d4:	8c430000 	lw	v1,0(v0)
  4aa3d8:	8fc20018 	lw	v0,24(s8)
  4aa3dc:	00000000 	nop
  4aa3e0:	00431026 	xor	v0,v0,v1
  4aa3e4:	afc20018 	sw	v0,24(s8)
  4aa3e8:	8fc20008 	lw	v0,8(s8)
  4aa3ec:	00000000 	nop
  4aa3f0:	24420158 	addiu	v0,v0,344
  4aa3f4:	8c430000 	lw	v1,0(v0)
  4aa3f8:	8fc20020 	lw	v0,32(s8)
  4aa3fc:	00000000 	nop
  4aa400:	00431026 	xor	v0,v0,v1
  4aa404:	afc20020 	sw	v0,32(s8)
  4aa408:	8fc20008 	lw	v0,8(s8)
  4aa40c:	00000000 	nop
  4aa410:	2442015c 	addiu	v0,v0,348
  4aa414:	8c430000 	lw	v1,0(v0)
  4aa418:	8fc20024 	lw	v0,36(s8)
  4aa41c:	00000000 	nop
  4aa420:	00431026 	xor	v0,v0,v1
  4aa424:	afc20024 	sw	v0,36(s8)
      S3(r0,r1,r3,r4,r2);
  4aa428:	8fc20014 	lw	v0,20(s8)
  4aa42c:	00000000 	nop
  4aa430:	afc2001c 	sw	v0,28(s8)
  4aa434:	8fc30014 	lw	v1,20(s8)
  4aa438:	8fc20024 	lw	v0,36(s8)
  4aa43c:	00000000 	nop
  4aa440:	00621025 	or	v0,v1,v0
  4aa444:	afc20014 	sw	v0,20(s8)
  4aa448:	8fc30024 	lw	v1,36(s8)
  4aa44c:	8fc20018 	lw	v0,24(s8)
  4aa450:	00000000 	nop
  4aa454:	00621026 	xor	v0,v1,v0
  4aa458:	afc20024 	sw	v0,36(s8)
  4aa45c:	8fc30018 	lw	v1,24(s8)
  4aa460:	8fc2001c 	lw	v0,28(s8)
  4aa464:	00000000 	nop
  4aa468:	00621024 	and	v0,v1,v0
  4aa46c:	afc20018 	sw	v0,24(s8)
  4aa470:	8fc3001c 	lw	v1,28(s8)
  4aa474:	8fc20020 	lw	v0,32(s8)
  4aa478:	00000000 	nop
  4aa47c:	00621026 	xor	v0,v1,v0
  4aa480:	afc2001c 	sw	v0,28(s8)
  4aa484:	8fc30020 	lw	v1,32(s8)
  4aa488:	8fc20024 	lw	v0,36(s8)
  4aa48c:	00000000 	nop
  4aa490:	00621026 	xor	v0,v1,v0
  4aa494:	afc20020 	sw	v0,32(s8)
  4aa498:	8fc30024 	lw	v1,36(s8)
  4aa49c:	8fc20014 	lw	v0,20(s8)
  4aa4a0:	00000000 	nop
  4aa4a4:	00621024 	and	v0,v1,v0
  4aa4a8:	afc20024 	sw	v0,36(s8)
  4aa4ac:	8fc3001c 	lw	v1,28(s8)
  4aa4b0:	8fc20018 	lw	v0,24(s8)
  4aa4b4:	00000000 	nop
  4aa4b8:	00621025 	or	v0,v1,v0
  4aa4bc:	afc2001c 	sw	v0,28(s8)
  4aa4c0:	8fc30024 	lw	v1,36(s8)
  4aa4c4:	8fc2001c 	lw	v0,28(s8)
  4aa4c8:	00000000 	nop
  4aa4cc:	00621026 	xor	v0,v1,v0
  4aa4d0:	afc20024 	sw	v0,36(s8)
  4aa4d4:	8fc30014 	lw	v1,20(s8)
  4aa4d8:	8fc20018 	lw	v0,24(s8)
  4aa4dc:	00000000 	nop
  4aa4e0:	00621026 	xor	v0,v1,v0
  4aa4e4:	afc20014 	sw	v0,20(s8)
  4aa4e8:	8fc3001c 	lw	v1,28(s8)
  4aa4ec:	8fc20014 	lw	v0,20(s8)
  4aa4f0:	00000000 	nop
  4aa4f4:	00621024 	and	v0,v1,v0
  4aa4f8:	afc2001c 	sw	v0,28(s8)
  4aa4fc:	8fc30018 	lw	v1,24(s8)
  4aa500:	8fc20024 	lw	v0,36(s8)
  4aa504:	00000000 	nop
  4aa508:	00621026 	xor	v0,v1,v0
  4aa50c:	afc20018 	sw	v0,24(s8)
  4aa510:	8fc3001c 	lw	v1,28(s8)
  4aa514:	8fc20020 	lw	v0,32(s8)
  4aa518:	00000000 	nop
  4aa51c:	00621026 	xor	v0,v1,v0
  4aa520:	afc2001c 	sw	v0,28(s8)
  4aa524:	8fc30018 	lw	v1,24(s8)
  4aa528:	8fc20014 	lw	v0,20(s8)
  4aa52c:	00000000 	nop
  4aa530:	00621025 	or	v0,v1,v0
  4aa534:	afc20018 	sw	v0,24(s8)
  4aa538:	8fc30018 	lw	v1,24(s8)
  4aa53c:	8fc20020 	lw	v0,32(s8)
  4aa540:	00000000 	nop
  4aa544:	00621026 	xor	v0,v1,v0
  4aa548:	afc20018 	sw	v0,24(s8)
  4aa54c:	8fc30014 	lw	v1,20(s8)
  4aa550:	8fc20024 	lw	v0,36(s8)
  4aa554:	00000000 	nop
  4aa558:	00621026 	xor	v0,v1,v0
  4aa55c:	afc20014 	sw	v0,20(s8)
  4aa560:	8fc20018 	lw	v0,24(s8)
  4aa564:	00000000 	nop
  4aa568:	afc20020 	sw	v0,32(s8)
  4aa56c:	8fc30018 	lw	v1,24(s8)
  4aa570:	8fc20024 	lw	v0,36(s8)
  4aa574:	00000000 	nop
  4aa578:	00621025 	or	v0,v1,v0
  4aa57c:	afc20018 	sw	v0,24(s8)
  4aa580:	8fc30018 	lw	v1,24(s8)
  4aa584:	8fc20014 	lw	v0,20(s8)
  4aa588:	00000000 	nop
  4aa58c:	00621026 	xor	v0,v1,v0
  4aa590:	afc20018 	sw	v0,24(s8)
      LINTRANS(r1,r3,r4,r2,r0);
  4aa594:	8fc20018 	lw	v0,24(s8)
  4aa598:	00000000 	nop
  4aa59c:	00021b40 	sll	v1,v0,0xd
  4aa5a0:	000214c2 	srl	v0,v0,0x13
  4aa5a4:	00621025 	or	v0,v1,v0
  4aa5a8:	afc20018 	sw	v0,24(s8)
  4aa5ac:	8fc20024 	lw	v0,36(s8)
  4aa5b0:	00000000 	nop
  4aa5b4:	000218c0 	sll	v1,v0,0x3
  4aa5b8:	00021742 	srl	v0,v0,0x1d
  4aa5bc:	00621025 	or	v0,v1,v0
  4aa5c0:	afc20024 	sw	v0,36(s8)
  4aa5c4:	8fc3001c 	lw	v1,28(s8)
  4aa5c8:	8fc20024 	lw	v0,36(s8)
  4aa5cc:	00000000 	nop
  4aa5d0:	00621026 	xor	v0,v1,v0
  4aa5d4:	afc2001c 	sw	v0,28(s8)
  4aa5d8:	8fc20018 	lw	v0,24(s8)
  4aa5dc:	00000000 	nop
  4aa5e0:	000210c0 	sll	v0,v0,0x3
  4aa5e4:	afc20014 	sw	v0,20(s8)
  4aa5e8:	8fc30020 	lw	v1,32(s8)
  4aa5ec:	8fc20018 	lw	v0,24(s8)
  4aa5f0:	00000000 	nop
  4aa5f4:	00621026 	xor	v0,v1,v0
  4aa5f8:	afc20020 	sw	v0,32(s8)
  4aa5fc:	8fc3001c 	lw	v1,28(s8)
  4aa600:	8fc20014 	lw	v0,20(s8)
  4aa604:	00000000 	nop
  4aa608:	00621026 	xor	v0,v1,v0
  4aa60c:	afc2001c 	sw	v0,28(s8)
  4aa610:	8fc30020 	lw	v1,32(s8)
  4aa614:	8fc20024 	lw	v0,36(s8)
  4aa618:	00000000 	nop
  4aa61c:	00621026 	xor	v0,v1,v0
  4aa620:	afc20020 	sw	v0,32(s8)
  4aa624:	8fc2001c 	lw	v0,28(s8)
  4aa628:	00000000 	nop
  4aa62c:	000219c0 	sll	v1,v0,0x7
  4aa630:	00021642 	srl	v0,v0,0x19
  4aa634:	00621025 	or	v0,v1,v0
  4aa638:	afc2001c 	sw	v0,28(s8)
  4aa63c:	8fc20020 	lw	v0,32(s8)
  4aa640:	00000000 	nop
  4aa644:	00021840 	sll	v1,v0,0x1
  4aa648:	000217c2 	srl	v0,v0,0x1f
  4aa64c:	00621025 	or	v0,v1,v0
  4aa650:	afc20020 	sw	v0,32(s8)
  4aa654:	8fc30024 	lw	v1,36(s8)
  4aa658:	8fc2001c 	lw	v0,28(s8)
  4aa65c:	00000000 	nop
  4aa660:	00621026 	xor	v0,v1,v0
  4aa664:	afc20024 	sw	v0,36(s8)
  4aa668:	8fc20020 	lw	v0,32(s8)
  4aa66c:	00000000 	nop
  4aa670:	000211c0 	sll	v0,v0,0x7
  4aa674:	afc20014 	sw	v0,20(s8)
  4aa678:	8fc30018 	lw	v1,24(s8)
  4aa67c:	8fc20020 	lw	v0,32(s8)
  4aa680:	00000000 	nop
  4aa684:	00621026 	xor	v0,v1,v0
  4aa688:	afc20018 	sw	v0,24(s8)
  4aa68c:	8fc30024 	lw	v1,36(s8)
  4aa690:	8fc20014 	lw	v0,20(s8)
  4aa694:	00000000 	nop
  4aa698:	00621026 	xor	v0,v1,v0
  4aa69c:	afc20024 	sw	v0,36(s8)
  4aa6a0:	8fc30018 	lw	v1,24(s8)
  4aa6a4:	8fc2001c 	lw	v0,28(s8)
  4aa6a8:	00000000 	nop
  4aa6ac:	00621026 	xor	v0,v1,v0
  4aa6b0:	afc20018 	sw	v0,24(s8)
  4aa6b4:	8fc20024 	lw	v0,36(s8)
  4aa6b8:	00000000 	nop
  4aa6bc:	00021d80 	sll	v1,v0,0x16
  4aa6c0:	00021282 	srl	v0,v0,0xa
  4aa6c4:	00621025 	or	v0,v1,v0
  4aa6c8:	afc20024 	sw	v0,36(s8)
  4aa6cc:	8fc20018 	lw	v0,24(s8)
  4aa6d0:	00000000 	nop
  4aa6d4:	00021940 	sll	v1,v0,0x5
  4aa6d8:	000216c2 	srl	v0,v0,0x1b
  4aa6dc:	00621025 	or	v0,v1,v0
  4aa6e0:	afc20018 	sw	v0,24(s8)

      /* round 21  */
      KEYMIX(r1,r3,r4,r2,r0,80);
  4aa6e4:	8fc20008 	lw	v0,8(s8)
  4aa6e8:	00000000 	nop
  4aa6ec:	24420160 	addiu	v0,v0,352
  4aa6f0:	8c430000 	lw	v1,0(v0)
  4aa6f4:	8fc20018 	lw	v0,24(s8)
  4aa6f8:	00000000 	nop
  4aa6fc:	00431026 	xor	v0,v0,v1
  4aa700:	afc20018 	sw	v0,24(s8)
  4aa704:	8fc20008 	lw	v0,8(s8)
  4aa708:	00000000 	nop
  4aa70c:	24420164 	addiu	v0,v0,356
  4aa710:	8c430000 	lw	v1,0(v0)
  4aa714:	8fc20020 	lw	v0,32(s8)
  4aa718:	00000000 	nop
  4aa71c:	00431026 	xor	v0,v0,v1
  4aa720:	afc20020 	sw	v0,32(s8)
  4aa724:	8fc20008 	lw	v0,8(s8)
  4aa728:	00000000 	nop
  4aa72c:	24420168 	addiu	v0,v0,360
  4aa730:	8c430000 	lw	v1,0(v0)
  4aa734:	8fc20024 	lw	v0,36(s8)
  4aa738:	00000000 	nop
  4aa73c:	00431026 	xor	v0,v0,v1
  4aa740:	afc20024 	sw	v0,36(s8)
  4aa744:	8fc20008 	lw	v0,8(s8)
  4aa748:	00000000 	nop
  4aa74c:	2442016c 	addiu	v0,v0,364
  4aa750:	8c430000 	lw	v1,0(v0)
  4aa754:	8fc2001c 	lw	v0,28(s8)
  4aa758:	00000000 	nop
  4aa75c:	00431026 	xor	v0,v0,v1
  4aa760:	afc2001c 	sw	v0,28(s8)
      S4(r1,r3,r4,r2,r0) 
  4aa764:	8fc30020 	lw	v1,32(s8)
  4aa768:	8fc2001c 	lw	v0,28(s8)
  4aa76c:	00000000 	nop
  4aa770:	00621026 	xor	v0,v1,v0
  4aa774:	afc20020 	sw	v0,32(s8)
  4aa778:	8fc2001c 	lw	v0,28(s8)
  4aa77c:	00000000 	nop
  4aa780:	00021027 	nor	v0,zero,v0
  4aa784:	afc2001c 	sw	v0,28(s8)
  4aa788:	8fc30024 	lw	v1,36(s8)
  4aa78c:	8fc2001c 	lw	v0,28(s8)
  4aa790:	00000000 	nop
  4aa794:	00621026 	xor	v0,v1,v0
  4aa798:	afc20024 	sw	v0,36(s8)
  4aa79c:	8fc3001c 	lw	v1,28(s8)
  4aa7a0:	8fc20018 	lw	v0,24(s8)
  4aa7a4:	00000000 	nop
  4aa7a8:	00621026 	xor	v0,v1,v0
  4aa7ac:	afc2001c 	sw	v0,28(s8)
  4aa7b0:	8fc20020 	lw	v0,32(s8)
  4aa7b4:	00000000 	nop
  4aa7b8:	afc20014 	sw	v0,20(s8)
  4aa7bc:	8fc30020 	lw	v1,32(s8)
  4aa7c0:	8fc2001c 	lw	v0,28(s8)
  4aa7c4:	00000000 	nop
  4aa7c8:	00621024 	and	v0,v1,v0
  4aa7cc:	afc20020 	sw	v0,32(s8)
  4aa7d0:	8fc30020 	lw	v1,32(s8)
  4aa7d4:	8fc20024 	lw	v0,36(s8)
  4aa7d8:	00000000 	nop
  4aa7dc:	00621026 	xor	v0,v1,v0
  4aa7e0:	afc20020 	sw	v0,32(s8)
  4aa7e4:	8fc30014 	lw	v1,20(s8)
  4aa7e8:	8fc2001c 	lw	v0,28(s8)
  4aa7ec:	00000000 	nop
  4aa7f0:	00621026 	xor	v0,v1,v0
  4aa7f4:	afc20014 	sw	v0,20(s8)
  4aa7f8:	8fc30018 	lw	v1,24(s8)
  4aa7fc:	8fc20014 	lw	v0,20(s8)
  4aa800:	00000000 	nop
  4aa804:	00621026 	xor	v0,v1,v0
  4aa808:	afc20018 	sw	v0,24(s8)
  4aa80c:	8fc30024 	lw	v1,36(s8)
  4aa810:	8fc20014 	lw	v0,20(s8)
  4aa814:	00000000 	nop
  4aa818:	00621024 	and	v0,v1,v0
  4aa81c:	afc20024 	sw	v0,36(s8)
  4aa820:	8fc30024 	lw	v1,36(s8)
  4aa824:	8fc20018 	lw	v0,24(s8)
  4aa828:	00000000 	nop
  4aa82c:	00621026 	xor	v0,v1,v0
  4aa830:	afc20024 	sw	v0,36(s8)
  4aa834:	8fc30018 	lw	v1,24(s8)
  4aa838:	8fc20020 	lw	v0,32(s8)
  4aa83c:	00000000 	nop
  4aa840:	00621024 	and	v0,v1,v0
  4aa844:	afc20018 	sw	v0,24(s8)
  4aa848:	8fc3001c 	lw	v1,28(s8)
  4aa84c:	8fc20018 	lw	v0,24(s8)
  4aa850:	00000000 	nop
  4aa854:	00621026 	xor	v0,v1,v0
  4aa858:	afc2001c 	sw	v0,28(s8)
  4aa85c:	8fc30014 	lw	v1,20(s8)
  4aa860:	8fc20020 	lw	v0,32(s8)
  4aa864:	00000000 	nop
  4aa868:	00621025 	or	v0,v1,v0
  4aa86c:	afc20014 	sw	v0,20(s8)
  4aa870:	8fc30014 	lw	v1,20(s8)
  4aa874:	8fc20018 	lw	v0,24(s8)
  4aa878:	00000000 	nop
  4aa87c:	00621026 	xor	v0,v1,v0
  4aa880:	afc20014 	sw	v0,20(s8)
  4aa884:	8fc30018 	lw	v1,24(s8)
  4aa888:	8fc2001c 	lw	v0,28(s8)
  4aa88c:	00000000 	nop
  4aa890:	00621025 	or	v0,v1,v0
  4aa894:	afc20018 	sw	v0,24(s8)
  4aa898:	8fc30018 	lw	v1,24(s8)
  4aa89c:	8fc20024 	lw	v0,36(s8)
  4aa8a0:	00000000 	nop
  4aa8a4:	00621026 	xor	v0,v1,v0
  4aa8a8:	afc20018 	sw	v0,24(s8)
  4aa8ac:	8fc30024 	lw	v1,36(s8)
  4aa8b0:	8fc2001c 	lw	v0,28(s8)
  4aa8b4:	00000000 	nop
  4aa8b8:	00621024 	and	v0,v1,v0
  4aa8bc:	afc20024 	sw	v0,36(s8)
  4aa8c0:	8fc20018 	lw	v0,24(s8)
  4aa8c4:	00000000 	nop
  4aa8c8:	00021027 	nor	v0,zero,v0
  4aa8cc:	afc20018 	sw	v0,24(s8)
  4aa8d0:	8fc30014 	lw	v1,20(s8)
  4aa8d4:	8fc20024 	lw	v0,36(s8)
  4aa8d8:	00000000 	nop
  4aa8dc:	00621026 	xor	v0,v1,v0
  4aa8e0:	afc20014 	sw	v0,20(s8)
      LINTRANS(r3,r0,r1,r2,r4);
  4aa8e4:	8fc20020 	lw	v0,32(s8)
  4aa8e8:	00000000 	nop
  4aa8ec:	00021b40 	sll	v1,v0,0xd
  4aa8f0:	000214c2 	srl	v0,v0,0x13
  4aa8f4:	00621025 	or	v0,v1,v0
  4aa8f8:	afc20020 	sw	v0,32(s8)
  4aa8fc:	8fc20018 	lw	v0,24(s8)
  4aa900:	00000000 	nop
  4aa904:	000218c0 	sll	v1,v0,0x3
  4aa908:	00021742 	srl	v0,v0,0x1d
  4aa90c:	00621025 	or	v0,v1,v0
  4aa910:	afc20018 	sw	v0,24(s8)
  4aa914:	8fc3001c 	lw	v1,28(s8)
  4aa918:	8fc20018 	lw	v0,24(s8)
  4aa91c:	00000000 	nop
  4aa920:	00621026 	xor	v0,v1,v0
  4aa924:	afc2001c 	sw	v0,28(s8)
  4aa928:	8fc20020 	lw	v0,32(s8)
  4aa92c:	00000000 	nop
  4aa930:	000210c0 	sll	v0,v0,0x3
  4aa934:	afc20024 	sw	v0,36(s8)
  4aa938:	8fc30014 	lw	v1,20(s8)
  4aa93c:	8fc20020 	lw	v0,32(s8)
  4aa940:	00000000 	nop
  4aa944:	00621026 	xor	v0,v1,v0
  4aa948:	afc20014 	sw	v0,20(s8)
  4aa94c:	8fc3001c 	lw	v1,28(s8)
  4aa950:	8fc20024 	lw	v0,36(s8)
  4aa954:	00000000 	nop
  4aa958:	00621026 	xor	v0,v1,v0
  4aa95c:	afc2001c 	sw	v0,28(s8)
  4aa960:	8fc30014 	lw	v1,20(s8)
  4aa964:	8fc20018 	lw	v0,24(s8)
  4aa968:	00000000 	nop
  4aa96c:	00621026 	xor	v0,v1,v0
  4aa970:	afc20014 	sw	v0,20(s8)
  4aa974:	8fc2001c 	lw	v0,28(s8)
  4aa978:	00000000 	nop
  4aa97c:	000219c0 	sll	v1,v0,0x7
  4aa980:	00021642 	srl	v0,v0,0x19
  4aa984:	00621025 	or	v0,v1,v0
  4aa988:	afc2001c 	sw	v0,28(s8)
  4aa98c:	8fc20014 	lw	v0,20(s8)
  4aa990:	00000000 	nop
  4aa994:	00021840 	sll	v1,v0,0x1
  4aa998:	000217c2 	srl	v0,v0,0x1f
  4aa99c:	00621025 	or	v0,v1,v0
  4aa9a0:	afc20014 	sw	v0,20(s8)
  4aa9a4:	8fc30018 	lw	v1,24(s8)
  4aa9a8:	8fc2001c 	lw	v0,28(s8)
  4aa9ac:	00000000 	nop
  4aa9b0:	00621026 	xor	v0,v1,v0
  4aa9b4:	afc20018 	sw	v0,24(s8)
  4aa9b8:	8fc20014 	lw	v0,20(s8)
  4aa9bc:	00000000 	nop
  4aa9c0:	000211c0 	sll	v0,v0,0x7
  4aa9c4:	afc20024 	sw	v0,36(s8)
  4aa9c8:	8fc30020 	lw	v1,32(s8)
  4aa9cc:	8fc20014 	lw	v0,20(s8)
  4aa9d0:	00000000 	nop
  4aa9d4:	00621026 	xor	v0,v1,v0
  4aa9d8:	afc20020 	sw	v0,32(s8)
  4aa9dc:	8fc30018 	lw	v1,24(s8)
  4aa9e0:	8fc20024 	lw	v0,36(s8)
  4aa9e4:	00000000 	nop
  4aa9e8:	00621026 	xor	v0,v1,v0
  4aa9ec:	afc20018 	sw	v0,24(s8)
  4aa9f0:	8fc30020 	lw	v1,32(s8)
  4aa9f4:	8fc2001c 	lw	v0,28(s8)
  4aa9f8:	00000000 	nop
  4aa9fc:	00621026 	xor	v0,v1,v0
  4aaa00:	afc20020 	sw	v0,32(s8)
  4aaa04:	8fc20018 	lw	v0,24(s8)
  4aaa08:	00000000 	nop
  4aaa0c:	00021d80 	sll	v1,v0,0x16
  4aaa10:	00021282 	srl	v0,v0,0xa
  4aaa14:	00621025 	or	v0,v1,v0
  4aaa18:	afc20018 	sw	v0,24(s8)
  4aaa1c:	8fc20020 	lw	v0,32(s8)
  4aaa20:	00000000 	nop
  4aaa24:	00021940 	sll	v1,v0,0x5
  4aaa28:	000216c2 	srl	v0,v0,0x1b
  4aaa2c:	00621025 	or	v0,v1,v0
  4aaa30:	afc20020 	sw	v0,32(s8)

      /* round 22  */
      KEYMIX(r3,r0,r1,r2,r4,84);
  4aaa34:	8fc20008 	lw	v0,8(s8)
  4aaa38:	00000000 	nop
  4aaa3c:	24420170 	addiu	v0,v0,368
  4aaa40:	8c430000 	lw	v1,0(v0)
  4aaa44:	8fc20020 	lw	v0,32(s8)
  4aaa48:	00000000 	nop
  4aaa4c:	00431026 	xor	v0,v0,v1
  4aaa50:	afc20020 	sw	v0,32(s8)
  4aaa54:	8fc20008 	lw	v0,8(s8)
  4aaa58:	00000000 	nop
  4aaa5c:	24420174 	addiu	v0,v0,372
  4aaa60:	8c430000 	lw	v1,0(v0)
  4aaa64:	8fc20014 	lw	v0,20(s8)
  4aaa68:	00000000 	nop
  4aaa6c:	00431026 	xor	v0,v0,v1
  4aaa70:	afc20014 	sw	v0,20(s8)
  4aaa74:	8fc20008 	lw	v0,8(s8)
  4aaa78:	00000000 	nop
  4aaa7c:	24420178 	addiu	v0,v0,376
  4aaa80:	8c430000 	lw	v1,0(v0)
  4aaa84:	8fc20018 	lw	v0,24(s8)
  4aaa88:	00000000 	nop
  4aaa8c:	00431026 	xor	v0,v0,v1
  4aaa90:	afc20018 	sw	v0,24(s8)
  4aaa94:	8fc20008 	lw	v0,8(s8)
  4aaa98:	00000000 	nop
  4aaa9c:	2442017c 	addiu	v0,v0,380
  4aaaa0:	8c430000 	lw	v1,0(v0)
  4aaaa4:	8fc2001c 	lw	v0,28(s8)
  4aaaa8:	00000000 	nop
  4aaaac:	00431026 	xor	v0,v0,v1
  4aaab0:	afc2001c 	sw	v0,28(s8)
      S5(r3,r0,r1,r2,r4);
  4aaab4:	8fc30020 	lw	v1,32(s8)
  4aaab8:	8fc20014 	lw	v0,20(s8)
  4aaabc:	00000000 	nop
  4aaac0:	00621026 	xor	v0,v1,v0
  4aaac4:	afc20020 	sw	v0,32(s8)
  4aaac8:	8fc30014 	lw	v1,20(s8)
  4aaacc:	8fc2001c 	lw	v0,28(s8)
  4aaad0:	00000000 	nop
  4aaad4:	00621026 	xor	v0,v1,v0
  4aaad8:	afc20014 	sw	v0,20(s8)
  4aaadc:	8fc2001c 	lw	v0,28(s8)
  4aaae0:	00000000 	nop
  4aaae4:	00021027 	nor	v0,zero,v0
  4aaae8:	afc2001c 	sw	v0,28(s8)
  4aaaec:	8fc20014 	lw	v0,20(s8)
  4aaaf0:	00000000 	nop
  4aaaf4:	afc20024 	sw	v0,36(s8)
  4aaaf8:	8fc30014 	lw	v1,20(s8)
  4aaafc:	8fc20020 	lw	v0,32(s8)
  4aab00:	00000000 	nop
  4aab04:	00621024 	and	v0,v1,v0
  4aab08:	afc20014 	sw	v0,20(s8)
  4aab0c:	8fc30018 	lw	v1,24(s8)
  4aab10:	8fc2001c 	lw	v0,28(s8)
  4aab14:	00000000 	nop
  4aab18:	00621026 	xor	v0,v1,v0
  4aab1c:	afc20018 	sw	v0,24(s8)
  4aab20:	8fc30014 	lw	v1,20(s8)
  4aab24:	8fc20018 	lw	v0,24(s8)
  4aab28:	00000000 	nop
  4aab2c:	00621026 	xor	v0,v1,v0
  4aab30:	afc20014 	sw	v0,20(s8)
  4aab34:	8fc30018 	lw	v1,24(s8)
  4aab38:	8fc20024 	lw	v0,36(s8)
  4aab3c:	00000000 	nop
  4aab40:	00621025 	or	v0,v1,v0
  4aab44:	afc20018 	sw	v0,24(s8)
  4aab48:	8fc30024 	lw	v1,36(s8)
  4aab4c:	8fc2001c 	lw	v0,28(s8)
  4aab50:	00000000 	nop
  4aab54:	00621026 	xor	v0,v1,v0
  4aab58:	afc20024 	sw	v0,36(s8)
  4aab5c:	8fc3001c 	lw	v1,28(s8)
  4aab60:	8fc20014 	lw	v0,20(s8)
  4aab64:	00000000 	nop
  4aab68:	00621024 	and	v0,v1,v0
  4aab6c:	afc2001c 	sw	v0,28(s8)
  4aab70:	8fc3001c 	lw	v1,28(s8)
  4aab74:	8fc20020 	lw	v0,32(s8)
  4aab78:	00000000 	nop
  4aab7c:	00621026 	xor	v0,v1,v0
  4aab80:	afc2001c 	sw	v0,28(s8)
  4aab84:	8fc30024 	lw	v1,36(s8)
  4aab88:	8fc20014 	lw	v0,20(s8)
  4aab8c:	00000000 	nop
  4aab90:	00621026 	xor	v0,v1,v0
  4aab94:	afc20024 	sw	v0,36(s8)
  4aab98:	8fc30024 	lw	v1,36(s8)
  4aab9c:	8fc20018 	lw	v0,24(s8)
  4aaba0:	00000000 	nop
  4aaba4:	00621026 	xor	v0,v1,v0
  4aaba8:	afc20024 	sw	v0,36(s8)
  4aabac:	8fc30018 	lw	v1,24(s8)
  4aabb0:	8fc20020 	lw	v0,32(s8)
  4aabb4:	00000000 	nop
  4aabb8:	00621026 	xor	v0,v1,v0
  4aabbc:	afc20018 	sw	v0,24(s8)
  4aabc0:	8fc30020 	lw	v1,32(s8)
  4aabc4:	8fc2001c 	lw	v0,28(s8)
  4aabc8:	00000000 	nop
  4aabcc:	00621024 	and	v0,v1,v0
  4aabd0:	afc20020 	sw	v0,32(s8)
  4aabd4:	8fc20018 	lw	v0,24(s8)
  4aabd8:	00000000 	nop
  4aabdc:	00021027 	nor	v0,zero,v0
  4aabe0:	afc20018 	sw	v0,24(s8)
  4aabe4:	8fc30020 	lw	v1,32(s8)
  4aabe8:	8fc20024 	lw	v0,36(s8)
  4aabec:	00000000 	nop
  4aabf0:	00621026 	xor	v0,v1,v0
  4aabf4:	afc20020 	sw	v0,32(s8)
  4aabf8:	8fc30024 	lw	v1,36(s8)
  4aabfc:	8fc2001c 	lw	v0,28(s8)
  4aac00:	00000000 	nop
  4aac04:	00621025 	or	v0,v1,v0
  4aac08:	afc20024 	sw	v0,36(s8)
  4aac0c:	8fc30018 	lw	v1,24(s8)
  4aac10:	8fc20024 	lw	v0,36(s8)
  4aac14:	00000000 	nop
  4aac18:	00621026 	xor	v0,v1,v0
  4aac1c:	afc20018 	sw	v0,24(s8)
      LINTRANS(r0,r2,r3,r1,r4);
  4aac20:	8fc20014 	lw	v0,20(s8)
  4aac24:	00000000 	nop
  4aac28:	00021b40 	sll	v1,v0,0xd
  4aac2c:	000214c2 	srl	v0,v0,0x13
  4aac30:	00621025 	or	v0,v1,v0
  4aac34:	afc20014 	sw	v0,20(s8)
  4aac38:	8fc20020 	lw	v0,32(s8)
  4aac3c:	00000000 	nop
  4aac40:	000218c0 	sll	v1,v0,0x3
  4aac44:	00021742 	srl	v0,v0,0x1d
  4aac48:	00621025 	or	v0,v1,v0
  4aac4c:	afc20020 	sw	v0,32(s8)
  4aac50:	8fc30018 	lw	v1,24(s8)
  4aac54:	8fc20020 	lw	v0,32(s8)
  4aac58:	00000000 	nop
  4aac5c:	00621026 	xor	v0,v1,v0
  4aac60:	afc20018 	sw	v0,24(s8)
  4aac64:	8fc20014 	lw	v0,20(s8)
  4aac68:	00000000 	nop
  4aac6c:	000210c0 	sll	v0,v0,0x3
  4aac70:	afc20024 	sw	v0,36(s8)
  4aac74:	8fc3001c 	lw	v1,28(s8)
  4aac78:	8fc20014 	lw	v0,20(s8)
  4aac7c:	00000000 	nop
  4aac80:	00621026 	xor	v0,v1,v0
  4aac84:	afc2001c 	sw	v0,28(s8)
  4aac88:	8fc30018 	lw	v1,24(s8)
  4aac8c:	8fc20024 	lw	v0,36(s8)
  4aac90:	00000000 	nop
  4aac94:	00621026 	xor	v0,v1,v0
  4aac98:	afc20018 	sw	v0,24(s8)
  4aac9c:	8fc3001c 	lw	v1,28(s8)
  4aaca0:	8fc20020 	lw	v0,32(s8)
  4aaca4:	00000000 	nop
  4aaca8:	00621026 	xor	v0,v1,v0
  4aacac:	afc2001c 	sw	v0,28(s8)
  4aacb0:	8fc20018 	lw	v0,24(s8)
  4aacb4:	00000000 	nop
  4aacb8:	000219c0 	sll	v1,v0,0x7
  4aacbc:	00021642 	srl	v0,v0,0x19
  4aacc0:	00621025 	or	v0,v1,v0
  4aacc4:	afc20018 	sw	v0,24(s8)
  4aacc8:	8fc2001c 	lw	v0,28(s8)
  4aaccc:	00000000 	nop
  4aacd0:	00021840 	sll	v1,v0,0x1
  4aacd4:	000217c2 	srl	v0,v0,0x1f
  4aacd8:	00621025 	or	v0,v1,v0
  4aacdc:	afc2001c 	sw	v0,28(s8)
  4aace0:	8fc30020 	lw	v1,32(s8)
  4aace4:	8fc20018 	lw	v0,24(s8)
  4aace8:	00000000 	nop
  4aacec:	00621026 	xor	v0,v1,v0
  4aacf0:	afc20020 	sw	v0,32(s8)
  4aacf4:	8fc2001c 	lw	v0,28(s8)
  4aacf8:	00000000 	nop
  4aacfc:	000211c0 	sll	v0,v0,0x7
  4aad00:	afc20024 	sw	v0,36(s8)
  4aad04:	8fc30014 	lw	v1,20(s8)
  4aad08:	8fc2001c 	lw	v0,28(s8)
  4aad0c:	00000000 	nop
  4aad10:	00621026 	xor	v0,v1,v0
  4aad14:	afc20014 	sw	v0,20(s8)
  4aad18:	8fc30020 	lw	v1,32(s8)
  4aad1c:	8fc20024 	lw	v0,36(s8)
  4aad20:	00000000 	nop
  4aad24:	00621026 	xor	v0,v1,v0
  4aad28:	afc20020 	sw	v0,32(s8)
  4aad2c:	8fc30014 	lw	v1,20(s8)
  4aad30:	8fc20018 	lw	v0,24(s8)
  4aad34:	00000000 	nop
  4aad38:	00621026 	xor	v0,v1,v0
  4aad3c:	afc20014 	sw	v0,20(s8)
  4aad40:	8fc20020 	lw	v0,32(s8)
  4aad44:	00000000 	nop
  4aad48:	00021d80 	sll	v1,v0,0x16
  4aad4c:	00021282 	srl	v0,v0,0xa
  4aad50:	00621025 	or	v0,v1,v0
  4aad54:	afc20020 	sw	v0,32(s8)
  4aad58:	8fc20014 	lw	v0,20(s8)
  4aad5c:	00000000 	nop
  4aad60:	00021940 	sll	v1,v0,0x5
  4aad64:	000216c2 	srl	v0,v0,0x1b
  4aad68:	00621025 	or	v0,v1,v0
  4aad6c:	afc20014 	sw	v0,20(s8)

      /* round 23  */
      KEYMIX(r0,r2,r3,r1,r4,88);
  4aad70:	8fc20008 	lw	v0,8(s8)
  4aad74:	00000000 	nop
  4aad78:	24420180 	addiu	v0,v0,384
  4aad7c:	8c430000 	lw	v1,0(v0)
  4aad80:	8fc20014 	lw	v0,20(s8)
  4aad84:	00000000 	nop
  4aad88:	00431026 	xor	v0,v0,v1
  4aad8c:	afc20014 	sw	v0,20(s8)
  4aad90:	8fc20008 	lw	v0,8(s8)
  4aad94:	00000000 	nop
  4aad98:	24420184 	addiu	v0,v0,388
  4aad9c:	8c430000 	lw	v1,0(v0)
  4aada0:	8fc2001c 	lw	v0,28(s8)
  4aada4:	00000000 	nop
  4aada8:	00431026 	xor	v0,v0,v1
  4aadac:	afc2001c 	sw	v0,28(s8)
  4aadb0:	8fc20008 	lw	v0,8(s8)
  4aadb4:	00000000 	nop
  4aadb8:	24420188 	addiu	v0,v0,392
  4aadbc:	8c430000 	lw	v1,0(v0)
  4aadc0:	8fc20020 	lw	v0,32(s8)
  4aadc4:	00000000 	nop
  4aadc8:	00431026 	xor	v0,v0,v1
  4aadcc:	afc20020 	sw	v0,32(s8)
  4aadd0:	8fc20008 	lw	v0,8(s8)
  4aadd4:	00000000 	nop
  4aadd8:	2442018c 	addiu	v0,v0,396
  4aaddc:	8c430000 	lw	v1,0(v0)
  4aade0:	8fc20018 	lw	v0,24(s8)
  4aade4:	00000000 	nop
  4aade8:	00431026 	xor	v0,v0,v1
  4aadec:	afc20018 	sw	v0,24(s8)
      S6(r0,r2,r3,r1,r4) 
  4aadf0:	8fc20020 	lw	v0,32(s8)
  4aadf4:	00000000 	nop
  4aadf8:	00021027 	nor	v0,zero,v0
  4aadfc:	afc20020 	sw	v0,32(s8)
  4aae00:	8fc20018 	lw	v0,24(s8)
  4aae04:	00000000 	nop
  4aae08:	afc20024 	sw	v0,36(s8)
  4aae0c:	8fc30018 	lw	v1,24(s8)
  4aae10:	8fc20014 	lw	v0,20(s8)
  4aae14:	00000000 	nop
  4aae18:	00621024 	and	v0,v1,v0
  4aae1c:	afc20018 	sw	v0,24(s8)
  4aae20:	8fc30014 	lw	v1,20(s8)
  4aae24:	8fc20024 	lw	v0,36(s8)
  4aae28:	00000000 	nop
  4aae2c:	00621026 	xor	v0,v1,v0
  4aae30:	afc20014 	sw	v0,20(s8)
  4aae34:	8fc30018 	lw	v1,24(s8)
  4aae38:	8fc20020 	lw	v0,32(s8)
  4aae3c:	00000000 	nop
  4aae40:	00621026 	xor	v0,v1,v0
  4aae44:	afc20018 	sw	v0,24(s8)
  4aae48:	8fc30020 	lw	v1,32(s8)
  4aae4c:	8fc20024 	lw	v0,36(s8)
  4aae50:	00000000 	nop
  4aae54:	00621025 	or	v0,v1,v0
  4aae58:	afc20020 	sw	v0,32(s8)
  4aae5c:	8fc3001c 	lw	v1,28(s8)
  4aae60:	8fc20018 	lw	v0,24(s8)
  4aae64:	00000000 	nop
  4aae68:	00621026 	xor	v0,v1,v0
  4aae6c:	afc2001c 	sw	v0,28(s8)
  4aae70:	8fc30020 	lw	v1,32(s8)
  4aae74:	8fc20014 	lw	v0,20(s8)
  4aae78:	00000000 	nop
  4aae7c:	00621026 	xor	v0,v1,v0
  4aae80:	afc20020 	sw	v0,32(s8)
  4aae84:	8fc30014 	lw	v1,20(s8)
  4aae88:	8fc2001c 	lw	v0,28(s8)
  4aae8c:	00000000 	nop
  4aae90:	00621025 	or	v0,v1,v0
  4aae94:	afc20014 	sw	v0,20(s8)
  4aae98:	8fc30020 	lw	v1,32(s8)
  4aae9c:	8fc2001c 	lw	v0,28(s8)
  4aaea0:	00000000 	nop
  4aaea4:	00621026 	xor	v0,v1,v0
  4aaea8:	afc20020 	sw	v0,32(s8)
  4aaeac:	8fc30024 	lw	v1,36(s8)
  4aaeb0:	8fc20014 	lw	v0,20(s8)
  4aaeb4:	00000000 	nop
  4aaeb8:	00621026 	xor	v0,v1,v0
  4aaebc:	afc20024 	sw	v0,36(s8)
  4aaec0:	8fc30014 	lw	v1,20(s8)
  4aaec4:	8fc20018 	lw	v0,24(s8)
  4aaec8:	00000000 	nop
  4aaecc:	00621025 	or	v0,v1,v0
  4aaed0:	afc20014 	sw	v0,20(s8)
  4aaed4:	8fc30014 	lw	v1,20(s8)
  4aaed8:	8fc20020 	lw	v0,32(s8)
  4aaedc:	00000000 	nop
  4aaee0:	00621026 	xor	v0,v1,v0
  4aaee4:	afc20014 	sw	v0,20(s8)
  4aaee8:	8fc30024 	lw	v1,36(s8)
  4aaeec:	8fc20018 	lw	v0,24(s8)
  4aaef0:	00000000 	nop
  4aaef4:	00621026 	xor	v0,v1,v0
  4aaef8:	afc20024 	sw	v0,36(s8)
  4aaefc:	8fc30024 	lw	v1,36(s8)
  4aaf00:	8fc20014 	lw	v0,20(s8)
  4aaf04:	00000000 	nop
  4aaf08:	00621026 	xor	v0,v1,v0
  4aaf0c:	afc20024 	sw	v0,36(s8)
  4aaf10:	8fc20018 	lw	v0,24(s8)
  4aaf14:	00000000 	nop
  4aaf18:	00021027 	nor	v0,zero,v0
  4aaf1c:	afc20018 	sw	v0,24(s8)
  4aaf20:	8fc30020 	lw	v1,32(s8)
  4aaf24:	8fc20024 	lw	v0,36(s8)
  4aaf28:	00000000 	nop
  4aaf2c:	00621024 	and	v0,v1,v0
  4aaf30:	afc20020 	sw	v0,32(s8)
  4aaf34:	8fc30020 	lw	v1,32(s8)
  4aaf38:	8fc20018 	lw	v0,24(s8)
  4aaf3c:	00000000 	nop
  4aaf40:	00621026 	xor	v0,v1,v0
  4aaf44:	afc20020 	sw	v0,32(s8)
      LINTRANS(r0,r2,r4,r3,r1);
  4aaf48:	8fc20014 	lw	v0,20(s8)
  4aaf4c:	00000000 	nop
  4aaf50:	00021b40 	sll	v1,v0,0xd
  4aaf54:	000214c2 	srl	v0,v0,0x13
  4aaf58:	00621025 	or	v0,v1,v0
  4aaf5c:	afc20014 	sw	v0,20(s8)
  4aaf60:	8fc20024 	lw	v0,36(s8)
  4aaf64:	00000000 	nop
  4aaf68:	000218c0 	sll	v1,v0,0x3
  4aaf6c:	00021742 	srl	v0,v0,0x1d
  4aaf70:	00621025 	or	v0,v1,v0
  4aaf74:	afc20024 	sw	v0,36(s8)
  4aaf78:	8fc30020 	lw	v1,32(s8)
  4aaf7c:	8fc20024 	lw	v0,36(s8)
  4aaf80:	00000000 	nop
  4aaf84:	00621026 	xor	v0,v1,v0
  4aaf88:	afc20020 	sw	v0,32(s8)
  4aaf8c:	8fc20014 	lw	v0,20(s8)
  4aaf90:	00000000 	nop
  4aaf94:	000210c0 	sll	v0,v0,0x3
  4aaf98:	afc20018 	sw	v0,24(s8)
  4aaf9c:	8fc3001c 	lw	v1,28(s8)
  4aafa0:	8fc20014 	lw	v0,20(s8)
  4aafa4:	00000000 	nop
  4aafa8:	00621026 	xor	v0,v1,v0
  4aafac:	afc2001c 	sw	v0,28(s8)
  4aafb0:	8fc30020 	lw	v1,32(s8)
  4aafb4:	8fc20018 	lw	v0,24(s8)
  4aafb8:	00000000 	nop
  4aafbc:	00621026 	xor	v0,v1,v0
  4aafc0:	afc20020 	sw	v0,32(s8)
  4aafc4:	8fc3001c 	lw	v1,28(s8)
  4aafc8:	8fc20024 	lw	v0,36(s8)
  4aafcc:	00000000 	nop
  4aafd0:	00621026 	xor	v0,v1,v0
  4aafd4:	afc2001c 	sw	v0,28(s8)
  4aafd8:	8fc20020 	lw	v0,32(s8)
  4aafdc:	00000000 	nop
  4aafe0:	000219c0 	sll	v1,v0,0x7
  4aafe4:	00021642 	srl	v0,v0,0x19
  4aafe8:	00621025 	or	v0,v1,v0
  4aafec:	afc20020 	sw	v0,32(s8)
  4aaff0:	8fc2001c 	lw	v0,28(s8)
  4aaff4:	00000000 	nop
  4aaff8:	00021840 	sll	v1,v0,0x1
  4aaffc:	000217c2 	srl	v0,v0,0x1f
  4ab000:	00621025 	or	v0,v1,v0
  4ab004:	afc2001c 	sw	v0,28(s8)
  4ab008:	8fc30024 	lw	v1,36(s8)
  4ab00c:	8fc20020 	lw	v0,32(s8)
  4ab010:	00000000 	nop
  4ab014:	00621026 	xor	v0,v1,v0
  4ab018:	afc20024 	sw	v0,36(s8)
  4ab01c:	8fc2001c 	lw	v0,28(s8)
  4ab020:	00000000 	nop
  4ab024:	000211c0 	sll	v0,v0,0x7
  4ab028:	afc20018 	sw	v0,24(s8)
  4ab02c:	8fc30014 	lw	v1,20(s8)
  4ab030:	8fc2001c 	lw	v0,28(s8)
  4ab034:	00000000 	nop
  4ab038:	00621026 	xor	v0,v1,v0
  4ab03c:	afc20014 	sw	v0,20(s8)
  4ab040:	8fc30024 	lw	v1,36(s8)
  4ab044:	8fc20018 	lw	v0,24(s8)
  4ab048:	00000000 	nop
  4ab04c:	00621026 	xor	v0,v1,v0
  4ab050:	afc20024 	sw	v0,36(s8)
  4ab054:	8fc30014 	lw	v1,20(s8)
  4ab058:	8fc20020 	lw	v0,32(s8)
  4ab05c:	00000000 	nop
  4ab060:	00621026 	xor	v0,v1,v0
  4ab064:	afc20014 	sw	v0,20(s8)
  4ab068:	8fc20024 	lw	v0,36(s8)
  4ab06c:	00000000 	nop
  4ab070:	00021d80 	sll	v1,v0,0x16
  4ab074:	00021282 	srl	v0,v0,0xa
  4ab078:	00621025 	or	v0,v1,v0
  4ab07c:	afc20024 	sw	v0,36(s8)
  4ab080:	8fc20014 	lw	v0,20(s8)
  4ab084:	00000000 	nop
  4ab088:	00021940 	sll	v1,v0,0x5
  4ab08c:	000216c2 	srl	v0,v0,0x1b
  4ab090:	00621025 	or	v0,v1,v0
  4ab094:	afc20014 	sw	v0,20(s8)

      /* round 24  */
      KEYMIX(r0,r2,r4,r3,r1,92);
  4ab098:	8fc20008 	lw	v0,8(s8)
  4ab09c:	00000000 	nop
  4ab0a0:	24420190 	addiu	v0,v0,400
  4ab0a4:	8c430000 	lw	v1,0(v0)
  4ab0a8:	8fc20014 	lw	v0,20(s8)
  4ab0ac:	00000000 	nop
  4ab0b0:	00431026 	xor	v0,v0,v1
  4ab0b4:	afc20014 	sw	v0,20(s8)
  4ab0b8:	8fc20008 	lw	v0,8(s8)
  4ab0bc:	00000000 	nop
  4ab0c0:	24420194 	addiu	v0,v0,404
  4ab0c4:	8c430000 	lw	v1,0(v0)
  4ab0c8:	8fc2001c 	lw	v0,28(s8)
  4ab0cc:	00000000 	nop
  4ab0d0:	00431026 	xor	v0,v0,v1
  4ab0d4:	afc2001c 	sw	v0,28(s8)
  4ab0d8:	8fc20008 	lw	v0,8(s8)
  4ab0dc:	00000000 	nop
  4ab0e0:	24420198 	addiu	v0,v0,408
  4ab0e4:	8c430000 	lw	v1,0(v0)
  4ab0e8:	8fc20024 	lw	v0,36(s8)
  4ab0ec:	00000000 	nop
  4ab0f0:	00431026 	xor	v0,v0,v1
  4ab0f4:	afc20024 	sw	v0,36(s8)
  4ab0f8:	8fc20008 	lw	v0,8(s8)
  4ab0fc:	00000000 	nop
  4ab100:	2442019c 	addiu	v0,v0,412
  4ab104:	8c430000 	lw	v1,0(v0)
  4ab108:	8fc20020 	lw	v0,32(s8)
  4ab10c:	00000000 	nop
  4ab110:	00431026 	xor	v0,v0,v1
  4ab114:	afc20020 	sw	v0,32(s8)
      S7(r0,r2,r4,r3,r1);
  4ab118:	8fc20024 	lw	v0,36(s8)
  4ab11c:	00000000 	nop
  4ab120:	afc20018 	sw	v0,24(s8)
  4ab124:	8fc30024 	lw	v1,36(s8)
  4ab128:	8fc2001c 	lw	v0,28(s8)
  4ab12c:	00000000 	nop
  4ab130:	00621024 	and	v0,v1,v0
  4ab134:	afc20024 	sw	v0,36(s8)
  4ab138:	8fc30024 	lw	v1,36(s8)
  4ab13c:	8fc20020 	lw	v0,32(s8)
  4ab140:	00000000 	nop
  4ab144:	00621026 	xor	v0,v1,v0
  4ab148:	afc20024 	sw	v0,36(s8)
  4ab14c:	8fc30020 	lw	v1,32(s8)
  4ab150:	8fc2001c 	lw	v0,28(s8)
  4ab154:	00000000 	nop
  4ab158:	00621024 	and	v0,v1,v0
  4ab15c:	afc20020 	sw	v0,32(s8)
  4ab160:	8fc30018 	lw	v1,24(s8)
  4ab164:	8fc20024 	lw	v0,36(s8)
  4ab168:	00000000 	nop
  4ab16c:	00621026 	xor	v0,v1,v0
  4ab170:	afc20018 	sw	v0,24(s8)
  4ab174:	8fc30024 	lw	v1,36(s8)
  4ab178:	8fc2001c 	lw	v0,28(s8)
  4ab17c:	00000000 	nop
  4ab180:	00621026 	xor	v0,v1,v0
  4ab184:	afc20024 	sw	v0,36(s8)
  4ab188:	8fc3001c 	lw	v1,28(s8)
  4ab18c:	8fc20014 	lw	v0,20(s8)
  4ab190:	00000000 	nop
  4ab194:	00621026 	xor	v0,v1,v0
  4ab198:	afc2001c 	sw	v0,28(s8)
  4ab19c:	8fc30014 	lw	v1,20(s8)
  4ab1a0:	8fc20018 	lw	v0,24(s8)
  4ab1a4:	00000000 	nop
  4ab1a8:	00621025 	or	v0,v1,v0
  4ab1ac:	afc20014 	sw	v0,20(s8)
  4ab1b0:	8fc30014 	lw	v1,20(s8)
  4ab1b4:	8fc20024 	lw	v0,36(s8)
  4ab1b8:	00000000 	nop
  4ab1bc:	00621026 	xor	v0,v1,v0
  4ab1c0:	afc20014 	sw	v0,20(s8)
  4ab1c4:	8fc30020 	lw	v1,32(s8)
  4ab1c8:	8fc2001c 	lw	v0,28(s8)
  4ab1cc:	00000000 	nop
  4ab1d0:	00621026 	xor	v0,v1,v0
  4ab1d4:	afc20020 	sw	v0,32(s8)
  4ab1d8:	8fc30024 	lw	v1,36(s8)
  4ab1dc:	8fc20020 	lw	v0,32(s8)
  4ab1e0:	00000000 	nop
  4ab1e4:	00621026 	xor	v0,v1,v0
  4ab1e8:	afc20024 	sw	v0,36(s8)
  4ab1ec:	8fc30020 	lw	v1,32(s8)
  4ab1f0:	8fc20014 	lw	v0,20(s8)
  4ab1f4:	00000000 	nop
  4ab1f8:	00621024 	and	v0,v1,v0
  4ab1fc:	afc20020 	sw	v0,32(s8)
  4ab200:	8fc30020 	lw	v1,32(s8)
  4ab204:	8fc20018 	lw	v0,24(s8)
  4ab208:	00000000 	nop
  4ab20c:	00621026 	xor	v0,v1,v0
  4ab210:	afc20020 	sw	v0,32(s8)
  4ab214:	8fc30018 	lw	v1,24(s8)
  4ab218:	8fc20024 	lw	v0,36(s8)
  4ab21c:	00000000 	nop
  4ab220:	00621026 	xor	v0,v1,v0
  4ab224:	afc20018 	sw	v0,24(s8)
  4ab228:	8fc30024 	lw	v1,36(s8)
  4ab22c:	8fc20014 	lw	v0,20(s8)
  4ab230:	00000000 	nop
  4ab234:	00621024 	and	v0,v1,v0
  4ab238:	afc20024 	sw	v0,36(s8)
  4ab23c:	8fc20018 	lw	v0,24(s8)
  4ab240:	00000000 	nop
  4ab244:	00021027 	nor	v0,zero,v0
  4ab248:	afc20018 	sw	v0,24(s8)
  4ab24c:	8fc30024 	lw	v1,36(s8)
  4ab250:	8fc20018 	lw	v0,24(s8)
  4ab254:	00000000 	nop
  4ab258:	00621026 	xor	v0,v1,v0
  4ab25c:	afc20024 	sw	v0,36(s8)
  4ab260:	8fc30018 	lw	v1,24(s8)
  4ab264:	8fc20014 	lw	v0,20(s8)
  4ab268:	00000000 	nop
  4ab26c:	00621024 	and	v0,v1,v0
  4ab270:	afc20018 	sw	v0,24(s8)
  4ab274:	8fc3001c 	lw	v1,28(s8)
  4ab278:	8fc20020 	lw	v0,32(s8)
  4ab27c:	00000000 	nop
  4ab280:	00621026 	xor	v0,v1,v0
  4ab284:	afc2001c 	sw	v0,28(s8)
  4ab288:	8fc30018 	lw	v1,24(s8)
  4ab28c:	8fc2001c 	lw	v0,28(s8)
  4ab290:	00000000 	nop
  4ab294:	00621026 	xor	v0,v1,v0
  4ab298:	afc20018 	sw	v0,24(s8)
      LINTRANS(r4,r1,r3,r0,r2);
  4ab29c:	8fc20024 	lw	v0,36(s8)
  4ab2a0:	00000000 	nop
  4ab2a4:	00021b40 	sll	v1,v0,0xd
  4ab2a8:	000214c2 	srl	v0,v0,0x13
  4ab2ac:	00621025 	or	v0,v1,v0
  4ab2b0:	afc20024 	sw	v0,36(s8)
  4ab2b4:	8fc20020 	lw	v0,32(s8)
  4ab2b8:	00000000 	nop
  4ab2bc:	000218c0 	sll	v1,v0,0x3
  4ab2c0:	00021742 	srl	v0,v0,0x1d
  4ab2c4:	00621025 	or	v0,v1,v0
  4ab2c8:	afc20020 	sw	v0,32(s8)
  4ab2cc:	8fc30014 	lw	v1,20(s8)
  4ab2d0:	8fc20020 	lw	v0,32(s8)
  4ab2d4:	00000000 	nop
  4ab2d8:	00621026 	xor	v0,v1,v0
  4ab2dc:	afc20014 	sw	v0,20(s8)
  4ab2e0:	8fc20024 	lw	v0,36(s8)
  4ab2e4:	00000000 	nop
  4ab2e8:	000210c0 	sll	v0,v0,0x3
  4ab2ec:	afc2001c 	sw	v0,28(s8)
  4ab2f0:	8fc30018 	lw	v1,24(s8)
  4ab2f4:	8fc20024 	lw	v0,36(s8)
  4ab2f8:	00000000 	nop
  4ab2fc:	00621026 	xor	v0,v1,v0
  4ab300:	afc20018 	sw	v0,24(s8)
  4ab304:	8fc30014 	lw	v1,20(s8)
  4ab308:	8fc2001c 	lw	v0,28(s8)
  4ab30c:	00000000 	nop
  4ab310:	00621026 	xor	v0,v1,v0
  4ab314:	afc20014 	sw	v0,20(s8)
  4ab318:	8fc30018 	lw	v1,24(s8)
  4ab31c:	8fc20020 	lw	v0,32(s8)
  4ab320:	00000000 	nop
  4ab324:	00621026 	xor	v0,v1,v0
  4ab328:	afc20018 	sw	v0,24(s8)
  4ab32c:	8fc20014 	lw	v0,20(s8)
  4ab330:	00000000 	nop
  4ab334:	000219c0 	sll	v1,v0,0x7
  4ab338:	00021642 	srl	v0,v0,0x19
  4ab33c:	00621025 	or	v0,v1,v0
  4ab340:	afc20014 	sw	v0,20(s8)
  4ab344:	8fc20018 	lw	v0,24(s8)
  4ab348:	00000000 	nop
  4ab34c:	00021840 	sll	v1,v0,0x1
  4ab350:	000217c2 	srl	v0,v0,0x1f
  4ab354:	00621025 	or	v0,v1,v0
  4ab358:	afc20018 	sw	v0,24(s8)
  4ab35c:	8fc30020 	lw	v1,32(s8)
  4ab360:	8fc20014 	lw	v0,20(s8)
  4ab364:	00000000 	nop
  4ab368:	00621026 	xor	v0,v1,v0
  4ab36c:	afc20020 	sw	v0,32(s8)
  4ab370:	8fc20018 	lw	v0,24(s8)
  4ab374:	00000000 	nop
  4ab378:	000211c0 	sll	v0,v0,0x7
  4ab37c:	afc2001c 	sw	v0,28(s8)
  4ab380:	8fc30024 	lw	v1,36(s8)
  4ab384:	8fc20018 	lw	v0,24(s8)
  4ab388:	00000000 	nop
  4ab38c:	00621026 	xor	v0,v1,v0
  4ab390:	afc20024 	sw	v0,36(s8)
  4ab394:	8fc30020 	lw	v1,32(s8)
  4ab398:	8fc2001c 	lw	v0,28(s8)
  4ab39c:	00000000 	nop
  4ab3a0:	00621026 	xor	v0,v1,v0
  4ab3a4:	afc20020 	sw	v0,32(s8)
  4ab3a8:	8fc30024 	lw	v1,36(s8)
  4ab3ac:	8fc20014 	lw	v0,20(s8)
  4ab3b0:	00000000 	nop
  4ab3b4:	00621026 	xor	v0,v1,v0
  4ab3b8:	afc20024 	sw	v0,36(s8)
  4ab3bc:	8fc20020 	lw	v0,32(s8)
  4ab3c0:	00000000 	nop
  4ab3c4:	00021d80 	sll	v1,v0,0x16
  4ab3c8:	00021282 	srl	v0,v0,0xa
  4ab3cc:	00621025 	or	v0,v1,v0
  4ab3d0:	afc20020 	sw	v0,32(s8)
  4ab3d4:	8fc20024 	lw	v0,36(s8)
  4ab3d8:	00000000 	nop
  4ab3dc:	00021940 	sll	v1,v0,0x5
  4ab3e0:	000216c2 	srl	v0,v0,0x1b
  4ab3e4:	00621025 	or	v0,v1,v0
  4ab3e8:	afc20024 	sw	v0,36(s8)

      /* round 25  */
      KEYMIX(r4,r1,r3,r0,r2,96);
  4ab3ec:	8fc20008 	lw	v0,8(s8)
  4ab3f0:	00000000 	nop
  4ab3f4:	244201a0 	addiu	v0,v0,416
  4ab3f8:	8c430000 	lw	v1,0(v0)
  4ab3fc:	8fc20024 	lw	v0,36(s8)
  4ab400:	00000000 	nop
  4ab404:	00431026 	xor	v0,v0,v1
  4ab408:	afc20024 	sw	v0,36(s8)
  4ab40c:	8fc20008 	lw	v0,8(s8)
  4ab410:	00000000 	nop
  4ab414:	244201a4 	addiu	v0,v0,420
  4ab418:	8c430000 	lw	v1,0(v0)
  4ab41c:	8fc20018 	lw	v0,24(s8)
  4ab420:	00000000 	nop
  4ab424:	00431026 	xor	v0,v0,v1
  4ab428:	afc20018 	sw	v0,24(s8)
  4ab42c:	8fc20008 	lw	v0,8(s8)
  4ab430:	00000000 	nop
  4ab434:	244201a8 	addiu	v0,v0,424
  4ab438:	8c430000 	lw	v1,0(v0)
  4ab43c:	8fc20020 	lw	v0,32(s8)
  4ab440:	00000000 	nop
  4ab444:	00431026 	xor	v0,v0,v1
  4ab448:	afc20020 	sw	v0,32(s8)
  4ab44c:	8fc20008 	lw	v0,8(s8)
  4ab450:	00000000 	nop
  4ab454:	244201ac 	addiu	v0,v0,428
  4ab458:	8c430000 	lw	v1,0(v0)
  4ab45c:	8fc20014 	lw	v0,20(s8)
  4ab460:	00000000 	nop
  4ab464:	00431026 	xor	v0,v0,v1
  4ab468:	afc20014 	sw	v0,20(s8)
      S0(r4,r1,r3,r0,r2);
  4ab46c:	8fc30014 	lw	v1,20(s8)
  4ab470:	8fc20024 	lw	v0,36(s8)
  4ab474:	00000000 	nop
  4ab478:	00621026 	xor	v0,v1,v0
  4ab47c:	afc20014 	sw	v0,20(s8)
  4ab480:	8fc20018 	lw	v0,24(s8)
  4ab484:	00000000 	nop
  4ab488:	afc2001c 	sw	v0,28(s8)
  4ab48c:	8fc30018 	lw	v1,24(s8)
  4ab490:	8fc20014 	lw	v0,20(s8)
  4ab494:	00000000 	nop
  4ab498:	00621024 	and	v0,v1,v0
  4ab49c:	afc20018 	sw	v0,24(s8)
  4ab4a0:	8fc3001c 	lw	v1,28(s8)
  4ab4a4:	8fc20020 	lw	v0,32(s8)
  4ab4a8:	00000000 	nop
  4ab4ac:	00621026 	xor	v0,v1,v0
  4ab4b0:	afc2001c 	sw	v0,28(s8)
  4ab4b4:	8fc30018 	lw	v1,24(s8)
  4ab4b8:	8fc20024 	lw	v0,36(s8)
  4ab4bc:	00000000 	nop
  4ab4c0:	00621026 	xor	v0,v1,v0
  4ab4c4:	afc20018 	sw	v0,24(s8)
  4ab4c8:	8fc30024 	lw	v1,36(s8)
  4ab4cc:	8fc20014 	lw	v0,20(s8)
  4ab4d0:	00000000 	nop
  4ab4d4:	00621025 	or	v0,v1,v0
  4ab4d8:	afc20024 	sw	v0,36(s8)
  4ab4dc:	8fc30024 	lw	v1,36(s8)
  4ab4e0:	8fc2001c 	lw	v0,28(s8)
  4ab4e4:	00000000 	nop
  4ab4e8:	00621026 	xor	v0,v1,v0
  4ab4ec:	afc20024 	sw	v0,36(s8)
  4ab4f0:	8fc3001c 	lw	v1,28(s8)
  4ab4f4:	8fc20014 	lw	v0,20(s8)
  4ab4f8:	00000000 	nop
  4ab4fc:	00621026 	xor	v0,v1,v0
  4ab500:	afc2001c 	sw	v0,28(s8)
  4ab504:	8fc30014 	lw	v1,20(s8)
  4ab508:	8fc20020 	lw	v0,32(s8)
  4ab50c:	00000000 	nop
  4ab510:	00621026 	xor	v0,v1,v0
  4ab514:	afc20014 	sw	v0,20(s8)
  4ab518:	8fc30020 	lw	v1,32(s8)
  4ab51c:	8fc20018 	lw	v0,24(s8)
  4ab520:	00000000 	nop
  4ab524:	00621025 	or	v0,v1,v0
  4ab528:	afc20020 	sw	v0,32(s8)
  4ab52c:	8fc30020 	lw	v1,32(s8)
  4ab530:	8fc2001c 	lw	v0,28(s8)
  4ab534:	00000000 	nop
  4ab538:	00621026 	xor	v0,v1,v0
  4ab53c:	afc20020 	sw	v0,32(s8)
  4ab540:	8fc2001c 	lw	v0,28(s8)
  4ab544:	00000000 	nop
  4ab548:	00021027 	nor	v0,zero,v0
  4ab54c:	afc2001c 	sw	v0,28(s8)
  4ab550:	8fc3001c 	lw	v1,28(s8)
  4ab554:	8fc20018 	lw	v0,24(s8)
  4ab558:	00000000 	nop
  4ab55c:	00621025 	or	v0,v1,v0
  4ab560:	afc2001c 	sw	v0,28(s8)
  4ab564:	8fc30018 	lw	v1,24(s8)
  4ab568:	8fc20014 	lw	v0,20(s8)
  4ab56c:	00000000 	nop
  4ab570:	00621026 	xor	v0,v1,v0
  4ab574:	afc20018 	sw	v0,24(s8)
  4ab578:	8fc30018 	lw	v1,24(s8)
  4ab57c:	8fc2001c 	lw	v0,28(s8)
  4ab580:	00000000 	nop
  4ab584:	00621026 	xor	v0,v1,v0
  4ab588:	afc20018 	sw	v0,24(s8)
  4ab58c:	8fc30014 	lw	v1,20(s8)
  4ab590:	8fc20024 	lw	v0,36(s8)
  4ab594:	00000000 	nop
  4ab598:	00621025 	or	v0,v1,v0
  4ab59c:	afc20014 	sw	v0,20(s8)
  4ab5a0:	8fc30018 	lw	v1,24(s8)
  4ab5a4:	8fc20014 	lw	v0,20(s8)
  4ab5a8:	00000000 	nop
  4ab5ac:	00621026 	xor	v0,v1,v0
  4ab5b0:	afc20018 	sw	v0,24(s8)
  4ab5b4:	8fc3001c 	lw	v1,28(s8)
  4ab5b8:	8fc20014 	lw	v0,20(s8)
  4ab5bc:	00000000 	nop
  4ab5c0:	00621026 	xor	v0,v1,v0
  4ab5c4:	afc2001c 	sw	v0,28(s8)
      LINTRANS(r1,r2,r3,r4,r0);
  4ab5c8:	8fc20018 	lw	v0,24(s8)
  4ab5cc:	00000000 	nop
  4ab5d0:	00021b40 	sll	v1,v0,0xd
  4ab5d4:	000214c2 	srl	v0,v0,0x13
  4ab5d8:	00621025 	or	v0,v1,v0
  4ab5dc:	afc20018 	sw	v0,24(s8)
  4ab5e0:	8fc20020 	lw	v0,32(s8)
  4ab5e4:	00000000 	nop
  4ab5e8:	000218c0 	sll	v1,v0,0x3
  4ab5ec:	00021742 	srl	v0,v0,0x1d
  4ab5f0:	00621025 	or	v0,v1,v0
  4ab5f4:	afc20020 	sw	v0,32(s8)
  4ab5f8:	8fc30024 	lw	v1,36(s8)
  4ab5fc:	8fc20020 	lw	v0,32(s8)
  4ab600:	00000000 	nop
  4ab604:	00621026 	xor	v0,v1,v0
  4ab608:	afc20024 	sw	v0,36(s8)
  4ab60c:	8fc20018 	lw	v0,24(s8)
  4ab610:	00000000 	nop
  4ab614:	000210c0 	sll	v0,v0,0x3
  4ab618:	afc20014 	sw	v0,20(s8)
  4ab61c:	8fc3001c 	lw	v1,28(s8)
  4ab620:	8fc20018 	lw	v0,24(s8)
  4ab624:	00000000 	nop
  4ab628:	00621026 	xor	v0,v1,v0
  4ab62c:	afc2001c 	sw	v0,28(s8)
  4ab630:	8fc30024 	lw	v1,36(s8)
  4ab634:	8fc20014 	lw	v0,20(s8)
  4ab638:	00000000 	nop
  4ab63c:	00621026 	xor	v0,v1,v0
  4ab640:	afc20024 	sw	v0,36(s8)
  4ab644:	8fc3001c 	lw	v1,28(s8)
  4ab648:	8fc20020 	lw	v0,32(s8)
  4ab64c:	00000000 	nop
  4ab650:	00621026 	xor	v0,v1,v0
  4ab654:	afc2001c 	sw	v0,28(s8)
  4ab658:	8fc20024 	lw	v0,36(s8)
  4ab65c:	00000000 	nop
  4ab660:	000219c0 	sll	v1,v0,0x7
  4ab664:	00021642 	srl	v0,v0,0x19
  4ab668:	00621025 	or	v0,v1,v0
  4ab66c:	afc20024 	sw	v0,36(s8)
  4ab670:	8fc2001c 	lw	v0,28(s8)
  4ab674:	00000000 	nop
  4ab678:	00021840 	sll	v1,v0,0x1
  4ab67c:	000217c2 	srl	v0,v0,0x1f
  4ab680:	00621025 	or	v0,v1,v0
  4ab684:	afc2001c 	sw	v0,28(s8)
  4ab688:	8fc30020 	lw	v1,32(s8)
  4ab68c:	8fc20024 	lw	v0,36(s8)
  4ab690:	00000000 	nop
  4ab694:	00621026 	xor	v0,v1,v0
  4ab698:	afc20020 	sw	v0,32(s8)
  4ab69c:	8fc2001c 	lw	v0,28(s8)
  4ab6a0:	00000000 	nop
  4ab6a4:	000211c0 	sll	v0,v0,0x7
  4ab6a8:	afc20014 	sw	v0,20(s8)
  4ab6ac:	8fc30018 	lw	v1,24(s8)
  4ab6b0:	8fc2001c 	lw	v0,28(s8)
  4ab6b4:	00000000 	nop
  4ab6b8:	00621026 	xor	v0,v1,v0
  4ab6bc:	afc20018 	sw	v0,24(s8)
  4ab6c0:	8fc30020 	lw	v1,32(s8)
  4ab6c4:	8fc20014 	lw	v0,20(s8)
  4ab6c8:	00000000 	nop
  4ab6cc:	00621026 	xor	v0,v1,v0
  4ab6d0:	afc20020 	sw	v0,32(s8)
  4ab6d4:	8fc30018 	lw	v1,24(s8)
  4ab6d8:	8fc20024 	lw	v0,36(s8)
  4ab6dc:	00000000 	nop
  4ab6e0:	00621026 	xor	v0,v1,v0
  4ab6e4:	afc20018 	sw	v0,24(s8)
  4ab6e8:	8fc20020 	lw	v0,32(s8)
  4ab6ec:	00000000 	nop
  4ab6f0:	00021d80 	sll	v1,v0,0x16
  4ab6f4:	00021282 	srl	v0,v0,0xa
  4ab6f8:	00621025 	or	v0,v1,v0
  4ab6fc:	afc20020 	sw	v0,32(s8)
  4ab700:	8fc20018 	lw	v0,24(s8)
  4ab704:	00000000 	nop
  4ab708:	00021940 	sll	v1,v0,0x5
  4ab70c:	000216c2 	srl	v0,v0,0x1b
  4ab710:	00621025 	or	v0,v1,v0
  4ab714:	afc20018 	sw	v0,24(s8)

      /* round 26  */
      KEYMIX(r1,r2,r3,r4,r0,100);
  4ab718:	8fc20008 	lw	v0,8(s8)
  4ab71c:	00000000 	nop
  4ab720:	244201b0 	addiu	v0,v0,432
  4ab724:	8c430000 	lw	v1,0(v0)
  4ab728:	8fc20018 	lw	v0,24(s8)
  4ab72c:	00000000 	nop
  4ab730:	00431026 	xor	v0,v0,v1
  4ab734:	afc20018 	sw	v0,24(s8)
  4ab738:	8fc20008 	lw	v0,8(s8)
  4ab73c:	00000000 	nop
  4ab740:	244201b4 	addiu	v0,v0,436
  4ab744:	8c430000 	lw	v1,0(v0)
  4ab748:	8fc2001c 	lw	v0,28(s8)
  4ab74c:	00000000 	nop
  4ab750:	00431026 	xor	v0,v0,v1
  4ab754:	afc2001c 	sw	v0,28(s8)
  4ab758:	8fc20008 	lw	v0,8(s8)
  4ab75c:	00000000 	nop
  4ab760:	244201b8 	addiu	v0,v0,440
  4ab764:	8c430000 	lw	v1,0(v0)
  4ab768:	8fc20020 	lw	v0,32(s8)
  4ab76c:	00000000 	nop
  4ab770:	00431026 	xor	v0,v0,v1
  4ab774:	afc20020 	sw	v0,32(s8)
  4ab778:	8fc20008 	lw	v0,8(s8)
  4ab77c:	00000000 	nop
  4ab780:	244201bc 	addiu	v0,v0,444
  4ab784:	8c430000 	lw	v1,0(v0)
  4ab788:	8fc20024 	lw	v0,36(s8)
  4ab78c:	00000000 	nop
  4ab790:	00431026 	xor	v0,v0,v1
  4ab794:	afc20024 	sw	v0,36(s8)
      S1(r1,r2,r3,r4,r0);
  4ab798:	8fc2001c 	lw	v0,28(s8)
  4ab79c:	00000000 	nop
  4ab7a0:	00021027 	nor	v0,zero,v0
  4ab7a4:	afc2001c 	sw	v0,28(s8)
  4ab7a8:	8fc20018 	lw	v0,24(s8)
  4ab7ac:	00000000 	nop
  4ab7b0:	afc20014 	sw	v0,20(s8)
  4ab7b4:	8fc30018 	lw	v1,24(s8)
  4ab7b8:	8fc2001c 	lw	v0,28(s8)
  4ab7bc:	00000000 	nop
  4ab7c0:	00621026 	xor	v0,v1,v0
  4ab7c4:	afc20018 	sw	v0,24(s8)
  4ab7c8:	8fc30014 	lw	v1,20(s8)
  4ab7cc:	8fc2001c 	lw	v0,28(s8)
  4ab7d0:	00000000 	nop
  4ab7d4:	00621025 	or	v0,v1,v0
  4ab7d8:	afc20014 	sw	v0,20(s8)
  4ab7dc:	8fc30014 	lw	v1,20(s8)
  4ab7e0:	8fc20024 	lw	v0,36(s8)
  4ab7e4:	00000000 	nop
  4ab7e8:	00621026 	xor	v0,v1,v0
  4ab7ec:	afc20014 	sw	v0,20(s8)
  4ab7f0:	8fc30024 	lw	v1,36(s8)
  4ab7f4:	8fc20018 	lw	v0,24(s8)
  4ab7f8:	00000000 	nop
  4ab7fc:	00621024 	and	v0,v1,v0
  4ab800:	afc20024 	sw	v0,36(s8)
  4ab804:	8fc30020 	lw	v1,32(s8)
  4ab808:	8fc20014 	lw	v0,20(s8)
  4ab80c:	00000000 	nop
  4ab810:	00621026 	xor	v0,v1,v0
  4ab814:	afc20020 	sw	v0,32(s8)
  4ab818:	8fc30024 	lw	v1,36(s8)
  4ab81c:	8fc2001c 	lw	v0,28(s8)
  4ab820:	00000000 	nop
  4ab824:	00621026 	xor	v0,v1,v0
  4ab828:	afc20024 	sw	v0,36(s8)
  4ab82c:	8fc30024 	lw	v1,36(s8)
  4ab830:	8fc20020 	lw	v0,32(s8)
  4ab834:	00000000 	nop
  4ab838:	00621025 	or	v0,v1,v0
  4ab83c:	afc20024 	sw	v0,36(s8)
  4ab840:	8fc30018 	lw	v1,24(s8)
  4ab844:	8fc20014 	lw	v0,20(s8)
  4ab848:	00000000 	nop
  4ab84c:	00621026 	xor	v0,v1,v0
  4ab850:	afc20018 	sw	v0,24(s8)
  4ab854:	8fc30024 	lw	v1,36(s8)
  4ab858:	8fc20018 	lw	v0,24(s8)
  4ab85c:	00000000 	nop
  4ab860:	00621026 	xor	v0,v1,v0
  4ab864:	afc20024 	sw	v0,36(s8)
  4ab868:	8fc3001c 	lw	v1,28(s8)
  4ab86c:	8fc20020 	lw	v0,32(s8)
  4ab870:	00000000 	nop
  4ab874:	00621024 	and	v0,v1,v0
  4ab878:	afc2001c 	sw	v0,28(s8)
  4ab87c:	8fc30018 	lw	v1,24(s8)
  4ab880:	8fc2001c 	lw	v0,28(s8)
  4ab884:	00000000 	nop
  4ab888:	00621025 	or	v0,v1,v0
  4ab88c:	afc20018 	sw	v0,24(s8)
  4ab890:	8fc3001c 	lw	v1,28(s8)
  4ab894:	8fc20014 	lw	v0,20(s8)
  4ab898:	00000000 	nop
  4ab89c:	00621026 	xor	v0,v1,v0
  4ab8a0:	afc2001c 	sw	v0,28(s8)
  4ab8a4:	8fc30018 	lw	v1,24(s8)
  4ab8a8:	8fc20020 	lw	v0,32(s8)
  4ab8ac:	00000000 	nop
  4ab8b0:	00621026 	xor	v0,v1,v0
  4ab8b4:	afc20018 	sw	v0,24(s8)
  4ab8b8:	8fc30014 	lw	v1,20(s8)
  4ab8bc:	8fc20024 	lw	v0,36(s8)
  4ab8c0:	00000000 	nop
  4ab8c4:	00621025 	or	v0,v1,v0
  4ab8c8:	afc20014 	sw	v0,20(s8)
  4ab8cc:	8fc30018 	lw	v1,24(s8)
  4ab8d0:	8fc20014 	lw	v0,20(s8)
  4ab8d4:	00000000 	nop
  4ab8d8:	00621026 	xor	v0,v1,v0
  4ab8dc:	afc20018 	sw	v0,24(s8)
  4ab8e0:	8fc20014 	lw	v0,20(s8)
  4ab8e4:	00000000 	nop
  4ab8e8:	00021027 	nor	v0,zero,v0
  4ab8ec:	afc20014 	sw	v0,20(s8)
  4ab8f0:	8fc3001c 	lw	v1,28(s8)
  4ab8f4:	8fc20024 	lw	v0,36(s8)
  4ab8f8:	00000000 	nop
  4ab8fc:	00621026 	xor	v0,v1,v0
  4ab900:	afc2001c 	sw	v0,28(s8)
  4ab904:	8fc30014 	lw	v1,20(s8)
  4ab908:	8fc20020 	lw	v0,32(s8)
  4ab90c:	00000000 	nop
  4ab910:	00621024 	and	v0,v1,v0
  4ab914:	afc20014 	sw	v0,20(s8)
  4ab918:	8fc2001c 	lw	v0,28(s8)
  4ab91c:	00000000 	nop
  4ab920:	00021027 	nor	v0,zero,v0
  4ab924:	afc2001c 	sw	v0,28(s8)
  4ab928:	8fc30014 	lw	v1,20(s8)
  4ab92c:	8fc20018 	lw	v0,24(s8)
  4ab930:	00000000 	nop
  4ab934:	00621026 	xor	v0,v1,v0
  4ab938:	afc20014 	sw	v0,20(s8)
  4ab93c:	8fc3001c 	lw	v1,28(s8)
  4ab940:	8fc20014 	lw	v0,20(s8)
  4ab944:	00000000 	nop
  4ab948:	00621026 	xor	v0,v1,v0
  4ab94c:	afc2001c 	sw	v0,28(s8)
      LINTRANS(r4,r2,r3,r1,r0);
  4ab950:	8fc20024 	lw	v0,36(s8)
  4ab954:	00000000 	nop
  4ab958:	00021b40 	sll	v1,v0,0xd
  4ab95c:	000214c2 	srl	v0,v0,0x13
  4ab960:	00621025 	or	v0,v1,v0
  4ab964:	afc20024 	sw	v0,36(s8)
  4ab968:	8fc20020 	lw	v0,32(s8)
  4ab96c:	00000000 	nop
  4ab970:	000218c0 	sll	v1,v0,0x3
  4ab974:	00021742 	srl	v0,v0,0x1d
  4ab978:	00621025 	or	v0,v1,v0
  4ab97c:	afc20020 	sw	v0,32(s8)
  4ab980:	8fc30018 	lw	v1,24(s8)
  4ab984:	8fc20020 	lw	v0,32(s8)
  4ab988:	00000000 	nop
  4ab98c:	00621026 	xor	v0,v1,v0
  4ab990:	afc20018 	sw	v0,24(s8)
  4ab994:	8fc20024 	lw	v0,36(s8)
  4ab998:	00000000 	nop
  4ab99c:	000210c0 	sll	v0,v0,0x3
  4ab9a0:	afc20014 	sw	v0,20(s8)
  4ab9a4:	8fc3001c 	lw	v1,28(s8)
  4ab9a8:	8fc20024 	lw	v0,36(s8)
  4ab9ac:	00000000 	nop
  4ab9b0:	00621026 	xor	v0,v1,v0
  4ab9b4:	afc2001c 	sw	v0,28(s8)
  4ab9b8:	8fc30018 	lw	v1,24(s8)
  4ab9bc:	8fc20014 	lw	v0,20(s8)
  4ab9c0:	00000000 	nop
  4ab9c4:	00621026 	xor	v0,v1,v0
  4ab9c8:	afc20018 	sw	v0,24(s8)
  4ab9cc:	8fc3001c 	lw	v1,28(s8)
  4ab9d0:	8fc20020 	lw	v0,32(s8)
  4ab9d4:	00000000 	nop
  4ab9d8:	00621026 	xor	v0,v1,v0
  4ab9dc:	afc2001c 	sw	v0,28(s8)
  4ab9e0:	8fc20018 	lw	v0,24(s8)
  4ab9e4:	00000000 	nop
  4ab9e8:	000219c0 	sll	v1,v0,0x7
  4ab9ec:	00021642 	srl	v0,v0,0x19
  4ab9f0:	00621025 	or	v0,v1,v0
  4ab9f4:	afc20018 	sw	v0,24(s8)
  4ab9f8:	8fc2001c 	lw	v0,28(s8)
  4ab9fc:	00000000 	nop
  4aba00:	00021840 	sll	v1,v0,0x1
  4aba04:	000217c2 	srl	v0,v0,0x1f
  4aba08:	00621025 	or	v0,v1,v0
  4aba0c:	afc2001c 	sw	v0,28(s8)
  4aba10:	8fc30020 	lw	v1,32(s8)
  4aba14:	8fc20018 	lw	v0,24(s8)
  4aba18:	00000000 	nop
  4aba1c:	00621026 	xor	v0,v1,v0
  4aba20:	afc20020 	sw	v0,32(s8)
  4aba24:	8fc2001c 	lw	v0,28(s8)
  4aba28:	00000000 	nop
  4aba2c:	000211c0 	sll	v0,v0,0x7
  4aba30:	afc20014 	sw	v0,20(s8)
  4aba34:	8fc30024 	lw	v1,36(s8)
  4aba38:	8fc2001c 	lw	v0,28(s8)
  4aba3c:	00000000 	nop
  4aba40:	00621026 	xor	v0,v1,v0
  4aba44:	afc20024 	sw	v0,36(s8)
  4aba48:	8fc30020 	lw	v1,32(s8)
  4aba4c:	8fc20014 	lw	v0,20(s8)
  4aba50:	00000000 	nop
  4aba54:	00621026 	xor	v0,v1,v0
  4aba58:	afc20020 	sw	v0,32(s8)
  4aba5c:	8fc30024 	lw	v1,36(s8)
  4aba60:	8fc20018 	lw	v0,24(s8)
  4aba64:	00000000 	nop
  4aba68:	00621026 	xor	v0,v1,v0
  4aba6c:	afc20024 	sw	v0,36(s8)
  4aba70:	8fc20020 	lw	v0,32(s8)
  4aba74:	00000000 	nop
  4aba78:	00021d80 	sll	v1,v0,0x16
  4aba7c:	00021282 	srl	v0,v0,0xa
  4aba80:	00621025 	or	v0,v1,v0
  4aba84:	afc20020 	sw	v0,32(s8)
  4aba88:	8fc20024 	lw	v0,36(s8)
  4aba8c:	00000000 	nop
  4aba90:	00021940 	sll	v1,v0,0x5
  4aba94:	000216c2 	srl	v0,v0,0x1b
  4aba98:	00621025 	or	v0,v1,v0
  4aba9c:	afc20024 	sw	v0,36(s8)

      /* round 27  */
      KEYMIX(r4,r2,r3,r1,r0,104);
  4abaa0:	8fc20008 	lw	v0,8(s8)
  4abaa4:	00000000 	nop
  4abaa8:	244201c0 	addiu	v0,v0,448
  4abaac:	8c430000 	lw	v1,0(v0)
  4abab0:	8fc20024 	lw	v0,36(s8)
  4abab4:	00000000 	nop
  4abab8:	00431026 	xor	v0,v0,v1
  4ababc:	afc20024 	sw	v0,36(s8)
  4abac0:	8fc20008 	lw	v0,8(s8)
  4abac4:	00000000 	nop
  4abac8:	244201c4 	addiu	v0,v0,452
  4abacc:	8c430000 	lw	v1,0(v0)
  4abad0:	8fc2001c 	lw	v0,28(s8)
  4abad4:	00000000 	nop
  4abad8:	00431026 	xor	v0,v0,v1
  4abadc:	afc2001c 	sw	v0,28(s8)
  4abae0:	8fc20008 	lw	v0,8(s8)
  4abae4:	00000000 	nop
  4abae8:	244201c8 	addiu	v0,v0,456
  4abaec:	8c430000 	lw	v1,0(v0)
  4abaf0:	8fc20020 	lw	v0,32(s8)
  4abaf4:	00000000 	nop
  4abaf8:	00431026 	xor	v0,v0,v1
  4abafc:	afc20020 	sw	v0,32(s8)
  4abb00:	8fc20008 	lw	v0,8(s8)
  4abb04:	00000000 	nop
  4abb08:	244201cc 	addiu	v0,v0,460
  4abb0c:	8c430000 	lw	v1,0(v0)
  4abb10:	8fc20018 	lw	v0,24(s8)
  4abb14:	00000000 	nop
  4abb18:	00431026 	xor	v0,v0,v1
  4abb1c:	afc20018 	sw	v0,24(s8)
      S2(r4,r2,r3,r1,r0);
  4abb20:	8fc20024 	lw	v0,36(s8)
  4abb24:	00000000 	nop
  4abb28:	afc20014 	sw	v0,20(s8)
  4abb2c:	8fc30024 	lw	v1,36(s8)
  4abb30:	8fc20020 	lw	v0,32(s8)
  4abb34:	00000000 	nop
  4abb38:	00621024 	and	v0,v1,v0
  4abb3c:	afc20024 	sw	v0,36(s8)
  4abb40:	8fc30024 	lw	v1,36(s8)
  4abb44:	8fc20018 	lw	v0,24(s8)
  4abb48:	00000000 	nop
  4abb4c:	00621026 	xor	v0,v1,v0
  4abb50:	afc20024 	sw	v0,36(s8)
  4abb54:	8fc30020 	lw	v1,32(s8)
  4abb58:	8fc2001c 	lw	v0,28(s8)
  4abb5c:	00000000 	nop
  4abb60:	00621026 	xor	v0,v1,v0
  4abb64:	afc20020 	sw	v0,32(s8)
  4abb68:	8fc30020 	lw	v1,32(s8)
  4abb6c:	8fc20024 	lw	v0,36(s8)
  4abb70:	00000000 	nop
  4abb74:	00621026 	xor	v0,v1,v0
  4abb78:	afc20020 	sw	v0,32(s8)
  4abb7c:	8fc30018 	lw	v1,24(s8)
  4abb80:	8fc20014 	lw	v0,20(s8)
  4abb84:	00000000 	nop
  4abb88:	00621025 	or	v0,v1,v0
  4abb8c:	afc20018 	sw	v0,24(s8)
  4abb90:	8fc30018 	lw	v1,24(s8)
  4abb94:	8fc2001c 	lw	v0,28(s8)
  4abb98:	00000000 	nop
  4abb9c:	00621026 	xor	v0,v1,v0
  4abba0:	afc20018 	sw	v0,24(s8)
  4abba4:	8fc30014 	lw	v1,20(s8)
  4abba8:	8fc20020 	lw	v0,32(s8)
  4abbac:	00000000 	nop
  4abbb0:	00621026 	xor	v0,v1,v0
  4abbb4:	afc20014 	sw	v0,20(s8)
  4abbb8:	8fc20018 	lw	v0,24(s8)
  4abbbc:	00000000 	nop
  4abbc0:	afc2001c 	sw	v0,28(s8)
  4abbc4:	8fc30018 	lw	v1,24(s8)
  4abbc8:	8fc20014 	lw	v0,20(s8)
  4abbcc:	00000000 	nop
  4abbd0:	00621025 	or	v0,v1,v0
  4abbd4:	afc20018 	sw	v0,24(s8)
  4abbd8:	8fc30018 	lw	v1,24(s8)
  4abbdc:	8fc20024 	lw	v0,36(s8)
  4abbe0:	00000000 	nop
  4abbe4:	00621026 	xor	v0,v1,v0
  4abbe8:	afc20018 	sw	v0,24(s8)
  4abbec:	8fc30024 	lw	v1,36(s8)
  4abbf0:	8fc2001c 	lw	v0,28(s8)
  4abbf4:	00000000 	nop
  4abbf8:	00621024 	and	v0,v1,v0
  4abbfc:	afc20024 	sw	v0,36(s8)
  4abc00:	8fc30014 	lw	v1,20(s8)
  4abc04:	8fc20024 	lw	v0,36(s8)
  4abc08:	00000000 	nop
  4abc0c:	00621026 	xor	v0,v1,v0
  4abc10:	afc20014 	sw	v0,20(s8)
  4abc14:	8fc3001c 	lw	v1,28(s8)
  4abc18:	8fc20018 	lw	v0,24(s8)
  4abc1c:	00000000 	nop
  4abc20:	00621026 	xor	v0,v1,v0
  4abc24:	afc2001c 	sw	v0,28(s8)
  4abc28:	8fc3001c 	lw	v1,28(s8)
  4abc2c:	8fc20014 	lw	v0,20(s8)
  4abc30:	00000000 	nop
  4abc34:	00621026 	xor	v0,v1,v0
  4abc38:	afc2001c 	sw	v0,28(s8)
  4abc3c:	8fc20014 	lw	v0,20(s8)
  4abc40:	00000000 	nop
  4abc44:	00021027 	nor	v0,zero,v0
  4abc48:	afc20014 	sw	v0,20(s8)
      LINTRANS(r3,r1,r2,r0,r4);
  4abc4c:	8fc20020 	lw	v0,32(s8)
  4abc50:	00000000 	nop
  4abc54:	00021b40 	sll	v1,v0,0xd
  4abc58:	000214c2 	srl	v0,v0,0x13
  4abc5c:	00621025 	or	v0,v1,v0
  4abc60:	afc20020 	sw	v0,32(s8)
  4abc64:	8fc2001c 	lw	v0,28(s8)
  4abc68:	00000000 	nop
  4abc6c:	000218c0 	sll	v1,v0,0x3
  4abc70:	00021742 	srl	v0,v0,0x1d
  4abc74:	00621025 	or	v0,v1,v0
  4abc78:	afc2001c 	sw	v0,28(s8)
  4abc7c:	8fc30014 	lw	v1,20(s8)
  4abc80:	8fc2001c 	lw	v0,28(s8)
  4abc84:	00000000 	nop
  4abc88:	00621026 	xor	v0,v1,v0
  4abc8c:	afc20014 	sw	v0,20(s8)
  4abc90:	8fc20020 	lw	v0,32(s8)
  4abc94:	00000000 	nop
  4abc98:	000210c0 	sll	v0,v0,0x3
  4abc9c:	afc20024 	sw	v0,36(s8)
  4abca0:	8fc30018 	lw	v1,24(s8)
  4abca4:	8fc20020 	lw	v0,32(s8)
  4abca8:	00000000 	nop
  4abcac:	00621026 	xor	v0,v1,v0
  4abcb0:	afc20018 	sw	v0,24(s8)
  4abcb4:	8fc30014 	lw	v1,20(s8)
  4abcb8:	8fc20024 	lw	v0,36(s8)
  4abcbc:	00000000 	nop
  4abcc0:	00621026 	xor	v0,v1,v0
  4abcc4:	afc20014 	sw	v0,20(s8)
  4abcc8:	8fc30018 	lw	v1,24(s8)
  4abccc:	8fc2001c 	lw	v0,28(s8)
  4abcd0:	00000000 	nop
  4abcd4:	00621026 	xor	v0,v1,v0
  4abcd8:	afc20018 	sw	v0,24(s8)
  4abcdc:	8fc20014 	lw	v0,20(s8)
  4abce0:	00000000 	nop
  4abce4:	000219c0 	sll	v1,v0,0x7
  4abce8:	00021642 	srl	v0,v0,0x19
  4abcec:	00621025 	or	v0,v1,v0
  4abcf0:	afc20014 	sw	v0,20(s8)
  4abcf4:	8fc20018 	lw	v0,24(s8)
  4abcf8:	00000000 	nop
  4abcfc:	00021840 	sll	v1,v0,0x1
  4abd00:	000217c2 	srl	v0,v0,0x1f
  4abd04:	00621025 	or	v0,v1,v0
  4abd08:	afc20018 	sw	v0,24(s8)
  4abd0c:	8fc3001c 	lw	v1,28(s8)
  4abd10:	8fc20014 	lw	v0,20(s8)
  4abd14:	00000000 	nop
  4abd18:	00621026 	xor	v0,v1,v0
  4abd1c:	afc2001c 	sw	v0,28(s8)
  4abd20:	8fc20018 	lw	v0,24(s8)
  4abd24:	00000000 	nop
  4abd28:	000211c0 	sll	v0,v0,0x7
  4abd2c:	afc20024 	sw	v0,36(s8)
  4abd30:	8fc30020 	lw	v1,32(s8)
  4abd34:	8fc20018 	lw	v0,24(s8)
  4abd38:	00000000 	nop
  4abd3c:	00621026 	xor	v0,v1,v0
  4abd40:	afc20020 	sw	v0,32(s8)
  4abd44:	8fc3001c 	lw	v1,28(s8)
  4abd48:	8fc20024 	lw	v0,36(s8)
  4abd4c:	00000000 	nop
  4abd50:	00621026 	xor	v0,v1,v0
  4abd54:	afc2001c 	sw	v0,28(s8)
  4abd58:	8fc30020 	lw	v1,32(s8)
  4abd5c:	8fc20014 	lw	v0,20(s8)
  4abd60:	00000000 	nop
  4abd64:	00621026 	xor	v0,v1,v0
  4abd68:	afc20020 	sw	v0,32(s8)
  4abd6c:	8fc2001c 	lw	v0,28(s8)
  4abd70:	00000000 	nop
  4abd74:	00021d80 	sll	v1,v0,0x16
  4abd78:	00021282 	srl	v0,v0,0xa
  4abd7c:	00621025 	or	v0,v1,v0
  4abd80:	afc2001c 	sw	v0,28(s8)
  4abd84:	8fc20020 	lw	v0,32(s8)
  4abd88:	00000000 	nop
  4abd8c:	00021940 	sll	v1,v0,0x5
  4abd90:	000216c2 	srl	v0,v0,0x1b
  4abd94:	00621025 	or	v0,v1,v0
  4abd98:	afc20020 	sw	v0,32(s8)

      /* round 28  */
      KEYMIX(r3,r1,r2,r0,r4,108);
  4abd9c:	8fc20008 	lw	v0,8(s8)
  4abda0:	00000000 	nop
  4abda4:	244201d0 	addiu	v0,v0,464
  4abda8:	8c430000 	lw	v1,0(v0)
  4abdac:	8fc20020 	lw	v0,32(s8)
  4abdb0:	00000000 	nop
  4abdb4:	00431026 	xor	v0,v0,v1
  4abdb8:	afc20020 	sw	v0,32(s8)
  4abdbc:	8fc20008 	lw	v0,8(s8)
  4abdc0:	00000000 	nop
  4abdc4:	244201d4 	addiu	v0,v0,468
  4abdc8:	8c430000 	lw	v1,0(v0)
  4abdcc:	8fc20018 	lw	v0,24(s8)
  4abdd0:	00000000 	nop
  4abdd4:	00431026 	xor	v0,v0,v1
  4abdd8:	afc20018 	sw	v0,24(s8)
  4abddc:	8fc20008 	lw	v0,8(s8)
  4abde0:	00000000 	nop
  4abde4:	244201d8 	addiu	v0,v0,472
  4abde8:	8c430000 	lw	v1,0(v0)
  4abdec:	8fc2001c 	lw	v0,28(s8)
  4abdf0:	00000000 	nop
  4abdf4:	00431026 	xor	v0,v0,v1
  4abdf8:	afc2001c 	sw	v0,28(s8)
  4abdfc:	8fc20008 	lw	v0,8(s8)
  4abe00:	00000000 	nop
  4abe04:	244201dc 	addiu	v0,v0,476
  4abe08:	8c430000 	lw	v1,0(v0)
  4abe0c:	8fc20014 	lw	v0,20(s8)
  4abe10:	00000000 	nop
  4abe14:	00431026 	xor	v0,v0,v1
  4abe18:	afc20014 	sw	v0,20(s8)
      S3(r3,r1,r2,r0,r4);
  4abe1c:	8fc20020 	lw	v0,32(s8)
  4abe20:	00000000 	nop
  4abe24:	afc20024 	sw	v0,36(s8)
  4abe28:	8fc30020 	lw	v1,32(s8)
  4abe2c:	8fc20014 	lw	v0,20(s8)
  4abe30:	00000000 	nop
  4abe34:	00621025 	or	v0,v1,v0
  4abe38:	afc20020 	sw	v0,32(s8)
  4abe3c:	8fc30014 	lw	v1,20(s8)
  4abe40:	8fc20018 	lw	v0,24(s8)
  4abe44:	00000000 	nop
  4abe48:	00621026 	xor	v0,v1,v0
  4abe4c:	afc20014 	sw	v0,20(s8)
  4abe50:	8fc30018 	lw	v1,24(s8)
  4abe54:	8fc20024 	lw	v0,36(s8)
  4abe58:	00000000 	nop
  4abe5c:	00621024 	and	v0,v1,v0
  4abe60:	afc20018 	sw	v0,24(s8)
  4abe64:	8fc30024 	lw	v1,36(s8)
  4abe68:	8fc2001c 	lw	v0,28(s8)
  4abe6c:	00000000 	nop
  4abe70:	00621026 	xor	v0,v1,v0
  4abe74:	afc20024 	sw	v0,36(s8)
  4abe78:	8fc3001c 	lw	v1,28(s8)
  4abe7c:	8fc20014 	lw	v0,20(s8)
  4abe80:	00000000 	nop
  4abe84:	00621026 	xor	v0,v1,v0
  4abe88:	afc2001c 	sw	v0,28(s8)
  4abe8c:	8fc30014 	lw	v1,20(s8)
  4abe90:	8fc20020 	lw	v0,32(s8)
  4abe94:	00000000 	nop
  4abe98:	00621024 	and	v0,v1,v0
  4abe9c:	afc20014 	sw	v0,20(s8)
  4abea0:	8fc30024 	lw	v1,36(s8)
  4abea4:	8fc20018 	lw	v0,24(s8)
  4abea8:	00000000 	nop
  4abeac:	00621025 	or	v0,v1,v0
  4abeb0:	afc20024 	sw	v0,36(s8)
  4abeb4:	8fc30014 	lw	v1,20(s8)
  4abeb8:	8fc20024 	lw	v0,36(s8)
  4abebc:	00000000 	nop
  4abec0:	00621026 	xor	v0,v1,v0
  4abec4:	afc20014 	sw	v0,20(s8)
  4abec8:	8fc30020 	lw	v1,32(s8)
  4abecc:	8fc20018 	lw	v0,24(s8)
  4abed0:	00000000 	nop
  4abed4:	00621026 	xor	v0,v1,v0
  4abed8:	afc20020 	sw	v0,32(s8)
  4abedc:	8fc30024 	lw	v1,36(s8)
  4abee0:	8fc20020 	lw	v0,32(s8)
  4abee4:	00000000 	nop
  4abee8:	00621024 	and	v0,v1,v0
  4abeec:	afc20024 	sw	v0,36(s8)
  4abef0:	8fc30018 	lw	v1,24(s8)
  4abef4:	8fc20014 	lw	v0,20(s8)
  4abef8:	00000000 	nop
  4abefc:	00621026 	xor	v0,v1,v0
  4abf00:	afc20018 	sw	v0,24(s8)
  4abf04:	8fc30024 	lw	v1,36(s8)
  4abf08:	8fc2001c 	lw	v0,28(s8)
  4abf0c:	00000000 	nop
  4abf10:	00621026 	xor	v0,v1,v0
  4abf14:	afc20024 	sw	v0,36(s8)
  4abf18:	8fc30018 	lw	v1,24(s8)
  4abf1c:	8fc20020 	lw	v0,32(s8)
  4abf20:	00000000 	nop
  4abf24:	00621025 	or	v0,v1,v0
  4abf28:	afc20018 	sw	v0,24(s8)
  4abf2c:	8fc30018 	lw	v1,24(s8)
  4abf30:	8fc2001c 	lw	v0,28(s8)
  4abf34:	00000000 	nop
  4abf38:	00621026 	xor	v0,v1,v0
  4abf3c:	afc20018 	sw	v0,24(s8)
  4abf40:	8fc30020 	lw	v1,32(s8)
  4abf44:	8fc20014 	lw	v0,20(s8)
  4abf48:	00000000 	nop
  4abf4c:	00621026 	xor	v0,v1,v0
  4abf50:	afc20020 	sw	v0,32(s8)
  4abf54:	8fc20018 	lw	v0,24(s8)
  4abf58:	00000000 	nop
  4abf5c:	afc2001c 	sw	v0,28(s8)
  4abf60:	8fc30018 	lw	v1,24(s8)
  4abf64:	8fc20014 	lw	v0,20(s8)
  4abf68:	00000000 	nop
  4abf6c:	00621025 	or	v0,v1,v0
  4abf70:	afc20018 	sw	v0,24(s8)
  4abf74:	8fc30018 	lw	v1,24(s8)
  4abf78:	8fc20020 	lw	v0,32(s8)
  4abf7c:	00000000 	nop
  4abf80:	00621026 	xor	v0,v1,v0
  4abf84:	afc20018 	sw	v0,24(s8)
      LINTRANS(r1,r2,r0,r4,r3);
  4abf88:	8fc20018 	lw	v0,24(s8)
  4abf8c:	00000000 	nop
  4abf90:	00021b40 	sll	v1,v0,0xd
  4abf94:	000214c2 	srl	v0,v0,0x13
  4abf98:	00621025 	or	v0,v1,v0
  4abf9c:	afc20018 	sw	v0,24(s8)
  4abfa0:	8fc20014 	lw	v0,20(s8)
  4abfa4:	00000000 	nop
  4abfa8:	000218c0 	sll	v1,v0,0x3
  4abfac:	00021742 	srl	v0,v0,0x1d
  4abfb0:	00621025 	or	v0,v1,v0
  4abfb4:	afc20014 	sw	v0,20(s8)
  4abfb8:	8fc30024 	lw	v1,36(s8)
  4abfbc:	8fc20014 	lw	v0,20(s8)
  4abfc0:	00000000 	nop
  4abfc4:	00621026 	xor	v0,v1,v0
  4abfc8:	afc20024 	sw	v0,36(s8)
  4abfcc:	8fc20018 	lw	v0,24(s8)
  4abfd0:	00000000 	nop
  4abfd4:	000210c0 	sll	v0,v0,0x3
  4abfd8:	afc20020 	sw	v0,32(s8)
  4abfdc:	8fc3001c 	lw	v1,28(s8)
  4abfe0:	8fc20018 	lw	v0,24(s8)
  4abfe4:	00000000 	nop
  4abfe8:	00621026 	xor	v0,v1,v0
  4abfec:	afc2001c 	sw	v0,28(s8)
  4abff0:	8fc30024 	lw	v1,36(s8)
  4abff4:	8fc20020 	lw	v0,32(s8)
  4abff8:	00000000 	nop
  4abffc:	00621026 	xor	v0,v1,v0
  4ac000:	afc20024 	sw	v0,36(s8)
  4ac004:	8fc3001c 	lw	v1,28(s8)
  4ac008:	8fc20014 	lw	v0,20(s8)
  4ac00c:	00000000 	nop
  4ac010:	00621026 	xor	v0,v1,v0
  4ac014:	afc2001c 	sw	v0,28(s8)
  4ac018:	8fc20024 	lw	v0,36(s8)
  4ac01c:	00000000 	nop
  4ac020:	000219c0 	sll	v1,v0,0x7
  4ac024:	00021642 	srl	v0,v0,0x19
  4ac028:	00621025 	or	v0,v1,v0
  4ac02c:	afc20024 	sw	v0,36(s8)
  4ac030:	8fc2001c 	lw	v0,28(s8)
  4ac034:	00000000 	nop
  4ac038:	00021840 	sll	v1,v0,0x1
  4ac03c:	000217c2 	srl	v0,v0,0x1f
  4ac040:	00621025 	or	v0,v1,v0
  4ac044:	afc2001c 	sw	v0,28(s8)
  4ac048:	8fc30014 	lw	v1,20(s8)
  4ac04c:	8fc20024 	lw	v0,36(s8)
  4ac050:	00000000 	nop
  4ac054:	00621026 	xor	v0,v1,v0
  4ac058:	afc20014 	sw	v0,20(s8)
  4ac05c:	8fc2001c 	lw	v0,28(s8)
  4ac060:	00000000 	nop
  4ac064:	000211c0 	sll	v0,v0,0x7
  4ac068:	afc20020 	sw	v0,32(s8)
  4ac06c:	8fc30018 	lw	v1,24(s8)
  4ac070:	8fc2001c 	lw	v0,28(s8)
  4ac074:	00000000 	nop
  4ac078:	00621026 	xor	v0,v1,v0
  4ac07c:	afc20018 	sw	v0,24(s8)
  4ac080:	8fc30014 	lw	v1,20(s8)
  4ac084:	8fc20020 	lw	v0,32(s8)
  4ac088:	00000000 	nop
  4ac08c:	00621026 	xor	v0,v1,v0
  4ac090:	afc20014 	sw	v0,20(s8)
  4ac094:	8fc30018 	lw	v1,24(s8)
  4ac098:	8fc20024 	lw	v0,36(s8)
  4ac09c:	00000000 	nop
  4ac0a0:	00621026 	xor	v0,v1,v0
  4ac0a4:	afc20018 	sw	v0,24(s8)
  4ac0a8:	8fc20014 	lw	v0,20(s8)
  4ac0ac:	00000000 	nop
  4ac0b0:	00021d80 	sll	v1,v0,0x16
  4ac0b4:	00021282 	srl	v0,v0,0xa
  4ac0b8:	00621025 	or	v0,v1,v0
  4ac0bc:	afc20014 	sw	v0,20(s8)
  4ac0c0:	8fc20018 	lw	v0,24(s8)
  4ac0c4:	00000000 	nop
  4ac0c8:	00021940 	sll	v1,v0,0x5
  4ac0cc:	000216c2 	srl	v0,v0,0x1b
  4ac0d0:	00621025 	or	v0,v1,v0
  4ac0d4:	afc20018 	sw	v0,24(s8)

      /* round 29  */
      KEYMIX(r1,r2,r0,r4,r3,112);
  4ac0d8:	8fc20008 	lw	v0,8(s8)
  4ac0dc:	00000000 	nop
  4ac0e0:	244201e0 	addiu	v0,v0,480
  4ac0e4:	8c430000 	lw	v1,0(v0)
  4ac0e8:	8fc20018 	lw	v0,24(s8)
  4ac0ec:	00000000 	nop
  4ac0f0:	00431026 	xor	v0,v0,v1
  4ac0f4:	afc20018 	sw	v0,24(s8)
  4ac0f8:	8fc20008 	lw	v0,8(s8)
  4ac0fc:	00000000 	nop
  4ac100:	244201e4 	addiu	v0,v0,484
  4ac104:	8c430000 	lw	v1,0(v0)
  4ac108:	8fc2001c 	lw	v0,28(s8)
  4ac10c:	00000000 	nop
  4ac110:	00431026 	xor	v0,v0,v1
  4ac114:	afc2001c 	sw	v0,28(s8)
  4ac118:	8fc20008 	lw	v0,8(s8)
  4ac11c:	00000000 	nop
  4ac120:	244201e8 	addiu	v0,v0,488
  4ac124:	8c430000 	lw	v1,0(v0)
  4ac128:	8fc20014 	lw	v0,20(s8)
  4ac12c:	00000000 	nop
  4ac130:	00431026 	xor	v0,v0,v1
  4ac134:	afc20014 	sw	v0,20(s8)
  4ac138:	8fc20008 	lw	v0,8(s8)
  4ac13c:	00000000 	nop
  4ac140:	244201ec 	addiu	v0,v0,492
  4ac144:	8c430000 	lw	v1,0(v0)
  4ac148:	8fc20024 	lw	v0,36(s8)
  4ac14c:	00000000 	nop
  4ac150:	00431026 	xor	v0,v0,v1
  4ac154:	afc20024 	sw	v0,36(s8)
      S4(r1,r2,r0,r4,r3) 
  4ac158:	8fc3001c 	lw	v1,28(s8)
  4ac15c:	8fc20024 	lw	v0,36(s8)
  4ac160:	00000000 	nop
  4ac164:	00621026 	xor	v0,v1,v0
  4ac168:	afc2001c 	sw	v0,28(s8)
  4ac16c:	8fc20024 	lw	v0,36(s8)
  4ac170:	00000000 	nop
  4ac174:	00021027 	nor	v0,zero,v0
  4ac178:	afc20024 	sw	v0,36(s8)
  4ac17c:	8fc30014 	lw	v1,20(s8)
  4ac180:	8fc20024 	lw	v0,36(s8)
  4ac184:	00000000 	nop
  4ac188:	00621026 	xor	v0,v1,v0
  4ac18c:	afc20014 	sw	v0,20(s8)
  4ac190:	8fc30024 	lw	v1,36(s8)
  4ac194:	8fc20018 	lw	v0,24(s8)
  4ac198:	00000000 	nop
  4ac19c:	00621026 	xor	v0,v1,v0
  4ac1a0:	afc20024 	sw	v0,36(s8)
  4ac1a4:	8fc2001c 	lw	v0,28(s8)
  4ac1a8:	00000000 	nop
  4ac1ac:	afc20020 	sw	v0,32(s8)
  4ac1b0:	8fc3001c 	lw	v1,28(s8)
  4ac1b4:	8fc20024 	lw	v0,36(s8)
  4ac1b8:	00000000 	nop
  4ac1bc:	00621024 	and	v0,v1,v0
  4ac1c0:	afc2001c 	sw	v0,28(s8)
  4ac1c4:	8fc3001c 	lw	v1,28(s8)
  4ac1c8:	8fc20014 	lw	v0,20(s8)
  4ac1cc:	00000000 	nop
  4ac1d0:	00621026 	xor	v0,v1,v0
  4ac1d4:	afc2001c 	sw	v0,28(s8)
  4ac1d8:	8fc30020 	lw	v1,32(s8)
  4ac1dc:	8fc20024 	lw	v0,36(s8)
  4ac1e0:	00000000 	nop
  4ac1e4:	00621026 	xor	v0,v1,v0
  4ac1e8:	afc20020 	sw	v0,32(s8)
  4ac1ec:	8fc30018 	lw	v1,24(s8)
  4ac1f0:	8fc20020 	lw	v0,32(s8)
  4ac1f4:	00000000 	nop
  4ac1f8:	00621026 	xor	v0,v1,v0
  4ac1fc:	afc20018 	sw	v0,24(s8)
  4ac200:	8fc30014 	lw	v1,20(s8)
  4ac204:	8fc20020 	lw	v0,32(s8)
  4ac208:	00000000 	nop
  4ac20c:	00621024 	and	v0,v1,v0
  4ac210:	afc20014 	sw	v0,20(s8)
  4ac214:	8fc30014 	lw	v1,20(s8)
  4ac218:	8fc20018 	lw	v0,24(s8)
  4ac21c:	00000000 	nop
  4ac220:	00621026 	xor	v0,v1,v0
  4ac224:	afc20014 	sw	v0,20(s8)
  4ac228:	8fc30018 	lw	v1,24(s8)
  4ac22c:	8fc2001c 	lw	v0,28(s8)
  4ac230:	00000000 	nop
  4ac234:	00621024 	and	v0,v1,v0
  4ac238:	afc20018 	sw	v0,24(s8)
  4ac23c:	8fc30024 	lw	v1,36(s8)
  4ac240:	8fc20018 	lw	v0,24(s8)
  4ac244:	00000000 	nop
  4ac248:	00621026 	xor	v0,v1,v0
  4ac24c:	afc20024 	sw	v0,36(s8)
  4ac250:	8fc30020 	lw	v1,32(s8)
  4ac254:	8fc2001c 	lw	v0,28(s8)
  4ac258:	00000000 	nop
  4ac25c:	00621025 	or	v0,v1,v0
  4ac260:	afc20020 	sw	v0,32(s8)
  4ac264:	8fc30020 	lw	v1,32(s8)
  4ac268:	8fc20018 	lw	v0,24(s8)
  4ac26c:	00000000 	nop
  4ac270:	00621026 	xor	v0,v1,v0
  4ac274:	afc20020 	sw	v0,32(s8)
  4ac278:	8fc30018 	lw	v1,24(s8)
  4ac27c:	8fc20024 	lw	v0,36(s8)
  4ac280:	00000000 	nop
  4ac284:	00621025 	or	v0,v1,v0
  4ac288:	afc20018 	sw	v0,24(s8)
  4ac28c:	8fc30018 	lw	v1,24(s8)
  4ac290:	8fc20014 	lw	v0,20(s8)
  4ac294:	00000000 	nop
  4ac298:	00621026 	xor	v0,v1,v0
  4ac29c:	afc20018 	sw	v0,24(s8)
  4ac2a0:	8fc30014 	lw	v1,20(s8)
  4ac2a4:	8fc20024 	lw	v0,36(s8)
  4ac2a8:	00000000 	nop
  4ac2ac:	00621024 	and	v0,v1,v0
  4ac2b0:	afc20014 	sw	v0,20(s8)
  4ac2b4:	8fc20018 	lw	v0,24(s8)
  4ac2b8:	00000000 	nop
  4ac2bc:	00021027 	nor	v0,zero,v0
  4ac2c0:	afc20018 	sw	v0,24(s8)
  4ac2c4:	8fc30020 	lw	v1,32(s8)
  4ac2c8:	8fc20014 	lw	v0,20(s8)
  4ac2cc:	00000000 	nop
  4ac2d0:	00621026 	xor	v0,v1,v0
  4ac2d4:	afc20020 	sw	v0,32(s8)
      LINTRANS(r2,r3,r1,r4,r0);
  4ac2d8:	8fc2001c 	lw	v0,28(s8)
  4ac2dc:	00000000 	nop
  4ac2e0:	00021b40 	sll	v1,v0,0xd
  4ac2e4:	000214c2 	srl	v0,v0,0x13
  4ac2e8:	00621025 	or	v0,v1,v0
  4ac2ec:	afc2001c 	sw	v0,28(s8)
  4ac2f0:	8fc20018 	lw	v0,24(s8)
  4ac2f4:	00000000 	nop
  4ac2f8:	000218c0 	sll	v1,v0,0x3
  4ac2fc:	00021742 	srl	v0,v0,0x1d
  4ac300:	00621025 	or	v0,v1,v0
  4ac304:	afc20018 	sw	v0,24(s8)
  4ac308:	8fc30024 	lw	v1,36(s8)
  4ac30c:	8fc20018 	lw	v0,24(s8)
  4ac310:	00000000 	nop
  4ac314:	00621026 	xor	v0,v1,v0
  4ac318:	afc20024 	sw	v0,36(s8)
  4ac31c:	8fc2001c 	lw	v0,28(s8)
  4ac320:	00000000 	nop
  4ac324:	000210c0 	sll	v0,v0,0x3
  4ac328:	afc20014 	sw	v0,20(s8)
  4ac32c:	8fc30020 	lw	v1,32(s8)
  4ac330:	8fc2001c 	lw	v0,28(s8)
  4ac334:	00000000 	nop
  4ac338:	00621026 	xor	v0,v1,v0
  4ac33c:	afc20020 	sw	v0,32(s8)
  4ac340:	8fc30024 	lw	v1,36(s8)
  4ac344:	8fc20014 	lw	v0,20(s8)
  4ac348:	00000000 	nop
  4ac34c:	00621026 	xor	v0,v1,v0
  4ac350:	afc20024 	sw	v0,36(s8)
  4ac354:	8fc30020 	lw	v1,32(s8)
  4ac358:	8fc20018 	lw	v0,24(s8)
  4ac35c:	00000000 	nop
  4ac360:	00621026 	xor	v0,v1,v0
  4ac364:	afc20020 	sw	v0,32(s8)
  4ac368:	8fc20024 	lw	v0,36(s8)
  4ac36c:	00000000 	nop
  4ac370:	000219c0 	sll	v1,v0,0x7
  4ac374:	00021642 	srl	v0,v0,0x19
  4ac378:	00621025 	or	v0,v1,v0
  4ac37c:	afc20024 	sw	v0,36(s8)
  4ac380:	8fc20020 	lw	v0,32(s8)
  4ac384:	00000000 	nop
  4ac388:	00021840 	sll	v1,v0,0x1
  4ac38c:	000217c2 	srl	v0,v0,0x1f
  4ac390:	00621025 	or	v0,v1,v0
  4ac394:	afc20020 	sw	v0,32(s8)
  4ac398:	8fc30018 	lw	v1,24(s8)
  4ac39c:	8fc20024 	lw	v0,36(s8)
  4ac3a0:	00000000 	nop
  4ac3a4:	00621026 	xor	v0,v1,v0
  4ac3a8:	afc20018 	sw	v0,24(s8)
  4ac3ac:	8fc20020 	lw	v0,32(s8)
  4ac3b0:	00000000 	nop
  4ac3b4:	000211c0 	sll	v0,v0,0x7
  4ac3b8:	afc20014 	sw	v0,20(s8)
  4ac3bc:	8fc3001c 	lw	v1,28(s8)
  4ac3c0:	8fc20020 	lw	v0,32(s8)
  4ac3c4:	00000000 	nop
  4ac3c8:	00621026 	xor	v0,v1,v0
  4ac3cc:	afc2001c 	sw	v0,28(s8)
  4ac3d0:	8fc30018 	lw	v1,24(s8)
  4ac3d4:	8fc20014 	lw	v0,20(s8)
  4ac3d8:	00000000 	nop
  4ac3dc:	00621026 	xor	v0,v1,v0
  4ac3e0:	afc20018 	sw	v0,24(s8)
  4ac3e4:	8fc3001c 	lw	v1,28(s8)
  4ac3e8:	8fc20024 	lw	v0,36(s8)
  4ac3ec:	00000000 	nop
  4ac3f0:	00621026 	xor	v0,v1,v0
  4ac3f4:	afc2001c 	sw	v0,28(s8)
  4ac3f8:	8fc20018 	lw	v0,24(s8)
  4ac3fc:	00000000 	nop
  4ac400:	00021d80 	sll	v1,v0,0x16
  4ac404:	00021282 	srl	v0,v0,0xa
  4ac408:	00621025 	or	v0,v1,v0
  4ac40c:	afc20018 	sw	v0,24(s8)
  4ac410:	8fc2001c 	lw	v0,28(s8)
  4ac414:	00000000 	nop
  4ac418:	00021940 	sll	v1,v0,0x5
  4ac41c:	000216c2 	srl	v0,v0,0x1b
  4ac420:	00621025 	or	v0,v1,v0
  4ac424:	afc2001c 	sw	v0,28(s8)

      /* round 30  */
      KEYMIX(r2,r3,r1,r4,r0,116);
  4ac428:	8fc20008 	lw	v0,8(s8)
  4ac42c:	00000000 	nop
  4ac430:	244201f0 	addiu	v0,v0,496
  4ac434:	8c430000 	lw	v1,0(v0)
  4ac438:	8fc2001c 	lw	v0,28(s8)
  4ac43c:	00000000 	nop
  4ac440:	00431026 	xor	v0,v0,v1
  4ac444:	afc2001c 	sw	v0,28(s8)
  4ac448:	8fc20008 	lw	v0,8(s8)
  4ac44c:	00000000 	nop
  4ac450:	244201f4 	addiu	v0,v0,500
  4ac454:	8c430000 	lw	v1,0(v0)
  4ac458:	8fc20020 	lw	v0,32(s8)
  4ac45c:	00000000 	nop
  4ac460:	00431026 	xor	v0,v0,v1
  4ac464:	afc20020 	sw	v0,32(s8)
  4ac468:	8fc20008 	lw	v0,8(s8)
  4ac46c:	00000000 	nop
  4ac470:	244201f8 	addiu	v0,v0,504
  4ac474:	8c430000 	lw	v1,0(v0)
  4ac478:	8fc20018 	lw	v0,24(s8)
  4ac47c:	00000000 	nop
  4ac480:	00431026 	xor	v0,v0,v1
  4ac484:	afc20018 	sw	v0,24(s8)
  4ac488:	8fc20008 	lw	v0,8(s8)
  4ac48c:	00000000 	nop
  4ac490:	244201fc 	addiu	v0,v0,508
  4ac494:	8c430000 	lw	v1,0(v0)
  4ac498:	8fc20024 	lw	v0,36(s8)
  4ac49c:	00000000 	nop
  4ac4a0:	00431026 	xor	v0,v0,v1
  4ac4a4:	afc20024 	sw	v0,36(s8)
      S5(r2,r3,r1,r4,r0);
  4ac4a8:	8fc3001c 	lw	v1,28(s8)
  4ac4ac:	8fc20020 	lw	v0,32(s8)
  4ac4b0:	00000000 	nop
  4ac4b4:	00621026 	xor	v0,v1,v0
  4ac4b8:	afc2001c 	sw	v0,28(s8)
  4ac4bc:	8fc30020 	lw	v1,32(s8)
  4ac4c0:	8fc20024 	lw	v0,36(s8)
  4ac4c4:	00000000 	nop
  4ac4c8:	00621026 	xor	v0,v1,v0
  4ac4cc:	afc20020 	sw	v0,32(s8)
  4ac4d0:	8fc20024 	lw	v0,36(s8)
  4ac4d4:	00000000 	nop
  4ac4d8:	00021027 	nor	v0,zero,v0
  4ac4dc:	afc20024 	sw	v0,36(s8)
  4ac4e0:	8fc20020 	lw	v0,32(s8)
  4ac4e4:	00000000 	nop
  4ac4e8:	afc20014 	sw	v0,20(s8)
  4ac4ec:	8fc30020 	lw	v1,32(s8)
  4ac4f0:	8fc2001c 	lw	v0,28(s8)
  4ac4f4:	00000000 	nop
  4ac4f8:	00621024 	and	v0,v1,v0
  4ac4fc:	afc20020 	sw	v0,32(s8)
  4ac500:	8fc30018 	lw	v1,24(s8)
  4ac504:	8fc20024 	lw	v0,36(s8)
  4ac508:	00000000 	nop
  4ac50c:	00621026 	xor	v0,v1,v0
  4ac510:	afc20018 	sw	v0,24(s8)
  4ac514:	8fc30020 	lw	v1,32(s8)
  4ac518:	8fc20018 	lw	v0,24(s8)
  4ac51c:	00000000 	nop
  4ac520:	00621026 	xor	v0,v1,v0
  4ac524:	afc20020 	sw	v0,32(s8)
  4ac528:	8fc30018 	lw	v1,24(s8)
  4ac52c:	8fc20014 	lw	v0,20(s8)
  4ac530:	00000000 	nop
  4ac534:	00621025 	or	v0,v1,v0
  4ac538:	afc20018 	sw	v0,24(s8)
  4ac53c:	8fc30014 	lw	v1,20(s8)
  4ac540:	8fc20024 	lw	v0,36(s8)
  4ac544:	00000000 	nop
  4ac548:	00621026 	xor	v0,v1,v0
  4ac54c:	afc20014 	sw	v0,20(s8)
  4ac550:	8fc30024 	lw	v1,36(s8)
  4ac554:	8fc20020 	lw	v0,32(s8)
  4ac558:	00000000 	nop
  4ac55c:	00621024 	and	v0,v1,v0
  4ac560:	afc20024 	sw	v0,36(s8)
  4ac564:	8fc30024 	lw	v1,36(s8)
  4ac568:	8fc2001c 	lw	v0,28(s8)
  4ac56c:	00000000 	nop
  4ac570:	00621026 	xor	v0,v1,v0
  4ac574:	afc20024 	sw	v0,36(s8)
  4ac578:	8fc30014 	lw	v1,20(s8)
  4ac57c:	8fc20020 	lw	v0,32(s8)
  4ac580:	00000000 	nop
  4ac584:	00621026 	xor	v0,v1,v0
  4ac588:	afc20014 	sw	v0,20(s8)
  4ac58c:	8fc30014 	lw	v1,20(s8)
  4ac590:	8fc20018 	lw	v0,24(s8)
  4ac594:	00000000 	nop
  4ac598:	00621026 	xor	v0,v1,v0
  4ac59c:	afc20014 	sw	v0,20(s8)
  4ac5a0:	8fc30018 	lw	v1,24(s8)
  4ac5a4:	8fc2001c 	lw	v0,28(s8)
  4ac5a8:	00000000 	nop
  4ac5ac:	00621026 	xor	v0,v1,v0
  4ac5b0:	afc20018 	sw	v0,24(s8)
  4ac5b4:	8fc3001c 	lw	v1,28(s8)
  4ac5b8:	8fc20024 	lw	v0,36(s8)
  4ac5bc:	00000000 	nop
  4ac5c0:	00621024 	and	v0,v1,v0
  4ac5c4:	afc2001c 	sw	v0,28(s8)
  4ac5c8:	8fc20018 	lw	v0,24(s8)
  4ac5cc:	00000000 	nop
  4ac5d0:	00021027 	nor	v0,zero,v0
  4ac5d4:	afc20018 	sw	v0,24(s8)
  4ac5d8:	8fc3001c 	lw	v1,28(s8)
  4ac5dc:	8fc20014 	lw	v0,20(s8)
  4ac5e0:	00000000 	nop
  4ac5e4:	00621026 	xor	v0,v1,v0
  4ac5e8:	afc2001c 	sw	v0,28(s8)
  4ac5ec:	8fc30014 	lw	v1,20(s8)
  4ac5f0:	8fc20024 	lw	v0,36(s8)
  4ac5f4:	00000000 	nop
  4ac5f8:	00621025 	or	v0,v1,v0
  4ac5fc:	afc20014 	sw	v0,20(s8)
  4ac600:	8fc30018 	lw	v1,24(s8)
  4ac604:	8fc20014 	lw	v0,20(s8)
  4ac608:	00000000 	nop
  4ac60c:	00621026 	xor	v0,v1,v0
  4ac610:	afc20018 	sw	v0,24(s8)
      LINTRANS(r3,r4,r2,r1,r0);
  4ac614:	8fc20020 	lw	v0,32(s8)
  4ac618:	00000000 	nop
  4ac61c:	00021b40 	sll	v1,v0,0xd
  4ac620:	000214c2 	srl	v0,v0,0x13
  4ac624:	00621025 	or	v0,v1,v0
  4ac628:	afc20020 	sw	v0,32(s8)
  4ac62c:	8fc2001c 	lw	v0,28(s8)
  4ac630:	00000000 	nop
  4ac634:	000218c0 	sll	v1,v0,0x3
  4ac638:	00021742 	srl	v0,v0,0x1d
  4ac63c:	00621025 	or	v0,v1,v0
  4ac640:	afc2001c 	sw	v0,28(s8)
  4ac644:	8fc30018 	lw	v1,24(s8)
  4ac648:	8fc2001c 	lw	v0,28(s8)
  4ac64c:	00000000 	nop
  4ac650:	00621026 	xor	v0,v1,v0
  4ac654:	afc20018 	sw	v0,24(s8)
  4ac658:	8fc20020 	lw	v0,32(s8)
  4ac65c:	00000000 	nop
  4ac660:	000210c0 	sll	v0,v0,0x3
  4ac664:	afc20014 	sw	v0,20(s8)
  4ac668:	8fc30024 	lw	v1,36(s8)
  4ac66c:	8fc20020 	lw	v0,32(s8)
  4ac670:	00000000 	nop
  4ac674:	00621026 	xor	v0,v1,v0
  4ac678:	afc20024 	sw	v0,36(s8)
  4ac67c:	8fc30018 	lw	v1,24(s8)
  4ac680:	8fc20014 	lw	v0,20(s8)
  4ac684:	00000000 	nop
  4ac688:	00621026 	xor	v0,v1,v0
  4ac68c:	afc20018 	sw	v0,24(s8)
  4ac690:	8fc30024 	lw	v1,36(s8)
  4ac694:	8fc2001c 	lw	v0,28(s8)
  4ac698:	00000000 	nop
  4ac69c:	00621026 	xor	v0,v1,v0
  4ac6a0:	afc20024 	sw	v0,36(s8)
  4ac6a4:	8fc20018 	lw	v0,24(s8)
  4ac6a8:	00000000 	nop
  4ac6ac:	000219c0 	sll	v1,v0,0x7
  4ac6b0:	00021642 	srl	v0,v0,0x19
  4ac6b4:	00621025 	or	v0,v1,v0
  4ac6b8:	afc20018 	sw	v0,24(s8)
  4ac6bc:	8fc20024 	lw	v0,36(s8)
  4ac6c0:	00000000 	nop
  4ac6c4:	00021840 	sll	v1,v0,0x1
  4ac6c8:	000217c2 	srl	v0,v0,0x1f
  4ac6cc:	00621025 	or	v0,v1,v0
  4ac6d0:	afc20024 	sw	v0,36(s8)
  4ac6d4:	8fc3001c 	lw	v1,28(s8)
  4ac6d8:	8fc20018 	lw	v0,24(s8)
  4ac6dc:	00000000 	nop
  4ac6e0:	00621026 	xor	v0,v1,v0
  4ac6e4:	afc2001c 	sw	v0,28(s8)
  4ac6e8:	8fc20024 	lw	v0,36(s8)
  4ac6ec:	00000000 	nop
  4ac6f0:	000211c0 	sll	v0,v0,0x7
  4ac6f4:	afc20014 	sw	v0,20(s8)
  4ac6f8:	8fc30020 	lw	v1,32(s8)
  4ac6fc:	8fc20024 	lw	v0,36(s8)
  4ac700:	00000000 	nop
  4ac704:	00621026 	xor	v0,v1,v0
  4ac708:	afc20020 	sw	v0,32(s8)
  4ac70c:	8fc3001c 	lw	v1,28(s8)
  4ac710:	8fc20014 	lw	v0,20(s8)
  4ac714:	00000000 	nop
  4ac718:	00621026 	xor	v0,v1,v0
  4ac71c:	afc2001c 	sw	v0,28(s8)
  4ac720:	8fc30020 	lw	v1,32(s8)
  4ac724:	8fc20018 	lw	v0,24(s8)
  4ac728:	00000000 	nop
  4ac72c:	00621026 	xor	v0,v1,v0
  4ac730:	afc20020 	sw	v0,32(s8)
  4ac734:	8fc2001c 	lw	v0,28(s8)
  4ac738:	00000000 	nop
  4ac73c:	00021d80 	sll	v1,v0,0x16
  4ac740:	00021282 	srl	v0,v0,0xa
  4ac744:	00621025 	or	v0,v1,v0
  4ac748:	afc2001c 	sw	v0,28(s8)
  4ac74c:	8fc20020 	lw	v0,32(s8)
  4ac750:	00000000 	nop
  4ac754:	00021940 	sll	v1,v0,0x5
  4ac758:	000216c2 	srl	v0,v0,0x1b
  4ac75c:	00621025 	or	v0,v1,v0
  4ac760:	afc20020 	sw	v0,32(s8)

      /* round 31  */
      KEYMIX(r3,r4,r2,r1,r0,120);
  4ac764:	8fc20008 	lw	v0,8(s8)
  4ac768:	00000000 	nop
  4ac76c:	24420200 	addiu	v0,v0,512
  4ac770:	8c430000 	lw	v1,0(v0)
  4ac774:	8fc20020 	lw	v0,32(s8)
  4ac778:	00000000 	nop
  4ac77c:	00431026 	xor	v0,v0,v1
  4ac780:	afc20020 	sw	v0,32(s8)
  4ac784:	8fc20008 	lw	v0,8(s8)
  4ac788:	00000000 	nop
  4ac78c:	24420204 	addiu	v0,v0,516
  4ac790:	8c430000 	lw	v1,0(v0)
  4ac794:	8fc20024 	lw	v0,36(s8)
  4ac798:	00000000 	nop
  4ac79c:	00431026 	xor	v0,v0,v1
  4ac7a0:	afc20024 	sw	v0,36(s8)
  4ac7a4:	8fc20008 	lw	v0,8(s8)
  4ac7a8:	00000000 	nop
  4ac7ac:	24420208 	addiu	v0,v0,520
  4ac7b0:	8c430000 	lw	v1,0(v0)
  4ac7b4:	8fc2001c 	lw	v0,28(s8)
  4ac7b8:	00000000 	nop
  4ac7bc:	00431026 	xor	v0,v0,v1
  4ac7c0:	afc2001c 	sw	v0,28(s8)
  4ac7c4:	8fc20008 	lw	v0,8(s8)
  4ac7c8:	00000000 	nop
  4ac7cc:	2442020c 	addiu	v0,v0,524
  4ac7d0:	8c430000 	lw	v1,0(v0)
  4ac7d4:	8fc20018 	lw	v0,24(s8)
  4ac7d8:	00000000 	nop
  4ac7dc:	00431026 	xor	v0,v0,v1
  4ac7e0:	afc20018 	sw	v0,24(s8)
      S6(r3,r4,r2,r1,r0) 
  4ac7e4:	8fc2001c 	lw	v0,28(s8)
  4ac7e8:	00000000 	nop
  4ac7ec:	00021027 	nor	v0,zero,v0
  4ac7f0:	afc2001c 	sw	v0,28(s8)
  4ac7f4:	8fc20018 	lw	v0,24(s8)
  4ac7f8:	00000000 	nop
  4ac7fc:	afc20014 	sw	v0,20(s8)
  4ac800:	8fc30018 	lw	v1,24(s8)
  4ac804:	8fc20020 	lw	v0,32(s8)
  4ac808:	00000000 	nop
  4ac80c:	00621024 	and	v0,v1,v0
  4ac810:	afc20018 	sw	v0,24(s8)
  4ac814:	8fc30020 	lw	v1,32(s8)
  4ac818:	8fc20014 	lw	v0,20(s8)
  4ac81c:	00000000 	nop
  4ac820:	00621026 	xor	v0,v1,v0
  4ac824:	afc20020 	sw	v0,32(s8)
  4ac828:	8fc30018 	lw	v1,24(s8)
  4ac82c:	8fc2001c 	lw	v0,28(s8)
  4ac830:	00000000 	nop
  4ac834:	00621026 	xor	v0,v1,v0
  4ac838:	afc20018 	sw	v0,24(s8)
  4ac83c:	8fc3001c 	lw	v1,28(s8)
  4ac840:	8fc20014 	lw	v0,20(s8)
  4ac844:	00000000 	nop
  4ac848:	00621025 	or	v0,v1,v0
  4ac84c:	afc2001c 	sw	v0,28(s8)
  4ac850:	8fc30024 	lw	v1,36(s8)
  4ac854:	8fc20018 	lw	v0,24(s8)
  4ac858:	00000000 	nop
  4ac85c:	00621026 	xor	v0,v1,v0
  4ac860:	afc20024 	sw	v0,36(s8)
  4ac864:	8fc3001c 	lw	v1,28(s8)
  4ac868:	8fc20020 	lw	v0,32(s8)
  4ac86c:	00000000 	nop
  4ac870:	00621026 	xor	v0,v1,v0
  4ac874:	afc2001c 	sw	v0,28(s8)
  4ac878:	8fc30020 	lw	v1,32(s8)
  4ac87c:	8fc20024 	lw	v0,36(s8)
  4ac880:	00000000 	nop
  4ac884:	00621025 	or	v0,v1,v0
  4ac888:	afc20020 	sw	v0,32(s8)
  4ac88c:	8fc3001c 	lw	v1,28(s8)
  4ac890:	8fc20024 	lw	v0,36(s8)
  4ac894:	00000000 	nop
  4ac898:	00621026 	xor	v0,v1,v0
  4ac89c:	afc2001c 	sw	v0,28(s8)
  4ac8a0:	8fc30014 	lw	v1,20(s8)
  4ac8a4:	8fc20020 	lw	v0,32(s8)
  4ac8a8:	00000000 	nop
  4ac8ac:	00621026 	xor	v0,v1,v0
  4ac8b0:	afc20014 	sw	v0,20(s8)
  4ac8b4:	8fc30020 	lw	v1,32(s8)
  4ac8b8:	8fc20018 	lw	v0,24(s8)
  4ac8bc:	00000000 	nop
  4ac8c0:	00621025 	or	v0,v1,v0
  4ac8c4:	afc20020 	sw	v0,32(s8)
  4ac8c8:	8fc30020 	lw	v1,32(s8)
  4ac8cc:	8fc2001c 	lw	v0,28(s8)
  4ac8d0:	00000000 	nop
  4ac8d4:	00621026 	xor	v0,v1,v0
  4ac8d8:	afc20020 	sw	v0,32(s8)
  4ac8dc:	8fc30014 	lw	v1,20(s8)
  4ac8e0:	8fc20018 	lw	v0,24(s8)
  4ac8e4:	00000000 	nop
  4ac8e8:	00621026 	xor	v0,v1,v0
  4ac8ec:	afc20014 	sw	v0,20(s8)
  4ac8f0:	8fc30014 	lw	v1,20(s8)
  4ac8f4:	8fc20020 	lw	v0,32(s8)
  4ac8f8:	00000000 	nop
  4ac8fc:	00621026 	xor	v0,v1,v0
  4ac900:	afc20014 	sw	v0,20(s8)
  4ac904:	8fc20018 	lw	v0,24(s8)
  4ac908:	00000000 	nop
  4ac90c:	00021027 	nor	v0,zero,v0
  4ac910:	afc20018 	sw	v0,24(s8)
  4ac914:	8fc3001c 	lw	v1,28(s8)
  4ac918:	8fc20014 	lw	v0,20(s8)
  4ac91c:	00000000 	nop
  4ac920:	00621024 	and	v0,v1,v0
  4ac924:	afc2001c 	sw	v0,28(s8)
  4ac928:	8fc3001c 	lw	v1,28(s8)
  4ac92c:	8fc20018 	lw	v0,24(s8)
  4ac930:	00000000 	nop
  4ac934:	00621026 	xor	v0,v1,v0
  4ac938:	afc2001c 	sw	v0,28(s8)
      LINTRANS(r3,r4,r0,r2,r1);
  4ac93c:	8fc20020 	lw	v0,32(s8)
  4ac940:	00000000 	nop
  4ac944:	00021b40 	sll	v1,v0,0xd
  4ac948:	000214c2 	srl	v0,v0,0x13
  4ac94c:	00621025 	or	v0,v1,v0
  4ac950:	afc20020 	sw	v0,32(s8)
  4ac954:	8fc20014 	lw	v0,20(s8)
  4ac958:	00000000 	nop
  4ac95c:	000218c0 	sll	v1,v0,0x3
  4ac960:	00021742 	srl	v0,v0,0x1d
  4ac964:	00621025 	or	v0,v1,v0
  4ac968:	afc20014 	sw	v0,20(s8)
  4ac96c:	8fc3001c 	lw	v1,28(s8)
  4ac970:	8fc20014 	lw	v0,20(s8)
  4ac974:	00000000 	nop
  4ac978:	00621026 	xor	v0,v1,v0
  4ac97c:	afc2001c 	sw	v0,28(s8)
  4ac980:	8fc20020 	lw	v0,32(s8)
  4ac984:	00000000 	nop
  4ac988:	000210c0 	sll	v0,v0,0x3
  4ac98c:	afc20018 	sw	v0,24(s8)
  4ac990:	8fc30024 	lw	v1,36(s8)
  4ac994:	8fc20020 	lw	v0,32(s8)
  4ac998:	00000000 	nop
  4ac99c:	00621026 	xor	v0,v1,v0
  4ac9a0:	afc20024 	sw	v0,36(s8)
  4ac9a4:	8fc3001c 	lw	v1,28(s8)
  4ac9a8:	8fc20018 	lw	v0,24(s8)
  4ac9ac:	00000000 	nop
  4ac9b0:	00621026 	xor	v0,v1,v0
  4ac9b4:	afc2001c 	sw	v0,28(s8)
  4ac9b8:	8fc30024 	lw	v1,36(s8)
  4ac9bc:	8fc20014 	lw	v0,20(s8)
  4ac9c0:	00000000 	nop
  4ac9c4:	00621026 	xor	v0,v1,v0
  4ac9c8:	afc20024 	sw	v0,36(s8)
  4ac9cc:	8fc2001c 	lw	v0,28(s8)
  4ac9d0:	00000000 	nop
  4ac9d4:	000219c0 	sll	v1,v0,0x7
  4ac9d8:	00021642 	srl	v0,v0,0x19
  4ac9dc:	00621025 	or	v0,v1,v0
  4ac9e0:	afc2001c 	sw	v0,28(s8)
  4ac9e4:	8fc20024 	lw	v0,36(s8)
  4ac9e8:	00000000 	nop
  4ac9ec:	00021840 	sll	v1,v0,0x1
  4ac9f0:	000217c2 	srl	v0,v0,0x1f
  4ac9f4:	00621025 	or	v0,v1,v0
  4ac9f8:	afc20024 	sw	v0,36(s8)
  4ac9fc:	8fc30014 	lw	v1,20(s8)
  4aca00:	8fc2001c 	lw	v0,28(s8)
  4aca04:	00000000 	nop
  4aca08:	00621026 	xor	v0,v1,v0
  4aca0c:	afc20014 	sw	v0,20(s8)
  4aca10:	8fc20024 	lw	v0,36(s8)
  4aca14:	00000000 	nop
  4aca18:	000211c0 	sll	v0,v0,0x7
  4aca1c:	afc20018 	sw	v0,24(s8)
  4aca20:	8fc30020 	lw	v1,32(s8)
  4aca24:	8fc20024 	lw	v0,36(s8)
  4aca28:	00000000 	nop
  4aca2c:	00621026 	xor	v0,v1,v0
  4aca30:	afc20020 	sw	v0,32(s8)
  4aca34:	8fc30014 	lw	v1,20(s8)
  4aca38:	8fc20018 	lw	v0,24(s8)
  4aca3c:	00000000 	nop
  4aca40:	00621026 	xor	v0,v1,v0
  4aca44:	afc20014 	sw	v0,20(s8)
  4aca48:	8fc30020 	lw	v1,32(s8)
  4aca4c:	8fc2001c 	lw	v0,28(s8)
  4aca50:	00000000 	nop
  4aca54:	00621026 	xor	v0,v1,v0
  4aca58:	afc20020 	sw	v0,32(s8)
  4aca5c:	8fc20014 	lw	v0,20(s8)
  4aca60:	00000000 	nop
  4aca64:	00021d80 	sll	v1,v0,0x16
  4aca68:	00021282 	srl	v0,v0,0xa
  4aca6c:	00621025 	or	v0,v1,v0
  4aca70:	afc20014 	sw	v0,20(s8)
  4aca74:	8fc20020 	lw	v0,32(s8)
  4aca78:	00000000 	nop
  4aca7c:	00021940 	sll	v1,v0,0x5
  4aca80:	000216c2 	srl	v0,v0,0x1b
  4aca84:	00621025 	or	v0,v1,v0
  4aca88:	afc20020 	sw	v0,32(s8)

      /* round 32  */
      KEYMIX(r3,r4,r0,r2,r1,124);
  4aca8c:	8fc20008 	lw	v0,8(s8)
  4aca90:	00000000 	nop
  4aca94:	24420210 	addiu	v0,v0,528
  4aca98:	8c430000 	lw	v1,0(v0)
  4aca9c:	8fc20020 	lw	v0,32(s8)
  4acaa0:	00000000 	nop
  4acaa4:	00431026 	xor	v0,v0,v1
  4acaa8:	afc20020 	sw	v0,32(s8)
  4acaac:	8fc20008 	lw	v0,8(s8)
  4acab0:	00000000 	nop
  4acab4:	24420214 	addiu	v0,v0,532
  4acab8:	8c430000 	lw	v1,0(v0)
  4acabc:	8fc20024 	lw	v0,36(s8)
  4acac0:	00000000 	nop
  4acac4:	00431026 	xor	v0,v0,v1
  4acac8:	afc20024 	sw	v0,36(s8)
  4acacc:	8fc20008 	lw	v0,8(s8)
  4acad0:	00000000 	nop
  4acad4:	24420218 	addiu	v0,v0,536
  4acad8:	8c430000 	lw	v1,0(v0)
  4acadc:	8fc20014 	lw	v0,20(s8)
  4acae0:	00000000 	nop
  4acae4:	00431026 	xor	v0,v0,v1
  4acae8:	afc20014 	sw	v0,20(s8)
  4acaec:	8fc20008 	lw	v0,8(s8)
  4acaf0:	00000000 	nop
  4acaf4:	2442021c 	addiu	v0,v0,540
  4acaf8:	8c430000 	lw	v1,0(v0)
  4acafc:	8fc2001c 	lw	v0,28(s8)
  4acb00:	00000000 	nop
  4acb04:	00431026 	xor	v0,v0,v1
  4acb08:	afc2001c 	sw	v0,28(s8)
      S7(r3,r4,r0,r2,r1);
  4acb0c:	8fc20014 	lw	v0,20(s8)
  4acb10:	00000000 	nop
  4acb14:	afc20018 	sw	v0,24(s8)
  4acb18:	8fc30014 	lw	v1,20(s8)
  4acb1c:	8fc20024 	lw	v0,36(s8)
  4acb20:	00000000 	nop
  4acb24:	00621024 	and	v0,v1,v0
  4acb28:	afc20014 	sw	v0,20(s8)
  4acb2c:	8fc30014 	lw	v1,20(s8)
  4acb30:	8fc2001c 	lw	v0,28(s8)
  4acb34:	00000000 	nop
  4acb38:	00621026 	xor	v0,v1,v0
  4acb3c:	afc20014 	sw	v0,20(s8)
  4acb40:	8fc3001c 	lw	v1,28(s8)
  4acb44:	8fc20024 	lw	v0,36(s8)
  4acb48:	00000000 	nop
  4acb4c:	00621024 	and	v0,v1,v0
  4acb50:	afc2001c 	sw	v0,28(s8)
  4acb54:	8fc30018 	lw	v1,24(s8)
  4acb58:	8fc20014 	lw	v0,20(s8)
  4acb5c:	00000000 	nop
  4acb60:	00621026 	xor	v0,v1,v0
  4acb64:	afc20018 	sw	v0,24(s8)
  4acb68:	8fc30014 	lw	v1,20(s8)
  4acb6c:	8fc20024 	lw	v0,36(s8)
  4acb70:	00000000 	nop
  4acb74:	00621026 	xor	v0,v1,v0
  4acb78:	afc20014 	sw	v0,20(s8)
  4acb7c:	8fc30024 	lw	v1,36(s8)
  4acb80:	8fc20020 	lw	v0,32(s8)
  4acb84:	00000000 	nop
  4acb88:	00621026 	xor	v0,v1,v0
  4acb8c:	afc20024 	sw	v0,36(s8)
  4acb90:	8fc30020 	lw	v1,32(s8)
  4acb94:	8fc20018 	lw	v0,24(s8)
  4acb98:	00000000 	nop
  4acb9c:	00621025 	or	v0,v1,v0
  4acba0:	afc20020 	sw	v0,32(s8)
  4acba4:	8fc30020 	lw	v1,32(s8)
  4acba8:	8fc20014 	lw	v0,20(s8)
  4acbac:	00000000 	nop
  4acbb0:	00621026 	xor	v0,v1,v0
  4acbb4:	afc20020 	sw	v0,32(s8)
  4acbb8:	8fc3001c 	lw	v1,28(s8)
  4acbbc:	8fc20024 	lw	v0,36(s8)
  4acbc0:	00000000 	nop
  4acbc4:	00621026 	xor	v0,v1,v0
  4acbc8:	afc2001c 	sw	v0,28(s8)
  4acbcc:	8fc30014 	lw	v1,20(s8)
  4acbd0:	8fc2001c 	lw	v0,28(s8)
  4acbd4:	00000000 	nop
  4acbd8:	00621026 	xor	v0,v1,v0
  4acbdc:	afc20014 	sw	v0,20(s8)
  4acbe0:	8fc3001c 	lw	v1,28(s8)
  4acbe4:	8fc20020 	lw	v0,32(s8)
  4acbe8:	00000000 	nop
  4acbec:	00621024 	and	v0,v1,v0
  4acbf0:	afc2001c 	sw	v0,28(s8)
  4acbf4:	8fc3001c 	lw	v1,28(s8)
  4acbf8:	8fc20018 	lw	v0,24(s8)
  4acbfc:	00000000 	nop
  4acc00:	00621026 	xor	v0,v1,v0
  4acc04:	afc2001c 	sw	v0,28(s8)
  4acc08:	8fc30018 	lw	v1,24(s8)
  4acc0c:	8fc20014 	lw	v0,20(s8)
  4acc10:	00000000 	nop
  4acc14:	00621026 	xor	v0,v1,v0
  4acc18:	afc20018 	sw	v0,24(s8)
  4acc1c:	8fc30014 	lw	v1,20(s8)
  4acc20:	8fc20020 	lw	v0,32(s8)
  4acc24:	00000000 	nop
  4acc28:	00621024 	and	v0,v1,v0
  4acc2c:	afc20014 	sw	v0,20(s8)
  4acc30:	8fc20018 	lw	v0,24(s8)
  4acc34:	00000000 	nop
  4acc38:	00021027 	nor	v0,zero,v0
  4acc3c:	afc20018 	sw	v0,24(s8)
  4acc40:	8fc30014 	lw	v1,20(s8)
  4acc44:	8fc20018 	lw	v0,24(s8)
  4acc48:	00000000 	nop
  4acc4c:	00621026 	xor	v0,v1,v0
  4acc50:	afc20014 	sw	v0,20(s8)
  4acc54:	8fc30018 	lw	v1,24(s8)
  4acc58:	8fc20020 	lw	v0,32(s8)
  4acc5c:	00000000 	nop
  4acc60:	00621024 	and	v0,v1,v0
  4acc64:	afc20018 	sw	v0,24(s8)
  4acc68:	8fc30024 	lw	v1,36(s8)
  4acc6c:	8fc2001c 	lw	v0,28(s8)
  4acc70:	00000000 	nop
  4acc74:	00621026 	xor	v0,v1,v0
  4acc78:	afc20024 	sw	v0,36(s8)
  4acc7c:	8fc30018 	lw	v1,24(s8)
  4acc80:	8fc20024 	lw	v0,36(s8)
  4acc84:	00000000 	nop
  4acc88:	00621026 	xor	v0,v1,v0
  4acc8c:	afc20018 	sw	v0,24(s8)
      KEYMIX(r0,r1,r2,r3,r4,128);
  4acc90:	8fc20008 	lw	v0,8(s8)
  4acc94:	00000000 	nop
  4acc98:	24420220 	addiu	v0,v0,544
  4acc9c:	8c430000 	lw	v1,0(v0)
  4acca0:	8fc20014 	lw	v0,20(s8)
  4acca4:	00000000 	nop
  4acca8:	00431026 	xor	v0,v0,v1
  4accac:	afc20014 	sw	v0,20(s8)
  4accb0:	8fc20008 	lw	v0,8(s8)
  4accb4:	00000000 	nop
  4accb8:	24420224 	addiu	v0,v0,548
  4accbc:	8c430000 	lw	v1,0(v0)
  4accc0:	8fc20018 	lw	v0,24(s8)
  4accc4:	00000000 	nop
  4accc8:	00431026 	xor	v0,v0,v1
  4acccc:	afc20018 	sw	v0,24(s8)
  4accd0:	8fc20008 	lw	v0,8(s8)
  4accd4:	00000000 	nop
  4accd8:	24420228 	addiu	v0,v0,552
  4accdc:	8c430000 	lw	v1,0(v0)
  4acce0:	8fc2001c 	lw	v0,28(s8)
  4acce4:	00000000 	nop
  4acce8:	00431026 	xor	v0,v0,v1
  4accec:	afc2001c 	sw	v0,28(s8)
  4accf0:	8fc20008 	lw	v0,8(s8)
  4accf4:	00000000 	nop
  4accf8:	2442022c 	addiu	v0,v0,556
  4accfc:	8c430000 	lw	v1,0(v0)
  4acd00:	8fc20020 	lw	v0,32(s8)
  4acd04:	00000000 	nop
  4acd08:	00431026 	xor	v0,v0,v1
  4acd0c:	afc20020 	sw	v0,32(s8)

    
#ifdef  BLOCK_SWAP
    out_blk[3] = io_swap(r0); out_blk[2] = io_swap(r1); 
  4acd10:	8fc20010 	lw	v0,16(s8)
  4acd14:	00000000 	nop
  4acd18:	2443000c 	addiu	v1,v0,12
  4acd1c:	8fc20014 	lw	v0,20(s8)
  4acd20:	00000000 	nop
  4acd24:	ac620000 	sw	v0,0(v1)
  4acd28:	8fc20010 	lw	v0,16(s8)
  4acd2c:	00000000 	nop
  4acd30:	24430008 	addiu	v1,v0,8
  4acd34:	8fc20018 	lw	v0,24(s8)
  4acd38:	00000000 	nop
  4acd3c:	ac620000 	sw	v0,0(v1)
    out_blk[1] = io_swap(r2); out_blk[0] = io_swap(r3);
  4acd40:	8fc20010 	lw	v0,16(s8)
  4acd44:	00000000 	nop
  4acd48:	24430004 	addiu	v1,v0,4
  4acd4c:	8fc2001c 	lw	v0,28(s8)
  4acd50:	00000000 	nop
  4acd54:	ac620000 	sw	v0,0(v1)
  4acd58:	8fc30020 	lw	v1,32(s8)
  4acd5c:	8fc20010 	lw	v0,16(s8)
  4acd60:	00000000 	nop
  4acd64:	ac430000 	sw	v1,0(v0)
#else
    out_blk[0] = r0; out_blk[1] = r1; out_blk[2] = r2; out_blk[3] = r3;
#endif
    return 0;
  4acd68:	00001021 	move	v0,zero
};
  4acd6c:	03c0e821 	move	sp,s8
  4acd70:	8fbe002c 	lw	s8,44(sp)
  4acd74:	27bd0030 	addiu	sp,sp,48
  4acd78:	03e00008 	jr	ra
  4acd7c:	00000000 	nop

004acd80 <serpent_decrypt>:
  4acd80:	3c1c0fb6 	lui	gp,0xfb6
  4acd84:	279cfbf0 	addiu	gp,gp,-1040
  4acd88:	0399e021 	addu	gp,gp,t9
  4acd8c:	27bdffd0 	addiu	sp,sp,-48
  4acd90:	afbc0000 	sw	gp,0(sp)
  4acd94:	afbe002c 	sw	s8,44(sp)
  4acd98:	afbc0028 	sw	gp,40(sp)
  4acd9c:	03a0f021 	move	s8,sp
  4acda0:	afc40030 	sw	a0,48(s8)
  4acda4:	afc50034 	sw	a1,52(s8)
  4acda8:	afc60038 	sw	a2,56(s8)

/* decrypt a block of text  */

int serpent_decrypt(serpent_context *cx, const u8 *in,
		    u8 *out)
{   u32 *l_key = cx->keyinfo;
  4acdac:	8fc20030 	lw	v0,48(s8)
  4acdb0:	00000000 	nop
  4acdb4:	afc20008 	sw	v0,8(s8)
    const u32 *in_blk = (const u32 *)in;
  4acdb8:	8fc20034 	lw	v0,52(s8)
  4acdbc:	00000000 	nop
  4acdc0:	afc2000c 	sw	v0,12(s8)
    u32 *out_blk = (u32 *)out;
  4acdc4:	8fc20038 	lw	v0,56(s8)
  4acdc8:	00000000 	nop
  4acdcc:	afc20010 	sw	v0,16(s8)
    u32  r0,r1,r2,r3,r4;
    
#ifdef  BLOCK_SWAP
    r0 = io_swap(in_blk[3]); r1 = io_swap(in_blk[2]); 
  4acdd0:	8fc2000c 	lw	v0,12(s8)
  4acdd4:	00000000 	nop
  4acdd8:	2442000c 	addiu	v0,v0,12
  4acddc:	8c420000 	lw	v0,0(v0)
  4acde0:	00000000 	nop
  4acde4:	afc20014 	sw	v0,20(s8)
  4acde8:	8fc2000c 	lw	v0,12(s8)
  4acdec:	00000000 	nop
  4acdf0:	24420008 	addiu	v0,v0,8
  4acdf4:	8c420000 	lw	v0,0(v0)
  4acdf8:	00000000 	nop
  4acdfc:	afc20018 	sw	v0,24(s8)
    r2 = io_swap(in_blk[1]); r3 = io_swap(in_blk[0]);
  4ace00:	8fc2000c 	lw	v0,12(s8)
  4ace04:	00000000 	nop
  4ace08:	24420004 	addiu	v0,v0,4
  4ace0c:	8c420000 	lw	v0,0(v0)
  4ace10:	00000000 	nop
  4ace14:	afc2001c 	sw	v0,28(s8)
  4ace18:	8fc2000c 	lw	v0,12(s8)
  4ace1c:	00000000 	nop
  4ace20:	8c420000 	lw	v0,0(v0)
  4ace24:	00000000 	nop
  4ace28:	afc20020 	sw	v0,32(s8)
#else
    r0 = in_blk[0]; r1 = in_blk[1]; r2 = in_blk[2]; r3 = in_blk[3];
#endif

      /* round 1 */
      KEYMIX(r0,r1,r2,r3,r4,128);
  4ace2c:	8fc20008 	lw	v0,8(s8)
  4ace30:	00000000 	nop
  4ace34:	24420220 	addiu	v0,v0,544
  4ace38:	8c430000 	lw	v1,0(v0)
  4ace3c:	8fc20014 	lw	v0,20(s8)
  4ace40:	00000000 	nop
  4ace44:	00431026 	xor	v0,v0,v1
  4ace48:	afc20014 	sw	v0,20(s8)
  4ace4c:	8fc20008 	lw	v0,8(s8)
  4ace50:	00000000 	nop
  4ace54:	24420224 	addiu	v0,v0,548
  4ace58:	8c430000 	lw	v1,0(v0)
  4ace5c:	8fc20018 	lw	v0,24(s8)
  4ace60:	00000000 	nop
  4ace64:	00431026 	xor	v0,v0,v1
  4ace68:	afc20018 	sw	v0,24(s8)
  4ace6c:	8fc20008 	lw	v0,8(s8)
  4ace70:	00000000 	nop
  4ace74:	24420228 	addiu	v0,v0,552
  4ace78:	8c430000 	lw	v1,0(v0)
  4ace7c:	8fc2001c 	lw	v0,28(s8)
  4ace80:	00000000 	nop
  4ace84:	00431026 	xor	v0,v0,v1
  4ace88:	afc2001c 	sw	v0,28(s8)
  4ace8c:	8fc20008 	lw	v0,8(s8)
  4ace90:	00000000 	nop
  4ace94:	2442022c 	addiu	v0,v0,556
  4ace98:	8c430000 	lw	v1,0(v0)
  4ace9c:	8fc20020 	lw	v0,32(s8)
  4acea0:	00000000 	nop
  4acea4:	00431026 	xor	v0,v0,v1
  4acea8:	afc20020 	sw	v0,32(s8)
      I7(r0,r1,r2,r3,r4);
  4aceac:	8fc2001c 	lw	v0,28(s8)
  4aceb0:	00000000 	nop
  4aceb4:	afc20024 	sw	v0,36(s8)
  4aceb8:	8fc3001c 	lw	v1,28(s8)
  4acebc:	8fc20014 	lw	v0,20(s8)
  4acec0:	00000000 	nop
  4acec4:	00621026 	xor	v0,v1,v0
  4acec8:	afc2001c 	sw	v0,28(s8)
  4acecc:	8fc30014 	lw	v1,20(s8)
  4aced0:	8fc20020 	lw	v0,32(s8)
  4aced4:	00000000 	nop
  4aced8:	00621024 	and	v0,v1,v0
  4acedc:	afc20014 	sw	v0,20(s8)
  4acee0:	8fc30024 	lw	v1,36(s8)
  4acee4:	8fc20020 	lw	v0,32(s8)
  4acee8:	00000000 	nop
  4aceec:	00621025 	or	v0,v1,v0
  4acef0:	afc20024 	sw	v0,36(s8)
  4acef4:	8fc2001c 	lw	v0,28(s8)
  4acef8:	00000000 	nop
  4acefc:	00021027 	nor	v0,zero,v0
  4acf00:	afc2001c 	sw	v0,28(s8)
  4acf04:	8fc30020 	lw	v1,32(s8)
  4acf08:	8fc20018 	lw	v0,24(s8)
  4acf0c:	00000000 	nop
  4acf10:	00621026 	xor	v0,v1,v0
  4acf14:	afc20020 	sw	v0,32(s8)
  4acf18:	8fc30018 	lw	v1,24(s8)
  4acf1c:	8fc20014 	lw	v0,20(s8)
  4acf20:	00000000 	nop
  4acf24:	00621025 	or	v0,v1,v0
  4acf28:	afc20018 	sw	v0,24(s8)
  4acf2c:	8fc30014 	lw	v1,20(s8)
  4acf30:	8fc2001c 	lw	v0,28(s8)
  4acf34:	00000000 	nop
  4acf38:	00621026 	xor	v0,v1,v0
  4acf3c:	afc20014 	sw	v0,20(s8)
  4acf40:	8fc3001c 	lw	v1,28(s8)
  4acf44:	8fc20024 	lw	v0,36(s8)
  4acf48:	00000000 	nop
  4acf4c:	00621024 	and	v0,v1,v0
  4acf50:	afc2001c 	sw	v0,28(s8)
  4acf54:	8fc30020 	lw	v1,32(s8)
  4acf58:	8fc20024 	lw	v0,36(s8)
  4acf5c:	00000000 	nop
  4acf60:	00621024 	and	v0,v1,v0
  4acf64:	afc20020 	sw	v0,32(s8)
  4acf68:	8fc30018 	lw	v1,24(s8)
  4acf6c:	8fc2001c 	lw	v0,28(s8)
  4acf70:	00000000 	nop
  4acf74:	00621026 	xor	v0,v1,v0
  4acf78:	afc20018 	sw	v0,24(s8)
  4acf7c:	8fc3001c 	lw	v1,28(s8)
  4acf80:	8fc20014 	lw	v0,20(s8)
  4acf84:	00000000 	nop
  4acf88:	00621026 	xor	v0,v1,v0
  4acf8c:	afc2001c 	sw	v0,28(s8)
  4acf90:	8fc30014 	lw	v1,20(s8)
  4acf94:	8fc2001c 	lw	v0,28(s8)
  4acf98:	00000000 	nop
  4acf9c:	00621025 	or	v0,v1,v0
  4acfa0:	afc20014 	sw	v0,20(s8)
  4acfa4:	8fc30024 	lw	v1,36(s8)
  4acfa8:	8fc20018 	lw	v0,24(s8)
  4acfac:	00000000 	nop
  4acfb0:	00621026 	xor	v0,v1,v0
  4acfb4:	afc20024 	sw	v0,36(s8)
  4acfb8:	8fc30014 	lw	v1,20(s8)
  4acfbc:	8fc20020 	lw	v0,32(s8)
  4acfc0:	00000000 	nop
  4acfc4:	00621026 	xor	v0,v1,v0
  4acfc8:	afc20014 	sw	v0,20(s8)
  4acfcc:	8fc30020 	lw	v1,32(s8)
  4acfd0:	8fc20024 	lw	v0,36(s8)
  4acfd4:	00000000 	nop
  4acfd8:	00621026 	xor	v0,v1,v0
  4acfdc:	afc20020 	sw	v0,32(s8)
  4acfe0:	8fc30024 	lw	v1,36(s8)
  4acfe4:	8fc20014 	lw	v0,20(s8)
  4acfe8:	00000000 	nop
  4acfec:	00621025 	or	v0,v1,v0
  4acff0:	afc20024 	sw	v0,36(s8)
  4acff4:	8fc30020 	lw	v1,32(s8)
  4acff8:	8fc2001c 	lw	v0,28(s8)
  4acffc:	00000000 	nop
  4ad000:	00621026 	xor	v0,v1,v0
  4ad004:	afc20020 	sw	v0,32(s8)
  4ad008:	8fc30024 	lw	v1,36(s8)
  4ad00c:	8fc2001c 	lw	v0,28(s8)
  4ad010:	00000000 	nop
  4ad014:	00621026 	xor	v0,v1,v0
  4ad018:	afc20024 	sw	v0,36(s8)
      KEYMIX(r3,r0,r1,r4,r2,124);
  4ad01c:	8fc20008 	lw	v0,8(s8)
  4ad020:	00000000 	nop
  4ad024:	24420210 	addiu	v0,v0,528
  4ad028:	8c430000 	lw	v1,0(v0)
  4ad02c:	8fc20020 	lw	v0,32(s8)
  4ad030:	00000000 	nop
  4ad034:	00431026 	xor	v0,v0,v1
  4ad038:	afc20020 	sw	v0,32(s8)
  4ad03c:	8fc20008 	lw	v0,8(s8)
  4ad040:	00000000 	nop
  4ad044:	24420214 	addiu	v0,v0,532
  4ad048:	8c430000 	lw	v1,0(v0)
  4ad04c:	8fc20014 	lw	v0,20(s8)
  4ad050:	00000000 	nop
  4ad054:	00431026 	xor	v0,v0,v1
  4ad058:	afc20014 	sw	v0,20(s8)
  4ad05c:	8fc20008 	lw	v0,8(s8)
  4ad060:	00000000 	nop
  4ad064:	24420218 	addiu	v0,v0,536
  4ad068:	8c430000 	lw	v1,0(v0)
  4ad06c:	8fc20018 	lw	v0,24(s8)
  4ad070:	00000000 	nop
  4ad074:	00431026 	xor	v0,v0,v1
  4ad078:	afc20018 	sw	v0,24(s8)
  4ad07c:	8fc20008 	lw	v0,8(s8)
  4ad080:	00000000 	nop
  4ad084:	2442021c 	addiu	v0,v0,540
  4ad088:	8c430000 	lw	v1,0(v0)
  4ad08c:	8fc20024 	lw	v0,36(s8)
  4ad090:	00000000 	nop
  4ad094:	00431026 	xor	v0,v0,v1
  4ad098:	afc20024 	sw	v0,36(s8)

      /* round 2  */
      ILINTRANS(r3,r0,r1,r4,r2);
  4ad09c:	8fc20018 	lw	v0,24(s8)
  4ad0a0:	00000000 	nop
  4ad0a4:	00021a80 	sll	v1,v0,0xa
  4ad0a8:	00021582 	srl	v0,v0,0x16
  4ad0ac:	00621025 	or	v0,v1,v0
  4ad0b0:	afc20018 	sw	v0,24(s8)
  4ad0b4:	8fc20020 	lw	v0,32(s8)
  4ad0b8:	00000000 	nop
  4ad0bc:	00021ec0 	sll	v1,v0,0x1b
  4ad0c0:	00021142 	srl	v0,v0,0x5
  4ad0c4:	00621025 	or	v0,v1,v0
  4ad0c8:	afc20020 	sw	v0,32(s8)
  4ad0cc:	8fc30018 	lw	v1,24(s8)
  4ad0d0:	8fc20024 	lw	v0,36(s8)
  4ad0d4:	00000000 	nop
  4ad0d8:	00621026 	xor	v0,v1,v0
  4ad0dc:	afc20018 	sw	v0,24(s8)
  4ad0e0:	8fc20014 	lw	v0,20(s8)
  4ad0e4:	00000000 	nop
  4ad0e8:	000211c0 	sll	v0,v0,0x7
  4ad0ec:	afc2001c 	sw	v0,28(s8)
  4ad0f0:	8fc30020 	lw	v1,32(s8)
  4ad0f4:	8fc20014 	lw	v0,20(s8)
  4ad0f8:	00000000 	nop
  4ad0fc:	00621026 	xor	v0,v1,v0
  4ad100:	afc20020 	sw	v0,32(s8)
  4ad104:	8fc30018 	lw	v1,24(s8)
  4ad108:	8fc2001c 	lw	v0,28(s8)
  4ad10c:	00000000 	nop
  4ad110:	00621026 	xor	v0,v1,v0
  4ad114:	afc20018 	sw	v0,24(s8)
  4ad118:	8fc30020 	lw	v1,32(s8)
  4ad11c:	8fc20024 	lw	v0,36(s8)
  4ad120:	00000000 	nop
  4ad124:	00621026 	xor	v0,v1,v0
  4ad128:	afc20020 	sw	v0,32(s8)
  4ad12c:	8fc20024 	lw	v0,36(s8)
  4ad130:	00000000 	nop
  4ad134:	00021e40 	sll	v1,v0,0x19
  4ad138:	000211c2 	srl	v0,v0,0x7
  4ad13c:	00621025 	or	v0,v1,v0
  4ad140:	afc20024 	sw	v0,36(s8)
  4ad144:	8fc20014 	lw	v0,20(s8)
  4ad148:	00000000 	nop
  4ad14c:	00021fc0 	sll	v1,v0,0x1f
  4ad150:	00021042 	srl	v0,v0,0x1
  4ad154:	00621025 	or	v0,v1,v0
  4ad158:	afc20014 	sw	v0,20(s8)
  4ad15c:	8fc30024 	lw	v1,36(s8)
  4ad160:	8fc20018 	lw	v0,24(s8)
  4ad164:	00000000 	nop
  4ad168:	00621026 	xor	v0,v1,v0
  4ad16c:	afc20024 	sw	v0,36(s8)
  4ad170:	8fc20020 	lw	v0,32(s8)
  4ad174:	00000000 	nop
  4ad178:	000210c0 	sll	v0,v0,0x3
  4ad17c:	afc2001c 	sw	v0,28(s8)
  4ad180:	8fc30014 	lw	v1,20(s8)
  4ad184:	8fc20020 	lw	v0,32(s8)
  4ad188:	00000000 	nop
  4ad18c:	00621026 	xor	v0,v1,v0
  4ad190:	afc20014 	sw	v0,20(s8)
  4ad194:	8fc30024 	lw	v1,36(s8)
  4ad198:	8fc2001c 	lw	v0,28(s8)
  4ad19c:	00000000 	nop
  4ad1a0:	00621026 	xor	v0,v1,v0
  4ad1a4:	afc20024 	sw	v0,36(s8)
  4ad1a8:	8fc30014 	lw	v1,20(s8)
  4ad1ac:	8fc20018 	lw	v0,24(s8)
  4ad1b0:	00000000 	nop
  4ad1b4:	00621026 	xor	v0,v1,v0
  4ad1b8:	afc20014 	sw	v0,20(s8)
  4ad1bc:	8fc20018 	lw	v0,24(s8)
  4ad1c0:	00000000 	nop
  4ad1c4:	00021f40 	sll	v1,v0,0x1d
  4ad1c8:	000210c2 	srl	v0,v0,0x3
  4ad1cc:	00621025 	or	v0,v1,v0
  4ad1d0:	afc20018 	sw	v0,24(s8)
  4ad1d4:	8fc20020 	lw	v0,32(s8)
  4ad1d8:	00000000 	nop
  4ad1dc:	00021cc0 	sll	v1,v0,0x13
  4ad1e0:	00021342 	srl	v0,v0,0xd
  4ad1e4:	00621025 	or	v0,v1,v0
  4ad1e8:	afc20020 	sw	v0,32(s8)
      I6(r3,r0,r1,r4,r2);
  4ad1ec:	8fc30020 	lw	v1,32(s8)
  4ad1f0:	8fc20018 	lw	v0,24(s8)
  4ad1f4:	00000000 	nop
  4ad1f8:	00621026 	xor	v0,v1,v0
  4ad1fc:	afc20020 	sw	v0,32(s8)
  4ad200:	8fc20018 	lw	v0,24(s8)
  4ad204:	00000000 	nop
  4ad208:	afc2001c 	sw	v0,28(s8)
  4ad20c:	8fc30018 	lw	v1,24(s8)
  4ad210:	8fc20020 	lw	v0,32(s8)
  4ad214:	00000000 	nop
  4ad218:	00621024 	and	v0,v1,v0
  4ad21c:	afc20018 	sw	v0,24(s8)
  4ad220:	8fc3001c 	lw	v1,28(s8)
  4ad224:	8fc20024 	lw	v0,36(s8)
  4ad228:	00000000 	nop
  4ad22c:	00621026 	xor	v0,v1,v0
  4ad230:	afc2001c 	sw	v0,28(s8)
  4ad234:	8fc20018 	lw	v0,24(s8)
  4ad238:	00000000 	nop
  4ad23c:	00021027 	nor	v0,zero,v0
  4ad240:	afc20018 	sw	v0,24(s8)
  4ad244:	8fc30024 	lw	v1,36(s8)
  4ad248:	8fc20014 	lw	v0,20(s8)
  4ad24c:	00000000 	nop
  4ad250:	00621026 	xor	v0,v1,v0
  4ad254:	afc20024 	sw	v0,36(s8)
  4ad258:	8fc30018 	lw	v1,24(s8)
  4ad25c:	8fc20024 	lw	v0,36(s8)
  4ad260:	00000000 	nop
  4ad264:	00621026 	xor	v0,v1,v0
  4ad268:	afc20018 	sw	v0,24(s8)
  4ad26c:	8fc3001c 	lw	v1,28(s8)
  4ad270:	8fc20020 	lw	v0,32(s8)
  4ad274:	00000000 	nop
  4ad278:	00621025 	or	v0,v1,v0
  4ad27c:	afc2001c 	sw	v0,28(s8)
  4ad280:	8fc30020 	lw	v1,32(s8)
  4ad284:	8fc20018 	lw	v0,24(s8)
  4ad288:	00000000 	nop
  4ad28c:	00621026 	xor	v0,v1,v0
  4ad290:	afc20020 	sw	v0,32(s8)
  4ad294:	8fc30024 	lw	v1,36(s8)
  4ad298:	8fc2001c 	lw	v0,28(s8)
  4ad29c:	00000000 	nop
  4ad2a0:	00621026 	xor	v0,v1,v0
  4ad2a4:	afc20024 	sw	v0,36(s8)
  4ad2a8:	8fc3001c 	lw	v1,28(s8)
  4ad2ac:	8fc20014 	lw	v0,20(s8)
  4ad2b0:	00000000 	nop
  4ad2b4:	00621026 	xor	v0,v1,v0
  4ad2b8:	afc2001c 	sw	v0,28(s8)
  4ad2bc:	8fc30014 	lw	v1,20(s8)
  4ad2c0:	8fc20024 	lw	v0,36(s8)
  4ad2c4:	00000000 	nop
  4ad2c8:	00621024 	and	v0,v1,v0
  4ad2cc:	afc20014 	sw	v0,20(s8)
  4ad2d0:	8fc30014 	lw	v1,20(s8)
  4ad2d4:	8fc20020 	lw	v0,32(s8)
  4ad2d8:	00000000 	nop
  4ad2dc:	00621026 	xor	v0,v1,v0
  4ad2e0:	afc20014 	sw	v0,20(s8)
  4ad2e4:	8fc30020 	lw	v1,32(s8)
  4ad2e8:	8fc20024 	lw	v0,36(s8)
  4ad2ec:	00000000 	nop
  4ad2f0:	00621026 	xor	v0,v1,v0
  4ad2f4:	afc20020 	sw	v0,32(s8)
  4ad2f8:	8fc30020 	lw	v1,32(s8)
  4ad2fc:	8fc20018 	lw	v0,24(s8)
  4ad300:	00000000 	nop
  4ad304:	00621025 	or	v0,v1,v0
  4ad308:	afc20020 	sw	v0,32(s8)
  4ad30c:	8fc30024 	lw	v1,36(s8)
  4ad310:	8fc20014 	lw	v0,20(s8)
  4ad314:	00000000 	nop
  4ad318:	00621026 	xor	v0,v1,v0
  4ad31c:	afc20024 	sw	v0,36(s8)
  4ad320:	8fc3001c 	lw	v1,28(s8)
  4ad324:	8fc20020 	lw	v0,32(s8)
  4ad328:	00000000 	nop
  4ad32c:	00621026 	xor	v0,v1,v0
  4ad330:	afc2001c 	sw	v0,28(s8)
      KEYMIX(r0,r1,r2,r4,r3,120);
  4ad334:	8fc20008 	lw	v0,8(s8)
  4ad338:	00000000 	nop
  4ad33c:	24420200 	addiu	v0,v0,512
  4ad340:	8c430000 	lw	v1,0(v0)
  4ad344:	8fc20014 	lw	v0,20(s8)
  4ad348:	00000000 	nop
  4ad34c:	00431026 	xor	v0,v0,v1
  4ad350:	afc20014 	sw	v0,20(s8)
  4ad354:	8fc20008 	lw	v0,8(s8)
  4ad358:	00000000 	nop
  4ad35c:	24420204 	addiu	v0,v0,516
  4ad360:	8c430000 	lw	v1,0(v0)
  4ad364:	8fc20018 	lw	v0,24(s8)
  4ad368:	00000000 	nop
  4ad36c:	00431026 	xor	v0,v0,v1
  4ad370:	afc20018 	sw	v0,24(s8)
  4ad374:	8fc20008 	lw	v0,8(s8)
  4ad378:	00000000 	nop
  4ad37c:	24420208 	addiu	v0,v0,520
  4ad380:	8c430000 	lw	v1,0(v0)
  4ad384:	8fc2001c 	lw	v0,28(s8)
  4ad388:	00000000 	nop
  4ad38c:	00431026 	xor	v0,v0,v1
  4ad390:	afc2001c 	sw	v0,28(s8)
  4ad394:	8fc20008 	lw	v0,8(s8)
  4ad398:	00000000 	nop
  4ad39c:	2442020c 	addiu	v0,v0,524
  4ad3a0:	8c430000 	lw	v1,0(v0)
  4ad3a4:	8fc20024 	lw	v0,36(s8)
  4ad3a8:	00000000 	nop
  4ad3ac:	00431026 	xor	v0,v0,v1
  4ad3b0:	afc20024 	sw	v0,36(s8)

      /* round 3  */
      ILINTRANS(r0,r1,r2,r4,r3);
  4ad3b4:	8fc2001c 	lw	v0,28(s8)
  4ad3b8:	00000000 	nop
  4ad3bc:	00021a80 	sll	v1,v0,0xa
  4ad3c0:	00021582 	srl	v0,v0,0x16
  4ad3c4:	00621025 	or	v0,v1,v0
  4ad3c8:	afc2001c 	sw	v0,28(s8)
  4ad3cc:	8fc20014 	lw	v0,20(s8)
  4ad3d0:	00000000 	nop
  4ad3d4:	00021ec0 	sll	v1,v0,0x1b
  4ad3d8:	00021142 	srl	v0,v0,0x5
  4ad3dc:	00621025 	or	v0,v1,v0
  4ad3e0:	afc20014 	sw	v0,20(s8)
  4ad3e4:	8fc3001c 	lw	v1,28(s8)
  4ad3e8:	8fc20024 	lw	v0,36(s8)
  4ad3ec:	00000000 	nop
  4ad3f0:	00621026 	xor	v0,v1,v0
  4ad3f4:	afc2001c 	sw	v0,28(s8)
  4ad3f8:	8fc20018 	lw	v0,24(s8)
  4ad3fc:	00000000 	nop
  4ad400:	000211c0 	sll	v0,v0,0x7
  4ad404:	afc20020 	sw	v0,32(s8)
  4ad408:	8fc30014 	lw	v1,20(s8)
  4ad40c:	8fc20018 	lw	v0,24(s8)
  4ad410:	00000000 	nop
  4ad414:	00621026 	xor	v0,v1,v0
  4ad418:	afc20014 	sw	v0,20(s8)
  4ad41c:	8fc3001c 	lw	v1,28(s8)
  4ad420:	8fc20020 	lw	v0,32(s8)
  4ad424:	00000000 	nop
  4ad428:	00621026 	xor	v0,v1,v0
  4ad42c:	afc2001c 	sw	v0,28(s8)
  4ad430:	8fc30014 	lw	v1,20(s8)
  4ad434:	8fc20024 	lw	v0,36(s8)
  4ad438:	00000000 	nop
  4ad43c:	00621026 	xor	v0,v1,v0
  4ad440:	afc20014 	sw	v0,20(s8)
  4ad444:	8fc20024 	lw	v0,36(s8)
  4ad448:	00000000 	nop
  4ad44c:	00021e40 	sll	v1,v0,0x19
  4ad450:	000211c2 	srl	v0,v0,0x7
  4ad454:	00621025 	or	v0,v1,v0
  4ad458:	afc20024 	sw	v0,36(s8)
  4ad45c:	8fc20018 	lw	v0,24(s8)
  4ad460:	00000000 	nop
  4ad464:	00021fc0 	sll	v1,v0,0x1f
  4ad468:	00021042 	srl	v0,v0,0x1
  4ad46c:	00621025 	or	v0,v1,v0
  4ad470:	afc20018 	sw	v0,24(s8)
  4ad474:	8fc30024 	lw	v1,36(s8)
  4ad478:	8fc2001c 	lw	v0,28(s8)
  4ad47c:	00000000 	nop
  4ad480:	00621026 	xor	v0,v1,v0
  4ad484:	afc20024 	sw	v0,36(s8)
  4ad488:	8fc20014 	lw	v0,20(s8)
  4ad48c:	00000000 	nop
  4ad490:	000210c0 	sll	v0,v0,0x3
  4ad494:	afc20020 	sw	v0,32(s8)
  4ad498:	8fc30018 	lw	v1,24(s8)
  4ad49c:	8fc20014 	lw	v0,20(s8)
  4ad4a0:	00000000 	nop
  4ad4a4:	00621026 	xor	v0,v1,v0
  4ad4a8:	afc20018 	sw	v0,24(s8)
  4ad4ac:	8fc30024 	lw	v1,36(s8)
  4ad4b0:	8fc20020 	lw	v0,32(s8)
  4ad4b4:	00000000 	nop
  4ad4b8:	00621026 	xor	v0,v1,v0
  4ad4bc:	afc20024 	sw	v0,36(s8)
  4ad4c0:	8fc30018 	lw	v1,24(s8)
  4ad4c4:	8fc2001c 	lw	v0,28(s8)
  4ad4c8:	00000000 	nop
  4ad4cc:	00621026 	xor	v0,v1,v0
  4ad4d0:	afc20018 	sw	v0,24(s8)
  4ad4d4:	8fc2001c 	lw	v0,28(s8)
  4ad4d8:	00000000 	nop
  4ad4dc:	00021f40 	sll	v1,v0,0x1d
  4ad4e0:	000210c2 	srl	v0,v0,0x3
  4ad4e4:	00621025 	or	v0,v1,v0
  4ad4e8:	afc2001c 	sw	v0,28(s8)
  4ad4ec:	8fc20014 	lw	v0,20(s8)
  4ad4f0:	00000000 	nop
  4ad4f4:	00021cc0 	sll	v1,v0,0x13
  4ad4f8:	00021342 	srl	v0,v0,0xd
  4ad4fc:	00621025 	or	v0,v1,v0
  4ad500:	afc20014 	sw	v0,20(s8)
      I5(r0,r1,r2,r4,r3);
  4ad504:	8fc20018 	lw	v0,24(s8)
  4ad508:	00000000 	nop
  4ad50c:	00021027 	nor	v0,zero,v0
  4ad510:	afc20018 	sw	v0,24(s8)
  4ad514:	8fc20024 	lw	v0,36(s8)
  4ad518:	00000000 	nop
  4ad51c:	afc20020 	sw	v0,32(s8)
  4ad520:	8fc3001c 	lw	v1,28(s8)
  4ad524:	8fc20018 	lw	v0,24(s8)
  4ad528:	00000000 	nop
  4ad52c:	00621026 	xor	v0,v1,v0
  4ad530:	afc2001c 	sw	v0,28(s8)
  4ad534:	8fc30024 	lw	v1,36(s8)
  4ad538:	8fc20014 	lw	v0,20(s8)
  4ad53c:	00000000 	nop
  4ad540:	00621025 	or	v0,v1,v0
  4ad544:	afc20024 	sw	v0,36(s8)
  4ad548:	8fc30024 	lw	v1,36(s8)
  4ad54c:	8fc2001c 	lw	v0,28(s8)
  4ad550:	00000000 	nop
  4ad554:	00621026 	xor	v0,v1,v0
  4ad558:	afc20024 	sw	v0,36(s8)
  4ad55c:	8fc3001c 	lw	v1,28(s8)
  4ad560:	8fc20018 	lw	v0,24(s8)
  4ad564:	00000000 	nop
  4ad568:	00621025 	or	v0,v1,v0
  4ad56c:	afc2001c 	sw	v0,28(s8)
  4ad570:	8fc3001c 	lw	v1,28(s8)
  4ad574:	8fc20014 	lw	v0,20(s8)
  4ad578:	00000000 	nop
  4ad57c:	00621024 	and	v0,v1,v0
  4ad580:	afc2001c 	sw	v0,28(s8)
  4ad584:	8fc30020 	lw	v1,32(s8)
  4ad588:	8fc20024 	lw	v0,36(s8)
  4ad58c:	00000000 	nop
  4ad590:	00621026 	xor	v0,v1,v0
  4ad594:	afc20020 	sw	v0,32(s8)
  4ad598:	8fc3001c 	lw	v1,28(s8)
  4ad59c:	8fc20020 	lw	v0,32(s8)
  4ad5a0:	00000000 	nop
  4ad5a4:	00621026 	xor	v0,v1,v0
  4ad5a8:	afc2001c 	sw	v0,28(s8)
  4ad5ac:	8fc30020 	lw	v1,32(s8)
  4ad5b0:	8fc20014 	lw	v0,20(s8)
  4ad5b4:	00000000 	nop
  4ad5b8:	00621025 	or	v0,v1,v0
  4ad5bc:	afc20020 	sw	v0,32(s8)
  4ad5c0:	8fc30020 	lw	v1,32(s8)
  4ad5c4:	8fc20018 	lw	v0,24(s8)
  4ad5c8:	00000000 	nop
  4ad5cc:	00621026 	xor	v0,v1,v0
  4ad5d0:	afc20020 	sw	v0,32(s8)
  4ad5d4:	8fc30018 	lw	v1,24(s8)
  4ad5d8:	8fc2001c 	lw	v0,28(s8)
  4ad5dc:	00000000 	nop
  4ad5e0:	00621024 	and	v0,v1,v0
  4ad5e4:	afc20018 	sw	v0,24(s8)
  4ad5e8:	8fc30018 	lw	v1,24(s8)
  4ad5ec:	8fc20024 	lw	v0,36(s8)
  4ad5f0:	00000000 	nop
  4ad5f4:	00621026 	xor	v0,v1,v0
  4ad5f8:	afc20018 	sw	v0,24(s8)
  4ad5fc:	8fc30020 	lw	v1,32(s8)
  4ad600:	8fc2001c 	lw	v0,28(s8)
  4ad604:	00000000 	nop
  4ad608:	00621026 	xor	v0,v1,v0
  4ad60c:	afc20020 	sw	v0,32(s8)
  4ad610:	8fc30024 	lw	v1,36(s8)
  4ad614:	8fc20020 	lw	v0,32(s8)
  4ad618:	00000000 	nop
  4ad61c:	00621024 	and	v0,v1,v0
  4ad620:	afc20024 	sw	v0,36(s8)
  4ad624:	8fc30020 	lw	v1,32(s8)
  4ad628:	8fc20018 	lw	v0,24(s8)
  4ad62c:	00000000 	nop
  4ad630:	00621026 	xor	v0,v1,v0
  4ad634:	afc20020 	sw	v0,32(s8)
  4ad638:	8fc30024 	lw	v1,36(s8)
  4ad63c:	8fc20014 	lw	v0,20(s8)
  4ad640:	00000000 	nop
  4ad644:	00621026 	xor	v0,v1,v0
  4ad648:	afc20024 	sw	v0,36(s8)
  4ad64c:	8fc30024 	lw	v1,36(s8)
  4ad650:	8fc20020 	lw	v0,32(s8)
  4ad654:	00000000 	nop
  4ad658:	00621026 	xor	v0,v1,v0
  4ad65c:	afc20024 	sw	v0,36(s8)
  4ad660:	8fc20020 	lw	v0,32(s8)
  4ad664:	00000000 	nop
  4ad668:	00021027 	nor	v0,zero,v0
  4ad66c:	afc20020 	sw	v0,32(s8)
      KEYMIX(r1,r3,r4,r2,r0,116);
  4ad670:	8fc20008 	lw	v0,8(s8)
  4ad674:	00000000 	nop
  4ad678:	244201f0 	addiu	v0,v0,496
  4ad67c:	8c430000 	lw	v1,0(v0)
  4ad680:	8fc20018 	lw	v0,24(s8)
  4ad684:	00000000 	nop
  4ad688:	00431026 	xor	v0,v0,v1
  4ad68c:	afc20018 	sw	v0,24(s8)
  4ad690:	8fc20008 	lw	v0,8(s8)
  4ad694:	00000000 	nop
  4ad698:	244201f4 	addiu	v0,v0,500
  4ad69c:	8c430000 	lw	v1,0(v0)
  4ad6a0:	8fc20020 	lw	v0,32(s8)
  4ad6a4:	00000000 	nop
  4ad6a8:	00431026 	xor	v0,v0,v1
  4ad6ac:	afc20020 	sw	v0,32(s8)
  4ad6b0:	8fc20008 	lw	v0,8(s8)
  4ad6b4:	00000000 	nop
  4ad6b8:	244201f8 	addiu	v0,v0,504
  4ad6bc:	8c430000 	lw	v1,0(v0)
  4ad6c0:	8fc20024 	lw	v0,36(s8)
  4ad6c4:	00000000 	nop
  4ad6c8:	00431026 	xor	v0,v0,v1
  4ad6cc:	afc20024 	sw	v0,36(s8)
  4ad6d0:	8fc20008 	lw	v0,8(s8)
  4ad6d4:	00000000 	nop
  4ad6d8:	244201fc 	addiu	v0,v0,508
  4ad6dc:	8c430000 	lw	v1,0(v0)
  4ad6e0:	8fc2001c 	lw	v0,28(s8)
  4ad6e4:	00000000 	nop
  4ad6e8:	00431026 	xor	v0,v0,v1
  4ad6ec:	afc2001c 	sw	v0,28(s8)

      /* round 4  */
      ILINTRANS(r1,r3,r4,r2,r0);
  4ad6f0:	8fc20024 	lw	v0,36(s8)
  4ad6f4:	00000000 	nop
  4ad6f8:	00021a80 	sll	v1,v0,0xa
  4ad6fc:	00021582 	srl	v0,v0,0x16
  4ad700:	00621025 	or	v0,v1,v0
  4ad704:	afc20024 	sw	v0,36(s8)
  4ad708:	8fc20018 	lw	v0,24(s8)
  4ad70c:	00000000 	nop
  4ad710:	00021ec0 	sll	v1,v0,0x1b
  4ad714:	00021142 	srl	v0,v0,0x5
  4ad718:	00621025 	or	v0,v1,v0
  4ad71c:	afc20018 	sw	v0,24(s8)
  4ad720:	8fc30024 	lw	v1,36(s8)
  4ad724:	8fc2001c 	lw	v0,28(s8)
  4ad728:	00000000 	nop
  4ad72c:	00621026 	xor	v0,v1,v0
  4ad730:	afc20024 	sw	v0,36(s8)
  4ad734:	8fc20020 	lw	v0,32(s8)
  4ad738:	00000000 	nop
  4ad73c:	000211c0 	sll	v0,v0,0x7
  4ad740:	afc20014 	sw	v0,20(s8)
  4ad744:	8fc30018 	lw	v1,24(s8)
  4ad748:	8fc20020 	lw	v0,32(s8)
  4ad74c:	00000000 	nop
  4ad750:	00621026 	xor	v0,v1,v0
  4ad754:	afc20018 	sw	v0,24(s8)
  4ad758:	8fc30024 	lw	v1,36(s8)
  4ad75c:	8fc20014 	lw	v0,20(s8)
  4ad760:	00000000 	nop
  4ad764:	00621026 	xor	v0,v1,v0
  4ad768:	afc20024 	sw	v0,36(s8)
  4ad76c:	8fc30018 	lw	v1,24(s8)
  4ad770:	8fc2001c 	lw	v0,28(s8)
  4ad774:	00000000 	nop
  4ad778:	00621026 	xor	v0,v1,v0
  4ad77c:	afc20018 	sw	v0,24(s8)
  4ad780:	8fc2001c 	lw	v0,28(s8)
  4ad784:	00000000 	nop
  4ad788:	00021e40 	sll	v1,v0,0x19
  4ad78c:	000211c2 	srl	v0,v0,0x7
  4ad790:	00621025 	or	v0,v1,v0
  4ad794:	afc2001c 	sw	v0,28(s8)
  4ad798:	8fc20020 	lw	v0,32(s8)
  4ad79c:	00000000 	nop
  4ad7a0:	00021fc0 	sll	v1,v0,0x1f
  4ad7a4:	00021042 	srl	v0,v0,0x1
  4ad7a8:	00621025 	or	v0,v1,v0
  4ad7ac:	afc20020 	sw	v0,32(s8)
  4ad7b0:	8fc3001c 	lw	v1,28(s8)
  4ad7b4:	8fc20024 	lw	v0,36(s8)
  4ad7b8:	00000000 	nop
  4ad7bc:	00621026 	xor	v0,v1,v0
  4ad7c0:	afc2001c 	sw	v0,28(s8)
  4ad7c4:	8fc20018 	lw	v0,24(s8)
  4ad7c8:	00000000 	nop
  4ad7cc:	000210c0 	sll	v0,v0,0x3
  4ad7d0:	afc20014 	sw	v0,20(s8)
  4ad7d4:	8fc30020 	lw	v1,32(s8)
  4ad7d8:	8fc20018 	lw	v0,24(s8)
  4ad7dc:	00000000 	nop
  4ad7e0:	00621026 	xor	v0,v1,v0
  4ad7e4:	afc20020 	sw	v0,32(s8)
  4ad7e8:	8fc3001c 	lw	v1,28(s8)
  4ad7ec:	8fc20014 	lw	v0,20(s8)
  4ad7f0:	00000000 	nop
  4ad7f4:	00621026 	xor	v0,v1,v0
  4ad7f8:	afc2001c 	sw	v0,28(s8)
  4ad7fc:	8fc30020 	lw	v1,32(s8)
  4ad800:	8fc20024 	lw	v0,36(s8)
  4ad804:	00000000 	nop
  4ad808:	00621026 	xor	v0,v1,v0
  4ad80c:	afc20020 	sw	v0,32(s8)
  4ad810:	8fc20024 	lw	v0,36(s8)
  4ad814:	00000000 	nop
  4ad818:	00021f40 	sll	v1,v0,0x1d
  4ad81c:	000210c2 	srl	v0,v0,0x3
  4ad820:	00621025 	or	v0,v1,v0
  4ad824:	afc20024 	sw	v0,36(s8)
  4ad828:	8fc20018 	lw	v0,24(s8)
  4ad82c:	00000000 	nop
  4ad830:	00021cc0 	sll	v1,v0,0x13
  4ad834:	00021342 	srl	v0,v0,0xd
  4ad838:	00621025 	or	v0,v1,v0
  4ad83c:	afc20018 	sw	v0,24(s8)
      I4(r1,r3,r4,r2,r0);
  4ad840:	8fc20024 	lw	v0,36(s8)
  4ad844:	00000000 	nop
  4ad848:	afc20014 	sw	v0,20(s8)
  4ad84c:	8fc30024 	lw	v1,36(s8)
  4ad850:	8fc2001c 	lw	v0,28(s8)
  4ad854:	00000000 	nop
  4ad858:	00621024 	and	v0,v1,v0
  4ad85c:	afc20024 	sw	v0,36(s8)
  4ad860:	8fc30024 	lw	v1,36(s8)
  4ad864:	8fc20020 	lw	v0,32(s8)
  4ad868:	00000000 	nop
  4ad86c:	00621026 	xor	v0,v1,v0
  4ad870:	afc20024 	sw	v0,36(s8)
  4ad874:	8fc30020 	lw	v1,32(s8)
  4ad878:	8fc2001c 	lw	v0,28(s8)
  4ad87c:	00000000 	nop
  4ad880:	00621025 	or	v0,v1,v0
  4ad884:	afc20020 	sw	v0,32(s8)
  4ad888:	8fc30020 	lw	v1,32(s8)
  4ad88c:	8fc20018 	lw	v0,24(s8)
  4ad890:	00000000 	nop
  4ad894:	00621024 	and	v0,v1,v0
  4ad898:	afc20020 	sw	v0,32(s8)
  4ad89c:	8fc30014 	lw	v1,20(s8)
  4ad8a0:	8fc20024 	lw	v0,36(s8)
  4ad8a4:	00000000 	nop
  4ad8a8:	00621026 	xor	v0,v1,v0
  4ad8ac:	afc20014 	sw	v0,20(s8)
  4ad8b0:	8fc30014 	lw	v1,20(s8)
  4ad8b4:	8fc20020 	lw	v0,32(s8)
  4ad8b8:	00000000 	nop
  4ad8bc:	00621026 	xor	v0,v1,v0
  4ad8c0:	afc20014 	sw	v0,20(s8)
  4ad8c4:	8fc30020 	lw	v1,32(s8)
  4ad8c8:	8fc20024 	lw	v0,36(s8)
  4ad8cc:	00000000 	nop
  4ad8d0:	00621024 	and	v0,v1,v0
  4ad8d4:	afc20020 	sw	v0,32(s8)
  4ad8d8:	8fc20018 	lw	v0,24(s8)
  4ad8dc:	00000000 	nop
  4ad8e0:	00021027 	nor	v0,zero,v0
  4ad8e4:	afc20018 	sw	v0,24(s8)
  4ad8e8:	8fc3001c 	lw	v1,28(s8)
  4ad8ec:	8fc20014 	lw	v0,20(s8)
  4ad8f0:	00000000 	nop
  4ad8f4:	00621026 	xor	v0,v1,v0
  4ad8f8:	afc2001c 	sw	v0,28(s8)
  4ad8fc:	8fc30020 	lw	v1,32(s8)
  4ad900:	8fc2001c 	lw	v0,28(s8)
  4ad904:	00000000 	nop
  4ad908:	00621026 	xor	v0,v1,v0
  4ad90c:	afc20020 	sw	v0,32(s8)
  4ad910:	8fc3001c 	lw	v1,28(s8)
  4ad914:	8fc20018 	lw	v0,24(s8)
  4ad918:	00000000 	nop
  4ad91c:	00621024 	and	v0,v1,v0
  4ad920:	afc2001c 	sw	v0,28(s8)
  4ad924:	8fc3001c 	lw	v1,28(s8)
  4ad928:	8fc20024 	lw	v0,36(s8)
  4ad92c:	00000000 	nop
  4ad930:	00621026 	xor	v0,v1,v0
  4ad934:	afc2001c 	sw	v0,28(s8)
  4ad938:	8fc30018 	lw	v1,24(s8)
  4ad93c:	8fc20020 	lw	v0,32(s8)
  4ad940:	00000000 	nop
  4ad944:	00621026 	xor	v0,v1,v0
  4ad948:	afc20018 	sw	v0,24(s8)
  4ad94c:	8fc30024 	lw	v1,36(s8)
  4ad950:	8fc20018 	lw	v0,24(s8)
  4ad954:	00000000 	nop
  4ad958:	00621024 	and	v0,v1,v0
  4ad95c:	afc20024 	sw	v0,36(s8)
  4ad960:	8fc3001c 	lw	v1,28(s8)
  4ad964:	8fc20018 	lw	v0,24(s8)
  4ad968:	00000000 	nop
  4ad96c:	00621026 	xor	v0,v1,v0
  4ad970:	afc2001c 	sw	v0,28(s8)
  4ad974:	8fc30024 	lw	v1,36(s8)
  4ad978:	8fc20014 	lw	v0,20(s8)
  4ad97c:	00000000 	nop
  4ad980:	00621026 	xor	v0,v1,v0
  4ad984:	afc20024 	sw	v0,36(s8)
  4ad988:	8fc30024 	lw	v1,36(s8)
  4ad98c:	8fc2001c 	lw	v0,28(s8)
  4ad990:	00000000 	nop
  4ad994:	00621025 	or	v0,v1,v0
  4ad998:	afc20024 	sw	v0,36(s8)
  4ad99c:	8fc3001c 	lw	v1,28(s8)
  4ad9a0:	8fc20018 	lw	v0,24(s8)
  4ad9a4:	00000000 	nop
  4ad9a8:	00621026 	xor	v0,v1,v0
  4ad9ac:	afc2001c 	sw	v0,28(s8)
  4ad9b0:	8fc30024 	lw	v1,36(s8)
  4ad9b4:	8fc20020 	lw	v0,32(s8)
  4ad9b8:	00000000 	nop
  4ad9bc:	00621026 	xor	v0,v1,v0
  4ad9c0:	afc20024 	sw	v0,36(s8)
      KEYMIX(r1,r2,r4,r0,r3,112);
  4ad9c4:	8fc20008 	lw	v0,8(s8)
  4ad9c8:	00000000 	nop
  4ad9cc:	244201e0 	addiu	v0,v0,480
  4ad9d0:	8c430000 	lw	v1,0(v0)
  4ad9d4:	8fc20018 	lw	v0,24(s8)
  4ad9d8:	00000000 	nop
  4ad9dc:	00431026 	xor	v0,v0,v1
  4ad9e0:	afc20018 	sw	v0,24(s8)
  4ad9e4:	8fc20008 	lw	v0,8(s8)
  4ad9e8:	00000000 	nop
  4ad9ec:	244201e4 	addiu	v0,v0,484
  4ad9f0:	8c430000 	lw	v1,0(v0)
  4ad9f4:	8fc2001c 	lw	v0,28(s8)
  4ad9f8:	00000000 	nop
  4ad9fc:	00431026 	xor	v0,v0,v1
  4ada00:	afc2001c 	sw	v0,28(s8)
  4ada04:	8fc20008 	lw	v0,8(s8)
  4ada08:	00000000 	nop
  4ada0c:	244201e8 	addiu	v0,v0,488
  4ada10:	8c430000 	lw	v1,0(v0)
  4ada14:	8fc20024 	lw	v0,36(s8)
  4ada18:	00000000 	nop
  4ada1c:	00431026 	xor	v0,v0,v1
  4ada20:	afc20024 	sw	v0,36(s8)
  4ada24:	8fc20008 	lw	v0,8(s8)
  4ada28:	00000000 	nop
  4ada2c:	244201ec 	addiu	v0,v0,492
  4ada30:	8c430000 	lw	v1,0(v0)
  4ada34:	8fc20014 	lw	v0,20(s8)
  4ada38:	00000000 	nop
  4ada3c:	00431026 	xor	v0,v0,v1
  4ada40:	afc20014 	sw	v0,20(s8)

      /* round 5  */
      ILINTRANS(r1,r2,r4,r0,r3);
  4ada44:	8fc20024 	lw	v0,36(s8)
  4ada48:	00000000 	nop
  4ada4c:	00021a80 	sll	v1,v0,0xa
  4ada50:	00021582 	srl	v0,v0,0x16
  4ada54:	00621025 	or	v0,v1,v0
  4ada58:	afc20024 	sw	v0,36(s8)
  4ada5c:	8fc20018 	lw	v0,24(s8)
  4ada60:	00000000 	nop
  4ada64:	00021ec0 	sll	v1,v0,0x1b
  4ada68:	00021142 	srl	v0,v0,0x5
  4ada6c:	00621025 	or	v0,v1,v0
  4ada70:	afc20018 	sw	v0,24(s8)
  4ada74:	8fc30024 	lw	v1,36(s8)
  4ada78:	8fc20014 	lw	v0,20(s8)
  4ada7c:	00000000 	nop
  4ada80:	00621026 	xor	v0,v1,v0
  4ada84:	afc20024 	sw	v0,36(s8)
  4ada88:	8fc2001c 	lw	v0,28(s8)
  4ada8c:	00000000 	nop
  4ada90:	000211c0 	sll	v0,v0,0x7
  4ada94:	afc20020 	sw	v0,32(s8)
  4ada98:	8fc30018 	lw	v1,24(s8)
  4ada9c:	8fc2001c 	lw	v0,28(s8)
  4adaa0:	00000000 	nop
  4adaa4:	00621026 	xor	v0,v1,v0
  4adaa8:	afc20018 	sw	v0,24(s8)
  4adaac:	8fc30024 	lw	v1,36(s8)
  4adab0:	8fc20020 	lw	v0,32(s8)
  4adab4:	00000000 	nop
  4adab8:	00621026 	xor	v0,v1,v0
  4adabc:	afc20024 	sw	v0,36(s8)
  4adac0:	8fc30018 	lw	v1,24(s8)
  4adac4:	8fc20014 	lw	v0,20(s8)
  4adac8:	00000000 	nop
  4adacc:	00621026 	xor	v0,v1,v0
  4adad0:	afc20018 	sw	v0,24(s8)
  4adad4:	8fc20014 	lw	v0,20(s8)
  4adad8:	00000000 	nop
  4adadc:	00021e40 	sll	v1,v0,0x19
  4adae0:	000211c2 	srl	v0,v0,0x7
  4adae4:	00621025 	or	v0,v1,v0
  4adae8:	afc20014 	sw	v0,20(s8)
  4adaec:	8fc2001c 	lw	v0,28(s8)
  4adaf0:	00000000 	nop
  4adaf4:	00021fc0 	sll	v1,v0,0x1f
  4adaf8:	00021042 	srl	v0,v0,0x1
  4adafc:	00621025 	or	v0,v1,v0
  4adb00:	afc2001c 	sw	v0,28(s8)
  4adb04:	8fc30014 	lw	v1,20(s8)
  4adb08:	8fc20024 	lw	v0,36(s8)
  4adb0c:	00000000 	nop
  4adb10:	00621026 	xor	v0,v1,v0
  4adb14:	afc20014 	sw	v0,20(s8)
  4adb18:	8fc20018 	lw	v0,24(s8)
  4adb1c:	00000000 	nop
  4adb20:	000210c0 	sll	v0,v0,0x3
  4adb24:	afc20020 	sw	v0,32(s8)
  4adb28:	8fc3001c 	lw	v1,28(s8)
  4adb2c:	8fc20018 	lw	v0,24(s8)
  4adb30:	00000000 	nop
  4adb34:	00621026 	xor	v0,v1,v0
  4adb38:	afc2001c 	sw	v0,28(s8)
  4adb3c:	8fc30014 	lw	v1,20(s8)
  4adb40:	8fc20020 	lw	v0,32(s8)
  4adb44:	00000000 	nop
  4adb48:	00621026 	xor	v0,v1,v0
  4adb4c:	afc20014 	sw	v0,20(s8)
  4adb50:	8fc3001c 	lw	v1,28(s8)
  4adb54:	8fc20024 	lw	v0,36(s8)
  4adb58:	00000000 	nop
  4adb5c:	00621026 	xor	v0,v1,v0
  4adb60:	afc2001c 	sw	v0,28(s8)
  4adb64:	8fc20024 	lw	v0,36(s8)
  4adb68:	00000000 	nop
  4adb6c:	00021f40 	sll	v1,v0,0x1d
  4adb70:	000210c2 	srl	v0,v0,0x3
  4adb74:	00621025 	or	v0,v1,v0
  4adb78:	afc20024 	sw	v0,36(s8)
  4adb7c:	8fc20018 	lw	v0,24(s8)
  4adb80:	00000000 	nop
  4adb84:	00021cc0 	sll	v1,v0,0x13
  4adb88:	00021342 	srl	v0,v0,0xd
  4adb8c:	00621025 	or	v0,v1,v0
  4adb90:	afc20018 	sw	v0,24(s8)
      I3(r1,r2,r4,r0,r3);
  4adb94:	8fc20024 	lw	v0,36(s8)
  4adb98:	00000000 	nop
  4adb9c:	afc20020 	sw	v0,32(s8)
  4adba0:	8fc30024 	lw	v1,36(s8)
  4adba4:	8fc2001c 	lw	v0,28(s8)
  4adba8:	00000000 	nop
  4adbac:	00621026 	xor	v0,v1,v0
  4adbb0:	afc20024 	sw	v0,36(s8)
  4adbb4:	8fc30018 	lw	v1,24(s8)
  4adbb8:	8fc20024 	lw	v0,36(s8)
  4adbbc:	00000000 	nop
  4adbc0:	00621026 	xor	v0,v1,v0
  4adbc4:	afc20018 	sw	v0,24(s8)
  4adbc8:	8fc30020 	lw	v1,32(s8)
  4adbcc:	8fc20024 	lw	v0,36(s8)
  4adbd0:	00000000 	nop
  4adbd4:	00621024 	and	v0,v1,v0
  4adbd8:	afc20020 	sw	v0,32(s8)
  4adbdc:	8fc30020 	lw	v1,32(s8)
  4adbe0:	8fc20018 	lw	v0,24(s8)
  4adbe4:	00000000 	nop
  4adbe8:	00621026 	xor	v0,v1,v0
  4adbec:	afc20020 	sw	v0,32(s8)
  4adbf0:	8fc30018 	lw	v1,24(s8)
  4adbf4:	8fc2001c 	lw	v0,28(s8)
  4adbf8:	00000000 	nop
  4adbfc:	00621024 	and	v0,v1,v0
  4adc00:	afc20018 	sw	v0,24(s8)
  4adc04:	8fc3001c 	lw	v1,28(s8)
  4adc08:	8fc20014 	lw	v0,20(s8)
  4adc0c:	00000000 	nop
  4adc10:	00621026 	xor	v0,v1,v0
  4adc14:	afc2001c 	sw	v0,28(s8)
  4adc18:	8fc30014 	lw	v1,20(s8)
  4adc1c:	8fc20020 	lw	v0,32(s8)
  4adc20:	00000000 	nop
  4adc24:	00621025 	or	v0,v1,v0
  4adc28:	afc20014 	sw	v0,20(s8)
  4adc2c:	8fc30024 	lw	v1,36(s8)
  4adc30:	8fc20014 	lw	v0,20(s8)
  4adc34:	00000000 	nop
  4adc38:	00621026 	xor	v0,v1,v0
  4adc3c:	afc20024 	sw	v0,36(s8)
  4adc40:	8fc30018 	lw	v1,24(s8)
  4adc44:	8fc20014 	lw	v0,20(s8)
  4adc48:	00000000 	nop
  4adc4c:	00621026 	xor	v0,v1,v0
  4adc50:	afc20018 	sw	v0,24(s8)
  4adc54:	8fc3001c 	lw	v1,28(s8)
  4adc58:	8fc20020 	lw	v0,32(s8)
  4adc5c:	00000000 	nop
  4adc60:	00621026 	xor	v0,v1,v0
  4adc64:	afc2001c 	sw	v0,28(s8)
  4adc68:	8fc30014 	lw	v1,20(s8)
  4adc6c:	8fc20024 	lw	v0,36(s8)
  4adc70:	00000000 	nop
  4adc74:	00621024 	and	v0,v1,v0
  4adc78:	afc20014 	sw	v0,20(s8)
  4adc7c:	8fc30014 	lw	v1,20(s8)
  4adc80:	8fc2001c 	lw	v0,28(s8)
  4adc84:	00000000 	nop
  4adc88:	00621026 	xor	v0,v1,v0
  4adc8c:	afc20014 	sw	v0,20(s8)
  4adc90:	8fc3001c 	lw	v1,28(s8)
  4adc94:	8fc20018 	lw	v0,24(s8)
  4adc98:	00000000 	nop
  4adc9c:	00621026 	xor	v0,v1,v0
  4adca0:	afc2001c 	sw	v0,28(s8)
  4adca4:	8fc3001c 	lw	v1,28(s8)
  4adca8:	8fc20024 	lw	v0,36(s8)
  4adcac:	00000000 	nop
  4adcb0:	00621025 	or	v0,v1,v0
  4adcb4:	afc2001c 	sw	v0,28(s8)
  4adcb8:	8fc30018 	lw	v1,24(s8)
  4adcbc:	8fc20014 	lw	v0,20(s8)
  4adcc0:	00000000 	nop
  4adcc4:	00621026 	xor	v0,v1,v0
  4adcc8:	afc20018 	sw	v0,24(s8)
  4adccc:	8fc3001c 	lw	v1,28(s8)
  4adcd0:	8fc20020 	lw	v0,32(s8)
  4adcd4:	00000000 	nop
  4adcd8:	00621026 	xor	v0,v1,v0
  4adcdc:	afc2001c 	sw	v0,28(s8)
  4adce0:	8fc30018 	lw	v1,24(s8)
  4adce4:	8fc2001c 	lw	v0,28(s8)
  4adce8:	00000000 	nop
  4adcec:	00621026 	xor	v0,v1,v0
  4adcf0:	afc20018 	sw	v0,24(s8)
      KEYMIX(r4,r2,r0,r1,r3,108);
  4adcf4:	8fc20008 	lw	v0,8(s8)
  4adcf8:	00000000 	nop
  4adcfc:	244201d0 	addiu	v0,v0,464
  4add00:	8c430000 	lw	v1,0(v0)
  4add04:	8fc20024 	lw	v0,36(s8)
  4add08:	00000000 	nop
  4add0c:	00431026 	xor	v0,v0,v1
  4add10:	afc20024 	sw	v0,36(s8)
  4add14:	8fc20008 	lw	v0,8(s8)
  4add18:	00000000 	nop
  4add1c:	244201d4 	addiu	v0,v0,468
  4add20:	8c430000 	lw	v1,0(v0)
  4add24:	8fc2001c 	lw	v0,28(s8)
  4add28:	00000000 	nop
  4add2c:	00431026 	xor	v0,v0,v1
  4add30:	afc2001c 	sw	v0,28(s8)
  4add34:	8fc20008 	lw	v0,8(s8)
  4add38:	00000000 	nop
  4add3c:	244201d8 	addiu	v0,v0,472
  4add40:	8c430000 	lw	v1,0(v0)
  4add44:	8fc20014 	lw	v0,20(s8)
  4add48:	00000000 	nop
  4add4c:	00431026 	xor	v0,v0,v1
  4add50:	afc20014 	sw	v0,20(s8)
  4add54:	8fc20008 	lw	v0,8(s8)
  4add58:	00000000 	nop
  4add5c:	244201dc 	addiu	v0,v0,476
  4add60:	8c430000 	lw	v1,0(v0)
  4add64:	8fc20018 	lw	v0,24(s8)
  4add68:	00000000 	nop
  4add6c:	00431026 	xor	v0,v0,v1
  4add70:	afc20018 	sw	v0,24(s8)

      /* round 6  */
      ILINTRANS(r4,r2,r0,r1,r3);
  4add74:	8fc20014 	lw	v0,20(s8)
  4add78:	00000000 	nop
  4add7c:	00021a80 	sll	v1,v0,0xa
  4add80:	00021582 	srl	v0,v0,0x16
  4add84:	00621025 	or	v0,v1,v0
  4add88:	afc20014 	sw	v0,20(s8)
  4add8c:	8fc20024 	lw	v0,36(s8)
  4add90:	00000000 	nop
  4add94:	00021ec0 	sll	v1,v0,0x1b
  4add98:	00021142 	srl	v0,v0,0x5
  4add9c:	00621025 	or	v0,v1,v0
  4adda0:	afc20024 	sw	v0,36(s8)
  4adda4:	8fc30014 	lw	v1,20(s8)
  4adda8:	8fc20018 	lw	v0,24(s8)
  4addac:	00000000 	nop
  4addb0:	00621026 	xor	v0,v1,v0
  4addb4:	afc20014 	sw	v0,20(s8)
  4addb8:	8fc2001c 	lw	v0,28(s8)
  4addbc:	00000000 	nop
  4addc0:	000211c0 	sll	v0,v0,0x7
  4addc4:	afc20020 	sw	v0,32(s8)
  4addc8:	8fc30024 	lw	v1,36(s8)
  4addcc:	8fc2001c 	lw	v0,28(s8)
  4addd0:	00000000 	nop
  4addd4:	00621026 	xor	v0,v1,v0
  4addd8:	afc20024 	sw	v0,36(s8)
  4adddc:	8fc30014 	lw	v1,20(s8)
  4adde0:	8fc20020 	lw	v0,32(s8)
  4adde4:	00000000 	nop
  4adde8:	00621026 	xor	v0,v1,v0
  4addec:	afc20014 	sw	v0,20(s8)
  4addf0:	8fc30024 	lw	v1,36(s8)
  4addf4:	8fc20018 	lw	v0,24(s8)
  4addf8:	00000000 	nop
  4addfc:	00621026 	xor	v0,v1,v0
  4ade00:	afc20024 	sw	v0,36(s8)
  4ade04:	8fc20018 	lw	v0,24(s8)
  4ade08:	00000000 	nop
  4ade0c:	00021e40 	sll	v1,v0,0x19
  4ade10:	000211c2 	srl	v0,v0,0x7
  4ade14:	00621025 	or	v0,v1,v0
  4ade18:	afc20018 	sw	v0,24(s8)
  4ade1c:	8fc2001c 	lw	v0,28(s8)
  4ade20:	00000000 	nop
  4ade24:	00021fc0 	sll	v1,v0,0x1f
  4ade28:	00021042 	srl	v0,v0,0x1
  4ade2c:	00621025 	or	v0,v1,v0
  4ade30:	afc2001c 	sw	v0,28(s8)
  4ade34:	8fc30018 	lw	v1,24(s8)
  4ade38:	8fc20014 	lw	v0,20(s8)
  4ade3c:	00000000 	nop
  4ade40:	00621026 	xor	v0,v1,v0
  4ade44:	afc20018 	sw	v0,24(s8)
  4ade48:	8fc20024 	lw	v0,36(s8)
  4ade4c:	00000000 	nop
  4ade50:	000210c0 	sll	v0,v0,0x3
  4ade54:	afc20020 	sw	v0,32(s8)
  4ade58:	8fc3001c 	lw	v1,28(s8)
  4ade5c:	8fc20024 	lw	v0,36(s8)
  4ade60:	00000000 	nop
  4ade64:	00621026 	xor	v0,v1,v0
  4ade68:	afc2001c 	sw	v0,28(s8)
  4ade6c:	8fc30018 	lw	v1,24(s8)
  4ade70:	8fc20020 	lw	v0,32(s8)
  4ade74:	00000000 	nop
  4ade78:	00621026 	xor	v0,v1,v0
  4ade7c:	afc20018 	sw	v0,24(s8)
  4ade80:	8fc3001c 	lw	v1,28(s8)
  4ade84:	8fc20014 	lw	v0,20(s8)
  4ade88:	00000000 	nop
  4ade8c:	00621026 	xor	v0,v1,v0
  4ade90:	afc2001c 	sw	v0,28(s8)
  4ade94:	8fc20014 	lw	v0,20(s8)
  4ade98:	00000000 	nop
  4ade9c:	00021f40 	sll	v1,v0,0x1d
  4adea0:	000210c2 	srl	v0,v0,0x3
  4adea4:	00621025 	or	v0,v1,v0
  4adea8:	afc20014 	sw	v0,20(s8)
  4adeac:	8fc20024 	lw	v0,36(s8)
  4adeb0:	00000000 	nop
  4adeb4:	00021cc0 	sll	v1,v0,0x13
  4adeb8:	00021342 	srl	v0,v0,0xd
  4adebc:	00621025 	or	v0,v1,v0
  4adec0:	afc20024 	sw	v0,36(s8)
      I2(r4,r2,r0,r1,r3);
  4adec4:	8fc30014 	lw	v1,20(s8)
  4adec8:	8fc20018 	lw	v0,24(s8)
  4adecc:	00000000 	nop
  4aded0:	00621026 	xor	v0,v1,v0
  4aded4:	afc20014 	sw	v0,20(s8)
  4aded8:	8fc30018 	lw	v1,24(s8)
  4adedc:	8fc20024 	lw	v0,36(s8)
  4adee0:	00000000 	nop
  4adee4:	00621026 	xor	v0,v1,v0
  4adee8:	afc20018 	sw	v0,24(s8)
  4adeec:	8fc20018 	lw	v0,24(s8)
  4adef0:	00000000 	nop
  4adef4:	afc20020 	sw	v0,32(s8)
  4adef8:	8fc30018 	lw	v1,24(s8)
  4adefc:	8fc20014 	lw	v0,20(s8)
  4adf00:	00000000 	nop
  4adf04:	00621024 	and	v0,v1,v0
  4adf08:	afc20018 	sw	v0,24(s8)
  4adf0c:	8fc30018 	lw	v1,24(s8)
  4adf10:	8fc2001c 	lw	v0,28(s8)
  4adf14:	00000000 	nop
  4adf18:	00621026 	xor	v0,v1,v0
  4adf1c:	afc20018 	sw	v0,24(s8)
  4adf20:	8fc3001c 	lw	v1,28(s8)
  4adf24:	8fc20014 	lw	v0,20(s8)
  4adf28:	00000000 	nop
  4adf2c:	00621025 	or	v0,v1,v0
  4adf30:	afc2001c 	sw	v0,28(s8)
  4adf34:	8fc3001c 	lw	v1,28(s8)
  4adf38:	8fc20020 	lw	v0,32(s8)
  4adf3c:	00000000 	nop
  4adf40:	00621026 	xor	v0,v1,v0
  4adf44:	afc2001c 	sw	v0,28(s8)
  4adf48:	8fc30020 	lw	v1,32(s8)
  4adf4c:	8fc20018 	lw	v0,24(s8)
  4adf50:	00000000 	nop
  4adf54:	00621024 	and	v0,v1,v0
  4adf58:	afc20020 	sw	v0,32(s8)
  4adf5c:	8fc30014 	lw	v1,20(s8)
  4adf60:	8fc20018 	lw	v0,24(s8)
  4adf64:	00000000 	nop
  4adf68:	00621026 	xor	v0,v1,v0
  4adf6c:	afc20014 	sw	v0,20(s8)
  4adf70:	8fc30020 	lw	v1,32(s8)
  4adf74:	8fc20024 	lw	v0,36(s8)
  4adf78:	00000000 	nop
  4adf7c:	00621024 	and	v0,v1,v0
  4adf80:	afc20020 	sw	v0,32(s8)
  4adf84:	8fc30020 	lw	v1,32(s8)
  4adf88:	8fc20014 	lw	v0,20(s8)
  4adf8c:	00000000 	nop
  4adf90:	00621026 	xor	v0,v1,v0
  4adf94:	afc20020 	sw	v0,32(s8)
  4adf98:	8fc30014 	lw	v1,20(s8)
  4adf9c:	8fc2001c 	lw	v0,28(s8)
  4adfa0:	00000000 	nop
  4adfa4:	00621024 	and	v0,v1,v0
  4adfa8:	afc20014 	sw	v0,20(s8)
  4adfac:	8fc30014 	lw	v1,20(s8)
  4adfb0:	8fc20024 	lw	v0,36(s8)
  4adfb4:	00000000 	nop
  4adfb8:	00621025 	or	v0,v1,v0
  4adfbc:	afc20014 	sw	v0,20(s8)
  4adfc0:	8fc20018 	lw	v0,24(s8)
  4adfc4:	00000000 	nop
  4adfc8:	00021027 	nor	v0,zero,v0
  4adfcc:	afc20018 	sw	v0,24(s8)
  4adfd0:	8fc30014 	lw	v1,20(s8)
  4adfd4:	8fc20018 	lw	v0,24(s8)
  4adfd8:	00000000 	nop
  4adfdc:	00621026 	xor	v0,v1,v0
  4adfe0:	afc20014 	sw	v0,20(s8)
  4adfe4:	8fc30024 	lw	v1,36(s8)
  4adfe8:	8fc20018 	lw	v0,24(s8)
  4adfec:	00000000 	nop
  4adff0:	00621026 	xor	v0,v1,v0
  4adff4:	afc20024 	sw	v0,36(s8)
  4adff8:	8fc30024 	lw	v1,36(s8)
  4adffc:	8fc2001c 	lw	v0,28(s8)
  4ae000:	00000000 	nop
  4ae004:	00621024 	and	v0,v1,v0
  4ae008:	afc20024 	sw	v0,36(s8)
  4ae00c:	8fc30018 	lw	v1,24(s8)
  4ae010:	8fc20020 	lw	v0,32(s8)
  4ae014:	00000000 	nop
  4ae018:	00621026 	xor	v0,v1,v0
  4ae01c:	afc20018 	sw	v0,24(s8)
  4ae020:	8fc30018 	lw	v1,24(s8)
  4ae024:	8fc20024 	lw	v0,36(s8)
  4ae028:	00000000 	nop
  4ae02c:	00621026 	xor	v0,v1,v0
  4ae030:	afc20018 	sw	v0,24(s8)
      KEYMIX(r2,r3,r0,r1,r4,104);
  4ae034:	8fc20008 	lw	v0,8(s8)
  4ae038:	00000000 	nop
  4ae03c:	244201c0 	addiu	v0,v0,448
  4ae040:	8c430000 	lw	v1,0(v0)
  4ae044:	8fc2001c 	lw	v0,28(s8)
  4ae048:	00000000 	nop
  4ae04c:	00431026 	xor	v0,v0,v1
  4ae050:	afc2001c 	sw	v0,28(s8)
  4ae054:	8fc20008 	lw	v0,8(s8)
  4ae058:	00000000 	nop
  4ae05c:	244201c4 	addiu	v0,v0,452
  4ae060:	8c430000 	lw	v1,0(v0)
  4ae064:	8fc20020 	lw	v0,32(s8)
  4ae068:	00000000 	nop
  4ae06c:	00431026 	xor	v0,v0,v1
  4ae070:	afc20020 	sw	v0,32(s8)
  4ae074:	8fc20008 	lw	v0,8(s8)
  4ae078:	00000000 	nop
  4ae07c:	244201c8 	addiu	v0,v0,456
  4ae080:	8c430000 	lw	v1,0(v0)
  4ae084:	8fc20014 	lw	v0,20(s8)
  4ae088:	00000000 	nop
  4ae08c:	00431026 	xor	v0,v0,v1
  4ae090:	afc20014 	sw	v0,20(s8)
  4ae094:	8fc20008 	lw	v0,8(s8)
  4ae098:	00000000 	nop
  4ae09c:	244201cc 	addiu	v0,v0,460
  4ae0a0:	8c430000 	lw	v1,0(v0)
  4ae0a4:	8fc20018 	lw	v0,24(s8)
  4ae0a8:	00000000 	nop
  4ae0ac:	00431026 	xor	v0,v0,v1
  4ae0b0:	afc20018 	sw	v0,24(s8)

      /* round 7  */
      ILINTRANS(r2,r3,r0,r1,r4);
  4ae0b4:	8fc20014 	lw	v0,20(s8)
  4ae0b8:	00000000 	nop
  4ae0bc:	00021a80 	sll	v1,v0,0xa
  4ae0c0:	00021582 	srl	v0,v0,0x16
  4ae0c4:	00621025 	or	v0,v1,v0
  4ae0c8:	afc20014 	sw	v0,20(s8)
  4ae0cc:	8fc2001c 	lw	v0,28(s8)
  4ae0d0:	00000000 	nop
  4ae0d4:	00021ec0 	sll	v1,v0,0x1b
  4ae0d8:	00021142 	srl	v0,v0,0x5
  4ae0dc:	00621025 	or	v0,v1,v0
  4ae0e0:	afc2001c 	sw	v0,28(s8)
  4ae0e4:	8fc30014 	lw	v1,20(s8)
  4ae0e8:	8fc20018 	lw	v0,24(s8)
  4ae0ec:	00000000 	nop
  4ae0f0:	00621026 	xor	v0,v1,v0
  4ae0f4:	afc20014 	sw	v0,20(s8)
  4ae0f8:	8fc20020 	lw	v0,32(s8)
  4ae0fc:	00000000 	nop
  4ae100:	000211c0 	sll	v0,v0,0x7
  4ae104:	afc20024 	sw	v0,36(s8)
  4ae108:	8fc3001c 	lw	v1,28(s8)
  4ae10c:	8fc20020 	lw	v0,32(s8)
  4ae110:	00000000 	nop
  4ae114:	00621026 	xor	v0,v1,v0
  4ae118:	afc2001c 	sw	v0,28(s8)
  4ae11c:	8fc30014 	lw	v1,20(s8)
  4ae120:	8fc20024 	lw	v0,36(s8)
  4ae124:	00000000 	nop
  4ae128:	00621026 	xor	v0,v1,v0
  4ae12c:	afc20014 	sw	v0,20(s8)
  4ae130:	8fc3001c 	lw	v1,28(s8)
  4ae134:	8fc20018 	lw	v0,24(s8)
  4ae138:	00000000 	nop
  4ae13c:	00621026 	xor	v0,v1,v0
  4ae140:	afc2001c 	sw	v0,28(s8)
  4ae144:	8fc20018 	lw	v0,24(s8)
  4ae148:	00000000 	nop
  4ae14c:	00021e40 	sll	v1,v0,0x19
  4ae150:	000211c2 	srl	v0,v0,0x7
  4ae154:	00621025 	or	v0,v1,v0
  4ae158:	afc20018 	sw	v0,24(s8)
  4ae15c:	8fc20020 	lw	v0,32(s8)
  4ae160:	00000000 	nop
  4ae164:	00021fc0 	sll	v1,v0,0x1f
  4ae168:	00021042 	srl	v0,v0,0x1
  4ae16c:	00621025 	or	v0,v1,v0
  4ae170:	afc20020 	sw	v0,32(s8)
  4ae174:	8fc30018 	lw	v1,24(s8)
  4ae178:	8fc20014 	lw	v0,20(s8)
  4ae17c:	00000000 	nop
  4ae180:	00621026 	xor	v0,v1,v0
  4ae184:	afc20018 	sw	v0,24(s8)
  4ae188:	8fc2001c 	lw	v0,28(s8)
  4ae18c:	00000000 	nop
  4ae190:	000210c0 	sll	v0,v0,0x3
  4ae194:	afc20024 	sw	v0,36(s8)
  4ae198:	8fc30020 	lw	v1,32(s8)
  4ae19c:	8fc2001c 	lw	v0,28(s8)
  4ae1a0:	00000000 	nop
  4ae1a4:	00621026 	xor	v0,v1,v0
  4ae1a8:	afc20020 	sw	v0,32(s8)
  4ae1ac:	8fc30018 	lw	v1,24(s8)
  4ae1b0:	8fc20024 	lw	v0,36(s8)
  4ae1b4:	00000000 	nop
  4ae1b8:	00621026 	xor	v0,v1,v0
  4ae1bc:	afc20018 	sw	v0,24(s8)
  4ae1c0:	8fc30020 	lw	v1,32(s8)
  4ae1c4:	8fc20014 	lw	v0,20(s8)
  4ae1c8:	00000000 	nop
  4ae1cc:	00621026 	xor	v0,v1,v0
  4ae1d0:	afc20020 	sw	v0,32(s8)
  4ae1d4:	8fc20014 	lw	v0,20(s8)
  4ae1d8:	00000000 	nop
  4ae1dc:	00021f40 	sll	v1,v0,0x1d
  4ae1e0:	000210c2 	srl	v0,v0,0x3
  4ae1e4:	00621025 	or	v0,v1,v0
  4ae1e8:	afc20014 	sw	v0,20(s8)
  4ae1ec:	8fc2001c 	lw	v0,28(s8)
  4ae1f0:	00000000 	nop
  4ae1f4:	00021cc0 	sll	v1,v0,0x13
  4ae1f8:	00021342 	srl	v0,v0,0xd
  4ae1fc:	00621025 	or	v0,v1,v0
  4ae200:	afc2001c 	sw	v0,28(s8)
      I1(r2,r3,r0,r1,r4);
  4ae204:	8fc20020 	lw	v0,32(s8)
  4ae208:	00000000 	nop
  4ae20c:	afc20024 	sw	v0,36(s8)
  4ae210:	8fc30020 	lw	v1,32(s8)
  4ae214:	8fc20018 	lw	v0,24(s8)
  4ae218:	00000000 	nop
  4ae21c:	00621026 	xor	v0,v1,v0
  4ae220:	afc20020 	sw	v0,32(s8)
  4ae224:	8fc30018 	lw	v1,24(s8)
  4ae228:	8fc20020 	lw	v0,32(s8)
  4ae22c:	00000000 	nop
  4ae230:	00621024 	and	v0,v1,v0
  4ae234:	afc20018 	sw	v0,24(s8)
  4ae238:	8fc30024 	lw	v1,36(s8)
  4ae23c:	8fc20014 	lw	v0,20(s8)
  4ae240:	00000000 	nop
  4ae244:	00621026 	xor	v0,v1,v0
  4ae248:	afc20024 	sw	v0,36(s8)
  4ae24c:	8fc30018 	lw	v1,24(s8)
  4ae250:	8fc2001c 	lw	v0,28(s8)
  4ae254:	00000000 	nop
  4ae258:	00621026 	xor	v0,v1,v0
  4ae25c:	afc20018 	sw	v0,24(s8)
  4ae260:	8fc3001c 	lw	v1,28(s8)
  4ae264:	8fc20020 	lw	v0,32(s8)
  4ae268:	00000000 	nop
  4ae26c:	00621025 	or	v0,v1,v0
  4ae270:	afc2001c 	sw	v0,28(s8)
  4ae274:	8fc30014 	lw	v1,20(s8)
  4ae278:	8fc20018 	lw	v0,24(s8)
  4ae27c:	00000000 	nop
  4ae280:	00621026 	xor	v0,v1,v0
  4ae284:	afc20014 	sw	v0,20(s8)
  4ae288:	8fc3001c 	lw	v1,28(s8)
  4ae28c:	8fc20024 	lw	v0,36(s8)
  4ae290:	00000000 	nop
  4ae294:	00621026 	xor	v0,v1,v0
  4ae298:	afc2001c 	sw	v0,28(s8)
  4ae29c:	8fc3001c 	lw	v1,28(s8)
  4ae2a0:	8fc20014 	lw	v0,20(s8)
  4ae2a4:	00000000 	nop
  4ae2a8:	00621025 	or	v0,v1,v0
  4ae2ac:	afc2001c 	sw	v0,28(s8)
  4ae2b0:	8fc30020 	lw	v1,32(s8)
  4ae2b4:	8fc20018 	lw	v0,24(s8)
  4ae2b8:	00000000 	nop
  4ae2bc:	00621026 	xor	v0,v1,v0
  4ae2c0:	afc20020 	sw	v0,32(s8)
  4ae2c4:	8fc3001c 	lw	v1,28(s8)
  4ae2c8:	8fc20020 	lw	v0,32(s8)
  4ae2cc:	00000000 	nop
  4ae2d0:	00621026 	xor	v0,v1,v0
  4ae2d4:	afc2001c 	sw	v0,28(s8)
  4ae2d8:	8fc30020 	lw	v1,32(s8)
  4ae2dc:	8fc20018 	lw	v0,24(s8)
  4ae2e0:	00000000 	nop
  4ae2e4:	00621025 	or	v0,v1,v0
  4ae2e8:	afc20020 	sw	v0,32(s8)
  4ae2ec:	8fc30020 	lw	v1,32(s8)
  4ae2f0:	8fc2001c 	lw	v0,28(s8)
  4ae2f4:	00000000 	nop
  4ae2f8:	00621026 	xor	v0,v1,v0
  4ae2fc:	afc20020 	sw	v0,32(s8)
  4ae300:	8fc20024 	lw	v0,36(s8)
  4ae304:	00000000 	nop
  4ae308:	00021027 	nor	v0,zero,v0
  4ae30c:	afc20024 	sw	v0,36(s8)
  4ae310:	8fc30024 	lw	v1,36(s8)
  4ae314:	8fc20020 	lw	v0,32(s8)
  4ae318:	00000000 	nop
  4ae31c:	00621026 	xor	v0,v1,v0
  4ae320:	afc20024 	sw	v0,36(s8)
  4ae324:	8fc30020 	lw	v1,32(s8)
  4ae328:	8fc2001c 	lw	v0,28(s8)
  4ae32c:	00000000 	nop
  4ae330:	00621025 	or	v0,v1,v0
  4ae334:	afc20020 	sw	v0,32(s8)
  4ae338:	8fc30020 	lw	v1,32(s8)
  4ae33c:	8fc2001c 	lw	v0,28(s8)
  4ae340:	00000000 	nop
  4ae344:	00621026 	xor	v0,v1,v0
  4ae348:	afc20020 	sw	v0,32(s8)
  4ae34c:	8fc30020 	lw	v1,32(s8)
  4ae350:	8fc20024 	lw	v0,36(s8)
  4ae354:	00000000 	nop
  4ae358:	00621025 	or	v0,v1,v0
  4ae35c:	afc20020 	sw	v0,32(s8)
  4ae360:	8fc30018 	lw	v1,24(s8)
  4ae364:	8fc20020 	lw	v0,32(s8)
  4ae368:	00000000 	nop
  4ae36c:	00621026 	xor	v0,v1,v0
  4ae370:	afc20018 	sw	v0,24(s8)
      KEYMIX(r4,r2,r1,r0,r3,100);
  4ae374:	8fc20008 	lw	v0,8(s8)
  4ae378:	00000000 	nop
  4ae37c:	244201b0 	addiu	v0,v0,432
  4ae380:	8c430000 	lw	v1,0(v0)
  4ae384:	8fc20024 	lw	v0,36(s8)
  4ae388:	00000000 	nop
  4ae38c:	00431026 	xor	v0,v0,v1
  4ae390:	afc20024 	sw	v0,36(s8)
  4ae394:	8fc20008 	lw	v0,8(s8)
  4ae398:	00000000 	nop
  4ae39c:	244201b4 	addiu	v0,v0,436
  4ae3a0:	8c430000 	lw	v1,0(v0)
  4ae3a4:	8fc2001c 	lw	v0,28(s8)
  4ae3a8:	00000000 	nop
  4ae3ac:	00431026 	xor	v0,v0,v1
  4ae3b0:	afc2001c 	sw	v0,28(s8)
  4ae3b4:	8fc20008 	lw	v0,8(s8)
  4ae3b8:	00000000 	nop
  4ae3bc:	244201b8 	addiu	v0,v0,440
  4ae3c0:	8c430000 	lw	v1,0(v0)
  4ae3c4:	8fc20018 	lw	v0,24(s8)
  4ae3c8:	00000000 	nop
  4ae3cc:	00431026 	xor	v0,v0,v1
  4ae3d0:	afc20018 	sw	v0,24(s8)
  4ae3d4:	8fc20008 	lw	v0,8(s8)
  4ae3d8:	00000000 	nop
  4ae3dc:	244201bc 	addiu	v0,v0,444
  4ae3e0:	8c430000 	lw	v1,0(v0)
  4ae3e4:	8fc20014 	lw	v0,20(s8)
  4ae3e8:	00000000 	nop
  4ae3ec:	00431026 	xor	v0,v0,v1
  4ae3f0:	afc20014 	sw	v0,20(s8)

      /* round 8  */
      ILINTRANS(r4,r2,r1,r0,r3);
  4ae3f4:	8fc20018 	lw	v0,24(s8)
  4ae3f8:	00000000 	nop
  4ae3fc:	00021a80 	sll	v1,v0,0xa
  4ae400:	00021582 	srl	v0,v0,0x16
  4ae404:	00621025 	or	v0,v1,v0
  4ae408:	afc20018 	sw	v0,24(s8)
  4ae40c:	8fc20024 	lw	v0,36(s8)
  4ae410:	00000000 	nop
  4ae414:	00021ec0 	sll	v1,v0,0x1b
  4ae418:	00021142 	srl	v0,v0,0x5
  4ae41c:	00621025 	or	v0,v1,v0
  4ae420:	afc20024 	sw	v0,36(s8)
  4ae424:	8fc30018 	lw	v1,24(s8)
  4ae428:	8fc20014 	lw	v0,20(s8)
  4ae42c:	00000000 	nop
  4ae430:	00621026 	xor	v0,v1,v0
  4ae434:	afc20018 	sw	v0,24(s8)
  4ae438:	8fc2001c 	lw	v0,28(s8)
  4ae43c:	00000000 	nop
  4ae440:	000211c0 	sll	v0,v0,0x7
  4ae444:	afc20020 	sw	v0,32(s8)
  4ae448:	8fc30024 	lw	v1,36(s8)
  4ae44c:	8fc2001c 	lw	v0,28(s8)
  4ae450:	00000000 	nop
  4ae454:	00621026 	xor	v0,v1,v0
  4ae458:	afc20024 	sw	v0,36(s8)
  4ae45c:	8fc30018 	lw	v1,24(s8)
  4ae460:	8fc20020 	lw	v0,32(s8)
  4ae464:	00000000 	nop
  4ae468:	00621026 	xor	v0,v1,v0
  4ae46c:	afc20018 	sw	v0,24(s8)
  4ae470:	8fc30024 	lw	v1,36(s8)
  4ae474:	8fc20014 	lw	v0,20(s8)
  4ae478:	00000000 	nop
  4ae47c:	00621026 	xor	v0,v1,v0
  4ae480:	afc20024 	sw	v0,36(s8)
  4ae484:	8fc20014 	lw	v0,20(s8)
  4ae488:	00000000 	nop
  4ae48c:	00021e40 	sll	v1,v0,0x19
  4ae490:	000211c2 	srl	v0,v0,0x7
  4ae494:	00621025 	or	v0,v1,v0
  4ae498:	afc20014 	sw	v0,20(s8)
  4ae49c:	8fc2001c 	lw	v0,28(s8)
  4ae4a0:	00000000 	nop
  4ae4a4:	00021fc0 	sll	v1,v0,0x1f
  4ae4a8:	00021042 	srl	v0,v0,0x1
  4ae4ac:	00621025 	or	v0,v1,v0
  4ae4b0:	afc2001c 	sw	v0,28(s8)
  4ae4b4:	8fc30014 	lw	v1,20(s8)
  4ae4b8:	8fc20018 	lw	v0,24(s8)
  4ae4bc:	00000000 	nop
  4ae4c0:	00621026 	xor	v0,v1,v0
  4ae4c4:	afc20014 	sw	v0,20(s8)
  4ae4c8:	8fc20024 	lw	v0,36(s8)
  4ae4cc:	00000000 	nop
  4ae4d0:	000210c0 	sll	v0,v0,0x3
  4ae4d4:	afc20020 	sw	v0,32(s8)
  4ae4d8:	8fc3001c 	lw	v1,28(s8)
  4ae4dc:	8fc20024 	lw	v0,36(s8)
  4ae4e0:	00000000 	nop
  4ae4e4:	00621026 	xor	v0,v1,v0
  4ae4e8:	afc2001c 	sw	v0,28(s8)
  4ae4ec:	8fc30014 	lw	v1,20(s8)
  4ae4f0:	8fc20020 	lw	v0,32(s8)
  4ae4f4:	00000000 	nop
  4ae4f8:	00621026 	xor	v0,v1,v0
  4ae4fc:	afc20014 	sw	v0,20(s8)
  4ae500:	8fc3001c 	lw	v1,28(s8)
  4ae504:	8fc20018 	lw	v0,24(s8)
  4ae508:	00000000 	nop
  4ae50c:	00621026 	xor	v0,v1,v0
  4ae510:	afc2001c 	sw	v0,28(s8)
  4ae514:	8fc20018 	lw	v0,24(s8)
  4ae518:	00000000 	nop
  4ae51c:	00021f40 	sll	v1,v0,0x1d
  4ae520:	000210c2 	srl	v0,v0,0x3
  4ae524:	00621025 	or	v0,v1,v0
  4ae528:	afc20018 	sw	v0,24(s8)
  4ae52c:	8fc20024 	lw	v0,36(s8)
  4ae530:	00000000 	nop
  4ae534:	00021cc0 	sll	v1,v0,0x13
  4ae538:	00021342 	srl	v0,v0,0xd
  4ae53c:	00621025 	or	v0,v1,v0
  4ae540:	afc20024 	sw	v0,36(s8)
      I0(r4,r2,r1,r0,r3);
  4ae544:	8fc20018 	lw	v0,24(s8)
  4ae548:	00000000 	nop
  4ae54c:	00021027 	nor	v0,zero,v0
  4ae550:	afc20018 	sw	v0,24(s8)
  4ae554:	8fc2001c 	lw	v0,28(s8)
  4ae558:	00000000 	nop
  4ae55c:	afc20020 	sw	v0,32(s8)
  4ae560:	8fc3001c 	lw	v1,28(s8)
  4ae564:	8fc20024 	lw	v0,36(s8)
  4ae568:	00000000 	nop
  4ae56c:	00621025 	or	v0,v1,v0
  4ae570:	afc2001c 	sw	v0,28(s8)
  4ae574:	8fc20020 	lw	v0,32(s8)
  4ae578:	00000000 	nop
  4ae57c:	00021027 	nor	v0,zero,v0
  4ae580:	afc20020 	sw	v0,32(s8)
  4ae584:	8fc3001c 	lw	v1,28(s8)
  4ae588:	8fc20018 	lw	v0,24(s8)
  4ae58c:	00000000 	nop
  4ae590:	00621026 	xor	v0,v1,v0
  4ae594:	afc2001c 	sw	v0,28(s8)
  4ae598:	8fc30018 	lw	v1,24(s8)
  4ae59c:	8fc20020 	lw	v0,32(s8)
  4ae5a0:	00000000 	nop
  4ae5a4:	00621025 	or	v0,v1,v0
  4ae5a8:	afc20018 	sw	v0,24(s8)
  4ae5ac:	8fc3001c 	lw	v1,28(s8)
  4ae5b0:	8fc20014 	lw	v0,20(s8)
  4ae5b4:	00000000 	nop
  4ae5b8:	00621026 	xor	v0,v1,v0
  4ae5bc:	afc2001c 	sw	v0,28(s8)
  4ae5c0:	8fc30024 	lw	v1,36(s8)
  4ae5c4:	8fc20020 	lw	v0,32(s8)
  4ae5c8:	00000000 	nop
  4ae5cc:	00621026 	xor	v0,v1,v0
  4ae5d0:	afc20024 	sw	v0,36(s8)
  4ae5d4:	8fc30018 	lw	v1,24(s8)
  4ae5d8:	8fc20024 	lw	v0,36(s8)
  4ae5dc:	00000000 	nop
  4ae5e0:	00621026 	xor	v0,v1,v0
  4ae5e4:	afc20018 	sw	v0,24(s8)
  4ae5e8:	8fc30024 	lw	v1,36(s8)
  4ae5ec:	8fc20014 	lw	v0,20(s8)
  4ae5f0:	00000000 	nop
  4ae5f4:	00621024 	and	v0,v1,v0
  4ae5f8:	afc20024 	sw	v0,36(s8)
  4ae5fc:	8fc30020 	lw	v1,32(s8)
  4ae600:	8fc20024 	lw	v0,36(s8)
  4ae604:	00000000 	nop
  4ae608:	00621026 	xor	v0,v1,v0
  4ae60c:	afc20020 	sw	v0,32(s8)
  4ae610:	8fc30024 	lw	v1,36(s8)
  4ae614:	8fc2001c 	lw	v0,28(s8)
  4ae618:	00000000 	nop
  4ae61c:	00621025 	or	v0,v1,v0
  4ae620:	afc20024 	sw	v0,36(s8)
  4ae624:	8fc30024 	lw	v1,36(s8)
  4ae628:	8fc20018 	lw	v0,24(s8)
  4ae62c:	00000000 	nop
  4ae630:	00621026 	xor	v0,v1,v0
  4ae634:	afc20024 	sw	v0,36(s8)
  4ae638:	8fc30014 	lw	v1,20(s8)
  4ae63c:	8fc20020 	lw	v0,32(s8)
  4ae640:	00000000 	nop
  4ae644:	00621026 	xor	v0,v1,v0
  4ae648:	afc20014 	sw	v0,20(s8)
  4ae64c:	8fc30018 	lw	v1,24(s8)
  4ae650:	8fc2001c 	lw	v0,28(s8)
  4ae654:	00000000 	nop
  4ae658:	00621026 	xor	v0,v1,v0
  4ae65c:	afc20018 	sw	v0,24(s8)
  4ae660:	8fc30014 	lw	v1,20(s8)
  4ae664:	8fc20024 	lw	v0,36(s8)
  4ae668:	00000000 	nop
  4ae66c:	00621026 	xor	v0,v1,v0
  4ae670:	afc20014 	sw	v0,20(s8)
  4ae674:	8fc30014 	lw	v1,20(s8)
  4ae678:	8fc2001c 	lw	v0,28(s8)
  4ae67c:	00000000 	nop
  4ae680:	00621026 	xor	v0,v1,v0
  4ae684:	afc20014 	sw	v0,20(s8)
  4ae688:	8fc30018 	lw	v1,24(s8)
  4ae68c:	8fc20014 	lw	v0,20(s8)
  4ae690:	00000000 	nop
  4ae694:	00621024 	and	v0,v1,v0
  4ae698:	afc20018 	sw	v0,24(s8)
  4ae69c:	8fc30020 	lw	v1,32(s8)
  4ae6a0:	8fc20018 	lw	v0,24(s8)
  4ae6a4:	00000000 	nop
  4ae6a8:	00621026 	xor	v0,v1,v0
  4ae6ac:	afc20020 	sw	v0,32(s8)
      KEYMIX(r4,r3,r2,r0,r1,96);
  4ae6b0:	8fc20008 	lw	v0,8(s8)
  4ae6b4:	00000000 	nop
  4ae6b8:	244201a0 	addiu	v0,v0,416
  4ae6bc:	8c430000 	lw	v1,0(v0)
  4ae6c0:	8fc20024 	lw	v0,36(s8)
  4ae6c4:	00000000 	nop
  4ae6c8:	00431026 	xor	v0,v0,v1
  4ae6cc:	afc20024 	sw	v0,36(s8)
  4ae6d0:	8fc20008 	lw	v0,8(s8)
  4ae6d4:	00000000 	nop
  4ae6d8:	244201a4 	addiu	v0,v0,420
  4ae6dc:	8c430000 	lw	v1,0(v0)
  4ae6e0:	8fc20020 	lw	v0,32(s8)
  4ae6e4:	00000000 	nop
  4ae6e8:	00431026 	xor	v0,v0,v1
  4ae6ec:	afc20020 	sw	v0,32(s8)
  4ae6f0:	8fc20008 	lw	v0,8(s8)
  4ae6f4:	00000000 	nop
  4ae6f8:	244201a8 	addiu	v0,v0,424
  4ae6fc:	8c430000 	lw	v1,0(v0)
  4ae700:	8fc2001c 	lw	v0,28(s8)
  4ae704:	00000000 	nop
  4ae708:	00431026 	xor	v0,v0,v1
  4ae70c:	afc2001c 	sw	v0,28(s8)
  4ae710:	8fc20008 	lw	v0,8(s8)
  4ae714:	00000000 	nop
  4ae718:	244201ac 	addiu	v0,v0,428
  4ae71c:	8c430000 	lw	v1,0(v0)
  4ae720:	8fc20014 	lw	v0,20(s8)
  4ae724:	00000000 	nop
  4ae728:	00431026 	xor	v0,v0,v1
  4ae72c:	afc20014 	sw	v0,20(s8)

      /* round 9  */
      ILINTRANS(r4,r3,r2,r0,r1);
  4ae730:	8fc2001c 	lw	v0,28(s8)
  4ae734:	00000000 	nop
  4ae738:	00021a80 	sll	v1,v0,0xa
  4ae73c:	00021582 	srl	v0,v0,0x16
  4ae740:	00621025 	or	v0,v1,v0
  4ae744:	afc2001c 	sw	v0,28(s8)
  4ae748:	8fc20024 	lw	v0,36(s8)
  4ae74c:	00000000 	nop
  4ae750:	00021ec0 	sll	v1,v0,0x1b
  4ae754:	00021142 	srl	v0,v0,0x5
  4ae758:	00621025 	or	v0,v1,v0
  4ae75c:	afc20024 	sw	v0,36(s8)
  4ae760:	8fc3001c 	lw	v1,28(s8)
  4ae764:	8fc20014 	lw	v0,20(s8)
  4ae768:	00000000 	nop
  4ae76c:	00621026 	xor	v0,v1,v0
  4ae770:	afc2001c 	sw	v0,28(s8)
  4ae774:	8fc20020 	lw	v0,32(s8)
  4ae778:	00000000 	nop
  4ae77c:	000211c0 	sll	v0,v0,0x7
  4ae780:	afc20018 	sw	v0,24(s8)
  4ae784:	8fc30024 	lw	v1,36(s8)
  4ae788:	8fc20020 	lw	v0,32(s8)
  4ae78c:	00000000 	nop
  4ae790:	00621026 	xor	v0,v1,v0
  4ae794:	afc20024 	sw	v0,36(s8)
  4ae798:	8fc3001c 	lw	v1,28(s8)
  4ae79c:	8fc20018 	lw	v0,24(s8)
  4ae7a0:	00000000 	nop
  4ae7a4:	00621026 	xor	v0,v1,v0
  4ae7a8:	afc2001c 	sw	v0,28(s8)
  4ae7ac:	8fc30024 	lw	v1,36(s8)
  4ae7b0:	8fc20014 	lw	v0,20(s8)
  4ae7b4:	00000000 	nop
  4ae7b8:	00621026 	xor	v0,v1,v0
  4ae7bc:	afc20024 	sw	v0,36(s8)
  4ae7c0:	8fc20014 	lw	v0,20(s8)
  4ae7c4:	00000000 	nop
  4ae7c8:	00021e40 	sll	v1,v0,0x19
  4ae7cc:	000211c2 	srl	v0,v0,0x7
  4ae7d0:	00621025 	or	v0,v1,v0
  4ae7d4:	afc20014 	sw	v0,20(s8)
  4ae7d8:	8fc20020 	lw	v0,32(s8)
  4ae7dc:	00000000 	nop
  4ae7e0:	00021fc0 	sll	v1,v0,0x1f
  4ae7e4:	00021042 	srl	v0,v0,0x1
  4ae7e8:	00621025 	or	v0,v1,v0
  4ae7ec:	afc20020 	sw	v0,32(s8)
  4ae7f0:	8fc30014 	lw	v1,20(s8)
  4ae7f4:	8fc2001c 	lw	v0,28(s8)
  4ae7f8:	00000000 	nop
  4ae7fc:	00621026 	xor	v0,v1,v0
  4ae800:	afc20014 	sw	v0,20(s8)
  4ae804:	8fc20024 	lw	v0,36(s8)
  4ae808:	00000000 	nop
  4ae80c:	000210c0 	sll	v0,v0,0x3
  4ae810:	afc20018 	sw	v0,24(s8)
  4ae814:	8fc30020 	lw	v1,32(s8)
  4ae818:	8fc20024 	lw	v0,36(s8)
  4ae81c:	00000000 	nop
  4ae820:	00621026 	xor	v0,v1,v0
  4ae824:	afc20020 	sw	v0,32(s8)
  4ae828:	8fc30014 	lw	v1,20(s8)
  4ae82c:	8fc20018 	lw	v0,24(s8)
  4ae830:	00000000 	nop
  4ae834:	00621026 	xor	v0,v1,v0
  4ae838:	afc20014 	sw	v0,20(s8)
  4ae83c:	8fc30020 	lw	v1,32(s8)
  4ae840:	8fc2001c 	lw	v0,28(s8)
  4ae844:	00000000 	nop
  4ae848:	00621026 	xor	v0,v1,v0
  4ae84c:	afc20020 	sw	v0,32(s8)
  4ae850:	8fc2001c 	lw	v0,28(s8)
  4ae854:	00000000 	nop
  4ae858:	00021f40 	sll	v1,v0,0x1d
  4ae85c:	000210c2 	srl	v0,v0,0x3
  4ae860:	00621025 	or	v0,v1,v0
  4ae864:	afc2001c 	sw	v0,28(s8)
  4ae868:	8fc20024 	lw	v0,36(s8)
  4ae86c:	00000000 	nop
  4ae870:	00021cc0 	sll	v1,v0,0x13
  4ae874:	00021342 	srl	v0,v0,0xd
  4ae878:	00621025 	or	v0,v1,v0
  4ae87c:	afc20024 	sw	v0,36(s8)
      I7(r4,r3,r2,r0,r1);
  4ae880:	8fc2001c 	lw	v0,28(s8)
  4ae884:	00000000 	nop
  4ae888:	afc20018 	sw	v0,24(s8)
  4ae88c:	8fc3001c 	lw	v1,28(s8)
  4ae890:	8fc20024 	lw	v0,36(s8)
  4ae894:	00000000 	nop
  4ae898:	00621026 	xor	v0,v1,v0
  4ae89c:	afc2001c 	sw	v0,28(s8)
  4ae8a0:	8fc30024 	lw	v1,36(s8)
  4ae8a4:	8fc20014 	lw	v0,20(s8)
  4ae8a8:	00000000 	nop
  4ae8ac:	00621024 	and	v0,v1,v0
  4ae8b0:	afc20024 	sw	v0,36(s8)
  4ae8b4:	8fc30018 	lw	v1,24(s8)
  4ae8b8:	8fc20014 	lw	v0,20(s8)
  4ae8bc:	00000000 	nop
  4ae8c0:	00621025 	or	v0,v1,v0
  4ae8c4:	afc20018 	sw	v0,24(s8)
  4ae8c8:	8fc2001c 	lw	v0,28(s8)
  4ae8cc:	00000000 	nop
  4ae8d0:	00021027 	nor	v0,zero,v0
  4ae8d4:	afc2001c 	sw	v0,28(s8)
  4ae8d8:	8fc30014 	lw	v1,20(s8)
  4ae8dc:	8fc20020 	lw	v0,32(s8)
  4ae8e0:	00000000 	nop
  4ae8e4:	00621026 	xor	v0,v1,v0
  4ae8e8:	afc20014 	sw	v0,20(s8)
  4ae8ec:	8fc30020 	lw	v1,32(s8)
  4ae8f0:	8fc20024 	lw	v0,36(s8)
  4ae8f4:	00000000 	nop
  4ae8f8:	00621025 	or	v0,v1,v0
  4ae8fc:	afc20020 	sw	v0,32(s8)
  4ae900:	8fc30024 	lw	v1,36(s8)
  4ae904:	8fc2001c 	lw	v0,28(s8)
  4ae908:	00000000 	nop
  4ae90c:	00621026 	xor	v0,v1,v0
  4ae910:	afc20024 	sw	v0,36(s8)
  4ae914:	8fc3001c 	lw	v1,28(s8)
  4ae918:	8fc20018 	lw	v0,24(s8)
  4ae91c:	00000000 	nop
  4ae920:	00621024 	and	v0,v1,v0
  4ae924:	afc2001c 	sw	v0,28(s8)
  4ae928:	8fc30014 	lw	v1,20(s8)
  4ae92c:	8fc20018 	lw	v0,24(s8)
  4ae930:	00000000 	nop
  4ae934:	00621024 	and	v0,v1,v0
  4ae938:	afc20014 	sw	v0,20(s8)
  4ae93c:	8fc30020 	lw	v1,32(s8)
  4ae940:	8fc2001c 	lw	v0,28(s8)
  4ae944:	00000000 	nop
  4ae948:	00621026 	xor	v0,v1,v0
  4ae94c:	afc20020 	sw	v0,32(s8)
  4ae950:	8fc3001c 	lw	v1,28(s8)
  4ae954:	8fc20024 	lw	v0,36(s8)
  4ae958:	00000000 	nop
  4ae95c:	00621026 	xor	v0,v1,v0
  4ae960:	afc2001c 	sw	v0,28(s8)
  4ae964:	8fc30024 	lw	v1,36(s8)
  4ae968:	8fc2001c 	lw	v0,28(s8)
  4ae96c:	00000000 	nop
  4ae970:	00621025 	or	v0,v1,v0
  4ae974:	afc20024 	sw	v0,36(s8)
  4ae978:	8fc30018 	lw	v1,24(s8)
  4ae97c:	8fc20020 	lw	v0,32(s8)
  4ae980:	00000000 	nop
  4ae984:	00621026 	xor	v0,v1,v0
  4ae988:	afc20018 	sw	v0,24(s8)
  4ae98c:	8fc30024 	lw	v1,36(s8)
  4ae990:	8fc20014 	lw	v0,20(s8)
  4ae994:	00000000 	nop
  4ae998:	00621026 	xor	v0,v1,v0
  4ae99c:	afc20024 	sw	v0,36(s8)
  4ae9a0:	8fc30014 	lw	v1,20(s8)
  4ae9a4:	8fc20018 	lw	v0,24(s8)
  4ae9a8:	00000000 	nop
  4ae9ac:	00621026 	xor	v0,v1,v0
  4ae9b0:	afc20014 	sw	v0,20(s8)
  4ae9b4:	8fc30018 	lw	v1,24(s8)
  4ae9b8:	8fc20024 	lw	v0,36(s8)
  4ae9bc:	00000000 	nop
  4ae9c0:	00621025 	or	v0,v1,v0
  4ae9c4:	afc20018 	sw	v0,24(s8)
  4ae9c8:	8fc30014 	lw	v1,20(s8)
  4ae9cc:	8fc2001c 	lw	v0,28(s8)
  4ae9d0:	00000000 	nop
  4ae9d4:	00621026 	xor	v0,v1,v0
  4ae9d8:	afc20014 	sw	v0,20(s8)
  4ae9dc:	8fc30018 	lw	v1,24(s8)
  4ae9e0:	8fc2001c 	lw	v0,28(s8)
  4ae9e4:	00000000 	nop
  4ae9e8:	00621026 	xor	v0,v1,v0
  4ae9ec:	afc20018 	sw	v0,24(s8)
      KEYMIX(r0,r4,r3,r1,r2,92);
  4ae9f0:	8fc20008 	lw	v0,8(s8)
  4ae9f4:	00000000 	nop
  4ae9f8:	24420190 	addiu	v0,v0,400
  4ae9fc:	8c430000 	lw	v1,0(v0)
  4aea00:	8fc20014 	lw	v0,20(s8)
  4aea04:	00000000 	nop
  4aea08:	00431026 	xor	v0,v0,v1
  4aea0c:	afc20014 	sw	v0,20(s8)
  4aea10:	8fc20008 	lw	v0,8(s8)
  4aea14:	00000000 	nop
  4aea18:	24420194 	addiu	v0,v0,404
  4aea1c:	8c430000 	lw	v1,0(v0)
  4aea20:	8fc20024 	lw	v0,36(s8)
  4aea24:	00000000 	nop
  4aea28:	00431026 	xor	v0,v0,v1
  4aea2c:	afc20024 	sw	v0,36(s8)
  4aea30:	8fc20008 	lw	v0,8(s8)
  4aea34:	00000000 	nop
  4aea38:	24420198 	addiu	v0,v0,408
  4aea3c:	8c430000 	lw	v1,0(v0)
  4aea40:	8fc20020 	lw	v0,32(s8)
  4aea44:	00000000 	nop
  4aea48:	00431026 	xor	v0,v0,v1
  4aea4c:	afc20020 	sw	v0,32(s8)
  4aea50:	8fc20008 	lw	v0,8(s8)
  4aea54:	00000000 	nop
  4aea58:	2442019c 	addiu	v0,v0,412
  4aea5c:	8c430000 	lw	v1,0(v0)
  4aea60:	8fc20018 	lw	v0,24(s8)
  4aea64:	00000000 	nop
  4aea68:	00431026 	xor	v0,v0,v1
  4aea6c:	afc20018 	sw	v0,24(s8)

      /* round 10  */
      ILINTRANS(r0,r4,r3,r1,r2);
  4aea70:	8fc20020 	lw	v0,32(s8)
  4aea74:	00000000 	nop
  4aea78:	00021a80 	sll	v1,v0,0xa
  4aea7c:	00021582 	srl	v0,v0,0x16
  4aea80:	00621025 	or	v0,v1,v0
  4aea84:	afc20020 	sw	v0,32(s8)
  4aea88:	8fc20014 	lw	v0,20(s8)
  4aea8c:	00000000 	nop
  4aea90:	00021ec0 	sll	v1,v0,0x1b
  4aea94:	00021142 	srl	v0,v0,0x5
  4aea98:	00621025 	or	v0,v1,v0
  4aea9c:	afc20014 	sw	v0,20(s8)
  4aeaa0:	8fc30020 	lw	v1,32(s8)
  4aeaa4:	8fc20018 	lw	v0,24(s8)
  4aeaa8:	00000000 	nop
  4aeaac:	00621026 	xor	v0,v1,v0
  4aeab0:	afc20020 	sw	v0,32(s8)
  4aeab4:	8fc20024 	lw	v0,36(s8)
  4aeab8:	00000000 	nop
  4aeabc:	000211c0 	sll	v0,v0,0x7
  4aeac0:	afc2001c 	sw	v0,28(s8)
  4aeac4:	8fc30014 	lw	v1,20(s8)
  4aeac8:	8fc20024 	lw	v0,36(s8)
  4aeacc:	00000000 	nop
  4aead0:	00621026 	xor	v0,v1,v0
  4aead4:	afc20014 	sw	v0,20(s8)
  4aead8:	8fc30020 	lw	v1,32(s8)
  4aeadc:	8fc2001c 	lw	v0,28(s8)
  4aeae0:	00000000 	nop
  4aeae4:	00621026 	xor	v0,v1,v0
  4aeae8:	afc20020 	sw	v0,32(s8)
  4aeaec:	8fc30014 	lw	v1,20(s8)
  4aeaf0:	8fc20018 	lw	v0,24(s8)
  4aeaf4:	00000000 	nop
  4aeaf8:	00621026 	xor	v0,v1,v0
  4aeafc:	afc20014 	sw	v0,20(s8)
  4aeb00:	8fc20018 	lw	v0,24(s8)
  4aeb04:	00000000 	nop
  4aeb08:	00021e40 	sll	v1,v0,0x19
  4aeb0c:	000211c2 	srl	v0,v0,0x7
  4aeb10:	00621025 	or	v0,v1,v0
  4aeb14:	afc20018 	sw	v0,24(s8)
  4aeb18:	8fc20024 	lw	v0,36(s8)
  4aeb1c:	00000000 	nop
  4aeb20:	00021fc0 	sll	v1,v0,0x1f
  4aeb24:	00021042 	srl	v0,v0,0x1
  4aeb28:	00621025 	or	v0,v1,v0
  4aeb2c:	afc20024 	sw	v0,36(s8)
  4aeb30:	8fc30018 	lw	v1,24(s8)
  4aeb34:	8fc20020 	lw	v0,32(s8)
  4aeb38:	00000000 	nop
  4aeb3c:	00621026 	xor	v0,v1,v0
  4aeb40:	afc20018 	sw	v0,24(s8)
  4aeb44:	8fc20014 	lw	v0,20(s8)
  4aeb48:	00000000 	nop
  4aeb4c:	000210c0 	sll	v0,v0,0x3
  4aeb50:	afc2001c 	sw	v0,28(s8)
  4aeb54:	8fc30024 	lw	v1,36(s8)
  4aeb58:	8fc20014 	lw	v0,20(s8)
  4aeb5c:	00000000 	nop
  4aeb60:	00621026 	xor	v0,v1,v0
  4aeb64:	afc20024 	sw	v0,36(s8)
  4aeb68:	8fc30018 	lw	v1,24(s8)
  4aeb6c:	8fc2001c 	lw	v0,28(s8)
  4aeb70:	00000000 	nop
  4aeb74:	00621026 	xor	v0,v1,v0
  4aeb78:	afc20018 	sw	v0,24(s8)
  4aeb7c:	8fc30024 	lw	v1,36(s8)
  4aeb80:	8fc20020 	lw	v0,32(s8)
  4aeb84:	00000000 	nop
  4aeb88:	00621026 	xor	v0,v1,v0
  4aeb8c:	afc20024 	sw	v0,36(s8)
  4aeb90:	8fc20020 	lw	v0,32(s8)
  4aeb94:	00000000 	nop
  4aeb98:	00021f40 	sll	v1,v0,0x1d
  4aeb9c:	000210c2 	srl	v0,v0,0x3
  4aeba0:	00621025 	or	v0,v1,v0
  4aeba4:	afc20020 	sw	v0,32(s8)
  4aeba8:	8fc20014 	lw	v0,20(s8)
  4aebac:	00000000 	nop
  4aebb0:	00021cc0 	sll	v1,v0,0x13
  4aebb4:	00021342 	srl	v0,v0,0xd
  4aebb8:	00621025 	or	v0,v1,v0
  4aebbc:	afc20014 	sw	v0,20(s8)
      I6(r0,r4,r3,r1,r2);
  4aebc0:	8fc30014 	lw	v1,20(s8)
  4aebc4:	8fc20020 	lw	v0,32(s8)
  4aebc8:	00000000 	nop
  4aebcc:	00621026 	xor	v0,v1,v0
  4aebd0:	afc20014 	sw	v0,20(s8)
  4aebd4:	8fc20020 	lw	v0,32(s8)
  4aebd8:	00000000 	nop
  4aebdc:	afc2001c 	sw	v0,28(s8)
  4aebe0:	8fc30020 	lw	v1,32(s8)
  4aebe4:	8fc20014 	lw	v0,20(s8)
  4aebe8:	00000000 	nop
  4aebec:	00621024 	and	v0,v1,v0
  4aebf0:	afc20020 	sw	v0,32(s8)
  4aebf4:	8fc3001c 	lw	v1,28(s8)
  4aebf8:	8fc20018 	lw	v0,24(s8)
  4aebfc:	00000000 	nop
  4aec00:	00621026 	xor	v0,v1,v0
  4aec04:	afc2001c 	sw	v0,28(s8)
  4aec08:	8fc20020 	lw	v0,32(s8)
  4aec0c:	00000000 	nop
  4aec10:	00021027 	nor	v0,zero,v0
  4aec14:	afc20020 	sw	v0,32(s8)
  4aec18:	8fc30018 	lw	v1,24(s8)
  4aec1c:	8fc20024 	lw	v0,36(s8)
  4aec20:	00000000 	nop
  4aec24:	00621026 	xor	v0,v1,v0
  4aec28:	afc20018 	sw	v0,24(s8)
  4aec2c:	8fc30020 	lw	v1,32(s8)
  4aec30:	8fc20018 	lw	v0,24(s8)
  4aec34:	00000000 	nop
  4aec38:	00621026 	xor	v0,v1,v0
  4aec3c:	afc20020 	sw	v0,32(s8)
  4aec40:	8fc3001c 	lw	v1,28(s8)
  4aec44:	8fc20014 	lw	v0,20(s8)
  4aec48:	00000000 	nop
  4aec4c:	00621025 	or	v0,v1,v0
  4aec50:	afc2001c 	sw	v0,28(s8)
  4aec54:	8fc30014 	lw	v1,20(s8)
  4aec58:	8fc20020 	lw	v0,32(s8)
  4aec5c:	00000000 	nop
  4aec60:	00621026 	xor	v0,v1,v0
  4aec64:	afc20014 	sw	v0,20(s8)
  4aec68:	8fc30018 	lw	v1,24(s8)
  4aec6c:	8fc2001c 	lw	v0,28(s8)
  4aec70:	00000000 	nop
  4aec74:	00621026 	xor	v0,v1,v0
  4aec78:	afc20018 	sw	v0,24(s8)
  4aec7c:	8fc3001c 	lw	v1,28(s8)
  4aec80:	8fc20024 	lw	v0,36(s8)
  4aec84:	00000000 	nop
  4aec88:	00621026 	xor	v0,v1,v0
  4aec8c:	afc2001c 	sw	v0,28(s8)
  4aec90:	8fc30024 	lw	v1,36(s8)
  4aec94:	8fc20018 	lw	v0,24(s8)
  4aec98:	00000000 	nop
  4aec9c:	00621024 	and	v0,v1,v0
  4aeca0:	afc20024 	sw	v0,36(s8)
  4aeca4:	8fc30024 	lw	v1,36(s8)
  4aeca8:	8fc20014 	lw	v0,20(s8)
  4aecac:	00000000 	nop
  4aecb0:	00621026 	xor	v0,v1,v0
  4aecb4:	afc20024 	sw	v0,36(s8)
  4aecb8:	8fc30014 	lw	v1,20(s8)
  4aecbc:	8fc20018 	lw	v0,24(s8)
  4aecc0:	00000000 	nop
  4aecc4:	00621026 	xor	v0,v1,v0
  4aecc8:	afc20014 	sw	v0,20(s8)
  4aeccc:	8fc30014 	lw	v1,20(s8)
  4aecd0:	8fc20020 	lw	v0,32(s8)
  4aecd4:	00000000 	nop
  4aecd8:	00621025 	or	v0,v1,v0
  4aecdc:	afc20014 	sw	v0,20(s8)
  4aece0:	8fc30018 	lw	v1,24(s8)
  4aece4:	8fc20024 	lw	v0,36(s8)
  4aece8:	00000000 	nop
  4aecec:	00621026 	xor	v0,v1,v0
  4aecf0:	afc20018 	sw	v0,24(s8)
  4aecf4:	8fc3001c 	lw	v1,28(s8)
  4aecf8:	8fc20014 	lw	v0,20(s8)
  4aecfc:	00000000 	nop
  4aed00:	00621026 	xor	v0,v1,v0
  4aed04:	afc2001c 	sw	v0,28(s8)
      KEYMIX(r4,r3,r2,r1,r0,88);
  4aed08:	8fc20008 	lw	v0,8(s8)
  4aed0c:	00000000 	nop
  4aed10:	24420180 	addiu	v0,v0,384
  4aed14:	8c430000 	lw	v1,0(v0)
  4aed18:	8fc20024 	lw	v0,36(s8)
  4aed1c:	00000000 	nop
  4aed20:	00431026 	xor	v0,v0,v1
  4aed24:	afc20024 	sw	v0,36(s8)
  4aed28:	8fc20008 	lw	v0,8(s8)
  4aed2c:	00000000 	nop
  4aed30:	24420184 	addiu	v0,v0,388
  4aed34:	8c430000 	lw	v1,0(v0)
  4aed38:	8fc20020 	lw	v0,32(s8)
  4aed3c:	00000000 	nop
  4aed40:	00431026 	xor	v0,v0,v1
  4aed44:	afc20020 	sw	v0,32(s8)
  4aed48:	8fc20008 	lw	v0,8(s8)
  4aed4c:	00000000 	nop
  4aed50:	24420188 	addiu	v0,v0,392
  4aed54:	8c430000 	lw	v1,0(v0)
  4aed58:	8fc2001c 	lw	v0,28(s8)
  4aed5c:	00000000 	nop
  4aed60:	00431026 	xor	v0,v0,v1
  4aed64:	afc2001c 	sw	v0,28(s8)
  4aed68:	8fc20008 	lw	v0,8(s8)
  4aed6c:	00000000 	nop
  4aed70:	2442018c 	addiu	v0,v0,396
  4aed74:	8c430000 	lw	v1,0(v0)
  4aed78:	8fc20018 	lw	v0,24(s8)
  4aed7c:	00000000 	nop
  4aed80:	00431026 	xor	v0,v0,v1
  4aed84:	afc20018 	sw	v0,24(s8)

      /* round 11  */
      ILINTRANS(r4,r3,r2,r1,r0);
  4aed88:	8fc2001c 	lw	v0,28(s8)
  4aed8c:	00000000 	nop
  4aed90:	00021a80 	sll	v1,v0,0xa
  4aed94:	00021582 	srl	v0,v0,0x16
  4aed98:	00621025 	or	v0,v1,v0
  4aed9c:	afc2001c 	sw	v0,28(s8)
  4aeda0:	8fc20024 	lw	v0,36(s8)
  4aeda4:	00000000 	nop
  4aeda8:	00021ec0 	sll	v1,v0,0x1b
  4aedac:	00021142 	srl	v0,v0,0x5
  4aedb0:	00621025 	or	v0,v1,v0
  4aedb4:	afc20024 	sw	v0,36(s8)
  4aedb8:	8fc3001c 	lw	v1,28(s8)
  4aedbc:	8fc20018 	lw	v0,24(s8)
  4aedc0:	00000000 	nop
  4aedc4:	00621026 	xor	v0,v1,v0
  4aedc8:	afc2001c 	sw	v0,28(s8)
  4aedcc:	8fc20020 	lw	v0,32(s8)
  4aedd0:	00000000 	nop
  4aedd4:	000211c0 	sll	v0,v0,0x7
  4aedd8:	afc20014 	sw	v0,20(s8)
  4aeddc:	8fc30024 	lw	v1,36(s8)
  4aede0:	8fc20020 	lw	v0,32(s8)
  4aede4:	00000000 	nop
  4aede8:	00621026 	xor	v0,v1,v0
  4aedec:	afc20024 	sw	v0,36(s8)
  4aedf0:	8fc3001c 	lw	v1,28(s8)
  4aedf4:	8fc20014 	lw	v0,20(s8)
  4aedf8:	00000000 	nop
  4aedfc:	00621026 	xor	v0,v1,v0
  4aee00:	afc2001c 	sw	v0,28(s8)
  4aee04:	8fc30024 	lw	v1,36(s8)
  4aee08:	8fc20018 	lw	v0,24(s8)
  4aee0c:	00000000 	nop
  4aee10:	00621026 	xor	v0,v1,v0
  4aee14:	afc20024 	sw	v0,36(s8)
  4aee18:	8fc20018 	lw	v0,24(s8)
  4aee1c:	00000000 	nop
  4aee20:	00021e40 	sll	v1,v0,0x19
  4aee24:	000211c2 	srl	v0,v0,0x7
  4aee28:	00621025 	or	v0,v1,v0
  4aee2c:	afc20018 	sw	v0,24(s8)
  4aee30:	8fc20020 	lw	v0,32(s8)
  4aee34:	00000000 	nop
  4aee38:	00021fc0 	sll	v1,v0,0x1f
  4aee3c:	00021042 	srl	v0,v0,0x1
  4aee40:	00621025 	or	v0,v1,v0
  4aee44:	afc20020 	sw	v0,32(s8)
  4aee48:	8fc30018 	lw	v1,24(s8)
  4aee4c:	8fc2001c 	lw	v0,28(s8)
  4aee50:	00000000 	nop
  4aee54:	00621026 	xor	v0,v1,v0
  4aee58:	afc20018 	sw	v0,24(s8)
  4aee5c:	8fc20024 	lw	v0,36(s8)
  4aee60:	00000000 	nop
  4aee64:	000210c0 	sll	v0,v0,0x3
  4aee68:	afc20014 	sw	v0,20(s8)
  4aee6c:	8fc30020 	lw	v1,32(s8)
  4aee70:	8fc20024 	lw	v0,36(s8)
  4aee74:	00000000 	nop
  4aee78:	00621026 	xor	v0,v1,v0
  4aee7c:	afc20020 	sw	v0,32(s8)
  4aee80:	8fc30018 	lw	v1,24(s8)
  4aee84:	8fc20014 	lw	v0,20(s8)
  4aee88:	00000000 	nop
  4aee8c:	00621026 	xor	v0,v1,v0
  4aee90:	afc20018 	sw	v0,24(s8)
  4aee94:	8fc30020 	lw	v1,32(s8)
  4aee98:	8fc2001c 	lw	v0,28(s8)
  4aee9c:	00000000 	nop
  4aeea0:	00621026 	xor	v0,v1,v0
  4aeea4:	afc20020 	sw	v0,32(s8)
  4aeea8:	8fc2001c 	lw	v0,28(s8)
  4aeeac:	00000000 	nop
  4aeeb0:	00021f40 	sll	v1,v0,0x1d
  4aeeb4:	000210c2 	srl	v0,v0,0x3
  4aeeb8:	00621025 	or	v0,v1,v0
  4aeebc:	afc2001c 	sw	v0,28(s8)
  4aeec0:	8fc20024 	lw	v0,36(s8)
  4aeec4:	00000000 	nop
  4aeec8:	00021cc0 	sll	v1,v0,0x13
  4aeecc:	00021342 	srl	v0,v0,0xd
  4aeed0:	00621025 	or	v0,v1,v0
  4aeed4:	afc20024 	sw	v0,36(s8)
      I5(r4,r3,r2,r1,r0);
  4aeed8:	8fc20020 	lw	v0,32(s8)
  4aeedc:	00000000 	nop
  4aeee0:	00021027 	nor	v0,zero,v0
  4aeee4:	afc20020 	sw	v0,32(s8)
  4aeee8:	8fc20018 	lw	v0,24(s8)
  4aeeec:	00000000 	nop
  4aeef0:	afc20014 	sw	v0,20(s8)
  4aeef4:	8fc3001c 	lw	v1,28(s8)
  4aeef8:	8fc20020 	lw	v0,32(s8)
  4aeefc:	00000000 	nop
  4aef00:	00621026 	xor	v0,v1,v0
  4aef04:	afc2001c 	sw	v0,28(s8)
  4aef08:	8fc30018 	lw	v1,24(s8)
  4aef0c:	8fc20024 	lw	v0,36(s8)
  4aef10:	00000000 	nop
  4aef14:	00621025 	or	v0,v1,v0
  4aef18:	afc20018 	sw	v0,24(s8)
  4aef1c:	8fc30018 	lw	v1,24(s8)
  4aef20:	8fc2001c 	lw	v0,28(s8)
  4aef24:	00000000 	nop
  4aef28:	00621026 	xor	v0,v1,v0
  4aef2c:	afc20018 	sw	v0,24(s8)
  4aef30:	8fc3001c 	lw	v1,28(s8)
  4aef34:	8fc20020 	lw	v0,32(s8)
  4aef38:	00000000 	nop
  4aef3c:	00621025 	or	v0,v1,v0
  4aef40:	afc2001c 	sw	v0,28(s8)
  4aef44:	8fc3001c 	lw	v1,28(s8)
  4aef48:	8fc20024 	lw	v0,36(s8)
  4aef4c:	00000000 	nop
  4aef50:	00621024 	and	v0,v1,v0
  4aef54:	afc2001c 	sw	v0,28(s8)
  4aef58:	8fc30014 	lw	v1,20(s8)
  4aef5c:	8fc20018 	lw	v0,24(s8)
  4aef60:	00000000 	nop
  4aef64:	00621026 	xor	v0,v1,v0
  4aef68:	afc20014 	sw	v0,20(s8)
  4aef6c:	8fc3001c 	lw	v1,28(s8)
  4aef70:	8fc20014 	lw	v0,20(s8)
  4aef74:	00000000 	nop
  4aef78:	00621026 	xor	v0,v1,v0
  4aef7c:	afc2001c 	sw	v0,28(s8)
  4aef80:	8fc30014 	lw	v1,20(s8)
  4aef84:	8fc20024 	lw	v0,36(s8)
  4aef88:	00000000 	nop
  4aef8c:	00621025 	or	v0,v1,v0
  4aef90:	afc20014 	sw	v0,20(s8)
  4aef94:	8fc30014 	lw	v1,20(s8)
  4aef98:	8fc20020 	lw	v0,32(s8)
  4aef9c:	00000000 	nop
  4aefa0:	00621026 	xor	v0,v1,v0
  4aefa4:	afc20014 	sw	v0,20(s8)
  4aefa8:	8fc30020 	lw	v1,32(s8)
  4aefac:	8fc2001c 	lw	v0,28(s8)
  4aefb0:	00000000 	nop
  4aefb4:	00621024 	and	v0,v1,v0
  4aefb8:	afc20020 	sw	v0,32(s8)
  4aefbc:	8fc30020 	lw	v1,32(s8)
  4aefc0:	8fc20018 	lw	v0,24(s8)
  4aefc4:	00000000 	nop
  4aefc8:	00621026 	xor	v0,v1,v0
  4aefcc:	afc20020 	sw	v0,32(s8)
  4aefd0:	8fc30014 	lw	v1,20(s8)
  4aefd4:	8fc2001c 	lw	v0,28(s8)
  4aefd8:	00000000 	nop
  4aefdc:	00621026 	xor	v0,v1,v0
  4aefe0:	afc20014 	sw	v0,20(s8)
  4aefe4:	8fc30018 	lw	v1,24(s8)
  4aefe8:	8fc20014 	lw	v0,20(s8)
  4aefec:	00000000 	nop
  4aeff0:	00621024 	and	v0,v1,v0
  4aeff4:	afc20018 	sw	v0,24(s8)
  4aeff8:	8fc30014 	lw	v1,20(s8)
  4aeffc:	8fc20020 	lw	v0,32(s8)
  4af000:	00000000 	nop
  4af004:	00621026 	xor	v0,v1,v0
  4af008:	afc20014 	sw	v0,20(s8)
  4af00c:	8fc30018 	lw	v1,24(s8)
  4af010:	8fc20024 	lw	v0,36(s8)
  4af014:	00000000 	nop
  4af018:	00621026 	xor	v0,v1,v0
  4af01c:	afc20018 	sw	v0,24(s8)
  4af020:	8fc30018 	lw	v1,24(s8)
  4af024:	8fc20014 	lw	v0,20(s8)
  4af028:	00000000 	nop
  4af02c:	00621026 	xor	v0,v1,v0
  4af030:	afc20018 	sw	v0,24(s8)
  4af034:	8fc20014 	lw	v0,20(s8)
  4af038:	00000000 	nop
  4af03c:	00021027 	nor	v0,zero,v0
  4af040:	afc20014 	sw	v0,20(s8)
      KEYMIX(r3,r0,r1,r2,r4,84);
  4af044:	8fc20008 	lw	v0,8(s8)
  4af048:	00000000 	nop
  4af04c:	24420170 	addiu	v0,v0,368
  4af050:	8c430000 	lw	v1,0(v0)
  4af054:	8fc20020 	lw	v0,32(s8)
  4af058:	00000000 	nop
  4af05c:	00431026 	xor	v0,v0,v1
  4af060:	afc20020 	sw	v0,32(s8)
  4af064:	8fc20008 	lw	v0,8(s8)
  4af068:	00000000 	nop
  4af06c:	24420174 	addiu	v0,v0,372
  4af070:	8c430000 	lw	v1,0(v0)
  4af074:	8fc20014 	lw	v0,20(s8)
  4af078:	00000000 	nop
  4af07c:	00431026 	xor	v0,v0,v1
  4af080:	afc20014 	sw	v0,20(s8)
  4af084:	8fc20008 	lw	v0,8(s8)
  4af088:	00000000 	nop
  4af08c:	24420178 	addiu	v0,v0,376
  4af090:	8c430000 	lw	v1,0(v0)
  4af094:	8fc20018 	lw	v0,24(s8)
  4af098:	00000000 	nop
  4af09c:	00431026 	xor	v0,v0,v1
  4af0a0:	afc20018 	sw	v0,24(s8)
  4af0a4:	8fc20008 	lw	v0,8(s8)
  4af0a8:	00000000 	nop
  4af0ac:	2442017c 	addiu	v0,v0,380
  4af0b0:	8c430000 	lw	v1,0(v0)
  4af0b4:	8fc2001c 	lw	v0,28(s8)
  4af0b8:	00000000 	nop
  4af0bc:	00431026 	xor	v0,v0,v1
  4af0c0:	afc2001c 	sw	v0,28(s8)

      /* round 12  */
      ILINTRANS(r3,r0,r1,r2,r4);
  4af0c4:	8fc20018 	lw	v0,24(s8)
  4af0c8:	00000000 	nop
  4af0cc:	00021a80 	sll	v1,v0,0xa
  4af0d0:	00021582 	srl	v0,v0,0x16
  4af0d4:	00621025 	or	v0,v1,v0
  4af0d8:	afc20018 	sw	v0,24(s8)
  4af0dc:	8fc20020 	lw	v0,32(s8)
  4af0e0:	00000000 	nop
  4af0e4:	00021ec0 	sll	v1,v0,0x1b
  4af0e8:	00021142 	srl	v0,v0,0x5
  4af0ec:	00621025 	or	v0,v1,v0
  4af0f0:	afc20020 	sw	v0,32(s8)
  4af0f4:	8fc30018 	lw	v1,24(s8)
  4af0f8:	8fc2001c 	lw	v0,28(s8)
  4af0fc:	00000000 	nop
  4af100:	00621026 	xor	v0,v1,v0
  4af104:	afc20018 	sw	v0,24(s8)
  4af108:	8fc20014 	lw	v0,20(s8)
  4af10c:	00000000 	nop
  4af110:	000211c0 	sll	v0,v0,0x7
  4af114:	afc20024 	sw	v0,36(s8)
  4af118:	8fc30020 	lw	v1,32(s8)
  4af11c:	8fc20014 	lw	v0,20(s8)
  4af120:	00000000 	nop
  4af124:	00621026 	xor	v0,v1,v0
  4af128:	afc20020 	sw	v0,32(s8)
  4af12c:	8fc30018 	lw	v1,24(s8)
  4af130:	8fc20024 	lw	v0,36(s8)
  4af134:	00000000 	nop
  4af138:	00621026 	xor	v0,v1,v0
  4af13c:	afc20018 	sw	v0,24(s8)
  4af140:	8fc30020 	lw	v1,32(s8)
  4af144:	8fc2001c 	lw	v0,28(s8)
  4af148:	00000000 	nop
  4af14c:	00621026 	xor	v0,v1,v0
  4af150:	afc20020 	sw	v0,32(s8)
  4af154:	8fc2001c 	lw	v0,28(s8)
  4af158:	00000000 	nop
  4af15c:	00021e40 	sll	v1,v0,0x19
  4af160:	000211c2 	srl	v0,v0,0x7
  4af164:	00621025 	or	v0,v1,v0
  4af168:	afc2001c 	sw	v0,28(s8)
  4af16c:	8fc20014 	lw	v0,20(s8)
  4af170:	00000000 	nop
  4af174:	00021fc0 	sll	v1,v0,0x1f
  4af178:	00021042 	srl	v0,v0,0x1
  4af17c:	00621025 	or	v0,v1,v0
  4af180:	afc20014 	sw	v0,20(s8)
  4af184:	8fc3001c 	lw	v1,28(s8)
  4af188:	8fc20018 	lw	v0,24(s8)
  4af18c:	00000000 	nop
  4af190:	00621026 	xor	v0,v1,v0
  4af194:	afc2001c 	sw	v0,28(s8)
  4af198:	8fc20020 	lw	v0,32(s8)
  4af19c:	00000000 	nop
  4af1a0:	000210c0 	sll	v0,v0,0x3
  4af1a4:	afc20024 	sw	v0,36(s8)
  4af1a8:	8fc30014 	lw	v1,20(s8)
  4af1ac:	8fc20020 	lw	v0,32(s8)
  4af1b0:	00000000 	nop
  4af1b4:	00621026 	xor	v0,v1,v0
  4af1b8:	afc20014 	sw	v0,20(s8)
  4af1bc:	8fc3001c 	lw	v1,28(s8)
  4af1c0:	8fc20024 	lw	v0,36(s8)
  4af1c4:	00000000 	nop
  4af1c8:	00621026 	xor	v0,v1,v0
  4af1cc:	afc2001c 	sw	v0,28(s8)
  4af1d0:	8fc30014 	lw	v1,20(s8)
  4af1d4:	8fc20018 	lw	v0,24(s8)
  4af1d8:	00000000 	nop
  4af1dc:	00621026 	xor	v0,v1,v0
  4af1e0:	afc20014 	sw	v0,20(s8)
  4af1e4:	8fc20018 	lw	v0,24(s8)
  4af1e8:	00000000 	nop
  4af1ec:	00021f40 	sll	v1,v0,0x1d
  4af1f0:	000210c2 	srl	v0,v0,0x3
  4af1f4:	00621025 	or	v0,v1,v0
  4af1f8:	afc20018 	sw	v0,24(s8)
  4af1fc:	8fc20020 	lw	v0,32(s8)
  4af200:	00000000 	nop
  4af204:	00021cc0 	sll	v1,v0,0x13
  4af208:	00021342 	srl	v0,v0,0xd
  4af20c:	00621025 	or	v0,v1,v0
  4af210:	afc20020 	sw	v0,32(s8)
      I4(r3,r0,r1,r2,r4);
  4af214:	8fc20018 	lw	v0,24(s8)
  4af218:	00000000 	nop
  4af21c:	afc20024 	sw	v0,36(s8)
  4af220:	8fc30018 	lw	v1,24(s8)
  4af224:	8fc2001c 	lw	v0,28(s8)
  4af228:	00000000 	nop
  4af22c:	00621024 	and	v0,v1,v0
  4af230:	afc20018 	sw	v0,24(s8)
  4af234:	8fc30018 	lw	v1,24(s8)
  4af238:	8fc20014 	lw	v0,20(s8)
  4af23c:	00000000 	nop
  4af240:	00621026 	xor	v0,v1,v0
  4af244:	afc20018 	sw	v0,24(s8)
  4af248:	8fc30014 	lw	v1,20(s8)
  4af24c:	8fc2001c 	lw	v0,28(s8)
  4af250:	00000000 	nop
  4af254:	00621025 	or	v0,v1,v0
  4af258:	afc20014 	sw	v0,20(s8)
  4af25c:	8fc30014 	lw	v1,20(s8)
  4af260:	8fc20020 	lw	v0,32(s8)
  4af264:	00000000 	nop
  4af268:	00621024 	and	v0,v1,v0
  4af26c:	afc20014 	sw	v0,20(s8)
  4af270:	8fc30024 	lw	v1,36(s8)
  4af274:	8fc20018 	lw	v0,24(s8)
  4af278:	00000000 	nop
  4af27c:	00621026 	xor	v0,v1,v0
  4af280:	afc20024 	sw	v0,36(s8)
  4af284:	8fc30024 	lw	v1,36(s8)
  4af288:	8fc20014 	lw	v0,20(s8)
  4af28c:	00000000 	nop
  4af290:	00621026 	xor	v0,v1,v0
  4af294:	afc20024 	sw	v0,36(s8)
  4af298:	8fc30014 	lw	v1,20(s8)
  4af29c:	8fc20018 	lw	v0,24(s8)
  4af2a0:	00000000 	nop
  4af2a4:	00621024 	and	v0,v1,v0
  4af2a8:	afc20014 	sw	v0,20(s8)
  4af2ac:	8fc20020 	lw	v0,32(s8)
  4af2b0:	00000000 	nop
  4af2b4:	00021027 	nor	v0,zero,v0
  4af2b8:	afc20020 	sw	v0,32(s8)
  4af2bc:	8fc3001c 	lw	v1,28(s8)
  4af2c0:	8fc20024 	lw	v0,36(s8)
  4af2c4:	00000000 	nop
  4af2c8:	00621026 	xor	v0,v1,v0
  4af2cc:	afc2001c 	sw	v0,28(s8)
  4af2d0:	8fc30014 	lw	v1,20(s8)
  4af2d4:	8fc2001c 	lw	v0,28(s8)
  4af2d8:	00000000 	nop
  4af2dc:	00621026 	xor	v0,v1,v0
  4af2e0:	afc20014 	sw	v0,20(s8)
  4af2e4:	8fc3001c 	lw	v1,28(s8)
  4af2e8:	8fc20020 	lw	v0,32(s8)
  4af2ec:	00000000 	nop
  4af2f0:	00621024 	and	v0,v1,v0
  4af2f4:	afc2001c 	sw	v0,28(s8)
  4af2f8:	8fc3001c 	lw	v1,28(s8)
  4af2fc:	8fc20018 	lw	v0,24(s8)
  4af300:	00000000 	nop
  4af304:	00621026 	xor	v0,v1,v0
  4af308:	afc2001c 	sw	v0,28(s8)
  4af30c:	8fc30020 	lw	v1,32(s8)
  4af310:	8fc20014 	lw	v0,20(s8)
  4af314:	00000000 	nop
  4af318:	00621026 	xor	v0,v1,v0
  4af31c:	afc20020 	sw	v0,32(s8)
  4af320:	8fc30018 	lw	v1,24(s8)
  4af324:	8fc20020 	lw	v0,32(s8)
  4af328:	00000000 	nop
  4af32c:	00621024 	and	v0,v1,v0
  4af330:	afc20018 	sw	v0,24(s8)
  4af334:	8fc3001c 	lw	v1,28(s8)
  4af338:	8fc20020 	lw	v0,32(s8)
  4af33c:	00000000 	nop
  4af340:	00621026 	xor	v0,v1,v0
  4af344:	afc2001c 	sw	v0,28(s8)
  4af348:	8fc30018 	lw	v1,24(s8)
  4af34c:	8fc20024 	lw	v0,36(s8)
  4af350:	00000000 	nop
  4af354:	00621026 	xor	v0,v1,v0
  4af358:	afc20018 	sw	v0,24(s8)
  4af35c:	8fc30018 	lw	v1,24(s8)
  4af360:	8fc2001c 	lw	v0,28(s8)
  4af364:	00000000 	nop
  4af368:	00621025 	or	v0,v1,v0
  4af36c:	afc20018 	sw	v0,24(s8)
  4af370:	8fc3001c 	lw	v1,28(s8)
  4af374:	8fc20020 	lw	v0,32(s8)
  4af378:	00000000 	nop
  4af37c:	00621026 	xor	v0,v1,v0
  4af380:	afc2001c 	sw	v0,28(s8)
  4af384:	8fc30018 	lw	v1,24(s8)
  4af388:	8fc20014 	lw	v0,20(s8)
  4af38c:	00000000 	nop
  4af390:	00621026 	xor	v0,v1,v0
  4af394:	afc20018 	sw	v0,24(s8)
      KEYMIX(r3,r2,r1,r4,r0,80);
  4af398:	8fc20008 	lw	v0,8(s8)
  4af39c:	00000000 	nop
  4af3a0:	24420160 	addiu	v0,v0,352
  4af3a4:	8c430000 	lw	v1,0(v0)
  4af3a8:	8fc20020 	lw	v0,32(s8)
  4af3ac:	00000000 	nop
  4af3b0:	00431026 	xor	v0,v0,v1
  4af3b4:	afc20020 	sw	v0,32(s8)
  4af3b8:	8fc20008 	lw	v0,8(s8)
  4af3bc:	00000000 	nop
  4af3c0:	24420164 	addiu	v0,v0,356
  4af3c4:	8c430000 	lw	v1,0(v0)
  4af3c8:	8fc2001c 	lw	v0,28(s8)
  4af3cc:	00000000 	nop
  4af3d0:	00431026 	xor	v0,v0,v1
  4af3d4:	afc2001c 	sw	v0,28(s8)
  4af3d8:	8fc20008 	lw	v0,8(s8)
  4af3dc:	00000000 	nop
  4af3e0:	24420168 	addiu	v0,v0,360
  4af3e4:	8c430000 	lw	v1,0(v0)
  4af3e8:	8fc20018 	lw	v0,24(s8)
  4af3ec:	00000000 	nop
  4af3f0:	00431026 	xor	v0,v0,v1
  4af3f4:	afc20018 	sw	v0,24(s8)
  4af3f8:	8fc20008 	lw	v0,8(s8)
  4af3fc:	00000000 	nop
  4af400:	2442016c 	addiu	v0,v0,364
  4af404:	8c430000 	lw	v1,0(v0)
  4af408:	8fc20024 	lw	v0,36(s8)
  4af40c:	00000000 	nop
  4af410:	00431026 	xor	v0,v0,v1
  4af414:	afc20024 	sw	v0,36(s8)

      /* round 13  */
      ILINTRANS(r3,r2,r1,r4,r0);
  4af418:	8fc20018 	lw	v0,24(s8)
  4af41c:	00000000 	nop
  4af420:	00021a80 	sll	v1,v0,0xa
  4af424:	00021582 	srl	v0,v0,0x16
  4af428:	00621025 	or	v0,v1,v0
  4af42c:	afc20018 	sw	v0,24(s8)
  4af430:	8fc20020 	lw	v0,32(s8)
  4af434:	00000000 	nop
  4af438:	00021ec0 	sll	v1,v0,0x1b
  4af43c:	00021142 	srl	v0,v0,0x5
  4af440:	00621025 	or	v0,v1,v0
  4af444:	afc20020 	sw	v0,32(s8)
  4af448:	8fc30018 	lw	v1,24(s8)
  4af44c:	8fc20024 	lw	v0,36(s8)
  4af450:	00000000 	nop
  4af454:	00621026 	xor	v0,v1,v0
  4af458:	afc20018 	sw	v0,24(s8)
  4af45c:	8fc2001c 	lw	v0,28(s8)
  4af460:	00000000 	nop
  4af464:	000211c0 	sll	v0,v0,0x7
  4af468:	afc20014 	sw	v0,20(s8)
  4af46c:	8fc30020 	lw	v1,32(s8)
  4af470:	8fc2001c 	lw	v0,28(s8)
  4af474:	00000000 	nop
  4af478:	00621026 	xor	v0,v1,v0
  4af47c:	afc20020 	sw	v0,32(s8)
  4af480:	8fc30018 	lw	v1,24(s8)
  4af484:	8fc20014 	lw	v0,20(s8)
  4af488:	00000000 	nop
  4af48c:	00621026 	xor	v0,v1,v0
  4af490:	afc20018 	sw	v0,24(s8)
  4af494:	8fc30020 	lw	v1,32(s8)
  4af498:	8fc20024 	lw	v0,36(s8)
  4af49c:	00000000 	nop
  4af4a0:	00621026 	xor	v0,v1,v0
  4af4a4:	afc20020 	sw	v0,32(s8)
  4af4a8:	8fc20024 	lw	v0,36(s8)
  4af4ac:	00000000 	nop
  4af4b0:	00021e40 	sll	v1,v0,0x19
  4af4b4:	000211c2 	srl	v0,v0,0x7
  4af4b8:	00621025 	or	v0,v1,v0
  4af4bc:	afc20024 	sw	v0,36(s8)
  4af4c0:	8fc2001c 	lw	v0,28(s8)
  4af4c4:	00000000 	nop
  4af4c8:	00021fc0 	sll	v1,v0,0x1f
  4af4cc:	00021042 	srl	v0,v0,0x1
  4af4d0:	00621025 	or	v0,v1,v0
  4af4d4:	afc2001c 	sw	v0,28(s8)
  4af4d8:	8fc30024 	lw	v1,36(s8)
  4af4dc:	8fc20018 	lw	v0,24(s8)
  4af4e0:	00000000 	nop
  4af4e4:	00621026 	xor	v0,v1,v0
  4af4e8:	afc20024 	sw	v0,36(s8)
  4af4ec:	8fc20020 	lw	v0,32(s8)
  4af4f0:	00000000 	nop
  4af4f4:	000210c0 	sll	v0,v0,0x3
  4af4f8:	afc20014 	sw	v0,20(s8)
  4af4fc:	8fc3001c 	lw	v1,28(s8)
  4af500:	8fc20020 	lw	v0,32(s8)
  4af504:	00000000 	nop
  4af508:	00621026 	xor	v0,v1,v0
  4af50c:	afc2001c 	sw	v0,28(s8)
  4af510:	8fc30024 	lw	v1,36(s8)
  4af514:	8fc20014 	lw	v0,20(s8)
  4af518:	00000000 	nop
  4af51c:	00621026 	xor	v0,v1,v0
  4af520:	afc20024 	sw	v0,36(s8)
  4af524:	8fc3001c 	lw	v1,28(s8)
  4af528:	8fc20018 	lw	v0,24(s8)
  4af52c:	00000000 	nop
  4af530:	00621026 	xor	v0,v1,v0
  4af534:	afc2001c 	sw	v0,28(s8)
  4af538:	8fc20018 	lw	v0,24(s8)
  4af53c:	00000000 	nop
  4af540:	00021f40 	sll	v1,v0,0x1d
  4af544:	000210c2 	srl	v0,v0,0x3
  4af548:	00621025 	or	v0,v1,v0
  4af54c:	afc20018 	sw	v0,24(s8)
  4af550:	8fc20020 	lw	v0,32(s8)
  4af554:	00000000 	nop
  4af558:	00021cc0 	sll	v1,v0,0x13
  4af55c:	00021342 	srl	v0,v0,0xd
  4af560:	00621025 	or	v0,v1,v0
  4af564:	afc20020 	sw	v0,32(s8)
      I3(r3,r2,r1,r4,r0);
  4af568:	8fc20018 	lw	v0,24(s8)
  4af56c:	00000000 	nop
  4af570:	afc20014 	sw	v0,20(s8)
  4af574:	8fc30018 	lw	v1,24(s8)
  4af578:	8fc2001c 	lw	v0,28(s8)
  4af57c:	00000000 	nop
  4af580:	00621026 	xor	v0,v1,v0
  4af584:	afc20018 	sw	v0,24(s8)
  4af588:	8fc30020 	lw	v1,32(s8)
  4af58c:	8fc20018 	lw	v0,24(s8)
  4af590:	00000000 	nop
  4af594:	00621026 	xor	v0,v1,v0
  4af598:	afc20020 	sw	v0,32(s8)
  4af59c:	8fc30014 	lw	v1,20(s8)
  4af5a0:	8fc20018 	lw	v0,24(s8)
  4af5a4:	00000000 	nop
  4af5a8:	00621024 	and	v0,v1,v0
  4af5ac:	afc20014 	sw	v0,20(s8)
  4af5b0:	8fc30014 	lw	v1,20(s8)
  4af5b4:	8fc20020 	lw	v0,32(s8)
  4af5b8:	00000000 	nop
  4af5bc:	00621026 	xor	v0,v1,v0
  4af5c0:	afc20014 	sw	v0,20(s8)
  4af5c4:	8fc30020 	lw	v1,32(s8)
  4af5c8:	8fc2001c 	lw	v0,28(s8)
  4af5cc:	00000000 	nop
  4af5d0:	00621024 	and	v0,v1,v0
  4af5d4:	afc20020 	sw	v0,32(s8)
  4af5d8:	8fc3001c 	lw	v1,28(s8)
  4af5dc:	8fc20024 	lw	v0,36(s8)
  4af5e0:	00000000 	nop
  4af5e4:	00621026 	xor	v0,v1,v0
  4af5e8:	afc2001c 	sw	v0,28(s8)
  4af5ec:	8fc30024 	lw	v1,36(s8)
  4af5f0:	8fc20014 	lw	v0,20(s8)
  4af5f4:	00000000 	nop
  4af5f8:	00621025 	or	v0,v1,v0
  4af5fc:	afc20024 	sw	v0,36(s8)
  4af600:	8fc30018 	lw	v1,24(s8)
  4af604:	8fc20024 	lw	v0,36(s8)
  4af608:	00000000 	nop
  4af60c:	00621026 	xor	v0,v1,v0
  4af610:	afc20018 	sw	v0,24(s8)
  4af614:	8fc30020 	lw	v1,32(s8)
  4af618:	8fc20024 	lw	v0,36(s8)
  4af61c:	00000000 	nop
  4af620:	00621026 	xor	v0,v1,v0
  4af624:	afc20020 	sw	v0,32(s8)
  4af628:	8fc3001c 	lw	v1,28(s8)
  4af62c:	8fc20014 	lw	v0,20(s8)
  4af630:	00000000 	nop
  4af634:	00621026 	xor	v0,v1,v0
  4af638:	afc2001c 	sw	v0,28(s8)
  4af63c:	8fc30024 	lw	v1,36(s8)
  4af640:	8fc20018 	lw	v0,24(s8)
  4af644:	00000000 	nop
  4af648:	00621024 	and	v0,v1,v0
  4af64c:	afc20024 	sw	v0,36(s8)
  4af650:	8fc30024 	lw	v1,36(s8)
  4af654:	8fc2001c 	lw	v0,28(s8)
  4af658:	00000000 	nop
  4af65c:	00621026 	xor	v0,v1,v0
  4af660:	afc20024 	sw	v0,36(s8)
  4af664:	8fc3001c 	lw	v1,28(s8)
  4af668:	8fc20020 	lw	v0,32(s8)
  4af66c:	00000000 	nop
  4af670:	00621026 	xor	v0,v1,v0
  4af674:	afc2001c 	sw	v0,28(s8)
  4af678:	8fc3001c 	lw	v1,28(s8)
  4af67c:	8fc20018 	lw	v0,24(s8)
  4af680:	00000000 	nop
  4af684:	00621025 	or	v0,v1,v0
  4af688:	afc2001c 	sw	v0,28(s8)
  4af68c:	8fc30020 	lw	v1,32(s8)
  4af690:	8fc20024 	lw	v0,36(s8)
  4af694:	00000000 	nop
  4af698:	00621026 	xor	v0,v1,v0
  4af69c:	afc20020 	sw	v0,32(s8)
  4af6a0:	8fc3001c 	lw	v1,28(s8)
  4af6a4:	8fc20014 	lw	v0,20(s8)
  4af6a8:	00000000 	nop
  4af6ac:	00621026 	xor	v0,v1,v0
  4af6b0:	afc2001c 	sw	v0,28(s8)
  4af6b4:	8fc30020 	lw	v1,32(s8)
  4af6b8:	8fc2001c 	lw	v0,28(s8)
  4af6bc:	00000000 	nop
  4af6c0:	00621026 	xor	v0,v1,v0
  4af6c4:	afc20020 	sw	v0,32(s8)
      KEYMIX(r1,r2,r4,r3,r0,76);
  4af6c8:	8fc20008 	lw	v0,8(s8)
  4af6cc:	00000000 	nop
  4af6d0:	24420150 	addiu	v0,v0,336
  4af6d4:	8c430000 	lw	v1,0(v0)
  4af6d8:	8fc20018 	lw	v0,24(s8)
  4af6dc:	00000000 	nop
  4af6e0:	00431026 	xor	v0,v0,v1
  4af6e4:	afc20018 	sw	v0,24(s8)
  4af6e8:	8fc20008 	lw	v0,8(s8)
  4af6ec:	00000000 	nop
  4af6f0:	24420154 	addiu	v0,v0,340
  4af6f4:	8c430000 	lw	v1,0(v0)
  4af6f8:	8fc2001c 	lw	v0,28(s8)
  4af6fc:	00000000 	nop
  4af700:	00431026 	xor	v0,v0,v1
  4af704:	afc2001c 	sw	v0,28(s8)
  4af708:	8fc20008 	lw	v0,8(s8)
  4af70c:	00000000 	nop
  4af710:	24420158 	addiu	v0,v0,344
  4af714:	8c430000 	lw	v1,0(v0)
  4af718:	8fc20024 	lw	v0,36(s8)
  4af71c:	00000000 	nop
  4af720:	00431026 	xor	v0,v0,v1
  4af724:	afc20024 	sw	v0,36(s8)
  4af728:	8fc20008 	lw	v0,8(s8)
  4af72c:	00000000 	nop
  4af730:	2442015c 	addiu	v0,v0,348
  4af734:	8c430000 	lw	v1,0(v0)
  4af738:	8fc20020 	lw	v0,32(s8)
  4af73c:	00000000 	nop
  4af740:	00431026 	xor	v0,v0,v1
  4af744:	afc20020 	sw	v0,32(s8)

      /* round 14  */
      ILINTRANS(r1,r2,r4,r3,r0);
  4af748:	8fc20024 	lw	v0,36(s8)
  4af74c:	00000000 	nop
  4af750:	00021a80 	sll	v1,v0,0xa
  4af754:	00021582 	srl	v0,v0,0x16
  4af758:	00621025 	or	v0,v1,v0
  4af75c:	afc20024 	sw	v0,36(s8)
  4af760:	8fc20018 	lw	v0,24(s8)
  4af764:	00000000 	nop
  4af768:	00021ec0 	sll	v1,v0,0x1b
  4af76c:	00021142 	srl	v0,v0,0x5
  4af770:	00621025 	or	v0,v1,v0
  4af774:	afc20018 	sw	v0,24(s8)
  4af778:	8fc30024 	lw	v1,36(s8)
  4af77c:	8fc20020 	lw	v0,32(s8)
  4af780:	00000000 	nop
  4af784:	00621026 	xor	v0,v1,v0
  4af788:	afc20024 	sw	v0,36(s8)
  4af78c:	8fc2001c 	lw	v0,28(s8)
  4af790:	00000000 	nop
  4af794:	000211c0 	sll	v0,v0,0x7
  4af798:	afc20014 	sw	v0,20(s8)
  4af79c:	8fc30018 	lw	v1,24(s8)
  4af7a0:	8fc2001c 	lw	v0,28(s8)
  4af7a4:	00000000 	nop
  4af7a8:	00621026 	xor	v0,v1,v0
  4af7ac:	afc20018 	sw	v0,24(s8)
  4af7b0:	8fc30024 	lw	v1,36(s8)
  4af7b4:	8fc20014 	lw	v0,20(s8)
  4af7b8:	00000000 	nop
  4af7bc:	00621026 	xor	v0,v1,v0
  4af7c0:	afc20024 	sw	v0,36(s8)
  4af7c4:	8fc30018 	lw	v1,24(s8)
  4af7c8:	8fc20020 	lw	v0,32(s8)
  4af7cc:	00000000 	nop
  4af7d0:	00621026 	xor	v0,v1,v0
  4af7d4:	afc20018 	sw	v0,24(s8)
  4af7d8:	8fc20020 	lw	v0,32(s8)
  4af7dc:	00000000 	nop
  4af7e0:	00021e40 	sll	v1,v0,0x19
  4af7e4:	000211c2 	srl	v0,v0,0x7
  4af7e8:	00621025 	or	v0,v1,v0
  4af7ec:	afc20020 	sw	v0,32(s8)
  4af7f0:	8fc2001c 	lw	v0,28(s8)
  4af7f4:	00000000 	nop
  4af7f8:	00021fc0 	sll	v1,v0,0x1f
  4af7fc:	00021042 	srl	v0,v0,0x1
  4af800:	00621025 	or	v0,v1,v0
  4af804:	afc2001c 	sw	v0,28(s8)
  4af808:	8fc30020 	lw	v1,32(s8)
  4af80c:	8fc20024 	lw	v0,36(s8)
  4af810:	00000000 	nop
  4af814:	00621026 	xor	v0,v1,v0
  4af818:	afc20020 	sw	v0,32(s8)
  4af81c:	8fc20018 	lw	v0,24(s8)
  4af820:	00000000 	nop
  4af824:	000210c0 	sll	v0,v0,0x3
  4af828:	afc20014 	sw	v0,20(s8)
  4af82c:	8fc3001c 	lw	v1,28(s8)
  4af830:	8fc20018 	lw	v0,24(s8)
  4af834:	00000000 	nop
  4af838:	00621026 	xor	v0,v1,v0
  4af83c:	afc2001c 	sw	v0,28(s8)
  4af840:	8fc30020 	lw	v1,32(s8)
  4af844:	8fc20014 	lw	v0,20(s8)
  4af848:	00000000 	nop
  4af84c:	00621026 	xor	v0,v1,v0
  4af850:	afc20020 	sw	v0,32(s8)
  4af854:	8fc3001c 	lw	v1,28(s8)
  4af858:	8fc20024 	lw	v0,36(s8)
  4af85c:	00000000 	nop
  4af860:	00621026 	xor	v0,v1,v0
  4af864:	afc2001c 	sw	v0,28(s8)
  4af868:	8fc20024 	lw	v0,36(s8)
  4af86c:	00000000 	nop
  4af870:	00021f40 	sll	v1,v0,0x1d
  4af874:	000210c2 	srl	v0,v0,0x3
  4af878:	00621025 	or	v0,v1,v0
  4af87c:	afc20024 	sw	v0,36(s8)
  4af880:	8fc20018 	lw	v0,24(s8)
  4af884:	00000000 	nop
  4af888:	00021cc0 	sll	v1,v0,0x13
  4af88c:	00021342 	srl	v0,v0,0xd
  4af890:	00621025 	or	v0,v1,v0
  4af894:	afc20018 	sw	v0,24(s8)
      I2(r1,r2,r4,r3,r0);
  4af898:	8fc30024 	lw	v1,36(s8)
  4af89c:	8fc20020 	lw	v0,32(s8)
  4af8a0:	00000000 	nop
  4af8a4:	00621026 	xor	v0,v1,v0
  4af8a8:	afc20024 	sw	v0,36(s8)
  4af8ac:	8fc30020 	lw	v1,32(s8)
  4af8b0:	8fc20018 	lw	v0,24(s8)
  4af8b4:	00000000 	nop
  4af8b8:	00621026 	xor	v0,v1,v0
  4af8bc:	afc20020 	sw	v0,32(s8)
  4af8c0:	8fc20020 	lw	v0,32(s8)
  4af8c4:	00000000 	nop
  4af8c8:	afc20014 	sw	v0,20(s8)
  4af8cc:	8fc30020 	lw	v1,32(s8)
  4af8d0:	8fc20024 	lw	v0,36(s8)
  4af8d4:	00000000 	nop
  4af8d8:	00621024 	and	v0,v1,v0
  4af8dc:	afc20020 	sw	v0,32(s8)
  4af8e0:	8fc30020 	lw	v1,32(s8)
  4af8e4:	8fc2001c 	lw	v0,28(s8)
  4af8e8:	00000000 	nop
  4af8ec:	00621026 	xor	v0,v1,v0
  4af8f0:	afc20020 	sw	v0,32(s8)
  4af8f4:	8fc3001c 	lw	v1,28(s8)
  4af8f8:	8fc20024 	lw	v0,36(s8)
  4af8fc:	00000000 	nop
  4af900:	00621025 	or	v0,v1,v0
  4af904:	afc2001c 	sw	v0,28(s8)
  4af908:	8fc3001c 	lw	v1,28(s8)
  4af90c:	8fc20014 	lw	v0,20(s8)
  4af910:	00000000 	nop
  4af914:	00621026 	xor	v0,v1,v0
  4af918:	afc2001c 	sw	v0,28(s8)
  4af91c:	8fc30014 	lw	v1,20(s8)
  4af920:	8fc20020 	lw	v0,32(s8)
  4af924:	00000000 	nop
  4af928:	00621024 	and	v0,v1,v0
  4af92c:	afc20014 	sw	v0,20(s8)
  4af930:	8fc30024 	lw	v1,36(s8)
  4af934:	8fc20020 	lw	v0,32(s8)
  4af938:	00000000 	nop
  4af93c:	00621026 	xor	v0,v1,v0
  4af940:	afc20024 	sw	v0,36(s8)
  4af944:	8fc30014 	lw	v1,20(s8)
  4af948:	8fc20018 	lw	v0,24(s8)
  4af94c:	00000000 	nop
  4af950:	00621024 	and	v0,v1,v0
  4af954:	afc20014 	sw	v0,20(s8)
  4af958:	8fc30014 	lw	v1,20(s8)
  4af95c:	8fc20024 	lw	v0,36(s8)
  4af960:	00000000 	nop
  4af964:	00621026 	xor	v0,v1,v0
  4af968:	afc20014 	sw	v0,20(s8)
  4af96c:	8fc30024 	lw	v1,36(s8)
  4af970:	8fc2001c 	lw	v0,28(s8)
  4af974:	00000000 	nop
  4af978:	00621024 	and	v0,v1,v0
  4af97c:	afc20024 	sw	v0,36(s8)
  4af980:	8fc30024 	lw	v1,36(s8)
  4af984:	8fc20018 	lw	v0,24(s8)
  4af988:	00000000 	nop
  4af98c:	00621025 	or	v0,v1,v0
  4af990:	afc20024 	sw	v0,36(s8)
  4af994:	8fc20020 	lw	v0,32(s8)
  4af998:	00000000 	nop
  4af99c:	00021027 	nor	v0,zero,v0
  4af9a0:	afc20020 	sw	v0,32(s8)
  4af9a4:	8fc30024 	lw	v1,36(s8)
  4af9a8:	8fc20020 	lw	v0,32(s8)
  4af9ac:	00000000 	nop
  4af9b0:	00621026 	xor	v0,v1,v0
  4af9b4:	afc20024 	sw	v0,36(s8)
  4af9b8:	8fc30018 	lw	v1,24(s8)
  4af9bc:	8fc20020 	lw	v0,32(s8)
  4af9c0:	00000000 	nop
  4af9c4:	00621026 	xor	v0,v1,v0
  4af9c8:	afc20018 	sw	v0,24(s8)
  4af9cc:	8fc30018 	lw	v1,24(s8)
  4af9d0:	8fc2001c 	lw	v0,28(s8)
  4af9d4:	00000000 	nop
  4af9d8:	00621024 	and	v0,v1,v0
  4af9dc:	afc20018 	sw	v0,24(s8)
  4af9e0:	8fc30020 	lw	v1,32(s8)
  4af9e4:	8fc20014 	lw	v0,20(s8)
  4af9e8:	00000000 	nop
  4af9ec:	00621026 	xor	v0,v1,v0
  4af9f0:	afc20020 	sw	v0,32(s8)
  4af9f4:	8fc30020 	lw	v1,32(s8)
  4af9f8:	8fc20018 	lw	v0,24(s8)
  4af9fc:	00000000 	nop
  4afa00:	00621026 	xor	v0,v1,v0
  4afa04:	afc20020 	sw	v0,32(s8)
      KEYMIX(r2,r0,r4,r3,r1,72);
  4afa08:	8fc20008 	lw	v0,8(s8)
  4afa0c:	00000000 	nop
  4afa10:	24420140 	addiu	v0,v0,320
  4afa14:	8c430000 	lw	v1,0(v0)
  4afa18:	8fc2001c 	lw	v0,28(s8)
  4afa1c:	00000000 	nop
  4afa20:	00431026 	xor	v0,v0,v1
  4afa24:	afc2001c 	sw	v0,28(s8)
  4afa28:	8fc20008 	lw	v0,8(s8)
  4afa2c:	00000000 	nop
  4afa30:	24420144 	addiu	v0,v0,324
  4afa34:	8c430000 	lw	v1,0(v0)
  4afa38:	8fc20014 	lw	v0,20(s8)
  4afa3c:	00000000 	nop
  4afa40:	00431026 	xor	v0,v0,v1
  4afa44:	afc20014 	sw	v0,20(s8)
  4afa48:	8fc20008 	lw	v0,8(s8)
  4afa4c:	00000000 	nop
  4afa50:	24420148 	addiu	v0,v0,328
  4afa54:	8c430000 	lw	v1,0(v0)
  4afa58:	8fc20024 	lw	v0,36(s8)
  4afa5c:	00000000 	nop
  4afa60:	00431026 	xor	v0,v0,v1
  4afa64:	afc20024 	sw	v0,36(s8)
  4afa68:	8fc20008 	lw	v0,8(s8)
  4afa6c:	00000000 	nop
  4afa70:	2442014c 	addiu	v0,v0,332
  4afa74:	8c430000 	lw	v1,0(v0)
  4afa78:	8fc20020 	lw	v0,32(s8)
  4afa7c:	00000000 	nop
  4afa80:	00431026 	xor	v0,v0,v1
  4afa84:	afc20020 	sw	v0,32(s8)

      /* round 15  */
      ILINTRANS(r2,r0,r4,r3,r1);
  4afa88:	8fc20024 	lw	v0,36(s8)
  4afa8c:	00000000 	nop
  4afa90:	00021a80 	sll	v1,v0,0xa
  4afa94:	00021582 	srl	v0,v0,0x16
  4afa98:	00621025 	or	v0,v1,v0
  4afa9c:	afc20024 	sw	v0,36(s8)
  4afaa0:	8fc2001c 	lw	v0,28(s8)
  4afaa4:	00000000 	nop
  4afaa8:	00021ec0 	sll	v1,v0,0x1b
  4afaac:	00021142 	srl	v0,v0,0x5
  4afab0:	00621025 	or	v0,v1,v0
  4afab4:	afc2001c 	sw	v0,28(s8)
  4afab8:	8fc30024 	lw	v1,36(s8)
  4afabc:	8fc20020 	lw	v0,32(s8)
  4afac0:	00000000 	nop
  4afac4:	00621026 	xor	v0,v1,v0
  4afac8:	afc20024 	sw	v0,36(s8)
  4afacc:	8fc20014 	lw	v0,20(s8)
  4afad0:	00000000 	nop
  4afad4:	000211c0 	sll	v0,v0,0x7
  4afad8:	afc20018 	sw	v0,24(s8)
  4afadc:	8fc3001c 	lw	v1,28(s8)
  4afae0:	8fc20014 	lw	v0,20(s8)
  4afae4:	00000000 	nop
  4afae8:	00621026 	xor	v0,v1,v0
  4afaec:	afc2001c 	sw	v0,28(s8)
  4afaf0:	8fc30024 	lw	v1,36(s8)
  4afaf4:	8fc20018 	lw	v0,24(s8)
  4afaf8:	00000000 	nop
  4afafc:	00621026 	xor	v0,v1,v0
  4afb00:	afc20024 	sw	v0,36(s8)
  4afb04:	8fc3001c 	lw	v1,28(s8)
  4afb08:	8fc20020 	lw	v0,32(s8)
  4afb0c:	00000000 	nop
  4afb10:	00621026 	xor	v0,v1,v0
  4afb14:	afc2001c 	sw	v0,28(s8)
  4afb18:	8fc20020 	lw	v0,32(s8)
  4afb1c:	00000000 	nop
  4afb20:	00021e40 	sll	v1,v0,0x19
  4afb24:	000211c2 	srl	v0,v0,0x7
  4afb28:	00621025 	or	v0,v1,v0
  4afb2c:	afc20020 	sw	v0,32(s8)
  4afb30:	8fc20014 	lw	v0,20(s8)
  4afb34:	00000000 	nop
  4afb38:	00021fc0 	sll	v1,v0,0x1f
  4afb3c:	00021042 	srl	v0,v0,0x1
  4afb40:	00621025 	or	v0,v1,v0
  4afb44:	afc20014 	sw	v0,20(s8)
  4afb48:	8fc30020 	lw	v1,32(s8)
  4afb4c:	8fc20024 	lw	v0,36(s8)
  4afb50:	00000000 	nop
  4afb54:	00621026 	xor	v0,v1,v0
  4afb58:	afc20020 	sw	v0,32(s8)
  4afb5c:	8fc2001c 	lw	v0,28(s8)
  4afb60:	00000000 	nop
  4afb64:	000210c0 	sll	v0,v0,0x3
  4afb68:	afc20018 	sw	v0,24(s8)
  4afb6c:	8fc30014 	lw	v1,20(s8)
  4afb70:	8fc2001c 	lw	v0,28(s8)
  4afb74:	00000000 	nop
  4afb78:	00621026 	xor	v0,v1,v0
  4afb7c:	afc20014 	sw	v0,20(s8)
  4afb80:	8fc30020 	lw	v1,32(s8)
  4afb84:	8fc20018 	lw	v0,24(s8)
  4afb88:	00000000 	nop
  4afb8c:	00621026 	xor	v0,v1,v0
  4afb90:	afc20020 	sw	v0,32(s8)
  4afb94:	8fc30014 	lw	v1,20(s8)
  4afb98:	8fc20024 	lw	v0,36(s8)
  4afb9c:	00000000 	nop
  4afba0:	00621026 	xor	v0,v1,v0
  4afba4:	afc20014 	sw	v0,20(s8)
  4afba8:	8fc20024 	lw	v0,36(s8)
  4afbac:	00000000 	nop
  4afbb0:	00021f40 	sll	v1,v0,0x1d
  4afbb4:	000210c2 	srl	v0,v0,0x3
  4afbb8:	00621025 	or	v0,v1,v0
  4afbbc:	afc20024 	sw	v0,36(s8)
  4afbc0:	8fc2001c 	lw	v0,28(s8)
  4afbc4:	00000000 	nop
  4afbc8:	00021cc0 	sll	v1,v0,0x13
  4afbcc:	00021342 	srl	v0,v0,0xd
  4afbd0:	00621025 	or	v0,v1,v0
  4afbd4:	afc2001c 	sw	v0,28(s8)
      I1(r2,r0,r4,r3,r1);
  4afbd8:	8fc20014 	lw	v0,20(s8)
  4afbdc:	00000000 	nop
  4afbe0:	afc20018 	sw	v0,24(s8)
  4afbe4:	8fc30014 	lw	v1,20(s8)
  4afbe8:	8fc20020 	lw	v0,32(s8)
  4afbec:	00000000 	nop
  4afbf0:	00621026 	xor	v0,v1,v0
  4afbf4:	afc20014 	sw	v0,20(s8)
  4afbf8:	8fc30020 	lw	v1,32(s8)
  4afbfc:	8fc20014 	lw	v0,20(s8)
  4afc00:	00000000 	nop
  4afc04:	00621024 	and	v0,v1,v0
  4afc08:	afc20020 	sw	v0,32(s8)
  4afc0c:	8fc30018 	lw	v1,24(s8)
  4afc10:	8fc20024 	lw	v0,36(s8)
  4afc14:	00000000 	nop
  4afc18:	00621026 	xor	v0,v1,v0
  4afc1c:	afc20018 	sw	v0,24(s8)
  4afc20:	8fc30020 	lw	v1,32(s8)
  4afc24:	8fc2001c 	lw	v0,28(s8)
  4afc28:	00000000 	nop
  4afc2c:	00621026 	xor	v0,v1,v0
  4afc30:	afc20020 	sw	v0,32(s8)
  4afc34:	8fc3001c 	lw	v1,28(s8)
  4afc38:	8fc20014 	lw	v0,20(s8)
  4afc3c:	00000000 	nop
  4afc40:	00621025 	or	v0,v1,v0
  4afc44:	afc2001c 	sw	v0,28(s8)
  4afc48:	8fc30024 	lw	v1,36(s8)
  4afc4c:	8fc20020 	lw	v0,32(s8)
  4afc50:	00000000 	nop
  4afc54:	00621026 	xor	v0,v1,v0
  4afc58:	afc20024 	sw	v0,36(s8)
  4afc5c:	8fc3001c 	lw	v1,28(s8)
  4afc60:	8fc20018 	lw	v0,24(s8)
  4afc64:	00000000 	nop
  4afc68:	00621026 	xor	v0,v1,v0
  4afc6c:	afc2001c 	sw	v0,28(s8)
  4afc70:	8fc3001c 	lw	v1,28(s8)
  4afc74:	8fc20024 	lw	v0,36(s8)
  4afc78:	00000000 	nop
  4afc7c:	00621025 	or	v0,v1,v0
  4afc80:	afc2001c 	sw	v0,28(s8)
  4afc84:	8fc30014 	lw	v1,20(s8)
  4afc88:	8fc20020 	lw	v0,32(s8)
  4afc8c:	00000000 	nop
  4afc90:	00621026 	xor	v0,v1,v0
  4afc94:	afc20014 	sw	v0,20(s8)
  4afc98:	8fc3001c 	lw	v1,28(s8)
  4afc9c:	8fc20014 	lw	v0,20(s8)
  4afca0:	00000000 	nop
  4afca4:	00621026 	xor	v0,v1,v0
  4afca8:	afc2001c 	sw	v0,28(s8)
  4afcac:	8fc30014 	lw	v1,20(s8)
  4afcb0:	8fc20020 	lw	v0,32(s8)
  4afcb4:	00000000 	nop
  4afcb8:	00621025 	or	v0,v1,v0
  4afcbc:	afc20014 	sw	v0,20(s8)
  4afcc0:	8fc30014 	lw	v1,20(s8)
  4afcc4:	8fc2001c 	lw	v0,28(s8)
  4afcc8:	00000000 	nop
  4afccc:	00621026 	xor	v0,v1,v0
  4afcd0:	afc20014 	sw	v0,20(s8)
  4afcd4:	8fc20018 	lw	v0,24(s8)
  4afcd8:	00000000 	nop
  4afcdc:	00021027 	nor	v0,zero,v0
  4afce0:	afc20018 	sw	v0,24(s8)
  4afce4:	8fc30018 	lw	v1,24(s8)
  4afce8:	8fc20014 	lw	v0,20(s8)
  4afcec:	00000000 	nop
  4afcf0:	00621026 	xor	v0,v1,v0
  4afcf4:	afc20018 	sw	v0,24(s8)
  4afcf8:	8fc30014 	lw	v1,20(s8)
  4afcfc:	8fc2001c 	lw	v0,28(s8)
  4afd00:	00000000 	nop
  4afd04:	00621025 	or	v0,v1,v0
  4afd08:	afc20014 	sw	v0,20(s8)
  4afd0c:	8fc30014 	lw	v1,20(s8)
  4afd10:	8fc2001c 	lw	v0,28(s8)
  4afd14:	00000000 	nop
  4afd18:	00621026 	xor	v0,v1,v0
  4afd1c:	afc20014 	sw	v0,20(s8)
  4afd20:	8fc30014 	lw	v1,20(s8)
  4afd24:	8fc20018 	lw	v0,24(s8)
  4afd28:	00000000 	nop
  4afd2c:	00621025 	or	v0,v1,v0
  4afd30:	afc20014 	sw	v0,20(s8)
  4afd34:	8fc30020 	lw	v1,32(s8)
  4afd38:	8fc20014 	lw	v0,20(s8)
  4afd3c:	00000000 	nop
  4afd40:	00621026 	xor	v0,v1,v0
  4afd44:	afc20020 	sw	v0,32(s8)
      KEYMIX(r1,r2,r3,r4,r0,68);
  4afd48:	8fc20008 	lw	v0,8(s8)
  4afd4c:	00000000 	nop
  4afd50:	24420130 	addiu	v0,v0,304
  4afd54:	8c430000 	lw	v1,0(v0)
  4afd58:	8fc20018 	lw	v0,24(s8)
  4afd5c:	00000000 	nop
  4afd60:	00431026 	xor	v0,v0,v1
  4afd64:	afc20018 	sw	v0,24(s8)
  4afd68:	8fc20008 	lw	v0,8(s8)
  4afd6c:	00000000 	nop
  4afd70:	24420134 	addiu	v0,v0,308
  4afd74:	8c430000 	lw	v1,0(v0)
  4afd78:	8fc2001c 	lw	v0,28(s8)
  4afd7c:	00000000 	nop
  4afd80:	00431026 	xor	v0,v0,v1
  4afd84:	afc2001c 	sw	v0,28(s8)
  4afd88:	8fc20008 	lw	v0,8(s8)
  4afd8c:	00000000 	nop
  4afd90:	24420138 	addiu	v0,v0,312
  4afd94:	8c430000 	lw	v1,0(v0)
  4afd98:	8fc20020 	lw	v0,32(s8)
  4afd9c:	00000000 	nop
  4afda0:	00431026 	xor	v0,v0,v1
  4afda4:	afc20020 	sw	v0,32(s8)
  4afda8:	8fc20008 	lw	v0,8(s8)
  4afdac:	00000000 	nop
  4afdb0:	2442013c 	addiu	v0,v0,316
  4afdb4:	8c430000 	lw	v1,0(v0)
  4afdb8:	8fc20024 	lw	v0,36(s8)
  4afdbc:	00000000 	nop
  4afdc0:	00431026 	xor	v0,v0,v1
  4afdc4:	afc20024 	sw	v0,36(s8)

      /* round 16  */
      ILINTRANS(r1,r2,r3,r4,r0);
  4afdc8:	8fc20020 	lw	v0,32(s8)
  4afdcc:	00000000 	nop
  4afdd0:	00021a80 	sll	v1,v0,0xa
  4afdd4:	00021582 	srl	v0,v0,0x16
  4afdd8:	00621025 	or	v0,v1,v0
  4afddc:	afc20020 	sw	v0,32(s8)
  4afde0:	8fc20018 	lw	v0,24(s8)
  4afde4:	00000000 	nop
  4afde8:	00021ec0 	sll	v1,v0,0x1b
  4afdec:	00021142 	srl	v0,v0,0x5
  4afdf0:	00621025 	or	v0,v1,v0
  4afdf4:	afc20018 	sw	v0,24(s8)
  4afdf8:	8fc30020 	lw	v1,32(s8)
  4afdfc:	8fc20024 	lw	v0,36(s8)
  4afe00:	00000000 	nop
  4afe04:	00621026 	xor	v0,v1,v0
  4afe08:	afc20020 	sw	v0,32(s8)
  4afe0c:	8fc2001c 	lw	v0,28(s8)
  4afe10:	00000000 	nop
  4afe14:	000211c0 	sll	v0,v0,0x7
  4afe18:	afc20014 	sw	v0,20(s8)
  4afe1c:	8fc30018 	lw	v1,24(s8)
  4afe20:	8fc2001c 	lw	v0,28(s8)
  4afe24:	00000000 	nop
  4afe28:	00621026 	xor	v0,v1,v0
  4afe2c:	afc20018 	sw	v0,24(s8)
  4afe30:	8fc30020 	lw	v1,32(s8)
  4afe34:	8fc20014 	lw	v0,20(s8)
  4afe38:	00000000 	nop
  4afe3c:	00621026 	xor	v0,v1,v0
  4afe40:	afc20020 	sw	v0,32(s8)
  4afe44:	8fc30018 	lw	v1,24(s8)
  4afe48:	8fc20024 	lw	v0,36(s8)
  4afe4c:	00000000 	nop
  4afe50:	00621026 	xor	v0,v1,v0
  4afe54:	afc20018 	sw	v0,24(s8)
  4afe58:	8fc20024 	lw	v0,36(s8)
  4afe5c:	00000000 	nop
  4afe60:	00021e40 	sll	v1,v0,0x19
  4afe64:	000211c2 	srl	v0,v0,0x7
  4afe68:	00621025 	or	v0,v1,v0
  4afe6c:	afc20024 	sw	v0,36(s8)
  4afe70:	8fc2001c 	lw	v0,28(s8)
  4afe74:	00000000 	nop
  4afe78:	00021fc0 	sll	v1,v0,0x1f
  4afe7c:	00021042 	srl	v0,v0,0x1
  4afe80:	00621025 	or	v0,v1,v0
  4afe84:	afc2001c 	sw	v0,28(s8)
  4afe88:	8fc30024 	lw	v1,36(s8)
  4afe8c:	8fc20020 	lw	v0,32(s8)
  4afe90:	00000000 	nop
  4afe94:	00621026 	xor	v0,v1,v0
  4afe98:	afc20024 	sw	v0,36(s8)
  4afe9c:	8fc20018 	lw	v0,24(s8)
  4afea0:	00000000 	nop
  4afea4:	000210c0 	sll	v0,v0,0x3
  4afea8:	afc20014 	sw	v0,20(s8)
  4afeac:	8fc3001c 	lw	v1,28(s8)
  4afeb0:	8fc20018 	lw	v0,24(s8)
  4afeb4:	00000000 	nop
  4afeb8:	00621026 	xor	v0,v1,v0
  4afebc:	afc2001c 	sw	v0,28(s8)
  4afec0:	8fc30024 	lw	v1,36(s8)
  4afec4:	8fc20014 	lw	v0,20(s8)
  4afec8:	00000000 	nop
  4afecc:	00621026 	xor	v0,v1,v0
  4afed0:	afc20024 	sw	v0,36(s8)
  4afed4:	8fc3001c 	lw	v1,28(s8)
  4afed8:	8fc20020 	lw	v0,32(s8)
  4afedc:	00000000 	nop
  4afee0:	00621026 	xor	v0,v1,v0
  4afee4:	afc2001c 	sw	v0,28(s8)
  4afee8:	8fc20020 	lw	v0,32(s8)
  4afeec:	00000000 	nop
  4afef0:	00021f40 	sll	v1,v0,0x1d
  4afef4:	000210c2 	srl	v0,v0,0x3
  4afef8:	00621025 	or	v0,v1,v0
  4afefc:	afc20020 	sw	v0,32(s8)
  4aff00:	8fc20018 	lw	v0,24(s8)
  4aff04:	00000000 	nop
  4aff08:	00021cc0 	sll	v1,v0,0x13
  4aff0c:	00021342 	srl	v0,v0,0xd
  4aff10:	00621025 	or	v0,v1,v0
  4aff14:	afc20018 	sw	v0,24(s8)
      I0(r1,r2,r3,r4,r0);
  4aff18:	8fc20020 	lw	v0,32(s8)
  4aff1c:	00000000 	nop
  4aff20:	00021027 	nor	v0,zero,v0
  4aff24:	afc20020 	sw	v0,32(s8)
  4aff28:	8fc2001c 	lw	v0,28(s8)
  4aff2c:	00000000 	nop
  4aff30:	afc20014 	sw	v0,20(s8)
  4aff34:	8fc3001c 	lw	v1,28(s8)
  4aff38:	8fc20018 	lw	v0,24(s8)
  4aff3c:	00000000 	nop
  4aff40:	00621025 	or	v0,v1,v0
  4aff44:	afc2001c 	sw	v0,28(s8)
  4aff48:	8fc20014 	lw	v0,20(s8)
  4aff4c:	00000000 	nop
  4aff50:	00021027 	nor	v0,zero,v0
  4aff54:	afc20014 	sw	v0,20(s8)
  4aff58:	8fc3001c 	lw	v1,28(s8)
  4aff5c:	8fc20020 	lw	v0,32(s8)
  4aff60:	00000000 	nop
  4aff64:	00621026 	xor	v0,v1,v0
  4aff68:	afc2001c 	sw	v0,28(s8)
  4aff6c:	8fc30020 	lw	v1,32(s8)
  4aff70:	8fc20014 	lw	v0,20(s8)
  4aff74:	00000000 	nop
  4aff78:	00621025 	or	v0,v1,v0
  4aff7c:	afc20020 	sw	v0,32(s8)
  4aff80:	8fc3001c 	lw	v1,28(s8)
  4aff84:	8fc20024 	lw	v0,36(s8)
  4aff88:	00000000 	nop
  4aff8c:	00621026 	xor	v0,v1,v0
  4aff90:	afc2001c 	sw	v0,28(s8)
  4aff94:	8fc30018 	lw	v1,24(s8)
  4aff98:	8fc20014 	lw	v0,20(s8)
  4aff9c:	00000000 	nop
  4affa0:	00621026 	xor	v0,v1,v0
  4affa4:	afc20018 	sw	v0,24(s8)
  4affa8:	8fc30020 	lw	v1,32(s8)
  4affac:	8fc20018 	lw	v0,24(s8)
  4affb0:	00000000 	nop
  4affb4:	00621026 	xor	v0,v1,v0
  4affb8:	afc20020 	sw	v0,32(s8)
  4affbc:	8fc30018 	lw	v1,24(s8)
  4affc0:	8fc20024 	lw	v0,36(s8)
  4affc4:	00000000 	nop
  4affc8:	00621024 	and	v0,v1,v0
  4affcc:	afc20018 	sw	v0,24(s8)
  4affd0:	8fc30014 	lw	v1,20(s8)
  4affd4:	8fc20018 	lw	v0,24(s8)
  4affd8:	00000000 	nop
  4affdc:	00621026 	xor	v0,v1,v0
  4affe0:	afc20014 	sw	v0,20(s8)
  4affe4:	8fc30018 	lw	v1,24(s8)
  4affe8:	8fc2001c 	lw	v0,28(s8)
  4affec:	00000000 	nop
  4afff0:	00621025 	or	v0,v1,v0
  4afff4:	afc20018 	sw	v0,24(s8)
  4afff8:	8fc30018 	lw	v1,24(s8)
  4afffc:	8fc20020 	lw	v0,32(s8)
  4b0000:	00000000 	nop
  4b0004:	00621026 	xor	v0,v1,v0
  4b0008:	afc20018 	sw	v0,24(s8)
  4b000c:	8fc30024 	lw	v1,36(s8)
  4b0010:	8fc20014 	lw	v0,20(s8)
  4b0014:	00000000 	nop
  4b0018:	00621026 	xor	v0,v1,v0
  4b001c:	afc20024 	sw	v0,36(s8)
  4b0020:	8fc30020 	lw	v1,32(s8)
  4b0024:	8fc2001c 	lw	v0,28(s8)
  4b0028:	00000000 	nop
  4b002c:	00621026 	xor	v0,v1,v0
  4b0030:	afc20020 	sw	v0,32(s8)
  4b0034:	8fc30024 	lw	v1,36(s8)
  4b0038:	8fc20018 	lw	v0,24(s8)
  4b003c:	00000000 	nop
  4b0040:	00621026 	xor	v0,v1,v0
  4b0044:	afc20024 	sw	v0,36(s8)
  4b0048:	8fc30024 	lw	v1,36(s8)
  4b004c:	8fc2001c 	lw	v0,28(s8)
  4b0050:	00000000 	nop
  4b0054:	00621026 	xor	v0,v1,v0
  4b0058:	afc20024 	sw	v0,36(s8)
  4b005c:	8fc30020 	lw	v1,32(s8)
  4b0060:	8fc20024 	lw	v0,36(s8)
  4b0064:	00000000 	nop
  4b0068:	00621024 	and	v0,v1,v0
  4b006c:	afc20020 	sw	v0,32(s8)
  4b0070:	8fc30014 	lw	v1,20(s8)
  4b0074:	8fc20020 	lw	v0,32(s8)
  4b0078:	00000000 	nop
  4b007c:	00621026 	xor	v0,v1,v0
  4b0080:	afc20014 	sw	v0,20(s8)
      KEYMIX(r1,r0,r2,r4,r3,64);
  4b0084:	8fc20008 	lw	v0,8(s8)
  4b0088:	00000000 	nop
  4b008c:	24420120 	addiu	v0,v0,288
  4b0090:	8c430000 	lw	v1,0(v0)
  4b0094:	8fc20018 	lw	v0,24(s8)
  4b0098:	00000000 	nop
  4b009c:	00431026 	xor	v0,v0,v1
  4b00a0:	afc20018 	sw	v0,24(s8)
  4b00a4:	8fc20008 	lw	v0,8(s8)
  4b00a8:	00000000 	nop
  4b00ac:	24420124 	addiu	v0,v0,292
  4b00b0:	8c430000 	lw	v1,0(v0)
  4b00b4:	8fc20014 	lw	v0,20(s8)
  4b00b8:	00000000 	nop
  4b00bc:	00431026 	xor	v0,v0,v1
  4b00c0:	afc20014 	sw	v0,20(s8)
  4b00c4:	8fc20008 	lw	v0,8(s8)
  4b00c8:	00000000 	nop
  4b00cc:	24420128 	addiu	v0,v0,296
  4b00d0:	8c430000 	lw	v1,0(v0)
  4b00d4:	8fc2001c 	lw	v0,28(s8)
  4b00d8:	00000000 	nop
  4b00dc:	00431026 	xor	v0,v0,v1
  4b00e0:	afc2001c 	sw	v0,28(s8)
  4b00e4:	8fc20008 	lw	v0,8(s8)
  4b00e8:	00000000 	nop
  4b00ec:	2442012c 	addiu	v0,v0,300
  4b00f0:	8c430000 	lw	v1,0(v0)
  4b00f4:	8fc20024 	lw	v0,36(s8)
  4b00f8:	00000000 	nop
  4b00fc:	00431026 	xor	v0,v0,v1
  4b0100:	afc20024 	sw	v0,36(s8)

      /* round 17  */
      ILINTRANS(r1,r0,r2,r4,r3);
  4b0104:	8fc2001c 	lw	v0,28(s8)
  4b0108:	00000000 	nop
  4b010c:	00021a80 	sll	v1,v0,0xa
  4b0110:	00021582 	srl	v0,v0,0x16
  4b0114:	00621025 	or	v0,v1,v0
  4b0118:	afc2001c 	sw	v0,28(s8)
  4b011c:	8fc20018 	lw	v0,24(s8)
  4b0120:	00000000 	nop
  4b0124:	00021ec0 	sll	v1,v0,0x1b
  4b0128:	00021142 	srl	v0,v0,0x5
  4b012c:	00621025 	or	v0,v1,v0
  4b0130:	afc20018 	sw	v0,24(s8)
  4b0134:	8fc3001c 	lw	v1,28(s8)
  4b0138:	8fc20024 	lw	v0,36(s8)
  4b013c:	00000000 	nop
  4b0140:	00621026 	xor	v0,v1,v0
  4b0144:	afc2001c 	sw	v0,28(s8)
  4b0148:	8fc20014 	lw	v0,20(s8)
  4b014c:	00000000 	nop
  4b0150:	000211c0 	sll	v0,v0,0x7
  4b0154:	afc20020 	sw	v0,32(s8)
  4b0158:	8fc30018 	lw	v1,24(s8)
  4b015c:	8fc20014 	lw	v0,20(s8)
  4b0160:	00000000 	nop
  4b0164:	00621026 	xor	v0,v1,v0
  4b0168:	afc20018 	sw	v0,24(s8)
  4b016c:	8fc3001c 	lw	v1,28(s8)
  4b0170:	8fc20020 	lw	v0,32(s8)
  4b0174:	00000000 	nop
  4b0178:	00621026 	xor	v0,v1,v0
  4b017c:	afc2001c 	sw	v0,28(s8)
  4b0180:	8fc30018 	lw	v1,24(s8)
  4b0184:	8fc20024 	lw	v0,36(s8)
  4b0188:	00000000 	nop
  4b018c:	00621026 	xor	v0,v1,v0
  4b0190:	afc20018 	sw	v0,24(s8)
  4b0194:	8fc20024 	lw	v0,36(s8)
  4b0198:	00000000 	nop
  4b019c:	00021e40 	sll	v1,v0,0x19
  4b01a0:	000211c2 	srl	v0,v0,0x7
  4b01a4:	00621025 	or	v0,v1,v0
  4b01a8:	afc20024 	sw	v0,36(s8)
  4b01ac:	8fc20014 	lw	v0,20(s8)
  4b01b0:	00000000 	nop
  4b01b4:	00021fc0 	sll	v1,v0,0x1f
  4b01b8:	00021042 	srl	v0,v0,0x1
  4b01bc:	00621025 	or	v0,v1,v0
  4b01c0:	afc20014 	sw	v0,20(s8)
  4b01c4:	8fc30024 	lw	v1,36(s8)
  4b01c8:	8fc2001c 	lw	v0,28(s8)
  4b01cc:	00000000 	nop
  4b01d0:	00621026 	xor	v0,v1,v0
  4b01d4:	afc20024 	sw	v0,36(s8)
  4b01d8:	8fc20018 	lw	v0,24(s8)
  4b01dc:	00000000 	nop
  4b01e0:	000210c0 	sll	v0,v0,0x3
  4b01e4:	afc20020 	sw	v0,32(s8)
  4b01e8:	8fc30014 	lw	v1,20(s8)
  4b01ec:	8fc20018 	lw	v0,24(s8)
  4b01f0:	00000000 	nop
  4b01f4:	00621026 	xor	v0,v1,v0
  4b01f8:	afc20014 	sw	v0,20(s8)
  4b01fc:	8fc30024 	lw	v1,36(s8)
  4b0200:	8fc20020 	lw	v0,32(s8)
  4b0204:	00000000 	nop
  4b0208:	00621026 	xor	v0,v1,v0
  4b020c:	afc20024 	sw	v0,36(s8)
  4b0210:	8fc30014 	lw	v1,20(s8)
  4b0214:	8fc2001c 	lw	v0,28(s8)
  4b0218:	00000000 	nop
  4b021c:	00621026 	xor	v0,v1,v0
  4b0220:	afc20014 	sw	v0,20(s8)
  4b0224:	8fc2001c 	lw	v0,28(s8)
  4b0228:	00000000 	nop
  4b022c:	00021f40 	sll	v1,v0,0x1d
  4b0230:	000210c2 	srl	v0,v0,0x3
  4b0234:	00621025 	or	v0,v1,v0
  4b0238:	afc2001c 	sw	v0,28(s8)
  4b023c:	8fc20018 	lw	v0,24(s8)
  4b0240:	00000000 	nop
  4b0244:	00021cc0 	sll	v1,v0,0x13
  4b0248:	00021342 	srl	v0,v0,0xd
  4b024c:	00621025 	or	v0,v1,v0
  4b0250:	afc20018 	sw	v0,24(s8)
      I7(r1,r0,r2,r4,r3);
  4b0254:	8fc2001c 	lw	v0,28(s8)
  4b0258:	00000000 	nop
  4b025c:	afc20020 	sw	v0,32(s8)
  4b0260:	8fc3001c 	lw	v1,28(s8)
  4b0264:	8fc20018 	lw	v0,24(s8)
  4b0268:	00000000 	nop
  4b026c:	00621026 	xor	v0,v1,v0
  4b0270:	afc2001c 	sw	v0,28(s8)
  4b0274:	8fc30018 	lw	v1,24(s8)
  4b0278:	8fc20024 	lw	v0,36(s8)
  4b027c:	00000000 	nop
  4b0280:	00621024 	and	v0,v1,v0
  4b0284:	afc20018 	sw	v0,24(s8)
  4b0288:	8fc30020 	lw	v1,32(s8)
  4b028c:	8fc20024 	lw	v0,36(s8)
  4b0290:	00000000 	nop
  4b0294:	00621025 	or	v0,v1,v0
  4b0298:	afc20020 	sw	v0,32(s8)
  4b029c:	8fc2001c 	lw	v0,28(s8)
  4b02a0:	00000000 	nop
  4b02a4:	00021027 	nor	v0,zero,v0
  4b02a8:	afc2001c 	sw	v0,28(s8)
  4b02ac:	8fc30024 	lw	v1,36(s8)
  4b02b0:	8fc20014 	lw	v0,20(s8)
  4b02b4:	00000000 	nop
  4b02b8:	00621026 	xor	v0,v1,v0
  4b02bc:	afc20024 	sw	v0,36(s8)
  4b02c0:	8fc30014 	lw	v1,20(s8)
  4b02c4:	8fc20018 	lw	v0,24(s8)
  4b02c8:	00000000 	nop
  4b02cc:	00621025 	or	v0,v1,v0
  4b02d0:	afc20014 	sw	v0,20(s8)
  4b02d4:	8fc30018 	lw	v1,24(s8)
  4b02d8:	8fc2001c 	lw	v0,28(s8)
  4b02dc:	00000000 	nop
  4b02e0:	00621026 	xor	v0,v1,v0
  4b02e4:	afc20018 	sw	v0,24(s8)
  4b02e8:	8fc3001c 	lw	v1,28(s8)
  4b02ec:	8fc20020 	lw	v0,32(s8)
  4b02f0:	00000000 	nop
  4b02f4:	00621024 	and	v0,v1,v0
  4b02f8:	afc2001c 	sw	v0,28(s8)
  4b02fc:	8fc30024 	lw	v1,36(s8)
  4b0300:	8fc20020 	lw	v0,32(s8)
  4b0304:	00000000 	nop
  4b0308:	00621024 	and	v0,v1,v0
  4b030c:	afc20024 	sw	v0,36(s8)
  4b0310:	8fc30014 	lw	v1,20(s8)
  4b0314:	8fc2001c 	lw	v0,28(s8)
  4b0318:	00000000 	nop
  4b031c:	00621026 	xor	v0,v1,v0
  4b0320:	afc20014 	sw	v0,20(s8)
  4b0324:	8fc3001c 	lw	v1,28(s8)
  4b0328:	8fc20018 	lw	v0,24(s8)
  4b032c:	00000000 	nop
  4b0330:	00621026 	xor	v0,v1,v0
  4b0334:	afc2001c 	sw	v0,28(s8)
  4b0338:	8fc30018 	lw	v1,24(s8)
  4b033c:	8fc2001c 	lw	v0,28(s8)
  4b0340:	00000000 	nop
  4b0344:	00621025 	or	v0,v1,v0
  4b0348:	afc20018 	sw	v0,24(s8)
  4b034c:	8fc30020 	lw	v1,32(s8)
  4b0350:	8fc20014 	lw	v0,20(s8)
  4b0354:	00000000 	nop
  4b0358:	00621026 	xor	v0,v1,v0
  4b035c:	afc20020 	sw	v0,32(s8)
  4b0360:	8fc30018 	lw	v1,24(s8)
  4b0364:	8fc20024 	lw	v0,36(s8)
  4b0368:	00000000 	nop
  4b036c:	00621026 	xor	v0,v1,v0
  4b0370:	afc20018 	sw	v0,24(s8)
  4b0374:	8fc30024 	lw	v1,36(s8)
  4b0378:	8fc20020 	lw	v0,32(s8)
  4b037c:	00000000 	nop
  4b0380:	00621026 	xor	v0,v1,v0
  4b0384:	afc20024 	sw	v0,36(s8)
  4b0388:	8fc30020 	lw	v1,32(s8)
  4b038c:	8fc20018 	lw	v0,24(s8)
  4b0390:	00000000 	nop
  4b0394:	00621025 	or	v0,v1,v0
  4b0398:	afc20020 	sw	v0,32(s8)
  4b039c:	8fc30024 	lw	v1,36(s8)
  4b03a0:	8fc2001c 	lw	v0,28(s8)
  4b03a4:	00000000 	nop
  4b03a8:	00621026 	xor	v0,v1,v0
  4b03ac:	afc20024 	sw	v0,36(s8)
  4b03b0:	8fc30020 	lw	v1,32(s8)
  4b03b4:	8fc2001c 	lw	v0,28(s8)
  4b03b8:	00000000 	nop
  4b03bc:	00621026 	xor	v0,v1,v0
  4b03c0:	afc20020 	sw	v0,32(s8)
      KEYMIX(r4,r1,r0,r3,r2,60);
  4b03c4:	8fc20008 	lw	v0,8(s8)
  4b03c8:	00000000 	nop
  4b03cc:	24420110 	addiu	v0,v0,272
  4b03d0:	8c430000 	lw	v1,0(v0)
  4b03d4:	8fc20024 	lw	v0,36(s8)
  4b03d8:	00000000 	nop
  4b03dc:	00431026 	xor	v0,v0,v1
  4b03e0:	afc20024 	sw	v0,36(s8)
  4b03e4:	8fc20008 	lw	v0,8(s8)
  4b03e8:	00000000 	nop
  4b03ec:	24420114 	addiu	v0,v0,276
  4b03f0:	8c430000 	lw	v1,0(v0)
  4b03f4:	8fc20018 	lw	v0,24(s8)
  4b03f8:	00000000 	nop
  4b03fc:	00431026 	xor	v0,v0,v1
  4b0400:	afc20018 	sw	v0,24(s8)
  4b0404:	8fc20008 	lw	v0,8(s8)
  4b0408:	00000000 	nop
  4b040c:	24420118 	addiu	v0,v0,280
  4b0410:	8c430000 	lw	v1,0(v0)
  4b0414:	8fc20014 	lw	v0,20(s8)
  4b0418:	00000000 	nop
  4b041c:	00431026 	xor	v0,v0,v1
  4b0420:	afc20014 	sw	v0,20(s8)
  4b0424:	8fc20008 	lw	v0,8(s8)
  4b0428:	00000000 	nop
  4b042c:	2442011c 	addiu	v0,v0,284
  4b0430:	8c430000 	lw	v1,0(v0)
  4b0434:	8fc20020 	lw	v0,32(s8)
  4b0438:	00000000 	nop
  4b043c:	00431026 	xor	v0,v0,v1
  4b0440:	afc20020 	sw	v0,32(s8)

      /* round 18  */
      ILINTRANS(r4,r1,r0,r3,r2);
  4b0444:	8fc20014 	lw	v0,20(s8)
  4b0448:	00000000 	nop
  4b044c:	00021a80 	sll	v1,v0,0xa
  4b0450:	00021582 	srl	v0,v0,0x16
  4b0454:	00621025 	or	v0,v1,v0
  4b0458:	afc20014 	sw	v0,20(s8)
  4b045c:	8fc20024 	lw	v0,36(s8)
  4b0460:	00000000 	nop
  4b0464:	00021ec0 	sll	v1,v0,0x1b
  4b0468:	00021142 	srl	v0,v0,0x5
  4b046c:	00621025 	or	v0,v1,v0
  4b0470:	afc20024 	sw	v0,36(s8)
  4b0474:	8fc30014 	lw	v1,20(s8)
  4b0478:	8fc20020 	lw	v0,32(s8)
  4b047c:	00000000 	nop
  4b0480:	00621026 	xor	v0,v1,v0
  4b0484:	afc20014 	sw	v0,20(s8)
  4b0488:	8fc20018 	lw	v0,24(s8)
  4b048c:	00000000 	nop
  4b0490:	000211c0 	sll	v0,v0,0x7
  4b0494:	afc2001c 	sw	v0,28(s8)
  4b0498:	8fc30024 	lw	v1,36(s8)
  4b049c:	8fc20018 	lw	v0,24(s8)
  4b04a0:	00000000 	nop
  4b04a4:	00621026 	xor	v0,v1,v0
  4b04a8:	afc20024 	sw	v0,36(s8)
  4b04ac:	8fc30014 	lw	v1,20(s8)
  4b04b0:	8fc2001c 	lw	v0,28(s8)
  4b04b4:	00000000 	nop
  4b04b8:	00621026 	xor	v0,v1,v0
  4b04bc:	afc20014 	sw	v0,20(s8)
  4b04c0:	8fc30024 	lw	v1,36(s8)
  4b04c4:	8fc20020 	lw	v0,32(s8)
  4b04c8:	00000000 	nop
  4b04cc:	00621026 	xor	v0,v1,v0
  4b04d0:	afc20024 	sw	v0,36(s8)
  4b04d4:	8fc20020 	lw	v0,32(s8)
  4b04d8:	00000000 	nop
  4b04dc:	00021e40 	sll	v1,v0,0x19
  4b04e0:	000211c2 	srl	v0,v0,0x7
  4b04e4:	00621025 	or	v0,v1,v0
  4b04e8:	afc20020 	sw	v0,32(s8)
  4b04ec:	8fc20018 	lw	v0,24(s8)
  4b04f0:	00000000 	nop
  4b04f4:	00021fc0 	sll	v1,v0,0x1f
  4b04f8:	00021042 	srl	v0,v0,0x1
  4b04fc:	00621025 	or	v0,v1,v0
  4b0500:	afc20018 	sw	v0,24(s8)
  4b0504:	8fc30020 	lw	v1,32(s8)
  4b0508:	8fc20014 	lw	v0,20(s8)
  4b050c:	00000000 	nop
  4b0510:	00621026 	xor	v0,v1,v0
  4b0514:	afc20020 	sw	v0,32(s8)
  4b0518:	8fc20024 	lw	v0,36(s8)
  4b051c:	00000000 	nop
  4b0520:	000210c0 	sll	v0,v0,0x3
  4b0524:	afc2001c 	sw	v0,28(s8)
  4b0528:	8fc30018 	lw	v1,24(s8)
  4b052c:	8fc20024 	lw	v0,36(s8)
  4b0530:	00000000 	nop
  4b0534:	00621026 	xor	v0,v1,v0
  4b0538:	afc20018 	sw	v0,24(s8)
  4b053c:	8fc30020 	lw	v1,32(s8)
  4b0540:	8fc2001c 	lw	v0,28(s8)
  4b0544:	00000000 	nop
  4b0548:	00621026 	xor	v0,v1,v0
  4b054c:	afc20020 	sw	v0,32(s8)
  4b0550:	8fc30018 	lw	v1,24(s8)
  4b0554:	8fc20014 	lw	v0,20(s8)
  4b0558:	00000000 	nop
  4b055c:	00621026 	xor	v0,v1,v0
  4b0560:	afc20018 	sw	v0,24(s8)
  4b0564:	8fc20014 	lw	v0,20(s8)
  4b0568:	00000000 	nop
  4b056c:	00021f40 	sll	v1,v0,0x1d
  4b0570:	000210c2 	srl	v0,v0,0x3
  4b0574:	00621025 	or	v0,v1,v0
  4b0578:	afc20014 	sw	v0,20(s8)
  4b057c:	8fc20024 	lw	v0,36(s8)
  4b0580:	00000000 	nop
  4b0584:	00021cc0 	sll	v1,v0,0x13
  4b0588:	00021342 	srl	v0,v0,0xd
  4b058c:	00621025 	or	v0,v1,v0
  4b0590:	afc20024 	sw	v0,36(s8)
      I6(r4,r1,r0,r3,r2);
  4b0594:	8fc30024 	lw	v1,36(s8)
  4b0598:	8fc20014 	lw	v0,20(s8)
  4b059c:	00000000 	nop
  4b05a0:	00621026 	xor	v0,v1,v0
  4b05a4:	afc20024 	sw	v0,36(s8)
  4b05a8:	8fc20014 	lw	v0,20(s8)
  4b05ac:	00000000 	nop
  4b05b0:	afc2001c 	sw	v0,28(s8)
  4b05b4:	8fc30014 	lw	v1,20(s8)
  4b05b8:	8fc20024 	lw	v0,36(s8)
  4b05bc:	00000000 	nop
  4b05c0:	00621024 	and	v0,v1,v0
  4b05c4:	afc20014 	sw	v0,20(s8)
  4b05c8:	8fc3001c 	lw	v1,28(s8)
  4b05cc:	8fc20020 	lw	v0,32(s8)
  4b05d0:	00000000 	nop
  4b05d4:	00621026 	xor	v0,v1,v0
  4b05d8:	afc2001c 	sw	v0,28(s8)
  4b05dc:	8fc20014 	lw	v0,20(s8)
  4b05e0:	00000000 	nop
  4b05e4:	00021027 	nor	v0,zero,v0
  4b05e8:	afc20014 	sw	v0,20(s8)
  4b05ec:	8fc30020 	lw	v1,32(s8)
  4b05f0:	8fc20018 	lw	v0,24(s8)
  4b05f4:	00000000 	nop
  4b05f8:	00621026 	xor	v0,v1,v0
  4b05fc:	afc20020 	sw	v0,32(s8)
  4b0600:	8fc30014 	lw	v1,20(s8)
  4b0604:	8fc20020 	lw	v0,32(s8)
  4b0608:	00000000 	nop
  4b060c:	00621026 	xor	v0,v1,v0
  4b0610:	afc20014 	sw	v0,20(s8)
  4b0614:	8fc3001c 	lw	v1,28(s8)
  4b0618:	8fc20024 	lw	v0,36(s8)
  4b061c:	00000000 	nop
  4b0620:	00621025 	or	v0,v1,v0
  4b0624:	afc2001c 	sw	v0,28(s8)
  4b0628:	8fc30024 	lw	v1,36(s8)
  4b062c:	8fc20014 	lw	v0,20(s8)
  4b0630:	00000000 	nop
  4b0634:	00621026 	xor	v0,v1,v0
  4b0638:	afc20024 	sw	v0,36(s8)
  4b063c:	8fc30020 	lw	v1,32(s8)
  4b0640:	8fc2001c 	lw	v0,28(s8)
  4b0644:	00000000 	nop
  4b0648:	00621026 	xor	v0,v1,v0
  4b064c:	afc20020 	sw	v0,32(s8)
  4b0650:	8fc3001c 	lw	v1,28(s8)
  4b0654:	8fc20018 	lw	v0,24(s8)
  4b0658:	00000000 	nop
  4b065c:	00621026 	xor	v0,v1,v0
  4b0660:	afc2001c 	sw	v0,28(s8)
  4b0664:	8fc30018 	lw	v1,24(s8)
  4b0668:	8fc20020 	lw	v0,32(s8)
  4b066c:	00000000 	nop
  4b0670:	00621024 	and	v0,v1,v0
  4b0674:	afc20018 	sw	v0,24(s8)
  4b0678:	8fc30018 	lw	v1,24(s8)
  4b067c:	8fc20024 	lw	v0,36(s8)
  4b0680:	00000000 	nop
  4b0684:	00621026 	xor	v0,v1,v0
  4b0688:	afc20018 	sw	v0,24(s8)
  4b068c:	8fc30024 	lw	v1,36(s8)
  4b0690:	8fc20020 	lw	v0,32(s8)
  4b0694:	00000000 	nop
  4b0698:	00621026 	xor	v0,v1,v0
  4b069c:	afc20024 	sw	v0,36(s8)
  4b06a0:	8fc30024 	lw	v1,36(s8)
  4b06a4:	8fc20014 	lw	v0,20(s8)
  4b06a8:	00000000 	nop
  4b06ac:	00621025 	or	v0,v1,v0
  4b06b0:	afc20024 	sw	v0,36(s8)
  4b06b4:	8fc30020 	lw	v1,32(s8)
  4b06b8:	8fc20018 	lw	v0,24(s8)
  4b06bc:	00000000 	nop
  4b06c0:	00621026 	xor	v0,v1,v0
  4b06c4:	afc20020 	sw	v0,32(s8)
  4b06c8:	8fc3001c 	lw	v1,28(s8)
  4b06cc:	8fc20024 	lw	v0,36(s8)
  4b06d0:	00000000 	nop
  4b06d4:	00621026 	xor	v0,v1,v0
  4b06d8:	afc2001c 	sw	v0,28(s8)
      KEYMIX(r1,r0,r2,r3,r4,56);
  4b06dc:	8fc20008 	lw	v0,8(s8)
  4b06e0:	00000000 	nop
  4b06e4:	24420100 	addiu	v0,v0,256
  4b06e8:	8c430000 	lw	v1,0(v0)
  4b06ec:	8fc20018 	lw	v0,24(s8)
  4b06f0:	00000000 	nop
  4b06f4:	00431026 	xor	v0,v0,v1
  4b06f8:	afc20018 	sw	v0,24(s8)
  4b06fc:	8fc20008 	lw	v0,8(s8)
  4b0700:	00000000 	nop
  4b0704:	24420104 	addiu	v0,v0,260
  4b0708:	8c430000 	lw	v1,0(v0)
  4b070c:	8fc20014 	lw	v0,20(s8)
  4b0710:	00000000 	nop
  4b0714:	00431026 	xor	v0,v0,v1
  4b0718:	afc20014 	sw	v0,20(s8)
  4b071c:	8fc20008 	lw	v0,8(s8)
  4b0720:	00000000 	nop
  4b0724:	24420108 	addiu	v0,v0,264
  4b0728:	8c430000 	lw	v1,0(v0)
  4b072c:	8fc2001c 	lw	v0,28(s8)
  4b0730:	00000000 	nop
  4b0734:	00431026 	xor	v0,v0,v1
  4b0738:	afc2001c 	sw	v0,28(s8)
  4b073c:	8fc20008 	lw	v0,8(s8)
  4b0740:	00000000 	nop
  4b0744:	2442010c 	addiu	v0,v0,268
  4b0748:	8c430000 	lw	v1,0(v0)
  4b074c:	8fc20020 	lw	v0,32(s8)
  4b0750:	00000000 	nop
  4b0754:	00431026 	xor	v0,v0,v1
  4b0758:	afc20020 	sw	v0,32(s8)

      /* round 19  */
      ILINTRANS(r1,r0,r2,r3,r4);
  4b075c:	8fc2001c 	lw	v0,28(s8)
  4b0760:	00000000 	nop
  4b0764:	00021a80 	sll	v1,v0,0xa
  4b0768:	00021582 	srl	v0,v0,0x16
  4b076c:	00621025 	or	v0,v1,v0
  4b0770:	afc2001c 	sw	v0,28(s8)
  4b0774:	8fc20018 	lw	v0,24(s8)
  4b0778:	00000000 	nop
  4b077c:	00021ec0 	sll	v1,v0,0x1b
  4b0780:	00021142 	srl	v0,v0,0x5
  4b0784:	00621025 	or	v0,v1,v0
  4b0788:	afc20018 	sw	v0,24(s8)
  4b078c:	8fc3001c 	lw	v1,28(s8)
  4b0790:	8fc20020 	lw	v0,32(s8)
  4b0794:	00000000 	nop
  4b0798:	00621026 	xor	v0,v1,v0
  4b079c:	afc2001c 	sw	v0,28(s8)
  4b07a0:	8fc20014 	lw	v0,20(s8)
  4b07a4:	00000000 	nop
  4b07a8:	000211c0 	sll	v0,v0,0x7
  4b07ac:	afc20024 	sw	v0,36(s8)
  4b07b0:	8fc30018 	lw	v1,24(s8)
  4b07b4:	8fc20014 	lw	v0,20(s8)
  4b07b8:	00000000 	nop
  4b07bc:	00621026 	xor	v0,v1,v0
  4b07c0:	afc20018 	sw	v0,24(s8)
  4b07c4:	8fc3001c 	lw	v1,28(s8)
  4b07c8:	8fc20024 	lw	v0,36(s8)
  4b07cc:	00000000 	nop
  4b07d0:	00621026 	xor	v0,v1,v0
  4b07d4:	afc2001c 	sw	v0,28(s8)
  4b07d8:	8fc30018 	lw	v1,24(s8)
  4b07dc:	8fc20020 	lw	v0,32(s8)
  4b07e0:	00000000 	nop
  4b07e4:	00621026 	xor	v0,v1,v0
  4b07e8:	afc20018 	sw	v0,24(s8)
  4b07ec:	8fc20020 	lw	v0,32(s8)
  4b07f0:	00000000 	nop
  4b07f4:	00021e40 	sll	v1,v0,0x19
  4b07f8:	000211c2 	srl	v0,v0,0x7
  4b07fc:	00621025 	or	v0,v1,v0
  4b0800:	afc20020 	sw	v0,32(s8)
  4b0804:	8fc20014 	lw	v0,20(s8)
  4b0808:	00000000 	nop
  4b080c:	00021fc0 	sll	v1,v0,0x1f
  4b0810:	00021042 	srl	v0,v0,0x1
  4b0814:	00621025 	or	v0,v1,v0
  4b0818:	afc20014 	sw	v0,20(s8)
  4b081c:	8fc30020 	lw	v1,32(s8)
  4b0820:	8fc2001c 	lw	v0,28(s8)
  4b0824:	00000000 	nop
  4b0828:	00621026 	xor	v0,v1,v0
  4b082c:	afc20020 	sw	v0,32(s8)
  4b0830:	8fc20018 	lw	v0,24(s8)
  4b0834:	00000000 	nop
  4b0838:	000210c0 	sll	v0,v0,0x3
  4b083c:	afc20024 	sw	v0,36(s8)
  4b0840:	8fc30014 	lw	v1,20(s8)
  4b0844:	8fc20018 	lw	v0,24(s8)
  4b0848:	00000000 	nop
  4b084c:	00621026 	xor	v0,v1,v0
  4b0850:	afc20014 	sw	v0,20(s8)
  4b0854:	8fc30020 	lw	v1,32(s8)
  4b0858:	8fc20024 	lw	v0,36(s8)
  4b085c:	00000000 	nop
  4b0860:	00621026 	xor	v0,v1,v0
  4b0864:	afc20020 	sw	v0,32(s8)
  4b0868:	8fc30014 	lw	v1,20(s8)
  4b086c:	8fc2001c 	lw	v0,28(s8)
  4b0870:	00000000 	nop
  4b0874:	00621026 	xor	v0,v1,v0
  4b0878:	afc20014 	sw	v0,20(s8)
  4b087c:	8fc2001c 	lw	v0,28(s8)
  4b0880:	00000000 	nop
  4b0884:	00021f40 	sll	v1,v0,0x1d
  4b0888:	000210c2 	srl	v0,v0,0x3
  4b088c:	00621025 	or	v0,v1,v0
  4b0890:	afc2001c 	sw	v0,28(s8)
  4b0894:	8fc20018 	lw	v0,24(s8)
  4b0898:	00000000 	nop
  4b089c:	00021cc0 	sll	v1,v0,0x13
  4b08a0:	00021342 	srl	v0,v0,0xd
  4b08a4:	00621025 	or	v0,v1,v0
  4b08a8:	afc20018 	sw	v0,24(s8)
      I5(r1,r0,r2,r3,r4);
  4b08ac:	8fc20014 	lw	v0,20(s8)
  4b08b0:	00000000 	nop
  4b08b4:	00021027 	nor	v0,zero,v0
  4b08b8:	afc20014 	sw	v0,20(s8)
  4b08bc:	8fc20020 	lw	v0,32(s8)
  4b08c0:	00000000 	nop
  4b08c4:	afc20024 	sw	v0,36(s8)
  4b08c8:	8fc3001c 	lw	v1,28(s8)
  4b08cc:	8fc20014 	lw	v0,20(s8)
  4b08d0:	00000000 	nop
  4b08d4:	00621026 	xor	v0,v1,v0
  4b08d8:	afc2001c 	sw	v0,28(s8)
  4b08dc:	8fc30020 	lw	v1,32(s8)
  4b08e0:	8fc20018 	lw	v0,24(s8)
  4b08e4:	00000000 	nop
  4b08e8:	00621025 	or	v0,v1,v0
  4b08ec:	afc20020 	sw	v0,32(s8)
  4b08f0:	8fc30020 	lw	v1,32(s8)
  4b08f4:	8fc2001c 	lw	v0,28(s8)
  4b08f8:	00000000 	nop
  4b08fc:	00621026 	xor	v0,v1,v0
  4b0900:	afc20020 	sw	v0,32(s8)
  4b0904:	8fc3001c 	lw	v1,28(s8)
  4b0908:	8fc20014 	lw	v0,20(s8)
  4b090c:	00000000 	nop
  4b0910:	00621025 	or	v0,v1,v0
  4b0914:	afc2001c 	sw	v0,28(s8)
  4b0918:	8fc3001c 	lw	v1,28(s8)
  4b091c:	8fc20018 	lw	v0,24(s8)
  4b0920:	00000000 	nop
  4b0924:	00621024 	and	v0,v1,v0
  4b0928:	afc2001c 	sw	v0,28(s8)
  4b092c:	8fc30024 	lw	v1,36(s8)
  4b0930:	8fc20020 	lw	v0,32(s8)
  4b0934:	00000000 	nop
  4b0938:	00621026 	xor	v0,v1,v0
  4b093c:	afc20024 	sw	v0,36(s8)
  4b0940:	8fc3001c 	lw	v1,28(s8)
  4b0944:	8fc20024 	lw	v0,36(s8)
  4b0948:	00000000 	nop
  4b094c:	00621026 	xor	v0,v1,v0
  4b0950:	afc2001c 	sw	v0,28(s8)
  4b0954:	8fc30024 	lw	v1,36(s8)
  4b0958:	8fc20018 	lw	v0,24(s8)
  4b095c:	00000000 	nop
  4b0960:	00621025 	or	v0,v1,v0
  4b0964:	afc20024 	sw	v0,36(s8)
  4b0968:	8fc30024 	lw	v1,36(s8)
  4b096c:	8fc20014 	lw	v0,20(s8)
  4b0970:	00000000 	nop
  4b0974:	00621026 	xor	v0,v1,v0
  4b0978:	afc20024 	sw	v0,36(s8)
  4b097c:	8fc30014 	lw	v1,20(s8)
  4b0980:	8fc2001c 	lw	v0,28(s8)
  4b0984:	00000000 	nop
  4b0988:	00621024 	and	v0,v1,v0
  4b098c:	afc20014 	sw	v0,20(s8)
  4b0990:	8fc30014 	lw	v1,20(s8)
  4b0994:	8fc20020 	lw	v0,32(s8)
  4b0998:	00000000 	nop
  4b099c:	00621026 	xor	v0,v1,v0
  4b09a0:	afc20014 	sw	v0,20(s8)
  4b09a4:	8fc30024 	lw	v1,36(s8)
  4b09a8:	8fc2001c 	lw	v0,28(s8)
  4b09ac:	00000000 	nop
  4b09b0:	00621026 	xor	v0,v1,v0
  4b09b4:	afc20024 	sw	v0,36(s8)
  4b09b8:	8fc30020 	lw	v1,32(s8)
  4b09bc:	8fc20024 	lw	v0,36(s8)
  4b09c0:	00000000 	nop
  4b09c4:	00621024 	and	v0,v1,v0
  4b09c8:	afc20020 	sw	v0,32(s8)
  4b09cc:	8fc30024 	lw	v1,36(s8)
  4b09d0:	8fc20014 	lw	v0,20(s8)
  4b09d4:	00000000 	nop
  4b09d8:	00621026 	xor	v0,v1,v0
  4b09dc:	afc20024 	sw	v0,36(s8)
  4b09e0:	8fc30020 	lw	v1,32(s8)
  4b09e4:	8fc20018 	lw	v0,24(s8)
  4b09e8:	00000000 	nop
  4b09ec:	00621026 	xor	v0,v1,v0
  4b09f0:	afc20020 	sw	v0,32(s8)
  4b09f4:	8fc30020 	lw	v1,32(s8)
  4b09f8:	8fc20024 	lw	v0,36(s8)
  4b09fc:	00000000 	nop
  4b0a00:	00621026 	xor	v0,v1,v0
  4b0a04:	afc20020 	sw	v0,32(s8)
  4b0a08:	8fc20024 	lw	v0,36(s8)
  4b0a0c:	00000000 	nop
  4b0a10:	00021027 	nor	v0,zero,v0
  4b0a14:	afc20024 	sw	v0,36(s8)
      KEYMIX(r0,r4,r3,r2,r1,52);
  4b0a18:	8fc20008 	lw	v0,8(s8)
  4b0a1c:	00000000 	nop
  4b0a20:	244200f0 	addiu	v0,v0,240
  4b0a24:	8c430000 	lw	v1,0(v0)
  4b0a28:	8fc20014 	lw	v0,20(s8)
  4b0a2c:	00000000 	nop
  4b0a30:	00431026 	xor	v0,v0,v1
  4b0a34:	afc20014 	sw	v0,20(s8)
  4b0a38:	8fc20008 	lw	v0,8(s8)
  4b0a3c:	00000000 	nop
  4b0a40:	244200f4 	addiu	v0,v0,244
  4b0a44:	8c430000 	lw	v1,0(v0)
  4b0a48:	8fc20024 	lw	v0,36(s8)
  4b0a4c:	00000000 	nop
  4b0a50:	00431026 	xor	v0,v0,v1
  4b0a54:	afc20024 	sw	v0,36(s8)
  4b0a58:	8fc20008 	lw	v0,8(s8)
  4b0a5c:	00000000 	nop
  4b0a60:	244200f8 	addiu	v0,v0,248
  4b0a64:	8c430000 	lw	v1,0(v0)
  4b0a68:	8fc20020 	lw	v0,32(s8)
  4b0a6c:	00000000 	nop
  4b0a70:	00431026 	xor	v0,v0,v1
  4b0a74:	afc20020 	sw	v0,32(s8)
  4b0a78:	8fc20008 	lw	v0,8(s8)
  4b0a7c:	00000000 	nop
  4b0a80:	244200fc 	addiu	v0,v0,252
  4b0a84:	8c430000 	lw	v1,0(v0)
  4b0a88:	8fc2001c 	lw	v0,28(s8)
  4b0a8c:	00000000 	nop
  4b0a90:	00431026 	xor	v0,v0,v1
  4b0a94:	afc2001c 	sw	v0,28(s8)

      /* round 20  */
      ILINTRANS(r0,r4,r3,r2,r1);
  4b0a98:	8fc20020 	lw	v0,32(s8)
  4b0a9c:	00000000 	nop
  4b0aa0:	00021a80 	sll	v1,v0,0xa
  4b0aa4:	00021582 	srl	v0,v0,0x16
  4b0aa8:	00621025 	or	v0,v1,v0
  4b0aac:	afc20020 	sw	v0,32(s8)
  4b0ab0:	8fc20014 	lw	v0,20(s8)
  4b0ab4:	00000000 	nop
  4b0ab8:	00021ec0 	sll	v1,v0,0x1b
  4b0abc:	00021142 	srl	v0,v0,0x5
  4b0ac0:	00621025 	or	v0,v1,v0
  4b0ac4:	afc20014 	sw	v0,20(s8)
  4b0ac8:	8fc30020 	lw	v1,32(s8)
  4b0acc:	8fc2001c 	lw	v0,28(s8)
  4b0ad0:	00000000 	nop
  4b0ad4:	00621026 	xor	v0,v1,v0
  4b0ad8:	afc20020 	sw	v0,32(s8)
  4b0adc:	8fc20024 	lw	v0,36(s8)
  4b0ae0:	00000000 	nop
  4b0ae4:	000211c0 	sll	v0,v0,0x7
  4b0ae8:	afc20018 	sw	v0,24(s8)
  4b0aec:	8fc30014 	lw	v1,20(s8)
  4b0af0:	8fc20024 	lw	v0,36(s8)
  4b0af4:	00000000 	nop
  4b0af8:	00621026 	xor	v0,v1,v0
  4b0afc:	afc20014 	sw	v0,20(s8)
  4b0b00:	8fc30020 	lw	v1,32(s8)
  4b0b04:	8fc20018 	lw	v0,24(s8)
  4b0b08:	00000000 	nop
  4b0b0c:	00621026 	xor	v0,v1,v0
  4b0b10:	afc20020 	sw	v0,32(s8)
  4b0b14:	8fc30014 	lw	v1,20(s8)
  4b0b18:	8fc2001c 	lw	v0,28(s8)
  4b0b1c:	00000000 	nop
  4b0b20:	00621026 	xor	v0,v1,v0
  4b0b24:	afc20014 	sw	v0,20(s8)
  4b0b28:	8fc2001c 	lw	v0,28(s8)
  4b0b2c:	00000000 	nop
  4b0b30:	00021e40 	sll	v1,v0,0x19
  4b0b34:	000211c2 	srl	v0,v0,0x7
  4b0b38:	00621025 	or	v0,v1,v0
  4b0b3c:	afc2001c 	sw	v0,28(s8)
  4b0b40:	8fc20024 	lw	v0,36(s8)
  4b0b44:	00000000 	nop
  4b0b48:	00021fc0 	sll	v1,v0,0x1f
  4b0b4c:	00021042 	srl	v0,v0,0x1
  4b0b50:	00621025 	or	v0,v1,v0
  4b0b54:	afc20024 	sw	v0,36(s8)
  4b0b58:	8fc3001c 	lw	v1,28(s8)
  4b0b5c:	8fc20020 	lw	v0,32(s8)
  4b0b60:	00000000 	nop
  4b0b64:	00621026 	xor	v0,v1,v0
  4b0b68:	afc2001c 	sw	v0,28(s8)
  4b0b6c:	8fc20014 	lw	v0,20(s8)
  4b0b70:	00000000 	nop
  4b0b74:	000210c0 	sll	v0,v0,0x3
  4b0b78:	afc20018 	sw	v0,24(s8)
  4b0b7c:	8fc30024 	lw	v1,36(s8)
  4b0b80:	8fc20014 	lw	v0,20(s8)
  4b0b84:	00000000 	nop
  4b0b88:	00621026 	xor	v0,v1,v0
  4b0b8c:	afc20024 	sw	v0,36(s8)
  4b0b90:	8fc3001c 	lw	v1,28(s8)
  4b0b94:	8fc20018 	lw	v0,24(s8)
  4b0b98:	00000000 	nop
  4b0b9c:	00621026 	xor	v0,v1,v0
  4b0ba0:	afc2001c 	sw	v0,28(s8)
  4b0ba4:	8fc30024 	lw	v1,36(s8)
  4b0ba8:	8fc20020 	lw	v0,32(s8)
  4b0bac:	00000000 	nop
  4b0bb0:	00621026 	xor	v0,v1,v0
  4b0bb4:	afc20024 	sw	v0,36(s8)
  4b0bb8:	8fc20020 	lw	v0,32(s8)
  4b0bbc:	00000000 	nop
  4b0bc0:	00021f40 	sll	v1,v0,0x1d
  4b0bc4:	000210c2 	srl	v0,v0,0x3
  4b0bc8:	00621025 	or	v0,v1,v0
  4b0bcc:	afc20020 	sw	v0,32(s8)
  4b0bd0:	8fc20014 	lw	v0,20(s8)
  4b0bd4:	00000000 	nop
  4b0bd8:	00021cc0 	sll	v1,v0,0x13
  4b0bdc:	00021342 	srl	v0,v0,0xd
  4b0be0:	00621025 	or	v0,v1,v0
  4b0be4:	afc20014 	sw	v0,20(s8)
      I4(r0,r4,r3,r2,r1);
  4b0be8:	8fc20020 	lw	v0,32(s8)
  4b0bec:	00000000 	nop
  4b0bf0:	afc20018 	sw	v0,24(s8)
  4b0bf4:	8fc30020 	lw	v1,32(s8)
  4b0bf8:	8fc2001c 	lw	v0,28(s8)
  4b0bfc:	00000000 	nop
  4b0c00:	00621024 	and	v0,v1,v0
  4b0c04:	afc20020 	sw	v0,32(s8)
  4b0c08:	8fc30020 	lw	v1,32(s8)
  4b0c0c:	8fc20024 	lw	v0,36(s8)
  4b0c10:	00000000 	nop
  4b0c14:	00621026 	xor	v0,v1,v0
  4b0c18:	afc20020 	sw	v0,32(s8)
  4b0c1c:	8fc30024 	lw	v1,36(s8)
  4b0c20:	8fc2001c 	lw	v0,28(s8)
  4b0c24:	00000000 	nop
  4b0c28:	00621025 	or	v0,v1,v0
  4b0c2c:	afc20024 	sw	v0,36(s8)
  4b0c30:	8fc30024 	lw	v1,36(s8)
  4b0c34:	8fc20014 	lw	v0,20(s8)
  4b0c38:	00000000 	nop
  4b0c3c:	00621024 	and	v0,v1,v0
  4b0c40:	afc20024 	sw	v0,36(s8)
  4b0c44:	8fc30018 	lw	v1,24(s8)
  4b0c48:	8fc20020 	lw	v0,32(s8)
  4b0c4c:	00000000 	nop
  4b0c50:	00621026 	xor	v0,v1,v0
  4b0c54:	afc20018 	sw	v0,24(s8)
  4b0c58:	8fc30018 	lw	v1,24(s8)
  4b0c5c:	8fc20024 	lw	v0,36(s8)
  4b0c60:	00000000 	nop
  4b0c64:	00621026 	xor	v0,v1,v0
  4b0c68:	afc20018 	sw	v0,24(s8)
  4b0c6c:	8fc30024 	lw	v1,36(s8)
  4b0c70:	8fc20020 	lw	v0,32(s8)
  4b0c74:	00000000 	nop
  4b0c78:	00621024 	and	v0,v1,v0
  4b0c7c:	afc20024 	sw	v0,36(s8)
  4b0c80:	8fc20014 	lw	v0,20(s8)
  4b0c84:	00000000 	nop
  4b0c88:	00021027 	nor	v0,zero,v0
  4b0c8c:	afc20014 	sw	v0,20(s8)
  4b0c90:	8fc3001c 	lw	v1,28(s8)
  4b0c94:	8fc20018 	lw	v0,24(s8)
  4b0c98:	00000000 	nop
  4b0c9c:	00621026 	xor	v0,v1,v0
  4b0ca0:	afc2001c 	sw	v0,28(s8)
  4b0ca4:	8fc30024 	lw	v1,36(s8)
  4b0ca8:	8fc2001c 	lw	v0,28(s8)
  4b0cac:	00000000 	nop
  4b0cb0:	00621026 	xor	v0,v1,v0
  4b0cb4:	afc20024 	sw	v0,36(s8)
  4b0cb8:	8fc3001c 	lw	v1,28(s8)
  4b0cbc:	8fc20014 	lw	v0,20(s8)
  4b0cc0:	00000000 	nop
  4b0cc4:	00621024 	and	v0,v1,v0
  4b0cc8:	afc2001c 	sw	v0,28(s8)
  4b0ccc:	8fc3001c 	lw	v1,28(s8)
  4b0cd0:	8fc20020 	lw	v0,32(s8)
  4b0cd4:	00000000 	nop
  4b0cd8:	00621026 	xor	v0,v1,v0
  4b0cdc:	afc2001c 	sw	v0,28(s8)
  4b0ce0:	8fc30014 	lw	v1,20(s8)
  4b0ce4:	8fc20024 	lw	v0,36(s8)
  4b0ce8:	00000000 	nop
  4b0cec:	00621026 	xor	v0,v1,v0
  4b0cf0:	afc20014 	sw	v0,20(s8)
  4b0cf4:	8fc30020 	lw	v1,32(s8)
  4b0cf8:	8fc20014 	lw	v0,20(s8)
  4b0cfc:	00000000 	nop
  4b0d00:	00621024 	and	v0,v1,v0
  4b0d04:	afc20020 	sw	v0,32(s8)
  4b0d08:	8fc3001c 	lw	v1,28(s8)
  4b0d0c:	8fc20014 	lw	v0,20(s8)
  4b0d10:	00000000 	nop
  4b0d14:	00621026 	xor	v0,v1,v0
  4b0d18:	afc2001c 	sw	v0,28(s8)
  4b0d1c:	8fc30020 	lw	v1,32(s8)
  4b0d20:	8fc20018 	lw	v0,24(s8)
  4b0d24:	00000000 	nop
  4b0d28:	00621026 	xor	v0,v1,v0
  4b0d2c:	afc20020 	sw	v0,32(s8)
  4b0d30:	8fc30020 	lw	v1,32(s8)
  4b0d34:	8fc2001c 	lw	v0,28(s8)
  4b0d38:	00000000 	nop
  4b0d3c:	00621025 	or	v0,v1,v0
  4b0d40:	afc20020 	sw	v0,32(s8)
  4b0d44:	8fc3001c 	lw	v1,28(s8)
  4b0d48:	8fc20014 	lw	v0,20(s8)
  4b0d4c:	00000000 	nop
  4b0d50:	00621026 	xor	v0,v1,v0
  4b0d54:	afc2001c 	sw	v0,28(s8)
  4b0d58:	8fc30020 	lw	v1,32(s8)
  4b0d5c:	8fc20024 	lw	v0,36(s8)
  4b0d60:	00000000 	nop
  4b0d64:	00621026 	xor	v0,v1,v0
  4b0d68:	afc20020 	sw	v0,32(s8)
      KEYMIX(r0,r2,r3,r1,r4,48);
  4b0d6c:	8fc20008 	lw	v0,8(s8)
  4b0d70:	00000000 	nop
  4b0d74:	244200e0 	addiu	v0,v0,224
  4b0d78:	8c430000 	lw	v1,0(v0)
  4b0d7c:	8fc20014 	lw	v0,20(s8)
  4b0d80:	00000000 	nop
  4b0d84:	00431026 	xor	v0,v0,v1
  4b0d88:	afc20014 	sw	v0,20(s8)
  4b0d8c:	8fc20008 	lw	v0,8(s8)
  4b0d90:	00000000 	nop
  4b0d94:	244200e4 	addiu	v0,v0,228
  4b0d98:	8c430000 	lw	v1,0(v0)
  4b0d9c:	8fc2001c 	lw	v0,28(s8)
  4b0da0:	00000000 	nop
  4b0da4:	00431026 	xor	v0,v0,v1
  4b0da8:	afc2001c 	sw	v0,28(s8)
  4b0dac:	8fc20008 	lw	v0,8(s8)
  4b0db0:	00000000 	nop
  4b0db4:	244200e8 	addiu	v0,v0,232
  4b0db8:	8c430000 	lw	v1,0(v0)
  4b0dbc:	8fc20020 	lw	v0,32(s8)
  4b0dc0:	00000000 	nop
  4b0dc4:	00431026 	xor	v0,v0,v1
  4b0dc8:	afc20020 	sw	v0,32(s8)
  4b0dcc:	8fc20008 	lw	v0,8(s8)
  4b0dd0:	00000000 	nop
  4b0dd4:	244200ec 	addiu	v0,v0,236
  4b0dd8:	8c430000 	lw	v1,0(v0)
  4b0ddc:	8fc20018 	lw	v0,24(s8)
  4b0de0:	00000000 	nop
  4b0de4:	00431026 	xor	v0,v0,v1
  4b0de8:	afc20018 	sw	v0,24(s8)

      /* round 21  */
      ILINTRANS(r0,r2,r3,r1,r4);
  4b0dec:	8fc20020 	lw	v0,32(s8)
  4b0df0:	00000000 	nop
  4b0df4:	00021a80 	sll	v1,v0,0xa
  4b0df8:	00021582 	srl	v0,v0,0x16
  4b0dfc:	00621025 	or	v0,v1,v0
  4b0e00:	afc20020 	sw	v0,32(s8)
  4b0e04:	8fc20014 	lw	v0,20(s8)
  4b0e08:	00000000 	nop
  4b0e0c:	00021ec0 	sll	v1,v0,0x1b
  4b0e10:	00021142 	srl	v0,v0,0x5
  4b0e14:	00621025 	or	v0,v1,v0
  4b0e18:	afc20014 	sw	v0,20(s8)
  4b0e1c:	8fc30020 	lw	v1,32(s8)
  4b0e20:	8fc20018 	lw	v0,24(s8)
  4b0e24:	00000000 	nop
  4b0e28:	00621026 	xor	v0,v1,v0
  4b0e2c:	afc20020 	sw	v0,32(s8)
  4b0e30:	8fc2001c 	lw	v0,28(s8)
  4b0e34:	00000000 	nop
  4b0e38:	000211c0 	sll	v0,v0,0x7
  4b0e3c:	afc20024 	sw	v0,36(s8)
  4b0e40:	8fc30014 	lw	v1,20(s8)
  4b0e44:	8fc2001c 	lw	v0,28(s8)
  4b0e48:	00000000 	nop
  4b0e4c:	00621026 	xor	v0,v1,v0
  4b0e50:	afc20014 	sw	v0,20(s8)
  4b0e54:	8fc30020 	lw	v1,32(s8)
  4b0e58:	8fc20024 	lw	v0,36(s8)
  4b0e5c:	00000000 	nop
  4b0e60:	00621026 	xor	v0,v1,v0
  4b0e64:	afc20020 	sw	v0,32(s8)
  4b0e68:	8fc30014 	lw	v1,20(s8)
  4b0e6c:	8fc20018 	lw	v0,24(s8)
  4b0e70:	00000000 	nop
  4b0e74:	00621026 	xor	v0,v1,v0
  4b0e78:	afc20014 	sw	v0,20(s8)
  4b0e7c:	8fc20018 	lw	v0,24(s8)
  4b0e80:	00000000 	nop
  4b0e84:	00021e40 	sll	v1,v0,0x19
  4b0e88:	000211c2 	srl	v0,v0,0x7
  4b0e8c:	00621025 	or	v0,v1,v0
  4b0e90:	afc20018 	sw	v0,24(s8)
  4b0e94:	8fc2001c 	lw	v0,28(s8)
  4b0e98:	00000000 	nop
  4b0e9c:	00021fc0 	sll	v1,v0,0x1f
  4b0ea0:	00021042 	srl	v0,v0,0x1
  4b0ea4:	00621025 	or	v0,v1,v0
  4b0ea8:	afc2001c 	sw	v0,28(s8)
  4b0eac:	8fc30018 	lw	v1,24(s8)
  4b0eb0:	8fc20020 	lw	v0,32(s8)
  4b0eb4:	00000000 	nop
  4b0eb8:	00621026 	xor	v0,v1,v0
  4b0ebc:	afc20018 	sw	v0,24(s8)
  4b0ec0:	8fc20014 	lw	v0,20(s8)
  4b0ec4:	00000000 	nop
  4b0ec8:	000210c0 	sll	v0,v0,0x3
  4b0ecc:	afc20024 	sw	v0,36(s8)
  4b0ed0:	8fc3001c 	lw	v1,28(s8)
  4b0ed4:	8fc20014 	lw	v0,20(s8)
  4b0ed8:	00000000 	nop
  4b0edc:	00621026 	xor	v0,v1,v0
  4b0ee0:	afc2001c 	sw	v0,28(s8)
  4b0ee4:	8fc30018 	lw	v1,24(s8)
  4b0ee8:	8fc20024 	lw	v0,36(s8)
  4b0eec:	00000000 	nop
  4b0ef0:	00621026 	xor	v0,v1,v0
  4b0ef4:	afc20018 	sw	v0,24(s8)
  4b0ef8:	8fc3001c 	lw	v1,28(s8)
  4b0efc:	8fc20020 	lw	v0,32(s8)
  4b0f00:	00000000 	nop
  4b0f04:	00621026 	xor	v0,v1,v0
  4b0f08:	afc2001c 	sw	v0,28(s8)
  4b0f0c:	8fc20020 	lw	v0,32(s8)
  4b0f10:	00000000 	nop
  4b0f14:	00021f40 	sll	v1,v0,0x1d
  4b0f18:	000210c2 	srl	v0,v0,0x3
  4b0f1c:	00621025 	or	v0,v1,v0
  4b0f20:	afc20020 	sw	v0,32(s8)
  4b0f24:	8fc20014 	lw	v0,20(s8)
  4b0f28:	00000000 	nop
  4b0f2c:	00021cc0 	sll	v1,v0,0x13
  4b0f30:	00021342 	srl	v0,v0,0xd
  4b0f34:	00621025 	or	v0,v1,v0
  4b0f38:	afc20014 	sw	v0,20(s8)
      I3(r0,r2,r3,r1,r4);
  4b0f3c:	8fc20020 	lw	v0,32(s8)
  4b0f40:	00000000 	nop
  4b0f44:	afc20024 	sw	v0,36(s8)
  4b0f48:	8fc30020 	lw	v1,32(s8)
  4b0f4c:	8fc2001c 	lw	v0,28(s8)
  4b0f50:	00000000 	nop
  4b0f54:	00621026 	xor	v0,v1,v0
  4b0f58:	afc20020 	sw	v0,32(s8)
  4b0f5c:	8fc30014 	lw	v1,20(s8)
  4b0f60:	8fc20020 	lw	v0,32(s8)
  4b0f64:	00000000 	nop
  4b0f68:	00621026 	xor	v0,v1,v0
  4b0f6c:	afc20014 	sw	v0,20(s8)
  4b0f70:	8fc30024 	lw	v1,36(s8)
  4b0f74:	8fc20020 	lw	v0,32(s8)
  4b0f78:	00000000 	nop
  4b0f7c:	00621024 	and	v0,v1,v0
  4b0f80:	afc20024 	sw	v0,36(s8)
  4b0f84:	8fc30024 	lw	v1,36(s8)
  4b0f88:	8fc20014 	lw	v0,20(s8)
  4b0f8c:	00000000 	nop
  4b0f90:	00621026 	xor	v0,v1,v0
  4b0f94:	afc20024 	sw	v0,36(s8)
  4b0f98:	8fc30014 	lw	v1,20(s8)
  4b0f9c:	8fc2001c 	lw	v0,28(s8)
  4b0fa0:	00000000 	nop
  4b0fa4:	00621024 	and	v0,v1,v0
  4b0fa8:	afc20014 	sw	v0,20(s8)
  4b0fac:	8fc3001c 	lw	v1,28(s8)
  4b0fb0:	8fc20018 	lw	v0,24(s8)
  4b0fb4:	00000000 	nop
  4b0fb8:	00621026 	xor	v0,v1,v0
  4b0fbc:	afc2001c 	sw	v0,28(s8)
  4b0fc0:	8fc30018 	lw	v1,24(s8)
  4b0fc4:	8fc20024 	lw	v0,36(s8)
  4b0fc8:	00000000 	nop
  4b0fcc:	00621025 	or	v0,v1,v0
  4b0fd0:	afc20018 	sw	v0,24(s8)
  4b0fd4:	8fc30020 	lw	v1,32(s8)
  4b0fd8:	8fc20018 	lw	v0,24(s8)
  4b0fdc:	00000000 	nop
  4b0fe0:	00621026 	xor	v0,v1,v0
  4b0fe4:	afc20020 	sw	v0,32(s8)
  4b0fe8:	8fc30014 	lw	v1,20(s8)
  4b0fec:	8fc20018 	lw	v0,24(s8)
  4b0ff0:	00000000 	nop
  4b0ff4:	00621026 	xor	v0,v1,v0
  4b0ff8:	afc20014 	sw	v0,20(s8)
  4b0ffc:	8fc3001c 	lw	v1,28(s8)
  4b1000:	8fc20024 	lw	v0,36(s8)
  4b1004:	00000000 	nop
  4b1008:	00621026 	xor	v0,v1,v0
  4b100c:	afc2001c 	sw	v0,28(s8)
  4b1010:	8fc30018 	lw	v1,24(s8)
  4b1014:	8fc20020 	lw	v0,32(s8)
  4b1018:	00000000 	nop
  4b101c:	00621024 	and	v0,v1,v0
  4b1020:	afc20018 	sw	v0,24(s8)
  4b1024:	8fc30018 	lw	v1,24(s8)
  4b1028:	8fc2001c 	lw	v0,28(s8)
  4b102c:	00000000 	nop
  4b1030:	00621026 	xor	v0,v1,v0
  4b1034:	afc20018 	sw	v0,24(s8)
  4b1038:	8fc3001c 	lw	v1,28(s8)
  4b103c:	8fc20014 	lw	v0,20(s8)
  4b1040:	00000000 	nop
  4b1044:	00621026 	xor	v0,v1,v0
  4b1048:	afc2001c 	sw	v0,28(s8)
  4b104c:	8fc3001c 	lw	v1,28(s8)
  4b1050:	8fc20020 	lw	v0,32(s8)
  4b1054:	00000000 	nop
  4b1058:	00621025 	or	v0,v1,v0
  4b105c:	afc2001c 	sw	v0,28(s8)
  4b1060:	8fc30014 	lw	v1,20(s8)
  4b1064:	8fc20018 	lw	v0,24(s8)
  4b1068:	00000000 	nop
  4b106c:	00621026 	xor	v0,v1,v0
  4b1070:	afc20014 	sw	v0,20(s8)
  4b1074:	8fc3001c 	lw	v1,28(s8)
  4b1078:	8fc20024 	lw	v0,36(s8)
  4b107c:	00000000 	nop
  4b1080:	00621026 	xor	v0,v1,v0
  4b1084:	afc2001c 	sw	v0,28(s8)
  4b1088:	8fc30014 	lw	v1,20(s8)
  4b108c:	8fc2001c 	lw	v0,28(s8)
  4b1090:	00000000 	nop
  4b1094:	00621026 	xor	v0,v1,v0
  4b1098:	afc20014 	sw	v0,20(s8)
      KEYMIX(r3,r2,r1,r0,r4,44);
  4b109c:	8fc20008 	lw	v0,8(s8)
  4b10a0:	00000000 	nop
  4b10a4:	244200d0 	addiu	v0,v0,208
  4b10a8:	8c430000 	lw	v1,0(v0)
  4b10ac:	8fc20020 	lw	v0,32(s8)
  4b10b0:	00000000 	nop
  4b10b4:	00431026 	xor	v0,v0,v1
  4b10b8:	afc20020 	sw	v0,32(s8)
  4b10bc:	8fc20008 	lw	v0,8(s8)
  4b10c0:	00000000 	nop
  4b10c4:	244200d4 	addiu	v0,v0,212
  4b10c8:	8c430000 	lw	v1,0(v0)
  4b10cc:	8fc2001c 	lw	v0,28(s8)
  4b10d0:	00000000 	nop
  4b10d4:	00431026 	xor	v0,v0,v1
  4b10d8:	afc2001c 	sw	v0,28(s8)
  4b10dc:	8fc20008 	lw	v0,8(s8)
  4b10e0:	00000000 	nop
  4b10e4:	244200d8 	addiu	v0,v0,216
  4b10e8:	8c430000 	lw	v1,0(v0)
  4b10ec:	8fc20018 	lw	v0,24(s8)
  4b10f0:	00000000 	nop
  4b10f4:	00431026 	xor	v0,v0,v1
  4b10f8:	afc20018 	sw	v0,24(s8)
  4b10fc:	8fc20008 	lw	v0,8(s8)
  4b1100:	00000000 	nop
  4b1104:	244200dc 	addiu	v0,v0,220
  4b1108:	8c430000 	lw	v1,0(v0)
  4b110c:	8fc20014 	lw	v0,20(s8)
  4b1110:	00000000 	nop
  4b1114:	00431026 	xor	v0,v0,v1
  4b1118:	afc20014 	sw	v0,20(s8)

      /* round 22  */
      ILINTRANS(r3,r2,r1,r0,r4);
  4b111c:	8fc20018 	lw	v0,24(s8)
  4b1120:	00000000 	nop
  4b1124:	00021a80 	sll	v1,v0,0xa
  4b1128:	00021582 	srl	v0,v0,0x16
  4b112c:	00621025 	or	v0,v1,v0
  4b1130:	afc20018 	sw	v0,24(s8)
  4b1134:	8fc20020 	lw	v0,32(s8)
  4b1138:	00000000 	nop
  4b113c:	00021ec0 	sll	v1,v0,0x1b
  4b1140:	00021142 	srl	v0,v0,0x5
  4b1144:	00621025 	or	v0,v1,v0
  4b1148:	afc20020 	sw	v0,32(s8)
  4b114c:	8fc30018 	lw	v1,24(s8)
  4b1150:	8fc20014 	lw	v0,20(s8)
  4b1154:	00000000 	nop
  4b1158:	00621026 	xor	v0,v1,v0
  4b115c:	afc20018 	sw	v0,24(s8)
  4b1160:	8fc2001c 	lw	v0,28(s8)
  4b1164:	00000000 	nop
  4b1168:	000211c0 	sll	v0,v0,0x7
  4b116c:	afc20024 	sw	v0,36(s8)
  4b1170:	8fc30020 	lw	v1,32(s8)
  4b1174:	8fc2001c 	lw	v0,28(s8)
  4b1178:	00000000 	nop
  4b117c:	00621026 	xor	v0,v1,v0
  4b1180:	afc20020 	sw	v0,32(s8)
  4b1184:	8fc30018 	lw	v1,24(s8)
  4b1188:	8fc20024 	lw	v0,36(s8)
  4b118c:	00000000 	nop
  4b1190:	00621026 	xor	v0,v1,v0
  4b1194:	afc20018 	sw	v0,24(s8)
  4b1198:	8fc30020 	lw	v1,32(s8)
  4b119c:	8fc20014 	lw	v0,20(s8)
  4b11a0:	00000000 	nop
  4b11a4:	00621026 	xor	v0,v1,v0
  4b11a8:	afc20020 	sw	v0,32(s8)
  4b11ac:	8fc20014 	lw	v0,20(s8)
  4b11b0:	00000000 	nop
  4b11b4:	00021e40 	sll	v1,v0,0x19
  4b11b8:	000211c2 	srl	v0,v0,0x7
  4b11bc:	00621025 	or	v0,v1,v0
  4b11c0:	afc20014 	sw	v0,20(s8)
  4b11c4:	8fc2001c 	lw	v0,28(s8)
  4b11c8:	00000000 	nop
  4b11cc:	00021fc0 	sll	v1,v0,0x1f
  4b11d0:	00021042 	srl	v0,v0,0x1
  4b11d4:	00621025 	or	v0,v1,v0
  4b11d8:	afc2001c 	sw	v0,28(s8)
  4b11dc:	8fc30014 	lw	v1,20(s8)
  4b11e0:	8fc20018 	lw	v0,24(s8)
  4b11e4:	00000000 	nop
  4b11e8:	00621026 	xor	v0,v1,v0
  4b11ec:	afc20014 	sw	v0,20(s8)
  4b11f0:	8fc20020 	lw	v0,32(s8)
  4b11f4:	00000000 	nop
  4b11f8:	000210c0 	sll	v0,v0,0x3
  4b11fc:	afc20024 	sw	v0,36(s8)
  4b1200:	8fc3001c 	lw	v1,28(s8)
  4b1204:	8fc20020 	lw	v0,32(s8)
  4b1208:	00000000 	nop
  4b120c:	00621026 	xor	v0,v1,v0
  4b1210:	afc2001c 	sw	v0,28(s8)
  4b1214:	8fc30014 	lw	v1,20(s8)
  4b1218:	8fc20024 	lw	v0,36(s8)
  4b121c:	00000000 	nop
  4b1220:	00621026 	xor	v0,v1,v0
  4b1224:	afc20014 	sw	v0,20(s8)
  4b1228:	8fc3001c 	lw	v1,28(s8)
  4b122c:	8fc20018 	lw	v0,24(s8)
  4b1230:	00000000 	nop
  4b1234:	00621026 	xor	v0,v1,v0
  4b1238:	afc2001c 	sw	v0,28(s8)
  4b123c:	8fc20018 	lw	v0,24(s8)
  4b1240:	00000000 	nop
  4b1244:	00021f40 	sll	v1,v0,0x1d
  4b1248:	000210c2 	srl	v0,v0,0x3
  4b124c:	00621025 	or	v0,v1,v0
  4b1250:	afc20018 	sw	v0,24(s8)
  4b1254:	8fc20020 	lw	v0,32(s8)
  4b1258:	00000000 	nop
  4b125c:	00021cc0 	sll	v1,v0,0x13
  4b1260:	00021342 	srl	v0,v0,0xd
  4b1264:	00621025 	or	v0,v1,v0
  4b1268:	afc20020 	sw	v0,32(s8)
      I2(r3,r2,r1,r0,r4);
  4b126c:	8fc30018 	lw	v1,24(s8)
  4b1270:	8fc20014 	lw	v0,20(s8)
  4b1274:	00000000 	nop
  4b1278:	00621026 	xor	v0,v1,v0
  4b127c:	afc20018 	sw	v0,24(s8)
  4b1280:	8fc30014 	lw	v1,20(s8)
  4b1284:	8fc20020 	lw	v0,32(s8)
  4b1288:	00000000 	nop
  4b128c:	00621026 	xor	v0,v1,v0
  4b1290:	afc20014 	sw	v0,20(s8)
  4b1294:	8fc20014 	lw	v0,20(s8)
  4b1298:	00000000 	nop
  4b129c:	afc20024 	sw	v0,36(s8)
  4b12a0:	8fc30014 	lw	v1,20(s8)
  4b12a4:	8fc20018 	lw	v0,24(s8)
  4b12a8:	00000000 	nop
  4b12ac:	00621024 	and	v0,v1,v0
  4b12b0:	afc20014 	sw	v0,20(s8)
  4b12b4:	8fc30014 	lw	v1,20(s8)
  4b12b8:	8fc2001c 	lw	v0,28(s8)
  4b12bc:	00000000 	nop
  4b12c0:	00621026 	xor	v0,v1,v0
  4b12c4:	afc20014 	sw	v0,20(s8)
  4b12c8:	8fc3001c 	lw	v1,28(s8)
  4b12cc:	8fc20018 	lw	v0,24(s8)
  4b12d0:	00000000 	nop
  4b12d4:	00621025 	or	v0,v1,v0
  4b12d8:	afc2001c 	sw	v0,28(s8)
  4b12dc:	8fc3001c 	lw	v1,28(s8)
  4b12e0:	8fc20024 	lw	v0,36(s8)
  4b12e4:	00000000 	nop
  4b12e8:	00621026 	xor	v0,v1,v0
  4b12ec:	afc2001c 	sw	v0,28(s8)
  4b12f0:	8fc30024 	lw	v1,36(s8)
  4b12f4:	8fc20014 	lw	v0,20(s8)
  4b12f8:	00000000 	nop
  4b12fc:	00621024 	and	v0,v1,v0
  4b1300:	afc20024 	sw	v0,36(s8)
  4b1304:	8fc30018 	lw	v1,24(s8)
  4b1308:	8fc20014 	lw	v0,20(s8)
  4b130c:	00000000 	nop
  4b1310:	00621026 	xor	v0,v1,v0
  4b1314:	afc20018 	sw	v0,24(s8)
  4b1318:	8fc30024 	lw	v1,36(s8)
  4b131c:	8fc20020 	lw	v0,32(s8)
  4b1320:	00000000 	nop
  4b1324:	00621024 	and	v0,v1,v0
  4b1328:	afc20024 	sw	v0,36(s8)
  4b132c:	8fc30024 	lw	v1,36(s8)
  4b1330:	8fc20018 	lw	v0,24(s8)
  4b1334:	00000000 	nop
  4b1338:	00621026 	xor	v0,v1,v0
  4b133c:	afc20024 	sw	v0,36(s8)
  4b1340:	8fc30018 	lw	v1,24(s8)
  4b1344:	8fc2001c 	lw	v0,28(s8)
  4b1348:	00000000 	nop
  4b134c:	00621024 	and	v0,v1,v0
  4b1350:	afc20018 	sw	v0,24(s8)
  4b1354:	8fc30018 	lw	v1,24(s8)
  4b1358:	8fc20020 	lw	v0,32(s8)
  4b135c:	00000000 	nop
  4b1360:	00621025 	or	v0,v1,v0
  4b1364:	afc20018 	sw	v0,24(s8)
  4b1368:	8fc20014 	lw	v0,20(s8)
  4b136c:	00000000 	nop
  4b1370:	00021027 	nor	v0,zero,v0
  4b1374:	afc20014 	sw	v0,20(s8)
  4b1378:	8fc30018 	lw	v1,24(s8)
  4b137c:	8fc20014 	lw	v0,20(s8)
  4b1380:	00000000 	nop
  4b1384:	00621026 	xor	v0,v1,v0
  4b1388:	afc20018 	sw	v0,24(s8)
  4b138c:	8fc30020 	lw	v1,32(s8)
  4b1390:	8fc20014 	lw	v0,20(s8)
  4b1394:	00000000 	nop
  4b1398:	00621026 	xor	v0,v1,v0
  4b139c:	afc20020 	sw	v0,32(s8)
  4b13a0:	8fc30020 	lw	v1,32(s8)
  4b13a4:	8fc2001c 	lw	v0,28(s8)
  4b13a8:	00000000 	nop
  4b13ac:	00621024 	and	v0,v1,v0
  4b13b0:	afc20020 	sw	v0,32(s8)
  4b13b4:	8fc30014 	lw	v1,20(s8)
  4b13b8:	8fc20024 	lw	v0,36(s8)
  4b13bc:	00000000 	nop
  4b13c0:	00621026 	xor	v0,v1,v0
  4b13c4:	afc20014 	sw	v0,20(s8)
  4b13c8:	8fc30014 	lw	v1,20(s8)
  4b13cc:	8fc20020 	lw	v0,32(s8)
  4b13d0:	00000000 	nop
  4b13d4:	00621026 	xor	v0,v1,v0
  4b13d8:	afc20014 	sw	v0,20(s8)
      KEYMIX(r2,r4,r1,r0,r3,40);
  4b13dc:	8fc20008 	lw	v0,8(s8)
  4b13e0:	00000000 	nop
  4b13e4:	244200c0 	addiu	v0,v0,192
  4b13e8:	8c430000 	lw	v1,0(v0)
  4b13ec:	8fc2001c 	lw	v0,28(s8)
  4b13f0:	00000000 	nop
  4b13f4:	00431026 	xor	v0,v0,v1
  4b13f8:	afc2001c 	sw	v0,28(s8)
  4b13fc:	8fc20008 	lw	v0,8(s8)
  4b1400:	00000000 	nop
  4b1404:	244200c4 	addiu	v0,v0,196
  4b1408:	8c430000 	lw	v1,0(v0)
  4b140c:	8fc20024 	lw	v0,36(s8)
  4b1410:	00000000 	nop
  4b1414:	00431026 	xor	v0,v0,v1
  4b1418:	afc20024 	sw	v0,36(s8)
  4b141c:	8fc20008 	lw	v0,8(s8)
  4b1420:	00000000 	nop
  4b1424:	244200c8 	addiu	v0,v0,200
  4b1428:	8c430000 	lw	v1,0(v0)
  4b142c:	8fc20018 	lw	v0,24(s8)
  4b1430:	00000000 	nop
  4b1434:	00431026 	xor	v0,v0,v1
  4b1438:	afc20018 	sw	v0,24(s8)
  4b143c:	8fc20008 	lw	v0,8(s8)
  4b1440:	00000000 	nop
  4b1444:	244200cc 	addiu	v0,v0,204
  4b1448:	8c430000 	lw	v1,0(v0)
  4b144c:	8fc20014 	lw	v0,20(s8)
  4b1450:	00000000 	nop
  4b1454:	00431026 	xor	v0,v0,v1
  4b1458:	afc20014 	sw	v0,20(s8)

      /* round 23  */
      ILINTRANS(r2,r4,r1,r0,r3);
  4b145c:	8fc20018 	lw	v0,24(s8)
  4b1460:	00000000 	nop
  4b1464:	00021a80 	sll	v1,v0,0xa
  4b1468:	00021582 	srl	v0,v0,0x16
  4b146c:	00621025 	or	v0,v1,v0
  4b1470:	afc20018 	sw	v0,24(s8)
  4b1474:	8fc2001c 	lw	v0,28(s8)
  4b1478:	00000000 	nop
  4b147c:	00021ec0 	sll	v1,v0,0x1b
  4b1480:	00021142 	srl	v0,v0,0x5
  4b1484:	00621025 	or	v0,v1,v0
  4b1488:	afc2001c 	sw	v0,28(s8)
  4b148c:	8fc30018 	lw	v1,24(s8)
  4b1490:	8fc20014 	lw	v0,20(s8)
  4b1494:	00000000 	nop
  4b1498:	00621026 	xor	v0,v1,v0
  4b149c:	afc20018 	sw	v0,24(s8)
  4b14a0:	8fc20024 	lw	v0,36(s8)
  4b14a4:	00000000 	nop
  4b14a8:	000211c0 	sll	v0,v0,0x7
  4b14ac:	afc20020 	sw	v0,32(s8)
  4b14b0:	8fc3001c 	lw	v1,28(s8)
  4b14b4:	8fc20024 	lw	v0,36(s8)
  4b14b8:	00000000 	nop
  4b14bc:	00621026 	xor	v0,v1,v0
  4b14c0:	afc2001c 	sw	v0,28(s8)
  4b14c4:	8fc30018 	lw	v1,24(s8)
  4b14c8:	8fc20020 	lw	v0,32(s8)
  4b14cc:	00000000 	nop
  4b14d0:	00621026 	xor	v0,v1,v0
  4b14d4:	afc20018 	sw	v0,24(s8)
  4b14d8:	8fc3001c 	lw	v1,28(s8)
  4b14dc:	8fc20014 	lw	v0,20(s8)
  4b14e0:	00000000 	nop
  4b14e4:	00621026 	xor	v0,v1,v0
  4b14e8:	afc2001c 	sw	v0,28(s8)
  4b14ec:	8fc20014 	lw	v0,20(s8)
  4b14f0:	00000000 	nop
  4b14f4:	00021e40 	sll	v1,v0,0x19
  4b14f8:	000211c2 	srl	v0,v0,0x7
  4b14fc:	00621025 	or	v0,v1,v0
  4b1500:	afc20014 	sw	v0,20(s8)
  4b1504:	8fc20024 	lw	v0,36(s8)
  4b1508:	00000000 	nop
  4b150c:	00021fc0 	sll	v1,v0,0x1f
  4b1510:	00021042 	srl	v0,v0,0x1
  4b1514:	00621025 	or	v0,v1,v0
  4b1518:	afc20024 	sw	v0,36(s8)
  4b151c:	8fc30014 	lw	v1,20(s8)
  4b1520:	8fc20018 	lw	v0,24(s8)
  4b1524:	00000000 	nop
  4b1528:	00621026 	xor	v0,v1,v0
  4b152c:	afc20014 	sw	v0,20(s8)
  4b1530:	8fc2001c 	lw	v0,28(s8)
  4b1534:	00000000 	nop
  4b1538:	000210c0 	sll	v0,v0,0x3
  4b153c:	afc20020 	sw	v0,32(s8)
  4b1540:	8fc30024 	lw	v1,36(s8)
  4b1544:	8fc2001c 	lw	v0,28(s8)
  4b1548:	00000000 	nop
  4b154c:	00621026 	xor	v0,v1,v0
  4b1550:	afc20024 	sw	v0,36(s8)
  4b1554:	8fc30014 	lw	v1,20(s8)
  4b1558:	8fc20020 	lw	v0,32(s8)
  4b155c:	00000000 	nop
  4b1560:	00621026 	xor	v0,v1,v0
  4b1564:	afc20014 	sw	v0,20(s8)
  4b1568:	8fc30024 	lw	v1,36(s8)
  4b156c:	8fc20018 	lw	v0,24(s8)
  4b1570:	00000000 	nop
  4b1574:	00621026 	xor	v0,v1,v0
  4b1578:	afc20024 	sw	v0,36(s8)
  4b157c:	8fc20018 	lw	v0,24(s8)
  4b1580:	00000000 	nop
  4b1584:	00021f40 	sll	v1,v0,0x1d
  4b1588:	000210c2 	srl	v0,v0,0x3
  4b158c:	00621025 	or	v0,v1,v0
  4b1590:	afc20018 	sw	v0,24(s8)
  4b1594:	8fc2001c 	lw	v0,28(s8)
  4b1598:	00000000 	nop
  4b159c:	00021cc0 	sll	v1,v0,0x13
  4b15a0:	00021342 	srl	v0,v0,0xd
  4b15a4:	00621025 	or	v0,v1,v0
  4b15a8:	afc2001c 	sw	v0,28(s8)
      I1(r2,r4,r1,r0,r3);
  4b15ac:	8fc20024 	lw	v0,36(s8)
  4b15b0:	00000000 	nop
  4b15b4:	afc20020 	sw	v0,32(s8)
  4b15b8:	8fc30024 	lw	v1,36(s8)
  4b15bc:	8fc20014 	lw	v0,20(s8)
  4b15c0:	00000000 	nop
  4b15c4:	00621026 	xor	v0,v1,v0
  4b15c8:	afc20024 	sw	v0,36(s8)
  4b15cc:	8fc30014 	lw	v1,20(s8)
  4b15d0:	8fc20024 	lw	v0,36(s8)
  4b15d4:	00000000 	nop
  4b15d8:	00621024 	and	v0,v1,v0
  4b15dc:	afc20014 	sw	v0,20(s8)
  4b15e0:	8fc30020 	lw	v1,32(s8)
  4b15e4:	8fc20018 	lw	v0,24(s8)
  4b15e8:	00000000 	nop
  4b15ec:	00621026 	xor	v0,v1,v0
  4b15f0:	afc20020 	sw	v0,32(s8)
  4b15f4:	8fc30014 	lw	v1,20(s8)
  4b15f8:	8fc2001c 	lw	v0,28(s8)
  4b15fc:	00000000 	nop
  4b1600:	00621026 	xor	v0,v1,v0
  4b1604:	afc20014 	sw	v0,20(s8)
  4b1608:	8fc3001c 	lw	v1,28(s8)
  4b160c:	8fc20024 	lw	v0,36(s8)
  4b1610:	00000000 	nop
  4b1614:	00621025 	or	v0,v1,v0
  4b1618:	afc2001c 	sw	v0,28(s8)
  4b161c:	8fc30018 	lw	v1,24(s8)
  4b1620:	8fc20014 	lw	v0,20(s8)
  4b1624:	00000000 	nop
  4b1628:	00621026 	xor	v0,v1,v0
  4b162c:	afc20018 	sw	v0,24(s8)
  4b1630:	8fc3001c 	lw	v1,28(s8)
  4b1634:	8fc20020 	lw	v0,32(s8)
  4b1638:	00000000 	nop
  4b163c:	00621026 	xor	v0,v1,v0
  4b1640:	afc2001c 	sw	v0,28(s8)
  4b1644:	8fc3001c 	lw	v1,28(s8)
  4b1648:	8fc20018 	lw	v0,24(s8)
  4b164c:	00000000 	nop
  4b1650:	00621025 	or	v0,v1,v0
  4b1654:	afc2001c 	sw	v0,28(s8)
  4b1658:	8fc30024 	lw	v1,36(s8)
  4b165c:	8fc20014 	lw	v0,20(s8)
  4b1660:	00000000 	nop
  4b1664:	00621026 	xor	v0,v1,v0
  4b1668:	afc20024 	sw	v0,36(s8)
  4b166c:	8fc3001c 	lw	v1,28(s8)
  4b1670:	8fc20024 	lw	v0,36(s8)
  4b1674:	00000000 	nop
  4b1678:	00621026 	xor	v0,v1,v0
  4b167c:	afc2001c 	sw	v0,28(s8)
  4b1680:	8fc30024 	lw	v1,36(s8)
  4b1684:	8fc20014 	lw	v0,20(s8)
  4b1688:	00000000 	nop
  4b168c:	00621025 	or	v0,v1,v0
  4b1690:	afc20024 	sw	v0,36(s8)
  4b1694:	8fc30024 	lw	v1,36(s8)
  4b1698:	8fc2001c 	lw	v0,28(s8)
  4b169c:	00000000 	nop
  4b16a0:	00621026 	xor	v0,v1,v0
  4b16a4:	afc20024 	sw	v0,36(s8)
  4b16a8:	8fc20020 	lw	v0,32(s8)
  4b16ac:	00000000 	nop
  4b16b0:	00021027 	nor	v0,zero,v0
  4b16b4:	afc20020 	sw	v0,32(s8)
  4b16b8:	8fc30020 	lw	v1,32(s8)
  4b16bc:	8fc20024 	lw	v0,36(s8)
  4b16c0:	00000000 	nop
  4b16c4:	00621026 	xor	v0,v1,v0
  4b16c8:	afc20020 	sw	v0,32(s8)
  4b16cc:	8fc30024 	lw	v1,36(s8)
  4b16d0:	8fc2001c 	lw	v0,28(s8)
  4b16d4:	00000000 	nop
  4b16d8:	00621025 	or	v0,v1,v0
  4b16dc:	afc20024 	sw	v0,36(s8)
  4b16e0:	8fc30024 	lw	v1,36(s8)
  4b16e4:	8fc2001c 	lw	v0,28(s8)
  4b16e8:	00000000 	nop
  4b16ec:	00621026 	xor	v0,v1,v0
  4b16f0:	afc20024 	sw	v0,36(s8)
  4b16f4:	8fc30024 	lw	v1,36(s8)
  4b16f8:	8fc20020 	lw	v0,32(s8)
  4b16fc:	00000000 	nop
  4b1700:	00621025 	or	v0,v1,v0
  4b1704:	afc20024 	sw	v0,36(s8)
  4b1708:	8fc30014 	lw	v1,20(s8)
  4b170c:	8fc20024 	lw	v0,36(s8)
  4b1710:	00000000 	nop
  4b1714:	00621026 	xor	v0,v1,v0
  4b1718:	afc20014 	sw	v0,20(s8)
      KEYMIX(r3,r2,r0,r1,r4,36);
  4b171c:	8fc20008 	lw	v0,8(s8)
  4b1720:	00000000 	nop
  4b1724:	244200b0 	addiu	v0,v0,176
  4b1728:	8c430000 	lw	v1,0(v0)
  4b172c:	8fc20020 	lw	v0,32(s8)
  4b1730:	00000000 	nop
  4b1734:	00431026 	xor	v0,v0,v1
  4b1738:	afc20020 	sw	v0,32(s8)
  4b173c:	8fc20008 	lw	v0,8(s8)
  4b1740:	00000000 	nop
  4b1744:	244200b4 	addiu	v0,v0,180
  4b1748:	8c430000 	lw	v1,0(v0)
  4b174c:	8fc2001c 	lw	v0,28(s8)
  4b1750:	00000000 	nop
  4b1754:	00431026 	xor	v0,v0,v1
  4b1758:	afc2001c 	sw	v0,28(s8)
  4b175c:	8fc20008 	lw	v0,8(s8)
  4b1760:	00000000 	nop
  4b1764:	244200b8 	addiu	v0,v0,184
  4b1768:	8c430000 	lw	v1,0(v0)
  4b176c:	8fc20014 	lw	v0,20(s8)
  4b1770:	00000000 	nop
  4b1774:	00431026 	xor	v0,v0,v1
  4b1778:	afc20014 	sw	v0,20(s8)
  4b177c:	8fc20008 	lw	v0,8(s8)
  4b1780:	00000000 	nop
  4b1784:	244200bc 	addiu	v0,v0,188
  4b1788:	8c430000 	lw	v1,0(v0)
  4b178c:	8fc20018 	lw	v0,24(s8)
  4b1790:	00000000 	nop
  4b1794:	00431026 	xor	v0,v0,v1
  4b1798:	afc20018 	sw	v0,24(s8)

      /* round 24  */
      ILINTRANS(r3,r2,r0,r1,r4);
  4b179c:	8fc20014 	lw	v0,20(s8)
  4b17a0:	00000000 	nop
  4b17a4:	00021a80 	sll	v1,v0,0xa
  4b17a8:	00021582 	srl	v0,v0,0x16
  4b17ac:	00621025 	or	v0,v1,v0
  4b17b0:	afc20014 	sw	v0,20(s8)
  4b17b4:	8fc20020 	lw	v0,32(s8)
  4b17b8:	00000000 	nop
  4b17bc:	00021ec0 	sll	v1,v0,0x1b
  4b17c0:	00021142 	srl	v0,v0,0x5
  4b17c4:	00621025 	or	v0,v1,v0
  4b17c8:	afc20020 	sw	v0,32(s8)
  4b17cc:	8fc30014 	lw	v1,20(s8)
  4b17d0:	8fc20018 	lw	v0,24(s8)
  4b17d4:	00000000 	nop
  4b17d8:	00621026 	xor	v0,v1,v0
  4b17dc:	afc20014 	sw	v0,20(s8)
  4b17e0:	8fc2001c 	lw	v0,28(s8)
  4b17e4:	00000000 	nop
  4b17e8:	000211c0 	sll	v0,v0,0x7
  4b17ec:	afc20024 	sw	v0,36(s8)
  4b17f0:	8fc30020 	lw	v1,32(s8)
  4b17f4:	8fc2001c 	lw	v0,28(s8)
  4b17f8:	00000000 	nop
  4b17fc:	00621026 	xor	v0,v1,v0
  4b1800:	afc20020 	sw	v0,32(s8)
  4b1804:	8fc30014 	lw	v1,20(s8)
  4b1808:	8fc20024 	lw	v0,36(s8)
  4b180c:	00000000 	nop
  4b1810:	00621026 	xor	v0,v1,v0
  4b1814:	afc20014 	sw	v0,20(s8)
  4b1818:	8fc30020 	lw	v1,32(s8)
  4b181c:	8fc20018 	lw	v0,24(s8)
  4b1820:	00000000 	nop
  4b1824:	00621026 	xor	v0,v1,v0
  4b1828:	afc20020 	sw	v0,32(s8)
  4b182c:	8fc20018 	lw	v0,24(s8)
  4b1830:	00000000 	nop
  4b1834:	00021e40 	sll	v1,v0,0x19
  4b1838:	000211c2 	srl	v0,v0,0x7
  4b183c:	00621025 	or	v0,v1,v0
  4b1840:	afc20018 	sw	v0,24(s8)
  4b1844:	8fc2001c 	lw	v0,28(s8)
  4b1848:	00000000 	nop
  4b184c:	00021fc0 	sll	v1,v0,0x1f
  4b1850:	00021042 	srl	v0,v0,0x1
  4b1854:	00621025 	or	v0,v1,v0
  4b1858:	afc2001c 	sw	v0,28(s8)
  4b185c:	8fc30018 	lw	v1,24(s8)
  4b1860:	8fc20014 	lw	v0,20(s8)
  4b1864:	00000000 	nop
  4b1868:	00621026 	xor	v0,v1,v0
  4b186c:	afc20018 	sw	v0,24(s8)
  4b1870:	8fc20020 	lw	v0,32(s8)
  4b1874:	00000000 	nop
  4b1878:	000210c0 	sll	v0,v0,0x3
  4b187c:	afc20024 	sw	v0,36(s8)
  4b1880:	8fc3001c 	lw	v1,28(s8)
  4b1884:	8fc20020 	lw	v0,32(s8)
  4b1888:	00000000 	nop
  4b188c:	00621026 	xor	v0,v1,v0
  4b1890:	afc2001c 	sw	v0,28(s8)
  4b1894:	8fc30018 	lw	v1,24(s8)
  4b1898:	8fc20024 	lw	v0,36(s8)
  4b189c:	00000000 	nop
  4b18a0:	00621026 	xor	v0,v1,v0
  4b18a4:	afc20018 	sw	v0,24(s8)
  4b18a8:	8fc3001c 	lw	v1,28(s8)
  4b18ac:	8fc20014 	lw	v0,20(s8)
  4b18b0:	00000000 	nop
  4b18b4:	00621026 	xor	v0,v1,v0
  4b18b8:	afc2001c 	sw	v0,28(s8)
  4b18bc:	8fc20014 	lw	v0,20(s8)
  4b18c0:	00000000 	nop
  4b18c4:	00021f40 	sll	v1,v0,0x1d
  4b18c8:	000210c2 	srl	v0,v0,0x3
  4b18cc:	00621025 	or	v0,v1,v0
  4b18d0:	afc20014 	sw	v0,20(s8)
  4b18d4:	8fc20020 	lw	v0,32(s8)
  4b18d8:	00000000 	nop
  4b18dc:	00021cc0 	sll	v1,v0,0x13
  4b18e0:	00021342 	srl	v0,v0,0xd
  4b18e4:	00621025 	or	v0,v1,v0
  4b18e8:	afc20020 	sw	v0,32(s8)
      I0(r3,r2,r0,r1,r4);
  4b18ec:	8fc20014 	lw	v0,20(s8)
  4b18f0:	00000000 	nop
  4b18f4:	00021027 	nor	v0,zero,v0
  4b18f8:	afc20014 	sw	v0,20(s8)
  4b18fc:	8fc2001c 	lw	v0,28(s8)
  4b1900:	00000000 	nop
  4b1904:	afc20024 	sw	v0,36(s8)
  4b1908:	8fc3001c 	lw	v1,28(s8)
  4b190c:	8fc20020 	lw	v0,32(s8)
  4b1910:	00000000 	nop
  4b1914:	00621025 	or	v0,v1,v0
  4b1918:	afc2001c 	sw	v0,28(s8)
  4b191c:	8fc20024 	lw	v0,36(s8)
  4b1920:	00000000 	nop
  4b1924:	00021027 	nor	v0,zero,v0
  4b1928:	afc20024 	sw	v0,36(s8)
  4b192c:	8fc3001c 	lw	v1,28(s8)
  4b1930:	8fc20014 	lw	v0,20(s8)
  4b1934:	00000000 	nop
  4b1938:	00621026 	xor	v0,v1,v0
  4b193c:	afc2001c 	sw	v0,28(s8)
  4b1940:	8fc30014 	lw	v1,20(s8)
  4b1944:	8fc20024 	lw	v0,36(s8)
  4b1948:	00000000 	nop
  4b194c:	00621025 	or	v0,v1,v0
  4b1950:	afc20014 	sw	v0,20(s8)
  4b1954:	8fc3001c 	lw	v1,28(s8)
  4b1958:	8fc20018 	lw	v0,24(s8)
  4b195c:	00000000 	nop
  4b1960:	00621026 	xor	v0,v1,v0
  4b1964:	afc2001c 	sw	v0,28(s8)
  4b1968:	8fc30020 	lw	v1,32(s8)
  4b196c:	8fc20024 	lw	v0,36(s8)
  4b1970:	00000000 	nop
  4b1974:	00621026 	xor	v0,v1,v0
  4b1978:	afc20020 	sw	v0,32(s8)
  4b197c:	8fc30014 	lw	v1,20(s8)
  4b1980:	8fc20020 	lw	v0,32(s8)
  4b1984:	00000000 	nop
  4b1988:	00621026 	xor	v0,v1,v0
  4b198c:	afc20014 	sw	v0,20(s8)
  4b1990:	8fc30020 	lw	v1,32(s8)
  4b1994:	8fc20018 	lw	v0,24(s8)
  4b1998:	00000000 	nop
  4b199c:	00621024 	and	v0,v1,v0
  4b19a0:	afc20020 	sw	v0,32(s8)
  4b19a4:	8fc30024 	lw	v1,36(s8)
  4b19a8:	8fc20020 	lw	v0,32(s8)
  4b19ac:	00000000 	nop
  4b19b0:	00621026 	xor	v0,v1,v0
  4b19b4:	afc20024 	sw	v0,36(s8)
  4b19b8:	8fc30020 	lw	v1,32(s8)
  4b19bc:	8fc2001c 	lw	v0,28(s8)
  4b19c0:	00000000 	nop
  4b19c4:	00621025 	or	v0,v1,v0
  4b19c8:	afc20020 	sw	v0,32(s8)
  4b19cc:	8fc30020 	lw	v1,32(s8)
  4b19d0:	8fc20014 	lw	v0,20(s8)
  4b19d4:	00000000 	nop
  4b19d8:	00621026 	xor	v0,v1,v0
  4b19dc:	afc20020 	sw	v0,32(s8)
  4b19e0:	8fc30018 	lw	v1,24(s8)
  4b19e4:	8fc20024 	lw	v0,36(s8)
  4b19e8:	00000000 	nop
  4b19ec:	00621026 	xor	v0,v1,v0
  4b19f0:	afc20018 	sw	v0,24(s8)
  4b19f4:	8fc30014 	lw	v1,20(s8)
  4b19f8:	8fc2001c 	lw	v0,28(s8)
  4b19fc:	00000000 	nop
  4b1a00:	00621026 	xor	v0,v1,v0
  4b1a04:	afc20014 	sw	v0,20(s8)
  4b1a08:	8fc30018 	lw	v1,24(s8)
  4b1a0c:	8fc20020 	lw	v0,32(s8)
  4b1a10:	00000000 	nop
  4b1a14:	00621026 	xor	v0,v1,v0
  4b1a18:	afc20018 	sw	v0,24(s8)
  4b1a1c:	8fc30018 	lw	v1,24(s8)
  4b1a20:	8fc2001c 	lw	v0,28(s8)
  4b1a24:	00000000 	nop
  4b1a28:	00621026 	xor	v0,v1,v0
  4b1a2c:	afc20018 	sw	v0,24(s8)
  4b1a30:	8fc30014 	lw	v1,20(s8)
  4b1a34:	8fc20018 	lw	v0,24(s8)
  4b1a38:	00000000 	nop
  4b1a3c:	00621024 	and	v0,v1,v0
  4b1a40:	afc20014 	sw	v0,20(s8)
  4b1a44:	8fc30024 	lw	v1,36(s8)
  4b1a48:	8fc20014 	lw	v0,20(s8)
  4b1a4c:	00000000 	nop
  4b1a50:	00621026 	xor	v0,v1,v0
  4b1a54:	afc20024 	sw	v0,36(s8)
      KEYMIX(r3,r4,r2,r1,r0,32);
  4b1a58:	8fc20008 	lw	v0,8(s8)
  4b1a5c:	00000000 	nop
  4b1a60:	244200a0 	addiu	v0,v0,160
  4b1a64:	8c430000 	lw	v1,0(v0)
  4b1a68:	8fc20020 	lw	v0,32(s8)
  4b1a6c:	00000000 	nop
  4b1a70:	00431026 	xor	v0,v0,v1
  4b1a74:	afc20020 	sw	v0,32(s8)
  4b1a78:	8fc20008 	lw	v0,8(s8)
  4b1a7c:	00000000 	nop
  4b1a80:	244200a4 	addiu	v0,v0,164
  4b1a84:	8c430000 	lw	v1,0(v0)
  4b1a88:	8fc20024 	lw	v0,36(s8)
  4b1a8c:	00000000 	nop
  4b1a90:	00431026 	xor	v0,v0,v1
  4b1a94:	afc20024 	sw	v0,36(s8)
  4b1a98:	8fc20008 	lw	v0,8(s8)
  4b1a9c:	00000000 	nop
  4b1aa0:	244200a8 	addiu	v0,v0,168
  4b1aa4:	8c430000 	lw	v1,0(v0)
  4b1aa8:	8fc2001c 	lw	v0,28(s8)
  4b1aac:	00000000 	nop
  4b1ab0:	00431026 	xor	v0,v0,v1
  4b1ab4:	afc2001c 	sw	v0,28(s8)
  4b1ab8:	8fc20008 	lw	v0,8(s8)
  4b1abc:	00000000 	nop
  4b1ac0:	244200ac 	addiu	v0,v0,172
  4b1ac4:	8c430000 	lw	v1,0(v0)
  4b1ac8:	8fc20018 	lw	v0,24(s8)
  4b1acc:	00000000 	nop
  4b1ad0:	00431026 	xor	v0,v0,v1
  4b1ad4:	afc20018 	sw	v0,24(s8)

      /* round 25  */
      ILINTRANS(r3,r4,r2,r1,r0);
  4b1ad8:	8fc2001c 	lw	v0,28(s8)
  4b1adc:	00000000 	nop
  4b1ae0:	00021a80 	sll	v1,v0,0xa
  4b1ae4:	00021582 	srl	v0,v0,0x16
  4b1ae8:	00621025 	or	v0,v1,v0
  4b1aec:	afc2001c 	sw	v0,28(s8)
  4b1af0:	8fc20020 	lw	v0,32(s8)
  4b1af4:	00000000 	nop
  4b1af8:	00021ec0 	sll	v1,v0,0x1b
  4b1afc:	00021142 	srl	v0,v0,0x5
  4b1b00:	00621025 	or	v0,v1,v0
  4b1b04:	afc20020 	sw	v0,32(s8)
  4b1b08:	8fc3001c 	lw	v1,28(s8)
  4b1b0c:	8fc20018 	lw	v0,24(s8)
  4b1b10:	00000000 	nop
  4b1b14:	00621026 	xor	v0,v1,v0
  4b1b18:	afc2001c 	sw	v0,28(s8)
  4b1b1c:	8fc20024 	lw	v0,36(s8)
  4b1b20:	00000000 	nop
  4b1b24:	000211c0 	sll	v0,v0,0x7
  4b1b28:	afc20014 	sw	v0,20(s8)
  4b1b2c:	8fc30020 	lw	v1,32(s8)
  4b1b30:	8fc20024 	lw	v0,36(s8)
  4b1b34:	00000000 	nop
  4b1b38:	00621026 	xor	v0,v1,v0
  4b1b3c:	afc20020 	sw	v0,32(s8)
  4b1b40:	8fc3001c 	lw	v1,28(s8)
  4b1b44:	8fc20014 	lw	v0,20(s8)
  4b1b48:	00000000 	nop
  4b1b4c:	00621026 	xor	v0,v1,v0
  4b1b50:	afc2001c 	sw	v0,28(s8)
  4b1b54:	8fc30020 	lw	v1,32(s8)
  4b1b58:	8fc20018 	lw	v0,24(s8)
  4b1b5c:	00000000 	nop
  4b1b60:	00621026 	xor	v0,v1,v0
  4b1b64:	afc20020 	sw	v0,32(s8)
  4b1b68:	8fc20018 	lw	v0,24(s8)
  4b1b6c:	00000000 	nop
  4b1b70:	00021e40 	sll	v1,v0,0x19
  4b1b74:	000211c2 	srl	v0,v0,0x7
  4b1b78:	00621025 	or	v0,v1,v0
  4b1b7c:	afc20018 	sw	v0,24(s8)
  4b1b80:	8fc20024 	lw	v0,36(s8)
  4b1b84:	00000000 	nop
  4b1b88:	00021fc0 	sll	v1,v0,0x1f
  4b1b8c:	00021042 	srl	v0,v0,0x1
  4b1b90:	00621025 	or	v0,v1,v0
  4b1b94:	afc20024 	sw	v0,36(s8)
  4b1b98:	8fc30018 	lw	v1,24(s8)
  4b1b9c:	8fc2001c 	lw	v0,28(s8)
  4b1ba0:	00000000 	nop
  4b1ba4:	00621026 	xor	v0,v1,v0
  4b1ba8:	afc20018 	sw	v0,24(s8)
  4b1bac:	8fc20020 	lw	v0,32(s8)
  4b1bb0:	00000000 	nop
  4b1bb4:	000210c0 	sll	v0,v0,0x3
  4b1bb8:	afc20014 	sw	v0,20(s8)
  4b1bbc:	8fc30024 	lw	v1,36(s8)
  4b1bc0:	8fc20020 	lw	v0,32(s8)
  4b1bc4:	00000000 	nop
  4b1bc8:	00621026 	xor	v0,v1,v0
  4b1bcc:	afc20024 	sw	v0,36(s8)
  4b1bd0:	8fc30018 	lw	v1,24(s8)
  4b1bd4:	8fc20014 	lw	v0,20(s8)
  4b1bd8:	00000000 	nop
  4b1bdc:	00621026 	xor	v0,v1,v0
  4b1be0:	afc20018 	sw	v0,24(s8)
  4b1be4:	8fc30024 	lw	v1,36(s8)
  4b1be8:	8fc2001c 	lw	v0,28(s8)
  4b1bec:	00000000 	nop
  4b1bf0:	00621026 	xor	v0,v1,v0
  4b1bf4:	afc20024 	sw	v0,36(s8)
  4b1bf8:	8fc2001c 	lw	v0,28(s8)
  4b1bfc:	00000000 	nop
  4b1c00:	00021f40 	sll	v1,v0,0x1d
  4b1c04:	000210c2 	srl	v0,v0,0x3
  4b1c08:	00621025 	or	v0,v1,v0
  4b1c0c:	afc2001c 	sw	v0,28(s8)
  4b1c10:	8fc20020 	lw	v0,32(s8)
  4b1c14:	00000000 	nop
  4b1c18:	00021cc0 	sll	v1,v0,0x13
  4b1c1c:	00021342 	srl	v0,v0,0xd
  4b1c20:	00621025 	or	v0,v1,v0
  4b1c24:	afc20020 	sw	v0,32(s8)
      I7(r3,r4,r2,r1,r0);
  4b1c28:	8fc2001c 	lw	v0,28(s8)
  4b1c2c:	00000000 	nop
  4b1c30:	afc20014 	sw	v0,20(s8)
  4b1c34:	8fc3001c 	lw	v1,28(s8)
  4b1c38:	8fc20020 	lw	v0,32(s8)
  4b1c3c:	00000000 	nop
  4b1c40:	00621026 	xor	v0,v1,v0
  4b1c44:	afc2001c 	sw	v0,28(s8)
  4b1c48:	8fc30020 	lw	v1,32(s8)
  4b1c4c:	8fc20018 	lw	v0,24(s8)
  4b1c50:	00000000 	nop
  4b1c54:	00621024 	and	v0,v1,v0
  4b1c58:	afc20020 	sw	v0,32(s8)
  4b1c5c:	8fc30014 	lw	v1,20(s8)
  4b1c60:	8fc20018 	lw	v0,24(s8)
  4b1c64:	00000000 	nop
  4b1c68:	00621025 	or	v0,v1,v0
  4b1c6c:	afc20014 	sw	v0,20(s8)
  4b1c70:	8fc2001c 	lw	v0,28(s8)
  4b1c74:	00000000 	nop
  4b1c78:	00021027 	nor	v0,zero,v0
  4b1c7c:	afc2001c 	sw	v0,28(s8)
  4b1c80:	8fc30018 	lw	v1,24(s8)
  4b1c84:	8fc20024 	lw	v0,36(s8)
  4b1c88:	00000000 	nop
  4b1c8c:	00621026 	xor	v0,v1,v0
  4b1c90:	afc20018 	sw	v0,24(s8)
  4b1c94:	8fc30024 	lw	v1,36(s8)
  4b1c98:	8fc20020 	lw	v0,32(s8)
  4b1c9c:	00000000 	nop
  4b1ca0:	00621025 	or	v0,v1,v0
  4b1ca4:	afc20024 	sw	v0,36(s8)
  4b1ca8:	8fc30020 	lw	v1,32(s8)
  4b1cac:	8fc2001c 	lw	v0,28(s8)
  4b1cb0:	00000000 	nop
  4b1cb4:	00621026 	xor	v0,v1,v0
  4b1cb8:	afc20020 	sw	v0,32(s8)
  4b1cbc:	8fc3001c 	lw	v1,28(s8)
  4b1cc0:	8fc20014 	lw	v0,20(s8)
  4b1cc4:	00000000 	nop
  4b1cc8:	00621024 	and	v0,v1,v0
  4b1ccc:	afc2001c 	sw	v0,28(s8)
  4b1cd0:	8fc30018 	lw	v1,24(s8)
  4b1cd4:	8fc20014 	lw	v0,20(s8)
  4b1cd8:	00000000 	nop
  4b1cdc:	00621024 	and	v0,v1,v0
  4b1ce0:	afc20018 	sw	v0,24(s8)
  4b1ce4:	8fc30024 	lw	v1,36(s8)
  4b1ce8:	8fc2001c 	lw	v0,28(s8)
  4b1cec:	00000000 	nop
  4b1cf0:	00621026 	xor	v0,v1,v0
  4b1cf4:	afc20024 	sw	v0,36(s8)
  4b1cf8:	8fc3001c 	lw	v1,28(s8)
  4b1cfc:	8fc20020 	lw	v0,32(s8)
  4b1d00:	00000000 	nop
  4b1d04:	00621026 	xor	v0,v1,v0
  4b1d08:	afc2001c 	sw	v0,28(s8)
  4b1d0c:	8fc30020 	lw	v1,32(s8)
  4b1d10:	8fc2001c 	lw	v0,28(s8)
  4b1d14:	00000000 	nop
  4b1d18:	00621025 	or	v0,v1,v0
  4b1d1c:	afc20020 	sw	v0,32(s8)
  4b1d20:	8fc30014 	lw	v1,20(s8)
  4b1d24:	8fc20024 	lw	v0,36(s8)
  4b1d28:	00000000 	nop
  4b1d2c:	00621026 	xor	v0,v1,v0
  4b1d30:	afc20014 	sw	v0,20(s8)
  4b1d34:	8fc30020 	lw	v1,32(s8)
  4b1d38:	8fc20018 	lw	v0,24(s8)
  4b1d3c:	00000000 	nop
  4b1d40:	00621026 	xor	v0,v1,v0
  4b1d44:	afc20020 	sw	v0,32(s8)
  4b1d48:	8fc30018 	lw	v1,24(s8)
  4b1d4c:	8fc20014 	lw	v0,20(s8)
  4b1d50:	00000000 	nop
  4b1d54:	00621026 	xor	v0,v1,v0
  4b1d58:	afc20018 	sw	v0,24(s8)
  4b1d5c:	8fc30014 	lw	v1,20(s8)
  4b1d60:	8fc20020 	lw	v0,32(s8)
  4b1d64:	00000000 	nop
  4b1d68:	00621025 	or	v0,v1,v0
  4b1d6c:	afc20014 	sw	v0,20(s8)
  4b1d70:	8fc30018 	lw	v1,24(s8)
  4b1d74:	8fc2001c 	lw	v0,28(s8)
  4b1d78:	00000000 	nop
  4b1d7c:	00621026 	xor	v0,v1,v0
  4b1d80:	afc20018 	sw	v0,24(s8)
  4b1d84:	8fc30014 	lw	v1,20(s8)
  4b1d88:	8fc2001c 	lw	v0,28(s8)
  4b1d8c:	00000000 	nop
  4b1d90:	00621026 	xor	v0,v1,v0
  4b1d94:	afc20014 	sw	v0,20(s8)
      KEYMIX(r1,r3,r4,r0,r2,28);
  4b1d98:	8fc20008 	lw	v0,8(s8)
  4b1d9c:	00000000 	nop
  4b1da0:	24420090 	addiu	v0,v0,144
  4b1da4:	8c430000 	lw	v1,0(v0)
  4b1da8:	8fc20018 	lw	v0,24(s8)
  4b1dac:	00000000 	nop
  4b1db0:	00431026 	xor	v0,v0,v1
  4b1db4:	afc20018 	sw	v0,24(s8)
  4b1db8:	8fc20008 	lw	v0,8(s8)
  4b1dbc:	00000000 	nop
  4b1dc0:	24420094 	addiu	v0,v0,148
  4b1dc4:	8c430000 	lw	v1,0(v0)
  4b1dc8:	8fc20020 	lw	v0,32(s8)
  4b1dcc:	00000000 	nop
  4b1dd0:	00431026 	xor	v0,v0,v1
  4b1dd4:	afc20020 	sw	v0,32(s8)
  4b1dd8:	8fc20008 	lw	v0,8(s8)
  4b1ddc:	00000000 	nop
  4b1de0:	24420098 	addiu	v0,v0,152
  4b1de4:	8c430000 	lw	v1,0(v0)
  4b1de8:	8fc20024 	lw	v0,36(s8)
  4b1dec:	00000000 	nop
  4b1df0:	00431026 	xor	v0,v0,v1
  4b1df4:	afc20024 	sw	v0,36(s8)
  4b1df8:	8fc20008 	lw	v0,8(s8)
  4b1dfc:	00000000 	nop
  4b1e00:	2442009c 	addiu	v0,v0,156
  4b1e04:	8c430000 	lw	v1,0(v0)
  4b1e08:	8fc20014 	lw	v0,20(s8)
  4b1e0c:	00000000 	nop
  4b1e10:	00431026 	xor	v0,v0,v1
  4b1e14:	afc20014 	sw	v0,20(s8)

      /* round 26  */
      ILINTRANS(r1,r3,r4,r0,r2);
  4b1e18:	8fc20024 	lw	v0,36(s8)
  4b1e1c:	00000000 	nop
  4b1e20:	00021a80 	sll	v1,v0,0xa
  4b1e24:	00021582 	srl	v0,v0,0x16
  4b1e28:	00621025 	or	v0,v1,v0
  4b1e2c:	afc20024 	sw	v0,36(s8)
  4b1e30:	8fc20018 	lw	v0,24(s8)
  4b1e34:	00000000 	nop
  4b1e38:	00021ec0 	sll	v1,v0,0x1b
  4b1e3c:	00021142 	srl	v0,v0,0x5
  4b1e40:	00621025 	or	v0,v1,v0
  4b1e44:	afc20018 	sw	v0,24(s8)
  4b1e48:	8fc30024 	lw	v1,36(s8)
  4b1e4c:	8fc20014 	lw	v0,20(s8)
  4b1e50:	00000000 	nop
  4b1e54:	00621026 	xor	v0,v1,v0
  4b1e58:	afc20024 	sw	v0,36(s8)
  4b1e5c:	8fc20020 	lw	v0,32(s8)
  4b1e60:	00000000 	nop
  4b1e64:	000211c0 	sll	v0,v0,0x7
  4b1e68:	afc2001c 	sw	v0,28(s8)
  4b1e6c:	8fc30018 	lw	v1,24(s8)
  4b1e70:	8fc20020 	lw	v0,32(s8)
  4b1e74:	00000000 	nop
  4b1e78:	00621026 	xor	v0,v1,v0
  4b1e7c:	afc20018 	sw	v0,24(s8)
  4b1e80:	8fc30024 	lw	v1,36(s8)
  4b1e84:	8fc2001c 	lw	v0,28(s8)
  4b1e88:	00000000 	nop
  4b1e8c:	00621026 	xor	v0,v1,v0
  4b1e90:	afc20024 	sw	v0,36(s8)
  4b1e94:	8fc30018 	lw	v1,24(s8)
  4b1e98:	8fc20014 	lw	v0,20(s8)
  4b1e9c:	00000000 	nop
  4b1ea0:	00621026 	xor	v0,v1,v0
  4b1ea4:	afc20018 	sw	v0,24(s8)
  4b1ea8:	8fc20014 	lw	v0,20(s8)
  4b1eac:	00000000 	nop
  4b1eb0:	00021e40 	sll	v1,v0,0x19
  4b1eb4:	000211c2 	srl	v0,v0,0x7
  4b1eb8:	00621025 	or	v0,v1,v0
  4b1ebc:	afc20014 	sw	v0,20(s8)
  4b1ec0:	8fc20020 	lw	v0,32(s8)
  4b1ec4:	00000000 	nop
  4b1ec8:	00021fc0 	sll	v1,v0,0x1f
  4b1ecc:	00021042 	srl	v0,v0,0x1
  4b1ed0:	00621025 	or	v0,v1,v0
  4b1ed4:	afc20020 	sw	v0,32(s8)
  4b1ed8:	8fc30014 	lw	v1,20(s8)
  4b1edc:	8fc20024 	lw	v0,36(s8)
  4b1ee0:	00000000 	nop
  4b1ee4:	00621026 	xor	v0,v1,v0
  4b1ee8:	afc20014 	sw	v0,20(s8)
  4b1eec:	8fc20018 	lw	v0,24(s8)
  4b1ef0:	00000000 	nop
  4b1ef4:	000210c0 	sll	v0,v0,0x3
  4b1ef8:	afc2001c 	sw	v0,28(s8)
  4b1efc:	8fc30020 	lw	v1,32(s8)
  4b1f00:	8fc20018 	lw	v0,24(s8)
  4b1f04:	00000000 	nop
  4b1f08:	00621026 	xor	v0,v1,v0
  4b1f0c:	afc20020 	sw	v0,32(s8)
  4b1f10:	8fc30014 	lw	v1,20(s8)
  4b1f14:	8fc2001c 	lw	v0,28(s8)
  4b1f18:	00000000 	nop
  4b1f1c:	00621026 	xor	v0,v1,v0
  4b1f20:	afc20014 	sw	v0,20(s8)
  4b1f24:	8fc30020 	lw	v1,32(s8)
  4b1f28:	8fc20024 	lw	v0,36(s8)
  4b1f2c:	00000000 	nop
  4b1f30:	00621026 	xor	v0,v1,v0
  4b1f34:	afc20020 	sw	v0,32(s8)
  4b1f38:	8fc20024 	lw	v0,36(s8)
  4b1f3c:	00000000 	nop
  4b1f40:	00021f40 	sll	v1,v0,0x1d
  4b1f44:	000210c2 	srl	v0,v0,0x3
  4b1f48:	00621025 	or	v0,v1,v0
  4b1f4c:	afc20024 	sw	v0,36(s8)
  4b1f50:	8fc20018 	lw	v0,24(s8)
  4b1f54:	00000000 	nop
  4b1f58:	00021cc0 	sll	v1,v0,0x13
  4b1f5c:	00021342 	srl	v0,v0,0xd
  4b1f60:	00621025 	or	v0,v1,v0
  4b1f64:	afc20018 	sw	v0,24(s8)
      I6(r1,r3,r4,r0,r2);
  4b1f68:	8fc30018 	lw	v1,24(s8)
  4b1f6c:	8fc20024 	lw	v0,36(s8)
  4b1f70:	00000000 	nop
  4b1f74:	00621026 	xor	v0,v1,v0
  4b1f78:	afc20018 	sw	v0,24(s8)
  4b1f7c:	8fc20024 	lw	v0,36(s8)
  4b1f80:	00000000 	nop
  4b1f84:	afc2001c 	sw	v0,28(s8)
  4b1f88:	8fc30024 	lw	v1,36(s8)
  4b1f8c:	8fc20018 	lw	v0,24(s8)
  4b1f90:	00000000 	nop
  4b1f94:	00621024 	and	v0,v1,v0
  4b1f98:	afc20024 	sw	v0,36(s8)
  4b1f9c:	8fc3001c 	lw	v1,28(s8)
  4b1fa0:	8fc20014 	lw	v0,20(s8)
  4b1fa4:	00000000 	nop
  4b1fa8:	00621026 	xor	v0,v1,v0
  4b1fac:	afc2001c 	sw	v0,28(s8)
  4b1fb0:	8fc20024 	lw	v0,36(s8)
  4b1fb4:	00000000 	nop
  4b1fb8:	00021027 	nor	v0,zero,v0
  4b1fbc:	afc20024 	sw	v0,36(s8)
  4b1fc0:	8fc30014 	lw	v1,20(s8)
  4b1fc4:	8fc20020 	lw	v0,32(s8)
  4b1fc8:	00000000 	nop
  4b1fcc:	00621026 	xor	v0,v1,v0
  4b1fd0:	afc20014 	sw	v0,20(s8)
  4b1fd4:	8fc30024 	lw	v1,36(s8)
  4b1fd8:	8fc20014 	lw	v0,20(s8)
  4b1fdc:	00000000 	nop
  4b1fe0:	00621026 	xor	v0,v1,v0
  4b1fe4:	afc20024 	sw	v0,36(s8)
  4b1fe8:	8fc3001c 	lw	v1,28(s8)
  4b1fec:	8fc20018 	lw	v0,24(s8)
  4b1ff0:	00000000 	nop
  4b1ff4:	00621025 	or	v0,v1,v0
  4b1ff8:	afc2001c 	sw	v0,28(s8)
  4b1ffc:	8fc30018 	lw	v1,24(s8)
  4b2000:	8fc20024 	lw	v0,36(s8)
  4b2004:	00000000 	nop
  4b2008:	00621026 	xor	v0,v1,v0
  4b200c:	afc20018 	sw	v0,24(s8)
  4b2010:	8fc30014 	lw	v1,20(s8)
  4b2014:	8fc2001c 	lw	v0,28(s8)
  4b2018:	00000000 	nop
  4b201c:	00621026 	xor	v0,v1,v0
  4b2020:	afc20014 	sw	v0,20(s8)
  4b2024:	8fc3001c 	lw	v1,28(s8)
  4b2028:	8fc20020 	lw	v0,32(s8)
  4b202c:	00000000 	nop
  4b2030:	00621026 	xor	v0,v1,v0
  4b2034:	afc2001c 	sw	v0,28(s8)
  4b2038:	8fc30020 	lw	v1,32(s8)
  4b203c:	8fc20014 	lw	v0,20(s8)
  4b2040:	00000000 	nop
  4b2044:	00621024 	and	v0,v1,v0
  4b2048:	afc20020 	sw	v0,32(s8)
  4b204c:	8fc30020 	lw	v1,32(s8)
  4b2050:	8fc20018 	lw	v0,24(s8)
  4b2054:	00000000 	nop
  4b2058:	00621026 	xor	v0,v1,v0
  4b205c:	afc20020 	sw	v0,32(s8)
  4b2060:	8fc30018 	lw	v1,24(s8)
  4b2064:	8fc20014 	lw	v0,20(s8)
  4b2068:	00000000 	nop
  4b206c:	00621026 	xor	v0,v1,v0
  4b2070:	afc20018 	sw	v0,24(s8)
  4b2074:	8fc30018 	lw	v1,24(s8)
  4b2078:	8fc20024 	lw	v0,36(s8)
  4b207c:	00000000 	nop
  4b2080:	00621025 	or	v0,v1,v0
  4b2084:	afc20018 	sw	v0,24(s8)
  4b2088:	8fc30014 	lw	v1,20(s8)
  4b208c:	8fc20020 	lw	v0,32(s8)
  4b2090:	00000000 	nop
  4b2094:	00621026 	xor	v0,v1,v0
  4b2098:	afc20014 	sw	v0,20(s8)
  4b209c:	8fc3001c 	lw	v1,28(s8)
  4b20a0:	8fc20018 	lw	v0,24(s8)
  4b20a4:	00000000 	nop
  4b20a8:	00621026 	xor	v0,v1,v0
  4b20ac:	afc2001c 	sw	v0,28(s8)
      KEYMIX(r3,r4,r2,r0,r1,24);
  4b20b0:	8fc20008 	lw	v0,8(s8)
  4b20b4:	00000000 	nop
  4b20b8:	24420080 	addiu	v0,v0,128
  4b20bc:	8c430000 	lw	v1,0(v0)
  4b20c0:	8fc20020 	lw	v0,32(s8)
  4b20c4:	00000000 	nop
  4b20c8:	00431026 	xor	v0,v0,v1
  4b20cc:	afc20020 	sw	v0,32(s8)
  4b20d0:	8fc20008 	lw	v0,8(s8)
  4b20d4:	00000000 	nop
  4b20d8:	24420084 	addiu	v0,v0,132
  4b20dc:	8c430000 	lw	v1,0(v0)
  4b20e0:	8fc20024 	lw	v0,36(s8)
  4b20e4:	00000000 	nop
  4b20e8:	00431026 	xor	v0,v0,v1
  4b20ec:	afc20024 	sw	v0,36(s8)
  4b20f0:	8fc20008 	lw	v0,8(s8)
  4b20f4:	00000000 	nop
  4b20f8:	24420088 	addiu	v0,v0,136
  4b20fc:	8c430000 	lw	v1,0(v0)
  4b2100:	8fc2001c 	lw	v0,28(s8)
  4b2104:	00000000 	nop
  4b2108:	00431026 	xor	v0,v0,v1
  4b210c:	afc2001c 	sw	v0,28(s8)
  4b2110:	8fc20008 	lw	v0,8(s8)
  4b2114:	00000000 	nop
  4b2118:	2442008c 	addiu	v0,v0,140
  4b211c:	8c430000 	lw	v1,0(v0)
  4b2120:	8fc20014 	lw	v0,20(s8)
  4b2124:	00000000 	nop
  4b2128:	00431026 	xor	v0,v0,v1
  4b212c:	afc20014 	sw	v0,20(s8)

      /* round 27  */
      ILINTRANS(r3,r4,r2,r0,r1);
  4b2130:	8fc2001c 	lw	v0,28(s8)
  4b2134:	00000000 	nop
  4b2138:	00021a80 	sll	v1,v0,0xa
  4b213c:	00021582 	srl	v0,v0,0x16
  4b2140:	00621025 	or	v0,v1,v0
  4b2144:	afc2001c 	sw	v0,28(s8)
  4b2148:	8fc20020 	lw	v0,32(s8)
  4b214c:	00000000 	nop
  4b2150:	00021ec0 	sll	v1,v0,0x1b
  4b2154:	00021142 	srl	v0,v0,0x5
  4b2158:	00621025 	or	v0,v1,v0
  4b215c:	afc20020 	sw	v0,32(s8)
  4b2160:	8fc3001c 	lw	v1,28(s8)
  4b2164:	8fc20014 	lw	v0,20(s8)
  4b2168:	00000000 	nop
  4b216c:	00621026 	xor	v0,v1,v0
  4b2170:	afc2001c 	sw	v0,28(s8)
  4b2174:	8fc20024 	lw	v0,36(s8)
  4b2178:	00000000 	nop
  4b217c:	000211c0 	sll	v0,v0,0x7
  4b2180:	afc20018 	sw	v0,24(s8)
  4b2184:	8fc30020 	lw	v1,32(s8)
  4b2188:	8fc20024 	lw	v0,36(s8)
  4b218c:	00000000 	nop
  4b2190:	00621026 	xor	v0,v1,v0
  4b2194:	afc20020 	sw	v0,32(s8)
  4b2198:	8fc3001c 	lw	v1,28(s8)
  4b219c:	8fc20018 	lw	v0,24(s8)
  4b21a0:	00000000 	nop
  4b21a4:	00621026 	xor	v0,v1,v0
  4b21a8:	afc2001c 	sw	v0,28(s8)
  4b21ac:	8fc30020 	lw	v1,32(s8)
  4b21b0:	8fc20014 	lw	v0,20(s8)
  4b21b4:	00000000 	nop
  4b21b8:	00621026 	xor	v0,v1,v0
  4b21bc:	afc20020 	sw	v0,32(s8)
  4b21c0:	8fc20014 	lw	v0,20(s8)
  4b21c4:	00000000 	nop
  4b21c8:	00021e40 	sll	v1,v0,0x19
  4b21cc:	000211c2 	srl	v0,v0,0x7
  4b21d0:	00621025 	or	v0,v1,v0
  4b21d4:	afc20014 	sw	v0,20(s8)
  4b21d8:	8fc20024 	lw	v0,36(s8)
  4b21dc:	00000000 	nop
  4b21e0:	00021fc0 	sll	v1,v0,0x1f
  4b21e4:	00021042 	srl	v0,v0,0x1
  4b21e8:	00621025 	or	v0,v1,v0
  4b21ec:	afc20024 	sw	v0,36(s8)
  4b21f0:	8fc30014 	lw	v1,20(s8)
  4b21f4:	8fc2001c 	lw	v0,28(s8)
  4b21f8:	00000000 	nop
  4b21fc:	00621026 	xor	v0,v1,v0
  4b2200:	afc20014 	sw	v0,20(s8)
  4b2204:	8fc20020 	lw	v0,32(s8)
  4b2208:	00000000 	nop
  4b220c:	000210c0 	sll	v0,v0,0x3
  4b2210:	afc20018 	sw	v0,24(s8)
  4b2214:	8fc30024 	lw	v1,36(s8)
  4b2218:	8fc20020 	lw	v0,32(s8)
  4b221c:	00000000 	nop
  4b2220:	00621026 	xor	v0,v1,v0
  4b2224:	afc20024 	sw	v0,36(s8)
  4b2228:	8fc30014 	lw	v1,20(s8)
  4b222c:	8fc20018 	lw	v0,24(s8)
  4b2230:	00000000 	nop
  4b2234:	00621026 	xor	v0,v1,v0
  4b2238:	afc20014 	sw	v0,20(s8)
  4b223c:	8fc30024 	lw	v1,36(s8)
  4b2240:	8fc2001c 	lw	v0,28(s8)
  4b2244:	00000000 	nop
  4b2248:	00621026 	xor	v0,v1,v0
  4b224c:	afc20024 	sw	v0,36(s8)
  4b2250:	8fc2001c 	lw	v0,28(s8)
  4b2254:	00000000 	nop
  4b2258:	00021f40 	sll	v1,v0,0x1d
  4b225c:	000210c2 	srl	v0,v0,0x3
  4b2260:	00621025 	or	v0,v1,v0
  4b2264:	afc2001c 	sw	v0,28(s8)
  4b2268:	8fc20020 	lw	v0,32(s8)
  4b226c:	00000000 	nop
  4b2270:	00021cc0 	sll	v1,v0,0x13
  4b2274:	00021342 	srl	v0,v0,0xd
  4b2278:	00621025 	or	v0,v1,v0
  4b227c:	afc20020 	sw	v0,32(s8)
      I5(r3,r4,r2,r0,r1);
  4b2280:	8fc20024 	lw	v0,36(s8)
  4b2284:	00000000 	nop
  4b2288:	00021027 	nor	v0,zero,v0
  4b228c:	afc20024 	sw	v0,36(s8)
  4b2290:	8fc20014 	lw	v0,20(s8)
  4b2294:	00000000 	nop
  4b2298:	afc20018 	sw	v0,24(s8)
  4b229c:	8fc3001c 	lw	v1,28(s8)
  4b22a0:	8fc20024 	lw	v0,36(s8)
  4b22a4:	00000000 	nop
  4b22a8:	00621026 	xor	v0,v1,v0
  4b22ac:	afc2001c 	sw	v0,28(s8)
  4b22b0:	8fc30014 	lw	v1,20(s8)
  4b22b4:	8fc20020 	lw	v0,32(s8)
  4b22b8:	00000000 	nop
  4b22bc:	00621025 	or	v0,v1,v0
  4b22c0:	afc20014 	sw	v0,20(s8)
  4b22c4:	8fc30014 	lw	v1,20(s8)
  4b22c8:	8fc2001c 	lw	v0,28(s8)
  4b22cc:	00000000 	nop
  4b22d0:	00621026 	xor	v0,v1,v0
  4b22d4:	afc20014 	sw	v0,20(s8)
  4b22d8:	8fc3001c 	lw	v1,28(s8)
  4b22dc:	8fc20024 	lw	v0,36(s8)
  4b22e0:	00000000 	nop
  4b22e4:	00621025 	or	v0,v1,v0
  4b22e8:	afc2001c 	sw	v0,28(s8)
  4b22ec:	8fc3001c 	lw	v1,28(s8)
  4b22f0:	8fc20020 	lw	v0,32(s8)
  4b22f4:	00000000 	nop
  4b22f8:	00621024 	and	v0,v1,v0
  4b22fc:	afc2001c 	sw	v0,28(s8)
  4b2300:	8fc30018 	lw	v1,24(s8)
  4b2304:	8fc20014 	lw	v0,20(s8)
  4b2308:	00000000 	nop
  4b230c:	00621026 	xor	v0,v1,v0
  4b2310:	afc20018 	sw	v0,24(s8)
  4b2314:	8fc3001c 	lw	v1,28(s8)
  4b2318:	8fc20018 	lw	v0,24(s8)
  4b231c:	00000000 	nop
  4b2320:	00621026 	xor	v0,v1,v0
  4b2324:	afc2001c 	sw	v0,28(s8)
  4b2328:	8fc30018 	lw	v1,24(s8)
  4b232c:	8fc20020 	lw	v0,32(s8)
  4b2330:	00000000 	nop
  4b2334:	00621025 	or	v0,v1,v0
  4b2338:	afc20018 	sw	v0,24(s8)
  4b233c:	8fc30018 	lw	v1,24(s8)
  4b2340:	8fc20024 	lw	v0,36(s8)
  4b2344:	00000000 	nop
  4b2348:	00621026 	xor	v0,v1,v0
  4b234c:	afc20018 	sw	v0,24(s8)
  4b2350:	8fc30024 	lw	v1,36(s8)
  4b2354:	8fc2001c 	lw	v0,28(s8)
  4b2358:	00000000 	nop
  4b235c:	00621024 	and	v0,v1,v0
  4b2360:	afc20024 	sw	v0,36(s8)
  4b2364:	8fc30024 	lw	v1,36(s8)
  4b2368:	8fc20014 	lw	v0,20(s8)
  4b236c:	00000000 	nop
  4b2370:	00621026 	xor	v0,v1,v0
  4b2374:	afc20024 	sw	v0,36(s8)
  4b2378:	8fc30018 	lw	v1,24(s8)
  4b237c:	8fc2001c 	lw	v0,28(s8)
  4b2380:	00000000 	nop
  4b2384:	00621026 	xor	v0,v1,v0
  4b2388:	afc20018 	sw	v0,24(s8)
  4b238c:	8fc30014 	lw	v1,20(s8)
  4b2390:	8fc20018 	lw	v0,24(s8)
  4b2394:	00000000 	nop
  4b2398:	00621024 	and	v0,v1,v0
  4b239c:	afc20014 	sw	v0,20(s8)
  4b23a0:	8fc30018 	lw	v1,24(s8)
  4b23a4:	8fc20024 	lw	v0,36(s8)
  4b23a8:	00000000 	nop
  4b23ac:	00621026 	xor	v0,v1,v0
  4b23b0:	afc20018 	sw	v0,24(s8)
  4b23b4:	8fc30014 	lw	v1,20(s8)
  4b23b8:	8fc20020 	lw	v0,32(s8)
  4b23bc:	00000000 	nop
  4b23c0:	00621026 	xor	v0,v1,v0
  4b23c4:	afc20014 	sw	v0,20(s8)
  4b23c8:	8fc30014 	lw	v1,20(s8)
  4b23cc:	8fc20018 	lw	v0,24(s8)
  4b23d0:	00000000 	nop
  4b23d4:	00621026 	xor	v0,v1,v0
  4b23d8:	afc20014 	sw	v0,20(s8)
  4b23dc:	8fc20018 	lw	v0,24(s8)
  4b23e0:	00000000 	nop
  4b23e4:	00021027 	nor	v0,zero,v0
  4b23e8:	afc20018 	sw	v0,24(s8)
      KEYMIX(r4,r1,r0,r2,r3,20);
  4b23ec:	8fc20008 	lw	v0,8(s8)
  4b23f0:	00000000 	nop
  4b23f4:	24420070 	addiu	v0,v0,112
  4b23f8:	8c430000 	lw	v1,0(v0)
  4b23fc:	8fc20024 	lw	v0,36(s8)
  4b2400:	00000000 	nop
  4b2404:	00431026 	xor	v0,v0,v1
  4b2408:	afc20024 	sw	v0,36(s8)
  4b240c:	8fc20008 	lw	v0,8(s8)
  4b2410:	00000000 	nop
  4b2414:	24420074 	addiu	v0,v0,116
  4b2418:	8c430000 	lw	v1,0(v0)
  4b241c:	8fc20018 	lw	v0,24(s8)
  4b2420:	00000000 	nop
  4b2424:	00431026 	xor	v0,v0,v1
  4b2428:	afc20018 	sw	v0,24(s8)
  4b242c:	8fc20008 	lw	v0,8(s8)
  4b2430:	00000000 	nop
  4b2434:	24420078 	addiu	v0,v0,120
  4b2438:	8c430000 	lw	v1,0(v0)
  4b243c:	8fc20014 	lw	v0,20(s8)
  4b2440:	00000000 	nop
  4b2444:	00431026 	xor	v0,v0,v1
  4b2448:	afc20014 	sw	v0,20(s8)
  4b244c:	8fc20008 	lw	v0,8(s8)
  4b2450:	00000000 	nop
  4b2454:	2442007c 	addiu	v0,v0,124
  4b2458:	8c430000 	lw	v1,0(v0)
  4b245c:	8fc2001c 	lw	v0,28(s8)
  4b2460:	00000000 	nop
  4b2464:	00431026 	xor	v0,v0,v1
  4b2468:	afc2001c 	sw	v0,28(s8)

      /* round 28  */
      ILINTRANS(r4,r1,r0,r2,r3);
  4b246c:	8fc20014 	lw	v0,20(s8)
  4b2470:	00000000 	nop
  4b2474:	00021a80 	sll	v1,v0,0xa
  4b2478:	00021582 	srl	v0,v0,0x16
  4b247c:	00621025 	or	v0,v1,v0
  4b2480:	afc20014 	sw	v0,20(s8)
  4b2484:	8fc20024 	lw	v0,36(s8)
  4b2488:	00000000 	nop
  4b248c:	00021ec0 	sll	v1,v0,0x1b
  4b2490:	00021142 	srl	v0,v0,0x5
  4b2494:	00621025 	or	v0,v1,v0
  4b2498:	afc20024 	sw	v0,36(s8)
  4b249c:	8fc30014 	lw	v1,20(s8)
  4b24a0:	8fc2001c 	lw	v0,28(s8)
  4b24a4:	00000000 	nop
  4b24a8:	00621026 	xor	v0,v1,v0
  4b24ac:	afc20014 	sw	v0,20(s8)
  4b24b0:	8fc20018 	lw	v0,24(s8)
  4b24b4:	00000000 	nop
  4b24b8:	000211c0 	sll	v0,v0,0x7
  4b24bc:	afc20020 	sw	v0,32(s8)
  4b24c0:	8fc30024 	lw	v1,36(s8)
  4b24c4:	8fc20018 	lw	v0,24(s8)
  4b24c8:	00000000 	nop
  4b24cc:	00621026 	xor	v0,v1,v0
  4b24d0:	afc20024 	sw	v0,36(s8)
  4b24d4:	8fc30014 	lw	v1,20(s8)
  4b24d8:	8fc20020 	lw	v0,32(s8)
  4b24dc:	00000000 	nop
  4b24e0:	00621026 	xor	v0,v1,v0
  4b24e4:	afc20014 	sw	v0,20(s8)
  4b24e8:	8fc30024 	lw	v1,36(s8)
  4b24ec:	8fc2001c 	lw	v0,28(s8)
  4b24f0:	00000000 	nop
  4b24f4:	00621026 	xor	v0,v1,v0
  4b24f8:	afc20024 	sw	v0,36(s8)
  4b24fc:	8fc2001c 	lw	v0,28(s8)
  4b2500:	00000000 	nop
  4b2504:	00021e40 	sll	v1,v0,0x19
  4b2508:	000211c2 	srl	v0,v0,0x7
  4b250c:	00621025 	or	v0,v1,v0
  4b2510:	afc2001c 	sw	v0,28(s8)
  4b2514:	8fc20018 	lw	v0,24(s8)
  4b2518:	00000000 	nop
  4b251c:	00021fc0 	sll	v1,v0,0x1f
  4b2520:	00021042 	srl	v0,v0,0x1
  4b2524:	00621025 	or	v0,v1,v0
  4b2528:	afc20018 	sw	v0,24(s8)
  4b252c:	8fc3001c 	lw	v1,28(s8)
  4b2530:	8fc20014 	lw	v0,20(s8)
  4b2534:	00000000 	nop
  4b2538:	00621026 	xor	v0,v1,v0
  4b253c:	afc2001c 	sw	v0,28(s8)
  4b2540:	8fc20024 	lw	v0,36(s8)
  4b2544:	00000000 	nop
  4b2548:	000210c0 	sll	v0,v0,0x3
  4b254c:	afc20020 	sw	v0,32(s8)
  4b2550:	8fc30018 	lw	v1,24(s8)
  4b2554:	8fc20024 	lw	v0,36(s8)
  4b2558:	00000000 	nop
  4b255c:	00621026 	xor	v0,v1,v0
  4b2560:	afc20018 	sw	v0,24(s8)
  4b2564:	8fc3001c 	lw	v1,28(s8)
  4b2568:	8fc20020 	lw	v0,32(s8)
  4b256c:	00000000 	nop
  4b2570:	00621026 	xor	v0,v1,v0
  4b2574:	afc2001c 	sw	v0,28(s8)
  4b2578:	8fc30018 	lw	v1,24(s8)
  4b257c:	8fc20014 	lw	v0,20(s8)
  4b2580:	00000000 	nop
  4b2584:	00621026 	xor	v0,v1,v0
  4b2588:	afc20018 	sw	v0,24(s8)
  4b258c:	8fc20014 	lw	v0,20(s8)
  4b2590:	00000000 	nop
  4b2594:	00021f40 	sll	v1,v0,0x1d
  4b2598:	000210c2 	srl	v0,v0,0x3
  4b259c:	00621025 	or	v0,v1,v0
  4b25a0:	afc20014 	sw	v0,20(s8)
  4b25a4:	8fc20024 	lw	v0,36(s8)
  4b25a8:	00000000 	nop
  4b25ac:	00021cc0 	sll	v1,v0,0x13
  4b25b0:	00021342 	srl	v0,v0,0xd
  4b25b4:	00621025 	or	v0,v1,v0
  4b25b8:	afc20024 	sw	v0,36(s8)
      I4(r4,r1,r0,r2,r3);
  4b25bc:	8fc20014 	lw	v0,20(s8)
  4b25c0:	00000000 	nop
  4b25c4:	afc20020 	sw	v0,32(s8)
  4b25c8:	8fc30014 	lw	v1,20(s8)
  4b25cc:	8fc2001c 	lw	v0,28(s8)
  4b25d0:	00000000 	nop
  4b25d4:	00621024 	and	v0,v1,v0
  4b25d8:	afc20014 	sw	v0,20(s8)
  4b25dc:	8fc30014 	lw	v1,20(s8)
  4b25e0:	8fc20018 	lw	v0,24(s8)
  4b25e4:	00000000 	nop
  4b25e8:	00621026 	xor	v0,v1,v0
  4b25ec:	afc20014 	sw	v0,20(s8)
  4b25f0:	8fc30018 	lw	v1,24(s8)
  4b25f4:	8fc2001c 	lw	v0,28(s8)
  4b25f8:	00000000 	nop
  4b25fc:	00621025 	or	v0,v1,v0
  4b2600:	afc20018 	sw	v0,24(s8)
  4b2604:	8fc30018 	lw	v1,24(s8)
  4b2608:	8fc20024 	lw	v0,36(s8)
  4b260c:	00000000 	nop
  4b2610:	00621024 	and	v0,v1,v0
  4b2614:	afc20018 	sw	v0,24(s8)
  4b2618:	8fc30020 	lw	v1,32(s8)
  4b261c:	8fc20014 	lw	v0,20(s8)
  4b2620:	00000000 	nop
  4b2624:	00621026 	xor	v0,v1,v0
  4b2628:	afc20020 	sw	v0,32(s8)
  4b262c:	8fc30020 	lw	v1,32(s8)
  4b2630:	8fc20018 	lw	v0,24(s8)
  4b2634:	00000000 	nop
  4b2638:	00621026 	xor	v0,v1,v0
  4b263c:	afc20020 	sw	v0,32(s8)
  4b2640:	8fc30018 	lw	v1,24(s8)
  4b2644:	8fc20014 	lw	v0,20(s8)
  4b2648:	00000000 	nop
  4b264c:	00621024 	and	v0,v1,v0
  4b2650:	afc20018 	sw	v0,24(s8)
  4b2654:	8fc20024 	lw	v0,36(s8)
  4b2658:	00000000 	nop
  4b265c:	00021027 	nor	v0,zero,v0
  4b2660:	afc20024 	sw	v0,36(s8)
  4b2664:	8fc3001c 	lw	v1,28(s8)
  4b2668:	8fc20020 	lw	v0,32(s8)
  4b266c:	00000000 	nop
  4b2670:	00621026 	xor	v0,v1,v0
  4b2674:	afc2001c 	sw	v0,28(s8)
  4b2678:	8fc30018 	lw	v1,24(s8)
  4b267c:	8fc2001c 	lw	v0,28(s8)
  4b2680:	00000000 	nop
  4b2684:	00621026 	xor	v0,v1,v0
  4b2688:	afc20018 	sw	v0,24(s8)
  4b268c:	8fc3001c 	lw	v1,28(s8)
  4b2690:	8fc20024 	lw	v0,36(s8)
  4b2694:	00000000 	nop
  4b2698:	00621024 	and	v0,v1,v0
  4b269c:	afc2001c 	sw	v0,28(s8)
  4b26a0:	8fc3001c 	lw	v1,28(s8)
  4b26a4:	8fc20014 	lw	v0,20(s8)
  4b26a8:	00000000 	nop
  4b26ac:	00621026 	xor	v0,v1,v0
  4b26b0:	afc2001c 	sw	v0,28(s8)
  4b26b4:	8fc30024 	lw	v1,36(s8)
  4b26b8:	8fc20018 	lw	v0,24(s8)
  4b26bc:	00000000 	nop
  4b26c0:	00621026 	xor	v0,v1,v0
  4b26c4:	afc20024 	sw	v0,36(s8)
  4b26c8:	8fc30014 	lw	v1,20(s8)
  4b26cc:	8fc20024 	lw	v0,36(s8)
  4b26d0:	00000000 	nop
  4b26d4:	00621024 	and	v0,v1,v0
  4b26d8:	afc20014 	sw	v0,20(s8)
  4b26dc:	8fc3001c 	lw	v1,28(s8)
  4b26e0:	8fc20024 	lw	v0,36(s8)
  4b26e4:	00000000 	nop
  4b26e8:	00621026 	xor	v0,v1,v0
  4b26ec:	afc2001c 	sw	v0,28(s8)
  4b26f0:	8fc30014 	lw	v1,20(s8)
  4b26f4:	8fc20020 	lw	v0,32(s8)
  4b26f8:	00000000 	nop
  4b26fc:	00621026 	xor	v0,v1,v0
  4b2700:	afc20014 	sw	v0,20(s8)
  4b2704:	8fc30014 	lw	v1,20(s8)
  4b2708:	8fc2001c 	lw	v0,28(s8)
  4b270c:	00000000 	nop
  4b2710:	00621025 	or	v0,v1,v0
  4b2714:	afc20014 	sw	v0,20(s8)
  4b2718:	8fc3001c 	lw	v1,28(s8)
  4b271c:	8fc20024 	lw	v0,36(s8)
  4b2720:	00000000 	nop
  4b2724:	00621026 	xor	v0,v1,v0
  4b2728:	afc2001c 	sw	v0,28(s8)
  4b272c:	8fc30014 	lw	v1,20(s8)
  4b2730:	8fc20018 	lw	v0,24(s8)
  4b2734:	00000000 	nop
  4b2738:	00621026 	xor	v0,v1,v0
  4b273c:	afc20014 	sw	v0,20(s8)
      KEYMIX(r4,r2,r0,r3,r1,16);
  4b2740:	8fc20008 	lw	v0,8(s8)
  4b2744:	00000000 	nop
  4b2748:	24420060 	addiu	v0,v0,96
  4b274c:	8c430000 	lw	v1,0(v0)
  4b2750:	8fc20024 	lw	v0,36(s8)
  4b2754:	00000000 	nop
  4b2758:	00431026 	xor	v0,v0,v1
  4b275c:	afc20024 	sw	v0,36(s8)
  4b2760:	8fc20008 	lw	v0,8(s8)
  4b2764:	00000000 	nop
  4b2768:	24420064 	addiu	v0,v0,100
  4b276c:	8c430000 	lw	v1,0(v0)
  4b2770:	8fc2001c 	lw	v0,28(s8)
  4b2774:	00000000 	nop
  4b2778:	00431026 	xor	v0,v0,v1
  4b277c:	afc2001c 	sw	v0,28(s8)
  4b2780:	8fc20008 	lw	v0,8(s8)
  4b2784:	00000000 	nop
  4b2788:	24420068 	addiu	v0,v0,104
  4b278c:	8c430000 	lw	v1,0(v0)
  4b2790:	8fc20014 	lw	v0,20(s8)
  4b2794:	00000000 	nop
  4b2798:	00431026 	xor	v0,v0,v1
  4b279c:	afc20014 	sw	v0,20(s8)
  4b27a0:	8fc20008 	lw	v0,8(s8)
  4b27a4:	00000000 	nop
  4b27a8:	2442006c 	addiu	v0,v0,108
  4b27ac:	8c430000 	lw	v1,0(v0)
  4b27b0:	8fc20020 	lw	v0,32(s8)
  4b27b4:	00000000 	nop
  4b27b8:	00431026 	xor	v0,v0,v1
  4b27bc:	afc20020 	sw	v0,32(s8)

      /* round 29  */
      ILINTRANS(r4,r2,r0,r3,r1);
  4b27c0:	8fc20014 	lw	v0,20(s8)
  4b27c4:	00000000 	nop
  4b27c8:	00021a80 	sll	v1,v0,0xa
  4b27cc:	00021582 	srl	v0,v0,0x16
  4b27d0:	00621025 	or	v0,v1,v0
  4b27d4:	afc20014 	sw	v0,20(s8)
  4b27d8:	8fc20024 	lw	v0,36(s8)
  4b27dc:	00000000 	nop
  4b27e0:	00021ec0 	sll	v1,v0,0x1b
  4b27e4:	00021142 	srl	v0,v0,0x5
  4b27e8:	00621025 	or	v0,v1,v0
  4b27ec:	afc20024 	sw	v0,36(s8)
  4b27f0:	8fc30014 	lw	v1,20(s8)
  4b27f4:	8fc20020 	lw	v0,32(s8)
  4b27f8:	00000000 	nop
  4b27fc:	00621026 	xor	v0,v1,v0
  4b2800:	afc20014 	sw	v0,20(s8)
  4b2804:	8fc2001c 	lw	v0,28(s8)
  4b2808:	00000000 	nop
  4b280c:	000211c0 	sll	v0,v0,0x7
  4b2810:	afc20018 	sw	v0,24(s8)
  4b2814:	8fc30024 	lw	v1,36(s8)
  4b2818:	8fc2001c 	lw	v0,28(s8)
  4b281c:	00000000 	nop
  4b2820:	00621026 	xor	v0,v1,v0
  4b2824:	afc20024 	sw	v0,36(s8)
  4b2828:	8fc30014 	lw	v1,20(s8)
  4b282c:	8fc20018 	lw	v0,24(s8)
  4b2830:	00000000 	nop
  4b2834:	00621026 	xor	v0,v1,v0
  4b2838:	afc20014 	sw	v0,20(s8)
  4b283c:	8fc30024 	lw	v1,36(s8)
  4b2840:	8fc20020 	lw	v0,32(s8)
  4b2844:	00000000 	nop
  4b2848:	00621026 	xor	v0,v1,v0
  4b284c:	afc20024 	sw	v0,36(s8)
  4b2850:	8fc20020 	lw	v0,32(s8)
  4b2854:	00000000 	nop
  4b2858:	00021e40 	sll	v1,v0,0x19
  4b285c:	000211c2 	srl	v0,v0,0x7
  4b2860:	00621025 	or	v0,v1,v0
  4b2864:	afc20020 	sw	v0,32(s8)
  4b2868:	8fc2001c 	lw	v0,28(s8)
  4b286c:	00000000 	nop
  4b2870:	00021fc0 	sll	v1,v0,0x1f
  4b2874:	00021042 	srl	v0,v0,0x1
  4b2878:	00621025 	or	v0,v1,v0
  4b287c:	afc2001c 	sw	v0,28(s8)
  4b2880:	8fc30020 	lw	v1,32(s8)
  4b2884:	8fc20014 	lw	v0,20(s8)
  4b2888:	00000000 	nop
  4b288c:	00621026 	xor	v0,v1,v0
  4b2890:	afc20020 	sw	v0,32(s8)
  4b2894:	8fc20024 	lw	v0,36(s8)
  4b2898:	00000000 	nop
  4b289c:	000210c0 	sll	v0,v0,0x3
  4b28a0:	afc20018 	sw	v0,24(s8)
  4b28a4:	8fc3001c 	lw	v1,28(s8)
  4b28a8:	8fc20024 	lw	v0,36(s8)
  4b28ac:	00000000 	nop
  4b28b0:	00621026 	xor	v0,v1,v0
  4b28b4:	afc2001c 	sw	v0,28(s8)
  4b28b8:	8fc30020 	lw	v1,32(s8)
  4b28bc:	8fc20018 	lw	v0,24(s8)
  4b28c0:	00000000 	nop
  4b28c4:	00621026 	xor	v0,v1,v0
  4b28c8:	afc20020 	sw	v0,32(s8)
  4b28cc:	8fc3001c 	lw	v1,28(s8)
  4b28d0:	8fc20014 	lw	v0,20(s8)
  4b28d4:	00000000 	nop
  4b28d8:	00621026 	xor	v0,v1,v0
  4b28dc:	afc2001c 	sw	v0,28(s8)
  4b28e0:	8fc20014 	lw	v0,20(s8)
  4b28e4:	00000000 	nop
  4b28e8:	00021f40 	sll	v1,v0,0x1d
  4b28ec:	000210c2 	srl	v0,v0,0x3
  4b28f0:	00621025 	or	v0,v1,v0
  4b28f4:	afc20014 	sw	v0,20(s8)
  4b28f8:	8fc20024 	lw	v0,36(s8)
  4b28fc:	00000000 	nop
  4b2900:	00021cc0 	sll	v1,v0,0x13
  4b2904:	00021342 	srl	v0,v0,0xd
  4b2908:	00621025 	or	v0,v1,v0
  4b290c:	afc20024 	sw	v0,36(s8)
      I3(r4,r2,r0,r3,r1);
  4b2910:	8fc20014 	lw	v0,20(s8)
  4b2914:	00000000 	nop
  4b2918:	afc20018 	sw	v0,24(s8)
  4b291c:	8fc30014 	lw	v1,20(s8)
  4b2920:	8fc2001c 	lw	v0,28(s8)
  4b2924:	00000000 	nop
  4b2928:	00621026 	xor	v0,v1,v0
  4b292c:	afc20014 	sw	v0,20(s8)
  4b2930:	8fc30024 	lw	v1,36(s8)
  4b2934:	8fc20014 	lw	v0,20(s8)
  4b2938:	00000000 	nop
  4b293c:	00621026 	xor	v0,v1,v0
  4b2940:	afc20024 	sw	v0,36(s8)
  4b2944:	8fc30018 	lw	v1,24(s8)
  4b2948:	8fc20014 	lw	v0,20(s8)
  4b294c:	00000000 	nop
  4b2950:	00621024 	and	v0,v1,v0
  4b2954:	afc20018 	sw	v0,24(s8)
  4b2958:	8fc30018 	lw	v1,24(s8)
  4b295c:	8fc20024 	lw	v0,36(s8)
  4b2960:	00000000 	nop
  4b2964:	00621026 	xor	v0,v1,v0
  4b2968:	afc20018 	sw	v0,24(s8)
  4b296c:	8fc30024 	lw	v1,36(s8)
  4b2970:	8fc2001c 	lw	v0,28(s8)
  4b2974:	00000000 	nop
  4b2978:	00621024 	and	v0,v1,v0
  4b297c:	afc20024 	sw	v0,36(s8)
  4b2980:	8fc3001c 	lw	v1,28(s8)
  4b2984:	8fc20020 	lw	v0,32(s8)
  4b2988:	00000000 	nop
  4b298c:	00621026 	xor	v0,v1,v0
  4b2990:	afc2001c 	sw	v0,28(s8)
  4b2994:	8fc30020 	lw	v1,32(s8)
  4b2998:	8fc20018 	lw	v0,24(s8)
  4b299c:	00000000 	nop
  4b29a0:	00621025 	or	v0,v1,v0
  4b29a4:	afc20020 	sw	v0,32(s8)
  4b29a8:	8fc30014 	lw	v1,20(s8)
  4b29ac:	8fc20020 	lw	v0,32(s8)
  4b29b0:	00000000 	nop
  4b29b4:	00621026 	xor	v0,v1,v0
  4b29b8:	afc20014 	sw	v0,20(s8)
  4b29bc:	8fc30024 	lw	v1,36(s8)
  4b29c0:	8fc20020 	lw	v0,32(s8)
  4b29c4:	00000000 	nop
  4b29c8:	00621026 	xor	v0,v1,v0
  4b29cc:	afc20024 	sw	v0,36(s8)
  4b29d0:	8fc3001c 	lw	v1,28(s8)
  4b29d4:	8fc20018 	lw	v0,24(s8)
  4b29d8:	00000000 	nop
  4b29dc:	00621026 	xor	v0,v1,v0
  4b29e0:	afc2001c 	sw	v0,28(s8)
  4b29e4:	8fc30020 	lw	v1,32(s8)
  4b29e8:	8fc20014 	lw	v0,20(s8)
  4b29ec:	00000000 	nop
  4b29f0:	00621024 	and	v0,v1,v0
  4b29f4:	afc20020 	sw	v0,32(s8)
  4b29f8:	8fc30020 	lw	v1,32(s8)
  4b29fc:	8fc2001c 	lw	v0,28(s8)
  4b2a00:	00000000 	nop
  4b2a04:	00621026 	xor	v0,v1,v0
  4b2a08:	afc20020 	sw	v0,32(s8)
  4b2a0c:	8fc3001c 	lw	v1,28(s8)
  4b2a10:	8fc20024 	lw	v0,36(s8)
  4b2a14:	00000000 	nop
  4b2a18:	00621026 	xor	v0,v1,v0
  4b2a1c:	afc2001c 	sw	v0,28(s8)
  4b2a20:	8fc3001c 	lw	v1,28(s8)
  4b2a24:	8fc20014 	lw	v0,20(s8)
  4b2a28:	00000000 	nop
  4b2a2c:	00621025 	or	v0,v1,v0
  4b2a30:	afc2001c 	sw	v0,28(s8)
  4b2a34:	8fc30024 	lw	v1,36(s8)
  4b2a38:	8fc20020 	lw	v0,32(s8)
  4b2a3c:	00000000 	nop
  4b2a40:	00621026 	xor	v0,v1,v0
  4b2a44:	afc20024 	sw	v0,36(s8)
  4b2a48:	8fc3001c 	lw	v1,28(s8)
  4b2a4c:	8fc20018 	lw	v0,24(s8)
  4b2a50:	00000000 	nop
  4b2a54:	00621026 	xor	v0,v1,v0
  4b2a58:	afc2001c 	sw	v0,28(s8)
  4b2a5c:	8fc30024 	lw	v1,36(s8)
  4b2a60:	8fc2001c 	lw	v0,28(s8)
  4b2a64:	00000000 	nop
  4b2a68:	00621026 	xor	v0,v1,v0
  4b2a6c:	afc20024 	sw	v0,36(s8)
      KEYMIX(r0,r2,r3,r4,r1,12);
  4b2a70:	8fc20008 	lw	v0,8(s8)
  4b2a74:	00000000 	nop
  4b2a78:	24420050 	addiu	v0,v0,80
  4b2a7c:	8c430000 	lw	v1,0(v0)
  4b2a80:	8fc20014 	lw	v0,20(s8)
  4b2a84:	00000000 	nop
  4b2a88:	00431026 	xor	v0,v0,v1
  4b2a8c:	afc20014 	sw	v0,20(s8)
  4b2a90:	8fc20008 	lw	v0,8(s8)
  4b2a94:	00000000 	nop
  4b2a98:	24420054 	addiu	v0,v0,84
  4b2a9c:	8c430000 	lw	v1,0(v0)
  4b2aa0:	8fc2001c 	lw	v0,28(s8)
  4b2aa4:	00000000 	nop
  4b2aa8:	00431026 	xor	v0,v0,v1
  4b2aac:	afc2001c 	sw	v0,28(s8)
  4b2ab0:	8fc20008 	lw	v0,8(s8)
  4b2ab4:	00000000 	nop
  4b2ab8:	24420058 	addiu	v0,v0,88
  4b2abc:	8c430000 	lw	v1,0(v0)
  4b2ac0:	8fc20020 	lw	v0,32(s8)
  4b2ac4:	00000000 	nop
  4b2ac8:	00431026 	xor	v0,v0,v1
  4b2acc:	afc20020 	sw	v0,32(s8)
  4b2ad0:	8fc20008 	lw	v0,8(s8)
  4b2ad4:	00000000 	nop
  4b2ad8:	2442005c 	addiu	v0,v0,92
  4b2adc:	8c430000 	lw	v1,0(v0)
  4b2ae0:	8fc20024 	lw	v0,36(s8)
  4b2ae4:	00000000 	nop
  4b2ae8:	00431026 	xor	v0,v0,v1
  4b2aec:	afc20024 	sw	v0,36(s8)

      /* round 30  */
      ILINTRANS(r0,r2,r3,r4,r1);
  4b2af0:	8fc20020 	lw	v0,32(s8)
  4b2af4:	00000000 	nop
  4b2af8:	00021a80 	sll	v1,v0,0xa
  4b2afc:	00021582 	srl	v0,v0,0x16
  4b2b00:	00621025 	or	v0,v1,v0
  4b2b04:	afc20020 	sw	v0,32(s8)
  4b2b08:	8fc20014 	lw	v0,20(s8)
  4b2b0c:	00000000 	nop
  4b2b10:	00021ec0 	sll	v1,v0,0x1b
  4b2b14:	00021142 	srl	v0,v0,0x5
  4b2b18:	00621025 	or	v0,v1,v0
  4b2b1c:	afc20014 	sw	v0,20(s8)
  4b2b20:	8fc30020 	lw	v1,32(s8)
  4b2b24:	8fc20024 	lw	v0,36(s8)
  4b2b28:	00000000 	nop
  4b2b2c:	00621026 	xor	v0,v1,v0
  4b2b30:	afc20020 	sw	v0,32(s8)
  4b2b34:	8fc2001c 	lw	v0,28(s8)
  4b2b38:	00000000 	nop
  4b2b3c:	000211c0 	sll	v0,v0,0x7
  4b2b40:	afc20018 	sw	v0,24(s8)
  4b2b44:	8fc30014 	lw	v1,20(s8)
  4b2b48:	8fc2001c 	lw	v0,28(s8)
  4b2b4c:	00000000 	nop
  4b2b50:	00621026 	xor	v0,v1,v0
  4b2b54:	afc20014 	sw	v0,20(s8)
  4b2b58:	8fc30020 	lw	v1,32(s8)
  4b2b5c:	8fc20018 	lw	v0,24(s8)
  4b2b60:	00000000 	nop
  4b2b64:	00621026 	xor	v0,v1,v0
  4b2b68:	afc20020 	sw	v0,32(s8)
  4b2b6c:	8fc30014 	lw	v1,20(s8)
  4b2b70:	8fc20024 	lw	v0,36(s8)
  4b2b74:	00000000 	nop
  4b2b78:	00621026 	xor	v0,v1,v0
  4b2b7c:	afc20014 	sw	v0,20(s8)
  4b2b80:	8fc20024 	lw	v0,36(s8)
  4b2b84:	00000000 	nop
  4b2b88:	00021e40 	sll	v1,v0,0x19
  4b2b8c:	000211c2 	srl	v0,v0,0x7
  4b2b90:	00621025 	or	v0,v1,v0
  4b2b94:	afc20024 	sw	v0,36(s8)
  4b2b98:	8fc2001c 	lw	v0,28(s8)
  4b2b9c:	00000000 	nop
  4b2ba0:	00021fc0 	sll	v1,v0,0x1f
  4b2ba4:	00021042 	srl	v0,v0,0x1
  4b2ba8:	00621025 	or	v0,v1,v0
  4b2bac:	afc2001c 	sw	v0,28(s8)
  4b2bb0:	8fc30024 	lw	v1,36(s8)
  4b2bb4:	8fc20020 	lw	v0,32(s8)
  4b2bb8:	00000000 	nop
  4b2bbc:	00621026 	xor	v0,v1,v0
  4b2bc0:	afc20024 	sw	v0,36(s8)
  4b2bc4:	8fc20014 	lw	v0,20(s8)
  4b2bc8:	00000000 	nop
  4b2bcc:	000210c0 	sll	v0,v0,0x3
  4b2bd0:	afc20018 	sw	v0,24(s8)
  4b2bd4:	8fc3001c 	lw	v1,28(s8)
  4b2bd8:	8fc20014 	lw	v0,20(s8)
  4b2bdc:	00000000 	nop
  4b2be0:	00621026 	xor	v0,v1,v0
  4b2be4:	afc2001c 	sw	v0,28(s8)
  4b2be8:	8fc30024 	lw	v1,36(s8)
  4b2bec:	8fc20018 	lw	v0,24(s8)
  4b2bf0:	00000000 	nop
  4b2bf4:	00621026 	xor	v0,v1,v0
  4b2bf8:	afc20024 	sw	v0,36(s8)
  4b2bfc:	8fc3001c 	lw	v1,28(s8)
  4b2c00:	8fc20020 	lw	v0,32(s8)
  4b2c04:	00000000 	nop
  4b2c08:	00621026 	xor	v0,v1,v0
  4b2c0c:	afc2001c 	sw	v0,28(s8)
  4b2c10:	8fc20020 	lw	v0,32(s8)
  4b2c14:	00000000 	nop
  4b2c18:	00021f40 	sll	v1,v0,0x1d
  4b2c1c:	000210c2 	srl	v0,v0,0x3
  4b2c20:	00621025 	or	v0,v1,v0
  4b2c24:	afc20020 	sw	v0,32(s8)
  4b2c28:	8fc20014 	lw	v0,20(s8)
  4b2c2c:	00000000 	nop
  4b2c30:	00021cc0 	sll	v1,v0,0x13
  4b2c34:	00021342 	srl	v0,v0,0xd
  4b2c38:	00621025 	or	v0,v1,v0
  4b2c3c:	afc20014 	sw	v0,20(s8)
      I2(r0,r2,r3,r4,r1);
  4b2c40:	8fc30020 	lw	v1,32(s8)
  4b2c44:	8fc20024 	lw	v0,36(s8)
  4b2c48:	00000000 	nop
  4b2c4c:	00621026 	xor	v0,v1,v0
  4b2c50:	afc20020 	sw	v0,32(s8)
  4b2c54:	8fc30024 	lw	v1,36(s8)
  4b2c58:	8fc20014 	lw	v0,20(s8)
  4b2c5c:	00000000 	nop
  4b2c60:	00621026 	xor	v0,v1,v0
  4b2c64:	afc20024 	sw	v0,36(s8)
  4b2c68:	8fc20024 	lw	v0,36(s8)
  4b2c6c:	00000000 	nop
  4b2c70:	afc20018 	sw	v0,24(s8)
  4b2c74:	8fc30024 	lw	v1,36(s8)
  4b2c78:	8fc20020 	lw	v0,32(s8)
  4b2c7c:	00000000 	nop
  4b2c80:	00621024 	and	v0,v1,v0
  4b2c84:	afc20024 	sw	v0,36(s8)
  4b2c88:	8fc30024 	lw	v1,36(s8)
  4b2c8c:	8fc2001c 	lw	v0,28(s8)
  4b2c90:	00000000 	nop
  4b2c94:	00621026 	xor	v0,v1,v0
  4b2c98:	afc20024 	sw	v0,36(s8)
  4b2c9c:	8fc3001c 	lw	v1,28(s8)
  4b2ca0:	8fc20020 	lw	v0,32(s8)
  4b2ca4:	00000000 	nop
  4b2ca8:	00621025 	or	v0,v1,v0
  4b2cac:	afc2001c 	sw	v0,28(s8)
  4b2cb0:	8fc3001c 	lw	v1,28(s8)
  4b2cb4:	8fc20018 	lw	v0,24(s8)
  4b2cb8:	00000000 	nop
  4b2cbc:	00621026 	xor	v0,v1,v0
  4b2cc0:	afc2001c 	sw	v0,28(s8)
  4b2cc4:	8fc30018 	lw	v1,24(s8)
  4b2cc8:	8fc20024 	lw	v0,36(s8)
  4b2ccc:	00000000 	nop
  4b2cd0:	00621024 	and	v0,v1,v0
  4b2cd4:	afc20018 	sw	v0,24(s8)
  4b2cd8:	8fc30020 	lw	v1,32(s8)
  4b2cdc:	8fc20024 	lw	v0,36(s8)
  4b2ce0:	00000000 	nop
  4b2ce4:	00621026 	xor	v0,v1,v0
  4b2ce8:	afc20020 	sw	v0,32(s8)
  4b2cec:	8fc30018 	lw	v1,24(s8)
  4b2cf0:	8fc20014 	lw	v0,20(s8)
  4b2cf4:	00000000 	nop
  4b2cf8:	00621024 	and	v0,v1,v0
  4b2cfc:	afc20018 	sw	v0,24(s8)
  4b2d00:	8fc30018 	lw	v1,24(s8)
  4b2d04:	8fc20020 	lw	v0,32(s8)
  4b2d08:	00000000 	nop
  4b2d0c:	00621026 	xor	v0,v1,v0
  4b2d10:	afc20018 	sw	v0,24(s8)
  4b2d14:	8fc30020 	lw	v1,32(s8)
  4b2d18:	8fc2001c 	lw	v0,28(s8)
  4b2d1c:	00000000 	nop
  4b2d20:	00621024 	and	v0,v1,v0
  4b2d24:	afc20020 	sw	v0,32(s8)
  4b2d28:	8fc30020 	lw	v1,32(s8)
  4b2d2c:	8fc20014 	lw	v0,20(s8)
  4b2d30:	00000000 	nop
  4b2d34:	00621025 	or	v0,v1,v0
  4b2d38:	afc20020 	sw	v0,32(s8)
  4b2d3c:	8fc20024 	lw	v0,36(s8)
  4b2d40:	00000000 	nop
  4b2d44:	00021027 	nor	v0,zero,v0
  4b2d48:	afc20024 	sw	v0,36(s8)
  4b2d4c:	8fc30020 	lw	v1,32(s8)
  4b2d50:	8fc20024 	lw	v0,36(s8)
  4b2d54:	00000000 	nop
  4b2d58:	00621026 	xor	v0,v1,v0
  4b2d5c:	afc20020 	sw	v0,32(s8)
  4b2d60:	8fc30014 	lw	v1,20(s8)
  4b2d64:	8fc20024 	lw	v0,36(s8)
  4b2d68:	00000000 	nop
  4b2d6c:	00621026 	xor	v0,v1,v0
  4b2d70:	afc20014 	sw	v0,20(s8)
  4b2d74:	8fc30014 	lw	v1,20(s8)
  4b2d78:	8fc2001c 	lw	v0,28(s8)
  4b2d7c:	00000000 	nop
  4b2d80:	00621024 	and	v0,v1,v0
  4b2d84:	afc20014 	sw	v0,20(s8)
  4b2d88:	8fc30024 	lw	v1,36(s8)
  4b2d8c:	8fc20018 	lw	v0,24(s8)
  4b2d90:	00000000 	nop
  4b2d94:	00621026 	xor	v0,v1,v0
  4b2d98:	afc20024 	sw	v0,36(s8)
  4b2d9c:	8fc30024 	lw	v1,36(s8)
  4b2da0:	8fc20014 	lw	v0,20(s8)
  4b2da4:	00000000 	nop
  4b2da8:	00621026 	xor	v0,v1,v0
  4b2dac:	afc20024 	sw	v0,36(s8)
      KEYMIX(r2,r1,r3,r4,r0,8);
  4b2db0:	8fc20008 	lw	v0,8(s8)
  4b2db4:	00000000 	nop
  4b2db8:	24420040 	addiu	v0,v0,64
  4b2dbc:	8c430000 	lw	v1,0(v0)
  4b2dc0:	8fc2001c 	lw	v0,28(s8)
  4b2dc4:	00000000 	nop
  4b2dc8:	00431026 	xor	v0,v0,v1
  4b2dcc:	afc2001c 	sw	v0,28(s8)
  4b2dd0:	8fc20008 	lw	v0,8(s8)
  4b2dd4:	00000000 	nop
  4b2dd8:	24420044 	addiu	v0,v0,68
  4b2ddc:	8c430000 	lw	v1,0(v0)
  4b2de0:	8fc20018 	lw	v0,24(s8)
  4b2de4:	00000000 	nop
  4b2de8:	00431026 	xor	v0,v0,v1
  4b2dec:	afc20018 	sw	v0,24(s8)
  4b2df0:	8fc20008 	lw	v0,8(s8)
  4b2df4:	00000000 	nop
  4b2df8:	24420048 	addiu	v0,v0,72
  4b2dfc:	8c430000 	lw	v1,0(v0)
  4b2e00:	8fc20020 	lw	v0,32(s8)
  4b2e04:	00000000 	nop
  4b2e08:	00431026 	xor	v0,v0,v1
  4b2e0c:	afc20020 	sw	v0,32(s8)
  4b2e10:	8fc20008 	lw	v0,8(s8)
  4b2e14:	00000000 	nop
  4b2e18:	2442004c 	addiu	v0,v0,76
  4b2e1c:	8c430000 	lw	v1,0(v0)
  4b2e20:	8fc20024 	lw	v0,36(s8)
  4b2e24:	00000000 	nop
  4b2e28:	00431026 	xor	v0,v0,v1
  4b2e2c:	afc20024 	sw	v0,36(s8)

      /* round 31  */
      ILINTRANS(r2,r1,r3,r4,r0);
  4b2e30:	8fc20020 	lw	v0,32(s8)
  4b2e34:	00000000 	nop
  4b2e38:	00021a80 	sll	v1,v0,0xa
  4b2e3c:	00021582 	srl	v0,v0,0x16
  4b2e40:	00621025 	or	v0,v1,v0
  4b2e44:	afc20020 	sw	v0,32(s8)
  4b2e48:	8fc2001c 	lw	v0,28(s8)
  4b2e4c:	00000000 	nop
  4b2e50:	00021ec0 	sll	v1,v0,0x1b
  4b2e54:	00021142 	srl	v0,v0,0x5
  4b2e58:	00621025 	or	v0,v1,v0
  4b2e5c:	afc2001c 	sw	v0,28(s8)
  4b2e60:	8fc30020 	lw	v1,32(s8)
  4b2e64:	8fc20024 	lw	v0,36(s8)
  4b2e68:	00000000 	nop
  4b2e6c:	00621026 	xor	v0,v1,v0
  4b2e70:	afc20020 	sw	v0,32(s8)
  4b2e74:	8fc20018 	lw	v0,24(s8)
  4b2e78:	00000000 	nop
  4b2e7c:	000211c0 	sll	v0,v0,0x7
  4b2e80:	afc20014 	sw	v0,20(s8)
  4b2e84:	8fc3001c 	lw	v1,28(s8)
  4b2e88:	8fc20018 	lw	v0,24(s8)
  4b2e8c:	00000000 	nop
  4b2e90:	00621026 	xor	v0,v1,v0
  4b2e94:	afc2001c 	sw	v0,28(s8)
  4b2e98:	8fc30020 	lw	v1,32(s8)
  4b2e9c:	8fc20014 	lw	v0,20(s8)
  4b2ea0:	00000000 	nop
  4b2ea4:	00621026 	xor	v0,v1,v0
  4b2ea8:	afc20020 	sw	v0,32(s8)
  4b2eac:	8fc3001c 	lw	v1,28(s8)
  4b2eb0:	8fc20024 	lw	v0,36(s8)
  4b2eb4:	00000000 	nop
  4b2eb8:	00621026 	xor	v0,v1,v0
  4b2ebc:	afc2001c 	sw	v0,28(s8)
  4b2ec0:	8fc20024 	lw	v0,36(s8)
  4b2ec4:	00000000 	nop
  4b2ec8:	00021e40 	sll	v1,v0,0x19
  4b2ecc:	000211c2 	srl	v0,v0,0x7
  4b2ed0:	00621025 	or	v0,v1,v0
  4b2ed4:	afc20024 	sw	v0,36(s8)
  4b2ed8:	8fc20018 	lw	v0,24(s8)
  4b2edc:	00000000 	nop
  4b2ee0:	00021fc0 	sll	v1,v0,0x1f
  4b2ee4:	00021042 	srl	v0,v0,0x1
  4b2ee8:	00621025 	or	v0,v1,v0
  4b2eec:	afc20018 	sw	v0,24(s8)
  4b2ef0:	8fc30024 	lw	v1,36(s8)
  4b2ef4:	8fc20020 	lw	v0,32(s8)
  4b2ef8:	00000000 	nop
  4b2efc:	00621026 	xor	v0,v1,v0
  4b2f00:	afc20024 	sw	v0,36(s8)
  4b2f04:	8fc2001c 	lw	v0,28(s8)
  4b2f08:	00000000 	nop
  4b2f0c:	000210c0 	sll	v0,v0,0x3
  4b2f10:	afc20014 	sw	v0,20(s8)
  4b2f14:	8fc30018 	lw	v1,24(s8)
  4b2f18:	8fc2001c 	lw	v0,28(s8)
  4b2f1c:	00000000 	nop
  4b2f20:	00621026 	xor	v0,v1,v0
  4b2f24:	afc20018 	sw	v0,24(s8)
  4b2f28:	8fc30024 	lw	v1,36(s8)
  4b2f2c:	8fc20014 	lw	v0,20(s8)
  4b2f30:	00000000 	nop
  4b2f34:	00621026 	xor	v0,v1,v0
  4b2f38:	afc20024 	sw	v0,36(s8)
  4b2f3c:	8fc30018 	lw	v1,24(s8)
  4b2f40:	8fc20020 	lw	v0,32(s8)
  4b2f44:	00000000 	nop
  4b2f48:	00621026 	xor	v0,v1,v0
  4b2f4c:	afc20018 	sw	v0,24(s8)
  4b2f50:	8fc20020 	lw	v0,32(s8)
  4b2f54:	00000000 	nop
  4b2f58:	00021f40 	sll	v1,v0,0x1d
  4b2f5c:	000210c2 	srl	v0,v0,0x3
  4b2f60:	00621025 	or	v0,v1,v0
  4b2f64:	afc20020 	sw	v0,32(s8)
  4b2f68:	8fc2001c 	lw	v0,28(s8)
  4b2f6c:	00000000 	nop
  4b2f70:	00021cc0 	sll	v1,v0,0x13
  4b2f74:	00021342 	srl	v0,v0,0xd
  4b2f78:	00621025 	or	v0,v1,v0
  4b2f7c:	afc2001c 	sw	v0,28(s8)
      I1(r2,r1,r3,r4,r0);
  4b2f80:	8fc20018 	lw	v0,24(s8)
  4b2f84:	00000000 	nop
  4b2f88:	afc20014 	sw	v0,20(s8)
  4b2f8c:	8fc30018 	lw	v1,24(s8)
  4b2f90:	8fc20024 	lw	v0,36(s8)
  4b2f94:	00000000 	nop
  4b2f98:	00621026 	xor	v0,v1,v0
  4b2f9c:	afc20018 	sw	v0,24(s8)
  4b2fa0:	8fc30024 	lw	v1,36(s8)
  4b2fa4:	8fc20018 	lw	v0,24(s8)
  4b2fa8:	00000000 	nop
  4b2fac:	00621024 	and	v0,v1,v0
  4b2fb0:	afc20024 	sw	v0,36(s8)
  4b2fb4:	8fc30014 	lw	v1,20(s8)
  4b2fb8:	8fc20020 	lw	v0,32(s8)
  4b2fbc:	00000000 	nop
  4b2fc0:	00621026 	xor	v0,v1,v0
  4b2fc4:	afc20014 	sw	v0,20(s8)
  4b2fc8:	8fc30024 	lw	v1,36(s8)
  4b2fcc:	8fc2001c 	lw	v0,28(s8)
  4b2fd0:	00000000 	nop
  4b2fd4:	00621026 	xor	v0,v1,v0
  4b2fd8:	afc20024 	sw	v0,36(s8)
  4b2fdc:	8fc3001c 	lw	v1,28(s8)
  4b2fe0:	8fc20018 	lw	v0,24(s8)
  4b2fe4:	00000000 	nop
  4b2fe8:	00621025 	or	v0,v1,v0
  4b2fec:	afc2001c 	sw	v0,28(s8)
  4b2ff0:	8fc30020 	lw	v1,32(s8)
  4b2ff4:	8fc20024 	lw	v0,36(s8)
  4b2ff8:	00000000 	nop
  4b2ffc:	00621026 	xor	v0,v1,v0
  4b3000:	afc20020 	sw	v0,32(s8)
  4b3004:	8fc3001c 	lw	v1,28(s8)
  4b3008:	8fc20014 	lw	v0,20(s8)
  4b300c:	00000000 	nop
  4b3010:	00621026 	xor	v0,v1,v0
  4b3014:	afc2001c 	sw	v0,28(s8)
  4b3018:	8fc3001c 	lw	v1,28(s8)
  4b301c:	8fc20020 	lw	v0,32(s8)
  4b3020:	00000000 	nop
  4b3024:	00621025 	or	v0,v1,v0
  4b3028:	afc2001c 	sw	v0,28(s8)
  4b302c:	8fc30018 	lw	v1,24(s8)
  4b3030:	8fc20024 	lw	v0,36(s8)
  4b3034:	00000000 	nop
  4b3038:	00621026 	xor	v0,v1,v0
  4b303c:	afc20018 	sw	v0,24(s8)
  4b3040:	8fc3001c 	lw	v1,28(s8)
  4b3044:	8fc20018 	lw	v0,24(s8)
  4b3048:	00000000 	nop
  4b304c:	00621026 	xor	v0,v1,v0
  4b3050:	afc2001c 	sw	v0,28(s8)
  4b3054:	8fc30018 	lw	v1,24(s8)
  4b3058:	8fc20024 	lw	v0,36(s8)
  4b305c:	00000000 	nop
  4b3060:	00621025 	or	v0,v1,v0
  4b3064:	afc20018 	sw	v0,24(s8)
  4b3068:	8fc30018 	lw	v1,24(s8)
  4b306c:	8fc2001c 	lw	v0,28(s8)
  4b3070:	00000000 	nop
  4b3074:	00621026 	xor	v0,v1,v0
  4b3078:	afc20018 	sw	v0,24(s8)
  4b307c:	8fc20014 	lw	v0,20(s8)
  4b3080:	00000000 	nop
  4b3084:	00021027 	nor	v0,zero,v0
  4b3088:	afc20014 	sw	v0,20(s8)
  4b308c:	8fc30014 	lw	v1,20(s8)
  4b3090:	8fc20018 	lw	v0,24(s8)
  4b3094:	00000000 	nop
  4b3098:	00621026 	xor	v0,v1,v0
  4b309c:	afc20014 	sw	v0,20(s8)
  4b30a0:	8fc30018 	lw	v1,24(s8)
  4b30a4:	8fc2001c 	lw	v0,28(s8)
  4b30a8:	00000000 	nop
  4b30ac:	00621025 	or	v0,v1,v0
  4b30b0:	afc20018 	sw	v0,24(s8)
  4b30b4:	8fc30018 	lw	v1,24(s8)
  4b30b8:	8fc2001c 	lw	v0,28(s8)
  4b30bc:	00000000 	nop
  4b30c0:	00621026 	xor	v0,v1,v0
  4b30c4:	afc20018 	sw	v0,24(s8)
  4b30c8:	8fc30018 	lw	v1,24(s8)
  4b30cc:	8fc20014 	lw	v0,20(s8)
  4b30d0:	00000000 	nop
  4b30d4:	00621025 	or	v0,v1,v0
  4b30d8:	afc20018 	sw	v0,24(s8)
  4b30dc:	8fc30024 	lw	v1,36(s8)
  4b30e0:	8fc20018 	lw	v0,24(s8)
  4b30e4:	00000000 	nop
  4b30e8:	00621026 	xor	v0,v1,v0
  4b30ec:	afc20024 	sw	v0,36(s8)
      KEYMIX(r0,r2,r4,r3,r1,4);
  4b30f0:	8fc20008 	lw	v0,8(s8)
  4b30f4:	00000000 	nop
  4b30f8:	24420030 	addiu	v0,v0,48
  4b30fc:	8c430000 	lw	v1,0(v0)
  4b3100:	8fc20014 	lw	v0,20(s8)
  4b3104:	00000000 	nop
  4b3108:	00431026 	xor	v0,v0,v1
  4b310c:	afc20014 	sw	v0,20(s8)
  4b3110:	8fc20008 	lw	v0,8(s8)
  4b3114:	00000000 	nop
  4b3118:	24420034 	addiu	v0,v0,52
  4b311c:	8c430000 	lw	v1,0(v0)
  4b3120:	8fc2001c 	lw	v0,28(s8)
  4b3124:	00000000 	nop
  4b3128:	00431026 	xor	v0,v0,v1
  4b312c:	afc2001c 	sw	v0,28(s8)
  4b3130:	8fc20008 	lw	v0,8(s8)
  4b3134:	00000000 	nop
  4b3138:	24420038 	addiu	v0,v0,56
  4b313c:	8c430000 	lw	v1,0(v0)
  4b3140:	8fc20024 	lw	v0,36(s8)
  4b3144:	00000000 	nop
  4b3148:	00431026 	xor	v0,v0,v1
  4b314c:	afc20024 	sw	v0,36(s8)
  4b3150:	8fc20008 	lw	v0,8(s8)
  4b3154:	00000000 	nop
  4b3158:	2442003c 	addiu	v0,v0,60
  4b315c:	8c430000 	lw	v1,0(v0)
  4b3160:	8fc20020 	lw	v0,32(s8)
  4b3164:	00000000 	nop
  4b3168:	00431026 	xor	v0,v0,v1
  4b316c:	afc20020 	sw	v0,32(s8)

      /* round 32  */
      ILINTRANS(r0,r2,r4,r3,r1);
  4b3170:	8fc20024 	lw	v0,36(s8)
  4b3174:	00000000 	nop
  4b3178:	00021a80 	sll	v1,v0,0xa
  4b317c:	00021582 	srl	v0,v0,0x16
  4b3180:	00621025 	or	v0,v1,v0
  4b3184:	afc20024 	sw	v0,36(s8)
  4b3188:	8fc20014 	lw	v0,20(s8)
  4b318c:	00000000 	nop
  4b3190:	00021ec0 	sll	v1,v0,0x1b
  4b3194:	00021142 	srl	v0,v0,0x5
  4b3198:	00621025 	or	v0,v1,v0
  4b319c:	afc20014 	sw	v0,20(s8)
  4b31a0:	8fc30024 	lw	v1,36(s8)
  4b31a4:	8fc20020 	lw	v0,32(s8)
  4b31a8:	00000000 	nop
  4b31ac:	00621026 	xor	v0,v1,v0
  4b31b0:	afc20024 	sw	v0,36(s8)
  4b31b4:	8fc2001c 	lw	v0,28(s8)
  4b31b8:	00000000 	nop
  4b31bc:	000211c0 	sll	v0,v0,0x7
  4b31c0:	afc20018 	sw	v0,24(s8)
  4b31c4:	8fc30014 	lw	v1,20(s8)
  4b31c8:	8fc2001c 	lw	v0,28(s8)
  4b31cc:	00000000 	nop
  4b31d0:	00621026 	xor	v0,v1,v0
  4b31d4:	afc20014 	sw	v0,20(s8)
  4b31d8:	8fc30024 	lw	v1,36(s8)
  4b31dc:	8fc20018 	lw	v0,24(s8)
  4b31e0:	00000000 	nop
  4b31e4:	00621026 	xor	v0,v1,v0
  4b31e8:	afc20024 	sw	v0,36(s8)
  4b31ec:	8fc30014 	lw	v1,20(s8)
  4b31f0:	8fc20020 	lw	v0,32(s8)
  4b31f4:	00000000 	nop
  4b31f8:	00621026 	xor	v0,v1,v0
  4b31fc:	afc20014 	sw	v0,20(s8)
  4b3200:	8fc20020 	lw	v0,32(s8)
  4b3204:	00000000 	nop
  4b3208:	00021e40 	sll	v1,v0,0x19
  4b320c:	000211c2 	srl	v0,v0,0x7
  4b3210:	00621025 	or	v0,v1,v0
  4b3214:	afc20020 	sw	v0,32(s8)
  4b3218:	8fc2001c 	lw	v0,28(s8)
  4b321c:	00000000 	nop
  4b3220:	00021fc0 	sll	v1,v0,0x1f
  4b3224:	00021042 	srl	v0,v0,0x1
  4b3228:	00621025 	or	v0,v1,v0
  4b322c:	afc2001c 	sw	v0,28(s8)
  4b3230:	8fc30020 	lw	v1,32(s8)
  4b3234:	8fc20024 	lw	v0,36(s8)
  4b3238:	00000000 	nop
  4b323c:	00621026 	xor	v0,v1,v0
  4b3240:	afc20020 	sw	v0,32(s8)
  4b3244:	8fc20014 	lw	v0,20(s8)
  4b3248:	00000000 	nop
  4b324c:	000210c0 	sll	v0,v0,0x3
  4b3250:	afc20018 	sw	v0,24(s8)
  4b3254:	8fc3001c 	lw	v1,28(s8)
  4b3258:	8fc20014 	lw	v0,20(s8)
  4b325c:	00000000 	nop
  4b3260:	00621026 	xor	v0,v1,v0
  4b3264:	afc2001c 	sw	v0,28(s8)
  4b3268:	8fc30020 	lw	v1,32(s8)
  4b326c:	8fc20018 	lw	v0,24(s8)
  4b3270:	00000000 	nop
  4b3274:	00621026 	xor	v0,v1,v0
  4b3278:	afc20020 	sw	v0,32(s8)
  4b327c:	8fc3001c 	lw	v1,28(s8)
  4b3280:	8fc20024 	lw	v0,36(s8)
  4b3284:	00000000 	nop
  4b3288:	00621026 	xor	v0,v1,v0
  4b328c:	afc2001c 	sw	v0,28(s8)
  4b3290:	8fc20024 	lw	v0,36(s8)
  4b3294:	00000000 	nop
  4b3298:	00021f40 	sll	v1,v0,0x1d
  4b329c:	000210c2 	srl	v0,v0,0x3
  4b32a0:	00621025 	or	v0,v1,v0
  4b32a4:	afc20024 	sw	v0,36(s8)
  4b32a8:	8fc20014 	lw	v0,20(s8)
  4b32ac:	00000000 	nop
  4b32b0:	00021cc0 	sll	v1,v0,0x13
  4b32b4:	00021342 	srl	v0,v0,0xd
  4b32b8:	00621025 	or	v0,v1,v0
  4b32bc:	afc20014 	sw	v0,20(s8)
      I0(r0,r2,r4,r3,r1);
  4b32c0:	8fc20024 	lw	v0,36(s8)
  4b32c4:	00000000 	nop
  4b32c8:	00021027 	nor	v0,zero,v0
  4b32cc:	afc20024 	sw	v0,36(s8)
  4b32d0:	8fc2001c 	lw	v0,28(s8)
  4b32d4:	00000000 	nop
  4b32d8:	afc20018 	sw	v0,24(s8)
  4b32dc:	8fc3001c 	lw	v1,28(s8)
  4b32e0:	8fc20014 	lw	v0,20(s8)
  4b32e4:	00000000 	nop
  4b32e8:	00621025 	or	v0,v1,v0
  4b32ec:	afc2001c 	sw	v0,28(s8)
  4b32f0:	8fc20018 	lw	v0,24(s8)
  4b32f4:	00000000 	nop
  4b32f8:	00021027 	nor	v0,zero,v0
  4b32fc:	afc20018 	sw	v0,24(s8)
  4b3300:	8fc3001c 	lw	v1,28(s8)
  4b3304:	8fc20024 	lw	v0,36(s8)
  4b3308:	00000000 	nop
  4b330c:	00621026 	xor	v0,v1,v0
  4b3310:	afc2001c 	sw	v0,28(s8)
  4b3314:	8fc30024 	lw	v1,36(s8)
  4b3318:	8fc20018 	lw	v0,24(s8)
  4b331c:	00000000 	nop
  4b3320:	00621025 	or	v0,v1,v0
  4b3324:	afc20024 	sw	v0,36(s8)
  4b3328:	8fc3001c 	lw	v1,28(s8)
  4b332c:	8fc20020 	lw	v0,32(s8)
  4b3330:	00000000 	nop
  4b3334:	00621026 	xor	v0,v1,v0
  4b3338:	afc2001c 	sw	v0,28(s8)
  4b333c:	8fc30014 	lw	v1,20(s8)
  4b3340:	8fc20018 	lw	v0,24(s8)
  4b3344:	00000000 	nop
  4b3348:	00621026 	xor	v0,v1,v0
  4b334c:	afc20014 	sw	v0,20(s8)
  4b3350:	8fc30024 	lw	v1,36(s8)
  4b3354:	8fc20014 	lw	v0,20(s8)
  4b3358:	00000000 	nop
  4b335c:	00621026 	xor	v0,v1,v0
  4b3360:	afc20024 	sw	v0,36(s8)
  4b3364:	8fc30014 	lw	v1,20(s8)
  4b3368:	8fc20020 	lw	v0,32(s8)
  4b336c:	00000000 	nop
  4b3370:	00621024 	and	v0,v1,v0
  4b3374:	afc20014 	sw	v0,20(s8)
  4b3378:	8fc30018 	lw	v1,24(s8)
  4b337c:	8fc20014 	lw	v0,20(s8)
  4b3380:	00000000 	nop
  4b3384:	00621026 	xor	v0,v1,v0
  4b3388:	afc20018 	sw	v0,24(s8)
  4b338c:	8fc30014 	lw	v1,20(s8)
  4b3390:	8fc2001c 	lw	v0,28(s8)
  4b3394:	00000000 	nop
  4b3398:	00621025 	or	v0,v1,v0
  4b339c:	afc20014 	sw	v0,20(s8)
  4b33a0:	8fc30014 	lw	v1,20(s8)
  4b33a4:	8fc20024 	lw	v0,36(s8)
  4b33a8:	00000000 	nop
  4b33ac:	00621026 	xor	v0,v1,v0
  4b33b0:	afc20014 	sw	v0,20(s8)
  4b33b4:	8fc30020 	lw	v1,32(s8)
  4b33b8:	8fc20018 	lw	v0,24(s8)
  4b33bc:	00000000 	nop
  4b33c0:	00621026 	xor	v0,v1,v0
  4b33c4:	afc20020 	sw	v0,32(s8)
  4b33c8:	8fc30024 	lw	v1,36(s8)
  4b33cc:	8fc2001c 	lw	v0,28(s8)
  4b33d0:	00000000 	nop
  4b33d4:	00621026 	xor	v0,v1,v0
  4b33d8:	afc20024 	sw	v0,36(s8)
  4b33dc:	8fc30020 	lw	v1,32(s8)
  4b33e0:	8fc20014 	lw	v0,20(s8)
  4b33e4:	00000000 	nop
  4b33e8:	00621026 	xor	v0,v1,v0
  4b33ec:	afc20020 	sw	v0,32(s8)
  4b33f0:	8fc30020 	lw	v1,32(s8)
  4b33f4:	8fc2001c 	lw	v0,28(s8)
  4b33f8:	00000000 	nop
  4b33fc:	00621026 	xor	v0,v1,v0
  4b3400:	afc20020 	sw	v0,32(s8)
  4b3404:	8fc30024 	lw	v1,36(s8)
  4b3408:	8fc20020 	lw	v0,32(s8)
  4b340c:	00000000 	nop
  4b3410:	00621024 	and	v0,v1,v0
  4b3414:	afc20024 	sw	v0,36(s8)
  4b3418:	8fc30018 	lw	v1,24(s8)
  4b341c:	8fc20024 	lw	v0,36(s8)
  4b3420:	00000000 	nop
  4b3424:	00621026 	xor	v0,v1,v0
  4b3428:	afc20018 	sw	v0,24(s8)
      KEYMIX(r0,r1,r2,r3,r4,0);
  4b342c:	8fc20008 	lw	v0,8(s8)
  4b3430:	00000000 	nop
  4b3434:	24420020 	addiu	v0,v0,32
  4b3438:	8c430000 	lw	v1,0(v0)
  4b343c:	8fc20014 	lw	v0,20(s8)
  4b3440:	00000000 	nop
  4b3444:	00431026 	xor	v0,v0,v1
  4b3448:	afc20014 	sw	v0,20(s8)
  4b344c:	8fc20008 	lw	v0,8(s8)
  4b3450:	00000000 	nop
  4b3454:	24420024 	addiu	v0,v0,36
  4b3458:	8c430000 	lw	v1,0(v0)
  4b345c:	8fc20018 	lw	v0,24(s8)
  4b3460:	00000000 	nop
  4b3464:	00431026 	xor	v0,v0,v1
  4b3468:	afc20018 	sw	v0,24(s8)
  4b346c:	8fc20008 	lw	v0,8(s8)
  4b3470:	00000000 	nop
  4b3474:	24420028 	addiu	v0,v0,40
  4b3478:	8c430000 	lw	v1,0(v0)
  4b347c:	8fc2001c 	lw	v0,28(s8)
  4b3480:	00000000 	nop
  4b3484:	00431026 	xor	v0,v0,v1
  4b3488:	afc2001c 	sw	v0,28(s8)
  4b348c:	8fc20008 	lw	v0,8(s8)
  4b3490:	00000000 	nop
  4b3494:	2442002c 	addiu	v0,v0,44
  4b3498:	8c430000 	lw	v1,0(v0)
  4b349c:	8fc20020 	lw	v0,32(s8)
  4b34a0:	00000000 	nop
  4b34a4:	00431026 	xor	v0,v0,v1
  4b34a8:	afc20020 	sw	v0,32(s8)
    
#ifdef  BLOCK_SWAP
    out_blk[3] = io_swap(r0); out_blk[2] = io_swap(r1); 
  4b34ac:	8fc20010 	lw	v0,16(s8)
  4b34b0:	00000000 	nop
  4b34b4:	2443000c 	addiu	v1,v0,12
  4b34b8:	8fc20014 	lw	v0,20(s8)
  4b34bc:	00000000 	nop
  4b34c0:	ac620000 	sw	v0,0(v1)
  4b34c4:	8fc20010 	lw	v0,16(s8)
  4b34c8:	00000000 	nop
  4b34cc:	24430008 	addiu	v1,v0,8
  4b34d0:	8fc20018 	lw	v0,24(s8)
  4b34d4:	00000000 	nop
  4b34d8:	ac620000 	sw	v0,0(v1)
    out_blk[1] = io_swap(r2); out_blk[0] = io_swap(r3);
  4b34dc:	8fc20010 	lw	v0,16(s8)
  4b34e0:	00000000 	nop
  4b34e4:	24430004 	addiu	v1,v0,4
  4b34e8:	8fc2001c 	lw	v0,28(s8)
  4b34ec:	00000000 	nop
  4b34f0:	ac620000 	sw	v0,0(v1)
  4b34f4:	8fc30020 	lw	v1,32(s8)
  4b34f8:	8fc20010 	lw	v0,16(s8)
  4b34fc:	00000000 	nop
  4b3500:	ac430000 	sw	v1,0(v0)
#else
    out_blk[0] = r0; out_blk[1] = r1; out_blk[2] = r2; out_blk[3] = r3;
#endif
    return 0;
  4b3504:	00001021 	move	v0,zero
};
  4b3508:	03c0e821 	move	sp,s8
  4b350c:	8fbe002c 	lw	s8,44(sp)
  4b3510:	27bd0030 	addiu	sp,sp,48
  4b3514:	03e00008 	jr	ra
  4b3518:	00000000 	nop
  4b351c:	00000000 	nop

004b3520 <serpent_cbc_encrypt>:
  4b3520:	3c1c0fb6 	lui	gp,0xfb6
  4b3524:	279c9450 	addiu	gp,gp,-27568
  4b3528:	0399e021 	addu	gp,gp,t9
  4b352c:	27bdffc8 	addiu	sp,sp,-56
  4b3530:	afbc0010 	sw	gp,16(sp)
  4b3534:	afbf0030 	sw	ra,48(sp)
  4b3538:	afbe002c 	sw	s8,44(sp)
  4b353c:	afbc0028 	sw	gp,40(sp)
  4b3540:	03a0f021 	move	s8,sp
  4b3544:	afc40038 	sw	a0,56(s8)
  4b3548:	afc5003c 	sw	a1,60(s8)
  4b354c:	afc60040 	sw	a2,64(s8)
  4b3550:	afc70044 	sw	a3,68(s8)
#include <sys/types.h>
#endif
#include "serpent_cbc.h"
#include "cbc_generic.h"
CBC_IMPL_BLK16(serpent_cbc_encrypt, serpent_context, u_int8_t *, serpent_encrypt, serpent_decrypt);
  4b3554:	8fc20044 	lw	v0,68(s8)
  4b3558:	00000000 	nop
  4b355c:	afc20018 	sw	v0,24(s8)
  4b3560:	8fc20044 	lw	v0,68(s8)
  4b3564:	00000000 	nop
  4b3568:	3042000f 	andi	v0,v0,0xf
  4b356c:	10400004 	beqz	v0,4b3580 <serpent_cbc_encrypt+0x60>
  4b3570:	00000000 	nop
  4b3574:	00001021 	move	v0,zero
  4b3578:	100000d3 	b	4b38c8 <serpent_cbc_encrypt+0x3a8>
  4b357c:	00000000 	nop
  4b3580:	8fc2004c 	lw	v0,76(s8)
  4b3584:	00000000 	nop
  4b3588:	10400062 	beqz	v0,4b3714 <serpent_cbc_encrypt+0x1f4>
  4b358c:	00000000 	nop
  4b3590:	afc0001c 	sw	zero,28(s8)
  4b3594:	8fc2001c 	lw	v0,28(s8)
  4b3598:	8fc30044 	lw	v1,68(s8)
  4b359c:	00000000 	nop
  4b35a0:	0043102a 	slt	v0,v0,v1
  4b35a4:	14400003 	bnez	v0,4b35b4 <serpent_cbc_encrypt+0x94>
  4b35a8:	00000000 	nop
  4b35ac:	100000c5 	b	4b38c4 <serpent_cbc_encrypt+0x3a4>
  4b35b0:	00000000 	nop
  4b35b4:	8fc2001c 	lw	v0,28(s8)
  4b35b8:	00000000 	nop
  4b35bc:	14400006 	bnez	v0,4b35d8 <serpent_cbc_encrypt+0xb8>
  4b35c0:	00000000 	nop
  4b35c4:	8fc20048 	lw	v0,72(s8)
  4b35c8:	00000000 	nop
  4b35cc:	afc20020 	sw	v0,32(s8)
  4b35d0:	10000005 	b	4b35e8 <serpent_cbc_encrypt+0xc8>
  4b35d4:	00000000 	nop
  4b35d8:	8fc20040 	lw	v0,64(s8)
  4b35dc:	00000000 	nop
  4b35e0:	2442fff0 	addiu	v0,v0,-16
  4b35e4:	afc20020 	sw	v0,32(s8)
  4b35e8:	8fc20020 	lw	v0,32(s8)
  4b35ec:	00000000 	nop
  4b35f0:	8c430000 	lw	v1,0(v0)
  4b35f4:	8fc2003c 	lw	v0,60(s8)
  4b35f8:	00000000 	nop
  4b35fc:	8c420000 	lw	v0,0(v0)
  4b3600:	00000000 	nop
  4b3604:	00621826 	xor	v1,v1,v0
  4b3608:	8fc20040 	lw	v0,64(s8)
  4b360c:	00000000 	nop
  4b3610:	ac430000 	sw	v1,0(v0)
  4b3614:	8fc20040 	lw	v0,64(s8)
  4b3618:	00000000 	nop
  4b361c:	24440004 	addiu	a0,v0,4
  4b3620:	8fc20020 	lw	v0,32(s8)
  4b3624:	00000000 	nop
  4b3628:	24430004 	addiu	v1,v0,4
  4b362c:	8fc2003c 	lw	v0,60(s8)
  4b3630:	00000000 	nop
  4b3634:	24420004 	addiu	v0,v0,4
  4b3638:	8c630000 	lw	v1,0(v1)
  4b363c:	8c420000 	lw	v0,0(v0)
  4b3640:	00000000 	nop
  4b3644:	00621026 	xor	v0,v1,v0
  4b3648:	ac820000 	sw	v0,0(a0)
  4b364c:	8fc20040 	lw	v0,64(s8)
  4b3650:	00000000 	nop
  4b3654:	24440008 	addiu	a0,v0,8
  4b3658:	8fc20020 	lw	v0,32(s8)
  4b365c:	00000000 	nop
  4b3660:	24430008 	addiu	v1,v0,8
  4b3664:	8fc2003c 	lw	v0,60(s8)
  4b3668:	00000000 	nop
  4b366c:	24420008 	addiu	v0,v0,8
  4b3670:	8c630000 	lw	v1,0(v1)
  4b3674:	8c420000 	lw	v0,0(v0)
  4b3678:	00000000 	nop
  4b367c:	00621026 	xor	v0,v1,v0
  4b3680:	ac820000 	sw	v0,0(a0)
  4b3684:	8fc20040 	lw	v0,64(s8)
  4b3688:	00000000 	nop
  4b368c:	2444000c 	addiu	a0,v0,12
  4b3690:	8fc20020 	lw	v0,32(s8)
  4b3694:	00000000 	nop
  4b3698:	2443000c 	addiu	v1,v0,12
  4b369c:	8fc2003c 	lw	v0,60(s8)
  4b36a0:	00000000 	nop
  4b36a4:	2442000c 	addiu	v0,v0,12
  4b36a8:	8c630000 	lw	v1,0(v1)
  4b36ac:	8c420000 	lw	v0,0(v0)
  4b36b0:	00000000 	nop
  4b36b4:	00621026 	xor	v0,v1,v0
  4b36b8:	ac820000 	sw	v0,0(a0)
  4b36bc:	8fc40038 	lw	a0,56(s8)
  4b36c0:	8fc50040 	lw	a1,64(s8)
  4b36c4:	8fc60040 	lw	a2,64(s8)
  4b36c8:	8f99814c 	lw	t9,-32436(gp)
  4b36cc:	00000000 	nop
  4b36d0:	0320f809 	jalr	t9
  4b36d4:	00000000 	nop
  4b36d8:	8fdc0010 	lw	gp,16(s8)
  4b36dc:	8fc2003c 	lw	v0,60(s8)
  4b36e0:	00000000 	nop
  4b36e4:	24420010 	addiu	v0,v0,16
  4b36e8:	afc2003c 	sw	v0,60(s8)
  4b36ec:	8fc20040 	lw	v0,64(s8)
  4b36f0:	00000000 	nop
  4b36f4:	24420010 	addiu	v0,v0,16
  4b36f8:	afc20040 	sw	v0,64(s8)
  4b36fc:	8fc2001c 	lw	v0,28(s8)
  4b3700:	00000000 	nop
  4b3704:	24420010 	addiu	v0,v0,16
  4b3708:	afc2001c 	sw	v0,28(s8)
  4b370c:	1000ffa1 	b	4b3594 <serpent_cbc_encrypt+0x74>
  4b3710:	00000000 	nop
  4b3714:	8fc20044 	lw	v0,68(s8)
  4b3718:	00000000 	nop
  4b371c:	2442fff0 	addiu	v0,v0,-16
  4b3720:	afc2001c 	sw	v0,28(s8)
  4b3724:	8fc3003c 	lw	v1,60(s8)
  4b3728:	8fc2001c 	lw	v0,28(s8)
  4b372c:	00000000 	nop
  4b3730:	00621021 	addu	v0,v1,v0
  4b3734:	afc2003c 	sw	v0,60(s8)
  4b3738:	8fc30040 	lw	v1,64(s8)
  4b373c:	8fc2001c 	lw	v0,28(s8)
  4b3740:	00000000 	nop
  4b3744:	00621021 	addu	v0,v1,v0
  4b3748:	afc20040 	sw	v0,64(s8)
  4b374c:	8fc2001c 	lw	v0,28(s8)
  4b3750:	00000000 	nop
  4b3754:	04410003 	bgez	v0,4b3764 <serpent_cbc_encrypt+0x244>
  4b3758:	00000000 	nop
  4b375c:	10000059 	b	4b38c4 <serpent_cbc_encrypt+0x3a4>
  4b3760:	00000000 	nop
  4b3764:	8fc40038 	lw	a0,56(s8)
  4b3768:	8fc5003c 	lw	a1,60(s8)
  4b376c:	8fc60040 	lw	a2,64(s8)
  4b3770:	8f998690 	lw	t9,-31088(gp)
  4b3774:	00000000 	nop
  4b3778:	0320f809 	jalr	t9
  4b377c:	00000000 	nop
  4b3780:	8fdc0010 	lw	gp,16(s8)
  4b3784:	8fc2001c 	lw	v0,28(s8)
  4b3788:	00000000 	nop
  4b378c:	14400006 	bnez	v0,4b37a8 <serpent_cbc_encrypt+0x288>
  4b3790:	00000000 	nop
  4b3794:	8fc20048 	lw	v0,72(s8)
  4b3798:	00000000 	nop
  4b379c:	afc20020 	sw	v0,32(s8)
  4b37a0:	10000005 	b	4b37b8 <serpent_cbc_encrypt+0x298>
  4b37a4:	00000000 	nop
  4b37a8:	8fc2003c 	lw	v0,60(s8)
  4b37ac:	00000000 	nop
  4b37b0:	2442fff0 	addiu	v0,v0,-16
  4b37b4:	afc20020 	sw	v0,32(s8)
  4b37b8:	8fc20040 	lw	v0,64(s8)
  4b37bc:	00000000 	nop
  4b37c0:	8c430000 	lw	v1,0(v0)
  4b37c4:	8fc20020 	lw	v0,32(s8)
  4b37c8:	00000000 	nop
  4b37cc:	8c420000 	lw	v0,0(v0)
  4b37d0:	00000000 	nop
  4b37d4:	00621826 	xor	v1,v1,v0
  4b37d8:	8fc20040 	lw	v0,64(s8)
  4b37dc:	00000000 	nop
  4b37e0:	ac430000 	sw	v1,0(v0)
  4b37e4:	8fc20040 	lw	v0,64(s8)
  4b37e8:	00000000 	nop
  4b37ec:	24440004 	addiu	a0,v0,4
  4b37f0:	8fc20040 	lw	v0,64(s8)
  4b37f4:	00000000 	nop
  4b37f8:	24430004 	addiu	v1,v0,4
  4b37fc:	8fc20020 	lw	v0,32(s8)
  4b3800:	00000000 	nop
  4b3804:	24420004 	addiu	v0,v0,4
  4b3808:	8c630000 	lw	v1,0(v1)
  4b380c:	8c420000 	lw	v0,0(v0)
  4b3810:	00000000 	nop
  4b3814:	00621026 	xor	v0,v1,v0
  4b3818:	ac820000 	sw	v0,0(a0)
  4b381c:	8fc20040 	lw	v0,64(s8)
  4b3820:	00000000 	nop
  4b3824:	24440008 	addiu	a0,v0,8
  4b3828:	8fc20040 	lw	v0,64(s8)
  4b382c:	00000000 	nop
  4b3830:	24430008 	addiu	v1,v0,8
  4b3834:	8fc20020 	lw	v0,32(s8)
  4b3838:	00000000 	nop
  4b383c:	24420008 	addiu	v0,v0,8
  4b3840:	8c630000 	lw	v1,0(v1)
  4b3844:	8c420000 	lw	v0,0(v0)
  4b3848:	00000000 	nop
  4b384c:	00621026 	xor	v0,v1,v0
  4b3850:	ac820000 	sw	v0,0(a0)
  4b3854:	8fc20040 	lw	v0,64(s8)
  4b3858:	00000000 	nop
  4b385c:	2444000c 	addiu	a0,v0,12
  4b3860:	8fc20040 	lw	v0,64(s8)
  4b3864:	00000000 	nop
  4b3868:	2443000c 	addiu	v1,v0,12
  4b386c:	8fc20020 	lw	v0,32(s8)
  4b3870:	00000000 	nop
  4b3874:	2442000c 	addiu	v0,v0,12
  4b3878:	8c630000 	lw	v1,0(v1)
  4b387c:	8c420000 	lw	v0,0(v0)
  4b3880:	00000000 	nop
  4b3884:	00621026 	xor	v0,v1,v0
  4b3888:	ac820000 	sw	v0,0(a0)
  4b388c:	8fc2003c 	lw	v0,60(s8)
  4b3890:	00000000 	nop
  4b3894:	2442fff0 	addiu	v0,v0,-16
  4b3898:	afc2003c 	sw	v0,60(s8)
  4b389c:	8fc20040 	lw	v0,64(s8)
  4b38a0:	00000000 	nop
  4b38a4:	2442fff0 	addiu	v0,v0,-16
  4b38a8:	afc20040 	sw	v0,64(s8)
  4b38ac:	8fc2001c 	lw	v0,28(s8)
  4b38b0:	00000000 	nop
  4b38b4:	2442fff0 	addiu	v0,v0,-16
  4b38b8:	afc2001c 	sw	v0,28(s8)
  4b38bc:	1000ffa3 	b	4b374c <serpent_cbc_encrypt+0x22c>
  4b38c0:	00000000 	nop
  4b38c4:	8fc20018 	lw	v0,24(s8)
  4b38c8:	03c0e821 	move	sp,s8
  4b38cc:	8fbf0030 	lw	ra,48(sp)
  4b38d0:	8fbe002c 	lw	s8,44(sp)
  4b38d4:	27bd0038 	addiu	sp,sp,56
  4b38d8:	03e00008 	jr	ra
  4b38dc:	00000000 	nop

004b38e0 <sha256_transform>:
  4b38e0:	3c1c0fb6 	lui	gp,0xfb6
  4b38e4:	279c9090 	addiu	gp,gp,-28528
  4b38e8:	0399e021 	addu	gp,gp,t9
  4b38ec:	27bdfed8 	addiu	sp,sp,-296
  4b38f0:	afbc0000 	sw	gp,0(sp)
  4b38f4:	27a70008 	addiu	a3,sp,8
  4b38f8:	afbc0124 	sw	gp,292(sp)
  4b38fc:	afb60120 	sw	s6,288(sp)
  4b3900:	afb5011c 	sw	s5,284(sp)
  4b3904:	afb40118 	sw	s4,280(sp)
  4b3908:	afb30114 	sw	s3,276(sp)
  4b390c:	afb20110 	sw	s2,272(sp)
  4b3910:	afb1010c 	sw	s1,268(sp)
  4b3914:	afb00108 	sw	s0,264(sp)
  4b3918:	00807021 	move	t6,a0
  4b391c:	00e03021 	move	a2,a3
  4b3920:	240b000f 	li	t3,15
  4b3924:	90b00000 	lbu	s0,0(a1)
  4b3928:	90af0001 	lbu	t7,1(a1)
  4b392c:	90ac0002 	lbu	t4,2(a1)
  4b3930:	00102600 	sll	a0,s0,0x18
  4b3934:	000f6c00 	sll	t5,t7,0x10
  4b3938:	90a90003 	lbu	t1,3(a1)
  4b393c:	008d5025 	or	t2,a0,t5
  4b3940:	000c1a00 	sll	v1,t4,0x8
  4b3944:	01434025 	or	t0,t2,v1
  4b3948:	01092025 	or	a0,t0,t1
  4b394c:	256bffff 	addiu	t3,t3,-1
  4b3950:	acc40000 	sw	a0,0(a2)
  4b3954:	24a50004 	addiu	a1,a1,4
  4b3958:	0561fff2 	bgez	t3,4b3924 <sha256_transform+0x44>
  4b395c:	24c60004 	addiu	a2,a2,4
  4b3960:	8dcd0040 	lw	t5,64(t6)
  4b3964:	8dcf0044 	lw	t7,68(t6)
  4b3968:	8dd80048 	lw	t8,72(t6)
  4b396c:	8dd5004c 	lw	s5,76(t6)
  4b3970:	8dcc0050 	lw	t4,80(t6)
  4b3974:	8dd90054 	lw	t9,84(t6)
  4b3978:	8dd00058 	lw	s0,88(t6)
  4b397c:	8dd4005c 	lw	s4,92(t6)
  4b3980:	00e05021 	move	t2,a3
  4b3984:	00005821 	move	t3,zero
  4b3988:	0000b021 	move	s6,zero
  4b398c:	000c2680 	sll	a0,t4,0x1a
  4b3990:	000c3182 	srl	a2,t4,0x6
  4b3994:	000c4540 	sll	t0,t4,0x15
  4b3998:	000c2ac2 	srl	a1,t4,0xb
  4b399c:	00864825 	or	t1,a0,a2
  4b39a0:	01051025 	or	v0,t0,a1
  4b39a4:	000c99c0 	sll	s3,t4,0x7
  4b39a8:	000c3e42 	srl	a3,t4,0x19
  4b39ac:	01229026 	xor	s2,t1,v0
  4b39b0:	02671825 	or	v1,s3,a3
  4b39b4:	000c8827 	nor	s1,zero,t4
  4b39b8:	02432826 	xor	a1,s2,v1
  4b39bc:	02304024 	and	t0,s1,s0
  4b39c0:	01994824 	and	t1,t4,t9
  4b39c4:	000d9cc0 	sll	s3,t5,0x13
  4b39c8:	000d3b42 	srl	a3,t5,0xd
  4b39cc:	000d1780 	sll	v0,t5,0x1e
  4b39d0:	000d2082 	srl	a0,t5,0x2
  4b39d4:	02853021 	addu	a2,s4,a1
  4b39d8:	02679025 	or	s2,s3,a3
  4b39dc:	0128a026 	xor	s4,t1,t0
  4b39e0:	00448825 	or	s1,v0,a0
  4b39e4:	000d2d82 	srl	a1,t5,0x16
  4b39e8:	030f4826 	xor	t1,t8,t7
  4b39ec:	000d1a80 	sll	v1,t5,0xa
  4b39f0:	00d49821 	addu	s3,a2,s4
  4b39f4:	00654025 	or	t0,v1,a1
  4b39f8:	0232a026 	xor	s4,s1,s2
  4b39fc:	012d8824 	and	s1,t1,t5
  4b3a00:	01f89024 	and	s2,t7,t8
  4b3a04:	02883826 	xor	a3,s4,t0
  4b3a08:	02323026 	xor	a2,s1,s2
  4b3a0c:	29650010 	slti	a1,t3,16
  4b3a10:	256b0001 	addiu	t3,t3,1
  4b3a14:	0200a021 	move	s4,s0
  4b3a18:	00e69021 	addu	s2,a3,a2
  4b3a1c:	03208021 	move	s0,t9
  4b3a20:	29710040 	slti	s1,t3,64
  4b3a24:	14a0001b 	bnez	a1,4b3a94 <sha256_transform+0x1b4>
  4b3a28:	0180c821 	move	t9,t4
  4b3a2c:	8d45fff8 	lw	a1,-8(t2)
  4b3a30:	8d46ffc4 	lw	a2,-60(t2)
  4b3a34:	00053bc0 	sll	a3,a1,0xf
  4b3a38:	00052442 	srl	a0,a1,0x11
  4b3a3c:	00054b40 	sll	t1,a1,0xd
  4b3a40:	000564c2 	srl	t4,a1,0x13
  4b3a44:	00e41025 	or	v0,a3,a0
  4b3a48:	00064482 	srl	t0,a2,0x12
  4b3a4c:	012c3825 	or	a3,t1,t4
  4b3a50:	00061e40 	sll	v1,a2,0x19
  4b3a54:	000649c2 	srl	t1,a2,0x7
  4b3a58:	00062380 	sll	a0,a2,0xe
  4b3a5c:	00476026 	xor	t4,v0,a3
  4b3a60:	00882025 	or	a0,a0,t0
  4b3a64:	00691825 	or	v1,v1,t1
  4b3a68:	00054282 	srl	t0,a1,0xa
  4b3a6c:	8d47ffe4 	lw	a3,-28(t2)
  4b3a70:	01884826 	xor	t1,t4,t0
  4b3a74:	00646026 	xor	t4,v1,a0
  4b3a78:	000620c2 	srl	a0,a2,0x3
  4b3a7c:	01274021 	addu	t0,t1,a3
  4b3a80:	01842826 	xor	a1,t4,a0
  4b3a84:	8d49ffc0 	lw	t1,-64(t2)
  4b3a88:	01053821 	addu	a3,t0,a1
  4b3a8c:	00e96021 	addu	t4,a3,t1
  4b3a90:	ad4c0000 	sw	t4,0(t2)
  4b3a94:	8f83804c 	lw	v1,-32692(gp)
  4b3a98:	00000000 	nop
  4b3a9c:	24635490 	addiu	v1,v1,21648
  4b3aa0:	00761821 	addu	v1,v1,s6
  4b3aa4:	8c630000 	lw	v1,0(v1)
  4b3aa8:	8d450000 	lw	a1,0(t2)
  4b3aac:	02633021 	addu	a2,s3,v1
  4b3ab0:	00c59821 	addu	s3,a2,a1
  4b3ab4:	02b36021 	addu	t4,s5,s3
  4b3ab8:	26d60004 	addiu	s6,s6,4
  4b3abc:	0300a821 	move	s5,t8
  4b3ac0:	254a0004 	addiu	t2,t2,4
  4b3ac4:	01e0c021 	move	t8,t7
  4b3ac8:	01a07821 	move	t7,t5
  4b3acc:	1620ffaf 	bnez	s1,4b398c <sha256_transform+0xac>
  4b3ad0:	02726821 	addu	t5,s3,s2
  4b3ad4:	8dd60054 	lw	s6,84(t6)
  4b3ad8:	8dc20060 	lw	v0,96(t6)
  4b3adc:	8dc30064 	lw	v1,100(t6)
  4b3ae0:	8dc50040 	lw	a1,64(t6)
  4b3ae4:	8dc60044 	lw	a2,68(t6)
  4b3ae8:	8dc70048 	lw	a3,72(t6)
  4b3aec:	8dc8004c 	lw	t0,76(t6)
  4b3af0:	8dca0058 	lw	t2,88(t6)
  4b3af4:	8dcb005c 	lw	t3,92(t6)
  4b3af8:	00ad9821 	addu	s3,a1,t5
  4b3afc:	00cf9021 	addu	s2,a2,t7
  4b3b00:	00f88821 	addu	s1,a3,t8
  4b3b04:	8dc90050 	lw	t1,80(t6)
  4b3b08:	02d9c021 	addu	t8,s6,t9
  4b3b0c:	01157821 	addu	t7,t0,s5
  4b3b10:	0150b021 	addu	s6,t2,s0
  4b3b14:	0174a821 	addu	s5,t3,s4
  4b3b18:	24630001 	addiu	v1,v1,1
  4b3b1c:	2c790001 	sltiu	t9,v1,1
  4b3b20:	add30040 	sw	s3,64(t6)
  4b3b24:	add20044 	sw	s2,68(t6)
  4b3b28:	add10048 	sw	s1,72(t6)
  4b3b2c:	add60058 	sw	s6,88(t6)
  4b3b30:	add5005c 	sw	s5,92(t6)
  4b3b34:	8fb60120 	lw	s6,288(sp)
  4b3b38:	8fb5011c 	lw	s5,284(sp)
  4b3b3c:	8fb40118 	lw	s4,280(sp)
  4b3b40:	8fb30114 	lw	s3,276(sp)
  4b3b44:	8fb20110 	lw	s2,272(sp)
  4b3b48:	8fb1010c 	lw	s1,268(sp)
  4b3b4c:	8fb00108 	lw	s0,264(sp)
  4b3b50:	012c6821 	addu	t5,t1,t4
  4b3b54:	00591021 	addu	v0,v0,t9
  4b3b58:	adc20060 	sw	v0,96(t6)
  4b3b5c:	adc30064 	sw	v1,100(t6)
  4b3b60:	adcf004c 	sw	t7,76(t6)
  4b3b64:	adcd0050 	sw	t5,80(t6)
  4b3b68:	add80054 	sw	t8,84(t6)
  4b3b6c:	03e00008 	jr	ra
  4b3b70:	27bd0128 	addiu	sp,sp,296

004b3b74 <sha256_final>:
  4b3b74:	3c1c0fb6 	lui	gp,0xfb6
  4b3b78:	279c8dfc 	addiu	gp,gp,-29188
  4b3b7c:	0399e021 	addu	gp,gp,t9
  4b3b80:	27bdffc0 	addiu	sp,sp,-64
  4b3b84:	afbc0010 	sw	gp,16(sp)
  4b3b88:	afb50034 	sw	s5,52(sp)
  4b3b8c:	afb40030 	sw	s4,48(sp)
  4b3b90:	afb3002c 	sw	s3,44(sp)
  4b3b94:	afb20028 	sw	s2,40(sp)
  4b3b98:	afb10024 	sw	s1,36(sp)
  4b3b9c:	afb00020 	sw	s0,32(sp)
  4b3ba0:	00809021 	move	s2,a0
  4b3ba4:	afbf003c 	sw	ra,60(sp)
  4b3ba8:	afbc0038 	sw	gp,56(sp)
  4b3bac:	8e460060 	lw	a2,96(s2)
  4b3bb0:	8e470064 	lw	a3,100(s2)
  4b3bb4:	8e4b0068 	lw	t3,104(s2)
  4b3bb8:	00062240 	sll	a0,a2,0x9
  4b3bbc:	000b28c0 	sll	a1,t3,0x3
  4b3bc0:	000755c2 	srl	t2,a3,0x17
  4b3bc4:	008a1025 	or	v0,a0,t2
  4b3bc8:	00054fc3 	sra	t1,a1,0x1f
  4b3bcc:	00a04021 	move	t0,a1
  4b3bd0:	00071a40 	sll	v1,a3,0x9
  4b3bd4:	27b30018 	addiu	s3,sp,24
  4b3bd8:	0049a025 	or	s4,v0,t1
  4b3bdc:	24020080 	li	v0,128
  4b3be0:	0068a825 	or	s5,v1,t0
  4b3be4:	a3a20018 	sb	v0,24(sp)
  4b3be8:	02608821 	move	s1,s3
  4b3bec:	24100001 	li	s0,1
  4b3bf0:	8e430068 	lw	v1,104(s2)
  4b3bf4:	00000000 	nop
  4b3bf8:	10600090 	beqz	v1,4b3e3c <sha256_final+0x2c8>
  4b3bfc:	2e060040 	sltiu	a2,s0,64
  4b3c00:	92380000 	lbu	t8,0(s1)
  4b3c04:	02437821 	addu	t7,s2,v1
  4b3c08:	a1f80000 	sb	t8,0(t7)
  4b3c0c:	8e4e0068 	lw	t6,104(s2)
  4b3c10:	240c0040 	li	t4,64
  4b3c14:	25cd0001 	addiu	t5,t6,1
  4b3c18:	ae4d0068 	sw	t5,104(s2)
  4b3c1c:	26310001 	addiu	s1,s1,1
  4b3c20:	11ac007b 	beq	t5,t4,4b3e10 <sha256_final+0x29c>
  4b3c24:	2610ffff 	addiu	s0,s0,-1
  4b3c28:	1e00fff1 	bgtz	s0,4b3bf0 <sha256_final+0x7c>
  4b3c2c:	00000000 	nop
  4b3c30:	8e430068 	lw	v1,104(s2)
  4b3c34:	24100038 	li	s0,56
  4b3c38:	10700018 	beq	v1,s0,4b3c9c <sha256_final+0x128>
  4b3c3c:	a3a00018 	sb	zero,24(sp)
  4b3c40:	02608821 	move	s1,s3
  4b3c44:	24100001 	li	s0,1
  4b3c48:	1060005d 	beqz	v1,4b3dc0 <sha256_final+0x24c>
  4b3c4c:	2e190040 	sltiu	t9,s0,64
  4b3c50:	92250000 	lbu	a1,0(s1)
  4b3c54:	02435021 	addu	t2,s2,v1
  4b3c58:	a1450000 	sb	a1,0(t2)
  4b3c5c:	8e440068 	lw	a0,104(s2)
  4b3c60:	24090040 	li	t1,64
  4b3c64:	24820001 	addiu	v0,a0,1
  4b3c68:	ae420068 	sw	v0,104(s2)
  4b3c6c:	26310001 	addiu	s1,s1,1
  4b3c70:	10490048 	beq	v0,t1,4b3d94 <sha256_final+0x220>
  4b3c74:	2610ffff 	addiu	s0,s0,-1
  4b3c78:	1a000004 	blez	s0,4b3c8c <sha256_final+0x118>
  4b3c7c:	00000000 	nop
  4b3c80:	8e430068 	lw	v1,104(s2)
  4b3c84:	1000fff0 	b	4b3c48 <sha256_final+0xd4>
  4b3c88:	00000000 	nop
  4b3c8c:	8e430068 	lw	v1,104(s2)
  4b3c90:	24110038 	li	s1,56
  4b3c94:	1471ffeb 	bne	v1,s1,4b3c44 <sha256_final+0xd0>
  4b3c98:	02608821 	move	s1,s3
  4b3c9c:	00145a00 	sll	t3,s4,0x8
  4b3ca0:	00157c02 	srl	t7,s5,0x10
  4b3ca4:	00146c00 	sll	t5,s4,0x10
  4b3ca8:	00151a02 	srl	v1,s5,0x8
  4b3cac:	00147600 	sll	t6,s4,0x18
  4b3cb0:	00158602 	srl	s0,s5,0x18
  4b3cb4:	00144602 	srl	t0,s4,0x18
  4b3cb8:	00143c02 	srl	a3,s4,0x10
  4b3cbc:	01ed3025 	or	a2,t7,t5
  4b3cc0:	0014ca02 	srl	t9,s4,0x8
  4b3cc4:	0014c002 	srl	t8,s4,0x0
  4b3cc8:	020b6025 	or	t4,s0,t3
  4b3ccc:	006e9825 	or	s3,v1,t6
  4b3cd0:	a2480038 	sb	t0,56(s2)
  4b3cd4:	a2470039 	sb	a3,57(s2)
  4b3cd8:	a246003d 	sb	a2,61(s2)
  4b3cdc:	a259003a 	sb	t9,58(s2)
  4b3ce0:	a258003b 	sb	t8,59(s2)
  4b3ce4:	a24c003c 	sb	t4,60(s2)
  4b3ce8:	a253003e 	sb	s3,62(s2)
  4b3cec:	a255003f 	sb	s5,63(s2)
  4b3cf0:	02402021 	move	a0,s2
  4b3cf4:	02402821 	move	a1,s2
  4b3cf8:	8f998054 	lw	t9,-32684(gp)
  4b3cfc:	00000000 	nop
  4b3d00:	273938e0 	addiu	t9,t9,14560
  4b3d04:	00000000 	nop
  4b3d08:	0320f809 	jalr	t9
  4b3d0c:	00000000 	nop
  4b3d10:	8fbc0010 	lw	gp,16(sp)
  4b3d14:	02403021 	move	a2,s2
  4b3d18:	26470040 	addiu	a3,s2,64
  4b3d1c:	24080007 	li	t0,7
  4b3d20:	8cf40000 	lw	s4,0(a3)
  4b3d24:	2508ffff 	addiu	t0,t0,-1
  4b3d28:	00141602 	srl	v0,s4,0x18
  4b3d2c:	00144c02 	srl	t1,s4,0x10
  4b3d30:	0014aa02 	srl	s5,s4,0x8
  4b3d34:	a0c20000 	sb	v0,0(a2)
  4b3d38:	a0c90001 	sb	t1,1(a2)
  4b3d3c:	a0d50002 	sb	s5,2(a2)
  4b3d40:	a0d40003 	sb	s4,3(a2)
  4b3d44:	24e70004 	addiu	a3,a3,4
  4b3d48:	0501fff5 	bgez	t0,4b3d20 <sha256_final+0x1ac>
  4b3d4c:	24c60004 	addiu	a2,a2,4
  4b3d50:	26440020 	addiu	a0,s2,32
  4b3d54:	00002821 	move	a1,zero
  4b3d58:	24060050 	li	a2,80
  4b3d5c:	8f998500 	lw	t9,-31488(gp)
  4b3d60:	00000000 	nop
  4b3d64:	0320f809 	jalr	t9
  4b3d68:	00000000 	nop
  4b3d6c:	8fbc0010 	lw	gp,16(sp)
  4b3d70:	8fbf003c 	lw	ra,60(sp)
  4b3d74:	8fb50034 	lw	s5,52(sp)
  4b3d78:	8fb40030 	lw	s4,48(sp)
  4b3d7c:	8fb3002c 	lw	s3,44(sp)
  4b3d80:	8fb20028 	lw	s2,40(sp)
  4b3d84:	8fb10024 	lw	s1,36(sp)
  4b3d88:	8fb00020 	lw	s0,32(sp)
  4b3d8c:	03e00008 	jr	ra
  4b3d90:	27bd0040 	addiu	sp,sp,64
  4b3d94:	02402021 	move	a0,s2
  4b3d98:	02402821 	move	a1,s2
  4b3d9c:	8f998054 	lw	t9,-32684(gp)
  4b3da0:	00000000 	nop
  4b3da4:	273938e0 	addiu	t9,t9,14560
  4b3da8:	00000000 	nop
  4b3dac:	0320f809 	jalr	t9
  4b3db0:	00000000 	nop
  4b3db4:	8fbc0010 	lw	gp,16(sp)
  4b3db8:	1000ffaf 	b	4b3c78 <sha256_final+0x104>
  4b3dbc:	ae400068 	sw	zero,104(s2)
  4b3dc0:	1720000f 	bnez	t9,4b3e00 <sha256_final+0x28c>
  4b3dc4:	00000000 	nop
  4b3dc8:	02202821 	move	a1,s1
  4b3dcc:	02402021 	move	a0,s2
  4b3dd0:	2610ffc0 	addiu	s0,s0,-64
  4b3dd4:	8f998054 	lw	t9,-32684(gp)
  4b3dd8:	00000000 	nop
  4b3ddc:	273938e0 	addiu	t9,t9,14560
  4b3de0:	00000000 	nop
  4b3de4:	0320f809 	jalr	t9
  4b3de8:	00000000 	nop
  4b3dec:	8fbc0010 	lw	gp,16(sp)
  4b3df0:	2e080040 	sltiu	t0,s0,64
  4b3df4:	1100fff4 	beqz	t0,4b3dc8 <sha256_final+0x254>
  4b3df8:	26310040 	addiu	s1,s1,64
  4b3dfc:	8e430068 	lw	v1,104(s2)
  4b3e00:	1600ff93 	bnez	s0,4b3c50 <sha256_final+0xdc>
  4b3e04:	00000000 	nop
  4b3e08:	1000ffa2 	b	4b3c94 <sha256_final+0x120>
  4b3e0c:	24110038 	li	s1,56
  4b3e10:	02402021 	move	a0,s2
  4b3e14:	02402821 	move	a1,s2
  4b3e18:	8f998054 	lw	t9,-32684(gp)
  4b3e1c:	00000000 	nop
  4b3e20:	273938e0 	addiu	t9,t9,14560
  4b3e24:	00000000 	nop
  4b3e28:	0320f809 	jalr	t9
  4b3e2c:	00000000 	nop
  4b3e30:	8fbc0010 	lw	gp,16(sp)
  4b3e34:	1000ff7c 	b	4b3c28 <sha256_final+0xb4>
  4b3e38:	ae400068 	sw	zero,104(s2)
  4b3e3c:	14c0000e 	bnez	a2,4b3e78 <sha256_final+0x304>
  4b3e40:	00000000 	nop
  4b3e44:	02202821 	move	a1,s1
  4b3e48:	02402021 	move	a0,s2
  4b3e4c:	2610ffc0 	addiu	s0,s0,-64
  4b3e50:	8f998054 	lw	t9,-32684(gp)
  4b3e54:	00000000 	nop
  4b3e58:	273938e0 	addiu	t9,t9,14560
  4b3e5c:	00000000 	nop
  4b3e60:	0320f809 	jalr	t9
  4b3e64:	00000000 	nop
  4b3e68:	8fbc0010 	lw	gp,16(sp)
  4b3e6c:	2e070040 	sltiu	a3,s0,64
  4b3e70:	10e0fff4 	beqz	a3,4b3e44 <sha256_final+0x2d0>
  4b3e74:	26310040 	addiu	s1,s1,64
  4b3e78:	1200ff6d 	beqz	s0,4b3c30 <sha256_final+0xbc>
  4b3e7c:	00000000 	nop
  4b3e80:	8e430068 	lw	v1,104(s2)
  4b3e84:	1000ff5e 	b	4b3c00 <sha256_final+0x8c>
  4b3e88:	00000000 	nop

004b3e8c <sha512_transform>:
  4b3e8c:	3c1c0fb6 	lui	gp,0xfb6
  4b3e90:	279c8ae4 	addiu	gp,gp,-29980
  4b3e94:	0399e021 	addu	gp,gp,t9
  4b3e98:	27bdfd20 	addiu	sp,sp,-736
  4b3e9c:	afbc0000 	sw	gp,0(sp)
  4b3ea0:	afbe02dc 	sw	s8,732(sp)
  4b3ea4:	afb302c4 	sw	s3,708(sp)
  4b3ea8:	afbc02d8 	sw	gp,728(sp)
  4b3eac:	afb702d4 	sw	s7,724(sp)
  4b3eb0:	afb602d0 	sw	s6,720(sp)
  4b3eb4:	afb502cc 	sw	s5,716(sp)
  4b3eb8:	afb402c8 	sw	s4,712(sp)
  4b3ebc:	afb202c0 	sw	s2,704(sp)
  4b3ec0:	afb102bc 	sw	s1,700(sp)
  4b3ec4:	afb002b8 	sw	s0,696(sp)
  4b3ec8:	0080f021 	move	s8,a0
  4b3ecc:	00a06021 	move	t4,a1
  4b3ed0:	00009821 	move	s3,zero
  4b3ed4:	27ab0008 	addiu	t3,sp,8
  4b3ed8:	918d0000 	lbu	t5,0(t4)
  4b3edc:	91860001 	lbu	a2,1(t4)
  4b3ee0:	91820002 	lbu	v0,2(t4)
  4b3ee4:	000d5600 	sll	t2,t5,0x18
  4b3ee8:	00064400 	sll	t0,a2,0x10
  4b3eec:	918f0004 	lbu	t7,4(t4)
  4b3ef0:	91970003 	lbu	s7,3(t4)
  4b3ef4:	0148c825 	or	t9,t2,t0
  4b3ef8:	00022200 	sll	a0,v0,0x8
  4b3efc:	00001821 	move	v1,zero
  4b3f00:	00004821 	move	t1,zero
  4b3f04:	00692825 	or	a1,v1,t1
  4b3f08:	0324a825 	or	s5,t9,a0
  4b3f0c:	0000c021 	move	t8,zero
  4b3f10:	91990005 	lbu	t9,5(t4)
  4b3f14:	00008821 	move	s1,zero
  4b3f18:	00b89025 	or	s2,a1,t8
  4b3f1c:	0017b000 	sll	s6,s7,0x0
  4b3f20:	00113e00 	sll	a3,s1,0x18
  4b3f24:	000f8202 	srl	s0,t7,0x8
  4b3f28:	91910006 	lbu	s1,6(t4)
  4b3f2c:	0000a021 	move	s4,zero
  4b3f30:	02b66825 	or	t5,s5,s6
  4b3f34:	02541025 	or	v0,s2,s4
  4b3f38:	00f07025 	or	t6,a3,s0
  4b3f3c:	000f5600 	sll	t2,t7,0x18
  4b3f40:	00032400 	sll	a0,v1,0x10
  4b3f44:	00193402 	srl	a2,t9,0x10
  4b3f48:	01aeb825 	or	s7,t5,t6
  4b3f4c:	004aa825 	or	s5,v0,t2
  4b3f50:	0086c025 	or	t8,a0,a2
  4b3f54:	0019b400 	sll	s6,t9,0x10
  4b3f58:	00142a00 	sll	a1,s4,0x8
  4b3f5c:	00119602 	srl	s2,s1,0x18
  4b3f60:	91870007 	lbu	a3,7(t4)
  4b3f64:	02f87825 	or	t7,s7,t8
  4b3f68:	02b66825 	or	t5,s5,s6
  4b3f6c:	00b28025 	or	s0,a1,s2
  4b3f70:	00117200 	sll	t6,s1,0x8
  4b3f74:	01f01825 	or	v1,t7,s0
  4b3f78:	001320c0 	sll	a0,s3,0x3
  4b3f7c:	00005021 	move	t2,zero
  4b3f80:	01ae3025 	or	a2,t5,t6
  4b3f84:	26730001 	addiu	s3,s3,1
  4b3f88:	006a4025 	or	t0,v1,t2
  4b3f8c:	00c74825 	or	t1,a2,a3
  4b3f90:	01641021 	addu	v0,t3,a0
  4b3f94:	2a630010 	slti	v1,s3,16
  4b3f98:	ac480000 	sw	t0,0(v0)
  4b3f9c:	ac490004 	sw	t1,4(v0)
  4b3fa0:	1460ffcd 	bnez	v1,4b3ed8 <sha512_transform+0x4c>
  4b3fa4:	258c0008 	addiu	t4,t4,8
  4b3fa8:	8fd80088 	lw	t8,136(s8)
  4b3fac:	8fd9008c 	lw	t9,140(s8)
  4b3fb0:	8fd60080 	lw	s6,128(s8)
  4b3fb4:	8fd70084 	lw	s7,132(s8)
  4b3fb8:	afb80288 	sw	t8,648(sp)
  4b3fbc:	afb9028c 	sw	t9,652(sp)
  4b3fc0:	8fd40090 	lw	s4,144(s8)
  4b3fc4:	8fd50094 	lw	s5,148(s8)
  4b3fc8:	afb40290 	sw	s4,656(sp)
  4b3fcc:	afb50294 	sw	s5,660(sp)
  4b3fd0:	8fd00098 	lw	s0,152(s8)
  4b3fd4:	8fd1009c 	lw	s1,156(s8)
  4b3fd8:	0000a021 	move	s4,zero
  4b3fdc:	afb00298 	sw	s0,664(sp)
  4b3fe0:	afb1029c 	sw	s1,668(sp)
  4b3fe4:	8fd200a8 	lw	s2,168(s8)
  4b3fe8:	8fd300ac 	lw	s3,172(s8)
  4b3fec:	8fd800a0 	lw	t8,160(s8)
  4b3ff0:	8fd900a4 	lw	t9,164(s8)
  4b3ff4:	afb202a0 	sw	s2,672(sp)
  4b3ff8:	afb302a4 	sw	s3,676(sp)
  4b3ffc:	8fce00b0 	lw	t6,176(s8)
  4b4000:	8fcf00b4 	lw	t7,180(s8)
  4b4004:	01609021 	move	s2,t3
  4b4008:	afae02a8 	sw	t6,680(sp)
  4b400c:	afaf02ac 	sw	t7,684(sp)
  4b4010:	8fcc00b8 	lw	t4,184(s8)
  4b4014:	8fcd00bc 	lw	t5,188(s8)
  4b4018:	00009821 	move	s3,zero
  4b401c:	afac02b0 	sw	t4,688(sp)
  4b4020:	afad02b4 	sw	t5,692(sp)
  4b4024:	2a6b0010 	slti	t3,s3,16
  4b4028:	15600040 	bnez	t3,4b412c <sha512_transform+0x2a0>
  4b402c:	00194480 	sll	t0,t9,0x12
  4b4030:	8e4afff0 	lw	t2,-16(s2)
  4b4034:	8e4bfff4 	lw	t3,-12(s2)
  4b4038:	8e4cff88 	lw	t4,-120(s2)
  4b403c:	8e4dff8c 	lw	t5,-116(s2)
  4b4040:	000b2b40 	sll	a1,t3,0xd
  4b4044:	000a34c2 	srl	a2,t2,0x13
  4b4048:	000b8f42 	srl	s1,t3,0x1d
  4b404c:	000a18c0 	sll	v1,t2,0x3
  4b4050:	000a3b40 	sll	a3,t2,0xd
  4b4054:	000b84c2 	srl	s0,t3,0x13
  4b4058:	000a7742 	srl	t6,t2,0x1d
  4b405c:	000b78c0 	sll	t7,t3,0x3
  4b4060:	000c4042 	srl	t0,t4,0x1
  4b4064:	000caa02 	srl	s5,t4,0x8
  4b4068:	000d4e00 	sll	t1,t5,0x18
  4b406c:	000d27c0 	sll	a0,t5,0x1f
  4b4070:	00c51025 	or	v0,a2,a1
  4b4074:	00713025 	or	a2,v1,s1
  4b4078:	02071825 	or	v1,s0,a3
  4b407c:	000d8a02 	srl	s1,t5,0x8
  4b4080:	01ee3825 	or	a3,t7,t6
  4b4084:	01048025 	or	s0,t0,a0
  4b4088:	02a94025 	or	t0,s5,t1
  4b408c:	000c4e00 	sll	t1,t4,0x18
  4b4090:	02297825 	or	t7,s1,t1
  4b4094:	00461026 	xor	v0,v0,a2
  4b4098:	00678826 	xor	s1,v1,a3
  4b409c:	000b3182 	srl	a2,t3,0x6
  4b40a0:	000a3e80 	sll	a3,t2,0x1a
  4b40a4:	000c2fc0 	sll	a1,t4,0x1f
  4b40a8:	00c75825 	or	t3,a2,a3
  4b40ac:	000d7042 	srl	t6,t5,0x1
  4b40b0:	8e46ffc8 	lw	a2,-56(s2)
  4b40b4:	8e47ffcc 	lw	a3,-52(s2)
  4b40b8:	01c5a825 	or	s5,t6,a1
  4b40bc:	022b1826 	xor	v1,s1,t3
  4b40c0:	000a5182 	srl	t2,t2,0x6
  4b40c4:	02088826 	xor	s1,s0,t0
  4b40c8:	000c8640 	sll	s0,t4,0x19
  4b40cc:	000d41c2 	srl	t0,t5,0x7
  4b40d0:	004a7026 	xor	t6,v0,t2
  4b40d4:	02af5826 	xor	t3,s5,t7
  4b40d8:	01107825 	or	t7,t0,s0
  4b40dc:	00678021 	addu	s0,v1,a3
  4b40e0:	000ca9c2 	srl	s5,t4,0x7
  4b40e4:	0207482b 	sltu	t1,s0,a3
  4b40e8:	016f6026 	xor	t4,t3,t7
  4b40ec:	01c63821 	addu	a3,t6,a2
  4b40f0:	00e97021 	addu	t6,a3,t1
  4b40f4:	02354026 	xor	t0,s1,s5
  4b40f8:	8e46ff80 	lw	a2,-128(s2)
  4b40fc:	8e47ff84 	lw	a3,-124(s2)
  4b4100:	020c4821 	addu	t1,s0,t4
  4b4104:	012c502b 	sltu	t2,t1,t4
  4b4108:	01c82821 	addu	a1,t6,t0
  4b410c:	01271821 	addu	v1,t1,a3
  4b4110:	00aaa821 	addu	s5,a1,t2
  4b4114:	0067882b 	sltu	s1,v1,a3
  4b4118:	02a67821 	addu	t7,s5,a2
  4b411c:	01f11021 	addu	v0,t7,s1
  4b4120:	ae420000 	sw	v0,0(s2)
  4b4124:	ae430004 	sw	v1,4(s2)
  4b4128:	00194480 	sll	t0,t9,0x12
  4b412c:	00191380 	sll	v0,t9,0xe
  4b4130:	00185382 	srl	t2,t8,0xe
  4b4134:	0018ac82 	srl	s5,t8,0x12
  4b4138:	00184c80 	sll	t1,t8,0x12
  4b413c:	00193382 	srl	a2,t9,0xe
  4b4140:	00181b80 	sll	v1,t8,0xe
  4b4144:	00192482 	srl	a0,t9,0x12
  4b4148:	02a26825 	or	t5,s5,v0
  4b414c:	00c96025 	or	t4,a2,t1
  4b4150:	00835825 	or	t3,a0,v1
  4b4154:	01487825 	or	t7,t2,t0
  4b4158:	00198a42 	srl	s1,t9,0x9
  4b415c:	00182dc0 	sll	a1,t8,0x17
  4b4160:	00188242 	srl	s0,t8,0x9
  4b4164:	00193dc0 	sll	a3,t9,0x17
  4b4168:	00b12025 	or	a0,a1,s1
  4b416c:	01ed4026 	xor	t0,t7,t5
  4b4170:	00f02825 	or	a1,a3,s0
  4b4174:	018b8026 	xor	s0,t4,t3
  4b4178:	02054826 	xor	t1,s0,a1
  4b417c:	00177100 	sll	t6,s7,0x4
  4b4180:	0017a882 	srl	s5,s7,0x2
  4b4184:	00165702 	srl	t2,s6,0x1c
  4b4188:	00168f80 	sll	s1,s6,0x1e
  4b418c:	01044026 	xor	t0,t0,a0
  4b4190:	8fa402a8 	lw	a0,680(sp)
  4b4194:	8fa502ac 	lw	a1,684(sp)
  4b4198:	014e3025 	or	a2,t2,t6
  4b419c:	00186827 	nor	t5,zero,t8
  4b41a0:	02355025 	or	t2,s1,s5
  4b41a4:	00193827 	nor	a3,zero,t9
  4b41a8:	00167900 	sll	t7,s6,0x4
  4b41ac:	00175f02 	srl	t3,s7,0x1c
  4b41b0:	00167082 	srl	t6,s6,0x2
  4b41b4:	00171780 	sll	v0,s7,0x1e
  4b41b8:	0017a9c2 	srl	s5,s7,0x7
  4b41bc:	00168e40 	sll	s1,s6,0x19
  4b41c0:	01a46024 	and	t4,t5,a0
  4b41c4:	00e56824 	and	t5,a3,a1
  4b41c8:	016f3825 	or	a3,t3,t7
  4b41cc:	004e5825 	or	t3,v0,t6
  4b41d0:	02351025 	or	v0,s1,s5
  4b41d4:	8fb002b0 	lw	s0,688(sp)
  4b41d8:	8fb102b4 	lw	s1,692(sp)
  4b41dc:	8fae02a0 	lw	t6,672(sp)
  4b41e0:	8faf02a4 	lw	t7,676(sp)
  4b41e4:	02292021 	addu	a0,s1,t1
  4b41e8:	032f1824 	and	v1,t9,t7
  4b41ec:	02088021 	addu	s0,s0,t0
  4b41f0:	0089782b 	sltu	t7,a0,t1
  4b41f4:	030e2824 	and	a1,t8,t6
  4b41f8:	020f4821 	addu	t1,s0,t7
  4b41fc:	001671c2 	srl	t6,s6,0x7
  4b4200:	0017ae40 	sll	s5,s7,0x19
  4b4204:	8fb00288 	lw	s0,648(sp)
  4b4208:	8fb1028c 	lw	s1,652(sp)
  4b420c:	01204021 	move	t0,t1
  4b4210:	00804821 	move	t1,a0
  4b4214:	00ac2026 	xor	a0,a1,t4
  4b4218:	006d2826 	xor	a1,v1,t5
  4b421c:	02ae1825 	or	v1,s5,t6
  4b4220:	8fae0290 	lw	t6,656(sp)
  4b4224:	8faf0294 	lw	t7,660(sp)
  4b4228:	0125a821 	addu	s5,t1,a1
  4b422c:	01f16826 	xor	t5,t7,s1
  4b4230:	02a5782b 	sltu	t7,s5,a1
  4b4234:	01042821 	addu	a1,t0,a0
  4b4238:	01d06026 	xor	t4,t6,s0
  4b423c:	00af4021 	addu	t0,a1,t7
  4b4240:	8f90804c 	lw	s0,-32692(gp)
  4b4244:	00000000 	nop
  4b4248:	26105610 	addiu	s0,s0,22032
  4b424c:	02148021 	addu	s0,s0,s4
  4b4250:	8e100000 	lw	s0,0(s0)
  4b4254:	8f91804c 	lw	s1,-32692(gp)
  4b4258:	00000000 	nop
  4b425c:	26315610 	addiu	s1,s1,22032
  4b4260:	02348821 	addu	s1,s1,s4
  4b4264:	8e310004 	lw	s1,4(s1)
  4b4268:	8fae0290 	lw	t6,656(sp)
  4b426c:	8faf0294 	lw	t7,660(sp)
  4b4270:	00ca3026 	xor	a2,a2,t2
  4b4274:	00eb3826 	xor	a3,a3,t3
  4b4278:	8faa0288 	lw	t2,648(sp)
  4b427c:	8fab028c 	lw	t3,652(sp)
  4b4280:	02b14821 	addu	t1,s5,s1
  4b4284:	014e2024 	and	a0,t2,t6
  4b4288:	016f2824 	and	a1,t3,t7
  4b428c:	8e4a0000 	lw	t2,0(s2)
  4b4290:	8e4b0004 	lw	t3,4(s2)
  4b4294:	0131782b 	sltu	t7,t1,s1
  4b4298:	0110a821 	addu	s5,t0,s0
  4b429c:	012b4821 	addu	t1,t1,t3
  4b42a0:	02af8821 	addu	s1,s5,t7
  4b42a4:	01b76824 	and	t5,t5,s7
  4b42a8:	01a57026 	xor	t6,t5,a1
  4b42ac:	01966024 	and	t4,t4,s6
  4b42b0:	022a2821 	addu	a1,s1,t2
  4b42b4:	00e37826 	xor	t7,a3,v1
  4b42b8:	012b802b 	sltu	s0,t1,t3
  4b42bc:	01841826 	xor	v1,t4,a0
  4b42c0:	00c2a826 	xor	s5,a2,v0
  4b42c4:	00b02021 	addu	a0,a1,s0
  4b42c8:	01ee2821 	addu	a1,t7,t6
  4b42cc:	00ae102b 	sltu	v0,a1,t6
  4b42d0:	02a38821 	addu	s1,s5,v1
  4b42d4:	0222a821 	addu	s5,s1,v0
  4b42d8:	8fb002a0 	lw	s0,672(sp)
  4b42dc:	8fb102a4 	lw	s1,676(sp)
  4b42e0:	afb802a0 	sw	t8,672(sp)
  4b42e4:	afb902a4 	sw	t9,676(sp)
  4b42e8:	8fb80298 	lw	t8,664(sp)
  4b42ec:	8fb9029c 	lw	t9,668(sp)
  4b42f0:	8faa02a8 	lw	t2,680(sp)
  4b42f4:	8fab02ac 	lw	t3,684(sp)
  4b42f8:	0329c821 	addu	t9,t9,t1
  4b42fc:	afaa02b0 	sw	t2,688(sp)
  4b4300:	afab02b4 	sw	t3,692(sp)
  4b4304:	0329782b 	sltu	t7,t9,t1
  4b4308:	03045821 	addu	t3,t8,a0
  4b430c:	8fa20288 	lw	v0,648(sp)
  4b4310:	8fa3028c 	lw	v1,652(sp)
  4b4314:	26730001 	addiu	s3,s3,1
  4b4318:	afb60288 	sw	s6,648(sp)
  4b431c:	afb7028c 	sw	s7,652(sp)
  4b4320:	016fc021 	addu	t8,t3,t7
  4b4324:	0125b821 	addu	s7,t1,a1
  4b4328:	8fae0290 	lw	t6,656(sp)
  4b432c:	8faf0294 	lw	t7,660(sp)
  4b4330:	02e5602b 	sltu	t4,s7,a1
  4b4334:	00955021 	addu	t2,a0,s5
  4b4338:	2a6d0050 	slti	t5,s3,80
  4b433c:	afb002a8 	sw	s0,680(sp)
  4b4340:	afb102ac 	sw	s1,684(sp)
  4b4344:	afae0298 	sw	t6,664(sp)
  4b4348:	afaf029c 	sw	t7,668(sp)
  4b434c:	afa20290 	sw	v0,656(sp)
  4b4350:	afa30294 	sw	v1,660(sp)
  4b4354:	014cb021 	addu	s6,t2,t4
  4b4358:	26520008 	addiu	s2,s2,8
  4b435c:	15a0ff31 	bnez	t5,4b4024 <sha512_transform+0x198>
  4b4360:	26940008 	addiu	s4,s4,8
  4b4364:	8fc200c0 	lw	v0,192(s8)
  4b4368:	8fc300c4 	lw	v1,196(s8)
  4b436c:	8fd00080 	lw	s0,128(s8)
  4b4370:	8fd10084 	lw	s1,132(s8)
  4b4374:	24630001 	addiu	v1,v1,1
  4b4378:	2c730001 	sltiu	s3,v1,1
  4b437c:	00531021 	addu	v0,v0,s3
  4b4380:	afc200c0 	sw	v0,192(s8)
  4b4384:	afc300c4 	sw	v1,196(s8)
  4b4388:	02378821 	addu	s1,s1,s7
  4b438c:	8fc40088 	lw	a0,136(s8)
  4b4390:	8fc5008c 	lw	a1,140(s8)
  4b4394:	0237a02b 	sltu	s4,s1,s7
  4b4398:	0216a821 	addu	s5,s0,s6
  4b439c:	8fb60288 	lw	s6,648(sp)
  4b43a0:	8fb7028c 	lw	s7,652(sp)
  4b43a4:	02b48021 	addu	s0,s5,s4
  4b43a8:	00b72821 	addu	a1,a1,s7
  4b43ac:	00b7a02b 	sltu	s4,a1,s7
  4b43b0:	0096b821 	addu	s7,a0,s6
  4b43b4:	8fc20090 	lw	v0,144(s8)
  4b43b8:	8fc30094 	lw	v1,148(s8)
  4b43bc:	02f42021 	addu	a0,s7,s4
  4b43c0:	8fb60290 	lw	s6,656(sp)
  4b43c4:	8fb70294 	lw	s7,660(sp)
  4b43c8:	8fc60098 	lw	a2,152(s8)
  4b43cc:	8fc7009c 	lw	a3,156(s8)
  4b43d0:	00771821 	addu	v1,v1,s7
  4b43d4:	8fc800a0 	lw	t0,160(s8)
  4b43d8:	8fc900a4 	lw	t1,164(s8)
  4b43dc:	0077a02b 	sltu	s4,v1,s7
  4b43e0:	0056a821 	addu	s5,v0,s6
  4b43e4:	8fb60298 	lw	s6,664(sp)
  4b43e8:	8fb7029c 	lw	s7,668(sp)
  4b43ec:	01394821 	addu	t1,t1,t9
  4b43f0:	00f73821 	addu	a3,a3,s7
  4b43f4:	02b41021 	addu	v0,s5,s4
  4b43f8:	00f7a82b 	sltu	s5,a3,s7
  4b43fc:	00d6a021 	addu	s4,a2,s6
  4b4400:	0139b82b 	sltu	s7,t1,t9
  4b4404:	0118b021 	addu	s6,t0,t8
  4b4408:	8fca00a8 	lw	t2,168(s8)
  4b440c:	8fcb00ac 	lw	t3,172(s8)
  4b4410:	02d74021 	addu	t0,s6,s7
  4b4414:	8fb602a0 	lw	s6,672(sp)
  4b4418:	8fb702a4 	lw	s7,676(sp)
  4b441c:	8fcc00b0 	lw	t4,176(s8)
  4b4420:	8fcd00b4 	lw	t5,180(s8)
  4b4424:	01775821 	addu	t3,t3,s7
  4b4428:	02953021 	addu	a2,s4,s5
  4b442c:	0177c82b 	sltu	t9,t3,s7
  4b4430:	0156a021 	addu	s4,t2,s6
  4b4434:	8fb602a8 	lw	s6,680(sp)
  4b4438:	8fb702ac 	lw	s7,684(sp)
  4b443c:	8fce00b8 	lw	t6,184(s8)
  4b4440:	8fcf00bc 	lw	t7,188(s8)
  4b4444:	01b76821 	addu	t5,t5,s7
  4b4448:	01b7a82b 	sltu	s5,t5,s7
  4b444c:	0196c021 	addu	t8,t4,s6
  4b4450:	8fb602b0 	lw	s6,688(sp)
  4b4454:	8fb702b4 	lw	s7,692(sp)
  4b4458:	8fd200c0 	lw	s2,192(s8)
  4b445c:	01f77821 	addu	t7,t7,s7
  4b4460:	8fd300c4 	lw	s3,196(s8)
  4b4464:	02995021 	addu	t2,s4,t9
  4b4468:	01f7c82b 	sltu	t9,t7,s7
  4b446c:	01d6b821 	addu	s7,t6,s6
  4b4470:	03156021 	addu	t4,t8,s5
  4b4474:	02f97021 	addu	t6,s7,t9
  4b4478:	0253b025 	or	s6,s2,s3
  4b447c:	afd00080 	sw	s0,128(s8)
  4b4480:	afd10084 	sw	s1,132(s8)
  4b4484:	afc40088 	sw	a0,136(s8)
  4b4488:	afc5008c 	sw	a1,140(s8)
  4b448c:	afc20090 	sw	v0,144(s8)
  4b4490:	afc30094 	sw	v1,148(s8)
  4b4494:	afc60098 	sw	a2,152(s8)
  4b4498:	afc7009c 	sw	a3,156(s8)
  4b449c:	afc800a0 	sw	t0,160(s8)
  4b44a0:	afc900a4 	sw	t1,164(s8)
  4b44a4:	afca00a8 	sw	t2,168(s8)
  4b44a8:	afcb00ac 	sw	t3,172(s8)
  4b44ac:	afcc00b0 	sw	t4,176(s8)
  4b44b0:	afcd00b4 	sw	t5,180(s8)
  4b44b4:	afce00b8 	sw	t6,184(s8)
  4b44b8:	12c0000c 	beqz	s6,4b44ec <sha512_transform+0x660>
  4b44bc:	afcf00bc 	sw	t7,188(s8)
  4b44c0:	8fbe02dc 	lw	s8,732(sp)
  4b44c4:	8fb702d4 	lw	s7,724(sp)
  4b44c8:	8fb602d0 	lw	s6,720(sp)
  4b44cc:	8fb502cc 	lw	s5,716(sp)
  4b44d0:	8fb402c8 	lw	s4,712(sp)
  4b44d4:	8fb302c4 	lw	s3,708(sp)
  4b44d8:	8fb202c0 	lw	s2,704(sp)
  4b44dc:	8fb102bc 	lw	s1,700(sp)
  4b44e0:	8fb002b8 	lw	s0,696(sp)
  4b44e4:	03e00008 	jr	ra
  4b44e8:	27bd02e0 	addiu	sp,sp,736
  4b44ec:	8fc200c8 	lw	v0,200(s8)
  4b44f0:	8fc300cc 	lw	v1,204(s8)
  4b44f4:	00000000 	nop
  4b44f8:	24630001 	addiu	v1,v1,1
  4b44fc:	2c720001 	sltiu	s2,v1,1
  4b4500:	00521021 	addu	v0,v0,s2
  4b4504:	afc200c8 	sw	v0,200(s8)
  4b4508:	1000ffed 	b	4b44c0 <sha512_transform+0x634>
  4b450c:	afc300cc 	sw	v1,204(s8)

004b4510 <sha512_final>:
  4b4510:	3c1c0fb6 	lui	gp,0xfb6
  4b4514:	279c8460 	addiu	gp,gp,-31648
  4b4518:	0399e021 	addu	gp,gp,t9
  4b451c:	27bdff78 	addiu	sp,sp,-136
  4b4520:	afbc0010 	sw	gp,16(sp)
  4b4524:	afbe007c 	sw	s8,124(sp)
  4b4528:	afb30064 	sw	s3,100(sp)
  4b452c:	afb20060 	sw	s2,96(sp)
  4b4530:	afb1005c 	sw	s1,92(sp)
  4b4534:	afb00058 	sw	s0,88(sp)
  4b4538:	afbf0080 	sw	ra,128(sp)
  4b453c:	afbc0078 	sw	gp,120(sp)
  4b4540:	afb70074 	sw	s7,116(sp)
  4b4544:	afb60070 	sw	s6,112(sp)
  4b4548:	afb5006c 	sw	s5,108(sp)
  4b454c:	afb40068 	sw	s4,104(sp)
  4b4550:	0080f021 	move	s8,a0
  4b4554:	8fc600d0 	lw	a2,208(s8)
  4b4558:	8fc400c0 	lw	a0,192(s8)
  4b455c:	8fc500c4 	lw	a1,196(s8)
  4b4560:	000650c0 	sll	t2,a2,0x3
  4b4564:	8fc600c8 	lw	a2,200(s8)
  4b4568:	8fc700cc 	lw	a3,204(s8)
  4b456c:	00058582 	srl	s0,a1,0x16
  4b4570:	00079582 	srl	s2,a3,0x16
  4b4574:	00068a80 	sll	s1,a2,0xa
  4b4578:	00041280 	sll	v0,a0,0xa
  4b457c:	00501825 	or	v1,v0,s0
  4b4580:	02324825 	or	t1,s1,s2
  4b4584:	00046582 	srl	t4,a0,0x16
  4b4588:	01407021 	move	t6,t2
  4b458c:	000a7fc3 	sra	t7,t2,0x1f
  4b4590:	00075a80 	sll	t3,a3,0xa
  4b4594:	00006821 	move	t5,zero
  4b4598:	00054280 	sll	t0,a1,0xa
  4b459c:	006f2025 	or	a0,v1,t7
  4b45a0:	27b30018 	addiu	s3,sp,24
  4b45a4:	010e2825 	or	a1,t0,t6
  4b45a8:	012d3025 	or	a2,t1,t5
  4b45ac:	016c3825 	or	a3,t3,t4
  4b45b0:	24030080 	li	v1,128
  4b45b4:	afa40020 	sw	a0,32(sp)
  4b45b8:	afa50024 	sw	a1,36(sp)
  4b45bc:	afa60028 	sw	a2,40(sp)
  4b45c0:	afa7002c 	sw	a3,44(sp)
  4b45c4:	a3a30018 	sb	v1,24(sp)
  4b45c8:	02609021 	move	s2,s3
  4b45cc:	24100001 	li	s0,1
  4b45d0:	8fc300d0 	lw	v1,208(s8)
  4b45d4:	00000000 	nop
  4b45d8:	106000e3 	beqz	v1,4b4968 <sha512_final+0x458>
  4b45dc:	2e040080 	sltiu	a0,s0,128
  4b45e0:	92570000 	lbu	s7,0(s2)
  4b45e4:	03c3b021 	addu	s6,s8,v1
  4b45e8:	a2d70000 	sb	s7,0(s6)
  4b45ec:	8fd500d0 	lw	s5,208(s8)
  4b45f0:	24070080 	li	a3,128
  4b45f4:	26b40001 	addiu	s4,s5,1
  4b45f8:	afd400d0 	sw	s4,208(s8)
  4b45fc:	26520001 	addiu	s2,s2,1
  4b4600:	128700ce 	beq	s4,a3,4b493c <sha512_final+0x42c>
  4b4604:	2610ffff 	addiu	s0,s0,-1
  4b4608:	1e00fff1 	bgtz	s0,4b45d0 <sha512_final+0xc0>
  4b460c:	00000000 	nop
  4b4610:	8fc300d0 	lw	v1,208(s8)
  4b4614:	24180070 	li	t8,112
  4b4618:	10780018 	beq	v1,t8,4b467c <sha512_final+0x16c>
  4b461c:	a3a00018 	sb	zero,24(sp)
  4b4620:	02609021 	move	s2,s3
  4b4624:	24100001 	li	s0,1
  4b4628:	106000b0 	beqz	v1,4b48ec <sha512_final+0x3dc>
  4b462c:	2e190080 	sltiu	t9,s0,128
  4b4630:	924e0000 	lbu	t6,0(s2)
  4b4634:	03c34021 	addu	t0,s8,v1
  4b4638:	a10e0000 	sb	t6,0(t0)
  4b463c:	8fcd00d0 	lw	t5,208(s8)
  4b4640:	240c0080 	li	t4,128
  4b4644:	25a90001 	addiu	t1,t5,1
  4b4648:	afc900d0 	sw	t1,208(s8)
  4b464c:	26520001 	addiu	s2,s2,1
  4b4650:	112c009b 	beq	t1,t4,4b48c0 <sha512_final+0x3b0>
  4b4654:	2610ffff 	addiu	s0,s0,-1
  4b4658:	1a000004 	blez	s0,4b466c <sha512_final+0x15c>
  4b465c:	240f0070 	li	t7,112
  4b4660:	8fc300d0 	lw	v1,208(s8)
  4b4664:	1000fff0 	b	4b4628 <sha512_final+0x118>
  4b4668:	00000000 	nop
  4b466c:	8fc300d0 	lw	v1,208(s8)
  4b4670:	00000000 	nop
  4b4674:	146fffeb 	bne	v1,t7,4b4624 <sha512_final+0x114>
  4b4678:	02609021 	move	s2,s3
  4b467c:	8fac0028 	lw	t4,40(sp)
  4b4680:	8fad002c 	lw	t5,44(sp)
  4b4684:	8fa80028 	lw	t0,40(sp)
  4b4688:	8fa9002c 	lw	t1,44(sp)
  4b468c:	000d8602 	srl	s0,t5,0x18
  4b4690:	000c5a00 	sll	t3,t4,0x8
  4b4694:	000d1c02 	srl	v1,t5,0x10
  4b4698:	000c8c00 	sll	s1,t4,0x10
  4b469c:	00716025 	or	t4,v1,s1
  4b46a0:	00084a02 	srl	t1,t0,0x8
  4b46a4:	00081002 	srl	v0,t0,0x0
  4b46a8:	020b4025 	or	t0,s0,t3
  4b46ac:	8fb00028 	lw	s0,40(sp)
  4b46b0:	8fb1002c 	lw	s1,44(sp)
  4b46b4:	8fb60020 	lw	s6,32(sp)
  4b46b8:	8fb70024 	lw	s7,36(sp)
  4b46bc:	0011aa02 	srl	s5,s1,0x8
  4b46c0:	00107e00 	sll	t7,s0,0x18
  4b46c4:	02afc025 	or	t8,s5,t7
  4b46c8:	8fb40020 	lw	s4,32(sp)
  4b46cc:	8fb50024 	lw	s5,36(sp)
  4b46d0:	0016b802 	srl	s7,s6,0x0
  4b46d4:	0014aa02 	srl	s5,s4,0x8
  4b46d8:	0000a021 	move	s4,zero
  4b46dc:	afb40030 	sw	s4,48(sp)
  4b46e0:	afb50034 	sw	s5,52(sp)
  4b46e4:	8fb40020 	lw	s4,32(sp)
  4b46e8:	8fb50024 	lw	s5,36(sp)
  4b46ec:	0000b021 	move	s6,zero
  4b46f0:	8fb20020 	lw	s2,32(sp)
  4b46f4:	8fb30024 	lw	s3,36(sp)
  4b46f8:	afb60038 	sw	s6,56(sp)
  4b46fc:	afb7003c 	sw	s7,60(sp)
  4b4700:	00149a00 	sll	s3,s4,0x8
  4b4704:	0015be02 	srl	s7,s5,0x18
  4b4708:	02f3a825 	or	s5,s7,s3
  4b470c:	0014a602 	srl	s4,s4,0x18
  4b4710:	afb40040 	sw	s4,64(sp)
  4b4714:	afb50044 	sw	s5,68(sp)
  4b4718:	8fb40020 	lw	s4,32(sp)
  4b471c:	8fb50024 	lw	s5,36(sp)
  4b4720:	8fa40028 	lw	a0,40(sp)
  4b4724:	8fa5002c 	lw	a1,44(sp)
  4b4728:	00147400 	sll	t6,s4,0x10
  4b472c:	0015b402 	srl	s6,s5,0x10
  4b4730:	02cea825 	or	s5,s6,t6
  4b4734:	8fb60020 	lw	s6,32(sp)
  4b4738:	8fb70024 	lw	s7,36(sp)
  4b473c:	0014a402 	srl	s4,s4,0x10
  4b4740:	afb40048 	sw	s4,72(sp)
  4b4744:	afb5004c 	sw	s5,76(sp)
  4b4748:	0016ce00 	sll	t9,s6,0x18
  4b474c:	0017a202 	srl	s4,s7,0x8
  4b4750:	00042e02 	srl	a1,a0,0x18
  4b4754:	00043c02 	srl	a3,a0,0x10
  4b4758:	0299b825 	or	s7,s4,t9
  4b475c:	0016b202 	srl	s6,s6,0x8
  4b4760:	afb60050 	sw	s6,80(sp)
  4b4764:	afb70054 	sw	s7,84(sp)
  4b4768:	a3d80076 	sb	t8,118(s8)
  4b476c:	a3c50070 	sb	a1,112(s8)
  4b4770:	a3c70071 	sb	a3,113(s8)
  4b4774:	a3c90072 	sb	t1,114(s8)
  4b4778:	a3c80074 	sb	t0,116(s8)
  4b477c:	a3cc0075 	sb	t4,117(s8)
  4b4780:	a3c20073 	sb	v0,115(s8)
  4b4784:	93a4002f 	lbu	a0,47(sp)
  4b4788:	00123602 	srl	a2,s2,0x18
  4b478c:	00125402 	srl	t2,s2,0x10
  4b4790:	a3c40077 	sb	a0,119(s8)
  4b4794:	a3c60078 	sb	a2,120(s8)
  4b4798:	a3ca0079 	sb	t2,121(s8)
  4b479c:	93b20037 	lbu	s2,55(sp)
  4b47a0:	03c02021 	move	a0,s8
  4b47a4:	a3d2007a 	sb	s2,122(s8)
  4b47a8:	93b1003f 	lbu	s1,63(sp)
  4b47ac:	03c02821 	move	a1,s8
  4b47b0:	a3d1007b 	sb	s1,123(s8)
  4b47b4:	93b00047 	lbu	s0,71(sp)
  4b47b8:	03c0a021 	move	s4,s8
  4b47bc:	a3d0007c 	sb	s0,124(s8)
  4b47c0:	93a2004f 	lbu	v0,79(sp)
  4b47c4:	27d60080 	addiu	s6,s8,128
  4b47c8:	a3c2007d 	sb	v0,125(s8)
  4b47cc:	93a30057 	lbu	v1,87(sp)
  4b47d0:	00000000 	nop
  4b47d4:	a3c3007e 	sb	v1,126(s8)
  4b47d8:	93b30027 	lbu	s3,39(sp)
  4b47dc:	00000000 	nop
  4b47e0:	a3d3007f 	sb	s3,127(s8)
  4b47e4:	8f998054 	lw	t9,-32684(gp)
  4b47e8:	00000000 	nop
  4b47ec:	27393e8c 	addiu	t9,t9,16012
  4b47f0:	00000000 	nop
  4b47f4:	0320f809 	jalr	t9
  4b47f8:	00000000 	nop
  4b47fc:	8fbc0010 	lw	gp,16(sp)
  4b4800:	24180007 	li	t8,7
  4b4804:	8ec20000 	lw	v0,0(s6)
  4b4808:	8ec30004 	lw	v1,4(s6)
  4b480c:	2718ffff 	addiu	t8,t8,-1
  4b4810:	0003be02 	srl	s7,v1,0x18
  4b4814:	00026a00 	sll	t5,v0,0x8
  4b4818:	0003cc02 	srl	t9,v1,0x10
  4b481c:	00027400 	sll	t6,v0,0x10
  4b4820:	00033a02 	srl	a3,v1,0x8
  4b4824:	00022e00 	sll	a1,v0,0x18
  4b4828:	00024e02 	srl	t1,v0,0x18
  4b482c:	00024402 	srl	t0,v0,0x10
  4b4830:	00026202 	srl	t4,v0,0x8
  4b4834:	00022002 	srl	a0,v0,0x0
  4b4838:	02ed3025 	or	a2,s7,t5
  4b483c:	032e5025 	or	t2,t9,t6
  4b4840:	00e59025 	or	s2,a3,a1
  4b4844:	a2890000 	sb	t1,0(s4)
  4b4848:	a2880001 	sb	t0,1(s4)
  4b484c:	a28c0002 	sb	t4,2(s4)
  4b4850:	a2840003 	sb	a0,3(s4)
  4b4854:	a2860004 	sb	a2,4(s4)
  4b4858:	a28a0005 	sb	t2,5(s4)
  4b485c:	a2920006 	sb	s2,6(s4)
  4b4860:	a2830007 	sb	v1,7(s4)
  4b4864:	26d60008 	addiu	s6,s6,8
  4b4868:	0701ffe6 	bgez	t8,4b4804 <sha512_final+0x2f4>
  4b486c:	26940008 	addiu	s4,s4,8
  4b4870:	27c40040 	addiu	a0,s8,64
  4b4874:	00002821 	move	a1,zero
  4b4878:	24060098 	li	a2,152
  4b487c:	8f998500 	lw	t9,-31488(gp)
  4b4880:	00000000 	nop
  4b4884:	0320f809 	jalr	t9
  4b4888:	00000000 	nop
  4b488c:	8fbc0010 	lw	gp,16(sp)
  4b4890:	8fbf0080 	lw	ra,128(sp)
  4b4894:	8fbe007c 	lw	s8,124(sp)
  4b4898:	8fb70074 	lw	s7,116(sp)
  4b489c:	8fb60070 	lw	s6,112(sp)
  4b48a0:	8fb5006c 	lw	s5,108(sp)
  4b48a4:	8fb40068 	lw	s4,104(sp)
  4b48a8:	8fb30064 	lw	s3,100(sp)
  4b48ac:	8fb20060 	lw	s2,96(sp)
  4b48b0:	8fb1005c 	lw	s1,92(sp)
  4b48b4:	8fb00058 	lw	s0,88(sp)
  4b48b8:	03e00008 	jr	ra
  4b48bc:	27bd0088 	addiu	sp,sp,136
  4b48c0:	03c02021 	move	a0,s8
  4b48c4:	03c02821 	move	a1,s8
  4b48c8:	8f998054 	lw	t9,-32684(gp)
  4b48cc:	00000000 	nop
  4b48d0:	27393e8c 	addiu	t9,t9,16012
  4b48d4:	00000000 	nop
  4b48d8:	0320f809 	jalr	t9
  4b48dc:	00000000 	nop
  4b48e0:	8fbc0010 	lw	gp,16(sp)
  4b48e4:	1000ff5c 	b	4b4658 <sha512_final+0x148>
  4b48e8:	afc000d0 	sw	zero,208(s8)
  4b48ec:	1720000f 	bnez	t9,4b492c <sha512_final+0x41c>
  4b48f0:	00000000 	nop
  4b48f4:	02402821 	move	a1,s2
  4b48f8:	03c02021 	move	a0,s8
  4b48fc:	2610ff80 	addiu	s0,s0,-128
  4b4900:	8f998054 	lw	t9,-32684(gp)
  4b4904:	00000000 	nop
  4b4908:	27393e8c 	addiu	t9,t9,16012
  4b490c:	00000000 	nop
  4b4910:	0320f809 	jalr	t9
  4b4914:	00000000 	nop
  4b4918:	8fbc0010 	lw	gp,16(sp)
  4b491c:	2e0b0080 	sltiu	t3,s0,128
  4b4920:	1160fff4 	beqz	t3,4b48f4 <sha512_final+0x3e4>
  4b4924:	26520080 	addiu	s2,s2,128
  4b4928:	8fc300d0 	lw	v1,208(s8)
  4b492c:	1600ff40 	bnez	s0,4b4630 <sha512_final+0x120>
  4b4930:	240f0070 	li	t7,112
  4b4934:	1000ff4f 	b	4b4674 <sha512_final+0x164>
  4b4938:	00000000 	nop
  4b493c:	03c02021 	move	a0,s8
  4b4940:	03c02821 	move	a1,s8
  4b4944:	8f998054 	lw	t9,-32684(gp)
  4b4948:	00000000 	nop
  4b494c:	27393e8c 	addiu	t9,t9,16012
  4b4950:	00000000 	nop
  4b4954:	0320f809 	jalr	t9
  4b4958:	00000000 	nop
  4b495c:	8fbc0010 	lw	gp,16(sp)
  4b4960:	1000ff29 	b	4b4608 <sha512_final+0xf8>
  4b4964:	afc000d0 	sw	zero,208(s8)
  4b4968:	1480000e 	bnez	a0,4b49a4 <sha512_final+0x494>
  4b496c:	00000000 	nop
  4b4970:	02402821 	move	a1,s2
  4b4974:	03c02021 	move	a0,s8
  4b4978:	2610ff80 	addiu	s0,s0,-128
  4b497c:	8f998054 	lw	t9,-32684(gp)
  4b4980:	00000000 	nop
  4b4984:	27393e8c 	addiu	t9,t9,16012
  4b4988:	00000000 	nop
  4b498c:	0320f809 	jalr	t9
  4b4990:	00000000 	nop
  4b4994:	8fbc0010 	lw	gp,16(sp)
  4b4998:	2e050080 	sltiu	a1,s0,128
  4b499c:	10a0fff4 	beqz	a1,4b4970 <sha512_final+0x460>
  4b49a0:	26520080 	addiu	s2,s2,128
  4b49a4:	1200ff1a 	beqz	s0,4b4610 <sha512_final+0x100>
  4b49a8:	00000000 	nop
  4b49ac:	8fc300d0 	lw	v1,208(s8)
  4b49b0:	1000ff0b 	b	4b45e0 <sha512_final+0xd0>
  4b49b4:	00000000 	nop

004b49b8 <sha256_init>:
  4b49b8:	3c1c0fb5 	lui	gp,0xfb5
  4b49bc:	279c7fb8 	addiu	gp,gp,32696
  4b49c0:	0399e021 	addu	gp,gp,t9
  4b49c4:	8f83804c 	lw	v1,-32692(gp)
  4b49c8:	00000000 	nop
  4b49cc:	24635470 	addiu	v1,v1,21616
  4b49d0:	00000000 	nop
  4b49d4:	8c660004 	lw	a2,4(v1)
  4b49d8:	8c670008 	lw	a3,8(v1)
  4b49dc:	8c6c001c 	lw	t4,28(v1)
  4b49e0:	8c650000 	lw	a1,0(v1)
  4b49e4:	8c68000c 	lw	t0,12(v1)
  4b49e8:	8c690010 	lw	t1,16(v1)
  4b49ec:	8c6a0014 	lw	t2,20(v1)
  4b49f0:	8c6b0018 	lw	t3,24(v1)
  4b49f4:	ac860044 	sw	a2,68(a0)
  4b49f8:	ac870048 	sw	a3,72(a0)
  4b49fc:	00003021 	move	a2,zero
  4b4a00:	00003821 	move	a3,zero
  4b4a04:	ac850040 	sw	a1,64(a0)
  4b4a08:	ac88004c 	sw	t0,76(a0)
  4b4a0c:	ac890050 	sw	t1,80(a0)
  4b4a10:	ac8a0054 	sw	t2,84(a0)
  4b4a14:	ac8b0058 	sw	t3,88(a0)
  4b4a18:	ac8c005c 	sw	t4,92(a0)
  4b4a1c:	ac800068 	sw	zero,104(a0)
  4b4a20:	ac860060 	sw	a2,96(a0)
  4b4a24:	03e00008 	jr	ra
  4b4a28:	ac870064 	sw	a3,100(a0)

004b4a2c <sha256_write>:
  4b4a2c:	3c1c0fb5 	lui	gp,0xfb5
  4b4a30:	279c7f44 	addiu	gp,gp,32580
  4b4a34:	0399e021 	addu	gp,gp,t9
  4b4a38:	27bdffd0 	addiu	sp,sp,-48
  4b4a3c:	afbc0010 	sw	gp,16(sp)
  4b4a40:	afb00018 	sw	s0,24(sp)
  4b4a44:	00c08021 	move	s0,a2
  4b4a48:	afb20020 	sw	s2,32(sp)
  4b4a4c:	afb1001c 	sw	s1,28(sp)
  4b4a50:	afbf0028 	sw	ra,40(sp)
  4b4a54:	afbc0024 	sw	gp,36(sp)
  4b4a58:	00809021 	move	s2,a0
  4b4a5c:	1a000011 	blez	s0,4b4aa4 <sha256_write+0x78>
  4b4a60:	00a08821 	move	s1,a1
  4b4a64:	8e420068 	lw	v0,104(s2)
  4b4a68:	00000000 	nop
  4b4a6c:	1040001e 	beqz	v0,4b4ae8 <sha256_write+0xbc>
  4b4a70:	2e030040 	sltiu	v1,s0,64
  4b4a74:	92270000 	lbu	a3,0(s1)
  4b4a78:	02423021 	addu	a2,s2,v0
  4b4a7c:	a0c70000 	sb	a3,0(a2)
  4b4a80:	8e450068 	lw	a1,104(s2)
  4b4a84:	24040040 	li	a0,64
  4b4a88:	24a20001 	addiu	v0,a1,1
  4b4a8c:	ae420068 	sw	v0,104(s2)
  4b4a90:	26310001 	addiu	s1,s1,1
  4b4a94:	10440009 	beq	v0,a0,4b4abc <sha256_write+0x90>
  4b4a98:	2610ffff 	addiu	s0,s0,-1
  4b4a9c:	1e00fff1 	bgtz	s0,4b4a64 <sha256_write+0x38>
  4b4aa0:	00000000 	nop
  4b4aa4:	8fbf0028 	lw	ra,40(sp)
  4b4aa8:	8fb20020 	lw	s2,32(sp)
  4b4aac:	8fb1001c 	lw	s1,28(sp)
  4b4ab0:	8fb00018 	lw	s0,24(sp)
  4b4ab4:	03e00008 	jr	ra
  4b4ab8:	27bd0030 	addiu	sp,sp,48
  4b4abc:	02402021 	move	a0,s2
  4b4ac0:	02402821 	move	a1,s2
  4b4ac4:	8f998054 	lw	t9,-32684(gp)
  4b4ac8:	00000000 	nop
  4b4acc:	273938e0 	addiu	t9,t9,14560
  4b4ad0:	00000000 	nop
  4b4ad4:	0320f809 	jalr	t9
  4b4ad8:	00000000 	nop
  4b4adc:	8fbc0010 	lw	gp,16(sp)
  4b4ae0:	1000ffee 	b	4b4a9c <sha256_write+0x70>
  4b4ae4:	ae400068 	sw	zero,104(s2)
  4b4ae8:	1460000e 	bnez	v1,4b4b24 <sha256_write+0xf8>
  4b4aec:	00000000 	nop
  4b4af0:	02202821 	move	a1,s1
  4b4af4:	02402021 	move	a0,s2
  4b4af8:	2610ffc0 	addiu	s0,s0,-64
  4b4afc:	8f998054 	lw	t9,-32684(gp)
  4b4b00:	00000000 	nop
  4b4b04:	273938e0 	addiu	t9,t9,14560
  4b4b08:	00000000 	nop
  4b4b0c:	0320f809 	jalr	t9
  4b4b10:	00000000 	nop
  4b4b14:	8fbc0010 	lw	gp,16(sp)
  4b4b18:	2e030040 	sltiu	v1,s0,64
  4b4b1c:	1060fff4 	beqz	v1,4b4af0 <sha256_write+0xc4>
  4b4b20:	26310040 	addiu	s1,s1,64
  4b4b24:	1200ffdf 	beqz	s0,4b4aa4 <sha256_write+0x78>
  4b4b28:	00000000 	nop
  4b4b2c:	8e420068 	lw	v0,104(s2)
  4b4b30:	1000ffd0 	b	4b4a74 <sha256_write+0x48>
  4b4b34:	00000000 	nop

004b4b38 <sha256_hash_buffer>:
  4b4b38:	3c1c0fb5 	lui	gp,0xfb5
  4b4b3c:	279c7e38 	addiu	gp,gp,32312
  4b4b40:	0399e021 	addu	gp,gp,t9
  4b4b44:	27bdff58 	addiu	sp,sp,-168
  4b4b48:	afbc0010 	sw	gp,16(sp)
  4b4b4c:	afb30094 	sw	s3,148(sp)
  4b4b50:	00e09821 	move	s3,a3
  4b4b54:	afb40098 	sw	s4,152(sp)
  4b4b58:	afb20090 	sw	s2,144(sp)
  4b4b5c:	afb00088 	sw	s0,136(sp)
  4b4b60:	afbf00a0 	sw	ra,160(sp)
  4b4b64:	afbc009c 	sw	gp,156(sp)
  4b4b68:	afb1008c 	sw	s1,140(sp)
  4b4b6c:	00809021 	move	s2,a0
  4b4b70:	00a08021 	move	s0,a1
  4b4b74:	1a600064 	blez	s3,4b4d08 <sha256_hash_buffer+0x1d0>
  4b4b78:	00c0a021 	move	s4,a2
  4b4b7c:	02802021 	move	a0,s4
  4b4b80:	00002821 	move	a1,zero
  4b4b84:	02603021 	move	a2,s3
  4b4b88:	8f998500 	lw	t9,-31488(gp)
  4b4b8c:	00000000 	nop
  4b4b90:	0320f809 	jalr	t9
  4b4b94:	00000000 	nop
  4b4b98:	8fbc0010 	lw	gp,16(sp)
  4b4b9c:	2a620021 	slti	v0,s3,33
  4b4ba0:	14400002 	bnez	v0,4b4bac <sha256_hash_buffer+0x74>
  4b4ba4:	00000000 	nop
  4b4ba8:	24130020 	li	s3,32
  4b4bac:	8f85804c 	lw	a1,-32692(gp)
  4b4bb0:	00000000 	nop
  4b4bb4:	24a55470 	addiu	a1,a1,21616
  4b4bb8:	8ca50014 	lw	a1,20(a1)
  4b4bbc:	8f8a804c 	lw	t2,-32692(gp)
  4b4bc0:	00000000 	nop
  4b4bc4:	254a5470 	addiu	t2,t2,21616
  4b4bc8:	8d4a0000 	lw	t2,0(t2)
  4b4bcc:	8f89804c 	lw	t1,-32692(gp)
  4b4bd0:	00000000 	nop
  4b4bd4:	25295470 	addiu	t1,t1,21616
  4b4bd8:	8d290004 	lw	t1,4(t1)
  4b4bdc:	8f88804c 	lw	t0,-32692(gp)
  4b4be0:	00000000 	nop
  4b4be4:	25085470 	addiu	t0,t0,21616
  4b4be8:	8d080008 	lw	t0,8(t0)
  4b4bec:	8f87804c 	lw	a3,-32692(gp)
  4b4bf0:	00000000 	nop
  4b4bf4:	24e75470 	addiu	a3,a3,21616
  4b4bf8:	8ce7000c 	lw	a3,12(a3)
  4b4bfc:	8f86804c 	lw	a2,-32692(gp)
  4b4c00:	00000000 	nop
  4b4c04:	24c65470 	addiu	a2,a2,21616
  4b4c08:	8cc60010 	lw	a2,16(a2)
  4b4c0c:	8f83804c 	lw	v1,-32692(gp)
  4b4c10:	00000000 	nop
  4b4c14:	24635470 	addiu	v1,v1,21616
  4b4c18:	8c630018 	lw	v1,24(v1)
  4b4c1c:	8f82804c 	lw	v0,-32692(gp)
  4b4c20:	00000000 	nop
  4b4c24:	24425470 	addiu	v0,v0,21616
  4b4c28:	8c42001c 	lw	v0,28(v0)
  4b4c2c:	02008821 	move	s1,s0
  4b4c30:	afa5006c 	sw	a1,108(sp)
  4b4c34:	00002021 	move	a0,zero
  4b4c38:	00002821 	move	a1,zero
  4b4c3c:	02408021 	move	s0,s2
  4b4c40:	afaa0058 	sw	t2,88(sp)
  4b4c44:	afa9005c 	sw	t1,92(sp)
  4b4c48:	afa80060 	sw	t0,96(sp)
  4b4c4c:	afa70064 	sw	a3,100(sp)
  4b4c50:	afa60068 	sw	a2,104(sp)
  4b4c54:	afa30070 	sw	v1,112(sp)
  4b4c58:	afa20074 	sw	v0,116(sp)
  4b4c5c:	afa40078 	sw	a0,120(sp)
  4b4c60:	afa5007c 	sw	a1,124(sp)
  4b4c64:	afa00080 	sw	zero,128(sp)
  4b4c68:	1a200011 	blez	s1,4b4cb0 <sha256_hash_buffer+0x178>
  4b4c6c:	27b20018 	addiu	s2,sp,24
  4b4c70:	8e420068 	lw	v0,104(s2)
  4b4c74:	00000000 	nop
  4b4c78:	10400036 	beqz	v0,4b4d54 <sha256_hash_buffer+0x21c>
  4b4c7c:	2e2b0040 	sltiu	t3,s1,64
  4b4c80:	92190000 	lbu	t9,0(s0)
  4b4c84:	0242c021 	addu	t8,s2,v0
  4b4c88:	a3190000 	sb	t9,0(t8)
  4b4c8c:	8e4f0068 	lw	t7,104(s2)
  4b4c90:	240d0040 	li	t5,64
  4b4c94:	25ee0001 	addiu	t6,t7,1
  4b4c98:	ae4e0068 	sw	t6,104(s2)
  4b4c9c:	26100001 	addiu	s0,s0,1
  4b4ca0:	11cd0021 	beq	t6,t5,4b4d28 <sha256_hash_buffer+0x1f0>
  4b4ca4:	2631ffff 	addiu	s1,s1,-1
  4b4ca8:	1e20fff1 	bgtz	s1,4b4c70 <sha256_hash_buffer+0x138>
  4b4cac:	00000000 	nop
  4b4cb0:	27a40018 	addiu	a0,sp,24
  4b4cb4:	8f9981c8 	lw	t9,-32312(gp)
  4b4cb8:	00000000 	nop
  4b4cbc:	0320f809 	jalr	t9
  4b4cc0:	00000000 	nop
  4b4cc4:	8fbc0010 	lw	gp,16(sp)
  4b4cc8:	02802021 	move	a0,s4
  4b4ccc:	02402821 	move	a1,s2
  4b4cd0:	02603021 	move	a2,s3
  4b4cd4:	8f998a30 	lw	t9,-30160(gp)
  4b4cd8:	00000000 	nop
  4b4cdc:	0320f809 	jalr	t9
  4b4ce0:	00000000 	nop
  4b4ce4:	8fbc0010 	lw	gp,16(sp)
  4b4ce8:	02402021 	move	a0,s2
  4b4cec:	00002821 	move	a1,zero
  4b4cf0:	24060070 	li	a2,112
  4b4cf4:	8f998500 	lw	t9,-31488(gp)
  4b4cf8:	00000000 	nop
  4b4cfc:	0320f809 	jalr	t9
  4b4d00:	00000000 	nop
  4b4d04:	8fbc0010 	lw	gp,16(sp)
  4b4d08:	8fbf00a0 	lw	ra,160(sp)
  4b4d0c:	8fb40098 	lw	s4,152(sp)
  4b4d10:	8fb30094 	lw	s3,148(sp)
  4b4d14:	8fb20090 	lw	s2,144(sp)
  4b4d18:	8fb1008c 	lw	s1,140(sp)
  4b4d1c:	8fb00088 	lw	s0,136(sp)
  4b4d20:	03e00008 	jr	ra
  4b4d24:	27bd00a8 	addiu	sp,sp,168
  4b4d28:	02402021 	move	a0,s2
  4b4d2c:	02402821 	move	a1,s2
  4b4d30:	8f998054 	lw	t9,-32684(gp)
  4b4d34:	00000000 	nop
  4b4d38:	273938e0 	addiu	t9,t9,14560
  4b4d3c:	00000000 	nop
  4b4d40:	0320f809 	jalr	t9
  4b4d44:	00000000 	nop
  4b4d48:	8fbc0010 	lw	gp,16(sp)
  4b4d4c:	1000ffd6 	b	4b4ca8 <sha256_hash_buffer+0x170>
  4b4d50:	ae400068 	sw	zero,104(s2)
  4b4d54:	1560000e 	bnez	t3,4b4d90 <sha256_hash_buffer+0x258>
  4b4d58:	00000000 	nop
  4b4d5c:	02002821 	move	a1,s0
  4b4d60:	02402021 	move	a0,s2
  4b4d64:	2631ffc0 	addiu	s1,s1,-64
  4b4d68:	8f998054 	lw	t9,-32684(gp)
  4b4d6c:	00000000 	nop
  4b4d70:	273938e0 	addiu	t9,t9,14560
  4b4d74:	00000000 	nop
  4b4d78:	0320f809 	jalr	t9
  4b4d7c:	00000000 	nop
  4b4d80:	8fbc0010 	lw	gp,16(sp)
  4b4d84:	2e2c0040 	sltiu	t4,s1,64
  4b4d88:	1180fff4 	beqz	t4,4b4d5c <sha256_hash_buffer+0x224>
  4b4d8c:	26100040 	addiu	s0,s0,64
  4b4d90:	1220ffc8 	beqz	s1,4b4cb4 <sha256_hash_buffer+0x17c>
  4b4d94:	27a40018 	addiu	a0,sp,24
  4b4d98:	8e420068 	lw	v0,104(s2)
  4b4d9c:	1000ffb8 	b	4b4c80 <sha256_hash_buffer+0x148>
  4b4da0:	00000000 	nop

004b4da4 <sha512_init>:
  4b4da4:	3c1c0fb5 	lui	gp,0xfb5
  4b4da8:	279c7bcc 	addiu	gp,gp,31692
  4b4dac:	0399e021 	addu	gp,gp,t9
  4b4db0:	8f83804c 	lw	v1,-32692(gp)
  4b4db4:	00000000 	nop
  4b4db8:	24635590 	addiu	v1,v1,21904
  4b4dbc:	24820080 	addiu	v0,a0,128
  4b4dc0:	24650040 	addiu	a1,v1,64
  4b4dc4:	8c660000 	lw	a2,0(v1)
  4b4dc8:	8c670004 	lw	a3,4(v1)
  4b4dcc:	8c680008 	lw	t0,8(v1)
  4b4dd0:	8c69000c 	lw	t1,12(v1)
  4b4dd4:	ac460000 	sw	a2,0(v0)
  4b4dd8:	ac470004 	sw	a3,4(v0)
  4b4ddc:	ac480008 	sw	t0,8(v0)
  4b4de0:	ac49000c 	sw	t1,12(v0)
  4b4de4:	24630010 	addiu	v1,v1,16
  4b4de8:	1465fff6 	bne	v1,a1,4b4dc4 <sha512_init+0x20>
  4b4dec:	24420010 	addiu	v0,v0,16
  4b4df0:	00003021 	move	a2,zero
  4b4df4:	00003821 	move	a3,zero
  4b4df8:	ac8000d0 	sw	zero,208(a0)
  4b4dfc:	ac8600c0 	sw	a2,192(a0)
  4b4e00:	ac8700c4 	sw	a3,196(a0)
  4b4e04:	ac8600c8 	sw	a2,200(a0)
  4b4e08:	03e00008 	jr	ra
  4b4e0c:	ac8700cc 	sw	a3,204(a0)

004b4e10 <sha512_write>:
  4b4e10:	3c1c0fb5 	lui	gp,0xfb5
  4b4e14:	279c7b60 	addiu	gp,gp,31584
  4b4e18:	0399e021 	addu	gp,gp,t9
  4b4e1c:	27bdffd0 	addiu	sp,sp,-48
  4b4e20:	afbc0010 	sw	gp,16(sp)
  4b4e24:	afb00018 	sw	s0,24(sp)
  4b4e28:	00c08021 	move	s0,a2
  4b4e2c:	afb20020 	sw	s2,32(sp)
  4b4e30:	afb1001c 	sw	s1,28(sp)
  4b4e34:	afbf0028 	sw	ra,40(sp)
  4b4e38:	afbc0024 	sw	gp,36(sp)
  4b4e3c:	00809021 	move	s2,a0
  4b4e40:	1a000011 	blez	s0,4b4e88 <sha512_write+0x78>
  4b4e44:	00a08821 	move	s1,a1
  4b4e48:	8e4200d0 	lw	v0,208(s2)
  4b4e4c:	00000000 	nop
  4b4e50:	1040001e 	beqz	v0,4b4ecc <sha512_write+0xbc>
  4b4e54:	2e030080 	sltiu	v1,s0,128
  4b4e58:	92270000 	lbu	a3,0(s1)
  4b4e5c:	02423021 	addu	a2,s2,v0
  4b4e60:	a0c70000 	sb	a3,0(a2)
  4b4e64:	8e4500d0 	lw	a1,208(s2)
  4b4e68:	24040080 	li	a0,128
  4b4e6c:	24a20001 	addiu	v0,a1,1
  4b4e70:	ae4200d0 	sw	v0,208(s2)
  4b4e74:	26310001 	addiu	s1,s1,1
  4b4e78:	10440009 	beq	v0,a0,4b4ea0 <sha512_write+0x90>
  4b4e7c:	2610ffff 	addiu	s0,s0,-1
  4b4e80:	1e00fff1 	bgtz	s0,4b4e48 <sha512_write+0x38>
  4b4e84:	00000000 	nop
  4b4e88:	8fbf0028 	lw	ra,40(sp)
  4b4e8c:	8fb20020 	lw	s2,32(sp)
  4b4e90:	8fb1001c 	lw	s1,28(sp)
  4b4e94:	8fb00018 	lw	s0,24(sp)
  4b4e98:	03e00008 	jr	ra
  4b4e9c:	27bd0030 	addiu	sp,sp,48
  4b4ea0:	02402021 	move	a0,s2
  4b4ea4:	02402821 	move	a1,s2
  4b4ea8:	8f998054 	lw	t9,-32684(gp)
  4b4eac:	00000000 	nop
  4b4eb0:	27393e8c 	addiu	t9,t9,16012
  4b4eb4:	00000000 	nop
  4b4eb8:	0320f809 	jalr	t9
  4b4ebc:	00000000 	nop
  4b4ec0:	8fbc0010 	lw	gp,16(sp)
  4b4ec4:	1000ffee 	b	4b4e80 <sha512_write+0x70>
  4b4ec8:	ae4000d0 	sw	zero,208(s2)
  4b4ecc:	1460000e 	bnez	v1,4b4f08 <sha512_write+0xf8>
  4b4ed0:	00000000 	nop
  4b4ed4:	02202821 	move	a1,s1
  4b4ed8:	02402021 	move	a0,s2
  4b4edc:	2610ff80 	addiu	s0,s0,-128
  4b4ee0:	8f998054 	lw	t9,-32684(gp)
  4b4ee4:	00000000 	nop
  4b4ee8:	27393e8c 	addiu	t9,t9,16012
  4b4eec:	00000000 	nop
  4b4ef0:	0320f809 	jalr	t9
  4b4ef4:	00000000 	nop
  4b4ef8:	8fbc0010 	lw	gp,16(sp)
  4b4efc:	2e030080 	sltiu	v1,s0,128
  4b4f00:	1060fff4 	beqz	v1,4b4ed4 <sha512_write+0xc4>
  4b4f04:	26310080 	addiu	s1,s1,128
  4b4f08:	1200ffdf 	beqz	s0,4b4e88 <sha512_write+0x78>
  4b4f0c:	00000000 	nop
  4b4f10:	8e4200d0 	lw	v0,208(s2)
  4b4f14:	1000ffd0 	b	4b4e58 <sha512_write+0x48>
  4b4f18:	00000000 	nop

004b4f1c <sha512_hash_buffer>:
  4b4f1c:	3c1c0fb5 	lui	gp,0xfb5
  4b4f20:	279c7a54 	addiu	gp,gp,31316
  4b4f24:	0399e021 	addu	gp,gp,t9
  4b4f28:	27bdfef0 	addiu	sp,sp,-272
  4b4f2c:	afbc0010 	sw	gp,16(sp)
  4b4f30:	afb300fc 	sw	s3,252(sp)
  4b4f34:	00e09821 	move	s3,a3
  4b4f38:	afb40100 	sw	s4,256(sp)
  4b4f3c:	afb100f4 	sw	s1,244(sp)
  4b4f40:	afb000f0 	sw	s0,240(sp)
  4b4f44:	afbf0108 	sw	ra,264(sp)
  4b4f48:	afbc0104 	sw	gp,260(sp)
  4b4f4c:	afb200f8 	sw	s2,248(sp)
  4b4f50:	00808821 	move	s1,a0
  4b4f54:	00a08021 	move	s0,a1
  4b4f58:	1a60004c 	blez	s3,4b508c <sha512_hash_buffer+0x170>
  4b4f5c:	00c0a021 	move	s4,a2
  4b4f60:	02802021 	move	a0,s4
  4b4f64:	00002821 	move	a1,zero
  4b4f68:	02603021 	move	a2,s3
  4b4f6c:	8f998500 	lw	t9,-31488(gp)
  4b4f70:	00000000 	nop
  4b4f74:	0320f809 	jalr	t9
  4b4f78:	00000000 	nop
  4b4f7c:	8fbc0010 	lw	gp,16(sp)
  4b4f80:	2a620041 	slti	v0,s3,65
  4b4f84:	14400002 	bnez	v0,4b4f90 <sha512_hash_buffer+0x74>
  4b4f88:	00000000 	nop
  4b4f8c:	24130040 	li	s3,64
  4b4f90:	8f82804c 	lw	v0,-32692(gp)
  4b4f94:	00000000 	nop
  4b4f98:	24425590 	addiu	v0,v0,21904
  4b4f9c:	27b20018 	addiu	s2,sp,24
  4b4fa0:	27a30098 	addiu	v1,sp,152
  4b4fa4:	24440040 	addiu	a0,v0,64
  4b4fa8:	8c450000 	lw	a1,0(v0)
  4b4fac:	8c460004 	lw	a2,4(v0)
  4b4fb0:	8c470008 	lw	a3,8(v0)
  4b4fb4:	8c48000c 	lw	t0,12(v0)
  4b4fb8:	ac650000 	sw	a1,0(v1)
  4b4fbc:	ac660004 	sw	a2,4(v1)
  4b4fc0:	ac670008 	sw	a3,8(v1)
  4b4fc4:	ac68000c 	sw	t0,12(v1)
  4b4fc8:	24420010 	addiu	v0,v0,16
  4b4fcc:	1444fff6 	bne	v0,a0,4b4fa8 <sha512_hash_buffer+0x8c>
  4b4fd0:	24630010 	addiu	v1,v1,16
  4b4fd4:	00002021 	move	a0,zero
  4b4fd8:	00002821 	move	a1,zero
  4b4fdc:	ae4400c0 	sw	a0,192(s2)
  4b4fe0:	ae4500c4 	sw	a1,196(s2)
  4b4fe4:	ae4400c8 	sw	a0,200(s2)
  4b4fe8:	ae4500cc 	sw	a1,204(s2)
  4b4fec:	1a000011 	blez	s0,4b5034 <sha512_hash_buffer+0x118>
  4b4ff0:	ae4000d0 	sw	zero,208(s2)
  4b4ff4:	8e4200d0 	lw	v0,208(s2)
  4b4ff8:	00000000 	nop
  4b4ffc:	10400036 	beqz	v0,4b50d8 <sha512_hash_buffer+0x1bc>
  4b5000:	00000000 	nop
  4b5004:	92290000 	lbu	t1,0(s1)
  4b5008:	02424021 	addu	t0,s2,v0
  4b500c:	a1090000 	sb	t1,0(t0)
  4b5010:	8e4700d0 	lw	a3,208(s2)
  4b5014:	24060080 	li	a2,128
  4b5018:	24e20001 	addiu	v0,a3,1
  4b501c:	ae4200d0 	sw	v0,208(s2)
  4b5020:	26310001 	addiu	s1,s1,1
  4b5024:	10460021 	beq	v0,a2,4b50ac <sha512_hash_buffer+0x190>
  4b5028:	2610ffff 	addiu	s0,s0,-1
  4b502c:	1e00fff1 	bgtz	s0,4b4ff4 <sha512_hash_buffer+0xd8>
  4b5030:	00000000 	nop
  4b5034:	27a40018 	addiu	a0,sp,24
  4b5038:	8f998280 	lw	t9,-32128(gp)
  4b503c:	00000000 	nop
  4b5040:	0320f809 	jalr	t9
  4b5044:	00000000 	nop
  4b5048:	8fbc0010 	lw	gp,16(sp)
  4b504c:	02802021 	move	a0,s4
  4b5050:	02402821 	move	a1,s2
  4b5054:	02603021 	move	a2,s3
  4b5058:	8f998a30 	lw	t9,-30160(gp)
  4b505c:	00000000 	nop
  4b5060:	0320f809 	jalr	t9
  4b5064:	00000000 	nop
  4b5068:	8fbc0010 	lw	gp,16(sp)
  4b506c:	02402021 	move	a0,s2
  4b5070:	00002821 	move	a1,zero
  4b5074:	240600d8 	li	a2,216
  4b5078:	8f998500 	lw	t9,-31488(gp)
  4b507c:	00000000 	nop
  4b5080:	0320f809 	jalr	t9
  4b5084:	00000000 	nop
  4b5088:	8fbc0010 	lw	gp,16(sp)
  4b508c:	8fbf0108 	lw	ra,264(sp)
  4b5090:	8fb40100 	lw	s4,256(sp)
  4b5094:	8fb300fc 	lw	s3,252(sp)
  4b5098:	8fb200f8 	lw	s2,248(sp)
  4b509c:	8fb100f4 	lw	s1,244(sp)
  4b50a0:	8fb000f0 	lw	s0,240(sp)
  4b50a4:	03e00008 	jr	ra
  4b50a8:	27bd0110 	addiu	sp,sp,272
  4b50ac:	02402021 	move	a0,s2
  4b50b0:	02402821 	move	a1,s2
  4b50b4:	8f998054 	lw	t9,-32684(gp)
  4b50b8:	00000000 	nop
  4b50bc:	27393e8c 	addiu	t9,t9,16012
  4b50c0:	00000000 	nop
  4b50c4:	0320f809 	jalr	t9
  4b50c8:	00000000 	nop
  4b50cc:	8fbc0010 	lw	gp,16(sp)
  4b50d0:	1000ffd6 	b	4b502c <sha512_hash_buffer+0x110>
  4b50d4:	ae4000d0 	sw	zero,208(s2)
  4b50d8:	2e030080 	sltiu	v1,s0,128
  4b50dc:	1460000e 	bnez	v1,4b5118 <sha512_hash_buffer+0x1fc>
  4b50e0:	00000000 	nop
  4b50e4:	02202821 	move	a1,s1
  4b50e8:	02402021 	move	a0,s2
  4b50ec:	2610ff80 	addiu	s0,s0,-128
  4b50f0:	8f998054 	lw	t9,-32684(gp)
  4b50f4:	00000000 	nop
  4b50f8:	27393e8c 	addiu	t9,t9,16012
  4b50fc:	00000000 	nop
  4b5100:	0320f809 	jalr	t9
  4b5104:	00000000 	nop
  4b5108:	8fbc0010 	lw	gp,16(sp)
  4b510c:	2e050080 	sltiu	a1,s0,128
  4b5110:	10a0fff4 	beqz	a1,4b50e4 <sha512_hash_buffer+0x1c8>
  4b5114:	26310080 	addiu	s1,s1,128
  4b5118:	1200ffc7 	beqz	s0,4b5038 <sha512_hash_buffer+0x11c>
  4b511c:	27a40018 	addiu	a0,sp,24
  4b5120:	8e4200d0 	lw	v0,208(s2)
  4b5124:	1000ffb7 	b	4b5004 <sha512_hash_buffer+0xe8>
  4b5128:	00000000 	nop

004b512c <sha384_init>:
  4b512c:	3c1c0fb5 	lui	gp,0xfb5
  4b5130:	279c7844 	addiu	gp,gp,30788
  4b5134:	0399e021 	addu	gp,gp,t9
  4b5138:	8f83804c 	lw	v1,-32692(gp)
  4b513c:	00000000 	nop
  4b5140:	246355d0 	addiu	v1,v1,21968
  4b5144:	24820080 	addiu	v0,a0,128
  4b5148:	24650040 	addiu	a1,v1,64
  4b514c:	8c660000 	lw	a2,0(v1)
  4b5150:	8c670004 	lw	a3,4(v1)
  4b5154:	8c680008 	lw	t0,8(v1)
  4b5158:	8c69000c 	lw	t1,12(v1)
  4b515c:	ac460000 	sw	a2,0(v0)
  4b5160:	ac470004 	sw	a3,4(v0)
  4b5164:	ac480008 	sw	t0,8(v0)
  4b5168:	ac49000c 	sw	t1,12(v0)
  4b516c:	24630010 	addiu	v1,v1,16
  4b5170:	1465fff6 	bne	v1,a1,4b514c <sha384_init+0x20>
  4b5174:	24420010 	addiu	v0,v0,16
  4b5178:	00003021 	move	a2,zero
  4b517c:	00003821 	move	a3,zero
  4b5180:	ac8000d0 	sw	zero,208(a0)
  4b5184:	ac8600c0 	sw	a2,192(a0)
  4b5188:	ac8700c4 	sw	a3,196(a0)
  4b518c:	ac8600c8 	sw	a2,200(a0)
  4b5190:	03e00008 	jr	ra
  4b5194:	ac8700cc 	sw	a3,204(a0)

004b5198 <sha384_hash_buffer>:
  4b5198:	3c1c0fb5 	lui	gp,0xfb5
  4b519c:	279c77d8 	addiu	gp,gp,30680
  4b51a0:	0399e021 	addu	gp,gp,t9
  4b51a4:	27bdfef0 	addiu	sp,sp,-272
  4b51a8:	afbc0010 	sw	gp,16(sp)
  4b51ac:	afb300fc 	sw	s3,252(sp)
  4b51b0:	00e09821 	move	s3,a3
  4b51b4:	afb40100 	sw	s4,256(sp)
  4b51b8:	afb100f4 	sw	s1,244(sp)
  4b51bc:	afb000f0 	sw	s0,240(sp)
  4b51c0:	afbf0108 	sw	ra,264(sp)
  4b51c4:	afbc0104 	sw	gp,260(sp)
  4b51c8:	afb200f8 	sw	s2,248(sp)
  4b51cc:	00808821 	move	s1,a0
  4b51d0:	00a08021 	move	s0,a1
  4b51d4:	1a60004c 	blez	s3,4b5308 <sha384_hash_buffer+0x170>
  4b51d8:	00c0a021 	move	s4,a2
  4b51dc:	02802021 	move	a0,s4
  4b51e0:	00002821 	move	a1,zero
  4b51e4:	02603021 	move	a2,s3
  4b51e8:	8f998500 	lw	t9,-31488(gp)
  4b51ec:	00000000 	nop
  4b51f0:	0320f809 	jalr	t9
  4b51f4:	00000000 	nop
  4b51f8:	8fbc0010 	lw	gp,16(sp)
  4b51fc:	2a620031 	slti	v0,s3,49
  4b5200:	14400002 	bnez	v0,4b520c <sha384_hash_buffer+0x74>
  4b5204:	00000000 	nop
  4b5208:	24130030 	li	s3,48
  4b520c:	8f82804c 	lw	v0,-32692(gp)
  4b5210:	00000000 	nop
  4b5214:	244255d0 	addiu	v0,v0,21968
  4b5218:	27b20018 	addiu	s2,sp,24
  4b521c:	27a30098 	addiu	v1,sp,152
  4b5220:	24440040 	addiu	a0,v0,64
  4b5224:	8c450000 	lw	a1,0(v0)
  4b5228:	8c460004 	lw	a2,4(v0)
  4b522c:	8c470008 	lw	a3,8(v0)
  4b5230:	8c48000c 	lw	t0,12(v0)
  4b5234:	ac650000 	sw	a1,0(v1)
  4b5238:	ac660004 	sw	a2,4(v1)
  4b523c:	ac670008 	sw	a3,8(v1)
  4b5240:	ac68000c 	sw	t0,12(v1)
  4b5244:	24420010 	addiu	v0,v0,16
  4b5248:	1444fff6 	bne	v0,a0,4b5224 <sha384_hash_buffer+0x8c>
  4b524c:	24630010 	addiu	v1,v1,16
  4b5250:	00002021 	move	a0,zero
  4b5254:	00002821 	move	a1,zero
  4b5258:	ae4400c0 	sw	a0,192(s2)
  4b525c:	ae4500c4 	sw	a1,196(s2)
  4b5260:	ae4400c8 	sw	a0,200(s2)
  4b5264:	ae4500cc 	sw	a1,204(s2)
  4b5268:	1a000011 	blez	s0,4b52b0 <sha384_hash_buffer+0x118>
  4b526c:	ae4000d0 	sw	zero,208(s2)
  4b5270:	8e4200d0 	lw	v0,208(s2)
  4b5274:	00000000 	nop
  4b5278:	10400036 	beqz	v0,4b5354 <sha384_hash_buffer+0x1bc>
  4b527c:	00000000 	nop
  4b5280:	92290000 	lbu	t1,0(s1)
  4b5284:	02424021 	addu	t0,s2,v0
  4b5288:	a1090000 	sb	t1,0(t0)
  4b528c:	8e4700d0 	lw	a3,208(s2)
  4b5290:	24060080 	li	a2,128
  4b5294:	24e20001 	addiu	v0,a3,1
  4b5298:	ae4200d0 	sw	v0,208(s2)
  4b529c:	26310001 	addiu	s1,s1,1
  4b52a0:	10460021 	beq	v0,a2,4b5328 <sha384_hash_buffer+0x190>
  4b52a4:	2610ffff 	addiu	s0,s0,-1
  4b52a8:	1e00fff1 	bgtz	s0,4b5270 <sha384_hash_buffer+0xd8>
  4b52ac:	00000000 	nop
  4b52b0:	27a40018 	addiu	a0,sp,24
  4b52b4:	8f998280 	lw	t9,-32128(gp)
  4b52b8:	00000000 	nop
  4b52bc:	0320f809 	jalr	t9
  4b52c0:	00000000 	nop
  4b52c4:	8fbc0010 	lw	gp,16(sp)
  4b52c8:	02802021 	move	a0,s4
  4b52cc:	02402821 	move	a1,s2
  4b52d0:	02603021 	move	a2,s3
  4b52d4:	8f998a30 	lw	t9,-30160(gp)
  4b52d8:	00000000 	nop
  4b52dc:	0320f809 	jalr	t9
  4b52e0:	00000000 	nop
  4b52e4:	8fbc0010 	lw	gp,16(sp)
  4b52e8:	02402021 	move	a0,s2
  4b52ec:	00002821 	move	a1,zero
  4b52f0:	240600d8 	li	a2,216
  4b52f4:	8f998500 	lw	t9,-31488(gp)
  4b52f8:	00000000 	nop
  4b52fc:	0320f809 	jalr	t9
  4b5300:	00000000 	nop
  4b5304:	8fbc0010 	lw	gp,16(sp)
  4b5308:	8fbf0108 	lw	ra,264(sp)
  4b530c:	8fb40100 	lw	s4,256(sp)
  4b5310:	8fb300fc 	lw	s3,252(sp)
  4b5314:	8fb200f8 	lw	s2,248(sp)
  4b5318:	8fb100f4 	lw	s1,244(sp)
  4b531c:	8fb000f0 	lw	s0,240(sp)
  4b5320:	03e00008 	jr	ra
  4b5324:	27bd0110 	addiu	sp,sp,272
  4b5328:	02402021 	move	a0,s2
  4b532c:	02402821 	move	a1,s2
  4b5330:	8f998054 	lw	t9,-32684(gp)
  4b5334:	00000000 	nop
  4b5338:	27393e8c 	addiu	t9,t9,16012
  4b533c:	00000000 	nop
  4b5340:	0320f809 	jalr	t9
  4b5344:	00000000 	nop
  4b5348:	8fbc0010 	lw	gp,16(sp)
  4b534c:	1000ffd6 	b	4b52a8 <sha384_hash_buffer+0x110>
  4b5350:	ae4000d0 	sw	zero,208(s2)
  4b5354:	2e030080 	sltiu	v1,s0,128
  4b5358:	1460000e 	bnez	v1,4b5394 <sha384_hash_buffer+0x1fc>
  4b535c:	00000000 	nop
  4b5360:	02202821 	move	a1,s1
  4b5364:	02402021 	move	a0,s2
  4b5368:	2610ff80 	addiu	s0,s0,-128
  4b536c:	8f998054 	lw	t9,-32684(gp)
  4b5370:	00000000 	nop
  4b5374:	27393e8c 	addiu	t9,t9,16012
  4b5378:	00000000 	nop
  4b537c:	0320f809 	jalr	t9
  4b5380:	00000000 	nop
  4b5384:	8fbc0010 	lw	gp,16(sp)
  4b5388:	2e050080 	sltiu	a1,s0,128
  4b538c:	10a0fff4 	beqz	a1,4b5360 <sha384_hash_buffer+0x1c8>
  4b5390:	26310080 	addiu	s1,s1,128
  4b5394:	1200ffc7 	beqz	s0,4b52b4 <sha384_hash_buffer+0x11c>
  4b5398:	27a40018 	addiu	a0,sp,24
  4b539c:	8e4200d0 	lw	v0,208(s2)
  4b53a0:	1000ffb7 	b	4b5280 <sha384_hash_buffer+0xe8>
  4b53a4:	00000000 	nop
	...

004b53b0 <twofish_set_key>:
  4b53b0:	3c1c0fb5 	lui	gp,0xfb5
  4b53b4:	279c75c0 	addiu	gp,gp,30144
  4b53b8:	0399e021 	addu	gp,gp,t9
  4b53bc:	27bdffc8 	addiu	sp,sp,-56
  4b53c0:	afbc0000 	sw	gp,0(sp)
  4b53c4:	afbe0034 	sw	s8,52(sp)
  4b53c8:	afbc0030 	sw	gp,48(sp)
  4b53cc:	03a0f021 	move	s8,sp
  4b53d0:	afc40038 	sw	a0,56(s8)
  4b53d4:	afc5003c 	sw	a1,60(s8)
  4b53d8:	afc60040 	sw	a2,64(s8)
	u32 x, y;

	/* The S vector used to key the S-boxes, split up into individual bytes.
	 * 128-bit keys use only sa through sh; 256-bit use all of them. */
	u8 sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0, sg = 0, sh = 0;
  4b53dc:	a3c0001c 	sb	zero,28(s8)
  4b53e0:	a3c0001d 	sb	zero,29(s8)
  4b53e4:	a3c0001e 	sb	zero,30(s8)
  4b53e8:	a3c0001f 	sb	zero,31(s8)
  4b53ec:	a3c00020 	sb	zero,32(s8)
  4b53f0:	a3c00021 	sb	zero,33(s8)
  4b53f4:	a3c00022 	sb	zero,34(s8)
  4b53f8:	a3c00023 	sb	zero,35(s8)
	u8 si = 0, sj = 0, sk = 0, sl = 0, sm = 0, sn = 0, so = 0, sp = 0;
  4b53fc:	a3c00024 	sb	zero,36(s8)
  4b5400:	a3c00025 	sb	zero,37(s8)
  4b5404:	a3c00026 	sb	zero,38(s8)
  4b5408:	a3c00027 	sb	zero,39(s8)
  4b540c:	a3c00028 	sb	zero,40(s8)
  4b5410:	a3c00029 	sb	zero,41(s8)
  4b5414:	a3c0002a 	sb	zero,42(s8)
  4b5418:	a3c0002b 	sb	zero,43(s8)

	/* Temporary for CALC_S. */
	u8 tmp;

	/* Check key length. */
	if (key_len != 16 && key_len != 24 && key_len != 32)
  4b541c:	8fc30040 	lw	v1,64(s8)
  4b5420:	24020010 	li	v0,16
  4b5424:	1062000c 	beq	v1,v0,4b5458 <twofish_set_key+0xa8>
  4b5428:	00000000 	nop
  4b542c:	8fc30040 	lw	v1,64(s8)
  4b5430:	24020018 	li	v0,24
  4b5434:	10620008 	beq	v1,v0,4b5458 <twofish_set_key+0xa8>
  4b5438:	00000000 	nop
  4b543c:	8fc30040 	lw	v1,64(s8)
  4b5440:	24020020 	li	v0,32
  4b5444:	10620004 	beq	v1,v0,4b5458 <twofish_set_key+0xa8>
  4b5448:	00000000 	nop
		return -1; /* unsupported key length */
  4b544c:	2402ffff 	li	v0,-1
  4b5450:	10005b31 	b	4cc118 <twofish_set_key+0x16d68>
  4b5454:	00000000 	nop

	/* Compute the first two words of the S vector.  The magic numbers are
	 * the entries of the RS matrix, preprocessed through poly_to_exp. The
	 * numbers in the comments are the original (polynomial form) matrix
	 * entries. */
	CALC_S (sa, sb, sc, sd, 0, 0x00, 0x2D, 0x01, 0x2D); /* 01 A4 02 A4 */
  4b5458:	8fc2003c 	lw	v0,60(s8)
  4b545c:	00000000 	nop
  4b5460:	90420000 	lbu	v0,0(v0)
  4b5464:	00000000 	nop
  4b5468:	1040003b 	beqz	v0,4b5558 <twofish_set_key+0x1a8>
  4b546c:	00000000 	nop
  4b5470:	8fc2003c 	lw	v0,60(s8)
  4b5474:	00000000 	nop
  4b5478:	90420000 	lbu	v0,0(v0)
  4b547c:	00000000 	nop
  4b5480:	2442ffff 	addiu	v0,v0,-1
  4b5484:	8f81804c 	lw	at,-32692(gp)
  4b5488:	00000000 	nop
  4b548c:	24216a90 	addiu	at,at,27280
  4b5490:	00221021 	addu	v0,at,v0
  4b5494:	90420000 	lbu	v0,0(v0)
  4b5498:	00000000 	nop
  4b549c:	a3c2002c 	sb	v0,44(s8)
  4b54a0:	93c2002c 	lbu	v0,44(s8)
  4b54a4:	8f81804c 	lw	at,-32692(gp)
  4b54a8:	00000000 	nop
  4b54ac:	24216b90 	addiu	at,at,27536
  4b54b0:	00221021 	addu	v0,at,v0
  4b54b4:	90430000 	lbu	v1,0(v0)
  4b54b8:	93c2001c 	lbu	v0,28(s8)
  4b54bc:	00000000 	nop
  4b54c0:	00431026 	xor	v0,v0,v1
  4b54c4:	a3c2001c 	sb	v0,28(s8)
  4b54c8:	93c2002c 	lbu	v0,44(s8)
  4b54cc:	00000000 	nop
  4b54d0:	2442002d 	addiu	v0,v0,45
  4b54d4:	8f81804c 	lw	at,-32692(gp)
  4b54d8:	00000000 	nop
  4b54dc:	24216b90 	addiu	at,at,27536
  4b54e0:	00221021 	addu	v0,at,v0
  4b54e4:	90430000 	lbu	v1,0(v0)
  4b54e8:	93c2001d 	lbu	v0,29(s8)
  4b54ec:	00000000 	nop
  4b54f0:	00431026 	xor	v0,v0,v1
  4b54f4:	a3c2001d 	sb	v0,29(s8)
  4b54f8:	93c2002c 	lbu	v0,44(s8)
  4b54fc:	00000000 	nop
  4b5500:	24420001 	addiu	v0,v0,1
  4b5504:	8f81804c 	lw	at,-32692(gp)
  4b5508:	00000000 	nop
  4b550c:	24216b90 	addiu	at,at,27536
  4b5510:	00221021 	addu	v0,at,v0
  4b5514:	90430000 	lbu	v1,0(v0)
  4b5518:	93c2001e 	lbu	v0,30(s8)
  4b551c:	00000000 	nop
  4b5520:	00431026 	xor	v0,v0,v1
  4b5524:	a3c2001e 	sb	v0,30(s8)
  4b5528:	93c2002c 	lbu	v0,44(s8)
  4b552c:	00000000 	nop
  4b5530:	2442002d 	addiu	v0,v0,45
  4b5534:	8f81804c 	lw	at,-32692(gp)
  4b5538:	00000000 	nop
  4b553c:	24216b90 	addiu	at,at,27536
  4b5540:	00221021 	addu	v0,at,v0
  4b5544:	90430000 	lbu	v1,0(v0)
  4b5548:	93c2001f 	lbu	v0,31(s8)
  4b554c:	00000000 	nop
  4b5550:	00431026 	xor	v0,v0,v1
  4b5554:	a3c2001f 	sb	v0,31(s8)
	CALC_S (sa, sb, sc, sd, 1, 0x2D, 0xA4, 0x44, 0x8A); /* A4 56 A1 55 */
  4b5558:	8fc2003c 	lw	v0,60(s8)
  4b555c:	00000000 	nop
  4b5560:	24420001 	addiu	v0,v0,1
  4b5564:	90420000 	lbu	v0,0(v0)
  4b5568:	00000000 	nop
  4b556c:	1040003e 	beqz	v0,4b5668 <twofish_set_key+0x2b8>
  4b5570:	00000000 	nop
  4b5574:	8fc2003c 	lw	v0,60(s8)
  4b5578:	00000000 	nop
  4b557c:	24420001 	addiu	v0,v0,1
  4b5580:	90420000 	lbu	v0,0(v0)
  4b5584:	00000000 	nop
  4b5588:	2442ffff 	addiu	v0,v0,-1
  4b558c:	8f81804c 	lw	at,-32692(gp)
  4b5590:	00000000 	nop
  4b5594:	24216a90 	addiu	at,at,27280
  4b5598:	00221021 	addu	v0,at,v0
  4b559c:	90420000 	lbu	v0,0(v0)
  4b55a0:	00000000 	nop
  4b55a4:	a3c2002c 	sb	v0,44(s8)
  4b55a8:	93c2002c 	lbu	v0,44(s8)
  4b55ac:	00000000 	nop
  4b55b0:	2442002d 	addiu	v0,v0,45
  4b55b4:	8f81804c 	lw	at,-32692(gp)
  4b55b8:	00000000 	nop
  4b55bc:	24216b90 	addiu	at,at,27536
  4b55c0:	00221021 	addu	v0,at,v0
  4b55c4:	90430000 	lbu	v1,0(v0)
  4b55c8:	93c2001c 	lbu	v0,28(s8)
  4b55cc:	00000000 	nop
  4b55d0:	00431026 	xor	v0,v0,v1
  4b55d4:	a3c2001c 	sb	v0,28(s8)
  4b55d8:	93c2002c 	lbu	v0,44(s8)
  4b55dc:	00000000 	nop
  4b55e0:	244200a4 	addiu	v0,v0,164
  4b55e4:	8f81804c 	lw	at,-32692(gp)
  4b55e8:	00000000 	nop
  4b55ec:	24216b90 	addiu	at,at,27536
  4b55f0:	00221021 	addu	v0,at,v0
  4b55f4:	90430000 	lbu	v1,0(v0)
  4b55f8:	93c2001d 	lbu	v0,29(s8)
  4b55fc:	00000000 	nop
  4b5600:	00431026 	xor	v0,v0,v1
  4b5604:	a3c2001d 	sb	v0,29(s8)
  4b5608:	93c2002c 	lbu	v0,44(s8)
  4b560c:	00000000 	nop
  4b5610:	24420044 	addiu	v0,v0,68
  4b5614:	8f81804c 	lw	at,-32692(gp)
  4b5618:	00000000 	nop
  4b561c:	24216b90 	addiu	at,at,27536
  4b5620:	00221021 	addu	v0,at,v0
  4b5624:	90430000 	lbu	v1,0(v0)
  4b5628:	93c2001e 	lbu	v0,30(s8)
  4b562c:	00000000 	nop
  4b5630:	00431026 	xor	v0,v0,v1
  4b5634:	a3c2001e 	sb	v0,30(s8)
  4b5638:	93c2002c 	lbu	v0,44(s8)
  4b563c:	00000000 	nop
  4b5640:	2442008a 	addiu	v0,v0,138
  4b5644:	8f81804c 	lw	at,-32692(gp)
  4b5648:	00000000 	nop
  4b564c:	24216b90 	addiu	at,at,27536
  4b5650:	00221021 	addu	v0,at,v0
  4b5654:	90430000 	lbu	v1,0(v0)
  4b5658:	93c2001f 	lbu	v0,31(s8)
  4b565c:	00000000 	nop
  4b5660:	00431026 	xor	v0,v0,v1
  4b5664:	a3c2001f 	sb	v0,31(s8)
	CALC_S (sa, sb, sc, sd, 2, 0x8A, 0xD5, 0xBF, 0xD1); /* 55 82 FC 87 */
  4b5668:	8fc2003c 	lw	v0,60(s8)
  4b566c:	00000000 	nop
  4b5670:	24420002 	addiu	v0,v0,2
  4b5674:	90420000 	lbu	v0,0(v0)
  4b5678:	00000000 	nop
  4b567c:	1040003e 	beqz	v0,4b5778 <twofish_set_key+0x3c8>
  4b5680:	00000000 	nop
  4b5684:	8fc2003c 	lw	v0,60(s8)
  4b5688:	00000000 	nop
  4b568c:	24420002 	addiu	v0,v0,2
  4b5690:	90420000 	lbu	v0,0(v0)
  4b5694:	00000000 	nop
  4b5698:	2442ffff 	addiu	v0,v0,-1
  4b569c:	8f81804c 	lw	at,-32692(gp)
  4b56a0:	00000000 	nop
  4b56a4:	24216a90 	addiu	at,at,27280
  4b56a8:	00221021 	addu	v0,at,v0
  4b56ac:	90420000 	lbu	v0,0(v0)
  4b56b0:	00000000 	nop
  4b56b4:	a3c2002c 	sb	v0,44(s8)
  4b56b8:	93c2002c 	lbu	v0,44(s8)
  4b56bc:	00000000 	nop
  4b56c0:	2442008a 	addiu	v0,v0,138
  4b56c4:	8f81804c 	lw	at,-32692(gp)
  4b56c8:	00000000 	nop
  4b56cc:	24216b90 	addiu	at,at,27536
  4b56d0:	00221021 	addu	v0,at,v0
  4b56d4:	90430000 	lbu	v1,0(v0)
  4b56d8:	93c2001c 	lbu	v0,28(s8)
  4b56dc:	00000000 	nop
  4b56e0:	00431026 	xor	v0,v0,v1
  4b56e4:	a3c2001c 	sb	v0,28(s8)
  4b56e8:	93c2002c 	lbu	v0,44(s8)
  4b56ec:	00000000 	nop
  4b56f0:	244200d5 	addiu	v0,v0,213
  4b56f4:	8f81804c 	lw	at,-32692(gp)
  4b56f8:	00000000 	nop
  4b56fc:	24216b90 	addiu	at,at,27536
  4b5700:	00221021 	addu	v0,at,v0
  4b5704:	90430000 	lbu	v1,0(v0)
  4b5708:	93c2001d 	lbu	v0,29(s8)
  4b570c:	00000000 	nop
  4b5710:	00431026 	xor	v0,v0,v1
  4b5714:	a3c2001d 	sb	v0,29(s8)
  4b5718:	93c2002c 	lbu	v0,44(s8)
  4b571c:	00000000 	nop
  4b5720:	244200bf 	addiu	v0,v0,191
  4b5724:	8f81804c 	lw	at,-32692(gp)
  4b5728:	00000000 	nop
  4b572c:	24216b90 	addiu	at,at,27536
  4b5730:	00221021 	addu	v0,at,v0
  4b5734:	90430000 	lbu	v1,0(v0)
  4b5738:	93c2001e 	lbu	v0,30(s8)
  4b573c:	00000000 	nop
  4b5740:	00431026 	xor	v0,v0,v1
  4b5744:	a3c2001e 	sb	v0,30(s8)
  4b5748:	93c2002c 	lbu	v0,44(s8)
  4b574c:	00000000 	nop
  4b5750:	244200d1 	addiu	v0,v0,209
  4b5754:	8f81804c 	lw	at,-32692(gp)
  4b5758:	00000000 	nop
  4b575c:	24216b90 	addiu	at,at,27536
  4b5760:	00221021 	addu	v0,at,v0
  4b5764:	90430000 	lbu	v1,0(v0)
  4b5768:	93c2001f 	lbu	v0,31(s8)
  4b576c:	00000000 	nop
  4b5770:	00431026 	xor	v0,v0,v1
  4b5774:	a3c2001f 	sb	v0,31(s8)
	CALC_S (sa, sb, sc, sd, 3, 0xD1, 0x7F, 0x3D, 0x99); /* 87 F3 C1 5A */
  4b5778:	8fc2003c 	lw	v0,60(s8)
  4b577c:	00000000 	nop
  4b5780:	24420003 	addiu	v0,v0,3
  4b5784:	90420000 	lbu	v0,0(v0)
  4b5788:	00000000 	nop
  4b578c:	1040003e 	beqz	v0,4b5888 <twofish_set_key+0x4d8>
  4b5790:	00000000 	nop
  4b5794:	8fc2003c 	lw	v0,60(s8)
  4b5798:	00000000 	nop
  4b579c:	24420003 	addiu	v0,v0,3
  4b57a0:	90420000 	lbu	v0,0(v0)
  4b57a4:	00000000 	nop
  4b57a8:	2442ffff 	addiu	v0,v0,-1
  4b57ac:	8f81804c 	lw	at,-32692(gp)
  4b57b0:	00000000 	nop
  4b57b4:	24216a90 	addiu	at,at,27280
  4b57b8:	00221021 	addu	v0,at,v0
  4b57bc:	90420000 	lbu	v0,0(v0)
  4b57c0:	00000000 	nop
  4b57c4:	a3c2002c 	sb	v0,44(s8)
  4b57c8:	93c2002c 	lbu	v0,44(s8)
  4b57cc:	00000000 	nop
  4b57d0:	244200d1 	addiu	v0,v0,209
  4b57d4:	8f81804c 	lw	at,-32692(gp)
  4b57d8:	00000000 	nop
  4b57dc:	24216b90 	addiu	at,at,27536
  4b57e0:	00221021 	addu	v0,at,v0
  4b57e4:	90430000 	lbu	v1,0(v0)
  4b57e8:	93c2001c 	lbu	v0,28(s8)
  4b57ec:	00000000 	nop
  4b57f0:	00431026 	xor	v0,v0,v1
  4b57f4:	a3c2001c 	sb	v0,28(s8)
  4b57f8:	93c2002c 	lbu	v0,44(s8)
  4b57fc:	00000000 	nop
  4b5800:	2442007f 	addiu	v0,v0,127
  4b5804:	8f81804c 	lw	at,-32692(gp)
  4b5808:	00000000 	nop
  4b580c:	24216b90 	addiu	at,at,27536
  4b5810:	00221021 	addu	v0,at,v0
  4b5814:	90430000 	lbu	v1,0(v0)
  4b5818:	93c2001d 	lbu	v0,29(s8)
  4b581c:	00000000 	nop
  4b5820:	00431026 	xor	v0,v0,v1
  4b5824:	a3c2001d 	sb	v0,29(s8)
  4b5828:	93c2002c 	lbu	v0,44(s8)
  4b582c:	00000000 	nop
  4b5830:	2442003d 	addiu	v0,v0,61
  4b5834:	8f81804c 	lw	at,-32692(gp)
  4b5838:	00000000 	nop
  4b583c:	24216b90 	addiu	at,at,27536
  4b5840:	00221021 	addu	v0,at,v0
  4b5844:	90430000 	lbu	v1,0(v0)
  4b5848:	93c2001e 	lbu	v0,30(s8)
  4b584c:	00000000 	nop
  4b5850:	00431026 	xor	v0,v0,v1
  4b5854:	a3c2001e 	sb	v0,30(s8)
  4b5858:	93c2002c 	lbu	v0,44(s8)
  4b585c:	00000000 	nop
  4b5860:	24420099 	addiu	v0,v0,153
  4b5864:	8f81804c 	lw	at,-32692(gp)
  4b5868:	00000000 	nop
  4b586c:	24216b90 	addiu	at,at,27536
  4b5870:	00221021 	addu	v0,at,v0
  4b5874:	90430000 	lbu	v1,0(v0)
  4b5878:	93c2001f 	lbu	v0,31(s8)
  4b587c:	00000000 	nop
  4b5880:	00431026 	xor	v0,v0,v1
  4b5884:	a3c2001f 	sb	v0,31(s8)
	CALC_S (sa, sb, sc, sd, 4, 0x99, 0x46, 0x66, 0x96); /* 5A 1E 47 58 */
  4b5888:	8fc2003c 	lw	v0,60(s8)
  4b588c:	00000000 	nop
  4b5890:	24420004 	addiu	v0,v0,4
  4b5894:	90420000 	lbu	v0,0(v0)
  4b5898:	00000000 	nop
  4b589c:	1040003e 	beqz	v0,4b5998 <twofish_set_key+0x5e8>
  4b58a0:	00000000 	nop
  4b58a4:	8fc2003c 	lw	v0,60(s8)
  4b58a8:	00000000 	nop
  4b58ac:	24420004 	addiu	v0,v0,4
  4b58b0:	90420000 	lbu	v0,0(v0)
  4b58b4:	00000000 	nop
  4b58b8:	2442ffff 	addiu	v0,v0,-1
  4b58bc:	8f81804c 	lw	at,-32692(gp)
  4b58c0:	00000000 	nop
  4b58c4:	24216a90 	addiu	at,at,27280
  4b58c8:	00221021 	addu	v0,at,v0
  4b58cc:	90420000 	lbu	v0,0(v0)
  4b58d0:	00000000 	nop
  4b58d4:	a3c2002c 	sb	v0,44(s8)
  4b58d8:	93c2002c 	lbu	v0,44(s8)
  4b58dc:	00000000 	nop
  4b58e0:	24420099 	addiu	v0,v0,153
  4b58e4:	8f81804c 	lw	at,-32692(gp)
  4b58e8:	00000000 	nop
  4b58ec:	24216b90 	addiu	at,at,27536
  4b58f0:	00221021 	addu	v0,at,v0
  4b58f4:	90430000 	lbu	v1,0(v0)
  4b58f8:	93c2001c 	lbu	v0,28(s8)
  4b58fc:	00000000 	nop
  4b5900:	00431026 	xor	v0,v0,v1
  4b5904:	a3c2001c 	sb	v0,28(s8)
  4b5908:	93c2002c 	lbu	v0,44(s8)
  4b590c:	00000000 	nop
  4b5910:	24420046 	addiu	v0,v0,70
  4b5914:	8f81804c 	lw	at,-32692(gp)
  4b5918:	00000000 	nop
  4b591c:	24216b90 	addiu	at,at,27536
  4b5920:	00221021 	addu	v0,at,v0
  4b5924:	90430000 	lbu	v1,0(v0)
  4b5928:	93c2001d 	lbu	v0,29(s8)
  4b592c:	00000000 	nop
  4b5930:	00431026 	xor	v0,v0,v1
  4b5934:	a3c2001d 	sb	v0,29(s8)
  4b5938:	93c2002c 	lbu	v0,44(s8)
  4b593c:	00000000 	nop
  4b5940:	24420066 	addiu	v0,v0,102
  4b5944:	8f81804c 	lw	at,-32692(gp)
  4b5948:	00000000 	nop
  4b594c:	24216b90 	addiu	at,at,27536
  4b5950:	00221021 	addu	v0,at,v0
  4b5954:	90430000 	lbu	v1,0(v0)
  4b5958:	93c2001e 	lbu	v0,30(s8)
  4b595c:	00000000 	nop
  4b5960:	00431026 	xor	v0,v0,v1
  4b5964:	a3c2001e 	sb	v0,30(s8)
  4b5968:	93c2002c 	lbu	v0,44(s8)
  4b596c:	00000000 	nop
  4b5970:	24420096 	addiu	v0,v0,150
  4b5974:	8f81804c 	lw	at,-32692(gp)
  4b5978:	00000000 	nop
  4b597c:	24216b90 	addiu	at,at,27536
  4b5980:	00221021 	addu	v0,at,v0
  4b5984:	90430000 	lbu	v1,0(v0)
  4b5988:	93c2001f 	lbu	v0,31(s8)
  4b598c:	00000000 	nop
  4b5990:	00431026 	xor	v0,v0,v1
  4b5994:	a3c2001f 	sb	v0,31(s8)
	CALC_S (sa, sb, sc, sd, 5, 0x96, 0x3C, 0x5B, 0xED); /* 58 C6 AE DB */
  4b5998:	8fc2003c 	lw	v0,60(s8)
  4b599c:	00000000 	nop
  4b59a0:	24420005 	addiu	v0,v0,5
  4b59a4:	90420000 	lbu	v0,0(v0)
  4b59a8:	00000000 	nop
  4b59ac:	1040003e 	beqz	v0,4b5aa8 <twofish_set_key+0x6f8>
  4b59b0:	00000000 	nop
  4b59b4:	8fc2003c 	lw	v0,60(s8)
  4b59b8:	00000000 	nop
  4b59bc:	24420005 	addiu	v0,v0,5
  4b59c0:	90420000 	lbu	v0,0(v0)
  4b59c4:	00000000 	nop
  4b59c8:	2442ffff 	addiu	v0,v0,-1
  4b59cc:	8f81804c 	lw	at,-32692(gp)
  4b59d0:	00000000 	nop
  4b59d4:	24216a90 	addiu	at,at,27280
  4b59d8:	00221021 	addu	v0,at,v0
  4b59dc:	90420000 	lbu	v0,0(v0)
  4b59e0:	00000000 	nop
  4b59e4:	a3c2002c 	sb	v0,44(s8)
  4b59e8:	93c2002c 	lbu	v0,44(s8)
  4b59ec:	00000000 	nop
  4b59f0:	24420096 	addiu	v0,v0,150
  4b59f4:	8f81804c 	lw	at,-32692(gp)
  4b59f8:	00000000 	nop
  4b59fc:	24216b90 	addiu	at,at,27536
  4b5a00:	00221021 	addu	v0,at,v0
  4b5a04:	90430000 	lbu	v1,0(v0)
  4b5a08:	93c2001c 	lbu	v0,28(s8)
  4b5a0c:	00000000 	nop
  4b5a10:	00431026 	xor	v0,v0,v1
  4b5a14:	a3c2001c 	sb	v0,28(s8)
  4b5a18:	93c2002c 	lbu	v0,44(s8)
  4b5a1c:	00000000 	nop
  4b5a20:	2442003c 	addiu	v0,v0,60
  4b5a24:	8f81804c 	lw	at,-32692(gp)
  4b5a28:	00000000 	nop
  4b5a2c:	24216b90 	addiu	at,at,27536
  4b5a30:	00221021 	addu	v0,at,v0
  4b5a34:	90430000 	lbu	v1,0(v0)
  4b5a38:	93c2001d 	lbu	v0,29(s8)
  4b5a3c:	00000000 	nop
  4b5a40:	00431026 	xor	v0,v0,v1
  4b5a44:	a3c2001d 	sb	v0,29(s8)
  4b5a48:	93c2002c 	lbu	v0,44(s8)
  4b5a4c:	00000000 	nop
  4b5a50:	2442005b 	addiu	v0,v0,91
  4b5a54:	8f81804c 	lw	at,-32692(gp)
  4b5a58:	00000000 	nop
  4b5a5c:	24216b90 	addiu	at,at,27536
  4b5a60:	00221021 	addu	v0,at,v0
  4b5a64:	90430000 	lbu	v1,0(v0)
  4b5a68:	93c2001e 	lbu	v0,30(s8)
  4b5a6c:	00000000 	nop
  4b5a70:	00431026 	xor	v0,v0,v1
  4b5a74:	a3c2001e 	sb	v0,30(s8)
  4b5a78:	93c2002c 	lbu	v0,44(s8)
  4b5a7c:	00000000 	nop
  4b5a80:	244200ed 	addiu	v0,v0,237
  4b5a84:	8f81804c 	lw	at,-32692(gp)
  4b5a88:	00000000 	nop
  4b5a8c:	24216b90 	addiu	at,at,27536
  4b5a90:	00221021 	addu	v0,at,v0
  4b5a94:	90430000 	lbu	v1,0(v0)
  4b5a98:	93c2001f 	lbu	v0,31(s8)
  4b5a9c:	00000000 	nop
  4b5aa0:	00431026 	xor	v0,v0,v1
  4b5aa4:	a3c2001f 	sb	v0,31(s8)
	CALC_S (sa, sb, sc, sd, 6, 0xED, 0x37, 0x4F, 0xE0); /* DB 68 3D 9E */
  4b5aa8:	8fc2003c 	lw	v0,60(s8)
  4b5aac:	00000000 	nop
  4b5ab0:	24420006 	addiu	v0,v0,6
  4b5ab4:	90420000 	lbu	v0,0(v0)
  4b5ab8:	00000000 	nop
  4b5abc:	1040003e 	beqz	v0,4b5bb8 <twofish_set_key+0x808>
  4b5ac0:	00000000 	nop
  4b5ac4:	8fc2003c 	lw	v0,60(s8)
  4b5ac8:	00000000 	nop
  4b5acc:	24420006 	addiu	v0,v0,6
  4b5ad0:	90420000 	lbu	v0,0(v0)
  4b5ad4:	00000000 	nop
  4b5ad8:	2442ffff 	addiu	v0,v0,-1
  4b5adc:	8f81804c 	lw	at,-32692(gp)
  4b5ae0:	00000000 	nop
  4b5ae4:	24216a90 	addiu	at,at,27280
  4b5ae8:	00221021 	addu	v0,at,v0
  4b5aec:	90420000 	lbu	v0,0(v0)
  4b5af0:	00000000 	nop
  4b5af4:	a3c2002c 	sb	v0,44(s8)
  4b5af8:	93c2002c 	lbu	v0,44(s8)
  4b5afc:	00000000 	nop
  4b5b00:	244200ed 	addiu	v0,v0,237
  4b5b04:	8f81804c 	lw	at,-32692(gp)
  4b5b08:	00000000 	nop
  4b5b0c:	24216b90 	addiu	at,at,27536
  4b5b10:	00221021 	addu	v0,at,v0
  4b5b14:	90430000 	lbu	v1,0(v0)
  4b5b18:	93c2001c 	lbu	v0,28(s8)
  4b5b1c:	00000000 	nop
  4b5b20:	00431026 	xor	v0,v0,v1
  4b5b24:	a3c2001c 	sb	v0,28(s8)
  4b5b28:	93c2002c 	lbu	v0,44(s8)
  4b5b2c:	00000000 	nop
  4b5b30:	24420037 	addiu	v0,v0,55
  4b5b34:	8f81804c 	lw	at,-32692(gp)
  4b5b38:	00000000 	nop
  4b5b3c:	24216b90 	addiu	at,at,27536
  4b5b40:	00221021 	addu	v0,at,v0
  4b5b44:	90430000 	lbu	v1,0(v0)
  4b5b48:	93c2001d 	lbu	v0,29(s8)
  4b5b4c:	00000000 	nop
  4b5b50:	00431026 	xor	v0,v0,v1
  4b5b54:	a3c2001d 	sb	v0,29(s8)
  4b5b58:	93c2002c 	lbu	v0,44(s8)
  4b5b5c:	00000000 	nop
  4b5b60:	2442004f 	addiu	v0,v0,79
  4b5b64:	8f81804c 	lw	at,-32692(gp)
  4b5b68:	00000000 	nop
  4b5b6c:	24216b90 	addiu	at,at,27536
  4b5b70:	00221021 	addu	v0,at,v0
  4b5b74:	90430000 	lbu	v1,0(v0)
  4b5b78:	93c2001e 	lbu	v0,30(s8)
  4b5b7c:	00000000 	nop
  4b5b80:	00431026 	xor	v0,v0,v1
  4b5b84:	a3c2001e 	sb	v0,30(s8)
  4b5b88:	93c2002c 	lbu	v0,44(s8)
  4b5b8c:	00000000 	nop
  4b5b90:	244200e0 	addiu	v0,v0,224
  4b5b94:	8f81804c 	lw	at,-32692(gp)
  4b5b98:	00000000 	nop
  4b5b9c:	24216b90 	addiu	at,at,27536
  4b5ba0:	00221021 	addu	v0,at,v0
  4b5ba4:	90430000 	lbu	v1,0(v0)
  4b5ba8:	93c2001f 	lbu	v0,31(s8)
  4b5bac:	00000000 	nop
  4b5bb0:	00431026 	xor	v0,v0,v1
  4b5bb4:	a3c2001f 	sb	v0,31(s8)
	CALC_S (sa, sb, sc, sd, 7, 0xE0, 0xD0, 0x8C, 0x17); /* 9E E5 19 03 */
  4b5bb8:	8fc2003c 	lw	v0,60(s8)
  4b5bbc:	00000000 	nop
  4b5bc0:	24420007 	addiu	v0,v0,7
  4b5bc4:	90420000 	lbu	v0,0(v0)
  4b5bc8:	00000000 	nop
  4b5bcc:	1040003e 	beqz	v0,4b5cc8 <twofish_set_key+0x918>
  4b5bd0:	00000000 	nop
  4b5bd4:	8fc2003c 	lw	v0,60(s8)
  4b5bd8:	00000000 	nop
  4b5bdc:	24420007 	addiu	v0,v0,7
  4b5be0:	90420000 	lbu	v0,0(v0)
  4b5be4:	00000000 	nop
  4b5be8:	2442ffff 	addiu	v0,v0,-1
  4b5bec:	8f81804c 	lw	at,-32692(gp)
  4b5bf0:	00000000 	nop
  4b5bf4:	24216a90 	addiu	at,at,27280
  4b5bf8:	00221021 	addu	v0,at,v0
  4b5bfc:	90420000 	lbu	v0,0(v0)
  4b5c00:	00000000 	nop
  4b5c04:	a3c2002c 	sb	v0,44(s8)
  4b5c08:	93c2002c 	lbu	v0,44(s8)
  4b5c0c:	00000000 	nop
  4b5c10:	244200e0 	addiu	v0,v0,224
  4b5c14:	8f81804c 	lw	at,-32692(gp)
  4b5c18:	00000000 	nop
  4b5c1c:	24216b90 	addiu	at,at,27536
  4b5c20:	00221021 	addu	v0,at,v0
  4b5c24:	90430000 	lbu	v1,0(v0)
  4b5c28:	93c2001c 	lbu	v0,28(s8)
  4b5c2c:	00000000 	nop
  4b5c30:	00431026 	xor	v0,v0,v1
  4b5c34:	a3c2001c 	sb	v0,28(s8)
  4b5c38:	93c2002c 	lbu	v0,44(s8)
  4b5c3c:	00000000 	nop
  4b5c40:	244200d0 	addiu	v0,v0,208
  4b5c44:	8f81804c 	lw	at,-32692(gp)
  4b5c48:	00000000 	nop
  4b5c4c:	24216b90 	addiu	at,at,27536
  4b5c50:	00221021 	addu	v0,at,v0
  4b5c54:	90430000 	lbu	v1,0(v0)
  4b5c58:	93c2001d 	lbu	v0,29(s8)
  4b5c5c:	00000000 	nop
  4b5c60:	00431026 	xor	v0,v0,v1
  4b5c64:	a3c2001d 	sb	v0,29(s8)
  4b5c68:	93c2002c 	lbu	v0,44(s8)
  4b5c6c:	00000000 	nop
  4b5c70:	2442008c 	addiu	v0,v0,140
  4b5c74:	8f81804c 	lw	at,-32692(gp)
  4b5c78:	00000000 	nop
  4b5c7c:	24216b90 	addiu	at,at,27536
  4b5c80:	00221021 	addu	v0,at,v0
  4b5c84:	90430000 	lbu	v1,0(v0)
  4b5c88:	93c2001e 	lbu	v0,30(s8)
  4b5c8c:	00000000 	nop
  4b5c90:	00431026 	xor	v0,v0,v1
  4b5c94:	a3c2001e 	sb	v0,30(s8)
  4b5c98:	93c2002c 	lbu	v0,44(s8)
  4b5c9c:	00000000 	nop
  4b5ca0:	24420017 	addiu	v0,v0,23
  4b5ca4:	8f81804c 	lw	at,-32692(gp)
  4b5ca8:	00000000 	nop
  4b5cac:	24216b90 	addiu	at,at,27536
  4b5cb0:	00221021 	addu	v0,at,v0
  4b5cb4:	90430000 	lbu	v1,0(v0)
  4b5cb8:	93c2001f 	lbu	v0,31(s8)
  4b5cbc:	00000000 	nop
  4b5cc0:	00431026 	xor	v0,v0,v1
  4b5cc4:	a3c2001f 	sb	v0,31(s8)
	CALC_S (se, sf, sg, sh, 8, 0x00, 0x2D, 0x01, 0x2D); /* 01 A4 02 A4 */
  4b5cc8:	8fc2003c 	lw	v0,60(s8)
  4b5ccc:	00000000 	nop
  4b5cd0:	24420008 	addiu	v0,v0,8
  4b5cd4:	90420000 	lbu	v0,0(v0)
  4b5cd8:	00000000 	nop
  4b5cdc:	1040003c 	beqz	v0,4b5dd0 <twofish_set_key+0xa20>
  4b5ce0:	00000000 	nop
  4b5ce4:	8fc2003c 	lw	v0,60(s8)
  4b5ce8:	00000000 	nop
  4b5cec:	24420008 	addiu	v0,v0,8
  4b5cf0:	90420000 	lbu	v0,0(v0)
  4b5cf4:	00000000 	nop
  4b5cf8:	2442ffff 	addiu	v0,v0,-1
  4b5cfc:	8f81804c 	lw	at,-32692(gp)
  4b5d00:	00000000 	nop
  4b5d04:	24216a90 	addiu	at,at,27280
  4b5d08:	00221021 	addu	v0,at,v0
  4b5d0c:	90420000 	lbu	v0,0(v0)
  4b5d10:	00000000 	nop
  4b5d14:	a3c2002c 	sb	v0,44(s8)
  4b5d18:	93c2002c 	lbu	v0,44(s8)
  4b5d1c:	8f81804c 	lw	at,-32692(gp)
  4b5d20:	00000000 	nop
  4b5d24:	24216b90 	addiu	at,at,27536
  4b5d28:	00221021 	addu	v0,at,v0
  4b5d2c:	90430000 	lbu	v1,0(v0)
  4b5d30:	93c20020 	lbu	v0,32(s8)
  4b5d34:	00000000 	nop
  4b5d38:	00431026 	xor	v0,v0,v1
  4b5d3c:	a3c20020 	sb	v0,32(s8)
  4b5d40:	93c2002c 	lbu	v0,44(s8)
  4b5d44:	00000000 	nop
  4b5d48:	2442002d 	addiu	v0,v0,45
  4b5d4c:	8f81804c 	lw	at,-32692(gp)
  4b5d50:	00000000 	nop
  4b5d54:	24216b90 	addiu	at,at,27536
  4b5d58:	00221021 	addu	v0,at,v0
  4b5d5c:	90430000 	lbu	v1,0(v0)
  4b5d60:	93c20021 	lbu	v0,33(s8)
  4b5d64:	00000000 	nop
  4b5d68:	00431026 	xor	v0,v0,v1
  4b5d6c:	a3c20021 	sb	v0,33(s8)
  4b5d70:	93c2002c 	lbu	v0,44(s8)
  4b5d74:	00000000 	nop
  4b5d78:	24420001 	addiu	v0,v0,1
  4b5d7c:	8f81804c 	lw	at,-32692(gp)
  4b5d80:	00000000 	nop
  4b5d84:	24216b90 	addiu	at,at,27536
  4b5d88:	00221021 	addu	v0,at,v0
  4b5d8c:	90430000 	lbu	v1,0(v0)
  4b5d90:	93c20022 	lbu	v0,34(s8)
  4b5d94:	00000000 	nop
  4b5d98:	00431026 	xor	v0,v0,v1
  4b5d9c:	a3c20022 	sb	v0,34(s8)
  4b5da0:	93c2002c 	lbu	v0,44(s8)
  4b5da4:	00000000 	nop
  4b5da8:	2442002d 	addiu	v0,v0,45
  4b5dac:	8f81804c 	lw	at,-32692(gp)
  4b5db0:	00000000 	nop
  4b5db4:	24216b90 	addiu	at,at,27536
  4b5db8:	00221021 	addu	v0,at,v0
  4b5dbc:	90430000 	lbu	v1,0(v0)
  4b5dc0:	93c20023 	lbu	v0,35(s8)
  4b5dc4:	00000000 	nop
  4b5dc8:	00431026 	xor	v0,v0,v1
  4b5dcc:	a3c20023 	sb	v0,35(s8)
	CALC_S (se, sf, sg, sh, 9, 0x2D, 0xA4, 0x44, 0x8A); /* A4 56 A1 55 */
  4b5dd0:	8fc2003c 	lw	v0,60(s8)
  4b5dd4:	00000000 	nop
  4b5dd8:	24420009 	addiu	v0,v0,9
  4b5ddc:	90420000 	lbu	v0,0(v0)
  4b5de0:	00000000 	nop
  4b5de4:	1040003e 	beqz	v0,4b5ee0 <twofish_set_key+0xb30>
  4b5de8:	00000000 	nop
  4b5dec:	8fc2003c 	lw	v0,60(s8)
  4b5df0:	00000000 	nop
  4b5df4:	24420009 	addiu	v0,v0,9
  4b5df8:	90420000 	lbu	v0,0(v0)
  4b5dfc:	00000000 	nop
  4b5e00:	2442ffff 	addiu	v0,v0,-1
  4b5e04:	8f81804c 	lw	at,-32692(gp)
  4b5e08:	00000000 	nop
  4b5e0c:	24216a90 	addiu	at,at,27280
  4b5e10:	00221021 	addu	v0,at,v0
  4b5e14:	90420000 	lbu	v0,0(v0)
  4b5e18:	00000000 	nop
  4b5e1c:	a3c2002c 	sb	v0,44(s8)
  4b5e20:	93c2002c 	lbu	v0,44(s8)
  4b5e24:	00000000 	nop
  4b5e28:	2442002d 	addiu	v0,v0,45
  4b5e2c:	8f81804c 	lw	at,-32692(gp)
  4b5e30:	00000000 	nop
  4b5e34:	24216b90 	addiu	at,at,27536
  4b5e38:	00221021 	addu	v0,at,v0
  4b5e3c:	90430000 	lbu	v1,0(v0)
  4b5e40:	93c20020 	lbu	v0,32(s8)
  4b5e44:	00000000 	nop
  4b5e48:	00431026 	xor	v0,v0,v1
  4b5e4c:	a3c20020 	sb	v0,32(s8)
  4b5e50:	93c2002c 	lbu	v0,44(s8)
  4b5e54:	00000000 	nop
  4b5e58:	244200a4 	addiu	v0,v0,164
  4b5e5c:	8f81804c 	lw	at,-32692(gp)
  4b5e60:	00000000 	nop
  4b5e64:	24216b90 	addiu	at,at,27536
  4b5e68:	00221021 	addu	v0,at,v0
  4b5e6c:	90430000 	lbu	v1,0(v0)
  4b5e70:	93c20021 	lbu	v0,33(s8)
  4b5e74:	00000000 	nop
  4b5e78:	00431026 	xor	v0,v0,v1
  4b5e7c:	a3c20021 	sb	v0,33(s8)
  4b5e80:	93c2002c 	lbu	v0,44(s8)
  4b5e84:	00000000 	nop
  4b5e88:	24420044 	addiu	v0,v0,68
  4b5e8c:	8f81804c 	lw	at,-32692(gp)
  4b5e90:	00000000 	nop
  4b5e94:	24216b90 	addiu	at,at,27536
  4b5e98:	00221021 	addu	v0,at,v0
  4b5e9c:	90430000 	lbu	v1,0(v0)
  4b5ea0:	93c20022 	lbu	v0,34(s8)
  4b5ea4:	00000000 	nop
  4b5ea8:	00431026 	xor	v0,v0,v1
  4b5eac:	a3c20022 	sb	v0,34(s8)
  4b5eb0:	93c2002c 	lbu	v0,44(s8)
  4b5eb4:	00000000 	nop
  4b5eb8:	2442008a 	addiu	v0,v0,138
  4b5ebc:	8f81804c 	lw	at,-32692(gp)
  4b5ec0:	00000000 	nop
  4b5ec4:	24216b90 	addiu	at,at,27536
  4b5ec8:	00221021 	addu	v0,at,v0
  4b5ecc:	90430000 	lbu	v1,0(v0)
  4b5ed0:	93c20023 	lbu	v0,35(s8)
  4b5ed4:	00000000 	nop
  4b5ed8:	00431026 	xor	v0,v0,v1
  4b5edc:	a3c20023 	sb	v0,35(s8)
	CALC_S (se, sf, sg, sh, 10, 0x8A, 0xD5, 0xBF, 0xD1); /* 55 82 FC 87 */
  4b5ee0:	8fc2003c 	lw	v0,60(s8)
  4b5ee4:	00000000 	nop
  4b5ee8:	2442000a 	addiu	v0,v0,10
  4b5eec:	90420000 	lbu	v0,0(v0)
  4b5ef0:	00000000 	nop
  4b5ef4:	1040003e 	beqz	v0,4b5ff0 <twofish_set_key+0xc40>
  4b5ef8:	00000000 	nop
  4b5efc:	8fc2003c 	lw	v0,60(s8)
  4b5f00:	00000000 	nop
  4b5f04:	2442000a 	addiu	v0,v0,10
  4b5f08:	90420000 	lbu	v0,0(v0)
  4b5f0c:	00000000 	nop
  4b5f10:	2442ffff 	addiu	v0,v0,-1
  4b5f14:	8f81804c 	lw	at,-32692(gp)
  4b5f18:	00000000 	nop
  4b5f1c:	24216a90 	addiu	at,at,27280
  4b5f20:	00221021 	addu	v0,at,v0
  4b5f24:	90420000 	lbu	v0,0(v0)
  4b5f28:	00000000 	nop
  4b5f2c:	a3c2002c 	sb	v0,44(s8)
  4b5f30:	93c2002c 	lbu	v0,44(s8)
  4b5f34:	00000000 	nop
  4b5f38:	2442008a 	addiu	v0,v0,138
  4b5f3c:	8f81804c 	lw	at,-32692(gp)
  4b5f40:	00000000 	nop
  4b5f44:	24216b90 	addiu	at,at,27536
  4b5f48:	00221021 	addu	v0,at,v0
  4b5f4c:	90430000 	lbu	v1,0(v0)
  4b5f50:	93c20020 	lbu	v0,32(s8)
  4b5f54:	00000000 	nop
  4b5f58:	00431026 	xor	v0,v0,v1
  4b5f5c:	a3c20020 	sb	v0,32(s8)
  4b5f60:	93c2002c 	lbu	v0,44(s8)
  4b5f64:	00000000 	nop
  4b5f68:	244200d5 	addiu	v0,v0,213
  4b5f6c:	8f81804c 	lw	at,-32692(gp)
  4b5f70:	00000000 	nop
  4b5f74:	24216b90 	addiu	at,at,27536
  4b5f78:	00221021 	addu	v0,at,v0
  4b5f7c:	90430000 	lbu	v1,0(v0)
  4b5f80:	93c20021 	lbu	v0,33(s8)
  4b5f84:	00000000 	nop
  4b5f88:	00431026 	xor	v0,v0,v1
  4b5f8c:	a3c20021 	sb	v0,33(s8)
  4b5f90:	93c2002c 	lbu	v0,44(s8)
  4b5f94:	00000000 	nop
  4b5f98:	244200bf 	addiu	v0,v0,191
  4b5f9c:	8f81804c 	lw	at,-32692(gp)
  4b5fa0:	00000000 	nop
  4b5fa4:	24216b90 	addiu	at,at,27536
  4b5fa8:	00221021 	addu	v0,at,v0
  4b5fac:	90430000 	lbu	v1,0(v0)
  4b5fb0:	93c20022 	lbu	v0,34(s8)
  4b5fb4:	00000000 	nop
  4b5fb8:	00431026 	xor	v0,v0,v1
  4b5fbc:	a3c20022 	sb	v0,34(s8)
  4b5fc0:	93c2002c 	lbu	v0,44(s8)
  4b5fc4:	00000000 	nop
  4b5fc8:	244200d1 	addiu	v0,v0,209
  4b5fcc:	8f81804c 	lw	at,-32692(gp)
  4b5fd0:	00000000 	nop
  4b5fd4:	24216b90 	addiu	at,at,27536
  4b5fd8:	00221021 	addu	v0,at,v0
  4b5fdc:	90430000 	lbu	v1,0(v0)
  4b5fe0:	93c20023 	lbu	v0,35(s8)
  4b5fe4:	00000000 	nop
  4b5fe8:	00431026 	xor	v0,v0,v1
  4b5fec:	a3c20023 	sb	v0,35(s8)
	CALC_S (se, sf, sg, sh, 11, 0xD1, 0x7F, 0x3D, 0x99); /* 87 F3 C1 5A */
  4b5ff0:	8fc2003c 	lw	v0,60(s8)
  4b5ff4:	00000000 	nop
  4b5ff8:	2442000b 	addiu	v0,v0,11
  4b5ffc:	90420000 	lbu	v0,0(v0)
  4b6000:	00000000 	nop
  4b6004:	1040003e 	beqz	v0,4b6100 <twofish_set_key+0xd50>
  4b6008:	00000000 	nop
  4b600c:	8fc2003c 	lw	v0,60(s8)
  4b6010:	00000000 	nop
  4b6014:	2442000b 	addiu	v0,v0,11
  4b6018:	90420000 	lbu	v0,0(v0)
  4b601c:	00000000 	nop
  4b6020:	2442ffff 	addiu	v0,v0,-1
  4b6024:	8f81804c 	lw	at,-32692(gp)
  4b6028:	00000000 	nop
  4b602c:	24216a90 	addiu	at,at,27280
  4b6030:	00221021 	addu	v0,at,v0
  4b6034:	90420000 	lbu	v0,0(v0)
  4b6038:	00000000 	nop
  4b603c:	a3c2002c 	sb	v0,44(s8)
  4b6040:	93c2002c 	lbu	v0,44(s8)
  4b6044:	00000000 	nop
  4b6048:	244200d1 	addiu	v0,v0,209
  4b604c:	8f81804c 	lw	at,-32692(gp)
  4b6050:	00000000 	nop
  4b6054:	24216b90 	addiu	at,at,27536
  4b6058:	00221021 	addu	v0,at,v0
  4b605c:	90430000 	lbu	v1,0(v0)
  4b6060:	93c20020 	lbu	v0,32(s8)
  4b6064:	00000000 	nop
  4b6068:	00431026 	xor	v0,v0,v1
  4b606c:	a3c20020 	sb	v0,32(s8)
  4b6070:	93c2002c 	lbu	v0,44(s8)
  4b6074:	00000000 	nop
  4b6078:	2442007f 	addiu	v0,v0,127
  4b607c:	8f81804c 	lw	at,-32692(gp)
  4b6080:	00000000 	nop
  4b6084:	24216b90 	addiu	at,at,27536
  4b6088:	00221021 	addu	v0,at,v0
  4b608c:	90430000 	lbu	v1,0(v0)
  4b6090:	93c20021 	lbu	v0,33(s8)
  4b6094:	00000000 	nop
  4b6098:	00431026 	xor	v0,v0,v1
  4b609c:	a3c20021 	sb	v0,33(s8)
  4b60a0:	93c2002c 	lbu	v0,44(s8)
  4b60a4:	00000000 	nop
  4b60a8:	2442003d 	addiu	v0,v0,61
  4b60ac:	8f81804c 	lw	at,-32692(gp)
  4b60b0:	00000000 	nop
  4b60b4:	24216b90 	addiu	at,at,27536
  4b60b8:	00221021 	addu	v0,at,v0
  4b60bc:	90430000 	lbu	v1,0(v0)
  4b60c0:	93c20022 	lbu	v0,34(s8)
  4b60c4:	00000000 	nop
  4b60c8:	00431026 	xor	v0,v0,v1
  4b60cc:	a3c20022 	sb	v0,34(s8)
  4b60d0:	93c2002c 	lbu	v0,44(s8)
  4b60d4:	00000000 	nop
  4b60d8:	24420099 	addiu	v0,v0,153
  4b60dc:	8f81804c 	lw	at,-32692(gp)
  4b60e0:	00000000 	nop
  4b60e4:	24216b90 	addiu	at,at,27536
  4b60e8:	00221021 	addu	v0,at,v0
  4b60ec:	90430000 	lbu	v1,0(v0)
  4b60f0:	93c20023 	lbu	v0,35(s8)
  4b60f4:	00000000 	nop
  4b60f8:	00431026 	xor	v0,v0,v1
  4b60fc:	a3c20023 	sb	v0,35(s8)
	CALC_S (se, sf, sg, sh, 12, 0x99, 0x46, 0x66, 0x96); /* 5A 1E 47 58 */
  4b6100:	8fc2003c 	lw	v0,60(s8)
  4b6104:	00000000 	nop
  4b6108:	2442000c 	addiu	v0,v0,12
  4b610c:	90420000 	lbu	v0,0(v0)
  4b6110:	00000000 	nop
  4b6114:	1040003e 	beqz	v0,4b6210 <twofish_set_key+0xe60>
  4b6118:	00000000 	nop
  4b611c:	8fc2003c 	lw	v0,60(s8)
  4b6120:	00000000 	nop
  4b6124:	2442000c 	addiu	v0,v0,12
  4b6128:	90420000 	lbu	v0,0(v0)
  4b612c:	00000000 	nop
  4b6130:	2442ffff 	addiu	v0,v0,-1
  4b6134:	8f81804c 	lw	at,-32692(gp)
  4b6138:	00000000 	nop
  4b613c:	24216a90 	addiu	at,at,27280
  4b6140:	00221021 	addu	v0,at,v0
  4b6144:	90420000 	lbu	v0,0(v0)
  4b6148:	00000000 	nop
  4b614c:	a3c2002c 	sb	v0,44(s8)
  4b6150:	93c2002c 	lbu	v0,44(s8)
  4b6154:	00000000 	nop
  4b6158:	24420099 	addiu	v0,v0,153
  4b615c:	8f81804c 	lw	at,-32692(gp)
  4b6160:	00000000 	nop
  4b6164:	24216b90 	addiu	at,at,27536
  4b6168:	00221021 	addu	v0,at,v0
  4b616c:	90430000 	lbu	v1,0(v0)
  4b6170:	93c20020 	lbu	v0,32(s8)
  4b6174:	00000000 	nop
  4b6178:	00431026 	xor	v0,v0,v1
  4b617c:	a3c20020 	sb	v0,32(s8)
  4b6180:	93c2002c 	lbu	v0,44(s8)
  4b6184:	00000000 	nop
  4b6188:	24420046 	addiu	v0,v0,70
  4b618c:	8f81804c 	lw	at,-32692(gp)
  4b6190:	00000000 	nop
  4b6194:	24216b90 	addiu	at,at,27536
  4b6198:	00221021 	addu	v0,at,v0
  4b619c:	90430000 	lbu	v1,0(v0)
  4b61a0:	93c20021 	lbu	v0,33(s8)
  4b61a4:	00000000 	nop
  4b61a8:	00431026 	xor	v0,v0,v1
  4b61ac:	a3c20021 	sb	v0,33(s8)
  4b61b0:	93c2002c 	lbu	v0,44(s8)
  4b61b4:	00000000 	nop
  4b61b8:	24420066 	addiu	v0,v0,102
  4b61bc:	8f81804c 	lw	at,-32692(gp)
  4b61c0:	00000000 	nop
  4b61c4:	24216b90 	addiu	at,at,27536
  4b61c8:	00221021 	addu	v0,at,v0
  4b61cc:	90430000 	lbu	v1,0(v0)
  4b61d0:	93c20022 	lbu	v0,34(s8)
  4b61d4:	00000000 	nop
  4b61d8:	00431026 	xor	v0,v0,v1
  4b61dc:	a3c20022 	sb	v0,34(s8)
  4b61e0:	93c2002c 	lbu	v0,44(s8)
  4b61e4:	00000000 	nop
  4b61e8:	24420096 	addiu	v0,v0,150
  4b61ec:	8f81804c 	lw	at,-32692(gp)
  4b61f0:	00000000 	nop
  4b61f4:	24216b90 	addiu	at,at,27536
  4b61f8:	00221021 	addu	v0,at,v0
  4b61fc:	90430000 	lbu	v1,0(v0)
  4b6200:	93c20023 	lbu	v0,35(s8)
  4b6204:	00000000 	nop
  4b6208:	00431026 	xor	v0,v0,v1
  4b620c:	a3c20023 	sb	v0,35(s8)
	CALC_S (se, sf, sg, sh, 13, 0x96, 0x3C, 0x5B, 0xED); /* 58 C6 AE DB */
  4b6210:	8fc2003c 	lw	v0,60(s8)
  4b6214:	00000000 	nop
  4b6218:	2442000d 	addiu	v0,v0,13
  4b621c:	90420000 	lbu	v0,0(v0)
  4b6220:	00000000 	nop
  4b6224:	1040003e 	beqz	v0,4b6320 <twofish_set_key+0xf70>
  4b6228:	00000000 	nop
  4b622c:	8fc2003c 	lw	v0,60(s8)
  4b6230:	00000000 	nop
  4b6234:	2442000d 	addiu	v0,v0,13
  4b6238:	90420000 	lbu	v0,0(v0)
  4b623c:	00000000 	nop
  4b6240:	2442ffff 	addiu	v0,v0,-1
  4b6244:	8f81804c 	lw	at,-32692(gp)
  4b6248:	00000000 	nop
  4b624c:	24216a90 	addiu	at,at,27280
  4b6250:	00221021 	addu	v0,at,v0
  4b6254:	90420000 	lbu	v0,0(v0)
  4b6258:	00000000 	nop
  4b625c:	a3c2002c 	sb	v0,44(s8)
  4b6260:	93c2002c 	lbu	v0,44(s8)
  4b6264:	00000000 	nop
  4b6268:	24420096 	addiu	v0,v0,150
  4b626c:	8f81804c 	lw	at,-32692(gp)
  4b6270:	00000000 	nop
  4b6274:	24216b90 	addiu	at,at,27536
  4b6278:	00221021 	addu	v0,at,v0
  4b627c:	90430000 	lbu	v1,0(v0)
  4b6280:	93c20020 	lbu	v0,32(s8)
  4b6284:	00000000 	nop
  4b6288:	00431026 	xor	v0,v0,v1
  4b628c:	a3c20020 	sb	v0,32(s8)
  4b6290:	93c2002c 	lbu	v0,44(s8)
  4b6294:	00000000 	nop
  4b6298:	2442003c 	addiu	v0,v0,60
  4b629c:	8f81804c 	lw	at,-32692(gp)
  4b62a0:	00000000 	nop
  4b62a4:	24216b90 	addiu	at,at,27536
  4b62a8:	00221021 	addu	v0,at,v0
  4b62ac:	90430000 	lbu	v1,0(v0)
  4b62b0:	93c20021 	lbu	v0,33(s8)
  4b62b4:	00000000 	nop
  4b62b8:	00431026 	xor	v0,v0,v1
  4b62bc:	a3c20021 	sb	v0,33(s8)
  4b62c0:	93c2002c 	lbu	v0,44(s8)
  4b62c4:	00000000 	nop
  4b62c8:	2442005b 	addiu	v0,v0,91
  4b62cc:	8f81804c 	lw	at,-32692(gp)
  4b62d0:	00000000 	nop
  4b62d4:	24216b90 	addiu	at,at,27536
  4b62d8:	00221021 	addu	v0,at,v0
  4b62dc:	90430000 	lbu	v1,0(v0)
  4b62e0:	93c20022 	lbu	v0,34(s8)
  4b62e4:	00000000 	nop
  4b62e8:	00431026 	xor	v0,v0,v1
  4b62ec:	a3c20022 	sb	v0,34(s8)
  4b62f0:	93c2002c 	lbu	v0,44(s8)
  4b62f4:	00000000 	nop
  4b62f8:	244200ed 	addiu	v0,v0,237
  4b62fc:	8f81804c 	lw	at,-32692(gp)
  4b6300:	00000000 	nop
  4b6304:	24216b90 	addiu	at,at,27536
  4b6308:	00221021 	addu	v0,at,v0
  4b630c:	90430000 	lbu	v1,0(v0)
  4b6310:	93c20023 	lbu	v0,35(s8)
  4b6314:	00000000 	nop
  4b6318:	00431026 	xor	v0,v0,v1
  4b631c:	a3c20023 	sb	v0,35(s8)
	CALC_S (se, sf, sg, sh, 14, 0xED, 0x37, 0x4F, 0xE0); /* DB 68 3D 9E */
  4b6320:	8fc2003c 	lw	v0,60(s8)
  4b6324:	00000000 	nop
  4b6328:	2442000e 	addiu	v0,v0,14
  4b632c:	90420000 	lbu	v0,0(v0)
  4b6330:	00000000 	nop
  4b6334:	1040003e 	beqz	v0,4b6430 <twofish_set_key+0x1080>
  4b6338:	00000000 	nop
  4b633c:	8fc2003c 	lw	v0,60(s8)
  4b6340:	00000000 	nop
  4b6344:	2442000e 	addiu	v0,v0,14
  4b6348:	90420000 	lbu	v0,0(v0)
  4b634c:	00000000 	nop
  4b6350:	2442ffff 	addiu	v0,v0,-1
  4b6354:	8f81804c 	lw	at,-32692(gp)
  4b6358:	00000000 	nop
  4b635c:	24216a90 	addiu	at,at,27280
  4b6360:	00221021 	addu	v0,at,v0
  4b6364:	90420000 	lbu	v0,0(v0)
  4b6368:	00000000 	nop
  4b636c:	a3c2002c 	sb	v0,44(s8)
  4b6370:	93c2002c 	lbu	v0,44(s8)
  4b6374:	00000000 	nop
  4b6378:	244200ed 	addiu	v0,v0,237
  4b637c:	8f81804c 	lw	at,-32692(gp)
  4b6380:	00000000 	nop
  4b6384:	24216b90 	addiu	at,at,27536
  4b6388:	00221021 	addu	v0,at,v0
  4b638c:	90430000 	lbu	v1,0(v0)
  4b6390:	93c20020 	lbu	v0,32(s8)
  4b6394:	00000000 	nop
  4b6398:	00431026 	xor	v0,v0,v1
  4b639c:	a3c20020 	sb	v0,32(s8)
  4b63a0:	93c2002c 	lbu	v0,44(s8)
  4b63a4:	00000000 	nop
  4b63a8:	24420037 	addiu	v0,v0,55
  4b63ac:	8f81804c 	lw	at,-32692(gp)
  4b63b0:	00000000 	nop
  4b63b4:	24216b90 	addiu	at,at,27536
  4b63b8:	00221021 	addu	v0,at,v0
  4b63bc:	90430000 	lbu	v1,0(v0)
  4b63c0:	93c20021 	lbu	v0,33(s8)
  4b63c4:	00000000 	nop
  4b63c8:	00431026 	xor	v0,v0,v1
  4b63cc:	a3c20021 	sb	v0,33(s8)
  4b63d0:	93c2002c 	lbu	v0,44(s8)
  4b63d4:	00000000 	nop
  4b63d8:	2442004f 	addiu	v0,v0,79
  4b63dc:	8f81804c 	lw	at,-32692(gp)
  4b63e0:	00000000 	nop
  4b63e4:	24216b90 	addiu	at,at,27536
  4b63e8:	00221021 	addu	v0,at,v0
  4b63ec:	90430000 	lbu	v1,0(v0)
  4b63f0:	93c20022 	lbu	v0,34(s8)
  4b63f4:	00000000 	nop
  4b63f8:	00431026 	xor	v0,v0,v1
  4b63fc:	a3c20022 	sb	v0,34(s8)
  4b6400:	93c2002c 	lbu	v0,44(s8)
  4b6404:	00000000 	nop
  4b6408:	244200e0 	addiu	v0,v0,224
  4b640c:	8f81804c 	lw	at,-32692(gp)
  4b6410:	00000000 	nop
  4b6414:	24216b90 	addiu	at,at,27536
  4b6418:	00221021 	addu	v0,at,v0
  4b641c:	90430000 	lbu	v1,0(v0)
  4b6420:	93c20023 	lbu	v0,35(s8)
  4b6424:	00000000 	nop
  4b6428:	00431026 	xor	v0,v0,v1
  4b642c:	a3c20023 	sb	v0,35(s8)
	CALC_S (se, sf, sg, sh, 15, 0xE0, 0xD0, 0x8C, 0x17); /* 9E E5 19 03 */
  4b6430:	8fc2003c 	lw	v0,60(s8)
  4b6434:	00000000 	nop
  4b6438:	2442000f 	addiu	v0,v0,15
  4b643c:	90420000 	lbu	v0,0(v0)
  4b6440:	00000000 	nop
  4b6444:	1040003e 	beqz	v0,4b6540 <twofish_set_key+0x1190>
  4b6448:	00000000 	nop
  4b644c:	8fc2003c 	lw	v0,60(s8)
  4b6450:	00000000 	nop
  4b6454:	2442000f 	addiu	v0,v0,15
  4b6458:	90420000 	lbu	v0,0(v0)
  4b645c:	00000000 	nop
  4b6460:	2442ffff 	addiu	v0,v0,-1
  4b6464:	8f81804c 	lw	at,-32692(gp)
  4b6468:	00000000 	nop
  4b646c:	24216a90 	addiu	at,at,27280
  4b6470:	00221021 	addu	v0,at,v0
  4b6474:	90420000 	lbu	v0,0(v0)
  4b6478:	00000000 	nop
  4b647c:	a3c2002c 	sb	v0,44(s8)
  4b6480:	93c2002c 	lbu	v0,44(s8)
  4b6484:	00000000 	nop
  4b6488:	244200e0 	addiu	v0,v0,224
  4b648c:	8f81804c 	lw	at,-32692(gp)
  4b6490:	00000000 	nop
  4b6494:	24216b90 	addiu	at,at,27536
  4b6498:	00221021 	addu	v0,at,v0
  4b649c:	90430000 	lbu	v1,0(v0)
  4b64a0:	93c20020 	lbu	v0,32(s8)
  4b64a4:	00000000 	nop
  4b64a8:	00431026 	xor	v0,v0,v1
  4b64ac:	a3c20020 	sb	v0,32(s8)
  4b64b0:	93c2002c 	lbu	v0,44(s8)
  4b64b4:	00000000 	nop
  4b64b8:	244200d0 	addiu	v0,v0,208
  4b64bc:	8f81804c 	lw	at,-32692(gp)
  4b64c0:	00000000 	nop
  4b64c4:	24216b90 	addiu	at,at,27536
  4b64c8:	00221021 	addu	v0,at,v0
  4b64cc:	90430000 	lbu	v1,0(v0)
  4b64d0:	93c20021 	lbu	v0,33(s8)
  4b64d4:	00000000 	nop
  4b64d8:	00431026 	xor	v0,v0,v1
  4b64dc:	a3c20021 	sb	v0,33(s8)
  4b64e0:	93c2002c 	lbu	v0,44(s8)
  4b64e4:	00000000 	nop
  4b64e8:	2442008c 	addiu	v0,v0,140
  4b64ec:	8f81804c 	lw	at,-32692(gp)
  4b64f0:	00000000 	nop
  4b64f4:	24216b90 	addiu	at,at,27536
  4b64f8:	00221021 	addu	v0,at,v0
  4b64fc:	90430000 	lbu	v1,0(v0)
  4b6500:	93c20022 	lbu	v0,34(s8)
  4b6504:	00000000 	nop
  4b6508:	00431026 	xor	v0,v0,v1
  4b650c:	a3c20022 	sb	v0,34(s8)
  4b6510:	93c2002c 	lbu	v0,44(s8)
  4b6514:	00000000 	nop
  4b6518:	24420017 	addiu	v0,v0,23
  4b651c:	8f81804c 	lw	at,-32692(gp)
  4b6520:	00000000 	nop
  4b6524:	24216b90 	addiu	at,at,27536
  4b6528:	00221021 	addu	v0,at,v0
  4b652c:	90430000 	lbu	v1,0(v0)
  4b6530:	93c20023 	lbu	v0,35(s8)
  4b6534:	00000000 	nop
  4b6538:	00431026 	xor	v0,v0,v1
  4b653c:	a3c20023 	sb	v0,35(s8)

	if (key_len == 24 || key_len == 32) { /* 192- or 256-bit key */
  4b6540:	8fc30040 	lw	v1,64(s8)
  4b6544:	24020018 	li	v0,24
  4b6548:	10620007 	beq	v1,v0,4b6568 <twofish_set_key+0x11b8>
  4b654c:	00000000 	nop
  4b6550:	8fc30040 	lw	v1,64(s8)
  4b6554:	24020020 	li	v0,32
  4b6558:	10620003 	beq	v1,v0,4b6568 <twofish_set_key+0x11b8>
  4b655c:	00000000 	nop
  4b6560:	1000021f 	b	4b6de0 <twofish_set_key+0x1a30>
  4b6564:	00000000 	nop
		/* Calculate the third word of the S vector */
		CALC_S (si, sj, sk, sl, 16, 0x00, 0x2D, 0x01, 0x2D); /* 01 A4 02 A4 */
  4b6568:	8fc2003c 	lw	v0,60(s8)
  4b656c:	00000000 	nop
  4b6570:	24420010 	addiu	v0,v0,16
  4b6574:	90420000 	lbu	v0,0(v0)
  4b6578:	00000000 	nop
  4b657c:	1040003c 	beqz	v0,4b6670 <twofish_set_key+0x12c0>
  4b6580:	00000000 	nop
  4b6584:	8fc2003c 	lw	v0,60(s8)
  4b6588:	00000000 	nop
  4b658c:	24420010 	addiu	v0,v0,16
  4b6590:	90420000 	lbu	v0,0(v0)
  4b6594:	00000000 	nop
  4b6598:	2442ffff 	addiu	v0,v0,-1
  4b659c:	8f81804c 	lw	at,-32692(gp)
  4b65a0:	00000000 	nop
  4b65a4:	24216a90 	addiu	at,at,27280
  4b65a8:	00221021 	addu	v0,at,v0
  4b65ac:	90420000 	lbu	v0,0(v0)
  4b65b0:	00000000 	nop
  4b65b4:	a3c2002c 	sb	v0,44(s8)
  4b65b8:	93c2002c 	lbu	v0,44(s8)
  4b65bc:	8f81804c 	lw	at,-32692(gp)
  4b65c0:	00000000 	nop
  4b65c4:	24216b90 	addiu	at,at,27536
  4b65c8:	00221021 	addu	v0,at,v0
  4b65cc:	90430000 	lbu	v1,0(v0)
  4b65d0:	93c20024 	lbu	v0,36(s8)
  4b65d4:	00000000 	nop
  4b65d8:	00431026 	xor	v0,v0,v1
  4b65dc:	a3c20024 	sb	v0,36(s8)
  4b65e0:	93c2002c 	lbu	v0,44(s8)
  4b65e4:	00000000 	nop
  4b65e8:	2442002d 	addiu	v0,v0,45
  4b65ec:	8f81804c 	lw	at,-32692(gp)
  4b65f0:	00000000 	nop
  4b65f4:	24216b90 	addiu	at,at,27536
  4b65f8:	00221021 	addu	v0,at,v0
  4b65fc:	90430000 	lbu	v1,0(v0)
  4b6600:	93c20025 	lbu	v0,37(s8)
  4b6604:	00000000 	nop
  4b6608:	00431026 	xor	v0,v0,v1
  4b660c:	a3c20025 	sb	v0,37(s8)
  4b6610:	93c2002c 	lbu	v0,44(s8)
  4b6614:	00000000 	nop
  4b6618:	24420001 	addiu	v0,v0,1
  4b661c:	8f81804c 	lw	at,-32692(gp)
  4b6620:	00000000 	nop
  4b6624:	24216b90 	addiu	at,at,27536
  4b6628:	00221021 	addu	v0,at,v0
  4b662c:	90430000 	lbu	v1,0(v0)
  4b6630:	93c20026 	lbu	v0,38(s8)
  4b6634:	00000000 	nop
  4b6638:	00431026 	xor	v0,v0,v1
  4b663c:	a3c20026 	sb	v0,38(s8)
  4b6640:	93c2002c 	lbu	v0,44(s8)
  4b6644:	00000000 	nop
  4b6648:	2442002d 	addiu	v0,v0,45
  4b664c:	8f81804c 	lw	at,-32692(gp)
  4b6650:	00000000 	nop
  4b6654:	24216b90 	addiu	at,at,27536
  4b6658:	00221021 	addu	v0,at,v0
  4b665c:	90430000 	lbu	v1,0(v0)
  4b6660:	93c20027 	lbu	v0,39(s8)
  4b6664:	00000000 	nop
  4b6668:	00431026 	xor	v0,v0,v1
  4b666c:	a3c20027 	sb	v0,39(s8)
		CALC_S (si, sj, sk, sl, 17, 0x2D, 0xA4, 0x44, 0x8A); /* A4 56 A1 55 */
  4b6670:	8fc2003c 	lw	v0,60(s8)
  4b6674:	00000000 	nop
  4b6678:	24420011 	addiu	v0,v0,17
  4b667c:	90420000 	lbu	v0,0(v0)
  4b6680:	00000000 	nop
  4b6684:	1040003e 	beqz	v0,4b6780 <twofish_set_key+0x13d0>
  4b6688:	00000000 	nop
  4b668c:	8fc2003c 	lw	v0,60(s8)
  4b6690:	00000000 	nop
  4b6694:	24420011 	addiu	v0,v0,17
  4b6698:	90420000 	lbu	v0,0(v0)
  4b669c:	00000000 	nop
  4b66a0:	2442ffff 	addiu	v0,v0,-1
  4b66a4:	8f81804c 	lw	at,-32692(gp)
  4b66a8:	00000000 	nop
  4b66ac:	24216a90 	addiu	at,at,27280
  4b66b0:	00221021 	addu	v0,at,v0
  4b66b4:	90420000 	lbu	v0,0(v0)
  4b66b8:	00000000 	nop
  4b66bc:	a3c2002c 	sb	v0,44(s8)
  4b66c0:	93c2002c 	lbu	v0,44(s8)
  4b66c4:	00000000 	nop
  4b66c8:	2442002d 	addiu	v0,v0,45
  4b66cc:	8f81804c 	lw	at,-32692(gp)
  4b66d0:	00000000 	nop
  4b66d4:	24216b90 	addiu	at,at,27536
  4b66d8:	00221021 	addu	v0,at,v0
  4b66dc:	90430000 	lbu	v1,0(v0)
  4b66e0:	93c20024 	lbu	v0,36(s8)
  4b66e4:	00000000 	nop
  4b66e8:	00431026 	xor	v0,v0,v1
  4b66ec:	a3c20024 	sb	v0,36(s8)
  4b66f0:	93c2002c 	lbu	v0,44(s8)
  4b66f4:	00000000 	nop
  4b66f8:	244200a4 	addiu	v0,v0,164
  4b66fc:	8f81804c 	lw	at,-32692(gp)
  4b6700:	00000000 	nop
  4b6704:	24216b90 	addiu	at,at,27536
  4b6708:	00221021 	addu	v0,at,v0
  4b670c:	90430000 	lbu	v1,0(v0)
  4b6710:	93c20025 	lbu	v0,37(s8)
  4b6714:	00000000 	nop
  4b6718:	00431026 	xor	v0,v0,v1
  4b671c:	a3c20025 	sb	v0,37(s8)
  4b6720:	93c2002c 	lbu	v0,44(s8)
  4b6724:	00000000 	nop
  4b6728:	24420044 	addiu	v0,v0,68
  4b672c:	8f81804c 	lw	at,-32692(gp)
  4b6730:	00000000 	nop
  4b6734:	24216b90 	addiu	at,at,27536
  4b6738:	00221021 	addu	v0,at,v0
  4b673c:	90430000 	lbu	v1,0(v0)
  4b6740:	93c20026 	lbu	v0,38(s8)
  4b6744:	00000000 	nop
  4b6748:	00431026 	xor	v0,v0,v1
  4b674c:	a3c20026 	sb	v0,38(s8)
  4b6750:	93c2002c 	lbu	v0,44(s8)
  4b6754:	00000000 	nop
  4b6758:	2442008a 	addiu	v0,v0,138
  4b675c:	8f81804c 	lw	at,-32692(gp)
  4b6760:	00000000 	nop
  4b6764:	24216b90 	addiu	at,at,27536
  4b6768:	00221021 	addu	v0,at,v0
  4b676c:	90430000 	lbu	v1,0(v0)
  4b6770:	93c20027 	lbu	v0,39(s8)
  4b6774:	00000000 	nop
  4b6778:	00431026 	xor	v0,v0,v1
  4b677c:	a3c20027 	sb	v0,39(s8)
		CALC_S (si, sj, sk, sl, 18, 0x8A, 0xD5, 0xBF, 0xD1); /* 55 82 FC 87 */
  4b6780:	8fc2003c 	lw	v0,60(s8)
  4b6784:	00000000 	nop
  4b6788:	24420012 	addiu	v0,v0,18
  4b678c:	90420000 	lbu	v0,0(v0)
  4b6790:	00000000 	nop
  4b6794:	1040003e 	beqz	v0,4b6890 <twofish_set_key+0x14e0>
  4b6798:	00000000 	nop
  4b679c:	8fc2003c 	lw	v0,60(s8)
  4b67a0:	00000000 	nop
  4b67a4:	24420012 	addiu	v0,v0,18
  4b67a8:	90420000 	lbu	v0,0(v0)
  4b67ac:	00000000 	nop
  4b67b0:	2442ffff 	addiu	v0,v0,-1
  4b67b4:	8f81804c 	lw	at,-32692(gp)
  4b67b8:	00000000 	nop
  4b67bc:	24216a90 	addiu	at,at,27280
  4b67c0:	00221021 	addu	v0,at,v0
  4b67c4:	90420000 	lbu	v0,0(v0)
  4b67c8:	00000000 	nop
  4b67cc:	a3c2002c 	sb	v0,44(s8)
  4b67d0:	93c2002c 	lbu	v0,44(s8)
  4b67d4:	00000000 	nop
  4b67d8:	2442008a 	addiu	v0,v0,138
  4b67dc:	8f81804c 	lw	at,-32692(gp)
  4b67e0:	00000000 	nop
  4b67e4:	24216b90 	addiu	at,at,27536
  4b67e8:	00221021 	addu	v0,at,v0
  4b67ec:	90430000 	lbu	v1,0(v0)
  4b67f0:	93c20024 	lbu	v0,36(s8)
  4b67f4:	00000000 	nop
  4b67f8:	00431026 	xor	v0,v0,v1
  4b67fc:	a3c20024 	sb	v0,36(s8)
  4b6800:	93c2002c 	lbu	v0,44(s8)
  4b6804:	00000000 	nop
  4b6808:	244200d5 	addiu	v0,v0,213
  4b680c:	8f81804c 	lw	at,-32692(gp)
  4b6810:	00000000 	nop
  4b6814:	24216b90 	addiu	at,at,27536
  4b6818:	00221021 	addu	v0,at,v0
  4b681c:	90430000 	lbu	v1,0(v0)
  4b6820:	93c20025 	lbu	v0,37(s8)
  4b6824:	00000000 	nop
  4b6828:	00431026 	xor	v0,v0,v1
  4b682c:	a3c20025 	sb	v0,37(s8)
  4b6830:	93c2002c 	lbu	v0,44(s8)
  4b6834:	00000000 	nop
  4b6838:	244200bf 	addiu	v0,v0,191
  4b683c:	8f81804c 	lw	at,-32692(gp)
  4b6840:	00000000 	nop
  4b6844:	24216b90 	addiu	at,at,27536
  4b6848:	00221021 	addu	v0,at,v0
  4b684c:	90430000 	lbu	v1,0(v0)
  4b6850:	93c20026 	lbu	v0,38(s8)
  4b6854:	00000000 	nop
  4b6858:	00431026 	xor	v0,v0,v1
  4b685c:	a3c20026 	sb	v0,38(s8)
  4b6860:	93c2002c 	lbu	v0,44(s8)
  4b6864:	00000000 	nop
  4b6868:	244200d1 	addiu	v0,v0,209
  4b686c:	8f81804c 	lw	at,-32692(gp)
  4b6870:	00000000 	nop
  4b6874:	24216b90 	addiu	at,at,27536
  4b6878:	00221021 	addu	v0,at,v0
  4b687c:	90430000 	lbu	v1,0(v0)
  4b6880:	93c20027 	lbu	v0,39(s8)
  4b6884:	00000000 	nop
  4b6888:	00431026 	xor	v0,v0,v1
  4b688c:	a3c20027 	sb	v0,39(s8)
		CALC_S (si, sj, sk, sl, 19, 0xD1, 0x7F, 0x3D, 0x99); /* 87 F3 C1 5A */
  4b6890:	8fc2003c 	lw	v0,60(s8)
  4b6894:	00000000 	nop
  4b6898:	24420013 	addiu	v0,v0,19
  4b689c:	90420000 	lbu	v0,0(v0)
  4b68a0:	00000000 	nop
  4b68a4:	1040003e 	beqz	v0,4b69a0 <twofish_set_key+0x15f0>
  4b68a8:	00000000 	nop
  4b68ac:	8fc2003c 	lw	v0,60(s8)
  4b68b0:	00000000 	nop
  4b68b4:	24420013 	addiu	v0,v0,19
  4b68b8:	90420000 	lbu	v0,0(v0)
  4b68bc:	00000000 	nop
  4b68c0:	2442ffff 	addiu	v0,v0,-1
  4b68c4:	8f81804c 	lw	at,-32692(gp)
  4b68c8:	00000000 	nop
  4b68cc:	24216a90 	addiu	at,at,27280
  4b68d0:	00221021 	addu	v0,at,v0
  4b68d4:	90420000 	lbu	v0,0(v0)
  4b68d8:	00000000 	nop
  4b68dc:	a3c2002c 	sb	v0,44(s8)
  4b68e0:	93c2002c 	lbu	v0,44(s8)
  4b68e4:	00000000 	nop
  4b68e8:	244200d1 	addiu	v0,v0,209
  4b68ec:	8f81804c 	lw	at,-32692(gp)
  4b68f0:	00000000 	nop
  4b68f4:	24216b90 	addiu	at,at,27536
  4b68f8:	00221021 	addu	v0,at,v0
  4b68fc:	90430000 	lbu	v1,0(v0)
  4b6900:	93c20024 	lbu	v0,36(s8)
  4b6904:	00000000 	nop
  4b6908:	00431026 	xor	v0,v0,v1
  4b690c:	a3c20024 	sb	v0,36(s8)
  4b6910:	93c2002c 	lbu	v0,44(s8)
  4b6914:	00000000 	nop
  4b6918:	2442007f 	addiu	v0,v0,127
  4b691c:	8f81804c 	lw	at,-32692(gp)
  4b6920:	00000000 	nop
  4b6924:	24216b90 	addiu	at,at,27536
  4b6928:	00221021 	addu	v0,at,v0
  4b692c:	90430000 	lbu	v1,0(v0)
  4b6930:	93c20025 	lbu	v0,37(s8)
  4b6934:	00000000 	nop
  4b6938:	00431026 	xor	v0,v0,v1
  4b693c:	a3c20025 	sb	v0,37(s8)
  4b6940:	93c2002c 	lbu	v0,44(s8)
  4b6944:	00000000 	nop
  4b6948:	2442003d 	addiu	v0,v0,61
  4b694c:	8f81804c 	lw	at,-32692(gp)
  4b6950:	00000000 	nop
  4b6954:	24216b90 	addiu	at,at,27536
  4b6958:	00221021 	addu	v0,at,v0
  4b695c:	90430000 	lbu	v1,0(v0)
  4b6960:	93c20026 	lbu	v0,38(s8)
  4b6964:	00000000 	nop
  4b6968:	00431026 	xor	v0,v0,v1
  4b696c:	a3c20026 	sb	v0,38(s8)
  4b6970:	93c2002c 	lbu	v0,44(s8)
  4b6974:	00000000 	nop
  4b6978:	24420099 	addiu	v0,v0,153
  4b697c:	8f81804c 	lw	at,-32692(gp)
  4b6980:	00000000 	nop
  4b6984:	24216b90 	addiu	at,at,27536
  4b6988:	00221021 	addu	v0,at,v0
  4b698c:	90430000 	lbu	v1,0(v0)
  4b6990:	93c20027 	lbu	v0,39(s8)
  4b6994:	00000000 	nop
  4b6998:	00431026 	xor	v0,v0,v1
  4b699c:	a3c20027 	sb	v0,39(s8)
		CALC_S (si, sj, sk, sl, 20, 0x99, 0x46, 0x66, 0x96); /* 5A 1E 47 58 */
  4b69a0:	8fc2003c 	lw	v0,60(s8)
  4b69a4:	00000000 	nop
  4b69a8:	24420014 	addiu	v0,v0,20
  4b69ac:	90420000 	lbu	v0,0(v0)
  4b69b0:	00000000 	nop
  4b69b4:	1040003e 	beqz	v0,4b6ab0 <twofish_set_key+0x1700>
  4b69b8:	00000000 	nop
  4b69bc:	8fc2003c 	lw	v0,60(s8)
  4b69c0:	00000000 	nop
  4b69c4:	24420014 	addiu	v0,v0,20
  4b69c8:	90420000 	lbu	v0,0(v0)
  4b69cc:	00000000 	nop
  4b69d0:	2442ffff 	addiu	v0,v0,-1
  4b69d4:	8f81804c 	lw	at,-32692(gp)
  4b69d8:	00000000 	nop
  4b69dc:	24216a90 	addiu	at,at,27280
  4b69e0:	00221021 	addu	v0,at,v0
  4b69e4:	90420000 	lbu	v0,0(v0)
  4b69e8:	00000000 	nop
  4b69ec:	a3c2002c 	sb	v0,44(s8)
  4b69f0:	93c2002c 	lbu	v0,44(s8)
  4b69f4:	00000000 	nop
  4b69f8:	24420099 	addiu	v0,v0,153
  4b69fc:	8f81804c 	lw	at,-32692(gp)
  4b6a00:	00000000 	nop
  4b6a04:	24216b90 	addiu	at,at,27536
  4b6a08:	00221021 	addu	v0,at,v0
  4b6a0c:	90430000 	lbu	v1,0(v0)
  4b6a10:	93c20024 	lbu	v0,36(s8)
  4b6a14:	00000000 	nop
  4b6a18:	00431026 	xor	v0,v0,v1
  4b6a1c:	a3c20024 	sb	v0,36(s8)
  4b6a20:	93c2002c 	lbu	v0,44(s8)
  4b6a24:	00000000 	nop
  4b6a28:	24420046 	addiu	v0,v0,70
  4b6a2c:	8f81804c 	lw	at,-32692(gp)
  4b6a30:	00000000 	nop
  4b6a34:	24216b90 	addiu	at,at,27536
  4b6a38:	00221021 	addu	v0,at,v0
  4b6a3c:	90430000 	lbu	v1,0(v0)
  4b6a40:	93c20025 	lbu	v0,37(s8)
  4b6a44:	00000000 	nop
  4b6a48:	00431026 	xor	v0,v0,v1
  4b6a4c:	a3c20025 	sb	v0,37(s8)
  4b6a50:	93c2002c 	lbu	v0,44(s8)
  4b6a54:	00000000 	nop
  4b6a58:	24420066 	addiu	v0,v0,102
  4b6a5c:	8f81804c 	lw	at,-32692(gp)
  4b6a60:	00000000 	nop
  4b6a64:	24216b90 	addiu	at,at,27536
  4b6a68:	00221021 	addu	v0,at,v0
  4b6a6c:	90430000 	lbu	v1,0(v0)
  4b6a70:	93c20026 	lbu	v0,38(s8)
  4b6a74:	00000000 	nop
  4b6a78:	00431026 	xor	v0,v0,v1
  4b6a7c:	a3c20026 	sb	v0,38(s8)
  4b6a80:	93c2002c 	lbu	v0,44(s8)
  4b6a84:	00000000 	nop
  4b6a88:	24420096 	addiu	v0,v0,150
  4b6a8c:	8f81804c 	lw	at,-32692(gp)
  4b6a90:	00000000 	nop
  4b6a94:	24216b90 	addiu	at,at,27536
  4b6a98:	00221021 	addu	v0,at,v0
  4b6a9c:	90430000 	lbu	v1,0(v0)
  4b6aa0:	93c20027 	lbu	v0,39(s8)
  4b6aa4:	00000000 	nop
  4b6aa8:	00431026 	xor	v0,v0,v1
  4b6aac:	a3c20027 	sb	v0,39(s8)
		CALC_S (si, sj, sk, sl, 21, 0x96, 0x3C, 0x5B, 0xED); /* 58 C6 AE DB */
  4b6ab0:	8fc2003c 	lw	v0,60(s8)
  4b6ab4:	00000000 	nop
  4b6ab8:	24420015 	addiu	v0,v0,21
  4b6abc:	90420000 	lbu	v0,0(v0)
  4b6ac0:	00000000 	nop
  4b6ac4:	1040003e 	beqz	v0,4b6bc0 <twofish_set_key+0x1810>
  4b6ac8:	00000000 	nop
  4b6acc:	8fc2003c 	lw	v0,60(s8)
  4b6ad0:	00000000 	nop
  4b6ad4:	24420015 	addiu	v0,v0,21
  4b6ad8:	90420000 	lbu	v0,0(v0)
  4b6adc:	00000000 	nop
  4b6ae0:	2442ffff 	addiu	v0,v0,-1
  4b6ae4:	8f81804c 	lw	at,-32692(gp)
  4b6ae8:	00000000 	nop
  4b6aec:	24216a90 	addiu	at,at,27280
  4b6af0:	00221021 	addu	v0,at,v0
  4b6af4:	90420000 	lbu	v0,0(v0)
  4b6af8:	00000000 	nop
  4b6afc:	a3c2002c 	sb	v0,44(s8)
  4b6b00:	93c2002c 	lbu	v0,44(s8)
  4b6b04:	00000000 	nop
  4b6b08:	24420096 	addiu	v0,v0,150
  4b6b0c:	8f81804c 	lw	at,-32692(gp)
  4b6b10:	00000000 	nop
  4b6b14:	24216b90 	addiu	at,at,27536
  4b6b18:	00221021 	addu	v0,at,v0
  4b6b1c:	90430000 	lbu	v1,0(v0)
  4b6b20:	93c20024 	lbu	v0,36(s8)
  4b6b24:	00000000 	nop
  4b6b28:	00431026 	xor	v0,v0,v1
  4b6b2c:	a3c20024 	sb	v0,36(s8)
  4b6b30:	93c2002c 	lbu	v0,44(s8)
  4b6b34:	00000000 	nop
  4b6b38:	2442003c 	addiu	v0,v0,60
  4b6b3c:	8f81804c 	lw	at,-32692(gp)
  4b6b40:	00000000 	nop
  4b6b44:	24216b90 	addiu	at,at,27536
  4b6b48:	00221021 	addu	v0,at,v0
  4b6b4c:	90430000 	lbu	v1,0(v0)
  4b6b50:	93c20025 	lbu	v0,37(s8)
  4b6b54:	00000000 	nop
  4b6b58:	00431026 	xor	v0,v0,v1
  4b6b5c:	a3c20025 	sb	v0,37(s8)
  4b6b60:	93c2002c 	lbu	v0,44(s8)
  4b6b64:	00000000 	nop
  4b6b68:	2442005b 	addiu	v0,v0,91
  4b6b6c:	8f81804c 	lw	at,-32692(gp)
  4b6b70:	00000000 	nop
  4b6b74:	24216b90 	addiu	at,at,27536
  4b6b78:	00221021 	addu	v0,at,v0
  4b6b7c:	90430000 	lbu	v1,0(v0)
  4b6b80:	93c20026 	lbu	v0,38(s8)
  4b6b84:	00000000 	nop
  4b6b88:	00431026 	xor	v0,v0,v1
  4b6b8c:	a3c20026 	sb	v0,38(s8)
  4b6b90:	93c2002c 	lbu	v0,44(s8)
  4b6b94:	00000000 	nop
  4b6b98:	244200ed 	addiu	v0,v0,237
  4b6b9c:	8f81804c 	lw	at,-32692(gp)
  4b6ba0:	00000000 	nop
  4b6ba4:	24216b90 	addiu	at,at,27536
  4b6ba8:	00221021 	addu	v0,at,v0
  4b6bac:	90430000 	lbu	v1,0(v0)
  4b6bb0:	93c20027 	lbu	v0,39(s8)
  4b6bb4:	00000000 	nop
  4b6bb8:	00431026 	xor	v0,v0,v1
  4b6bbc:	a3c20027 	sb	v0,39(s8)
		CALC_S (si, sj, sk, sl, 22, 0xED, 0x37, 0x4F, 0xE0); /* DB 68 3D 9E */
  4b6bc0:	8fc2003c 	lw	v0,60(s8)
  4b6bc4:	00000000 	nop
  4b6bc8:	24420016 	addiu	v0,v0,22
  4b6bcc:	90420000 	lbu	v0,0(v0)
  4b6bd0:	00000000 	nop
  4b6bd4:	1040003e 	beqz	v0,4b6cd0 <twofish_set_key+0x1920>
  4b6bd8:	00000000 	nop
  4b6bdc:	8fc2003c 	lw	v0,60(s8)
  4b6be0:	00000000 	nop
  4b6be4:	24420016 	addiu	v0,v0,22
  4b6be8:	90420000 	lbu	v0,0(v0)
  4b6bec:	00000000 	nop
  4b6bf0:	2442ffff 	addiu	v0,v0,-1
  4b6bf4:	8f81804c 	lw	at,-32692(gp)
  4b6bf8:	00000000 	nop
  4b6bfc:	24216a90 	addiu	at,at,27280
  4b6c00:	00221021 	addu	v0,at,v0
  4b6c04:	90420000 	lbu	v0,0(v0)
  4b6c08:	00000000 	nop
  4b6c0c:	a3c2002c 	sb	v0,44(s8)
  4b6c10:	93c2002c 	lbu	v0,44(s8)
  4b6c14:	00000000 	nop
  4b6c18:	244200ed 	addiu	v0,v0,237
  4b6c1c:	8f81804c 	lw	at,-32692(gp)
  4b6c20:	00000000 	nop
  4b6c24:	24216b90 	addiu	at,at,27536
  4b6c28:	00221021 	addu	v0,at,v0
  4b6c2c:	90430000 	lbu	v1,0(v0)
  4b6c30:	93c20024 	lbu	v0,36(s8)
  4b6c34:	00000000 	nop
  4b6c38:	00431026 	xor	v0,v0,v1
  4b6c3c:	a3c20024 	sb	v0,36(s8)
  4b6c40:	93c2002c 	lbu	v0,44(s8)
  4b6c44:	00000000 	nop
  4b6c48:	24420037 	addiu	v0,v0,55
  4b6c4c:	8f81804c 	lw	at,-32692(gp)
  4b6c50:	00000000 	nop
  4b6c54:	24216b90 	addiu	at,at,27536
  4b6c58:	00221021 	addu	v0,at,v0
  4b6c5c:	90430000 	lbu	v1,0(v0)
  4b6c60:	93c20025 	lbu	v0,37(s8)
  4b6c64:	00000000 	nop
  4b6c68:	00431026 	xor	v0,v0,v1
  4b6c6c:	a3c20025 	sb	v0,37(s8)
  4b6c70:	93c2002c 	lbu	v0,44(s8)
  4b6c74:	00000000 	nop
  4b6c78:	2442004f 	addiu	v0,v0,79
  4b6c7c:	8f81804c 	lw	at,-32692(gp)
  4b6c80:	00000000 	nop
  4b6c84:	24216b90 	addiu	at,at,27536
  4b6c88:	00221021 	addu	v0,at,v0
  4b6c8c:	90430000 	lbu	v1,0(v0)
  4b6c90:	93c20026 	lbu	v0,38(s8)
  4b6c94:	00000000 	nop
  4b6c98:	00431026 	xor	v0,v0,v1
  4b6c9c:	a3c20026 	sb	v0,38(s8)
  4b6ca0:	93c2002c 	lbu	v0,44(s8)
  4b6ca4:	00000000 	nop
  4b6ca8:	244200e0 	addiu	v0,v0,224
  4b6cac:	8f81804c 	lw	at,-32692(gp)
  4b6cb0:	00000000 	nop
  4b6cb4:	24216b90 	addiu	at,at,27536
  4b6cb8:	00221021 	addu	v0,at,v0
  4b6cbc:	90430000 	lbu	v1,0(v0)
  4b6cc0:	93c20027 	lbu	v0,39(s8)
  4b6cc4:	00000000 	nop
  4b6cc8:	00431026 	xor	v0,v0,v1
  4b6ccc:	a3c20027 	sb	v0,39(s8)
		CALC_S (si, sj, sk, sl, 23, 0xE0, 0xD0, 0x8C, 0x17); /* 9E E5 19 03 */
  4b6cd0:	8fc2003c 	lw	v0,60(s8)
  4b6cd4:	00000000 	nop
  4b6cd8:	24420017 	addiu	v0,v0,23
  4b6cdc:	90420000 	lbu	v0,0(v0)
  4b6ce0:	00000000 	nop
  4b6ce4:	1040003e 	beqz	v0,4b6de0 <twofish_set_key+0x1a30>
  4b6ce8:	00000000 	nop
  4b6cec:	8fc2003c 	lw	v0,60(s8)
  4b6cf0:	00000000 	nop
  4b6cf4:	24420017 	addiu	v0,v0,23
  4b6cf8:	90420000 	lbu	v0,0(v0)
  4b6cfc:	00000000 	nop
  4b6d00:	2442ffff 	addiu	v0,v0,-1
  4b6d04:	8f81804c 	lw	at,-32692(gp)
  4b6d08:	00000000 	nop
  4b6d0c:	24216a90 	addiu	at,at,27280
  4b6d10:	00221021 	addu	v0,at,v0
  4b6d14:	90420000 	lbu	v0,0(v0)
  4b6d18:	00000000 	nop
  4b6d1c:	a3c2002c 	sb	v0,44(s8)
  4b6d20:	93c2002c 	lbu	v0,44(s8)
  4b6d24:	00000000 	nop
  4b6d28:	244200e0 	addiu	v0,v0,224
  4b6d2c:	8f81804c 	lw	at,-32692(gp)
  4b6d30:	00000000 	nop
  4b6d34:	24216b90 	addiu	at,at,27536
  4b6d38:	00221021 	addu	v0,at,v0
  4b6d3c:	90430000 	lbu	v1,0(v0)
  4b6d40:	93c20024 	lbu	v0,36(s8)
  4b6d44:	00000000 	nop
  4b6d48:	00431026 	xor	v0,v0,v1
  4b6d4c:	a3c20024 	sb	v0,36(s8)
  4b6d50:	93c2002c 	lbu	v0,44(s8)
  4b6d54:	00000000 	nop
  4b6d58:	244200d0 	addiu	v0,v0,208
  4b6d5c:	8f81804c 	lw	at,-32692(gp)
  4b6d60:	00000000 	nop
  4b6d64:	24216b90 	addiu	at,at,27536
  4b6d68:	00221021 	addu	v0,at,v0
  4b6d6c:	90430000 	lbu	v1,0(v0)
  4b6d70:	93c20025 	lbu	v0,37(s8)
  4b6d74:	00000000 	nop
  4b6d78:	00431026 	xor	v0,v0,v1
  4b6d7c:	a3c20025 	sb	v0,37(s8)
  4b6d80:	93c2002c 	lbu	v0,44(s8)
  4b6d84:	00000000 	nop
  4b6d88:	2442008c 	addiu	v0,v0,140
  4b6d8c:	8f81804c 	lw	at,-32692(gp)
  4b6d90:	00000000 	nop
  4b6d94:	24216b90 	addiu	at,at,27536
  4b6d98:	00221021 	addu	v0,at,v0
  4b6d9c:	90430000 	lbu	v1,0(v0)
  4b6da0:	93c20026 	lbu	v0,38(s8)
  4b6da4:	00000000 	nop
  4b6da8:	00431026 	xor	v0,v0,v1
  4b6dac:	a3c20026 	sb	v0,38(s8)
  4b6db0:	93c2002c 	lbu	v0,44(s8)
  4b6db4:	00000000 	nop
  4b6db8:	24420017 	addiu	v0,v0,23
  4b6dbc:	8f81804c 	lw	at,-32692(gp)
  4b6dc0:	00000000 	nop
  4b6dc4:	24216b90 	addiu	at,at,27536
  4b6dc8:	00221021 	addu	v0,at,v0
  4b6dcc:	90430000 	lbu	v1,0(v0)
  4b6dd0:	93c20027 	lbu	v0,39(s8)
  4b6dd4:	00000000 	nop
  4b6dd8:	00431026 	xor	v0,v0,v1
  4b6ddc:	a3c20027 	sb	v0,39(s8)
	}

	if (key_len == 32) { /* 256-bit key */
  4b6de0:	8fc30040 	lw	v1,64(s8)
  4b6de4:	24020020 	li	v0,32
  4b6de8:	14622550 	bne	v1,v0,4c032c <twofish_set_key+0xaf7c>
  4b6dec:	00000000 	nop
		/* Calculate the fourth word of the S vector */
		CALC_S (sm, sn, so, sp, 24, 0x00, 0x2D, 0x01, 0x2D); /* 01 A4 02 A4 */
  4b6df0:	8fc2003c 	lw	v0,60(s8)
  4b6df4:	00000000 	nop
  4b6df8:	24420018 	addiu	v0,v0,24
  4b6dfc:	90420000 	lbu	v0,0(v0)
  4b6e00:	00000000 	nop
  4b6e04:	1040003c 	beqz	v0,4b6ef8 <twofish_set_key+0x1b48>
  4b6e08:	00000000 	nop
  4b6e0c:	8fc2003c 	lw	v0,60(s8)
  4b6e10:	00000000 	nop
  4b6e14:	24420018 	addiu	v0,v0,24
  4b6e18:	90420000 	lbu	v0,0(v0)
  4b6e1c:	00000000 	nop
  4b6e20:	2442ffff 	addiu	v0,v0,-1
  4b6e24:	8f81804c 	lw	at,-32692(gp)
  4b6e28:	00000000 	nop
  4b6e2c:	24216a90 	addiu	at,at,27280
  4b6e30:	00221021 	addu	v0,at,v0
  4b6e34:	90420000 	lbu	v0,0(v0)
  4b6e38:	00000000 	nop
  4b6e3c:	a3c2002c 	sb	v0,44(s8)
  4b6e40:	93c2002c 	lbu	v0,44(s8)
  4b6e44:	8f81804c 	lw	at,-32692(gp)
  4b6e48:	00000000 	nop
  4b6e4c:	24216b90 	addiu	at,at,27536
  4b6e50:	00221021 	addu	v0,at,v0
  4b6e54:	90430000 	lbu	v1,0(v0)
  4b6e58:	93c20028 	lbu	v0,40(s8)
  4b6e5c:	00000000 	nop
  4b6e60:	00431026 	xor	v0,v0,v1
  4b6e64:	a3c20028 	sb	v0,40(s8)
  4b6e68:	93c2002c 	lbu	v0,44(s8)
  4b6e6c:	00000000 	nop
  4b6e70:	2442002d 	addiu	v0,v0,45
  4b6e74:	8f81804c 	lw	at,-32692(gp)
  4b6e78:	00000000 	nop
  4b6e7c:	24216b90 	addiu	at,at,27536
  4b6e80:	00221021 	addu	v0,at,v0
  4b6e84:	90430000 	lbu	v1,0(v0)
  4b6e88:	93c20029 	lbu	v0,41(s8)
  4b6e8c:	00000000 	nop
  4b6e90:	00431026 	xor	v0,v0,v1
  4b6e94:	a3c20029 	sb	v0,41(s8)
  4b6e98:	93c2002c 	lbu	v0,44(s8)
  4b6e9c:	00000000 	nop
  4b6ea0:	24420001 	addiu	v0,v0,1
  4b6ea4:	8f81804c 	lw	at,-32692(gp)
  4b6ea8:	00000000 	nop
  4b6eac:	24216b90 	addiu	at,at,27536
  4b6eb0:	00221021 	addu	v0,at,v0
  4b6eb4:	90430000 	lbu	v1,0(v0)
  4b6eb8:	93c2002a 	lbu	v0,42(s8)
  4b6ebc:	00000000 	nop
  4b6ec0:	00431026 	xor	v0,v0,v1
  4b6ec4:	a3c2002a 	sb	v0,42(s8)
  4b6ec8:	93c2002c 	lbu	v0,44(s8)
  4b6ecc:	00000000 	nop
  4b6ed0:	2442002d 	addiu	v0,v0,45
  4b6ed4:	8f81804c 	lw	at,-32692(gp)
  4b6ed8:	00000000 	nop
  4b6edc:	24216b90 	addiu	at,at,27536
  4b6ee0:	00221021 	addu	v0,at,v0
  4b6ee4:	90430000 	lbu	v1,0(v0)
  4b6ee8:	93c2002b 	lbu	v0,43(s8)
  4b6eec:	00000000 	nop
  4b6ef0:	00431026 	xor	v0,v0,v1
  4b6ef4:	a3c2002b 	sb	v0,43(s8)
		CALC_S (sm, sn, so, sp, 25, 0x2D, 0xA4, 0x44, 0x8A); /* A4 56 A1 55 */
  4b6ef8:	8fc2003c 	lw	v0,60(s8)
  4b6efc:	00000000 	nop
  4b6f00:	24420019 	addiu	v0,v0,25
  4b6f04:	90420000 	lbu	v0,0(v0)
  4b6f08:	00000000 	nop
  4b6f0c:	1040003e 	beqz	v0,4b7008 <twofish_set_key+0x1c58>
  4b6f10:	00000000 	nop
  4b6f14:	8fc2003c 	lw	v0,60(s8)
  4b6f18:	00000000 	nop
  4b6f1c:	24420019 	addiu	v0,v0,25
  4b6f20:	90420000 	lbu	v0,0(v0)
  4b6f24:	00000000 	nop
  4b6f28:	2442ffff 	addiu	v0,v0,-1
  4b6f2c:	8f81804c 	lw	at,-32692(gp)
  4b6f30:	00000000 	nop
  4b6f34:	24216a90 	addiu	at,at,27280
  4b6f38:	00221021 	addu	v0,at,v0
  4b6f3c:	90420000 	lbu	v0,0(v0)
  4b6f40:	00000000 	nop
  4b6f44:	a3c2002c 	sb	v0,44(s8)
  4b6f48:	93c2002c 	lbu	v0,44(s8)
  4b6f4c:	00000000 	nop
  4b6f50:	2442002d 	addiu	v0,v0,45
  4b6f54:	8f81804c 	lw	at,-32692(gp)
  4b6f58:	00000000 	nop
  4b6f5c:	24216b90 	addiu	at,at,27536
  4b6f60:	00221021 	addu	v0,at,v0
  4b6f64:	90430000 	lbu	v1,0(v0)
  4b6f68:	93c20028 	lbu	v0,40(s8)
  4b6f6c:	00000000 	nop
  4b6f70:	00431026 	xor	v0,v0,v1
  4b6f74:	a3c20028 	sb	v0,40(s8)
  4b6f78:	93c2002c 	lbu	v0,44(s8)
  4b6f7c:	00000000 	nop
  4b6f80:	244200a4 	addiu	v0,v0,164
  4b6f84:	8f81804c 	lw	at,-32692(gp)
  4b6f88:	00000000 	nop
  4b6f8c:	24216b90 	addiu	at,at,27536
  4b6f90:	00221021 	addu	v0,at,v0
  4b6f94:	90430000 	lbu	v1,0(v0)
  4b6f98:	93c20029 	lbu	v0,41(s8)
  4b6f9c:	00000000 	nop
  4b6fa0:	00431026 	xor	v0,v0,v1
  4b6fa4:	a3c20029 	sb	v0,41(s8)
  4b6fa8:	93c2002c 	lbu	v0,44(s8)
  4b6fac:	00000000 	nop
  4b6fb0:	24420044 	addiu	v0,v0,68
  4b6fb4:	8f81804c 	lw	at,-32692(gp)
  4b6fb8:	00000000 	nop
  4b6fbc:	24216b90 	addiu	at,at,27536
  4b6fc0:	00221021 	addu	v0,at,v0
  4b6fc4:	90430000 	lbu	v1,0(v0)
  4b6fc8:	93c2002a 	lbu	v0,42(s8)
  4b6fcc:	00000000 	nop
  4b6fd0:	00431026 	xor	v0,v0,v1
  4b6fd4:	a3c2002a 	sb	v0,42(s8)
  4b6fd8:	93c2002c 	lbu	v0,44(s8)
  4b6fdc:	00000000 	nop
  4b6fe0:	2442008a 	addiu	v0,v0,138
  4b6fe4:	8f81804c 	lw	at,-32692(gp)
  4b6fe8:	00000000 	nop
  4b6fec:	24216b90 	addiu	at,at,27536
  4b6ff0:	00221021 	addu	v0,at,v0
  4b6ff4:	90430000 	lbu	v1,0(v0)
  4b6ff8:	93c2002b 	lbu	v0,43(s8)
  4b6ffc:	00000000 	nop
  4b7000:	00431026 	xor	v0,v0,v1
  4b7004:	a3c2002b 	sb	v0,43(s8)
		CALC_S (sm, sn, so, sp, 26, 0x8A, 0xD5, 0xBF, 0xD1); /* 55 82 FC 87 */
  4b7008:	8fc2003c 	lw	v0,60(s8)
  4b700c:	00000000 	nop
  4b7010:	2442001a 	addiu	v0,v0,26
  4b7014:	90420000 	lbu	v0,0(v0)
  4b7018:	00000000 	nop
  4b701c:	1040003e 	beqz	v0,4b7118 <twofish_set_key+0x1d68>
  4b7020:	00000000 	nop
  4b7024:	8fc2003c 	lw	v0,60(s8)
  4b7028:	00000000 	nop
  4b702c:	2442001a 	addiu	v0,v0,26
  4b7030:	90420000 	lbu	v0,0(v0)
  4b7034:	00000000 	nop
  4b7038:	2442ffff 	addiu	v0,v0,-1
  4b703c:	8f81804c 	lw	at,-32692(gp)
  4b7040:	00000000 	nop
  4b7044:	24216a90 	addiu	at,at,27280
  4b7048:	00221021 	addu	v0,at,v0
  4b704c:	90420000 	lbu	v0,0(v0)
  4b7050:	00000000 	nop
  4b7054:	a3c2002c 	sb	v0,44(s8)
  4b7058:	93c2002c 	lbu	v0,44(s8)
  4b705c:	00000000 	nop
  4b7060:	2442008a 	addiu	v0,v0,138
  4b7064:	8f81804c 	lw	at,-32692(gp)
  4b7068:	00000000 	nop
  4b706c:	24216b90 	addiu	at,at,27536
  4b7070:	00221021 	addu	v0,at,v0
  4b7074:	90430000 	lbu	v1,0(v0)
  4b7078:	93c20028 	lbu	v0,40(s8)
  4b707c:	00000000 	nop
  4b7080:	00431026 	xor	v0,v0,v1
  4b7084:	a3c20028 	sb	v0,40(s8)
  4b7088:	93c2002c 	lbu	v0,44(s8)
  4b708c:	00000000 	nop
  4b7090:	244200d5 	addiu	v0,v0,213
  4b7094:	8f81804c 	lw	at,-32692(gp)
  4b7098:	00000000 	nop
  4b709c:	24216b90 	addiu	at,at,27536
  4b70a0:	00221021 	addu	v0,at,v0
  4b70a4:	90430000 	lbu	v1,0(v0)
  4b70a8:	93c20029 	lbu	v0,41(s8)
  4b70ac:	00000000 	nop
  4b70b0:	00431026 	xor	v0,v0,v1
  4b70b4:	a3c20029 	sb	v0,41(s8)
  4b70b8:	93c2002c 	lbu	v0,44(s8)
  4b70bc:	00000000 	nop
  4b70c0:	244200bf 	addiu	v0,v0,191
  4b70c4:	8f81804c 	lw	at,-32692(gp)
  4b70c8:	00000000 	nop
  4b70cc:	24216b90 	addiu	at,at,27536
  4b70d0:	00221021 	addu	v0,at,v0
  4b70d4:	90430000 	lbu	v1,0(v0)
  4b70d8:	93c2002a 	lbu	v0,42(s8)
  4b70dc:	00000000 	nop
  4b70e0:	00431026 	xor	v0,v0,v1
  4b70e4:	a3c2002a 	sb	v0,42(s8)
  4b70e8:	93c2002c 	lbu	v0,44(s8)
  4b70ec:	00000000 	nop
  4b70f0:	244200d1 	addiu	v0,v0,209
  4b70f4:	8f81804c 	lw	at,-32692(gp)
  4b70f8:	00000000 	nop
  4b70fc:	24216b90 	addiu	at,at,27536
  4b7100:	00221021 	addu	v0,at,v0
  4b7104:	90430000 	lbu	v1,0(v0)
  4b7108:	93c2002b 	lbu	v0,43(s8)
  4b710c:	00000000 	nop
  4b7110:	00431026 	xor	v0,v0,v1
  4b7114:	a3c2002b 	sb	v0,43(s8)
		CALC_S (sm, sn, so, sp, 27, 0xD1, 0x7F, 0x3D, 0x99); /* 87 F3 C1 5A */
  4b7118:	8fc2003c 	lw	v0,60(s8)
  4b711c:	00000000 	nop
  4b7120:	2442001b 	addiu	v0,v0,27
  4b7124:	90420000 	lbu	v0,0(v0)
  4b7128:	00000000 	nop
  4b712c:	1040003e 	beqz	v0,4b7228 <twofish_set_key+0x1e78>
  4b7130:	00000000 	nop
  4b7134:	8fc2003c 	lw	v0,60(s8)
  4b7138:	00000000 	nop
  4b713c:	2442001b 	addiu	v0,v0,27
  4b7140:	90420000 	lbu	v0,0(v0)
  4b7144:	00000000 	nop
  4b7148:	2442ffff 	addiu	v0,v0,-1
  4b714c:	8f81804c 	lw	at,-32692(gp)
  4b7150:	00000000 	nop
  4b7154:	24216a90 	addiu	at,at,27280
  4b7158:	00221021 	addu	v0,at,v0
  4b715c:	90420000 	lbu	v0,0(v0)
  4b7160:	00000000 	nop
  4b7164:	a3c2002c 	sb	v0,44(s8)
  4b7168:	93c2002c 	lbu	v0,44(s8)
  4b716c:	00000000 	nop
  4b7170:	244200d1 	addiu	v0,v0,209
  4b7174:	8f81804c 	lw	at,-32692(gp)
  4b7178:	00000000 	nop
  4b717c:	24216b90 	addiu	at,at,27536
  4b7180:	00221021 	addu	v0,at,v0
  4b7184:	90430000 	lbu	v1,0(v0)
  4b7188:	93c20028 	lbu	v0,40(s8)
  4b718c:	00000000 	nop
  4b7190:	00431026 	xor	v0,v0,v1
  4b7194:	a3c20028 	sb	v0,40(s8)
  4b7198:	93c2002c 	lbu	v0,44(s8)
  4b719c:	00000000 	nop
  4b71a0:	2442007f 	addiu	v0,v0,127
  4b71a4:	8f81804c 	lw	at,-32692(gp)
  4b71a8:	00000000 	nop
  4b71ac:	24216b90 	addiu	at,at,27536
  4b71b0:	00221021 	addu	v0,at,v0
  4b71b4:	90430000 	lbu	v1,0(v0)
  4b71b8:	93c20029 	lbu	v0,41(s8)
  4b71bc:	00000000 	nop
  4b71c0:	00431026 	xor	v0,v0,v1
  4b71c4:	a3c20029 	sb	v0,41(s8)
  4b71c8:	93c2002c 	lbu	v0,44(s8)
  4b71cc:	00000000 	nop
  4b71d0:	2442003d 	addiu	v0,v0,61
  4b71d4:	8f81804c 	lw	at,-32692(gp)
  4b71d8:	00000000 	nop
  4b71dc:	24216b90 	addiu	at,at,27536
  4b71e0:	00221021 	addu	v0,at,v0
  4b71e4:	90430000 	lbu	v1,0(v0)
  4b71e8:	93c2002a 	lbu	v0,42(s8)
  4b71ec:	00000000 	nop
  4b71f0:	00431026 	xor	v0,v0,v1
  4b71f4:	a3c2002a 	sb	v0,42(s8)
  4b71f8:	93c2002c 	lbu	v0,44(s8)
  4b71fc:	00000000 	nop
  4b7200:	24420099 	addiu	v0,v0,153
  4b7204:	8f81804c 	lw	at,-32692(gp)
  4b7208:	00000000 	nop
  4b720c:	24216b90 	addiu	at,at,27536
  4b7210:	00221021 	addu	v0,at,v0
  4b7214:	90430000 	lbu	v1,0(v0)
  4b7218:	93c2002b 	lbu	v0,43(s8)
  4b721c:	00000000 	nop
  4b7220:	00431026 	xor	v0,v0,v1
  4b7224:	a3c2002b 	sb	v0,43(s8)
		CALC_S (sm, sn, so, sp, 28, 0x99, 0x46, 0x66, 0x96); /* 5A 1E 47 58 */
  4b7228:	8fc2003c 	lw	v0,60(s8)
  4b722c:	00000000 	nop
  4b7230:	2442001c 	addiu	v0,v0,28
  4b7234:	90420000 	lbu	v0,0(v0)
  4b7238:	00000000 	nop
  4b723c:	1040003e 	beqz	v0,4b7338 <twofish_set_key+0x1f88>
  4b7240:	00000000 	nop
  4b7244:	8fc2003c 	lw	v0,60(s8)
  4b7248:	00000000 	nop
  4b724c:	2442001c 	addiu	v0,v0,28
  4b7250:	90420000 	lbu	v0,0(v0)
  4b7254:	00000000 	nop
  4b7258:	2442ffff 	addiu	v0,v0,-1
  4b725c:	8f81804c 	lw	at,-32692(gp)
  4b7260:	00000000 	nop
  4b7264:	24216a90 	addiu	at,at,27280
  4b7268:	00221021 	addu	v0,at,v0
  4b726c:	90420000 	lbu	v0,0(v0)
  4b7270:	00000000 	nop
  4b7274:	a3c2002c 	sb	v0,44(s8)
  4b7278:	93c2002c 	lbu	v0,44(s8)
  4b727c:	00000000 	nop
  4b7280:	24420099 	addiu	v0,v0,153
  4b7284:	8f81804c 	lw	at,-32692(gp)
  4b7288:	00000000 	nop
  4b728c:	24216b90 	addiu	at,at,27536
  4b7290:	00221021 	addu	v0,at,v0
  4b7294:	90430000 	lbu	v1,0(v0)
  4b7298:	93c20028 	lbu	v0,40(s8)
  4b729c:	00000000 	nop
  4b72a0:	00431026 	xor	v0,v0,v1
  4b72a4:	a3c20028 	sb	v0,40(s8)
  4b72a8:	93c2002c 	lbu	v0,44(s8)
  4b72ac:	00000000 	nop
  4b72b0:	24420046 	addiu	v0,v0,70
  4b72b4:	8f81804c 	lw	at,-32692(gp)
  4b72b8:	00000000 	nop
  4b72bc:	24216b90 	addiu	at,at,27536
  4b72c0:	00221021 	addu	v0,at,v0
  4b72c4:	90430000 	lbu	v1,0(v0)
  4b72c8:	93c20029 	lbu	v0,41(s8)
  4b72cc:	00000000 	nop
  4b72d0:	00431026 	xor	v0,v0,v1
  4b72d4:	a3c20029 	sb	v0,41(s8)
  4b72d8:	93c2002c 	lbu	v0,44(s8)
  4b72dc:	00000000 	nop
  4b72e0:	24420066 	addiu	v0,v0,102
  4b72e4:	8f81804c 	lw	at,-32692(gp)
  4b72e8:	00000000 	nop
  4b72ec:	24216b90 	addiu	at,at,27536
  4b72f0:	00221021 	addu	v0,at,v0
  4b72f4:	90430000 	lbu	v1,0(v0)
  4b72f8:	93c2002a 	lbu	v0,42(s8)
  4b72fc:	00000000 	nop
  4b7300:	00431026 	xor	v0,v0,v1
  4b7304:	a3c2002a 	sb	v0,42(s8)
  4b7308:	93c2002c 	lbu	v0,44(s8)
  4b730c:	00000000 	nop
  4b7310:	24420096 	addiu	v0,v0,150
  4b7314:	8f81804c 	lw	at,-32692(gp)
  4b7318:	00000000 	nop
  4b731c:	24216b90 	addiu	at,at,27536
  4b7320:	00221021 	addu	v0,at,v0
  4b7324:	90430000 	lbu	v1,0(v0)
  4b7328:	93c2002b 	lbu	v0,43(s8)
  4b732c:	00000000 	nop
  4b7330:	00431026 	xor	v0,v0,v1
  4b7334:	a3c2002b 	sb	v0,43(s8)
		CALC_S (sm, sn, so, sp, 29, 0x96, 0x3C, 0x5B, 0xED); /* 58 C6 AE DB */
  4b7338:	8fc2003c 	lw	v0,60(s8)
  4b733c:	00000000 	nop
  4b7340:	2442001d 	addiu	v0,v0,29
  4b7344:	90420000 	lbu	v0,0(v0)
  4b7348:	00000000 	nop
  4b734c:	1040003e 	beqz	v0,4b7448 <twofish_set_key+0x2098>
  4b7350:	00000000 	nop
  4b7354:	8fc2003c 	lw	v0,60(s8)
  4b7358:	00000000 	nop
  4b735c:	2442001d 	addiu	v0,v0,29
  4b7360:	90420000 	lbu	v0,0(v0)
  4b7364:	00000000 	nop
  4b7368:	2442ffff 	addiu	v0,v0,-1
  4b736c:	8f81804c 	lw	at,-32692(gp)
  4b7370:	00000000 	nop
  4b7374:	24216a90 	addiu	at,at,27280
  4b7378:	00221021 	addu	v0,at,v0
  4b737c:	90420000 	lbu	v0,0(v0)
  4b7380:	00000000 	nop
  4b7384:	a3c2002c 	sb	v0,44(s8)
  4b7388:	93c2002c 	lbu	v0,44(s8)
  4b738c:	00000000 	nop
  4b7390:	24420096 	addiu	v0,v0,150
  4b7394:	8f81804c 	lw	at,-32692(gp)
  4b7398:	00000000 	nop
  4b739c:	24216b90 	addiu	at,at,27536
  4b73a0:	00221021 	addu	v0,at,v0
  4b73a4:	90430000 	lbu	v1,0(v0)
  4b73a8:	93c20028 	lbu	v0,40(s8)
  4b73ac:	00000000 	nop
  4b73b0:	00431026 	xor	v0,v0,v1
  4b73b4:	a3c20028 	sb	v0,40(s8)
  4b73b8:	93c2002c 	lbu	v0,44(s8)
  4b73bc:	00000000 	nop
  4b73c0:	2442003c 	addiu	v0,v0,60
  4b73c4:	8f81804c 	lw	at,-32692(gp)
  4b73c8:	00000000 	nop
  4b73cc:	24216b90 	addiu	at,at,27536
  4b73d0:	00221021 	addu	v0,at,v0
  4b73d4:	90430000 	lbu	v1,0(v0)
  4b73d8:	93c20029 	lbu	v0,41(s8)
  4b73dc:	00000000 	nop
  4b73e0:	00431026 	xor	v0,v0,v1
  4b73e4:	a3c20029 	sb	v0,41(s8)
  4b73e8:	93c2002c 	lbu	v0,44(s8)
  4b73ec:	00000000 	nop
  4b73f0:	2442005b 	addiu	v0,v0,91
  4b73f4:	8f81804c 	lw	at,-32692(gp)
  4b73f8:	00000000 	nop
  4b73fc:	24216b90 	addiu	at,at,27536
  4b7400:	00221021 	addu	v0,at,v0
  4b7404:	90430000 	lbu	v1,0(v0)
  4b7408:	93c2002a 	lbu	v0,42(s8)
  4b740c:	00000000 	nop
  4b7410:	00431026 	xor	v0,v0,v1
  4b7414:	a3c2002a 	sb	v0,42(s8)
  4b7418:	93c2002c 	lbu	v0,44(s8)
  4b741c:	00000000 	nop
  4b7420:	244200ed 	addiu	v0,v0,237
  4b7424:	8f81804c 	lw	at,-32692(gp)
  4b7428:	00000000 	nop
  4b742c:	24216b90 	addiu	at,at,27536
  4b7430:	00221021 	addu	v0,at,v0
  4b7434:	90430000 	lbu	v1,0(v0)
  4b7438:	93c2002b 	lbu	v0,43(s8)
  4b743c:	00000000 	nop
  4b7440:	00431026 	xor	v0,v0,v1
  4b7444:	a3c2002b 	sb	v0,43(s8)
		CALC_S (sm, sn, so, sp, 30, 0xED, 0x37, 0x4F, 0xE0); /* DB 68 3D 9E */
  4b7448:	8fc2003c 	lw	v0,60(s8)
  4b744c:	00000000 	nop
  4b7450:	2442001e 	addiu	v0,v0,30
  4b7454:	90420000 	lbu	v0,0(v0)
  4b7458:	00000000 	nop
  4b745c:	1040003e 	beqz	v0,4b7558 <twofish_set_key+0x21a8>
  4b7460:	00000000 	nop
  4b7464:	8fc2003c 	lw	v0,60(s8)
  4b7468:	00000000 	nop
  4b746c:	2442001e 	addiu	v0,v0,30
  4b7470:	90420000 	lbu	v0,0(v0)
  4b7474:	00000000 	nop
  4b7478:	2442ffff 	addiu	v0,v0,-1
  4b747c:	8f81804c 	lw	at,-32692(gp)
  4b7480:	00000000 	nop
  4b7484:	24216a90 	addiu	at,at,27280
  4b7488:	00221021 	addu	v0,at,v0
  4b748c:	90420000 	lbu	v0,0(v0)
  4b7490:	00000000 	nop
  4b7494:	a3c2002c 	sb	v0,44(s8)
  4b7498:	93c2002c 	lbu	v0,44(s8)
  4b749c:	00000000 	nop
  4b74a0:	244200ed 	addiu	v0,v0,237
  4b74a4:	8f81804c 	lw	at,-32692(gp)
  4b74a8:	00000000 	nop
  4b74ac:	24216b90 	addiu	at,at,27536
  4b74b0:	00221021 	addu	v0,at,v0
  4b74b4:	90430000 	lbu	v1,0(v0)
  4b74b8:	93c20028 	lbu	v0,40(s8)
  4b74bc:	00000000 	nop
  4b74c0:	00431026 	xor	v0,v0,v1
  4b74c4:	a3c20028 	sb	v0,40(s8)
  4b74c8:	93c2002c 	lbu	v0,44(s8)
  4b74cc:	00000000 	nop
  4b74d0:	24420037 	addiu	v0,v0,55
  4b74d4:	8f81804c 	lw	at,-32692(gp)
  4b74d8:	00000000 	nop
  4b74dc:	24216b90 	addiu	at,at,27536
  4b74e0:	00221021 	addu	v0,at,v0
  4b74e4:	90430000 	lbu	v1,0(v0)
  4b74e8:	93c20029 	lbu	v0,41(s8)
  4b74ec:	00000000 	nop
  4b74f0:	00431026 	xor	v0,v0,v1
  4b74f4:	a3c20029 	sb	v0,41(s8)
  4b74f8:	93c2002c 	lbu	v0,44(s8)
  4b74fc:	00000000 	nop
  4b7500:	2442004f 	addiu	v0,v0,79
  4b7504:	8f81804c 	lw	at,-32692(gp)
  4b7508:	00000000 	nop
  4b750c:	24216b90 	addiu	at,at,27536
  4b7510:	00221021 	addu	v0,at,v0
  4b7514:	90430000 	lbu	v1,0(v0)
  4b7518:	93c2002a 	lbu	v0,42(s8)
  4b751c:	00000000 	nop
  4b7520:	00431026 	xor	v0,v0,v1
  4b7524:	a3c2002a 	sb	v0,42(s8)
  4b7528:	93c2002c 	lbu	v0,44(s8)
  4b752c:	00000000 	nop
  4b7530:	244200e0 	addiu	v0,v0,224
  4b7534:	8f81804c 	lw	at,-32692(gp)
  4b7538:	00000000 	nop
  4b753c:	24216b90 	addiu	at,at,27536
  4b7540:	00221021 	addu	v0,at,v0
  4b7544:	90430000 	lbu	v1,0(v0)
  4b7548:	93c2002b 	lbu	v0,43(s8)
  4b754c:	00000000 	nop
  4b7550:	00431026 	xor	v0,v0,v1
  4b7554:	a3c2002b 	sb	v0,43(s8)
		CALC_S (sm, sn, so, sp, 31, 0xE0, 0xD0, 0x8C, 0x17); /* 9E E5 19 03 */
  4b7558:	8fc2003c 	lw	v0,60(s8)
  4b755c:	00000000 	nop
  4b7560:	2442001f 	addiu	v0,v0,31
  4b7564:	90420000 	lbu	v0,0(v0)
  4b7568:	00000000 	nop
  4b756c:	1040003e 	beqz	v0,4b7668 <twofish_set_key+0x22b8>
  4b7570:	00000000 	nop
  4b7574:	8fc2003c 	lw	v0,60(s8)
  4b7578:	00000000 	nop
  4b757c:	2442001f 	addiu	v0,v0,31
  4b7580:	90420000 	lbu	v0,0(v0)
  4b7584:	00000000 	nop
  4b7588:	2442ffff 	addiu	v0,v0,-1
  4b758c:	8f81804c 	lw	at,-32692(gp)
  4b7590:	00000000 	nop
  4b7594:	24216a90 	addiu	at,at,27280
  4b7598:	00221021 	addu	v0,at,v0
  4b759c:	90420000 	lbu	v0,0(v0)
  4b75a0:	00000000 	nop
  4b75a4:	a3c2002c 	sb	v0,44(s8)
  4b75a8:	93c2002c 	lbu	v0,44(s8)
  4b75ac:	00000000 	nop
  4b75b0:	244200e0 	addiu	v0,v0,224
  4b75b4:	8f81804c 	lw	at,-32692(gp)
  4b75b8:	00000000 	nop
  4b75bc:	24216b90 	addiu	at,at,27536
  4b75c0:	00221021 	addu	v0,at,v0
  4b75c4:	90430000 	lbu	v1,0(v0)
  4b75c8:	93c20028 	lbu	v0,40(s8)
  4b75cc:	00000000 	nop
  4b75d0:	00431026 	xor	v0,v0,v1
  4b75d4:	a3c20028 	sb	v0,40(s8)
  4b75d8:	93c2002c 	lbu	v0,44(s8)
  4b75dc:	00000000 	nop
  4b75e0:	244200d0 	addiu	v0,v0,208
  4b75e4:	8f81804c 	lw	at,-32692(gp)
  4b75e8:	00000000 	nop
  4b75ec:	24216b90 	addiu	at,at,27536
  4b75f0:	00221021 	addu	v0,at,v0
  4b75f4:	90430000 	lbu	v1,0(v0)
  4b75f8:	93c20029 	lbu	v0,41(s8)
  4b75fc:	00000000 	nop
  4b7600:	00431026 	xor	v0,v0,v1
  4b7604:	a3c20029 	sb	v0,41(s8)
  4b7608:	93c2002c 	lbu	v0,44(s8)
  4b760c:	00000000 	nop
  4b7610:	2442008c 	addiu	v0,v0,140
  4b7614:	8f81804c 	lw	at,-32692(gp)
  4b7618:	00000000 	nop
  4b761c:	24216b90 	addiu	at,at,27536
  4b7620:	00221021 	addu	v0,at,v0
  4b7624:	90430000 	lbu	v1,0(v0)
  4b7628:	93c2002a 	lbu	v0,42(s8)
  4b762c:	00000000 	nop
  4b7630:	00431026 	xor	v0,v0,v1
  4b7634:	a3c2002a 	sb	v0,42(s8)
  4b7638:	93c2002c 	lbu	v0,44(s8)
  4b763c:	00000000 	nop
  4b7640:	24420017 	addiu	v0,v0,23
  4b7644:	8f81804c 	lw	at,-32692(gp)
  4b7648:	00000000 	nop
  4b764c:	24216b90 	addiu	at,at,27536
  4b7650:	00221021 	addu	v0,at,v0
  4b7654:	90430000 	lbu	v1,0(v0)
  4b7658:	93c2002b 	lbu	v0,43(s8)
  4b765c:	00000000 	nop
  4b7660:	00431026 	xor	v0,v0,v1
  4b7664:	a3c2002b 	sb	v0,43(s8)

		/* Compute the S-boxes. */
		for ( i = j = 0, k = 1; i < 256; i++, j += 2, k += 2 ) {
  4b7668:	afc0000c 	sw	zero,12(s8)
  4b766c:	afc00008 	sw	zero,8(s8)
  4b7670:	24020001 	li	v0,1
  4b7674:	afc20010 	sw	v0,16(s8)
  4b7678:	8fc20008 	lw	v0,8(s8)
  4b767c:	00000000 	nop
  4b7680:	28420100 	slti	v0,v0,256
  4b7684:	14402249 	bnez	v0,4bffac <twofish_set_key+0xabfc>
  4b7688:	00000000 	nop
			CALC_SB256_2( i, calc_sb_tbl[j], calc_sb_tbl[k] );
		}

		/* Calculate whitening and round subkeys.  The constants are
		 * indices of subkeys, preprocessed through q0 and q1. */
		CALC_K256 (w, 0, 0xA9, 0x75, 0x67, 0xF3);
  4b768c:	8fc2003c 	lw	v0,60(s8)
  4b7690:	00000000 	nop
  4b7694:	24420018 	addiu	v0,v0,24
  4b7698:	90420000 	lbu	v0,0(v0)
  4b769c:	00000000 	nop
  4b76a0:	38420075 	xori	v0,v0,0x75
  4b76a4:	304200ff 	andi	v0,v0,0xff
  4b76a8:	8f83804c 	lw	v1,-32692(gp)
  4b76ac:	00000000 	nop
  4b76b0:	24635990 	addiu	v1,v1,22928
  4b76b4:	00621821 	addu	v1,v1,v0
  4b76b8:	8fc2003c 	lw	v0,60(s8)
  4b76bc:	00000000 	nop
  4b76c0:	24420010 	addiu	v0,v0,16
  4b76c4:	90630000 	lbu	v1,0(v1)
  4b76c8:	90420000 	lbu	v0,0(v0)
  4b76cc:	00000000 	nop
  4b76d0:	00621026 	xor	v0,v1,v0
  4b76d4:	304200ff 	andi	v0,v0,0xff
  4b76d8:	8f83804c 	lw	v1,-32692(gp)
  4b76dc:	00000000 	nop
  4b76e0:	24635890 	addiu	v1,v1,22672
  4b76e4:	00621821 	addu	v1,v1,v0
  4b76e8:	8fc2003c 	lw	v0,60(s8)
  4b76ec:	00000000 	nop
  4b76f0:	24420008 	addiu	v0,v0,8
  4b76f4:	90630000 	lbu	v1,0(v1)
  4b76f8:	90420000 	lbu	v0,0(v0)
  4b76fc:	00000000 	nop
  4b7700:	00621026 	xor	v0,v1,v0
  4b7704:	304200ff 	andi	v0,v0,0xff
  4b7708:	8f81804c 	lw	at,-32692(gp)
  4b770c:	00000000 	nop
  4b7710:	24215890 	addiu	at,at,22672
  4b7714:	00221021 	addu	v0,at,v0
  4b7718:	90430000 	lbu	v1,0(v0)
  4b771c:	8fc2003c 	lw	v0,60(s8)
  4b7720:	00000000 	nop
  4b7724:	90420000 	lbu	v0,0(v0)
  4b7728:	00000000 	nop
  4b772c:	00621026 	xor	v0,v1,v0
  4b7730:	304200ff 	andi	v0,v0,0xff
  4b7734:	00021080 	sll	v0,v0,0x2
  4b7738:	8f84804c 	lw	a0,-32692(gp)
  4b773c:	00000000 	nop
  4b7740:	24845a90 	addiu	a0,a0,23184
  4b7744:	00822021 	addu	a0,a0,v0
  4b7748:	8fc2003c 	lw	v0,60(s8)
  4b774c:	00000000 	nop
  4b7750:	24420019 	addiu	v0,v0,25
  4b7754:	90420000 	lbu	v0,0(v0)
  4b7758:	00000000 	nop
  4b775c:	384200a9 	xori	v0,v0,0xa9
  4b7760:	304200ff 	andi	v0,v0,0xff
  4b7764:	8f83804c 	lw	v1,-32692(gp)
  4b7768:	00000000 	nop
  4b776c:	24635990 	addiu	v1,v1,22928
  4b7770:	00621821 	addu	v1,v1,v0
  4b7774:	8fc2003c 	lw	v0,60(s8)
  4b7778:	00000000 	nop
  4b777c:	24420011 	addiu	v0,v0,17
  4b7780:	90630000 	lbu	v1,0(v1)
  4b7784:	90420000 	lbu	v0,0(v0)
  4b7788:	00000000 	nop
  4b778c:	00621026 	xor	v0,v1,v0
  4b7790:	304200ff 	andi	v0,v0,0xff
  4b7794:	8f83804c 	lw	v1,-32692(gp)
  4b7798:	00000000 	nop
  4b779c:	24635990 	addiu	v1,v1,22928
  4b77a0:	00621821 	addu	v1,v1,v0
  4b77a4:	8fc2003c 	lw	v0,60(s8)
  4b77a8:	00000000 	nop
  4b77ac:	24420009 	addiu	v0,v0,9
  4b77b0:	90630000 	lbu	v1,0(v1)
  4b77b4:	90420000 	lbu	v0,0(v0)
  4b77b8:	00000000 	nop
  4b77bc:	00621026 	xor	v0,v1,v0
  4b77c0:	304200ff 	andi	v0,v0,0xff
  4b77c4:	8f83804c 	lw	v1,-32692(gp)
  4b77c8:	00000000 	nop
  4b77cc:	24635890 	addiu	v1,v1,22672
  4b77d0:	00621821 	addu	v1,v1,v0
  4b77d4:	8fc2003c 	lw	v0,60(s8)
  4b77d8:	00000000 	nop
  4b77dc:	24420001 	addiu	v0,v0,1
  4b77e0:	90630000 	lbu	v1,0(v1)
  4b77e4:	90420000 	lbu	v0,0(v0)
  4b77e8:	00000000 	nop
  4b77ec:	00621026 	xor	v0,v1,v0
  4b77f0:	304200ff 	andi	v0,v0,0xff
  4b77f4:	00021080 	sll	v0,v0,0x2
  4b77f8:	24420400 	addiu	v0,v0,1024
  4b77fc:	8f81804c 	lw	at,-32692(gp)
  4b7800:	00000000 	nop
  4b7804:	24215a90 	addiu	at,at,23184
  4b7808:	00221021 	addu	v0,at,v0
  4b780c:	8c830000 	lw	v1,0(a0)
  4b7810:	8c420000 	lw	v0,0(v0)
  4b7814:	00000000 	nop
  4b7818:	00622026 	xor	a0,v1,v0
  4b781c:	8fc2003c 	lw	v0,60(s8)
  4b7820:	00000000 	nop
  4b7824:	2442001a 	addiu	v0,v0,26
  4b7828:	90420000 	lbu	v0,0(v0)
  4b782c:	00000000 	nop
  4b7830:	384200a9 	xori	v0,v0,0xa9
  4b7834:	304200ff 	andi	v0,v0,0xff
  4b7838:	8f83804c 	lw	v1,-32692(gp)
  4b783c:	00000000 	nop
  4b7840:	24635890 	addiu	v1,v1,22672
  4b7844:	00621821 	addu	v1,v1,v0
  4b7848:	8fc2003c 	lw	v0,60(s8)
  4b784c:	00000000 	nop
  4b7850:	24420012 	addiu	v0,v0,18
  4b7854:	90630000 	lbu	v1,0(v1)
  4b7858:	90420000 	lbu	v0,0(v0)
  4b785c:	00000000 	nop
  4b7860:	00621026 	xor	v0,v1,v0
  4b7864:	304200ff 	andi	v0,v0,0xff
  4b7868:	8f83804c 	lw	v1,-32692(gp)
  4b786c:	00000000 	nop
  4b7870:	24635890 	addiu	v1,v1,22672
  4b7874:	00621821 	addu	v1,v1,v0
  4b7878:	8fc2003c 	lw	v0,60(s8)
  4b787c:	00000000 	nop
  4b7880:	2442000a 	addiu	v0,v0,10
  4b7884:	90630000 	lbu	v1,0(v1)
  4b7888:	90420000 	lbu	v0,0(v0)
  4b788c:	00000000 	nop
  4b7890:	00621026 	xor	v0,v1,v0
  4b7894:	304200ff 	andi	v0,v0,0xff
  4b7898:	8f83804c 	lw	v1,-32692(gp)
  4b789c:	00000000 	nop
  4b78a0:	24635990 	addiu	v1,v1,22928
  4b78a4:	00621821 	addu	v1,v1,v0
  4b78a8:	8fc2003c 	lw	v0,60(s8)
  4b78ac:	00000000 	nop
  4b78b0:	24420002 	addiu	v0,v0,2
  4b78b4:	90630000 	lbu	v1,0(v1)
  4b78b8:	90420000 	lbu	v0,0(v0)
  4b78bc:	00000000 	nop
  4b78c0:	00621026 	xor	v0,v1,v0
  4b78c4:	304200ff 	andi	v0,v0,0xff
  4b78c8:	00021080 	sll	v0,v0,0x2
  4b78cc:	24420800 	addiu	v0,v0,2048
  4b78d0:	8f81804c 	lw	at,-32692(gp)
  4b78d4:	00000000 	nop
  4b78d8:	24215a90 	addiu	at,at,23184
  4b78dc:	00221021 	addu	v0,at,v0
  4b78e0:	8c420000 	lw	v0,0(v0)
  4b78e4:	00000000 	nop
  4b78e8:	00822026 	xor	a0,a0,v0
  4b78ec:	8fc2003c 	lw	v0,60(s8)
  4b78f0:	00000000 	nop
  4b78f4:	2442001b 	addiu	v0,v0,27
  4b78f8:	90420000 	lbu	v0,0(v0)
  4b78fc:	00000000 	nop
  4b7900:	38420075 	xori	v0,v0,0x75
  4b7904:	304200ff 	andi	v0,v0,0xff
  4b7908:	8f83804c 	lw	v1,-32692(gp)
  4b790c:	00000000 	nop
  4b7910:	24635890 	addiu	v1,v1,22672
  4b7914:	00621821 	addu	v1,v1,v0
  4b7918:	8fc2003c 	lw	v0,60(s8)
  4b791c:	00000000 	nop
  4b7920:	24420013 	addiu	v0,v0,19
  4b7924:	90630000 	lbu	v1,0(v1)
  4b7928:	90420000 	lbu	v0,0(v0)
  4b792c:	00000000 	nop
  4b7930:	00621026 	xor	v0,v1,v0
  4b7934:	304200ff 	andi	v0,v0,0xff
  4b7938:	8f83804c 	lw	v1,-32692(gp)
  4b793c:	00000000 	nop
  4b7940:	24635990 	addiu	v1,v1,22928
  4b7944:	00621821 	addu	v1,v1,v0
  4b7948:	8fc2003c 	lw	v0,60(s8)
  4b794c:	00000000 	nop
  4b7950:	2442000b 	addiu	v0,v0,11
  4b7954:	90630000 	lbu	v1,0(v1)
  4b7958:	90420000 	lbu	v0,0(v0)
  4b795c:	00000000 	nop
  4b7960:	00621026 	xor	v0,v1,v0
  4b7964:	304200ff 	andi	v0,v0,0xff
  4b7968:	8f83804c 	lw	v1,-32692(gp)
  4b796c:	00000000 	nop
  4b7970:	24635990 	addiu	v1,v1,22928
  4b7974:	00621821 	addu	v1,v1,v0
  4b7978:	8fc2003c 	lw	v0,60(s8)
  4b797c:	00000000 	nop
  4b7980:	24420003 	addiu	v0,v0,3
  4b7984:	90630000 	lbu	v1,0(v1)
  4b7988:	90420000 	lbu	v0,0(v0)
  4b798c:	00000000 	nop
  4b7990:	00621026 	xor	v0,v1,v0
  4b7994:	304200ff 	andi	v0,v0,0xff
  4b7998:	00021080 	sll	v0,v0,0x2
  4b799c:	24420c00 	addiu	v0,v0,3072
  4b79a0:	8f81804c 	lw	at,-32692(gp)
  4b79a4:	00000000 	nop
  4b79a8:	24215a90 	addiu	at,at,23184
  4b79ac:	00221021 	addu	v0,at,v0
  4b79b0:	8c420000 	lw	v0,0(v0)
  4b79b4:	00000000 	nop
  4b79b8:	00821026 	xor	v0,a0,v0
  4b79bc:	afc20014 	sw	v0,20(s8)
  4b79c0:	8fc2003c 	lw	v0,60(s8)
  4b79c4:	00000000 	nop
  4b79c8:	2442001c 	addiu	v0,v0,28
  4b79cc:	90420000 	lbu	v0,0(v0)
  4b79d0:	00000000 	nop
  4b79d4:	384200f3 	xori	v0,v0,0xf3
  4b79d8:	304200ff 	andi	v0,v0,0xff
  4b79dc:	8f83804c 	lw	v1,-32692(gp)
  4b79e0:	00000000 	nop
  4b79e4:	24635990 	addiu	v1,v1,22928
  4b79e8:	00621821 	addu	v1,v1,v0
  4b79ec:	8fc2003c 	lw	v0,60(s8)
  4b79f0:	00000000 	nop
  4b79f4:	24420014 	addiu	v0,v0,20
  4b79f8:	90630000 	lbu	v1,0(v1)
  4b79fc:	90420000 	lbu	v0,0(v0)
  4b7a00:	00000000 	nop
  4b7a04:	00621026 	xor	v0,v1,v0
  4b7a08:	304200ff 	andi	v0,v0,0xff
  4b7a0c:	8f83804c 	lw	v1,-32692(gp)
  4b7a10:	00000000 	nop
  4b7a14:	24635890 	addiu	v1,v1,22672
  4b7a18:	00621821 	addu	v1,v1,v0
  4b7a1c:	8fc2003c 	lw	v0,60(s8)
  4b7a20:	00000000 	nop
  4b7a24:	2442000c 	addiu	v0,v0,12
  4b7a28:	90630000 	lbu	v1,0(v1)
  4b7a2c:	90420000 	lbu	v0,0(v0)
  4b7a30:	00000000 	nop
  4b7a34:	00621026 	xor	v0,v1,v0
  4b7a38:	304200ff 	andi	v0,v0,0xff
  4b7a3c:	8f83804c 	lw	v1,-32692(gp)
  4b7a40:	00000000 	nop
  4b7a44:	24635890 	addiu	v1,v1,22672
  4b7a48:	00621821 	addu	v1,v1,v0
  4b7a4c:	8fc2003c 	lw	v0,60(s8)
  4b7a50:	00000000 	nop
  4b7a54:	24420004 	addiu	v0,v0,4
  4b7a58:	90630000 	lbu	v1,0(v1)
  4b7a5c:	90420000 	lbu	v0,0(v0)
  4b7a60:	00000000 	nop
  4b7a64:	00621026 	xor	v0,v1,v0
  4b7a68:	304200ff 	andi	v0,v0,0xff
  4b7a6c:	00021080 	sll	v0,v0,0x2
  4b7a70:	8f84804c 	lw	a0,-32692(gp)
  4b7a74:	00000000 	nop
  4b7a78:	24845a90 	addiu	a0,a0,23184
  4b7a7c:	00822021 	addu	a0,a0,v0
  4b7a80:	8fc2003c 	lw	v0,60(s8)
  4b7a84:	00000000 	nop
  4b7a88:	2442001d 	addiu	v0,v0,29
  4b7a8c:	90420000 	lbu	v0,0(v0)
  4b7a90:	00000000 	nop
  4b7a94:	38420067 	xori	v0,v0,0x67
  4b7a98:	304200ff 	andi	v0,v0,0xff
  4b7a9c:	8f83804c 	lw	v1,-32692(gp)
  4b7aa0:	00000000 	nop
  4b7aa4:	24635990 	addiu	v1,v1,22928
  4b7aa8:	00621821 	addu	v1,v1,v0
  4b7aac:	8fc2003c 	lw	v0,60(s8)
  4b7ab0:	00000000 	nop
  4b7ab4:	24420015 	addiu	v0,v0,21
  4b7ab8:	90630000 	lbu	v1,0(v1)
  4b7abc:	90420000 	lbu	v0,0(v0)
  4b7ac0:	00000000 	nop
  4b7ac4:	00621026 	xor	v0,v1,v0
  4b7ac8:	304200ff 	andi	v0,v0,0xff
  4b7acc:	8f83804c 	lw	v1,-32692(gp)
  4b7ad0:	00000000 	nop
  4b7ad4:	24635990 	addiu	v1,v1,22928
  4b7ad8:	00621821 	addu	v1,v1,v0
  4b7adc:	8fc2003c 	lw	v0,60(s8)
  4b7ae0:	00000000 	nop
  4b7ae4:	2442000d 	addiu	v0,v0,13
  4b7ae8:	90630000 	lbu	v1,0(v1)
  4b7aec:	90420000 	lbu	v0,0(v0)
  4b7af0:	00000000 	nop
  4b7af4:	00621026 	xor	v0,v1,v0
  4b7af8:	304200ff 	andi	v0,v0,0xff
  4b7afc:	8f83804c 	lw	v1,-32692(gp)
  4b7b00:	00000000 	nop
  4b7b04:	24635890 	addiu	v1,v1,22672
  4b7b08:	00621821 	addu	v1,v1,v0
  4b7b0c:	8fc2003c 	lw	v0,60(s8)
  4b7b10:	00000000 	nop
  4b7b14:	24420005 	addiu	v0,v0,5
  4b7b18:	90630000 	lbu	v1,0(v1)
  4b7b1c:	90420000 	lbu	v0,0(v0)
  4b7b20:	00000000 	nop
  4b7b24:	00621026 	xor	v0,v1,v0
  4b7b28:	304200ff 	andi	v0,v0,0xff
  4b7b2c:	00021080 	sll	v0,v0,0x2
  4b7b30:	24420400 	addiu	v0,v0,1024
  4b7b34:	8f81804c 	lw	at,-32692(gp)
  4b7b38:	00000000 	nop
  4b7b3c:	24215a90 	addiu	at,at,23184
  4b7b40:	00221021 	addu	v0,at,v0
  4b7b44:	8c830000 	lw	v1,0(a0)
  4b7b48:	8c420000 	lw	v0,0(v0)
  4b7b4c:	00000000 	nop
  4b7b50:	00622026 	xor	a0,v1,v0
  4b7b54:	8fc2003c 	lw	v0,60(s8)
  4b7b58:	00000000 	nop
  4b7b5c:	2442001e 	addiu	v0,v0,30
  4b7b60:	90420000 	lbu	v0,0(v0)
  4b7b64:	00000000 	nop
  4b7b68:	38420067 	xori	v0,v0,0x67
  4b7b6c:	304200ff 	andi	v0,v0,0xff
  4b7b70:	8f83804c 	lw	v1,-32692(gp)
  4b7b74:	00000000 	nop
  4b7b78:	24635890 	addiu	v1,v1,22672
  4b7b7c:	00621821 	addu	v1,v1,v0
  4b7b80:	8fc2003c 	lw	v0,60(s8)
  4b7b84:	00000000 	nop
  4b7b88:	24420016 	addiu	v0,v0,22
  4b7b8c:	90630000 	lbu	v1,0(v1)
  4b7b90:	90420000 	lbu	v0,0(v0)
  4b7b94:	00000000 	nop
  4b7b98:	00621026 	xor	v0,v1,v0
  4b7b9c:	304200ff 	andi	v0,v0,0xff
  4b7ba0:	8f83804c 	lw	v1,-32692(gp)
  4b7ba4:	00000000 	nop
  4b7ba8:	24635890 	addiu	v1,v1,22672
  4b7bac:	00621821 	addu	v1,v1,v0
  4b7bb0:	8fc2003c 	lw	v0,60(s8)
  4b7bb4:	00000000 	nop
  4b7bb8:	2442000e 	addiu	v0,v0,14
  4b7bbc:	90630000 	lbu	v1,0(v1)
  4b7bc0:	90420000 	lbu	v0,0(v0)
  4b7bc4:	00000000 	nop
  4b7bc8:	00621026 	xor	v0,v1,v0
  4b7bcc:	304200ff 	andi	v0,v0,0xff
  4b7bd0:	8f83804c 	lw	v1,-32692(gp)
  4b7bd4:	00000000 	nop
  4b7bd8:	24635990 	addiu	v1,v1,22928
  4b7bdc:	00621821 	addu	v1,v1,v0
  4b7be0:	8fc2003c 	lw	v0,60(s8)
  4b7be4:	00000000 	nop
  4b7be8:	24420006 	addiu	v0,v0,6
  4b7bec:	90630000 	lbu	v1,0(v1)
  4b7bf0:	90420000 	lbu	v0,0(v0)
  4b7bf4:	00000000 	nop
  4b7bf8:	00621026 	xor	v0,v1,v0
  4b7bfc:	304200ff 	andi	v0,v0,0xff
  4b7c00:	00021080 	sll	v0,v0,0x2
  4b7c04:	24420800 	addiu	v0,v0,2048
  4b7c08:	8f81804c 	lw	at,-32692(gp)
  4b7c0c:	00000000 	nop
  4b7c10:	24215a90 	addiu	at,at,23184
  4b7c14:	00221021 	addu	v0,at,v0
  4b7c18:	8c420000 	lw	v0,0(v0)
  4b7c1c:	00000000 	nop
  4b7c20:	00822026 	xor	a0,a0,v0
  4b7c24:	8fc2003c 	lw	v0,60(s8)
  4b7c28:	00000000 	nop
  4b7c2c:	2442001f 	addiu	v0,v0,31
  4b7c30:	90420000 	lbu	v0,0(v0)
  4b7c34:	00000000 	nop
  4b7c38:	384200f3 	xori	v0,v0,0xf3
  4b7c3c:	304200ff 	andi	v0,v0,0xff
  4b7c40:	8f83804c 	lw	v1,-32692(gp)
  4b7c44:	00000000 	nop
  4b7c48:	24635890 	addiu	v1,v1,22672
  4b7c4c:	00621821 	addu	v1,v1,v0
  4b7c50:	8fc2003c 	lw	v0,60(s8)
  4b7c54:	00000000 	nop
  4b7c58:	24420017 	addiu	v0,v0,23
  4b7c5c:	90630000 	lbu	v1,0(v1)
  4b7c60:	90420000 	lbu	v0,0(v0)
  4b7c64:	00000000 	nop
  4b7c68:	00621026 	xor	v0,v1,v0
  4b7c6c:	304200ff 	andi	v0,v0,0xff
  4b7c70:	8f83804c 	lw	v1,-32692(gp)
  4b7c74:	00000000 	nop
  4b7c78:	24635990 	addiu	v1,v1,22928
  4b7c7c:	00621821 	addu	v1,v1,v0
  4b7c80:	8fc2003c 	lw	v0,60(s8)
  4b7c84:	00000000 	nop
  4b7c88:	2442000f 	addiu	v0,v0,15
  4b7c8c:	90630000 	lbu	v1,0(v1)
  4b7c90:	90420000 	lbu	v0,0(v0)
  4b7c94:	00000000 	nop
  4b7c98:	00621026 	xor	v0,v1,v0
  4b7c9c:	304200ff 	andi	v0,v0,0xff
  4b7ca0:	8f83804c 	lw	v1,-32692(gp)
  4b7ca4:	00000000 	nop
  4b7ca8:	24635990 	addiu	v1,v1,22928
  4b7cac:	00621821 	addu	v1,v1,v0
  4b7cb0:	8fc2003c 	lw	v0,60(s8)
  4b7cb4:	00000000 	nop
  4b7cb8:	24420007 	addiu	v0,v0,7
  4b7cbc:	90630000 	lbu	v1,0(v1)
  4b7cc0:	90420000 	lbu	v0,0(v0)
  4b7cc4:	00000000 	nop
  4b7cc8:	00621026 	xor	v0,v1,v0
  4b7ccc:	304200ff 	andi	v0,v0,0xff
  4b7cd0:	00021080 	sll	v0,v0,0x2
  4b7cd4:	24420c00 	addiu	v0,v0,3072
  4b7cd8:	8f81804c 	lw	at,-32692(gp)
  4b7cdc:	00000000 	nop
  4b7ce0:	24215a90 	addiu	at,at,23184
  4b7ce4:	00221021 	addu	v0,at,v0
  4b7ce8:	8c420000 	lw	v0,0(v0)
  4b7cec:	00000000 	nop
  4b7cf0:	00821026 	xor	v0,a0,v0
  4b7cf4:	afc20018 	sw	v0,24(s8)
  4b7cf8:	8fc20018 	lw	v0,24(s8)
  4b7cfc:	00000000 	nop
  4b7d00:	00021a00 	sll	v1,v0,0x8
  4b7d04:	00021602 	srl	v0,v0,0x18
  4b7d08:	00621025 	or	v0,v1,v0
  4b7d0c:	afc20018 	sw	v0,24(s8)
  4b7d10:	8fc30014 	lw	v1,20(s8)
  4b7d14:	8fc20018 	lw	v0,24(s8)
  4b7d18:	00000000 	nop
  4b7d1c:	00621021 	addu	v0,v1,v0
  4b7d20:	afc20014 	sw	v0,20(s8)
  4b7d24:	8fc30018 	lw	v1,24(s8)
  4b7d28:	8fc20014 	lw	v0,20(s8)
  4b7d2c:	00000000 	nop
  4b7d30:	00621021 	addu	v0,v1,v0
  4b7d34:	afc20018 	sw	v0,24(s8)
  4b7d38:	8fc30014 	lw	v1,20(s8)
  4b7d3c:	8fc20038 	lw	v0,56(s8)
  4b7d40:	00000000 	nop
  4b7d44:	ac431000 	sw	v1,4096(v0)
  4b7d48:	8fc20018 	lw	v0,24(s8)
  4b7d4c:	00000000 	nop
  4b7d50:	00021a40 	sll	v1,v0,0x9
  4b7d54:	000215c2 	srl	v0,v0,0x17
  4b7d58:	00621825 	or	v1,v1,v0
  4b7d5c:	8fc20038 	lw	v0,56(s8)
  4b7d60:	00000000 	nop
  4b7d64:	ac431004 	sw	v1,4100(v0)
		CALC_K256 (w, 2, 0xB3, 0xC6, 0xE8, 0xF4);
  4b7d68:	8fc2003c 	lw	v0,60(s8)
  4b7d6c:	00000000 	nop
  4b7d70:	24420018 	addiu	v0,v0,24
  4b7d74:	90420000 	lbu	v0,0(v0)
  4b7d78:	00000000 	nop
  4b7d7c:	384200c6 	xori	v0,v0,0xc6
  4b7d80:	304200ff 	andi	v0,v0,0xff
  4b7d84:	8f83804c 	lw	v1,-32692(gp)
  4b7d88:	00000000 	nop
  4b7d8c:	24635990 	addiu	v1,v1,22928
  4b7d90:	00621821 	addu	v1,v1,v0
  4b7d94:	8fc2003c 	lw	v0,60(s8)
  4b7d98:	00000000 	nop
  4b7d9c:	24420010 	addiu	v0,v0,16
  4b7da0:	90630000 	lbu	v1,0(v1)
  4b7da4:	90420000 	lbu	v0,0(v0)
  4b7da8:	00000000 	nop
  4b7dac:	00621026 	xor	v0,v1,v0
  4b7db0:	304200ff 	andi	v0,v0,0xff
  4b7db4:	8f83804c 	lw	v1,-32692(gp)
  4b7db8:	00000000 	nop
  4b7dbc:	24635890 	addiu	v1,v1,22672
  4b7dc0:	00621821 	addu	v1,v1,v0
  4b7dc4:	8fc2003c 	lw	v0,60(s8)
  4b7dc8:	00000000 	nop
  4b7dcc:	24420008 	addiu	v0,v0,8
  4b7dd0:	90630000 	lbu	v1,0(v1)
  4b7dd4:	90420000 	lbu	v0,0(v0)
  4b7dd8:	00000000 	nop
  4b7ddc:	00621026 	xor	v0,v1,v0
  4b7de0:	304200ff 	andi	v0,v0,0xff
  4b7de4:	8f81804c 	lw	at,-32692(gp)
  4b7de8:	00000000 	nop
  4b7dec:	24215890 	addiu	at,at,22672
  4b7df0:	00221021 	addu	v0,at,v0
  4b7df4:	90430000 	lbu	v1,0(v0)
  4b7df8:	8fc2003c 	lw	v0,60(s8)
  4b7dfc:	00000000 	nop
  4b7e00:	90420000 	lbu	v0,0(v0)
  4b7e04:	00000000 	nop
  4b7e08:	00621026 	xor	v0,v1,v0
  4b7e0c:	304200ff 	andi	v0,v0,0xff
  4b7e10:	00021080 	sll	v0,v0,0x2
  4b7e14:	8f84804c 	lw	a0,-32692(gp)
  4b7e18:	00000000 	nop
  4b7e1c:	24845a90 	addiu	a0,a0,23184
  4b7e20:	00822021 	addu	a0,a0,v0
  4b7e24:	8fc2003c 	lw	v0,60(s8)
  4b7e28:	00000000 	nop
  4b7e2c:	24420019 	addiu	v0,v0,25
  4b7e30:	90420000 	lbu	v0,0(v0)
  4b7e34:	00000000 	nop
  4b7e38:	384200b3 	xori	v0,v0,0xb3
  4b7e3c:	304200ff 	andi	v0,v0,0xff
  4b7e40:	8f83804c 	lw	v1,-32692(gp)
  4b7e44:	00000000 	nop
  4b7e48:	24635990 	addiu	v1,v1,22928
  4b7e4c:	00621821 	addu	v1,v1,v0
  4b7e50:	8fc2003c 	lw	v0,60(s8)
  4b7e54:	00000000 	nop
  4b7e58:	24420011 	addiu	v0,v0,17
  4b7e5c:	90630000 	lbu	v1,0(v1)
  4b7e60:	90420000 	lbu	v0,0(v0)
  4b7e64:	00000000 	nop
  4b7e68:	00621026 	xor	v0,v1,v0
  4b7e6c:	304200ff 	andi	v0,v0,0xff
  4b7e70:	8f83804c 	lw	v1,-32692(gp)
  4b7e74:	00000000 	nop
  4b7e78:	24635990 	addiu	v1,v1,22928
  4b7e7c:	00621821 	addu	v1,v1,v0
  4b7e80:	8fc2003c 	lw	v0,60(s8)
  4b7e84:	00000000 	nop
  4b7e88:	24420009 	addiu	v0,v0,9
  4b7e8c:	90630000 	lbu	v1,0(v1)
  4b7e90:	90420000 	lbu	v0,0(v0)
  4b7e94:	00000000 	nop
  4b7e98:	00621026 	xor	v0,v1,v0
  4b7e9c:	304200ff 	andi	v0,v0,0xff
  4b7ea0:	8f83804c 	lw	v1,-32692(gp)
  4b7ea4:	00000000 	nop
  4b7ea8:	24635890 	addiu	v1,v1,22672
  4b7eac:	00621821 	addu	v1,v1,v0
  4b7eb0:	8fc2003c 	lw	v0,60(s8)
  4b7eb4:	00000000 	nop
  4b7eb8:	24420001 	addiu	v0,v0,1
  4b7ebc:	90630000 	lbu	v1,0(v1)
  4b7ec0:	90420000 	lbu	v0,0(v0)
  4b7ec4:	00000000 	nop
  4b7ec8:	00621026 	xor	v0,v1,v0
  4b7ecc:	304200ff 	andi	v0,v0,0xff
  4b7ed0:	00021080 	sll	v0,v0,0x2
  4b7ed4:	24420400 	addiu	v0,v0,1024
  4b7ed8:	8f81804c 	lw	at,-32692(gp)
  4b7edc:	00000000 	nop
  4b7ee0:	24215a90 	addiu	at,at,23184
  4b7ee4:	00221021 	addu	v0,at,v0
  4b7ee8:	8c830000 	lw	v1,0(a0)
  4b7eec:	8c420000 	lw	v0,0(v0)
  4b7ef0:	00000000 	nop
  4b7ef4:	00622026 	xor	a0,v1,v0
  4b7ef8:	8fc2003c 	lw	v0,60(s8)
  4b7efc:	00000000 	nop
  4b7f00:	2442001a 	addiu	v0,v0,26
  4b7f04:	90420000 	lbu	v0,0(v0)
  4b7f08:	00000000 	nop
  4b7f0c:	384200b3 	xori	v0,v0,0xb3
  4b7f10:	304200ff 	andi	v0,v0,0xff
  4b7f14:	8f83804c 	lw	v1,-32692(gp)
  4b7f18:	00000000 	nop
  4b7f1c:	24635890 	addiu	v1,v1,22672
  4b7f20:	00621821 	addu	v1,v1,v0
  4b7f24:	8fc2003c 	lw	v0,60(s8)
  4b7f28:	00000000 	nop
  4b7f2c:	24420012 	addiu	v0,v0,18
  4b7f30:	90630000 	lbu	v1,0(v1)
  4b7f34:	90420000 	lbu	v0,0(v0)
  4b7f38:	00000000 	nop
  4b7f3c:	00621026 	xor	v0,v1,v0
  4b7f40:	304200ff 	andi	v0,v0,0xff
  4b7f44:	8f83804c 	lw	v1,-32692(gp)
  4b7f48:	00000000 	nop
  4b7f4c:	24635890 	addiu	v1,v1,22672
  4b7f50:	00621821 	addu	v1,v1,v0
  4b7f54:	8fc2003c 	lw	v0,60(s8)
  4b7f58:	00000000 	nop
  4b7f5c:	2442000a 	addiu	v0,v0,10
  4b7f60:	90630000 	lbu	v1,0(v1)
  4b7f64:	90420000 	lbu	v0,0(v0)
  4b7f68:	00000000 	nop
  4b7f6c:	00621026 	xor	v0,v1,v0
  4b7f70:	304200ff 	andi	v0,v0,0xff
  4b7f74:	8f83804c 	lw	v1,-32692(gp)
  4b7f78:	00000000 	nop
  4b7f7c:	24635990 	addiu	v1,v1,22928
  4b7f80:	00621821 	addu	v1,v1,v0
  4b7f84:	8fc2003c 	lw	v0,60(s8)
  4b7f88:	00000000 	nop
  4b7f8c:	24420002 	addiu	v0,v0,2
  4b7f90:	90630000 	lbu	v1,0(v1)
  4b7f94:	90420000 	lbu	v0,0(v0)
  4b7f98:	00000000 	nop
  4b7f9c:	00621026 	xor	v0,v1,v0
  4b7fa0:	304200ff 	andi	v0,v0,0xff
  4b7fa4:	00021080 	sll	v0,v0,0x2
  4b7fa8:	24420800 	addiu	v0,v0,2048
  4b7fac:	8f81804c 	lw	at,-32692(gp)
  4b7fb0:	00000000 	nop
  4b7fb4:	24215a90 	addiu	at,at,23184
  4b7fb8:	00221021 	addu	v0,at,v0
  4b7fbc:	8c420000 	lw	v0,0(v0)
  4b7fc0:	00000000 	nop
  4b7fc4:	00822026 	xor	a0,a0,v0
  4b7fc8:	8fc2003c 	lw	v0,60(s8)
  4b7fcc:	00000000 	nop
  4b7fd0:	2442001b 	addiu	v0,v0,27
  4b7fd4:	90420000 	lbu	v0,0(v0)
  4b7fd8:	00000000 	nop
  4b7fdc:	384200c6 	xori	v0,v0,0xc6
  4b7fe0:	304200ff 	andi	v0,v0,0xff
  4b7fe4:	8f83804c 	lw	v1,-32692(gp)
  4b7fe8:	00000000 	nop
  4b7fec:	24635890 	addiu	v1,v1,22672
  4b7ff0:	00621821 	addu	v1,v1,v0
  4b7ff4:	8fc2003c 	lw	v0,60(s8)
  4b7ff8:	00000000 	nop
  4b7ffc:	24420013 	addiu	v0,v0,19
  4b8000:	90630000 	lbu	v1,0(v1)
  4b8004:	90420000 	lbu	v0,0(v0)
  4b8008:	00000000 	nop
  4b800c:	00621026 	xor	v0,v1,v0
  4b8010:	304200ff 	andi	v0,v0,0xff
  4b8014:	8f83804c 	lw	v1,-32692(gp)
  4b8018:	00000000 	nop
  4b801c:	24635990 	addiu	v1,v1,22928
  4b8020:	00621821 	addu	v1,v1,v0
  4b8024:	8fc2003c 	lw	v0,60(s8)
  4b8028:	00000000 	nop
  4b802c:	2442000b 	addiu	v0,v0,11
  4b8030:	90630000 	lbu	v1,0(v1)
  4b8034:	90420000 	lbu	v0,0(v0)
  4b8038:	00000000 	nop
  4b803c:	00621026 	xor	v0,v1,v0
  4b8040:	304200ff 	andi	v0,v0,0xff
  4b8044:	8f83804c 	lw	v1,-32692(gp)
  4b8048:	00000000 	nop
  4b804c:	24635990 	addiu	v1,v1,22928
  4b8050:	00621821 	addu	v1,v1,v0
  4b8054:	8fc2003c 	lw	v0,60(s8)
  4b8058:	00000000 	nop
  4b805c:	24420003 	addiu	v0,v0,3
  4b8060:	90630000 	lbu	v1,0(v1)
  4b8064:	90420000 	lbu	v0,0(v0)
  4b8068:	00000000 	nop
  4b806c:	00621026 	xor	v0,v1,v0
  4b8070:	304200ff 	andi	v0,v0,0xff
  4b8074:	00021080 	sll	v0,v0,0x2
  4b8078:	24420c00 	addiu	v0,v0,3072
  4b807c:	8f81804c 	lw	at,-32692(gp)
  4b8080:	00000000 	nop
  4b8084:	24215a90 	addiu	at,at,23184
  4b8088:	00221021 	addu	v0,at,v0
  4b808c:	8c420000 	lw	v0,0(v0)
  4b8090:	00000000 	nop
  4b8094:	00821026 	xor	v0,a0,v0
  4b8098:	afc20014 	sw	v0,20(s8)
  4b809c:	8fc2003c 	lw	v0,60(s8)
  4b80a0:	00000000 	nop
  4b80a4:	2442001c 	addiu	v0,v0,28
  4b80a8:	90420000 	lbu	v0,0(v0)
  4b80ac:	00000000 	nop
  4b80b0:	384200f4 	xori	v0,v0,0xf4
  4b80b4:	304200ff 	andi	v0,v0,0xff
  4b80b8:	8f83804c 	lw	v1,-32692(gp)
  4b80bc:	00000000 	nop
  4b80c0:	24635990 	addiu	v1,v1,22928
  4b80c4:	00621821 	addu	v1,v1,v0
  4b80c8:	8fc2003c 	lw	v0,60(s8)
  4b80cc:	00000000 	nop
  4b80d0:	24420014 	addiu	v0,v0,20
  4b80d4:	90630000 	lbu	v1,0(v1)
  4b80d8:	90420000 	lbu	v0,0(v0)
  4b80dc:	00000000 	nop
  4b80e0:	00621026 	xor	v0,v1,v0
  4b80e4:	304200ff 	andi	v0,v0,0xff
  4b80e8:	8f83804c 	lw	v1,-32692(gp)
  4b80ec:	00000000 	nop
  4b80f0:	24635890 	addiu	v1,v1,22672
  4b80f4:	00621821 	addu	v1,v1,v0
  4b80f8:	8fc2003c 	lw	v0,60(s8)
  4b80fc:	00000000 	nop
  4b8100:	2442000c 	addiu	v0,v0,12
  4b8104:	90630000 	lbu	v1,0(v1)
  4b8108:	90420000 	lbu	v0,0(v0)
  4b810c:	00000000 	nop
  4b8110:	00621026 	xor	v0,v1,v0
  4b8114:	304200ff 	andi	v0,v0,0xff
  4b8118:	8f83804c 	lw	v1,-32692(gp)
  4b811c:	00000000 	nop
  4b8120:	24635890 	addiu	v1,v1,22672
  4b8124:	00621821 	addu	v1,v1,v0
  4b8128:	8fc2003c 	lw	v0,60(s8)
  4b812c:	00000000 	nop
  4b8130:	24420004 	addiu	v0,v0,4
  4b8134:	90630000 	lbu	v1,0(v1)
  4b8138:	90420000 	lbu	v0,0(v0)
  4b813c:	00000000 	nop
  4b8140:	00621026 	xor	v0,v1,v0
  4b8144:	304200ff 	andi	v0,v0,0xff
  4b8148:	00021080 	sll	v0,v0,0x2
  4b814c:	8f84804c 	lw	a0,-32692(gp)
  4b8150:	00000000 	nop
  4b8154:	24845a90 	addiu	a0,a0,23184
  4b8158:	00822021 	addu	a0,a0,v0
  4b815c:	8fc2003c 	lw	v0,60(s8)
  4b8160:	00000000 	nop
  4b8164:	2442001d 	addiu	v0,v0,29
  4b8168:	90420000 	lbu	v0,0(v0)
  4b816c:	00000000 	nop
  4b8170:	384200e8 	xori	v0,v0,0xe8
  4b8174:	304200ff 	andi	v0,v0,0xff
  4b8178:	8f83804c 	lw	v1,-32692(gp)
  4b817c:	00000000 	nop
  4b8180:	24635990 	addiu	v1,v1,22928
  4b8184:	00621821 	addu	v1,v1,v0
  4b8188:	8fc2003c 	lw	v0,60(s8)
  4b818c:	00000000 	nop
  4b8190:	24420015 	addiu	v0,v0,21
  4b8194:	90630000 	lbu	v1,0(v1)
  4b8198:	90420000 	lbu	v0,0(v0)
  4b819c:	00000000 	nop
  4b81a0:	00621026 	xor	v0,v1,v0
  4b81a4:	304200ff 	andi	v0,v0,0xff
  4b81a8:	8f83804c 	lw	v1,-32692(gp)
  4b81ac:	00000000 	nop
  4b81b0:	24635990 	addiu	v1,v1,22928
  4b81b4:	00621821 	addu	v1,v1,v0
  4b81b8:	8fc2003c 	lw	v0,60(s8)
  4b81bc:	00000000 	nop
  4b81c0:	2442000d 	addiu	v0,v0,13
  4b81c4:	90630000 	lbu	v1,0(v1)
  4b81c8:	90420000 	lbu	v0,0(v0)
  4b81cc:	00000000 	nop
  4b81d0:	00621026 	xor	v0,v1,v0
  4b81d4:	304200ff 	andi	v0,v0,0xff
  4b81d8:	8f83804c 	lw	v1,-32692(gp)
  4b81dc:	00000000 	nop
  4b81e0:	24635890 	addiu	v1,v1,22672
  4b81e4:	00621821 	addu	v1,v1,v0
  4b81e8:	8fc2003c 	lw	v0,60(s8)
  4b81ec:	00000000 	nop
  4b81f0:	24420005 	addiu	v0,v0,5
  4b81f4:	90630000 	lbu	v1,0(v1)
  4b81f8:	90420000 	lbu	v0,0(v0)
  4b81fc:	00000000 	nop
  4b8200:	00621026 	xor	v0,v1,v0
  4b8204:	304200ff 	andi	v0,v0,0xff
  4b8208:	00021080 	sll	v0,v0,0x2
  4b820c:	24420400 	addiu	v0,v0,1024
  4b8210:	8f81804c 	lw	at,-32692(gp)
  4b8214:	00000000 	nop
  4b8218:	24215a90 	addiu	at,at,23184
  4b821c:	00221021 	addu	v0,at,v0
  4b8220:	8c830000 	lw	v1,0(a0)
  4b8224:	8c420000 	lw	v0,0(v0)
  4b8228:	00000000 	nop
  4b822c:	00622026 	xor	a0,v1,v0
  4b8230:	8fc2003c 	lw	v0,60(s8)
  4b8234:	00000000 	nop
  4b8238:	2442001e 	addiu	v0,v0,30
  4b823c:	90420000 	lbu	v0,0(v0)
  4b8240:	00000000 	nop
  4b8244:	384200e8 	xori	v0,v0,0xe8
  4b8248:	304200ff 	andi	v0,v0,0xff
  4b824c:	8f83804c 	lw	v1,-32692(gp)
  4b8250:	00000000 	nop
  4b8254:	24635890 	addiu	v1,v1,22672
  4b8258:	00621821 	addu	v1,v1,v0
  4b825c:	8fc2003c 	lw	v0,60(s8)
  4b8260:	00000000 	nop
  4b8264:	24420016 	addiu	v0,v0,22
  4b8268:	90630000 	lbu	v1,0(v1)
  4b826c:	90420000 	lbu	v0,0(v0)
  4b8270:	00000000 	nop
  4b8274:	00621026 	xor	v0,v1,v0
  4b8278:	304200ff 	andi	v0,v0,0xff
  4b827c:	8f83804c 	lw	v1,-32692(gp)
  4b8280:	00000000 	nop
  4b8284:	24635890 	addiu	v1,v1,22672
  4b8288:	00621821 	addu	v1,v1,v0
  4b828c:	8fc2003c 	lw	v0,60(s8)
  4b8290:	00000000 	nop
  4b8294:	2442000e 	addiu	v0,v0,14
  4b8298:	90630000 	lbu	v1,0(v1)
  4b829c:	90420000 	lbu	v0,0(v0)
  4b82a0:	00000000 	nop
  4b82a4:	00621026 	xor	v0,v1,v0
  4b82a8:	304200ff 	andi	v0,v0,0xff
  4b82ac:	8f83804c 	lw	v1,-32692(gp)
  4b82b0:	00000000 	nop
  4b82b4:	24635990 	addiu	v1,v1,22928
  4b82b8:	00621821 	addu	v1,v1,v0
  4b82bc:	8fc2003c 	lw	v0,60(s8)
  4b82c0:	00000000 	nop
  4b82c4:	24420006 	addiu	v0,v0,6
  4b82c8:	90630000 	lbu	v1,0(v1)
  4b82cc:	90420000 	lbu	v0,0(v0)
  4b82d0:	00000000 	nop
  4b82d4:	00621026 	xor	v0,v1,v0
  4b82d8:	304200ff 	andi	v0,v0,0xff
  4b82dc:	00021080 	sll	v0,v0,0x2
  4b82e0:	24420800 	addiu	v0,v0,2048
  4b82e4:	8f81804c 	lw	at,-32692(gp)
  4b82e8:	00000000 	nop
  4b82ec:	24215a90 	addiu	at,at,23184
  4b82f0:	00221021 	addu	v0,at,v0
  4b82f4:	8c420000 	lw	v0,0(v0)
  4b82f8:	00000000 	nop
  4b82fc:	00822026 	xor	a0,a0,v0
  4b8300:	8fc2003c 	lw	v0,60(s8)
  4b8304:	00000000 	nop
  4b8308:	2442001f 	addiu	v0,v0,31
  4b830c:	90420000 	lbu	v0,0(v0)
  4b8310:	00000000 	nop
  4b8314:	384200f4 	xori	v0,v0,0xf4
  4b8318:	304200ff 	andi	v0,v0,0xff
  4b831c:	8f83804c 	lw	v1,-32692(gp)
  4b8320:	00000000 	nop
  4b8324:	24635890 	addiu	v1,v1,22672
  4b8328:	00621821 	addu	v1,v1,v0
  4b832c:	8fc2003c 	lw	v0,60(s8)
  4b8330:	00000000 	nop
  4b8334:	24420017 	addiu	v0,v0,23
  4b8338:	90630000 	lbu	v1,0(v1)
  4b833c:	90420000 	lbu	v0,0(v0)
  4b8340:	00000000 	nop
  4b8344:	00621026 	xor	v0,v1,v0
  4b8348:	304200ff 	andi	v0,v0,0xff
  4b834c:	8f83804c 	lw	v1,-32692(gp)
  4b8350:	00000000 	nop
  4b8354:	24635990 	addiu	v1,v1,22928
  4b8358:	00621821 	addu	v1,v1,v0
  4b835c:	8fc2003c 	lw	v0,60(s8)
  4b8360:	00000000 	nop
  4b8364:	2442000f 	addiu	v0,v0,15
  4b8368:	90630000 	lbu	v1,0(v1)
  4b836c:	90420000 	lbu	v0,0(v0)
  4b8370:	00000000 	nop
  4b8374:	00621026 	xor	v0,v1,v0
  4b8378:	304200ff 	andi	v0,v0,0xff
  4b837c:	8f83804c 	lw	v1,-32692(gp)
  4b8380:	00000000 	nop
  4b8384:	24635990 	addiu	v1,v1,22928
  4b8388:	00621821 	addu	v1,v1,v0
  4b838c:	8fc2003c 	lw	v0,60(s8)
  4b8390:	00000000 	nop
  4b8394:	24420007 	addiu	v0,v0,7
  4b8398:	90630000 	lbu	v1,0(v1)
  4b839c:	90420000 	lbu	v0,0(v0)
  4b83a0:	00000000 	nop
  4b83a4:	00621026 	xor	v0,v1,v0
  4b83a8:	304200ff 	andi	v0,v0,0xff
  4b83ac:	00021080 	sll	v0,v0,0x2
  4b83b0:	24420c00 	addiu	v0,v0,3072
  4b83b4:	8f81804c 	lw	at,-32692(gp)
  4b83b8:	00000000 	nop
  4b83bc:	24215a90 	addiu	at,at,23184
  4b83c0:	00221021 	addu	v0,at,v0
  4b83c4:	8c420000 	lw	v0,0(v0)
  4b83c8:	00000000 	nop
  4b83cc:	00821026 	xor	v0,a0,v0
  4b83d0:	afc20018 	sw	v0,24(s8)
  4b83d4:	8fc20018 	lw	v0,24(s8)
  4b83d8:	00000000 	nop
  4b83dc:	00021a00 	sll	v1,v0,0x8
  4b83e0:	00021602 	srl	v0,v0,0x18
  4b83e4:	00621025 	or	v0,v1,v0
  4b83e8:	afc20018 	sw	v0,24(s8)
  4b83ec:	8fc30014 	lw	v1,20(s8)
  4b83f0:	8fc20018 	lw	v0,24(s8)
  4b83f4:	00000000 	nop
  4b83f8:	00621021 	addu	v0,v1,v0
  4b83fc:	afc20014 	sw	v0,20(s8)
  4b8400:	8fc30018 	lw	v1,24(s8)
  4b8404:	8fc20014 	lw	v0,20(s8)
  4b8408:	00000000 	nop
  4b840c:	00621021 	addu	v0,v1,v0
  4b8410:	afc20018 	sw	v0,24(s8)
  4b8414:	8fc30014 	lw	v1,20(s8)
  4b8418:	8fc20038 	lw	v0,56(s8)
  4b841c:	00000000 	nop
  4b8420:	ac431008 	sw	v1,4104(v0)
  4b8424:	8fc20018 	lw	v0,24(s8)
  4b8428:	00000000 	nop
  4b842c:	00021a40 	sll	v1,v0,0x9
  4b8430:	000215c2 	srl	v0,v0,0x17
  4b8434:	00621825 	or	v1,v1,v0
  4b8438:	8fc20038 	lw	v0,56(s8)
  4b843c:	00000000 	nop
  4b8440:	ac43100c 	sw	v1,4108(v0)
		CALC_K256 (w, 4, 0x04, 0xDB, 0xFD, 0x7B);
  4b8444:	8fc2003c 	lw	v0,60(s8)
  4b8448:	00000000 	nop
  4b844c:	24420018 	addiu	v0,v0,24
  4b8450:	90420000 	lbu	v0,0(v0)
  4b8454:	00000000 	nop
  4b8458:	384200db 	xori	v0,v0,0xdb
  4b845c:	304200ff 	andi	v0,v0,0xff
  4b8460:	8f83804c 	lw	v1,-32692(gp)
  4b8464:	00000000 	nop
  4b8468:	24635990 	addiu	v1,v1,22928
  4b846c:	00621821 	addu	v1,v1,v0
  4b8470:	8fc2003c 	lw	v0,60(s8)
  4b8474:	00000000 	nop
  4b8478:	24420010 	addiu	v0,v0,16
  4b847c:	90630000 	lbu	v1,0(v1)
  4b8480:	90420000 	lbu	v0,0(v0)
  4b8484:	00000000 	nop
  4b8488:	00621026 	xor	v0,v1,v0
  4b848c:	304200ff 	andi	v0,v0,0xff
  4b8490:	8f83804c 	lw	v1,-32692(gp)
  4b8494:	00000000 	nop
  4b8498:	24635890 	addiu	v1,v1,22672
  4b849c:	00621821 	addu	v1,v1,v0
  4b84a0:	8fc2003c 	lw	v0,60(s8)
  4b84a4:	00000000 	nop
  4b84a8:	24420008 	addiu	v0,v0,8
  4b84ac:	90630000 	lbu	v1,0(v1)
  4b84b0:	90420000 	lbu	v0,0(v0)
  4b84b4:	00000000 	nop
  4b84b8:	00621026 	xor	v0,v1,v0
  4b84bc:	304200ff 	andi	v0,v0,0xff
  4b84c0:	8f81804c 	lw	at,-32692(gp)
  4b84c4:	00000000 	nop
  4b84c8:	24215890 	addiu	at,at,22672
  4b84cc:	00221021 	addu	v0,at,v0
  4b84d0:	90430000 	lbu	v1,0(v0)
  4b84d4:	8fc2003c 	lw	v0,60(s8)
  4b84d8:	00000000 	nop
  4b84dc:	90420000 	lbu	v0,0(v0)
  4b84e0:	00000000 	nop
  4b84e4:	00621026 	xor	v0,v1,v0
  4b84e8:	304200ff 	andi	v0,v0,0xff
  4b84ec:	00021080 	sll	v0,v0,0x2
  4b84f0:	8f84804c 	lw	a0,-32692(gp)
  4b84f4:	00000000 	nop
  4b84f8:	24845a90 	addiu	a0,a0,23184
  4b84fc:	00822021 	addu	a0,a0,v0
  4b8500:	8fc2003c 	lw	v0,60(s8)
  4b8504:	00000000 	nop
  4b8508:	24420019 	addiu	v0,v0,25
  4b850c:	90420000 	lbu	v0,0(v0)
  4b8510:	00000000 	nop
  4b8514:	38420004 	xori	v0,v0,0x4
  4b8518:	304200ff 	andi	v0,v0,0xff
  4b851c:	8f83804c 	lw	v1,-32692(gp)
  4b8520:	00000000 	nop
  4b8524:	24635990 	addiu	v1,v1,22928
  4b8528:	00621821 	addu	v1,v1,v0
  4b852c:	8fc2003c 	lw	v0,60(s8)
  4b8530:	00000000 	nop
  4b8534:	24420011 	addiu	v0,v0,17
  4b8538:	90630000 	lbu	v1,0(v1)
  4b853c:	90420000 	lbu	v0,0(v0)
  4b8540:	00000000 	nop
  4b8544:	00621026 	xor	v0,v1,v0
  4b8548:	304200ff 	andi	v0,v0,0xff
  4b854c:	8f83804c 	lw	v1,-32692(gp)
  4b8550:	00000000 	nop
  4b8554:	24635990 	addiu	v1,v1,22928
  4b8558:	00621821 	addu	v1,v1,v0
  4b855c:	8fc2003c 	lw	v0,60(s8)
  4b8560:	00000000 	nop
  4b8564:	24420009 	addiu	v0,v0,9
  4b8568:	90630000 	lbu	v1,0(v1)
  4b856c:	90420000 	lbu	v0,0(v0)
  4b8570:	00000000 	nop
  4b8574:	00621026 	xor	v0,v1,v0
  4b8578:	304200ff 	andi	v0,v0,0xff
  4b857c:	8f83804c 	lw	v1,-32692(gp)
  4b8580:	00000000 	nop
  4b8584:	24635890 	addiu	v1,v1,22672
  4b8588:	00621821 	addu	v1,v1,v0
  4b858c:	8fc2003c 	lw	v0,60(s8)
  4b8590:	00000000 	nop
  4b8594:	24420001 	addiu	v0,v0,1
  4b8598:	90630000 	lbu	v1,0(v1)
  4b859c:	90420000 	lbu	v0,0(v0)
  4b85a0:	00000000 	nop
  4b85a4:	00621026 	xor	v0,v1,v0
  4b85a8:	304200ff 	andi	v0,v0,0xff
  4b85ac:	00021080 	sll	v0,v0,0x2
  4b85b0:	24420400 	addiu	v0,v0,1024
  4b85b4:	8f81804c 	lw	at,-32692(gp)
  4b85b8:	00000000 	nop
  4b85bc:	24215a90 	addiu	at,at,23184
  4b85c0:	00221021 	addu	v0,at,v0
  4b85c4:	8c830000 	lw	v1,0(a0)
  4b85c8:	8c420000 	lw	v0,0(v0)
  4b85cc:	00000000 	nop
  4b85d0:	00622026 	xor	a0,v1,v0
  4b85d4:	8fc2003c 	lw	v0,60(s8)
  4b85d8:	00000000 	nop
  4b85dc:	2442001a 	addiu	v0,v0,26
  4b85e0:	90420000 	lbu	v0,0(v0)
  4b85e4:	00000000 	nop
  4b85e8:	38420004 	xori	v0,v0,0x4
  4b85ec:	304200ff 	andi	v0,v0,0xff
  4b85f0:	8f83804c 	lw	v1,-32692(gp)
  4b85f4:	00000000 	nop
  4b85f8:	24635890 	addiu	v1,v1,22672
  4b85fc:	00621821 	addu	v1,v1,v0
  4b8600:	8fc2003c 	lw	v0,60(s8)
  4b8604:	00000000 	nop
  4b8608:	24420012 	addiu	v0,v0,18
  4b860c:	90630000 	lbu	v1,0(v1)
  4b8610:	90420000 	lbu	v0,0(v0)
  4b8614:	00000000 	nop
  4b8618:	00621026 	xor	v0,v1,v0
  4b861c:	304200ff 	andi	v0,v0,0xff
  4b8620:	8f83804c 	lw	v1,-32692(gp)
  4b8624:	00000000 	nop
  4b8628:	24635890 	addiu	v1,v1,22672
  4b862c:	00621821 	addu	v1,v1,v0
  4b8630:	8fc2003c 	lw	v0,60(s8)
  4b8634:	00000000 	nop
  4b8638:	2442000a 	addiu	v0,v0,10
  4b863c:	90630000 	lbu	v1,0(v1)
  4b8640:	90420000 	lbu	v0,0(v0)
  4b8644:	00000000 	nop
  4b8648:	00621026 	xor	v0,v1,v0
  4b864c:	304200ff 	andi	v0,v0,0xff
  4b8650:	8f83804c 	lw	v1,-32692(gp)
  4b8654:	00000000 	nop
  4b8658:	24635990 	addiu	v1,v1,22928
  4b865c:	00621821 	addu	v1,v1,v0
  4b8660:	8fc2003c 	lw	v0,60(s8)
  4b8664:	00000000 	nop
  4b8668:	24420002 	addiu	v0,v0,2
  4b866c:	90630000 	lbu	v1,0(v1)
  4b8670:	90420000 	lbu	v0,0(v0)
  4b8674:	00000000 	nop
  4b8678:	00621026 	xor	v0,v1,v0
  4b867c:	304200ff 	andi	v0,v0,0xff
  4b8680:	00021080 	sll	v0,v0,0x2
  4b8684:	24420800 	addiu	v0,v0,2048
  4b8688:	8f81804c 	lw	at,-32692(gp)
  4b868c:	00000000 	nop
  4b8690:	24215a90 	addiu	at,at,23184
  4b8694:	00221021 	addu	v0,at,v0
  4b8698:	8c420000 	lw	v0,0(v0)
  4b869c:	00000000 	nop
  4b86a0:	00822026 	xor	a0,a0,v0
  4b86a4:	8fc2003c 	lw	v0,60(s8)
  4b86a8:	00000000 	nop
  4b86ac:	2442001b 	addiu	v0,v0,27
  4b86b0:	90420000 	lbu	v0,0(v0)
  4b86b4:	00000000 	nop
  4b86b8:	384200db 	xori	v0,v0,0xdb
  4b86bc:	304200ff 	andi	v0,v0,0xff
  4b86c0:	8f83804c 	lw	v1,-32692(gp)
  4b86c4:	00000000 	nop
  4b86c8:	24635890 	addiu	v1,v1,22672
  4b86cc:	00621821 	addu	v1,v1,v0
  4b86d0:	8fc2003c 	lw	v0,60(s8)
  4b86d4:	00000000 	nop
  4b86d8:	24420013 	addiu	v0,v0,19
  4b86dc:	90630000 	lbu	v1,0(v1)
  4b86e0:	90420000 	lbu	v0,0(v0)
  4b86e4:	00000000 	nop
  4b86e8:	00621026 	xor	v0,v1,v0
  4b86ec:	304200ff 	andi	v0,v0,0xff
  4b86f0:	8f83804c 	lw	v1,-32692(gp)
  4b86f4:	00000000 	nop
  4b86f8:	24635990 	addiu	v1,v1,22928
  4b86fc:	00621821 	addu	v1,v1,v0
  4b8700:	8fc2003c 	lw	v0,60(s8)
  4b8704:	00000000 	nop
  4b8708:	2442000b 	addiu	v0,v0,11
  4b870c:	90630000 	lbu	v1,0(v1)
  4b8710:	90420000 	lbu	v0,0(v0)
  4b8714:	00000000 	nop
  4b8718:	00621026 	xor	v0,v1,v0
  4b871c:	304200ff 	andi	v0,v0,0xff
  4b8720:	8f83804c 	lw	v1,-32692(gp)
  4b8724:	00000000 	nop
  4b8728:	24635990 	addiu	v1,v1,22928
  4b872c:	00621821 	addu	v1,v1,v0
  4b8730:	8fc2003c 	lw	v0,60(s8)
  4b8734:	00000000 	nop
  4b8738:	24420003 	addiu	v0,v0,3
  4b873c:	90630000 	lbu	v1,0(v1)
  4b8740:	90420000 	lbu	v0,0(v0)
  4b8744:	00000000 	nop
  4b8748:	00621026 	xor	v0,v1,v0
  4b874c:	304200ff 	andi	v0,v0,0xff
  4b8750:	00021080 	sll	v0,v0,0x2
  4b8754:	24420c00 	addiu	v0,v0,3072
  4b8758:	8f81804c 	lw	at,-32692(gp)
  4b875c:	00000000 	nop
  4b8760:	24215a90 	addiu	at,at,23184
  4b8764:	00221021 	addu	v0,at,v0
  4b8768:	8c420000 	lw	v0,0(v0)
  4b876c:	00000000 	nop
  4b8770:	00821026 	xor	v0,a0,v0
  4b8774:	afc20014 	sw	v0,20(s8)
  4b8778:	8fc2003c 	lw	v0,60(s8)
  4b877c:	00000000 	nop
  4b8780:	2442001c 	addiu	v0,v0,28
  4b8784:	90420000 	lbu	v0,0(v0)
  4b8788:	00000000 	nop
  4b878c:	3842007b 	xori	v0,v0,0x7b
  4b8790:	304200ff 	andi	v0,v0,0xff
  4b8794:	8f83804c 	lw	v1,-32692(gp)
  4b8798:	00000000 	nop
  4b879c:	24635990 	addiu	v1,v1,22928
  4b87a0:	00621821 	addu	v1,v1,v0
  4b87a4:	8fc2003c 	lw	v0,60(s8)
  4b87a8:	00000000 	nop
  4b87ac:	24420014 	addiu	v0,v0,20
  4b87b0:	90630000 	lbu	v1,0(v1)
  4b87b4:	90420000 	lbu	v0,0(v0)
  4b87b8:	00000000 	nop
  4b87bc:	00621026 	xor	v0,v1,v0
  4b87c0:	304200ff 	andi	v0,v0,0xff
  4b87c4:	8f83804c 	lw	v1,-32692(gp)
  4b87c8:	00000000 	nop
  4b87cc:	24635890 	addiu	v1,v1,22672
  4b87d0:	00621821 	addu	v1,v1,v0
  4b87d4:	8fc2003c 	lw	v0,60(s8)
  4b87d8:	00000000 	nop
  4b87dc:	2442000c 	addiu	v0,v0,12
  4b87e0:	90630000 	lbu	v1,0(v1)
  4b87e4:	90420000 	lbu	v0,0(v0)
  4b87e8:	00000000 	nop
  4b87ec:	00621026 	xor	v0,v1,v0
  4b87f0:	304200ff 	andi	v0,v0,0xff
  4b87f4:	8f83804c 	lw	v1,-32692(gp)
  4b87f8:	00000000 	nop
  4b87fc:	24635890 	addiu	v1,v1,22672
  4b8800:	00621821 	addu	v1,v1,v0
  4b8804:	8fc2003c 	lw	v0,60(s8)
  4b8808:	00000000 	nop
  4b880c:	24420004 	addiu	v0,v0,4
  4b8810:	90630000 	lbu	v1,0(v1)
  4b8814:	90420000 	lbu	v0,0(v0)
  4b8818:	00000000 	nop
  4b881c:	00621026 	xor	v0,v1,v0
  4b8820:	304200ff 	andi	v0,v0,0xff
  4b8824:	00021080 	sll	v0,v0,0x2
  4b8828:	8f84804c 	lw	a0,-32692(gp)
  4b882c:	00000000 	nop
  4b8830:	24845a90 	addiu	a0,a0,23184
  4b8834:	00822021 	addu	a0,a0,v0
  4b8838:	8fc2003c 	lw	v0,60(s8)
  4b883c:	00000000 	nop
  4b8840:	2442001d 	addiu	v0,v0,29
  4b8844:	90420000 	lbu	v0,0(v0)
  4b8848:	00000000 	nop
  4b884c:	384200fd 	xori	v0,v0,0xfd
  4b8850:	304200ff 	andi	v0,v0,0xff
  4b8854:	8f83804c 	lw	v1,-32692(gp)
  4b8858:	00000000 	nop
  4b885c:	24635990 	addiu	v1,v1,22928
  4b8860:	00621821 	addu	v1,v1,v0
  4b8864:	8fc2003c 	lw	v0,60(s8)
  4b8868:	00000000 	nop
  4b886c:	24420015 	addiu	v0,v0,21
  4b8870:	90630000 	lbu	v1,0(v1)
  4b8874:	90420000 	lbu	v0,0(v0)
  4b8878:	00000000 	nop
  4b887c:	00621026 	xor	v0,v1,v0
  4b8880:	304200ff 	andi	v0,v0,0xff
  4b8884:	8f83804c 	lw	v1,-32692(gp)
  4b8888:	00000000 	nop
  4b888c:	24635990 	addiu	v1,v1,22928
  4b8890:	00621821 	addu	v1,v1,v0
  4b8894:	8fc2003c 	lw	v0,60(s8)
  4b8898:	00000000 	nop
  4b889c:	2442000d 	addiu	v0,v0,13
  4b88a0:	90630000 	lbu	v1,0(v1)
  4b88a4:	90420000 	lbu	v0,0(v0)
  4b88a8:	00000000 	nop
  4b88ac:	00621026 	xor	v0,v1,v0
  4b88b0:	304200ff 	andi	v0,v0,0xff
  4b88b4:	8f83804c 	lw	v1,-32692(gp)
  4b88b8:	00000000 	nop
  4b88bc:	24635890 	addiu	v1,v1,22672
  4b88c0:	00621821 	addu	v1,v1,v0
  4b88c4:	8fc2003c 	lw	v0,60(s8)
  4b88c8:	00000000 	nop
  4b88cc:	24420005 	addiu	v0,v0,5
  4b88d0:	90630000 	lbu	v1,0(v1)
  4b88d4:	90420000 	lbu	v0,0(v0)
  4b88d8:	00000000 	nop
  4b88dc:	00621026 	xor	v0,v1,v0
  4b88e0:	304200ff 	andi	v0,v0,0xff
  4b88e4:	00021080 	sll	v0,v0,0x2
  4b88e8:	24420400 	addiu	v0,v0,1024
  4b88ec:	8f81804c 	lw	at,-32692(gp)
  4b88f0:	00000000 	nop
  4b88f4:	24215a90 	addiu	at,at,23184
  4b88f8:	00221021 	addu	v0,at,v0
  4b88fc:	8c830000 	lw	v1,0(a0)
  4b8900:	8c420000 	lw	v0,0(v0)
  4b8904:	00000000 	nop
  4b8908:	00622026 	xor	a0,v1,v0
  4b890c:	8fc2003c 	lw	v0,60(s8)
  4b8910:	00000000 	nop
  4b8914:	2442001e 	addiu	v0,v0,30
  4b8918:	90420000 	lbu	v0,0(v0)
  4b891c:	00000000 	nop
  4b8920:	384200fd 	xori	v0,v0,0xfd
  4b8924:	304200ff 	andi	v0,v0,0xff
  4b8928:	8f83804c 	lw	v1,-32692(gp)
  4b892c:	00000000 	nop
  4b8930:	24635890 	addiu	v1,v1,22672
  4b8934:	00621821 	addu	v1,v1,v0
  4b8938:	8fc2003c 	lw	v0,60(s8)
  4b893c:	00000000 	nop
  4b8940:	24420016 	addiu	v0,v0,22
  4b8944:	90630000 	lbu	v1,0(v1)
  4b8948:	90420000 	lbu	v0,0(v0)
  4b894c:	00000000 	nop
  4b8950:	00621026 	xor	v0,v1,v0
  4b8954:	304200ff 	andi	v0,v0,0xff
  4b8958:	8f83804c 	lw	v1,-32692(gp)
  4b895c:	00000000 	nop
  4b8960:	24635890 	addiu	v1,v1,22672
  4b8964:	00621821 	addu	v1,v1,v0
  4b8968:	8fc2003c 	lw	v0,60(s8)
  4b896c:	00000000 	nop
  4b8970:	2442000e 	addiu	v0,v0,14
  4b8974:	90630000 	lbu	v1,0(v1)
  4b8978:	90420000 	lbu	v0,0(v0)
  4b897c:	00000000 	nop
  4b8980:	00621026 	xor	v0,v1,v0
  4b8984:	304200ff 	andi	v0,v0,0xff
  4b8988:	8f83804c 	lw	v1,-32692(gp)
  4b898c:	00000000 	nop
  4b8990:	24635990 	addiu	v1,v1,22928
  4b8994:	00621821 	addu	v1,v1,v0
  4b8998:	8fc2003c 	lw	v0,60(s8)
  4b899c:	00000000 	nop
  4b89a0:	24420006 	addiu	v0,v0,6
  4b89a4:	90630000 	lbu	v1,0(v1)
  4b89a8:	90420000 	lbu	v0,0(v0)
  4b89ac:	00000000 	nop
  4b89b0:	00621026 	xor	v0,v1,v0
  4b89b4:	304200ff 	andi	v0,v0,0xff
  4b89b8:	00021080 	sll	v0,v0,0x2
  4b89bc:	24420800 	addiu	v0,v0,2048
  4b89c0:	8f81804c 	lw	at,-32692(gp)
  4b89c4:	00000000 	nop
  4b89c8:	24215a90 	addiu	at,at,23184
  4b89cc:	00221021 	addu	v0,at,v0
  4b89d0:	8c420000 	lw	v0,0(v0)
  4b89d4:	00000000 	nop
  4b89d8:	00822026 	xor	a0,a0,v0
  4b89dc:	8fc2003c 	lw	v0,60(s8)
  4b89e0:	00000000 	nop
  4b89e4:	2442001f 	addiu	v0,v0,31
  4b89e8:	90420000 	lbu	v0,0(v0)
  4b89ec:	00000000 	nop
  4b89f0:	3842007b 	xori	v0,v0,0x7b
  4b89f4:	304200ff 	andi	v0,v0,0xff
  4b89f8:	8f83804c 	lw	v1,-32692(gp)
  4b89fc:	00000000 	nop
  4b8a00:	24635890 	addiu	v1,v1,22672
  4b8a04:	00621821 	addu	v1,v1,v0
  4b8a08:	8fc2003c 	lw	v0,60(s8)
  4b8a0c:	00000000 	nop
  4b8a10:	24420017 	addiu	v0,v0,23
  4b8a14:	90630000 	lbu	v1,0(v1)
  4b8a18:	90420000 	lbu	v0,0(v0)
  4b8a1c:	00000000 	nop
  4b8a20:	00621026 	xor	v0,v1,v0
  4b8a24:	304200ff 	andi	v0,v0,0xff
  4b8a28:	8f83804c 	lw	v1,-32692(gp)
  4b8a2c:	00000000 	nop
  4b8a30:	24635990 	addiu	v1,v1,22928
  4b8a34:	00621821 	addu	v1,v1,v0
  4b8a38:	8fc2003c 	lw	v0,60(s8)
  4b8a3c:	00000000 	nop
  4b8a40:	2442000f 	addiu	v0,v0,15
  4b8a44:	90630000 	lbu	v1,0(v1)
  4b8a48:	90420000 	lbu	v0,0(v0)
  4b8a4c:	00000000 	nop
  4b8a50:	00621026 	xor	v0,v1,v0
  4b8a54:	304200ff 	andi	v0,v0,0xff
  4b8a58:	8f83804c 	lw	v1,-32692(gp)
  4b8a5c:	00000000 	nop
  4b8a60:	24635990 	addiu	v1,v1,22928
  4b8a64:	00621821 	addu	v1,v1,v0
  4b8a68:	8fc2003c 	lw	v0,60(s8)
  4b8a6c:	00000000 	nop
  4b8a70:	24420007 	addiu	v0,v0,7
  4b8a74:	90630000 	lbu	v1,0(v1)
  4b8a78:	90420000 	lbu	v0,0(v0)
  4b8a7c:	00000000 	nop
  4b8a80:	00621026 	xor	v0,v1,v0
  4b8a84:	304200ff 	andi	v0,v0,0xff
  4b8a88:	00021080 	sll	v0,v0,0x2
  4b8a8c:	24420c00 	addiu	v0,v0,3072
  4b8a90:	8f81804c 	lw	at,-32692(gp)
  4b8a94:	00000000 	nop
  4b8a98:	24215a90 	addiu	at,at,23184
  4b8a9c:	00221021 	addu	v0,at,v0
  4b8aa0:	8c420000 	lw	v0,0(v0)
  4b8aa4:	00000000 	nop
  4b8aa8:	00821026 	xor	v0,a0,v0
  4b8aac:	afc20018 	sw	v0,24(s8)
  4b8ab0:	8fc20018 	lw	v0,24(s8)
  4b8ab4:	00000000 	nop
  4b8ab8:	00021a00 	sll	v1,v0,0x8
  4b8abc:	00021602 	srl	v0,v0,0x18
  4b8ac0:	00621025 	or	v0,v1,v0
  4b8ac4:	afc20018 	sw	v0,24(s8)
  4b8ac8:	8fc30014 	lw	v1,20(s8)
  4b8acc:	8fc20018 	lw	v0,24(s8)
  4b8ad0:	00000000 	nop
  4b8ad4:	00621021 	addu	v0,v1,v0
  4b8ad8:	afc20014 	sw	v0,20(s8)
  4b8adc:	8fc30018 	lw	v1,24(s8)
  4b8ae0:	8fc20014 	lw	v0,20(s8)
  4b8ae4:	00000000 	nop
  4b8ae8:	00621021 	addu	v0,v1,v0
  4b8aec:	afc20018 	sw	v0,24(s8)
  4b8af0:	8fc30014 	lw	v1,20(s8)
  4b8af4:	8fc20038 	lw	v0,56(s8)
  4b8af8:	00000000 	nop
  4b8afc:	ac431010 	sw	v1,4112(v0)
  4b8b00:	8fc20018 	lw	v0,24(s8)
  4b8b04:	00000000 	nop
  4b8b08:	00021a40 	sll	v1,v0,0x9
  4b8b0c:	000215c2 	srl	v0,v0,0x17
  4b8b10:	00621825 	or	v1,v1,v0
  4b8b14:	8fc20038 	lw	v0,56(s8)
  4b8b18:	00000000 	nop
  4b8b1c:	ac431014 	sw	v1,4116(v0)
		CALC_K256 (w, 6, 0xA3, 0xFB, 0x76, 0xC8);
  4b8b20:	8fc2003c 	lw	v0,60(s8)
  4b8b24:	00000000 	nop
  4b8b28:	24420018 	addiu	v0,v0,24
  4b8b2c:	90420000 	lbu	v0,0(v0)
  4b8b30:	00000000 	nop
  4b8b34:	384200fb 	xori	v0,v0,0xfb
  4b8b38:	304200ff 	andi	v0,v0,0xff
  4b8b3c:	8f83804c 	lw	v1,-32692(gp)
  4b8b40:	00000000 	nop
  4b8b44:	24635990 	addiu	v1,v1,22928
  4b8b48:	00621821 	addu	v1,v1,v0
  4b8b4c:	8fc2003c 	lw	v0,60(s8)
  4b8b50:	00000000 	nop
  4b8b54:	24420010 	addiu	v0,v0,16
  4b8b58:	90630000 	lbu	v1,0(v1)
  4b8b5c:	90420000 	lbu	v0,0(v0)
  4b8b60:	00000000 	nop
  4b8b64:	00621026 	xor	v0,v1,v0
  4b8b68:	304200ff 	andi	v0,v0,0xff
  4b8b6c:	8f83804c 	lw	v1,-32692(gp)
  4b8b70:	00000000 	nop
  4b8b74:	24635890 	addiu	v1,v1,22672
  4b8b78:	00621821 	addu	v1,v1,v0
  4b8b7c:	8fc2003c 	lw	v0,60(s8)
  4b8b80:	00000000 	nop
  4b8b84:	24420008 	addiu	v0,v0,8
  4b8b88:	90630000 	lbu	v1,0(v1)
  4b8b8c:	90420000 	lbu	v0,0(v0)
  4b8b90:	00000000 	nop
  4b8b94:	00621026 	xor	v0,v1,v0
  4b8b98:	304200ff 	andi	v0,v0,0xff
  4b8b9c:	8f81804c 	lw	at,-32692(gp)
  4b8ba0:	00000000 	nop
  4b8ba4:	24215890 	addiu	at,at,22672
  4b8ba8:	00221021 	addu	v0,at,v0
  4b8bac:	90430000 	lbu	v1,0(v0)
  4b8bb0:	8fc2003c 	lw	v0,60(s8)
  4b8bb4:	00000000 	nop
  4b8bb8:	90420000 	lbu	v0,0(v0)
  4b8bbc:	00000000 	nop
  4b8bc0:	00621026 	xor	v0,v1,v0
  4b8bc4:	304200ff 	andi	v0,v0,0xff
  4b8bc8:	00021080 	sll	v0,v0,0x2
  4b8bcc:	8f84804c 	lw	a0,-32692(gp)
  4b8bd0:	00000000 	nop
  4b8bd4:	24845a90 	addiu	a0,a0,23184
  4b8bd8:	00822021 	addu	a0,a0,v0
  4b8bdc:	8fc2003c 	lw	v0,60(s8)
  4b8be0:	00000000 	nop
  4b8be4:	24420019 	addiu	v0,v0,25
  4b8be8:	90420000 	lbu	v0,0(v0)
  4b8bec:	00000000 	nop
  4b8bf0:	384200a3 	xori	v0,v0,0xa3
  4b8bf4:	304200ff 	andi	v0,v0,0xff
  4b8bf8:	8f83804c 	lw	v1,-32692(gp)
  4b8bfc:	00000000 	nop
  4b8c00:	24635990 	addiu	v1,v1,22928
  4b8c04:	00621821 	addu	v1,v1,v0
  4b8c08:	8fc2003c 	lw	v0,60(s8)
  4b8c0c:	00000000 	nop
  4b8c10:	24420011 	addiu	v0,v0,17
  4b8c14:	90630000 	lbu	v1,0(v1)
  4b8c18:	90420000 	lbu	v0,0(v0)
  4b8c1c:	00000000 	nop
  4b8c20:	00621026 	xor	v0,v1,v0
  4b8c24:	304200ff 	andi	v0,v0,0xff
  4b8c28:	8f83804c 	lw	v1,-32692(gp)
  4b8c2c:	00000000 	nop
  4b8c30:	24635990 	addiu	v1,v1,22928
  4b8c34:	00621821 	addu	v1,v1,v0
  4b8c38:	8fc2003c 	lw	v0,60(s8)
  4b8c3c:	00000000 	nop
  4b8c40:	24420009 	addiu	v0,v0,9
  4b8c44:	90630000 	lbu	v1,0(v1)
  4b8c48:	90420000 	lbu	v0,0(v0)
  4b8c4c:	00000000 	nop
  4b8c50:	00621026 	xor	v0,v1,v0
  4b8c54:	304200ff 	andi	v0,v0,0xff
  4b8c58:	8f83804c 	lw	v1,-32692(gp)
  4b8c5c:	00000000 	nop
  4b8c60:	24635890 	addiu	v1,v1,22672
  4b8c64:	00621821 	addu	v1,v1,v0
  4b8c68:	8fc2003c 	lw	v0,60(s8)
  4b8c6c:	00000000 	nop
  4b8c70:	24420001 	addiu	v0,v0,1
  4b8c74:	90630000 	lbu	v1,0(v1)
  4b8c78:	90420000 	lbu	v0,0(v0)
  4b8c7c:	00000000 	nop
  4b8c80:	00621026 	xor	v0,v1,v0
  4b8c84:	304200ff 	andi	v0,v0,0xff
  4b8c88:	00021080 	sll	v0,v0,0x2
  4b8c8c:	24420400 	addiu	v0,v0,1024
  4b8c90:	8f81804c 	lw	at,-32692(gp)
  4b8c94:	00000000 	nop
  4b8c98:	24215a90 	addiu	at,at,23184
  4b8c9c:	00221021 	addu	v0,at,v0
  4b8ca0:	8c830000 	lw	v1,0(a0)
  4b8ca4:	8c420000 	lw	v0,0(v0)
  4b8ca8:	00000000 	nop
  4b8cac:	00622026 	xor	a0,v1,v0
  4b8cb0:	8fc2003c 	lw	v0,60(s8)
  4b8cb4:	00000000 	nop
  4b8cb8:	2442001a 	addiu	v0,v0,26
  4b8cbc:	90420000 	lbu	v0,0(v0)
  4b8cc0:	00000000 	nop
  4b8cc4:	384200a3 	xori	v0,v0,0xa3
  4b8cc8:	304200ff 	andi	v0,v0,0xff
  4b8ccc:	8f83804c 	lw	v1,-32692(gp)
  4b8cd0:	00000000 	nop
  4b8cd4:	24635890 	addiu	v1,v1,22672
  4b8cd8:	00621821 	addu	v1,v1,v0
  4b8cdc:	8fc2003c 	lw	v0,60(s8)
  4b8ce0:	00000000 	nop
  4b8ce4:	24420012 	addiu	v0,v0,18
  4b8ce8:	90630000 	lbu	v1,0(v1)
  4b8cec:	90420000 	lbu	v0,0(v0)
  4b8cf0:	00000000 	nop
  4b8cf4:	00621026 	xor	v0,v1,v0
  4b8cf8:	304200ff 	andi	v0,v0,0xff
  4b8cfc:	8f83804c 	lw	v1,-32692(gp)
  4b8d00:	00000000 	nop
  4b8d04:	24635890 	addiu	v1,v1,22672
  4b8d08:	00621821 	addu	v1,v1,v0
  4b8d0c:	8fc2003c 	lw	v0,60(s8)
  4b8d10:	00000000 	nop
  4b8d14:	2442000a 	addiu	v0,v0,10
  4b8d18:	90630000 	lbu	v1,0(v1)
  4b8d1c:	90420000 	lbu	v0,0(v0)
  4b8d20:	00000000 	nop
  4b8d24:	00621026 	xor	v0,v1,v0
  4b8d28:	304200ff 	andi	v0,v0,0xff
  4b8d2c:	8f83804c 	lw	v1,-32692(gp)
  4b8d30:	00000000 	nop
  4b8d34:	24635990 	addiu	v1,v1,22928
  4b8d38:	00621821 	addu	v1,v1,v0
  4b8d3c:	8fc2003c 	lw	v0,60(s8)
  4b8d40:	00000000 	nop
  4b8d44:	24420002 	addiu	v0,v0,2
  4b8d48:	90630000 	lbu	v1,0(v1)
  4b8d4c:	90420000 	lbu	v0,0(v0)
  4b8d50:	00000000 	nop
  4b8d54:	00621026 	xor	v0,v1,v0
  4b8d58:	304200ff 	andi	v0,v0,0xff
  4b8d5c:	00021080 	sll	v0,v0,0x2
  4b8d60:	24420800 	addiu	v0,v0,2048
  4b8d64:	8f81804c 	lw	at,-32692(gp)
  4b8d68:	00000000 	nop
  4b8d6c:	24215a90 	addiu	at,at,23184
  4b8d70:	00221021 	addu	v0,at,v0
  4b8d74:	8c420000 	lw	v0,0(v0)
  4b8d78:	00000000 	nop
  4b8d7c:	00822026 	xor	a0,a0,v0
  4b8d80:	8fc2003c 	lw	v0,60(s8)
  4b8d84:	00000000 	nop
  4b8d88:	2442001b 	addiu	v0,v0,27
  4b8d8c:	90420000 	lbu	v0,0(v0)
  4b8d90:	00000000 	nop
  4b8d94:	384200fb 	xori	v0,v0,0xfb
  4b8d98:	304200ff 	andi	v0,v0,0xff
  4b8d9c:	8f83804c 	lw	v1,-32692(gp)
  4b8da0:	00000000 	nop
  4b8da4:	24635890 	addiu	v1,v1,22672
  4b8da8:	00621821 	addu	v1,v1,v0
  4b8dac:	8fc2003c 	lw	v0,60(s8)
  4b8db0:	00000000 	nop
  4b8db4:	24420013 	addiu	v0,v0,19
  4b8db8:	90630000 	lbu	v1,0(v1)
  4b8dbc:	90420000 	lbu	v0,0(v0)
  4b8dc0:	00000000 	nop
  4b8dc4:	00621026 	xor	v0,v1,v0
  4b8dc8:	304200ff 	andi	v0,v0,0xff
  4b8dcc:	8f83804c 	lw	v1,-32692(gp)
  4b8dd0:	00000000 	nop
  4b8dd4:	24635990 	addiu	v1,v1,22928
  4b8dd8:	00621821 	addu	v1,v1,v0
  4b8ddc:	8fc2003c 	lw	v0,60(s8)
  4b8de0:	00000000 	nop
  4b8de4:	2442000b 	addiu	v0,v0,11
  4b8de8:	90630000 	lbu	v1,0(v1)
  4b8dec:	90420000 	lbu	v0,0(v0)
  4b8df0:	00000000 	nop
  4b8df4:	00621026 	xor	v0,v1,v0
  4b8df8:	304200ff 	andi	v0,v0,0xff
  4b8dfc:	8f83804c 	lw	v1,-32692(gp)
  4b8e00:	00000000 	nop
  4b8e04:	24635990 	addiu	v1,v1,22928
  4b8e08:	00621821 	addu	v1,v1,v0
  4b8e0c:	8fc2003c 	lw	v0,60(s8)
  4b8e10:	00000000 	nop
  4b8e14:	24420003 	addiu	v0,v0,3
  4b8e18:	90630000 	lbu	v1,0(v1)
  4b8e1c:	90420000 	lbu	v0,0(v0)
  4b8e20:	00000000 	nop
  4b8e24:	00621026 	xor	v0,v1,v0
  4b8e28:	304200ff 	andi	v0,v0,0xff
  4b8e2c:	00021080 	sll	v0,v0,0x2
  4b8e30:	24420c00 	addiu	v0,v0,3072
  4b8e34:	8f81804c 	lw	at,-32692(gp)
  4b8e38:	00000000 	nop
  4b8e3c:	24215a90 	addiu	at,at,23184
  4b8e40:	00221021 	addu	v0,at,v0
  4b8e44:	8c420000 	lw	v0,0(v0)
  4b8e48:	00000000 	nop
  4b8e4c:	00821026 	xor	v0,a0,v0
  4b8e50:	afc20014 	sw	v0,20(s8)
  4b8e54:	8fc2003c 	lw	v0,60(s8)
  4b8e58:	00000000 	nop
  4b8e5c:	2442001c 	addiu	v0,v0,28
  4b8e60:	90420000 	lbu	v0,0(v0)
  4b8e64:	00000000 	nop
  4b8e68:	384200c8 	xori	v0,v0,0xc8
  4b8e6c:	304200ff 	andi	v0,v0,0xff
  4b8e70:	8f83804c 	lw	v1,-32692(gp)
  4b8e74:	00000000 	nop
  4b8e78:	24635990 	addiu	v1,v1,22928
  4b8e7c:	00621821 	addu	v1,v1,v0
  4b8e80:	8fc2003c 	lw	v0,60(s8)
  4b8e84:	00000000 	nop
  4b8e88:	24420014 	addiu	v0,v0,20
  4b8e8c:	90630000 	lbu	v1,0(v1)
  4b8e90:	90420000 	lbu	v0,0(v0)
  4b8e94:	00000000 	nop
  4b8e98:	00621026 	xor	v0,v1,v0
  4b8e9c:	304200ff 	andi	v0,v0,0xff
  4b8ea0:	8f83804c 	lw	v1,-32692(gp)
  4b8ea4:	00000000 	nop
  4b8ea8:	24635890 	addiu	v1,v1,22672
  4b8eac:	00621821 	addu	v1,v1,v0
  4b8eb0:	8fc2003c 	lw	v0,60(s8)
  4b8eb4:	00000000 	nop
  4b8eb8:	2442000c 	addiu	v0,v0,12
  4b8ebc:	90630000 	lbu	v1,0(v1)
  4b8ec0:	90420000 	lbu	v0,0(v0)
  4b8ec4:	00000000 	nop
  4b8ec8:	00621026 	xor	v0,v1,v0
  4b8ecc:	304200ff 	andi	v0,v0,0xff
  4b8ed0:	8f83804c 	lw	v1,-32692(gp)
  4b8ed4:	00000000 	nop
  4b8ed8:	24635890 	addiu	v1,v1,22672
  4b8edc:	00621821 	addu	v1,v1,v0
  4b8ee0:	8fc2003c 	lw	v0,60(s8)
  4b8ee4:	00000000 	nop
  4b8ee8:	24420004 	addiu	v0,v0,4
  4b8eec:	90630000 	lbu	v1,0(v1)
  4b8ef0:	90420000 	lbu	v0,0(v0)
  4b8ef4:	00000000 	nop
  4b8ef8:	00621026 	xor	v0,v1,v0
  4b8efc:	304200ff 	andi	v0,v0,0xff
  4b8f00:	00021080 	sll	v0,v0,0x2
  4b8f04:	8f84804c 	lw	a0,-32692(gp)
  4b8f08:	00000000 	nop
  4b8f0c:	24845a90 	addiu	a0,a0,23184
  4b8f10:	00822021 	addu	a0,a0,v0
  4b8f14:	8fc2003c 	lw	v0,60(s8)
  4b8f18:	00000000 	nop
  4b8f1c:	2442001d 	addiu	v0,v0,29
  4b8f20:	90420000 	lbu	v0,0(v0)
  4b8f24:	00000000 	nop
  4b8f28:	38420076 	xori	v0,v0,0x76
  4b8f2c:	304200ff 	andi	v0,v0,0xff
  4b8f30:	8f83804c 	lw	v1,-32692(gp)
  4b8f34:	00000000 	nop
  4b8f38:	24635990 	addiu	v1,v1,22928
  4b8f3c:	00621821 	addu	v1,v1,v0
  4b8f40:	8fc2003c 	lw	v0,60(s8)
  4b8f44:	00000000 	nop
  4b8f48:	24420015 	addiu	v0,v0,21
  4b8f4c:	90630000 	lbu	v1,0(v1)
  4b8f50:	90420000 	lbu	v0,0(v0)
  4b8f54:	00000000 	nop
  4b8f58:	00621026 	xor	v0,v1,v0
  4b8f5c:	304200ff 	andi	v0,v0,0xff
  4b8f60:	8f83804c 	lw	v1,-32692(gp)
  4b8f64:	00000000 	nop
  4b8f68:	24635990 	addiu	v1,v1,22928
  4b8f6c:	00621821 	addu	v1,v1,v0
  4b8f70:	8fc2003c 	lw	v0,60(s8)
  4b8f74:	00000000 	nop
  4b8f78:	2442000d 	addiu	v0,v0,13
  4b8f7c:	90630000 	lbu	v1,0(v1)
  4b8f80:	90420000 	lbu	v0,0(v0)
  4b8f84:	00000000 	nop
  4b8f88:	00621026 	xor	v0,v1,v0
  4b8f8c:	304200ff 	andi	v0,v0,0xff
  4b8f90:	8f83804c 	lw	v1,-32692(gp)
  4b8f94:	00000000 	nop
  4b8f98:	24635890 	addiu	v1,v1,22672
  4b8f9c:	00621821 	addu	v1,v1,v0
  4b8fa0:	8fc2003c 	lw	v0,60(s8)
  4b8fa4:	00000000 	nop
  4b8fa8:	24420005 	addiu	v0,v0,5
  4b8fac:	90630000 	lbu	v1,0(v1)
  4b8fb0:	90420000 	lbu	v0,0(v0)
  4b8fb4:	00000000 	nop
  4b8fb8:	00621026 	xor	v0,v1,v0
  4b8fbc:	304200ff 	andi	v0,v0,0xff
  4b8fc0:	00021080 	sll	v0,v0,0x2
  4b8fc4:	24420400 	addiu	v0,v0,1024
  4b8fc8:	8f81804c 	lw	at,-32692(gp)
  4b8fcc:	00000000 	nop
  4b8fd0:	24215a90 	addiu	at,at,23184
  4b8fd4:	00221021 	addu	v0,at,v0
  4b8fd8:	8c830000 	lw	v1,0(a0)
  4b8fdc:	8c420000 	lw	v0,0(v0)
  4b8fe0:	00000000 	nop
  4b8fe4:	00622026 	xor	a0,v1,v0
  4b8fe8:	8fc2003c 	lw	v0,60(s8)
  4b8fec:	00000000 	nop
  4b8ff0:	2442001e 	addiu	v0,v0,30
  4b8ff4:	90420000 	lbu	v0,0(v0)
  4b8ff8:	00000000 	nop
  4b8ffc:	38420076 	xori	v0,v0,0x76
  4b9000:	304200ff 	andi	v0,v0,0xff
  4b9004:	8f83804c 	lw	v1,-32692(gp)
  4b9008:	00000000 	nop
  4b900c:	24635890 	addiu	v1,v1,22672
  4b9010:	00621821 	addu	v1,v1,v0
  4b9014:	8fc2003c 	lw	v0,60(s8)
  4b9018:	00000000 	nop
  4b901c:	24420016 	addiu	v0,v0,22
  4b9020:	90630000 	lbu	v1,0(v1)
  4b9024:	90420000 	lbu	v0,0(v0)
  4b9028:	00000000 	nop
  4b902c:	00621026 	xor	v0,v1,v0
  4b9030:	304200ff 	andi	v0,v0,0xff
  4b9034:	8f83804c 	lw	v1,-32692(gp)
  4b9038:	00000000 	nop
  4b903c:	24635890 	addiu	v1,v1,22672
  4b9040:	00621821 	addu	v1,v1,v0
  4b9044:	8fc2003c 	lw	v0,60(s8)
  4b9048:	00000000 	nop
  4b904c:	2442000e 	addiu	v0,v0,14
  4b9050:	90630000 	lbu	v1,0(v1)
  4b9054:	90420000 	lbu	v0,0(v0)
  4b9058:	00000000 	nop
  4b905c:	00621026 	xor	v0,v1,v0
  4b9060:	304200ff 	andi	v0,v0,0xff
  4b9064:	8f83804c 	lw	v1,-32692(gp)
  4b9068:	00000000 	nop
  4b906c:	24635990 	addiu	v1,v1,22928
  4b9070:	00621821 	addu	v1,v1,v0
  4b9074:	8fc2003c 	lw	v0,60(s8)
  4b9078:	00000000 	nop
  4b907c:	24420006 	addiu	v0,v0,6
  4b9080:	90630000 	lbu	v1,0(v1)
  4b9084:	90420000 	lbu	v0,0(v0)
  4b9088:	00000000 	nop
  4b908c:	00621026 	xor	v0,v1,v0
  4b9090:	304200ff 	andi	v0,v0,0xff
  4b9094:	00021080 	sll	v0,v0,0x2
  4b9098:	24420800 	addiu	v0,v0,2048
  4b909c:	8f81804c 	lw	at,-32692(gp)
  4b90a0:	00000000 	nop
  4b90a4:	24215a90 	addiu	at,at,23184
  4b90a8:	00221021 	addu	v0,at,v0
  4b90ac:	8c420000 	lw	v0,0(v0)
  4b90b0:	00000000 	nop
  4b90b4:	00822026 	xor	a0,a0,v0
  4b90b8:	8fc2003c 	lw	v0,60(s8)
  4b90bc:	00000000 	nop
  4b90c0:	2442001f 	addiu	v0,v0,31
  4b90c4:	90420000 	lbu	v0,0(v0)
  4b90c8:	00000000 	nop
  4b90cc:	384200c8 	xori	v0,v0,0xc8
  4b90d0:	304200ff 	andi	v0,v0,0xff
  4b90d4:	8f83804c 	lw	v1,-32692(gp)
  4b90d8:	00000000 	nop
  4b90dc:	24635890 	addiu	v1,v1,22672
  4b90e0:	00621821 	addu	v1,v1,v0
  4b90e4:	8fc2003c 	lw	v0,60(s8)
  4b90e8:	00000000 	nop
  4b90ec:	24420017 	addiu	v0,v0,23
  4b90f0:	90630000 	lbu	v1,0(v1)
  4b90f4:	90420000 	lbu	v0,0(v0)
  4b90f8:	00000000 	nop
  4b90fc:	00621026 	xor	v0,v1,v0
  4b9100:	304200ff 	andi	v0,v0,0xff
  4b9104:	8f83804c 	lw	v1,-32692(gp)
  4b9108:	00000000 	nop
  4b910c:	24635990 	addiu	v1,v1,22928
  4b9110:	00621821 	addu	v1,v1,v0
  4b9114:	8fc2003c 	lw	v0,60(s8)
  4b9118:	00000000 	nop
  4b911c:	2442000f 	addiu	v0,v0,15
  4b9120:	90630000 	lbu	v1,0(v1)
  4b9124:	90420000 	lbu	v0,0(v0)
  4b9128:	00000000 	nop
  4b912c:	00621026 	xor	v0,v1,v0
  4b9130:	304200ff 	andi	v0,v0,0xff
  4b9134:	8f83804c 	lw	v1,-32692(gp)
  4b9138:	00000000 	nop
  4b913c:	24635990 	addiu	v1,v1,22928
  4b9140:	00621821 	addu	v1,v1,v0
  4b9144:	8fc2003c 	lw	v0,60(s8)
  4b9148:	00000000 	nop
  4b914c:	24420007 	addiu	v0,v0,7
  4b9150:	90630000 	lbu	v1,0(v1)
  4b9154:	90420000 	lbu	v0,0(v0)
  4b9158:	00000000 	nop
  4b915c:	00621026 	xor	v0,v1,v0
  4b9160:	304200ff 	andi	v0,v0,0xff
  4b9164:	00021080 	sll	v0,v0,0x2
  4b9168:	24420c00 	addiu	v0,v0,3072
  4b916c:	8f81804c 	lw	at,-32692(gp)
  4b9170:	00000000 	nop
  4b9174:	24215a90 	addiu	at,at,23184
  4b9178:	00221021 	addu	v0,at,v0
  4b917c:	8c420000 	lw	v0,0(v0)
  4b9180:	00000000 	nop
  4b9184:	00821026 	xor	v0,a0,v0
  4b9188:	afc20018 	sw	v0,24(s8)
  4b918c:	8fc20018 	lw	v0,24(s8)
  4b9190:	00000000 	nop
  4b9194:	00021a00 	sll	v1,v0,0x8
  4b9198:	00021602 	srl	v0,v0,0x18
  4b919c:	00621025 	or	v0,v1,v0
  4b91a0:	afc20018 	sw	v0,24(s8)
  4b91a4:	8fc30014 	lw	v1,20(s8)
  4b91a8:	8fc20018 	lw	v0,24(s8)
  4b91ac:	00000000 	nop
  4b91b0:	00621021 	addu	v0,v1,v0
  4b91b4:	afc20014 	sw	v0,20(s8)
  4b91b8:	8fc30018 	lw	v1,24(s8)
  4b91bc:	8fc20014 	lw	v0,20(s8)
  4b91c0:	00000000 	nop
  4b91c4:	00621021 	addu	v0,v1,v0
  4b91c8:	afc20018 	sw	v0,24(s8)
  4b91cc:	8fc30014 	lw	v1,20(s8)
  4b91d0:	8fc20038 	lw	v0,56(s8)
  4b91d4:	00000000 	nop
  4b91d8:	ac431018 	sw	v1,4120(v0)
  4b91dc:	8fc20018 	lw	v0,24(s8)
  4b91e0:	00000000 	nop
  4b91e4:	00021a40 	sll	v1,v0,0x9
  4b91e8:	000215c2 	srl	v0,v0,0x17
  4b91ec:	00621825 	or	v1,v1,v0
  4b91f0:	8fc20038 	lw	v0,56(s8)
  4b91f4:	00000000 	nop
  4b91f8:	ac43101c 	sw	v1,4124(v0)
		CALC_K256 (k, 0, 0x9A, 0x4A, 0x92, 0xD3);
  4b91fc:	8fc2003c 	lw	v0,60(s8)
  4b9200:	00000000 	nop
  4b9204:	24420018 	addiu	v0,v0,24
  4b9208:	90420000 	lbu	v0,0(v0)
  4b920c:	00000000 	nop
  4b9210:	3842004a 	xori	v0,v0,0x4a
  4b9214:	304200ff 	andi	v0,v0,0xff
  4b9218:	8f83804c 	lw	v1,-32692(gp)
  4b921c:	00000000 	nop
  4b9220:	24635990 	addiu	v1,v1,22928
  4b9224:	00621821 	addu	v1,v1,v0
  4b9228:	8fc2003c 	lw	v0,60(s8)
  4b922c:	00000000 	nop
  4b9230:	24420010 	addiu	v0,v0,16
  4b9234:	90630000 	lbu	v1,0(v1)
  4b9238:	90420000 	lbu	v0,0(v0)
  4b923c:	00000000 	nop
  4b9240:	00621026 	xor	v0,v1,v0
  4b9244:	304200ff 	andi	v0,v0,0xff
  4b9248:	8f83804c 	lw	v1,-32692(gp)
  4b924c:	00000000 	nop
  4b9250:	24635890 	addiu	v1,v1,22672
  4b9254:	00621821 	addu	v1,v1,v0
  4b9258:	8fc2003c 	lw	v0,60(s8)
  4b925c:	00000000 	nop
  4b9260:	24420008 	addiu	v0,v0,8
  4b9264:	90630000 	lbu	v1,0(v1)
  4b9268:	90420000 	lbu	v0,0(v0)
  4b926c:	00000000 	nop
  4b9270:	00621026 	xor	v0,v1,v0
  4b9274:	304200ff 	andi	v0,v0,0xff
  4b9278:	8f81804c 	lw	at,-32692(gp)
  4b927c:	00000000 	nop
  4b9280:	24215890 	addiu	at,at,22672
  4b9284:	00221021 	addu	v0,at,v0
  4b9288:	90430000 	lbu	v1,0(v0)
  4b928c:	8fc2003c 	lw	v0,60(s8)
  4b9290:	00000000 	nop
  4b9294:	90420000 	lbu	v0,0(v0)
  4b9298:	00000000 	nop
  4b929c:	00621026 	xor	v0,v1,v0
  4b92a0:	304200ff 	andi	v0,v0,0xff
  4b92a4:	00021080 	sll	v0,v0,0x2
  4b92a8:	8f84804c 	lw	a0,-32692(gp)
  4b92ac:	00000000 	nop
  4b92b0:	24845a90 	addiu	a0,a0,23184
  4b92b4:	00822021 	addu	a0,a0,v0
  4b92b8:	8fc2003c 	lw	v0,60(s8)
  4b92bc:	00000000 	nop
  4b92c0:	24420019 	addiu	v0,v0,25
  4b92c4:	90420000 	lbu	v0,0(v0)
  4b92c8:	00000000 	nop
  4b92cc:	3842009a 	xori	v0,v0,0x9a
  4b92d0:	304200ff 	andi	v0,v0,0xff
  4b92d4:	8f83804c 	lw	v1,-32692(gp)
  4b92d8:	00000000 	nop
  4b92dc:	24635990 	addiu	v1,v1,22928
  4b92e0:	00621821 	addu	v1,v1,v0
  4b92e4:	8fc2003c 	lw	v0,60(s8)
  4b92e8:	00000000 	nop
  4b92ec:	24420011 	addiu	v0,v0,17
  4b92f0:	90630000 	lbu	v1,0(v1)
  4b92f4:	90420000 	lbu	v0,0(v0)
  4b92f8:	00000000 	nop
  4b92fc:	00621026 	xor	v0,v1,v0
  4b9300:	304200ff 	andi	v0,v0,0xff
  4b9304:	8f83804c 	lw	v1,-32692(gp)
  4b9308:	00000000 	nop
  4b930c:	24635990 	addiu	v1,v1,22928
  4b9310:	00621821 	addu	v1,v1,v0
  4b9314:	8fc2003c 	lw	v0,60(s8)
  4b9318:	00000000 	nop
  4b931c:	24420009 	addiu	v0,v0,9
  4b9320:	90630000 	lbu	v1,0(v1)
  4b9324:	90420000 	lbu	v0,0(v0)
  4b9328:	00000000 	nop
  4b932c:	00621026 	xor	v0,v1,v0
  4b9330:	304200ff 	andi	v0,v0,0xff
  4b9334:	8f83804c 	lw	v1,-32692(gp)
  4b9338:	00000000 	nop
  4b933c:	24635890 	addiu	v1,v1,22672
  4b9340:	00621821 	addu	v1,v1,v0
  4b9344:	8fc2003c 	lw	v0,60(s8)
  4b9348:	00000000 	nop
  4b934c:	24420001 	addiu	v0,v0,1
  4b9350:	90630000 	lbu	v1,0(v1)
  4b9354:	90420000 	lbu	v0,0(v0)
  4b9358:	00000000 	nop
  4b935c:	00621026 	xor	v0,v1,v0
  4b9360:	304200ff 	andi	v0,v0,0xff
  4b9364:	00021080 	sll	v0,v0,0x2
  4b9368:	24420400 	addiu	v0,v0,1024
  4b936c:	8f81804c 	lw	at,-32692(gp)
  4b9370:	00000000 	nop
  4b9374:	24215a90 	addiu	at,at,23184
  4b9378:	00221021 	addu	v0,at,v0
  4b937c:	8c830000 	lw	v1,0(a0)
  4b9380:	8c420000 	lw	v0,0(v0)
  4b9384:	00000000 	nop
  4b9388:	00622026 	xor	a0,v1,v0
  4b938c:	8fc2003c 	lw	v0,60(s8)
  4b9390:	00000000 	nop
  4b9394:	2442001a 	addiu	v0,v0,26
  4b9398:	90420000 	lbu	v0,0(v0)
  4b939c:	00000000 	nop
  4b93a0:	3842009a 	xori	v0,v0,0x9a
  4b93a4:	304200ff 	andi	v0,v0,0xff
  4b93a8:	8f83804c 	lw	v1,-32692(gp)
  4b93ac:	00000000 	nop
  4b93b0:	24635890 	addiu	v1,v1,22672
  4b93b4:	00621821 	addu	v1,v1,v0
  4b93b8:	8fc2003c 	lw	v0,60(s8)
  4b93bc:	00000000 	nop
  4b93c0:	24420012 	addiu	v0,v0,18
  4b93c4:	90630000 	lbu	v1,0(v1)
  4b93c8:	90420000 	lbu	v0,0(v0)
  4b93cc:	00000000 	nop
  4b93d0:	00621026 	xor	v0,v1,v0
  4b93d4:	304200ff 	andi	v0,v0,0xff
  4b93d8:	8f83804c 	lw	v1,-32692(gp)
  4b93dc:	00000000 	nop
  4b93e0:	24635890 	addiu	v1,v1,22672
  4b93e4:	00621821 	addu	v1,v1,v0
  4b93e8:	8fc2003c 	lw	v0,60(s8)
  4b93ec:	00000000 	nop
  4b93f0:	2442000a 	addiu	v0,v0,10
  4b93f4:	90630000 	lbu	v1,0(v1)
  4b93f8:	90420000 	lbu	v0,0(v0)
  4b93fc:	00000000 	nop
  4b9400:	00621026 	xor	v0,v1,v0
  4b9404:	304200ff 	andi	v0,v0,0xff
  4b9408:	8f83804c 	lw	v1,-32692(gp)
  4b940c:	00000000 	nop
  4b9410:	24635990 	addiu	v1,v1,22928
  4b9414:	00621821 	addu	v1,v1,v0
  4b9418:	8fc2003c 	lw	v0,60(s8)
  4b941c:	00000000 	nop
  4b9420:	24420002 	addiu	v0,v0,2
  4b9424:	90630000 	lbu	v1,0(v1)
  4b9428:	90420000 	lbu	v0,0(v0)
  4b942c:	00000000 	nop
  4b9430:	00621026 	xor	v0,v1,v0
  4b9434:	304200ff 	andi	v0,v0,0xff
  4b9438:	00021080 	sll	v0,v0,0x2
  4b943c:	24420800 	addiu	v0,v0,2048
  4b9440:	8f81804c 	lw	at,-32692(gp)
  4b9444:	00000000 	nop
  4b9448:	24215a90 	addiu	at,at,23184
  4b944c:	00221021 	addu	v0,at,v0
  4b9450:	8c420000 	lw	v0,0(v0)
  4b9454:	00000000 	nop
  4b9458:	00822026 	xor	a0,a0,v0
  4b945c:	8fc2003c 	lw	v0,60(s8)
  4b9460:	00000000 	nop
  4b9464:	2442001b 	addiu	v0,v0,27
  4b9468:	90420000 	lbu	v0,0(v0)
  4b946c:	00000000 	nop
  4b9470:	3842004a 	xori	v0,v0,0x4a
  4b9474:	304200ff 	andi	v0,v0,0xff
  4b9478:	8f83804c 	lw	v1,-32692(gp)
  4b947c:	00000000 	nop
  4b9480:	24635890 	addiu	v1,v1,22672
  4b9484:	00621821 	addu	v1,v1,v0
  4b9488:	8fc2003c 	lw	v0,60(s8)
  4b948c:	00000000 	nop
  4b9490:	24420013 	addiu	v0,v0,19
  4b9494:	90630000 	lbu	v1,0(v1)
  4b9498:	90420000 	lbu	v0,0(v0)
  4b949c:	00000000 	nop
  4b94a0:	00621026 	xor	v0,v1,v0
  4b94a4:	304200ff 	andi	v0,v0,0xff
  4b94a8:	8f83804c 	lw	v1,-32692(gp)
  4b94ac:	00000000 	nop
  4b94b0:	24635990 	addiu	v1,v1,22928
  4b94b4:	00621821 	addu	v1,v1,v0
  4b94b8:	8fc2003c 	lw	v0,60(s8)
  4b94bc:	00000000 	nop
  4b94c0:	2442000b 	addiu	v0,v0,11
  4b94c4:	90630000 	lbu	v1,0(v1)
  4b94c8:	90420000 	lbu	v0,0(v0)
  4b94cc:	00000000 	nop
  4b94d0:	00621026 	xor	v0,v1,v0
  4b94d4:	304200ff 	andi	v0,v0,0xff
  4b94d8:	8f83804c 	lw	v1,-32692(gp)
  4b94dc:	00000000 	nop
  4b94e0:	24635990 	addiu	v1,v1,22928
  4b94e4:	00621821 	addu	v1,v1,v0
  4b94e8:	8fc2003c 	lw	v0,60(s8)
  4b94ec:	00000000 	nop
  4b94f0:	24420003 	addiu	v0,v0,3
  4b94f4:	90630000 	lbu	v1,0(v1)
  4b94f8:	90420000 	lbu	v0,0(v0)
  4b94fc:	00000000 	nop
  4b9500:	00621026 	xor	v0,v1,v0
  4b9504:	304200ff 	andi	v0,v0,0xff
  4b9508:	00021080 	sll	v0,v0,0x2
  4b950c:	24420c00 	addiu	v0,v0,3072
  4b9510:	8f81804c 	lw	at,-32692(gp)
  4b9514:	00000000 	nop
  4b9518:	24215a90 	addiu	at,at,23184
  4b951c:	00221021 	addu	v0,at,v0
  4b9520:	8c420000 	lw	v0,0(v0)
  4b9524:	00000000 	nop
  4b9528:	00821026 	xor	v0,a0,v0
  4b952c:	afc20014 	sw	v0,20(s8)
  4b9530:	8fc2003c 	lw	v0,60(s8)
  4b9534:	00000000 	nop
  4b9538:	2442001c 	addiu	v0,v0,28
  4b953c:	90420000 	lbu	v0,0(v0)
  4b9540:	00000000 	nop
  4b9544:	384200d3 	xori	v0,v0,0xd3
  4b9548:	304200ff 	andi	v0,v0,0xff
  4b954c:	8f83804c 	lw	v1,-32692(gp)
  4b9550:	00000000 	nop
  4b9554:	24635990 	addiu	v1,v1,22928
  4b9558:	00621821 	addu	v1,v1,v0
  4b955c:	8fc2003c 	lw	v0,60(s8)
  4b9560:	00000000 	nop
  4b9564:	24420014 	addiu	v0,v0,20
  4b9568:	90630000 	lbu	v1,0(v1)
  4b956c:	90420000 	lbu	v0,0(v0)
  4b9570:	00000000 	nop
  4b9574:	00621026 	xor	v0,v1,v0
  4b9578:	304200ff 	andi	v0,v0,0xff
  4b957c:	8f83804c 	lw	v1,-32692(gp)
  4b9580:	00000000 	nop
  4b9584:	24635890 	addiu	v1,v1,22672
  4b9588:	00621821 	addu	v1,v1,v0
  4b958c:	8fc2003c 	lw	v0,60(s8)
  4b9590:	00000000 	nop
  4b9594:	2442000c 	addiu	v0,v0,12
  4b9598:	90630000 	lbu	v1,0(v1)
  4b959c:	90420000 	lbu	v0,0(v0)
  4b95a0:	00000000 	nop
  4b95a4:	00621026 	xor	v0,v1,v0
  4b95a8:	304200ff 	andi	v0,v0,0xff
  4b95ac:	8f83804c 	lw	v1,-32692(gp)
  4b95b0:	00000000 	nop
  4b95b4:	24635890 	addiu	v1,v1,22672
  4b95b8:	00621821 	addu	v1,v1,v0
  4b95bc:	8fc2003c 	lw	v0,60(s8)
  4b95c0:	00000000 	nop
  4b95c4:	24420004 	addiu	v0,v0,4
  4b95c8:	90630000 	lbu	v1,0(v1)
  4b95cc:	90420000 	lbu	v0,0(v0)
  4b95d0:	00000000 	nop
  4b95d4:	00621026 	xor	v0,v1,v0
  4b95d8:	304200ff 	andi	v0,v0,0xff
  4b95dc:	00021080 	sll	v0,v0,0x2
  4b95e0:	8f84804c 	lw	a0,-32692(gp)
  4b95e4:	00000000 	nop
  4b95e8:	24845a90 	addiu	a0,a0,23184
  4b95ec:	00822021 	addu	a0,a0,v0
  4b95f0:	8fc2003c 	lw	v0,60(s8)
  4b95f4:	00000000 	nop
  4b95f8:	2442001d 	addiu	v0,v0,29
  4b95fc:	90420000 	lbu	v0,0(v0)
  4b9600:	00000000 	nop
  4b9604:	38420092 	xori	v0,v0,0x92
  4b9608:	304200ff 	andi	v0,v0,0xff
  4b960c:	8f83804c 	lw	v1,-32692(gp)
  4b9610:	00000000 	nop
  4b9614:	24635990 	addiu	v1,v1,22928
  4b9618:	00621821 	addu	v1,v1,v0
  4b961c:	8fc2003c 	lw	v0,60(s8)
  4b9620:	00000000 	nop
  4b9624:	24420015 	addiu	v0,v0,21
  4b9628:	90630000 	lbu	v1,0(v1)
  4b962c:	90420000 	lbu	v0,0(v0)
  4b9630:	00000000 	nop
  4b9634:	00621026 	xor	v0,v1,v0
  4b9638:	304200ff 	andi	v0,v0,0xff
  4b963c:	8f83804c 	lw	v1,-32692(gp)
  4b9640:	00000000 	nop
  4b9644:	24635990 	addiu	v1,v1,22928
  4b9648:	00621821 	addu	v1,v1,v0
  4b964c:	8fc2003c 	lw	v0,60(s8)
  4b9650:	00000000 	nop
  4b9654:	2442000d 	addiu	v0,v0,13
  4b9658:	90630000 	lbu	v1,0(v1)
  4b965c:	90420000 	lbu	v0,0(v0)
  4b9660:	00000000 	nop
  4b9664:	00621026 	xor	v0,v1,v0
  4b9668:	304200ff 	andi	v0,v0,0xff
  4b966c:	8f83804c 	lw	v1,-32692(gp)
  4b9670:	00000000 	nop
  4b9674:	24635890 	addiu	v1,v1,22672
  4b9678:	00621821 	addu	v1,v1,v0
  4b967c:	8fc2003c 	lw	v0,60(s8)
  4b9680:	00000000 	nop
  4b9684:	24420005 	addiu	v0,v0,5
  4b9688:	90630000 	lbu	v1,0(v1)
  4b968c:	90420000 	lbu	v0,0(v0)
  4b9690:	00000000 	nop
  4b9694:	00621026 	xor	v0,v1,v0
  4b9698:	304200ff 	andi	v0,v0,0xff
  4b969c:	00021080 	sll	v0,v0,0x2
  4b96a0:	24420400 	addiu	v0,v0,1024
  4b96a4:	8f81804c 	lw	at,-32692(gp)
  4b96a8:	00000000 	nop
  4b96ac:	24215a90 	addiu	at,at,23184
  4b96b0:	00221021 	addu	v0,at,v0
  4b96b4:	8c830000 	lw	v1,0(a0)
  4b96b8:	8c420000 	lw	v0,0(v0)
  4b96bc:	00000000 	nop
  4b96c0:	00622026 	xor	a0,v1,v0
  4b96c4:	8fc2003c 	lw	v0,60(s8)
  4b96c8:	00000000 	nop
  4b96cc:	2442001e 	addiu	v0,v0,30
  4b96d0:	90420000 	lbu	v0,0(v0)
  4b96d4:	00000000 	nop
  4b96d8:	38420092 	xori	v0,v0,0x92
  4b96dc:	304200ff 	andi	v0,v0,0xff
  4b96e0:	8f83804c 	lw	v1,-32692(gp)
  4b96e4:	00000000 	nop
  4b96e8:	24635890 	addiu	v1,v1,22672
  4b96ec:	00621821 	addu	v1,v1,v0
  4b96f0:	8fc2003c 	lw	v0,60(s8)
  4b96f4:	00000000 	nop
  4b96f8:	24420016 	addiu	v0,v0,22
  4b96fc:	90630000 	lbu	v1,0(v1)
  4b9700:	90420000 	lbu	v0,0(v0)
  4b9704:	00000000 	nop
  4b9708:	00621026 	xor	v0,v1,v0
  4b970c:	304200ff 	andi	v0,v0,0xff
  4b9710:	8f83804c 	lw	v1,-32692(gp)
  4b9714:	00000000 	nop
  4b9718:	24635890 	addiu	v1,v1,22672
  4b971c:	00621821 	addu	v1,v1,v0
  4b9720:	8fc2003c 	lw	v0,60(s8)
  4b9724:	00000000 	nop
  4b9728:	2442000e 	addiu	v0,v0,14
  4b972c:	90630000 	lbu	v1,0(v1)
  4b9730:	90420000 	lbu	v0,0(v0)
  4b9734:	00000000 	nop
  4b9738:	00621026 	xor	v0,v1,v0
  4b973c:	304200ff 	andi	v0,v0,0xff
  4b9740:	8f83804c 	lw	v1,-32692(gp)
  4b9744:	00000000 	nop
  4b9748:	24635990 	addiu	v1,v1,22928
  4b974c:	00621821 	addu	v1,v1,v0
  4b9750:	8fc2003c 	lw	v0,60(s8)
  4b9754:	00000000 	nop
  4b9758:	24420006 	addiu	v0,v0,6
  4b975c:	90630000 	lbu	v1,0(v1)
  4b9760:	90420000 	lbu	v0,0(v0)
  4b9764:	00000000 	nop
  4b9768:	00621026 	xor	v0,v1,v0
  4b976c:	304200ff 	andi	v0,v0,0xff
  4b9770:	00021080 	sll	v0,v0,0x2
  4b9774:	24420800 	addiu	v0,v0,2048
  4b9778:	8f81804c 	lw	at,-32692(gp)
  4b977c:	00000000 	nop
  4b9780:	24215a90 	addiu	at,at,23184
  4b9784:	00221021 	addu	v0,at,v0
  4b9788:	8c420000 	lw	v0,0(v0)
  4b978c:	00000000 	nop
  4b9790:	00822026 	xor	a0,a0,v0
  4b9794:	8fc2003c 	lw	v0,60(s8)
  4b9798:	00000000 	nop
  4b979c:	2442001f 	addiu	v0,v0,31
  4b97a0:	90420000 	lbu	v0,0(v0)
  4b97a4:	00000000 	nop
  4b97a8:	384200d3 	xori	v0,v0,0xd3
  4b97ac:	304200ff 	andi	v0,v0,0xff
  4b97b0:	8f83804c 	lw	v1,-32692(gp)
  4b97b4:	00000000 	nop
  4b97b8:	24635890 	addiu	v1,v1,22672
  4b97bc:	00621821 	addu	v1,v1,v0
  4b97c0:	8fc2003c 	lw	v0,60(s8)
  4b97c4:	00000000 	nop
  4b97c8:	24420017 	addiu	v0,v0,23
  4b97cc:	90630000 	lbu	v1,0(v1)
  4b97d0:	90420000 	lbu	v0,0(v0)
  4b97d4:	00000000 	nop
  4b97d8:	00621026 	xor	v0,v1,v0
  4b97dc:	304200ff 	andi	v0,v0,0xff
  4b97e0:	8f83804c 	lw	v1,-32692(gp)
  4b97e4:	00000000 	nop
  4b97e8:	24635990 	addiu	v1,v1,22928
  4b97ec:	00621821 	addu	v1,v1,v0
  4b97f0:	8fc2003c 	lw	v0,60(s8)
  4b97f4:	00000000 	nop
  4b97f8:	2442000f 	addiu	v0,v0,15
  4b97fc:	90630000 	lbu	v1,0(v1)
  4b9800:	90420000 	lbu	v0,0(v0)
  4b9804:	00000000 	nop
  4b9808:	00621026 	xor	v0,v1,v0
  4b980c:	304200ff 	andi	v0,v0,0xff
  4b9810:	8f83804c 	lw	v1,-32692(gp)
  4b9814:	00000000 	nop
  4b9818:	24635990 	addiu	v1,v1,22928
  4b981c:	00621821 	addu	v1,v1,v0
  4b9820:	8fc2003c 	lw	v0,60(s8)
  4b9824:	00000000 	nop
  4b9828:	24420007 	addiu	v0,v0,7
  4b982c:	90630000 	lbu	v1,0(v1)
  4b9830:	90420000 	lbu	v0,0(v0)
  4b9834:	00000000 	nop
  4b9838:	00621026 	xor	v0,v1,v0
  4b983c:	304200ff 	andi	v0,v0,0xff
  4b9840:	00021080 	sll	v0,v0,0x2
  4b9844:	24420c00 	addiu	v0,v0,3072
  4b9848:	8f81804c 	lw	at,-32692(gp)
  4b984c:	00000000 	nop
  4b9850:	24215a90 	addiu	at,at,23184
  4b9854:	00221021 	addu	v0,at,v0
  4b9858:	8c420000 	lw	v0,0(v0)
  4b985c:	00000000 	nop
  4b9860:	00821026 	xor	v0,a0,v0
  4b9864:	afc20018 	sw	v0,24(s8)
  4b9868:	8fc20018 	lw	v0,24(s8)
  4b986c:	00000000 	nop
  4b9870:	00021a00 	sll	v1,v0,0x8
  4b9874:	00021602 	srl	v0,v0,0x18
  4b9878:	00621025 	or	v0,v1,v0
  4b987c:	afc20018 	sw	v0,24(s8)
  4b9880:	8fc30014 	lw	v1,20(s8)
  4b9884:	8fc20018 	lw	v0,24(s8)
  4b9888:	00000000 	nop
  4b988c:	00621021 	addu	v0,v1,v0
  4b9890:	afc20014 	sw	v0,20(s8)
  4b9894:	8fc30018 	lw	v1,24(s8)
  4b9898:	8fc20014 	lw	v0,20(s8)
  4b989c:	00000000 	nop
  4b98a0:	00621021 	addu	v0,v1,v0
  4b98a4:	afc20018 	sw	v0,24(s8)
  4b98a8:	8fc30014 	lw	v1,20(s8)
  4b98ac:	8fc20038 	lw	v0,56(s8)
  4b98b0:	00000000 	nop
  4b98b4:	ac431020 	sw	v1,4128(v0)
  4b98b8:	8fc20018 	lw	v0,24(s8)
  4b98bc:	00000000 	nop
  4b98c0:	00021a40 	sll	v1,v0,0x9
  4b98c4:	000215c2 	srl	v0,v0,0x17
  4b98c8:	00621825 	or	v1,v1,v0
  4b98cc:	8fc20038 	lw	v0,56(s8)
  4b98d0:	00000000 	nop
  4b98d4:	ac431024 	sw	v1,4132(v0)
		CALC_K256 (k, 2, 0x80, 0xE6, 0x78, 0x6B);
  4b98d8:	8fc2003c 	lw	v0,60(s8)
  4b98dc:	00000000 	nop
  4b98e0:	24420018 	addiu	v0,v0,24
  4b98e4:	90420000 	lbu	v0,0(v0)
  4b98e8:	00000000 	nop
  4b98ec:	384200e6 	xori	v0,v0,0xe6
  4b98f0:	304200ff 	andi	v0,v0,0xff
  4b98f4:	8f83804c 	lw	v1,-32692(gp)
  4b98f8:	00000000 	nop
  4b98fc:	24635990 	addiu	v1,v1,22928
  4b9900:	00621821 	addu	v1,v1,v0
  4b9904:	8fc2003c 	lw	v0,60(s8)
  4b9908:	00000000 	nop
  4b990c:	24420010 	addiu	v0,v0,16
  4b9910:	90630000 	lbu	v1,0(v1)
  4b9914:	90420000 	lbu	v0,0(v0)
  4b9918:	00000000 	nop
  4b991c:	00621026 	xor	v0,v1,v0
  4b9920:	304200ff 	andi	v0,v0,0xff
  4b9924:	8f83804c 	lw	v1,-32692(gp)
  4b9928:	00000000 	nop
  4b992c:	24635890 	addiu	v1,v1,22672
  4b9930:	00621821 	addu	v1,v1,v0
  4b9934:	8fc2003c 	lw	v0,60(s8)
  4b9938:	00000000 	nop
  4b993c:	24420008 	addiu	v0,v0,8
  4b9940:	90630000 	lbu	v1,0(v1)
  4b9944:	90420000 	lbu	v0,0(v0)
  4b9948:	00000000 	nop
  4b994c:	00621026 	xor	v0,v1,v0
  4b9950:	304200ff 	andi	v0,v0,0xff
  4b9954:	8f81804c 	lw	at,-32692(gp)
  4b9958:	00000000 	nop
  4b995c:	24215890 	addiu	at,at,22672
  4b9960:	00221021 	addu	v0,at,v0
  4b9964:	90430000 	lbu	v1,0(v0)
  4b9968:	8fc2003c 	lw	v0,60(s8)
  4b996c:	00000000 	nop
  4b9970:	90420000 	lbu	v0,0(v0)
  4b9974:	00000000 	nop
  4b9978:	00621026 	xor	v0,v1,v0
  4b997c:	304200ff 	andi	v0,v0,0xff
  4b9980:	00021080 	sll	v0,v0,0x2
  4b9984:	8f84804c 	lw	a0,-32692(gp)
  4b9988:	00000000 	nop
  4b998c:	24845a90 	addiu	a0,a0,23184
  4b9990:	00822021 	addu	a0,a0,v0
  4b9994:	8fc2003c 	lw	v0,60(s8)
  4b9998:	00000000 	nop
  4b999c:	24420019 	addiu	v0,v0,25
  4b99a0:	90420000 	lbu	v0,0(v0)
  4b99a4:	00000000 	nop
  4b99a8:	38420080 	xori	v0,v0,0x80
  4b99ac:	304200ff 	andi	v0,v0,0xff
  4b99b0:	8f83804c 	lw	v1,-32692(gp)
  4b99b4:	00000000 	nop
  4b99b8:	24635990 	addiu	v1,v1,22928
  4b99bc:	00621821 	addu	v1,v1,v0
  4b99c0:	8fc2003c 	lw	v0,60(s8)
  4b99c4:	00000000 	nop
  4b99c8:	24420011 	addiu	v0,v0,17
  4b99cc:	90630000 	lbu	v1,0(v1)
  4b99d0:	90420000 	lbu	v0,0(v0)
  4b99d4:	00000000 	nop
  4b99d8:	00621026 	xor	v0,v1,v0
  4b99dc:	304200ff 	andi	v0,v0,0xff
  4b99e0:	8f83804c 	lw	v1,-32692(gp)
  4b99e4:	00000000 	nop
  4b99e8:	24635990 	addiu	v1,v1,22928
  4b99ec:	00621821 	addu	v1,v1,v0
  4b99f0:	8fc2003c 	lw	v0,60(s8)
  4b99f4:	00000000 	nop
  4b99f8:	24420009 	addiu	v0,v0,9
  4b99fc:	90630000 	lbu	v1,0(v1)
  4b9a00:	90420000 	lbu	v0,0(v0)
  4b9a04:	00000000 	nop
  4b9a08:	00621026 	xor	v0,v1,v0
  4b9a0c:	304200ff 	andi	v0,v0,0xff
  4b9a10:	8f83804c 	lw	v1,-32692(gp)
  4b9a14:	00000000 	nop
  4b9a18:	24635890 	addiu	v1,v1,22672
  4b9a1c:	00621821 	addu	v1,v1,v0
  4b9a20:	8fc2003c 	lw	v0,60(s8)
  4b9a24:	00000000 	nop
  4b9a28:	24420001 	addiu	v0,v0,1
  4b9a2c:	90630000 	lbu	v1,0(v1)
  4b9a30:	90420000 	lbu	v0,0(v0)
  4b9a34:	00000000 	nop
  4b9a38:	00621026 	xor	v0,v1,v0
  4b9a3c:	304200ff 	andi	v0,v0,0xff
  4b9a40:	00021080 	sll	v0,v0,0x2
  4b9a44:	24420400 	addiu	v0,v0,1024
  4b9a48:	8f81804c 	lw	at,-32692(gp)
  4b9a4c:	00000000 	nop
  4b9a50:	24215a90 	addiu	at,at,23184
  4b9a54:	00221021 	addu	v0,at,v0
  4b9a58:	8c830000 	lw	v1,0(a0)
  4b9a5c:	8c420000 	lw	v0,0(v0)
  4b9a60:	00000000 	nop
  4b9a64:	00622026 	xor	a0,v1,v0
  4b9a68:	8fc2003c 	lw	v0,60(s8)
  4b9a6c:	00000000 	nop
  4b9a70:	2442001a 	addiu	v0,v0,26
  4b9a74:	90420000 	lbu	v0,0(v0)
  4b9a78:	00000000 	nop
  4b9a7c:	38420080 	xori	v0,v0,0x80
  4b9a80:	304200ff 	andi	v0,v0,0xff
  4b9a84:	8f83804c 	lw	v1,-32692(gp)
  4b9a88:	00000000 	nop
  4b9a8c:	24635890 	addiu	v1,v1,22672
  4b9a90:	00621821 	addu	v1,v1,v0
  4b9a94:	8fc2003c 	lw	v0,60(s8)
  4b9a98:	00000000 	nop
  4b9a9c:	24420012 	addiu	v0,v0,18
  4b9aa0:	90630000 	lbu	v1,0(v1)
  4b9aa4:	90420000 	lbu	v0,0(v0)
  4b9aa8:	00000000 	nop
  4b9aac:	00621026 	xor	v0,v1,v0
  4b9ab0:	304200ff 	andi	v0,v0,0xff
  4b9ab4:	8f83804c 	lw	v1,-32692(gp)
  4b9ab8:	00000000 	nop
  4b9abc:	24635890 	addiu	v1,v1,22672
  4b9ac0:	00621821 	addu	v1,v1,v0
  4b9ac4:	8fc2003c 	lw	v0,60(s8)
  4b9ac8:	00000000 	nop
  4b9acc:	2442000a 	addiu	v0,v0,10
  4b9ad0:	90630000 	lbu	v1,0(v1)
  4b9ad4:	90420000 	lbu	v0,0(v0)
  4b9ad8:	00000000 	nop
  4b9adc:	00621026 	xor	v0,v1,v0
  4b9ae0:	304200ff 	andi	v0,v0,0xff
  4b9ae4:	8f83804c 	lw	v1,-32692(gp)
  4b9ae8:	00000000 	nop
  4b9aec:	24635990 	addiu	v1,v1,22928
  4b9af0:	00621821 	addu	v1,v1,v0
  4b9af4:	8fc2003c 	lw	v0,60(s8)
  4b9af8:	00000000 	nop
  4b9afc:	24420002 	addiu	v0,v0,2
  4b9b00:	90630000 	lbu	v1,0(v1)
  4b9b04:	90420000 	lbu	v0,0(v0)
  4b9b08:	00000000 	nop
  4b9b0c:	00621026 	xor	v0,v1,v0
  4b9b10:	304200ff 	andi	v0,v0,0xff
  4b9b14:	00021080 	sll	v0,v0,0x2
  4b9b18:	24420800 	addiu	v0,v0,2048
  4b9b1c:	8f81804c 	lw	at,-32692(gp)
  4b9b20:	00000000 	nop
  4b9b24:	24215a90 	addiu	at,at,23184
  4b9b28:	00221021 	addu	v0,at,v0
  4b9b2c:	8c420000 	lw	v0,0(v0)
  4b9b30:	00000000 	nop
  4b9b34:	00822026 	xor	a0,a0,v0
  4b9b38:	8fc2003c 	lw	v0,60(s8)
  4b9b3c:	00000000 	nop
  4b9b40:	2442001b 	addiu	v0,v0,27
  4b9b44:	90420000 	lbu	v0,0(v0)
  4b9b48:	00000000 	nop
  4b9b4c:	384200e6 	xori	v0,v0,0xe6
  4b9b50:	304200ff 	andi	v0,v0,0xff
  4b9b54:	8f83804c 	lw	v1,-32692(gp)
  4b9b58:	00000000 	nop
  4b9b5c:	24635890 	addiu	v1,v1,22672
  4b9b60:	00621821 	addu	v1,v1,v0
  4b9b64:	8fc2003c 	lw	v0,60(s8)
  4b9b68:	00000000 	nop
  4b9b6c:	24420013 	addiu	v0,v0,19
  4b9b70:	90630000 	lbu	v1,0(v1)
  4b9b74:	90420000 	lbu	v0,0(v0)
  4b9b78:	00000000 	nop
  4b9b7c:	00621026 	xor	v0,v1,v0
  4b9b80:	304200ff 	andi	v0,v0,0xff
  4b9b84:	8f83804c 	lw	v1,-32692(gp)
  4b9b88:	00000000 	nop
  4b9b8c:	24635990 	addiu	v1,v1,22928
  4b9b90:	00621821 	addu	v1,v1,v0
  4b9b94:	8fc2003c 	lw	v0,60(s8)
  4b9b98:	00000000 	nop
  4b9b9c:	2442000b 	addiu	v0,v0,11
  4b9ba0:	90630000 	lbu	v1,0(v1)
  4b9ba4:	90420000 	lbu	v0,0(v0)
  4b9ba8:	00000000 	nop
  4b9bac:	00621026 	xor	v0,v1,v0
  4b9bb0:	304200ff 	andi	v0,v0,0xff
  4b9bb4:	8f83804c 	lw	v1,-32692(gp)
  4b9bb8:	00000000 	nop
  4b9bbc:	24635990 	addiu	v1,v1,22928
  4b9bc0:	00621821 	addu	v1,v1,v0
  4b9bc4:	8fc2003c 	lw	v0,60(s8)
  4b9bc8:	00000000 	nop
  4b9bcc:	24420003 	addiu	v0,v0,3
  4b9bd0:	90630000 	lbu	v1,0(v1)
  4b9bd4:	90420000 	lbu	v0,0(v0)
  4b9bd8:	00000000 	nop
  4b9bdc:	00621026 	xor	v0,v1,v0
  4b9be0:	304200ff 	andi	v0,v0,0xff
  4b9be4:	00021080 	sll	v0,v0,0x2
  4b9be8:	24420c00 	addiu	v0,v0,3072
  4b9bec:	8f81804c 	lw	at,-32692(gp)
  4b9bf0:	00000000 	nop
  4b9bf4:	24215a90 	addiu	at,at,23184
  4b9bf8:	00221021 	addu	v0,at,v0
  4b9bfc:	8c420000 	lw	v0,0(v0)
  4b9c00:	00000000 	nop
  4b9c04:	00821026 	xor	v0,a0,v0
  4b9c08:	afc20014 	sw	v0,20(s8)
  4b9c0c:	8fc2003c 	lw	v0,60(s8)
  4b9c10:	00000000 	nop
  4b9c14:	2442001c 	addiu	v0,v0,28
  4b9c18:	90420000 	lbu	v0,0(v0)
  4b9c1c:	00000000 	nop
  4b9c20:	3842006b 	xori	v0,v0,0x6b
  4b9c24:	304200ff 	andi	v0,v0,0xff
  4b9c28:	8f83804c 	lw	v1,-32692(gp)
  4b9c2c:	00000000 	nop
  4b9c30:	24635990 	addiu	v1,v1,22928
  4b9c34:	00621821 	addu	v1,v1,v0
  4b9c38:	8fc2003c 	lw	v0,60(s8)
  4b9c3c:	00000000 	nop
  4b9c40:	24420014 	addiu	v0,v0,20
  4b9c44:	90630000 	lbu	v1,0(v1)
  4b9c48:	90420000 	lbu	v0,0(v0)
  4b9c4c:	00000000 	nop
  4b9c50:	00621026 	xor	v0,v1,v0
  4b9c54:	304200ff 	andi	v0,v0,0xff
  4b9c58:	8f83804c 	lw	v1,-32692(gp)
  4b9c5c:	00000000 	nop
  4b9c60:	24635890 	addiu	v1,v1,22672
  4b9c64:	00621821 	addu	v1,v1,v0
  4b9c68:	8fc2003c 	lw	v0,60(s8)
  4b9c6c:	00000000 	nop
  4b9c70:	2442000c 	addiu	v0,v0,12
  4b9c74:	90630000 	lbu	v1,0(v1)
  4b9c78:	90420000 	lbu	v0,0(v0)
  4b9c7c:	00000000 	nop
  4b9c80:	00621026 	xor	v0,v1,v0
  4b9c84:	304200ff 	andi	v0,v0,0xff
  4b9c88:	8f83804c 	lw	v1,-32692(gp)
  4b9c8c:	00000000 	nop
  4b9c90:	24635890 	addiu	v1,v1,22672
  4b9c94:	00621821 	addu	v1,v1,v0
  4b9c98:	8fc2003c 	lw	v0,60(s8)
  4b9c9c:	00000000 	nop
  4b9ca0:	24420004 	addiu	v0,v0,4
  4b9ca4:	90630000 	lbu	v1,0(v1)
  4b9ca8:	90420000 	lbu	v0,0(v0)
  4b9cac:	00000000 	nop
  4b9cb0:	00621026 	xor	v0,v1,v0
  4b9cb4:	304200ff 	andi	v0,v0,0xff
  4b9cb8:	00021080 	sll	v0,v0,0x2
  4b9cbc:	8f84804c 	lw	a0,-32692(gp)
  4b9cc0:	00000000 	nop
  4b9cc4:	24845a90 	addiu	a0,a0,23184
  4b9cc8:	00822021 	addu	a0,a0,v0
  4b9ccc:	8fc2003c 	lw	v0,60(s8)
  4b9cd0:	00000000 	nop
  4b9cd4:	2442001d 	addiu	v0,v0,29
  4b9cd8:	90420000 	lbu	v0,0(v0)
  4b9cdc:	00000000 	nop
  4b9ce0:	38420078 	xori	v0,v0,0x78
  4b9ce4:	304200ff 	andi	v0,v0,0xff
  4b9ce8:	8f83804c 	lw	v1,-32692(gp)
  4b9cec:	00000000 	nop
  4b9cf0:	24635990 	addiu	v1,v1,22928
  4b9cf4:	00621821 	addu	v1,v1,v0
  4b9cf8:	8fc2003c 	lw	v0,60(s8)
  4b9cfc:	00000000 	nop
  4b9d00:	24420015 	addiu	v0,v0,21
  4b9d04:	90630000 	lbu	v1,0(v1)
  4b9d08:	90420000 	lbu	v0,0(v0)
  4b9d0c:	00000000 	nop
  4b9d10:	00621026 	xor	v0,v1,v0
  4b9d14:	304200ff 	andi	v0,v0,0xff
  4b9d18:	8f83804c 	lw	v1,-32692(gp)
  4b9d1c:	00000000 	nop
  4b9d20:	24635990 	addiu	v1,v1,22928
  4b9d24:	00621821 	addu	v1,v1,v0
  4b9d28:	8fc2003c 	lw	v0,60(s8)
  4b9d2c:	00000000 	nop
  4b9d30:	2442000d 	addiu	v0,v0,13
  4b9d34:	90630000 	lbu	v1,0(v1)
  4b9d38:	90420000 	lbu	v0,0(v0)
  4b9d3c:	00000000 	nop
  4b9d40:	00621026 	xor	v0,v1,v0
  4b9d44:	304200ff 	andi	v0,v0,0xff
  4b9d48:	8f83804c 	lw	v1,-32692(gp)
  4b9d4c:	00000000 	nop
  4b9d50:	24635890 	addiu	v1,v1,22672
  4b9d54:	00621821 	addu	v1,v1,v0
  4b9d58:	8fc2003c 	lw	v0,60(s8)
  4b9d5c:	00000000 	nop
  4b9d60:	24420005 	addiu	v0,v0,5
  4b9d64:	90630000 	lbu	v1,0(v1)
  4b9d68:	90420000 	lbu	v0,0(v0)
  4b9d6c:	00000000 	nop
  4b9d70:	00621026 	xor	v0,v1,v0
  4b9d74:	304200ff 	andi	v0,v0,0xff
  4b9d78:	00021080 	sll	v0,v0,0x2
  4b9d7c:	24420400 	addiu	v0,v0,1024
  4b9d80:	8f81804c 	lw	at,-32692(gp)
  4b9d84:	00000000 	nop
  4b9d88:	24215a90 	addiu	at,at,23184
  4b9d8c:	00221021 	addu	v0,at,v0
  4b9d90:	8c830000 	lw	v1,0(a0)
  4b9d94:	8c420000 	lw	v0,0(v0)
  4b9d98:	00000000 	nop
  4b9d9c:	00622026 	xor	a0,v1,v0
  4b9da0:	8fc2003c 	lw	v0,60(s8)
  4b9da4:	00000000 	nop
  4b9da8:	2442001e 	addiu	v0,v0,30
  4b9dac:	90420000 	lbu	v0,0(v0)
  4b9db0:	00000000 	nop
  4b9db4:	38420078 	xori	v0,v0,0x78
  4b9db8:	304200ff 	andi	v0,v0,0xff
  4b9dbc:	8f83804c 	lw	v1,-32692(gp)
  4b9dc0:	00000000 	nop
  4b9dc4:	24635890 	addiu	v1,v1,22672
  4b9dc8:	00621821 	addu	v1,v1,v0
  4b9dcc:	8fc2003c 	lw	v0,60(s8)
  4b9dd0:	00000000 	nop
  4b9dd4:	24420016 	addiu	v0,v0,22
  4b9dd8:	90630000 	lbu	v1,0(v1)
  4b9ddc:	90420000 	lbu	v0,0(v0)
  4b9de0:	00000000 	nop
  4b9de4:	00621026 	xor	v0,v1,v0
  4b9de8:	304200ff 	andi	v0,v0,0xff
  4b9dec:	8f83804c 	lw	v1,-32692(gp)
  4b9df0:	00000000 	nop
  4b9df4:	24635890 	addiu	v1,v1,22672
  4b9df8:	00621821 	addu	v1,v1,v0
  4b9dfc:	8fc2003c 	lw	v0,60(s8)
  4b9e00:	00000000 	nop
  4b9e04:	2442000e 	addiu	v0,v0,14
  4b9e08:	90630000 	lbu	v1,0(v1)
  4b9e0c:	90420000 	lbu	v0,0(v0)
  4b9e10:	00000000 	nop
  4b9e14:	00621026 	xor	v0,v1,v0
  4b9e18:	304200ff 	andi	v0,v0,0xff
  4b9e1c:	8f83804c 	lw	v1,-32692(gp)
  4b9e20:	00000000 	nop
  4b9e24:	24635990 	addiu	v1,v1,22928
  4b9e28:	00621821 	addu	v1,v1,v0
  4b9e2c:	8fc2003c 	lw	v0,60(s8)
  4b9e30:	00000000 	nop
  4b9e34:	24420006 	addiu	v0,v0,6
  4b9e38:	90630000 	lbu	v1,0(v1)
  4b9e3c:	90420000 	lbu	v0,0(v0)
  4b9e40:	00000000 	nop
  4b9e44:	00621026 	xor	v0,v1,v0
  4b9e48:	304200ff 	andi	v0,v0,0xff
  4b9e4c:	00021080 	sll	v0,v0,0x2
  4b9e50:	24420800 	addiu	v0,v0,2048
  4b9e54:	8f81804c 	lw	at,-32692(gp)
  4b9e58:	00000000 	nop
  4b9e5c:	24215a90 	addiu	at,at,23184
  4b9e60:	00221021 	addu	v0,at,v0
  4b9e64:	8c420000 	lw	v0,0(v0)
  4b9e68:	00000000 	nop
  4b9e6c:	00822026 	xor	a0,a0,v0
  4b9e70:	8fc2003c 	lw	v0,60(s8)
  4b9e74:	00000000 	nop
  4b9e78:	2442001f 	addiu	v0,v0,31
  4b9e7c:	90420000 	lbu	v0,0(v0)
  4b9e80:	00000000 	nop
  4b9e84:	3842006b 	xori	v0,v0,0x6b
  4b9e88:	304200ff 	andi	v0,v0,0xff
  4b9e8c:	8f83804c 	lw	v1,-32692(gp)
  4b9e90:	00000000 	nop
  4b9e94:	24635890 	addiu	v1,v1,22672
  4b9e98:	00621821 	addu	v1,v1,v0
  4b9e9c:	8fc2003c 	lw	v0,60(s8)
  4b9ea0:	00000000 	nop
  4b9ea4:	24420017 	addiu	v0,v0,23
  4b9ea8:	90630000 	lbu	v1,0(v1)
  4b9eac:	90420000 	lbu	v0,0(v0)
  4b9eb0:	00000000 	nop
  4b9eb4:	00621026 	xor	v0,v1,v0
  4b9eb8:	304200ff 	andi	v0,v0,0xff
  4b9ebc:	8f83804c 	lw	v1,-32692(gp)
  4b9ec0:	00000000 	nop
  4b9ec4:	24635990 	addiu	v1,v1,22928
  4b9ec8:	00621821 	addu	v1,v1,v0
  4b9ecc:	8fc2003c 	lw	v0,60(s8)
  4b9ed0:	00000000 	nop
  4b9ed4:	2442000f 	addiu	v0,v0,15
  4b9ed8:	90630000 	lbu	v1,0(v1)
  4b9edc:	90420000 	lbu	v0,0(v0)
  4b9ee0:	00000000 	nop
  4b9ee4:	00621026 	xor	v0,v1,v0
  4b9ee8:	304200ff 	andi	v0,v0,0xff
  4b9eec:	8f83804c 	lw	v1,-32692(gp)
  4b9ef0:	00000000 	nop
  4b9ef4:	24635990 	addiu	v1,v1,22928
  4b9ef8:	00621821 	addu	v1,v1,v0
  4b9efc:	8fc2003c 	lw	v0,60(s8)
  4b9f00:	00000000 	nop
  4b9f04:	24420007 	addiu	v0,v0,7
  4b9f08:	90630000 	lbu	v1,0(v1)
  4b9f0c:	90420000 	lbu	v0,0(v0)
  4b9f10:	00000000 	nop
  4b9f14:	00621026 	xor	v0,v1,v0
  4b9f18:	304200ff 	andi	v0,v0,0xff
  4b9f1c:	00021080 	sll	v0,v0,0x2
  4b9f20:	24420c00 	addiu	v0,v0,3072
  4b9f24:	8f81804c 	lw	at,-32692(gp)
  4b9f28:	00000000 	nop
  4b9f2c:	24215a90 	addiu	at,at,23184
  4b9f30:	00221021 	addu	v0,at,v0
  4b9f34:	8c420000 	lw	v0,0(v0)
  4b9f38:	00000000 	nop
  4b9f3c:	00821026 	xor	v0,a0,v0
  4b9f40:	afc20018 	sw	v0,24(s8)
  4b9f44:	8fc20018 	lw	v0,24(s8)
  4b9f48:	00000000 	nop
  4b9f4c:	00021a00 	sll	v1,v0,0x8
  4b9f50:	00021602 	srl	v0,v0,0x18
  4b9f54:	00621025 	or	v0,v1,v0
  4b9f58:	afc20018 	sw	v0,24(s8)
  4b9f5c:	8fc30014 	lw	v1,20(s8)
  4b9f60:	8fc20018 	lw	v0,24(s8)
  4b9f64:	00000000 	nop
  4b9f68:	00621021 	addu	v0,v1,v0
  4b9f6c:	afc20014 	sw	v0,20(s8)
  4b9f70:	8fc30018 	lw	v1,24(s8)
  4b9f74:	8fc20014 	lw	v0,20(s8)
  4b9f78:	00000000 	nop
  4b9f7c:	00621021 	addu	v0,v1,v0
  4b9f80:	afc20018 	sw	v0,24(s8)
  4b9f84:	8fc30014 	lw	v1,20(s8)
  4b9f88:	8fc20038 	lw	v0,56(s8)
  4b9f8c:	00000000 	nop
  4b9f90:	ac431028 	sw	v1,4136(v0)
  4b9f94:	8fc20018 	lw	v0,24(s8)
  4b9f98:	00000000 	nop
  4b9f9c:	00021a40 	sll	v1,v0,0x9
  4b9fa0:	000215c2 	srl	v0,v0,0x17
  4b9fa4:	00621825 	or	v1,v1,v0
  4b9fa8:	8fc20038 	lw	v0,56(s8)
  4b9fac:	00000000 	nop
  4b9fb0:	ac43102c 	sw	v1,4140(v0)
		CALC_K256 (k, 4, 0xE4, 0x45, 0xDD, 0x7D);
  4b9fb4:	8fc2003c 	lw	v0,60(s8)
  4b9fb8:	00000000 	nop
  4b9fbc:	24420018 	addiu	v0,v0,24
  4b9fc0:	90420000 	lbu	v0,0(v0)
  4b9fc4:	00000000 	nop
  4b9fc8:	38420045 	xori	v0,v0,0x45
  4b9fcc:	304200ff 	andi	v0,v0,0xff
  4b9fd0:	8f83804c 	lw	v1,-32692(gp)
  4b9fd4:	00000000 	nop
  4b9fd8:	24635990 	addiu	v1,v1,22928
  4b9fdc:	00621821 	addu	v1,v1,v0
  4b9fe0:	8fc2003c 	lw	v0,60(s8)
  4b9fe4:	00000000 	nop
  4b9fe8:	24420010 	addiu	v0,v0,16
  4b9fec:	90630000 	lbu	v1,0(v1)
  4b9ff0:	90420000 	lbu	v0,0(v0)
  4b9ff4:	00000000 	nop
  4b9ff8:	00621026 	xor	v0,v1,v0
  4b9ffc:	304200ff 	andi	v0,v0,0xff
  4ba000:	8f83804c 	lw	v1,-32692(gp)
  4ba004:	00000000 	nop
  4ba008:	24635890 	addiu	v1,v1,22672
  4ba00c:	00621821 	addu	v1,v1,v0
  4ba010:	8fc2003c 	lw	v0,60(s8)
  4ba014:	00000000 	nop
  4ba018:	24420008 	addiu	v0,v0,8
  4ba01c:	90630000 	lbu	v1,0(v1)
  4ba020:	90420000 	lbu	v0,0(v0)
  4ba024:	00000000 	nop
  4ba028:	00621026 	xor	v0,v1,v0
  4ba02c:	304200ff 	andi	v0,v0,0xff
  4ba030:	8f81804c 	lw	at,-32692(gp)
  4ba034:	00000000 	nop
  4ba038:	24215890 	addiu	at,at,22672
  4ba03c:	00221021 	addu	v0,at,v0
  4ba040:	90430000 	lbu	v1,0(v0)
  4ba044:	8fc2003c 	lw	v0,60(s8)
  4ba048:	00000000 	nop
  4ba04c:	90420000 	lbu	v0,0(v0)
  4ba050:	00000000 	nop
  4ba054:	00621026 	xor	v0,v1,v0
  4ba058:	304200ff 	andi	v0,v0,0xff
  4ba05c:	00021080 	sll	v0,v0,0x2
  4ba060:	8f84804c 	lw	a0,-32692(gp)
  4ba064:	00000000 	nop
  4ba068:	24845a90 	addiu	a0,a0,23184
  4ba06c:	00822021 	addu	a0,a0,v0
  4ba070:	8fc2003c 	lw	v0,60(s8)
  4ba074:	00000000 	nop
  4ba078:	24420019 	addiu	v0,v0,25
  4ba07c:	90420000 	lbu	v0,0(v0)
  4ba080:	00000000 	nop
  4ba084:	384200e4 	xori	v0,v0,0xe4
  4ba088:	304200ff 	andi	v0,v0,0xff
  4ba08c:	8f83804c 	lw	v1,-32692(gp)
  4ba090:	00000000 	nop
  4ba094:	24635990 	addiu	v1,v1,22928
  4ba098:	00621821 	addu	v1,v1,v0
  4ba09c:	8fc2003c 	lw	v0,60(s8)
  4ba0a0:	00000000 	nop
  4ba0a4:	24420011 	addiu	v0,v0,17
  4ba0a8:	90630000 	lbu	v1,0(v1)
  4ba0ac:	90420000 	lbu	v0,0(v0)
  4ba0b0:	00000000 	nop
  4ba0b4:	00621026 	xor	v0,v1,v0
  4ba0b8:	304200ff 	andi	v0,v0,0xff
  4ba0bc:	8f83804c 	lw	v1,-32692(gp)
  4ba0c0:	00000000 	nop
  4ba0c4:	24635990 	addiu	v1,v1,22928
  4ba0c8:	00621821 	addu	v1,v1,v0
  4ba0cc:	8fc2003c 	lw	v0,60(s8)
  4ba0d0:	00000000 	nop
  4ba0d4:	24420009 	addiu	v0,v0,9
  4ba0d8:	90630000 	lbu	v1,0(v1)
  4ba0dc:	90420000 	lbu	v0,0(v0)
  4ba0e0:	00000000 	nop
  4ba0e4:	00621026 	xor	v0,v1,v0
  4ba0e8:	304200ff 	andi	v0,v0,0xff
  4ba0ec:	8f83804c 	lw	v1,-32692(gp)
  4ba0f0:	00000000 	nop
  4ba0f4:	24635890 	addiu	v1,v1,22672
  4ba0f8:	00621821 	addu	v1,v1,v0
  4ba0fc:	8fc2003c 	lw	v0,60(s8)
  4ba100:	00000000 	nop
  4ba104:	24420001 	addiu	v0,v0,1
  4ba108:	90630000 	lbu	v1,0(v1)
  4ba10c:	90420000 	lbu	v0,0(v0)
  4ba110:	00000000 	nop
  4ba114:	00621026 	xor	v0,v1,v0
  4ba118:	304200ff 	andi	v0,v0,0xff
  4ba11c:	00021080 	sll	v0,v0,0x2
  4ba120:	24420400 	addiu	v0,v0,1024
  4ba124:	8f81804c 	lw	at,-32692(gp)
  4ba128:	00000000 	nop
  4ba12c:	24215a90 	addiu	at,at,23184
  4ba130:	00221021 	addu	v0,at,v0
  4ba134:	8c830000 	lw	v1,0(a0)
  4ba138:	8c420000 	lw	v0,0(v0)
  4ba13c:	00000000 	nop
  4ba140:	00622026 	xor	a0,v1,v0
  4ba144:	8fc2003c 	lw	v0,60(s8)
  4ba148:	00000000 	nop
  4ba14c:	2442001a 	addiu	v0,v0,26
  4ba150:	90420000 	lbu	v0,0(v0)
  4ba154:	00000000 	nop
  4ba158:	384200e4 	xori	v0,v0,0xe4
  4ba15c:	304200ff 	andi	v0,v0,0xff
  4ba160:	8f83804c 	lw	v1,-32692(gp)
  4ba164:	00000000 	nop
  4ba168:	24635890 	addiu	v1,v1,22672
  4ba16c:	00621821 	addu	v1,v1,v0
  4ba170:	8fc2003c 	lw	v0,60(s8)
  4ba174:	00000000 	nop
  4ba178:	24420012 	addiu	v0,v0,18
  4ba17c:	90630000 	lbu	v1,0(v1)
  4ba180:	90420000 	lbu	v0,0(v0)
  4ba184:	00000000 	nop
  4ba188:	00621026 	xor	v0,v1,v0
  4ba18c:	304200ff 	andi	v0,v0,0xff
  4ba190:	8f83804c 	lw	v1,-32692(gp)
  4ba194:	00000000 	nop
  4ba198:	24635890 	addiu	v1,v1,22672
  4ba19c:	00621821 	addu	v1,v1,v0
  4ba1a0:	8fc2003c 	lw	v0,60(s8)
  4ba1a4:	00000000 	nop
  4ba1a8:	2442000a 	addiu	v0,v0,10
  4ba1ac:	90630000 	lbu	v1,0(v1)
  4ba1b0:	90420000 	lbu	v0,0(v0)
  4ba1b4:	00000000 	nop
  4ba1b8:	00621026 	xor	v0,v1,v0
  4ba1bc:	304200ff 	andi	v0,v0,0xff
  4ba1c0:	8f83804c 	lw	v1,-32692(gp)
  4ba1c4:	00000000 	nop
  4ba1c8:	24635990 	addiu	v1,v1,22928
  4ba1cc:	00621821 	addu	v1,v1,v0
  4ba1d0:	8fc2003c 	lw	v0,60(s8)
  4ba1d4:	00000000 	nop
  4ba1d8:	24420002 	addiu	v0,v0,2
  4ba1dc:	90630000 	lbu	v1,0(v1)
  4ba1e0:	90420000 	lbu	v0,0(v0)
  4ba1e4:	00000000 	nop
  4ba1e8:	00621026 	xor	v0,v1,v0
  4ba1ec:	304200ff 	andi	v0,v0,0xff
  4ba1f0:	00021080 	sll	v0,v0,0x2
  4ba1f4:	24420800 	addiu	v0,v0,2048
  4ba1f8:	8f81804c 	lw	at,-32692(gp)
  4ba1fc:	00000000 	nop
  4ba200:	24215a90 	addiu	at,at,23184
  4ba204:	00221021 	addu	v0,at,v0
  4ba208:	8c420000 	lw	v0,0(v0)
  4ba20c:	00000000 	nop
  4ba210:	00822026 	xor	a0,a0,v0
  4ba214:	8fc2003c 	lw	v0,60(s8)
  4ba218:	00000000 	nop
  4ba21c:	2442001b 	addiu	v0,v0,27
  4ba220:	90420000 	lbu	v0,0(v0)
  4ba224:	00000000 	nop
  4ba228:	38420045 	xori	v0,v0,0x45
  4ba22c:	304200ff 	andi	v0,v0,0xff
  4ba230:	8f83804c 	lw	v1,-32692(gp)
  4ba234:	00000000 	nop
  4ba238:	24635890 	addiu	v1,v1,22672
  4ba23c:	00621821 	addu	v1,v1,v0
  4ba240:	8fc2003c 	lw	v0,60(s8)
  4ba244:	00000000 	nop
  4ba248:	24420013 	addiu	v0,v0,19
  4ba24c:	90630000 	lbu	v1,0(v1)
  4ba250:	90420000 	lbu	v0,0(v0)
  4ba254:	00000000 	nop
  4ba258:	00621026 	xor	v0,v1,v0
  4ba25c:	304200ff 	andi	v0,v0,0xff
  4ba260:	8f83804c 	lw	v1,-32692(gp)
  4ba264:	00000000 	nop
  4ba268:	24635990 	addiu	v1,v1,22928
  4ba26c:	00621821 	addu	v1,v1,v0
  4ba270:	8fc2003c 	lw	v0,60(s8)
  4ba274:	00000000 	nop
  4ba278:	2442000b 	addiu	v0,v0,11
  4ba27c:	90630000 	lbu	v1,0(v1)
  4ba280:	90420000 	lbu	v0,0(v0)
  4ba284:	00000000 	nop
  4ba288:	00621026 	xor	v0,v1,v0
  4ba28c:	304200ff 	andi	v0,v0,0xff
  4ba290:	8f83804c 	lw	v1,-32692(gp)
  4ba294:	00000000 	nop
  4ba298:	24635990 	addiu	v1,v1,22928
  4ba29c:	00621821 	addu	v1,v1,v0
  4ba2a0:	8fc2003c 	lw	v0,60(s8)
  4ba2a4:	00000000 	nop
  4ba2a8:	24420003 	addiu	v0,v0,3
  4ba2ac:	90630000 	lbu	v1,0(v1)
  4ba2b0:	90420000 	lbu	v0,0(v0)
  4ba2b4:	00000000 	nop
  4ba2b8:	00621026 	xor	v0,v1,v0
  4ba2bc:	304200ff 	andi	v0,v0,0xff
  4ba2c0:	00021080 	sll	v0,v0,0x2
  4ba2c4:	24420c00 	addiu	v0,v0,3072
  4ba2c8:	8f81804c 	lw	at,-32692(gp)
  4ba2cc:	00000000 	nop
  4ba2d0:	24215a90 	addiu	at,at,23184
  4ba2d4:	00221021 	addu	v0,at,v0
  4ba2d8:	8c420000 	lw	v0,0(v0)
  4ba2dc:	00000000 	nop
  4ba2e0:	00821026 	xor	v0,a0,v0
  4ba2e4:	afc20014 	sw	v0,20(s8)
  4ba2e8:	8fc2003c 	lw	v0,60(s8)
  4ba2ec:	00000000 	nop
  4ba2f0:	2442001c 	addiu	v0,v0,28
  4ba2f4:	90420000 	lbu	v0,0(v0)
  4ba2f8:	00000000 	nop
  4ba2fc:	3842007d 	xori	v0,v0,0x7d
  4ba300:	304200ff 	andi	v0,v0,0xff
  4ba304:	8f83804c 	lw	v1,-32692(gp)
  4ba308:	00000000 	nop
  4ba30c:	24635990 	addiu	v1,v1,22928
  4ba310:	00621821 	addu	v1,v1,v0
  4ba314:	8fc2003c 	lw	v0,60(s8)
  4ba318:	00000000 	nop
  4ba31c:	24420014 	addiu	v0,v0,20
  4ba320:	90630000 	lbu	v1,0(v1)
  4ba324:	90420000 	lbu	v0,0(v0)
  4ba328:	00000000 	nop
  4ba32c:	00621026 	xor	v0,v1,v0
  4ba330:	304200ff 	andi	v0,v0,0xff
  4ba334:	8f83804c 	lw	v1,-32692(gp)
  4ba338:	00000000 	nop
  4ba33c:	24635890 	addiu	v1,v1,22672
  4ba340:	00621821 	addu	v1,v1,v0
  4ba344:	8fc2003c 	lw	v0,60(s8)
  4ba348:	00000000 	nop
  4ba34c:	2442000c 	addiu	v0,v0,12
  4ba350:	90630000 	lbu	v1,0(v1)
  4ba354:	90420000 	lbu	v0,0(v0)
  4ba358:	00000000 	nop
  4ba35c:	00621026 	xor	v0,v1,v0
  4ba360:	304200ff 	andi	v0,v0,0xff
  4ba364:	8f83804c 	lw	v1,-32692(gp)
  4ba368:	00000000 	nop
  4ba36c:	24635890 	addiu	v1,v1,22672
  4ba370:	00621821 	addu	v1,v1,v0
  4ba374:	8fc2003c 	lw	v0,60(s8)
  4ba378:	00000000 	nop
  4ba37c:	24420004 	addiu	v0,v0,4
  4ba380:	90630000 	lbu	v1,0(v1)
  4ba384:	90420000 	lbu	v0,0(v0)
  4ba388:	00000000 	nop
  4ba38c:	00621026 	xor	v0,v1,v0
  4ba390:	304200ff 	andi	v0,v0,0xff
  4ba394:	00021080 	sll	v0,v0,0x2
  4ba398:	8f84804c 	lw	a0,-32692(gp)
  4ba39c:	00000000 	nop
  4ba3a0:	24845a90 	addiu	a0,a0,23184
  4ba3a4:	00822021 	addu	a0,a0,v0
  4ba3a8:	8fc2003c 	lw	v0,60(s8)
  4ba3ac:	00000000 	nop
  4ba3b0:	2442001d 	addiu	v0,v0,29
  4ba3b4:	90420000 	lbu	v0,0(v0)
  4ba3b8:	00000000 	nop
  4ba3bc:	384200dd 	xori	v0,v0,0xdd
  4ba3c0:	304200ff 	andi	v0,v0,0xff
  4ba3c4:	8f83804c 	lw	v1,-32692(gp)
  4ba3c8:	00000000 	nop
  4ba3cc:	24635990 	addiu	v1,v1,22928
  4ba3d0:	00621821 	addu	v1,v1,v0
  4ba3d4:	8fc2003c 	lw	v0,60(s8)
  4ba3d8:	00000000 	nop
  4ba3dc:	24420015 	addiu	v0,v0,21
  4ba3e0:	90630000 	lbu	v1,0(v1)
  4ba3e4:	90420000 	lbu	v0,0(v0)
  4ba3e8:	00000000 	nop
  4ba3ec:	00621026 	xor	v0,v1,v0
  4ba3f0:	304200ff 	andi	v0,v0,0xff
  4ba3f4:	8f83804c 	lw	v1,-32692(gp)
  4ba3f8:	00000000 	nop
  4ba3fc:	24635990 	addiu	v1,v1,22928
  4ba400:	00621821 	addu	v1,v1,v0
  4ba404:	8fc2003c 	lw	v0,60(s8)
  4ba408:	00000000 	nop
  4ba40c:	2442000d 	addiu	v0,v0,13
  4ba410:	90630000 	lbu	v1,0(v1)
  4ba414:	90420000 	lbu	v0,0(v0)
  4ba418:	00000000 	nop
  4ba41c:	00621026 	xor	v0,v1,v0
  4ba420:	304200ff 	andi	v0,v0,0xff
  4ba424:	8f83804c 	lw	v1,-32692(gp)
  4ba428:	00000000 	nop
  4ba42c:	24635890 	addiu	v1,v1,22672
  4ba430:	00621821 	addu	v1,v1,v0
  4ba434:	8fc2003c 	lw	v0,60(s8)
  4ba438:	00000000 	nop
  4ba43c:	24420005 	addiu	v0,v0,5
  4ba440:	90630000 	lbu	v1,0(v1)
  4ba444:	90420000 	lbu	v0,0(v0)
  4ba448:	00000000 	nop
  4ba44c:	00621026 	xor	v0,v1,v0
  4ba450:	304200ff 	andi	v0,v0,0xff
  4ba454:	00021080 	sll	v0,v0,0x2
  4ba458:	24420400 	addiu	v0,v0,1024
  4ba45c:	8f81804c 	lw	at,-32692(gp)
  4ba460:	00000000 	nop
  4ba464:	24215a90 	addiu	at,at,23184
  4ba468:	00221021 	addu	v0,at,v0
  4ba46c:	8c830000 	lw	v1,0(a0)
  4ba470:	8c420000 	lw	v0,0(v0)
  4ba474:	00000000 	nop
  4ba478:	00622026 	xor	a0,v1,v0
  4ba47c:	8fc2003c 	lw	v0,60(s8)
  4ba480:	00000000 	nop
  4ba484:	2442001e 	addiu	v0,v0,30
  4ba488:	90420000 	lbu	v0,0(v0)
  4ba48c:	00000000 	nop
  4ba490:	384200dd 	xori	v0,v0,0xdd
  4ba494:	304200ff 	andi	v0,v0,0xff
  4ba498:	8f83804c 	lw	v1,-32692(gp)
  4ba49c:	00000000 	nop
  4ba4a0:	24635890 	addiu	v1,v1,22672
  4ba4a4:	00621821 	addu	v1,v1,v0
  4ba4a8:	8fc2003c 	lw	v0,60(s8)
  4ba4ac:	00000000 	nop
  4ba4b0:	24420016 	addiu	v0,v0,22
  4ba4b4:	90630000 	lbu	v1,0(v1)
  4ba4b8:	90420000 	lbu	v0,0(v0)
  4ba4bc:	00000000 	nop
  4ba4c0:	00621026 	xor	v0,v1,v0
  4ba4c4:	304200ff 	andi	v0,v0,0xff
  4ba4c8:	8f83804c 	lw	v1,-32692(gp)
  4ba4cc:	00000000 	nop
  4ba4d0:	24635890 	addiu	v1,v1,22672
  4ba4d4:	00621821 	addu	v1,v1,v0
  4ba4d8:	8fc2003c 	lw	v0,60(s8)
  4ba4dc:	00000000 	nop
  4ba4e0:	2442000e 	addiu	v0,v0,14
  4ba4e4:	90630000 	lbu	v1,0(v1)
  4ba4e8:	90420000 	lbu	v0,0(v0)
  4ba4ec:	00000000 	nop
  4ba4f0:	00621026 	xor	v0,v1,v0
  4ba4f4:	304200ff 	andi	v0,v0,0xff
  4ba4f8:	8f83804c 	lw	v1,-32692(gp)
  4ba4fc:	00000000 	nop
  4ba500:	24635990 	addiu	v1,v1,22928
  4ba504:	00621821 	addu	v1,v1,v0
  4ba508:	8fc2003c 	lw	v0,60(s8)
  4ba50c:	00000000 	nop
  4ba510:	24420006 	addiu	v0,v0,6
  4ba514:	90630000 	lbu	v1,0(v1)
  4ba518:	90420000 	lbu	v0,0(v0)
  4ba51c:	00000000 	nop
  4ba520:	00621026 	xor	v0,v1,v0
  4ba524:	304200ff 	andi	v0,v0,0xff
  4ba528:	00021080 	sll	v0,v0,0x2
  4ba52c:	24420800 	addiu	v0,v0,2048
  4ba530:	8f81804c 	lw	at,-32692(gp)
  4ba534:	00000000 	nop
  4ba538:	24215a90 	addiu	at,at,23184
  4ba53c:	00221021 	addu	v0,at,v0
  4ba540:	8c420000 	lw	v0,0(v0)
  4ba544:	00000000 	nop
  4ba548:	00822026 	xor	a0,a0,v0
  4ba54c:	8fc2003c 	lw	v0,60(s8)
  4ba550:	00000000 	nop
  4ba554:	2442001f 	addiu	v0,v0,31
  4ba558:	90420000 	lbu	v0,0(v0)
  4ba55c:	00000000 	nop
  4ba560:	3842007d 	xori	v0,v0,0x7d
  4ba564:	304200ff 	andi	v0,v0,0xff
  4ba568:	8f83804c 	lw	v1,-32692(gp)
  4ba56c:	00000000 	nop
  4ba570:	24635890 	addiu	v1,v1,22672
  4ba574:	00621821 	addu	v1,v1,v0
  4ba578:	8fc2003c 	lw	v0,60(s8)
  4ba57c:	00000000 	nop
  4ba580:	24420017 	addiu	v0,v0,23
  4ba584:	90630000 	lbu	v1,0(v1)
  4ba588:	90420000 	lbu	v0,0(v0)
  4ba58c:	00000000 	nop
  4ba590:	00621026 	xor	v0,v1,v0
  4ba594:	304200ff 	andi	v0,v0,0xff
  4ba598:	8f83804c 	lw	v1,-32692(gp)
  4ba59c:	00000000 	nop
  4ba5a0:	24635990 	addiu	v1,v1,22928
  4ba5a4:	00621821 	addu	v1,v1,v0
  4ba5a8:	8fc2003c 	lw	v0,60(s8)
  4ba5ac:	00000000 	nop
  4ba5b0:	2442000f 	addiu	v0,v0,15
  4ba5b4:	90630000 	lbu	v1,0(v1)
  4ba5b8:	90420000 	lbu	v0,0(v0)
  4ba5bc:	00000000 	nop
  4ba5c0:	00621026 	xor	v0,v1,v0
  4ba5c4:	304200ff 	andi	v0,v0,0xff
  4ba5c8:	8f83804c 	lw	v1,-32692(gp)
  4ba5cc:	00000000 	nop
  4ba5d0:	24635990 	addiu	v1,v1,22928
  4ba5d4:	00621821 	addu	v1,v1,v0
  4ba5d8:	8fc2003c 	lw	v0,60(s8)
  4ba5dc:	00000000 	nop
  4ba5e0:	24420007 	addiu	v0,v0,7
  4ba5e4:	90630000 	lbu	v1,0(v1)
  4ba5e8:	90420000 	lbu	v0,0(v0)
  4ba5ec:	00000000 	nop
  4ba5f0:	00621026 	xor	v0,v1,v0
  4ba5f4:	304200ff 	andi	v0,v0,0xff
  4ba5f8:	00021080 	sll	v0,v0,0x2
  4ba5fc:	24420c00 	addiu	v0,v0,3072
  4ba600:	8f81804c 	lw	at,-32692(gp)
  4ba604:	00000000 	nop
  4ba608:	24215a90 	addiu	at,at,23184
  4ba60c:	00221021 	addu	v0,at,v0
  4ba610:	8c420000 	lw	v0,0(v0)
  4ba614:	00000000 	nop
  4ba618:	00821026 	xor	v0,a0,v0
  4ba61c:	afc20018 	sw	v0,24(s8)
  4ba620:	8fc20018 	lw	v0,24(s8)
  4ba624:	00000000 	nop
  4ba628:	00021a00 	sll	v1,v0,0x8
  4ba62c:	00021602 	srl	v0,v0,0x18
  4ba630:	00621025 	or	v0,v1,v0
  4ba634:	afc20018 	sw	v0,24(s8)
  4ba638:	8fc30014 	lw	v1,20(s8)
  4ba63c:	8fc20018 	lw	v0,24(s8)
  4ba640:	00000000 	nop
  4ba644:	00621021 	addu	v0,v1,v0
  4ba648:	afc20014 	sw	v0,20(s8)
  4ba64c:	8fc30018 	lw	v1,24(s8)
  4ba650:	8fc20014 	lw	v0,20(s8)
  4ba654:	00000000 	nop
  4ba658:	00621021 	addu	v0,v1,v0
  4ba65c:	afc20018 	sw	v0,24(s8)
  4ba660:	8fc30014 	lw	v1,20(s8)
  4ba664:	8fc20038 	lw	v0,56(s8)
  4ba668:	00000000 	nop
  4ba66c:	ac431030 	sw	v1,4144(v0)
  4ba670:	8fc20018 	lw	v0,24(s8)
  4ba674:	00000000 	nop
  4ba678:	00021a40 	sll	v1,v0,0x9
  4ba67c:	000215c2 	srl	v0,v0,0x17
  4ba680:	00621825 	or	v1,v1,v0
  4ba684:	8fc20038 	lw	v0,56(s8)
  4ba688:	00000000 	nop
  4ba68c:	ac431034 	sw	v1,4148(v0)
		CALC_K256 (k, 6, 0xD1, 0xE8, 0x38, 0x4B);
  4ba690:	8fc2003c 	lw	v0,60(s8)
  4ba694:	00000000 	nop
  4ba698:	24420018 	addiu	v0,v0,24
  4ba69c:	90420000 	lbu	v0,0(v0)
  4ba6a0:	00000000 	nop
  4ba6a4:	384200e8 	xori	v0,v0,0xe8
  4ba6a8:	304200ff 	andi	v0,v0,0xff
  4ba6ac:	8f83804c 	lw	v1,-32692(gp)
  4ba6b0:	00000000 	nop
  4ba6b4:	24635990 	addiu	v1,v1,22928
  4ba6b8:	00621821 	addu	v1,v1,v0
  4ba6bc:	8fc2003c 	lw	v0,60(s8)
  4ba6c0:	00000000 	nop
  4ba6c4:	24420010 	addiu	v0,v0,16
  4ba6c8:	90630000 	lbu	v1,0(v1)
  4ba6cc:	90420000 	lbu	v0,0(v0)
  4ba6d0:	00000000 	nop
  4ba6d4:	00621026 	xor	v0,v1,v0
  4ba6d8:	304200ff 	andi	v0,v0,0xff
  4ba6dc:	8f83804c 	lw	v1,-32692(gp)
  4ba6e0:	00000000 	nop
  4ba6e4:	24635890 	addiu	v1,v1,22672
  4ba6e8:	00621821 	addu	v1,v1,v0
  4ba6ec:	8fc2003c 	lw	v0,60(s8)
  4ba6f0:	00000000 	nop
  4ba6f4:	24420008 	addiu	v0,v0,8
  4ba6f8:	90630000 	lbu	v1,0(v1)
  4ba6fc:	90420000 	lbu	v0,0(v0)
  4ba700:	00000000 	nop
  4ba704:	00621026 	xor	v0,v1,v0
  4ba708:	304200ff 	andi	v0,v0,0xff
  4ba70c:	8f81804c 	lw	at,-32692(gp)
  4ba710:	00000000 	nop
  4ba714:	24215890 	addiu	at,at,22672
  4ba718:	00221021 	addu	v0,at,v0
  4ba71c:	90430000 	lbu	v1,0(v0)
  4ba720:	8fc2003c 	lw	v0,60(s8)
  4ba724:	00000000 	nop
  4ba728:	90420000 	lbu	v0,0(v0)
  4ba72c:	00000000 	nop
  4ba730:	00621026 	xor	v0,v1,v0
  4ba734:	304200ff 	andi	v0,v0,0xff
  4ba738:	00021080 	sll	v0,v0,0x2
  4ba73c:	8f84804c 	lw	a0,-32692(gp)
  4ba740:	00000000 	nop
  4ba744:	24845a90 	addiu	a0,a0,23184
  4ba748:	00822021 	addu	a0,a0,v0
  4ba74c:	8fc2003c 	lw	v0,60(s8)
  4ba750:	00000000 	nop
  4ba754:	24420019 	addiu	v0,v0,25
  4ba758:	90420000 	lbu	v0,0(v0)
  4ba75c:	00000000 	nop
  4ba760:	384200d1 	xori	v0,v0,0xd1
  4ba764:	304200ff 	andi	v0,v0,0xff
  4ba768:	8f83804c 	lw	v1,-32692(gp)
  4ba76c:	00000000 	nop
  4ba770:	24635990 	addiu	v1,v1,22928
  4ba774:	00621821 	addu	v1,v1,v0
  4ba778:	8fc2003c 	lw	v0,60(s8)
  4ba77c:	00000000 	nop
  4ba780:	24420011 	addiu	v0,v0,17
  4ba784:	90630000 	lbu	v1,0(v1)
  4ba788:	90420000 	lbu	v0,0(v0)
  4ba78c:	00000000 	nop
  4ba790:	00621026 	xor	v0,v1,v0
  4ba794:	304200ff 	andi	v0,v0,0xff
  4ba798:	8f83804c 	lw	v1,-32692(gp)
  4ba79c:	00000000 	nop
  4ba7a0:	24635990 	addiu	v1,v1,22928
  4ba7a4:	00621821 	addu	v1,v1,v0
  4ba7a8:	8fc2003c 	lw	v0,60(s8)
  4ba7ac:	00000000 	nop
  4ba7b0:	24420009 	addiu	v0,v0,9
  4ba7b4:	90630000 	lbu	v1,0(v1)
  4ba7b8:	90420000 	lbu	v0,0(v0)
  4ba7bc:	00000000 	nop
  4ba7c0:	00621026 	xor	v0,v1,v0
  4ba7c4:	304200ff 	andi	v0,v0,0xff
  4ba7c8:	8f83804c 	lw	v1,-32692(gp)
  4ba7cc:	00000000 	nop
  4ba7d0:	24635890 	addiu	v1,v1,22672
  4ba7d4:	00621821 	addu	v1,v1,v0
  4ba7d8:	8fc2003c 	lw	v0,60(s8)
  4ba7dc:	00000000 	nop
  4ba7e0:	24420001 	addiu	v0,v0,1
  4ba7e4:	90630000 	lbu	v1,0(v1)
  4ba7e8:	90420000 	lbu	v0,0(v0)
  4ba7ec:	00000000 	nop
  4ba7f0:	00621026 	xor	v0,v1,v0
  4ba7f4:	304200ff 	andi	v0,v0,0xff
  4ba7f8:	00021080 	sll	v0,v0,0x2
  4ba7fc:	24420400 	addiu	v0,v0,1024
  4ba800:	8f81804c 	lw	at,-32692(gp)
  4ba804:	00000000 	nop
  4ba808:	24215a90 	addiu	at,at,23184
  4ba80c:	00221021 	addu	v0,at,v0
  4ba810:	8c830000 	lw	v1,0(a0)
  4ba814:	8c420000 	lw	v0,0(v0)
  4ba818:	00000000 	nop
  4ba81c:	00622026 	xor	a0,v1,v0
  4ba820:	8fc2003c 	lw	v0,60(s8)
  4ba824:	00000000 	nop
  4ba828:	2442001a 	addiu	v0,v0,26
  4ba82c:	90420000 	lbu	v0,0(v0)
  4ba830:	00000000 	nop
  4ba834:	384200d1 	xori	v0,v0,0xd1
  4ba838:	304200ff 	andi	v0,v0,0xff
  4ba83c:	8f83804c 	lw	v1,-32692(gp)
  4ba840:	00000000 	nop
  4ba844:	24635890 	addiu	v1,v1,22672
  4ba848:	00621821 	addu	v1,v1,v0
  4ba84c:	8fc2003c 	lw	v0,60(s8)
  4ba850:	00000000 	nop
  4ba854:	24420012 	addiu	v0,v0,18
  4ba858:	90630000 	lbu	v1,0(v1)
  4ba85c:	90420000 	lbu	v0,0(v0)
  4ba860:	00000000 	nop
  4ba864:	00621026 	xor	v0,v1,v0
  4ba868:	304200ff 	andi	v0,v0,0xff
  4ba86c:	8f83804c 	lw	v1,-32692(gp)
  4ba870:	00000000 	nop
  4ba874:	24635890 	addiu	v1,v1,22672
  4ba878:	00621821 	addu	v1,v1,v0
  4ba87c:	8fc2003c 	lw	v0,60(s8)
  4ba880:	00000000 	nop
  4ba884:	2442000a 	addiu	v0,v0,10
  4ba888:	90630000 	lbu	v1,0(v1)
  4ba88c:	90420000 	lbu	v0,0(v0)
  4ba890:	00000000 	nop
  4ba894:	00621026 	xor	v0,v1,v0
  4ba898:	304200ff 	andi	v0,v0,0xff
  4ba89c:	8f83804c 	lw	v1,-32692(gp)
  4ba8a0:	00000000 	nop
  4ba8a4:	24635990 	addiu	v1,v1,22928
  4ba8a8:	00621821 	addu	v1,v1,v0
  4ba8ac:	8fc2003c 	lw	v0,60(s8)
  4ba8b0:	00000000 	nop
  4ba8b4:	24420002 	addiu	v0,v0,2
  4ba8b8:	90630000 	lbu	v1,0(v1)
  4ba8bc:	90420000 	lbu	v0,0(v0)
  4ba8c0:	00000000 	nop
  4ba8c4:	00621026 	xor	v0,v1,v0
  4ba8c8:	304200ff 	andi	v0,v0,0xff
  4ba8cc:	00021080 	sll	v0,v0,0x2
  4ba8d0:	24420800 	addiu	v0,v0,2048
  4ba8d4:	8f81804c 	lw	at,-32692(gp)
  4ba8d8:	00000000 	nop
  4ba8dc:	24215a90 	addiu	at,at,23184
  4ba8e0:	00221021 	addu	v0,at,v0
  4ba8e4:	8c420000 	lw	v0,0(v0)
  4ba8e8:	00000000 	nop
  4ba8ec:	00822026 	xor	a0,a0,v0
  4ba8f0:	8fc2003c 	lw	v0,60(s8)
  4ba8f4:	00000000 	nop
  4ba8f8:	2442001b 	addiu	v0,v0,27
  4ba8fc:	90420000 	lbu	v0,0(v0)
  4ba900:	00000000 	nop
  4ba904:	384200e8 	xori	v0,v0,0xe8
  4ba908:	304200ff 	andi	v0,v0,0xff
  4ba90c:	8f83804c 	lw	v1,-32692(gp)
  4ba910:	00000000 	nop
  4ba914:	24635890 	addiu	v1,v1,22672
  4ba918:	00621821 	addu	v1,v1,v0
  4ba91c:	8fc2003c 	lw	v0,60(s8)
  4ba920:	00000000 	nop
  4ba924:	24420013 	addiu	v0,v0,19
  4ba928:	90630000 	lbu	v1,0(v1)
  4ba92c:	90420000 	lbu	v0,0(v0)
  4ba930:	00000000 	nop
  4ba934:	00621026 	xor	v0,v1,v0
  4ba938:	304200ff 	andi	v0,v0,0xff
  4ba93c:	8f83804c 	lw	v1,-32692(gp)
  4ba940:	00000000 	nop
  4ba944:	24635990 	addiu	v1,v1,22928
  4ba948:	00621821 	addu	v1,v1,v0
  4ba94c:	8fc2003c 	lw	v0,60(s8)
  4ba950:	00000000 	nop
  4ba954:	2442000b 	addiu	v0,v0,11
  4ba958:	90630000 	lbu	v1,0(v1)
  4ba95c:	90420000 	lbu	v0,0(v0)
  4ba960:	00000000 	nop
  4ba964:	00621026 	xor	v0,v1,v0
  4ba968:	304200ff 	andi	v0,v0,0xff
  4ba96c:	8f83804c 	lw	v1,-32692(gp)
  4ba970:	00000000 	nop
  4ba974:	24635990 	addiu	v1,v1,22928
  4ba978:	00621821 	addu	v1,v1,v0
  4ba97c:	8fc2003c 	lw	v0,60(s8)
  4ba980:	00000000 	nop
  4ba984:	24420003 	addiu	v0,v0,3
  4ba988:	90630000 	lbu	v1,0(v1)
  4ba98c:	90420000 	lbu	v0,0(v0)
  4ba990:	00000000 	nop
  4ba994:	00621026 	xor	v0,v1,v0
  4ba998:	304200ff 	andi	v0,v0,0xff
  4ba99c:	00021080 	sll	v0,v0,0x2
  4ba9a0:	24420c00 	addiu	v0,v0,3072
  4ba9a4:	8f81804c 	lw	at,-32692(gp)
  4ba9a8:	00000000 	nop
  4ba9ac:	24215a90 	addiu	at,at,23184
  4ba9b0:	00221021 	addu	v0,at,v0
  4ba9b4:	8c420000 	lw	v0,0(v0)
  4ba9b8:	00000000 	nop
  4ba9bc:	00821026 	xor	v0,a0,v0
  4ba9c0:	afc20014 	sw	v0,20(s8)
  4ba9c4:	8fc2003c 	lw	v0,60(s8)
  4ba9c8:	00000000 	nop
  4ba9cc:	2442001c 	addiu	v0,v0,28
  4ba9d0:	90420000 	lbu	v0,0(v0)
  4ba9d4:	00000000 	nop
  4ba9d8:	3842004b 	xori	v0,v0,0x4b
  4ba9dc:	304200ff 	andi	v0,v0,0xff
  4ba9e0:	8f83804c 	lw	v1,-32692(gp)
  4ba9e4:	00000000 	nop
  4ba9e8:	24635990 	addiu	v1,v1,22928
  4ba9ec:	00621821 	addu	v1,v1,v0
  4ba9f0:	8fc2003c 	lw	v0,60(s8)
  4ba9f4:	00000000 	nop
  4ba9f8:	24420014 	addiu	v0,v0,20
  4ba9fc:	90630000 	lbu	v1,0(v1)
  4baa00:	90420000 	lbu	v0,0(v0)
  4baa04:	00000000 	nop
  4baa08:	00621026 	xor	v0,v1,v0
  4baa0c:	304200ff 	andi	v0,v0,0xff
  4baa10:	8f83804c 	lw	v1,-32692(gp)
  4baa14:	00000000 	nop
  4baa18:	24635890 	addiu	v1,v1,22672
  4baa1c:	00621821 	addu	v1,v1,v0
  4baa20:	8fc2003c 	lw	v0,60(s8)
  4baa24:	00000000 	nop
  4baa28:	2442000c 	addiu	v0,v0,12
  4baa2c:	90630000 	lbu	v1,0(v1)
  4baa30:	90420000 	lbu	v0,0(v0)
  4baa34:	00000000 	nop
  4baa38:	00621026 	xor	v0,v1,v0
  4baa3c:	304200ff 	andi	v0,v0,0xff
  4baa40:	8f83804c 	lw	v1,-32692(gp)
  4baa44:	00000000 	nop
  4baa48:	24635890 	addiu	v1,v1,22672
  4baa4c:	00621821 	addu	v1,v1,v0
  4baa50:	8fc2003c 	lw	v0,60(s8)
  4baa54:	00000000 	nop
  4baa58:	24420004 	addiu	v0,v0,4
  4baa5c:	90630000 	lbu	v1,0(v1)
  4baa60:	90420000 	lbu	v0,0(v0)
  4baa64:	00000000 	nop
  4baa68:	00621026 	xor	v0,v1,v0
  4baa6c:	304200ff 	andi	v0,v0,0xff
  4baa70:	00021080 	sll	v0,v0,0x2
  4baa74:	8f84804c 	lw	a0,-32692(gp)
  4baa78:	00000000 	nop
  4baa7c:	24845a90 	addiu	a0,a0,23184
  4baa80:	00822021 	addu	a0,a0,v0
  4baa84:	8fc2003c 	lw	v0,60(s8)
  4baa88:	00000000 	nop
  4baa8c:	2442001d 	addiu	v0,v0,29
  4baa90:	90420000 	lbu	v0,0(v0)
  4baa94:	00000000 	nop
  4baa98:	38420038 	xori	v0,v0,0x38
  4baa9c:	304200ff 	andi	v0,v0,0xff
  4baaa0:	8f83804c 	lw	v1,-32692(gp)
  4baaa4:	00000000 	nop
  4baaa8:	24635990 	addiu	v1,v1,22928
  4baaac:	00621821 	addu	v1,v1,v0
  4baab0:	8fc2003c 	lw	v0,60(s8)
  4baab4:	00000000 	nop
  4baab8:	24420015 	addiu	v0,v0,21
  4baabc:	90630000 	lbu	v1,0(v1)
  4baac0:	90420000 	lbu	v0,0(v0)
  4baac4:	00000000 	nop
  4baac8:	00621026 	xor	v0,v1,v0
  4baacc:	304200ff 	andi	v0,v0,0xff
  4baad0:	8f83804c 	lw	v1,-32692(gp)
  4baad4:	00000000 	nop
  4baad8:	24635990 	addiu	v1,v1,22928
  4baadc:	00621821 	addu	v1,v1,v0
  4baae0:	8fc2003c 	lw	v0,60(s8)
  4baae4:	00000000 	nop
  4baae8:	2442000d 	addiu	v0,v0,13
  4baaec:	90630000 	lbu	v1,0(v1)
  4baaf0:	90420000 	lbu	v0,0(v0)
  4baaf4:	00000000 	nop
  4baaf8:	00621026 	xor	v0,v1,v0
  4baafc:	304200ff 	andi	v0,v0,0xff
  4bab00:	8f83804c 	lw	v1,-32692(gp)
  4bab04:	00000000 	nop
  4bab08:	24635890 	addiu	v1,v1,22672
  4bab0c:	00621821 	addu	v1,v1,v0
  4bab10:	8fc2003c 	lw	v0,60(s8)
  4bab14:	00000000 	nop
  4bab18:	24420005 	addiu	v0,v0,5
  4bab1c:	90630000 	lbu	v1,0(v1)
  4bab20:	90420000 	lbu	v0,0(v0)
  4bab24:	00000000 	nop
  4bab28:	00621026 	xor	v0,v1,v0
  4bab2c:	304200ff 	andi	v0,v0,0xff
  4bab30:	00021080 	sll	v0,v0,0x2
  4bab34:	24420400 	addiu	v0,v0,1024
  4bab38:	8f81804c 	lw	at,-32692(gp)
  4bab3c:	00000000 	nop
  4bab40:	24215a90 	addiu	at,at,23184
  4bab44:	00221021 	addu	v0,at,v0
  4bab48:	8c830000 	lw	v1,0(a0)
  4bab4c:	8c420000 	lw	v0,0(v0)
  4bab50:	00000000 	nop
  4bab54:	00622026 	xor	a0,v1,v0
  4bab58:	8fc2003c 	lw	v0,60(s8)
  4bab5c:	00000000 	nop
  4bab60:	2442001e 	addiu	v0,v0,30
  4bab64:	90420000 	lbu	v0,0(v0)
  4bab68:	00000000 	nop
  4bab6c:	38420038 	xori	v0,v0,0x38
  4bab70:	304200ff 	andi	v0,v0,0xff
  4bab74:	8f83804c 	lw	v1,-32692(gp)
  4bab78:	00000000 	nop
  4bab7c:	24635890 	addiu	v1,v1,22672
  4bab80:	00621821 	addu	v1,v1,v0
  4bab84:	8fc2003c 	lw	v0,60(s8)
  4bab88:	00000000 	nop
  4bab8c:	24420016 	addiu	v0,v0,22
  4bab90:	90630000 	lbu	v1,0(v1)
  4bab94:	90420000 	lbu	v0,0(v0)
  4bab98:	00000000 	nop
  4bab9c:	00621026 	xor	v0,v1,v0
  4baba0:	304200ff 	andi	v0,v0,0xff
  4baba4:	8f83804c 	lw	v1,-32692(gp)
  4baba8:	00000000 	nop
  4babac:	24635890 	addiu	v1,v1,22672
  4babb0:	00621821 	addu	v1,v1,v0
  4babb4:	8fc2003c 	lw	v0,60(s8)
  4babb8:	00000000 	nop
  4babbc:	2442000e 	addiu	v0,v0,14
  4babc0:	90630000 	lbu	v1,0(v1)
  4babc4:	90420000 	lbu	v0,0(v0)
  4babc8:	00000000 	nop
  4babcc:	00621026 	xor	v0,v1,v0
  4babd0:	304200ff 	andi	v0,v0,0xff
  4babd4:	8f83804c 	lw	v1,-32692(gp)
  4babd8:	00000000 	nop
  4babdc:	24635990 	addiu	v1,v1,22928
  4babe0:	00621821 	addu	v1,v1,v0
  4babe4:	8fc2003c 	lw	v0,60(s8)
  4babe8:	00000000 	nop
  4babec:	24420006 	addiu	v0,v0,6
  4babf0:	90630000 	lbu	v1,0(v1)
  4babf4:	90420000 	lbu	v0,0(v0)
  4babf8:	00000000 	nop
  4babfc:	00621026 	xor	v0,v1,v0
  4bac00:	304200ff 	andi	v0,v0,0xff
  4bac04:	00021080 	sll	v0,v0,0x2
  4bac08:	24420800 	addiu	v0,v0,2048
  4bac0c:	8f81804c 	lw	at,-32692(gp)
  4bac10:	00000000 	nop
  4bac14:	24215a90 	addiu	at,at,23184
  4bac18:	00221021 	addu	v0,at,v0
  4bac1c:	8c420000 	lw	v0,0(v0)
  4bac20:	00000000 	nop
  4bac24:	00822026 	xor	a0,a0,v0
  4bac28:	8fc2003c 	lw	v0,60(s8)
  4bac2c:	00000000 	nop
  4bac30:	2442001f 	addiu	v0,v0,31
  4bac34:	90420000 	lbu	v0,0(v0)
  4bac38:	00000000 	nop
  4bac3c:	3842004b 	xori	v0,v0,0x4b
  4bac40:	304200ff 	andi	v0,v0,0xff
  4bac44:	8f83804c 	lw	v1,-32692(gp)
  4bac48:	00000000 	nop
  4bac4c:	24635890 	addiu	v1,v1,22672
  4bac50:	00621821 	addu	v1,v1,v0
  4bac54:	8fc2003c 	lw	v0,60(s8)
  4bac58:	00000000 	nop
  4bac5c:	24420017 	addiu	v0,v0,23
  4bac60:	90630000 	lbu	v1,0(v1)
  4bac64:	90420000 	lbu	v0,0(v0)
  4bac68:	00000000 	nop
  4bac6c:	00621026 	xor	v0,v1,v0
  4bac70:	304200ff 	andi	v0,v0,0xff
  4bac74:	8f83804c 	lw	v1,-32692(gp)
  4bac78:	00000000 	nop
  4bac7c:	24635990 	addiu	v1,v1,22928
  4bac80:	00621821 	addu	v1,v1,v0
  4bac84:	8fc2003c 	lw	v0,60(s8)
  4bac88:	00000000 	nop
  4bac8c:	2442000f 	addiu	v0,v0,15
  4bac90:	90630000 	lbu	v1,0(v1)
  4bac94:	90420000 	lbu	v0,0(v0)
  4bac98:	00000000 	nop
  4bac9c:	00621026 	xor	v0,v1,v0
  4baca0:	304200ff 	andi	v0,v0,0xff
  4baca4:	8f83804c 	lw	v1,-32692(gp)
  4baca8:	00000000 	nop
  4bacac:	24635990 	addiu	v1,v1,22928
  4bacb0:	00621821 	addu	v1,v1,v0
  4bacb4:	8fc2003c 	lw	v0,60(s8)
  4bacb8:	00000000 	nop
  4bacbc:	24420007 	addiu	v0,v0,7
  4bacc0:	90630000 	lbu	v1,0(v1)
  4bacc4:	90420000 	lbu	v0,0(v0)
  4bacc8:	00000000 	nop
  4baccc:	00621026 	xor	v0,v1,v0
  4bacd0:	304200ff 	andi	v0,v0,0xff
  4bacd4:	00021080 	sll	v0,v0,0x2
  4bacd8:	24420c00 	addiu	v0,v0,3072
  4bacdc:	8f81804c 	lw	at,-32692(gp)
  4bace0:	00000000 	nop
  4bace4:	24215a90 	addiu	at,at,23184
  4bace8:	00221021 	addu	v0,at,v0
  4bacec:	8c420000 	lw	v0,0(v0)
  4bacf0:	00000000 	nop
  4bacf4:	00821026 	xor	v0,a0,v0
  4bacf8:	afc20018 	sw	v0,24(s8)
  4bacfc:	8fc20018 	lw	v0,24(s8)
  4bad00:	00000000 	nop
  4bad04:	00021a00 	sll	v1,v0,0x8
  4bad08:	00021602 	srl	v0,v0,0x18
  4bad0c:	00621025 	or	v0,v1,v0
  4bad10:	afc20018 	sw	v0,24(s8)
  4bad14:	8fc30014 	lw	v1,20(s8)
  4bad18:	8fc20018 	lw	v0,24(s8)
  4bad1c:	00000000 	nop
  4bad20:	00621021 	addu	v0,v1,v0
  4bad24:	afc20014 	sw	v0,20(s8)
  4bad28:	8fc30018 	lw	v1,24(s8)
  4bad2c:	8fc20014 	lw	v0,20(s8)
  4bad30:	00000000 	nop
  4bad34:	00621021 	addu	v0,v1,v0
  4bad38:	afc20018 	sw	v0,24(s8)
  4bad3c:	8fc30014 	lw	v1,20(s8)
  4bad40:	8fc20038 	lw	v0,56(s8)
  4bad44:	00000000 	nop
  4bad48:	ac431038 	sw	v1,4152(v0)
  4bad4c:	8fc20018 	lw	v0,24(s8)
  4bad50:	00000000 	nop
  4bad54:	00021a40 	sll	v1,v0,0x9
  4bad58:	000215c2 	srl	v0,v0,0x17
  4bad5c:	00621825 	or	v1,v1,v0
  4bad60:	8fc20038 	lw	v0,56(s8)
  4bad64:	00000000 	nop
  4bad68:	ac43103c 	sw	v1,4156(v0)
		CALC_K256 (k, 8, 0x0D, 0xD6, 0xC6, 0x32);
  4bad6c:	8fc2003c 	lw	v0,60(s8)
  4bad70:	00000000 	nop
  4bad74:	24420018 	addiu	v0,v0,24
  4bad78:	90420000 	lbu	v0,0(v0)
  4bad7c:	00000000 	nop
  4bad80:	384200d6 	xori	v0,v0,0xd6
  4bad84:	304200ff 	andi	v0,v0,0xff
  4bad88:	8f83804c 	lw	v1,-32692(gp)
  4bad8c:	00000000 	nop
  4bad90:	24635990 	addiu	v1,v1,22928
  4bad94:	00621821 	addu	v1,v1,v0
  4bad98:	8fc2003c 	lw	v0,60(s8)
  4bad9c:	00000000 	nop
  4bada0:	24420010 	addiu	v0,v0,16
  4bada4:	90630000 	lbu	v1,0(v1)
  4bada8:	90420000 	lbu	v0,0(v0)
  4badac:	00000000 	nop
  4badb0:	00621026 	xor	v0,v1,v0
  4badb4:	304200ff 	andi	v0,v0,0xff
  4badb8:	8f83804c 	lw	v1,-32692(gp)
  4badbc:	00000000 	nop
  4badc0:	24635890 	addiu	v1,v1,22672
  4badc4:	00621821 	addu	v1,v1,v0
  4badc8:	8fc2003c 	lw	v0,60(s8)
  4badcc:	00000000 	nop
  4badd0:	24420008 	addiu	v0,v0,8
  4badd4:	90630000 	lbu	v1,0(v1)
  4badd8:	90420000 	lbu	v0,0(v0)
  4baddc:	00000000 	nop
  4bade0:	00621026 	xor	v0,v1,v0
  4bade4:	304200ff 	andi	v0,v0,0xff
  4bade8:	8f81804c 	lw	at,-32692(gp)
  4badec:	00000000 	nop
  4badf0:	24215890 	addiu	at,at,22672
  4badf4:	00221021 	addu	v0,at,v0
  4badf8:	90430000 	lbu	v1,0(v0)
  4badfc:	8fc2003c 	lw	v0,60(s8)
  4bae00:	00000000 	nop
  4bae04:	90420000 	lbu	v0,0(v0)
  4bae08:	00000000 	nop
  4bae0c:	00621026 	xor	v0,v1,v0
  4bae10:	304200ff 	andi	v0,v0,0xff
  4bae14:	00021080 	sll	v0,v0,0x2
  4bae18:	8f84804c 	lw	a0,-32692(gp)
  4bae1c:	00000000 	nop
  4bae20:	24845a90 	addiu	a0,a0,23184
  4bae24:	00822021 	addu	a0,a0,v0
  4bae28:	8fc2003c 	lw	v0,60(s8)
  4bae2c:	00000000 	nop
  4bae30:	24420019 	addiu	v0,v0,25
  4bae34:	90420000 	lbu	v0,0(v0)
  4bae38:	00000000 	nop
  4bae3c:	3842000d 	xori	v0,v0,0xd
  4bae40:	304200ff 	andi	v0,v0,0xff
  4bae44:	8f83804c 	lw	v1,-32692(gp)
  4bae48:	00000000 	nop
  4bae4c:	24635990 	addiu	v1,v1,22928
  4bae50:	00621821 	addu	v1,v1,v0
  4bae54:	8fc2003c 	lw	v0,60(s8)
  4bae58:	00000000 	nop
  4bae5c:	24420011 	addiu	v0,v0,17
  4bae60:	90630000 	lbu	v1,0(v1)
  4bae64:	90420000 	lbu	v0,0(v0)
  4bae68:	00000000 	nop
  4bae6c:	00621026 	xor	v0,v1,v0
  4bae70:	304200ff 	andi	v0,v0,0xff
  4bae74:	8f83804c 	lw	v1,-32692(gp)
  4bae78:	00000000 	nop
  4bae7c:	24635990 	addiu	v1,v1,22928
  4bae80:	00621821 	addu	v1,v1,v0
  4bae84:	8fc2003c 	lw	v0,60(s8)
  4bae88:	00000000 	nop
  4bae8c:	24420009 	addiu	v0,v0,9
  4bae90:	90630000 	lbu	v1,0(v1)
  4bae94:	90420000 	lbu	v0,0(v0)
  4bae98:	00000000 	nop
  4bae9c:	00621026 	xor	v0,v1,v0
  4baea0:	304200ff 	andi	v0,v0,0xff
  4baea4:	8f83804c 	lw	v1,-32692(gp)
  4baea8:	00000000 	nop
  4baeac:	24635890 	addiu	v1,v1,22672
  4baeb0:	00621821 	addu	v1,v1,v0
  4baeb4:	8fc2003c 	lw	v0,60(s8)
  4baeb8:	00000000 	nop
  4baebc:	24420001 	addiu	v0,v0,1
  4baec0:	90630000 	lbu	v1,0(v1)
  4baec4:	90420000 	lbu	v0,0(v0)
  4baec8:	00000000 	nop
  4baecc:	00621026 	xor	v0,v1,v0
  4baed0:	304200ff 	andi	v0,v0,0xff
  4baed4:	00021080 	sll	v0,v0,0x2
  4baed8:	24420400 	addiu	v0,v0,1024
  4baedc:	8f81804c 	lw	at,-32692(gp)
  4baee0:	00000000 	nop
  4baee4:	24215a90 	addiu	at,at,23184
  4baee8:	00221021 	addu	v0,at,v0
  4baeec:	8c830000 	lw	v1,0(a0)
  4baef0:	8c420000 	lw	v0,0(v0)
  4baef4:	00000000 	nop
  4baef8:	00622026 	xor	a0,v1,v0
  4baefc:	8fc2003c 	lw	v0,60(s8)
  4baf00:	00000000 	nop
  4baf04:	2442001a 	addiu	v0,v0,26
  4baf08:	90420000 	lbu	v0,0(v0)
  4baf0c:	00000000 	nop
  4baf10:	3842000d 	xori	v0,v0,0xd
  4baf14:	304200ff 	andi	v0,v0,0xff
  4baf18:	8f83804c 	lw	v1,-32692(gp)
  4baf1c:	00000000 	nop
  4baf20:	24635890 	addiu	v1,v1,22672
  4baf24:	00621821 	addu	v1,v1,v0
  4baf28:	8fc2003c 	lw	v0,60(s8)
  4baf2c:	00000000 	nop
  4baf30:	24420012 	addiu	v0,v0,18
  4baf34:	90630000 	lbu	v1,0(v1)
  4baf38:	90420000 	lbu	v0,0(v0)
  4baf3c:	00000000 	nop
  4baf40:	00621026 	xor	v0,v1,v0
  4baf44:	304200ff 	andi	v0,v0,0xff
  4baf48:	8f83804c 	lw	v1,-32692(gp)
  4baf4c:	00000000 	nop
  4baf50:	24635890 	addiu	v1,v1,22672
  4baf54:	00621821 	addu	v1,v1,v0
  4baf58:	8fc2003c 	lw	v0,60(s8)
  4baf5c:	00000000 	nop
  4baf60:	2442000a 	addiu	v0,v0,10
  4baf64:	90630000 	lbu	v1,0(v1)
  4baf68:	90420000 	lbu	v0,0(v0)
  4baf6c:	00000000 	nop
  4baf70:	00621026 	xor	v0,v1,v0
  4baf74:	304200ff 	andi	v0,v0,0xff
  4baf78:	8f83804c 	lw	v1,-32692(gp)
  4baf7c:	00000000 	nop
  4baf80:	24635990 	addiu	v1,v1,22928
  4baf84:	00621821 	addu	v1,v1,v0
  4baf88:	8fc2003c 	lw	v0,60(s8)
  4baf8c:	00000000 	nop
  4baf90:	24420002 	addiu	v0,v0,2
  4baf94:	90630000 	lbu	v1,0(v1)
  4baf98:	90420000 	lbu	v0,0(v0)
  4baf9c:	00000000 	nop
  4bafa0:	00621026 	xor	v0,v1,v0
  4bafa4:	304200ff 	andi	v0,v0,0xff
  4bafa8:	00021080 	sll	v0,v0,0x2
  4bafac:	24420800 	addiu	v0,v0,2048
  4bafb0:	8f81804c 	lw	at,-32692(gp)
  4bafb4:	00000000 	nop
  4bafb8:	24215a90 	addiu	at,at,23184
  4bafbc:	00221021 	addu	v0,at,v0
  4bafc0:	8c420000 	lw	v0,0(v0)
  4bafc4:	00000000 	nop
  4bafc8:	00822026 	xor	a0,a0,v0
  4bafcc:	8fc2003c 	lw	v0,60(s8)
  4bafd0:	00000000 	nop
  4bafd4:	2442001b 	addiu	v0,v0,27
  4bafd8:	90420000 	lbu	v0,0(v0)
  4bafdc:	00000000 	nop
  4bafe0:	384200d6 	xori	v0,v0,0xd6
  4bafe4:	304200ff 	andi	v0,v0,0xff
  4bafe8:	8f83804c 	lw	v1,-32692(gp)
  4bafec:	00000000 	nop
  4baff0:	24635890 	addiu	v1,v1,22672
  4baff4:	00621821 	addu	v1,v1,v0
  4baff8:	8fc2003c 	lw	v0,60(s8)
  4baffc:	00000000 	nop
  4bb000:	24420013 	addiu	v0,v0,19
  4bb004:	90630000 	lbu	v1,0(v1)
  4bb008:	90420000 	lbu	v0,0(v0)
  4bb00c:	00000000 	nop
  4bb010:	00621026 	xor	v0,v1,v0
  4bb014:	304200ff 	andi	v0,v0,0xff
  4bb018:	8f83804c 	lw	v1,-32692(gp)
  4bb01c:	00000000 	nop
  4bb020:	24635990 	addiu	v1,v1,22928
  4bb024:	00621821 	addu	v1,v1,v0
  4bb028:	8fc2003c 	lw	v0,60(s8)
  4bb02c:	00000000 	nop
  4bb030:	2442000b 	addiu	v0,v0,11
  4bb034:	90630000 	lbu	v1,0(v1)
  4bb038:	90420000 	lbu	v0,0(v0)
  4bb03c:	00000000 	nop
  4bb040:	00621026 	xor	v0,v1,v0
  4bb044:	304200ff 	andi	v0,v0,0xff
  4bb048:	8f83804c 	lw	v1,-32692(gp)
  4bb04c:	00000000 	nop
  4bb050:	24635990 	addiu	v1,v1,22928
  4bb054:	00621821 	addu	v1,v1,v0
  4bb058:	8fc2003c 	lw	v0,60(s8)
  4bb05c:	00000000 	nop
  4bb060:	24420003 	addiu	v0,v0,3
  4bb064:	90630000 	lbu	v1,0(v1)
  4bb068:	90420000 	lbu	v0,0(v0)
  4bb06c:	00000000 	nop
  4bb070:	00621026 	xor	v0,v1,v0
  4bb074:	304200ff 	andi	v0,v0,0xff
  4bb078:	00021080 	sll	v0,v0,0x2
  4bb07c:	24420c00 	addiu	v0,v0,3072
  4bb080:	8f81804c 	lw	at,-32692(gp)
  4bb084:	00000000 	nop
  4bb088:	24215a90 	addiu	at,at,23184
  4bb08c:	00221021 	addu	v0,at,v0
  4bb090:	8c420000 	lw	v0,0(v0)
  4bb094:	00000000 	nop
  4bb098:	00821026 	xor	v0,a0,v0
  4bb09c:	afc20014 	sw	v0,20(s8)
  4bb0a0:	8fc2003c 	lw	v0,60(s8)
  4bb0a4:	00000000 	nop
  4bb0a8:	2442001c 	addiu	v0,v0,28
  4bb0ac:	90420000 	lbu	v0,0(v0)
  4bb0b0:	00000000 	nop
  4bb0b4:	38420032 	xori	v0,v0,0x32
  4bb0b8:	304200ff 	andi	v0,v0,0xff
  4bb0bc:	8f83804c 	lw	v1,-32692(gp)
  4bb0c0:	00000000 	nop
  4bb0c4:	24635990 	addiu	v1,v1,22928
  4bb0c8:	00621821 	addu	v1,v1,v0
  4bb0cc:	8fc2003c 	lw	v0,60(s8)
  4bb0d0:	00000000 	nop
  4bb0d4:	24420014 	addiu	v0,v0,20
  4bb0d8:	90630000 	lbu	v1,0(v1)
  4bb0dc:	90420000 	lbu	v0,0(v0)
  4bb0e0:	00000000 	nop
  4bb0e4:	00621026 	xor	v0,v1,v0
  4bb0e8:	304200ff 	andi	v0,v0,0xff
  4bb0ec:	8f83804c 	lw	v1,-32692(gp)
  4bb0f0:	00000000 	nop
  4bb0f4:	24635890 	addiu	v1,v1,22672
  4bb0f8:	00621821 	addu	v1,v1,v0
  4bb0fc:	8fc2003c 	lw	v0,60(s8)
  4bb100:	00000000 	nop
  4bb104:	2442000c 	addiu	v0,v0,12
  4bb108:	90630000 	lbu	v1,0(v1)
  4bb10c:	90420000 	lbu	v0,0(v0)
  4bb110:	00000000 	nop
  4bb114:	00621026 	xor	v0,v1,v0
  4bb118:	304200ff 	andi	v0,v0,0xff
  4bb11c:	8f83804c 	lw	v1,-32692(gp)
  4bb120:	00000000 	nop
  4bb124:	24635890 	addiu	v1,v1,22672
  4bb128:	00621821 	addu	v1,v1,v0
  4bb12c:	8fc2003c 	lw	v0,60(s8)
  4bb130:	00000000 	nop
  4bb134:	24420004 	addiu	v0,v0,4
  4bb138:	90630000 	lbu	v1,0(v1)
  4bb13c:	90420000 	lbu	v0,0(v0)
  4bb140:	00000000 	nop
  4bb144:	00621026 	xor	v0,v1,v0
  4bb148:	304200ff 	andi	v0,v0,0xff
  4bb14c:	00021080 	sll	v0,v0,0x2
  4bb150:	8f84804c 	lw	a0,-32692(gp)
  4bb154:	00000000 	nop
  4bb158:	24845a90 	addiu	a0,a0,23184
  4bb15c:	00822021 	addu	a0,a0,v0
  4bb160:	8fc2003c 	lw	v0,60(s8)
  4bb164:	00000000 	nop
  4bb168:	2442001d 	addiu	v0,v0,29
  4bb16c:	90420000 	lbu	v0,0(v0)
  4bb170:	00000000 	nop
  4bb174:	384200c6 	xori	v0,v0,0xc6
  4bb178:	304200ff 	andi	v0,v0,0xff
  4bb17c:	8f83804c 	lw	v1,-32692(gp)
  4bb180:	00000000 	nop
  4bb184:	24635990 	addiu	v1,v1,22928
  4bb188:	00621821 	addu	v1,v1,v0
  4bb18c:	8fc2003c 	lw	v0,60(s8)
  4bb190:	00000000 	nop
  4bb194:	24420015 	addiu	v0,v0,21
  4bb198:	90630000 	lbu	v1,0(v1)
  4bb19c:	90420000 	lbu	v0,0(v0)
  4bb1a0:	00000000 	nop
  4bb1a4:	00621026 	xor	v0,v1,v0
  4bb1a8:	304200ff 	andi	v0,v0,0xff
  4bb1ac:	8f83804c 	lw	v1,-32692(gp)
  4bb1b0:	00000000 	nop
  4bb1b4:	24635990 	addiu	v1,v1,22928
  4bb1b8:	00621821 	addu	v1,v1,v0
  4bb1bc:	8fc2003c 	lw	v0,60(s8)
  4bb1c0:	00000000 	nop
  4bb1c4:	2442000d 	addiu	v0,v0,13
  4bb1c8:	90630000 	lbu	v1,0(v1)
  4bb1cc:	90420000 	lbu	v0,0(v0)
  4bb1d0:	00000000 	nop
  4bb1d4:	00621026 	xor	v0,v1,v0
  4bb1d8:	304200ff 	andi	v0,v0,0xff
  4bb1dc:	8f83804c 	lw	v1,-32692(gp)
  4bb1e0:	00000000 	nop
  4bb1e4:	24635890 	addiu	v1,v1,22672
  4bb1e8:	00621821 	addu	v1,v1,v0
  4bb1ec:	8fc2003c 	lw	v0,60(s8)
  4bb1f0:	00000000 	nop
  4bb1f4:	24420005 	addiu	v0,v0,5
  4bb1f8:	90630000 	lbu	v1,0(v1)
  4bb1fc:	90420000 	lbu	v0,0(v0)
  4bb200:	00000000 	nop
  4bb204:	00621026 	xor	v0,v1,v0
  4bb208:	304200ff 	andi	v0,v0,0xff
  4bb20c:	00021080 	sll	v0,v0,0x2
  4bb210:	24420400 	addiu	v0,v0,1024
  4bb214:	8f81804c 	lw	at,-32692(gp)
  4bb218:	00000000 	nop
  4bb21c:	24215a90 	addiu	at,at,23184
  4bb220:	00221021 	addu	v0,at,v0
  4bb224:	8c830000 	lw	v1,0(a0)
  4bb228:	8c420000 	lw	v0,0(v0)
  4bb22c:	00000000 	nop
  4bb230:	00622026 	xor	a0,v1,v0
  4bb234:	8fc2003c 	lw	v0,60(s8)
  4bb238:	00000000 	nop
  4bb23c:	2442001e 	addiu	v0,v0,30
  4bb240:	90420000 	lbu	v0,0(v0)
  4bb244:	00000000 	nop
  4bb248:	384200c6 	xori	v0,v0,0xc6
  4bb24c:	304200ff 	andi	v0,v0,0xff
  4bb250:	8f83804c 	lw	v1,-32692(gp)
  4bb254:	00000000 	nop
  4bb258:	24635890 	addiu	v1,v1,22672
  4bb25c:	00621821 	addu	v1,v1,v0
  4bb260:	8fc2003c 	lw	v0,60(s8)
  4bb264:	00000000 	nop
  4bb268:	24420016 	addiu	v0,v0,22
  4bb26c:	90630000 	lbu	v1,0(v1)
  4bb270:	90420000 	lbu	v0,0(v0)
  4bb274:	00000000 	nop
  4bb278:	00621026 	xor	v0,v1,v0
  4bb27c:	304200ff 	andi	v0,v0,0xff
  4bb280:	8f83804c 	lw	v1,-32692(gp)
  4bb284:	00000000 	nop
  4bb288:	24635890 	addiu	v1,v1,22672
  4bb28c:	00621821 	addu	v1,v1,v0
  4bb290:	8fc2003c 	lw	v0,60(s8)
  4bb294:	00000000 	nop
  4bb298:	2442000e 	addiu	v0,v0,14
  4bb29c:	90630000 	lbu	v1,0(v1)
  4bb2a0:	90420000 	lbu	v0,0(v0)
  4bb2a4:	00000000 	nop
  4bb2a8:	00621026 	xor	v0,v1,v0
  4bb2ac:	304200ff 	andi	v0,v0,0xff
  4bb2b0:	8f83804c 	lw	v1,-32692(gp)
  4bb2b4:	00000000 	nop
  4bb2b8:	24635990 	addiu	v1,v1,22928
  4bb2bc:	00621821 	addu	v1,v1,v0
  4bb2c0:	8fc2003c 	lw	v0,60(s8)
  4bb2c4:	00000000 	nop
  4bb2c8:	24420006 	addiu	v0,v0,6
  4bb2cc:	90630000 	lbu	v1,0(v1)
  4bb2d0:	90420000 	lbu	v0,0(v0)
  4bb2d4:	00000000 	nop
  4bb2d8:	00621026 	xor	v0,v1,v0
  4bb2dc:	304200ff 	andi	v0,v0,0xff
  4bb2e0:	00021080 	sll	v0,v0,0x2
  4bb2e4:	24420800 	addiu	v0,v0,2048
  4bb2e8:	8f81804c 	lw	at,-32692(gp)
  4bb2ec:	00000000 	nop
  4bb2f0:	24215a90 	addiu	at,at,23184
  4bb2f4:	00221021 	addu	v0,at,v0
  4bb2f8:	8c420000 	lw	v0,0(v0)
  4bb2fc:	00000000 	nop
  4bb300:	00822026 	xor	a0,a0,v0
  4bb304:	8fc2003c 	lw	v0,60(s8)
  4bb308:	00000000 	nop
  4bb30c:	2442001f 	addiu	v0,v0,31
  4bb310:	90420000 	lbu	v0,0(v0)
  4bb314:	00000000 	nop
  4bb318:	38420032 	xori	v0,v0,0x32
  4bb31c:	304200ff 	andi	v0,v0,0xff
  4bb320:	8f83804c 	lw	v1,-32692(gp)
  4bb324:	00000000 	nop
  4bb328:	24635890 	addiu	v1,v1,22672
  4bb32c:	00621821 	addu	v1,v1,v0
  4bb330:	8fc2003c 	lw	v0,60(s8)
  4bb334:	00000000 	nop
  4bb338:	24420017 	addiu	v0,v0,23
  4bb33c:	90630000 	lbu	v1,0(v1)
  4bb340:	90420000 	lbu	v0,0(v0)
  4bb344:	00000000 	nop
  4bb348:	00621026 	xor	v0,v1,v0
  4bb34c:	304200ff 	andi	v0,v0,0xff
  4bb350:	8f83804c 	lw	v1,-32692(gp)
  4bb354:	00000000 	nop
  4bb358:	24635990 	addiu	v1,v1,22928
  4bb35c:	00621821 	addu	v1,v1,v0
  4bb360:	8fc2003c 	lw	v0,60(s8)
  4bb364:	00000000 	nop
  4bb368:	2442000f 	addiu	v0,v0,15
  4bb36c:	90630000 	lbu	v1,0(v1)
  4bb370:	90420000 	lbu	v0,0(v0)
  4bb374:	00000000 	nop
  4bb378:	00621026 	xor	v0,v1,v0
  4bb37c:	304200ff 	andi	v0,v0,0xff
  4bb380:	8f83804c 	lw	v1,-32692(gp)
  4bb384:	00000000 	nop
  4bb388:	24635990 	addiu	v1,v1,22928
  4bb38c:	00621821 	addu	v1,v1,v0
  4bb390:	8fc2003c 	lw	v0,60(s8)
  4bb394:	00000000 	nop
  4bb398:	24420007 	addiu	v0,v0,7
  4bb39c:	90630000 	lbu	v1,0(v1)
  4bb3a0:	90420000 	lbu	v0,0(v0)
  4bb3a4:	00000000 	nop
  4bb3a8:	00621026 	xor	v0,v1,v0
  4bb3ac:	304200ff 	andi	v0,v0,0xff
  4bb3b0:	00021080 	sll	v0,v0,0x2
  4bb3b4:	24420c00 	addiu	v0,v0,3072
  4bb3b8:	8f81804c 	lw	at,-32692(gp)
  4bb3bc:	00000000 	nop
  4bb3c0:	24215a90 	addiu	at,at,23184
  4bb3c4:	00221021 	addu	v0,at,v0
  4bb3c8:	8c420000 	lw	v0,0(v0)
  4bb3cc:	00000000 	nop
  4bb3d0:	00821026 	xor	v0,a0,v0
  4bb3d4:	afc20018 	sw	v0,24(s8)
  4bb3d8:	8fc20018 	lw	v0,24(s8)
  4bb3dc:	00000000 	nop
  4bb3e0:	00021a00 	sll	v1,v0,0x8
  4bb3e4:	00021602 	srl	v0,v0,0x18
  4bb3e8:	00621025 	or	v0,v1,v0
  4bb3ec:	afc20018 	sw	v0,24(s8)
  4bb3f0:	8fc30014 	lw	v1,20(s8)
  4bb3f4:	8fc20018 	lw	v0,24(s8)
  4bb3f8:	00000000 	nop
  4bb3fc:	00621021 	addu	v0,v1,v0
  4bb400:	afc20014 	sw	v0,20(s8)
  4bb404:	8fc30018 	lw	v1,24(s8)
  4bb408:	8fc20014 	lw	v0,20(s8)
  4bb40c:	00000000 	nop
  4bb410:	00621021 	addu	v0,v1,v0
  4bb414:	afc20018 	sw	v0,24(s8)
  4bb418:	8fc30014 	lw	v1,20(s8)
  4bb41c:	8fc20038 	lw	v0,56(s8)
  4bb420:	00000000 	nop
  4bb424:	ac431040 	sw	v1,4160(v0)
  4bb428:	8fc20018 	lw	v0,24(s8)
  4bb42c:	00000000 	nop
  4bb430:	00021a40 	sll	v1,v0,0x9
  4bb434:	000215c2 	srl	v0,v0,0x17
  4bb438:	00621825 	or	v1,v1,v0
  4bb43c:	8fc20038 	lw	v0,56(s8)
  4bb440:	00000000 	nop
  4bb444:	ac431044 	sw	v1,4164(v0)
		CALC_K256 (k, 10, 0x35, 0xD8, 0x98, 0xFD);
  4bb448:	8fc2003c 	lw	v0,60(s8)
  4bb44c:	00000000 	nop
  4bb450:	24420018 	addiu	v0,v0,24
  4bb454:	90420000 	lbu	v0,0(v0)
  4bb458:	00000000 	nop
  4bb45c:	384200d8 	xori	v0,v0,0xd8
  4bb460:	304200ff 	andi	v0,v0,0xff
  4bb464:	8f83804c 	lw	v1,-32692(gp)
  4bb468:	00000000 	nop
  4bb46c:	24635990 	addiu	v1,v1,22928
  4bb470:	00621821 	addu	v1,v1,v0
  4bb474:	8fc2003c 	lw	v0,60(s8)
  4bb478:	00000000 	nop
  4bb47c:	24420010 	addiu	v0,v0,16
  4bb480:	90630000 	lbu	v1,0(v1)
  4bb484:	90420000 	lbu	v0,0(v0)
  4bb488:	00000000 	nop
  4bb48c:	00621026 	xor	v0,v1,v0
  4bb490:	304200ff 	andi	v0,v0,0xff
  4bb494:	8f83804c 	lw	v1,-32692(gp)
  4bb498:	00000000 	nop
  4bb49c:	24635890 	addiu	v1,v1,22672
  4bb4a0:	00621821 	addu	v1,v1,v0
  4bb4a4:	8fc2003c 	lw	v0,60(s8)
  4bb4a8:	00000000 	nop
  4bb4ac:	24420008 	addiu	v0,v0,8
  4bb4b0:	90630000 	lbu	v1,0(v1)
  4bb4b4:	90420000 	lbu	v0,0(v0)
  4bb4b8:	00000000 	nop
  4bb4bc:	00621026 	xor	v0,v1,v0
  4bb4c0:	304200ff 	andi	v0,v0,0xff
  4bb4c4:	8f81804c 	lw	at,-32692(gp)
  4bb4c8:	00000000 	nop
  4bb4cc:	24215890 	addiu	at,at,22672
  4bb4d0:	00221021 	addu	v0,at,v0
  4bb4d4:	90430000 	lbu	v1,0(v0)
  4bb4d8:	8fc2003c 	lw	v0,60(s8)
  4bb4dc:	00000000 	nop
  4bb4e0:	90420000 	lbu	v0,0(v0)
  4bb4e4:	00000000 	nop
  4bb4e8:	00621026 	xor	v0,v1,v0
  4bb4ec:	304200ff 	andi	v0,v0,0xff
  4bb4f0:	00021080 	sll	v0,v0,0x2
  4bb4f4:	8f84804c 	lw	a0,-32692(gp)
  4bb4f8:	00000000 	nop
  4bb4fc:	24845a90 	addiu	a0,a0,23184
  4bb500:	00822021 	addu	a0,a0,v0
  4bb504:	8fc2003c 	lw	v0,60(s8)
  4bb508:	00000000 	nop
  4bb50c:	24420019 	addiu	v0,v0,25
  4bb510:	90420000 	lbu	v0,0(v0)
  4bb514:	00000000 	nop
  4bb518:	38420035 	xori	v0,v0,0x35
  4bb51c:	304200ff 	andi	v0,v0,0xff
  4bb520:	8f83804c 	lw	v1,-32692(gp)
  4bb524:	00000000 	nop
  4bb528:	24635990 	addiu	v1,v1,22928
  4bb52c:	00621821 	addu	v1,v1,v0
  4bb530:	8fc2003c 	lw	v0,60(s8)
  4bb534:	00000000 	nop
  4bb538:	24420011 	addiu	v0,v0,17
  4bb53c:	90630000 	lbu	v1,0(v1)
  4bb540:	90420000 	lbu	v0,0(v0)
  4bb544:	00000000 	nop
  4bb548:	00621026 	xor	v0,v1,v0
  4bb54c:	304200ff 	andi	v0,v0,0xff
  4bb550:	8f83804c 	lw	v1,-32692(gp)
  4bb554:	00000000 	nop
  4bb558:	24635990 	addiu	v1,v1,22928
  4bb55c:	00621821 	addu	v1,v1,v0
  4bb560:	8fc2003c 	lw	v0,60(s8)
  4bb564:	00000000 	nop
  4bb568:	24420009 	addiu	v0,v0,9
  4bb56c:	90630000 	lbu	v1,0(v1)
  4bb570:	90420000 	lbu	v0,0(v0)
  4bb574:	00000000 	nop
  4bb578:	00621026 	xor	v0,v1,v0
  4bb57c:	304200ff 	andi	v0,v0,0xff
  4bb580:	8f83804c 	lw	v1,-32692(gp)
  4bb584:	00000000 	nop
  4bb588:	24635890 	addiu	v1,v1,22672
  4bb58c:	00621821 	addu	v1,v1,v0
  4bb590:	8fc2003c 	lw	v0,60(s8)
  4bb594:	00000000 	nop
  4bb598:	24420001 	addiu	v0,v0,1
  4bb59c:	90630000 	lbu	v1,0(v1)
  4bb5a0:	90420000 	lbu	v0,0(v0)
  4bb5a4:	00000000 	nop
  4bb5a8:	00621026 	xor	v0,v1,v0
  4bb5ac:	304200ff 	andi	v0,v0,0xff
  4bb5b0:	00021080 	sll	v0,v0,0x2
  4bb5b4:	24420400 	addiu	v0,v0,1024
  4bb5b8:	8f81804c 	lw	at,-32692(gp)
  4bb5bc:	00000000 	nop
  4bb5c0:	24215a90 	addiu	at,at,23184
  4bb5c4:	00221021 	addu	v0,at,v0
  4bb5c8:	8c830000 	lw	v1,0(a0)
  4bb5cc:	8c420000 	lw	v0,0(v0)
  4bb5d0:	00000000 	nop
  4bb5d4:	00622026 	xor	a0,v1,v0
  4bb5d8:	8fc2003c 	lw	v0,60(s8)
  4bb5dc:	00000000 	nop
  4bb5e0:	2442001a 	addiu	v0,v0,26
  4bb5e4:	90420000 	lbu	v0,0(v0)
  4bb5e8:	00000000 	nop
  4bb5ec:	38420035 	xori	v0,v0,0x35
  4bb5f0:	304200ff 	andi	v0,v0,0xff
  4bb5f4:	8f83804c 	lw	v1,-32692(gp)
  4bb5f8:	00000000 	nop
  4bb5fc:	24635890 	addiu	v1,v1,22672
  4bb600:	00621821 	addu	v1,v1,v0
  4bb604:	8fc2003c 	lw	v0,60(s8)
  4bb608:	00000000 	nop
  4bb60c:	24420012 	addiu	v0,v0,18
  4bb610:	90630000 	lbu	v1,0(v1)
  4bb614:	90420000 	lbu	v0,0(v0)
  4bb618:	00000000 	nop
  4bb61c:	00621026 	xor	v0,v1,v0
  4bb620:	304200ff 	andi	v0,v0,0xff
  4bb624:	8f83804c 	lw	v1,-32692(gp)
  4bb628:	00000000 	nop
  4bb62c:	24635890 	addiu	v1,v1,22672
  4bb630:	00621821 	addu	v1,v1,v0
  4bb634:	8fc2003c 	lw	v0,60(s8)
  4bb638:	00000000 	nop
  4bb63c:	2442000a 	addiu	v0,v0,10
  4bb640:	90630000 	lbu	v1,0(v1)
  4bb644:	90420000 	lbu	v0,0(v0)
  4bb648:	00000000 	nop
  4bb64c:	00621026 	xor	v0,v1,v0
  4bb650:	304200ff 	andi	v0,v0,0xff
  4bb654:	8f83804c 	lw	v1,-32692(gp)
  4bb658:	00000000 	nop
  4bb65c:	24635990 	addiu	v1,v1,22928
  4bb660:	00621821 	addu	v1,v1,v0
  4bb664:	8fc2003c 	lw	v0,60(s8)
  4bb668:	00000000 	nop
  4bb66c:	24420002 	addiu	v0,v0,2
  4bb670:	90630000 	lbu	v1,0(v1)
  4bb674:	90420000 	lbu	v0,0(v0)
  4bb678:	00000000 	nop
  4bb67c:	00621026 	xor	v0,v1,v0
  4bb680:	304200ff 	andi	v0,v0,0xff
  4bb684:	00021080 	sll	v0,v0,0x2
  4bb688:	24420800 	addiu	v0,v0,2048
  4bb68c:	8f81804c 	lw	at,-32692(gp)
  4bb690:	00000000 	nop
  4bb694:	24215a90 	addiu	at,at,23184
  4bb698:	00221021 	addu	v0,at,v0
  4bb69c:	8c420000 	lw	v0,0(v0)
  4bb6a0:	00000000 	nop
  4bb6a4:	00822026 	xor	a0,a0,v0
  4bb6a8:	8fc2003c 	lw	v0,60(s8)
  4bb6ac:	00000000 	nop
  4bb6b0:	2442001b 	addiu	v0,v0,27
  4bb6b4:	90420000 	lbu	v0,0(v0)
  4bb6b8:	00000000 	nop
  4bb6bc:	384200d8 	xori	v0,v0,0xd8
  4bb6c0:	304200ff 	andi	v0,v0,0xff
  4bb6c4:	8f83804c 	lw	v1,-32692(gp)
  4bb6c8:	00000000 	nop
  4bb6cc:	24635890 	addiu	v1,v1,22672
  4bb6d0:	00621821 	addu	v1,v1,v0
  4bb6d4:	8fc2003c 	lw	v0,60(s8)
  4bb6d8:	00000000 	nop
  4bb6dc:	24420013 	addiu	v0,v0,19
  4bb6e0:	90630000 	lbu	v1,0(v1)
  4bb6e4:	90420000 	lbu	v0,0(v0)
  4bb6e8:	00000000 	nop
  4bb6ec:	00621026 	xor	v0,v1,v0
  4bb6f0:	304200ff 	andi	v0,v0,0xff
  4bb6f4:	8f83804c 	lw	v1,-32692(gp)
  4bb6f8:	00000000 	nop
  4bb6fc:	24635990 	addiu	v1,v1,22928
  4bb700:	00621821 	addu	v1,v1,v0
  4bb704:	8fc2003c 	lw	v0,60(s8)
  4bb708:	00000000 	nop
  4bb70c:	2442000b 	addiu	v0,v0,11
  4bb710:	90630000 	lbu	v1,0(v1)
  4bb714:	90420000 	lbu	v0,0(v0)
  4bb718:	00000000 	nop
  4bb71c:	00621026 	xor	v0,v1,v0
  4bb720:	304200ff 	andi	v0,v0,0xff
  4bb724:	8f83804c 	lw	v1,-32692(gp)
  4bb728:	00000000 	nop
  4bb72c:	24635990 	addiu	v1,v1,22928
  4bb730:	00621821 	addu	v1,v1,v0
  4bb734:	8fc2003c 	lw	v0,60(s8)
  4bb738:	00000000 	nop
  4bb73c:	24420003 	addiu	v0,v0,3
  4bb740:	90630000 	lbu	v1,0(v1)
  4bb744:	90420000 	lbu	v0,0(v0)
  4bb748:	00000000 	nop
  4bb74c:	00621026 	xor	v0,v1,v0
  4bb750:	304200ff 	andi	v0,v0,0xff
  4bb754:	00021080 	sll	v0,v0,0x2
  4bb758:	24420c00 	addiu	v0,v0,3072
  4bb75c:	8f81804c 	lw	at,-32692(gp)
  4bb760:	00000000 	nop
  4bb764:	24215a90 	addiu	at,at,23184
  4bb768:	00221021 	addu	v0,at,v0
  4bb76c:	8c420000 	lw	v0,0(v0)
  4bb770:	00000000 	nop
  4bb774:	00821026 	xor	v0,a0,v0
  4bb778:	afc20014 	sw	v0,20(s8)
  4bb77c:	8fc2003c 	lw	v0,60(s8)
  4bb780:	00000000 	nop
  4bb784:	2442001c 	addiu	v0,v0,28
  4bb788:	90420000 	lbu	v0,0(v0)
  4bb78c:	00000000 	nop
  4bb790:	384200fd 	xori	v0,v0,0xfd
  4bb794:	304200ff 	andi	v0,v0,0xff
  4bb798:	8f83804c 	lw	v1,-32692(gp)
  4bb79c:	00000000 	nop
  4bb7a0:	24635990 	addiu	v1,v1,22928
  4bb7a4:	00621821 	addu	v1,v1,v0
  4bb7a8:	8fc2003c 	lw	v0,60(s8)
  4bb7ac:	00000000 	nop
  4bb7b0:	24420014 	addiu	v0,v0,20
  4bb7b4:	90630000 	lbu	v1,0(v1)
  4bb7b8:	90420000 	lbu	v0,0(v0)
  4bb7bc:	00000000 	nop
  4bb7c0:	00621026 	xor	v0,v1,v0
  4bb7c4:	304200ff 	andi	v0,v0,0xff
  4bb7c8:	8f83804c 	lw	v1,-32692(gp)
  4bb7cc:	00000000 	nop
  4bb7d0:	24635890 	addiu	v1,v1,22672
  4bb7d4:	00621821 	addu	v1,v1,v0
  4bb7d8:	8fc2003c 	lw	v0,60(s8)
  4bb7dc:	00000000 	nop
  4bb7e0:	2442000c 	addiu	v0,v0,12
  4bb7e4:	90630000 	lbu	v1,0(v1)
  4bb7e8:	90420000 	lbu	v0,0(v0)
  4bb7ec:	00000000 	nop
  4bb7f0:	00621026 	xor	v0,v1,v0
  4bb7f4:	304200ff 	andi	v0,v0,0xff
  4bb7f8:	8f83804c 	lw	v1,-32692(gp)
  4bb7fc:	00000000 	nop
  4bb800:	24635890 	addiu	v1,v1,22672
  4bb804:	00621821 	addu	v1,v1,v0
  4bb808:	8fc2003c 	lw	v0,60(s8)
  4bb80c:	00000000 	nop
  4bb810:	24420004 	addiu	v0,v0,4
  4bb814:	90630000 	lbu	v1,0(v1)
  4bb818:	90420000 	lbu	v0,0(v0)
  4bb81c:	00000000 	nop
  4bb820:	00621026 	xor	v0,v1,v0
  4bb824:	304200ff 	andi	v0,v0,0xff
  4bb828:	00021080 	sll	v0,v0,0x2
  4bb82c:	8f84804c 	lw	a0,-32692(gp)
  4bb830:	00000000 	nop
  4bb834:	24845a90 	addiu	a0,a0,23184
  4bb838:	00822021 	addu	a0,a0,v0
  4bb83c:	8fc2003c 	lw	v0,60(s8)
  4bb840:	00000000 	nop
  4bb844:	2442001d 	addiu	v0,v0,29
  4bb848:	90420000 	lbu	v0,0(v0)
  4bb84c:	00000000 	nop
  4bb850:	38420098 	xori	v0,v0,0x98
  4bb854:	304200ff 	andi	v0,v0,0xff
  4bb858:	8f83804c 	lw	v1,-32692(gp)
  4bb85c:	00000000 	nop
  4bb860:	24635990 	addiu	v1,v1,22928
  4bb864:	00621821 	addu	v1,v1,v0
  4bb868:	8fc2003c 	lw	v0,60(s8)
  4bb86c:	00000000 	nop
  4bb870:	24420015 	addiu	v0,v0,21
  4bb874:	90630000 	lbu	v1,0(v1)
  4bb878:	90420000 	lbu	v0,0(v0)
  4bb87c:	00000000 	nop
  4bb880:	00621026 	xor	v0,v1,v0
  4bb884:	304200ff 	andi	v0,v0,0xff
  4bb888:	8f83804c 	lw	v1,-32692(gp)
  4bb88c:	00000000 	nop
  4bb890:	24635990 	addiu	v1,v1,22928
  4bb894:	00621821 	addu	v1,v1,v0
  4bb898:	8fc2003c 	lw	v0,60(s8)
  4bb89c:	00000000 	nop
  4bb8a0:	2442000d 	addiu	v0,v0,13
  4bb8a4:	90630000 	lbu	v1,0(v1)
  4bb8a8:	90420000 	lbu	v0,0(v0)
  4bb8ac:	00000000 	nop
  4bb8b0:	00621026 	xor	v0,v1,v0
  4bb8b4:	304200ff 	andi	v0,v0,0xff
  4bb8b8:	8f83804c 	lw	v1,-32692(gp)
  4bb8bc:	00000000 	nop
  4bb8c0:	24635890 	addiu	v1,v1,22672
  4bb8c4:	00621821 	addu	v1,v1,v0
  4bb8c8:	8fc2003c 	lw	v0,60(s8)
  4bb8cc:	00000000 	nop
  4bb8d0:	24420005 	addiu	v0,v0,5
  4bb8d4:	90630000 	lbu	v1,0(v1)
  4bb8d8:	90420000 	lbu	v0,0(v0)
  4bb8dc:	00000000 	nop
  4bb8e0:	00621026 	xor	v0,v1,v0
  4bb8e4:	304200ff 	andi	v0,v0,0xff
  4bb8e8:	00021080 	sll	v0,v0,0x2
  4bb8ec:	24420400 	addiu	v0,v0,1024
  4bb8f0:	8f81804c 	lw	at,-32692(gp)
  4bb8f4:	00000000 	nop
  4bb8f8:	24215a90 	addiu	at,at,23184
  4bb8fc:	00221021 	addu	v0,at,v0
  4bb900:	8c830000 	lw	v1,0(a0)
  4bb904:	8c420000 	lw	v0,0(v0)
  4bb908:	00000000 	nop
  4bb90c:	00622026 	xor	a0,v1,v0
  4bb910:	8fc2003c 	lw	v0,60(s8)
  4bb914:	00000000 	nop
  4bb918:	2442001e 	addiu	v0,v0,30
  4bb91c:	90420000 	lbu	v0,0(v0)
  4bb920:	00000000 	nop
  4bb924:	38420098 	xori	v0,v0,0x98
  4bb928:	304200ff 	andi	v0,v0,0xff
  4bb92c:	8f83804c 	lw	v1,-32692(gp)
  4bb930:	00000000 	nop
  4bb934:	24635890 	addiu	v1,v1,22672
  4bb938:	00621821 	addu	v1,v1,v0
  4bb93c:	8fc2003c 	lw	v0,60(s8)
  4bb940:	00000000 	nop
  4bb944:	24420016 	addiu	v0,v0,22
  4bb948:	90630000 	lbu	v1,0(v1)
  4bb94c:	90420000 	lbu	v0,0(v0)
  4bb950:	00000000 	nop
  4bb954:	00621026 	xor	v0,v1,v0
  4bb958:	304200ff 	andi	v0,v0,0xff
  4bb95c:	8f83804c 	lw	v1,-32692(gp)
  4bb960:	00000000 	nop
  4bb964:	24635890 	addiu	v1,v1,22672
  4bb968:	00621821 	addu	v1,v1,v0
  4bb96c:	8fc2003c 	lw	v0,60(s8)
  4bb970:	00000000 	nop
  4bb974:	2442000e 	addiu	v0,v0,14
  4bb978:	90630000 	lbu	v1,0(v1)
  4bb97c:	90420000 	lbu	v0,0(v0)
  4bb980:	00000000 	nop
  4bb984:	00621026 	xor	v0,v1,v0
  4bb988:	304200ff 	andi	v0,v0,0xff
  4bb98c:	8f83804c 	lw	v1,-32692(gp)
  4bb990:	00000000 	nop
  4bb994:	24635990 	addiu	v1,v1,22928
  4bb998:	00621821 	addu	v1,v1,v0
  4bb99c:	8fc2003c 	lw	v0,60(s8)
  4bb9a0:	00000000 	nop
  4bb9a4:	24420006 	addiu	v0,v0,6
  4bb9a8:	90630000 	lbu	v1,0(v1)
  4bb9ac:	90420000 	lbu	v0,0(v0)
  4bb9b0:	00000000 	nop
  4bb9b4:	00621026 	xor	v0,v1,v0
  4bb9b8:	304200ff 	andi	v0,v0,0xff
  4bb9bc:	00021080 	sll	v0,v0,0x2
  4bb9c0:	24420800 	addiu	v0,v0,2048
  4bb9c4:	8f81804c 	lw	at,-32692(gp)
  4bb9c8:	00000000 	nop
  4bb9cc:	24215a90 	addiu	at,at,23184
  4bb9d0:	00221021 	addu	v0,at,v0
  4bb9d4:	8c420000 	lw	v0,0(v0)
  4bb9d8:	00000000 	nop
  4bb9dc:	00822026 	xor	a0,a0,v0
  4bb9e0:	8fc2003c 	lw	v0,60(s8)
  4bb9e4:	00000000 	nop
  4bb9e8:	2442001f 	addiu	v0,v0,31
  4bb9ec:	90420000 	lbu	v0,0(v0)
  4bb9f0:	00000000 	nop
  4bb9f4:	384200fd 	xori	v0,v0,0xfd
  4bb9f8:	304200ff 	andi	v0,v0,0xff
  4bb9fc:	8f83804c 	lw	v1,-32692(gp)
  4bba00:	00000000 	nop
  4bba04:	24635890 	addiu	v1,v1,22672
  4bba08:	00621821 	addu	v1,v1,v0
  4bba0c:	8fc2003c 	lw	v0,60(s8)
  4bba10:	00000000 	nop
  4bba14:	24420017 	addiu	v0,v0,23
  4bba18:	90630000 	lbu	v1,0(v1)
  4bba1c:	90420000 	lbu	v0,0(v0)
  4bba20:	00000000 	nop
  4bba24:	00621026 	xor	v0,v1,v0
  4bba28:	304200ff 	andi	v0,v0,0xff
  4bba2c:	8f83804c 	lw	v1,-32692(gp)
  4bba30:	00000000 	nop
  4bba34:	24635990 	addiu	v1,v1,22928
  4bba38:	00621821 	addu	v1,v1,v0
  4bba3c:	8fc2003c 	lw	v0,60(s8)
  4bba40:	00000000 	nop
  4bba44:	2442000f 	addiu	v0,v0,15
  4bba48:	90630000 	lbu	v1,0(v1)
  4bba4c:	90420000 	lbu	v0,0(v0)
  4bba50:	00000000 	nop
  4bba54:	00621026 	xor	v0,v1,v0
  4bba58:	304200ff 	andi	v0,v0,0xff
  4bba5c:	8f83804c 	lw	v1,-32692(gp)
  4bba60:	00000000 	nop
  4bba64:	24635990 	addiu	v1,v1,22928
  4bba68:	00621821 	addu	v1,v1,v0
  4bba6c:	8fc2003c 	lw	v0,60(s8)
  4bba70:	00000000 	nop
  4bba74:	24420007 	addiu	v0,v0,7
  4bba78:	90630000 	lbu	v1,0(v1)
  4bba7c:	90420000 	lbu	v0,0(v0)
  4bba80:	00000000 	nop
  4bba84:	00621026 	xor	v0,v1,v0
  4bba88:	304200ff 	andi	v0,v0,0xff
  4bba8c:	00021080 	sll	v0,v0,0x2
  4bba90:	24420c00 	addiu	v0,v0,3072
  4bba94:	8f81804c 	lw	at,-32692(gp)
  4bba98:	00000000 	nop
  4bba9c:	24215a90 	addiu	at,at,23184
  4bbaa0:	00221021 	addu	v0,at,v0
  4bbaa4:	8c420000 	lw	v0,0(v0)
  4bbaa8:	00000000 	nop
  4bbaac:	00821026 	xor	v0,a0,v0
  4bbab0:	afc20018 	sw	v0,24(s8)
  4bbab4:	8fc20018 	lw	v0,24(s8)
  4bbab8:	00000000 	nop
  4bbabc:	00021a00 	sll	v1,v0,0x8
  4bbac0:	00021602 	srl	v0,v0,0x18
  4bbac4:	00621025 	or	v0,v1,v0
  4bbac8:	afc20018 	sw	v0,24(s8)
  4bbacc:	8fc30014 	lw	v1,20(s8)
  4bbad0:	8fc20018 	lw	v0,24(s8)
  4bbad4:	00000000 	nop
  4bbad8:	00621021 	addu	v0,v1,v0
  4bbadc:	afc20014 	sw	v0,20(s8)
  4bbae0:	8fc30018 	lw	v1,24(s8)
  4bbae4:	8fc20014 	lw	v0,20(s8)
  4bbae8:	00000000 	nop
  4bbaec:	00621021 	addu	v0,v1,v0
  4bbaf0:	afc20018 	sw	v0,24(s8)
  4bbaf4:	8fc30014 	lw	v1,20(s8)
  4bbaf8:	8fc20038 	lw	v0,56(s8)
  4bbafc:	00000000 	nop
  4bbb00:	ac431048 	sw	v1,4168(v0)
  4bbb04:	8fc20018 	lw	v0,24(s8)
  4bbb08:	00000000 	nop
  4bbb0c:	00021a40 	sll	v1,v0,0x9
  4bbb10:	000215c2 	srl	v0,v0,0x17
  4bbb14:	00621825 	or	v1,v1,v0
  4bbb18:	8fc20038 	lw	v0,56(s8)
  4bbb1c:	00000000 	nop
  4bbb20:	ac43104c 	sw	v1,4172(v0)
		CALC_K256 (k, 12, 0x18, 0x37, 0xF7, 0x71);
  4bbb24:	8fc2003c 	lw	v0,60(s8)
  4bbb28:	00000000 	nop
  4bbb2c:	24420018 	addiu	v0,v0,24
  4bbb30:	90420000 	lbu	v0,0(v0)
  4bbb34:	00000000 	nop
  4bbb38:	38420037 	xori	v0,v0,0x37
  4bbb3c:	304200ff 	andi	v0,v0,0xff
  4bbb40:	8f83804c 	lw	v1,-32692(gp)
  4bbb44:	00000000 	nop
  4bbb48:	24635990 	addiu	v1,v1,22928
  4bbb4c:	00621821 	addu	v1,v1,v0
  4bbb50:	8fc2003c 	lw	v0,60(s8)
  4bbb54:	00000000 	nop
  4bbb58:	24420010 	addiu	v0,v0,16
  4bbb5c:	90630000 	lbu	v1,0(v1)
  4bbb60:	90420000 	lbu	v0,0(v0)
  4bbb64:	00000000 	nop
  4bbb68:	00621026 	xor	v0,v1,v0
  4bbb6c:	304200ff 	andi	v0,v0,0xff
  4bbb70:	8f83804c 	lw	v1,-32692(gp)
  4bbb74:	00000000 	nop
  4bbb78:	24635890 	addiu	v1,v1,22672
  4bbb7c:	00621821 	addu	v1,v1,v0
  4bbb80:	8fc2003c 	lw	v0,60(s8)
  4bbb84:	00000000 	nop
  4bbb88:	24420008 	addiu	v0,v0,8
  4bbb8c:	90630000 	lbu	v1,0(v1)
  4bbb90:	90420000 	lbu	v0,0(v0)
  4bbb94:	00000000 	nop
  4bbb98:	00621026 	xor	v0,v1,v0
  4bbb9c:	304200ff 	andi	v0,v0,0xff
  4bbba0:	8f81804c 	lw	at,-32692(gp)
  4bbba4:	00000000 	nop
  4bbba8:	24215890 	addiu	at,at,22672
  4bbbac:	00221021 	addu	v0,at,v0
  4bbbb0:	90430000 	lbu	v1,0(v0)
  4bbbb4:	8fc2003c 	lw	v0,60(s8)
  4bbbb8:	00000000 	nop
  4bbbbc:	90420000 	lbu	v0,0(v0)
  4bbbc0:	00000000 	nop
  4bbbc4:	00621026 	xor	v0,v1,v0
  4bbbc8:	304200ff 	andi	v0,v0,0xff
  4bbbcc:	00021080 	sll	v0,v0,0x2
  4bbbd0:	8f84804c 	lw	a0,-32692(gp)
  4bbbd4:	00000000 	nop
  4bbbd8:	24845a90 	addiu	a0,a0,23184
  4bbbdc:	00822021 	addu	a0,a0,v0
  4bbbe0:	8fc2003c 	lw	v0,60(s8)
  4bbbe4:	00000000 	nop
  4bbbe8:	24420019 	addiu	v0,v0,25
  4bbbec:	90420000 	lbu	v0,0(v0)
  4bbbf0:	00000000 	nop
  4bbbf4:	38420018 	xori	v0,v0,0x18
  4bbbf8:	304200ff 	andi	v0,v0,0xff
  4bbbfc:	8f83804c 	lw	v1,-32692(gp)
  4bbc00:	00000000 	nop
  4bbc04:	24635990 	addiu	v1,v1,22928
  4bbc08:	00621821 	addu	v1,v1,v0
  4bbc0c:	8fc2003c 	lw	v0,60(s8)
  4bbc10:	00000000 	nop
  4bbc14:	24420011 	addiu	v0,v0,17
  4bbc18:	90630000 	lbu	v1,0(v1)
  4bbc1c:	90420000 	lbu	v0,0(v0)
  4bbc20:	00000000 	nop
  4bbc24:	00621026 	xor	v0,v1,v0
  4bbc28:	304200ff 	andi	v0,v0,0xff
  4bbc2c:	8f83804c 	lw	v1,-32692(gp)
  4bbc30:	00000000 	nop
  4bbc34:	24635990 	addiu	v1,v1,22928
  4bbc38:	00621821 	addu	v1,v1,v0
  4bbc3c:	8fc2003c 	lw	v0,60(s8)
  4bbc40:	00000000 	nop
  4bbc44:	24420009 	addiu	v0,v0,9
  4bbc48:	90630000 	lbu	v1,0(v1)
  4bbc4c:	90420000 	lbu	v0,0(v0)
  4bbc50:	00000000 	nop
  4bbc54:	00621026 	xor	v0,v1,v0
  4bbc58:	304200ff 	andi	v0,v0,0xff
  4bbc5c:	8f83804c 	lw	v1,-32692(gp)
  4bbc60:	00000000 	nop
  4bbc64:	24635890 	addiu	v1,v1,22672
  4bbc68:	00621821 	addu	v1,v1,v0
  4bbc6c:	8fc2003c 	lw	v0,60(s8)
  4bbc70:	00000000 	nop
  4bbc74:	24420001 	addiu	v0,v0,1
  4bbc78:	90630000 	lbu	v1,0(v1)
  4bbc7c:	90420000 	lbu	v0,0(v0)
  4bbc80:	00000000 	nop
  4bbc84:	00621026 	xor	v0,v1,v0
  4bbc88:	304200ff 	andi	v0,v0,0xff
  4bbc8c:	00021080 	sll	v0,v0,0x2
  4bbc90:	24420400 	addiu	v0,v0,1024
  4bbc94:	8f81804c 	lw	at,-32692(gp)
  4bbc98:	00000000 	nop
  4bbc9c:	24215a90 	addiu	at,at,23184
  4bbca0:	00221021 	addu	v0,at,v0
  4bbca4:	8c830000 	lw	v1,0(a0)
  4bbca8:	8c420000 	lw	v0,0(v0)
  4bbcac:	00000000 	nop
  4bbcb0:	00622026 	xor	a0,v1,v0
  4bbcb4:	8fc2003c 	lw	v0,60(s8)
  4bbcb8:	00000000 	nop
  4bbcbc:	2442001a 	addiu	v0,v0,26
  4bbcc0:	90420000 	lbu	v0,0(v0)
  4bbcc4:	00000000 	nop
  4bbcc8:	38420018 	xori	v0,v0,0x18
  4bbccc:	304200ff 	andi	v0,v0,0xff
  4bbcd0:	8f83804c 	lw	v1,-32692(gp)
  4bbcd4:	00000000 	nop
  4bbcd8:	24635890 	addiu	v1,v1,22672
  4bbcdc:	00621821 	addu	v1,v1,v0
  4bbce0:	8fc2003c 	lw	v0,60(s8)
  4bbce4:	00000000 	nop
  4bbce8:	24420012 	addiu	v0,v0,18
  4bbcec:	90630000 	lbu	v1,0(v1)
  4bbcf0:	90420000 	lbu	v0,0(v0)
  4bbcf4:	00000000 	nop
  4bbcf8:	00621026 	xor	v0,v1,v0
  4bbcfc:	304200ff 	andi	v0,v0,0xff
  4bbd00:	8f83804c 	lw	v1,-32692(gp)
  4bbd04:	00000000 	nop
  4bbd08:	24635890 	addiu	v1,v1,22672
  4bbd0c:	00621821 	addu	v1,v1,v0
  4bbd10:	8fc2003c 	lw	v0,60(s8)
  4bbd14:	00000000 	nop
  4bbd18:	2442000a 	addiu	v0,v0,10
  4bbd1c:	90630000 	lbu	v1,0(v1)
  4bbd20:	90420000 	lbu	v0,0(v0)
  4bbd24:	00000000 	nop
  4bbd28:	00621026 	xor	v0,v1,v0
  4bbd2c:	304200ff 	andi	v0,v0,0xff
  4bbd30:	8f83804c 	lw	v1,-32692(gp)
  4bbd34:	00000000 	nop
  4bbd38:	24635990 	addiu	v1,v1,22928
  4bbd3c:	00621821 	addu	v1,v1,v0
  4bbd40:	8fc2003c 	lw	v0,60(s8)
  4bbd44:	00000000 	nop
  4bbd48:	24420002 	addiu	v0,v0,2
  4bbd4c:	90630000 	lbu	v1,0(v1)
  4bbd50:	90420000 	lbu	v0,0(v0)
  4bbd54:	00000000 	nop
  4bbd58:	00621026 	xor	v0,v1,v0
  4bbd5c:	304200ff 	andi	v0,v0,0xff
  4bbd60:	00021080 	sll	v0,v0,0x2
  4bbd64:	24420800 	addiu	v0,v0,2048
  4bbd68:	8f81804c 	lw	at,-32692(gp)
  4bbd6c:	00000000 	nop
  4bbd70:	24215a90 	addiu	at,at,23184
  4bbd74:	00221021 	addu	v0,at,v0
  4bbd78:	8c420000 	lw	v0,0(v0)
  4bbd7c:	00000000 	nop
  4bbd80:	00822026 	xor	a0,a0,v0
  4bbd84:	8fc2003c 	lw	v0,60(s8)
  4bbd88:	00000000 	nop
  4bbd8c:	2442001b 	addiu	v0,v0,27
  4bbd90:	90420000 	lbu	v0,0(v0)
  4bbd94:	00000000 	nop
  4bbd98:	38420037 	xori	v0,v0,0x37
  4bbd9c:	304200ff 	andi	v0,v0,0xff
  4bbda0:	8f83804c 	lw	v1,-32692(gp)
  4bbda4:	00000000 	nop
  4bbda8:	24635890 	addiu	v1,v1,22672
  4bbdac:	00621821 	addu	v1,v1,v0
  4bbdb0:	8fc2003c 	lw	v0,60(s8)
  4bbdb4:	00000000 	nop
  4bbdb8:	24420013 	addiu	v0,v0,19
  4bbdbc:	90630000 	lbu	v1,0(v1)
  4bbdc0:	90420000 	lbu	v0,0(v0)
  4bbdc4:	00000000 	nop
  4bbdc8:	00621026 	xor	v0,v1,v0
  4bbdcc:	304200ff 	andi	v0,v0,0xff
  4bbdd0:	8f83804c 	lw	v1,-32692(gp)
  4bbdd4:	00000000 	nop
  4bbdd8:	24635990 	addiu	v1,v1,22928
  4bbddc:	00621821 	addu	v1,v1,v0
  4bbde0:	8fc2003c 	lw	v0,60(s8)
  4bbde4:	00000000 	nop
  4bbde8:	2442000b 	addiu	v0,v0,11
  4bbdec:	90630000 	lbu	v1,0(v1)
  4bbdf0:	90420000 	lbu	v0,0(v0)
  4bbdf4:	00000000 	nop
  4bbdf8:	00621026 	xor	v0,v1,v0
  4bbdfc:	304200ff 	andi	v0,v0,0xff
  4bbe00:	8f83804c 	lw	v1,-32692(gp)
  4bbe04:	00000000 	nop
  4bbe08:	24635990 	addiu	v1,v1,22928
  4bbe0c:	00621821 	addu	v1,v1,v0
  4bbe10:	8fc2003c 	lw	v0,60(s8)
  4bbe14:	00000000 	nop
  4bbe18:	24420003 	addiu	v0,v0,3
  4bbe1c:	90630000 	lbu	v1,0(v1)
  4bbe20:	90420000 	lbu	v0,0(v0)
  4bbe24:	00000000 	nop
  4bbe28:	00621026 	xor	v0,v1,v0
  4bbe2c:	304200ff 	andi	v0,v0,0xff
  4bbe30:	00021080 	sll	v0,v0,0x2
  4bbe34:	24420c00 	addiu	v0,v0,3072
  4bbe38:	8f81804c 	lw	at,-32692(gp)
  4bbe3c:	00000000 	nop
  4bbe40:	24215a90 	addiu	at,at,23184
  4bbe44:	00221021 	addu	v0,at,v0
  4bbe48:	8c420000 	lw	v0,0(v0)
  4bbe4c:	00000000 	nop
  4bbe50:	00821026 	xor	v0,a0,v0
  4bbe54:	afc20014 	sw	v0,20(s8)
  4bbe58:	8fc2003c 	lw	v0,60(s8)
  4bbe5c:	00000000 	nop
  4bbe60:	2442001c 	addiu	v0,v0,28
  4bbe64:	90420000 	lbu	v0,0(v0)
  4bbe68:	00000000 	nop
  4bbe6c:	38420071 	xori	v0,v0,0x71
  4bbe70:	304200ff 	andi	v0,v0,0xff
  4bbe74:	8f83804c 	lw	v1,-32692(gp)
  4bbe78:	00000000 	nop
  4bbe7c:	24635990 	addiu	v1,v1,22928
  4bbe80:	00621821 	addu	v1,v1,v0
  4bbe84:	8fc2003c 	lw	v0,60(s8)
  4bbe88:	00000000 	nop
  4bbe8c:	24420014 	addiu	v0,v0,20
  4bbe90:	90630000 	lbu	v1,0(v1)
  4bbe94:	90420000 	lbu	v0,0(v0)
  4bbe98:	00000000 	nop
  4bbe9c:	00621026 	xor	v0,v1,v0
  4bbea0:	304200ff 	andi	v0,v0,0xff
  4bbea4:	8f83804c 	lw	v1,-32692(gp)
  4bbea8:	00000000 	nop
  4bbeac:	24635890 	addiu	v1,v1,22672
  4bbeb0:	00621821 	addu	v1,v1,v0
  4bbeb4:	8fc2003c 	lw	v0,60(s8)
  4bbeb8:	00000000 	nop
  4bbebc:	2442000c 	addiu	v0,v0,12
  4bbec0:	90630000 	lbu	v1,0(v1)
  4bbec4:	90420000 	lbu	v0,0(v0)
  4bbec8:	00000000 	nop
  4bbecc:	00621026 	xor	v0,v1,v0
  4bbed0:	304200ff 	andi	v0,v0,0xff
  4bbed4:	8f83804c 	lw	v1,-32692(gp)
  4bbed8:	00000000 	nop
  4bbedc:	24635890 	addiu	v1,v1,22672
  4bbee0:	00621821 	addu	v1,v1,v0
  4bbee4:	8fc2003c 	lw	v0,60(s8)
  4bbee8:	00000000 	nop
  4bbeec:	24420004 	addiu	v0,v0,4
  4bbef0:	90630000 	lbu	v1,0(v1)
  4bbef4:	90420000 	lbu	v0,0(v0)
  4bbef8:	00000000 	nop
  4bbefc:	00621026 	xor	v0,v1,v0
  4bbf00:	304200ff 	andi	v0,v0,0xff
  4bbf04:	00021080 	sll	v0,v0,0x2
  4bbf08:	8f84804c 	lw	a0,-32692(gp)
  4bbf0c:	00000000 	nop
  4bbf10:	24845a90 	addiu	a0,a0,23184
  4bbf14:	00822021 	addu	a0,a0,v0
  4bbf18:	8fc2003c 	lw	v0,60(s8)
  4bbf1c:	00000000 	nop
  4bbf20:	2442001d 	addiu	v0,v0,29
  4bbf24:	90420000 	lbu	v0,0(v0)
  4bbf28:	00000000 	nop
  4bbf2c:	384200f7 	xori	v0,v0,0xf7
  4bbf30:	304200ff 	andi	v0,v0,0xff
  4bbf34:	8f83804c 	lw	v1,-32692(gp)
  4bbf38:	00000000 	nop
  4bbf3c:	24635990 	addiu	v1,v1,22928
  4bbf40:	00621821 	addu	v1,v1,v0
  4bbf44:	8fc2003c 	lw	v0,60(s8)
  4bbf48:	00000000 	nop
  4bbf4c:	24420015 	addiu	v0,v0,21
  4bbf50:	90630000 	lbu	v1,0(v1)
  4bbf54:	90420000 	lbu	v0,0(v0)
  4bbf58:	00000000 	nop
  4bbf5c:	00621026 	xor	v0,v1,v0
  4bbf60:	304200ff 	andi	v0,v0,0xff
  4bbf64:	8f83804c 	lw	v1,-32692(gp)
  4bbf68:	00000000 	nop
  4bbf6c:	24635990 	addiu	v1,v1,22928
  4bbf70:	00621821 	addu	v1,v1,v0
  4bbf74:	8fc2003c 	lw	v0,60(s8)
  4bbf78:	00000000 	nop
  4bbf7c:	2442000d 	addiu	v0,v0,13
  4bbf80:	90630000 	lbu	v1,0(v1)
  4bbf84:	90420000 	lbu	v0,0(v0)
  4bbf88:	00000000 	nop
  4bbf8c:	00621026 	xor	v0,v1,v0
  4bbf90:	304200ff 	andi	v0,v0,0xff
  4bbf94:	8f83804c 	lw	v1,-32692(gp)
  4bbf98:	00000000 	nop
  4bbf9c:	24635890 	addiu	v1,v1,22672
  4bbfa0:	00621821 	addu	v1,v1,v0
  4bbfa4:	8fc2003c 	lw	v0,60(s8)
  4bbfa8:	00000000 	nop
  4bbfac:	24420005 	addiu	v0,v0,5
  4bbfb0:	90630000 	lbu	v1,0(v1)
  4bbfb4:	90420000 	lbu	v0,0(v0)
  4bbfb8:	00000000 	nop
  4bbfbc:	00621026 	xor	v0,v1,v0
  4bbfc0:	304200ff 	andi	v0,v0,0xff
  4bbfc4:	00021080 	sll	v0,v0,0x2
  4bbfc8:	24420400 	addiu	v0,v0,1024
  4bbfcc:	8f81804c 	lw	at,-32692(gp)
  4bbfd0:	00000000 	nop
  4bbfd4:	24215a90 	addiu	at,at,23184
  4bbfd8:	00221021 	addu	v0,at,v0
  4bbfdc:	8c830000 	lw	v1,0(a0)
  4bbfe0:	8c420000 	lw	v0,0(v0)
  4bbfe4:	00000000 	nop
  4bbfe8:	00622026 	xor	a0,v1,v0
  4bbfec:	8fc2003c 	lw	v0,60(s8)
  4bbff0:	00000000 	nop
  4bbff4:	2442001e 	addiu	v0,v0,30
  4bbff8:	90420000 	lbu	v0,0(v0)
  4bbffc:	00000000 	nop
  4bc000:	384200f7 	xori	v0,v0,0xf7
  4bc004:	304200ff 	andi	v0,v0,0xff
  4bc008:	8f83804c 	lw	v1,-32692(gp)
  4bc00c:	00000000 	nop
  4bc010:	24635890 	addiu	v1,v1,22672
  4bc014:	00621821 	addu	v1,v1,v0
  4bc018:	8fc2003c 	lw	v0,60(s8)
  4bc01c:	00000000 	nop
  4bc020:	24420016 	addiu	v0,v0,22
  4bc024:	90630000 	lbu	v1,0(v1)
  4bc028:	90420000 	lbu	v0,0(v0)
  4bc02c:	00000000 	nop
  4bc030:	00621026 	xor	v0,v1,v0
  4bc034:	304200ff 	andi	v0,v0,0xff
  4bc038:	8f83804c 	lw	v1,-32692(gp)
  4bc03c:	00000000 	nop
  4bc040:	24635890 	addiu	v1,v1,22672
  4bc044:	00621821 	addu	v1,v1,v0
  4bc048:	8fc2003c 	lw	v0,60(s8)
  4bc04c:	00000000 	nop
  4bc050:	2442000e 	addiu	v0,v0,14
  4bc054:	90630000 	lbu	v1,0(v1)
  4bc058:	90420000 	lbu	v0,0(v0)
  4bc05c:	00000000 	nop
  4bc060:	00621026 	xor	v0,v1,v0
  4bc064:	304200ff 	andi	v0,v0,0xff
  4bc068:	8f83804c 	lw	v1,-32692(gp)
  4bc06c:	00000000 	nop
  4bc070:	24635990 	addiu	v1,v1,22928
  4bc074:	00621821 	addu	v1,v1,v0
  4bc078:	8fc2003c 	lw	v0,60(s8)
  4bc07c:	00000000 	nop
  4bc080:	24420006 	addiu	v0,v0,6
  4bc084:	90630000 	lbu	v1,0(v1)
  4bc088:	90420000 	lbu	v0,0(v0)
  4bc08c:	00000000 	nop
  4bc090:	00621026 	xor	v0,v1,v0
  4bc094:	304200ff 	andi	v0,v0,0xff
  4bc098:	00021080 	sll	v0,v0,0x2
  4bc09c:	24420800 	addiu	v0,v0,2048
  4bc0a0:	8f81804c 	lw	at,-32692(gp)
  4bc0a4:	00000000 	nop
  4bc0a8:	24215a90 	addiu	at,at,23184
  4bc0ac:	00221021 	addu	v0,at,v0
  4bc0b0:	8c420000 	lw	v0,0(v0)
  4bc0b4:	00000000 	nop
  4bc0b8:	00822026 	xor	a0,a0,v0
  4bc0bc:	8fc2003c 	lw	v0,60(s8)
  4bc0c0:	00000000 	nop
  4bc0c4:	2442001f 	addiu	v0,v0,31
  4bc0c8:	90420000 	lbu	v0,0(v0)
  4bc0cc:	00000000 	nop
  4bc0d0:	38420071 	xori	v0,v0,0x71
  4bc0d4:	304200ff 	andi	v0,v0,0xff
  4bc0d8:	8f83804c 	lw	v1,-32692(gp)
  4bc0dc:	00000000 	nop
  4bc0e0:	24635890 	addiu	v1,v1,22672
  4bc0e4:	00621821 	addu	v1,v1,v0
  4bc0e8:	8fc2003c 	lw	v0,60(s8)
  4bc0ec:	00000000 	nop
  4bc0f0:	24420017 	addiu	v0,v0,23
  4bc0f4:	90630000 	lbu	v1,0(v1)
  4bc0f8:	90420000 	lbu	v0,0(v0)
  4bc0fc:	00000000 	nop
  4bc100:	00621026 	xor	v0,v1,v0
  4bc104:	304200ff 	andi	v0,v0,0xff
  4bc108:	8f83804c 	lw	v1,-32692(gp)
  4bc10c:	00000000 	nop
  4bc110:	24635990 	addiu	v1,v1,22928
  4bc114:	00621821 	addu	v1,v1,v0
  4bc118:	8fc2003c 	lw	v0,60(s8)
  4bc11c:	00000000 	nop
  4bc120:	2442000f 	addiu	v0,v0,15
  4bc124:	90630000 	lbu	v1,0(v1)
  4bc128:	90420000 	lbu	v0,0(v0)
  4bc12c:	00000000 	nop
  4bc130:	00621026 	xor	v0,v1,v0
  4bc134:	304200ff 	andi	v0,v0,0xff
  4bc138:	8f83804c 	lw	v1,-32692(gp)
  4bc13c:	00000000 	nop
  4bc140:	24635990 	addiu	v1,v1,22928
  4bc144:	00621821 	addu	v1,v1,v0
  4bc148:	8fc2003c 	lw	v0,60(s8)
  4bc14c:	00000000 	nop
  4bc150:	24420007 	addiu	v0,v0,7
  4bc154:	90630000 	lbu	v1,0(v1)
  4bc158:	90420000 	lbu	v0,0(v0)
  4bc15c:	00000000 	nop
  4bc160:	00621026 	xor	v0,v1,v0
  4bc164:	304200ff 	andi	v0,v0,0xff
  4bc168:	00021080 	sll	v0,v0,0x2
  4bc16c:	24420c00 	addiu	v0,v0,3072
  4bc170:	8f81804c 	lw	at,-32692(gp)
  4bc174:	00000000 	nop
  4bc178:	24215a90 	addiu	at,at,23184
  4bc17c:	00221021 	addu	v0,at,v0
  4bc180:	8c420000 	lw	v0,0(v0)
  4bc184:	00000000 	nop
  4bc188:	00821026 	xor	v0,a0,v0
  4bc18c:	afc20018 	sw	v0,24(s8)
  4bc190:	8fc20018 	lw	v0,24(s8)
  4bc194:	00000000 	nop
  4bc198:	00021a00 	sll	v1,v0,0x8
  4bc19c:	00021602 	srl	v0,v0,0x18
  4bc1a0:	00621025 	or	v0,v1,v0
  4bc1a4:	afc20018 	sw	v0,24(s8)
  4bc1a8:	8fc30014 	lw	v1,20(s8)
  4bc1ac:	8fc20018 	lw	v0,24(s8)
  4bc1b0:	00000000 	nop
  4bc1b4:	00621021 	addu	v0,v1,v0
  4bc1b8:	afc20014 	sw	v0,20(s8)
  4bc1bc:	8fc30018 	lw	v1,24(s8)
  4bc1c0:	8fc20014 	lw	v0,20(s8)
  4bc1c4:	00000000 	nop
  4bc1c8:	00621021 	addu	v0,v1,v0
  4bc1cc:	afc20018 	sw	v0,24(s8)
  4bc1d0:	8fc30014 	lw	v1,20(s8)
  4bc1d4:	8fc20038 	lw	v0,56(s8)
  4bc1d8:	00000000 	nop
  4bc1dc:	ac431050 	sw	v1,4176(v0)
  4bc1e0:	8fc20018 	lw	v0,24(s8)
  4bc1e4:	00000000 	nop
  4bc1e8:	00021a40 	sll	v1,v0,0x9
  4bc1ec:	000215c2 	srl	v0,v0,0x17
  4bc1f0:	00621825 	or	v1,v1,v0
  4bc1f4:	8fc20038 	lw	v0,56(s8)
  4bc1f8:	00000000 	nop
  4bc1fc:	ac431054 	sw	v1,4180(v0)
		CALC_K256 (k, 14, 0xEC, 0xF1, 0x6C, 0xE1);
  4bc200:	8fc2003c 	lw	v0,60(s8)
  4bc204:	00000000 	nop
  4bc208:	24420018 	addiu	v0,v0,24
  4bc20c:	90420000 	lbu	v0,0(v0)
  4bc210:	00000000 	nop
  4bc214:	384200f1 	xori	v0,v0,0xf1
  4bc218:	304200ff 	andi	v0,v0,0xff
  4bc21c:	8f83804c 	lw	v1,-32692(gp)
  4bc220:	00000000 	nop
  4bc224:	24635990 	addiu	v1,v1,22928
  4bc228:	00621821 	addu	v1,v1,v0
  4bc22c:	8fc2003c 	lw	v0,60(s8)
  4bc230:	00000000 	nop
  4bc234:	24420010 	addiu	v0,v0,16
  4bc238:	90630000 	lbu	v1,0(v1)
  4bc23c:	90420000 	lbu	v0,0(v0)
  4bc240:	00000000 	nop
  4bc244:	00621026 	xor	v0,v1,v0
  4bc248:	304200ff 	andi	v0,v0,0xff
  4bc24c:	8f83804c 	lw	v1,-32692(gp)
  4bc250:	00000000 	nop
  4bc254:	24635890 	addiu	v1,v1,22672
  4bc258:	00621821 	addu	v1,v1,v0
  4bc25c:	8fc2003c 	lw	v0,60(s8)
  4bc260:	00000000 	nop
  4bc264:	24420008 	addiu	v0,v0,8
  4bc268:	90630000 	lbu	v1,0(v1)
  4bc26c:	90420000 	lbu	v0,0(v0)
  4bc270:	00000000 	nop
  4bc274:	00621026 	xor	v0,v1,v0
  4bc278:	304200ff 	andi	v0,v0,0xff
  4bc27c:	8f81804c 	lw	at,-32692(gp)
  4bc280:	00000000 	nop
  4bc284:	24215890 	addiu	at,at,22672
  4bc288:	00221021 	addu	v0,at,v0
  4bc28c:	90430000 	lbu	v1,0(v0)
  4bc290:	8fc2003c 	lw	v0,60(s8)
  4bc294:	00000000 	nop
  4bc298:	90420000 	lbu	v0,0(v0)
  4bc29c:	00000000 	nop
  4bc2a0:	00621026 	xor	v0,v1,v0
  4bc2a4:	304200ff 	andi	v0,v0,0xff
  4bc2a8:	00021080 	sll	v0,v0,0x2
  4bc2ac:	8f84804c 	lw	a0,-32692(gp)
  4bc2b0:	00000000 	nop
  4bc2b4:	24845a90 	addiu	a0,a0,23184
  4bc2b8:	00822021 	addu	a0,a0,v0
  4bc2bc:	8fc2003c 	lw	v0,60(s8)
  4bc2c0:	00000000 	nop
  4bc2c4:	24420019 	addiu	v0,v0,25
  4bc2c8:	90420000 	lbu	v0,0(v0)
  4bc2cc:	00000000 	nop
  4bc2d0:	384200ec 	xori	v0,v0,0xec
  4bc2d4:	304200ff 	andi	v0,v0,0xff
  4bc2d8:	8f83804c 	lw	v1,-32692(gp)
  4bc2dc:	00000000 	nop
  4bc2e0:	24635990 	addiu	v1,v1,22928
  4bc2e4:	00621821 	addu	v1,v1,v0
  4bc2e8:	8fc2003c 	lw	v0,60(s8)
  4bc2ec:	00000000 	nop
  4bc2f0:	24420011 	addiu	v0,v0,17
  4bc2f4:	90630000 	lbu	v1,0(v1)
  4bc2f8:	90420000 	lbu	v0,0(v0)
  4bc2fc:	00000000 	nop
  4bc300:	00621026 	xor	v0,v1,v0
  4bc304:	304200ff 	andi	v0,v0,0xff
  4bc308:	8f83804c 	lw	v1,-32692(gp)
  4bc30c:	00000000 	nop
  4bc310:	24635990 	addiu	v1,v1,22928
  4bc314:	00621821 	addu	v1,v1,v0
  4bc318:	8fc2003c 	lw	v0,60(s8)
  4bc31c:	00000000 	nop
  4bc320:	24420009 	addiu	v0,v0,9
  4bc324:	90630000 	lbu	v1,0(v1)
  4bc328:	90420000 	lbu	v0,0(v0)
  4bc32c:	00000000 	nop
  4bc330:	00621026 	xor	v0,v1,v0
  4bc334:	304200ff 	andi	v0,v0,0xff
  4bc338:	8f83804c 	lw	v1,-32692(gp)
  4bc33c:	00000000 	nop
  4bc340:	24635890 	addiu	v1,v1,22672
  4bc344:	00621821 	addu	v1,v1,v0
  4bc348:	8fc2003c 	lw	v0,60(s8)
  4bc34c:	00000000 	nop
  4bc350:	24420001 	addiu	v0,v0,1
  4bc354:	90630000 	lbu	v1,0(v1)
  4bc358:	90420000 	lbu	v0,0(v0)
  4bc35c:	00000000 	nop
  4bc360:	00621026 	xor	v0,v1,v0
  4bc364:	304200ff 	andi	v0,v0,0xff
  4bc368:	00021080 	sll	v0,v0,0x2
  4bc36c:	24420400 	addiu	v0,v0,1024
  4bc370:	8f81804c 	lw	at,-32692(gp)
  4bc374:	00000000 	nop
  4bc378:	24215a90 	addiu	at,at,23184
  4bc37c:	00221021 	addu	v0,at,v0
  4bc380:	8c830000 	lw	v1,0(a0)
  4bc384:	8c420000 	lw	v0,0(v0)
  4bc388:	00000000 	nop
  4bc38c:	00622026 	xor	a0,v1,v0
  4bc390:	8fc2003c 	lw	v0,60(s8)
  4bc394:	00000000 	nop
  4bc398:	2442001a 	addiu	v0,v0,26
  4bc39c:	90420000 	lbu	v0,0(v0)
  4bc3a0:	00000000 	nop
  4bc3a4:	384200ec 	xori	v0,v0,0xec
  4bc3a8:	304200ff 	andi	v0,v0,0xff
  4bc3ac:	8f83804c 	lw	v1,-32692(gp)
  4bc3b0:	00000000 	nop
  4bc3b4:	24635890 	addiu	v1,v1,22672
  4bc3b8:	00621821 	addu	v1,v1,v0
  4bc3bc:	8fc2003c 	lw	v0,60(s8)
  4bc3c0:	00000000 	nop
  4bc3c4:	24420012 	addiu	v0,v0,18
  4bc3c8:	90630000 	lbu	v1,0(v1)
  4bc3cc:	90420000 	lbu	v0,0(v0)
  4bc3d0:	00000000 	nop
  4bc3d4:	00621026 	xor	v0,v1,v0
  4bc3d8:	304200ff 	andi	v0,v0,0xff
  4bc3dc:	8f83804c 	lw	v1,-32692(gp)
  4bc3e0:	00000000 	nop
  4bc3e4:	24635890 	addiu	v1,v1,22672
  4bc3e8:	00621821 	addu	v1,v1,v0
  4bc3ec:	8fc2003c 	lw	v0,60(s8)
  4bc3f0:	00000000 	nop
  4bc3f4:	2442000a 	addiu	v0,v0,10
  4bc3f8:	90630000 	lbu	v1,0(v1)
  4bc3fc:	90420000 	lbu	v0,0(v0)
  4bc400:	00000000 	nop
  4bc404:	00621026 	xor	v0,v1,v0
  4bc408:	304200ff 	andi	v0,v0,0xff
  4bc40c:	8f83804c 	lw	v1,-32692(gp)
  4bc410:	00000000 	nop
  4bc414:	24635990 	addiu	v1,v1,22928
  4bc418:	00621821 	addu	v1,v1,v0
  4bc41c:	8fc2003c 	lw	v0,60(s8)
  4bc420:	00000000 	nop
  4bc424:	24420002 	addiu	v0,v0,2
  4bc428:	90630000 	lbu	v1,0(v1)
  4bc42c:	90420000 	lbu	v0,0(v0)
  4bc430:	00000000 	nop
  4bc434:	00621026 	xor	v0,v1,v0
  4bc438:	304200ff 	andi	v0,v0,0xff
  4bc43c:	00021080 	sll	v0,v0,0x2
  4bc440:	24420800 	addiu	v0,v0,2048
  4bc444:	8f81804c 	lw	at,-32692(gp)
  4bc448:	00000000 	nop
  4bc44c:	24215a90 	addiu	at,at,23184
  4bc450:	00221021 	addu	v0,at,v0
  4bc454:	8c420000 	lw	v0,0(v0)
  4bc458:	00000000 	nop
  4bc45c:	00822026 	xor	a0,a0,v0
  4bc460:	8fc2003c 	lw	v0,60(s8)
  4bc464:	00000000 	nop
  4bc468:	2442001b 	addiu	v0,v0,27
  4bc46c:	90420000 	lbu	v0,0(v0)
  4bc470:	00000000 	nop
  4bc474:	384200f1 	xori	v0,v0,0xf1
  4bc478:	304200ff 	andi	v0,v0,0xff
  4bc47c:	8f83804c 	lw	v1,-32692(gp)
  4bc480:	00000000 	nop
  4bc484:	24635890 	addiu	v1,v1,22672
  4bc488:	00621821 	addu	v1,v1,v0
  4bc48c:	8fc2003c 	lw	v0,60(s8)
  4bc490:	00000000 	nop
  4bc494:	24420013 	addiu	v0,v0,19
  4bc498:	90630000 	lbu	v1,0(v1)
  4bc49c:	90420000 	lbu	v0,0(v0)
  4bc4a0:	00000000 	nop
  4bc4a4:	00621026 	xor	v0,v1,v0
  4bc4a8:	304200ff 	andi	v0,v0,0xff
  4bc4ac:	8f83804c 	lw	v1,-32692(gp)
  4bc4b0:	00000000 	nop
  4bc4b4:	24635990 	addiu	v1,v1,22928
  4bc4b8:	00621821 	addu	v1,v1,v0
  4bc4bc:	8fc2003c 	lw	v0,60(s8)
  4bc4c0:	00000000 	nop
  4bc4c4:	2442000b 	addiu	v0,v0,11
  4bc4c8:	90630000 	lbu	v1,0(v1)
  4bc4cc:	90420000 	lbu	v0,0(v0)
  4bc4d0:	00000000 	nop
  4bc4d4:	00621026 	xor	v0,v1,v0
  4bc4d8:	304200ff 	andi	v0,v0,0xff
  4bc4dc:	8f83804c 	lw	v1,-32692(gp)
  4bc4e0:	00000000 	nop
  4bc4e4:	24635990 	addiu	v1,v1,22928
  4bc4e8:	00621821 	addu	v1,v1,v0
  4bc4ec:	8fc2003c 	lw	v0,60(s8)
  4bc4f0:	00000000 	nop
  4bc4f4:	24420003 	addiu	v0,v0,3
  4bc4f8:	90630000 	lbu	v1,0(v1)
  4bc4fc:	90420000 	lbu	v0,0(v0)
  4bc500:	00000000 	nop
  4bc504:	00621026 	xor	v0,v1,v0
  4bc508:	304200ff 	andi	v0,v0,0xff
  4bc50c:	00021080 	sll	v0,v0,0x2
  4bc510:	24420c00 	addiu	v0,v0,3072
  4bc514:	8f81804c 	lw	at,-32692(gp)
  4bc518:	00000000 	nop
  4bc51c:	24215a90 	addiu	at,at,23184
  4bc520:	00221021 	addu	v0,at,v0
  4bc524:	8c420000 	lw	v0,0(v0)
  4bc528:	00000000 	nop
  4bc52c:	00821026 	xor	v0,a0,v0
  4bc530:	afc20014 	sw	v0,20(s8)
  4bc534:	8fc2003c 	lw	v0,60(s8)
  4bc538:	00000000 	nop
  4bc53c:	2442001c 	addiu	v0,v0,28
  4bc540:	90420000 	lbu	v0,0(v0)
  4bc544:	00000000 	nop
  4bc548:	384200e1 	xori	v0,v0,0xe1
  4bc54c:	304200ff 	andi	v0,v0,0xff
  4bc550:	8f83804c 	lw	v1,-32692(gp)
  4bc554:	00000000 	nop
  4bc558:	24635990 	addiu	v1,v1,22928
  4bc55c:	00621821 	addu	v1,v1,v0
  4bc560:	8fc2003c 	lw	v0,60(s8)
  4bc564:	00000000 	nop
  4bc568:	24420014 	addiu	v0,v0,20
  4bc56c:	90630000 	lbu	v1,0(v1)
  4bc570:	90420000 	lbu	v0,0(v0)
  4bc574:	00000000 	nop
  4bc578:	00621026 	xor	v0,v1,v0
  4bc57c:	304200ff 	andi	v0,v0,0xff
  4bc580:	8f83804c 	lw	v1,-32692(gp)
  4bc584:	00000000 	nop
  4bc588:	24635890 	addiu	v1,v1,22672
  4bc58c:	00621821 	addu	v1,v1,v0
  4bc590:	8fc2003c 	lw	v0,60(s8)
  4bc594:	00000000 	nop
  4bc598:	2442000c 	addiu	v0,v0,12
  4bc59c:	90630000 	lbu	v1,0(v1)
  4bc5a0:	90420000 	lbu	v0,0(v0)
  4bc5a4:	00000000 	nop
  4bc5a8:	00621026 	xor	v0,v1,v0
  4bc5ac:	304200ff 	andi	v0,v0,0xff
  4bc5b0:	8f83804c 	lw	v1,-32692(gp)
  4bc5b4:	00000000 	nop
  4bc5b8:	24635890 	addiu	v1,v1,22672
  4bc5bc:	00621821 	addu	v1,v1,v0
  4bc5c0:	8fc2003c 	lw	v0,60(s8)
  4bc5c4:	00000000 	nop
  4bc5c8:	24420004 	addiu	v0,v0,4
  4bc5cc:	90630000 	lbu	v1,0(v1)
  4bc5d0:	90420000 	lbu	v0,0(v0)
  4bc5d4:	00000000 	nop
  4bc5d8:	00621026 	xor	v0,v1,v0
  4bc5dc:	304200ff 	andi	v0,v0,0xff
  4bc5e0:	00021080 	sll	v0,v0,0x2
  4bc5e4:	8f84804c 	lw	a0,-32692(gp)
  4bc5e8:	00000000 	nop
  4bc5ec:	24845a90 	addiu	a0,a0,23184
  4bc5f0:	00822021 	addu	a0,a0,v0
  4bc5f4:	8fc2003c 	lw	v0,60(s8)
  4bc5f8:	00000000 	nop
  4bc5fc:	2442001d 	addiu	v0,v0,29
  4bc600:	90420000 	lbu	v0,0(v0)
  4bc604:	00000000 	nop
  4bc608:	3842006c 	xori	v0,v0,0x6c
  4bc60c:	304200ff 	andi	v0,v0,0xff
  4bc610:	8f83804c 	lw	v1,-32692(gp)
  4bc614:	00000000 	nop
  4bc618:	24635990 	addiu	v1,v1,22928
  4bc61c:	00621821 	addu	v1,v1,v0
  4bc620:	8fc2003c 	lw	v0,60(s8)
  4bc624:	00000000 	nop
  4bc628:	24420015 	addiu	v0,v0,21
  4bc62c:	90630000 	lbu	v1,0(v1)
  4bc630:	90420000 	lbu	v0,0(v0)
  4bc634:	00000000 	nop
  4bc638:	00621026 	xor	v0,v1,v0
  4bc63c:	304200ff 	andi	v0,v0,0xff
  4bc640:	8f83804c 	lw	v1,-32692(gp)
  4bc644:	00000000 	nop
  4bc648:	24635990 	addiu	v1,v1,22928
  4bc64c:	00621821 	addu	v1,v1,v0
  4bc650:	8fc2003c 	lw	v0,60(s8)
  4bc654:	00000000 	nop
  4bc658:	2442000d 	addiu	v0,v0,13
  4bc65c:	90630000 	lbu	v1,0(v1)
  4bc660:	90420000 	lbu	v0,0(v0)
  4bc664:	00000000 	nop
  4bc668:	00621026 	xor	v0,v1,v0
  4bc66c:	304200ff 	andi	v0,v0,0xff
  4bc670:	8f83804c 	lw	v1,-32692(gp)
  4bc674:	00000000 	nop
  4bc678:	24635890 	addiu	v1,v1,22672
  4bc67c:	00621821 	addu	v1,v1,v0
  4bc680:	8fc2003c 	lw	v0,60(s8)
  4bc684:	00000000 	nop
  4bc688:	24420005 	addiu	v0,v0,5
  4bc68c:	90630000 	lbu	v1,0(v1)
  4bc690:	90420000 	lbu	v0,0(v0)
  4bc694:	00000000 	nop
  4bc698:	00621026 	xor	v0,v1,v0
  4bc69c:	304200ff 	andi	v0,v0,0xff
  4bc6a0:	00021080 	sll	v0,v0,0x2
  4bc6a4:	24420400 	addiu	v0,v0,1024
  4bc6a8:	8f81804c 	lw	at,-32692(gp)
  4bc6ac:	00000000 	nop
  4bc6b0:	24215a90 	addiu	at,at,23184
  4bc6b4:	00221021 	addu	v0,at,v0
  4bc6b8:	8c830000 	lw	v1,0(a0)
  4bc6bc:	8c420000 	lw	v0,0(v0)
  4bc6c0:	00000000 	nop
  4bc6c4:	00622026 	xor	a0,v1,v0
  4bc6c8:	8fc2003c 	lw	v0,60(s8)
  4bc6cc:	00000000 	nop
  4bc6d0:	2442001e 	addiu	v0,v0,30
  4bc6d4:	90420000 	lbu	v0,0(v0)
  4bc6d8:	00000000 	nop
  4bc6dc:	3842006c 	xori	v0,v0,0x6c
  4bc6e0:	304200ff 	andi	v0,v0,0xff
  4bc6e4:	8f83804c 	lw	v1,-32692(gp)
  4bc6e8:	00000000 	nop
  4bc6ec:	24635890 	addiu	v1,v1,22672
  4bc6f0:	00621821 	addu	v1,v1,v0
  4bc6f4:	8fc2003c 	lw	v0,60(s8)
  4bc6f8:	00000000 	nop
  4bc6fc:	24420016 	addiu	v0,v0,22
  4bc700:	90630000 	lbu	v1,0(v1)
  4bc704:	90420000 	lbu	v0,0(v0)
  4bc708:	00000000 	nop
  4bc70c:	00621026 	xor	v0,v1,v0
  4bc710:	304200ff 	andi	v0,v0,0xff
  4bc714:	8f83804c 	lw	v1,-32692(gp)
  4bc718:	00000000 	nop
  4bc71c:	24635890 	addiu	v1,v1,22672
  4bc720:	00621821 	addu	v1,v1,v0
  4bc724:	8fc2003c 	lw	v0,60(s8)
  4bc728:	00000000 	nop
  4bc72c:	2442000e 	addiu	v0,v0,14
  4bc730:	90630000 	lbu	v1,0(v1)
  4bc734:	90420000 	lbu	v0,0(v0)
  4bc738:	00000000 	nop
  4bc73c:	00621026 	xor	v0,v1,v0
  4bc740:	304200ff 	andi	v0,v0,0xff
  4bc744:	8f83804c 	lw	v1,-32692(gp)
  4bc748:	00000000 	nop
  4bc74c:	24635990 	addiu	v1,v1,22928
  4bc750:	00621821 	addu	v1,v1,v0
  4bc754:	8fc2003c 	lw	v0,60(s8)
  4bc758:	00000000 	nop
  4bc75c:	24420006 	addiu	v0,v0,6
  4bc760:	90630000 	lbu	v1,0(v1)
  4bc764:	90420000 	lbu	v0,0(v0)
  4bc768:	00000000 	nop
  4bc76c:	00621026 	xor	v0,v1,v0
  4bc770:	304200ff 	andi	v0,v0,0xff
  4bc774:	00021080 	sll	v0,v0,0x2
  4bc778:	24420800 	addiu	v0,v0,2048
  4bc77c:	8f81804c 	lw	at,-32692(gp)
  4bc780:	00000000 	nop
  4bc784:	24215a90 	addiu	at,at,23184
  4bc788:	00221021 	addu	v0,at,v0
  4bc78c:	8c420000 	lw	v0,0(v0)
  4bc790:	00000000 	nop
  4bc794:	00822026 	xor	a0,a0,v0
  4bc798:	8fc2003c 	lw	v0,60(s8)
  4bc79c:	00000000 	nop
  4bc7a0:	2442001f 	addiu	v0,v0,31
  4bc7a4:	90420000 	lbu	v0,0(v0)
  4bc7a8:	00000000 	nop
  4bc7ac:	384200e1 	xori	v0,v0,0xe1
  4bc7b0:	304200ff 	andi	v0,v0,0xff
  4bc7b4:	8f83804c 	lw	v1,-32692(gp)
  4bc7b8:	00000000 	nop
  4bc7bc:	24635890 	addiu	v1,v1,22672
  4bc7c0:	00621821 	addu	v1,v1,v0
  4bc7c4:	8fc2003c 	lw	v0,60(s8)
  4bc7c8:	00000000 	nop
  4bc7cc:	24420017 	addiu	v0,v0,23
  4bc7d0:	90630000 	lbu	v1,0(v1)
  4bc7d4:	90420000 	lbu	v0,0(v0)
  4bc7d8:	00000000 	nop
  4bc7dc:	00621026 	xor	v0,v1,v0
  4bc7e0:	304200ff 	andi	v0,v0,0xff
  4bc7e4:	8f83804c 	lw	v1,-32692(gp)
  4bc7e8:	00000000 	nop
  4bc7ec:	24635990 	addiu	v1,v1,22928
  4bc7f0:	00621821 	addu	v1,v1,v0
  4bc7f4:	8fc2003c 	lw	v0,60(s8)
  4bc7f8:	00000000 	nop
  4bc7fc:	2442000f 	addiu	v0,v0,15
  4bc800:	90630000 	lbu	v1,0(v1)
  4bc804:	90420000 	lbu	v0,0(v0)
  4bc808:	00000000 	nop
  4bc80c:	00621026 	xor	v0,v1,v0
  4bc810:	304200ff 	andi	v0,v0,0xff
  4bc814:	8f83804c 	lw	v1,-32692(gp)
  4bc818:	00000000 	nop
  4bc81c:	24635990 	addiu	v1,v1,22928
  4bc820:	00621821 	addu	v1,v1,v0
  4bc824:	8fc2003c 	lw	v0,60(s8)
  4bc828:	00000000 	nop
  4bc82c:	24420007 	addiu	v0,v0,7
  4bc830:	90630000 	lbu	v1,0(v1)
  4bc834:	90420000 	lbu	v0,0(v0)
  4bc838:	00000000 	nop
  4bc83c:	00621026 	xor	v0,v1,v0
  4bc840:	304200ff 	andi	v0,v0,0xff
  4bc844:	00021080 	sll	v0,v0,0x2
  4bc848:	24420c00 	addiu	v0,v0,3072
  4bc84c:	8f81804c 	lw	at,-32692(gp)
  4bc850:	00000000 	nop
  4bc854:	24215a90 	addiu	at,at,23184
  4bc858:	00221021 	addu	v0,at,v0
  4bc85c:	8c420000 	lw	v0,0(v0)
  4bc860:	00000000 	nop
  4bc864:	00821026 	xor	v0,a0,v0
  4bc868:	afc20018 	sw	v0,24(s8)
  4bc86c:	8fc20018 	lw	v0,24(s8)
  4bc870:	00000000 	nop
  4bc874:	00021a00 	sll	v1,v0,0x8
  4bc878:	00021602 	srl	v0,v0,0x18
  4bc87c:	00621025 	or	v0,v1,v0
  4bc880:	afc20018 	sw	v0,24(s8)
  4bc884:	8fc30014 	lw	v1,20(s8)
  4bc888:	8fc20018 	lw	v0,24(s8)
  4bc88c:	00000000 	nop
  4bc890:	00621021 	addu	v0,v1,v0
  4bc894:	afc20014 	sw	v0,20(s8)
  4bc898:	8fc30018 	lw	v1,24(s8)
  4bc89c:	8fc20014 	lw	v0,20(s8)
  4bc8a0:	00000000 	nop
  4bc8a4:	00621021 	addu	v0,v1,v0
  4bc8a8:	afc20018 	sw	v0,24(s8)
  4bc8ac:	8fc30014 	lw	v1,20(s8)
  4bc8b0:	8fc20038 	lw	v0,56(s8)
  4bc8b4:	00000000 	nop
  4bc8b8:	ac431058 	sw	v1,4184(v0)
  4bc8bc:	8fc20018 	lw	v0,24(s8)
  4bc8c0:	00000000 	nop
  4bc8c4:	00021a40 	sll	v1,v0,0x9
  4bc8c8:	000215c2 	srl	v0,v0,0x17
  4bc8cc:	00621825 	or	v1,v1,v0
  4bc8d0:	8fc20038 	lw	v0,56(s8)
  4bc8d4:	00000000 	nop
  4bc8d8:	ac43105c 	sw	v1,4188(v0)
		CALC_K256 (k, 16, 0x43, 0x30, 0x75, 0x0F);
  4bc8dc:	8fc2003c 	lw	v0,60(s8)
  4bc8e0:	00000000 	nop
  4bc8e4:	24420018 	addiu	v0,v0,24
  4bc8e8:	90420000 	lbu	v0,0(v0)
  4bc8ec:	00000000 	nop
  4bc8f0:	38420030 	xori	v0,v0,0x30
  4bc8f4:	304200ff 	andi	v0,v0,0xff
  4bc8f8:	8f83804c 	lw	v1,-32692(gp)
  4bc8fc:	00000000 	nop
  4bc900:	24635990 	addiu	v1,v1,22928
  4bc904:	00621821 	addu	v1,v1,v0
  4bc908:	8fc2003c 	lw	v0,60(s8)
  4bc90c:	00000000 	nop
  4bc910:	24420010 	addiu	v0,v0,16
  4bc914:	90630000 	lbu	v1,0(v1)
  4bc918:	90420000 	lbu	v0,0(v0)
  4bc91c:	00000000 	nop
  4bc920:	00621026 	xor	v0,v1,v0
  4bc924:	304200ff 	andi	v0,v0,0xff
  4bc928:	8f83804c 	lw	v1,-32692(gp)
  4bc92c:	00000000 	nop
  4bc930:	24635890 	addiu	v1,v1,22672
  4bc934:	00621821 	addu	v1,v1,v0
  4bc938:	8fc2003c 	lw	v0,60(s8)
  4bc93c:	00000000 	nop
  4bc940:	24420008 	addiu	v0,v0,8
  4bc944:	90630000 	lbu	v1,0(v1)
  4bc948:	90420000 	lbu	v0,0(v0)
  4bc94c:	00000000 	nop
  4bc950:	00621026 	xor	v0,v1,v0
  4bc954:	304200ff 	andi	v0,v0,0xff
  4bc958:	8f81804c 	lw	at,-32692(gp)
  4bc95c:	00000000 	nop
  4bc960:	24215890 	addiu	at,at,22672
  4bc964:	00221021 	addu	v0,at,v0
  4bc968:	90430000 	lbu	v1,0(v0)
  4bc96c:	8fc2003c 	lw	v0,60(s8)
  4bc970:	00000000 	nop
  4bc974:	90420000 	lbu	v0,0(v0)
  4bc978:	00000000 	nop
  4bc97c:	00621026 	xor	v0,v1,v0
  4bc980:	304200ff 	andi	v0,v0,0xff
  4bc984:	00021080 	sll	v0,v0,0x2
  4bc988:	8f84804c 	lw	a0,-32692(gp)
  4bc98c:	00000000 	nop
  4bc990:	24845a90 	addiu	a0,a0,23184
  4bc994:	00822021 	addu	a0,a0,v0
  4bc998:	8fc2003c 	lw	v0,60(s8)
  4bc99c:	00000000 	nop
  4bc9a0:	24420019 	addiu	v0,v0,25
  4bc9a4:	90420000 	lbu	v0,0(v0)
  4bc9a8:	00000000 	nop
  4bc9ac:	38420043 	xori	v0,v0,0x43
  4bc9b0:	304200ff 	andi	v0,v0,0xff
  4bc9b4:	8f83804c 	lw	v1,-32692(gp)
  4bc9b8:	00000000 	nop
  4bc9bc:	24635990 	addiu	v1,v1,22928
  4bc9c0:	00621821 	addu	v1,v1,v0
  4bc9c4:	8fc2003c 	lw	v0,60(s8)
  4bc9c8:	00000000 	nop
  4bc9cc:	24420011 	addiu	v0,v0,17
  4bc9d0:	90630000 	lbu	v1,0(v1)
  4bc9d4:	90420000 	lbu	v0,0(v0)
  4bc9d8:	00000000 	nop
  4bc9dc:	00621026 	xor	v0,v1,v0
  4bc9e0:	304200ff 	andi	v0,v0,0xff
  4bc9e4:	8f83804c 	lw	v1,-32692(gp)
  4bc9e8:	00000000 	nop
  4bc9ec:	24635990 	addiu	v1,v1,22928
  4bc9f0:	00621821 	addu	v1,v1,v0
  4bc9f4:	8fc2003c 	lw	v0,60(s8)
  4bc9f8:	00000000 	nop
  4bc9fc:	24420009 	addiu	v0,v0,9
  4bca00:	90630000 	lbu	v1,0(v1)
  4bca04:	90420000 	lbu	v0,0(v0)
  4bca08:	00000000 	nop
  4bca0c:	00621026 	xor	v0,v1,v0
  4bca10:	304200ff 	andi	v0,v0,0xff
  4bca14:	8f83804c 	lw	v1,-32692(gp)
  4bca18:	00000000 	nop
  4bca1c:	24635890 	addiu	v1,v1,22672
  4bca20:	00621821 	addu	v1,v1,v0
  4bca24:	8fc2003c 	lw	v0,60(s8)
  4bca28:	00000000 	nop
  4bca2c:	24420001 	addiu	v0,v0,1
  4bca30:	90630000 	lbu	v1,0(v1)
  4bca34:	90420000 	lbu	v0,0(v0)
  4bca38:	00000000 	nop
  4bca3c:	00621026 	xor	v0,v1,v0
  4bca40:	304200ff 	andi	v0,v0,0xff
  4bca44:	00021080 	sll	v0,v0,0x2
  4bca48:	24420400 	addiu	v0,v0,1024
  4bca4c:	8f81804c 	lw	at,-32692(gp)
  4bca50:	00000000 	nop
  4bca54:	24215a90 	addiu	at,at,23184
  4bca58:	00221021 	addu	v0,at,v0
  4bca5c:	8c830000 	lw	v1,0(a0)
  4bca60:	8c420000 	lw	v0,0(v0)
  4bca64:	00000000 	nop
  4bca68:	00622026 	xor	a0,v1,v0
  4bca6c:	8fc2003c 	lw	v0,60(s8)
  4bca70:	00000000 	nop
  4bca74:	2442001a 	addiu	v0,v0,26
  4bca78:	90420000 	lbu	v0,0(v0)
  4bca7c:	00000000 	nop
  4bca80:	38420043 	xori	v0,v0,0x43
  4bca84:	304200ff 	andi	v0,v0,0xff
  4bca88:	8f83804c 	lw	v1,-32692(gp)
  4bca8c:	00000000 	nop
  4bca90:	24635890 	addiu	v1,v1,22672
  4bca94:	00621821 	addu	v1,v1,v0
  4bca98:	8fc2003c 	lw	v0,60(s8)
  4bca9c:	00000000 	nop
  4bcaa0:	24420012 	addiu	v0,v0,18
  4bcaa4:	90630000 	lbu	v1,0(v1)
  4bcaa8:	90420000 	lbu	v0,0(v0)
  4bcaac:	00000000 	nop
  4bcab0:	00621026 	xor	v0,v1,v0
  4bcab4:	304200ff 	andi	v0,v0,0xff
  4bcab8:	8f83804c 	lw	v1,-32692(gp)
  4bcabc:	00000000 	nop
  4bcac0:	24635890 	addiu	v1,v1,22672
  4bcac4:	00621821 	addu	v1,v1,v0
  4bcac8:	8fc2003c 	lw	v0,60(s8)
  4bcacc:	00000000 	nop
  4bcad0:	2442000a 	addiu	v0,v0,10
  4bcad4:	90630000 	lbu	v1,0(v1)
  4bcad8:	90420000 	lbu	v0,0(v0)
  4bcadc:	00000000 	nop
  4bcae0:	00621026 	xor	v0,v1,v0
  4bcae4:	304200ff 	andi	v0,v0,0xff
  4bcae8:	8f83804c 	lw	v1,-32692(gp)
  4bcaec:	00000000 	nop
  4bcaf0:	24635990 	addiu	v1,v1,22928
  4bcaf4:	00621821 	addu	v1,v1,v0
  4bcaf8:	8fc2003c 	lw	v0,60(s8)
  4bcafc:	00000000 	nop
  4bcb00:	24420002 	addiu	v0,v0,2
  4bcb04:	90630000 	lbu	v1,0(v1)
  4bcb08:	90420000 	lbu	v0,0(v0)
  4bcb0c:	00000000 	nop
  4bcb10:	00621026 	xor	v0,v1,v0
  4bcb14:	304200ff 	andi	v0,v0,0xff
  4bcb18:	00021080 	sll	v0,v0,0x2
  4bcb1c:	24420800 	addiu	v0,v0,2048
  4bcb20:	8f81804c 	lw	at,-32692(gp)
  4bcb24:	00000000 	nop
  4bcb28:	24215a90 	addiu	at,at,23184
  4bcb2c:	00221021 	addu	v0,at,v0
  4bcb30:	8c420000 	lw	v0,0(v0)
  4bcb34:	00000000 	nop
  4bcb38:	00822026 	xor	a0,a0,v0
  4bcb3c:	8fc2003c 	lw	v0,60(s8)
  4bcb40:	00000000 	nop
  4bcb44:	2442001b 	addiu	v0,v0,27
  4bcb48:	90420000 	lbu	v0,0(v0)
  4bcb4c:	00000000 	nop
  4bcb50:	38420030 	xori	v0,v0,0x30
  4bcb54:	304200ff 	andi	v0,v0,0xff
  4bcb58:	8f83804c 	lw	v1,-32692(gp)
  4bcb5c:	00000000 	nop
  4bcb60:	24635890 	addiu	v1,v1,22672
  4bcb64:	00621821 	addu	v1,v1,v0
  4bcb68:	8fc2003c 	lw	v0,60(s8)
  4bcb6c:	00000000 	nop
  4bcb70:	24420013 	addiu	v0,v0,19
  4bcb74:	90630000 	lbu	v1,0(v1)
  4bcb78:	90420000 	lbu	v0,0(v0)
  4bcb7c:	00000000 	nop
  4bcb80:	00621026 	xor	v0,v1,v0
  4bcb84:	304200ff 	andi	v0,v0,0xff
  4bcb88:	8f83804c 	lw	v1,-32692(gp)
  4bcb8c:	00000000 	nop
  4bcb90:	24635990 	addiu	v1,v1,22928
  4bcb94:	00621821 	addu	v1,v1,v0
  4bcb98:	8fc2003c 	lw	v0,60(s8)
  4bcb9c:	00000000 	nop
  4bcba0:	2442000b 	addiu	v0,v0,11
  4bcba4:	90630000 	lbu	v1,0(v1)
  4bcba8:	90420000 	lbu	v0,0(v0)
  4bcbac:	00000000 	nop
  4bcbb0:	00621026 	xor	v0,v1,v0
  4bcbb4:	304200ff 	andi	v0,v0,0xff
  4bcbb8:	8f83804c 	lw	v1,-32692(gp)
  4bcbbc:	00000000 	nop
  4bcbc0:	24635990 	addiu	v1,v1,22928
  4bcbc4:	00621821 	addu	v1,v1,v0
  4bcbc8:	8fc2003c 	lw	v0,60(s8)
  4bcbcc:	00000000 	nop
  4bcbd0:	24420003 	addiu	v0,v0,3
  4bcbd4:	90630000 	lbu	v1,0(v1)
  4bcbd8:	90420000 	lbu	v0,0(v0)
  4bcbdc:	00000000 	nop
  4bcbe0:	00621026 	xor	v0,v1,v0
  4bcbe4:	304200ff 	andi	v0,v0,0xff
  4bcbe8:	00021080 	sll	v0,v0,0x2
  4bcbec:	24420c00 	addiu	v0,v0,3072
  4bcbf0:	8f81804c 	lw	at,-32692(gp)
  4bcbf4:	00000000 	nop
  4bcbf8:	24215a90 	addiu	at,at,23184
  4bcbfc:	00221021 	addu	v0,at,v0
  4bcc00:	8c420000 	lw	v0,0(v0)
  4bcc04:	00000000 	nop
  4bcc08:	00821026 	xor	v0,a0,v0
  4bcc0c:	afc20014 	sw	v0,20(s8)
  4bcc10:	8fc2003c 	lw	v0,60(s8)
  4bcc14:	00000000 	nop
  4bcc18:	2442001c 	addiu	v0,v0,28
  4bcc1c:	90420000 	lbu	v0,0(v0)
  4bcc20:	00000000 	nop
  4bcc24:	3842000f 	xori	v0,v0,0xf
  4bcc28:	304200ff 	andi	v0,v0,0xff
  4bcc2c:	8f83804c 	lw	v1,-32692(gp)
  4bcc30:	00000000 	nop
  4bcc34:	24635990 	addiu	v1,v1,22928
  4bcc38:	00621821 	addu	v1,v1,v0
  4bcc3c:	8fc2003c 	lw	v0,60(s8)
  4bcc40:	00000000 	nop
  4bcc44:	24420014 	addiu	v0,v0,20
  4bcc48:	90630000 	lbu	v1,0(v1)
  4bcc4c:	90420000 	lbu	v0,0(v0)
  4bcc50:	00000000 	nop
  4bcc54:	00621026 	xor	v0,v1,v0
  4bcc58:	304200ff 	andi	v0,v0,0xff
  4bcc5c:	8f83804c 	lw	v1,-32692(gp)
  4bcc60:	00000000 	nop
  4bcc64:	24635890 	addiu	v1,v1,22672
  4bcc68:	00621821 	addu	v1,v1,v0
  4bcc6c:	8fc2003c 	lw	v0,60(s8)
  4bcc70:	00000000 	nop
  4bcc74:	2442000c 	addiu	v0,v0,12
  4bcc78:	90630000 	lbu	v1,0(v1)
  4bcc7c:	90420000 	lbu	v0,0(v0)
  4bcc80:	00000000 	nop
  4bcc84:	00621026 	xor	v0,v1,v0
  4bcc88:	304200ff 	andi	v0,v0,0xff
  4bcc8c:	8f83804c 	lw	v1,-32692(gp)
  4bcc90:	00000000 	nop
  4bcc94:	24635890 	addiu	v1,v1,22672
  4bcc98:	00621821 	addu	v1,v1,v0
  4bcc9c:	8fc2003c 	lw	v0,60(s8)
  4bcca0:	00000000 	nop
  4bcca4:	24420004 	addiu	v0,v0,4
  4bcca8:	90630000 	lbu	v1,0(v1)
  4bccac:	90420000 	lbu	v0,0(v0)
  4bccb0:	00000000 	nop
  4bccb4:	00621026 	xor	v0,v1,v0
  4bccb8:	304200ff 	andi	v0,v0,0xff
  4bccbc:	00021080 	sll	v0,v0,0x2
  4bccc0:	8f84804c 	lw	a0,-32692(gp)
  4bccc4:	00000000 	nop
  4bccc8:	24845a90 	addiu	a0,a0,23184
  4bcccc:	00822021 	addu	a0,a0,v0
  4bccd0:	8fc2003c 	lw	v0,60(s8)
  4bccd4:	00000000 	nop
  4bccd8:	2442001d 	addiu	v0,v0,29
  4bccdc:	90420000 	lbu	v0,0(v0)
  4bcce0:	00000000 	nop
  4bcce4:	38420075 	xori	v0,v0,0x75
  4bcce8:	304200ff 	andi	v0,v0,0xff
  4bccec:	8f83804c 	lw	v1,-32692(gp)
  4bccf0:	00000000 	nop
  4bccf4:	24635990 	addiu	v1,v1,22928
  4bccf8:	00621821 	addu	v1,v1,v0
  4bccfc:	8fc2003c 	lw	v0,60(s8)
  4bcd00:	00000000 	nop
  4bcd04:	24420015 	addiu	v0,v0,21
  4bcd08:	90630000 	lbu	v1,0(v1)
  4bcd0c:	90420000 	lbu	v0,0(v0)
  4bcd10:	00000000 	nop
  4bcd14:	00621026 	xor	v0,v1,v0
  4bcd18:	304200ff 	andi	v0,v0,0xff
  4bcd1c:	8f83804c 	lw	v1,-32692(gp)
  4bcd20:	00000000 	nop
  4bcd24:	24635990 	addiu	v1,v1,22928
  4bcd28:	00621821 	addu	v1,v1,v0
  4bcd2c:	8fc2003c 	lw	v0,60(s8)
  4bcd30:	00000000 	nop
  4bcd34:	2442000d 	addiu	v0,v0,13
  4bcd38:	90630000 	lbu	v1,0(v1)
  4bcd3c:	90420000 	lbu	v0,0(v0)
  4bcd40:	00000000 	nop
  4bcd44:	00621026 	xor	v0,v1,v0
  4bcd48:	304200ff 	andi	v0,v0,0xff
  4bcd4c:	8f83804c 	lw	v1,-32692(gp)
  4bcd50:	00000000 	nop
  4bcd54:	24635890 	addiu	v1,v1,22672
  4bcd58:	00621821 	addu	v1,v1,v0
  4bcd5c:	8fc2003c 	lw	v0,60(s8)
  4bcd60:	00000000 	nop
  4bcd64:	24420005 	addiu	v0,v0,5
  4bcd68:	90630000 	lbu	v1,0(v1)
  4bcd6c:	90420000 	lbu	v0,0(v0)
  4bcd70:	00000000 	nop
  4bcd74:	00621026 	xor	v0,v1,v0
  4bcd78:	304200ff 	andi	v0,v0,0xff
  4bcd7c:	00021080 	sll	v0,v0,0x2
  4bcd80:	24420400 	addiu	v0,v0,1024
  4bcd84:	8f81804c 	lw	at,-32692(gp)
  4bcd88:	00000000 	nop
  4bcd8c:	24215a90 	addiu	at,at,23184
  4bcd90:	00221021 	addu	v0,at,v0
  4bcd94:	8c830000 	lw	v1,0(a0)
  4bcd98:	8c420000 	lw	v0,0(v0)
  4bcd9c:	00000000 	nop
  4bcda0:	00622026 	xor	a0,v1,v0
  4bcda4:	8fc2003c 	lw	v0,60(s8)
  4bcda8:	00000000 	nop
  4bcdac:	2442001e 	addiu	v0,v0,30
  4bcdb0:	90420000 	lbu	v0,0(v0)
  4bcdb4:	00000000 	nop
  4bcdb8:	38420075 	xori	v0,v0,0x75
  4bcdbc:	304200ff 	andi	v0,v0,0xff
  4bcdc0:	8f83804c 	lw	v1,-32692(gp)
  4bcdc4:	00000000 	nop
  4bcdc8:	24635890 	addiu	v1,v1,22672
  4bcdcc:	00621821 	addu	v1,v1,v0
  4bcdd0:	8fc2003c 	lw	v0,60(s8)
  4bcdd4:	00000000 	nop
  4bcdd8:	24420016 	addiu	v0,v0,22
  4bcddc:	90630000 	lbu	v1,0(v1)
  4bcde0:	90420000 	lbu	v0,0(v0)
  4bcde4:	00000000 	nop
  4bcde8:	00621026 	xor	v0,v1,v0
  4bcdec:	304200ff 	andi	v0,v0,0xff
  4bcdf0:	8f83804c 	lw	v1,-32692(gp)
  4bcdf4:	00000000 	nop
  4bcdf8:	24635890 	addiu	v1,v1,22672
  4bcdfc:	00621821 	addu	v1,v1,v0
  4bce00:	8fc2003c 	lw	v0,60(s8)
  4bce04:	00000000 	nop
  4bce08:	2442000e 	addiu	v0,v0,14
  4bce0c:	90630000 	lbu	v1,0(v1)
  4bce10:	90420000 	lbu	v0,0(v0)
  4bce14:	00000000 	nop
  4bce18:	00621026 	xor	v0,v1,v0
  4bce1c:	304200ff 	andi	v0,v0,0xff
  4bce20:	8f83804c 	lw	v1,-32692(gp)
  4bce24:	00000000 	nop
  4bce28:	24635990 	addiu	v1,v1,22928
  4bce2c:	00621821 	addu	v1,v1,v0
  4bce30:	8fc2003c 	lw	v0,60(s8)
  4bce34:	00000000 	nop
  4bce38:	24420006 	addiu	v0,v0,6
  4bce3c:	90630000 	lbu	v1,0(v1)
  4bce40:	90420000 	lbu	v0,0(v0)
  4bce44:	00000000 	nop
  4bce48:	00621026 	xor	v0,v1,v0
  4bce4c:	304200ff 	andi	v0,v0,0xff
  4bce50:	00021080 	sll	v0,v0,0x2
  4bce54:	24420800 	addiu	v0,v0,2048
  4bce58:	8f81804c 	lw	at,-32692(gp)
  4bce5c:	00000000 	nop
  4bce60:	24215a90 	addiu	at,at,23184
  4bce64:	00221021 	addu	v0,at,v0
  4bce68:	8c420000 	lw	v0,0(v0)
  4bce6c:	00000000 	nop
  4bce70:	00822026 	xor	a0,a0,v0
  4bce74:	8fc2003c 	lw	v0,60(s8)
  4bce78:	00000000 	nop
  4bce7c:	2442001f 	addiu	v0,v0,31
  4bce80:	90420000 	lbu	v0,0(v0)
  4bce84:	00000000 	nop
  4bce88:	3842000f 	xori	v0,v0,0xf
  4bce8c:	304200ff 	andi	v0,v0,0xff
  4bce90:	8f83804c 	lw	v1,-32692(gp)
  4bce94:	00000000 	nop
  4bce98:	24635890 	addiu	v1,v1,22672
  4bce9c:	00621821 	addu	v1,v1,v0
  4bcea0:	8fc2003c 	lw	v0,60(s8)
  4bcea4:	00000000 	nop
  4bcea8:	24420017 	addiu	v0,v0,23
  4bceac:	90630000 	lbu	v1,0(v1)
  4bceb0:	90420000 	lbu	v0,0(v0)
  4bceb4:	00000000 	nop
  4bceb8:	00621026 	xor	v0,v1,v0
  4bcebc:	304200ff 	andi	v0,v0,0xff
  4bcec0:	8f83804c 	lw	v1,-32692(gp)
  4bcec4:	00000000 	nop
  4bcec8:	24635990 	addiu	v1,v1,22928
  4bcecc:	00621821 	addu	v1,v1,v0
  4bced0:	8fc2003c 	lw	v0,60(s8)
  4bced4:	00000000 	nop
  4bced8:	2442000f 	addiu	v0,v0,15
  4bcedc:	90630000 	lbu	v1,0(v1)
  4bcee0:	90420000 	lbu	v0,0(v0)
  4bcee4:	00000000 	nop
  4bcee8:	00621026 	xor	v0,v1,v0
  4bceec:	304200ff 	andi	v0,v0,0xff
  4bcef0:	8f83804c 	lw	v1,-32692(gp)
  4bcef4:	00000000 	nop
  4bcef8:	24635990 	addiu	v1,v1,22928
  4bcefc:	00621821 	addu	v1,v1,v0
  4bcf00:	8fc2003c 	lw	v0,60(s8)
  4bcf04:	00000000 	nop
  4bcf08:	24420007 	addiu	v0,v0,7
  4bcf0c:	90630000 	lbu	v1,0(v1)
  4bcf10:	90420000 	lbu	v0,0(v0)
  4bcf14:	00000000 	nop
  4bcf18:	00621026 	xor	v0,v1,v0
  4bcf1c:	304200ff 	andi	v0,v0,0xff
  4bcf20:	00021080 	sll	v0,v0,0x2
  4bcf24:	24420c00 	addiu	v0,v0,3072
  4bcf28:	8f81804c 	lw	at,-32692(gp)
  4bcf2c:	00000000 	nop
  4bcf30:	24215a90 	addiu	at,at,23184
  4bcf34:	00221021 	addu	v0,at,v0
  4bcf38:	8c420000 	lw	v0,0(v0)
  4bcf3c:	00000000 	nop
  4bcf40:	00821026 	xor	v0,a0,v0
  4bcf44:	afc20018 	sw	v0,24(s8)
  4bcf48:	8fc20018 	lw	v0,24(s8)
  4bcf4c:	00000000 	nop
  4bcf50:	00021a00 	sll	v1,v0,0x8
  4bcf54:	00021602 	srl	v0,v0,0x18
  4bcf58:	00621025 	or	v0,v1,v0
  4bcf5c:	afc20018 	sw	v0,24(s8)
  4bcf60:	8fc30014 	lw	v1,20(s8)
  4bcf64:	8fc20018 	lw	v0,24(s8)
  4bcf68:	00000000 	nop
  4bcf6c:	00621021 	addu	v0,v1,v0
  4bcf70:	afc20014 	sw	v0,20(s8)
  4bcf74:	8fc30018 	lw	v1,24(s8)
  4bcf78:	8fc20014 	lw	v0,20(s8)
  4bcf7c:	00000000 	nop
  4bcf80:	00621021 	addu	v0,v1,v0
  4bcf84:	afc20018 	sw	v0,24(s8)
  4bcf88:	8fc30014 	lw	v1,20(s8)
  4bcf8c:	8fc20038 	lw	v0,56(s8)
  4bcf90:	00000000 	nop
  4bcf94:	ac431060 	sw	v1,4192(v0)
  4bcf98:	8fc20018 	lw	v0,24(s8)
  4bcf9c:	00000000 	nop
  4bcfa0:	00021a40 	sll	v1,v0,0x9
  4bcfa4:	000215c2 	srl	v0,v0,0x17
  4bcfa8:	00621825 	or	v1,v1,v0
  4bcfac:	8fc20038 	lw	v0,56(s8)
  4bcfb0:	00000000 	nop
  4bcfb4:	ac431064 	sw	v1,4196(v0)
		CALC_K256 (k, 18, 0x37, 0xF8, 0x26, 0x1B);
  4bcfb8:	8fc2003c 	lw	v0,60(s8)
  4bcfbc:	00000000 	nop
  4bcfc0:	24420018 	addiu	v0,v0,24
  4bcfc4:	90420000 	lbu	v0,0(v0)
  4bcfc8:	00000000 	nop
  4bcfcc:	384200f8 	xori	v0,v0,0xf8
  4bcfd0:	304200ff 	andi	v0,v0,0xff
  4bcfd4:	8f83804c 	lw	v1,-32692(gp)
  4bcfd8:	00000000 	nop
  4bcfdc:	24635990 	addiu	v1,v1,22928
  4bcfe0:	00621821 	addu	v1,v1,v0
  4bcfe4:	8fc2003c 	lw	v0,60(s8)
  4bcfe8:	00000000 	nop
  4bcfec:	24420010 	addiu	v0,v0,16
  4bcff0:	90630000 	lbu	v1,0(v1)
  4bcff4:	90420000 	lbu	v0,0(v0)
  4bcff8:	00000000 	nop
  4bcffc:	00621026 	xor	v0,v1,v0
  4bd000:	304200ff 	andi	v0,v0,0xff
  4bd004:	8f83804c 	lw	v1,-32692(gp)
  4bd008:	00000000 	nop
  4bd00c:	24635890 	addiu	v1,v1,22672
  4bd010:	00621821 	addu	v1,v1,v0
  4bd014:	8fc2003c 	lw	v0,60(s8)
  4bd018:	00000000 	nop
  4bd01c:	24420008 	addiu	v0,v0,8
  4bd020:	90630000 	lbu	v1,0(v1)
  4bd024:	90420000 	lbu	v0,0(v0)
  4bd028:	00000000 	nop
  4bd02c:	00621026 	xor	v0,v1,v0
  4bd030:	304200ff 	andi	v0,v0,0xff
  4bd034:	8f81804c 	lw	at,-32692(gp)
  4bd038:	00000000 	nop
  4bd03c:	24215890 	addiu	at,at,22672
  4bd040:	00221021 	addu	v0,at,v0
  4bd044:	90430000 	lbu	v1,0(v0)
  4bd048:	8fc2003c 	lw	v0,60(s8)
  4bd04c:	00000000 	nop
  4bd050:	90420000 	lbu	v0,0(v0)
  4bd054:	00000000 	nop
  4bd058:	00621026 	xor	v0,v1,v0
  4bd05c:	304200ff 	andi	v0,v0,0xff
  4bd060:	00021080 	sll	v0,v0,0x2
  4bd064:	8f84804c 	lw	a0,-32692(gp)
  4bd068:	00000000 	nop
  4bd06c:	24845a90 	addiu	a0,a0,23184
  4bd070:	00822021 	addu	a0,a0,v0
  4bd074:	8fc2003c 	lw	v0,60(s8)
  4bd078:	00000000 	nop
  4bd07c:	24420019 	addiu	v0,v0,25
  4bd080:	90420000 	lbu	v0,0(v0)
  4bd084:	00000000 	nop
  4bd088:	38420037 	xori	v0,v0,0x37
  4bd08c:	304200ff 	andi	v0,v0,0xff
  4bd090:	8f83804c 	lw	v1,-32692(gp)
  4bd094:	00000000 	nop
  4bd098:	24635990 	addiu	v1,v1,22928
  4bd09c:	00621821 	addu	v1,v1,v0
  4bd0a0:	8fc2003c 	lw	v0,60(s8)
  4bd0a4:	00000000 	nop
  4bd0a8:	24420011 	addiu	v0,v0,17
  4bd0ac:	90630000 	lbu	v1,0(v1)
  4bd0b0:	90420000 	lbu	v0,0(v0)
  4bd0b4:	00000000 	nop
  4bd0b8:	00621026 	xor	v0,v1,v0
  4bd0bc:	304200ff 	andi	v0,v0,0xff
  4bd0c0:	8f83804c 	lw	v1,-32692(gp)
  4bd0c4:	00000000 	nop
  4bd0c8:	24635990 	addiu	v1,v1,22928
  4bd0cc:	00621821 	addu	v1,v1,v0
  4bd0d0:	8fc2003c 	lw	v0,60(s8)
  4bd0d4:	00000000 	nop
  4bd0d8:	24420009 	addiu	v0,v0,9
  4bd0dc:	90630000 	lbu	v1,0(v1)
  4bd0e0:	90420000 	lbu	v0,0(v0)
  4bd0e4:	00000000 	nop
  4bd0e8:	00621026 	xor	v0,v1,v0
  4bd0ec:	304200ff 	andi	v0,v0,0xff
  4bd0f0:	8f83804c 	lw	v1,-32692(gp)
  4bd0f4:	00000000 	nop
  4bd0f8:	24635890 	addiu	v1,v1,22672
  4bd0fc:	00621821 	addu	v1,v1,v0
  4bd100:	8fc2003c 	lw	v0,60(s8)
  4bd104:	00000000 	nop
  4bd108:	24420001 	addiu	v0,v0,1
  4bd10c:	90630000 	lbu	v1,0(v1)
  4bd110:	90420000 	lbu	v0,0(v0)
  4bd114:	00000000 	nop
  4bd118:	00621026 	xor	v0,v1,v0
  4bd11c:	304200ff 	andi	v0,v0,0xff
  4bd120:	00021080 	sll	v0,v0,0x2
  4bd124:	24420400 	addiu	v0,v0,1024
  4bd128:	8f81804c 	lw	at,-32692(gp)
  4bd12c:	00000000 	nop
  4bd130:	24215a90 	addiu	at,at,23184
  4bd134:	00221021 	addu	v0,at,v0
  4bd138:	8c830000 	lw	v1,0(a0)
  4bd13c:	8c420000 	lw	v0,0(v0)
  4bd140:	00000000 	nop
  4bd144:	00622026 	xor	a0,v1,v0
  4bd148:	8fc2003c 	lw	v0,60(s8)
  4bd14c:	00000000 	nop
  4bd150:	2442001a 	addiu	v0,v0,26
  4bd154:	90420000 	lbu	v0,0(v0)
  4bd158:	00000000 	nop
  4bd15c:	38420037 	xori	v0,v0,0x37
  4bd160:	304200ff 	andi	v0,v0,0xff
  4bd164:	8f83804c 	lw	v1,-32692(gp)
  4bd168:	00000000 	nop
  4bd16c:	24635890 	addiu	v1,v1,22672
  4bd170:	00621821 	addu	v1,v1,v0
  4bd174:	8fc2003c 	lw	v0,60(s8)
  4bd178:	00000000 	nop
  4bd17c:	24420012 	addiu	v0,v0,18
  4bd180:	90630000 	lbu	v1,0(v1)
  4bd184:	90420000 	lbu	v0,0(v0)
  4bd188:	00000000 	nop
  4bd18c:	00621026 	xor	v0,v1,v0
  4bd190:	304200ff 	andi	v0,v0,0xff
  4bd194:	8f83804c 	lw	v1,-32692(gp)
  4bd198:	00000000 	nop
  4bd19c:	24635890 	addiu	v1,v1,22672
  4bd1a0:	00621821 	addu	v1,v1,v0
  4bd1a4:	8fc2003c 	lw	v0,60(s8)
  4bd1a8:	00000000 	nop
  4bd1ac:	2442000a 	addiu	v0,v0,10
  4bd1b0:	90630000 	lbu	v1,0(v1)
  4bd1b4:	90420000 	lbu	v0,0(v0)
  4bd1b8:	00000000 	nop
  4bd1bc:	00621026 	xor	v0,v1,v0
  4bd1c0:	304200ff 	andi	v0,v0,0xff
  4bd1c4:	8f83804c 	lw	v1,-32692(gp)
  4bd1c8:	00000000 	nop
  4bd1cc:	24635990 	addiu	v1,v1,22928
  4bd1d0:	00621821 	addu	v1,v1,v0
  4bd1d4:	8fc2003c 	lw	v0,60(s8)
  4bd1d8:	00000000 	nop
  4bd1dc:	24420002 	addiu	v0,v0,2
  4bd1e0:	90630000 	lbu	v1,0(v1)
  4bd1e4:	90420000 	lbu	v0,0(v0)
  4bd1e8:	00000000 	nop
  4bd1ec:	00621026 	xor	v0,v1,v0
  4bd1f0:	304200ff 	andi	v0,v0,0xff
  4bd1f4:	00021080 	sll	v0,v0,0x2
  4bd1f8:	24420800 	addiu	v0,v0,2048
  4bd1fc:	8f81804c 	lw	at,-32692(gp)
  4bd200:	00000000 	nop
  4bd204:	24215a90 	addiu	at,at,23184
  4bd208:	00221021 	addu	v0,at,v0
  4bd20c:	8c420000 	lw	v0,0(v0)
  4bd210:	00000000 	nop
  4bd214:	00822026 	xor	a0,a0,v0
  4bd218:	8fc2003c 	lw	v0,60(s8)
  4bd21c:	00000000 	nop
  4bd220:	2442001b 	addiu	v0,v0,27
  4bd224:	90420000 	lbu	v0,0(v0)
  4bd228:	00000000 	nop
  4bd22c:	384200f8 	xori	v0,v0,0xf8
  4bd230:	304200ff 	andi	v0,v0,0xff
  4bd234:	8f83804c 	lw	v1,-32692(gp)
  4bd238:	00000000 	nop
  4bd23c:	24635890 	addiu	v1,v1,22672
  4bd240:	00621821 	addu	v1,v1,v0
  4bd244:	8fc2003c 	lw	v0,60(s8)
  4bd248:	00000000 	nop
  4bd24c:	24420013 	addiu	v0,v0,19
  4bd250:	90630000 	lbu	v1,0(v1)
  4bd254:	90420000 	lbu	v0,0(v0)
  4bd258:	00000000 	nop
  4bd25c:	00621026 	xor	v0,v1,v0
  4bd260:	304200ff 	andi	v0,v0,0xff
  4bd264:	8f83804c 	lw	v1,-32692(gp)
  4bd268:	00000000 	nop
  4bd26c:	24635990 	addiu	v1,v1,22928
  4bd270:	00621821 	addu	v1,v1,v0
  4bd274:	8fc2003c 	lw	v0,60(s8)
  4bd278:	00000000 	nop
  4bd27c:	2442000b 	addiu	v0,v0,11
  4bd280:	90630000 	lbu	v1,0(v1)
  4bd284:	90420000 	lbu	v0,0(v0)
  4bd288:	00000000 	nop
  4bd28c:	00621026 	xor	v0,v1,v0
  4bd290:	304200ff 	andi	v0,v0,0xff
  4bd294:	8f83804c 	lw	v1,-32692(gp)
  4bd298:	00000000 	nop
  4bd29c:	24635990 	addiu	v1,v1,22928
  4bd2a0:	00621821 	addu	v1,v1,v0
  4bd2a4:	8fc2003c 	lw	v0,60(s8)
  4bd2a8:	00000000 	nop
  4bd2ac:	24420003 	addiu	v0,v0,3
  4bd2b0:	90630000 	lbu	v1,0(v1)
  4bd2b4:	90420000 	lbu	v0,0(v0)
  4bd2b8:	00000000 	nop
  4bd2bc:	00621026 	xor	v0,v1,v0
  4bd2c0:	304200ff 	andi	v0,v0,0xff
  4bd2c4:	00021080 	sll	v0,v0,0x2
  4bd2c8:	24420c00 	addiu	v0,v0,3072
  4bd2cc:	8f81804c 	lw	at,-32692(gp)
  4bd2d0:	00000000 	nop
  4bd2d4:	24215a90 	addiu	at,at,23184
  4bd2d8:	00221021 	addu	v0,at,v0
  4bd2dc:	8c420000 	lw	v0,0(v0)
  4bd2e0:	00000000 	nop
  4bd2e4:	00821026 	xor	v0,a0,v0
  4bd2e8:	afc20014 	sw	v0,20(s8)
  4bd2ec:	8fc2003c 	lw	v0,60(s8)
  4bd2f0:	00000000 	nop
  4bd2f4:	2442001c 	addiu	v0,v0,28
  4bd2f8:	90420000 	lbu	v0,0(v0)
  4bd2fc:	00000000 	nop
  4bd300:	3842001b 	xori	v0,v0,0x1b
  4bd304:	304200ff 	andi	v0,v0,0xff
  4bd308:	8f83804c 	lw	v1,-32692(gp)
  4bd30c:	00000000 	nop
  4bd310:	24635990 	addiu	v1,v1,22928
  4bd314:	00621821 	addu	v1,v1,v0
  4bd318:	8fc2003c 	lw	v0,60(s8)
  4bd31c:	00000000 	nop
  4bd320:	24420014 	addiu	v0,v0,20
  4bd324:	90630000 	lbu	v1,0(v1)
  4bd328:	90420000 	lbu	v0,0(v0)
  4bd32c:	00000000 	nop
  4bd330:	00621026 	xor	v0,v1,v0
  4bd334:	304200ff 	andi	v0,v0,0xff
  4bd338:	8f83804c 	lw	v1,-32692(gp)
  4bd33c:	00000000 	nop
  4bd340:	24635890 	addiu	v1,v1,22672
  4bd344:	00621821 	addu	v1,v1,v0
  4bd348:	8fc2003c 	lw	v0,60(s8)
  4bd34c:	00000000 	nop
  4bd350:	2442000c 	addiu	v0,v0,12
  4bd354:	90630000 	lbu	v1,0(v1)
  4bd358:	90420000 	lbu	v0,0(v0)
  4bd35c:	00000000 	nop
  4bd360:	00621026 	xor	v0,v1,v0
  4bd364:	304200ff 	andi	v0,v0,0xff
  4bd368:	8f83804c 	lw	v1,-32692(gp)
  4bd36c:	00000000 	nop
  4bd370:	24635890 	addiu	v1,v1,22672
  4bd374:	00621821 	addu	v1,v1,v0
  4bd378:	8fc2003c 	lw	v0,60(s8)
  4bd37c:	00000000 	nop
  4bd380:	24420004 	addiu	v0,v0,4
  4bd384:	90630000 	lbu	v1,0(v1)
  4bd388:	90420000 	lbu	v0,0(v0)
  4bd38c:	00000000 	nop
  4bd390:	00621026 	xor	v0,v1,v0
  4bd394:	304200ff 	andi	v0,v0,0xff
  4bd398:	00021080 	sll	v0,v0,0x2
  4bd39c:	8f84804c 	lw	a0,-32692(gp)
  4bd3a0:	00000000 	nop
  4bd3a4:	24845a90 	addiu	a0,a0,23184
  4bd3a8:	00822021 	addu	a0,a0,v0
  4bd3ac:	8fc2003c 	lw	v0,60(s8)
  4bd3b0:	00000000 	nop
  4bd3b4:	2442001d 	addiu	v0,v0,29
  4bd3b8:	90420000 	lbu	v0,0(v0)
  4bd3bc:	00000000 	nop
  4bd3c0:	38420026 	xori	v0,v0,0x26
  4bd3c4:	304200ff 	andi	v0,v0,0xff
  4bd3c8:	8f83804c 	lw	v1,-32692(gp)
  4bd3cc:	00000000 	nop
  4bd3d0:	24635990 	addiu	v1,v1,22928
  4bd3d4:	00621821 	addu	v1,v1,v0
  4bd3d8:	8fc2003c 	lw	v0,60(s8)
  4bd3dc:	00000000 	nop
  4bd3e0:	24420015 	addiu	v0,v0,21
  4bd3e4:	90630000 	lbu	v1,0(v1)
  4bd3e8:	90420000 	lbu	v0,0(v0)
  4bd3ec:	00000000 	nop
  4bd3f0:	00621026 	xor	v0,v1,v0
  4bd3f4:	304200ff 	andi	v0,v0,0xff
  4bd3f8:	8f83804c 	lw	v1,-32692(gp)
  4bd3fc:	00000000 	nop
  4bd400:	24635990 	addiu	v1,v1,22928
  4bd404:	00621821 	addu	v1,v1,v0
  4bd408:	8fc2003c 	lw	v0,60(s8)
  4bd40c:	00000000 	nop
  4bd410:	2442000d 	addiu	v0,v0,13
  4bd414:	90630000 	lbu	v1,0(v1)
  4bd418:	90420000 	lbu	v0,0(v0)
  4bd41c:	00000000 	nop
  4bd420:	00621026 	xor	v0,v1,v0
  4bd424:	304200ff 	andi	v0,v0,0xff
  4bd428:	8f83804c 	lw	v1,-32692(gp)
  4bd42c:	00000000 	nop
  4bd430:	24635890 	addiu	v1,v1,22672
  4bd434:	00621821 	addu	v1,v1,v0
  4bd438:	8fc2003c 	lw	v0,60(s8)
  4bd43c:	00000000 	nop
  4bd440:	24420005 	addiu	v0,v0,5
  4bd444:	90630000 	lbu	v1,0(v1)
  4bd448:	90420000 	lbu	v0,0(v0)
  4bd44c:	00000000 	nop
  4bd450:	00621026 	xor	v0,v1,v0
  4bd454:	304200ff 	andi	v0,v0,0xff
  4bd458:	00021080 	sll	v0,v0,0x2
  4bd45c:	24420400 	addiu	v0,v0,1024
  4bd460:	8f81804c 	lw	at,-32692(gp)
  4bd464:	00000000 	nop
  4bd468:	24215a90 	addiu	at,at,23184
  4bd46c:	00221021 	addu	v0,at,v0
  4bd470:	8c830000 	lw	v1,0(a0)
  4bd474:	8c420000 	lw	v0,0(v0)
  4bd478:	00000000 	nop
  4bd47c:	00622026 	xor	a0,v1,v0
  4bd480:	8fc2003c 	lw	v0,60(s8)
  4bd484:	00000000 	nop
  4bd488:	2442001e 	addiu	v0,v0,30
  4bd48c:	90420000 	lbu	v0,0(v0)
  4bd490:	00000000 	nop
  4bd494:	38420026 	xori	v0,v0,0x26
  4bd498:	304200ff 	andi	v0,v0,0xff
  4bd49c:	8f83804c 	lw	v1,-32692(gp)
  4bd4a0:	00000000 	nop
  4bd4a4:	24635890 	addiu	v1,v1,22672
  4bd4a8:	00621821 	addu	v1,v1,v0
  4bd4ac:	8fc2003c 	lw	v0,60(s8)
  4bd4b0:	00000000 	nop
  4bd4b4:	24420016 	addiu	v0,v0,22
  4bd4b8:	90630000 	lbu	v1,0(v1)
  4bd4bc:	90420000 	lbu	v0,0(v0)
  4bd4c0:	00000000 	nop
  4bd4c4:	00621026 	xor	v0,v1,v0
  4bd4c8:	304200ff 	andi	v0,v0,0xff
  4bd4cc:	8f83804c 	lw	v1,-32692(gp)
  4bd4d0:	00000000 	nop
  4bd4d4:	24635890 	addiu	v1,v1,22672
  4bd4d8:	00621821 	addu	v1,v1,v0
  4bd4dc:	8fc2003c 	lw	v0,60(s8)
  4bd4e0:	00000000 	nop
  4bd4e4:	2442000e 	addiu	v0,v0,14
  4bd4e8:	90630000 	lbu	v1,0(v1)
  4bd4ec:	90420000 	lbu	v0,0(v0)
  4bd4f0:	00000000 	nop
  4bd4f4:	00621026 	xor	v0,v1,v0
  4bd4f8:	304200ff 	andi	v0,v0,0xff
  4bd4fc:	8f83804c 	lw	v1,-32692(gp)
  4bd500:	00000000 	nop
  4bd504:	24635990 	addiu	v1,v1,22928
  4bd508:	00621821 	addu	v1,v1,v0
  4bd50c:	8fc2003c 	lw	v0,60(s8)
  4bd510:	00000000 	nop
  4bd514:	24420006 	addiu	v0,v0,6
  4bd518:	90630000 	lbu	v1,0(v1)
  4bd51c:	90420000 	lbu	v0,0(v0)
  4bd520:	00000000 	nop
  4bd524:	00621026 	xor	v0,v1,v0
  4bd528:	304200ff 	andi	v0,v0,0xff
  4bd52c:	00021080 	sll	v0,v0,0x2
  4bd530:	24420800 	addiu	v0,v0,2048
  4bd534:	8f81804c 	lw	at,-32692(gp)
  4bd538:	00000000 	nop
  4bd53c:	24215a90 	addiu	at,at,23184
  4bd540:	00221021 	addu	v0,at,v0
  4bd544:	8c420000 	lw	v0,0(v0)
  4bd548:	00000000 	nop
  4bd54c:	00822026 	xor	a0,a0,v0
  4bd550:	8fc2003c 	lw	v0,60(s8)
  4bd554:	00000000 	nop
  4bd558:	2442001f 	addiu	v0,v0,31
  4bd55c:	90420000 	lbu	v0,0(v0)
  4bd560:	00000000 	nop
  4bd564:	3842001b 	xori	v0,v0,0x1b
  4bd568:	304200ff 	andi	v0,v0,0xff
  4bd56c:	8f83804c 	lw	v1,-32692(gp)
  4bd570:	00000000 	nop
  4bd574:	24635890 	addiu	v1,v1,22672
  4bd578:	00621821 	addu	v1,v1,v0
  4bd57c:	8fc2003c 	lw	v0,60(s8)
  4bd580:	00000000 	nop
  4bd584:	24420017 	addiu	v0,v0,23
  4bd588:	90630000 	lbu	v1,0(v1)
  4bd58c:	90420000 	lbu	v0,0(v0)
  4bd590:	00000000 	nop
  4bd594:	00621026 	xor	v0,v1,v0
  4bd598:	304200ff 	andi	v0,v0,0xff
  4bd59c:	8f83804c 	lw	v1,-32692(gp)
  4bd5a0:	00000000 	nop
  4bd5a4:	24635990 	addiu	v1,v1,22928
  4bd5a8:	00621821 	addu	v1,v1,v0
  4bd5ac:	8fc2003c 	lw	v0,60(s8)
  4bd5b0:	00000000 	nop
  4bd5b4:	2442000f 	addiu	v0,v0,15
  4bd5b8:	90630000 	lbu	v1,0(v1)
  4bd5bc:	90420000 	lbu	v0,0(v0)
  4bd5c0:	00000000 	nop
  4bd5c4:	00621026 	xor	v0,v1,v0
  4bd5c8:	304200ff 	andi	v0,v0,0xff
  4bd5cc:	8f83804c 	lw	v1,-32692(gp)
  4bd5d0:	00000000 	nop
  4bd5d4:	24635990 	addiu	v1,v1,22928
  4bd5d8:	00621821 	addu	v1,v1,v0
  4bd5dc:	8fc2003c 	lw	v0,60(s8)
  4bd5e0:	00000000 	nop
  4bd5e4:	24420007 	addiu	v0,v0,7
  4bd5e8:	90630000 	lbu	v1,0(v1)
  4bd5ec:	90420000 	lbu	v0,0(v0)
  4bd5f0:	00000000 	nop
  4bd5f4:	00621026 	xor	v0,v1,v0
  4bd5f8:	304200ff 	andi	v0,v0,0xff
  4bd5fc:	00021080 	sll	v0,v0,0x2
  4bd600:	24420c00 	addiu	v0,v0,3072
  4bd604:	8f81804c 	lw	at,-32692(gp)
  4bd608:	00000000 	nop
  4bd60c:	24215a90 	addiu	at,at,23184
  4bd610:	00221021 	addu	v0,at,v0
  4bd614:	8c420000 	lw	v0,0(v0)
  4bd618:	00000000 	nop
  4bd61c:	00821026 	xor	v0,a0,v0
  4bd620:	afc20018 	sw	v0,24(s8)
  4bd624:	8fc20018 	lw	v0,24(s8)
  4bd628:	00000000 	nop
  4bd62c:	00021a00 	sll	v1,v0,0x8
  4bd630:	00021602 	srl	v0,v0,0x18
  4bd634:	00621025 	or	v0,v1,v0
  4bd638:	afc20018 	sw	v0,24(s8)
  4bd63c:	8fc30014 	lw	v1,20(s8)
  4bd640:	8fc20018 	lw	v0,24(s8)
  4bd644:	00000000 	nop
  4bd648:	00621021 	addu	v0,v1,v0
  4bd64c:	afc20014 	sw	v0,20(s8)
  4bd650:	8fc30018 	lw	v1,24(s8)
  4bd654:	8fc20014 	lw	v0,20(s8)
  4bd658:	00000000 	nop
  4bd65c:	00621021 	addu	v0,v1,v0
  4bd660:	afc20018 	sw	v0,24(s8)
  4bd664:	8fc30014 	lw	v1,20(s8)
  4bd668:	8fc20038 	lw	v0,56(s8)
  4bd66c:	00000000 	nop
  4bd670:	ac431068 	sw	v1,4200(v0)
  4bd674:	8fc20018 	lw	v0,24(s8)
  4bd678:	00000000 	nop
  4bd67c:	00021a40 	sll	v1,v0,0x9
  4bd680:	000215c2 	srl	v0,v0,0x17
  4bd684:	00621825 	or	v1,v1,v0
  4bd688:	8fc20038 	lw	v0,56(s8)
  4bd68c:	00000000 	nop
  4bd690:	ac43106c 	sw	v1,4204(v0)
		CALC_K256 (k, 20, 0xFA, 0x87, 0x13, 0xFA);
  4bd694:	8fc2003c 	lw	v0,60(s8)
  4bd698:	00000000 	nop
  4bd69c:	24420018 	addiu	v0,v0,24
  4bd6a0:	90420000 	lbu	v0,0(v0)
  4bd6a4:	00000000 	nop
  4bd6a8:	38420087 	xori	v0,v0,0x87
  4bd6ac:	304200ff 	andi	v0,v0,0xff
  4bd6b0:	8f83804c 	lw	v1,-32692(gp)
  4bd6b4:	00000000 	nop
  4bd6b8:	24635990 	addiu	v1,v1,22928
  4bd6bc:	00621821 	addu	v1,v1,v0
  4bd6c0:	8fc2003c 	lw	v0,60(s8)
  4bd6c4:	00000000 	nop
  4bd6c8:	24420010 	addiu	v0,v0,16
  4bd6cc:	90630000 	lbu	v1,0(v1)
  4bd6d0:	90420000 	lbu	v0,0(v0)
  4bd6d4:	00000000 	nop
  4bd6d8:	00621026 	xor	v0,v1,v0
  4bd6dc:	304200ff 	andi	v0,v0,0xff
  4bd6e0:	8f83804c 	lw	v1,-32692(gp)
  4bd6e4:	00000000 	nop
  4bd6e8:	24635890 	addiu	v1,v1,22672
  4bd6ec:	00621821 	addu	v1,v1,v0
  4bd6f0:	8fc2003c 	lw	v0,60(s8)
  4bd6f4:	00000000 	nop
  4bd6f8:	24420008 	addiu	v0,v0,8
  4bd6fc:	90630000 	lbu	v1,0(v1)
  4bd700:	90420000 	lbu	v0,0(v0)
  4bd704:	00000000 	nop
  4bd708:	00621026 	xor	v0,v1,v0
  4bd70c:	304200ff 	andi	v0,v0,0xff
  4bd710:	8f81804c 	lw	at,-32692(gp)
  4bd714:	00000000 	nop
  4bd718:	24215890 	addiu	at,at,22672
  4bd71c:	00221021 	addu	v0,at,v0
  4bd720:	90430000 	lbu	v1,0(v0)
  4bd724:	8fc2003c 	lw	v0,60(s8)
  4bd728:	00000000 	nop
  4bd72c:	90420000 	lbu	v0,0(v0)
  4bd730:	00000000 	nop
  4bd734:	00621026 	xor	v0,v1,v0
  4bd738:	304200ff 	andi	v0,v0,0xff
  4bd73c:	00021080 	sll	v0,v0,0x2
  4bd740:	8f84804c 	lw	a0,-32692(gp)
  4bd744:	00000000 	nop
  4bd748:	24845a90 	addiu	a0,a0,23184
  4bd74c:	00822021 	addu	a0,a0,v0
  4bd750:	8fc2003c 	lw	v0,60(s8)
  4bd754:	00000000 	nop
  4bd758:	24420019 	addiu	v0,v0,25
  4bd75c:	90420000 	lbu	v0,0(v0)
  4bd760:	00000000 	nop
  4bd764:	384200fa 	xori	v0,v0,0xfa
  4bd768:	304200ff 	andi	v0,v0,0xff
  4bd76c:	8f83804c 	lw	v1,-32692(gp)
  4bd770:	00000000 	nop
  4bd774:	24635990 	addiu	v1,v1,22928
  4bd778:	00621821 	addu	v1,v1,v0
  4bd77c:	8fc2003c 	lw	v0,60(s8)
  4bd780:	00000000 	nop
  4bd784:	24420011 	addiu	v0,v0,17
  4bd788:	90630000 	lbu	v1,0(v1)
  4bd78c:	90420000 	lbu	v0,0(v0)
  4bd790:	00000000 	nop
  4bd794:	00621026 	xor	v0,v1,v0
  4bd798:	304200ff 	andi	v0,v0,0xff
  4bd79c:	8f83804c 	lw	v1,-32692(gp)
  4bd7a0:	00000000 	nop
  4bd7a4:	24635990 	addiu	v1,v1,22928
  4bd7a8:	00621821 	addu	v1,v1,v0
  4bd7ac:	8fc2003c 	lw	v0,60(s8)
  4bd7b0:	00000000 	nop
  4bd7b4:	24420009 	addiu	v0,v0,9
  4bd7b8:	90630000 	lbu	v1,0(v1)
  4bd7bc:	90420000 	lbu	v0,0(v0)
  4bd7c0:	00000000 	nop
  4bd7c4:	00621026 	xor	v0,v1,v0
  4bd7c8:	304200ff 	andi	v0,v0,0xff
  4bd7cc:	8f83804c 	lw	v1,-32692(gp)
  4bd7d0:	00000000 	nop
  4bd7d4:	24635890 	addiu	v1,v1,22672
  4bd7d8:	00621821 	addu	v1,v1,v0
  4bd7dc:	8fc2003c 	lw	v0,60(s8)
  4bd7e0:	00000000 	nop
  4bd7e4:	24420001 	addiu	v0,v0,1
  4bd7e8:	90630000 	lbu	v1,0(v1)
  4bd7ec:	90420000 	lbu	v0,0(v0)
  4bd7f0:	00000000 	nop
  4bd7f4:	00621026 	xor	v0,v1,v0
  4bd7f8:	304200ff 	andi	v0,v0,0xff
  4bd7fc:	00021080 	sll	v0,v0,0x2
  4bd800:	24420400 	addiu	v0,v0,1024
  4bd804:	8f81804c 	lw	at,-32692(gp)
  4bd808:	00000000 	nop
  4bd80c:	24215a90 	addiu	at,at,23184
  4bd810:	00221021 	addu	v0,at,v0
  4bd814:	8c830000 	lw	v1,0(a0)
  4bd818:	8c420000 	lw	v0,0(v0)
  4bd81c:	00000000 	nop
  4bd820:	00622026 	xor	a0,v1,v0
  4bd824:	8fc2003c 	lw	v0,60(s8)
  4bd828:	00000000 	nop
  4bd82c:	2442001a 	addiu	v0,v0,26
  4bd830:	90420000 	lbu	v0,0(v0)
  4bd834:	00000000 	nop
  4bd838:	384200fa 	xori	v0,v0,0xfa
  4bd83c:	304200ff 	andi	v0,v0,0xff
  4bd840:	8f83804c 	lw	v1,-32692(gp)
  4bd844:	00000000 	nop
  4bd848:	24635890 	addiu	v1,v1,22672
  4bd84c:	00621821 	addu	v1,v1,v0
  4bd850:	8fc2003c 	lw	v0,60(s8)
  4bd854:	00000000 	nop
  4bd858:	24420012 	addiu	v0,v0,18
  4bd85c:	90630000 	lbu	v1,0(v1)
  4bd860:	90420000 	lbu	v0,0(v0)
  4bd864:	00000000 	nop
  4bd868:	00621026 	xor	v0,v1,v0
  4bd86c:	304200ff 	andi	v0,v0,0xff
  4bd870:	8f83804c 	lw	v1,-32692(gp)
  4bd874:	00000000 	nop
  4bd878:	24635890 	addiu	v1,v1,22672
  4bd87c:	00621821 	addu	v1,v1,v0
  4bd880:	8fc2003c 	lw	v0,60(s8)
  4bd884:	00000000 	nop
  4bd888:	2442000a 	addiu	v0,v0,10
  4bd88c:	90630000 	lbu	v1,0(v1)
  4bd890:	90420000 	lbu	v0,0(v0)
  4bd894:	00000000 	nop
  4bd898:	00621026 	xor	v0,v1,v0
  4bd89c:	304200ff 	andi	v0,v0,0xff
  4bd8a0:	8f83804c 	lw	v1,-32692(gp)
  4bd8a4:	00000000 	nop
  4bd8a8:	24635990 	addiu	v1,v1,22928
  4bd8ac:	00621821 	addu	v1,v1,v0
  4bd8b0:	8fc2003c 	lw	v0,60(s8)
  4bd8b4:	00000000 	nop
  4bd8b8:	24420002 	addiu	v0,v0,2
  4bd8bc:	90630000 	lbu	v1,0(v1)
  4bd8c0:	90420000 	lbu	v0,0(v0)
  4bd8c4:	00000000 	nop
  4bd8c8:	00621026 	xor	v0,v1,v0
  4bd8cc:	304200ff 	andi	v0,v0,0xff
  4bd8d0:	00021080 	sll	v0,v0,0x2
  4bd8d4:	24420800 	addiu	v0,v0,2048
  4bd8d8:	8f81804c 	lw	at,-32692(gp)
  4bd8dc:	00000000 	nop
  4bd8e0:	24215a90 	addiu	at,at,23184
  4bd8e4:	00221021 	addu	v0,at,v0
  4bd8e8:	8c420000 	lw	v0,0(v0)
  4bd8ec:	00000000 	nop
  4bd8f0:	00822026 	xor	a0,a0,v0
  4bd8f4:	8fc2003c 	lw	v0,60(s8)
  4bd8f8:	00000000 	nop
  4bd8fc:	2442001b 	addiu	v0,v0,27
  4bd900:	90420000 	lbu	v0,0(v0)
  4bd904:	00000000 	nop
  4bd908:	38420087 	xori	v0,v0,0x87
  4bd90c:	304200ff 	andi	v0,v0,0xff
  4bd910:	8f83804c 	lw	v1,-32692(gp)
  4bd914:	00000000 	nop
  4bd918:	24635890 	addiu	v1,v1,22672
  4bd91c:	00621821 	addu	v1,v1,v0
  4bd920:	8fc2003c 	lw	v0,60(s8)
  4bd924:	00000000 	nop
  4bd928:	24420013 	addiu	v0,v0,19
  4bd92c:	90630000 	lbu	v1,0(v1)
  4bd930:	90420000 	lbu	v0,0(v0)
  4bd934:	00000000 	nop
  4bd938:	00621026 	xor	v0,v1,v0
  4bd93c:	304200ff 	andi	v0,v0,0xff
  4bd940:	8f83804c 	lw	v1,-32692(gp)
  4bd944:	00000000 	nop
  4bd948:	24635990 	addiu	v1,v1,22928
  4bd94c:	00621821 	addu	v1,v1,v0
  4bd950:	8fc2003c 	lw	v0,60(s8)
  4bd954:	00000000 	nop
  4bd958:	2442000b 	addiu	v0,v0,11
  4bd95c:	90630000 	lbu	v1,0(v1)
  4bd960:	90420000 	lbu	v0,0(v0)
  4bd964:	00000000 	nop
  4bd968:	00621026 	xor	v0,v1,v0
  4bd96c:	304200ff 	andi	v0,v0,0xff
  4bd970:	8f83804c 	lw	v1,-32692(gp)
  4bd974:	00000000 	nop
  4bd978:	24635990 	addiu	v1,v1,22928
  4bd97c:	00621821 	addu	v1,v1,v0
  4bd980:	8fc2003c 	lw	v0,60(s8)
  4bd984:	00000000 	nop
  4bd988:	24420003 	addiu	v0,v0,3
  4bd98c:	90630000 	lbu	v1,0(v1)
  4bd990:	90420000 	lbu	v0,0(v0)
  4bd994:	00000000 	nop
  4bd998:	00621026 	xor	v0,v1,v0
  4bd99c:	304200ff 	andi	v0,v0,0xff
  4bd9a0:	00021080 	sll	v0,v0,0x2
  4bd9a4:	24420c00 	addiu	v0,v0,3072
  4bd9a8:	8f81804c 	lw	at,-32692(gp)
  4bd9ac:	00000000 	nop
  4bd9b0:	24215a90 	addiu	at,at,23184
  4bd9b4:	00221021 	addu	v0,at,v0
  4bd9b8:	8c420000 	lw	v0,0(v0)
  4bd9bc:	00000000 	nop
  4bd9c0:	00821026 	xor	v0,a0,v0
  4bd9c4:	afc20014 	sw	v0,20(s8)
  4bd9c8:	8fc2003c 	lw	v0,60(s8)
  4bd9cc:	00000000 	nop
  4bd9d0:	2442001c 	addiu	v0,v0,28
  4bd9d4:	90420000 	lbu	v0,0(v0)
  4bd9d8:	00000000 	nop
  4bd9dc:	384200fa 	xori	v0,v0,0xfa
  4bd9e0:	304200ff 	andi	v0,v0,0xff
  4bd9e4:	8f83804c 	lw	v1,-32692(gp)
  4bd9e8:	00000000 	nop
  4bd9ec:	24635990 	addiu	v1,v1,22928
  4bd9f0:	00621821 	addu	v1,v1,v0
  4bd9f4:	8fc2003c 	lw	v0,60(s8)
  4bd9f8:	00000000 	nop
  4bd9fc:	24420014 	addiu	v0,v0,20
  4bda00:	90630000 	lbu	v1,0(v1)
  4bda04:	90420000 	lbu	v0,0(v0)
  4bda08:	00000000 	nop
  4bda0c:	00621026 	xor	v0,v1,v0
  4bda10:	304200ff 	andi	v0,v0,0xff
  4bda14:	8f83804c 	lw	v1,-32692(gp)
  4bda18:	00000000 	nop
  4bda1c:	24635890 	addiu	v1,v1,22672
  4bda20:	00621821 	addu	v1,v1,v0
  4bda24:	8fc2003c 	lw	v0,60(s8)
  4bda28:	00000000 	nop
  4bda2c:	2442000c 	addiu	v0,v0,12
  4bda30:	90630000 	lbu	v1,0(v1)
  4bda34:	90420000 	lbu	v0,0(v0)
  4bda38:	00000000 	nop
  4bda3c:	00621026 	xor	v0,v1,v0
  4bda40:	304200ff 	andi	v0,v0,0xff
  4bda44:	8f83804c 	lw	v1,-32692(gp)
  4bda48:	00000000 	nop
  4bda4c:	24635890 	addiu	v1,v1,22672
  4bda50:	00621821 	addu	v1,v1,v0
  4bda54:	8fc2003c 	lw	v0,60(s8)
  4bda58:	00000000 	nop
  4bda5c:	24420004 	addiu	v0,v0,4
  4bda60:	90630000 	lbu	v1,0(v1)
  4bda64:	90420000 	lbu	v0,0(v0)
  4bda68:	00000000 	nop
  4bda6c:	00621026 	xor	v0,v1,v0
  4bda70:	304200ff 	andi	v0,v0,0xff
  4bda74:	00021080 	sll	v0,v0,0x2
  4bda78:	8f84804c 	lw	a0,-32692(gp)
  4bda7c:	00000000 	nop
  4bda80:	24845a90 	addiu	a0,a0,23184
  4bda84:	00822021 	addu	a0,a0,v0
  4bda88:	8fc2003c 	lw	v0,60(s8)
  4bda8c:	00000000 	nop
  4bda90:	2442001d 	addiu	v0,v0,29
  4bda94:	90420000 	lbu	v0,0(v0)
  4bda98:	00000000 	nop
  4bda9c:	38420013 	xori	v0,v0,0x13
  4bdaa0:	304200ff 	andi	v0,v0,0xff
  4bdaa4:	8f83804c 	lw	v1,-32692(gp)
  4bdaa8:	00000000 	nop
  4bdaac:	24635990 	addiu	v1,v1,22928
  4bdab0:	00621821 	addu	v1,v1,v0
  4bdab4:	8fc2003c 	lw	v0,60(s8)
  4bdab8:	00000000 	nop
  4bdabc:	24420015 	addiu	v0,v0,21
  4bdac0:	90630000 	lbu	v1,0(v1)
  4bdac4:	90420000 	lbu	v0,0(v0)
  4bdac8:	00000000 	nop
  4bdacc:	00621026 	xor	v0,v1,v0
  4bdad0:	304200ff 	andi	v0,v0,0xff
  4bdad4:	8f83804c 	lw	v1,-32692(gp)
  4bdad8:	00000000 	nop
  4bdadc:	24635990 	addiu	v1,v1,22928
  4bdae0:	00621821 	addu	v1,v1,v0
  4bdae4:	8fc2003c 	lw	v0,60(s8)
  4bdae8:	00000000 	nop
  4bdaec:	2442000d 	addiu	v0,v0,13
  4bdaf0:	90630000 	lbu	v1,0(v1)
  4bdaf4:	90420000 	lbu	v0,0(v0)
  4bdaf8:	00000000 	nop
  4bdafc:	00621026 	xor	v0,v1,v0
  4bdb00:	304200ff 	andi	v0,v0,0xff
  4bdb04:	8f83804c 	lw	v1,-32692(gp)
  4bdb08:	00000000 	nop
  4bdb0c:	24635890 	addiu	v1,v1,22672
  4bdb10:	00621821 	addu	v1,v1,v0
  4bdb14:	8fc2003c 	lw	v0,60(s8)
  4bdb18:	00000000 	nop
  4bdb1c:	24420005 	addiu	v0,v0,5
  4bdb20:	90630000 	lbu	v1,0(v1)
  4bdb24:	90420000 	lbu	v0,0(v0)
  4bdb28:	00000000 	nop
  4bdb2c:	00621026 	xor	v0,v1,v0
  4bdb30:	304200ff 	andi	v0,v0,0xff
  4bdb34:	00021080 	sll	v0,v0,0x2
  4bdb38:	24420400 	addiu	v0,v0,1024
  4bdb3c:	8f81804c 	lw	at,-32692(gp)
  4bdb40:	00000000 	nop
  4bdb44:	24215a90 	addiu	at,at,23184
  4bdb48:	00221021 	addu	v0,at,v0
  4bdb4c:	8c830000 	lw	v1,0(a0)
  4bdb50:	8c420000 	lw	v0,0(v0)
  4bdb54:	00000000 	nop
  4bdb58:	00622026 	xor	a0,v1,v0
  4bdb5c:	8fc2003c 	lw	v0,60(s8)
  4bdb60:	00000000 	nop
  4bdb64:	2442001e 	addiu	v0,v0,30
  4bdb68:	90420000 	lbu	v0,0(v0)
  4bdb6c:	00000000 	nop
  4bdb70:	38420013 	xori	v0,v0,0x13
  4bdb74:	304200ff 	andi	v0,v0,0xff
  4bdb78:	8f83804c 	lw	v1,-32692(gp)
  4bdb7c:	00000000 	nop
  4bdb80:	24635890 	addiu	v1,v1,22672
  4bdb84:	00621821 	addu	v1,v1,v0
  4bdb88:	8fc2003c 	lw	v0,60(s8)
  4bdb8c:	00000000 	nop
  4bdb90:	24420016 	addiu	v0,v0,22
  4bdb94:	90630000 	lbu	v1,0(v1)
  4bdb98:	90420000 	lbu	v0,0(v0)
  4bdb9c:	00000000 	nop
  4bdba0:	00621026 	xor	v0,v1,v0
  4bdba4:	304200ff 	andi	v0,v0,0xff
  4bdba8:	8f83804c 	lw	v1,-32692(gp)
  4bdbac:	00000000 	nop
  4bdbb0:	24635890 	addiu	v1,v1,22672
  4bdbb4:	00621821 	addu	v1,v1,v0
  4bdbb8:	8fc2003c 	lw	v0,60(s8)
  4bdbbc:	00000000 	nop
  4bdbc0:	2442000e 	addiu	v0,v0,14
  4bdbc4:	90630000 	lbu	v1,0(v1)
  4bdbc8:	90420000 	lbu	v0,0(v0)
  4bdbcc:	00000000 	nop
  4bdbd0:	00621026 	xor	v0,v1,v0
  4bdbd4:	304200ff 	andi	v0,v0,0xff
  4bdbd8:	8f83804c 	lw	v1,-32692(gp)
  4bdbdc:	00000000 	nop
  4bdbe0:	24635990 	addiu	v1,v1,22928
  4bdbe4:	00621821 	addu	v1,v1,v0
  4bdbe8:	8fc2003c 	lw	v0,60(s8)
  4bdbec:	00000000 	nop
  4bdbf0:	24420006 	addiu	v0,v0,6
  4bdbf4:	90630000 	lbu	v1,0(v1)
  4bdbf8:	90420000 	lbu	v0,0(v0)
  4bdbfc:	00000000 	nop
  4bdc00:	00621026 	xor	v0,v1,v0
  4bdc04:	304200ff 	andi	v0,v0,0xff
  4bdc08:	00021080 	sll	v0,v0,0x2
  4bdc0c:	24420800 	addiu	v0,v0,2048
  4bdc10:	8f81804c 	lw	at,-32692(gp)
  4bdc14:	00000000 	nop
  4bdc18:	24215a90 	addiu	at,at,23184
  4bdc1c:	00221021 	addu	v0,at,v0
  4bdc20:	8c420000 	lw	v0,0(v0)
  4bdc24:	00000000 	nop
  4bdc28:	00822026 	xor	a0,a0,v0
  4bdc2c:	8fc2003c 	lw	v0,60(s8)
  4bdc30:	00000000 	nop
  4bdc34:	2442001f 	addiu	v0,v0,31
  4bdc38:	90420000 	lbu	v0,0(v0)
  4bdc3c:	00000000 	nop
  4bdc40:	384200fa 	xori	v0,v0,0xfa
  4bdc44:	304200ff 	andi	v0,v0,0xff
  4bdc48:	8f83804c 	lw	v1,-32692(gp)
  4bdc4c:	00000000 	nop
  4bdc50:	24635890 	addiu	v1,v1,22672
  4bdc54:	00621821 	addu	v1,v1,v0
  4bdc58:	8fc2003c 	lw	v0,60(s8)
  4bdc5c:	00000000 	nop
  4bdc60:	24420017 	addiu	v0,v0,23
  4bdc64:	90630000 	lbu	v1,0(v1)
  4bdc68:	90420000 	lbu	v0,0(v0)
  4bdc6c:	00000000 	nop
  4bdc70:	00621026 	xor	v0,v1,v0
  4bdc74:	304200ff 	andi	v0,v0,0xff
  4bdc78:	8f83804c 	lw	v1,-32692(gp)
  4bdc7c:	00000000 	nop
  4bdc80:	24635990 	addiu	v1,v1,22928
  4bdc84:	00621821 	addu	v1,v1,v0
  4bdc88:	8fc2003c 	lw	v0,60(s8)
  4bdc8c:	00000000 	nop
  4bdc90:	2442000f 	addiu	v0,v0,15
  4bdc94:	90630000 	lbu	v1,0(v1)
  4bdc98:	90420000 	lbu	v0,0(v0)
  4bdc9c:	00000000 	nop
  4bdca0:	00621026 	xor	v0,v1,v0
  4bdca4:	304200ff 	andi	v0,v0,0xff
  4bdca8:	8f83804c 	lw	v1,-32692(gp)
  4bdcac:	00000000 	nop
  4bdcb0:	24635990 	addiu	v1,v1,22928
  4bdcb4:	00621821 	addu	v1,v1,v0
  4bdcb8:	8fc2003c 	lw	v0,60(s8)
  4bdcbc:	00000000 	nop
  4bdcc0:	24420007 	addiu	v0,v0,7
  4bdcc4:	90630000 	lbu	v1,0(v1)
  4bdcc8:	90420000 	lbu	v0,0(v0)
  4bdccc:	00000000 	nop
  4bdcd0:	00621026 	xor	v0,v1,v0
  4bdcd4:	304200ff 	andi	v0,v0,0xff
  4bdcd8:	00021080 	sll	v0,v0,0x2
  4bdcdc:	24420c00 	addiu	v0,v0,3072
  4bdce0:	8f81804c 	lw	at,-32692(gp)
  4bdce4:	00000000 	nop
  4bdce8:	24215a90 	addiu	at,at,23184
  4bdcec:	00221021 	addu	v0,at,v0
  4bdcf0:	8c420000 	lw	v0,0(v0)
  4bdcf4:	00000000 	nop
  4bdcf8:	00821026 	xor	v0,a0,v0
  4bdcfc:	afc20018 	sw	v0,24(s8)
  4bdd00:	8fc20018 	lw	v0,24(s8)
  4bdd04:	00000000 	nop
  4bdd08:	00021a00 	sll	v1,v0,0x8
  4bdd0c:	00021602 	srl	v0,v0,0x18
  4bdd10:	00621025 	or	v0,v1,v0
  4bdd14:	afc20018 	sw	v0,24(s8)
  4bdd18:	8fc30014 	lw	v1,20(s8)
  4bdd1c:	8fc20018 	lw	v0,24(s8)
  4bdd20:	00000000 	nop
  4bdd24:	00621021 	addu	v0,v1,v0
  4bdd28:	afc20014 	sw	v0,20(s8)
  4bdd2c:	8fc30018 	lw	v1,24(s8)
  4bdd30:	8fc20014 	lw	v0,20(s8)
  4bdd34:	00000000 	nop
  4bdd38:	00621021 	addu	v0,v1,v0
  4bdd3c:	afc20018 	sw	v0,24(s8)
  4bdd40:	8fc30014 	lw	v1,20(s8)
  4bdd44:	8fc20038 	lw	v0,56(s8)
  4bdd48:	00000000 	nop
  4bdd4c:	ac431070 	sw	v1,4208(v0)
  4bdd50:	8fc20018 	lw	v0,24(s8)
  4bdd54:	00000000 	nop
  4bdd58:	00021a40 	sll	v1,v0,0x9
  4bdd5c:	000215c2 	srl	v0,v0,0x17
  4bdd60:	00621825 	or	v1,v1,v0
  4bdd64:	8fc20038 	lw	v0,56(s8)
  4bdd68:	00000000 	nop
  4bdd6c:	ac431074 	sw	v1,4212(v0)
		CALC_K256 (k, 22, 0x94, 0x06, 0x48, 0x3F);
  4bdd70:	8fc2003c 	lw	v0,60(s8)
  4bdd74:	00000000 	nop
  4bdd78:	24420018 	addiu	v0,v0,24
  4bdd7c:	90420000 	lbu	v0,0(v0)
  4bdd80:	00000000 	nop
  4bdd84:	38420006 	xori	v0,v0,0x6
  4bdd88:	304200ff 	andi	v0,v0,0xff
  4bdd8c:	8f83804c 	lw	v1,-32692(gp)
  4bdd90:	00000000 	nop
  4bdd94:	24635990 	addiu	v1,v1,22928
  4bdd98:	00621821 	addu	v1,v1,v0
  4bdd9c:	8fc2003c 	lw	v0,60(s8)
  4bdda0:	00000000 	nop
  4bdda4:	24420010 	addiu	v0,v0,16
  4bdda8:	90630000 	lbu	v1,0(v1)
  4bddac:	90420000 	lbu	v0,0(v0)
  4bddb0:	00000000 	nop
  4bddb4:	00621026 	xor	v0,v1,v0
  4bddb8:	304200ff 	andi	v0,v0,0xff
  4bddbc:	8f83804c 	lw	v1,-32692(gp)
  4bddc0:	00000000 	nop
  4bddc4:	24635890 	addiu	v1,v1,22672
  4bddc8:	00621821 	addu	v1,v1,v0
  4bddcc:	8fc2003c 	lw	v0,60(s8)
  4bddd0:	00000000 	nop
  4bddd4:	24420008 	addiu	v0,v0,8
  4bddd8:	90630000 	lbu	v1,0(v1)
  4bdddc:	90420000 	lbu	v0,0(v0)
  4bdde0:	00000000 	nop
  4bdde4:	00621026 	xor	v0,v1,v0
  4bdde8:	304200ff 	andi	v0,v0,0xff
  4bddec:	8f81804c 	lw	at,-32692(gp)
  4bddf0:	00000000 	nop
  4bddf4:	24215890 	addiu	at,at,22672
  4bddf8:	00221021 	addu	v0,at,v0
  4bddfc:	90430000 	lbu	v1,0(v0)
  4bde00:	8fc2003c 	lw	v0,60(s8)
  4bde04:	00000000 	nop
  4bde08:	90420000 	lbu	v0,0(v0)
  4bde0c:	00000000 	nop
  4bde10:	00621026 	xor	v0,v1,v0
  4bde14:	304200ff 	andi	v0,v0,0xff
  4bde18:	00021080 	sll	v0,v0,0x2
  4bde1c:	8f84804c 	lw	a0,-32692(gp)
  4bde20:	00000000 	nop
  4bde24:	24845a90 	addiu	a0,a0,23184
  4bde28:	00822021 	addu	a0,a0,v0
  4bde2c:	8fc2003c 	lw	v0,60(s8)
  4bde30:	00000000 	nop
  4bde34:	24420019 	addiu	v0,v0,25
  4bde38:	90420000 	lbu	v0,0(v0)
  4bde3c:	00000000 	nop
  4bde40:	38420094 	xori	v0,v0,0x94
  4bde44:	304200ff 	andi	v0,v0,0xff
  4bde48:	8f83804c 	lw	v1,-32692(gp)
  4bde4c:	00000000 	nop
  4bde50:	24635990 	addiu	v1,v1,22928
  4bde54:	00621821 	addu	v1,v1,v0
  4bde58:	8fc2003c 	lw	v0,60(s8)
  4bde5c:	00000000 	nop
  4bde60:	24420011 	addiu	v0,v0,17
  4bde64:	90630000 	lbu	v1,0(v1)
  4bde68:	90420000 	lbu	v0,0(v0)
  4bde6c:	00000000 	nop
  4bde70:	00621026 	xor	v0,v1,v0
  4bde74:	304200ff 	andi	v0,v0,0xff
  4bde78:	8f83804c 	lw	v1,-32692(gp)
  4bde7c:	00000000 	nop
  4bde80:	24635990 	addiu	v1,v1,22928
  4bde84:	00621821 	addu	v1,v1,v0
  4bde88:	8fc2003c 	lw	v0,60(s8)
  4bde8c:	00000000 	nop
  4bde90:	24420009 	addiu	v0,v0,9
  4bde94:	90630000 	lbu	v1,0(v1)
  4bde98:	90420000 	lbu	v0,0(v0)
  4bde9c:	00000000 	nop
  4bdea0:	00621026 	xor	v0,v1,v0
  4bdea4:	304200ff 	andi	v0,v0,0xff
  4bdea8:	8f83804c 	lw	v1,-32692(gp)
  4bdeac:	00000000 	nop
  4bdeb0:	24635890 	addiu	v1,v1,22672
  4bdeb4:	00621821 	addu	v1,v1,v0
  4bdeb8:	8fc2003c 	lw	v0,60(s8)
  4bdebc:	00000000 	nop
  4bdec0:	24420001 	addiu	v0,v0,1
  4bdec4:	90630000 	lbu	v1,0(v1)
  4bdec8:	90420000 	lbu	v0,0(v0)
  4bdecc:	00000000 	nop
  4bded0:	00621026 	xor	v0,v1,v0
  4bded4:	304200ff 	andi	v0,v0,0xff
  4bded8:	00021080 	sll	v0,v0,0x2
  4bdedc:	24420400 	addiu	v0,v0,1024
  4bdee0:	8f81804c 	lw	at,-32692(gp)
  4bdee4:	00000000 	nop
  4bdee8:	24215a90 	addiu	at,at,23184
  4bdeec:	00221021 	addu	v0,at,v0
  4bdef0:	8c830000 	lw	v1,0(a0)
  4bdef4:	8c420000 	lw	v0,0(v0)
  4bdef8:	00000000 	nop
  4bdefc:	00622026 	xor	a0,v1,v0
  4bdf00:	8fc2003c 	lw	v0,60(s8)
  4bdf04:	00000000 	nop
  4bdf08:	2442001a 	addiu	v0,v0,26
  4bdf0c:	90420000 	lbu	v0,0(v0)
  4bdf10:	00000000 	nop
  4bdf14:	38420094 	xori	v0,v0,0x94
  4bdf18:	304200ff 	andi	v0,v0,0xff
  4bdf1c:	8f83804c 	lw	v1,-32692(gp)
  4bdf20:	00000000 	nop
  4bdf24:	24635890 	addiu	v1,v1,22672
  4bdf28:	00621821 	addu	v1,v1,v0
  4bdf2c:	8fc2003c 	lw	v0,60(s8)
  4bdf30:	00000000 	nop
  4bdf34:	24420012 	addiu	v0,v0,18
  4bdf38:	90630000 	lbu	v1,0(v1)
  4bdf3c:	90420000 	lbu	v0,0(v0)
  4bdf40:	00000000 	nop
  4bdf44:	00621026 	xor	v0,v1,v0
  4bdf48:	304200ff 	andi	v0,v0,0xff
  4bdf4c:	8f83804c 	lw	v1,-32692(gp)
  4bdf50:	00000000 	nop
  4bdf54:	24635890 	addiu	v1,v1,22672
  4bdf58:	00621821 	addu	v1,v1,v0
  4bdf5c:	8fc2003c 	lw	v0,60(s8)
  4bdf60:	00000000 	nop
  4bdf64:	2442000a 	addiu	v0,v0,10
  4bdf68:	90630000 	lbu	v1,0(v1)
  4bdf6c:	90420000 	lbu	v0,0(v0)
  4bdf70:	00000000 	nop
  4bdf74:	00621026 	xor	v0,v1,v0
  4bdf78:	304200ff 	andi	v0,v0,0xff
  4bdf7c:	8f83804c 	lw	v1,-32692(gp)
  4bdf80:	00000000 	nop
  4bdf84:	24635990 	addiu	v1,v1,22928
  4bdf88:	00621821 	addu	v1,v1,v0
  4bdf8c:	8fc2003c 	lw	v0,60(s8)
  4bdf90:	00000000 	nop
  4bdf94:	24420002 	addiu	v0,v0,2
  4bdf98:	90630000 	lbu	v1,0(v1)
  4bdf9c:	90420000 	lbu	v0,0(v0)
  4bdfa0:	00000000 	nop
  4bdfa4:	00621026 	xor	v0,v1,v0
  4bdfa8:	304200ff 	andi	v0,v0,0xff
  4bdfac:	00021080 	sll	v0,v0,0x2
  4bdfb0:	24420800 	addiu	v0,v0,2048
  4bdfb4:	8f81804c 	lw	at,-32692(gp)
  4bdfb8:	00000000 	nop
  4bdfbc:	24215a90 	addiu	at,at,23184
  4bdfc0:	00221021 	addu	v0,at,v0
  4bdfc4:	8c420000 	lw	v0,0(v0)
  4bdfc8:	00000000 	nop
  4bdfcc:	00822026 	xor	a0,a0,v0
  4bdfd0:	8fc2003c 	lw	v0,60(s8)
  4bdfd4:	00000000 	nop
  4bdfd8:	2442001b 	addiu	v0,v0,27
  4bdfdc:	90420000 	lbu	v0,0(v0)
  4bdfe0:	00000000 	nop
  4bdfe4:	38420006 	xori	v0,v0,0x6
  4bdfe8:	304200ff 	andi	v0,v0,0xff
  4bdfec:	8f83804c 	lw	v1,-32692(gp)
  4bdff0:	00000000 	nop
  4bdff4:	24635890 	addiu	v1,v1,22672
  4bdff8:	00621821 	addu	v1,v1,v0
  4bdffc:	8fc2003c 	lw	v0,60(s8)
  4be000:	00000000 	nop
  4be004:	24420013 	addiu	v0,v0,19
  4be008:	90630000 	lbu	v1,0(v1)
  4be00c:	90420000 	lbu	v0,0(v0)
  4be010:	00000000 	nop
  4be014:	00621026 	xor	v0,v1,v0
  4be018:	304200ff 	andi	v0,v0,0xff
  4be01c:	8f83804c 	lw	v1,-32692(gp)
  4be020:	00000000 	nop
  4be024:	24635990 	addiu	v1,v1,22928
  4be028:	00621821 	addu	v1,v1,v0
  4be02c:	8fc2003c 	lw	v0,60(s8)
  4be030:	00000000 	nop
  4be034:	2442000b 	addiu	v0,v0,11
  4be038:	90630000 	lbu	v1,0(v1)
  4be03c:	90420000 	lbu	v0,0(v0)
  4be040:	00000000 	nop
  4be044:	00621026 	xor	v0,v1,v0
  4be048:	304200ff 	andi	v0,v0,0xff
  4be04c:	8f83804c 	lw	v1,-32692(gp)
  4be050:	00000000 	nop
  4be054:	24635990 	addiu	v1,v1,22928
  4be058:	00621821 	addu	v1,v1,v0
  4be05c:	8fc2003c 	lw	v0,60(s8)
  4be060:	00000000 	nop
  4be064:	24420003 	addiu	v0,v0,3
  4be068:	90630000 	lbu	v1,0(v1)
  4be06c:	90420000 	lbu	v0,0(v0)
  4be070:	00000000 	nop
  4be074:	00621026 	xor	v0,v1,v0
  4be078:	304200ff 	andi	v0,v0,0xff
  4be07c:	00021080 	sll	v0,v0,0x2
  4be080:	24420c00 	addiu	v0,v0,3072
  4be084:	8f81804c 	lw	at,-32692(gp)
  4be088:	00000000 	nop
  4be08c:	24215a90 	addiu	at,at,23184
  4be090:	00221021 	addu	v0,at,v0
  4be094:	8c420000 	lw	v0,0(v0)
  4be098:	00000000 	nop
  4be09c:	00821026 	xor	v0,a0,v0
  4be0a0:	afc20014 	sw	v0,20(s8)
  4be0a4:	8fc2003c 	lw	v0,60(s8)
  4be0a8:	00000000 	nop
  4be0ac:	2442001c 	addiu	v0,v0,28
  4be0b0:	90420000 	lbu	v0,0(v0)
  4be0b4:	00000000 	nop
  4be0b8:	3842003f 	xori	v0,v0,0x3f
  4be0bc:	304200ff 	andi	v0,v0,0xff
  4be0c0:	8f83804c 	lw	v1,-32692(gp)
  4be0c4:	00000000 	nop
  4be0c8:	24635990 	addiu	v1,v1,22928
  4be0cc:	00621821 	addu	v1,v1,v0
  4be0d0:	8fc2003c 	lw	v0,60(s8)
  4be0d4:	00000000 	nop
  4be0d8:	24420014 	addiu	v0,v0,20
  4be0dc:	90630000 	lbu	v1,0(v1)
  4be0e0:	90420000 	lbu	v0,0(v0)
  4be0e4:	00000000 	nop
  4be0e8:	00621026 	xor	v0,v1,v0
  4be0ec:	304200ff 	andi	v0,v0,0xff
  4be0f0:	8f83804c 	lw	v1,-32692(gp)
  4be0f4:	00000000 	nop
  4be0f8:	24635890 	addiu	v1,v1,22672
  4be0fc:	00621821 	addu	v1,v1,v0
  4be100:	8fc2003c 	lw	v0,60(s8)
  4be104:	00000000 	nop
  4be108:	2442000c 	addiu	v0,v0,12
  4be10c:	90630000 	lbu	v1,0(v1)
  4be110:	90420000 	lbu	v0,0(v0)
  4be114:	00000000 	nop
  4be118:	00621026 	xor	v0,v1,v0
  4be11c:	304200ff 	andi	v0,v0,0xff
  4be120:	8f83804c 	lw	v1,-32692(gp)
  4be124:	00000000 	nop
  4be128:	24635890 	addiu	v1,v1,22672
  4be12c:	00621821 	addu	v1,v1,v0
  4be130:	8fc2003c 	lw	v0,60(s8)
  4be134:	00000000 	nop
  4be138:	24420004 	addiu	v0,v0,4
  4be13c:	90630000 	lbu	v1,0(v1)
  4be140:	90420000 	lbu	v0,0(v0)
  4be144:	00000000 	nop
  4be148:	00621026 	xor	v0,v1,v0
  4be14c:	304200ff 	andi	v0,v0,0xff
  4be150:	00021080 	sll	v0,v0,0x2
  4be154:	8f84804c 	lw	a0,-32692(gp)
  4be158:	00000000 	nop
  4be15c:	24845a90 	addiu	a0,a0,23184
  4be160:	00822021 	addu	a0,a0,v0
  4be164:	8fc2003c 	lw	v0,60(s8)
  4be168:	00000000 	nop
  4be16c:	2442001d 	addiu	v0,v0,29
  4be170:	90420000 	lbu	v0,0(v0)
  4be174:	00000000 	nop
  4be178:	38420048 	xori	v0,v0,0x48
  4be17c:	304200ff 	andi	v0,v0,0xff
  4be180:	8f83804c 	lw	v1,-32692(gp)
  4be184:	00000000 	nop
  4be188:	24635990 	addiu	v1,v1,22928
  4be18c:	00621821 	addu	v1,v1,v0
  4be190:	8fc2003c 	lw	v0,60(s8)
  4be194:	00000000 	nop
  4be198:	24420015 	addiu	v0,v0,21
  4be19c:	90630000 	lbu	v1,0(v1)
  4be1a0:	90420000 	lbu	v0,0(v0)
  4be1a4:	00000000 	nop
  4be1a8:	00621026 	xor	v0,v1,v0
  4be1ac:	304200ff 	andi	v0,v0,0xff
  4be1b0:	8f83804c 	lw	v1,-32692(gp)
  4be1b4:	00000000 	nop
  4be1b8:	24635990 	addiu	v1,v1,22928
  4be1bc:	00621821 	addu	v1,v1,v0
  4be1c0:	8fc2003c 	lw	v0,60(s8)
  4be1c4:	00000000 	nop
  4be1c8:	2442000d 	addiu	v0,v0,13
  4be1cc:	90630000 	lbu	v1,0(v1)
  4be1d0:	90420000 	lbu	v0,0(v0)
  4be1d4:	00000000 	nop
  4be1d8:	00621026 	xor	v0,v1,v0
  4be1dc:	304200ff 	andi	v0,v0,0xff
  4be1e0:	8f83804c 	lw	v1,-32692(gp)
  4be1e4:	00000000 	nop
  4be1e8:	24635890 	addiu	v1,v1,22672
  4be1ec:	00621821 	addu	v1,v1,v0
  4be1f0:	8fc2003c 	lw	v0,60(s8)
  4be1f4:	00000000 	nop
  4be1f8:	24420005 	addiu	v0,v0,5
  4be1fc:	90630000 	lbu	v1,0(v1)
  4be200:	90420000 	lbu	v0,0(v0)
  4be204:	00000000 	nop
  4be208:	00621026 	xor	v0,v1,v0
  4be20c:	304200ff 	andi	v0,v0,0xff
  4be210:	00021080 	sll	v0,v0,0x2
  4be214:	24420400 	addiu	v0,v0,1024
  4be218:	8f81804c 	lw	at,-32692(gp)
  4be21c:	00000000 	nop
  4be220:	24215a90 	addiu	at,at,23184
  4be224:	00221021 	addu	v0,at,v0
  4be228:	8c830000 	lw	v1,0(a0)
  4be22c:	8c420000 	lw	v0,0(v0)
  4be230:	00000000 	nop
  4be234:	00622026 	xor	a0,v1,v0
  4be238:	8fc2003c 	lw	v0,60(s8)
  4be23c:	00000000 	nop
  4be240:	2442001e 	addiu	v0,v0,30
  4be244:	90420000 	lbu	v0,0(v0)
  4be248:	00000000 	nop
  4be24c:	38420048 	xori	v0,v0,0x48
  4be250:	304200ff 	andi	v0,v0,0xff
  4be254:	8f83804c 	lw	v1,-32692(gp)
  4be258:	00000000 	nop
  4be25c:	24635890 	addiu	v1,v1,22672
  4be260:	00621821 	addu	v1,v1,v0
  4be264:	8fc2003c 	lw	v0,60(s8)
  4be268:	00000000 	nop
  4be26c:	24420016 	addiu	v0,v0,22
  4be270:	90630000 	lbu	v1,0(v1)
  4be274:	90420000 	lbu	v0,0(v0)
  4be278:	00000000 	nop
  4be27c:	00621026 	xor	v0,v1,v0
  4be280:	304200ff 	andi	v0,v0,0xff
  4be284:	8f83804c 	lw	v1,-32692(gp)
  4be288:	00000000 	nop
  4be28c:	24635890 	addiu	v1,v1,22672
  4be290:	00621821 	addu	v1,v1,v0
  4be294:	8fc2003c 	lw	v0,60(s8)
  4be298:	00000000 	nop
  4be29c:	2442000e 	addiu	v0,v0,14
  4be2a0:	90630000 	lbu	v1,0(v1)
  4be2a4:	90420000 	lbu	v0,0(v0)
  4be2a8:	00000000 	nop
  4be2ac:	00621026 	xor	v0,v1,v0
  4be2b0:	304200ff 	andi	v0,v0,0xff
  4be2b4:	8f83804c 	lw	v1,-32692(gp)
  4be2b8:	00000000 	nop
  4be2bc:	24635990 	addiu	v1,v1,22928
  4be2c0:	00621821 	addu	v1,v1,v0
  4be2c4:	8fc2003c 	lw	v0,60(s8)
  4be2c8:	00000000 	nop
  4be2cc:	24420006 	addiu	v0,v0,6
  4be2d0:	90630000 	lbu	v1,0(v1)
  4be2d4:	90420000 	lbu	v0,0(v0)
  4be2d8:	00000000 	nop
  4be2dc:	00621026 	xor	v0,v1,v0
  4be2e0:	304200ff 	andi	v0,v0,0xff
  4be2e4:	00021080 	sll	v0,v0,0x2
  4be2e8:	24420800 	addiu	v0,v0,2048
  4be2ec:	8f81804c 	lw	at,-32692(gp)
  4be2f0:	00000000 	nop
  4be2f4:	24215a90 	addiu	at,at,23184
  4be2f8:	00221021 	addu	v0,at,v0
  4be2fc:	8c420000 	lw	v0,0(v0)
  4be300:	00000000 	nop
  4be304:	00822026 	xor	a0,a0,v0
  4be308:	8fc2003c 	lw	v0,60(s8)
  4be30c:	00000000 	nop
  4be310:	2442001f 	addiu	v0,v0,31
  4be314:	90420000 	lbu	v0,0(v0)
  4be318:	00000000 	nop
  4be31c:	3842003f 	xori	v0,v0,0x3f
  4be320:	304200ff 	andi	v0,v0,0xff
  4be324:	8f83804c 	lw	v1,-32692(gp)
  4be328:	00000000 	nop
  4be32c:	24635890 	addiu	v1,v1,22672
  4be330:	00621821 	addu	v1,v1,v0
  4be334:	8fc2003c 	lw	v0,60(s8)
  4be338:	00000000 	nop
  4be33c:	24420017 	addiu	v0,v0,23
  4be340:	90630000 	lbu	v1,0(v1)
  4be344:	90420000 	lbu	v0,0(v0)
  4be348:	00000000 	nop
  4be34c:	00621026 	xor	v0,v1,v0
  4be350:	304200ff 	andi	v0,v0,0xff
  4be354:	8f83804c 	lw	v1,-32692(gp)
  4be358:	00000000 	nop
  4be35c:	24635990 	addiu	v1,v1,22928
  4be360:	00621821 	addu	v1,v1,v0
  4be364:	8fc2003c 	lw	v0,60(s8)
  4be368:	00000000 	nop
  4be36c:	2442000f 	addiu	v0,v0,15
  4be370:	90630000 	lbu	v1,0(v1)
  4be374:	90420000 	lbu	v0,0(v0)
  4be378:	00000000 	nop
  4be37c:	00621026 	xor	v0,v1,v0
  4be380:	304200ff 	andi	v0,v0,0xff
  4be384:	8f83804c 	lw	v1,-32692(gp)
  4be388:	00000000 	nop
  4be38c:	24635990 	addiu	v1,v1,22928
  4be390:	00621821 	addu	v1,v1,v0
  4be394:	8fc2003c 	lw	v0,60(s8)
  4be398:	00000000 	nop
  4be39c:	24420007 	addiu	v0,v0,7
  4be3a0:	90630000 	lbu	v1,0(v1)
  4be3a4:	90420000 	lbu	v0,0(v0)
  4be3a8:	00000000 	nop
  4be3ac:	00621026 	xor	v0,v1,v0
  4be3b0:	304200ff 	andi	v0,v0,0xff
  4be3b4:	00021080 	sll	v0,v0,0x2
  4be3b8:	24420c00 	addiu	v0,v0,3072
  4be3bc:	8f81804c 	lw	at,-32692(gp)
  4be3c0:	00000000 	nop
  4be3c4:	24215a90 	addiu	at,at,23184
  4be3c8:	00221021 	addu	v0,at,v0
  4be3cc:	8c420000 	lw	v0,0(v0)
  4be3d0:	00000000 	nop
  4be3d4:	00821026 	xor	v0,a0,v0
  4be3d8:	afc20018 	sw	v0,24(s8)
  4be3dc:	8fc20018 	lw	v0,24(s8)
  4be3e0:	00000000 	nop
  4be3e4:	00021a00 	sll	v1,v0,0x8
  4be3e8:	00021602 	srl	v0,v0,0x18
  4be3ec:	00621025 	or	v0,v1,v0
  4be3f0:	afc20018 	sw	v0,24(s8)
  4be3f4:	8fc30014 	lw	v1,20(s8)
  4be3f8:	8fc20018 	lw	v0,24(s8)
  4be3fc:	00000000 	nop
  4be400:	00621021 	addu	v0,v1,v0
  4be404:	afc20014 	sw	v0,20(s8)
  4be408:	8fc30018 	lw	v1,24(s8)
  4be40c:	8fc20014 	lw	v0,20(s8)
  4be410:	00000000 	nop
  4be414:	00621021 	addu	v0,v1,v0
  4be418:	afc20018 	sw	v0,24(s8)
  4be41c:	8fc30014 	lw	v1,20(s8)
  4be420:	8fc20038 	lw	v0,56(s8)
  4be424:	00000000 	nop
  4be428:	ac431078 	sw	v1,4216(v0)
  4be42c:	8fc20018 	lw	v0,24(s8)
  4be430:	00000000 	nop
  4be434:	00021a40 	sll	v1,v0,0x9
  4be438:	000215c2 	srl	v0,v0,0x17
  4be43c:	00621825 	or	v1,v1,v0
  4be440:	8fc20038 	lw	v0,56(s8)
  4be444:	00000000 	nop
  4be448:	ac43107c 	sw	v1,4220(v0)
		CALC_K256 (k, 24, 0xF2, 0x5E, 0xD0, 0xBA);
  4be44c:	8fc2003c 	lw	v0,60(s8)
  4be450:	00000000 	nop
  4be454:	24420018 	addiu	v0,v0,24
  4be458:	90420000 	lbu	v0,0(v0)
  4be45c:	00000000 	nop
  4be460:	3842005e 	xori	v0,v0,0x5e
  4be464:	304200ff 	andi	v0,v0,0xff
  4be468:	8f83804c 	lw	v1,-32692(gp)
  4be46c:	00000000 	nop
  4be470:	24635990 	addiu	v1,v1,22928
  4be474:	00621821 	addu	v1,v1,v0
  4be478:	8fc2003c 	lw	v0,60(s8)
  4be47c:	00000000 	nop
  4be480:	24420010 	addiu	v0,v0,16
  4be484:	90630000 	lbu	v1,0(v1)
  4be488:	90420000 	lbu	v0,0(v0)
  4be48c:	00000000 	nop
  4be490:	00621026 	xor	v0,v1,v0
  4be494:	304200ff 	andi	v0,v0,0xff
  4be498:	8f83804c 	lw	v1,-32692(gp)
  4be49c:	00000000 	nop
  4be4a0:	24635890 	addiu	v1,v1,22672
  4be4a4:	00621821 	addu	v1,v1,v0
  4be4a8:	8fc2003c 	lw	v0,60(s8)
  4be4ac:	00000000 	nop
  4be4b0:	24420008 	addiu	v0,v0,8
  4be4b4:	90630000 	lbu	v1,0(v1)
  4be4b8:	90420000 	lbu	v0,0(v0)
  4be4bc:	00000000 	nop
  4be4c0:	00621026 	xor	v0,v1,v0
  4be4c4:	304200ff 	andi	v0,v0,0xff
  4be4c8:	8f81804c 	lw	at,-32692(gp)
  4be4cc:	00000000 	nop
  4be4d0:	24215890 	addiu	at,at,22672
  4be4d4:	00221021 	addu	v0,at,v0
  4be4d8:	90430000 	lbu	v1,0(v0)
  4be4dc:	8fc2003c 	lw	v0,60(s8)
  4be4e0:	00000000 	nop
  4be4e4:	90420000 	lbu	v0,0(v0)
  4be4e8:	00000000 	nop
  4be4ec:	00621026 	xor	v0,v1,v0
  4be4f0:	304200ff 	andi	v0,v0,0xff
  4be4f4:	00021080 	sll	v0,v0,0x2
  4be4f8:	8f84804c 	lw	a0,-32692(gp)
  4be4fc:	00000000 	nop
  4be500:	24845a90 	addiu	a0,a0,23184
  4be504:	00822021 	addu	a0,a0,v0
  4be508:	8fc2003c 	lw	v0,60(s8)
  4be50c:	00000000 	nop
  4be510:	24420019 	addiu	v0,v0,25
  4be514:	90420000 	lbu	v0,0(v0)
  4be518:	00000000 	nop
  4be51c:	384200f2 	xori	v0,v0,0xf2
  4be520:	304200ff 	andi	v0,v0,0xff
  4be524:	8f83804c 	lw	v1,-32692(gp)
  4be528:	00000000 	nop
  4be52c:	24635990 	addiu	v1,v1,22928
  4be530:	00621821 	addu	v1,v1,v0
  4be534:	8fc2003c 	lw	v0,60(s8)
  4be538:	00000000 	nop
  4be53c:	24420011 	addiu	v0,v0,17
  4be540:	90630000 	lbu	v1,0(v1)
  4be544:	90420000 	lbu	v0,0(v0)
  4be548:	00000000 	nop
  4be54c:	00621026 	xor	v0,v1,v0
  4be550:	304200ff 	andi	v0,v0,0xff
  4be554:	8f83804c 	lw	v1,-32692(gp)
  4be558:	00000000 	nop
  4be55c:	24635990 	addiu	v1,v1,22928
  4be560:	00621821 	addu	v1,v1,v0
  4be564:	8fc2003c 	lw	v0,60(s8)
  4be568:	00000000 	nop
  4be56c:	24420009 	addiu	v0,v0,9
  4be570:	90630000 	lbu	v1,0(v1)
  4be574:	90420000 	lbu	v0,0(v0)
  4be578:	00000000 	nop
  4be57c:	00621026 	xor	v0,v1,v0
  4be580:	304200ff 	andi	v0,v0,0xff
  4be584:	8f83804c 	lw	v1,-32692(gp)
  4be588:	00000000 	nop
  4be58c:	24635890 	addiu	v1,v1,22672
  4be590:	00621821 	addu	v1,v1,v0
  4be594:	8fc2003c 	lw	v0,60(s8)
  4be598:	00000000 	nop
  4be59c:	24420001 	addiu	v0,v0,1
  4be5a0:	90630000 	lbu	v1,0(v1)
  4be5a4:	90420000 	lbu	v0,0(v0)
  4be5a8:	00000000 	nop
  4be5ac:	00621026 	xor	v0,v1,v0
  4be5b0:	304200ff 	andi	v0,v0,0xff
  4be5b4:	00021080 	sll	v0,v0,0x2
  4be5b8:	24420400 	addiu	v0,v0,1024
  4be5bc:	8f81804c 	lw	at,-32692(gp)
  4be5c0:	00000000 	nop
  4be5c4:	24215a90 	addiu	at,at,23184
  4be5c8:	00221021 	addu	v0,at,v0
  4be5cc:	8c830000 	lw	v1,0(a0)
  4be5d0:	8c420000 	lw	v0,0(v0)
  4be5d4:	00000000 	nop
  4be5d8:	00622026 	xor	a0,v1,v0
  4be5dc:	8fc2003c 	lw	v0,60(s8)
  4be5e0:	00000000 	nop
  4be5e4:	2442001a 	addiu	v0,v0,26
  4be5e8:	90420000 	lbu	v0,0(v0)
  4be5ec:	00000000 	nop
  4be5f0:	384200f2 	xori	v0,v0,0xf2
  4be5f4:	304200ff 	andi	v0,v0,0xff
  4be5f8:	8f83804c 	lw	v1,-32692(gp)
  4be5fc:	00000000 	nop
  4be600:	24635890 	addiu	v1,v1,22672
  4be604:	00621821 	addu	v1,v1,v0
  4be608:	8fc2003c 	lw	v0,60(s8)
  4be60c:	00000000 	nop
  4be610:	24420012 	addiu	v0,v0,18
  4be614:	90630000 	lbu	v1,0(v1)
  4be618:	90420000 	lbu	v0,0(v0)
  4be61c:	00000000 	nop
  4be620:	00621026 	xor	v0,v1,v0
  4be624:	304200ff 	andi	v0,v0,0xff
  4be628:	8f83804c 	lw	v1,-32692(gp)
  4be62c:	00000000 	nop
  4be630:	24635890 	addiu	v1,v1,22672
  4be634:	00621821 	addu	v1,v1,v0
  4be638:	8fc2003c 	lw	v0,60(s8)
  4be63c:	00000000 	nop
  4be640:	2442000a 	addiu	v0,v0,10
  4be644:	90630000 	lbu	v1,0(v1)
  4be648:	90420000 	lbu	v0,0(v0)
  4be64c:	00000000 	nop
  4be650:	00621026 	xor	v0,v1,v0
  4be654:	304200ff 	andi	v0,v0,0xff
  4be658:	8f83804c 	lw	v1,-32692(gp)
  4be65c:	00000000 	nop
  4be660:	24635990 	addiu	v1,v1,22928
  4be664:	00621821 	addu	v1,v1,v0
  4be668:	8fc2003c 	lw	v0,60(s8)
  4be66c:	00000000 	nop
  4be670:	24420002 	addiu	v0,v0,2
  4be674:	90630000 	lbu	v1,0(v1)
  4be678:	90420000 	lbu	v0,0(v0)
  4be67c:	00000000 	nop
  4be680:	00621026 	xor	v0,v1,v0
  4be684:	304200ff 	andi	v0,v0,0xff
  4be688:	00021080 	sll	v0,v0,0x2
  4be68c:	24420800 	addiu	v0,v0,2048
  4be690:	8f81804c 	lw	at,-32692(gp)
  4be694:	00000000 	nop
  4be698:	24215a90 	addiu	at,at,23184
  4be69c:	00221021 	addu	v0,at,v0
  4be6a0:	8c420000 	lw	v0,0(v0)
  4be6a4:	00000000 	nop
  4be6a8:	00822026 	xor	a0,a0,v0
  4be6ac:	8fc2003c 	lw	v0,60(s8)
  4be6b0:	00000000 	nop
  4be6b4:	2442001b 	addiu	v0,v0,27
  4be6b8:	90420000 	lbu	v0,0(v0)
  4be6bc:	00000000 	nop
  4be6c0:	3842005e 	xori	v0,v0,0x5e
  4be6c4:	304200ff 	andi	v0,v0,0xff
  4be6c8:	8f83804c 	lw	v1,-32692(gp)
  4be6cc:	00000000 	nop
  4be6d0:	24635890 	addiu	v1,v1,22672
  4be6d4:	00621821 	addu	v1,v1,v0
  4be6d8:	8fc2003c 	lw	v0,60(s8)
  4be6dc:	00000000 	nop
  4be6e0:	24420013 	addiu	v0,v0,19
  4be6e4:	90630000 	lbu	v1,0(v1)
  4be6e8:	90420000 	lbu	v0,0(v0)
  4be6ec:	00000000 	nop
  4be6f0:	00621026 	xor	v0,v1,v0
  4be6f4:	304200ff 	andi	v0,v0,0xff
  4be6f8:	8f83804c 	lw	v1,-32692(gp)
  4be6fc:	00000000 	nop
  4be700:	24635990 	addiu	v1,v1,22928
  4be704:	00621821 	addu	v1,v1,v0
  4be708:	8fc2003c 	lw	v0,60(s8)
  4be70c:	00000000 	nop
  4be710:	2442000b 	addiu	v0,v0,11
  4be714:	90630000 	lbu	v1,0(v1)
  4be718:	90420000 	lbu	v0,0(v0)
  4be71c:	00000000 	nop
  4be720:	00621026 	xor	v0,v1,v0
  4be724:	304200ff 	andi	v0,v0,0xff
  4be728:	8f83804c 	lw	v1,-32692(gp)
  4be72c:	00000000 	nop
  4be730:	24635990 	addiu	v1,v1,22928
  4be734:	00621821 	addu	v1,v1,v0
  4be738:	8fc2003c 	lw	v0,60(s8)
  4be73c:	00000000 	nop
  4be740:	24420003 	addiu	v0,v0,3
  4be744:	90630000 	lbu	v1,0(v1)
  4be748:	90420000 	lbu	v0,0(v0)
  4be74c:	00000000 	nop
  4be750:	00621026 	xor	v0,v1,v0
  4be754:	304200ff 	andi	v0,v0,0xff
  4be758:	00021080 	sll	v0,v0,0x2
  4be75c:	24420c00 	addiu	v0,v0,3072
  4be760:	8f81804c 	lw	at,-32692(gp)
  4be764:	00000000 	nop
  4be768:	24215a90 	addiu	at,at,23184
  4be76c:	00221021 	addu	v0,at,v0
  4be770:	8c420000 	lw	v0,0(v0)
  4be774:	00000000 	nop
  4be778:	00821026 	xor	v0,a0,v0
  4be77c:	afc20014 	sw	v0,20(s8)
  4be780:	8fc2003c 	lw	v0,60(s8)
  4be784:	00000000 	nop
  4be788:	2442001c 	addiu	v0,v0,28
  4be78c:	90420000 	lbu	v0,0(v0)
  4be790:	00000000 	nop
  4be794:	384200ba 	xori	v0,v0,0xba
  4be798:	304200ff 	andi	v0,v0,0xff
  4be79c:	8f83804c 	lw	v1,-32692(gp)
  4be7a0:	00000000 	nop
  4be7a4:	24635990 	addiu	v1,v1,22928
  4be7a8:	00621821 	addu	v1,v1,v0
  4be7ac:	8fc2003c 	lw	v0,60(s8)
  4be7b0:	00000000 	nop
  4be7b4:	24420014 	addiu	v0,v0,20
  4be7b8:	90630000 	lbu	v1,0(v1)
  4be7bc:	90420000 	lbu	v0,0(v0)
  4be7c0:	00000000 	nop
  4be7c4:	00621026 	xor	v0,v1,v0
  4be7c8:	304200ff 	andi	v0,v0,0xff
  4be7cc:	8f83804c 	lw	v1,-32692(gp)
  4be7d0:	00000000 	nop
  4be7d4:	24635890 	addiu	v1,v1,22672
  4be7d8:	00621821 	addu	v1,v1,v0
  4be7dc:	8fc2003c 	lw	v0,60(s8)
  4be7e0:	00000000 	nop
  4be7e4:	2442000c 	addiu	v0,v0,12
  4be7e8:	90630000 	lbu	v1,0(v1)
  4be7ec:	90420000 	lbu	v0,0(v0)
  4be7f0:	00000000 	nop
  4be7f4:	00621026 	xor	v0,v1,v0
  4be7f8:	304200ff 	andi	v0,v0,0xff
  4be7fc:	8f83804c 	lw	v1,-32692(gp)
  4be800:	00000000 	nop
  4be804:	24635890 	addiu	v1,v1,22672
  4be808:	00621821 	addu	v1,v1,v0
  4be80c:	8fc2003c 	lw	v0,60(s8)
  4be810:	00000000 	nop
  4be814:	24420004 	addiu	v0,v0,4
  4be818:	90630000 	lbu	v1,0(v1)
  4be81c:	90420000 	lbu	v0,0(v0)
  4be820:	00000000 	nop
  4be824:	00621026 	xor	v0,v1,v0
  4be828:	304200ff 	andi	v0,v0,0xff
  4be82c:	00021080 	sll	v0,v0,0x2
  4be830:	8f84804c 	lw	a0,-32692(gp)
  4be834:	00000000 	nop
  4be838:	24845a90 	addiu	a0,a0,23184
  4be83c:	00822021 	addu	a0,a0,v0
  4be840:	8fc2003c 	lw	v0,60(s8)
  4be844:	00000000 	nop
  4be848:	2442001d 	addiu	v0,v0,29
  4be84c:	90420000 	lbu	v0,0(v0)
  4be850:	00000000 	nop
  4be854:	384200d0 	xori	v0,v0,0xd0
  4be858:	304200ff 	andi	v0,v0,0xff
  4be85c:	8f83804c 	lw	v1,-32692(gp)
  4be860:	00000000 	nop
  4be864:	24635990 	addiu	v1,v1,22928
  4be868:	00621821 	addu	v1,v1,v0
  4be86c:	8fc2003c 	lw	v0,60(s8)
  4be870:	00000000 	nop
  4be874:	24420015 	addiu	v0,v0,21
  4be878:	90630000 	lbu	v1,0(v1)
  4be87c:	90420000 	lbu	v0,0(v0)
  4be880:	00000000 	nop
  4be884:	00621026 	xor	v0,v1,v0
  4be888:	304200ff 	andi	v0,v0,0xff
  4be88c:	8f83804c 	lw	v1,-32692(gp)
  4be890:	00000000 	nop
  4be894:	24635990 	addiu	v1,v1,22928
  4be898:	00621821 	addu	v1,v1,v0
  4be89c:	8fc2003c 	lw	v0,60(s8)
  4be8a0:	00000000 	nop
  4be8a4:	2442000d 	addiu	v0,v0,13
  4be8a8:	90630000 	lbu	v1,0(v1)
  4be8ac:	90420000 	lbu	v0,0(v0)
  4be8b0:	00000000 	nop
  4be8b4:	00621026 	xor	v0,v1,v0
  4be8b8:	304200ff 	andi	v0,v0,0xff
  4be8bc:	8f83804c 	lw	v1,-32692(gp)
  4be8c0:	00000000 	nop
  4be8c4:	24635890 	addiu	v1,v1,22672
  4be8c8:	00621821 	addu	v1,v1,v0
  4be8cc:	8fc2003c 	lw	v0,60(s8)
  4be8d0:	00000000 	nop
  4be8d4:	24420005 	addiu	v0,v0,5
  4be8d8:	90630000 	lbu	v1,0(v1)
  4be8dc:	90420000 	lbu	v0,0(v0)
  4be8e0:	00000000 	nop
  4be8e4:	00621026 	xor	v0,v1,v0
  4be8e8:	304200ff 	andi	v0,v0,0xff
  4be8ec:	00021080 	sll	v0,v0,0x2
  4be8f0:	24420400 	addiu	v0,v0,1024
  4be8f4:	8f81804c 	lw	at,-32692(gp)
  4be8f8:	00000000 	nop
  4be8fc:	24215a90 	addiu	at,at,23184
  4be900:	00221021 	addu	v0,at,v0
  4be904:	8c830000 	lw	v1,0(a0)
  4be908:	8c420000 	lw	v0,0(v0)
  4be90c:	00000000 	nop
  4be910:	00622026 	xor	a0,v1,v0
  4be914:	8fc2003c 	lw	v0,60(s8)
  4be918:	00000000 	nop
  4be91c:	2442001e 	addiu	v0,v0,30
  4be920:	90420000 	lbu	v0,0(v0)
  4be924:	00000000 	nop
  4be928:	384200d0 	xori	v0,v0,0xd0
  4be92c:	304200ff 	andi	v0,v0,0xff
  4be930:	8f83804c 	lw	v1,-32692(gp)
  4be934:	00000000 	nop
  4be938:	24635890 	addiu	v1,v1,22672
  4be93c:	00621821 	addu	v1,v1,v0
  4be940:	8fc2003c 	lw	v0,60(s8)
  4be944:	00000000 	nop
  4be948:	24420016 	addiu	v0,v0,22
  4be94c:	90630000 	lbu	v1,0(v1)
  4be950:	90420000 	lbu	v0,0(v0)
  4be954:	00000000 	nop
  4be958:	00621026 	xor	v0,v1,v0
  4be95c:	304200ff 	andi	v0,v0,0xff
  4be960:	8f83804c 	lw	v1,-32692(gp)
  4be964:	00000000 	nop
  4be968:	24635890 	addiu	v1,v1,22672
  4be96c:	00621821 	addu	v1,v1,v0
  4be970:	8fc2003c 	lw	v0,60(s8)
  4be974:	00000000 	nop
  4be978:	2442000e 	addiu	v0,v0,14
  4be97c:	90630000 	lbu	v1,0(v1)
  4be980:	90420000 	lbu	v0,0(v0)
  4be984:	00000000 	nop
  4be988:	00621026 	xor	v0,v1,v0
  4be98c:	304200ff 	andi	v0,v0,0xff
  4be990:	8f83804c 	lw	v1,-32692(gp)
  4be994:	00000000 	nop
  4be998:	24635990 	addiu	v1,v1,22928
  4be99c:	00621821 	addu	v1,v1,v0
  4be9a0:	8fc2003c 	lw	v0,60(s8)
  4be9a4:	00000000 	nop
  4be9a8:	24420006 	addiu	v0,v0,6
  4be9ac:	90630000 	lbu	v1,0(v1)
  4be9b0:	90420000 	lbu	v0,0(v0)
  4be9b4:	00000000 	nop
  4be9b8:	00621026 	xor	v0,v1,v0
  4be9bc:	304200ff 	andi	v0,v0,0xff
  4be9c0:	00021080 	sll	v0,v0,0x2
  4be9c4:	24420800 	addiu	v0,v0,2048
  4be9c8:	8f81804c 	lw	at,-32692(gp)
  4be9cc:	00000000 	nop
  4be9d0:	24215a90 	addiu	at,at,23184
  4be9d4:	00221021 	addu	v0,at,v0
  4be9d8:	8c420000 	lw	v0,0(v0)
  4be9dc:	00000000 	nop
  4be9e0:	00822026 	xor	a0,a0,v0
  4be9e4:	8fc2003c 	lw	v0,60(s8)
  4be9e8:	00000000 	nop
  4be9ec:	2442001f 	addiu	v0,v0,31
  4be9f0:	90420000 	lbu	v0,0(v0)
  4be9f4:	00000000 	nop
  4be9f8:	384200ba 	xori	v0,v0,0xba
  4be9fc:	304200ff 	andi	v0,v0,0xff
  4bea00:	8f83804c 	lw	v1,-32692(gp)
  4bea04:	00000000 	nop
  4bea08:	24635890 	addiu	v1,v1,22672
  4bea0c:	00621821 	addu	v1,v1,v0
  4bea10:	8fc2003c 	lw	v0,60(s8)
  4bea14:	00000000 	nop
  4bea18:	24420017 	addiu	v0,v0,23
  4bea1c:	90630000 	lbu	v1,0(v1)
  4bea20:	90420000 	lbu	v0,0(v0)
  4bea24:	00000000 	nop
  4bea28:	00621026 	xor	v0,v1,v0
  4bea2c:	304200ff 	andi	v0,v0,0xff
  4bea30:	8f83804c 	lw	v1,-32692(gp)
  4bea34:	00000000 	nop
  4bea38:	24635990 	addiu	v1,v1,22928
  4bea3c:	00621821 	addu	v1,v1,v0
  4bea40:	8fc2003c 	lw	v0,60(s8)
  4bea44:	00000000 	nop
  4bea48:	2442000f 	addiu	v0,v0,15
  4bea4c:	90630000 	lbu	v1,0(v1)
  4bea50:	90420000 	lbu	v0,0(v0)
  4bea54:	00000000 	nop
  4bea58:	00621026 	xor	v0,v1,v0
  4bea5c:	304200ff 	andi	v0,v0,0xff
  4bea60:	8f83804c 	lw	v1,-32692(gp)
  4bea64:	00000000 	nop
  4bea68:	24635990 	addiu	v1,v1,22928
  4bea6c:	00621821 	addu	v1,v1,v0
  4bea70:	8fc2003c 	lw	v0,60(s8)
  4bea74:	00000000 	nop
  4bea78:	24420007 	addiu	v0,v0,7
  4bea7c:	90630000 	lbu	v1,0(v1)
  4bea80:	90420000 	lbu	v0,0(v0)
  4bea84:	00000000 	nop
  4bea88:	00621026 	xor	v0,v1,v0
  4bea8c:	304200ff 	andi	v0,v0,0xff
  4bea90:	00021080 	sll	v0,v0,0x2
  4bea94:	24420c00 	addiu	v0,v0,3072
  4bea98:	8f81804c 	lw	at,-32692(gp)
  4bea9c:	00000000 	nop
  4beaa0:	24215a90 	addiu	at,at,23184
  4beaa4:	00221021 	addu	v0,at,v0
  4beaa8:	8c420000 	lw	v0,0(v0)
  4beaac:	00000000 	nop
  4beab0:	00821026 	xor	v0,a0,v0
  4beab4:	afc20018 	sw	v0,24(s8)
  4beab8:	8fc20018 	lw	v0,24(s8)
  4beabc:	00000000 	nop
  4beac0:	00021a00 	sll	v1,v0,0x8
  4beac4:	00021602 	srl	v0,v0,0x18
  4beac8:	00621025 	or	v0,v1,v0
  4beacc:	afc20018 	sw	v0,24(s8)
  4bead0:	8fc30014 	lw	v1,20(s8)
  4bead4:	8fc20018 	lw	v0,24(s8)
  4bead8:	00000000 	nop
  4beadc:	00621021 	addu	v0,v1,v0
  4beae0:	afc20014 	sw	v0,20(s8)
  4beae4:	8fc30018 	lw	v1,24(s8)
  4beae8:	8fc20014 	lw	v0,20(s8)
  4beaec:	00000000 	nop
  4beaf0:	00621021 	addu	v0,v1,v0
  4beaf4:	afc20018 	sw	v0,24(s8)
  4beaf8:	8fc30014 	lw	v1,20(s8)
  4beafc:	8fc20038 	lw	v0,56(s8)
  4beb00:	00000000 	nop
  4beb04:	ac431080 	sw	v1,4224(v0)
  4beb08:	8fc20018 	lw	v0,24(s8)
  4beb0c:	00000000 	nop
  4beb10:	00021a40 	sll	v1,v0,0x9
  4beb14:	000215c2 	srl	v0,v0,0x17
  4beb18:	00621825 	or	v1,v1,v0
  4beb1c:	8fc20038 	lw	v0,56(s8)
  4beb20:	00000000 	nop
  4beb24:	ac431084 	sw	v1,4228(v0)
		CALC_K256 (k, 26, 0x8B, 0xAE, 0x30, 0x5B);
  4beb28:	8fc2003c 	lw	v0,60(s8)
  4beb2c:	00000000 	nop
  4beb30:	24420018 	addiu	v0,v0,24
  4beb34:	90420000 	lbu	v0,0(v0)
  4beb38:	00000000 	nop
  4beb3c:	384200ae 	xori	v0,v0,0xae
  4beb40:	304200ff 	andi	v0,v0,0xff
  4beb44:	8f83804c 	lw	v1,-32692(gp)
  4beb48:	00000000 	nop
  4beb4c:	24635990 	addiu	v1,v1,22928
  4beb50:	00621821 	addu	v1,v1,v0
  4beb54:	8fc2003c 	lw	v0,60(s8)
  4beb58:	00000000 	nop
  4beb5c:	24420010 	addiu	v0,v0,16
  4beb60:	90630000 	lbu	v1,0(v1)
  4beb64:	90420000 	lbu	v0,0(v0)
  4beb68:	00000000 	nop
  4beb6c:	00621026 	xor	v0,v1,v0
  4beb70:	304200ff 	andi	v0,v0,0xff
  4beb74:	8f83804c 	lw	v1,-32692(gp)
  4beb78:	00000000 	nop
  4beb7c:	24635890 	addiu	v1,v1,22672
  4beb80:	00621821 	addu	v1,v1,v0
  4beb84:	8fc2003c 	lw	v0,60(s8)
  4beb88:	00000000 	nop
  4beb8c:	24420008 	addiu	v0,v0,8
  4beb90:	90630000 	lbu	v1,0(v1)
  4beb94:	90420000 	lbu	v0,0(v0)
  4beb98:	00000000 	nop
  4beb9c:	00621026 	xor	v0,v1,v0
  4beba0:	304200ff 	andi	v0,v0,0xff
  4beba4:	8f81804c 	lw	at,-32692(gp)
  4beba8:	00000000 	nop
  4bebac:	24215890 	addiu	at,at,22672
  4bebb0:	00221021 	addu	v0,at,v0
  4bebb4:	90430000 	lbu	v1,0(v0)
  4bebb8:	8fc2003c 	lw	v0,60(s8)
  4bebbc:	00000000 	nop
  4bebc0:	90420000 	lbu	v0,0(v0)
  4bebc4:	00000000 	nop
  4bebc8:	00621026 	xor	v0,v1,v0
  4bebcc:	304200ff 	andi	v0,v0,0xff
  4bebd0:	00021080 	sll	v0,v0,0x2
  4bebd4:	8f84804c 	lw	a0,-32692(gp)
  4bebd8:	00000000 	nop
  4bebdc:	24845a90 	addiu	a0,a0,23184
  4bebe0:	00822021 	addu	a0,a0,v0
  4bebe4:	8fc2003c 	lw	v0,60(s8)
  4bebe8:	00000000 	nop
  4bebec:	24420019 	addiu	v0,v0,25
  4bebf0:	90420000 	lbu	v0,0(v0)
  4bebf4:	00000000 	nop
  4bebf8:	3842008b 	xori	v0,v0,0x8b
  4bebfc:	304200ff 	andi	v0,v0,0xff
  4bec00:	8f83804c 	lw	v1,-32692(gp)
  4bec04:	00000000 	nop
  4bec08:	24635990 	addiu	v1,v1,22928
  4bec0c:	00621821 	addu	v1,v1,v0
  4bec10:	8fc2003c 	lw	v0,60(s8)
  4bec14:	00000000 	nop
  4bec18:	24420011 	addiu	v0,v0,17
  4bec1c:	90630000 	lbu	v1,0(v1)
  4bec20:	90420000 	lbu	v0,0(v0)
  4bec24:	00000000 	nop
  4bec28:	00621026 	xor	v0,v1,v0
  4bec2c:	304200ff 	andi	v0,v0,0xff
  4bec30:	8f83804c 	lw	v1,-32692(gp)
  4bec34:	00000000 	nop
  4bec38:	24635990 	addiu	v1,v1,22928
  4bec3c:	00621821 	addu	v1,v1,v0
  4bec40:	8fc2003c 	lw	v0,60(s8)
  4bec44:	00000000 	nop
  4bec48:	24420009 	addiu	v0,v0,9
  4bec4c:	90630000 	lbu	v1,0(v1)
  4bec50:	90420000 	lbu	v0,0(v0)
  4bec54:	00000000 	nop
  4bec58:	00621026 	xor	v0,v1,v0
  4bec5c:	304200ff 	andi	v0,v0,0xff
  4bec60:	8f83804c 	lw	v1,-32692(gp)
  4bec64:	00000000 	nop
  4bec68:	24635890 	addiu	v1,v1,22672
  4bec6c:	00621821 	addu	v1,v1,v0
  4bec70:	8fc2003c 	lw	v0,60(s8)
  4bec74:	00000000 	nop
  4bec78:	24420001 	addiu	v0,v0,1
  4bec7c:	90630000 	lbu	v1,0(v1)
  4bec80:	90420000 	lbu	v0,0(v0)
  4bec84:	00000000 	nop
  4bec88:	00621026 	xor	v0,v1,v0
  4bec8c:	304200ff 	andi	v0,v0,0xff
  4bec90:	00021080 	sll	v0,v0,0x2
  4bec94:	24420400 	addiu	v0,v0,1024
  4bec98:	8f81804c 	lw	at,-32692(gp)
  4bec9c:	00000000 	nop
  4beca0:	24215a90 	addiu	at,at,23184
  4beca4:	00221021 	addu	v0,at,v0
  4beca8:	8c830000 	lw	v1,0(a0)
  4becac:	8c420000 	lw	v0,0(v0)
  4becb0:	00000000 	nop
  4becb4:	00622026 	xor	a0,v1,v0
  4becb8:	8fc2003c 	lw	v0,60(s8)
  4becbc:	00000000 	nop
  4becc0:	2442001a 	addiu	v0,v0,26
  4becc4:	90420000 	lbu	v0,0(v0)
  4becc8:	00000000 	nop
  4beccc:	3842008b 	xori	v0,v0,0x8b
  4becd0:	304200ff 	andi	v0,v0,0xff
  4becd4:	8f83804c 	lw	v1,-32692(gp)
  4becd8:	00000000 	nop
  4becdc:	24635890 	addiu	v1,v1,22672
  4bece0:	00621821 	addu	v1,v1,v0
  4bece4:	8fc2003c 	lw	v0,60(s8)
  4bece8:	00000000 	nop
  4becec:	24420012 	addiu	v0,v0,18
  4becf0:	90630000 	lbu	v1,0(v1)
  4becf4:	90420000 	lbu	v0,0(v0)
  4becf8:	00000000 	nop
  4becfc:	00621026 	xor	v0,v1,v0
  4bed00:	304200ff 	andi	v0,v0,0xff
  4bed04:	8f83804c 	lw	v1,-32692(gp)
  4bed08:	00000000 	nop
  4bed0c:	24635890 	addiu	v1,v1,22672
  4bed10:	00621821 	addu	v1,v1,v0
  4bed14:	8fc2003c 	lw	v0,60(s8)
  4bed18:	00000000 	nop
  4bed1c:	2442000a 	addiu	v0,v0,10
  4bed20:	90630000 	lbu	v1,0(v1)
  4bed24:	90420000 	lbu	v0,0(v0)
  4bed28:	00000000 	nop
  4bed2c:	00621026 	xor	v0,v1,v0
  4bed30:	304200ff 	andi	v0,v0,0xff
  4bed34:	8f83804c 	lw	v1,-32692(gp)
  4bed38:	00000000 	nop
  4bed3c:	24635990 	addiu	v1,v1,22928
  4bed40:	00621821 	addu	v1,v1,v0
  4bed44:	8fc2003c 	lw	v0,60(s8)
  4bed48:	00000000 	nop
  4bed4c:	24420002 	addiu	v0,v0,2
  4bed50:	90630000 	lbu	v1,0(v1)
  4bed54:	90420000 	lbu	v0,0(v0)
  4bed58:	00000000 	nop
  4bed5c:	00621026 	xor	v0,v1,v0
  4bed60:	304200ff 	andi	v0,v0,0xff
  4bed64:	00021080 	sll	v0,v0,0x2
  4bed68:	24420800 	addiu	v0,v0,2048
  4bed6c:	8f81804c 	lw	at,-32692(gp)
  4bed70:	00000000 	nop
  4bed74:	24215a90 	addiu	at,at,23184
  4bed78:	00221021 	addu	v0,at,v0
  4bed7c:	8c420000 	lw	v0,0(v0)
  4bed80:	00000000 	nop
  4bed84:	00822026 	xor	a0,a0,v0
  4bed88:	8fc2003c 	lw	v0,60(s8)
  4bed8c:	00000000 	nop
  4bed90:	2442001b 	addiu	v0,v0,27
  4bed94:	90420000 	lbu	v0,0(v0)
  4bed98:	00000000 	nop
  4bed9c:	384200ae 	xori	v0,v0,0xae
  4beda0:	304200ff 	andi	v0,v0,0xff
  4beda4:	8f83804c 	lw	v1,-32692(gp)
  4beda8:	00000000 	nop
  4bedac:	24635890 	addiu	v1,v1,22672
  4bedb0:	00621821 	addu	v1,v1,v0
  4bedb4:	8fc2003c 	lw	v0,60(s8)
  4bedb8:	00000000 	nop
  4bedbc:	24420013 	addiu	v0,v0,19
  4bedc0:	90630000 	lbu	v1,0(v1)
  4bedc4:	90420000 	lbu	v0,0(v0)
  4bedc8:	00000000 	nop
  4bedcc:	00621026 	xor	v0,v1,v0
  4bedd0:	304200ff 	andi	v0,v0,0xff
  4bedd4:	8f83804c 	lw	v1,-32692(gp)
  4bedd8:	00000000 	nop
  4beddc:	24635990 	addiu	v1,v1,22928
  4bede0:	00621821 	addu	v1,v1,v0
  4bede4:	8fc2003c 	lw	v0,60(s8)
  4bede8:	00000000 	nop
  4bedec:	2442000b 	addiu	v0,v0,11
  4bedf0:	90630000 	lbu	v1,0(v1)
  4bedf4:	90420000 	lbu	v0,0(v0)
  4bedf8:	00000000 	nop
  4bedfc:	00621026 	xor	v0,v1,v0
  4bee00:	304200ff 	andi	v0,v0,0xff
  4bee04:	8f83804c 	lw	v1,-32692(gp)
  4bee08:	00000000 	nop
  4bee0c:	24635990 	addiu	v1,v1,22928
  4bee10:	00621821 	addu	v1,v1,v0
  4bee14:	8fc2003c 	lw	v0,60(s8)
  4bee18:	00000000 	nop
  4bee1c:	24420003 	addiu	v0,v0,3
  4bee20:	90630000 	lbu	v1,0(v1)
  4bee24:	90420000 	lbu	v0,0(v0)
  4bee28:	00000000 	nop
  4bee2c:	00621026 	xor	v0,v1,v0
  4bee30:	304200ff 	andi	v0,v0,0xff
  4bee34:	00021080 	sll	v0,v0,0x2
  4bee38:	24420c00 	addiu	v0,v0,3072
  4bee3c:	8f81804c 	lw	at,-32692(gp)
  4bee40:	00000000 	nop
  4bee44:	24215a90 	addiu	at,at,23184
  4bee48:	00221021 	addu	v0,at,v0
  4bee4c:	8c420000 	lw	v0,0(v0)
  4bee50:	00000000 	nop
  4bee54:	00821026 	xor	v0,a0,v0
  4bee58:	afc20014 	sw	v0,20(s8)
  4bee5c:	8fc2003c 	lw	v0,60(s8)
  4bee60:	00000000 	nop
  4bee64:	2442001c 	addiu	v0,v0,28
  4bee68:	90420000 	lbu	v0,0(v0)
  4bee6c:	00000000 	nop
  4bee70:	3842005b 	xori	v0,v0,0x5b
  4bee74:	304200ff 	andi	v0,v0,0xff
  4bee78:	8f83804c 	lw	v1,-32692(gp)
  4bee7c:	00000000 	nop
  4bee80:	24635990 	addiu	v1,v1,22928
  4bee84:	00621821 	addu	v1,v1,v0
  4bee88:	8fc2003c 	lw	v0,60(s8)
  4bee8c:	00000000 	nop
  4bee90:	24420014 	addiu	v0,v0,20
  4bee94:	90630000 	lbu	v1,0(v1)
  4bee98:	90420000 	lbu	v0,0(v0)
  4bee9c:	00000000 	nop
  4beea0:	00621026 	xor	v0,v1,v0
  4beea4:	304200ff 	andi	v0,v0,0xff
  4beea8:	8f83804c 	lw	v1,-32692(gp)
  4beeac:	00000000 	nop
  4beeb0:	24635890 	addiu	v1,v1,22672
  4beeb4:	00621821 	addu	v1,v1,v0
  4beeb8:	8fc2003c 	lw	v0,60(s8)
  4beebc:	00000000 	nop
  4beec0:	2442000c 	addiu	v0,v0,12
  4beec4:	90630000 	lbu	v1,0(v1)
  4beec8:	90420000 	lbu	v0,0(v0)
  4beecc:	00000000 	nop
  4beed0:	00621026 	xor	v0,v1,v0
  4beed4:	304200ff 	andi	v0,v0,0xff
  4beed8:	8f83804c 	lw	v1,-32692(gp)
  4beedc:	00000000 	nop
  4beee0:	24635890 	addiu	v1,v1,22672
  4beee4:	00621821 	addu	v1,v1,v0
  4beee8:	8fc2003c 	lw	v0,60(s8)
  4beeec:	00000000 	nop
  4beef0:	24420004 	addiu	v0,v0,4
  4beef4:	90630000 	lbu	v1,0(v1)
  4beef8:	90420000 	lbu	v0,0(v0)
  4beefc:	00000000 	nop
  4bef00:	00621026 	xor	v0,v1,v0
  4bef04:	304200ff 	andi	v0,v0,0xff
  4bef08:	00021080 	sll	v0,v0,0x2
  4bef0c:	8f84804c 	lw	a0,-32692(gp)
  4bef10:	00000000 	nop
  4bef14:	24845a90 	addiu	a0,a0,23184
  4bef18:	00822021 	addu	a0,a0,v0
  4bef1c:	8fc2003c 	lw	v0,60(s8)
  4bef20:	00000000 	nop
  4bef24:	2442001d 	addiu	v0,v0,29
  4bef28:	90420000 	lbu	v0,0(v0)
  4bef2c:	00000000 	nop
  4bef30:	38420030 	xori	v0,v0,0x30
  4bef34:	304200ff 	andi	v0,v0,0xff
  4bef38:	8f83804c 	lw	v1,-32692(gp)
  4bef3c:	00000000 	nop
  4bef40:	24635990 	addiu	v1,v1,22928
  4bef44:	00621821 	addu	v1,v1,v0
  4bef48:	8fc2003c 	lw	v0,60(s8)
  4bef4c:	00000000 	nop
  4bef50:	24420015 	addiu	v0,v0,21
  4bef54:	90630000 	lbu	v1,0(v1)
  4bef58:	90420000 	lbu	v0,0(v0)
  4bef5c:	00000000 	nop
  4bef60:	00621026 	xor	v0,v1,v0
  4bef64:	304200ff 	andi	v0,v0,0xff
  4bef68:	8f83804c 	lw	v1,-32692(gp)
  4bef6c:	00000000 	nop
  4bef70:	24635990 	addiu	v1,v1,22928
  4bef74:	00621821 	addu	v1,v1,v0
  4bef78:	8fc2003c 	lw	v0,60(s8)
  4bef7c:	00000000 	nop
  4bef80:	2442000d 	addiu	v0,v0,13
  4bef84:	90630000 	lbu	v1,0(v1)
  4bef88:	90420000 	lbu	v0,0(v0)
  4bef8c:	00000000 	nop
  4bef90:	00621026 	xor	v0,v1,v0
  4bef94:	304200ff 	andi	v0,v0,0xff
  4bef98:	8f83804c 	lw	v1,-32692(gp)
  4bef9c:	00000000 	nop
  4befa0:	24635890 	addiu	v1,v1,22672
  4befa4:	00621821 	addu	v1,v1,v0
  4befa8:	8fc2003c 	lw	v0,60(s8)
  4befac:	00000000 	nop
  4befb0:	24420005 	addiu	v0,v0,5
  4befb4:	90630000 	lbu	v1,0(v1)
  4befb8:	90420000 	lbu	v0,0(v0)
  4befbc:	00000000 	nop
  4befc0:	00621026 	xor	v0,v1,v0
  4befc4:	304200ff 	andi	v0,v0,0xff
  4befc8:	00021080 	sll	v0,v0,0x2
  4befcc:	24420400 	addiu	v0,v0,1024
  4befd0:	8f81804c 	lw	at,-32692(gp)
  4befd4:	00000000 	nop
  4befd8:	24215a90 	addiu	at,at,23184
  4befdc:	00221021 	addu	v0,at,v0
  4befe0:	8c830000 	lw	v1,0(a0)
  4befe4:	8c420000 	lw	v0,0(v0)
  4befe8:	00000000 	nop
  4befec:	00622026 	xor	a0,v1,v0
  4beff0:	8fc2003c 	lw	v0,60(s8)
  4beff4:	00000000 	nop
  4beff8:	2442001e 	addiu	v0,v0,30
  4beffc:	90420000 	lbu	v0,0(v0)
  4bf000:	00000000 	nop
  4bf004:	38420030 	xori	v0,v0,0x30
  4bf008:	304200ff 	andi	v0,v0,0xff
  4bf00c:	8f83804c 	lw	v1,-32692(gp)
  4bf010:	00000000 	nop
  4bf014:	24635890 	addiu	v1,v1,22672
  4bf018:	00621821 	addu	v1,v1,v0
  4bf01c:	8fc2003c 	lw	v0,60(s8)
  4bf020:	00000000 	nop
  4bf024:	24420016 	addiu	v0,v0,22
  4bf028:	90630000 	lbu	v1,0(v1)
  4bf02c:	90420000 	lbu	v0,0(v0)
  4bf030:	00000000 	nop
  4bf034:	00621026 	xor	v0,v1,v0
  4bf038:	304200ff 	andi	v0,v0,0xff
  4bf03c:	8f83804c 	lw	v1,-32692(gp)
  4bf040:	00000000 	nop
  4bf044:	24635890 	addiu	v1,v1,22672
  4bf048:	00621821 	addu	v1,v1,v0
  4bf04c:	8fc2003c 	lw	v0,60(s8)
  4bf050:	00000000 	nop
  4bf054:	2442000e 	addiu	v0,v0,14
  4bf058:	90630000 	lbu	v1,0(v1)
  4bf05c:	90420000 	lbu	v0,0(v0)
  4bf060:	00000000 	nop
  4bf064:	00621026 	xor	v0,v1,v0
  4bf068:	304200ff 	andi	v0,v0,0xff
  4bf06c:	8f83804c 	lw	v1,-32692(gp)
  4bf070:	00000000 	nop
  4bf074:	24635990 	addiu	v1,v1,22928
  4bf078:	00621821 	addu	v1,v1,v0
  4bf07c:	8fc2003c 	lw	v0,60(s8)
  4bf080:	00000000 	nop
  4bf084:	24420006 	addiu	v0,v0,6
  4bf088:	90630000 	lbu	v1,0(v1)
  4bf08c:	90420000 	lbu	v0,0(v0)
  4bf090:	00000000 	nop
  4bf094:	00621026 	xor	v0,v1,v0
  4bf098:	304200ff 	andi	v0,v0,0xff
  4bf09c:	00021080 	sll	v0,v0,0x2
  4bf0a0:	24420800 	addiu	v0,v0,2048
  4bf0a4:	8f81804c 	lw	at,-32692(gp)
  4bf0a8:	00000000 	nop
  4bf0ac:	24215a90 	addiu	at,at,23184
  4bf0b0:	00221021 	addu	v0,at,v0
  4bf0b4:	8c420000 	lw	v0,0(v0)
  4bf0b8:	00000000 	nop
  4bf0bc:	00822026 	xor	a0,a0,v0
  4bf0c0:	8fc2003c 	lw	v0,60(s8)
  4bf0c4:	00000000 	nop
  4bf0c8:	2442001f 	addiu	v0,v0,31
  4bf0cc:	90420000 	lbu	v0,0(v0)
  4bf0d0:	00000000 	nop
  4bf0d4:	3842005b 	xori	v0,v0,0x5b
  4bf0d8:	304200ff 	andi	v0,v0,0xff
  4bf0dc:	8f83804c 	lw	v1,-32692(gp)
  4bf0e0:	00000000 	nop
  4bf0e4:	24635890 	addiu	v1,v1,22672
  4bf0e8:	00621821 	addu	v1,v1,v0
  4bf0ec:	8fc2003c 	lw	v0,60(s8)
  4bf0f0:	00000000 	nop
  4bf0f4:	24420017 	addiu	v0,v0,23
  4bf0f8:	90630000 	lbu	v1,0(v1)
  4bf0fc:	90420000 	lbu	v0,0(v0)
  4bf100:	00000000 	nop
  4bf104:	00621026 	xor	v0,v1,v0
  4bf108:	304200ff 	andi	v0,v0,0xff
  4bf10c:	8f83804c 	lw	v1,-32692(gp)
  4bf110:	00000000 	nop
  4bf114:	24635990 	addiu	v1,v1,22928
  4bf118:	00621821 	addu	v1,v1,v0
  4bf11c:	8fc2003c 	lw	v0,60(s8)
  4bf120:	00000000 	nop
  4bf124:	2442000f 	addiu	v0,v0,15
  4bf128:	90630000 	lbu	v1,0(v1)
  4bf12c:	90420000 	lbu	v0,0(v0)
  4bf130:	00000000 	nop
  4bf134:	00621026 	xor	v0,v1,v0
  4bf138:	304200ff 	andi	v0,v0,0xff
  4bf13c:	8f83804c 	lw	v1,-32692(gp)
  4bf140:	00000000 	nop
  4bf144:	24635990 	addiu	v1,v1,22928
  4bf148:	00621821 	addu	v1,v1,v0
  4bf14c:	8fc2003c 	lw	v0,60(s8)
  4bf150:	00000000 	nop
  4bf154:	24420007 	addiu	v0,v0,7
  4bf158:	90630000 	lbu	v1,0(v1)
  4bf15c:	90420000 	lbu	v0,0(v0)
  4bf160:	00000000 	nop
  4bf164:	00621026 	xor	v0,v1,v0
  4bf168:	304200ff 	andi	v0,v0,0xff
  4bf16c:	00021080 	sll	v0,v0,0x2
  4bf170:	24420c00 	addiu	v0,v0,3072
  4bf174:	8f81804c 	lw	at,-32692(gp)
  4bf178:	00000000 	nop
  4bf17c:	24215a90 	addiu	at,at,23184
  4bf180:	00221021 	addu	v0,at,v0
  4bf184:	8c420000 	lw	v0,0(v0)
  4bf188:	00000000 	nop
  4bf18c:	00821026 	xor	v0,a0,v0
  4bf190:	afc20018 	sw	v0,24(s8)
  4bf194:	8fc20018 	lw	v0,24(s8)
  4bf198:	00000000 	nop
  4bf19c:	00021a00 	sll	v1,v0,0x8
  4bf1a0:	00021602 	srl	v0,v0,0x18
  4bf1a4:	00621025 	or	v0,v1,v0
  4bf1a8:	afc20018 	sw	v0,24(s8)
  4bf1ac:	8fc30014 	lw	v1,20(s8)
  4bf1b0:	8fc20018 	lw	v0,24(s8)
  4bf1b4:	00000000 	nop
  4bf1b8:	00621021 	addu	v0,v1,v0
  4bf1bc:	afc20014 	sw	v0,20(s8)
  4bf1c0:	8fc30018 	lw	v1,24(s8)
  4bf1c4:	8fc20014 	lw	v0,20(s8)
  4bf1c8:	00000000 	nop
  4bf1cc:	00621021 	addu	v0,v1,v0
  4bf1d0:	afc20018 	sw	v0,24(s8)
  4bf1d4:	8fc30014 	lw	v1,20(s8)
  4bf1d8:	8fc20038 	lw	v0,56(s8)
  4bf1dc:	00000000 	nop
  4bf1e0:	ac431088 	sw	v1,4232(v0)
  4bf1e4:	8fc20018 	lw	v0,24(s8)
  4bf1e8:	00000000 	nop
  4bf1ec:	00021a40 	sll	v1,v0,0x9
  4bf1f0:	000215c2 	srl	v0,v0,0x17
  4bf1f4:	00621825 	or	v1,v1,v0
  4bf1f8:	8fc20038 	lw	v0,56(s8)
  4bf1fc:	00000000 	nop
  4bf200:	ac43108c 	sw	v1,4236(v0)
		CALC_K256 (k, 28, 0x84, 0x8A, 0x54, 0x00);
  4bf204:	8fc2003c 	lw	v0,60(s8)
  4bf208:	00000000 	nop
  4bf20c:	24420018 	addiu	v0,v0,24
  4bf210:	90420000 	lbu	v0,0(v0)
  4bf214:	00000000 	nop
  4bf218:	3842008a 	xori	v0,v0,0x8a
  4bf21c:	304200ff 	andi	v0,v0,0xff
  4bf220:	8f83804c 	lw	v1,-32692(gp)
  4bf224:	00000000 	nop
  4bf228:	24635990 	addiu	v1,v1,22928
  4bf22c:	00621821 	addu	v1,v1,v0
  4bf230:	8fc2003c 	lw	v0,60(s8)
  4bf234:	00000000 	nop
  4bf238:	24420010 	addiu	v0,v0,16
  4bf23c:	90630000 	lbu	v1,0(v1)
  4bf240:	90420000 	lbu	v0,0(v0)
  4bf244:	00000000 	nop
  4bf248:	00621026 	xor	v0,v1,v0
  4bf24c:	304200ff 	andi	v0,v0,0xff
  4bf250:	8f83804c 	lw	v1,-32692(gp)
  4bf254:	00000000 	nop
  4bf258:	24635890 	addiu	v1,v1,22672
  4bf25c:	00621821 	addu	v1,v1,v0
  4bf260:	8fc2003c 	lw	v0,60(s8)
  4bf264:	00000000 	nop
  4bf268:	24420008 	addiu	v0,v0,8
  4bf26c:	90630000 	lbu	v1,0(v1)
  4bf270:	90420000 	lbu	v0,0(v0)
  4bf274:	00000000 	nop
  4bf278:	00621026 	xor	v0,v1,v0
  4bf27c:	304200ff 	andi	v0,v0,0xff
  4bf280:	8f81804c 	lw	at,-32692(gp)
  4bf284:	00000000 	nop
  4bf288:	24215890 	addiu	at,at,22672
  4bf28c:	00221021 	addu	v0,at,v0
  4bf290:	90430000 	lbu	v1,0(v0)
  4bf294:	8fc2003c 	lw	v0,60(s8)
  4bf298:	00000000 	nop
  4bf29c:	90420000 	lbu	v0,0(v0)
  4bf2a0:	00000000 	nop
  4bf2a4:	00621026 	xor	v0,v1,v0
  4bf2a8:	304200ff 	andi	v0,v0,0xff
  4bf2ac:	00021080 	sll	v0,v0,0x2
  4bf2b0:	8f84804c 	lw	a0,-32692(gp)
  4bf2b4:	00000000 	nop
  4bf2b8:	24845a90 	addiu	a0,a0,23184
  4bf2bc:	00822021 	addu	a0,a0,v0
  4bf2c0:	8fc2003c 	lw	v0,60(s8)
  4bf2c4:	00000000 	nop
  4bf2c8:	24420019 	addiu	v0,v0,25
  4bf2cc:	90420000 	lbu	v0,0(v0)
  4bf2d0:	00000000 	nop
  4bf2d4:	38420084 	xori	v0,v0,0x84
  4bf2d8:	304200ff 	andi	v0,v0,0xff
  4bf2dc:	8f83804c 	lw	v1,-32692(gp)
  4bf2e0:	00000000 	nop
  4bf2e4:	24635990 	addiu	v1,v1,22928
  4bf2e8:	00621821 	addu	v1,v1,v0
  4bf2ec:	8fc2003c 	lw	v0,60(s8)
  4bf2f0:	00000000 	nop
  4bf2f4:	24420011 	addiu	v0,v0,17
  4bf2f8:	90630000 	lbu	v1,0(v1)
  4bf2fc:	90420000 	lbu	v0,0(v0)
  4bf300:	00000000 	nop
  4bf304:	00621026 	xor	v0,v1,v0
  4bf308:	304200ff 	andi	v0,v0,0xff
  4bf30c:	8f83804c 	lw	v1,-32692(gp)
  4bf310:	00000000 	nop
  4bf314:	24635990 	addiu	v1,v1,22928
  4bf318:	00621821 	addu	v1,v1,v0
  4bf31c:	8fc2003c 	lw	v0,60(s8)
  4bf320:	00000000 	nop
  4bf324:	24420009 	addiu	v0,v0,9
  4bf328:	90630000 	lbu	v1,0(v1)
  4bf32c:	90420000 	lbu	v0,0(v0)
  4bf330:	00000000 	nop
  4bf334:	00621026 	xor	v0,v1,v0
  4bf338:	304200ff 	andi	v0,v0,0xff
  4bf33c:	8f83804c 	lw	v1,-32692(gp)
  4bf340:	00000000 	nop
  4bf344:	24635890 	addiu	v1,v1,22672
  4bf348:	00621821 	addu	v1,v1,v0
  4bf34c:	8fc2003c 	lw	v0,60(s8)
  4bf350:	00000000 	nop
  4bf354:	24420001 	addiu	v0,v0,1
  4bf358:	90630000 	lbu	v1,0(v1)
  4bf35c:	90420000 	lbu	v0,0(v0)
  4bf360:	00000000 	nop
  4bf364:	00621026 	xor	v0,v1,v0
  4bf368:	304200ff 	andi	v0,v0,0xff
  4bf36c:	00021080 	sll	v0,v0,0x2
  4bf370:	24420400 	addiu	v0,v0,1024
  4bf374:	8f81804c 	lw	at,-32692(gp)
  4bf378:	00000000 	nop
  4bf37c:	24215a90 	addiu	at,at,23184
  4bf380:	00221021 	addu	v0,at,v0
  4bf384:	8c830000 	lw	v1,0(a0)
  4bf388:	8c420000 	lw	v0,0(v0)
  4bf38c:	00000000 	nop
  4bf390:	00622026 	xor	a0,v1,v0
  4bf394:	8fc2003c 	lw	v0,60(s8)
  4bf398:	00000000 	nop
  4bf39c:	2442001a 	addiu	v0,v0,26
  4bf3a0:	90420000 	lbu	v0,0(v0)
  4bf3a4:	00000000 	nop
  4bf3a8:	38420084 	xori	v0,v0,0x84
  4bf3ac:	304200ff 	andi	v0,v0,0xff
  4bf3b0:	8f83804c 	lw	v1,-32692(gp)
  4bf3b4:	00000000 	nop
  4bf3b8:	24635890 	addiu	v1,v1,22672
  4bf3bc:	00621821 	addu	v1,v1,v0
  4bf3c0:	8fc2003c 	lw	v0,60(s8)
  4bf3c4:	00000000 	nop
  4bf3c8:	24420012 	addiu	v0,v0,18
  4bf3cc:	90630000 	lbu	v1,0(v1)
  4bf3d0:	90420000 	lbu	v0,0(v0)
  4bf3d4:	00000000 	nop
  4bf3d8:	00621026 	xor	v0,v1,v0
  4bf3dc:	304200ff 	andi	v0,v0,0xff
  4bf3e0:	8f83804c 	lw	v1,-32692(gp)
  4bf3e4:	00000000 	nop
  4bf3e8:	24635890 	addiu	v1,v1,22672
  4bf3ec:	00621821 	addu	v1,v1,v0
  4bf3f0:	8fc2003c 	lw	v0,60(s8)
  4bf3f4:	00000000 	nop
  4bf3f8:	2442000a 	addiu	v0,v0,10
  4bf3fc:	90630000 	lbu	v1,0(v1)
  4bf400:	90420000 	lbu	v0,0(v0)
  4bf404:	00000000 	nop
  4bf408:	00621026 	xor	v0,v1,v0
  4bf40c:	304200ff 	andi	v0,v0,0xff
  4bf410:	8f83804c 	lw	v1,-32692(gp)
  4bf414:	00000000 	nop
  4bf418:	24635990 	addiu	v1,v1,22928
  4bf41c:	00621821 	addu	v1,v1,v0
  4bf420:	8fc2003c 	lw	v0,60(s8)
  4bf424:	00000000 	nop
  4bf428:	24420002 	addiu	v0,v0,2
  4bf42c:	90630000 	lbu	v1,0(v1)
  4bf430:	90420000 	lbu	v0,0(v0)
  4bf434:	00000000 	nop
  4bf438:	00621026 	xor	v0,v1,v0
  4bf43c:	304200ff 	andi	v0,v0,0xff
  4bf440:	00021080 	sll	v0,v0,0x2
  4bf444:	24420800 	addiu	v0,v0,2048
  4bf448:	8f81804c 	lw	at,-32692(gp)
  4bf44c:	00000000 	nop
  4bf450:	24215a90 	addiu	at,at,23184
  4bf454:	00221021 	addu	v0,at,v0
  4bf458:	8c420000 	lw	v0,0(v0)
  4bf45c:	00000000 	nop
  4bf460:	00822026 	xor	a0,a0,v0
  4bf464:	8fc2003c 	lw	v0,60(s8)
  4bf468:	00000000 	nop
  4bf46c:	2442001b 	addiu	v0,v0,27
  4bf470:	90420000 	lbu	v0,0(v0)
  4bf474:	00000000 	nop
  4bf478:	3842008a 	xori	v0,v0,0x8a
  4bf47c:	304200ff 	andi	v0,v0,0xff
  4bf480:	8f83804c 	lw	v1,-32692(gp)
  4bf484:	00000000 	nop
  4bf488:	24635890 	addiu	v1,v1,22672
  4bf48c:	00621821 	addu	v1,v1,v0
  4bf490:	8fc2003c 	lw	v0,60(s8)
  4bf494:	00000000 	nop
  4bf498:	24420013 	addiu	v0,v0,19
  4bf49c:	90630000 	lbu	v1,0(v1)
  4bf4a0:	90420000 	lbu	v0,0(v0)
  4bf4a4:	00000000 	nop
  4bf4a8:	00621026 	xor	v0,v1,v0
  4bf4ac:	304200ff 	andi	v0,v0,0xff
  4bf4b0:	8f83804c 	lw	v1,-32692(gp)
  4bf4b4:	00000000 	nop
  4bf4b8:	24635990 	addiu	v1,v1,22928
  4bf4bc:	00621821 	addu	v1,v1,v0
  4bf4c0:	8fc2003c 	lw	v0,60(s8)
  4bf4c4:	00000000 	nop
  4bf4c8:	2442000b 	addiu	v0,v0,11
  4bf4cc:	90630000 	lbu	v1,0(v1)
  4bf4d0:	90420000 	lbu	v0,0(v0)
  4bf4d4:	00000000 	nop
  4bf4d8:	00621026 	xor	v0,v1,v0
  4bf4dc:	304200ff 	andi	v0,v0,0xff
  4bf4e0:	8f83804c 	lw	v1,-32692(gp)
  4bf4e4:	00000000 	nop
  4bf4e8:	24635990 	addiu	v1,v1,22928
  4bf4ec:	00621821 	addu	v1,v1,v0
  4bf4f0:	8fc2003c 	lw	v0,60(s8)
  4bf4f4:	00000000 	nop
  4bf4f8:	24420003 	addiu	v0,v0,3
  4bf4fc:	90630000 	lbu	v1,0(v1)
  4bf500:	90420000 	lbu	v0,0(v0)
  4bf504:	00000000 	nop
  4bf508:	00621026 	xor	v0,v1,v0
  4bf50c:	304200ff 	andi	v0,v0,0xff
  4bf510:	00021080 	sll	v0,v0,0x2
  4bf514:	24420c00 	addiu	v0,v0,3072
  4bf518:	8f81804c 	lw	at,-32692(gp)
  4bf51c:	00000000 	nop
  4bf520:	24215a90 	addiu	at,at,23184
  4bf524:	00221021 	addu	v0,at,v0
  4bf528:	8c420000 	lw	v0,0(v0)
  4bf52c:	00000000 	nop
  4bf530:	00821026 	xor	v0,a0,v0
  4bf534:	afc20014 	sw	v0,20(s8)
  4bf538:	8fc2003c 	lw	v0,60(s8)
  4bf53c:	00000000 	nop
  4bf540:	2442001c 	addiu	v0,v0,28
  4bf544:	90420000 	lbu	v0,0(v0)
  4bf548:	8f83804c 	lw	v1,-32692(gp)
  4bf54c:	00000000 	nop
  4bf550:	24635990 	addiu	v1,v1,22928
  4bf554:	00621821 	addu	v1,v1,v0
  4bf558:	8fc2003c 	lw	v0,60(s8)
  4bf55c:	00000000 	nop
  4bf560:	24420014 	addiu	v0,v0,20
  4bf564:	90630000 	lbu	v1,0(v1)
  4bf568:	90420000 	lbu	v0,0(v0)
  4bf56c:	00000000 	nop
  4bf570:	00621026 	xor	v0,v1,v0
  4bf574:	304200ff 	andi	v0,v0,0xff
  4bf578:	8f83804c 	lw	v1,-32692(gp)
  4bf57c:	00000000 	nop
  4bf580:	24635890 	addiu	v1,v1,22672
  4bf584:	00621821 	addu	v1,v1,v0
  4bf588:	8fc2003c 	lw	v0,60(s8)
  4bf58c:	00000000 	nop
  4bf590:	2442000c 	addiu	v0,v0,12
  4bf594:	90630000 	lbu	v1,0(v1)
  4bf598:	90420000 	lbu	v0,0(v0)
  4bf59c:	00000000 	nop
  4bf5a0:	00621026 	xor	v0,v1,v0
  4bf5a4:	304200ff 	andi	v0,v0,0xff
  4bf5a8:	8f83804c 	lw	v1,-32692(gp)
  4bf5ac:	00000000 	nop
  4bf5b0:	24635890 	addiu	v1,v1,22672
  4bf5b4:	00621821 	addu	v1,v1,v0
  4bf5b8:	8fc2003c 	lw	v0,60(s8)
  4bf5bc:	00000000 	nop
  4bf5c0:	24420004 	addiu	v0,v0,4
  4bf5c4:	90630000 	lbu	v1,0(v1)
  4bf5c8:	90420000 	lbu	v0,0(v0)
  4bf5cc:	00000000 	nop
  4bf5d0:	00621026 	xor	v0,v1,v0
  4bf5d4:	304200ff 	andi	v0,v0,0xff
  4bf5d8:	00021080 	sll	v0,v0,0x2
  4bf5dc:	8f84804c 	lw	a0,-32692(gp)
  4bf5e0:	00000000 	nop
  4bf5e4:	24845a90 	addiu	a0,a0,23184
  4bf5e8:	00822021 	addu	a0,a0,v0
  4bf5ec:	8fc2003c 	lw	v0,60(s8)
  4bf5f0:	00000000 	nop
  4bf5f4:	2442001d 	addiu	v0,v0,29
  4bf5f8:	90420000 	lbu	v0,0(v0)
  4bf5fc:	00000000 	nop
  4bf600:	38420054 	xori	v0,v0,0x54
  4bf604:	304200ff 	andi	v0,v0,0xff
  4bf608:	8f83804c 	lw	v1,-32692(gp)
  4bf60c:	00000000 	nop
  4bf610:	24635990 	addiu	v1,v1,22928
  4bf614:	00621821 	addu	v1,v1,v0
  4bf618:	8fc2003c 	lw	v0,60(s8)
  4bf61c:	00000000 	nop
  4bf620:	24420015 	addiu	v0,v0,21
  4bf624:	90630000 	lbu	v1,0(v1)
  4bf628:	90420000 	lbu	v0,0(v0)
  4bf62c:	00000000 	nop
  4bf630:	00621026 	xor	v0,v1,v0
  4bf634:	304200ff 	andi	v0,v0,0xff
  4bf638:	8f83804c 	lw	v1,-32692(gp)
  4bf63c:	00000000 	nop
  4bf640:	24635990 	addiu	v1,v1,22928
  4bf644:	00621821 	addu	v1,v1,v0
  4bf648:	8fc2003c 	lw	v0,60(s8)
  4bf64c:	00000000 	nop
  4bf650:	2442000d 	addiu	v0,v0,13
  4bf654:	90630000 	lbu	v1,0(v1)
  4bf658:	90420000 	lbu	v0,0(v0)
  4bf65c:	00000000 	nop
  4bf660:	00621026 	xor	v0,v1,v0
  4bf664:	304200ff 	andi	v0,v0,0xff
  4bf668:	8f83804c 	lw	v1,-32692(gp)
  4bf66c:	00000000 	nop
  4bf670:	24635890 	addiu	v1,v1,22672
  4bf674:	00621821 	addu	v1,v1,v0
  4bf678:	8fc2003c 	lw	v0,60(s8)
  4bf67c:	00000000 	nop
  4bf680:	24420005 	addiu	v0,v0,5
  4bf684:	90630000 	lbu	v1,0(v1)
  4bf688:	90420000 	lbu	v0,0(v0)
  4bf68c:	00000000 	nop
  4bf690:	00621026 	xor	v0,v1,v0
  4bf694:	304200ff 	andi	v0,v0,0xff
  4bf698:	00021080 	sll	v0,v0,0x2
  4bf69c:	24420400 	addiu	v0,v0,1024
  4bf6a0:	8f81804c 	lw	at,-32692(gp)
  4bf6a4:	00000000 	nop
  4bf6a8:	24215a90 	addiu	at,at,23184
  4bf6ac:	00221021 	addu	v0,at,v0
  4bf6b0:	8c830000 	lw	v1,0(a0)
  4bf6b4:	8c420000 	lw	v0,0(v0)
  4bf6b8:	00000000 	nop
  4bf6bc:	00622026 	xor	a0,v1,v0
  4bf6c0:	8fc2003c 	lw	v0,60(s8)
  4bf6c4:	00000000 	nop
  4bf6c8:	2442001e 	addiu	v0,v0,30
  4bf6cc:	90420000 	lbu	v0,0(v0)
  4bf6d0:	00000000 	nop
  4bf6d4:	38420054 	xori	v0,v0,0x54
  4bf6d8:	304200ff 	andi	v0,v0,0xff
  4bf6dc:	8f83804c 	lw	v1,-32692(gp)
  4bf6e0:	00000000 	nop
  4bf6e4:	24635890 	addiu	v1,v1,22672
  4bf6e8:	00621821 	addu	v1,v1,v0
  4bf6ec:	8fc2003c 	lw	v0,60(s8)
  4bf6f0:	00000000 	nop
  4bf6f4:	24420016 	addiu	v0,v0,22
  4bf6f8:	90630000 	lbu	v1,0(v1)
  4bf6fc:	90420000 	lbu	v0,0(v0)
  4bf700:	00000000 	nop
  4bf704:	00621026 	xor	v0,v1,v0
  4bf708:	304200ff 	andi	v0,v0,0xff
  4bf70c:	8f83804c 	lw	v1,-32692(gp)
  4bf710:	00000000 	nop
  4bf714:	24635890 	addiu	v1,v1,22672
  4bf718:	00621821 	addu	v1,v1,v0
  4bf71c:	8fc2003c 	lw	v0,60(s8)
  4bf720:	00000000 	nop
  4bf724:	2442000e 	addiu	v0,v0,14
  4bf728:	90630000 	lbu	v1,0(v1)
  4bf72c:	90420000 	lbu	v0,0(v0)
  4bf730:	00000000 	nop
  4bf734:	00621026 	xor	v0,v1,v0
  4bf738:	304200ff 	andi	v0,v0,0xff
  4bf73c:	8f83804c 	lw	v1,-32692(gp)
  4bf740:	00000000 	nop
  4bf744:	24635990 	addiu	v1,v1,22928
  4bf748:	00621821 	addu	v1,v1,v0
  4bf74c:	8fc2003c 	lw	v0,60(s8)
  4bf750:	00000000 	nop
  4bf754:	24420006 	addiu	v0,v0,6
  4bf758:	90630000 	lbu	v1,0(v1)
  4bf75c:	90420000 	lbu	v0,0(v0)
  4bf760:	00000000 	nop
  4bf764:	00621026 	xor	v0,v1,v0
  4bf768:	304200ff 	andi	v0,v0,0xff
  4bf76c:	00021080 	sll	v0,v0,0x2
  4bf770:	24420800 	addiu	v0,v0,2048
  4bf774:	8f81804c 	lw	at,-32692(gp)
  4bf778:	00000000 	nop
  4bf77c:	24215a90 	addiu	at,at,23184
  4bf780:	00221021 	addu	v0,at,v0
  4bf784:	8c420000 	lw	v0,0(v0)
  4bf788:	00000000 	nop
  4bf78c:	00822026 	xor	a0,a0,v0
  4bf790:	8fc2003c 	lw	v0,60(s8)
  4bf794:	00000000 	nop
  4bf798:	2442001f 	addiu	v0,v0,31
  4bf79c:	90420000 	lbu	v0,0(v0)
  4bf7a0:	8f83804c 	lw	v1,-32692(gp)
  4bf7a4:	00000000 	nop
  4bf7a8:	24635890 	addiu	v1,v1,22672
  4bf7ac:	00621821 	addu	v1,v1,v0
  4bf7b0:	8fc2003c 	lw	v0,60(s8)
  4bf7b4:	00000000 	nop
  4bf7b8:	24420017 	addiu	v0,v0,23
  4bf7bc:	90630000 	lbu	v1,0(v1)
  4bf7c0:	90420000 	lbu	v0,0(v0)
  4bf7c4:	00000000 	nop
  4bf7c8:	00621026 	xor	v0,v1,v0
  4bf7cc:	304200ff 	andi	v0,v0,0xff
  4bf7d0:	8f83804c 	lw	v1,-32692(gp)
  4bf7d4:	00000000 	nop
  4bf7d8:	24635990 	addiu	v1,v1,22928
  4bf7dc:	00621821 	addu	v1,v1,v0
  4bf7e0:	8fc2003c 	lw	v0,60(s8)
  4bf7e4:	00000000 	nop
  4bf7e8:	2442000f 	addiu	v0,v0,15
  4bf7ec:	90630000 	lbu	v1,0(v1)
  4bf7f0:	90420000 	lbu	v0,0(v0)
  4bf7f4:	00000000 	nop
  4bf7f8:	00621026 	xor	v0,v1,v0
  4bf7fc:	304200ff 	andi	v0,v0,0xff
  4bf800:	8f83804c 	lw	v1,-32692(gp)
  4bf804:	00000000 	nop
  4bf808:	24635990 	addiu	v1,v1,22928
  4bf80c:	00621821 	addu	v1,v1,v0
  4bf810:	8fc2003c 	lw	v0,60(s8)
  4bf814:	00000000 	nop
  4bf818:	24420007 	addiu	v0,v0,7
  4bf81c:	90630000 	lbu	v1,0(v1)
  4bf820:	90420000 	lbu	v0,0(v0)
  4bf824:	00000000 	nop
  4bf828:	00621026 	xor	v0,v1,v0
  4bf82c:	304200ff 	andi	v0,v0,0xff
  4bf830:	00021080 	sll	v0,v0,0x2
  4bf834:	24420c00 	addiu	v0,v0,3072
  4bf838:	8f81804c 	lw	at,-32692(gp)
  4bf83c:	00000000 	nop
  4bf840:	24215a90 	addiu	at,at,23184
  4bf844:	00221021 	addu	v0,at,v0
  4bf848:	8c420000 	lw	v0,0(v0)
  4bf84c:	00000000 	nop
  4bf850:	00821026 	xor	v0,a0,v0
  4bf854:	afc20018 	sw	v0,24(s8)
  4bf858:	8fc20018 	lw	v0,24(s8)
  4bf85c:	00000000 	nop
  4bf860:	00021a00 	sll	v1,v0,0x8
  4bf864:	00021602 	srl	v0,v0,0x18
  4bf868:	00621025 	or	v0,v1,v0
  4bf86c:	afc20018 	sw	v0,24(s8)
  4bf870:	8fc30014 	lw	v1,20(s8)
  4bf874:	8fc20018 	lw	v0,24(s8)
  4bf878:	00000000 	nop
  4bf87c:	00621021 	addu	v0,v1,v0
  4bf880:	afc20014 	sw	v0,20(s8)
  4bf884:	8fc30018 	lw	v1,24(s8)
  4bf888:	8fc20014 	lw	v0,20(s8)
  4bf88c:	00000000 	nop
  4bf890:	00621021 	addu	v0,v1,v0
  4bf894:	afc20018 	sw	v0,24(s8)
  4bf898:	8fc30014 	lw	v1,20(s8)
  4bf89c:	8fc20038 	lw	v0,56(s8)
  4bf8a0:	00000000 	nop
  4bf8a4:	ac431090 	sw	v1,4240(v0)
  4bf8a8:	8fc20018 	lw	v0,24(s8)
  4bf8ac:	00000000 	nop
  4bf8b0:	00021a40 	sll	v1,v0,0x9
  4bf8b4:	000215c2 	srl	v0,v0,0x17
  4bf8b8:	00621825 	or	v1,v1,v0
  4bf8bc:	8fc20038 	lw	v0,56(s8)
  4bf8c0:	00000000 	nop
  4bf8c4:	ac431094 	sw	v1,4244(v0)
		CALC_K256 (k, 30, 0xDF, 0xBC, 0x23, 0x9D);
  4bf8c8:	8fc2003c 	lw	v0,60(s8)
  4bf8cc:	00000000 	nop
  4bf8d0:	24420018 	addiu	v0,v0,24
  4bf8d4:	90420000 	lbu	v0,0(v0)
  4bf8d8:	00000000 	nop
  4bf8dc:	384200bc 	xori	v0,v0,0xbc
  4bf8e0:	304200ff 	andi	v0,v0,0xff
  4bf8e4:	8f83804c 	lw	v1,-32692(gp)
  4bf8e8:	00000000 	nop
  4bf8ec:	24635990 	addiu	v1,v1,22928
  4bf8f0:	00621821 	addu	v1,v1,v0
  4bf8f4:	8fc2003c 	lw	v0,60(s8)
  4bf8f8:	00000000 	nop
  4bf8fc:	24420010 	addiu	v0,v0,16
  4bf900:	90630000 	lbu	v1,0(v1)
  4bf904:	90420000 	lbu	v0,0(v0)
  4bf908:	00000000 	nop
  4bf90c:	00621026 	xor	v0,v1,v0
  4bf910:	304200ff 	andi	v0,v0,0xff
  4bf914:	8f83804c 	lw	v1,-32692(gp)
  4bf918:	00000000 	nop
  4bf91c:	24635890 	addiu	v1,v1,22672
  4bf920:	00621821 	addu	v1,v1,v0
  4bf924:	8fc2003c 	lw	v0,60(s8)
  4bf928:	00000000 	nop
  4bf92c:	24420008 	addiu	v0,v0,8
  4bf930:	90630000 	lbu	v1,0(v1)
  4bf934:	90420000 	lbu	v0,0(v0)
  4bf938:	00000000 	nop
  4bf93c:	00621026 	xor	v0,v1,v0
  4bf940:	304200ff 	andi	v0,v0,0xff
  4bf944:	8f81804c 	lw	at,-32692(gp)
  4bf948:	00000000 	nop
  4bf94c:	24215890 	addiu	at,at,22672
  4bf950:	00221021 	addu	v0,at,v0
  4bf954:	90430000 	lbu	v1,0(v0)
  4bf958:	8fc2003c 	lw	v0,60(s8)
  4bf95c:	00000000 	nop
  4bf960:	90420000 	lbu	v0,0(v0)
  4bf964:	00000000 	nop
  4bf968:	00621026 	xor	v0,v1,v0
  4bf96c:	304200ff 	andi	v0,v0,0xff
  4bf970:	00021080 	sll	v0,v0,0x2
  4bf974:	8f84804c 	lw	a0,-32692(gp)
  4bf978:	00000000 	nop
  4bf97c:	24845a90 	addiu	a0,a0,23184
  4bf980:	00822021 	addu	a0,a0,v0
  4bf984:	8fc2003c 	lw	v0,60(s8)
  4bf988:	00000000 	nop
  4bf98c:	24420019 	addiu	v0,v0,25
  4bf990:	90420000 	lbu	v0,0(v0)
  4bf994:	00000000 	nop
  4bf998:	384200df 	xori	v0,v0,0xdf
  4bf99c:	304200ff 	andi	v0,v0,0xff
  4bf9a0:	8f83804c 	lw	v1,-32692(gp)
  4bf9a4:	00000000 	nop
  4bf9a8:	24635990 	addiu	v1,v1,22928
  4bf9ac:	00621821 	addu	v1,v1,v0
  4bf9b0:	8fc2003c 	lw	v0,60(s8)
  4bf9b4:	00000000 	nop
  4bf9b8:	24420011 	addiu	v0,v0,17
  4bf9bc:	90630000 	lbu	v1,0(v1)
  4bf9c0:	90420000 	lbu	v0,0(v0)
  4bf9c4:	00000000 	nop
  4bf9c8:	00621026 	xor	v0,v1,v0
  4bf9cc:	304200ff 	andi	v0,v0,0xff
  4bf9d0:	8f83804c 	lw	v1,-32692(gp)
  4bf9d4:	00000000 	nop
  4bf9d8:	24635990 	addiu	v1,v1,22928
  4bf9dc:	00621821 	addu	v1,v1,v0
  4bf9e0:	8fc2003c 	lw	v0,60(s8)
  4bf9e4:	00000000 	nop
  4bf9e8:	24420009 	addiu	v0,v0,9
  4bf9ec:	90630000 	lbu	v1,0(v1)
  4bf9f0:	90420000 	lbu	v0,0(v0)
  4bf9f4:	00000000 	nop
  4bf9f8:	00621026 	xor	v0,v1,v0
  4bf9fc:	304200ff 	andi	v0,v0,0xff
  4bfa00:	8f83804c 	lw	v1,-32692(gp)
  4bfa04:	00000000 	nop
  4bfa08:	24635890 	addiu	v1,v1,22672
  4bfa0c:	00621821 	addu	v1,v1,v0
  4bfa10:	8fc2003c 	lw	v0,60(s8)
  4bfa14:	00000000 	nop
  4bfa18:	24420001 	addiu	v0,v0,1
  4bfa1c:	90630000 	lbu	v1,0(v1)
  4bfa20:	90420000 	lbu	v0,0(v0)
  4bfa24:	00000000 	nop
  4bfa28:	00621026 	xor	v0,v1,v0
  4bfa2c:	304200ff 	andi	v0,v0,0xff
  4bfa30:	00021080 	sll	v0,v0,0x2
  4bfa34:	24420400 	addiu	v0,v0,1024
  4bfa38:	8f81804c 	lw	at,-32692(gp)
  4bfa3c:	00000000 	nop
  4bfa40:	24215a90 	addiu	at,at,23184
  4bfa44:	00221021 	addu	v0,at,v0
  4bfa48:	8c830000 	lw	v1,0(a0)
  4bfa4c:	8c420000 	lw	v0,0(v0)
  4bfa50:	00000000 	nop
  4bfa54:	00622026 	xor	a0,v1,v0
  4bfa58:	8fc2003c 	lw	v0,60(s8)
  4bfa5c:	00000000 	nop
  4bfa60:	2442001a 	addiu	v0,v0,26
  4bfa64:	90420000 	lbu	v0,0(v0)
  4bfa68:	00000000 	nop
  4bfa6c:	384200df 	xori	v0,v0,0xdf
  4bfa70:	304200ff 	andi	v0,v0,0xff
  4bfa74:	8f83804c 	lw	v1,-32692(gp)
  4bfa78:	00000000 	nop
  4bfa7c:	24635890 	addiu	v1,v1,22672
  4bfa80:	00621821 	addu	v1,v1,v0
  4bfa84:	8fc2003c 	lw	v0,60(s8)
  4bfa88:	00000000 	nop
  4bfa8c:	24420012 	addiu	v0,v0,18
  4bfa90:	90630000 	lbu	v1,0(v1)
  4bfa94:	90420000 	lbu	v0,0(v0)
  4bfa98:	00000000 	nop
  4bfa9c:	00621026 	xor	v0,v1,v0
  4bfaa0:	304200ff 	andi	v0,v0,0xff
  4bfaa4:	8f83804c 	lw	v1,-32692(gp)
  4bfaa8:	00000000 	nop
  4bfaac:	24635890 	addiu	v1,v1,22672
  4bfab0:	00621821 	addu	v1,v1,v0
  4bfab4:	8fc2003c 	lw	v0,60(s8)
  4bfab8:	00000000 	nop
  4bfabc:	2442000a 	addiu	v0,v0,10
  4bfac0:	90630000 	lbu	v1,0(v1)
  4bfac4:	90420000 	lbu	v0,0(v0)
  4bfac8:	00000000 	nop
  4bfacc:	00621026 	xor	v0,v1,v0
  4bfad0:	304200ff 	andi	v0,v0,0xff
  4bfad4:	8f83804c 	lw	v1,-32692(gp)
  4bfad8:	00000000 	nop
  4bfadc:	24635990 	addiu	v1,v1,22928
  4bfae0:	00621821 	addu	v1,v1,v0
  4bfae4:	8fc2003c 	lw	v0,60(s8)
  4bfae8:	00000000 	nop
  4bfaec:	24420002 	addiu	v0,v0,2
  4bfaf0:	90630000 	lbu	v1,0(v1)
  4bfaf4:	90420000 	lbu	v0,0(v0)
  4bfaf8:	00000000 	nop
  4bfafc:	00621026 	xor	v0,v1,v0
  4bfb00:	304200ff 	andi	v0,v0,0xff
  4bfb04:	00021080 	sll	v0,v0,0x2
  4bfb08:	24420800 	addiu	v0,v0,2048
  4bfb0c:	8f81804c 	lw	at,-32692(gp)
  4bfb10:	00000000 	nop
  4bfb14:	24215a90 	addiu	at,at,23184
  4bfb18:	00221021 	addu	v0,at,v0
  4bfb1c:	8c420000 	lw	v0,0(v0)
  4bfb20:	00000000 	nop
  4bfb24:	00822026 	xor	a0,a0,v0
  4bfb28:	8fc2003c 	lw	v0,60(s8)
  4bfb2c:	00000000 	nop
  4bfb30:	2442001b 	addiu	v0,v0,27
  4bfb34:	90420000 	lbu	v0,0(v0)
  4bfb38:	00000000 	nop
  4bfb3c:	384200bc 	xori	v0,v0,0xbc
  4bfb40:	304200ff 	andi	v0,v0,0xff
  4bfb44:	8f83804c 	lw	v1,-32692(gp)
  4bfb48:	00000000 	nop
  4bfb4c:	24635890 	addiu	v1,v1,22672
  4bfb50:	00621821 	addu	v1,v1,v0
  4bfb54:	8fc2003c 	lw	v0,60(s8)
  4bfb58:	00000000 	nop
  4bfb5c:	24420013 	addiu	v0,v0,19
  4bfb60:	90630000 	lbu	v1,0(v1)
  4bfb64:	90420000 	lbu	v0,0(v0)
  4bfb68:	00000000 	nop
  4bfb6c:	00621026 	xor	v0,v1,v0
  4bfb70:	304200ff 	andi	v0,v0,0xff
  4bfb74:	8f83804c 	lw	v1,-32692(gp)
  4bfb78:	00000000 	nop
  4bfb7c:	24635990 	addiu	v1,v1,22928
  4bfb80:	00621821 	addu	v1,v1,v0
  4bfb84:	8fc2003c 	lw	v0,60(s8)
  4bfb88:	00000000 	nop
  4bfb8c:	2442000b 	addiu	v0,v0,11
  4bfb90:	90630000 	lbu	v1,0(v1)
  4bfb94:	90420000 	lbu	v0,0(v0)
  4bfb98:	00000000 	nop
  4bfb9c:	00621026 	xor	v0,v1,v0
  4bfba0:	304200ff 	andi	v0,v0,0xff
  4bfba4:	8f83804c 	lw	v1,-32692(gp)
  4bfba8:	00000000 	nop
  4bfbac:	24635990 	addiu	v1,v1,22928
  4bfbb0:	00621821 	addu	v1,v1,v0
  4bfbb4:	8fc2003c 	lw	v0,60(s8)
  4bfbb8:	00000000 	nop
  4bfbbc:	24420003 	addiu	v0,v0,3
  4bfbc0:	90630000 	lbu	v1,0(v1)
  4bfbc4:	90420000 	lbu	v0,0(v0)
  4bfbc8:	00000000 	nop
  4bfbcc:	00621026 	xor	v0,v1,v0
  4bfbd0:	304200ff 	andi	v0,v0,0xff
  4bfbd4:	00021080 	sll	v0,v0,0x2
  4bfbd8:	24420c00 	addiu	v0,v0,3072
  4bfbdc:	8f81804c 	lw	at,-32692(gp)
  4bfbe0:	00000000 	nop
  4bfbe4:	24215a90 	addiu	at,at,23184
  4bfbe8:	00221021 	addu	v0,at,v0
  4bfbec:	8c420000 	lw	v0,0(v0)
  4bfbf0:	00000000 	nop
  4bfbf4:	00821026 	xor	v0,a0,v0
  4bfbf8:	afc20014 	sw	v0,20(s8)
  4bfbfc:	8fc2003c 	lw	v0,60(s8)
  4bfc00:	00000000 	nop
  4bfc04:	2442001c 	addiu	v0,v0,28
  4bfc08:	90420000 	lbu	v0,0(v0)
  4bfc0c:	00000000 	nop
  4bfc10:	3842009d 	xori	v0,v0,0x9d
  4bfc14:	304200ff 	andi	v0,v0,0xff
  4bfc18:	8f83804c 	lw	v1,-32692(gp)
  4bfc1c:	00000000 	nop
  4bfc20:	24635990 	addiu	v1,v1,22928
  4bfc24:	00621821 	addu	v1,v1,v0
  4bfc28:	8fc2003c 	lw	v0,60(s8)
  4bfc2c:	00000000 	nop
  4bfc30:	24420014 	addiu	v0,v0,20
  4bfc34:	90630000 	lbu	v1,0(v1)
  4bfc38:	90420000 	lbu	v0,0(v0)
  4bfc3c:	00000000 	nop
  4bfc40:	00621026 	xor	v0,v1,v0
  4bfc44:	304200ff 	andi	v0,v0,0xff
  4bfc48:	8f83804c 	lw	v1,-32692(gp)
  4bfc4c:	00000000 	nop
  4bfc50:	24635890 	addiu	v1,v1,22672
  4bfc54:	00621821 	addu	v1,v1,v0
  4bfc58:	8fc2003c 	lw	v0,60(s8)
  4bfc5c:	00000000 	nop
  4bfc60:	2442000c 	addiu	v0,v0,12
  4bfc64:	90630000 	lbu	v1,0(v1)
  4bfc68:	90420000 	lbu	v0,0(v0)
  4bfc6c:	00000000 	nop
  4bfc70:	00621026 	xor	v0,v1,v0
  4bfc74:	304200ff 	andi	v0,v0,0xff
  4bfc78:	8f83804c 	lw	v1,-32692(gp)
  4bfc7c:	00000000 	nop
  4bfc80:	24635890 	addiu	v1,v1,22672
  4bfc84:	00621821 	addu	v1,v1,v0
  4bfc88:	8fc2003c 	lw	v0,60(s8)
  4bfc8c:	00000000 	nop
  4bfc90:	24420004 	addiu	v0,v0,4
  4bfc94:	90630000 	lbu	v1,0(v1)
  4bfc98:	90420000 	lbu	v0,0(v0)
  4bfc9c:	00000000 	nop
  4bfca0:	00621026 	xor	v0,v1,v0
  4bfca4:	304200ff 	andi	v0,v0,0xff
  4bfca8:	00021080 	sll	v0,v0,0x2
  4bfcac:	8f84804c 	lw	a0,-32692(gp)
  4bfcb0:	00000000 	nop
  4bfcb4:	24845a90 	addiu	a0,a0,23184
  4bfcb8:	00822021 	addu	a0,a0,v0
  4bfcbc:	8fc2003c 	lw	v0,60(s8)
  4bfcc0:	00000000 	nop
  4bfcc4:	2442001d 	addiu	v0,v0,29
  4bfcc8:	90420000 	lbu	v0,0(v0)
  4bfccc:	00000000 	nop
  4bfcd0:	38420023 	xori	v0,v0,0x23
  4bfcd4:	304200ff 	andi	v0,v0,0xff
  4bfcd8:	8f83804c 	lw	v1,-32692(gp)
  4bfcdc:	00000000 	nop
  4bfce0:	24635990 	addiu	v1,v1,22928
  4bfce4:	00621821 	addu	v1,v1,v0
  4bfce8:	8fc2003c 	lw	v0,60(s8)
  4bfcec:	00000000 	nop
  4bfcf0:	24420015 	addiu	v0,v0,21
  4bfcf4:	90630000 	lbu	v1,0(v1)
  4bfcf8:	90420000 	lbu	v0,0(v0)
  4bfcfc:	00000000 	nop
  4bfd00:	00621026 	xor	v0,v1,v0
  4bfd04:	304200ff 	andi	v0,v0,0xff
  4bfd08:	8f83804c 	lw	v1,-32692(gp)
  4bfd0c:	00000000 	nop
  4bfd10:	24635990 	addiu	v1,v1,22928
  4bfd14:	00621821 	addu	v1,v1,v0
  4bfd18:	8fc2003c 	lw	v0,60(s8)
  4bfd1c:	00000000 	nop
  4bfd20:	2442000d 	addiu	v0,v0,13
  4bfd24:	90630000 	lbu	v1,0(v1)
  4bfd28:	90420000 	lbu	v0,0(v0)
  4bfd2c:	00000000 	nop
  4bfd30:	00621026 	xor	v0,v1,v0
  4bfd34:	304200ff 	andi	v0,v0,0xff
  4bfd38:	8f83804c 	lw	v1,-32692(gp)
  4bfd3c:	00000000 	nop
  4bfd40:	24635890 	addiu	v1,v1,22672
  4bfd44:	00621821 	addu	v1,v1,v0
  4bfd48:	8fc2003c 	lw	v0,60(s8)
  4bfd4c:	00000000 	nop
  4bfd50:	24420005 	addiu	v0,v0,5
  4bfd54:	90630000 	lbu	v1,0(v1)
  4bfd58:	90420000 	lbu	v0,0(v0)
  4bfd5c:	00000000 	nop
  4bfd60:	00621026 	xor	v0,v1,v0
  4bfd64:	304200ff 	andi	v0,v0,0xff
  4bfd68:	00021080 	sll	v0,v0,0x2
  4bfd6c:	24420400 	addiu	v0,v0,1024
  4bfd70:	8f81804c 	lw	at,-32692(gp)
  4bfd74:	00000000 	nop
  4bfd78:	24215a90 	addiu	at,at,23184
  4bfd7c:	00221021 	addu	v0,at,v0
  4bfd80:	8c830000 	lw	v1,0(a0)
  4bfd84:	8c420000 	lw	v0,0(v0)
  4bfd88:	00000000 	nop
  4bfd8c:	00622026 	xor	a0,v1,v0
  4bfd90:	8fc2003c 	lw	v0,60(s8)
  4bfd94:	00000000 	nop
  4bfd98:	2442001e 	addiu	v0,v0,30
  4bfd9c:	90420000 	lbu	v0,0(v0)
  4bfda0:	00000000 	nop
  4bfda4:	38420023 	xori	v0,v0,0x23
  4bfda8:	304200ff 	andi	v0,v0,0xff
  4bfdac:	8f83804c 	lw	v1,-32692(gp)
  4bfdb0:	00000000 	nop
  4bfdb4:	24635890 	addiu	v1,v1,22672
  4bfdb8:	00621821 	addu	v1,v1,v0
  4bfdbc:	8fc2003c 	lw	v0,60(s8)
  4bfdc0:	00000000 	nop
  4bfdc4:	24420016 	addiu	v0,v0,22
  4bfdc8:	90630000 	lbu	v1,0(v1)
  4bfdcc:	90420000 	lbu	v0,0(v0)
  4bfdd0:	00000000 	nop
  4bfdd4:	00621026 	xor	v0,v1,v0
  4bfdd8:	304200ff 	andi	v0,v0,0xff
  4bfddc:	8f83804c 	lw	v1,-32692(gp)
  4bfde0:	00000000 	nop
  4bfde4:	24635890 	addiu	v1,v1,22672
  4bfde8:	00621821 	addu	v1,v1,v0
  4bfdec:	8fc2003c 	lw	v0,60(s8)
  4bfdf0:	00000000 	nop
  4bfdf4:	2442000e 	addiu	v0,v0,14
  4bfdf8:	90630000 	lbu	v1,0(v1)
  4bfdfc:	90420000 	lbu	v0,0(v0)
  4bfe00:	00000000 	nop
  4bfe04:	00621026 	xor	v0,v1,v0
  4bfe08:	304200ff 	andi	v0,v0,0xff
  4bfe0c:	8f83804c 	lw	v1,-32692(gp)
  4bfe10:	00000000 	nop
  4bfe14:	24635990 	addiu	v1,v1,22928
  4bfe18:	00621821 	addu	v1,v1,v0
  4bfe1c:	8fc2003c 	lw	v0,60(s8)
  4bfe20:	00000000 	nop
  4bfe24:	24420006 	addiu	v0,v0,6
  4bfe28:	90630000 	lbu	v1,0(v1)
  4bfe2c:	90420000 	lbu	v0,0(v0)
  4bfe30:	00000000 	nop
  4bfe34:	00621026 	xor	v0,v1,v0
  4bfe38:	304200ff 	andi	v0,v0,0xff
  4bfe3c:	00021080 	sll	v0,v0,0x2
  4bfe40:	24420800 	addiu	v0,v0,2048
  4bfe44:	8f81804c 	lw	at,-32692(gp)
  4bfe48:	00000000 	nop
  4bfe4c:	24215a90 	addiu	at,at,23184
  4bfe50:	00221021 	addu	v0,at,v0
  4bfe54:	8c420000 	lw	v0,0(v0)
  4bfe58:	00000000 	nop
  4bfe5c:	00822026 	xor	a0,a0,v0
  4bfe60:	8fc2003c 	lw	v0,60(s8)
  4bfe64:	00000000 	nop
  4bfe68:	2442001f 	addiu	v0,v0,31
  4bfe6c:	90420000 	lbu	v0,0(v0)
  4bfe70:	00000000 	nop
  4bfe74:	3842009d 	xori	v0,v0,0x9d
  4bfe78:	304200ff 	andi	v0,v0,0xff
  4bfe7c:	8f83804c 	lw	v1,-32692(gp)
  4bfe80:	00000000 	nop
  4bfe84:	24635890 	addiu	v1,v1,22672
  4bfe88:	00621821 	addu	v1,v1,v0
  4bfe8c:	8fc2003c 	lw	v0,60(s8)
  4bfe90:	00000000 	nop
  4bfe94:	24420017 	addiu	v0,v0,23
  4bfe98:	90630000 	lbu	v1,0(v1)
  4bfe9c:	90420000 	lbu	v0,0(v0)
  4bfea0:	00000000 	nop
  4bfea4:	00621026 	xor	v0,v1,v0
  4bfea8:	304200ff 	andi	v0,v0,0xff
  4bfeac:	8f83804c 	lw	v1,-32692(gp)
  4bfeb0:	00000000 	nop
  4bfeb4:	24635990 	addiu	v1,v1,22928
  4bfeb8:	00621821 	addu	v1,v1,v0
  4bfebc:	8fc2003c 	lw	v0,60(s8)
  4bfec0:	00000000 	nop
  4bfec4:	2442000f 	addiu	v0,v0,15
  4bfec8:	90630000 	lbu	v1,0(v1)
  4bfecc:	90420000 	lbu	v0,0(v0)
  4bfed0:	00000000 	nop
  4bfed4:	00621026 	xor	v0,v1,v0
  4bfed8:	304200ff 	andi	v0,v0,0xff
  4bfedc:	8f83804c 	lw	v1,-32692(gp)
  4bfee0:	00000000 	nop
  4bfee4:	24635990 	addiu	v1,v1,22928
  4bfee8:	00621821 	addu	v1,v1,v0
  4bfeec:	8fc2003c 	lw	v0,60(s8)
  4bfef0:	00000000 	nop
  4bfef4:	24420007 	addiu	v0,v0,7
  4bfef8:	90630000 	lbu	v1,0(v1)
  4bfefc:	90420000 	lbu	v0,0(v0)
  4bff00:	00000000 	nop
  4bff04:	00621026 	xor	v0,v1,v0
  4bff08:	304200ff 	andi	v0,v0,0xff
  4bff0c:	00021080 	sll	v0,v0,0x2
  4bff10:	24420c00 	addiu	v0,v0,3072
  4bff14:	8f81804c 	lw	at,-32692(gp)
  4bff18:	00000000 	nop
  4bff1c:	24215a90 	addiu	at,at,23184
  4bff20:	00221021 	addu	v0,at,v0
  4bff24:	8c420000 	lw	v0,0(v0)
  4bff28:	00000000 	nop
  4bff2c:	00821026 	xor	v0,a0,v0
  4bff30:	afc20018 	sw	v0,24(s8)
  4bff34:	8fc20018 	lw	v0,24(s8)
  4bff38:	00000000 	nop
  4bff3c:	00021a00 	sll	v1,v0,0x8
  4bff40:	00021602 	srl	v0,v0,0x18
  4bff44:	00621025 	or	v0,v1,v0
  4bff48:	afc20018 	sw	v0,24(s8)
  4bff4c:	8fc30014 	lw	v1,20(s8)
  4bff50:	8fc20018 	lw	v0,24(s8)
  4bff54:	00000000 	nop
  4bff58:	00621021 	addu	v0,v1,v0
  4bff5c:	afc20014 	sw	v0,20(s8)
  4bff60:	8fc30018 	lw	v1,24(s8)
  4bff64:	8fc20014 	lw	v0,20(s8)
  4bff68:	00000000 	nop
  4bff6c:	00621021 	addu	v0,v1,v0
  4bff70:	afc20018 	sw	v0,24(s8)
  4bff74:	8fc30014 	lw	v1,20(s8)
  4bff78:	8fc20038 	lw	v0,56(s8)
  4bff7c:	00000000 	nop
  4bff80:	ac431098 	sw	v1,4248(v0)
  4bff84:	8fc20018 	lw	v0,24(s8)
  4bff88:	00000000 	nop
  4bff8c:	00021a40 	sll	v1,v0,0x9
  4bff90:	000215c2 	srl	v0,v0,0x17
  4bff94:	00621825 	or	v1,v1,v0
  4bff98:	8fc20038 	lw	v0,56(s8)
  4bff9c:	00000000 	nop
  4bffa0:	ac43109c 	sw	v1,4252(v0)
  4bffa4:	1000305b 	b	4cc114 <twofish_set_key+0x16d64>
  4bffa8:	00000000 	nop
  4bffac:	8fc20008 	lw	v0,8(s8)
  4bffb0:	00000000 	nop
  4bffb4:	00021880 	sll	v1,v0,0x2
  4bffb8:	8fc20038 	lw	v0,56(s8)
  4bffbc:	00000000 	nop
  4bffc0:	00432021 	addu	a0,v0,v1
  4bffc4:	8fc20010 	lw	v0,16(s8)
  4bffc8:	8f81804c 	lw	at,-32692(gp)
  4bffcc:	00000000 	nop
  4bffd0:	24216d7c 	addiu	at,at,28028
  4bffd4:	00221021 	addu	v0,at,v0
  4bffd8:	90430000 	lbu	v1,0(v0)
  4bffdc:	93c2001c 	lbu	v0,28(s8)
  4bffe0:	00000000 	nop
  4bffe4:	00621026 	xor	v0,v1,v0
  4bffe8:	304200ff 	andi	v0,v0,0xff
  4bffec:	8f81804c 	lw	at,-32692(gp)
  4bfff0:	00000000 	nop
  4bfff4:	24215990 	addiu	at,at,22928
  4bfff8:	00221021 	addu	v0,at,v0
  4bfffc:	90430000 	lbu	v1,0(v0)
  4c0000:	93c20020 	lbu	v0,32(s8)
  4c0004:	00000000 	nop
  4c0008:	00621026 	xor	v0,v1,v0
  4c000c:	304200ff 	andi	v0,v0,0xff
  4c0010:	8f81804c 	lw	at,-32692(gp)
  4c0014:	00000000 	nop
  4c0018:	24215890 	addiu	at,at,22672
  4c001c:	00221021 	addu	v0,at,v0
  4c0020:	90430000 	lbu	v1,0(v0)
  4c0024:	93c20024 	lbu	v0,36(s8)
  4c0028:	00000000 	nop
  4c002c:	00621026 	xor	v0,v1,v0
  4c0030:	304200ff 	andi	v0,v0,0xff
  4c0034:	8f81804c 	lw	at,-32692(gp)
  4c0038:	00000000 	nop
  4c003c:	24215890 	addiu	at,at,22672
  4c0040:	00221021 	addu	v0,at,v0
  4c0044:	90430000 	lbu	v1,0(v0)
  4c0048:	93c20028 	lbu	v0,40(s8)
  4c004c:	00000000 	nop
  4c0050:	00621026 	xor	v0,v1,v0
  4c0054:	304200ff 	andi	v0,v0,0xff
  4c0058:	00021080 	sll	v0,v0,0x2
  4c005c:	8f81804c 	lw	at,-32692(gp)
  4c0060:	00000000 	nop
  4c0064:	24215a90 	addiu	at,at,23184
  4c0068:	00221021 	addu	v0,at,v0
  4c006c:	8c420000 	lw	v0,0(v0)
  4c0070:	00000000 	nop
  4c0074:	ac820000 	sw	v0,0(a0)
  4c0078:	8fc20008 	lw	v0,8(s8)
  4c007c:	00000000 	nop
  4c0080:	00021080 	sll	v0,v0,0x2
  4c0084:	24430400 	addiu	v1,v0,1024
  4c0088:	8fc20038 	lw	v0,56(s8)
  4c008c:	00000000 	nop
  4c0090:	00432021 	addu	a0,v0,v1
  4c0094:	8fc2000c 	lw	v0,12(s8)
  4c0098:	8f81804c 	lw	at,-32692(gp)
  4c009c:	00000000 	nop
  4c00a0:	24216d7c 	addiu	at,at,28028
  4c00a4:	00221021 	addu	v0,at,v0
  4c00a8:	90430000 	lbu	v1,0(v0)
  4c00ac:	93c2001d 	lbu	v0,29(s8)
  4c00b0:	00000000 	nop
  4c00b4:	00621026 	xor	v0,v1,v0
  4c00b8:	304200ff 	andi	v0,v0,0xff
  4c00bc:	8f81804c 	lw	at,-32692(gp)
  4c00c0:	00000000 	nop
  4c00c4:	24215990 	addiu	at,at,22928
  4c00c8:	00221021 	addu	v0,at,v0
  4c00cc:	90430000 	lbu	v1,0(v0)
  4c00d0:	93c20021 	lbu	v0,33(s8)
  4c00d4:	00000000 	nop
  4c00d8:	00621026 	xor	v0,v1,v0
  4c00dc:	304200ff 	andi	v0,v0,0xff
  4c00e0:	8f81804c 	lw	at,-32692(gp)
  4c00e4:	00000000 	nop
  4c00e8:	24215990 	addiu	at,at,22928
  4c00ec:	00221021 	addu	v0,at,v0
  4c00f0:	90430000 	lbu	v1,0(v0)
  4c00f4:	93c20025 	lbu	v0,37(s8)
  4c00f8:	00000000 	nop
  4c00fc:	00621026 	xor	v0,v1,v0
  4c0100:	304200ff 	andi	v0,v0,0xff
  4c0104:	8f81804c 	lw	at,-32692(gp)
  4c0108:	00000000 	nop
  4c010c:	24215890 	addiu	at,at,22672
  4c0110:	00221021 	addu	v0,at,v0
  4c0114:	90430000 	lbu	v1,0(v0)
  4c0118:	93c20029 	lbu	v0,41(s8)
  4c011c:	00000000 	nop
  4c0120:	00621026 	xor	v0,v1,v0
  4c0124:	304200ff 	andi	v0,v0,0xff
  4c0128:	00021080 	sll	v0,v0,0x2
  4c012c:	24420400 	addiu	v0,v0,1024
  4c0130:	8f81804c 	lw	at,-32692(gp)
  4c0134:	00000000 	nop
  4c0138:	24215a90 	addiu	at,at,23184
  4c013c:	00221021 	addu	v0,at,v0
  4c0140:	8c420000 	lw	v0,0(v0)
  4c0144:	00000000 	nop
  4c0148:	ac820000 	sw	v0,0(a0)
  4c014c:	8fc20008 	lw	v0,8(s8)
  4c0150:	00000000 	nop
  4c0154:	00021080 	sll	v0,v0,0x2
  4c0158:	24430800 	addiu	v1,v0,2048
  4c015c:	8fc20038 	lw	v0,56(s8)
  4c0160:	00000000 	nop
  4c0164:	00432021 	addu	a0,v0,v1
  4c0168:	8fc2000c 	lw	v0,12(s8)
  4c016c:	8f81804c 	lw	at,-32692(gp)
  4c0170:	00000000 	nop
  4c0174:	24216d7c 	addiu	at,at,28028
  4c0178:	00221021 	addu	v0,at,v0
  4c017c:	90430000 	lbu	v1,0(v0)
  4c0180:	93c2001e 	lbu	v0,30(s8)
  4c0184:	00000000 	nop
  4c0188:	00621026 	xor	v0,v1,v0
  4c018c:	304200ff 	andi	v0,v0,0xff
  4c0190:	8f81804c 	lw	at,-32692(gp)
  4c0194:	00000000 	nop
  4c0198:	24215890 	addiu	at,at,22672
  4c019c:	00221021 	addu	v0,at,v0
  4c01a0:	90430000 	lbu	v1,0(v0)
  4c01a4:	93c20022 	lbu	v0,34(s8)
  4c01a8:	00000000 	nop
  4c01ac:	00621026 	xor	v0,v1,v0
  4c01b0:	304200ff 	andi	v0,v0,0xff
  4c01b4:	8f81804c 	lw	at,-32692(gp)
  4c01b8:	00000000 	nop
  4c01bc:	24215890 	addiu	at,at,22672
  4c01c0:	00221021 	addu	v0,at,v0
  4c01c4:	90430000 	lbu	v1,0(v0)
  4c01c8:	93c20026 	lbu	v0,38(s8)
  4c01cc:	00000000 	nop
  4c01d0:	00621026 	xor	v0,v1,v0
  4c01d4:	304200ff 	andi	v0,v0,0xff
  4c01d8:	8f81804c 	lw	at,-32692(gp)
  4c01dc:	00000000 	nop
  4c01e0:	24215990 	addiu	at,at,22928
  4c01e4:	00221021 	addu	v0,at,v0
  4c01e8:	90430000 	lbu	v1,0(v0)
  4c01ec:	93c2002a 	lbu	v0,42(s8)
  4c01f0:	00000000 	nop
  4c01f4:	00621026 	xor	v0,v1,v0
  4c01f8:	304200ff 	andi	v0,v0,0xff
  4c01fc:	00021080 	sll	v0,v0,0x2
  4c0200:	24420800 	addiu	v0,v0,2048
  4c0204:	8f81804c 	lw	at,-32692(gp)
  4c0208:	00000000 	nop
  4c020c:	24215a90 	addiu	at,at,23184
  4c0210:	00221021 	addu	v0,at,v0
  4c0214:	8c420000 	lw	v0,0(v0)
  4c0218:	00000000 	nop
  4c021c:	ac820000 	sw	v0,0(a0)
  4c0220:	8fc20008 	lw	v0,8(s8)
  4c0224:	00000000 	nop
  4c0228:	00021080 	sll	v0,v0,0x2
  4c022c:	24430c00 	addiu	v1,v0,3072
  4c0230:	8fc20038 	lw	v0,56(s8)
  4c0234:	00000000 	nop
  4c0238:	00432021 	addu	a0,v0,v1
  4c023c:	8fc20010 	lw	v0,16(s8)
  4c0240:	8f81804c 	lw	at,-32692(gp)
  4c0244:	00000000 	nop
  4c0248:	24216d7c 	addiu	at,at,28028
  4c024c:	00221021 	addu	v0,at,v0
  4c0250:	90430000 	lbu	v1,0(v0)
  4c0254:	93c2001f 	lbu	v0,31(s8)
  4c0258:	00000000 	nop
  4c025c:	00621026 	xor	v0,v1,v0
  4c0260:	304200ff 	andi	v0,v0,0xff
  4c0264:	8f81804c 	lw	at,-32692(gp)
  4c0268:	00000000 	nop
  4c026c:	24215890 	addiu	at,at,22672
  4c0270:	00221021 	addu	v0,at,v0
  4c0274:	90430000 	lbu	v1,0(v0)
  4c0278:	93c20023 	lbu	v0,35(s8)
  4c027c:	00000000 	nop
  4c0280:	00621026 	xor	v0,v1,v0
  4c0284:	304200ff 	andi	v0,v0,0xff
  4c0288:	8f81804c 	lw	at,-32692(gp)
  4c028c:	00000000 	nop
  4c0290:	24215990 	addiu	at,at,22928
  4c0294:	00221021 	addu	v0,at,v0
  4c0298:	90430000 	lbu	v1,0(v0)
  4c029c:	93c20027 	lbu	v0,39(s8)
  4c02a0:	00000000 	nop
  4c02a4:	00621026 	xor	v0,v1,v0
  4c02a8:	304200ff 	andi	v0,v0,0xff
  4c02ac:	8f81804c 	lw	at,-32692(gp)
  4c02b0:	00000000 	nop
  4c02b4:	24215990 	addiu	at,at,22928
  4c02b8:	00221021 	addu	v0,at,v0
  4c02bc:	90430000 	lbu	v1,0(v0)
  4c02c0:	93c2002b 	lbu	v0,43(s8)
  4c02c4:	00000000 	nop
  4c02c8:	00621026 	xor	v0,v1,v0
  4c02cc:	304200ff 	andi	v0,v0,0xff
  4c02d0:	00021080 	sll	v0,v0,0x2
  4c02d4:	24420c00 	addiu	v0,v0,3072
  4c02d8:	8f81804c 	lw	at,-32692(gp)
  4c02dc:	00000000 	nop
  4c02e0:	24215a90 	addiu	at,at,23184
  4c02e4:	00221021 	addu	v0,at,v0
  4c02e8:	8c420000 	lw	v0,0(v0)
  4c02ec:	00000000 	nop
  4c02f0:	ac820000 	sw	v0,0(a0)
  4c02f4:	8fc20008 	lw	v0,8(s8)
  4c02f8:	00000000 	nop
  4c02fc:	24420001 	addiu	v0,v0,1
  4c0300:	afc20008 	sw	v0,8(s8)
  4c0304:	8fc2000c 	lw	v0,12(s8)
  4c0308:	00000000 	nop
  4c030c:	24420002 	addiu	v0,v0,2
  4c0310:	afc2000c 	sw	v0,12(s8)
  4c0314:	8fc20010 	lw	v0,16(s8)
  4c0318:	00000000 	nop
  4c031c:	24420002 	addiu	v0,v0,2
  4c0320:	afc20010 	sw	v0,16(s8)
  4c0324:	1000dcd4 	b	4b7678 <twofish_set_key+0x22c8>
  4c0328:	00000000 	nop
	} else if (key_len == 24) { /* 192-bit key */
  4c032c:	8fc30040 	lw	v1,64(s8)
  4c0330:	24020018 	li	v0,24
  4c0334:	14621b8e 	bne	v1,v0,4c7170 <twofish_set_key+0x11dc0>
  4c0338:	00000000 	nop
		/* Compute the S-boxes. */
		for ( i = j = 0, k = 1; i < 256; i++, j += 2, k += 2 ) {
  4c033c:	afc0000c 	sw	zero,12(s8)
  4c0340:	afc00008 	sw	zero,8(s8)
  4c0344:	24020001 	li	v0,1
  4c0348:	afc20010 	sw	v0,16(s8)
  4c034c:	8fc20008 	lw	v0,8(s8)
  4c0350:	00000000 	nop
  4c0354:	28420100 	slti	v0,v0,256
  4c0358:	14401ac9 	bnez	v0,4c6e80 <twofish_set_key+0x11ad0>
  4c035c:	00000000 	nop
		        CALC_SB192_2( i, calc_sb_tbl[j], calc_sb_tbl[k] );
		}

		/* Calculate whitening and round subkeys.  The constants are
		 * indices of subkeys, preprocessed through q0 and q1. */
		CALC_K192 (w, 0, 0xA9, 0x75, 0x67, 0xF3);
  4c0360:	8fc2003c 	lw	v0,60(s8)
  4c0364:	00000000 	nop
  4c0368:	24420010 	addiu	v0,v0,16
  4c036c:	90420000 	lbu	v0,0(v0)
  4c0370:	00000000 	nop
  4c0374:	38420075 	xori	v0,v0,0x75
  4c0378:	304200ff 	andi	v0,v0,0xff
  4c037c:	8f83804c 	lw	v1,-32692(gp)
  4c0380:	00000000 	nop
  4c0384:	24635890 	addiu	v1,v1,22672
  4c0388:	00621821 	addu	v1,v1,v0
  4c038c:	8fc2003c 	lw	v0,60(s8)
  4c0390:	00000000 	nop
  4c0394:	24420008 	addiu	v0,v0,8
  4c0398:	90630000 	lbu	v1,0(v1)
  4c039c:	90420000 	lbu	v0,0(v0)
  4c03a0:	00000000 	nop
  4c03a4:	00621026 	xor	v0,v1,v0
  4c03a8:	304200ff 	andi	v0,v0,0xff
  4c03ac:	8f81804c 	lw	at,-32692(gp)
  4c03b0:	00000000 	nop
  4c03b4:	24215890 	addiu	at,at,22672
  4c03b8:	00221021 	addu	v0,at,v0
  4c03bc:	90430000 	lbu	v1,0(v0)
  4c03c0:	8fc2003c 	lw	v0,60(s8)
  4c03c4:	00000000 	nop
  4c03c8:	90420000 	lbu	v0,0(v0)
  4c03cc:	00000000 	nop
  4c03d0:	00621026 	xor	v0,v1,v0
  4c03d4:	304200ff 	andi	v0,v0,0xff
  4c03d8:	00021080 	sll	v0,v0,0x2
  4c03dc:	8f84804c 	lw	a0,-32692(gp)
  4c03e0:	00000000 	nop
  4c03e4:	24845a90 	addiu	a0,a0,23184
  4c03e8:	00822021 	addu	a0,a0,v0
  4c03ec:	8fc2003c 	lw	v0,60(s8)
  4c03f0:	00000000 	nop
  4c03f4:	24420011 	addiu	v0,v0,17
  4c03f8:	90420000 	lbu	v0,0(v0)
  4c03fc:	00000000 	nop
  4c0400:	38420075 	xori	v0,v0,0x75
  4c0404:	304200ff 	andi	v0,v0,0xff
  4c0408:	8f83804c 	lw	v1,-32692(gp)
  4c040c:	00000000 	nop
  4c0410:	24635990 	addiu	v1,v1,22928
  4c0414:	00621821 	addu	v1,v1,v0
  4c0418:	8fc2003c 	lw	v0,60(s8)
  4c041c:	00000000 	nop
  4c0420:	24420009 	addiu	v0,v0,9
  4c0424:	90630000 	lbu	v1,0(v1)
  4c0428:	90420000 	lbu	v0,0(v0)
  4c042c:	00000000 	nop
  4c0430:	00621026 	xor	v0,v1,v0
  4c0434:	304200ff 	andi	v0,v0,0xff
  4c0438:	8f83804c 	lw	v1,-32692(gp)
  4c043c:	00000000 	nop
  4c0440:	24635890 	addiu	v1,v1,22672
  4c0444:	00621821 	addu	v1,v1,v0
  4c0448:	8fc2003c 	lw	v0,60(s8)
  4c044c:	00000000 	nop
  4c0450:	24420001 	addiu	v0,v0,1
  4c0454:	90630000 	lbu	v1,0(v1)
  4c0458:	90420000 	lbu	v0,0(v0)
  4c045c:	00000000 	nop
  4c0460:	00621026 	xor	v0,v1,v0
  4c0464:	304200ff 	andi	v0,v0,0xff
  4c0468:	00021080 	sll	v0,v0,0x2
  4c046c:	24420400 	addiu	v0,v0,1024
  4c0470:	8f81804c 	lw	at,-32692(gp)
  4c0474:	00000000 	nop
  4c0478:	24215a90 	addiu	at,at,23184
  4c047c:	00221021 	addu	v0,at,v0
  4c0480:	8c830000 	lw	v1,0(a0)
  4c0484:	8c420000 	lw	v0,0(v0)
  4c0488:	00000000 	nop
  4c048c:	00622026 	xor	a0,v1,v0
  4c0490:	8fc2003c 	lw	v0,60(s8)
  4c0494:	00000000 	nop
  4c0498:	24420012 	addiu	v0,v0,18
  4c049c:	90420000 	lbu	v0,0(v0)
  4c04a0:	00000000 	nop
  4c04a4:	384200a9 	xori	v0,v0,0xa9
  4c04a8:	304200ff 	andi	v0,v0,0xff
  4c04ac:	8f83804c 	lw	v1,-32692(gp)
  4c04b0:	00000000 	nop
  4c04b4:	24635890 	addiu	v1,v1,22672
  4c04b8:	00621821 	addu	v1,v1,v0
  4c04bc:	8fc2003c 	lw	v0,60(s8)
  4c04c0:	00000000 	nop
  4c04c4:	2442000a 	addiu	v0,v0,10
  4c04c8:	90630000 	lbu	v1,0(v1)
  4c04cc:	90420000 	lbu	v0,0(v0)
  4c04d0:	00000000 	nop
  4c04d4:	00621026 	xor	v0,v1,v0
  4c04d8:	304200ff 	andi	v0,v0,0xff
  4c04dc:	8f83804c 	lw	v1,-32692(gp)
  4c04e0:	00000000 	nop
  4c04e4:	24635990 	addiu	v1,v1,22928
  4c04e8:	00621821 	addu	v1,v1,v0
  4c04ec:	8fc2003c 	lw	v0,60(s8)
  4c04f0:	00000000 	nop
  4c04f4:	24420002 	addiu	v0,v0,2
  4c04f8:	90630000 	lbu	v1,0(v1)
  4c04fc:	90420000 	lbu	v0,0(v0)
  4c0500:	00000000 	nop
  4c0504:	00621026 	xor	v0,v1,v0
  4c0508:	304200ff 	andi	v0,v0,0xff
  4c050c:	00021080 	sll	v0,v0,0x2
  4c0510:	24420800 	addiu	v0,v0,2048
  4c0514:	8f81804c 	lw	at,-32692(gp)
  4c0518:	00000000 	nop
  4c051c:	24215a90 	addiu	at,at,23184
  4c0520:	00221021 	addu	v0,at,v0
  4c0524:	8c420000 	lw	v0,0(v0)
  4c0528:	00000000 	nop
  4c052c:	00822026 	xor	a0,a0,v0
  4c0530:	8fc2003c 	lw	v0,60(s8)
  4c0534:	00000000 	nop
  4c0538:	24420013 	addiu	v0,v0,19
  4c053c:	90420000 	lbu	v0,0(v0)
  4c0540:	00000000 	nop
  4c0544:	384200a9 	xori	v0,v0,0xa9
  4c0548:	304200ff 	andi	v0,v0,0xff
  4c054c:	8f83804c 	lw	v1,-32692(gp)
  4c0550:	00000000 	nop
  4c0554:	24635990 	addiu	v1,v1,22928
  4c0558:	00621821 	addu	v1,v1,v0
  4c055c:	8fc2003c 	lw	v0,60(s8)
  4c0560:	00000000 	nop
  4c0564:	2442000b 	addiu	v0,v0,11
  4c0568:	90630000 	lbu	v1,0(v1)
  4c056c:	90420000 	lbu	v0,0(v0)
  4c0570:	00000000 	nop
  4c0574:	00621026 	xor	v0,v1,v0
  4c0578:	304200ff 	andi	v0,v0,0xff
  4c057c:	8f83804c 	lw	v1,-32692(gp)
  4c0580:	00000000 	nop
  4c0584:	24635990 	addiu	v1,v1,22928
  4c0588:	00621821 	addu	v1,v1,v0
  4c058c:	8fc2003c 	lw	v0,60(s8)
  4c0590:	00000000 	nop
  4c0594:	24420003 	addiu	v0,v0,3
  4c0598:	90630000 	lbu	v1,0(v1)
  4c059c:	90420000 	lbu	v0,0(v0)
  4c05a0:	00000000 	nop
  4c05a4:	00621026 	xor	v0,v1,v0
  4c05a8:	304200ff 	andi	v0,v0,0xff
  4c05ac:	00021080 	sll	v0,v0,0x2
  4c05b0:	24420c00 	addiu	v0,v0,3072
  4c05b4:	8f81804c 	lw	at,-32692(gp)
  4c05b8:	00000000 	nop
  4c05bc:	24215a90 	addiu	at,at,23184
  4c05c0:	00221021 	addu	v0,at,v0
  4c05c4:	8c420000 	lw	v0,0(v0)
  4c05c8:	00000000 	nop
  4c05cc:	00821026 	xor	v0,a0,v0
  4c05d0:	afc20014 	sw	v0,20(s8)
  4c05d4:	8fc2003c 	lw	v0,60(s8)
  4c05d8:	00000000 	nop
  4c05dc:	24420014 	addiu	v0,v0,20
  4c05e0:	90420000 	lbu	v0,0(v0)
  4c05e4:	00000000 	nop
  4c05e8:	384200f3 	xori	v0,v0,0xf3
  4c05ec:	304200ff 	andi	v0,v0,0xff
  4c05f0:	8f83804c 	lw	v1,-32692(gp)
  4c05f4:	00000000 	nop
  4c05f8:	24635890 	addiu	v1,v1,22672
  4c05fc:	00621821 	addu	v1,v1,v0
  4c0600:	8fc2003c 	lw	v0,60(s8)
  4c0604:	00000000 	nop
  4c0608:	2442000c 	addiu	v0,v0,12
  4c060c:	90630000 	lbu	v1,0(v1)
  4c0610:	90420000 	lbu	v0,0(v0)
  4c0614:	00000000 	nop
  4c0618:	00621026 	xor	v0,v1,v0
  4c061c:	304200ff 	andi	v0,v0,0xff
  4c0620:	8f83804c 	lw	v1,-32692(gp)
  4c0624:	00000000 	nop
  4c0628:	24635890 	addiu	v1,v1,22672
  4c062c:	00621821 	addu	v1,v1,v0
  4c0630:	8fc2003c 	lw	v0,60(s8)
  4c0634:	00000000 	nop
  4c0638:	24420004 	addiu	v0,v0,4
  4c063c:	90630000 	lbu	v1,0(v1)
  4c0640:	90420000 	lbu	v0,0(v0)
  4c0644:	00000000 	nop
  4c0648:	00621026 	xor	v0,v1,v0
  4c064c:	304200ff 	andi	v0,v0,0xff
  4c0650:	00021080 	sll	v0,v0,0x2
  4c0654:	8f84804c 	lw	a0,-32692(gp)
  4c0658:	00000000 	nop
  4c065c:	24845a90 	addiu	a0,a0,23184
  4c0660:	00822021 	addu	a0,a0,v0
  4c0664:	8fc2003c 	lw	v0,60(s8)
  4c0668:	00000000 	nop
  4c066c:	24420015 	addiu	v0,v0,21
  4c0670:	90420000 	lbu	v0,0(v0)
  4c0674:	00000000 	nop
  4c0678:	384200f3 	xori	v0,v0,0xf3
  4c067c:	304200ff 	andi	v0,v0,0xff
  4c0680:	8f83804c 	lw	v1,-32692(gp)
  4c0684:	00000000 	nop
  4c0688:	24635990 	addiu	v1,v1,22928
  4c068c:	00621821 	addu	v1,v1,v0
  4c0690:	8fc2003c 	lw	v0,60(s8)
  4c0694:	00000000 	nop
  4c0698:	2442000d 	addiu	v0,v0,13
  4c069c:	90630000 	lbu	v1,0(v1)
  4c06a0:	90420000 	lbu	v0,0(v0)
  4c06a4:	00000000 	nop
  4c06a8:	00621026 	xor	v0,v1,v0
  4c06ac:	304200ff 	andi	v0,v0,0xff
  4c06b0:	8f83804c 	lw	v1,-32692(gp)
  4c06b4:	00000000 	nop
  4c06b8:	24635890 	addiu	v1,v1,22672
  4c06bc:	00621821 	addu	v1,v1,v0
  4c06c0:	8fc2003c 	lw	v0,60(s8)
  4c06c4:	00000000 	nop
  4c06c8:	24420005 	addiu	v0,v0,5
  4c06cc:	90630000 	lbu	v1,0(v1)
  4c06d0:	90420000 	lbu	v0,0(v0)
  4c06d4:	00000000 	nop
  4c06d8:	00621026 	xor	v0,v1,v0
  4c06dc:	304200ff 	andi	v0,v0,0xff
  4c06e0:	00021080 	sll	v0,v0,0x2
  4c06e4:	24420400 	addiu	v0,v0,1024
  4c06e8:	8f81804c 	lw	at,-32692(gp)
  4c06ec:	00000000 	nop
  4c06f0:	24215a90 	addiu	at,at,23184
  4c06f4:	00221021 	addu	v0,at,v0
  4c06f8:	8c830000 	lw	v1,0(a0)
  4c06fc:	8c420000 	lw	v0,0(v0)
  4c0700:	00000000 	nop
  4c0704:	00622026 	xor	a0,v1,v0
  4c0708:	8fc2003c 	lw	v0,60(s8)
  4c070c:	00000000 	nop
  4c0710:	24420016 	addiu	v0,v0,22
  4c0714:	90420000 	lbu	v0,0(v0)
  4c0718:	00000000 	nop
  4c071c:	38420067 	xori	v0,v0,0x67
  4c0720:	304200ff 	andi	v0,v0,0xff
  4c0724:	8f83804c 	lw	v1,-32692(gp)
  4c0728:	00000000 	nop
  4c072c:	24635890 	addiu	v1,v1,22672
  4c0730:	00621821 	addu	v1,v1,v0
  4c0734:	8fc2003c 	lw	v0,60(s8)
  4c0738:	00000000 	nop
  4c073c:	2442000e 	addiu	v0,v0,14
  4c0740:	90630000 	lbu	v1,0(v1)
  4c0744:	90420000 	lbu	v0,0(v0)
  4c0748:	00000000 	nop
  4c074c:	00621026 	xor	v0,v1,v0
  4c0750:	304200ff 	andi	v0,v0,0xff
  4c0754:	8f83804c 	lw	v1,-32692(gp)
  4c0758:	00000000 	nop
  4c075c:	24635990 	addiu	v1,v1,22928
  4c0760:	00621821 	addu	v1,v1,v0
  4c0764:	8fc2003c 	lw	v0,60(s8)
  4c0768:	00000000 	nop
  4c076c:	24420006 	addiu	v0,v0,6
  4c0770:	90630000 	lbu	v1,0(v1)
  4c0774:	90420000 	lbu	v0,0(v0)
  4c0778:	00000000 	nop
  4c077c:	00621026 	xor	v0,v1,v0
  4c0780:	304200ff 	andi	v0,v0,0xff
  4c0784:	00021080 	sll	v0,v0,0x2
  4c0788:	24420800 	addiu	v0,v0,2048
  4c078c:	8f81804c 	lw	at,-32692(gp)
  4c0790:	00000000 	nop
  4c0794:	24215a90 	addiu	at,at,23184
  4c0798:	00221021 	addu	v0,at,v0
  4c079c:	8c420000 	lw	v0,0(v0)
  4c07a0:	00000000 	nop
  4c07a4:	00822026 	xor	a0,a0,v0
  4c07a8:	8fc2003c 	lw	v0,60(s8)
  4c07ac:	00000000 	nop
  4c07b0:	24420017 	addiu	v0,v0,23
  4c07b4:	90420000 	lbu	v0,0(v0)
  4c07b8:	00000000 	nop
  4c07bc:	38420067 	xori	v0,v0,0x67
  4c07c0:	304200ff 	andi	v0,v0,0xff
  4c07c4:	8f83804c 	lw	v1,-32692(gp)
  4c07c8:	00000000 	nop
  4c07cc:	24635990 	addiu	v1,v1,22928
  4c07d0:	00621821 	addu	v1,v1,v0
  4c07d4:	8fc2003c 	lw	v0,60(s8)
  4c07d8:	00000000 	nop
  4c07dc:	2442000f 	addiu	v0,v0,15
  4c07e0:	90630000 	lbu	v1,0(v1)
  4c07e4:	90420000 	lbu	v0,0(v0)
  4c07e8:	00000000 	nop
  4c07ec:	00621026 	xor	v0,v1,v0
  4c07f0:	304200ff 	andi	v0,v0,0xff
  4c07f4:	8f83804c 	lw	v1,-32692(gp)
  4c07f8:	00000000 	nop
  4c07fc:	24635990 	addiu	v1,v1,22928
  4c0800:	00621821 	addu	v1,v1,v0
  4c0804:	8fc2003c 	lw	v0,60(s8)
  4c0808:	00000000 	nop
  4c080c:	24420007 	addiu	v0,v0,7
  4c0810:	90630000 	lbu	v1,0(v1)
  4c0814:	90420000 	lbu	v0,0(v0)
  4c0818:	00000000 	nop
  4c081c:	00621026 	xor	v0,v1,v0
  4c0820:	304200ff 	andi	v0,v0,0xff
  4c0824:	00021080 	sll	v0,v0,0x2
  4c0828:	24420c00 	addiu	v0,v0,3072
  4c082c:	8f81804c 	lw	at,-32692(gp)
  4c0830:	00000000 	nop
  4c0834:	24215a90 	addiu	at,at,23184
  4c0838:	00221021 	addu	v0,at,v0
  4c083c:	8c420000 	lw	v0,0(v0)
  4c0840:	00000000 	nop
  4c0844:	00821026 	xor	v0,a0,v0
  4c0848:	afc20018 	sw	v0,24(s8)
  4c084c:	8fc20018 	lw	v0,24(s8)
  4c0850:	00000000 	nop
  4c0854:	00021a00 	sll	v1,v0,0x8
  4c0858:	00021602 	srl	v0,v0,0x18
  4c085c:	00621025 	or	v0,v1,v0
  4c0860:	afc20018 	sw	v0,24(s8)
  4c0864:	8fc30014 	lw	v1,20(s8)
  4c0868:	8fc20018 	lw	v0,24(s8)
  4c086c:	00000000 	nop
  4c0870:	00621021 	addu	v0,v1,v0
  4c0874:	afc20014 	sw	v0,20(s8)
  4c0878:	8fc30018 	lw	v1,24(s8)
  4c087c:	8fc20014 	lw	v0,20(s8)
  4c0880:	00000000 	nop
  4c0884:	00621021 	addu	v0,v1,v0
  4c0888:	afc20018 	sw	v0,24(s8)
  4c088c:	8fc30014 	lw	v1,20(s8)
  4c0890:	8fc20038 	lw	v0,56(s8)
  4c0894:	00000000 	nop
  4c0898:	ac431000 	sw	v1,4096(v0)
  4c089c:	8fc20018 	lw	v0,24(s8)
  4c08a0:	00000000 	nop
  4c08a4:	00021a40 	sll	v1,v0,0x9
  4c08a8:	000215c2 	srl	v0,v0,0x17
  4c08ac:	00621825 	or	v1,v1,v0
  4c08b0:	8fc20038 	lw	v0,56(s8)
  4c08b4:	00000000 	nop
  4c08b8:	ac431004 	sw	v1,4100(v0)
		CALC_K192 (w, 2, 0xB3, 0xC6, 0xE8, 0xF4);
  4c08bc:	8fc2003c 	lw	v0,60(s8)
  4c08c0:	00000000 	nop
  4c08c4:	24420010 	addiu	v0,v0,16
  4c08c8:	90420000 	lbu	v0,0(v0)
  4c08cc:	00000000 	nop
  4c08d0:	384200c6 	xori	v0,v0,0xc6
  4c08d4:	304200ff 	andi	v0,v0,0xff
  4c08d8:	8f83804c 	lw	v1,-32692(gp)
  4c08dc:	00000000 	nop
  4c08e0:	24635890 	addiu	v1,v1,22672
  4c08e4:	00621821 	addu	v1,v1,v0
  4c08e8:	8fc2003c 	lw	v0,60(s8)
  4c08ec:	00000000 	nop
  4c08f0:	24420008 	addiu	v0,v0,8
  4c08f4:	90630000 	lbu	v1,0(v1)
  4c08f8:	90420000 	lbu	v0,0(v0)
  4c08fc:	00000000 	nop
  4c0900:	00621026 	xor	v0,v1,v0
  4c0904:	304200ff 	andi	v0,v0,0xff
  4c0908:	8f81804c 	lw	at,-32692(gp)
  4c090c:	00000000 	nop
  4c0910:	24215890 	addiu	at,at,22672
  4c0914:	00221021 	addu	v0,at,v0
  4c0918:	90430000 	lbu	v1,0(v0)
  4c091c:	8fc2003c 	lw	v0,60(s8)
  4c0920:	00000000 	nop
  4c0924:	90420000 	lbu	v0,0(v0)
  4c0928:	00000000 	nop
  4c092c:	00621026 	xor	v0,v1,v0
  4c0930:	304200ff 	andi	v0,v0,0xff
  4c0934:	00021080 	sll	v0,v0,0x2
  4c0938:	8f84804c 	lw	a0,-32692(gp)
  4c093c:	00000000 	nop
  4c0940:	24845a90 	addiu	a0,a0,23184
  4c0944:	00822021 	addu	a0,a0,v0
  4c0948:	8fc2003c 	lw	v0,60(s8)
  4c094c:	00000000 	nop
  4c0950:	24420011 	addiu	v0,v0,17
  4c0954:	90420000 	lbu	v0,0(v0)
  4c0958:	00000000 	nop
  4c095c:	384200c6 	xori	v0,v0,0xc6
  4c0960:	304200ff 	andi	v0,v0,0xff
  4c0964:	8f83804c 	lw	v1,-32692(gp)
  4c0968:	00000000 	nop
  4c096c:	24635990 	addiu	v1,v1,22928
  4c0970:	00621821 	addu	v1,v1,v0
  4c0974:	8fc2003c 	lw	v0,60(s8)
  4c0978:	00000000 	nop
  4c097c:	24420009 	addiu	v0,v0,9
  4c0980:	90630000 	lbu	v1,0(v1)
  4c0984:	90420000 	lbu	v0,0(v0)
  4c0988:	00000000 	nop
  4c098c:	00621026 	xor	v0,v1,v0
  4c0990:	304200ff 	andi	v0,v0,0xff
  4c0994:	8f83804c 	lw	v1,-32692(gp)
  4c0998:	00000000 	nop
  4c099c:	24635890 	addiu	v1,v1,22672
  4c09a0:	00621821 	addu	v1,v1,v0
  4c09a4:	8fc2003c 	lw	v0,60(s8)
  4c09a8:	00000000 	nop
  4c09ac:	24420001 	addiu	v0,v0,1
  4c09b0:	90630000 	lbu	v1,0(v1)
  4c09b4:	90420000 	lbu	v0,0(v0)
  4c09b8:	00000000 	nop
  4c09bc:	00621026 	xor	v0,v1,v0
  4c09c0:	304200ff 	andi	v0,v0,0xff
  4c09c4:	00021080 	sll	v0,v0,0x2
  4c09c8:	24420400 	addiu	v0,v0,1024
  4c09cc:	8f81804c 	lw	at,-32692(gp)
  4c09d0:	00000000 	nop
  4c09d4:	24215a90 	addiu	at,at,23184
  4c09d8:	00221021 	addu	v0,at,v0
  4c09dc:	8c830000 	lw	v1,0(a0)
  4c09e0:	8c420000 	lw	v0,0(v0)
  4c09e4:	00000000 	nop
  4c09e8:	00622026 	xor	a0,v1,v0
  4c09ec:	8fc2003c 	lw	v0,60(s8)
  4c09f0:	00000000 	nop
  4c09f4:	24420012 	addiu	v0,v0,18
  4c09f8:	90420000 	lbu	v0,0(v0)
  4c09fc:	00000000 	nop
  4c0a00:	384200b3 	xori	v0,v0,0xb3
  4c0a04:	304200ff 	andi	v0,v0,0xff
  4c0a08:	8f83804c 	lw	v1,-32692(gp)
  4c0a0c:	00000000 	nop
  4c0a10:	24635890 	addiu	v1,v1,22672
  4c0a14:	00621821 	addu	v1,v1,v0
  4c0a18:	8fc2003c 	lw	v0,60(s8)
  4c0a1c:	00000000 	nop
  4c0a20:	2442000a 	addiu	v0,v0,10
  4c0a24:	90630000 	lbu	v1,0(v1)
  4c0a28:	90420000 	lbu	v0,0(v0)
  4c0a2c:	00000000 	nop
  4c0a30:	00621026 	xor	v0,v1,v0
  4c0a34:	304200ff 	andi	v0,v0,0xff
  4c0a38:	8f83804c 	lw	v1,-32692(gp)
  4c0a3c:	00000000 	nop
  4c0a40:	24635990 	addiu	v1,v1,22928
  4c0a44:	00621821 	addu	v1,v1,v0
  4c0a48:	8fc2003c 	lw	v0,60(s8)
  4c0a4c:	00000000 	nop
  4c0a50:	24420002 	addiu	v0,v0,2
  4c0a54:	90630000 	lbu	v1,0(v1)
  4c0a58:	90420000 	lbu	v0,0(v0)
  4c0a5c:	00000000 	nop
  4c0a60:	00621026 	xor	v0,v1,v0
  4c0a64:	304200ff 	andi	v0,v0,0xff
  4c0a68:	00021080 	sll	v0,v0,0x2
  4c0a6c:	24420800 	addiu	v0,v0,2048
  4c0a70:	8f81804c 	lw	at,-32692(gp)
  4c0a74:	00000000 	nop
  4c0a78:	24215a90 	addiu	at,at,23184
  4c0a7c:	00221021 	addu	v0,at,v0
  4c0a80:	8c420000 	lw	v0,0(v0)
  4c0a84:	00000000 	nop
  4c0a88:	00822026 	xor	a0,a0,v0
  4c0a8c:	8fc2003c 	lw	v0,60(s8)
  4c0a90:	00000000 	nop
  4c0a94:	24420013 	addiu	v0,v0,19
  4c0a98:	90420000 	lbu	v0,0(v0)
  4c0a9c:	00000000 	nop
  4c0aa0:	384200b3 	xori	v0,v0,0xb3
  4c0aa4:	304200ff 	andi	v0,v0,0xff
  4c0aa8:	8f83804c 	lw	v1,-32692(gp)
  4c0aac:	00000000 	nop
  4c0ab0:	24635990 	addiu	v1,v1,22928
  4c0ab4:	00621821 	addu	v1,v1,v0
  4c0ab8:	8fc2003c 	lw	v0,60(s8)
  4c0abc:	00000000 	nop
  4c0ac0:	2442000b 	addiu	v0,v0,11
  4c0ac4:	90630000 	lbu	v1,0(v1)
  4c0ac8:	90420000 	lbu	v0,0(v0)
  4c0acc:	00000000 	nop
  4c0ad0:	00621026 	xor	v0,v1,v0
  4c0ad4:	304200ff 	andi	v0,v0,0xff
  4c0ad8:	8f83804c 	lw	v1,-32692(gp)
  4c0adc:	00000000 	nop
  4c0ae0:	24635990 	addiu	v1,v1,22928
  4c0ae4:	00621821 	addu	v1,v1,v0
  4c0ae8:	8fc2003c 	lw	v0,60(s8)
  4c0aec:	00000000 	nop
  4c0af0:	24420003 	addiu	v0,v0,3
  4c0af4:	90630000 	lbu	v1,0(v1)
  4c0af8:	90420000 	lbu	v0,0(v0)
  4c0afc:	00000000 	nop
  4c0b00:	00621026 	xor	v0,v1,v0
  4c0b04:	304200ff 	andi	v0,v0,0xff
  4c0b08:	00021080 	sll	v0,v0,0x2
  4c0b0c:	24420c00 	addiu	v0,v0,3072
  4c0b10:	8f81804c 	lw	at,-32692(gp)
  4c0b14:	00000000 	nop
  4c0b18:	24215a90 	addiu	at,at,23184
  4c0b1c:	00221021 	addu	v0,at,v0
  4c0b20:	8c420000 	lw	v0,0(v0)
  4c0b24:	00000000 	nop
  4c0b28:	00821026 	xor	v0,a0,v0
  4c0b2c:	afc20014 	sw	v0,20(s8)
  4c0b30:	8fc2003c 	lw	v0,60(s8)
  4c0b34:	00000000 	nop
  4c0b38:	24420014 	addiu	v0,v0,20
  4c0b3c:	90420000 	lbu	v0,0(v0)
  4c0b40:	00000000 	nop
  4c0b44:	384200f4 	xori	v0,v0,0xf4
  4c0b48:	304200ff 	andi	v0,v0,0xff
  4c0b4c:	8f83804c 	lw	v1,-32692(gp)
  4c0b50:	00000000 	nop
  4c0b54:	24635890 	addiu	v1,v1,22672
  4c0b58:	00621821 	addu	v1,v1,v0
  4c0b5c:	8fc2003c 	lw	v0,60(s8)
  4c0b60:	00000000 	nop
  4c0b64:	2442000c 	addiu	v0,v0,12
  4c0b68:	90630000 	lbu	v1,0(v1)
  4c0b6c:	90420000 	lbu	v0,0(v0)
  4c0b70:	00000000 	nop
  4c0b74:	00621026 	xor	v0,v1,v0
  4c0b78:	304200ff 	andi	v0,v0,0xff
  4c0b7c:	8f83804c 	lw	v1,-32692(gp)
  4c0b80:	00000000 	nop
  4c0b84:	24635890 	addiu	v1,v1,22672
  4c0b88:	00621821 	addu	v1,v1,v0
  4c0b8c:	8fc2003c 	lw	v0,60(s8)
  4c0b90:	00000000 	nop
  4c0b94:	24420004 	addiu	v0,v0,4
  4c0b98:	90630000 	lbu	v1,0(v1)
  4c0b9c:	90420000 	lbu	v0,0(v0)
  4c0ba0:	00000000 	nop
  4c0ba4:	00621026 	xor	v0,v1,v0
  4c0ba8:	304200ff 	andi	v0,v0,0xff
  4c0bac:	00021080 	sll	v0,v0,0x2
  4c0bb0:	8f84804c 	lw	a0,-32692(gp)
  4c0bb4:	00000000 	nop
  4c0bb8:	24845a90 	addiu	a0,a0,23184
  4c0bbc:	00822021 	addu	a0,a0,v0
  4c0bc0:	8fc2003c 	lw	v0,60(s8)
  4c0bc4:	00000000 	nop
  4c0bc8:	24420015 	addiu	v0,v0,21
  4c0bcc:	90420000 	lbu	v0,0(v0)
  4c0bd0:	00000000 	nop
  4c0bd4:	384200f4 	xori	v0,v0,0xf4
  4c0bd8:	304200ff 	andi	v0,v0,0xff
  4c0bdc:	8f83804c 	lw	v1,-32692(gp)
  4c0be0:	00000000 	nop
  4c0be4:	24635990 	addiu	v1,v1,22928
  4c0be8:	00621821 	addu	v1,v1,v0
  4c0bec:	8fc2003c 	lw	v0,60(s8)
  4c0bf0:	00000000 	nop
  4c0bf4:	2442000d 	addiu	v0,v0,13
  4c0bf8:	90630000 	lbu	v1,0(v1)
  4c0bfc:	90420000 	lbu	v0,0(v0)
  4c0c00:	00000000 	nop
  4c0c04:	00621026 	xor	v0,v1,v0
  4c0c08:	304200ff 	andi	v0,v0,0xff
  4c0c0c:	8f83804c 	lw	v1,-32692(gp)
  4c0c10:	00000000 	nop
  4c0c14:	24635890 	addiu	v1,v1,22672
  4c0c18:	00621821 	addu	v1,v1,v0
  4c0c1c:	8fc2003c 	lw	v0,60(s8)
  4c0c20:	00000000 	nop
  4c0c24:	24420005 	addiu	v0,v0,5
  4c0c28:	90630000 	lbu	v1,0(v1)
  4c0c2c:	90420000 	lbu	v0,0(v0)
  4c0c30:	00000000 	nop
  4c0c34:	00621026 	xor	v0,v1,v0
  4c0c38:	304200ff 	andi	v0,v0,0xff
  4c0c3c:	00021080 	sll	v0,v0,0x2
  4c0c40:	24420400 	addiu	v0,v0,1024
  4c0c44:	8f81804c 	lw	at,-32692(gp)
  4c0c48:	00000000 	nop
  4c0c4c:	24215a90 	addiu	at,at,23184
  4c0c50:	00221021 	addu	v0,at,v0
  4c0c54:	8c830000 	lw	v1,0(a0)
  4c0c58:	8c420000 	lw	v0,0(v0)
  4c0c5c:	00000000 	nop
  4c0c60:	00622026 	xor	a0,v1,v0
  4c0c64:	8fc2003c 	lw	v0,60(s8)
  4c0c68:	00000000 	nop
  4c0c6c:	24420016 	addiu	v0,v0,22
  4c0c70:	90420000 	lbu	v0,0(v0)
  4c0c74:	00000000 	nop
  4c0c78:	384200e8 	xori	v0,v0,0xe8
  4c0c7c:	304200ff 	andi	v0,v0,0xff
  4c0c80:	8f83804c 	lw	v1,-32692(gp)
  4c0c84:	00000000 	nop
  4c0c88:	24635890 	addiu	v1,v1,22672
  4c0c8c:	00621821 	addu	v1,v1,v0
  4c0c90:	8fc2003c 	lw	v0,60(s8)
  4c0c94:	00000000 	nop
  4c0c98:	2442000e 	addiu	v0,v0,14
  4c0c9c:	90630000 	lbu	v1,0(v1)
  4c0ca0:	90420000 	lbu	v0,0(v0)
  4c0ca4:	00000000 	nop
  4c0ca8:	00621026 	xor	v0,v1,v0
  4c0cac:	304200ff 	andi	v0,v0,0xff
  4c0cb0:	8f83804c 	lw	v1,-32692(gp)
  4c0cb4:	00000000 	nop
  4c0cb8:	24635990 	addiu	v1,v1,22928
  4c0cbc:	00621821 	addu	v1,v1,v0
  4c0cc0:	8fc2003c 	lw	v0,60(s8)
  4c0cc4:	00000000 	nop
  4c0cc8:	24420006 	addiu	v0,v0,6
  4c0ccc:	90630000 	lbu	v1,0(v1)
  4c0cd0:	90420000 	lbu	v0,0(v0)
  4c0cd4:	00000000 	nop
  4c0cd8:	00621026 	xor	v0,v1,v0
  4c0cdc:	304200ff 	andi	v0,v0,0xff
  4c0ce0:	00021080 	sll	v0,v0,0x2
  4c0ce4:	24420800 	addiu	v0,v0,2048
  4c0ce8:	8f81804c 	lw	at,-32692(gp)
  4c0cec:	00000000 	nop
  4c0cf0:	24215a90 	addiu	at,at,23184
  4c0cf4:	00221021 	addu	v0,at,v0
  4c0cf8:	8c420000 	lw	v0,0(v0)
  4c0cfc:	00000000 	nop
  4c0d00:	00822026 	xor	a0,a0,v0
  4c0d04:	8fc2003c 	lw	v0,60(s8)
  4c0d08:	00000000 	nop
  4c0d0c:	24420017 	addiu	v0,v0,23
  4c0d10:	90420000 	lbu	v0,0(v0)
  4c0d14:	00000000 	nop
  4c0d18:	384200e8 	xori	v0,v0,0xe8
  4c0d1c:	304200ff 	andi	v0,v0,0xff
  4c0d20:	8f83804c 	lw	v1,-32692(gp)
  4c0d24:	00000000 	nop
  4c0d28:	24635990 	addiu	v1,v1,22928
  4c0d2c:	00621821 	addu	v1,v1,v0
  4c0d30:	8fc2003c 	lw	v0,60(s8)
  4c0d34:	00000000 	nop
  4c0d38:	2442000f 	addiu	v0,v0,15
  4c0d3c:	90630000 	lbu	v1,0(v1)
  4c0d40:	90420000 	lbu	v0,0(v0)
  4c0d44:	00000000 	nop
  4c0d48:	00621026 	xor	v0,v1,v0
  4c0d4c:	304200ff 	andi	v0,v0,0xff
  4c0d50:	8f83804c 	lw	v1,-32692(gp)
  4c0d54:	00000000 	nop
  4c0d58:	24635990 	addiu	v1,v1,22928
  4c0d5c:	00621821 	addu	v1,v1,v0
  4c0d60:	8fc2003c 	lw	v0,60(s8)
  4c0d64:	00000000 	nop
  4c0d68:	24420007 	addiu	v0,v0,7
  4c0d6c:	90630000 	lbu	v1,0(v1)
  4c0d70:	90420000 	lbu	v0,0(v0)
  4c0d74:	00000000 	nop
  4c0d78:	00621026 	xor	v0,v1,v0
  4c0d7c:	304200ff 	andi	v0,v0,0xff
  4c0d80:	00021080 	sll	v0,v0,0x2
  4c0d84:	24420c00 	addiu	v0,v0,3072
  4c0d88:	8f81804c 	lw	at,-32692(gp)
  4c0d8c:	00000000 	nop
  4c0d90:	24215a90 	addiu	at,at,23184
  4c0d94:	00221021 	addu	v0,at,v0
  4c0d98:	8c420000 	lw	v0,0(v0)
  4c0d9c:	00000000 	nop
  4c0da0:	00821026 	xor	v0,a0,v0
  4c0da4:	afc20018 	sw	v0,24(s8)
  4c0da8:	8fc20018 	lw	v0,24(s8)
  4c0dac:	00000000 	nop
  4c0db0:	00021a00 	sll	v1,v0,0x8
  4c0db4:	00021602 	srl	v0,v0,0x18
  4c0db8:	00621025 	or	v0,v1,v0
  4c0dbc:	afc20018 	sw	v0,24(s8)
  4c0dc0:	8fc30014 	lw	v1,20(s8)
  4c0dc4:	8fc20018 	lw	v0,24(s8)
  4c0dc8:	00000000 	nop
  4c0dcc:	00621021 	addu	v0,v1,v0
  4c0dd0:	afc20014 	sw	v0,20(s8)
  4c0dd4:	8fc30018 	lw	v1,24(s8)
  4c0dd8:	8fc20014 	lw	v0,20(s8)
  4c0ddc:	00000000 	nop
  4c0de0:	00621021 	addu	v0,v1,v0
  4c0de4:	afc20018 	sw	v0,24(s8)
  4c0de8:	8fc30014 	lw	v1,20(s8)
  4c0dec:	8fc20038 	lw	v0,56(s8)
  4c0df0:	00000000 	nop
  4c0df4:	ac431008 	sw	v1,4104(v0)
  4c0df8:	8fc20018 	lw	v0,24(s8)
  4c0dfc:	00000000 	nop
  4c0e00:	00021a40 	sll	v1,v0,0x9
  4c0e04:	000215c2 	srl	v0,v0,0x17
  4c0e08:	00621825 	or	v1,v1,v0
  4c0e0c:	8fc20038 	lw	v0,56(s8)
  4c0e10:	00000000 	nop
  4c0e14:	ac43100c 	sw	v1,4108(v0)
		CALC_K192 (w, 4, 0x04, 0xDB, 0xFD, 0x7B);
  4c0e18:	8fc2003c 	lw	v0,60(s8)
  4c0e1c:	00000000 	nop
  4c0e20:	24420010 	addiu	v0,v0,16
  4c0e24:	90420000 	lbu	v0,0(v0)
  4c0e28:	00000000 	nop
  4c0e2c:	384200db 	xori	v0,v0,0xdb
  4c0e30:	304200ff 	andi	v0,v0,0xff
  4c0e34:	8f83804c 	lw	v1,-32692(gp)
  4c0e38:	00000000 	nop
  4c0e3c:	24635890 	addiu	v1,v1,22672
  4c0e40:	00621821 	addu	v1,v1,v0
  4c0e44:	8fc2003c 	lw	v0,60(s8)
  4c0e48:	00000000 	nop
  4c0e4c:	24420008 	addiu	v0,v0,8
  4c0e50:	90630000 	lbu	v1,0(v1)
  4c0e54:	90420000 	lbu	v0,0(v0)
  4c0e58:	00000000 	nop
  4c0e5c:	00621026 	xor	v0,v1,v0
  4c0e60:	304200ff 	andi	v0,v0,0xff
  4c0e64:	8f81804c 	lw	at,-32692(gp)
  4c0e68:	00000000 	nop
  4c0e6c:	24215890 	addiu	at,at,22672
  4c0e70:	00221021 	addu	v0,at,v0
  4c0e74:	90430000 	lbu	v1,0(v0)
  4c0e78:	8fc2003c 	lw	v0,60(s8)
  4c0e7c:	00000000 	nop
  4c0e80:	90420000 	lbu	v0,0(v0)
  4c0e84:	00000000 	nop
  4c0e88:	00621026 	xor	v0,v1,v0
  4c0e8c:	304200ff 	andi	v0,v0,0xff
  4c0e90:	00021080 	sll	v0,v0,0x2
  4c0e94:	8f84804c 	lw	a0,-32692(gp)
  4c0e98:	00000000 	nop
  4c0e9c:	24845a90 	addiu	a0,a0,23184
  4c0ea0:	00822021 	addu	a0,a0,v0
  4c0ea4:	8fc2003c 	lw	v0,60(s8)
  4c0ea8:	00000000 	nop
  4c0eac:	24420011 	addiu	v0,v0,17
  4c0eb0:	90420000 	lbu	v0,0(v0)
  4c0eb4:	00000000 	nop
  4c0eb8:	384200db 	xori	v0,v0,0xdb
  4c0ebc:	304200ff 	andi	v0,v0,0xff
  4c0ec0:	8f83804c 	lw	v1,-32692(gp)
  4c0ec4:	00000000 	nop
  4c0ec8:	24635990 	addiu	v1,v1,22928
  4c0ecc:	00621821 	addu	v1,v1,v0
  4c0ed0:	8fc2003c 	lw	v0,60(s8)
  4c0ed4:	00000000 	nop
  4c0ed8:	24420009 	addiu	v0,v0,9
  4c0edc:	90630000 	lbu	v1,0(v1)
  4c0ee0:	90420000 	lbu	v0,0(v0)
  4c0ee4:	00000000 	nop
  4c0ee8:	00621026 	xor	v0,v1,v0
  4c0eec:	304200ff 	andi	v0,v0,0xff
  4c0ef0:	8f83804c 	lw	v1,-32692(gp)
  4c0ef4:	00000000 	nop
  4c0ef8:	24635890 	addiu	v1,v1,22672
  4c0efc:	00621821 	addu	v1,v1,v0
  4c0f00:	8fc2003c 	lw	v0,60(s8)
  4c0f04:	00000000 	nop
  4c0f08:	24420001 	addiu	v0,v0,1
  4c0f0c:	90630000 	lbu	v1,0(v1)
  4c0f10:	90420000 	lbu	v0,0(v0)
  4c0f14:	00000000 	nop
  4c0f18:	00621026 	xor	v0,v1,v0
  4c0f1c:	304200ff 	andi	v0,v0,0xff
  4c0f20:	00021080 	sll	v0,v0,0x2
  4c0f24:	24420400 	addiu	v0,v0,1024
  4c0f28:	8f81804c 	lw	at,-32692(gp)
  4c0f2c:	00000000 	nop
  4c0f30:	24215a90 	addiu	at,at,23184
  4c0f34:	00221021 	addu	v0,at,v0
  4c0f38:	8c830000 	lw	v1,0(a0)
  4c0f3c:	8c420000 	lw	v0,0(v0)
  4c0f40:	00000000 	nop
  4c0f44:	00622026 	xor	a0,v1,v0
  4c0f48:	8fc2003c 	lw	v0,60(s8)
  4c0f4c:	00000000 	nop
  4c0f50:	24420012 	addiu	v0,v0,18
  4c0f54:	90420000 	lbu	v0,0(v0)
  4c0f58:	00000000 	nop
  4c0f5c:	38420004 	xori	v0,v0,0x4
  4c0f60:	304200ff 	andi	v0,v0,0xff
  4c0f64:	8f83804c 	lw	v1,-32692(gp)
  4c0f68:	00000000 	nop
  4c0f6c:	24635890 	addiu	v1,v1,22672
  4c0f70:	00621821 	addu	v1,v1,v0
  4c0f74:	8fc2003c 	lw	v0,60(s8)
  4c0f78:	00000000 	nop
  4c0f7c:	2442000a 	addiu	v0,v0,10
  4c0f80:	90630000 	lbu	v1,0(v1)
  4c0f84:	90420000 	lbu	v0,0(v0)
  4c0f88:	00000000 	nop
  4c0f8c:	00621026 	xor	v0,v1,v0
  4c0f90:	304200ff 	andi	v0,v0,0xff
  4c0f94:	8f83804c 	lw	v1,-32692(gp)
  4c0f98:	00000000 	nop
  4c0f9c:	24635990 	addiu	v1,v1,22928
  4c0fa0:	00621821 	addu	v1,v1,v0
  4c0fa4:	8fc2003c 	lw	v0,60(s8)
  4c0fa8:	00000000 	nop
  4c0fac:	24420002 	addiu	v0,v0,2
  4c0fb0:	90630000 	lbu	v1,0(v1)
  4c0fb4:	90420000 	lbu	v0,0(v0)
  4c0fb8:	00000000 	nop
  4c0fbc:	00621026 	xor	v0,v1,v0
  4c0fc0:	304200ff 	andi	v0,v0,0xff
  4c0fc4:	00021080 	sll	v0,v0,0x2
  4c0fc8:	24420800 	addiu	v0,v0,2048
  4c0fcc:	8f81804c 	lw	at,-32692(gp)
  4c0fd0:	00000000 	nop
  4c0fd4:	24215a90 	addiu	at,at,23184
  4c0fd8:	00221021 	addu	v0,at,v0
  4c0fdc:	8c420000 	lw	v0,0(v0)
  4c0fe0:	00000000 	nop
  4c0fe4:	00822026 	xor	a0,a0,v0
  4c0fe8:	8fc2003c 	lw	v0,60(s8)
  4c0fec:	00000000 	nop
  4c0ff0:	24420013 	addiu	v0,v0,19
  4c0ff4:	90420000 	lbu	v0,0(v0)
  4c0ff8:	00000000 	nop
  4c0ffc:	38420004 	xori	v0,v0,0x4
  4c1000:	304200ff 	andi	v0,v0,0xff
  4c1004:	8f83804c 	lw	v1,-32692(gp)
  4c1008:	00000000 	nop
  4c100c:	24635990 	addiu	v1,v1,22928
  4c1010:	00621821 	addu	v1,v1,v0
  4c1014:	8fc2003c 	lw	v0,60(s8)
  4c1018:	00000000 	nop
  4c101c:	2442000b 	addiu	v0,v0,11
  4c1020:	90630000 	lbu	v1,0(v1)
  4c1024:	90420000 	lbu	v0,0(v0)
  4c1028:	00000000 	nop
  4c102c:	00621026 	xor	v0,v1,v0
  4c1030:	304200ff 	andi	v0,v0,0xff
  4c1034:	8f83804c 	lw	v1,-32692(gp)
  4c1038:	00000000 	nop
  4c103c:	24635990 	addiu	v1,v1,22928
  4c1040:	00621821 	addu	v1,v1,v0
  4c1044:	8fc2003c 	lw	v0,60(s8)
  4c1048:	00000000 	nop
  4c104c:	24420003 	addiu	v0,v0,3
  4c1050:	90630000 	lbu	v1,0(v1)
  4c1054:	90420000 	lbu	v0,0(v0)
  4c1058:	00000000 	nop
  4c105c:	00621026 	xor	v0,v1,v0
  4c1060:	304200ff 	andi	v0,v0,0xff
  4c1064:	00021080 	sll	v0,v0,0x2
  4c1068:	24420c00 	addiu	v0,v0,3072
  4c106c:	8f81804c 	lw	at,-32692(gp)
  4c1070:	00000000 	nop
  4c1074:	24215a90 	addiu	at,at,23184
  4c1078:	00221021 	addu	v0,at,v0
  4c107c:	8c420000 	lw	v0,0(v0)
  4c1080:	00000000 	nop
  4c1084:	00821026 	xor	v0,a0,v0
  4c1088:	afc20014 	sw	v0,20(s8)
  4c108c:	8fc2003c 	lw	v0,60(s8)
  4c1090:	00000000 	nop
  4c1094:	24420014 	addiu	v0,v0,20
  4c1098:	90420000 	lbu	v0,0(v0)
  4c109c:	00000000 	nop
  4c10a0:	3842007b 	xori	v0,v0,0x7b
  4c10a4:	304200ff 	andi	v0,v0,0xff
  4c10a8:	8f83804c 	lw	v1,-32692(gp)
  4c10ac:	00000000 	nop
  4c10b0:	24635890 	addiu	v1,v1,22672
  4c10b4:	00621821 	addu	v1,v1,v0
  4c10b8:	8fc2003c 	lw	v0,60(s8)
  4c10bc:	00000000 	nop
  4c10c0:	2442000c 	addiu	v0,v0,12
  4c10c4:	90630000 	lbu	v1,0(v1)
  4c10c8:	90420000 	lbu	v0,0(v0)
  4c10cc:	00000000 	nop
  4c10d0:	00621026 	xor	v0,v1,v0
  4c10d4:	304200ff 	andi	v0,v0,0xff
  4c10d8:	8f83804c 	lw	v1,-32692(gp)
  4c10dc:	00000000 	nop
  4c10e0:	24635890 	addiu	v1,v1,22672
  4c10e4:	00621821 	addu	v1,v1,v0
  4c10e8:	8fc2003c 	lw	v0,60(s8)
  4c10ec:	00000000 	nop
  4c10f0:	24420004 	addiu	v0,v0,4
  4c10f4:	90630000 	lbu	v1,0(v1)
  4c10f8:	90420000 	lbu	v0,0(v0)
  4c10fc:	00000000 	nop
  4c1100:	00621026 	xor	v0,v1,v0
  4c1104:	304200ff 	andi	v0,v0,0xff
  4c1108:	00021080 	sll	v0,v0,0x2
  4c110c:	8f84804c 	lw	a0,-32692(gp)
  4c1110:	00000000 	nop
  4c1114:	24845a90 	addiu	a0,a0,23184
  4c1118:	00822021 	addu	a0,a0,v0
  4c111c:	8fc2003c 	lw	v0,60(s8)
  4c1120:	00000000 	nop
  4c1124:	24420015 	addiu	v0,v0,21
  4c1128:	90420000 	lbu	v0,0(v0)
  4c112c:	00000000 	nop
  4c1130:	3842007b 	xori	v0,v0,0x7b
  4c1134:	304200ff 	andi	v0,v0,0xff
  4c1138:	8f83804c 	lw	v1,-32692(gp)
  4c113c:	00000000 	nop
  4c1140:	24635990 	addiu	v1,v1,22928
  4c1144:	00621821 	addu	v1,v1,v0
  4c1148:	8fc2003c 	lw	v0,60(s8)
  4c114c:	00000000 	nop
  4c1150:	2442000d 	addiu	v0,v0,13
  4c1154:	90630000 	lbu	v1,0(v1)
  4c1158:	90420000 	lbu	v0,0(v0)
  4c115c:	00000000 	nop
  4c1160:	00621026 	xor	v0,v1,v0
  4c1164:	304200ff 	andi	v0,v0,0xff
  4c1168:	8f83804c 	lw	v1,-32692(gp)
  4c116c:	00000000 	nop
  4c1170:	24635890 	addiu	v1,v1,22672
  4c1174:	00621821 	addu	v1,v1,v0
  4c1178:	8fc2003c 	lw	v0,60(s8)
  4c117c:	00000000 	nop
  4c1180:	24420005 	addiu	v0,v0,5
  4c1184:	90630000 	lbu	v1,0(v1)
  4c1188:	90420000 	lbu	v0,0(v0)
  4c118c:	00000000 	nop
  4c1190:	00621026 	xor	v0,v1,v0
  4c1194:	304200ff 	andi	v0,v0,0xff
  4c1198:	00021080 	sll	v0,v0,0x2
  4c119c:	24420400 	addiu	v0,v0,1024
  4c11a0:	8f81804c 	lw	at,-32692(gp)
  4c11a4:	00000000 	nop
  4c11a8:	24215a90 	addiu	at,at,23184
  4c11ac:	00221021 	addu	v0,at,v0
  4c11b0:	8c830000 	lw	v1,0(a0)
  4c11b4:	8c420000 	lw	v0,0(v0)
  4c11b8:	00000000 	nop
  4c11bc:	00622026 	xor	a0,v1,v0
  4c11c0:	8fc2003c 	lw	v0,60(s8)
  4c11c4:	00000000 	nop
  4c11c8:	24420016 	addiu	v0,v0,22
  4c11cc:	90420000 	lbu	v0,0(v0)
  4c11d0:	00000000 	nop
  4c11d4:	384200fd 	xori	v0,v0,0xfd
  4c11d8:	304200ff 	andi	v0,v0,0xff
  4c11dc:	8f83804c 	lw	v1,-32692(gp)
  4c11e0:	00000000 	nop
  4c11e4:	24635890 	addiu	v1,v1,22672
  4c11e8:	00621821 	addu	v1,v1,v0
  4c11ec:	8fc2003c 	lw	v0,60(s8)
  4c11f0:	00000000 	nop
  4c11f4:	2442000e 	addiu	v0,v0,14
  4c11f8:	90630000 	lbu	v1,0(v1)
  4c11fc:	90420000 	lbu	v0,0(v0)
  4c1200:	00000000 	nop
  4c1204:	00621026 	xor	v0,v1,v0
  4c1208:	304200ff 	andi	v0,v0,0xff
  4c120c:	8f83804c 	lw	v1,-32692(gp)
  4c1210:	00000000 	nop
  4c1214:	24635990 	addiu	v1,v1,22928
  4c1218:	00621821 	addu	v1,v1,v0
  4c121c:	8fc2003c 	lw	v0,60(s8)
  4c1220:	00000000 	nop
  4c1224:	24420006 	addiu	v0,v0,6
  4c1228:	90630000 	lbu	v1,0(v1)
  4c122c:	90420000 	lbu	v0,0(v0)
  4c1230:	00000000 	nop
  4c1234:	00621026 	xor	v0,v1,v0
  4c1238:	304200ff 	andi	v0,v0,0xff
  4c123c:	00021080 	sll	v0,v0,0x2
  4c1240:	24420800 	addiu	v0,v0,2048
  4c1244:	8f81804c 	lw	at,-32692(gp)
  4c1248:	00000000 	nop
  4c124c:	24215a90 	addiu	at,at,23184
  4c1250:	00221021 	addu	v0,at,v0
  4c1254:	8c420000 	lw	v0,0(v0)
  4c1258:	00000000 	nop
  4c125c:	00822026 	xor	a0,a0,v0
  4c1260:	8fc2003c 	lw	v0,60(s8)
  4c1264:	00000000 	nop
  4c1268:	24420017 	addiu	v0,v0,23
  4c126c:	90420000 	lbu	v0,0(v0)
  4c1270:	00000000 	nop
  4c1274:	384200fd 	xori	v0,v0,0xfd
  4c1278:	304200ff 	andi	v0,v0,0xff
  4c127c:	8f83804c 	lw	v1,-32692(gp)
  4c1280:	00000000 	nop
  4c1284:	24635990 	addiu	v1,v1,22928
  4c1288:	00621821 	addu	v1,v1,v0
  4c128c:	8fc2003c 	lw	v0,60(s8)
  4c1290:	00000000 	nop
  4c1294:	2442000f 	addiu	v0,v0,15
  4c1298:	90630000 	lbu	v1,0(v1)
  4c129c:	90420000 	lbu	v0,0(v0)
  4c12a0:	00000000 	nop
  4c12a4:	00621026 	xor	v0,v1,v0
  4c12a8:	304200ff 	andi	v0,v0,0xff
  4c12ac:	8f83804c 	lw	v1,-32692(gp)
  4c12b0:	00000000 	nop
  4c12b4:	24635990 	addiu	v1,v1,22928
  4c12b8:	00621821 	addu	v1,v1,v0
  4c12bc:	8fc2003c 	lw	v0,60(s8)
  4c12c0:	00000000 	nop
  4c12c4:	24420007 	addiu	v0,v0,7
  4c12c8:	90630000 	lbu	v1,0(v1)
  4c12cc:	90420000 	lbu	v0,0(v0)
  4c12d0:	00000000 	nop
  4c12d4:	00621026 	xor	v0,v1,v0
  4c12d8:	304200ff 	andi	v0,v0,0xff
  4c12dc:	00021080 	sll	v0,v0,0x2
  4c12e0:	24420c00 	addiu	v0,v0,3072
  4c12e4:	8f81804c 	lw	at,-32692(gp)
  4c12e8:	00000000 	nop
  4c12ec:	24215a90 	addiu	at,at,23184
  4c12f0:	00221021 	addu	v0,at,v0
  4c12f4:	8c420000 	lw	v0,0(v0)
  4c12f8:	00000000 	nop
  4c12fc:	00821026 	xor	v0,a0,v0
  4c1300:	afc20018 	sw	v0,24(s8)
  4c1304:	8fc20018 	lw	v0,24(s8)
  4c1308:	00000000 	nop
  4c130c:	00021a00 	sll	v1,v0,0x8
  4c1310:	00021602 	srl	v0,v0,0x18
  4c1314:	00621025 	or	v0,v1,v0
  4c1318:	afc20018 	sw	v0,24(s8)
  4c131c:	8fc30014 	lw	v1,20(s8)
  4c1320:	8fc20018 	lw	v0,24(s8)
  4c1324:	00000000 	nop
  4c1328:	00621021 	addu	v0,v1,v0
  4c132c:	afc20014 	sw	v0,20(s8)
  4c1330:	8fc30018 	lw	v1,24(s8)
  4c1334:	8fc20014 	lw	v0,20(s8)
  4c1338:	00000000 	nop
  4c133c:	00621021 	addu	v0,v1,v0
  4c1340:	afc20018 	sw	v0,24(s8)
  4c1344:	8fc30014 	lw	v1,20(s8)
  4c1348:	8fc20038 	lw	v0,56(s8)
  4c134c:	00000000 	nop
  4c1350:	ac431010 	sw	v1,4112(v0)
  4c1354:	8fc20018 	lw	v0,24(s8)
  4c1358:	00000000 	nop
  4c135c:	00021a40 	sll	v1,v0,0x9
  4c1360:	000215c2 	srl	v0,v0,0x17
  4c1364:	00621825 	or	v1,v1,v0
  4c1368:	8fc20038 	lw	v0,56(s8)
  4c136c:	00000000 	nop
  4c1370:	ac431014 	sw	v1,4116(v0)
		CALC_K192 (w, 6, 0xA3, 0xFB, 0x76, 0xC8);
  4c1374:	8fc2003c 	lw	v0,60(s8)
  4c1378:	00000000 	nop
  4c137c:	24420010 	addiu	v0,v0,16
  4c1380:	90420000 	lbu	v0,0(v0)
  4c1384:	00000000 	nop
  4c1388:	384200fb 	xori	v0,v0,0xfb
  4c138c:	304200ff 	andi	v0,v0,0xff
  4c1390:	8f83804c 	lw	v1,-32692(gp)
  4c1394:	00000000 	nop
  4c1398:	24635890 	addiu	v1,v1,22672
  4c139c:	00621821 	addu	v1,v1,v0
  4c13a0:	8fc2003c 	lw	v0,60(s8)
  4c13a4:	00000000 	nop
  4c13a8:	24420008 	addiu	v0,v0,8
  4c13ac:	90630000 	lbu	v1,0(v1)
  4c13b0:	90420000 	lbu	v0,0(v0)
  4c13b4:	00000000 	nop
  4c13b8:	00621026 	xor	v0,v1,v0
  4c13bc:	304200ff 	andi	v0,v0,0xff
  4c13c0:	8f81804c 	lw	at,-32692(gp)
  4c13c4:	00000000 	nop
  4c13c8:	24215890 	addiu	at,at,22672
  4c13cc:	00221021 	addu	v0,at,v0
  4c13d0:	90430000 	lbu	v1,0(v0)
  4c13d4:	8fc2003c 	lw	v0,60(s8)
  4c13d8:	00000000 	nop
  4c13dc:	90420000 	lbu	v0,0(v0)
  4c13e0:	00000000 	nop
  4c13e4:	00621026 	xor	v0,v1,v0
  4c13e8:	304200ff 	andi	v0,v0,0xff
  4c13ec:	00021080 	sll	v0,v0,0x2
  4c13f0:	8f84804c 	lw	a0,-32692(gp)
  4c13f4:	00000000 	nop
  4c13f8:	24845a90 	addiu	a0,a0,23184
  4c13fc:	00822021 	addu	a0,a0,v0
  4c1400:	8fc2003c 	lw	v0,60(s8)
  4c1404:	00000000 	nop
  4c1408:	24420011 	addiu	v0,v0,17
  4c140c:	90420000 	lbu	v0,0(v0)
  4c1410:	00000000 	nop
  4c1414:	384200fb 	xori	v0,v0,0xfb
  4c1418:	304200ff 	andi	v0,v0,0xff
  4c141c:	8f83804c 	lw	v1,-32692(gp)
  4c1420:	00000000 	nop
  4c1424:	24635990 	addiu	v1,v1,22928
  4c1428:	00621821 	addu	v1,v1,v0
  4c142c:	8fc2003c 	lw	v0,60(s8)
  4c1430:	00000000 	nop
  4c1434:	24420009 	addiu	v0,v0,9
  4c1438:	90630000 	lbu	v1,0(v1)
  4c143c:	90420000 	lbu	v0,0(v0)
  4c1440:	00000000 	nop
  4c1444:	00621026 	xor	v0,v1,v0
  4c1448:	304200ff 	andi	v0,v0,0xff
  4c144c:	8f83804c 	lw	v1,-32692(gp)
  4c1450:	00000000 	nop
  4c1454:	24635890 	addiu	v1,v1,22672
  4c1458:	00621821 	addu	v1,v1,v0
  4c145c:	8fc2003c 	lw	v0,60(s8)
  4c1460:	00000000 	nop
  4c1464:	24420001 	addiu	v0,v0,1
  4c1468:	90630000 	lbu	v1,0(v1)
  4c146c:	90420000 	lbu	v0,0(v0)
  4c1470:	00000000 	nop
  4c1474:	00621026 	xor	v0,v1,v0
  4c1478:	304200ff 	andi	v0,v0,0xff
  4c147c:	00021080 	sll	v0,v0,0x2
  4c1480:	24420400 	addiu	v0,v0,1024
  4c1484:	8f81804c 	lw	at,-32692(gp)
  4c1488:	00000000 	nop
  4c148c:	24215a90 	addiu	at,at,23184
  4c1490:	00221021 	addu	v0,at,v0
  4c1494:	8c830000 	lw	v1,0(a0)
  4c1498:	8c420000 	lw	v0,0(v0)
  4c149c:	00000000 	nop
  4c14a0:	00622026 	xor	a0,v1,v0
  4c14a4:	8fc2003c 	lw	v0,60(s8)
  4c14a8:	00000000 	nop
  4c14ac:	24420012 	addiu	v0,v0,18
  4c14b0:	90420000 	lbu	v0,0(v0)
  4c14b4:	00000000 	nop
  4c14b8:	384200a3 	xori	v0,v0,0xa3
  4c14bc:	304200ff 	andi	v0,v0,0xff
  4c14c0:	8f83804c 	lw	v1,-32692(gp)
  4c14c4:	00000000 	nop
  4c14c8:	24635890 	addiu	v1,v1,22672
  4c14cc:	00621821 	addu	v1,v1,v0
  4c14d0:	8fc2003c 	lw	v0,60(s8)
  4c14d4:	00000000 	nop
  4c14d8:	2442000a 	addiu	v0,v0,10
  4c14dc:	90630000 	lbu	v1,0(v1)
  4c14e0:	90420000 	lbu	v0,0(v0)
  4c14e4:	00000000 	nop
  4c14e8:	00621026 	xor	v0,v1,v0
  4c14ec:	304200ff 	andi	v0,v0,0xff
  4c14f0:	8f83804c 	lw	v1,-32692(gp)
  4c14f4:	00000000 	nop
  4c14f8:	24635990 	addiu	v1,v1,22928
  4c14fc:	00621821 	addu	v1,v1,v0
  4c1500:	8fc2003c 	lw	v0,60(s8)
  4c1504:	00000000 	nop
  4c1508:	24420002 	addiu	v0,v0,2
  4c150c:	90630000 	lbu	v1,0(v1)
  4c1510:	90420000 	lbu	v0,0(v0)
  4c1514:	00000000 	nop
  4c1518:	00621026 	xor	v0,v1,v0
  4c151c:	304200ff 	andi	v0,v0,0xff
  4c1520:	00021080 	sll	v0,v0,0x2
  4c1524:	24420800 	addiu	v0,v0,2048
  4c1528:	8f81804c 	lw	at,-32692(gp)
  4c152c:	00000000 	nop
  4c1530:	24215a90 	addiu	at,at,23184
  4c1534:	00221021 	addu	v0,at,v0
  4c1538:	8c420000 	lw	v0,0(v0)
  4c153c:	00000000 	nop
  4c1540:	00822026 	xor	a0,a0,v0
  4c1544:	8fc2003c 	lw	v0,60(s8)
  4c1548:	00000000 	nop
  4c154c:	24420013 	addiu	v0,v0,19
  4c1550:	90420000 	lbu	v0,0(v0)
  4c1554:	00000000 	nop
  4c1558:	384200a3 	xori	v0,v0,0xa3
  4c155c:	304200ff 	andi	v0,v0,0xff
  4c1560:	8f83804c 	lw	v1,-32692(gp)
  4c1564:	00000000 	nop
  4c1568:	24635990 	addiu	v1,v1,22928
  4c156c:	00621821 	addu	v1,v1,v0
  4c1570:	8fc2003c 	lw	v0,60(s8)
  4c1574:	00000000 	nop
  4c1578:	2442000b 	addiu	v0,v0,11
  4c157c:	90630000 	lbu	v1,0(v1)
  4c1580:	90420000 	lbu	v0,0(v0)
  4c1584:	00000000 	nop
  4c1588:	00621026 	xor	v0,v1,v0
  4c158c:	304200ff 	andi	v0,v0,0xff
  4c1590:	8f83804c 	lw	v1,-32692(gp)
  4c1594:	00000000 	nop
  4c1598:	24635990 	addiu	v1,v1,22928
  4c159c:	00621821 	addu	v1,v1,v0
  4c15a0:	8fc2003c 	lw	v0,60(s8)
  4c15a4:	00000000 	nop
  4c15a8:	24420003 	addiu	v0,v0,3
  4c15ac:	90630000 	lbu	v1,0(v1)
  4c15b0:	90420000 	lbu	v0,0(v0)
  4c15b4:	00000000 	nop
  4c15b8:	00621026 	xor	v0,v1,v0
  4c15bc:	304200ff 	andi	v0,v0,0xff
  4c15c0:	00021080 	sll	v0,v0,0x2
  4c15c4:	24420c00 	addiu	v0,v0,3072
  4c15c8:	8f81804c 	lw	at,-32692(gp)
  4c15cc:	00000000 	nop
  4c15d0:	24215a90 	addiu	at,at,23184
  4c15d4:	00221021 	addu	v0,at,v0
  4c15d8:	8c420000 	lw	v0,0(v0)
  4c15dc:	00000000 	nop
  4c15e0:	00821026 	xor	v0,a0,v0
  4c15e4:	afc20014 	sw	v0,20(s8)
  4c15e8:	8fc2003c 	lw	v0,60(s8)
  4c15ec:	00000000 	nop
  4c15f0:	24420014 	addiu	v0,v0,20
  4c15f4:	90420000 	lbu	v0,0(v0)
  4c15f8:	00000000 	nop
  4c15fc:	384200c8 	xori	v0,v0,0xc8
  4c1600:	304200ff 	andi	v0,v0,0xff
  4c1604:	8f83804c 	lw	v1,-32692(gp)
  4c1608:	00000000 	nop
  4c160c:	24635890 	addiu	v1,v1,22672
  4c1610:	00621821 	addu	v1,v1,v0
  4c1614:	8fc2003c 	lw	v0,60(s8)
  4c1618:	00000000 	nop
  4c161c:	2442000c 	addiu	v0,v0,12
  4c1620:	90630000 	lbu	v1,0(v1)
  4c1624:	90420000 	lbu	v0,0(v0)
  4c1628:	00000000 	nop
  4c162c:	00621026 	xor	v0,v1,v0
  4c1630:	304200ff 	andi	v0,v0,0xff
  4c1634:	8f83804c 	lw	v1,-32692(gp)
  4c1638:	00000000 	nop
  4c163c:	24635890 	addiu	v1,v1,22672
  4c1640:	00621821 	addu	v1,v1,v0
  4c1644:	8fc2003c 	lw	v0,60(s8)
  4c1648:	00000000 	nop
  4c164c:	24420004 	addiu	v0,v0,4
  4c1650:	90630000 	lbu	v1,0(v1)
  4c1654:	90420000 	lbu	v0,0(v0)
  4c1658:	00000000 	nop
  4c165c:	00621026 	xor	v0,v1,v0
  4c1660:	304200ff 	andi	v0,v0,0xff
  4c1664:	00021080 	sll	v0,v0,0x2
  4c1668:	8f84804c 	lw	a0,-32692(gp)
  4c166c:	00000000 	nop
  4c1670:	24845a90 	addiu	a0,a0,23184
  4c1674:	00822021 	addu	a0,a0,v0
  4c1678:	8fc2003c 	lw	v0,60(s8)
  4c167c:	00000000 	nop
  4c1680:	24420015 	addiu	v0,v0,21
  4c1684:	90420000 	lbu	v0,0(v0)
  4c1688:	00000000 	nop
  4c168c:	384200c8 	xori	v0,v0,0xc8
  4c1690:	304200ff 	andi	v0,v0,0xff
  4c1694:	8f83804c 	lw	v1,-32692(gp)
  4c1698:	00000000 	nop
  4c169c:	24635990 	addiu	v1,v1,22928
  4c16a0:	00621821 	addu	v1,v1,v0
  4c16a4:	8fc2003c 	lw	v0,60(s8)
  4c16a8:	00000000 	nop
  4c16ac:	2442000d 	addiu	v0,v0,13
  4c16b0:	90630000 	lbu	v1,0(v1)
  4c16b4:	90420000 	lbu	v0,0(v0)
  4c16b8:	00000000 	nop
  4c16bc:	00621026 	xor	v0,v1,v0
  4c16c0:	304200ff 	andi	v0,v0,0xff
  4c16c4:	8f83804c 	lw	v1,-32692(gp)
  4c16c8:	00000000 	nop
  4c16cc:	24635890 	addiu	v1,v1,22672
  4c16d0:	00621821 	addu	v1,v1,v0
  4c16d4:	8fc2003c 	lw	v0,60(s8)
  4c16d8:	00000000 	nop
  4c16dc:	24420005 	addiu	v0,v0,5
  4c16e0:	90630000 	lbu	v1,0(v1)
  4c16e4:	90420000 	lbu	v0,0(v0)
  4c16e8:	00000000 	nop
  4c16ec:	00621026 	xor	v0,v1,v0
  4c16f0:	304200ff 	andi	v0,v0,0xff
  4c16f4:	00021080 	sll	v0,v0,0x2
  4c16f8:	24420400 	addiu	v0,v0,1024
  4c16fc:	8f81804c 	lw	at,-32692(gp)
  4c1700:	00000000 	nop
  4c1704:	24215a90 	addiu	at,at,23184
  4c1708:	00221021 	addu	v0,at,v0
  4c170c:	8c830000 	lw	v1,0(a0)
  4c1710:	8c420000 	lw	v0,0(v0)
  4c1714:	00000000 	nop
  4c1718:	00622026 	xor	a0,v1,v0
  4c171c:	8fc2003c 	lw	v0,60(s8)
  4c1720:	00000000 	nop
  4c1724:	24420016 	addiu	v0,v0,22
  4c1728:	90420000 	lbu	v0,0(v0)
  4c172c:	00000000 	nop
  4c1730:	38420076 	xori	v0,v0,0x76
  4c1734:	304200ff 	andi	v0,v0,0xff
  4c1738:	8f83804c 	lw	v1,-32692(gp)
  4c173c:	00000000 	nop
  4c1740:	24635890 	addiu	v1,v1,22672
  4c1744:	00621821 	addu	v1,v1,v0
  4c1748:	8fc2003c 	lw	v0,60(s8)
  4c174c:	00000000 	nop
  4c1750:	2442000e 	addiu	v0,v0,14
  4c1754:	90630000 	lbu	v1,0(v1)
  4c1758:	90420000 	lbu	v0,0(v0)
  4c175c:	00000000 	nop
  4c1760:	00621026 	xor	v0,v1,v0
  4c1764:	304200ff 	andi	v0,v0,0xff
  4c1768:	8f83804c 	lw	v1,-32692(gp)
  4c176c:	00000000 	nop
  4c1770:	24635990 	addiu	v1,v1,22928
  4c1774:	00621821 	addu	v1,v1,v0
  4c1778:	8fc2003c 	lw	v0,60(s8)
  4c177c:	00000000 	nop
  4c1780:	24420006 	addiu	v0,v0,6
  4c1784:	90630000 	lbu	v1,0(v1)
  4c1788:	90420000 	lbu	v0,0(v0)
  4c178c:	00000000 	nop
  4c1790:	00621026 	xor	v0,v1,v0
  4c1794:	304200ff 	andi	v0,v0,0xff
  4c1798:	00021080 	sll	v0,v0,0x2
  4c179c:	24420800 	addiu	v0,v0,2048
  4c17a0:	8f81804c 	lw	at,-32692(gp)
  4c17a4:	00000000 	nop
  4c17a8:	24215a90 	addiu	at,at,23184
  4c17ac:	00221021 	addu	v0,at,v0
  4c17b0:	8c420000 	lw	v0,0(v0)
  4c17b4:	00000000 	nop
  4c17b8:	00822026 	xor	a0,a0,v0
  4c17bc:	8fc2003c 	lw	v0,60(s8)
  4c17c0:	00000000 	nop
  4c17c4:	24420017 	addiu	v0,v0,23
  4c17c8:	90420000 	lbu	v0,0(v0)
  4c17cc:	00000000 	nop
  4c17d0:	38420076 	xori	v0,v0,0x76
  4c17d4:	304200ff 	andi	v0,v0,0xff
  4c17d8:	8f83804c 	lw	v1,-32692(gp)
  4c17dc:	00000000 	nop
  4c17e0:	24635990 	addiu	v1,v1,22928
  4c17e4:	00621821 	addu	v1,v1,v0
  4c17e8:	8fc2003c 	lw	v0,60(s8)
  4c17ec:	00000000 	nop
  4c17f0:	2442000f 	addiu	v0,v0,15
  4c17f4:	90630000 	lbu	v1,0(v1)
  4c17f8:	90420000 	lbu	v0,0(v0)
  4c17fc:	00000000 	nop
  4c1800:	00621026 	xor	v0,v1,v0
  4c1804:	304200ff 	andi	v0,v0,0xff
  4c1808:	8f83804c 	lw	v1,-32692(gp)
  4c180c:	00000000 	nop
  4c1810:	24635990 	addiu	v1,v1,22928
  4c1814:	00621821 	addu	v1,v1,v0
  4c1818:	8fc2003c 	lw	v0,60(s8)
  4c181c:	00000000 	nop
  4c1820:	24420007 	addiu	v0,v0,7
  4c1824:	90630000 	lbu	v1,0(v1)
  4c1828:	90420000 	lbu	v0,0(v0)
  4c182c:	00000000 	nop
  4c1830:	00621026 	xor	v0,v1,v0
  4c1834:	304200ff 	andi	v0,v0,0xff
  4c1838:	00021080 	sll	v0,v0,0x2
  4c183c:	24420c00 	addiu	v0,v0,3072
  4c1840:	8f81804c 	lw	at,-32692(gp)
  4c1844:	00000000 	nop
  4c1848:	24215a90 	addiu	at,at,23184
  4c184c:	00221021 	addu	v0,at,v0
  4c1850:	8c420000 	lw	v0,0(v0)
  4c1854:	00000000 	nop
  4c1858:	00821026 	xor	v0,a0,v0
  4c185c:	afc20018 	sw	v0,24(s8)
  4c1860:	8fc20018 	lw	v0,24(s8)
  4c1864:	00000000 	nop
  4c1868:	00021a00 	sll	v1,v0,0x8
  4c186c:	00021602 	srl	v0,v0,0x18
  4c1870:	00621025 	or	v0,v1,v0
  4c1874:	afc20018 	sw	v0,24(s8)
  4c1878:	8fc30014 	lw	v1,20(s8)
  4c187c:	8fc20018 	lw	v0,24(s8)
  4c1880:	00000000 	nop
  4c1884:	00621021 	addu	v0,v1,v0
  4c1888:	afc20014 	sw	v0,20(s8)
  4c188c:	8fc30018 	lw	v1,24(s8)
  4c1890:	8fc20014 	lw	v0,20(s8)
  4c1894:	00000000 	nop
  4c1898:	00621021 	addu	v0,v1,v0
  4c189c:	afc20018 	sw	v0,24(s8)
  4c18a0:	8fc30014 	lw	v1,20(s8)
  4c18a4:	8fc20038 	lw	v0,56(s8)
  4c18a8:	00000000 	nop
  4c18ac:	ac431018 	sw	v1,4120(v0)
  4c18b0:	8fc20018 	lw	v0,24(s8)
  4c18b4:	00000000 	nop
  4c18b8:	00021a40 	sll	v1,v0,0x9
  4c18bc:	000215c2 	srl	v0,v0,0x17
  4c18c0:	00621825 	or	v1,v1,v0
  4c18c4:	8fc20038 	lw	v0,56(s8)
  4c18c8:	00000000 	nop
  4c18cc:	ac43101c 	sw	v1,4124(v0)
		CALC_K192 (k, 0, 0x9A, 0x4A, 0x92, 0xD3);
  4c18d0:	8fc2003c 	lw	v0,60(s8)
  4c18d4:	00000000 	nop
  4c18d8:	24420010 	addiu	v0,v0,16
  4c18dc:	90420000 	lbu	v0,0(v0)
  4c18e0:	00000000 	nop
  4c18e4:	3842004a 	xori	v0,v0,0x4a
  4c18e8:	304200ff 	andi	v0,v0,0xff
  4c18ec:	8f83804c 	lw	v1,-32692(gp)
  4c18f0:	00000000 	nop
  4c18f4:	24635890 	addiu	v1,v1,22672
  4c18f8:	00621821 	addu	v1,v1,v0
  4c18fc:	8fc2003c 	lw	v0,60(s8)
  4c1900:	00000000 	nop
  4c1904:	24420008 	addiu	v0,v0,8
  4c1908:	90630000 	lbu	v1,0(v1)
  4c190c:	90420000 	lbu	v0,0(v0)
  4c1910:	00000000 	nop
  4c1914:	00621026 	xor	v0,v1,v0
  4c1918:	304200ff 	andi	v0,v0,0xff
  4c191c:	8f81804c 	lw	at,-32692(gp)
  4c1920:	00000000 	nop
  4c1924:	24215890 	addiu	at,at,22672
  4c1928:	00221021 	addu	v0,at,v0
  4c192c:	90430000 	lbu	v1,0(v0)
  4c1930:	8fc2003c 	lw	v0,60(s8)
  4c1934:	00000000 	nop
  4c1938:	90420000 	lbu	v0,0(v0)
  4c193c:	00000000 	nop
  4c1940:	00621026 	xor	v0,v1,v0
  4c1944:	304200ff 	andi	v0,v0,0xff
  4c1948:	00021080 	sll	v0,v0,0x2
  4c194c:	8f84804c 	lw	a0,-32692(gp)
  4c1950:	00000000 	nop
  4c1954:	24845a90 	addiu	a0,a0,23184
  4c1958:	00822021 	addu	a0,a0,v0
  4c195c:	8fc2003c 	lw	v0,60(s8)
  4c1960:	00000000 	nop
  4c1964:	24420011 	addiu	v0,v0,17
  4c1968:	90420000 	lbu	v0,0(v0)
  4c196c:	00000000 	nop
  4c1970:	3842004a 	xori	v0,v0,0x4a
  4c1974:	304200ff 	andi	v0,v0,0xff
  4c1978:	8f83804c 	lw	v1,-32692(gp)
  4c197c:	00000000 	nop
  4c1980:	24635990 	addiu	v1,v1,22928
  4c1984:	00621821 	addu	v1,v1,v0
  4c1988:	8fc2003c 	lw	v0,60(s8)
  4c198c:	00000000 	nop
  4c1990:	24420009 	addiu	v0,v0,9
  4c1994:	90630000 	lbu	v1,0(v1)
  4c1998:	90420000 	lbu	v0,0(v0)
  4c199c:	00000000 	nop
  4c19a0:	00621026 	xor	v0,v1,v0
  4c19a4:	304200ff 	andi	v0,v0,0xff
  4c19a8:	8f83804c 	lw	v1,-32692(gp)
  4c19ac:	00000000 	nop
  4c19b0:	24635890 	addiu	v1,v1,22672
  4c19b4:	00621821 	addu	v1,v1,v0
  4c19b8:	8fc2003c 	lw	v0,60(s8)
  4c19bc:	00000000 	nop
  4c19c0:	24420001 	addiu	v0,v0,1
  4c19c4:	90630000 	lbu	v1,0(v1)
  4c19c8:	90420000 	lbu	v0,0(v0)
  4c19cc:	00000000 	nop
  4c19d0:	00621026 	xor	v0,v1,v0
  4c19d4:	304200ff 	andi	v0,v0,0xff
  4c19d8:	00021080 	sll	v0,v0,0x2
  4c19dc:	24420400 	addiu	v0,v0,1024
  4c19e0:	8f81804c 	lw	at,-32692(gp)
  4c19e4:	00000000 	nop
  4c19e8:	24215a90 	addiu	at,at,23184
  4c19ec:	00221021 	addu	v0,at,v0
  4c19f0:	8c830000 	lw	v1,0(a0)
  4c19f4:	8c420000 	lw	v0,0(v0)
  4c19f8:	00000000 	nop
  4c19fc:	00622026 	xor	a0,v1,v0
  4c1a00:	8fc2003c 	lw	v0,60(s8)
  4c1a04:	00000000 	nop
  4c1a08:	24420012 	addiu	v0,v0,18
  4c1a0c:	90420000 	lbu	v0,0(v0)
  4c1a10:	00000000 	nop
  4c1a14:	3842009a 	xori	v0,v0,0x9a
  4c1a18:	304200ff 	andi	v0,v0,0xff
  4c1a1c:	8f83804c 	lw	v1,-32692(gp)
  4c1a20:	00000000 	nop
  4c1a24:	24635890 	addiu	v1,v1,22672
  4c1a28:	00621821 	addu	v1,v1,v0
  4c1a2c:	8fc2003c 	lw	v0,60(s8)
  4c1a30:	00000000 	nop
  4c1a34:	2442000a 	addiu	v0,v0,10
  4c1a38:	90630000 	lbu	v1,0(v1)
  4c1a3c:	90420000 	lbu	v0,0(v0)
  4c1a40:	00000000 	nop
  4c1a44:	00621026 	xor	v0,v1,v0
  4c1a48:	304200ff 	andi	v0,v0,0xff
  4c1a4c:	8f83804c 	lw	v1,-32692(gp)
  4c1a50:	00000000 	nop
  4c1a54:	24635990 	addiu	v1,v1,22928
  4c1a58:	00621821 	addu	v1,v1,v0
  4c1a5c:	8fc2003c 	lw	v0,60(s8)
  4c1a60:	00000000 	nop
  4c1a64:	24420002 	addiu	v0,v0,2
  4c1a68:	90630000 	lbu	v1,0(v1)
  4c1a6c:	90420000 	lbu	v0,0(v0)
  4c1a70:	00000000 	nop
  4c1a74:	00621026 	xor	v0,v1,v0
  4c1a78:	304200ff 	andi	v0,v0,0xff
  4c1a7c:	00021080 	sll	v0,v0,0x2
  4c1a80:	24420800 	addiu	v0,v0,2048
  4c1a84:	8f81804c 	lw	at,-32692(gp)
  4c1a88:	00000000 	nop
  4c1a8c:	24215a90 	addiu	at,at,23184
  4c1a90:	00221021 	addu	v0,at,v0
  4c1a94:	8c420000 	lw	v0,0(v0)
  4c1a98:	00000000 	nop
  4c1a9c:	00822026 	xor	a0,a0,v0
  4c1aa0:	8fc2003c 	lw	v0,60(s8)
  4c1aa4:	00000000 	nop
  4c1aa8:	24420013 	addiu	v0,v0,19
  4c1aac:	90420000 	lbu	v0,0(v0)
  4c1ab0:	00000000 	nop
  4c1ab4:	3842009a 	xori	v0,v0,0x9a
  4c1ab8:	304200ff 	andi	v0,v0,0xff
  4c1abc:	8f83804c 	lw	v1,-32692(gp)
  4c1ac0:	00000000 	nop
  4c1ac4:	24635990 	addiu	v1,v1,22928
  4c1ac8:	00621821 	addu	v1,v1,v0
  4c1acc:	8fc2003c 	lw	v0,60(s8)
  4c1ad0:	00000000 	nop
  4c1ad4:	2442000b 	addiu	v0,v0,11
  4c1ad8:	90630000 	lbu	v1,0(v1)
  4c1adc:	90420000 	lbu	v0,0(v0)
  4c1ae0:	00000000 	nop
  4c1ae4:	00621026 	xor	v0,v1,v0
  4c1ae8:	304200ff 	andi	v0,v0,0xff
  4c1aec:	8f83804c 	lw	v1,-32692(gp)
  4c1af0:	00000000 	nop
  4c1af4:	24635990 	addiu	v1,v1,22928
  4c1af8:	00621821 	addu	v1,v1,v0
  4c1afc:	8fc2003c 	lw	v0,60(s8)
  4c1b00:	00000000 	nop
  4c1b04:	24420003 	addiu	v0,v0,3
  4c1b08:	90630000 	lbu	v1,0(v1)
  4c1b0c:	90420000 	lbu	v0,0(v0)
  4c1b10:	00000000 	nop
  4c1b14:	00621026 	xor	v0,v1,v0
  4c1b18:	304200ff 	andi	v0,v0,0xff
  4c1b1c:	00021080 	sll	v0,v0,0x2
  4c1b20:	24420c00 	addiu	v0,v0,3072
  4c1b24:	8f81804c 	lw	at,-32692(gp)
  4c1b28:	00000000 	nop
  4c1b2c:	24215a90 	addiu	at,at,23184
  4c1b30:	00221021 	addu	v0,at,v0
  4c1b34:	8c420000 	lw	v0,0(v0)
  4c1b38:	00000000 	nop
  4c1b3c:	00821026 	xor	v0,a0,v0
  4c1b40:	afc20014 	sw	v0,20(s8)
  4c1b44:	8fc2003c 	lw	v0,60(s8)
  4c1b48:	00000000 	nop
  4c1b4c:	24420014 	addiu	v0,v0,20
  4c1b50:	90420000 	lbu	v0,0(v0)
  4c1b54:	00000000 	nop
  4c1b58:	384200d3 	xori	v0,v0,0xd3
  4c1b5c:	304200ff 	andi	v0,v0,0xff
  4c1b60:	8f83804c 	lw	v1,-32692(gp)
  4c1b64:	00000000 	nop
  4c1b68:	24635890 	addiu	v1,v1,22672
  4c1b6c:	00621821 	addu	v1,v1,v0
  4c1b70:	8fc2003c 	lw	v0,60(s8)
  4c1b74:	00000000 	nop
  4c1b78:	2442000c 	addiu	v0,v0,12
  4c1b7c:	90630000 	lbu	v1,0(v1)
  4c1b80:	90420000 	lbu	v0,0(v0)
  4c1b84:	00000000 	nop
  4c1b88:	00621026 	xor	v0,v1,v0
  4c1b8c:	304200ff 	andi	v0,v0,0xff
  4c1b90:	8f83804c 	lw	v1,-32692(gp)
  4c1b94:	00000000 	nop
  4c1b98:	24635890 	addiu	v1,v1,22672
  4c1b9c:	00621821 	addu	v1,v1,v0
  4c1ba0:	8fc2003c 	lw	v0,60(s8)
  4c1ba4:	00000000 	nop
  4c1ba8:	24420004 	addiu	v0,v0,4
  4c1bac:	90630000 	lbu	v1,0(v1)
  4c1bb0:	90420000 	lbu	v0,0(v0)
  4c1bb4:	00000000 	nop
  4c1bb8:	00621026 	xor	v0,v1,v0
  4c1bbc:	304200ff 	andi	v0,v0,0xff
  4c1bc0:	00021080 	sll	v0,v0,0x2
  4c1bc4:	8f84804c 	lw	a0,-32692(gp)
  4c1bc8:	00000000 	nop
  4c1bcc:	24845a90 	addiu	a0,a0,23184
  4c1bd0:	00822021 	addu	a0,a0,v0
  4c1bd4:	8fc2003c 	lw	v0,60(s8)
  4c1bd8:	00000000 	nop
  4c1bdc:	24420015 	addiu	v0,v0,21
  4c1be0:	90420000 	lbu	v0,0(v0)
  4c1be4:	00000000 	nop
  4c1be8:	384200d3 	xori	v0,v0,0xd3
  4c1bec:	304200ff 	andi	v0,v0,0xff
  4c1bf0:	8f83804c 	lw	v1,-32692(gp)
  4c1bf4:	00000000 	nop
  4c1bf8:	24635990 	addiu	v1,v1,22928
  4c1bfc:	00621821 	addu	v1,v1,v0
  4c1c00:	8fc2003c 	lw	v0,60(s8)
  4c1c04:	00000000 	nop
  4c1c08:	2442000d 	addiu	v0,v0,13
  4c1c0c:	90630000 	lbu	v1,0(v1)
  4c1c10:	90420000 	lbu	v0,0(v0)
  4c1c14:	00000000 	nop
  4c1c18:	00621026 	xor	v0,v1,v0
  4c1c1c:	304200ff 	andi	v0,v0,0xff
  4c1c20:	8f83804c 	lw	v1,-32692(gp)
  4c1c24:	00000000 	nop
  4c1c28:	24635890 	addiu	v1,v1,22672
  4c1c2c:	00621821 	addu	v1,v1,v0
  4c1c30:	8fc2003c 	lw	v0,60(s8)
  4c1c34:	00000000 	nop
  4c1c38:	24420005 	addiu	v0,v0,5
  4c1c3c:	90630000 	lbu	v1,0(v1)
  4c1c40:	90420000 	lbu	v0,0(v0)
  4c1c44:	00000000 	nop
  4c1c48:	00621026 	xor	v0,v1,v0
  4c1c4c:	304200ff 	andi	v0,v0,0xff
  4c1c50:	00021080 	sll	v0,v0,0x2
  4c1c54:	24420400 	addiu	v0,v0,1024
  4c1c58:	8f81804c 	lw	at,-32692(gp)
  4c1c5c:	00000000 	nop
  4c1c60:	24215a90 	addiu	at,at,23184
  4c1c64:	00221021 	addu	v0,at,v0
  4c1c68:	8c830000 	lw	v1,0(a0)
  4c1c6c:	8c420000 	lw	v0,0(v0)
  4c1c70:	00000000 	nop
  4c1c74:	00622026 	xor	a0,v1,v0
  4c1c78:	8fc2003c 	lw	v0,60(s8)
  4c1c7c:	00000000 	nop
  4c1c80:	24420016 	addiu	v0,v0,22
  4c1c84:	90420000 	lbu	v0,0(v0)
  4c1c88:	00000000 	nop
  4c1c8c:	38420092 	xori	v0,v0,0x92
  4c1c90:	304200ff 	andi	v0,v0,0xff
  4c1c94:	8f83804c 	lw	v1,-32692(gp)
  4c1c98:	00000000 	nop
  4c1c9c:	24635890 	addiu	v1,v1,22672
  4c1ca0:	00621821 	addu	v1,v1,v0
  4c1ca4:	8fc2003c 	lw	v0,60(s8)
  4c1ca8:	00000000 	nop
  4c1cac:	2442000e 	addiu	v0,v0,14
  4c1cb0:	90630000 	lbu	v1,0(v1)
  4c1cb4:	90420000 	lbu	v0,0(v0)
  4c1cb8:	00000000 	nop
  4c1cbc:	00621026 	xor	v0,v1,v0
  4c1cc0:	304200ff 	andi	v0,v0,0xff
  4c1cc4:	8f83804c 	lw	v1,-32692(gp)
  4c1cc8:	00000000 	nop
  4c1ccc:	24635990 	addiu	v1,v1,22928
  4c1cd0:	00621821 	addu	v1,v1,v0
  4c1cd4:	8fc2003c 	lw	v0,60(s8)
  4c1cd8:	00000000 	nop
  4c1cdc:	24420006 	addiu	v0,v0,6
  4c1ce0:	90630000 	lbu	v1,0(v1)
  4c1ce4:	90420000 	lbu	v0,0(v0)
  4c1ce8:	00000000 	nop
  4c1cec:	00621026 	xor	v0,v1,v0
  4c1cf0:	304200ff 	andi	v0,v0,0xff
  4c1cf4:	00021080 	sll	v0,v0,0x2
  4c1cf8:	24420800 	addiu	v0,v0,2048
  4c1cfc:	8f81804c 	lw	at,-32692(gp)
  4c1d00:	00000000 	nop
  4c1d04:	24215a90 	addiu	at,at,23184
  4c1d08:	00221021 	addu	v0,at,v0
  4c1d0c:	8c420000 	lw	v0,0(v0)
  4c1d10:	00000000 	nop
  4c1d14:	00822026 	xor	a0,a0,v0
  4c1d18:	8fc2003c 	lw	v0,60(s8)
  4c1d1c:	00000000 	nop
  4c1d20:	24420017 	addiu	v0,v0,23
  4c1d24:	90420000 	lbu	v0,0(v0)
  4c1d28:	00000000 	nop
  4c1d2c:	38420092 	xori	v0,v0,0x92
  4c1d30:	304200ff 	andi	v0,v0,0xff
  4c1d34:	8f83804c 	lw	v1,-32692(gp)
  4c1d38:	00000000 	nop
  4c1d3c:	24635990 	addiu	v1,v1,22928
  4c1d40:	00621821 	addu	v1,v1,v0
  4c1d44:	8fc2003c 	lw	v0,60(s8)
  4c1d48:	00000000 	nop
  4c1d4c:	2442000f 	addiu	v0,v0,15
  4c1d50:	90630000 	lbu	v1,0(v1)
  4c1d54:	90420000 	lbu	v0,0(v0)
  4c1d58:	00000000 	nop
  4c1d5c:	00621026 	xor	v0,v1,v0
  4c1d60:	304200ff 	andi	v0,v0,0xff
  4c1d64:	8f83804c 	lw	v1,-32692(gp)
  4c1d68:	00000000 	nop
  4c1d6c:	24635990 	addiu	v1,v1,22928
  4c1d70:	00621821 	addu	v1,v1,v0
  4c1d74:	8fc2003c 	lw	v0,60(s8)
  4c1d78:	00000000 	nop
  4c1d7c:	24420007 	addiu	v0,v0,7
  4c1d80:	90630000 	lbu	v1,0(v1)
  4c1d84:	90420000 	lbu	v0,0(v0)
  4c1d88:	00000000 	nop
  4c1d8c:	00621026 	xor	v0,v1,v0
  4c1d90:	304200ff 	andi	v0,v0,0xff
  4c1d94:	00021080 	sll	v0,v0,0x2
  4c1d98:	24420c00 	addiu	v0,v0,3072
  4c1d9c:	8f81804c 	lw	at,-32692(gp)
  4c1da0:	00000000 	nop
  4c1da4:	24215a90 	addiu	at,at,23184
  4c1da8:	00221021 	addu	v0,at,v0
  4c1dac:	8c420000 	lw	v0,0(v0)
  4c1db0:	00000000 	nop
  4c1db4:	00821026 	xor	v0,a0,v0
  4c1db8:	afc20018 	sw	v0,24(s8)
  4c1dbc:	8fc20018 	lw	v0,24(s8)
  4c1dc0:	00000000 	nop
  4c1dc4:	00021a00 	sll	v1,v0,0x8
  4c1dc8:	00021602 	srl	v0,v0,0x18
  4c1dcc:	00621025 	or	v0,v1,v0
  4c1dd0:	afc20018 	sw	v0,24(s8)
  4c1dd4:	8fc30014 	lw	v1,20(s8)
  4c1dd8:	8fc20018 	lw	v0,24(s8)
  4c1ddc:	00000000 	nop
  4c1de0:	00621021 	addu	v0,v1,v0
  4c1de4:	afc20014 	sw	v0,20(s8)
  4c1de8:	8fc30018 	lw	v1,24(s8)
  4c1dec:	8fc20014 	lw	v0,20(s8)
  4c1df0:	00000000 	nop
  4c1df4:	00621021 	addu	v0,v1,v0
  4c1df8:	afc20018 	sw	v0,24(s8)
  4c1dfc:	8fc30014 	lw	v1,20(s8)
  4c1e00:	8fc20038 	lw	v0,56(s8)
  4c1e04:	00000000 	nop
  4c1e08:	ac431020 	sw	v1,4128(v0)
  4c1e0c:	8fc20018 	lw	v0,24(s8)
  4c1e10:	00000000 	nop
  4c1e14:	00021a40 	sll	v1,v0,0x9
  4c1e18:	000215c2 	srl	v0,v0,0x17
  4c1e1c:	00621825 	or	v1,v1,v0
  4c1e20:	8fc20038 	lw	v0,56(s8)
  4c1e24:	00000000 	nop
  4c1e28:	ac431024 	sw	v1,4132(v0)
		CALC_K192 (k, 2, 0x80, 0xE6, 0x78, 0x6B);
  4c1e2c:	8fc2003c 	lw	v0,60(s8)
  4c1e30:	00000000 	nop
  4c1e34:	24420010 	addiu	v0,v0,16
  4c1e38:	90420000 	lbu	v0,0(v0)
  4c1e3c:	00000000 	nop
  4c1e40:	384200e6 	xori	v0,v0,0xe6
  4c1e44:	304200ff 	andi	v0,v0,0xff
  4c1e48:	8f83804c 	lw	v1,-32692(gp)
  4c1e4c:	00000000 	nop
  4c1e50:	24635890 	addiu	v1,v1,22672
  4c1e54:	00621821 	addu	v1,v1,v0
  4c1e58:	8fc2003c 	lw	v0,60(s8)
  4c1e5c:	00000000 	nop
  4c1e60:	24420008 	addiu	v0,v0,8
  4c1e64:	90630000 	lbu	v1,0(v1)
  4c1e68:	90420000 	lbu	v0,0(v0)
  4c1e6c:	00000000 	nop
  4c1e70:	00621026 	xor	v0,v1,v0
  4c1e74:	304200ff 	andi	v0,v0,0xff
  4c1e78:	8f81804c 	lw	at,-32692(gp)
  4c1e7c:	00000000 	nop
  4c1e80:	24215890 	addiu	at,at,22672
  4c1e84:	00221021 	addu	v0,at,v0
  4c1e88:	90430000 	lbu	v1,0(v0)
  4c1e8c:	8fc2003c 	lw	v0,60(s8)
  4c1e90:	00000000 	nop
  4c1e94:	90420000 	lbu	v0,0(v0)
  4c1e98:	00000000 	nop
  4c1e9c:	00621026 	xor	v0,v1,v0
  4c1ea0:	304200ff 	andi	v0,v0,0xff
  4c1ea4:	00021080 	sll	v0,v0,0x2
  4c1ea8:	8f84804c 	lw	a0,-32692(gp)
  4c1eac:	00000000 	nop
  4c1eb0:	24845a90 	addiu	a0,a0,23184
  4c1eb4:	00822021 	addu	a0,a0,v0
  4c1eb8:	8fc2003c 	lw	v0,60(s8)
  4c1ebc:	00000000 	nop
  4c1ec0:	24420011 	addiu	v0,v0,17
  4c1ec4:	90420000 	lbu	v0,0(v0)
  4c1ec8:	00000000 	nop
  4c1ecc:	384200e6 	xori	v0,v0,0xe6
  4c1ed0:	304200ff 	andi	v0,v0,0xff
  4c1ed4:	8f83804c 	lw	v1,-32692(gp)
  4c1ed8:	00000000 	nop
  4c1edc:	24635990 	addiu	v1,v1,22928
  4c1ee0:	00621821 	addu	v1,v1,v0
  4c1ee4:	8fc2003c 	lw	v0,60(s8)
  4c1ee8:	00000000 	nop
  4c1eec:	24420009 	addiu	v0,v0,9
  4c1ef0:	90630000 	lbu	v1,0(v1)
  4c1ef4:	90420000 	lbu	v0,0(v0)
  4c1ef8:	00000000 	nop
  4c1efc:	00621026 	xor	v0,v1,v0
  4c1f00:	304200ff 	andi	v0,v0,0xff
  4c1f04:	8f83804c 	lw	v1,-32692(gp)
  4c1f08:	00000000 	nop
  4c1f0c:	24635890 	addiu	v1,v1,22672
  4c1f10:	00621821 	addu	v1,v1,v0
  4c1f14:	8fc2003c 	lw	v0,60(s8)
  4c1f18:	00000000 	nop
  4c1f1c:	24420001 	addiu	v0,v0,1
  4c1f20:	90630000 	lbu	v1,0(v1)
  4c1f24:	90420000 	lbu	v0,0(v0)
  4c1f28:	00000000 	nop
  4c1f2c:	00621026 	xor	v0,v1,v0
  4c1f30:	304200ff 	andi	v0,v0,0xff
  4c1f34:	00021080 	sll	v0,v0,0x2
  4c1f38:	24420400 	addiu	v0,v0,1024
  4c1f3c:	8f81804c 	lw	at,-32692(gp)
  4c1f40:	00000000 	nop
  4c1f44:	24215a90 	addiu	at,at,23184
  4c1f48:	00221021 	addu	v0,at,v0
  4c1f4c:	8c830000 	lw	v1,0(a0)
  4c1f50:	8c420000 	lw	v0,0(v0)
  4c1f54:	00000000 	nop
  4c1f58:	00622026 	xor	a0,v1,v0
  4c1f5c:	8fc2003c 	lw	v0,60(s8)
  4c1f60:	00000000 	nop
  4c1f64:	24420012 	addiu	v0,v0,18
  4c1f68:	90420000 	lbu	v0,0(v0)
  4c1f6c:	00000000 	nop
  4c1f70:	38420080 	xori	v0,v0,0x80
  4c1f74:	304200ff 	andi	v0,v0,0xff
  4c1f78:	8f83804c 	lw	v1,-32692(gp)
  4c1f7c:	00000000 	nop
  4c1f80:	24635890 	addiu	v1,v1,22672
  4c1f84:	00621821 	addu	v1,v1,v0
  4c1f88:	8fc2003c 	lw	v0,60(s8)
  4c1f8c:	00000000 	nop
  4c1f90:	2442000a 	addiu	v0,v0,10
  4c1f94:	90630000 	lbu	v1,0(v1)
  4c1f98:	90420000 	lbu	v0,0(v0)
  4c1f9c:	00000000 	nop
  4c1fa0:	00621026 	xor	v0,v1,v0
  4c1fa4:	304200ff 	andi	v0,v0,0xff
  4c1fa8:	8f83804c 	lw	v1,-32692(gp)
  4c1fac:	00000000 	nop
  4c1fb0:	24635990 	addiu	v1,v1,22928
  4c1fb4:	00621821 	addu	v1,v1,v0
  4c1fb8:	8fc2003c 	lw	v0,60(s8)
  4c1fbc:	00000000 	nop
  4c1fc0:	24420002 	addiu	v0,v0,2
  4c1fc4:	90630000 	lbu	v1,0(v1)
  4c1fc8:	90420000 	lbu	v0,0(v0)
  4c1fcc:	00000000 	nop
  4c1fd0:	00621026 	xor	v0,v1,v0
  4c1fd4:	304200ff 	andi	v0,v0,0xff
  4c1fd8:	00021080 	sll	v0,v0,0x2
  4c1fdc:	24420800 	addiu	v0,v0,2048
  4c1fe0:	8f81804c 	lw	at,-32692(gp)
  4c1fe4:	00000000 	nop
  4c1fe8:	24215a90 	addiu	at,at,23184
  4c1fec:	00221021 	addu	v0,at,v0
  4c1ff0:	8c420000 	lw	v0,0(v0)
  4c1ff4:	00000000 	nop
  4c1ff8:	00822026 	xor	a0,a0,v0
  4c1ffc:	8fc2003c 	lw	v0,60(s8)
  4c2000:	00000000 	nop
  4c2004:	24420013 	addiu	v0,v0,19
  4c2008:	90420000 	lbu	v0,0(v0)
  4c200c:	00000000 	nop
  4c2010:	38420080 	xori	v0,v0,0x80
  4c2014:	304200ff 	andi	v0,v0,0xff
  4c2018:	8f83804c 	lw	v1,-32692(gp)
  4c201c:	00000000 	nop
  4c2020:	24635990 	addiu	v1,v1,22928
  4c2024:	00621821 	addu	v1,v1,v0
  4c2028:	8fc2003c 	lw	v0,60(s8)
  4c202c:	00000000 	nop
  4c2030:	2442000b 	addiu	v0,v0,11
  4c2034:	90630000 	lbu	v1,0(v1)
  4c2038:	90420000 	lbu	v0,0(v0)
  4c203c:	00000000 	nop
  4c2040:	00621026 	xor	v0,v1,v0
  4c2044:	304200ff 	andi	v0,v0,0xff
  4c2048:	8f83804c 	lw	v1,-32692(gp)
  4c204c:	00000000 	nop
  4c2050:	24635990 	addiu	v1,v1,22928
  4c2054:	00621821 	addu	v1,v1,v0
  4c2058:	8fc2003c 	lw	v0,60(s8)
  4c205c:	00000000 	nop
  4c2060:	24420003 	addiu	v0,v0,3
  4c2064:	90630000 	lbu	v1,0(v1)
  4c2068:	90420000 	lbu	v0,0(v0)
  4c206c:	00000000 	nop
  4c2070:	00621026 	xor	v0,v1,v0
  4c2074:	304200ff 	andi	v0,v0,0xff
  4c2078:	00021080 	sll	v0,v0,0x2
  4c207c:	24420c00 	addiu	v0,v0,3072
  4c2080:	8f81804c 	lw	at,-32692(gp)
  4c2084:	00000000 	nop
  4c2088:	24215a90 	addiu	at,at,23184
  4c208c:	00221021 	addu	v0,at,v0
  4c2090:	8c420000 	lw	v0,0(v0)
  4c2094:	00000000 	nop
  4c2098:	00821026 	xor	v0,a0,v0
  4c209c:	afc20014 	sw	v0,20(s8)
  4c20a0:	8fc2003c 	lw	v0,60(s8)
  4c20a4:	00000000 	nop
  4c20a8:	24420014 	addiu	v0,v0,20
  4c20ac:	90420000 	lbu	v0,0(v0)
  4c20b0:	00000000 	nop
  4c20b4:	3842006b 	xori	v0,v0,0x6b
  4c20b8:	304200ff 	andi	v0,v0,0xff
  4c20bc:	8f83804c 	lw	v1,-32692(gp)
  4c20c0:	00000000 	nop
  4c20c4:	24635890 	addiu	v1,v1,22672
  4c20c8:	00621821 	addu	v1,v1,v0
  4c20cc:	8fc2003c 	lw	v0,60(s8)
  4c20d0:	00000000 	nop
  4c20d4:	2442000c 	addiu	v0,v0,12
  4c20d8:	90630000 	lbu	v1,0(v1)
  4c20dc:	90420000 	lbu	v0,0(v0)
  4c20e0:	00000000 	nop
  4c20e4:	00621026 	xor	v0,v1,v0
  4c20e8:	304200ff 	andi	v0,v0,0xff
  4c20ec:	8f83804c 	lw	v1,-32692(gp)
  4c20f0:	00000000 	nop
  4c20f4:	24635890 	addiu	v1,v1,22672
  4c20f8:	00621821 	addu	v1,v1,v0
  4c20fc:	8fc2003c 	lw	v0,60(s8)
  4c2100:	00000000 	nop
  4c2104:	24420004 	addiu	v0,v0,4
  4c2108:	90630000 	lbu	v1,0(v1)
  4c210c:	90420000 	lbu	v0,0(v0)
  4c2110:	00000000 	nop
  4c2114:	00621026 	xor	v0,v1,v0
  4c2118:	304200ff 	andi	v0,v0,0xff
  4c211c:	00021080 	sll	v0,v0,0x2
  4c2120:	8f84804c 	lw	a0,-32692(gp)
  4c2124:	00000000 	nop
  4c2128:	24845a90 	addiu	a0,a0,23184
  4c212c:	00822021 	addu	a0,a0,v0
  4c2130:	8fc2003c 	lw	v0,60(s8)
  4c2134:	00000000 	nop
  4c2138:	24420015 	addiu	v0,v0,21
  4c213c:	90420000 	lbu	v0,0(v0)
  4c2140:	00000000 	nop
  4c2144:	3842006b 	xori	v0,v0,0x6b
  4c2148:	304200ff 	andi	v0,v0,0xff
  4c214c:	8f83804c 	lw	v1,-32692(gp)
  4c2150:	00000000 	nop
  4c2154:	24635990 	addiu	v1,v1,22928
  4c2158:	00621821 	addu	v1,v1,v0
  4c215c:	8fc2003c 	lw	v0,60(s8)
  4c2160:	00000000 	nop
  4c2164:	2442000d 	addiu	v0,v0,13
  4c2168:	90630000 	lbu	v1,0(v1)
  4c216c:	90420000 	lbu	v0,0(v0)
  4c2170:	00000000 	nop
  4c2174:	00621026 	xor	v0,v1,v0
  4c2178:	304200ff 	andi	v0,v0,0xff
  4c217c:	8f83804c 	lw	v1,-32692(gp)
  4c2180:	00000000 	nop
  4c2184:	24635890 	addiu	v1,v1,22672
  4c2188:	00621821 	addu	v1,v1,v0
  4c218c:	8fc2003c 	lw	v0,60(s8)
  4c2190:	00000000 	nop
  4c2194:	24420005 	addiu	v0,v0,5
  4c2198:	90630000 	lbu	v1,0(v1)
  4c219c:	90420000 	lbu	v0,0(v0)
  4c21a0:	00000000 	nop
  4c21a4:	00621026 	xor	v0,v1,v0
  4c21a8:	304200ff 	andi	v0,v0,0xff
  4c21ac:	00021080 	sll	v0,v0,0x2
  4c21b0:	24420400 	addiu	v0,v0,1024
  4c21b4:	8f81804c 	lw	at,-32692(gp)
  4c21b8:	00000000 	nop
  4c21bc:	24215a90 	addiu	at,at,23184
  4c21c0:	00221021 	addu	v0,at,v0
  4c21c4:	8c830000 	lw	v1,0(a0)
  4c21c8:	8c420000 	lw	v0,0(v0)
  4c21cc:	00000000 	nop
  4c21d0:	00622026 	xor	a0,v1,v0
  4c21d4:	8fc2003c 	lw	v0,60(s8)
  4c21d8:	00000000 	nop
  4c21dc:	24420016 	addiu	v0,v0,22
  4c21e0:	90420000 	lbu	v0,0(v0)
  4c21e4:	00000000 	nop
  4c21e8:	38420078 	xori	v0,v0,0x78
  4c21ec:	304200ff 	andi	v0,v0,0xff
  4c21f0:	8f83804c 	lw	v1,-32692(gp)
  4c21f4:	00000000 	nop
  4c21f8:	24635890 	addiu	v1,v1,22672
  4c21fc:	00621821 	addu	v1,v1,v0
  4c2200:	8fc2003c 	lw	v0,60(s8)
  4c2204:	00000000 	nop
  4c2208:	2442000e 	addiu	v0,v0,14
  4c220c:	90630000 	lbu	v1,0(v1)
  4c2210:	90420000 	lbu	v0,0(v0)
  4c2214:	00000000 	nop
  4c2218:	00621026 	xor	v0,v1,v0
  4c221c:	304200ff 	andi	v0,v0,0xff
  4c2220:	8f83804c 	lw	v1,-32692(gp)
  4c2224:	00000000 	nop
  4c2228:	24635990 	addiu	v1,v1,22928
  4c222c:	00621821 	addu	v1,v1,v0
  4c2230:	8fc2003c 	lw	v0,60(s8)
  4c2234:	00000000 	nop
  4c2238:	24420006 	addiu	v0,v0,6
  4c223c:	90630000 	lbu	v1,0(v1)
  4c2240:	90420000 	lbu	v0,0(v0)
  4c2244:	00000000 	nop
  4c2248:	00621026 	xor	v0,v1,v0
  4c224c:	304200ff 	andi	v0,v0,0xff
  4c2250:	00021080 	sll	v0,v0,0x2
  4c2254:	24420800 	addiu	v0,v0,2048
  4c2258:	8f81804c 	lw	at,-32692(gp)
  4c225c:	00000000 	nop
  4c2260:	24215a90 	addiu	at,at,23184
  4c2264:	00221021 	addu	v0,at,v0
  4c2268:	8c420000 	lw	v0,0(v0)
  4c226c:	00000000 	nop
  4c2270:	00822026 	xor	a0,a0,v0
  4c2274:	8fc2003c 	lw	v0,60(s8)
  4c2278:	00000000 	nop
  4c227c:	24420017 	addiu	v0,v0,23
  4c2280:	90420000 	lbu	v0,0(v0)
  4c2284:	00000000 	nop
  4c2288:	38420078 	xori	v0,v0,0x78
  4c228c:	304200ff 	andi	v0,v0,0xff
  4c2290:	8f83804c 	lw	v1,-32692(gp)
  4c2294:	00000000 	nop
  4c2298:	24635990 	addiu	v1,v1,22928
  4c229c:	00621821 	addu	v1,v1,v0
  4c22a0:	8fc2003c 	lw	v0,60(s8)
  4c22a4:	00000000 	nop
  4c22a8:	2442000f 	addiu	v0,v0,15
  4c22ac:	90630000 	lbu	v1,0(v1)
  4c22b0:	90420000 	lbu	v0,0(v0)
  4c22b4:	00000000 	nop
  4c22b8:	00621026 	xor	v0,v1,v0
  4c22bc:	304200ff 	andi	v0,v0,0xff
  4c22c0:	8f83804c 	lw	v1,-32692(gp)
  4c22c4:	00000000 	nop
  4c22c8:	24635990 	addiu	v1,v1,22928
  4c22cc:	00621821 	addu	v1,v1,v0
  4c22d0:	8fc2003c 	lw	v0,60(s8)
  4c22d4:	00000000 	nop
  4c22d8:	24420007 	addiu	v0,v0,7
  4c22dc:	90630000 	lbu	v1,0(v1)
  4c22e0:	90420000 	lbu	v0,0(v0)
  4c22e4:	00000000 	nop
  4c22e8:	00621026 	xor	v0,v1,v0
  4c22ec:	304200ff 	andi	v0,v0,0xff
  4c22f0:	00021080 	sll	v0,v0,0x2
  4c22f4:	24420c00 	addiu	v0,v0,3072
  4c22f8:	8f81804c 	lw	at,-32692(gp)
  4c22fc:	00000000 	nop
  4c2300:	24215a90 	addiu	at,at,23184
  4c2304:	00221021 	addu	v0,at,v0
  4c2308:	8c420000 	lw	v0,0(v0)
  4c230c:	00000000 	nop
  4c2310:	00821026 	xor	v0,a0,v0
  4c2314:	afc20018 	sw	v0,24(s8)
  4c2318:	8fc20018 	lw	v0,24(s8)
  4c231c:	00000000 	nop
  4c2320:	00021a00 	sll	v1,v0,0x8
  4c2324:	00021602 	srl	v0,v0,0x18
  4c2328:	00621025 	or	v0,v1,v0
  4c232c:	afc20018 	sw	v0,24(s8)
  4c2330:	8fc30014 	lw	v1,20(s8)
  4c2334:	8fc20018 	lw	v0,24(s8)
  4c2338:	00000000 	nop
  4c233c:	00621021 	addu	v0,v1,v0
  4c2340:	afc20014 	sw	v0,20(s8)
  4c2344:	8fc30018 	lw	v1,24(s8)
  4c2348:	8fc20014 	lw	v0,20(s8)
  4c234c:	00000000 	nop
  4c2350:	00621021 	addu	v0,v1,v0
  4c2354:	afc20018 	sw	v0,24(s8)
  4c2358:	8fc30014 	lw	v1,20(s8)
  4c235c:	8fc20038 	lw	v0,56(s8)
  4c2360:	00000000 	nop
  4c2364:	ac431028 	sw	v1,4136(v0)
  4c2368:	8fc20018 	lw	v0,24(s8)
  4c236c:	00000000 	nop
  4c2370:	00021a40 	sll	v1,v0,0x9
  4c2374:	000215c2 	srl	v0,v0,0x17
  4c2378:	00621825 	or	v1,v1,v0
  4c237c:	8fc20038 	lw	v0,56(s8)
  4c2380:	00000000 	nop
  4c2384:	ac43102c 	sw	v1,4140(v0)
		CALC_K192 (k, 4, 0xE4, 0x45, 0xDD, 0x7D);
  4c2388:	8fc2003c 	lw	v0,60(s8)
  4c238c:	00000000 	nop
  4c2390:	24420010 	addiu	v0,v0,16
  4c2394:	90420000 	lbu	v0,0(v0)
  4c2398:	00000000 	nop
  4c239c:	38420045 	xori	v0,v0,0x45
  4c23a0:	304200ff 	andi	v0,v0,0xff
  4c23a4:	8f83804c 	lw	v1,-32692(gp)
  4c23a8:	00000000 	nop
  4c23ac:	24635890 	addiu	v1,v1,22672
  4c23b0:	00621821 	addu	v1,v1,v0
  4c23b4:	8fc2003c 	lw	v0,60(s8)
  4c23b8:	00000000 	nop
  4c23bc:	24420008 	addiu	v0,v0,8
  4c23c0:	90630000 	lbu	v1,0(v1)
  4c23c4:	90420000 	lbu	v0,0(v0)
  4c23c8:	00000000 	nop
  4c23cc:	00621026 	xor	v0,v1,v0
  4c23d0:	304200ff 	andi	v0,v0,0xff
  4c23d4:	8f81804c 	lw	at,-32692(gp)
  4c23d8:	00000000 	nop
  4c23dc:	24215890 	addiu	at,at,22672
  4c23e0:	00221021 	addu	v0,at,v0
  4c23e4:	90430000 	lbu	v1,0(v0)
  4c23e8:	8fc2003c 	lw	v0,60(s8)
  4c23ec:	00000000 	nop
  4c23f0:	90420000 	lbu	v0,0(v0)
  4c23f4:	00000000 	nop
  4c23f8:	00621026 	xor	v0,v1,v0
  4c23fc:	304200ff 	andi	v0,v0,0xff
  4c2400:	00021080 	sll	v0,v0,0x2
  4c2404:	8f84804c 	lw	a0,-32692(gp)
  4c2408:	00000000 	nop
  4c240c:	24845a90 	addiu	a0,a0,23184
  4c2410:	00822021 	addu	a0,a0,v0
  4c2414:	8fc2003c 	lw	v0,60(s8)
  4c2418:	00000000 	nop
  4c241c:	24420011 	addiu	v0,v0,17
  4c2420:	90420000 	lbu	v0,0(v0)
  4c2424:	00000000 	nop
  4c2428:	38420045 	xori	v0,v0,0x45
  4c242c:	304200ff 	andi	v0,v0,0xff
  4c2430:	8f83804c 	lw	v1,-32692(gp)
  4c2434:	00000000 	nop
  4c2438:	24635990 	addiu	v1,v1,22928
  4c243c:	00621821 	addu	v1,v1,v0
  4c2440:	8fc2003c 	lw	v0,60(s8)
  4c2444:	00000000 	nop
  4c2448:	24420009 	addiu	v0,v0,9
  4c244c:	90630000 	lbu	v1,0(v1)
  4c2450:	90420000 	lbu	v0,0(v0)
  4c2454:	00000000 	nop
  4c2458:	00621026 	xor	v0,v1,v0
  4c245c:	304200ff 	andi	v0,v0,0xff
  4c2460:	8f83804c 	lw	v1,-32692(gp)
  4c2464:	00000000 	nop
  4c2468:	24635890 	addiu	v1,v1,22672
  4c246c:	00621821 	addu	v1,v1,v0
  4c2470:	8fc2003c 	lw	v0,60(s8)
  4c2474:	00000000 	nop
  4c2478:	24420001 	addiu	v0,v0,1
  4c247c:	90630000 	lbu	v1,0(v1)
  4c2480:	90420000 	lbu	v0,0(v0)
  4c2484:	00000000 	nop
  4c2488:	00621026 	xor	v0,v1,v0
  4c248c:	304200ff 	andi	v0,v0,0xff
  4c2490:	00021080 	sll	v0,v0,0x2
  4c2494:	24420400 	addiu	v0,v0,1024
  4c2498:	8f81804c 	lw	at,-32692(gp)
  4c249c:	00000000 	nop
  4c24a0:	24215a90 	addiu	at,at,23184
  4c24a4:	00221021 	addu	v0,at,v0
  4c24a8:	8c830000 	lw	v1,0(a0)
  4c24ac:	8c420000 	lw	v0,0(v0)
  4c24b0:	00000000 	nop
  4c24b4:	00622026 	xor	a0,v1,v0
  4c24b8:	8fc2003c 	lw	v0,60(s8)
  4c24bc:	00000000 	nop
  4c24c0:	24420012 	addiu	v0,v0,18
  4c24c4:	90420000 	lbu	v0,0(v0)
  4c24c8:	00000000 	nop
  4c24cc:	384200e4 	xori	v0,v0,0xe4
  4c24d0:	304200ff 	andi	v0,v0,0xff
  4c24d4:	8f83804c 	lw	v1,-32692(gp)
  4c24d8:	00000000 	nop
  4c24dc:	24635890 	addiu	v1,v1,22672
  4c24e0:	00621821 	addu	v1,v1,v0
  4c24e4:	8fc2003c 	lw	v0,60(s8)
  4c24e8:	00000000 	nop
  4c24ec:	2442000a 	addiu	v0,v0,10
  4c24f0:	90630000 	lbu	v1,0(v1)
  4c24f4:	90420000 	lbu	v0,0(v0)
  4c24f8:	00000000 	nop
  4c24fc:	00621026 	xor	v0,v1,v0
  4c2500:	304200ff 	andi	v0,v0,0xff
  4c2504:	8f83804c 	lw	v1,-32692(gp)
  4c2508:	00000000 	nop
  4c250c:	24635990 	addiu	v1,v1,22928
  4c2510:	00621821 	addu	v1,v1,v0
  4c2514:	8fc2003c 	lw	v0,60(s8)
  4c2518:	00000000 	nop
  4c251c:	24420002 	addiu	v0,v0,2
  4c2520:	90630000 	lbu	v1,0(v1)
  4c2524:	90420000 	lbu	v0,0(v0)
  4c2528:	00000000 	nop
  4c252c:	00621026 	xor	v0,v1,v0
  4c2530:	304200ff 	andi	v0,v0,0xff
  4c2534:	00021080 	sll	v0,v0,0x2
  4c2538:	24420800 	addiu	v0,v0,2048
  4c253c:	8f81804c 	lw	at,-32692(gp)
  4c2540:	00000000 	nop
  4c2544:	24215a90 	addiu	at,at,23184
  4c2548:	00221021 	addu	v0,at,v0
  4c254c:	8c420000 	lw	v0,0(v0)
  4c2550:	00000000 	nop
  4c2554:	00822026 	xor	a0,a0,v0
  4c2558:	8fc2003c 	lw	v0,60(s8)
  4c255c:	00000000 	nop
  4c2560:	24420013 	addiu	v0,v0,19
  4c2564:	90420000 	lbu	v0,0(v0)
  4c2568:	00000000 	nop
  4c256c:	384200e4 	xori	v0,v0,0xe4
  4c2570:	304200ff 	andi	v0,v0,0xff
  4c2574:	8f83804c 	lw	v1,-32692(gp)
  4c2578:	00000000 	nop
  4c257c:	24635990 	addiu	v1,v1,22928
  4c2580:	00621821 	addu	v1,v1,v0
  4c2584:	8fc2003c 	lw	v0,60(s8)
  4c2588:	00000000 	nop
  4c258c:	2442000b 	addiu	v0,v0,11
  4c2590:	90630000 	lbu	v1,0(v1)
  4c2594:	90420000 	lbu	v0,0(v0)
  4c2598:	00000000 	nop
  4c259c:	00621026 	xor	v0,v1,v0
  4c25a0:	304200ff 	andi	v0,v0,0xff
  4c25a4:	8f83804c 	lw	v1,-32692(gp)
  4c25a8:	00000000 	nop
  4c25ac:	24635990 	addiu	v1,v1,22928
  4c25b0:	00621821 	addu	v1,v1,v0
  4c25b4:	8fc2003c 	lw	v0,60(s8)
  4c25b8:	00000000 	nop
  4c25bc:	24420003 	addiu	v0,v0,3
  4c25c0:	90630000 	lbu	v1,0(v1)
  4c25c4:	90420000 	lbu	v0,0(v0)
  4c25c8:	00000000 	nop
  4c25cc:	00621026 	xor	v0,v1,v0
  4c25d0:	304200ff 	andi	v0,v0,0xff
  4c25d4:	00021080 	sll	v0,v0,0x2
  4c25d8:	24420c00 	addiu	v0,v0,3072
  4c25dc:	8f81804c 	lw	at,-32692(gp)
  4c25e0:	00000000 	nop
  4c25e4:	24215a90 	addiu	at,at,23184
  4c25e8:	00221021 	addu	v0,at,v0
  4c25ec:	8c420000 	lw	v0,0(v0)
  4c25f0:	00000000 	nop
  4c25f4:	00821026 	xor	v0,a0,v0
  4c25f8:	afc20014 	sw	v0,20(s8)
  4c25fc:	8fc2003c 	lw	v0,60(s8)
  4c2600:	00000000 	nop
  4c2604:	24420014 	addiu	v0,v0,20
  4c2608:	90420000 	lbu	v0,0(v0)
  4c260c:	00000000 	nop
  4c2610:	3842007d 	xori	v0,v0,0x7d
  4c2614:	304200ff 	andi	v0,v0,0xff
  4c2618:	8f83804c 	lw	v1,-32692(gp)
  4c261c:	00000000 	nop
  4c2620:	24635890 	addiu	v1,v1,22672
  4c2624:	00621821 	addu	v1,v1,v0
  4c2628:	8fc2003c 	lw	v0,60(s8)
  4c262c:	00000000 	nop
  4c2630:	2442000c 	addiu	v0,v0,12
  4c2634:	90630000 	lbu	v1,0(v1)
  4c2638:	90420000 	lbu	v0,0(v0)
  4c263c:	00000000 	nop
  4c2640:	00621026 	xor	v0,v1,v0
  4c2644:	304200ff 	andi	v0,v0,0xff
  4c2648:	8f83804c 	lw	v1,-32692(gp)
  4c264c:	00000000 	nop
  4c2650:	24635890 	addiu	v1,v1,22672
  4c2654:	00621821 	addu	v1,v1,v0
  4c2658:	8fc2003c 	lw	v0,60(s8)
  4c265c:	00000000 	nop
  4c2660:	24420004 	addiu	v0,v0,4
  4c2664:	90630000 	lbu	v1,0(v1)
  4c2668:	90420000 	lbu	v0,0(v0)
  4c266c:	00000000 	nop
  4c2670:	00621026 	xor	v0,v1,v0
  4c2674:	304200ff 	andi	v0,v0,0xff
  4c2678:	00021080 	sll	v0,v0,0x2
  4c267c:	8f84804c 	lw	a0,-32692(gp)
  4c2680:	00000000 	nop
  4c2684:	24845a90 	addiu	a0,a0,23184
  4c2688:	00822021 	addu	a0,a0,v0
  4c268c:	8fc2003c 	lw	v0,60(s8)
  4c2690:	00000000 	nop
  4c2694:	24420015 	addiu	v0,v0,21
  4c2698:	90420000 	lbu	v0,0(v0)
  4c269c:	00000000 	nop
  4c26a0:	3842007d 	xori	v0,v0,0x7d
  4c26a4:	304200ff 	andi	v0,v0,0xff
  4c26a8:	8f83804c 	lw	v1,-32692(gp)
  4c26ac:	00000000 	nop
  4c26b0:	24635990 	addiu	v1,v1,22928
  4c26b4:	00621821 	addu	v1,v1,v0
  4c26b8:	8fc2003c 	lw	v0,60(s8)
  4c26bc:	00000000 	nop
  4c26c0:	2442000d 	addiu	v0,v0,13
  4c26c4:	90630000 	lbu	v1,0(v1)
  4c26c8:	90420000 	lbu	v0,0(v0)
  4c26cc:	00000000 	nop
  4c26d0:	00621026 	xor	v0,v1,v0
  4c26d4:	304200ff 	andi	v0,v0,0xff
  4c26d8:	8f83804c 	lw	v1,-32692(gp)
  4c26dc:	00000000 	nop
  4c26e0:	24635890 	addiu	v1,v1,22672
  4c26e4:	00621821 	addu	v1,v1,v0
  4c26e8:	8fc2003c 	lw	v0,60(s8)
  4c26ec:	00000000 	nop
  4c26f0:	24420005 	addiu	v0,v0,5
  4c26f4:	90630000 	lbu	v1,0(v1)
  4c26f8:	90420000 	lbu	v0,0(v0)
  4c26fc:	00000000 	nop
  4c2700:	00621026 	xor	v0,v1,v0
  4c2704:	304200ff 	andi	v0,v0,0xff
  4c2708:	00021080 	sll	v0,v0,0x2
  4c270c:	24420400 	addiu	v0,v0,1024
  4c2710:	8f81804c 	lw	at,-32692(gp)
  4c2714:	00000000 	nop
  4c2718:	24215a90 	addiu	at,at,23184
  4c271c:	00221021 	addu	v0,at,v0
  4c2720:	8c830000 	lw	v1,0(a0)
  4c2724:	8c420000 	lw	v0,0(v0)
  4c2728:	00000000 	nop
  4c272c:	00622026 	xor	a0,v1,v0
  4c2730:	8fc2003c 	lw	v0,60(s8)
  4c2734:	00000000 	nop
  4c2738:	24420016 	addiu	v0,v0,22
  4c273c:	90420000 	lbu	v0,0(v0)
  4c2740:	00000000 	nop
  4c2744:	384200dd 	xori	v0,v0,0xdd
  4c2748:	304200ff 	andi	v0,v0,0xff
  4c274c:	8f83804c 	lw	v1,-32692(gp)
  4c2750:	00000000 	nop
  4c2754:	24635890 	addiu	v1,v1,22672
  4c2758:	00621821 	addu	v1,v1,v0
  4c275c:	8fc2003c 	lw	v0,60(s8)
  4c2760:	00000000 	nop
  4c2764:	2442000e 	addiu	v0,v0,14
  4c2768:	90630000 	lbu	v1,0(v1)
  4c276c:	90420000 	lbu	v0,0(v0)
  4c2770:	00000000 	nop
  4c2774:	00621026 	xor	v0,v1,v0
  4c2778:	304200ff 	andi	v0,v0,0xff
  4c277c:	8f83804c 	lw	v1,-32692(gp)
  4c2780:	00000000 	nop
  4c2784:	24635990 	addiu	v1,v1,22928
  4c2788:	00621821 	addu	v1,v1,v0
  4c278c:	8fc2003c 	lw	v0,60(s8)
  4c2790:	00000000 	nop
  4c2794:	24420006 	addiu	v0,v0,6
  4c2798:	90630000 	lbu	v1,0(v1)
  4c279c:	90420000 	lbu	v0,0(v0)
  4c27a0:	00000000 	nop
  4c27a4:	00621026 	xor	v0,v1,v0
  4c27a8:	304200ff 	andi	v0,v0,0xff
  4c27ac:	00021080 	sll	v0,v0,0x2
  4c27b0:	24420800 	addiu	v0,v0,2048
  4c27b4:	8f81804c 	lw	at,-32692(gp)
  4c27b8:	00000000 	nop
  4c27bc:	24215a90 	addiu	at,at,23184
  4c27c0:	00221021 	addu	v0,at,v0
  4c27c4:	8c420000 	lw	v0,0(v0)
  4c27c8:	00000000 	nop
  4c27cc:	00822026 	xor	a0,a0,v0
  4c27d0:	8fc2003c 	lw	v0,60(s8)
  4c27d4:	00000000 	nop
  4c27d8:	24420017 	addiu	v0,v0,23
  4c27dc:	90420000 	lbu	v0,0(v0)
  4c27e0:	00000000 	nop
  4c27e4:	384200dd 	xori	v0,v0,0xdd
  4c27e8:	304200ff 	andi	v0,v0,0xff
  4c27ec:	8f83804c 	lw	v1,-32692(gp)
  4c27f0:	00000000 	nop
  4c27f4:	24635990 	addiu	v1,v1,22928
  4c27f8:	00621821 	addu	v1,v1,v0
  4c27fc:	8fc2003c 	lw	v0,60(s8)
  4c2800:	00000000 	nop
  4c2804:	2442000f 	addiu	v0,v0,15
  4c2808:	90630000 	lbu	v1,0(v1)
  4c280c:	90420000 	lbu	v0,0(v0)
  4c2810:	00000000 	nop
  4c2814:	00621026 	xor	v0,v1,v0
  4c2818:	304200ff 	andi	v0,v0,0xff
  4c281c:	8f83804c 	lw	v1,-32692(gp)
  4c2820:	00000000 	nop
  4c2824:	24635990 	addiu	v1,v1,22928
  4c2828:	00621821 	addu	v1,v1,v0
  4c282c:	8fc2003c 	lw	v0,60(s8)
  4c2830:	00000000 	nop
  4c2834:	24420007 	addiu	v0,v0,7
  4c2838:	90630000 	lbu	v1,0(v1)
  4c283c:	90420000 	lbu	v0,0(v0)
  4c2840:	00000000 	nop
  4c2844:	00621026 	xor	v0,v1,v0
  4c2848:	304200ff 	andi	v0,v0,0xff
  4c284c:	00021080 	sll	v0,v0,0x2
  4c2850:	24420c00 	addiu	v0,v0,3072
  4c2854:	8f81804c 	lw	at,-32692(gp)
  4c2858:	00000000 	nop
  4c285c:	24215a90 	addiu	at,at,23184
  4c2860:	00221021 	addu	v0,at,v0
  4c2864:	8c420000 	lw	v0,0(v0)
  4c2868:	00000000 	nop
  4c286c:	00821026 	xor	v0,a0,v0
  4c2870:	afc20018 	sw	v0,24(s8)
  4c2874:	8fc20018 	lw	v0,24(s8)
  4c2878:	00000000 	nop
  4c287c:	00021a00 	sll	v1,v0,0x8
  4c2880:	00021602 	srl	v0,v0,0x18
  4c2884:	00621025 	or	v0,v1,v0
  4c2888:	afc20018 	sw	v0,24(s8)
  4c288c:	8fc30014 	lw	v1,20(s8)
  4c2890:	8fc20018 	lw	v0,24(s8)
  4c2894:	00000000 	nop
  4c2898:	00621021 	addu	v0,v1,v0
  4c289c:	afc20014 	sw	v0,20(s8)
  4c28a0:	8fc30018 	lw	v1,24(s8)
  4c28a4:	8fc20014 	lw	v0,20(s8)
  4c28a8:	00000000 	nop
  4c28ac:	00621021 	addu	v0,v1,v0
  4c28b0:	afc20018 	sw	v0,24(s8)
  4c28b4:	8fc30014 	lw	v1,20(s8)
  4c28b8:	8fc20038 	lw	v0,56(s8)
  4c28bc:	00000000 	nop
  4c28c0:	ac431030 	sw	v1,4144(v0)
  4c28c4:	8fc20018 	lw	v0,24(s8)
  4c28c8:	00000000 	nop
  4c28cc:	00021a40 	sll	v1,v0,0x9
  4c28d0:	000215c2 	srl	v0,v0,0x17
  4c28d4:	00621825 	or	v1,v1,v0
  4c28d8:	8fc20038 	lw	v0,56(s8)
  4c28dc:	00000000 	nop
  4c28e0:	ac431034 	sw	v1,4148(v0)
		CALC_K192 (k, 6, 0xD1, 0xE8, 0x38, 0x4B);
  4c28e4:	8fc2003c 	lw	v0,60(s8)
  4c28e8:	00000000 	nop
  4c28ec:	24420010 	addiu	v0,v0,16
  4c28f0:	90420000 	lbu	v0,0(v0)
  4c28f4:	00000000 	nop
  4c28f8:	384200e8 	xori	v0,v0,0xe8
  4c28fc:	304200ff 	andi	v0,v0,0xff
  4c2900:	8f83804c 	lw	v1,-32692(gp)
  4c2904:	00000000 	nop
  4c2908:	24635890 	addiu	v1,v1,22672
  4c290c:	00621821 	addu	v1,v1,v0
  4c2910:	8fc2003c 	lw	v0,60(s8)
  4c2914:	00000000 	nop
  4c2918:	24420008 	addiu	v0,v0,8
  4c291c:	90630000 	lbu	v1,0(v1)
  4c2920:	90420000 	lbu	v0,0(v0)
  4c2924:	00000000 	nop
  4c2928:	00621026 	xor	v0,v1,v0
  4c292c:	304200ff 	andi	v0,v0,0xff
  4c2930:	8f81804c 	lw	at,-32692(gp)
  4c2934:	00000000 	nop
  4c2938:	24215890 	addiu	at,at,22672
  4c293c:	00221021 	addu	v0,at,v0
  4c2940:	90430000 	lbu	v1,0(v0)
  4c2944:	8fc2003c 	lw	v0,60(s8)
  4c2948:	00000000 	nop
  4c294c:	90420000 	lbu	v0,0(v0)
  4c2950:	00000000 	nop
  4c2954:	00621026 	xor	v0,v1,v0
  4c2958:	304200ff 	andi	v0,v0,0xff
  4c295c:	00021080 	sll	v0,v0,0x2
  4c2960:	8f84804c 	lw	a0,-32692(gp)
  4c2964:	00000000 	nop
  4c2968:	24845a90 	addiu	a0,a0,23184
  4c296c:	00822021 	addu	a0,a0,v0
  4c2970:	8fc2003c 	lw	v0,60(s8)
  4c2974:	00000000 	nop
  4c2978:	24420011 	addiu	v0,v0,17
  4c297c:	90420000 	lbu	v0,0(v0)
  4c2980:	00000000 	nop
  4c2984:	384200e8 	xori	v0,v0,0xe8
  4c2988:	304200ff 	andi	v0,v0,0xff
  4c298c:	8f83804c 	lw	v1,-32692(gp)
  4c2990:	00000000 	nop
  4c2994:	24635990 	addiu	v1,v1,22928
  4c2998:	00621821 	addu	v1,v1,v0
  4c299c:	8fc2003c 	lw	v0,60(s8)
  4c29a0:	00000000 	nop
  4c29a4:	24420009 	addiu	v0,v0,9
  4c29a8:	90630000 	lbu	v1,0(v1)
  4c29ac:	90420000 	lbu	v0,0(v0)
  4c29b0:	00000000 	nop
  4c29b4:	00621026 	xor	v0,v1,v0
  4c29b8:	304200ff 	andi	v0,v0,0xff
  4c29bc:	8f83804c 	lw	v1,-32692(gp)
  4c29c0:	00000000 	nop
  4c29c4:	24635890 	addiu	v1,v1,22672
  4c29c8:	00621821 	addu	v1,v1,v0
  4c29cc:	8fc2003c 	lw	v0,60(s8)
  4c29d0:	00000000 	nop
  4c29d4:	24420001 	addiu	v0,v0,1
  4c29d8:	90630000 	lbu	v1,0(v1)
  4c29dc:	90420000 	lbu	v0,0(v0)
  4c29e0:	00000000 	nop
  4c29e4:	00621026 	xor	v0,v1,v0
  4c29e8:	304200ff 	andi	v0,v0,0xff
  4c29ec:	00021080 	sll	v0,v0,0x2
  4c29f0:	24420400 	addiu	v0,v0,1024
  4c29f4:	8f81804c 	lw	at,-32692(gp)
  4c29f8:	00000000 	nop
  4c29fc:	24215a90 	addiu	at,at,23184
  4c2a00:	00221021 	addu	v0,at,v0
  4c2a04:	8c830000 	lw	v1,0(a0)
  4c2a08:	8c420000 	lw	v0,0(v0)
  4c2a0c:	00000000 	nop
  4c2a10:	00622026 	xor	a0,v1,v0
  4c2a14:	8fc2003c 	lw	v0,60(s8)
  4c2a18:	00000000 	nop
  4c2a1c:	24420012 	addiu	v0,v0,18
  4c2a20:	90420000 	lbu	v0,0(v0)
  4c2a24:	00000000 	nop
  4c2a28:	384200d1 	xori	v0,v0,0xd1
  4c2a2c:	304200ff 	andi	v0,v0,0xff
  4c2a30:	8f83804c 	lw	v1,-32692(gp)
  4c2a34:	00000000 	nop
  4c2a38:	24635890 	addiu	v1,v1,22672
  4c2a3c:	00621821 	addu	v1,v1,v0
  4c2a40:	8fc2003c 	lw	v0,60(s8)
  4c2a44:	00000000 	nop
  4c2a48:	2442000a 	addiu	v0,v0,10
  4c2a4c:	90630000 	lbu	v1,0(v1)
  4c2a50:	90420000 	lbu	v0,0(v0)
  4c2a54:	00000000 	nop
  4c2a58:	00621026 	xor	v0,v1,v0
  4c2a5c:	304200ff 	andi	v0,v0,0xff
  4c2a60:	8f83804c 	lw	v1,-32692(gp)
  4c2a64:	00000000 	nop
  4c2a68:	24635990 	addiu	v1,v1,22928
  4c2a6c:	00621821 	addu	v1,v1,v0
  4c2a70:	8fc2003c 	lw	v0,60(s8)
  4c2a74:	00000000 	nop
  4c2a78:	24420002 	addiu	v0,v0,2
  4c2a7c:	90630000 	lbu	v1,0(v1)
  4c2a80:	90420000 	lbu	v0,0(v0)
  4c2a84:	00000000 	nop
  4c2a88:	00621026 	xor	v0,v1,v0
  4c2a8c:	304200ff 	andi	v0,v0,0xff
  4c2a90:	00021080 	sll	v0,v0,0x2
  4c2a94:	24420800 	addiu	v0,v0,2048
  4c2a98:	8f81804c 	lw	at,-32692(gp)
  4c2a9c:	00000000 	nop
  4c2aa0:	24215a90 	addiu	at,at,23184
  4c2aa4:	00221021 	addu	v0,at,v0
  4c2aa8:	8c420000 	lw	v0,0(v0)
  4c2aac:	00000000 	nop
  4c2ab0:	00822026 	xor	a0,a0,v0
  4c2ab4:	8fc2003c 	lw	v0,60(s8)
  4c2ab8:	00000000 	nop
  4c2abc:	24420013 	addiu	v0,v0,19
  4c2ac0:	90420000 	lbu	v0,0(v0)
  4c2ac4:	00000000 	nop
  4c2ac8:	384200d1 	xori	v0,v0,0xd1
  4c2acc:	304200ff 	andi	v0,v0,0xff
  4c2ad0:	8f83804c 	lw	v1,-32692(gp)
  4c2ad4:	00000000 	nop
  4c2ad8:	24635990 	addiu	v1,v1,22928
  4c2adc:	00621821 	addu	v1,v1,v0
  4c2ae0:	8fc2003c 	lw	v0,60(s8)
  4c2ae4:	00000000 	nop
  4c2ae8:	2442000b 	addiu	v0,v0,11
  4c2aec:	90630000 	lbu	v1,0(v1)
  4c2af0:	90420000 	lbu	v0,0(v0)
  4c2af4:	00000000 	nop
  4c2af8:	00621026 	xor	v0,v1,v0
  4c2afc:	304200ff 	andi	v0,v0,0xff
  4c2b00:	8f83804c 	lw	v1,-32692(gp)
  4c2b04:	00000000 	nop
  4c2b08:	24635990 	addiu	v1,v1,22928
  4c2b0c:	00621821 	addu	v1,v1,v0
  4c2b10:	8fc2003c 	lw	v0,60(s8)
  4c2b14:	00000000 	nop
  4c2b18:	24420003 	addiu	v0,v0,3
  4c2b1c:	90630000 	lbu	v1,0(v1)
  4c2b20:	90420000 	lbu	v0,0(v0)
  4c2b24:	00000000 	nop
  4c2b28:	00621026 	xor	v0,v1,v0
  4c2b2c:	304200ff 	andi	v0,v0,0xff
  4c2b30:	00021080 	sll	v0,v0,0x2
  4c2b34:	24420c00 	addiu	v0,v0,3072
  4c2b38:	8f81804c 	lw	at,-32692(gp)
  4c2b3c:	00000000 	nop
  4c2b40:	24215a90 	addiu	at,at,23184
  4c2b44:	00221021 	addu	v0,at,v0
  4c2b48:	8c420000 	lw	v0,0(v0)
  4c2b4c:	00000000 	nop
  4c2b50:	00821026 	xor	v0,a0,v0
  4c2b54:	afc20014 	sw	v0,20(s8)
  4c2b58:	8fc2003c 	lw	v0,60(s8)
  4c2b5c:	00000000 	nop
  4c2b60:	24420014 	addiu	v0,v0,20
  4c2b64:	90420000 	lbu	v0,0(v0)
  4c2b68:	00000000 	nop
  4c2b6c:	3842004b 	xori	v0,v0,0x4b
  4c2b70:	304200ff 	andi	v0,v0,0xff
  4c2b74:	8f83804c 	lw	v1,-32692(gp)
  4c2b78:	00000000 	nop
  4c2b7c:	24635890 	addiu	v1,v1,22672
  4c2b80:	00621821 	addu	v1,v1,v0
  4c2b84:	8fc2003c 	lw	v0,60(s8)
  4c2b88:	00000000 	nop
  4c2b8c:	2442000c 	addiu	v0,v0,12
  4c2b90:	90630000 	lbu	v1,0(v1)
  4c2b94:	90420000 	lbu	v0,0(v0)
  4c2b98:	00000000 	nop
  4c2b9c:	00621026 	xor	v0,v1,v0
  4c2ba0:	304200ff 	andi	v0,v0,0xff
  4c2ba4:	8f83804c 	lw	v1,-32692(gp)
  4c2ba8:	00000000 	nop
  4c2bac:	24635890 	addiu	v1,v1,22672
  4c2bb0:	00621821 	addu	v1,v1,v0
  4c2bb4:	8fc2003c 	lw	v0,60(s8)
  4c2bb8:	00000000 	nop
  4c2bbc:	24420004 	addiu	v0,v0,4
  4c2bc0:	90630000 	lbu	v1,0(v1)
  4c2bc4:	90420000 	lbu	v0,0(v0)
  4c2bc8:	00000000 	nop
  4c2bcc:	00621026 	xor	v0,v1,v0
  4c2bd0:	304200ff 	andi	v0,v0,0xff
  4c2bd4:	00021080 	sll	v0,v0,0x2
  4c2bd8:	8f84804c 	lw	a0,-32692(gp)
  4c2bdc:	00000000 	nop
  4c2be0:	24845a90 	addiu	a0,a0,23184
  4c2be4:	00822021 	addu	a0,a0,v0
  4c2be8:	8fc2003c 	lw	v0,60(s8)
  4c2bec:	00000000 	nop
  4c2bf0:	24420015 	addiu	v0,v0,21
  4c2bf4:	90420000 	lbu	v0,0(v0)
  4c2bf8:	00000000 	nop
  4c2bfc:	3842004b 	xori	v0,v0,0x4b
  4c2c00:	304200ff 	andi	v0,v0,0xff
  4c2c04:	8f83804c 	lw	v1,-32692(gp)
  4c2c08:	00000000 	nop
  4c2c0c:	24635990 	addiu	v1,v1,22928
  4c2c10:	00621821 	addu	v1,v1,v0
  4c2c14:	8fc2003c 	lw	v0,60(s8)
  4c2c18:	00000000 	nop
  4c2c1c:	2442000d 	addiu	v0,v0,13
  4c2c20:	90630000 	lbu	v1,0(v1)
  4c2c24:	90420000 	lbu	v0,0(v0)
  4c2c28:	00000000 	nop
  4c2c2c:	00621026 	xor	v0,v1,v0
  4c2c30:	304200ff 	andi	v0,v0,0xff
  4c2c34:	8f83804c 	lw	v1,-32692(gp)
  4c2c38:	00000000 	nop
  4c2c3c:	24635890 	addiu	v1,v1,22672
  4c2c40:	00621821 	addu	v1,v1,v0
  4c2c44:	8fc2003c 	lw	v0,60(s8)
  4c2c48:	00000000 	nop
  4c2c4c:	24420005 	addiu	v0,v0,5
  4c2c50:	90630000 	lbu	v1,0(v1)
  4c2c54:	90420000 	lbu	v0,0(v0)
  4c2c58:	00000000 	nop
  4c2c5c:	00621026 	xor	v0,v1,v0
  4c2c60:	304200ff 	andi	v0,v0,0xff
  4c2c64:	00021080 	sll	v0,v0,0x2
  4c2c68:	24420400 	addiu	v0,v0,1024
  4c2c6c:	8f81804c 	lw	at,-32692(gp)
  4c2c70:	00000000 	nop
  4c2c74:	24215a90 	addiu	at,at,23184
  4c2c78:	00221021 	addu	v0,at,v0
  4c2c7c:	8c830000 	lw	v1,0(a0)
  4c2c80:	8c420000 	lw	v0,0(v0)
  4c2c84:	00000000 	nop
  4c2c88:	00622026 	xor	a0,v1,v0
  4c2c8c:	8fc2003c 	lw	v0,60(s8)
  4c2c90:	00000000 	nop
  4c2c94:	24420016 	addiu	v0,v0,22
  4c2c98:	90420000 	lbu	v0,0(v0)
  4c2c9c:	00000000 	nop
  4c2ca0:	38420038 	xori	v0,v0,0x38
  4c2ca4:	304200ff 	andi	v0,v0,0xff
  4c2ca8:	8f83804c 	lw	v1,-32692(gp)
  4c2cac:	00000000 	nop
  4c2cb0:	24635890 	addiu	v1,v1,22672
  4c2cb4:	00621821 	addu	v1,v1,v0
  4c2cb8:	8fc2003c 	lw	v0,60(s8)
  4c2cbc:	00000000 	nop
  4c2cc0:	2442000e 	addiu	v0,v0,14
  4c2cc4:	90630000 	lbu	v1,0(v1)
  4c2cc8:	90420000 	lbu	v0,0(v0)
  4c2ccc:	00000000 	nop
  4c2cd0:	00621026 	xor	v0,v1,v0
  4c2cd4:	304200ff 	andi	v0,v0,0xff
  4c2cd8:	8f83804c 	lw	v1,-32692(gp)
  4c2cdc:	00000000 	nop
  4c2ce0:	24635990 	addiu	v1,v1,22928
  4c2ce4:	00621821 	addu	v1,v1,v0
  4c2ce8:	8fc2003c 	lw	v0,60(s8)
  4c2cec:	00000000 	nop
  4c2cf0:	24420006 	addiu	v0,v0,6
  4c2cf4:	90630000 	lbu	v1,0(v1)
  4c2cf8:	90420000 	lbu	v0,0(v0)
  4c2cfc:	00000000 	nop
  4c2d00:	00621026 	xor	v0,v1,v0
  4c2d04:	304200ff 	andi	v0,v0,0xff
  4c2d08:	00021080 	sll	v0,v0,0x2
  4c2d0c:	24420800 	addiu	v0,v0,2048
  4c2d10:	8f81804c 	lw	at,-32692(gp)
  4c2d14:	00000000 	nop
  4c2d18:	24215a90 	addiu	at,at,23184
  4c2d1c:	00221021 	addu	v0,at,v0
  4c2d20:	8c420000 	lw	v0,0(v0)
  4c2d24:	00000000 	nop
  4c2d28:	00822026 	xor	a0,a0,v0
  4c2d2c:	8fc2003c 	lw	v0,60(s8)
  4c2d30:	00000000 	nop
  4c2d34:	24420017 	addiu	v0,v0,23
  4c2d38:	90420000 	lbu	v0,0(v0)
  4c2d3c:	00000000 	nop
  4c2d40:	38420038 	xori	v0,v0,0x38
  4c2d44:	304200ff 	andi	v0,v0,0xff
  4c2d48:	8f83804c 	lw	v1,-32692(gp)
  4c2d4c:	00000000 	nop
  4c2d50:	24635990 	addiu	v1,v1,22928
  4c2d54:	00621821 	addu	v1,v1,v0
  4c2d58:	8fc2003c 	lw	v0,60(s8)
  4c2d5c:	00000000 	nop
  4c2d60:	2442000f 	addiu	v0,v0,15
  4c2d64:	90630000 	lbu	v1,0(v1)
  4c2d68:	90420000 	lbu	v0,0(v0)
  4c2d6c:	00000000 	nop
  4c2d70:	00621026 	xor	v0,v1,v0
  4c2d74:	304200ff 	andi	v0,v0,0xff
  4c2d78:	8f83804c 	lw	v1,-32692(gp)
  4c2d7c:	00000000 	nop
  4c2d80:	24635990 	addiu	v1,v1,22928
  4c2d84:	00621821 	addu	v1,v1,v0
  4c2d88:	8fc2003c 	lw	v0,60(s8)
  4c2d8c:	00000000 	nop
  4c2d90:	24420007 	addiu	v0,v0,7
  4c2d94:	90630000 	lbu	v1,0(v1)
  4c2d98:	90420000 	lbu	v0,0(v0)
  4c2d9c:	00000000 	nop
  4c2da0:	00621026 	xor	v0,v1,v0
  4c2da4:	304200ff 	andi	v0,v0,0xff
  4c2da8:	00021080 	sll	v0,v0,0x2
  4c2dac:	24420c00 	addiu	v0,v0,3072
  4c2db0:	8f81804c 	lw	at,-32692(gp)
  4c2db4:	00000000 	nop
  4c2db8:	24215a90 	addiu	at,at,23184
  4c2dbc:	00221021 	addu	v0,at,v0
  4c2dc0:	8c420000 	lw	v0,0(v0)
  4c2dc4:	00000000 	nop
  4c2dc8:	00821026 	xor	v0,a0,v0
  4c2dcc:	afc20018 	sw	v0,24(s8)
  4c2dd0:	8fc20018 	lw	v0,24(s8)
  4c2dd4:	00000000 	nop
  4c2dd8:	00021a00 	sll	v1,v0,0x8
  4c2ddc:	00021602 	srl	v0,v0,0x18
  4c2de0:	00621025 	or	v0,v1,v0
  4c2de4:	afc20018 	sw	v0,24(s8)
  4c2de8:	8fc30014 	lw	v1,20(s8)
  4c2dec:	8fc20018 	lw	v0,24(s8)
  4c2df0:	00000000 	nop
  4c2df4:	00621021 	addu	v0,v1,v0
  4c2df8:	afc20014 	sw	v0,20(s8)
  4c2dfc:	8fc30018 	lw	v1,24(s8)
  4c2e00:	8fc20014 	lw	v0,20(s8)
  4c2e04:	00000000 	nop
  4c2e08:	00621021 	addu	v0,v1,v0
  4c2e0c:	afc20018 	sw	v0,24(s8)
  4c2e10:	8fc30014 	lw	v1,20(s8)
  4c2e14:	8fc20038 	lw	v0,56(s8)
  4c2e18:	00000000 	nop
  4c2e1c:	ac431038 	sw	v1,4152(v0)
  4c2e20:	8fc20018 	lw	v0,24(s8)
  4c2e24:	00000000 	nop
  4c2e28:	00021a40 	sll	v1,v0,0x9
  4c2e2c:	000215c2 	srl	v0,v0,0x17
  4c2e30:	00621825 	or	v1,v1,v0
  4c2e34:	8fc20038 	lw	v0,56(s8)
  4c2e38:	00000000 	nop
  4c2e3c:	ac43103c 	sw	v1,4156(v0)
		CALC_K192 (k, 8, 0x0D, 0xD6, 0xC6, 0x32);
  4c2e40:	8fc2003c 	lw	v0,60(s8)
  4c2e44:	00000000 	nop
  4c2e48:	24420010 	addiu	v0,v0,16
  4c2e4c:	90420000 	lbu	v0,0(v0)
  4c2e50:	00000000 	nop
  4c2e54:	384200d6 	xori	v0,v0,0xd6
  4c2e58:	304200ff 	andi	v0,v0,0xff
  4c2e5c:	8f83804c 	lw	v1,-32692(gp)
  4c2e60:	00000000 	nop
  4c2e64:	24635890 	addiu	v1,v1,22672
  4c2e68:	00621821 	addu	v1,v1,v0
  4c2e6c:	8fc2003c 	lw	v0,60(s8)
  4c2e70:	00000000 	nop
  4c2e74:	24420008 	addiu	v0,v0,8
  4c2e78:	90630000 	lbu	v1,0(v1)
  4c2e7c:	90420000 	lbu	v0,0(v0)
  4c2e80:	00000000 	nop
  4c2e84:	00621026 	xor	v0,v1,v0
  4c2e88:	304200ff 	andi	v0,v0,0xff
  4c2e8c:	8f81804c 	lw	at,-32692(gp)
  4c2e90:	00000000 	nop
  4c2e94:	24215890 	addiu	at,at,22672
  4c2e98:	00221021 	addu	v0,at,v0
  4c2e9c:	90430000 	lbu	v1,0(v0)
  4c2ea0:	8fc2003c 	lw	v0,60(s8)
  4c2ea4:	00000000 	nop
  4c2ea8:	90420000 	lbu	v0,0(v0)
  4c2eac:	00000000 	nop
  4c2eb0:	00621026 	xor	v0,v1,v0
  4c2eb4:	304200ff 	andi	v0,v0,0xff
  4c2eb8:	00021080 	sll	v0,v0,0x2
  4c2ebc:	8f84804c 	lw	a0,-32692(gp)
  4c2ec0:	00000000 	nop
  4c2ec4:	24845a90 	addiu	a0,a0,23184
  4c2ec8:	00822021 	addu	a0,a0,v0
  4c2ecc:	8fc2003c 	lw	v0,60(s8)
  4c2ed0:	00000000 	nop
  4c2ed4:	24420011 	addiu	v0,v0,17
  4c2ed8:	90420000 	lbu	v0,0(v0)
  4c2edc:	00000000 	nop
  4c2ee0:	384200d6 	xori	v0,v0,0xd6
  4c2ee4:	304200ff 	andi	v0,v0,0xff
  4c2ee8:	8f83804c 	lw	v1,-32692(gp)
  4c2eec:	00000000 	nop
  4c2ef0:	24635990 	addiu	v1,v1,22928
  4c2ef4:	00621821 	addu	v1,v1,v0
  4c2ef8:	8fc2003c 	lw	v0,60(s8)
  4c2efc:	00000000 	nop
  4c2f00:	24420009 	addiu	v0,v0,9
  4c2f04:	90630000 	lbu	v1,0(v1)
  4c2f08:	90420000 	lbu	v0,0(v0)
  4c2f0c:	00000000 	nop
  4c2f10:	00621026 	xor	v0,v1,v0
  4c2f14:	304200ff 	andi	v0,v0,0xff
  4c2f18:	8f83804c 	lw	v1,-32692(gp)
  4c2f1c:	00000000 	nop
  4c2f20:	24635890 	addiu	v1,v1,22672
  4c2f24:	00621821 	addu	v1,v1,v0
  4c2f28:	8fc2003c 	lw	v0,60(s8)
  4c2f2c:	00000000 	nop
  4c2f30:	24420001 	addiu	v0,v0,1
  4c2f34:	90630000 	lbu	v1,0(v1)
  4c2f38:	90420000 	lbu	v0,0(v0)
  4c2f3c:	00000000 	nop
  4c2f40:	00621026 	xor	v0,v1,v0
  4c2f44:	304200ff 	andi	v0,v0,0xff
  4c2f48:	00021080 	sll	v0,v0,0x2
  4c2f4c:	24420400 	addiu	v0,v0,1024
  4c2f50:	8f81804c 	lw	at,-32692(gp)
  4c2f54:	00000000 	nop
  4c2f58:	24215a90 	addiu	at,at,23184
  4c2f5c:	00221021 	addu	v0,at,v0
  4c2f60:	8c830000 	lw	v1,0(a0)
  4c2f64:	8c420000 	lw	v0,0(v0)
  4c2f68:	00000000 	nop
  4c2f6c:	00622026 	xor	a0,v1,v0
  4c2f70:	8fc2003c 	lw	v0,60(s8)
  4c2f74:	00000000 	nop
  4c2f78:	24420012 	addiu	v0,v0,18
  4c2f7c:	90420000 	lbu	v0,0(v0)
  4c2f80:	00000000 	nop
  4c2f84:	3842000d 	xori	v0,v0,0xd
  4c2f88:	304200ff 	andi	v0,v0,0xff
  4c2f8c:	8f83804c 	lw	v1,-32692(gp)
  4c2f90:	00000000 	nop
  4c2f94:	24635890 	addiu	v1,v1,22672
  4c2f98:	00621821 	addu	v1,v1,v0
  4c2f9c:	8fc2003c 	lw	v0,60(s8)
  4c2fa0:	00000000 	nop
  4c2fa4:	2442000a 	addiu	v0,v0,10
  4c2fa8:	90630000 	lbu	v1,0(v1)
  4c2fac:	90420000 	lbu	v0,0(v0)
  4c2fb0:	00000000 	nop
  4c2fb4:	00621026 	xor	v0,v1,v0
  4c2fb8:	304200ff 	andi	v0,v0,0xff
  4c2fbc:	8f83804c 	lw	v1,-32692(gp)
  4c2fc0:	00000000 	nop
  4c2fc4:	24635990 	addiu	v1,v1,22928
  4c2fc8:	00621821 	addu	v1,v1,v0
  4c2fcc:	8fc2003c 	lw	v0,60(s8)
  4c2fd0:	00000000 	nop
  4c2fd4:	24420002 	addiu	v0,v0,2
  4c2fd8:	90630000 	lbu	v1,0(v1)
  4c2fdc:	90420000 	lbu	v0,0(v0)
  4c2fe0:	00000000 	nop
  4c2fe4:	00621026 	xor	v0,v1,v0
  4c2fe8:	304200ff 	andi	v0,v0,0xff
  4c2fec:	00021080 	sll	v0,v0,0x2
  4c2ff0:	24420800 	addiu	v0,v0,2048
  4c2ff4:	8f81804c 	lw	at,-32692(gp)
  4c2ff8:	00000000 	nop
  4c2ffc:	24215a90 	addiu	at,at,23184
  4c3000:	00221021 	addu	v0,at,v0
  4c3004:	8c420000 	lw	v0,0(v0)
  4c3008:	00000000 	nop
  4c300c:	00822026 	xor	a0,a0,v0
  4c3010:	8fc2003c 	lw	v0,60(s8)
  4c3014:	00000000 	nop
  4c3018:	24420013 	addiu	v0,v0,19
  4c301c:	90420000 	lbu	v0,0(v0)
  4c3020:	00000000 	nop
  4c3024:	3842000d 	xori	v0,v0,0xd
  4c3028:	304200ff 	andi	v0,v0,0xff
  4c302c:	8f83804c 	lw	v1,-32692(gp)
  4c3030:	00000000 	nop
  4c3034:	24635990 	addiu	v1,v1,22928
  4c3038:	00621821 	addu	v1,v1,v0
  4c303c:	8fc2003c 	lw	v0,60(s8)
  4c3040:	00000000 	nop
  4c3044:	2442000b 	addiu	v0,v0,11
  4c3048:	90630000 	lbu	v1,0(v1)
  4c304c:	90420000 	lbu	v0,0(v0)
  4c3050:	00000000 	nop
  4c3054:	00621026 	xor	v0,v1,v0
  4c3058:	304200ff 	andi	v0,v0,0xff
  4c305c:	8f83804c 	lw	v1,-32692(gp)
  4c3060:	00000000 	nop
  4c3064:	24635990 	addiu	v1,v1,22928
  4c3068:	00621821 	addu	v1,v1,v0
  4c306c:	8fc2003c 	lw	v0,60(s8)
  4c3070:	00000000 	nop
  4c3074:	24420003 	addiu	v0,v0,3
  4c3078:	90630000 	lbu	v1,0(v1)
  4c307c:	90420000 	lbu	v0,0(v0)
  4c3080:	00000000 	nop
  4c3084:	00621026 	xor	v0,v1,v0
  4c3088:	304200ff 	andi	v0,v0,0xff
  4c308c:	00021080 	sll	v0,v0,0x2
  4c3090:	24420c00 	addiu	v0,v0,3072
  4c3094:	8f81804c 	lw	at,-32692(gp)
  4c3098:	00000000 	nop
  4c309c:	24215a90 	addiu	at,at,23184
  4c30a0:	00221021 	addu	v0,at,v0
  4c30a4:	8c420000 	lw	v0,0(v0)
  4c30a8:	00000000 	nop
  4c30ac:	00821026 	xor	v0,a0,v0
  4c30b0:	afc20014 	sw	v0,20(s8)
  4c30b4:	8fc2003c 	lw	v0,60(s8)
  4c30b8:	00000000 	nop
  4c30bc:	24420014 	addiu	v0,v0,20
  4c30c0:	90420000 	lbu	v0,0(v0)
  4c30c4:	00000000 	nop
  4c30c8:	38420032 	xori	v0,v0,0x32
  4c30cc:	304200ff 	andi	v0,v0,0xff
  4c30d0:	8f83804c 	lw	v1,-32692(gp)
  4c30d4:	00000000 	nop
  4c30d8:	24635890 	addiu	v1,v1,22672
  4c30dc:	00621821 	addu	v1,v1,v0
  4c30e0:	8fc2003c 	lw	v0,60(s8)
  4c30e4:	00000000 	nop
  4c30e8:	2442000c 	addiu	v0,v0,12
  4c30ec:	90630000 	lbu	v1,0(v1)
  4c30f0:	90420000 	lbu	v0,0(v0)
  4c30f4:	00000000 	nop
  4c30f8:	00621026 	xor	v0,v1,v0
  4c30fc:	304200ff 	andi	v0,v0,0xff
  4c3100:	8f83804c 	lw	v1,-32692(gp)
  4c3104:	00000000 	nop
  4c3108:	24635890 	addiu	v1,v1,22672
  4c310c:	00621821 	addu	v1,v1,v0
  4c3110:	8fc2003c 	lw	v0,60(s8)
  4c3114:	00000000 	nop
  4c3118:	24420004 	addiu	v0,v0,4
  4c311c:	90630000 	lbu	v1,0(v1)
  4c3120:	90420000 	lbu	v0,0(v0)
  4c3124:	00000000 	nop
  4c3128:	00621026 	xor	v0,v1,v0
  4c312c:	304200ff 	andi	v0,v0,0xff
  4c3130:	00021080 	sll	v0,v0,0x2
  4c3134:	8f84804c 	lw	a0,-32692(gp)
  4c3138:	00000000 	nop
  4c313c:	24845a90 	addiu	a0,a0,23184
  4c3140:	00822021 	addu	a0,a0,v0
  4c3144:	8fc2003c 	lw	v0,60(s8)
  4c3148:	00000000 	nop
  4c314c:	24420015 	addiu	v0,v0,21
  4c3150:	90420000 	lbu	v0,0(v0)
  4c3154:	00000000 	nop
  4c3158:	38420032 	xori	v0,v0,0x32
  4c315c:	304200ff 	andi	v0,v0,0xff
  4c3160:	8f83804c 	lw	v1,-32692(gp)
  4c3164:	00000000 	nop
  4c3168:	24635990 	addiu	v1,v1,22928
  4c316c:	00621821 	addu	v1,v1,v0
  4c3170:	8fc2003c 	lw	v0,60(s8)
  4c3174:	00000000 	nop
  4c3178:	2442000d 	addiu	v0,v0,13
  4c317c:	90630000 	lbu	v1,0(v1)
  4c3180:	90420000 	lbu	v0,0(v0)
  4c3184:	00000000 	nop
  4c3188:	00621026 	xor	v0,v1,v0
  4c318c:	304200ff 	andi	v0,v0,0xff
  4c3190:	8f83804c 	lw	v1,-32692(gp)
  4c3194:	00000000 	nop
  4c3198:	24635890 	addiu	v1,v1,22672
  4c319c:	00621821 	addu	v1,v1,v0
  4c31a0:	8fc2003c 	lw	v0,60(s8)
  4c31a4:	00000000 	nop
  4c31a8:	24420005 	addiu	v0,v0,5
  4c31ac:	90630000 	lbu	v1,0(v1)
  4c31b0:	90420000 	lbu	v0,0(v0)
  4c31b4:	00000000 	nop
  4c31b8:	00621026 	xor	v0,v1,v0
  4c31bc:	304200ff 	andi	v0,v0,0xff
  4c31c0:	00021080 	sll	v0,v0,0x2
  4c31c4:	24420400 	addiu	v0,v0,1024
  4c31c8:	8f81804c 	lw	at,-32692(gp)
  4c31cc:	00000000 	nop
  4c31d0:	24215a90 	addiu	at,at,23184
  4c31d4:	00221021 	addu	v0,at,v0
  4c31d8:	8c830000 	lw	v1,0(a0)
  4c31dc:	8c420000 	lw	v0,0(v0)
  4c31e0:	00000000 	nop
  4c31e4:	00622026 	xor	a0,v1,v0
  4c31e8:	8fc2003c 	lw	v0,60(s8)
  4c31ec:	00000000 	nop
  4c31f0:	24420016 	addiu	v0,v0,22
  4c31f4:	90420000 	lbu	v0,0(v0)
  4c31f8:	00000000 	nop
  4c31fc:	384200c6 	xori	v0,v0,0xc6
  4c3200:	304200ff 	andi	v0,v0,0xff
  4c3204:	8f83804c 	lw	v1,-32692(gp)
  4c3208:	00000000 	nop
  4c320c:	24635890 	addiu	v1,v1,22672
  4c3210:	00621821 	addu	v1,v1,v0
  4c3214:	8fc2003c 	lw	v0,60(s8)
  4c3218:	00000000 	nop
  4c321c:	2442000e 	addiu	v0,v0,14
  4c3220:	90630000 	lbu	v1,0(v1)
  4c3224:	90420000 	lbu	v0,0(v0)
  4c3228:	00000000 	nop
  4c322c:	00621026 	xor	v0,v1,v0
  4c3230:	304200ff 	andi	v0,v0,0xff
  4c3234:	8f83804c 	lw	v1,-32692(gp)
  4c3238:	00000000 	nop
  4c323c:	24635990 	addiu	v1,v1,22928
  4c3240:	00621821 	addu	v1,v1,v0
  4c3244:	8fc2003c 	lw	v0,60(s8)
  4c3248:	00000000 	nop
  4c324c:	24420006 	addiu	v0,v0,6
  4c3250:	90630000 	lbu	v1,0(v1)
  4c3254:	90420000 	lbu	v0,0(v0)
  4c3258:	00000000 	nop
  4c325c:	00621026 	xor	v0,v1,v0
  4c3260:	304200ff 	andi	v0,v0,0xff
  4c3264:	00021080 	sll	v0,v0,0x2
  4c3268:	24420800 	addiu	v0,v0,2048
  4c326c:	8f81804c 	lw	at,-32692(gp)
  4c3270:	00000000 	nop
  4c3274:	24215a90 	addiu	at,at,23184
  4c3278:	00221021 	addu	v0,at,v0
  4c327c:	8c420000 	lw	v0,0(v0)
  4c3280:	00000000 	nop
  4c3284:	00822026 	xor	a0,a0,v0
  4c3288:	8fc2003c 	lw	v0,60(s8)
  4c328c:	00000000 	nop
  4c3290:	24420017 	addiu	v0,v0,23
  4c3294:	90420000 	lbu	v0,0(v0)
  4c3298:	00000000 	nop
  4c329c:	384200c6 	xori	v0,v0,0xc6
  4c32a0:	304200ff 	andi	v0,v0,0xff
  4c32a4:	8f83804c 	lw	v1,-32692(gp)
  4c32a8:	00000000 	nop
  4c32ac:	24635990 	addiu	v1,v1,22928
  4c32b0:	00621821 	addu	v1,v1,v0
  4c32b4:	8fc2003c 	lw	v0,60(s8)
  4c32b8:	00000000 	nop
  4c32bc:	2442000f 	addiu	v0,v0,15
  4c32c0:	90630000 	lbu	v1,0(v1)
  4c32c4:	90420000 	lbu	v0,0(v0)
  4c32c8:	00000000 	nop
  4c32cc:	00621026 	xor	v0,v1,v0
  4c32d0:	304200ff 	andi	v0,v0,0xff
  4c32d4:	8f83804c 	lw	v1,-32692(gp)
  4c32d8:	00000000 	nop
  4c32dc:	24635990 	addiu	v1,v1,22928
  4c32e0:	00621821 	addu	v1,v1,v0
  4c32e4:	8fc2003c 	lw	v0,60(s8)
  4c32e8:	00000000 	nop
  4c32ec:	24420007 	addiu	v0,v0,7
  4c32f0:	90630000 	lbu	v1,0(v1)
  4c32f4:	90420000 	lbu	v0,0(v0)
  4c32f8:	00000000 	nop
  4c32fc:	00621026 	xor	v0,v1,v0
  4c3300:	304200ff 	andi	v0,v0,0xff
  4c3304:	00021080 	sll	v0,v0,0x2
  4c3308:	24420c00 	addiu	v0,v0,3072
  4c330c:	8f81804c 	lw	at,-32692(gp)
  4c3310:	00000000 	nop
  4c3314:	24215a90 	addiu	at,at,23184
  4c3318:	00221021 	addu	v0,at,v0
  4c331c:	8c420000 	lw	v0,0(v0)
  4c3320:	00000000 	nop
  4c3324:	00821026 	xor	v0,a0,v0
  4c3328:	afc20018 	sw	v0,24(s8)
  4c332c:	8fc20018 	lw	v0,24(s8)
  4c3330:	00000000 	nop
  4c3334:	00021a00 	sll	v1,v0,0x8
  4c3338:	00021602 	srl	v0,v0,0x18
  4c333c:	00621025 	or	v0,v1,v0
  4c3340:	afc20018 	sw	v0,24(s8)
  4c3344:	8fc30014 	lw	v1,20(s8)
  4c3348:	8fc20018 	lw	v0,24(s8)
  4c334c:	00000000 	nop
  4c3350:	00621021 	addu	v0,v1,v0
  4c3354:	afc20014 	sw	v0,20(s8)
  4c3358:	8fc30018 	lw	v1,24(s8)
  4c335c:	8fc20014 	lw	v0,20(s8)
  4c3360:	00000000 	nop
  4c3364:	00621021 	addu	v0,v1,v0
  4c3368:	afc20018 	sw	v0,24(s8)
  4c336c:	8fc30014 	lw	v1,20(s8)
  4c3370:	8fc20038 	lw	v0,56(s8)
  4c3374:	00000000 	nop
  4c3378:	ac431040 	sw	v1,4160(v0)
  4c337c:	8fc20018 	lw	v0,24(s8)
  4c3380:	00000000 	nop
  4c3384:	00021a40 	sll	v1,v0,0x9
  4c3388:	000215c2 	srl	v0,v0,0x17
  4c338c:	00621825 	or	v1,v1,v0
  4c3390:	8fc20038 	lw	v0,56(s8)
  4c3394:	00000000 	nop
  4c3398:	ac431044 	sw	v1,4164(v0)
		CALC_K192 (k, 10, 0x35, 0xD8, 0x98, 0xFD);
  4c339c:	8fc2003c 	lw	v0,60(s8)
  4c33a0:	00000000 	nop
  4c33a4:	24420010 	addiu	v0,v0,16
  4c33a8:	90420000 	lbu	v0,0(v0)
  4c33ac:	00000000 	nop
  4c33b0:	384200d8 	xori	v0,v0,0xd8
  4c33b4:	304200ff 	andi	v0,v0,0xff
  4c33b8:	8f83804c 	lw	v1,-32692(gp)
  4c33bc:	00000000 	nop
  4c33c0:	24635890 	addiu	v1,v1,22672
  4c33c4:	00621821 	addu	v1,v1,v0
  4c33c8:	8fc2003c 	lw	v0,60(s8)
  4c33cc:	00000000 	nop
  4c33d0:	24420008 	addiu	v0,v0,8
  4c33d4:	90630000 	lbu	v1,0(v1)
  4c33d8:	90420000 	lbu	v0,0(v0)
  4c33dc:	00000000 	nop
  4c33e0:	00621026 	xor	v0,v1,v0
  4c33e4:	304200ff 	andi	v0,v0,0xff
  4c33e8:	8f81804c 	lw	at,-32692(gp)
  4c33ec:	00000000 	nop
  4c33f0:	24215890 	addiu	at,at,22672
  4c33f4:	00221021 	addu	v0,at,v0
  4c33f8:	90430000 	lbu	v1,0(v0)
  4c33fc:	8fc2003c 	lw	v0,60(s8)
  4c3400:	00000000 	nop
  4c3404:	90420000 	lbu	v0,0(v0)
  4c3408:	00000000 	nop
  4c340c:	00621026 	xor	v0,v1,v0
  4c3410:	304200ff 	andi	v0,v0,0xff
  4c3414:	00021080 	sll	v0,v0,0x2
  4c3418:	8f84804c 	lw	a0,-32692(gp)
  4c341c:	00000000 	nop
  4c3420:	24845a90 	addiu	a0,a0,23184
  4c3424:	00822021 	addu	a0,a0,v0
  4c3428:	8fc2003c 	lw	v0,60(s8)
  4c342c:	00000000 	nop
  4c3430:	24420011 	addiu	v0,v0,17
  4c3434:	90420000 	lbu	v0,0(v0)
  4c3438:	00000000 	nop
  4c343c:	384200d8 	xori	v0,v0,0xd8
  4c3440:	304200ff 	andi	v0,v0,0xff
  4c3444:	8f83804c 	lw	v1,-32692(gp)
  4c3448:	00000000 	nop
  4c344c:	24635990 	addiu	v1,v1,22928
  4c3450:	00621821 	addu	v1,v1,v0
  4c3454:	8fc2003c 	lw	v0,60(s8)
  4c3458:	00000000 	nop
  4c345c:	24420009 	addiu	v0,v0,9
  4c3460:	90630000 	lbu	v1,0(v1)
  4c3464:	90420000 	lbu	v0,0(v0)
  4c3468:	00000000 	nop
  4c346c:	00621026 	xor	v0,v1,v0
  4c3470:	304200ff 	andi	v0,v0,0xff
  4c3474:	8f83804c 	lw	v1,-32692(gp)
  4c3478:	00000000 	nop
  4c347c:	24635890 	addiu	v1,v1,22672
  4c3480:	00621821 	addu	v1,v1,v0
  4c3484:	8fc2003c 	lw	v0,60(s8)
  4c3488:	00000000 	nop
  4c348c:	24420001 	addiu	v0,v0,1
  4c3490:	90630000 	lbu	v1,0(v1)
  4c3494:	90420000 	lbu	v0,0(v0)
  4c3498:	00000000 	nop
  4c349c:	00621026 	xor	v0,v1,v0
  4c34a0:	304200ff 	andi	v0,v0,0xff
  4c34a4:	00021080 	sll	v0,v0,0x2
  4c34a8:	24420400 	addiu	v0,v0,1024
  4c34ac:	8f81804c 	lw	at,-32692(gp)
  4c34b0:	00000000 	nop
  4c34b4:	24215a90 	addiu	at,at,23184
  4c34b8:	00221021 	addu	v0,at,v0
  4c34bc:	8c830000 	lw	v1,0(a0)
  4c34c0:	8c420000 	lw	v0,0(v0)
  4c34c4:	00000000 	nop
  4c34c8:	00622026 	xor	a0,v1,v0
  4c34cc:	8fc2003c 	lw	v0,60(s8)
  4c34d0:	00000000 	nop
  4c34d4:	24420012 	addiu	v0,v0,18
  4c34d8:	90420000 	lbu	v0,0(v0)
  4c34dc:	00000000 	nop
  4c34e0:	38420035 	xori	v0,v0,0x35
  4c34e4:	304200ff 	andi	v0,v0,0xff
  4c34e8:	8f83804c 	lw	v1,-32692(gp)
  4c34ec:	00000000 	nop
  4c34f0:	24635890 	addiu	v1,v1,22672
  4c34f4:	00621821 	addu	v1,v1,v0
  4c34f8:	8fc2003c 	lw	v0,60(s8)
  4c34fc:	00000000 	nop
  4c3500:	2442000a 	addiu	v0,v0,10
  4c3504:	90630000 	lbu	v1,0(v1)
  4c3508:	90420000 	lbu	v0,0(v0)
  4c350c:	00000000 	nop
  4c3510:	00621026 	xor	v0,v1,v0
  4c3514:	304200ff 	andi	v0,v0,0xff
  4c3518:	8f83804c 	lw	v1,-32692(gp)
  4c351c:	00000000 	nop
  4c3520:	24635990 	addiu	v1,v1,22928
  4c3524:	00621821 	addu	v1,v1,v0
  4c3528:	8fc2003c 	lw	v0,60(s8)
  4c352c:	00000000 	nop
  4c3530:	24420002 	addiu	v0,v0,2
  4c3534:	90630000 	lbu	v1,0(v1)
  4c3538:	90420000 	lbu	v0,0(v0)
  4c353c:	00000000 	nop
  4c3540:	00621026 	xor	v0,v1,v0
  4c3544:	304200ff 	andi	v0,v0,0xff
  4c3548:	00021080 	sll	v0,v0,0x2
  4c354c:	24420800 	addiu	v0,v0,2048
  4c3550:	8f81804c 	lw	at,-32692(gp)
  4c3554:	00000000 	nop
  4c3558:	24215a90 	addiu	at,at,23184
  4c355c:	00221021 	addu	v0,at,v0
  4c3560:	8c420000 	lw	v0,0(v0)
  4c3564:	00000000 	nop
  4c3568:	00822026 	xor	a0,a0,v0
  4c356c:	8fc2003c 	lw	v0,60(s8)
  4c3570:	00000000 	nop
  4c3574:	24420013 	addiu	v0,v0,19
  4c3578:	90420000 	lbu	v0,0(v0)
  4c357c:	00000000 	nop
  4c3580:	38420035 	xori	v0,v0,0x35
  4c3584:	304200ff 	andi	v0,v0,0xff
  4c3588:	8f83804c 	lw	v1,-32692(gp)
  4c358c:	00000000 	nop
  4c3590:	24635990 	addiu	v1,v1,22928
  4c3594:	00621821 	addu	v1,v1,v0
  4c3598:	8fc2003c 	lw	v0,60(s8)
  4c359c:	00000000 	nop
  4c35a0:	2442000b 	addiu	v0,v0,11
  4c35a4:	90630000 	lbu	v1,0(v1)
  4c35a8:	90420000 	lbu	v0,0(v0)
  4c35ac:	00000000 	nop
  4c35b0:	00621026 	xor	v0,v1,v0
  4c35b4:	304200ff 	andi	v0,v0,0xff
  4c35b8:	8f83804c 	lw	v1,-32692(gp)
  4c35bc:	00000000 	nop
  4c35c0:	24635990 	addiu	v1,v1,22928
  4c35c4:	00621821 	addu	v1,v1,v0
  4c35c8:	8fc2003c 	lw	v0,60(s8)
  4c35cc:	00000000 	nop
  4c35d0:	24420003 	addiu	v0,v0,3
  4c35d4:	90630000 	lbu	v1,0(v1)
  4c35d8:	90420000 	lbu	v0,0(v0)
  4c35dc:	00000000 	nop
  4c35e0:	00621026 	xor	v0,v1,v0
  4c35e4:	304200ff 	andi	v0,v0,0xff
  4c35e8:	00021080 	sll	v0,v0,0x2
  4c35ec:	24420c00 	addiu	v0,v0,3072
  4c35f0:	8f81804c 	lw	at,-32692(gp)
  4c35f4:	00000000 	nop
  4c35f8:	24215a90 	addiu	at,at,23184
  4c35fc:	00221021 	addu	v0,at,v0
  4c3600:	8c420000 	lw	v0,0(v0)
  4c3604:	00000000 	nop
  4c3608:	00821026 	xor	v0,a0,v0
  4c360c:	afc20014 	sw	v0,20(s8)
  4c3610:	8fc2003c 	lw	v0,60(s8)
  4c3614:	00000000 	nop
  4c3618:	24420014 	addiu	v0,v0,20
  4c361c:	90420000 	lbu	v0,0(v0)
  4c3620:	00000000 	nop
  4c3624:	384200fd 	xori	v0,v0,0xfd
  4c3628:	304200ff 	andi	v0,v0,0xff
  4c362c:	8f83804c 	lw	v1,-32692(gp)
  4c3630:	00000000 	nop
  4c3634:	24635890 	addiu	v1,v1,22672
  4c3638:	00621821 	addu	v1,v1,v0
  4c363c:	8fc2003c 	lw	v0,60(s8)
  4c3640:	00000000 	nop
  4c3644:	2442000c 	addiu	v0,v0,12
  4c3648:	90630000 	lbu	v1,0(v1)
  4c364c:	90420000 	lbu	v0,0(v0)
  4c3650:	00000000 	nop
  4c3654:	00621026 	xor	v0,v1,v0
  4c3658:	304200ff 	andi	v0,v0,0xff
  4c365c:	8f83804c 	lw	v1,-32692(gp)
  4c3660:	00000000 	nop
  4c3664:	24635890 	addiu	v1,v1,22672
  4c3668:	00621821 	addu	v1,v1,v0
  4c366c:	8fc2003c 	lw	v0,60(s8)
  4c3670:	00000000 	nop
  4c3674:	24420004 	addiu	v0,v0,4
  4c3678:	90630000 	lbu	v1,0(v1)
  4c367c:	90420000 	lbu	v0,0(v0)
  4c3680:	00000000 	nop
  4c3684:	00621026 	xor	v0,v1,v0
  4c3688:	304200ff 	andi	v0,v0,0xff
  4c368c:	00021080 	sll	v0,v0,0x2
  4c3690:	8f84804c 	lw	a0,-32692(gp)
  4c3694:	00000000 	nop
  4c3698:	24845a90 	addiu	a0,a0,23184
  4c369c:	00822021 	addu	a0,a0,v0
  4c36a0:	8fc2003c 	lw	v0,60(s8)
  4c36a4:	00000000 	nop
  4c36a8:	24420015 	addiu	v0,v0,21
  4c36ac:	90420000 	lbu	v0,0(v0)
  4c36b0:	00000000 	nop
  4c36b4:	384200fd 	xori	v0,v0,0xfd
  4c36b8:	304200ff 	andi	v0,v0,0xff
  4c36bc:	8f83804c 	lw	v1,-32692(gp)
  4c36c0:	00000000 	nop
  4c36c4:	24635990 	addiu	v1,v1,22928
  4c36c8:	00621821 	addu	v1,v1,v0
  4c36cc:	8fc2003c 	lw	v0,60(s8)
  4c36d0:	00000000 	nop
  4c36d4:	2442000d 	addiu	v0,v0,13
  4c36d8:	90630000 	lbu	v1,0(v1)
  4c36dc:	90420000 	lbu	v0,0(v0)
  4c36e0:	00000000 	nop
  4c36e4:	00621026 	xor	v0,v1,v0
  4c36e8:	304200ff 	andi	v0,v0,0xff
  4c36ec:	8f83804c 	lw	v1,-32692(gp)
  4c36f0:	00000000 	nop
  4c36f4:	24635890 	addiu	v1,v1,22672
  4c36f8:	00621821 	addu	v1,v1,v0
  4c36fc:	8fc2003c 	lw	v0,60(s8)
  4c3700:	00000000 	nop
  4c3704:	24420005 	addiu	v0,v0,5
  4c3708:	90630000 	lbu	v1,0(v1)
  4c370c:	90420000 	lbu	v0,0(v0)
  4c3710:	00000000 	nop
  4c3714:	00621026 	xor	v0,v1,v0
  4c3718:	304200ff 	andi	v0,v0,0xff
  4c371c:	00021080 	sll	v0,v0,0x2
  4c3720:	24420400 	addiu	v0,v0,1024
  4c3724:	8f81804c 	lw	at,-32692(gp)
  4c3728:	00000000 	nop
  4c372c:	24215a90 	addiu	at,at,23184
  4c3730:	00221021 	addu	v0,at,v0
  4c3734:	8c830000 	lw	v1,0(a0)
  4c3738:	8c420000 	lw	v0,0(v0)
  4c373c:	00000000 	nop
  4c3740:	00622026 	xor	a0,v1,v0
  4c3744:	8fc2003c 	lw	v0,60(s8)
  4c3748:	00000000 	nop
  4c374c:	24420016 	addiu	v0,v0,22
  4c3750:	90420000 	lbu	v0,0(v0)
  4c3754:	00000000 	nop
  4c3758:	38420098 	xori	v0,v0,0x98
  4c375c:	304200ff 	andi	v0,v0,0xff
  4c3760:	8f83804c 	lw	v1,-32692(gp)
  4c3764:	00000000 	nop
  4c3768:	24635890 	addiu	v1,v1,22672
  4c376c:	00621821 	addu	v1,v1,v0
  4c3770:	8fc2003c 	lw	v0,60(s8)
  4c3774:	00000000 	nop
  4c3778:	2442000e 	addiu	v0,v0,14
  4c377c:	90630000 	lbu	v1,0(v1)
  4c3780:	90420000 	lbu	v0,0(v0)
  4c3784:	00000000 	nop
  4c3788:	00621026 	xor	v0,v1,v0
  4c378c:	304200ff 	andi	v0,v0,0xff
  4c3790:	8f83804c 	lw	v1,-32692(gp)
  4c3794:	00000000 	nop
  4c3798:	24635990 	addiu	v1,v1,22928
  4c379c:	00621821 	addu	v1,v1,v0
  4c37a0:	8fc2003c 	lw	v0,60(s8)
  4c37a4:	00000000 	nop
  4c37a8:	24420006 	addiu	v0,v0,6
  4c37ac:	90630000 	lbu	v1,0(v1)
  4c37b0:	90420000 	lbu	v0,0(v0)
  4c37b4:	00000000 	nop
  4c37b8:	00621026 	xor	v0,v1,v0
  4c37bc:	304200ff 	andi	v0,v0,0xff
  4c37c0:	00021080 	sll	v0,v0,0x2
  4c37c4:	24420800 	addiu	v0,v0,2048
  4c37c8:	8f81804c 	lw	at,-32692(gp)
  4c37cc:	00000000 	nop
  4c37d0:	24215a90 	addiu	at,at,23184
  4c37d4:	00221021 	addu	v0,at,v0
  4c37d8:	8c420000 	lw	v0,0(v0)
  4c37dc:	00000000 	nop
  4c37e0:	00822026 	xor	a0,a0,v0
  4c37e4:	8fc2003c 	lw	v0,60(s8)
  4c37e8:	00000000 	nop
  4c37ec:	24420017 	addiu	v0,v0,23
  4c37f0:	90420000 	lbu	v0,0(v0)
  4c37f4:	00000000 	nop
  4c37f8:	38420098 	xori	v0,v0,0x98
  4c37fc:	304200ff 	andi	v0,v0,0xff
  4c3800:	8f83804c 	lw	v1,-32692(gp)
  4c3804:	00000000 	nop
  4c3808:	24635990 	addiu	v1,v1,22928
  4c380c:	00621821 	addu	v1,v1,v0
  4c3810:	8fc2003c 	lw	v0,60(s8)
  4c3814:	00000000 	nop
  4c3818:	2442000f 	addiu	v0,v0,15
  4c381c:	90630000 	lbu	v1,0(v1)
  4c3820:	90420000 	lbu	v0,0(v0)
  4c3824:	00000000 	nop
  4c3828:	00621026 	xor	v0,v1,v0
  4c382c:	304200ff 	andi	v0,v0,0xff
  4c3830:	8f83804c 	lw	v1,-32692(gp)
  4c3834:	00000000 	nop
  4c3838:	24635990 	addiu	v1,v1,22928
  4c383c:	00621821 	addu	v1,v1,v0
  4c3840:	8fc2003c 	lw	v0,60(s8)
  4c3844:	00000000 	nop
  4c3848:	24420007 	addiu	v0,v0,7
  4c384c:	90630000 	lbu	v1,0(v1)
  4c3850:	90420000 	lbu	v0,0(v0)
  4c3854:	00000000 	nop
  4c3858:	00621026 	xor	v0,v1,v0
  4c385c:	304200ff 	andi	v0,v0,0xff
  4c3860:	00021080 	sll	v0,v0,0x2
  4c3864:	24420c00 	addiu	v0,v0,3072
  4c3868:	8f81804c 	lw	at,-32692(gp)
  4c386c:	00000000 	nop
  4c3870:	24215a90 	addiu	at,at,23184
  4c3874:	00221021 	addu	v0,at,v0
  4c3878:	8c420000 	lw	v0,0(v0)
  4c387c:	00000000 	nop
  4c3880:	00821026 	xor	v0,a0,v0
  4c3884:	afc20018 	sw	v0,24(s8)
  4c3888:	8fc20018 	lw	v0,24(s8)
  4c388c:	00000000 	nop
  4c3890:	00021a00 	sll	v1,v0,0x8
  4c3894:	00021602 	srl	v0,v0,0x18
  4c3898:	00621025 	or	v0,v1,v0
  4c389c:	afc20018 	sw	v0,24(s8)
  4c38a0:	8fc30014 	lw	v1,20(s8)
  4c38a4:	8fc20018 	lw	v0,24(s8)
  4c38a8:	00000000 	nop
  4c38ac:	00621021 	addu	v0,v1,v0
  4c38b0:	afc20014 	sw	v0,20(s8)
  4c38b4:	8fc30018 	lw	v1,24(s8)
  4c38b8:	8fc20014 	lw	v0,20(s8)
  4c38bc:	00000000 	nop
  4c38c0:	00621021 	addu	v0,v1,v0
  4c38c4:	afc20018 	sw	v0,24(s8)
  4c38c8:	8fc30014 	lw	v1,20(s8)
  4c38cc:	8fc20038 	lw	v0,56(s8)
  4c38d0:	00000000 	nop
  4c38d4:	ac431048 	sw	v1,4168(v0)
  4c38d8:	8fc20018 	lw	v0,24(s8)
  4c38dc:	00000000 	nop
  4c38e0:	00021a40 	sll	v1,v0,0x9
  4c38e4:	000215c2 	srl	v0,v0,0x17
  4c38e8:	00621825 	or	v1,v1,v0
  4c38ec:	8fc20038 	lw	v0,56(s8)
  4c38f0:	00000000 	nop
  4c38f4:	ac43104c 	sw	v1,4172(v0)
		CALC_K192 (k, 12, 0x18, 0x37, 0xF7, 0x71);
  4c38f8:	8fc2003c 	lw	v0,60(s8)
  4c38fc:	00000000 	nop
  4c3900:	24420010 	addiu	v0,v0,16
  4c3904:	90420000 	lbu	v0,0(v0)
  4c3908:	00000000 	nop
  4c390c:	38420037 	xori	v0,v0,0x37
  4c3910:	304200ff 	andi	v0,v0,0xff
  4c3914:	8f83804c 	lw	v1,-32692(gp)
  4c3918:	00000000 	nop
  4c391c:	24635890 	addiu	v1,v1,22672
  4c3920:	00621821 	addu	v1,v1,v0
  4c3924:	8fc2003c 	lw	v0,60(s8)
  4c3928:	00000000 	nop
  4c392c:	24420008 	addiu	v0,v0,8
  4c3930:	90630000 	lbu	v1,0(v1)
  4c3934:	90420000 	lbu	v0,0(v0)
  4c3938:	00000000 	nop
  4c393c:	00621026 	xor	v0,v1,v0
  4c3940:	304200ff 	andi	v0,v0,0xff
  4c3944:	8f81804c 	lw	at,-32692(gp)
  4c3948:	00000000 	nop
  4c394c:	24215890 	addiu	at,at,22672
  4c3950:	00221021 	addu	v0,at,v0
  4c3954:	90430000 	lbu	v1,0(v0)
  4c3958:	8fc2003c 	lw	v0,60(s8)
  4c395c:	00000000 	nop
  4c3960:	90420000 	lbu	v0,0(v0)
  4c3964:	00000000 	nop
  4c3968:	00621026 	xor	v0,v1,v0
  4c396c:	304200ff 	andi	v0,v0,0xff
  4c3970:	00021080 	sll	v0,v0,0x2
  4c3974:	8f84804c 	lw	a0,-32692(gp)
  4c3978:	00000000 	nop
  4c397c:	24845a90 	addiu	a0,a0,23184
  4c3980:	00822021 	addu	a0,a0,v0
  4c3984:	8fc2003c 	lw	v0,60(s8)
  4c3988:	00000000 	nop
  4c398c:	24420011 	addiu	v0,v0,17
  4c3990:	90420000 	lbu	v0,0(v0)
  4c3994:	00000000 	nop
  4c3998:	38420037 	xori	v0,v0,0x37
  4c399c:	304200ff 	andi	v0,v0,0xff
  4c39a0:	8f83804c 	lw	v1,-32692(gp)
  4c39a4:	00000000 	nop
  4c39a8:	24635990 	addiu	v1,v1,22928
  4c39ac:	00621821 	addu	v1,v1,v0
  4c39b0:	8fc2003c 	lw	v0,60(s8)
  4c39b4:	00000000 	nop
  4c39b8:	24420009 	addiu	v0,v0,9
  4c39bc:	90630000 	lbu	v1,0(v1)
  4c39c0:	90420000 	lbu	v0,0(v0)
  4c39c4:	00000000 	nop
  4c39c8:	00621026 	xor	v0,v1,v0
  4c39cc:	304200ff 	andi	v0,v0,0xff
  4c39d0:	8f83804c 	lw	v1,-32692(gp)
  4c39d4:	00000000 	nop
  4c39d8:	24635890 	addiu	v1,v1,22672
  4c39dc:	00621821 	addu	v1,v1,v0
  4c39e0:	8fc2003c 	lw	v0,60(s8)
  4c39e4:	00000000 	nop
  4c39e8:	24420001 	addiu	v0,v0,1
  4c39ec:	90630000 	lbu	v1,0(v1)
  4c39f0:	90420000 	lbu	v0,0(v0)
  4c39f4:	00000000 	nop
  4c39f8:	00621026 	xor	v0,v1,v0
  4c39fc:	304200ff 	andi	v0,v0,0xff
  4c3a00:	00021080 	sll	v0,v0,0x2
  4c3a04:	24420400 	addiu	v0,v0,1024
  4c3a08:	8f81804c 	lw	at,-32692(gp)
  4c3a0c:	00000000 	nop
  4c3a10:	24215a90 	addiu	at,at,23184
  4c3a14:	00221021 	addu	v0,at,v0
  4c3a18:	8c830000 	lw	v1,0(a0)
  4c3a1c:	8c420000 	lw	v0,0(v0)
  4c3a20:	00000000 	nop
  4c3a24:	00622026 	xor	a0,v1,v0
  4c3a28:	8fc2003c 	lw	v0,60(s8)
  4c3a2c:	00000000 	nop
  4c3a30:	24420012 	addiu	v0,v0,18
  4c3a34:	90420000 	lbu	v0,0(v0)
  4c3a38:	00000000 	nop
  4c3a3c:	38420018 	xori	v0,v0,0x18
  4c3a40:	304200ff 	andi	v0,v0,0xff
  4c3a44:	8f83804c 	lw	v1,-32692(gp)
  4c3a48:	00000000 	nop
  4c3a4c:	24635890 	addiu	v1,v1,22672
  4c3a50:	00621821 	addu	v1,v1,v0
  4c3a54:	8fc2003c 	lw	v0,60(s8)
  4c3a58:	00000000 	nop
  4c3a5c:	2442000a 	addiu	v0,v0,10
  4c3a60:	90630000 	lbu	v1,0(v1)
  4c3a64:	90420000 	lbu	v0,0(v0)
  4c3a68:	00000000 	nop
  4c3a6c:	00621026 	xor	v0,v1,v0
  4c3a70:	304200ff 	andi	v0,v0,0xff
  4c3a74:	8f83804c 	lw	v1,-32692(gp)
  4c3a78:	00000000 	nop
  4c3a7c:	24635990 	addiu	v1,v1,22928
  4c3a80:	00621821 	addu	v1,v1,v0
  4c3a84:	8fc2003c 	lw	v0,60(s8)
  4c3a88:	00000000 	nop
  4c3a8c:	24420002 	addiu	v0,v0,2
  4c3a90:	90630000 	lbu	v1,0(v1)
  4c3a94:	90420000 	lbu	v0,0(v0)
  4c3a98:	00000000 	nop
  4c3a9c:	00621026 	xor	v0,v1,v0
  4c3aa0:	304200ff 	andi	v0,v0,0xff
  4c3aa4:	00021080 	sll	v0,v0,0x2
  4c3aa8:	24420800 	addiu	v0,v0,2048
  4c3aac:	8f81804c 	lw	at,-32692(gp)
  4c3ab0:	00000000 	nop
  4c3ab4:	24215a90 	addiu	at,at,23184
  4c3ab8:	00221021 	addu	v0,at,v0
  4c3abc:	8c420000 	lw	v0,0(v0)
  4c3ac0:	00000000 	nop
  4c3ac4:	00822026 	xor	a0,a0,v0
  4c3ac8:	8fc2003c 	lw	v0,60(s8)
  4c3acc:	00000000 	nop
  4c3ad0:	24420013 	addiu	v0,v0,19
  4c3ad4:	90420000 	lbu	v0,0(v0)
  4c3ad8:	00000000 	nop
  4c3adc:	38420018 	xori	v0,v0,0x18
  4c3ae0:	304200ff 	andi	v0,v0,0xff
  4c3ae4:	8f83804c 	lw	v1,-32692(gp)
  4c3ae8:	00000000 	nop
  4c3aec:	24635990 	addiu	v1,v1,22928
  4c3af0:	00621821 	addu	v1,v1,v0
  4c3af4:	8fc2003c 	lw	v0,60(s8)
  4c3af8:	00000000 	nop
  4c3afc:	2442000b 	addiu	v0,v0,11
  4c3b00:	90630000 	lbu	v1,0(v1)
  4c3b04:	90420000 	lbu	v0,0(v0)
  4c3b08:	00000000 	nop
  4c3b0c:	00621026 	xor	v0,v1,v0
  4c3b10:	304200ff 	andi	v0,v0,0xff
  4c3b14:	8f83804c 	lw	v1,-32692(gp)
  4c3b18:	00000000 	nop
  4c3b1c:	24635990 	addiu	v1,v1,22928
  4c3b20:	00621821 	addu	v1,v1,v0
  4c3b24:	8fc2003c 	lw	v0,60(s8)
  4c3b28:	00000000 	nop
  4c3b2c:	24420003 	addiu	v0,v0,3
  4c3b30:	90630000 	lbu	v1,0(v1)
  4c3b34:	90420000 	lbu	v0,0(v0)
  4c3b38:	00000000 	nop
  4c3b3c:	00621026 	xor	v0,v1,v0
  4c3b40:	304200ff 	andi	v0,v0,0xff
  4c3b44:	00021080 	sll	v0,v0,0x2
  4c3b48:	24420c00 	addiu	v0,v0,3072
  4c3b4c:	8f81804c 	lw	at,-32692(gp)
  4c3b50:	00000000 	nop
  4c3b54:	24215a90 	addiu	at,at,23184
  4c3b58:	00221021 	addu	v0,at,v0
  4c3b5c:	8c420000 	lw	v0,0(v0)
  4c3b60:	00000000 	nop
  4c3b64:	00821026 	xor	v0,a0,v0
  4c3b68:	afc20014 	sw	v0,20(s8)
  4c3b6c:	8fc2003c 	lw	v0,60(s8)
  4c3b70:	00000000 	nop
  4c3b74:	24420014 	addiu	v0,v0,20
  4c3b78:	90420000 	lbu	v0,0(v0)
  4c3b7c:	00000000 	nop
  4c3b80:	38420071 	xori	v0,v0,0x71
  4c3b84:	304200ff 	andi	v0,v0,0xff
  4c3b88:	8f83804c 	lw	v1,-32692(gp)
  4c3b8c:	00000000 	nop
  4c3b90:	24635890 	addiu	v1,v1,22672
  4c3b94:	00621821 	addu	v1,v1,v0
  4c3b98:	8fc2003c 	lw	v0,60(s8)
  4c3b9c:	00000000 	nop
  4c3ba0:	2442000c 	addiu	v0,v0,12
  4c3ba4:	90630000 	lbu	v1,0(v1)
  4c3ba8:	90420000 	lbu	v0,0(v0)
  4c3bac:	00000000 	nop
  4c3bb0:	00621026 	xor	v0,v1,v0
  4c3bb4:	304200ff 	andi	v0,v0,0xff
  4c3bb8:	8f83804c 	lw	v1,-32692(gp)
  4c3bbc:	00000000 	nop
  4c3bc0:	24635890 	addiu	v1,v1,22672
  4c3bc4:	00621821 	addu	v1,v1,v0
  4c3bc8:	8fc2003c 	lw	v0,60(s8)
  4c3bcc:	00000000 	nop
  4c3bd0:	24420004 	addiu	v0,v0,4
  4c3bd4:	90630000 	lbu	v1,0(v1)
  4c3bd8:	90420000 	lbu	v0,0(v0)
  4c3bdc:	00000000 	nop
  4c3be0:	00621026 	xor	v0,v1,v0
  4c3be4:	304200ff 	andi	v0,v0,0xff
  4c3be8:	00021080 	sll	v0,v0,0x2
  4c3bec:	8f84804c 	lw	a0,-32692(gp)
  4c3bf0:	00000000 	nop
  4c3bf4:	24845a90 	addiu	a0,a0,23184
  4c3bf8:	00822021 	addu	a0,a0,v0
  4c3bfc:	8fc2003c 	lw	v0,60(s8)
  4c3c00:	00000000 	nop
  4c3c04:	24420015 	addiu	v0,v0,21
  4c3c08:	90420000 	lbu	v0,0(v0)
  4c3c0c:	00000000 	nop
  4c3c10:	38420071 	xori	v0,v0,0x71
  4c3c14:	304200ff 	andi	v0,v0,0xff
  4c3c18:	8f83804c 	lw	v1,-32692(gp)
  4c3c1c:	00000000 	nop
  4c3c20:	24635990 	addiu	v1,v1,22928
  4c3c24:	00621821 	addu	v1,v1,v0
  4c3c28:	8fc2003c 	lw	v0,60(s8)
  4c3c2c:	00000000 	nop
  4c3c30:	2442000d 	addiu	v0,v0,13
  4c3c34:	90630000 	lbu	v1,0(v1)
  4c3c38:	90420000 	lbu	v0,0(v0)
  4c3c3c:	00000000 	nop
  4c3c40:	00621026 	xor	v0,v1,v0
  4c3c44:	304200ff 	andi	v0,v0,0xff
  4c3c48:	8f83804c 	lw	v1,-32692(gp)
  4c3c4c:	00000000 	nop
  4c3c50:	24635890 	addiu	v1,v1,22672
  4c3c54:	00621821 	addu	v1,v1,v0
  4c3c58:	8fc2003c 	lw	v0,60(s8)
  4c3c5c:	00000000 	nop
  4c3c60:	24420005 	addiu	v0,v0,5
  4c3c64:	90630000 	lbu	v1,0(v1)
  4c3c68:	90420000 	lbu	v0,0(v0)
  4c3c6c:	00000000 	nop
  4c3c70:	00621026 	xor	v0,v1,v0
  4c3c74:	304200ff 	andi	v0,v0,0xff
  4c3c78:	00021080 	sll	v0,v0,0x2
  4c3c7c:	24420400 	addiu	v0,v0,1024
  4c3c80:	8f81804c 	lw	at,-32692(gp)
  4c3c84:	00000000 	nop
  4c3c88:	24215a90 	addiu	at,at,23184
  4c3c8c:	00221021 	addu	v0,at,v0
  4c3c90:	8c830000 	lw	v1,0(a0)
  4c3c94:	8c420000 	lw	v0,0(v0)
  4c3c98:	00000000 	nop
  4c3c9c:	00622026 	xor	a0,v1,v0
  4c3ca0:	8fc2003c 	lw	v0,60(s8)
  4c3ca4:	00000000 	nop
  4c3ca8:	24420016 	addiu	v0,v0,22
  4c3cac:	90420000 	lbu	v0,0(v0)
  4c3cb0:	00000000 	nop
  4c3cb4:	384200f7 	xori	v0,v0,0xf7
  4c3cb8:	304200ff 	andi	v0,v0,0xff
  4c3cbc:	8f83804c 	lw	v1,-32692(gp)
  4c3cc0:	00000000 	nop
  4c3cc4:	24635890 	addiu	v1,v1,22672
  4c3cc8:	00621821 	addu	v1,v1,v0
  4c3ccc:	8fc2003c 	lw	v0,60(s8)
  4c3cd0:	00000000 	nop
  4c3cd4:	2442000e 	addiu	v0,v0,14
  4c3cd8:	90630000 	lbu	v1,0(v1)
  4c3cdc:	90420000 	lbu	v0,0(v0)
  4c3ce0:	00000000 	nop
  4c3ce4:	00621026 	xor	v0,v1,v0
  4c3ce8:	304200ff 	andi	v0,v0,0xff
  4c3cec:	8f83804c 	lw	v1,-32692(gp)
  4c3cf0:	00000000 	nop
  4c3cf4:	24635990 	addiu	v1,v1,22928
  4c3cf8:	00621821 	addu	v1,v1,v0
  4c3cfc:	8fc2003c 	lw	v0,60(s8)
  4c3d00:	00000000 	nop
  4c3d04:	24420006 	addiu	v0,v0,6
  4c3d08:	90630000 	lbu	v1,0(v1)
  4c3d0c:	90420000 	lbu	v0,0(v0)
  4c3d10:	00000000 	nop
  4c3d14:	00621026 	xor	v0,v1,v0
  4c3d18:	304200ff 	andi	v0,v0,0xff
  4c3d1c:	00021080 	sll	v0,v0,0x2
  4c3d20:	24420800 	addiu	v0,v0,2048
  4c3d24:	8f81804c 	lw	at,-32692(gp)
  4c3d28:	00000000 	nop
  4c3d2c:	24215a90 	addiu	at,at,23184
  4c3d30:	00221021 	addu	v0,at,v0
  4c3d34:	8c420000 	lw	v0,0(v0)
  4c3d38:	00000000 	nop
  4c3d3c:	00822026 	xor	a0,a0,v0
  4c3d40:	8fc2003c 	lw	v0,60(s8)
  4c3d44:	00000000 	nop
  4c3d48:	24420017 	addiu	v0,v0,23
  4c3d4c:	90420000 	lbu	v0,0(v0)
  4c3d50:	00000000 	nop
  4c3d54:	384200f7 	xori	v0,v0,0xf7
  4c3d58:	304200ff 	andi	v0,v0,0xff
  4c3d5c:	8f83804c 	lw	v1,-32692(gp)
  4c3d60:	00000000 	nop
  4c3d64:	24635990 	addiu	v1,v1,22928
  4c3d68:	00621821 	addu	v1,v1,v0
  4c3d6c:	8fc2003c 	lw	v0,60(s8)
  4c3d70:	00000000 	nop
  4c3d74:	2442000f 	addiu	v0,v0,15
  4c3d78:	90630000 	lbu	v1,0(v1)
  4c3d7c:	90420000 	lbu	v0,0(v0)
  4c3d80:	00000000 	nop
  4c3d84:	00621026 	xor	v0,v1,v0
  4c3d88:	304200ff 	andi	v0,v0,0xff
  4c3d8c:	8f83804c 	lw	v1,-32692(gp)
  4c3d90:	00000000 	nop
  4c3d94:	24635990 	addiu	v1,v1,22928
  4c3d98:	00621821 	addu	v1,v1,v0
  4c3d9c:	8fc2003c 	lw	v0,60(s8)
  4c3da0:	00000000 	nop
  4c3da4:	24420007 	addiu	v0,v0,7
  4c3da8:	90630000 	lbu	v1,0(v1)
  4c3dac:	90420000 	lbu	v0,0(v0)
  4c3db0:	00000000 	nop
  4c3db4:	00621026 	xor	v0,v1,v0
  4c3db8:	304200ff 	andi	v0,v0,0xff
  4c3dbc:	00021080 	sll	v0,v0,0x2
  4c3dc0:	24420c00 	addiu	v0,v0,3072
  4c3dc4:	8f81804c 	lw	at,-32692(gp)
  4c3dc8:	00000000 	nop
  4c3dcc:	24215a90 	addiu	at,at,23184
  4c3dd0:	00221021 	addu	v0,at,v0
  4c3dd4:	8c420000 	lw	v0,0(v0)
  4c3dd8:	00000000 	nop
  4c3ddc:	00821026 	xor	v0,a0,v0
  4c3de0:	afc20018 	sw	v0,24(s8)
  4c3de4:	8fc20018 	lw	v0,24(s8)
  4c3de8:	00000000 	nop
  4c3dec:	00021a00 	sll	v1,v0,0x8
  4c3df0:	00021602 	srl	v0,v0,0x18
  4c3df4:	00621025 	or	v0,v1,v0
  4c3df8:	afc20018 	sw	v0,24(s8)
  4c3dfc:	8fc30014 	lw	v1,20(s8)
  4c3e00:	8fc20018 	lw	v0,24(s8)
  4c3e04:	00000000 	nop
  4c3e08:	00621021 	addu	v0,v1,v0
  4c3e0c:	afc20014 	sw	v0,20(s8)
  4c3e10:	8fc30018 	lw	v1,24(s8)
  4c3e14:	8fc20014 	lw	v0,20(s8)
  4c3e18:	00000000 	nop
  4c3e1c:	00621021 	addu	v0,v1,v0
  4c3e20:	afc20018 	sw	v0,24(s8)
  4c3e24:	8fc30014 	lw	v1,20(s8)
  4c3e28:	8fc20038 	lw	v0,56(s8)
  4c3e2c:	00000000 	nop
  4c3e30:	ac431050 	sw	v1,4176(v0)
  4c3e34:	8fc20018 	lw	v0,24(s8)
  4c3e38:	00000000 	nop
  4c3e3c:	00021a40 	sll	v1,v0,0x9
  4c3e40:	000215c2 	srl	v0,v0,0x17
  4c3e44:	00621825 	or	v1,v1,v0
  4c3e48:	8fc20038 	lw	v0,56(s8)
  4c3e4c:	00000000 	nop
  4c3e50:	ac431054 	sw	v1,4180(v0)
		CALC_K192 (k, 14, 0xEC, 0xF1, 0x6C, 0xE1);
  4c3e54:	8fc2003c 	lw	v0,60(s8)
  4c3e58:	00000000 	nop
  4c3e5c:	24420010 	addiu	v0,v0,16
  4c3e60:	90420000 	lbu	v0,0(v0)
  4c3e64:	00000000 	nop
  4c3e68:	384200f1 	xori	v0,v0,0xf1
  4c3e6c:	304200ff 	andi	v0,v0,0xff
  4c3e70:	8f83804c 	lw	v1,-32692(gp)
  4c3e74:	00000000 	nop
  4c3e78:	24635890 	addiu	v1,v1,22672
  4c3e7c:	00621821 	addu	v1,v1,v0
  4c3e80:	8fc2003c 	lw	v0,60(s8)
  4c3e84:	00000000 	nop
  4c3e88:	24420008 	addiu	v0,v0,8
  4c3e8c:	90630000 	lbu	v1,0(v1)
  4c3e90:	90420000 	lbu	v0,0(v0)
  4c3e94:	00000000 	nop
  4c3e98:	00621026 	xor	v0,v1,v0
  4c3e9c:	304200ff 	andi	v0,v0,0xff
  4c3ea0:	8f81804c 	lw	at,-32692(gp)
  4c3ea4:	00000000 	nop
  4c3ea8:	24215890 	addiu	at,at,22672
  4c3eac:	00221021 	addu	v0,at,v0
  4c3eb0:	90430000 	lbu	v1,0(v0)
  4c3eb4:	8fc2003c 	lw	v0,60(s8)
  4c3eb8:	00000000 	nop
  4c3ebc:	90420000 	lbu	v0,0(v0)
  4c3ec0:	00000000 	nop
  4c3ec4:	00621026 	xor	v0,v1,v0
  4c3ec8:	304200ff 	andi	v0,v0,0xff
  4c3ecc:	00021080 	sll	v0,v0,0x2
  4c3ed0:	8f84804c 	lw	a0,-32692(gp)
  4c3ed4:	00000000 	nop
  4c3ed8:	24845a90 	addiu	a0,a0,23184
  4c3edc:	00822021 	addu	a0,a0,v0
  4c3ee0:	8fc2003c 	lw	v0,60(s8)
  4c3ee4:	00000000 	nop
  4c3ee8:	24420011 	addiu	v0,v0,17
  4c3eec:	90420000 	lbu	v0,0(v0)
  4c3ef0:	00000000 	nop
  4c3ef4:	384200f1 	xori	v0,v0,0xf1
  4c3ef8:	304200ff 	andi	v0,v0,0xff
  4c3efc:	8f83804c 	lw	v1,-32692(gp)
  4c3f00:	00000000 	nop
  4c3f04:	24635990 	addiu	v1,v1,22928
  4c3f08:	00621821 	addu	v1,v1,v0
  4c3f0c:	8fc2003c 	lw	v0,60(s8)
  4c3f10:	00000000 	nop
  4c3f14:	24420009 	addiu	v0,v0,9
  4c3f18:	90630000 	lbu	v1,0(v1)
  4c3f1c:	90420000 	lbu	v0,0(v0)
  4c3f20:	00000000 	nop
  4c3f24:	00621026 	xor	v0,v1,v0
  4c3f28:	304200ff 	andi	v0,v0,0xff
  4c3f2c:	8f83804c 	lw	v1,-32692(gp)
  4c3f30:	00000000 	nop
  4c3f34:	24635890 	addiu	v1,v1,22672
  4c3f38:	00621821 	addu	v1,v1,v0
  4c3f3c:	8fc2003c 	lw	v0,60(s8)
  4c3f40:	00000000 	nop
  4c3f44:	24420001 	addiu	v0,v0,1
  4c3f48:	90630000 	lbu	v1,0(v1)
  4c3f4c:	90420000 	lbu	v0,0(v0)
  4c3f50:	00000000 	nop
  4c3f54:	00621026 	xor	v0,v1,v0
  4c3f58:	304200ff 	andi	v0,v0,0xff
  4c3f5c:	00021080 	sll	v0,v0,0x2
  4c3f60:	24420400 	addiu	v0,v0,1024
  4c3f64:	8f81804c 	lw	at,-32692(gp)
  4c3f68:	00000000 	nop
  4c3f6c:	24215a90 	addiu	at,at,23184
  4c3f70:	00221021 	addu	v0,at,v0
  4c3f74:	8c830000 	lw	v1,0(a0)
  4c3f78:	8c420000 	lw	v0,0(v0)
  4c3f7c:	00000000 	nop
  4c3f80:	00622026 	xor	a0,v1,v0
  4c3f84:	8fc2003c 	lw	v0,60(s8)
  4c3f88:	00000000 	nop
  4c3f8c:	24420012 	addiu	v0,v0,18
  4c3f90:	90420000 	lbu	v0,0(v0)
  4c3f94:	00000000 	nop
  4c3f98:	384200ec 	xori	v0,v0,0xec
  4c3f9c:	304200ff 	andi	v0,v0,0xff
  4c3fa0:	8f83804c 	lw	v1,-32692(gp)
  4c3fa4:	00000000 	nop
  4c3fa8:	24635890 	addiu	v1,v1,22672
  4c3fac:	00621821 	addu	v1,v1,v0
  4c3fb0:	8fc2003c 	lw	v0,60(s8)
  4c3fb4:	00000000 	nop
  4c3fb8:	2442000a 	addiu	v0,v0,10
  4c3fbc:	90630000 	lbu	v1,0(v1)
  4c3fc0:	90420000 	lbu	v0,0(v0)
  4c3fc4:	00000000 	nop
  4c3fc8:	00621026 	xor	v0,v1,v0
  4c3fcc:	304200ff 	andi	v0,v0,0xff
  4c3fd0:	8f83804c 	lw	v1,-32692(gp)
  4c3fd4:	00000000 	nop
  4c3fd8:	24635990 	addiu	v1,v1,22928
  4c3fdc:	00621821 	addu	v1,v1,v0
  4c3fe0:	8fc2003c 	lw	v0,60(s8)
  4c3fe4:	00000000 	nop
  4c3fe8:	24420002 	addiu	v0,v0,2
  4c3fec:	90630000 	lbu	v1,0(v1)
  4c3ff0:	90420000 	lbu	v0,0(v0)
  4c3ff4:	00000000 	nop
  4c3ff8:	00621026 	xor	v0,v1,v0
  4c3ffc:	304200ff 	andi	v0,v0,0xff
  4c4000:	00021080 	sll	v0,v0,0x2
  4c4004:	24420800 	addiu	v0,v0,2048
  4c4008:	8f81804c 	lw	at,-32692(gp)
  4c400c:	00000000 	nop
  4c4010:	24215a90 	addiu	at,at,23184
  4c4014:	00221021 	addu	v0,at,v0
  4c4018:	8c420000 	lw	v0,0(v0)
  4c401c:	00000000 	nop
  4c4020:	00822026 	xor	a0,a0,v0
  4c4024:	8fc2003c 	lw	v0,60(s8)
  4c4028:	00000000 	nop
  4c402c:	24420013 	addiu	v0,v0,19
  4c4030:	90420000 	lbu	v0,0(v0)
  4c4034:	00000000 	nop
  4c4038:	384200ec 	xori	v0,v0,0xec
  4c403c:	304200ff 	andi	v0,v0,0xff
  4c4040:	8f83804c 	lw	v1,-32692(gp)
  4c4044:	00000000 	nop
  4c4048:	24635990 	addiu	v1,v1,22928
  4c404c:	00621821 	addu	v1,v1,v0
  4c4050:	8fc2003c 	lw	v0,60(s8)
  4c4054:	00000000 	nop
  4c4058:	2442000b 	addiu	v0,v0,11
  4c405c:	90630000 	lbu	v1,0(v1)
  4c4060:	90420000 	lbu	v0,0(v0)
  4c4064:	00000000 	nop
  4c4068:	00621026 	xor	v0,v1,v0
  4c406c:	304200ff 	andi	v0,v0,0xff
  4c4070:	8f83804c 	lw	v1,-32692(gp)
  4c4074:	00000000 	nop
  4c4078:	24635990 	addiu	v1,v1,22928
  4c407c:	00621821 	addu	v1,v1,v0
  4c4080:	8fc2003c 	lw	v0,60(s8)
  4c4084:	00000000 	nop
  4c4088:	24420003 	addiu	v0,v0,3
  4c408c:	90630000 	lbu	v1,0(v1)
  4c4090:	90420000 	lbu	v0,0(v0)
  4c4094:	00000000 	nop
  4c4098:	00621026 	xor	v0,v1,v0
  4c409c:	304200ff 	andi	v0,v0,0xff
  4c40a0:	00021080 	sll	v0,v0,0x2
  4c40a4:	24420c00 	addiu	v0,v0,3072
  4c40a8:	8f81804c 	lw	at,-32692(gp)
  4c40ac:	00000000 	nop
  4c40b0:	24215a90 	addiu	at,at,23184
  4c40b4:	00221021 	addu	v0,at,v0
  4c40b8:	8c420000 	lw	v0,0(v0)
  4c40bc:	00000000 	nop
  4c40c0:	00821026 	xor	v0,a0,v0
  4c40c4:	afc20014 	sw	v0,20(s8)
  4c40c8:	8fc2003c 	lw	v0,60(s8)
  4c40cc:	00000000 	nop
  4c40d0:	24420014 	addiu	v0,v0,20
  4c40d4:	90420000 	lbu	v0,0(v0)
  4c40d8:	00000000 	nop
  4c40dc:	384200e1 	xori	v0,v0,0xe1
  4c40e0:	304200ff 	andi	v0,v0,0xff
  4c40e4:	8f83804c 	lw	v1,-32692(gp)
  4c40e8:	00000000 	nop
  4c40ec:	24635890 	addiu	v1,v1,22672
  4c40f0:	00621821 	addu	v1,v1,v0
  4c40f4:	8fc2003c 	lw	v0,60(s8)
  4c40f8:	00000000 	nop
  4c40fc:	2442000c 	addiu	v0,v0,12
  4c4100:	90630000 	lbu	v1,0(v1)
  4c4104:	90420000 	lbu	v0,0(v0)
  4c4108:	00000000 	nop
  4c410c:	00621026 	xor	v0,v1,v0
  4c4110:	304200ff 	andi	v0,v0,0xff
  4c4114:	8f83804c 	lw	v1,-32692(gp)
  4c4118:	00000000 	nop
  4c411c:	24635890 	addiu	v1,v1,22672
  4c4120:	00621821 	addu	v1,v1,v0
  4c4124:	8fc2003c 	lw	v0,60(s8)
  4c4128:	00000000 	nop
  4c412c:	24420004 	addiu	v0,v0,4
  4c4130:	90630000 	lbu	v1,0(v1)
  4c4134:	90420000 	lbu	v0,0(v0)
  4c4138:	00000000 	nop
  4c413c:	00621026 	xor	v0,v1,v0
  4c4140:	304200ff 	andi	v0,v0,0xff
  4c4144:	00021080 	sll	v0,v0,0x2
  4c4148:	8f84804c 	lw	a0,-32692(gp)
  4c414c:	00000000 	nop
  4c4150:	24845a90 	addiu	a0,a0,23184
  4c4154:	00822021 	addu	a0,a0,v0
  4c4158:	8fc2003c 	lw	v0,60(s8)
  4c415c:	00000000 	nop
  4c4160:	24420015 	addiu	v0,v0,21
  4c4164:	90420000 	lbu	v0,0(v0)
  4c4168:	00000000 	nop
  4c416c:	384200e1 	xori	v0,v0,0xe1
  4c4170:	304200ff 	andi	v0,v0,0xff
  4c4174:	8f83804c 	lw	v1,-32692(gp)
  4c4178:	00000000 	nop
  4c417c:	24635990 	addiu	v1,v1,22928
  4c4180:	00621821 	addu	v1,v1,v0
  4c4184:	8fc2003c 	lw	v0,60(s8)
  4c4188:	00000000 	nop
  4c418c:	2442000d 	addiu	v0,v0,13
  4c4190:	90630000 	lbu	v1,0(v1)
  4c4194:	90420000 	lbu	v0,0(v0)
  4c4198:	00000000 	nop
  4c419c:	00621026 	xor	v0,v1,v0
  4c41a0:	304200ff 	andi	v0,v0,0xff
  4c41a4:	8f83804c 	lw	v1,-32692(gp)
  4c41a8:	00000000 	nop
  4c41ac:	24635890 	addiu	v1,v1,22672
  4c41b0:	00621821 	addu	v1,v1,v0
  4c41b4:	8fc2003c 	lw	v0,60(s8)
  4c41b8:	00000000 	nop
  4c41bc:	24420005 	addiu	v0,v0,5
  4c41c0:	90630000 	lbu	v1,0(v1)
  4c41c4:	90420000 	lbu	v0,0(v0)
  4c41c8:	00000000 	nop
  4c41cc:	00621026 	xor	v0,v1,v0
  4c41d0:	304200ff 	andi	v0,v0,0xff
  4c41d4:	00021080 	sll	v0,v0,0x2
  4c41d8:	24420400 	addiu	v0,v0,1024
  4c41dc:	8f81804c 	lw	at,-32692(gp)
  4c41e0:	00000000 	nop
  4c41e4:	24215a90 	addiu	at,at,23184
  4c41e8:	00221021 	addu	v0,at,v0
  4c41ec:	8c830000 	lw	v1,0(a0)
  4c41f0:	8c420000 	lw	v0,0(v0)
  4c41f4:	00000000 	nop
  4c41f8:	00622026 	xor	a0,v1,v0
  4c41fc:	8fc2003c 	lw	v0,60(s8)
  4c4200:	00000000 	nop
  4c4204:	24420016 	addiu	v0,v0,22
  4c4208:	90420000 	lbu	v0,0(v0)
  4c420c:	00000000 	nop
  4c4210:	3842006c 	xori	v0,v0,0x6c
  4c4214:	304200ff 	andi	v0,v0,0xff
  4c4218:	8f83804c 	lw	v1,-32692(gp)
  4c421c:	00000000 	nop
  4c4220:	24635890 	addiu	v1,v1,22672
  4c4224:	00621821 	addu	v1,v1,v0
  4c4228:	8fc2003c 	lw	v0,60(s8)
  4c422c:	00000000 	nop
  4c4230:	2442000e 	addiu	v0,v0,14
  4c4234:	90630000 	lbu	v1,0(v1)
  4c4238:	90420000 	lbu	v0,0(v0)
  4c423c:	00000000 	nop
  4c4240:	00621026 	xor	v0,v1,v0
  4c4244:	304200ff 	andi	v0,v0,0xff
  4c4248:	8f83804c 	lw	v1,-32692(gp)
  4c424c:	00000000 	nop
  4c4250:	24635990 	addiu	v1,v1,22928
  4c4254:	00621821 	addu	v1,v1,v0
  4c4258:	8fc2003c 	lw	v0,60(s8)
  4c425c:	00000000 	nop
  4c4260:	24420006 	addiu	v0,v0,6
  4c4264:	90630000 	lbu	v1,0(v1)
  4c4268:	90420000 	lbu	v0,0(v0)
  4c426c:	00000000 	nop
  4c4270:	00621026 	xor	v0,v1,v0
  4c4274:	304200ff 	andi	v0,v0,0xff
  4c4278:	00021080 	sll	v0,v0,0x2
  4c427c:	24420800 	addiu	v0,v0,2048
  4c4280:	8f81804c 	lw	at,-32692(gp)
  4c4284:	00000000 	nop
  4c4288:	24215a90 	addiu	at,at,23184
  4c428c:	00221021 	addu	v0,at,v0
  4c4290:	8c420000 	lw	v0,0(v0)
  4c4294:	00000000 	nop
  4c4298:	00822026 	xor	a0,a0,v0
  4c429c:	8fc2003c 	lw	v0,60(s8)
  4c42a0:	00000000 	nop
  4c42a4:	24420017 	addiu	v0,v0,23
  4c42a8:	90420000 	lbu	v0,0(v0)
  4c42ac:	00000000 	nop
  4c42b0:	3842006c 	xori	v0,v0,0x6c
  4c42b4:	304200ff 	andi	v0,v0,0xff
  4c42b8:	8f83804c 	lw	v1,-32692(gp)
  4c42bc:	00000000 	nop
  4c42c0:	24635990 	addiu	v1,v1,22928
  4c42c4:	00621821 	addu	v1,v1,v0
  4c42c8:	8fc2003c 	lw	v0,60(s8)
  4c42cc:	00000000 	nop
  4c42d0:	2442000f 	addiu	v0,v0,15
  4c42d4:	90630000 	lbu	v1,0(v1)
  4c42d8:	90420000 	lbu	v0,0(v0)
  4c42dc:	00000000 	nop
  4c42e0:	00621026 	xor	v0,v1,v0
  4c42e4:	304200ff 	andi	v0,v0,0xff
  4c42e8:	8f83804c 	lw	v1,-32692(gp)
  4c42ec:	00000000 	nop
  4c42f0:	24635990 	addiu	v1,v1,22928
  4c42f4:	00621821 	addu	v1,v1,v0
  4c42f8:	8fc2003c 	lw	v0,60(s8)
  4c42fc:	00000000 	nop
  4c4300:	24420007 	addiu	v0,v0,7
  4c4304:	90630000 	lbu	v1,0(v1)
  4c4308:	90420000 	lbu	v0,0(v0)
  4c430c:	00000000 	nop
  4c4310:	00621026 	xor	v0,v1,v0
  4c4314:	304200ff 	andi	v0,v0,0xff
  4c4318:	00021080 	sll	v0,v0,0x2
  4c431c:	24420c00 	addiu	v0,v0,3072
  4c4320:	8f81804c 	lw	at,-32692(gp)
  4c4324:	00000000 	nop
  4c4328:	24215a90 	addiu	at,at,23184
  4c432c:	00221021 	addu	v0,at,v0
  4c4330:	8c420000 	lw	v0,0(v0)
  4c4334:	00000000 	nop
  4c4338:	00821026 	xor	v0,a0,v0
  4c433c:	afc20018 	sw	v0,24(s8)
  4c4340:	8fc20018 	lw	v0,24(s8)
  4c4344:	00000000 	nop
  4c4348:	00021a00 	sll	v1,v0,0x8
  4c434c:	00021602 	srl	v0,v0,0x18
  4c4350:	00621025 	or	v0,v1,v0
  4c4354:	afc20018 	sw	v0,24(s8)
  4c4358:	8fc30014 	lw	v1,20(s8)
  4c435c:	8fc20018 	lw	v0,24(s8)
  4c4360:	00000000 	nop
  4c4364:	00621021 	addu	v0,v1,v0
  4c4368:	afc20014 	sw	v0,20(s8)
  4c436c:	8fc30018 	lw	v1,24(s8)
  4c4370:	8fc20014 	lw	v0,20(s8)
  4c4374:	00000000 	nop
  4c4378:	00621021 	addu	v0,v1,v0
  4c437c:	afc20018 	sw	v0,24(s8)
  4c4380:	8fc30014 	lw	v1,20(s8)
  4c4384:	8fc20038 	lw	v0,56(s8)
  4c4388:	00000000 	nop
  4c438c:	ac431058 	sw	v1,4184(v0)
  4c4390:	8fc20018 	lw	v0,24(s8)
  4c4394:	00000000 	nop
  4c4398:	00021a40 	sll	v1,v0,0x9
  4c439c:	000215c2 	srl	v0,v0,0x17
  4c43a0:	00621825 	or	v1,v1,v0
  4c43a4:	8fc20038 	lw	v0,56(s8)
  4c43a8:	00000000 	nop
  4c43ac:	ac43105c 	sw	v1,4188(v0)
		CALC_K192 (k, 16, 0x43, 0x30, 0x75, 0x0F);
  4c43b0:	8fc2003c 	lw	v0,60(s8)
  4c43b4:	00000000 	nop
  4c43b8:	24420010 	addiu	v0,v0,16
  4c43bc:	90420000 	lbu	v0,0(v0)
  4c43c0:	00000000 	nop
  4c43c4:	38420030 	xori	v0,v0,0x30
  4c43c8:	304200ff 	andi	v0,v0,0xff
  4c43cc:	8f83804c 	lw	v1,-32692(gp)
  4c43d0:	00000000 	nop
  4c43d4:	24635890 	addiu	v1,v1,22672
  4c43d8:	00621821 	addu	v1,v1,v0
  4c43dc:	8fc2003c 	lw	v0,60(s8)
  4c43e0:	00000000 	nop
  4c43e4:	24420008 	addiu	v0,v0,8
  4c43e8:	90630000 	lbu	v1,0(v1)
  4c43ec:	90420000 	lbu	v0,0(v0)
  4c43f0:	00000000 	nop
  4c43f4:	00621026 	xor	v0,v1,v0
  4c43f8:	304200ff 	andi	v0,v0,0xff
  4c43fc:	8f81804c 	lw	at,-32692(gp)
  4c4400:	00000000 	nop
  4c4404:	24215890 	addiu	at,at,22672
  4c4408:	00221021 	addu	v0,at,v0
  4c440c:	90430000 	lbu	v1,0(v0)
  4c4410:	8fc2003c 	lw	v0,60(s8)
  4c4414:	00000000 	nop
  4c4418:	90420000 	lbu	v0,0(v0)
  4c441c:	00000000 	nop
  4c4420:	00621026 	xor	v0,v1,v0
  4c4424:	304200ff 	andi	v0,v0,0xff
  4c4428:	00021080 	sll	v0,v0,0x2
  4c442c:	8f84804c 	lw	a0,-32692(gp)
  4c4430:	00000000 	nop
  4c4434:	24845a90 	addiu	a0,a0,23184
  4c4438:	00822021 	addu	a0,a0,v0
  4c443c:	8fc2003c 	lw	v0,60(s8)
  4c4440:	00000000 	nop
  4c4444:	24420011 	addiu	v0,v0,17
  4c4448:	90420000 	lbu	v0,0(v0)
  4c444c:	00000000 	nop
  4c4450:	38420030 	xori	v0,v0,0x30
  4c4454:	304200ff 	andi	v0,v0,0xff
  4c4458:	8f83804c 	lw	v1,-32692(gp)
  4c445c:	00000000 	nop
  4c4460:	24635990 	addiu	v1,v1,22928
  4c4464:	00621821 	addu	v1,v1,v0
  4c4468:	8fc2003c 	lw	v0,60(s8)
  4c446c:	00000000 	nop
  4c4470:	24420009 	addiu	v0,v0,9
  4c4474:	90630000 	lbu	v1,0(v1)
  4c4478:	90420000 	lbu	v0,0(v0)
  4c447c:	00000000 	nop
  4c4480:	00621026 	xor	v0,v1,v0
  4c4484:	304200ff 	andi	v0,v0,0xff
  4c4488:	8f83804c 	lw	v1,-32692(gp)
  4c448c:	00000000 	nop
  4c4490:	24635890 	addiu	v1,v1,22672
  4c4494:	00621821 	addu	v1,v1,v0
  4c4498:	8fc2003c 	lw	v0,60(s8)
  4c449c:	00000000 	nop
  4c44a0:	24420001 	addiu	v0,v0,1
  4c44a4:	90630000 	lbu	v1,0(v1)
  4c44a8:	90420000 	lbu	v0,0(v0)
  4c44ac:	00000000 	nop
  4c44b0:	00621026 	xor	v0,v1,v0
  4c44b4:	304200ff 	andi	v0,v0,0xff
  4c44b8:	00021080 	sll	v0,v0,0x2
  4c44bc:	24420400 	addiu	v0,v0,1024
  4c44c0:	8f81804c 	lw	at,-32692(gp)
  4c44c4:	00000000 	nop
  4c44c8:	24215a90 	addiu	at,at,23184
  4c44cc:	00221021 	addu	v0,at,v0
  4c44d0:	8c830000 	lw	v1,0(a0)
  4c44d4:	8c420000 	lw	v0,0(v0)
  4c44d8:	00000000 	nop
  4c44dc:	00622026 	xor	a0,v1,v0
  4c44e0:	8fc2003c 	lw	v0,60(s8)
  4c44e4:	00000000 	nop
  4c44e8:	24420012 	addiu	v0,v0,18
  4c44ec:	90420000 	lbu	v0,0(v0)
  4c44f0:	00000000 	nop
  4c44f4:	38420043 	xori	v0,v0,0x43
  4c44f8:	304200ff 	andi	v0,v0,0xff
  4c44fc:	8f83804c 	lw	v1,-32692(gp)
  4c4500:	00000000 	nop
  4c4504:	24635890 	addiu	v1,v1,22672
  4c4508:	00621821 	addu	v1,v1,v0
  4c450c:	8fc2003c 	lw	v0,60(s8)
  4c4510:	00000000 	nop
  4c4514:	2442000a 	addiu	v0,v0,10
  4c4518:	90630000 	lbu	v1,0(v1)
  4c451c:	90420000 	lbu	v0,0(v0)
  4c4520:	00000000 	nop
  4c4524:	00621026 	xor	v0,v1,v0
  4c4528:	304200ff 	andi	v0,v0,0xff
  4c452c:	8f83804c 	lw	v1,-32692(gp)
  4c4530:	00000000 	nop
  4c4534:	24635990 	addiu	v1,v1,22928
  4c4538:	00621821 	addu	v1,v1,v0
  4c453c:	8fc2003c 	lw	v0,60(s8)
  4c4540:	00000000 	nop
  4c4544:	24420002 	addiu	v0,v0,2
  4c4548:	90630000 	lbu	v1,0(v1)
  4c454c:	90420000 	lbu	v0,0(v0)
  4c4550:	00000000 	nop
  4c4554:	00621026 	xor	v0,v1,v0
  4c4558:	304200ff 	andi	v0,v0,0xff
  4c455c:	00021080 	sll	v0,v0,0x2
  4c4560:	24420800 	addiu	v0,v0,2048
  4c4564:	8f81804c 	lw	at,-32692(gp)
  4c4568:	00000000 	nop
  4c456c:	24215a90 	addiu	at,at,23184
  4c4570:	00221021 	addu	v0,at,v0
  4c4574:	8c420000 	lw	v0,0(v0)
  4c4578:	00000000 	nop
  4c457c:	00822026 	xor	a0,a0,v0
  4c4580:	8fc2003c 	lw	v0,60(s8)
  4c4584:	00000000 	nop
  4c4588:	24420013 	addiu	v0,v0,19
  4c458c:	90420000 	lbu	v0,0(v0)
  4c4590:	00000000 	nop
  4c4594:	38420043 	xori	v0,v0,0x43
  4c4598:	304200ff 	andi	v0,v0,0xff
  4c459c:	8f83804c 	lw	v1,-32692(gp)
  4c45a0:	00000000 	nop
  4c45a4:	24635990 	addiu	v1,v1,22928
  4c45a8:	00621821 	addu	v1,v1,v0
  4c45ac:	8fc2003c 	lw	v0,60(s8)
  4c45b0:	00000000 	nop
  4c45b4:	2442000b 	addiu	v0,v0,11
  4c45b8:	90630000 	lbu	v1,0(v1)
  4c45bc:	90420000 	lbu	v0,0(v0)
  4c45c0:	00000000 	nop
  4c45c4:	00621026 	xor	v0,v1,v0
  4c45c8:	304200ff 	andi	v0,v0,0xff
  4c45cc:	8f83804c 	lw	v1,-32692(gp)
  4c45d0:	00000000 	nop
  4c45d4:	24635990 	addiu	v1,v1,22928
  4c45d8:	00621821 	addu	v1,v1,v0
  4c45dc:	8fc2003c 	lw	v0,60(s8)
  4c45e0:	00000000 	nop
  4c45e4:	24420003 	addiu	v0,v0,3
  4c45e8:	90630000 	lbu	v1,0(v1)
  4c45ec:	90420000 	lbu	v0,0(v0)
  4c45f0:	00000000 	nop
  4c45f4:	00621026 	xor	v0,v1,v0
  4c45f8:	304200ff 	andi	v0,v0,0xff
  4c45fc:	00021080 	sll	v0,v0,0x2
  4c4600:	24420c00 	addiu	v0,v0,3072
  4c4604:	8f81804c 	lw	at,-32692(gp)
  4c4608:	00000000 	nop
  4c460c:	24215a90 	addiu	at,at,23184
  4c4610:	00221021 	addu	v0,at,v0
  4c4614:	8c420000 	lw	v0,0(v0)
  4c4618:	00000000 	nop
  4c461c:	00821026 	xor	v0,a0,v0
  4c4620:	afc20014 	sw	v0,20(s8)
  4c4624:	8fc2003c 	lw	v0,60(s8)
  4c4628:	00000000 	nop
  4c462c:	24420014 	addiu	v0,v0,20
  4c4630:	90420000 	lbu	v0,0(v0)
  4c4634:	00000000 	nop
  4c4638:	3842000f 	xori	v0,v0,0xf
  4c463c:	304200ff 	andi	v0,v0,0xff
  4c4640:	8f83804c 	lw	v1,-32692(gp)
  4c4644:	00000000 	nop
  4c4648:	24635890 	addiu	v1,v1,22672
  4c464c:	00621821 	addu	v1,v1,v0
  4c4650:	8fc2003c 	lw	v0,60(s8)
  4c4654:	00000000 	nop
  4c4658:	2442000c 	addiu	v0,v0,12
  4c465c:	90630000 	lbu	v1,0(v1)
  4c4660:	90420000 	lbu	v0,0(v0)
  4c4664:	00000000 	nop
  4c4668:	00621026 	xor	v0,v1,v0
  4c466c:	304200ff 	andi	v0,v0,0xff
  4c4670:	8f83804c 	lw	v1,-32692(gp)
  4c4674:	00000000 	nop
  4c4678:	24635890 	addiu	v1,v1,22672
  4c467c:	00621821 	addu	v1,v1,v0
  4c4680:	8fc2003c 	lw	v0,60(s8)
  4c4684:	00000000 	nop
  4c4688:	24420004 	addiu	v0,v0,4
  4c468c:	90630000 	lbu	v1,0(v1)
  4c4690:	90420000 	lbu	v0,0(v0)
  4c4694:	00000000 	nop
  4c4698:	00621026 	xor	v0,v1,v0
  4c469c:	304200ff 	andi	v0,v0,0xff
  4c46a0:	00021080 	sll	v0,v0,0x2
  4c46a4:	8f84804c 	lw	a0,-32692(gp)
  4c46a8:	00000000 	nop
  4c46ac:	24845a90 	addiu	a0,a0,23184
  4c46b0:	00822021 	addu	a0,a0,v0
  4c46b4:	8fc2003c 	lw	v0,60(s8)
  4c46b8:	00000000 	nop
  4c46bc:	24420015 	addiu	v0,v0,21
  4c46c0:	90420000 	lbu	v0,0(v0)
  4c46c4:	00000000 	nop
  4c46c8:	3842000f 	xori	v0,v0,0xf
  4c46cc:	304200ff 	andi	v0,v0,0xff
  4c46d0:	8f83804c 	lw	v1,-32692(gp)
  4c46d4:	00000000 	nop
  4c46d8:	24635990 	addiu	v1,v1,22928
  4c46dc:	00621821 	addu	v1,v1,v0
  4c46e0:	8fc2003c 	lw	v0,60(s8)
  4c46e4:	00000000 	nop
  4c46e8:	2442000d 	addiu	v0,v0,13
  4c46ec:	90630000 	lbu	v1,0(v1)
  4c46f0:	90420000 	lbu	v0,0(v0)
  4c46f4:	00000000 	nop
  4c46f8:	00621026 	xor	v0,v1,v0
  4c46fc:	304200ff 	andi	v0,v0,0xff
  4c4700:	8f83804c 	lw	v1,-32692(gp)
  4c4704:	00000000 	nop
  4c4708:	24635890 	addiu	v1,v1,22672
  4c470c:	00621821 	addu	v1,v1,v0
  4c4710:	8fc2003c 	lw	v0,60(s8)
  4c4714:	00000000 	nop
  4c4718:	24420005 	addiu	v0,v0,5
  4c471c:	90630000 	lbu	v1,0(v1)
  4c4720:	90420000 	lbu	v0,0(v0)
  4c4724:	00000000 	nop
  4c4728:	00621026 	xor	v0,v1,v0
  4c472c:	304200ff 	andi	v0,v0,0xff
  4c4730:	00021080 	sll	v0,v0,0x2
  4c4734:	24420400 	addiu	v0,v0,1024
  4c4738:	8f81804c 	lw	at,-32692(gp)
  4c473c:	00000000 	nop
  4c4740:	24215a90 	addiu	at,at,23184
  4c4744:	00221021 	addu	v0,at,v0
  4c4748:	8c830000 	lw	v1,0(a0)
  4c474c:	8c420000 	lw	v0,0(v0)
  4c4750:	00000000 	nop
  4c4754:	00622026 	xor	a0,v1,v0
  4c4758:	8fc2003c 	lw	v0,60(s8)
  4c475c:	00000000 	nop
  4c4760:	24420016 	addiu	v0,v0,22
  4c4764:	90420000 	lbu	v0,0(v0)
  4c4768:	00000000 	nop
  4c476c:	38420075 	xori	v0,v0,0x75
  4c4770:	304200ff 	andi	v0,v0,0xff
  4c4774:	8f83804c 	lw	v1,-32692(gp)
  4c4778:	00000000 	nop
  4c477c:	24635890 	addiu	v1,v1,22672
  4c4780:	00621821 	addu	v1,v1,v0
  4c4784:	8fc2003c 	lw	v0,60(s8)
  4c4788:	00000000 	nop
  4c478c:	2442000e 	addiu	v0,v0,14
  4c4790:	90630000 	lbu	v1,0(v1)
  4c4794:	90420000 	lbu	v0,0(v0)
  4c4798:	00000000 	nop
  4c479c:	00621026 	xor	v0,v1,v0
  4c47a0:	304200ff 	andi	v0,v0,0xff
  4c47a4:	8f83804c 	lw	v1,-32692(gp)
  4c47a8:	00000000 	nop
  4c47ac:	24635990 	addiu	v1,v1,22928
  4c47b0:	00621821 	addu	v1,v1,v0
  4c47b4:	8fc2003c 	lw	v0,60(s8)
  4c47b8:	00000000 	nop
  4c47bc:	24420006 	addiu	v0,v0,6
  4c47c0:	90630000 	lbu	v1,0(v1)
  4c47c4:	90420000 	lbu	v0,0(v0)
  4c47c8:	00000000 	nop
  4c47cc:	00621026 	xor	v0,v1,v0
  4c47d0:	304200ff 	andi	v0,v0,0xff
  4c47d4:	00021080 	sll	v0,v0,0x2
  4c47d8:	24420800 	addiu	v0,v0,2048
  4c47dc:	8f81804c 	lw	at,-32692(gp)
  4c47e0:	00000000 	nop
  4c47e4:	24215a90 	addiu	at,at,23184
  4c47e8:	00221021 	addu	v0,at,v0
  4c47ec:	8c420000 	lw	v0,0(v0)
  4c47f0:	00000000 	nop
  4c47f4:	00822026 	xor	a0,a0,v0
  4c47f8:	8fc2003c 	lw	v0,60(s8)
  4c47fc:	00000000 	nop
  4c4800:	24420017 	addiu	v0,v0,23
  4c4804:	90420000 	lbu	v0,0(v0)
  4c4808:	00000000 	nop
  4c480c:	38420075 	xori	v0,v0,0x75
  4c4810:	304200ff 	andi	v0,v0,0xff
  4c4814:	8f83804c 	lw	v1,-32692(gp)
  4c4818:	00000000 	nop
  4c481c:	24635990 	addiu	v1,v1,22928
  4c4820:	00621821 	addu	v1,v1,v0
  4c4824:	8fc2003c 	lw	v0,60(s8)
  4c4828:	00000000 	nop
  4c482c:	2442000f 	addiu	v0,v0,15
  4c4830:	90630000 	lbu	v1,0(v1)
  4c4834:	90420000 	lbu	v0,0(v0)
  4c4838:	00000000 	nop
  4c483c:	00621026 	xor	v0,v1,v0
  4c4840:	304200ff 	andi	v0,v0,0xff
  4c4844:	8f83804c 	lw	v1,-32692(gp)
  4c4848:	00000000 	nop
  4c484c:	24635990 	addiu	v1,v1,22928
  4c4850:	00621821 	addu	v1,v1,v0
  4c4854:	8fc2003c 	lw	v0,60(s8)
  4c4858:	00000000 	nop
  4c485c:	24420007 	addiu	v0,v0,7
  4c4860:	90630000 	lbu	v1,0(v1)
  4c4864:	90420000 	lbu	v0,0(v0)
  4c4868:	00000000 	nop
  4c486c:	00621026 	xor	v0,v1,v0
  4c4870:	304200ff 	andi	v0,v0,0xff
  4c4874:	00021080 	sll	v0,v0,0x2
  4c4878:	24420c00 	addiu	v0,v0,3072
  4c487c:	8f81804c 	lw	at,-32692(gp)
  4c4880:	00000000 	nop
  4c4884:	24215a90 	addiu	at,at,23184
  4c4888:	00221021 	addu	v0,at,v0
  4c488c:	8c420000 	lw	v0,0(v0)
  4c4890:	00000000 	nop
  4c4894:	00821026 	xor	v0,a0,v0
  4c4898:	afc20018 	sw	v0,24(s8)
  4c489c:	8fc20018 	lw	v0,24(s8)
  4c48a0:	00000000 	nop
  4c48a4:	00021a00 	sll	v1,v0,0x8
  4c48a8:	00021602 	srl	v0,v0,0x18
  4c48ac:	00621025 	or	v0,v1,v0
  4c48b0:	afc20018 	sw	v0,24(s8)
  4c48b4:	8fc30014 	lw	v1,20(s8)
  4c48b8:	8fc20018 	lw	v0,24(s8)
  4c48bc:	00000000 	nop
  4c48c0:	00621021 	addu	v0,v1,v0
  4c48c4:	afc20014 	sw	v0,20(s8)
  4c48c8:	8fc30018 	lw	v1,24(s8)
  4c48cc:	8fc20014 	lw	v0,20(s8)
  4c48d0:	00000000 	nop
  4c48d4:	00621021 	addu	v0,v1,v0
  4c48d8:	afc20018 	sw	v0,24(s8)
  4c48dc:	8fc30014 	lw	v1,20(s8)
  4c48e0:	8fc20038 	lw	v0,56(s8)
  4c48e4:	00000000 	nop
  4c48e8:	ac431060 	sw	v1,4192(v0)
  4c48ec:	8fc20018 	lw	v0,24(s8)
  4c48f0:	00000000 	nop
  4c48f4:	00021a40 	sll	v1,v0,0x9
  4c48f8:	000215c2 	srl	v0,v0,0x17
  4c48fc:	00621825 	or	v1,v1,v0
  4c4900:	8fc20038 	lw	v0,56(s8)
  4c4904:	00000000 	nop
  4c4908:	ac431064 	sw	v1,4196(v0)
		CALC_K192 (k, 18, 0x37, 0xF8, 0x26, 0x1B);
  4c490c:	8fc2003c 	lw	v0,60(s8)
  4c4910:	00000000 	nop
  4c4914:	24420010 	addiu	v0,v0,16
  4c4918:	90420000 	lbu	v0,0(v0)
  4c491c:	00000000 	nop
  4c4920:	384200f8 	xori	v0,v0,0xf8
  4c4924:	304200ff 	andi	v0,v0,0xff
  4c4928:	8f83804c 	lw	v1,-32692(gp)
  4c492c:	00000000 	nop
  4c4930:	24635890 	addiu	v1,v1,22672
  4c4934:	00621821 	addu	v1,v1,v0
  4c4938:	8fc2003c 	lw	v0,60(s8)
  4c493c:	00000000 	nop
  4c4940:	24420008 	addiu	v0,v0,8
  4c4944:	90630000 	lbu	v1,0(v1)
  4c4948:	90420000 	lbu	v0,0(v0)
  4c494c:	00000000 	nop
  4c4950:	00621026 	xor	v0,v1,v0
  4c4954:	304200ff 	andi	v0,v0,0xff
  4c4958:	8f81804c 	lw	at,-32692(gp)
  4c495c:	00000000 	nop
  4c4960:	24215890 	addiu	at,at,22672
  4c4964:	00221021 	addu	v0,at,v0
  4c4968:	90430000 	lbu	v1,0(v0)
  4c496c:	8fc2003c 	lw	v0,60(s8)
  4c4970:	00000000 	nop
  4c4974:	90420000 	lbu	v0,0(v0)
  4c4978:	00000000 	nop
  4c497c:	00621026 	xor	v0,v1,v0
  4c4980:	304200ff 	andi	v0,v0,0xff
  4c4984:	00021080 	sll	v0,v0,0x2
  4c4988:	8f84804c 	lw	a0,-32692(gp)
  4c498c:	00000000 	nop
  4c4990:	24845a90 	addiu	a0,a0,23184
  4c4994:	00822021 	addu	a0,a0,v0
  4c4998:	8fc2003c 	lw	v0,60(s8)
  4c499c:	00000000 	nop
  4c49a0:	24420011 	addiu	v0,v0,17
  4c49a4:	90420000 	lbu	v0,0(v0)
  4c49a8:	00000000 	nop
  4c49ac:	384200f8 	xori	v0,v0,0xf8
  4c49b0:	304200ff 	andi	v0,v0,0xff
  4c49b4:	8f83804c 	lw	v1,-32692(gp)
  4c49b8:	00000000 	nop
  4c49bc:	24635990 	addiu	v1,v1,22928
  4c49c0:	00621821 	addu	v1,v1,v0
  4c49c4:	8fc2003c 	lw	v0,60(s8)
  4c49c8:	00000000 	nop
  4c49cc:	24420009 	addiu	v0,v0,9
  4c49d0:	90630000 	lbu	v1,0(v1)
  4c49d4:	90420000 	lbu	v0,0(v0)
  4c49d8:	00000000 	nop
  4c49dc:	00621026 	xor	v0,v1,v0
  4c49e0:	304200ff 	andi	v0,v0,0xff
  4c49e4:	8f83804c 	lw	v1,-32692(gp)
  4c49e8:	00000000 	nop
  4c49ec:	24635890 	addiu	v1,v1,22672
  4c49f0:	00621821 	addu	v1,v1,v0
  4c49f4:	8fc2003c 	lw	v0,60(s8)
  4c49f8:	00000000 	nop
  4c49fc:	24420001 	addiu	v0,v0,1
  4c4a00:	90630000 	lbu	v1,0(v1)
  4c4a04:	90420000 	lbu	v0,0(v0)
  4c4a08:	00000000 	nop
  4c4a0c:	00621026 	xor	v0,v1,v0
  4c4a10:	304200ff 	andi	v0,v0,0xff
  4c4a14:	00021080 	sll	v0,v0,0x2
  4c4a18:	24420400 	addiu	v0,v0,1024
  4c4a1c:	8f81804c 	lw	at,-32692(gp)
  4c4a20:	00000000 	nop
  4c4a24:	24215a90 	addiu	at,at,23184
  4c4a28:	00221021 	addu	v0,at,v0
  4c4a2c:	8c830000 	lw	v1,0(a0)
  4c4a30:	8c420000 	lw	v0,0(v0)
  4c4a34:	00000000 	nop
  4c4a38:	00622026 	xor	a0,v1,v0
  4c4a3c:	8fc2003c 	lw	v0,60(s8)
  4c4a40:	00000000 	nop
  4c4a44:	24420012 	addiu	v0,v0,18
  4c4a48:	90420000 	lbu	v0,0(v0)
  4c4a4c:	00000000 	nop
  4c4a50:	38420037 	xori	v0,v0,0x37
  4c4a54:	304200ff 	andi	v0,v0,0xff
  4c4a58:	8f83804c 	lw	v1,-32692(gp)
  4c4a5c:	00000000 	nop
  4c4a60:	24635890 	addiu	v1,v1,22672
  4c4a64:	00621821 	addu	v1,v1,v0
  4c4a68:	8fc2003c 	lw	v0,60(s8)
  4c4a6c:	00000000 	nop
  4c4a70:	2442000a 	addiu	v0,v0,10
  4c4a74:	90630000 	lbu	v1,0(v1)
  4c4a78:	90420000 	lbu	v0,0(v0)
  4c4a7c:	00000000 	nop
  4c4a80:	00621026 	xor	v0,v1,v0
  4c4a84:	304200ff 	andi	v0,v0,0xff
  4c4a88:	8f83804c 	lw	v1,-32692(gp)
  4c4a8c:	00000000 	nop
  4c4a90:	24635990 	addiu	v1,v1,22928
  4c4a94:	00621821 	addu	v1,v1,v0
  4c4a98:	8fc2003c 	lw	v0,60(s8)
  4c4a9c:	00000000 	nop
  4c4aa0:	24420002 	addiu	v0,v0,2
  4c4aa4:	90630000 	lbu	v1,0(v1)
  4c4aa8:	90420000 	lbu	v0,0(v0)
  4c4aac:	00000000 	nop
  4c4ab0:	00621026 	xor	v0,v1,v0
  4c4ab4:	304200ff 	andi	v0,v0,0xff
  4c4ab8:	00021080 	sll	v0,v0,0x2
  4c4abc:	24420800 	addiu	v0,v0,2048
  4c4ac0:	8f81804c 	lw	at,-32692(gp)
  4c4ac4:	00000000 	nop
  4c4ac8:	24215a90 	addiu	at,at,23184
  4c4acc:	00221021 	addu	v0,at,v0
  4c4ad0:	8c420000 	lw	v0,0(v0)
  4c4ad4:	00000000 	nop
  4c4ad8:	00822026 	xor	a0,a0,v0
  4c4adc:	8fc2003c 	lw	v0,60(s8)
  4c4ae0:	00000000 	nop
  4c4ae4:	24420013 	addiu	v0,v0,19
  4c4ae8:	90420000 	lbu	v0,0(v0)
  4c4aec:	00000000 	nop
  4c4af0:	38420037 	xori	v0,v0,0x37
  4c4af4:	304200ff 	andi	v0,v0,0xff
  4c4af8:	8f83804c 	lw	v1,-32692(gp)
  4c4afc:	00000000 	nop
  4c4b00:	24635990 	addiu	v1,v1,22928
  4c4b04:	00621821 	addu	v1,v1,v0
  4c4b08:	8fc2003c 	lw	v0,60(s8)
  4c4b0c:	00000000 	nop
  4c4b10:	2442000b 	addiu	v0,v0,11
  4c4b14:	90630000 	lbu	v1,0(v1)
  4c4b18:	90420000 	lbu	v0,0(v0)
  4c4b1c:	00000000 	nop
  4c4b20:	00621026 	xor	v0,v1,v0
  4c4b24:	304200ff 	andi	v0,v0,0xff
  4c4b28:	8f83804c 	lw	v1,-32692(gp)
  4c4b2c:	00000000 	nop
  4c4b30:	24635990 	addiu	v1,v1,22928
  4c4b34:	00621821 	addu	v1,v1,v0
  4c4b38:	8fc2003c 	lw	v0,60(s8)
  4c4b3c:	00000000 	nop
  4c4b40:	24420003 	addiu	v0,v0,3
  4c4b44:	90630000 	lbu	v1,0(v1)
  4c4b48:	90420000 	lbu	v0,0(v0)
  4c4b4c:	00000000 	nop
  4c4b50:	00621026 	xor	v0,v1,v0
  4c4b54:	304200ff 	andi	v0,v0,0xff
  4c4b58:	00021080 	sll	v0,v0,0x2
  4c4b5c:	24420c00 	addiu	v0,v0,3072
  4c4b60:	8f81804c 	lw	at,-32692(gp)
  4c4b64:	00000000 	nop
  4c4b68:	24215a90 	addiu	at,at,23184
  4c4b6c:	00221021 	addu	v0,at,v0
  4c4b70:	8c420000 	lw	v0,0(v0)
  4c4b74:	00000000 	nop
  4c4b78:	00821026 	xor	v0,a0,v0
  4c4b7c:	afc20014 	sw	v0,20(s8)
  4c4b80:	8fc2003c 	lw	v0,60(s8)
  4c4b84:	00000000 	nop
  4c4b88:	24420014 	addiu	v0,v0,20
  4c4b8c:	90420000 	lbu	v0,0(v0)
  4c4b90:	00000000 	nop
  4c4b94:	3842001b 	xori	v0,v0,0x1b
  4c4b98:	304200ff 	andi	v0,v0,0xff
  4c4b9c:	8f83804c 	lw	v1,-32692(gp)
  4c4ba0:	00000000 	nop
  4c4ba4:	24635890 	addiu	v1,v1,22672
  4c4ba8:	00621821 	addu	v1,v1,v0
  4c4bac:	8fc2003c 	lw	v0,60(s8)
  4c4bb0:	00000000 	nop
  4c4bb4:	2442000c 	addiu	v0,v0,12
  4c4bb8:	90630000 	lbu	v1,0(v1)
  4c4bbc:	90420000 	lbu	v0,0(v0)
  4c4bc0:	00000000 	nop
  4c4bc4:	00621026 	xor	v0,v1,v0
  4c4bc8:	304200ff 	andi	v0,v0,0xff
  4c4bcc:	8f83804c 	lw	v1,-32692(gp)
  4c4bd0:	00000000 	nop
  4c4bd4:	24635890 	addiu	v1,v1,22672
  4c4bd8:	00621821 	addu	v1,v1,v0
  4c4bdc:	8fc2003c 	lw	v0,60(s8)
  4c4be0:	00000000 	nop
  4c4be4:	24420004 	addiu	v0,v0,4
  4c4be8:	90630000 	lbu	v1,0(v1)
  4c4bec:	90420000 	lbu	v0,0(v0)
  4c4bf0:	00000000 	nop
  4c4bf4:	00621026 	xor	v0,v1,v0
  4c4bf8:	304200ff 	andi	v0,v0,0xff
  4c4bfc:	00021080 	sll	v0,v0,0x2
  4c4c00:	8f84804c 	lw	a0,-32692(gp)
  4c4c04:	00000000 	nop
  4c4c08:	24845a90 	addiu	a0,a0,23184
  4c4c0c:	00822021 	addu	a0,a0,v0
  4c4c10:	8fc2003c 	lw	v0,60(s8)
  4c4c14:	00000000 	nop
  4c4c18:	24420015 	addiu	v0,v0,21
  4c4c1c:	90420000 	lbu	v0,0(v0)
  4c4c20:	00000000 	nop
  4c4c24:	3842001b 	xori	v0,v0,0x1b
  4c4c28:	304200ff 	andi	v0,v0,0xff
  4c4c2c:	8f83804c 	lw	v1,-32692(gp)
  4c4c30:	00000000 	nop
  4c4c34:	24635990 	addiu	v1,v1,22928
  4c4c38:	00621821 	addu	v1,v1,v0
  4c4c3c:	8fc2003c 	lw	v0,60(s8)
  4c4c40:	00000000 	nop
  4c4c44:	2442000d 	addiu	v0,v0,13
  4c4c48:	90630000 	lbu	v1,0(v1)
  4c4c4c:	90420000 	lbu	v0,0(v0)
  4c4c50:	00000000 	nop
  4c4c54:	00621026 	xor	v0,v1,v0
  4c4c58:	304200ff 	andi	v0,v0,0xff
  4c4c5c:	8f83804c 	lw	v1,-32692(gp)
  4c4c60:	00000000 	nop
  4c4c64:	24635890 	addiu	v1,v1,22672
  4c4c68:	00621821 	addu	v1,v1,v0
  4c4c6c:	8fc2003c 	lw	v0,60(s8)
  4c4c70:	00000000 	nop
  4c4c74:	24420005 	addiu	v0,v0,5
  4c4c78:	90630000 	lbu	v1,0(v1)
  4c4c7c:	90420000 	lbu	v0,0(v0)
  4c4c80:	00000000 	nop
  4c4c84:	00621026 	xor	v0,v1,v0
  4c4c88:	304200ff 	andi	v0,v0,0xff
  4c4c8c:	00021080 	sll	v0,v0,0x2
  4c4c90:	24420400 	addiu	v0,v0,1024
  4c4c94:	8f81804c 	lw	at,-32692(gp)
  4c4c98:	00000000 	nop
  4c4c9c:	24215a90 	addiu	at,at,23184
  4c4ca0:	00221021 	addu	v0,at,v0
  4c4ca4:	8c830000 	lw	v1,0(a0)
  4c4ca8:	8c420000 	lw	v0,0(v0)
  4c4cac:	00000000 	nop
  4c4cb0:	00622026 	xor	a0,v1,v0
  4c4cb4:	8fc2003c 	lw	v0,60(s8)
  4c4cb8:	00000000 	nop
  4c4cbc:	24420016 	addiu	v0,v0,22
  4c4cc0:	90420000 	lbu	v0,0(v0)
  4c4cc4:	00000000 	nop
  4c4cc8:	38420026 	xori	v0,v0,0x26
  4c4ccc:	304200ff 	andi	v0,v0,0xff
  4c4cd0:	8f83804c 	lw	v1,-32692(gp)
  4c4cd4:	00000000 	nop
  4c4cd8:	24635890 	addiu	v1,v1,22672
  4c4cdc:	00621821 	addu	v1,v1,v0
  4c4ce0:	8fc2003c 	lw	v0,60(s8)
  4c4ce4:	00000000 	nop
  4c4ce8:	2442000e 	addiu	v0,v0,14
  4c4cec:	90630000 	lbu	v1,0(v1)
  4c4cf0:	90420000 	lbu	v0,0(v0)
  4c4cf4:	00000000 	nop
  4c4cf8:	00621026 	xor	v0,v1,v0
  4c4cfc:	304200ff 	andi	v0,v0,0xff
  4c4d00:	8f83804c 	lw	v1,-32692(gp)
  4c4d04:	00000000 	nop
  4c4d08:	24635990 	addiu	v1,v1,22928
  4c4d0c:	00621821 	addu	v1,v1,v0
  4c4d10:	8fc2003c 	lw	v0,60(s8)
  4c4d14:	00000000 	nop
  4c4d18:	24420006 	addiu	v0,v0,6
  4c4d1c:	90630000 	lbu	v1,0(v1)
  4c4d20:	90420000 	lbu	v0,0(v0)
  4c4d24:	00000000 	nop
  4c4d28:	00621026 	xor	v0,v1,v0
  4c4d2c:	304200ff 	andi	v0,v0,0xff
  4c4d30:	00021080 	sll	v0,v0,0x2
  4c4d34:	24420800 	addiu	v0,v0,2048
  4c4d38:	8f81804c 	lw	at,-32692(gp)
  4c4d3c:	00000000 	nop
  4c4d40:	24215a90 	addiu	at,at,23184
  4c4d44:	00221021 	addu	v0,at,v0
  4c4d48:	8c420000 	lw	v0,0(v0)
  4c4d4c:	00000000 	nop
  4c4d50:	00822026 	xor	a0,a0,v0
  4c4d54:	8fc2003c 	lw	v0,60(s8)
  4c4d58:	00000000 	nop
  4c4d5c:	24420017 	addiu	v0,v0,23
  4c4d60:	90420000 	lbu	v0,0(v0)
  4c4d64:	00000000 	nop
  4c4d68:	38420026 	xori	v0,v0,0x26
  4c4d6c:	304200ff 	andi	v0,v0,0xff
  4c4d70:	8f83804c 	lw	v1,-32692(gp)
  4c4d74:	00000000 	nop
  4c4d78:	24635990 	addiu	v1,v1,22928
  4c4d7c:	00621821 	addu	v1,v1,v0
  4c4d80:	8fc2003c 	lw	v0,60(s8)
  4c4d84:	00000000 	nop
  4c4d88:	2442000f 	addiu	v0,v0,15
  4c4d8c:	90630000 	lbu	v1,0(v1)
  4c4d90:	90420000 	lbu	v0,0(v0)
  4c4d94:	00000000 	nop
  4c4d98:	00621026 	xor	v0,v1,v0
  4c4d9c:	304200ff 	andi	v0,v0,0xff
  4c4da0:	8f83804c 	lw	v1,-32692(gp)
  4c4da4:	00000000 	nop
  4c4da8:	24635990 	addiu	v1,v1,22928
  4c4dac:	00621821 	addu	v1,v1,v0
  4c4db0:	8fc2003c 	lw	v0,60(s8)
  4c4db4:	00000000 	nop
  4c4db8:	24420007 	addiu	v0,v0,7
  4c4dbc:	90630000 	lbu	v1,0(v1)
  4c4dc0:	90420000 	lbu	v0,0(v0)
  4c4dc4:	00000000 	nop
  4c4dc8:	00621026 	xor	v0,v1,v0
  4c4dcc:	304200ff 	andi	v0,v0,0xff
  4c4dd0:	00021080 	sll	v0,v0,0x2
  4c4dd4:	24420c00 	addiu	v0,v0,3072
  4c4dd8:	8f81804c 	lw	at,-32692(gp)
  4c4ddc:	00000000 	nop
  4c4de0:	24215a90 	addiu	at,at,23184
  4c4de4:	00221021 	addu	v0,at,v0
  4c4de8:	8c420000 	lw	v0,0(v0)
  4c4dec:	00000000 	nop
  4c4df0:	00821026 	xor	v0,a0,v0
  4c4df4:	afc20018 	sw	v0,24(s8)
  4c4df8:	8fc20018 	lw	v0,24(s8)
  4c4dfc:	00000000 	nop
  4c4e00:	00021a00 	sll	v1,v0,0x8
  4c4e04:	00021602 	srl	v0,v0,0x18
  4c4e08:	00621025 	or	v0,v1,v0
  4c4e0c:	afc20018 	sw	v0,24(s8)
  4c4e10:	8fc30014 	lw	v1,20(s8)
  4c4e14:	8fc20018 	lw	v0,24(s8)
  4c4e18:	00000000 	nop
  4c4e1c:	00621021 	addu	v0,v1,v0
  4c4e20:	afc20014 	sw	v0,20(s8)
  4c4e24:	8fc30018 	lw	v1,24(s8)
  4c4e28:	8fc20014 	lw	v0,20(s8)
  4c4e2c:	00000000 	nop
  4c4e30:	00621021 	addu	v0,v1,v0
  4c4e34:	afc20018 	sw	v0,24(s8)
  4c4e38:	8fc30014 	lw	v1,20(s8)
  4c4e3c:	8fc20038 	lw	v0,56(s8)
  4c4e40:	00000000 	nop
  4c4e44:	ac431068 	sw	v1,4200(v0)
  4c4e48:	8fc20018 	lw	v0,24(s8)
  4c4e4c:	00000000 	nop
  4c4e50:	00021a40 	sll	v1,v0,0x9
  4c4e54:	000215c2 	srl	v0,v0,0x17
  4c4e58:	00621825 	or	v1,v1,v0
  4c4e5c:	8fc20038 	lw	v0,56(s8)
  4c4e60:	00000000 	nop
  4c4e64:	ac43106c 	sw	v1,4204(v0)
		CALC_K192 (k, 20, 0xFA, 0x87, 0x13, 0xFA);
  4c4e68:	8fc2003c 	lw	v0,60(s8)
  4c4e6c:	00000000 	nop
  4c4e70:	24420010 	addiu	v0,v0,16
  4c4e74:	90420000 	lbu	v0,0(v0)
  4c4e78:	00000000 	nop
  4c4e7c:	38420087 	xori	v0,v0,0x87
  4c4e80:	304200ff 	andi	v0,v0,0xff
  4c4e84:	8f83804c 	lw	v1,-32692(gp)
  4c4e88:	00000000 	nop
  4c4e8c:	24635890 	addiu	v1,v1,22672
  4c4e90:	00621821 	addu	v1,v1,v0
  4c4e94:	8fc2003c 	lw	v0,60(s8)
  4c4e98:	00000000 	nop
  4c4e9c:	24420008 	addiu	v0,v0,8
  4c4ea0:	90630000 	lbu	v1,0(v1)
  4c4ea4:	90420000 	lbu	v0,0(v0)
  4c4ea8:	00000000 	nop
  4c4eac:	00621026 	xor	v0,v1,v0
  4c4eb0:	304200ff 	andi	v0,v0,0xff
  4c4eb4:	8f81804c 	lw	at,-32692(gp)
  4c4eb8:	00000000 	nop
  4c4ebc:	24215890 	addiu	at,at,22672
  4c4ec0:	00221021 	addu	v0,at,v0
  4c4ec4:	90430000 	lbu	v1,0(v0)
  4c4ec8:	8fc2003c 	lw	v0,60(s8)
  4c4ecc:	00000000 	nop
  4c4ed0:	90420000 	lbu	v0,0(v0)
  4c4ed4:	00000000 	nop
  4c4ed8:	00621026 	xor	v0,v1,v0
  4c4edc:	304200ff 	andi	v0,v0,0xff
  4c4ee0:	00021080 	sll	v0,v0,0x2
  4c4ee4:	8f84804c 	lw	a0,-32692(gp)
  4c4ee8:	00000000 	nop
  4c4eec:	24845a90 	addiu	a0,a0,23184
  4c4ef0:	00822021 	addu	a0,a0,v0
  4c4ef4:	8fc2003c 	lw	v0,60(s8)
  4c4ef8:	00000000 	nop
  4c4efc:	24420011 	addiu	v0,v0,17
  4c4f00:	90420000 	lbu	v0,0(v0)
  4c4f04:	00000000 	nop
  4c4f08:	38420087 	xori	v0,v0,0x87
  4c4f0c:	304200ff 	andi	v0,v0,0xff
  4c4f10:	8f83804c 	lw	v1,-32692(gp)
  4c4f14:	00000000 	nop
  4c4f18:	24635990 	addiu	v1,v1,22928
  4c4f1c:	00621821 	addu	v1,v1,v0
  4c4f20:	8fc2003c 	lw	v0,60(s8)
  4c4f24:	00000000 	nop
  4c4f28:	24420009 	addiu	v0,v0,9
  4c4f2c:	90630000 	lbu	v1,0(v1)
  4c4f30:	90420000 	lbu	v0,0(v0)
  4c4f34:	00000000 	nop
  4c4f38:	00621026 	xor	v0,v1,v0
  4c4f3c:	304200ff 	andi	v0,v0,0xff
  4c4f40:	8f83804c 	lw	v1,-32692(gp)
  4c4f44:	00000000 	nop
  4c4f48:	24635890 	addiu	v1,v1,22672
  4c4f4c:	00621821 	addu	v1,v1,v0
  4c4f50:	8fc2003c 	lw	v0,60(s8)
  4c4f54:	00000000 	nop
  4c4f58:	24420001 	addiu	v0,v0,1
  4c4f5c:	90630000 	lbu	v1,0(v1)
  4c4f60:	90420000 	lbu	v0,0(v0)
  4c4f64:	00000000 	nop
  4c4f68:	00621026 	xor	v0,v1,v0
  4c4f6c:	304200ff 	andi	v0,v0,0xff
  4c4f70:	00021080 	sll	v0,v0,0x2
  4c4f74:	24420400 	addiu	v0,v0,1024
  4c4f78:	8f81804c 	lw	at,-32692(gp)
  4c4f7c:	00000000 	nop
  4c4f80:	24215a90 	addiu	at,at,23184
  4c4f84:	00221021 	addu	v0,at,v0
  4c4f88:	8c830000 	lw	v1,0(a0)
  4c4f8c:	8c420000 	lw	v0,0(v0)
  4c4f90:	00000000 	nop
  4c4f94:	00622026 	xor	a0,v1,v0
  4c4f98:	8fc2003c 	lw	v0,60(s8)
  4c4f9c:	00000000 	nop
  4c4fa0:	24420012 	addiu	v0,v0,18
  4c4fa4:	90420000 	lbu	v0,0(v0)
  4c4fa8:	00000000 	nop
  4c4fac:	384200fa 	xori	v0,v0,0xfa
  4c4fb0:	304200ff 	andi	v0,v0,0xff
  4c4fb4:	8f83804c 	lw	v1,-32692(gp)
  4c4fb8:	00000000 	nop
  4c4fbc:	24635890 	addiu	v1,v1,22672
  4c4fc0:	00621821 	addu	v1,v1,v0
  4c4fc4:	8fc2003c 	lw	v0,60(s8)
  4c4fc8:	00000000 	nop
  4c4fcc:	2442000a 	addiu	v0,v0,10
  4c4fd0:	90630000 	lbu	v1,0(v1)
  4c4fd4:	90420000 	lbu	v0,0(v0)
  4c4fd8:	00000000 	nop
  4c4fdc:	00621026 	xor	v0,v1,v0
  4c4fe0:	304200ff 	andi	v0,v0,0xff
  4c4fe4:	8f83804c 	lw	v1,-32692(gp)
  4c4fe8:	00000000 	nop
  4c4fec:	24635990 	addiu	v1,v1,22928
  4c4ff0:	00621821 	addu	v1,v1,v0
  4c4ff4:	8fc2003c 	lw	v0,60(s8)
  4c4ff8:	00000000 	nop
  4c4ffc:	24420002 	addiu	v0,v0,2
  4c5000:	90630000 	lbu	v1,0(v1)
  4c5004:	90420000 	lbu	v0,0(v0)
  4c5008:	00000000 	nop
  4c500c:	00621026 	xor	v0,v1,v0
  4c5010:	304200ff 	andi	v0,v0,0xff
  4c5014:	00021080 	sll	v0,v0,0x2
  4c5018:	24420800 	addiu	v0,v0,2048
  4c501c:	8f81804c 	lw	at,-32692(gp)
  4c5020:	00000000 	nop
  4c5024:	24215a90 	addiu	at,at,23184
  4c5028:	00221021 	addu	v0,at,v0
  4c502c:	8c420000 	lw	v0,0(v0)
  4c5030:	00000000 	nop
  4c5034:	00822026 	xor	a0,a0,v0
  4c5038:	8fc2003c 	lw	v0,60(s8)
  4c503c:	00000000 	nop
  4c5040:	24420013 	addiu	v0,v0,19
  4c5044:	90420000 	lbu	v0,0(v0)
  4c5048:	00000000 	nop
  4c504c:	384200fa 	xori	v0,v0,0xfa
  4c5050:	304200ff 	andi	v0,v0,0xff
  4c5054:	8f83804c 	lw	v1,-32692(gp)
  4c5058:	00000000 	nop
  4c505c:	24635990 	addiu	v1,v1,22928
  4c5060:	00621821 	addu	v1,v1,v0
  4c5064:	8fc2003c 	lw	v0,60(s8)
  4c5068:	00000000 	nop
  4c506c:	2442000b 	addiu	v0,v0,11
  4c5070:	90630000 	lbu	v1,0(v1)
  4c5074:	90420000 	lbu	v0,0(v0)
  4c5078:	00000000 	nop
  4c507c:	00621026 	xor	v0,v1,v0
  4c5080:	304200ff 	andi	v0,v0,0xff
  4c5084:	8f83804c 	lw	v1,-32692(gp)
  4c5088:	00000000 	nop
  4c508c:	24635990 	addiu	v1,v1,22928
  4c5090:	00621821 	addu	v1,v1,v0
  4c5094:	8fc2003c 	lw	v0,60(s8)
  4c5098:	00000000 	nop
  4c509c:	24420003 	addiu	v0,v0,3
  4c50a0:	90630000 	lbu	v1,0(v1)
  4c50a4:	90420000 	lbu	v0,0(v0)
  4c50a8:	00000000 	nop
  4c50ac:	00621026 	xor	v0,v1,v0
  4c50b0:	304200ff 	andi	v0,v0,0xff
  4c50b4:	00021080 	sll	v0,v0,0x2
  4c50b8:	24420c00 	addiu	v0,v0,3072
  4c50bc:	8f81804c 	lw	at,-32692(gp)
  4c50c0:	00000000 	nop
  4c50c4:	24215a90 	addiu	at,at,23184
  4c50c8:	00221021 	addu	v0,at,v0
  4c50cc:	8c420000 	lw	v0,0(v0)
  4c50d0:	00000000 	nop
  4c50d4:	00821026 	xor	v0,a0,v0
  4c50d8:	afc20014 	sw	v0,20(s8)
  4c50dc:	8fc2003c 	lw	v0,60(s8)
  4c50e0:	00000000 	nop
  4c50e4:	24420014 	addiu	v0,v0,20
  4c50e8:	90420000 	lbu	v0,0(v0)
  4c50ec:	00000000 	nop
  4c50f0:	384200fa 	xori	v0,v0,0xfa
  4c50f4:	304200ff 	andi	v0,v0,0xff
  4c50f8:	8f83804c 	lw	v1,-32692(gp)
  4c50fc:	00000000 	nop
  4c5100:	24635890 	addiu	v1,v1,22672
  4c5104:	00621821 	addu	v1,v1,v0
  4c5108:	8fc2003c 	lw	v0,60(s8)
  4c510c:	00000000 	nop
  4c5110:	2442000c 	addiu	v0,v0,12
  4c5114:	90630000 	lbu	v1,0(v1)
  4c5118:	90420000 	lbu	v0,0(v0)
  4c511c:	00000000 	nop
  4c5120:	00621026 	xor	v0,v1,v0
  4c5124:	304200ff 	andi	v0,v0,0xff
  4c5128:	8f83804c 	lw	v1,-32692(gp)
  4c512c:	00000000 	nop
  4c5130:	24635890 	addiu	v1,v1,22672
  4c5134:	00621821 	addu	v1,v1,v0
  4c5138:	8fc2003c 	lw	v0,60(s8)
  4c513c:	00000000 	nop
  4c5140:	24420004 	addiu	v0,v0,4
  4c5144:	90630000 	lbu	v1,0(v1)
  4c5148:	90420000 	lbu	v0,0(v0)
  4c514c:	00000000 	nop
  4c5150:	00621026 	xor	v0,v1,v0
  4c5154:	304200ff 	andi	v0,v0,0xff
  4c5158:	00021080 	sll	v0,v0,0x2
  4c515c:	8f84804c 	lw	a0,-32692(gp)
  4c5160:	00000000 	nop
  4c5164:	24845a90 	addiu	a0,a0,23184
  4c5168:	00822021 	addu	a0,a0,v0
  4c516c:	8fc2003c 	lw	v0,60(s8)
  4c5170:	00000000 	nop
  4c5174:	24420015 	addiu	v0,v0,21
  4c5178:	90420000 	lbu	v0,0(v0)
  4c517c:	00000000 	nop
  4c5180:	384200fa 	xori	v0,v0,0xfa
  4c5184:	304200ff 	andi	v0,v0,0xff
  4c5188:	8f83804c 	lw	v1,-32692(gp)
  4c518c:	00000000 	nop
  4c5190:	24635990 	addiu	v1,v1,22928
  4c5194:	00621821 	addu	v1,v1,v0
  4c5198:	8fc2003c 	lw	v0,60(s8)
  4c519c:	00000000 	nop
  4c51a0:	2442000d 	addiu	v0,v0,13
  4c51a4:	90630000 	lbu	v1,0(v1)
  4c51a8:	90420000 	lbu	v0,0(v0)
  4c51ac:	00000000 	nop
  4c51b0:	00621026 	xor	v0,v1,v0
  4c51b4:	304200ff 	andi	v0,v0,0xff
  4c51b8:	8f83804c 	lw	v1,-32692(gp)
  4c51bc:	00000000 	nop
  4c51c0:	24635890 	addiu	v1,v1,22672
  4c51c4:	00621821 	addu	v1,v1,v0
  4c51c8:	8fc2003c 	lw	v0,60(s8)
  4c51cc:	00000000 	nop
  4c51d0:	24420005 	addiu	v0,v0,5
  4c51d4:	90630000 	lbu	v1,0(v1)
  4c51d8:	90420000 	lbu	v0,0(v0)
  4c51dc:	00000000 	nop
  4c51e0:	00621026 	xor	v0,v1,v0
  4c51e4:	304200ff 	andi	v0,v0,0xff
  4c51e8:	00021080 	sll	v0,v0,0x2
  4c51ec:	24420400 	addiu	v0,v0,1024
  4c51f0:	8f81804c 	lw	at,-32692(gp)
  4c51f4:	00000000 	nop
  4c51f8:	24215a90 	addiu	at,at,23184
  4c51fc:	00221021 	addu	v0,at,v0
  4c5200:	8c830000 	lw	v1,0(a0)
  4c5204:	8c420000 	lw	v0,0(v0)
  4c5208:	00000000 	nop
  4c520c:	00622026 	xor	a0,v1,v0
  4c5210:	8fc2003c 	lw	v0,60(s8)
  4c5214:	00000000 	nop
  4c5218:	24420016 	addiu	v0,v0,22
  4c521c:	90420000 	lbu	v0,0(v0)
  4c5220:	00000000 	nop
  4c5224:	38420013 	xori	v0,v0,0x13
  4c5228:	304200ff 	andi	v0,v0,0xff
  4c522c:	8f83804c 	lw	v1,-32692(gp)
  4c5230:	00000000 	nop
  4c5234:	24635890 	addiu	v1,v1,22672
  4c5238:	00621821 	addu	v1,v1,v0
  4c523c:	8fc2003c 	lw	v0,60(s8)
  4c5240:	00000000 	nop
  4c5244:	2442000e 	addiu	v0,v0,14
  4c5248:	90630000 	lbu	v1,0(v1)
  4c524c:	90420000 	lbu	v0,0(v0)
  4c5250:	00000000 	nop
  4c5254:	00621026 	xor	v0,v1,v0
  4c5258:	304200ff 	andi	v0,v0,0xff
  4c525c:	8f83804c 	lw	v1,-32692(gp)
  4c5260:	00000000 	nop
  4c5264:	24635990 	addiu	v1,v1,22928
  4c5268:	00621821 	addu	v1,v1,v0
  4c526c:	8fc2003c 	lw	v0,60(s8)
  4c5270:	00000000 	nop
  4c5274:	24420006 	addiu	v0,v0,6
  4c5278:	90630000 	lbu	v1,0(v1)
  4c527c:	90420000 	lbu	v0,0(v0)
  4c5280:	00000000 	nop
  4c5284:	00621026 	xor	v0,v1,v0
  4c5288:	304200ff 	andi	v0,v0,0xff
  4c528c:	00021080 	sll	v0,v0,0x2
  4c5290:	24420800 	addiu	v0,v0,2048
  4c5294:	8f81804c 	lw	at,-32692(gp)
  4c5298:	00000000 	nop
  4c529c:	24215a90 	addiu	at,at,23184
  4c52a0:	00221021 	addu	v0,at,v0
  4c52a4:	8c420000 	lw	v0,0(v0)
  4c52a8:	00000000 	nop
  4c52ac:	00822026 	xor	a0,a0,v0
  4c52b0:	8fc2003c 	lw	v0,60(s8)
  4c52b4:	00000000 	nop
  4c52b8:	24420017 	addiu	v0,v0,23
  4c52bc:	90420000 	lbu	v0,0(v0)
  4c52c0:	00000000 	nop
  4c52c4:	38420013 	xori	v0,v0,0x13
  4c52c8:	304200ff 	andi	v0,v0,0xff
  4c52cc:	8f83804c 	lw	v1,-32692(gp)
  4c52d0:	00000000 	nop
  4c52d4:	24635990 	addiu	v1,v1,22928
  4c52d8:	00621821 	addu	v1,v1,v0
  4c52dc:	8fc2003c 	lw	v0,60(s8)
  4c52e0:	00000000 	nop
  4c52e4:	2442000f 	addiu	v0,v0,15
  4c52e8:	90630000 	lbu	v1,0(v1)
  4c52ec:	90420000 	lbu	v0,0(v0)
  4c52f0:	00000000 	nop
  4c52f4:	00621026 	xor	v0,v1,v0
  4c52f8:	304200ff 	andi	v0,v0,0xff
  4c52fc:	8f83804c 	lw	v1,-32692(gp)
  4c5300:	00000000 	nop
  4c5304:	24635990 	addiu	v1,v1,22928
  4c5308:	00621821 	addu	v1,v1,v0
  4c530c:	8fc2003c 	lw	v0,60(s8)
  4c5310:	00000000 	nop
  4c5314:	24420007 	addiu	v0,v0,7
  4c5318:	90630000 	lbu	v1,0(v1)
  4c531c:	90420000 	lbu	v0,0(v0)
  4c5320:	00000000 	nop
  4c5324:	00621026 	xor	v0,v1,v0
  4c5328:	304200ff 	andi	v0,v0,0xff
  4c532c:	00021080 	sll	v0,v0,0x2
  4c5330:	24420c00 	addiu	v0,v0,3072
  4c5334:	8f81804c 	lw	at,-32692(gp)
  4c5338:	00000000 	nop
  4c533c:	24215a90 	addiu	at,at,23184
  4c5340:	00221021 	addu	v0,at,v0
  4c5344:	8c420000 	lw	v0,0(v0)
  4c5348:	00000000 	nop
  4c534c:	00821026 	xor	v0,a0,v0
  4c5350:	afc20018 	sw	v0,24(s8)
  4c5354:	8fc20018 	lw	v0,24(s8)
  4c5358:	00000000 	nop
  4c535c:	00021a00 	sll	v1,v0,0x8
  4c5360:	00021602 	srl	v0,v0,0x18
  4c5364:	00621025 	or	v0,v1,v0
  4c5368:	afc20018 	sw	v0,24(s8)
  4c536c:	8fc30014 	lw	v1,20(s8)
  4c5370:	8fc20018 	lw	v0,24(s8)
  4c5374:	00000000 	nop
  4c5378:	00621021 	addu	v0,v1,v0
  4c537c:	afc20014 	sw	v0,20(s8)
  4c5380:	8fc30018 	lw	v1,24(s8)
  4c5384:	8fc20014 	lw	v0,20(s8)
  4c5388:	00000000 	nop
  4c538c:	00621021 	addu	v0,v1,v0
  4c5390:	afc20018 	sw	v0,24(s8)
  4c5394:	8fc30014 	lw	v1,20(s8)
  4c5398:	8fc20038 	lw	v0,56(s8)
  4c539c:	00000000 	nop
  4c53a0:	ac431070 	sw	v1,4208(v0)
  4c53a4:	8fc20018 	lw	v0,24(s8)
  4c53a8:	00000000 	nop
  4c53ac:	00021a40 	sll	v1,v0,0x9
  4c53b0:	000215c2 	srl	v0,v0,0x17
  4c53b4:	00621825 	or	v1,v1,v0
  4c53b8:	8fc20038 	lw	v0,56(s8)
  4c53bc:	00000000 	nop
  4c53c0:	ac431074 	sw	v1,4212(v0)
		CALC_K192 (k, 22, 0x94, 0x06, 0x48, 0x3F);
  4c53c4:	8fc2003c 	lw	v0,60(s8)
  4c53c8:	00000000 	nop
  4c53cc:	24420010 	addiu	v0,v0,16
  4c53d0:	90420000 	lbu	v0,0(v0)
  4c53d4:	00000000 	nop
  4c53d8:	38420006 	xori	v0,v0,0x6
  4c53dc:	304200ff 	andi	v0,v0,0xff
  4c53e0:	8f83804c 	lw	v1,-32692(gp)
  4c53e4:	00000000 	nop
  4c53e8:	24635890 	addiu	v1,v1,22672
  4c53ec:	00621821 	addu	v1,v1,v0
  4c53f0:	8fc2003c 	lw	v0,60(s8)
  4c53f4:	00000000 	nop
  4c53f8:	24420008 	addiu	v0,v0,8
  4c53fc:	90630000 	lbu	v1,0(v1)
  4c5400:	90420000 	lbu	v0,0(v0)
  4c5404:	00000000 	nop
  4c5408:	00621026 	xor	v0,v1,v0
  4c540c:	304200ff 	andi	v0,v0,0xff
  4c5410:	8f81804c 	lw	at,-32692(gp)
  4c5414:	00000000 	nop
  4c5418:	24215890 	addiu	at,at,22672
  4c541c:	00221021 	addu	v0,at,v0
  4c5420:	90430000 	lbu	v1,0(v0)
  4c5424:	8fc2003c 	lw	v0,60(s8)
  4c5428:	00000000 	nop
  4c542c:	90420000 	lbu	v0,0(v0)
  4c5430:	00000000 	nop
  4c5434:	00621026 	xor	v0,v1,v0
  4c5438:	304200ff 	andi	v0,v0,0xff
  4c543c:	00021080 	sll	v0,v0,0x2
  4c5440:	8f84804c 	lw	a0,-32692(gp)
  4c5444:	00000000 	nop
  4c5448:	24845a90 	addiu	a0,a0,23184
  4c544c:	00822021 	addu	a0,a0,v0
  4c5450:	8fc2003c 	lw	v0,60(s8)
  4c5454:	00000000 	nop
  4c5458:	24420011 	addiu	v0,v0,17
  4c545c:	90420000 	lbu	v0,0(v0)
  4c5460:	00000000 	nop
  4c5464:	38420006 	xori	v0,v0,0x6
  4c5468:	304200ff 	andi	v0,v0,0xff
  4c546c:	8f83804c 	lw	v1,-32692(gp)
  4c5470:	00000000 	nop
  4c5474:	24635990 	addiu	v1,v1,22928
  4c5478:	00621821 	addu	v1,v1,v0
  4c547c:	8fc2003c 	lw	v0,60(s8)
  4c5480:	00000000 	nop
  4c5484:	24420009 	addiu	v0,v0,9
  4c5488:	90630000 	lbu	v1,0(v1)
  4c548c:	90420000 	lbu	v0,0(v0)
  4c5490:	00000000 	nop
  4c5494:	00621026 	xor	v0,v1,v0
  4c5498:	304200ff 	andi	v0,v0,0xff
  4c549c:	8f83804c 	lw	v1,-32692(gp)
  4c54a0:	00000000 	nop
  4c54a4:	24635890 	addiu	v1,v1,22672
  4c54a8:	00621821 	addu	v1,v1,v0
  4c54ac:	8fc2003c 	lw	v0,60(s8)
  4c54b0:	00000000 	nop
  4c54b4:	24420001 	addiu	v0,v0,1
  4c54b8:	90630000 	lbu	v1,0(v1)
  4c54bc:	90420000 	lbu	v0,0(v0)
  4c54c0:	00000000 	nop
  4c54c4:	00621026 	xor	v0,v1,v0
  4c54c8:	304200ff 	andi	v0,v0,0xff
  4c54cc:	00021080 	sll	v0,v0,0x2
  4c54d0:	24420400 	addiu	v0,v0,1024
  4c54d4:	8f81804c 	lw	at,-32692(gp)
  4c54d8:	00000000 	nop
  4c54dc:	24215a90 	addiu	at,at,23184
  4c54e0:	00221021 	addu	v0,at,v0
  4c54e4:	8c830000 	lw	v1,0(a0)
  4c54e8:	8c420000 	lw	v0,0(v0)
  4c54ec:	00000000 	nop
  4c54f0:	00622026 	xor	a0,v1,v0
  4c54f4:	8fc2003c 	lw	v0,60(s8)
  4c54f8:	00000000 	nop
  4c54fc:	24420012 	addiu	v0,v0,18
  4c5500:	90420000 	lbu	v0,0(v0)
  4c5504:	00000000 	nop
  4c5508:	38420094 	xori	v0,v0,0x94
  4c550c:	304200ff 	andi	v0,v0,0xff
  4c5510:	8f83804c 	lw	v1,-32692(gp)
  4c5514:	00000000 	nop
  4c5518:	24635890 	addiu	v1,v1,22672
  4c551c:	00621821 	addu	v1,v1,v0
  4c5520:	8fc2003c 	lw	v0,60(s8)
  4c5524:	00000000 	nop
  4c5528:	2442000a 	addiu	v0,v0,10
  4c552c:	90630000 	lbu	v1,0(v1)
  4c5530:	90420000 	lbu	v0,0(v0)
  4c5534:	00000000 	nop
  4c5538:	00621026 	xor	v0,v1,v0
  4c553c:	304200ff 	andi	v0,v0,0xff
  4c5540:	8f83804c 	lw	v1,-32692(gp)
  4c5544:	00000000 	nop
  4c5548:	24635990 	addiu	v1,v1,22928
  4c554c:	00621821 	addu	v1,v1,v0
  4c5550:	8fc2003c 	lw	v0,60(s8)
  4c5554:	00000000 	nop
  4c5558:	24420002 	addiu	v0,v0,2
  4c555c:	90630000 	lbu	v1,0(v1)
  4c5560:	90420000 	lbu	v0,0(v0)
  4c5564:	00000000 	nop
  4c5568:	00621026 	xor	v0,v1,v0
  4c556c:	304200ff 	andi	v0,v0,0xff
  4c5570:	00021080 	sll	v0,v0,0x2
  4c5574:	24420800 	addiu	v0,v0,2048
  4c5578:	8f81804c 	lw	at,-32692(gp)
  4c557c:	00000000 	nop
  4c5580:	24215a90 	addiu	at,at,23184
  4c5584:	00221021 	addu	v0,at,v0
  4c5588:	8c420000 	lw	v0,0(v0)
  4c558c:	00000000 	nop
  4c5590:	00822026 	xor	a0,a0,v0
  4c5594:	8fc2003c 	lw	v0,60(s8)
  4c5598:	00000000 	nop
  4c559c:	24420013 	addiu	v0,v0,19
  4c55a0:	90420000 	lbu	v0,0(v0)
  4c55a4:	00000000 	nop
  4c55a8:	38420094 	xori	v0,v0,0x94
  4c55ac:	304200ff 	andi	v0,v0,0xff
  4c55b0:	8f83804c 	lw	v1,-32692(gp)
  4c55b4:	00000000 	nop
  4c55b8:	24635990 	addiu	v1,v1,22928
  4c55bc:	00621821 	addu	v1,v1,v0
  4c55c0:	8fc2003c 	lw	v0,60(s8)
  4c55c4:	00000000 	nop
  4c55c8:	2442000b 	addiu	v0,v0,11
  4c55cc:	90630000 	lbu	v1,0(v1)
  4c55d0:	90420000 	lbu	v0,0(v0)
  4c55d4:	00000000 	nop
  4c55d8:	00621026 	xor	v0,v1,v0
  4c55dc:	304200ff 	andi	v0,v0,0xff
  4c55e0:	8f83804c 	lw	v1,-32692(gp)
  4c55e4:	00000000 	nop
  4c55e8:	24635990 	addiu	v1,v1,22928
  4c55ec:	00621821 	addu	v1,v1,v0
  4c55f0:	8fc2003c 	lw	v0,60(s8)
  4c55f4:	00000000 	nop
  4c55f8:	24420003 	addiu	v0,v0,3
  4c55fc:	90630000 	lbu	v1,0(v1)
  4c5600:	90420000 	lbu	v0,0(v0)
  4c5604:	00000000 	nop
  4c5608:	00621026 	xor	v0,v1,v0
  4c560c:	304200ff 	andi	v0,v0,0xff
  4c5610:	00021080 	sll	v0,v0,0x2
  4c5614:	24420c00 	addiu	v0,v0,3072
  4c5618:	8f81804c 	lw	at,-32692(gp)
  4c561c:	00000000 	nop
  4c5620:	24215a90 	addiu	at,at,23184
  4c5624:	00221021 	addu	v0,at,v0
  4c5628:	8c420000 	lw	v0,0(v0)
  4c562c:	00000000 	nop
  4c5630:	00821026 	xor	v0,a0,v0
  4c5634:	afc20014 	sw	v0,20(s8)
  4c5638:	8fc2003c 	lw	v0,60(s8)
  4c563c:	00000000 	nop
  4c5640:	24420014 	addiu	v0,v0,20
  4c5644:	90420000 	lbu	v0,0(v0)
  4c5648:	00000000 	nop
  4c564c:	3842003f 	xori	v0,v0,0x3f
  4c5650:	304200ff 	andi	v0,v0,0xff
  4c5654:	8f83804c 	lw	v1,-32692(gp)
  4c5658:	00000000 	nop
  4c565c:	24635890 	addiu	v1,v1,22672
  4c5660:	00621821 	addu	v1,v1,v0
  4c5664:	8fc2003c 	lw	v0,60(s8)
  4c5668:	00000000 	nop
  4c566c:	2442000c 	addiu	v0,v0,12
  4c5670:	90630000 	lbu	v1,0(v1)
  4c5674:	90420000 	lbu	v0,0(v0)
  4c5678:	00000000 	nop
  4c567c:	00621026 	xor	v0,v1,v0
  4c5680:	304200ff 	andi	v0,v0,0xff
  4c5684:	8f83804c 	lw	v1,-32692(gp)
  4c5688:	00000000 	nop
  4c568c:	24635890 	addiu	v1,v1,22672
  4c5690:	00621821 	addu	v1,v1,v0
  4c5694:	8fc2003c 	lw	v0,60(s8)
  4c5698:	00000000 	nop
  4c569c:	24420004 	addiu	v0,v0,4
  4c56a0:	90630000 	lbu	v1,0(v1)
  4c56a4:	90420000 	lbu	v0,0(v0)
  4c56a8:	00000000 	nop
  4c56ac:	00621026 	xor	v0,v1,v0
  4c56b0:	304200ff 	andi	v0,v0,0xff
  4c56b4:	00021080 	sll	v0,v0,0x2
  4c56b8:	8f84804c 	lw	a0,-32692(gp)
  4c56bc:	00000000 	nop
  4c56c0:	24845a90 	addiu	a0,a0,23184
  4c56c4:	00822021 	addu	a0,a0,v0
  4c56c8:	8fc2003c 	lw	v0,60(s8)
  4c56cc:	00000000 	nop
  4c56d0:	24420015 	addiu	v0,v0,21
  4c56d4:	90420000 	lbu	v0,0(v0)
  4c56d8:	00000000 	nop
  4c56dc:	3842003f 	xori	v0,v0,0x3f
  4c56e0:	304200ff 	andi	v0,v0,0xff
  4c56e4:	8f83804c 	lw	v1,-32692(gp)
  4c56e8:	00000000 	nop
  4c56ec:	24635990 	addiu	v1,v1,22928
  4c56f0:	00621821 	addu	v1,v1,v0
  4c56f4:	8fc2003c 	lw	v0,60(s8)
  4c56f8:	00000000 	nop
  4c56fc:	2442000d 	addiu	v0,v0,13
  4c5700:	90630000 	lbu	v1,0(v1)
  4c5704:	90420000 	lbu	v0,0(v0)
  4c5708:	00000000 	nop
  4c570c:	00621026 	xor	v0,v1,v0
  4c5710:	304200ff 	andi	v0,v0,0xff
  4c5714:	8f83804c 	lw	v1,-32692(gp)
  4c5718:	00000000 	nop
  4c571c:	24635890 	addiu	v1,v1,22672
  4c5720:	00621821 	addu	v1,v1,v0
  4c5724:	8fc2003c 	lw	v0,60(s8)
  4c5728:	00000000 	nop
  4c572c:	24420005 	addiu	v0,v0,5
  4c5730:	90630000 	lbu	v1,0(v1)
  4c5734:	90420000 	lbu	v0,0(v0)
  4c5738:	00000000 	nop
  4c573c:	00621026 	xor	v0,v1,v0
  4c5740:	304200ff 	andi	v0,v0,0xff
  4c5744:	00021080 	sll	v0,v0,0x2
  4c5748:	24420400 	addiu	v0,v0,1024
  4c574c:	8f81804c 	lw	at,-32692(gp)
  4c5750:	00000000 	nop
  4c5754:	24215a90 	addiu	at,at,23184
  4c5758:	00221021 	addu	v0,at,v0
  4c575c:	8c830000 	lw	v1,0(a0)
  4c5760:	8c420000 	lw	v0,0(v0)
  4c5764:	00000000 	nop
  4c5768:	00622026 	xor	a0,v1,v0
  4c576c:	8fc2003c 	lw	v0,60(s8)
  4c5770:	00000000 	nop
  4c5774:	24420016 	addiu	v0,v0,22
  4c5778:	90420000 	lbu	v0,0(v0)
  4c577c:	00000000 	nop
  4c5780:	38420048 	xori	v0,v0,0x48
  4c5784:	304200ff 	andi	v0,v0,0xff
  4c5788:	8f83804c 	lw	v1,-32692(gp)
  4c578c:	00000000 	nop
  4c5790:	24635890 	addiu	v1,v1,22672
  4c5794:	00621821 	addu	v1,v1,v0
  4c5798:	8fc2003c 	lw	v0,60(s8)
  4c579c:	00000000 	nop
  4c57a0:	2442000e 	addiu	v0,v0,14
  4c57a4:	90630000 	lbu	v1,0(v1)
  4c57a8:	90420000 	lbu	v0,0(v0)
  4c57ac:	00000000 	nop
  4c57b0:	00621026 	xor	v0,v1,v0
  4c57b4:	304200ff 	andi	v0,v0,0xff
  4c57b8:	8f83804c 	lw	v1,-32692(gp)
  4c57bc:	00000000 	nop
  4c57c0:	24635990 	addiu	v1,v1,22928
  4c57c4:	00621821 	addu	v1,v1,v0
  4c57c8:	8fc2003c 	lw	v0,60(s8)
  4c57cc:	00000000 	nop
  4c57d0:	24420006 	addiu	v0,v0,6
  4c57d4:	90630000 	lbu	v1,0(v1)
  4c57d8:	90420000 	lbu	v0,0(v0)
  4c57dc:	00000000 	nop
  4c57e0:	00621026 	xor	v0,v1,v0
  4c57e4:	304200ff 	andi	v0,v0,0xff
  4c57e8:	00021080 	sll	v0,v0,0x2
  4c57ec:	24420800 	addiu	v0,v0,2048
  4c57f0:	8f81804c 	lw	at,-32692(gp)
  4c57f4:	00000000 	nop
  4c57f8:	24215a90 	addiu	at,at,23184
  4c57fc:	00221021 	addu	v0,at,v0
  4c5800:	8c420000 	lw	v0,0(v0)
  4c5804:	00000000 	nop
  4c5808:	00822026 	xor	a0,a0,v0
  4c580c:	8fc2003c 	lw	v0,60(s8)
  4c5810:	00000000 	nop
  4c5814:	24420017 	addiu	v0,v0,23
  4c5818:	90420000 	lbu	v0,0(v0)
  4c581c:	00000000 	nop
  4c5820:	38420048 	xori	v0,v0,0x48
  4c5824:	304200ff 	andi	v0,v0,0xff
  4c5828:	8f83804c 	lw	v1,-32692(gp)
  4c582c:	00000000 	nop
  4c5830:	24635990 	addiu	v1,v1,22928
  4c5834:	00621821 	addu	v1,v1,v0
  4c5838:	8fc2003c 	lw	v0,60(s8)
  4c583c:	00000000 	nop
  4c5840:	2442000f 	addiu	v0,v0,15
  4c5844:	90630000 	lbu	v1,0(v1)
  4c5848:	90420000 	lbu	v0,0(v0)
  4c584c:	00000000 	nop
  4c5850:	00621026 	xor	v0,v1,v0
  4c5854:	304200ff 	andi	v0,v0,0xff
  4c5858:	8f83804c 	lw	v1,-32692(gp)
  4c585c:	00000000 	nop
  4c5860:	24635990 	addiu	v1,v1,22928
  4c5864:	00621821 	addu	v1,v1,v0
  4c5868:	8fc2003c 	lw	v0,60(s8)
  4c586c:	00000000 	nop
  4c5870:	24420007 	addiu	v0,v0,7
  4c5874:	90630000 	lbu	v1,0(v1)
  4c5878:	90420000 	lbu	v0,0(v0)
  4c587c:	00000000 	nop
  4c5880:	00621026 	xor	v0,v1,v0
  4c5884:	304200ff 	andi	v0,v0,0xff
  4c5888:	00021080 	sll	v0,v0,0x2
  4c588c:	24420c00 	addiu	v0,v0,3072
  4c5890:	8f81804c 	lw	at,-32692(gp)
  4c5894:	00000000 	nop
  4c5898:	24215a90 	addiu	at,at,23184
  4c589c:	00221021 	addu	v0,at,v0
  4c58a0:	8c420000 	lw	v0,0(v0)
  4c58a4:	00000000 	nop
  4c58a8:	00821026 	xor	v0,a0,v0
  4c58ac:	afc20018 	sw	v0,24(s8)
  4c58b0:	8fc20018 	lw	v0,24(s8)
  4c58b4:	00000000 	nop
  4c58b8:	00021a00 	sll	v1,v0,0x8
  4c58bc:	00021602 	srl	v0,v0,0x18
  4c58c0:	00621025 	or	v0,v1,v0
  4c58c4:	afc20018 	sw	v0,24(s8)
  4c58c8:	8fc30014 	lw	v1,20(s8)
  4c58cc:	8fc20018 	lw	v0,24(s8)
  4c58d0:	00000000 	nop
  4c58d4:	00621021 	addu	v0,v1,v0
  4c58d8:	afc20014 	sw	v0,20(s8)
  4c58dc:	8fc30018 	lw	v1,24(s8)
  4c58e0:	8fc20014 	lw	v0,20(s8)
  4c58e4:	00000000 	nop
  4c58e8:	00621021 	addu	v0,v1,v0
  4c58ec:	afc20018 	sw	v0,24(s8)
  4c58f0:	8fc30014 	lw	v1,20(s8)
  4c58f4:	8fc20038 	lw	v0,56(s8)
  4c58f8:	00000000 	nop
  4c58fc:	ac431078 	sw	v1,4216(v0)
  4c5900:	8fc20018 	lw	v0,24(s8)
  4c5904:	00000000 	nop
  4c5908:	00021a40 	sll	v1,v0,0x9
  4c590c:	000215c2 	srl	v0,v0,0x17
  4c5910:	00621825 	or	v1,v1,v0
  4c5914:	8fc20038 	lw	v0,56(s8)
  4c5918:	00000000 	nop
  4c591c:	ac43107c 	sw	v1,4220(v0)
		CALC_K192 (k, 24, 0xF2, 0x5E, 0xD0, 0xBA);
  4c5920:	8fc2003c 	lw	v0,60(s8)
  4c5924:	00000000 	nop
  4c5928:	24420010 	addiu	v0,v0,16
  4c592c:	90420000 	lbu	v0,0(v0)
  4c5930:	00000000 	nop
  4c5934:	3842005e 	xori	v0,v0,0x5e
  4c5938:	304200ff 	andi	v0,v0,0xff
  4c593c:	8f83804c 	lw	v1,-32692(gp)
  4c5940:	00000000 	nop
  4c5944:	24635890 	addiu	v1,v1,22672
  4c5948:	00621821 	addu	v1,v1,v0
  4c594c:	8fc2003c 	lw	v0,60(s8)
  4c5950:	00000000 	nop
  4c5954:	24420008 	addiu	v0,v0,8
  4c5958:	90630000 	lbu	v1,0(v1)
  4c595c:	90420000 	lbu	v0,0(v0)
  4c5960:	00000000 	nop
  4c5964:	00621026 	xor	v0,v1,v0
  4c5968:	304200ff 	andi	v0,v0,0xff
  4c596c:	8f81804c 	lw	at,-32692(gp)
  4c5970:	00000000 	nop
  4c5974:	24215890 	addiu	at,at,22672
  4c5978:	00221021 	addu	v0,at,v0
  4c597c:	90430000 	lbu	v1,0(v0)
  4c5980:	8fc2003c 	lw	v0,60(s8)
  4c5984:	00000000 	nop
  4c5988:	90420000 	lbu	v0,0(v0)
  4c598c:	00000000 	nop
  4c5990:	00621026 	xor	v0,v1,v0
  4c5994:	304200ff 	andi	v0,v0,0xff
  4c5998:	00021080 	sll	v0,v0,0x2
  4c599c:	8f84804c 	lw	a0,-32692(gp)
  4c59a0:	00000000 	nop
  4c59a4:	24845a90 	addiu	a0,a0,23184
  4c59a8:	00822021 	addu	a0,a0,v0
  4c59ac:	8fc2003c 	lw	v0,60(s8)
  4c59b0:	00000000 	nop
  4c59b4:	24420011 	addiu	v0,v0,17
  4c59b8:	90420000 	lbu	v0,0(v0)
  4c59bc:	00000000 	nop
  4c59c0:	3842005e 	xori	v0,v0,0x5e
  4c59c4:	304200ff 	andi	v0,v0,0xff
  4c59c8:	8f83804c 	lw	v1,-32692(gp)
  4c59cc:	00000000 	nop
  4c59d0:	24635990 	addiu	v1,v1,22928
  4c59d4:	00621821 	addu	v1,v1,v0
  4c59d8:	8fc2003c 	lw	v0,60(s8)
  4c59dc:	00000000 	nop
  4c59e0:	24420009 	addiu	v0,v0,9
  4c59e4:	90630000 	lbu	v1,0(v1)
  4c59e8:	90420000 	lbu	v0,0(v0)
  4c59ec:	00000000 	nop
  4c59f0:	00621026 	xor	v0,v1,v0
  4c59f4:	304200ff 	andi	v0,v0,0xff
  4c59f8:	8f83804c 	lw	v1,-32692(gp)
  4c59fc:	00000000 	nop
  4c5a00:	24635890 	addiu	v1,v1,22672
  4c5a04:	00621821 	addu	v1,v1,v0
  4c5a08:	8fc2003c 	lw	v0,60(s8)
  4c5a0c:	00000000 	nop
  4c5a10:	24420001 	addiu	v0,v0,1
  4c5a14:	90630000 	lbu	v1,0(v1)
  4c5a18:	90420000 	lbu	v0,0(v0)
  4c5a1c:	00000000 	nop
  4c5a20:	00621026 	xor	v0,v1,v0
  4c5a24:	304200ff 	andi	v0,v0,0xff
  4c5a28:	00021080 	sll	v0,v0,0x2
  4c5a2c:	24420400 	addiu	v0,v0,1024
  4c5a30:	8f81804c 	lw	at,-32692(gp)
  4c5a34:	00000000 	nop
  4c5a38:	24215a90 	addiu	at,at,23184
  4c5a3c:	00221021 	addu	v0,at,v0
  4c5a40:	8c830000 	lw	v1,0(a0)
  4c5a44:	8c420000 	lw	v0,0(v0)
  4c5a48:	00000000 	nop
  4c5a4c:	00622026 	xor	a0,v1,v0
  4c5a50:	8fc2003c 	lw	v0,60(s8)
  4c5a54:	00000000 	nop
  4c5a58:	24420012 	addiu	v0,v0,18
  4c5a5c:	90420000 	lbu	v0,0(v0)
  4c5a60:	00000000 	nop
  4c5a64:	384200f2 	xori	v0,v0,0xf2
  4c5a68:	304200ff 	andi	v0,v0,0xff
  4c5a6c:	8f83804c 	lw	v1,-32692(gp)
  4c5a70:	00000000 	nop
  4c5a74:	24635890 	addiu	v1,v1,22672
  4c5a78:	00621821 	addu	v1,v1,v0
  4c5a7c:	8fc2003c 	lw	v0,60(s8)
  4c5a80:	00000000 	nop
  4c5a84:	2442000a 	addiu	v0,v0,10
  4c5a88:	90630000 	lbu	v1,0(v1)
  4c5a8c:	90420000 	lbu	v0,0(v0)
  4c5a90:	00000000 	nop
  4c5a94:	00621026 	xor	v0,v1,v0
  4c5a98:	304200ff 	andi	v0,v0,0xff
  4c5a9c:	8f83804c 	lw	v1,-32692(gp)
  4c5aa0:	00000000 	nop
  4c5aa4:	24635990 	addiu	v1,v1,22928
  4c5aa8:	00621821 	addu	v1,v1,v0
  4c5aac:	8fc2003c 	lw	v0,60(s8)
  4c5ab0:	00000000 	nop
  4c5ab4:	24420002 	addiu	v0,v0,2
  4c5ab8:	90630000 	lbu	v1,0(v1)
  4c5abc:	90420000 	lbu	v0,0(v0)
  4c5ac0:	00000000 	nop
  4c5ac4:	00621026 	xor	v0,v1,v0
  4c5ac8:	304200ff 	andi	v0,v0,0xff
  4c5acc:	00021080 	sll	v0,v0,0x2
  4c5ad0:	24420800 	addiu	v0,v0,2048
  4c5ad4:	8f81804c 	lw	at,-32692(gp)
  4c5ad8:	00000000 	nop
  4c5adc:	24215a90 	addiu	at,at,23184
  4c5ae0:	00221021 	addu	v0,at,v0
  4c5ae4:	8c420000 	lw	v0,0(v0)
  4c5ae8:	00000000 	nop
  4c5aec:	00822026 	xor	a0,a0,v0
  4c5af0:	8fc2003c 	lw	v0,60(s8)
  4c5af4:	00000000 	nop
  4c5af8:	24420013 	addiu	v0,v0,19
  4c5afc:	90420000 	lbu	v0,0(v0)
  4c5b00:	00000000 	nop
  4c5b04:	384200f2 	xori	v0,v0,0xf2
  4c5b08:	304200ff 	andi	v0,v0,0xff
  4c5b0c:	8f83804c 	lw	v1,-32692(gp)
  4c5b10:	00000000 	nop
  4c5b14:	24635990 	addiu	v1,v1,22928
  4c5b18:	00621821 	addu	v1,v1,v0
  4c5b1c:	8fc2003c 	lw	v0,60(s8)
  4c5b20:	00000000 	nop
  4c5b24:	2442000b 	addiu	v0,v0,11
  4c5b28:	90630000 	lbu	v1,0(v1)
  4c5b2c:	90420000 	lbu	v0,0(v0)
  4c5b30:	00000000 	nop
  4c5b34:	00621026 	xor	v0,v1,v0
  4c5b38:	304200ff 	andi	v0,v0,0xff
  4c5b3c:	8f83804c 	lw	v1,-32692(gp)
  4c5b40:	00000000 	nop
  4c5b44:	24635990 	addiu	v1,v1,22928
  4c5b48:	00621821 	addu	v1,v1,v0
  4c5b4c:	8fc2003c 	lw	v0,60(s8)
  4c5b50:	00000000 	nop
  4c5b54:	24420003 	addiu	v0,v0,3
  4c5b58:	90630000 	lbu	v1,0(v1)
  4c5b5c:	90420000 	lbu	v0,0(v0)
  4c5b60:	00000000 	nop
  4c5b64:	00621026 	xor	v0,v1,v0
  4c5b68:	304200ff 	andi	v0,v0,0xff
  4c5b6c:	00021080 	sll	v0,v0,0x2
  4c5b70:	24420c00 	addiu	v0,v0,3072
  4c5b74:	8f81804c 	lw	at,-32692(gp)
  4c5b78:	00000000 	nop
  4c5b7c:	24215a90 	addiu	at,at,23184
  4c5b80:	00221021 	addu	v0,at,v0
  4c5b84:	8c420000 	lw	v0,0(v0)
  4c5b88:	00000000 	nop
  4c5b8c:	00821026 	xor	v0,a0,v0
  4c5b90:	afc20014 	sw	v0,20(s8)
  4c5b94:	8fc2003c 	lw	v0,60(s8)
  4c5b98:	00000000 	nop
  4c5b9c:	24420014 	addiu	v0,v0,20
  4c5ba0:	90420000 	lbu	v0,0(v0)
  4c5ba4:	00000000 	nop
  4c5ba8:	384200ba 	xori	v0,v0,0xba
  4c5bac:	304200ff 	andi	v0,v0,0xff
  4c5bb0:	8f83804c 	lw	v1,-32692(gp)
  4c5bb4:	00000000 	nop
  4c5bb8:	24635890 	addiu	v1,v1,22672
  4c5bbc:	00621821 	addu	v1,v1,v0
  4c5bc0:	8fc2003c 	lw	v0,60(s8)
  4c5bc4:	00000000 	nop
  4c5bc8:	2442000c 	addiu	v0,v0,12
  4c5bcc:	90630000 	lbu	v1,0(v1)
  4c5bd0:	90420000 	lbu	v0,0(v0)
  4c5bd4:	00000000 	nop
  4c5bd8:	00621026 	xor	v0,v1,v0
  4c5bdc:	304200ff 	andi	v0,v0,0xff
  4c5be0:	8f83804c 	lw	v1,-32692(gp)
  4c5be4:	00000000 	nop
  4c5be8:	24635890 	addiu	v1,v1,22672
  4c5bec:	00621821 	addu	v1,v1,v0
  4c5bf0:	8fc2003c 	lw	v0,60(s8)
  4c5bf4:	00000000 	nop
  4c5bf8:	24420004 	addiu	v0,v0,4
  4c5bfc:	90630000 	lbu	v1,0(v1)
  4c5c00:	90420000 	lbu	v0,0(v0)
  4c5c04:	00000000 	nop
  4c5c08:	00621026 	xor	v0,v1,v0
  4c5c0c:	304200ff 	andi	v0,v0,0xff
  4c5c10:	00021080 	sll	v0,v0,0x2
  4c5c14:	8f84804c 	lw	a0,-32692(gp)
  4c5c18:	00000000 	nop
  4c5c1c:	24845a90 	addiu	a0,a0,23184
  4c5c20:	00822021 	addu	a0,a0,v0
  4c5c24:	8fc2003c 	lw	v0,60(s8)
  4c5c28:	00000000 	nop
  4c5c2c:	24420015 	addiu	v0,v0,21
  4c5c30:	90420000 	lbu	v0,0(v0)
  4c5c34:	00000000 	nop
  4c5c38:	384200ba 	xori	v0,v0,0xba
  4c5c3c:	304200ff 	andi	v0,v0,0xff
  4c5c40:	8f83804c 	lw	v1,-32692(gp)
  4c5c44:	00000000 	nop
  4c5c48:	24635990 	addiu	v1,v1,22928
  4c5c4c:	00621821 	addu	v1,v1,v0
  4c5c50:	8fc2003c 	lw	v0,60(s8)
  4c5c54:	00000000 	nop
  4c5c58:	2442000d 	addiu	v0,v0,13
  4c5c5c:	90630000 	lbu	v1,0(v1)
  4c5c60:	90420000 	lbu	v0,0(v0)
  4c5c64:	00000000 	nop
  4c5c68:	00621026 	xor	v0,v1,v0
  4c5c6c:	304200ff 	andi	v0,v0,0xff
  4c5c70:	8f83804c 	lw	v1,-32692(gp)
  4c5c74:	00000000 	nop
  4c5c78:	24635890 	addiu	v1,v1,22672
  4c5c7c:	00621821 	addu	v1,v1,v0
  4c5c80:	8fc2003c 	lw	v0,60(s8)
  4c5c84:	00000000 	nop
  4c5c88:	24420005 	addiu	v0,v0,5
  4c5c8c:	90630000 	lbu	v1,0(v1)
  4c5c90:	90420000 	lbu	v0,0(v0)
  4c5c94:	00000000 	nop
  4c5c98:	00621026 	xor	v0,v1,v0
  4c5c9c:	304200ff 	andi	v0,v0,0xff
  4c5ca0:	00021080 	sll	v0,v0,0x2
  4c5ca4:	24420400 	addiu	v0,v0,1024
  4c5ca8:	8f81804c 	lw	at,-32692(gp)
  4c5cac:	00000000 	nop
  4c5cb0:	24215a90 	addiu	at,at,23184
  4c5cb4:	00221021 	addu	v0,at,v0
  4c5cb8:	8c830000 	lw	v1,0(a0)
  4c5cbc:	8c420000 	lw	v0,0(v0)
  4c5cc0:	00000000 	nop
  4c5cc4:	00622026 	xor	a0,v1,v0
  4c5cc8:	8fc2003c 	lw	v0,60(s8)
  4c5ccc:	00000000 	nop
  4c5cd0:	24420016 	addiu	v0,v0,22
  4c5cd4:	90420000 	lbu	v0,0(v0)
  4c5cd8:	00000000 	nop
  4c5cdc:	384200d0 	xori	v0,v0,0xd0
  4c5ce0:	304200ff 	andi	v0,v0,0xff
  4c5ce4:	8f83804c 	lw	v1,-32692(gp)
  4c5ce8:	00000000 	nop
  4c5cec:	24635890 	addiu	v1,v1,22672
  4c5cf0:	00621821 	addu	v1,v1,v0
  4c5cf4:	8fc2003c 	lw	v0,60(s8)
  4c5cf8:	00000000 	nop
  4c5cfc:	2442000e 	addiu	v0,v0,14
  4c5d00:	90630000 	lbu	v1,0(v1)
  4c5d04:	90420000 	lbu	v0,0(v0)
  4c5d08:	00000000 	nop
  4c5d0c:	00621026 	xor	v0,v1,v0
  4c5d10:	304200ff 	andi	v0,v0,0xff
  4c5d14:	8f83804c 	lw	v1,-32692(gp)
  4c5d18:	00000000 	nop
  4c5d1c:	24635990 	addiu	v1,v1,22928
  4c5d20:	00621821 	addu	v1,v1,v0
  4c5d24:	8fc2003c 	lw	v0,60(s8)
  4c5d28:	00000000 	nop
  4c5d2c:	24420006 	addiu	v0,v0,6
  4c5d30:	90630000 	lbu	v1,0(v1)
  4c5d34:	90420000 	lbu	v0,0(v0)
  4c5d38:	00000000 	nop
  4c5d3c:	00621026 	xor	v0,v1,v0
  4c5d40:	304200ff 	andi	v0,v0,0xff
  4c5d44:	00021080 	sll	v0,v0,0x2
  4c5d48:	24420800 	addiu	v0,v0,2048
  4c5d4c:	8f81804c 	lw	at,-32692(gp)
  4c5d50:	00000000 	nop
  4c5d54:	24215a90 	addiu	at,at,23184
  4c5d58:	00221021 	addu	v0,at,v0
  4c5d5c:	8c420000 	lw	v0,0(v0)
  4c5d60:	00000000 	nop
  4c5d64:	00822026 	xor	a0,a0,v0
  4c5d68:	8fc2003c 	lw	v0,60(s8)
  4c5d6c:	00000000 	nop
  4c5d70:	24420017 	addiu	v0,v0,23
  4c5d74:	90420000 	lbu	v0,0(v0)
  4c5d78:	00000000 	nop
  4c5d7c:	384200d0 	xori	v0,v0,0xd0
  4c5d80:	304200ff 	andi	v0,v0,0xff
  4c5d84:	8f83804c 	lw	v1,-32692(gp)
  4c5d88:	00000000 	nop
  4c5d8c:	24635990 	addiu	v1,v1,22928
  4c5d90:	00621821 	addu	v1,v1,v0
  4c5d94:	8fc2003c 	lw	v0,60(s8)
  4c5d98:	00000000 	nop
  4c5d9c:	2442000f 	addiu	v0,v0,15
  4c5da0:	90630000 	lbu	v1,0(v1)
  4c5da4:	90420000 	lbu	v0,0(v0)
  4c5da8:	00000000 	nop
  4c5dac:	00621026 	xor	v0,v1,v0
  4c5db0:	304200ff 	andi	v0,v0,0xff
  4c5db4:	8f83804c 	lw	v1,-32692(gp)
  4c5db8:	00000000 	nop
  4c5dbc:	24635990 	addiu	v1,v1,22928
  4c5dc0:	00621821 	addu	v1,v1,v0
  4c5dc4:	8fc2003c 	lw	v0,60(s8)
  4c5dc8:	00000000 	nop
  4c5dcc:	24420007 	addiu	v0,v0,7
  4c5dd0:	90630000 	lbu	v1,0(v1)
  4c5dd4:	90420000 	lbu	v0,0(v0)
  4c5dd8:	00000000 	nop
  4c5ddc:	00621026 	xor	v0,v1,v0
  4c5de0:	304200ff 	andi	v0,v0,0xff
  4c5de4:	00021080 	sll	v0,v0,0x2
  4c5de8:	24420c00 	addiu	v0,v0,3072
  4c5dec:	8f81804c 	lw	at,-32692(gp)
  4c5df0:	00000000 	nop
  4c5df4:	24215a90 	addiu	at,at,23184
  4c5df8:	00221021 	addu	v0,at,v0
  4c5dfc:	8c420000 	lw	v0,0(v0)
  4c5e00:	00000000 	nop
  4c5e04:	00821026 	xor	v0,a0,v0
  4c5e08:	afc20018 	sw	v0,24(s8)
  4c5e0c:	8fc20018 	lw	v0,24(s8)
  4c5e10:	00000000 	nop
  4c5e14:	00021a00 	sll	v1,v0,0x8
  4c5e18:	00021602 	srl	v0,v0,0x18
  4c5e1c:	00621025 	or	v0,v1,v0
  4c5e20:	afc20018 	sw	v0,24(s8)
  4c5e24:	8fc30014 	lw	v1,20(s8)
  4c5e28:	8fc20018 	lw	v0,24(s8)
  4c5e2c:	00000000 	nop
  4c5e30:	00621021 	addu	v0,v1,v0
  4c5e34:	afc20014 	sw	v0,20(s8)
  4c5e38:	8fc30018 	lw	v1,24(s8)
  4c5e3c:	8fc20014 	lw	v0,20(s8)
  4c5e40:	00000000 	nop
  4c5e44:	00621021 	addu	v0,v1,v0
  4c5e48:	afc20018 	sw	v0,24(s8)
  4c5e4c:	8fc30014 	lw	v1,20(s8)
  4c5e50:	8fc20038 	lw	v0,56(s8)
  4c5e54:	00000000 	nop
  4c5e58:	ac431080 	sw	v1,4224(v0)
  4c5e5c:	8fc20018 	lw	v0,24(s8)
  4c5e60:	00000000 	nop
  4c5e64:	00021a40 	sll	v1,v0,0x9
  4c5e68:	000215c2 	srl	v0,v0,0x17
  4c5e6c:	00621825 	or	v1,v1,v0
  4c5e70:	8fc20038 	lw	v0,56(s8)
  4c5e74:	00000000 	nop
  4c5e78:	ac431084 	sw	v1,4228(v0)
		CALC_K192 (k, 26, 0x8B, 0xAE, 0x30, 0x5B);
  4c5e7c:	8fc2003c 	lw	v0,60(s8)
  4c5e80:	00000000 	nop
  4c5e84:	24420010 	addiu	v0,v0,16
  4c5e88:	90420000 	lbu	v0,0(v0)
  4c5e8c:	00000000 	nop
  4c5e90:	384200ae 	xori	v0,v0,0xae
  4c5e94:	304200ff 	andi	v0,v0,0xff
  4c5e98:	8f83804c 	lw	v1,-32692(gp)
  4c5e9c:	00000000 	nop
  4c5ea0:	24635890 	addiu	v1,v1,22672
  4c5ea4:	00621821 	addu	v1,v1,v0
  4c5ea8:	8fc2003c 	lw	v0,60(s8)
  4c5eac:	00000000 	nop
  4c5eb0:	24420008 	addiu	v0,v0,8
  4c5eb4:	90630000 	lbu	v1,0(v1)
  4c5eb8:	90420000 	lbu	v0,0(v0)
  4c5ebc:	00000000 	nop
  4c5ec0:	00621026 	xor	v0,v1,v0
  4c5ec4:	304200ff 	andi	v0,v0,0xff
  4c5ec8:	8f81804c 	lw	at,-32692(gp)
  4c5ecc:	00000000 	nop
  4c5ed0:	24215890 	addiu	at,at,22672
  4c5ed4:	00221021 	addu	v0,at,v0
  4c5ed8:	90430000 	lbu	v1,0(v0)
  4c5edc:	8fc2003c 	lw	v0,60(s8)
  4c5ee0:	00000000 	nop
  4c5ee4:	90420000 	lbu	v0,0(v0)
  4c5ee8:	00000000 	nop
  4c5eec:	00621026 	xor	v0,v1,v0
  4c5ef0:	304200ff 	andi	v0,v0,0xff
  4c5ef4:	00021080 	sll	v0,v0,0x2
  4c5ef8:	8f84804c 	lw	a0,-32692(gp)
  4c5efc:	00000000 	nop
  4c5f00:	24845a90 	addiu	a0,a0,23184
  4c5f04:	00822021 	addu	a0,a0,v0
  4c5f08:	8fc2003c 	lw	v0,60(s8)
  4c5f0c:	00000000 	nop
  4c5f10:	24420011 	addiu	v0,v0,17
  4c5f14:	90420000 	lbu	v0,0(v0)
  4c5f18:	00000000 	nop
  4c5f1c:	384200ae 	xori	v0,v0,0xae
  4c5f20:	304200ff 	andi	v0,v0,0xff
  4c5f24:	8f83804c 	lw	v1,-32692(gp)
  4c5f28:	00000000 	nop
  4c5f2c:	24635990 	addiu	v1,v1,22928
  4c5f30:	00621821 	addu	v1,v1,v0
  4c5f34:	8fc2003c 	lw	v0,60(s8)
  4c5f38:	00000000 	nop
  4c5f3c:	24420009 	addiu	v0,v0,9
  4c5f40:	90630000 	lbu	v1,0(v1)
  4c5f44:	90420000 	lbu	v0,0(v0)
  4c5f48:	00000000 	nop
  4c5f4c:	00621026 	xor	v0,v1,v0
  4c5f50:	304200ff 	andi	v0,v0,0xff
  4c5f54:	8f83804c 	lw	v1,-32692(gp)
  4c5f58:	00000000 	nop
  4c5f5c:	24635890 	addiu	v1,v1,22672
  4c5f60:	00621821 	addu	v1,v1,v0
  4c5f64:	8fc2003c 	lw	v0,60(s8)
  4c5f68:	00000000 	nop
  4c5f6c:	24420001 	addiu	v0,v0,1
  4c5f70:	90630000 	lbu	v1,0(v1)
  4c5f74:	90420000 	lbu	v0,0(v0)
  4c5f78:	00000000 	nop
  4c5f7c:	00621026 	xor	v0,v1,v0
  4c5f80:	304200ff 	andi	v0,v0,0xff
  4c5f84:	00021080 	sll	v0,v0,0x2
  4c5f88:	24420400 	addiu	v0,v0,1024
  4c5f8c:	8f81804c 	lw	at,-32692(gp)
  4c5f90:	00000000 	nop
  4c5f94:	24215a90 	addiu	at,at,23184
  4c5f98:	00221021 	addu	v0,at,v0
  4c5f9c:	8c830000 	lw	v1,0(a0)
  4c5fa0:	8c420000 	lw	v0,0(v0)
  4c5fa4:	00000000 	nop
  4c5fa8:	00622026 	xor	a0,v1,v0
  4c5fac:	8fc2003c 	lw	v0,60(s8)
  4c5fb0:	00000000 	nop
  4c5fb4:	24420012 	addiu	v0,v0,18
  4c5fb8:	90420000 	lbu	v0,0(v0)
  4c5fbc:	00000000 	nop
  4c5fc0:	3842008b 	xori	v0,v0,0x8b
  4c5fc4:	304200ff 	andi	v0,v0,0xff
  4c5fc8:	8f83804c 	lw	v1,-32692(gp)
  4c5fcc:	00000000 	nop
  4c5fd0:	24635890 	addiu	v1,v1,22672
  4c5fd4:	00621821 	addu	v1,v1,v0
  4c5fd8:	8fc2003c 	lw	v0,60(s8)
  4c5fdc:	00000000 	nop
  4c5fe0:	2442000a 	addiu	v0,v0,10
  4c5fe4:	90630000 	lbu	v1,0(v1)
  4c5fe8:	90420000 	lbu	v0,0(v0)
  4c5fec:	00000000 	nop
  4c5ff0:	00621026 	xor	v0,v1,v0
  4c5ff4:	304200ff 	andi	v0,v0,0xff
  4c5ff8:	8f83804c 	lw	v1,-32692(gp)
  4c5ffc:	00000000 	nop
  4c6000:	24635990 	addiu	v1,v1,22928
  4c6004:	00621821 	addu	v1,v1,v0
  4c6008:	8fc2003c 	lw	v0,60(s8)
  4c600c:	00000000 	nop
  4c6010:	24420002 	addiu	v0,v0,2
  4c6014:	90630000 	lbu	v1,0(v1)
  4c6018:	90420000 	lbu	v0,0(v0)
  4c601c:	00000000 	nop
  4c6020:	00621026 	xor	v0,v1,v0
  4c6024:	304200ff 	andi	v0,v0,0xff
  4c6028:	00021080 	sll	v0,v0,0x2
  4c602c:	24420800 	addiu	v0,v0,2048
  4c6030:	8f81804c 	lw	at,-32692(gp)
  4c6034:	00000000 	nop
  4c6038:	24215a90 	addiu	at,at,23184
  4c603c:	00221021 	addu	v0,at,v0
  4c6040:	8c420000 	lw	v0,0(v0)
  4c6044:	00000000 	nop
  4c6048:	00822026 	xor	a0,a0,v0
  4c604c:	8fc2003c 	lw	v0,60(s8)
  4c6050:	00000000 	nop
  4c6054:	24420013 	addiu	v0,v0,19
  4c6058:	90420000 	lbu	v0,0(v0)
  4c605c:	00000000 	nop
  4c6060:	3842008b 	xori	v0,v0,0x8b
  4c6064:	304200ff 	andi	v0,v0,0xff
  4c6068:	8f83804c 	lw	v1,-32692(gp)
  4c606c:	00000000 	nop
  4c6070:	24635990 	addiu	v1,v1,22928
  4c6074:	00621821 	addu	v1,v1,v0
  4c6078:	8fc2003c 	lw	v0,60(s8)
  4c607c:	00000000 	nop
  4c6080:	2442000b 	addiu	v0,v0,11
  4c6084:	90630000 	lbu	v1,0(v1)
  4c6088:	90420000 	lbu	v0,0(v0)
  4c608c:	00000000 	nop
  4c6090:	00621026 	xor	v0,v1,v0
  4c6094:	304200ff 	andi	v0,v0,0xff
  4c6098:	8f83804c 	lw	v1,-32692(gp)
  4c609c:	00000000 	nop
  4c60a0:	24635990 	addiu	v1,v1,22928
  4c60a4:	00621821 	addu	v1,v1,v0
  4c60a8:	8fc2003c 	lw	v0,60(s8)
  4c60ac:	00000000 	nop
  4c60b0:	24420003 	addiu	v0,v0,3
  4c60b4:	90630000 	lbu	v1,0(v1)
  4c60b8:	90420000 	lbu	v0,0(v0)
  4c60bc:	00000000 	nop
  4c60c0:	00621026 	xor	v0,v1,v0
  4c60c4:	304200ff 	andi	v0,v0,0xff
  4c60c8:	00021080 	sll	v0,v0,0x2
  4c60cc:	24420c00 	addiu	v0,v0,3072
  4c60d0:	8f81804c 	lw	at,-32692(gp)
  4c60d4:	00000000 	nop
  4c60d8:	24215a90 	addiu	at,at,23184
  4c60dc:	00221021 	addu	v0,at,v0
  4c60e0:	8c420000 	lw	v0,0(v0)
  4c60e4:	00000000 	nop
  4c60e8:	00821026 	xor	v0,a0,v0
  4c60ec:	afc20014 	sw	v0,20(s8)
  4c60f0:	8fc2003c 	lw	v0,60(s8)
  4c60f4:	00000000 	nop
  4c60f8:	24420014 	addiu	v0,v0,20
  4c60fc:	90420000 	lbu	v0,0(v0)
  4c6100:	00000000 	nop
  4c6104:	3842005b 	xori	v0,v0,0x5b
  4c6108:	304200ff 	andi	v0,v0,0xff
  4c610c:	8f83804c 	lw	v1,-32692(gp)
  4c6110:	00000000 	nop
  4c6114:	24635890 	addiu	v1,v1,22672
  4c6118:	00621821 	addu	v1,v1,v0
  4c611c:	8fc2003c 	lw	v0,60(s8)
  4c6120:	00000000 	nop
  4c6124:	2442000c 	addiu	v0,v0,12
  4c6128:	90630000 	lbu	v1,0(v1)
  4c612c:	90420000 	lbu	v0,0(v0)
  4c6130:	00000000 	nop
  4c6134:	00621026 	xor	v0,v1,v0
  4c6138:	304200ff 	andi	v0,v0,0xff
  4c613c:	8f83804c 	lw	v1,-32692(gp)
  4c6140:	00000000 	nop
  4c6144:	24635890 	addiu	v1,v1,22672
  4c6148:	00621821 	addu	v1,v1,v0
  4c614c:	8fc2003c 	lw	v0,60(s8)
  4c6150:	00000000 	nop
  4c6154:	24420004 	addiu	v0,v0,4
  4c6158:	90630000 	lbu	v1,0(v1)
  4c615c:	90420000 	lbu	v0,0(v0)
  4c6160:	00000000 	nop
  4c6164:	00621026 	xor	v0,v1,v0
  4c6168:	304200ff 	andi	v0,v0,0xff
  4c616c:	00021080 	sll	v0,v0,0x2
  4c6170:	8f84804c 	lw	a0,-32692(gp)
  4c6174:	00000000 	nop
  4c6178:	24845a90 	addiu	a0,a0,23184
  4c617c:	00822021 	addu	a0,a0,v0
  4c6180:	8fc2003c 	lw	v0,60(s8)
  4c6184:	00000000 	nop
  4c6188:	24420015 	addiu	v0,v0,21
  4c618c:	90420000 	lbu	v0,0(v0)
  4c6190:	00000000 	nop
  4c6194:	3842005b 	xori	v0,v0,0x5b
  4c6198:	304200ff 	andi	v0,v0,0xff
  4c619c:	8f83804c 	lw	v1,-32692(gp)
  4c61a0:	00000000 	nop
  4c61a4:	24635990 	addiu	v1,v1,22928
  4c61a8:	00621821 	addu	v1,v1,v0
  4c61ac:	8fc2003c 	lw	v0,60(s8)
  4c61b0:	00000000 	nop
  4c61b4:	2442000d 	addiu	v0,v0,13
  4c61b8:	90630000 	lbu	v1,0(v1)
  4c61bc:	90420000 	lbu	v0,0(v0)
  4c61c0:	00000000 	nop
  4c61c4:	00621026 	xor	v0,v1,v0
  4c61c8:	304200ff 	andi	v0,v0,0xff
  4c61cc:	8f83804c 	lw	v1,-32692(gp)
  4c61d0:	00000000 	nop
  4c61d4:	24635890 	addiu	v1,v1,22672
  4c61d8:	00621821 	addu	v1,v1,v0
  4c61dc:	8fc2003c 	lw	v0,60(s8)
  4c61e0:	00000000 	nop
  4c61e4:	24420005 	addiu	v0,v0,5
  4c61e8:	90630000 	lbu	v1,0(v1)
  4c61ec:	90420000 	lbu	v0,0(v0)
  4c61f0:	00000000 	nop
  4c61f4:	00621026 	xor	v0,v1,v0
  4c61f8:	304200ff 	andi	v0,v0,0xff
  4c61fc:	00021080 	sll	v0,v0,0x2
  4c6200:	24420400 	addiu	v0,v0,1024
  4c6204:	8f81804c 	lw	at,-32692(gp)
  4c6208:	00000000 	nop
  4c620c:	24215a90 	addiu	at,at,23184
  4c6210:	00221021 	addu	v0,at,v0
  4c6214:	8c830000 	lw	v1,0(a0)
  4c6218:	8c420000 	lw	v0,0(v0)
  4c621c:	00000000 	nop
  4c6220:	00622026 	xor	a0,v1,v0
  4c6224:	8fc2003c 	lw	v0,60(s8)
  4c6228:	00000000 	nop
  4c622c:	24420016 	addiu	v0,v0,22
  4c6230:	90420000 	lbu	v0,0(v0)
  4c6234:	00000000 	nop
  4c6238:	38420030 	xori	v0,v0,0x30
  4c623c:	304200ff 	andi	v0,v0,0xff
  4c6240:	8f83804c 	lw	v1,-32692(gp)
  4c6244:	00000000 	nop
  4c6248:	24635890 	addiu	v1,v1,22672
  4c624c:	00621821 	addu	v1,v1,v0
  4c6250:	8fc2003c 	lw	v0,60(s8)
  4c6254:	00000000 	nop
  4c6258:	2442000e 	addiu	v0,v0,14
  4c625c:	90630000 	lbu	v1,0(v1)
  4c6260:	90420000 	lbu	v0,0(v0)
  4c6264:	00000000 	nop
  4c6268:	00621026 	xor	v0,v1,v0
  4c626c:	304200ff 	andi	v0,v0,0xff
  4c6270:	8f83804c 	lw	v1,-32692(gp)
  4c6274:	00000000 	nop
  4c6278:	24635990 	addiu	v1,v1,22928
  4c627c:	00621821 	addu	v1,v1,v0
  4c6280:	8fc2003c 	lw	v0,60(s8)
  4c6284:	00000000 	nop
  4c6288:	24420006 	addiu	v0,v0,6
  4c628c:	90630000 	lbu	v1,0(v1)
  4c6290:	90420000 	lbu	v0,0(v0)
  4c6294:	00000000 	nop
  4c6298:	00621026 	xor	v0,v1,v0
  4c629c:	304200ff 	andi	v0,v0,0xff
  4c62a0:	00021080 	sll	v0,v0,0x2
  4c62a4:	24420800 	addiu	v0,v0,2048
  4c62a8:	8f81804c 	lw	at,-32692(gp)
  4c62ac:	00000000 	nop
  4c62b0:	24215a90 	addiu	at,at,23184
  4c62b4:	00221021 	addu	v0,at,v0
  4c62b8:	8c420000 	lw	v0,0(v0)
  4c62bc:	00000000 	nop
  4c62c0:	00822026 	xor	a0,a0,v0
  4c62c4:	8fc2003c 	lw	v0,60(s8)
  4c62c8:	00000000 	nop
  4c62cc:	24420017 	addiu	v0,v0,23
  4c62d0:	90420000 	lbu	v0,0(v0)
  4c62d4:	00000000 	nop
  4c62d8:	38420030 	xori	v0,v0,0x30
  4c62dc:	304200ff 	andi	v0,v0,0xff
  4c62e0:	8f83804c 	lw	v1,-32692(gp)
  4c62e4:	00000000 	nop
  4c62e8:	24635990 	addiu	v1,v1,22928
  4c62ec:	00621821 	addu	v1,v1,v0
  4c62f0:	8fc2003c 	lw	v0,60(s8)
  4c62f4:	00000000 	nop
  4c62f8:	2442000f 	addiu	v0,v0,15
  4c62fc:	90630000 	lbu	v1,0(v1)
  4c6300:	90420000 	lbu	v0,0(v0)
  4c6304:	00000000 	nop
  4c6308:	00621026 	xor	v0,v1,v0
  4c630c:	304200ff 	andi	v0,v0,0xff
  4c6310:	8f83804c 	lw	v1,-32692(gp)
  4c6314:	00000000 	nop
  4c6318:	24635990 	addiu	v1,v1,22928
  4c631c:	00621821 	addu	v1,v1,v0
  4c6320:	8fc2003c 	lw	v0,60(s8)
  4c6324:	00000000 	nop
  4c6328:	24420007 	addiu	v0,v0,7
  4c632c:	90630000 	lbu	v1,0(v1)
  4c6330:	90420000 	lbu	v0,0(v0)
  4c6334:	00000000 	nop
  4c6338:	00621026 	xor	v0,v1,v0
  4c633c:	304200ff 	andi	v0,v0,0xff
  4c6340:	00021080 	sll	v0,v0,0x2
  4c6344:	24420c00 	addiu	v0,v0,3072
  4c6348:	8f81804c 	lw	at,-32692(gp)
  4c634c:	00000000 	nop
  4c6350:	24215a90 	addiu	at,at,23184
  4c6354:	00221021 	addu	v0,at,v0
  4c6358:	8c420000 	lw	v0,0(v0)
  4c635c:	00000000 	nop
  4c6360:	00821026 	xor	v0,a0,v0
  4c6364:	afc20018 	sw	v0,24(s8)
  4c6368:	8fc20018 	lw	v0,24(s8)
  4c636c:	00000000 	nop
  4c6370:	00021a00 	sll	v1,v0,0x8
  4c6374:	00021602 	srl	v0,v0,0x18
  4c6378:	00621025 	or	v0,v1,v0
  4c637c:	afc20018 	sw	v0,24(s8)
  4c6380:	8fc30014 	lw	v1,20(s8)
  4c6384:	8fc20018 	lw	v0,24(s8)
  4c6388:	00000000 	nop
  4c638c:	00621021 	addu	v0,v1,v0
  4c6390:	afc20014 	sw	v0,20(s8)
  4c6394:	8fc30018 	lw	v1,24(s8)
  4c6398:	8fc20014 	lw	v0,20(s8)
  4c639c:	00000000 	nop
  4c63a0:	00621021 	addu	v0,v1,v0
  4c63a4:	afc20018 	sw	v0,24(s8)
  4c63a8:	8fc30014 	lw	v1,20(s8)
  4c63ac:	8fc20038 	lw	v0,56(s8)
  4c63b0:	00000000 	nop
  4c63b4:	ac431088 	sw	v1,4232(v0)
  4c63b8:	8fc20018 	lw	v0,24(s8)
  4c63bc:	00000000 	nop
  4c63c0:	00021a40 	sll	v1,v0,0x9
  4c63c4:	000215c2 	srl	v0,v0,0x17
  4c63c8:	00621825 	or	v1,v1,v0
  4c63cc:	8fc20038 	lw	v0,56(s8)
  4c63d0:	00000000 	nop
  4c63d4:	ac43108c 	sw	v1,4236(v0)
		CALC_K192 (k, 28, 0x84, 0x8A, 0x54, 0x00);
  4c63d8:	8fc2003c 	lw	v0,60(s8)
  4c63dc:	00000000 	nop
  4c63e0:	24420010 	addiu	v0,v0,16
  4c63e4:	90420000 	lbu	v0,0(v0)
  4c63e8:	00000000 	nop
  4c63ec:	3842008a 	xori	v0,v0,0x8a
  4c63f0:	304200ff 	andi	v0,v0,0xff
  4c63f4:	8f83804c 	lw	v1,-32692(gp)
  4c63f8:	00000000 	nop
  4c63fc:	24635890 	addiu	v1,v1,22672
  4c6400:	00621821 	addu	v1,v1,v0
  4c6404:	8fc2003c 	lw	v0,60(s8)
  4c6408:	00000000 	nop
  4c640c:	24420008 	addiu	v0,v0,8
  4c6410:	90630000 	lbu	v1,0(v1)
  4c6414:	90420000 	lbu	v0,0(v0)
  4c6418:	00000000 	nop
  4c641c:	00621026 	xor	v0,v1,v0
  4c6420:	304200ff 	andi	v0,v0,0xff
  4c6424:	8f81804c 	lw	at,-32692(gp)
  4c6428:	00000000 	nop
  4c642c:	24215890 	addiu	at,at,22672
  4c6430:	00221021 	addu	v0,at,v0
  4c6434:	90430000 	lbu	v1,0(v0)
  4c6438:	8fc2003c 	lw	v0,60(s8)
  4c643c:	00000000 	nop
  4c6440:	90420000 	lbu	v0,0(v0)
  4c6444:	00000000 	nop
  4c6448:	00621026 	xor	v0,v1,v0
  4c644c:	304200ff 	andi	v0,v0,0xff
  4c6450:	00021080 	sll	v0,v0,0x2
  4c6454:	8f84804c 	lw	a0,-32692(gp)
  4c6458:	00000000 	nop
  4c645c:	24845a90 	addiu	a0,a0,23184
  4c6460:	00822021 	addu	a0,a0,v0
  4c6464:	8fc2003c 	lw	v0,60(s8)
  4c6468:	00000000 	nop
  4c646c:	24420011 	addiu	v0,v0,17
  4c6470:	90420000 	lbu	v0,0(v0)
  4c6474:	00000000 	nop
  4c6478:	3842008a 	xori	v0,v0,0x8a
  4c647c:	304200ff 	andi	v0,v0,0xff
  4c6480:	8f83804c 	lw	v1,-32692(gp)
  4c6484:	00000000 	nop
  4c6488:	24635990 	addiu	v1,v1,22928
  4c648c:	00621821 	addu	v1,v1,v0
  4c6490:	8fc2003c 	lw	v0,60(s8)
  4c6494:	00000000 	nop
  4c6498:	24420009 	addiu	v0,v0,9
  4c649c:	90630000 	lbu	v1,0(v1)
  4c64a0:	90420000 	lbu	v0,0(v0)
  4c64a4:	00000000 	nop
  4c64a8:	00621026 	xor	v0,v1,v0
  4c64ac:	304200ff 	andi	v0,v0,0xff
  4c64b0:	8f83804c 	lw	v1,-32692(gp)
  4c64b4:	00000000 	nop
  4c64b8:	24635890 	addiu	v1,v1,22672
  4c64bc:	00621821 	addu	v1,v1,v0
  4c64c0:	8fc2003c 	lw	v0,60(s8)
  4c64c4:	00000000 	nop
  4c64c8:	24420001 	addiu	v0,v0,1
  4c64cc:	90630000 	lbu	v1,0(v1)
  4c64d0:	90420000 	lbu	v0,0(v0)
  4c64d4:	00000000 	nop
  4c64d8:	00621026 	xor	v0,v1,v0
  4c64dc:	304200ff 	andi	v0,v0,0xff
  4c64e0:	00021080 	sll	v0,v0,0x2
  4c64e4:	24420400 	addiu	v0,v0,1024
  4c64e8:	8f81804c 	lw	at,-32692(gp)
  4c64ec:	00000000 	nop
  4c64f0:	24215a90 	addiu	at,at,23184
  4c64f4:	00221021 	addu	v0,at,v0
  4c64f8:	8c830000 	lw	v1,0(a0)
  4c64fc:	8c420000 	lw	v0,0(v0)
  4c6500:	00000000 	nop
  4c6504:	00622026 	xor	a0,v1,v0
  4c6508:	8fc2003c 	lw	v0,60(s8)
  4c650c:	00000000 	nop
  4c6510:	24420012 	addiu	v0,v0,18
  4c6514:	90420000 	lbu	v0,0(v0)
  4c6518:	00000000 	nop
  4c651c:	38420084 	xori	v0,v0,0x84
  4c6520:	304200ff 	andi	v0,v0,0xff
  4c6524:	8f83804c 	lw	v1,-32692(gp)
  4c6528:	00000000 	nop
  4c652c:	24635890 	addiu	v1,v1,22672
  4c6530:	00621821 	addu	v1,v1,v0
  4c6534:	8fc2003c 	lw	v0,60(s8)
  4c6538:	00000000 	nop
  4c653c:	2442000a 	addiu	v0,v0,10
  4c6540:	90630000 	lbu	v1,0(v1)
  4c6544:	90420000 	lbu	v0,0(v0)
  4c6548:	00000000 	nop
  4c654c:	00621026 	xor	v0,v1,v0
  4c6550:	304200ff 	andi	v0,v0,0xff
  4c6554:	8f83804c 	lw	v1,-32692(gp)
  4c6558:	00000000 	nop
  4c655c:	24635990 	addiu	v1,v1,22928
  4c6560:	00621821 	addu	v1,v1,v0
  4c6564:	8fc2003c 	lw	v0,60(s8)
  4c6568:	00000000 	nop
  4c656c:	24420002 	addiu	v0,v0,2
  4c6570:	90630000 	lbu	v1,0(v1)
  4c6574:	90420000 	lbu	v0,0(v0)
  4c6578:	00000000 	nop
  4c657c:	00621026 	xor	v0,v1,v0
  4c6580:	304200ff 	andi	v0,v0,0xff
  4c6584:	00021080 	sll	v0,v0,0x2
  4c6588:	24420800 	addiu	v0,v0,2048
  4c658c:	8f81804c 	lw	at,-32692(gp)
  4c6590:	00000000 	nop
  4c6594:	24215a90 	addiu	at,at,23184
  4c6598:	00221021 	addu	v0,at,v0
  4c659c:	8c420000 	lw	v0,0(v0)
  4c65a0:	00000000 	nop
  4c65a4:	00822026 	xor	a0,a0,v0
  4c65a8:	8fc2003c 	lw	v0,60(s8)
  4c65ac:	00000000 	nop
  4c65b0:	24420013 	addiu	v0,v0,19
  4c65b4:	90420000 	lbu	v0,0(v0)
  4c65b8:	00000000 	nop
  4c65bc:	38420084 	xori	v0,v0,0x84
  4c65c0:	304200ff 	andi	v0,v0,0xff
  4c65c4:	8f83804c 	lw	v1,-32692(gp)
  4c65c8:	00000000 	nop
  4c65cc:	24635990 	addiu	v1,v1,22928
  4c65d0:	00621821 	addu	v1,v1,v0
  4c65d4:	8fc2003c 	lw	v0,60(s8)
  4c65d8:	00000000 	nop
  4c65dc:	2442000b 	addiu	v0,v0,11
  4c65e0:	90630000 	lbu	v1,0(v1)
  4c65e4:	90420000 	lbu	v0,0(v0)
  4c65e8:	00000000 	nop
  4c65ec:	00621026 	xor	v0,v1,v0
  4c65f0:	304200ff 	andi	v0,v0,0xff
  4c65f4:	8f83804c 	lw	v1,-32692(gp)
  4c65f8:	00000000 	nop
  4c65fc:	24635990 	addiu	v1,v1,22928
  4c6600:	00621821 	addu	v1,v1,v0
  4c6604:	8fc2003c 	lw	v0,60(s8)
  4c6608:	00000000 	nop
  4c660c:	24420003 	addiu	v0,v0,3
  4c6610:	90630000 	lbu	v1,0(v1)
  4c6614:	90420000 	lbu	v0,0(v0)
  4c6618:	00000000 	nop
  4c661c:	00621026 	xor	v0,v1,v0
  4c6620:	304200ff 	andi	v0,v0,0xff
  4c6624:	00021080 	sll	v0,v0,0x2
  4c6628:	24420c00 	addiu	v0,v0,3072
  4c662c:	8f81804c 	lw	at,-32692(gp)
  4c6630:	00000000 	nop
  4c6634:	24215a90 	addiu	at,at,23184
  4c6638:	00221021 	addu	v0,at,v0
  4c663c:	8c420000 	lw	v0,0(v0)
  4c6640:	00000000 	nop
  4c6644:	00821026 	xor	v0,a0,v0
  4c6648:	afc20014 	sw	v0,20(s8)
  4c664c:	8fc2003c 	lw	v0,60(s8)
  4c6650:	00000000 	nop
  4c6654:	24420014 	addiu	v0,v0,20
  4c6658:	90420000 	lbu	v0,0(v0)
  4c665c:	8f83804c 	lw	v1,-32692(gp)
  4c6660:	00000000 	nop
  4c6664:	24635890 	addiu	v1,v1,22672
  4c6668:	00621821 	addu	v1,v1,v0
  4c666c:	8fc2003c 	lw	v0,60(s8)
  4c6670:	00000000 	nop
  4c6674:	2442000c 	addiu	v0,v0,12
  4c6678:	90630000 	lbu	v1,0(v1)
  4c667c:	90420000 	lbu	v0,0(v0)
  4c6680:	00000000 	nop
  4c6684:	00621026 	xor	v0,v1,v0
  4c6688:	304200ff 	andi	v0,v0,0xff
  4c668c:	8f83804c 	lw	v1,-32692(gp)
  4c6690:	00000000 	nop
  4c6694:	24635890 	addiu	v1,v1,22672
  4c6698:	00621821 	addu	v1,v1,v0
  4c669c:	8fc2003c 	lw	v0,60(s8)
  4c66a0:	00000000 	nop
  4c66a4:	24420004 	addiu	v0,v0,4
  4c66a8:	90630000 	lbu	v1,0(v1)
  4c66ac:	90420000 	lbu	v0,0(v0)
  4c66b0:	00000000 	nop
  4c66b4:	00621026 	xor	v0,v1,v0
  4c66b8:	304200ff 	andi	v0,v0,0xff
  4c66bc:	00021080 	sll	v0,v0,0x2
  4c66c0:	8f84804c 	lw	a0,-32692(gp)
  4c66c4:	00000000 	nop
  4c66c8:	24845a90 	addiu	a0,a0,23184
  4c66cc:	00822021 	addu	a0,a0,v0
  4c66d0:	8fc2003c 	lw	v0,60(s8)
  4c66d4:	00000000 	nop
  4c66d8:	24420015 	addiu	v0,v0,21
  4c66dc:	90420000 	lbu	v0,0(v0)
  4c66e0:	8f83804c 	lw	v1,-32692(gp)
  4c66e4:	00000000 	nop
  4c66e8:	24635990 	addiu	v1,v1,22928
  4c66ec:	00621821 	addu	v1,v1,v0
  4c66f0:	8fc2003c 	lw	v0,60(s8)
  4c66f4:	00000000 	nop
  4c66f8:	2442000d 	addiu	v0,v0,13
  4c66fc:	90630000 	lbu	v1,0(v1)
  4c6700:	90420000 	lbu	v0,0(v0)
  4c6704:	00000000 	nop
  4c6708:	00621026 	xor	v0,v1,v0
  4c670c:	304200ff 	andi	v0,v0,0xff
  4c6710:	8f83804c 	lw	v1,-32692(gp)
  4c6714:	00000000 	nop
  4c6718:	24635890 	addiu	v1,v1,22672
  4c671c:	00621821 	addu	v1,v1,v0
  4c6720:	8fc2003c 	lw	v0,60(s8)
  4c6724:	00000000 	nop
  4c6728:	24420005 	addiu	v0,v0,5
  4c672c:	90630000 	lbu	v1,0(v1)
  4c6730:	90420000 	lbu	v0,0(v0)
  4c6734:	00000000 	nop
  4c6738:	00621026 	xor	v0,v1,v0
  4c673c:	304200ff 	andi	v0,v0,0xff
  4c6740:	00021080 	sll	v0,v0,0x2
  4c6744:	24420400 	addiu	v0,v0,1024
  4c6748:	8f81804c 	lw	at,-32692(gp)
  4c674c:	00000000 	nop
  4c6750:	24215a90 	addiu	at,at,23184
  4c6754:	00221021 	addu	v0,at,v0
  4c6758:	8c830000 	lw	v1,0(a0)
  4c675c:	8c420000 	lw	v0,0(v0)
  4c6760:	00000000 	nop
  4c6764:	00622026 	xor	a0,v1,v0
  4c6768:	8fc2003c 	lw	v0,60(s8)
  4c676c:	00000000 	nop
  4c6770:	24420016 	addiu	v0,v0,22
  4c6774:	90420000 	lbu	v0,0(v0)
  4c6778:	00000000 	nop
  4c677c:	38420054 	xori	v0,v0,0x54
  4c6780:	304200ff 	andi	v0,v0,0xff
  4c6784:	8f83804c 	lw	v1,-32692(gp)
  4c6788:	00000000 	nop
  4c678c:	24635890 	addiu	v1,v1,22672
  4c6790:	00621821 	addu	v1,v1,v0
  4c6794:	8fc2003c 	lw	v0,60(s8)
  4c6798:	00000000 	nop
  4c679c:	2442000e 	addiu	v0,v0,14
  4c67a0:	90630000 	lbu	v1,0(v1)
  4c67a4:	90420000 	lbu	v0,0(v0)
  4c67a8:	00000000 	nop
  4c67ac:	00621026 	xor	v0,v1,v0
  4c67b0:	304200ff 	andi	v0,v0,0xff
  4c67b4:	8f83804c 	lw	v1,-32692(gp)
  4c67b8:	00000000 	nop
  4c67bc:	24635990 	addiu	v1,v1,22928
  4c67c0:	00621821 	addu	v1,v1,v0
  4c67c4:	8fc2003c 	lw	v0,60(s8)
  4c67c8:	00000000 	nop
  4c67cc:	24420006 	addiu	v0,v0,6
  4c67d0:	90630000 	lbu	v1,0(v1)
  4c67d4:	90420000 	lbu	v0,0(v0)
  4c67d8:	00000000 	nop
  4c67dc:	00621026 	xor	v0,v1,v0
  4c67e0:	304200ff 	andi	v0,v0,0xff
  4c67e4:	00021080 	sll	v0,v0,0x2
  4c67e8:	24420800 	addiu	v0,v0,2048
  4c67ec:	8f81804c 	lw	at,-32692(gp)
  4c67f0:	00000000 	nop
  4c67f4:	24215a90 	addiu	at,at,23184
  4c67f8:	00221021 	addu	v0,at,v0
  4c67fc:	8c420000 	lw	v0,0(v0)
  4c6800:	00000000 	nop
  4c6804:	00822026 	xor	a0,a0,v0
  4c6808:	8fc2003c 	lw	v0,60(s8)
  4c680c:	00000000 	nop
  4c6810:	24420017 	addiu	v0,v0,23
  4c6814:	90420000 	lbu	v0,0(v0)
  4c6818:	00000000 	nop
  4c681c:	38420054 	xori	v0,v0,0x54
  4c6820:	304200ff 	andi	v0,v0,0xff
  4c6824:	8f83804c 	lw	v1,-32692(gp)
  4c6828:	00000000 	nop
  4c682c:	24635990 	addiu	v1,v1,22928
  4c6830:	00621821 	addu	v1,v1,v0
  4c6834:	8fc2003c 	lw	v0,60(s8)
  4c6838:	00000000 	nop
  4c683c:	2442000f 	addiu	v0,v0,15
  4c6840:	90630000 	lbu	v1,0(v1)
  4c6844:	90420000 	lbu	v0,0(v0)
  4c6848:	00000000 	nop
  4c684c:	00621026 	xor	v0,v1,v0
  4c6850:	304200ff 	andi	v0,v0,0xff
  4c6854:	8f83804c 	lw	v1,-32692(gp)
  4c6858:	00000000 	nop
  4c685c:	24635990 	addiu	v1,v1,22928
  4c6860:	00621821 	addu	v1,v1,v0
  4c6864:	8fc2003c 	lw	v0,60(s8)
  4c6868:	00000000 	nop
  4c686c:	24420007 	addiu	v0,v0,7
  4c6870:	90630000 	lbu	v1,0(v1)
  4c6874:	90420000 	lbu	v0,0(v0)
  4c6878:	00000000 	nop
  4c687c:	00621026 	xor	v0,v1,v0
  4c6880:	304200ff 	andi	v0,v0,0xff
  4c6884:	00021080 	sll	v0,v0,0x2
  4c6888:	24420c00 	addiu	v0,v0,3072
  4c688c:	8f81804c 	lw	at,-32692(gp)
  4c6890:	00000000 	nop
  4c6894:	24215a90 	addiu	at,at,23184
  4c6898:	00221021 	addu	v0,at,v0
  4c689c:	8c420000 	lw	v0,0(v0)
  4c68a0:	00000000 	nop
  4c68a4:	00821026 	xor	v0,a0,v0
  4c68a8:	afc20018 	sw	v0,24(s8)
  4c68ac:	8fc20018 	lw	v0,24(s8)
  4c68b0:	00000000 	nop
  4c68b4:	00021a00 	sll	v1,v0,0x8
  4c68b8:	00021602 	srl	v0,v0,0x18
  4c68bc:	00621025 	or	v0,v1,v0
  4c68c0:	afc20018 	sw	v0,24(s8)
  4c68c4:	8fc30014 	lw	v1,20(s8)
  4c68c8:	8fc20018 	lw	v0,24(s8)
  4c68cc:	00000000 	nop
  4c68d0:	00621021 	addu	v0,v1,v0
  4c68d4:	afc20014 	sw	v0,20(s8)
  4c68d8:	8fc30018 	lw	v1,24(s8)
  4c68dc:	8fc20014 	lw	v0,20(s8)
  4c68e0:	00000000 	nop
  4c68e4:	00621021 	addu	v0,v1,v0
  4c68e8:	afc20018 	sw	v0,24(s8)
  4c68ec:	8fc30014 	lw	v1,20(s8)
  4c68f0:	8fc20038 	lw	v0,56(s8)
  4c68f4:	00000000 	nop
  4c68f8:	ac431090 	sw	v1,4240(v0)
  4c68fc:	8fc20018 	lw	v0,24(s8)
  4c6900:	00000000 	nop
  4c6904:	00021a40 	sll	v1,v0,0x9
  4c6908:	000215c2 	srl	v0,v0,0x17
  4c690c:	00621825 	or	v1,v1,v0
  4c6910:	8fc20038 	lw	v0,56(s8)
  4c6914:	00000000 	nop
  4c6918:	ac431094 	sw	v1,4244(v0)
		CALC_K192 (k, 30, 0xDF, 0xBC, 0x23, 0x9D);
  4c691c:	8fc2003c 	lw	v0,60(s8)
  4c6920:	00000000 	nop
  4c6924:	24420010 	addiu	v0,v0,16
  4c6928:	90420000 	lbu	v0,0(v0)
  4c692c:	00000000 	nop
  4c6930:	384200bc 	xori	v0,v0,0xbc
  4c6934:	304200ff 	andi	v0,v0,0xff
  4c6938:	8f83804c 	lw	v1,-32692(gp)
  4c693c:	00000000 	nop
  4c6940:	24635890 	addiu	v1,v1,22672
  4c6944:	00621821 	addu	v1,v1,v0
  4c6948:	8fc2003c 	lw	v0,60(s8)
  4c694c:	00000000 	nop
  4c6950:	24420008 	addiu	v0,v0,8
  4c6954:	90630000 	lbu	v1,0(v1)
  4c6958:	90420000 	lbu	v0,0(v0)
  4c695c:	00000000 	nop
  4c6960:	00621026 	xor	v0,v1,v0
  4c6964:	304200ff 	andi	v0,v0,0xff
  4c6968:	8f81804c 	lw	at,-32692(gp)
  4c696c:	00000000 	nop
  4c6970:	24215890 	addiu	at,at,22672
  4c6974:	00221021 	addu	v0,at,v0
  4c6978:	90430000 	lbu	v1,0(v0)
  4c697c:	8fc2003c 	lw	v0,60(s8)
  4c6980:	00000000 	nop
  4c6984:	90420000 	lbu	v0,0(v0)
  4c6988:	00000000 	nop
  4c698c:	00621026 	xor	v0,v1,v0
  4c6990:	304200ff 	andi	v0,v0,0xff
  4c6994:	00021080 	sll	v0,v0,0x2
  4c6998:	8f84804c 	lw	a0,-32692(gp)
  4c699c:	00000000 	nop
  4c69a0:	24845a90 	addiu	a0,a0,23184
  4c69a4:	00822021 	addu	a0,a0,v0
  4c69a8:	8fc2003c 	lw	v0,60(s8)
  4c69ac:	00000000 	nop
  4c69b0:	24420011 	addiu	v0,v0,17
  4c69b4:	90420000 	lbu	v0,0(v0)
  4c69b8:	00000000 	nop
  4c69bc:	384200bc 	xori	v0,v0,0xbc
  4c69c0:	304200ff 	andi	v0,v0,0xff
  4c69c4:	8f83804c 	lw	v1,-32692(gp)
  4c69c8:	00000000 	nop
  4c69cc:	24635990 	addiu	v1,v1,22928
  4c69d0:	00621821 	addu	v1,v1,v0
  4c69d4:	8fc2003c 	lw	v0,60(s8)
  4c69d8:	00000000 	nop
  4c69dc:	24420009 	addiu	v0,v0,9
  4c69e0:	90630000 	lbu	v1,0(v1)
  4c69e4:	90420000 	lbu	v0,0(v0)
  4c69e8:	00000000 	nop
  4c69ec:	00621026 	xor	v0,v1,v0
  4c69f0:	304200ff 	andi	v0,v0,0xff
  4c69f4:	8f83804c 	lw	v1,-32692(gp)
  4c69f8:	00000000 	nop
  4c69fc:	24635890 	addiu	v1,v1,22672
  4c6a00:	00621821 	addu	v1,v1,v0
  4c6a04:	8fc2003c 	lw	v0,60(s8)
  4c6a08:	00000000 	nop
  4c6a0c:	24420001 	addiu	v0,v0,1
  4c6a10:	90630000 	lbu	v1,0(v1)
  4c6a14:	90420000 	lbu	v0,0(v0)
  4c6a18:	00000000 	nop
  4c6a1c:	00621026 	xor	v0,v1,v0
  4c6a20:	304200ff 	andi	v0,v0,0xff
  4c6a24:	00021080 	sll	v0,v0,0x2
  4c6a28:	24420400 	addiu	v0,v0,1024
  4c6a2c:	8f81804c 	lw	at,-32692(gp)
  4c6a30:	00000000 	nop
  4c6a34:	24215a90 	addiu	at,at,23184
  4c6a38:	00221021 	addu	v0,at,v0
  4c6a3c:	8c830000 	lw	v1,0(a0)
  4c6a40:	8c420000 	lw	v0,0(v0)
  4c6a44:	00000000 	nop
  4c6a48:	00622026 	xor	a0,v1,v0
  4c6a4c:	8fc2003c 	lw	v0,60(s8)
  4c6a50:	00000000 	nop
  4c6a54:	24420012 	addiu	v0,v0,18
  4c6a58:	90420000 	lbu	v0,0(v0)
  4c6a5c:	00000000 	nop
  4c6a60:	384200df 	xori	v0,v0,0xdf
  4c6a64:	304200ff 	andi	v0,v0,0xff
  4c6a68:	8f83804c 	lw	v1,-32692(gp)
  4c6a6c:	00000000 	nop
  4c6a70:	24635890 	addiu	v1,v1,22672
  4c6a74:	00621821 	addu	v1,v1,v0
  4c6a78:	8fc2003c 	lw	v0,60(s8)
  4c6a7c:	00000000 	nop
  4c6a80:	2442000a 	addiu	v0,v0,10
  4c6a84:	90630000 	lbu	v1,0(v1)
  4c6a88:	90420000 	lbu	v0,0(v0)
  4c6a8c:	00000000 	nop
  4c6a90:	00621026 	xor	v0,v1,v0
  4c6a94:	304200ff 	andi	v0,v0,0xff
  4c6a98:	8f83804c 	lw	v1,-32692(gp)
  4c6a9c:	00000000 	nop
  4c6aa0:	24635990 	addiu	v1,v1,22928
  4c6aa4:	00621821 	addu	v1,v1,v0
  4c6aa8:	8fc2003c 	lw	v0,60(s8)
  4c6aac:	00000000 	nop
  4c6ab0:	24420002 	addiu	v0,v0,2
  4c6ab4:	90630000 	lbu	v1,0(v1)
  4c6ab8:	90420000 	lbu	v0,0(v0)
  4c6abc:	00000000 	nop
  4c6ac0:	00621026 	xor	v0,v1,v0
  4c6ac4:	304200ff 	andi	v0,v0,0xff
  4c6ac8:	00021080 	sll	v0,v0,0x2
  4c6acc:	24420800 	addiu	v0,v0,2048
  4c6ad0:	8f81804c 	lw	at,-32692(gp)
  4c6ad4:	00000000 	nop
  4c6ad8:	24215a90 	addiu	at,at,23184
  4c6adc:	00221021 	addu	v0,at,v0
  4c6ae0:	8c420000 	lw	v0,0(v0)
  4c6ae4:	00000000 	nop
  4c6ae8:	00822026 	xor	a0,a0,v0
  4c6aec:	8fc2003c 	lw	v0,60(s8)
  4c6af0:	00000000 	nop
  4c6af4:	24420013 	addiu	v0,v0,19
  4c6af8:	90420000 	lbu	v0,0(v0)
  4c6afc:	00000000 	nop
  4c6b00:	384200df 	xori	v0,v0,0xdf
  4c6b04:	304200ff 	andi	v0,v0,0xff
  4c6b08:	8f83804c 	lw	v1,-32692(gp)
  4c6b0c:	00000000 	nop
  4c6b10:	24635990 	addiu	v1,v1,22928
  4c6b14:	00621821 	addu	v1,v1,v0
  4c6b18:	8fc2003c 	lw	v0,60(s8)
  4c6b1c:	00000000 	nop
  4c6b20:	2442000b 	addiu	v0,v0,11
  4c6b24:	90630000 	lbu	v1,0(v1)
  4c6b28:	90420000 	lbu	v0,0(v0)
  4c6b2c:	00000000 	nop
  4c6b30:	00621026 	xor	v0,v1,v0
  4c6b34:	304200ff 	andi	v0,v0,0xff
  4c6b38:	8f83804c 	lw	v1,-32692(gp)
  4c6b3c:	00000000 	nop
  4c6b40:	24635990 	addiu	v1,v1,22928
  4c6b44:	00621821 	addu	v1,v1,v0
  4c6b48:	8fc2003c 	lw	v0,60(s8)
  4c6b4c:	00000000 	nop
  4c6b50:	24420003 	addiu	v0,v0,3
  4c6b54:	90630000 	lbu	v1,0(v1)
  4c6b58:	90420000 	lbu	v0,0(v0)
  4c6b5c:	00000000 	nop
  4c6b60:	00621026 	xor	v0,v1,v0
  4c6b64:	304200ff 	andi	v0,v0,0xff
  4c6b68:	00021080 	sll	v0,v0,0x2
  4c6b6c:	24420c00 	addiu	v0,v0,3072
  4c6b70:	8f81804c 	lw	at,-32692(gp)
  4c6b74:	00000000 	nop
  4c6b78:	24215a90 	addiu	at,at,23184
  4c6b7c:	00221021 	addu	v0,at,v0
  4c6b80:	8c420000 	lw	v0,0(v0)
  4c6b84:	00000000 	nop
  4c6b88:	00821026 	xor	v0,a0,v0
  4c6b8c:	afc20014 	sw	v0,20(s8)
  4c6b90:	8fc2003c 	lw	v0,60(s8)
  4c6b94:	00000000 	nop
  4c6b98:	24420014 	addiu	v0,v0,20
  4c6b9c:	90420000 	lbu	v0,0(v0)
  4c6ba0:	00000000 	nop
  4c6ba4:	3842009d 	xori	v0,v0,0x9d
  4c6ba8:	304200ff 	andi	v0,v0,0xff
  4c6bac:	8f83804c 	lw	v1,-32692(gp)
  4c6bb0:	00000000 	nop
  4c6bb4:	24635890 	addiu	v1,v1,22672
  4c6bb8:	00621821 	addu	v1,v1,v0
  4c6bbc:	8fc2003c 	lw	v0,60(s8)
  4c6bc0:	00000000 	nop
  4c6bc4:	2442000c 	addiu	v0,v0,12
  4c6bc8:	90630000 	lbu	v1,0(v1)
  4c6bcc:	90420000 	lbu	v0,0(v0)
  4c6bd0:	00000000 	nop
  4c6bd4:	00621026 	xor	v0,v1,v0
  4c6bd8:	304200ff 	andi	v0,v0,0xff
  4c6bdc:	8f83804c 	lw	v1,-32692(gp)
  4c6be0:	00000000 	nop
  4c6be4:	24635890 	addiu	v1,v1,22672
  4c6be8:	00621821 	addu	v1,v1,v0
  4c6bec:	8fc2003c 	lw	v0,60(s8)
  4c6bf0:	00000000 	nop
  4c6bf4:	24420004 	addiu	v0,v0,4
  4c6bf8:	90630000 	lbu	v1,0(v1)
  4c6bfc:	90420000 	lbu	v0,0(v0)
  4c6c00:	00000000 	nop
  4c6c04:	00621026 	xor	v0,v1,v0
  4c6c08:	304200ff 	andi	v0,v0,0xff
  4c6c0c:	00021080 	sll	v0,v0,0x2
  4c6c10:	8f84804c 	lw	a0,-32692(gp)
  4c6c14:	00000000 	nop
  4c6c18:	24845a90 	addiu	a0,a0,23184
  4c6c1c:	00822021 	addu	a0,a0,v0
  4c6c20:	8fc2003c 	lw	v0,60(s8)
  4c6c24:	00000000 	nop
  4c6c28:	24420015 	addiu	v0,v0,21
  4c6c2c:	90420000 	lbu	v0,0(v0)
  4c6c30:	00000000 	nop
  4c6c34:	3842009d 	xori	v0,v0,0x9d
  4c6c38:	304200ff 	andi	v0,v0,0xff
  4c6c3c:	8f83804c 	lw	v1,-32692(gp)
  4c6c40:	00000000 	nop
  4c6c44:	24635990 	addiu	v1,v1,22928
  4c6c48:	00621821 	addu	v1,v1,v0
  4c6c4c:	8fc2003c 	lw	v0,60(s8)
  4c6c50:	00000000 	nop
  4c6c54:	2442000d 	addiu	v0,v0,13
  4c6c58:	90630000 	lbu	v1,0(v1)
  4c6c5c:	90420000 	lbu	v0,0(v0)
  4c6c60:	00000000 	nop
  4c6c64:	00621026 	xor	v0,v1,v0
  4c6c68:	304200ff 	andi	v0,v0,0xff
  4c6c6c:	8f83804c 	lw	v1,-32692(gp)
  4c6c70:	00000000 	nop
  4c6c74:	24635890 	addiu	v1,v1,22672
  4c6c78:	00621821 	addu	v1,v1,v0
  4c6c7c:	8fc2003c 	lw	v0,60(s8)
  4c6c80:	00000000 	nop
  4c6c84:	24420005 	addiu	v0,v0,5
  4c6c88:	90630000 	lbu	v1,0(v1)
  4c6c8c:	90420000 	lbu	v0,0(v0)
  4c6c90:	00000000 	nop
  4c6c94:	00621026 	xor	v0,v1,v0
  4c6c98:	304200ff 	andi	v0,v0,0xff
  4c6c9c:	00021080 	sll	v0,v0,0x2
  4c6ca0:	24420400 	addiu	v0,v0,1024
  4c6ca4:	8f81804c 	lw	at,-32692(gp)
  4c6ca8:	00000000 	nop
  4c6cac:	24215a90 	addiu	at,at,23184
  4c6cb0:	00221021 	addu	v0,at,v0
  4c6cb4:	8c830000 	lw	v1,0(a0)
  4c6cb8:	8c420000 	lw	v0,0(v0)
  4c6cbc:	00000000 	nop
  4c6cc0:	00622026 	xor	a0,v1,v0
  4c6cc4:	8fc2003c 	lw	v0,60(s8)
  4c6cc8:	00000000 	nop
  4c6ccc:	24420016 	addiu	v0,v0,22
  4c6cd0:	90420000 	lbu	v0,0(v0)
  4c6cd4:	00000000 	nop
  4c6cd8:	38420023 	xori	v0,v0,0x23
  4c6cdc:	304200ff 	andi	v0,v0,0xff
  4c6ce0:	8f83804c 	lw	v1,-32692(gp)
  4c6ce4:	00000000 	nop
  4c6ce8:	24635890 	addiu	v1,v1,22672
  4c6cec:	00621821 	addu	v1,v1,v0
  4c6cf0:	8fc2003c 	lw	v0,60(s8)
  4c6cf4:	00000000 	nop
  4c6cf8:	2442000e 	addiu	v0,v0,14
  4c6cfc:	90630000 	lbu	v1,0(v1)
  4c6d00:	90420000 	lbu	v0,0(v0)
  4c6d04:	00000000 	nop
  4c6d08:	00621026 	xor	v0,v1,v0
  4c6d0c:	304200ff 	andi	v0,v0,0xff
  4c6d10:	8f83804c 	lw	v1,-32692(gp)
  4c6d14:	00000000 	nop
  4c6d18:	24635990 	addiu	v1,v1,22928
  4c6d1c:	00621821 	addu	v1,v1,v0
  4c6d20:	8fc2003c 	lw	v0,60(s8)
  4c6d24:	00000000 	nop
  4c6d28:	24420006 	addiu	v0,v0,6
  4c6d2c:	90630000 	lbu	v1,0(v1)
  4c6d30:	90420000 	lbu	v0,0(v0)
  4c6d34:	00000000 	nop
  4c6d38:	00621026 	xor	v0,v1,v0
  4c6d3c:	304200ff 	andi	v0,v0,0xff
  4c6d40:	00021080 	sll	v0,v0,0x2
  4c6d44:	24420800 	addiu	v0,v0,2048
  4c6d48:	8f81804c 	lw	at,-32692(gp)
  4c6d4c:	00000000 	nop
  4c6d50:	24215a90 	addiu	at,at,23184
  4c6d54:	00221021 	addu	v0,at,v0
  4c6d58:	8c420000 	lw	v0,0(v0)
  4c6d5c:	00000000 	nop
  4c6d60:	00822026 	xor	a0,a0,v0
  4c6d64:	8fc2003c 	lw	v0,60(s8)
  4c6d68:	00000000 	nop
  4c6d6c:	24420017 	addiu	v0,v0,23
  4c6d70:	90420000 	lbu	v0,0(v0)
  4c6d74:	00000000 	nop
  4c6d78:	38420023 	xori	v0,v0,0x23
  4c6d7c:	304200ff 	andi	v0,v0,0xff
  4c6d80:	8f83804c 	lw	v1,-32692(gp)
  4c6d84:	00000000 	nop
  4c6d88:	24635990 	addiu	v1,v1,22928
  4c6d8c:	00621821 	addu	v1,v1,v0
  4c6d90:	8fc2003c 	lw	v0,60(s8)
  4c6d94:	00000000 	nop
  4c6d98:	2442000f 	addiu	v0,v0,15
  4c6d9c:	90630000 	lbu	v1,0(v1)
  4c6da0:	90420000 	lbu	v0,0(v0)
  4c6da4:	00000000 	nop
  4c6da8:	00621026 	xor	v0,v1,v0
  4c6dac:	304200ff 	andi	v0,v0,0xff
  4c6db0:	8f83804c 	lw	v1,-32692(gp)
  4c6db4:	00000000 	nop
  4c6db8:	24635990 	addiu	v1,v1,22928
  4c6dbc:	00621821 	addu	v1,v1,v0
  4c6dc0:	8fc2003c 	lw	v0,60(s8)
  4c6dc4:	00000000 	nop
  4c6dc8:	24420007 	addiu	v0,v0,7
  4c6dcc:	90630000 	lbu	v1,0(v1)
  4c6dd0:	90420000 	lbu	v0,0(v0)
  4c6dd4:	00000000 	nop
  4c6dd8:	00621026 	xor	v0,v1,v0
  4c6ddc:	304200ff 	andi	v0,v0,0xff
  4c6de0:	00021080 	sll	v0,v0,0x2
  4c6de4:	24420c00 	addiu	v0,v0,3072
  4c6de8:	8f81804c 	lw	at,-32692(gp)
  4c6dec:	00000000 	nop
  4c6df0:	24215a90 	addiu	at,at,23184
  4c6df4:	00221021 	addu	v0,at,v0
  4c6df8:	8c420000 	lw	v0,0(v0)
  4c6dfc:	00000000 	nop
  4c6e00:	00821026 	xor	v0,a0,v0
  4c6e04:	afc20018 	sw	v0,24(s8)
  4c6e08:	8fc20018 	lw	v0,24(s8)
  4c6e0c:	00000000 	nop
  4c6e10:	00021a00 	sll	v1,v0,0x8
  4c6e14:	00021602 	srl	v0,v0,0x18
  4c6e18:	00621025 	or	v0,v1,v0
  4c6e1c:	afc20018 	sw	v0,24(s8)
  4c6e20:	8fc30014 	lw	v1,20(s8)
  4c6e24:	8fc20018 	lw	v0,24(s8)
  4c6e28:	00000000 	nop
  4c6e2c:	00621021 	addu	v0,v1,v0
  4c6e30:	afc20014 	sw	v0,20(s8)
  4c6e34:	8fc30018 	lw	v1,24(s8)
  4c6e38:	8fc20014 	lw	v0,20(s8)
  4c6e3c:	00000000 	nop
  4c6e40:	00621021 	addu	v0,v1,v0
  4c6e44:	afc20018 	sw	v0,24(s8)
  4c6e48:	8fc30014 	lw	v1,20(s8)
  4c6e4c:	8fc20038 	lw	v0,56(s8)
  4c6e50:	00000000 	nop
  4c6e54:	ac431098 	sw	v1,4248(v0)
  4c6e58:	8fc20018 	lw	v0,24(s8)
  4c6e5c:	00000000 	nop
  4c6e60:	00021a40 	sll	v1,v0,0x9
  4c6e64:	000215c2 	srl	v0,v0,0x17
  4c6e68:	00621825 	or	v1,v1,v0
  4c6e6c:	8fc20038 	lw	v0,56(s8)
  4c6e70:	00000000 	nop
  4c6e74:	ac43109c 	sw	v1,4252(v0)
  4c6e78:	100014a6 	b	4cc114 <twofish_set_key+0x16d64>
  4c6e7c:	00000000 	nop
  4c6e80:	8fc20008 	lw	v0,8(s8)
  4c6e84:	00000000 	nop
  4c6e88:	00021880 	sll	v1,v0,0x2
  4c6e8c:	8fc20038 	lw	v0,56(s8)
  4c6e90:	00000000 	nop
  4c6e94:	00432021 	addu	a0,v0,v1
  4c6e98:	8fc20010 	lw	v0,16(s8)
  4c6e9c:	8f81804c 	lw	at,-32692(gp)
  4c6ea0:	00000000 	nop
  4c6ea4:	24216d7c 	addiu	at,at,28028
  4c6ea8:	00221021 	addu	v0,at,v0
  4c6eac:	90430000 	lbu	v1,0(v0)
  4c6eb0:	93c2001c 	lbu	v0,28(s8)
  4c6eb4:	00000000 	nop
  4c6eb8:	00621026 	xor	v0,v1,v0
  4c6ebc:	304200ff 	andi	v0,v0,0xff
  4c6ec0:	8f81804c 	lw	at,-32692(gp)
  4c6ec4:	00000000 	nop
  4c6ec8:	24215890 	addiu	at,at,22672
  4c6ecc:	00221021 	addu	v0,at,v0
  4c6ed0:	90430000 	lbu	v1,0(v0)
  4c6ed4:	93c20020 	lbu	v0,32(s8)
  4c6ed8:	00000000 	nop
  4c6edc:	00621026 	xor	v0,v1,v0
  4c6ee0:	304200ff 	andi	v0,v0,0xff
  4c6ee4:	8f81804c 	lw	at,-32692(gp)
  4c6ee8:	00000000 	nop
  4c6eec:	24215890 	addiu	at,at,22672
  4c6ef0:	00221021 	addu	v0,at,v0
  4c6ef4:	90430000 	lbu	v1,0(v0)
  4c6ef8:	93c20024 	lbu	v0,36(s8)
  4c6efc:	00000000 	nop
  4c6f00:	00621026 	xor	v0,v1,v0
  4c6f04:	304200ff 	andi	v0,v0,0xff
  4c6f08:	00021080 	sll	v0,v0,0x2
  4c6f0c:	8f81804c 	lw	at,-32692(gp)
  4c6f10:	00000000 	nop
  4c6f14:	24215a90 	addiu	at,at,23184
  4c6f18:	00221021 	addu	v0,at,v0
  4c6f1c:	8c420000 	lw	v0,0(v0)
  4c6f20:	00000000 	nop
  4c6f24:	ac820000 	sw	v0,0(a0)
  4c6f28:	8fc20008 	lw	v0,8(s8)
  4c6f2c:	00000000 	nop
  4c6f30:	00021080 	sll	v0,v0,0x2
  4c6f34:	24430400 	addiu	v1,v0,1024
  4c6f38:	8fc20038 	lw	v0,56(s8)
  4c6f3c:	00000000 	nop
  4c6f40:	00432021 	addu	a0,v0,v1
  4c6f44:	8fc20010 	lw	v0,16(s8)
  4c6f48:	8f81804c 	lw	at,-32692(gp)
  4c6f4c:	00000000 	nop
  4c6f50:	24216d7c 	addiu	at,at,28028
  4c6f54:	00221021 	addu	v0,at,v0
  4c6f58:	90430000 	lbu	v1,0(v0)
  4c6f5c:	93c2001d 	lbu	v0,29(s8)
  4c6f60:	00000000 	nop
  4c6f64:	00621026 	xor	v0,v1,v0
  4c6f68:	304200ff 	andi	v0,v0,0xff
  4c6f6c:	8f81804c 	lw	at,-32692(gp)
  4c6f70:	00000000 	nop
  4c6f74:	24215990 	addiu	at,at,22928
  4c6f78:	00221021 	addu	v0,at,v0
  4c6f7c:	90430000 	lbu	v1,0(v0)
  4c6f80:	93c20021 	lbu	v0,33(s8)
  4c6f84:	00000000 	nop
  4c6f88:	00621026 	xor	v0,v1,v0
  4c6f8c:	304200ff 	andi	v0,v0,0xff
  4c6f90:	8f81804c 	lw	at,-32692(gp)
  4c6f94:	00000000 	nop
  4c6f98:	24215890 	addiu	at,at,22672
  4c6f9c:	00221021 	addu	v0,at,v0
  4c6fa0:	90430000 	lbu	v1,0(v0)
  4c6fa4:	93c20025 	lbu	v0,37(s8)
  4c6fa8:	00000000 	nop
  4c6fac:	00621026 	xor	v0,v1,v0
  4c6fb0:	304200ff 	andi	v0,v0,0xff
  4c6fb4:	00021080 	sll	v0,v0,0x2
  4c6fb8:	24420400 	addiu	v0,v0,1024
  4c6fbc:	8f81804c 	lw	at,-32692(gp)
  4c6fc0:	00000000 	nop
  4c6fc4:	24215a90 	addiu	at,at,23184
  4c6fc8:	00221021 	addu	v0,at,v0
  4c6fcc:	8c420000 	lw	v0,0(v0)
  4c6fd0:	00000000 	nop
  4c6fd4:	ac820000 	sw	v0,0(a0)
  4c6fd8:	8fc20008 	lw	v0,8(s8)
  4c6fdc:	00000000 	nop
  4c6fe0:	00021080 	sll	v0,v0,0x2
  4c6fe4:	24430800 	addiu	v1,v0,2048
  4c6fe8:	8fc20038 	lw	v0,56(s8)
  4c6fec:	00000000 	nop
  4c6ff0:	00432021 	addu	a0,v0,v1
  4c6ff4:	8fc2000c 	lw	v0,12(s8)
  4c6ff8:	8f81804c 	lw	at,-32692(gp)
  4c6ffc:	00000000 	nop
  4c7000:	24216d7c 	addiu	at,at,28028
  4c7004:	00221021 	addu	v0,at,v0
  4c7008:	90430000 	lbu	v1,0(v0)
  4c700c:	93c2001e 	lbu	v0,30(s8)
  4c7010:	00000000 	nop
  4c7014:	00621026 	xor	v0,v1,v0
  4c7018:	304200ff 	andi	v0,v0,0xff
  4c701c:	8f81804c 	lw	at,-32692(gp)
  4c7020:	00000000 	nop
  4c7024:	24215890 	addiu	at,at,22672
  4c7028:	00221021 	addu	v0,at,v0
  4c702c:	90430000 	lbu	v1,0(v0)
  4c7030:	93c20022 	lbu	v0,34(s8)
  4c7034:	00000000 	nop
  4c7038:	00621026 	xor	v0,v1,v0
  4c703c:	304200ff 	andi	v0,v0,0xff
  4c7040:	8f81804c 	lw	at,-32692(gp)
  4c7044:	00000000 	nop
  4c7048:	24215990 	addiu	at,at,22928
  4c704c:	00221021 	addu	v0,at,v0
  4c7050:	90430000 	lbu	v1,0(v0)
  4c7054:	93c20026 	lbu	v0,38(s8)
  4c7058:	00000000 	nop
  4c705c:	00621026 	xor	v0,v1,v0
  4c7060:	304200ff 	andi	v0,v0,0xff
  4c7064:	00021080 	sll	v0,v0,0x2
  4c7068:	24420800 	addiu	v0,v0,2048
  4c706c:	8f81804c 	lw	at,-32692(gp)
  4c7070:	00000000 	nop
  4c7074:	24215a90 	addiu	at,at,23184
  4c7078:	00221021 	addu	v0,at,v0
  4c707c:	8c420000 	lw	v0,0(v0)
  4c7080:	00000000 	nop
  4c7084:	ac820000 	sw	v0,0(a0)
  4c7088:	8fc20008 	lw	v0,8(s8)
  4c708c:	00000000 	nop
  4c7090:	00021080 	sll	v0,v0,0x2
  4c7094:	24430c00 	addiu	v1,v0,3072
  4c7098:	8fc20038 	lw	v0,56(s8)
  4c709c:	00000000 	nop
  4c70a0:	00432021 	addu	a0,v0,v1
  4c70a4:	8fc2000c 	lw	v0,12(s8)
  4c70a8:	8f81804c 	lw	at,-32692(gp)
  4c70ac:	00000000 	nop
  4c70b0:	24216d7c 	addiu	at,at,28028
  4c70b4:	00221021 	addu	v0,at,v0
  4c70b8:	90430000 	lbu	v1,0(v0)
  4c70bc:	93c2001f 	lbu	v0,31(s8)
  4c70c0:	00000000 	nop
  4c70c4:	00621026 	xor	v0,v1,v0
  4c70c8:	304200ff 	andi	v0,v0,0xff
  4c70cc:	8f81804c 	lw	at,-32692(gp)
  4c70d0:	00000000 	nop
  4c70d4:	24215990 	addiu	at,at,22928
  4c70d8:	00221021 	addu	v0,at,v0
  4c70dc:	90430000 	lbu	v1,0(v0)
  4c70e0:	93c20023 	lbu	v0,35(s8)
  4c70e4:	00000000 	nop
  4c70e8:	00621026 	xor	v0,v1,v0
  4c70ec:	304200ff 	andi	v0,v0,0xff
  4c70f0:	8f81804c 	lw	at,-32692(gp)
  4c70f4:	00000000 	nop
  4c70f8:	24215990 	addiu	at,at,22928
  4c70fc:	00221021 	addu	v0,at,v0
  4c7100:	90430000 	lbu	v1,0(v0)
  4c7104:	93c20027 	lbu	v0,39(s8)
  4c7108:	00000000 	nop
  4c710c:	00621026 	xor	v0,v1,v0
  4c7110:	304200ff 	andi	v0,v0,0xff
  4c7114:	00021080 	sll	v0,v0,0x2
  4c7118:	24420c00 	addiu	v0,v0,3072
  4c711c:	8f81804c 	lw	at,-32692(gp)
  4c7120:	00000000 	nop
  4c7124:	24215a90 	addiu	at,at,23184
  4c7128:	00221021 	addu	v0,at,v0
  4c712c:	8c420000 	lw	v0,0(v0)
  4c7130:	00000000 	nop
  4c7134:	ac820000 	sw	v0,0(a0)
  4c7138:	8fc20008 	lw	v0,8(s8)
  4c713c:	00000000 	nop
  4c7140:	24420001 	addiu	v0,v0,1
  4c7144:	afc20008 	sw	v0,8(s8)
  4c7148:	8fc2000c 	lw	v0,12(s8)
  4c714c:	00000000 	nop
  4c7150:	24420002 	addiu	v0,v0,2
  4c7154:	afc2000c 	sw	v0,12(s8)
  4c7158:	8fc20010 	lw	v0,16(s8)
  4c715c:	00000000 	nop
  4c7160:	24420002 	addiu	v0,v0,2
  4c7164:	afc20010 	sw	v0,16(s8)
  4c7168:	1000e478 	b	4c034c <twofish_set_key+0xaf9c>
  4c716c:	00000000 	nop
	} else { /* 128-bit key */
		/* Compute the S-boxes. */
		for ( i = j = 0, k = 1; i < 256; i++, j += 2, k += 2 ) {
  4c7170:	afc0000c 	sw	zero,12(s8)
  4c7174:	afc00008 	sw	zero,8(s8)
  4c7178:	24020001 	li	v0,1
  4c717c:	afc20010 	sw	v0,16(s8)
  4c7180:	8fc20008 	lw	v0,8(s8)
  4c7184:	00000000 	nop
  4c7188:	28420100 	slti	v0,v0,256
  4c718c:	14400003 	bnez	v0,4c719c <twofish_set_key+0x11dec>
  4c7190:	00000000 	nop
  4c7194:	10000099 	b	4c73fc <twofish_set_key+0x1204c>
  4c7198:	00000000 	nop
			CALC_SB_2( i, calc_sb_tbl[j], calc_sb_tbl[k] );
  4c719c:	8fc20008 	lw	v0,8(s8)
  4c71a0:	00000000 	nop
  4c71a4:	00021880 	sll	v1,v0,0x2
  4c71a8:	8fc20038 	lw	v0,56(s8)
  4c71ac:	00000000 	nop
  4c71b0:	00432021 	addu	a0,v0,v1
  4c71b4:	8fc2000c 	lw	v0,12(s8)
  4c71b8:	8f81804c 	lw	at,-32692(gp)
  4c71bc:	00000000 	nop
  4c71c0:	24216d7c 	addiu	at,at,28028
  4c71c4:	00221021 	addu	v0,at,v0
  4c71c8:	90430000 	lbu	v1,0(v0)
  4c71cc:	93c2001c 	lbu	v0,28(s8)
  4c71d0:	00000000 	nop
  4c71d4:	00621026 	xor	v0,v1,v0
  4c71d8:	304200ff 	andi	v0,v0,0xff
  4c71dc:	8f81804c 	lw	at,-32692(gp)
  4c71e0:	00000000 	nop
  4c71e4:	24215890 	addiu	at,at,22672
  4c71e8:	00221021 	addu	v0,at,v0
  4c71ec:	90430000 	lbu	v1,0(v0)
  4c71f0:	93c20020 	lbu	v0,32(s8)
  4c71f4:	00000000 	nop
  4c71f8:	00621026 	xor	v0,v1,v0
  4c71fc:	304200ff 	andi	v0,v0,0xff
  4c7200:	00021080 	sll	v0,v0,0x2
  4c7204:	8f81804c 	lw	at,-32692(gp)
  4c7208:	00000000 	nop
  4c720c:	24215a90 	addiu	at,at,23184
  4c7210:	00221021 	addu	v0,at,v0
  4c7214:	8c420000 	lw	v0,0(v0)
  4c7218:	00000000 	nop
  4c721c:	ac820000 	sw	v0,0(a0)
  4c7220:	8fc20008 	lw	v0,8(s8)
  4c7224:	00000000 	nop
  4c7228:	00021080 	sll	v0,v0,0x2
  4c722c:	24430400 	addiu	v1,v0,1024
  4c7230:	8fc20038 	lw	v0,56(s8)
  4c7234:	00000000 	nop
  4c7238:	00432021 	addu	a0,v0,v1
  4c723c:	8fc20010 	lw	v0,16(s8)
  4c7240:	8f81804c 	lw	at,-32692(gp)
  4c7244:	00000000 	nop
  4c7248:	24216d7c 	addiu	at,at,28028
  4c724c:	00221021 	addu	v0,at,v0
  4c7250:	90430000 	lbu	v1,0(v0)
  4c7254:	93c2001d 	lbu	v0,29(s8)
  4c7258:	00000000 	nop
  4c725c:	00621026 	xor	v0,v1,v0
  4c7260:	304200ff 	andi	v0,v0,0xff
  4c7264:	8f81804c 	lw	at,-32692(gp)
  4c7268:	00000000 	nop
  4c726c:	24215890 	addiu	at,at,22672
  4c7270:	00221021 	addu	v0,at,v0
  4c7274:	90430000 	lbu	v1,0(v0)
  4c7278:	93c20021 	lbu	v0,33(s8)
  4c727c:	00000000 	nop
  4c7280:	00621026 	xor	v0,v1,v0
  4c7284:	304200ff 	andi	v0,v0,0xff
  4c7288:	00021080 	sll	v0,v0,0x2
  4c728c:	24420400 	addiu	v0,v0,1024
  4c7290:	8f81804c 	lw	at,-32692(gp)
  4c7294:	00000000 	nop
  4c7298:	24215a90 	addiu	at,at,23184
  4c729c:	00221021 	addu	v0,at,v0
  4c72a0:	8c420000 	lw	v0,0(v0)
  4c72a4:	00000000 	nop
  4c72a8:	ac820000 	sw	v0,0(a0)
  4c72ac:	8fc20008 	lw	v0,8(s8)
  4c72b0:	00000000 	nop
  4c72b4:	00021080 	sll	v0,v0,0x2
  4c72b8:	24430800 	addiu	v1,v0,2048
  4c72bc:	8fc20038 	lw	v0,56(s8)
  4c72c0:	00000000 	nop
  4c72c4:	00432021 	addu	a0,v0,v1
  4c72c8:	8fc2000c 	lw	v0,12(s8)
  4c72cc:	8f81804c 	lw	at,-32692(gp)
  4c72d0:	00000000 	nop
  4c72d4:	24216d7c 	addiu	at,at,28028
  4c72d8:	00221021 	addu	v0,at,v0
  4c72dc:	90430000 	lbu	v1,0(v0)
  4c72e0:	93c2001e 	lbu	v0,30(s8)
  4c72e4:	00000000 	nop
  4c72e8:	00621026 	xor	v0,v1,v0
  4c72ec:	304200ff 	andi	v0,v0,0xff
  4c72f0:	8f81804c 	lw	at,-32692(gp)
  4c72f4:	00000000 	nop
  4c72f8:	24215990 	addiu	at,at,22928
  4c72fc:	00221021 	addu	v0,at,v0
  4c7300:	90430000 	lbu	v1,0(v0)
  4c7304:	93c20022 	lbu	v0,34(s8)
  4c7308:	00000000 	nop
  4c730c:	00621026 	xor	v0,v1,v0
  4c7310:	304200ff 	andi	v0,v0,0xff
  4c7314:	00021080 	sll	v0,v0,0x2
  4c7318:	24420800 	addiu	v0,v0,2048
  4c731c:	8f81804c 	lw	at,-32692(gp)
  4c7320:	00000000 	nop
  4c7324:	24215a90 	addiu	at,at,23184
  4c7328:	00221021 	addu	v0,at,v0
  4c732c:	8c420000 	lw	v0,0(v0)
  4c7330:	00000000 	nop
  4c7334:	ac820000 	sw	v0,0(a0)
  4c7338:	8fc20008 	lw	v0,8(s8)
  4c733c:	00000000 	nop
  4c7340:	00021080 	sll	v0,v0,0x2
  4c7344:	24430c00 	addiu	v1,v0,3072
  4c7348:	8fc20038 	lw	v0,56(s8)
  4c734c:	00000000 	nop
  4c7350:	00432021 	addu	a0,v0,v1
  4c7354:	8fc20010 	lw	v0,16(s8)
  4c7358:	8f81804c 	lw	at,-32692(gp)
  4c735c:	00000000 	nop
  4c7360:	24216d7c 	addiu	at,at,28028
  4c7364:	00221021 	addu	v0,at,v0
  4c7368:	90430000 	lbu	v1,0(v0)
  4c736c:	93c2001f 	lbu	v0,31(s8)
  4c7370:	00000000 	nop
  4c7374:	00621026 	xor	v0,v1,v0
  4c7378:	304200ff 	andi	v0,v0,0xff
  4c737c:	8f81804c 	lw	at,-32692(gp)
  4c7380:	00000000 	nop
  4c7384:	24215990 	addiu	at,at,22928
  4c7388:	00221021 	addu	v0,at,v0
  4c738c:	90430000 	lbu	v1,0(v0)
  4c7390:	93c20023 	lbu	v0,35(s8)
  4c7394:	00000000 	nop
  4c7398:	00621026 	xor	v0,v1,v0
  4c739c:	304200ff 	andi	v0,v0,0xff
  4c73a0:	00021080 	sll	v0,v0,0x2
  4c73a4:	24420c00 	addiu	v0,v0,3072
  4c73a8:	8f81804c 	lw	at,-32692(gp)
  4c73ac:	00000000 	nop
  4c73b0:	24215a90 	addiu	at,at,23184
  4c73b4:	00221021 	addu	v0,at,v0
  4c73b8:	8c420000 	lw	v0,0(v0)
  4c73bc:	00000000 	nop
  4c73c0:	ac820000 	sw	v0,0(a0)
  4c73c4:	8fc20008 	lw	v0,8(s8)
  4c73c8:	00000000 	nop
  4c73cc:	24420001 	addiu	v0,v0,1
  4c73d0:	afc20008 	sw	v0,8(s8)
  4c73d4:	8fc2000c 	lw	v0,12(s8)
  4c73d8:	00000000 	nop
  4c73dc:	24420002 	addiu	v0,v0,2
  4c73e0:	afc2000c 	sw	v0,12(s8)
  4c73e4:	8fc20010 	lw	v0,16(s8)
  4c73e8:	00000000 	nop
  4c73ec:	24420002 	addiu	v0,v0,2
  4c73f0:	afc20010 	sw	v0,16(s8)
  4c73f4:	1000ff62 	b	4c7180 <twofish_set_key+0x11dd0>
  4c73f8:	00000000 	nop
		}

		/* Calculate whitening and round subkeys.  The constants are
		 * indices of subkeys, preprocessed through q0 and q1. */
		CALC_K (w, 0, 0xA9, 0x75, 0x67, 0xF3);
  4c73fc:	8fc2003c 	lw	v0,60(s8)
  4c7400:	00000000 	nop
  4c7404:	24420008 	addiu	v0,v0,8
  4c7408:	90420000 	lbu	v0,0(v0)
  4c740c:	00000000 	nop
  4c7410:	384200a9 	xori	v0,v0,0xa9
  4c7414:	304200ff 	andi	v0,v0,0xff
  4c7418:	8f81804c 	lw	at,-32692(gp)
  4c741c:	00000000 	nop
  4c7420:	24215890 	addiu	at,at,22672
  4c7424:	00221021 	addu	v0,at,v0
  4c7428:	90430000 	lbu	v1,0(v0)
  4c742c:	8fc2003c 	lw	v0,60(s8)
  4c7430:	00000000 	nop
  4c7434:	90420000 	lbu	v0,0(v0)
  4c7438:	00000000 	nop
  4c743c:	00621026 	xor	v0,v1,v0
  4c7440:	304200ff 	andi	v0,v0,0xff
  4c7444:	00021080 	sll	v0,v0,0x2
  4c7448:	8f84804c 	lw	a0,-32692(gp)
  4c744c:	00000000 	nop
  4c7450:	24845a90 	addiu	a0,a0,23184
  4c7454:	00822021 	addu	a0,a0,v0
  4c7458:	8fc2003c 	lw	v0,60(s8)
  4c745c:	00000000 	nop
  4c7460:	24420009 	addiu	v0,v0,9
  4c7464:	90420000 	lbu	v0,0(v0)
  4c7468:	00000000 	nop
  4c746c:	38420075 	xori	v0,v0,0x75
  4c7470:	304200ff 	andi	v0,v0,0xff
  4c7474:	8f83804c 	lw	v1,-32692(gp)
  4c7478:	00000000 	nop
  4c747c:	24635890 	addiu	v1,v1,22672
  4c7480:	00621821 	addu	v1,v1,v0
  4c7484:	8fc2003c 	lw	v0,60(s8)
  4c7488:	00000000 	nop
  4c748c:	24420001 	addiu	v0,v0,1
  4c7490:	90630000 	lbu	v1,0(v1)
  4c7494:	90420000 	lbu	v0,0(v0)
  4c7498:	00000000 	nop
  4c749c:	00621026 	xor	v0,v1,v0
  4c74a0:	304200ff 	andi	v0,v0,0xff
  4c74a4:	00021080 	sll	v0,v0,0x2
  4c74a8:	24420400 	addiu	v0,v0,1024
  4c74ac:	8f81804c 	lw	at,-32692(gp)
  4c74b0:	00000000 	nop
  4c74b4:	24215a90 	addiu	at,at,23184
  4c74b8:	00221021 	addu	v0,at,v0
  4c74bc:	8c830000 	lw	v1,0(a0)
  4c74c0:	8c420000 	lw	v0,0(v0)
  4c74c4:	00000000 	nop
  4c74c8:	00622026 	xor	a0,v1,v0
  4c74cc:	8fc2003c 	lw	v0,60(s8)
  4c74d0:	00000000 	nop
  4c74d4:	2442000a 	addiu	v0,v0,10
  4c74d8:	90420000 	lbu	v0,0(v0)
  4c74dc:	00000000 	nop
  4c74e0:	384200a9 	xori	v0,v0,0xa9
  4c74e4:	304200ff 	andi	v0,v0,0xff
  4c74e8:	8f83804c 	lw	v1,-32692(gp)
  4c74ec:	00000000 	nop
  4c74f0:	24635990 	addiu	v1,v1,22928
  4c74f4:	00621821 	addu	v1,v1,v0
  4c74f8:	8fc2003c 	lw	v0,60(s8)
  4c74fc:	00000000 	nop
  4c7500:	24420002 	addiu	v0,v0,2
  4c7504:	90630000 	lbu	v1,0(v1)
  4c7508:	90420000 	lbu	v0,0(v0)
  4c750c:	00000000 	nop
  4c7510:	00621026 	xor	v0,v1,v0
  4c7514:	304200ff 	andi	v0,v0,0xff
  4c7518:	00021080 	sll	v0,v0,0x2
  4c751c:	24420800 	addiu	v0,v0,2048
  4c7520:	8f81804c 	lw	at,-32692(gp)
  4c7524:	00000000 	nop
  4c7528:	24215a90 	addiu	at,at,23184
  4c752c:	00221021 	addu	v0,at,v0
  4c7530:	8c420000 	lw	v0,0(v0)
  4c7534:	00000000 	nop
  4c7538:	00822026 	xor	a0,a0,v0
  4c753c:	8fc2003c 	lw	v0,60(s8)
  4c7540:	00000000 	nop
  4c7544:	2442000b 	addiu	v0,v0,11
  4c7548:	90420000 	lbu	v0,0(v0)
  4c754c:	00000000 	nop
  4c7550:	38420075 	xori	v0,v0,0x75
  4c7554:	304200ff 	andi	v0,v0,0xff
  4c7558:	8f83804c 	lw	v1,-32692(gp)
  4c755c:	00000000 	nop
  4c7560:	24635990 	addiu	v1,v1,22928
  4c7564:	00621821 	addu	v1,v1,v0
  4c7568:	8fc2003c 	lw	v0,60(s8)
  4c756c:	00000000 	nop
  4c7570:	24420003 	addiu	v0,v0,3
  4c7574:	90630000 	lbu	v1,0(v1)
  4c7578:	90420000 	lbu	v0,0(v0)
  4c757c:	00000000 	nop
  4c7580:	00621026 	xor	v0,v1,v0
  4c7584:	304200ff 	andi	v0,v0,0xff
  4c7588:	00021080 	sll	v0,v0,0x2
  4c758c:	24420c00 	addiu	v0,v0,3072
  4c7590:	8f81804c 	lw	at,-32692(gp)
  4c7594:	00000000 	nop
  4c7598:	24215a90 	addiu	at,at,23184
  4c759c:	00221021 	addu	v0,at,v0
  4c75a0:	8c420000 	lw	v0,0(v0)
  4c75a4:	00000000 	nop
  4c75a8:	00821026 	xor	v0,a0,v0
  4c75ac:	afc20014 	sw	v0,20(s8)
  4c75b0:	8fc2003c 	lw	v0,60(s8)
  4c75b4:	00000000 	nop
  4c75b8:	2442000c 	addiu	v0,v0,12
  4c75bc:	90420000 	lbu	v0,0(v0)
  4c75c0:	00000000 	nop
  4c75c4:	38420067 	xori	v0,v0,0x67
  4c75c8:	304200ff 	andi	v0,v0,0xff
  4c75cc:	8f83804c 	lw	v1,-32692(gp)
  4c75d0:	00000000 	nop
  4c75d4:	24635890 	addiu	v1,v1,22672
  4c75d8:	00621821 	addu	v1,v1,v0
  4c75dc:	8fc2003c 	lw	v0,60(s8)
  4c75e0:	00000000 	nop
  4c75e4:	24420004 	addiu	v0,v0,4
  4c75e8:	90630000 	lbu	v1,0(v1)
  4c75ec:	90420000 	lbu	v0,0(v0)
  4c75f0:	00000000 	nop
  4c75f4:	00621026 	xor	v0,v1,v0
  4c75f8:	304200ff 	andi	v0,v0,0xff
  4c75fc:	00021080 	sll	v0,v0,0x2
  4c7600:	8f84804c 	lw	a0,-32692(gp)
  4c7604:	00000000 	nop
  4c7608:	24845a90 	addiu	a0,a0,23184
  4c760c:	00822021 	addu	a0,a0,v0
  4c7610:	8fc2003c 	lw	v0,60(s8)
  4c7614:	00000000 	nop
  4c7618:	2442000d 	addiu	v0,v0,13
  4c761c:	90420000 	lbu	v0,0(v0)
  4c7620:	00000000 	nop
  4c7624:	384200f3 	xori	v0,v0,0xf3
  4c7628:	304200ff 	andi	v0,v0,0xff
  4c762c:	8f83804c 	lw	v1,-32692(gp)
  4c7630:	00000000 	nop
  4c7634:	24635890 	addiu	v1,v1,22672
  4c7638:	00621821 	addu	v1,v1,v0
  4c763c:	8fc2003c 	lw	v0,60(s8)
  4c7640:	00000000 	nop
  4c7644:	24420005 	addiu	v0,v0,5
  4c7648:	90630000 	lbu	v1,0(v1)
  4c764c:	90420000 	lbu	v0,0(v0)
  4c7650:	00000000 	nop
  4c7654:	00621026 	xor	v0,v1,v0
  4c7658:	304200ff 	andi	v0,v0,0xff
  4c765c:	00021080 	sll	v0,v0,0x2
  4c7660:	24420400 	addiu	v0,v0,1024
  4c7664:	8f81804c 	lw	at,-32692(gp)
  4c7668:	00000000 	nop
  4c766c:	24215a90 	addiu	at,at,23184
  4c7670:	00221021 	addu	v0,at,v0
  4c7674:	8c830000 	lw	v1,0(a0)
  4c7678:	8c420000 	lw	v0,0(v0)
  4c767c:	00000000 	nop
  4c7680:	00622026 	xor	a0,v1,v0
  4c7684:	8fc2003c 	lw	v0,60(s8)
  4c7688:	00000000 	nop
  4c768c:	2442000e 	addiu	v0,v0,14
  4c7690:	90420000 	lbu	v0,0(v0)
  4c7694:	00000000 	nop
  4c7698:	38420067 	xori	v0,v0,0x67
  4c769c:	304200ff 	andi	v0,v0,0xff
  4c76a0:	8f83804c 	lw	v1,-32692(gp)
  4c76a4:	00000000 	nop
  4c76a8:	24635990 	addiu	v1,v1,22928
  4c76ac:	00621821 	addu	v1,v1,v0
  4c76b0:	8fc2003c 	lw	v0,60(s8)
  4c76b4:	00000000 	nop
  4c76b8:	24420006 	addiu	v0,v0,6
  4c76bc:	90630000 	lbu	v1,0(v1)
  4c76c0:	90420000 	lbu	v0,0(v0)
  4c76c4:	00000000 	nop
  4c76c8:	00621026 	xor	v0,v1,v0
  4c76cc:	304200ff 	andi	v0,v0,0xff
  4c76d0:	00021080 	sll	v0,v0,0x2
  4c76d4:	24420800 	addiu	v0,v0,2048
  4c76d8:	8f81804c 	lw	at,-32692(gp)
  4c76dc:	00000000 	nop
  4c76e0:	24215a90 	addiu	at,at,23184
  4c76e4:	00221021 	addu	v0,at,v0
  4c76e8:	8c420000 	lw	v0,0(v0)
  4c76ec:	00000000 	nop
  4c76f0:	00822026 	xor	a0,a0,v0
  4c76f4:	8fc2003c 	lw	v0,60(s8)
  4c76f8:	00000000 	nop
  4c76fc:	2442000f 	addiu	v0,v0,15
  4c7700:	90420000 	lbu	v0,0(v0)
  4c7704:	00000000 	nop
  4c7708:	384200f3 	xori	v0,v0,0xf3
  4c770c:	304200ff 	andi	v0,v0,0xff
  4c7710:	8f83804c 	lw	v1,-32692(gp)
  4c7714:	00000000 	nop
  4c7718:	24635990 	addiu	v1,v1,22928
  4c771c:	00621821 	addu	v1,v1,v0
  4c7720:	8fc2003c 	lw	v0,60(s8)
  4c7724:	00000000 	nop
  4c7728:	24420007 	addiu	v0,v0,7
  4c772c:	90630000 	lbu	v1,0(v1)
  4c7730:	90420000 	lbu	v0,0(v0)
  4c7734:	00000000 	nop
  4c7738:	00621026 	xor	v0,v1,v0
  4c773c:	304200ff 	andi	v0,v0,0xff
  4c7740:	00021080 	sll	v0,v0,0x2
  4c7744:	24420c00 	addiu	v0,v0,3072
  4c7748:	8f81804c 	lw	at,-32692(gp)
  4c774c:	00000000 	nop
  4c7750:	24215a90 	addiu	at,at,23184
  4c7754:	00221021 	addu	v0,at,v0
  4c7758:	8c420000 	lw	v0,0(v0)
  4c775c:	00000000 	nop
  4c7760:	00821026 	xor	v0,a0,v0
  4c7764:	afc20018 	sw	v0,24(s8)
  4c7768:	8fc20018 	lw	v0,24(s8)
  4c776c:	00000000 	nop
  4c7770:	00021a00 	sll	v1,v0,0x8
  4c7774:	00021602 	srl	v0,v0,0x18
  4c7778:	00621025 	or	v0,v1,v0
  4c777c:	afc20018 	sw	v0,24(s8)
  4c7780:	8fc30014 	lw	v1,20(s8)
  4c7784:	8fc20018 	lw	v0,24(s8)
  4c7788:	00000000 	nop
  4c778c:	00621021 	addu	v0,v1,v0
  4c7790:	afc20014 	sw	v0,20(s8)
  4c7794:	8fc30018 	lw	v1,24(s8)
  4c7798:	8fc20014 	lw	v0,20(s8)
  4c779c:	00000000 	nop
  4c77a0:	00621021 	addu	v0,v1,v0
  4c77a4:	afc20018 	sw	v0,24(s8)
  4c77a8:	8fc30014 	lw	v1,20(s8)
  4c77ac:	8fc20038 	lw	v0,56(s8)
  4c77b0:	00000000 	nop
  4c77b4:	ac431000 	sw	v1,4096(v0)
  4c77b8:	8fc20018 	lw	v0,24(s8)
  4c77bc:	00000000 	nop
  4c77c0:	00021a40 	sll	v1,v0,0x9
  4c77c4:	000215c2 	srl	v0,v0,0x17
  4c77c8:	00621825 	or	v1,v1,v0
  4c77cc:	8fc20038 	lw	v0,56(s8)
  4c77d0:	00000000 	nop
  4c77d4:	ac431004 	sw	v1,4100(v0)
		CALC_K (w, 2, 0xB3, 0xC6, 0xE8, 0xF4);
  4c77d8:	8fc2003c 	lw	v0,60(s8)
  4c77dc:	00000000 	nop
  4c77e0:	24420008 	addiu	v0,v0,8
  4c77e4:	90420000 	lbu	v0,0(v0)
  4c77e8:	00000000 	nop
  4c77ec:	384200b3 	xori	v0,v0,0xb3
  4c77f0:	304200ff 	andi	v0,v0,0xff
  4c77f4:	8f81804c 	lw	at,-32692(gp)
  4c77f8:	00000000 	nop
  4c77fc:	24215890 	addiu	at,at,22672
  4c7800:	00221021 	addu	v0,at,v0
  4c7804:	90430000 	lbu	v1,0(v0)
  4c7808:	8fc2003c 	lw	v0,60(s8)
  4c780c:	00000000 	nop
  4c7810:	90420000 	lbu	v0,0(v0)
  4c7814:	00000000 	nop
  4c7818:	00621026 	xor	v0,v1,v0
  4c781c:	304200ff 	andi	v0,v0,0xff
  4c7820:	00021080 	sll	v0,v0,0x2
  4c7824:	8f84804c 	lw	a0,-32692(gp)
  4c7828:	00000000 	nop
  4c782c:	24845a90 	addiu	a0,a0,23184
  4c7830:	00822021 	addu	a0,a0,v0
  4c7834:	8fc2003c 	lw	v0,60(s8)
  4c7838:	00000000 	nop
  4c783c:	24420009 	addiu	v0,v0,9
  4c7840:	90420000 	lbu	v0,0(v0)
  4c7844:	00000000 	nop
  4c7848:	384200c6 	xori	v0,v0,0xc6
  4c784c:	304200ff 	andi	v0,v0,0xff
  4c7850:	8f83804c 	lw	v1,-32692(gp)
  4c7854:	00000000 	nop
  4c7858:	24635890 	addiu	v1,v1,22672
  4c785c:	00621821 	addu	v1,v1,v0
  4c7860:	8fc2003c 	lw	v0,60(s8)
  4c7864:	00000000 	nop
  4c7868:	24420001 	addiu	v0,v0,1
  4c786c:	90630000 	lbu	v1,0(v1)
  4c7870:	90420000 	lbu	v0,0(v0)
  4c7874:	00000000 	nop
  4c7878:	00621026 	xor	v0,v1,v0
  4c787c:	304200ff 	andi	v0,v0,0xff
  4c7880:	00021080 	sll	v0,v0,0x2
  4c7884:	24420400 	addiu	v0,v0,1024
  4c7888:	8f81804c 	lw	at,-32692(gp)
  4c788c:	00000000 	nop
  4c7890:	24215a90 	addiu	at,at,23184
  4c7894:	00221021 	addu	v0,at,v0
  4c7898:	8c830000 	lw	v1,0(a0)
  4c789c:	8c420000 	lw	v0,0(v0)
  4c78a0:	00000000 	nop
  4c78a4:	00622026 	xor	a0,v1,v0
  4c78a8:	8fc2003c 	lw	v0,60(s8)
  4c78ac:	00000000 	nop
  4c78b0:	2442000a 	addiu	v0,v0,10
  4c78b4:	90420000 	lbu	v0,0(v0)
  4c78b8:	00000000 	nop
  4c78bc:	384200b3 	xori	v0,v0,0xb3
  4c78c0:	304200ff 	andi	v0,v0,0xff
  4c78c4:	8f83804c 	lw	v1,-32692(gp)
  4c78c8:	00000000 	nop
  4c78cc:	24635990 	addiu	v1,v1,22928
  4c78d0:	00621821 	addu	v1,v1,v0
  4c78d4:	8fc2003c 	lw	v0,60(s8)
  4c78d8:	00000000 	nop
  4c78dc:	24420002 	addiu	v0,v0,2
  4c78e0:	90630000 	lbu	v1,0(v1)
  4c78e4:	90420000 	lbu	v0,0(v0)
  4c78e8:	00000000 	nop
  4c78ec:	00621026 	xor	v0,v1,v0
  4c78f0:	304200ff 	andi	v0,v0,0xff
  4c78f4:	00021080 	sll	v0,v0,0x2
  4c78f8:	24420800 	addiu	v0,v0,2048
  4c78fc:	8f81804c 	lw	at,-32692(gp)
  4c7900:	00000000 	nop
  4c7904:	24215a90 	addiu	at,at,23184
  4c7908:	00221021 	addu	v0,at,v0
  4c790c:	8c420000 	lw	v0,0(v0)
  4c7910:	00000000 	nop
  4c7914:	00822026 	xor	a0,a0,v0
  4c7918:	8fc2003c 	lw	v0,60(s8)
  4c791c:	00000000 	nop
  4c7920:	2442000b 	addiu	v0,v0,11
  4c7924:	90420000 	lbu	v0,0(v0)
  4c7928:	00000000 	nop
  4c792c:	384200c6 	xori	v0,v0,0xc6
  4c7930:	304200ff 	andi	v0,v0,0xff
  4c7934:	8f83804c 	lw	v1,-32692(gp)
  4c7938:	00000000 	nop
  4c793c:	24635990 	addiu	v1,v1,22928
  4c7940:	00621821 	addu	v1,v1,v0
  4c7944:	8fc2003c 	lw	v0,60(s8)
  4c7948:	00000000 	nop
  4c794c:	24420003 	addiu	v0,v0,3
  4c7950:	90630000 	lbu	v1,0(v1)
  4c7954:	90420000 	lbu	v0,0(v0)
  4c7958:	00000000 	nop
  4c795c:	00621026 	xor	v0,v1,v0
  4c7960:	304200ff 	andi	v0,v0,0xff
  4c7964:	00021080 	sll	v0,v0,0x2
  4c7968:	24420c00 	addiu	v0,v0,3072
  4c796c:	8f81804c 	lw	at,-32692(gp)
  4c7970:	00000000 	nop
  4c7974:	24215a90 	addiu	at,at,23184
  4c7978:	00221021 	addu	v0,at,v0
  4c797c:	8c420000 	lw	v0,0(v0)
  4c7980:	00000000 	nop
  4c7984:	00821026 	xor	v0,a0,v0
  4c7988:	afc20014 	sw	v0,20(s8)
  4c798c:	8fc2003c 	lw	v0,60(s8)
  4c7990:	00000000 	nop
  4c7994:	2442000c 	addiu	v0,v0,12
  4c7998:	90420000 	lbu	v0,0(v0)
  4c799c:	00000000 	nop
  4c79a0:	384200e8 	xori	v0,v0,0xe8
  4c79a4:	304200ff 	andi	v0,v0,0xff
  4c79a8:	8f83804c 	lw	v1,-32692(gp)
  4c79ac:	00000000 	nop
  4c79b0:	24635890 	addiu	v1,v1,22672
  4c79b4:	00621821 	addu	v1,v1,v0
  4c79b8:	8fc2003c 	lw	v0,60(s8)
  4c79bc:	00000000 	nop
  4c79c0:	24420004 	addiu	v0,v0,4
  4c79c4:	90630000 	lbu	v1,0(v1)
  4c79c8:	90420000 	lbu	v0,0(v0)
  4c79cc:	00000000 	nop
  4c79d0:	00621026 	xor	v0,v1,v0
  4c79d4:	304200ff 	andi	v0,v0,0xff
  4c79d8:	00021080 	sll	v0,v0,0x2
  4c79dc:	8f84804c 	lw	a0,-32692(gp)
  4c79e0:	00000000 	nop
  4c79e4:	24845a90 	addiu	a0,a0,23184
  4c79e8:	00822021 	addu	a0,a0,v0
  4c79ec:	8fc2003c 	lw	v0,60(s8)
  4c79f0:	00000000 	nop
  4c79f4:	2442000d 	addiu	v0,v0,13
  4c79f8:	90420000 	lbu	v0,0(v0)
  4c79fc:	00000000 	nop
  4c7a00:	384200f4 	xori	v0,v0,0xf4
  4c7a04:	304200ff 	andi	v0,v0,0xff
  4c7a08:	8f83804c 	lw	v1,-32692(gp)
  4c7a0c:	00000000 	nop
  4c7a10:	24635890 	addiu	v1,v1,22672
  4c7a14:	00621821 	addu	v1,v1,v0
  4c7a18:	8fc2003c 	lw	v0,60(s8)
  4c7a1c:	00000000 	nop
  4c7a20:	24420005 	addiu	v0,v0,5
  4c7a24:	90630000 	lbu	v1,0(v1)
  4c7a28:	90420000 	lbu	v0,0(v0)
  4c7a2c:	00000000 	nop
  4c7a30:	00621026 	xor	v0,v1,v0
  4c7a34:	304200ff 	andi	v0,v0,0xff
  4c7a38:	00021080 	sll	v0,v0,0x2
  4c7a3c:	24420400 	addiu	v0,v0,1024
  4c7a40:	8f81804c 	lw	at,-32692(gp)
  4c7a44:	00000000 	nop
  4c7a48:	24215a90 	addiu	at,at,23184
  4c7a4c:	00221021 	addu	v0,at,v0
  4c7a50:	8c830000 	lw	v1,0(a0)
  4c7a54:	8c420000 	lw	v0,0(v0)
  4c7a58:	00000000 	nop
  4c7a5c:	00622026 	xor	a0,v1,v0
  4c7a60:	8fc2003c 	lw	v0,60(s8)
  4c7a64:	00000000 	nop
  4c7a68:	2442000e 	addiu	v0,v0,14
  4c7a6c:	90420000 	lbu	v0,0(v0)
  4c7a70:	00000000 	nop
  4c7a74:	384200e8 	xori	v0,v0,0xe8
  4c7a78:	304200ff 	andi	v0,v0,0xff
  4c7a7c:	8f83804c 	lw	v1,-32692(gp)
  4c7a80:	00000000 	nop
  4c7a84:	24635990 	addiu	v1,v1,22928
  4c7a88:	00621821 	addu	v1,v1,v0
  4c7a8c:	8fc2003c 	lw	v0,60(s8)
  4c7a90:	00000000 	nop
  4c7a94:	24420006 	addiu	v0,v0,6
  4c7a98:	90630000 	lbu	v1,0(v1)
  4c7a9c:	90420000 	lbu	v0,0(v0)
  4c7aa0:	00000000 	nop
  4c7aa4:	00621026 	xor	v0,v1,v0
  4c7aa8:	304200ff 	andi	v0,v0,0xff
  4c7aac:	00021080 	sll	v0,v0,0x2
  4c7ab0:	24420800 	addiu	v0,v0,2048
  4c7ab4:	8f81804c 	lw	at,-32692(gp)
  4c7ab8:	00000000 	nop
  4c7abc:	24215a90 	addiu	at,at,23184
  4c7ac0:	00221021 	addu	v0,at,v0
  4c7ac4:	8c420000 	lw	v0,0(v0)
  4c7ac8:	00000000 	nop
  4c7acc:	00822026 	xor	a0,a0,v0
  4c7ad0:	8fc2003c 	lw	v0,60(s8)
  4c7ad4:	00000000 	nop
  4c7ad8:	2442000f 	addiu	v0,v0,15
  4c7adc:	90420000 	lbu	v0,0(v0)
  4c7ae0:	00000000 	nop
  4c7ae4:	384200f4 	xori	v0,v0,0xf4
  4c7ae8:	304200ff 	andi	v0,v0,0xff
  4c7aec:	8f83804c 	lw	v1,-32692(gp)
  4c7af0:	00000000 	nop
  4c7af4:	24635990 	addiu	v1,v1,22928
  4c7af8:	00621821 	addu	v1,v1,v0
  4c7afc:	8fc2003c 	lw	v0,60(s8)
  4c7b00:	00000000 	nop
  4c7b04:	24420007 	addiu	v0,v0,7
  4c7b08:	90630000 	lbu	v1,0(v1)
  4c7b0c:	90420000 	lbu	v0,0(v0)
  4c7b10:	00000000 	nop
  4c7b14:	00621026 	xor	v0,v1,v0
  4c7b18:	304200ff 	andi	v0,v0,0xff
  4c7b1c:	00021080 	sll	v0,v0,0x2
  4c7b20:	24420c00 	addiu	v0,v0,3072
  4c7b24:	8f81804c 	lw	at,-32692(gp)
  4c7b28:	00000000 	nop
  4c7b2c:	24215a90 	addiu	at,at,23184
  4c7b30:	00221021 	addu	v0,at,v0
  4c7b34:	8c420000 	lw	v0,0(v0)
  4c7b38:	00000000 	nop
  4c7b3c:	00821026 	xor	v0,a0,v0
  4c7b40:	afc20018 	sw	v0,24(s8)
  4c7b44:	8fc20018 	lw	v0,24(s8)
  4c7b48:	00000000 	nop
  4c7b4c:	00021a00 	sll	v1,v0,0x8
  4c7b50:	00021602 	srl	v0,v0,0x18
  4c7b54:	00621025 	or	v0,v1,v0
  4c7b58:	afc20018 	sw	v0,24(s8)
  4c7b5c:	8fc30014 	lw	v1,20(s8)
  4c7b60:	8fc20018 	lw	v0,24(s8)
  4c7b64:	00000000 	nop
  4c7b68:	00621021 	addu	v0,v1,v0
  4c7b6c:	afc20014 	sw	v0,20(s8)
  4c7b70:	8fc30018 	lw	v1,24(s8)
  4c7b74:	8fc20014 	lw	v0,20(s8)
  4c7b78:	00000000 	nop
  4c7b7c:	00621021 	addu	v0,v1,v0
  4c7b80:	afc20018 	sw	v0,24(s8)
  4c7b84:	8fc30014 	lw	v1,20(s8)
  4c7b88:	8fc20038 	lw	v0,56(s8)
  4c7b8c:	00000000 	nop
  4c7b90:	ac431008 	sw	v1,4104(v0)
  4c7b94:	8fc20018 	lw	v0,24(s8)
  4c7b98:	00000000 	nop
  4c7b9c:	00021a40 	sll	v1,v0,0x9
  4c7ba0:	000215c2 	srl	v0,v0,0x17
  4c7ba4:	00621825 	or	v1,v1,v0
  4c7ba8:	8fc20038 	lw	v0,56(s8)
  4c7bac:	00000000 	nop
  4c7bb0:	ac43100c 	sw	v1,4108(v0)
		CALC_K (w, 4, 0x04, 0xDB, 0xFD, 0x7B);
  4c7bb4:	8fc2003c 	lw	v0,60(s8)
  4c7bb8:	00000000 	nop
  4c7bbc:	24420008 	addiu	v0,v0,8
  4c7bc0:	90420000 	lbu	v0,0(v0)
  4c7bc4:	00000000 	nop
  4c7bc8:	38420004 	xori	v0,v0,0x4
  4c7bcc:	304200ff 	andi	v0,v0,0xff
  4c7bd0:	8f81804c 	lw	at,-32692(gp)
  4c7bd4:	00000000 	nop
  4c7bd8:	24215890 	addiu	at,at,22672
  4c7bdc:	00221021 	addu	v0,at,v0
  4c7be0:	90430000 	lbu	v1,0(v0)
  4c7be4:	8fc2003c 	lw	v0,60(s8)
  4c7be8:	00000000 	nop
  4c7bec:	90420000 	lbu	v0,0(v0)
  4c7bf0:	00000000 	nop
  4c7bf4:	00621026 	xor	v0,v1,v0
  4c7bf8:	304200ff 	andi	v0,v0,0xff
  4c7bfc:	00021080 	sll	v0,v0,0x2
  4c7c00:	8f84804c 	lw	a0,-32692(gp)
  4c7c04:	00000000 	nop
  4c7c08:	24845a90 	addiu	a0,a0,23184
  4c7c0c:	00822021 	addu	a0,a0,v0
  4c7c10:	8fc2003c 	lw	v0,60(s8)
  4c7c14:	00000000 	nop
  4c7c18:	24420009 	addiu	v0,v0,9
  4c7c1c:	90420000 	lbu	v0,0(v0)
  4c7c20:	00000000 	nop
  4c7c24:	384200db 	xori	v0,v0,0xdb
  4c7c28:	304200ff 	andi	v0,v0,0xff
  4c7c2c:	8f83804c 	lw	v1,-32692(gp)
  4c7c30:	00000000 	nop
  4c7c34:	24635890 	addiu	v1,v1,22672
  4c7c38:	00621821 	addu	v1,v1,v0
  4c7c3c:	8fc2003c 	lw	v0,60(s8)
  4c7c40:	00000000 	nop
  4c7c44:	24420001 	addiu	v0,v0,1
  4c7c48:	90630000 	lbu	v1,0(v1)
  4c7c4c:	90420000 	lbu	v0,0(v0)
  4c7c50:	00000000 	nop
  4c7c54:	00621026 	xor	v0,v1,v0
  4c7c58:	304200ff 	andi	v0,v0,0xff
  4c7c5c:	00021080 	sll	v0,v0,0x2
  4c7c60:	24420400 	addiu	v0,v0,1024
  4c7c64:	8f81804c 	lw	at,-32692(gp)
  4c7c68:	00000000 	nop
  4c7c6c:	24215a90 	addiu	at,at,23184
  4c7c70:	00221021 	addu	v0,at,v0
  4c7c74:	8c830000 	lw	v1,0(a0)
  4c7c78:	8c420000 	lw	v0,0(v0)
  4c7c7c:	00000000 	nop
  4c7c80:	00622026 	xor	a0,v1,v0
  4c7c84:	8fc2003c 	lw	v0,60(s8)
  4c7c88:	00000000 	nop
  4c7c8c:	2442000a 	addiu	v0,v0,10
  4c7c90:	90420000 	lbu	v0,0(v0)
  4c7c94:	00000000 	nop
  4c7c98:	38420004 	xori	v0,v0,0x4
  4c7c9c:	304200ff 	andi	v0,v0,0xff
  4c7ca0:	8f83804c 	lw	v1,-32692(gp)
  4c7ca4:	00000000 	nop
  4c7ca8:	24635990 	addiu	v1,v1,22928
  4c7cac:	00621821 	addu	v1,v1,v0
  4c7cb0:	8fc2003c 	lw	v0,60(s8)
  4c7cb4:	00000000 	nop
  4c7cb8:	24420002 	addiu	v0,v0,2
  4c7cbc:	90630000 	lbu	v1,0(v1)
  4c7cc0:	90420000 	lbu	v0,0(v0)
  4c7cc4:	00000000 	nop
  4c7cc8:	00621026 	xor	v0,v1,v0
  4c7ccc:	304200ff 	andi	v0,v0,0xff
  4c7cd0:	00021080 	sll	v0,v0,0x2
  4c7cd4:	24420800 	addiu	v0,v0,2048
  4c7cd8:	8f81804c 	lw	at,-32692(gp)
  4c7cdc:	00000000 	nop
  4c7ce0:	24215a90 	addiu	at,at,23184
  4c7ce4:	00221021 	addu	v0,at,v0
  4c7ce8:	8c420000 	lw	v0,0(v0)
  4c7cec:	00000000 	nop
  4c7cf0:	00822026 	xor	a0,a0,v0
  4c7cf4:	8fc2003c 	lw	v0,60(s8)
  4c7cf8:	00000000 	nop
  4c7cfc:	2442000b 	addiu	v0,v0,11
  4c7d00:	90420000 	lbu	v0,0(v0)
  4c7d04:	00000000 	nop
  4c7d08:	384200db 	xori	v0,v0,0xdb
  4c7d0c:	304200ff 	andi	v0,v0,0xff
  4c7d10:	8f83804c 	lw	v1,-32692(gp)
  4c7d14:	00000000 	nop
  4c7d18:	24635990 	addiu	v1,v1,22928
  4c7d1c:	00621821 	addu	v1,v1,v0
  4c7d20:	8fc2003c 	lw	v0,60(s8)
  4c7d24:	00000000 	nop
  4c7d28:	24420003 	addiu	v0,v0,3
  4c7d2c:	90630000 	lbu	v1,0(v1)
  4c7d30:	90420000 	lbu	v0,0(v0)
  4c7d34:	00000000 	nop
  4c7d38:	00621026 	xor	v0,v1,v0
  4c7d3c:	304200ff 	andi	v0,v0,0xff
  4c7d40:	00021080 	sll	v0,v0,0x2
  4c7d44:	24420c00 	addiu	v0,v0,3072
  4c7d48:	8f81804c 	lw	at,-32692(gp)
  4c7d4c:	00000000 	nop
  4c7d50:	24215a90 	addiu	at,at,23184
  4c7d54:	00221021 	addu	v0,at,v0
  4c7d58:	8c420000 	lw	v0,0(v0)
  4c7d5c:	00000000 	nop
  4c7d60:	00821026 	xor	v0,a0,v0
  4c7d64:	afc20014 	sw	v0,20(s8)
  4c7d68:	8fc2003c 	lw	v0,60(s8)
  4c7d6c:	00000000 	nop
  4c7d70:	2442000c 	addiu	v0,v0,12
  4c7d74:	90420000 	lbu	v0,0(v0)
  4c7d78:	00000000 	nop
  4c7d7c:	384200fd 	xori	v0,v0,0xfd
  4c7d80:	304200ff 	andi	v0,v0,0xff
  4c7d84:	8f83804c 	lw	v1,-32692(gp)
  4c7d88:	00000000 	nop
  4c7d8c:	24635890 	addiu	v1,v1,22672
  4c7d90:	00621821 	addu	v1,v1,v0
  4c7d94:	8fc2003c 	lw	v0,60(s8)
  4c7d98:	00000000 	nop
  4c7d9c:	24420004 	addiu	v0,v0,4
  4c7da0:	90630000 	lbu	v1,0(v1)
  4c7da4:	90420000 	lbu	v0,0(v0)
  4c7da8:	00000000 	nop
  4c7dac:	00621026 	xor	v0,v1,v0
  4c7db0:	304200ff 	andi	v0,v0,0xff
  4c7db4:	00021080 	sll	v0,v0,0x2
  4c7db8:	8f84804c 	lw	a0,-32692(gp)
  4c7dbc:	00000000 	nop
  4c7dc0:	24845a90 	addiu	a0,a0,23184
  4c7dc4:	00822021 	addu	a0,a0,v0
  4c7dc8:	8fc2003c 	lw	v0,60(s8)
  4c7dcc:	00000000 	nop
  4c7dd0:	2442000d 	addiu	v0,v0,13
  4c7dd4:	90420000 	lbu	v0,0(v0)
  4c7dd8:	00000000 	nop
  4c7ddc:	3842007b 	xori	v0,v0,0x7b
  4c7de0:	304200ff 	andi	v0,v0,0xff
  4c7de4:	8f83804c 	lw	v1,-32692(gp)
  4c7de8:	00000000 	nop
  4c7dec:	24635890 	addiu	v1,v1,22672
  4c7df0:	00621821 	addu	v1,v1,v0
  4c7df4:	8fc2003c 	lw	v0,60(s8)
  4c7df8:	00000000 	nop
  4c7dfc:	24420005 	addiu	v0,v0,5
  4c7e00:	90630000 	lbu	v1,0(v1)
  4c7e04:	90420000 	lbu	v0,0(v0)
  4c7e08:	00000000 	nop
  4c7e0c:	00621026 	xor	v0,v1,v0
  4c7e10:	304200ff 	andi	v0,v0,0xff
  4c7e14:	00021080 	sll	v0,v0,0x2
  4c7e18:	24420400 	addiu	v0,v0,1024
  4c7e1c:	8f81804c 	lw	at,-32692(gp)
  4c7e20:	00000000 	nop
  4c7e24:	24215a90 	addiu	at,at,23184
  4c7e28:	00221021 	addu	v0,at,v0
  4c7e2c:	8c830000 	lw	v1,0(a0)
  4c7e30:	8c420000 	lw	v0,0(v0)
  4c7e34:	00000000 	nop
  4c7e38:	00622026 	xor	a0,v1,v0
  4c7e3c:	8fc2003c 	lw	v0,60(s8)
  4c7e40:	00000000 	nop
  4c7e44:	2442000e 	addiu	v0,v0,14
  4c7e48:	90420000 	lbu	v0,0(v0)
  4c7e4c:	00000000 	nop
  4c7e50:	384200fd 	xori	v0,v0,0xfd
  4c7e54:	304200ff 	andi	v0,v0,0xff
  4c7e58:	8f83804c 	lw	v1,-32692(gp)
  4c7e5c:	00000000 	nop
  4c7e60:	24635990 	addiu	v1,v1,22928
  4c7e64:	00621821 	addu	v1,v1,v0
  4c7e68:	8fc2003c 	lw	v0,60(s8)
  4c7e6c:	00000000 	nop
  4c7e70:	24420006 	addiu	v0,v0,6
  4c7e74:	90630000 	lbu	v1,0(v1)
  4c7e78:	90420000 	lbu	v0,0(v0)
  4c7e7c:	00000000 	nop
  4c7e80:	00621026 	xor	v0,v1,v0
  4c7e84:	304200ff 	andi	v0,v0,0xff
  4c7e88:	00021080 	sll	v0,v0,0x2
  4c7e8c:	24420800 	addiu	v0,v0,2048
  4c7e90:	8f81804c 	lw	at,-32692(gp)
  4c7e94:	00000000 	nop
  4c7e98:	24215a90 	addiu	at,at,23184
  4c7e9c:	00221021 	addu	v0,at,v0
  4c7ea0:	8c420000 	lw	v0,0(v0)
  4c7ea4:	00000000 	nop
  4c7ea8:	00822026 	xor	a0,a0,v0
  4c7eac:	8fc2003c 	lw	v0,60(s8)
  4c7eb0:	00000000 	nop
  4c7eb4:	2442000f 	addiu	v0,v0,15
  4c7eb8:	90420000 	lbu	v0,0(v0)
  4c7ebc:	00000000 	nop
  4c7ec0:	3842007b 	xori	v0,v0,0x7b
  4c7ec4:	304200ff 	andi	v0,v0,0xff
  4c7ec8:	8f83804c 	lw	v1,-32692(gp)
  4c7ecc:	00000000 	nop
  4c7ed0:	24635990 	addiu	v1,v1,22928
  4c7ed4:	00621821 	addu	v1,v1,v0
  4c7ed8:	8fc2003c 	lw	v0,60(s8)
  4c7edc:	00000000 	nop
  4c7ee0:	24420007 	addiu	v0,v0,7
  4c7ee4:	90630000 	lbu	v1,0(v1)
  4c7ee8:	90420000 	lbu	v0,0(v0)
  4c7eec:	00000000 	nop
  4c7ef0:	00621026 	xor	v0,v1,v0
  4c7ef4:	304200ff 	andi	v0,v0,0xff
  4c7ef8:	00021080 	sll	v0,v0,0x2
  4c7efc:	24420c00 	addiu	v0,v0,3072
  4c7f00:	8f81804c 	lw	at,-32692(gp)
  4c7f04:	00000000 	nop
  4c7f08:	24215a90 	addiu	at,at,23184
  4c7f0c:	00221021 	addu	v0,at,v0
  4c7f10:	8c420000 	lw	v0,0(v0)
  4c7f14:	00000000 	nop
  4c7f18:	00821026 	xor	v0,a0,v0
  4c7f1c:	afc20018 	sw	v0,24(s8)
  4c7f20:	8fc20018 	lw	v0,24(s8)
  4c7f24:	00000000 	nop
  4c7f28:	00021a00 	sll	v1,v0,0x8
  4c7f2c:	00021602 	srl	v0,v0,0x18
  4c7f30:	00621025 	or	v0,v1,v0
  4c7f34:	afc20018 	sw	v0,24(s8)
  4c7f38:	8fc30014 	lw	v1,20(s8)
  4c7f3c:	8fc20018 	lw	v0,24(s8)
  4c7f40:	00000000 	nop
  4c7f44:	00621021 	addu	v0,v1,v0
  4c7f48:	afc20014 	sw	v0,20(s8)
  4c7f4c:	8fc30018 	lw	v1,24(s8)
  4c7f50:	8fc20014 	lw	v0,20(s8)
  4c7f54:	00000000 	nop
  4c7f58:	00621021 	addu	v0,v1,v0
  4c7f5c:	afc20018 	sw	v0,24(s8)
  4c7f60:	8fc30014 	lw	v1,20(s8)
  4c7f64:	8fc20038 	lw	v0,56(s8)
  4c7f68:	00000000 	nop
  4c7f6c:	ac431010 	sw	v1,4112(v0)
  4c7f70:	8fc20018 	lw	v0,24(s8)
  4c7f74:	00000000 	nop
  4c7f78:	00021a40 	sll	v1,v0,0x9
  4c7f7c:	000215c2 	srl	v0,v0,0x17
  4c7f80:	00621825 	or	v1,v1,v0
  4c7f84:	8fc20038 	lw	v0,56(s8)
  4c7f88:	00000000 	nop
  4c7f8c:	ac431014 	sw	v1,4116(v0)
		CALC_K (w, 6, 0xA3, 0xFB, 0x76, 0xC8);
  4c7f90:	8fc2003c 	lw	v0,60(s8)
  4c7f94:	00000000 	nop
  4c7f98:	24420008 	addiu	v0,v0,8
  4c7f9c:	90420000 	lbu	v0,0(v0)
  4c7fa0:	00000000 	nop
  4c7fa4:	384200a3 	xori	v0,v0,0xa3
  4c7fa8:	304200ff 	andi	v0,v0,0xff
  4c7fac:	8f81804c 	lw	at,-32692(gp)
  4c7fb0:	00000000 	nop
  4c7fb4:	24215890 	addiu	at,at,22672
  4c7fb8:	00221021 	addu	v0,at,v0
  4c7fbc:	90430000 	lbu	v1,0(v0)
  4c7fc0:	8fc2003c 	lw	v0,60(s8)
  4c7fc4:	00000000 	nop
  4c7fc8:	90420000 	lbu	v0,0(v0)
  4c7fcc:	00000000 	nop
  4c7fd0:	00621026 	xor	v0,v1,v0
  4c7fd4:	304200ff 	andi	v0,v0,0xff
  4c7fd8:	00021080 	sll	v0,v0,0x2
  4c7fdc:	8f84804c 	lw	a0,-32692(gp)
  4c7fe0:	00000000 	nop
  4c7fe4:	24845a90 	addiu	a0,a0,23184
  4c7fe8:	00822021 	addu	a0,a0,v0
  4c7fec:	8fc2003c 	lw	v0,60(s8)
  4c7ff0:	00000000 	nop
  4c7ff4:	24420009 	addiu	v0,v0,9
  4c7ff8:	90420000 	lbu	v0,0(v0)
  4c7ffc:	00000000 	nop
  4c8000:	384200fb 	xori	v0,v0,0xfb
  4c8004:	304200ff 	andi	v0,v0,0xff
  4c8008:	8f83804c 	lw	v1,-32692(gp)
  4c800c:	00000000 	nop
  4c8010:	24635890 	addiu	v1,v1,22672
  4c8014:	00621821 	addu	v1,v1,v0
  4c8018:	8fc2003c 	lw	v0,60(s8)
  4c801c:	00000000 	nop
  4c8020:	24420001 	addiu	v0,v0,1
  4c8024:	90630000 	lbu	v1,0(v1)
  4c8028:	90420000 	lbu	v0,0(v0)
  4c802c:	00000000 	nop
  4c8030:	00621026 	xor	v0,v1,v0
  4c8034:	304200ff 	andi	v0,v0,0xff
  4c8038:	00021080 	sll	v0,v0,0x2
  4c803c:	24420400 	addiu	v0,v0,1024
  4c8040:	8f81804c 	lw	at,-32692(gp)
  4c8044:	00000000 	nop
  4c8048:	24215a90 	addiu	at,at,23184
  4c804c:	00221021 	addu	v0,at,v0
  4c8050:	8c830000 	lw	v1,0(a0)
  4c8054:	8c420000 	lw	v0,0(v0)
  4c8058:	00000000 	nop
  4c805c:	00622026 	xor	a0,v1,v0
  4c8060:	8fc2003c 	lw	v0,60(s8)
  4c8064:	00000000 	nop
  4c8068:	2442000a 	addiu	v0,v0,10
  4c806c:	90420000 	lbu	v0,0(v0)
  4c8070:	00000000 	nop
  4c8074:	384200a3 	xori	v0,v0,0xa3
  4c8078:	304200ff 	andi	v0,v0,0xff
  4c807c:	8f83804c 	lw	v1,-32692(gp)
  4c8080:	00000000 	nop
  4c8084:	24635990 	addiu	v1,v1,22928
  4c8088:	00621821 	addu	v1,v1,v0
  4c808c:	8fc2003c 	lw	v0,60(s8)
  4c8090:	00000000 	nop
  4c8094:	24420002 	addiu	v0,v0,2
  4c8098:	90630000 	lbu	v1,0(v1)
  4c809c:	90420000 	lbu	v0,0(v0)
  4c80a0:	00000000 	nop
  4c80a4:	00621026 	xor	v0,v1,v0
  4c80a8:	304200ff 	andi	v0,v0,0xff
  4c80ac:	00021080 	sll	v0,v0,0x2
  4c80b0:	24420800 	addiu	v0,v0,2048
  4c80b4:	8f81804c 	lw	at,-32692(gp)
  4c80b8:	00000000 	nop
  4c80bc:	24215a90 	addiu	at,at,23184
  4c80c0:	00221021 	addu	v0,at,v0
  4c80c4:	8c420000 	lw	v0,0(v0)
  4c80c8:	00000000 	nop
  4c80cc:	00822026 	xor	a0,a0,v0
  4c80d0:	8fc2003c 	lw	v0,60(s8)
  4c80d4:	00000000 	nop
  4c80d8:	2442000b 	addiu	v0,v0,11
  4c80dc:	90420000 	lbu	v0,0(v0)
  4c80e0:	00000000 	nop
  4c80e4:	384200fb 	xori	v0,v0,0xfb
  4c80e8:	304200ff 	andi	v0,v0,0xff
  4c80ec:	8f83804c 	lw	v1,-32692(gp)
  4c80f0:	00000000 	nop
  4c80f4:	24635990 	addiu	v1,v1,22928
  4c80f8:	00621821 	addu	v1,v1,v0
  4c80fc:	8fc2003c 	lw	v0,60(s8)
  4c8100:	00000000 	nop
  4c8104:	24420003 	addiu	v0,v0,3
  4c8108:	90630000 	lbu	v1,0(v1)
  4c810c:	90420000 	lbu	v0,0(v0)
  4c8110:	00000000 	nop
  4c8114:	00621026 	xor	v0,v1,v0
  4c8118:	304200ff 	andi	v0,v0,0xff
  4c811c:	00021080 	sll	v0,v0,0x2
  4c8120:	24420c00 	addiu	v0,v0,3072
  4c8124:	8f81804c 	lw	at,-32692(gp)
  4c8128:	00000000 	nop
  4c812c:	24215a90 	addiu	at,at,23184
  4c8130:	00221021 	addu	v0,at,v0
  4c8134:	8c420000 	lw	v0,0(v0)
  4c8138:	00000000 	nop
  4c813c:	00821026 	xor	v0,a0,v0
  4c8140:	afc20014 	sw	v0,20(s8)
  4c8144:	8fc2003c 	lw	v0,60(s8)
  4c8148:	00000000 	nop
  4c814c:	2442000c 	addiu	v0,v0,12
  4c8150:	90420000 	lbu	v0,0(v0)
  4c8154:	00000000 	nop
  4c8158:	38420076 	xori	v0,v0,0x76
  4c815c:	304200ff 	andi	v0,v0,0xff
  4c8160:	8f83804c 	lw	v1,-32692(gp)
  4c8164:	00000000 	nop
  4c8168:	24635890 	addiu	v1,v1,22672
  4c816c:	00621821 	addu	v1,v1,v0
  4c8170:	8fc2003c 	lw	v0,60(s8)
  4c8174:	00000000 	nop
  4c8178:	24420004 	addiu	v0,v0,4
  4c817c:	90630000 	lbu	v1,0(v1)
  4c8180:	90420000 	lbu	v0,0(v0)
  4c8184:	00000000 	nop
  4c8188:	00621026 	xor	v0,v1,v0
  4c818c:	304200ff 	andi	v0,v0,0xff
  4c8190:	00021080 	sll	v0,v0,0x2
  4c8194:	8f84804c 	lw	a0,-32692(gp)
  4c8198:	00000000 	nop
  4c819c:	24845a90 	addiu	a0,a0,23184
  4c81a0:	00822021 	addu	a0,a0,v0
  4c81a4:	8fc2003c 	lw	v0,60(s8)
  4c81a8:	00000000 	nop
  4c81ac:	2442000d 	addiu	v0,v0,13
  4c81b0:	90420000 	lbu	v0,0(v0)
  4c81b4:	00000000 	nop
  4c81b8:	384200c8 	xori	v0,v0,0xc8
  4c81bc:	304200ff 	andi	v0,v0,0xff
  4c81c0:	8f83804c 	lw	v1,-32692(gp)
  4c81c4:	00000000 	nop
  4c81c8:	24635890 	addiu	v1,v1,22672
  4c81cc:	00621821 	addu	v1,v1,v0
  4c81d0:	8fc2003c 	lw	v0,60(s8)
  4c81d4:	00000000 	nop
  4c81d8:	24420005 	addiu	v0,v0,5
  4c81dc:	90630000 	lbu	v1,0(v1)
  4c81e0:	90420000 	lbu	v0,0(v0)
  4c81e4:	00000000 	nop
  4c81e8:	00621026 	xor	v0,v1,v0
  4c81ec:	304200ff 	andi	v0,v0,0xff
  4c81f0:	00021080 	sll	v0,v0,0x2
  4c81f4:	24420400 	addiu	v0,v0,1024
  4c81f8:	8f81804c 	lw	at,-32692(gp)
  4c81fc:	00000000 	nop
  4c8200:	24215a90 	addiu	at,at,23184
  4c8204:	00221021 	addu	v0,at,v0
  4c8208:	8c830000 	lw	v1,0(a0)
  4c820c:	8c420000 	lw	v0,0(v0)
  4c8210:	00000000 	nop
  4c8214:	00622026 	xor	a0,v1,v0
  4c8218:	8fc2003c 	lw	v0,60(s8)
  4c821c:	00000000 	nop
  4c8220:	2442000e 	addiu	v0,v0,14
  4c8224:	90420000 	lbu	v0,0(v0)
  4c8228:	00000000 	nop
  4c822c:	38420076 	xori	v0,v0,0x76
  4c8230:	304200ff 	andi	v0,v0,0xff
  4c8234:	8f83804c 	lw	v1,-32692(gp)
  4c8238:	00000000 	nop
  4c823c:	24635990 	addiu	v1,v1,22928
  4c8240:	00621821 	addu	v1,v1,v0
  4c8244:	8fc2003c 	lw	v0,60(s8)
  4c8248:	00000000 	nop
  4c824c:	24420006 	addiu	v0,v0,6
  4c8250:	90630000 	lbu	v1,0(v1)
  4c8254:	90420000 	lbu	v0,0(v0)
  4c8258:	00000000 	nop
  4c825c:	00621026 	xor	v0,v1,v0
  4c8260:	304200ff 	andi	v0,v0,0xff
  4c8264:	00021080 	sll	v0,v0,0x2
  4c8268:	24420800 	addiu	v0,v0,2048
  4c826c:	8f81804c 	lw	at,-32692(gp)
  4c8270:	00000000 	nop
  4c8274:	24215a90 	addiu	at,at,23184
  4c8278:	00221021 	addu	v0,at,v0
  4c827c:	8c420000 	lw	v0,0(v0)
  4c8280:	00000000 	nop
  4c8284:	00822026 	xor	a0,a0,v0
  4c8288:	8fc2003c 	lw	v0,60(s8)
  4c828c:	00000000 	nop
  4c8290:	2442000f 	addiu	v0,v0,15
  4c8294:	90420000 	lbu	v0,0(v0)
  4c8298:	00000000 	nop
  4c829c:	384200c8 	xori	v0,v0,0xc8
  4c82a0:	304200ff 	andi	v0,v0,0xff
  4c82a4:	8f83804c 	lw	v1,-32692(gp)
  4c82a8:	00000000 	nop
  4c82ac:	24635990 	addiu	v1,v1,22928
  4c82b0:	00621821 	addu	v1,v1,v0
  4c82b4:	8fc2003c 	lw	v0,60(s8)
  4c82b8:	00000000 	nop
  4c82bc:	24420007 	addiu	v0,v0,7
  4c82c0:	90630000 	lbu	v1,0(v1)
  4c82c4:	90420000 	lbu	v0,0(v0)
  4c82c8:	00000000 	nop
  4c82cc:	00621026 	xor	v0,v1,v0
  4c82d0:	304200ff 	andi	v0,v0,0xff
  4c82d4:	00021080 	sll	v0,v0,0x2
  4c82d8:	24420c00 	addiu	v0,v0,3072
  4c82dc:	8f81804c 	lw	at,-32692(gp)
  4c82e0:	00000000 	nop
  4c82e4:	24215a90 	addiu	at,at,23184
  4c82e8:	00221021 	addu	v0,at,v0
  4c82ec:	8c420000 	lw	v0,0(v0)
  4c82f0:	00000000 	nop
  4c82f4:	00821026 	xor	v0,a0,v0
  4c82f8:	afc20018 	sw	v0,24(s8)
  4c82fc:	8fc20018 	lw	v0,24(s8)
  4c8300:	00000000 	nop
  4c8304:	00021a00 	sll	v1,v0,0x8
  4c8308:	00021602 	srl	v0,v0,0x18
  4c830c:	00621025 	or	v0,v1,v0
  4c8310:	afc20018 	sw	v0,24(s8)
  4c8314:	8fc30014 	lw	v1,20(s8)
  4c8318:	8fc20018 	lw	v0,24(s8)
  4c831c:	00000000 	nop
  4c8320:	00621021 	addu	v0,v1,v0
  4c8324:	afc20014 	sw	v0,20(s8)
  4c8328:	8fc30018 	lw	v1,24(s8)
  4c832c:	8fc20014 	lw	v0,20(s8)
  4c8330:	00000000 	nop
  4c8334:	00621021 	addu	v0,v1,v0
  4c8338:	afc20018 	sw	v0,24(s8)
  4c833c:	8fc30014 	lw	v1,20(s8)
  4c8340:	8fc20038 	lw	v0,56(s8)
  4c8344:	00000000 	nop
  4c8348:	ac431018 	sw	v1,4120(v0)
  4c834c:	8fc20018 	lw	v0,24(s8)
  4c8350:	00000000 	nop
  4c8354:	00021a40 	sll	v1,v0,0x9
  4c8358:	000215c2 	srl	v0,v0,0x17
  4c835c:	00621825 	or	v1,v1,v0
  4c8360:	8fc20038 	lw	v0,56(s8)
  4c8364:	00000000 	nop
  4c8368:	ac43101c 	sw	v1,4124(v0)
		CALC_K (k, 0, 0x9A, 0x4A, 0x92, 0xD3);
  4c836c:	8fc2003c 	lw	v0,60(s8)
  4c8370:	00000000 	nop
  4c8374:	24420008 	addiu	v0,v0,8
  4c8378:	90420000 	lbu	v0,0(v0)
  4c837c:	00000000 	nop
  4c8380:	3842009a 	xori	v0,v0,0x9a
  4c8384:	304200ff 	andi	v0,v0,0xff
  4c8388:	8f81804c 	lw	at,-32692(gp)
  4c838c:	00000000 	nop
  4c8390:	24215890 	addiu	at,at,22672
  4c8394:	00221021 	addu	v0,at,v0
  4c8398:	90430000 	lbu	v1,0(v0)
  4c839c:	8fc2003c 	lw	v0,60(s8)
  4c83a0:	00000000 	nop
  4c83a4:	90420000 	lbu	v0,0(v0)
  4c83a8:	00000000 	nop
  4c83ac:	00621026 	xor	v0,v1,v0
  4c83b0:	304200ff 	andi	v0,v0,0xff
  4c83b4:	00021080 	sll	v0,v0,0x2
  4c83b8:	8f84804c 	lw	a0,-32692(gp)
  4c83bc:	00000000 	nop
  4c83c0:	24845a90 	addiu	a0,a0,23184
  4c83c4:	00822021 	addu	a0,a0,v0
  4c83c8:	8fc2003c 	lw	v0,60(s8)
  4c83cc:	00000000 	nop
  4c83d0:	24420009 	addiu	v0,v0,9
  4c83d4:	90420000 	lbu	v0,0(v0)
  4c83d8:	00000000 	nop
  4c83dc:	3842004a 	xori	v0,v0,0x4a
  4c83e0:	304200ff 	andi	v0,v0,0xff
  4c83e4:	8f83804c 	lw	v1,-32692(gp)
  4c83e8:	00000000 	nop
  4c83ec:	24635890 	addiu	v1,v1,22672
  4c83f0:	00621821 	addu	v1,v1,v0
  4c83f4:	8fc2003c 	lw	v0,60(s8)
  4c83f8:	00000000 	nop
  4c83fc:	24420001 	addiu	v0,v0,1
  4c8400:	90630000 	lbu	v1,0(v1)
  4c8404:	90420000 	lbu	v0,0(v0)
  4c8408:	00000000 	nop
  4c840c:	00621026 	xor	v0,v1,v0
  4c8410:	304200ff 	andi	v0,v0,0xff
  4c8414:	00021080 	sll	v0,v0,0x2
  4c8418:	24420400 	addiu	v0,v0,1024
  4c841c:	8f81804c 	lw	at,-32692(gp)
  4c8420:	00000000 	nop
  4c8424:	24215a90 	addiu	at,at,23184
  4c8428:	00221021 	addu	v0,at,v0
  4c842c:	8c830000 	lw	v1,0(a0)
  4c8430:	8c420000 	lw	v0,0(v0)
  4c8434:	00000000 	nop
  4c8438:	00622026 	xor	a0,v1,v0
  4c843c:	8fc2003c 	lw	v0,60(s8)
  4c8440:	00000000 	nop
  4c8444:	2442000a 	addiu	v0,v0,10
  4c8448:	90420000 	lbu	v0,0(v0)
  4c844c:	00000000 	nop
  4c8450:	3842009a 	xori	v0,v0,0x9a
  4c8454:	304200ff 	andi	v0,v0,0xff
  4c8458:	8f83804c 	lw	v1,-32692(gp)
  4c845c:	00000000 	nop
  4c8460:	24635990 	addiu	v1,v1,22928
  4c8464:	00621821 	addu	v1,v1,v0
  4c8468:	8fc2003c 	lw	v0,60(s8)
  4c846c:	00000000 	nop
  4c8470:	24420002 	addiu	v0,v0,2
  4c8474:	90630000 	lbu	v1,0(v1)
  4c8478:	90420000 	lbu	v0,0(v0)
  4c847c:	00000000 	nop
  4c8480:	00621026 	xor	v0,v1,v0
  4c8484:	304200ff 	andi	v0,v0,0xff
  4c8488:	00021080 	sll	v0,v0,0x2
  4c848c:	24420800 	addiu	v0,v0,2048
  4c8490:	8f81804c 	lw	at,-32692(gp)
  4c8494:	00000000 	nop
  4c8498:	24215a90 	addiu	at,at,23184
  4c849c:	00221021 	addu	v0,at,v0
  4c84a0:	8c420000 	lw	v0,0(v0)
  4c84a4:	00000000 	nop
  4c84a8:	00822026 	xor	a0,a0,v0
  4c84ac:	8fc2003c 	lw	v0,60(s8)
  4c84b0:	00000000 	nop
  4c84b4:	2442000b 	addiu	v0,v0,11
  4c84b8:	90420000 	lbu	v0,0(v0)
  4c84bc:	00000000 	nop
  4c84c0:	3842004a 	xori	v0,v0,0x4a
  4c84c4:	304200ff 	andi	v0,v0,0xff
  4c84c8:	8f83804c 	lw	v1,-32692(gp)
  4c84cc:	00000000 	nop
  4c84d0:	24635990 	addiu	v1,v1,22928
  4c84d4:	00621821 	addu	v1,v1,v0
  4c84d8:	8fc2003c 	lw	v0,60(s8)
  4c84dc:	00000000 	nop
  4c84e0:	24420003 	addiu	v0,v0,3
  4c84e4:	90630000 	lbu	v1,0(v1)
  4c84e8:	90420000 	lbu	v0,0(v0)
  4c84ec:	00000000 	nop
  4c84f0:	00621026 	xor	v0,v1,v0
  4c84f4:	304200ff 	andi	v0,v0,0xff
  4c84f8:	00021080 	sll	v0,v0,0x2
  4c84fc:	24420c00 	addiu	v0,v0,3072
  4c8500:	8f81804c 	lw	at,-32692(gp)
  4c8504:	00000000 	nop
  4c8508:	24215a90 	addiu	at,at,23184
  4c850c:	00221021 	addu	v0,at,v0
  4c8510:	8c420000 	lw	v0,0(v0)
  4c8514:	00000000 	nop
  4c8518:	00821026 	xor	v0,a0,v0
  4c851c:	afc20014 	sw	v0,20(s8)
  4c8520:	8fc2003c 	lw	v0,60(s8)
  4c8524:	00000000 	nop
  4c8528:	2442000c 	addiu	v0,v0,12
  4c852c:	90420000 	lbu	v0,0(v0)
  4c8530:	00000000 	nop
  4c8534:	38420092 	xori	v0,v0,0x92
  4c8538:	304200ff 	andi	v0,v0,0xff
  4c853c:	8f83804c 	lw	v1,-32692(gp)
  4c8540:	00000000 	nop
  4c8544:	24635890 	addiu	v1,v1,22672
  4c8548:	00621821 	addu	v1,v1,v0
  4c854c:	8fc2003c 	lw	v0,60(s8)
  4c8550:	00000000 	nop
  4c8554:	24420004 	addiu	v0,v0,4
  4c8558:	90630000 	lbu	v1,0(v1)
  4c855c:	90420000 	lbu	v0,0(v0)
  4c8560:	00000000 	nop
  4c8564:	00621026 	xor	v0,v1,v0
  4c8568:	304200ff 	andi	v0,v0,0xff
  4c856c:	00021080 	sll	v0,v0,0x2
  4c8570:	8f84804c 	lw	a0,-32692(gp)
  4c8574:	00000000 	nop
  4c8578:	24845a90 	addiu	a0,a0,23184
  4c857c:	00822021 	addu	a0,a0,v0
  4c8580:	8fc2003c 	lw	v0,60(s8)
  4c8584:	00000000 	nop
  4c8588:	2442000d 	addiu	v0,v0,13
  4c858c:	90420000 	lbu	v0,0(v0)
  4c8590:	00000000 	nop
  4c8594:	384200d3 	xori	v0,v0,0xd3
  4c8598:	304200ff 	andi	v0,v0,0xff
  4c859c:	8f83804c 	lw	v1,-32692(gp)
  4c85a0:	00000000 	nop
  4c85a4:	24635890 	addiu	v1,v1,22672
  4c85a8:	00621821 	addu	v1,v1,v0
  4c85ac:	8fc2003c 	lw	v0,60(s8)
  4c85b0:	00000000 	nop
  4c85b4:	24420005 	addiu	v0,v0,5
  4c85b8:	90630000 	lbu	v1,0(v1)
  4c85bc:	90420000 	lbu	v0,0(v0)
  4c85c0:	00000000 	nop
  4c85c4:	00621026 	xor	v0,v1,v0
  4c85c8:	304200ff 	andi	v0,v0,0xff
  4c85cc:	00021080 	sll	v0,v0,0x2
  4c85d0:	24420400 	addiu	v0,v0,1024
  4c85d4:	8f81804c 	lw	at,-32692(gp)
  4c85d8:	00000000 	nop
  4c85dc:	24215a90 	addiu	at,at,23184
  4c85e0:	00221021 	addu	v0,at,v0
  4c85e4:	8c830000 	lw	v1,0(a0)
  4c85e8:	8c420000 	lw	v0,0(v0)
  4c85ec:	00000000 	nop
  4c85f0:	00622026 	xor	a0,v1,v0
  4c85f4:	8fc2003c 	lw	v0,60(s8)
  4c85f8:	00000000 	nop
  4c85fc:	2442000e 	addiu	v0,v0,14
  4c8600:	90420000 	lbu	v0,0(v0)
  4c8604:	00000000 	nop
  4c8608:	38420092 	xori	v0,v0,0x92
  4c860c:	304200ff 	andi	v0,v0,0xff
  4c8610:	8f83804c 	lw	v1,-32692(gp)
  4c8614:	00000000 	nop
  4c8618:	24635990 	addiu	v1,v1,22928
  4c861c:	00621821 	addu	v1,v1,v0
  4c8620:	8fc2003c 	lw	v0,60(s8)
  4c8624:	00000000 	nop
  4c8628:	24420006 	addiu	v0,v0,6
  4c862c:	90630000 	lbu	v1,0(v1)
  4c8630:	90420000 	lbu	v0,0(v0)
  4c8634:	00000000 	nop
  4c8638:	00621026 	xor	v0,v1,v0
  4c863c:	304200ff 	andi	v0,v0,0xff
  4c8640:	00021080 	sll	v0,v0,0x2
  4c8644:	24420800 	addiu	v0,v0,2048
  4c8648:	8f81804c 	lw	at,-32692(gp)
  4c864c:	00000000 	nop
  4c8650:	24215a90 	addiu	at,at,23184
  4c8654:	00221021 	addu	v0,at,v0
  4c8658:	8c420000 	lw	v0,0(v0)
  4c865c:	00000000 	nop
  4c8660:	00822026 	xor	a0,a0,v0
  4c8664:	8fc2003c 	lw	v0,60(s8)
  4c8668:	00000000 	nop
  4c866c:	2442000f 	addiu	v0,v0,15
  4c8670:	90420000 	lbu	v0,0(v0)
  4c8674:	00000000 	nop
  4c8678:	384200d3 	xori	v0,v0,0xd3
  4c867c:	304200ff 	andi	v0,v0,0xff
  4c8680:	8f83804c 	lw	v1,-32692(gp)
  4c8684:	00000000 	nop
  4c8688:	24635990 	addiu	v1,v1,22928
  4c868c:	00621821 	addu	v1,v1,v0
  4c8690:	8fc2003c 	lw	v0,60(s8)
  4c8694:	00000000 	nop
  4c8698:	24420007 	addiu	v0,v0,7
  4c869c:	90630000 	lbu	v1,0(v1)
  4c86a0:	90420000 	lbu	v0,0(v0)
  4c86a4:	00000000 	nop
  4c86a8:	00621026 	xor	v0,v1,v0
  4c86ac:	304200ff 	andi	v0,v0,0xff
  4c86b0:	00021080 	sll	v0,v0,0x2
  4c86b4:	24420c00 	addiu	v0,v0,3072
  4c86b8:	8f81804c 	lw	at,-32692(gp)
  4c86bc:	00000000 	nop
  4c86c0:	24215a90 	addiu	at,at,23184
  4c86c4:	00221021 	addu	v0,at,v0
  4c86c8:	8c420000 	lw	v0,0(v0)
  4c86cc:	00000000 	nop
  4c86d0:	00821026 	xor	v0,a0,v0
  4c86d4:	afc20018 	sw	v0,24(s8)
  4c86d8:	8fc20018 	lw	v0,24(s8)
  4c86dc:	00000000 	nop
  4c86e0:	00021a00 	sll	v1,v0,0x8
  4c86e4:	00021602 	srl	v0,v0,0x18
  4c86e8:	00621025 	or	v0,v1,v0
  4c86ec:	afc20018 	sw	v0,24(s8)
  4c86f0:	8fc30014 	lw	v1,20(s8)
  4c86f4:	8fc20018 	lw	v0,24(s8)
  4c86f8:	00000000 	nop
  4c86fc:	00621021 	addu	v0,v1,v0
  4c8700:	afc20014 	sw	v0,20(s8)
  4c8704:	8fc30018 	lw	v1,24(s8)
  4c8708:	8fc20014 	lw	v0,20(s8)
  4c870c:	00000000 	nop
  4c8710:	00621021 	addu	v0,v1,v0
  4c8714:	afc20018 	sw	v0,24(s8)
  4c8718:	8fc30014 	lw	v1,20(s8)
  4c871c:	8fc20038 	lw	v0,56(s8)
  4c8720:	00000000 	nop
  4c8724:	ac431020 	sw	v1,4128(v0)
  4c8728:	8fc20018 	lw	v0,24(s8)
  4c872c:	00000000 	nop
  4c8730:	00021a40 	sll	v1,v0,0x9
  4c8734:	000215c2 	srl	v0,v0,0x17
  4c8738:	00621825 	or	v1,v1,v0
  4c873c:	8fc20038 	lw	v0,56(s8)
  4c8740:	00000000 	nop
  4c8744:	ac431024 	sw	v1,4132(v0)
		CALC_K (k, 2, 0x80, 0xE6, 0x78, 0x6B);
  4c8748:	8fc2003c 	lw	v0,60(s8)
  4c874c:	00000000 	nop
  4c8750:	24420008 	addiu	v0,v0,8
  4c8754:	90420000 	lbu	v0,0(v0)
  4c8758:	00000000 	nop
  4c875c:	38420080 	xori	v0,v0,0x80
  4c8760:	304200ff 	andi	v0,v0,0xff
  4c8764:	8f81804c 	lw	at,-32692(gp)
  4c8768:	00000000 	nop
  4c876c:	24215890 	addiu	at,at,22672
  4c8770:	00221021 	addu	v0,at,v0
  4c8774:	90430000 	lbu	v1,0(v0)
  4c8778:	8fc2003c 	lw	v0,60(s8)
  4c877c:	00000000 	nop
  4c8780:	90420000 	lbu	v0,0(v0)
  4c8784:	00000000 	nop
  4c8788:	00621026 	xor	v0,v1,v0
  4c878c:	304200ff 	andi	v0,v0,0xff
  4c8790:	00021080 	sll	v0,v0,0x2
  4c8794:	8f84804c 	lw	a0,-32692(gp)
  4c8798:	00000000 	nop
  4c879c:	24845a90 	addiu	a0,a0,23184
  4c87a0:	00822021 	addu	a0,a0,v0
  4c87a4:	8fc2003c 	lw	v0,60(s8)
  4c87a8:	00000000 	nop
  4c87ac:	24420009 	addiu	v0,v0,9
  4c87b0:	90420000 	lbu	v0,0(v0)
  4c87b4:	00000000 	nop
  4c87b8:	384200e6 	xori	v0,v0,0xe6
  4c87bc:	304200ff 	andi	v0,v0,0xff
  4c87c0:	8f83804c 	lw	v1,-32692(gp)
  4c87c4:	00000000 	nop
  4c87c8:	24635890 	addiu	v1,v1,22672
  4c87cc:	00621821 	addu	v1,v1,v0
  4c87d0:	8fc2003c 	lw	v0,60(s8)
  4c87d4:	00000000 	nop
  4c87d8:	24420001 	addiu	v0,v0,1
  4c87dc:	90630000 	lbu	v1,0(v1)
  4c87e0:	90420000 	lbu	v0,0(v0)
  4c87e4:	00000000 	nop
  4c87e8:	00621026 	xor	v0,v1,v0
  4c87ec:	304200ff 	andi	v0,v0,0xff
  4c87f0:	00021080 	sll	v0,v0,0x2
  4c87f4:	24420400 	addiu	v0,v0,1024
  4c87f8:	8f81804c 	lw	at,-32692(gp)
  4c87fc:	00000000 	nop
  4c8800:	24215a90 	addiu	at,at,23184
  4c8804:	00221021 	addu	v0,at,v0
  4c8808:	8c830000 	lw	v1,0(a0)
  4c880c:	8c420000 	lw	v0,0(v0)
  4c8810:	00000000 	nop
  4c8814:	00622026 	xor	a0,v1,v0
  4c8818:	8fc2003c 	lw	v0,60(s8)
  4c881c:	00000000 	nop
  4c8820:	2442000a 	addiu	v0,v0,10
  4c8824:	90420000 	lbu	v0,0(v0)
  4c8828:	00000000 	nop
  4c882c:	38420080 	xori	v0,v0,0x80
  4c8830:	304200ff 	andi	v0,v0,0xff
  4c8834:	8f83804c 	lw	v1,-32692(gp)
  4c8838:	00000000 	nop
  4c883c:	24635990 	addiu	v1,v1,22928
  4c8840:	00621821 	addu	v1,v1,v0
  4c8844:	8fc2003c 	lw	v0,60(s8)
  4c8848:	00000000 	nop
  4c884c:	24420002 	addiu	v0,v0,2
  4c8850:	90630000 	lbu	v1,0(v1)
  4c8854:	90420000 	lbu	v0,0(v0)
  4c8858:	00000000 	nop
  4c885c:	00621026 	xor	v0,v1,v0
  4c8860:	304200ff 	andi	v0,v0,0xff
  4c8864:	00021080 	sll	v0,v0,0x2
  4c8868:	24420800 	addiu	v0,v0,2048
  4c886c:	8f81804c 	lw	at,-32692(gp)
  4c8870:	00000000 	nop
  4c8874:	24215a90 	addiu	at,at,23184
  4c8878:	00221021 	addu	v0,at,v0
  4c887c:	8c420000 	lw	v0,0(v0)
  4c8880:	00000000 	nop
  4c8884:	00822026 	xor	a0,a0,v0
  4c8888:	8fc2003c 	lw	v0,60(s8)
  4c888c:	00000000 	nop
  4c8890:	2442000b 	addiu	v0,v0,11
  4c8894:	90420000 	lbu	v0,0(v0)
  4c8898:	00000000 	nop
  4c889c:	384200e6 	xori	v0,v0,0xe6
  4c88a0:	304200ff 	andi	v0,v0,0xff
  4c88a4:	8f83804c 	lw	v1,-32692(gp)
  4c88a8:	00000000 	nop
  4c88ac:	24635990 	addiu	v1,v1,22928
  4c88b0:	00621821 	addu	v1,v1,v0
  4c88b4:	8fc2003c 	lw	v0,60(s8)
  4c88b8:	00000000 	nop
  4c88bc:	24420003 	addiu	v0,v0,3
  4c88c0:	90630000 	lbu	v1,0(v1)
  4c88c4:	90420000 	lbu	v0,0(v0)
  4c88c8:	00000000 	nop
  4c88cc:	00621026 	xor	v0,v1,v0
  4c88d0:	304200ff 	andi	v0,v0,0xff
  4c88d4:	00021080 	sll	v0,v0,0x2
  4c88d8:	24420c00 	addiu	v0,v0,3072
  4c88dc:	8f81804c 	lw	at,-32692(gp)
  4c88e0:	00000000 	nop
  4c88e4:	24215a90 	addiu	at,at,23184
  4c88e8:	00221021 	addu	v0,at,v0
  4c88ec:	8c420000 	lw	v0,0(v0)
  4c88f0:	00000000 	nop
  4c88f4:	00821026 	xor	v0,a0,v0
  4c88f8:	afc20014 	sw	v0,20(s8)
  4c88fc:	8fc2003c 	lw	v0,60(s8)
  4c8900:	00000000 	nop
  4c8904:	2442000c 	addiu	v0,v0,12
  4c8908:	90420000 	lbu	v0,0(v0)
  4c890c:	00000000 	nop
  4c8910:	38420078 	xori	v0,v0,0x78
  4c8914:	304200ff 	andi	v0,v0,0xff
  4c8918:	8f83804c 	lw	v1,-32692(gp)
  4c891c:	00000000 	nop
  4c8920:	24635890 	addiu	v1,v1,22672
  4c8924:	00621821 	addu	v1,v1,v0
  4c8928:	8fc2003c 	lw	v0,60(s8)
  4c892c:	00000000 	nop
  4c8930:	24420004 	addiu	v0,v0,4
  4c8934:	90630000 	lbu	v1,0(v1)
  4c8938:	90420000 	lbu	v0,0(v0)
  4c893c:	00000000 	nop
  4c8940:	00621026 	xor	v0,v1,v0
  4c8944:	304200ff 	andi	v0,v0,0xff
  4c8948:	00021080 	sll	v0,v0,0x2
  4c894c:	8f84804c 	lw	a0,-32692(gp)
  4c8950:	00000000 	nop
  4c8954:	24845a90 	addiu	a0,a0,23184
  4c8958:	00822021 	addu	a0,a0,v0
  4c895c:	8fc2003c 	lw	v0,60(s8)
  4c8960:	00000000 	nop
  4c8964:	2442000d 	addiu	v0,v0,13
  4c8968:	90420000 	lbu	v0,0(v0)
  4c896c:	00000000 	nop
  4c8970:	3842006b 	xori	v0,v0,0x6b
  4c8974:	304200ff 	andi	v0,v0,0xff
  4c8978:	8f83804c 	lw	v1,-32692(gp)
  4c897c:	00000000 	nop
  4c8980:	24635890 	addiu	v1,v1,22672
  4c8984:	00621821 	addu	v1,v1,v0
  4c8988:	8fc2003c 	lw	v0,60(s8)
  4c898c:	00000000 	nop
  4c8990:	24420005 	addiu	v0,v0,5
  4c8994:	90630000 	lbu	v1,0(v1)
  4c8998:	90420000 	lbu	v0,0(v0)
  4c899c:	00000000 	nop
  4c89a0:	00621026 	xor	v0,v1,v0
  4c89a4:	304200ff 	andi	v0,v0,0xff
  4c89a8:	00021080 	sll	v0,v0,0x2
  4c89ac:	24420400 	addiu	v0,v0,1024
  4c89b0:	8f81804c 	lw	at,-32692(gp)
  4c89b4:	00000000 	nop
  4c89b8:	24215a90 	addiu	at,at,23184
  4c89bc:	00221021 	addu	v0,at,v0
  4c89c0:	8c830000 	lw	v1,0(a0)
  4c89c4:	8c420000 	lw	v0,0(v0)
  4c89c8:	00000000 	nop
  4c89cc:	00622026 	xor	a0,v1,v0
  4c89d0:	8fc2003c 	lw	v0,60(s8)
  4c89d4:	00000000 	nop
  4c89d8:	2442000e 	addiu	v0,v0,14
  4c89dc:	90420000 	lbu	v0,0(v0)
  4c89e0:	00000000 	nop
  4c89e4:	38420078 	xori	v0,v0,0x78
  4c89e8:	304200ff 	andi	v0,v0,0xff
  4c89ec:	8f83804c 	lw	v1,-32692(gp)
  4c89f0:	00000000 	nop
  4c89f4:	24635990 	addiu	v1,v1,22928
  4c89f8:	00621821 	addu	v1,v1,v0
  4c89fc:	8fc2003c 	lw	v0,60(s8)
  4c8a00:	00000000 	nop
  4c8a04:	24420006 	addiu	v0,v0,6
  4c8a08:	90630000 	lbu	v1,0(v1)
  4c8a0c:	90420000 	lbu	v0,0(v0)
  4c8a10:	00000000 	nop
  4c8a14:	00621026 	xor	v0,v1,v0
  4c8a18:	304200ff 	andi	v0,v0,0xff
  4c8a1c:	00021080 	sll	v0,v0,0x2
  4c8a20:	24420800 	addiu	v0,v0,2048
  4c8a24:	8f81804c 	lw	at,-32692(gp)
  4c8a28:	00000000 	nop
  4c8a2c:	24215a90 	addiu	at,at,23184
  4c8a30:	00221021 	addu	v0,at,v0
  4c8a34:	8c420000 	lw	v0,0(v0)
  4c8a38:	00000000 	nop
  4c8a3c:	00822026 	xor	a0,a0,v0
  4c8a40:	8fc2003c 	lw	v0,60(s8)
  4c8a44:	00000000 	nop
  4c8a48:	2442000f 	addiu	v0,v0,15
  4c8a4c:	90420000 	lbu	v0,0(v0)
  4c8a50:	00000000 	nop
  4c8a54:	3842006b 	xori	v0,v0,0x6b
  4c8a58:	304200ff 	andi	v0,v0,0xff
  4c8a5c:	8f83804c 	lw	v1,-32692(gp)
  4c8a60:	00000000 	nop
  4c8a64:	24635990 	addiu	v1,v1,22928
  4c8a68:	00621821 	addu	v1,v1,v0
  4c8a6c:	8fc2003c 	lw	v0,60(s8)
  4c8a70:	00000000 	nop
  4c8a74:	24420007 	addiu	v0,v0,7
  4c8a78:	90630000 	lbu	v1,0(v1)
  4c8a7c:	90420000 	lbu	v0,0(v0)
  4c8a80:	00000000 	nop
  4c8a84:	00621026 	xor	v0,v1,v0
  4c8a88:	304200ff 	andi	v0,v0,0xff
  4c8a8c:	00021080 	sll	v0,v0,0x2
  4c8a90:	24420c00 	addiu	v0,v0,3072
  4c8a94:	8f81804c 	lw	at,-32692(gp)
  4c8a98:	00000000 	nop
  4c8a9c:	24215a90 	addiu	at,at,23184
  4c8aa0:	00221021 	addu	v0,at,v0
  4c8aa4:	8c420000 	lw	v0,0(v0)
  4c8aa8:	00000000 	nop
  4c8aac:	00821026 	xor	v0,a0,v0
  4c8ab0:	afc20018 	sw	v0,24(s8)
  4c8ab4:	8fc20018 	lw	v0,24(s8)
  4c8ab8:	00000000 	nop
  4c8abc:	00021a00 	sll	v1,v0,0x8
  4c8ac0:	00021602 	srl	v0,v0,0x18
  4c8ac4:	00621025 	or	v0,v1,v0
  4c8ac8:	afc20018 	sw	v0,24(s8)
  4c8acc:	8fc30014 	lw	v1,20(s8)
  4c8ad0:	8fc20018 	lw	v0,24(s8)
  4c8ad4:	00000000 	nop
  4c8ad8:	00621021 	addu	v0,v1,v0
  4c8adc:	afc20014 	sw	v0,20(s8)
  4c8ae0:	8fc30018 	lw	v1,24(s8)
  4c8ae4:	8fc20014 	lw	v0,20(s8)
  4c8ae8:	00000000 	nop
  4c8aec:	00621021 	addu	v0,v1,v0
  4c8af0:	afc20018 	sw	v0,24(s8)
  4c8af4:	8fc30014 	lw	v1,20(s8)
  4c8af8:	8fc20038 	lw	v0,56(s8)
  4c8afc:	00000000 	nop
  4c8b00:	ac431028 	sw	v1,4136(v0)
  4c8b04:	8fc20018 	lw	v0,24(s8)
  4c8b08:	00000000 	nop
  4c8b0c:	00021a40 	sll	v1,v0,0x9
  4c8b10:	000215c2 	srl	v0,v0,0x17
  4c8b14:	00621825 	or	v1,v1,v0
  4c8b18:	8fc20038 	lw	v0,56(s8)
  4c8b1c:	00000000 	nop
  4c8b20:	ac43102c 	sw	v1,4140(v0)
		CALC_K (k, 4, 0xE4, 0x45, 0xDD, 0x7D);
  4c8b24:	8fc2003c 	lw	v0,60(s8)
  4c8b28:	00000000 	nop
  4c8b2c:	24420008 	addiu	v0,v0,8
  4c8b30:	90420000 	lbu	v0,0(v0)
  4c8b34:	00000000 	nop
  4c8b38:	384200e4 	xori	v0,v0,0xe4
  4c8b3c:	304200ff 	andi	v0,v0,0xff
  4c8b40:	8f81804c 	lw	at,-32692(gp)
  4c8b44:	00000000 	nop
  4c8b48:	24215890 	addiu	at,at,22672
  4c8b4c:	00221021 	addu	v0,at,v0
  4c8b50:	90430000 	lbu	v1,0(v0)
  4c8b54:	8fc2003c 	lw	v0,60(s8)
  4c8b58:	00000000 	nop
  4c8b5c:	90420000 	lbu	v0,0(v0)
  4c8b60:	00000000 	nop
  4c8b64:	00621026 	xor	v0,v1,v0
  4c8b68:	304200ff 	andi	v0,v0,0xff
  4c8b6c:	00021080 	sll	v0,v0,0x2
  4c8b70:	8f84804c 	lw	a0,-32692(gp)
  4c8b74:	00000000 	nop
  4c8b78:	24845a90 	addiu	a0,a0,23184
  4c8b7c:	00822021 	addu	a0,a0,v0
  4c8b80:	8fc2003c 	lw	v0,60(s8)
  4c8b84:	00000000 	nop
  4c8b88:	24420009 	addiu	v0,v0,9
  4c8b8c:	90420000 	lbu	v0,0(v0)
  4c8b90:	00000000 	nop
  4c8b94:	38420045 	xori	v0,v0,0x45
  4c8b98:	304200ff 	andi	v0,v0,0xff
  4c8b9c:	8f83804c 	lw	v1,-32692(gp)
  4c8ba0:	00000000 	nop
  4c8ba4:	24635890 	addiu	v1,v1,22672
  4c8ba8:	00621821 	addu	v1,v1,v0
  4c8bac:	8fc2003c 	lw	v0,60(s8)
  4c8bb0:	00000000 	nop
  4c8bb4:	24420001 	addiu	v0,v0,1
  4c8bb8:	90630000 	lbu	v1,0(v1)
  4c8bbc:	90420000 	lbu	v0,0(v0)
  4c8bc0:	00000000 	nop
  4c8bc4:	00621026 	xor	v0,v1,v0
  4c8bc8:	304200ff 	andi	v0,v0,0xff
  4c8bcc:	00021080 	sll	v0,v0,0x2
  4c8bd0:	24420400 	addiu	v0,v0,1024
  4c8bd4:	8f81804c 	lw	at,-32692(gp)
  4c8bd8:	00000000 	nop
  4c8bdc:	24215a90 	addiu	at,at,23184
  4c8be0:	00221021 	addu	v0,at,v0
  4c8be4:	8c830000 	lw	v1,0(a0)
  4c8be8:	8c420000 	lw	v0,0(v0)
  4c8bec:	00000000 	nop
  4c8bf0:	00622026 	xor	a0,v1,v0
  4c8bf4:	8fc2003c 	lw	v0,60(s8)
  4c8bf8:	00000000 	nop
  4c8bfc:	2442000a 	addiu	v0,v0,10
  4c8c00:	90420000 	lbu	v0,0(v0)
  4c8c04:	00000000 	nop
  4c8c08:	384200e4 	xori	v0,v0,0xe4
  4c8c0c:	304200ff 	andi	v0,v0,0xff
  4c8c10:	8f83804c 	lw	v1,-32692(gp)
  4c8c14:	00000000 	nop
  4c8c18:	24635990 	addiu	v1,v1,22928
  4c8c1c:	00621821 	addu	v1,v1,v0
  4c8c20:	8fc2003c 	lw	v0,60(s8)
  4c8c24:	00000000 	nop
  4c8c28:	24420002 	addiu	v0,v0,2
  4c8c2c:	90630000 	lbu	v1,0(v1)
  4c8c30:	90420000 	lbu	v0,0(v0)
  4c8c34:	00000000 	nop
  4c8c38:	00621026 	xor	v0,v1,v0
  4c8c3c:	304200ff 	andi	v0,v0,0xff
  4c8c40:	00021080 	sll	v0,v0,0x2
  4c8c44:	24420800 	addiu	v0,v0,2048
  4c8c48:	8f81804c 	lw	at,-32692(gp)
  4c8c4c:	00000000 	nop
  4c8c50:	24215a90 	addiu	at,at,23184
  4c8c54:	00221021 	addu	v0,at,v0
  4c8c58:	8c420000 	lw	v0,0(v0)
  4c8c5c:	00000000 	nop
  4c8c60:	00822026 	xor	a0,a0,v0
  4c8c64:	8fc2003c 	lw	v0,60(s8)
  4c8c68:	00000000 	nop
  4c8c6c:	2442000b 	addiu	v0,v0,11
  4c8c70:	90420000 	lbu	v0,0(v0)
  4c8c74:	00000000 	nop
  4c8c78:	38420045 	xori	v0,v0,0x45
  4c8c7c:	304200ff 	andi	v0,v0,0xff
  4c8c80:	8f83804c 	lw	v1,-32692(gp)
  4c8c84:	00000000 	nop
  4c8c88:	24635990 	addiu	v1,v1,22928
  4c8c8c:	00621821 	addu	v1,v1,v0
  4c8c90:	8fc2003c 	lw	v0,60(s8)
  4c8c94:	00000000 	nop
  4c8c98:	24420003 	addiu	v0,v0,3
  4c8c9c:	90630000 	lbu	v1,0(v1)
  4c8ca0:	90420000 	lbu	v0,0(v0)
  4c8ca4:	00000000 	nop
  4c8ca8:	00621026 	xor	v0,v1,v0
  4c8cac:	304200ff 	andi	v0,v0,0xff
  4c8cb0:	00021080 	sll	v0,v0,0x2
  4c8cb4:	24420c00 	addiu	v0,v0,3072
  4c8cb8:	8f81804c 	lw	at,-32692(gp)
  4c8cbc:	00000000 	nop
  4c8cc0:	24215a90 	addiu	at,at,23184
  4c8cc4:	00221021 	addu	v0,at,v0
  4c8cc8:	8c420000 	lw	v0,0(v0)
  4c8ccc:	00000000 	nop
  4c8cd0:	00821026 	xor	v0,a0,v0
  4c8cd4:	afc20014 	sw	v0,20(s8)
  4c8cd8:	8fc2003c 	lw	v0,60(s8)
  4c8cdc:	00000000 	nop
  4c8ce0:	2442000c 	addiu	v0,v0,12
  4c8ce4:	90420000 	lbu	v0,0(v0)
  4c8ce8:	00000000 	nop
  4c8cec:	384200dd 	xori	v0,v0,0xdd
  4c8cf0:	304200ff 	andi	v0,v0,0xff
  4c8cf4:	8f83804c 	lw	v1,-32692(gp)
  4c8cf8:	00000000 	nop
  4c8cfc:	24635890 	addiu	v1,v1,22672
  4c8d00:	00621821 	addu	v1,v1,v0
  4c8d04:	8fc2003c 	lw	v0,60(s8)
  4c8d08:	00000000 	nop
  4c8d0c:	24420004 	addiu	v0,v0,4
  4c8d10:	90630000 	lbu	v1,0(v1)
  4c8d14:	90420000 	lbu	v0,0(v0)
  4c8d18:	00000000 	nop
  4c8d1c:	00621026 	xor	v0,v1,v0
  4c8d20:	304200ff 	andi	v0,v0,0xff
  4c8d24:	00021080 	sll	v0,v0,0x2
  4c8d28:	8f84804c 	lw	a0,-32692(gp)
  4c8d2c:	00000000 	nop
  4c8d30:	24845a90 	addiu	a0,a0,23184
  4c8d34:	00822021 	addu	a0,a0,v0
  4c8d38:	8fc2003c 	lw	v0,60(s8)
  4c8d3c:	00000000 	nop
  4c8d40:	2442000d 	addiu	v0,v0,13
  4c8d44:	90420000 	lbu	v0,0(v0)
  4c8d48:	00000000 	nop
  4c8d4c:	3842007d 	xori	v0,v0,0x7d
  4c8d50:	304200ff 	andi	v0,v0,0xff
  4c8d54:	8f83804c 	lw	v1,-32692(gp)
  4c8d58:	00000000 	nop
  4c8d5c:	24635890 	addiu	v1,v1,22672
  4c8d60:	00621821 	addu	v1,v1,v0
  4c8d64:	8fc2003c 	lw	v0,60(s8)
  4c8d68:	00000000 	nop
  4c8d6c:	24420005 	addiu	v0,v0,5
  4c8d70:	90630000 	lbu	v1,0(v1)
  4c8d74:	90420000 	lbu	v0,0(v0)
  4c8d78:	00000000 	nop
  4c8d7c:	00621026 	xor	v0,v1,v0
  4c8d80:	304200ff 	andi	v0,v0,0xff
  4c8d84:	00021080 	sll	v0,v0,0x2
  4c8d88:	24420400 	addiu	v0,v0,1024
  4c8d8c:	8f81804c 	lw	at,-32692(gp)
  4c8d90:	00000000 	nop
  4c8d94:	24215a90 	addiu	at,at,23184
  4c8d98:	00221021 	addu	v0,at,v0
  4c8d9c:	8c830000 	lw	v1,0(a0)
  4c8da0:	8c420000 	lw	v0,0(v0)
  4c8da4:	00000000 	nop
  4c8da8:	00622026 	xor	a0,v1,v0
  4c8dac:	8fc2003c 	lw	v0,60(s8)
  4c8db0:	00000000 	nop
  4c8db4:	2442000e 	addiu	v0,v0,14
  4c8db8:	90420000 	lbu	v0,0(v0)
  4c8dbc:	00000000 	nop
  4c8dc0:	384200dd 	xori	v0,v0,0xdd
  4c8dc4:	304200ff 	andi	v0,v0,0xff
  4c8dc8:	8f83804c 	lw	v1,-32692(gp)
  4c8dcc:	00000000 	nop
  4c8dd0:	24635990 	addiu	v1,v1,22928
  4c8dd4:	00621821 	addu	v1,v1,v0
  4c8dd8:	8fc2003c 	lw	v0,60(s8)
  4c8ddc:	00000000 	nop
  4c8de0:	24420006 	addiu	v0,v0,6
  4c8de4:	90630000 	lbu	v1,0(v1)
  4c8de8:	90420000 	lbu	v0,0(v0)
  4c8dec:	00000000 	nop
  4c8df0:	00621026 	xor	v0,v1,v0
  4c8df4:	304200ff 	andi	v0,v0,0xff
  4c8df8:	00021080 	sll	v0,v0,0x2
  4c8dfc:	24420800 	addiu	v0,v0,2048
  4c8e00:	8f81804c 	lw	at,-32692(gp)
  4c8e04:	00000000 	nop
  4c8e08:	24215a90 	addiu	at,at,23184
  4c8e0c:	00221021 	addu	v0,at,v0
  4c8e10:	8c420000 	lw	v0,0(v0)
  4c8e14:	00000000 	nop
  4c8e18:	00822026 	xor	a0,a0,v0
  4c8e1c:	8fc2003c 	lw	v0,60(s8)
  4c8e20:	00000000 	nop
  4c8e24:	2442000f 	addiu	v0,v0,15
  4c8e28:	90420000 	lbu	v0,0(v0)
  4c8e2c:	00000000 	nop
  4c8e30:	3842007d 	xori	v0,v0,0x7d
  4c8e34:	304200ff 	andi	v0,v0,0xff
  4c8e38:	8f83804c 	lw	v1,-32692(gp)
  4c8e3c:	00000000 	nop
  4c8e40:	24635990 	addiu	v1,v1,22928
  4c8e44:	00621821 	addu	v1,v1,v0
  4c8e48:	8fc2003c 	lw	v0,60(s8)
  4c8e4c:	00000000 	nop
  4c8e50:	24420007 	addiu	v0,v0,7
  4c8e54:	90630000 	lbu	v1,0(v1)
  4c8e58:	90420000 	lbu	v0,0(v0)
  4c8e5c:	00000000 	nop
  4c8e60:	00621026 	xor	v0,v1,v0
  4c8e64:	304200ff 	andi	v0,v0,0xff
  4c8e68:	00021080 	sll	v0,v0,0x2
  4c8e6c:	24420c00 	addiu	v0,v0,3072
  4c8e70:	8f81804c 	lw	at,-32692(gp)
  4c8e74:	00000000 	nop
  4c8e78:	24215a90 	addiu	at,at,23184
  4c8e7c:	00221021 	addu	v0,at,v0
  4c8e80:	8c420000 	lw	v0,0(v0)
  4c8e84:	00000000 	nop
  4c8e88:	00821026 	xor	v0,a0,v0
  4c8e8c:	afc20018 	sw	v0,24(s8)
  4c8e90:	8fc20018 	lw	v0,24(s8)
  4c8e94:	00000000 	nop
  4c8e98:	00021a00 	sll	v1,v0,0x8
  4c8e9c:	00021602 	srl	v0,v0,0x18
  4c8ea0:	00621025 	or	v0,v1,v0
  4c8ea4:	afc20018 	sw	v0,24(s8)
  4c8ea8:	8fc30014 	lw	v1,20(s8)
  4c8eac:	8fc20018 	lw	v0,24(s8)
  4c8eb0:	00000000 	nop
  4c8eb4:	00621021 	addu	v0,v1,v0
  4c8eb8:	afc20014 	sw	v0,20(s8)
  4c8ebc:	8fc30018 	lw	v1,24(s8)
  4c8ec0:	8fc20014 	lw	v0,20(s8)
  4c8ec4:	00000000 	nop
  4c8ec8:	00621021 	addu	v0,v1,v0
  4c8ecc:	afc20018 	sw	v0,24(s8)
  4c8ed0:	8fc30014 	lw	v1,20(s8)
  4c8ed4:	8fc20038 	lw	v0,56(s8)
  4c8ed8:	00000000 	nop
  4c8edc:	ac431030 	sw	v1,4144(v0)
  4c8ee0:	8fc20018 	lw	v0,24(s8)
  4c8ee4:	00000000 	nop
  4c8ee8:	00021a40 	sll	v1,v0,0x9
  4c8eec:	000215c2 	srl	v0,v0,0x17
  4c8ef0:	00621825 	or	v1,v1,v0
  4c8ef4:	8fc20038 	lw	v0,56(s8)
  4c8ef8:	00000000 	nop
  4c8efc:	ac431034 	sw	v1,4148(v0)
		CALC_K (k, 6, 0xD1, 0xE8, 0x38, 0x4B);
  4c8f00:	8fc2003c 	lw	v0,60(s8)
  4c8f04:	00000000 	nop
  4c8f08:	24420008 	addiu	v0,v0,8
  4c8f0c:	90420000 	lbu	v0,0(v0)
  4c8f10:	00000000 	nop
  4c8f14:	384200d1 	xori	v0,v0,0xd1
  4c8f18:	304200ff 	andi	v0,v0,0xff
  4c8f1c:	8f81804c 	lw	at,-32692(gp)
  4c8f20:	00000000 	nop
  4c8f24:	24215890 	addiu	at,at,22672
  4c8f28:	00221021 	addu	v0,at,v0
  4c8f2c:	90430000 	lbu	v1,0(v0)
  4c8f30:	8fc2003c 	lw	v0,60(s8)
  4c8f34:	00000000 	nop
  4c8f38:	90420000 	lbu	v0,0(v0)
  4c8f3c:	00000000 	nop
  4c8f40:	00621026 	xor	v0,v1,v0
  4c8f44:	304200ff 	andi	v0,v0,0xff
  4c8f48:	00021080 	sll	v0,v0,0x2
  4c8f4c:	8f84804c 	lw	a0,-32692(gp)
  4c8f50:	00000000 	nop
  4c8f54:	24845a90 	addiu	a0,a0,23184
  4c8f58:	00822021 	addu	a0,a0,v0
  4c8f5c:	8fc2003c 	lw	v0,60(s8)
  4c8f60:	00000000 	nop
  4c8f64:	24420009 	addiu	v0,v0,9
  4c8f68:	90420000 	lbu	v0,0(v0)
  4c8f6c:	00000000 	nop
  4c8f70:	384200e8 	xori	v0,v0,0xe8
  4c8f74:	304200ff 	andi	v0,v0,0xff
  4c8f78:	8f83804c 	lw	v1,-32692(gp)
  4c8f7c:	00000000 	nop
  4c8f80:	24635890 	addiu	v1,v1,22672
  4c8f84:	00621821 	addu	v1,v1,v0
  4c8f88:	8fc2003c 	lw	v0,60(s8)
  4c8f8c:	00000000 	nop
  4c8f90:	24420001 	addiu	v0,v0,1
  4c8f94:	90630000 	lbu	v1,0(v1)
  4c8f98:	90420000 	lbu	v0,0(v0)
  4c8f9c:	00000000 	nop
  4c8fa0:	00621026 	xor	v0,v1,v0
  4c8fa4:	304200ff 	andi	v0,v0,0xff
  4c8fa8:	00021080 	sll	v0,v0,0x2
  4c8fac:	24420400 	addiu	v0,v0,1024
  4c8fb0:	8f81804c 	lw	at,-32692(gp)
  4c8fb4:	00000000 	nop
  4c8fb8:	24215a90 	addiu	at,at,23184
  4c8fbc:	00221021 	addu	v0,at,v0
  4c8fc0:	8c830000 	lw	v1,0(a0)
  4c8fc4:	8c420000 	lw	v0,0(v0)
  4c8fc8:	00000000 	nop
  4c8fcc:	00622026 	xor	a0,v1,v0
  4c8fd0:	8fc2003c 	lw	v0,60(s8)
  4c8fd4:	00000000 	nop
  4c8fd8:	2442000a 	addiu	v0,v0,10
  4c8fdc:	90420000 	lbu	v0,0(v0)
  4c8fe0:	00000000 	nop
  4c8fe4:	384200d1 	xori	v0,v0,0xd1
  4c8fe8:	304200ff 	andi	v0,v0,0xff
  4c8fec:	8f83804c 	lw	v1,-32692(gp)
  4c8ff0:	00000000 	nop
  4c8ff4:	24635990 	addiu	v1,v1,22928
  4c8ff8:	00621821 	addu	v1,v1,v0
  4c8ffc:	8fc2003c 	lw	v0,60(s8)
  4c9000:	00000000 	nop
  4c9004:	24420002 	addiu	v0,v0,2
  4c9008:	90630000 	lbu	v1,0(v1)
  4c900c:	90420000 	lbu	v0,0(v0)
  4c9010:	00000000 	nop
  4c9014:	00621026 	xor	v0,v1,v0
  4c9018:	304200ff 	andi	v0,v0,0xff
  4c901c:	00021080 	sll	v0,v0,0x2
  4c9020:	24420800 	addiu	v0,v0,2048
  4c9024:	8f81804c 	lw	at,-32692(gp)
  4c9028:	00000000 	nop
  4c902c:	24215a90 	addiu	at,at,23184
  4c9030:	00221021 	addu	v0,at,v0
  4c9034:	8c420000 	lw	v0,0(v0)
  4c9038:	00000000 	nop
  4c903c:	00822026 	xor	a0,a0,v0
  4c9040:	8fc2003c 	lw	v0,60(s8)
  4c9044:	00000000 	nop
  4c9048:	2442000b 	addiu	v0,v0,11
  4c904c:	90420000 	lbu	v0,0(v0)
  4c9050:	00000000 	nop
  4c9054:	384200e8 	xori	v0,v0,0xe8
  4c9058:	304200ff 	andi	v0,v0,0xff
  4c905c:	8f83804c 	lw	v1,-32692(gp)
  4c9060:	00000000 	nop
  4c9064:	24635990 	addiu	v1,v1,22928
  4c9068:	00621821 	addu	v1,v1,v0
  4c906c:	8fc2003c 	lw	v0,60(s8)
  4c9070:	00000000 	nop
  4c9074:	24420003 	addiu	v0,v0,3
  4c9078:	90630000 	lbu	v1,0(v1)
  4c907c:	90420000 	lbu	v0,0(v0)
  4c9080:	00000000 	nop
  4c9084:	00621026 	xor	v0,v1,v0
  4c9088:	304200ff 	andi	v0,v0,0xff
  4c908c:	00021080 	sll	v0,v0,0x2
  4c9090:	24420c00 	addiu	v0,v0,3072
  4c9094:	8f81804c 	lw	at,-32692(gp)
  4c9098:	00000000 	nop
  4c909c:	24215a90 	addiu	at,at,23184
  4c90a0:	00221021 	addu	v0,at,v0
  4c90a4:	8c420000 	lw	v0,0(v0)
  4c90a8:	00000000 	nop
  4c90ac:	00821026 	xor	v0,a0,v0
  4c90b0:	afc20014 	sw	v0,20(s8)
  4c90b4:	8fc2003c 	lw	v0,60(s8)
  4c90b8:	00000000 	nop
  4c90bc:	2442000c 	addiu	v0,v0,12
  4c90c0:	90420000 	lbu	v0,0(v0)
  4c90c4:	00000000 	nop
  4c90c8:	38420038 	xori	v0,v0,0x38
  4c90cc:	304200ff 	andi	v0,v0,0xff
  4c90d0:	8f83804c 	lw	v1,-32692(gp)
  4c90d4:	00000000 	nop
  4c90d8:	24635890 	addiu	v1,v1,22672
  4c90dc:	00621821 	addu	v1,v1,v0
  4c90e0:	8fc2003c 	lw	v0,60(s8)
  4c90e4:	00000000 	nop
  4c90e8:	24420004 	addiu	v0,v0,4
  4c90ec:	90630000 	lbu	v1,0(v1)
  4c90f0:	90420000 	lbu	v0,0(v0)
  4c90f4:	00000000 	nop
  4c90f8:	00621026 	xor	v0,v1,v0
  4c90fc:	304200ff 	andi	v0,v0,0xff
  4c9100:	00021080 	sll	v0,v0,0x2
  4c9104:	8f84804c 	lw	a0,-32692(gp)
  4c9108:	00000000 	nop
  4c910c:	24845a90 	addiu	a0,a0,23184
  4c9110:	00822021 	addu	a0,a0,v0
  4c9114:	8fc2003c 	lw	v0,60(s8)
  4c9118:	00000000 	nop
  4c911c:	2442000d 	addiu	v0,v0,13
  4c9120:	90420000 	lbu	v0,0(v0)
  4c9124:	00000000 	nop
  4c9128:	3842004b 	xori	v0,v0,0x4b
  4c912c:	304200ff 	andi	v0,v0,0xff
  4c9130:	8f83804c 	lw	v1,-32692(gp)
  4c9134:	00000000 	nop
  4c9138:	24635890 	addiu	v1,v1,22672
  4c913c:	00621821 	addu	v1,v1,v0
  4c9140:	8fc2003c 	lw	v0,60(s8)
  4c9144:	00000000 	nop
  4c9148:	24420005 	addiu	v0,v0,5
  4c914c:	90630000 	lbu	v1,0(v1)
  4c9150:	90420000 	lbu	v0,0(v0)
  4c9154:	00000000 	nop
  4c9158:	00621026 	xor	v0,v1,v0
  4c915c:	304200ff 	andi	v0,v0,0xff
  4c9160:	00021080 	sll	v0,v0,0x2
  4c9164:	24420400 	addiu	v0,v0,1024
  4c9168:	8f81804c 	lw	at,-32692(gp)
  4c916c:	00000000 	nop
  4c9170:	24215a90 	addiu	at,at,23184
  4c9174:	00221021 	addu	v0,at,v0
  4c9178:	8c830000 	lw	v1,0(a0)
  4c917c:	8c420000 	lw	v0,0(v0)
  4c9180:	00000000 	nop
  4c9184:	00622026 	xor	a0,v1,v0
  4c9188:	8fc2003c 	lw	v0,60(s8)
  4c918c:	00000000 	nop
  4c9190:	2442000e 	addiu	v0,v0,14
  4c9194:	90420000 	lbu	v0,0(v0)
  4c9198:	00000000 	nop
  4c919c:	38420038 	xori	v0,v0,0x38
  4c91a0:	304200ff 	andi	v0,v0,0xff
  4c91a4:	8f83804c 	lw	v1,-32692(gp)
  4c91a8:	00000000 	nop
  4c91ac:	24635990 	addiu	v1,v1,22928
  4c91b0:	00621821 	addu	v1,v1,v0
  4c91b4:	8fc2003c 	lw	v0,60(s8)
  4c91b8:	00000000 	nop
  4c91bc:	24420006 	addiu	v0,v0,6
  4c91c0:	90630000 	lbu	v1,0(v1)
  4c91c4:	90420000 	lbu	v0,0(v0)
  4c91c8:	00000000 	nop
  4c91cc:	00621026 	xor	v0,v1,v0
  4c91d0:	304200ff 	andi	v0,v0,0xff
  4c91d4:	00021080 	sll	v0,v0,0x2
  4c91d8:	24420800 	addiu	v0,v0,2048
  4c91dc:	8f81804c 	lw	at,-32692(gp)
  4c91e0:	00000000 	nop
  4c91e4:	24215a90 	addiu	at,at,23184
  4c91e8:	00221021 	addu	v0,at,v0
  4c91ec:	8c420000 	lw	v0,0(v0)
  4c91f0:	00000000 	nop
  4c91f4:	00822026 	xor	a0,a0,v0
  4c91f8:	8fc2003c 	lw	v0,60(s8)
  4c91fc:	00000000 	nop
  4c9200:	2442000f 	addiu	v0,v0,15
  4c9204:	90420000 	lbu	v0,0(v0)
  4c9208:	00000000 	nop
  4c920c:	3842004b 	xori	v0,v0,0x4b
  4c9210:	304200ff 	andi	v0,v0,0xff
  4c9214:	8f83804c 	lw	v1,-32692(gp)
  4c9218:	00000000 	nop
  4c921c:	24635990 	addiu	v1,v1,22928
  4c9220:	00621821 	addu	v1,v1,v0
  4c9224:	8fc2003c 	lw	v0,60(s8)
  4c9228:	00000000 	nop
  4c922c:	24420007 	addiu	v0,v0,7
  4c9230:	90630000 	lbu	v1,0(v1)
  4c9234:	90420000 	lbu	v0,0(v0)
  4c9238:	00000000 	nop
  4c923c:	00621026 	xor	v0,v1,v0
  4c9240:	304200ff 	andi	v0,v0,0xff
  4c9244:	00021080 	sll	v0,v0,0x2
  4c9248:	24420c00 	addiu	v0,v0,3072
  4c924c:	8f81804c 	lw	at,-32692(gp)
  4c9250:	00000000 	nop
  4c9254:	24215a90 	addiu	at,at,23184
  4c9258:	00221021 	addu	v0,at,v0
  4c925c:	8c420000 	lw	v0,0(v0)
  4c9260:	00000000 	nop
  4c9264:	00821026 	xor	v0,a0,v0
  4c9268:	afc20018 	sw	v0,24(s8)
  4c926c:	8fc20018 	lw	v0,24(s8)
  4c9270:	00000000 	nop
  4c9274:	00021a00 	sll	v1,v0,0x8
  4c9278:	00021602 	srl	v0,v0,0x18
  4c927c:	00621025 	or	v0,v1,v0
  4c9280:	afc20018 	sw	v0,24(s8)
  4c9284:	8fc30014 	lw	v1,20(s8)
  4c9288:	8fc20018 	lw	v0,24(s8)
  4c928c:	00000000 	nop
  4c9290:	00621021 	addu	v0,v1,v0
  4c9294:	afc20014 	sw	v0,20(s8)
  4c9298:	8fc30018 	lw	v1,24(s8)
  4c929c:	8fc20014 	lw	v0,20(s8)
  4c92a0:	00000000 	nop
  4c92a4:	00621021 	addu	v0,v1,v0
  4c92a8:	afc20018 	sw	v0,24(s8)
  4c92ac:	8fc30014 	lw	v1,20(s8)
  4c92b0:	8fc20038 	lw	v0,56(s8)
  4c92b4:	00000000 	nop
  4c92b8:	ac431038 	sw	v1,4152(v0)
  4c92bc:	8fc20018 	lw	v0,24(s8)
  4c92c0:	00000000 	nop
  4c92c4:	00021a40 	sll	v1,v0,0x9
  4c92c8:	000215c2 	srl	v0,v0,0x17
  4c92cc:	00621825 	or	v1,v1,v0
  4c92d0:	8fc20038 	lw	v0,56(s8)
  4c92d4:	00000000 	nop
  4c92d8:	ac43103c 	sw	v1,4156(v0)
		CALC_K (k, 8, 0x0D, 0xD6, 0xC6, 0x32);
  4c92dc:	8fc2003c 	lw	v0,60(s8)
  4c92e0:	00000000 	nop
  4c92e4:	24420008 	addiu	v0,v0,8
  4c92e8:	90420000 	lbu	v0,0(v0)
  4c92ec:	00000000 	nop
  4c92f0:	3842000d 	xori	v0,v0,0xd
  4c92f4:	304200ff 	andi	v0,v0,0xff
  4c92f8:	8f81804c 	lw	at,-32692(gp)
  4c92fc:	00000000 	nop
  4c9300:	24215890 	addiu	at,at,22672
  4c9304:	00221021 	addu	v0,at,v0
  4c9308:	90430000 	lbu	v1,0(v0)
  4c930c:	8fc2003c 	lw	v0,60(s8)
  4c9310:	00000000 	nop
  4c9314:	90420000 	lbu	v0,0(v0)
  4c9318:	00000000 	nop
  4c931c:	00621026 	xor	v0,v1,v0
  4c9320:	304200ff 	andi	v0,v0,0xff
  4c9324:	00021080 	sll	v0,v0,0x2
  4c9328:	8f84804c 	lw	a0,-32692(gp)
  4c932c:	00000000 	nop
  4c9330:	24845a90 	addiu	a0,a0,23184
  4c9334:	00822021 	addu	a0,a0,v0
  4c9338:	8fc2003c 	lw	v0,60(s8)
  4c933c:	00000000 	nop
  4c9340:	24420009 	addiu	v0,v0,9
  4c9344:	90420000 	lbu	v0,0(v0)
  4c9348:	00000000 	nop
  4c934c:	384200d6 	xori	v0,v0,0xd6
  4c9350:	304200ff 	andi	v0,v0,0xff
  4c9354:	8f83804c 	lw	v1,-32692(gp)
  4c9358:	00000000 	nop
  4c935c:	24635890 	addiu	v1,v1,22672
  4c9360:	00621821 	addu	v1,v1,v0
  4c9364:	8fc2003c 	lw	v0,60(s8)
  4c9368:	00000000 	nop
  4c936c:	24420001 	addiu	v0,v0,1
  4c9370:	90630000 	lbu	v1,0(v1)
  4c9374:	90420000 	lbu	v0,0(v0)
  4c9378:	00000000 	nop
  4c937c:	00621026 	xor	v0,v1,v0
  4c9380:	304200ff 	andi	v0,v0,0xff
  4c9384:	00021080 	sll	v0,v0,0x2
  4c9388:	24420400 	addiu	v0,v0,1024
  4c938c:	8f81804c 	lw	at,-32692(gp)
  4c9390:	00000000 	nop
  4c9394:	24215a90 	addiu	at,at,23184
  4c9398:	00221021 	addu	v0,at,v0
  4c939c:	8c830000 	lw	v1,0(a0)
  4c93a0:	8c420000 	lw	v0,0(v0)
  4c93a4:	00000000 	nop
  4c93a8:	00622026 	xor	a0,v1,v0
  4c93ac:	8fc2003c 	lw	v0,60(s8)
  4c93b0:	00000000 	nop
  4c93b4:	2442000a 	addiu	v0,v0,10
  4c93b8:	90420000 	lbu	v0,0(v0)
  4c93bc:	00000000 	nop
  4c93c0:	3842000d 	xori	v0,v0,0xd
  4c93c4:	304200ff 	andi	v0,v0,0xff
  4c93c8:	8f83804c 	lw	v1,-32692(gp)
  4c93cc:	00000000 	nop
  4c93d0:	24635990 	addiu	v1,v1,22928
  4c93d4:	00621821 	addu	v1,v1,v0
  4c93d8:	8fc2003c 	lw	v0,60(s8)
  4c93dc:	00000000 	nop
  4c93e0:	24420002 	addiu	v0,v0,2
  4c93e4:	90630000 	lbu	v1,0(v1)
  4c93e8:	90420000 	lbu	v0,0(v0)
  4c93ec:	00000000 	nop
  4c93f0:	00621026 	xor	v0,v1,v0
  4c93f4:	304200ff 	andi	v0,v0,0xff
  4c93f8:	00021080 	sll	v0,v0,0x2
  4c93fc:	24420800 	addiu	v0,v0,2048
  4c9400:	8f81804c 	lw	at,-32692(gp)
  4c9404:	00000000 	nop
  4c9408:	24215a90 	addiu	at,at,23184
  4c940c:	00221021 	addu	v0,at,v0
  4c9410:	8c420000 	lw	v0,0(v0)
  4c9414:	00000000 	nop
  4c9418:	00822026 	xor	a0,a0,v0
  4c941c:	8fc2003c 	lw	v0,60(s8)
  4c9420:	00000000 	nop
  4c9424:	2442000b 	addiu	v0,v0,11
  4c9428:	90420000 	lbu	v0,0(v0)
  4c942c:	00000000 	nop
  4c9430:	384200d6 	xori	v0,v0,0xd6
  4c9434:	304200ff 	andi	v0,v0,0xff
  4c9438:	8f83804c 	lw	v1,-32692(gp)
  4c943c:	00000000 	nop
  4c9440:	24635990 	addiu	v1,v1,22928
  4c9444:	00621821 	addu	v1,v1,v0
  4c9448:	8fc2003c 	lw	v0,60(s8)
  4c944c:	00000000 	nop
  4c9450:	24420003 	addiu	v0,v0,3
  4c9454:	90630000 	lbu	v1,0(v1)
  4c9458:	90420000 	lbu	v0,0(v0)
  4c945c:	00000000 	nop
  4c9460:	00621026 	xor	v0,v1,v0
  4c9464:	304200ff 	andi	v0,v0,0xff
  4c9468:	00021080 	sll	v0,v0,0x2
  4c946c:	24420c00 	addiu	v0,v0,3072
  4c9470:	8f81804c 	lw	at,-32692(gp)
  4c9474:	00000000 	nop
  4c9478:	24215a90 	addiu	at,at,23184
  4c947c:	00221021 	addu	v0,at,v0
  4c9480:	8c420000 	lw	v0,0(v0)
  4c9484:	00000000 	nop
  4c9488:	00821026 	xor	v0,a0,v0
  4c948c:	afc20014 	sw	v0,20(s8)
  4c9490:	8fc2003c 	lw	v0,60(s8)
  4c9494:	00000000 	nop
  4c9498:	2442000c 	addiu	v0,v0,12
  4c949c:	90420000 	lbu	v0,0(v0)
  4c94a0:	00000000 	nop
  4c94a4:	384200c6 	xori	v0,v0,0xc6
  4c94a8:	304200ff 	andi	v0,v0,0xff
  4c94ac:	8f83804c 	lw	v1,-32692(gp)
  4c94b0:	00000000 	nop
  4c94b4:	24635890 	addiu	v1,v1,22672
  4c94b8:	00621821 	addu	v1,v1,v0
  4c94bc:	8fc2003c 	lw	v0,60(s8)
  4c94c0:	00000000 	nop
  4c94c4:	24420004 	addiu	v0,v0,4
  4c94c8:	90630000 	lbu	v1,0(v1)
  4c94cc:	90420000 	lbu	v0,0(v0)
  4c94d0:	00000000 	nop
  4c94d4:	00621026 	xor	v0,v1,v0
  4c94d8:	304200ff 	andi	v0,v0,0xff
  4c94dc:	00021080 	sll	v0,v0,0x2
  4c94e0:	8f84804c 	lw	a0,-32692(gp)
  4c94e4:	00000000 	nop
  4c94e8:	24845a90 	addiu	a0,a0,23184
  4c94ec:	00822021 	addu	a0,a0,v0
  4c94f0:	8fc2003c 	lw	v0,60(s8)
  4c94f4:	00000000 	nop
  4c94f8:	2442000d 	addiu	v0,v0,13
  4c94fc:	90420000 	lbu	v0,0(v0)
  4c9500:	00000000 	nop
  4c9504:	38420032 	xori	v0,v0,0x32
  4c9508:	304200ff 	andi	v0,v0,0xff
  4c950c:	8f83804c 	lw	v1,-32692(gp)
  4c9510:	00000000 	nop
  4c9514:	24635890 	addiu	v1,v1,22672
  4c9518:	00621821 	addu	v1,v1,v0
  4c951c:	8fc2003c 	lw	v0,60(s8)
  4c9520:	00000000 	nop
  4c9524:	24420005 	addiu	v0,v0,5
  4c9528:	90630000 	lbu	v1,0(v1)
  4c952c:	90420000 	lbu	v0,0(v0)
  4c9530:	00000000 	nop
  4c9534:	00621026 	xor	v0,v1,v0
  4c9538:	304200ff 	andi	v0,v0,0xff
  4c953c:	00021080 	sll	v0,v0,0x2
  4c9540:	24420400 	addiu	v0,v0,1024
  4c9544:	8f81804c 	lw	at,-32692(gp)
  4c9548:	00000000 	nop
  4c954c:	24215a90 	addiu	at,at,23184
  4c9550:	00221021 	addu	v0,at,v0
  4c9554:	8c830000 	lw	v1,0(a0)
  4c9558:	8c420000 	lw	v0,0(v0)
  4c955c:	00000000 	nop
  4c9560:	00622026 	xor	a0,v1,v0
  4c9564:	8fc2003c 	lw	v0,60(s8)
  4c9568:	00000000 	nop
  4c956c:	2442000e 	addiu	v0,v0,14
  4c9570:	90420000 	lbu	v0,0(v0)
  4c9574:	00000000 	nop
  4c9578:	384200c6 	xori	v0,v0,0xc6
  4c957c:	304200ff 	andi	v0,v0,0xff
  4c9580:	8f83804c 	lw	v1,-32692(gp)
  4c9584:	00000000 	nop
  4c9588:	24635990 	addiu	v1,v1,22928
  4c958c:	00621821 	addu	v1,v1,v0
  4c9590:	8fc2003c 	lw	v0,60(s8)
  4c9594:	00000000 	nop
  4c9598:	24420006 	addiu	v0,v0,6
  4c959c:	90630000 	lbu	v1,0(v1)
  4c95a0:	90420000 	lbu	v0,0(v0)
  4c95a4:	00000000 	nop
  4c95a8:	00621026 	xor	v0,v1,v0
  4c95ac:	304200ff 	andi	v0,v0,0xff
  4c95b0:	00021080 	sll	v0,v0,0x2
  4c95b4:	24420800 	addiu	v0,v0,2048
  4c95b8:	8f81804c 	lw	at,-32692(gp)
  4c95bc:	00000000 	nop
  4c95c0:	24215a90 	addiu	at,at,23184
  4c95c4:	00221021 	addu	v0,at,v0
  4c95c8:	8c420000 	lw	v0,0(v0)
  4c95cc:	00000000 	nop
  4c95d0:	00822026 	xor	a0,a0,v0
  4c95d4:	8fc2003c 	lw	v0,60(s8)
  4c95d8:	00000000 	nop
  4c95dc:	2442000f 	addiu	v0,v0,15
  4c95e0:	90420000 	lbu	v0,0(v0)
  4c95e4:	00000000 	nop
  4c95e8:	38420032 	xori	v0,v0,0x32
  4c95ec:	304200ff 	andi	v0,v0,0xff
  4c95f0:	8f83804c 	lw	v1,-32692(gp)
  4c95f4:	00000000 	nop
  4c95f8:	24635990 	addiu	v1,v1,22928
  4c95fc:	00621821 	addu	v1,v1,v0
  4c9600:	8fc2003c 	lw	v0,60(s8)
  4c9604:	00000000 	nop
  4c9608:	24420007 	addiu	v0,v0,7
  4c960c:	90630000 	lbu	v1,0(v1)
  4c9610:	90420000 	lbu	v0,0(v0)
  4c9614:	00000000 	nop
  4c9618:	00621026 	xor	v0,v1,v0
  4c961c:	304200ff 	andi	v0,v0,0xff
  4c9620:	00021080 	sll	v0,v0,0x2
  4c9624:	24420c00 	addiu	v0,v0,3072
  4c9628:	8f81804c 	lw	at,-32692(gp)
  4c962c:	00000000 	nop
  4c9630:	24215a90 	addiu	at,at,23184
  4c9634:	00221021 	addu	v0,at,v0
  4c9638:	8c420000 	lw	v0,0(v0)
  4c963c:	00000000 	nop
  4c9640:	00821026 	xor	v0,a0,v0
  4c9644:	afc20018 	sw	v0,24(s8)
  4c9648:	8fc20018 	lw	v0,24(s8)
  4c964c:	00000000 	nop
  4c9650:	00021a00 	sll	v1,v0,0x8
  4c9654:	00021602 	srl	v0,v0,0x18
  4c9658:	00621025 	or	v0,v1,v0
  4c965c:	afc20018 	sw	v0,24(s8)
  4c9660:	8fc30014 	lw	v1,20(s8)
  4c9664:	8fc20018 	lw	v0,24(s8)
  4c9668:	00000000 	nop
  4c966c:	00621021 	addu	v0,v1,v0
  4c9670:	afc20014 	sw	v0,20(s8)
  4c9674:	8fc30018 	lw	v1,24(s8)
  4c9678:	8fc20014 	lw	v0,20(s8)
  4c967c:	00000000 	nop
  4c9680:	00621021 	addu	v0,v1,v0
  4c9684:	afc20018 	sw	v0,24(s8)
  4c9688:	8fc30014 	lw	v1,20(s8)
  4c968c:	8fc20038 	lw	v0,56(s8)
  4c9690:	00000000 	nop
  4c9694:	ac431040 	sw	v1,4160(v0)
  4c9698:	8fc20018 	lw	v0,24(s8)
  4c969c:	00000000 	nop
  4c96a0:	00021a40 	sll	v1,v0,0x9
  4c96a4:	000215c2 	srl	v0,v0,0x17
  4c96a8:	00621825 	or	v1,v1,v0
  4c96ac:	8fc20038 	lw	v0,56(s8)
  4c96b0:	00000000 	nop
  4c96b4:	ac431044 	sw	v1,4164(v0)
		CALC_K (k, 10, 0x35, 0xD8, 0x98, 0xFD);
  4c96b8:	8fc2003c 	lw	v0,60(s8)
  4c96bc:	00000000 	nop
  4c96c0:	24420008 	addiu	v0,v0,8
  4c96c4:	90420000 	lbu	v0,0(v0)
  4c96c8:	00000000 	nop
  4c96cc:	38420035 	xori	v0,v0,0x35
  4c96d0:	304200ff 	andi	v0,v0,0xff
  4c96d4:	8f81804c 	lw	at,-32692(gp)
  4c96d8:	00000000 	nop
  4c96dc:	24215890 	addiu	at,at,22672
  4c96e0:	00221021 	addu	v0,at,v0
  4c96e4:	90430000 	lbu	v1,0(v0)
  4c96e8:	8fc2003c 	lw	v0,60(s8)
  4c96ec:	00000000 	nop
  4c96f0:	90420000 	lbu	v0,0(v0)
  4c96f4:	00000000 	nop
  4c96f8:	00621026 	xor	v0,v1,v0
  4c96fc:	304200ff 	andi	v0,v0,0xff
  4c9700:	00021080 	sll	v0,v0,0x2
  4c9704:	8f84804c 	lw	a0,-32692(gp)
  4c9708:	00000000 	nop
  4c970c:	24845a90 	addiu	a0,a0,23184
  4c9710:	00822021 	addu	a0,a0,v0
  4c9714:	8fc2003c 	lw	v0,60(s8)
  4c9718:	00000000 	nop
  4c971c:	24420009 	addiu	v0,v0,9
  4c9720:	90420000 	lbu	v0,0(v0)
  4c9724:	00000000 	nop
  4c9728:	384200d8 	xori	v0,v0,0xd8
  4c972c:	304200ff 	andi	v0,v0,0xff
  4c9730:	8f83804c 	lw	v1,-32692(gp)
  4c9734:	00000000 	nop
  4c9738:	24635890 	addiu	v1,v1,22672
  4c973c:	00621821 	addu	v1,v1,v0
  4c9740:	8fc2003c 	lw	v0,60(s8)
  4c9744:	00000000 	nop
  4c9748:	24420001 	addiu	v0,v0,1
  4c974c:	90630000 	lbu	v1,0(v1)
  4c9750:	90420000 	lbu	v0,0(v0)
  4c9754:	00000000 	nop
  4c9758:	00621026 	xor	v0,v1,v0
  4c975c:	304200ff 	andi	v0,v0,0xff
  4c9760:	00021080 	sll	v0,v0,0x2
  4c9764:	24420400 	addiu	v0,v0,1024
  4c9768:	8f81804c 	lw	at,-32692(gp)
  4c976c:	00000000 	nop
  4c9770:	24215a90 	addiu	at,at,23184
  4c9774:	00221021 	addu	v0,at,v0
  4c9778:	8c830000 	lw	v1,0(a0)
  4c977c:	8c420000 	lw	v0,0(v0)
  4c9780:	00000000 	nop
  4c9784:	00622026 	xor	a0,v1,v0
  4c9788:	8fc2003c 	lw	v0,60(s8)
  4c978c:	00000000 	nop
  4c9790:	2442000a 	addiu	v0,v0,10
  4c9794:	90420000 	lbu	v0,0(v0)
  4c9798:	00000000 	nop
  4c979c:	38420035 	xori	v0,v0,0x35
  4c97a0:	304200ff 	andi	v0,v0,0xff
  4c97a4:	8f83804c 	lw	v1,-32692(gp)
  4c97a8:	00000000 	nop
  4c97ac:	24635990 	addiu	v1,v1,22928
  4c97b0:	00621821 	addu	v1,v1,v0
  4c97b4:	8fc2003c 	lw	v0,60(s8)
  4c97b8:	00000000 	nop
  4c97bc:	24420002 	addiu	v0,v0,2
  4c97c0:	90630000 	lbu	v1,0(v1)
  4c97c4:	90420000 	lbu	v0,0(v0)
  4c97c8:	00000000 	nop
  4c97cc:	00621026 	xor	v0,v1,v0
  4c97d0:	304200ff 	andi	v0,v0,0xff
  4c97d4:	00021080 	sll	v0,v0,0x2
  4c97d8:	24420800 	addiu	v0,v0,2048
  4c97dc:	8f81804c 	lw	at,-32692(gp)
  4c97e0:	00000000 	nop
  4c97e4:	24215a90 	addiu	at,at,23184
  4c97e8:	00221021 	addu	v0,at,v0
  4c97ec:	8c420000 	lw	v0,0(v0)
  4c97f0:	00000000 	nop
  4c97f4:	00822026 	xor	a0,a0,v0
  4c97f8:	8fc2003c 	lw	v0,60(s8)
  4c97fc:	00000000 	nop
  4c9800:	2442000b 	addiu	v0,v0,11
  4c9804:	90420000 	lbu	v0,0(v0)
  4c9808:	00000000 	nop
  4c980c:	384200d8 	xori	v0,v0,0xd8
  4c9810:	304200ff 	andi	v0,v0,0xff
  4c9814:	8f83804c 	lw	v1,-32692(gp)
  4c9818:	00000000 	nop
  4c981c:	24635990 	addiu	v1,v1,22928
  4c9820:	00621821 	addu	v1,v1,v0
  4c9824:	8fc2003c 	lw	v0,60(s8)
  4c9828:	00000000 	nop
  4c982c:	24420003 	addiu	v0,v0,3
  4c9830:	90630000 	lbu	v1,0(v1)
  4c9834:	90420000 	lbu	v0,0(v0)
  4c9838:	00000000 	nop
  4c983c:	00621026 	xor	v0,v1,v0
  4c9840:	304200ff 	andi	v0,v0,0xff
  4c9844:	00021080 	sll	v0,v0,0x2
  4c9848:	24420c00 	addiu	v0,v0,3072
  4c984c:	8f81804c 	lw	at,-32692(gp)
  4c9850:	00000000 	nop
  4c9854:	24215a90 	addiu	at,at,23184
  4c9858:	00221021 	addu	v0,at,v0
  4c985c:	8c420000 	lw	v0,0(v0)
  4c9860:	00000000 	nop
  4c9864:	00821026 	xor	v0,a0,v0
  4c9868:	afc20014 	sw	v0,20(s8)
  4c986c:	8fc2003c 	lw	v0,60(s8)
  4c9870:	00000000 	nop
  4c9874:	2442000c 	addiu	v0,v0,12
  4c9878:	90420000 	lbu	v0,0(v0)
  4c987c:	00000000 	nop
  4c9880:	38420098 	xori	v0,v0,0x98
  4c9884:	304200ff 	andi	v0,v0,0xff
  4c9888:	8f83804c 	lw	v1,-32692(gp)
  4c988c:	00000000 	nop
  4c9890:	24635890 	addiu	v1,v1,22672
  4c9894:	00621821 	addu	v1,v1,v0
  4c9898:	8fc2003c 	lw	v0,60(s8)
  4c989c:	00000000 	nop
  4c98a0:	24420004 	addiu	v0,v0,4
  4c98a4:	90630000 	lbu	v1,0(v1)
  4c98a8:	90420000 	lbu	v0,0(v0)
  4c98ac:	00000000 	nop
  4c98b0:	00621026 	xor	v0,v1,v0
  4c98b4:	304200ff 	andi	v0,v0,0xff
  4c98b8:	00021080 	sll	v0,v0,0x2
  4c98bc:	8f84804c 	lw	a0,-32692(gp)
  4c98c0:	00000000 	nop
  4c98c4:	24845a90 	addiu	a0,a0,23184
  4c98c8:	00822021 	addu	a0,a0,v0
  4c98cc:	8fc2003c 	lw	v0,60(s8)
  4c98d0:	00000000 	nop
  4c98d4:	2442000d 	addiu	v0,v0,13
  4c98d8:	90420000 	lbu	v0,0(v0)
  4c98dc:	00000000 	nop
  4c98e0:	384200fd 	xori	v0,v0,0xfd
  4c98e4:	304200ff 	andi	v0,v0,0xff
  4c98e8:	8f83804c 	lw	v1,-32692(gp)
  4c98ec:	00000000 	nop
  4c98f0:	24635890 	addiu	v1,v1,22672
  4c98f4:	00621821 	addu	v1,v1,v0
  4c98f8:	8fc2003c 	lw	v0,60(s8)
  4c98fc:	00000000 	nop
  4c9900:	24420005 	addiu	v0,v0,5
  4c9904:	90630000 	lbu	v1,0(v1)
  4c9908:	90420000 	lbu	v0,0(v0)
  4c990c:	00000000 	nop
  4c9910:	00621026 	xor	v0,v1,v0
  4c9914:	304200ff 	andi	v0,v0,0xff
  4c9918:	00021080 	sll	v0,v0,0x2
  4c991c:	24420400 	addiu	v0,v0,1024
  4c9920:	8f81804c 	lw	at,-32692(gp)
  4c9924:	00000000 	nop
  4c9928:	24215a90 	addiu	at,at,23184
  4c992c:	00221021 	addu	v0,at,v0
  4c9930:	8c830000 	lw	v1,0(a0)
  4c9934:	8c420000 	lw	v0,0(v0)
  4c9938:	00000000 	nop
  4c993c:	00622026 	xor	a0,v1,v0
  4c9940:	8fc2003c 	lw	v0,60(s8)
  4c9944:	00000000 	nop
  4c9948:	2442000e 	addiu	v0,v0,14
  4c994c:	90420000 	lbu	v0,0(v0)
  4c9950:	00000000 	nop
  4c9954:	38420098 	xori	v0,v0,0x98
  4c9958:	304200ff 	andi	v0,v0,0xff
  4c995c:	8f83804c 	lw	v1,-32692(gp)
  4c9960:	00000000 	nop
  4c9964:	24635990 	addiu	v1,v1,22928
  4c9968:	00621821 	addu	v1,v1,v0
  4c996c:	8fc2003c 	lw	v0,60(s8)
  4c9970:	00000000 	nop
  4c9974:	24420006 	addiu	v0,v0,6
  4c9978:	90630000 	lbu	v1,0(v1)
  4c997c:	90420000 	lbu	v0,0(v0)
  4c9980:	00000000 	nop
  4c9984:	00621026 	xor	v0,v1,v0
  4c9988:	304200ff 	andi	v0,v0,0xff
  4c998c:	00021080 	sll	v0,v0,0x2
  4c9990:	24420800 	addiu	v0,v0,2048
  4c9994:	8f81804c 	lw	at,-32692(gp)
  4c9998:	00000000 	nop
  4c999c:	24215a90 	addiu	at,at,23184
  4c99a0:	00221021 	addu	v0,at,v0
  4c99a4:	8c420000 	lw	v0,0(v0)
  4c99a8:	00000000 	nop
  4c99ac:	00822026 	xor	a0,a0,v0
  4c99b0:	8fc2003c 	lw	v0,60(s8)
  4c99b4:	00000000 	nop
  4c99b8:	2442000f 	addiu	v0,v0,15
  4c99bc:	90420000 	lbu	v0,0(v0)
  4c99c0:	00000000 	nop
  4c99c4:	384200fd 	xori	v0,v0,0xfd
  4c99c8:	304200ff 	andi	v0,v0,0xff
  4c99cc:	8f83804c 	lw	v1,-32692(gp)
  4c99d0:	00000000 	nop
  4c99d4:	24635990 	addiu	v1,v1,22928
  4c99d8:	00621821 	addu	v1,v1,v0
  4c99dc:	8fc2003c 	lw	v0,60(s8)
  4c99e0:	00000000 	nop
  4c99e4:	24420007 	addiu	v0,v0,7
  4c99e8:	90630000 	lbu	v1,0(v1)
  4c99ec:	90420000 	lbu	v0,0(v0)
  4c99f0:	00000000 	nop
  4c99f4:	00621026 	xor	v0,v1,v0
  4c99f8:	304200ff 	andi	v0,v0,0xff
  4c99fc:	00021080 	sll	v0,v0,0x2
  4c9a00:	24420c00 	addiu	v0,v0,3072
  4c9a04:	8f81804c 	lw	at,-32692(gp)
  4c9a08:	00000000 	nop
  4c9a0c:	24215a90 	addiu	at,at,23184
  4c9a10:	00221021 	addu	v0,at,v0
  4c9a14:	8c420000 	lw	v0,0(v0)
  4c9a18:	00000000 	nop
  4c9a1c:	00821026 	xor	v0,a0,v0
  4c9a20:	afc20018 	sw	v0,24(s8)
  4c9a24:	8fc20018 	lw	v0,24(s8)
  4c9a28:	00000000 	nop
  4c9a2c:	00021a00 	sll	v1,v0,0x8
  4c9a30:	00021602 	srl	v0,v0,0x18
  4c9a34:	00621025 	or	v0,v1,v0
  4c9a38:	afc20018 	sw	v0,24(s8)
  4c9a3c:	8fc30014 	lw	v1,20(s8)
  4c9a40:	8fc20018 	lw	v0,24(s8)
  4c9a44:	00000000 	nop
  4c9a48:	00621021 	addu	v0,v1,v0
  4c9a4c:	afc20014 	sw	v0,20(s8)
  4c9a50:	8fc30018 	lw	v1,24(s8)
  4c9a54:	8fc20014 	lw	v0,20(s8)
  4c9a58:	00000000 	nop
  4c9a5c:	00621021 	addu	v0,v1,v0
  4c9a60:	afc20018 	sw	v0,24(s8)
  4c9a64:	8fc30014 	lw	v1,20(s8)
  4c9a68:	8fc20038 	lw	v0,56(s8)
  4c9a6c:	00000000 	nop
  4c9a70:	ac431048 	sw	v1,4168(v0)
  4c9a74:	8fc20018 	lw	v0,24(s8)
  4c9a78:	00000000 	nop
  4c9a7c:	00021a40 	sll	v1,v0,0x9
  4c9a80:	000215c2 	srl	v0,v0,0x17
  4c9a84:	00621825 	or	v1,v1,v0
  4c9a88:	8fc20038 	lw	v0,56(s8)
  4c9a8c:	00000000 	nop
  4c9a90:	ac43104c 	sw	v1,4172(v0)
		CALC_K (k, 12, 0x18, 0x37, 0xF7, 0x71);
  4c9a94:	8fc2003c 	lw	v0,60(s8)
  4c9a98:	00000000 	nop
  4c9a9c:	24420008 	addiu	v0,v0,8
  4c9aa0:	90420000 	lbu	v0,0(v0)
  4c9aa4:	00000000 	nop
  4c9aa8:	38420018 	xori	v0,v0,0x18
  4c9aac:	304200ff 	andi	v0,v0,0xff
  4c9ab0:	8f81804c 	lw	at,-32692(gp)
  4c9ab4:	00000000 	nop
  4c9ab8:	24215890 	addiu	at,at,22672
  4c9abc:	00221021 	addu	v0,at,v0
  4c9ac0:	90430000 	lbu	v1,0(v0)
  4c9ac4:	8fc2003c 	lw	v0,60(s8)
  4c9ac8:	00000000 	nop
  4c9acc:	90420000 	lbu	v0,0(v0)
  4c9ad0:	00000000 	nop
  4c9ad4:	00621026 	xor	v0,v1,v0
  4c9ad8:	304200ff 	andi	v0,v0,0xff
  4c9adc:	00021080 	sll	v0,v0,0x2
  4c9ae0:	8f84804c 	lw	a0,-32692(gp)
  4c9ae4:	00000000 	nop
  4c9ae8:	24845a90 	addiu	a0,a0,23184
  4c9aec:	00822021 	addu	a0,a0,v0
  4c9af0:	8fc2003c 	lw	v0,60(s8)
  4c9af4:	00000000 	nop
  4c9af8:	24420009 	addiu	v0,v0,9
  4c9afc:	90420000 	lbu	v0,0(v0)
  4c9b00:	00000000 	nop
  4c9b04:	38420037 	xori	v0,v0,0x37
  4c9b08:	304200ff 	andi	v0,v0,0xff
  4c9b0c:	8f83804c 	lw	v1,-32692(gp)
  4c9b10:	00000000 	nop
  4c9b14:	24635890 	addiu	v1,v1,22672
  4c9b18:	00621821 	addu	v1,v1,v0
  4c9b1c:	8fc2003c 	lw	v0,60(s8)
  4c9b20:	00000000 	nop
  4c9b24:	24420001 	addiu	v0,v0,1
  4c9b28:	90630000 	lbu	v1,0(v1)
  4c9b2c:	90420000 	lbu	v0,0(v0)
  4c9b30:	00000000 	nop
  4c9b34:	00621026 	xor	v0,v1,v0
  4c9b38:	304200ff 	andi	v0,v0,0xff
  4c9b3c:	00021080 	sll	v0,v0,0x2
  4c9b40:	24420400 	addiu	v0,v0,1024
  4c9b44:	8f81804c 	lw	at,-32692(gp)
  4c9b48:	00000000 	nop
  4c9b4c:	24215a90 	addiu	at,at,23184
  4c9b50:	00221021 	addu	v0,at,v0
  4c9b54:	8c830000 	lw	v1,0(a0)
  4c9b58:	8c420000 	lw	v0,0(v0)
  4c9b5c:	00000000 	nop
  4c9b60:	00622026 	xor	a0,v1,v0
  4c9b64:	8fc2003c 	lw	v0,60(s8)
  4c9b68:	00000000 	nop
  4c9b6c:	2442000a 	addiu	v0,v0,10
  4c9b70:	90420000 	lbu	v0,0(v0)
  4c9b74:	00000000 	nop
  4c9b78:	38420018 	xori	v0,v0,0x18
  4c9b7c:	304200ff 	andi	v0,v0,0xff
  4c9b80:	8f83804c 	lw	v1,-32692(gp)
  4c9b84:	00000000 	nop
  4c9b88:	24635990 	addiu	v1,v1,22928
  4c9b8c:	00621821 	addu	v1,v1,v0
  4c9b90:	8fc2003c 	lw	v0,60(s8)
  4c9b94:	00000000 	nop
  4c9b98:	24420002 	addiu	v0,v0,2
  4c9b9c:	90630000 	lbu	v1,0(v1)
  4c9ba0:	90420000 	lbu	v0,0(v0)
  4c9ba4:	00000000 	nop
  4c9ba8:	00621026 	xor	v0,v1,v0
  4c9bac:	304200ff 	andi	v0,v0,0xff
  4c9bb0:	00021080 	sll	v0,v0,0x2
  4c9bb4:	24420800 	addiu	v0,v0,2048
  4c9bb8:	8f81804c 	lw	at,-32692(gp)
  4c9bbc:	00000000 	nop
  4c9bc0:	24215a90 	addiu	at,at,23184
  4c9bc4:	00221021 	addu	v0,at,v0
  4c9bc8:	8c420000 	lw	v0,0(v0)
  4c9bcc:	00000000 	nop
  4c9bd0:	00822026 	xor	a0,a0,v0
  4c9bd4:	8fc2003c 	lw	v0,60(s8)
  4c9bd8:	00000000 	nop
  4c9bdc:	2442000b 	addiu	v0,v0,11
  4c9be0:	90420000 	lbu	v0,0(v0)
  4c9be4:	00000000 	nop
  4c9be8:	38420037 	xori	v0,v0,0x37
  4c9bec:	304200ff 	andi	v0,v0,0xff
  4c9bf0:	8f83804c 	lw	v1,-32692(gp)
  4c9bf4:	00000000 	nop
  4c9bf8:	24635990 	addiu	v1,v1,22928
  4c9bfc:	00621821 	addu	v1,v1,v0
  4c9c00:	8fc2003c 	lw	v0,60(s8)
  4c9c04:	00000000 	nop
  4c9c08:	24420003 	addiu	v0,v0,3
  4c9c0c:	90630000 	lbu	v1,0(v1)
  4c9c10:	90420000 	lbu	v0,0(v0)
  4c9c14:	00000000 	nop
  4c9c18:	00621026 	xor	v0,v1,v0
  4c9c1c:	304200ff 	andi	v0,v0,0xff
  4c9c20:	00021080 	sll	v0,v0,0x2
  4c9c24:	24420c00 	addiu	v0,v0,3072
  4c9c28:	8f81804c 	lw	at,-32692(gp)
  4c9c2c:	00000000 	nop
  4c9c30:	24215a90 	addiu	at,at,23184
  4c9c34:	00221021 	addu	v0,at,v0
  4c9c38:	8c420000 	lw	v0,0(v0)
  4c9c3c:	00000000 	nop
  4c9c40:	00821026 	xor	v0,a0,v0
  4c9c44:	afc20014 	sw	v0,20(s8)
  4c9c48:	8fc2003c 	lw	v0,60(s8)
  4c9c4c:	00000000 	nop
  4c9c50:	2442000c 	addiu	v0,v0,12
  4c9c54:	90420000 	lbu	v0,0(v0)
  4c9c58:	00000000 	nop
  4c9c5c:	384200f7 	xori	v0,v0,0xf7
  4c9c60:	304200ff 	andi	v0,v0,0xff
  4c9c64:	8f83804c 	lw	v1,-32692(gp)
  4c9c68:	00000000 	nop
  4c9c6c:	24635890 	addiu	v1,v1,22672
  4c9c70:	00621821 	addu	v1,v1,v0
  4c9c74:	8fc2003c 	lw	v0,60(s8)
  4c9c78:	00000000 	nop
  4c9c7c:	24420004 	addiu	v0,v0,4
  4c9c80:	90630000 	lbu	v1,0(v1)
  4c9c84:	90420000 	lbu	v0,0(v0)
  4c9c88:	00000000 	nop
  4c9c8c:	00621026 	xor	v0,v1,v0
  4c9c90:	304200ff 	andi	v0,v0,0xff
  4c9c94:	00021080 	sll	v0,v0,0x2
  4c9c98:	8f84804c 	lw	a0,-32692(gp)
  4c9c9c:	00000000 	nop
  4c9ca0:	24845a90 	addiu	a0,a0,23184
  4c9ca4:	00822021 	addu	a0,a0,v0
  4c9ca8:	8fc2003c 	lw	v0,60(s8)
  4c9cac:	00000000 	nop
  4c9cb0:	2442000d 	addiu	v0,v0,13
  4c9cb4:	90420000 	lbu	v0,0(v0)
  4c9cb8:	00000000 	nop
  4c9cbc:	38420071 	xori	v0,v0,0x71
  4c9cc0:	304200ff 	andi	v0,v0,0xff
  4c9cc4:	8f83804c 	lw	v1,-32692(gp)
  4c9cc8:	00000000 	nop
  4c9ccc:	24635890 	addiu	v1,v1,22672
  4c9cd0:	00621821 	addu	v1,v1,v0
  4c9cd4:	8fc2003c 	lw	v0,60(s8)
  4c9cd8:	00000000 	nop
  4c9cdc:	24420005 	addiu	v0,v0,5
  4c9ce0:	90630000 	lbu	v1,0(v1)
  4c9ce4:	90420000 	lbu	v0,0(v0)
  4c9ce8:	00000000 	nop
  4c9cec:	00621026 	xor	v0,v1,v0
  4c9cf0:	304200ff 	andi	v0,v0,0xff
  4c9cf4:	00021080 	sll	v0,v0,0x2
  4c9cf8:	24420400 	addiu	v0,v0,1024
  4c9cfc:	8f81804c 	lw	at,-32692(gp)
  4c9d00:	00000000 	nop
  4c9d04:	24215a90 	addiu	at,at,23184
  4c9d08:	00221021 	addu	v0,at,v0
  4c9d0c:	8c830000 	lw	v1,0(a0)
  4c9d10:	8c420000 	lw	v0,0(v0)
  4c9d14:	00000000 	nop
  4c9d18:	00622026 	xor	a0,v1,v0
  4c9d1c:	8fc2003c 	lw	v0,60(s8)
  4c9d20:	00000000 	nop
  4c9d24:	2442000e 	addiu	v0,v0,14
  4c9d28:	90420000 	lbu	v0,0(v0)
  4c9d2c:	00000000 	nop
  4c9d30:	384200f7 	xori	v0,v0,0xf7
  4c9d34:	304200ff 	andi	v0,v0,0xff
  4c9d38:	8f83804c 	lw	v1,-32692(gp)
  4c9d3c:	00000000 	nop
  4c9d40:	24635990 	addiu	v1,v1,22928
  4c9d44:	00621821 	addu	v1,v1,v0
  4c9d48:	8fc2003c 	lw	v0,60(s8)
  4c9d4c:	00000000 	nop
  4c9d50:	24420006 	addiu	v0,v0,6
  4c9d54:	90630000 	lbu	v1,0(v1)
  4c9d58:	90420000 	lbu	v0,0(v0)
  4c9d5c:	00000000 	nop
  4c9d60:	00621026 	xor	v0,v1,v0
  4c9d64:	304200ff 	andi	v0,v0,0xff
  4c9d68:	00021080 	sll	v0,v0,0x2
  4c9d6c:	24420800 	addiu	v0,v0,2048
  4c9d70:	8f81804c 	lw	at,-32692(gp)
  4c9d74:	00000000 	nop
  4c9d78:	24215a90 	addiu	at,at,23184
  4c9d7c:	00221021 	addu	v0,at,v0
  4c9d80:	8c420000 	lw	v0,0(v0)
  4c9d84:	00000000 	nop
  4c9d88:	00822026 	xor	a0,a0,v0
  4c9d8c:	8fc2003c 	lw	v0,60(s8)
  4c9d90:	00000000 	nop
  4c9d94:	2442000f 	addiu	v0,v0,15
  4c9d98:	90420000 	lbu	v0,0(v0)
  4c9d9c:	00000000 	nop
  4c9da0:	38420071 	xori	v0,v0,0x71
  4c9da4:	304200ff 	andi	v0,v0,0xff
  4c9da8:	8f83804c 	lw	v1,-32692(gp)
  4c9dac:	00000000 	nop
  4c9db0:	24635990 	addiu	v1,v1,22928
  4c9db4:	00621821 	addu	v1,v1,v0
  4c9db8:	8fc2003c 	lw	v0,60(s8)
  4c9dbc:	00000000 	nop
  4c9dc0:	24420007 	addiu	v0,v0,7
  4c9dc4:	90630000 	lbu	v1,0(v1)
  4c9dc8:	90420000 	lbu	v0,0(v0)
  4c9dcc:	00000000 	nop
  4c9dd0:	00621026 	xor	v0,v1,v0
  4c9dd4:	304200ff 	andi	v0,v0,0xff
  4c9dd8:	00021080 	sll	v0,v0,0x2
  4c9ddc:	24420c00 	addiu	v0,v0,3072
  4c9de0:	8f81804c 	lw	at,-32692(gp)
  4c9de4:	00000000 	nop
  4c9de8:	24215a90 	addiu	at,at,23184
  4c9dec:	00221021 	addu	v0,at,v0
  4c9df0:	8c420000 	lw	v0,0(v0)
  4c9df4:	00000000 	nop
  4c9df8:	00821026 	xor	v0,a0,v0
  4c9dfc:	afc20018 	sw	v0,24(s8)
  4c9e00:	8fc20018 	lw	v0,24(s8)
  4c9e04:	00000000 	nop
  4c9e08:	00021a00 	sll	v1,v0,0x8
  4c9e0c:	00021602 	srl	v0,v0,0x18
  4c9e10:	00621025 	or	v0,v1,v0
  4c9e14:	afc20018 	sw	v0,24(s8)
  4c9e18:	8fc30014 	lw	v1,20(s8)
  4c9e1c:	8fc20018 	lw	v0,24(s8)
  4c9e20:	00000000 	nop
  4c9e24:	00621021 	addu	v0,v1,v0
  4c9e28:	afc20014 	sw	v0,20(s8)
  4c9e2c:	8fc30018 	lw	v1,24(s8)
  4c9e30:	8fc20014 	lw	v0,20(s8)
  4c9e34:	00000000 	nop
  4c9e38:	00621021 	addu	v0,v1,v0
  4c9e3c:	afc20018 	sw	v0,24(s8)
  4c9e40:	8fc30014 	lw	v1,20(s8)
  4c9e44:	8fc20038 	lw	v0,56(s8)
  4c9e48:	00000000 	nop
  4c9e4c:	ac431050 	sw	v1,4176(v0)
  4c9e50:	8fc20018 	lw	v0,24(s8)
  4c9e54:	00000000 	nop
  4c9e58:	00021a40 	sll	v1,v0,0x9
  4c9e5c:	000215c2 	srl	v0,v0,0x17
  4c9e60:	00621825 	or	v1,v1,v0
  4c9e64:	8fc20038 	lw	v0,56(s8)
  4c9e68:	00000000 	nop
  4c9e6c:	ac431054 	sw	v1,4180(v0)
		CALC_K (k, 14, 0xEC, 0xF1, 0x6C, 0xE1);
  4c9e70:	8fc2003c 	lw	v0,60(s8)
  4c9e74:	00000000 	nop
  4c9e78:	24420008 	addiu	v0,v0,8
  4c9e7c:	90420000 	lbu	v0,0(v0)
  4c9e80:	00000000 	nop
  4c9e84:	384200ec 	xori	v0,v0,0xec
  4c9e88:	304200ff 	andi	v0,v0,0xff
  4c9e8c:	8f81804c 	lw	at,-32692(gp)
  4c9e90:	00000000 	nop
  4c9e94:	24215890 	addiu	at,at,22672
  4c9e98:	00221021 	addu	v0,at,v0
  4c9e9c:	90430000 	lbu	v1,0(v0)
  4c9ea0:	8fc2003c 	lw	v0,60(s8)
  4c9ea4:	00000000 	nop
  4c9ea8:	90420000 	lbu	v0,0(v0)
  4c9eac:	00000000 	nop
  4c9eb0:	00621026 	xor	v0,v1,v0
  4c9eb4:	304200ff 	andi	v0,v0,0xff
  4c9eb8:	00021080 	sll	v0,v0,0x2
  4c9ebc:	8f84804c 	lw	a0,-32692(gp)
  4c9ec0:	00000000 	nop
  4c9ec4:	24845a90 	addiu	a0,a0,23184
  4c9ec8:	00822021 	addu	a0,a0,v0
  4c9ecc:	8fc2003c 	lw	v0,60(s8)
  4c9ed0:	00000000 	nop
  4c9ed4:	24420009 	addiu	v0,v0,9
  4c9ed8:	90420000 	lbu	v0,0(v0)
  4c9edc:	00000000 	nop
  4c9ee0:	384200f1 	xori	v0,v0,0xf1
  4c9ee4:	304200ff 	andi	v0,v0,0xff
  4c9ee8:	8f83804c 	lw	v1,-32692(gp)
  4c9eec:	00000000 	nop
  4c9ef0:	24635890 	addiu	v1,v1,22672
  4c9ef4:	00621821 	addu	v1,v1,v0
  4c9ef8:	8fc2003c 	lw	v0,60(s8)
  4c9efc:	00000000 	nop
  4c9f00:	24420001 	addiu	v0,v0,1
  4c9f04:	90630000 	lbu	v1,0(v1)
  4c9f08:	90420000 	lbu	v0,0(v0)
  4c9f0c:	00000000 	nop
  4c9f10:	00621026 	xor	v0,v1,v0
  4c9f14:	304200ff 	andi	v0,v0,0xff
  4c9f18:	00021080 	sll	v0,v0,0x2
  4c9f1c:	24420400 	addiu	v0,v0,1024
  4c9f20:	8f81804c 	lw	at,-32692(gp)
  4c9f24:	00000000 	nop
  4c9f28:	24215a90 	addiu	at,at,23184
  4c9f2c:	00221021 	addu	v0,at,v0
  4c9f30:	8c830000 	lw	v1,0(a0)
  4c9f34:	8c420000 	lw	v0,0(v0)
  4c9f38:	00000000 	nop
  4c9f3c:	00622026 	xor	a0,v1,v0
  4c9f40:	8fc2003c 	lw	v0,60(s8)
  4c9f44:	00000000 	nop
  4c9f48:	2442000a 	addiu	v0,v0,10
  4c9f4c:	90420000 	lbu	v0,0(v0)
  4c9f50:	00000000 	nop
  4c9f54:	384200ec 	xori	v0,v0,0xec
  4c9f58:	304200ff 	andi	v0,v0,0xff
  4c9f5c:	8f83804c 	lw	v1,-32692(gp)
  4c9f60:	00000000 	nop
  4c9f64:	24635990 	addiu	v1,v1,22928
  4c9f68:	00621821 	addu	v1,v1,v0
  4c9f6c:	8fc2003c 	lw	v0,60(s8)
  4c9f70:	00000000 	nop
  4c9f74:	24420002 	addiu	v0,v0,2
  4c9f78:	90630000 	lbu	v1,0(v1)
  4c9f7c:	90420000 	lbu	v0,0(v0)
  4c9f80:	00000000 	nop
  4c9f84:	00621026 	xor	v0,v1,v0
  4c9f88:	304200ff 	andi	v0,v0,0xff
  4c9f8c:	00021080 	sll	v0,v0,0x2
  4c9f90:	24420800 	addiu	v0,v0,2048
  4c9f94:	8f81804c 	lw	at,-32692(gp)
  4c9f98:	00000000 	nop
  4c9f9c:	24215a90 	addiu	at,at,23184
  4c9fa0:	00221021 	addu	v0,at,v0
  4c9fa4:	8c420000 	lw	v0,0(v0)
  4c9fa8:	00000000 	nop
  4c9fac:	00822026 	xor	a0,a0,v0
  4c9fb0:	8fc2003c 	lw	v0,60(s8)
  4c9fb4:	00000000 	nop
  4c9fb8:	2442000b 	addiu	v0,v0,11
  4c9fbc:	90420000 	lbu	v0,0(v0)
  4c9fc0:	00000000 	nop
  4c9fc4:	384200f1 	xori	v0,v0,0xf1
  4c9fc8:	304200ff 	andi	v0,v0,0xff
  4c9fcc:	8f83804c 	lw	v1,-32692(gp)
  4c9fd0:	00000000 	nop
  4c9fd4:	24635990 	addiu	v1,v1,22928
  4c9fd8:	00621821 	addu	v1,v1,v0
  4c9fdc:	8fc2003c 	lw	v0,60(s8)
  4c9fe0:	00000000 	nop
  4c9fe4:	24420003 	addiu	v0,v0,3
  4c9fe8:	90630000 	lbu	v1,0(v1)
  4c9fec:	90420000 	lbu	v0,0(v0)
  4c9ff0:	00000000 	nop
  4c9ff4:	00621026 	xor	v0,v1,v0
  4c9ff8:	304200ff 	andi	v0,v0,0xff
  4c9ffc:	00021080 	sll	v0,v0,0x2
  4ca000:	24420c00 	addiu	v0,v0,3072
  4ca004:	8f81804c 	lw	at,-32692(gp)
  4ca008:	00000000 	nop
  4ca00c:	24215a90 	addiu	at,at,23184
  4ca010:	00221021 	addu	v0,at,v0
  4ca014:	8c420000 	lw	v0,0(v0)
  4ca018:	00000000 	nop
  4ca01c:	00821026 	xor	v0,a0,v0
  4ca020:	afc20014 	sw	v0,20(s8)
  4ca024:	8fc2003c 	lw	v0,60(s8)
  4ca028:	00000000 	nop
  4ca02c:	2442000c 	addiu	v0,v0,12
  4ca030:	90420000 	lbu	v0,0(v0)
  4ca034:	00000000 	nop
  4ca038:	3842006c 	xori	v0,v0,0x6c
  4ca03c:	304200ff 	andi	v0,v0,0xff
  4ca040:	8f83804c 	lw	v1,-32692(gp)
  4ca044:	00000000 	nop
  4ca048:	24635890 	addiu	v1,v1,22672
  4ca04c:	00621821 	addu	v1,v1,v0
  4ca050:	8fc2003c 	lw	v0,60(s8)
  4ca054:	00000000 	nop
  4ca058:	24420004 	addiu	v0,v0,4
  4ca05c:	90630000 	lbu	v1,0(v1)
  4ca060:	90420000 	lbu	v0,0(v0)
  4ca064:	00000000 	nop
  4ca068:	00621026 	xor	v0,v1,v0
  4ca06c:	304200ff 	andi	v0,v0,0xff
  4ca070:	00021080 	sll	v0,v0,0x2
  4ca074:	8f84804c 	lw	a0,-32692(gp)
  4ca078:	00000000 	nop
  4ca07c:	24845a90 	addiu	a0,a0,23184
  4ca080:	00822021 	addu	a0,a0,v0
  4ca084:	8fc2003c 	lw	v0,60(s8)
  4ca088:	00000000 	nop
  4ca08c:	2442000d 	addiu	v0,v0,13
  4ca090:	90420000 	lbu	v0,0(v0)
  4ca094:	00000000 	nop
  4ca098:	384200e1 	xori	v0,v0,0xe1
  4ca09c:	304200ff 	andi	v0,v0,0xff
  4ca0a0:	8f83804c 	lw	v1,-32692(gp)
  4ca0a4:	00000000 	nop
  4ca0a8:	24635890 	addiu	v1,v1,22672
  4ca0ac:	00621821 	addu	v1,v1,v0
  4ca0b0:	8fc2003c 	lw	v0,60(s8)
  4ca0b4:	00000000 	nop
  4ca0b8:	24420005 	addiu	v0,v0,5
  4ca0bc:	90630000 	lbu	v1,0(v1)
  4ca0c0:	90420000 	lbu	v0,0(v0)
  4ca0c4:	00000000 	nop
  4ca0c8:	00621026 	xor	v0,v1,v0
  4ca0cc:	304200ff 	andi	v0,v0,0xff
  4ca0d0:	00021080 	sll	v0,v0,0x2
  4ca0d4:	24420400 	addiu	v0,v0,1024
  4ca0d8:	8f81804c 	lw	at,-32692(gp)
  4ca0dc:	00000000 	nop
  4ca0e0:	24215a90 	addiu	at,at,23184
  4ca0e4:	00221021 	addu	v0,at,v0
  4ca0e8:	8c830000 	lw	v1,0(a0)
  4ca0ec:	8c420000 	lw	v0,0(v0)
  4ca0f0:	00000000 	nop
  4ca0f4:	00622026 	xor	a0,v1,v0
  4ca0f8:	8fc2003c 	lw	v0,60(s8)
  4ca0fc:	00000000 	nop
  4ca100:	2442000e 	addiu	v0,v0,14
  4ca104:	90420000 	lbu	v0,0(v0)
  4ca108:	00000000 	nop
  4ca10c:	3842006c 	xori	v0,v0,0x6c
  4ca110:	304200ff 	andi	v0,v0,0xff
  4ca114:	8f83804c 	lw	v1,-32692(gp)
  4ca118:	00000000 	nop
  4ca11c:	24635990 	addiu	v1,v1,22928
  4ca120:	00621821 	addu	v1,v1,v0
  4ca124:	8fc2003c 	lw	v0,60(s8)
  4ca128:	00000000 	nop
  4ca12c:	24420006 	addiu	v0,v0,6
  4ca130:	90630000 	lbu	v1,0(v1)
  4ca134:	90420000 	lbu	v0,0(v0)
  4ca138:	00000000 	nop
  4ca13c:	00621026 	xor	v0,v1,v0
  4ca140:	304200ff 	andi	v0,v0,0xff
  4ca144:	00021080 	sll	v0,v0,0x2
  4ca148:	24420800 	addiu	v0,v0,2048
  4ca14c:	8f81804c 	lw	at,-32692(gp)
  4ca150:	00000000 	nop
  4ca154:	24215a90 	addiu	at,at,23184
  4ca158:	00221021 	addu	v0,at,v0
  4ca15c:	8c420000 	lw	v0,0(v0)
  4ca160:	00000000 	nop
  4ca164:	00822026 	xor	a0,a0,v0
  4ca168:	8fc2003c 	lw	v0,60(s8)
  4ca16c:	00000000 	nop
  4ca170:	2442000f 	addiu	v0,v0,15
  4ca174:	90420000 	lbu	v0,0(v0)
  4ca178:	00000000 	nop
  4ca17c:	384200e1 	xori	v0,v0,0xe1
  4ca180:	304200ff 	andi	v0,v0,0xff
  4ca184:	8f83804c 	lw	v1,-32692(gp)
  4ca188:	00000000 	nop
  4ca18c:	24635990 	addiu	v1,v1,22928
  4ca190:	00621821 	addu	v1,v1,v0
  4ca194:	8fc2003c 	lw	v0,60(s8)
  4ca198:	00000000 	nop
  4ca19c:	24420007 	addiu	v0,v0,7
  4ca1a0:	90630000 	lbu	v1,0(v1)
  4ca1a4:	90420000 	lbu	v0,0(v0)
  4ca1a8:	00000000 	nop
  4ca1ac:	00621026 	xor	v0,v1,v0
  4ca1b0:	304200ff 	andi	v0,v0,0xff
  4ca1b4:	00021080 	sll	v0,v0,0x2
  4ca1b8:	24420c00 	addiu	v0,v0,3072
  4ca1bc:	8f81804c 	lw	at,-32692(gp)
  4ca1c0:	00000000 	nop
  4ca1c4:	24215a90 	addiu	at,at,23184
  4ca1c8:	00221021 	addu	v0,at,v0
  4ca1cc:	8c420000 	lw	v0,0(v0)
  4ca1d0:	00000000 	nop
  4ca1d4:	00821026 	xor	v0,a0,v0
  4ca1d8:	afc20018 	sw	v0,24(s8)
  4ca1dc:	8fc20018 	lw	v0,24(s8)
  4ca1e0:	00000000 	nop
  4ca1e4:	00021a00 	sll	v1,v0,0x8
  4ca1e8:	00021602 	srl	v0,v0,0x18
  4ca1ec:	00621025 	or	v0,v1,v0
  4ca1f0:	afc20018 	sw	v0,24(s8)
  4ca1f4:	8fc30014 	lw	v1,20(s8)
  4ca1f8:	8fc20018 	lw	v0,24(s8)
  4ca1fc:	00000000 	nop
  4ca200:	00621021 	addu	v0,v1,v0
  4ca204:	afc20014 	sw	v0,20(s8)
  4ca208:	8fc30018 	lw	v1,24(s8)
  4ca20c:	8fc20014 	lw	v0,20(s8)
  4ca210:	00000000 	nop
  4ca214:	00621021 	addu	v0,v1,v0
  4ca218:	afc20018 	sw	v0,24(s8)
  4ca21c:	8fc30014 	lw	v1,20(s8)
  4ca220:	8fc20038 	lw	v0,56(s8)
  4ca224:	00000000 	nop
  4ca228:	ac431058 	sw	v1,4184(v0)
  4ca22c:	8fc20018 	lw	v0,24(s8)
  4ca230:	00000000 	nop
  4ca234:	00021a40 	sll	v1,v0,0x9
  4ca238:	000215c2 	srl	v0,v0,0x17
  4ca23c:	00621825 	or	v1,v1,v0
  4ca240:	8fc20038 	lw	v0,56(s8)
  4ca244:	00000000 	nop
  4ca248:	ac43105c 	sw	v1,4188(v0)
		CALC_K (k, 16, 0x43, 0x30, 0x75, 0x0F);
  4ca24c:	8fc2003c 	lw	v0,60(s8)
  4ca250:	00000000 	nop
  4ca254:	24420008 	addiu	v0,v0,8
  4ca258:	90420000 	lbu	v0,0(v0)
  4ca25c:	00000000 	nop
  4ca260:	38420043 	xori	v0,v0,0x43
  4ca264:	304200ff 	andi	v0,v0,0xff
  4ca268:	8f81804c 	lw	at,-32692(gp)
  4ca26c:	00000000 	nop
  4ca270:	24215890 	addiu	at,at,22672
  4ca274:	00221021 	addu	v0,at,v0
  4ca278:	90430000 	lbu	v1,0(v0)
  4ca27c:	8fc2003c 	lw	v0,60(s8)
  4ca280:	00000000 	nop
  4ca284:	90420000 	lbu	v0,0(v0)
  4ca288:	00000000 	nop
  4ca28c:	00621026 	xor	v0,v1,v0
  4ca290:	304200ff 	andi	v0,v0,0xff
  4ca294:	00021080 	sll	v0,v0,0x2
  4ca298:	8f84804c 	lw	a0,-32692(gp)
  4ca29c:	00000000 	nop
  4ca2a0:	24845a90 	addiu	a0,a0,23184
  4ca2a4:	00822021 	addu	a0,a0,v0
  4ca2a8:	8fc2003c 	lw	v0,60(s8)
  4ca2ac:	00000000 	nop
  4ca2b0:	24420009 	addiu	v0,v0,9
  4ca2b4:	90420000 	lbu	v0,0(v0)
  4ca2b8:	00000000 	nop
  4ca2bc:	38420030 	xori	v0,v0,0x30
  4ca2c0:	304200ff 	andi	v0,v0,0xff
  4ca2c4:	8f83804c 	lw	v1,-32692(gp)
  4ca2c8:	00000000 	nop
  4ca2cc:	24635890 	addiu	v1,v1,22672
  4ca2d0:	00621821 	addu	v1,v1,v0
  4ca2d4:	8fc2003c 	lw	v0,60(s8)
  4ca2d8:	00000000 	nop
  4ca2dc:	24420001 	addiu	v0,v0,1
  4ca2e0:	90630000 	lbu	v1,0(v1)
  4ca2e4:	90420000 	lbu	v0,0(v0)
  4ca2e8:	00000000 	nop
  4ca2ec:	00621026 	xor	v0,v1,v0
  4ca2f0:	304200ff 	andi	v0,v0,0xff
  4ca2f4:	00021080 	sll	v0,v0,0x2
  4ca2f8:	24420400 	addiu	v0,v0,1024
  4ca2fc:	8f81804c 	lw	at,-32692(gp)
  4ca300:	00000000 	nop
  4ca304:	24215a90 	addiu	at,at,23184
  4ca308:	00221021 	addu	v0,at,v0
  4ca30c:	8c830000 	lw	v1,0(a0)
  4ca310:	8c420000 	lw	v0,0(v0)
  4ca314:	00000000 	nop
  4ca318:	00622026 	xor	a0,v1,v0
  4ca31c:	8fc2003c 	lw	v0,60(s8)
  4ca320:	00000000 	nop
  4ca324:	2442000a 	addiu	v0,v0,10
  4ca328:	90420000 	lbu	v0,0(v0)
  4ca32c:	00000000 	nop
  4ca330:	38420043 	xori	v0,v0,0x43
  4ca334:	304200ff 	andi	v0,v0,0xff
  4ca338:	8f83804c 	lw	v1,-32692(gp)
  4ca33c:	00000000 	nop
  4ca340:	24635990 	addiu	v1,v1,22928
  4ca344:	00621821 	addu	v1,v1,v0
  4ca348:	8fc2003c 	lw	v0,60(s8)
  4ca34c:	00000000 	nop
  4ca350:	24420002 	addiu	v0,v0,2
  4ca354:	90630000 	lbu	v1,0(v1)
  4ca358:	90420000 	lbu	v0,0(v0)
  4ca35c:	00000000 	nop
  4ca360:	00621026 	xor	v0,v1,v0
  4ca364:	304200ff 	andi	v0,v0,0xff
  4ca368:	00021080 	sll	v0,v0,0x2
  4ca36c:	24420800 	addiu	v0,v0,2048
  4ca370:	8f81804c 	lw	at,-32692(gp)
  4ca374:	00000000 	nop
  4ca378:	24215a90 	addiu	at,at,23184
  4ca37c:	00221021 	addu	v0,at,v0
  4ca380:	8c420000 	lw	v0,0(v0)
  4ca384:	00000000 	nop
  4ca388:	00822026 	xor	a0,a0,v0
  4ca38c:	8fc2003c 	lw	v0,60(s8)
  4ca390:	00000000 	nop
  4ca394:	2442000b 	addiu	v0,v0,11
  4ca398:	90420000 	lbu	v0,0(v0)
  4ca39c:	00000000 	nop
  4ca3a0:	38420030 	xori	v0,v0,0x30
  4ca3a4:	304200ff 	andi	v0,v0,0xff
  4ca3a8:	8f83804c 	lw	v1,-32692(gp)
  4ca3ac:	00000000 	nop
  4ca3b0:	24635990 	addiu	v1,v1,22928
  4ca3b4:	00621821 	addu	v1,v1,v0
  4ca3b8:	8fc2003c 	lw	v0,60(s8)
  4ca3bc:	00000000 	nop
  4ca3c0:	24420003 	addiu	v0,v0,3
  4ca3c4:	90630000 	lbu	v1,0(v1)
  4ca3c8:	90420000 	lbu	v0,0(v0)
  4ca3cc:	00000000 	nop
  4ca3d0:	00621026 	xor	v0,v1,v0
  4ca3d4:	304200ff 	andi	v0,v0,0xff
  4ca3d8:	00021080 	sll	v0,v0,0x2
  4ca3dc:	24420c00 	addiu	v0,v0,3072
  4ca3e0:	8f81804c 	lw	at,-32692(gp)
  4ca3e4:	00000000 	nop
  4ca3e8:	24215a90 	addiu	at,at,23184
  4ca3ec:	00221021 	addu	v0,at,v0
  4ca3f0:	8c420000 	lw	v0,0(v0)
  4ca3f4:	00000000 	nop
  4ca3f8:	00821026 	xor	v0,a0,v0
  4ca3fc:	afc20014 	sw	v0,20(s8)
  4ca400:	8fc2003c 	lw	v0,60(s8)
  4ca404:	00000000 	nop
  4ca408:	2442000c 	addiu	v0,v0,12
  4ca40c:	90420000 	lbu	v0,0(v0)
  4ca410:	00000000 	nop
  4ca414:	38420075 	xori	v0,v0,0x75
  4ca418:	304200ff 	andi	v0,v0,0xff
  4ca41c:	8f83804c 	lw	v1,-32692(gp)
  4ca420:	00000000 	nop
  4ca424:	24635890 	addiu	v1,v1,22672
  4ca428:	00621821 	addu	v1,v1,v0
  4ca42c:	8fc2003c 	lw	v0,60(s8)
  4ca430:	00000000 	nop
  4ca434:	24420004 	addiu	v0,v0,4
  4ca438:	90630000 	lbu	v1,0(v1)
  4ca43c:	90420000 	lbu	v0,0(v0)
  4ca440:	00000000 	nop
  4ca444:	00621026 	xor	v0,v1,v0
  4ca448:	304200ff 	andi	v0,v0,0xff
  4ca44c:	00021080 	sll	v0,v0,0x2
  4ca450:	8f84804c 	lw	a0,-32692(gp)
  4ca454:	00000000 	nop
  4ca458:	24845a90 	addiu	a0,a0,23184
  4ca45c:	00822021 	addu	a0,a0,v0
  4ca460:	8fc2003c 	lw	v0,60(s8)
  4ca464:	00000000 	nop
  4ca468:	2442000d 	addiu	v0,v0,13
  4ca46c:	90420000 	lbu	v0,0(v0)
  4ca470:	00000000 	nop
  4ca474:	3842000f 	xori	v0,v0,0xf
  4ca478:	304200ff 	andi	v0,v0,0xff
  4ca47c:	8f83804c 	lw	v1,-32692(gp)
  4ca480:	00000000 	nop
  4ca484:	24635890 	addiu	v1,v1,22672
  4ca488:	00621821 	addu	v1,v1,v0
  4ca48c:	8fc2003c 	lw	v0,60(s8)
  4ca490:	00000000 	nop
  4ca494:	24420005 	addiu	v0,v0,5
  4ca498:	90630000 	lbu	v1,0(v1)
  4ca49c:	90420000 	lbu	v0,0(v0)
  4ca4a0:	00000000 	nop
  4ca4a4:	00621026 	xor	v0,v1,v0
  4ca4a8:	304200ff 	andi	v0,v0,0xff
  4ca4ac:	00021080 	sll	v0,v0,0x2
  4ca4b0:	24420400 	addiu	v0,v0,1024
  4ca4b4:	8f81804c 	lw	at,-32692(gp)
  4ca4b8:	00000000 	nop
  4ca4bc:	24215a90 	addiu	at,at,23184
  4ca4c0:	00221021 	addu	v0,at,v0
  4ca4c4:	8c830000 	lw	v1,0(a0)
  4ca4c8:	8c420000 	lw	v0,0(v0)
  4ca4cc:	00000000 	nop
  4ca4d0:	00622026 	xor	a0,v1,v0
  4ca4d4:	8fc2003c 	lw	v0,60(s8)
  4ca4d8:	00000000 	nop
  4ca4dc:	2442000e 	addiu	v0,v0,14
  4ca4e0:	90420000 	lbu	v0,0(v0)
  4ca4e4:	00000000 	nop
  4ca4e8:	38420075 	xori	v0,v0,0x75
  4ca4ec:	304200ff 	andi	v0,v0,0xff
  4ca4f0:	8f83804c 	lw	v1,-32692(gp)
  4ca4f4:	00000000 	nop
  4ca4f8:	24635990 	addiu	v1,v1,22928
  4ca4fc:	00621821 	addu	v1,v1,v0
  4ca500:	8fc2003c 	lw	v0,60(s8)
  4ca504:	00000000 	nop
  4ca508:	24420006 	addiu	v0,v0,6
  4ca50c:	90630000 	lbu	v1,0(v1)
  4ca510:	90420000 	lbu	v0,0(v0)
  4ca514:	00000000 	nop
  4ca518:	00621026 	xor	v0,v1,v0
  4ca51c:	304200ff 	andi	v0,v0,0xff
  4ca520:	00021080 	sll	v0,v0,0x2
  4ca524:	24420800 	addiu	v0,v0,2048
  4ca528:	8f81804c 	lw	at,-32692(gp)
  4ca52c:	00000000 	nop
  4ca530:	24215a90 	addiu	at,at,23184
  4ca534:	00221021 	addu	v0,at,v0
  4ca538:	8c420000 	lw	v0,0(v0)
  4ca53c:	00000000 	nop
  4ca540:	00822026 	xor	a0,a0,v0
  4ca544:	8fc2003c 	lw	v0,60(s8)
  4ca548:	00000000 	nop
  4ca54c:	2442000f 	addiu	v0,v0,15
  4ca550:	90420000 	lbu	v0,0(v0)
  4ca554:	00000000 	nop
  4ca558:	3842000f 	xori	v0,v0,0xf
  4ca55c:	304200ff 	andi	v0,v0,0xff
  4ca560:	8f83804c 	lw	v1,-32692(gp)
  4ca564:	00000000 	nop
  4ca568:	24635990 	addiu	v1,v1,22928
  4ca56c:	00621821 	addu	v1,v1,v0
  4ca570:	8fc2003c 	lw	v0,60(s8)
  4ca574:	00000000 	nop
  4ca578:	24420007 	addiu	v0,v0,7
  4ca57c:	90630000 	lbu	v1,0(v1)
  4ca580:	90420000 	lbu	v0,0(v0)
  4ca584:	00000000 	nop
  4ca588:	00621026 	xor	v0,v1,v0
  4ca58c:	304200ff 	andi	v0,v0,0xff
  4ca590:	00021080 	sll	v0,v0,0x2
  4ca594:	24420c00 	addiu	v0,v0,3072
  4ca598:	8f81804c 	lw	at,-32692(gp)
  4ca59c:	00000000 	nop
  4ca5a0:	24215a90 	addiu	at,at,23184
  4ca5a4:	00221021 	addu	v0,at,v0
  4ca5a8:	8c420000 	lw	v0,0(v0)
  4ca5ac:	00000000 	nop
  4ca5b0:	00821026 	xor	v0,a0,v0
  4ca5b4:	afc20018 	sw	v0,24(s8)
  4ca5b8:	8fc20018 	lw	v0,24(s8)
  4ca5bc:	00000000 	nop
  4ca5c0:	00021a00 	sll	v1,v0,0x8
  4ca5c4:	00021602 	srl	v0,v0,0x18
  4ca5c8:	00621025 	or	v0,v1,v0
  4ca5cc:	afc20018 	sw	v0,24(s8)
  4ca5d0:	8fc30014 	lw	v1,20(s8)
  4ca5d4:	8fc20018 	lw	v0,24(s8)
  4ca5d8:	00000000 	nop
  4ca5dc:	00621021 	addu	v0,v1,v0
  4ca5e0:	afc20014 	sw	v0,20(s8)
  4ca5e4:	8fc30018 	lw	v1,24(s8)
  4ca5e8:	8fc20014 	lw	v0,20(s8)
  4ca5ec:	00000000 	nop
  4ca5f0:	00621021 	addu	v0,v1,v0
  4ca5f4:	afc20018 	sw	v0,24(s8)
  4ca5f8:	8fc30014 	lw	v1,20(s8)
  4ca5fc:	8fc20038 	lw	v0,56(s8)
  4ca600:	00000000 	nop
  4ca604:	ac431060 	sw	v1,4192(v0)
  4ca608:	8fc20018 	lw	v0,24(s8)
  4ca60c:	00000000 	nop
  4ca610:	00021a40 	sll	v1,v0,0x9
  4ca614:	000215c2 	srl	v0,v0,0x17
  4ca618:	00621825 	or	v1,v1,v0
  4ca61c:	8fc20038 	lw	v0,56(s8)
  4ca620:	00000000 	nop
  4ca624:	ac431064 	sw	v1,4196(v0)
		CALC_K (k, 18, 0x37, 0xF8, 0x26, 0x1B);
  4ca628:	8fc2003c 	lw	v0,60(s8)
  4ca62c:	00000000 	nop
  4ca630:	24420008 	addiu	v0,v0,8
  4ca634:	90420000 	lbu	v0,0(v0)
  4ca638:	00000000 	nop
  4ca63c:	38420037 	xori	v0,v0,0x37
  4ca640:	304200ff 	andi	v0,v0,0xff
  4ca644:	8f81804c 	lw	at,-32692(gp)
  4ca648:	00000000 	nop
  4ca64c:	24215890 	addiu	at,at,22672
  4ca650:	00221021 	addu	v0,at,v0
  4ca654:	90430000 	lbu	v1,0(v0)
  4ca658:	8fc2003c 	lw	v0,60(s8)
  4ca65c:	00000000 	nop
  4ca660:	90420000 	lbu	v0,0(v0)
  4ca664:	00000000 	nop
  4ca668:	00621026 	xor	v0,v1,v0
  4ca66c:	304200ff 	andi	v0,v0,0xff
  4ca670:	00021080 	sll	v0,v0,0x2
  4ca674:	8f84804c 	lw	a0,-32692(gp)
  4ca678:	00000000 	nop
  4ca67c:	24845a90 	addiu	a0,a0,23184
  4ca680:	00822021 	addu	a0,a0,v0
  4ca684:	8fc2003c 	lw	v0,60(s8)
  4ca688:	00000000 	nop
  4ca68c:	24420009 	addiu	v0,v0,9
  4ca690:	90420000 	lbu	v0,0(v0)
  4ca694:	00000000 	nop
  4ca698:	384200f8 	xori	v0,v0,0xf8
  4ca69c:	304200ff 	andi	v0,v0,0xff
  4ca6a0:	8f83804c 	lw	v1,-32692(gp)
  4ca6a4:	00000000 	nop
  4ca6a8:	24635890 	addiu	v1,v1,22672
  4ca6ac:	00621821 	addu	v1,v1,v0
  4ca6b0:	8fc2003c 	lw	v0,60(s8)
  4ca6b4:	00000000 	nop
  4ca6b8:	24420001 	addiu	v0,v0,1
  4ca6bc:	90630000 	lbu	v1,0(v1)
  4ca6c0:	90420000 	lbu	v0,0(v0)
  4ca6c4:	00000000 	nop
  4ca6c8:	00621026 	xor	v0,v1,v0
  4ca6cc:	304200ff 	andi	v0,v0,0xff
  4ca6d0:	00021080 	sll	v0,v0,0x2
  4ca6d4:	24420400 	addiu	v0,v0,1024
  4ca6d8:	8f81804c 	lw	at,-32692(gp)
  4ca6dc:	00000000 	nop
  4ca6e0:	24215a90 	addiu	at,at,23184
  4ca6e4:	00221021 	addu	v0,at,v0
  4ca6e8:	8c830000 	lw	v1,0(a0)
  4ca6ec:	8c420000 	lw	v0,0(v0)
  4ca6f0:	00000000 	nop
  4ca6f4:	00622026 	xor	a0,v1,v0
  4ca6f8:	8fc2003c 	lw	v0,60(s8)
  4ca6fc:	00000000 	nop
  4ca700:	2442000a 	addiu	v0,v0,10
  4ca704:	90420000 	lbu	v0,0(v0)
  4ca708:	00000000 	nop
  4ca70c:	38420037 	xori	v0,v0,0x37
  4ca710:	304200ff 	andi	v0,v0,0xff
  4ca714:	8f83804c 	lw	v1,-32692(gp)
  4ca718:	00000000 	nop
  4ca71c:	24635990 	addiu	v1,v1,22928
  4ca720:	00621821 	addu	v1,v1,v0
  4ca724:	8fc2003c 	lw	v0,60(s8)
  4ca728:	00000000 	nop
  4ca72c:	24420002 	addiu	v0,v0,2
  4ca730:	90630000 	lbu	v1,0(v1)
  4ca734:	90420000 	lbu	v0,0(v0)
  4ca738:	00000000 	nop
  4ca73c:	00621026 	xor	v0,v1,v0
  4ca740:	304200ff 	andi	v0,v0,0xff
  4ca744:	00021080 	sll	v0,v0,0x2
  4ca748:	24420800 	addiu	v0,v0,2048
  4ca74c:	8f81804c 	lw	at,-32692(gp)
  4ca750:	00000000 	nop
  4ca754:	24215a90 	addiu	at,at,23184
  4ca758:	00221021 	addu	v0,at,v0
  4ca75c:	8c420000 	lw	v0,0(v0)
  4ca760:	00000000 	nop
  4ca764:	00822026 	xor	a0,a0,v0
  4ca768:	8fc2003c 	lw	v0,60(s8)
  4ca76c:	00000000 	nop
  4ca770:	2442000b 	addiu	v0,v0,11
  4ca774:	90420000 	lbu	v0,0(v0)
  4ca778:	00000000 	nop
  4ca77c:	384200f8 	xori	v0,v0,0xf8
  4ca780:	304200ff 	andi	v0,v0,0xff
  4ca784:	8f83804c 	lw	v1,-32692(gp)
  4ca788:	00000000 	nop
  4ca78c:	24635990 	addiu	v1,v1,22928
  4ca790:	00621821 	addu	v1,v1,v0
  4ca794:	8fc2003c 	lw	v0,60(s8)
  4ca798:	00000000 	nop
  4ca79c:	24420003 	addiu	v0,v0,3
  4ca7a0:	90630000 	lbu	v1,0(v1)
  4ca7a4:	90420000 	lbu	v0,0(v0)
  4ca7a8:	00000000 	nop
  4ca7ac:	00621026 	xor	v0,v1,v0
  4ca7b0:	304200ff 	andi	v0,v0,0xff
  4ca7b4:	00021080 	sll	v0,v0,0x2
  4ca7b8:	24420c00 	addiu	v0,v0,3072
  4ca7bc:	8f81804c 	lw	at,-32692(gp)
  4ca7c0:	00000000 	nop
  4ca7c4:	24215a90 	addiu	at,at,23184
  4ca7c8:	00221021 	addu	v0,at,v0
  4ca7cc:	8c420000 	lw	v0,0(v0)
  4ca7d0:	00000000 	nop
  4ca7d4:	00821026 	xor	v0,a0,v0
  4ca7d8:	afc20014 	sw	v0,20(s8)
  4ca7dc:	8fc2003c 	lw	v0,60(s8)
  4ca7e0:	00000000 	nop
  4ca7e4:	2442000c 	addiu	v0,v0,12
  4ca7e8:	90420000 	lbu	v0,0(v0)
  4ca7ec:	00000000 	nop
  4ca7f0:	38420026 	xori	v0,v0,0x26
  4ca7f4:	304200ff 	andi	v0,v0,0xff
  4ca7f8:	8f83804c 	lw	v1,-32692(gp)
  4ca7fc:	00000000 	nop
  4ca800:	24635890 	addiu	v1,v1,22672
  4ca804:	00621821 	addu	v1,v1,v0
  4ca808:	8fc2003c 	lw	v0,60(s8)
  4ca80c:	00000000 	nop
  4ca810:	24420004 	addiu	v0,v0,4
  4ca814:	90630000 	lbu	v1,0(v1)
  4ca818:	90420000 	lbu	v0,0(v0)
  4ca81c:	00000000 	nop
  4ca820:	00621026 	xor	v0,v1,v0
  4ca824:	304200ff 	andi	v0,v0,0xff
  4ca828:	00021080 	sll	v0,v0,0x2
  4ca82c:	8f84804c 	lw	a0,-32692(gp)
  4ca830:	00000000 	nop
  4ca834:	24845a90 	addiu	a0,a0,23184
  4ca838:	00822021 	addu	a0,a0,v0
  4ca83c:	8fc2003c 	lw	v0,60(s8)
  4ca840:	00000000 	nop
  4ca844:	2442000d 	addiu	v0,v0,13
  4ca848:	90420000 	lbu	v0,0(v0)
  4ca84c:	00000000 	nop
  4ca850:	3842001b 	xori	v0,v0,0x1b
  4ca854:	304200ff 	andi	v0,v0,0xff
  4ca858:	8f83804c 	lw	v1,-32692(gp)
  4ca85c:	00000000 	nop
  4ca860:	24635890 	addiu	v1,v1,22672
  4ca864:	00621821 	addu	v1,v1,v0
  4ca868:	8fc2003c 	lw	v0,60(s8)
  4ca86c:	00000000 	nop
  4ca870:	24420005 	addiu	v0,v0,5
  4ca874:	90630000 	lbu	v1,0(v1)
  4ca878:	90420000 	lbu	v0,0(v0)
  4ca87c:	00000000 	nop
  4ca880:	00621026 	xor	v0,v1,v0
  4ca884:	304200ff 	andi	v0,v0,0xff
  4ca888:	00021080 	sll	v0,v0,0x2
  4ca88c:	24420400 	addiu	v0,v0,1024
  4ca890:	8f81804c 	lw	at,-32692(gp)
  4ca894:	00000000 	nop
  4ca898:	24215a90 	addiu	at,at,23184
  4ca89c:	00221021 	addu	v0,at,v0
  4ca8a0:	8c830000 	lw	v1,0(a0)
  4ca8a4:	8c420000 	lw	v0,0(v0)
  4ca8a8:	00000000 	nop
  4ca8ac:	00622026 	xor	a0,v1,v0
  4ca8b0:	8fc2003c 	lw	v0,60(s8)
  4ca8b4:	00000000 	nop
  4ca8b8:	2442000e 	addiu	v0,v0,14
  4ca8bc:	90420000 	lbu	v0,0(v0)
  4ca8c0:	00000000 	nop
  4ca8c4:	38420026 	xori	v0,v0,0x26
  4ca8c8:	304200ff 	andi	v0,v0,0xff
  4ca8cc:	8f83804c 	lw	v1,-32692(gp)
  4ca8d0:	00000000 	nop
  4ca8d4:	24635990 	addiu	v1,v1,22928
  4ca8d8:	00621821 	addu	v1,v1,v0
  4ca8dc:	8fc2003c 	lw	v0,60(s8)
  4ca8e0:	00000000 	nop
  4ca8e4:	24420006 	addiu	v0,v0,6
  4ca8e8:	90630000 	lbu	v1,0(v1)
  4ca8ec:	90420000 	lbu	v0,0(v0)
  4ca8f0:	00000000 	nop
  4ca8f4:	00621026 	xor	v0,v1,v0
  4ca8f8:	304200ff 	andi	v0,v0,0xff
  4ca8fc:	00021080 	sll	v0,v0,0x2
  4ca900:	24420800 	addiu	v0,v0,2048
  4ca904:	8f81804c 	lw	at,-32692(gp)
  4ca908:	00000000 	nop
  4ca90c:	24215a90 	addiu	at,at,23184
  4ca910:	00221021 	addu	v0,at,v0
  4ca914:	8c420000 	lw	v0,0(v0)
  4ca918:	00000000 	nop
  4ca91c:	00822026 	xor	a0,a0,v0
  4ca920:	8fc2003c 	lw	v0,60(s8)
  4ca924:	00000000 	nop
  4ca928:	2442000f 	addiu	v0,v0,15
  4ca92c:	90420000 	lbu	v0,0(v0)
  4ca930:	00000000 	nop
  4ca934:	3842001b 	xori	v0,v0,0x1b
  4ca938:	304200ff 	andi	v0,v0,0xff
  4ca93c:	8f83804c 	lw	v1,-32692(gp)
  4ca940:	00000000 	nop
  4ca944:	24635990 	addiu	v1,v1,22928
  4ca948:	00621821 	addu	v1,v1,v0
  4ca94c:	8fc2003c 	lw	v0,60(s8)
  4ca950:	00000000 	nop
  4ca954:	24420007 	addiu	v0,v0,7
  4ca958:	90630000 	lbu	v1,0(v1)
  4ca95c:	90420000 	lbu	v0,0(v0)
  4ca960:	00000000 	nop
  4ca964:	00621026 	xor	v0,v1,v0
  4ca968:	304200ff 	andi	v0,v0,0xff
  4ca96c:	00021080 	sll	v0,v0,0x2
  4ca970:	24420c00 	addiu	v0,v0,3072
  4ca974:	8f81804c 	lw	at,-32692(gp)
  4ca978:	00000000 	nop
  4ca97c:	24215a90 	addiu	at,at,23184
  4ca980:	00221021 	addu	v0,at,v0
  4ca984:	8c420000 	lw	v0,0(v0)
  4ca988:	00000000 	nop
  4ca98c:	00821026 	xor	v0,a0,v0
  4ca990:	afc20018 	sw	v0,24(s8)
  4ca994:	8fc20018 	lw	v0,24(s8)
  4ca998:	00000000 	nop
  4ca99c:	00021a00 	sll	v1,v0,0x8
  4ca9a0:	00021602 	srl	v0,v0,0x18
  4ca9a4:	00621025 	or	v0,v1,v0
  4ca9a8:	afc20018 	sw	v0,24(s8)
  4ca9ac:	8fc30014 	lw	v1,20(s8)
  4ca9b0:	8fc20018 	lw	v0,24(s8)
  4ca9b4:	00000000 	nop
  4ca9b8:	00621021 	addu	v0,v1,v0
  4ca9bc:	afc20014 	sw	v0,20(s8)
  4ca9c0:	8fc30018 	lw	v1,24(s8)
  4ca9c4:	8fc20014 	lw	v0,20(s8)
  4ca9c8:	00000000 	nop
  4ca9cc:	00621021 	addu	v0,v1,v0
  4ca9d0:	afc20018 	sw	v0,24(s8)
  4ca9d4:	8fc30014 	lw	v1,20(s8)
  4ca9d8:	8fc20038 	lw	v0,56(s8)
  4ca9dc:	00000000 	nop
  4ca9e0:	ac431068 	sw	v1,4200(v0)
  4ca9e4:	8fc20018 	lw	v0,24(s8)
  4ca9e8:	00000000 	nop
  4ca9ec:	00021a40 	sll	v1,v0,0x9
  4ca9f0:	000215c2 	srl	v0,v0,0x17
  4ca9f4:	00621825 	or	v1,v1,v0
  4ca9f8:	8fc20038 	lw	v0,56(s8)
  4ca9fc:	00000000 	nop
  4caa00:	ac43106c 	sw	v1,4204(v0)
		CALC_K (k, 20, 0xFA, 0x87, 0x13, 0xFA);
  4caa04:	8fc2003c 	lw	v0,60(s8)
  4caa08:	00000000 	nop
  4caa0c:	24420008 	addiu	v0,v0,8
  4caa10:	90420000 	lbu	v0,0(v0)
  4caa14:	00000000 	nop
  4caa18:	384200fa 	xori	v0,v0,0xfa
  4caa1c:	304200ff 	andi	v0,v0,0xff
  4caa20:	8f81804c 	lw	at,-32692(gp)
  4caa24:	00000000 	nop
  4caa28:	24215890 	addiu	at,at,22672
  4caa2c:	00221021 	addu	v0,at,v0
  4caa30:	90430000 	lbu	v1,0(v0)
  4caa34:	8fc2003c 	lw	v0,60(s8)
  4caa38:	00000000 	nop
  4caa3c:	90420000 	lbu	v0,0(v0)
  4caa40:	00000000 	nop
  4caa44:	00621026 	xor	v0,v1,v0
  4caa48:	304200ff 	andi	v0,v0,0xff
  4caa4c:	00021080 	sll	v0,v0,0x2
  4caa50:	8f84804c 	lw	a0,-32692(gp)
  4caa54:	00000000 	nop
  4caa58:	24845a90 	addiu	a0,a0,23184
  4caa5c:	00822021 	addu	a0,a0,v0
  4caa60:	8fc2003c 	lw	v0,60(s8)
  4caa64:	00000000 	nop
  4caa68:	24420009 	addiu	v0,v0,9
  4caa6c:	90420000 	lbu	v0,0(v0)
  4caa70:	00000000 	nop
  4caa74:	38420087 	xori	v0,v0,0x87
  4caa78:	304200ff 	andi	v0,v0,0xff
  4caa7c:	8f83804c 	lw	v1,-32692(gp)
  4caa80:	00000000 	nop
  4caa84:	24635890 	addiu	v1,v1,22672
  4caa88:	00621821 	addu	v1,v1,v0
  4caa8c:	8fc2003c 	lw	v0,60(s8)
  4caa90:	00000000 	nop
  4caa94:	24420001 	addiu	v0,v0,1
  4caa98:	90630000 	lbu	v1,0(v1)
  4caa9c:	90420000 	lbu	v0,0(v0)
  4caaa0:	00000000 	nop
  4caaa4:	00621026 	xor	v0,v1,v0
  4caaa8:	304200ff 	andi	v0,v0,0xff
  4caaac:	00021080 	sll	v0,v0,0x2
  4caab0:	24420400 	addiu	v0,v0,1024
  4caab4:	8f81804c 	lw	at,-32692(gp)
  4caab8:	00000000 	nop
  4caabc:	24215a90 	addiu	at,at,23184
  4caac0:	00221021 	addu	v0,at,v0
  4caac4:	8c830000 	lw	v1,0(a0)
  4caac8:	8c420000 	lw	v0,0(v0)
  4caacc:	00000000 	nop
  4caad0:	00622026 	xor	a0,v1,v0
  4caad4:	8fc2003c 	lw	v0,60(s8)
  4caad8:	00000000 	nop
  4caadc:	2442000a 	addiu	v0,v0,10
  4caae0:	90420000 	lbu	v0,0(v0)
  4caae4:	00000000 	nop
  4caae8:	384200fa 	xori	v0,v0,0xfa
  4caaec:	304200ff 	andi	v0,v0,0xff
  4caaf0:	8f83804c 	lw	v1,-32692(gp)
  4caaf4:	00000000 	nop
  4caaf8:	24635990 	addiu	v1,v1,22928
  4caafc:	00621821 	addu	v1,v1,v0
  4cab00:	8fc2003c 	lw	v0,60(s8)
  4cab04:	00000000 	nop
  4cab08:	24420002 	addiu	v0,v0,2
  4cab0c:	90630000 	lbu	v1,0(v1)
  4cab10:	90420000 	lbu	v0,0(v0)
  4cab14:	00000000 	nop
  4cab18:	00621026 	xor	v0,v1,v0
  4cab1c:	304200ff 	andi	v0,v0,0xff
  4cab20:	00021080 	sll	v0,v0,0x2
  4cab24:	24420800 	addiu	v0,v0,2048
  4cab28:	8f81804c 	lw	at,-32692(gp)
  4cab2c:	00000000 	nop
  4cab30:	24215a90 	addiu	at,at,23184
  4cab34:	00221021 	addu	v0,at,v0
  4cab38:	8c420000 	lw	v0,0(v0)
  4cab3c:	00000000 	nop
  4cab40:	00822026 	xor	a0,a0,v0
  4cab44:	8fc2003c 	lw	v0,60(s8)
  4cab48:	00000000 	nop
  4cab4c:	2442000b 	addiu	v0,v0,11
  4cab50:	90420000 	lbu	v0,0(v0)
  4cab54:	00000000 	nop
  4cab58:	38420087 	xori	v0,v0,0x87
  4cab5c:	304200ff 	andi	v0,v0,0xff
  4cab60:	8f83804c 	lw	v1,-32692(gp)
  4cab64:	00000000 	nop
  4cab68:	24635990 	addiu	v1,v1,22928
  4cab6c:	00621821 	addu	v1,v1,v0
  4cab70:	8fc2003c 	lw	v0,60(s8)
  4cab74:	00000000 	nop
  4cab78:	24420003 	addiu	v0,v0,3
  4cab7c:	90630000 	lbu	v1,0(v1)
  4cab80:	90420000 	lbu	v0,0(v0)
  4cab84:	00000000 	nop
  4cab88:	00621026 	xor	v0,v1,v0
  4cab8c:	304200ff 	andi	v0,v0,0xff
  4cab90:	00021080 	sll	v0,v0,0x2
  4cab94:	24420c00 	addiu	v0,v0,3072
  4cab98:	8f81804c 	lw	at,-32692(gp)
  4cab9c:	00000000 	nop
  4caba0:	24215a90 	addiu	at,at,23184
  4caba4:	00221021 	addu	v0,at,v0
  4caba8:	8c420000 	lw	v0,0(v0)
  4cabac:	00000000 	nop
  4cabb0:	00821026 	xor	v0,a0,v0
  4cabb4:	afc20014 	sw	v0,20(s8)
  4cabb8:	8fc2003c 	lw	v0,60(s8)
  4cabbc:	00000000 	nop
  4cabc0:	2442000c 	addiu	v0,v0,12
  4cabc4:	90420000 	lbu	v0,0(v0)
  4cabc8:	00000000 	nop
  4cabcc:	38420013 	xori	v0,v0,0x13
  4cabd0:	304200ff 	andi	v0,v0,0xff
  4cabd4:	8f83804c 	lw	v1,-32692(gp)
  4cabd8:	00000000 	nop
  4cabdc:	24635890 	addiu	v1,v1,22672
  4cabe0:	00621821 	addu	v1,v1,v0
  4cabe4:	8fc2003c 	lw	v0,60(s8)
  4cabe8:	00000000 	nop
  4cabec:	24420004 	addiu	v0,v0,4
  4cabf0:	90630000 	lbu	v1,0(v1)
  4cabf4:	90420000 	lbu	v0,0(v0)
  4cabf8:	00000000 	nop
  4cabfc:	00621026 	xor	v0,v1,v0
  4cac00:	304200ff 	andi	v0,v0,0xff
  4cac04:	00021080 	sll	v0,v0,0x2
  4cac08:	8f84804c 	lw	a0,-32692(gp)
  4cac0c:	00000000 	nop
  4cac10:	24845a90 	addiu	a0,a0,23184
  4cac14:	00822021 	addu	a0,a0,v0
  4cac18:	8fc2003c 	lw	v0,60(s8)
  4cac1c:	00000000 	nop
  4cac20:	2442000d 	addiu	v0,v0,13
  4cac24:	90420000 	lbu	v0,0(v0)
  4cac28:	00000000 	nop
  4cac2c:	384200fa 	xori	v0,v0,0xfa
  4cac30:	304200ff 	andi	v0,v0,0xff
  4cac34:	8f83804c 	lw	v1,-32692(gp)
  4cac38:	00000000 	nop
  4cac3c:	24635890 	addiu	v1,v1,22672
  4cac40:	00621821 	addu	v1,v1,v0
  4cac44:	8fc2003c 	lw	v0,60(s8)
  4cac48:	00000000 	nop
  4cac4c:	24420005 	addiu	v0,v0,5
  4cac50:	90630000 	lbu	v1,0(v1)
  4cac54:	90420000 	lbu	v0,0(v0)
  4cac58:	00000000 	nop
  4cac5c:	00621026 	xor	v0,v1,v0
  4cac60:	304200ff 	andi	v0,v0,0xff
  4cac64:	00021080 	sll	v0,v0,0x2
  4cac68:	24420400 	addiu	v0,v0,1024
  4cac6c:	8f81804c 	lw	at,-32692(gp)
  4cac70:	00000000 	nop
  4cac74:	24215a90 	addiu	at,at,23184
  4cac78:	00221021 	addu	v0,at,v0
  4cac7c:	8c830000 	lw	v1,0(a0)
  4cac80:	8c420000 	lw	v0,0(v0)
  4cac84:	00000000 	nop
  4cac88:	00622026 	xor	a0,v1,v0
  4cac8c:	8fc2003c 	lw	v0,60(s8)
  4cac90:	00000000 	nop
  4cac94:	2442000e 	addiu	v0,v0,14
  4cac98:	90420000 	lbu	v0,0(v0)
  4cac9c:	00000000 	nop
  4caca0:	38420013 	xori	v0,v0,0x13
  4caca4:	304200ff 	andi	v0,v0,0xff
  4caca8:	8f83804c 	lw	v1,-32692(gp)
  4cacac:	00000000 	nop
  4cacb0:	24635990 	addiu	v1,v1,22928
  4cacb4:	00621821 	addu	v1,v1,v0
  4cacb8:	8fc2003c 	lw	v0,60(s8)
  4cacbc:	00000000 	nop
  4cacc0:	24420006 	addiu	v0,v0,6
  4cacc4:	90630000 	lbu	v1,0(v1)
  4cacc8:	90420000 	lbu	v0,0(v0)
  4caccc:	00000000 	nop
  4cacd0:	00621026 	xor	v0,v1,v0
  4cacd4:	304200ff 	andi	v0,v0,0xff
  4cacd8:	00021080 	sll	v0,v0,0x2
  4cacdc:	24420800 	addiu	v0,v0,2048
  4cace0:	8f81804c 	lw	at,-32692(gp)
  4cace4:	00000000 	nop
  4cace8:	24215a90 	addiu	at,at,23184
  4cacec:	00221021 	addu	v0,at,v0
  4cacf0:	8c420000 	lw	v0,0(v0)
  4cacf4:	00000000 	nop
  4cacf8:	00822026 	xor	a0,a0,v0
  4cacfc:	8fc2003c 	lw	v0,60(s8)
  4cad00:	00000000 	nop
  4cad04:	2442000f 	addiu	v0,v0,15
  4cad08:	90420000 	lbu	v0,0(v0)
  4cad0c:	00000000 	nop
  4cad10:	384200fa 	xori	v0,v0,0xfa
  4cad14:	304200ff 	andi	v0,v0,0xff
  4cad18:	8f83804c 	lw	v1,-32692(gp)
  4cad1c:	00000000 	nop
  4cad20:	24635990 	addiu	v1,v1,22928
  4cad24:	00621821 	addu	v1,v1,v0
  4cad28:	8fc2003c 	lw	v0,60(s8)
  4cad2c:	00000000 	nop
  4cad30:	24420007 	addiu	v0,v0,7
  4cad34:	90630000 	lbu	v1,0(v1)
  4cad38:	90420000 	lbu	v0,0(v0)
  4cad3c:	00000000 	nop
  4cad40:	00621026 	xor	v0,v1,v0
  4cad44:	304200ff 	andi	v0,v0,0xff
  4cad48:	00021080 	sll	v0,v0,0x2
  4cad4c:	24420c00 	addiu	v0,v0,3072
  4cad50:	8f81804c 	lw	at,-32692(gp)
  4cad54:	00000000 	nop
  4cad58:	24215a90 	addiu	at,at,23184
  4cad5c:	00221021 	addu	v0,at,v0
  4cad60:	8c420000 	lw	v0,0(v0)
  4cad64:	00000000 	nop
  4cad68:	00821026 	xor	v0,a0,v0
  4cad6c:	afc20018 	sw	v0,24(s8)
  4cad70:	8fc20018 	lw	v0,24(s8)
  4cad74:	00000000 	nop
  4cad78:	00021a00 	sll	v1,v0,0x8
  4cad7c:	00021602 	srl	v0,v0,0x18
  4cad80:	00621025 	or	v0,v1,v0
  4cad84:	afc20018 	sw	v0,24(s8)
  4cad88:	8fc30014 	lw	v1,20(s8)
  4cad8c:	8fc20018 	lw	v0,24(s8)
  4cad90:	00000000 	nop
  4cad94:	00621021 	addu	v0,v1,v0
  4cad98:	afc20014 	sw	v0,20(s8)
  4cad9c:	8fc30018 	lw	v1,24(s8)
  4cada0:	8fc20014 	lw	v0,20(s8)
  4cada4:	00000000 	nop
  4cada8:	00621021 	addu	v0,v1,v0
  4cadac:	afc20018 	sw	v0,24(s8)
  4cadb0:	8fc30014 	lw	v1,20(s8)
  4cadb4:	8fc20038 	lw	v0,56(s8)
  4cadb8:	00000000 	nop
  4cadbc:	ac431070 	sw	v1,4208(v0)
  4cadc0:	8fc20018 	lw	v0,24(s8)
  4cadc4:	00000000 	nop
  4cadc8:	00021a40 	sll	v1,v0,0x9
  4cadcc:	000215c2 	srl	v0,v0,0x17
  4cadd0:	00621825 	or	v1,v1,v0
  4cadd4:	8fc20038 	lw	v0,56(s8)
  4cadd8:	00000000 	nop
  4caddc:	ac431074 	sw	v1,4212(v0)
		CALC_K (k, 22, 0x94, 0x06, 0x48, 0x3F);
  4cade0:	8fc2003c 	lw	v0,60(s8)
  4cade4:	00000000 	nop
  4cade8:	24420008 	addiu	v0,v0,8
  4cadec:	90420000 	lbu	v0,0(v0)
  4cadf0:	00000000 	nop
  4cadf4:	38420094 	xori	v0,v0,0x94
  4cadf8:	304200ff 	andi	v0,v0,0xff
  4cadfc:	8f81804c 	lw	at,-32692(gp)
  4cae00:	00000000 	nop
  4cae04:	24215890 	addiu	at,at,22672
  4cae08:	00221021 	addu	v0,at,v0
  4cae0c:	90430000 	lbu	v1,0(v0)
  4cae10:	8fc2003c 	lw	v0,60(s8)
  4cae14:	00000000 	nop
  4cae18:	90420000 	lbu	v0,0(v0)
  4cae1c:	00000000 	nop
  4cae20:	00621026 	xor	v0,v1,v0
  4cae24:	304200ff 	andi	v0,v0,0xff
  4cae28:	00021080 	sll	v0,v0,0x2
  4cae2c:	8f84804c 	lw	a0,-32692(gp)
  4cae30:	00000000 	nop
  4cae34:	24845a90 	addiu	a0,a0,23184
  4cae38:	00822021 	addu	a0,a0,v0
  4cae3c:	8fc2003c 	lw	v0,60(s8)
  4cae40:	00000000 	nop
  4cae44:	24420009 	addiu	v0,v0,9
  4cae48:	90420000 	lbu	v0,0(v0)
  4cae4c:	00000000 	nop
  4cae50:	38420006 	xori	v0,v0,0x6
  4cae54:	304200ff 	andi	v0,v0,0xff
  4cae58:	8f83804c 	lw	v1,-32692(gp)
  4cae5c:	00000000 	nop
  4cae60:	24635890 	addiu	v1,v1,22672
  4cae64:	00621821 	addu	v1,v1,v0
  4cae68:	8fc2003c 	lw	v0,60(s8)
  4cae6c:	00000000 	nop
  4cae70:	24420001 	addiu	v0,v0,1
  4cae74:	90630000 	lbu	v1,0(v1)
  4cae78:	90420000 	lbu	v0,0(v0)
  4cae7c:	00000000 	nop
  4cae80:	00621026 	xor	v0,v1,v0
  4cae84:	304200ff 	andi	v0,v0,0xff
  4cae88:	00021080 	sll	v0,v0,0x2
  4cae8c:	24420400 	addiu	v0,v0,1024
  4cae90:	8f81804c 	lw	at,-32692(gp)
  4cae94:	00000000 	nop
  4cae98:	24215a90 	addiu	at,at,23184
  4cae9c:	00221021 	addu	v0,at,v0
  4caea0:	8c830000 	lw	v1,0(a0)
  4caea4:	8c420000 	lw	v0,0(v0)
  4caea8:	00000000 	nop
  4caeac:	00622026 	xor	a0,v1,v0
  4caeb0:	8fc2003c 	lw	v0,60(s8)
  4caeb4:	00000000 	nop
  4caeb8:	2442000a 	addiu	v0,v0,10
  4caebc:	90420000 	lbu	v0,0(v0)
  4caec0:	00000000 	nop
  4caec4:	38420094 	xori	v0,v0,0x94
  4caec8:	304200ff 	andi	v0,v0,0xff
  4caecc:	8f83804c 	lw	v1,-32692(gp)
  4caed0:	00000000 	nop
  4caed4:	24635990 	addiu	v1,v1,22928
  4caed8:	00621821 	addu	v1,v1,v0
  4caedc:	8fc2003c 	lw	v0,60(s8)
  4caee0:	00000000 	nop
  4caee4:	24420002 	addiu	v0,v0,2
  4caee8:	90630000 	lbu	v1,0(v1)
  4caeec:	90420000 	lbu	v0,0(v0)
  4caef0:	00000000 	nop
  4caef4:	00621026 	xor	v0,v1,v0
  4caef8:	304200ff 	andi	v0,v0,0xff
  4caefc:	00021080 	sll	v0,v0,0x2
  4caf00:	24420800 	addiu	v0,v0,2048
  4caf04:	8f81804c 	lw	at,-32692(gp)
  4caf08:	00000000 	nop
  4caf0c:	24215a90 	addiu	at,at,23184
  4caf10:	00221021 	addu	v0,at,v0
  4caf14:	8c420000 	lw	v0,0(v0)
  4caf18:	00000000 	nop
  4caf1c:	00822026 	xor	a0,a0,v0
  4caf20:	8fc2003c 	lw	v0,60(s8)
  4caf24:	00000000 	nop
  4caf28:	2442000b 	addiu	v0,v0,11
  4caf2c:	90420000 	lbu	v0,0(v0)
  4caf30:	00000000 	nop
  4caf34:	38420006 	xori	v0,v0,0x6
  4caf38:	304200ff 	andi	v0,v0,0xff
  4caf3c:	8f83804c 	lw	v1,-32692(gp)
  4caf40:	00000000 	nop
  4caf44:	24635990 	addiu	v1,v1,22928
  4caf48:	00621821 	addu	v1,v1,v0
  4caf4c:	8fc2003c 	lw	v0,60(s8)
  4caf50:	00000000 	nop
  4caf54:	24420003 	addiu	v0,v0,3
  4caf58:	90630000 	lbu	v1,0(v1)
  4caf5c:	90420000 	lbu	v0,0(v0)
  4caf60:	00000000 	nop
  4caf64:	00621026 	xor	v0,v1,v0
  4caf68:	304200ff 	andi	v0,v0,0xff
  4caf6c:	00021080 	sll	v0,v0,0x2
  4caf70:	24420c00 	addiu	v0,v0,3072
  4caf74:	8f81804c 	lw	at,-32692(gp)
  4caf78:	00000000 	nop
  4caf7c:	24215a90 	addiu	at,at,23184
  4caf80:	00221021 	addu	v0,at,v0
  4caf84:	8c420000 	lw	v0,0(v0)
  4caf88:	00000000 	nop
  4caf8c:	00821026 	xor	v0,a0,v0
  4caf90:	afc20014 	sw	v0,20(s8)
  4caf94:	8fc2003c 	lw	v0,60(s8)
  4caf98:	00000000 	nop
  4caf9c:	2442000c 	addiu	v0,v0,12
  4cafa0:	90420000 	lbu	v0,0(v0)
  4cafa4:	00000000 	nop
  4cafa8:	38420048 	xori	v0,v0,0x48
  4cafac:	304200ff 	andi	v0,v0,0xff
  4cafb0:	8f83804c 	lw	v1,-32692(gp)
  4cafb4:	00000000 	nop
  4cafb8:	24635890 	addiu	v1,v1,22672
  4cafbc:	00621821 	addu	v1,v1,v0
  4cafc0:	8fc2003c 	lw	v0,60(s8)
  4cafc4:	00000000 	nop
  4cafc8:	24420004 	addiu	v0,v0,4
  4cafcc:	90630000 	lbu	v1,0(v1)
  4cafd0:	90420000 	lbu	v0,0(v0)
  4cafd4:	00000000 	nop
  4cafd8:	00621026 	xor	v0,v1,v0
  4cafdc:	304200ff 	andi	v0,v0,0xff
  4cafe0:	00021080 	sll	v0,v0,0x2
  4cafe4:	8f84804c 	lw	a0,-32692(gp)
  4cafe8:	00000000 	nop
  4cafec:	24845a90 	addiu	a0,a0,23184
  4caff0:	00822021 	addu	a0,a0,v0
  4caff4:	8fc2003c 	lw	v0,60(s8)
  4caff8:	00000000 	nop
  4caffc:	2442000d 	addiu	v0,v0,13
  4cb000:	90420000 	lbu	v0,0(v0)
  4cb004:	00000000 	nop
  4cb008:	3842003f 	xori	v0,v0,0x3f
  4cb00c:	304200ff 	andi	v0,v0,0xff
  4cb010:	8f83804c 	lw	v1,-32692(gp)
  4cb014:	00000000 	nop
  4cb018:	24635890 	addiu	v1,v1,22672
  4cb01c:	00621821 	addu	v1,v1,v0
  4cb020:	8fc2003c 	lw	v0,60(s8)
  4cb024:	00000000 	nop
  4cb028:	24420005 	addiu	v0,v0,5
  4cb02c:	90630000 	lbu	v1,0(v1)
  4cb030:	90420000 	lbu	v0,0(v0)
  4cb034:	00000000 	nop
  4cb038:	00621026 	xor	v0,v1,v0
  4cb03c:	304200ff 	andi	v0,v0,0xff
  4cb040:	00021080 	sll	v0,v0,0x2
  4cb044:	24420400 	addiu	v0,v0,1024
  4cb048:	8f81804c 	lw	at,-32692(gp)
  4cb04c:	00000000 	nop
  4cb050:	24215a90 	addiu	at,at,23184
  4cb054:	00221021 	addu	v0,at,v0
  4cb058:	8c830000 	lw	v1,0(a0)
  4cb05c:	8c420000 	lw	v0,0(v0)
  4cb060:	00000000 	nop
  4cb064:	00622026 	xor	a0,v1,v0
  4cb068:	8fc2003c 	lw	v0,60(s8)
  4cb06c:	00000000 	nop
  4cb070:	2442000e 	addiu	v0,v0,14
  4cb074:	90420000 	lbu	v0,0(v0)
  4cb078:	00000000 	nop
  4cb07c:	38420048 	xori	v0,v0,0x48
  4cb080:	304200ff 	andi	v0,v0,0xff
  4cb084:	8f83804c 	lw	v1,-32692(gp)
  4cb088:	00000000 	nop
  4cb08c:	24635990 	addiu	v1,v1,22928
  4cb090:	00621821 	addu	v1,v1,v0
  4cb094:	8fc2003c 	lw	v0,60(s8)
  4cb098:	00000000 	nop
  4cb09c:	24420006 	addiu	v0,v0,6
  4cb0a0:	90630000 	lbu	v1,0(v1)
  4cb0a4:	90420000 	lbu	v0,0(v0)
  4cb0a8:	00000000 	nop
  4cb0ac:	00621026 	xor	v0,v1,v0
  4cb0b0:	304200ff 	andi	v0,v0,0xff
  4cb0b4:	00021080 	sll	v0,v0,0x2
  4cb0b8:	24420800 	addiu	v0,v0,2048
  4cb0bc:	8f81804c 	lw	at,-32692(gp)
  4cb0c0:	00000000 	nop
  4cb0c4:	24215a90 	addiu	at,at,23184
  4cb0c8:	00221021 	addu	v0,at,v0
  4cb0cc:	8c420000 	lw	v0,0(v0)
  4cb0d0:	00000000 	nop
  4cb0d4:	00822026 	xor	a0,a0,v0
  4cb0d8:	8fc2003c 	lw	v0,60(s8)
  4cb0dc:	00000000 	nop
  4cb0e0:	2442000f 	addiu	v0,v0,15
  4cb0e4:	90420000 	lbu	v0,0(v0)
  4cb0e8:	00000000 	nop
  4cb0ec:	3842003f 	xori	v0,v0,0x3f
  4cb0f0:	304200ff 	andi	v0,v0,0xff
  4cb0f4:	8f83804c 	lw	v1,-32692(gp)
  4cb0f8:	00000000 	nop
  4cb0fc:	24635990 	addiu	v1,v1,22928
  4cb100:	00621821 	addu	v1,v1,v0
  4cb104:	8fc2003c 	lw	v0,60(s8)
  4cb108:	00000000 	nop
  4cb10c:	24420007 	addiu	v0,v0,7
  4cb110:	90630000 	lbu	v1,0(v1)
  4cb114:	90420000 	lbu	v0,0(v0)
  4cb118:	00000000 	nop
  4cb11c:	00621026 	xor	v0,v1,v0
  4cb120:	304200ff 	andi	v0,v0,0xff
  4cb124:	00021080 	sll	v0,v0,0x2
  4cb128:	24420c00 	addiu	v0,v0,3072
  4cb12c:	8f81804c 	lw	at,-32692(gp)
  4cb130:	00000000 	nop
  4cb134:	24215a90 	addiu	at,at,23184
  4cb138:	00221021 	addu	v0,at,v0
  4cb13c:	8c420000 	lw	v0,0(v0)
  4cb140:	00000000 	nop
  4cb144:	00821026 	xor	v0,a0,v0
  4cb148:	afc20018 	sw	v0,24(s8)
  4cb14c:	8fc20018 	lw	v0,24(s8)
  4cb150:	00000000 	nop
  4cb154:	00021a00 	sll	v1,v0,0x8
  4cb158:	00021602 	srl	v0,v0,0x18
  4cb15c:	00621025 	or	v0,v1,v0
  4cb160:	afc20018 	sw	v0,24(s8)
  4cb164:	8fc30014 	lw	v1,20(s8)
  4cb168:	8fc20018 	lw	v0,24(s8)
  4cb16c:	00000000 	nop
  4cb170:	00621021 	addu	v0,v1,v0
  4cb174:	afc20014 	sw	v0,20(s8)
  4cb178:	8fc30018 	lw	v1,24(s8)
  4cb17c:	8fc20014 	lw	v0,20(s8)
  4cb180:	00000000 	nop
  4cb184:	00621021 	addu	v0,v1,v0
  4cb188:	afc20018 	sw	v0,24(s8)
  4cb18c:	8fc30014 	lw	v1,20(s8)
  4cb190:	8fc20038 	lw	v0,56(s8)
  4cb194:	00000000 	nop
  4cb198:	ac431078 	sw	v1,4216(v0)
  4cb19c:	8fc20018 	lw	v0,24(s8)
  4cb1a0:	00000000 	nop
  4cb1a4:	00021a40 	sll	v1,v0,0x9
  4cb1a8:	000215c2 	srl	v0,v0,0x17
  4cb1ac:	00621825 	or	v1,v1,v0
  4cb1b0:	8fc20038 	lw	v0,56(s8)
  4cb1b4:	00000000 	nop
  4cb1b8:	ac43107c 	sw	v1,4220(v0)
		CALC_K (k, 24, 0xF2, 0x5E, 0xD0, 0xBA);
  4cb1bc:	8fc2003c 	lw	v0,60(s8)
  4cb1c0:	00000000 	nop
  4cb1c4:	24420008 	addiu	v0,v0,8
  4cb1c8:	90420000 	lbu	v0,0(v0)
  4cb1cc:	00000000 	nop
  4cb1d0:	384200f2 	xori	v0,v0,0xf2
  4cb1d4:	304200ff 	andi	v0,v0,0xff
  4cb1d8:	8f81804c 	lw	at,-32692(gp)
  4cb1dc:	00000000 	nop
  4cb1e0:	24215890 	addiu	at,at,22672
  4cb1e4:	00221021 	addu	v0,at,v0
  4cb1e8:	90430000 	lbu	v1,0(v0)
  4cb1ec:	8fc2003c 	lw	v0,60(s8)
  4cb1f0:	00000000 	nop
  4cb1f4:	90420000 	lbu	v0,0(v0)
  4cb1f8:	00000000 	nop
  4cb1fc:	00621026 	xor	v0,v1,v0
  4cb200:	304200ff 	andi	v0,v0,0xff
  4cb204:	00021080 	sll	v0,v0,0x2
  4cb208:	8f84804c 	lw	a0,-32692(gp)
  4cb20c:	00000000 	nop
  4cb210:	24845a90 	addiu	a0,a0,23184
  4cb214:	00822021 	addu	a0,a0,v0
  4cb218:	8fc2003c 	lw	v0,60(s8)
  4cb21c:	00000000 	nop
  4cb220:	24420009 	addiu	v0,v0,9
  4cb224:	90420000 	lbu	v0,0(v0)
  4cb228:	00000000 	nop
  4cb22c:	3842005e 	xori	v0,v0,0x5e
  4cb230:	304200ff 	andi	v0,v0,0xff
  4cb234:	8f83804c 	lw	v1,-32692(gp)
  4cb238:	00000000 	nop
  4cb23c:	24635890 	addiu	v1,v1,22672
  4cb240:	00621821 	addu	v1,v1,v0
  4cb244:	8fc2003c 	lw	v0,60(s8)
  4cb248:	00000000 	nop
  4cb24c:	24420001 	addiu	v0,v0,1
  4cb250:	90630000 	lbu	v1,0(v1)
  4cb254:	90420000 	lbu	v0,0(v0)
  4cb258:	00000000 	nop
  4cb25c:	00621026 	xor	v0,v1,v0
  4cb260:	304200ff 	andi	v0,v0,0xff
  4cb264:	00021080 	sll	v0,v0,0x2
  4cb268:	24420400 	addiu	v0,v0,1024
  4cb26c:	8f81804c 	lw	at,-32692(gp)
  4cb270:	00000000 	nop
  4cb274:	24215a90 	addiu	at,at,23184
  4cb278:	00221021 	addu	v0,at,v0
  4cb27c:	8c830000 	lw	v1,0(a0)
  4cb280:	8c420000 	lw	v0,0(v0)
  4cb284:	00000000 	nop
  4cb288:	00622026 	xor	a0,v1,v0
  4cb28c:	8fc2003c 	lw	v0,60(s8)
  4cb290:	00000000 	nop
  4cb294:	2442000a 	addiu	v0,v0,10
  4cb298:	90420000 	lbu	v0,0(v0)
  4cb29c:	00000000 	nop
  4cb2a0:	384200f2 	xori	v0,v0,0xf2
  4cb2a4:	304200ff 	andi	v0,v0,0xff
  4cb2a8:	8f83804c 	lw	v1,-32692(gp)
  4cb2ac:	00000000 	nop
  4cb2b0:	24635990 	addiu	v1,v1,22928
  4cb2b4:	00621821 	addu	v1,v1,v0
  4cb2b8:	8fc2003c 	lw	v0,60(s8)
  4cb2bc:	00000000 	nop
  4cb2c0:	24420002 	addiu	v0,v0,2
  4cb2c4:	90630000 	lbu	v1,0(v1)
  4cb2c8:	90420000 	lbu	v0,0(v0)
  4cb2cc:	00000000 	nop
  4cb2d0:	00621026 	xor	v0,v1,v0
  4cb2d4:	304200ff 	andi	v0,v0,0xff
  4cb2d8:	00021080 	sll	v0,v0,0x2
  4cb2dc:	24420800 	addiu	v0,v0,2048
  4cb2e0:	8f81804c 	lw	at,-32692(gp)
  4cb2e4:	00000000 	nop
  4cb2e8:	24215a90 	addiu	at,at,23184
  4cb2ec:	00221021 	addu	v0,at,v0
  4cb2f0:	8c420000 	lw	v0,0(v0)
  4cb2f4:	00000000 	nop
  4cb2f8:	00822026 	xor	a0,a0,v0
  4cb2fc:	8fc2003c 	lw	v0,60(s8)
  4cb300:	00000000 	nop
  4cb304:	2442000b 	addiu	v0,v0,11
  4cb308:	90420000 	lbu	v0,0(v0)
  4cb30c:	00000000 	nop
  4cb310:	3842005e 	xori	v0,v0,0x5e
  4cb314:	304200ff 	andi	v0,v0,0xff
  4cb318:	8f83804c 	lw	v1,-32692(gp)
  4cb31c:	00000000 	nop
  4cb320:	24635990 	addiu	v1,v1,22928
  4cb324:	00621821 	addu	v1,v1,v0
  4cb328:	8fc2003c 	lw	v0,60(s8)
  4cb32c:	00000000 	nop
  4cb330:	24420003 	addiu	v0,v0,3
  4cb334:	90630000 	lbu	v1,0(v1)
  4cb338:	90420000 	lbu	v0,0(v0)
  4cb33c:	00000000 	nop
  4cb340:	00621026 	xor	v0,v1,v0
  4cb344:	304200ff 	andi	v0,v0,0xff
  4cb348:	00021080 	sll	v0,v0,0x2
  4cb34c:	24420c00 	addiu	v0,v0,3072
  4cb350:	8f81804c 	lw	at,-32692(gp)
  4cb354:	00000000 	nop
  4cb358:	24215a90 	addiu	at,at,23184
  4cb35c:	00221021 	addu	v0,at,v0
  4cb360:	8c420000 	lw	v0,0(v0)
  4cb364:	00000000 	nop
  4cb368:	00821026 	xor	v0,a0,v0
  4cb36c:	afc20014 	sw	v0,20(s8)
  4cb370:	8fc2003c 	lw	v0,60(s8)
  4cb374:	00000000 	nop
  4cb378:	2442000c 	addiu	v0,v0,12
  4cb37c:	90420000 	lbu	v0,0(v0)
  4cb380:	00000000 	nop
  4cb384:	384200d0 	xori	v0,v0,0xd0
  4cb388:	304200ff 	andi	v0,v0,0xff
  4cb38c:	8f83804c 	lw	v1,-32692(gp)
  4cb390:	00000000 	nop
  4cb394:	24635890 	addiu	v1,v1,22672
  4cb398:	00621821 	addu	v1,v1,v0
  4cb39c:	8fc2003c 	lw	v0,60(s8)
  4cb3a0:	00000000 	nop
  4cb3a4:	24420004 	addiu	v0,v0,4
  4cb3a8:	90630000 	lbu	v1,0(v1)
  4cb3ac:	90420000 	lbu	v0,0(v0)
  4cb3b0:	00000000 	nop
  4cb3b4:	00621026 	xor	v0,v1,v0
  4cb3b8:	304200ff 	andi	v0,v0,0xff
  4cb3bc:	00021080 	sll	v0,v0,0x2
  4cb3c0:	8f84804c 	lw	a0,-32692(gp)
  4cb3c4:	00000000 	nop
  4cb3c8:	24845a90 	addiu	a0,a0,23184
  4cb3cc:	00822021 	addu	a0,a0,v0
  4cb3d0:	8fc2003c 	lw	v0,60(s8)
  4cb3d4:	00000000 	nop
  4cb3d8:	2442000d 	addiu	v0,v0,13
  4cb3dc:	90420000 	lbu	v0,0(v0)
  4cb3e0:	00000000 	nop
  4cb3e4:	384200ba 	xori	v0,v0,0xba
  4cb3e8:	304200ff 	andi	v0,v0,0xff
  4cb3ec:	8f83804c 	lw	v1,-32692(gp)
  4cb3f0:	00000000 	nop
  4cb3f4:	24635890 	addiu	v1,v1,22672
  4cb3f8:	00621821 	addu	v1,v1,v0
  4cb3fc:	8fc2003c 	lw	v0,60(s8)
  4cb400:	00000000 	nop
  4cb404:	24420005 	addiu	v0,v0,5
  4cb408:	90630000 	lbu	v1,0(v1)
  4cb40c:	90420000 	lbu	v0,0(v0)
  4cb410:	00000000 	nop
  4cb414:	00621026 	xor	v0,v1,v0
  4cb418:	304200ff 	andi	v0,v0,0xff
  4cb41c:	00021080 	sll	v0,v0,0x2
  4cb420:	24420400 	addiu	v0,v0,1024
  4cb424:	8f81804c 	lw	at,-32692(gp)
  4cb428:	00000000 	nop
  4cb42c:	24215a90 	addiu	at,at,23184
  4cb430:	00221021 	addu	v0,at,v0
  4cb434:	8c830000 	lw	v1,0(a0)
  4cb438:	8c420000 	lw	v0,0(v0)
  4cb43c:	00000000 	nop
  4cb440:	00622026 	xor	a0,v1,v0
  4cb444:	8fc2003c 	lw	v0,60(s8)
  4cb448:	00000000 	nop
  4cb44c:	2442000e 	addiu	v0,v0,14
  4cb450:	90420000 	lbu	v0,0(v0)
  4cb454:	00000000 	nop
  4cb458:	384200d0 	xori	v0,v0,0xd0
  4cb45c:	304200ff 	andi	v0,v0,0xff
  4cb460:	8f83804c 	lw	v1,-32692(gp)
  4cb464:	00000000 	nop
  4cb468:	24635990 	addiu	v1,v1,22928
  4cb46c:	00621821 	addu	v1,v1,v0
  4cb470:	8fc2003c 	lw	v0,60(s8)
  4cb474:	00000000 	nop
  4cb478:	24420006 	addiu	v0,v0,6
  4cb47c:	90630000 	lbu	v1,0(v1)
  4cb480:	90420000 	lbu	v0,0(v0)
  4cb484:	00000000 	nop
  4cb488:	00621026 	xor	v0,v1,v0
  4cb48c:	304200ff 	andi	v0,v0,0xff
  4cb490:	00021080 	sll	v0,v0,0x2
  4cb494:	24420800 	addiu	v0,v0,2048
  4cb498:	8f81804c 	lw	at,-32692(gp)
  4cb49c:	00000000 	nop
  4cb4a0:	24215a90 	addiu	at,at,23184
  4cb4a4:	00221021 	addu	v0,at,v0
  4cb4a8:	8c420000 	lw	v0,0(v0)
  4cb4ac:	00000000 	nop
  4cb4b0:	00822026 	xor	a0,a0,v0
  4cb4b4:	8fc2003c 	lw	v0,60(s8)
  4cb4b8:	00000000 	nop
  4cb4bc:	2442000f 	addiu	v0,v0,15
  4cb4c0:	90420000 	lbu	v0,0(v0)
  4cb4c4:	00000000 	nop
  4cb4c8:	384200ba 	xori	v0,v0,0xba
  4cb4cc:	304200ff 	andi	v0,v0,0xff
  4cb4d0:	8f83804c 	lw	v1,-32692(gp)
  4cb4d4:	00000000 	nop
  4cb4d8:	24635990 	addiu	v1,v1,22928
  4cb4dc:	00621821 	addu	v1,v1,v0
  4cb4e0:	8fc2003c 	lw	v0,60(s8)
  4cb4e4:	00000000 	nop
  4cb4e8:	24420007 	addiu	v0,v0,7
  4cb4ec:	90630000 	lbu	v1,0(v1)
  4cb4f0:	90420000 	lbu	v0,0(v0)
  4cb4f4:	00000000 	nop
  4cb4f8:	00621026 	xor	v0,v1,v0
  4cb4fc:	304200ff 	andi	v0,v0,0xff
  4cb500:	00021080 	sll	v0,v0,0x2
  4cb504:	24420c00 	addiu	v0,v0,3072
  4cb508:	8f81804c 	lw	at,-32692(gp)
  4cb50c:	00000000 	nop
  4cb510:	24215a90 	addiu	at,at,23184
  4cb514:	00221021 	addu	v0,at,v0
  4cb518:	8c420000 	lw	v0,0(v0)
  4cb51c:	00000000 	nop
  4cb520:	00821026 	xor	v0,a0,v0
  4cb524:	afc20018 	sw	v0,24(s8)
  4cb528:	8fc20018 	lw	v0,24(s8)
  4cb52c:	00000000 	nop
  4cb530:	00021a00 	sll	v1,v0,0x8
  4cb534:	00021602 	srl	v0,v0,0x18
  4cb538:	00621025 	or	v0,v1,v0
  4cb53c:	afc20018 	sw	v0,24(s8)
  4cb540:	8fc30014 	lw	v1,20(s8)
  4cb544:	8fc20018 	lw	v0,24(s8)
  4cb548:	00000000 	nop
  4cb54c:	00621021 	addu	v0,v1,v0
  4cb550:	afc20014 	sw	v0,20(s8)
  4cb554:	8fc30018 	lw	v1,24(s8)
  4cb558:	8fc20014 	lw	v0,20(s8)
  4cb55c:	00000000 	nop
  4cb560:	00621021 	addu	v0,v1,v0
  4cb564:	afc20018 	sw	v0,24(s8)
  4cb568:	8fc30014 	lw	v1,20(s8)
  4cb56c:	8fc20038 	lw	v0,56(s8)
  4cb570:	00000000 	nop
  4cb574:	ac431080 	sw	v1,4224(v0)
  4cb578:	8fc20018 	lw	v0,24(s8)
  4cb57c:	00000000 	nop
  4cb580:	00021a40 	sll	v1,v0,0x9
  4cb584:	000215c2 	srl	v0,v0,0x17
  4cb588:	00621825 	or	v1,v1,v0
  4cb58c:	8fc20038 	lw	v0,56(s8)
  4cb590:	00000000 	nop
  4cb594:	ac431084 	sw	v1,4228(v0)
		CALC_K (k, 26, 0x8B, 0xAE, 0x30, 0x5B);
  4cb598:	8fc2003c 	lw	v0,60(s8)
  4cb59c:	00000000 	nop
  4cb5a0:	24420008 	addiu	v0,v0,8
  4cb5a4:	90420000 	lbu	v0,0(v0)
  4cb5a8:	00000000 	nop
  4cb5ac:	3842008b 	xori	v0,v0,0x8b
  4cb5b0:	304200ff 	andi	v0,v0,0xff
  4cb5b4:	8f81804c 	lw	at,-32692(gp)
  4cb5b8:	00000000 	nop
  4cb5bc:	24215890 	addiu	at,at,22672
  4cb5c0:	00221021 	addu	v0,at,v0
  4cb5c4:	90430000 	lbu	v1,0(v0)
  4cb5c8:	8fc2003c 	lw	v0,60(s8)
  4cb5cc:	00000000 	nop
  4cb5d0:	90420000 	lbu	v0,0(v0)
  4cb5d4:	00000000 	nop
  4cb5d8:	00621026 	xor	v0,v1,v0
  4cb5dc:	304200ff 	andi	v0,v0,0xff
  4cb5e0:	00021080 	sll	v0,v0,0x2
  4cb5e4:	8f84804c 	lw	a0,-32692(gp)
  4cb5e8:	00000000 	nop
  4cb5ec:	24845a90 	addiu	a0,a0,23184
  4cb5f0:	00822021 	addu	a0,a0,v0
  4cb5f4:	8fc2003c 	lw	v0,60(s8)
  4cb5f8:	00000000 	nop
  4cb5fc:	24420009 	addiu	v0,v0,9
  4cb600:	90420000 	lbu	v0,0(v0)
  4cb604:	00000000 	nop
  4cb608:	384200ae 	xori	v0,v0,0xae
  4cb60c:	304200ff 	andi	v0,v0,0xff
  4cb610:	8f83804c 	lw	v1,-32692(gp)
  4cb614:	00000000 	nop
  4cb618:	24635890 	addiu	v1,v1,22672
  4cb61c:	00621821 	addu	v1,v1,v0
  4cb620:	8fc2003c 	lw	v0,60(s8)
  4cb624:	00000000 	nop
  4cb628:	24420001 	addiu	v0,v0,1
  4cb62c:	90630000 	lbu	v1,0(v1)
  4cb630:	90420000 	lbu	v0,0(v0)
  4cb634:	00000000 	nop
  4cb638:	00621026 	xor	v0,v1,v0
  4cb63c:	304200ff 	andi	v0,v0,0xff
  4cb640:	00021080 	sll	v0,v0,0x2
  4cb644:	24420400 	addiu	v0,v0,1024
  4cb648:	8f81804c 	lw	at,-32692(gp)
  4cb64c:	00000000 	nop
  4cb650:	24215a90 	addiu	at,at,23184
  4cb654:	00221021 	addu	v0,at,v0
  4cb658:	8c830000 	lw	v1,0(a0)
  4cb65c:	8c420000 	lw	v0,0(v0)
  4cb660:	00000000 	nop
  4cb664:	00622026 	xor	a0,v1,v0
  4cb668:	8fc2003c 	lw	v0,60(s8)
  4cb66c:	00000000 	nop
  4cb670:	2442000a 	addiu	v0,v0,10
  4cb674:	90420000 	lbu	v0,0(v0)
  4cb678:	00000000 	nop
  4cb67c:	3842008b 	xori	v0,v0,0x8b
  4cb680:	304200ff 	andi	v0,v0,0xff
  4cb684:	8f83804c 	lw	v1,-32692(gp)
  4cb688:	00000000 	nop
  4cb68c:	24635990 	addiu	v1,v1,22928
  4cb690:	00621821 	addu	v1,v1,v0
  4cb694:	8fc2003c 	lw	v0,60(s8)
  4cb698:	00000000 	nop
  4cb69c:	24420002 	addiu	v0,v0,2
  4cb6a0:	90630000 	lbu	v1,0(v1)
  4cb6a4:	90420000 	lbu	v0,0(v0)
  4cb6a8:	00000000 	nop
  4cb6ac:	00621026 	xor	v0,v1,v0
  4cb6b0:	304200ff 	andi	v0,v0,0xff
  4cb6b4:	00021080 	sll	v0,v0,0x2
  4cb6b8:	24420800 	addiu	v0,v0,2048
  4cb6bc:	8f81804c 	lw	at,-32692(gp)
  4cb6c0:	00000000 	nop
  4cb6c4:	24215a90 	addiu	at,at,23184
  4cb6c8:	00221021 	addu	v0,at,v0
  4cb6cc:	8c420000 	lw	v0,0(v0)
  4cb6d0:	00000000 	nop
  4cb6d4:	00822026 	xor	a0,a0,v0
  4cb6d8:	8fc2003c 	lw	v0,60(s8)
  4cb6dc:	00000000 	nop
  4cb6e0:	2442000b 	addiu	v0,v0,11
  4cb6e4:	90420000 	lbu	v0,0(v0)
  4cb6e8:	00000000 	nop
  4cb6ec:	384200ae 	xori	v0,v0,0xae
  4cb6f0:	304200ff 	andi	v0,v0,0xff
  4cb6f4:	8f83804c 	lw	v1,-32692(gp)
  4cb6f8:	00000000 	nop
  4cb6fc:	24635990 	addiu	v1,v1,22928
  4cb700:	00621821 	addu	v1,v1,v0
  4cb704:	8fc2003c 	lw	v0,60(s8)
  4cb708:	00000000 	nop
  4cb70c:	24420003 	addiu	v0,v0,3
  4cb710:	90630000 	lbu	v1,0(v1)
  4cb714:	90420000 	lbu	v0,0(v0)
  4cb718:	00000000 	nop
  4cb71c:	00621026 	xor	v0,v1,v0
  4cb720:	304200ff 	andi	v0,v0,0xff
  4cb724:	00021080 	sll	v0,v0,0x2
  4cb728:	24420c00 	addiu	v0,v0,3072
  4cb72c:	8f81804c 	lw	at,-32692(gp)
  4cb730:	00000000 	nop
  4cb734:	24215a90 	addiu	at,at,23184
  4cb738:	00221021 	addu	v0,at,v0
  4cb73c:	8c420000 	lw	v0,0(v0)
  4cb740:	00000000 	nop
  4cb744:	00821026 	xor	v0,a0,v0
  4cb748:	afc20014 	sw	v0,20(s8)
  4cb74c:	8fc2003c 	lw	v0,60(s8)
  4cb750:	00000000 	nop
  4cb754:	2442000c 	addiu	v0,v0,12
  4cb758:	90420000 	lbu	v0,0(v0)
  4cb75c:	00000000 	nop
  4cb760:	38420030 	xori	v0,v0,0x30
  4cb764:	304200ff 	andi	v0,v0,0xff
  4cb768:	8f83804c 	lw	v1,-32692(gp)
  4cb76c:	00000000 	nop
  4cb770:	24635890 	addiu	v1,v1,22672
  4cb774:	00621821 	addu	v1,v1,v0
  4cb778:	8fc2003c 	lw	v0,60(s8)
  4cb77c:	00000000 	nop
  4cb780:	24420004 	addiu	v0,v0,4
  4cb784:	90630000 	lbu	v1,0(v1)
  4cb788:	90420000 	lbu	v0,0(v0)
  4cb78c:	00000000 	nop
  4cb790:	00621026 	xor	v0,v1,v0
  4cb794:	304200ff 	andi	v0,v0,0xff
  4cb798:	00021080 	sll	v0,v0,0x2
  4cb79c:	8f84804c 	lw	a0,-32692(gp)
  4cb7a0:	00000000 	nop
  4cb7a4:	24845a90 	addiu	a0,a0,23184
  4cb7a8:	00822021 	addu	a0,a0,v0
  4cb7ac:	8fc2003c 	lw	v0,60(s8)
  4cb7b0:	00000000 	nop
  4cb7b4:	2442000d 	addiu	v0,v0,13
  4cb7b8:	90420000 	lbu	v0,0(v0)
  4cb7bc:	00000000 	nop
  4cb7c0:	3842005b 	xori	v0,v0,0x5b
  4cb7c4:	304200ff 	andi	v0,v0,0xff
  4cb7c8:	8f83804c 	lw	v1,-32692(gp)
  4cb7cc:	00000000 	nop
  4cb7d0:	24635890 	addiu	v1,v1,22672
  4cb7d4:	00621821 	addu	v1,v1,v0
  4cb7d8:	8fc2003c 	lw	v0,60(s8)
  4cb7dc:	00000000 	nop
  4cb7e0:	24420005 	addiu	v0,v0,5
  4cb7e4:	90630000 	lbu	v1,0(v1)
  4cb7e8:	90420000 	lbu	v0,0(v0)
  4cb7ec:	00000000 	nop
  4cb7f0:	00621026 	xor	v0,v1,v0
  4cb7f4:	304200ff 	andi	v0,v0,0xff
  4cb7f8:	00021080 	sll	v0,v0,0x2
  4cb7fc:	24420400 	addiu	v0,v0,1024
  4cb800:	8f81804c 	lw	at,-32692(gp)
  4cb804:	00000000 	nop
  4cb808:	24215a90 	addiu	at,at,23184
  4cb80c:	00221021 	addu	v0,at,v0
  4cb810:	8c830000 	lw	v1,0(a0)
  4cb814:	8c420000 	lw	v0,0(v0)
  4cb818:	00000000 	nop
  4cb81c:	00622026 	xor	a0,v1,v0
  4cb820:	8fc2003c 	lw	v0,60(s8)
  4cb824:	00000000 	nop
  4cb828:	2442000e 	addiu	v0,v0,14
  4cb82c:	90420000 	lbu	v0,0(v0)
  4cb830:	00000000 	nop
  4cb834:	38420030 	xori	v0,v0,0x30
  4cb838:	304200ff 	andi	v0,v0,0xff
  4cb83c:	8f83804c 	lw	v1,-32692(gp)
  4cb840:	00000000 	nop
  4cb844:	24635990 	addiu	v1,v1,22928
  4cb848:	00621821 	addu	v1,v1,v0
  4cb84c:	8fc2003c 	lw	v0,60(s8)
  4cb850:	00000000 	nop
  4cb854:	24420006 	addiu	v0,v0,6
  4cb858:	90630000 	lbu	v1,0(v1)
  4cb85c:	90420000 	lbu	v0,0(v0)
  4cb860:	00000000 	nop
  4cb864:	00621026 	xor	v0,v1,v0
  4cb868:	304200ff 	andi	v0,v0,0xff
  4cb86c:	00021080 	sll	v0,v0,0x2
  4cb870:	24420800 	addiu	v0,v0,2048
  4cb874:	8f81804c 	lw	at,-32692(gp)
  4cb878:	00000000 	nop
  4cb87c:	24215a90 	addiu	at,at,23184
  4cb880:	00221021 	addu	v0,at,v0
  4cb884:	8c420000 	lw	v0,0(v0)
  4cb888:	00000000 	nop
  4cb88c:	00822026 	xor	a0,a0,v0
  4cb890:	8fc2003c 	lw	v0,60(s8)
  4cb894:	00000000 	nop
  4cb898:	2442000f 	addiu	v0,v0,15
  4cb89c:	90420000 	lbu	v0,0(v0)
  4cb8a0:	00000000 	nop
  4cb8a4:	3842005b 	xori	v0,v0,0x5b
  4cb8a8:	304200ff 	andi	v0,v0,0xff
  4cb8ac:	8f83804c 	lw	v1,-32692(gp)
  4cb8b0:	00000000 	nop
  4cb8b4:	24635990 	addiu	v1,v1,22928
  4cb8b8:	00621821 	addu	v1,v1,v0
  4cb8bc:	8fc2003c 	lw	v0,60(s8)
  4cb8c0:	00000000 	nop
  4cb8c4:	24420007 	addiu	v0,v0,7
  4cb8c8:	90630000 	lbu	v1,0(v1)
  4cb8cc:	90420000 	lbu	v0,0(v0)
  4cb8d0:	00000000 	nop
  4cb8d4:	00621026 	xor	v0,v1,v0
  4cb8d8:	304200ff 	andi	v0,v0,0xff
  4cb8dc:	00021080 	sll	v0,v0,0x2
  4cb8e0:	24420c00 	addiu	v0,v0,3072
  4cb8e4:	8f81804c 	lw	at,-32692(gp)
  4cb8e8:	00000000 	nop
  4cb8ec:	24215a90 	addiu	at,at,23184
  4cb8f0:	00221021 	addu	v0,at,v0
  4cb8f4:	8c420000 	lw	v0,0(v0)
  4cb8f8:	00000000 	nop
  4cb8fc:	00821026 	xor	v0,a0,v0
  4cb900:	afc20018 	sw	v0,24(s8)
  4cb904:	8fc20018 	lw	v0,24(s8)
  4cb908:	00000000 	nop
  4cb90c:	00021a00 	sll	v1,v0,0x8
  4cb910:	00021602 	srl	v0,v0,0x18
  4cb914:	00621025 	or	v0,v1,v0
  4cb918:	afc20018 	sw	v0,24(s8)
  4cb91c:	8fc30014 	lw	v1,20(s8)
  4cb920:	8fc20018 	lw	v0,24(s8)
  4cb924:	00000000 	nop
  4cb928:	00621021 	addu	v0,v1,v0
  4cb92c:	afc20014 	sw	v0,20(s8)
  4cb930:	8fc30018 	lw	v1,24(s8)
  4cb934:	8fc20014 	lw	v0,20(s8)
  4cb938:	00000000 	nop
  4cb93c:	00621021 	addu	v0,v1,v0
  4cb940:	afc20018 	sw	v0,24(s8)
  4cb944:	8fc30014 	lw	v1,20(s8)
  4cb948:	8fc20038 	lw	v0,56(s8)
  4cb94c:	00000000 	nop
  4cb950:	ac431088 	sw	v1,4232(v0)
  4cb954:	8fc20018 	lw	v0,24(s8)
  4cb958:	00000000 	nop
  4cb95c:	00021a40 	sll	v1,v0,0x9
  4cb960:	000215c2 	srl	v0,v0,0x17
  4cb964:	00621825 	or	v1,v1,v0
  4cb968:	8fc20038 	lw	v0,56(s8)
  4cb96c:	00000000 	nop
  4cb970:	ac43108c 	sw	v1,4236(v0)
		CALC_K (k, 28, 0x84, 0x8A, 0x54, 0x00);
  4cb974:	8fc2003c 	lw	v0,60(s8)
  4cb978:	00000000 	nop
  4cb97c:	24420008 	addiu	v0,v0,8
  4cb980:	90420000 	lbu	v0,0(v0)
  4cb984:	00000000 	nop
  4cb988:	38420084 	xori	v0,v0,0x84
  4cb98c:	304200ff 	andi	v0,v0,0xff
  4cb990:	8f81804c 	lw	at,-32692(gp)
  4cb994:	00000000 	nop
  4cb998:	24215890 	addiu	at,at,22672
  4cb99c:	00221021 	addu	v0,at,v0
  4cb9a0:	90430000 	lbu	v1,0(v0)
  4cb9a4:	8fc2003c 	lw	v0,60(s8)
  4cb9a8:	00000000 	nop
  4cb9ac:	90420000 	lbu	v0,0(v0)
  4cb9b0:	00000000 	nop
  4cb9b4:	00621026 	xor	v0,v1,v0
  4cb9b8:	304200ff 	andi	v0,v0,0xff
  4cb9bc:	00021080 	sll	v0,v0,0x2
  4cb9c0:	8f84804c 	lw	a0,-32692(gp)
  4cb9c4:	00000000 	nop
  4cb9c8:	24845a90 	addiu	a0,a0,23184
  4cb9cc:	00822021 	addu	a0,a0,v0
  4cb9d0:	8fc2003c 	lw	v0,60(s8)
  4cb9d4:	00000000 	nop
  4cb9d8:	24420009 	addiu	v0,v0,9
  4cb9dc:	90420000 	lbu	v0,0(v0)
  4cb9e0:	00000000 	nop
  4cb9e4:	3842008a 	xori	v0,v0,0x8a
  4cb9e8:	304200ff 	andi	v0,v0,0xff
  4cb9ec:	8f83804c 	lw	v1,-32692(gp)
  4cb9f0:	00000000 	nop
  4cb9f4:	24635890 	addiu	v1,v1,22672
  4cb9f8:	00621821 	addu	v1,v1,v0
  4cb9fc:	8fc2003c 	lw	v0,60(s8)
  4cba00:	00000000 	nop
  4cba04:	24420001 	addiu	v0,v0,1
  4cba08:	90630000 	lbu	v1,0(v1)
  4cba0c:	90420000 	lbu	v0,0(v0)
  4cba10:	00000000 	nop
  4cba14:	00621026 	xor	v0,v1,v0
  4cba18:	304200ff 	andi	v0,v0,0xff
  4cba1c:	00021080 	sll	v0,v0,0x2
  4cba20:	24420400 	addiu	v0,v0,1024
  4cba24:	8f81804c 	lw	at,-32692(gp)
  4cba28:	00000000 	nop
  4cba2c:	24215a90 	addiu	at,at,23184
  4cba30:	00221021 	addu	v0,at,v0
  4cba34:	8c830000 	lw	v1,0(a0)
  4cba38:	8c420000 	lw	v0,0(v0)
  4cba3c:	00000000 	nop
  4cba40:	00622026 	xor	a0,v1,v0
  4cba44:	8fc2003c 	lw	v0,60(s8)
  4cba48:	00000000 	nop
  4cba4c:	2442000a 	addiu	v0,v0,10
  4cba50:	90420000 	lbu	v0,0(v0)
  4cba54:	00000000 	nop
  4cba58:	38420084 	xori	v0,v0,0x84
  4cba5c:	304200ff 	andi	v0,v0,0xff
  4cba60:	8f83804c 	lw	v1,-32692(gp)
  4cba64:	00000000 	nop
  4cba68:	24635990 	addiu	v1,v1,22928
  4cba6c:	00621821 	addu	v1,v1,v0
  4cba70:	8fc2003c 	lw	v0,60(s8)
  4cba74:	00000000 	nop
  4cba78:	24420002 	addiu	v0,v0,2
  4cba7c:	90630000 	lbu	v1,0(v1)
  4cba80:	90420000 	lbu	v0,0(v0)
  4cba84:	00000000 	nop
  4cba88:	00621026 	xor	v0,v1,v0
  4cba8c:	304200ff 	andi	v0,v0,0xff
  4cba90:	00021080 	sll	v0,v0,0x2
  4cba94:	24420800 	addiu	v0,v0,2048
  4cba98:	8f81804c 	lw	at,-32692(gp)
  4cba9c:	00000000 	nop
  4cbaa0:	24215a90 	addiu	at,at,23184
  4cbaa4:	00221021 	addu	v0,at,v0
  4cbaa8:	8c420000 	lw	v0,0(v0)
  4cbaac:	00000000 	nop
  4cbab0:	00822026 	xor	a0,a0,v0
  4cbab4:	8fc2003c 	lw	v0,60(s8)
  4cbab8:	00000000 	nop
  4cbabc:	2442000b 	addiu	v0,v0,11
  4cbac0:	90420000 	lbu	v0,0(v0)
  4cbac4:	00000000 	nop
  4cbac8:	3842008a 	xori	v0,v0,0x8a
  4cbacc:	304200ff 	andi	v0,v0,0xff
  4cbad0:	8f83804c 	lw	v1,-32692(gp)
  4cbad4:	00000000 	nop
  4cbad8:	24635990 	addiu	v1,v1,22928
  4cbadc:	00621821 	addu	v1,v1,v0
  4cbae0:	8fc2003c 	lw	v0,60(s8)
  4cbae4:	00000000 	nop
  4cbae8:	24420003 	addiu	v0,v0,3
  4cbaec:	90630000 	lbu	v1,0(v1)
  4cbaf0:	90420000 	lbu	v0,0(v0)
  4cbaf4:	00000000 	nop
  4cbaf8:	00621026 	xor	v0,v1,v0
  4cbafc:	304200ff 	andi	v0,v0,0xff
  4cbb00:	00021080 	sll	v0,v0,0x2
  4cbb04:	24420c00 	addiu	v0,v0,3072
  4cbb08:	8f81804c 	lw	at,-32692(gp)
  4cbb0c:	00000000 	nop
  4cbb10:	24215a90 	addiu	at,at,23184
  4cbb14:	00221021 	addu	v0,at,v0
  4cbb18:	8c420000 	lw	v0,0(v0)
  4cbb1c:	00000000 	nop
  4cbb20:	00821026 	xor	v0,a0,v0
  4cbb24:	afc20014 	sw	v0,20(s8)
  4cbb28:	8fc2003c 	lw	v0,60(s8)
  4cbb2c:	00000000 	nop
  4cbb30:	2442000c 	addiu	v0,v0,12
  4cbb34:	90420000 	lbu	v0,0(v0)
  4cbb38:	00000000 	nop
  4cbb3c:	38420054 	xori	v0,v0,0x54
  4cbb40:	304200ff 	andi	v0,v0,0xff
  4cbb44:	8f83804c 	lw	v1,-32692(gp)
  4cbb48:	00000000 	nop
  4cbb4c:	24635890 	addiu	v1,v1,22672
  4cbb50:	00621821 	addu	v1,v1,v0
  4cbb54:	8fc2003c 	lw	v0,60(s8)
  4cbb58:	00000000 	nop
  4cbb5c:	24420004 	addiu	v0,v0,4
  4cbb60:	90630000 	lbu	v1,0(v1)
  4cbb64:	90420000 	lbu	v0,0(v0)
  4cbb68:	00000000 	nop
  4cbb6c:	00621026 	xor	v0,v1,v0
  4cbb70:	304200ff 	andi	v0,v0,0xff
  4cbb74:	00021080 	sll	v0,v0,0x2
  4cbb78:	8f84804c 	lw	a0,-32692(gp)
  4cbb7c:	00000000 	nop
  4cbb80:	24845a90 	addiu	a0,a0,23184
  4cbb84:	00822021 	addu	a0,a0,v0
  4cbb88:	8fc2003c 	lw	v0,60(s8)
  4cbb8c:	00000000 	nop
  4cbb90:	2442000d 	addiu	v0,v0,13
  4cbb94:	90420000 	lbu	v0,0(v0)
  4cbb98:	8f83804c 	lw	v1,-32692(gp)
  4cbb9c:	00000000 	nop
  4cbba0:	24635890 	addiu	v1,v1,22672
  4cbba4:	00621821 	addu	v1,v1,v0
  4cbba8:	8fc2003c 	lw	v0,60(s8)
  4cbbac:	00000000 	nop
  4cbbb0:	24420005 	addiu	v0,v0,5
  4cbbb4:	90630000 	lbu	v1,0(v1)
  4cbbb8:	90420000 	lbu	v0,0(v0)
  4cbbbc:	00000000 	nop
  4cbbc0:	00621026 	xor	v0,v1,v0
  4cbbc4:	304200ff 	andi	v0,v0,0xff
  4cbbc8:	00021080 	sll	v0,v0,0x2
  4cbbcc:	24420400 	addiu	v0,v0,1024
  4cbbd0:	8f81804c 	lw	at,-32692(gp)
  4cbbd4:	00000000 	nop
  4cbbd8:	24215a90 	addiu	at,at,23184
  4cbbdc:	00221021 	addu	v0,at,v0
  4cbbe0:	8c830000 	lw	v1,0(a0)
  4cbbe4:	8c420000 	lw	v0,0(v0)
  4cbbe8:	00000000 	nop
  4cbbec:	00622026 	xor	a0,v1,v0
  4cbbf0:	8fc2003c 	lw	v0,60(s8)
  4cbbf4:	00000000 	nop
  4cbbf8:	2442000e 	addiu	v0,v0,14
  4cbbfc:	90420000 	lbu	v0,0(v0)
  4cbc00:	00000000 	nop
  4cbc04:	38420054 	xori	v0,v0,0x54
  4cbc08:	304200ff 	andi	v0,v0,0xff
  4cbc0c:	8f83804c 	lw	v1,-32692(gp)
  4cbc10:	00000000 	nop
  4cbc14:	24635990 	addiu	v1,v1,22928
  4cbc18:	00621821 	addu	v1,v1,v0
  4cbc1c:	8fc2003c 	lw	v0,60(s8)
  4cbc20:	00000000 	nop
  4cbc24:	24420006 	addiu	v0,v0,6
  4cbc28:	90630000 	lbu	v1,0(v1)
  4cbc2c:	90420000 	lbu	v0,0(v0)
  4cbc30:	00000000 	nop
  4cbc34:	00621026 	xor	v0,v1,v0
  4cbc38:	304200ff 	andi	v0,v0,0xff
  4cbc3c:	00021080 	sll	v0,v0,0x2
  4cbc40:	24420800 	addiu	v0,v0,2048
  4cbc44:	8f81804c 	lw	at,-32692(gp)
  4cbc48:	00000000 	nop
  4cbc4c:	24215a90 	addiu	at,at,23184
  4cbc50:	00221021 	addu	v0,at,v0
  4cbc54:	8c420000 	lw	v0,0(v0)
  4cbc58:	00000000 	nop
  4cbc5c:	00822026 	xor	a0,a0,v0
  4cbc60:	8fc2003c 	lw	v0,60(s8)
  4cbc64:	00000000 	nop
  4cbc68:	2442000f 	addiu	v0,v0,15
  4cbc6c:	90420000 	lbu	v0,0(v0)
  4cbc70:	8f83804c 	lw	v1,-32692(gp)
  4cbc74:	00000000 	nop
  4cbc78:	24635990 	addiu	v1,v1,22928
  4cbc7c:	00621821 	addu	v1,v1,v0
  4cbc80:	8fc2003c 	lw	v0,60(s8)
  4cbc84:	00000000 	nop
  4cbc88:	24420007 	addiu	v0,v0,7
  4cbc8c:	90630000 	lbu	v1,0(v1)
  4cbc90:	90420000 	lbu	v0,0(v0)
  4cbc94:	00000000 	nop
  4cbc98:	00621026 	xor	v0,v1,v0
  4cbc9c:	304200ff 	andi	v0,v0,0xff
  4cbca0:	00021080 	sll	v0,v0,0x2
  4cbca4:	24420c00 	addiu	v0,v0,3072
  4cbca8:	8f81804c 	lw	at,-32692(gp)
  4cbcac:	00000000 	nop
  4cbcb0:	24215a90 	addiu	at,at,23184
  4cbcb4:	00221021 	addu	v0,at,v0
  4cbcb8:	8c420000 	lw	v0,0(v0)
  4cbcbc:	00000000 	nop
  4cbcc0:	00821026 	xor	v0,a0,v0
  4cbcc4:	afc20018 	sw	v0,24(s8)
  4cbcc8:	8fc20018 	lw	v0,24(s8)
  4cbccc:	00000000 	nop
  4cbcd0:	00021a00 	sll	v1,v0,0x8
  4cbcd4:	00021602 	srl	v0,v0,0x18
  4cbcd8:	00621025 	or	v0,v1,v0
  4cbcdc:	afc20018 	sw	v0,24(s8)
  4cbce0:	8fc30014 	lw	v1,20(s8)
  4cbce4:	8fc20018 	lw	v0,24(s8)
  4cbce8:	00000000 	nop
  4cbcec:	00621021 	addu	v0,v1,v0
  4cbcf0:	afc20014 	sw	v0,20(s8)
  4cbcf4:	8fc30018 	lw	v1,24(s8)
  4cbcf8:	8fc20014 	lw	v0,20(s8)
  4cbcfc:	00000000 	nop
  4cbd00:	00621021 	addu	v0,v1,v0
  4cbd04:	afc20018 	sw	v0,24(s8)
  4cbd08:	8fc30014 	lw	v1,20(s8)
  4cbd0c:	8fc20038 	lw	v0,56(s8)
  4cbd10:	00000000 	nop
  4cbd14:	ac431090 	sw	v1,4240(v0)
  4cbd18:	8fc20018 	lw	v0,24(s8)
  4cbd1c:	00000000 	nop
  4cbd20:	00021a40 	sll	v1,v0,0x9
  4cbd24:	000215c2 	srl	v0,v0,0x17
  4cbd28:	00621825 	or	v1,v1,v0
  4cbd2c:	8fc20038 	lw	v0,56(s8)
  4cbd30:	00000000 	nop
  4cbd34:	ac431094 	sw	v1,4244(v0)
		CALC_K (k, 30, 0xDF, 0xBC, 0x23, 0x9D);
  4cbd38:	8fc2003c 	lw	v0,60(s8)
  4cbd3c:	00000000 	nop
  4cbd40:	24420008 	addiu	v0,v0,8
  4cbd44:	90420000 	lbu	v0,0(v0)
  4cbd48:	00000000 	nop
  4cbd4c:	384200df 	xori	v0,v0,0xdf
  4cbd50:	304200ff 	andi	v0,v0,0xff
  4cbd54:	8f81804c 	lw	at,-32692(gp)
  4cbd58:	00000000 	nop
  4cbd5c:	24215890 	addiu	at,at,22672
  4cbd60:	00221021 	addu	v0,at,v0
  4cbd64:	90430000 	lbu	v1,0(v0)
  4cbd68:	8fc2003c 	lw	v0,60(s8)
  4cbd6c:	00000000 	nop
  4cbd70:	90420000 	lbu	v0,0(v0)
  4cbd74:	00000000 	nop
  4cbd78:	00621026 	xor	v0,v1,v0
  4cbd7c:	304200ff 	andi	v0,v0,0xff
  4cbd80:	00021080 	sll	v0,v0,0x2
  4cbd84:	8f84804c 	lw	a0,-32692(gp)
  4cbd88:	00000000 	nop
  4cbd8c:	24845a90 	addiu	a0,a0,23184
  4cbd90:	00822021 	addu	a0,a0,v0
  4cbd94:	8fc2003c 	lw	v0,60(s8)
  4cbd98:	00000000 	nop
  4cbd9c:	24420009 	addiu	v0,v0,9
  4cbda0:	90420000 	lbu	v0,0(v0)
  4cbda4:	00000000 	nop
  4cbda8:	384200bc 	xori	v0,v0,0xbc
  4cbdac:	304200ff 	andi	v0,v0,0xff
  4cbdb0:	8f83804c 	lw	v1,-32692(gp)
  4cbdb4:	00000000 	nop
  4cbdb8:	24635890 	addiu	v1,v1,22672
  4cbdbc:	00621821 	addu	v1,v1,v0
  4cbdc0:	8fc2003c 	lw	v0,60(s8)
  4cbdc4:	00000000 	nop
  4cbdc8:	24420001 	addiu	v0,v0,1
  4cbdcc:	90630000 	lbu	v1,0(v1)
  4cbdd0:	90420000 	lbu	v0,0(v0)
  4cbdd4:	00000000 	nop
  4cbdd8:	00621026 	xor	v0,v1,v0
  4cbddc:	304200ff 	andi	v0,v0,0xff
  4cbde0:	00021080 	sll	v0,v0,0x2
  4cbde4:	24420400 	addiu	v0,v0,1024
  4cbde8:	8f81804c 	lw	at,-32692(gp)
  4cbdec:	00000000 	nop
  4cbdf0:	24215a90 	addiu	at,at,23184
  4cbdf4:	00221021 	addu	v0,at,v0
  4cbdf8:	8c830000 	lw	v1,0(a0)
  4cbdfc:	8c420000 	lw	v0,0(v0)
  4cbe00:	00000000 	nop
  4cbe04:	00622026 	xor	a0,v1,v0
  4cbe08:	8fc2003c 	lw	v0,60(s8)
  4cbe0c:	00000000 	nop
  4cbe10:	2442000a 	addiu	v0,v0,10
  4cbe14:	90420000 	lbu	v0,0(v0)
  4cbe18:	00000000 	nop
  4cbe1c:	384200df 	xori	v0,v0,0xdf
  4cbe20:	304200ff 	andi	v0,v0,0xff
  4cbe24:	8f83804c 	lw	v1,-32692(gp)
  4cbe28:	00000000 	nop
  4cbe2c:	24635990 	addiu	v1,v1,22928
  4cbe30:	00621821 	addu	v1,v1,v0
  4cbe34:	8fc2003c 	lw	v0,60(s8)
  4cbe38:	00000000 	nop
  4cbe3c:	24420002 	addiu	v0,v0,2
  4cbe40:	90630000 	lbu	v1,0(v1)
  4cbe44:	90420000 	lbu	v0,0(v0)
  4cbe48:	00000000 	nop
  4cbe4c:	00621026 	xor	v0,v1,v0
  4cbe50:	304200ff 	andi	v0,v0,0xff
  4cbe54:	00021080 	sll	v0,v0,0x2
  4cbe58:	24420800 	addiu	v0,v0,2048
  4cbe5c:	8f81804c 	lw	at,-32692(gp)
  4cbe60:	00000000 	nop
  4cbe64:	24215a90 	addiu	at,at,23184
  4cbe68:	00221021 	addu	v0,at,v0
  4cbe6c:	8c420000 	lw	v0,0(v0)
  4cbe70:	00000000 	nop
  4cbe74:	00822026 	xor	a0,a0,v0
  4cbe78:	8fc2003c 	lw	v0,60(s8)
  4cbe7c:	00000000 	nop
  4cbe80:	2442000b 	addiu	v0,v0,11
  4cbe84:	90420000 	lbu	v0,0(v0)
  4cbe88:	00000000 	nop
  4cbe8c:	384200bc 	xori	v0,v0,0xbc
  4cbe90:	304200ff 	andi	v0,v0,0xff
  4cbe94:	8f83804c 	lw	v1,-32692(gp)
  4cbe98:	00000000 	nop
  4cbe9c:	24635990 	addiu	v1,v1,22928
  4cbea0:	00621821 	addu	v1,v1,v0
  4cbea4:	8fc2003c 	lw	v0,60(s8)
  4cbea8:	00000000 	nop
  4cbeac:	24420003 	addiu	v0,v0,3
  4cbeb0:	90630000 	lbu	v1,0(v1)
  4cbeb4:	90420000 	lbu	v0,0(v0)
  4cbeb8:	00000000 	nop
  4cbebc:	00621026 	xor	v0,v1,v0
  4cbec0:	304200ff 	andi	v0,v0,0xff
  4cbec4:	00021080 	sll	v0,v0,0x2
  4cbec8:	24420c00 	addiu	v0,v0,3072
  4cbecc:	8f81804c 	lw	at,-32692(gp)
  4cbed0:	00000000 	nop
  4cbed4:	24215a90 	addiu	at,at,23184
  4cbed8:	00221021 	addu	v0,at,v0
  4cbedc:	8c420000 	lw	v0,0(v0)
  4cbee0:	00000000 	nop
  4cbee4:	00821026 	xor	v0,a0,v0
  4cbee8:	afc20014 	sw	v0,20(s8)
  4cbeec:	8fc2003c 	lw	v0,60(s8)
  4cbef0:	00000000 	nop
  4cbef4:	2442000c 	addiu	v0,v0,12
  4cbef8:	90420000 	lbu	v0,0(v0)
  4cbefc:	00000000 	nop
  4cbf00:	38420023 	xori	v0,v0,0x23
  4cbf04:	304200ff 	andi	v0,v0,0xff
  4cbf08:	8f83804c 	lw	v1,-32692(gp)
  4cbf0c:	00000000 	nop
  4cbf10:	24635890 	addiu	v1,v1,22672
  4cbf14:	00621821 	addu	v1,v1,v0
  4cbf18:	8fc2003c 	lw	v0,60(s8)
  4cbf1c:	00000000 	nop
  4cbf20:	24420004 	addiu	v0,v0,4
  4cbf24:	90630000 	lbu	v1,0(v1)
  4cbf28:	90420000 	lbu	v0,0(v0)
  4cbf2c:	00000000 	nop
  4cbf30:	00621026 	xor	v0,v1,v0
  4cbf34:	304200ff 	andi	v0,v0,0xff
  4cbf38:	00021080 	sll	v0,v0,0x2
  4cbf3c:	8f84804c 	lw	a0,-32692(gp)
  4cbf40:	00000000 	nop
  4cbf44:	24845a90 	addiu	a0,a0,23184
  4cbf48:	00822021 	addu	a0,a0,v0
  4cbf4c:	8fc2003c 	lw	v0,60(s8)
  4cbf50:	00000000 	nop
  4cbf54:	2442000d 	addiu	v0,v0,13
  4cbf58:	90420000 	lbu	v0,0(v0)
  4cbf5c:	00000000 	nop
  4cbf60:	3842009d 	xori	v0,v0,0x9d
  4cbf64:	304200ff 	andi	v0,v0,0xff
  4cbf68:	8f83804c 	lw	v1,-32692(gp)
  4cbf6c:	00000000 	nop
  4cbf70:	24635890 	addiu	v1,v1,22672
  4cbf74:	00621821 	addu	v1,v1,v0
  4cbf78:	8fc2003c 	lw	v0,60(s8)
  4cbf7c:	00000000 	nop
  4cbf80:	24420005 	addiu	v0,v0,5
  4cbf84:	90630000 	lbu	v1,0(v1)
  4cbf88:	90420000 	lbu	v0,0(v0)
  4cbf8c:	00000000 	nop
  4cbf90:	00621026 	xor	v0,v1,v0
  4cbf94:	304200ff 	andi	v0,v0,0xff
  4cbf98:	00021080 	sll	v0,v0,0x2
  4cbf9c:	24420400 	addiu	v0,v0,1024
  4cbfa0:	8f81804c 	lw	at,-32692(gp)
  4cbfa4:	00000000 	nop
  4cbfa8:	24215a90 	addiu	at,at,23184
  4cbfac:	00221021 	addu	v0,at,v0
  4cbfb0:	8c830000 	lw	v1,0(a0)
  4cbfb4:	8c420000 	lw	v0,0(v0)
  4cbfb8:	00000000 	nop
  4cbfbc:	00622026 	xor	a0,v1,v0
  4cbfc0:	8fc2003c 	lw	v0,60(s8)
  4cbfc4:	00000000 	nop
  4cbfc8:	2442000e 	addiu	v0,v0,14
  4cbfcc:	90420000 	lbu	v0,0(v0)
  4cbfd0:	00000000 	nop
  4cbfd4:	38420023 	xori	v0,v0,0x23
  4cbfd8:	304200ff 	andi	v0,v0,0xff
  4cbfdc:	8f83804c 	lw	v1,-32692(gp)
  4cbfe0:	00000000 	nop
  4cbfe4:	24635990 	addiu	v1,v1,22928
  4cbfe8:	00621821 	addu	v1,v1,v0
  4cbfec:	8fc2003c 	lw	v0,60(s8)
  4cbff0:	00000000 	nop
  4cbff4:	24420006 	addiu	v0,v0,6
  4cbff8:	90630000 	lbu	v1,0(v1)
  4cbffc:	90420000 	lbu	v0,0(v0)
  4cc000:	00000000 	nop
  4cc004:	00621026 	xor	v0,v1,v0
  4cc008:	304200ff 	andi	v0,v0,0xff
  4cc00c:	00021080 	sll	v0,v0,0x2
  4cc010:	24420800 	addiu	v0,v0,2048
  4cc014:	8f81804c 	lw	at,-32692(gp)
  4cc018:	00000000 	nop
  4cc01c:	24215a90 	addiu	at,at,23184
  4cc020:	00221021 	addu	v0,at,v0
  4cc024:	8c420000 	lw	v0,0(v0)
  4cc028:	00000000 	nop
  4cc02c:	00822026 	xor	a0,a0,v0
  4cc030:	8fc2003c 	lw	v0,60(s8)
  4cc034:	00000000 	nop
  4cc038:	2442000f 	addiu	v0,v0,15
  4cc03c:	90420000 	lbu	v0,0(v0)
  4cc040:	00000000 	nop
  4cc044:	3842009d 	xori	v0,v0,0x9d
  4cc048:	304200ff 	andi	v0,v0,0xff
  4cc04c:	8f83804c 	lw	v1,-32692(gp)
  4cc050:	00000000 	nop
  4cc054:	24635990 	addiu	v1,v1,22928
  4cc058:	00621821 	addu	v1,v1,v0
  4cc05c:	8fc2003c 	lw	v0,60(s8)
  4cc060:	00000000 	nop
  4cc064:	24420007 	addiu	v0,v0,7
  4cc068:	90630000 	lbu	v1,0(v1)
  4cc06c:	90420000 	lbu	v0,0(v0)
  4cc070:	00000000 	nop
  4cc074:	00621026 	xor	v0,v1,v0
  4cc078:	304200ff 	andi	v0,v0,0xff
  4cc07c:	00021080 	sll	v0,v0,0x2
  4cc080:	24420c00 	addiu	v0,v0,3072
  4cc084:	8f81804c 	lw	at,-32692(gp)
  4cc088:	00000000 	nop
  4cc08c:	24215a90 	addiu	at,at,23184
  4cc090:	00221021 	addu	v0,at,v0
  4cc094:	8c420000 	lw	v0,0(v0)
  4cc098:	00000000 	nop
  4cc09c:	00821026 	xor	v0,a0,v0
  4cc0a0:	afc20018 	sw	v0,24(s8)
  4cc0a4:	8fc20018 	lw	v0,24(s8)
  4cc0a8:	00000000 	nop
  4cc0ac:	00021a00 	sll	v1,v0,0x8
  4cc0b0:	00021602 	srl	v0,v0,0x18
  4cc0b4:	00621025 	or	v0,v1,v0
  4cc0b8:	afc20018 	sw	v0,24(s8)
  4cc0bc:	8fc30014 	lw	v1,20(s8)
  4cc0c0:	8fc20018 	lw	v0,24(s8)
  4cc0c4:	00000000 	nop
  4cc0c8:	00621021 	addu	v0,v1,v0
  4cc0cc:	afc20014 	sw	v0,20(s8)
  4cc0d0:	8fc30018 	lw	v1,24(s8)
  4cc0d4:	8fc20014 	lw	v0,20(s8)
  4cc0d8:	00000000 	nop
  4cc0dc:	00621021 	addu	v0,v1,v0
  4cc0e0:	afc20018 	sw	v0,24(s8)
  4cc0e4:	8fc30014 	lw	v1,20(s8)
  4cc0e8:	8fc20038 	lw	v0,56(s8)
  4cc0ec:	00000000 	nop
  4cc0f0:	ac431098 	sw	v1,4248(v0)
  4cc0f4:	8fc20018 	lw	v0,24(s8)
  4cc0f8:	00000000 	nop
  4cc0fc:	00021a40 	sll	v1,v0,0x9
  4cc100:	000215c2 	srl	v0,v0,0x17
  4cc104:	00621825 	or	v1,v1,v0
  4cc108:	8fc20038 	lw	v0,56(s8)
  4cc10c:	00000000 	nop
  4cc110:	ac43109c 	sw	v1,4252(v0)
	}

	return 0;
  4cc114:	00001021 	move	v0,zero
}
  4cc118:	03c0e821 	move	sp,s8
  4cc11c:	8fbe0034 	lw	s8,52(sp)
  4cc120:	27bd0038 	addiu	sp,sp,56
  4cc124:	03e00008 	jr	ra
  4cc128:	00000000 	nop

004cc12c <twofish_encrypt>:
  4cc12c:	3c1c0fb4 	lui	gp,0xfb4
  4cc130:	279c0844 	addiu	gp,gp,2116
  4cc134:	0399e021 	addu	gp,gp,t9
  4cc138:	27bdffd8 	addiu	sp,sp,-40
  4cc13c:	afbc0000 	sw	gp,0(sp)
  4cc140:	afbe0024 	sw	s8,36(sp)
  4cc144:	afbc0020 	sw	gp,32(sp)
  4cc148:	03a0f021 	move	s8,sp
  4cc14c:	afc40028 	sw	a0,40(s8)
  4cc150:	afc5002c 	sw	a1,44(s8)
  4cc154:	afc60030 	sw	a2,48(s8)

/* Macros to compute the g() function in the encryption and decryption
 * rounds.  G1 is the straight g() function; G2 includes the 8-bit
 * rotation for the high 32-bit word. */

#define G1(a) \
     (ctx->s[0][(a) & 0xFF]) ^ (ctx->s[1][((a) >> 8) & 0xFF]) \
   ^ (ctx->s[2][((a) >> 16) & 0xFF]) ^ (ctx->s[3][(a) >> 24])

#define G2(b) \
     (ctx->s[1][(b) & 0xFF]) ^ (ctx->s[2][((b) >> 8) & 0xFF]) \
   ^ (ctx->s[3][((b) >> 16) & 0xFF]) ^ (ctx->s[0][(b) >> 24])

/* Encryption and decryption Feistel rounds.  Each one calls the two g()
 * macros, does the PHT, and performs the XOR and the appropriate bit
 * rotations.  The parameters are the round number (used to select subkeys),
 * and the four 32-bit chunks of the text. */

#define ENCROUND(n, a, b, c, d) \
   x = G1 (a); y = G2 (b); \
   x += y; y += x + ctx->k[2 * (n) + 1]; \
   (c) ^= x + ctx->k[2 * (n)]; \
   (c) = ((c) >> 1) + ((c) << 31); \
   (d) = (((d) << 1)+((d) >> 31)) ^ y

#define DECROUND(n, a, b, c, d) \
   x = G1 (a); y = G2 (b); \
   x += y; y += x; \
   (d) ^= y + ctx->k[2 * (n) + 1]; \
   (d) = ((d) >> 1) + ((d) << 31); \
   (c) = (((c) << 1)+((c) >> 31)); \
   (c) ^= (x + ctx->k[2 * (n)])

/* Encryption and decryption cycles; each one is simply two Feistel rounds
 * with the 32-bit chunks re-ordered to simulate the "swap" */

#define ENCCYCLE(n) \
   ENCROUND (2 * (n), a, b, c, d); \
   ENCROUND (2 * (n) + 1, c, d, a, b)

#define DECCYCLE(n) \
   DECROUND (2 * (n) + 1, c, d, a, b); \
   DECROUND (2 * (n), a, b, c, d)

/* Macros to convert the input and output bytes into 32-bit words,
 * and simultaneously perform the whitening step.  INPACK packs word
 * number n into the variable named by x, using whitening subkey number m.
 * OUTUNPACK unpacks word number n from the variable named by x, using
 * whitening subkey number m. */

#define INPACK(n, x, m) \
   x = in[4 * (n)] ^ (in[4 * (n) + 1] << 8) \
     ^ (in[4 * (n) + 2] << 16) ^ (in[4 * (n) + 3] << 24) ^ ctx->w[m]

#define OUTUNPACK(n, x, m) \
   x ^= ctx->w[m]; \
   out[4 * (n)] = x; out[4 * (n) + 1] = x >> 8; \
   out[4 * (n) + 2] = x >> 16; out[4 * (n) + 3] = x >> 24

/* Encrypt one block.  in and out may be the same. */

int twofish_encrypt (TWOFISH_context *ctx,
			    const u8 *in, u8 *out)
{
	/* The four 32-bit chunks of the text. */
	u32 a, b, c, d;
	
	/* Temporaries used by the round function. */
	u32 x, y;
	
	/* Input whitening and packing. */
	INPACK (0, a, 0);
  4cc158:	8fc2002c 	lw	v0,44(s8)
  4cc15c:	00000000 	nop
  4cc160:	90430000 	lbu	v1,0(v0)
  4cc164:	8fc2002c 	lw	v0,44(s8)
  4cc168:	00000000 	nop
  4cc16c:	24420001 	addiu	v0,v0,1
  4cc170:	90420000 	lbu	v0,0(v0)
  4cc174:	00000000 	nop
  4cc178:	00021200 	sll	v0,v0,0x8
  4cc17c:	00621826 	xor	v1,v1,v0
  4cc180:	8fc2002c 	lw	v0,44(s8)
  4cc184:	00000000 	nop
  4cc188:	24420002 	addiu	v0,v0,2
  4cc18c:	90420000 	lbu	v0,0(v0)
  4cc190:	00000000 	nop
  4cc194:	00021400 	sll	v0,v0,0x10
  4cc198:	00621826 	xor	v1,v1,v0
  4cc19c:	8fc2002c 	lw	v0,44(s8)
  4cc1a0:	00000000 	nop
  4cc1a4:	24420003 	addiu	v0,v0,3
  4cc1a8:	90420000 	lbu	v0,0(v0)
  4cc1ac:	00000000 	nop
  4cc1b0:	00021600 	sll	v0,v0,0x18
  4cc1b4:	00621826 	xor	v1,v1,v0
  4cc1b8:	8fc20028 	lw	v0,40(s8)
  4cc1bc:	00000000 	nop
  4cc1c0:	8c421000 	lw	v0,4096(v0)
  4cc1c4:	00000000 	nop
  4cc1c8:	00621026 	xor	v0,v1,v0
  4cc1cc:	afc20008 	sw	v0,8(s8)
	INPACK (1, b, 1);
  4cc1d0:	8fc2002c 	lw	v0,44(s8)
  4cc1d4:	00000000 	nop
  4cc1d8:	24420004 	addiu	v0,v0,4
  4cc1dc:	90430000 	lbu	v1,0(v0)
  4cc1e0:	8fc2002c 	lw	v0,44(s8)
  4cc1e4:	00000000 	nop
  4cc1e8:	24420005 	addiu	v0,v0,5
  4cc1ec:	90420000 	lbu	v0,0(v0)
  4cc1f0:	00000000 	nop
  4cc1f4:	00021200 	sll	v0,v0,0x8
  4cc1f8:	00621826 	xor	v1,v1,v0
  4cc1fc:	8fc2002c 	lw	v0,44(s8)
  4cc200:	00000000 	nop
  4cc204:	24420006 	addiu	v0,v0,6
  4cc208:	90420000 	lbu	v0,0(v0)
  4cc20c:	00000000 	nop
  4cc210:	00021400 	sll	v0,v0,0x10
  4cc214:	00621826 	xor	v1,v1,v0
  4cc218:	8fc2002c 	lw	v0,44(s8)
  4cc21c:	00000000 	nop
  4cc220:	24420007 	addiu	v0,v0,7
  4cc224:	90420000 	lbu	v0,0(v0)
  4cc228:	00000000 	nop
  4cc22c:	00021600 	sll	v0,v0,0x18
  4cc230:	00621826 	xor	v1,v1,v0
  4cc234:	8fc20028 	lw	v0,40(s8)
  4cc238:	00000000 	nop
  4cc23c:	8c421004 	lw	v0,4100(v0)
  4cc240:	00000000 	nop
  4cc244:	00621026 	xor	v0,v1,v0
  4cc248:	afc2000c 	sw	v0,12(s8)
	INPACK (2, c, 2);
  4cc24c:	8fc2002c 	lw	v0,44(s8)
  4cc250:	00000000 	nop
  4cc254:	24420008 	addiu	v0,v0,8
  4cc258:	90430000 	lbu	v1,0(v0)
  4cc25c:	8fc2002c 	lw	v0,44(s8)
  4cc260:	00000000 	nop
  4cc264:	24420009 	addiu	v0,v0,9
  4cc268:	90420000 	lbu	v0,0(v0)
  4cc26c:	00000000 	nop
  4cc270:	00021200 	sll	v0,v0,0x8
  4cc274:	00621826 	xor	v1,v1,v0
  4cc278:	8fc2002c 	lw	v0,44(s8)
  4cc27c:	00000000 	nop
  4cc280:	2442000a 	addiu	v0,v0,10
  4cc284:	90420000 	lbu	v0,0(v0)
  4cc288:	00000000 	nop
  4cc28c:	00021400 	sll	v0,v0,0x10
  4cc290:	00621826 	xor	v1,v1,v0
  4cc294:	8fc2002c 	lw	v0,44(s8)
  4cc298:	00000000 	nop
  4cc29c:	2442000b 	addiu	v0,v0,11
  4cc2a0:	90420000 	lbu	v0,0(v0)
  4cc2a4:	00000000 	nop
  4cc2a8:	00021600 	sll	v0,v0,0x18
  4cc2ac:	00621826 	xor	v1,v1,v0
  4cc2b0:	8fc20028 	lw	v0,40(s8)
  4cc2b4:	00000000 	nop
  4cc2b8:	8c421008 	lw	v0,4104(v0)
  4cc2bc:	00000000 	nop
  4cc2c0:	00621026 	xor	v0,v1,v0
  4cc2c4:	afc20010 	sw	v0,16(s8)
	INPACK (3, d, 3);
  4cc2c8:	8fc2002c 	lw	v0,44(s8)
  4cc2cc:	00000000 	nop
  4cc2d0:	2442000c 	addiu	v0,v0,12
  4cc2d4:	90430000 	lbu	v1,0(v0)
  4cc2d8:	8fc2002c 	lw	v0,44(s8)
  4cc2dc:	00000000 	nop
  4cc2e0:	2442000d 	addiu	v0,v0,13
  4cc2e4:	90420000 	lbu	v0,0(v0)
  4cc2e8:	00000000 	nop
  4cc2ec:	00021200 	sll	v0,v0,0x8
  4cc2f0:	00621826 	xor	v1,v1,v0
  4cc2f4:	8fc2002c 	lw	v0,44(s8)
  4cc2f8:	00000000 	nop
  4cc2fc:	2442000e 	addiu	v0,v0,14
  4cc300:	90420000 	lbu	v0,0(v0)
  4cc304:	00000000 	nop
  4cc308:	00021400 	sll	v0,v0,0x10
  4cc30c:	00621826 	xor	v1,v1,v0
  4cc310:	8fc2002c 	lw	v0,44(s8)
  4cc314:	00000000 	nop
  4cc318:	2442000f 	addiu	v0,v0,15
  4cc31c:	90420000 	lbu	v0,0(v0)
  4cc320:	00000000 	nop
  4cc324:	00021600 	sll	v0,v0,0x18
  4cc328:	00621826 	xor	v1,v1,v0
  4cc32c:	8fc20028 	lw	v0,40(s8)
  4cc330:	00000000 	nop
  4cc334:	8c42100c 	lw	v0,4108(v0)
  4cc338:	00000000 	nop
  4cc33c:	00621026 	xor	v0,v1,v0
  4cc340:	afc20014 	sw	v0,20(s8)
	
	/* Encryption Feistel cycles. */
	ENCCYCLE (0);
  4cc344:	8fc20008 	lw	v0,8(s8)
  4cc348:	00000000 	nop
  4cc34c:	304200ff 	andi	v0,v0,0xff
  4cc350:	00021880 	sll	v1,v0,0x2
  4cc354:	8fc20028 	lw	v0,40(s8)
  4cc358:	00000000 	nop
  4cc35c:	00432021 	addu	a0,v0,v1
  4cc360:	8fc20008 	lw	v0,8(s8)
  4cc364:	00000000 	nop
  4cc368:	00021202 	srl	v0,v0,0x8
  4cc36c:	304200ff 	andi	v0,v0,0xff
  4cc370:	00021080 	sll	v0,v0,0x2
  4cc374:	24430400 	addiu	v1,v0,1024
  4cc378:	8fc20028 	lw	v0,40(s8)
  4cc37c:	00000000 	nop
  4cc380:	00431021 	addu	v0,v0,v1
  4cc384:	8c830000 	lw	v1,0(a0)
  4cc388:	8c420000 	lw	v0,0(v0)
  4cc38c:	00000000 	nop
  4cc390:	00622026 	xor	a0,v1,v0
  4cc394:	8fc20008 	lw	v0,8(s8)
  4cc398:	00000000 	nop
  4cc39c:	00021402 	srl	v0,v0,0x10
  4cc3a0:	304200ff 	andi	v0,v0,0xff
  4cc3a4:	00021080 	sll	v0,v0,0x2
  4cc3a8:	24430800 	addiu	v1,v0,2048
  4cc3ac:	8fc20028 	lw	v0,40(s8)
  4cc3b0:	00000000 	nop
  4cc3b4:	00431021 	addu	v0,v0,v1
  4cc3b8:	8c420000 	lw	v0,0(v0)
  4cc3bc:	00000000 	nop
  4cc3c0:	00822026 	xor	a0,a0,v0
  4cc3c4:	8fc20008 	lw	v0,8(s8)
  4cc3c8:	00000000 	nop
  4cc3cc:	00021602 	srl	v0,v0,0x18
  4cc3d0:	00021080 	sll	v0,v0,0x2
  4cc3d4:	24430c00 	addiu	v1,v0,3072
  4cc3d8:	8fc20028 	lw	v0,40(s8)
  4cc3dc:	00000000 	nop
  4cc3e0:	00431021 	addu	v0,v0,v1
  4cc3e4:	8c420000 	lw	v0,0(v0)
  4cc3e8:	00000000 	nop
  4cc3ec:	00821026 	xor	v0,a0,v0
  4cc3f0:	afc20018 	sw	v0,24(s8)
  4cc3f4:	8fc2000c 	lw	v0,12(s8)
  4cc3f8:	00000000 	nop
  4cc3fc:	304200ff 	andi	v0,v0,0xff
  4cc400:	00021080 	sll	v0,v0,0x2
  4cc404:	24430400 	addiu	v1,v0,1024
  4cc408:	8fc20028 	lw	v0,40(s8)
  4cc40c:	00000000 	nop
  4cc410:	00432021 	addu	a0,v0,v1
  4cc414:	8fc2000c 	lw	v0,12(s8)
  4cc418:	00000000 	nop
  4cc41c:	00021202 	srl	v0,v0,0x8
  4cc420:	304200ff 	andi	v0,v0,0xff
  4cc424:	00021080 	sll	v0,v0,0x2
  4cc428:	24430800 	addiu	v1,v0,2048
  4cc42c:	8fc20028 	lw	v0,40(s8)
  4cc430:	00000000 	nop
  4cc434:	00431021 	addu	v0,v0,v1
  4cc438:	8c830000 	lw	v1,0(a0)
  4cc43c:	8c420000 	lw	v0,0(v0)
  4cc440:	00000000 	nop
  4cc444:	00622026 	xor	a0,v1,v0
  4cc448:	8fc2000c 	lw	v0,12(s8)
  4cc44c:	00000000 	nop
  4cc450:	00021402 	srl	v0,v0,0x10
  4cc454:	304200ff 	andi	v0,v0,0xff
  4cc458:	00021080 	sll	v0,v0,0x2
  4cc45c:	24430c00 	addiu	v1,v0,3072
  4cc460:	8fc20028 	lw	v0,40(s8)
  4cc464:	00000000 	nop
  4cc468:	00431021 	addu	v0,v0,v1
  4cc46c:	8c420000 	lw	v0,0(v0)
  4cc470:	00000000 	nop
  4cc474:	00822026 	xor	a0,a0,v0
  4cc478:	8fc2000c 	lw	v0,12(s8)
  4cc47c:	00000000 	nop
  4cc480:	00021602 	srl	v0,v0,0x18
  4cc484:	00021880 	sll	v1,v0,0x2
  4cc488:	8fc20028 	lw	v0,40(s8)
  4cc48c:	00000000 	nop
  4cc490:	00431021 	addu	v0,v0,v1
  4cc494:	8c420000 	lw	v0,0(v0)
  4cc498:	00000000 	nop
  4cc49c:	00821026 	xor	v0,a0,v0
  4cc4a0:	afc2001c 	sw	v0,28(s8)
  4cc4a4:	8fc30018 	lw	v1,24(s8)
  4cc4a8:	8fc2001c 	lw	v0,28(s8)
  4cc4ac:	00000000 	nop
  4cc4b0:	00621021 	addu	v0,v1,v0
  4cc4b4:	afc20018 	sw	v0,24(s8)
  4cc4b8:	8fc20028 	lw	v0,40(s8)
  4cc4bc:	00000000 	nop
  4cc4c0:	8c431024 	lw	v1,4132(v0)
  4cc4c4:	8fc20018 	lw	v0,24(s8)
  4cc4c8:	00000000 	nop
  4cc4cc:	00431821 	addu	v1,v0,v1
  4cc4d0:	8fc2001c 	lw	v0,28(s8)
  4cc4d4:	00000000 	nop
  4cc4d8:	00431021 	addu	v0,v0,v1
  4cc4dc:	afc2001c 	sw	v0,28(s8)
  4cc4e0:	8fc20028 	lw	v0,40(s8)
  4cc4e4:	00000000 	nop
  4cc4e8:	8c431020 	lw	v1,4128(v0)
  4cc4ec:	8fc20018 	lw	v0,24(s8)
  4cc4f0:	00000000 	nop
  4cc4f4:	00431821 	addu	v1,v0,v1
  4cc4f8:	8fc20010 	lw	v0,16(s8)
  4cc4fc:	00000000 	nop
  4cc500:	00431026 	xor	v0,v0,v1
  4cc504:	afc20010 	sw	v0,16(s8)
  4cc508:	8fc20010 	lw	v0,16(s8)
  4cc50c:	00000000 	nop
  4cc510:	00021fc0 	sll	v1,v0,0x1f
  4cc514:	00021042 	srl	v0,v0,0x1
  4cc518:	00621025 	or	v0,v1,v0
  4cc51c:	afc20010 	sw	v0,16(s8)
  4cc520:	8fc20014 	lw	v0,20(s8)
  4cc524:	00000000 	nop
  4cc528:	00021840 	sll	v1,v0,0x1
  4cc52c:	000217c2 	srl	v0,v0,0x1f
  4cc530:	00621825 	or	v1,v1,v0
  4cc534:	8fc2001c 	lw	v0,28(s8)
  4cc538:	00000000 	nop
  4cc53c:	00621026 	xor	v0,v1,v0
  4cc540:	afc20014 	sw	v0,20(s8)
  4cc544:	8fc20010 	lw	v0,16(s8)
  4cc548:	00000000 	nop
  4cc54c:	304200ff 	andi	v0,v0,0xff
  4cc550:	00021880 	sll	v1,v0,0x2
  4cc554:	8fc20028 	lw	v0,40(s8)
  4cc558:	00000000 	nop
  4cc55c:	00432021 	addu	a0,v0,v1
  4cc560:	8fc20010 	lw	v0,16(s8)
  4cc564:	00000000 	nop
  4cc568:	00021202 	srl	v0,v0,0x8
  4cc56c:	304200ff 	andi	v0,v0,0xff
  4cc570:	00021080 	sll	v0,v0,0x2
  4cc574:	24430400 	addiu	v1,v0,1024
  4cc578:	8fc20028 	lw	v0,40(s8)
  4cc57c:	00000000 	nop
  4cc580:	00431021 	addu	v0,v0,v1
  4cc584:	8c830000 	lw	v1,0(a0)
  4cc588:	8c420000 	lw	v0,0(v0)
  4cc58c:	00000000 	nop
  4cc590:	00622026 	xor	a0,v1,v0
  4cc594:	8fc20010 	lw	v0,16(s8)
  4cc598:	00000000 	nop
  4cc59c:	00021402 	srl	v0,v0,0x10
  4cc5a0:	304200ff 	andi	v0,v0,0xff
  4cc5a4:	00021080 	sll	v0,v0,0x2
  4cc5a8:	24430800 	addiu	v1,v0,2048
  4cc5ac:	8fc20028 	lw	v0,40(s8)
  4cc5b0:	00000000 	nop
  4cc5b4:	00431021 	addu	v0,v0,v1
  4cc5b8:	8c420000 	lw	v0,0(v0)
  4cc5bc:	00000000 	nop
  4cc5c0:	00822026 	xor	a0,a0,v0
  4cc5c4:	8fc20010 	lw	v0,16(s8)
  4cc5c8:	00000000 	nop
  4cc5cc:	00021602 	srl	v0,v0,0x18
  4cc5d0:	00021080 	sll	v0,v0,0x2
  4cc5d4:	24430c00 	addiu	v1,v0,3072
  4cc5d8:	8fc20028 	lw	v0,40(s8)
  4cc5dc:	00000000 	nop
  4cc5e0:	00431021 	addu	v0,v0,v1
  4cc5e4:	8c420000 	lw	v0,0(v0)
  4cc5e8:	00000000 	nop
  4cc5ec:	00821026 	xor	v0,a0,v0
  4cc5f0:	afc20018 	sw	v0,24(s8)
  4cc5f4:	8fc20014 	lw	v0,20(s8)
  4cc5f8:	00000000 	nop
  4cc5fc:	304200ff 	andi	v0,v0,0xff
  4cc600:	00021080 	sll	v0,v0,0x2
  4cc604:	24430400 	addiu	v1,v0,1024
  4cc608:	8fc20028 	lw	v0,40(s8)
  4cc60c:	00000000 	nop
  4cc610:	00432021 	addu	a0,v0,v1
  4cc614:	8fc20014 	lw	v0,20(s8)
  4cc618:	00000000 	nop
  4cc61c:	00021202 	srl	v0,v0,0x8
  4cc620:	304200ff 	andi	v0,v0,0xff
  4cc624:	00021080 	sll	v0,v0,0x2
  4cc628:	24430800 	addiu	v1,v0,2048
  4cc62c:	8fc20028 	lw	v0,40(s8)
  4cc630:	00000000 	nop
  4cc634:	00431021 	addu	v0,v0,v1
  4cc638:	8c830000 	lw	v1,0(a0)
  4cc63c:	8c420000 	lw	v0,0(v0)
  4cc640:	00000000 	nop
  4cc644:	00622026 	xor	a0,v1,v0
  4cc648:	8fc20014 	lw	v0,20(s8)
  4cc64c:	00000000 	nop
  4cc650:	00021402 	srl	v0,v0,0x10
  4cc654:	304200ff 	andi	v0,v0,0xff
  4cc658:	00021080 	sll	v0,v0,0x2
  4cc65c:	24430c00 	addiu	v1,v0,3072
  4cc660:	8fc20028 	lw	v0,40(s8)
  4cc664:	00000000 	nop
  4cc668:	00431021 	addu	v0,v0,v1
  4cc66c:	8c420000 	lw	v0,0(v0)
  4cc670:	00000000 	nop
  4cc674:	00822026 	xor	a0,a0,v0
  4cc678:	8fc20014 	lw	v0,20(s8)
  4cc67c:	00000000 	nop
  4cc680:	00021602 	srl	v0,v0,0x18
  4cc684:	00021880 	sll	v1,v0,0x2
  4cc688:	8fc20028 	lw	v0,40(s8)
  4cc68c:	00000000 	nop
  4cc690:	00431021 	addu	v0,v0,v1
  4cc694:	8c420000 	lw	v0,0(v0)
  4cc698:	00000000 	nop
  4cc69c:	00821026 	xor	v0,a0,v0
  4cc6a0:	afc2001c 	sw	v0,28(s8)
  4cc6a4:	8fc30018 	lw	v1,24(s8)
  4cc6a8:	8fc2001c 	lw	v0,28(s8)
  4cc6ac:	00000000 	nop
  4cc6b0:	00621021 	addu	v0,v1,v0
  4cc6b4:	afc20018 	sw	v0,24(s8)
  4cc6b8:	8fc20028 	lw	v0,40(s8)
  4cc6bc:	00000000 	nop
  4cc6c0:	8c43102c 	lw	v1,4140(v0)
  4cc6c4:	8fc20018 	lw	v0,24(s8)
  4cc6c8:	00000000 	nop
  4cc6cc:	00431821 	addu	v1,v0,v1
  4cc6d0:	8fc2001c 	lw	v0,28(s8)
  4cc6d4:	00000000 	nop
  4cc6d8:	00431021 	addu	v0,v0,v1
  4cc6dc:	afc2001c 	sw	v0,28(s8)
  4cc6e0:	8fc20028 	lw	v0,40(s8)
  4cc6e4:	00000000 	nop
  4cc6e8:	8c431028 	lw	v1,4136(v0)
  4cc6ec:	8fc20018 	lw	v0,24(s8)
  4cc6f0:	00000000 	nop
  4cc6f4:	00431821 	addu	v1,v0,v1
  4cc6f8:	8fc20008 	lw	v0,8(s8)
  4cc6fc:	00000000 	nop
  4cc700:	00431026 	xor	v0,v0,v1
  4cc704:	afc20008 	sw	v0,8(s8)
  4cc708:	8fc20008 	lw	v0,8(s8)
  4cc70c:	00000000 	nop
  4cc710:	00021fc0 	sll	v1,v0,0x1f
  4cc714:	00021042 	srl	v0,v0,0x1
  4cc718:	00621025 	or	v0,v1,v0
  4cc71c:	afc20008 	sw	v0,8(s8)
  4cc720:	8fc2000c 	lw	v0,12(s8)
  4cc724:	00000000 	nop
  4cc728:	00021840 	sll	v1,v0,0x1
  4cc72c:	000217c2 	srl	v0,v0,0x1f
  4cc730:	00621825 	or	v1,v1,v0
  4cc734:	8fc2001c 	lw	v0,28(s8)
  4cc738:	00000000 	nop
  4cc73c:	00621026 	xor	v0,v1,v0
  4cc740:	afc2000c 	sw	v0,12(s8)
	ENCCYCLE (1);
  4cc744:	8fc20008 	lw	v0,8(s8)
  4cc748:	00000000 	nop
  4cc74c:	304200ff 	andi	v0,v0,0xff
  4cc750:	00021880 	sll	v1,v0,0x2
  4cc754:	8fc20028 	lw	v0,40(s8)
  4cc758:	00000000 	nop
  4cc75c:	00432021 	addu	a0,v0,v1
  4cc760:	8fc20008 	lw	v0,8(s8)
  4cc764:	00000000 	nop
  4cc768:	00021202 	srl	v0,v0,0x8
  4cc76c:	304200ff 	andi	v0,v0,0xff
  4cc770:	00021080 	sll	v0,v0,0x2
  4cc774:	24430400 	addiu	v1,v0,1024
  4cc778:	8fc20028 	lw	v0,40(s8)
  4cc77c:	00000000 	nop
  4cc780:	00431021 	addu	v0,v0,v1
  4cc784:	8c830000 	lw	v1,0(a0)
  4cc788:	8c420000 	lw	v0,0(v0)
  4cc78c:	00000000 	nop
  4cc790:	00622026 	xor	a0,v1,v0
  4cc794:	8fc20008 	lw	v0,8(s8)
  4cc798:	00000000 	nop
  4cc79c:	00021402 	srl	v0,v0,0x10
  4cc7a0:	304200ff 	andi	v0,v0,0xff
  4cc7a4:	00021080 	sll	v0,v0,0x2
  4cc7a8:	24430800 	addiu	v1,v0,2048
  4cc7ac:	8fc20028 	lw	v0,40(s8)
  4cc7b0:	00000000 	nop
  4cc7b4:	00431021 	addu	v0,v0,v1
  4cc7b8:	8c420000 	lw	v0,0(v0)
  4cc7bc:	00000000 	nop
  4cc7c0:	00822026 	xor	a0,a0,v0
  4cc7c4:	8fc20008 	lw	v0,8(s8)
  4cc7c8:	00000000 	nop
  4cc7cc:	00021602 	srl	v0,v0,0x18
  4cc7d0:	00021080 	sll	v0,v0,0x2
  4cc7d4:	24430c00 	addiu	v1,v0,3072
  4cc7d8:	8fc20028 	lw	v0,40(s8)
  4cc7dc:	00000000 	nop
  4cc7e0:	00431021 	addu	v0,v0,v1
  4cc7e4:	8c420000 	lw	v0,0(v0)
  4cc7e8:	00000000 	nop
  4cc7ec:	00821026 	xor	v0,a0,v0
  4cc7f0:	afc20018 	sw	v0,24(s8)
  4cc7f4:	8fc2000c 	lw	v0,12(s8)
  4cc7f8:	00000000 	nop
  4cc7fc:	304200ff 	andi	v0,v0,0xff
  4cc800:	00021080 	sll	v0,v0,0x2
  4cc804:	24430400 	addiu	v1,v0,1024
  4cc808:	8fc20028 	lw	v0,40(s8)
  4cc80c:	00000000 	nop
  4cc810:	00432021 	addu	a0,v0,v1
  4cc814:	8fc2000c 	lw	v0,12(s8)
  4cc818:	00000000 	nop
  4cc81c:	00021202 	srl	v0,v0,0x8
  4cc820:	304200ff 	andi	v0,v0,0xff
  4cc824:	00021080 	sll	v0,v0,0x2
  4cc828:	24430800 	addiu	v1,v0,2048
  4cc82c:	8fc20028 	lw	v0,40(s8)
  4cc830:	00000000 	nop
  4cc834:	00431021 	addu	v0,v0,v1
  4cc838:	8c830000 	lw	v1,0(a0)
  4cc83c:	8c420000 	lw	v0,0(v0)
  4cc840:	00000000 	nop
  4cc844:	00622026 	xor	a0,v1,v0
  4cc848:	8fc2000c 	lw	v0,12(s8)
  4cc84c:	00000000 	nop
  4cc850:	00021402 	srl	v0,v0,0x10
  4cc854:	304200ff 	andi	v0,v0,0xff
  4cc858:	00021080 	sll	v0,v0,0x2
  4cc85c:	24430c00 	addiu	v1,v0,3072
  4cc860:	8fc20028 	lw	v0,40(s8)
  4cc864:	00000000 	nop
  4cc868:	00431021 	addu	v0,v0,v1
  4cc86c:	8c420000 	lw	v0,0(v0)
  4cc870:	00000000 	nop
  4cc874:	00822026 	xor	a0,a0,v0
  4cc878:	8fc2000c 	lw	v0,12(s8)
  4cc87c:	00000000 	nop
  4cc880:	00021602 	srl	v0,v0,0x18
  4cc884:	00021880 	sll	v1,v0,0x2
  4cc888:	8fc20028 	lw	v0,40(s8)
  4cc88c:	00000000 	nop
  4cc890:	00431021 	addu	v0,v0,v1
  4cc894:	8c420000 	lw	v0,0(v0)
  4cc898:	00000000 	nop
  4cc89c:	00821026 	xor	v0,a0,v0
  4cc8a0:	afc2001c 	sw	v0,28(s8)
  4cc8a4:	8fc30018 	lw	v1,24(s8)
  4cc8a8:	8fc2001c 	lw	v0,28(s8)
  4cc8ac:	00000000 	nop
  4cc8b0:	00621021 	addu	v0,v1,v0
  4cc8b4:	afc20018 	sw	v0,24(s8)
  4cc8b8:	8fc20028 	lw	v0,40(s8)
  4cc8bc:	00000000 	nop
  4cc8c0:	8c431034 	lw	v1,4148(v0)
  4cc8c4:	8fc20018 	lw	v0,24(s8)
  4cc8c8:	00000000 	nop
  4cc8cc:	00431821 	addu	v1,v0,v1
  4cc8d0:	8fc2001c 	lw	v0,28(s8)
  4cc8d4:	00000000 	nop
  4cc8d8:	00431021 	addu	v0,v0,v1
  4cc8dc:	afc2001c 	sw	v0,28(s8)
  4cc8e0:	8fc20028 	lw	v0,40(s8)
  4cc8e4:	00000000 	nop
  4cc8e8:	8c431030 	lw	v1,4144(v0)
  4cc8ec:	8fc20018 	lw	v0,24(s8)
  4cc8f0:	00000000 	nop
  4cc8f4:	00431821 	addu	v1,v0,v1
  4cc8f8:	8fc20010 	lw	v0,16(s8)
  4cc8fc:	00000000 	nop
  4cc900:	00431026 	xor	v0,v0,v1
  4cc904:	afc20010 	sw	v0,16(s8)
  4cc908:	8fc20010 	lw	v0,16(s8)
  4cc90c:	00000000 	nop
  4cc910:	00021fc0 	sll	v1,v0,0x1f
  4cc914:	00021042 	srl	v0,v0,0x1
  4cc918:	00621025 	or	v0,v1,v0
  4cc91c:	afc20010 	sw	v0,16(s8)
  4cc920:	8fc20014 	lw	v0,20(s8)
  4cc924:	00000000 	nop
  4cc928:	00021840 	sll	v1,v0,0x1
  4cc92c:	000217c2 	srl	v0,v0,0x1f
  4cc930:	00621825 	or	v1,v1,v0
  4cc934:	8fc2001c 	lw	v0,28(s8)
  4cc938:	00000000 	nop
  4cc93c:	00621026 	xor	v0,v1,v0
  4cc940:	afc20014 	sw	v0,20(s8)
  4cc944:	8fc20010 	lw	v0,16(s8)
  4cc948:	00000000 	nop
  4cc94c:	304200ff 	andi	v0,v0,0xff
  4cc950:	00021880 	sll	v1,v0,0x2
  4cc954:	8fc20028 	lw	v0,40(s8)
  4cc958:	00000000 	nop
  4cc95c:	00432021 	addu	a0,v0,v1
  4cc960:	8fc20010 	lw	v0,16(s8)
  4cc964:	00000000 	nop
  4cc968:	00021202 	srl	v0,v0,0x8
  4cc96c:	304200ff 	andi	v0,v0,0xff
  4cc970:	00021080 	sll	v0,v0,0x2
  4cc974:	24430400 	addiu	v1,v0,1024
  4cc978:	8fc20028 	lw	v0,40(s8)
  4cc97c:	00000000 	nop
  4cc980:	00431021 	addu	v0,v0,v1
  4cc984:	8c830000 	lw	v1,0(a0)
  4cc988:	8c420000 	lw	v0,0(v0)
  4cc98c:	00000000 	nop
  4cc990:	00622026 	xor	a0,v1,v0
  4cc994:	8fc20010 	lw	v0,16(s8)
  4cc998:	00000000 	nop
  4cc99c:	00021402 	srl	v0,v0,0x10
  4cc9a0:	304200ff 	andi	v0,v0,0xff
  4cc9a4:	00021080 	sll	v0,v0,0x2
  4cc9a8:	24430800 	addiu	v1,v0,2048
  4cc9ac:	8fc20028 	lw	v0,40(s8)
  4cc9b0:	00000000 	nop
  4cc9b4:	00431021 	addu	v0,v0,v1
  4cc9b8:	8c420000 	lw	v0,0(v0)
  4cc9bc:	00000000 	nop
  4cc9c0:	00822026 	xor	a0,a0,v0
  4cc9c4:	8fc20010 	lw	v0,16(s8)
  4cc9c8:	00000000 	nop
  4cc9cc:	00021602 	srl	v0,v0,0x18
  4cc9d0:	00021080 	sll	v0,v0,0x2
  4cc9d4:	24430c00 	addiu	v1,v0,3072
  4cc9d8:	8fc20028 	lw	v0,40(s8)
  4cc9dc:	00000000 	nop
  4cc9e0:	00431021 	addu	v0,v0,v1
  4cc9e4:	8c420000 	lw	v0,0(v0)
  4cc9e8:	00000000 	nop
  4cc9ec:	00821026 	xor	v0,a0,v0
  4cc9f0:	afc20018 	sw	v0,24(s8)
  4cc9f4:	8fc20014 	lw	v0,20(s8)
  4cc9f8:	00000000 	nop
  4cc9fc:	304200ff 	andi	v0,v0,0xff
  4cca00:	00021080 	sll	v0,v0,0x2
  4cca04:	24430400 	addiu	v1,v0,1024
  4cca08:	8fc20028 	lw	v0,40(s8)
  4cca0c:	00000000 	nop
  4cca10:	00432021 	addu	a0,v0,v1
  4cca14:	8fc20014 	lw	v0,20(s8)
  4cca18:	00000000 	nop
  4cca1c:	00021202 	srl	v0,v0,0x8
  4cca20:	304200ff 	andi	v0,v0,0xff
  4cca24:	00021080 	sll	v0,v0,0x2
  4cca28:	24430800 	addiu	v1,v0,2048
  4cca2c:	8fc20028 	lw	v0,40(s8)
  4cca30:	00000000 	nop
  4cca34:	00431021 	addu	v0,v0,v1
  4cca38:	8c830000 	lw	v1,0(a0)
  4cca3c:	8c420000 	lw	v0,0(v0)
  4cca40:	00000000 	nop
  4cca44:	00622026 	xor	a0,v1,v0
  4cca48:	8fc20014 	lw	v0,20(s8)
  4cca4c:	00000000 	nop
  4cca50:	00021402 	srl	v0,v0,0x10
  4cca54:	304200ff 	andi	v0,v0,0xff
  4cca58:	00021080 	sll	v0,v0,0x2
  4cca5c:	24430c00 	addiu	v1,v0,3072
  4cca60:	8fc20028 	lw	v0,40(s8)
  4cca64:	00000000 	nop
  4cca68:	00431021 	addu	v0,v0,v1
  4cca6c:	8c420000 	lw	v0,0(v0)
  4cca70:	00000000 	nop
  4cca74:	00822026 	xor	a0,a0,v0
  4cca78:	8fc20014 	lw	v0,20(s8)
  4cca7c:	00000000 	nop
  4cca80:	00021602 	srl	v0,v0,0x18
  4cca84:	00021880 	sll	v1,v0,0x2
  4cca88:	8fc20028 	lw	v0,40(s8)
  4cca8c:	00000000 	nop
  4cca90:	00431021 	addu	v0,v0,v1
  4cca94:	8c420000 	lw	v0,0(v0)
  4cca98:	00000000 	nop
  4cca9c:	00821026 	xor	v0,a0,v0
  4ccaa0:	afc2001c 	sw	v0,28(s8)
  4ccaa4:	8fc30018 	lw	v1,24(s8)
  4ccaa8:	8fc2001c 	lw	v0,28(s8)
  4ccaac:	00000000 	nop
  4ccab0:	00621021 	addu	v0,v1,v0
  4ccab4:	afc20018 	sw	v0,24(s8)
  4ccab8:	8fc20028 	lw	v0,40(s8)
  4ccabc:	00000000 	nop
  4ccac0:	8c43103c 	lw	v1,4156(v0)
  4ccac4:	8fc20018 	lw	v0,24(s8)
  4ccac8:	00000000 	nop
  4ccacc:	00431821 	addu	v1,v0,v1
  4ccad0:	8fc2001c 	lw	v0,28(s8)
  4ccad4:	00000000 	nop
  4ccad8:	00431021 	addu	v0,v0,v1
  4ccadc:	afc2001c 	sw	v0,28(s8)
  4ccae0:	8fc20028 	lw	v0,40(s8)
  4ccae4:	00000000 	nop
  4ccae8:	8c431038 	lw	v1,4152(v0)
  4ccaec:	8fc20018 	lw	v0,24(s8)
  4ccaf0:	00000000 	nop
  4ccaf4:	00431821 	addu	v1,v0,v1
  4ccaf8:	8fc20008 	lw	v0,8(s8)
  4ccafc:	00000000 	nop
  4ccb00:	00431026 	xor	v0,v0,v1
  4ccb04:	afc20008 	sw	v0,8(s8)
  4ccb08:	8fc20008 	lw	v0,8(s8)
  4ccb0c:	00000000 	nop
  4ccb10:	00021fc0 	sll	v1,v0,0x1f
  4ccb14:	00021042 	srl	v0,v0,0x1
  4ccb18:	00621025 	or	v0,v1,v0
  4ccb1c:	afc20008 	sw	v0,8(s8)
  4ccb20:	8fc2000c 	lw	v0,12(s8)
  4ccb24:	00000000 	nop
  4ccb28:	00021840 	sll	v1,v0,0x1
  4ccb2c:	000217c2 	srl	v0,v0,0x1f
  4ccb30:	00621825 	or	v1,v1,v0
  4ccb34:	8fc2001c 	lw	v0,28(s8)
  4ccb38:	00000000 	nop
  4ccb3c:	00621026 	xor	v0,v1,v0
  4ccb40:	afc2000c 	sw	v0,12(s8)
	ENCCYCLE (2);
  4ccb44:	8fc20008 	lw	v0,8(s8)
  4ccb48:	00000000 	nop
  4ccb4c:	304200ff 	andi	v0,v0,0xff
  4ccb50:	00021880 	sll	v1,v0,0x2
  4ccb54:	8fc20028 	lw	v0,40(s8)
  4ccb58:	00000000 	nop
  4ccb5c:	00432021 	addu	a0,v0,v1
  4ccb60:	8fc20008 	lw	v0,8(s8)
  4ccb64:	00000000 	nop
  4ccb68:	00021202 	srl	v0,v0,0x8
  4ccb6c:	304200ff 	andi	v0,v0,0xff
  4ccb70:	00021080 	sll	v0,v0,0x2
  4ccb74:	24430400 	addiu	v1,v0,1024
  4ccb78:	8fc20028 	lw	v0,40(s8)
  4ccb7c:	00000000 	nop
  4ccb80:	00431021 	addu	v0,v0,v1
  4ccb84:	8c830000 	lw	v1,0(a0)
  4ccb88:	8c420000 	lw	v0,0(v0)
  4ccb8c:	00000000 	nop
  4ccb90:	00622026 	xor	a0,v1,v0
  4ccb94:	8fc20008 	lw	v0,8(s8)
  4ccb98:	00000000 	nop
  4ccb9c:	00021402 	srl	v0,v0,0x10
  4ccba0:	304200ff 	andi	v0,v0,0xff
  4ccba4:	00021080 	sll	v0,v0,0x2
  4ccba8:	24430800 	addiu	v1,v0,2048
  4ccbac:	8fc20028 	lw	v0,40(s8)
  4ccbb0:	00000000 	nop
  4ccbb4:	00431021 	addu	v0,v0,v1
  4ccbb8:	8c420000 	lw	v0,0(v0)
  4ccbbc:	00000000 	nop
  4ccbc0:	00822026 	xor	a0,a0,v0
  4ccbc4:	8fc20008 	lw	v0,8(s8)
  4ccbc8:	00000000 	nop
  4ccbcc:	00021602 	srl	v0,v0,0x18
  4ccbd0:	00021080 	sll	v0,v0,0x2
  4ccbd4:	24430c00 	addiu	v1,v0,3072
  4ccbd8:	8fc20028 	lw	v0,40(s8)
  4ccbdc:	00000000 	nop
  4ccbe0:	00431021 	addu	v0,v0,v1
  4ccbe4:	8c420000 	lw	v0,0(v0)
  4ccbe8:	00000000 	nop
  4ccbec:	00821026 	xor	v0,a0,v0
  4ccbf0:	afc20018 	sw	v0,24(s8)
  4ccbf4:	8fc2000c 	lw	v0,12(s8)
  4ccbf8:	00000000 	nop
  4ccbfc:	304200ff 	andi	v0,v0,0xff
  4ccc00:	00021080 	sll	v0,v0,0x2
  4ccc04:	24430400 	addiu	v1,v0,1024
  4ccc08:	8fc20028 	lw	v0,40(s8)
  4ccc0c:	00000000 	nop
  4ccc10:	00432021 	addu	a0,v0,v1
  4ccc14:	8fc2000c 	lw	v0,12(s8)
  4ccc18:	00000000 	nop
  4ccc1c:	00021202 	srl	v0,v0,0x8
  4ccc20:	304200ff 	andi	v0,v0,0xff
  4ccc24:	00021080 	sll	v0,v0,0x2
  4ccc28:	24430800 	addiu	v1,v0,2048
  4ccc2c:	8fc20028 	lw	v0,40(s8)
  4ccc30:	00000000 	nop
  4ccc34:	00431021 	addu	v0,v0,v1
  4ccc38:	8c830000 	lw	v1,0(a0)
  4ccc3c:	8c420000 	lw	v0,0(v0)
  4ccc40:	00000000 	nop
  4ccc44:	00622026 	xor	a0,v1,v0
  4ccc48:	8fc2000c 	lw	v0,12(s8)
  4ccc4c:	00000000 	nop
  4ccc50:	00021402 	srl	v0,v0,0x10
  4ccc54:	304200ff 	andi	v0,v0,0xff
  4ccc58:	00021080 	sll	v0,v0,0x2
  4ccc5c:	24430c00 	addiu	v1,v0,3072
  4ccc60:	8fc20028 	lw	v0,40(s8)
  4ccc64:	00000000 	nop
  4ccc68:	00431021 	addu	v0,v0,v1
  4ccc6c:	8c420000 	lw	v0,0(v0)
  4ccc70:	00000000 	nop
  4ccc74:	00822026 	xor	a0,a0,v0
  4ccc78:	8fc2000c 	lw	v0,12(s8)
  4ccc7c:	00000000 	nop
  4ccc80:	00021602 	srl	v0,v0,0x18
  4ccc84:	00021880 	sll	v1,v0,0x2
  4ccc88:	8fc20028 	lw	v0,40(s8)
  4ccc8c:	00000000 	nop
  4ccc90:	00431021 	addu	v0,v0,v1
  4ccc94:	8c420000 	lw	v0,0(v0)
  4ccc98:	00000000 	nop
  4ccc9c:	00821026 	xor	v0,a0,v0
  4ccca0:	afc2001c 	sw	v0,28(s8)
  4ccca4:	8fc30018 	lw	v1,24(s8)
  4ccca8:	8fc2001c 	lw	v0,28(s8)
  4cccac:	00000000 	nop
  4cccb0:	00621021 	addu	v0,v1,v0
  4cccb4:	afc20018 	sw	v0,24(s8)
  4cccb8:	8fc20028 	lw	v0,40(s8)
  4cccbc:	00000000 	nop
  4cccc0:	8c431044 	lw	v1,4164(v0)
  4cccc4:	8fc20018 	lw	v0,24(s8)
  4cccc8:	00000000 	nop
  4ccccc:	00431821 	addu	v1,v0,v1
  4cccd0:	8fc2001c 	lw	v0,28(s8)
  4cccd4:	00000000 	nop
  4cccd8:	00431021 	addu	v0,v0,v1
  4cccdc:	afc2001c 	sw	v0,28(s8)
  4ccce0:	8fc20028 	lw	v0,40(s8)
  4ccce4:	00000000 	nop
  4ccce8:	8c431040 	lw	v1,4160(v0)
  4cccec:	8fc20018 	lw	v0,24(s8)
  4cccf0:	00000000 	nop
  4cccf4:	00431821 	addu	v1,v0,v1
  4cccf8:	8fc20010 	lw	v0,16(s8)
  4cccfc:	00000000 	nop
  4ccd00:	00431026 	xor	v0,v0,v1
  4ccd04:	afc20010 	sw	v0,16(s8)
  4ccd08:	8fc20010 	lw	v0,16(s8)
  4ccd0c:	00000000 	nop
  4ccd10:	00021fc0 	sll	v1,v0,0x1f
  4ccd14:	00021042 	srl	v0,v0,0x1
  4ccd18:	00621025 	or	v0,v1,v0
  4ccd1c:	afc20010 	sw	v0,16(s8)
  4ccd20:	8fc20014 	lw	v0,20(s8)
  4ccd24:	00000000 	nop
  4ccd28:	00021840 	sll	v1,v0,0x1
  4ccd2c:	000217c2 	srl	v0,v0,0x1f
  4ccd30:	00621825 	or	v1,v1,v0
  4ccd34:	8fc2001c 	lw	v0,28(s8)
  4ccd38:	00000000 	nop
  4ccd3c:	00621026 	xor	v0,v1,v0
  4ccd40:	afc20014 	sw	v0,20(s8)
  4ccd44:	8fc20010 	lw	v0,16(s8)
  4ccd48:	00000000 	nop
  4ccd4c:	304200ff 	andi	v0,v0,0xff
  4ccd50:	00021880 	sll	v1,v0,0x2
  4ccd54:	8fc20028 	lw	v0,40(s8)
  4ccd58:	00000000 	nop
  4ccd5c:	00432021 	addu	a0,v0,v1
  4ccd60:	8fc20010 	lw	v0,16(s8)
  4ccd64:	00000000 	nop
  4ccd68:	00021202 	srl	v0,v0,0x8
  4ccd6c:	304200ff 	andi	v0,v0,0xff
  4ccd70:	00021080 	sll	v0,v0,0x2
  4ccd74:	24430400 	addiu	v1,v0,1024
  4ccd78:	8fc20028 	lw	v0,40(s8)
  4ccd7c:	00000000 	nop
  4ccd80:	00431021 	addu	v0,v0,v1
  4ccd84:	8c830000 	lw	v1,0(a0)
  4ccd88:	8c420000 	lw	v0,0(v0)
  4ccd8c:	00000000 	nop
  4ccd90:	00622026 	xor	a0,v1,v0
  4ccd94:	8fc20010 	lw	v0,16(s8)
  4ccd98:	00000000 	nop
  4ccd9c:	00021402 	srl	v0,v0,0x10
  4ccda0:	304200ff 	andi	v0,v0,0xff
  4ccda4:	00021080 	sll	v0,v0,0x2
  4ccda8:	24430800 	addiu	v1,v0,2048
  4ccdac:	8fc20028 	lw	v0,40(s8)
  4ccdb0:	00000000 	nop
  4ccdb4:	00431021 	addu	v0,v0,v1
  4ccdb8:	8c420000 	lw	v0,0(v0)
  4ccdbc:	00000000 	nop
  4ccdc0:	00822026 	xor	a0,a0,v0
  4ccdc4:	8fc20010 	lw	v0,16(s8)
  4ccdc8:	00000000 	nop
  4ccdcc:	00021602 	srl	v0,v0,0x18
  4ccdd0:	00021080 	sll	v0,v0,0x2
  4ccdd4:	24430c00 	addiu	v1,v0,3072
  4ccdd8:	8fc20028 	lw	v0,40(s8)
  4ccddc:	00000000 	nop
  4ccde0:	00431021 	addu	v0,v0,v1
  4ccde4:	8c420000 	lw	v0,0(v0)
  4ccde8:	00000000 	nop
  4ccdec:	00821026 	xor	v0,a0,v0
  4ccdf0:	afc20018 	sw	v0,24(s8)
  4ccdf4:	8fc20014 	lw	v0,20(s8)
  4ccdf8:	00000000 	nop
  4ccdfc:	304200ff 	andi	v0,v0,0xff
  4cce00:	00021080 	sll	v0,v0,0x2
  4cce04:	24430400 	addiu	v1,v0,1024
  4cce08:	8fc20028 	lw	v0,40(s8)
  4cce0c:	00000000 	nop
  4cce10:	00432021 	addu	a0,v0,v1
  4cce14:	8fc20014 	lw	v0,20(s8)
  4cce18:	00000000 	nop
  4cce1c:	00021202 	srl	v0,v0,0x8
  4cce20:	304200ff 	andi	v0,v0,0xff
  4cce24:	00021080 	sll	v0,v0,0x2
  4cce28:	24430800 	addiu	v1,v0,2048
  4cce2c:	8fc20028 	lw	v0,40(s8)
  4cce30:	00000000 	nop
  4cce34:	00431021 	addu	v0,v0,v1
  4cce38:	8c830000 	lw	v1,0(a0)
  4cce3c:	8c420000 	lw	v0,0(v0)
  4cce40:	00000000 	nop
  4cce44:	00622026 	xor	a0,v1,v0
  4cce48:	8fc20014 	lw	v0,20(s8)
  4cce4c:	00000000 	nop
  4cce50:	00021402 	srl	v0,v0,0x10
  4cce54:	304200ff 	andi	v0,v0,0xff
  4cce58:	00021080 	sll	v0,v0,0x2
  4cce5c:	24430c00 	addiu	v1,v0,3072
  4cce60:	8fc20028 	lw	v0,40(s8)
  4cce64:	00000000 	nop
  4cce68:	00431021 	addu	v0,v0,v1
  4cce6c:	8c420000 	lw	v0,0(v0)
  4cce70:	00000000 	nop
  4cce74:	00822026 	xor	a0,a0,v0
  4cce78:	8fc20014 	lw	v0,20(s8)
  4cce7c:	00000000 	nop
  4cce80:	00021602 	srl	v0,v0,0x18
  4cce84:	00021880 	sll	v1,v0,0x2
  4cce88:	8fc20028 	lw	v0,40(s8)
  4cce8c:	00000000 	nop
  4cce90:	00431021 	addu	v0,v0,v1
  4cce94:	8c420000 	lw	v0,0(v0)
  4cce98:	00000000 	nop
  4cce9c:	00821026 	xor	v0,a0,v0
  4ccea0:	afc2001c 	sw	v0,28(s8)
  4ccea4:	8fc30018 	lw	v1,24(s8)
  4ccea8:	8fc2001c 	lw	v0,28(s8)
  4cceac:	00000000 	nop
  4cceb0:	00621021 	addu	v0,v1,v0
  4cceb4:	afc20018 	sw	v0,24(s8)
  4cceb8:	8fc20028 	lw	v0,40(s8)
  4ccebc:	00000000 	nop
  4ccec0:	8c43104c 	lw	v1,4172(v0)
  4ccec4:	8fc20018 	lw	v0,24(s8)
  4ccec8:	00000000 	nop
  4ccecc:	00431821 	addu	v1,v0,v1
  4cced0:	8fc2001c 	lw	v0,28(s8)
  4cced4:	00000000 	nop
  4cced8:	00431021 	addu	v0,v0,v1
  4ccedc:	afc2001c 	sw	v0,28(s8)
  4ccee0:	8fc20028 	lw	v0,40(s8)
  4ccee4:	00000000 	nop
  4ccee8:	8c431048 	lw	v1,4168(v0)
  4cceec:	8fc20018 	lw	v0,24(s8)
  4ccef0:	00000000 	nop
  4ccef4:	00431821 	addu	v1,v0,v1
  4ccef8:	8fc20008 	lw	v0,8(s8)
  4ccefc:	00000000 	nop
  4ccf00:	00431026 	xor	v0,v0,v1
  4ccf04:	afc20008 	sw	v0,8(s8)
  4ccf08:	8fc20008 	lw	v0,8(s8)
  4ccf0c:	00000000 	nop
  4ccf10:	00021fc0 	sll	v1,v0,0x1f
  4ccf14:	00021042 	srl	v0,v0,0x1
  4ccf18:	00621025 	or	v0,v1,v0
  4ccf1c:	afc20008 	sw	v0,8(s8)
  4ccf20:	8fc2000c 	lw	v0,12(s8)
  4ccf24:	00000000 	nop
  4ccf28:	00021840 	sll	v1,v0,0x1
  4ccf2c:	000217c2 	srl	v0,v0,0x1f
  4ccf30:	00621825 	or	v1,v1,v0
  4ccf34:	8fc2001c 	lw	v0,28(s8)
  4ccf38:	00000000 	nop
  4ccf3c:	00621026 	xor	v0,v1,v0
  4ccf40:	afc2000c 	sw	v0,12(s8)
	ENCCYCLE (3);
  4ccf44:	8fc20008 	lw	v0,8(s8)
  4ccf48:	00000000 	nop
  4ccf4c:	304200ff 	andi	v0,v0,0xff
  4ccf50:	00021880 	sll	v1,v0,0x2
  4ccf54:	8fc20028 	lw	v0,40(s8)
  4ccf58:	00000000 	nop
  4ccf5c:	00432021 	addu	a0,v0,v1
  4ccf60:	8fc20008 	lw	v0,8(s8)
  4ccf64:	00000000 	nop
  4ccf68:	00021202 	srl	v0,v0,0x8
  4ccf6c:	304200ff 	andi	v0,v0,0xff
  4ccf70:	00021080 	sll	v0,v0,0x2
  4ccf74:	24430400 	addiu	v1,v0,1024
  4ccf78:	8fc20028 	lw	v0,40(s8)
  4ccf7c:	00000000 	nop
  4ccf80:	00431021 	addu	v0,v0,v1
  4ccf84:	8c830000 	lw	v1,0(a0)
  4ccf88:	8c420000 	lw	v0,0(v0)
  4ccf8c:	00000000 	nop
  4ccf90:	00622026 	xor	a0,v1,v0
  4ccf94:	8fc20008 	lw	v0,8(s8)
  4ccf98:	00000000 	nop
  4ccf9c:	00021402 	srl	v0,v0,0x10
  4ccfa0:	304200ff 	andi	v0,v0,0xff
  4ccfa4:	00021080 	sll	v0,v0,0x2
  4ccfa8:	24430800 	addiu	v1,v0,2048
  4ccfac:	8fc20028 	lw	v0,40(s8)
  4ccfb0:	00000000 	nop
  4ccfb4:	00431021 	addu	v0,v0,v1
  4ccfb8:	8c420000 	lw	v0,0(v0)
  4ccfbc:	00000000 	nop
  4ccfc0:	00822026 	xor	a0,a0,v0
  4ccfc4:	8fc20008 	lw	v0,8(s8)
  4ccfc8:	00000000 	nop
  4ccfcc:	00021602 	srl	v0,v0,0x18
  4ccfd0:	00021080 	sll	v0,v0,0x2
  4ccfd4:	24430c00 	addiu	v1,v0,3072
  4ccfd8:	8fc20028 	lw	v0,40(s8)
  4ccfdc:	00000000 	nop
  4ccfe0:	00431021 	addu	v0,v0,v1
  4ccfe4:	8c420000 	lw	v0,0(v0)
  4ccfe8:	00000000 	nop
  4ccfec:	00821026 	xor	v0,a0,v0
  4ccff0:	afc20018 	sw	v0,24(s8)
  4ccff4:	8fc2000c 	lw	v0,12(s8)
  4ccff8:	00000000 	nop
  4ccffc:	304200ff 	andi	v0,v0,0xff
  4cd000:	00021080 	sll	v0,v0,0x2
  4cd004:	24430400 	addiu	v1,v0,1024
  4cd008:	8fc20028 	lw	v0,40(s8)
  4cd00c:	00000000 	nop
  4cd010:	00432021 	addu	a0,v0,v1
  4cd014:	8fc2000c 	lw	v0,12(s8)
  4cd018:	00000000 	nop
  4cd01c:	00021202 	srl	v0,v0,0x8
  4cd020:	304200ff 	andi	v0,v0,0xff
  4cd024:	00021080 	sll	v0,v0,0x2
  4cd028:	24430800 	addiu	v1,v0,2048
  4cd02c:	8fc20028 	lw	v0,40(s8)
  4cd030:	00000000 	nop
  4cd034:	00431021 	addu	v0,v0,v1
  4cd038:	8c830000 	lw	v1,0(a0)
  4cd03c:	8c420000 	lw	v0,0(v0)
  4cd040:	00000000 	nop
  4cd044:	00622026 	xor	a0,v1,v0
  4cd048:	8fc2000c 	lw	v0,12(s8)
  4cd04c:	00000000 	nop
  4cd050:	00021402 	srl	v0,v0,0x10
  4cd054:	304200ff 	andi	v0,v0,0xff
  4cd058:	00021080 	sll	v0,v0,0x2
  4cd05c:	24430c00 	addiu	v1,v0,3072
  4cd060:	8fc20028 	lw	v0,40(s8)
  4cd064:	00000000 	nop
  4cd068:	00431021 	addu	v0,v0,v1
  4cd06c:	8c420000 	lw	v0,0(v0)
  4cd070:	00000000 	nop
  4cd074:	00822026 	xor	a0,a0,v0
  4cd078:	8fc2000c 	lw	v0,12(s8)
  4cd07c:	00000000 	nop
  4cd080:	00021602 	srl	v0,v0,0x18
  4cd084:	00021880 	sll	v1,v0,0x2
  4cd088:	8fc20028 	lw	v0,40(s8)
  4cd08c:	00000000 	nop
  4cd090:	00431021 	addu	v0,v0,v1
  4cd094:	8c420000 	lw	v0,0(v0)
  4cd098:	00000000 	nop
  4cd09c:	00821026 	xor	v0,a0,v0
  4cd0a0:	afc2001c 	sw	v0,28(s8)
  4cd0a4:	8fc30018 	lw	v1,24(s8)
  4cd0a8:	8fc2001c 	lw	v0,28(s8)
  4cd0ac:	00000000 	nop
  4cd0b0:	00621021 	addu	v0,v1,v0
  4cd0b4:	afc20018 	sw	v0,24(s8)
  4cd0b8:	8fc20028 	lw	v0,40(s8)
  4cd0bc:	00000000 	nop
  4cd0c0:	8c431054 	lw	v1,4180(v0)
  4cd0c4:	8fc20018 	lw	v0,24(s8)
  4cd0c8:	00000000 	nop
  4cd0cc:	00431821 	addu	v1,v0,v1
  4cd0d0:	8fc2001c 	lw	v0,28(s8)
  4cd0d4:	00000000 	nop
  4cd0d8:	00431021 	addu	v0,v0,v1
  4cd0dc:	afc2001c 	sw	v0,28(s8)
  4cd0e0:	8fc20028 	lw	v0,40(s8)
  4cd0e4:	00000000 	nop
  4cd0e8:	8c431050 	lw	v1,4176(v0)
  4cd0ec:	8fc20018 	lw	v0,24(s8)
  4cd0f0:	00000000 	nop
  4cd0f4:	00431821 	addu	v1,v0,v1
  4cd0f8:	8fc20010 	lw	v0,16(s8)
  4cd0fc:	00000000 	nop
  4cd100:	00431026 	xor	v0,v0,v1
  4cd104:	afc20010 	sw	v0,16(s8)
  4cd108:	8fc20010 	lw	v0,16(s8)
  4cd10c:	00000000 	nop
  4cd110:	00021fc0 	sll	v1,v0,0x1f
  4cd114:	00021042 	srl	v0,v0,0x1
  4cd118:	00621025 	or	v0,v1,v0
  4cd11c:	afc20010 	sw	v0,16(s8)
  4cd120:	8fc20014 	lw	v0,20(s8)
  4cd124:	00000000 	nop
  4cd128:	00021840 	sll	v1,v0,0x1
  4cd12c:	000217c2 	srl	v0,v0,0x1f
  4cd130:	00621825 	or	v1,v1,v0
  4cd134:	8fc2001c 	lw	v0,28(s8)
  4cd138:	00000000 	nop
  4cd13c:	00621026 	xor	v0,v1,v0
  4cd140:	afc20014 	sw	v0,20(s8)
  4cd144:	8fc20010 	lw	v0,16(s8)
  4cd148:	00000000 	nop
  4cd14c:	304200ff 	andi	v0,v0,0xff
  4cd150:	00021880 	sll	v1,v0,0x2
  4cd154:	8fc20028 	lw	v0,40(s8)
  4cd158:	00000000 	nop
  4cd15c:	00432021 	addu	a0,v0,v1
  4cd160:	8fc20010 	lw	v0,16(s8)
  4cd164:	00000000 	nop
  4cd168:	00021202 	srl	v0,v0,0x8
  4cd16c:	304200ff 	andi	v0,v0,0xff
  4cd170:	00021080 	sll	v0,v0,0x2
  4cd174:	24430400 	addiu	v1,v0,1024
  4cd178:	8fc20028 	lw	v0,40(s8)
  4cd17c:	00000000 	nop
  4cd180:	00431021 	addu	v0,v0,v1
  4cd184:	8c830000 	lw	v1,0(a0)
  4cd188:	8c420000 	lw	v0,0(v0)
  4cd18c:	00000000 	nop
  4cd190:	00622026 	xor	a0,v1,v0
  4cd194:	8fc20010 	lw	v0,16(s8)
  4cd198:	00000000 	nop
  4cd19c:	00021402 	srl	v0,v0,0x10
  4cd1a0:	304200ff 	andi	v0,v0,0xff
  4cd1a4:	00021080 	sll	v0,v0,0x2
  4cd1a8:	24430800 	addiu	v1,v0,2048
  4cd1ac:	8fc20028 	lw	v0,40(s8)
  4cd1b0:	00000000 	nop
  4cd1b4:	00431021 	addu	v0,v0,v1
  4cd1b8:	8c420000 	lw	v0,0(v0)
  4cd1bc:	00000000 	nop
  4cd1c0:	00822026 	xor	a0,a0,v0
  4cd1c4:	8fc20010 	lw	v0,16(s8)
  4cd1c8:	00000000 	nop
  4cd1cc:	00021602 	srl	v0,v0,0x18
  4cd1d0:	00021080 	sll	v0,v0,0x2
  4cd1d4:	24430c00 	addiu	v1,v0,3072
  4cd1d8:	8fc20028 	lw	v0,40(s8)
  4cd1dc:	00000000 	nop
  4cd1e0:	00431021 	addu	v0,v0,v1
  4cd1e4:	8c420000 	lw	v0,0(v0)
  4cd1e8:	00000000 	nop
  4cd1ec:	00821026 	xor	v0,a0,v0
  4cd1f0:	afc20018 	sw	v0,24(s8)
  4cd1f4:	8fc20014 	lw	v0,20(s8)
  4cd1f8:	00000000 	nop
  4cd1fc:	304200ff 	andi	v0,v0,0xff
  4cd200:	00021080 	sll	v0,v0,0x2
  4cd204:	24430400 	addiu	v1,v0,1024
  4cd208:	8fc20028 	lw	v0,40(s8)
  4cd20c:	00000000 	nop
  4cd210:	00432021 	addu	a0,v0,v1
  4cd214:	8fc20014 	lw	v0,20(s8)
  4cd218:	00000000 	nop
  4cd21c:	00021202 	srl	v0,v0,0x8
  4cd220:	304200ff 	andi	v0,v0,0xff
  4cd224:	00021080 	sll	v0,v0,0x2
  4cd228:	24430800 	addiu	v1,v0,2048
  4cd22c:	8fc20028 	lw	v0,40(s8)
  4cd230:	00000000 	nop
  4cd234:	00431021 	addu	v0,v0,v1
  4cd238:	8c830000 	lw	v1,0(a0)
  4cd23c:	8c420000 	lw	v0,0(v0)
  4cd240:	00000000 	nop
  4cd244:	00622026 	xor	a0,v1,v0
  4cd248:	8fc20014 	lw	v0,20(s8)
  4cd24c:	00000000 	nop
  4cd250:	00021402 	srl	v0,v0,0x10
  4cd254:	304200ff 	andi	v0,v0,0xff
  4cd258:	00021080 	sll	v0,v0,0x2
  4cd25c:	24430c00 	addiu	v1,v0,3072
  4cd260:	8fc20028 	lw	v0,40(s8)
  4cd264:	00000000 	nop
  4cd268:	00431021 	addu	v0,v0,v1
  4cd26c:	8c420000 	lw	v0,0(v0)
  4cd270:	00000000 	nop
  4cd274:	00822026 	xor	a0,a0,v0
  4cd278:	8fc20014 	lw	v0,20(s8)
  4cd27c:	00000000 	nop
  4cd280:	00021602 	srl	v0,v0,0x18
  4cd284:	00021880 	sll	v1,v0,0x2
  4cd288:	8fc20028 	lw	v0,40(s8)
  4cd28c:	00000000 	nop
  4cd290:	00431021 	addu	v0,v0,v1
  4cd294:	8c420000 	lw	v0,0(v0)
  4cd298:	00000000 	nop
  4cd29c:	00821026 	xor	v0,a0,v0
  4cd2a0:	afc2001c 	sw	v0,28(s8)
  4cd2a4:	8fc30018 	lw	v1,24(s8)
  4cd2a8:	8fc2001c 	lw	v0,28(s8)
  4cd2ac:	00000000 	nop
  4cd2b0:	00621021 	addu	v0,v1,v0
  4cd2b4:	afc20018 	sw	v0,24(s8)
  4cd2b8:	8fc20028 	lw	v0,40(s8)
  4cd2bc:	00000000 	nop
  4cd2c0:	8c43105c 	lw	v1,4188(v0)
  4cd2c4:	8fc20018 	lw	v0,24(s8)
  4cd2c8:	00000000 	nop
  4cd2cc:	00431821 	addu	v1,v0,v1
  4cd2d0:	8fc2001c 	lw	v0,28(s8)
  4cd2d4:	00000000 	nop
  4cd2d8:	00431021 	addu	v0,v0,v1
  4cd2dc:	afc2001c 	sw	v0,28(s8)
  4cd2e0:	8fc20028 	lw	v0,40(s8)
  4cd2e4:	00000000 	nop
  4cd2e8:	8c431058 	lw	v1,4184(v0)
  4cd2ec:	8fc20018 	lw	v0,24(s8)
  4cd2f0:	00000000 	nop
  4cd2f4:	00431821 	addu	v1,v0,v1
  4cd2f8:	8fc20008 	lw	v0,8(s8)
  4cd2fc:	00000000 	nop
  4cd300:	00431026 	xor	v0,v0,v1
  4cd304:	afc20008 	sw	v0,8(s8)
  4cd308:	8fc20008 	lw	v0,8(s8)
  4cd30c:	00000000 	nop
  4cd310:	00021fc0 	sll	v1,v0,0x1f
  4cd314:	00021042 	srl	v0,v0,0x1
  4cd318:	00621025 	or	v0,v1,v0
  4cd31c:	afc20008 	sw	v0,8(s8)
  4cd320:	8fc2000c 	lw	v0,12(s8)
  4cd324:	00000000 	nop
  4cd328:	00021840 	sll	v1,v0,0x1
  4cd32c:	000217c2 	srl	v0,v0,0x1f
  4cd330:	00621825 	or	v1,v1,v0
  4cd334:	8fc2001c 	lw	v0,28(s8)
  4cd338:	00000000 	nop
  4cd33c:	00621026 	xor	v0,v1,v0
  4cd340:	afc2000c 	sw	v0,12(s8)
	ENCCYCLE (4);
  4cd344:	8fc20008 	lw	v0,8(s8)
  4cd348:	00000000 	nop
  4cd34c:	304200ff 	andi	v0,v0,0xff
  4cd350:	00021880 	sll	v1,v0,0x2
  4cd354:	8fc20028 	lw	v0,40(s8)
  4cd358:	00000000 	nop
  4cd35c:	00432021 	addu	a0,v0,v1
  4cd360:	8fc20008 	lw	v0,8(s8)
  4cd364:	00000000 	nop
  4cd368:	00021202 	srl	v0,v0,0x8
  4cd36c:	304200ff 	andi	v0,v0,0xff
  4cd370:	00021080 	sll	v0,v0,0x2
  4cd374:	24430400 	addiu	v1,v0,1024
  4cd378:	8fc20028 	lw	v0,40(s8)
  4cd37c:	00000000 	nop
  4cd380:	00431021 	addu	v0,v0,v1
  4cd384:	8c830000 	lw	v1,0(a0)
  4cd388:	8c420000 	lw	v0,0(v0)
  4cd38c:	00000000 	nop
  4cd390:	00622026 	xor	a0,v1,v0
  4cd394:	8fc20008 	lw	v0,8(s8)
  4cd398:	00000000 	nop
  4cd39c:	00021402 	srl	v0,v0,0x10
  4cd3a0:	304200ff 	andi	v0,v0,0xff
  4cd3a4:	00021080 	sll	v0,v0,0x2
  4cd3a8:	24430800 	addiu	v1,v0,2048
  4cd3ac:	8fc20028 	lw	v0,40(s8)
  4cd3b0:	00000000 	nop
  4cd3b4:	00431021 	addu	v0,v0,v1
  4cd3b8:	8c420000 	lw	v0,0(v0)
  4cd3bc:	00000000 	nop
  4cd3c0:	00822026 	xor	a0,a0,v0
  4cd3c4:	8fc20008 	lw	v0,8(s8)
  4cd3c8:	00000000 	nop
  4cd3cc:	00021602 	srl	v0,v0,0x18
  4cd3d0:	00021080 	sll	v0,v0,0x2
  4cd3d4:	24430c00 	addiu	v1,v0,3072
  4cd3d8:	8fc20028 	lw	v0,40(s8)
  4cd3dc:	00000000 	nop
  4cd3e0:	00431021 	addu	v0,v0,v1
  4cd3e4:	8c420000 	lw	v0,0(v0)
  4cd3e8:	00000000 	nop
  4cd3ec:	00821026 	xor	v0,a0,v0
  4cd3f0:	afc20018 	sw	v0,24(s8)
  4cd3f4:	8fc2000c 	lw	v0,12(s8)
  4cd3f8:	00000000 	nop
  4cd3fc:	304200ff 	andi	v0,v0,0xff
  4cd400:	00021080 	sll	v0,v0,0x2
  4cd404:	24430400 	addiu	v1,v0,1024
  4cd408:	8fc20028 	lw	v0,40(s8)
  4cd40c:	00000000 	nop
  4cd410:	00432021 	addu	a0,v0,v1
  4cd414:	8fc2000c 	lw	v0,12(s8)
  4cd418:	00000000 	nop
  4cd41c:	00021202 	srl	v0,v0,0x8
  4cd420:	304200ff 	andi	v0,v0,0xff
  4cd424:	00021080 	sll	v0,v0,0x2
  4cd428:	24430800 	addiu	v1,v0,2048
  4cd42c:	8fc20028 	lw	v0,40(s8)
  4cd430:	00000000 	nop
  4cd434:	00431021 	addu	v0,v0,v1
  4cd438:	8c830000 	lw	v1,0(a0)
  4cd43c:	8c420000 	lw	v0,0(v0)
  4cd440:	00000000 	nop
  4cd444:	00622026 	xor	a0,v1,v0
  4cd448:	8fc2000c 	lw	v0,12(s8)
  4cd44c:	00000000 	nop
  4cd450:	00021402 	srl	v0,v0,0x10
  4cd454:	304200ff 	andi	v0,v0,0xff
  4cd458:	00021080 	sll	v0,v0,0x2
  4cd45c:	24430c00 	addiu	v1,v0,3072
  4cd460:	8fc20028 	lw	v0,40(s8)
  4cd464:	00000000 	nop
  4cd468:	00431021 	addu	v0,v0,v1
  4cd46c:	8c420000 	lw	v0,0(v0)
  4cd470:	00000000 	nop
  4cd474:	00822026 	xor	a0,a0,v0
  4cd478:	8fc2000c 	lw	v0,12(s8)
  4cd47c:	00000000 	nop
  4cd480:	00021602 	srl	v0,v0,0x18
  4cd484:	00021880 	sll	v1,v0,0x2
  4cd488:	8fc20028 	lw	v0,40(s8)
  4cd48c:	00000000 	nop
  4cd490:	00431021 	addu	v0,v0,v1
  4cd494:	8c420000 	lw	v0,0(v0)
  4cd498:	00000000 	nop
  4cd49c:	00821026 	xor	v0,a0,v0
  4cd4a0:	afc2001c 	sw	v0,28(s8)
  4cd4a4:	8fc30018 	lw	v1,24(s8)
  4cd4a8:	8fc2001c 	lw	v0,28(s8)
  4cd4ac:	00000000 	nop
  4cd4b0:	00621021 	addu	v0,v1,v0
  4cd4b4:	afc20018 	sw	v0,24(s8)
  4cd4b8:	8fc20028 	lw	v0,40(s8)
  4cd4bc:	00000000 	nop
  4cd4c0:	8c431064 	lw	v1,4196(v0)
  4cd4c4:	8fc20018 	lw	v0,24(s8)
  4cd4c8:	00000000 	nop
  4cd4cc:	00431821 	addu	v1,v0,v1
  4cd4d0:	8fc2001c 	lw	v0,28(s8)
  4cd4d4:	00000000 	nop
  4cd4d8:	00431021 	addu	v0,v0,v1
  4cd4dc:	afc2001c 	sw	v0,28(s8)
  4cd4e0:	8fc20028 	lw	v0,40(s8)
  4cd4e4:	00000000 	nop
  4cd4e8:	8c431060 	lw	v1,4192(v0)
  4cd4ec:	8fc20018 	lw	v0,24(s8)
  4cd4f0:	00000000 	nop
  4cd4f4:	00431821 	addu	v1,v0,v1
  4cd4f8:	8fc20010 	lw	v0,16(s8)
  4cd4fc:	00000000 	nop
  4cd500:	00431026 	xor	v0,v0,v1
  4cd504:	afc20010 	sw	v0,16(s8)
  4cd508:	8fc20010 	lw	v0,16(s8)
  4cd50c:	00000000 	nop
  4cd510:	00021fc0 	sll	v1,v0,0x1f
  4cd514:	00021042 	srl	v0,v0,0x1
  4cd518:	00621025 	or	v0,v1,v0
  4cd51c:	afc20010 	sw	v0,16(s8)
  4cd520:	8fc20014 	lw	v0,20(s8)
  4cd524:	00000000 	nop
  4cd528:	00021840 	sll	v1,v0,0x1
  4cd52c:	000217c2 	srl	v0,v0,0x1f
  4cd530:	00621825 	or	v1,v1,v0
  4cd534:	8fc2001c 	lw	v0,28(s8)
  4cd538:	00000000 	nop
  4cd53c:	00621026 	xor	v0,v1,v0
  4cd540:	afc20014 	sw	v0,20(s8)
  4cd544:	8fc20010 	lw	v0,16(s8)
  4cd548:	00000000 	nop
  4cd54c:	304200ff 	andi	v0,v0,0xff
  4cd550:	00021880 	sll	v1,v0,0x2
  4cd554:	8fc20028 	lw	v0,40(s8)
  4cd558:	00000000 	nop
  4cd55c:	00432021 	addu	a0,v0,v1
  4cd560:	8fc20010 	lw	v0,16(s8)
  4cd564:	00000000 	nop
  4cd568:	00021202 	srl	v0,v0,0x8
  4cd56c:	304200ff 	andi	v0,v0,0xff
  4cd570:	00021080 	sll	v0,v0,0x2
  4cd574:	24430400 	addiu	v1,v0,1024
  4cd578:	8fc20028 	lw	v0,40(s8)
  4cd57c:	00000000 	nop
  4cd580:	00431021 	addu	v0,v0,v1
  4cd584:	8c830000 	lw	v1,0(a0)
  4cd588:	8c420000 	lw	v0,0(v0)
  4cd58c:	00000000 	nop
  4cd590:	00622026 	xor	a0,v1,v0
  4cd594:	8fc20010 	lw	v0,16(s8)
  4cd598:	00000000 	nop
  4cd59c:	00021402 	srl	v0,v0,0x10
  4cd5a0:	304200ff 	andi	v0,v0,0xff
  4cd5a4:	00021080 	sll	v0,v0,0x2
  4cd5a8:	24430800 	addiu	v1,v0,2048
  4cd5ac:	8fc20028 	lw	v0,40(s8)
  4cd5b0:	00000000 	nop
  4cd5b4:	00431021 	addu	v0,v0,v1
  4cd5b8:	8c420000 	lw	v0,0(v0)
  4cd5bc:	00000000 	nop
  4cd5c0:	00822026 	xor	a0,a0,v0
  4cd5c4:	8fc20010 	lw	v0,16(s8)
  4cd5c8:	00000000 	nop
  4cd5cc:	00021602 	srl	v0,v0,0x18
  4cd5d0:	00021080 	sll	v0,v0,0x2
  4cd5d4:	24430c00 	addiu	v1,v0,3072
  4cd5d8:	8fc20028 	lw	v0,40(s8)
  4cd5dc:	00000000 	nop
  4cd5e0:	00431021 	addu	v0,v0,v1
  4cd5e4:	8c420000 	lw	v0,0(v0)
  4cd5e8:	00000000 	nop
  4cd5ec:	00821026 	xor	v0,a0,v0
  4cd5f0:	afc20018 	sw	v0,24(s8)
  4cd5f4:	8fc20014 	lw	v0,20(s8)
  4cd5f8:	00000000 	nop
  4cd5fc:	304200ff 	andi	v0,v0,0xff
  4cd600:	00021080 	sll	v0,v0,0x2
  4cd604:	24430400 	addiu	v1,v0,1024
  4cd608:	8fc20028 	lw	v0,40(s8)
  4cd60c:	00000000 	nop
  4cd610:	00432021 	addu	a0,v0,v1
  4cd614:	8fc20014 	lw	v0,20(s8)
  4cd618:	00000000 	nop
  4cd61c:	00021202 	srl	v0,v0,0x8
  4cd620:	304200ff 	andi	v0,v0,0xff
  4cd624:	00021080 	sll	v0,v0,0x2
  4cd628:	24430800 	addiu	v1,v0,2048
  4cd62c:	8fc20028 	lw	v0,40(s8)
  4cd630:	00000000 	nop
  4cd634:	00431021 	addu	v0,v0,v1
  4cd638:	8c830000 	lw	v1,0(a0)
  4cd63c:	8c420000 	lw	v0,0(v0)
  4cd640:	00000000 	nop
  4cd644:	00622026 	xor	a0,v1,v0
  4cd648:	8fc20014 	lw	v0,20(s8)
  4cd64c:	00000000 	nop
  4cd650:	00021402 	srl	v0,v0,0x10
  4cd654:	304200ff 	andi	v0,v0,0xff
  4cd658:	00021080 	sll	v0,v0,0x2
  4cd65c:	24430c00 	addiu	v1,v0,3072
  4cd660:	8fc20028 	lw	v0,40(s8)
  4cd664:	00000000 	nop
  4cd668:	00431021 	addu	v0,v0,v1
  4cd66c:	8c420000 	lw	v0,0(v0)
  4cd670:	00000000 	nop
  4cd674:	00822026 	xor	a0,a0,v0
  4cd678:	8fc20014 	lw	v0,20(s8)
  4cd67c:	00000000 	nop
  4cd680:	00021602 	srl	v0,v0,0x18
  4cd684:	00021880 	sll	v1,v0,0x2
  4cd688:	8fc20028 	lw	v0,40(s8)
  4cd68c:	00000000 	nop
  4cd690:	00431021 	addu	v0,v0,v1
  4cd694:	8c420000 	lw	v0,0(v0)
  4cd698:	00000000 	nop
  4cd69c:	00821026 	xor	v0,a0,v0
  4cd6a0:	afc2001c 	sw	v0,28(s8)
  4cd6a4:	8fc30018 	lw	v1,24(s8)
  4cd6a8:	8fc2001c 	lw	v0,28(s8)
  4cd6ac:	00000000 	nop
  4cd6b0:	00621021 	addu	v0,v1,v0
  4cd6b4:	afc20018 	sw	v0,24(s8)
  4cd6b8:	8fc20028 	lw	v0,40(s8)
  4cd6bc:	00000000 	nop
  4cd6c0:	8c43106c 	lw	v1,4204(v0)
  4cd6c4:	8fc20018 	lw	v0,24(s8)
  4cd6c8:	00000000 	nop
  4cd6cc:	00431821 	addu	v1,v0,v1
  4cd6d0:	8fc2001c 	lw	v0,28(s8)
  4cd6d4:	00000000 	nop
  4cd6d8:	00431021 	addu	v0,v0,v1
  4cd6dc:	afc2001c 	sw	v0,28(s8)
  4cd6e0:	8fc20028 	lw	v0,40(s8)
  4cd6e4:	00000000 	nop
  4cd6e8:	8c431068 	lw	v1,4200(v0)
  4cd6ec:	8fc20018 	lw	v0,24(s8)
  4cd6f0:	00000000 	nop
  4cd6f4:	00431821 	addu	v1,v0,v1
  4cd6f8:	8fc20008 	lw	v0,8(s8)
  4cd6fc:	00000000 	nop
  4cd700:	00431026 	xor	v0,v0,v1
  4cd704:	afc20008 	sw	v0,8(s8)
  4cd708:	8fc20008 	lw	v0,8(s8)
  4cd70c:	00000000 	nop
  4cd710:	00021fc0 	sll	v1,v0,0x1f
  4cd714:	00021042 	srl	v0,v0,0x1
  4cd718:	00621025 	or	v0,v1,v0
  4cd71c:	afc20008 	sw	v0,8(s8)
  4cd720:	8fc2000c 	lw	v0,12(s8)
  4cd724:	00000000 	nop
  4cd728:	00021840 	sll	v1,v0,0x1
  4cd72c:	000217c2 	srl	v0,v0,0x1f
  4cd730:	00621825 	or	v1,v1,v0
  4cd734:	8fc2001c 	lw	v0,28(s8)
  4cd738:	00000000 	nop
  4cd73c:	00621026 	xor	v0,v1,v0
  4cd740:	afc2000c 	sw	v0,12(s8)
	ENCCYCLE (5);
  4cd744:	8fc20008 	lw	v0,8(s8)
  4cd748:	00000000 	nop
  4cd74c:	304200ff 	andi	v0,v0,0xff
  4cd750:	00021880 	sll	v1,v0,0x2
  4cd754:	8fc20028 	lw	v0,40(s8)
  4cd758:	00000000 	nop
  4cd75c:	00432021 	addu	a0,v0,v1
  4cd760:	8fc20008 	lw	v0,8(s8)
  4cd764:	00000000 	nop
  4cd768:	00021202 	srl	v0,v0,0x8
  4cd76c:	304200ff 	andi	v0,v0,0xff
  4cd770:	00021080 	sll	v0,v0,0x2
  4cd774:	24430400 	addiu	v1,v0,1024
  4cd778:	8fc20028 	lw	v0,40(s8)
  4cd77c:	00000000 	nop
  4cd780:	00431021 	addu	v0,v0,v1
  4cd784:	8c830000 	lw	v1,0(a0)
  4cd788:	8c420000 	lw	v0,0(v0)
  4cd78c:	00000000 	nop
  4cd790:	00622026 	xor	a0,v1,v0
  4cd794:	8fc20008 	lw	v0,8(s8)
  4cd798:	00000000 	nop
  4cd79c:	00021402 	srl	v0,v0,0x10
  4cd7a0:	304200ff 	andi	v0,v0,0xff
  4cd7a4:	00021080 	sll	v0,v0,0x2
  4cd7a8:	24430800 	addiu	v1,v0,2048
  4cd7ac:	8fc20028 	lw	v0,40(s8)
  4cd7b0:	00000000 	nop
  4cd7b4:	00431021 	addu	v0,v0,v1
  4cd7b8:	8c420000 	lw	v0,0(v0)
  4cd7bc:	00000000 	nop
  4cd7c0:	00822026 	xor	a0,a0,v0
  4cd7c4:	8fc20008 	lw	v0,8(s8)
  4cd7c8:	00000000 	nop
  4cd7cc:	00021602 	srl	v0,v0,0x18
  4cd7d0:	00021080 	sll	v0,v0,0x2
  4cd7d4:	24430c00 	addiu	v1,v0,3072
  4cd7d8:	8fc20028 	lw	v0,40(s8)
  4cd7dc:	00000000 	nop
  4cd7e0:	00431021 	addu	v0,v0,v1
  4cd7e4:	8c420000 	lw	v0,0(v0)
  4cd7e8:	00000000 	nop
  4cd7ec:	00821026 	xor	v0,a0,v0
  4cd7f0:	afc20018 	sw	v0,24(s8)
  4cd7f4:	8fc2000c 	lw	v0,12(s8)
  4cd7f8:	00000000 	nop
  4cd7fc:	304200ff 	andi	v0,v0,0xff
  4cd800:	00021080 	sll	v0,v0,0x2
  4cd804:	24430400 	addiu	v1,v0,1024
  4cd808:	8fc20028 	lw	v0,40(s8)
  4cd80c:	00000000 	nop
  4cd810:	00432021 	addu	a0,v0,v1
  4cd814:	8fc2000c 	lw	v0,12(s8)
  4cd818:	00000000 	nop
  4cd81c:	00021202 	srl	v0,v0,0x8
  4cd820:	304200ff 	andi	v0,v0,0xff
  4cd824:	00021080 	sll	v0,v0,0x2
  4cd828:	24430800 	addiu	v1,v0,2048
  4cd82c:	8fc20028 	lw	v0,40(s8)
  4cd830:	00000000 	nop
  4cd834:	00431021 	addu	v0,v0,v1
  4cd838:	8c830000 	lw	v1,0(a0)
  4cd83c:	8c420000 	lw	v0,0(v0)
  4cd840:	00000000 	nop
  4cd844:	00622026 	xor	a0,v1,v0
  4cd848:	8fc2000c 	lw	v0,12(s8)
  4cd84c:	00000000 	nop
  4cd850:	00021402 	srl	v0,v0,0x10
  4cd854:	304200ff 	andi	v0,v0,0xff
  4cd858:	00021080 	sll	v0,v0,0x2
  4cd85c:	24430c00 	addiu	v1,v0,3072
  4cd860:	8fc20028 	lw	v0,40(s8)
  4cd864:	00000000 	nop
  4cd868:	00431021 	addu	v0,v0,v1
  4cd86c:	8c420000 	lw	v0,0(v0)
  4cd870:	00000000 	nop
  4cd874:	00822026 	xor	a0,a0,v0
  4cd878:	8fc2000c 	lw	v0,12(s8)
  4cd87c:	00000000 	nop
  4cd880:	00021602 	srl	v0,v0,0x18
  4cd884:	00021880 	sll	v1,v0,0x2
  4cd888:	8fc20028 	lw	v0,40(s8)
  4cd88c:	00000000 	nop
  4cd890:	00431021 	addu	v0,v0,v1
  4cd894:	8c420000 	lw	v0,0(v0)
  4cd898:	00000000 	nop
  4cd89c:	00821026 	xor	v0,a0,v0
  4cd8a0:	afc2001c 	sw	v0,28(s8)
  4cd8a4:	8fc30018 	lw	v1,24(s8)
  4cd8a8:	8fc2001c 	lw	v0,28(s8)
  4cd8ac:	00000000 	nop
  4cd8b0:	00621021 	addu	v0,v1,v0
  4cd8b4:	afc20018 	sw	v0,24(s8)
  4cd8b8:	8fc20028 	lw	v0,40(s8)
  4cd8bc:	00000000 	nop
  4cd8c0:	8c431074 	lw	v1,4212(v0)
  4cd8c4:	8fc20018 	lw	v0,24(s8)
  4cd8c8:	00000000 	nop
  4cd8cc:	00431821 	addu	v1,v0,v1
  4cd8d0:	8fc2001c 	lw	v0,28(s8)
  4cd8d4:	00000000 	nop
  4cd8d8:	00431021 	addu	v0,v0,v1
  4cd8dc:	afc2001c 	sw	v0,28(s8)
  4cd8e0:	8fc20028 	lw	v0,40(s8)
  4cd8e4:	00000000 	nop
  4cd8e8:	8c431070 	lw	v1,4208(v0)
  4cd8ec:	8fc20018 	lw	v0,24(s8)
  4cd8f0:	00000000 	nop
  4cd8f4:	00431821 	addu	v1,v0,v1
  4cd8f8:	8fc20010 	lw	v0,16(s8)
  4cd8fc:	00000000 	nop
  4cd900:	00431026 	xor	v0,v0,v1
  4cd904:	afc20010 	sw	v0,16(s8)
  4cd908:	8fc20010 	lw	v0,16(s8)
  4cd90c:	00000000 	nop
  4cd910:	00021fc0 	sll	v1,v0,0x1f
  4cd914:	00021042 	srl	v0,v0,0x1
  4cd918:	00621025 	or	v0,v1,v0
  4cd91c:	afc20010 	sw	v0,16(s8)
  4cd920:	8fc20014 	lw	v0,20(s8)
  4cd924:	00000000 	nop
  4cd928:	00021840 	sll	v1,v0,0x1
  4cd92c:	000217c2 	srl	v0,v0,0x1f
  4cd930:	00621825 	or	v1,v1,v0
  4cd934:	8fc2001c 	lw	v0,28(s8)
  4cd938:	00000000 	nop
  4cd93c:	00621026 	xor	v0,v1,v0
  4cd940:	afc20014 	sw	v0,20(s8)
  4cd944:	8fc20010 	lw	v0,16(s8)
  4cd948:	00000000 	nop
  4cd94c:	304200ff 	andi	v0,v0,0xff
  4cd950:	00021880 	sll	v1,v0,0x2
  4cd954:	8fc20028 	lw	v0,40(s8)
  4cd958:	00000000 	nop
  4cd95c:	00432021 	addu	a0,v0,v1
  4cd960:	8fc20010 	lw	v0,16(s8)
  4cd964:	00000000 	nop
  4cd968:	00021202 	srl	v0,v0,0x8
  4cd96c:	304200ff 	andi	v0,v0,0xff
  4cd970:	00021080 	sll	v0,v0,0x2
  4cd974:	24430400 	addiu	v1,v0,1024
  4cd978:	8fc20028 	lw	v0,40(s8)
  4cd97c:	00000000 	nop
  4cd980:	00431021 	addu	v0,v0,v1
  4cd984:	8c830000 	lw	v1,0(a0)
  4cd988:	8c420000 	lw	v0,0(v0)
  4cd98c:	00000000 	nop
  4cd990:	00622026 	xor	a0,v1,v0
  4cd994:	8fc20010 	lw	v0,16(s8)
  4cd998:	00000000 	nop
  4cd99c:	00021402 	srl	v0,v0,0x10
  4cd9a0:	304200ff 	andi	v0,v0,0xff
  4cd9a4:	00021080 	sll	v0,v0,0x2
  4cd9a8:	24430800 	addiu	v1,v0,2048
  4cd9ac:	8fc20028 	lw	v0,40(s8)
  4cd9b0:	00000000 	nop
  4cd9b4:	00431021 	addu	v0,v0,v1
  4cd9b8:	8c420000 	lw	v0,0(v0)
  4cd9bc:	00000000 	nop
  4cd9c0:	00822026 	xor	a0,a0,v0
  4cd9c4:	8fc20010 	lw	v0,16(s8)
  4cd9c8:	00000000 	nop
  4cd9cc:	00021602 	srl	v0,v0,0x18
  4cd9d0:	00021080 	sll	v0,v0,0x2
  4cd9d4:	24430c00 	addiu	v1,v0,3072
  4cd9d8:	8fc20028 	lw	v0,40(s8)
  4cd9dc:	00000000 	nop
  4cd9e0:	00431021 	addu	v0,v0,v1
  4cd9e4:	8c420000 	lw	v0,0(v0)
  4cd9e8:	00000000 	nop
  4cd9ec:	00821026 	xor	v0,a0,v0
  4cd9f0:	afc20018 	sw	v0,24(s8)
  4cd9f4:	8fc20014 	lw	v0,20(s8)
  4cd9f8:	00000000 	nop
  4cd9fc:	304200ff 	andi	v0,v0,0xff
  4cda00:	00021080 	sll	v0,v0,0x2
  4cda04:	24430400 	addiu	v1,v0,1024
  4cda08:	8fc20028 	lw	v0,40(s8)
  4cda0c:	00000000 	nop
  4cda10:	00432021 	addu	a0,v0,v1
  4cda14:	8fc20014 	lw	v0,20(s8)
  4cda18:	00000000 	nop
  4cda1c:	00021202 	srl	v0,v0,0x8
  4cda20:	304200ff 	andi	v0,v0,0xff
  4cda24:	00021080 	sll	v0,v0,0x2
  4cda28:	24430800 	addiu	v1,v0,2048
  4cda2c:	8fc20028 	lw	v0,40(s8)
  4cda30:	00000000 	nop
  4cda34:	00431021 	addu	v0,v0,v1
  4cda38:	8c830000 	lw	v1,0(a0)
  4cda3c:	8c420000 	lw	v0,0(v0)
  4cda40:	00000000 	nop
  4cda44:	00622026 	xor	a0,v1,v0
  4cda48:	8fc20014 	lw	v0,20(s8)
  4cda4c:	00000000 	nop
  4cda50:	00021402 	srl	v0,v0,0x10
  4cda54:	304200ff 	andi	v0,v0,0xff
  4cda58:	00021080 	sll	v0,v0,0x2
  4cda5c:	24430c00 	addiu	v1,v0,3072
  4cda60:	8fc20028 	lw	v0,40(s8)
  4cda64:	00000000 	nop
  4cda68:	00431021 	addu	v0,v0,v1
  4cda6c:	8c420000 	lw	v0,0(v0)
  4cda70:	00000000 	nop
  4cda74:	00822026 	xor	a0,a0,v0
  4cda78:	8fc20014 	lw	v0,20(s8)
  4cda7c:	00000000 	nop
  4cda80:	00021602 	srl	v0,v0,0x18
  4cda84:	00021880 	sll	v1,v0,0x2
  4cda88:	8fc20028 	lw	v0,40(s8)
  4cda8c:	00000000 	nop
  4cda90:	00431021 	addu	v0,v0,v1
  4cda94:	8c420000 	lw	v0,0(v0)
  4cda98:	00000000 	nop
  4cda9c:	00821026 	xor	v0,a0,v0
  4cdaa0:	afc2001c 	sw	v0,28(s8)
  4cdaa4:	8fc30018 	lw	v1,24(s8)
  4cdaa8:	8fc2001c 	lw	v0,28(s8)
  4cdaac:	00000000 	nop
  4cdab0:	00621021 	addu	v0,v1,v0
  4cdab4:	afc20018 	sw	v0,24(s8)
  4cdab8:	8fc20028 	lw	v0,40(s8)
  4cdabc:	00000000 	nop
  4cdac0:	8c43107c 	lw	v1,4220(v0)
  4cdac4:	8fc20018 	lw	v0,24(s8)
  4cdac8:	00000000 	nop
  4cdacc:	00431821 	addu	v1,v0,v1
  4cdad0:	8fc2001c 	lw	v0,28(s8)
  4cdad4:	00000000 	nop
  4cdad8:	00431021 	addu	v0,v0,v1
  4cdadc:	afc2001c 	sw	v0,28(s8)
  4cdae0:	8fc20028 	lw	v0,40(s8)
  4cdae4:	00000000 	nop
  4cdae8:	8c431078 	lw	v1,4216(v0)
  4cdaec:	8fc20018 	lw	v0,24(s8)
  4cdaf0:	00000000 	nop
  4cdaf4:	00431821 	addu	v1,v0,v1
  4cdaf8:	8fc20008 	lw	v0,8(s8)
  4cdafc:	00000000 	nop
  4cdb00:	00431026 	xor	v0,v0,v1
  4cdb04:	afc20008 	sw	v0,8(s8)
  4cdb08:	8fc20008 	lw	v0,8(s8)
  4cdb0c:	00000000 	nop
  4cdb10:	00021fc0 	sll	v1,v0,0x1f
  4cdb14:	00021042 	srl	v0,v0,0x1
  4cdb18:	00621025 	or	v0,v1,v0
  4cdb1c:	afc20008 	sw	v0,8(s8)
  4cdb20:	8fc2000c 	lw	v0,12(s8)
  4cdb24:	00000000 	nop
  4cdb28:	00021840 	sll	v1,v0,0x1
  4cdb2c:	000217c2 	srl	v0,v0,0x1f
  4cdb30:	00621825 	or	v1,v1,v0
  4cdb34:	8fc2001c 	lw	v0,28(s8)
  4cdb38:	00000000 	nop
  4cdb3c:	00621026 	xor	v0,v1,v0
  4cdb40:	afc2000c 	sw	v0,12(s8)
	ENCCYCLE (6);
  4cdb44:	8fc20008 	lw	v0,8(s8)
  4cdb48:	00000000 	nop
  4cdb4c:	304200ff 	andi	v0,v0,0xff
  4cdb50:	00021880 	sll	v1,v0,0x2
  4cdb54:	8fc20028 	lw	v0,40(s8)
  4cdb58:	00000000 	nop
  4cdb5c:	00432021 	addu	a0,v0,v1
  4cdb60:	8fc20008 	lw	v0,8(s8)
  4cdb64:	00000000 	nop
  4cdb68:	00021202 	srl	v0,v0,0x8
  4cdb6c:	304200ff 	andi	v0,v0,0xff
  4cdb70:	00021080 	sll	v0,v0,0x2
  4cdb74:	24430400 	addiu	v1,v0,1024
  4cdb78:	8fc20028 	lw	v0,40(s8)
  4cdb7c:	00000000 	nop
  4cdb80:	00431021 	addu	v0,v0,v1
  4cdb84:	8c830000 	lw	v1,0(a0)
  4cdb88:	8c420000 	lw	v0,0(v0)
  4cdb8c:	00000000 	nop
  4cdb90:	00622026 	xor	a0,v1,v0
  4cdb94:	8fc20008 	lw	v0,8(s8)
  4cdb98:	00000000 	nop
  4cdb9c:	00021402 	srl	v0,v0,0x10
  4cdba0:	304200ff 	andi	v0,v0,0xff
  4cdba4:	00021080 	sll	v0,v0,0x2
  4cdba8:	24430800 	addiu	v1,v0,2048
  4cdbac:	8fc20028 	lw	v0,40(s8)
  4cdbb0:	00000000 	nop
  4cdbb4:	00431021 	addu	v0,v0,v1
  4cdbb8:	8c420000 	lw	v0,0(v0)
  4cdbbc:	00000000 	nop
  4cdbc0:	00822026 	xor	a0,a0,v0
  4cdbc4:	8fc20008 	lw	v0,8(s8)
  4cdbc8:	00000000 	nop
  4cdbcc:	00021602 	srl	v0,v0,0x18
  4cdbd0:	00021080 	sll	v0,v0,0x2
  4cdbd4:	24430c00 	addiu	v1,v0,3072
  4cdbd8:	8fc20028 	lw	v0,40(s8)
  4cdbdc:	00000000 	nop
  4cdbe0:	00431021 	addu	v0,v0,v1
  4cdbe4:	8c420000 	lw	v0,0(v0)
  4cdbe8:	00000000 	nop
  4cdbec:	00821026 	xor	v0,a0,v0
  4cdbf0:	afc20018 	sw	v0,24(s8)
  4cdbf4:	8fc2000c 	lw	v0,12(s8)
  4cdbf8:	00000000 	nop
  4cdbfc:	304200ff 	andi	v0,v0,0xff
  4cdc00:	00021080 	sll	v0,v0,0x2
  4cdc04:	24430400 	addiu	v1,v0,1024
  4cdc08:	8fc20028 	lw	v0,40(s8)
  4cdc0c:	00000000 	nop
  4cdc10:	00432021 	addu	a0,v0,v1
  4cdc14:	8fc2000c 	lw	v0,12(s8)
  4cdc18:	00000000 	nop
  4cdc1c:	00021202 	srl	v0,v0,0x8
  4cdc20:	304200ff 	andi	v0,v0,0xff
  4cdc24:	00021080 	sll	v0,v0,0x2
  4cdc28:	24430800 	addiu	v1,v0,2048
  4cdc2c:	8fc20028 	lw	v0,40(s8)
  4cdc30:	00000000 	nop
  4cdc34:	00431021 	addu	v0,v0,v1
  4cdc38:	8c830000 	lw	v1,0(a0)
  4cdc3c:	8c420000 	lw	v0,0(v0)
  4cdc40:	00000000 	nop
  4cdc44:	00622026 	xor	a0,v1,v0
  4cdc48:	8fc2000c 	lw	v0,12(s8)
  4cdc4c:	00000000 	nop
  4cdc50:	00021402 	srl	v0,v0,0x10
  4cdc54:	304200ff 	andi	v0,v0,0xff
  4cdc58:	00021080 	sll	v0,v0,0x2
  4cdc5c:	24430c00 	addiu	v1,v0,3072
  4cdc60:	8fc20028 	lw	v0,40(s8)
  4cdc64:	00000000 	nop
  4cdc68:	00431021 	addu	v0,v0,v1
  4cdc6c:	8c420000 	lw	v0,0(v0)
  4cdc70:	00000000 	nop
  4cdc74:	00822026 	xor	a0,a0,v0
  4cdc78:	8fc2000c 	lw	v0,12(s8)
  4cdc7c:	00000000 	nop
  4cdc80:	00021602 	srl	v0,v0,0x18
  4cdc84:	00021880 	sll	v1,v0,0x2
  4cdc88:	8fc20028 	lw	v0,40(s8)
  4cdc8c:	00000000 	nop
  4cdc90:	00431021 	addu	v0,v0,v1
  4cdc94:	8c420000 	lw	v0,0(v0)
  4cdc98:	00000000 	nop
  4cdc9c:	00821026 	xor	v0,a0,v0
  4cdca0:	afc2001c 	sw	v0,28(s8)
  4cdca4:	8fc30018 	lw	v1,24(s8)
  4cdca8:	8fc2001c 	lw	v0,28(s8)
  4cdcac:	00000000 	nop
  4cdcb0:	00621021 	addu	v0,v1,v0
  4cdcb4:	afc20018 	sw	v0,24(s8)
  4cdcb8:	8fc20028 	lw	v0,40(s8)
  4cdcbc:	00000000 	nop
  4cdcc0:	8c431084 	lw	v1,4228(v0)
  4cdcc4:	8fc20018 	lw	v0,24(s8)
  4cdcc8:	00000000 	nop
  4cdccc:	00431821 	addu	v1,v0,v1
  4cdcd0:	8fc2001c 	lw	v0,28(s8)
  4cdcd4:	00000000 	nop
  4cdcd8:	00431021 	addu	v0,v0,v1
  4cdcdc:	afc2001c 	sw	v0,28(s8)
  4cdce0:	8fc20028 	lw	v0,40(s8)
  4cdce4:	00000000 	nop
  4cdce8:	8c431080 	lw	v1,4224(v0)
  4cdcec:	8fc20018 	lw	v0,24(s8)
  4cdcf0:	00000000 	nop
  4cdcf4:	00431821 	addu	v1,v0,v1
  4cdcf8:	8fc20010 	lw	v0,16(s8)
  4cdcfc:	00000000 	nop
  4cdd00:	00431026 	xor	v0,v0,v1
  4cdd04:	afc20010 	sw	v0,16(s8)
  4cdd08:	8fc20010 	lw	v0,16(s8)
  4cdd0c:	00000000 	nop
  4cdd10:	00021fc0 	sll	v1,v0,0x1f
  4cdd14:	00021042 	srl	v0,v0,0x1
  4cdd18:	00621025 	or	v0,v1,v0
  4cdd1c:	afc20010 	sw	v0,16(s8)
  4cdd20:	8fc20014 	lw	v0,20(s8)
  4cdd24:	00000000 	nop
  4cdd28:	00021840 	sll	v1,v0,0x1
  4cdd2c:	000217c2 	srl	v0,v0,0x1f
  4cdd30:	00621825 	or	v1,v1,v0
  4cdd34:	8fc2001c 	lw	v0,28(s8)
  4cdd38:	00000000 	nop
  4cdd3c:	00621026 	xor	v0,v1,v0
  4cdd40:	afc20014 	sw	v0,20(s8)
  4cdd44:	8fc20010 	lw	v0,16(s8)
  4cdd48:	00000000 	nop
  4cdd4c:	304200ff 	andi	v0,v0,0xff
  4cdd50:	00021880 	sll	v1,v0,0x2
  4cdd54:	8fc20028 	lw	v0,40(s8)
  4cdd58:	00000000 	nop
  4cdd5c:	00432021 	addu	a0,v0,v1
  4cdd60:	8fc20010 	lw	v0,16(s8)
  4cdd64:	00000000 	nop
  4cdd68:	00021202 	srl	v0,v0,0x8
  4cdd6c:	304200ff 	andi	v0,v0,0xff
  4cdd70:	00021080 	sll	v0,v0,0x2
  4cdd74:	24430400 	addiu	v1,v0,1024
  4cdd78:	8fc20028 	lw	v0,40(s8)
  4cdd7c:	00000000 	nop
  4cdd80:	00431021 	addu	v0,v0,v1
  4cdd84:	8c830000 	lw	v1,0(a0)
  4cdd88:	8c420000 	lw	v0,0(v0)
  4cdd8c:	00000000 	nop
  4cdd90:	00622026 	xor	a0,v1,v0
  4cdd94:	8fc20010 	lw	v0,16(s8)
  4cdd98:	00000000 	nop
  4cdd9c:	00021402 	srl	v0,v0,0x10
  4cdda0:	304200ff 	andi	v0,v0,0xff
  4cdda4:	00021080 	sll	v0,v0,0x2
  4cdda8:	24430800 	addiu	v1,v0,2048
  4cddac:	8fc20028 	lw	v0,40(s8)
  4cddb0:	00000000 	nop
  4cddb4:	00431021 	addu	v0,v0,v1
  4cddb8:	8c420000 	lw	v0,0(v0)
  4cddbc:	00000000 	nop
  4cddc0:	00822026 	xor	a0,a0,v0
  4cddc4:	8fc20010 	lw	v0,16(s8)
  4cddc8:	00000000 	nop
  4cddcc:	00021602 	srl	v0,v0,0x18
  4cddd0:	00021080 	sll	v0,v0,0x2
  4cddd4:	24430c00 	addiu	v1,v0,3072
  4cddd8:	8fc20028 	lw	v0,40(s8)
  4cdddc:	00000000 	nop
  4cdde0:	00431021 	addu	v0,v0,v1
  4cdde4:	8c420000 	lw	v0,0(v0)
  4cdde8:	00000000 	nop
  4cddec:	00821026 	xor	v0,a0,v0
  4cddf0:	afc20018 	sw	v0,24(s8)
  4cddf4:	8fc20014 	lw	v0,20(s8)
  4cddf8:	00000000 	nop
  4cddfc:	304200ff 	andi	v0,v0,0xff
  4cde00:	00021080 	sll	v0,v0,0x2
  4cde04:	24430400 	addiu	v1,v0,1024
  4cde08:	8fc20028 	lw	v0,40(s8)
  4cde0c:	00000000 	nop
  4cde10:	00432021 	addu	a0,v0,v1
  4cde14:	8fc20014 	lw	v0,20(s8)
  4cde18:	00000000 	nop
  4cde1c:	00021202 	srl	v0,v0,0x8
  4cde20:	304200ff 	andi	v0,v0,0xff
  4cde24:	00021080 	sll	v0,v0,0x2
  4cde28:	24430800 	addiu	v1,v0,2048
  4cde2c:	8fc20028 	lw	v0,40(s8)
  4cde30:	00000000 	nop
  4cde34:	00431021 	addu	v0,v0,v1
  4cde38:	8c830000 	lw	v1,0(a0)
  4cde3c:	8c420000 	lw	v0,0(v0)
  4cde40:	00000000 	nop
  4cde44:	00622026 	xor	a0,v1,v0
  4cde48:	8fc20014 	lw	v0,20(s8)
  4cde4c:	00000000 	nop
  4cde50:	00021402 	srl	v0,v0,0x10
  4cde54:	304200ff 	andi	v0,v0,0xff
  4cde58:	00021080 	sll	v0,v0,0x2
  4cde5c:	24430c00 	addiu	v1,v0,3072
  4cde60:	8fc20028 	lw	v0,40(s8)
  4cde64:	00000000 	nop
  4cde68:	00431021 	addu	v0,v0,v1
  4cde6c:	8c420000 	lw	v0,0(v0)
  4cde70:	00000000 	nop
  4cde74:	00822026 	xor	a0,a0,v0
  4cde78:	8fc20014 	lw	v0,20(s8)
  4cde7c:	00000000 	nop
  4cde80:	00021602 	srl	v0,v0,0x18
  4cde84:	00021880 	sll	v1,v0,0x2
  4cde88:	8fc20028 	lw	v0,40(s8)
  4cde8c:	00000000 	nop
  4cde90:	00431021 	addu	v0,v0,v1
  4cde94:	8c420000 	lw	v0,0(v0)
  4cde98:	00000000 	nop
  4cde9c:	00821026 	xor	v0,a0,v0
  4cdea0:	afc2001c 	sw	v0,28(s8)
  4cdea4:	8fc30018 	lw	v1,24(s8)
  4cdea8:	8fc2001c 	lw	v0,28(s8)
  4cdeac:	00000000 	nop
  4cdeb0:	00621021 	addu	v0,v1,v0
  4cdeb4:	afc20018 	sw	v0,24(s8)
  4cdeb8:	8fc20028 	lw	v0,40(s8)
  4cdebc:	00000000 	nop
  4cdec0:	8c43108c 	lw	v1,4236(v0)
  4cdec4:	8fc20018 	lw	v0,24(s8)
  4cdec8:	00000000 	nop
  4cdecc:	00431821 	addu	v1,v0,v1
  4cded0:	8fc2001c 	lw	v0,28(s8)
  4cded4:	00000000 	nop
  4cded8:	00431021 	addu	v0,v0,v1
  4cdedc:	afc2001c 	sw	v0,28(s8)
  4cdee0:	8fc20028 	lw	v0,40(s8)
  4cdee4:	00000000 	nop
  4cdee8:	8c431088 	lw	v1,4232(v0)
  4cdeec:	8fc20018 	lw	v0,24(s8)
  4cdef0:	00000000 	nop
  4cdef4:	00431821 	addu	v1,v0,v1
  4cdef8:	8fc20008 	lw	v0,8(s8)
  4cdefc:	00000000 	nop
  4cdf00:	00431026 	xor	v0,v0,v1
  4cdf04:	afc20008 	sw	v0,8(s8)
  4cdf08:	8fc20008 	lw	v0,8(s8)
  4cdf0c:	00000000 	nop
  4cdf10:	00021fc0 	sll	v1,v0,0x1f
  4cdf14:	00021042 	srl	v0,v0,0x1
  4cdf18:	00621025 	or	v0,v1,v0
  4cdf1c:	afc20008 	sw	v0,8(s8)
  4cdf20:	8fc2000c 	lw	v0,12(s8)
  4cdf24:	00000000 	nop
  4cdf28:	00021840 	sll	v1,v0,0x1
  4cdf2c:	000217c2 	srl	v0,v0,0x1f
  4cdf30:	00621825 	or	v1,v1,v0
  4cdf34:	8fc2001c 	lw	v0,28(s8)
  4cdf38:	00000000 	nop
  4cdf3c:	00621026 	xor	v0,v1,v0
  4cdf40:	afc2000c 	sw	v0,12(s8)
	ENCCYCLE (7);
  4cdf44:	8fc20008 	lw	v0,8(s8)
  4cdf48:	00000000 	nop
  4cdf4c:	304200ff 	andi	v0,v0,0xff
  4cdf50:	00021880 	sll	v1,v0,0x2
  4cdf54:	8fc20028 	lw	v0,40(s8)
  4cdf58:	00000000 	nop
  4cdf5c:	00432021 	addu	a0,v0,v1
  4cdf60:	8fc20008 	lw	v0,8(s8)
  4cdf64:	00000000 	nop
  4cdf68:	00021202 	srl	v0,v0,0x8
  4cdf6c:	304200ff 	andi	v0,v0,0xff
  4cdf70:	00021080 	sll	v0,v0,0x2
  4cdf74:	24430400 	addiu	v1,v0,1024
  4cdf78:	8fc20028 	lw	v0,40(s8)
  4cdf7c:	00000000 	nop
  4cdf80:	00431021 	addu	v0,v0,v1
  4cdf84:	8c830000 	lw	v1,0(a0)
  4cdf88:	8c420000 	lw	v0,0(v0)
  4cdf8c:	00000000 	nop
  4cdf90:	00622026 	xor	a0,v1,v0
  4cdf94:	8fc20008 	lw	v0,8(s8)
  4cdf98:	00000000 	nop
  4cdf9c:	00021402 	srl	v0,v0,0x10
  4cdfa0:	304200ff 	andi	v0,v0,0xff
  4cdfa4:	00021080 	sll	v0,v0,0x2
  4cdfa8:	24430800 	addiu	v1,v0,2048
  4cdfac:	8fc20028 	lw	v0,40(s8)
  4cdfb0:	00000000 	nop
  4cdfb4:	00431021 	addu	v0,v0,v1
  4cdfb8:	8c420000 	lw	v0,0(v0)
  4cdfbc:	00000000 	nop
  4cdfc0:	00822026 	xor	a0,a0,v0
  4cdfc4:	8fc20008 	lw	v0,8(s8)
  4cdfc8:	00000000 	nop
  4cdfcc:	00021602 	srl	v0,v0,0x18
  4cdfd0:	00021080 	sll	v0,v0,0x2
  4cdfd4:	24430c00 	addiu	v1,v0,3072
  4cdfd8:	8fc20028 	lw	v0,40(s8)
  4cdfdc:	00000000 	nop
  4cdfe0:	00431021 	addu	v0,v0,v1
  4cdfe4:	8c420000 	lw	v0,0(v0)
  4cdfe8:	00000000 	nop
  4cdfec:	00821026 	xor	v0,a0,v0
  4cdff0:	afc20018 	sw	v0,24(s8)
  4cdff4:	8fc2000c 	lw	v0,12(s8)
  4cdff8:	00000000 	nop
  4cdffc:	304200ff 	andi	v0,v0,0xff
  4ce000:	00021080 	sll	v0,v0,0x2
  4ce004:	24430400 	addiu	v1,v0,1024
  4ce008:	8fc20028 	lw	v0,40(s8)
  4ce00c:	00000000 	nop
  4ce010:	00432021 	addu	a0,v0,v1
  4ce014:	8fc2000c 	lw	v0,12(s8)
  4ce018:	00000000 	nop
  4ce01c:	00021202 	srl	v0,v0,0x8
  4ce020:	304200ff 	andi	v0,v0,0xff
  4ce024:	00021080 	sll	v0,v0,0x2
  4ce028:	24430800 	addiu	v1,v0,2048
  4ce02c:	8fc20028 	lw	v0,40(s8)
  4ce030:	00000000 	nop
  4ce034:	00431021 	addu	v0,v0,v1
  4ce038:	8c830000 	lw	v1,0(a0)
  4ce03c:	8c420000 	lw	v0,0(v0)
  4ce040:	00000000 	nop
  4ce044:	00622026 	xor	a0,v1,v0
  4ce048:	8fc2000c 	lw	v0,12(s8)
  4ce04c:	00000000 	nop
  4ce050:	00021402 	srl	v0,v0,0x10
  4ce054:	304200ff 	andi	v0,v0,0xff
  4ce058:	00021080 	sll	v0,v0,0x2
  4ce05c:	24430c00 	addiu	v1,v0,3072
  4ce060:	8fc20028 	lw	v0,40(s8)
  4ce064:	00000000 	nop
  4ce068:	00431021 	addu	v0,v0,v1
  4ce06c:	8c420000 	lw	v0,0(v0)
  4ce070:	00000000 	nop
  4ce074:	00822026 	xor	a0,a0,v0
  4ce078:	8fc2000c 	lw	v0,12(s8)
  4ce07c:	00000000 	nop
  4ce080:	00021602 	srl	v0,v0,0x18
  4ce084:	00021880 	sll	v1,v0,0x2
  4ce088:	8fc20028 	lw	v0,40(s8)
  4ce08c:	00000000 	nop
  4ce090:	00431021 	addu	v0,v0,v1
  4ce094:	8c420000 	lw	v0,0(v0)
  4ce098:	00000000 	nop
  4ce09c:	00821026 	xor	v0,a0,v0
  4ce0a0:	afc2001c 	sw	v0,28(s8)
  4ce0a4:	8fc30018 	lw	v1,24(s8)
  4ce0a8:	8fc2001c 	lw	v0,28(s8)
  4ce0ac:	00000000 	nop
  4ce0b0:	00621021 	addu	v0,v1,v0
  4ce0b4:	afc20018 	sw	v0,24(s8)
  4ce0b8:	8fc20028 	lw	v0,40(s8)
  4ce0bc:	00000000 	nop
  4ce0c0:	8c431094 	lw	v1,4244(v0)
  4ce0c4:	8fc20018 	lw	v0,24(s8)
  4ce0c8:	00000000 	nop
  4ce0cc:	00431821 	addu	v1,v0,v1
  4ce0d0:	8fc2001c 	lw	v0,28(s8)
  4ce0d4:	00000000 	nop
  4ce0d8:	00431021 	addu	v0,v0,v1
  4ce0dc:	afc2001c 	sw	v0,28(s8)
  4ce0e0:	8fc20028 	lw	v0,40(s8)
  4ce0e4:	00000000 	nop
  4ce0e8:	8c431090 	lw	v1,4240(v0)
  4ce0ec:	8fc20018 	lw	v0,24(s8)
  4ce0f0:	00000000 	nop
  4ce0f4:	00431821 	addu	v1,v0,v1
  4ce0f8:	8fc20010 	lw	v0,16(s8)
  4ce0fc:	00000000 	nop
  4ce100:	00431026 	xor	v0,v0,v1
  4ce104:	afc20010 	sw	v0,16(s8)
  4ce108:	8fc20010 	lw	v0,16(s8)
  4ce10c:	00000000 	nop
  4ce110:	00021fc0 	sll	v1,v0,0x1f
  4ce114:	00021042 	srl	v0,v0,0x1
  4ce118:	00621025 	or	v0,v1,v0
  4ce11c:	afc20010 	sw	v0,16(s8)
  4ce120:	8fc20014 	lw	v0,20(s8)
  4ce124:	00000000 	nop
  4ce128:	00021840 	sll	v1,v0,0x1
  4ce12c:	000217c2 	srl	v0,v0,0x1f
  4ce130:	00621825 	or	v1,v1,v0
  4ce134:	8fc2001c 	lw	v0,28(s8)
  4ce138:	00000000 	nop
  4ce13c:	00621026 	xor	v0,v1,v0
  4ce140:	afc20014 	sw	v0,20(s8)
  4ce144:	8fc20010 	lw	v0,16(s8)
  4ce148:	00000000 	nop
  4ce14c:	304200ff 	andi	v0,v0,0xff
  4ce150:	00021880 	sll	v1,v0,0x2
  4ce154:	8fc20028 	lw	v0,40(s8)
  4ce158:	00000000 	nop
  4ce15c:	00432021 	addu	a0,v0,v1
  4ce160:	8fc20010 	lw	v0,16(s8)
  4ce164:	00000000 	nop
  4ce168:	00021202 	srl	v0,v0,0x8
  4ce16c:	304200ff 	andi	v0,v0,0xff
  4ce170:	00021080 	sll	v0,v0,0x2
  4ce174:	24430400 	addiu	v1,v0,1024
  4ce178:	8fc20028 	lw	v0,40(s8)
  4ce17c:	00000000 	nop
  4ce180:	00431021 	addu	v0,v0,v1
  4ce184:	8c830000 	lw	v1,0(a0)
  4ce188:	8c420000 	lw	v0,0(v0)
  4ce18c:	00000000 	nop
  4ce190:	00622026 	xor	a0,v1,v0
  4ce194:	8fc20010 	lw	v0,16(s8)
  4ce198:	00000000 	nop
  4ce19c:	00021402 	srl	v0,v0,0x10
  4ce1a0:	304200ff 	andi	v0,v0,0xff
  4ce1a4:	00021080 	sll	v0,v0,0x2
  4ce1a8:	24430800 	addiu	v1,v0,2048
  4ce1ac:	8fc20028 	lw	v0,40(s8)
  4ce1b0:	00000000 	nop
  4ce1b4:	00431021 	addu	v0,v0,v1
  4ce1b8:	8c420000 	lw	v0,0(v0)
  4ce1bc:	00000000 	nop
  4ce1c0:	00822026 	xor	a0,a0,v0
  4ce1c4:	8fc20010 	lw	v0,16(s8)
  4ce1c8:	00000000 	nop
  4ce1cc:	00021602 	srl	v0,v0,0x18
  4ce1d0:	00021080 	sll	v0,v0,0x2
  4ce1d4:	24430c00 	addiu	v1,v0,3072
  4ce1d8:	8fc20028 	lw	v0,40(s8)
  4ce1dc:	00000000 	nop
  4ce1e0:	00431021 	addu	v0,v0,v1
  4ce1e4:	8c420000 	lw	v0,0(v0)
  4ce1e8:	00000000 	nop
  4ce1ec:	00821026 	xor	v0,a0,v0
  4ce1f0:	afc20018 	sw	v0,24(s8)
  4ce1f4:	8fc20014 	lw	v0,20(s8)
  4ce1f8:	00000000 	nop
  4ce1fc:	304200ff 	andi	v0,v0,0xff
  4ce200:	00021080 	sll	v0,v0,0x2
  4ce204:	24430400 	addiu	v1,v0,1024
  4ce208:	8fc20028 	lw	v0,40(s8)
  4ce20c:	00000000 	nop
  4ce210:	00432021 	addu	a0,v0,v1
  4ce214:	8fc20014 	lw	v0,20(s8)
  4ce218:	00000000 	nop
  4ce21c:	00021202 	srl	v0,v0,0x8
  4ce220:	304200ff 	andi	v0,v0,0xff
  4ce224:	00021080 	sll	v0,v0,0x2
  4ce228:	24430800 	addiu	v1,v0,2048
  4ce22c:	8fc20028 	lw	v0,40(s8)
  4ce230:	00000000 	nop
  4ce234:	00431021 	addu	v0,v0,v1
  4ce238:	8c830000 	lw	v1,0(a0)
  4ce23c:	8c420000 	lw	v0,0(v0)
  4ce240:	00000000 	nop
  4ce244:	00622026 	xor	a0,v1,v0
  4ce248:	8fc20014 	lw	v0,20(s8)
  4ce24c:	00000000 	nop
  4ce250:	00021402 	srl	v0,v0,0x10
  4ce254:	304200ff 	andi	v0,v0,0xff
  4ce258:	00021080 	sll	v0,v0,0x2
  4ce25c:	24430c00 	addiu	v1,v0,3072
  4ce260:	8fc20028 	lw	v0,40(s8)
  4ce264:	00000000 	nop
  4ce268:	00431021 	addu	v0,v0,v1
  4ce26c:	8c420000 	lw	v0,0(v0)
  4ce270:	00000000 	nop
  4ce274:	00822026 	xor	a0,a0,v0
  4ce278:	8fc20014 	lw	v0,20(s8)
  4ce27c:	00000000 	nop
  4ce280:	00021602 	srl	v0,v0,0x18
  4ce284:	00021880 	sll	v1,v0,0x2
  4ce288:	8fc20028 	lw	v0,40(s8)
  4ce28c:	00000000 	nop
  4ce290:	00431021 	addu	v0,v0,v1
  4ce294:	8c420000 	lw	v0,0(v0)
  4ce298:	00000000 	nop
  4ce29c:	00821026 	xor	v0,a0,v0
  4ce2a0:	afc2001c 	sw	v0,28(s8)
  4ce2a4:	8fc30018 	lw	v1,24(s8)
  4ce2a8:	8fc2001c 	lw	v0,28(s8)
  4ce2ac:	00000000 	nop
  4ce2b0:	00621021 	addu	v0,v1,v0
  4ce2b4:	afc20018 	sw	v0,24(s8)
  4ce2b8:	8fc20028 	lw	v0,40(s8)
  4ce2bc:	00000000 	nop
  4ce2c0:	8c43109c 	lw	v1,4252(v0)
  4ce2c4:	8fc20018 	lw	v0,24(s8)
  4ce2c8:	00000000 	nop
  4ce2cc:	00431821 	addu	v1,v0,v1
  4ce2d0:	8fc2001c 	lw	v0,28(s8)
  4ce2d4:	00000000 	nop
  4ce2d8:	00431021 	addu	v0,v0,v1
  4ce2dc:	afc2001c 	sw	v0,28(s8)
  4ce2e0:	8fc20028 	lw	v0,40(s8)
  4ce2e4:	00000000 	nop
  4ce2e8:	8c431098 	lw	v1,4248(v0)
  4ce2ec:	8fc20018 	lw	v0,24(s8)
  4ce2f0:	00000000 	nop
  4ce2f4:	00431821 	addu	v1,v0,v1
  4ce2f8:	8fc20008 	lw	v0,8(s8)
  4ce2fc:	00000000 	nop
  4ce300:	00431026 	xor	v0,v0,v1
  4ce304:	afc20008 	sw	v0,8(s8)
  4ce308:	8fc20008 	lw	v0,8(s8)
  4ce30c:	00000000 	nop
  4ce310:	00021fc0 	sll	v1,v0,0x1f
  4ce314:	00021042 	srl	v0,v0,0x1
  4ce318:	00621025 	or	v0,v1,v0
  4ce31c:	afc20008 	sw	v0,8(s8)
  4ce320:	8fc2000c 	lw	v0,12(s8)
  4ce324:	00000000 	nop
  4ce328:	00021840 	sll	v1,v0,0x1
  4ce32c:	000217c2 	srl	v0,v0,0x1f
  4ce330:	00621825 	or	v1,v1,v0
  4ce334:	8fc2001c 	lw	v0,28(s8)
  4ce338:	00000000 	nop
  4ce33c:	00621026 	xor	v0,v1,v0
  4ce340:	afc2000c 	sw	v0,12(s8)
	
	/* Output whitening and unpacking. */
	OUTUNPACK (0, c, 4);
  4ce344:	8fc20028 	lw	v0,40(s8)
  4ce348:	00000000 	nop
  4ce34c:	8c431010 	lw	v1,4112(v0)
  4ce350:	8fc20010 	lw	v0,16(s8)
  4ce354:	00000000 	nop
  4ce358:	00431026 	xor	v0,v0,v1
  4ce35c:	afc20010 	sw	v0,16(s8)
  4ce360:	93c30013 	lbu	v1,19(s8)
  4ce364:	8fc20030 	lw	v0,48(s8)
  4ce368:	00000000 	nop
  4ce36c:	a0430000 	sb	v1,0(v0)
  4ce370:	8fc20030 	lw	v0,48(s8)
  4ce374:	00000000 	nop
  4ce378:	24430001 	addiu	v1,v0,1
  4ce37c:	8fc20010 	lw	v0,16(s8)
  4ce380:	00000000 	nop
  4ce384:	00021202 	srl	v0,v0,0x8
  4ce388:	a0620000 	sb	v0,0(v1)
  4ce38c:	8fc20030 	lw	v0,48(s8)
  4ce390:	00000000 	nop
  4ce394:	24430002 	addiu	v1,v0,2
  4ce398:	8fc20010 	lw	v0,16(s8)
  4ce39c:	00000000 	nop
  4ce3a0:	00021402 	srl	v0,v0,0x10
  4ce3a4:	a0620000 	sb	v0,0(v1)
  4ce3a8:	8fc20030 	lw	v0,48(s8)
  4ce3ac:	00000000 	nop
  4ce3b0:	24430003 	addiu	v1,v0,3
  4ce3b4:	8fc20010 	lw	v0,16(s8)
  4ce3b8:	00000000 	nop
  4ce3bc:	00021602 	srl	v0,v0,0x18
  4ce3c0:	a0620000 	sb	v0,0(v1)
	OUTUNPACK (1, d, 5);
  4ce3c4:	8fc20028 	lw	v0,40(s8)
  4ce3c8:	00000000 	nop
  4ce3cc:	8c431014 	lw	v1,4116(v0)
  4ce3d0:	8fc20014 	lw	v0,20(s8)
  4ce3d4:	00000000 	nop
  4ce3d8:	00431026 	xor	v0,v0,v1
  4ce3dc:	afc20014 	sw	v0,20(s8)
  4ce3e0:	8fc20030 	lw	v0,48(s8)
  4ce3e4:	00000000 	nop
  4ce3e8:	24430004 	addiu	v1,v0,4
  4ce3ec:	93c20017 	lbu	v0,23(s8)
  4ce3f0:	00000000 	nop
  4ce3f4:	a0620000 	sb	v0,0(v1)
  4ce3f8:	8fc20030 	lw	v0,48(s8)
  4ce3fc:	00000000 	nop
  4ce400:	24430005 	addiu	v1,v0,5
  4ce404:	8fc20014 	lw	v0,20(s8)
  4ce408:	00000000 	nop
  4ce40c:	00021202 	srl	v0,v0,0x8
  4ce410:	a0620000 	sb	v0,0(v1)
  4ce414:	8fc20030 	lw	v0,48(s8)
  4ce418:	00000000 	nop
  4ce41c:	24430006 	addiu	v1,v0,6
  4ce420:	8fc20014 	lw	v0,20(s8)
  4ce424:	00000000 	nop
  4ce428:	00021402 	srl	v0,v0,0x10
  4ce42c:	a0620000 	sb	v0,0(v1)
  4ce430:	8fc20030 	lw	v0,48(s8)
  4ce434:	00000000 	nop
  4ce438:	24430007 	addiu	v1,v0,7
  4ce43c:	8fc20014 	lw	v0,20(s8)
  4ce440:	00000000 	nop
  4ce444:	00021602 	srl	v0,v0,0x18
  4ce448:	a0620000 	sb	v0,0(v1)
	OUTUNPACK (2, a, 6);
  4ce44c:	8fc20028 	lw	v0,40(s8)
  4ce450:	00000000 	nop
  4ce454:	8c431018 	lw	v1,4120(v0)
  4ce458:	8fc20008 	lw	v0,8(s8)
  4ce45c:	00000000 	nop
  4ce460:	00431026 	xor	v0,v0,v1
  4ce464:	afc20008 	sw	v0,8(s8)
  4ce468:	8fc20030 	lw	v0,48(s8)
  4ce46c:	00000000 	nop
  4ce470:	24430008 	addiu	v1,v0,8
  4ce474:	93c2000b 	lbu	v0,11(s8)
  4ce478:	00000000 	nop
  4ce47c:	a0620000 	sb	v0,0(v1)
  4ce480:	8fc20030 	lw	v0,48(s8)
  4ce484:	00000000 	nop
  4ce488:	24430009 	addiu	v1,v0,9
  4ce48c:	8fc20008 	lw	v0,8(s8)
  4ce490:	00000000 	nop
  4ce494:	00021202 	srl	v0,v0,0x8
  4ce498:	a0620000 	sb	v0,0(v1)
  4ce49c:	8fc20030 	lw	v0,48(s8)
  4ce4a0:	00000000 	nop
  4ce4a4:	2443000a 	addiu	v1,v0,10
  4ce4a8:	8fc20008 	lw	v0,8(s8)
  4ce4ac:	00000000 	nop
  4ce4b0:	00021402 	srl	v0,v0,0x10
  4ce4b4:	a0620000 	sb	v0,0(v1)
  4ce4b8:	8fc20030 	lw	v0,48(s8)
  4ce4bc:	00000000 	nop
  4ce4c0:	2443000b 	addiu	v1,v0,11
  4ce4c4:	8fc20008 	lw	v0,8(s8)
  4ce4c8:	00000000 	nop
  4ce4cc:	00021602 	srl	v0,v0,0x18
  4ce4d0:	a0620000 	sb	v0,0(v1)
	OUTUNPACK (3, b, 7);
  4ce4d4:	8fc20028 	lw	v0,40(s8)
  4ce4d8:	00000000 	nop
  4ce4dc:	8c43101c 	lw	v1,4124(v0)
  4ce4e0:	8fc2000c 	lw	v0,12(s8)
  4ce4e4:	00000000 	nop
  4ce4e8:	00431026 	xor	v0,v0,v1
  4ce4ec:	afc2000c 	sw	v0,12(s8)
  4ce4f0:	8fc20030 	lw	v0,48(s8)
  4ce4f4:	00000000 	nop
  4ce4f8:	2443000c 	addiu	v1,v0,12
  4ce4fc:	93c2000f 	lbu	v0,15(s8)
  4ce500:	00000000 	nop
  4ce504:	a0620000 	sb	v0,0(v1)
  4ce508:	8fc20030 	lw	v0,48(s8)
  4ce50c:	00000000 	nop
  4ce510:	2443000d 	addiu	v1,v0,13
  4ce514:	8fc2000c 	lw	v0,12(s8)
  4ce518:	00000000 	nop
  4ce51c:	00021202 	srl	v0,v0,0x8
  4ce520:	a0620000 	sb	v0,0(v1)
  4ce524:	8fc20030 	lw	v0,48(s8)
  4ce528:	00000000 	nop
  4ce52c:	2443000e 	addiu	v1,v0,14
  4ce530:	8fc2000c 	lw	v0,12(s8)
  4ce534:	00000000 	nop
  4ce538:	00021402 	srl	v0,v0,0x10
  4ce53c:	a0620000 	sb	v0,0(v1)
  4ce540:	8fc20030 	lw	v0,48(s8)
  4ce544:	00000000 	nop
  4ce548:	2443000f 	addiu	v1,v0,15
  4ce54c:	8fc2000c 	lw	v0,12(s8)
  4ce550:	00000000 	nop
  4ce554:	00021602 	srl	v0,v0,0x18
  4ce558:	a0620000 	sb	v0,0(v1)
	
	return 0;
  4ce55c:	00001021 	move	v0,zero
}
  4ce560:	03c0e821 	move	sp,s8
  4ce564:	8fbe0024 	lw	s8,36(sp)
  4ce568:	27bd0028 	addiu	sp,sp,40
  4ce56c:	03e00008 	jr	ra
  4ce570:	00000000 	nop

004ce574 <twofish_decrypt>:
  4ce574:	3c1c0fb4 	lui	gp,0xfb4
  4ce578:	279ce3fc 	addiu	gp,gp,-7172
  4ce57c:	0399e021 	addu	gp,gp,t9
  4ce580:	27bdffd8 	addiu	sp,sp,-40
  4ce584:	afbc0000 	sw	gp,0(sp)
  4ce588:	afbe0024 	sw	s8,36(sp)
  4ce58c:	afbc0020 	sw	gp,32(sp)
  4ce590:	03a0f021 	move	s8,sp
  4ce594:	afc40028 	sw	a0,40(s8)
  4ce598:	afc5002c 	sw	a1,44(s8)
  4ce59c:	afc60030 	sw	a2,48(s8)

/* Decrypt one block.  in and out may be the same. */

int twofish_decrypt (TWOFISH_context *ctx,
			    const u8 *in, u8 *out)
{
	/* The four 32-bit chunks of the text. */
	u32 a, b, c, d;
	
	/* Temporaries used by the round function. */
	u32 x, y;
	
	/* Input whitening and packing. */
	INPACK (0, c, 4);
  4ce5a0:	8fc2002c 	lw	v0,44(s8)
  4ce5a4:	00000000 	nop
  4ce5a8:	90430000 	lbu	v1,0(v0)
  4ce5ac:	8fc2002c 	lw	v0,44(s8)
  4ce5b0:	00000000 	nop
  4ce5b4:	24420001 	addiu	v0,v0,1
  4ce5b8:	90420000 	lbu	v0,0(v0)
  4ce5bc:	00000000 	nop
  4ce5c0:	00021200 	sll	v0,v0,0x8
  4ce5c4:	00621826 	xor	v1,v1,v0
  4ce5c8:	8fc2002c 	lw	v0,44(s8)
  4ce5cc:	00000000 	nop
  4ce5d0:	24420002 	addiu	v0,v0,2
  4ce5d4:	90420000 	lbu	v0,0(v0)
  4ce5d8:	00000000 	nop
  4ce5dc:	00021400 	sll	v0,v0,0x10
  4ce5e0:	00621826 	xor	v1,v1,v0
  4ce5e4:	8fc2002c 	lw	v0,44(s8)
  4ce5e8:	00000000 	nop
  4ce5ec:	24420003 	addiu	v0,v0,3
  4ce5f0:	90420000 	lbu	v0,0(v0)
  4ce5f4:	00000000 	nop
  4ce5f8:	00021600 	sll	v0,v0,0x18
  4ce5fc:	00621826 	xor	v1,v1,v0
  4ce600:	8fc20028 	lw	v0,40(s8)
  4ce604:	00000000 	nop
  4ce608:	8c421010 	lw	v0,4112(v0)
  4ce60c:	00000000 	nop
  4ce610:	00621026 	xor	v0,v1,v0
  4ce614:	afc20010 	sw	v0,16(s8)
	INPACK (1, d, 5);
  4ce618:	8fc2002c 	lw	v0,44(s8)
  4ce61c:	00000000 	nop
  4ce620:	24420004 	addiu	v0,v0,4
  4ce624:	90430000 	lbu	v1,0(v0)
  4ce628:	8fc2002c 	lw	v0,44(s8)
  4ce62c:	00000000 	nop
  4ce630:	24420005 	addiu	v0,v0,5
  4ce634:	90420000 	lbu	v0,0(v0)
  4ce638:	00000000 	nop
  4ce63c:	00021200 	sll	v0,v0,0x8
  4ce640:	00621826 	xor	v1,v1,v0
  4ce644:	8fc2002c 	lw	v0,44(s8)
  4ce648:	00000000 	nop
  4ce64c:	24420006 	addiu	v0,v0,6
  4ce650:	90420000 	lbu	v0,0(v0)
  4ce654:	00000000 	nop
  4ce658:	00021400 	sll	v0,v0,0x10
  4ce65c:	00621826 	xor	v1,v1,v0
  4ce660:	8fc2002c 	lw	v0,44(s8)
  4ce664:	00000000 	nop
  4ce668:	24420007 	addiu	v0,v0,7
  4ce66c:	90420000 	lbu	v0,0(v0)
  4ce670:	00000000 	nop
  4ce674:	00021600 	sll	v0,v0,0x18
  4ce678:	00621826 	xor	v1,v1,v0
  4ce67c:	8fc20028 	lw	v0,40(s8)
  4ce680:	00000000 	nop
  4ce684:	8c421014 	lw	v0,4116(v0)
  4ce688:	00000000 	nop
  4ce68c:	00621026 	xor	v0,v1,v0
  4ce690:	afc20014 	sw	v0,20(s8)
	INPACK (2, a, 6);
  4ce694:	8fc2002c 	lw	v0,44(s8)
  4ce698:	00000000 	nop
  4ce69c:	24420008 	addiu	v0,v0,8
  4ce6a0:	90430000 	lbu	v1,0(v0)
  4ce6a4:	8fc2002c 	lw	v0,44(s8)
  4ce6a8:	00000000 	nop
  4ce6ac:	24420009 	addiu	v0,v0,9
  4ce6b0:	90420000 	lbu	v0,0(v0)
  4ce6b4:	00000000 	nop
  4ce6b8:	00021200 	sll	v0,v0,0x8
  4ce6bc:	00621826 	xor	v1,v1,v0
  4ce6c0:	8fc2002c 	lw	v0,44(s8)
  4ce6c4:	00000000 	nop
  4ce6c8:	2442000a 	addiu	v0,v0,10
  4ce6cc:	90420000 	lbu	v0,0(v0)
  4ce6d0:	00000000 	nop
  4ce6d4:	00021400 	sll	v0,v0,0x10
  4ce6d8:	00621826 	xor	v1,v1,v0
  4ce6dc:	8fc2002c 	lw	v0,44(s8)
  4ce6e0:	00000000 	nop
  4ce6e4:	2442000b 	addiu	v0,v0,11
  4ce6e8:	90420000 	lbu	v0,0(v0)
  4ce6ec:	00000000 	nop
  4ce6f0:	00021600 	sll	v0,v0,0x18
  4ce6f4:	00621826 	xor	v1,v1,v0
  4ce6f8:	8fc20028 	lw	v0,40(s8)
  4ce6fc:	00000000 	nop
  4ce700:	8c421018 	lw	v0,4120(v0)
  4ce704:	00000000 	nop
  4ce708:	00621026 	xor	v0,v1,v0
  4ce70c:	afc20008 	sw	v0,8(s8)
	INPACK (3, b, 7);
  4ce710:	8fc2002c 	lw	v0,44(s8)
  4ce714:	00000000 	nop
  4ce718:	2442000c 	addiu	v0,v0,12
  4ce71c:	90430000 	lbu	v1,0(v0)
  4ce720:	8fc2002c 	lw	v0,44(s8)
  4ce724:	00000000 	nop
  4ce728:	2442000d 	addiu	v0,v0,13
  4ce72c:	90420000 	lbu	v0,0(v0)
  4ce730:	00000000 	nop
  4ce734:	00021200 	sll	v0,v0,0x8
  4ce738:	00621826 	xor	v1,v1,v0
  4ce73c:	8fc2002c 	lw	v0,44(s8)
  4ce740:	00000000 	nop
  4ce744:	2442000e 	addiu	v0,v0,14
  4ce748:	90420000 	lbu	v0,0(v0)
  4ce74c:	00000000 	nop
  4ce750:	00021400 	sll	v0,v0,0x10
  4ce754:	00621826 	xor	v1,v1,v0
  4ce758:	8fc2002c 	lw	v0,44(s8)
  4ce75c:	00000000 	nop
  4ce760:	2442000f 	addiu	v0,v0,15
  4ce764:	90420000 	lbu	v0,0(v0)
  4ce768:	00000000 	nop
  4ce76c:	00021600 	sll	v0,v0,0x18
  4ce770:	00621826 	xor	v1,v1,v0
  4ce774:	8fc20028 	lw	v0,40(s8)
  4ce778:	00000000 	nop
  4ce77c:	8c42101c 	lw	v0,4124(v0)
  4ce780:	00000000 	nop
  4ce784:	00621026 	xor	v0,v1,v0
  4ce788:	afc2000c 	sw	v0,12(s8)
	
	/* Encryption Feistel cycles. */
	DECCYCLE (7);
  4ce78c:	8fc20010 	lw	v0,16(s8)
  4ce790:	00000000 	nop
  4ce794:	304200ff 	andi	v0,v0,0xff
  4ce798:	00021880 	sll	v1,v0,0x2
  4ce79c:	8fc20028 	lw	v0,40(s8)
  4ce7a0:	00000000 	nop
  4ce7a4:	00432021 	addu	a0,v0,v1
  4ce7a8:	8fc20010 	lw	v0,16(s8)
  4ce7ac:	00000000 	nop
  4ce7b0:	00021202 	srl	v0,v0,0x8
  4ce7b4:	304200ff 	andi	v0,v0,0xff
  4ce7b8:	00021080 	sll	v0,v0,0x2
  4ce7bc:	24430400 	addiu	v1,v0,1024
  4ce7c0:	8fc20028 	lw	v0,40(s8)
  4ce7c4:	00000000 	nop
  4ce7c8:	00431021 	addu	v0,v0,v1
  4ce7cc:	8c830000 	lw	v1,0(a0)
  4ce7d0:	8c420000 	lw	v0,0(v0)
  4ce7d4:	00000000 	nop
  4ce7d8:	00622026 	xor	a0,v1,v0
  4ce7dc:	8fc20010 	lw	v0,16(s8)
  4ce7e0:	00000000 	nop
  4ce7e4:	00021402 	srl	v0,v0,0x10
  4ce7e8:	304200ff 	andi	v0,v0,0xff
  4ce7ec:	00021080 	sll	v0,v0,0x2
  4ce7f0:	24430800 	addiu	v1,v0,2048
  4ce7f4:	8fc20028 	lw	v0,40(s8)
  4ce7f8:	00000000 	nop
  4ce7fc:	00431021 	addu	v0,v0,v1
  4ce800:	8c420000 	lw	v0,0(v0)
  4ce804:	00000000 	nop
  4ce808:	00822026 	xor	a0,a0,v0
  4ce80c:	8fc20010 	lw	v0,16(s8)
  4ce810:	00000000 	nop
  4ce814:	00021602 	srl	v0,v0,0x18
  4ce818:	00021080 	sll	v0,v0,0x2
  4ce81c:	24430c00 	addiu	v1,v0,3072
  4ce820:	8fc20028 	lw	v0,40(s8)
  4ce824:	00000000 	nop
  4ce828:	00431021 	addu	v0,v0,v1
  4ce82c:	8c420000 	lw	v0,0(v0)
  4ce830:	00000000 	nop
  4ce834:	00821026 	xor	v0,a0,v0
  4ce838:	afc20018 	sw	v0,24(s8)
  4ce83c:	8fc20014 	lw	v0,20(s8)
  4ce840:	00000000 	nop
  4ce844:	304200ff 	andi	v0,v0,0xff
  4ce848:	00021080 	sll	v0,v0,0x2
  4ce84c:	24430400 	addiu	v1,v0,1024
  4ce850:	8fc20028 	lw	v0,40(s8)
  4ce854:	00000000 	nop
  4ce858:	00432021 	addu	a0,v0,v1
  4ce85c:	8fc20014 	lw	v0,20(s8)
  4ce860:	00000000 	nop
  4ce864:	00021202 	srl	v0,v0,0x8
  4ce868:	304200ff 	andi	v0,v0,0xff
  4ce86c:	00021080 	sll	v0,v0,0x2
  4ce870:	24430800 	addiu	v1,v0,2048
  4ce874:	8fc20028 	lw	v0,40(s8)
  4ce878:	00000000 	nop
  4ce87c:	00431021 	addu	v0,v0,v1
  4ce880:	8c830000 	lw	v1,0(a0)
  4ce884:	8c420000 	lw	v0,0(v0)
  4ce888:	00000000 	nop
  4ce88c:	00622026 	xor	a0,v1,v0
  4ce890:	8fc20014 	lw	v0,20(s8)
  4ce894:	00000000 	nop
  4ce898:	00021402 	srl	v0,v0,0x10
  4ce89c:	304200ff 	andi	v0,v0,0xff
  4ce8a0:	00021080 	sll	v0,v0,0x2
  4ce8a4:	24430c00 	addiu	v1,v0,3072
  4ce8a8:	8fc20028 	lw	v0,40(s8)
  4ce8ac:	00000000 	nop
  4ce8b0:	00431021 	addu	v0,v0,v1
  4ce8b4:	8c420000 	lw	v0,0(v0)
  4ce8b8:	00000000 	nop
  4ce8bc:	00822026 	xor	a0,a0,v0
  4ce8c0:	8fc20014 	lw	v0,20(s8)
  4ce8c4:	00000000 	nop
  4ce8c8:	00021602 	srl	v0,v0,0x18
  4ce8cc:	00021880 	sll	v1,v0,0x2
  4ce8d0:	8fc20028 	lw	v0,40(s8)
  4ce8d4:	00000000 	nop
  4ce8d8:	00431021 	addu	v0,v0,v1
  4ce8dc:	8c420000 	lw	v0,0(v0)
  4ce8e0:	00000000 	nop
  4ce8e4:	00821026 	xor	v0,a0,v0
  4ce8e8:	afc2001c 	sw	v0,28(s8)
  4ce8ec:	8fc30018 	lw	v1,24(s8)
  4ce8f0:	8fc2001c 	lw	v0,28(s8)
  4ce8f4:	00000000 	nop
  4ce8f8:	00621021 	addu	v0,v1,v0
  4ce8fc:	afc20018 	sw	v0,24(s8)
  4ce900:	8fc3001c 	lw	v1,28(s8)
  4ce904:	8fc20018 	lw	v0,24(s8)
  4ce908:	00000000 	nop
  4ce90c:	00621021 	addu	v0,v1,v0
  4ce910:	afc2001c 	sw	v0,28(s8)
  4ce914:	8fc20028 	lw	v0,40(s8)
  4ce918:	00000000 	nop
  4ce91c:	8c43109c 	lw	v1,4252(v0)
  4ce920:	8fc2001c 	lw	v0,28(s8)
  4ce924:	00000000 	nop
  4ce928:	00431821 	addu	v1,v0,v1
  4ce92c:	8fc2000c 	lw	v0,12(s8)
  4ce930:	00000000 	nop
  4ce934:	00431026 	xor	v0,v0,v1
  4ce938:	afc2000c 	sw	v0,12(s8)
  4ce93c:	8fc2000c 	lw	v0,12(s8)
  4ce940:	00000000 	nop
  4ce944:	00021fc0 	sll	v1,v0,0x1f
  4ce948:	00021042 	srl	v0,v0,0x1
  4ce94c:	00621025 	or	v0,v1,v0
  4ce950:	afc2000c 	sw	v0,12(s8)
  4ce954:	8fc20008 	lw	v0,8(s8)
  4ce958:	00000000 	nop
  4ce95c:	00021840 	sll	v1,v0,0x1
  4ce960:	000217c2 	srl	v0,v0,0x1f
  4ce964:	00621025 	or	v0,v1,v0
  4ce968:	afc20008 	sw	v0,8(s8)
  4ce96c:	8fc20028 	lw	v0,40(s8)
  4ce970:	00000000 	nop
  4ce974:	8c431098 	lw	v1,4248(v0)
  4ce978:	8fc20018 	lw	v0,24(s8)
  4ce97c:	00000000 	nop
  4ce980:	00431821 	addu	v1,v0,v1
  4ce984:	8fc20008 	lw	v0,8(s8)
  4ce988:	00000000 	nop
  4ce98c:	00431026 	xor	v0,v0,v1
  4ce990:	afc20008 	sw	v0,8(s8)
  4ce994:	8fc20008 	lw	v0,8(s8)
  4ce998:	00000000 	nop
  4ce99c:	304200ff 	andi	v0,v0,0xff
  4ce9a0:	00021880 	sll	v1,v0,0x2
  4ce9a4:	8fc20028 	lw	v0,40(s8)
  4ce9a8:	00000000 	nop
  4ce9ac:	00432021 	addu	a0,v0,v1
  4ce9b0:	8fc20008 	lw	v0,8(s8)
  4ce9b4:	00000000 	nop
  4ce9b8:	00021202 	srl	v0,v0,0x8
  4ce9bc:	304200ff 	andi	v0,v0,0xff
  4ce9c0:	00021080 	sll	v0,v0,0x2
  4ce9c4:	24430400 	addiu	v1,v0,1024
  4ce9c8:	8fc20028 	lw	v0,40(s8)
  4ce9cc:	00000000 	nop
  4ce9d0:	00431021 	addu	v0,v0,v1
  4ce9d4:	8c830000 	lw	v1,0(a0)
  4ce9d8:	8c420000 	lw	v0,0(v0)
  4ce9dc:	00000000 	nop
  4ce9e0:	00622026 	xor	a0,v1,v0
  4ce9e4:	8fc20008 	lw	v0,8(s8)
  4ce9e8:	00000000 	nop
  4ce9ec:	00021402 	srl	v0,v0,0x10
  4ce9f0:	304200ff 	andi	v0,v0,0xff
  4ce9f4:	00021080 	sll	v0,v0,0x2
  4ce9f8:	24430800 	addiu	v1,v0,2048
  4ce9fc:	8fc20028 	lw	v0,40(s8)
  4cea00:	00000000 	nop
  4cea04:	00431021 	addu	v0,v0,v1
  4cea08:	8c420000 	lw	v0,0(v0)
  4cea0c:	00000000 	nop
  4cea10:	00822026 	xor	a0,a0,v0
  4cea14:	8fc20008 	lw	v0,8(s8)
  4cea18:	00000000 	nop
  4cea1c:	00021602 	srl	v0,v0,0x18
  4cea20:	00021080 	sll	v0,v0,0x2
  4cea24:	24430c00 	addiu	v1,v0,3072
  4cea28:	8fc20028 	lw	v0,40(s8)
  4cea2c:	00000000 	nop
  4cea30:	00431021 	addu	v0,v0,v1
  4cea34:	8c420000 	lw	v0,0(v0)
  4cea38:	00000000 	nop
  4cea3c:	00821026 	xor	v0,a0,v0
  4cea40:	afc20018 	sw	v0,24(s8)
  4cea44:	8fc2000c 	lw	v0,12(s8)
  4cea48:	00000000 	nop
  4cea4c:	304200ff 	andi	v0,v0,0xff
  4cea50:	00021080 	sll	v0,v0,0x2
  4cea54:	24430400 	addiu	v1,v0,1024
  4cea58:	8fc20028 	lw	v0,40(s8)
  4cea5c:	00000000 	nop
  4cea60:	00432021 	addu	a0,v0,v1
  4cea64:	8fc2000c 	lw	v0,12(s8)
  4cea68:	00000000 	nop
  4cea6c:	00021202 	srl	v0,v0,0x8
  4cea70:	304200ff 	andi	v0,v0,0xff
  4cea74:	00021080 	sll	v0,v0,0x2
  4cea78:	24430800 	addiu	v1,v0,2048
  4cea7c:	8fc20028 	lw	v0,40(s8)
  4cea80:	00000000 	nop
  4cea84:	00431021 	addu	v0,v0,v1
  4cea88:	8c830000 	lw	v1,0(a0)
  4cea8c:	8c420000 	lw	v0,0(v0)
  4cea90:	00000000 	nop
  4cea94:	00622026 	xor	a0,v1,v0
  4cea98:	8fc2000c 	lw	v0,12(s8)
  4cea9c:	00000000 	nop
  4ceaa0:	00021402 	srl	v0,v0,0x10
  4ceaa4:	304200ff 	andi	v0,v0,0xff
  4ceaa8:	00021080 	sll	v0,v0,0x2
  4ceaac:	24430c00 	addiu	v1,v0,3072
  4ceab0:	8fc20028 	lw	v0,40(s8)
  4ceab4:	00000000 	nop
  4ceab8:	00431021 	addu	v0,v0,v1
  4ceabc:	8c420000 	lw	v0,0(v0)
  4ceac0:	00000000 	nop
  4ceac4:	00822026 	xor	a0,a0,v0
  4ceac8:	8fc2000c 	lw	v0,12(s8)
  4ceacc:	00000000 	nop
  4cead0:	00021602 	srl	v0,v0,0x18
  4cead4:	00021880 	sll	v1,v0,0x2
  4cead8:	8fc20028 	lw	v0,40(s8)
  4ceadc:	00000000 	nop
  4ceae0:	00431021 	addu	v0,v0,v1
  4ceae4:	8c420000 	lw	v0,0(v0)
  4ceae8:	00000000 	nop
  4ceaec:	00821026 	xor	v0,a0,v0
  4ceaf0:	afc2001c 	sw	v0,28(s8)
  4ceaf4:	8fc30018 	lw	v1,24(s8)
  4ceaf8:	8fc2001c 	lw	v0,28(s8)
  4ceafc:	00000000 	nop
  4ceb00:	00621021 	addu	v0,v1,v0
  4ceb04:	afc20018 	sw	v0,24(s8)
  4ceb08:	8fc3001c 	lw	v1,28(s8)
  4ceb0c:	8fc20018 	lw	v0,24(s8)
  4ceb10:	00000000 	nop
  4ceb14:	00621021 	addu	v0,v1,v0
  4ceb18:	afc2001c 	sw	v0,28(s8)
  4ceb1c:	8fc20028 	lw	v0,40(s8)
  4ceb20:	00000000 	nop
  4ceb24:	8c431094 	lw	v1,4244(v0)
  4ceb28:	8fc2001c 	lw	v0,28(s8)
  4ceb2c:	00000000 	nop
  4ceb30:	00431821 	addu	v1,v0,v1
  4ceb34:	8fc20014 	lw	v0,20(s8)
  4ceb38:	00000000 	nop
  4ceb3c:	00431026 	xor	v0,v0,v1
  4ceb40:	afc20014 	sw	v0,20(s8)
  4ceb44:	8fc20014 	lw	v0,20(s8)
  4ceb48:	00000000 	nop
  4ceb4c:	00021fc0 	sll	v1,v0,0x1f
  4ceb50:	00021042 	srl	v0,v0,0x1
  4ceb54:	00621025 	or	v0,v1,v0
  4ceb58:	afc20014 	sw	v0,20(s8)
  4ceb5c:	8fc20010 	lw	v0,16(s8)
  4ceb60:	00000000 	nop
  4ceb64:	00021840 	sll	v1,v0,0x1
  4ceb68:	000217c2 	srl	v0,v0,0x1f
  4ceb6c:	00621025 	or	v0,v1,v0
  4ceb70:	afc20010 	sw	v0,16(s8)
  4ceb74:	8fc20028 	lw	v0,40(s8)
  4ceb78:	00000000 	nop
  4ceb7c:	8c431090 	lw	v1,4240(v0)
  4ceb80:	8fc20018 	lw	v0,24(s8)
  4ceb84:	00000000 	nop
  4ceb88:	00431821 	addu	v1,v0,v1
  4ceb8c:	8fc20010 	lw	v0,16(s8)
  4ceb90:	00000000 	nop
  4ceb94:	00431026 	xor	v0,v0,v1
  4ceb98:	afc20010 	sw	v0,16(s8)
	DECCYCLE (6);
  4ceb9c:	8fc20010 	lw	v0,16(s8)
  4ceba0:	00000000 	nop
  4ceba4:	304200ff 	andi	v0,v0,0xff
  4ceba8:	00021880 	sll	v1,v0,0x2
  4cebac:	8fc20028 	lw	v0,40(s8)
  4cebb0:	00000000 	nop
  4cebb4:	00432021 	addu	a0,v0,v1
  4cebb8:	8fc20010 	lw	v0,16(s8)
  4cebbc:	00000000 	nop
  4cebc0:	00021202 	srl	v0,v0,0x8
  4cebc4:	304200ff 	andi	v0,v0,0xff
  4cebc8:	00021080 	sll	v0,v0,0x2
  4cebcc:	24430400 	addiu	v1,v0,1024
  4cebd0:	8fc20028 	lw	v0,40(s8)
  4cebd4:	00000000 	nop
  4cebd8:	00431021 	addu	v0,v0,v1
  4cebdc:	8c830000 	lw	v1,0(a0)
  4cebe0:	8c420000 	lw	v0,0(v0)
  4cebe4:	00000000 	nop
  4cebe8:	00622026 	xor	a0,v1,v0
  4cebec:	8fc20010 	lw	v0,16(s8)
  4cebf0:	00000000 	nop
  4cebf4:	00021402 	srl	v0,v0,0x10
  4cebf8:	304200ff 	andi	v0,v0,0xff
  4cebfc:	00021080 	sll	v0,v0,0x2
  4cec00:	24430800 	addiu	v1,v0,2048
  4cec04:	8fc20028 	lw	v0,40(s8)
  4cec08:	00000000 	nop
  4cec0c:	00431021 	addu	v0,v0,v1
  4cec10:	8c420000 	lw	v0,0(v0)
  4cec14:	00000000 	nop
  4cec18:	00822026 	xor	a0,a0,v0
  4cec1c:	8fc20010 	lw	v0,16(s8)
  4cec20:	00000000 	nop
  4cec24:	00021602 	srl	v0,v0,0x18
  4cec28:	00021080 	sll	v0,v0,0x2
  4cec2c:	24430c00 	addiu	v1,v0,3072
  4cec30:	8fc20028 	lw	v0,40(s8)
  4cec34:	00000000 	nop
  4cec38:	00431021 	addu	v0,v0,v1
  4cec3c:	8c420000 	lw	v0,0(v0)
  4cec40:	00000000 	nop
  4cec44:	00821026 	xor	v0,a0,v0
  4cec48:	afc20018 	sw	v0,24(s8)
  4cec4c:	8fc20014 	lw	v0,20(s8)
  4cec50:	00000000 	nop
  4cec54:	304200ff 	andi	v0,v0,0xff
  4cec58:	00021080 	sll	v0,v0,0x2
  4cec5c:	24430400 	addiu	v1,v0,1024
  4cec60:	8fc20028 	lw	v0,40(s8)
  4cec64:	00000000 	nop
  4cec68:	00432021 	addu	a0,v0,v1
  4cec6c:	8fc20014 	lw	v0,20(s8)
  4cec70:	00000000 	nop
  4cec74:	00021202 	srl	v0,v0,0x8
  4cec78:	304200ff 	andi	v0,v0,0xff
  4cec7c:	00021080 	sll	v0,v0,0x2
  4cec80:	24430800 	addiu	v1,v0,2048
  4cec84:	8fc20028 	lw	v0,40(s8)
  4cec88:	00000000 	nop
  4cec8c:	00431021 	addu	v0,v0,v1
  4cec90:	8c830000 	lw	v1,0(a0)
  4cec94:	8c420000 	lw	v0,0(v0)
  4cec98:	00000000 	nop
  4cec9c:	00622026 	xor	a0,v1,v0
  4ceca0:	8fc20014 	lw	v0,20(s8)
  4ceca4:	00000000 	nop
  4ceca8:	00021402 	srl	v0,v0,0x10
  4cecac:	304200ff 	andi	v0,v0,0xff
  4cecb0:	00021080 	sll	v0,v0,0x2
  4cecb4:	24430c00 	addiu	v1,v0,3072
  4cecb8:	8fc20028 	lw	v0,40(s8)
  4cecbc:	00000000 	nop
  4cecc0:	00431021 	addu	v0,v0,v1
  4cecc4:	8c420000 	lw	v0,0(v0)
  4cecc8:	00000000 	nop
  4ceccc:	00822026 	xor	a0,a0,v0
  4cecd0:	8fc20014 	lw	v0,20(s8)
  4cecd4:	00000000 	nop
  4cecd8:	00021602 	srl	v0,v0,0x18
  4cecdc:	00021880 	sll	v1,v0,0x2
  4cece0:	8fc20028 	lw	v0,40(s8)
  4cece4:	00000000 	nop
  4cece8:	00431021 	addu	v0,v0,v1
  4cecec:	8c420000 	lw	v0,0(v0)
  4cecf0:	00000000 	nop
  4cecf4:	00821026 	xor	v0,a0,v0
  4cecf8:	afc2001c 	sw	v0,28(s8)
  4cecfc:	8fc30018 	lw	v1,24(s8)
  4ced00:	8fc2001c 	lw	v0,28(s8)
  4ced04:	00000000 	nop
  4ced08:	00621021 	addu	v0,v1,v0
  4ced0c:	afc20018 	sw	v0,24(s8)
  4ced10:	8fc3001c 	lw	v1,28(s8)
  4ced14:	8fc20018 	lw	v0,24(s8)
  4ced18:	00000000 	nop
  4ced1c:	00621021 	addu	v0,v1,v0
  4ced20:	afc2001c 	sw	v0,28(s8)
  4ced24:	8fc20028 	lw	v0,40(s8)
  4ced28:	00000000 	nop
  4ced2c:	8c43108c 	lw	v1,4236(v0)
  4ced30:	8fc2001c 	lw	v0,28(s8)
  4ced34:	00000000 	nop
  4ced38:	00431821 	addu	v1,v0,v1
  4ced3c:	8fc2000c 	lw	v0,12(s8)
  4ced40:	00000000 	nop
  4ced44:	00431026 	xor	v0,v0,v1
  4ced48:	afc2000c 	sw	v0,12(s8)
  4ced4c:	8fc2000c 	lw	v0,12(s8)
  4ced50:	00000000 	nop
  4ced54:	00021fc0 	sll	v1,v0,0x1f
  4ced58:	00021042 	srl	v0,v0,0x1
  4ced5c:	00621025 	or	v0,v1,v0
  4ced60:	afc2000c 	sw	v0,12(s8)
  4ced64:	8fc20008 	lw	v0,8(s8)
  4ced68:	00000000 	nop
  4ced6c:	00021840 	sll	v1,v0,0x1
  4ced70:	000217c2 	srl	v0,v0,0x1f
  4ced74:	00621025 	or	v0,v1,v0
  4ced78:	afc20008 	sw	v0,8(s8)
  4ced7c:	8fc20028 	lw	v0,40(s8)
  4ced80:	00000000 	nop
  4ced84:	8c431088 	lw	v1,4232(v0)
  4ced88:	8fc20018 	lw	v0,24(s8)
  4ced8c:	00000000 	nop
  4ced90:	00431821 	addu	v1,v0,v1
  4ced94:	8fc20008 	lw	v0,8(s8)
  4ced98:	00000000 	nop
  4ced9c:	00431026 	xor	v0,v0,v1
  4ceda0:	afc20008 	sw	v0,8(s8)
  4ceda4:	8fc20008 	lw	v0,8(s8)
  4ceda8:	00000000 	nop
  4cedac:	304200ff 	andi	v0,v0,0xff
  4cedb0:	00021880 	sll	v1,v0,0x2
  4cedb4:	8fc20028 	lw	v0,40(s8)
  4cedb8:	00000000 	nop
  4cedbc:	00432021 	addu	a0,v0,v1
  4cedc0:	8fc20008 	lw	v0,8(s8)
  4cedc4:	00000000 	nop
  4cedc8:	00021202 	srl	v0,v0,0x8
  4cedcc:	304200ff 	andi	v0,v0,0xff
  4cedd0:	00021080 	sll	v0,v0,0x2
  4cedd4:	24430400 	addiu	v1,v0,1024
  4cedd8:	8fc20028 	lw	v0,40(s8)
  4ceddc:	00000000 	nop
  4cede0:	00431021 	addu	v0,v0,v1
  4cede4:	8c830000 	lw	v1,0(a0)
  4cede8:	8c420000 	lw	v0,0(v0)
  4cedec:	00000000 	nop
  4cedf0:	00622026 	xor	a0,v1,v0
  4cedf4:	8fc20008 	lw	v0,8(s8)
  4cedf8:	00000000 	nop
  4cedfc:	00021402 	srl	v0,v0,0x10
  4cee00:	304200ff 	andi	v0,v0,0xff
  4cee04:	00021080 	sll	v0,v0,0x2
  4cee08:	24430800 	addiu	v1,v0,2048
  4cee0c:	8fc20028 	lw	v0,40(s8)
  4cee10:	00000000 	nop
  4cee14:	00431021 	addu	v0,v0,v1
  4cee18:	8c420000 	lw	v0,0(v0)
  4cee1c:	00000000 	nop
  4cee20:	00822026 	xor	a0,a0,v0
  4cee24:	8fc20008 	lw	v0,8(s8)
  4cee28:	00000000 	nop
  4cee2c:	00021602 	srl	v0,v0,0x18
  4cee30:	00021080 	sll	v0,v0,0x2
  4cee34:	24430c00 	addiu	v1,v0,3072
  4cee38:	8fc20028 	lw	v0,40(s8)
  4cee3c:	00000000 	nop
  4cee40:	00431021 	addu	v0,v0,v1
  4cee44:	8c420000 	lw	v0,0(v0)
  4cee48:	00000000 	nop
  4cee4c:	00821026 	xor	v0,a0,v0
  4cee50:	afc20018 	sw	v0,24(s8)
  4cee54:	8fc2000c 	lw	v0,12(s8)
  4cee58:	00000000 	nop
  4cee5c:	304200ff 	andi	v0,v0,0xff
  4cee60:	00021080 	sll	v0,v0,0x2
  4cee64:	24430400 	addiu	v1,v0,1024
  4cee68:	8fc20028 	lw	v0,40(s8)
  4cee6c:	00000000 	nop
  4cee70:	00432021 	addu	a0,v0,v1
  4cee74:	8fc2000c 	lw	v0,12(s8)
  4cee78:	00000000 	nop
  4cee7c:	00021202 	srl	v0,v0,0x8
  4cee80:	304200ff 	andi	v0,v0,0xff
  4cee84:	00021080 	sll	v0,v0,0x2
  4cee88:	24430800 	addiu	v1,v0,2048
  4cee8c:	8fc20028 	lw	v0,40(s8)
  4cee90:	00000000 	nop
  4cee94:	00431021 	addu	v0,v0,v1
  4cee98:	8c830000 	lw	v1,0(a0)
  4cee9c:	8c420000 	lw	v0,0(v0)
  4ceea0:	00000000 	nop
  4ceea4:	00622026 	xor	a0,v1,v0
  4ceea8:	8fc2000c 	lw	v0,12(s8)
  4ceeac:	00000000 	nop
  4ceeb0:	00021402 	srl	v0,v0,0x10
  4ceeb4:	304200ff 	andi	v0,v0,0xff
  4ceeb8:	00021080 	sll	v0,v0,0x2
  4ceebc:	24430c00 	addiu	v1,v0,3072
  4ceec0:	8fc20028 	lw	v0,40(s8)
  4ceec4:	00000000 	nop
  4ceec8:	00431021 	addu	v0,v0,v1
  4ceecc:	8c420000 	lw	v0,0(v0)
  4ceed0:	00000000 	nop
  4ceed4:	00822026 	xor	a0,a0,v0
  4ceed8:	8fc2000c 	lw	v0,12(s8)
  4ceedc:	00000000 	nop
  4ceee0:	00021602 	srl	v0,v0,0x18
  4ceee4:	00021880 	sll	v1,v0,0x2
  4ceee8:	8fc20028 	lw	v0,40(s8)
  4ceeec:	00000000 	nop
  4ceef0:	00431021 	addu	v0,v0,v1
  4ceef4:	8c420000 	lw	v0,0(v0)
  4ceef8:	00000000 	nop
  4ceefc:	00821026 	xor	v0,a0,v0
  4cef00:	afc2001c 	sw	v0,28(s8)
  4cef04:	8fc30018 	lw	v1,24(s8)
  4cef08:	8fc2001c 	lw	v0,28(s8)
  4cef0c:	00000000 	nop
  4cef10:	00621021 	addu	v0,v1,v0
  4cef14:	afc20018 	sw	v0,24(s8)
  4cef18:	8fc3001c 	lw	v1,28(s8)
  4cef1c:	8fc20018 	lw	v0,24(s8)
  4cef20:	00000000 	nop
  4cef24:	00621021 	addu	v0,v1,v0
  4cef28:	afc2001c 	sw	v0,28(s8)
  4cef2c:	8fc20028 	lw	v0,40(s8)
  4cef30:	00000000 	nop
  4cef34:	8c431084 	lw	v1,4228(v0)
  4cef38:	8fc2001c 	lw	v0,28(s8)
  4cef3c:	00000000 	nop
  4cef40:	00431821 	addu	v1,v0,v1
  4cef44:	8fc20014 	lw	v0,20(s8)
  4cef48:	00000000 	nop
  4cef4c:	00431026 	xor	v0,v0,v1
  4cef50:	afc20014 	sw	v0,20(s8)
  4cef54:	8fc20014 	lw	v0,20(s8)
  4cef58:	00000000 	nop
  4cef5c:	00021fc0 	sll	v1,v0,0x1f
  4cef60:	00021042 	srl	v0,v0,0x1
  4cef64:	00621025 	or	v0,v1,v0
  4cef68:	afc20014 	sw	v0,20(s8)
  4cef6c:	8fc20010 	lw	v0,16(s8)
  4cef70:	00000000 	nop
  4cef74:	00021840 	sll	v1,v0,0x1
  4cef78:	000217c2 	srl	v0,v0,0x1f
  4cef7c:	00621025 	or	v0,v1,v0
  4cef80:	afc20010 	sw	v0,16(s8)
  4cef84:	8fc20028 	lw	v0,40(s8)
  4cef88:	00000000 	nop
  4cef8c:	8c431080 	lw	v1,4224(v0)
  4cef90:	8fc20018 	lw	v0,24(s8)
  4cef94:	00000000 	nop
  4cef98:	00431821 	addu	v1,v0,v1
  4cef9c:	8fc20010 	lw	v0,16(s8)
  4cefa0:	00000000 	nop
  4cefa4:	00431026 	xor	v0,v0,v1
  4cefa8:	afc20010 	sw	v0,16(s8)
	DECCYCLE (5);
  4cefac:	8fc20010 	lw	v0,16(s8)
  4cefb0:	00000000 	nop
  4cefb4:	304200ff 	andi	v0,v0,0xff
  4cefb8:	00021880 	sll	v1,v0,0x2
  4cefbc:	8fc20028 	lw	v0,40(s8)
  4cefc0:	00000000 	nop
  4cefc4:	00432021 	addu	a0,v0,v1
  4cefc8:	8fc20010 	lw	v0,16(s8)
  4cefcc:	00000000 	nop
  4cefd0:	00021202 	srl	v0,v0,0x8
  4cefd4:	304200ff 	andi	v0,v0,0xff
  4cefd8:	00021080 	sll	v0,v0,0x2
  4cefdc:	24430400 	addiu	v1,v0,1024
  4cefe0:	8fc20028 	lw	v0,40(s8)
  4cefe4:	00000000 	nop
  4cefe8:	00431021 	addu	v0,v0,v1
  4cefec:	8c830000 	lw	v1,0(a0)
  4ceff0:	8c420000 	lw	v0,0(v0)
  4ceff4:	00000000 	nop
  4ceff8:	00622026 	xor	a0,v1,v0
  4ceffc:	8fc20010 	lw	v0,16(s8)
  4cf000:	00000000 	nop
  4cf004:	00021402 	srl	v0,v0,0x10
  4cf008:	304200ff 	andi	v0,v0,0xff
  4cf00c:	00021080 	sll	v0,v0,0x2
  4cf010:	24430800 	addiu	v1,v0,2048
  4cf014:	8fc20028 	lw	v0,40(s8)
  4cf018:	00000000 	nop
  4cf01c:	00431021 	addu	v0,v0,v1
  4cf020:	8c420000 	lw	v0,0(v0)
  4cf024:	00000000 	nop
  4cf028:	00822026 	xor	a0,a0,v0
  4cf02c:	8fc20010 	lw	v0,16(s8)
  4cf030:	00000000 	nop
  4cf034:	00021602 	srl	v0,v0,0x18
  4cf038:	00021080 	sll	v0,v0,0x2
  4cf03c:	24430c00 	addiu	v1,v0,3072
  4cf040:	8fc20028 	lw	v0,40(s8)
  4cf044:	00000000 	nop
  4cf048:	00431021 	addu	v0,v0,v1
  4cf04c:	8c420000 	lw	v0,0(v0)
  4cf050:	00000000 	nop
  4cf054:	00821026 	xor	v0,a0,v0
  4cf058:	afc20018 	sw	v0,24(s8)
  4cf05c:	8fc20014 	lw	v0,20(s8)
  4cf060:	00000000 	nop
  4cf064:	304200ff 	andi	v0,v0,0xff
  4cf068:	00021080 	sll	v0,v0,0x2
  4cf06c:	24430400 	addiu	v1,v0,1024
  4cf070:	8fc20028 	lw	v0,40(s8)
  4cf074:	00000000 	nop
  4cf078:	00432021 	addu	a0,v0,v1
  4cf07c:	8fc20014 	lw	v0,20(s8)
  4cf080:	00000000 	nop
  4cf084:	00021202 	srl	v0,v0,0x8
  4cf088:	304200ff 	andi	v0,v0,0xff
  4cf08c:	00021080 	sll	v0,v0,0x2
  4cf090:	24430800 	addiu	v1,v0,2048
  4cf094:	8fc20028 	lw	v0,40(s8)
  4cf098:	00000000 	nop
  4cf09c:	00431021 	addu	v0,v0,v1
  4cf0a0:	8c830000 	lw	v1,0(a0)
  4cf0a4:	8c420000 	lw	v0,0(v0)
  4cf0a8:	00000000 	nop
  4cf0ac:	00622026 	xor	a0,v1,v0
  4cf0b0:	8fc20014 	lw	v0,20(s8)
  4cf0b4:	00000000 	nop
  4cf0b8:	00021402 	srl	v0,v0,0x10
  4cf0bc:	304200ff 	andi	v0,v0,0xff
  4cf0c0:	00021080 	sll	v0,v0,0x2
  4cf0c4:	24430c00 	addiu	v1,v0,3072
  4cf0c8:	8fc20028 	lw	v0,40(s8)
  4cf0cc:	00000000 	nop
  4cf0d0:	00431021 	addu	v0,v0,v1
  4cf0d4:	8c420000 	lw	v0,0(v0)
  4cf0d8:	00000000 	nop
  4cf0dc:	00822026 	xor	a0,a0,v0
  4cf0e0:	8fc20014 	lw	v0,20(s8)
  4cf0e4:	00000000 	nop
  4cf0e8:	00021602 	srl	v0,v0,0x18
  4cf0ec:	00021880 	sll	v1,v0,0x2
  4cf0f0:	8fc20028 	lw	v0,40(s8)
  4cf0f4:	00000000 	nop
  4cf0f8:	00431021 	addu	v0,v0,v1
  4cf0fc:	8c420000 	lw	v0,0(v0)
  4cf100:	00000000 	nop
  4cf104:	00821026 	xor	v0,a0,v0
  4cf108:	afc2001c 	sw	v0,28(s8)
  4cf10c:	8fc30018 	lw	v1,24(s8)
  4cf110:	8fc2001c 	lw	v0,28(s8)
  4cf114:	00000000 	nop
  4cf118:	00621021 	addu	v0,v1,v0
  4cf11c:	afc20018 	sw	v0,24(s8)
  4cf120:	8fc3001c 	lw	v1,28(s8)
  4cf124:	8fc20018 	lw	v0,24(s8)
  4cf128:	00000000 	nop
  4cf12c:	00621021 	addu	v0,v1,v0
  4cf130:	afc2001c 	sw	v0,28(s8)
  4cf134:	8fc20028 	lw	v0,40(s8)
  4cf138:	00000000 	nop
  4cf13c:	8c43107c 	lw	v1,4220(v0)
  4cf140:	8fc2001c 	lw	v0,28(s8)
  4cf144:	00000000 	nop
  4cf148:	00431821 	addu	v1,v0,v1
  4cf14c:	8fc2000c 	lw	v0,12(s8)
  4cf150:	00000000 	nop
  4cf154:	00431026 	xor	v0,v0,v1
  4cf158:	afc2000c 	sw	v0,12(s8)
  4cf15c:	8fc2000c 	lw	v0,12(s8)
  4cf160:	00000000 	nop
  4cf164:	00021fc0 	sll	v1,v0,0x1f
  4cf168:	00021042 	srl	v0,v0,0x1
  4cf16c:	00621025 	or	v0,v1,v0
  4cf170:	afc2000c 	sw	v0,12(s8)
  4cf174:	8fc20008 	lw	v0,8(s8)
  4cf178:	00000000 	nop
  4cf17c:	00021840 	sll	v1,v0,0x1
  4cf180:	000217c2 	srl	v0,v0,0x1f
  4cf184:	00621025 	or	v0,v1,v0
  4cf188:	afc20008 	sw	v0,8(s8)
  4cf18c:	8fc20028 	lw	v0,40(s8)
  4cf190:	00000000 	nop
  4cf194:	8c431078 	lw	v1,4216(v0)
  4cf198:	8fc20018 	lw	v0,24(s8)
  4cf19c:	00000000 	nop
  4cf1a0:	00431821 	addu	v1,v0,v1
  4cf1a4:	8fc20008 	lw	v0,8(s8)
  4cf1a8:	00000000 	nop
  4cf1ac:	00431026 	xor	v0,v0,v1
  4cf1b0:	afc20008 	sw	v0,8(s8)
  4cf1b4:	8fc20008 	lw	v0,8(s8)
  4cf1b8:	00000000 	nop
  4cf1bc:	304200ff 	andi	v0,v0,0xff
  4cf1c0:	00021880 	sll	v1,v0,0x2
  4cf1c4:	8fc20028 	lw	v0,40(s8)
  4cf1c8:	00000000 	nop
  4cf1cc:	00432021 	addu	a0,v0,v1
  4cf1d0:	8fc20008 	lw	v0,8(s8)
  4cf1d4:	00000000 	nop
  4cf1d8:	00021202 	srl	v0,v0,0x8
  4cf1dc:	304200ff 	andi	v0,v0,0xff
  4cf1e0:	00021080 	sll	v0,v0,0x2
  4cf1e4:	24430400 	addiu	v1,v0,1024
  4cf1e8:	8fc20028 	lw	v0,40(s8)
  4cf1ec:	00000000 	nop
  4cf1f0:	00431021 	addu	v0,v0,v1
  4cf1f4:	8c830000 	lw	v1,0(a0)
  4cf1f8:	8c420000 	lw	v0,0(v0)
  4cf1fc:	00000000 	nop
  4cf200:	00622026 	xor	a0,v1,v0
  4cf204:	8fc20008 	lw	v0,8(s8)
  4cf208:	00000000 	nop
  4cf20c:	00021402 	srl	v0,v0,0x10
  4cf210:	304200ff 	andi	v0,v0,0xff
  4cf214:	00021080 	sll	v0,v0,0x2
  4cf218:	24430800 	addiu	v1,v0,2048
  4cf21c:	8fc20028 	lw	v0,40(s8)
  4cf220:	00000000 	nop
  4cf224:	00431021 	addu	v0,v0,v1
  4cf228:	8c420000 	lw	v0,0(v0)
  4cf22c:	00000000 	nop
  4cf230:	00822026 	xor	a0,a0,v0
  4cf234:	8fc20008 	lw	v0,8(s8)
  4cf238:	00000000 	nop
  4cf23c:	00021602 	srl	v0,v0,0x18
  4cf240:	00021080 	sll	v0,v0,0x2
  4cf244:	24430c00 	addiu	v1,v0,3072
  4cf248:	8fc20028 	lw	v0,40(s8)
  4cf24c:	00000000 	nop
  4cf250:	00431021 	addu	v0,v0,v1
  4cf254:	8c420000 	lw	v0,0(v0)
  4cf258:	00000000 	nop
  4cf25c:	00821026 	xor	v0,a0,v0
  4cf260:	afc20018 	sw	v0,24(s8)
  4cf264:	8fc2000c 	lw	v0,12(s8)
  4cf268:	00000000 	nop
  4cf26c:	304200ff 	andi	v0,v0,0xff
  4cf270:	00021080 	sll	v0,v0,0x2
  4cf274:	24430400 	addiu	v1,v0,1024
  4cf278:	8fc20028 	lw	v0,40(s8)
  4cf27c:	00000000 	nop
  4cf280:	00432021 	addu	a0,v0,v1
  4cf284:	8fc2000c 	lw	v0,12(s8)
  4cf288:	00000000 	nop
  4cf28c:	00021202 	srl	v0,v0,0x8
  4cf290:	304200ff 	andi	v0,v0,0xff
  4cf294:	00021080 	sll	v0,v0,0x2
  4cf298:	24430800 	addiu	v1,v0,2048
  4cf29c:	8fc20028 	lw	v0,40(s8)
  4cf2a0:	00000000 	nop
  4cf2a4:	00431021 	addu	v0,v0,v1
  4cf2a8:	8c830000 	lw	v1,0(a0)
  4cf2ac:	8c420000 	lw	v0,0(v0)
  4cf2b0:	00000000 	nop
  4cf2b4:	00622026 	xor	a0,v1,v0
  4cf2b8:	8fc2000c 	lw	v0,12(s8)
  4cf2bc:	00000000 	nop
  4cf2c0:	00021402 	srl	v0,v0,0x10
  4cf2c4:	304200ff 	andi	v0,v0,0xff
  4cf2c8:	00021080 	sll	v0,v0,0x2
  4cf2cc:	24430c00 	addiu	v1,v0,3072
  4cf2d0:	8fc20028 	lw	v0,40(s8)
  4cf2d4:	00000000 	nop
  4cf2d8:	00431021 	addu	v0,v0,v1
  4cf2dc:	8c420000 	lw	v0,0(v0)
  4cf2e0:	00000000 	nop
  4cf2e4:	00822026 	xor	a0,a0,v0
  4cf2e8:	8fc2000c 	lw	v0,12(s8)
  4cf2ec:	00000000 	nop
  4cf2f0:	00021602 	srl	v0,v0,0x18
  4cf2f4:	00021880 	sll	v1,v0,0x2
  4cf2f8:	8fc20028 	lw	v0,40(s8)
  4cf2fc:	00000000 	nop
  4cf300:	00431021 	addu	v0,v0,v1
  4cf304:	8c420000 	lw	v0,0(v0)
  4cf308:	00000000 	nop
  4cf30c:	00821026 	xor	v0,a0,v0
  4cf310:	afc2001c 	sw	v0,28(s8)
  4cf314:	8fc30018 	lw	v1,24(s8)
  4cf318:	8fc2001c 	lw	v0,28(s8)
  4cf31c:	00000000 	nop
  4cf320:	00621021 	addu	v0,v1,v0
  4cf324:	afc20018 	sw	v0,24(s8)
  4cf328:	8fc3001c 	lw	v1,28(s8)
  4cf32c:	8fc20018 	lw	v0,24(s8)
  4cf330:	00000000 	nop
  4cf334:	00621021 	addu	v0,v1,v0
  4cf338:	afc2001c 	sw	v0,28(s8)
  4cf33c:	8fc20028 	lw	v0,40(s8)
  4cf340:	00000000 	nop
  4cf344:	8c431074 	lw	v1,4212(v0)
  4cf348:	8fc2001c 	lw	v0,28(s8)
  4cf34c:	00000000 	nop
  4cf350:	00431821 	addu	v1,v0,v1
  4cf354:	8fc20014 	lw	v0,20(s8)
  4cf358:	00000000 	nop
  4cf35c:	00431026 	xor	v0,v0,v1
  4cf360:	afc20014 	sw	v0,20(s8)
  4cf364:	8fc20014 	lw	v0,20(s8)
  4cf368:	00000000 	nop
  4cf36c:	00021fc0 	sll	v1,v0,0x1f
  4cf370:	00021042 	srl	v0,v0,0x1
  4cf374:	00621025 	or	v0,v1,v0
  4cf378:	afc20014 	sw	v0,20(s8)
  4cf37c:	8fc20010 	lw	v0,16(s8)
  4cf380:	00000000 	nop
  4cf384:	00021840 	sll	v1,v0,0x1
  4cf388:	000217c2 	srl	v0,v0,0x1f
  4cf38c:	00621025 	or	v0,v1,v0
  4cf390:	afc20010 	sw	v0,16(s8)
  4cf394:	8fc20028 	lw	v0,40(s8)
  4cf398:	00000000 	nop
  4cf39c:	8c431070 	lw	v1,4208(v0)
  4cf3a0:	8fc20018 	lw	v0,24(s8)
  4cf3a4:	00000000 	nop
  4cf3a8:	00431821 	addu	v1,v0,v1
  4cf3ac:	8fc20010 	lw	v0,16(s8)
  4cf3b0:	00000000 	nop
  4cf3b4:	00431026 	xor	v0,v0,v1
  4cf3b8:	afc20010 	sw	v0,16(s8)
	DECCYCLE (4);
  4cf3bc:	8fc20010 	lw	v0,16(s8)
  4cf3c0:	00000000 	nop
  4cf3c4:	304200ff 	andi	v0,v0,0xff
  4cf3c8:	00021880 	sll	v1,v0,0x2
  4cf3cc:	8fc20028 	lw	v0,40(s8)
  4cf3d0:	00000000 	nop
  4cf3d4:	00432021 	addu	a0,v0,v1
  4cf3d8:	8fc20010 	lw	v0,16(s8)
  4cf3dc:	00000000 	nop
  4cf3e0:	00021202 	srl	v0,v0,0x8
  4cf3e4:	304200ff 	andi	v0,v0,0xff
  4cf3e8:	00021080 	sll	v0,v0,0x2
  4cf3ec:	24430400 	addiu	v1,v0,1024
  4cf3f0:	8fc20028 	lw	v0,40(s8)
  4cf3f4:	00000000 	nop
  4cf3f8:	00431021 	addu	v0,v0,v1
  4cf3fc:	8c830000 	lw	v1,0(a0)
  4cf400:	8c420000 	lw	v0,0(v0)
  4cf404:	00000000 	nop
  4cf408:	00622026 	xor	a0,v1,v0
  4cf40c:	8fc20010 	lw	v0,16(s8)
  4cf410:	00000000 	nop
  4cf414:	00021402 	srl	v0,v0,0x10
  4cf418:	304200ff 	andi	v0,v0,0xff
  4cf41c:	00021080 	sll	v0,v0,0x2
  4cf420:	24430800 	addiu	v1,v0,2048
  4cf424:	8fc20028 	lw	v0,40(s8)
  4cf428:	00000000 	nop
  4cf42c:	00431021 	addu	v0,v0,v1
  4cf430:	8c420000 	lw	v0,0(v0)
  4cf434:	00000000 	nop
  4cf438:	00822026 	xor	a0,a0,v0
  4cf43c:	8fc20010 	lw	v0,16(s8)
  4cf440:	00000000 	nop
  4cf444:	00021602 	srl	v0,v0,0x18
  4cf448:	00021080 	sll	v0,v0,0x2
  4cf44c:	24430c00 	addiu	v1,v0,3072
  4cf450:	8fc20028 	lw	v0,40(s8)
  4cf454:	00000000 	nop
  4cf458:	00431021 	addu	v0,v0,v1
  4cf45c:	8c420000 	lw	v0,0(v0)
  4cf460:	00000000 	nop
  4cf464:	00821026 	xor	v0,a0,v0
  4cf468:	afc20018 	sw	v0,24(s8)
  4cf46c:	8fc20014 	lw	v0,20(s8)
  4cf470:	00000000 	nop
  4cf474:	304200ff 	andi	v0,v0,0xff
  4cf478:	00021080 	sll	v0,v0,0x2
  4cf47c:	24430400 	addiu	v1,v0,1024
  4cf480:	8fc20028 	lw	v0,40(s8)
  4cf484:	00000000 	nop
  4cf488:	00432021 	addu	a0,v0,v1
  4cf48c:	8fc20014 	lw	v0,20(s8)
  4cf490:	00000000 	nop
  4cf494:	00021202 	srl	v0,v0,0x8
  4cf498:	304200ff 	andi	v0,v0,0xff
  4cf49c:	00021080 	sll	v0,v0,0x2
  4cf4a0:	24430800 	addiu	v1,v0,2048
  4cf4a4:	8fc20028 	lw	v0,40(s8)
  4cf4a8:	00000000 	nop
  4cf4ac:	00431021 	addu	v0,v0,v1
  4cf4b0:	8c830000 	lw	v1,0(a0)
  4cf4b4:	8c420000 	lw	v0,0(v0)
  4cf4b8:	00000000 	nop
  4cf4bc:	00622026 	xor	a0,v1,v0
  4cf4c0:	8fc20014 	lw	v0,20(s8)
  4cf4c4:	00000000 	nop
  4cf4c8:	00021402 	srl	v0,v0,0x10
  4cf4cc:	304200ff 	andi	v0,v0,0xff
  4cf4d0:	00021080 	sll	v0,v0,0x2
  4cf4d4:	24430c00 	addiu	v1,v0,3072
  4cf4d8:	8fc20028 	lw	v0,40(s8)
  4cf4dc:	00000000 	nop
  4cf4e0:	00431021 	addu	v0,v0,v1
  4cf4e4:	8c420000 	lw	v0,0(v0)
  4cf4e8:	00000000 	nop
  4cf4ec:	00822026 	xor	a0,a0,v0
  4cf4f0:	8fc20014 	lw	v0,20(s8)
  4cf4f4:	00000000 	nop
  4cf4f8:	00021602 	srl	v0,v0,0x18
  4cf4fc:	00021880 	sll	v1,v0,0x2
  4cf500:	8fc20028 	lw	v0,40(s8)
  4cf504:	00000000 	nop
  4cf508:	00431021 	addu	v0,v0,v1
  4cf50c:	8c420000 	lw	v0,0(v0)
  4cf510:	00000000 	nop
  4cf514:	00821026 	xor	v0,a0,v0
  4cf518:	afc2001c 	sw	v0,28(s8)
  4cf51c:	8fc30018 	lw	v1,24(s8)
  4cf520:	8fc2001c 	lw	v0,28(s8)
  4cf524:	00000000 	nop
  4cf528:	00621021 	addu	v0,v1,v0
  4cf52c:	afc20018 	sw	v0,24(s8)
  4cf530:	8fc3001c 	lw	v1,28(s8)
  4cf534:	8fc20018 	lw	v0,24(s8)
  4cf538:	00000000 	nop
  4cf53c:	00621021 	addu	v0,v1,v0
  4cf540:	afc2001c 	sw	v0,28(s8)
  4cf544:	8fc20028 	lw	v0,40(s8)
  4cf548:	00000000 	nop
  4cf54c:	8c43106c 	lw	v1,4204(v0)
  4cf550:	8fc2001c 	lw	v0,28(s8)
  4cf554:	00000000 	nop
  4cf558:	00431821 	addu	v1,v0,v1
  4cf55c:	8fc2000c 	lw	v0,12(s8)
  4cf560:	00000000 	nop
  4cf564:	00431026 	xor	v0,v0,v1
  4cf568:	afc2000c 	sw	v0,12(s8)
  4cf56c:	8fc2000c 	lw	v0,12(s8)
  4cf570:	00000000 	nop
  4cf574:	00021fc0 	sll	v1,v0,0x1f
  4cf578:	00021042 	srl	v0,v0,0x1
  4cf57c:	00621025 	or	v0,v1,v0
  4cf580:	afc2000c 	sw	v0,12(s8)
  4cf584:	8fc20008 	lw	v0,8(s8)
  4cf588:	00000000 	nop
  4cf58c:	00021840 	sll	v1,v0,0x1
  4cf590:	000217c2 	srl	v0,v0,0x1f
  4cf594:	00621025 	or	v0,v1,v0
  4cf598:	afc20008 	sw	v0,8(s8)
  4cf59c:	8fc20028 	lw	v0,40(s8)
  4cf5a0:	00000000 	nop
  4cf5a4:	8c431068 	lw	v1,4200(v0)
  4cf5a8:	8fc20018 	lw	v0,24(s8)
  4cf5ac:	00000000 	nop
  4cf5b0:	00431821 	addu	v1,v0,v1
  4cf5b4:	8fc20008 	lw	v0,8(s8)
  4cf5b8:	00000000 	nop
  4cf5bc:	00431026 	xor	v0,v0,v1
  4cf5c0:	afc20008 	sw	v0,8(s8)
  4cf5c4:	8fc20008 	lw	v0,8(s8)
  4cf5c8:	00000000 	nop
  4cf5cc:	304200ff 	andi	v0,v0,0xff
  4cf5d0:	00021880 	sll	v1,v0,0x2
  4cf5d4:	8fc20028 	lw	v0,40(s8)
  4cf5d8:	00000000 	nop
  4cf5dc:	00432021 	addu	a0,v0,v1
  4cf5e0:	8fc20008 	lw	v0,8(s8)
  4cf5e4:	00000000 	nop
  4cf5e8:	00021202 	srl	v0,v0,0x8
  4cf5ec:	304200ff 	andi	v0,v0,0xff
  4cf5f0:	00021080 	sll	v0,v0,0x2
  4cf5f4:	24430400 	addiu	v1,v0,1024
  4cf5f8:	8fc20028 	lw	v0,40(s8)
  4cf5fc:	00000000 	nop
  4cf600:	00431021 	addu	v0,v0,v1
  4cf604:	8c830000 	lw	v1,0(a0)
  4cf608:	8c420000 	lw	v0,0(v0)
  4cf60c:	00000000 	nop
  4cf610:	00622026 	xor	a0,v1,v0
  4cf614:	8fc20008 	lw	v0,8(s8)
  4cf618:	00000000 	nop
  4cf61c:	00021402 	srl	v0,v0,0x10
  4cf620:	304200ff 	andi	v0,v0,0xff
  4cf624:	00021080 	sll	v0,v0,0x2
  4cf628:	24430800 	addiu	v1,v0,2048
  4cf62c:	8fc20028 	lw	v0,40(s8)
  4cf630:	00000000 	nop
  4cf634:	00431021 	addu	v0,v0,v1
  4cf638:	8c420000 	lw	v0,0(v0)
  4cf63c:	00000000 	nop
  4cf640:	00822026 	xor	a0,a0,v0
  4cf644:	8fc20008 	lw	v0,8(s8)
  4cf648:	00000000 	nop
  4cf64c:	00021602 	srl	v0,v0,0x18
  4cf650:	00021080 	sll	v0,v0,0x2
  4cf654:	24430c00 	addiu	v1,v0,3072
  4cf658:	8fc20028 	lw	v0,40(s8)
  4cf65c:	00000000 	nop
  4cf660:	00431021 	addu	v0,v0,v1
  4cf664:	8c420000 	lw	v0,0(v0)
  4cf668:	00000000 	nop
  4cf66c:	00821026 	xor	v0,a0,v0
  4cf670:	afc20018 	sw	v0,24(s8)
  4cf674:	8fc2000c 	lw	v0,12(s8)
  4cf678:	00000000 	nop
  4cf67c:	304200ff 	andi	v0,v0,0xff
  4cf680:	00021080 	sll	v0,v0,0x2
  4cf684:	24430400 	addiu	v1,v0,1024
  4cf688:	8fc20028 	lw	v0,40(s8)
  4cf68c:	00000000 	nop
  4cf690:	00432021 	addu	a0,v0,v1
  4cf694:	8fc2000c 	lw	v0,12(s8)
  4cf698:	00000000 	nop
  4cf69c:	00021202 	srl	v0,v0,0x8
  4cf6a0:	304200ff 	andi	v0,v0,0xff
  4cf6a4:	00021080 	sll	v0,v0,0x2
  4cf6a8:	24430800 	addiu	v1,v0,2048
  4cf6ac:	8fc20028 	lw	v0,40(s8)
  4cf6b0:	00000000 	nop
  4cf6b4:	00431021 	addu	v0,v0,v1
  4cf6b8:	8c830000 	lw	v1,0(a0)
  4cf6bc:	8c420000 	lw	v0,0(v0)
  4cf6c0:	00000000 	nop
  4cf6c4:	00622026 	xor	a0,v1,v0
  4cf6c8:	8fc2000c 	lw	v0,12(s8)
  4cf6cc:	00000000 	nop
  4cf6d0:	00021402 	srl	v0,v0,0x10
  4cf6d4:	304200ff 	andi	v0,v0,0xff
  4cf6d8:	00021080 	sll	v0,v0,0x2
  4cf6dc:	24430c00 	addiu	v1,v0,3072
  4cf6e0:	8fc20028 	lw	v0,40(s8)
  4cf6e4:	00000000 	nop
  4cf6e8:	00431021 	addu	v0,v0,v1
  4cf6ec:	8c420000 	lw	v0,0(v0)
  4cf6f0:	00000000 	nop
  4cf6f4:	00822026 	xor	a0,a0,v0
  4cf6f8:	8fc2000c 	lw	v0,12(s8)
  4cf6fc:	00000000 	nop
  4cf700:	00021602 	srl	v0,v0,0x18
  4cf704:	00021880 	sll	v1,v0,0x2
  4cf708:	8fc20028 	lw	v0,40(s8)
  4cf70c:	00000000 	nop
  4cf710:	00431021 	addu	v0,v0,v1
  4cf714:	8c420000 	lw	v0,0(v0)
  4cf718:	00000000 	nop
  4cf71c:	00821026 	xor	v0,a0,v0
  4cf720:	afc2001c 	sw	v0,28(s8)
  4cf724:	8fc30018 	lw	v1,24(s8)
  4cf728:	8fc2001c 	lw	v0,28(s8)
  4cf72c:	00000000 	nop
  4cf730:	00621021 	addu	v0,v1,v0
  4cf734:	afc20018 	sw	v0,24(s8)
  4cf738:	8fc3001c 	lw	v1,28(s8)
  4cf73c:	8fc20018 	lw	v0,24(s8)
  4cf740:	00000000 	nop
  4cf744:	00621021 	addu	v0,v1,v0
  4cf748:	afc2001c 	sw	v0,28(s8)
  4cf74c:	8fc20028 	lw	v0,40(s8)
  4cf750:	00000000 	nop
  4cf754:	8c431064 	lw	v1,4196(v0)
  4cf758:	8fc2001c 	lw	v0,28(s8)
  4cf75c:	00000000 	nop
  4cf760:	00431821 	addu	v1,v0,v1
  4cf764:	8fc20014 	lw	v0,20(s8)
  4cf768:	00000000 	nop
  4cf76c:	00431026 	xor	v0,v0,v1
  4cf770:	afc20014 	sw	v0,20(s8)
  4cf774:	8fc20014 	lw	v0,20(s8)
  4cf778:	00000000 	nop
  4cf77c:	00021fc0 	sll	v1,v0,0x1f
  4cf780:	00021042 	srl	v0,v0,0x1
  4cf784:	00621025 	or	v0,v1,v0
  4cf788:	afc20014 	sw	v0,20(s8)
  4cf78c:	8fc20010 	lw	v0,16(s8)
  4cf790:	00000000 	nop
  4cf794:	00021840 	sll	v1,v0,0x1
  4cf798:	000217c2 	srl	v0,v0,0x1f
  4cf79c:	00621025 	or	v0,v1,v0
  4cf7a0:	afc20010 	sw	v0,16(s8)
  4cf7a4:	8fc20028 	lw	v0,40(s8)
  4cf7a8:	00000000 	nop
  4cf7ac:	8c431060 	lw	v1,4192(v0)
  4cf7b0:	8fc20018 	lw	v0,24(s8)
  4cf7b4:	00000000 	nop
  4cf7b8:	00431821 	addu	v1,v0,v1
  4cf7bc:	8fc20010 	lw	v0,16(s8)
  4cf7c0:	00000000 	nop
  4cf7c4:	00431026 	xor	v0,v0,v1
  4cf7c8:	afc20010 	sw	v0,16(s8)
	DECCYCLE (3);
  4cf7cc:	8fc20010 	lw	v0,16(s8)
  4cf7d0:	00000000 	nop
  4cf7d4:	304200ff 	andi	v0,v0,0xff
  4cf7d8:	00021880 	sll	v1,v0,0x2
  4cf7dc:	8fc20028 	lw	v0,40(s8)
  4cf7e0:	00000000 	nop
  4cf7e4:	00432021 	addu	a0,v0,v1
  4cf7e8:	8fc20010 	lw	v0,16(s8)
  4cf7ec:	00000000 	nop
  4cf7f0:	00021202 	srl	v0,v0,0x8
  4cf7f4:	304200ff 	andi	v0,v0,0xff
  4cf7f8:	00021080 	sll	v0,v0,0x2
  4cf7fc:	24430400 	addiu	v1,v0,1024
  4cf800:	8fc20028 	lw	v0,40(s8)
  4cf804:	00000000 	nop
  4cf808:	00431021 	addu	v0,v0,v1
  4cf80c:	8c830000 	lw	v1,0(a0)
  4cf810:	8c420000 	lw	v0,0(v0)
  4cf814:	00000000 	nop
  4cf818:	00622026 	xor	a0,v1,v0
  4cf81c:	8fc20010 	lw	v0,16(s8)
  4cf820:	00000000 	nop
  4cf824:	00021402 	srl	v0,v0,0x10
  4cf828:	304200ff 	andi	v0,v0,0xff
  4cf82c:	00021080 	sll	v0,v0,0x2
  4cf830:	24430800 	addiu	v1,v0,2048
  4cf834:	8fc20028 	lw	v0,40(s8)
  4cf838:	00000000 	nop
  4cf83c:	00431021 	addu	v0,v0,v1
  4cf840:	8c420000 	lw	v0,0(v0)
  4cf844:	00000000 	nop
  4cf848:	00822026 	xor	a0,a0,v0
  4cf84c:	8fc20010 	lw	v0,16(s8)
  4cf850:	00000000 	nop
  4cf854:	00021602 	srl	v0,v0,0x18
  4cf858:	00021080 	sll	v0,v0,0x2
  4cf85c:	24430c00 	addiu	v1,v0,3072
  4cf860:	8fc20028 	lw	v0,40(s8)
  4cf864:	00000000 	nop
  4cf868:	00431021 	addu	v0,v0,v1
  4cf86c:	8c420000 	lw	v0,0(v0)
  4cf870:	00000000 	nop
  4cf874:	00821026 	xor	v0,a0,v0
  4cf878:	afc20018 	sw	v0,24(s8)
  4cf87c:	8fc20014 	lw	v0,20(s8)
  4cf880:	00000000 	nop
  4cf884:	304200ff 	andi	v0,v0,0xff
  4cf888:	00021080 	sll	v0,v0,0x2
  4cf88c:	24430400 	addiu	v1,v0,1024
  4cf890:	8fc20028 	lw	v0,40(s8)
  4cf894:	00000000 	nop
  4cf898:	00432021 	addu	a0,v0,v1
  4cf89c:	8fc20014 	lw	v0,20(s8)
  4cf8a0:	00000000 	nop
  4cf8a4:	00021202 	srl	v0,v0,0x8
  4cf8a8:	304200ff 	andi	v0,v0,0xff
  4cf8ac:	00021080 	sll	v0,v0,0x2
  4cf8b0:	24430800 	addiu	v1,v0,2048
  4cf8b4:	8fc20028 	lw	v0,40(s8)
  4cf8b8:	00000000 	nop
  4cf8bc:	00431021 	addu	v0,v0,v1
  4cf8c0:	8c830000 	lw	v1,0(a0)
  4cf8c4:	8c420000 	lw	v0,0(v0)
  4cf8c8:	00000000 	nop
  4cf8cc:	00622026 	xor	a0,v1,v0
  4cf8d0:	8fc20014 	lw	v0,20(s8)
  4cf8d4:	00000000 	nop
  4cf8d8:	00021402 	srl	v0,v0,0x10
  4cf8dc:	304200ff 	andi	v0,v0,0xff
  4cf8e0:	00021080 	sll	v0,v0,0x2
  4cf8e4:	24430c00 	addiu	v1,v0,3072
  4cf8e8:	8fc20028 	lw	v0,40(s8)
  4cf8ec:	00000000 	nop
  4cf8f0:	00431021 	addu	v0,v0,v1
  4cf8f4:	8c420000 	lw	v0,0(v0)
  4cf8f8:	00000000 	nop
  4cf8fc:	00822026 	xor	a0,a0,v0
  4cf900:	8fc20014 	lw	v0,20(s8)
  4cf904:	00000000 	nop
  4cf908:	00021602 	srl	v0,v0,0x18
  4cf90c:	00021880 	sll	v1,v0,0x2
  4cf910:	8fc20028 	lw	v0,40(s8)
  4cf914:	00000000 	nop
  4cf918:	00431021 	addu	v0,v0,v1
  4cf91c:	8c420000 	lw	v0,0(v0)
  4cf920:	00000000 	nop
  4cf924:	00821026 	xor	v0,a0,v0
  4cf928:	afc2001c 	sw	v0,28(s8)
  4cf92c:	8fc30018 	lw	v1,24(s8)
  4cf930:	8fc2001c 	lw	v0,28(s8)
  4cf934:	00000000 	nop
  4cf938:	00621021 	addu	v0,v1,v0
  4cf93c:	afc20018 	sw	v0,24(s8)
  4cf940:	8fc3001c 	lw	v1,28(s8)
  4cf944:	8fc20018 	lw	v0,24(s8)
  4cf948:	00000000 	nop
  4cf94c:	00621021 	addu	v0,v1,v0
  4cf950:	afc2001c 	sw	v0,28(s8)
  4cf954:	8fc20028 	lw	v0,40(s8)
  4cf958:	00000000 	nop
  4cf95c:	8c43105c 	lw	v1,4188(v0)
  4cf960:	8fc2001c 	lw	v0,28(s8)
  4cf964:	00000000 	nop
  4cf968:	00431821 	addu	v1,v0,v1
  4cf96c:	8fc2000c 	lw	v0,12(s8)
  4cf970:	00000000 	nop
  4cf974:	00431026 	xor	v0,v0,v1
  4cf978:	afc2000c 	sw	v0,12(s8)
  4cf97c:	8fc2000c 	lw	v0,12(s8)
  4cf980:	00000000 	nop
  4cf984:	00021fc0 	sll	v1,v0,0x1f
  4cf988:	00021042 	srl	v0,v0,0x1
  4cf98c:	00621025 	or	v0,v1,v0
  4cf990:	afc2000c 	sw	v0,12(s8)
  4cf994:	8fc20008 	lw	v0,8(s8)
  4cf998:	00000000 	nop
  4cf99c:	00021840 	sll	v1,v0,0x1
  4cf9a0:	000217c2 	srl	v0,v0,0x1f
  4cf9a4:	00621025 	or	v0,v1,v0
  4cf9a8:	afc20008 	sw	v0,8(s8)
  4cf9ac:	8fc20028 	lw	v0,40(s8)
  4cf9b0:	00000000 	nop
  4cf9b4:	8c431058 	lw	v1,4184(v0)
  4cf9b8:	8fc20018 	lw	v0,24(s8)
  4cf9bc:	00000000 	nop
  4cf9c0:	00431821 	addu	v1,v0,v1
  4cf9c4:	8fc20008 	lw	v0,8(s8)
  4cf9c8:	00000000 	nop
  4cf9cc:	00431026 	xor	v0,v0,v1
  4cf9d0:	afc20008 	sw	v0,8(s8)
  4cf9d4:	8fc20008 	lw	v0,8(s8)
  4cf9d8:	00000000 	nop
  4cf9dc:	304200ff 	andi	v0,v0,0xff
  4cf9e0:	00021880 	sll	v1,v0,0x2
  4cf9e4:	8fc20028 	lw	v0,40(s8)
  4cf9e8:	00000000 	nop
  4cf9ec:	00432021 	addu	a0,v0,v1
  4cf9f0:	8fc20008 	lw	v0,8(s8)
  4cf9f4:	00000000 	nop
  4cf9f8:	00021202 	srl	v0,v0,0x8
  4cf9fc:	304200ff 	andi	v0,v0,0xff
  4cfa00:	00021080 	sll	v0,v0,0x2
  4cfa04:	24430400 	addiu	v1,v0,1024
  4cfa08:	8fc20028 	lw	v0,40(s8)
  4cfa0c:	00000000 	nop
  4cfa10:	00431021 	addu	v0,v0,v1
  4cfa14:	8c830000 	lw	v1,0(a0)
  4cfa18:	8c420000 	lw	v0,0(v0)
  4cfa1c:	00000000 	nop
  4cfa20:	00622026 	xor	a0,v1,v0
  4cfa24:	8fc20008 	lw	v0,8(s8)
  4cfa28:	00000000 	nop
  4cfa2c:	00021402 	srl	v0,v0,0x10
  4cfa30:	304200ff 	andi	v0,v0,0xff
  4cfa34:	00021080 	sll	v0,v0,0x2
  4cfa38:	24430800 	addiu	v1,v0,2048
  4cfa3c:	8fc20028 	lw	v0,40(s8)
  4cfa40:	00000000 	nop
  4cfa44:	00431021 	addu	v0,v0,v1
  4cfa48:	8c420000 	lw	v0,0(v0)
  4cfa4c:	00000000 	nop
  4cfa50:	00822026 	xor	a0,a0,v0
  4cfa54:	8fc20008 	lw	v0,8(s8)
  4cfa58:	00000000 	nop
  4cfa5c:	00021602 	srl	v0,v0,0x18
  4cfa60:	00021080 	sll	v0,v0,0x2
  4cfa64:	24430c00 	addiu	v1,v0,3072
  4cfa68:	8fc20028 	lw	v0,40(s8)
  4cfa6c:	00000000 	nop
  4cfa70:	00431021 	addu	v0,v0,v1
  4cfa74:	8c420000 	lw	v0,0(v0)
  4cfa78:	00000000 	nop
  4cfa7c:	00821026 	xor	v0,a0,v0
  4cfa80:	afc20018 	sw	v0,24(s8)
  4cfa84:	8fc2000c 	lw	v0,12(s8)
  4cfa88:	00000000 	nop
  4cfa8c:	304200ff 	andi	v0,v0,0xff
  4cfa90:	00021080 	sll	v0,v0,0x2
  4cfa94:	24430400 	addiu	v1,v0,1024
  4cfa98:	8fc20028 	lw	v0,40(s8)
  4cfa9c:	00000000 	nop
  4cfaa0:	00432021 	addu	a0,v0,v1
  4cfaa4:	8fc2000c 	lw	v0,12(s8)
  4cfaa8:	00000000 	nop
  4cfaac:	00021202 	srl	v0,v0,0x8
  4cfab0:	304200ff 	andi	v0,v0,0xff
  4cfab4:	00021080 	sll	v0,v0,0x2
  4cfab8:	24430800 	addiu	v1,v0,2048
  4cfabc:	8fc20028 	lw	v0,40(s8)
  4cfac0:	00000000 	nop
  4cfac4:	00431021 	addu	v0,v0,v1
  4cfac8:	8c830000 	lw	v1,0(a0)
  4cfacc:	8c420000 	lw	v0,0(v0)
  4cfad0:	00000000 	nop
  4cfad4:	00622026 	xor	a0,v1,v0
  4cfad8:	8fc2000c 	lw	v0,12(s8)
  4cfadc:	00000000 	nop
  4cfae0:	00021402 	srl	v0,v0,0x10
  4cfae4:	304200ff 	andi	v0,v0,0xff
  4cfae8:	00021080 	sll	v0,v0,0x2
  4cfaec:	24430c00 	addiu	v1,v0,3072
  4cfaf0:	8fc20028 	lw	v0,40(s8)
  4cfaf4:	00000000 	nop
  4cfaf8:	00431021 	addu	v0,v0,v1
  4cfafc:	8c420000 	lw	v0,0(v0)
  4cfb00:	00000000 	nop
  4cfb04:	00822026 	xor	a0,a0,v0
  4cfb08:	8fc2000c 	lw	v0,12(s8)
  4cfb0c:	00000000 	nop
  4cfb10:	00021602 	srl	v0,v0,0x18
  4cfb14:	00021880 	sll	v1,v0,0x2
  4cfb18:	8fc20028 	lw	v0,40(s8)
  4cfb1c:	00000000 	nop
  4cfb20:	00431021 	addu	v0,v0,v1
  4cfb24:	8c420000 	lw	v0,0(v0)
  4cfb28:	00000000 	nop
  4cfb2c:	00821026 	xor	v0,a0,v0
  4cfb30:	afc2001c 	sw	v0,28(s8)
  4cfb34:	8fc30018 	lw	v1,24(s8)
  4cfb38:	8fc2001c 	lw	v0,28(s8)
  4cfb3c:	00000000 	nop
  4cfb40:	00621021 	addu	v0,v1,v0
  4cfb44:	afc20018 	sw	v0,24(s8)
  4cfb48:	8fc3001c 	lw	v1,28(s8)
  4cfb4c:	8fc20018 	lw	v0,24(s8)
  4cfb50:	00000000 	nop
  4cfb54:	00621021 	addu	v0,v1,v0
  4cfb58:	afc2001c 	sw	v0,28(s8)
  4cfb5c:	8fc20028 	lw	v0,40(s8)
  4cfb60:	00000000 	nop
  4cfb64:	8c431054 	lw	v1,4180(v0)
  4cfb68:	8fc2001c 	lw	v0,28(s8)
  4cfb6c:	00000000 	nop
  4cfb70:	00431821 	addu	v1,v0,v1
  4cfb74:	8fc20014 	lw	v0,20(s8)
  4cfb78:	00000000 	nop
  4cfb7c:	00431026 	xor	v0,v0,v1
  4cfb80:	afc20014 	sw	v0,20(s8)
  4cfb84:	8fc20014 	lw	v0,20(s8)
  4cfb88:	00000000 	nop
  4cfb8c:	00021fc0 	sll	v1,v0,0x1f
  4cfb90:	00021042 	srl	v0,v0,0x1
  4cfb94:	00621025 	or	v0,v1,v0
  4cfb98:	afc20014 	sw	v0,20(s8)
  4cfb9c:	8fc20010 	lw	v0,16(s8)
  4cfba0:	00000000 	nop
  4cfba4:	00021840 	sll	v1,v0,0x1
  4cfba8:	000217c2 	srl	v0,v0,0x1f
  4cfbac:	00621025 	or	v0,v1,v0
  4cfbb0:	afc20010 	sw	v0,16(s8)
  4cfbb4:	8fc20028 	lw	v0,40(s8)
  4cfbb8:	00000000 	nop
  4cfbbc:	8c431050 	lw	v1,4176(v0)
  4cfbc0:	8fc20018 	lw	v0,24(s8)
  4cfbc4:	00000000 	nop
  4cfbc8:	00431821 	addu	v1,v0,v1
  4cfbcc:	8fc20010 	lw	v0,16(s8)
  4cfbd0:	00000000 	nop
  4cfbd4:	00431026 	xor	v0,v0,v1
  4cfbd8:	afc20010 	sw	v0,16(s8)
	DECCYCLE (2);
  4cfbdc:	8fc20010 	lw	v0,16(s8)
  4cfbe0:	00000000 	nop
  4cfbe4:	304200ff 	andi	v0,v0,0xff
  4cfbe8:	00021880 	sll	v1,v0,0x2
  4cfbec:	8fc20028 	lw	v0,40(s8)
  4cfbf0:	00000000 	nop
  4cfbf4:	00432021 	addu	a0,v0,v1
  4cfbf8:	8fc20010 	lw	v0,16(s8)
  4cfbfc:	00000000 	nop
  4cfc00:	00021202 	srl	v0,v0,0x8
  4cfc04:	304200ff 	andi	v0,v0,0xff
  4cfc08:	00021080 	sll	v0,v0,0x2
  4cfc0c:	24430400 	addiu	v1,v0,1024
  4cfc10:	8fc20028 	lw	v0,40(s8)
  4cfc14:	00000000 	nop
  4cfc18:	00431021 	addu	v0,v0,v1
  4cfc1c:	8c830000 	lw	v1,0(a0)
  4cfc20:	8c420000 	lw	v0,0(v0)
  4cfc24:	00000000 	nop
  4cfc28:	00622026 	xor	a0,v1,v0
  4cfc2c:	8fc20010 	lw	v0,16(s8)
  4cfc30:	00000000 	nop
  4cfc34:	00021402 	srl	v0,v0,0x10
  4cfc38:	304200ff 	andi	v0,v0,0xff
  4cfc3c:	00021080 	sll	v0,v0,0x2
  4cfc40:	24430800 	addiu	v1,v0,2048
  4cfc44:	8fc20028 	lw	v0,40(s8)
  4cfc48:	00000000 	nop
  4cfc4c:	00431021 	addu	v0,v0,v1
  4cfc50:	8c420000 	lw	v0,0(v0)
  4cfc54:	00000000 	nop
  4cfc58:	00822026 	xor	a0,a0,v0
  4cfc5c:	8fc20010 	lw	v0,16(s8)
  4cfc60:	00000000 	nop
  4cfc64:	00021602 	srl	v0,v0,0x18
  4cfc68:	00021080 	sll	v0,v0,0x2
  4cfc6c:	24430c00 	addiu	v1,v0,3072
  4cfc70:	8fc20028 	lw	v0,40(s8)
  4cfc74:	00000000 	nop
  4cfc78:	00431021 	addu	v0,v0,v1
  4cfc7c:	8c420000 	lw	v0,0(v0)
  4cfc80:	00000000 	nop
  4cfc84:	00821026 	xor	v0,a0,v0
  4cfc88:	afc20018 	sw	v0,24(s8)
  4cfc8c:	8fc20014 	lw	v0,20(s8)
  4cfc90:	00000000 	nop
  4cfc94:	304200ff 	andi	v0,v0,0xff
  4cfc98:	00021080 	sll	v0,v0,0x2
  4cfc9c:	24430400 	addiu	v1,v0,1024
  4cfca0:	8fc20028 	lw	v0,40(s8)
  4cfca4:	00000000 	nop
  4cfca8:	00432021 	addu	a0,v0,v1
  4cfcac:	8fc20014 	lw	v0,20(s8)
  4cfcb0:	00000000 	nop
  4cfcb4:	00021202 	srl	v0,v0,0x8
  4cfcb8:	304200ff 	andi	v0,v0,0xff
  4cfcbc:	00021080 	sll	v0,v0,0x2
  4cfcc0:	24430800 	addiu	v1,v0,2048
  4cfcc4:	8fc20028 	lw	v0,40(s8)
  4cfcc8:	00000000 	nop
  4cfccc:	00431021 	addu	v0,v0,v1
  4cfcd0:	8c830000 	lw	v1,0(a0)
  4cfcd4:	8c420000 	lw	v0,0(v0)
  4cfcd8:	00000000 	nop
  4cfcdc:	00622026 	xor	a0,v1,v0
  4cfce0:	8fc20014 	lw	v0,20(s8)
  4cfce4:	00000000 	nop
  4cfce8:	00021402 	srl	v0,v0,0x10
  4cfcec:	304200ff 	andi	v0,v0,0xff
  4cfcf0:	00021080 	sll	v0,v0,0x2
  4cfcf4:	24430c00 	addiu	v1,v0,3072
  4cfcf8:	8fc20028 	lw	v0,40(s8)
  4cfcfc:	00000000 	nop
  4cfd00:	00431021 	addu	v0,v0,v1
  4cfd04:	8c420000 	lw	v0,0(v0)
  4cfd08:	00000000 	nop
  4cfd0c:	00822026 	xor	a0,a0,v0
  4cfd10:	8fc20014 	lw	v0,20(s8)
  4cfd14:	00000000 	nop
  4cfd18:	00021602 	srl	v0,v0,0x18
  4cfd1c:	00021880 	sll	v1,v0,0x2
  4cfd20:	8fc20028 	lw	v0,40(s8)
  4cfd24:	00000000 	nop
  4cfd28:	00431021 	addu	v0,v0,v1
  4cfd2c:	8c420000 	lw	v0,0(v0)
  4cfd30:	00000000 	nop
  4cfd34:	00821026 	xor	v0,a0,v0
  4cfd38:	afc2001c 	sw	v0,28(s8)
  4cfd3c:	8fc30018 	lw	v1,24(s8)
  4cfd40:	8fc2001c 	lw	v0,28(s8)
  4cfd44:	00000000 	nop
  4cfd48:	00621021 	addu	v0,v1,v0
  4cfd4c:	afc20018 	sw	v0,24(s8)
  4cfd50:	8fc3001c 	lw	v1,28(s8)
  4cfd54:	8fc20018 	lw	v0,24(s8)
  4cfd58:	00000000 	nop
  4cfd5c:	00621021 	addu	v0,v1,v0
  4cfd60:	afc2001c 	sw	v0,28(s8)
  4cfd64:	8fc20028 	lw	v0,40(s8)
  4cfd68:	00000000 	nop
  4cfd6c:	8c43104c 	lw	v1,4172(v0)
  4cfd70:	8fc2001c 	lw	v0,28(s8)
  4cfd74:	00000000 	nop
  4cfd78:	00431821 	addu	v1,v0,v1
  4cfd7c:	8fc2000c 	lw	v0,12(s8)
  4cfd80:	00000000 	nop
  4cfd84:	00431026 	xor	v0,v0,v1
  4cfd88:	afc2000c 	sw	v0,12(s8)
  4cfd8c:	8fc2000c 	lw	v0,12(s8)
  4cfd90:	00000000 	nop
  4cfd94:	00021fc0 	sll	v1,v0,0x1f
  4cfd98:	00021042 	srl	v0,v0,0x1
  4cfd9c:	00621025 	or	v0,v1,v0
  4cfda0:	afc2000c 	sw	v0,12(s8)
  4cfda4:	8fc20008 	lw	v0,8(s8)
  4cfda8:	00000000 	nop
  4cfdac:	00021840 	sll	v1,v0,0x1
  4cfdb0:	000217c2 	srl	v0,v0,0x1f
  4cfdb4:	00621025 	or	v0,v1,v0
  4cfdb8:	afc20008 	sw	v0,8(s8)
  4cfdbc:	8fc20028 	lw	v0,40(s8)
  4cfdc0:	00000000 	nop
  4cfdc4:	8c431048 	lw	v1,4168(v0)
  4cfdc8:	8fc20018 	lw	v0,24(s8)
  4cfdcc:	00000000 	nop
  4cfdd0:	00431821 	addu	v1,v0,v1
  4cfdd4:	8fc20008 	lw	v0,8(s8)
  4cfdd8:	00000000 	nop
  4cfddc:	00431026 	xor	v0,v0,v1
  4cfde0:	afc20008 	sw	v0,8(s8)
  4cfde4:	8fc20008 	lw	v0,8(s8)
  4cfde8:	00000000 	nop
  4cfdec:	304200ff 	andi	v0,v0,0xff
  4cfdf0:	00021880 	sll	v1,v0,0x2
  4cfdf4:	8fc20028 	lw	v0,40(s8)
  4cfdf8:	00000000 	nop
  4cfdfc:	00432021 	addu	a0,v0,v1
  4cfe00:	8fc20008 	lw	v0,8(s8)
  4cfe04:	00000000 	nop
  4cfe08:	00021202 	srl	v0,v0,0x8
  4cfe0c:	304200ff 	andi	v0,v0,0xff
  4cfe10:	00021080 	sll	v0,v0,0x2
  4cfe14:	24430400 	addiu	v1,v0,1024
  4cfe18:	8fc20028 	lw	v0,40(s8)
  4cfe1c:	00000000 	nop
  4cfe20:	00431021 	addu	v0,v0,v1
  4cfe24:	8c830000 	lw	v1,0(a0)
  4cfe28:	8c420000 	lw	v0,0(v0)
  4cfe2c:	00000000 	nop
  4cfe30:	00622026 	xor	a0,v1,v0
  4cfe34:	8fc20008 	lw	v0,8(s8)
  4cfe38:	00000000 	nop
  4cfe3c:	00021402 	srl	v0,v0,0x10
  4cfe40:	304200ff 	andi	v0,v0,0xff
  4cfe44:	00021080 	sll	v0,v0,0x2
  4cfe48:	24430800 	addiu	v1,v0,2048
  4cfe4c:	8fc20028 	lw	v0,40(s8)
  4cfe50:	00000000 	nop
  4cfe54:	00431021 	addu	v0,v0,v1
  4cfe58:	8c420000 	lw	v0,0(v0)
  4cfe5c:	00000000 	nop
  4cfe60:	00822026 	xor	a0,a0,v0
  4cfe64:	8fc20008 	lw	v0,8(s8)
  4cfe68:	00000000 	nop
  4cfe6c:	00021602 	srl	v0,v0,0x18
  4cfe70:	00021080 	sll	v0,v0,0x2
  4cfe74:	24430c00 	addiu	v1,v0,3072
  4cfe78:	8fc20028 	lw	v0,40(s8)
  4cfe7c:	00000000 	nop
  4cfe80:	00431021 	addu	v0,v0,v1
  4cfe84:	8c420000 	lw	v0,0(v0)
  4cfe88:	00000000 	nop
  4cfe8c:	00821026 	xor	v0,a0,v0
  4cfe90:	afc20018 	sw	v0,24(s8)
  4cfe94:	8fc2000c 	lw	v0,12(s8)
  4cfe98:	00000000 	nop
  4cfe9c:	304200ff 	andi	v0,v0,0xff
  4cfea0:	00021080 	sll	v0,v0,0x2
  4cfea4:	24430400 	addiu	v1,v0,1024
  4cfea8:	8fc20028 	lw	v0,40(s8)
  4cfeac:	00000000 	nop
  4cfeb0:	00432021 	addu	a0,v0,v1
  4cfeb4:	8fc2000c 	lw	v0,12(s8)
  4cfeb8:	00000000 	nop
  4cfebc:	00021202 	srl	v0,v0,0x8
  4cfec0:	304200ff 	andi	v0,v0,0xff
  4cfec4:	00021080 	sll	v0,v0,0x2
  4cfec8:	24430800 	addiu	v1,v0,2048
  4cfecc:	8fc20028 	lw	v0,40(s8)
  4cfed0:	00000000 	nop
  4cfed4:	00431021 	addu	v0,v0,v1
  4cfed8:	8c830000 	lw	v1,0(a0)
  4cfedc:	8c420000 	lw	v0,0(v0)
  4cfee0:	00000000 	nop
  4cfee4:	00622026 	xor	a0,v1,v0
  4cfee8:	8fc2000c 	lw	v0,12(s8)
  4cfeec:	00000000 	nop
  4cfef0:	00021402 	srl	v0,v0,0x10
  4cfef4:	304200ff 	andi	v0,v0,0xff
  4cfef8:	00021080 	sll	v0,v0,0x2
  4cfefc:	24430c00 	addiu	v1,v0,3072
  4cff00:	8fc20028 	lw	v0,40(s8)
  4cff04:	00000000 	nop
  4cff08:	00431021 	addu	v0,v0,v1
  4cff0c:	8c420000 	lw	v0,0(v0)
  4cff10:	00000000 	nop
  4cff14:	00822026 	xor	a0,a0,v0
  4cff18:	8fc2000c 	lw	v0,12(s8)
  4cff1c:	00000000 	nop
  4cff20:	00021602 	srl	v0,v0,0x18
  4cff24:	00021880 	sll	v1,v0,0x2
  4cff28:	8fc20028 	lw	v0,40(s8)
  4cff2c:	00000000 	nop
  4cff30:	00431021 	addu	v0,v0,v1
  4cff34:	8c420000 	lw	v0,0(v0)
  4cff38:	00000000 	nop
  4cff3c:	00821026 	xor	v0,a0,v0
  4cff40:	afc2001c 	sw	v0,28(s8)
  4cff44:	8fc30018 	lw	v1,24(s8)
  4cff48:	8fc2001c 	lw	v0,28(s8)
  4cff4c:	00000000 	nop
  4cff50:	00621021 	addu	v0,v1,v0
  4cff54:	afc20018 	sw	v0,24(s8)
  4cff58:	8fc3001c 	lw	v1,28(s8)
  4cff5c:	8fc20018 	lw	v0,24(s8)
  4cff60:	00000000 	nop
  4cff64:	00621021 	addu	v0,v1,v0
  4cff68:	afc2001c 	sw	v0,28(s8)
  4cff6c:	8fc20028 	lw	v0,40(s8)
  4cff70:	00000000 	nop
  4cff74:	8c431044 	lw	v1,4164(v0)
  4cff78:	8fc2001c 	lw	v0,28(s8)
  4cff7c:	00000000 	nop
  4cff80:	00431821 	addu	v1,v0,v1
  4cff84:	8fc20014 	lw	v0,20(s8)
  4cff88:	00000000 	nop
  4cff8c:	00431026 	xor	v0,v0,v1
  4cff90:	afc20014 	sw	v0,20(s8)
  4cff94:	8fc20014 	lw	v0,20(s8)
  4cff98:	00000000 	nop
  4cff9c:	00021fc0 	sll	v1,v0,0x1f
  4cffa0:	00021042 	srl	v0,v0,0x1
  4cffa4:	00621025 	or	v0,v1,v0
  4cffa8:	afc20014 	sw	v0,20(s8)
  4cffac:	8fc20010 	lw	v0,16(s8)
  4cffb0:	00000000 	nop
  4cffb4:	00021840 	sll	v1,v0,0x1
  4cffb8:	000217c2 	srl	v0,v0,0x1f
  4cffbc:	00621025 	or	v0,v1,v0
  4cffc0:	afc20010 	sw	v0,16(s8)
  4cffc4:	8fc20028 	lw	v0,40(s8)
  4cffc8:	00000000 	nop
  4cffcc:	8c431040 	lw	v1,4160(v0)
  4cffd0:	8fc20018 	lw	v0,24(s8)
  4cffd4:	00000000 	nop
  4cffd8:	00431821 	addu	v1,v0,v1
  4cffdc:	8fc20010 	lw	v0,16(s8)
  4cffe0:	00000000 	nop
  4cffe4:	00431026 	xor	v0,v0,v1
  4cffe8:	afc20010 	sw	v0,16(s8)
	DECCYCLE (1);
  4cffec:	8fc20010 	lw	v0,16(s8)
  4cfff0:	00000000 	nop
  4cfff4:	304200ff 	andi	v0,v0,0xff
  4cfff8:	00021880 	sll	v1,v0,0x2
  4cfffc:	8fc20028 	lw	v0,40(s8)
  4d0000:	00000000 	nop
  4d0004:	00432021 	addu	a0,v0,v1
  4d0008:	8fc20010 	lw	v0,16(s8)
  4d000c:	00000000 	nop
  4d0010:	00021202 	srl	v0,v0,0x8
  4d0014:	304200ff 	andi	v0,v0,0xff
  4d0018:	00021080 	sll	v0,v0,0x2
  4d001c:	24430400 	addiu	v1,v0,1024
  4d0020:	8fc20028 	lw	v0,40(s8)
  4d0024:	00000000 	nop
  4d0028:	00431021 	addu	v0,v0,v1
  4d002c:	8c830000 	lw	v1,0(a0)
  4d0030:	8c420000 	lw	v0,0(v0)
  4d0034:	00000000 	nop
  4d0038:	00622026 	xor	a0,v1,v0
  4d003c:	8fc20010 	lw	v0,16(s8)
  4d0040:	00000000 	nop
  4d0044:	00021402 	srl	v0,v0,0x10
  4d0048:	304200ff 	andi	v0,v0,0xff
  4d004c:	00021080 	sll	v0,v0,0x2
  4d0050:	24430800 	addiu	v1,v0,2048
  4d0054:	8fc20028 	lw	v0,40(s8)
  4d0058:	00000000 	nop
  4d005c:	00431021 	addu	v0,v0,v1
  4d0060:	8c420000 	lw	v0,0(v0)
  4d0064:	00000000 	nop
  4d0068:	00822026 	xor	a0,a0,v0
  4d006c:	8fc20010 	lw	v0,16(s8)
  4d0070:	00000000 	nop
  4d0074:	00021602 	srl	v0,v0,0x18
  4d0078:	00021080 	sll	v0,v0,0x2
  4d007c:	24430c00 	addiu	v1,v0,3072
  4d0080:	8fc20028 	lw	v0,40(s8)
  4d0084:	00000000 	nop
  4d0088:	00431021 	addu	v0,v0,v1
  4d008c:	8c420000 	lw	v0,0(v0)
  4d0090:	00000000 	nop
  4d0094:	00821026 	xor	v0,a0,v0
  4d0098:	afc20018 	sw	v0,24(s8)
  4d009c:	8fc20014 	lw	v0,20(s8)
  4d00a0:	00000000 	nop
  4d00a4:	304200ff 	andi	v0,v0,0xff
  4d00a8:	00021080 	sll	v0,v0,0x2
  4d00ac:	24430400 	addiu	v1,v0,1024
  4d00b0:	8fc20028 	lw	v0,40(s8)
  4d00b4:	00000000 	nop
  4d00b8:	00432021 	addu	a0,v0,v1
  4d00bc:	8fc20014 	lw	v0,20(s8)
  4d00c0:	00000000 	nop
  4d00c4:	00021202 	srl	v0,v0,0x8
  4d00c8:	304200ff 	andi	v0,v0,0xff
  4d00cc:	00021080 	sll	v0,v0,0x2
  4d00d0:	24430800 	addiu	v1,v0,2048
  4d00d4:	8fc20028 	lw	v0,40(s8)
  4d00d8:	00000000 	nop
  4d00dc:	00431021 	addu	v0,v0,v1
  4d00e0:	8c830000 	lw	v1,0(a0)
  4d00e4:	8c420000 	lw	v0,0(v0)
  4d00e8:	00000000 	nop
  4d00ec:	00622026 	xor	a0,v1,v0
  4d00f0:	8fc20014 	lw	v0,20(s8)
  4d00f4:	00000000 	nop
  4d00f8:	00021402 	srl	v0,v0,0x10
  4d00fc:	304200ff 	andi	v0,v0,0xff
  4d0100:	00021080 	sll	v0,v0,0x2
  4d0104:	24430c00 	addiu	v1,v0,3072
  4d0108:	8fc20028 	lw	v0,40(s8)
  4d010c:	00000000 	nop
  4d0110:	00431021 	addu	v0,v0,v1
  4d0114:	8c420000 	lw	v0,0(v0)
  4d0118:	00000000 	nop
  4d011c:	00822026 	xor	a0,a0,v0
  4d0120:	8fc20014 	lw	v0,20(s8)
  4d0124:	00000000 	nop
  4d0128:	00021602 	srl	v0,v0,0x18
  4d012c:	00021880 	sll	v1,v0,0x2
  4d0130:	8fc20028 	lw	v0,40(s8)
  4d0134:	00000000 	nop
  4d0138:	00431021 	addu	v0,v0,v1
  4d013c:	8c420000 	lw	v0,0(v0)
  4d0140:	00000000 	nop
  4d0144:	00821026 	xor	v0,a0,v0
  4d0148:	afc2001c 	sw	v0,28(s8)
  4d014c:	8fc30018 	lw	v1,24(s8)
  4d0150:	8fc2001c 	lw	v0,28(s8)
  4d0154:	00000000 	nop
  4d0158:	00621021 	addu	v0,v1,v0
  4d015c:	afc20018 	sw	v0,24(s8)
  4d0160:	8fc3001c 	lw	v1,28(s8)
  4d0164:	8fc20018 	lw	v0,24(s8)
  4d0168:	00000000 	nop
  4d016c:	00621021 	addu	v0,v1,v0
  4d0170:	afc2001c 	sw	v0,28(s8)
  4d0174:	8fc20028 	lw	v0,40(s8)
  4d0178:	00000000 	nop
  4d017c:	8c43103c 	lw	v1,4156(v0)
  4d0180:	8fc2001c 	lw	v0,28(s8)
  4d0184:	00000000 	nop
  4d0188:	00431821 	addu	v1,v0,v1
  4d018c:	8fc2000c 	lw	v0,12(s8)
  4d0190:	00000000 	nop
  4d0194:	00431026 	xor	v0,v0,v1
  4d0198:	afc2000c 	sw	v0,12(s8)
  4d019c:	8fc2000c 	lw	v0,12(s8)
  4d01a0:	00000000 	nop
  4d01a4:	00021fc0 	sll	v1,v0,0x1f
  4d01a8:	00021042 	srl	v0,v0,0x1
  4d01ac:	00621025 	or	v0,v1,v0
  4d01b0:	afc2000c 	sw	v0,12(s8)
  4d01b4:	8fc20008 	lw	v0,8(s8)
  4d01b8:	00000000 	nop
  4d01bc:	00021840 	sll	v1,v0,0x1
  4d01c0:	000217c2 	srl	v0,v0,0x1f
  4d01c4:	00621025 	or	v0,v1,v0
  4d01c8:	afc20008 	sw	v0,8(s8)
  4d01cc:	8fc20028 	lw	v0,40(s8)
  4d01d0:	00000000 	nop
  4d01d4:	8c431038 	lw	v1,4152(v0)
  4d01d8:	8fc20018 	lw	v0,24(s8)
  4d01dc:	00000000 	nop
  4d01e0:	00431821 	addu	v1,v0,v1
  4d01e4:	8fc20008 	lw	v0,8(s8)
  4d01e8:	00000000 	nop
  4d01ec:	00431026 	xor	v0,v0,v1
  4d01f0:	afc20008 	sw	v0,8(s8)
  4d01f4:	8fc20008 	lw	v0,8(s8)
  4d01f8:	00000000 	nop
  4d01fc:	304200ff 	andi	v0,v0,0xff
  4d0200:	00021880 	sll	v1,v0,0x2
  4d0204:	8fc20028 	lw	v0,40(s8)
  4d0208:	00000000 	nop
  4d020c:	00432021 	addu	a0,v0,v1
  4d0210:	8fc20008 	lw	v0,8(s8)
  4d0214:	00000000 	nop
  4d0218:	00021202 	srl	v0,v0,0x8
  4d021c:	304200ff 	andi	v0,v0,0xff
  4d0220:	00021080 	sll	v0,v0,0x2
  4d0224:	24430400 	addiu	v1,v0,1024
  4d0228:	8fc20028 	lw	v0,40(s8)
  4d022c:	00000000 	nop
  4d0230:	00431021 	addu	v0,v0,v1
  4d0234:	8c830000 	lw	v1,0(a0)
  4d0238:	8c420000 	lw	v0,0(v0)
  4d023c:	00000000 	nop
  4d0240:	00622026 	xor	a0,v1,v0
  4d0244:	8fc20008 	lw	v0,8(s8)
  4d0248:	00000000 	nop
  4d024c:	00021402 	srl	v0,v0,0x10
  4d0250:	304200ff 	andi	v0,v0,0xff
  4d0254:	00021080 	sll	v0,v0,0x2
  4d0258:	24430800 	addiu	v1,v0,2048
  4d025c:	8fc20028 	lw	v0,40(s8)
  4d0260:	00000000 	nop
  4d0264:	00431021 	addu	v0,v0,v1
  4d0268:	8c420000 	lw	v0,0(v0)
  4d026c:	00000000 	nop
  4d0270:	00822026 	xor	a0,a0,v0
  4d0274:	8fc20008 	lw	v0,8(s8)
  4d0278:	00000000 	nop
  4d027c:	00021602 	srl	v0,v0,0x18
  4d0280:	00021080 	sll	v0,v0,0x2
  4d0284:	24430c00 	addiu	v1,v0,3072
  4d0288:	8fc20028 	lw	v0,40(s8)
  4d028c:	00000000 	nop
  4d0290:	00431021 	addu	v0,v0,v1
  4d0294:	8c420000 	lw	v0,0(v0)
  4d0298:	00000000 	nop
  4d029c:	00821026 	xor	v0,a0,v0
  4d02a0:	afc20018 	sw	v0,24(s8)
  4d02a4:	8fc2000c 	lw	v0,12(s8)
  4d02a8:	00000000 	nop
  4d02ac:	304200ff 	andi	v0,v0,0xff
  4d02b0:	00021080 	sll	v0,v0,0x2
  4d02b4:	24430400 	addiu	v1,v0,1024
  4d02b8:	8fc20028 	lw	v0,40(s8)
  4d02bc:	00000000 	nop
  4d02c0:	00432021 	addu	a0,v0,v1
  4d02c4:	8fc2000c 	lw	v0,12(s8)
  4d02c8:	00000000 	nop
  4d02cc:	00021202 	srl	v0,v0,0x8
  4d02d0:	304200ff 	andi	v0,v0,0xff
  4d02d4:	00021080 	sll	v0,v0,0x2
  4d02d8:	24430800 	addiu	v1,v0,2048
  4d02dc:	8fc20028 	lw	v0,40(s8)
  4d02e0:	00000000 	nop
  4d02e4:	00431021 	addu	v0,v0,v1
  4d02e8:	8c830000 	lw	v1,0(a0)
  4d02ec:	8c420000 	lw	v0,0(v0)
  4d02f0:	00000000 	nop
  4d02f4:	00622026 	xor	a0,v1,v0
  4d02f8:	8fc2000c 	lw	v0,12(s8)
  4d02fc:	00000000 	nop
  4d0300:	00021402 	srl	v0,v0,0x10
  4d0304:	304200ff 	andi	v0,v0,0xff
  4d0308:	00021080 	sll	v0,v0,0x2
  4d030c:	24430c00 	addiu	v1,v0,3072
  4d0310:	8fc20028 	lw	v0,40(s8)
  4d0314:	00000000 	nop
  4d0318:	00431021 	addu	v0,v0,v1
  4d031c:	8c420000 	lw	v0,0(v0)
  4d0320:	00000000 	nop
  4d0324:	00822026 	xor	a0,a0,v0
  4d0328:	8fc2000c 	lw	v0,12(s8)
  4d032c:	00000000 	nop
  4d0330:	00021602 	srl	v0,v0,0x18
  4d0334:	00021880 	sll	v1,v0,0x2
  4d0338:	8fc20028 	lw	v0,40(s8)
  4d033c:	00000000 	nop
  4d0340:	00431021 	addu	v0,v0,v1
  4d0344:	8c420000 	lw	v0,0(v0)
  4d0348:	00000000 	nop
  4d034c:	00821026 	xor	v0,a0,v0
  4d0350:	afc2001c 	sw	v0,28(s8)
  4d0354:	8fc30018 	lw	v1,24(s8)
  4d0358:	8fc2001c 	lw	v0,28(s8)
  4d035c:	00000000 	nop
  4d0360:	00621021 	addu	v0,v1,v0
  4d0364:	afc20018 	sw	v0,24(s8)
  4d0368:	8fc3001c 	lw	v1,28(s8)
  4d036c:	8fc20018 	lw	v0,24(s8)
  4d0370:	00000000 	nop
  4d0374:	00621021 	addu	v0,v1,v0
  4d0378:	afc2001c 	sw	v0,28(s8)
  4d037c:	8fc20028 	lw	v0,40(s8)
  4d0380:	00000000 	nop
  4d0384:	8c431034 	lw	v1,4148(v0)
  4d0388:	8fc2001c 	lw	v0,28(s8)
  4d038c:	00000000 	nop
  4d0390:	00431821 	addu	v1,v0,v1
  4d0394:	8fc20014 	lw	v0,20(s8)
  4d0398:	00000000 	nop
  4d039c:	00431026 	xor	v0,v0,v1
  4d03a0:	afc20014 	sw	v0,20(s8)
  4d03a4:	8fc20014 	lw	v0,20(s8)
  4d03a8:	00000000 	nop
  4d03ac:	00021fc0 	sll	v1,v0,0x1f
  4d03b0:	00021042 	srl	v0,v0,0x1
  4d03b4:	00621025 	or	v0,v1,v0
  4d03b8:	afc20014 	sw	v0,20(s8)
  4d03bc:	8fc20010 	lw	v0,16(s8)
  4d03c0:	00000000 	nop
  4d03c4:	00021840 	sll	v1,v0,0x1
  4d03c8:	000217c2 	srl	v0,v0,0x1f
  4d03cc:	00621025 	or	v0,v1,v0
  4d03d0:	afc20010 	sw	v0,16(s8)
  4d03d4:	8fc20028 	lw	v0,40(s8)
  4d03d8:	00000000 	nop
  4d03dc:	8c431030 	lw	v1,4144(v0)
  4d03e0:	8fc20018 	lw	v0,24(s8)
  4d03e4:	00000000 	nop
  4d03e8:	00431821 	addu	v1,v0,v1
  4d03ec:	8fc20010 	lw	v0,16(s8)
  4d03f0:	00000000 	nop
  4d03f4:	00431026 	xor	v0,v0,v1
  4d03f8:	afc20010 	sw	v0,16(s8)
	DECCYCLE (0);
  4d03fc:	8fc20010 	lw	v0,16(s8)
  4d0400:	00000000 	nop
  4d0404:	304200ff 	andi	v0,v0,0xff
  4d0408:	00021880 	sll	v1,v0,0x2
  4d040c:	8fc20028 	lw	v0,40(s8)
  4d0410:	00000000 	nop
  4d0414:	00432021 	addu	a0,v0,v1
  4d0418:	8fc20010 	lw	v0,16(s8)
  4d041c:	00000000 	nop
  4d0420:	00021202 	srl	v0,v0,0x8
  4d0424:	304200ff 	andi	v0,v0,0xff
  4d0428:	00021080 	sll	v0,v0,0x2
  4d042c:	24430400 	addiu	v1,v0,1024
  4d0430:	8fc20028 	lw	v0,40(s8)
  4d0434:	00000000 	nop
  4d0438:	00431021 	addu	v0,v0,v1
  4d043c:	8c830000 	lw	v1,0(a0)
  4d0440:	8c420000 	lw	v0,0(v0)
  4d0444:	00000000 	nop
  4d0448:	00622026 	xor	a0,v1,v0
  4d044c:	8fc20010 	lw	v0,16(s8)
  4d0450:	00000000 	nop
  4d0454:	00021402 	srl	v0,v0,0x10
  4d0458:	304200ff 	andi	v0,v0,0xff
  4d045c:	00021080 	sll	v0,v0,0x2
  4d0460:	24430800 	addiu	v1,v0,2048
  4d0464:	8fc20028 	lw	v0,40(s8)
  4d0468:	00000000 	nop
  4d046c:	00431021 	addu	v0,v0,v1
  4d0470:	8c420000 	lw	v0,0(v0)
  4d0474:	00000000 	nop
  4d0478:	00822026 	xor	a0,a0,v0
  4d047c:	8fc20010 	lw	v0,16(s8)
  4d0480:	00000000 	nop
  4d0484:	00021602 	srl	v0,v0,0x18
  4d0488:	00021080 	sll	v0,v0,0x2
  4d048c:	24430c00 	addiu	v1,v0,3072
  4d0490:	8fc20028 	lw	v0,40(s8)
  4d0494:	00000000 	nop
  4d0498:	00431021 	addu	v0,v0,v1
  4d049c:	8c420000 	lw	v0,0(v0)
  4d04a0:	00000000 	nop
  4d04a4:	00821026 	xor	v0,a0,v0
  4d04a8:	afc20018 	sw	v0,24(s8)
  4d04ac:	8fc20014 	lw	v0,20(s8)
  4d04b0:	00000000 	nop
  4d04b4:	304200ff 	andi	v0,v0,0xff
  4d04b8:	00021080 	sll	v0,v0,0x2
  4d04bc:	24430400 	addiu	v1,v0,1024
  4d04c0:	8fc20028 	lw	v0,40(s8)
  4d04c4:	00000000 	nop
  4d04c8:	00432021 	addu	a0,v0,v1
  4d04cc:	8fc20014 	lw	v0,20(s8)
  4d04d0:	00000000 	nop
  4d04d4:	00021202 	srl	v0,v0,0x8
  4d04d8:	304200ff 	andi	v0,v0,0xff
  4d04dc:	00021080 	sll	v0,v0,0x2
  4d04e0:	24430800 	addiu	v1,v0,2048
  4d04e4:	8fc20028 	lw	v0,40(s8)
  4d04e8:	00000000 	nop
  4d04ec:	00431021 	addu	v0,v0,v1
  4d04f0:	8c830000 	lw	v1,0(a0)
  4d04f4:	8c420000 	lw	v0,0(v0)
  4d04f8:	00000000 	nop
  4d04fc:	00622026 	xor	a0,v1,v0
  4d0500:	8fc20014 	lw	v0,20(s8)
  4d0504:	00000000 	nop
  4d0508:	00021402 	srl	v0,v0,0x10
  4d050c:	304200ff 	andi	v0,v0,0xff
  4d0510:	00021080 	sll	v0,v0,0x2
  4d0514:	24430c00 	addiu	v1,v0,3072
  4d0518:	8fc20028 	lw	v0,40(s8)
  4d051c:	00000000 	nop
  4d0520:	00431021 	addu	v0,v0,v1
  4d0524:	8c420000 	lw	v0,0(v0)
  4d0528:	00000000 	nop
  4d052c:	00822026 	xor	a0,a0,v0
  4d0530:	8fc20014 	lw	v0,20(s8)
  4d0534:	00000000 	nop
  4d0538:	00021602 	srl	v0,v0,0x18
  4d053c:	00021880 	sll	v1,v0,0x2
  4d0540:	8fc20028 	lw	v0,40(s8)
  4d0544:	00000000 	nop
  4d0548:	00431021 	addu	v0,v0,v1
  4d054c:	8c420000 	lw	v0,0(v0)
  4d0550:	00000000 	nop
  4d0554:	00821026 	xor	v0,a0,v0
  4d0558:	afc2001c 	sw	v0,28(s8)
  4d055c:	8fc30018 	lw	v1,24(s8)
  4d0560:	8fc2001c 	lw	v0,28(s8)
  4d0564:	00000000 	nop
  4d0568:	00621021 	addu	v0,v1,v0
  4d056c:	afc20018 	sw	v0,24(s8)
  4d0570:	8fc3001c 	lw	v1,28(s8)
  4d0574:	8fc20018 	lw	v0,24(s8)
  4d0578:	00000000 	nop
  4d057c:	00621021 	addu	v0,v1,v0
  4d0580:	afc2001c 	sw	v0,28(s8)
  4d0584:	8fc20028 	lw	v0,40(s8)
  4d0588:	00000000 	nop
  4d058c:	8c43102c 	lw	v1,4140(v0)
  4d0590:	8fc2001c 	lw	v0,28(s8)
  4d0594:	00000000 	nop
  4d0598:	00431821 	addu	v1,v0,v1
  4d059c:	8fc2000c 	lw	v0,12(s8)
  4d05a0:	00000000 	nop
  4d05a4:	00431026 	xor	v0,v0,v1
  4d05a8:	afc2000c 	sw	v0,12(s8)
  4d05ac:	8fc2000c 	lw	v0,12(s8)
  4d05b0:	00000000 	nop
  4d05b4:	00021fc0 	sll	v1,v0,0x1f
  4d05b8:	00021042 	srl	v0,v0,0x1
  4d05bc:	00621025 	or	v0,v1,v0
  4d05c0:	afc2000c 	sw	v0,12(s8)
  4d05c4:	8fc20008 	lw	v0,8(s8)
  4d05c8:	00000000 	nop
  4d05cc:	00021840 	sll	v1,v0,0x1
  4d05d0:	000217c2 	srl	v0,v0,0x1f
  4d05d4:	00621025 	or	v0,v1,v0
  4d05d8:	afc20008 	sw	v0,8(s8)
  4d05dc:	8fc20028 	lw	v0,40(s8)
  4d05e0:	00000000 	nop
  4d05e4:	8c431028 	lw	v1,4136(v0)
  4d05e8:	8fc20018 	lw	v0,24(s8)
  4d05ec:	00000000 	nop
  4d05f0:	00431821 	addu	v1,v0,v1
  4d05f4:	8fc20008 	lw	v0,8(s8)
  4d05f8:	00000000 	nop
  4d05fc:	00431026 	xor	v0,v0,v1
  4d0600:	afc20008 	sw	v0,8(s8)
  4d0604:	8fc20008 	lw	v0,8(s8)
  4d0608:	00000000 	nop
  4d060c:	304200ff 	andi	v0,v0,0xff
  4d0610:	00021880 	sll	v1,v0,0x2
  4d0614:	8fc20028 	lw	v0,40(s8)
  4d0618:	00000000 	nop
  4d061c:	00432021 	addu	a0,v0,v1
  4d0620:	8fc20008 	lw	v0,8(s8)
  4d0624:	00000000 	nop
  4d0628:	00021202 	srl	v0,v0,0x8
  4d062c:	304200ff 	andi	v0,v0,0xff
  4d0630:	00021080 	sll	v0,v0,0x2
  4d0634:	24430400 	addiu	v1,v0,1024
  4d0638:	8fc20028 	lw	v0,40(s8)
  4d063c:	00000000 	nop
  4d0640:	00431021 	addu	v0,v0,v1
  4d0644:	8c830000 	lw	v1,0(a0)
  4d0648:	8c420000 	lw	v0,0(v0)
  4d064c:	00000000 	nop
  4d0650:	00622026 	xor	a0,v1,v0
  4d0654:	8fc20008 	lw	v0,8(s8)
  4d0658:	00000000 	nop
  4d065c:	00021402 	srl	v0,v0,0x10
  4d0660:	304200ff 	andi	v0,v0,0xff
  4d0664:	00021080 	sll	v0,v0,0x2
  4d0668:	24430800 	addiu	v1,v0,2048
  4d066c:	8fc20028 	lw	v0,40(s8)
  4d0670:	00000000 	nop
  4d0674:	00431021 	addu	v0,v0,v1
  4d0678:	8c420000 	lw	v0,0(v0)
  4d067c:	00000000 	nop
  4d0680:	00822026 	xor	a0,a0,v0
  4d0684:	8fc20008 	lw	v0,8(s8)
  4d0688:	00000000 	nop
  4d068c:	00021602 	srl	v0,v0,0x18
  4d0690:	00021080 	sll	v0,v0,0x2
  4d0694:	24430c00 	addiu	v1,v0,3072
  4d0698:	8fc20028 	lw	v0,40(s8)
  4d069c:	00000000 	nop
  4d06a0:	00431021 	addu	v0,v0,v1
  4d06a4:	8c420000 	lw	v0,0(v0)
  4d06a8:	00000000 	nop
  4d06ac:	00821026 	xor	v0,a0,v0
  4d06b0:	afc20018 	sw	v0,24(s8)
  4d06b4:	8fc2000c 	lw	v0,12(s8)
  4d06b8:	00000000 	nop
  4d06bc:	304200ff 	andi	v0,v0,0xff
  4d06c0:	00021080 	sll	v0,v0,0x2
  4d06c4:	24430400 	addiu	v1,v0,1024
  4d06c8:	8fc20028 	lw	v0,40(s8)
  4d06cc:	00000000 	nop
  4d06d0:	00432021 	addu	a0,v0,v1
  4d06d4:	8fc2000c 	lw	v0,12(s8)
  4d06d8:	00000000 	nop
  4d06dc:	00021202 	srl	v0,v0,0x8
  4d06e0:	304200ff 	andi	v0,v0,0xff
  4d06e4:	00021080 	sll	v0,v0,0x2
  4d06e8:	24430800 	addiu	v1,v0,2048
  4d06ec:	8fc20028 	lw	v0,40(s8)
  4d06f0:	00000000 	nop
  4d06f4:	00431021 	addu	v0,v0,v1
  4d06f8:	8c830000 	lw	v1,0(a0)
  4d06fc:	8c420000 	lw	v0,0(v0)
  4d0700:	00000000 	nop
  4d0704:	00622026 	xor	a0,v1,v0
  4d0708:	8fc2000c 	lw	v0,12(s8)
  4d070c:	00000000 	nop
  4d0710:	00021402 	srl	v0,v0,0x10
  4d0714:	304200ff 	andi	v0,v0,0xff
  4d0718:	00021080 	sll	v0,v0,0x2
  4d071c:	24430c00 	addiu	v1,v0,3072
  4d0720:	8fc20028 	lw	v0,40(s8)
  4d0724:	00000000 	nop
  4d0728:	00431021 	addu	v0,v0,v1
  4d072c:	8c420000 	lw	v0,0(v0)
  4d0730:	00000000 	nop
  4d0734:	00822026 	xor	a0,a0,v0
  4d0738:	8fc2000c 	lw	v0,12(s8)
  4d073c:	00000000 	nop
  4d0740:	00021602 	srl	v0,v0,0x18
  4d0744:	00021880 	sll	v1,v0,0x2
  4d0748:	8fc20028 	lw	v0,40(s8)
  4d074c:	00000000 	nop
  4d0750:	00431021 	addu	v0,v0,v1
  4d0754:	8c420000 	lw	v0,0(v0)
  4d0758:	00000000 	nop
  4d075c:	00821026 	xor	v0,a0,v0
  4d0760:	afc2001c 	sw	v0,28(s8)
  4d0764:	8fc30018 	lw	v1,24(s8)
  4d0768:	8fc2001c 	lw	v0,28(s8)
  4d076c:	00000000 	nop
  4d0770:	00621021 	addu	v0,v1,v0
  4d0774:	afc20018 	sw	v0,24(s8)
  4d0778:	8fc3001c 	lw	v1,28(s8)
  4d077c:	8fc20018 	lw	v0,24(s8)
  4d0780:	00000000 	nop
  4d0784:	00621021 	addu	v0,v1,v0
  4d0788:	afc2001c 	sw	v0,28(s8)
  4d078c:	8fc20028 	lw	v0,40(s8)
  4d0790:	00000000 	nop
  4d0794:	8c431024 	lw	v1,4132(v0)
  4d0798:	8fc2001c 	lw	v0,28(s8)
  4d079c:	00000000 	nop
  4d07a0:	00431821 	addu	v1,v0,v1
  4d07a4:	8fc20014 	lw	v0,20(s8)
  4d07a8:	00000000 	nop
  4d07ac:	00431026 	xor	v0,v0,v1
  4d07b0:	afc20014 	sw	v0,20(s8)
  4d07b4:	8fc20014 	lw	v0,20(s8)
  4d07b8:	00000000 	nop
  4d07bc:	00021fc0 	sll	v1,v0,0x1f
  4d07c0:	00021042 	srl	v0,v0,0x1
  4d07c4:	00621025 	or	v0,v1,v0
  4d07c8:	afc20014 	sw	v0,20(s8)
  4d07cc:	8fc20010 	lw	v0,16(s8)
  4d07d0:	00000000 	nop
  4d07d4:	00021840 	sll	v1,v0,0x1
  4d07d8:	000217c2 	srl	v0,v0,0x1f
  4d07dc:	00621025 	or	v0,v1,v0
  4d07e0:	afc20010 	sw	v0,16(s8)
  4d07e4:	8fc20028 	lw	v0,40(s8)
  4d07e8:	00000000 	nop
  4d07ec:	8c431020 	lw	v1,4128(v0)
  4d07f0:	8fc20018 	lw	v0,24(s8)
  4d07f4:	00000000 	nop
  4d07f8:	00431821 	addu	v1,v0,v1
  4d07fc:	8fc20010 	lw	v0,16(s8)
  4d0800:	00000000 	nop
  4d0804:	00431026 	xor	v0,v0,v1
  4d0808:	afc20010 	sw	v0,16(s8)

	/* Output whitening and unpacking. */
	OUTUNPACK (0, a, 0);
  4d080c:	8fc20028 	lw	v0,40(s8)
  4d0810:	00000000 	nop
  4d0814:	8c431000 	lw	v1,4096(v0)
  4d0818:	8fc20008 	lw	v0,8(s8)
  4d081c:	00000000 	nop
  4d0820:	00431026 	xor	v0,v0,v1
  4d0824:	afc20008 	sw	v0,8(s8)
  4d0828:	93c3000b 	lbu	v1,11(s8)
  4d082c:	8fc20030 	lw	v0,48(s8)
  4d0830:	00000000 	nop
  4d0834:	a0430000 	sb	v1,0(v0)
  4d0838:	8fc20030 	lw	v0,48(s8)
  4d083c:	00000000 	nop
  4d0840:	24430001 	addiu	v1,v0,1
  4d0844:	8fc20008 	lw	v0,8(s8)
  4d0848:	00000000 	nop
  4d084c:	00021202 	srl	v0,v0,0x8
  4d0850:	a0620000 	sb	v0,0(v1)
  4d0854:	8fc20030 	lw	v0,48(s8)
  4d0858:	00000000 	nop
  4d085c:	24430002 	addiu	v1,v0,2
  4d0860:	8fc20008 	lw	v0,8(s8)
  4d0864:	00000000 	nop
  4d0868:	00021402 	srl	v0,v0,0x10
  4d086c:	a0620000 	sb	v0,0(v1)
  4d0870:	8fc20030 	lw	v0,48(s8)
  4d0874:	00000000 	nop
  4d0878:	24430003 	addiu	v1,v0,3
  4d087c:	8fc20008 	lw	v0,8(s8)
  4d0880:	00000000 	nop
  4d0884:	00021602 	srl	v0,v0,0x18
  4d0888:	a0620000 	sb	v0,0(v1)
	OUTUNPACK (1, b, 1);
  4d088c:	8fc20028 	lw	v0,40(s8)
  4d0890:	00000000 	nop
  4d0894:	8c431004 	lw	v1,4100(v0)
  4d0898:	8fc2000c 	lw	v0,12(s8)
  4d089c:	00000000 	nop
  4d08a0:	00431026 	xor	v0,v0,v1
  4d08a4:	afc2000c 	sw	v0,12(s8)
  4d08a8:	8fc20030 	lw	v0,48(s8)
  4d08ac:	00000000 	nop
  4d08b0:	24430004 	addiu	v1,v0,4
  4d08b4:	93c2000f 	lbu	v0,15(s8)
  4d08b8:	00000000 	nop
  4d08bc:	a0620000 	sb	v0,0(v1)
  4d08c0:	8fc20030 	lw	v0,48(s8)
  4d08c4:	00000000 	nop
  4d08c8:	24430005 	addiu	v1,v0,5
  4d08cc:	8fc2000c 	lw	v0,12(s8)
  4d08d0:	00000000 	nop
  4d08d4:	00021202 	srl	v0,v0,0x8
  4d08d8:	a0620000 	sb	v0,0(v1)
  4d08dc:	8fc20030 	lw	v0,48(s8)
  4d08e0:	00000000 	nop
  4d08e4:	24430006 	addiu	v1,v0,6
  4d08e8:	8fc2000c 	lw	v0,12(s8)
  4d08ec:	00000000 	nop
  4d08f0:	00021402 	srl	v0,v0,0x10
  4d08f4:	a0620000 	sb	v0,0(v1)
  4d08f8:	8fc20030 	lw	v0,48(s8)
  4d08fc:	00000000 	nop
  4d0900:	24430007 	addiu	v1,v0,7
  4d0904:	8fc2000c 	lw	v0,12(s8)
  4d0908:	00000000 	nop
  4d090c:	00021602 	srl	v0,v0,0x18
  4d0910:	a0620000 	sb	v0,0(v1)
	OUTUNPACK (2, c, 2);
  4d0914:	8fc20028 	lw	v0,40(s8)
  4d0918:	00000000 	nop
  4d091c:	8c431008 	lw	v1,4104(v0)
  4d0920:	8fc20010 	lw	v0,16(s8)
  4d0924:	00000000 	nop
  4d0928:	00431026 	xor	v0,v0,v1
  4d092c:	afc20010 	sw	v0,16(s8)
  4d0930:	8fc20030 	lw	v0,48(s8)
  4d0934:	00000000 	nop
  4d0938:	24430008 	addiu	v1,v0,8
  4d093c:	93c20013 	lbu	v0,19(s8)
  4d0940:	00000000 	nop
  4d0944:	a0620000 	sb	v0,0(v1)
  4d0948:	8fc20030 	lw	v0,48(s8)
  4d094c:	00000000 	nop
  4d0950:	24430009 	addiu	v1,v0,9
  4d0954:	8fc20010 	lw	v0,16(s8)
  4d0958:	00000000 	nop
  4d095c:	00021202 	srl	v0,v0,0x8
  4d0960:	a0620000 	sb	v0,0(v1)
  4d0964:	8fc20030 	lw	v0,48(s8)
  4d0968:	00000000 	nop
  4d096c:	2443000a 	addiu	v1,v0,10
  4d0970:	8fc20010 	lw	v0,16(s8)
  4d0974:	00000000 	nop
  4d0978:	00021402 	srl	v0,v0,0x10
  4d097c:	a0620000 	sb	v0,0(v1)
  4d0980:	8fc20030 	lw	v0,48(s8)
  4d0984:	00000000 	nop
  4d0988:	2443000b 	addiu	v1,v0,11
  4d098c:	8fc20010 	lw	v0,16(s8)
  4d0990:	00000000 	nop
  4d0994:	00021602 	srl	v0,v0,0x18
  4d0998:	a0620000 	sb	v0,0(v1)
	OUTUNPACK (3, d, 3);
  4d099c:	8fc20028 	lw	v0,40(s8)
  4d09a0:	00000000 	nop
  4d09a4:	8c43100c 	lw	v1,4108(v0)
  4d09a8:	8fc20014 	lw	v0,20(s8)
  4d09ac:	00000000 	nop
  4d09b0:	00431026 	xor	v0,v0,v1
  4d09b4:	afc20014 	sw	v0,20(s8)
  4d09b8:	8fc20030 	lw	v0,48(s8)
  4d09bc:	00000000 	nop
  4d09c0:	2443000c 	addiu	v1,v0,12
  4d09c4:	93c20017 	lbu	v0,23(s8)
  4d09c8:	00000000 	nop
  4d09cc:	a0620000 	sb	v0,0(v1)
  4d09d0:	8fc20030 	lw	v0,48(s8)
  4d09d4:	00000000 	nop
  4d09d8:	2443000d 	addiu	v1,v0,13
  4d09dc:	8fc20014 	lw	v0,20(s8)
  4d09e0:	00000000 	nop
  4d09e4:	00021202 	srl	v0,v0,0x8
  4d09e8:	a0620000 	sb	v0,0(v1)
  4d09ec:	8fc20030 	lw	v0,48(s8)
  4d09f0:	00000000 	nop
  4d09f4:	2443000e 	addiu	v1,v0,14
  4d09f8:	8fc20014 	lw	v0,20(s8)
  4d09fc:	00000000 	nop
  4d0a00:	00021402 	srl	v0,v0,0x10
  4d0a04:	a0620000 	sb	v0,0(v1)
  4d0a08:	8fc20030 	lw	v0,48(s8)
  4d0a0c:	00000000 	nop
  4d0a10:	2443000f 	addiu	v1,v0,15
  4d0a14:	8fc20014 	lw	v0,20(s8)
  4d0a18:	00000000 	nop
  4d0a1c:	00021602 	srl	v0,v0,0x18
  4d0a20:	a0620000 	sb	v0,0(v1)

	return 0;
  4d0a24:	00001021 	move	v0,zero
}
  4d0a28:	03c0e821 	move	sp,s8
  4d0a2c:	8fbe0024 	lw	s8,36(sp)
  4d0a30:	27bd0028 	addiu	sp,sp,40
  4d0a34:	03e00008 	jr	ra
  4d0a38:	00000000 	nop
  4d0a3c:	00000000 	nop

004d0a40 <twofish_cbc_encrypt>:
  4d0a40:	3c1c0fb4 	lui	gp,0xfb4
  4d0a44:	279cbf30 	addiu	gp,gp,-16592
  4d0a48:	0399e021 	addu	gp,gp,t9
  4d0a4c:	27bdffc8 	addiu	sp,sp,-56
  4d0a50:	afbc0010 	sw	gp,16(sp)
  4d0a54:	afbf0030 	sw	ra,48(sp)
  4d0a58:	afbe002c 	sw	s8,44(sp)
  4d0a5c:	afbc0028 	sw	gp,40(sp)
  4d0a60:	03a0f021 	move	s8,sp
  4d0a64:	afc40038 	sw	a0,56(s8)
  4d0a68:	afc5003c 	sw	a1,60(s8)
  4d0a6c:	afc60040 	sw	a2,64(s8)
  4d0a70:	afc70044 	sw	a3,68(s8)
#include <sys/types.h>
#endif
#include "twofish_cbc.h"
#include "cbc_generic.h"
CBC_IMPL_BLK16(twofish_cbc_encrypt, twofish_context, u_int8_t *, twofish_encrypt, twofish_decrypt);
  4d0a74:	8fc20044 	lw	v0,68(s8)
  4d0a78:	00000000 	nop
  4d0a7c:	afc20018 	sw	v0,24(s8)
  4d0a80:	8fc20044 	lw	v0,68(s8)
  4d0a84:	00000000 	nop
  4d0a88:	3042000f 	andi	v0,v0,0xf
  4d0a8c:	10400004 	beqz	v0,4d0aa0 <twofish_cbc_encrypt+0x60>
  4d0a90:	00000000 	nop
  4d0a94:	00001021 	move	v0,zero
  4d0a98:	100000d3 	b	4d0de8 <twofish_cbc_encrypt+0x3a8>
  4d0a9c:	00000000 	nop
  4d0aa0:	8fc2004c 	lw	v0,76(s8)
  4d0aa4:	00000000 	nop
  4d0aa8:	10400062 	beqz	v0,4d0c34 <twofish_cbc_encrypt+0x1f4>
  4d0aac:	00000000 	nop
  4d0ab0:	afc0001c 	sw	zero,28(s8)
  4d0ab4:	8fc2001c 	lw	v0,28(s8)
  4d0ab8:	8fc30044 	lw	v1,68(s8)
  4d0abc:	00000000 	nop
  4d0ac0:	0043102a 	slt	v0,v0,v1
  4d0ac4:	14400003 	bnez	v0,4d0ad4 <twofish_cbc_encrypt+0x94>
  4d0ac8:	00000000 	nop
  4d0acc:	100000c5 	b	4d0de4 <twofish_cbc_encrypt+0x3a4>
  4d0ad0:	00000000 	nop
  4d0ad4:	8fc2001c 	lw	v0,28(s8)
  4d0ad8:	00000000 	nop
  4d0adc:	14400006 	bnez	v0,4d0af8 <twofish_cbc_encrypt+0xb8>
  4d0ae0:	00000000 	nop
  4d0ae4:	8fc20048 	lw	v0,72(s8)
  4d0ae8:	00000000 	nop
  4d0aec:	afc20020 	sw	v0,32(s8)
  4d0af0:	10000005 	b	4d0b08 <twofish_cbc_encrypt+0xc8>
  4d0af4:	00000000 	nop
  4d0af8:	8fc20040 	lw	v0,64(s8)
  4d0afc:	00000000 	nop
  4d0b00:	2442fff0 	addiu	v0,v0,-16
  4d0b04:	afc20020 	sw	v0,32(s8)
  4d0b08:	8fc20020 	lw	v0,32(s8)
  4d0b0c:	00000000 	nop
  4d0b10:	8c430000 	lw	v1,0(v0)
  4d0b14:	8fc2003c 	lw	v0,60(s8)
  4d0b18:	00000000 	nop
  4d0b1c:	8c420000 	lw	v0,0(v0)
  4d0b20:	00000000 	nop
  4d0b24:	00621826 	xor	v1,v1,v0
  4d0b28:	8fc20040 	lw	v0,64(s8)
  4d0b2c:	00000000 	nop
  4d0b30:	ac430000 	sw	v1,0(v0)
  4d0b34:	8fc20040 	lw	v0,64(s8)
  4d0b38:	00000000 	nop
  4d0b3c:	24440004 	addiu	a0,v0,4
  4d0b40:	8fc20020 	lw	v0,32(s8)
  4d0b44:	00000000 	nop
  4d0b48:	24430004 	addiu	v1,v0,4
  4d0b4c:	8fc2003c 	lw	v0,60(s8)
  4d0b50:	00000000 	nop
  4d0b54:	24420004 	addiu	v0,v0,4
  4d0b58:	8c630000 	lw	v1,0(v1)
  4d0b5c:	8c420000 	lw	v0,0(v0)
  4d0b60:	00000000 	nop
  4d0b64:	00621026 	xor	v0,v1,v0
  4d0b68:	ac820000 	sw	v0,0(a0)
  4d0b6c:	8fc20040 	lw	v0,64(s8)
  4d0b70:	00000000 	nop
  4d0b74:	24440008 	addiu	a0,v0,8
  4d0b78:	8fc20020 	lw	v0,32(s8)
  4d0b7c:	00000000 	nop
  4d0b80:	24430008 	addiu	v1,v0,8
  4d0b84:	8fc2003c 	lw	v0,60(s8)
  4d0b88:	00000000 	nop
  4d0b8c:	24420008 	addiu	v0,v0,8
  4d0b90:	8c630000 	lw	v1,0(v1)
  4d0b94:	8c420000 	lw	v0,0(v0)
  4d0b98:	00000000 	nop
  4d0b9c:	00621026 	xor	v0,v1,v0
  4d0ba0:	ac820000 	sw	v0,0(a0)
  4d0ba4:	8fc20040 	lw	v0,64(s8)
  4d0ba8:	00000000 	nop
  4d0bac:	2444000c 	addiu	a0,v0,12
  4d0bb0:	8fc20020 	lw	v0,32(s8)
  4d0bb4:	00000000 	nop
  4d0bb8:	2443000c 	addiu	v1,v0,12
  4d0bbc:	8fc2003c 	lw	v0,60(s8)
  4d0bc0:	00000000 	nop
  4d0bc4:	2442000c 	addiu	v0,v0,12
  4d0bc8:	8c630000 	lw	v1,0(v1)
  4d0bcc:	8c420000 	lw	v0,0(v0)
  4d0bd0:	00000000 	nop
  4d0bd4:	00621026 	xor	v0,v1,v0
  4d0bd8:	ac820000 	sw	v0,0(a0)
  4d0bdc:	8fc40038 	lw	a0,56(s8)
  4d0be0:	8fc50040 	lw	a1,64(s8)
  4d0be4:	8fc60040 	lw	a2,64(s8)
  4d0be8:	8f998150 	lw	t9,-32432(gp)
  4d0bec:	00000000 	nop
  4d0bf0:	0320f809 	jalr	t9
  4d0bf4:	00000000 	nop
  4d0bf8:	8fdc0010 	lw	gp,16(s8)
  4d0bfc:	8fc2003c 	lw	v0,60(s8)
  4d0c00:	00000000 	nop
  4d0c04:	24420010 	addiu	v0,v0,16
  4d0c08:	afc2003c 	sw	v0,60(s8)
  4d0c0c:	8fc20040 	lw	v0,64(s8)
  4d0c10:	00000000 	nop
  4d0c14:	24420010 	addiu	v0,v0,16
  4d0c18:	afc20040 	sw	v0,64(s8)
  4d0c1c:	8fc2001c 	lw	v0,28(s8)
  4d0c20:	00000000 	nop
  4d0c24:	24420010 	addiu	v0,v0,16
  4d0c28:	afc2001c 	sw	v0,28(s8)
  4d0c2c:	1000ffa1 	b	4d0ab4 <twofish_cbc_encrypt+0x74>
  4d0c30:	00000000 	nop
  4d0c34:	8fc20044 	lw	v0,68(s8)
  4d0c38:	00000000 	nop
  4d0c3c:	2442fff0 	addiu	v0,v0,-16
  4d0c40:	afc2001c 	sw	v0,28(s8)
  4d0c44:	8fc3003c 	lw	v1,60(s8)
  4d0c48:	8fc2001c 	lw	v0,28(s8)
  4d0c4c:	00000000 	nop
  4d0c50:	00621021 	addu	v0,v1,v0
  4d0c54:	afc2003c 	sw	v0,60(s8)
  4d0c58:	8fc30040 	lw	v1,64(s8)
  4d0c5c:	8fc2001c 	lw	v0,28(s8)
  4d0c60:	00000000 	nop
  4d0c64:	00621021 	addu	v0,v1,v0
  4d0c68:	afc20040 	sw	v0,64(s8)
  4d0c6c:	8fc2001c 	lw	v0,28(s8)
  4d0c70:	00000000 	nop
  4d0c74:	04410003 	bgez	v0,4d0c84 <twofish_cbc_encrypt+0x244>
  4d0c78:	00000000 	nop
  4d0c7c:	10000059 	b	4d0de4 <twofish_cbc_encrypt+0x3a4>
  4d0c80:	00000000 	nop
  4d0c84:	8fc40038 	lw	a0,56(s8)
  4d0c88:	8fc5003c 	lw	a1,60(s8)
  4d0c8c:	8fc60040 	lw	a2,64(s8)
  4d0c90:	8f9987c8 	lw	t9,-30776(gp)
  4d0c94:	00000000 	nop
  4d0c98:	0320f809 	jalr	t9
  4d0c9c:	00000000 	nop
  4d0ca0:	8fdc0010 	lw	gp,16(s8)
  4d0ca4:	8fc2001c 	lw	v0,28(s8)
  4d0ca8:	00000000 	nop
  4d0cac:	14400006 	bnez	v0,4d0cc8 <twofish_cbc_encrypt+0x288>
  4d0cb0:	00000000 	nop
  4d0cb4:	8fc20048 	lw	v0,72(s8)
  4d0cb8:	00000000 	nop
  4d0cbc:	afc20020 	sw	v0,32(s8)
  4d0cc0:	10000005 	b	4d0cd8 <twofish_cbc_encrypt+0x298>
  4d0cc4:	00000000 	nop
  4d0cc8:	8fc2003c 	lw	v0,60(s8)
  4d0ccc:	00000000 	nop
  4d0cd0:	2442fff0 	addiu	v0,v0,-16
  4d0cd4:	afc20020 	sw	v0,32(s8)
  4d0cd8:	8fc20040 	lw	v0,64(s8)
  4d0cdc:	00000000 	nop
  4d0ce0:	8c430000 	lw	v1,0(v0)
  4d0ce4:	8fc20020 	lw	v0,32(s8)
  4d0ce8:	00000000 	nop
  4d0cec:	8c420000 	lw	v0,0(v0)
  4d0cf0:	00000000 	nop
  4d0cf4:	00621826 	xor	v1,v1,v0
  4d0cf8:	8fc20040 	lw	v0,64(s8)
  4d0cfc:	00000000 	nop
  4d0d00:	ac430000 	sw	v1,0(v0)
  4d0d04:	8fc20040 	lw	v0,64(s8)
  4d0d08:	00000000 	nop
  4d0d0c:	24440004 	addiu	a0,v0,4
  4d0d10:	8fc20040 	lw	v0,64(s8)
  4d0d14:	00000000 	nop
  4d0d18:	24430004 	addiu	v1,v0,4
  4d0d1c:	8fc20020 	lw	v0,32(s8)
  4d0d20:	00000000 	nop
  4d0d24:	24420004 	addiu	v0,v0,4
  4d0d28:	8c630000 	lw	v1,0(v1)
  4d0d2c:	8c420000 	lw	v0,0(v0)
  4d0d30:	00000000 	nop
  4d0d34:	00621026 	xor	v0,v1,v0
  4d0d38:	ac820000 	sw	v0,0(a0)
  4d0d3c:	8fc20040 	lw	v0,64(s8)
  4d0d40:	00000000 	nop
  4d0d44:	24440008 	addiu	a0,v0,8
  4d0d48:	8fc20040 	lw	v0,64(s8)
  4d0d4c:	00000000 	nop
  4d0d50:	24430008 	addiu	v1,v0,8
  4d0d54:	8fc20020 	lw	v0,32(s8)
  4d0d58:	00000000 	nop
  4d0d5c:	24420008 	addiu	v0,v0,8
  4d0d60:	8c630000 	lw	v1,0(v1)
  4d0d64:	8c420000 	lw	v0,0(v0)
  4d0d68:	00000000 	nop
  4d0d6c:	00621026 	xor	v0,v1,v0
  4d0d70:	ac820000 	sw	v0,0(a0)
  4d0d74:	8fc20040 	lw	v0,64(s8)
  4d0d78:	00000000 	nop
  4d0d7c:	2444000c 	addiu	a0,v0,12
  4d0d80:	8fc20040 	lw	v0,64(s8)
  4d0d84:	00000000 	nop
  4d0d88:	2443000c 	addiu	v1,v0,12
  4d0d8c:	8fc20020 	lw	v0,32(s8)
  4d0d90:	00000000 	nop
  4d0d94:	2442000c 	addiu	v0,v0,12
  4d0d98:	8c630000 	lw	v1,0(v1)
  4d0d9c:	8c420000 	lw	v0,0(v0)
  4d0da0:	00000000 	nop
  4d0da4:	00621026 	xor	v0,v1,v0
  4d0da8:	ac820000 	sw	v0,0(a0)
  4d0dac:	8fc2003c 	lw	v0,60(s8)
  4d0db0:	00000000 	nop
  4d0db4:	2442fff0 	addiu	v0,v0,-16
  4d0db8:	afc2003c 	sw	v0,60(s8)
  4d0dbc:	8fc20040 	lw	v0,64(s8)
  4d0dc0:	00000000 	nop
  4d0dc4:	2442fff0 	addiu	v0,v0,-16
  4d0dc8:	afc20040 	sw	v0,64(s8)
  4d0dcc:	8fc2001c 	lw	v0,28(s8)
  4d0dd0:	00000000 	nop
  4d0dd4:	2442fff0 	addiu	v0,v0,-16
  4d0dd8:	afc2001c 	sw	v0,28(s8)
  4d0ddc:	1000ffa3 	b	4d0c6c <twofish_cbc_encrypt+0x22c>
  4d0de0:	00000000 	nop
  4d0de4:	8fc20018 	lw	v0,24(s8)
  4d0de8:	03c0e821 	move	sp,s8
  4d0dec:	8fbf0030 	lw	ra,48(sp)
  4d0df0:	8fbe002c 	lw	s8,44(sp)
  4d0df4:	27bd0038 	addiu	sp,sp,56
  4d0df8:	03e00008 	jr	ra
  4d0dfc:	00000000 	nop

004d0e00 <__pack_d>:
  4d0e00:	3c1c0fb4 	lui	gp,0xfb4
  4d0e04:	279cbb70 	addiu	gp,gp,-17552
  4d0e08:	0399e021 	addu	gp,gp,t9
  4d0e0c:	8c830000 	lw	v1,0(a0)
  4d0e10:	8c8a0010 	lw	t2,16(a0)
  4d0e14:	8c8b0014 	lw	t3,20(a0)
  4d0e18:	2c620002 	sltiu	v0,v1,2
  4d0e1c:	8c880004 	lw	t0,4(a0)
  4d0e20:	1040001c 	beqz	v0,4d0e94 <__pack_d+0x94>
  4d0e24:	00004821 	move	t1,zero
  4d0e28:	3c020008 	lui	v0,0x8
  4d0e2c:	24030000 	li	v1,0
  4d0e30:	01425025 	or	t2,t2,v0
  4d0e34:	01635825 	or	t3,t3,v1
  4d0e38:	240907ff 	li	t1,2047
  4d0e3c:	312207ff 	andi	v0,t1,0x7ff
  4d0e40:	3c06000f 	lui	a2,0xf
  4d0e44:	34c6ffff 	ori	a2,a2,0xffff
  4d0e48:	2407ffff 	li	a3,-1
  4d0e4c:	00402821 	move	a1,v0
  4d0e50:	01463024 	and	a2,t2,a2
  4d0e54:	01673824 	and	a3,t3,a3
  4d0e58:	00e06821 	move	t5,a3
  4d0e5c:	00c06021 	move	t4,a2
  4d0e60:	31080001 	andi	t0,t0,0x1
  4d0e64:	00052500 	sll	a0,a1,0x14
  4d0e68:	00002821 	move	a1,zero
  4d0e6c:	01001821 	move	v1,t0
  4d0e70:	01842025 	or	a0,t4,a0
  4d0e74:	01a52825 	or	a1,t5,a1
  4d0e78:	000317c0 	sll	v0,v1,0x1f
  4d0e7c:	00a06821 	move	t5,a1
  4d0e80:	00806021 	move	t4,a0
  4d0e84:	00001821 	move	v1,zero
  4d0e88:	01821025 	or	v0,t4,v0
  4d0e8c:	03e00008 	jr	ra
  4d0e90:	01a31825 	or	v1,t5,v1
  4d0e94:	38620004 	xori	v0,v1,0x4
  4d0e98:	10400051 	beqz	v0,4d0fe0 <__pack_d+0x1e0>
  4d0e9c:	00000000 	nop
  4d0ea0:	38620002 	xori	v0,v1,0x2
  4d0ea4:	14400004 	bnez	v0,4d0eb8 <__pack_d+0xb8>
  4d0ea8:	312207ff 	andi	v0,t1,0x7ff
  4d0eac:	00005021 	move	t2,zero
  4d0eb0:	1000ffe3 	b	4d0e40 <__pack_d+0x40>
  4d0eb4:	00005821 	move	t3,zero
  4d0eb8:	016a1025 	or	v0,t3,t2
  4d0ebc:	1040ffe0 	beqz	v0,4d0e40 <__pack_d+0x40>
  4d0ec0:	312207ff 	andi	v0,t1,0x7ff
  4d0ec4:	8c840008 	lw	a0,8(a0)
  4d0ec8:	00000000 	nop
  4d0ecc:	2882fc02 	slti	v0,a0,-1022
  4d0ed0:	10400041 	beqz	v0,4d0fd8 <__pack_d+0x1d8>
  4d0ed4:	28820400 	slti	v0,a0,1024
  4d0ed8:	2402fc02 	li	v0,-1022
  4d0edc:	00442023 	subu	a0,v0,a0
  4d0ee0:	28830039 	slti	v1,a0,57
  4d0ee4:	1460001f 	bnez	v1,4d0f64 <__pack_d+0x164>
  4d0ee8:	24020001 	li	v0,1
  4d0eec:	00005021 	move	t2,zero
  4d0ef0:	00005821 	move	t3,zero
  4d0ef4:	24020000 	li	v0,0
  4d0ef8:	240300ff 	li	v1,255
  4d0efc:	01422024 	and	a0,t2,v0
  4d0f00:	1080000b 	beqz	a0,4d0f30 <__pack_d+0x130>
  4d0f04:	01632824 	and	a1,t3,v1
  4d0f08:	256b007f 	addiu	t3,t3,127
  4d0f0c:	2d62007f 	sltiu	v0,t3,127
  4d0f10:	01425021 	addu	t2,t2,v0
  4d0f14:	3c020fff 	lui	v0,0xfff
  4d0f18:	3442ffff 	ori	v0,v0,0xffff
  4d0f1c:	004a102b 	sltu	v0,v0,t2
  4d0f20:	10400046 	beqz	v0,4d103c <__pack_d+0x23c>
  4d0f24:	00000000 	nop
  4d0f28:	10000044 	b	4d103c <__pack_d+0x23c>
  4d0f2c:	24090001 	li	t1,1
  4d0f30:	24020080 	li	v0,128
  4d0f34:	14a2fff4 	bne	a1,v0,4d0f08 <__pack_d+0x108>
  4d0f38:	00000000 	nop
  4d0f3c:	24020000 	li	v0,0
  4d0f40:	24030100 	li	v1,256
  4d0f44:	01421024 	and	v0,t2,v0
  4d0f48:	01631824 	and	v1,t3,v1
  4d0f4c:	00621025 	or	v0,v1,v0
  4d0f50:	1040fff0 	beqz	v0,4d0f14 <__pack_d+0x114>
  4d0f54:	00000000 	nop
  4d0f58:	256b0080 	addiu	t3,t3,128
  4d0f5c:	1000ffec 	b	4d0f10 <__pack_d+0x110>
  4d0f60:	2d620080 	sltiu	v0,t3,128
  4d0f64:	00821004 	sllv	v0,v0,a0
  4d0f68:	2442ffff 	addiu	v0,v0,-1
  4d0f6c:	00401821 	move	v1,v0
  4d0f70:	000217c3 	sra	v0,v0,0x1f
  4d0f74:	01421024 	and	v0,t2,v0
  4d0f78:	01631824 	and	v1,t3,v1
  4d0f7c:	00621025 	or	v0,v1,v0
  4d0f80:	10400002 	beqz	v0,4d0f8c <__pack_d+0x18c>
  4d0f84:	00002821 	move	a1,zero
  4d0f88:	24050001 	li	a1,1
  4d0f8c:	00043680 	sll	a2,a0,0x1a
  4d0f90:	04c10004 	bgez	a2,4d0fa4 <__pack_d+0x1a4>
  4d0f94:	00000000 	nop
  4d0f98:	008a7806 	srlv	t7,t2,a0
  4d0f9c:	10000007 	b	4d0fbc <__pack_d+0x1bc>
  4d0fa0:	00007021 	move	t6,zero
  4d0fa4:	10c00004 	beqz	a2,4d0fb8 <__pack_d+0x1b8>
  4d0fa8:	008b7806 	srlv	t7,t3,a0
  4d0fac:	00043023 	negu	a2,a0
  4d0fb0:	00ca3004 	sllv	a2,t2,a2
  4d0fb4:	01e67825 	or	t7,t7,a2
  4d0fb8:	008a7006 	srlv	t6,t2,a0
  4d0fbc:	00a01821 	move	v1,a1
  4d0fc0:	00001021 	move	v0,zero
  4d0fc4:	01c02021 	move	a0,t6
  4d0fc8:	01e02821 	move	a1,t7
  4d0fcc:	00825025 	or	t2,a0,v0
  4d0fd0:	1000ffc8 	b	4d0ef4 <__pack_d+0xf4>
  4d0fd4:	00a35825 	or	t3,a1,v1
  4d0fd8:	14400005 	bnez	v0,4d0ff0 <__pack_d+0x1f0>
  4d0fdc:	00000000 	nop
  4d0fe0:	00005021 	move	t2,zero
  4d0fe4:	00005821 	move	t3,zero
  4d0fe8:	1000ff94 	b	4d0e3c <__pack_d+0x3c>
  4d0fec:	240907ff 	li	t1,2047
  4d0ff0:	24020000 	li	v0,0
  4d0ff4:	240300ff 	li	v1,255
  4d0ff8:	01423024 	and	a2,t2,v0
  4d0ffc:	01633824 	and	a3,t3,v1
  4d1000:	10c00013 	beqz	a2,4d1050 <__pack_d+0x250>
  4d1004:	248903ff 	addiu	t1,a0,1023
  4d1008:	256b007f 	addiu	t3,t3,127
  4d100c:	2d62007f 	sltiu	v0,t3,127
  4d1010:	01425021 	addu	t2,t2,v0
  4d1014:	3c021fff 	lui	v0,0x1fff
  4d1018:	3442ffff 	ori	v0,v0,0xffff
  4d101c:	004a102b 	sltu	v0,v0,t2
  4d1020:	10400006 	beqz	v0,4d103c <__pack_d+0x23c>
  4d1024:	00000000 	nop
  4d1028:	000a17c0 	sll	v0,t2,0x1f
  4d102c:	000b5842 	srl	t3,t3,0x1
  4d1030:	01625825 	or	t3,t3,v0
  4d1034:	000a5042 	srl	t2,t2,0x1
  4d1038:	25290001 	addiu	t1,t1,1
  4d103c:	000a1600 	sll	v0,t2,0x18
  4d1040:	000b5a02 	srl	t3,t3,0x8
  4d1044:	01625825 	or	t3,t3,v0
  4d1048:	1000ff7c 	b	4d0e3c <__pack_d+0x3c>
  4d104c:	000a5202 	srl	t2,t2,0x8
  4d1050:	24020080 	li	v0,128
  4d1054:	14e2ffec 	bne	a3,v0,4d1008 <__pack_d+0x208>
  4d1058:	00000000 	nop
  4d105c:	24020000 	li	v0,0
  4d1060:	24030100 	li	v1,256
  4d1064:	01421024 	and	v0,t2,v0
  4d1068:	01631824 	and	v1,t3,v1
  4d106c:	00621025 	or	v0,v1,v0
  4d1070:	1040ffe8 	beqz	v0,4d1014 <__pack_d+0x214>
  4d1074:	00000000 	nop
  4d1078:	256b0080 	addiu	t3,t3,128
  4d107c:	1000ffe4 	b	4d1010 <__pack_d+0x210>
  4d1080:	2d620080 	sltiu	v0,t3,128

004d1084 <__unpack_d>:
  4d1084:	3c1c0fb4 	lui	gp,0xfb4
  4d1088:	279cb8ec 	addiu	gp,gp,-18196
  4d108c:	0399e021 	addu	gp,gp,t9
  4d1090:	8c860000 	lw	a2,0(a0)
  4d1094:	8c870004 	lw	a3,4(a0)
  4d1098:	00a05821 	move	t3,a1
  4d109c:	00061fc2 	srl	v1,a2,0x1f
  4d10a0:	00062d02 	srl	a1,a2,0x14
  4d10a4:	30680001 	andi	t0,v1,0x1
  4d10a8:	30aa07ff 	andi	t2,a1,0x7ff
  4d10ac:	3c02000f 	lui	v0,0xf
  4d10b0:	3442ffff 	ori	v0,v0,0xffff
  4d10b4:	2403ffff 	li	v1,-1
  4d10b8:	ad680004 	sw	t0,4(t3)
  4d10bc:	00e34824 	and	t1,a3,v1
  4d10c0:	11400023 	beqz	t2,4d1150 <__unpack_d+0xcc>
  4d10c4:	00c24024 	and	t0,a2,v0
  4d10c8:	240207ff 	li	v0,2047
  4d10cc:	1142000f 	beq	t2,v0,4d110c <__unpack_d+0x88>
  4d10d0:	00093602 	srl	a2,t1,0x18
  4d10d4:	00081200 	sll	v0,t0,0x8
  4d10d8:	00461025 	or	v0,v0,a2
  4d10dc:	3c041000 	lui	a0,0x1000
  4d10e0:	24050000 	li	a1,0
  4d10e4:	00091a00 	sll	v1,t1,0x8
  4d10e8:	00441025 	or	v0,v0,a0
  4d10ec:	00651825 	or	v1,v1,a1
  4d10f0:	2546fc01 	addiu	a2,t2,-1023
  4d10f4:	ad620010 	sw	v0,16(t3)
  4d10f8:	ad630014 	sw	v1,20(t3)
  4d10fc:	24020003 	li	v0,3
  4d1100:	ad660008 	sw	a2,8(t3)
  4d1104:	03e00008 	jr	ra
  4d1108:	ad620000 	sw	v0,0(t3)
  4d110c:	01281025 	or	v0,t1,t0
  4d1110:	1040000d 	beqz	v0,4d1148 <__unpack_d+0xc4>
  4d1114:	24020004 	li	v0,4
  4d1118:	3c020008 	lui	v0,0x8
  4d111c:	24030000 	li	v1,0
  4d1120:	01021024 	and	v0,t0,v0
  4d1124:	01231824 	and	v1,t1,v1
  4d1128:	00621025 	or	v0,v1,v0
  4d112c:	10400004 	beqz	v0,4d1140 <__unpack_d+0xbc>
  4d1130:	00000000 	nop
  4d1134:	24020001 	li	v0,1
  4d1138:	1000001e 	b	4d11b4 <__unpack_d+0x130>
  4d113c:	ad620000 	sw	v0,0(t3)
  4d1140:	1000001c 	b	4d11b4 <__unpack_d+0x130>
  4d1144:	ad600000 	sw	zero,0(t3)
  4d1148:	03e00008 	jr	ra
  4d114c:	ad620000 	sw	v0,0(t3)
  4d1150:	01281025 	or	v0,t1,t0
  4d1154:	1040001a 	beqz	v0,4d11c0 <__unpack_d+0x13c>
  4d1158:	00091602 	srl	v0,t1,0x18
  4d115c:	3c040fff 	lui	a0,0xfff
  4d1160:	00084200 	sll	t0,t0,0x8
  4d1164:	01024025 	or	t0,t0,v0
  4d1168:	3484ffff 	ori	a0,a0,0xffff
  4d116c:	2402fc02 	li	v0,-1022
  4d1170:	24030003 	li	v1,3
  4d1174:	0088202b 	sltu	a0,a0,t0
  4d1178:	00094a00 	sll	t1,t1,0x8
  4d117c:	ad620008 	sw	v0,8(t3)
  4d1180:	1480000c 	bnez	a0,4d11b4 <__unpack_d+0x130>
  4d1184:	ad630000 	sw	v1,0(t3)
  4d1188:	3c040fff 	lui	a0,0xfff
  4d118c:	3484ffff 	ori	a0,a0,0xffff
  4d1190:	00091fc2 	srl	v1,t1,0x1f
  4d1194:	8d620008 	lw	v0,8(t3)
  4d1198:	00084040 	sll	t0,t0,0x1
  4d119c:	01034025 	or	t0,t0,v1
  4d11a0:	2442ffff 	addiu	v0,v0,-1
  4d11a4:	0088182b 	sltu	v1,a0,t0
  4d11a8:	00094840 	sll	t1,t1,0x1
  4d11ac:	1060fff8 	beqz	v1,4d1190 <__unpack_d+0x10c>
  4d11b0:	ad620008 	sw	v0,8(t3)
  4d11b4:	ad680010 	sw	t0,16(t3)
  4d11b8:	03e00008 	jr	ra
  4d11bc:	ad690014 	sw	t1,20(t3)
  4d11c0:	24020002 	li	v0,2
  4d11c4:	03e00008 	jr	ra
  4d11c8:	ad620000 	sw	v0,0(t3)

004d11cc <_fpadd_parts>:
  4d11cc:	3c1c0fb4 	lui	gp,0xfb4
  4d11d0:	279cb7a4 	addiu	gp,gp,-18524
  4d11d4:	0399e021 	addu	gp,gp,t9
  4d11d8:	0080c021 	move	t8,a0
  4d11dc:	8f070000 	lw	a3,0(t8)
  4d11e0:	00a0c821 	move	t9,a1
  4d11e4:	2ce30002 	sltiu	v1,a3,2
  4d11e8:	00c06821 	move	t5,a2
  4d11ec:	14600012 	bnez	v1,4d1238 <_fpadd_parts+0x6c>
  4d11f0:	03001021 	move	v0,t8
  4d11f4:	8f240000 	lw	a0,0(t9)
  4d11f8:	00000000 	nop
  4d11fc:	2c830002 	sltiu	v1,a0,2
  4d1200:	1460000d 	bnez	v1,4d1238 <_fpadd_parts+0x6c>
  4d1204:	03201021 	move	v0,t9
  4d1208:	38e20004 	xori	v0,a3,0x4
  4d120c:	1440000c 	bnez	v0,4d1240 <_fpadd_parts+0x74>
  4d1210:	38830004 	xori	v1,a0,0x4
  4d1214:	38820004 	xori	v0,a0,0x4
  4d1218:	14400027 	bnez	v0,4d12b8 <_fpadd_parts+0xec>
  4d121c:	00000000 	nop
  4d1220:	8f230004 	lw	v1,4(t9)
  4d1224:	8f020004 	lw	v0,4(t8)
  4d1228:	00000000 	nop
  4d122c:	10430022 	beq	v0,v1,4d12b8 <_fpadd_parts+0xec>
  4d1230:	00000000 	nop
  4d1234:	8f828448 	lw	v0,-31672(gp)
  4d1238:	03e00008 	jr	ra
  4d123c:	00000000 	nop
  4d1240:	1060fffd 	beqz	v1,4d1238 <_fpadd_parts+0x6c>
  4d1244:	03201021 	move	v0,t9
  4d1248:	38820002 	xori	v0,a0,0x2
  4d124c:	1440001c 	bnez	v0,4d12c0 <_fpadd_parts+0xf4>
  4d1250:	38e30002 	xori	v1,a3,0x2
  4d1254:	38e20002 	xori	v0,a3,0x2
  4d1258:	14400017 	bnez	v0,4d12b8 <_fpadd_parts+0xec>
  4d125c:	00000000 	nop
  4d1260:	ada70000 	sw	a3,0(t5)
  4d1264:	8f040004 	lw	a0,4(t8)
  4d1268:	01a01021 	move	v0,t5
  4d126c:	ada40004 	sw	a0,4(t5)
  4d1270:	8f030008 	lw	v1,8(t8)
  4d1274:	00000000 	nop
  4d1278:	ada30008 	sw	v1,8(t5)
  4d127c:	8f04000c 	lw	a0,12(t8)
  4d1280:	00000000 	nop
  4d1284:	ada4000c 	sw	a0,12(t5)
  4d1288:	8f030010 	lw	v1,16(t8)
  4d128c:	00000000 	nop
  4d1290:	ada30010 	sw	v1,16(t5)
  4d1294:	8f040014 	lw	a0,20(t8)
  4d1298:	00000000 	nop
  4d129c:	ada40014 	sw	a0,20(t5)
  4d12a0:	8f030004 	lw	v1,4(t8)
  4d12a4:	8f240004 	lw	a0,4(t9)
  4d12a8:	00000000 	nop
  4d12ac:	00641824 	and	v1,v1,a0
  4d12b0:	03e00008 	jr	ra
  4d12b4:	ada30004 	sw	v1,4(t5)
  4d12b8:	03e00008 	jr	ra
  4d12bc:	03001021 	move	v0,t8
  4d12c0:	1060ffdd 	beqz	v1,4d1238 <_fpadd_parts+0x6c>
  4d12c4:	03201021 	move	v0,t9
  4d12c8:	8f0c0008 	lw	t4,8(t8)
  4d12cc:	8f270008 	lw	a3,8(t9)
  4d12d0:	8f0a0010 	lw	t2,16(t8)
  4d12d4:	8f0b0014 	lw	t3,20(t8)
  4d12d8:	01871023 	subu	v0,t4,a3
  4d12dc:	8f280010 	lw	t0,16(t9)
  4d12e0:	8f290014 	lw	t1,20(t9)
  4d12e4:	04400095 	bltz	v0,4d153c <_fpadd_parts+0x370>
  4d12e8:	00000000 	nop
  4d12ec:	28420040 	slti	v0,v0,64
  4d12f0:	10400089 	beqz	v0,4d1518 <_fpadd_parts+0x34c>
  4d12f4:	00ec102a 	slt	v0,a3,t4
  4d12f8:	10400010 	beqz	v0,4d133c <_fpadd_parts+0x170>
  4d12fc:	0187102a 	slt	v0,t4,a3
  4d1300:	240e0000 	li	t6,0
  4d1304:	240f0001 	li	t7,1
  4d1308:	01873823 	subu	a3,t4,a3
  4d130c:	00092842 	srl	a1,t1,0x1
  4d1310:	000837c0 	sll	a2,t0,0x1f
  4d1314:	00a62825 	or	a1,a1,a2
  4d1318:	00082042 	srl	a0,t0,0x1
  4d131c:	010e1024 	and	v0,t0,t6
  4d1320:	012f1824 	and	v1,t1,t7
  4d1324:	24e7ffff 	addiu	a3,a3,-1
  4d1328:	00444025 	or	t0,v0,a0
  4d132c:	14e0fff7 	bnez	a3,4d130c <_fpadd_parts+0x140>
  4d1330:	00654825 	or	t1,v1,a1
  4d1334:	01803821 	move	a3,t4
  4d1338:	0187102a 	slt	v0,t4,a3
  4d133c:	1040000e 	beqz	v0,4d1378 <_fpadd_parts+0x1ac>
  4d1340:	00000000 	nop
  4d1344:	240e0000 	li	t6,0
  4d1348:	240f0001 	li	t7,1
  4d134c:	000a37c0 	sll	a2,t2,0x1f
  4d1350:	000b2842 	srl	a1,t3,0x1
  4d1354:	258c0001 	addiu	t4,t4,1
  4d1358:	00a62825 	or	a1,a1,a2
  4d135c:	000a2042 	srl	a0,t2,0x1
  4d1360:	014e1024 	and	v0,t2,t6
  4d1364:	016f1824 	and	v1,t3,t7
  4d1368:	0187302a 	slt	a2,t4,a3
  4d136c:	00445025 	or	t2,v0,a0
  4d1370:	14c0fff6 	bnez	a2,4d134c <_fpadd_parts+0x180>
  4d1374:	00655825 	or	t3,v1,a1
  4d1378:	8f060004 	lw	a2,4(t8)
  4d137c:	8f220004 	lw	v0,4(t9)
  4d1380:	00000000 	nop
  4d1384:	10c2005b 	beq	a2,v0,4d14f4 <_fpadd_parts+0x328>
  4d1388:	012b102b 	sltu	v0,t1,t3
  4d138c:	010a2023 	subu	a0,t0,t2
  4d1390:	012b2823 	subu	a1,t1,t3
  4d1394:	10c00052 	beqz	a2,4d14e0 <_fpadd_parts+0x314>
  4d1398:	00822023 	subu	a0,a0,v0
  4d139c:	04800047 	bltz	a0,4d14bc <_fpadd_parts+0x2f0>
  4d13a0:	24020001 	li	v0,1
  4d13a4:	adac0008 	sw	t4,8(t5)
  4d13a8:	ada40010 	sw	a0,16(t5)
  4d13ac:	ada50014 	sw	a1,20(t5)
  4d13b0:	ada00004 	sw	zero,4(t5)
  4d13b4:	8da80010 	lw	t0,16(t5)
  4d13b8:	8da90014 	lw	t1,20(t5)
  4d13bc:	3c030fff 	lui	v1,0xfff
  4d13c0:	2525ffff 	addiu	a1,t1,-1
  4d13c4:	2ca2ffff 	sltiu	v0,a1,-1
  4d13c8:	2504ffff 	addiu	a0,t0,-1
  4d13cc:	00822021 	addu	a0,a0,v0
  4d13d0:	3463ffff 	ori	v1,v1,0xffff
  4d13d4:	0064102b 	sltu	v0,v1,a0
  4d13d8:	1440001a 	bnez	v0,4d1444 <_fpadd_parts+0x278>
  4d13dc:	00000000 	nop
  4d13e0:	10830032 	beq	a0,v1,4d14ac <_fpadd_parts+0x2e0>
  4d13e4:	2ca2ffff 	sltiu	v0,a1,-1
  4d13e8:	000917c2 	srl	v0,t1,0x1f
  4d13ec:	00083040 	sll	a2,t0,0x1
  4d13f0:	00c23025 	or	a2,a2,v0
  4d13f4:	00093840 	sll	a3,t1,0x1
  4d13f8:	8da30008 	lw	v1,8(t5)
  4d13fc:	3c0a0fff 	lui	t2,0xfff
  4d1400:	24e5ffff 	addiu	a1,a3,-1
  4d1404:	2ca2ffff 	sltiu	v0,a1,-1
  4d1408:	24c4ffff 	addiu	a0,a2,-1
  4d140c:	00822021 	addu	a0,a0,v0
  4d1410:	354affff 	ori	t2,t2,0xffff
  4d1414:	2463ffff 	addiu	v1,v1,-1
  4d1418:	0144102b 	sltu	v0,t2,a0
  4d141c:	ada30008 	sw	v1,8(t5)
  4d1420:	ada60010 	sw	a2,16(t5)
  4d1424:	ada70014 	sw	a3,20(t5)
  4d1428:	14400006 	bnez	v0,4d1444 <_fpadd_parts+0x278>
  4d142c:	2cabffff 	sltiu	t3,a1,-1
  4d1430:	00c04021 	move	t0,a2
  4d1434:	148affec 	bne	a0,t2,4d13e8 <_fpadd_parts+0x21c>
  4d1438:	00e04821 	move	t1,a3
  4d143c:	1560ffeb 	bnez	t3,4d13ec <_fpadd_parts+0x220>
  4d1440:	000917c2 	srl	v0,t1,0x1f
  4d1444:	8da20010 	lw	v0,16(t5)
  4d1448:	3c031fff 	lui	v1,0x1fff
  4d144c:	3463ffff 	ori	v1,v1,0xffff
  4d1450:	24040003 	li	a0,3
  4d1454:	0062182b 	sltu	v1,v1,v0
  4d1458:	10600012 	beqz	v1,4d14a4 <_fpadd_parts+0x2d8>
  4d145c:	ada40000 	sw	a0,0(t5)
  4d1460:	8da40010 	lw	a0,16(t5)
  4d1464:	8da50014 	lw	a1,20(t5)
  4d1468:	24020000 	li	v0,0
  4d146c:	24030001 	li	v1,1
  4d1470:	8da60008 	lw	a2,8(t5)
  4d1474:	00a31824 	and	v1,a1,v1
  4d1478:	00043fc0 	sll	a3,a0,0x1f
  4d147c:	00052842 	srl	a1,a1,0x1
  4d1480:	00821024 	and	v0,a0,v0
  4d1484:	00a72825 	or	a1,a1,a3
  4d1488:	00042042 	srl	a0,a0,0x1
  4d148c:	00441025 	or	v0,v0,a0
  4d1490:	00651825 	or	v1,v1,a1
  4d1494:	24c60001 	addiu	a2,a2,1
  4d1498:	ada20010 	sw	v0,16(t5)
  4d149c:	ada30014 	sw	v1,20(t5)
  4d14a0:	ada60008 	sw	a2,8(t5)
  4d14a4:	03e00008 	jr	ra
  4d14a8:	01a01021 	move	v0,t5
  4d14ac:	1040ffe5 	beqz	v0,4d1444 <_fpadd_parts+0x278>
  4d14b0:	000917c2 	srl	v0,t1,0x1f
  4d14b4:	1000ffce 	b	4d13f0 <_fpadd_parts+0x224>
  4d14b8:	00083040 	sll	a2,t0,0x1
  4d14bc:	00052823 	negu	a1,a1
  4d14c0:	00042023 	negu	a0,a0
  4d14c4:	0005182b 	sltu	v1,zero,a1
  4d14c8:	00832023 	subu	a0,a0,v1
  4d14cc:	ada20004 	sw	v0,4(t5)
  4d14d0:	adac0008 	sw	t4,8(t5)
  4d14d4:	ada40010 	sw	a0,16(t5)
  4d14d8:	1000ffb6 	b	4d13b4 <_fpadd_parts+0x1e8>
  4d14dc:	ada50014 	sw	a1,20(t5)
  4d14e0:	0169102b 	sltu	v0,t3,t1
  4d14e4:	01482023 	subu	a0,t2,t0
  4d14e8:	01692823 	subu	a1,t3,t1
  4d14ec:	1000ffab 	b	4d139c <_fpadd_parts+0x1d0>
  4d14f0:	00822023 	subu	a0,a0,v0
  4d14f4:	01691821 	addu	v1,t3,t1
  4d14f8:	0069202b 	sltu	a0,v1,t1
  4d14fc:	01481021 	addu	v0,t2,t0
  4d1500:	00441021 	addu	v0,v0,a0
  4d1504:	ada60004 	sw	a2,4(t5)
  4d1508:	adac0008 	sw	t4,8(t5)
  4d150c:	ada20010 	sw	v0,16(t5)
  4d1510:	1000ffcc 	b	4d1444 <_fpadd_parts+0x278>
  4d1514:	ada30014 	sw	v1,20(t5)
  4d1518:	10400004 	beqz	v0,4d152c <_fpadd_parts+0x360>
  4d151c:	00000000 	nop
  4d1520:	00004021 	move	t0,zero
  4d1524:	1000ff94 	b	4d1378 <_fpadd_parts+0x1ac>
  4d1528:	00004821 	move	t1,zero
  4d152c:	00005021 	move	t2,zero
  4d1530:	00005821 	move	t3,zero
  4d1534:	1000ff90 	b	4d1378 <_fpadd_parts+0x1ac>
  4d1538:	00e06021 	move	t4,a3
  4d153c:	1000ff6b 	b	4d12ec <_fpadd_parts+0x120>
  4d1540:	00021023 	negu	v0,v0

004d1544 <dpadd>:
  4d1544:	3c1c0fb4 	lui	gp,0xfb4
  4d1548:	279cb42c 	addiu	gp,gp,-19412
  4d154c:	0399e021 	addu	gp,gp,t9
  4d1550:	27bdff80 	addiu	sp,sp,-128
  4d1554:	afbc0010 	sw	gp,16(sp)
  4d1558:	00a01821 	move	v1,a1
  4d155c:	00801021 	move	v0,a0
  4d1560:	27a50018 	addiu	a1,sp,24
  4d1564:	27a40060 	addiu	a0,sp,96
  4d1568:	afbf0078 	sw	ra,120(sp)
  4d156c:	afb00070 	sw	s0,112(sp)
  4d1570:	afa60068 	sw	a2,104(sp)
  4d1574:	afbc0074 	sw	gp,116(sp)
  4d1578:	afa20060 	sw	v0,96(sp)
  4d157c:	afa30064 	sw	v1,100(sp)
  4d1580:	afa7006c 	sw	a3,108(sp)
  4d1584:	8f99890c 	lw	t9,-30452(gp)
  4d1588:	00000000 	nop
  4d158c:	0320f809 	jalr	t9
  4d1590:	00000000 	nop
  4d1594:	8fbc0010 	lw	gp,16(sp)
  4d1598:	27b00030 	addiu	s0,sp,48
  4d159c:	27a40068 	addiu	a0,sp,104
  4d15a0:	02002821 	move	a1,s0
  4d15a4:	8f99890c 	lw	t9,-30452(gp)
  4d15a8:	00000000 	nop
  4d15ac:	0320f809 	jalr	t9
  4d15b0:	00000000 	nop
  4d15b4:	8fbc0010 	lw	gp,16(sp)
  4d15b8:	27a40018 	addiu	a0,sp,24
  4d15bc:	02002821 	move	a1,s0
  4d15c0:	27a60048 	addiu	a2,sp,72
  4d15c4:	8f998020 	lw	t9,-32736(gp)
  4d15c8:	00000000 	nop
  4d15cc:	273911cc 	addiu	t9,t9,4556
  4d15d0:	00000000 	nop
  4d15d4:	0320f809 	jalr	t9
  4d15d8:	00000000 	nop
  4d15dc:	8fbc0010 	lw	gp,16(sp)
  4d15e0:	00402021 	move	a0,v0
  4d15e4:	8f9980a8 	lw	t9,-32600(gp)
  4d15e8:	00000000 	nop
  4d15ec:	0320f809 	jalr	t9
  4d15f0:	00000000 	nop
  4d15f4:	8fbc0010 	lw	gp,16(sp)
  4d15f8:	8fbf0078 	lw	ra,120(sp)
  4d15fc:	8fb00070 	lw	s0,112(sp)
  4d1600:	03e00008 	jr	ra
  4d1604:	27bd0080 	addiu	sp,sp,128

004d1608 <dpsub>:
  4d1608:	3c1c0fb4 	lui	gp,0xfb4
  4d160c:	279cb368 	addiu	gp,gp,-19608
  4d1610:	0399e021 	addu	gp,gp,t9
  4d1614:	27bdff80 	addiu	sp,sp,-128
  4d1618:	afbc0010 	sw	gp,16(sp)
  4d161c:	00a01821 	move	v1,a1
  4d1620:	00801021 	move	v0,a0
  4d1624:	27a50018 	addiu	a1,sp,24
  4d1628:	27a40060 	addiu	a0,sp,96
  4d162c:	afbf0078 	sw	ra,120(sp)
  4d1630:	afb00070 	sw	s0,112(sp)
  4d1634:	afa20060 	sw	v0,96(sp)
  4d1638:	afa60068 	sw	a2,104(sp)
  4d163c:	afbc0074 	sw	gp,116(sp)
  4d1640:	afa30064 	sw	v1,100(sp)
  4d1644:	afa7006c 	sw	a3,108(sp)
  4d1648:	8f99890c 	lw	t9,-30452(gp)
  4d164c:	00000000 	nop
  4d1650:	0320f809 	jalr	t9
  4d1654:	00000000 	nop
  4d1658:	8fbc0010 	lw	gp,16(sp)
  4d165c:	27b00030 	addiu	s0,sp,48
  4d1660:	27a40068 	addiu	a0,sp,104
  4d1664:	02002821 	move	a1,s0
  4d1668:	8f99890c 	lw	t9,-30452(gp)
  4d166c:	00000000 	nop
  4d1670:	0320f809 	jalr	t9
  4d1674:	00000000 	nop
  4d1678:	8fbc0010 	lw	gp,16(sp)
  4d167c:	8fa20034 	lw	v0,52(sp)
  4d1680:	02002821 	move	a1,s0
  4d1684:	27a40018 	addiu	a0,sp,24
  4d1688:	27a60048 	addiu	a2,sp,72
  4d168c:	38420001 	xori	v0,v0,0x1
  4d1690:	afa20034 	sw	v0,52(sp)
  4d1694:	8f998020 	lw	t9,-32736(gp)
  4d1698:	00000000 	nop
  4d169c:	273911cc 	addiu	t9,t9,4556
  4d16a0:	00000000 	nop
  4d16a4:	0320f809 	jalr	t9
  4d16a8:	00000000 	nop
  4d16ac:	8fbc0010 	lw	gp,16(sp)
  4d16b0:	00402021 	move	a0,v0
  4d16b4:	8f9980a8 	lw	t9,-32600(gp)
  4d16b8:	00000000 	nop
  4d16bc:	0320f809 	jalr	t9
  4d16c0:	00000000 	nop
  4d16c4:	8fbc0010 	lw	gp,16(sp)
  4d16c8:	8fbf0078 	lw	ra,120(sp)
  4d16cc:	8fb00070 	lw	s0,112(sp)
  4d16d0:	03e00008 	jr	ra
  4d16d4:	27bd0080 	addiu	sp,sp,128

004d16d8 <dpmul>:
  4d16d8:	3c1c0fb4 	lui	gp,0xfb4
  4d16dc:	279cb298 	addiu	gp,gp,-19816
  4d16e0:	0399e021 	addu	gp,gp,t9
  4d16e4:	27bdff78 	addiu	sp,sp,-136
  4d16e8:	afbc0010 	sw	gp,16(sp)
  4d16ec:	00801021 	move	v0,a0
  4d16f0:	00a01821 	move	v1,a1
  4d16f4:	27a40060 	addiu	a0,sp,96
  4d16f8:	27a50018 	addiu	a1,sp,24
  4d16fc:	afb20078 	sw	s2,120(sp)
  4d1700:	afb00070 	sw	s0,112(sp)
  4d1704:	afa20060 	sw	v0,96(sp)
  4d1708:	afbf0080 	sw	ra,128(sp)
  4d170c:	afbc007c 	sw	gp,124(sp)
  4d1710:	afb10074 	sw	s1,116(sp)
  4d1714:	afa60068 	sw	a2,104(sp)
  4d1718:	afa30064 	sw	v1,100(sp)
  4d171c:	afa7006c 	sw	a3,108(sp)
  4d1720:	8f99890c 	lw	t9,-30452(gp)
  4d1724:	00000000 	nop
  4d1728:	0320f809 	jalr	t9
  4d172c:	00000000 	nop
  4d1730:	8fbc0010 	lw	gp,16(sp)
  4d1734:	27b00030 	addiu	s0,sp,48
  4d1738:	27a40068 	addiu	a0,sp,104
  4d173c:	02002821 	move	a1,s0
  4d1740:	8f99890c 	lw	t9,-30452(gp)
  4d1744:	00000000 	nop
  4d1748:	0320f809 	jalr	t9
  4d174c:	00000000 	nop
  4d1750:	8fbc0010 	lw	gp,16(sp)
  4d1754:	8fa40018 	lw	a0,24(sp)
  4d1758:	00000000 	nop
  4d175c:	2c820002 	sltiu	v0,a0,2
  4d1760:	10400012 	beqz	v0,4d17ac <dpmul+0xd4>
  4d1764:	27b20018 	addiu	s2,sp,24
  4d1768:	8fa2001c 	lw	v0,28(sp)
  4d176c:	8fa30034 	lw	v1,52(sp)
  4d1770:	02402021 	move	a0,s2
  4d1774:	00431026 	xor	v0,v0,v1
  4d1778:	0002102b 	sltu	v0,zero,v0
  4d177c:	afa2001c 	sw	v0,28(sp)
  4d1780:	8f9980a8 	lw	t9,-32600(gp)
  4d1784:	00000000 	nop
  4d1788:	0320f809 	jalr	t9
  4d178c:	00000000 	nop
  4d1790:	8fbc0010 	lw	gp,16(sp)
  4d1794:	8fbf0080 	lw	ra,128(sp)
  4d1798:	8fb20078 	lw	s2,120(sp)
  4d179c:	8fb10074 	lw	s1,116(sp)
  4d17a0:	8fb00070 	lw	s0,112(sp)
  4d17a4:	03e00008 	jr	ra
  4d17a8:	27bd0088 	addiu	sp,sp,136
  4d17ac:	8fa30030 	lw	v1,48(sp)
  4d17b0:	00000000 	nop
  4d17b4:	2c620002 	sltiu	v0,v1,2
  4d17b8:	14400014 	bnez	v0,4d180c <dpmul+0x134>
  4d17bc:	38820004 	xori	v0,a0,0x4
  4d17c0:	14400007 	bnez	v0,4d17e0 <dpmul+0x108>
  4d17c4:	38620004 	xori	v0,v1,0x4
  4d17c8:	38620002 	xori	v0,v1,0x2
  4d17cc:	8f848448 	lw	a0,-31672(gp)
  4d17d0:	1040ffeb 	beqz	v0,4d1780 <dpmul+0xa8>
  4d17d4:	00000000 	nop
  4d17d8:	1000ffe3 	b	4d1768 <dpmul+0x90>
  4d17dc:	00000000 	nop
  4d17e0:	14400006 	bnez	v0,4d17fc <dpmul+0x124>
  4d17e4:	38820002 	xori	v0,a0,0x2
  4d17e8:	8f848448 	lw	a0,-31672(gp)
  4d17ec:	1040ffe4 	beqz	v0,4d1780 <dpmul+0xa8>
  4d17f0:	00000000 	nop
  4d17f4:	10000005 	b	4d180c <dpmul+0x134>
  4d17f8:	00000000 	nop
  4d17fc:	1040ffda 	beqz	v0,4d1768 <dpmul+0x90>
  4d1800:	38620002 	xori	v0,v1,0x2
  4d1804:	14400008 	bnez	v0,4d1828 <dpmul+0x150>
  4d1808:	00000000 	nop
  4d180c:	8fa30034 	lw	v1,52(sp)
  4d1810:	8fa2001c 	lw	v0,28(sp)
  4d1814:	02002021 	move	a0,s0
  4d1818:	00431026 	xor	v0,v0,v1
  4d181c:	0002102b 	sltu	v0,zero,v0
  4d1820:	1000ffd7 	b	4d1780 <dpmul+0xa8>
  4d1824:	afa20034 	sw	v0,52(sp)
  4d1828:	8fa60028 	lw	a2,40(sp)
  4d182c:	8fa70044 	lw	a3,68(sp)
  4d1830:	8fa8002c 	lw	t0,44(sp)
  4d1834:	00e60019 	multu	a3,a2
  4d1838:	8fa50040 	lw	a1,64(sp)
  4d183c:	0000c021 	move	t8,zero
  4d1840:	0000c821 	move	t9,zero
  4d1844:	00001010 	mfhi	v0
  4d1848:	00001812 	mflo	v1
	...
  4d1854:	00a80019 	multu	a1,t0
  4d1858:	00005010 	mfhi	t2
  4d185c:	00005812 	mflo	t3
  4d1860:	01636821 	addu	t5,t3,v1
  4d1864:	01a3482b 	sltu	t1,t5,v1
  4d1868:	00a60019 	multu	a1,a2
  4d186c:	01426021 	addu	t4,t2,v0
  4d1870:	01896021 	addu	t4,t4,t1
  4d1874:	018a202b 	sltu	a0,t4,t2
  4d1878:	00008010 	mfhi	s0
  4d187c:	00008812 	mflo	s1
	...
  4d1888:	00e80019 	multu	a3,t0
  4d188c:	00003010 	mfhi	a2
  4d1890:	00003812 	mflo	a3
  4d1894:	14800082 	bnez	a0,4d1aa0 <dpmul+0x3c8>
  4d1898:	00000000 	nop
  4d189c:	114c007e 	beq	t2,t4,4d1a98 <dpmul+0x3c0>
  4d18a0:	01ab102b 	sltu	v0,t5,t3
  4d18a4:	00005821 	move	t3,zero
  4d18a8:	01a01821 	move	v1,t5
  4d18ac:	00035000 	sll	t2,v1,0x0
  4d18b0:	00eb7821 	addu	t7,a3,t3
  4d18b4:	01eb282b 	sltu	a1,t7,t3
  4d18b8:	00ca7021 	addu	t6,a2,t2
  4d18bc:	01c57021 	addu	t6,t6,a1
  4d18c0:	01c6102b 	sltu	v0,t6,a2
  4d18c4:	14400070 	bnez	v0,4d1a88 <dpmul+0x3b0>
  4d18c8:	00000000 	nop
  4d18cc:	10ce006c 	beq	a2,t6,4d1a80 <dpmul+0x3a8>
  4d18d0:	01e7102b 	sltu	v0,t7,a3
  4d18d4:	000c1802 	srl	v1,t4,0x0
  4d18d8:	00711821 	addu	v1,v1,s1
  4d18dc:	00001021 	move	v0,zero
  4d18e0:	0071202b 	sltu	a0,v1,s1
  4d18e4:	00501021 	addu	v0,v0,s0
  4d18e8:	00441021 	addu	v0,v0,a0
  4d18ec:	8e450004 	lw	a1,4(s2)
  4d18f0:	8e470008 	lw	a3,8(s2)
  4d18f4:	03025021 	addu	t2,t8,v0
  4d18f8:	03235821 	addu	t3,t9,v1
  4d18fc:	8fa40038 	lw	a0,56(sp)
  4d1900:	8fa20034 	lw	v0,52(sp)
  4d1904:	0163402b 	sltu	t0,t3,v1
  4d1908:	3c061fff 	lui	a2,0x1fff
  4d190c:	01485021 	addu	t2,t2,t0
  4d1910:	00e43821 	addu	a3,a3,a0
  4d1914:	00a22826 	xor	a1,a1,v0
  4d1918:	34c6ffff 	ori	a2,a2,0xffff
  4d191c:	0005282b 	sltu	a1,zero,a1
  4d1920:	24e70004 	addiu	a3,a3,4
  4d1924:	00ca302b 	sltu	a2,a2,t2
  4d1928:	afa5004c 	sw	a1,76(sp)
  4d192c:	01c04021 	move	t0,t6
  4d1930:	01e04821 	move	t1,t7
  4d1934:	10c00018 	beqz	a2,4d1998 <dpmul+0x2c0>
  4d1938:	afa70050 	sw	a3,80(sp)
  4d193c:	3c051fff 	lui	a1,0x1fff
  4d1940:	240e0000 	li	t6,0
  4d1944:	240f0001 	li	t7,1
  4d1948:	3c0c8000 	lui	t4,0x8000
  4d194c:	240d0000 	li	t5,0
  4d1950:	34a5ffff 	ori	a1,a1,0xffff
  4d1954:	000a27c0 	sll	a0,t2,0x1f
  4d1958:	016f1824 	and	v1,t3,t7
  4d195c:	000a5042 	srl	t2,t2,0x1
  4d1960:	000b5842 	srl	t3,t3,0x1
  4d1964:	01645825 	or	t3,t3,a0
  4d1968:	24e70001 	addiu	a3,a3,1
  4d196c:	10600007 	beqz	v1,4d198c <dpmul+0x2b4>
  4d1970:	00aa202b 	sltu	a0,a1,t2
  4d1974:	000817c0 	sll	v0,t0,0x1f
  4d1978:	00094842 	srl	t1,t1,0x1
  4d197c:	01224825 	or	t1,t1,v0
  4d1980:	00084042 	srl	t0,t0,0x1
  4d1984:	010c4025 	or	t0,t0,t4
  4d1988:	012d4825 	or	t1,t1,t5
  4d198c:	1480fff2 	bnez	a0,4d1958 <dpmul+0x280>
  4d1990:	000a27c0 	sll	a0,t2,0x1f
  4d1994:	afa70050 	sw	a3,80(sp)
  4d1998:	3c020fff 	lui	v0,0xfff
  4d199c:	3442ffff 	ori	v0,v0,0xffff
  4d19a0:	004a102b 	sltu	v0,v0,t2
  4d19a4:	1440001b 	bnez	v0,4d1a14 <dpmul+0x33c>
  4d19a8:	00000000 	nop
  4d19ac:	3c070fff 	lui	a3,0xfff
  4d19b0:	8fa60050 	lw	a2,80(sp)
  4d19b4:	3c0e8000 	lui	t6,0x8000
  4d19b8:	240f0000 	li	t7,0
  4d19bc:	240c0000 	li	t4,0
  4d19c0:	240d0001 	li	t5,1
  4d19c4:	34e7ffff 	ori	a3,a3,0xffff
  4d19c8:	010e1024 	and	v0,t0,t6
  4d19cc:	012f1824 	and	v1,t1,t7
  4d19d0:	000927c2 	srl	a0,t1,0x1f
  4d19d4:	000b2fc2 	srl	a1,t3,0x1f
  4d19d8:	00084040 	sll	t0,t0,0x1
  4d19dc:	000a5040 	sll	t2,t2,0x1
  4d19e0:	00621025 	or	v0,v1,v0
  4d19e4:	01044025 	or	t0,t0,a0
  4d19e8:	00094840 	sll	t1,t1,0x1
  4d19ec:	01455025 	or	t2,t2,a1
  4d19f0:	000b5840 	sll	t3,t3,0x1
  4d19f4:	10400003 	beqz	v0,4d1a04 <dpmul+0x32c>
  4d19f8:	24c6ffff 	addiu	a2,a2,-1
  4d19fc:	014c5025 	or	t2,t2,t4
  4d1a00:	016d5825 	or	t3,t3,t5
  4d1a04:	00ea102b 	sltu	v0,a3,t2
  4d1a08:	1040fff0 	beqz	v0,4d19cc <dpmul+0x2f4>
  4d1a0c:	010e1024 	and	v0,t0,t6
  4d1a10:	afa60050 	sw	a2,80(sp)
  4d1a14:	24020000 	li	v0,0
  4d1a18:	240300ff 	li	v1,255
  4d1a1c:	01422024 	and	a0,t2,v0
  4d1a20:	10800007 	beqz	a0,4d1a40 <dpmul+0x368>
  4d1a24:	01632824 	and	a1,t3,v1
  4d1a28:	24020003 	li	v0,3
  4d1a2c:	afaa0058 	sw	t2,88(sp)
  4d1a30:	afab005c 	sw	t3,92(sp)
  4d1a34:	afa20048 	sw	v0,72(sp)
  4d1a38:	1000ff51 	b	4d1780 <dpmul+0xa8>
  4d1a3c:	27a40048 	addiu	a0,sp,72
  4d1a40:	24020080 	li	v0,128
  4d1a44:	14a2fff9 	bne	a1,v0,4d1a2c <dpmul+0x354>
  4d1a48:	24020003 	li	v0,3
  4d1a4c:	24020000 	li	v0,0
  4d1a50:	24030100 	li	v1,256
  4d1a54:	01421024 	and	v0,t2,v0
  4d1a58:	01631824 	and	v1,t3,v1
  4d1a5c:	00621025 	or	v0,v1,v0
  4d1a60:	14400003 	bnez	v0,4d1a70 <dpmul+0x398>
  4d1a64:	01281025 	or	v0,t1,t0
  4d1a68:	1040fff0 	beqz	v0,4d1a2c <dpmul+0x354>
  4d1a6c:	24020003 	li	v0,3
  4d1a70:	256b0080 	addiu	t3,t3,128
  4d1a74:	2d620080 	sltiu	v0,t3,128
  4d1a78:	1000ffeb 	b	4d1a28 <dpmul+0x350>
  4d1a7c:	01425021 	addu	t2,t2,v0
  4d1a80:	1040ff95 	beqz	v0,4d18d8 <dpmul+0x200>
  4d1a84:	000c1802 	srl	v1,t4,0x0
  4d1a88:	27390001 	addiu	t9,t9,1
  4d1a8c:	2f220001 	sltiu	v0,t9,1
  4d1a90:	1000ff90 	b	4d18d4 <dpmul+0x1fc>
  4d1a94:	0302c021 	addu	t8,t8,v0
  4d1a98:	1040ff82 	beqz	v0,4d18a4 <dpmul+0x1cc>
  4d1a9c:	00000000 	nop
  4d1aa0:	24180001 	li	t8,1
  4d1aa4:	24190000 	li	t9,0
  4d1aa8:	1000ff7f 	b	4d18a8 <dpmul+0x1d0>
  4d1aac:	00005821 	move	t3,zero

004d1ab0 <dpdiv>:
  4d1ab0:	3c1c0fb4 	lui	gp,0xfb4
  4d1ab4:	279caec0 	addiu	gp,gp,-20800
  4d1ab8:	0399e021 	addu	gp,gp,t9
  4d1abc:	27bdff98 	addiu	sp,sp,-104
  4d1ac0:	afbc0010 	sw	gp,16(sp)
  4d1ac4:	00801021 	move	v0,a0
  4d1ac8:	00a01821 	move	v1,a1
  4d1acc:	27a40048 	addiu	a0,sp,72
  4d1ad0:	27a50018 	addiu	a1,sp,24
  4d1ad4:	afb00058 	sw	s0,88(sp)
  4d1ad8:	afa20048 	sw	v0,72(sp)
  4d1adc:	afa60050 	sw	a2,80(sp)
  4d1ae0:	afbf0060 	sw	ra,96(sp)
  4d1ae4:	afbc005c 	sw	gp,92(sp)
  4d1ae8:	afa3004c 	sw	v1,76(sp)
  4d1aec:	afa70054 	sw	a3,84(sp)
  4d1af0:	8f99890c 	lw	t9,-30452(gp)
  4d1af4:	00000000 	nop
  4d1af8:	0320f809 	jalr	t9
  4d1afc:	00000000 	nop
  4d1b00:	8fbc0010 	lw	gp,16(sp)
  4d1b04:	27b00030 	addiu	s0,sp,48
  4d1b08:	27a40050 	addiu	a0,sp,80
  4d1b0c:	02002821 	move	a1,s0
  4d1b10:	8f99890c 	lw	t9,-30452(gp)
  4d1b14:	00000000 	nop
  4d1b18:	0320f809 	jalr	t9
  4d1b1c:	00000000 	nop
  4d1b20:	8fbc0010 	lw	gp,16(sp)
  4d1b24:	8fa60018 	lw	a2,24(sp)
  4d1b28:	27af0018 	addiu	t7,sp,24
  4d1b2c:	2cc20002 	sltiu	v0,a2,2
  4d1b30:	14400013 	bnez	v0,4d1b80 <dpdiv+0xd0>
  4d1b34:	01e02021 	move	a0,t7
  4d1b38:	8fa50030 	lw	a1,48(sp)
  4d1b3c:	00000000 	nop
  4d1b40:	2ca20002 	sltiu	v0,a1,2
  4d1b44:	1440000e 	bnez	v0,4d1b80 <dpdiv+0xd0>
  4d1b48:	02002021 	move	a0,s0
  4d1b4c:	8fa3001c 	lw	v1,28(sp)
  4d1b50:	8fa40034 	lw	a0,52(sp)
  4d1b54:	38c20004 	xori	v0,a2,0x4
  4d1b58:	00641826 	xor	v1,v1,a0
  4d1b5c:	10400004 	beqz	v0,4d1b70 <dpdiv+0xc0>
  4d1b60:	afa3001c 	sw	v1,28(sp)
  4d1b64:	38c20002 	xori	v0,a2,0x2
  4d1b68:	1440000e 	bnez	v0,4d1ba4 <dpdiv+0xf4>
  4d1b6c:	38a20004 	xori	v0,a1,0x4
  4d1b70:	8f848448 	lw	a0,-31672(gp)
  4d1b74:	10c50002 	beq	a2,a1,4d1b80 <dpdiv+0xd0>
  4d1b78:	00000000 	nop
  4d1b7c:	01e02021 	move	a0,t7
  4d1b80:	8f9980a8 	lw	t9,-32600(gp)
  4d1b84:	00000000 	nop
  4d1b88:	0320f809 	jalr	t9
  4d1b8c:	00000000 	nop
  4d1b90:	8fbc0010 	lw	gp,16(sp)
  4d1b94:	8fbf0060 	lw	ra,96(sp)
  4d1b98:	8fb00058 	lw	s0,88(sp)
  4d1b9c:	03e00008 	jr	ra
  4d1ba0:	27bd0068 	addiu	sp,sp,104
  4d1ba4:	14400008 	bnez	v0,4d1bc8 <dpdiv+0x118>
  4d1ba8:	38a20002 	xori	v0,a1,0x2
  4d1bac:	00001021 	move	v0,zero
  4d1bb0:	00001821 	move	v1,zero
  4d1bb4:	01e02021 	move	a0,t7
  4d1bb8:	afa20028 	sw	v0,40(sp)
  4d1bbc:	afa3002c 	sw	v1,44(sp)
  4d1bc0:	1000ffef 	b	4d1b80 <dpdiv+0xd0>
  4d1bc4:	afa00020 	sw	zero,32(sp)
  4d1bc8:	14400004 	bnez	v0,4d1bdc <dpdiv+0x12c>
  4d1bcc:	24020004 	li	v0,4
  4d1bd0:	01e02021 	move	a0,t7
  4d1bd4:	1000ffea 	b	4d1b80 <dpdiv+0xd0>
  4d1bd8:	afa20018 	sw	v0,24(sp)
  4d1bdc:	8fa30020 	lw	v1,32(sp)
  4d1be0:	8fa40028 	lw	a0,40(sp)
  4d1be4:	8fa5002c 	lw	a1,44(sp)
  4d1be8:	8fa80040 	lw	t0,64(sp)
  4d1bec:	8fa90044 	lw	t1,68(sp)
  4d1bf0:	8fa20038 	lw	v0,56(sp)
  4d1bf4:	0088702b 	sltu	t6,a0,t0
  4d1bf8:	00621823 	subu	v1,v1,v0
  4d1bfc:	15c0003e 	bnez	t6,4d1cf8 <dpdiv+0x248>
  4d1c00:	afa30020 	sw	v1,32(sp)
  4d1c04:	1104003a 	beq	t0,a0,4d1cf0 <dpdiv+0x240>
  4d1c08:	00a9102b 	sltu	v0,a1,t1
  4d1c0c:	3c0a1000 	lui	t2,0x1000
  4d1c10:	240b0000 	li	t3,0
  4d1c14:	00006021 	move	t4,zero
  4d1c18:	00006821 	move	t5,zero
  4d1c1c:	11c00027 	beqz	t6,4d1cbc <dpdiv+0x20c>
  4d1c20:	00000000 	nop
  4d1c24:	000a17c0 	sll	v0,t2,0x1f
  4d1c28:	000b5842 	srl	t3,t3,0x1
  4d1c2c:	00043040 	sll	a2,a0,0x1
  4d1c30:	00051fc2 	srl	v1,a1,0x1f
  4d1c34:	01625825 	or	t3,t3,v0
  4d1c38:	000a5042 	srl	t2,t2,0x1
  4d1c3c:	00c33025 	or	a2,a2,v1
  4d1c40:	00053840 	sll	a3,a1,0x1
  4d1c44:	016a1025 	or	v0,t3,t2
  4d1c48:	00c8702b 	sltu	t6,a2,t0
  4d1c4c:	00c02021 	move	a0,a2
  4d1c50:	1440fff2 	bnez	v0,4d1c1c <dpdiv+0x16c>
  4d1c54:	00e02821 	move	a1,a3
  4d1c58:	24020000 	li	v0,0
  4d1c5c:	240300ff 	li	v1,255
  4d1c60:	01822024 	and	a0,t4,v0
  4d1c64:	10800005 	beqz	a0,4d1c7c <dpdiv+0x1cc>
  4d1c68:	01a32824 	and	a1,t5,v1
  4d1c6c:	adec0010 	sw	t4,16(t7)
  4d1c70:	aded0014 	sw	t5,20(t7)
  4d1c74:	1000ffc2 	b	4d1b80 <dpdiv+0xd0>
  4d1c78:	01e02021 	move	a0,t7
  4d1c7c:	24020080 	li	v0,128
  4d1c80:	14a2fffa 	bne	a1,v0,4d1c6c <dpdiv+0x1bc>
  4d1c84:	00000000 	nop
  4d1c88:	24020000 	li	v0,0
  4d1c8c:	24030100 	li	v1,256
  4d1c90:	01821024 	and	v0,t4,v0
  4d1c94:	01a31824 	and	v1,t5,v1
  4d1c98:	00621025 	or	v0,v1,v0
  4d1c9c:	14400003 	bnez	v0,4d1cac <dpdiv+0x1fc>
  4d1ca0:	00e61025 	or	v0,a3,a2
  4d1ca4:	1040fff1 	beqz	v0,4d1c6c <dpdiv+0x1bc>
  4d1ca8:	00000000 	nop
  4d1cac:	25ad0080 	addiu	t5,t5,128
  4d1cb0:	2da20080 	sltiu	v0,t5,128
  4d1cb4:	1000ffed 	b	4d1c6c <dpdiv+0x1bc>
  4d1cb8:	01826021 	addu	t4,t4,v0
  4d1cbc:	11040008 	beq	t0,a0,4d1ce0 <dpdiv+0x230>
  4d1cc0:	00a9102b 	sltu	v0,a1,t1
  4d1cc4:	00a9102b 	sltu	v0,a1,t1
  4d1cc8:	00882023 	subu	a0,a0,t0
  4d1ccc:	00a92823 	subu	a1,a1,t1
  4d1cd0:	00822023 	subu	a0,a0,v0
  4d1cd4:	018a6025 	or	t4,t4,t2
  4d1cd8:	1000ffd2 	b	4d1c24 <dpdiv+0x174>
  4d1cdc:	01ab6825 	or	t5,t5,t3
  4d1ce0:	1440ffd0 	bnez	v0,4d1c24 <dpdiv+0x174>
  4d1ce4:	00a9102b 	sltu	v0,a1,t1
  4d1ce8:	1000fff8 	b	4d1ccc <dpdiv+0x21c>
  4d1cec:	00882023 	subu	a0,a0,t0
  4d1cf0:	1040ffc6 	beqz	v0,4d1c0c <dpdiv+0x15c>
  4d1cf4:	00000000 	nop
  4d1cf8:	2462ffff 	addiu	v0,v1,-1
  4d1cfc:	00042040 	sll	a0,a0,0x1
  4d1d00:	00051fc2 	srl	v1,a1,0x1f
  4d1d04:	00832025 	or	a0,a0,v1
  4d1d08:	00052840 	sll	a1,a1,0x1
  4d1d0c:	afa20020 	sw	v0,32(sp)
  4d1d10:	1000ffbe 	b	4d1c0c <dpdiv+0x15c>
  4d1d14:	0088702b 	sltu	t6,a0,t0

004d1d18 <__fpcmp_parts_d>:
  4d1d18:	3c1c0fb4 	lui	gp,0xfb4
  4d1d1c:	279cac58 	addiu	gp,gp,-21416
  4d1d20:	0399e021 	addu	gp,gp,t9
  4d1d24:	8c860000 	lw	a2,0(a0)
  4d1d28:	00000000 	nop
  4d1d2c:	2cc20002 	sltiu	v0,a2,2
  4d1d30:	14400006 	bnez	v0,4d1d4c <__fpcmp_parts_d+0x34>
  4d1d34:	00000000 	nop
  4d1d38:	8ca30000 	lw	v1,0(a1)
  4d1d3c:	00000000 	nop
  4d1d40:	2c620002 	sltiu	v0,v1,2
  4d1d44:	10400003 	beqz	v0,4d1d54 <__fpcmp_parts_d+0x3c>
  4d1d48:	00000000 	nop
  4d1d4c:	03e00008 	jr	ra
  4d1d50:	24020001 	li	v0,1
  4d1d54:	38c20004 	xori	v0,a2,0x4
  4d1d58:	14400007 	bnez	v0,4d1d78 <__fpcmp_parts_d+0x60>
  4d1d5c:	38620004 	xori	v0,v1,0x4
  4d1d60:	1440001a 	bnez	v0,4d1dcc <__fpcmp_parts_d+0xb4>
  4d1d64:	00000000 	nop
  4d1d68:	8ca20004 	lw	v0,4(a1)
  4d1d6c:	8c830004 	lw	v1,4(a0)
  4d1d70:	03e00008 	jr	ra
  4d1d74:	00431023 	subu	v0,v0,v1
  4d1d78:	14400007 	bnez	v0,4d1d98 <__fpcmp_parts_d+0x80>
  4d1d7c:	38c20002 	xori	v0,a2,0x2
  4d1d80:	8ca20004 	lw	v0,4(a1)
  4d1d84:	00000000 	nop
  4d1d88:	14400014 	bnez	v0,4d1ddc <__fpcmp_parts_d+0xc4>
  4d1d8c:	24030001 	li	v1,1
  4d1d90:	10000012 	b	4d1ddc <__fpcmp_parts_d+0xc4>
  4d1d94:	2403ffff 	li	v1,-1
  4d1d98:	1440000a 	bnez	v0,4d1dc4 <__fpcmp_parts_d+0xac>
  4d1d9c:	38620002 	xori	v0,v1,0x2
  4d1da0:	38630002 	xori	v1,v1,0x2
  4d1da4:	1060003f 	beqz	v1,4d1ea4 <__fpcmp_parts_d+0x18c>
  4d1da8:	00001021 	move	v0,zero
  4d1dac:	8ca20004 	lw	v0,4(a1)
  4d1db0:	00000000 	nop
  4d1db4:	1040fff6 	beqz	v0,4d1d90 <__fpcmp_parts_d+0x78>
  4d1db8:	24030001 	li	v1,1
  4d1dbc:	03e00008 	jr	ra
  4d1dc0:	00601021 	move	v0,v1
  4d1dc4:	14400009 	bnez	v0,4d1dec <__fpcmp_parts_d+0xd4>
  4d1dc8:	00000000 	nop
  4d1dcc:	8c820004 	lw	v0,4(a0)
  4d1dd0:	00000000 	nop
  4d1dd4:	10400003 	beqz	v0,4d1de4 <__fpcmp_parts_d+0xcc>
  4d1dd8:	2403ffff 	li	v1,-1
  4d1ddc:	03e00008 	jr	ra
  4d1de0:	00601021 	move	v0,v1
  4d1de4:	1000fffd 	b	4d1ddc <__fpcmp_parts_d+0xc4>
  4d1de8:	24030001 	li	v1,1
  4d1dec:	8c880004 	lw	t0,4(a0)
  4d1df0:	8ca20004 	lw	v0,4(a1)
  4d1df4:	00000000 	nop
  4d1df8:	15020027 	bne	t0,v0,4d1e98 <__fpcmp_parts_d+0x180>
  4d1dfc:	00000000 	nop
  4d1e00:	8c860008 	lw	a2,8(a0)
  4d1e04:	8ca30008 	lw	v1,8(a1)
  4d1e08:	00000000 	nop
  4d1e0c:	0066102a 	slt	v0,v1,a2
  4d1e10:	14400021 	bnez	v0,4d1e98 <__fpcmp_parts_d+0x180>
  4d1e14:	00c3102a 	slt	v0,a2,v1
  4d1e18:	14400015 	bnez	v0,4d1e70 <__fpcmp_parts_d+0x158>
  4d1e1c:	00000000 	nop
  4d1e20:	8c870010 	lw	a3,16(a0)
  4d1e24:	8ca60010 	lw	a2,16(a1)
  4d1e28:	00000000 	nop
  4d1e2c:	00c7102b 	sltu	v0,a2,a3
  4d1e30:	14400019 	bnez	v0,4d1e98 <__fpcmp_parts_d+0x180>
  4d1e34:	00000000 	nop
  4d1e38:	10e60011 	beq	a3,a2,4d1e80 <__fpcmp_parts_d+0x168>
  4d1e3c:	00e6102b 	sltu	v0,a3,a2
  4d1e40:	1440000b 	bnez	v0,4d1e70 <__fpcmp_parts_d+0x158>
  4d1e44:	00000000 	nop
  4d1e48:	10c70003 	beq	a2,a3,4d1e58 <__fpcmp_parts_d+0x140>
  4d1e4c:	00000000 	nop
  4d1e50:	03e00008 	jr	ra
  4d1e54:	00001021 	move	v0,zero
  4d1e58:	8ca30014 	lw	v1,20(a1)
  4d1e5c:	8c820014 	lw	v0,20(a0)
  4d1e60:	00000000 	nop
  4d1e64:	0043102b 	sltu	v0,v0,v1
  4d1e68:	1040fff9 	beqz	v0,4d1e50 <__fpcmp_parts_d+0x138>
  4d1e6c:	00000000 	nop
  4d1e70:	1500000c 	bnez	t0,4d1ea4 <__fpcmp_parts_d+0x18c>
  4d1e74:	24020001 	li	v0,1
  4d1e78:	03e00008 	jr	ra
  4d1e7c:	2402ffff 	li	v0,-1
  4d1e80:	8c830014 	lw	v1,20(a0)
  4d1e84:	8ca20014 	lw	v0,20(a1)
  4d1e88:	00000000 	nop
  4d1e8c:	0043102b 	sltu	v0,v0,v1
  4d1e90:	1040ffeb 	beqz	v0,4d1e40 <__fpcmp_parts_d+0x128>
  4d1e94:	00e6102b 	sltu	v0,a3,a2
  4d1e98:	15000002 	bnez	t0,4d1ea4 <__fpcmp_parts_d+0x18c>
  4d1e9c:	2402ffff 	li	v0,-1
  4d1ea0:	24020001 	li	v0,1
  4d1ea4:	03e00008 	jr	ra
  4d1ea8:	00000000 	nop

004d1eac <dpcmp>:
  4d1eac:	3c1c0fb4 	lui	gp,0xfb4
  4d1eb0:	279caac4 	addiu	gp,gp,-21820
  4d1eb4:	0399e021 	addu	gp,gp,t9
  4d1eb8:	27bdff98 	addiu	sp,sp,-104
  4d1ebc:	afbc0010 	sw	gp,16(sp)
  4d1ec0:	00a01821 	move	v1,a1
  4d1ec4:	00801021 	move	v0,a0
  4d1ec8:	27a50018 	addiu	a1,sp,24
  4d1ecc:	27a40048 	addiu	a0,sp,72
  4d1ed0:	afbf0060 	sw	ra,96(sp)
  4d1ed4:	afb00058 	sw	s0,88(sp)
  4d1ed8:	afbc005c 	sw	gp,92(sp)
  4d1edc:	afa20048 	sw	v0,72(sp)
  4d1ee0:	afa60050 	sw	a2,80(sp)
  4d1ee4:	afa3004c 	sw	v1,76(sp)
  4d1ee8:	afa70054 	sw	a3,84(sp)
  4d1eec:	8f99890c 	lw	t9,-30452(gp)
  4d1ef0:	00000000 	nop
  4d1ef4:	0320f809 	jalr	t9
  4d1ef8:	00000000 	nop
  4d1efc:	8fbc0010 	lw	gp,16(sp)
  4d1f00:	27b00030 	addiu	s0,sp,48
  4d1f04:	27a40050 	addiu	a0,sp,80
  4d1f08:	02002821 	move	a1,s0
  4d1f0c:	8f99890c 	lw	t9,-30452(gp)
  4d1f10:	00000000 	nop
  4d1f14:	0320f809 	jalr	t9
  4d1f18:	00000000 	nop
  4d1f1c:	8fbc0010 	lw	gp,16(sp)
  4d1f20:	27a40018 	addiu	a0,sp,24
  4d1f24:	02002821 	move	a1,s0
  4d1f28:	8f9985e4 	lw	t9,-31260(gp)
  4d1f2c:	00000000 	nop
  4d1f30:	0320f809 	jalr	t9
  4d1f34:	00000000 	nop
  4d1f38:	8fbc0010 	lw	gp,16(sp)
  4d1f3c:	8fbf0060 	lw	ra,96(sp)
  4d1f40:	8fb00058 	lw	s0,88(sp)
  4d1f44:	03e00008 	jr	ra
  4d1f48:	27bd0068 	addiu	sp,sp,104

004d1f4c <litodp>:
  4d1f4c:	3c1c0fb4 	lui	gp,0xfb4
  4d1f50:	279caa24 	addiu	gp,gp,-21980
  4d1f54:	0399e021 	addu	gp,gp,t9
  4d1f58:	27bdffc8 	addiu	sp,sp,-56
  4d1f5c:	afbc0010 	sw	gp,16(sp)
  4d1f60:	00802821 	move	a1,a0
  4d1f64:	00051fc2 	srl	v1,a1,0x1f
  4d1f68:	24020003 	li	v0,3
  4d1f6c:	afbf0034 	sw	ra,52(sp)
  4d1f70:	afbc0030 	sw	gp,48(sp)
  4d1f74:	afa20018 	sw	v0,24(sp)
  4d1f78:	10a00032 	beqz	a1,4d2044 <litodp+0xf8>
  4d1f7c:	afa3001c 	sw	v1,28(sp)
  4d1f80:	2402003c 	li	v0,60
  4d1f84:	1060002c 	beqz	v1,4d2038 <litodp+0xec>
  4d1f88:	afa20020 	sw	v0,32(sp)
  4d1f8c:	3c048000 	lui	a0,0x8000
  4d1f90:	3c02c1e0 	lui	v0,0xc1e0
  4d1f94:	10a40024 	beq	a1,a0,4d2028 <litodp+0xdc>
  4d1f98:	00001821 	move	v1,zero
  4d1f9c:	00051023 	negu	v0,a1
  4d1fa0:	00401821 	move	v1,v0
  4d1fa4:	000217c3 	sra	v0,v0,0x1f
  4d1fa8:	afa20028 	sw	v0,40(sp)
  4d1fac:	afa3002c 	sw	v1,44(sp)
  4d1fb0:	3c020fff 	lui	v0,0xfff
  4d1fb4:	8fa30028 	lw	v1,40(sp)
  4d1fb8:	3442ffff 	ori	v0,v0,0xffff
  4d1fbc:	0043102b 	sltu	v0,v0,v1
  4d1fc0:	14400014 	bnez	v0,4d2014 <litodp+0xc8>
  4d1fc4:	27a40018 	addiu	a0,sp,24
  4d1fc8:	3c060fff 	lui	a2,0xfff
  4d1fcc:	8fa50020 	lw	a1,32(sp)
  4d1fd0:	34c6ffff 	ori	a2,a2,0xffff
  4d1fd4:	8fa20028 	lw	v0,40(sp)
  4d1fd8:	8fa3002c 	lw	v1,44(sp)
  4d1fdc:	00000000 	nop
  4d1fe0:	000327c2 	srl	a0,v1,0x1f
  4d1fe4:	00021040 	sll	v0,v0,0x1
  4d1fe8:	00441025 	or	v0,v0,a0
  4d1fec:	00031840 	sll	v1,v1,0x1
  4d1ff0:	afa20028 	sw	v0,40(sp)
  4d1ff4:	afa3002c 	sw	v1,44(sp)
  4d1ff8:	8fa40028 	lw	a0,40(sp)
  4d1ffc:	00000000 	nop
  4d2000:	00c4202b 	sltu	a0,a2,a0
  4d2004:	1080fff3 	beqz	a0,4d1fd4 <litodp+0x88>
  4d2008:	24a5ffff 	addiu	a1,a1,-1
  4d200c:	afa50020 	sw	a1,32(sp)
  4d2010:	27a40018 	addiu	a0,sp,24
  4d2014:	8f9980a8 	lw	t9,-32600(gp)
  4d2018:	00000000 	nop
  4d201c:	0320f809 	jalr	t9
  4d2020:	00000000 	nop
  4d2024:	8fbc0010 	lw	gp,16(sp)
  4d2028:	8fbf0034 	lw	ra,52(sp)
  4d202c:	00000000 	nop
  4d2030:	03e00008 	jr	ra
  4d2034:	27bd0038 	addiu	sp,sp,56
  4d2038:	00a01821 	move	v1,a1
  4d203c:	1000ffda 	b	4d1fa8 <litodp+0x5c>
  4d2040:	000517c3 	sra	v0,a1,0x1f
  4d2044:	24020002 	li	v0,2
  4d2048:	1000fff1 	b	4d2010 <litodp+0xc4>
  4d204c:	afa20018 	sw	v0,24(sp)

004d2050 <__floatunsidf>:
  4d2050:	3c1c0fb4 	lui	gp,0xfb4
  4d2054:	279ca920 	addiu	gp,gp,-22240
  4d2058:	0399e021 	addu	gp,gp,t9
  4d205c:	27bdffc8 	addiu	sp,sp,-56
  4d2060:	afbc0010 	sw	gp,16(sp)
  4d2064:	afbf0034 	sw	ra,52(sp)
  4d2068:	afbc0030 	sw	gp,48(sp)
  4d206c:	1080004a 	beqz	a0,4d2198 <__floatunsidf+0x148>
  4d2070:	afa0001c 	sw	zero,28(sp)
  4d2074:	00801821 	move	v1,a0
  4d2078:	00001021 	move	v0,zero
  4d207c:	afa20028 	sw	v0,40(sp)
  4d2080:	afa3002c 	sw	v1,44(sp)
  4d2084:	8fa50028 	lw	a1,40(sp)
  4d2088:	3c061000 	lui	a2,0x1000
  4d208c:	24020003 	li	v0,3
  4d2090:	2403003c 	li	v1,60
  4d2094:	00c5202b 	sltu	a0,a2,a1
  4d2098:	afa20018 	sw	v0,24(sp)
  4d209c:	14800027 	bnez	a0,4d213c <__floatunsidf+0xec>
  4d20a0:	afa30020 	sw	v1,32(sp)
  4d20a4:	10a60021 	beq	a1,a2,4d212c <__floatunsidf+0xdc>
  4d20a8:	3c020fff 	lui	v0,0xfff
  4d20ac:	3442ffff 	ori	v0,v0,0xffff
  4d20b0:	0045102b 	sltu	v0,v0,a1
  4d20b4:	14400014 	bnez	v0,4d2108 <__floatunsidf+0xb8>
  4d20b8:	27a40018 	addiu	a0,sp,24
  4d20bc:	3c060fff 	lui	a2,0xfff
  4d20c0:	8fa50020 	lw	a1,32(sp)
  4d20c4:	34c6ffff 	ori	a2,a2,0xffff
  4d20c8:	8fa20028 	lw	v0,40(sp)
  4d20cc:	8fa3002c 	lw	v1,44(sp)
  4d20d0:	00000000 	nop
  4d20d4:	000327c2 	srl	a0,v1,0x1f
  4d20d8:	00021040 	sll	v0,v0,0x1
  4d20dc:	00441025 	or	v0,v0,a0
  4d20e0:	00031840 	sll	v1,v1,0x1
  4d20e4:	afa20028 	sw	v0,40(sp)
  4d20e8:	afa3002c 	sw	v1,44(sp)
  4d20ec:	8fa40028 	lw	a0,40(sp)
  4d20f0:	00000000 	nop
  4d20f4:	00c4202b 	sltu	a0,a2,a0
  4d20f8:	1080fff3 	beqz	a0,4d20c8 <__floatunsidf+0x78>
  4d20fc:	24a5ffff 	addiu	a1,a1,-1
  4d2100:	afa50020 	sw	a1,32(sp)
  4d2104:	27a40018 	addiu	a0,sp,24
  4d2108:	8f9980a8 	lw	t9,-32600(gp)
  4d210c:	00000000 	nop
  4d2110:	0320f809 	jalr	t9
  4d2114:	00000000 	nop
  4d2118:	8fbc0010 	lw	gp,16(sp)
  4d211c:	8fbf0034 	lw	ra,52(sp)
  4d2120:	00000000 	nop
  4d2124:	03e00008 	jr	ra
  4d2128:	27bd0038 	addiu	sp,sp,56
  4d212c:	8fa2002c 	lw	v0,44(sp)
  4d2130:	00000000 	nop
  4d2134:	1040ffdd 	beqz	v0,4d20ac <__floatunsidf+0x5c>
  4d2138:	3c020fff 	lui	v0,0xfff
  4d213c:	8fa20028 	lw	v0,40(sp)
  4d2140:	8fa3002c 	lw	v1,44(sp)
  4d2144:	8fa40020 	lw	a0,32(sp)
  4d2148:	00022fc0 	sll	a1,v0,0x1f
  4d214c:	00031842 	srl	v1,v1,0x1
  4d2150:	00651825 	or	v1,v1,a1
  4d2154:	00021042 	srl	v0,v0,0x1
  4d2158:	afa20028 	sw	v0,40(sp)
  4d215c:	afa3002c 	sw	v1,44(sp)
  4d2160:	8fa50028 	lw	a1,40(sp)
  4d2164:	3c031000 	lui	v1,0x1000
  4d2168:	24840001 	addiu	a0,a0,1
  4d216c:	0065102b 	sltu	v0,v1,a1
  4d2170:	1440fff2 	bnez	v0,4d213c <__floatunsidf+0xec>
  4d2174:	afa40020 	sw	a0,32(sp)
  4d2178:	14a3ffcc 	bne	a1,v1,4d20ac <__floatunsidf+0x5c>
  4d217c:	3c020fff 	lui	v0,0xfff
  4d2180:	8fa2002c 	lw	v0,44(sp)
  4d2184:	00000000 	nop
  4d2188:	1440ffec 	bnez	v0,4d213c <__floatunsidf+0xec>
  4d218c:	3c020fff 	lui	v0,0xfff
  4d2190:	1000ffc7 	b	4d20b0 <__floatunsidf+0x60>
  4d2194:	3442ffff 	ori	v0,v0,0xffff
  4d2198:	24020002 	li	v0,2
  4d219c:	1000ffd9 	b	4d2104 <__floatunsidf+0xb4>
  4d21a0:	afa20018 	sw	v0,24(sp)

004d21a4 <dptoli>:
  4d21a4:	3c1c0fb4 	lui	gp,0xfb4
  4d21a8:	279ca7cc 	addiu	gp,gp,-22580
  4d21ac:	0399e021 	addu	gp,gp,t9
  4d21b0:	27bdffc0 	addiu	sp,sp,-64
  4d21b4:	afbc0010 	sw	gp,16(sp)
  4d21b8:	00801021 	move	v0,a0
  4d21bc:	00a01821 	move	v1,a1
  4d21c0:	27a40030 	addiu	a0,sp,48
  4d21c4:	27a50018 	addiu	a1,sp,24
  4d21c8:	afa20030 	sw	v0,48(sp)
  4d21cc:	afa30034 	sw	v1,52(sp)
  4d21d0:	afbf003c 	sw	ra,60(sp)
  4d21d4:	afbc0038 	sw	gp,56(sp)
  4d21d8:	8f99890c 	lw	t9,-30452(gp)
  4d21dc:	00000000 	nop
  4d21e0:	0320f809 	jalr	t9
  4d21e4:	00000000 	nop
  4d21e8:	8fbc0010 	lw	gp,16(sp)
  4d21ec:	8fa40018 	lw	a0,24(sp)
  4d21f0:	00000000 	nop
  4d21f4:	38830002 	xori	v1,a0,0x2
  4d21f8:	1060000c 	beqz	v1,4d222c <dptoli+0x88>
  4d21fc:	00001021 	move	v0,zero
  4d2200:	2c830002 	sltiu	v1,a0,2
  4d2204:	14600009 	bnez	v1,4d222c <dptoli+0x88>
  4d2208:	00000000 	nop
  4d220c:	38820004 	xori	v0,a0,0x4
  4d2210:	1440000d 	bnez	v0,4d2248 <dptoli+0xa4>
  4d2214:	00000000 	nop
  4d2218:	8fa2001c 	lw	v0,28(sp)
  4d221c:	00000000 	nop
  4d2220:	10400006 	beqz	v0,4d223c <dptoli+0x98>
  4d2224:	3c038000 	lui	v1,0x8000
  4d2228:	00601021 	move	v0,v1
  4d222c:	8fbf003c 	lw	ra,60(sp)
  4d2230:	00000000 	nop
  4d2234:	03e00008 	jr	ra
  4d2238:	27bd0040 	addiu	sp,sp,64
  4d223c:	3c037fff 	lui	v1,0x7fff
  4d2240:	1000fff9 	b	4d2228 <dptoli+0x84>
  4d2244:	3463ffff 	ori	v1,v1,0xffff
  4d2248:	8fa30020 	lw	v1,32(sp)
  4d224c:	00000000 	nop
  4d2250:	0460fff6 	bltz	v1,4d222c <dptoli+0x88>
  4d2254:	00001021 	move	v0,zero
  4d2258:	2862001f 	slti	v0,v1,31
  4d225c:	1040ffee 	beqz	v0,4d2218 <dptoli+0x74>
  4d2260:	2406003c 	li	a2,60
  4d2264:	00c33023 	subu	a2,a2,v1
  4d2268:	8fa20028 	lw	v0,40(sp)
  4d226c:	8fa3002c 	lw	v1,44(sp)
  4d2270:	00063e80 	sll	a3,a2,0x1a
  4d2274:	04e10004 	bgez	a3,4d2288 <dptoli+0xe4>
  4d2278:	00000000 	nop
  4d227c:	00c22806 	srlv	a1,v0,a2
  4d2280:	10000007 	b	4d22a0 <dptoli+0xfc>
  4d2284:	00002021 	move	a0,zero
  4d2288:	10e00004 	beqz	a3,4d229c <dptoli+0xf8>
  4d228c:	00c32806 	srlv	a1,v1,a2
  4d2290:	00063823 	negu	a3,a2
  4d2294:	00e23804 	sllv	a3,v0,a3
  4d2298:	00a72825 	or	a1,a1,a3
  4d229c:	00c22006 	srlv	a0,v0,a2
  4d22a0:	8fa2001c 	lw	v0,28(sp)
  4d22a4:	00000000 	nop
  4d22a8:	10400002 	beqz	v0,4d22b4 <dptoli+0x110>
  4d22ac:	00a02021 	move	a0,a1
  4d22b0:	00042023 	negu	a0,a0
  4d22b4:	1000ffdd 	b	4d222c <dptoli+0x88>
  4d22b8:	00801021 	move	v0,a0

004d22bc <dptoul>:
  4d22bc:	3c1c0fb4 	lui	gp,0xfb4
  4d22c0:	279ca6b4 	addiu	gp,gp,-22860
  4d22c4:	0399e021 	addu	gp,gp,t9
  4d22c8:	27bdffc0 	addiu	sp,sp,-64
  4d22cc:	afbc0010 	sw	gp,16(sp)
  4d22d0:	00801021 	move	v0,a0
  4d22d4:	00a01821 	move	v1,a1
  4d22d8:	27a40030 	addiu	a0,sp,48
  4d22dc:	27a50018 	addiu	a1,sp,24
  4d22e0:	afa20030 	sw	v0,48(sp)
  4d22e4:	afa30034 	sw	v1,52(sp)
  4d22e8:	afbf003c 	sw	ra,60(sp)
  4d22ec:	afbc0038 	sw	gp,56(sp)
  4d22f0:	8f99890c 	lw	t9,-30452(gp)
  4d22f4:	00000000 	nop
  4d22f8:	0320f809 	jalr	t9
  4d22fc:	00000000 	nop
  4d2300:	8fbc0010 	lw	gp,16(sp)
  4d2304:	8fa40018 	lw	a0,24(sp)
  4d2308:	00001021 	move	v0,zero
  4d230c:	38830002 	xori	v1,a0,0x2
  4d2310:	10600007 	beqz	v1,4d2330 <dptoul+0x74>
  4d2314:	2c850002 	sltiu	a1,a0,2
  4d2318:	14a00005 	bnez	a1,4d2330 <dptoul+0x74>
  4d231c:	00000000 	nop
  4d2320:	8fa3001c 	lw	v1,28(sp)
  4d2324:	00000000 	nop
  4d2328:	10600005 	beqz	v1,4d2340 <dptoul+0x84>
  4d232c:	38840004 	xori	a0,a0,0x4
  4d2330:	8fbf003c 	lw	ra,60(sp)
  4d2334:	00000000 	nop
  4d2338:	03e00008 	jr	ra
  4d233c:	27bd0040 	addiu	sp,sp,64
  4d2340:	1080fffb 	beqz	a0,4d2330 <dptoul+0x74>
  4d2344:	2402ffff 	li	v0,-1
  4d2348:	8fa30020 	lw	v1,32(sp)
  4d234c:	00001021 	move	v0,zero
  4d2350:	0460fff7 	bltz	v1,4d2330 <dptoul+0x74>
  4d2354:	28640020 	slti	a0,v1,32
  4d2358:	2865003d 	slti	a1,v1,61
  4d235c:	1080fff4 	beqz	a0,4d2330 <dptoul+0x74>
  4d2360:	2402ffff 	li	v0,-1
  4d2364:	14a00012 	bnez	a1,4d23b0 <dptoul+0xf4>
  4d2368:	2464ffc4 	addiu	a0,v1,-60
  4d236c:	8fa20028 	lw	v0,40(sp)
  4d2370:	8fa3002c 	lw	v1,44(sp)
  4d2374:	00043680 	sll	a2,a0,0x1a
  4d2378:	04c10004 	bgez	a2,4d238c <dptoul+0xd0>
  4d237c:	00000000 	nop
  4d2380:	00834004 	sllv	t0,v1,a0
  4d2384:	10000007 	b	4d23a4 <dptoul+0xe8>
  4d2388:	00004821 	move	t1,zero
  4d238c:	10c00004 	beqz	a2,4d23a0 <dptoul+0xe4>
  4d2390:	00824004 	sllv	t0,v0,a0
  4d2394:	00043023 	negu	a2,a0
  4d2398:	00c33006 	srlv	a2,v1,a2
  4d239c:	01064025 	or	t0,t0,a2
  4d23a0:	00834804 	sllv	t1,v1,a0
  4d23a4:	01202821 	move	a1,t1
  4d23a8:	1000ffe1 	b	4d2330 <dptoul+0x74>
  4d23ac:	00a01021 	move	v0,a1
  4d23b0:	2406003c 	li	a2,60
  4d23b4:	00c33023 	subu	a2,a2,v1
  4d23b8:	8fa20028 	lw	v0,40(sp)
  4d23bc:	8fa3002c 	lw	v1,44(sp)
  4d23c0:	00063e80 	sll	a3,a2,0x1a
  4d23c4:	04e10004 	bgez	a3,4d23d8 <dptoul+0x11c>
  4d23c8:	00000000 	nop
  4d23cc:	00c22806 	srlv	a1,v0,a2
  4d23d0:	10000007 	b	4d23f0 <dptoul+0x134>
  4d23d4:	00002021 	move	a0,zero
  4d23d8:	10e00004 	beqz	a3,4d23ec <dptoul+0x130>
  4d23dc:	00c32806 	srlv	a1,v1,a2
  4d23e0:	00063823 	negu	a3,a2
  4d23e4:	00e23804 	sllv	a3,v0,a3
  4d23e8:	00a72825 	or	a1,a1,a3
  4d23ec:	00c22006 	srlv	a0,v0,a2
  4d23f0:	1000ffcf 	b	4d2330 <dptoul+0x74>
  4d23f4:	00a01021 	move	v0,a1

004d23f8 <__negdf2>:
  4d23f8:	3c1c0fb4 	lui	gp,0xfb4
  4d23fc:	279ca578 	addiu	gp,gp,-23176
  4d2400:	0399e021 	addu	gp,gp,t9
  4d2404:	27bdffc0 	addiu	sp,sp,-64
  4d2408:	afbc0010 	sw	gp,16(sp)
  4d240c:	00801021 	move	v0,a0
  4d2410:	00a01821 	move	v1,a1
  4d2414:	27a40030 	addiu	a0,sp,48
  4d2418:	27a50018 	addiu	a1,sp,24
  4d241c:	afbf003c 	sw	ra,60(sp)
  4d2420:	afa20030 	sw	v0,48(sp)
  4d2424:	afbc0038 	sw	gp,56(sp)
  4d2428:	afa30034 	sw	v1,52(sp)
  4d242c:	8f99890c 	lw	t9,-30452(gp)
  4d2430:	00000000 	nop
  4d2434:	0320f809 	jalr	t9
  4d2438:	00000000 	nop
  4d243c:	8fbc0010 	lw	gp,16(sp)
  4d2440:	8fa2001c 	lw	v0,28(sp)
  4d2444:	27a40018 	addiu	a0,sp,24
  4d2448:	2c420001 	sltiu	v0,v0,1
  4d244c:	afa2001c 	sw	v0,28(sp)
  4d2450:	8f9980a8 	lw	t9,-32600(gp)
  4d2454:	00000000 	nop
  4d2458:	0320f809 	jalr	t9
  4d245c:	00000000 	nop
  4d2460:	8fbc0010 	lw	gp,16(sp)
  4d2464:	8fbf003c 	lw	ra,60(sp)
  4d2468:	00000000 	nop
  4d246c:	03e00008 	jr	ra
  4d2470:	27bd0040 	addiu	sp,sp,64

004d2474 <__make_dp>:
  4d2474:	3c1c0fb4 	lui	gp,0xfb4
  4d2478:	279ca4fc 	addiu	gp,gp,-23300
  4d247c:	0399e021 	addu	gp,gp,t9
  4d2480:	27bdffc8 	addiu	sp,sp,-56
  4d2484:	afbc0010 	sw	gp,16(sp)
  4d2488:	00801021 	move	v0,a0
  4d248c:	afa20018 	sw	v0,24(sp)
  4d2490:	8fa20048 	lw	v0,72(sp)
  4d2494:	8fa3004c 	lw	v1,76(sp)
  4d2498:	27a40018 	addiu	a0,sp,24
  4d249c:	afbf0034 	sw	ra,52(sp)
  4d24a0:	afbc0030 	sw	gp,48(sp)
  4d24a4:	afa5001c 	sw	a1,28(sp)
  4d24a8:	afa60020 	sw	a2,32(sp)
  4d24ac:	afa20028 	sw	v0,40(sp)
  4d24b0:	afa3002c 	sw	v1,44(sp)
  4d24b4:	8f9980a8 	lw	t9,-32600(gp)
  4d24b8:	00000000 	nop
  4d24bc:	0320f809 	jalr	t9
  4d24c0:	00000000 	nop
  4d24c4:	8fbc0010 	lw	gp,16(sp)
  4d24c8:	8fbf0034 	lw	ra,52(sp)
  4d24cc:	00000000 	nop
  4d24d0:	03e00008 	jr	ra
  4d24d4:	27bd0038 	addiu	sp,sp,56

004d24d8 <dptofp>:
  4d24d8:	3c1c0fb4 	lui	gp,0xfb4
  4d24dc:	279ca498 	addiu	gp,gp,-23400
  4d24e0:	0399e021 	addu	gp,gp,t9
  4d24e4:	27bdffc0 	addiu	sp,sp,-64
  4d24e8:	afbc0010 	sw	gp,16(sp)
  4d24ec:	00801021 	move	v0,a0
  4d24f0:	00a01821 	move	v1,a1
  4d24f4:	27a40030 	addiu	a0,sp,48
  4d24f8:	27a50018 	addiu	a1,sp,24
  4d24fc:	afa20030 	sw	v0,48(sp)
  4d2500:	afa30034 	sw	v1,52(sp)
  4d2504:	afbf003c 	sw	ra,60(sp)
  4d2508:	afbc0038 	sw	gp,56(sp)
  4d250c:	8f99890c 	lw	t9,-30452(gp)
  4d2510:	00000000 	nop
  4d2514:	0320f809 	jalr	t9
  4d2518:	00000000 	nop
  4d251c:	8fbc0010 	lw	gp,16(sp)
  4d2520:	8fa80028 	lw	t0,40(sp)
  4d2524:	8fa9002c 	lw	t1,44(sp)
  4d2528:	24020000 	li	v0,0
  4d252c:	3c033fff 	lui	v1,0x3fff
  4d2530:	3463ffff 	ori	v1,v1,0xffff
  4d2534:	01231824 	and	v1,t1,v1
  4d2538:	00083880 	sll	a3,t0,0x2
  4d253c:	01021024 	and	v0,t0,v0
  4d2540:	00094f82 	srl	t1,t1,0x1e
  4d2544:	01274825 	or	t1,t1,a3
  4d2548:	00621025 	or	v0,v1,v0
  4d254c:	8fa40018 	lw	a0,24(sp)
  4d2550:	8fa5001c 	lw	a1,28(sp)
  4d2554:	8fa60020 	lw	a2,32(sp)
  4d2558:	10400002 	beqz	v0,4d2564 <dptofp+0x8c>
  4d255c:	01203821 	move	a3,t1
  4d2560:	34e70001 	ori	a3,a3,0x1
  4d2564:	8f998aa4 	lw	t9,-30044(gp)
  4d2568:	00000000 	nop
  4d256c:	0320f809 	jalr	t9
  4d2570:	00000000 	nop
  4d2574:	8fbc0010 	lw	gp,16(sp)
  4d2578:	8fbf003c 	lw	ra,60(sp)
  4d257c:	00000000 	nop
  4d2580:	03e00008 	jr	ra
  4d2584:	27bd0040 	addiu	sp,sp,64
	...

004d2590 <__pack_f>:
  4d2590:	3c1c0fb4 	lui	gp,0xfb4
  4d2594:	279ca3e0 	addiu	gp,gp,-23584
  4d2598:	0399e021 	addu	gp,gp,t9
  4d259c:	00802821 	move	a1,a0
  4d25a0:	8ca30000 	lw	v1,0(a1)
  4d25a4:	8ca4000c 	lw	a0,12(a1)
  4d25a8:	2c620002 	sltiu	v0,v1,2
  4d25ac:	8ca70004 	lw	a3,4(a1)
  4d25b0:	1040000e 	beqz	v0,4d25ec <__pack_f+0x5c>
  4d25b4:	00003021 	move	a2,zero
  4d25b8:	3c020010 	lui	v0,0x10
  4d25bc:	00822025 	or	a0,a0,v0
  4d25c0:	240600ff 	li	a2,255
  4d25c4:	3c03007f 	lui	v1,0x7f
  4d25c8:	30c200ff 	andi	v0,a2,0xff
  4d25cc:	3463ffff 	ori	v1,v1,0xffff
  4d25d0:	00831824 	and	v1,a0,v1
  4d25d4:	000215c0 	sll	v0,v0,0x17
  4d25d8:	00621825 	or	v1,v1,v0
  4d25dc:	000727c0 	sll	a0,a3,0x1f
  4d25e0:	00641825 	or	v1,v1,a0
  4d25e4:	03e00008 	jr	ra
  4d25e8:	00601021 	move	v0,v1
  4d25ec:	38620004 	xori	v0,v1,0x4
  4d25f0:	1040002b 	beqz	v0,4d26a0 <__pack_f+0x110>
  4d25f4:	00000000 	nop
  4d25f8:	38620002 	xori	v0,v1,0x2
  4d25fc:	14400003 	bnez	v0,4d260c <__pack_f+0x7c>
  4d2600:	00000000 	nop
  4d2604:	1000ffef 	b	4d25c4 <__pack_f+0x34>
  4d2608:	00002021 	move	a0,zero
  4d260c:	1080ffee 	beqz	a0,4d25c8 <__pack_f+0x38>
  4d2610:	3c03007f 	lui	v1,0x7f
  4d2614:	8ca50008 	lw	a1,8(a1)
  4d2618:	00000000 	nop
  4d261c:	28a2ff82 	slti	v0,a1,-126
  4d2620:	1040001d 	beqz	v0,4d2698 <__pack_f+0x108>
  4d2624:	28a20080 	slti	v0,a1,128
  4d2628:	2402ff82 	li	v0,-126
  4d262c:	00451023 	subu	v0,v0,a1
  4d2630:	24030001 	li	v1,1
  4d2634:	00431804 	sllv	v1,v1,v0
  4d2638:	2463ffff 	addiu	v1,v1,-1
  4d263c:	00831824 	and	v1,a0,v1
  4d2640:	0003182b 	sltu	v1,zero,v1
  4d2644:	00442006 	srlv	a0,a0,v0
  4d2648:	2842001a 	slti	v0,v0,26
  4d264c:	14400002 	bnez	v0,4d2658 <__pack_f+0xc8>
  4d2650:	00832025 	or	a0,a0,v1
  4d2654:	00002021 	move	a0,zero
  4d2658:	3083007f 	andi	v1,a0,0x7f
  4d265c:	24020040 	li	v0,64
  4d2660:	10620009 	beq	v1,v0,4d2688 <__pack_f+0xf8>
  4d2664:	30820080 	andi	v0,a0,0x80
  4d2668:	2484003f 	addiu	a0,a0,63
  4d266c:	3c023fff 	lui	v0,0x3fff
  4d2670:	3442ffff 	ori	v0,v0,0xffff
  4d2674:	0044102b 	sltu	v0,v0,a0
  4d2678:	10400013 	beqz	v0,4d26c8 <__pack_f+0x138>
  4d267c:	00000000 	nop
  4d2680:	10000011 	b	4d26c8 <__pack_f+0x138>
  4d2684:	24060001 	li	a2,1
  4d2688:	1040fff9 	beqz	v0,4d2670 <__pack_f+0xe0>
  4d268c:	3c023fff 	lui	v0,0x3fff
  4d2690:	1000fff7 	b	4d2670 <__pack_f+0xe0>
  4d2694:	24840040 	addiu	a0,a0,64
  4d2698:	14400004 	bnez	v0,4d26ac <__pack_f+0x11c>
  4d269c:	00000000 	nop
  4d26a0:	240600ff 	li	a2,255
  4d26a4:	1000ffc7 	b	4d25c4 <__pack_f+0x34>
  4d26a8:	00002021 	move	a0,zero
  4d26ac:	3083007f 	andi	v1,a0,0x7f
  4d26b0:	24020040 	li	v0,64
  4d26b4:	10620009 	beq	v1,v0,4d26dc <__pack_f+0x14c>
  4d26b8:	24a6007f 	addiu	a2,a1,127
  4d26bc:	2484003f 	addiu	a0,a0,63
  4d26c0:	04800003 	bltz	a0,4d26d0 <__pack_f+0x140>
  4d26c4:	00000000 	nop
  4d26c8:	1000ffbe 	b	4d25c4 <__pack_f+0x34>
  4d26cc:	000421c2 	srl	a0,a0,0x7
  4d26d0:	00042042 	srl	a0,a0,0x1
  4d26d4:	1000fffc 	b	4d26c8 <__pack_f+0x138>
  4d26d8:	24c60001 	addiu	a2,a2,1
  4d26dc:	30820080 	andi	v0,a0,0x80
  4d26e0:	1040fff7 	beqz	v0,4d26c0 <__pack_f+0x130>
  4d26e4:	00000000 	nop
  4d26e8:	1000fff5 	b	4d26c0 <__pack_f+0x130>
  4d26ec:	24840040 	addiu	a0,a0,64

004d26f0 <__unpack_f>:
  4d26f0:	3c1c0fb4 	lui	gp,0xfb4
  4d26f4:	279ca280 	addiu	gp,gp,-23936
  4d26f8:	0399e021 	addu	gp,gp,t9
  4d26fc:	8c830000 	lw	v1,0(a0)
  4d2700:	3c02007f 	lui	v0,0x7f
  4d2704:	000325c2 	srl	a0,v1,0x17
  4d2708:	00a03021 	move	a2,a1
  4d270c:	3442ffff 	ori	v0,v0,0xffff
  4d2710:	00032fc2 	srl	a1,v1,0x1f
  4d2714:	308400ff 	andi	a0,a0,0xff
  4d2718:	acc50004 	sw	a1,4(a2)
  4d271c:	10800018 	beqz	a0,4d2780 <__unpack_f+0x90>
  4d2720:	00622824 	and	a1,v1,v0
  4d2724:	240200ff 	li	v0,255
  4d2728:	10820009 	beq	a0,v0,4d2750 <__unpack_f+0x60>
  4d272c:	000511c0 	sll	v0,a1,0x7
  4d2730:	3c034000 	lui	v1,0x4000
  4d2734:	00431025 	or	v0,v0,v1
  4d2738:	2484ff81 	addiu	a0,a0,-127
  4d273c:	acc2000c 	sw	v0,12(a2)
  4d2740:	24020003 	li	v0,3
  4d2744:	acc40008 	sw	a0,8(a2)
  4d2748:	03e00008 	jr	ra
  4d274c:	acc20000 	sw	v0,0(a2)
  4d2750:	10a00008 	beqz	a1,4d2774 <__unpack_f+0x84>
  4d2754:	3c020010 	lui	v0,0x10
  4d2758:	00a21024 	and	v0,a1,v0
  4d275c:	10400003 	beqz	v0,4d276c <__unpack_f+0x7c>
  4d2760:	24020001 	li	v0,1
  4d2764:	10000017 	b	4d27c4 <__unpack_f+0xd4>
  4d2768:	acc20000 	sw	v0,0(a2)
  4d276c:	10000015 	b	4d27c4 <__unpack_f+0xd4>
  4d2770:	acc00000 	sw	zero,0(a2)
  4d2774:	24020004 	li	v0,4
  4d2778:	03e00008 	jr	ra
  4d277c:	acc20000 	sw	v0,0(a2)
  4d2780:	10a00012 	beqz	a1,4d27cc <__unpack_f+0xdc>
  4d2784:	3c023fff 	lui	v0,0x3fff
  4d2788:	000529c0 	sll	a1,a1,0x7
  4d278c:	3442ffff 	ori	v0,v0,0xffff
  4d2790:	2403ff82 	li	v1,-126
  4d2794:	24040003 	li	a0,3
  4d2798:	0045102b 	sltu	v0,v0,a1
  4d279c:	acc30008 	sw	v1,8(a2)
  4d27a0:	14400008 	bnez	v0,4d27c4 <__unpack_f+0xd4>
  4d27a4:	acc40000 	sw	a0,0(a2)
  4d27a8:	3c043fff 	lui	a0,0x3fff
  4d27ac:	3484ffff 	ori	a0,a0,0xffff
  4d27b0:	00052840 	sll	a1,a1,0x1
  4d27b4:	0085102b 	sltu	v0,a0,a1
  4d27b8:	1040fffd 	beqz	v0,4d27b0 <__unpack_f+0xc0>
  4d27bc:	2463ffff 	addiu	v1,v1,-1
  4d27c0:	acc30008 	sw	v1,8(a2)
  4d27c4:	03e00008 	jr	ra
  4d27c8:	acc5000c 	sw	a1,12(a2)
  4d27cc:	24020002 	li	v0,2
  4d27d0:	03e00008 	jr	ra
  4d27d4:	acc20000 	sw	v0,0(a2)

004d27d8 <_fpadd_parts>:
  4d27d8:	3c1c0fb4 	lui	gp,0xfb4
  4d27dc:	279ca198 	addiu	gp,gp,-24168
  4d27e0:	0399e021 	addu	gp,gp,t9
  4d27e4:	00805821 	move	t3,a0
  4d27e8:	8d670000 	lw	a3,0(t3)
  4d27ec:	00000000 	nop
  4d27f0:	2ce30002 	sltiu	v1,a3,2
  4d27f4:	14600012 	bnez	v1,4d2840 <_fpadd_parts+0x68>
  4d27f8:	01601021 	move	v0,t3
  4d27fc:	8ca40000 	lw	a0,0(a1)
  4d2800:	00000000 	nop
  4d2804:	2c830002 	sltiu	v1,a0,2
  4d2808:	1460000d 	bnez	v1,4d2840 <_fpadd_parts+0x68>
  4d280c:	00a01021 	move	v0,a1
  4d2810:	38e20004 	xori	v0,a3,0x4
  4d2814:	1440000c 	bnez	v0,4d2848 <_fpadd_parts+0x70>
  4d2818:	38830004 	xori	v1,a0,0x4
  4d281c:	38820004 	xori	v0,a0,0x4
  4d2820:	14400021 	bnez	v0,4d28a8 <_fpadd_parts+0xd0>
  4d2824:	00000000 	nop
  4d2828:	8ca30004 	lw	v1,4(a1)
  4d282c:	8d620004 	lw	v0,4(t3)
  4d2830:	00000000 	nop
  4d2834:	1043001c 	beq	v0,v1,4d28a8 <_fpadd_parts+0xd0>
  4d2838:	00000000 	nop
  4d283c:	8f82855c 	lw	v0,-31396(gp)
  4d2840:	03e00008 	jr	ra
  4d2844:	00000000 	nop
  4d2848:	1060fffd 	beqz	v1,4d2840 <_fpadd_parts+0x68>
  4d284c:	00a01021 	move	v0,a1
  4d2850:	38820002 	xori	v0,a0,0x2
  4d2854:	14400016 	bnez	v0,4d28b0 <_fpadd_parts+0xd8>
  4d2858:	38e30002 	xori	v1,a3,0x2
  4d285c:	38e20002 	xori	v0,a3,0x2
  4d2860:	14400011 	bnez	v0,4d28a8 <_fpadd_parts+0xd0>
  4d2864:	00000000 	nop
  4d2868:	acc70000 	sw	a3,0(a2)
  4d286c:	8d640004 	lw	a0,4(t3)
  4d2870:	00c01021 	move	v0,a2
  4d2874:	acc40004 	sw	a0,4(a2)
  4d2878:	8d630008 	lw	v1,8(t3)
  4d287c:	00000000 	nop
  4d2880:	acc30008 	sw	v1,8(a2)
  4d2884:	8d64000c 	lw	a0,12(t3)
  4d2888:	00000000 	nop
  4d288c:	acc4000c 	sw	a0,12(a2)
  4d2890:	8d630004 	lw	v1,4(t3)
  4d2894:	8ca40004 	lw	a0,4(a1)
  4d2898:	00000000 	nop
  4d289c:	00641824 	and	v1,v1,a0
  4d28a0:	03e00008 	jr	ra
  4d28a4:	acc30004 	sw	v1,4(a2)
  4d28a8:	03e00008 	jr	ra
  4d28ac:	01601021 	move	v0,t3
  4d28b0:	1060ffe3 	beqz	v1,4d2840 <_fpadd_parts+0x68>
  4d28b4:	00a01021 	move	v0,a1
  4d28b8:	8d680008 	lw	t0,8(t3)
  4d28bc:	8ca70008 	lw	a3,8(a1)
  4d28c0:	8d6a000c 	lw	t2,12(t3)
  4d28c4:	01071023 	subu	v0,t0,a3
  4d28c8:	8ca9000c 	lw	t1,12(a1)
  4d28cc:	04400055 	bltz	v0,4d2a24 <_fpadd_parts+0x24c>
  4d28d0:	00000000 	nop
  4d28d4:	28420020 	slti	v0,v0,32
  4d28d8:	1040004b 	beqz	v0,4d2a08 <_fpadd_parts+0x230>
  4d28dc:	00e8102a 	slt	v0,a3,t0
  4d28e0:	10400009 	beqz	v0,4d2908 <_fpadd_parts+0x130>
  4d28e4:	0107102a 	slt	v0,t0,a3
  4d28e8:	01073823 	subu	a3,t0,a3
  4d28ec:	00091842 	srl	v1,t1,0x1
  4d28f0:	31220001 	andi	v0,t1,0x1
  4d28f4:	24e7ffff 	addiu	a3,a3,-1
  4d28f8:	14e0fffc 	bnez	a3,4d28ec <_fpadd_parts+0x114>
  4d28fc:	00434825 	or	t1,v0,v1
  4d2900:	01003821 	move	a3,t0
  4d2904:	0107102a 	slt	v0,t0,a3
  4d2908:	10400007 	beqz	v0,4d2928 <_fpadd_parts+0x150>
  4d290c:	00000000 	nop
  4d2910:	25080001 	addiu	t0,t0,1
  4d2914:	000a1042 	srl	v0,t2,0x1
  4d2918:	31430001 	andi	v1,t2,0x1
  4d291c:	0107202a 	slt	a0,t0,a3
  4d2920:	1480fffb 	bnez	a0,4d2910 <_fpadd_parts+0x138>
  4d2924:	00625025 	or	t2,v1,v0
  4d2928:	8d640004 	lw	a0,4(t3)
  4d292c:	8ca20004 	lw	v0,4(a1)
  4d2930:	00000000 	nop
  4d2934:	1082002f 	beq	a0,v0,4d29f4 <_fpadd_parts+0x21c>
  4d2938:	00000000 	nop
  4d293c:	1080002b 	beqz	a0,4d29ec <_fpadd_parts+0x214>
  4d2940:	012a1823 	subu	v1,t1,t2
  4d2944:	04600024 	bltz	v1,4d29d8 <_fpadd_parts+0x200>
  4d2948:	24020001 	li	v0,1
  4d294c:	acc80008 	sw	t0,8(a2)
  4d2950:	acc3000c 	sw	v1,12(a2)
  4d2954:	acc00004 	sw	zero,4(a2)
  4d2958:	8cc5000c 	lw	a1,12(a2)
  4d295c:	3c023fff 	lui	v0,0x3fff
  4d2960:	24a3ffff 	addiu	v1,a1,-1
  4d2964:	3442fffe 	ori	v0,v0,0xfffe
  4d2968:	0043102b 	sltu	v0,v0,v1
  4d296c:	1440000b 	bnez	v0,4d299c <_fpadd_parts+0x1c4>
  4d2970:	00000000 	nop
  4d2974:	00052840 	sll	a1,a1,0x1
  4d2978:	8cc30008 	lw	v1,8(a2)
  4d297c:	3c023fff 	lui	v0,0x3fff
  4d2980:	24a4ffff 	addiu	a0,a1,-1
  4d2984:	3442fffe 	ori	v0,v0,0xfffe
  4d2988:	2463ffff 	addiu	v1,v1,-1
  4d298c:	0044102b 	sltu	v0,v0,a0
  4d2990:	acc30008 	sw	v1,8(a2)
  4d2994:	1040fff7 	beqz	v0,4d2974 <_fpadd_parts+0x19c>
  4d2998:	acc5000c 	sw	a1,12(a2)
  4d299c:	8cc3000c 	lw	v1,12(a2)
  4d29a0:	24020003 	li	v0,3
  4d29a4:	04600004 	bltz	v1,4d29b8 <_fpadd_parts+0x1e0>
  4d29a8:	acc20000 	sw	v0,0(a2)
  4d29ac:	00c01021 	move	v0,a2
  4d29b0:	03e00008 	jr	ra
  4d29b4:	00000000 	nop
  4d29b8:	8cc20008 	lw	v0,8(a2)
  4d29bc:	00032042 	srl	a0,v1,0x1
  4d29c0:	30630001 	andi	v1,v1,0x1
  4d29c4:	00641825 	or	v1,v1,a0
  4d29c8:	24420001 	addiu	v0,v0,1
  4d29cc:	acc3000c 	sw	v1,12(a2)
  4d29d0:	1000fff6 	b	4d29ac <_fpadd_parts+0x1d4>
  4d29d4:	acc20008 	sw	v0,8(a2)
  4d29d8:	00031823 	negu	v1,v1
  4d29dc:	acc20004 	sw	v0,4(a2)
  4d29e0:	acc80008 	sw	t0,8(a2)
  4d29e4:	1000ffdc 	b	4d2958 <_fpadd_parts+0x180>
  4d29e8:	acc3000c 	sw	v1,12(a2)
  4d29ec:	1000ffd5 	b	4d2944 <_fpadd_parts+0x16c>
  4d29f0:	01491823 	subu	v1,t2,t1
  4d29f4:	01491021 	addu	v0,t2,t1
  4d29f8:	acc40004 	sw	a0,4(a2)
  4d29fc:	acc80008 	sw	t0,8(a2)
  4d2a00:	1000ffe6 	b	4d299c <_fpadd_parts+0x1c4>
  4d2a04:	acc2000c 	sw	v0,12(a2)
  4d2a08:	10400003 	beqz	v0,4d2a18 <_fpadd_parts+0x240>
  4d2a0c:	00000000 	nop
  4d2a10:	1000ffc5 	b	4d2928 <_fpadd_parts+0x150>
  4d2a14:	00004821 	move	t1,zero
  4d2a18:	00e04021 	move	t0,a3
  4d2a1c:	1000ffc2 	b	4d2928 <_fpadd_parts+0x150>
  4d2a20:	00005021 	move	t2,zero
  4d2a24:	1000ffab 	b	4d28d4 <_fpadd_parts+0xfc>
  4d2a28:	00021023 	negu	v0,v0

004d2a2c <fpadd>:
  4d2a2c:	3c1c0fb4 	lui	gp,0xfb4
  4d2a30:	279c9f44 	addiu	gp,gp,-24764
  4d2a34:	0399e021 	addu	gp,gp,t9
  4d2a38:	27bdffa0 	addiu	sp,sp,-96
  4d2a3c:	afbc0010 	sw	gp,16(sp)
  4d2a40:	00a01821 	move	v1,a1
  4d2a44:	00801021 	move	v0,a0
  4d2a48:	27a50018 	addiu	a1,sp,24
  4d2a4c:	27a40048 	addiu	a0,sp,72
  4d2a50:	afbf0058 	sw	ra,88(sp)
  4d2a54:	afb00050 	sw	s0,80(sp)
  4d2a58:	afbc0054 	sw	gp,84(sp)
  4d2a5c:	afa20048 	sw	v0,72(sp)
  4d2a60:	afa3004c 	sw	v1,76(sp)
  4d2a64:	8f998800 	lw	t9,-30720(gp)
  4d2a68:	00000000 	nop
  4d2a6c:	0320f809 	jalr	t9
  4d2a70:	00000000 	nop
  4d2a74:	8fbc0010 	lw	gp,16(sp)
  4d2a78:	27b00028 	addiu	s0,sp,40
  4d2a7c:	27a4004c 	addiu	a0,sp,76
  4d2a80:	02002821 	move	a1,s0
  4d2a84:	8f998800 	lw	t9,-30720(gp)
  4d2a88:	00000000 	nop
  4d2a8c:	0320f809 	jalr	t9
  4d2a90:	00000000 	nop
  4d2a94:	8fbc0010 	lw	gp,16(sp)
  4d2a98:	27a40018 	addiu	a0,sp,24
  4d2a9c:	02002821 	move	a1,s0
  4d2aa0:	27a60038 	addiu	a2,sp,56
  4d2aa4:	8f998020 	lw	t9,-32736(gp)
  4d2aa8:	00000000 	nop
  4d2aac:	273927d8 	addiu	t9,t9,10200
  4d2ab0:	00000000 	nop
  4d2ab4:	0320f809 	jalr	t9
  4d2ab8:	00000000 	nop
  4d2abc:	8fbc0010 	lw	gp,16(sp)
  4d2ac0:	00402021 	move	a0,v0
  4d2ac4:	8f99872c 	lw	t9,-30932(gp)
  4d2ac8:	00000000 	nop
  4d2acc:	0320f809 	jalr	t9
  4d2ad0:	00000000 	nop
  4d2ad4:	8fbc0010 	lw	gp,16(sp)
  4d2ad8:	8fbf0058 	lw	ra,88(sp)
  4d2adc:	8fb00050 	lw	s0,80(sp)
  4d2ae0:	03e00008 	jr	ra
  4d2ae4:	27bd0060 	addiu	sp,sp,96

004d2ae8 <fpsub>:
  4d2ae8:	3c1c0fb4 	lui	gp,0xfb4
  4d2aec:	279c9e88 	addiu	gp,gp,-24952
  4d2af0:	0399e021 	addu	gp,gp,t9
  4d2af4:	27bdffa0 	addiu	sp,sp,-96
  4d2af8:	afbc0010 	sw	gp,16(sp)
  4d2afc:	00a01821 	move	v1,a1
  4d2b00:	00801021 	move	v0,a0
  4d2b04:	27a50018 	addiu	a1,sp,24
  4d2b08:	27a40048 	addiu	a0,sp,72
  4d2b0c:	afbf0058 	sw	ra,88(sp)
  4d2b10:	afb00050 	sw	s0,80(sp)
  4d2b14:	afa20048 	sw	v0,72(sp)
  4d2b18:	afbc0054 	sw	gp,84(sp)
  4d2b1c:	afa3004c 	sw	v1,76(sp)
  4d2b20:	8f998800 	lw	t9,-30720(gp)
  4d2b24:	00000000 	nop
  4d2b28:	0320f809 	jalr	t9
  4d2b2c:	00000000 	nop
  4d2b30:	8fbc0010 	lw	gp,16(sp)
  4d2b34:	27b00028 	addiu	s0,sp,40
  4d2b38:	27a4004c 	addiu	a0,sp,76
  4d2b3c:	02002821 	move	a1,s0
  4d2b40:	8f998800 	lw	t9,-30720(gp)
  4d2b44:	00000000 	nop
  4d2b48:	0320f809 	jalr	t9
  4d2b4c:	00000000 	nop
  4d2b50:	8fbc0010 	lw	gp,16(sp)
  4d2b54:	8fa2002c 	lw	v0,44(sp)
  4d2b58:	02002821 	move	a1,s0
  4d2b5c:	27a40018 	addiu	a0,sp,24
  4d2b60:	27a60038 	addiu	a2,sp,56
  4d2b64:	38420001 	xori	v0,v0,0x1
  4d2b68:	afa2002c 	sw	v0,44(sp)
  4d2b6c:	8f998020 	lw	t9,-32736(gp)
  4d2b70:	00000000 	nop
  4d2b74:	273927d8 	addiu	t9,t9,10200
  4d2b78:	00000000 	nop
  4d2b7c:	0320f809 	jalr	t9
  4d2b80:	00000000 	nop
  4d2b84:	8fbc0010 	lw	gp,16(sp)
  4d2b88:	00402021 	move	a0,v0
  4d2b8c:	8f99872c 	lw	t9,-30932(gp)
  4d2b90:	00000000 	nop
  4d2b94:	0320f809 	jalr	t9
  4d2b98:	00000000 	nop
  4d2b9c:	8fbc0010 	lw	gp,16(sp)
  4d2ba0:	8fbf0058 	lw	ra,88(sp)
  4d2ba4:	8fb00050 	lw	s0,80(sp)
  4d2ba8:	03e00008 	jr	ra
  4d2bac:	27bd0060 	addiu	sp,sp,96

004d2bb0 <fpmul>:
  4d2bb0:	3c1c0fb4 	lui	gp,0xfb4
  4d2bb4:	279c9dc0 	addiu	gp,gp,-25152
  4d2bb8:	0399e021 	addu	gp,gp,t9
  4d2bbc:	27bdffa0 	addiu	sp,sp,-96
  4d2bc0:	afbc0010 	sw	gp,16(sp)
  4d2bc4:	00801021 	move	v0,a0
  4d2bc8:	00a01821 	move	v1,a1
  4d2bcc:	27a40048 	addiu	a0,sp,72
  4d2bd0:	27a50018 	addiu	a1,sp,24
  4d2bd4:	afb00050 	sw	s0,80(sp)
  4d2bd8:	afa20048 	sw	v0,72(sp)
  4d2bdc:	afbf0058 	sw	ra,88(sp)
  4d2be0:	afbc0054 	sw	gp,84(sp)
  4d2be4:	afa3004c 	sw	v1,76(sp)
  4d2be8:	8f998800 	lw	t9,-30720(gp)
  4d2bec:	00000000 	nop
  4d2bf0:	0320f809 	jalr	t9
  4d2bf4:	00000000 	nop
  4d2bf8:	8fbc0010 	lw	gp,16(sp)
  4d2bfc:	27b00028 	addiu	s0,sp,40
  4d2c00:	27a4004c 	addiu	a0,sp,76
  4d2c04:	02002821 	move	a1,s0
  4d2c08:	8f998800 	lw	t9,-30720(gp)
  4d2c0c:	00000000 	nop
  4d2c10:	0320f809 	jalr	t9
  4d2c14:	00000000 	nop
  4d2c18:	8fbc0010 	lw	gp,16(sp)
  4d2c1c:	8fa40018 	lw	a0,24(sp)
  4d2c20:	00000000 	nop
  4d2c24:	2c820002 	sltiu	v0,a0,2
  4d2c28:	10400010 	beqz	v0,4d2c6c <fpmul+0xbc>
  4d2c2c:	27a50018 	addiu	a1,sp,24
  4d2c30:	8fa2001c 	lw	v0,28(sp)
  4d2c34:	8fa3002c 	lw	v1,44(sp)
  4d2c38:	00a02021 	move	a0,a1
  4d2c3c:	00431026 	xor	v0,v0,v1
  4d2c40:	0002102b 	sltu	v0,zero,v0
  4d2c44:	afa2001c 	sw	v0,28(sp)
  4d2c48:	8f99872c 	lw	t9,-30932(gp)
  4d2c4c:	00000000 	nop
  4d2c50:	0320f809 	jalr	t9
  4d2c54:	00000000 	nop
  4d2c58:	8fbc0010 	lw	gp,16(sp)
  4d2c5c:	8fbf0058 	lw	ra,88(sp)
  4d2c60:	8fb00050 	lw	s0,80(sp)
  4d2c64:	03e00008 	jr	ra
  4d2c68:	27bd0060 	addiu	sp,sp,96
  4d2c6c:	8fa30028 	lw	v1,40(sp)
  4d2c70:	00000000 	nop
  4d2c74:	2c620002 	sltiu	v0,v1,2
  4d2c78:	14400014 	bnez	v0,4d2ccc <fpmul+0x11c>
  4d2c7c:	38820004 	xori	v0,a0,0x4
  4d2c80:	14400007 	bnez	v0,4d2ca0 <fpmul+0xf0>
  4d2c84:	38620004 	xori	v0,v1,0x4
  4d2c88:	38620002 	xori	v0,v1,0x2
  4d2c8c:	8f84855c 	lw	a0,-31396(gp)
  4d2c90:	1040ffed 	beqz	v0,4d2c48 <fpmul+0x98>
  4d2c94:	00000000 	nop
  4d2c98:	1000ffe5 	b	4d2c30 <fpmul+0x80>
  4d2c9c:	00000000 	nop
  4d2ca0:	14400006 	bnez	v0,4d2cbc <fpmul+0x10c>
  4d2ca4:	38820002 	xori	v0,a0,0x2
  4d2ca8:	8f84855c 	lw	a0,-31396(gp)
  4d2cac:	1040ffe6 	beqz	v0,4d2c48 <fpmul+0x98>
  4d2cb0:	00000000 	nop
  4d2cb4:	10000005 	b	4d2ccc <fpmul+0x11c>
  4d2cb8:	00000000 	nop
  4d2cbc:	1040ffdc 	beqz	v0,4d2c30 <fpmul+0x80>
  4d2cc0:	38620002 	xori	v0,v1,0x2
  4d2cc4:	14400008 	bnez	v0,4d2ce8 <fpmul+0x138>
  4d2cc8:	00000000 	nop
  4d2ccc:	8fa3002c 	lw	v1,44(sp)
  4d2cd0:	8fa2001c 	lw	v0,28(sp)
  4d2cd4:	02002021 	move	a0,s0
  4d2cd8:	00431026 	xor	v0,v0,v1
  4d2cdc:	0002102b 	sltu	v0,zero,v0
  4d2ce0:	1000ffd9 	b	4d2c48 <fpmul+0x98>
  4d2ce4:	afa2002c 	sw	v0,44(sp)
  4d2ce8:	8fa40024 	lw	a0,36(sp)
  4d2cec:	8fa20034 	lw	v0,52(sp)
  4d2cf0:	8fa30030 	lw	v1,48(sp)
  4d2cf4:	00820019 	multu	a0,v0
  4d2cf8:	8fa60020 	lw	a2,32(sp)
  4d2cfc:	8fa2001c 	lw	v0,28(sp)
  4d2d00:	00c33021 	addu	a2,a2,v1
  4d2d04:	8fa3002c 	lw	v1,44(sp)
  4d2d08:	24c80002 	addiu	t0,a2,2
  4d2d0c:	00431026 	xor	v0,v0,v1
  4d2d10:	0002102b 	sltu	v0,zero,v0
  4d2d14:	afa2003c 	sw	v0,60(sp)
  4d2d18:	afa80040 	sw	t0,64(sp)
  4d2d1c:	00002010 	mfhi	a0
  4d2d20:	00002812 	mflo	a1
  4d2d24:	00041802 	srl	v1,a0,0x0
  4d2d28:	00603821 	move	a3,v1
  4d2d2c:	04e00023 	bltz	a3,4d2dbc <fpmul+0x20c>
  4d2d30:	00a02021 	move	a0,a1
  4d2d34:	3c023fff 	lui	v0,0x3fff
  4d2d38:	3442ffff 	ori	v0,v0,0xffff
  4d2d3c:	0047102b 	sltu	v0,v0,a3
  4d2d40:	1440000f 	bnez	v0,4d2d80 <fpmul+0x1d0>
  4d2d44:	00000000 	nop
  4d2d48:	3c053fff 	lui	a1,0x3fff
  4d2d4c:	8fa30040 	lw	v1,64(sp)
  4d2d50:	3c068000 	lui	a2,0x8000
  4d2d54:	34a5ffff 	ori	a1,a1,0xffff
  4d2d58:	00861024 	and	v0,a0,a2
  4d2d5c:	00073840 	sll	a3,a3,0x1
  4d2d60:	00042040 	sll	a0,a0,0x1
  4d2d64:	10400002 	beqz	v0,4d2d70 <fpmul+0x1c0>
  4d2d68:	2463ffff 	addiu	v1,v1,-1
  4d2d6c:	34e70001 	ori	a3,a3,0x1
  4d2d70:	00a7102b 	sltu	v0,a1,a3
  4d2d74:	1040fff9 	beqz	v0,4d2d5c <fpmul+0x1ac>
  4d2d78:	00861024 	and	v0,a0,a2
  4d2d7c:	afa30040 	sw	v1,64(sp)
  4d2d80:	30e3007f 	andi	v1,a3,0x7f
  4d2d84:	24020040 	li	v0,64
  4d2d88:	10620006 	beq	v1,v0,4d2da4 <fpmul+0x1f4>
  4d2d8c:	30e20080 	andi	v0,a3,0x80
  4d2d90:	24020003 	li	v0,3
  4d2d94:	afa70044 	sw	a3,68(sp)
  4d2d98:	afa20038 	sw	v0,56(sp)
  4d2d9c:	1000ffaa 	b	4d2c48 <fpmul+0x98>
  4d2da0:	27a40038 	addiu	a0,sp,56
  4d2da4:	14400003 	bnez	v0,4d2db4 <fpmul+0x204>
  4d2da8:	00000000 	nop
  4d2dac:	1080fff9 	beqz	a0,4d2d94 <fpmul+0x1e4>
  4d2db0:	24020003 	li	v0,3
  4d2db4:	1000fff6 	b	4d2d90 <fpmul+0x1e0>
  4d2db8:	24e70040 	addiu	a3,a3,64
  4d2dbc:	01003021 	move	a2,t0
  4d2dc0:	3c038000 	lui	v1,0x8000
  4d2dc4:	30e20001 	andi	v0,a3,0x1
  4d2dc8:	24c60001 	addiu	a2,a2,1
  4d2dcc:	10400003 	beqz	v0,4d2ddc <fpmul+0x22c>
  4d2dd0:	00073842 	srl	a3,a3,0x1
  4d2dd4:	00042042 	srl	a0,a0,0x1
  4d2dd8:	00832025 	or	a0,a0,v1
  4d2ddc:	04e0fffa 	bltz	a3,4d2dc8 <fpmul+0x218>
  4d2de0:	30e20001 	andi	v0,a3,0x1
  4d2de4:	1000ffd3 	b	4d2d34 <fpmul+0x184>
  4d2de8:	afa60040 	sw	a2,64(sp)

004d2dec <fpdiv>:
  4d2dec:	3c1c0fb4 	lui	gp,0xfb4
  4d2df0:	279c9b84 	addiu	gp,gp,-25724
  4d2df4:	0399e021 	addu	gp,gp,t9
  4d2df8:	27bdffb0 	addiu	sp,sp,-80
  4d2dfc:	afbc0010 	sw	gp,16(sp)
  4d2e00:	00801021 	move	v0,a0
  4d2e04:	00a01821 	move	v1,a1
  4d2e08:	27a40038 	addiu	a0,sp,56
  4d2e0c:	27a50018 	addiu	a1,sp,24
  4d2e10:	afb00040 	sw	s0,64(sp)
  4d2e14:	afa20038 	sw	v0,56(sp)
  4d2e18:	afbf0048 	sw	ra,72(sp)
  4d2e1c:	afbc0044 	sw	gp,68(sp)
  4d2e20:	afa3003c 	sw	v1,60(sp)
  4d2e24:	8f998800 	lw	t9,-30720(gp)
  4d2e28:	00000000 	nop
  4d2e2c:	0320f809 	jalr	t9
  4d2e30:	00000000 	nop
  4d2e34:	8fbc0010 	lw	gp,16(sp)
  4d2e38:	27b00028 	addiu	s0,sp,40
  4d2e3c:	27a4003c 	addiu	a0,sp,60
  4d2e40:	02002821 	move	a1,s0
  4d2e44:	8f998800 	lw	t9,-30720(gp)
  4d2e48:	00000000 	nop
  4d2e4c:	0320f809 	jalr	t9
  4d2e50:	00000000 	nop
  4d2e54:	8fbc0010 	lw	gp,16(sp)
  4d2e58:	8fa60018 	lw	a2,24(sp)
  4d2e5c:	27a80018 	addiu	t0,sp,24
  4d2e60:	2cc20002 	sltiu	v0,a2,2
  4d2e64:	14400013 	bnez	v0,4d2eb4 <fpdiv+0xc8>
  4d2e68:	01002021 	move	a0,t0
  4d2e6c:	8fa50028 	lw	a1,40(sp)
  4d2e70:	00000000 	nop
  4d2e74:	2ca20002 	sltiu	v0,a1,2
  4d2e78:	1440000e 	bnez	v0,4d2eb4 <fpdiv+0xc8>
  4d2e7c:	02002021 	move	a0,s0
  4d2e80:	8fa3001c 	lw	v1,28(sp)
  4d2e84:	8fa4002c 	lw	a0,44(sp)
  4d2e88:	38c20004 	xori	v0,a2,0x4
  4d2e8c:	00641826 	xor	v1,v1,a0
  4d2e90:	10400004 	beqz	v0,4d2ea4 <fpdiv+0xb8>
  4d2e94:	afa3001c 	sw	v1,28(sp)
  4d2e98:	38c20002 	xori	v0,a2,0x2
  4d2e9c:	1440000e 	bnez	v0,4d2ed8 <fpdiv+0xec>
  4d2ea0:	38a20004 	xori	v0,a1,0x4
  4d2ea4:	8f84855c 	lw	a0,-31396(gp)
  4d2ea8:	10c50002 	beq	a2,a1,4d2eb4 <fpdiv+0xc8>
  4d2eac:	00000000 	nop
  4d2eb0:	01002021 	move	a0,t0
  4d2eb4:	8f99872c 	lw	t9,-30932(gp)
  4d2eb8:	00000000 	nop
  4d2ebc:	0320f809 	jalr	t9
  4d2ec0:	00000000 	nop
  4d2ec4:	8fbc0010 	lw	gp,16(sp)
  4d2ec8:	8fbf0048 	lw	ra,72(sp)
  4d2ecc:	8fb00040 	lw	s0,64(sp)
  4d2ed0:	03e00008 	jr	ra
  4d2ed4:	27bd0050 	addiu	sp,sp,80
  4d2ed8:	14400005 	bnez	v0,4d2ef0 <fpdiv+0x104>
  4d2edc:	38a20002 	xori	v0,a1,0x2
  4d2ee0:	01002021 	move	a0,t0
  4d2ee4:	afa00024 	sw	zero,36(sp)
  4d2ee8:	1000fff2 	b	4d2eb4 <fpdiv+0xc8>
  4d2eec:	afa00020 	sw	zero,32(sp)
  4d2ef0:	14400004 	bnez	v0,4d2f04 <fpdiv+0x118>
  4d2ef4:	24020004 	li	v0,4
  4d2ef8:	01002021 	move	a0,t0
  4d2efc:	1000ffed 	b	4d2eb4 <fpdiv+0xc8>
  4d2f00:	afa20018 	sw	v0,24(sp)
  4d2f04:	8fa30020 	lw	v1,32(sp)
  4d2f08:	8fa40024 	lw	a0,36(sp)
  4d2f0c:	8fa70034 	lw	a3,52(sp)
  4d2f10:	8fa20030 	lw	v0,48(sp)
  4d2f14:	0087282b 	sltu	a1,a0,a3
  4d2f18:	00621023 	subu	v0,v1,v0
  4d2f1c:	10a00005 	beqz	a1,4d2f34 <fpdiv+0x148>
  4d2f20:	afa20020 	sw	v0,32(sp)
  4d2f24:	2442ffff 	addiu	v0,v0,-1
  4d2f28:	00042040 	sll	a0,a0,0x1
  4d2f2c:	afa20020 	sw	v0,32(sp)
  4d2f30:	0087282b 	sltu	a1,a0,a3
  4d2f34:	3c024000 	lui	v0,0x4000
  4d2f38:	00003021 	move	a2,zero
  4d2f3c:	10a00012 	beqz	a1,4d2f88 <fpdiv+0x19c>
  4d2f40:	00000000 	nop
  4d2f44:	00021042 	srl	v0,v0,0x1
  4d2f48:	10400003 	beqz	v0,4d2f58 <fpdiv+0x16c>
  4d2f4c:	00042040 	sll	a0,a0,0x1
  4d2f50:	1000fffa 	b	4d2f3c <fpdiv+0x150>
  4d2f54:	0087282b 	sltu	a1,a0,a3
  4d2f58:	30c3007f 	andi	v1,a2,0x7f
  4d2f5c:	24020040 	li	v0,64
  4d2f60:	10620003 	beq	v1,v0,4d2f70 <fpdiv+0x184>
  4d2f64:	30c20080 	andi	v0,a2,0x80
  4d2f68:	1000ffd1 	b	4d2eb0 <fpdiv+0xc4>
  4d2f6c:	ad06000c 	sw	a2,12(t0)
  4d2f70:	14400003 	bnez	v0,4d2f80 <fpdiv+0x194>
  4d2f74:	00000000 	nop
  4d2f78:	1080fffb 	beqz	a0,4d2f68 <fpdiv+0x17c>
  4d2f7c:	00000000 	nop
  4d2f80:	1000fff9 	b	4d2f68 <fpdiv+0x17c>
  4d2f84:	24c60040 	addiu	a2,a2,64
  4d2f88:	00c23025 	or	a2,a2,v0
  4d2f8c:	1000ffed 	b	4d2f44 <fpdiv+0x158>
  4d2f90:	00872023 	subu	a0,a0,a3

004d2f94 <__fpcmp_parts_f>:
  4d2f94:	3c1c0fb4 	lui	gp,0xfb4
  4d2f98:	279c99dc 	addiu	gp,gp,-26148
  4d2f9c:	0399e021 	addu	gp,gp,t9
  4d2fa0:	8c860000 	lw	a2,0(a0)
  4d2fa4:	00000000 	nop
  4d2fa8:	2cc20002 	sltiu	v0,a2,2
  4d2fac:	14400033 	bnez	v0,4d307c <__fpcmp_parts_f+0xe8>
  4d2fb0:	00000000 	nop
  4d2fb4:	8ca30000 	lw	v1,0(a1)
  4d2fb8:	00000000 	nop
  4d2fbc:	2c620002 	sltiu	v0,v1,2
  4d2fc0:	1440002e 	bnez	v0,4d307c <__fpcmp_parts_f+0xe8>
  4d2fc4:	00000000 	nop
  4d2fc8:	38c20004 	xori	v0,a2,0x4
  4d2fcc:	14400007 	bnez	v0,4d2fec <__fpcmp_parts_f+0x58>
  4d2fd0:	38620004 	xori	v0,v1,0x4
  4d2fd4:	1440001a 	bnez	v0,4d3040 <__fpcmp_parts_f+0xac>
  4d2fd8:	00000000 	nop
  4d2fdc:	8ca20004 	lw	v0,4(a1)
  4d2fe0:	8c830004 	lw	v1,4(a0)
  4d2fe4:	03e00008 	jr	ra
  4d2fe8:	00431023 	subu	v0,v0,v1
  4d2fec:	14400007 	bnez	v0,4d300c <__fpcmp_parts_f+0x78>
  4d2ff0:	38c20002 	xori	v0,a2,0x2
  4d2ff4:	8ca20004 	lw	v0,4(a1)
  4d2ff8:	00000000 	nop
  4d2ffc:	14400014 	bnez	v0,4d3050 <__fpcmp_parts_f+0xbc>
  4d3000:	24030001 	li	v1,1
  4d3004:	10000012 	b	4d3050 <__fpcmp_parts_f+0xbc>
  4d3008:	2403ffff 	li	v1,-1
  4d300c:	1440000a 	bnez	v0,4d3038 <__fpcmp_parts_f+0xa4>
  4d3010:	38620002 	xori	v0,v1,0x2
  4d3014:	38630002 	xori	v1,v1,0x2
  4d3018:	10600031 	beqz	v1,4d30e0 <__fpcmp_parts_f+0x14c>
  4d301c:	00001021 	move	v0,zero
  4d3020:	8ca20004 	lw	v0,4(a1)
  4d3024:	00000000 	nop
  4d3028:	1040fff6 	beqz	v0,4d3004 <__fpcmp_parts_f+0x70>
  4d302c:	24030001 	li	v1,1
  4d3030:	03e00008 	jr	ra
  4d3034:	00601021 	move	v0,v1
  4d3038:	14400009 	bnez	v0,4d3060 <__fpcmp_parts_f+0xcc>
  4d303c:	00000000 	nop
  4d3040:	8c820004 	lw	v0,4(a0)
  4d3044:	00000000 	nop
  4d3048:	10400003 	beqz	v0,4d3058 <__fpcmp_parts_f+0xc4>
  4d304c:	2403ffff 	li	v1,-1
  4d3050:	03e00008 	jr	ra
  4d3054:	00601021 	move	v0,v1
  4d3058:	1000fffd 	b	4d3050 <__fpcmp_parts_f+0xbc>
  4d305c:	24030001 	li	v1,1
  4d3060:	8c880004 	lw	t0,4(a0)
  4d3064:	8ca20004 	lw	v0,4(a1)
  4d3068:	00000000 	nop
  4d306c:	11020005 	beq	t0,v0,4d3084 <__fpcmp_parts_f+0xf0>
  4d3070:	00000000 	nop
  4d3074:	1500001a 	bnez	t0,4d30e0 <__fpcmp_parts_f+0x14c>
  4d3078:	2402ffff 	li	v0,-1
  4d307c:	03e00008 	jr	ra
  4d3080:	24020001 	li	v0,1
  4d3084:	8c870008 	lw	a3,8(a0)
  4d3088:	8ca60008 	lw	a2,8(a1)
  4d308c:	00000000 	nop
  4d3090:	00c7102a 	slt	v0,a2,a3
  4d3094:	1440fff7 	bnez	v0,4d3074 <__fpcmp_parts_f+0xe0>
  4d3098:	00e6102a 	slt	v0,a3,a2
  4d309c:	10400005 	beqz	v0,4d30b4 <__fpcmp_parts_f+0x120>
  4d30a0:	00000000 	nop
  4d30a4:	1500000e 	bnez	t0,4d30e0 <__fpcmp_parts_f+0x14c>
  4d30a8:	24020001 	li	v0,1
  4d30ac:	03e00008 	jr	ra
  4d30b0:	2402ffff 	li	v0,-1
  4d30b4:	8c84000c 	lw	a0,12(a0)
  4d30b8:	8ca3000c 	lw	v1,12(a1)
  4d30bc:	00000000 	nop
  4d30c0:	0064102b 	sltu	v0,v1,a0
  4d30c4:	1440ffeb 	bnez	v0,4d3074 <__fpcmp_parts_f+0xe0>
  4d30c8:	0083182b 	sltu	v1,a0,v1
  4d30cc:	10600004 	beqz	v1,4d30e0 <__fpcmp_parts_f+0x14c>
  4d30d0:	00001021 	move	v0,zero
  4d30d4:	15000002 	bnez	t0,4d30e0 <__fpcmp_parts_f+0x14c>
  4d30d8:	24020001 	li	v0,1
  4d30dc:	2402ffff 	li	v0,-1
  4d30e0:	03e00008 	jr	ra
  4d30e4:	00000000 	nop

004d30e8 <fpcmp>:
  4d30e8:	3c1c0fb4 	lui	gp,0xfb4
  4d30ec:	279c9888 	addiu	gp,gp,-26488
  4d30f0:	0399e021 	addu	gp,gp,t9
  4d30f4:	27bdffb0 	addiu	sp,sp,-80
  4d30f8:	afbc0010 	sw	gp,16(sp)
  4d30fc:	00a01821 	move	v1,a1
  4d3100:	00801021 	move	v0,a0
  4d3104:	27a50018 	addiu	a1,sp,24
  4d3108:	27a40038 	addiu	a0,sp,56
  4d310c:	afbf0048 	sw	ra,72(sp)
  4d3110:	afb00040 	sw	s0,64(sp)
  4d3114:	afbc0044 	sw	gp,68(sp)
  4d3118:	afa20038 	sw	v0,56(sp)
  4d311c:	afa3003c 	sw	v1,60(sp)
  4d3120:	8f998800 	lw	t9,-30720(gp)
  4d3124:	00000000 	nop
  4d3128:	0320f809 	jalr	t9
  4d312c:	00000000 	nop
  4d3130:	8fbc0010 	lw	gp,16(sp)
  4d3134:	27b00028 	addiu	s0,sp,40
  4d3138:	27a4003c 	addiu	a0,sp,60
  4d313c:	02002821 	move	a1,s0
  4d3140:	8f998800 	lw	t9,-30720(gp)
  4d3144:	00000000 	nop
  4d3148:	0320f809 	jalr	t9
  4d314c:	00000000 	nop
  4d3150:	8fbc0010 	lw	gp,16(sp)
  4d3154:	27a40018 	addiu	a0,sp,24
  4d3158:	02002821 	move	a1,s0
  4d315c:	8f9981b0 	lw	t9,-32336(gp)
  4d3160:	00000000 	nop
  4d3164:	0320f809 	jalr	t9
  4d3168:	00000000 	nop
  4d316c:	8fbc0010 	lw	gp,16(sp)
  4d3170:	8fbf0048 	lw	ra,72(sp)
  4d3174:	8fb00040 	lw	s0,64(sp)
  4d3178:	03e00008 	jr	ra
  4d317c:	27bd0050 	addiu	sp,sp,80

004d3180 <sitofp>:
  4d3180:	3c1c0fb4 	lui	gp,0xfb4
  4d3184:	279c97f0 	addiu	gp,gp,-26640
  4d3188:	0399e021 	addu	gp,gp,t9
  4d318c:	27bdffd0 	addiu	sp,sp,-48
  4d3190:	afbc0010 	sw	gp,16(sp)
  4d3194:	00041fc2 	srl	v1,a0,0x1f
  4d3198:	24020003 	li	v0,3
  4d319c:	afbf002c 	sw	ra,44(sp)
  4d31a0:	afbc0028 	sw	gp,40(sp)
  4d31a4:	afa20018 	sw	v0,24(sp)
  4d31a8:	10800025 	beqz	a0,4d3240 <sitofp+0xc0>
  4d31ac:	afa3001c 	sw	v1,28(sp)
  4d31b0:	2402001e 	li	v0,30
  4d31b4:	10600020 	beqz	v1,4d3238 <sitofp+0xb8>
  4d31b8:	afa20020 	sw	v0,32(sp)
  4d31bc:	3c038000 	lui	v1,0x8000
  4d31c0:	10830019 	beq	a0,v1,4d3228 <sitofp+0xa8>
  4d31c4:	3c02cf00 	lui	v0,0xcf00
  4d31c8:	00041023 	negu	v0,a0
  4d31cc:	afa20024 	sw	v0,36(sp)
  4d31d0:	8fa50024 	lw	a1,36(sp)
  4d31d4:	3c023fff 	lui	v0,0x3fff
  4d31d8:	3442ffff 	ori	v0,v0,0xffff
  4d31dc:	0045102b 	sltu	v0,v0,a1
  4d31e0:	1440000c 	bnez	v0,4d3214 <sitofp+0x94>
  4d31e4:	27a40018 	addiu	a0,sp,24
  4d31e8:	3c063fff 	lui	a2,0x3fff
  4d31ec:	8fa40020 	lw	a0,32(sp)
  4d31f0:	34c6ffff 	ori	a2,a2,0xffff
  4d31f4:	00051840 	sll	v1,a1,0x1
  4d31f8:	00c3102b 	sltu	v0,a2,v1
  4d31fc:	2484ffff 	addiu	a0,a0,-1
  4d3200:	1040fffc 	beqz	v0,4d31f4 <sitofp+0x74>
  4d3204:	00602821 	move	a1,v1
  4d3208:	afa40020 	sw	a0,32(sp)
  4d320c:	afa30024 	sw	v1,36(sp)
  4d3210:	27a40018 	addiu	a0,sp,24
  4d3214:	8f99872c 	lw	t9,-30932(gp)
  4d3218:	00000000 	nop
  4d321c:	0320f809 	jalr	t9
  4d3220:	00000000 	nop
  4d3224:	8fbc0010 	lw	gp,16(sp)
  4d3228:	8fbf002c 	lw	ra,44(sp)
  4d322c:	00000000 	nop
  4d3230:	03e00008 	jr	ra
  4d3234:	27bd0030 	addiu	sp,sp,48
  4d3238:	1000ffe5 	b	4d31d0 <sitofp+0x50>
  4d323c:	afa40024 	sw	a0,36(sp)
  4d3240:	24020002 	li	v0,2
  4d3244:	1000fff2 	b	4d3210 <sitofp+0x90>
  4d3248:	afa20018 	sw	v0,24(sp)

004d324c <__floatunsisf>:
  4d324c:	3c1c0fb4 	lui	gp,0xfb4
  4d3250:	279c9724 	addiu	gp,gp,-26844
  4d3254:	0399e021 	addu	gp,gp,t9
  4d3258:	27bdffd0 	addiu	sp,sp,-48
  4d325c:	afbc0010 	sw	gp,16(sp)
  4d3260:	00802821 	move	a1,a0
  4d3264:	afbf002c 	sw	ra,44(sp)
  4d3268:	afbc0028 	sw	gp,40(sp)
  4d326c:	10a0002c 	beqz	a1,4d3320 <__floatunsisf+0xd4>
  4d3270:	afa0001c 	sw	zero,28(sp)
  4d3274:	3c024000 	lui	v0,0x4000
  4d3278:	24030003 	li	v1,3
  4d327c:	2404001e 	li	a0,30
  4d3280:	0045102b 	sltu	v0,v0,a1
  4d3284:	afa30018 	sw	v1,24(sp)
  4d3288:	afa40020 	sw	a0,32(sp)
  4d328c:	1040000a 	beqz	v0,4d32b8 <__floatunsisf+0x6c>
  4d3290:	afa50024 	sw	a1,36(sp)
  4d3294:	00a02021 	move	a0,a1
  4d3298:	2403001e 	li	v1,30
  4d329c:	3c054000 	lui	a1,0x4000
  4d32a0:	00042042 	srl	a0,a0,0x1
  4d32a4:	00a4102b 	sltu	v0,a1,a0
  4d32a8:	1440fffd 	bnez	v0,4d32a0 <__floatunsisf+0x54>
  4d32ac:	24630001 	addiu	v1,v1,1
  4d32b0:	afa30020 	sw	v1,32(sp)
  4d32b4:	afa40024 	sw	a0,36(sp)
  4d32b8:	8fa50024 	lw	a1,36(sp)
  4d32bc:	3c023fff 	lui	v0,0x3fff
  4d32c0:	3442ffff 	ori	v0,v0,0xffff
  4d32c4:	0045102b 	sltu	v0,v0,a1
  4d32c8:	1440000c 	bnez	v0,4d32fc <__floatunsisf+0xb0>
  4d32cc:	27a40018 	addiu	a0,sp,24
  4d32d0:	3c063fff 	lui	a2,0x3fff
  4d32d4:	8fa40020 	lw	a0,32(sp)
  4d32d8:	34c6ffff 	ori	a2,a2,0xffff
  4d32dc:	00051840 	sll	v1,a1,0x1
  4d32e0:	00c3102b 	sltu	v0,a2,v1
  4d32e4:	2484ffff 	addiu	a0,a0,-1
  4d32e8:	1040fffc 	beqz	v0,4d32dc <__floatunsisf+0x90>
  4d32ec:	00602821 	move	a1,v1
  4d32f0:	afa40020 	sw	a0,32(sp)
  4d32f4:	afa30024 	sw	v1,36(sp)
  4d32f8:	27a40018 	addiu	a0,sp,24
  4d32fc:	8f99872c 	lw	t9,-30932(gp)
  4d3300:	00000000 	nop
  4d3304:	0320f809 	jalr	t9
  4d3308:	00000000 	nop
  4d330c:	8fbc0010 	lw	gp,16(sp)
  4d3310:	8fbf002c 	lw	ra,44(sp)
  4d3314:	00000000 	nop
  4d3318:	03e00008 	jr	ra
  4d331c:	27bd0030 	addiu	sp,sp,48
  4d3320:	24020002 	li	v0,2
  4d3324:	1000fff4 	b	4d32f8 <__floatunsisf+0xac>
  4d3328:	afa20018 	sw	v0,24(sp)

004d332c <fptosi>:
  4d332c:	3c1c0fb4 	lui	gp,0xfb4
  4d3330:	279c9644 	addiu	gp,gp,-27068
  4d3334:	0399e021 	addu	gp,gp,t9
  4d3338:	27bdffc8 	addiu	sp,sp,-56
  4d333c:	afbc0010 	sw	gp,16(sp)
  4d3340:	00801021 	move	v0,a0
  4d3344:	27a50018 	addiu	a1,sp,24
  4d3348:	27a40028 	addiu	a0,sp,40
  4d334c:	afa20028 	sw	v0,40(sp)
  4d3350:	afbf0034 	sw	ra,52(sp)
  4d3354:	afbc0030 	sw	gp,48(sp)
  4d3358:	8f998800 	lw	t9,-30720(gp)
  4d335c:	00000000 	nop
  4d3360:	0320f809 	jalr	t9
  4d3364:	00000000 	nop
  4d3368:	8fbc0010 	lw	gp,16(sp)
  4d336c:	8fa40018 	lw	a0,24(sp)
  4d3370:	00000000 	nop
  4d3374:	38830002 	xori	v1,a0,0x2
  4d3378:	1060000c 	beqz	v1,4d33ac <fptosi+0x80>
  4d337c:	00001021 	move	v0,zero
  4d3380:	2c830002 	sltiu	v1,a0,2
  4d3384:	14600009 	bnez	v1,4d33ac <fptosi+0x80>
  4d3388:	00000000 	nop
  4d338c:	38820004 	xori	v0,a0,0x4
  4d3390:	1440000d 	bnez	v0,4d33c8 <fptosi+0x9c>
  4d3394:	00000000 	nop
  4d3398:	8fa2001c 	lw	v0,28(sp)
  4d339c:	00000000 	nop
  4d33a0:	10400006 	beqz	v0,4d33bc <fptosi+0x90>
  4d33a4:	3c038000 	lui	v1,0x8000
  4d33a8:	00601021 	move	v0,v1
  4d33ac:	8fbf0034 	lw	ra,52(sp)
  4d33b0:	00000000 	nop
  4d33b4:	03e00008 	jr	ra
  4d33b8:	27bd0038 	addiu	sp,sp,56
  4d33bc:	3c037fff 	lui	v1,0x7fff
  4d33c0:	1000fff9 	b	4d33a8 <fptosi+0x7c>
  4d33c4:	3463ffff 	ori	v1,v1,0xffff
  4d33c8:	8fa30020 	lw	v1,32(sp)
  4d33cc:	00000000 	nop
  4d33d0:	0460fff6 	bltz	v1,4d33ac <fptosi+0x80>
  4d33d4:	00001021 	move	v0,zero
  4d33d8:	2862001f 	slti	v0,v1,31
  4d33dc:	1040ffee 	beqz	v0,4d3398 <fptosi+0x6c>
  4d33e0:	2402001e 	li	v0,30
  4d33e4:	00431023 	subu	v0,v0,v1
  4d33e8:	8fa4001c 	lw	a0,28(sp)
  4d33ec:	8fa30024 	lw	v1,36(sp)
  4d33f0:	1080ffee 	beqz	a0,4d33ac <fptosi+0x80>
  4d33f4:	00431006 	srlv	v0,v1,v0
  4d33f8:	1000ffec 	b	4d33ac <fptosi+0x80>
  4d33fc:	00021023 	negu	v0,v0

004d3400 <fptoui>:
  4d3400:	3c1c0fb4 	lui	gp,0xfb4
  4d3404:	279c9570 	addiu	gp,gp,-27280
  4d3408:	0399e021 	addu	gp,gp,t9
  4d340c:	27bdffc8 	addiu	sp,sp,-56
  4d3410:	afbc0010 	sw	gp,16(sp)
  4d3414:	00801021 	move	v0,a0
  4d3418:	27a50018 	addiu	a1,sp,24
  4d341c:	27a40028 	addiu	a0,sp,40
  4d3420:	afa20028 	sw	v0,40(sp)
  4d3424:	afbf0034 	sw	ra,52(sp)
  4d3428:	afbc0030 	sw	gp,48(sp)
  4d342c:	8f998800 	lw	t9,-30720(gp)
  4d3430:	00000000 	nop
  4d3434:	0320f809 	jalr	t9
  4d3438:	00000000 	nop
  4d343c:	8fbc0010 	lw	gp,16(sp)
  4d3440:	8fa40018 	lw	a0,24(sp)
  4d3444:	00001021 	move	v0,zero
  4d3448:	38830002 	xori	v1,a0,0x2
  4d344c:	10600007 	beqz	v1,4d346c <fptoui+0x6c>
  4d3450:	2c850002 	sltiu	a1,a0,2
  4d3454:	14a00005 	bnez	a1,4d346c <fptoui+0x6c>
  4d3458:	00000000 	nop
  4d345c:	8fa3001c 	lw	v1,28(sp)
  4d3460:	00000000 	nop
  4d3464:	10600005 	beqz	v1,4d347c <fptoui+0x7c>
  4d3468:	38840004 	xori	a0,a0,0x4
  4d346c:	8fbf0034 	lw	ra,52(sp)
  4d3470:	00000000 	nop
  4d3474:	03e00008 	jr	ra
  4d3478:	27bd0038 	addiu	sp,sp,56
  4d347c:	1080fffb 	beqz	a0,4d346c <fptoui+0x6c>
  4d3480:	2402ffff 	li	v0,-1
  4d3484:	8fa40020 	lw	a0,32(sp)
  4d3488:	00001021 	move	v0,zero
  4d348c:	0480fff7 	bltz	a0,4d346c <fptoui+0x6c>
  4d3490:	28830020 	slti	v1,a0,32
  4d3494:	2885001f 	slti	a1,a0,31
  4d3498:	1060fff4 	beqz	v1,4d346c <fptoui+0x6c>
  4d349c:	2402ffff 	li	v0,-1
  4d34a0:	14a00004 	bnez	a1,4d34b4 <fptoui+0xb4>
  4d34a4:	2483ffe2 	addiu	v1,a0,-30
  4d34a8:	8fa20024 	lw	v0,36(sp)
  4d34ac:	1000ffef 	b	4d346c <fptoui+0x6c>
  4d34b0:	00621004 	sllv	v0,v0,v1
  4d34b4:	2403001e 	li	v1,30
  4d34b8:	8fa20024 	lw	v0,36(sp)
  4d34bc:	00641823 	subu	v1,v1,a0
  4d34c0:	1000ffea 	b	4d346c <fptoui+0x6c>
  4d34c4:	00621006 	srlv	v0,v0,v1

004d34c8 <__negsf2>:
  4d34c8:	3c1c0fb4 	lui	gp,0xfb4
  4d34cc:	279c94a8 	addiu	gp,gp,-27480
  4d34d0:	0399e021 	addu	gp,gp,t9
  4d34d4:	27bdffc8 	addiu	sp,sp,-56
  4d34d8:	afbc0010 	sw	gp,16(sp)
  4d34dc:	00801021 	move	v0,a0
  4d34e0:	27a50018 	addiu	a1,sp,24
  4d34e4:	27a40028 	addiu	a0,sp,40
  4d34e8:	afbf0034 	sw	ra,52(sp)
  4d34ec:	afa20028 	sw	v0,40(sp)
  4d34f0:	afbc0030 	sw	gp,48(sp)
  4d34f4:	8f998800 	lw	t9,-30720(gp)
  4d34f8:	00000000 	nop
  4d34fc:	0320f809 	jalr	t9
  4d3500:	00000000 	nop
  4d3504:	8fbc0010 	lw	gp,16(sp)
  4d3508:	8fa2001c 	lw	v0,28(sp)
  4d350c:	27a40018 	addiu	a0,sp,24
  4d3510:	2c420001 	sltiu	v0,v0,1
  4d3514:	afa2001c 	sw	v0,28(sp)
  4d3518:	8f99872c 	lw	t9,-30932(gp)
  4d351c:	00000000 	nop
  4d3520:	0320f809 	jalr	t9
  4d3524:	00000000 	nop
  4d3528:	8fbc0010 	lw	gp,16(sp)
  4d352c:	8fbf0034 	lw	ra,52(sp)
  4d3530:	00000000 	nop
  4d3534:	03e00008 	jr	ra
  4d3538:	27bd0038 	addiu	sp,sp,56

004d353c <__make_fp>:
  4d353c:	3c1c0fb4 	lui	gp,0xfb4
  4d3540:	279c9434 	addiu	gp,gp,-27596
  4d3544:	0399e021 	addu	gp,gp,t9
  4d3548:	27bdffd0 	addiu	sp,sp,-48
  4d354c:	afbc0010 	sw	gp,16(sp)
  4d3550:	00801021 	move	v0,a0
  4d3554:	27a40018 	addiu	a0,sp,24
  4d3558:	afbf002c 	sw	ra,44(sp)
  4d355c:	afbc0028 	sw	gp,40(sp)
  4d3560:	afa20018 	sw	v0,24(sp)
  4d3564:	afa5001c 	sw	a1,28(sp)
  4d3568:	afa60020 	sw	a2,32(sp)
  4d356c:	afa70024 	sw	a3,36(sp)
  4d3570:	8f99872c 	lw	t9,-30932(gp)
  4d3574:	00000000 	nop
  4d3578:	0320f809 	jalr	t9
  4d357c:	00000000 	nop
  4d3580:	8fbc0010 	lw	gp,16(sp)
  4d3584:	8fbf002c 	lw	ra,44(sp)
  4d3588:	00000000 	nop
  4d358c:	03e00008 	jr	ra
  4d3590:	27bd0030 	addiu	sp,sp,48

004d3594 <fptodp>:
  4d3594:	3c1c0fb4 	lui	gp,0xfb4
  4d3598:	279c93dc 	addiu	gp,gp,-27684
  4d359c:	0399e021 	addu	gp,gp,t9
  4d35a0:	27bdffc0 	addiu	sp,sp,-64
  4d35a4:	afbc0018 	sw	gp,24(sp)
  4d35a8:	00801021 	move	v0,a0
  4d35ac:	27a50020 	addiu	a1,sp,32
  4d35b0:	27a40030 	addiu	a0,sp,48
  4d35b4:	afbf003c 	sw	ra,60(sp)
  4d35b8:	afa20030 	sw	v0,48(sp)
  4d35bc:	afbc0038 	sw	gp,56(sp)
  4d35c0:	8f998800 	lw	t9,-30720(gp)
  4d35c4:	00000000 	nop
  4d35c8:	0320f809 	jalr	t9
  4d35cc:	00000000 	nop
  4d35d0:	8fbc0018 	lw	gp,24(sp)
  4d35d4:	8fa3002c 	lw	v1,44(sp)
  4d35d8:	00001021 	move	v0,zero
  4d35dc:	00033882 	srl	a3,v1,0x2
  4d35e0:	8fa40020 	lw	a0,32(sp)
  4d35e4:	8fa50024 	lw	a1,36(sp)
  4d35e8:	8fa60028 	lw	a2,40(sp)
  4d35ec:	00021780 	sll	v0,v0,0x1e
  4d35f0:	00471025 	or	v0,v0,a3
  4d35f4:	00031f80 	sll	v1,v1,0x1e
  4d35f8:	afa20010 	sw	v0,16(sp)
  4d35fc:	afa30014 	sw	v1,20(sp)
  4d3600:	8f998ac0 	lw	t9,-30016(gp)
  4d3604:	00000000 	nop
  4d3608:	0320f809 	jalr	t9
  4d360c:	00000000 	nop
  4d3610:	8fbc0018 	lw	gp,24(sp)
  4d3614:	8fbf003c 	lw	ra,60(sp)
  4d3618:	00000000 	nop
  4d361c:	03e00008 	jr	ra
  4d3620:	27bd0040 	addiu	sp,sp,64
	...
